home *** CD-ROM | disk | FTP | other *** search
- ; DATE 10/07/83 10:48 last revision
- ;
-
- TITLE 'Sets Compupro Clock'
- ;
- ; SETTIME.ASM
- ; DATE 08/29/83 19:47
- ; by: H.M. Van Tassell, 120 Hill Hollow Rd, Watchung NJ 07060 (201)755-5372
- ;
- ; This is the standard Compupro program to set the system support clock and
- ; it has been modified to include the day of the week byte. This byte is used
- ; by some programs ie COMM7 to show the day of the week.
- ;
- ;
-
- BASE EQU 50H
- CLKCMD EQU BASE+10
- CLKDATA EQU BASE+11
- BDOS EQU 0005H
- READ EQU 10H
- WRITE EQU 20H
- HOLD EQU 40H
-
- ORG 100H
-
-
-
- LXI SP,STACK
- START LXI D,SIGNON
- CALL PMSG
- CALL GETCHAR
- CPI 'X'
- JZ 0000H
- CPI 'S'
- JZ SETTIME
- CPI 'P'
- JZ PTIME
- CPI 'C'
- JZ FOREVER
- LXI D,ERROR
- CALL PMSG
- JMP START
-
- SETTIME CALL GETTIME
- LXI H,DTABLE
- LXI D,ATABLE
- MVI B,14
- MVI A,HOLD
- OUT CLKCMD
- SET1 DCR B
- JNZ HERE
- MVI A,0
- OUT CLKCMD
- LXI D,TIMEIS
- CALL PMSG
- CALL RDDAY
- CALL CLKPRNT
- JMP START
- HERE MOV A,M
- MOV C,A
- LDAX D
- CALL WRTDGT
- INX H
- INX D
- JMP SET1
-
- GETTIME LXI D,ASKDAY
- CALL PMSG
- LXI H,DTABLE
- GET3 CALL GETCHAR
- CPI '0'
- JC GET3
- CPI '6'+1
- JNC GET3
- ANI 0FH
- MOV M,A
- INX H
- TIME LXI D,ASKTIME
- CALL PMSG
- GET1 CALL GETNUMB
- CPI 0DH
- JZ GETDATE
- ANI 0FH
- MOV M,A
- INX H
- JMP GET1
- GETDATE LXI D,ASKDATE
- CALL PMSG
- GET2 CALL GETNUMB
- CPI 0DH
- RZ
- ANI 0FH
- MOV M,A
- INX H
- JMP GET2
-
- GETNUMB CALL GETCHAR
- CPI 0DH
- RZ
- CPI '0'
- JC GETNUMB
- CPI '9'+1
- JNC GETNUMB
- RET
-
- WRTDGT PUSH PSW
- ADI HOLD
- OUT CLKCMD
- CPI 5+HOLD
- JNZ WRT1
- MOV A,C
- ADI 08H
- JMP WRT3
- WRT1 CPI 8+HOLD
- JNZ WRT2
- MOV A,C
- ANI 03H
- JMP WRT3
- WRT2 MOV A,C
- WRT3 OUT CLKDATA
- POP PSW
- ADI WRITE+HOLD
- OUT CLKCMD
- SUI WRITE
- OUT CLKCMD
- RET
-
- RDDGT ADI READ
- OUT CLKCMD
- CPI 05H+READ
- IN CLKDATA
- RNZ
- SUI 08H
- RET
-
- CLKPRNT LXI H,RTABLE
- CALL PRINTWO
- MVI A,'/'
- CALL PCHAR
- CALL PRINTWO
- MVI A,'/'
- CALL PCHAR
- CALL PRINTWO
- MVI A,' '
- CALL PCHAR
- MVI A,' '
- CALL PCHAR
- CALL PRINTWO
- MVI A,':'
- CALL PCHAR
- CALL PRINTWO
- MVI A,':'
- CALL PCHAR
- CALL PRINTWO
- RET
-
- PRINTWO MOV A,M
- CALL RDDGT
- ADI 30H
- CALL PCHAR
- INX H
- MOV A,M
- CALL RDDGT
- ADI 30H
- CALL PCHAR
- INX H
- RET
-
- PTIME LXI D,TIMEIS
- CALL PMSG
- CALL RDDAY
- CALL CLKPRNT
- JMP START
-
- FOREVER MVI A,0AH
- CALL PCHAR
- FOR1 MVI A,0DH
- CALL PCHAR
- CALL CLKPRNT
- MVI A,0
- CALL RDDGT
- MOV B,A
- FOR2 MVI A,0
- CALL RDDGT
- CMP B
- JZ FOR2
- JMP FOR1
-
- GETCHAR PUSH H
- MVI C,01
- CALL BDOS
- POP H
- CPI 'a'
- JC SKIP
- CPI 'z'+1
- JNC SKIP
- ANI 5FH
- SKIP ANI 7FH
- CPI 03H
- JZ 0000H
- RET
-
- PCHAR PUSH D
- MOV E,A
- MVI C,02H
- PUSH H
- CALL BDOS
- MVI C,0BH
- CALL BDOS
- POP H
- POP D
- ORA A
- CNZ GETCHAR
- RET
-
- RDDAY MVI A,6 ;day of week
- CALL RDDGT
- RLC ; *2 for tbl offset
- LXI H,DTBL ;point to day table
-
- TBLO MOV E,A ;shift factor..
- MVI D,0 ;..into de-pair.
- DAD D ;add offset to hl-pair
- MOV E,M ;put address into..
- INX H
- MOV D,M ;..de-pair. then..
- CALL PMSG ;PRINT IT
- RET
-
- PMSG PUSH H
- MVI C,09H
- CALL BDOS
- POP H
- RET
-
-
- SIGNON DB 0DH,0AH,0DH,0AH,'Time and date test routines for '
- DB 'System Support 1',0DH,0AH,0DH,0AH
- DB 'Please type one of the following commands:',0DH,0AH
- DB 'S - Set the time and date',0DH,0AH
- DB 'P - Print the time and date once',0DH,0AH
- DB 'C - Continuously print the time and date',0DH,0AH
- DB 'X - Exit to operating system',0DH,0AH
- DB 0DH,0AH,'Command: $'
-
- ERROR DB 0DH,0AH,'That was not one of the commands.'
- DB 0DH,0AH,'Please try again $'
-
- ASKTIME DB 0DH,0AH,'What is the time ? (HH:MM:SS) $'
-
- ASKDATE DB 0DH,0AH,'What is the date ? (MM/DD/YY) $'
-
- ASKDAY DB 0DH,0AH,'Day of the week ? (Sun=0,Sat=6) $'
-
- TIMEIS DB 0DH,0AH,'The time and date are: $'
-
-
- DTBL DW SUN ;daytable
- DW MON
- DW TUE
- DW WED
- DW THU
- DW FRI
- DW SAT
-
- SUN DB 'Sunday $'
- MON DB 'Monday $'
- TUE DB 'Tuesday $'
- WED DB 'Wednesday $'
- THU DB 'Thursday $'
- FRI DB 'Friday $'
- SAT DB 'Saturday $'
-
-
- ATABLE DB 6,5,4,3,2,1,0,10,9,8,7,12,11
-
- RTABLE DB 10,9,8,7,12,11,5,4,3,2,1,0
-
- DTABLE DS 13
-
- DS 32
- STACK
-