@ -249,7 +249,7 @@ TMS_INIT:
TMS_INIT1:
TMS_INIT1:
CALL TMS_CRTINIT ; SETUP THE TMS CHIP REGISTERS
CALL TMS_CRTINIT ; SETUP THE TMS CHIP REGISTERS
CALL TMS_LOADFONT ; LOAD FONT DATA FROM ROM TO TMS STRORAGE
CALL TMS_LOADFONT ; LOAD FONT DATA FROM ROM TO TMS STRORAGE
CALL TMS_VDARES1
CALL TMS_CLEAR ; CLEAR SCREEN, HOME CURSOR
# IF ( TMSMODE = = TMSMODE_N8 )
# IF ( TMSMODE = = TMSMODE_N8 )
CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER
CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER
# ENDIF
# ENDIF
@ -335,6 +335,7 @@ TMS_VDAINI:
; RESET VDA
; RESET VDA
; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA
; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA
CALL TMS_VDARES ; RESET VDA
CALL TMS_VDARES ; RESET VDA
CALL TMS_CLEAR ; CLEAR SCREEN
XOR A ; SIGNAL SUCCESS
XOR A ; SIGNAL SUCCESS
RET
RET
@ -350,30 +351,16 @@ TMS_VDARES:
# IF ( CPUFAM = = CPU_Z180 )
# IF ( CPUFAM = = CPU_Z180 )
CALL TMS_Z180IO
CALL TMS_Z180IO
# ENDIF
# ENDIF
CALL TMS_CRTINIT
CALL TMS_CRTINIT1A
# IF ( ! USELZSA2 )
# IF ( ! USELZSA2 )
; WE WANT TO RELOAD THE FONT ON RESET, BUT THIS IS NOT CURRENTLY
; WE WANT TO RELOAD THE FONT ON RESET, BUT THIS IS NOT CURRENTLY
; POSSIBLE WHEN FONT COMPRESSION IS IN USE.
; POSSIBLE WHEN FONT COMPRESSION IS IN USE.
CALL TMS_LOADFONT
CALL TMS_LOADFONT ; RELOAD FONT
LD A , $ FF ; REMOVE
LD ( TMS_CURSAV ), A ; ... SAVED CURSOR CHAR
CALL TMS_SETCUR ; SET NEW CURSOR
# ENDIF
# ENDIF
;
; ENTRY POINT USED BY TMS_INIT TO AVOID DUPLICATE CALL TO TMS_CRTINIT
; AND TMS_Z180IO.
;
TMS_VDARES1:
LD DE , 0 ; ROW = 0, COL = 0
CALL TMS_XY ; SEND CURSOR TO TOP LEFT
LD A , ' ' ; BLANK THE SCREEN
LD DE , TMS_ROWS * TMS_COLS ; FILL ENTIRE BUFFER
CALL TMS_FILL ; DO IT
LD DE , 0 ; ROW = 0, COL = 0
CALL TMS_XY ; SEND CURSOR TO TOP LEFT
XOR A
XOR A
DEC A
LD ( TMS_CURSAV ), A
CALL TMS_SETCUR ; SET CURSOR
XOR A ; SIGNAL SUCCESS
RET
RET
TMS_VDADEV:
TMS_VDADEV:
@ -634,6 +621,8 @@ TMS_CRTINIT1:
LD A , D
LD A , D
OR E
OR E
JR NZ , TMS_CRTINIT1
JR NZ , TMS_CRTINIT1
;
TMS_CRTINIT1A:
;
;
; INITIALIZE VDU REGISTERS
; INITIALIZE VDU REGISTERS
LD C , 0 ; START WITH REGISTER 0
LD C , 0 ; START WITH REGISTER 0
@ -655,6 +644,26 @@ TMS_CRTINIT2:
RET
RET
;
;
;----------------------------------------------------------------------
;----------------------------------------------------------------------
; CLEAR SCREEN AND HOME CURSOR
;----------------------------------------------------------------------
;
TMS_CLEAR:
LD DE , 0 ; ROW = 0, COL = 0
CALL TMS_XY ; SEND CURSOR TO TOP LEFT
LD A , ' ' ; BLANK THE SCREEN
LD DE , TMS_ROWS * TMS_COLS ; FILL ENTIRE BUFFER
CALL TMS_FILL ; DO IT
LD DE , 0 ; ROW = 0, COL = 0
CALL TMS_XY ; SEND CURSOR TO TOP LEFT
XOR A
DEC A
LD ( TMS_CURSAV ), A
CALL TMS_SETCUR ; SET CURSOR
;
XOR A ; SIGNAL SUCCESS
RET
;
;----------------------------------------------------------------------
; LOAD FONT DATA
; LOAD FONT DATA
;----------------------------------------------------------------------
;----------------------------------------------------------------------
;
;
@ -707,7 +716,7 @@ TMS_STACK .DW 0
;
;
; VIRTUAL CURSOR IS GENERATED BY DYNAMICALLY CHANGING FONT GLYPH
; VIRTUAL CURSOR IS GENERATED BY DYNAMICALLY CHANGING FONT GLYPH
; FOR CHAR 255 TO BE THE INVERSE OF THE GLYPH OF THE CHARACTER UNDER
; FOR CHAR 255 TO BE THE INVERSE OF THE GLYPH OF THE CHARACTER UNDER
; THE CURRENT CURSOR POSITION. THE CHARACTER CODE IS THEN SWITCH TO
; THE CURRENT CURSOR POSITION. THE CHARACTER CODE IS THEN SWITCHED TO
; THE VALUE 255 AND THE ORIGINAL VALUE IS SAVED. WHEN THE DISPLAY
; THE VALUE 255 AND THE ORIGINAL VALUE IS SAVED. WHEN THE DISPLAY
; NEEDS TO BE CHANGED THE PROCESS IS UNDONE. IT IS ESSENTIAL THAT
; NEEDS TO BE CHANGED THE PROCESS IS UNDONE. IT IS ESSENTIAL THAT
; ALL DISPLAY CHANGES BE BRACKETED WITH CALLS TO TMS_CLRCUR PRIOR TO
; ALL DISPLAY CHANGES BE BRACKETED WITH CALLS TO TMS_CLRCUR PRIOR TO