diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 82e300d9..969992e0 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -144,6 +144,43 @@ CBXSIZ .EQU $ - CBX .ECHO " bytes.\n" ; ;================================================================================================== +; TIMDAT ROUTINE FOR QP/M +;================================================================================================== +; +#IFDEF PLTWBW + #IF QPMTIMDAT +; +TIMDAT: + ; GET CURRENT DATE/TIME FROM RTC INTO BUFFER + LD B,BF_RTCGETTIM ; HBIOS GET TIME FUNCTION + LD HL,CLKDAT ; POINTER TO BUFFER + RST 08 ; DO IT +; + ; CONVERT ALL BYTES FROM BCD TO BINARY + LD HL,CLKDAT ; BUFFER + LD B,7 ; DO 7 BYTES +TIMDAT1: + LD A,(HL) + CALL BCD2BYTE + LD (HL),A + INC HL + DJNZ TIMDAT1 +; + ; SWAP BYTES 0 & 2 TO MAKE BUFFER INTO QP/M ORDER + LD A,(CLKDAT+0) + PUSH AF + LD A,(CLKDAT+2) + LD (CLKDAT+0),A + POP AF + LD (CLKDAT+2),A +; + LD HL,CLKDAT ; RETURN BUFFER ADDRESS + RET +; + #ENDIF +#ENDIF +; +;================================================================================================== ; CHARACTER DEVICE MAPPING ;================================================================================================== ; @@ -346,11 +383,13 @@ BOOT: #ENDIF CALL RESCPM ; RESET CPM ; -#IF DEBUG +#IF AUTOSUBMIT + #IF DEBUG CALL PRTSTRD .DB "\r\nPerforming Auto Submit...$" -#ENDIF + #ENDIF CALL AUTOSUB ; PREP AUTO SUBMIT, IF APPROPRIATE +#ENDIF ; #IF DEBUG CALL PRTSTRD @@ -1718,6 +1757,12 @@ SLICE .DB 0 ; CURRENT SLICE SPS .DW 0 ; SECTORS PER SLICE STKSAV .DW 0 ; TEMP SAVED STACK POINTER ; +#IFDEF PLTWBW + #IF QPMTIMDAT +CLKDAT .FILL 7,0 ; RTC CLOCK DATA BUFFER + #ENDIF +#ENDIF +; #IFDEF PLTWBW BNKBIOS .DB 0 ; BIOS BANK ID BNKUSER .DB 0 ; USER BANK ID @@ -2317,6 +2362,17 @@ INIT3: LD DE,STR_TPA2 ; AND TPA SUFFIX CALL WRITESTR CALL NEWLINE ; FORMATTING +; +; SETUP QP/M TIMDAT ROUTINE VECTOR IN ZERO PAGE AT 0x0010 +; +#IFDEF PLTWBW + #IF QPMTIMDAT + LD A,$C3 ; JP INSTRUCTION + LD ($0010),A ; STORE AT 0x0008 + LD HL,TIMDAT ; ROUTINE ADDRESS + LD ($0011),HL ; SET VECTOR + #ENDIF +#ENDIF ; RET ; DONE ; @@ -2328,6 +2384,9 @@ ERR_BIOMEM: ; ; ;__________________________________________________________________________________________________ +; +#IF AUTOSUBMIT +; AUTOSUB: ; ; SETUP AUTO SUBMIT COMMAND (IF REQUIRED FILES EXIST) @@ -2359,6 +2418,8 @@ AUTOSUB: LDIR ; PATCH COMMAND LINE INTO CCP RET ; DONE ; +#ENDIF +; ; ;__________________________________________________________________________________________________ DEV_INIT: diff --git a/Source/CBIOS/config.asm b/Source/CBIOS/config.asm index 3df64569..31eae617 100644 --- a/Source/CBIOS/config.asm +++ b/Source/CBIOS/config.asm @@ -2,6 +2,8 @@ ; CBIOS BUILD CONFIGURATION OPTIONS ; CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA) +AUTOSUBMIT .EQU TRUE ; PROCESS PROFILE.SUB AT STARTUP +QPMTIMDAT .EQU TRUE ; SUPPORT QP/M TIMDAT ROUTINE WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS DEBUG .EQU FALSE ; MISCELLANEOUS DEBUG TRACING diff --git a/Source/CBIOS/util.asm b/Source/CBIOS/util.asm index 3ef5e9e8..4ff1ea5d 100644 --- a/Source/CBIOS/util.asm +++ b/Source/CBIOS/util.asm @@ -460,7 +460,52 @@ HEXCONV: DAA ADC A,40H DAA - RET + RET +; +;**************************** +; A(BCD) => A(BIN) +; [00H..99H] -> [0..99] +;**************************** +; +BCD2BYTE: + PUSH BC + LD C,A + AND 0F0H + SRL A + LD B,A + SRL A + SRL A + ADD A,B + LD B,A + LD A,C + AND 0FH + ADD A,B + POP BC + RET +; +;***************************** +; A(BIN) => A(BCD) +; [0..99] => [00H..99H] +;***************************** +; +BYTE2BCD: + PUSH BC + LD B,10 + LD C,-1 +BYTE2BCD1: + INC C + SUB B + JR NC,BYTE2BCD1 + ADD A,B + LD B,A + LD A,C + ADD A,A + ADD A,A + ADD A,A + ADD A,A + OR B + POP BC + RET ; ; PRINT A BYTE BUFFER IN HEX POINTED TO BY DE ; REGISTER A HAS SIZE OF BUFFER diff --git a/Source/Fonts/fonts.txt b/Source/Fonts/fonts.txt index 19b46dd5..02d9349c 100644 --- a/Source/Fonts/fonts.txt +++ b/Source/Fonts/fonts.txt @@ -1,15 +1,27 @@ Font files for ROMWBW. +8x8: 8x8 cell, mostly IBM CGA, first 16 differ, thin font +8x11: 8x11 cell, possibly VT-100? +8x16: 8x16 cell, IBM MDA +CGA: 8x16 cell, IBM CGA, normal (thick) CGA font, rows 8-15 are unused padding + There are three fonts associated with ROMWBW supported hardware - ECB-SCG, ECB-CVDU and the ECB-VGA3. Name Format Size Board & Display Mode ------------------------------------------------------------------------------------ -font8x8u.bin 8x8 2048 ECB-SCG, ECB-VGA3 (80x60) +font8x8u.bin 8x8 2048 ECB-SCG, ECB-VGA3 (80x60), MBC-VDP font8x11u.bin 8x11 2816 ECB-VGA3 (80x43) font8x16u.bin 8x16 4096 ECB-CVDU (80x25), ECB-VGA3 (80x24, 80x25, 80x30), MBC-VDC -fontcgau.bin 8x8 4096 ECB-CVDU (80x25), MBC-VDC +fontcgau.bin 8x16 4096 ECB-CVDU (80x25), MBC-VDC + +Notes: + +- The CGA font is roughly equivalent to the 8x8 font, but padded out to 8x16. Scan lines + 8-15 are unused. The CVDU driver (8563 chip) always uses fonts defined in an 8x16 cell. + When the CVDU is configured for use with a CGA monitor, an 8x8 character cell is used, + but the font definition must still be 8x16. The CGA font is used for this. -For inclusion in HBIOS the .bin format files must be convert to assembler .asm format. +For inclusion in HBIOS the .bin format files must be converted to assembler .asm format. This is acheived using the fonttool utility and is completed automatically as part of the build process. i.e. fonts files are converted to .asm format and then copied to the HBIOS directory. diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 8fcc5a53..d00a890d 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -5908,7 +5908,7 @@ SIZ_FONTS .EQU $ - ORG_FONTS .ECHO SIZ_FONTS .ECHO " bytes.\n" ; -#IF (CVDUENABLE | VGAENABLE) | GDCENABLE | (TMSENABLE & (TMSMODE == TMSMODE_RCKBD)) +#IF (CVDUENABLE | VGAENABLE) | GDCENABLE | (TMSENABLE & ((TMSMODE == TMSMODE_RCKBD) | (TMSMODE == TMSMODE_MBC))) ORG_KBD .EQU $ #INCLUDE "kbd.asm" SIZ_KBD .EQU $ - ORG_KBD diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index d1978a41..7282c8d7 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -929,9 +929,10 @@ TMS_IDAT: #IF ((TMSMODE == TMSMODE_RCKBD) | (TMSMODE == TMSMODE_MBC)) .DB TMS_KBDST ; 8242 CMD/STATUS PORT .DB TMS_KBDDATA ; 8242 DATA PORT + .DB 0 ; FILLER + .DB 0 ; FILER #ENDIF - -TMS_PORTS: +; .DB TMS_DATREG .DB TMS_CMDREG ; @@ -1012,7 +1013,3 @@ TMS_INITVDULEN .EQU $ - TMS_INITVDU #IF (CPUFAM == CPU_Z180) TMS_DCNTL .DB $00 ; SAVE Z180 DCNTL AS NEEDED #ENDIF -; - .ECHO "TMS instance data occupies " - .ECHO $ - TMS_IDAT - .ECHO " bytes\n" diff --git a/Source/ver.inc b/Source/ver.inc index 14eda264..a2c9eb00 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.170" +#DEFINE BIOSVER "3.1.1-pre.171" diff --git a/Source/ver.lib b/Source/ver.lib index 2d68ff32..d0c154c9 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.170" + db "3.1.1-pre.171" endm