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:
78
cpu_instrs/source/01-special.s
Normal file
78
cpu_instrs/source/01-special.s
Normal file
@@ -0,0 +1,78 @@
|
||||
; Tests instructions that don't fit template
|
||||
|
||||
.include "shell.inc"
|
||||
|
||||
main:
|
||||
set_test 2,"JR negative"
|
||||
ld a,0
|
||||
jp jr_neg
|
||||
inc a
|
||||
- inc a
|
||||
inc a
|
||||
cp 2
|
||||
jp nz,test_failed
|
||||
jp +
|
||||
jr_neg:
|
||||
jr -
|
||||
+
|
||||
|
||||
set_test 3,"JR positive"
|
||||
ld a,0
|
||||
jr +
|
||||
inc a
|
||||
+ inc a
|
||||
inc a
|
||||
cp 2
|
||||
jp nz,test_failed
|
||||
|
||||
|
||||
set_test 4,"LD PC,HL"
|
||||
ld hl,+
|
||||
ld a,0
|
||||
ld pc,hl
|
||||
inc a
|
||||
+ inc a
|
||||
inc a
|
||||
cp 2
|
||||
jp nz,test_failed
|
||||
|
||||
|
||||
set_test 5,"POP AF"
|
||||
ld bc,$1200
|
||||
- push bc
|
||||
pop af
|
||||
push af
|
||||
pop de
|
||||
ld a,c
|
||||
and $F0
|
||||
cp e
|
||||
jp nz,test_failed
|
||||
inc b
|
||||
inc c
|
||||
jr nz,-
|
||||
|
||||
|
||||
set_test 6,"DAA"
|
||||
; Test all combinations of A and flags (256*16 total)
|
||||
ld de,0
|
||||
- push de
|
||||
pop af
|
||||
daa
|
||||
|
||||
push af
|
||||
call update_crc
|
||||
pop hl
|
||||
ld a,l
|
||||
call update_crc
|
||||
|
||||
inc d
|
||||
jr nz,-
|
||||
|
||||
ld a,e
|
||||
add $10
|
||||
ld e,a
|
||||
jr nz,-
|
||||
|
||||
check_crc $6A9F8D8A
|
||||
|
||||
jp tests_passed
|
||||
Reference in New Issue
Block a user