|
|
@ -50,11 +50,13 @@ CVDU_COLS .EQU 80 |
|
|
#IF (CVDUMON == CVDUMON_CGA) |
|
|
#IF (CVDUMON == CVDUMON_CGA) |
|
|
#DEFINE USEFONT8X8 |
|
|
#DEFINE USEFONT8X8 |
|
|
#DEFINE CVDU_FONT FONT8X8 |
|
|
#DEFINE CVDU_FONT FONT8X8 |
|
|
|
|
|
CVDU_FONTID .EQU FONTID_8X8 |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
#IF (CVDUMON == CVDUMON_EGA) |
|
|
#IF (CVDUMON == CVDUMON_EGA) |
|
|
#DEFINE USEFONT8X16 |
|
|
#DEFINE USEFONT8X16 |
|
|
#DEFINE CVDU_FONT FONT8X16 |
|
|
#DEFINE CVDU_FONT FONT8X16 |
|
|
|
|
|
CVDU_FONTID .EQU FONTID_8X16 |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER |
|
|
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER |
|
|
@ -105,6 +107,7 @@ CVDU_INIT1: |
|
|
CALL PRTDEC |
|
|
CALL PRTDEC |
|
|
PRTS("KB$") |
|
|
PRTS("KB$") |
|
|
CALL CVDU_LOADFONT ; LOAD FONT DATA FROM ROM TO CVDU STRORAGE |
|
|
CALL CVDU_LOADFONT ; LOAD FONT DATA FROM ROM TO CVDU STRORAGE |
|
|
|
|
|
; *** DIAGNOSE FONT LOAD ERROR HERE!!! *** |
|
|
CALL CVDU_VDAINI |
|
|
CALL CVDU_VDAINI |
|
|
CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER |
|
|
CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER |
|
|
|
|
|
|
|
|
@ -494,48 +497,35 @@ CVDU_LOADFONT: |
|
|
LD HL,$2000 ; START OF FONT BUFFER |
|
|
LD HL,$2000 ; START OF FONT BUFFER |
|
|
LD C,18 ; UPDATE ADDRESS REGISTER PAIR |
|
|
LD C,18 ; UPDATE ADDRESS REGISTER PAIR |
|
|
CALL CVDU_WRX ; DO IT |
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
#IF USELZSA2 |
|
|
|
|
|
LD (CVDU_STACK),SP ; SAVE STACK |
|
|
|
|
|
LD HL,(CVDU_STACK) ; AND SHIFT IT |
|
|
|
|
|
LD DE,$2000 ; DOWN 4KB TO |
|
|
|
|
|
OR A ; CREATE A |
|
|
|
|
|
SBC HL,DE ; DECOMPRESSION BUFFER |
|
|
|
|
|
LD SP,HL ; HL POINTS TO BUFFER |
|
|
|
|
|
EX DE,HL ; START OF STACK BUFFER |
|
|
|
|
|
PUSH DE ; SAVE IT |
|
|
|
|
|
LD HL,CVDU_FONT ; START OF FONT DATA |
|
|
|
|
|
CALL DLZSA2 ; DECOMPRESS TO DE |
|
|
|
|
|
POP HL ; RECALL STACK BUFFER POSITION |
|
|
|
|
|
#ELSE |
|
|
|
|
|
LD HL,CVDU_FONT ; START OF FONT DATA |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
LD A,CVDU_FONTID ; DESIRED FONT |
|
|
|
|
|
CALL FNT_SELECT ; SELECT IT |
|
|
|
|
|
RET NZ ; ERROR RETURN |
|
|
|
|
|
; |
|
|
LD DE,$2000 ; LENGTH OF FONT DATA |
|
|
LD DE,$2000 ; LENGTH OF FONT DATA |
|
|
LD C,31 ; DATA REGISTER |
|
|
LD C,31 ; DATA REGISTER |
|
|
|
|
|
; |
|
|
CVDU_LOADFONT1: |
|
|
CVDU_LOADFONT1: |
|
|
LD A,(HL) ; LOAD NEXT BYTE OF FONT DATA |
|
|
|
|
|
CALL CVDU_WR ; WRITE IT |
|
|
|
|
|
|
|
|
; |
|
|
DEC DE ; DECREMENT LOOP COUNTER |
|
|
DEC DE ; DECREMENT LOOP COUNTER |
|
|
#IF (CVDUMON == CVDUMON_CGA) |
|
|
#IF (CVDUMON == CVDUMON_CGA) |
|
|
; SKIP ALTERNATING 8 BYTE PAIRS (SEE COMMENT ABOVE) |
|
|
; SKIP ALTERNATING 8 BYTE PAIRS (SEE COMMENT ABOVE) |
|
|
|
|
|
; WE ONLY GET NEXT REAL FONT BYTE IF BIT 3 OF COUNTER IS SET. |
|
|
BIT 3,E ; BIT 3 CHANGES WITH EVERY 8 BYTES |
|
|
BIT 3,E ; BIT 3 CHANGES WITH EVERY 8 BYTES |
|
|
JR Z,CVDU_LOADFONT2 ; WHEN ZERO, DON'T INC FONT PTR |
|
|
|
|
|
|
|
|
CALL NZ,FNT_NEXT ; LOAD NEXT FONT BYTE ONLY IF BIT IS ON |
|
|
|
|
|
#ELSE |
|
|
|
|
|
CALL FNT_NEXT ; LOAD NEXT FONT BYTE |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
INC HL ; INCREMENT FONT DATA POINTER |
|
|
|
|
|
CVDU_LOADFONT2: |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
CALL CVDU_WR ; WRITE IT |
|
|
LD A,D ; CHECK DE... |
|
|
LD A,D ; CHECK DE... |
|
|
OR E ; FOR COUNTER EXHAUSTED |
|
|
OR E ; FOR COUNTER EXHAUSTED |
|
|
JR NZ,CVDU_LOADFONT1 ; LOOP TILL DONE |
|
|
|
|
|
|
|
|
|
|
|
#IF USELZSA2 |
|
|
|
|
|
LD HL,(CVDU_STACK) ; ERASE DECOMPRESS BUFFER |
|
|
|
|
|
LD SP,HL ; BY RESTORING THE STACK |
|
|
|
|
|
RET ; DONE |
|
|
|
|
|
CVDU_STACK .DW 0 |
|
|
|
|
|
#ELSE |
|
|
|
|
|
|
|
|
JR Z,CVDU_LOADFONT3 ; BAIL OUT IF DONE |
|
|
|
|
|
JR CVDU_LOADFONT1 ; LOOP TILL DONE |
|
|
|
|
|
; |
|
|
|
|
|
CVDU_LOADFONT3: |
|
|
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET |
|
|
RET |
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
; |
|
|
;---------------------------------------------------------------------- |
|
|
;---------------------------------------------------------------------- |
|
|
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E |
|
|
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E |
|
|
|