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
|
||||
|
||||
Reference in New Issue
Block a user