; ; SCLOCK.Z80 - JTH 01/20/94 ; (from ZCNFGCFG.SRC) ; ;--------------------------------------------------------- vers equ 19 ;datefn version number ; SCLOCK Patch offsets fname equ 0dh ;default cfg filename altc equ 16h ;time correction flag arch equ 17h ;archive flag deffn equ 18h ;default fn/ft ;--------------------------------------------------------- ;DATA FOR CNFG PROGRAM LINKAGE ;function definitions - **needed for CASE Table entries** switch equ 0 ;toggle bit n in a byte (n is specified) text equ 1 ;replace a text string of specified length duspec equ 2 ;replace a ZCPR style DU specification (NOT DIR:!) hexrad equ 3 ;edit byte/word using HEX radix decrad equ 4 ;edit byte/word using decimal radix filesp equ 6 ;edit ZCPR3 du:fn.ft togl3 equ 7 ;toggle to one of three options: 001B, 010B, 100B togltf equ 8 ;toggle a byte between 0ffh and 0 ;ASCII definitions ;these are convenient, but only required if you wish ;to use them in text or data fields (including HELP) ctlc equ 3 bs equ 8 ;backspace tab equ 9 ;tab lf equ 10 ;line feed cr equ 13 ;carriage return spc equ 32 ;space char ;========================================================= ; MACRO DEFINITIONS ;You don't HAVE to use the macros. But it does make it ;easier to fill in the tables! ;this macro is used for creating a CASE table ;entry which specifies toggling or setting a ;single bit (0..7) in a configuration data byte. ;It is useful when the 'switch' function is named. bitmap macro a,sub,off,bit,scr,dat db '&A' dw sub,off db 1 shl bit ;;make a mask byte dw scr,dat endm ;========================================================= ;macro parameter definitions ; A = the character used in the screen for a menu item ; off = byte offset in config block ; sub = subroutine for translation to screen ; scr = screen location ; dat = extra data word if required. Normally 0 ;produces a record which is 8 bytes long ;========================================================= ;this macro is used to create a case table entry ;which contains a byte of data required by the function ;to be performed. (see table of function definitions above) vector macro a,sub,off,byte,scr,dat db '&A' dw sub,off db byte ;;a byte of data dw scr,dat endm ;************************************************************ ; START OF OVERLAY CODE ;************************************************************ ;The next 13 bytes must remain in this location. rst 0 ;for safety - file won't execute dw amenu ;for relocation of addresses, this ;points to the NEXT location. ;first MENU list must be here. All names are local. amenu: dw amenu,amenu,ascrn,acase,ahelp ;MENU A ;========================================================= ;Case table used for first menu & screen: ;========================================================= acase: db (acasex-acase1)/(acase2-acase1) ;number of cases db acase2-acase1 ;length of each record ; macro .single char menu selector ; | | .function (see above) ; | | | .offset in cnfg block ; | | | | .function dependent data ; | | | | | .screen location ; | | | | | | ;acse1: bitmap 0, switch, obyte0, crtflg, ascrl0, yndata ; | ; address of data structure used by function._| ; ;The first two entries in the case table must be labeled to ;provide data for the calculation at ACASE:. Subsequent ;entries (one for each menu selection) need not be labeled. acase1: vector 0, text, fname, 8, ascr0, 0 acase2: vector 1, text, deffn, 16, ascr1, 0 vector 2, togltf, altc, 1, ascr2, yndata vector 3, togltf, arch, 1, ascr3, yndata ; ;the next entry is a label which terminates the list. ;It is required for use in the calculation at ACASE: acasex: ;label used to calc number of entries ;========================================================= ascrn: ;screen image for first screen ;db cr,lf ;ensure clean top of screen ;Title line db cr,lf db tab,tab db 1,' SCLOCK VERS ',vers/10+'0','.',vers mod 10+'0' db ' DEFAULTS ',2 db cr,lf,lf db 'Default CFG filename............................ 0) ' ascr0: db ' ',cr,lf ; db 'Default SCLOCK.COM name/location [DU:FN.FT]..... 1) ' ascr1: db ' ',cr,lf db 'Use automatic linear time correction............ 2) ' ascr2: db ' ',cr,lf ; db 'Archive SCLOCK.COM after SET history is added... 3) ' ascr3: db ' ' db 0 ;termination ;========================================================= ; ; FUNCTION DATA LIST ;data pairs for representing bit values in screen image. ;they can also be used for function 8 display (True/False). ;these are null terminated strings (note the 'defz'). yndata: defz 'YES' ;for 1=on defz 'no ' ;========================================================= ; ahelp: ;help screen for menu A db cr,lf db tab,tab db 1,' SCLOCK VERS ' db vers/10+'0','.',vers mod 10+'0' db ' OPTION DEFAULTS ',2 db cr,lf,lf ; db 1,'Default CFG Filename:',2,cr,lf db 'You may specify the default configuration overlay ' db '(CFG) filename. A',cr,lf db 'maximum of 8 characters may be entered.' db cr,lf,lf ; db 1,'Automatic Time Correction',2,cr,lf db 'You may turn Automatic Time Correction on or off. ' db ' If it is turned',cr,lf db 'off, the Update function will update the ZSDOS system ' db 'clock using the',cr,lf db 'uncorrected SmartWatch time. If it is turned on, ' db 'the ZSDOS clock will',cr,lf db 'be updated using corrected SmartWatch time.' db cr,lf,lf ; db 1,'Archive SCLOCK.COM',2,cr,lf db 'You may choose to have SCLOCK.COM archived after ' db 'new SET data is written to',cr,lf db 'it if you desire. Otherwise, SCLOCK.COM will be ' db 'marked as changed after',cr,lf db 'new SET data is written.' ; db 0 ;=========================================================