home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / eric.hdv / ANNMIDI:BACKOUT / MKBCLOCK.SRC.txt < prev   
Text File  |  2020-08-13  |  4KB  |  170 lines

  1. ; MOCKINGBOARD TIMER INTERRUPT HANDLER
  2. ; MOCKINGBOARD MUST BE IN SLOT 4
  3. ;
  4.          ORG       $9200
  5. ;
  6.          JMP       ALLOCINT  ;ALLOCATE PRODOS MLI INTERRUPT HANDLER
  7.          JMP       STARTCLK  ;START THE CLOCK RUNNING
  8.          JMP       STOPCLK   ;STOP THE CLOCK
  9.          JMP       ZEROCNT   ;ZERO THE CLOCK'S COUNTER
  10.          JMP       CALCALRM  ;ADDS DELTA TO CURRENT COUNTER AND SETS ALARM
  11.          JMP       ADD2ALRM  ;ADDS DELTA TO CURRENT ALARM AND SETS ALARM
  12.          JMP       WAITALRM  ;WAITS UNTIL ALARM FLAG BECOMES 0
  13.          BRK
  14. ;
  15. TEMPOLO  DFB       $00       ;USER STORES CLOCK TEMPO HERE
  16. TEMPOHI  DFB       $40
  17. ;
  18. COUNTLO  DFB       $00       ;THE INTERRUPT INCREMENTS THIS 4 BYTE VALUE
  19. COUNTML  DFB       $00
  20. COUNTMH  DFB       $00
  21. COUNTHI  DFB       $00
  22. ;
  23. DELTALO  DFB       $00       ;THE USER STORES INTERVAL FROM NOW (DELTA TIME)
  24. DELTAML  DFB       $00       ;FOR ALARM TO GO OFF AND CALLS 
  25. DELTAMH  DFB       $00       ;CALCALRM
  26. DELTAHI  DFB       $00
  27. ;
  28. ALARMLO  DFB       $00       ;THE USER STORES TIME FOR ALARM TO GO OFF
  29. ALARMML  DFB       $00
  30. ALARMMH  DFB       $00
  31. ALARMHI  DFB       $00
  32. ALARMFL  DFB       $00       ;THIS FLAG WILL BE ZEROED WHEN ALARM GOES OFF
  33. ;
  34.          JMP       DEALLOC
  35. ;
  36. ALLOCPRM DFB       $02       ;MLI PARAMETER LIST FOR ALLOCATING INTERRUPT
  37. ALLPRTY  DFB       $01
  38.          DW        INTHAND
  39. ;
  40. DEALLPRM DFB       $01
  41. DEALPRTY DFB       $01
  42. ;
  43. ALLOCINT JSR       $BF00     ;CALL MLI
  44.          DFB       $40       ;ALLOCATE INTERRUPT
  45.          DW        ALLOCPRM  ;ADRS OF PARM LIST
  46.          BCC       ALLOCOK   ;IF CARRY CLEAR, NO ERROR
  47.          JSR       $FDDA     ;ELSE PRINT ERROR CODE
  48.          BRK
  49. ALLOCOK  LDA       ALLPRTY
  50.          STA       DEALPRTY
  51.          RTS
  52. ;
  53. DEALLOC  JSR       $BF00     ;CALL MLI
  54.          DFB       $41       ;DEALLOCATE INTERRUPT
  55.          DW        DEALLPRM  ;ADRS OF PARM LIST
  56.          BCC       DEALLOK   ;IF CARRY CLEAR, NO ERROR
  57.          JSR       $FDDA     ;ELSE PRINT ERROR CODE
  58.          BRK
  59. DEALLOK  RTS
  60. ;----------------------------
  61. STARTCLK SEI
  62.          LDA #$40
  63.          STA $C40B
  64.          LDA #$C0
  65.          STA $C40D
  66.          STA $C40E
  67.          LDA TEMPOLO
  68.          STA $C404
  69.          LDA TEMPOHI
  70.          CMP #$03            ;PREVENT TEMPO FROM GOING TOO FAST
  71.          BCS STORTMPH
  72.          LDA #$00
  73.          STA TEMPOLO
  74.          STA $C404
  75.          LDA #$03
  76.          STA TEMPOHI
  77. STORTMPH STA $C405
  78.          CLI
  79.          RTS
  80. ;----------------------------
  81. STOPCLK  LDA #$00
  82.          STA $C40B
  83.          CLI
  84.          RTS
  85. ;----------------------------
  86. ZEROCNT  LDA #$00
  87.          STA COUNTLO
  88.          STA COUNTML
  89.          STA COUNTMH
  90.          STA COUNTHI
  91.          RTS 
  92. ;----------------------------
  93. CALCALRM CLC
  94.          LDA COUNTLO
  95.          ADC DELTALO
  96.          STA ALARMLO
  97.          LDA COUNTML
  98.          ADC DELTAML
  99.          STA ALARMML
  100.          LDA COUNTMH
  101.          ADC DELTAMH
  102.          STA ALARMMH
  103.          LDA COUNTHI
  104.          ADC DELTAHI
  105.          STA ALARMHI
  106.          LDA #$01
  107.          STA ALARMFL
  108.          RTS
  109. ;----------------------------
  110. ADD2ALRM CLC
  111.          LDA ALARMLO
  112.          ADC DELTALO
  113.          STA ALARMLO
  114.          LDA ALARMML
  115.          ADC DELTAML
  116.          STA ALARMML
  117.          LDA ALARMMH
  118.          ADC DELTAMH
  119.          STA ALARMMH
  120.          LDA ALARMHI
  121.          ADC DELTAHI
  122.          STA ALARMHI
  123.          LDA #$01
  124.          STA ALARMFL
  125.          RTS
  126. ;----------------------------
  127. WAITALRM LDA ALARMFL
  128.          BNE WAITALRM
  129.          RTS
  130. ;----------------------------
  131. INTHAND  CLD
  132.          SEI
  133.          LDA #$C0
  134.          STA $C40D
  135. ;
  136.          INC COUNTLO         ;INCREMENT 4 BYTE COUNTER
  137.          BNE CNTDONE
  138.          INC COUNTML
  139.          BNE CNTDONE
  140.          INC COUNTMH
  141.          BNE CNTDONE
  142.          INC COUNTHI
  143.          BNE CNTDONE
  144. ;
  145. CNTDONE  LDA ALARMFL         ;CHECK IF USER WAITING FOR AN ALARM
  146.          BEQ NOALARM
  147. ;
  148.          LDA COUNTHI         ;IF SO, COMPARE COUNTER TO ALARM VALUE
  149.          CMP ALARMHI
  150.          BCC NOALARM
  151.          BNE SIGALARM
  152.          LDA COUNTMH
  153.          CMP ALARMMH
  154.          BCC NOALARM
  155.          BNE SIGALARM
  156.          LDA COUNTML
  157.          CMP ALARMML
  158.          BCC NOALARM
  159.          BNE SIGALARM
  160.          LDA COUNTLO
  161.          CMP ALARMLO
  162.          BCC NOALARM
  163. SIGALARM LDA #0              ;SIGNAL ALARM BY ZEROING ALARM FLAG
  164.          STA ALARMFL
  165. ;        
  166. NOALARM  CLI
  167.          CLC
  168.          RTS
  169. ;
  170.