home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / bye5 / b5c-eve.izs / B5C-EVE.INS
Encoding:
Text File  |  1987-10-20  |  5.5 KB  |  207 lines

  1. ;-----------------------------------------------------------------------
  2. ;
  3. ;         ++++ Install your TIME routine here ++++
  4. ;
  5. ; If you have a clock and wish to use TIMEON or RSPEED, please replace
  6. ; the following code with your clock read code.  Use as many instruc-
  7. ; tions as you need but make sure you store binary, not BCD values in
  8. ; CCHOUR and CCMIN.  Use RTCBUF to store BCD clock data, then use BCDBIN
  9. ; to convert it to binary for CCHOUR and CCMIN.  See B5C-QXnn.INS as an
  10. ; example of handling a BCD clock, or B5C-SDS.INS for a BIOS interrupt-
  11. ; driven clock that runs in binary (hex).  All registers are saved before
  12. ; TIME is called, so you don't have to save them.
  13. ;
  14. ; NOTE... Set BCD2BIN to YES if your clock routine calls BCDBIN
  15. ;      ** FOR THE EVE SPEECH SYNTHESIZER/CLOCK CALENDAR **
  16. ;
  17. ;
  18. ; (Replace the following code with your own clock subroutine)
  19. ;
  20. ;
  21. ;**************************************************************
  22. ;
  23. ; B5C-EVE.INS A TIME INSERT FOR BYE500 AND UP
  24. ;             NOTE:  THIS IS AN INSERT -- NOT AN OVERLAY
  25. ; ADAPTED BY ROBERT BAKER FOR THE COLECO ADAM
  26. ;
  27. ; ADAPTED FROM:
  28. ;   A CLOCK INSERT FOR BYE AND MBYE WRITTEN BY DONALD E ROTH, DENVER.
  29. ;
  30. ; B5C-OKI1.INS FOR BYE500 AND UP
  31. ;  08/14/85    NOTE:  THIS IS AN INSERT -- NOT AN OVERLAY
  32. ;            BUCKY CARR
  33. ;            DENHUG (ZBBS) RCP/M, 303-423-3224
  34. ;
  35. ; ADAPTED FROM:
  36. ;   A CLOCK INSERT FOR BYE AND MBYE WRITTEN BY DONALD E ROTH, DENVER.
  37. ;
  38. ;   THIS IS AN INSERT FOR ADDRESSING AND READING FROM THE OKI MSM5832
  39. ;   CLOCK CHIP AS ADDRESSED BY AN 8255 USART.  IN OUR SETUP, IT HAPPENS
  40. ;   TO BE CONNECTED TO A HEATHKIT H89 AND IS ADDRESSED AT PORT 320Q.
  41. ;
  42. ;   IT SHOULD BE POSSIBLE TO USE THIS CODE FOR ANY PORTED SYSTEM, AND
  43. ;   THE 8255 AND 5832 LEND THEMSELVES TO RELATIVELY INEXPENSIVE WIRE-
  44. ;   WRAPPING SHOULD ONE DESIRE TO ROLL HIS OWN CLOCK BOARD.  SCHEMATICS
  45. ;   ARE AVAILABLE, AND PERHAPS SOMEWHERE DOWN THE LINE I WILL INCLUDE
  46. ;   A SCHEMATIC WITH THIS INSERT....
  47. ;
  48. ;   TO SET THE CLOCK INITIALLY WE USE A CLOCK SETTING PROGRAM WRITTEN FOR
  49. ;   THAT SPECIFIC PURPOSE (WHICH I CANNOT LAY MY HANDS ON AT THE MOMENT,
  50. ;   BUT WILL SEARCH FOR, FOR THE TRULY INTERESTED.  IT IS WRITTEN IN BASIC.
  51. ;
  52. ;   IF YOU ALSO DESIRE THE MBASIC CODE TO READ THE CLOCK FROM WITHIN
  53. ;   A BBS PROGRAM, LET ME KNOW AND I WILL OFFER THAT UP, TOO.
  54. ;
  55. ;
  56. ;
  57. ;   WHEN CALLED THIS ROUTINE WILL CHECK THE RTCBUF.  IF A '99H' IS IN
  58. ;   THE FIRST BYTE, THEN CLOCK IS INITIALIZED.    NEXT, THE SECONDS ARE
  59. ;   CHECKED, AND IF CHANGED SINCE LAST UPDATE OF RTC BUFFER, THE CLOCK
  60. ;   IS READ AND NEW DATA COPIED TO THE RTCBUF.    THE BCD HOURS AND
  61. ;   MINUTES ARE CONVERTED TO BINARY AND STORED IN CCMIN AND CCHOUR.
  62. è;
  63. ;
  64. ;                    - BUCKY CARR, SYSOP,
  65. ;                    WORLD PEACE (ZBBS) RCP/M, 303-320-4822
  66. ;                            AND
  67. ;                    DENHUG (ZBBS) RCP/M, 303-423-3224
  68. ;
  69. ;**********************************************************************
  70. ;
  71. ;THESE EQUATES ARE NEEDED TO SET UP THE 8255 PPI TO READ FROM
  72. ;THE OKI MSM5832 REAL TIME CLOCK CHIP
  73.  
  74. CLKD    EQU    048H    ;SET MODE BIT
  75. CLKA    EQU    049H        ;GROUP A MODE 0
  76. INPT    EQU    04AH    ;GROUP A MODE 1
  77. PPIX    EQU    04BH    ;GROUP A MODE 2
  78. EOS    EQU    '$'        ;GROUP B MODE 0
  79. CS    EQU    0    ;GROUP B MODE 1
  80. CSNOT    EQU    80H    ;PORT A INPUT
  81. CENTURY EQU    19H        
  82. ;
  83.      IF CLOCK
  84. TIME:    MVI    A,081H
  85.     OUT    PPIX
  86.     MVI    A,00H
  87.     OUT    CLKD
  88.     MVI    A,08FH
  89.     OUT    CLKA
  90.     MVI    A,0FH
  91.     OUT    CLKA
  92. CREAD:    PUSH    PSW
  93.     PUSH    B
  94.     PUSH    D
  95.     PUSH    H
  96.     MVI    A,00H
  97.     STA    SPCFLG
  98.     MVI    A,91H            ;SET 8255 CONTROL REG
  99.     OUT    PPIX            
  100.     MVI    B,00H            ;5832 ADDRESS COUNTER
  101.     LXI    H,TSTG            ;PUT ADDR OF 1ST MEM
  102.     MVI    A,10H+CS        ;HOLD HIGH & CS HI
  103.     OUT    INPT
  104.     PUSH    PSW            ;150 MICRO SECOND DELAY
  105.     MVI    A,11H        
  106. LOOP:    DCR    A
  107.     NOP
  108.     JNZ    LOOP    
  109.     POP    PSW    
  110. LOPI:    MVI    A,30H+CS        ;SET HOLD & READ
  111.     OUT    INPT
  112.     MOV    A,B
  113.     OUT    CLKA            ;ADDRS TO 5832
  114.     NOP                ;NOP & INR B MAKE UP
  115.     INR    B            ;6 USEC DELAY
  116.     IN    CLKD            ;INPUT DATA INTO ACCUM
  117.     ANI    0FH
  118.     MOV    M,A            
  119.     INX    H
  120.     MOV    A,B            ;LAST 5832 ADDRESS?
  121.     CPI    0DH            ;IF NOT, NEXT ADDRESS
  122.     JNZ    LOPI        ;SET HOLD LOW, READ LOW
  123. è    MVI    A,00H+CSNOT            
  124.     OUT    INPT
  125.     LXI    H,HRS10
  126.     MVI    A,00H            ;SET FLAGS TSTG+13,14
  127.     STA    MOD24            ;15,  TO ZERO
  128.     STA    AMPM
  129.     STA    LEAPYR
  130.      MOV     A,M             ;H10 DATA INTO ACCUM
  131.     LDA    HRS10
  132.     ANI    08H            ;IS 24 HOUR MODE SET?
  133.     CPI    00H
  134.     JZ    TWLV            ;IF NOT, SKIP TO TWLV
  135.     MVI    A,01H            ;IF SO, SET FLAG
  136.     STA    MOD24
  137. TWLV:
  138.     MOV    A,M            ;IS PM BIT SET?
  139.     LDA    HRS10
  140.     ANI    04H            ;IF NOT, SKIP TO CORVL
  141.     CPI    00H
  142.     JZ    CORVL            
  143.     MVI    A,01H            ;IF SO, SET FLAG
  144.     STA    AMPM
  145. CORVL:
  146.     MOV    A,M            ;PUT CORRECT VALUE OF
  147.     LDA    HRS10
  148.     ANI    03H            ;H10 INTO TSTG+5
  149.     MOV    M,A            
  150.     STA    HRS10
  151.     LXI    H, TSTG+08H
  152.     MOV    A,M            ;LEAP YEAR?
  153.     LDA    MON10
  154.     ANI    04H            
  155.     JZ    RLVL            ;IF NOT, SKIP TO RLVL
  156.     MVI    A, 01H            ;IF SO, SET FLAG
  157.     STA    LEAPYR
  158. RLVL:
  159.     MOV    A,M
  160.     LDA    MON10
  161.     ANI    03H            ;PUT CORRECT VALUE OF
  162.     MOV    M,A            ;D10 INTO TSTG+8
  163.     STA    MON10
  164.     POP    H
  165.     POP    D            
  166.     POP    B
  167.     POP    PSW
  168. ;
  169. CNVRTD: LDA    HRS10
  170.     MOV    H,A
  171.     LDA    HRS01
  172.     ADD    H
  173.     STA    RTCBUF        ;SAVE IT
  174.     CALL    BCDBIN        ;CONVERT IT TO BINARY
  175.     STA    CCHOUR        ;STUFF IT IN HERE FOR BYE5XX TO USE
  176.     LDA    MIN10
  177.     MOV    H,A
  178.     LDA    MIN01
  179.     ADD    H
  180.     STA    RTCBUF+1    ;SAVE IT
  181.     CALL    BCDBIN        ;CONVERT TO BINARY
  182.     STA    CCMIN        ;STUFF IT HERE FOR BYE5XX TO USE
  183.     LDA    SEC10
  184. è    MOV    H,A
  185.     LDA    SEC01
  186.     ADD    H
  187.     STA    RTCBUF+2    ;SAVE IT
  188.     LDA    YRS10
  189.     MOV    H,A
  190.     LDA    YRS01
  191.     ADD    H
  192.     STA    RTCBUF+4    ;SAVE IT
  193.     LDA    MON10
  194.     MOV    H,A
  195.     LDA    MON01
  196.     ADD    H
  197.     STA    RTCBUF+5    ;SAVE....
  198.     LDA    DAY10
  199.     MOV    H,A
  200.     LDA    DAY01
  201.     ADD    H
  202.     STA    RTCBUF+6    ;SAVE....
  203.     MVI    A,CENTURY    ;GET CENTURY VALUE (19XX)
  204.     STA    RTCBUF+3    ;SAVE....
  205.       RET              ;WHEW....
  206.      ENDIF
  207. ;
  208. ;
  209. ;-----------------------------------------------------------------------
  210.