|
|
|
@ -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 |
|
|
|
|