diff --git a/src/disass.c b/src/disass.c index ac2ccb8..1ccfd98 100644 --- a/src/disass.c +++ b/src/disass.c @@ -27,10 +27,7 @@ void Disassemble(unsigned char image[HIGHMEMORY]) { unsigned char instruction = image[position]; - while(end >= position) {//(instruction != 0) { - // printf("%d\n", position); - // printf("%#04X\n", instruction); - + while(end > position) { unsigned char masked = instruction & 0xE0; if (masked) { diff --git a/src/parser.c b/src/parser.c index eeb656a..a0b0577 100644 --- a/src/parser.c +++ b/src/parser.c @@ -188,8 +188,6 @@ void HandleRegisterBasedOpcode(unsigned char instruction, unsigned char mask) { Memory[ProgramCounter] = 2 >> symbol->address & 0xFF; Memory[ProgramCounter + 1] = symbol->address & 0xFF; - ProgramCounter += 2; - AdvanceParser(); } else if (token->type == NUMBER) { @@ -200,13 +198,13 @@ void HandleRegisterBasedOpcode(unsigned char instruction, unsigned char mask) { Memory[ProgramCounter] = 2 >> *value & 0xFF; Memory[ProgramCounter + 1] = *value & 0xFF; - ProgramCounter += 2; - AdvanceParser(); } else { fprintf(stderr, "[Error] Expected operand, got %s\n", token->lexeme); exit(1); } + + ProgramCounter += 2; } void HandleOperation(void) { @@ -251,8 +249,6 @@ void HandleOperation(void) { Memory[ProgramCounter] = 2 >> *value & 0xFF; Memory[ProgramCounter + 1] = *value & 0xFF; - - ProgramCounter += 2; } else { fprintf(stderr, "[Error] Line: %d: Expected address after jump if zero (JZ) instruction.\n", ((Token*) TokensList->content[CurrentToken - 1])->line); @@ -272,14 +268,14 @@ void HandleOperation(void) { Memory[ProgramCounter] = 2 >> *value & 0xFF; Memory[ProgramCounter + 1] = *value & 0xFF; - - ProgramCounter += 2; } else { fprintf(stderr, "[Error] Line %d: Expected Interrupt vector.\n", PeekToken()->line); exit(1); } + ProgramCounter += 2; + return; }