diff --git a/tools/tests/zasm/allinstrs.asm b/tools/tests/zasm/allinstrs.asm new file mode 100644 index 0000000..5e921f1 --- /dev/null +++ b/tools/tests/zasm/allinstrs.asm @@ -0,0 +1,1602 @@ +ADC A, (HL) +ADC A, B +ADC A, C +ADC A, D +ADC A, E +ADC A, H +ADC A, L +ADC A, A +ADC A, 1 +ADC A, 2 +ADC A, 4 +ADC A, 8 +ADC A, 16 +ADC A, 32 +ADC A, 64 +ADC A, 128 +ADC HL, BC +ADC HL, DE +ADC HL, HL +ADC HL, SP +ADD A, (HL) +ADD A, B +ADD A, C +ADD A, D +ADD A, E +ADD A, H +ADD A, L +ADD A, A +ADD A, 1 +ADD A, 2 +ADD A, 4 +ADD A, 8 +ADD A, 16 +ADD A, 32 +ADD A, 64 +ADD A, 128 +ADD HL, BC +ADD HL, DE +ADD HL, HL +ADD HL, SP +ADD IX, BC +ADD IX, DE +ADD IX, IX +ADD IX, SP +ADD IY, BC +ADD IY, DE +ADD IY, IY +ADD IY, SP +ADD A, (IX) +ADD A, (IX+1) +ADD A, (IX+10) +ADD A, (IX+100) +ADD A, (IX+127) +ADD A, (IY) +ADD A, (IY+1) +ADD A, (IY+10) +ADD A, (IY+100) +ADD A, (IY+127) +AND (HL) +AND B +AND C +AND D +AND E +AND H +AND L +AND A +AND 1 +AND 2 +AND 4 +AND 8 +AND 16 +AND 32 +AND 64 +AND 128 +AND (IX+1) +AND (IX+10) +AND (IX+100) +AND (IX+127) +AND (IY+1) +AND (IY+10) +AND (IY+100) +AND (IY+127) +BIT 1, (HL) +BIT 2, (HL) +BIT 4, (HL) +BIT 1, (IX) +BIT 1, (IX+1) +BIT 1, (IX+10) +BIT 1, (IX+100) +BIT 1, (IX+127) +BIT 2, (IX) +BIT 2, (IX+1) +BIT 2, (IX+10) +BIT 2, (IX+100) +BIT 2, (IX+127) +BIT 4, (IX) +BIT 4, (IX+1) +BIT 4, (IX+10) +BIT 4, (IX+100) +BIT 4, (IX+127) +BIT 1, (IY) +BIT 1, (IY+1) +BIT 1, (IY+10) +BIT 1, (IY+100) +BIT 1, (IY+127) +BIT 2, (IY) +BIT 2, (IY+1) +BIT 2, (IY+10) +BIT 2, (IY+100) +BIT 2, (IY+127) +BIT 4, (IY) +BIT 4, (IY+1) +BIT 4, (IY+10) +BIT 4, (IY+100) +BIT 4, (IY+127) +BIT 1, B +BIT 1, C +BIT 1, D +BIT 1, E +BIT 1, H +BIT 1, L +BIT 1, A +BIT 2, B +BIT 2, C +BIT 2, D +BIT 2, E +BIT 2, H +BIT 2, L +BIT 2, A +BIT 4, B +BIT 4, C +BIT 4, D +BIT 4, E +BIT 4, H +BIT 4, L +BIT 4, A +CALL Z, 1 +CALL Z, 2 +CALL Z, 4 +CALL Z, 8 +CALL Z, 16 +CALL Z, 32 +CALL Z, 64 +CALL Z, 128 +CALL Z, 256 +CALL Z, 512 +CALL Z, 1024 +CALL Z, 2048 +CALL Z, 4096 +CALL Z, 8192 +CALL Z, 16384 +CALL Z, 32768 +CALL NZ, 1 +CALL NZ, 2 +CALL NZ, 4 +CALL NZ, 8 +CALL NZ, 16 +CALL NZ, 32 +CALL NZ, 64 +CALL NZ, 128 +CALL NZ, 256 +CALL NZ, 512 +CALL NZ, 1024 +CALL NZ, 2048 +CALL NZ, 4096 +CALL NZ, 8192 +CALL NZ, 16384 +CALL NZ, 32768 +CALL C, 1 +CALL C, 2 +CALL C, 4 +CALL C, 8 +CALL C, 16 +CALL C, 32 +CALL C, 64 +CALL C, 128 +CALL C, 256 +CALL C, 512 +CALL C, 1024 +CALL C, 2048 +CALL C, 4096 +CALL C, 8192 +CALL C, 16384 +CALL C, 32768 +CALL NC, 1 +CALL NC, 2 +CALL NC, 4 +CALL NC, 8 +CALL NC, 16 +CALL NC, 32 +CALL NC, 64 +CALL NC, 128 +CALL NC, 256 +CALL NC, 512 +CALL NC, 1024 +CALL NC, 2048 +CALL NC, 4096 +CALL NC, 8192 +CALL NC, 16384 +CALL NC, 32768 +CALL P, 1 +CALL P, 2 +CALL P, 4 +CALL P, 8 +CALL P, 16 +CALL P, 32 +CALL P, 64 +CALL P, 128 +CALL P, 256 +CALL P, 512 +CALL P, 1024 +CALL P, 2048 +CALL P, 4096 +CALL P, 8192 +CALL P, 16384 +CALL P, 32768 +CALL M, 1 +CALL M, 2 +CALL M, 4 +CALL M, 8 +CALL M, 16 +CALL M, 32 +CALL M, 64 +CALL M, 128 +CALL M, 256 +CALL M, 512 +CALL M, 1024 +CALL M, 2048 +CALL M, 4096 +CALL M, 8192 +CALL M, 16384 +CALL M, 32768 +CALL PO, 1 +CALL PO, 2 +CALL PO, 4 +CALL PO, 8 +CALL PO, 16 +CALL PO, 32 +CALL PO, 64 +CALL PO, 128 +CALL PO, 256 +CALL PO, 512 +CALL PO, 1024 +CALL PO, 2048 +CALL PO, 4096 +CALL PO, 8192 +CALL PO, 16384 +CALL PO, 32768 +CALL PE, 1 +CALL PE, 2 +CALL PE, 4 +CALL PE, 8 +CALL PE, 16 +CALL PE, 32 +CALL PE, 64 +CALL PE, 128 +CALL PE, 256 +CALL PE, 512 +CALL PE, 1024 +CALL PE, 2048 +CALL PE, 4096 +CALL PE, 8192 +CALL PE, 16384 +CALL PE, 32768 +CALL 1 +CALL 2 +CALL 4 +CALL 8 +CALL 16 +CALL 32 +CALL 64 +CALL 128 +CALL 256 +CALL 512 +CALL 1024 +CALL 2048 +CALL 4096 +CALL 8192 +CALL 16384 +CALL 32768 +CCF +CP (HL) +CP B +CP C +CP D +CP E +CP H +CP L +CP A +CP 1 +CP 2 +CP 4 +CP 8 +CP 16 +CP 32 +CP 64 +CP 128 +CP (IX) +CP (IX+1) +CP (IX+10) +CP (IX+100) +CP (IX+127) +CP (IY) +CP (IY+1) +CP (IY+10) +CP (IY+100) +CP (IY+127) +CPD +CPDR +CPI +CPIR +CPL +DAA +DEC (HL) +DEC IX +DEC (IX) +DEC (IX+1) +DEC (IX+10) +DEC (IX+100) +DEC (IX+127) +DEC IY +DEC (IY) +DEC (IY+1) +DEC (IY+10) +DEC (IY+100) +DEC (IY+127) +DEC B +DEC C +DEC D +DEC E +DEC H +DEC L +DEC A +DEC BC +DEC DE +DEC HL +DEC SP +DI +DJNZ $+1 +DJNZ $+2 +DJNZ $+4 +DJNZ $+8 +DJNZ $+16 +DJNZ $+32 +DJNZ $+64 +DJNZ $-1 +DJNZ $-2 +DJNZ $-4 +DJNZ $-8 +DJNZ $-16 +DJNZ $-32 +DJNZ $-64 +EI +EX (SP), HL +EX (SP), IX +EX (SP), IY +EX AF, AF' +EX DE, HL +EXX +HALT +IM 0 +IM 1 +IM 2 +IN A, (1) +IN A, (2) +IN A, (4) +IN A, (8) +IN A, (16) +IN A, (32) +IN A, (64) +IN A, (128) +IN B, (C) +IN C, (C) +IN D, (C) +IN E, (C) +IN H, (C) +IN L, (C) +IN A, (C) +INC (HL) +INC IX +INC (IX) +INC (IX+1) +INC (IX+10) +INC (IX+100) +INC (IX+127) +INC IY +INC (IY) +INC (IY+1) +INC (IY+10) +INC (IY+100) +INC (IY+127) +INC B +INC C +INC D +INC E +INC H +INC L +INC A +INC BC +INC DE +INC HL +INC SP +IND +INDR +INI +INIR +JP (HL) +JP Z, 1 +JP Z, 2 +JP Z, 4 +JP Z, 8 +JP Z, 16 +JP Z, 32 +JP Z, 64 +JP Z, 128 +JP Z, 256 +JP Z, 512 +JP Z, 1024 +JP Z, 2048 +JP Z, 4096 +JP Z, 8192 +JP Z, 16384 +JP Z, 32768 +JP NZ, 1 +JP NZ, 2 +JP NZ, 4 +JP NZ, 8 +JP NZ, 16 +JP NZ, 32 +JP NZ, 64 +JP NZ, 128 +JP NZ, 256 +JP NZ, 512 +JP NZ, 1024 +JP NZ, 2048 +JP NZ, 4096 +JP NZ, 8192 +JP NZ, 16384 +JP NZ, 32768 +JP C, 1 +JP C, 2 +JP C, 4 +JP C, 8 +JP C, 16 +JP C, 32 +JP C, 64 +JP C, 128 +JP C, 256 +JP C, 512 +JP C, 1024 +JP C, 2048 +JP C, 4096 +JP C, 8192 +JP C, 16384 +JP C, 32768 +JP NC, 1 +JP NC, 2 +JP NC, 4 +JP NC, 8 +JP NC, 16 +JP NC, 32 +JP NC, 64 +JP NC, 128 +JP NC, 256 +JP NC, 512 +JP NC, 1024 +JP NC, 2048 +JP NC, 4096 +JP NC, 8192 +JP NC, 16384 +JP NC, 32768 +JP P, 1 +JP P, 2 +JP P, 4 +JP P, 8 +JP P, 16 +JP P, 32 +JP P, 64 +JP P, 128 +JP P, 256 +JP P, 512 +JP P, 1024 +JP P, 2048 +JP P, 4096 +JP P, 8192 +JP P, 16384 +JP P, 32768 +JP M, 1 +JP M, 2 +JP M, 4 +JP M, 8 +JP M, 16 +JP M, 32 +JP M, 64 +JP M, 128 +JP M, 256 +JP M, 512 +JP M, 1024 +JP M, 2048 +JP M, 4096 +JP M, 8192 +JP M, 16384 +JP M, 32768 +JP PO, 1 +JP PO, 2 +JP PO, 4 +JP PO, 8 +JP PO, 16 +JP PO, 32 +JP PO, 64 +JP PO, 128 +JP PO, 256 +JP PO, 512 +JP PO, 1024 +JP PO, 2048 +JP PO, 4096 +JP PO, 8192 +JP PO, 16384 +JP PO, 32768 +JP PE, 1 +JP PE, 2 +JP PE, 4 +JP PE, 8 +JP PE, 16 +JP PE, 32 +JP PE, 64 +JP PE, 128 +JP PE, 256 +JP PE, 512 +JP PE, 1024 +JP PE, 2048 +JP PE, 4096 +JP PE, 8192 +JP PE, 16384 +JP PE, 32768 +JP 1 +JP 2 +JP 4 +JP 8 +JP 16 +JP 32 +JP 64 +JP 128 +JP 256 +JP 512 +JP 1024 +JP 2048 +JP 4096 +JP 8192 +JP 16384 +JP 32768 +JP (IX) +JP (IY) +JR $+1 +JR $+2 +JR $+4 +JR $+8 +JR $+16 +JR $+32 +JR $+64 +JR $-1 +JR $-2 +JR $-4 +JR $-8 +JR $-16 +JR $-32 +JR $-64 +JR C, $+1 +JR C, $+2 +JR C, $+4 +JR C, $+8 +JR C, $+16 +JR C, $+32 +JR C, $+64 +JR C, $-1 +JR C, $-2 +JR C, $-4 +JR C, $-8 +JR C, $-16 +JR C, $-32 +JR C, $-64 +JR NC, $+1 +JR NC, $+2 +JR NC, $+4 +JR NC, $+8 +JR NC, $+16 +JR NC, $+32 +JR NC, $+64 +JR NC, $-1 +JR NC, $-2 +JR NC, $-4 +JR NC, $-8 +JR NC, $-16 +JR NC, $-32 +JR NC, $-64 +JR Z, $+1 +JR Z, $+2 +JR Z, $+4 +JR Z, $+8 +JR Z, $+16 +JR Z, $+32 +JR Z, $+64 +JR Z, $-1 +JR Z, $-2 +JR Z, $-4 +JR Z, $-8 +JR Z, $-16 +JR Z, $-32 +JR Z, $-64 +JR NZ, $+1 +JR NZ, $+2 +JR NZ, $+4 +JR NZ, $+8 +JR NZ, $+16 +JR NZ, $+32 +JR NZ, $+64 +JR NZ, $-1 +JR NZ, $-2 +JR NZ, $-4 +JR NZ, $-8 +JR NZ, $-16 +JR NZ, $-32 +JR NZ, $-64 +LD (BC), A +LD (DE), A +LD A, (BC) +LD A, (DE) +LD SP, HL +LD A, I +LD I, A +LD A, R +LD R, A +LD (HL), B +LD (HL), C +LD (HL), D +LD (HL), E +LD (HL), H +LD (HL), L +LD (HL), A +LD B, (HL) +LD C, (HL) +LD D, (HL) +LD E, (HL) +LD H, (HL) +LD L, (HL) +LD A, (HL) +LD (HL), 1 +LD (HL), 2 +LD (HL), 4 +LD (HL), 8 +LD (HL), 16 +LD (HL), 32 +LD (HL), 64 +LD (HL), 128 +LD B, 1 +LD B, 2 +LD B, 4 +LD B, 8 +LD B, 16 +LD B, 32 +LD B, 64 +LD B, 128 +LD C, 1 +LD C, 2 +LD C, 4 +LD C, 8 +LD C, 16 +LD C, 32 +LD C, 64 +LD C, 128 +LD D, 1 +LD D, 2 +LD D, 4 +LD D, 8 +LD D, 16 +LD D, 32 +LD D, 64 +LD D, 128 +LD E, 1 +LD E, 2 +LD E, 4 +LD E, 8 +LD E, 16 +LD E, 32 +LD E, 64 +LD E, 128 +LD H, 1 +LD H, 2 +LD H, 4 +LD H, 8 +LD H, 16 +LD H, 32 +LD H, 64 +LD H, 128 +LD L, 1 +LD L, 2 +LD L, 4 +LD L, 8 +LD L, 16 +LD L, 32 +LD L, 64 +LD L, 128 +LD A, 1 +LD A, 2 +LD A, 4 +LD A, 8 +LD A, 16 +LD A, 32 +LD A, 64 +LD A, 128 +LD B, B +LD B, C +LD B, D +LD B, E +LD B, H +LD B, L +LD B, A +LD C, B +LD C, C +LD C, D +LD C, E +LD C, H +LD C, L +LD C, A +LD D, B +LD D, C +LD D, D +LD D, E +LD D, H +LD D, L +LD D, A +LD E, B +LD E, C +LD E, D +LD E, E +LD E, H +LD E, L +LD E, A +LD H, B +LD H, C +LD H, D +LD H, E +LD H, H +LD H, L +LD H, A +LD L, B +LD L, C +LD L, D +LD L, E +LD L, H +LD L, L +LD L, A +LD A, B +LD A, C +LD A, D +LD A, E +LD A, H +LD A, L +LD A, A +LD BC, 1 +LD BC, 2 +LD BC, 4 +LD BC, 8 +LD BC, 16 +LD BC, 32 +LD BC, 64 +LD BC, 128 +LD BC, 256 +LD BC, 512 +LD BC, 1024 +LD BC, 2048 +LD BC, 4096 +LD BC, 8192 +LD BC, 16384 +LD BC, 32768 +LD DE, 1 +LD DE, 2 +LD DE, 4 +LD DE, 8 +LD DE, 16 +LD DE, 32 +LD DE, 64 +LD DE, 128 +LD DE, 256 +LD DE, 512 +LD DE, 1024 +LD DE, 2048 +LD DE, 4096 +LD DE, 8192 +LD DE, 16384 +LD DE, 32768 +LD HL, 1 +LD HL, 2 +LD HL, 4 +LD HL, 8 +LD HL, 16 +LD HL, 32 +LD HL, 64 +LD HL, 128 +LD HL, 256 +LD HL, 512 +LD HL, 1024 +LD HL, 2048 +LD HL, 4096 +LD HL, 8192 +LD HL, 16384 +LD HL, 32768 +LD SP, 1 +LD SP, 2 +LD SP, 4 +LD SP, 8 +LD SP, 16 +LD SP, 32 +LD SP, 64 +LD SP, 128 +LD SP, 256 +LD SP, 512 +LD SP, 1024 +LD SP, 2048 +LD SP, 4096 +LD SP, 8192 +LD SP, 16384 +LD SP, 32768 +LD IX, 1 +LD IX, 2 +LD IX, 4 +LD IX, 8 +LD IX, 16 +LD IX, 32 +LD IX, 64 +LD IX, 128 +LD IX, 256 +LD IX, 512 +LD IX, 1024 +LD IX, 2048 +LD IX, 4096 +LD IX, 8192 +LD IX, 16384 +LD IX, 32768 +LD IY, 1 +LD IY, 2 +LD IY, 4 +LD IY, 8 +LD IY, 16 +LD IY, 32 +LD IY, 64 +LD IY, 128 +LD IY, 256 +LD IY, 512 +LD IY, 1024 +LD IY, 2048 +LD IY, 4096 +LD IY, 8192 +LD IY, 16384 +LD IY, 32768 +LD (1), A +LD (2), A +LD (4), A +LD (8), A +LD (16), A +LD (32), A +LD (64), A +LD (128), A +LD (256), A +LD (512), A +LD (1024), A +LD (2048), A +LD (4096), A +LD (8192), A +LD (16384), A +LD (32768), A +LD A, (1) +LD A, (2) +LD A, (4) +LD A, (8) +LD A, (16) +LD A, (32) +LD A, (64) +LD A, (128) +LD A, (256) +LD A, (512) +LD A, (1024) +LD A, (2048) +LD A, (4096) +LD A, (8192) +LD A, (16384) +LD A, (32768) +LD (1), HL +LD (2), HL +LD (4), HL +LD (8), HL +LD (16), HL +LD (32), HL +LD (64), HL +LD (128), HL +LD (256), HL +LD (512), HL +LD (1024), HL +LD (2048), HL +LD (4096), HL +LD (8192), HL +LD (16384), HL +LD (32768), HL +LD HL, (1) +LD HL, (2) +LD HL, (4) +LD HL, (8) +LD HL, (16) +LD HL, (32) +LD HL, (64) +LD HL, (128) +LD HL, (256) +LD HL, (512) +LD HL, (1024) +LD HL, (2048) +LD HL, (4096) +LD HL, (8192) +LD HL, (16384) +LD HL, (32768) +LD (1), IX +LD (2), IX +LD (4), IX +LD (8), IX +LD (16), IX +LD (32), IX +LD (64), IX +LD (128), IX +LD (256), IX +LD (512), IX +LD (1024), IX +LD (2048), IX +LD (4096), IX +LD (8192), IX +LD (16384), IX +LD (32768), IX +LD IX, (1) +LD IX, (2) +LD IX, (4) +LD IX, (8) +LD IX, (16) +LD IX, (32) +LD IX, (64) +LD IX, (128) +LD IX, (256) +LD IX, (512) +LD IX, (1024) +LD IX, (2048) +LD IX, (4096) +LD IX, (8192) +LD IX, (16384) +LD IX, (32768) +LD (1), IY +LD (2), IY +LD (4), IY +LD (8), IY +LD (16), IY +LD (32), IY +LD (64), IY +LD (128), IY +LD (256), IY +LD (512), IY +LD (1024), IY +LD (2048), IY +LD (4096), IY +LD (8192), IY +LD (16384), IY +LD (32768), IY +LD IY, (1) +LD IY, (2) +LD IY, (4) +LD IY, (8) +LD IY, (16) +LD IY, (32) +LD IY, (64) +LD IY, (128) +LD IY, (256) +LD IY, (512) +LD IY, (1024) +LD IY, (2048) +LD IY, (4096) +LD IY, (8192) +LD IY, (16384) +LD IY, (32768) +LD (1), BC +LD (1), DE +LD (1), HL +LD (1), SP +LD (2), BC +LD (2), DE +LD (2), HL +LD (2), SP +LD (4), BC +LD (4), DE +LD (4), HL +LD (4), SP +LD (8), BC +LD (8), DE +LD (8), HL +LD (8), SP +LD (16), BC +LD (16), DE +LD (16), HL +LD (16), SP +LD (32), BC +LD (32), DE +LD (32), HL +LD (32), SP +LD (64), BC +LD (64), DE +LD (64), HL +LD (64), SP +LD (128), BC +LD (128), DE +LD (128), HL +LD (128), SP +LD (256), BC +LD (256), DE +LD (256), HL +LD (256), SP +LD (512), BC +LD (512), DE +LD (512), HL +LD (512), SP +LD (1024), BC +LD (1024), DE +LD (1024), HL +LD (1024), SP +LD (2048), BC +LD (2048), DE +LD (2048), HL +LD (2048), SP +LD (4096), BC +LD (4096), DE +LD (4096), HL +LD (4096), SP +LD (8192), BC +LD (8192), DE +LD (8192), HL +LD (8192), SP +LD (16384), BC +LD (16384), DE +LD (16384), HL +LD (16384), SP +LD (32768), BC +LD (32768), DE +LD (32768), HL +LD (32768), SP +LD BC, (1) +LD BC, (2) +LD BC, (4) +LD BC, (8) +LD BC, (16) +LD BC, (32) +LD BC, (64) +LD BC, (128) +LD BC, (256) +LD BC, (512) +LD BC, (1024) +LD BC, (2048) +LD BC, (4096) +LD BC, (8192) +LD BC, (16384) +LD BC, (32768) +LD DE, (1) +LD DE, (2) +LD DE, (4) +LD DE, (8) +LD DE, (16) +LD DE, (32) +LD DE, (64) +LD DE, (128) +LD DE, (256) +LD DE, (512) +LD DE, (1024) +LD DE, (2048) +LD DE, (4096) +LD DE, (8192) +LD DE, (16384) +LD DE, (32768) +LD HL, (1) +LD HL, (2) +LD HL, (4) +LD HL, (8) +LD HL, (16) +LD HL, (32) +LD HL, (64) +LD HL, (128) +LD HL, (256) +LD HL, (512) +LD HL, (1024) +LD HL, (2048) +LD HL, (4096) +LD HL, (8192) +LD HL, (16384) +LD HL, (32768) +LD SP, (1) +LD SP, (2) +LD SP, (4) +LD SP, (8) +LD SP, (16) +LD SP, (32) +LD SP, (64) +LD SP, (128) +LD SP, (256) +LD SP, (512) +LD SP, (1024) +LD SP, (2048) +LD SP, (4096) +LD SP, (8192) +LD SP, (16384) +LD SP, (32768) +LD (IX), 1 +LD (IX), 2 +LD (IX), 4 +LD (IX), 8 +LD (IX), 16 +LD (IX), 32 +LD (IX), 64 +LD (IX), 128 +LD (IX+1), 1 +LD (IX+1), 2 +LD (IX+1), 4 +LD (IX+1), 8 +LD (IX+1), 16 +LD (IX+1), 32 +LD (IX+1), 64 +LD (IX+1), 128 +LD (IX+10), 1 +LD (IX+10), 2 +LD (IX+10), 4 +LD (IX+10), 8 +LD (IX+10), 16 +LD (IX+10), 32 +LD (IX+10), 64 +LD (IX+10), 128 +LD (IX+100), 1 +LD (IX+100), 2 +LD (IX+100), 4 +LD (IX+100), 8 +LD (IX+100), 16 +LD (IX+100), 32 +LD (IX+100), 64 +LD (IX+100), 128 +LD (IX+127), 1 +LD (IX+127), 2 +LD (IX+127), 4 +LD (IX+127), 8 +LD (IX+127), 16 +LD (IX+127), 32 +LD (IX+127), 64 +LD (IX+127), 128 +LD (IY), 1 +LD (IY), 2 +LD (IY), 4 +LD (IY), 8 +LD (IY), 16 +LD (IY), 32 +LD (IY), 64 +LD (IY), 128 +LD (IY+1), 1 +LD (IY+1), 2 +LD (IY+1), 4 +LD (IY+1), 8 +LD (IY+1), 16 +LD (IY+1), 32 +LD (IY+1), 64 +LD (IY+1), 128 +LD (IY+10), 1 +LD (IY+10), 2 +LD (IY+10), 4 +LD (IY+10), 8 +LD (IY+10), 16 +LD (IY+10), 32 +LD (IY+10), 64 +LD (IY+10), 128 +LD (IY+100), 1 +LD (IY+100), 2 +LD (IY+100), 4 +LD (IY+100), 8 +LD (IY+100), 16 +LD (IY+100), 32 +LD (IY+100), 64 +LD (IY+100), 128 +LD (IY+127), 1 +LD (IY+127), 2 +LD (IY+127), 4 +LD (IY+127), 8 +LD (IY+127), 16 +LD (IY+127), 32 +LD (IY+127), 64 +LD (IY+127), 128 +LD (IX), B +LD (IX), C +LD (IX), D +LD (IX), E +LD (IX), H +LD (IX), L +LD (IX), A +LD (IX+1), B +LD (IX+1), C +LD (IX+1), D +LD (IX+1), E +LD (IX+1), H +LD (IX+1), L +LD (IX+1), A +LD (IX+10), B +LD (IX+10), C +LD (IX+10), D +LD (IX+10), E +LD (IX+10), H +LD (IX+10), L +LD (IX+10), A +LD (IX+100), B +LD (IX+100), C +LD (IX+100), D +LD (IX+100), E +LD (IX+100), H +LD (IX+100), L +LD (IX+100), A +LD (IX+127), B +LD (IX+127), C +LD (IX+127), D +LD (IX+127), E +LD (IX+127), H +LD (IX+127), L +LD (IX+127), A +LD (IY), B +LD (IY), C +LD (IY), D +LD (IY), E +LD (IY), H +LD (IY), L +LD (IY), A +LD (IY+1), B +LD (IY+1), C +LD (IY+1), D +LD (IY+1), E +LD (IY+1), H +LD (IY+1), L +LD (IY+1), A +LD (IY+10), B +LD (IY+10), C +LD (IY+10), D +LD (IY+10), E +LD (IY+10), H +LD (IY+10), L +LD (IY+10), A +LD (IY+100), B +LD (IY+100), C +LD (IY+100), D +LD (IY+100), E +LD (IY+100), H +LD (IY+100), L +LD (IY+100), A +LD (IY+127), B +LD (IY+127), C +LD (IY+127), D +LD (IY+127), E +LD (IY+127), H +LD (IY+127), L +LD (IY+127), A +LD B, (IX) +LD B, (IX+1) +LD B, (IX+10) +LD B, (IX+100) +LD B, (IX+127) +LD C, (IX) +LD C, (IX+1) +LD C, (IX+10) +LD C, (IX+100) +LD C, (IX+127) +LD D, (IX) +LD D, (IX+1) +LD D, (IX+10) +LD D, (IX+100) +LD D, (IX+127) +LD E, (IX) +LD E, (IX+1) +LD E, (IX+10) +LD E, (IX+100) +LD E, (IX+127) +LD H, (IX) +LD H, (IX+1) +LD H, (IX+10) +LD H, (IX+100) +LD H, (IX+127) +LD L, (IX) +LD L, (IX+1) +LD L, (IX+10) +LD L, (IX+100) +LD L, (IX+127) +LD A, (IX) +LD A, (IX+1) +LD A, (IX+10) +LD A, (IX+100) +LD A, (IX+127) +LD B, (IY) +LD B, (IY+1) +LD B, (IY+10) +LD B, (IY+100) +LD B, (IY+127) +LD C, (IY) +LD C, (IY+1) +LD C, (IY+10) +LD C, (IY+100) +LD C, (IY+127) +LD D, (IY) +LD D, (IY+1) +LD D, (IY+10) +LD D, (IY+100) +LD D, (IY+127) +LD E, (IY) +LD E, (IY+1) +LD E, (IY+10) +LD E, (IY+100) +LD E, (IY+127) +LD H, (IY) +LD H, (IY+1) +LD H, (IY+10) +LD H, (IY+100) +LD H, (IY+127) +LD L, (IY) +LD L, (IY+1) +LD L, (IY+10) +LD L, (IY+100) +LD L, (IY+127) +LD A, (IY) +LD A, (IY+1) +LD A, (IY+10) +LD A, (IY+100) +LD A, (IY+127) +LDD +LDDR +LDI +LDIR +NEG +NOP +OR (HL) +OR B +OR C +OR D +OR E +OR H +OR L +OR A +OR 1 +OR 2 +OR 4 +OR 8 +OR 16 +OR 32 +OR 64 +OR 128 +OR (IX) +OR (IX+1) +OR (IX+10) +OR (IX+100) +OR (IX+127) +OR (IY) +OR (IY+1) +OR (IY+10) +OR (IY+100) +OR (IY+127) +OTDR +OTIR +OUT (1), A +OUT (2), A +OUT (4), A +OUT (8), A +OUT (16), A +OUT (32), A +OUT (64), A +OUT (128), A +OUT (C), B +OUT (C), C +OUT (C), D +OUT (C), E +OUT (C), H +OUT (C), L +OUT (C), A +POP IX +POP IY +POP BC +POP DE +POP HL +POP AF +PUSH IX +PUSH IY +PUSH BC +PUSH DE +PUSH HL +PUSH AF +RES 1, (HL) +RES 2, (HL) +RES 4, (HL) +RES 1, (IX) +RES 1, (IX+1) +RES 1, (IX+10) +RES 1, (IX+100) +RES 1, (IX+127) +RES 2, (IX) +RES 2, (IX+1) +RES 2, (IX+10) +RES 2, (IX+100) +RES 2, (IX+127) +RES 4, (IX) +RES 4, (IX+1) +RES 4, (IX+10) +RES 4, (IX+100) +RES 4, (IX+127) +RES 1, (IY) +RES 1, (IY+1) +RES 1, (IY+10) +RES 1, (IY+100) +RES 1, (IY+127) +RES 2, (IY) +RES 2, (IY+1) +RES 2, (IY+10) +RES 2, (IY+100) +RES 2, (IY+127) +RES 4, (IY) +RES 4, (IY+1) +RES 4, (IY+10) +RES 4, (IY+100) +RES 4, (IY+127) +RES 1, B +RES 1, C +RES 1, D +RES 1, E +RES 1, H +RES 1, L +RES 1, A +RES 2, B +RES 2, C +RES 2, D +RES 2, E +RES 2, H +RES 2, L +RES 2, A +RES 4, B +RES 4, C +RES 4, D +RES 4, E +RES 4, H +RES 4, L +RES 4, A +RET +RET Z +RET NZ +RET C +RET NC +RET P +RET M +RET PO +RET PE +RETI +RETN +RL B +RL C +RL D +RL E +RL H +RL L +RL A +RLA +RLC B +RLC C +RLC D +RLC E +RLC H +RLC L +RLC A +RLCA +RR B +RR C +RR D +RR E +RR H +RR L +RR A +RRA +RRC B +RRC C +RRC D +RRC E +RRC H +RRC L +RRC A +RRCA +SBC A, (HL) +SBC A, B +SBC A, C +SBC A, D +SBC A, E +SBC A, H +SBC A, L +SBC A, A +SBC HL, BC +SBC HL, DE +SBC HL, HL +SBC HL, SP +SCF +SET 1, (HL) +SET 2, (HL) +SET 4, (HL) +SET 1, (IX) +SET 1, (IX+1) +SET 1, (IX+10) +SET 1, (IX+100) +SET 1, (IX+127) +SET 2, (IX) +SET 2, (IX+1) +SET 2, (IX+10) +SET 2, (IX+100) +SET 2, (IX+127) +SET 4, (IX) +SET 4, (IX+1) +SET 4, (IX+10) +SET 4, (IX+100) +SET 4, (IX+127) +SET 1, (IY) +SET 1, (IY+1) +SET 1, (IY+10) +SET 1, (IY+100) +SET 1, (IY+127) +SET 2, (IY) +SET 2, (IY+1) +SET 2, (IY+10) +SET 2, (IY+100) +SET 2, (IY+127) +SET 4, (IY) +SET 4, (IY+1) +SET 4, (IY+10) +SET 4, (IY+100) +SET 4, (IY+127) +SET 1, B +SET 1, C +SET 1, D +SET 1, E +SET 1, H +SET 1, L +SET 1, A +SET 2, B +SET 2, C +SET 2, D +SET 2, E +SET 2, H +SET 2, L +SET 2, A +SET 4, B +SET 4, C +SET 4, D +SET 4, E +SET 4, H +SET 4, L +SET 4, A +SLA B +SLA C +SLA D +SLA E +SLA H +SLA L +SLA A +SRL B +SRL C +SRL D +SRL E +SRL H +SRL L +SRL A +SUB (HL) +SUB B +SUB C +SUB D +SUB E +SUB H +SUB L +SUB A +SUB 1 +SUB 2 +SUB 4 +SUB 8 +SUB 16 +SUB 32 +SUB 64 +SUB 128 +XOR (HL) +XOR B +XOR C +XOR D +XOR E +XOR H +XOR L +XOR A +XOR 1 +XOR 2 +XOR 4 +XOR 8 +XOR 16 +XOR 32 +XOR 64 +XOR 128 diff --git a/tools/tests/zasm/allinstrs.asm.expected b/tools/tests/zasm/allinstrs.asm.expected new file mode 100644 index 0000000..c4df143 Binary files /dev/null and b/tools/tests/zasm/allinstrs.asm.expected differ diff --git a/tools/tests/zasm/geninstrs.py b/tools/tests/zasm/geninstrs.py index 580e5f5..819fd8b 100755 --- a/tools/tests/zasm/geninstrs.py +++ b/tools/tests/zasm/geninstrs.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 # Generate almost all possible combination for instructions from instruction # tables +# When zasm supported instructions change, use this script to update +# allinstrs.asm import sys @@ -108,6 +110,11 @@ def genargs(argspec): grp = argGrpTbl[argspec] return [argspecTbl[a] for a in grp] +# process a 'n' arg into an 'e' one +def eargs(args): + newargs = ['$+'+s for s in args[:-1]] + return newargs + ['$-'+s for s in args[:-1]] + def p(line): if line not in BLACKLIST: print(line) @@ -131,12 +138,16 @@ def main(): if n in {'BIT', 'SET', 'RES'}: # we only want to keep 1, 2, 4 args1 = args1[:3] + if n in {'JR', 'DJNZ'} and a1 == 'n': + args1 = eargs(args1) if n == 'IM': args1 = [0, 1, 2] if args1: for arg1 in args1: args2 = genargs(a2) if args2: + if n in {'JR', 'DJNZ'} and a2 == 'n': + args2 = eargs(args2) for arg2 in args2: p(f"{n} {arg1}, {arg2}") else: diff --git a/tools/tests/zasm/runtests.sh b/tools/tests/zasm/runtests.sh index 03d3925..ec217ca 100755 --- a/tools/tests/zasm/runtests.sh +++ b/tools/tests/zasm/runtests.sh @@ -3,7 +3,6 @@ set -e TMPFILE=$(mktemp) -SCAS=scas KERNEL=../../../kernel APPS=../../../apps ZASM=../../zasm.sh @@ -12,7 +11,7 @@ ASMFILE=${APPS}/zasm/instr.asm cmpas() { FN=$1 shift 1 - EXPECTED=$($SCAS -I ${KERNEL} -I ${APPS} -o - "${FN}" | xxd) + EXPECTED=$(xxd ${FN}.expected) ACTUAL=$(cat ${FN} | $ZASM "$@" | xxd) if [ "$ACTUAL" == "$EXPECTED" ]; then echo ok @@ -25,15 +24,9 @@ cmpas() { fi } -for fn in test*.asm; do +for fn in *.asm; do echo "Comparing ${fn}" cmpas $fn "${KERNEL}" "${APPS}" done -./geninstrs.py $ASMFILE | \ -while read line; do - echo $line | tee "${TMPFILE}" - cmpas ${TMPFILE} -done - ./errtests.sh diff --git a/tools/tests/zasm/test1.asm.expected b/tools/tests/zasm/test1.asm.expected new file mode 100644 index 0000000..c587fae Binary files /dev/null and b/tools/tests/zasm/test1.asm.expected differ diff --git a/tools/tests/zasm/test2.asm.expected b/tools/tests/zasm/test2.asm.expected new file mode 100644 index 0000000..2cec424 Binary files /dev/null and b/tools/tests/zasm/test2.asm.expected differ diff --git a/tools/tests/zasm/test3.asm.expected b/tools/tests/zasm/test3.asm.expected new file mode 100644 index 0000000..08a7318 --- /dev/null +++ b/tools/tests/zasm/test3.asm.expected @@ -0,0 +1 @@ +õƒ0_ñÉõ…0$oñÉ \ No newline at end of file diff --git a/tools/tests/zasm/test4.asm.expected b/tools/tests/zasm/test4.asm.expected new file mode 100644 index 0000000..6c6b3f3 Binary files /dev/null and b/tools/tests/zasm/test4.asm.expected differ diff --git a/tools/tests/zasm/test5.asm.expected b/tools/tests/zasm/test5.asm.expected new file mode 100644 index 0000000..4279a95 --- /dev/null +++ b/tools/tests/zasm/test5.asm.expected @@ -0,0 +1 @@ +>D>!>( \ No newline at end of file diff --git a/tools/tests/zasm/test6.asm.expected b/tools/tests/zasm/test6.asm.expected new file mode 100644 index 0000000..4d33f4c Binary files /dev/null and b/tools/tests/zasm/test6.asm.expected differ diff --git a/tools/tests/zasm/test7.asm.expected b/tools/tests/zasm/test7.asm.expected new file mode 100644 index 0000000..2ee334e Binary files /dev/null and b/tools/tests/zasm/test7.asm.expected differ diff --git a/tools/tests/zasm/test8.asm.expected b/tools/tests/zasm/test8.asm.expected new file mode 100644 index 0000000..66fb303 --- /dev/null +++ b/tools/tests/zasm/test8.asm.expected @@ -0,0 +1 @@ +ÃÒû \ No newline at end of file