ld hl, signon
call puts
+
+ call putscreen
ei
signon:
db $0D,$0A,$1B,"[1mFPGABoy Diagnostic ROM",$1B,"[0m",$0D,$0A,0
+putscreen:
+ ; Wait for vblank
+ ld c, $41
+.stat: ld a, [c]
+ ld [$FF51], a
+ and $03 ; mode
+ cp $01 ; VBLANK
+ jr nz, .stat
+
+ ld hl, $8000 ; Copy two tiles.
+ ld a, $AA
+ ld [hli], a
+ ld [hli], a
+ ld a, $55
+ ld [hli], a
+ ld [hli], a
+ ld a, $AA
+ ld [hli], a
+ ld [hli], a
+ ld a, $55
+ ld [hli], a
+ ld [hli], a
+ ld a, $AA
+ ld [hli], a
+ ld [hli], a
+ ld a, $55
+ ld [hli], a
+ ld [hli], a
+ ld a, $AA
+ ld [hli], a
+ ld [hli], a
+ ld a, $55
+ ld [hli], a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+
+ ld hl, $9800
+.loop: ld a, $01
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld a, h
+ cp $9C
+ jp nz,.loop
+ ret
+
vbl:
PUSH AF
PUSH BC
ld a, [c]
inc a
ld [c], a
+
+ ld c, $43 ; SCX
+ ld a, [c]
+ inc a
+ ld [c], a
POP HL
POP DE