From 22833675496bfd06b362c85174e3ef05cf6e211a Mon Sep 17 00:00:00 2001 From: Folkert van Heusden Date: Fri, 4 Apr 2025 00:20:11 +0200 Subject: [PATCH] test sets --- PDP11/test.c | 252 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 163 insertions(+), 89 deletions(-) diff --git a/PDP11/test.c b/PDP11/test.c index ed203eb1..51613890 100644 --- a/PDP11/test.c +++ b/PDP11/test.c @@ -18,6 +18,152 @@ extern t_stat cpu_reset(DEVICE *dptr); extern DEVICE cpu_dev; extern int32 STACKFILE[4]; +struct mem_t { + uint32_t addr; + uint16_t value; +}; + +json_t *generate_test(uint16_t instruction, int *const id, struct mem_t *mem, size_t n_mem) +{ + json_t *before = json_object(); + + reset_all(0); + cpu_reset(&cpu_dev); + + json_object_set(before, "PC", json_integer(saved_PC)); + + json_object_set(before, "stack-0", json_integer(STACKFILE[0])); + json_object_set(before, "stack-1", json_integer(STACKFILE[1])); + json_object_set(before, "stack-2", json_integer(STACKFILE[2])); + json_object_set(before, "stack-3", json_integer(STACKFILE[3])); + + json_t *memory_i = json_array(); + + for(size_t i=0; i= 0170000 && i <= 0177777) // FPU continue; - json_t *before = json_object(); - - reset_all(0); - cpu_reset(&cpu_dev); + init_simh(); saved_PC = 0100; - json_object_set(before, "PC", json_integer(saved_PC)); + for(int k=0; k<6; k++) { + REGFILE[k][0] = (rand() % 0160000) & (~1); + REGFILE[k][1] = (rand() % 0160000) & (~1); + } STACKFILE[0] = STACKFILE[1] = STACKFILE[2] = STACKFILE[3] = 010000; - json_object_set(before, "stack-0", json_integer(STACKFILE[0])); - json_object_set(before, "stack-1", json_integer(STACKFILE[1])); - json_object_set(before, "stack-2", json_integer(STACKFILE[2])); - json_object_set(before, "stack-3", json_integer(STACKFILE[3])); + struct mem_t mem[3] = { + { 0100, i }, + { 0102, (rand() % 0160000) & (~1) }, + { 0104, (rand() % 0160000) & (~1) }, + }; - json_t *memory_i = json_array(); - - json_t *put_mem_i_0 = json_object(); - PWriteW(i, saved_PC); - json_object_set(put_mem_i_0, "0100", json_integer(i)); - json_array_append_new(memory_i, put_mem_i_0); - - json_t *put_mem_i_2 = json_object(); - uint16_t data1 = (rand() % 0160000) & (~1); - PWriteW(data1, 0102); - json_object_set(put_mem_i_2, "0102", json_integer(data1)); - json_array_append_new(memory_i, put_mem_i_2); - - json_t *put_mem_i_4 = json_object(); - uint16_t data2 = (rand() % 0160000) & (~1); - PWriteW(data2, 0104); - json_object_set(put_mem_i_4, "0104", json_integer(data2)); - json_array_append_new(memory_i, put_mem_i_4); - - json_object_set(before, "memory", memory_i); - - for(int k=0; k<6; k++) { - char name[16]; - - sprintf(name, "reg-%d.%d", k, 0); - REGFILE[k][0] = (rand() % 0160000) & (~1); - json_object_set(before, name, json_integer(REGFILE[k][0])); - - sprintf(name, "reg-%d.%d", k, 1); - REGFILE[k][1] = (rand() % 0160000) & (~1); - json_object_set(before, name, json_integer(REGFILE[k][1])); - } - - // FIXME initialize PSW - - json_object_set(before, "PSW", json_integer(PSW)); - - // do - sim_instr(); - - json_t *after = json_object(); - json_object_set(after, "PC", json_integer(saved_PC)); - - for(int k=0; k<6; k++) { - char name[16]; - - sprintf(name, "reg-%d.%d", k, 0); - json_object_set(after, name, json_integer(REGFILE[k][0])); - - sprintf(name, "reg-%d.%d", k, 1); - json_object_set(after, name, json_integer(REGFILE[k][1])); - } - - json_object_set(after, "PSW", json_integer(PSW)); - - json_object_set(after, "stack-0", json_integer(STACKFILE[0])); - json_object_set(after, "stack-1", json_integer(STACKFILE[1])); - json_object_set(after, "stack-2", json_integer(STACKFILE[2])); - json_object_set(after, "stack-3", json_integer(STACKFILE[3])); - - json_t *memory_o = json_array(); - - json_t *get_mem_i_0 = json_object(); - json_object_set(get_mem_i_0, "0100", json_integer(PReadW(0100))); - json_array_append_new(memory_o, get_mem_i_0); - - json_t *get_mem_i_2 = json_object(); - json_object_set(get_mem_i_2, "0102", json_integer(PReadW(0102))); - json_array_append_new(memory_o, get_mem_i_2); - - json_t *get_mem_i_4 = json_object(); - json_object_set(get_mem_i_4, "0104", json_integer(PReadW(0104))); - json_array_append_new(memory_o, get_mem_i_4); - - json_object_set(after, "memory", memory_o); - - json_t *collection = json_object(); - json_object_set(collection, "id", json_integer(i)); - json_object_set(collection, "before", before); - json_object_set(collection, "after", after); + PSW = rand() & 15; // only calculation status bits + json_t *collection = generate_test(i, &id, mem, 3); json_array_append_new(out, collection); } +#endif + + emit_branch_instructions(out, &id); FILE *fh = fopen("testset.json", "w"); json_dumpf(out, fh, JSON_INDENT(2));