;----------------------------------------------------------------------- ; ; ++++ 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 ; ; ;-----------------------------------------------------------------------