home *** CD-ROM | disk | FTP | other *** search
- ;----------------------------------------------------------------------
- ;
- ; B5C-ICM.INS Intersil ICM7170 Clock Chip 02 Sep 86
- ; Clock routine for the the BYE5xx program
- ; Clock usable in 6502 and Z80 systems and possibly others
- ; By George F. Reding [72436,45]
- ;
- ; Note: A clock set program in 8080 code is available named MSXRTC.ASM
- ; By George F. Reding [72436,45]
- ;
- ;----------------------------------------------------------------------
- ;
- IO00 EQU 00H ; Available i/o ports available at "J5" on
- IO10 EQU 10H ; Morrow hard disk systems
- IO20 EQU 20H ; You may have to install the 40-pin header
- IO30 EQU 30H ; strip at that location as I have done.
- ;
- ; If using a Morrow hard disk set CLDATA to IOnn+1 and CLREGL to IOnn
- ; On other machines use your appropriate i/o port c/s line & address.
- ;
- CLDATA EQU IO00+1 ; Rtc data port
- CLREGL EQU IO00 ; Register latch
- ;
- ; Time, date, day of week, and alarm is moved to the ICM7170 buffers
- ; on receipt of desire to read the 1/100th seconds of the time. This
- ; short insert for BYE5xx is only reading the time, date, and day of
- ; week.
- ;
- ; To read the alarm values, send to register latch the values of 08H
- ; thru 0FH for the 1/100 secs, hours, mins, seconds, month, day, year,
- ; and day of week, respectively. If you can use the alarm, you can
- ; imitate the clock/date/weekday reading.
- ;
- ;
- CLKCEN EQU 019H ; Bcd for 20th century for BYE
- ;
- TIME: PUSH PSW ; Save in case used elsewhere
- ;
- ; This will move the data to the clock's internal buffer
- ;
- MVI A,00H ; Counter 1/100 seconds
- OUT CLREGL ; Send to clock register latch
- ;
- ; All values are now read from the clock's buffer
- ;
- IN CLDATA ; Get binary 1/100 secs, not used in BYE
- ;
- MVI A,01H ; Counter hours
- OUT CLREGL ; Send to clock register latch
- IN CLDATA ; Get binary hours
- STA CCHOUR ; Store binary hours
- CALL BINBCD ; Convert to bcd
- STA RTCBUF+0 ; Store bcd hours
- ;
- MVI A,02H ; Counter minutes
- OUT CLREGL ; Send to clock register latch
- IN CLDATA ; Get binary minutes
- STA CCMIN ; Store binary minutes
- CALL BINBCD ; Convert to bcd
- STA RTCBUF+1 ; Store bcd minutes
- ;
- MVI A,03H ; Counter seconds
- OUT CLREGL ; Send to clock register latch
- IN CLDATA ; Get binary seconds
- CALL BINBCD ; Convert to bcd
- STA RTCBUF+2 ; Store bcd seconds
- ;
- MVI A,04H ; Counter month
- OUT CLREGL ; Send to clock register latch
- IN CLDATA ; Get binary month
- CALL BINBCD ; Convert to bcd
- STA RTCBUF+5 ; Store bcd month
- ;
- MVI A,05H ; Counter day
- OUT CLREGL ; Send to clock register latch
- IN CLDATA ; Get binary day
- CALL BINBCD ; Convert to bcd
- STA RTCBUF+6 ; Store bcd day
- ;
- MVI A,06H ; Counter year
- OUT CLREGL ; Send to clock register latch
- IN CLDATA ; Get binary year
- CALL BINBCD ; Convert to bcd
- STA RTCBUF+4 ; Store bcd year
- ;
- ; Day of week is not used in the BYE buffer so is remarked out here
- ;
- ; MVI A,07H ; Counter day of week
- ; OUT CLREGL ; Send to clock register latch
- ; IN CLDATA ; Get binary day of week
- ; CALL BINBCD ; Convert to bcd
- ; STA *UNUSED* ; Store bcd week
- ;
- MVI A,CLKCEN ; Set century value for RTCBUF+3
- STA RTCBUF+3 ; and store it
- ;
- POP PSW ; Restore reg initially saved
- RET
- ;
- ; End of the CLOCK routine
- ;
- Intersil ICM7170 Clock Chip 02