mirror of
https://github.com/erangell/A2NoSlotMIDI.git
synced 2024-12-28 01:29:21 +00:00
80 lines
2.5 KiB
Plaintext
80 lines
2.5 KiB
Plaintext
;*** POKE80
|
|
;*** STORES ANY BYTE DIRECTLY ON 80 COLUMN SCREEN
|
|
;*** USING PROTOCOL DESCRIBED IN "INSIDE THE APPLE //E"
|
|
;--------
|
|
; POKE80
|
|
;--------
|
|
; A = CHARACTER TO POKE ON SCREEN
|
|
; X = X COORDINATE (0-79)
|
|
; Y = Y COORDINATE (0-23)
|
|
;--------
|
|
POKE80 CPX #80 ;VALIDATE X,Y COORDINATES
|
|
BCC POKE80A
|
|
CPY #24
|
|
BCC POKE80A
|
|
RTS
|
|
POKE80A PHP ;SAVE INTERRUPT STATUS
|
|
PHA ;SAVE USER'S DATA BYTE
|
|
STA SAVEA
|
|
STX SAVEX
|
|
STY SAVEY
|
|
SEI ;DISABLE INTERRUPTS
|
|
LDA $C018
|
|
STA STAT80ST ;SAVE STATUS OF 80STORE AND PAGE2 FLAGS
|
|
LDA $C01C
|
|
STA STATPAG2
|
|
STA $C001 ;TURN 80STORE ON TO USE PAGE2 TO SWITCH MAIN->AUX
|
|
LDA $28
|
|
STA SAVEBASL ;SAVE CURRENT SCREEN BASE ADDRESS
|
|
LDA $29
|
|
STA SAVEBASH
|
|
TYA ;MULTIPLY Y BY 2 FOR LOOKUP IN BASE TABLE
|
|
ASL A
|
|
TAY
|
|
LDA BASTABLE,Y ;GET LINE ADDRESS AND STORE IT IN ZP VECTOR
|
|
STA $28
|
|
INY
|
|
LDA BASTABLE,Y
|
|
STA $29
|
|
TXA ;DIVIDE X BY 2 TO GET OFFSET FROM LINE BASE
|
|
LSR A
|
|
TAY ;PUT IT IN Y FOR THE INDIRECT ADDRESSING LATER
|
|
BCC EVENCOL ;CHECK CARRY TO DETERMINE IF X WAS ODD OR EVEN
|
|
STA $C054 ;ODD - TURN PAGE 2 OFF
|
|
BCS STORBYTE
|
|
EVENCOL STA $C055 ;EVEN - TURN PAGE 2 ON
|
|
STORBYTE PLA
|
|
STA ($28),Y ;POKE THE CHARACTER ON THE SCREEN
|
|
LDA STAT80ST
|
|
BPL OFF80ST
|
|
STA $C001 ;80STOREON
|
|
BMI RSTRPAG2
|
|
OFF80ST STA $C000 ;80STOREOFF
|
|
RSTRPAG2 LDA STATPAG2
|
|
BPL OFFPAG2
|
|
STA $C055 ;PAGE2ON
|
|
BMI RSTRBASE
|
|
OFFPAG2 STA $C054 ;PAGE2OFF
|
|
RSTRBASE LDA SAVEBASL ;RESTORE ZP BASE VECTOR
|
|
STA $28
|
|
LDA SAVEBASH
|
|
STA $29
|
|
LDX SAVEX
|
|
LDY SAVEY
|
|
LDA SAVEA
|
|
PLP ;RESTORE INTERRUPT STATUS
|
|
RTS
|
|
;
|
|
STAT80ST DFB $00
|
|
STATPAG2 DFB $00
|
|
SAVEBASL DFB $00
|
|
SAVEBASH DFB $00
|
|
SAVEA DFB $00
|
|
SAVEX DFB $00
|
|
SAVEY DFB $00
|
|
BASTABLE DFB $00,$04,$80,$04,$00,$05,$80,$05,$00,$06,$80,$06,$00,$07,$80,$07
|
|
DFB $28,$04,$A8,$04,$28,$05,$A8,$05,$28,$06,$A8,$06,$28,$07,$A8,$07
|
|
DFB $50,$04,$D0,$04,$50,$05,$D0,$05,$50,$06,$D0,$06,$50,$07,$D0,$07
|
|
;
|
|
CHN MFF0DRVR.SC4
|