home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-07-03 | 3.1 KB | 149 lines | [04] ASCII Text (0x0000) |
- ; ********************************************
- ; * TIMER.SRC - DURATION TIMER
- ; * (C) 1993, ERIC RANGELL
- ; ********************************************
- ;
- ;------------GLOBAL EQUATES
- RECEIVER EQU $FA
- MSG EQU $FB
- MYOBJ EQU $FD
- MYADRS EQU $FE ;WILL POINT TO 'BASE' WHEN OBJECT INVOKED
- ;
- USRVECT EQU $0A ;APPLESOFT USR VECTOR - USED TO CALL OBJECTS
- ;
- ;------------OBJECTS REFERENCED
- TIMER EQU 02
- INTRFACE EQU 16 ;MIDI INTERFACE CONTROLLER
- ;
- ;------------OBJECT HEADER
- ORG $6000
- ;
- LDA #$00 ;CALL OBJECT SETUP ROUTINE
- STA $FA
- JSR $000A
- DFB TIMER ;OBJECT NUMBER
- DFB 0,0,0,0,0,0,0 ;SAVE AREA
- BASE CLV
- BVC CODE
- RETCODE DFB $00 ;RETURN CODE
- ;
- ;==========================================
- ; INTERNAL DATA MAINTAINED BY OBJECT:
- ;
- COUNTERL DFB $00
- COUNTERH DFB $00
- USERFLAG DFB $00
- ;
- USERDURL DFB $00
- USERDURH DFB $00
- ;
- HOOKMSG ASC 'H'
- HOOKOBJ DFB $00
- ;
- ;==========================================
- ; METHODS:
- ; 'I' = INITIALIZE HOOK TO INTERRUPT
- ; 'D' <HI><LO> = SET DURATION AND ZERO FLAG
- ; 'P' = PULSE FROM INTERRUPT
- ; 'R' <FLAG> = READ FLAG & SEE IF REACHED DURATION YET
- ; 'Z' = ZERO COUNTER
- ;==========================================
- CODE LDY #0
- LDA (MSG),Y
- CMP #'I'
- BNE CODED
- ;
- LDA MYOBJ
- LDY #HOOKOBJ-BASE
- STA (MYADRS),Y
- ;
- LDA #INTRFACE
- STA RECEIVER
- LDA #HOOKMSG-BASE
- CLC
- ADC MYADRS
- STA MSG
- LDA #00
- ADC MYADRS+1
- STA MSG+1
- JSR USRVECT
- ;
- RTS
- ;
- CODED CMP #'D'
- BNE CODEP
- LDY #1
- LDA (MSG),Y
- LDY #USERDURH-BASE
- STA (MYADRS),Y
- LDY #2
- LDA (MSG),Y
- LDY #USERDURL-BASE
- STA (MYADRS),Y
- LDA #$00
- LDY #USERFLAG-BASE
- STA (MYADRS),Y
- RTS
- ;
- CODEP CMP #'P'
- BNE CODER
- ;
- LDY #COUNTERL-BASE
- LDA (MYADRS),Y
- CLC
- ADC #$01
- STA (MYADRS),Y
- LDY #COUNTERH-BASE
- LDA (MYADRS),Y
- ADC #$00
- STA (MYADRS),Y
- ;
- LDY #USERFLAG-BASE
- LDA (MYADRS),Y
- BNE PDONE
- ;
- LDY #COUNTERH-BASE
- LDA (MYADRS),Y
- LDY #USERDURH-BASE
- CMP (MYADRS),Y
- BCC PDONE
- LDY #COUNTERL-BASE
- LDA (MYADRS),Y
- LDY #USERDURL-BASE
- CMP (MYADRS),Y
- BCC PDONE
- ;
- LDA #$01
- LDY #USERFLAG-BASE
- STA (MYADRS),Y
- LDA #$00
- LDY #COUNTERL-BASE
- STA (MYADRS),Y
- LDY #COUNTERH-BASE
- STA (MYADRS),Y
- PDONE RTS
- ;
- CODER CMP #'R'
- BNE CODEZ
- LDY #USERFLAG-BASE
- LDA (MYADRS),Y
- LDY #1
- STA (MSG),Y
- RTS
- ;
- CODEZ CMP #'Z'
- BNE CODEEX
- LDA #$00
- LDY #COUNTERL-BASE
- STA (MYADRS),Y
- LDY #COUNTERH-BASE
- STA (MYADRS),Y
- RTS
- ;
- CODEEX LDY #RETCODE-BASE
- LDA #12
- STA (MYADRS),Y
- SEC
- RTS
- ;
-