diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 279e3110..4dee78c9 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -4269,6 +4269,8 @@ SYS_RESCOLD: SYS_RESUSER: ; #IF (CPUFAM == CPU_Z180) +; +; IF Z180 CPU, CHECK FOR INVALID OPCODE FLAG AND HANDLE IF SO ; IN0 A,(Z180_ITC) ; GET ITC REGISTER XOR $80 ; PRECLEAR TRAP BIT @@ -4305,6 +4307,9 @@ SYS_RESUSER2: JP NEWLINE ; FORMATTING & EXIT ; #ENDIF +; + ; RESET ACTIVE VIDEO DISPLAY ATTACHED TO EMULATOR + CALL TERM_RESET ; RET ; ELSE RETURN WITH USER RESET VECTOR IN HL ; diff --git a/Source/HBIOS/term.asm b/Source/HBIOS/term.asm index 5e569516..dae95e44 100644 --- a/Source/HBIOS/term.asm +++ b/Source/HBIOS/term.asm @@ -31,6 +31,8 @@ TERM_PREINIT: XOR A ; SIGNAL SUCCESS RET ; DONE ; +#IF (TERMENABLE) +; ;====================================================================== ; TERMINAL DRIVER - ATTACH ;====================================================================== @@ -47,8 +49,6 @@ TERM_PREINIT: ; 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 @@ -83,6 +83,34 @@ TERM_ATTACH: RET ; RETURN ; ;====================================================================== +; TERMINAL DRIVER - RESET +;====================================================================== +; +; RESET THE FULL EMULATION STACK INCLUDING THE UNDERLYING VDA. +; THIS IS USED TO RECOVER FROM APPLICATIONS THAT REPROGRAM THE +; VIDEO CHIP. +; +TERM_RESET: + ; ABORT IF NOTHING ATTACHED + LD A,(TERM_DEVCNT) + OR A + JR NZ,TERM_RESET1 + OR $FF + RET +; +TERM_RESET1: + ; CALL EMULATOR INITDEV FUNCTION + #IF (VDAEMU == EMUTYP_TTY) + CALL TTY_INITDEV + #ENDIF + #IF (VDAEMU == EMUTYP_ANSI) + CALL ANSI_INITDEV + #ENDIF +; + XOR A + RET +; +;====================================================================== ; TERMINAL DRIVER PRIVATE DATA ;====================================================================== ; @@ -95,4 +123,10 @@ TERM_DEVCNT .DB 0 ; TERMINAL DEVICE COUNT #INCLUDE "tty.asm" #INCLUDE "ansi.asm" ; +#ELSE +; +TERM_RESET: + XOR A + RET +; #ENDIF \ No newline at end of file diff --git a/Source/ver.inc b/Source/ver.inc index 79ccbb29..84a9fb0e 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-dev.22" +#DEFINE BIOSVER "3.5.0-dev.23" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 9d5a054e..fdf43c6a 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-dev.22" + db "3.5.0-dev.23" endm