mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Finalize v2.9.1 Prerelease 9
Stability fixes.
This commit is contained in:
@@ -47,6 +47,8 @@ SIOB_DAT .EQU SIOBASE + $05
|
||||
SIO_PREINIT:
|
||||
;
|
||||
; SETUP THE DISPATCH TABLE ENTRIES
|
||||
; NOTE: INTS WILL BE DISABLED WHEN PREINIT IS CALLED AND THEY MUST REMIAIN
|
||||
; DISABLED.
|
||||
;
|
||||
LD B,SIO_CNT ; LOOP CONTROL
|
||||
LD C,0 ; PHYSICAL UNIT INDEX
|
||||
@@ -115,7 +117,9 @@ SIO_INITUNIT:
|
||||
|
||||
; SET DEFAULT CONFIG
|
||||
LD DE,-1 ; LEAVE CONFIG ALONE
|
||||
JP SIO_INITDEV ; IMPLEMENT IT AND RETURN
|
||||
; CALL INITDEVX TO IMPLEMENT CONFIG, BUT NOTE THAT WE CALL
|
||||
; THE INITDEVX ENTRY POINT THAT DOES NOT ENABLE/DISABLE INTS!
|
||||
JP SIO_INITDEVX ; IMPLEMENT IT AND RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
@@ -164,7 +168,8 @@ SIOA_INT00:
|
||||
LD E,A ; SAVE BYTE READ
|
||||
LD A,(SIOA_CNT) ; GET CURRENT BUFFER USED COUNT
|
||||
CP SIOA_BUFSZ ; COMPARE TO BUFFER SIZE
|
||||
RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
;RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
JR Z,SIOA_INT2 ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
INC A ; INCREMENT THE COUNT
|
||||
LD (SIOA_CNT),A ; AND SAVE IT
|
||||
CP SIOA_BUFSZ - 5 ; BUFFER GETTING FULL?
|
||||
@@ -185,6 +190,7 @@ SIOA_INT1:
|
||||
INC HL ; INCREMENT HEAD POINTER
|
||||
LD (SIOA_HD),HL ; SAVE IT
|
||||
;
|
||||
SIOA_INT2:
|
||||
; CHECK FOR MORE PENDING...
|
||||
XOR A ; A := 0
|
||||
OUT (SIOA_CMD),A ; ADDRESS RD0
|
||||
@@ -208,7 +214,8 @@ SIOB_INT00:
|
||||
LD E,A ; SAVE BYTE READ
|
||||
LD A,(SIOB_CNT) ; GET CURRENT BUFFER USED COUNT
|
||||
CP SIOB_BUFSZ ; COMPARE TO BUFFER SIZE
|
||||
RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
;RET Z ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
JR Z,SIOB_INT2 ; BAIL OUT IF BUFFER FULL, RCV BYTE DISCARDED
|
||||
INC A ; INCREMENT THE COUNT
|
||||
LD (SIOB_CNT),A ; AND SAVE IT
|
||||
CP SIOB_BUFSZ - 5 ; BUFFER GETTING FULL?
|
||||
@@ -229,6 +236,7 @@ SIOB_INT1:
|
||||
INC HL ; INCREMENT HEAD POINTER
|
||||
LD (SIOB_HD),HL ; SAVE IT
|
||||
;
|
||||
SIOB_INT2:
|
||||
; CHECK FOR MORE PENDING...
|
||||
XOR A ; A := 0
|
||||
OUT (SIOB_CMD),A ; ADDRESS RD0
|
||||
@@ -418,7 +426,20 @@ SIO_OST:
|
||||
; MARK & SPACE PARITY AND 1.5 STOP BITS IS NOT SUPPORTED BY THE SIO.
|
||||
; INITIALIZATION WILL NOT BE COMPLETED IF AN INVALID SETTING IS DETECTED.
|
||||
;
|
||||
; NOTE THAT THERE ARE TWO ENTRY POINTS. INITDEV WILL DISABLE/ENABLE INTS
|
||||
; AND INITDEVX WILL NOT. THIS IS DONE SO THAT THE PREINIT ROUTINE ABOVE
|
||||
; CAN AVOID ENABLING/DISABLING INTS.
|
||||
;
|
||||
SIO_INITDEV:
|
||||
HB_DI ; DISABLE INTS
|
||||
CALL SIO_INITDEVX ; DO THE WORK
|
||||
HB_EI ; INTS BACK ON
|
||||
RET ; DONE
|
||||
;
|
||||
SIO_INITDEVX:
|
||||
;
|
||||
; THIS ENTRY POINT BYPASSES DISABLING/ENABLING INTS WHICH IS REQUIRED BY
|
||||
; PREINIT ABOVE. PREINIT IS NOT ALLOWED TO ENABLE INTS!
|
||||
;
|
||||
; TEST FOR -1 WHICH MEANS USE CURRENT CONFIG (JUST REINIT)
|
||||
LD A,D ; TEST DE FOR
|
||||
@@ -547,8 +568,6 @@ BROK:
|
||||
|
||||
LD (IY+4),E ; SAVE LOW WORD
|
||||
LD (IY+5),D ; SAVE HI WORD
|
||||
|
||||
HB_DI ; AVOID CONFLICTS
|
||||
;
|
||||
; PROGRAM THE SIO CHIP CHANNEL
|
||||
LD C,(IY+3) ; COMMAND PORT
|
||||
@@ -580,7 +599,6 @@ BROK:
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
HB_EI ; READY FOR INTS AGAIN
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; RETURN
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user