home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
BYE5
/
B5C-EVE.IZS
/
B5C-EVE.INS
Wrap
Text File
|
2000-06-30
|
6KB
|
207 lines
;-----------------------------------------------------------------------
;
; ++++ 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
;
;
;-----------------------------------------------------------------------