From ff3ca2517e1141567b70ef9968a112cd56301496 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sun, 13 Mar 2022 19:49:04 +0100 Subject: [PATCH] addressing mode 0, 1 and 2 tests --- tester-addressing.mac | 114 ++++++++++++++++++++++++++++++++++++++++++ tester.mac | 3 ++ 2 files changed, 117 insertions(+) create mode 100644 tester-addressing.mac diff --git a/tester-addressing.mac b/tester-addressing.mac new file mode 100644 index 0000000..327ceab --- /dev/null +++ b/tester-addressing.mac @@ -0,0 +1,114 @@ +.EXTERN ALL + +test_addr_0: +; address mode 0 +; b1010101001010101 +; 16 bit put/get + MOV #43605.,R0 + CMP #43605.,R0 + BEQ test_addr_0a_ok + MOV #1.,R0 + JMP test_addr_fail + +test_addr_0a_ok: +; 8 bit put / 16 bit get, should sign extend + MOVB #240.,R0 + CMP #65520.,R0 + BEQ test_addr_0b_ok + MOV #2.,R0 + JMP test_addr_fail + +test_addr_0b_ok: +; 8 bit put / 16 bit get, should sign extend + MOVB #127.,R0 + CMP #127.,R0 + BEQ test_addr_0c_ok + MOV #3.,R0 + JMP test_addr_fail + +test_addr_0c_ok: +; address mode 1 +; indirect get 16 bit + MOV #v1234,R0 + MOV (R0),R1 + CMP #1234.,R1 + BEQ test_addr_1a_ok + MOV #4.,R0 + JMP test_addr_fail + +test_addr_1a_ok: +; indirect get 8 bit, sign extended + MOV #v1234,R0 + MOVB (R0),R1 + CMP #65490.,R1 + BEQ test_addr_1b_ok + MOV #5.,R0 + JMP test_addr_fail + +test_addr_1b_ok: +; indirect get 16 bit + MOV #v1234,R0 + MOVB (R0),R1 + CMP #1234.,R1 + BNE test_addr_1c_ok + MOV #6.,R0 + JMP test_addr_fail + +test_addr_1c_ok: +; address mode 2 +; value did not change + MOV #v1234,R0 + MOV (R0)+,R1 + CMP #1234.,R1 + BEQ test_addr_2a1_ok + MOV #7.,R0 + JMP test_addr_fail +; +test_addr_2a1_ok: +; address increased 2 bytes + MOV #v1234after,R2 + CMP R0,R2 + BEQ test_addr_2a2_ok + MOV #8.,R0 + JMP test_addr_fail + +test_addr_2a2_ok: +; value did not change + MOV #v1234,R0 + MOVB (R0)+,R1 + CMPB #210.,R1 + BEQ test_addr_2b1_ok + MOV #9.,R0 + JMP test_addr_fail +; +test_addr_2b1_ok: +; address increased 2 bytes + MOV #v1234,R2 + INC R2 + CMP R0,R2 + BEQ test_addr_2b2_ok + MOV #10.,R0 + JMP test_addr_fail + +test_addr_2b2_ok: + ; TODO + + RET + +test_addr_fail: + CALL print_binary + + MOV #test_addr_fail_txt,R0 + CALL print_start + RET + +test_addr_fail_txt: + .ASCII "addressing handling FAIL\r\n\x00" +.EVEN + +v1234: DW 1234. +v1234after: DW 4321. + +test_addr: + CALL test_addr_0 + RET diff --git a/tester.mac b/tester.mac index 649ecc7..4e308a7 100644 --- a/tester.mac +++ b/tester.mac @@ -12,6 +12,7 @@ start: MOV #1000, R6 .INCLUDE "tester-psw.mac" .INCLUDE "tester-adc-sbc.mac" +.INCLUDE "tester-addressing.mac" go: MOV #textstart, R0 CALL print_start @@ -24,6 +25,8 @@ go: MOV #textstart, R0 CALL test_sbc + CALL test_addr + MOV #textfin, R0 CALL print_start TRAP 7