]> Joshua Wise's Git repositories - fpgaboy.git/blobdiff - diag.asm
Add mock up LCDC
[fpgaboy.git] / diag.asm
index 28fce997faa6229368ced11d2339e3c536590264..ff70e0755b1f7ef374cc5717c225e3a78bd2f2cf 100644 (file)
--- a/diag.asm
+++ b/diag.asm
@@ -1,19 +1,18 @@
        SECTION "a",HOME
 
 main:
-       ld c, $51       ; Note that we are alive.
        ld a, $FF
-       ld [c],a
+       ld [$FF51],a
        
        ld sp, $DFF0
        
-       ld c, $07
        ld a, $04       ;start timer, 4.096KHz
-       ld [c], a
+       ld [$FF07], a
 
        ld hl, $DF81
        xor a
-       ld [hl], a
+       ld [hli], a
+       ld [hli], a
        
        ld hl, signon
        call puts
@@ -41,18 +40,18 @@ irqhand:
        PUSH HL
        
        xor a
-       ld c, $0F       ; ack the irq
-       ld [c], a
+       ld [$FF0F], a
        
+       ld hl, $DF82
+       ld a, [hld]
+       cp 0
+       jr z, .noprint
        ld a, $41       ; print A
        call putc
-       
-       ld hl, $DF81
+.noprint:
+       inc [hl]
        ld a, [hl]
-       add 1
-       ld c, $51
-       ld [c], a
-       ld [hl], a
+       ld [$FF51], a
 
        POP HL
        POP DE
@@ -138,6 +137,10 @@ puthex:                            ; Put two hex nibbles to the serial console.
 waitsw:
        ld hl,waitswstr
        call puts
+       
+       ld hl,$DF82
+       ld a, 1
+       ld [hl], a
 
        ld c, $51
        xor a
@@ -227,11 +230,32 @@ insntest:
        cpl
        cp $AA
        jr nz,.fail
+
+       ; Test DI/EI delay
+       di
+       ld hl, .difail
+       ld c, $0F       ; First, wait until an interrupt happens...
+.wait: ld a, [c]
+       cp 0
+       jr z, .wait
+       ei              ; Now make sure that an IRQ didn't happen on EI/DI
+       di
+       ld a, [c]
+       cp 0
+       jr z, .fail
+       ei              ; Make sure that an IRQ does happen on EI/NOP/DI
+       nop
+       di
+       ld a, [c]
+       cp 0
+       jr nz, .fail
+       ei
        
        ld hl, .ok
        call puts
        ret
 .fail:
+       ei
        call puts
        ld hl, .testfailed
        call puts
@@ -254,6 +278,8 @@ insntest:
        db "CPL",0
 .inc16fail:
        db "INC16",0
+.difail:
+       db "DI/EI delay",0
 .testfailed:
        db " test failed.",$0D,$0A,0
 .ok:
This page took 0.024022 seconds and 4 git commands to generate.