mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Fix for ROMless Restart
Registration of terminal emulation was failing under ROMless operation after a (R)estart was performed at the Boot Loader. See <https://groups.google.com/g/retro-comp/c/bILDMVI97vo/m/Oj8sXdr7DAAJ>.
This commit is contained in:
@@ -22,6 +22,14 @@ ANSI_DEFCOLOR .EQU 7 ; WHITE ON BLACK
|
||||
; ANSI EMULATION MODULE
|
||||
;==================================================================================================
|
||||
;
|
||||
; PRE-CONSOLE INITIALIZATION
|
||||
;
|
||||
ANSI_PREINIT:
|
||||
OR $FF ; RESET THE VDA UNIT
|
||||
LD (ANSI_VDAUNIT),A ; ... TO INITIAL VALUE
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER
|
||||
; ON ENTRY:
|
||||
; DE: DISPATCH ADDRESS OF CALLING VDA DRIVER
|
||||
|
||||
@@ -59,6 +59,7 @@ CVDU_COLS .EQU 80
|
||||
#ENDIF
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
;======================================================================
|
||||
; CVDU DRIVER - INITIALIZATION
|
||||
|
||||
@@ -65,6 +65,7 @@ GDC_COLS .EQU 80
|
||||
.ECHO "\n"
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
;======================================================================
|
||||
; GDC DRIVER - INITIALIZATION
|
||||
|
||||
@@ -3257,9 +3257,8 @@ HB_PCINITTBL:
|
||||
#IF (TMSENABLE)
|
||||
.DW TMS_PREINIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_PREINIT
|
||||
#ENDIF
|
||||
.DW TERM_PREINIT ; ALWAYS DO THIS ONE
|
||||
;
|
||||
HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
|
||||
|
||||
;==================================================================================================
|
||||
@@ -3365,9 +3364,6 @@ HB_INITTBL:
|
||||
#IF (TMSENABLE)
|
||||
.DW TMS_INIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_INIT
|
||||
#ENDIF
|
||||
#IF (EFENABLE)
|
||||
.DW EF_INIT
|
||||
#ENDIF
|
||||
@@ -3413,6 +3409,9 @@ HB_INITTBL:
|
||||
#IF (PPPENABLE)
|
||||
.DW PPP_INIT
|
||||
#ENDIF
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_INIT
|
||||
#ENDIF
|
||||
#IF (CHENABLE)
|
||||
.DW CH_INIT
|
||||
#ENDIF
|
||||
@@ -6461,15 +6460,6 @@ SIZ_TMS .EQU $ - ORG_TMS
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SCONENABLE)
|
||||
ORG_SCON .EQU $
|
||||
#INCLUDE "scon.asm"
|
||||
SIZ_SCON .EQU $ - ORG_SCON
|
||||
.ECHO "SCON occupies "
|
||||
.ECHO SIZ_SCON
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (EFENABLE)
|
||||
ORG_EF .EQU $
|
||||
#INCLUDE "ef.asm"
|
||||
@@ -6567,7 +6557,7 @@ SIZ_FONTS .EQU $ - ORG_FONTS
|
||||
.ECHO SIZ_FONTS
|
||||
.ECHO " bytes.\n"
|
||||
;
|
||||
#IF (CVDUENABLE | VGAENABLE | GDCENABLE | VRCENABLE | (TMSENABLE & ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))))
|
||||
#IF (KBDENABLE)
|
||||
ORG_KBD .EQU $
|
||||
#INCLUDE "kbd.asm"
|
||||
SIZ_KBD .EQU $ - ORG_KBD
|
||||
@@ -6576,7 +6566,7 @@ SIZ_KBD .EQU $ - ORG_KBD
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (VDUENABLE | (TMSENABLE & (TMSMODE == TMSMODE_N8)))
|
||||
#IF (PPKENABLE)
|
||||
ORG_PPK .EQU $
|
||||
#INCLUDE "ppk.asm"
|
||||
SIZ_PPK .EQU $ - ORG_PPK
|
||||
@@ -6612,6 +6602,15 @@ SIZ_PPP .EQU $ - ORG_PPP
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SCONENABLE)
|
||||
ORG_SCON .EQU $
|
||||
#INCLUDE "scon.asm"
|
||||
SIZ_SCON .EQU $ - ORG_SCON
|
||||
.ECHO "SCON occupies "
|
||||
.ECHO SIZ_SCON
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (CHENABLE)
|
||||
ORG_CH .EQU $
|
||||
#INCLUDE "ch.asm"
|
||||
@@ -6720,14 +6719,13 @@ SIZ_SYQ .EQU $ - ORG_SYQ
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (TERMENABLE)
|
||||
; TERM IS ALWAYS INCLUDED
|
||||
ORG_TERM .EQU $
|
||||
#INCLUDE "term.asm"
|
||||
SIZ_TERM .EQU $ - ORG_TERM
|
||||
.ECHO "TERM occupies "
|
||||
.ECHO SIZ_TERM
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
;#IF (SPKENABLE & DSRTCENABLE)
|
||||
#IF (SPKENABLE)
|
||||
@@ -6799,7 +6797,7 @@ SIZ_YM2612 .EQU $ - ORG_YM2612
|
||||
;
|
||||
; INCLUDE LZSA2 decompression engine if required.
|
||||
;
|
||||
#IF ((VGAENABLE | CVDUENABLE | TMSENABLE | GDCENABLE | VRCENABLE) & USELZSA2)
|
||||
#IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2)
|
||||
#INCLUDE "unlzsa2s.asm"
|
||||
#ENDIF
|
||||
;
|
||||
|
||||
@@ -22,12 +22,6 @@ SCON_ROWS .EQU 40
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_PREINIT:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
SCON_INIT:
|
||||
CALL NEWLINE
|
||||
PRTS("SCON:$")
|
||||
|
||||
@@ -460,6 +460,12 @@ SER_7372800_8N2 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP2
|
||||
;
|
||||
TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL AUTO-ENABLE IF A VDA IS ENABLED
|
||||
;
|
||||
; THE FOLLOWING CONTROL INCLUSION OF THE KEYBOARD DRIVERS. THEY ARE
|
||||
; SET TO TRUE IN THE VDA DRIVERS AS NEEDED.
|
||||
;
|
||||
KBDENABLE .EQU FALSE ; PS/2 KEYBOARD DRIVER
|
||||
PPKENABLE .EQU FALSE ; PPK KEYBOARD DRIVER
|
||||
;
|
||||
; VIDEO MODES
|
||||
;
|
||||
V80X24 .EQU 0 ; ECB-VDU
|
||||
|
||||
@@ -16,6 +16,22 @@
|
||||
;
|
||||
;
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER - PRE-CONSOLE INITIALIZATION
|
||||
;======================================================================
|
||||
;
|
||||
; GIVE EMULATION MODULES A CHANCE TO RESET THEMSELVES AT STARTUP
|
||||
;
|
||||
TERM_PREINIT:
|
||||
#IF (TERMENABLE)
|
||||
XOR A ; ZERO TO ACCUM
|
||||
LD (TERM_DEVCNT),A ; INITIALIZE DEVCNT
|
||||
CALL TTY_PREINIT ; DO TTY PREINIT
|
||||
CALL ANSI_PREINIT ; DO ANSI PREINIT
|
||||
#ENDIF
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER - ATTACH
|
||||
;======================================================================
|
||||
;
|
||||
@@ -31,6 +47,8 @@
|
||||
; DE: VDA DRIVER'S DISPATCH ADDRESS
|
||||
; HL: VDA DRIVER'S INSTANCE DATA
|
||||
;
|
||||
#IF (TERMENABLE)
|
||||
;
|
||||
TERM_ATTACH:
|
||||
;
|
||||
LD A,(TERM_DEVCNT) ; GET NEXT DEVICE NUMBER TO USE
|
||||
@@ -40,12 +58,12 @@ TERM_ATTACH:
|
||||
; SETUP EMULATOR MODULE FUNC TBL ADDRESS BASED ON DESIRED EMULATION
|
||||
; EMULATOR PASSES BACK IT'S FUNC TBL ADDRESS IN DE
|
||||
OR $FF ; PRESET FAILURE
|
||||
#IF (VDAEMU == EMUTYP_TTY)
|
||||
#IF (VDAEMU == EMUTYP_TTY)
|
||||
CALL TTY_INIT ; INIT TTY, DE := TTY_FNTBL
|
||||
#ENDIF
|
||||
#IF (VDAEMU == EMUTYP_ANSI)
|
||||
#ENDIF
|
||||
#IF (VDAEMU == EMUTYP_ANSI)
|
||||
CALL ANSI_INIT ; INIT ANSI, DE := ANSI_FNTBL
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
POP HL ; RECOVER VDA INSTANCE DATA PTR
|
||||
RET NZ ; BAIL OUT ON ERROR
|
||||
;
|
||||
@@ -74,5 +92,7 @@ TERM_DEVCNT .DB 0 ; TERMINAL DEVICE COUNT
|
||||
; EMULATION MODULES
|
||||
;======================================================================
|
||||
;
|
||||
#INCLUDE "tty.asm"
|
||||
#INCLUDE "ansi.asm"
|
||||
#INCLUDE "tty.asm"
|
||||
#INCLUDE "ansi.asm"
|
||||
;
|
||||
#ENDIF
|
||||
@@ -140,6 +140,14 @@ TMS_COLS .EQU 40
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
;
|
||||
#IF (TMSMODE == TMSMODE_N8)
|
||||
PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))
|
||||
PPKENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
#ENDIF
|
||||
;
|
||||
; TMS_IODELAY IS USED TO ADD RECOVERY TIME TO TMS9918/V9958 ACCESSES
|
||||
; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!!
|
||||
;
|
||||
|
||||
@@ -6,6 +6,14 @@
|
||||
; TODO:
|
||||
; - SOME FUNCTIONS ARE NOT IMPLEMENTED!!!
|
||||
;
|
||||
; PRE-CONSOLE INITIALIZATION
|
||||
;
|
||||
TTY_PREINIT:
|
||||
OR $FF ; RESET THE VDA UNIT
|
||||
LD (TTY_VDAUNIT),A ; ... TO INITIAL VALUE
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER
|
||||
; ON ENTRY:
|
||||
; C: CIO UNIT NUMBER OF CALLING VDA DRIVER
|
||||
|
||||
@@ -45,6 +45,7 @@ VDU_CSTY .EQU VDU_BLOK ; DEFAULT CURSOR STYLE
|
||||
VDU_BLNK .EQU VDU_NOBL ; DEFAULT BLINK RATE
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT
|
||||
;
|
||||
#IF (VDUSIZ=V80X24)
|
||||
DLINES .EQU 24
|
||||
|
||||
@@ -90,6 +90,7 @@ VGA_R11 .EQU VGA_SCANL-1
|
||||
#DEFINE DEFREGS REGS_VGA
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
; DRIVER UTILIZES THE MULTIPLE DISPLAY WINDOW FEATURE OF THE CRTC TO ACCOMPLISH
|
||||
; FULL SCREEN SCROLLING WITHOUT THE NEED TO MOVE DISPLAY RAM BYTES.
|
||||
|
||||
@@ -25,6 +25,7 @@ VRC_COLS .EQU 64
|
||||
#DEFINE VRC_FONT FONTVGARC
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
;
|
||||
.ECHO "VRC: IO="
|
||||
.ECHO VRC_BASE
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#DEFINE RMN 5
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.5.0-dev.9"
|
||||
#DEFINE BIOSVER "3.5.0-dev.10"
|
||||
#define rmj RMJ
|
||||
#define rmn RMN
|
||||
#define rup RUP
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 5
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.5.0-dev.9"
|
||||
db "3.5.0-dev.10"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user