home *** CD-ROM | disk | FTP | other *** search
- ;-----------------------------------------------------------------------
- ;
- ; ++++ Install your TIME routine here ++++
- ;
- ; If you have a clock and wish to use TIMEON or RSPEED, please replace
- ; the following code with your clock read code. Use as many instruc-
- ; tions as you need but make sure you store binary, not BCD values in
- ; CCHOUR and CCMIN. Use RTCBUF to store BCD clock data, then use BCDBIN
- ; to convert it to binary for CCHOUR and CCMIN. See B5C-QXnn.INS as an
- ; example of handling a BCD clock, or B5C-SDS.INS for a BIOS interrupt-
- ; driven clock that runs in binary (hex). All registers are saved before
- ; TIME is called, so you don't have to save them.
- ;
- ; NOTE... Set BCD2BIN to YES if your clock routine calls BCDBIN
- ; ** FOR THE EVE SPEECH SYNTHESIZER/CLOCK CALENDAR **
- ;
- ;
- ; (Replace the following code with your own clock subroutine)
- ;
- ;
- ;**************************************************************
- ;
- ; B5C-EVE.INS A TIME INSERT FOR BYE500 AND UP
- ; NOTE: THIS IS AN INSERT -- NOT AN OVERLAY
- ; ADAPTED BY ROBERT BAKER FOR THE COLECO ADAM
- ;
- ; ADAPTED FROM:
- ; A CLOCK INSERT FOR BYE AND MBYE WRITTEN BY DONALD E ROTH, DENVER.
- ;
- ; B5C-OKI1.INS FOR BYE500 AND UP
- ; 08/14/85 NOTE: THIS IS AN INSERT -- NOT AN OVERLAY
- ; BUCKY CARR
- ; DENHUG (ZBBS) RCP/M, 303-423-3224
- ;
- ; ADAPTED FROM:
- ; A CLOCK INSERT FOR BYE AND MBYE WRITTEN BY DONALD E ROTH, DENVER.
- ;
- ; THIS IS AN INSERT FOR ADDRESSING AND READING FROM THE OKI MSM5832
- ; CLOCK CHIP AS ADDRESSED BY AN 8255 USART. IN OUR SETUP, IT HAPPENS
- ; TO BE CONNECTED TO A HEATHKIT H89 AND IS ADDRESSED AT PORT 320Q.
- ;
- ; IT SHOULD BE POSSIBLE TO USE THIS CODE FOR ANY PORTED SYSTEM, AND
- ; THE 8255 AND 5832 LEND THEMSELVES TO RELATIVELY INEXPENSIVE WIRE-
- ; WRAPPING SHOULD ONE DESIRE TO ROLL HIS OWN CLOCK BOARD. SCHEMATICS
- ; ARE AVAILABLE, AND PERHAPS SOMEWHERE DOWN THE LINE I WILL INCLUDE
- ; A SCHEMATIC WITH THIS INSERT....
- ;
- ; TO SET THE CLOCK INITIALLY WE USE A CLOCK SETTING PROGRAM WRITTEN FOR
- ; THAT SPECIFIC PURPOSE (WHICH I CANNOT LAY MY HANDS ON AT THE MOMENT,
- ; BUT WILL SEARCH FOR, FOR THE TRULY INTERESTED. IT IS WRITTEN IN BASIC.
- ;
- ; IF YOU ALSO DESIRE THE MBASIC CODE TO READ THE CLOCK FROM WITHIN
- ; A BBS PROGRAM, LET ME KNOW AND I WILL OFFER THAT UP, TOO.
- ;
- ;
- ;
- ; WHEN CALLED THIS ROUTINE WILL CHECK THE RTCBUF. IF A '99H' IS IN
- ; THE FIRST BYTE, THEN CLOCK IS INITIALIZED. NEXT, THE SECONDS ARE
- ; CHECKED, AND IF CHANGED SINCE LAST UPDATE OF RTC BUFFER, THE CLOCK
- ; IS READ AND NEW DATA COPIED TO THE RTCBUF. THE BCD HOURS AND
- ; MINUTES ARE CONVERTED TO BINARY AND STORED IN CCMIN AND CCHOUR.
- è;
- ;
- ; - BUCKY CARR, SYSOP,
- ; WORLD PEACE (ZBBS) RCP/M, 303-320-4822
- ; AND
- ; DENHUG (ZBBS) RCP/M, 303-423-3224
- ;
- ;**********************************************************************
- ;
- ;THESE EQUATES ARE NEEDED TO SET UP THE 8255 PPI TO READ FROM
- ;THE OKI MSM5832 REAL TIME CLOCK CHIP
-
- CLKD EQU 048H ;SET MODE BIT
- CLKA EQU 049H ;GROUP A MODE 0
- INPT EQU 04AH ;GROUP A MODE 1
- PPIX EQU 04BH ;GROUP A MODE 2
- EOS EQU '$' ;GROUP B MODE 0
- CS EQU 0 ;GROUP B MODE 1
- CSNOT EQU 80H ;PORT A INPUT
- CENTURY EQU 19H
- ;
- IF CLOCK
- TIME: MVI A,081H
- OUT PPIX
- MVI A,00H
- OUT CLKD
- MVI A,08FH
- OUT CLKA
- MVI A,0FH
- OUT CLKA
- CREAD: PUSH PSW
- PUSH B
- PUSH D
- PUSH H
- MVI A,00H
- STA SPCFLG
- MVI A,91H ;SET 8255 CONTROL REG
- OUT PPIX
- MVI B,00H ;5832 ADDRESS COUNTER
- LXI H,TSTG ;PUT ADDR OF 1ST MEM
- MVI A,10H+CS ;HOLD HIGH & CS HI
- OUT INPT
- PUSH PSW ;150 MICRO SECOND DELAY
- MVI A,11H
- LOOP: DCR A
- NOP
- JNZ LOOP
- POP PSW
- LOPI: MVI A,30H+CS ;SET HOLD & READ
- OUT INPT
- MOV A,B
- OUT CLKA ;ADDRS TO 5832
- NOP ;NOP & INR B MAKE UP
- INR B ;6 USEC DELAY
- IN CLKD ;INPUT DATA INTO ACCUM
- ANI 0FH
- MOV M,A
- INX H
- MOV A,B ;LAST 5832 ADDRESS?
- CPI 0DH ;IF NOT, NEXT ADDRESS
- JNZ LOPI ;SET HOLD LOW, READ LOW
- è MVI A,00H+CSNOT
- OUT INPT
- LXI H,HRS10
- MVI A,00H ;SET FLAGS TSTG+13,14
- STA MOD24 ;15, TO ZERO
- STA AMPM
- STA LEAPYR
- MOV A,M ;H10 DATA INTO ACCUM
- LDA HRS10
- ANI 08H ;IS 24 HOUR MODE SET?
- CPI 00H
- JZ TWLV ;IF NOT, SKIP TO TWLV
- MVI A,01H ;IF SO, SET FLAG
- STA MOD24
- TWLV:
- MOV A,M ;IS PM BIT SET?
- LDA HRS10
- ANI 04H ;IF NOT, SKIP TO CORVL
- CPI 00H
- JZ CORVL
- MVI A,01H ;IF SO, SET FLAG
- STA AMPM
- CORVL:
- MOV A,M ;PUT CORRECT VALUE OF
- LDA HRS10
- ANI 03H ;H10 INTO TSTG+5
- MOV M,A
- STA HRS10
- LXI H, TSTG+08H
- MOV A,M ;LEAP YEAR?
- LDA MON10
- ANI 04H
- JZ RLVL ;IF NOT, SKIP TO RLVL
- MVI A, 01H ;IF SO, SET FLAG
- STA LEAPYR
- RLVL:
- MOV A,M
- LDA MON10
- ANI 03H ;PUT CORRECT VALUE OF
- MOV M,A ;D10 INTO TSTG+8
- STA MON10
- POP H
- POP D
- POP B
- POP PSW
- ;
- CNVRTD: LDA HRS10
- MOV H,A
- LDA HRS01
- ADD H
- STA RTCBUF ;SAVE IT
- CALL BCDBIN ;CONVERT IT TO BINARY
- STA CCHOUR ;STUFF IT IN HERE FOR BYE5XX TO USE
- LDA MIN10
- MOV H,A
- LDA MIN01
- ADD H
- STA RTCBUF+1 ;SAVE IT
- CALL BCDBIN ;CONVERT TO BINARY
- STA CCMIN ;STUFF IT HERE FOR BYE5XX TO USE
- LDA SEC10
- è MOV H,A
- LDA SEC01
- ADD H
- STA RTCBUF+2 ;SAVE IT
- LDA YRS10
- MOV H,A
- LDA YRS01
- ADD H
- STA RTCBUF+4 ;SAVE IT
- LDA MON10
- MOV H,A
- LDA MON01
- ADD H
- STA RTCBUF+5 ;SAVE....
- LDA DAY10
- MOV H,A
- LDA DAY01
- ADD H
- STA RTCBUF+6 ;SAVE....
- MVI A,CENTURY ;GET CENTURY VALUE (19XX)
- STA RTCBUF+3 ;SAVE....
- RET ;WHEW....
- ENDIF
- ;
- ;
- ;-----------------------------------------------------------------------