|
|
|
@ -112,11 +112,11 @@ CVDU_VDAQRY: |
|
|
|
LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDARES: |
|
|
|
LD A,$0E ; ATTRIBUTE IS STANDARD WHITE ON BLACK |
|
|
|
LD (CVDU_ATTR),A ; SAVE IT |
|
|
|
|
|
|
|
|
|
|
|
LD DE,0 ; ROW = 0, COL = 0 |
|
|
|
CALL CVDU_XY ; SEND CURSOR TO TOP LEFT |
|
|
|
LD A,' ' ; BLANK THE SCREEN |
|
|
|
@ -124,7 +124,7 @@ CVDU_VDARES: |
|
|
|
CALL CVDU_FILL ; DO IT |
|
|
|
LD DE,0 ; ROW = 0, COL = 0 |
|
|
|
CALL CVDU_XY ; SEND CURSOR TO TOP LEFT |
|
|
|
|
|
|
|
|
|
|
|
XOR A |
|
|
|
RET |
|
|
|
|
|
|
|
@ -133,15 +133,15 @@ CVDU_VDADEV: |
|
|
|
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDASCS: |
|
|
|
CALL PANIC ; NOT IMPLEMENTED (YET) |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDASCP: |
|
|
|
CALL CVDU_XY ; SET CURSOR POSITION |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDASAT: |
|
|
|
; INCOMING IS: -----RUB (R=REVERSE, U=UNDERLINE, B=BLINK) |
|
|
|
; TRANSFORM TO: -RUB---- |
|
|
|
@ -158,7 +158,7 @@ CVDU_VDASAT: |
|
|
|
LD (CVDU_ATTR),A ; AND SAVE THE RESULT |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDASCO: |
|
|
|
; INCOMING IS: IBGRIBGR (I=INTENSITY, B=BLUE, G=GREEN, R=RED) |
|
|
|
; TRANSFORM TO: ----RGBI (DISCARD BACKGROUND COLOR IN HIGH NIBBLE) |
|
|
|
@ -175,13 +175,13 @@ CVDU_VDASCO1: |
|
|
|
LD (CVDU_ATTR),A ; AND SAVE THE RESULT |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDAWRC: |
|
|
|
LD A,E ; CHARACTER TO WRITE GOES IN A |
|
|
|
CALL CVDU_PUTCHAR ; PUT IT ON THE SCREEN |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDAFIL: |
|
|
|
LD A,E ; FILL CHARACTER GOES IN A |
|
|
|
EX DE,HL ; FILL LENGTH GOES IN DE |
|
|
|
@ -197,7 +197,7 @@ CVDU_VDACPY: |
|
|
|
POP BC ; RECOVER LENGTH IN BC |
|
|
|
LD DE,(CVDU_POS) ; PUT DEST IN DE |
|
|
|
JP CVDU_BLKCPY ; DO A BLOCK COPY |
|
|
|
|
|
|
|
|
|
|
|
CVDU_VDASCR: |
|
|
|
LD A,E ; LOAD E INTO A |
|
|
|
OR A ; SET FLAGS |
|
|
|
@ -246,7 +246,7 @@ CVDU_WRX: |
|
|
|
;---------------------------------------------------------------------- |
|
|
|
; READ M8563 REGISTERS |
|
|
|
; CVDU_RD READS VDU REGISTER SPECIFIED IN C AND RETURNS VALUE IN A |
|
|
|
; CVDU_RDX READS VDU REGISTER PAIR SPECIFIED BY C, C+1 |
|
|
|
; CVDU_RDX READS VDU REGISTER PAIR SPECIFIED BY C, C+1 |
|
|
|
; AND RETURNS VALUE IN HL |
|
|
|
;---------------------------------------------------------------------- |
|
|
|
; |
|
|
|
@ -317,7 +317,7 @@ CVDU_CRTINIT1: |
|
|
|
; ASSUMES THAT VDU RAM SIZE IS SET FOR 64KB ABOVE |
|
|
|
; A. WRITE ZERO TO ADDRESS $0000 |
|
|
|
; B. WRITE NON-ZERO TO ADDRESS $0100 |
|
|
|
; C. CHECK THE VALUE IN ADDRESS $0000; IF IT CHANGED, |
|
|
|
; C. CHECK THE VALUE IN ADDRESS $0000; IF IT CHANGED, |
|
|
|
; 16K DRAM CHIPS INSTALLED; IF NOT, 64K DRAM CHIPS INSTALLED |
|
|
|
; IF 16KB RAM DETECTED, ADJUST VDU REGISTERS APPROPRIATELY |
|
|
|
; |
|
|
|
@ -367,7 +367,7 @@ CVDU_LOADFONT: |
|
|
|
LD (CVDU_STACK),SP ; SAVE STACK |
|
|
|
LD HL,(CVDU_STACK) ; AND SHIFT IT |
|
|
|
LD DE,$2000 ; DOWN 4KB TO |
|
|
|
CCF ; CREATE A |
|
|
|
CCF ; CREATE A |
|
|
|
SBC HL,DE ; DECOMPRESSION BUFFER |
|
|
|
LD SP,HL ; HL POINTS TO BUFFER |
|
|
|
EX DE,HL ; START OF STACK BUFFER |
|
|
|
@ -475,19 +475,19 @@ CVDU_FILL: |
|
|
|
POP DE ; RECOVER FILL COUNT |
|
|
|
LD A,(CVDU_ATTR) ; SET ATTRIBUTE VALUE FOR ATTRIBUTE FILL |
|
|
|
JR CVDU_FILL1 ; DO ATTRIBUTE FILL AND RETURN |
|
|
|
|
|
|
|
|
|
|
|
CVDU_FILL1: |
|
|
|
LD B,A ; SAVE REQUESTED FILL VALUE |
|
|
|
|
|
|
|
|
|
|
|
; CHECK FOR VALID FILL LENGTH |
|
|
|
LD A,D ; LOAD D |
|
|
|
OR E ; OR WITH E |
|
|
|
RET Z ; BAIL OUT IF LENGTH OF ZERO SPECIFIED |
|
|
|
|
|
|
|
|
|
|
|
; POINT TO BUFFER LOCATION TO START FILL |
|
|
|
LD C,18 ; UPDATE ADDRESS REGISTER PAIR |
|
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK WRITE |
|
|
|
LD C,24 ; BLOCK MODE CONTROL REGISTER |
|
|
|
CALL CVDU_RD ; GET CURRENT VALUE |
|
|
|
@ -499,7 +499,7 @@ CVDU_FILL1: |
|
|
|
LD C,31 ; DATA REGISTER |
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
DEC DE ; REFLECT ONE CHARACTER WRITTEN |
|
|
|
|
|
|
|
|
|
|
|
; LOOP TO DO BULK WRITE (UP TO 255 BYTES PER LOOP) |
|
|
|
EX DE,HL ; NOW USE HL FOR COUNT |
|
|
|
LD C,30 ; BYTE COUNT REGISTER |
|
|
|
@ -527,7 +527,7 @@ CVDU_SCROLL: |
|
|
|
LD A,' ' ; CHAR VALUE TO FILL NEW EXPOSED LINE |
|
|
|
LD HL,0 ; SOURCE ADDRESS OF CHARACER BUFFER |
|
|
|
CALL CVDU_SCROLL1 ; SCROLL CHARACTER BUFFER |
|
|
|
|
|
|
|
|
|
|
|
; SCROLL THE ATTRIBUTE BUFFER |
|
|
|
LD A,(CVDU_ATTR) ; ATTRIBUTE VALUE TO FILL NEW EXPOSED LINE |
|
|
|
LD HL,$800 ; SOURCE ADDRESS OF ATTRIBUTE BUFFER |
|
|
|
@ -535,7 +535,7 @@ CVDU_SCROLL: |
|
|
|
|
|
|
|
CVDU_SCROLL1: |
|
|
|
PUSH AF ; SAVE FILL VALUE FOR NOW |
|
|
|
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK COPY |
|
|
|
LD C,24 ; BLOCK MODE CONTROL REGISTER |
|
|
|
CALL CVDU_RD ; GET CURRENT VALUE |
|
|
|
@ -563,13 +563,13 @@ CVDU_SCROLL2: |
|
|
|
|
|
|
|
; LOOP TILL DONE WITH ALL LINES |
|
|
|
DJNZ CVDU_SCROLL2 ; REPEAT FOR ALL LINES |
|
|
|
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK WRITE TO CLEAR NEW LINE EXPOSED BY SCROLL |
|
|
|
LD C,24 ; BLOCK MODE CONTROL REGISTER |
|
|
|
CALL CVDU_RD ; GET CURRENT VALUE |
|
|
|
AND $7F ; CLEAR BIT 7 FOR FILL MODE |
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
; SET VALUE TO WRITE |
|
|
|
POP AF ; RESTORE THE FILL VALUE PASSED IN |
|
|
|
LD C,31 ; DATA REGISTER |
|
|
|
@ -579,7 +579,7 @@ CVDU_SCROLL2: |
|
|
|
LD A,CVDU_COLS - 1 ; SET WRITE COUNT TO LINE LENGTH - 1 (1 CHAR ALREADY WRITTEN) |
|
|
|
LD C,30 ; WORD COUNT REGISTER |
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
RET |
|
|
|
; |
|
|
|
;---------------------------------------------------------------------- |
|
|
|
@ -591,7 +591,7 @@ CVDU_RSCROLL: |
|
|
|
LD A,' ' ; CHAR VALUE TO FILL NEW EXPOSED LINE |
|
|
|
LD HL,$0 + ((CVDU_ROWS - 1) * CVDU_COLS) ; SOURCE ADDRESS OF CHARACER BUFFER |
|
|
|
CALL CVDU_RSCROLL1 ; SCROLL CHARACTER BUFFER |
|
|
|
|
|
|
|
|
|
|
|
; SCROLL THE ATTRIBUTE BUFFER |
|
|
|
LD A,(CVDU_ATTR) ; ATTRIBUTE VALUE TO FILL NEW EXPOSED LINE |
|
|
|
LD HL,$800 + ((CVDU_ROWS - 1) * CVDU_COLS) ; SOURCE ADDRESS OF ATTRIBUTE BUFFER |
|
|
|
@ -599,7 +599,7 @@ CVDU_RSCROLL: |
|
|
|
|
|
|
|
CVDU_RSCROLL1: |
|
|
|
PUSH AF ; SAVE FILL VALUE FOR NOW |
|
|
|
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK COPY |
|
|
|
LD C,24 ; BLOCK MODE CONTROL REGISTER |
|
|
|
CALL CVDU_RD ; GET CURRENT VALUE |
|
|
|
@ -629,7 +629,7 @@ CVDU_RSCROLL2: |
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
DJNZ CVDU_RSCROLL2 ; REPEAT FOR ALL LINES |
|
|
|
|
|
|
|
|
|
|
|
; SET FILL DESTINATION (USING HL PASSED IN) |
|
|
|
LD C,18 ; UPDATE ADDRESS (DESTINATION) REGISTER |
|
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
@ -639,7 +639,7 @@ CVDU_RSCROLL2: |
|
|
|
CALL CVDU_RD ; GET CURRENT VALUE |
|
|
|
AND $7F ; CLEAR BIT 7 FOR FILL MODE |
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
; SET VALUE TO WRITE |
|
|
|
POP AF ; RESTORE THE FILL VALUE PASSED IN |
|
|
|
LD C,31 ; DATA REGISTER |
|
|
|
@ -649,7 +649,7 @@ CVDU_RSCROLL2: |
|
|
|
LD A,CVDU_COLS - 1 ; SET WRITE COUNT TO LINE LENGTH - 1 (1 CHAR ALREADY WRITTEN) |
|
|
|
LD C,30 ; WORD COUNT REGISTER |
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
RET |
|
|
|
; |
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|