|
|
@ -1,78 +1,78 @@ |
|
|
;__CVDUDRIVER_______________________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
|
|
|
;====================================================================== |
|
|
; COLOR VDU DRIVER FOR N8VEM PROJECT |
|
|
; COLOR VDU DRIVER FOR N8VEM PROJECT |
|
|
; |
|
|
; |
|
|
; WRITTEN BY: DAN WERNER -- 11/4/2011 |
|
|
; WRITTEN BY: DAN WERNER -- 11/4/2011 |
|
|
; REMAINDER WRITTEN BY: DAN WERNER -- 11/7/2009 |
|
|
|
|
|
; ROMWBW ADAPTATION BY: WAYNE WARTHEN -- 11/9/2012 |
|
|
; ROMWBW ADAPTATION BY: WAYNE WARTHEN -- 11/9/2012 |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; |
|
|
|
|
|
; TODO: |
|
|
|
|
|
; - IMPLEMENT CONSTANTS FOR SCREEN DIMENSIONS |
|
|
|
|
|
; - IMPLEMENT SET CURSOR STYLE (VDASCS) FUNCTION |
|
|
|
|
|
; - IMPLEMENT ALTERNATE DISPLAY MODES? |
|
|
|
|
|
; - IMPLEMENT DYNAMIC READ/WRITE OF CHARACTER BITMAP DATA? |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
; DATA CONSTANTS |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; CVDU DRIVER - CONSTANTS |
|
|
|
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
CVDU_STAT .EQU $E4 ; READ M8563 STATUS |
|
|
CVDU_STAT .EQU $E4 ; READ M8563 STATUS |
|
|
CVDU_REG .EQU $E4 ; SELECT M8563 REGISTER |
|
|
CVDU_REG .EQU $E4 ; SELECT M8563 REGISTER |
|
|
CVDU_DATA .EQU $EC ; READ/WRITE M8563 DATA |
|
|
CVDU_DATA .EQU $EC ; READ/WRITE M8563 DATA |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
; BOARD INITIALIZATION |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; CVDU DRIVER - INITIALIZATION |
|
|
|
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
CVDU_INIT: |
|
|
CVDU_INIT: |
|
|
CALL CVDU_CRTINIT |
|
|
|
|
|
CALL CVDU_LOADFONT |
|
|
|
|
|
|
|
|
CALL CVDU_CRTINIT ; SETUP THE CVDU CHIP REGISTERS |
|
|
|
|
|
CALL CVDU_LOADFONT ; LOAD FONT DATA FROM ROM TO CVDU STRORAGE |
|
|
|
|
|
|
|
|
CVDU_RESET: |
|
|
CVDU_RESET: |
|
|
LD A,14 |
|
|
|
|
|
LD (CVDU_ATTR),A |
|
|
|
|
|
XOR A |
|
|
|
|
|
LD (CVDU_X),A |
|
|
|
|
|
LD (CVDU_Y),A |
|
|
|
|
|
LD DE,0 |
|
|
|
|
|
LD (CVDU_DISPLAYPOS),DE |
|
|
|
|
|
|
|
|
LD A,$0E ; ATTRIBUTE IS STANDARD WHITE ON BLACK |
|
|
|
|
|
LD (CVDU_ATTR),A ; SAVE IT |
|
|
|
|
|
|
|
|
LD A,'#' |
|
|
|
|
|
LD DE,$800 |
|
|
|
|
|
CALL CVDU_FILL |
|
|
|
|
|
CALL CVDU_XY |
|
|
|
|
|
|
|
|
LD A,'#' ; BLANK THE SCREEN |
|
|
|
|
|
LD DE,$800 ; FILL ENTIRE BUFFER |
|
|
|
|
|
CALL CVDU_FILL ; DO IT |
|
|
|
|
|
LD DE,0 ; ROW = 0, COL = 0 |
|
|
|
|
|
CALL CVDU_XY ; SEND CURSOR TO TOP LEFT |
|
|
|
|
|
|
|
|
XOR A |
|
|
|
|
|
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
; CHARACTER I/O (CIO) FUNCTION JUMP TABLE |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; CVDU DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS |
|
|
|
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
CVDU_DISPCIO: |
|
|
CVDU_DISPCIO: |
|
|
LD A,B ; GET REQUESTED FUNCTION |
|
|
|
|
|
AND $0F ; ISOLATE SUB-FUNCTION |
|
|
|
|
|
JR Z,CVDU_CIOIN |
|
|
|
|
|
|
|
|
LD A,B ; GET REQUESTED FUNCTION |
|
|
|
|
|
AND $0F ; ISOLATE SUB-FUNCTION |
|
|
|
|
|
JR Z,CVDU_CIOIN ; $00 |
|
|
DEC A |
|
|
DEC A |
|
|
JR Z,CVDU_CIOOUT |
|
|
|
|
|
|
|
|
JR Z,CVDU_CIOOUT ; $01 |
|
|
DEC A |
|
|
DEC A |
|
|
JR Z,CVDU_CIOIST |
|
|
|
|
|
|
|
|
JR Z,CVDU_CIOIST ; $02 |
|
|
DEC A |
|
|
DEC A |
|
|
JR Z,CVDU_CIOOST |
|
|
|
|
|
|
|
|
JR Z,CVDU_CIOOST ; $03 |
|
|
CALL PANIC |
|
|
CALL PANIC |
|
|
; |
|
|
; |
|
|
CVDU_CIOIN: |
|
|
CVDU_CIOIN: |
|
|
JP KBD_READ |
|
|
|
|
|
|
|
|
JP KBD_READ ; CHAIN TO KEYBOARD DRIVER |
|
|
; |
|
|
; |
|
|
CVDU_CIOIST: |
|
|
CVDU_CIOIST: |
|
|
JP KBD_STAT |
|
|
|
|
|
|
|
|
JP KBD_STAT ; CHAIN TO KEYBOARD DRIVER |
|
|
; |
|
|
; |
|
|
CVDU_CIOOUT: |
|
|
CVDU_CIOOUT: |
|
|
JP CVDU_VDAWRC |
|
|
|
|
|
|
|
|
JP CVDU_VDAWRC ; WRITE CHARACTER |
|
|
; |
|
|
; |
|
|
CVDU_CIOOST: |
|
|
CVDU_CIOOST: |
|
|
XOR A |
|
|
|
|
|
INC A |
|
|
|
|
|
|
|
|
XOR A ; A = 0 |
|
|
|
|
|
INC A ; A = 1, SIGNAL OUTPUT BUFFER READY |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
; VIDEO DISPLAY ADAPTER (VDA) FUNCTION JUMP TABLE |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; CVDU DRIVER - VIDEO DISPLAY ADAPTER (VDA) DISPATCHER AND FUNCTIONS |
|
|
|
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
CVDU_DISPVDA: |
|
|
CVDU_DISPVDA: |
|
|
LD A,B ; GET REQUESTED FUNCTION |
|
|
LD A,B ; GET REQUESTED FUNCTION |
|
|
@ -118,17 +118,13 @@ CVDU_VDAQRY: |
|
|
RET |
|
|
RET |
|
|
|
|
|
|
|
|
CVDU_VDARES: |
|
|
CVDU_VDARES: |
|
|
JP CVDU_RESET |
|
|
|
|
|
|
|
|
JP CVDU_RESET ; DO THE RESET |
|
|
|
|
|
|
|
|
CVDU_VDASCS: |
|
|
CVDU_VDASCS: |
|
|
CALL PANIC ; NOT IMPLEMENTED (YET) |
|
|
CALL PANIC ; NOT IMPLEMENTED (YET) |
|
|
|
|
|
|
|
|
CVDU_VDASCP: |
|
|
CVDU_VDASCP: |
|
|
LD A,E ; GET E |
|
|
|
|
|
LD (CVDU_X),A ; SAVE AS COLUMN (X) |
|
|
|
|
|
LD A,D ; GET D |
|
|
|
|
|
LD (CVDU_Y),A ; SAVE AS ROW (Y) |
|
|
|
|
|
CALL CVDU_XY ; MOVE THE CURSOR |
|
|
|
|
|
|
|
|
CALL CVDU_XY ; SET CURSOR POSITION |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET |
|
|
RET |
|
|
|
|
|
|
|
|
@ -194,10 +190,14 @@ CVDU_VDASCR1: |
|
|
POP DE ; RECOVER E |
|
|
POP DE ; RECOVER E |
|
|
INC E ; INCREMENT IT |
|
|
INC E ; INCREMENT IT |
|
|
JR CVDU_VDASCR ; LOOP |
|
|
JR CVDU_VDASCR ; LOOP |
|
|
|
|
|
; |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; CVDU DRIVER - PRIVATE DRIVER FUNCTIONS |
|
|
|
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
;__CVDU_CRTINIT_____________________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; INIT 8563 VDU CHIP |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; MOS 8563 DISPLAY CONTROLLER CHIP INITIALIZATION |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
CVDU_CRTINIT: |
|
|
CVDU_CRTINIT: |
|
|
LD C,0 ; START WITH REGISTER 0 |
|
|
LD C,0 ; START WITH REGISTER 0 |
|
|
@ -211,18 +211,18 @@ CVDU_CRTINIT1: |
|
|
DJNZ CVDU_CRTINIT1 ; LOOP |
|
|
DJNZ CVDU_CRTINIT1 ; LOOP |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__CVDU_LOADFONT____________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; LOAD FONT DATA |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
; LOAD SCREEN FONT |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
CVDU_LOADFONT: |
|
|
CVDU_LOADFONT: |
|
|
LD HL,$2000 ; START OF FONT BUFFER |
|
|
LD HL,$2000 ; START OF FONT BUFFER |
|
|
LD C,18 ; SET BUFFER POINTER |
|
|
|
|
|
|
|
|
LD C,18 ; UPDATE ADDRESS REGISTER PAIR |
|
|
CALL CVDU_WRX ; DO IT |
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
LD HL,CVDU_FONTDATA ; POINTER TO FONT DATA |
|
|
LD HL,CVDU_FONTDATA ; POINTER TO FONT DATA |
|
|
LD DE,$2000 ; LENGTH OF FONT DATA |
|
|
LD DE,$2000 ; LENGTH OF FONT DATA |
|
|
LD C,31 ; WRITE DATA |
|
|
|
|
|
|
|
|
LD C,31 ; DATA REGISTER |
|
|
CVDU_LOADFONT1: |
|
|
CVDU_LOADFONT1: |
|
|
LD A,(HL) ; LOAD NEXT BYTE OF FONT DATA |
|
|
LD A,(HL) ; LOAD NEXT BYTE OF FONT DATA |
|
|
CALL CVDU_WR ; WRITE IT |
|
|
CALL CVDU_WR ; WRITE IT |
|
|
@ -233,32 +233,12 @@ CVDU_LOADFONT1: |
|
|
JR NZ,CVDU_LOADFONT1 ; LOOP TILL DONE |
|
|
JR NZ,CVDU_LOADFONT1 ; LOOP TILL DONE |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__CVDU_WREG________________________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; WRITE VALUE IN A TO REGISTER IN B |
|
|
|
|
|
; B: REGISTER TO UPDATE |
|
|
|
|
|
; A: VALUE TO WRITE |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
CVDU_WREG: |
|
|
|
|
|
PUSH AF ; STORE AF |
|
|
|
|
|
CVDU_WREG1: |
|
|
|
|
|
IN A,(CVDU_STAT) ; read address/status register |
|
|
|
|
|
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured |
|
|
|
|
|
JR Z,CVDU_WREG1 ; wait for ready |
|
|
|
|
|
LD A,B ; |
|
|
|
|
|
OUT (CVDU_REG),A ; select register |
|
|
|
|
|
CVDU_WREG2: |
|
|
|
|
|
IN A,(CVDU_STAT) ; read address/status register |
|
|
|
|
|
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured |
|
|
|
|
|
JR Z,CVDU_WREG2 ; wait for ready |
|
|
|
|
|
POP AF ; |
|
|
|
|
|
OUT (CVDU_DATA),A ; PUT DATA |
|
|
|
|
|
RET |
|
|
|
|
|
; |
|
|
|
|
|
;__CVDU_WR__________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; UPDATE M8563 REGISTERS |
|
|
|
|
|
; CVDU_WR WRITES VALUE IN A TO VDU REGISTER SPECIFIED IN C |
|
|
|
|
|
; CVDU_WRX WRITES VALUE IN DE TO VDU REGISTER PAIR IN C, C+1 |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
; WRITE VALUE IN A TO REGISTER IN C |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
CVDU_WR: |
|
|
CVDU_WR: |
|
|
PUSH AF ; SAVE VALUE TO WRITE |
|
|
PUSH AF ; SAVE VALUE TO WRITE |
|
|
LD A,C ; SET A TO CVDU REGISTER TO SELECT |
|
|
LD A,C ; SET A TO CVDU REGISTER TO SELECT |
|
|
@ -271,10 +251,6 @@ CVDU_WR1: |
|
|
OUT (CVDU_DATA),A ; WRITE IT |
|
|
OUT (CVDU_DATA),A ; WRITE IT |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__CVDU_WRX_________________________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; WRITE VALUE IN HL TO REGISTER PAIR C/C+1 |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
CVDU_WRX: |
|
|
CVDU_WRX: |
|
|
LD A,H ; SETUP MSB TO WRITE |
|
|
LD A,H ; SETUP MSB TO WRITE |
|
|
CALL CVDU_WR ; DO IT |
|
|
CALL CVDU_WR ; DO IT |
|
|
@ -282,86 +258,90 @@ CVDU_WRX: |
|
|
LD A,L ; SETUP LSB TO WRITE |
|
|
LD A,L ; SETUP LSB TO WRITE |
|
|
JR CVDU_WR ; DO IT & RETURN |
|
|
JR CVDU_WR ; DO IT & RETURN |
|
|
; |
|
|
; |
|
|
;__CVDU_GREG________________________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; GET VALUE FROM REGISTER IN B PLACE IN A |
|
|
|
|
|
; B: REGISTER TO GET |
|
|
|
|
|
; A: VALUE |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
CVDU_GREG: |
|
|
|
|
|
IN A,(CVDU_STAT) ; read address/status register |
|
|
|
|
|
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured |
|
|
|
|
|
JR Z,CVDU_GREG ; wait for ready |
|
|
|
|
|
LD A,B ; |
|
|
|
|
|
OUT (CVDU_REG) , A ; select register |
|
|
|
|
|
CVDU_GREG1: |
|
|
|
|
|
IN A,(CVDU_STAT) ; read address/status register |
|
|
|
|
|
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured |
|
|
|
|
|
JR Z,CVDU_GREG1 ; wait for ready |
|
|
|
|
|
IN A,(CVDU_DATA) ; GET DATA |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; 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 |
|
|
|
|
|
; AND RETURNS VALUE IN HL |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; |
|
|
|
|
|
CVDU_RD: |
|
|
|
|
|
LD A,C ; SET A TO CVDU REGISTER TO SELECT |
|
|
|
|
|
OUT (CVDU_REG),A ; WRITE IT TO SELECT THE REGISTER |
|
|
|
|
|
CVDU_RD1: |
|
|
|
|
|
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) |
|
|
|
|
|
IN A,(CVDU_DATA) ; READ IT |
|
|
|
|
|
RET |
|
|
; |
|
|
; |
|
|
;__CVDU_XY__________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
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 |
|
|
; |
|
|
; |
|
|
; MOVE CURSOR TO POSITON IN CVDU_X AND CVDU_Y |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
CVDU_XY: |
|
|
CVDU_XY: |
|
|
LD A,(CVDU_Y) ; GET CURRENT ROW (Y) |
|
|
|
|
|
LD H,A ; PLACE IN Y |
|
|
|
|
|
LD DE,80 ; DE := 80 (ROW LENGTH) |
|
|
|
|
|
CALL MULT8 ; HL := H * E (D IS CLEARED) |
|
|
|
|
|
LD A,(CVDU_X) ; GET CURRENT COLUMN (X) |
|
|
|
|
|
LD E,A ; PUT IN E, D IS ALREADY 0 |
|
|
|
|
|
ADD HL,DE ; ADD IN COLUMN OFFSET |
|
|
|
|
|
LD (CVDU_DISPLAYPOS),HL ; SAVE THE RESULT (DISPLAY POSITION) |
|
|
|
|
|
LD C,14 ; FUNCTION TO SET CURSOR POSITION |
|
|
|
|
|
|
|
|
LD A,E ; SAVE COLUMN NUMBER IN A |
|
|
|
|
|
LD H,D ; SET H TO ROW NUMBER |
|
|
|
|
|
LD E,80 ; SET E TO ROW LENGTH |
|
|
|
|
|
CALL MULT8 ; MULTIPLY TO GET ROW OFFSET |
|
|
|
|
|
LD E,A ; GET COLUMN BACK |
|
|
|
|
|
ADD HL,DE ; ADD IT IN |
|
|
|
|
|
LD (CVDU_POS),HL ; SAVE THE RESULT (DISPLAY POSITION) |
|
|
|
|
|
LD C,14 ; CURSOR POSITION REGISTER PAIR |
|
|
JP CVDU_WRX ; DO IT AND RETURN |
|
|
JP CVDU_WRX ; DO IT AND RETURN |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
CVDU_PUTCHAR: |
|
|
|
|
|
; |
|
|
|
|
|
; PLACE CHARACTER ON SCREEN, ADVANCE CURSOR |
|
|
|
|
|
; A: CHARACTER TO OUTPUT |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; WRITE VALULE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
|
|
|
CVDU_PUTCHAR: |
|
|
PUSH AF ; SAVE CHARACTER |
|
|
PUSH AF ; SAVE CHARACTER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; SET MEMORY LOCATION FOR CHARACTER |
|
|
; SET MEMORY LOCATION FOR CHARACTER |
|
|
LD HL,(CVDU_DISPLAYPOS) |
|
|
|
|
|
LD C,18 |
|
|
|
|
|
CALL CVDU_WRX |
|
|
|
|
|
|
|
|
LD HL,(CVDU_POS) ; LOAD CURRENT POSITION INTO HL |
|
|
|
|
|
LD C,18 ; UPDATE ADDRESS REGISTER PAIR |
|
|
|
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
; PUT THE CHARACTER THERE |
|
|
; PUT THE CHARACTER THERE |
|
|
POP AF |
|
|
|
|
|
LD C,31 |
|
|
|
|
|
CALL CVDU_WR |
|
|
|
|
|
|
|
|
POP AF ; RECOVER CHARACTER VALLUE TO WRITE |
|
|
|
|
|
LD C,31 ; DATA REGISTER |
|
|
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
; BUMP THE CURSOR FORWARD |
|
|
; BUMP THE CURSOR FORWARD |
|
|
INC HL |
|
|
|
|
|
LD (CVDU_DISPLAYPOS),HL |
|
|
|
|
|
LD C,14 |
|
|
|
|
|
CALL CVDU_WRX |
|
|
|
|
|
|
|
|
INC HL ; BUMP HL TO NEXT POSITION |
|
|
|
|
|
LD (CVDU_POS),HL ; SAVE IT |
|
|
|
|
|
LD C,14 ; CURSOR POSITION REGISTER PAIR |
|
|
|
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
; SET MEMORY LOCATION FOR ATTRIBUTE |
|
|
; SET MEMORY LOCATION FOR ATTRIBUTE |
|
|
LD DE,$800 - 1 |
|
|
|
|
|
ADD HL,DE |
|
|
|
|
|
LD C,18 |
|
|
|
|
|
CALL CVDU_WRX |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD DE,$800 - 1 ; SETUP DE TO ADD OFFSET INTO ATTRIB BUFFER |
|
|
|
|
|
ADD HL,DE ; HL NOW POINTS TO ATTRIB POS FOR CHAR JUST WRITTEN |
|
|
|
|
|
LD C,18 ; UPDATE ADDRESS REGISTER PAIR |
|
|
|
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
; PUT THE ATTRIBUTE THERE |
|
|
; PUT THE ATTRIBUTE THERE |
|
|
LD A,(CVDU_ATTR) |
|
|
|
|
|
LD C,31 |
|
|
|
|
|
JP CVDU_WR |
|
|
|
|
|
; |
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
CVDU_FILL: |
|
|
|
|
|
|
|
|
LD A,(CVDU_ATTR) ; LOAD THE ATTRIBUTE VALUE |
|
|
|
|
|
LD C,31 ; DATA REGISTER |
|
|
|
|
|
JP CVDU_WR ; DO IT AND RETURN |
|
|
; |
|
|
; |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; FILL AREA IN BUFFER WITH SPECIFIED CHARACTER AND CURRENT COLOR/ATTRIBUTE |
|
|
; FILL AREA IN BUFFER WITH SPECIFIED CHARACTER AND CURRENT COLOR/ATTRIBUTE |
|
|
; STARTING WITH THE CURRENT FRAME BUFFER POSITION |
|
|
|
|
|
|
|
|
; STARTING AT THE CURRENT FRAME BUFFER POSITION |
|
|
; A: FILL CHARACTER |
|
|
; A: FILL CHARACTER |
|
|
; DE: NUMBER OF CHARACTERS TO FILL |
|
|
; DE: NUMBER OF CHARACTERS TO FILL |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
|
|
|
CVDU_FILL: |
|
|
PUSH DE ; SAVE FILL COUNT |
|
|
PUSH DE ; SAVE FILL COUNT |
|
|
LD HL,(CVDU_DISPLAYPOS) ; SET CHARACTER BUFFER POSITION TO FILL |
|
|
|
|
|
|
|
|
LD HL,(CVDU_POS) ; SET CHARACTER BUFFER POSITION TO FILL |
|
|
PUSH HL ; SAVE BUF POS |
|
|
PUSH HL ; SAVE BUF POS |
|
|
CALL CVDU_FILL1 ; DO THE CHARACTER FILL |
|
|
CALL CVDU_FILL1 ; DO THE CHARACTER FILL |
|
|
POP HL ; RECOVER BUF POS |
|
|
POP HL ; RECOVER BUF POS |
|
|
@ -372,7 +352,6 @@ CVDU_FILL: |
|
|
JR CVDU_FILL1 ; DO ATTRIBUTE FILL AND RETURN |
|
|
JR CVDU_FILL1 ; DO ATTRIBUTE FILL AND RETURN |
|
|
|
|
|
|
|
|
CVDU_FILL1: |
|
|
CVDU_FILL1: |
|
|
; SAVE FILL VALUE |
|
|
|
|
|
LD B,A ; SAVE REQUESTED FILL VALUE |
|
|
LD B,A ; SAVE REQUESTED FILL VALUE |
|
|
|
|
|
|
|
|
; CHECK FOR VALID FILL LENGTH |
|
|
; CHECK FOR VALID FILL LENGTH |
|
|
@ -381,44 +360,45 @@ CVDU_FILL1: |
|
|
RET Z ; BAIL OUT IF LENGTH OF ZERO SPECIFIED |
|
|
RET Z ; BAIL OUT IF LENGTH OF ZERO SPECIFIED |
|
|
|
|
|
|
|
|
; POINT TO BUFFER LOCATION TO START FILL |
|
|
; POINT TO BUFFER LOCATION TO START FILL |
|
|
LD C,18 ; USE CVDU REG 18/19 TO SET BUF LOC |
|
|
|
|
|
|
|
|
LD C,18 ; UPDATE ADDRESS REGISTER PAIR |
|
|
CALL CVDU_WRX ; DO IT |
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK WRITE |
|
|
; SET MODE TO BLOCK WRITE |
|
|
XOR A ; WRITE VALUE 0 (BIT 7 CLR FOR BLOCK WRITE) |
|
|
|
|
|
LD C,24 ; TO CVDU REG 24 |
|
|
|
|
|
|
|
|
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 |
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
; SET CHARACTER TO WRITE (WRITES ONE CHARACTER) |
|
|
; SET CHARACTER TO WRITE (WRITES ONE CHARACTER) |
|
|
LD A,B ; RECOVER FILL VALUE |
|
|
LD A,B ; RECOVER FILL VALUE |
|
|
LD C,31 ; USE CVDU REG 31 TO WRITE VALUE |
|
|
|
|
|
|
|
|
LD C,31 ; DATA REGISTER |
|
|
CALL CVDU_WR ; DO IT |
|
|
CALL CVDU_WR ; DO IT |
|
|
DEC DE ; REFLECT ONE CHARACTER WRITTEN |
|
|
DEC DE ; REFLECT ONE CHARACTER WRITTEN |
|
|
|
|
|
|
|
|
; LOOP TO DO BULK WRITE |
|
|
|
|
|
|
|
|
; LOOP TO DO BULK WRITE (UP TO 255 BYTES PER LOOP) |
|
|
EX DE,HL ; NOW USE HL FOR COUNT |
|
|
EX DE,HL ; NOW USE HL FOR COUNT |
|
|
LD C,30 ; BYTE COUNT REGISTER |
|
|
LD C,30 ; BYTE COUNT REGISTER |
|
|
CVDU_FILL2: |
|
|
CVDU_FILL2: |
|
|
LD A,H ; GET HIGH BYTE |
|
|
LD A,H ; GET HIGH BYTE |
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
LD A,L ; PRESUME WE WILL WRITE L COUNT BYTES |
|
|
|
|
|
JR Z,CVDU_FILL3 ; IF H WAS ZERO, READY TO WRITE L BYTES |
|
|
|
|
|
LD A,$FF ; H WAS > 0, WRITE 255 BYTES |
|
|
|
|
|
|
|
|
LD A,L ; PRESUME WE WILL WRITE L COUNT (ALL REMAINING) BYTES |
|
|
|
|
|
JR Z,CVDU_FILL3 ; IF H WAS ZERO, WRITE L BYTES |
|
|
|
|
|
LD A,$FF ; H WAS > 0, NEED MORE LOOPS, WRITE 255 BYTES |
|
|
CVDU_FILL3: |
|
|
CVDU_FILL3: |
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
CALL CVDU_WR ; DO IT (SOURCE/DEST REGS AUTO INCREMENT) |
|
|
LD D,0 ; CLEAR D |
|
|
LD D,0 ; CLEAR D |
|
|
LD E,A ; SET E TO BYTES WRITTEN |
|
|
LD E,A ; SET E TO BYTES WRITTEN |
|
|
SBC HL,DE ; SUBTRACT FROM HL |
|
|
SBC HL,DE ; SUBTRACT FROM HL |
|
|
RET Z ; IF ZERO, WE ARE DONE |
|
|
RET Z ; IF ZERO, WE ARE DONE |
|
|
JR CVDU_FILL2 ; OTHERWISE, WRITE SOME MORE |
|
|
JR CVDU_FILL2 ; OTHERWISE, WRITE SOME MORE |
|
|
; |
|
|
; |
|
|
;__CVDU_SCROLL_______________________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; SCROLL THE SCREEN FORWARD ONE LINE |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED) |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
CVDU_SCROLL: |
|
|
CVDU_SCROLL: |
|
|
; SCROLL THE CHARACTER BUFFER |
|
|
; SCROLL THE CHARACTER BUFFER |
|
|
LD A,'=' ; CHAR VALUE TO FILL NEW EXPOSED LINE |
|
|
|
|
|
|
|
|
LD A,' ' ; CHAR VALUE TO FILL NEW EXPOSED LINE |
|
|
LD HL,0 ; SOURCE ADDRESS OF CHARACER BUFFER |
|
|
LD HL,0 ; SOURCE ADDRESS OF CHARACER BUFFER |
|
|
CALL CVDU_SCROLL1 ; SCROLL CHARACTER BUFFER |
|
|
CALL CVDU_SCROLL1 ; SCROLL CHARACTER BUFFER |
|
|
|
|
|
|
|
|
@ -431,12 +411,13 @@ CVDU_SCROLL1: |
|
|
PUSH AF ; SAVE FILL VALUE FOR NOW |
|
|
PUSH AF ; SAVE FILL VALUE FOR NOW |
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK COPY |
|
|
; SET MODE TO BLOCK COPY |
|
|
LD A,$80 ; SET BIT 7 FOR BLOCK COPY |
|
|
|
|
|
LD C,24 ; IN CVDU REG 24 |
|
|
|
|
|
|
|
|
LD C,24 ; BLOCK MODE CONTROL REGISTER |
|
|
|
|
|
CALL CVDU_RD ; GET CURRENT VALUE |
|
|
|
|
|
OR $80 ; SET BIT 7 FOR COPY MODE |
|
|
CALL CVDU_WR ; DO IT |
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
; SET INITIAL BLOCK COPY DESTINATION (USING HL PASSED IN) |
|
|
; SET INITIAL BLOCK COPY DESTINATION (USING HL PASSED IN) |
|
|
LD C,18 ; SET DESTINATION ADDRESS IN REG 18/19 |
|
|
|
|
|
|
|
|
LD C,18 ; UPDATE ADDRESS (DESTINATION) REGISTER |
|
|
CALL CVDU_WRX ; DO IT |
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
; COMPUTE SOURCE (INCREMENT ONE ROW) |
|
|
; COMPUTE SOURCE (INCREMENT ONE ROW) |
|
|
@ -444,39 +425,40 @@ CVDU_SCROLL1: |
|
|
ADD HL,DE ; ADD IT TO BUF ADDRESS |
|
|
ADD HL,DE ; ADD IT TO BUF ADDRESS |
|
|
|
|
|
|
|
|
; SET INITIAL BLOCK COPY SOURCE |
|
|
; SET INITIAL BLOCK COPY SOURCE |
|
|
LD C,32 ; PUT THE SOURCE ADDRESS IN CVDU REG 32 |
|
|
|
|
|
|
|
|
LD C,32 ; BLOCK START ADDRESS REGISTER |
|
|
CALL CVDU_WRX ; DO IT |
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
LD B,23 ; ITERATIONS (23 ROWS) |
|
|
|
|
|
|
|
|
LD B,23 ; ITERATIONS (ROWS - 1) |
|
|
CVDU_SCROLL2: |
|
|
CVDU_SCROLL2: |
|
|
; SET BLOCK COPY COUNT (WILL EXECUTE COPY) |
|
|
; SET BLOCK COPY COUNT (WILL EXECUTE COPY) |
|
|
LD A,80 ; COPY 80 BYTES |
|
|
LD A,80 ; COPY 80 BYTES |
|
|
LD C,30 ; PUT LENGTH TO COPY IN REG 30 |
|
|
|
|
|
|
|
|
LD C,30 ; WORD COUNT REGISTER |
|
|
CALL CVDU_WR ; DO IT |
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
; LOOP TILL DONE WITH ALL LINES |
|
|
; LOOP TILL DONE WITH ALL LINES |
|
|
DJNZ CVDU_SCROLL2 ; REPEAT FOR ALL LINES |
|
|
DJNZ CVDU_SCROLL2 ; REPEAT FOR ALL LINES |
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK WRITE TO CLEAR NEW LINE EXPOSED BY SCROLL |
|
|
; SET MODE TO BLOCK WRITE TO CLEAR NEW LINE EXPOSED BY SCROLL |
|
|
XOR A ; CLR BIT 7 |
|
|
|
|
|
LD C,24 ; OF CVDU REG 24 |
|
|
|
|
|
CALL CVDU_WR |
|
|
|
|
|
|
|
|
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 CHARACTER TO WRITE |
|
|
; SET CHARACTER TO WRITE |
|
|
POP AF ; RESTORE THE FILL VALUE PASSED IN |
|
|
|
|
|
LD C,31 |
|
|
|
|
|
CALL CVDU_WR |
|
|
|
|
|
|
|
|
POP AF ; RESTORE THE FILL VALUE PASSED IN |
|
|
|
|
|
LD C,31 ; DATA REGISTER |
|
|
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
; SET BLOCK WRITE COUNT (WILL EXECUTE THE WRITE) |
|
|
; SET BLOCK WRITE COUNT (WILL EXECUTE THE WRITE) |
|
|
LD A,80 - 1 |
|
|
|
|
|
LD C,30 |
|
|
|
|
|
CALL CVDU_WR |
|
|
|
|
|
|
|
|
LD A,80 - 1 ; SET WRITE COUNT TO LINE LENGTH - 1 (1 CHAR ALREADY WRITTEN) |
|
|
|
|
|
LD C,30 ; WORD COUNT REGISTER |
|
|
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__CVDU_RSCROLL_______________________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; SCROLL THE SCREEN REVERSE ONE LINE |
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
|
|
|
; REVERSE SCROLL ENTIRE SCREEN BY ONE LINE (CURSOR POSITION UNCHANGED) |
|
|
|
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
CVDU_RSCROLL: |
|
|
CVDU_RSCROLL: |
|
|
; SCROLL THE CHARACTER BUFFER |
|
|
; SCROLL THE CHARACTER BUFFER |
|
|
@ -487,21 +469,23 @@ CVDU_RSCROLL: |
|
|
; SCROLL THE ATTRIBUTE BUFFER |
|
|
; SCROLL THE ATTRIBUTE BUFFER |
|
|
LD A,(CVDU_ATTR) ; ATTRIBUTE VALUE TO FILL NEW EXPOSED LINE |
|
|
LD A,(CVDU_ATTR) ; ATTRIBUTE VALUE TO FILL NEW EXPOSED LINE |
|
|
LD HL,$800+(80*23) ; SOURCE ADDRESS OF ATTRIBUTE BUFFER (LINE 24) |
|
|
LD HL,$800+(80*23) ; SOURCE ADDRESS OF ATTRIBUTE BUFFER (LINE 24) |
|
|
JR CVDU_RSCROLL1 ; SCROLL ATTRIBUTE BUFFER |
|
|
|
|
|
|
|
|
JR CVDU_RSCROLL1 ; SCROLL ATTRIBUTE BUFFER AND RETURN |
|
|
|
|
|
|
|
|
CVDU_RSCROLL1: |
|
|
CVDU_RSCROLL1: |
|
|
PUSH AF ; SAVE FILL VALUE FOR NOW |
|
|
PUSH AF ; SAVE FILL VALUE FOR NOW |
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK COPY |
|
|
; SET MODE TO BLOCK COPY |
|
|
LD A,$80 ; SET BIT 7 FOR BLOCK COPY |
|
|
|
|
|
LD C,24 ; IN CVDU REG 24 |
|
|
|
|
|
|
|
|
LD C,24 ; BLOCK MODE CONTROL REGISTER |
|
|
|
|
|
CALL CVDU_RD ; GET CURRENT VALUE |
|
|
|
|
|
AND $80 ; SET BIT 7 FOR COPY MODE |
|
|
CALL CVDU_WR ; DO IT |
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
; LOOP TO SCROLL EACH LINE WORKING FROM BOTTOM TO TOP |
|
|
LD B,23 ; ITERATIONS (23 ROWS) |
|
|
LD B,23 ; ITERATIONS (23 ROWS) |
|
|
CVDU_RSCROLL2: |
|
|
CVDU_RSCROLL2: |
|
|
|
|
|
|
|
|
; SET BLOCK COPY DESTINATION (USING HL PASSED IN) |
|
|
; SET BLOCK COPY DESTINATION (USING HL PASSED IN) |
|
|
LD C,18 ; SET DESTINATION ADDRESS IN REG 18/19 |
|
|
|
|
|
|
|
|
LD C,18 ; UPDATE ADDRESS (DESTINATION) REGISTER |
|
|
CALL CVDU_WRX ; DO IT |
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
; COMPUTE SOURCE (DECREMENT ONE ROW) |
|
|
; COMPUTE SOURCE (DECREMENT ONE ROW) |
|
|
@ -509,43 +493,40 @@ CVDU_RSCROLL2: |
|
|
SBC HL,DE ; SUBTRACT IT FROM BUF ADDRESS |
|
|
SBC HL,DE ; SUBTRACT IT FROM BUF ADDRESS |
|
|
|
|
|
|
|
|
; SET BLOCK COPY SOURCE |
|
|
; SET BLOCK COPY SOURCE |
|
|
LD C,32 ; PUT THE SOURCE ADDRESS IN CVDU REG 32 |
|
|
|
|
|
|
|
|
LD C,32 ; BLOCK START ADDRESS REGISTER |
|
|
CALL CVDU_WRX ; DO IT |
|
|
CALL CVDU_WRX ; DO IT |
|
|
|
|
|
|
|
|
; SET BLOCK COPY COUNT (WILL EXECUTE COPY) |
|
|
; SET BLOCK COPY COUNT (WILL EXECUTE COPY) |
|
|
LD A,80 ; COPY 80 BYTES |
|
|
LD A,80 ; COPY 80 BYTES |
|
|
LD C,30 ; PUT LENGTH TO COPY IN REG 30 |
|
|
|
|
|
|
|
|
LD C,30 ; WORD COUNT REGISTER |
|
|
CALL CVDU_WR ; DO IT |
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
; LOOP TILL DONE WITH ALL LINES |
|
|
|
|
|
DJNZ CVDU_RSCROLL2 ; REPEAT FOR ALL LINES |
|
|
DJNZ CVDU_RSCROLL2 ; REPEAT FOR ALL LINES |
|
|
|
|
|
|
|
|
; SET MODE TO BLOCK WRITE TO CLEAR NEW LINE EXPOSED BY SCROLL |
|
|
; SET MODE TO BLOCK WRITE TO CLEAR NEW LINE EXPOSED BY SCROLL |
|
|
XOR A ; CLR BIT 7 |
|
|
|
|
|
LD C,24 ; OF CVDU REG 24 |
|
|
|
|
|
CALL CVDU_WR |
|
|
|
|
|
|
|
|
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 CHARACTER TO WRITE |
|
|
; SET CHARACTER TO WRITE |
|
|
POP AF ; RESTORE THE FILL VALUE PASSED IN |
|
|
|
|
|
LD C,31 |
|
|
|
|
|
CALL CVDU_WR |
|
|
|
|
|
|
|
|
POP AF ; RESTORE THE FILL VALUE PASSED IN |
|
|
|
|
|
LD C,31 ; DATA REGISTER |
|
|
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
; SET BLOCK WRITE COUNT (WILL EXECUTE THE WRITE) |
|
|
; SET BLOCK WRITE COUNT (WILL EXECUTE THE WRITE) |
|
|
LD A,80 - 1 |
|
|
|
|
|
LD C,30 |
|
|
|
|
|
CALL CVDU_WR |
|
|
|
|
|
|
|
|
LD A,80 - 1 ; SET WRITE COUNT TO LINE LENGTH - 1 (1 CHAR ALREADY WRITTEN) |
|
|
|
|
|
LD C,30 ; WORD COUNT REGISTER |
|
|
|
|
|
CALL CVDU_WR ; DO IT |
|
|
|
|
|
|
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; VDU DRIVER - DATA |
|
|
|
|
|
|
|
|
; CVDU DRIVER - DATA |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; |
|
|
; |
|
|
CVDU_X .DB 0 ; CURSOR X |
|
|
|
|
|
CVDU_Y .DB 0 ; CURSOR Y |
|
|
|
|
|
CVDU_ATTR .DB 0 ; CURRENT COLOR |
|
|
CVDU_ATTR .DB 0 ; CURRENT COLOR |
|
|
CVDU_DISPLAYPOS .DW 0 ; CURRENT DISPLAY POSITION |
|
|
|
|
|
CVDU_DISPLAY_START .DW 0 ; CURRENT DISPLAY POSITION |
|
|
|
|
|
|
|
|
CVDU_POS .DW 0 ; CURRENT DISPLAY POSITION |
|
|
; |
|
|
; |
|
|
; ATTRIBUTE ENCODING: |
|
|
; ATTRIBUTE ENCODING: |
|
|
; BIT 7: ALTERNATE CHARACTER SET |
|
|
; BIT 7: ALTERNATE CHARACTER SET |
|
|
@ -558,7 +539,7 @@ CVDU_DISPLAY_START .DW 0 ; CURRENT DISPLAY POSITION |
|
|
; BIT 0: INTENSITY |
|
|
; BIT 0: INTENSITY |
|
|
; |
|
|
; |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; VDU DRIVER - 8563 REGISTER INITIALIZATION |
|
|
|
|
|
|
|
|
; CVDU DRIVER - 8563 REGISTER INITIALIZATION |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; |
|
|
; |
|
|
; Reg Hex Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Description |
|
|
; Reg Hex Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Description |
|
|
@ -606,7 +587,7 @@ CVDU_DISPLAY_START .DW 0 ; CURRENT DISPLAY POSITION |
|
|
CVDU_INIT8563: |
|
|
CVDU_INIT8563: |
|
|
.DB 97 ; 0: hor. total - 1 |
|
|
.DB 97 ; 0: hor. total - 1 |
|
|
.DB 80 ; 1: hor. displayed |
|
|
.DB 80 ; 1: hor. displayed |
|
|
.DB 85 ; 2: hor. sync position |
|
|
|
|
|
|
|
|
.DB 90 ; 2: hor. sync position 85 |
|
|
.DB $14 ; 3: vert/hor sync width or 0x4F -- MDA |
|
|
.DB $14 ; 3: vert/hor sync width or 0x4F -- MDA |
|
|
.DB 26 ; 4: vert total |
|
|
.DB 26 ; 4: vert total |
|
|
.DB 2 ; 5: vert total adjust |
|
|
.DB 2 ; 5: vert total adjust |
|
|
|