mirror of
https://github.com/erangell/A2NoSlotMIDI.git
synced 2024-06-12 21:29:38 +00:00
Added legacy files
This commit is contained in:
parent
dced8b2879
commit
463a69b5c2
BIN
LEGACY/ANN0TEST.DSK
Normal file
BIN
LEGACY/ANN0TEST.DSK
Normal file
Binary file not shown.
226
LEGACY/MFF0DRVR.SC0.txt
Normal file
226
LEGACY/MFF0DRVR.SC0.txt
Normal file
|
@ -0,0 +1,226 @@
|
|||
;MFF0DRVR.SC0
|
||||
;
|
||||
;-------------------
|
||||
;MAINLINE CODE
|
||||
;-------------------
|
||||
AUXSETUP LDA #>ENTRYPTS ;MOVE WHOLE PROGRAM TO AUX
|
||||
STA SRCMAINL
|
||||
STA TGTAUXL
|
||||
LDA #<ENTRYPTS
|
||||
STA SRCMAINH
|
||||
STA TGTAUXH
|
||||
LDA #>EOF
|
||||
STA ENDMAINL
|
||||
LDA #<EOF
|
||||
STA ENDMAINH
|
||||
LDA #$01
|
||||
STA TOAUX
|
||||
JSR DOAUXMV
|
||||
RTS
|
||||
;
|
||||
PLAYMAIN JMP PLAYIT1
|
||||
PLAYAUX LDA #>PLAYSTRT ;MOVE PARM AREA TO AUX
|
||||
STA SRCMAINL
|
||||
STA TGTAUXL
|
||||
LDA #<PLAYSTRT
|
||||
STA SRCMAINH
|
||||
STA TGTAUXH
|
||||
LDA #>AUXSETUP ;ALSO MOVE ALL DATA VARIABLES
|
||||
STA ENDMAINL
|
||||
LDA #<AUXSETUP
|
||||
STA ENDMAINH
|
||||
LDA #$01
|
||||
STA TOAUX
|
||||
JSR DOAUXMV
|
||||
;
|
||||
LDA #>AUXCODE ;TRANSFER TO AUX PROGRAM
|
||||
STA XFERADRL
|
||||
LDA #<AUXCODE
|
||||
STA XFERADRH
|
||||
LDA #$01
|
||||
STA XFTOAUX
|
||||
LDA #$00
|
||||
STA USEAUXZP
|
||||
JMP DOXFER
|
||||
AUXRTN RTS
|
||||
; ;TRANSFER BACK TO MAIN MEMORY PROGRAM
|
||||
AUXCODE JSR PLAYIT1 ;PLAY THE AUX BUFFER
|
||||
LDA #>PLAYSTRT ;MOVE PARM AREA BACK TO MAIN
|
||||
STA SRCMAINL
|
||||
STA TGTAUXL
|
||||
LDA #<PLAYSTRT
|
||||
STA SRCMAINH
|
||||
STA TGTAUXH
|
||||
LDA #>AUXSETUP
|
||||
STA ENDMAINL
|
||||
LDA #<AUXSETUP
|
||||
STA ENDMAINH
|
||||
LDA #$00
|
||||
STA TOAUX
|
||||
JSR DOAUXMV
|
||||
;
|
||||
LDA #>AUXRTN ;TRANSFER BACK TO MAIN PROGRAM
|
||||
STA XFERADRL
|
||||
LDA #<AUXRTN
|
||||
STA XFERADRH
|
||||
LDA #$00
|
||||
STA XFTOAUX
|
||||
LDA #$00
|
||||
STA USEAUXZP
|
||||
JMP DOXFER
|
||||
;
|
||||
DOAUXMV LDA SRCMAINL
|
||||
STA $3C
|
||||
LDA SRCMAINH
|
||||
STA $3D
|
||||
LDA ENDMAINL
|
||||
STA $3E
|
||||
LDA ENDMAINH
|
||||
STA $3F
|
||||
LDA TGTAUXL
|
||||
STA $42
|
||||
LDA TGTAUXH
|
||||
STA $43
|
||||
LDA TOAUX
|
||||
BNE AUXMOVE1
|
||||
CLC
|
||||
JMP AUXMOVE
|
||||
AUXMOVE1 SEC
|
||||
JMP AUXMOVE
|
||||
;
|
||||
DOXFER LDA XFERADRL
|
||||
STA $3ED
|
||||
LDA XFERADRH
|
||||
STA $3EE
|
||||
LDA XFTOAUX
|
||||
BNE DOXFER1
|
||||
CLC
|
||||
JMP DOXFER2
|
||||
DOXFER1 SEC
|
||||
DOXFER2 LDA USEAUXZP
|
||||
BNE DOXFER3
|
||||
CLV
|
||||
JMP DOXFER4
|
||||
DOXFER3 BIT MONRTS ;SET OVERFLOW
|
||||
DOXFER4 JMP AUXXFER
|
||||
;=============================
|
||||
PLAYIT1 LDA PLAYSTRT ;INITIALIZE PTR TO BEGINNING OF AREA
|
||||
STA PLAYPTR
|
||||
LDA PLAYSTRT+1
|
||||
STA PLAYPTR+1
|
||||
LDA KARALOOK ;12/17/95-KARALOOK LOGIC
|
||||
BEQ PLAYLOOP
|
||||
LDA #$8D
|
||||
JSR COUT
|
||||
JSR KARASCAN
|
||||
PLAYLOOP LDY #$00 ;READ 1 BYTE
|
||||
LDA (PLAYPTR),Y
|
||||
STA INBYTE
|
||||
JSR PRCSBYTE
|
||||
LDA ENDOFTRK
|
||||
BEQ PLAYLOO1
|
||||
RTS
|
||||
PLAYLOO1 JSR CHKKBD
|
||||
LDA ENDOFTRK
|
||||
BEQ INCPTR
|
||||
RTS
|
||||
INCPTR INC PLAYPTR
|
||||
BNE INCPTR2
|
||||
INC PLAYPTR+1
|
||||
INCPTR2 LDA PLAYPTR
|
||||
CMP PLAYSTOP
|
||||
BNE PLAYLOOP
|
||||
LDA PLAYPTR+1
|
||||
CMP PLAYSTOP+1
|
||||
BNE PLAYLOOP
|
||||
RTS
|
||||
;-------
|
||||
; CHKKBD - MAY SET ENDOFTRK
|
||||
;-------
|
||||
CHKKBD LDA $C000
|
||||
BPL NOKEY1
|
||||
LDA $C010
|
||||
AND #$7F
|
||||
CMP #$20
|
||||
BNE CHKESC
|
||||
LDA #$01
|
||||
STA ENDOFTRK
|
||||
NOKEY1 RTS
|
||||
CHKESC CMP #$1B
|
||||
BNE CHKFLAT
|
||||
WAITKEY LDA #$00
|
||||
STA PAUSEFLG
|
||||
WAITKEY1 LDA $C000
|
||||
BPL WAITKEY1
|
||||
LDA $C010
|
||||
AND #$7F
|
||||
CMP #$1B
|
||||
BNE ESCDONE
|
||||
INC PAUSEFLG
|
||||
ESCDONE RTS
|
||||
CHKFLAT CMP #$46 ;'F'-CHANGE UCS<->LCF
|
||||
BNE TESTTMPO
|
||||
LDA DISPMODE
|
||||
EOR #$01
|
||||
STA DISPMODE
|
||||
RTS
|
||||
TESTTMPO CMP #$54 ;'T'-TEMPO CHGS
|
||||
BNE CHKDRUM
|
||||
LDA DOTMPOCG
|
||||
EOR #$01
|
||||
STA DOTMPOCG
|
||||
RTS
|
||||
CHKDRUM CMP #$44 ;'D'-MASK DRUMS
|
||||
BNE CHKLEFT
|
||||
DEC MASKDRUM
|
||||
LDA MASKDRUM
|
||||
CMP #$FE
|
||||
BNE DRUMDONE
|
||||
LDA #$01
|
||||
STA MASKDRUM
|
||||
DRUMDONE RTS
|
||||
CHKLEFT CMP #$08
|
||||
BNE CHKRIGHT
|
||||
DEC SPEED
|
||||
LDA SPEED
|
||||
BMI LEFTBAD
|
||||
BEQ LEFTBAD
|
||||
DEC SPEEDINC
|
||||
JSR SPEEDDEC
|
||||
JSR METRPOKE
|
||||
LDA PRNTSPED
|
||||
BEQ LEFTDONE
|
||||
LDA #$A0
|
||||
JSR COUT
|
||||
LDA SPEED
|
||||
JSR PRINTHEX
|
||||
LDA #$A0
|
||||
JSR COUT
|
||||
LEFTDONE RTS
|
||||
LEFTBAD INC SPEED
|
||||
RTS
|
||||
CHKRIGHT CMP #$15
|
||||
BNE NOKEY
|
||||
INC SPEED
|
||||
LDA SPEED
|
||||
BMI RIGHTBAD
|
||||
BEQ RIGHTBAD
|
||||
INC SPEEDINC
|
||||
JSR SPEEDDEC
|
||||
JSR METRPOKE
|
||||
LDA PRNTSPED
|
||||
BEQ NOKEY
|
||||
LDA #$A0
|
||||
JSR COUT
|
||||
LDA SPEED
|
||||
JSR PRINTHEX
|
||||
LDA #$A0
|
||||
JSR COUT
|
||||
NOKEY RTS
|
||||
RIGHTBAD DEC SPEED
|
||||
RTS
|
||||
;
|
||||
;=========
|
||||
; PRCSBYTE - MAY SET ENDOFTRK
|
||||
;=========
|
||||
CHN MFF0DRVR.SC1
|
335
LEGACY/MFF0DRVR.SC1.txt
Normal file
335
LEGACY/MFF0DRVR.SC1.txt
Normal file
|
@ -0,0 +1,335 @@
|
|||
;MFF0DRVR.SC1
|
||||
;-------
|
||||
PRCSBYTE LDA PHASE
|
||||
CMP #DELTA0
|
||||
BNE PHDELT1
|
||||
LDA #$00
|
||||
STA DELTATIM
|
||||
STA DELTATIM+1
|
||||
STA DELTATIM+2
|
||||
STA DELTATIM+3
|
||||
LDA INBYTE
|
||||
STA DELTATIM
|
||||
BEQ DELTAEQ0 ;GET DELTA TIME
|
||||
BPL DELTA7F
|
||||
LDA #DELTA1 ;IF >127 - MORE TO FETCH
|
||||
STA PHASE
|
||||
RTS
|
||||
DELTAEQ0 LDA #GETINST ;IF 0 - WILL GET INSTRUCTION NEXT TIME
|
||||
STA PHASE
|
||||
RTS
|
||||
DELTA7F JSR COUNT
|
||||
LDA #GETINST ;IF <=127 - DELAY, THEN GET INSTRUCTION NEXT TIME
|
||||
STA PHASE
|
||||
RTS
|
||||
; ;NEED TO CONVERT DELTA TIME BYTES TO COUNTER
|
||||
COUNT LDA DELTATIM
|
||||
STA DELTACTR
|
||||
LDA #$00
|
||||
STA DELTACTR+1
|
||||
LDA DELTATIM+1 ;USE ONLY FIRST 2 BYTES OF DELTATIM
|
||||
BEQ DOCOUNT
|
||||
AND #$7F ;IF NON-ZERO HI BYTE, MOVE LO BIT
|
||||
LSR A
|
||||
STA DELTACTR+1
|
||||
BCC DOCOUNT
|
||||
LDA DELTACTR
|
||||
ORA #$80 ;TO HI BIT OF LO BYTE
|
||||
STA DELTACTR
|
||||
DOCOUNT DEC DELTACTR
|
||||
LDA DELTACTR
|
||||
CMP #$FF
|
||||
BNE DECR1
|
||||
DEC DELTACTR+1
|
||||
DECR1 LDA DELTACTR+1
|
||||
CMP #$FF
|
||||
BEQ DONECNT
|
||||
LDA SPEED
|
||||
JSR MONWAIT
|
||||
CLV
|
||||
BVC DOCOUNT
|
||||
DONECNT RTS
|
||||
;
|
||||
PHDELT1 CMP #DELTA1
|
||||
BNE PHDELT2
|
||||
LDA DELTATIM
|
||||
STA DELTATIM+1
|
||||
LDA INBYTE
|
||||
STA DELTATIM
|
||||
BPL DELT1A
|
||||
LDA #DELTA2
|
||||
STA PHASE
|
||||
RTS
|
||||
DELT1A JSR COUNT
|
||||
LDA #GETINST
|
||||
STA PHASE
|
||||
RTS
|
||||
;-------
|
||||
PHDELT2 CMP #DELTA2
|
||||
BNE PHDELT3
|
||||
LDA DELTATIM+1
|
||||
STA DELTATIM+2
|
||||
LDA DELTATIM
|
||||
STA DELTATIM+1
|
||||
LDA INBYTE
|
||||
STA DELTATIM
|
||||
BPL DELT2A
|
||||
LDA #DELTA3
|
||||
STA PHASE
|
||||
RTS
|
||||
DELT2A JSR COUNT
|
||||
LDA #GETINST
|
||||
STA PHASE
|
||||
RTS
|
||||
;-------
|
||||
PHDELT3 CMP #DELTA3
|
||||
BNE PHINST
|
||||
LDA DELTATIM+2
|
||||
STA DELTATIM+3
|
||||
LDA DELTATIM+1
|
||||
STA DELTATIM+2
|
||||
LDA DELTATIM
|
||||
STA DELTATIM+1
|
||||
LDA INBYTE
|
||||
STA DELTATIM
|
||||
BPL DELT3A
|
||||
LDA PLAYPTR+1
|
||||
JSR PRINTHEX
|
||||
LDA PLAYPTR
|
||||
JSR PRINTHEX
|
||||
BRK
|
||||
DELT3A JSR COUNT
|
||||
LDA #GETINST
|
||||
STA PHASE
|
||||
RTS
|
||||
;-------
|
||||
PHINST CMP #GETINST
|
||||
BEQ PHINST0
|
||||
JMP PHDATA3
|
||||
PHINST0 LDA PAUSEFLG ;12/8/95-STEP THRU EVENTS WITH ESC
|
||||
BEQ PHINST1
|
||||
JSR WAITKEY
|
||||
PHINST1 LDA INBYTE
|
||||
BPL RUNNING
|
||||
;
|
||||
CMP #$F0
|
||||
BCS CHKF0
|
||||
;
|
||||
STA LASTSTAT
|
||||
STA XMITSTS
|
||||
CMP #$E0
|
||||
BCS TWOBYTES
|
||||
CMP #$C0
|
||||
BCC TWOBYTES
|
||||
;
|
||||
LDA #1
|
||||
STA DBYTES
|
||||
LDA #DATA1
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
TWOBYTES LDA #2
|
||||
STA DBYTES
|
||||
LDA #DATA2
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
CHKF0 BNE CHKF7
|
||||
LDA #SYSX0
|
||||
STA PHASE
|
||||
LDA #$F0
|
||||
JSR XMITBYTE
|
||||
RTS
|
||||
;
|
||||
XMITBYTE JSR XMITONE ;ANNUNCIATOR MIDI DRIVER
|
||||
RTS
|
||||
;
|
||||
CHKF7 CMP #$F7
|
||||
BNE CHKFF
|
||||
LDA #SYSX0
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
CHKFF CMP #$FF
|
||||
BNE INVAL
|
||||
LDA #META0
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
INVAL BRK
|
||||
;
|
||||
RUNNING LDA LASTSTAT
|
||||
STA XMITSTS
|
||||
LDA INBYTE
|
||||
STA XMITBYT1
|
||||
LDA #$FF
|
||||
STA XMITBYT2
|
||||
LDA DBYTES
|
||||
CMP #1
|
||||
BEQ SENDMSG
|
||||
LDA #DATA3
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
PHDATA3 CMP #DATA3
|
||||
BNE PHDATA2
|
||||
LDA INBYTE
|
||||
STA XMITBYT2
|
||||
LDA #$FF
|
||||
STA XMITBYT3
|
||||
JMP SENDMSG
|
||||
;
|
||||
PHDATA2 CMP #DATA2
|
||||
BNE PHDATA1
|
||||
LDA INBYTE
|
||||
STA XMITBYT1
|
||||
LDA #DATA2B
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
PHDATA1 CMP #DATA1
|
||||
BNE PHDATA2B
|
||||
LDA INBYTE
|
||||
STA XMITBYT1
|
||||
LDA #$FF
|
||||
STA XMITBYT2
|
||||
JMP SENDMSG
|
||||
;
|
||||
PHDATA2B CMP #DATA2B
|
||||
BNE PHSYSX
|
||||
LDA INBYTE
|
||||
STA XMITBYT2
|
||||
LDA #$FF
|
||||
STA XMITBYT3
|
||||
JMP SENDMSG
|
||||
;
|
||||
SENDMSG LDX #$01
|
||||
SEND0 LDA XMITMSG,X
|
||||
CMP #$FF
|
||||
BEQ SEND2
|
||||
JSR XMITONE ;ANNUNCIATOR MIDI DRIVER
|
||||
INX
|
||||
BNE SEND0
|
||||
SEND2 LDA PIANOSCR ;ADDED 12/9/95-PIANO SCREEN OPTION
|
||||
BEQ SENDEXIT
|
||||
LDA XMITSTS
|
||||
LDX XMITBYT1
|
||||
LDY XMITBYT2
|
||||
JSR MIDIPOKE
|
||||
SENDEXIT LDA #DELTA0
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
PHSYSX CMP #SYSX0
|
||||
BNE PHSYSX1
|
||||
LDA INBYTE
|
||||
STA SYSXLEN
|
||||
BPL GOODSLEN
|
||||
LDA PLAYPTR+1
|
||||
JSR PRINTHEX
|
||||
LDA PLAYPTR
|
||||
JSR PRINTHEX
|
||||
BRK ;SYSX OVER 127 BYTES NOT SUPPORTED
|
||||
GOODSLEN LDA #SYSX1
|
||||
STA PHASE
|
||||
RTS
|
||||
PHSYSX1 CMP #SYSX1
|
||||
BNE PHMETA0
|
||||
LDA INBYTE
|
||||
JSR XMITBYTE
|
||||
DEC SYSXLEN
|
||||
LDA SYSXLEN
|
||||
BNE MORESYSX
|
||||
LDA #DELTA0
|
||||
STA PHASE
|
||||
MORESYSX RTS
|
||||
;--------
|
||||
PHMETA0 CMP #META0
|
||||
BNE PHMETA1
|
||||
;
|
||||
LDA #$00
|
||||
STA TEXTEVT
|
||||
LDA INBYTE
|
||||
CMP #$2F
|
||||
BNE CHKTEXT
|
||||
LDA #$01
|
||||
STA ENDOFTRK
|
||||
RTS
|
||||
;
|
||||
CHKTEXT CMP #$0F
|
||||
BCS CHKTMPO
|
||||
LDA #$01
|
||||
STA TEXTEVT
|
||||
LDA #META1
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
CHKTMPO CMP #$51
|
||||
BNE CHKKYSG
|
||||
LDA #TEMPO1
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
CHKKYSG CMP #$59
|
||||
BNE OTHER
|
||||
LDA #KEYSIG1
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
OTHER LDA #META1
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
PHMETA1 CMP #META1
|
||||
BNE PHMETA2
|
||||
STORMLEN LDA INBYTE
|
||||
STA METALEN
|
||||
BPL GOODMLEN
|
||||
LDA PLAYPTR+1
|
||||
JSR PRINTHEX
|
||||
LDA PLAYPTR+2
|
||||
JSR PRINTHEX
|
||||
BRK ;META OVER 127 BYTES NOT SUPPORTED
|
||||
GOODMLEN LDA #META2
|
||||
STA PHASE
|
||||
RTS
|
||||
PHMETA2 CMP #META2
|
||||
BNE PHTEMPO1
|
||||
LDA TEXTEVT
|
||||
BEQ NOTTEXT
|
||||
LDA LYRICS
|
||||
BEQ NOTTEXT ;BYPASS IF USER DOESNT WANT LYRICS
|
||||
LDA INBYTE
|
||||
CMP #$0D
|
||||
BEQ PRCSCR
|
||||
NOTUC ORA #$80 ;DISPLAY IN NORMAL TEXT
|
||||
JSR COUT
|
||||
NOTTEXT DEC METALEN
|
||||
LDA METALEN
|
||||
BNE MOREMETA
|
||||
LDA #DELTA0
|
||||
STA PHASE
|
||||
MOREMETA RTS
|
||||
;
|
||||
PRCSCR ORA #$80 ;PRINT CR
|
||||
JSR COUT
|
||||
LDA KARALOOK
|
||||
BEQ NOKARA
|
||||
JSR KARASCAN ;KARAOKE LOGIC TO SCAN AHEAD ONE LINE & PRINT LINE 24
|
||||
NOKARA JMP NOTTEXT
|
||||
;
|
||||
PRINTHEX PHA ;CLONE OF $FDDA BUT USING $FDF0 OUTPUT
|
||||
LSR A
|
||||
LSR A
|
||||
LSR A
|
||||
LSR A
|
||||
JSR PRNTHEX1
|
||||
PLA
|
||||
AND #$0F
|
||||
PRNTHEX1 ORA #$B0
|
||||
CMP #$BA
|
||||
BCC PRNTHEX2
|
||||
ADC #$06
|
||||
PRNTHEX2 JMP COUT
|
||||
;
|
||||
CHN MFF0DRVR.SC2
|
262
LEGACY/MFF0DRVR.SC2.txt
Normal file
262
LEGACY/MFF0DRVR.SC2.txt
Normal file
|
@ -0,0 +1,262 @@
|
|||
;MFF0DRVR.SC2
|
||||
;
|
||||
PHTEMPO1 CMP #TEMPO1
|
||||
BNE PHTEMPO2
|
||||
LDA INBYTE
|
||||
CMP #$03
|
||||
BNE STORMLEN
|
||||
LDA #TEMPO2
|
||||
STA PHASE
|
||||
RTS
|
||||
PHTEMPO2 CMP #TEMPO2
|
||||
BNE PHTEMPO3
|
||||
LDA INBYTE
|
||||
STA TMPOHI
|
||||
LDA #TEMPO3
|
||||
STA PHASE
|
||||
RTS
|
||||
PHTEMPO3 CMP #TEMPO3
|
||||
BNE PHTEMPO4
|
||||
LDA INBYTE
|
||||
STA TMPOMED
|
||||
LDA #TEMPO4
|
||||
STA PHASE
|
||||
RTS
|
||||
PHTEMPO4 CMP #TEMPO4
|
||||
BNE PHKYSIG1
|
||||
LDA INBYTE
|
||||
STA TMPOLO
|
||||
LDA RESOLUTN
|
||||
STA RESHI
|
||||
LDA RESOLUTN+1
|
||||
STA RESLO
|
||||
LDA DOTMPOCG
|
||||
BEQ TMPODONE
|
||||
JSR TEMPOCHG
|
||||
JSR METRONOM
|
||||
LDA NEWSPEED
|
||||
CLC
|
||||
ADC SPEEDINC
|
||||
BMI BADSPEED
|
||||
BEQ BADSPEED
|
||||
STA SPEED
|
||||
LDA PRNTSPED
|
||||
BEQ TMPODONE
|
||||
LDA #$A0
|
||||
JSR COUT
|
||||
LDA SPEED
|
||||
JSR PRINTHEX
|
||||
LDA #$A0
|
||||
JSR COUT
|
||||
TMPODONE JSR SPEEDDEC
|
||||
JSR METRPOKE
|
||||
LDA #DELTA0
|
||||
STA PHASE
|
||||
RTS
|
||||
BADSPEED LDA NEWSPEED
|
||||
STA SPEED
|
||||
JSR SPEEDDEC
|
||||
JSR METRPOKE
|
||||
LDA #DELTA0
|
||||
STA PHASE
|
||||
RTS
|
||||
PHKYSIG1 CMP #KEYSIG1
|
||||
BNE PHKYSIG2
|
||||
LDA #KEYSIG2
|
||||
STA PHASE
|
||||
RTS
|
||||
PHKYSIG2 CMP #KEYSIG2
|
||||
BNE PHKYSIG3
|
||||
LDA INBYTE
|
||||
BEQ NOCHANGE ;DON'T DO FOR C MAJOR/A MINOR
|
||||
AND #$80 ;SET UPPERCASE SHARPS ($00)
|
||||
ASL A
|
||||
ROL A
|
||||
STA DISPMODE ;OR LOWERCASE FLATS ($01)
|
||||
NOCHANGE LDA #KEYSIG3
|
||||
STA PHASE
|
||||
LDA #$00
|
||||
STA FLATKEY
|
||||
LDA INBYTE
|
||||
BPL STORSF
|
||||
INC FLATKEY
|
||||
EOR #$FF
|
||||
CLC
|
||||
ADC #$01
|
||||
STORSF STA KEYNUMSF
|
||||
RTS
|
||||
;
|
||||
BADPHASE JSR PRINTHEX
|
||||
BRK
|
||||
PHKYSIG3 CMP #KEYSIG3
|
||||
BNE BADPHASE
|
||||
LDA #'M'
|
||||
STA KEYSIGP4
|
||||
LDA INBYTE
|
||||
BNE MINORKEY
|
||||
LDA FLATKEY
|
||||
BNE MAJFLAT
|
||||
LDA KEYNUMSF
|
||||
ASL A
|
||||
TAX
|
||||
LDA MAJORSHP,X
|
||||
STA KEYSIGP2
|
||||
INX
|
||||
LDA MAJORSHP,X
|
||||
STA KEYSIGP3
|
||||
CLV
|
||||
BVC PRNTKYSG
|
||||
MAJFLAT LDA KEYNUMSF
|
||||
ASL A
|
||||
TAX
|
||||
LDA MAJORFLT,X
|
||||
STA KEYSIGP2
|
||||
INX
|
||||
LDA MAJORFLT,X
|
||||
STA KEYSIGP3
|
||||
CLV
|
||||
BVC PRNTKYSG
|
||||
MINORKEY LDA #'m'
|
||||
STA KEYSIGP4
|
||||
LDA FLATKEY
|
||||
BNE MINFLAT
|
||||
LDA KEYNUMSF
|
||||
ASL A
|
||||
TAX
|
||||
LDA MINORSHP,X
|
||||
STA KEYSIGP2
|
||||
INX
|
||||
LDA MINORSHP,X
|
||||
STA KEYSIGP3
|
||||
CLV
|
||||
BVC PRNTKYSG
|
||||
MINFLAT LDA KEYNUMSF
|
||||
ASL A
|
||||
TAX
|
||||
LDA MINORFLT,X
|
||||
STA KEYSIGP2
|
||||
INX
|
||||
LDA MINORFLT,X
|
||||
STA KEYSIGP3
|
||||
CLV
|
||||
BVC PRNTKYSG
|
||||
PRNTKYSG LDY #16
|
||||
LDX #74
|
||||
PRKYLP LDA KEYSIGP1-70,X
|
||||
JSR POKE80
|
||||
DEX
|
||||
CPX #69
|
||||
BNE PRKYLP
|
||||
LDA #DELTA0
|
||||
STA PHASE
|
||||
RTS
|
||||
;
|
||||
FLATKEY DFB $00
|
||||
KEYNUMSF DFB $00
|
||||
MAJORSHP ASC 'C G D A E B F#C#'
|
||||
MAJORFLT ASC 'C F BbEbAbDbGbCb'
|
||||
MINORSHP ASC 'A E B F#C#G#D#A#'
|
||||
MINORFLT ASC 'A D G C F BbEbAb'
|
||||
;
|
||||
;--------
|
||||
;MIDIPOKE - DISPLAYS NOTE ON/OFFS USING 1ST 16 LINES OF SCREEN
|
||||
;--------
|
||||
; A = STATUS BYTE (9X OR 8X)
|
||||
; X = 1ST DATA BYTE (NOTE NUMBER 00-7F)
|
||||
; Y = 2ND DATA BYTE (VELOCITY 00-7F)
|
||||
;--------
|
||||
MIDIPOKE STA STSBYTE ;SAVE INPUT DATA
|
||||
AND #$0F
|
||||
STA MIDICHNL ;EXTRACT CHANNEL
|
||||
STX NOTENUM
|
||||
STY VELOCITY
|
||||
TXA ;CHECK IF NOTE IS IN RANGE OF DISPLAY
|
||||
CMP #24
|
||||
BCC MIDIEXIT
|
||||
CMP #104
|
||||
BCS MIDIEXIT
|
||||
SEC ;SUBTRACT 24 TO GET OFFSET IN CHARACTER TABLE
|
||||
SBC #24
|
||||
STA XCOORD
|
||||
LDA STSBYTE
|
||||
AND #$F0
|
||||
CMP #$80
|
||||
BEQ NOTEOFF ;CHECK IF NOTE OFF
|
||||
CMP #$90
|
||||
BEQ NOTEON
|
||||
MIDIEXIT RTS
|
||||
NOTEON LDA VELOCITY
|
||||
BEQ NOTEOFF ;IF 90 WITH VEL 0 IT IS A NOTEOFF
|
||||
LDX XCOORD ;NEED TO PRESERVE X UNTIL POKENOTE
|
||||
LDA MASKDRUM
|
||||
BMI NOTDRUM ;MASKDRUM FF=DISPLAY AS NORMAL NOTES
|
||||
LDA MIDICHNL
|
||||
CMP #$09 ;CHECK IF THIS IS A DRUM NOTE
|
||||
BNE NOTDRUM
|
||||
LDA MASKDRUM
|
||||
BEQ NOTEOFF ;MASKDRUM 00=DON'T DISPLAY DRUM PART
|
||||
LDA #'*'
|
||||
STA DISPNOTE ;MASKDRUM 01=PRINT * FOR DRUM PART
|
||||
CLV
|
||||
BVC POKENOTE
|
||||
NOTDRUM LDA DISPMODE ;CHECK IF UPPER CASE SHARP/LOWER CASE FLAT
|
||||
BNE LCFMODE
|
||||
LDA UCSNOTES,X
|
||||
STA DISPNOTE
|
||||
CLV
|
||||
BVC POKENOTE
|
||||
LCFMODE LDA LCFNOTES,X
|
||||
STA DISPNOTE
|
||||
POKENOTE LDY MIDICHNL ;VERTICAL COORD
|
||||
LDA USEINVRS ;PARM-WHETHER USER WANTS INVERSE DISPLAY
|
||||
BNE INVERT
|
||||
LDA DISPNOTE
|
||||
JMP POKE80
|
||||
INVERT LDA DISPNOTE
|
||||
AND #$7F ;INVERT ALL KEYS
|
||||
; AND WHITEKEY,X ;CREATE INVERSE IF IT IS A WHITE PIANO KEY
|
||||
JMP POKE80
|
||||
NOTEOFF LDA #' '
|
||||
STA DISPNOTE
|
||||
LDX XCOORD
|
||||
JMP POKENOTE
|
||||
;
|
||||
DISPNOTE DFB $00
|
||||
STSBYTE DFB $00
|
||||
MIDICHNL DFB $00
|
||||
NOTENUM DFB $00
|
||||
VELOCITY DFB $00
|
||||
XCOORD DFB $00
|
||||
;
|
||||
; UPPER CASE SHARPS: cCdDefFgGaAb
|
||||
;
|
||||
UCSNOTES DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
|
||||
DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
|
||||
DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
|
||||
DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
|
||||
DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
|
||||
DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
|
||||
DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
|
||||
;
|
||||
; LOWER CASE FLATS: CdDeEFgGaAbB
|
||||
;
|
||||
LCFNOTES DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
|
||||
DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
|
||||
DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
|
||||
DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
|
||||
DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
|
||||
DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
|
||||
DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
|
||||
;
|
||||
;12/30/95:TOOK OUT TO SAVE SPACE
|
||||
; THE 7F IS ANDED WITH CHAR TO MAKE IT WHITE (INVERSE)
|
||||
;
|
||||
;WHITEKEY DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
|
||||
; DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
|
||||
; DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
|
||||
; DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
|
||||
; DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
|
||||
; DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
|
||||
; DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
|
||||
;
|
||||
CHN MFF0DRVR.SC3
|
79
LEGACY/MFF0DRVR.SC3.txt
Normal file
79
LEGACY/MFF0DRVR.SC3.txt
Normal file
|
@ -0,0 +1,79 @@
|
|||
;*** 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
|
93
LEGACY/MFF0DRVR.SC4.txt
Normal file
93
LEGACY/MFF0DRVR.SC4.txt
Normal file
|
@ -0,0 +1,93 @@
|
|||
;------------
|
||||
;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
|
157
LEGACY/MFF0DRVR.SC5.txt
Normal file
157
LEGACY/MFF0DRVR.SC5.txt
Normal file
|
@ -0,0 +1,157 @@
|
|||
; TEMPOCHG.SRC
|
||||
;
|
||||
; THIS SUBROUTINE IS USED TO CALCULATE THE SPEED VALUE TO BE USED WHEN
|
||||
; A TEMPO CHANGE META EVENT IS FOUND.
|
||||
; INPUT:
|
||||
; RESOLUTION (2 BYTES) = LAST 2 BYTES OF MIDI FILE HEADER
|
||||
; NEWTEMPO (3 BYTES) = VALUES FROM THE FF 51 03 META EVENT
|
||||
; OUTPUT:
|
||||
; NEWSPEED (1 BYTE) = NEW SPEED VALUE. YOUR PROGRAM MAY WANT TO
|
||||
; ADJUST THIS BASED ON USER'S PREFERENCES.
|
||||
;
|
||||
TEMPOCHG JSR TMPOSTRT
|
||||
JMP LOOKUP
|
||||
DIVISION JMP DIVIDE
|
||||
;
|
||||
; PUBLIC VARIABLES
|
||||
RESHI DFB $00
|
||||
RESLO DFB $00
|
||||
TMPOHI DFB $00
|
||||
TMPOMED DFB $00
|
||||
TMPOLO DFB $00
|
||||
NEWSPEED DFB $00
|
||||
;
|
||||
; PRIVATE VARIABLES
|
||||
DIVIDEND DFB $00,$00,$00,$00
|
||||
DIVISOR DFB $00,$00
|
||||
QUOTIENT DFB $00,$00,$00,$00
|
||||
REMAINDR DFB $00,$00
|
||||
TEMPDIV DFB $00,$00,$00
|
||||
TEMPDSR DFB $00,$00
|
||||
;
|
||||
TMPOSTRT LDA #$00
|
||||
STA DIVIDEND
|
||||
LDA TMPOHI
|
||||
STA DIVIDEND+1
|
||||
LDA TMPOMED
|
||||
STA DIVIDEND+2
|
||||
LDA TMPOLO
|
||||
STA DIVIDEND+3
|
||||
LDA RESHI
|
||||
STA DIVISOR
|
||||
LDA RESLO
|
||||
STA DIVISOR+1
|
||||
;
|
||||
DIVIDE CLD
|
||||
LDA #$00
|
||||
STA QUOTIENT
|
||||
STA QUOTIENT+1
|
||||
STA QUOTIENT+2
|
||||
STA QUOTIENT+3
|
||||
STA REMAINDR
|
||||
STA REMAINDR+1
|
||||
STA TEMPDIV
|
||||
STA TEMPDIV+1
|
||||
STA TEMPDIV+2
|
||||
LDA DIVISOR
|
||||
STA TEMPDSR
|
||||
LDA DIVISOR+1
|
||||
STA TEMPDSR+1
|
||||
LDA TEMPDSR
|
||||
BNE NODIV0
|
||||
LDA TEMPDSR+1
|
||||
BNE NODIV0
|
||||
BRK
|
||||
;
|
||||
NODIV0 LDY #32 ;DIVIDEND WILL BE SHIFTED 32 TIMES
|
||||
DIVLOOP ASL DIVIDEND+3
|
||||
ROL DIVIDEND+2
|
||||
ROL DIVIDEND+1
|
||||
ROL DIVIDEND ;MOVE 1 BIT TO TEMPORARY DIVIDEND
|
||||
ROL TEMPDIV+2
|
||||
ROL TEMPDIV+1
|
||||
ROL TEMPDIV ;NOW CHECK IF TEMPDSR < TEMPDIV
|
||||
LDA TEMPDIV
|
||||
BNE NOTLESS
|
||||
LDA TEMPDIV+1
|
||||
CMP TEMPDSR
|
||||
BCC LESS
|
||||
BNE NOTLESS
|
||||
LDA TEMPDIV+2
|
||||
CMP TEMPDSR+1
|
||||
BCS NOTLESS
|
||||
LESS CLC ;STORE A 0 IN THE QUOTIENT
|
||||
ROL QUOTIENT+3
|
||||
ROL QUOTIENT+2
|
||||
ROL QUOTIENT+1
|
||||
ROL QUOTIENT
|
||||
CLV
|
||||
BVC NEXTBIT
|
||||
NOTLESS SEC ;SUBTRACT TEMPDSR FROM TEMPDIV
|
||||
LDA TEMPDIV+2
|
||||
SBC TEMPDSR+1
|
||||
STA TEMPDIV+2
|
||||
LDA TEMPDIV+1
|
||||
SBC TEMPDSR
|
||||
STA TEMPDIV+1
|
||||
LDA TEMPDIV
|
||||
SBC #$00
|
||||
STA TEMPDIV
|
||||
SEC ;AND STORE A 1 IN THE QUOTIENT
|
||||
ROL QUOTIENT+3
|
||||
ROL QUOTIENT+2
|
||||
ROL QUOTIENT+1
|
||||
ROL QUOTIENT
|
||||
NEXTBIT DEY
|
||||
BNE DIVLOOP ;WHEN DONE, QUOTIENT HAS RESULT, TDIV HAS RMDR
|
||||
LDA TEMPDIV+1
|
||||
STA REMAINDR
|
||||
LDA TEMPDIV+2
|
||||
STA REMAINDR+1
|
||||
RTS
|
||||
;
|
||||
LOOKUP LDY #2 ;LOOKUP QUOTIENT IN TEMPO TABLE-STARTING WITH 2
|
||||
; ;BECAUSE IF LESS THAN VALUE OF 2 SHOULD USE 1
|
||||
LDA QUOTIENT
|
||||
BEQ Q3BYT
|
||||
QBIG LDY #127
|
||||
CLV
|
||||
BVC STORSPED
|
||||
Q3BYT LDA QUOTIENT+1
|
||||
BNE QBIG
|
||||
; ;WE HAVE A 2 BYTE QUOTIENT TO LOOK UP
|
||||
Q2LOOP LDA QUOTIENT+2
|
||||
CMP TEMPOHI,Y
|
||||
BCC FOUNDSP
|
||||
BNE NEXTSPED
|
||||
LDA QUOTIENT+3
|
||||
CMP TEMPOLO,Y
|
||||
BCC FOUNDSP
|
||||
NEXTSPED INY
|
||||
CPY #128
|
||||
BCC Q2LOOP
|
||||
FOUNDSP DEY
|
||||
STORSPED STY NEWSPEED
|
||||
RTS
|
||||
;
|
||||
; THE FOLLOWING DATA WAS CREATED BY BASIC PROGRAM "TEMPOCALC"
|
||||
; IT REPRESENTS THE EVALUATION OF FUNCTION .4889*(26+27*A+5*A*A) FROM 0-127
|
||||
;
|
||||
TEMPOHI DFB 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2
|
||||
DFB 3,3,4,4,4,5,5,6,6,7,7,8,8,9,10,10
|
||||
DFB 11,12,12,13,14,15,15,16,17,18,19,19,20,21,22,23
|
||||
DFB 24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,41
|
||||
DFB 42,43,45,46,47,49,50,51,53,54,56,57,59,60,62,63
|
||||
DFB 65,66,68,70,71,73,75,76,78,80,82,83,85,87,89,91
|
||||
DFB 93,94,96,98,100,102,104,106,108,110,112,114,116,119,121,123
|
||||
DFB 125,127,130,132,134,136,139,141,143,146,148,150,153,155,158,160
|
||||
TEMPOLO DFB 12,28,48,74,104,139,179,224,18,73,133,197,11,85,164,248
|
||||
DFB 81,175,18,121,230,87,206,73,201,78,216,103,250,147,48,211
|
||||
DFB 122,38,215,141,71,7,204,149,99,55,15,236,206,180,160,145
|
||||
DFB 134,128,127,132,141,154,173,197,225,3,41,84,132,185,243,50
|
||||
DFB 118,190,12,94,181,17,114,216,67,179,39,161,31,162,42,183
|
||||
DFB 73,224,123,28,193,108,27,207,136,70,9,208,157,110,69,32
|
||||
DFB 0,229,207,190,177,170,167,170,177,189,206,228,254,30,67,108
|
||||
DFB 154,206,6,67,133,203,23,104,189,23,119,219,68,178,36,156
|
||||
;
|
||||
CHN MFF0DRVR.SC6
|
98
LEGACY/MFF0DRVR.SC6.txt
Normal file
98
LEGACY/MFF0DRVR.SC6.txt
Normal file
|
@ -0,0 +1,98 @@
|
|||
; MFF0DRVR.SC6
|
||||
;
|
||||
; CALL THIS IMMEDIATELY AFTER CALLING TEMPOCHG
|
||||
;
|
||||
METRONOM LDA #$03 ;DIVIDEND=60MEG SECONDS
|
||||
STA DIVIDEND
|
||||
LDA #$20
|
||||
STA DIVIDEND+1
|
||||
LDA #$00
|
||||
STA DIVIDEND+2
|
||||
STA DIVIDEND+3
|
||||
LDA QUOTIENT+2 ;DIVISOR = PREVIOUS QUOTIENT
|
||||
STA DIVISOR
|
||||
LDA QUOTIENT+3
|
||||
STA DIVISOR+1
|
||||
JSR DIVISION
|
||||
LDA QUOTIENT ;DIVIDEND=PREV QUOTIENT
|
||||
STA DIVIDEND
|
||||
LDA QUOTIENT+1
|
||||
STA DIVIDEND+1
|
||||
LDA QUOTIENT+2
|
||||
STA DIVIDEND+2
|
||||
LDA QUOTIENT+3
|
||||
STA DIVIDEND+3
|
||||
LDA RESHI ;DIVISOR=RESOLUTION
|
||||
STA DIVISOR
|
||||
LDA RESLO
|
||||
STA DIVISOR+1
|
||||
JSR DIVISION
|
||||
LDA QUOTIENT+3
|
||||
STA $50
|
||||
LDA QUOTIENT+2
|
||||
STA $51
|
||||
JSR HEXDEC
|
||||
LDA DEC3
|
||||
STA METRTMP1
|
||||
LDA DEC4
|
||||
STA METRTMP2
|
||||
LDA DEC5
|
||||
STA METRTMP3
|
||||
RTS
|
||||
SPEEDDEC LDA SPEED
|
||||
STA $50
|
||||
LDA #$00
|
||||
STA $51
|
||||
JSR HEXDEC
|
||||
LDA DEC3
|
||||
STA METRSPD1
|
||||
LDA DEC4
|
||||
STA METRSPD2
|
||||
LDA DEC5
|
||||
STA METRSPD3
|
||||
RTS
|
||||
METRPOKE LDY #23
|
||||
LDX #0
|
||||
METRPLOO LDA METRDISP,X
|
||||
JSR POKE80
|
||||
INX
|
||||
CPX #11
|
||||
BCC METRPLOO
|
||||
RTS
|
||||
;========================================================
|
||||
; CONVERTS HEX IN ($50,$51) TO DECIMAL
|
||||
; FROM APPLE PROGRAMMERS HANDBOOK P. 225
|
||||
;========================================================
|
||||
HEXDEC LDA #$0A
|
||||
STA $53
|
||||
LDY #$04
|
||||
HEXDEC0 LDX #$10
|
||||
LDA #$00
|
||||
STA $52
|
||||
CLC
|
||||
HEXDEC1 ROL $50
|
||||
ROL $51
|
||||
ROL $52
|
||||
DEX
|
||||
BMI HEXDEC2
|
||||
LDA $52
|
||||
SEC
|
||||
SBC $53
|
||||
BCC HEXDEC1
|
||||
STA $52
|
||||
BCS HEXDEC1
|
||||
HEXDEC2 CLC
|
||||
ROR $52
|
||||
LDA $52
|
||||
ORA #$B0
|
||||
STA DEC1,Y
|
||||
DEY
|
||||
BPL HEXDEC0
|
||||
RTS
|
||||
DEC1 DFB $B0
|
||||
DEC2 DFB $B0
|
||||
DEC3 DFB $B0
|
||||
DEC4 DFB $B0
|
||||
DEC5 DFB $B0
|
||||
;
|
||||
CHN MFF0DRVR.SC7
|
128
LEGACY/MFF0DRVR.SC7.txt
Normal file
128
LEGACY/MFF0DRVR.SC7.txt
Normal file
|
@ -0,0 +1,128 @@
|
|||
;-------------------------------------------------------------------------
|
||||
; APPLE MIDI DRIVER THROUGH ANNUNCIATOR 0
|
||||
; COPYRIGHT 1998, ERIC RANGELL
|
||||
;-------------------------------------------------------------------------
|
||||
; THIS DRIVER IMPLEMENTS ASYNCHRONOUS SERIAL DATA TRANSMISSION
|
||||
; THROUGH THE APPLE ANNUNCIATOR 0 OUTPUT PORT OF THE GAME CONNECTOR
|
||||
; USING 32 CYCLES PER BIT TO ACHIEVE A 31.25K MIDI BAUD RATE.
|
||||
;
|
||||
; THE OUTPUT IS INITIALIZED TO A HIGH LOGIC VOLTAGE. WHEN IT GOES
|
||||
; LOW FOR 32 MICROSECONDS, THAT INDICATES THE START BIT OF A MIDI BYTE.
|
||||
; THEN 8 BYTES OF DATA ARE TRANSMITTED, FOLLOWED BY A HIGH STOP BIT.
|
||||
; THE DATA BYTES REPRESENT MIDI MESSAGES WHICH CAN BE INTERPRETED BY
|
||||
; ANY MUSICAL INSTRUMENT THAT IMPLEMENTS MIDI.
|
||||
;
|
||||
;-------------------------------------------------------------------------
|
||||
;
|
||||
AN0OFF EQU $C058 ;APPLE ADDRESSES THAT CONTROL ANNUNCIATOR OUTPUTS
|
||||
AN0ON EQU $C059
|
||||
AN1OFF EQU $C05A
|
||||
AN1ON EQU $C05B
|
||||
AN2OFF EQU $C05C
|
||||
AN2ON EQU $C05D
|
||||
AN3OFF EQU $C05E
|
||||
AN3ON EQU $C05F
|
||||
;
|
||||
TEMPA DFB $00
|
||||
TEMPX DFB $00
|
||||
;---------------------------------------------------------------------------
|
||||
XMITONE STA TEMPA ;SAVE A AND X REGISTERS
|
||||
STX TEMPX
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT7+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT6+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT5+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT4+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT3+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT2+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT1+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT0+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
JSR XMITBITS ;SEND THE BYTE OUT
|
||||
LDX TEMPX
|
||||
LDA TEMPA ;RESTORE X AND A
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
XMITBITS BIT AN0OFF ;4 CYCLES - TRANSMIT START BIT - ALWAYS LOW
|
||||
JSR DELAY22 ;6+22
|
||||
BIT0 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT1 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT2 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT3 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT4 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT5 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT6 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT7 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT AN0ON ;4 ;TRANSMIT STOP BIT - ALWAYS HIGH
|
||||
JSR DELAY22 ;6+22
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
DELAY22 NOP ;WAIT 22 CYCLES
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
RTS
|
||||
;----------------
|
||||
; END OF PROGRAM
|
||||
;----------------
|
||||
;==================================================
|
||||
EOF BRK
|
112
LEGACY/MFF0DRVR.SRC.txt
Normal file
112
LEGACY/MFF0DRVR.SRC.txt
Normal file
|
@ -0,0 +1,112 @@
|
|||
;
|
||||
; MFF0 PLAYER - PLAYS A SPECIFIC AREA OF AUX OR MAIN MEMORY
|
||||
;
|
||||
;
|
||||
ORG $0800
|
||||
;
|
||||
ENTRYPTS JMP AUXSETUP ;COPY CODE TO AUX MEM
|
||||
JMP PLAYMAIN ;PLAY FROM MAIN MEMORY
|
||||
JMP PLAYAUX ;PLAY FROM AUX MEMORY
|
||||
JMP DOAUXMV ;FOR USER - TO DO AUXMOVE
|
||||
JMP DOXFER ;FOR USER - TO XFER
|
||||
;----------------
|
||||
; PARAMETERS
|
||||
;----------------
|
||||
PLAYSTRT DW $2000 ;STARTING ADDRESS OF PLAYBACK - SET BY CALLER
|
||||
PLAYSTOP DW $7800 ;ENDING ADDRESS OF PLAYBACK+1 - SET BY CALLER
|
||||
PHASE DFB $00 ;CURRENT PHASE OF PROCESSING
|
||||
ENDOFTRK DFB $00 ;SIGNALS THAT END OF TRACK (00 FF 2F 00) REACHED
|
||||
;----------------
|
||||
; USER PARAMETERS FOR AUXMOVE
|
||||
;----------------
|
||||
SRCMAINL DFB $00
|
||||
SRCMAINH DFB $00
|
||||
ENDMAINL DFB $00
|
||||
ENDMAINH DFB $00
|
||||
TGTAUXL DFB $00
|
||||
TGTAUXH DFB $00
|
||||
TOAUX DFB $00
|
||||
;----------------
|
||||
; USER PARAMETERS FOR TRANSFER
|
||||
;----------------
|
||||
XFERADRL DFB $00
|
||||
XFERADRH DFB $00
|
||||
XFTOAUX DFB $00
|
||||
USEAUXZP DFB $00
|
||||
;--------
|
||||
LYRICS DFB $01 ;PRINT LYRICS
|
||||
PRNTSPED DFB $00 ;PRINT SPEED
|
||||
PIANOSCR DFB $01 ;PIANO DISPLAY ON
|
||||
DISPMODE DFB $01 ; 00 = UPPERCASE SHARPS, NONZERO = LOWERCASE FLATS
|
||||
MASKDRUM DFB $01 ; DISPLAY CHANNEL 9 (DRUMS) WITH *
|
||||
USEINVRS DFB $00 ; WHETHER TO USE INVERSE LETTERS - FOR PIANO DISPLAY
|
||||
KARALOOK DFB $00 ; WHETHER TO USE KARAOKE LOOKAHEAD
|
||||
RESOLUTN DFB $00,$F0 ; RESOLUTION FROM MIDI HEADER -USED FOR TEMPO CHGS
|
||||
SPEEDINC DFB $00 ; USER'S AMOUNT TO ADD OR SUBTRACT FROM SPEED
|
||||
DOTMPOCG DFB $01 ; PROCESS TEMPO CHANGES
|
||||
METRDISP ASC 'MM' ;METRONOME DISPLAY
|
||||
METRTMP1 ASC '1'
|
||||
METRTMP2 ASC '2'
|
||||
METRTMP3 ASC '0'
|
||||
METRFILL ASC ' SP'
|
||||
METRSPD1 ASC '0'
|
||||
METRSPD2 ASC '2'
|
||||
METRSPD3 ASC '7'
|
||||
KEYSIGP1 ASC '('
|
||||
KEYSIGP2 ASC 'C'
|
||||
KEYSIGP3 ASC ' '
|
||||
KEYSIGP4 ASC 'M'
|
||||
KEYSIGP5 ASC ')'
|
||||
;-------------------
|
||||
; INTERNAL VARIABLES
|
||||
;-------------------
|
||||
INBYTE DFB $00 ;VALUE OF CURRENT BYTE
|
||||
PAUSEFLG DFB $00
|
||||
DELTATIM DFB $00,$00,$00,$00
|
||||
DELTACTR DFB $00,$00
|
||||
LASTSTAT DFB $00
|
||||
DBYTES DFB $00
|
||||
XMITMSG ASC 'X'
|
||||
XMITSTS DFB $00
|
||||
XMITBYT1 DFB $00
|
||||
XMITBYT2 DFB $00
|
||||
XMITBYT3 DFB $00
|
||||
SYSXLEN DFB $00
|
||||
TEXTEVT DFB $00
|
||||
METALEN DFB $00
|
||||
;---------------------
|
||||
PLAYPTR EQU $06 ;POINTER TO CURRENT BYTE BEING READ
|
||||
SPEED EQU $FF ;SPEED OF PLAYBACK - USED IN $FCA8 WAIT ROUTINE
|
||||
;
|
||||
COUT EQU $FDF0 ;USE MONITOR OUTPUT ROUTINE BECAUSE MAY PRINT FROM AUX MEM
|
||||
MONWAIT EQU $FCA8 ;MONITOR DELAY ROUTINE
|
||||
AUXMOVE EQU $C311 ;AUX MEM MOVE
|
||||
AUXXFER EQU $C314 ;AUX MEM TRANSFER CONTROL
|
||||
MONRTS EQU $FF58 ;ADDRESS OF RTS INSTRUCTION USED TO SET OVERFLOW FLAG
|
||||
;------------
|
||||
; PROGRAM PHASE NAMES:
|
||||
;------------
|
||||
DELTA0 EQU $00
|
||||
DELTA1 EQU $01
|
||||
DELTA2 EQU $02
|
||||
DELTA3 EQU $03
|
||||
GETINST EQU $04
|
||||
DATA1 EQU $05
|
||||
DATA2 EQU $06
|
||||
DATA2B EQU $07
|
||||
DATA3 EQU $08
|
||||
SYSX0 EQU $09
|
||||
SYSX1 EQU $0A
|
||||
SYSX2 EQU $0B
|
||||
META0 EQU $10
|
||||
META1 EQU $11
|
||||
META2 EQU $12
|
||||
TEMPO1 EQU $13
|
||||
TEMPO2 EQU $14
|
||||
TEMPO3 EQU $15
|
||||
TEMPO4 EQU $16
|
||||
KEYSIG1 EQU $17
|
||||
KEYSIG2 EQU $18
|
||||
KEYSIG3 EQU $19
|
||||
;-------------------
|
||||
CHN MFF0DRVR.SC0
|
325
LEGACY/MFF0PLAY.SRC.txt
Normal file
325
LEGACY/MFF0PLAY.SRC.txt
Normal file
|
@ -0,0 +1,325 @@
|
|||
; MFF0 PLAYER - ALSO DISPLAYS MIDI KARAOKE LYRICS
|
||||
;
|
||||
; T0 CONTAINS THE MIDI FILE DATA STRIPPED OF HEADER
|
||||
;--------------
|
||||
; MEMORY USAGE
|
||||
;--------------
|
||||
AUXMOVE EQU $C311
|
||||
A1L EQU $3C ;AUXMOVE SOURCE START
|
||||
A1H EQU $3D
|
||||
A2L EQU $3E ;AUXMOVE SOURCE END
|
||||
A2H EQU $3F
|
||||
A4L EQU $42 ;AUXMOVE DESTINATION
|
||||
A4H EQU $43
|
||||
;
|
||||
MAINBUFR EQU $2000 ; MAIN BUFFER
|
||||
MAINEND EQU $757F
|
||||
MAINLEN EQU $5580
|
||||
AUX1BUFR EQU $1500 ; AUX1 BUFFER
|
||||
AUX1END EQU $6A7F
|
||||
AUX1LEN EQU $5580
|
||||
AUX2BUFR EQU $6A80 ; AUX2 BUFFER
|
||||
AUX2END EQU $BFFF
|
||||
AUX2LEN EQU $5580
|
||||
MTHDLEN EQU $0016 ; MFF0 HEADER LENGTH (22 BYTES)
|
||||
;--------
|
||||
; LINKAGE AREA TO MFF0DRVR.OBJ
|
||||
;--------
|
||||
DRVRSTRT EQU $80F
|
||||
DRVREND EQU $811
|
||||
DRVREOT EQU $814
|
||||
DRVRINIT EQU $800
|
||||
DRVRMAIN EQU $803
|
||||
DRVRAUX EQU $806
|
||||
;--------
|
||||
ORG $75FD ; MLI BUFFER
|
||||
JMP MAINLINE ; PROGRAM
|
||||
FILEBUFR DS $400 ;MLI FILE BUFFER FOR OPEN FILE
|
||||
EOFFLAG DFB $00 ;LOADMAIN WILL SET THIS TO 1 WHEN EOF REACHED
|
||||
USERSTOP DFB $00 ;DETECTS IF STOPPED BEFORE END OF SEQUENCE
|
||||
DEBUG DFB $00 ;DEBUG MODE - PRINTS LOAD & PLAY RESULTS
|
||||
PATHNAME DFB 62 ;USER POKES LENGTH IN HERE ($7903)
|
||||
ASC '/ ' ;USER POKES PATHNAME IN HERE, ENDING IN $00
|
||||
ASC ' '
|
||||
ASC ' '
|
||||
ASC ' '
|
||||
ASC ' '
|
||||
ASC ' '
|
||||
ASC ' '
|
||||
DFB $00
|
||||
;
|
||||
;
|
||||
;ALGORITHM:
|
||||
;==========
|
||||
;WHILE NOT EOF
|
||||
; LOAD MAIN,
|
||||
; IF EOF
|
||||
; MODE=PLAYMAIN
|
||||
; ELSE
|
||||
; TRANSFER MAIN TO AUX1
|
||||
; LOAD MAIN,
|
||||
; IF EOF
|
||||
; MODE=AUX1MAIN
|
||||
; ELSE
|
||||
; TRANSFER MAIN TO AUX2
|
||||
; LOAD MAIN
|
||||
; MODE=AUX1AUX2MAIN
|
||||
;
|
||||
;MODE PLAYMAIN
|
||||
; PLAY MAIN
|
||||
;
|
||||
;MODE AUX1MAIN
|
||||
; PLAY AUX1
|
||||
; PLAY MAIN
|
||||
;
|
||||
;MODE AUX1AUX2MAIN
|
||||
; PLAY AUX1
|
||||
; PLAY AUX2
|
||||
; PLAY MAIN
|
||||
;
|
||||
;========
|
||||
;MAINLINE
|
||||
;========
|
||||
MAINLINE JSR MIDIINIT
|
||||
JSR DRVRINIT
|
||||
JSR OPENFILE
|
||||
JSR READHEAD
|
||||
PLAYLOOP JSR LOADMAIN
|
||||
LDA EOFFLAG
|
||||
BNE MAINONLY
|
||||
;
|
||||
JSR XFERAUX1
|
||||
JSR LOADMAIN
|
||||
LDA EOFFLAG
|
||||
BNE AUX1MAIN
|
||||
;
|
||||
JSR XFERAUX2
|
||||
JSR LOADMAIN
|
||||
JSR A1A2MAIN
|
||||
LDA EOFFLAG
|
||||
BEQ PLAYLOOP
|
||||
JMP EXITPGM
|
||||
;=======
|
||||
MIDIINIT BIT $C059 ;AN0ON
|
||||
LDA #$00
|
||||
STA USERSTOP
|
||||
STA $C001 ; 80STOREON
|
||||
STA $C056 ; HIRES OFF
|
||||
STA $C054 ; TEXT PAGE IN MAIN RAM
|
||||
RTS
|
||||
;-------
|
||||
MAINONLY JSR PLAYMAIN
|
||||
JMP EXITPGM
|
||||
;-------
|
||||
AUX1MAIN JSR PLAYAUX1
|
||||
JSR PLAYMAIN
|
||||
JMP EXITPGM
|
||||
;-------
|
||||
A1A2MAIN JSR PLAYAUX1
|
||||
JSR PLAYAUX2
|
||||
JSR PLAYMAIN
|
||||
RTS
|
||||
;-------
|
||||
EXITPGM JSR CLOSEFIL
|
||||
RTS
|
||||
;-------------------
|
||||
;==END OF MAINLINE==
|
||||
;-------------------
|
||||
;--------
|
||||
;OPENFILE
|
||||
;--------
|
||||
MLI EQU $BF00
|
||||
OPENCMD EQU $C8
|
||||
READCMD EQU $CA
|
||||
CLOSECMD EQU $CC
|
||||
PRINTERR EQU $FDDA
|
||||
;
|
||||
OPENPARM DFB $03
|
||||
DW PATHNAME
|
||||
DW FILEBUFR
|
||||
OPENREF DFB $00
|
||||
;
|
||||
RHEADPRM DFB $04
|
||||
RHEADREF DFB $00
|
||||
HDATADRS DW MAINBUFR
|
||||
HREQLEN DW MTHDLEN
|
||||
HACTLEN DW $0000
|
||||
;
|
||||
READPARM DFB $04
|
||||
READREF DFB $00
|
||||
DATAADRS DW MAINBUFR
|
||||
REQLEN DW MAINLEN
|
||||
ACTLEN DW $0000
|
||||
;
|
||||
CLOSEPRM DFB $01
|
||||
CLOSEREF DFB $00
|
||||
;
|
||||
OPENFILE JSR MLI
|
||||
DFB OPENCMD
|
||||
DW OPENPARM
|
||||
BCS MLIERROR
|
||||
LDA OPENREF
|
||||
STA READREF
|
||||
STA RHEADREF
|
||||
STA CLOSEREF
|
||||
RTS
|
||||
;
|
||||
MLIERROR JSR PRINTERR
|
||||
BRK
|
||||
;--------
|
||||
CLOSEFIL JSR MLI
|
||||
DFB CLOSECMD
|
||||
DW CLOSEPRM
|
||||
BCS MLIERROR
|
||||
RTS
|
||||
;--------
|
||||
LOADMAIN LDA USERSTOP
|
||||
BEQ LOADMAI1
|
||||
RTS
|
||||
LOADMAI1 JSR MLI
|
||||
DFB READCMD
|
||||
DW READPARM
|
||||
BCC GOODREAD ;NO MLI ERROR
|
||||
CMP #$4C ; DID WE READ PAST EOF?
|
||||
BEQ MARKEOF
|
||||
BNE MLIERROR
|
||||
GOODREAD LDA DEBUG
|
||||
BEQ SKIP1
|
||||
LDA #'R'
|
||||
JSR $FDF0
|
||||
LDA ACTLEN+1
|
||||
JSR $FDDA
|
||||
LDA ACTLEN
|
||||
JSR $FDDA
|
||||
SKIP1 LDA REQLEN ;COMPARE ACTUAL LEN TO REQUESTED LEN
|
||||
CMP ACTLEN ;TO CHECK FOR EOF CONDITION
|
||||
BNE MARKEOF
|
||||
LDA REQLEN+1
|
||||
CMP ACTLEN+1
|
||||
BNE MARKEOF
|
||||
RTS
|
||||
MARKEOF LDA #$1
|
||||
STA EOFFLAG
|
||||
RTS
|
||||
;--------
|
||||
READHEAD JSR MLI
|
||||
DFB READCMD
|
||||
DW RHEADPRM
|
||||
BCC GOODHEAD ;NO MLI ERROR
|
||||
CMP #$4C ; DID WE READ PAST EOF?
|
||||
BEQ MARKEOF
|
||||
BNE MLIERROR
|
||||
GOODHEAD RTS
|
||||
;--------
|
||||
XFERAUX1 LDA #>MAINBUFR
|
||||
STA A1L
|
||||
LDA #<MAINBUFR
|
||||
STA A1H
|
||||
LDA #>MAINEND
|
||||
STA A2L
|
||||
LDA #<MAINEND
|
||||
STA A2H
|
||||
LDA #>AUX1BUFR
|
||||
STA A4L
|
||||
LDA #<AUX1BUFR
|
||||
STA A4H
|
||||
SEC ;MAIN TO AUX
|
||||
JSR AUXMOVE
|
||||
RTS
|
||||
;--------
|
||||
XFERAUX2 LDA #>MAINBUFR
|
||||
STA A1L
|
||||
LDA #<MAINBUFR
|
||||
STA A1H
|
||||
LDA #>MAINEND
|
||||
STA A2L
|
||||
LDA #<MAINEND
|
||||
STA A2H
|
||||
LDA #>AUX2BUFR
|
||||
STA A4L
|
||||
LDA #<AUX2BUFR
|
||||
STA A4H
|
||||
SEC ;MAIN TO AUX
|
||||
JSR AUXMOVE
|
||||
RTS
|
||||
;--------
|
||||
PLAYAUX1 LDA DEBUG
|
||||
BEQ SKIP2
|
||||
LDA #'1'
|
||||
JSR $FDF0
|
||||
;
|
||||
SKIP2 LDA USERSTOP
|
||||
BEQ AUX1OK
|
||||
RTS
|
||||
AUX1OK LDA #>AUX1BUFR
|
||||
STA DRVRSTRT
|
||||
LDA #<AUX1BUFR
|
||||
STA DRVRSTRT+1
|
||||
LDA #>AUX1END
|
||||
CLC
|
||||
ADC #$01
|
||||
STA DRVREND
|
||||
LDA #<AUX1END
|
||||
ADC #$00
|
||||
STA DRVREND+1
|
||||
JSR DRVRAUX
|
||||
LDA DRVREOT
|
||||
BEQ AUX1DONE
|
||||
LDA #$01
|
||||
STA EOFFLAG
|
||||
STA USERSTOP
|
||||
AUX1DONE RTS
|
||||
;--------
|
||||
PLAYAUX2 LDA DEBUG
|
||||
BEQ SKIP3
|
||||
LDA #'2'
|
||||
JSR $FDF0
|
||||
;
|
||||
SKIP3 LDA USERSTOP
|
||||
BEQ AUX2OK
|
||||
RTS
|
||||
AUX2OK LDA #>AUX2BUFR
|
||||
STA DRVRSTRT
|
||||
LDA #<AUX2BUFR
|
||||
STA DRVRSTRT+1
|
||||
LDA #>AUX2END
|
||||
CLC
|
||||
ADC #$01
|
||||
STA DRVREND
|
||||
LDA #<AUX2END
|
||||
ADC #$00
|
||||
STA DRVREND+1
|
||||
JSR DRVRAUX
|
||||
LDA DRVREOT
|
||||
BEQ AUX2DONE
|
||||
LDA #$01
|
||||
STA EOFFLAG
|
||||
STA USERSTOP
|
||||
AUX2DONE RTS
|
||||
;--------
|
||||
PLAYMAIN LDA DEBUG
|
||||
BEQ SKIP4
|
||||
LDA #'M'
|
||||
JSR $FDF0
|
||||
;
|
||||
SKIP4 LDA USERSTOP
|
||||
BEQ MAINOK
|
||||
RTS
|
||||
MAINOK LDA #>MAINBUFR
|
||||
STA DRVRSTRT
|
||||
LDA #<MAINBUFR
|
||||
STA DRVRSTRT+1
|
||||
LDA #>MAINEND
|
||||
CLC
|
||||
ADC #$01
|
||||
STA DRVREND
|
||||
LDA #<MAINEND
|
||||
ADC #$00
|
||||
STA DRVREND+1
|
||||
JSR DRVRMAIN
|
||||
LDA DRVREOT
|
||||
BEQ MAINDONE
|
||||
LDA #$01
|
||||
STA EOFFLAG
|
||||
STA USERSTOP
|
||||
MAINDONE RTS
|
23
LEGACY/MIDIDRVR.SC0.txt
Normal file
23
LEGACY/MIDIDRVR.SC0.txt
Normal file
|
@ -0,0 +1,23 @@
|
|||
;MIDIDRVR.SC0
|
||||
;
|
||||
TESTDAT1 DFB $90,$3C,$40,$40,$40,$43,$40
|
||||
TESTDAT2 DFB $90,$3C,$00,$40,$00,$43,$00
|
||||
QUIETMSG DFB $B0,$78,$00,$B0,$79,$00,$B0,$7B,$00
|
||||
DFB $B1,$78,$00,$B1,$79,$00,$B1,$7B,$00
|
||||
DFB $B2,$78,$00,$B2,$79,$00,$B2,$7B,$00
|
||||
DFB $B3,$78,$00,$B3,$79,$00,$B3,$7B,$00
|
||||
DFB $B4,$78,$00,$B4,$79,$00,$B4,$7B,$00
|
||||
DFB $B5,$78,$00,$B5,$79,$00,$B5,$7B,$00
|
||||
DFB $B6,$78,$00,$B6,$79,$00,$B6,$7B,$00
|
||||
DFB $B7,$78,$00,$B7,$79,$00,$B7,$7B,$00
|
||||
DFB $B8,$78,$00,$B8,$79,$00,$B8,$7B,$00
|
||||
DFB $B9,$78,$00,$B9,$79,$00,$B9,$7B,$00
|
||||
DFB $BA,$78,$00,$BA,$79,$00,$BA,$7B,$00
|
||||
DFB $BB,$78,$00,$BB,$79,$00,$BB,$7B,$00
|
||||
DFB $BC,$78,$00,$BC,$79,$00,$BC,$7B,$00
|
||||
DFB $BD,$78,$00,$BD,$79,$00,$BD,$7B,$00
|
||||
DFB $BE,$78,$00,$BE,$79,$00,$BE,$7B,$00
|
||||
DFB $BF,$78,$00,$BF,$79,$00,$BF,$7B,$00
|
||||
;----------------
|
||||
; END OF PROGRAM
|
||||
;----------------
|
195
LEGACY/MIDIDRVR.SRC.txt
Normal file
195
LEGACY/MIDIDRVR.SRC.txt
Normal file
|
@ -0,0 +1,195 @@
|
|||
;-------------------------------------------------------------------------
|
||||
; APPLE MIDI DRIVER THROUGH ANNUNCIATOR 0
|
||||
; COPYRIGHT 1998, ERIC RANGELL
|
||||
;-------------------------------------------------------------------------
|
||||
; THIS DRIVER IMPLEMENTS ASYNCHRONOUS SERIAL DATA TRANSMISSION
|
||||
; THROUGH THE APPLE ANNUNCIATOR 0 OUTPUT PORT OF THE GAME CONNECTOR
|
||||
; USING 32 CYCLES PER BIT TO ACHIEVE A 31.25K MIDI BAUD RATE.
|
||||
;
|
||||
; THE OUTPUT IS INITIALIZED TO A HIGH LOGIC VOLTAGE. WHEN IT GOES
|
||||
; LOW FOR 32 MICROSECONDS, THAT INDICATES THE START BIT OF A MIDI BYTE.
|
||||
; THEN 8 BYTES OF DATA ARE TRANSMITTED, FOLLOWED BY A HIGH STOP BIT.
|
||||
; THE DATA BYTES REPRESENT MIDI MESSAGES WHICH CAN BE INTERPRETED BY
|
||||
; ANY MUSICAL INSTRUMENT THAT IMPLEMENTS MIDI.
|
||||
;
|
||||
; ENTRY POINTS:
|
||||
;
|
||||
; $9000 = INITIALIZE - TURNS ON ANNUNCIATOR 0 - MUST BE CALLED ONCE
|
||||
; $9003 = APPLESOFT CALL TO SEND ONE MIDI BYTE. POKE THE BYTE IN $9004.
|
||||
; $9005 = ASSEMBLY CALL TO SEND ONE MIDI BYTE FROM ACCUMULATOR
|
||||
; $9008 = APPLESOFT OR ASSEMBLY CALL TO SEND SEVERAL BYTES AT ONCE:
|
||||
; THE CALLER POPULATES LOCATION $D7 WITH THE NUMBER OF BYTES TO BE
|
||||
; TRANSMITTED, AND A POINTER IN $CE,CF (LO,HI) WITH THE ADDRESS OF
|
||||
; THE DATA BYTES, THEN CALLS THE ENTRY POINT "SENDMSG" TO TRANSMIT
|
||||
; THE MESSAGE.
|
||||
; $900B = SEND A TEST MESSAGE - C MAJOR CHORD NOTE ONS
|
||||
; $900E = SEND A TEST MESSAGE - C MAJOR CHORD NOTE OFFS
|
||||
;-------------------------------------------------------------------------
|
||||
ORG $9000
|
||||
;
|
||||
AN0OFF EQU $C058 ;APPLE ADDRESSES THAT CONTROL ANNUNCIATOR OUTPUTS
|
||||
AN0ON EQU $C059
|
||||
AN1OFF EQU $C05A
|
||||
AN1ON EQU $C05B
|
||||
AN2OFF EQU $C05C
|
||||
AN2ON EQU $C05D
|
||||
AN3OFF EQU $C05E
|
||||
AN3ON EQU $C05F
|
||||
;
|
||||
; CALLER MUST POPULATE THE FOLLOWING TWO ZERO PAGE LOCATIONS FOR SENDMSG:
|
||||
;
|
||||
NUMBYTES EQU $D7 ;NUMBER OF BYTES TO BE TRANSMITTED NOW (1-256)
|
||||
; ;THE VALUE 0 WILL TRANSMIT 256 BYTES.
|
||||
DATAPTR EQU $CE ;POINTER TO THE BYTES TO BE TRANSMITTED NOW
|
||||
;---------------------------------------------------------------------------
|
||||
START JMP INIT ;MAIN ENTRY POINT - INITIALIZES ANNUNCIATORS
|
||||
SENDFP LDA #$90 ;ENTRY POINT FOR APPLESOFT: POKE BYTE AND CALL
|
||||
SENDONE JMP XMITONE ;ENTRY POINT FOR TRANSMITTING ONE BYTE FROM ACCUM
|
||||
SENDMSG JMP XMITMSG ;ENTRY POINT FOR TRANSMITTING A MIDI MESSAGE
|
||||
ALLNOFF JMP QUIET ;TURN ALL NOTES OFF
|
||||
TEST1 JMP TESTMSG1 ;SEND TEST MESSAGE 1 - C MAJOR CHORD ON
|
||||
TEST2 JMP TESTMSG2 ;SEND TEST MESSAGE 2 - C MAJOR CHORD OFF
|
||||
SAVENBYT DFB $00 ;SAVE AREA FOR NUMBYTES
|
||||
TEMPA DFB $00
|
||||
TEMPX DFB $00
|
||||
;---------------------------------------------------------------------------
|
||||
INIT BIT AN0ON
|
||||
RTS
|
||||
;---------------------------------------------------------------------------
|
||||
XMITMSG LDA NUMBYTES ;SAVE NUMBER OF BYTES
|
||||
STA SAVENBYT ;BECAUSE WE WILL CLOBBER IT
|
||||
LDY #$00 ;Y WILL BE AN INDEX INTO THE DATA AREA
|
||||
XMITLOOP LDA (DATAPTR),Y ;GET A DATA BYTE
|
||||
JSR XMITONE
|
||||
INY ;POINT TO NEXT BYTE
|
||||
DEC NUMBYTES ;DECREMENT COUNTER
|
||||
LDA NUMBYTES ;CHECK IF ZERO
|
||||
BNE XMITLOOP ;LOOP UNTIL DONE SENDING ALL BYTES
|
||||
LDA SAVENBYT
|
||||
STA NUMBYTES ;RESTORE ORIGINAL VALUE OF NUMBYTES
|
||||
RTS
|
||||
;---------------------------------------------------------------------------
|
||||
XMITONE STA TEMPA ;SAVE A AND X REGISTERS
|
||||
STX TEMPX
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT7+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT6+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT5+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT4+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT3+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT2+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT1+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
ASL A ;SHIFT BIT INTO CARRY
|
||||
TAX ;SAVE CURRENT IMAGE OF DATA BYTE
|
||||
LDA #$00 ;ZERO OUT ACCUMULATOR FOR ADD
|
||||
ADC #>AN0OFF ;ADD CARRY TO ANNUNCIATOR ADDRESS
|
||||
STA BIT0+1 ;MODIFY THE XMITBITS SUBROUTINE
|
||||
TXA ;RESTORE ACCUMULATOR
|
||||
;
|
||||
JSR XMITBITS ;SEND THE BYTE OUT
|
||||
LDX TEMPX
|
||||
LDA TEMPA ;RESTORE X AND A
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
XMITBITS BIT AN0OFF ;4 CYCLES - TRANSMIT START BIT - ALWAYS LOW
|
||||
JSR DELAY22 ;6+22
|
||||
BIT0 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT1 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT2 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT3 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT4 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT5 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT6 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT7 BIT AN0OFF ;4
|
||||
JSR DELAY22 ;6+22
|
||||
BIT AN0ON ;4 ;TRANSMIT STOP BIT - ALWAYS HIGH
|
||||
JSR DELAY22 ;6+22
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
DELAY22 NOP ;WAIT 22 CYCLES
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
TESTMSG1 LDA #7
|
||||
STA NUMBYTES
|
||||
LDA #>TESTDAT1
|
||||
STA DATAPTR
|
||||
LDA #<TESTDAT1
|
||||
STA DATAPTR+1
|
||||
JSR SENDMSG
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
TESTMSG2 LDA #7
|
||||
STA NUMBYTES
|
||||
LDA #>TESTDAT2
|
||||
STA DATAPTR
|
||||
LDA #<TESTDAT2
|
||||
STA DATAPTR+1
|
||||
JSR SENDMSG
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
QUIET LDA #$90
|
||||
STA NUMBYTES
|
||||
LDA #>QUIETMSG
|
||||
STA DATAPTR
|
||||
LDA #<QUIETMSG
|
||||
STA DATAPTR+1
|
||||
JSR SENDMSG
|
||||
RTS
|
||||
;-----------------------------------------------------------------------
|
||||
CHN MIDIDRVR.SC0
|
9
LEGACY/README.md
Normal file
9
LEGACY/README.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# A2NoSlotMIDI - Legacy files
|
||||
|
||||
Older Videos:
|
||||
|
||||
https://www.youtube.com/watch?v=fdgd4MUtWYE
|
||||
|
||||
https://www.youtube.com/watch?v=tNYEfkiOkMA
|
||||
|
||||
Source code in this directory was originally assembled with EDASM
|
|
@ -7,7 +7,8 @@ See NoSlotMidi.pptx for Kansasfest 2018 Lightning Talk presentation about this p
|
|||
|
||||
DSK directory contains Apple 140K disk images of compiled code.
|
||||
|
||||
SRC directory contains current source code
|
||||
SRC directory contains current source code.
|
||||
|
||||
See LEGACY directory for previous versions of source code, disk images, and videos.
|
||||
|
||||
Submit your ideas for lesson plans as pull requests to the LESSONS directory.
|
||||
|
|
Loading…
Reference in New Issue
Block a user