mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Support QP/M TIMDAT Routine
QP/M is a CP/M 2.2 replacement for BDOS/CCP. However, it adds it's own concept of date/time stamping. Support for the QP/M date/time routine has been added. You can configure QP/M to find the vector at address 0x0010. A sidenote on QP/M. By default, it uses 2 bytes at address 0x0008 to store the current drive/user. This will conflict with RomWBW's use of RST 08 for API function calls. I recommend using address 0x000E when configuring QP/M for the location of the current drive/user.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
For inclusion in HBIOS the .bin format files must be convert to assembler .asm format.
|
||||
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 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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user