home *** CD-ROM | disk | FTP | other *** search
-
- ; BYE500 Time insert
- ; Author: Joe Wright
- ; Date: 28 July 1985
- ; Version: 1.0
-
- ; This insert will read the time from the CCS 2805 Wallclock
- ; and place it at RTCBUF as follows:
- ;
- ; Real-Time clock buffer - is organized as HH:MM:SS YYYY/MM/DD
- ;
- ;RTCBUF:
- ; DB 99H,99H,99H ;HH:MM:SS (BCD 24HR TIME) 00:00:00-23:59:59
- ; DB 19H,84H,01H,31H ;YYYY/MM/DD (BCD ISO DATE)
- ;
- ; Binary values are also stored for CCHOUR and CCMIN
- ;
- ; BYE500 saves and restores registers before/after calling TIME.
- ;
-
- BASE EQU 38H ; Base address of CCS 2805 pio
-
- ADATA EQU BASE+4 ; Port a data
- ACMND EQU BASE+5 ; Port a command
- BDATA EQU BASE+6 ; Port b data
- BCMND EQU BASE+7 ; Port b command
-
- HOLD EQU 64 ; Hold 5832 to set up read/write
- WR EQU 32 ; Read 5832
- RD EQU 16 ; Write 5832
-
- BSYA EQU 128 ; Address delay, 6 us.
- BSYH EQU 64 ; Main clock hold delay, 150 us.
-
- MODE0 EQU 0FH ; Pio channel a output mode
- MODE3 EQU 0CFH ; Pio channel b control mode
-
- ;
- ; set port a to output mode
- ;
- TIME:
- MVI A,MODE0 ; Output mode
- OUT ACMND ; Cha command port
- MVI A,3 ; Disable interrupts
- OUT ACMND ; Cha command port
- ;
- ; set port b to read the clock
- ;
- MVI A,MODE3 ; Control mode
- OUT BCMND ; Chb command port
- MVI A,0CFH ; To read clock
- OUT BCMND ; Chb command port
-
- LXI H,RTCBUF ; Point to real time clock buffer in Bye500
-
- MVI A,5 ; High order hours
- CALL TENS
- ANI 30H ; Mask off high bits in high nybble
- MOV B,A ; Save it for now
- MVI A,4 ; Low order hours
- CALL ONES
- CALL BCDBIN ; Convert to binary
- STA CCHOUR
-
- MVI A,3 ; High minutes
- CALL TENS
- MVI A,2 ; Low minutes
- CALL ONES
- CALL BCDBIN
- STA CCMIN
-
- MVI A,1 ; High seconds
- CALL TENS
- XRA A ; Low seconds
- CALL ONES
-
- MVI M,19H ; Declare 20th century
- INX H ; Point to year
-
- MVI A,12 ; High year
- CALL TENS
- MVI A,11 ; Low year
- CALL ONES
-
- MVI A,10 ; High month
- CALL TENS
- MVI A,9 ; Low month
- CALL ONES
-
- MVI A,8 ; High date
- CALL TENS
- MVI A,7 ; Low date
- CALL ONES
- ;
- RET ; End of TIME, return to caller
-
- TENS: CALL RDCLK ; Get it
- CALL SHL4 ; To high nybble
- MOV B,A ; Save it a moment
- RET
-
- ONES: CALL RDCLK
- ORA B ; Or in the high nybble
- MOV M,A ; Save it in memory
- INX H ; Point to next byte
- RET
-
- SHL4:
- RAL
- RAL
- RAL
- RAL ; Shift low to high nybble
- RET
-
- RDCLK: ORI HOLD ; Acc has clock address
- OUT ADATA
- RDC1: IN BDATA
- ANI BSYH
- JNZ RDC1
- IN ADATA
- ORI RD
- OUT ADATA
- RDC2: IN BDATA
- ANI BSYA
- JNZ RDC2
- IN BDATA
- ANI 0FH ; Mask hi order
- PUSH PSW
- XRA A
- OUT ADATA
- POP PSW
- RET
- ;
- ; END OF B5-2805.INS
- ;