Browse Source

Update usbfifo.asm

Add cable disconnect recognition
pull/38/head
b1ackmai1er 7 years ago
parent
commit
d89d68e816
  1. 31
      Source/HBIOS/usbfifo.asm

31
Source/HBIOS/usbfifo.asm

@ -13,9 +13,12 @@
; UF_PREINIT SETUP THE DISPATCH TABLE ENTRY AND INITIALIZE HARDWARE
; UF_INIT ANNOUNCE DEVICE DESCRIPTION AND PORT
;
FIFO_DATA .EQU (FIFO_BASE+0)
FIFO_STATUS .EQU (FIFO_BASE+1)
FIFO_SEND_IMM .EQU (FIFO_BASE+2)
FIFO_DATA .EQU (FIFO_BASE+0) ; READ/WRITE DATA
FIFO_STATUS .EQU (FIFO_BASE+1) ; READ/WRITE STATUS
FIFO_SEND_IMM .EQU (FIFO_BASE+2) ; WRITE PORT TO FORCE BUFFER FLUSH
FIFO_BUFFER .EQU FALSE ; OPTION TO BUFFER OUTPUT FOR 17ms
;
UF_USB_ACTIVE .DB 0 ; USB CABLE CONNECTED STATUS FLAG
;
; DEVICE DESCRIPTION TABLE
;
@ -29,7 +32,9 @@ UF_PREINIT:
PUSH HL
POP IY ; ... TO IY
CALL UF_INITUNIT ; HAND OFF TO GENERIC INIT CODE
LD (UF_USB_ACTIVE),A ; SAVE USB CONNECTION STATUS
POP DE ; GET ENTRY ADDRESS BACK, BUT PUT IN DE
; JR Z,UF_FAIL ; EXIT IF NO USB CONNECTION
LD BC,UF_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL CIO_ADDENT ; ADD ENTRY IF FOUND, BC:DE
XOR A ; SIGNAL SUCCESS
@ -53,8 +58,12 @@ UF_INIT:
CALL NEWLINE ; PRINT DEVICE
PRTS("USB-FIFO: $")
PRTS("IO=0x$")
LD A,FIFO_BASE
CALL PRTHEXBYTE ; PRINT PORT
LD A,FIFO_BASE ; PRINT PORT
CALL PRTHEXBYTE
LD A,(UF_USB_ACTIVE) ; PRINT CABLE STATUS
OR A
RET NZ
PRTS(" No Cable$")
RET
;
; INPUT A CHARACTER AND RETURN IT IN E
@ -74,7 +83,9 @@ UF_OUT:
JR Z,UF_OUT ; LOOP IF NOT
LD C,FIFO_DATA
OUT (C),E ; WRITE TO FIFO
#IF (FIFO_BUFFER)
OUT (FIFO_SEND_IMM),A ; SEND IMMEDIATE
#ENDIF
XOR A ; SIGNAL SUCCESS
RET
;
@ -147,11 +158,11 @@ UF_DEVICE:
; USB-FIFO DETECTION ROUTINE
;
UF_DETECT:
; IN A,(FIFO_STATUS) ; DON'T LOAD DRIVER IF
; AND 10000001B ; CABLE DISCONNECTED
; SUB 10000001B ; A=0
; RET Z
LD A,1 ; A=1
IN A,(FIFO_STATUS)
AND 10000001B
SUB 10000001B ; A=0 CABLE DISCONNECTED
RET Z
LD A,1 ; A=1 CABLE CONNECTED
RET
;
; DRIVER FUNCTION TABLE

Loading…
Cancel
Save