diff options
Diffstat (limited to 'src/interpreter.c')
-rw-r--r-- | src/interpreter.c | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/src/interpreter.c b/src/interpreter.c deleted file mode 100644 index 6dc7178..0000000 --- a/src/interpreter.c +++ /dev/null @@ -1,122 +0,0 @@ -// interpreter.c -// Useful for carrying out tests of the CPU instructions. -// Refer to interpreter.md for the manual - -#include"apple.h" -#include"debug.h" - -//Write a custom getc function here which ignores spaces - - -int main(int argc, char *argv[]){ - AppleOn(); - - byte c; - - // Interpreter loop - while(1){ - - // Retrieve first character of a line - do { - c = getc(stdin); - } while (c == '\n' || c == ' ' || c == '\t'); - - // The following are special debug commands. - - // Quit program - if (c == 'Q' || c == 'q'){ - break; - } - - if (c == 'R' || c == 'r'){ - AppleReset(); //need to flesh out this function - continue; - } - - // Dump processor status - if (c == 'P' || c == 'p'){ - dStatusDump(); - continue; - } - - // FIXME!!! PAGE IS CLAMPED TO 00 ON THE LONG MODE - // Dump a page of memory - if (c == 'M' || c == 'm'){ - address x = 0; - do { - c = getc(stdin); - } while(c == ' ' || c == '\n'); - x = dCharToNum(c) << 4; - x += dCharToNum(getc(stdin)); - c = getc(stdin); - if (c != '\n'){ - x <<= 8; - x += dCharToNum(c) << 4; - x += dCharToNum(getc(stdin)); - printf("@%04x:%02x\n", x, GetMemory(x)); - } - else{ - printf("Page %02x", x); - dPageDump(x); - } - continue; - } - - // Print out a statement - if (c == '/'){ - do { - c = getc(stdin); - printf("%c", c); - } while(c != '\n'); - continue; - } - - // Comment, so ignores until newline. - if (c == '#'){ - do { - c = getc(stdin); - } while(c != '\n'); - continue; - } - - if (c == 'S' || c == 's'){ - address x = 0; - byte y = 0; - - for(int i = 3; i >= 0; i--){ - x += (dCharToNum(getc(stdin)) << (4*i)); - } - - c = getc(stdin); - if (c != '.'){ - printf("Error assigning memory to 0x%x\n", x); - break; - } - - for(int i = 1; i >= 0; i--){ - y += (dCharToNum(getc(stdin)) << (4*i)); - } - Memory[x] = y; - continue; - } - - // From here on it is expected input will be an instruction - c = dCharToNum(c) << 4; - c += dCharToNum(getc(stdin)); - address x = 0x0000; - char z = 0x00; - for(int i = ((getInstructionLength(c) * 2) - 2); i > 0; i--) { - do { - z = getc(stdin); - } while (z == ' ' || z == '\t'); - - //if (z != '\n'){ - x += dCharToNum(z) << ((4 * (i - 1))); - /*}else{ - i++; - }*/ - } - CallInstructionTable(c, x); - } - -} |