home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Set of Apple II Hard Drive Images
/
eric.hdv
/
SOURCE
/
DISPLAY.SRC0.txt
< prev
next >
Wrap
Text File
|
2020-08-13
|
7KB
|
246 lines
; *************************
; * DISPLAY.SRC0
; *************************
;
;
; INTRUPT VARIABLES
CODEFLAG EQU 22 ;OFFSET IN PSEUDOZP
CODEHOOK EQU 23
MIDIBYTE EQU 25
BASL EQU $0B ;USER VECTOR
;
ZPVECT EQU $06 ;USED FOR ADDRESSING SCREEN
;
;
ORG $6A00
ORIGIN JMP SETUP
;
INBYTE DFB $00
STS DFB $91
SCRNLO DFB $00
SCRNHI DFB $00
BYTESAVE DFB $00
;
; PROGRAM CHANGE DATA STORED HERE (START ADRS+8)
;
PROG1 DFB $00,$00,$00,$00,$00,$00,$00,$00
DFB $00,$00,$00,$00,$00,$00,$00,$00
PROG2 DFB $00,$00,$00,$00,$00,$00,$00,$00
DFB $00,$00,$00,$00,$00,$00,$00,$00
VOLUME DFB $40,$40,$40,$40,$40,$40,$40,$40
DFB $40,$40,$40,$40,$40,$40,$40,$40
BRILL DFB $02,$02,$02,$02,$02,$02,$02,$02
DFB $02,$02,$02,$02,$02,$02,$02,$02
;
MULTI DFB $01
REVERB DFB $03
EFFECT DFB $04
CHANNEL DFB $00
VOLFLAG DFB $00
TRANSP DFB $00
MARKER DFB $5D
KARAOKE DFB $00 ;00=OFF 01=IGNORE NOTE-ON'S WITH VEL=$41
;
SETUP LDA #>ENTRY ;HOOK TO INTERRUPT HANDLER
LDY #CODEHOOK
STA (BASL),Y
LDA #<ENTRY
LDY #CODEHOOK+1
STA (BASL),Y
LDA #$01
LDY #CODEFLAG
STA (BASL),Y
;
LDX #$00 ;POPULATE SCRNSAV TABLE
GETSCRN LDA ADRSLO,X
STA ZPVECT
LDA ADRSHI,X
STA ZPVECT+1
LDY #$00
LDA (ZPVECT),Y
STA SCRNSAV,X
INX
BPL GETSCRN
CLC
RTS
;
;
ENTRY LDY #MIDIBYTE
LDA (BASL),Y
STA INBYTE
LDA STS
BEQ CHK90
;
LDA INBYTE
BPL STS91
;
CHK90 LDA INBYTE
AND #$F0
CMP #$90
BNE CHK80
LDA INBYTE
AND #$0F
STA CHANNEL
CMP #$09
BCS DRUMPART
LDA #$91
STA STS
CLC
RTS
DRUMPART LDA #$99
STA STS
SEC
RTS
CHK80 CMP #$80
BNE CHKC0
LDA INBYTE
AND #$0F
STA CHANNEL
LDA #$81
STA STS
CLC
RTS
CHKC0 CMP #$C0
BNE CHKB0
LDA INBYTE
AND #$0F
STA CHANNEL
LDA #$C1
STA STS
CLC
RTS
CHKB0 CMP #$B0
BNE INVAL
LDA INBYTE
AND #$0F
STA CHANNEL
LDA #$B1
STA STS
CLC
RTS
;
INVAL LDA #$00
STA STS
CLC
RTS
;
STS91 LDA STS
CMP #$91
BNE STS92
;
JSR TRANSPOS
;
LDX INBYTE
LDA ADRSLO,X
STA SCRNLO
LDA ADRSHI,X
STA SCRNHI
STX BYTESAVE
LDA #$92
STA STS
CLC
RTS
;
STS92 LDA STS
CMP #$92
BNE STS81
;
LDA #$91
STA STS
LDX INBYTE
BEQ NOTEOFF
;
LDA KARAOKE
BEQ NOKARA
LDA INBYTE
CMP #$41
BNE NOKARA
LDA #$00 ;CHG VEL TO 00
STA INBYTE
LDY #MIDIBYTE
STA (BASL),Y ;CHG INPUT BYTE
NOKARA LDA SCRNLO
STA ZPVECT
LDA SCRNHI
STA ZPVECT+1
;
; DETERMINE WHETHER MARKER OR CHANNEL # WILL BE DISPLAYED
LDA CHANNEL
BEQ USEMARK ; USE MARKER FOR CHANNEL 0
CMP #$0A
BCS USEALPHA ; IF CHNL >= 10 USE ALPHA A,B,C,D,E,F
CLC
ADC #$B0 ; ELSE USE NUMBER 1-9
JMP POKEIT
USEALPHA CLC
ADC #$B7 ; ALPHA- B7+A=C1
JMP POKEIT
USEMARK LDA MARKER
JMP POKEIT
;
NOTEOFF LDA SCRNLO
STA ZPVECT
LDA SCRNHI
STA ZPVECT+1
LDX BYTESAVE
LDA SCRNSAV,X
JMP POKEIT
;
STS81 LDA STS
CMP #$81
BNE STS82
;
JSR TRANSPOS
;
LDX INBYTE
LDA ADRSLO,X
STA SCRNLO
LDA ADRSHI,X
STA SCRNHI
STX BYTESAVE
LDA #$82
STA STS
CLC
RTS
;
STS82 LDA STS
CMP #$82
BNE STSC1
;
LDA #$81
STA STS
;
LDA SCRNLO
STA ZPVECT
LDA SCRNHI
STA ZPVECT+1
LDX BYTESAVE
LDA SCRNSAV,X
JMP POKEIT
;
STSC1 LDA STS
CMP #$C1
BNE STSB1
;
; MOVE PROGRAM 1 TO PROGRAM 2, THEN GET NEW PROGRAM 2
;
LDX CHANNEL
LDA PROG1,X
STA PROG2,X
LDA INBYTE
STA PROG1,X
CLC
RTS
;
STSB1 LDA STS
CMP #$B1
BNE STSB2
;
LDA INBYTE
CMP #$07
BNE NOT07
LDA #$1
STA VOLFLAG
;
CHN DISPLAY.SRC0A