TRAP test

This commit is contained in:
Folkert van Heusden 2025-04-06 19:03:53 +02:00
parent 640643cb65
commit 7d68b74113
Signed by untrusted user who does not match committer: folkert
GPG key ID: 6B6455EDFEED3BD1

View file

@ -467,52 +467,78 @@ void emit_misc_operations()
printf("misc instructions\n"); printf("misc instructions\n");
const char *const filename = "pdp1170-valtest-MISC.json"; const char *const filename = "pdp1170-valtest-MISC.json";
if (file_exist(filename)) if (file_exist(filename) == 0) {
return; int id = 0;
json_t *out = json_array();
int id = 0; int groups[] = { 2 /* RTI */, 6 /* RTT */ };
json_t *out = json_array();
int groups[] = { 2 /* RTI */, 6 /* RTT */ }; for(int group=0; group<2; group++) {
for(int psw_val=0; psw_val<65536; psw_val++) {
if ((psw_val & 0174377) != psw_val)
continue;
for(int group=0; group<2; group++) { uint16_t instr = groups[group];
for(int psw_val=0; psw_val<65536; psw_val++) {
if ((psw_val & 0174377) != psw_val)
continue;
uint16_t instr = groups[group]; init_simh();
init_simh(); saved_PC = 0100;
randomize_registers_all_values();
init_stack_registers();
saved_PC = 0100; struct mem_t mem[1] = {
randomize_registers_all_values(); { 0100, instr }
init_stack_registers(); };
struct mem_t mem[1] = { PSW = psw_val;
{ 0100, instr }
};
PSW = psw_val; json_t *obj = generate_test(instr, &id, mem, 1);
if (obj)
json_t *obj = generate_test(instr, &id, mem, 1); json_array_append_new(out, obj);
if (obj) }
json_array_append_new(out, obj);
} }
for(int group=0; group<3; group++) {
uint16_t instr = 0;
if (group == 0)
instr = 0100 | 010; // JMP (R0)
else if (group == 1)
instr = 04000 | 0110; // JSR R1,(R0)
else if (group == 2)
instr = 0200 | 01; // RTS (R1)
produce_set_register(instr, 0, &id, out);
}
dump_json(filename, out);
} }
for(int group=0; group<3; group++) { // TRAP
uint16_t instr = 0; const char *const filename2 = "pdp1170-valtest-MISC2.json";
if (group == 0) if (file_exist(filename2) == 0) {
instr = 0100 | 010; // JMP (R0) int id = 0;
else if (group == 1) json_t *out = json_array();
instr = 04000 | 0110; // JSR R1,(R0)
else if (group == 2)
instr = 0200 | 01; // RTS (R1)
produce_set_register(instr, 0, &id, out); uint16_t instr = 0104420; // TRAP #020
init_simh();
saved_PC = 0100;
randomize_registers_all_values();
init_stack_registers();
struct mem_t mem[1] = {
{ 0100, instr }
};
PSW = 012;
json_t *obj = generate_test(instr, &id, mem, 1);
if (obj)
json_array_append_new(out, obj);
dump_json(filename2, out);
} }
dump_json(filename, out);
} }
void produce_validation_tests() void produce_validation_tests()