]> Joshua Wise's Git repositories - fpgaboy.git/blobdiff - xm.asm
Add nintendo logo to diag. Add xmodem loader. Add auxboot and binwire utilities.
[fpgaboy.git] / xm.asm
diff --git a/xm.asm b/xm.asm
new file mode 100644 (file)
index 0000000..d4b5374
--- /dev/null
+++ b/xm.asm
@@ -0,0 +1,88 @@
+       SECTION "wee",HOME[$0]
+       ; this all needs to be PIC!
+st:
+       ld sp, $CFFF
+       xor a
+       ld hl, $FF60
+       ld [hli], a
+       ld [hli], a
+       ld [hli], a
+nak:
+       ld a, $15       ; NAK
+       call putc+$FF80
+       
+.ack:  call getc+$FF80
+       cp $01  ;SOH
+       jr z,.soh
+       cp $04  ;EOT
+       jr z, .eot
+       cp $18  ;CAN
+       jr z, .rst
+       jr .donak
+
+.eot:
+       ld A, $06       ; Ack the EOT
+       call putc+$FF80
+.rst:  rst $00
+
+.soh:  call getc+$FF80 ; blk
+       call getc+$FF80 ; iblk
+       xor a
+       ld b, a
+       ld l, a
+       ld h, $C0
+.lp:   call getc+$FF80
+       ld [hli], a
+       add b
+       ld b, a
+       bit 7, l
+       jr z, .lp
+.cksm: call getc+$FF80
+       cp b
+       jr nz, .donak
+       ld hl, $C000
+.lp2:  jr z, .doack
+       ld a, [hli]
+       ld [$FF63], A
+       bit 7, l
+       jr z,.lp2
+.doack:        ld A, $06
+       call putc+$FF80
+       jr .ack
+.donak:        call getc+$FF80         ; Wait until the line clears, and then once
+       jr .donak               ; that happens, getc will cause a NAK.
+
+getc:
+       xor d
+       xor e
+.dgetc:
+       dec de
+       xor a
+       cp d
+       jr z, .timeout
+       ld a, [$FF53]
+       and $02
+       jr z, .dgetc
+       ld a, [$FF52]
+       ret
+.timeout:
+       ld hl, $D000
+       ld a, [hl]
+       inc a
+       ld [hl], a
+       ld [$FF51], a
+       jr nak
+
+putc:
+       ld c, $53
+       push af
+.waitport:
+       ld a,[c]
+       and $01
+       jr nz,.waitport
+       pop af
+       ld [$FF52],a
+       ret
+
+       section "a", HOME[$7F]
+       nop
\ No newline at end of file
This page took 0.017344 seconds and 4 git commands to generate.