mirror of
https://github.com/antoinevignau/source.git
synced 2026-10-23 04:02:28 +00:00
1539 lines
34 KiB
ArmAsm
1539 lines
34 KiB
ArmAsm
*
|
|
* ShellPlay v0.71
|
|
*
|
|
* (c) 1993, Brian Bening
|
|
* (s) 2026, Brutal Deluxe Software
|
|
*
|
|
|
|
mx %00
|
|
lst off
|
|
|
|
*-------------------------------
|
|
* TOOLS
|
|
*-------------------------------
|
|
|
|
use 4/Int.Macs
|
|
use 4/Mem.Macs
|
|
use 4/Misc.Macs
|
|
use 4/Text.Macs
|
|
use 4/Util.Macs
|
|
|
|
*-------------------------------
|
|
* EQUATES
|
|
*-------------------------------
|
|
|
|
TOOLBOX EQU $E10000
|
|
GSOS EQU $E100A8
|
|
|
|
*-------------------------------
|
|
* EXTERNALS
|
|
*-------------------------------
|
|
|
|
EXT L030000
|
|
|
|
*-------------------------------
|
|
* CODE
|
|
*-------------------------------
|
|
|
|
PHK
|
|
PLB
|
|
STA L02078E
|
|
STY $00
|
|
STX $02
|
|
|
|
lda #L030000
|
|
stal $300
|
|
lda #^L030000
|
|
stal $302
|
|
|
|
JSR L020112 ; get memory
|
|
BCC L020011
|
|
BRL L0200C5
|
|
L020011 JSR L0206D5
|
|
BCC L020019
|
|
BRL L0200C5
|
|
L020019 PHA
|
|
PHA
|
|
LDA #$0001 ; StartUp
|
|
JSL L030000
|
|
PLX
|
|
PLX
|
|
BCC L020087
|
|
CMP #$8103
|
|
BNE L02005E
|
|
|
|
BRA L02004E
|
|
L02002D STR 'Sound toolset is already active.'
|
|
L02004E PEA ^L02002D
|
|
PEA L02002D
|
|
_WriteLine
|
|
BRL L0200C5
|
|
|
|
L02005E BRA L020077
|
|
L020060 STR 'Unable to allocate DP.'
|
|
L020077 PEA ^L020060
|
|
PEA L020060
|
|
_WriteLine
|
|
BRL L0200C5
|
|
|
|
*-------------------------------
|
|
* Good start
|
|
*-------------------------------
|
|
|
|
L020087 LDA #$0001
|
|
STA L02078C
|
|
LDA #$0000
|
|
STA L02078A
|
|
JSR L020167
|
|
BCC L02009B
|
|
BRL L0200C5
|
|
L02009B LDA L020774
|
|
BEQ L0200BC
|
|
PEI $0E ; handle
|
|
PEI $0C
|
|
LDA $06 ; handle
|
|
PHA
|
|
LDA $04
|
|
PHA
|
|
LDA L020774 ; length
|
|
PHA
|
|
LDA #$0005
|
|
JSL L030000
|
|
PLX
|
|
PLX
|
|
PLX
|
|
PLX
|
|
PLX
|
|
BCS L0200CA
|
|
L0200BC LDA #$0001
|
|
STA L02078A
|
|
JSR L020167
|
|
L0200C5 CLC
|
|
LDA #$0000
|
|
RTL
|
|
|
|
L0200CA PHA
|
|
PEA ^L020790
|
|
PEA L020790
|
|
_WriteString
|
|
JSR L0200E1
|
|
PLA
|
|
JSR L020102
|
|
BRA L0200C5
|
|
L0200E1 LDA $03,S
|
|
PHA
|
|
PEA ^L0207B1
|
|
PEA L0207B1
|
|
PEA $0004
|
|
_Int2Hex
|
|
PEA ^L0207B0
|
|
PEA L0207B0
|
|
_WriteString
|
|
RTS
|
|
|
|
L020102 PEA ^L0207AF
|
|
PEA L0207AF
|
|
_WriteLine
|
|
RTS
|
|
|
|
CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
L020112 STZ L020770 ; no Orca yet
|
|
LDY #$0006
|
|
L020118 LDA L020CFB,Y ; Is it BYTEWRKS
|
|
CMP [$00],Y
|
|
BNE L020126
|
|
DEY
|
|
DEY
|
|
BPL L020118
|
|
INC L020770 ; we are running under Orca
|
|
|
|
L020126 STZ L020774
|
|
STZ L020776
|
|
PHA
|
|
PHA
|
|
LDA #$0000
|
|
PHA
|
|
PHA
|
|
LDA L02078E
|
|
PHA
|
|
PEA $0000
|
|
PHA
|
|
PHA
|
|
_NewHandle
|
|
PLX
|
|
STX $04
|
|
PLX
|
|
STX $06
|
|
PHA
|
|
PHA
|
|
LDA #$0000
|
|
PHA
|
|
PHA
|
|
LDA L02078E
|
|
PHA
|
|
PEA $0000
|
|
PHA
|
|
PHA
|
|
_NewHandle
|
|
PLX
|
|
STX $0C
|
|
PLX
|
|
STX $0E
|
|
RTS
|
|
|
|
L020167 LDY #$0008
|
|
JSR L0201CB
|
|
JSR L0201E5
|
|
L020170 CMP #'-' ; - 8
|
|
BNE L02017E
|
|
STA L02077A
|
|
INY
|
|
JSR L02024B
|
|
BRA L0201C0
|
|
L02017E CMP #'+' ; + 9
|
|
BNE L02018C
|
|
STA L02077A
|
|
INY
|
|
JSR L02024B
|
|
BRA L0201C0
|
|
L02018C CMP #$0022 ; " A
|
|
BNE L0201A0
|
|
STA L02077C
|
|
LDA #$0001
|
|
STA L020780
|
|
INY
|
|
JSR L0204F2
|
|
BRA L0201C0
|
|
L0201A0 CMP #$0027 ; ' B
|
|
BNE L0201B1
|
|
STA L02077C
|
|
STZ L020780
|
|
INY
|
|
JSR L0204F2
|
|
BRA L0201C0
|
|
L0201B1 LDA #$0001
|
|
STA L020780
|
|
LDA #$0020
|
|
STA L02077C
|
|
JSR L0204F2
|
|
L0201C0 BCS L0201C9
|
|
JSR L0201E5
|
|
BNE L020170
|
|
CLC
|
|
RTS
|
|
|
|
L0201C9 SEC
|
|
RTS
|
|
|
|
L0201CB LDA #$0020
|
|
SEP #$20
|
|
STA L02077E
|
|
BRA L0201D6
|
|
L0201D5 INY
|
|
L0201D6 LDA [$00],Y
|
|
BEQ L0201DF
|
|
CMP L02077E
|
|
BNE L0201D5
|
|
L0201DF REP #$20
|
|
AND #$00FF
|
|
RTS
|
|
|
|
L0201E5 SEP #$20
|
|
BRA L0201EA
|
|
L0201E9 INY
|
|
L0201EA LDA [$00],Y
|
|
BEQ L0201F2
|
|
CMP #$20
|
|
BEQ L0201E9
|
|
L0201F2 REP #$30
|
|
AND #$00FF
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* String to number
|
|
*-------------------------------
|
|
|
|
MX %10
|
|
L0201F8 SEP #$20
|
|
LDX #$0000
|
|
INY
|
|
LDA [$00],Y
|
|
CMP #$2D ; .
|
|
L020202 BNE L020209
|
|
STA L0207B1,X
|
|
INX
|
|
INY
|
|
L020209 JSR L020233 ; is it a number?
|
|
BCS L020230 ; no
|
|
L02020E JSR L020233 ; is it a number again?
|
|
BCC L02020E ; yes
|
|
CPX #$0007 ; end of string?
|
|
BCS L020230 ; yes
|
|
REP #$20 ; make it a number
|
|
PHY
|
|
PHA
|
|
PEA ^L0207B1
|
|
PEA L0207B1
|
|
PHX
|
|
PEA $0001
|
|
_Dec2Int
|
|
PLA
|
|
PLY
|
|
DEY
|
|
L020230 REP #$20
|
|
RTS
|
|
|
|
MX %10
|
|
L020233 LDA [$00],Y ; save the number value
|
|
CMP #$30
|
|
BCC L020249
|
|
CMP #$3A
|
|
BCS L020249
|
|
CPX #$0006
|
|
BCS L020245
|
|
STA L0207B1,X
|
|
L020245 INX
|
|
INY
|
|
CLC
|
|
RTS
|
|
L020249 SEC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
MX %00
|
|
|
|
L02024B LDA [$00],Y
|
|
AND #$00FF
|
|
BEQ L020257
|
|
CMP #' ' ; space
|
|
BNE L02025A
|
|
L020257 BRL L0202DA
|
|
L02025A PHY
|
|
PEA L0202D3-1
|
|
CMP #'K' ; K - stop shellplay and remove it from memory
|
|
BNE L020266
|
|
BRL L0203AA
|
|
L020266 CMP #'t' ; t - guess the tempo method
|
|
BNE L02026E
|
|
BRL L0203BC
|
|
L02026E CMP #'C' ; C - clear all songs from the playlist
|
|
BNE L020276
|
|
BRL L02039C
|
|
L020276 CMP #'s' ; s - skip to the previous/next song
|
|
BNE L02027E
|
|
BRL L020368
|
|
L02027E CMP #'H' ; H - hardware handshaking on the modem port
|
|
BNE L020286
|
|
BRL L02034A
|
|
L020286 CMP #'S' ; S - use X% stereo
|
|
BNE L02028E
|
|
BRL L0202FC
|
|
L02028E CMP #'V' ; V - set the volume to X% of the maximum
|
|
BNE L020296
|
|
BRL L020316
|
|
L020296
|
|
* BRA L0202A0
|
|
CMP #'E' ; E - unknown feature
|
|
BNE L0202A0
|
|
BRL L020330
|
|
L0202A0 CMP #'r' ; r - play MODs randomly/sequentially
|
|
BNE L0202A8
|
|
BRL L020470
|
|
L0202A8 CMP #'b' ; b - do/don't follow position jumps
|
|
BNE L0202B0
|
|
BRL L02048E
|
|
L0202B0 CMP #'c' ; c - print the name of the MOD currently being played
|
|
BNE L0202B8
|
|
BRL L0204AC
|
|
L0202B8 CMP #'l' ; l - print out the playlist
|
|
BNE L0202C0
|
|
BRL L0204BA
|
|
L0202C0 CMP #'g' ; g - goto song number X
|
|
BNE L0202C8
|
|
BRL L0204C8
|
|
L0202C8 CMP #'?' ; ? - print a brief option summary
|
|
BNE L0202D0
|
|
BRL L0204E8
|
|
L0202D0 BRL L020404
|
|
L0202D3 PLY
|
|
BCS L0202DB
|
|
INY
|
|
BRL L02024B
|
|
L0202DA CLC
|
|
L0202DB RTS
|
|
|
|
*-------------------------------
|
|
* Err / Illegal value
|
|
*-------------------------------
|
|
|
|
L0202DC BRA L0202ED
|
|
L0202DE STR 'Illegal value.'
|
|
L0202ED PEA ^L0202DE
|
|
PEA L0202DE
|
|
_WriteLine
|
|
SEC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* S / Set Stereo Value
|
|
*-------------------------------
|
|
|
|
L0202FC JSR L0201F8 ; get a number
|
|
BCS L0202DC
|
|
PHA
|
|
TYA
|
|
STA $05,S
|
|
LDA L02078A
|
|
CLC
|
|
BNE L020312
|
|
LDA #$000C
|
|
JSL L030000
|
|
L020312 PLA
|
|
BCS L0202DC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* V / Set Volume
|
|
*-------------------------------
|
|
|
|
L020316 JSR L0201F8 ; get a number
|
|
BCS L0202DC
|
|
PHA
|
|
TYA
|
|
STA $05,S
|
|
LDA L02078A
|
|
CLC
|
|
BNE L02032C
|
|
LDA #$000B
|
|
JSL L030000
|
|
L02032C PLA
|
|
BCS L0202DC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* E / Unknown feature
|
|
*-------------------------------
|
|
|
|
L020330 JSR L0201F8 ; get a number?
|
|
BCS L0202DC ; error
|
|
PHA
|
|
TYA
|
|
STA $05,S
|
|
LDA L02078A
|
|
CLC
|
|
BEQ L020346
|
|
LDA #$000D
|
|
JSL L030000
|
|
L020346 PLA
|
|
BCS L0202DC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* H / Hardware handshaking
|
|
*-------------------------------
|
|
|
|
L02034A LDA L02078A
|
|
BNE L0203BA
|
|
LDY #$FFFF
|
|
LDA L02077A
|
|
CMP #'+' ; +
|
|
BEQ L02035D
|
|
LDY #$0000
|
|
L02035D PHY
|
|
LDA #$000A
|
|
JSL L030000
|
|
PLY
|
|
CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* s / Skip to the previous/next song
|
|
*-------------------------------
|
|
|
|
L020368 LDA L02078A
|
|
BEQ L0203BA
|
|
LDA L02078C
|
|
BEQ L0203BA
|
|
LDX #$0000
|
|
L020375 INY
|
|
INX
|
|
LDA [$00],Y
|
|
AND #$007F
|
|
CMP #$0073 ; s
|
|
BEQ L020375
|
|
DEY
|
|
TYA
|
|
STA $03,S
|
|
TXA
|
|
LDY L02077A
|
|
CPY #'+' ; +
|
|
BEQ L020392
|
|
EOR #$FFFF
|
|
INC
|
|
L020392 PHA
|
|
LDA #$0009
|
|
JSL L030000
|
|
PLA
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* C / Clear all songs from the playlist
|
|
*-------------------------------
|
|
|
|
L02039C LDA L02078A
|
|
BNE L0203BA
|
|
LDA #$0008
|
|
JSL L030000
|
|
CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* K / stop shellplay and remove it from memory
|
|
*-------------------------------
|
|
|
|
L0203AA LDA L02078C
|
|
BEQ L0203B8
|
|
JSL L020D03
|
|
LDA $00
|
|
STA L02078C
|
|
L0203B8 SEC
|
|
RTS
|
|
L0203BA CLC
|
|
RTS
|
|
|
|
L0203BC INY
|
|
TYA
|
|
STA $03,S
|
|
LDA [$00],Y
|
|
AND #$00FF
|
|
TAX
|
|
SEC
|
|
SBC #$0030
|
|
CMP #$0005 ; 50 or 60 Hz
|
|
BCC L0203EF
|
|
LDA #$0000
|
|
CPX #$0073 ; s - guess the tempo method -> 0
|
|
BEQ L0203EF
|
|
INC
|
|
CPX #$0070 ; p - force SP to use Protracker tempo -> 1
|
|
BEQ L0203EF
|
|
INC
|
|
CPX #$0063 ; c - force SP to use constant speed tempo -> 2
|
|
BEQ L0203EF
|
|
INC
|
|
CPX #$0035 ; 5 - use 50Hz timing -> 3
|
|
BEQ L0203EF
|
|
INC
|
|
CPX #$0036 ; 6 - use 60Hz timing -> 4
|
|
BNE L020448
|
|
L0203EF LDX L02078A
|
|
BEQ L0203BA
|
|
LDX L02078C
|
|
BEQ L0203BA
|
|
PHA
|
|
LDA #$0007 ; Set Tempo
|
|
JSL L030000
|
|
PLA
|
|
CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
L020404 LDA L02078A
|
|
BNE L0203BA
|
|
BRA L020418
|
|
|
|
L02040B STR 'Bad option: '
|
|
|
|
L020418 PEA ^L02040B
|
|
PEA L02040B
|
|
_WriteString
|
|
LDA $03,S
|
|
TAY
|
|
LDA [$00],Y
|
|
AND #$00FF
|
|
PHA
|
|
_WriteChar
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
BRA L020439
|
|
L020437 STR '.'
|
|
L020439 PEA ^L020437
|
|
PEA L020437
|
|
_WriteLine
|
|
SEC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
L020448 BRA L020461
|
|
L02044A STR 'Invalid tempo setting.'
|
|
L020461 PEA ^L02044A
|
|
PEA L02044A
|
|
_WriteLine
|
|
SEC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* r / play MODs randomly or sequentially
|
|
*-------------------------------
|
|
|
|
L020470 LDA L02078A
|
|
BNE L02048C
|
|
LDY #$0001 ; 0001: randomly
|
|
LDA L02077A
|
|
CMP #'+' ; +
|
|
BEQ L020483
|
|
LDY #$0000 ; 0000: sequentially
|
|
L020483 PHY
|
|
LDA #$000E
|
|
JSL L030000
|
|
PLA
|
|
L02048C CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* b / don't (0000) do (0001) follow position jumps
|
|
*-------------------------------
|
|
|
|
L02048E LDA L02078A
|
|
BEQ L0204AA
|
|
LDY #$0001
|
|
LDA L02077A
|
|
CMP #'+'
|
|
BEQ L0204A1
|
|
LDY #$0000
|
|
L0204A1 PHY
|
|
LDA #$000F
|
|
JSL L030000
|
|
PLA
|
|
L0204AA CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* c / print current song name
|
|
*-------------------------------
|
|
|
|
L0204AC LDA L02078A
|
|
BEQ L0204B8
|
|
LDA #$0011
|
|
JSL L030000
|
|
L0204B8 CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* l / print out the playlist
|
|
*-------------------------------
|
|
|
|
L0204BA LDA L02078A
|
|
BEQ L0204B8
|
|
LDA #$0010
|
|
JSL L030000
|
|
CLC
|
|
RTS
|
|
|
|
*-------------------------------
|
|
* g / goto song number X
|
|
*-------------------------------
|
|
|
|
L0204C8 JSR L0201F8
|
|
BCC L0204D0
|
|
BRL L0202DC ; Err illegal value
|
|
L0204D0 PHA
|
|
TYA
|
|
STA $05,S
|
|
LDA L02078A
|
|
CLC
|
|
BEQ L0204E1
|
|
LDA #$0012
|
|
JSL L030000
|
|
L0204E1 PLA
|
|
BCC L0204E7
|
|
BRL L0202DC ; Err illegal value
|
|
L0204E7 RTS
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
L0204E8 LDA L02078A
|
|
BEQ L0204F0
|
|
JSR L0206E4
|
|
L0204F0 CLC
|
|
RTS
|
|
|
|
L0204F2 STY L020788
|
|
LDX #$0001
|
|
SEP #$20
|
|
L0204FA LDA [$00],Y
|
|
BNE L020501
|
|
BRL L02061D
|
|
L020501 CMP L02077C
|
|
BEQ L020515
|
|
CPX #$0041
|
|
BCC L02050E
|
|
BRL L02065B
|
|
L02050E STA L0207C1,X
|
|
INX
|
|
INY
|
|
BRA L0204FA
|
|
L020515 TYX
|
|
INX
|
|
L020517 REP #$20
|
|
PHX
|
|
LDA L02078A
|
|
BNE L020549
|
|
TYA
|
|
SEC
|
|
SBC L020788
|
|
SEP #$20
|
|
STA L0207C1
|
|
REP #$20
|
|
BEQ L020551
|
|
STZ L020772
|
|
LDA L020770 ; Orca shell?
|
|
BEQ L02053A
|
|
LDA L020780
|
|
BNE L02053F
|
|
L02053A JSR L0205B6
|
|
BRA L020542
|
|
L02053F JSR L020584
|
|
L020542 BCS L02054C
|
|
LDA L020772
|
|
BEQ L020551
|
|
L020549 LDA #$0000
|
|
L02054C PLY
|
|
CMP #$0001
|
|
RTS
|
|
|
|
L020551 PEA ^L020925
|
|
PEA L020925
|
|
_WriteString
|
|
PEA ^L0207C1
|
|
PEA L0207C1
|
|
_WriteString
|
|
PEA $000D
|
|
_WriteChar
|
|
PEA $000A
|
|
_WriteChar
|
|
LDA #$9000
|
|
BRA L02054C
|
|
L020584 JSL GSOS
|
|
DW $0109 ; Shell: Init_Wildcard
|
|
ADRL L0207B7
|
|
L02058E JSL GSOS
|
|
DW $010A ; Shell: Next_Wildcard
|
|
ADRL L0207BD
|
|
LDA L020805
|
|
AND #$00FF
|
|
BEQ L0205B4
|
|
INC L020772
|
|
LDA L020804
|
|
XBA
|
|
AND #$00FF
|
|
STA L020804
|
|
JSR L020682
|
|
BCS L0205B5
|
|
BRA L02058E
|
|
L0205B4 CLC
|
|
L0205B5 RTS
|
|
|
|
L0205B6 STZ L020804
|
|
LDA L0207C2
|
|
AND #$00FF
|
|
CMP #$002F
|
|
BEQ L0205D5
|
|
CMP #$003A
|
|
BEQ L0205D5
|
|
JSL GSOS
|
|
DW $200A ; GetPrefix
|
|
ADRL L020915
|
|
BCS L02061C
|
|
L0205D5 LDA L0207C1
|
|
AND #$00FF
|
|
CLC
|
|
ADC L020804
|
|
CMP #$0100
|
|
BCS L02061C
|
|
TAY
|
|
LDA L020804
|
|
CLC
|
|
ADC #L020806
|
|
STA $18
|
|
STY L020804
|
|
SEP #$30
|
|
LDY L0207C1
|
|
DEY
|
|
L0205F7 LDA L0207C2,Y
|
|
CMP #$2F
|
|
BNE L020600
|
|
LDA #$3A
|
|
L020600 STA ($18),Y
|
|
DEY
|
|
BPL L0205F7
|
|
REP #$30
|
|
JSL GSOS
|
|
DW $2006 ; GetFileInfo
|
|
ADRL L02091D
|
|
BCS L02061B
|
|
INC L020772
|
|
JSR L020682
|
|
BCS L02061C
|
|
L02061B CLC
|
|
L02061C RTS
|
|
|
|
L02061D REP #$20
|
|
LDA L02077C
|
|
CMP #$0020
|
|
BNE L02062B
|
|
TYX
|
|
BRL L020517
|
|
L02062B BRA L020638
|
|
L02062D STR 'Unmatched '
|
|
L020638 PEA ^L02062D
|
|
PEA L02062D
|
|
_WriteString
|
|
LDA L02077C
|
|
PHA
|
|
PEA $0000
|
|
PEA $0001
|
|
PEA $0000
|
|
JSL L020D4B
|
|
L020656 LDA #$8000
|
|
SEC
|
|
RTS
|
|
|
|
L02065B REP #$20
|
|
BRA L020673
|
|
L02065F STR 'Parameter too long.'
|
|
L020673 PEA ^L02065F
|
|
PEA L02065F
|
|
_WriteLine
|
|
BRA L020656
|
|
L020682 LDA L020786
|
|
BNE L02068A
|
|
BRL L0206CE
|
|
L02068A INC L020774
|
|
LDA L020774
|
|
CMP #$0FFF
|
|
BCC L02069B
|
|
LDA #$8102
|
|
BRL L0206D0
|
|
L02069B PEI $0E
|
|
PEI $0C
|
|
PEA ^L020905
|
|
PEA L020905
|
|
PEA $0000
|
|
PEA $0010
|
|
JSL L0206FA
|
|
BCC L0206B3
|
|
BRA L0206CF
|
|
L0206B3 PEI $06
|
|
PEI $04
|
|
PEA ^L020804
|
|
PEA L020804
|
|
PEA $0000
|
|
LDA L020804
|
|
INC
|
|
INC
|
|
PHA
|
|
JSL L0206FA
|
|
BCC L0206CE
|
|
BRA L0206CF
|
|
L0206CE CLC
|
|
L0206CF RTS
|
|
|
|
L0206D0 DEC L020774
|
|
BRA L0206CF
|
|
L0206D5 LDY #$0008
|
|
JSR L0201CB
|
|
BEQ L0206E4
|
|
JSR L0201E5
|
|
BEQ L0206E4
|
|
CLC
|
|
RTS
|
|
|
|
L0206E4 PEA ^L020930
|
|
PEA L020932
|
|
PEA $0000
|
|
LDA L020930
|
|
PHA
|
|
_TextWriteBlock
|
|
SEC
|
|
RTS
|
|
|
|
L0206FA PHD
|
|
PHA
|
|
PHA
|
|
TSC
|
|
INC
|
|
TCD
|
|
PEI $13
|
|
PEI $11
|
|
_GetHandleSize
|
|
CLC
|
|
LDA $00
|
|
ADC $09
|
|
TAX
|
|
LDA $02
|
|
ADC $0B
|
|
PHA
|
|
PHX
|
|
PEI $13
|
|
PEI $11
|
|
_SetHandleSize
|
|
BCS L020759
|
|
LDY #$0004
|
|
LDA [$11],Y
|
|
ORA #$8000
|
|
STA [$11],Y
|
|
PEI $0F
|
|
PEI $0D
|
|
CLC
|
|
LDA [$11]
|
|
ADC $00
|
|
TAX
|
|
LDY #$0002
|
|
LDA [$11],Y
|
|
ADC $02
|
|
PHA
|
|
PHX
|
|
PEI $0B
|
|
PEI $09
|
|
_BlockMove
|
|
LDY #$0004
|
|
LDA [$11],Y
|
|
AND #$7FFF
|
|
STA [$11],Y
|
|
LDA #$0000
|
|
L020759 TAY
|
|
LDA $07
|
|
STA $13
|
|
LDA $06
|
|
STA $12
|
|
LDA $04
|
|
TCD
|
|
TSC
|
|
CLC
|
|
ADC #$0012
|
|
TCS
|
|
TYA
|
|
CMP #$0001
|
|
RTL
|
|
|
|
L020770 DW $0000 ; Orca shell?
|
|
L020772 DB $00
|
|
DB $00
|
|
L020774 DB $00
|
|
DB $00
|
|
L020776 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L02077A DB $00
|
|
DB $00
|
|
L02077C DB $00
|
|
DB $00
|
|
L02077E DB $00
|
|
DB $00
|
|
L020780 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $01
|
|
DB $00
|
|
L020786 DB $01
|
|
DB $00
|
|
L020788 DB $00
|
|
DB $00
|
|
L02078A DW $0000
|
|
L02078C DB $00
|
|
DB $00
|
|
L02078E ENT
|
|
DB $00
|
|
DB $00
|
|
L020790 STR 'Unable to add songs to list: $'
|
|
L0207AF DB $00
|
|
L0207B0 DB $04
|
|
L0207B1 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L0207B7 ADRL L0207C1 ; file name
|
|
DW $0000 ; flags
|
|
L0207BD ADRL L020805 ; file name
|
|
L0207C1 DB $00
|
|
L0207C2 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L020802 DW $0102
|
|
L020804 DB $00
|
|
L020805 DB $00
|
|
L020806 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L020905 DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
DB $00
|
|
L020915 DW $0002 ; Parms for GetPrefix
|
|
DW $0000 ; prefix num
|
|
ADRL L020802 ; prefix ptr
|
|
L02091D DW $0002 ; Parms for GetFileInfo
|
|
ADRL L020804 ; file name
|
|
DW $0000 ; access
|
|
L020925 STR 'No match: '
|
|
|
|
L020930 DW L020CFB-L020932 ; $03C9
|
|
L020932 ASC '---'0D0A
|
|
ASC ' Shellplay v0.72 Copyright (c) 1993 by Brian C Bening Freeware'0D0A
|
|
ASC ' (19:45 23 Jun 93) All rights reserved.'0D0A0D0A
|
|
ASC 'usage: sp [option(s)] [MODfile(s)] [ [option(s)] [MODfile(s)] [...] ]'0D0A
|
|
ASC 'options:'0D0A
|
|
ASC ' -ts smart PT/constant tempo +|-s change current song'0D0A
|
|
ASC ' -tp force protracker tempo -r don'27't use random play'0D0A
|
|
ASC ' -tc force constant tempo +r random play / re-randomize'0D0A
|
|
ASC ' -t5 constant tempo is PAL 50Hz -C clear playlist'0D0A
|
|
ASC ' -t6 constant tempo is NTSC 60Hz -K kill and remove shellplay'0D0A
|
|
ASC ' -VX set volume percent (0..100) -gX goto song X'0D0A
|
|
ASC ' -SX set percent stereo (-200..200) -l print playlist'0D0A
|
|
ASC ' +|-b follow position jumps -c print current MODfile'0D0A
|
|
ASC ' -? print this option list +|-H modem port hardware handshaking'0D0A0D0A
|
|
ASC 'default options: sp -H -r -b -ts -t5 -S70 -V60'0D0A0D0A
|
|
ASC 'send comments, suggestions, bug reports to: vacc0001@student.tc.umn.edu'0D0A
|
|
|
|
L020CFB ASC 'BYTEWRKS'
|
|
|
|
*-------------------------------
|
|
* Stop shellplay and remove it from memory
|
|
*-------------------------------
|
|
|
|
L020D03 LDA #$0002
|
|
JSL L030000
|
|
PHA
|
|
PHA
|
|
_DisposeAll
|
|
_DeleteID
|
|
RTL
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
L020D1B ENT
|
|
TSC
|
|
PHD
|
|
TCD
|
|
PEA ^L020DD6
|
|
PEA L020DD6
|
|
LDA $0A
|
|
JSL L020DBF
|
|
PEA ^L020DD6
|
|
PEA L020DD6
|
|
LDA $08
|
|
PHA
|
|
LDA $06
|
|
PHA
|
|
LDA $04
|
|
PHA
|
|
JSL L020D7A
|
|
LDA $02
|
|
STA $0A
|
|
LDA $00
|
|
STA $08
|
|
PLD
|
|
PLA
|
|
PLA
|
|
PLA
|
|
PLA
|
|
RTL
|
|
|
|
*-------------------------------
|
|
*
|
|
*-------------------------------
|
|
|
|
L020D4B TSC
|
|
PHD
|
|
TCD
|
|
LDA #$0001
|
|
STA L020DD7
|
|
LDA $0A
|
|
STA L020DD8
|
|
PEA ^L020DD6
|
|
PEA L020DD6
|
|
LDA $08
|
|
PHA
|
|
LDA $06
|
|
PHA
|
|
LDA $04
|
|
PHA
|
|
JSL L020D7A
|
|
LDA $02
|
|
STA $0A
|
|
LDA $00
|
|
STA $08
|
|
PLD
|
|
PLA
|
|
PLA
|
|
PLA
|
|
PLA
|
|
RTL
|
|
|
|
L020D7A TSC
|
|
PHD
|
|
TCD
|
|
INC $0A
|
|
BNE L020D83
|
|
INC $0C
|
|
L020D83 LDA [$0A]
|
|
AND #$00FF
|
|
SEC
|
|
SBC $08
|
|
BPL L020D97
|
|
EOR #$FFFF
|
|
INC
|
|
LDY $04
|
|
JSL L020E75
|
|
L020D97 LDA $0C
|
|
PHA
|
|
LDA $0A
|
|
PHA
|
|
LDA $06
|
|
EOR #$0001
|
|
ASL
|
|
ORA $04
|
|
XBA
|
|
CLC
|
|
ADC #$1A0C ; WriteLine
|
|
TAX
|
|
JSL TOOLBOX
|
|
LDA $02
|
|
STA $0C
|
|
LDA $00
|
|
STA $0A
|
|
PLD
|
|
CLC
|
|
TSC
|
|
ADC #$000A
|
|
TCS
|
|
RTL
|
|
|
|
L020DBF PHA
|
|
PEA ^L020E00
|
|
PEA L020E00
|
|
PEA $0028
|
|
PEA $0001
|
|
_Int2Dec
|
|
JMP L020E28
|
|
|
|
L020DD6 DB $28
|
|
L020DD7 DB $00
|
|
L020DD8 DS $28
|
|
L020E00 DS $28
|
|
|
|
L020E28 PHD
|
|
TSC
|
|
TCD
|
|
SEP #$20
|
|
LDX #$0000
|
|
LDA #$20
|
|
L020E32 CMPL L020E00,X
|
|
BNE L020E3B
|
|
INX
|
|
BRA L020E32
|
|
L020E3B REP #$20
|
|
TXA
|
|
SEC
|
|
SBC #$0028
|
|
EOR #$FFFF
|
|
INC
|
|
SEP #$20
|
|
CMP [$06]
|
|
BEQ L020E4E
|
|
BCS L020E65
|
|
L020E4E LDY #$0001
|
|
STA [$06],Y
|
|
L020E53 LDAL L020E00,X
|
|
INY
|
|
STA [$06],Y
|
|
INX
|
|
CPX #$0028
|
|
BCC L020E53
|
|
REP #$20
|
|
CLV
|
|
BRA L020E69
|
|
L020E65 REP #$20
|
|
SEP #$40
|
|
L020E69 LDA $02,S
|
|
STA $06,S
|
|
LDA $04,S
|
|
STA $08,S
|
|
PLD
|
|
PLA
|
|
PLA
|
|
RTL
|
|
|
|
L020E75 PHA
|
|
TYA
|
|
XBA
|
|
CLC
|
|
ADC #$180C ; _WriteSomething
|
|
PHA
|
|
PHD
|
|
TSC
|
|
TCD
|
|
L020E80 PEA $0020
|
|
LDX $03
|
|
JSL TOOLBOX
|
|
DEC $05
|
|
BNE L020E80
|
|
PLD
|
|
PLA
|
|
PLA
|
|
RTL
|
|
|
|
|