Files
RomWBW/Source/ZSDOS/Clock/zsdosbio.z80
2014-09-08 04:11:55 +00:00

105 lines
2.6 KiB
Z80 Assembly
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
TITLE "ZSDOS Spec BIOS Clock Interface - (ZSDOS-BIOS)"
SUBTTL "Description of Clock Module"
;===================================================================
; ZSDOSBIO.Z80
; ZSDOS Clock driver for BIOSes that implement ZSDOS Clock interface
; from a BIOS Jump.
; Harold F. Bower
; Version: 3 Oct 88
;===================================================================
VERS EQU 01
.Z80
NAME ZSBIOS
MACLIB CLOCK.LIB
COMMON /_CLKID_/
DESCST: DEFW 0 ; Ptr to statyr
CLKNAM: DEFB 'ZSDOS-spec BIOS Vector ' ; Exactly 24 chars
DEFB VERS/10+'0','.',VERS MOD 10 + '0',0
DESCR: DEFB ' Interface for BIOSes having ZSDOS Clock compliant',CR,LF
DEFB ' Jump table vector',0
IF [$-DESCST] > 256
OVER2
ENDIF
PAGE
SUBTTL "Configurable Clock Hardware Parameters"
COMMON /_PARM_/
PARBAS: DEFW NPARMS ; No parameters to set
DEFW STRS
NP0:
XOFFST EQU $+1 ; BIOS offset for entry vector
DEFB BYTE
DEFW 03CH ; ..default
NPARMS EQU ($-NP0)/3
STRS: DEFB 'Offset to BIOS Clock Jump',0
PAGE
SUBTTL "Clock Code - ZSDOS BIOS Vector"
WBOOT EQU 0 ; Warm Boot Vector
B_TIME EQU 18*3 ; Offset addr in BIOS
CSEG
;-------------------------------------------------------------
; Z S D O S C L O C K H E A D E R
;-------------------------------------------------------------
; Enter: HL points to a 6-byte buffer to Get/Set time
; Exit : A = 1 on Success, A = FFH if error
; HL points to last char in buffer
JP DOCLOK ; Jump to Read Clock
JP DOCLOK ; Jump to Set Clock
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; R E A D a n d S E T T h e C l o c k
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DOCLOK: EX DE,HL ; Put Destination buffer back in DE
BIOADR EQU $+1
LD HL,0000 ; Has it yet been set?
LD A,H
OR L
JR NZ,DOCLK0 ; ..jump if so
LD HL,(0001) ; Else get Warm Boot entry
BIOOFF EQU $+1
LD L,00 ; Set offset to Clock entry
LD (BIOADR),HL ; ..add to code entry
DOCLK0: JP (HL) ; Set address to stack
PAGE
SUBTTL "Run-Time Configuration of Ports and Masks"
; This code installs configurable items into the clock module
; Enter with DE pointing to the physical address of the relocatable module
COMMON /_POST_/
SETBYT XOFFST,BIOOFF ; Set the BIOS offset in code
RET ; Nothing else to install
PAGE
SUBTTL "Pre-Execution Clock Checks"
; This module is executed just prior to installing the module to insure
; that a valid clock is present
; Enter with DE pointing to beginning of relocated clock CSEG
COMMON /_PRE_/
INCLUDE PRECLOCK.LIB
END