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