Browse Source

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>.
pull/393/head v3.5.0-dev.10
Wayne Warthen 2 years ago
parent
commit
074f2cfdb2
  1. 8
      Source/HBIOS/ansi.asm
  2. 1
      Source/HBIOS/cvdu.asm
  3. 1
      Source/HBIOS/gdc.asm
  4. 38
      Source/HBIOS/hbios.asm
  5. 6
      Source/HBIOS/scon.asm
  6. 6
      Source/HBIOS/std.asm
  7. 32
      Source/HBIOS/term.asm
  8. 8
      Source/HBIOS/tms.asm
  9. 8
      Source/HBIOS/tty.asm
  10. 1
      Source/HBIOS/vdu.asm
  11. 1
      Source/HBIOS/vga.asm
  12. 1
      Source/HBIOS/vrc.asm
  13. 2
      Source/ver.inc
  14. 2
      Source/ver.lib

8
Source/HBIOS/ansi.asm

@ -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

1
Source/HBIOS/cvdu.asm

@ -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

1
Source/HBIOS/gdc.asm

@ -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

38
Source/HBIOS/hbios.asm

@ -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
;

6
Source/HBIOS/scon.asm

@ -22,12 +22,6 @@ SCON_ROWS .EQU 40
;
;
;
SCON_PREINIT:
XOR A
RET
;
;
;
SCON_INIT:
CALL NEWLINE
PRTS("SCON:$")

6
Source/HBIOS/std.asm

@ -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

32
Source/HBIOS/term.asm

@ -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

8
Source/HBIOS/tms.asm

@ -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!!!
;

8
Source/HBIOS/tty.asm

@ -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

1
Source/HBIOS/vdu.asm

@ -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

1
Source/HBIOS/vga.asm

@ -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.

1
Source/HBIOS/vrc.asm

@ -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
Source/ver.inc

@ -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

2
Source/ver.lib

@ -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

Loading…
Cancel
Save