X-Git-Url: http://git.joshuawise.com/fpgaboy.git/blobdiff_plain/616eebe0bdb3166e9cfda312d6425910b2addf8f..5bac4cf0a60acac6826eb3215e1526d48ba8f7ac:/rom.asm?ds=sidebyside diff --git a/rom.asm b/rom.asm index 2ede41c..6989b2d 100644 --- a/rom.asm +++ b/rom.asm @@ -1,139 +1,71 @@ SECTION "a",HOME + main: - ld c, $51 + ld c, $51 ; Note that we are alive. ld a, $FF ld [c],a - ld sp,$DFFF - - ld hl,text - call puts - call memtest - call waitsw - jp main + ld sp, $DFF0 + +; ld hl, $DF81 +; ld a, $80 +; ld [hl], a -text: - db $1B,"[1mFPGABoy Diagnostic ROM",$1B,"[0m",$0D,$0A,0 +; ld c, $07 +; ld a, $07 ;start timer, 4.096KHz +; ld [c], a +;diqs: ei +; ld a, $80 +; ld c, $51 +; ld [c], a +; jr diqs + call irqhand +coqs: jr coqs -memtest: - ld hl,memteststr - call puts - - ld hl, $C000 -.wr: - ld a,h - xor l - ld [hli],a - ld a, $DF - cp h - jp nz, .wr - ld a, $80 - cp l - jp nz, .wr + section "Diq", HOME[$38] +fuqed: + di + jr fuqed - ld hl, $C000 -.rd: - ld a,h - xor l - ld b,a - ld a, [hli] - cp b - jp nz, .memfail + section "fuq",HOME[$100] +irqhand: + PUSH AF + PUSH BC + PUSH DE + PUSH HL - ld a, $DF - cp h - jp nz, .rd - ld a, $80 - cp l - jp nz, .rd +; ld c, $51 +; ld a, $F0 +; ld [c], a - ld hl, testokstr - call puts - ret -.memfail: - @ decrement hl the easy way - ld a,[hld] - push hl - ld hl, failatstr - call puts - pop hl - ld a, h - call puthex - ld a, l - call puthex - ld a, $0A - call putc - ld a, $0D - call putc - ret - -memteststr: - db "Testing memory from $C000 to $DF80...",0 -testokstr: - db " OK!",$0D,$0A,0 -failatstr: - db " Test failed at $",0 -puthex: - push af - rra - rra - rra - rra - ld b,$0F - and b - ld b,$30 - add b - call putc - pop af - ld b,$0F - and b - ld b,$30 - add b - call putc - ret - -waitsw: - ld hl,waitswstr - call puts + xor a + ld c, $0F ; ack the irq + ld [c], a - ld c, $51 - ld a, $00 - ld [c],a + ;ld a, $41 ; print A + ;call putc - ld c, $51 - ld b, $0 -.loop1: - ld a,[c] - cp b - jp z,.loop1 -.loop2: - ld a,[c] - cp b - jp nz,.loop2 - ret - -waitswstr: - db "Diagnostic ROM complete; flip switches to nonzero and then to zero to reset.",$0D,$0A,0 +; ld hl, $DF81 +; ld a, [hl] +; ld b, 1 +; add b + ld a, $08 + ld hl, $FF51 +; ld c, $51 + nop + nop + ld [hl], a -putc: - push af - ld b, 0 - ld c, $50 -.waitport: - ld a,[c] - cp b - jp nz,.waitport - pop af - ld [c],a - ret - -puts: - ld a, [hli] - ld b, $00 - cp b - jp z, .done - call putc - jp puts -.done: - ret +; ld c, $51 +; ld a, $0F +; ld [c], a + + POP HL + POP DE + POP BC + POP AF + RETI + db $18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE + db $18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE + db $18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE,$18,$FE