Add system-specific boot symbols and CPU instruction tests
Introduced symbol files for various Game Boy systems (CGB, AGB, MGB, SGB) to define boot sequences and functionalities. Included CPU instruction behavior tests, with detailed coverage of standard operations and interrupt handling. Added documentation for test execution and internal framework operations.
This commit is contained in:
98
cpu_instrs/source/05-op rp.s
Normal file
98
cpu_instrs/source/05-op rp.s
Normal file
@@ -0,0 +1,98 @@
|
||||
; Tests BC/DE/HL arithmetic
|
||||
|
||||
;.define PRINT_CHECKSUMS 1
|
||||
.include "shell.inc"
|
||||
.include "instr_test.s"
|
||||
|
||||
instrs:
|
||||
.byte $0B,0,0 ; DEC BC
|
||||
.byte $1B,0,0 ; DEC DE
|
||||
.byte $2B,0,0 ; DEC HL
|
||||
.byte $03,0,0 ; INC BC
|
||||
.byte $13,0,0 ; INC DE
|
||||
.byte $23,0,0 ; INC HL
|
||||
.byte $09,0,0 ; ADD HL,BC
|
||||
.byte $19,0,0 ; ADD HL,DE
|
||||
.byte $29,0,0 ; ADD HL,HL
|
||||
instrs_end:
|
||||
|
||||
test_instr:
|
||||
ld c,$00
|
||||
call test
|
||||
ld c,$10
|
||||
call test
|
||||
ld c,$E0
|
||||
call test
|
||||
ld c,$F0
|
||||
call test
|
||||
ret
|
||||
|
||||
test:
|
||||
; Go through each value for HL
|
||||
ld hl,values
|
||||
hl_loop:
|
||||
ld e,(hl)
|
||||
inc hl
|
||||
ld d,(hl)
|
||||
inc hl
|
||||
push hl
|
||||
|
||||
; Go through each value for BC, DE, A
|
||||
ld hl,values
|
||||
values_loop:
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
|
||||
push de
|
||||
push bc
|
||||
|
||||
; BC
|
||||
ld c,(hl)
|
||||
inc hl
|
||||
ld b,(hl)
|
||||
inc hl
|
||||
|
||||
; DE
|
||||
ld e,(hl)
|
||||
inc hl
|
||||
ld d,(hl)
|
||||
inc hl
|
||||
|
||||
; HL, AF
|
||||
pop af
|
||||
ld a,(hl)
|
||||
pop hl
|
||||
|
||||
; call print_regs
|
||||
jp instr
|
||||
instr_done:
|
||||
|
||||
; Checksum registers
|
||||
call checksum_af_bc_de_hl
|
||||
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
inc hl
|
||||
inc hl
|
||||
ld a,l
|
||||
cp <values_end
|
||||
jr nz,values_loop
|
||||
|
||||
pop hl
|
||||
ld a,l
|
||||
cp <values_end
|
||||
jr nz,hl_loop
|
||||
|
||||
ret
|
||||
|
||||
values:
|
||||
.word $0000,$0001,$000F,$0010,$001F,$007F,$0080,$00FF
|
||||
.word $0100,$0F00,$1F00,$1000,$7FFF,$8000,$FFFF
|
||||
values_end:
|
||||
.word $0000,$0001,$000F,$0010,$001F,$007F,$0080,$00FF
|
||||
.word $0100,$0F00,$1F00,$1000,$7FFF,$8000,$FFFF
|
||||
|
||||
checksums:
|
||||
.byte $C0,$A1,$36,$A3,$BE,$15,$B8,$2B,$9F,$93,$C6,$C2,$86,$C0,$07,$81,$0F,$75,$35,$38,$6B,$C7,$0A,$1B,$06,$68,$4B,$42,$64,$B4,$8C,$18,$FB,$6C,$31,$94,
|
||||
Reference in New Issue
Block a user