modified version to run the Klaus Test Suite
This commit is contained in:
parent
000a59cf23
commit
03261dc81c
|
@ -8,7 +8,13 @@
|
||||||
#include <unistd.h> // for usleep()
|
#include <unistd.h> // for usleep()
|
||||||
|
|
||||||
#include "woz.h"
|
#include "woz.h"
|
||||||
#define RAMSIZE 0x10000 // modified to run the klaus Test suite
|
|
||||||
|
|
||||||
|
// modified to run the klaus Test suite : romless
|
||||||
|
// #define RAMSIZE 0xC000 // 48KB
|
||||||
|
#define RAMSIZE 0x10000 // 64KB
|
||||||
|
|
||||||
|
|
||||||
uint8_t ram[RAMSIZE];
|
uint8_t ram[RAMSIZE];
|
||||||
|
|
||||||
#define CARRY 0x01
|
#define CARRY 0x01
|
||||||
|
@ -484,6 +490,9 @@ static void UND(){ // UNDefined (not a valid or supported 6502 opcode)
|
||||||
BRK();
|
BRK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// JUMP TABLES
|
||||||
|
|
||||||
static void (*instruction[])(void) = {
|
static void (*instruction[])(void) = {
|
||||||
BRK, ORA, UND, UND, UND, ORA, ASL, UND, PHP, ORA, ASL, UND, UND, ORA, ASL, UND,
|
BRK, ORA, UND, UND, UND, ORA, ASL, UND, PHP, ORA, ASL, UND, UND, ORA, ASL, UND,
|
||||||
BPL, ORA, UND, UND, UND, ORA, ASL, UND, CLC, ORA, UND, UND, UND, ORA, ASL, UND,
|
BPL, ORA, UND, UND, UND, ORA, ASL, UND, CLC, ORA, UND, UND, UND, ORA, ASL, UND,
|
||||||
|
@ -540,9 +549,11 @@ int main(int argc, char *argv[]) {
|
||||||
// processor reset
|
// processor reset
|
||||||
reset();
|
reset();
|
||||||
|
|
||||||
// load the Klaus Test Suite in the 64KB of RAM
|
|
||||||
|
// load the Klaus Test Suite into the 64KB of RAM
|
||||||
FILE *f=fopen("6502_functional_test.bin","rb");
|
FILE *f=fopen("6502_functional_test.bin","rb");
|
||||||
while(fread(ram+i, 1, 1, f)) i++;
|
while(fread(ram+i, 1, 1, f)) i++;
|
||||||
|
// set the Program Counter to 0x400
|
||||||
reg.PC=0x400;
|
reg.PC=0x400;
|
||||||
|
|
||||||
|
|
||||||
|
@ -554,15 +565,21 @@ int main(int argc, char *argv[]) {
|
||||||
instruction[opcode](); // execute the instruction
|
instruction[opcode](); // execute the instruction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// print the Program Counter every 100 instructions to detect faults
|
// print the Program Counter every 100 instructions to detect faults
|
||||||
move(0,0);
|
move(0,0);
|
||||||
refresh();
|
|
||||||
printw("PC = $%04X",reg.PC);
|
printw("PC = $%04X",reg.PC);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* commented out to run the klaus Test Suite
|
// Alter a few seconds, PC is stuck at $3469 => all the tests passed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* commented out to run the klaus Test Suite
|
||||||
|
|
||||||
// keyboard controller
|
// keyboard controller
|
||||||
if (!keyRdy){ // don't miss a keystroke
|
if (!keyRdy){ // don't miss a keystroke
|
||||||
ch = getch(); // reads from ncurses
|
ch = getch(); // reads from ncurses
|
||||||
|
@ -580,4 +597,4 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
commented out to run the klaus Test Suite */
|
||||||
|
|
Loading…
Reference in New Issue