Browse Source

Update usbfifo.asm

Cleanup
pull/38/head
b1ackmai1er 7 years ago
parent
commit
19033c018d
  1. 80
      Source/HBIOS/usbfifo.asm

80
Source/HBIOS/usbfifo.asm

@ -1,13 +1,29 @@
;==================================================================================================
; ECB USB-FIFO DRIVER FOR WILL SOWERBUTTS ADAFRUIT BASED FT232H ECB-FIFO BOARD
; REFER https://www.retrobrewcomputers.org/doku.php?id=boards:ecb:usb-fifo:start
; PHIL SUMMERS (b1ackmai1er)
;==================================================================================================
;
; BASE PORT IS SET IN PLT_SBC.INC
; INTERRUPTS ARE NOT USED.
; ONLY ONE BOARD SUPPORTED.
;
; HBIOS CALLS:
;
; 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)
;
;==================================================================================================
; DEVICE DESCRIPTION TABLE
;
UF_PREINIT:
UF_CFG: .DW DEFSIOACFG ; DUMMY CONFIGURATION
;
; SETUP THE DISPATCH TABLE ENTRY
; SETUP THE DISPATCH TABLE ENTRY AND INITIALIZE HARDWARE
;
UF_PREINIT:
LD HL,UF_CFG ; POINT TO START OF CFG TABLE
PUSH HL ; COPY CFG DATA PTR
PUSH HL
@ -30,19 +46,17 @@ UF_INITUNIT:
LD DE,-1 ; LEAVE CONFIG ALONE
JR UF_INITDEV ; IMPLEMENT IT AND RETURN
;
;
; ANNOUNCE DEVICE DESCRIPTION AND PORT
;
UF_INIT:
LD HL,UF_CFG ; POINT TO START OF CFG TABLE
PUSH HL ; COPY CFG DATA PTR
POP IY ; ... TO IY
;
LD A,1 ; SET TYPE
OR A ; SET FLAGS
CALL NZ,UF_PRTCFG ; PRINT IF NOT ZERO
CALL NEWLINE ; PRINT DEVICE
PRTS("USB-FIFO: $")
PRTS("IO=0x$")
LD A,FIFO_BASE
CALL PRTHEXBYTE ; PRINT PORT
RET
;
XOR A ; SIGNAL SUCCESS
RET ; DONE
; INPUT A CHARACTER AND RETURN IT IN E
;
UF_IN:
CALL UF_IST ; CHAR WAITING?
@ -62,7 +76,7 @@ UF_OUT:
XOR A ; SIGNAL SUCCESS
RET
;
; INPUT STATUS - CAN WE SEND A CHARACTERV
; INPUT STATUS - CAN WE SEND A CHARACTER
;
UF_IST:
IN A,(FIFO_STATUS) ; IS THE QUEUE EMPTY?
@ -81,7 +95,7 @@ UF_OST:
;
; INITIALIZATION THE SETUP PARAMETER WORD AND INITIALIZE DEVICE
; SAVE NEW SPW IF NOT A RE-INIT. ALWAYS INITIALIZE DEVICE.
; SPW IS NOT VAIDATED BUT IT IS USED FOR ANYTHING.
; SPW IS NOT VAIDATED BUT IT IS NOT USED FOR ANYTHING.
;
UF_INITDEV:
;
@ -91,30 +105,27 @@ UF_INITDEV:
INC A ; ... SO Z SET IF -1
JR NZ,UF_INITDEV1 ; IF DE == -1, REINIT CURRENT CONFIG
;
; GET CURRENT PSW BECAUSE WE ALWAYS RESAVE AT END
; GET CURRENT PSW. WE ALWAYS RESAVE AT END
LD E,(IY+0) ; LOW BYTE
LD D,(IY+1) ; HIGH BYTE
;
UF_INITDEV1:
XOR A ; INTERRUPTS OFF
OR 00110000B
OUT (FIFO_STATUS),A
;
UF_FLUSH:
IN A,(FIFO_STATUS) ; IS THERE ANY DATA
RLCA ; IN THE BUFFER ?
JR C,UFBUFEMPTY ; EXIT IF EMPTY
;
IN A,(FIFO_DATA) ; CLEAR BUFFER BY READING
JR UF_FLUSH ; ALL THE DATA
UFBUFEMPTY:
LD (IY + 0),E ; SAVE LOW WORD
LD (IY + 1),D ; SAVE HI WORD
RET ; NZ STATUS HERE INDICATES FAIL.
;
; USB-FIFO WILL A SERIAL DEVICE AT DEFAULT SERIAL MODE
; USB-FIFO WILL APPEAR AS A SERIAL DEVICE AT DEFAULT SERIAL MODE
;
UF_QUERY:
LD E,(IY+0) ; FIRST CONFIG BYTE TO E
@ -137,18 +148,6 @@ UF_DETECT:
LD A,1 ; 0 = NONE
RET
;
; ANNOUNCE DEVICE DESCRIPTION AND PORT
;
UF_PRTCFG:
CALL NEWLINE
PRTS("USB-FIFO: IO=0x$") ; PRINT DEVICE
LD A,FIFO_BASE
CALL PRTHEXBYTE ; PRINT PORT
;
XOR A
RET
;
; DRIVER FUNCTION TABLE
;
UF_FNTBL:
@ -163,16 +162,3 @@ UF_FNTBL:
.ECHO "*** INVALID SIO FUNCTION TABLE ***\n"
#ENDIF
;
; DEVICE DESCRIPTION
;
UF_TYPE_MAP:
.DW UF_STR_NONE
.DW UF_STR_UF
UF_STR_NONE .DB "<NOT PRESENT>$"
UF_STR_UF .DB "USB-FIFO$"
;
; DEVICE DESCRIPTION TABLE
;
UF_CFG: .DW DEFSIOACFG ; LINE CONFIGURATION
;

Loading…
Cancel
Save