Browse Source

CVDU hang on probe issues

ECB SBC hangs if no CVDU card is installed. Added timeout.
pull/486/head
b1ackmai1er 1 year ago
parent
commit
f74cec7516
  1. 31
      Source/HBIOS/cvdu.asm

31
Source/HBIOS/cvdu.asm

@ -10,7 +10,6 @@
; - IMPLEMENT SET CURSOR STYLE (VDASCS) FUNCTION
; - IMPLEMENT ALTERNATE DISPLAY MODES?
; - IMPLEMENT DYNAMIC READ/WRITE OF CHARACTER BITMAP DATA?
; - IMPLEMENT TIMEOUT ON PROBE
;
;======================================================================
; CVDU DRIVER - CONSTANTS
@ -293,12 +292,18 @@ CVDU_VDARDC:
;
CVDU_WR:
PUSH AF ; SAVE VALUE TO WRITE
PUSH BC ;
LD A,C ; SET A TO CVDU REGISTER TO SELECT
OUT (CVDU_REG),A ; WRITE IT TO SELECT THE REGISTER
LD B,0
CVDU_WR1:
IN A,(CVDU_STAT) ; GET CVDU STATUS
BIT 7,A ; CHECK BIT 7
JR Z,CVDU_WR1 ; LOOP WHILE NOT READY (BIT 7 NOT SET)
JR NZ,CVDU_WRR ; EXIT WHEN READY (BIT 7 SET)
DJNZ CVDU_WR1
; ; IF WE GET HERE WE HAVE TIMED OUT
CVDU_WRR:
POP BC
POP AF ; RESTORE VALUE TO WRITE
OUT (CVDU_DATA),A ; WRITE IT
RET
@ -320,20 +325,26 @@ CVDU_WRX:
CVDU_RD:
LD A,C ; SET A TO CVDU REGISTER TO SELECT
OUT (CVDU_REG),A ; WRITE IT TO SELECT THE REGISTER
PUSH BC
LD B,0
CVDU_RD1:
IN A,(CVDU_STAT) ; GET CVDU STATUS
BIT 7,A ; CHECK BIT 7
JR Z,CVDU_RD1 ; LOOP WHILE NOT READY (BIT 7 NOT SET)
JR NZ,CVDU_RDR ; EXIT WHEN READY (BIT 7 SET)
DJNZ CVDU_RD1
; ; IF WE GET HERE WE HAVE TIMED OUT
CVDU_RDR:
IN A,(CVDU_DATA) ; READ IT
POP BC
RET
;
CVDU_RDX:
CALL CVDU_RD ; GET VALUE FROM REGISTER IN C
LD H,A ; SAVE IN H
INC C ; BUMP TO NEXT REGISTER OF PAIR
CALL CVDU_RD ; READ THE VALUE
LD L,A ; SAVE IT IN L
RET
;CVDU_RDX:
; CALL CVDU_RD ; GET VALUE FROM REGISTER IN C
; LD H,A ; SAVE IN H
; INC C ; BUMP TO NEXT REGISTER OF PAIR
; CALL CVDU_RD ; READ THE VALUE
; LD L,A ; SAVE IT IN L
; RET
;
;----------------------------------------------------------------------
; PROBE FOR CVDU HARDWARE

Loading…
Cancel
Save