home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Set of Apple II Hard Drive Images
/
eric.hdv
/
OBJSRC
/
TIMER.SRC.txt
< prev
Wrap
Text File
|
2020-08-13
|
3KB
|
149 lines
; ********************************************
; * 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
;