mirror of
https://github.com/erangell/A2NoSlotMIDI.git
synced 2024-05-31 17:41:29 +00:00
94 lines
2.3 KiB
Plaintext
94 lines
2.3 KiB
Plaintext
;------------
|
|
;MFF0DRVR.SC4 - KARAOKE SCAN AHEAD LOGIC
|
|
;------------
|
|
; THIS LOGIC IS CALLED WHENEVER A CARRIAGE RETURN ($0D) IS FOUND.
|
|
; IT WILL SCAN AHEAD IN THE BUFFER TO FIND THE NEXT CARRIAGE RETURN
|
|
; BY LOOKING FOR TEXT META EVENTS. IT WILL PRINT UP TO 79 CHARACTERS.
|
|
; IT WILL EXIT WHEN EITHER A NEW CARRIAGE RETURN IS FOUND, 79 CHARACTERS
|
|
; HAVE BEEN PRINTED, THE END OF TRACK MARKER (FF 2F) IS FOUND, OR THE
|
|
; POINTER REACHES THE END OF THE CURRENT BUFFER.
|
|
;
|
|
MYPTR EQU $08
|
|
MYXCOORD DFB $00
|
|
MYENDFLG DFB $00
|
|
MYBYTE DFB $00
|
|
MYLENGTH DFB $00
|
|
MYSTOP DFB $00
|
|
;
|
|
KARASCAN LDA PLAYPTR ;SET OUR POINTER TO CURRENT POSITION
|
|
STA MYPTR
|
|
LDA PLAYPTR+1
|
|
STA MYPTR+1
|
|
LDA #$00
|
|
STA MYXCOORD
|
|
STA MYENDFLG
|
|
LDA PLAYSTOP+1
|
|
STA MYSTOP
|
|
KARALOOP LDY #$00
|
|
LDA (MYPTR),Y
|
|
CMP #$FF
|
|
BEQ FOUNDFF
|
|
KARALOO1 JSR INCMYPT
|
|
LDA MYENDFLG
|
|
BEQ KARALOOP
|
|
KARADONE LDA #$8D ;PRINT CR
|
|
JSR COUT
|
|
RTS
|
|
;
|
|
FOUNDFF JSR INCMYPT
|
|
LDA MYENDFLG
|
|
BNE KARADONE
|
|
LDA MYBYTE
|
|
CMP #$2F
|
|
BEQ KARADONE
|
|
CMP #$10
|
|
BCS KARALOO1 ;NOT TEXT EVENT
|
|
JSR INCMYPT
|
|
LDA MYENDFLG
|
|
BNE KARADONE
|
|
LDA MYBYTE
|
|
BMI KARALOO1 ;DON'T SUPPORT META > 127 CHARS-LOOK FOR MORE
|
|
BEQ KARALOO1 ;TEXT LEN OF 0
|
|
STA MYLENGTH
|
|
PRLOOP JSR INCMYPT
|
|
LDA MYENDFLG
|
|
BNE KARADONE
|
|
JSR PRINT24 ;PRINT THE CHAR
|
|
LDA MYENDFLG
|
|
BNE KARADONE
|
|
DEC MYLENGTH
|
|
LDA MYLENGTH
|
|
BNE PRLOOP
|
|
BEQ KARALOO1
|
|
;
|
|
INCMYPT INC MYPTR
|
|
BNE INCMYP2
|
|
INC MYPTR+1
|
|
LDA MYPTR+1
|
|
CMP MYSTOP
|
|
BCC INCMYP2
|
|
INC MYENDFLG
|
|
RTS
|
|
INCMYP2 LDY #$00
|
|
LDA (MYPTR),Y
|
|
STA MYBYTE
|
|
RTS
|
|
;
|
|
PRINT24 LDY #23
|
|
LDX MYXCOORD
|
|
LDA MYBYTE
|
|
CMP #$0D
|
|
BEQ SETEND
|
|
CMP #$20 ;DON'T PRINT CONTROL CHARS
|
|
BCC PRINT24A
|
|
ORA #$80
|
|
JSR COUT
|
|
INX
|
|
STX MYXCOORD
|
|
CPX #79
|
|
BNE PRINT24A
|
|
SETEND INC MYENDFLG
|
|
PRINT24A RTS
|
|
;
|
|
CHN MFF0DRVR.SC5
|