diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index f6ac8199..1285d7c7 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 3869c8c7..63d94c4e 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index 9704e02d..2001bf49 100644 Binary files a/Doc/RomWBW Errata.pdf and b/Doc/RomWBW Errata.pdf differ diff --git a/Doc/RomWBW ROM Applications.pdf b/Doc/RomWBW ROM Applications.pdf index 07b31fde..f25b4aa2 100644 Binary files a/Doc/RomWBW ROM Applications.pdf and b/Doc/RomWBW ROM Applications.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index f9133b3d..95f41e7f 100644 Binary files a/Doc/RomWBW System Guide.pdf and b/Doc/RomWBW System Guide.pdf differ diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index 469dc285..71e9aa1e 100644 Binary files a/Doc/RomWBW User Guide.pdf and b/Doc/RomWBW User Guide.pdf differ diff --git a/ReadMe.md b/ReadMe.md index 33af1723..ab035b5b 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ **RomWBW ReadMe** \ Version 3.5 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -28 Feb 2024 +03 Apr 2024 # Overview diff --git a/ReadMe.txt b/ReadMe.txt index abb1597b..c47f3d10 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW ReadMe Wayne Warthen (wwarthen@gmail.com) -28 Feb 2024 +03 Apr 2024 diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index 7e1d9e91..c9cdb2ea 100644 --- a/Source/Doc/SystemGuide.md +++ b/Source/Doc/SystemGuide.md @@ -1327,7 +1327,7 @@ specified (set to 0 for default/not specified). Video Mode (E) values are specific to each VDA. The returned Status (A) is a standard HBIOS result code. -If the hardware and driver support it, you can specify a Font Bitmap +If the hardware and driver supports it, you can specify a Font Bitmap (HL) buffer address containing the character bitmap data to be loaded into the video processor. The buffer **must** be located entirely in the top 32K of the CPU memory space. HL must be set to zero if no character @@ -1372,10 +1372,10 @@ data, then Font Bitmap (HL) will be set to zero on return. | B: 0x42 | A: Status | | C: Video Unit | | -Performs a soft reset of the specified Video Unit (C). Will clear the -screen, home the cursor, and restore active attribute/color to defaults. -Keyboard will be flushed. The current video mode will not be changed. -The returned Status (A) is a standard HBIOS result code. +Performs a non-destructive reset of the specified Video Unit (C). +Should re-initialize the video hardware without destroying the screen +contents or cursor position. The current video mode will not be +changed. The returned Status (A) is a standard HBIOS result code. ### Function 0x43 -- Video Device (VDADEV) diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index 8abe5eb6..adbe84c9 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -148,6 +148,15 @@ CVDU_VDAINI: ; RESET VDA ; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA CALL CVDU_VDARES ; RESET VDA + LD A,$0E ; ATTRIBUTE IS STANDARD WHITE ON BLACK + LD (CVDU_ATTR),A ; SAVE IT + LD DE,0 ; ROW = 0, COL = 0 + CALL CVDU_XY ; SEND CURSOR TO TOP LEFT + 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 ; SIGNAL SUCCESS RET @@ -160,17 +169,6 @@ CVDU_VDAQRY: RET CVDU_VDARES: - LD A,$0E ; ATTRIBUTE IS STANDARD WHITE ON BLACK - LD (CVDU_ATTR),A ; SAVE IT - - LD DE,0 ; ROW = 0, COL = 0 - CALL CVDU_XY ; SEND CURSOR TO TOP LEFT - 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 RET diff --git a/Source/HBIOS/ef.asm b/Source/HBIOS/ef.asm index 8a7e6db3..9d6228f3 100644 --- a/Source/HBIOS/ef.asm +++ b/Source/HBIOS/ef.asm @@ -570,6 +570,13 @@ EF_VDAINI: LD A,L OR H CALL NZ,EF_LOADFONTS + + CALL EF_CLEARALL + CALL EF_LOADCSTYLE + LD DE,0 + LD (EF_VDA_OFFSET),DE + CALL EF_VDASCP + XOR A RET ; @@ -586,13 +593,8 @@ EF_VDAQRY: ; EF_VDARES: ; VIDEO RESET -; SOFT RESET, CLEAR SCREEN, HOME CURSOR, RESTORE ATTRIBUTE/COLOR DEFAULTS +; SOFT RESET ; - CALL EF_CLEARALL - CALL EF_LOADCSTYLE - LD DE,0 - LD (EF_VDA_OFFSET),DE - CALL EF_VDASCP XOR A RET ; diff --git a/Source/HBIOS/gdc.asm b/Source/HBIOS/gdc.asm index 8d5d936e..a73a432c 100644 --- a/Source/HBIOS/gdc.asm +++ b/Source/HBIOS/gdc.asm @@ -161,8 +161,7 @@ GDC_VDAQRY: ; VIDEO INFORMATION QUERY RET ; GDC_VDARES: ; VIDEO SYSTEM RESET - ; *** TODO: RESET VIDEO SYSTEM HERE, CLEAR SCREEN, - ; CURSOR TO TOP LEFT, CLEAR ATTRIBUTES + ; *** TODO: RESET VIDEO SYSTEM HERE XOR A RET ; diff --git a/Source/HBIOS/term.asm b/Source/HBIOS/term.asm index dae95e44..1325cff2 100644 --- a/Source/HBIOS/term.asm +++ b/Source/HBIOS/term.asm @@ -54,6 +54,9 @@ TERM_ATTACH: LD A,(TERM_DEVCNT) ; GET NEXT DEVICE NUMBER TO USE LD B,A ; PUT IT IN B PUSH HL ; SAVE VDA INSTANCE DATA PTR +; + LD A,C ; VIDEO UNIT TO A + LD (TERM_VDADEV),A ; SAVE IT ; ; SETUP EMULATOR MODULE FUNC TBL ADDRESS BASED ON DESIRED EMULATION ; EMULATOR PASSES BACK IT'S FUNC TBL ADDRESS IN DE @@ -99,22 +102,18 @@ TERM_RESET: 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 + ; RESET THE ATTACHED VDA DEVICE + LD B,BF_VDARES ; FUNC: RESET + LD A,(TERM_VDADEV) ; GET VDA UNIT NUM + LD C,A ; PUT IN C + JP ANSI_VDADISP ; CALL THE VDA DRIVER ; ;====================================================================== ; TERMINAL DRIVER PRIVATE DATA ;====================================================================== ; TERM_DEVCNT .DB 0 ; TERMINAL DEVICE COUNT +TERM_VDADEV .DB 0 ; ATTACHED VDA UNIT ; ;====================================================================== ; EMULATION MODULES diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index 9849f787..0fecbb62 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -249,7 +249,7 @@ TMS_INIT: TMS_INIT1: CALL TMS_CRTINIT ; SETUP THE TMS CHIP REGISTERS 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) CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER #ENDIF @@ -335,6 +335,7 @@ TMS_VDAINI: ; RESET VDA ; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA CALL TMS_VDARES ; RESET VDA + CALL TMS_CLEAR ; CLEAR SCREEN XOR A ; SIGNAL SUCCESS RET @@ -350,30 +351,16 @@ TMS_VDARES: #IF (CPUFAM == CPU_Z180) CALL TMS_Z180IO #ENDIF - CALL TMS_CRTINIT + CALL TMS_CRTINIT1A #IF (!USELZSA2) ; WE WANT TO RELOAD THE FONT ON RESET, BUT THIS IS NOT CURRENTLY ; 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 -; -; 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 - DEC A - LD (TMS_CURSAV),A - CALL TMS_SETCUR ; SET CURSOR - - XOR A ; SIGNAL SUCCESS RET TMS_VDADEV: @@ -634,6 +621,8 @@ TMS_CRTINIT1: LD A,D OR E JR NZ,TMS_CRTINIT1 +; +TMS_CRTINIT1A: ; ; INITIALIZE VDU REGISTERS LD C,0 ; START WITH REGISTER 0 @@ -655,6 +644,26 @@ TMS_CRTINIT2: 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 ;---------------------------------------------------------------------- ; @@ -707,7 +716,7 @@ TMS_STACK .DW 0 ; ; VIRTUAL CURSOR IS GENERATED BY DYNAMICALLY CHANGING FONT GLYPH ; 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 ; NEEDS TO BE CHANGED THE PROCESS IS UNDONE. IT IS ESSENTIAL THAT ; ALL DISPLAY CHANGES BE BRACKETED WITH CALLS TO TMS_CLRCUR PRIOR TO diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index b4c1a4c9..faef9888 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -165,6 +165,12 @@ VDU_VDAINI: ; RESET VDA ; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA CALL VDU_VDARES ; RESET VDA + LD DE,0 + LD (VDU_OFFSET),DE + CALL VDU_XY + LD A,' ' + LD DE,1024*16 + CALL VDU_FILL XOR A ; SIGNAL SUCCESS RET @@ -176,13 +182,6 @@ VDU_VDAQRY: RET VDU_VDARES: - LD DE,0 - LD (VDU_OFFSET),DE - CALL VDU_XY - LD A,' ' - LD DE,1024*16 - CALL VDU_FILL - XOR A RET diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index 8b78c38a..cbe7f6fe 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -180,18 +180,7 @@ VGA_VDAINI: ; RESET VDA ; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA CALL VGA_VDARES ; RESET VDA - XOR A ; SIGNAL SUCCESS - RET - -VGA_VDAQRY: - LD C,$00 ; MODE ZERO IS ALL WE KNOW - LD D,VGA_ROWS ; ROWS - LD E,VGA_COLS ; COLS - LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET - XOR A ; SIGNAL SUCCESS - RET -VGA_VDARES: LD A,$07 ; ATTRIBUTE IS STANDARD WHITE ON BLACK LD (VGA_ATTR),A ; SAVE IT XOR A ; ZERO (REVERSE, UNDERLINE, BLINK) @@ -205,6 +194,18 @@ VGA_VDARES: LD DE,0 ; ROW = 0, COL = 0 CALL VGA_XY ; SEND CURSOR TO TOP LEFT + XOR A ; SIGNAL SUCCESS + RET + +VGA_VDAQRY: + LD C,$00 ; MODE ZERO IS ALL WE KNOW + LD D,VGA_ROWS ; ROWS + LD E,VGA_COLS ; COLS + LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET + XOR A ; SIGNAL SUCCESS + RET + +VGA_VDARES: LD HL,$0404 | VGA_89BIT; SET VIDEO ENABLE BIT CALL VGA_SETCFG ; DO IT diff --git a/Source/HBIOS/vrc.asm b/Source/HBIOS/vrc.asm index c224c9de..51d50e63 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -117,18 +117,6 @@ VRC_VDAINI: ; RESET VDA ; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA CALL VRC_VDARES ; RESET VDA - XOR A ; SIGNAL SUCCESS - RET - -VRC_VDAQRY: - LD C,$00 ; MODE ZERO IS ALL WE KNOW - LD D,VRC_ROWS ; ROWS - LD E,VRC_COLS ; COLS - LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET - XOR A ; SIGNAL SUCCESS - RET - -VRC_VDARES: XOR A ; CLEAR ATTRIBUTES (REV VIDEO OFF) LD (VRC_ATTR),A ; SAVE IT DEC A ; INIT CUR NESTING, INIT TO HIDDEN @@ -143,7 +131,18 @@ VRC_VDARES: LD DE,0 ; ROW = 0, COL = 0 CALL VRC_XY ; SEND CURSOR TO TOP LEFT CALL VRC_SHOWCUR ; NOW SHOW THE CURSOR -; + XOR A ; SIGNAL SUCCESS + RET + +VRC_VDAQRY: + LD C,$00 ; MODE ZERO IS ALL WE KNOW + LD D,VRC_ROWS ; ROWS + LD E,VRC_COLS ; COLS + LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET + XOR A ; SIGNAL SUCCESS + RET + +VRC_VDARES: XOR A ; SIGNAL SUCCESS RET diff --git a/Source/ver.inc b/Source/ver.inc index 84a9fb0e..74c649f4 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.23" +#DEFINE BIOSVER "3.5.0-dev.24" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index fdf43c6a..6eacc0c9 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.23" + db "3.5.0-dev.24" endm