]> Joshua Wise's Git repositories - fpgaboy.git/blobdiff - diag.asm
It typechecks! Ship it!
[fpgaboy.git] / diag.asm
index 80164004fea23ecde8dc9fcdd67c005c506978de..50cefe73b0dff3747ce10de9d9d98202859e9b01 100644 (file)
--- 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
This page took 0.033667 seconds and 4 git commands to generate.