X-Git-Url: http://git.joshuawise.com/fpgaboy.git/blobdiff_plain/fe3dc8909a6c72ce4208cb5b8b64bc6b2f8cebd6..75be7c71a363261fa7ba96ee2a667ec753e478bb:/diag.asm diff --git a/diag.asm b/diag.asm index e3afaa4..5d44cef 100644 --- a/diag.asm +++ b/diag.asm @@ -24,7 +24,7 @@ main: ld a, $04 ;start timer, 4.096KHz ld c, $07 ld [c], a - + ld hl, $DF81 xor a ld [hli], a @@ -32,6 +32,8 @@ main: ld hl, signon call puts + + call putscreen ei @@ -48,14 +50,100 @@ main: 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: -lcdc: PUSH AF PUSH BC + PUSH DE + PUSH HL xor a - ld c, $0F + ld [$FF0F], a + + ld c, $42 ; SCY + ld a, [c] + inc a + ld [c], a + + ld c, $43 ; SCX + ld a, [c] + inc a ld [c], a + + POP HL + POP DE + POP BC + POP AF + + RETI + +lcdc: + PUSH AF + PUSH BC + + xor a + ld [$FF0F], a POP BC POP AF @@ -69,20 +157,23 @@ tmro: PUSH HL xor a - ld c, $0F + ld [$FF0F], a + + ld c, $45 ; LYC + ld a, [c] + inc a ld [c], a - ld hl, $DF82 - ld a, [hld] + ld a, [$DF82] cp 0 jr z, .noprint ld a, $41 ; print A call putc .noprint: - inc [hl] - ld a, [hl] - ld c, $51 - ld [c], a + ld a, [$DF81] + inc a + ld [$DF81], a + ld [$FF51], a POP HL POP DE @@ -95,7 +186,7 @@ memtest: ld hl,memteststr call puts - ld hl, $C001 ; Write loop + ld hl, $C000 ; Write loop .wr: ld a,h xor l @@ -107,7 +198,7 @@ memtest: cp $80 jr nz, .wr - ld hl, $C001 ; Read loop + ld hl, $C000 ; Read loop .rd: ld a,h xor l @@ -128,7 +219,7 @@ memtest: ret .memfail: ; Say we failed (sadface) ; decrement hl the easy way - ld a,[hld] + dec [hl] push hl ld hl, failatstr call puts