- ; Test PUSH and POP.
- ld b, $12
- ld c, $34
- ld d, $56
- ld e, $78
- push bc
- pop de
- ld hl, .pushpopfail
- ld a, d
- cp b
- jr nz,.fail
- ld a, e
- cp c
- jr nz,.fail
-
- ; Test ALU (HL).
- ld hl, .ff
- ld a, $FF
- xor [hl]
- ld hl, .xorhlfail
- jr nz, .fail
-
- ; Test JP (HL)
- ld hl, .jphl
- jp [hl]
- ld hl, .jphlfail
- jr .fail
- rst $00
-.jphl:
-
- ; Test JR
- ld a, $FF
- ld b, $00
- cp b
- jr nz,.jr
- ld hl, .jrfail
- jr .fail
- rst $00
-.jr:
-
- ; Test inc16
- ld d, $12
- ld e, $FF
- ld hl, .inc16fail
- inc de
- ld a, $13
- cp d
- jr nz, .fail
- ld a, $00
- cp e
- jr nz, .fail
-
- ; Test CP.
- ld hl, .cpfail
- ld a, $10
- ld b, $20
- cp b
- jr nc,.fail
- ld a, $20
- ld b, $10
- cp b
- jr c,.fail
-
- ; Test CPL
- ld hl, .cplfail
- ld a, $55
- ld b, $AA
- cpl
- cp b
- jr nz,.fail
-
- ld hl, .ok
- call puts
- ret
-.fail:
- call puts
- ld hl, .testfailed
- call puts
- ret
-.insnteststr:
- db "Testing instructions... ",0
-.pushpopfail:
- db "PUSH/POP",0
-.ff:
- db $FF
-.xorhlfail:
- db "XOR [HL]",0
-.jphlfail:
- db "JP [HL]",0
-.jrfail:
- db "JR",0
-.cpfail:
- db "CP",0
-.cplfail:
- db "CPL",0
-.inc16fail:
- db "INC16",0
-.testfailed:
- db " test failed.",$0D,$0A,0
-.ok:
- db "OK!",$0D,$0A,0
-
-; Serial port manipulation functions.
-putc:
- push af
- ld b, 0
- ld c, $50
-.waitport:
- ld a,[c]
- cp b
- jr nz,.waitport
- pop af
- ld [c],a
- ret
-
-puts:
- ld a, [hli]
- ld b, $00
- cp b
- ret z
- call putc
- jr puts
+ POP HL
+ POP DE
+ POP BC
+ POP AF
+ RETI
+ db $18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE
+ db $18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE
+ db $18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE