home *** CD-ROM | disk | FTP | other *** search
- ;
- ;**********************************************************************
- ;
- ; Generic OKI Semiconductor MSM5832 Clock Routine for BYE5
- ;
- ; The 5832 is wired with a 74LS138, 74LS85 and input tristate gate
- ; based at 0F0h. 0F0h is the seconds 'units' and 0FCh is the year
- ; 'tens' place. In all cases, the least significant nibble is used
- ; for the clock data, the most significant nibble is garbage. Yea, I
- ; know it is not the most elegant way to do it, but it is cheap. Of
- ; this there is no doubt. My implementation is on the unused prototype
- ; area of a Mullen S100 bus extender. 5 chips, one oddball crystal -
- ; 32khz - and a couple of hearing aid batteries for power down standby
- ; (my clock has been running for over two years without changing them)
- ; ... well under 20 bucks and an hour to build. Nothing fancy, but
- ; it does work very well.
- ;
- ; Leave me a message in my MINIRBBS and Ill drop ya a drawing of it.
- ;
- ; JP Sojak - sysop
- ; Smokin Silicon RCPM
- ; (312) 941-0049
- ;
- ; 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)
- ;
- ; BYE5 saves and restores registers before/after calling TIME.
- ;
- CBASE EQU 0F0h
- ;
- TIME: IN CBASE+5 ; Hours tens place
- ANI 00000011B
- MOV B,A
- IN CBASE+4 ; Hours ones place
- CALL SHFTIT
- STA RTCBUF+0
- ;
- IN CBASE+3 ; Now the tens of minutes
- ANI 00000111B
- MOV B,A ; save it at <b>
- IN CBASE+2
- CALL SHFTIT
- STA RTCBUF+1
- ;
- IN CBASE+1 ; Now the tens of seconds
- ANI 00000111B
- MOV B,A
- IN CBASE+0 ; now the ticks
- CALL SHFTIT
- STA RTCBUF+2
- ;
- ; DB 19H,84H,01H,31H ;YYYY/MM/DD (BCD ISO DATE)
- ;
- MVI A,19H
- STA RTCBUF+3
- MVI A,84H
- STA RTCBUF+4
- ;
- IN CBASE+0Ah ; Now the tens of month3
- ANI 00000001B
- MOV B,A
- IN CBASE+9 ; ones of months
- CALL SHFTIT
- STA RTCBUF+5
- ;
- IN CBASE+8 ; Now the day
- ANI 00000011B
- MOV B,A
- IN CBASE+7
- CALL SHFTIT
- STA RTCBUF+6
- ;
- CLKEXIT:
- LDA RTCBUF ; Pick up BCD HH
- CALL BCDBIN ; Convert to binary
- STA CCHOUR ; For BYE5
- LDA RTCBUF+1 ; Pick up BCD MM
- CALL BCDBIN ; Convert to binary
- STA CCMIN ; For BYE
- RET ; And return (for now..)
-
- SHFTIT: PUSH PSW ; Save the units digit
- MOV A,B ; Recover the Tens
- RLC
- RLC
- RLC
- RLC ; made it the MSN
- MOV B,A ; save tens here
- POP PSW ; get the units again
- ANI 00001111B ; and mask crap off
- ORA B ; OR in the tens place
- RET ; and return with it in <a>
- ;
- ;**********************************************************************
- ;
- ; This is the end of the TIME insert for BYE500 and up.
- ; Replace the existing BYE5 TIME code with this insert.
- ; It SHOULD work fine...
- ;
- ;**********************************************************************
- ;