; Tests most register instructions. ; Takes 15 seconds. ;.define PRINT_CHECKSUMS 1 .include "shell.inc" .include "instr_test.s" instrs: .byte $CB,$40,0 ; BIT 0,B .byte $CB,$41,0 ; BIT 0,C .byte $CB,$42,0 ; BIT 0,D .byte $CB,$43,0 ; BIT 0,E .byte $CB,$44,0 ; BIT 0,H .byte $CB,$45,0 ; BIT 0,L .byte $CB,$47,0 ; BIT 0,A .byte $CB,$48,0 ; BIT 1,B .byte $CB,$49,0 ; BIT 1,C .byte $CB,$4A,0 ; BIT 1,D .byte $CB,$4B,0 ; BIT 1,E .byte $CB,$4C,0 ; BIT 1,H .byte $CB,$4D,0 ; BIT 1,L .byte $CB,$4F,0 ; BIT 1,A .byte $CB,$50,0 ; BIT 2,B .byte $CB,$51,0 ; BIT 2,C .byte $CB,$52,0 ; BIT 2,D .byte $CB,$53,0 ; BIT 2,E .byte $CB,$54,0 ; BIT 2,H .byte $CB,$55,0 ; BIT 2,L .byte $CB,$57,0 ; BIT 2,A .byte $CB,$58,0 ; BIT 3,B .byte $CB,$59,0 ; BIT 3,C .byte $CB,$5A,0 ; BIT 3,D .byte $CB,$5B,0 ; BIT 3,E .byte $CB,$5C,0 ; BIT 3,H .byte $CB,$5D,0 ; BIT 3,L .byte $CB,$5F,0 ; BIT 3,A .byte $CB,$60,0 ; BIT 4,B .byte $CB,$61,0 ; BIT 4,C .byte $CB,$62,0 ; BIT 4,D .byte $CB,$63,0 ; BIT 4,E .byte $CB,$64,0 ; BIT 4,H .byte $CB,$65,0 ; BIT 4,L .byte $CB,$67,0 ; BIT 4,A .byte $CB,$68,0 ; BIT 5,B .byte $CB,$69,0 ; BIT 5,C .byte $CB,$6A,0 ; BIT 5,D .byte $CB,$6B,0 ; BIT 5,E .byte $CB,$6C,0 ; BIT 5,H .byte $CB,$6D,0 ; BIT 5,L .byte $CB,$6F,0 ; BIT 5,A .byte $CB,$70,0 ; BIT 6,B .byte $CB,$71,0 ; BIT 6,C .byte $CB,$72,0 ; BIT 6,D .byte $CB,$73,0 ; BIT 6,E .byte $CB,$74,0 ; BIT 6,H .byte $CB,$75,0 ; BIT 6,L .byte $CB,$77,0 ; BIT 6,A .byte $CB,$78,0 ; BIT 7,B .byte $CB,$79,0 ; BIT 7,C .byte $CB,$7A,0 ; BIT 7,D .byte $CB,$7B,0 ; BIT 7,E .byte $CB,$7C,0 ; BIT 7,H .byte $CB,$7D,0 ; BIT 7,L .byte $CB,$7F,0 ; BIT 7,A .byte $CB,$80,0 ; RES 0,B .byte $CB,$81,0 ; RES 0,C .byte $CB,$82,0 ; RES 0,D .byte $CB,$83,0 ; RES 0,E .byte $CB,$84,0 ; RES 0,H .byte $CB,$85,0 ; RES 0,L .byte $CB,$87,0 ; RES 0,A .byte $CB,$88,0 ; RES 1,B .byte $CB,$89,0 ; RES 1,C .byte $CB,$8A,0 ; RES 1,D .byte $CB,$8B,0 ; RES 1,E .byte $CB,$8C,0 ; RES 1,H .byte $CB,$8D,0 ; RES 1,L .byte $CB,$8F,0 ; RES 1,A .byte $CB,$90,0 ; RES 2,B .byte $CB,$91,0 ; RES 2,C .byte $CB,$92,0 ; RES 2,D .byte $CB,$93,0 ; RES 2,E .byte $CB,$94,0 ; RES 2,H .byte $CB,$95,0 ; RES 2,L .byte $CB,$97,0 ; RES 2,A .byte $CB,$98,0 ; RES 3,B .byte $CB,$99,0 ; RES 3,C .byte $CB,$9A,0 ; RES 3,D .byte $CB,$9B,0 ; RES 3,E .byte $CB,$9C,0 ; RES 3,H .byte $CB,$9D,0 ; RES 3,L .byte $CB,$9F,0 ; RES 3,A .byte $CB,$A0,0 ; RES 4,B .byte $CB,$A1,0 ; RES 4,C .byte $CB,$A2,0 ; RES 4,D .byte $CB,$A3,0 ; RES 4,E .byte $CB,$A4,0 ; RES 4,H .byte $CB,$A5,0 ; RES 4,L .byte $CB,$A7,0 ; RES 4,A .byte $CB,$A8,0 ; RES 5,B .byte $CB,$A9,0 ; RES 5,C .byte $CB,$AA,0 ; RES 5,D .byte $CB,$AB,0 ; RES 5,E .byte $CB,$AC,0 ; RES 5,H .byte $CB,$AD,0 ; RES 5,L .byte $CB,$AF,0 ; RES 5,A .byte $CB,$B0,0 ; RES 6,B .byte $CB,$B1,0 ; RES 6,C .byte $CB,$B2,0 ; RES 6,D .byte $CB,$B3,0 ; RES 6,E .byte $CB,$B4,0 ; RES 6,H .byte $CB,$B5,0 ; RES 6,L .byte $CB,$B7,0 ; RES 6,A .byte $CB,$B8,0 ; RES 7,B .byte $CB,$B9,0 ; RES 7,C .byte $CB,$BA,0 ; RES 7,D .byte $CB,$BB,0 ; RES 7,E .byte $CB,$BC,0 ; RES 7,H .byte $CB,$BD,0 ; RES 7,L .byte $CB,$BF,0 ; RES 7,A .byte $CB,$C0,0 ; SET 0,B .byte $CB,$C1,0 ; SET 0,C .byte $CB,$C2,0 ; SET 0,D .byte $CB,$C3,0 ; SET 0,E .byte $CB,$C4,0 ; SET 0,H .byte $CB,$C5,0 ; SET 0,L .byte $CB,$C7,0 ; SET 0,A .byte $CB,$C8,0 ; SET 1,B .byte $CB,$C9,0 ; SET 1,C .byte $CB,$CA,0 ; SET 1,D .byte $CB,$CB,0 ; SET 1,E .byte $CB,$CC,0 ; SET 1,H .byte $CB,$CD,0 ; SET 1,L .byte $CB,$CF,0 ; SET 1,A .byte $CB,$D0,0 ; SET 2,B .byte $CB,$D1,0 ; SET 2,C .byte $CB,$D2,0 ; SET 2,D .byte $CB,$D3,0 ; SET 2,E .byte $CB,$D4,0 ; SET 2,H .byte $CB,$D5,0 ; SET 2,L .byte $CB,$D7,0 ; SET 2,A .byte $CB,$D8,0 ; SET 3,B .byte $CB,$D9,0 ; SET 3,C .byte $CB,$DA,0 ; SET 3,D .byte $CB,$DB,0 ; SET 3,E .byte $CB,$DC,0 ; SET 3,H .byte $CB,$DD,0 ; SET 3,L .byte $CB,$DF,0 ; SET 3,A .byte $CB,$E0,0 ; SET 4,B .byte $CB,$E1,0 ; SET 4,C .byte $CB,$E2,0 ; SET 4,D .byte $CB,$E3,0 ; SET 4,E .byte $CB,$E4,0 ; SET 4,H .byte $CB,$E5,0 ; SET 4,L .byte $CB,$E7,0 ; SET 4,A .byte $CB,$E8,0 ; SET 5,B .byte $CB,$E9,0 ; SET 5,C .byte $CB,$EA,0 ; SET 5,D .byte $CB,$EB,0 ; SET 5,E .byte $CB,$EC,0 ; SET 5,H .byte $CB,$ED,0 ; SET 5,L .byte $CB,$EF,0 ; SET 5,A .byte $CB,$F0,0 ; SET 6,B .byte $CB,$F1,0 ; SET 6,C .byte $CB,$F2,0 ; SET 6,D .byte $CB,$F3,0 ; SET 6,E .byte $CB,$F4,0 ; SET 6,H .byte $CB,$F5,0 ; SET 6,L .byte $CB,$F7,0 ; SET 6,A .byte $CB,$F8,0 ; SET 7,B .byte $CB,$F9,0 ; SET 7,C .byte $CB,$FA,0 ; SET 7,D .byte $CB,$FB,0 ; SET 7,E .byte $CB,$FC,0 ; SET 7,H .byte $CB,$FD,0 ; SET 7,L .byte $CB,$FF,0 ; SET 7,A instrs_end: test_instr: ld c,$00 call test ld c,$F0 call test ret test: ; Go through each value for A ld hl,values a_loop: ld b,(hl) push hl ; Go through each value for other registers ld hl,values values_loop: push bc push hl push bc ; BC ld a,(hl+) ld b,a ld a,(hl+) ld c,a ; HL ld a,(hl+) ld d,a ld a,(hl+) ld e,a push de ; DE ld a,(hl+) ld d,a ld a,(hl+) ld e,a pop hl pop af ; call print_regs jp instr instr_done: ; Checksum registers call checksum_af_bc_de_hl pop hl pop bc inc hl ld a,l cp