From 1e5fa1b9ecbd664ff1541d7957e1b54ac9f9a096 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sun, 20 Mar 2022 11:52:42 +0100 Subject: [PATCH] tests --- cpu.cpp | 2 +- tests/test.mac | 50 +++++++++++++++++++ tests/test1.mac | 33 ++++++++++++ tests/test1l.mac | 33 ++++++++++++ tests/test2.mac | 16 ++++++ tests/test3.mac | 33 ++++++++++++ tests/test3l.mac | 33 ++++++++++++ tests/test4.mac | 27 ++++++++++ tests/test5.mac | 19 +++++++ tests/test5d.mac | 19 +++++++ tests/test6.mac | 19 +++++++ tests/test7.mac | 8 +++ tests/test8.mac | 5 ++ tests/test9.mac | 4 ++ .../tester-adc-sbc.mac | 0 .../tester-addressing.mac | 0 tester-bge.mac => tests/tester-bge.mac | 0 tester-mov.mac => tests/tester-mov.mac | 0 tester-psw.mac => tests/tester-psw.mac | 0 tester-tst.mac => tests/tester-tst.mac | 0 tester.mac => tests/tester.mac | 0 21 files changed, 300 insertions(+), 1 deletion(-) create mode 100644 tests/test.mac create mode 100644 tests/test1.mac create mode 100644 tests/test1l.mac create mode 100644 tests/test2.mac create mode 100644 tests/test3.mac create mode 100644 tests/test3l.mac create mode 100644 tests/test4.mac create mode 100644 tests/test5.mac create mode 100644 tests/test5d.mac create mode 100644 tests/test6.mac create mode 100644 tests/test7.mac create mode 100644 tests/test8.mac create mode 100644 tests/test9.mac rename tester-adc-sbc.mac => tests/tester-adc-sbc.mac (100%) rename tester-addressing.mac => tests/tester-addressing.mac (100%) rename tester-bge.mac => tests/tester-bge.mac (100%) rename tester-mov.mac => tests/tester-mov.mac (100%) rename tester-psw.mac => tests/tester-psw.mac (100%) rename tester-tst.mac => tests/tester-tst.mac (100%) rename tester.mac => tests/tester.mac (100%) diff --git a/cpu.cpp b/cpu.cpp index 83ba871..fdec953 100644 --- a/cpu.cpp +++ b/cpu.cpp @@ -746,7 +746,7 @@ bool cpu::single_operand_instructions(const uint16_t instr) uint16_t t = b -> read(a, word_mode); bool new_carry = false; - uint16_t temp; + uint16_t temp = 0; if (word_mode) { new_carry = t & 0x80; temp = ((t << 1) | getPSW_c()) & 0xff; diff --git a/tests/test.mac b/tests/test.mac new file mode 100644 index 0000000..8620c4f --- /dev/null +++ b/tests/test.mac @@ -0,0 +1,50 @@ +; in simh: +; simh> set console telnet=3333 +; then invoke telnet to port 3333 on the simh systm +; simh> load test.bin +; simh> run + + +; initialize stack pointer +start: MOV #1000, R6 + +; store pointer to text in R0 +loop: MOV #text, R0 + CALL printstart + JMP loop + +; store copy of R0 on the stack +printstart: MOV R0,-(SP) +; store PSW (status register) on stack + MOV R1,-(SP) + MFPS R1 + MOV R1,-(SP) + +; string ends with 0x00 +print: TSTB (R0) + BEQ pdone + +; put character in tty buffer + MOVB (R0), @#TTYTX + +; wait for it to be transmitted +waittx: TSTB @#TTYST + BPL waittx + + INC R0 + JMP print + +; retrieve stored r0, r1 and psw from stack +pdone: MOV (SP)+,R1 + MTPS R1 + MOV (SP)+,R1 + + MOV (SP)+,R0 + RET + + make_raw + +text: .ASCII "test\r\n\x00" + +TTYST = 177564 +TTYTX = 177566 diff --git a/tests/test1.mac b/tests/test1.mac new file mode 100644 index 0000000..b0347f2 --- /dev/null +++ b/tests/test1.mac @@ -0,0 +1,33 @@ +label: CLC + MOV #0.,R0 + ASR R0 ; + NOP + + CLC + MOV #0,R1 + ASRB R1 ; + NOP + + CLC + MOV #117400,R2 + ASR R2 ; + NOP + + CLC + MOV #117400,R3 + ASRB R3 ; + NOP + + CLC + MOV #77776,R4 + ASR R4 ; + NOP + + CLC + MOV #77776,R5 + ASRB R5 ; + NOP + + HALT + + make_raw diff --git a/tests/test1l.mac b/tests/test1l.mac new file mode 100644 index 0000000..5768f1c --- /dev/null +++ b/tests/test1l.mac @@ -0,0 +1,33 @@ +label: CLC + MOV #0.,R0 + ASL R0 ; + NOP + + CLC + MOV #0,R1 + ASLB R1 ; + NOP + + CLC + MOV #117400,R2 + ASL R2 ; + NOP + + CLC + MOV #117400,R3 + ASLB R3 ; + NOP + + CLC + MOV #77776,R4 + ASL R4 ; + NOP + + CLC + MOV #77776,R5 + ASLB R5 ; + NOP + + HALT + + make_raw diff --git a/tests/test2.mac b/tests/test2.mac new file mode 100644 index 0000000..767a8df --- /dev/null +++ b/tests/test2.mac @@ -0,0 +1,16 @@ + mov #1000,SP + + mov #trapfunc, @#034 + +traploop: SEC + SEN + SEV + TRAP 0 + JMP traploop + +trapfunc: + NOP + NOP + RTT + + make_raw diff --git a/tests/test3.mac b/tests/test3.mac new file mode 100644 index 0000000..2e8ae91 --- /dev/null +++ b/tests/test3.mac @@ -0,0 +1,33 @@ +label: SEC + MOV #0.,R0 + ROR R0 ; + NOP + + SEC + MOV #0,R1 + RORB R1 ; + NOP + + SEC + MOV #117400,R2 + ROR R2 ; + NOP + + SEC + MOV #117400,R3 + RORB R3 ; + NOP + + SEC + MOV #1,R4 + ROR R4 ; + NOP + + SEC + MOV #1,R5 + RORB R5 ; + NOP + + HALT + + make_raw diff --git a/tests/test3l.mac b/tests/test3l.mac new file mode 100644 index 0000000..fcb2e6b --- /dev/null +++ b/tests/test3l.mac @@ -0,0 +1,33 @@ +label: SEC + MOV #0.,R0 + ROL R0 ; + NOP + + SEC + MOV #0,R1 + ROLB R1 ; + NOP + + SEC + MOV #117400,R2 + ROL R2 ; + NOP + + SEC + MOV #117400,R3 + ROLB R3 ; + NOP + + SEC + MOV #1,R4 + ROL R4 ; + NOP + + SEC + MOV #1,R5 + ROLB R5 ; + NOP + + HALT + + make_raw diff --git a/tests/test4.mac b/tests/test4.mac new file mode 100644 index 0000000..e31c865 --- /dev/null +++ b/tests/test4.mac @@ -0,0 +1,27 @@ +label: MOV #0.,R0 + NEG R0 ; 0 + NOP + + MOV #0,R1 + NEGB R1 ; 0 + NOP + + MOV #117400,R2 + NEG R2 ; 060400 + NOP + + MOV #117400,R3 + NEGB R3 ; 117400 + NOP + + MOV #1,R4 + NEG R4 ; 177777 + NOP + + MOV #1,R5 + NEGB R5 ; 000377 + NOP + + HALT + + make_raw diff --git a/tests/test5.mac b/tests/test5.mac new file mode 100644 index 0000000..f12483b --- /dev/null +++ b/tests/test5.mac @@ -0,0 +1,19 @@ +label: MOV #0.,R0 + INC R0 + NOP + + MOV #0,R1 + INCB R1 + NOP + + MOV #117400,R2 + INC R2 + NOP + + MOV #117400,R3 + INCB R3 + NOP + + HALT + + make_raw diff --git a/tests/test5d.mac b/tests/test5d.mac new file mode 100644 index 0000000..bfeaafc --- /dev/null +++ b/tests/test5d.mac @@ -0,0 +1,19 @@ +label: MOV #0.,R0 + DEC R0 + NOP + + MOV #0,R1 + DECB R1 + NOP + + MOV #117400,R2 + DEC R2 + NOP + + MOV #117400,R3 + DECB R3 + NOP + + HALT + + make_raw diff --git a/tests/test6.mac b/tests/test6.mac new file mode 100644 index 0000000..85bc7fe --- /dev/null +++ b/tests/test6.mac @@ -0,0 +1,19 @@ +label: MOV #0.,R0 + COM R0 ; 65535 + NOP + + MOV #0,R1 + COMB R1 ; 255 + NOP + + MOV #117400,R2 + COM R2 ; 24831 + NOP + + MOV #117400,R3 + COMB R3 ; 40959 + NOP + + HALT + + make_raw diff --git a/tests/test7.mac b/tests/test7.mac new file mode 100644 index 0000000..730eca4 --- /dev/null +++ b/tests/test7.mac @@ -0,0 +1,8 @@ +label: MOV #2000,SP + NOP + INC SP + NOP + DEC SP + NOP + + make_raw diff --git a/tests/test8.mac b/tests/test8.mac new file mode 100644 index 0000000..7fccbcd --- /dev/null +++ b/tests/test8.mac @@ -0,0 +1,5 @@ + NOP +label: .DW 077700 + NOP + + make_raw diff --git a/tests/test9.mac b/tests/test9.mac new file mode 100644 index 0000000..b27eed7 --- /dev/null +++ b/tests/test9.mac @@ -0,0 +1,4 @@ + .DW 072527 + .DW 000000 + + make_raw diff --git a/tester-adc-sbc.mac b/tests/tester-adc-sbc.mac similarity index 100% rename from tester-adc-sbc.mac rename to tests/tester-adc-sbc.mac diff --git a/tester-addressing.mac b/tests/tester-addressing.mac similarity index 100% rename from tester-addressing.mac rename to tests/tester-addressing.mac diff --git a/tester-bge.mac b/tests/tester-bge.mac similarity index 100% rename from tester-bge.mac rename to tests/tester-bge.mac diff --git a/tester-mov.mac b/tests/tester-mov.mac similarity index 100% rename from tester-mov.mac rename to tests/tester-mov.mac diff --git a/tester-psw.mac b/tests/tester-psw.mac similarity index 100% rename from tester-psw.mac rename to tests/tester-psw.mac diff --git a/tester-tst.mac b/tests/tester-tst.mac similarity index 100% rename from tester-tst.mac rename to tests/tester-tst.mac diff --git a/tester.mac b/tests/tester.mac similarity index 100% rename from tester.mac rename to tests/tester.mac