From f74cec7516ad11cec1c5d4f441d6af04fe1e13c5 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sat, 4 Jan 2025 17:24:32 +0800 Subject: [PATCH] CVDU hang on probe issues ECB SBC hangs if no CVDU card is installed. Added timeout. --- Source/HBIOS/cvdu.asm | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index 92ce2c28..0d971a7f 100644 --- a/Source/HBIOS/cvdu.asm +++ b/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