Finalize v2.9.1 Prerelease 9

Stability fixes.
This commit is contained in:
Wayne Warthen
2019-02-19 13:41:14 -08:00
parent 931d33eb11
commit 0fe4c5e6f8
9 changed files with 96 additions and 46 deletions

View File

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