X-Git-Url: http://git.joshuawise.com/fpgaboy.git/blobdiff_plain/03202f62407e24bd964016dccc06de95df622e3c..80ecd2fe23cfab4f410f8f760dea4b44d72a82c9:/diag.asm diff --git a/diag.asm b/diag.asm index 8016400..50cefe7 100644 --- a/diag.asm +++ b/diag.asm @@ -32,6 +32,8 @@ main: ld hl, signon call puts + + call putscreen ei @@ -48,6 +50,80 @@ main: signon: db $0D,$0A,$1B,"[1mFPGABoy Diagnostic ROM",$1B,"[0m",$0D,$0A,0 +putscreen: + ; Wait for vblank + call .vblwait + + 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 +.vloop: call .vblwait + ld c, $40 +.loop: ld a, $01 + ld [hli], a + xor a + ld [hli], a + ld a, h + cp $9C + ret z + dec c + xor a + cp c + jr nz,.loop + jr .vloop + +.vblwait: +.stat1: ld a, [$FF41] ; STAT + and $03 + cp $00 + jp nz, .stat1 +.stat2: ld a, [$FF41] + and $03 + cp $01 + jr nz, .stat2 + ret + vbl: PUSH AF PUSH BC @@ -55,14 +131,36 @@ vbl: PUSH HL xor a - ld c, $0F - ld [c], a + ld [$FF0F], a + + ld a, [$FF51] + ld b, a + and $80 + cp $80 + jr nz, .nothing + ld c, $0 + + ld a, b + and $1 + cp c + call nz, .scyup - ld c, $42 ; SCY - ld a, [c] - inc a - ld [c], a + ld a, b + and $2 + cp c + call nz, .scydown + + ld a, b + and $4 + cp c + call nz, .scxup + + ld a, b + and $8 + cp c + call nz, .scxdown +.nothing: POP HL POP DE POP BC @@ -70,13 +168,29 @@ vbl: RETI +.scyup: ld hl, $FF42 + inc [hl] + ret + +.scydown: ld hl, $FF42 + dec [hl] + ret + +.scxup: ld hl, $FF43 + inc [hl] + ret + +.scxdown: ld hl, $FF43 + dec [hl] + ret + + lcdc: PUSH AF PUSH BC xor a - ld c, $0F - ld [c], a + ld [$FF0F], a POP BC POP AF @@ -90,25 +204,23 @@ tmro: PUSH HL xor a - ld c, $0F - ld [c], a + 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 @@ -121,7 +233,7 @@ memtest: ld hl,memteststr call puts - ld hl, $C001 ; Write loop + ld hl, $C000 ; Write loop .wr: ld a,h xor l @@ -133,7 +245,7 @@ memtest: cp $80 jr nz, .wr - ld hl, $C001 ; Read loop + ld hl, $C000 ; Read loop .rd: ld a,h xor l @@ -154,7 +266,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