Browse Source

Hardware Probing Conflicts, Issue #536

Mitigate issue where a hardware probe can corrupt the programming of a previously discovered device.
pull/539/head v3.5.1-rc.2
Wayne Warthen 9 months ago
parent
commit
5118ab8d0a
No known key found for this signature in database GPG Key ID: 8B34ED29C07EEB0A
  1. 61
      Source/HBIOS/hbios.asm
  2. 2
      Source/ver.inc
  3. 2
      Source/ver.lib

61
Source/HBIOS/hbios.asm

@ -2950,6 +2950,46 @@ NXTMIO: LD A,(HL)
#ENDIF
;
;--------------------------------------------------------------------------------------------------
; ENABLE INTERRUPTS
;--------------------------------------------------------------------------------------------------
;
#IFDEF TESTING
;
INTTEST:
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
LD A,I
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
PRTX(STR_INTWARN) ; WARNING
JR INTTEST_Z ; CONTINUE
;
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
;
INTTEST_Z:
;
#ENDIF
;
HB_EI ; INTERRUPTS SHOULD BE OK NOW
;
; PERFORM A RESET OPERATION ON ALL CHARACTER DEVICES THAT HAVE BEEN
; INSTALLED. THIS SHOULD CORRECT ANY PROBLEMS IF A PROBE DESTROYED
; THE PROGRAMMING OF ANOTHER DEVICE.
;
LD A,(CIO_CNT) ; NUMBER OF CHARACTER DEVICES
OR A ; CHECK FOR ZERO TO AVOID CRASHING
JR Z,HB_CHRES_Z ; BYPASS IF NONE
LD B,A ; SETUP LOOP COUNTER
LD C,0 ; DEVICE INDEX
HB_CHRES:
PUSH BC ; SAVE LOOP CONTROL
LD B,BF_CIOINIT ; HBIOS RESET FUNCTION
LD DE,$FFFF ; NO CONFIG CHANGES
CALL CIO_DISPATCH ; CALL CIO DISPATCHER DIRECTLY
POP BC ; RECOVER LOOP CONTROL
INC C ; NEXT DEVICE
DJNZ HB_CHRES ; LOOP AS NEEDED
HB_CHRES_Z:
;
;--------------------------------------------------------------------------------------------------
; ANNOUNCE HBIOS
;--------------------------------------------------------------------------------------------------
;
@ -3053,27 +3093,6 @@ HB_SPDTST:
#ENDIF
;
;--------------------------------------------------------------------------------------------------
; ENABLE INTERRUPTS
;--------------------------------------------------------------------------------------------------
;
#IFDEF TESTING
;
INTTEST:
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
LD A,I
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
PRTX(STR_INTWARN) ; WARNING
JR INTTEST_Z ; CONTINUE
;
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
;
INTTEST_Z:
;
#ENDIF
;
HB_EI ; INTERRUPTS SHOULD BE OK NOW
;
;--------------------------------------------------------------------------------------------------
; DISPLAY PLATFORM INFORMATION
;--------------------------------------------------------------------------------------------------
;

2
Source/ver.inc

@ -2,7 +2,7 @@
#DEFINE RMN 5
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.5.1-rc.1"
#DEFINE BIOSVER "3.5.1-rc.2"
#define rmj RMJ
#define rmn RMN
#define rup RUP

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 5
rup equ 1
rtp equ 0
biosver macro
db "3.5.1-rc.1"
db "3.5.1-rc.2"
endm

Loading…
Cancel
Save