111 lines
2.5 KiB
ArmAsm
111 lines
2.5 KiB
ArmAsm
; Tests miscellaneous instructions
|
|
|
|
;.define PRINT_CHECKSUMS 1
|
|
.include "shell.inc"
|
|
.include "instr_test.s"
|
|
|
|
instrs:
|
|
.byte $F0,$91,0 ; LDH A,($91)
|
|
.byte $E0,$91,0 ; LDH ($91),A
|
|
.byte $F2,$00,0 ; LDH A,(C)
|
|
.byte $E2,$00,0 ; LDH (C),A
|
|
.byte $FA,$91,$FF ; LD A,($FF91)
|
|
.byte $EA,$91,$FF ; LD ($FF91),A
|
|
.byte $08,$91,$FF ; LD ($FF91),SP
|
|
.byte $01,$23,$01 ; LD BC,$0123
|
|
.byte $11,$23,$01 ; LD DE,$0123
|
|
.byte $21,$23,$01 ; LD HL,$0123
|
|
.byte $31,$23,$01 ; LD SP,$0123
|
|
.byte $F5,0,0 ; PUSH AF
|
|
.byte $C5,0,0 ; PUSH BC
|
|
.byte $D5,0,0 ; PUSH DE
|
|
.byte $E5,0,0 ; PUSH HL
|
|
.byte $F1,0,0 ; POP AF
|
|
.byte $C1,0,0 ; POP BC
|
|
.byte $D1,0,0 ; POP DE
|
|
.byte $E1,0,0 ; POP HL
|
|
instrs_end:
|
|
|
|
test_instr:
|
|
; C = flags register
|
|
ld c,$00
|
|
call test
|
|
ld c,$10
|
|
call test
|
|
ld c,$E0
|
|
call test
|
|
ld c,$F0
|
|
call test
|
|
ret
|
|
|
|
test:
|
|
; Fill RAM
|
|
ld a,$FE
|
|
ld ($FF90),a
|
|
ld a,$DC
|
|
ld ($FF91),a
|
|
ld a,$BA
|
|
ld ($FF92),a
|
|
|
|
; Fill stack
|
|
ld a,$13
|
|
ld ($DF80),a
|
|
ld a,$57
|
|
ld ($DF80-1),a
|
|
ld a,$9B
|
|
ld ($DF80-2),a
|
|
ld a,$DF
|
|
ld ($DF80-3),a
|
|
|
|
; Set registers
|
|
ld b,$12
|
|
push bc
|
|
ld bc,$5691
|
|
ld de,$9ABC
|
|
ld hl,$DEF0
|
|
pop af
|
|
|
|
; Switch stack
|
|
ld (temp),sp
|
|
ld sp,$DF80-2
|
|
|
|
jp instr
|
|
instr_done:
|
|
; Save new SP and switch to another stack
|
|
ld (temp+2),sp
|
|
ld sp,$DF70
|
|
|
|
call checksum_af_bc_de_hl
|
|
|
|
; Checksum SP
|
|
ld a,(temp+2)
|
|
call update_crc_fast
|
|
ld a,(temp+3)
|
|
call update_crc_fast
|
|
|
|
; Checksum RAM
|
|
ld a,($FF90)
|
|
call update_crc_fast
|
|
ld a,($FF91)
|
|
call update_crc_fast
|
|
ld a,($FF92)
|
|
call update_crc_fast
|
|
|
|
; Checksum stack
|
|
ld a,($DF80)
|
|
call update_crc_fast
|
|
ld a,($DF80-1)
|
|
call update_crc_fast
|
|
ld a,($DF80-2)
|
|
call update_crc_fast
|
|
ld a,($DF80-3)
|
|
call update_crc_fast
|
|
|
|
; Restore SP
|
|
ldsp temp
|
|
|
|
ret
|
|
|
|
checksums:
|
|
.byte $4D,$FF,$15,$97,$6D,$A7,$35,$65,$4D,$FF,$15,$97,$6D,$A7,$35,$65,$4D,$FF,$15,$97,$6D,$A7,$35,$65,$AD,$FA,$5E,$41,$D0,$78,$79,$C1,$AF,$66,$99,$34,$0D,$E1,$97,$99,$6F,$D0,$6F,$5D,$C3,$1F,$A3,$8A,$C2,$F1,$9C,$F3,$C1,$C3,$DC,$78,$C0,$2D,$E3,$01,$8F,$C4,$0F,$44,$95,$22,$6A,$39,$61,$C5,$AB,$55,$FB,$DF,$2C,$52,
|