antoine-source/yourtour/MAIN.S

2589 lines
45 KiB
ArmAsm
Raw Normal View History

*
* Your tour of the Apple IIgs
*
* (c) 1989, Apple Computer
* (s) 2020, Antoine Vignau
*
mx %00
rel
lst off
*-------------------------------
use MAIN.E
use MAIN.X
use 4/Event.Macs
use 4/Mem.Macs
use 4/Misc.Macs
use 4/QD.Macs
use 4/QDAux.Macs
use 4/SANE.Macs
use 4/Text.Macs
use 4/Util.Macs
*-------------------------------
PHA
SEP #$20
LDA #^L0B0004
PHA
PLB
REP #$20
PLA
STA L0B0004
STX L0B0014
STY L0B0012
PHD
TSC
SEC
SBC #$00FB
TCD
ADC #$00EE
TCS
PHA
_MMStartUp
BCS L01002B
LDA #$0000
L01002B STAL L0B0002
PLA
PHX
PHA
PEA $0000
PEA $0100
LDA L0B0004
PHA
PEA $C011
PEA $0000
PEA $0000
_NewHandle
BCS L010051
LDA #$0000
L010051 STAL L0B0002
PLA
PLX
STX L0B0018
STA L0B0016
STX $F6
ORA $F6
BNE L01007C
PEA ^L0C0000
PEA L0C0000
_WriteCString
BCS L010075
LDA #$0000
L010075 STAL L0B0002
BRL L01014A
L01007C LDX L0B0018
LDA L0B0016
STA $F6
STX $F8
LDY #$0002
LDA [$F6],Y
TAX
LDA [$F6]
STA $F4
PEI $F4
_SANEStartUp
LDX L0B0014
LDA L0B0012
PHX
PHA
JSL L0103AF
PLY
PLY
PEA $0000
JSL L010E5F
PLY
LDA #L0D0000
LDX #^L0D0000
STX $F2
STA $F0
PEA ^L0C0020
PEA L0C0020
JSL L010D6A
PLY
PLY
TAY
BNE L0100E1
LDX L0B000A
LDA L0B0008
PHX
PHA
LDA L0B0006
PHA
JSL L010154
PLY
PLY
PLY
PHA
JSL L011007
PLY
L0100E1 LDA L0B0004
ORA #$0F00
PHA
_DisposeAll
BCS L0100F4
LDA #$0000
L0100F4 STAL L0B0002
SEC
LDA L0B000E
SBC #$0000
BNE L010109
LDA L0B0010
SBC #$0000
BRA L010111
L010109 LDA L0B0010
SBC #$0000
REP #$02
L010111 BEQ L010121
LDX L0B0010
LDA L0B000E
PHX
PHA
JSL L010C36
PLY
PLY
L010121 LDX L0B0010
LDA L0B000E
PHA
TXA
STAL L0C002A
PLA
STAL L0C0028
LDA L0B0000
STAL L0C002C
LDA L0B000C
PHA
PEA ^L0C0028
PEA L0C0028
JSL L010C1D
PLY
PLY
PLY
L01014A TAY
TDC
CLC
ADC #$00FB
TCS
TYA
PLD
RTL
L010154 PHD
TSC
SEC
SBC #$00FB
TCD
ADC #$00F4
TCS
JSL L0E0012
JSL L0E0020
JSL L01017B
JSL L01019A
JSL L0E002E
TSC
CLC
ADC #$0006
TCS
PLD
RTL
L01017B PHD
TSC
SEC
SBC #$00FB
TCD
ADC #$00F4
TCS
PEA ^L0E003C
PEA L0E003C
JSL L0402A6
PLY
PLY
TSC
CLC
ADC #$0006
TCS
PLD
RTL
L01019A PHD
TSC
SEC
SBC #$00FB
TCD
ADC #$00BD
TCS
LDX #$0000
LDA #$0001
STX $C1
STA $BF
PEA ^L0C1220
PEA L0C1220
PEA $0000
TDC
CLC
ADC #$00C3
PHA
JSL L0110F7
PLY
PLY
PLY
PLY
PEA $0000
TDC
CLC
ADC #$00C3
PHA
JSL L040463
PLY
PLY
_GrafOn
BCS L0101E1
LDA #$0000
L0101E1 STAL L0B0002
L0101E5 LDA L0B0088
BNE L010204
JSL L040619
PEA ^L0B0068
PEA L0B0068
PEA ^L0C1124
PEA L0C1124
JSL L023C7E
PLY
PLY
PLY
PLY
BRA L0101E5
L010204 TSC
CLC
ADC #$003D
TCS
PLD
RTL
L01020C ENT
PHD
TSC
SEC
SBC #$00F3
TCD
ADC #$00DE
TCS
STZ $EA
STZ $EC
STZ $E8
STZ $E6
STZ $E4
STZ $E2
STZ $E0
PEI $FF
PEI $FD
PEI $FB
PEI $F9
JSL L024DE0
PLY
PLY
PLY
PLY
LDA L0B0082
STA $E8
LDA [$FD]
LDX #$0000
TAY
BPL L010243
DEX
L010243 PHX
PHA
LDX $FB
LDA $F9
JSL L010922
PLA
PLX
STA $EE
STX $F0
LDA [$EE]
AND #$00FF
BEQ L0102C5
PEI $FF
PEI $FD
PEI $FB
PEI $F9
JSL L024DE0
PLY
PLY
PLY
PLY
LDA L0B0082
STA $E6
PEI $FF
PEI $FD
PEI $FB
PEI $F9
JSL L024DE0
PLY
PLY
PLY
PLY
LDA L0B0082
STA $E4
PEI $FF
PEI $FD
PEI $FB
PEI $F9
JSL L024DE0
PLY
PLY
PLY
PLY
LDA L0B0082
STA $E2
PEI $FF
PEI $FD
PEI $FB
PEI $F9
JSL L024DE0
PLY
PLY
PLY
PLY
LDA L0B0082
STA $E0
PEI $E0
PEI $E2
PEI $E4
PEI $E6
PEI $E8
JSL L0102D3
PLY
PLY
PLY
PLY
PLY
STX $EC
STA $EA
L0102C5 LDX $EC
LDA $EA
TAY
TSC
CLC
ADC #$0014
TCS
TYA
PLD
RTL
L0102D3 ENT
PHD
TSC
SEC
SBC #$00F1
TCD
ADC #$00E6
TCS
LDA $FD
BEQ L0102E7
LDA #$0000
BRA L0102EA
L0102E7 LDA #$0001
L0102EA AND #$0001
PHA
PHA
LDA $EA
AND #$7FFF
STA $F0
PLA
XBA
AND #$FF00
ASL
ASL
ASL
ASL
ASL
ASL
ASL
ORA $F0
STA $EA
PLA
LDA $F7
AND #$000F
PHA
PHA
LDA $EA
AND #$87FF
STA $F0
PLA
XBA
AND #$FF00
ASL
ASL
ASL
ORA $F0
STA $EA
PLA
LDA $F9
AND #$07FF
PHA
PHA
LDA $EA
AND #$F800
STA $F0
PLA
ORA $F0
STA $EA
PLA
LDA #$0001
AND #$0001
PHA
PHA
LDA $E8
AND #$7FFF
STA $F0
PLA
XBA
AND #$FF00
ASL
ASL
ASL
ASL
ASL
ASL
ASL
ORA $F0
STA $E8
PLA
LDA $FB
AND #$007F
PHA
PHA
LDA $E8
AND #$80FF
STA $F0
PLA
ASL
ASL
ASL
ASL
ASL
ASL
ASL
ASL
ORA $F0
STA $E8
PLA
LDA $FD
AND #$0001
PHA
PHA
LDA $E8
AND #$FF7F
STA $F0
PLA
ASL
ASL
ASL
ASL
ASL
ASL
ASL
ORA $F0
STA $E8
PLA
LDA $FF
AND #$007F
PHA
PHA
LDA $E8
AND #$FF80
STA $F0
PLA
ORA $F0
STA $E8
PLA
LDX $EA
LDA $E8
TAY
TSC
CLC
ADC #$000A
TCS
TYA
PLD
RTL
L0103AF PHD
TSC
SEC
SBC #$00F7
TCD
ADC #$00DF
TCS
STZ $EF
STZ L0B0006
LDA $FD
CMP #$0000
BNE L0103D6
LDA $FF
CMP #$0000
BNE L0103D6
LDA #$0001
STA L0B011D
BRL L0107FA
L0103D6 LDX $FF
LDA $FD
CLC
ADC #$0008
PHA
TXA
ADC #$0000
TAX
PLA
STX $E9
STA $E7
LDA [$E7]
SEP #$20
STA $F1
REP #$20
LDA #$0000
SEP #$20
STA [$E7]
REP #$20
PEA $0001
PEA ^L0C2D08
PEA L0C2D08
PEI $FF
PEI $FD
JSL L010804
PLY
PLY
PLY
PLY
PLY
TAY
BNE L010424
LDA #$0001
STA L0B011D
LDA $F1
SEP #$20
STA [$E7]
REP #$20
BRL L0107FA
L010424 STZ L0B011D
LDA $F1
SEP #$20
STA [$E7]
REP #$20
PHX
PHA
PEA $0000
PEA $0100
LDA L0B0004
ORA #$0F00
PHA
PEA $0000
PEA $0000
PEA $0000
_NewHandle
BCS L010453
LDA #$0000
L010453 STAL L0B0002
PLA
PLX
STX $ED
STA $EB
LDA L0B0002
BEQ L01046A
PEA $FFFF
JSL L010B7A
PLY
L01046A LDA #$0100
STA $E1
L01046F LDA [$E7]
AND #$00FF
CMP #$0000
BNE L01047C
BRL L0106DA
L01047C INC L0B0006
LDA [$E7]
AND #$00FF
CMP #$0022
BEQ L01048C
BRL L0105B3
L01048C INC $E7
BNE L010492
INC $E9
L010492 LDA [$E7]
AND #$00FF
CMP #$0000
BNE L01049F
BRL L0105B0
L01049F LDA [$E7]
AND #$00FF
CMP #$0022
BEQ L0104AC
BRL L010538
L0104AC INC $E7
BNE L0104B2
INC $E9
L0104B2 LDA [$E7]
AND #$00FF
CMP #$0022
BNE L010533
LDA $EF
CMP $E1
BNE L0104FA
LDA $E1
CLC
ADC #$0100
LDX #$0000
TAY
BPL L0104CF
DEX
L0104CF PHX
PHA
PEI $ED
PEI $EB
_SetHandleSize
BCS L0104E1
LDA #$0000
L0104E1 STAL L0B0002
LDA L0B0002
BEQ L0104F2
PEA $FFFF
JSL L010B7A
PLY
L0104F2 LDA $E1
CLC
ADC #$0100
STA $E1
L0104FA LDX $E9
LDA $E7
INC $E7
BNE L010504
INC $E9
L010504 STA $F2
STX $F4
LDA [$F2]
PHA
LDA $EF
INC $EF
LDX #$0000
TAY
BPL L010516
DEX
L010516 PHX
PHA
LDY #$0002
LDA [$EB],Y
TAX
LDA [$EB]
JSL L010922
PLA
PLX
STA $F2
STX $F4
PLA
SEP #$20
STA [$F2]
REP #$20
BRA L010536
L010533 BRL L0105B0
L010536 BRA L0105AD
L010538 LDA $EF
CMP $E1
BNE L010576
LDA $E1
CLC
ADC #$0100
LDX #$0000
TAY
BPL L01054B
DEX
L01054B PHX
PHA
PEI $ED
PEI $EB
_SetHandleSize
BCS L01055D
LDA #$0000
L01055D STAL L0B0002
LDA L0B0002
BEQ L01056E
PEA $FFFF
JSL L010B7A
PLY
L01056E LDA $E1
CLC
ADC #$0100
STA $E1
L010576 LDX $E9
LDA $E7
INC $E7
BNE L010580
INC $E9
L010580 STA $F2
STX $F4
LDA [$F2]
PHA
LDA $EF
INC $EF
LDX #$0000
TAY
BPL L010592
DEX
L010592 PHX
PHA
LDY #$0002
LDA [$EB],Y
TAX
LDA [$EB]
JSL L010922
PLA
PLX
STA $F2
STX $F4
PLA
SEP #$20
STA [$F2]
REP #$20
L0105AD BRL L010492
L0105B0 BRL L010655
L0105B3 LDA [$E7]
SEP #$20
STA $F1
REP #$20
AND #$00FF
CMP #$0020
BNE L0105C6
BRL L010655
L0105C6 LDA $F1
AND #$00FF
CMP #$0000
BNE L0105D3
BRL L010655
L0105D3 LDA $F1
AND #$00FF
CMP #$0009
BEQ L010655
LDA $EF
CMP $E1
BNE L01061B
LDA $E1
CLC
ADC #$0100
LDX #$0000
TAY
BPL L0105F0
DEX
L0105F0 PHX
PHA
PEI $ED
PEI $EB
_SetHandleSize
BCS L010602
LDA #$0000
L010602 STAL L0B0002
LDA L0B0002
BEQ L010613
PEA $FFFF
JSL L010B7A
PLY
L010613 LDA $E1
CLC
ADC #$0100
STA $E1
L01061B LDX $E9
LDA $E7
INC $E7
BNE L010625
INC $E9
L010625 STA $F2
STX $F4
LDA [$F2]
PHA
LDA $EF
INC $EF
LDX #$0000
TAY
BPL L010637
DEX
L010637 PHX
PHA
LDY #$0002
LDA [$EB],Y
TAX
LDA [$EB]
JSL L010922
PLA
PLX
STA $F2
STX $F4
PLA
SEP #$20
STA [$F2]
REP #$20
BRL L0105B3
L010655 LDA $EF
CMP $E1
BNE L010693
LDA $E1
CLC
ADC #$0100
LDX #$0000
TAY
BPL L010668
DEX
L010668 PHX
PHA
PEI $ED
PEI $EB
_SetHandleSize
BCS L01067A
LDA #$0000
L01067A STAL L0B0002
LDA L0B0002
BEQ L01068B
PEA $FFFF
JSL L010B7A
PLY
L01068B LDA $E1
CLC
ADC #$0100
STA $E1
L010693 LDA $EF
INC $EF
LDX #$0000
TAY
BPL L01069E
DEX
L01069E PHX
PHA
LDY #$0002
LDA [$EB],Y
TAX
LDA [$EB]
JSL L010922
PLA
PLX
STA $F2
STX $F4
LDA #$0000
SEP #$20
STA [$F2]
REP #$20
L0106BB LDA [$E7]
AND #$00FF
CMP #$0020
BEQ L0106CF
LDA [$E7]
AND #$00FF
CMP #$0009
BNE L0106D7
L0106CF INC $E7
BNE L0106D5
INC $E9
L0106D5 BRA L0106BB
L0106D7 BRL L01046F
L0106DA LDA $EF
LDX #$0000
TAY
BPL L0106E3
DEX
L0106E3 PHX
PHA
PEI $ED
PEI $EB
_SetHandleSize
BCS L0106F5
LDA #$0000
L0106F5 STAL L0B0002
PEI $ED
PEI $EB
_HLock
BCS L010709
LDA #$0000
L010709 STAL L0B0002
LDA L0B0006
CLC
ADC #$0001
LDX #$0000
TAY
BPL L01071B
DEX
L01071B STX $F6
ASL
ROL $F6
ASL
ROL $F6
LDX $F6
PHX
PHA
JSL L01114D
PLY
PLY
STX L0B000A
STA L0B0008
LDY #$0002
LDA [$EB],Y
TAX
LDA [$EB]
PHX
PHA
LDX L0B000A
LDA L0B0008
STA $F2
STX $F4
PLA
PLX
LDY #$0002
PHA
TXA
STA [$F2],Y
PLA
STA [$F2]
LDA #$0001
STA $EF
LDY #$0002
LDA [$EB],Y
TAX
LDA [$EB]
STX $E5
STA $E3
BRA L0107B7
L010766 LDA [$E3]
AND #$00FF
BNE L0107B1
LDX $E5
LDA $E3
CLC
ADC #$0001
PHA
TXA
ADC #$0000
TAX
PLA
PHX
PHA
LDA $EF
INC $EF
LDX #$0000
TAY
BPL L010789
DEX
L010789 STX $F6
ASL
ROL $F6
ASL
ROL $F6
LDX $F6
PHX
PHA
LDX L0B000A
LDA L0B0008
JSL L010922
PLA
PLX
STA $F2
STX $F4
PLA
PLX
LDY #$0002
PHA
TXA
STA [$F2],Y
PLA
STA [$F2]
L0107B1 INC $E3
BNE L0107B7
INC $E5
L0107B7 LDA $EF
SEC
SBC L0B0006
BVS L0107C2
EOR #$8000
L0107C2 BPL L010766
LDA L0B0006
LDX #$0000
TAY
BPL L0107CE
DEX
L0107CE STX $F6
ASL
ROL $F6
ASL
ROL $F6
LDX $F6
PHX
PHA
LDX L0B000A
LDA L0B0008
JSL L010922
PLA
PLX
STA $F2
STX $F4
LDX #$0000
LDA #$0000
LDY #$0002
PHA
TXA
STA [$F2],Y
PLA
STA [$F2]
L0107FA TAY
TDC
CLC
ADC #$00F7
TCS
TYA
PLD
RTL
L010804 PHD
TSC
SEC
SBC #$00F1
TCD
ADC #$00EA
TCS
BRL L0108D5
L010812 LDA [$F7]
AND #$00FF
PHA
LDA [$FB]
AND #$00FF
PLX
STX $EC
CMP $EC
BNE L01082A
LDA #$0001
BRL L0108AF
L01082A LDA $FF
BEQ L010833
LDA #$0000
BRA L0108AF
L010833 LDA [$F7]
AND #$00FF
SEC
SBC #$0061
BVS L010841
EOR #$8000
L010841 BPL L010855
LDA [$F7]
AND #$00FF
SEC
SBC #$007A
BEQ L01085C
BVS L010853
EOR #$8000
L010853 BPL L01085C
L010855 LDA [$F7]
AND #$00FF
BRA L010869
L01085C LDA [$F7]
AND #$00FF
CLC
ADC #$0041
SEC
SBC #$0061
L010869 PHA
LDA [$FB]
AND #$00FF
SEC
SBC #$0061
BVS L010878
EOR #$8000
L010878 BPL L01088C
LDA [$FB]
AND #$00FF
SEC
SBC #$007A
BEQ L010893
BVS L01088A
EOR #$8000
L01088A BPL L010893
L01088C LDA [$FB]
AND #$00FF
BRA L0108A0
L010893 LDA [$FB]
AND #$00FF
CLC
ADC #$0041
SEC
SBC #$0061
L0108A0 PLX
STX $EC
CMP $EC
BEQ L0108AC
LDA #$0000
BRA L0108AF
L0108AC LDA #$0001
L0108AF TAY
BNE L0108B7
LDA #$0000
BRA L0108EC
L0108B7 LDX $F9
LDA $F7
INC $F7
BNE L0108C1
INC $F9
L0108C1 STA $EC
STX $EE
LDX $FD
LDA $FB
INC $FB
BNE L0108CF
INC $FD
L0108CF STA $EC
STX $EE
LDA [$EC]
L0108D5 LDA [$F7]
AND #$00FF
BEQ L0108DF
BRL L010812
L0108DF LDA [$FB]
AND #$00FF
BEQ L0108E9
BRL L010812
L0108E9 LDA #$0001
L0108EC TAY
TDC
CLC
ADC #$00F1
TCS
TYA
PLD
RTL
L0108F6 ENT
PHD
TSC
SEC
SBC #$00F9
TCD
ADC #$00F2
TCS
LDA $FF
SEC
SBC #$0000
BVS L01090C
EOR #$8000
L01090C BPL L010912
LDA $FF
BRA L010918
L010912 LDA $FF
EOR #$FFFF
INC
L010918 TAY
TDC
CLC
ADC #$00F9
TCS
TYA
PLD
RTL
L010922 ENT
CLC
ADC $04,S
STA $04,S
TXA
ADC $06,S
STA $06,S
RTL
L01092D ENT
PHD
PHA
PEA $0001
TSC
TCD
LDA $0A
BEQ L0109A2
LDX #$0000
BCC L010958
BIT #$8000
BEQ L010949
EOR #$FFFF
INC
STA $0A
INX
L010949 LDA $03
BIT #$8000
BEQ L010958
EOR #$FFFF
INC
STA $03
INX
INX
L010958 LDY #$0000
BRA L01095F
L01095D ASL $01
L01095F ASL $0A
BCC L01095D
ROR $0A
L010965 LDA $03
CMP $0A
BCC L010976
LDA $03
SEC
SBC $0A
STA $03
TYA
ORA $01
TAY
L010976 LSR $0A
LSR $01
BCC L010965
LDA $03
STA $0A
TYA
CPX #$0000
BEQ L01099E
CPX #$0003
BEQ L010994
EOR #$FFFF
INC
CPX #$0001
BEQ L01099E
L010994 TAY
LDA $0A
EOR #$FFFF
INC
STA $0A
TYA
L01099E PLY
PLY
PLD
RTL
L0109A2 PEA $0004
PEA $0000
PEA $0000
_SysFailMgr
L0109B2 ENT
PHD
PHX
PHA
PEA $0000
PEA $0001
PEA $0000
PEA $0000
TSC
TCD
LDA $12
ORA $14
BNE L0109CF
LDX #$0000
BRL L010A93
L0109CF LDX #$0000
BCC L010A07
LDA $14
BIT #$8000
BEQ L0109ED
EOR #$FFFF
STA $14
LDA $12
EOR #$FFFF
INC
BNE L0109EA
INC $14
L0109EA STA $12
INX
L0109ED LDA $0B
BIT #$8000
BEQ L010A07
EOR #$FFFF
STA $0B
LDA $09
EOR #$FFFF
INC
BNE L010A03
INC $0B
L010A03 STA $09
INX
INX
L010A07 BRA L010A0D
L010A09 ASL $05
ROL $07
L010A0D ASL $12
ROL $14
BCC L010A09
ROR $14
ROR $12
L010A17 LDA $0B
CMP $14
BEQ L010A21
BCC L010A40
BRA L010A27
L010A21 LDA $09
CMP $12
BCC L010A40
L010A27 LDA $09
SEC
SBC $12
STA $09
LDA $0B
SBC $14
STA $0B
LDA $01
ORA $05
STA $01
LDA $03
ORA $07
STA $03
L010A40 LSR $14
ROR $12
LSR $07
ROR $05
BCC L010A17
CPX #$0000
BEQ L010A7F
CPX #$0003
BEQ L010A6C
LDA $01
EOR #$FFFF
STA $01
LDA $03
EOR #$FFFF
INC $01
BNE L010A65
INC
L010A65 STA $03
CPX #$0001
BEQ L010A7F
L010A6C LDA $09
EOR #$FFFF
STA $09
LDA $0B
EOR #$FFFF
INC $09
BNE L010A7D
INC
L010A7D STA $0B
L010A7F LDA $09
STA $12
LDA $0B
STA $14
LDA $01
LDX $03
PLY
PLY
PLY
PLY
PLY
PLY
PLD
RTL
L010A93 PEA $0004
PEA $0000
PEA $0000
_SysFailMgr
L010AA3 ENT
SEC
SBC $04,S
STA $04,S
TXA
SBC $06,S
STA $06,S
RTL
L010AAE ENT
PHD
PHA
TSC
TCD
LDX #$0000
BCC L010AD3
LDA $08
BIT #$8000
BEQ L010AC5
EOR #$FFFF
INC
STA $08
INX
L010AC5 LDA $01
BIT #$8000
BEQ L010AD3
EOR #$FFFF
INC
STA $01
DEX
L010AD3 LDA #$0000
BRA L010AE1
L010AD8 LSR $01
BCC L010ADF
CLC
ADC $08
L010ADF ASL $08
L010AE1 LDY $01
BNE L010AD8
CPX #$0000
BEQ L010AEE
EOR #$FFFF
INC
L010AEE STA $08
PLY
PLD
RTL
L010AF3 ENT
PHD
PHX
PHA
PEA $0000
PEA $0000
TSC
TCD
LDX #$0000
BCC L010B35
LDA $10
BIT #$8000
BEQ L010B1C
EOR #$FFFF
STA $10
LDA $0E
EOR #$FFFF
INC
BNE L010B19
INC $10
L010B19 STA $0E
INX
L010B1C LDA $07
BIT #$8000
BEQ L010B35
EOR #$FFFF
STA $07
LDA $05
EOR #$FFFF
INC
BNE L010B32
INC $07
L010B32 STA $05
DEX
L010B35 BRA L010B4E
L010B37 LSR $07
ROR $05
BCC L010B4A
LDA $01
CLC
ADC $0E
STA $01
LDA $03
ADC $10
STA $03
L010B4A ASL $0E
ROL $10
L010B4E LDA $05
ORA $07
BNE L010B37
CPX #$0000
BEQ L010B6C
LDA $01
EOR #$FFFF
STA $01
LDA $03
EOR #$FFFF
INC $01
BNE L010B6A
INC
L010B6A STA $03
L010B6C LDA $01
STA $0E
LDA $03
STA $10
PLY
PLY
PLY
PLY
PLD
RTL
L010B7A ENT
PHD
TSC
SEC
SBC #$00F9
TCD
ADC #$00F2
TCS
LDA $FF
AND #$FFFF
PHA
JSL L011007
PLY
TDC
CLC
ADC #$00F9
TCS
PLD
RTL
L010B98 ENT
PHX
PHA
LDA $08,S
TAX
LDA $0A,S
TAY
LDA $06,S
STA $0A,S
LDA $04,S
STA $08,S
TXA
SEC
SBC $01,S
BNE L010BB3
TYA
SBC $03,S
BRA L010BB8
L010BB3 TYA
SBC $03,S
REP #$02
L010BB8 PHP
LDA $00,S
STA $08,S
PLY
PLY
PLY
PLY
PLP
RTL
L010BC3 ENT
PHD
TSC
SEC
SBC #$00F1
TCD
ADC #$00E6
TCS
LDX $FB
LDA $F9
STX $EA
STA $E8
L010BD6 LDA $F7
CMP #$0001
BEQ L010C01
BCC L010C01
LDA [$FD]
STA [$F9]
LDA $F9
CLC
ADC #$0002
STA $F9
BCC L010BEF
INC $FB
L010BEF LDA $FD
CLC
ADC #$0002
STA $FD
BCC L010BFB
INC $FF
L010BFB DEC $F7
DEC $F7
BRA L010BD6
L010C01 LDA $F7
BEQ L010C0D
SEP #$20
LDA [$FD]
STA [$F9]
REP #$20
L010C0D LDX $EA
LDA $E8
STX $FF
STA $FD
TDC
CLC
ADC #$00F1
TCS
PLD
RTL
L010C1D LDA $04,S
STAL L010C31
LDA $06,S
STAL L010C31+2
LDA $08,S
JSL GSOS
DW $0029
L010C31 ADRL $00000000
RTL
L010C36 PHD
TSC
SEC
SBC #$00F7
TCD
ADC #$00E6
TCS
LDX $FF
LDA $FD
STX $EA
STA $E8
LDX $FF
LDA $FD
STX $F2
ORA $F2
BEQ L010C94
L010C53 LDA [$FD]
AND #$00FF
STA $EC
LDA $EE
PHA
LDX $FF
LDA $FD
INC $FD
BNE L010C67
INC $FF
L010C67 STA $F2
STX $F4
PLA
SEP #$20
STA [$F2]
REP #$20
LDA $EC
STA $EE
LDA $EC
BNE L010C53
LDX $EA
LDA $E8
PHX
PHA
LDX $FF
LDA $FD
JSL L010AA3
PLA
PLX
SEC
SBC #$0001
SEP #$20
STA [$E8]
REP #$20
L010C94 LDX $EA
LDA $E8
TAY
TDC
CLC
ADC #$00F7
TCS
TYA
PLD
RTL
L010CA2 ENT
TAY
LDA $04,S
TAX
BEQ L010CAE
TYA
L010CA9 ASL
DEX
BNE L010CA9
TAY
L010CAE TYA
STA $04,S
RTL
L010CB2 ENT
PHD
PHX
PHA
TSC
TCD
LDX $0A
LDA $0C
BEQ L010CC0
LDX #$0021
L010CC0 TXY
BEQ L010CCD
LDA $01
L010CC5 ASL
ROL $03
DEX
BNE L010CC5
STA $01
L010CCD LDA $01
STA $0A
LDA $03
STA $0C
PLY
PLY
PLD
RTL
L010CD9 ENT
BCC L010CED
TAY
LDA $04,S
TAX
BEQ L010CF9
TYA
BEQ L010CFA
BPL L010CF4
L010CE6 SEC
ROR
DEX
BNE L010CE6
BRA L010CFA
L010CED TAY
LDA $04,S
TAX
BEQ L010CF9
TYA
L010CF4 LSR
DEX
BNE L010CF4
TAY
L010CF9 TYA
L010CFA STA $04,S
RTL
L010CFD ENT
PHD
TSC
SEC
SBC #$00F3
TCD
ADC #$00E8
TCS
LDX $FB
LDA $F9
STX $EC
STA $EA
L010D10 LDX $FB
LDA $F9
INC $F9
BNE L010D1A
INC $FB
L010D1A STA $EE
STX $F0
LDA [$EE]
AND #$00FF
BEQ L010D27
BRA L010D10
L010D27 LDA $F9
BNE L010D2D
DEC $FB
L010D2D DEC $F9
L010D2F LDX $FF
LDA $FD
INC $FD
BNE L010D39
INC $FF
L010D39 STA $EE
STX $F0
LDA [$EE]
PHA
LDX $FB
LDA $F9
INC $F9
BNE L010D4A
INC $FB
L010D4A STA $EE
STX $F0
PLA
SEP #$20
STA [$EE]
REP #$20
AND #$00FF
BEQ L010D5C
BRA L010D2F
L010D5C LDX $EC
LDA $EA
TAY
TDC
CLC
ADC #$00F3
TCS
TYA
PLD
RTL
L010D6A PHD
TSC
TCD
STA [$06]
LDA $01,S
LDY #$0002
STA [$06],Y
LDA $02,S
INY
INY
STA [$06],Y
LDA $04,S
INY
INY
STA [$06],Y
PLD
LDA #$0000
RTL
L010D87 ENT
PHD
TSC
SEC
SBC #$00F7
TCD
ADC #$00EC
TCS
LDX $FF
LDA $FD
CLC
ADC #$0001
PHA
TXA
ADC #$0000
TAX
PLA
STX $F0
STA $EE
L010DA5 LDX $FF
LDA $FD
INC $FD
BNE L010DAF
INC $FF
L010DAF STA $F2
STX $F4
LDA [$F2]
AND #$00FF
CMP #$0000
BEQ L010DBF
BRA L010DA5
L010DBF LDX $F0
LDA $EE
PHX
PHA
LDX $FF
LDA $FD
JSL L010AA3
PLA
PLX
TAY
TDC
CLC
ADC #$00F7
TCS
TYA
PLD
RTL
L010DD9 ENT
PHD
TSC
SEC
SBC #$00F3
TCD
ADC #$00EC
TCS
LDA $F9
CMP $FD
BNE L010DF5
LDA $FB
CMP $FF
BNE L010DF5
LDA #$0000
BRA L010E55
L010DF5 LDA [$F9]
AND #$00FF
PHA
LDX $FF
LDA $FD
INC $FD
BNE L010E05
INC $FF
L010E05 STA $EE
STX $F0
LDA [$EE]
AND #$00FF
PLX
STX $EE
CMP $EE
BNE L010E34
LDX $FB
LDA $F9
INC $F9
BNE L010E1F
INC $FB
L010E1F STA $EE
STX $F0
LDA [$EE]
AND #$00FF
CMP #$0000
BNE L010E32
LDA #$0000
BRA L010E55
L010E32 BRA L010DF5
L010E34 LDA $FD
BNE L010E3A
DEC $FF
L010E3A DEC $FD
LDX $FF
LDA $FD
STA $EE
STX $F0
LDA [$EE]
AND #$00FF
PHA
LDA [$F9]
AND #$00FF
PLX
STX $F2
SEC
SBC $F2
L010E55 TAY
TDC
CLC
ADC #$00F3
TCS
TYA
PLD
RTL
L010E5F PHD
TSC
SEC
SBC #$00F9
TCD
ADC #$FFEA
TCS
LDA #L011264
LDX #^L011264
PHX
PHA
LDAL L0C2CEA+2
TAX
LDAL L0C2CEA
STA $F4
STX $F6
PLA
PLX
LDY #$0002
PHA
TXA
STA [$F4],Y
PLA
STA [$F4]
LDA L0B011D
BNE L010E93
BRL L010FE5
L010E93 LDX #$0000
TDC
CLC
ADC #$FFEC
PHA
TXA
STAL L0C2D57
PLA
STAL L0C2D55
PEA $0027
PEA ^L0C2D55
PEA L0C2D55
JSL L0110B9
LDAL L0C2D57
TAX
LDAL L0C2D55
STA $F4
STX $F6
LDA [$F4]
AND #$00FF
STA $F0
STA $EE
L010EC9 LDA $F0
LDX #$0000
TAY
BPL L010ED2
DEX
L010ED2 PHX
PHA
LDAL L0C2D57
TAX
LDAL L0C2D55
JSL L010922
PLA
PLX
STA $F4
STX $F6
LDA [$F4]
AND #$00FF
CMP #$002F
BEQ L010F04
LDA $F0
SEC
SBC #$0000
BEQ L010F04
BVS L010EFE
EOR #$8000
L010EFE BPL L010F04
DEC $F0
BRA L010EC9
L010F04 LDA $EE
SEC
SBC $F0
STA $EC
SEP #$20
STAL L0C2D45
REP #$20
BRA L010F67
L010F15 LDA $EE
DEC $EE
LDX #$0000
TAY
BPL L010F20
DEX
L010F20 PHX
PHA
LDAL L0C2D57
TAX
LDAL L0C2D55
JSL L010922
PLA
PLX
STA $F4
STX $F6
LDA [$F4]
PHA
LDA $EC
LDX #$0000
TAY
BPL L010F41
DEX
L010F41 PHX
PHA
LDA #L0C2D46
LDX #^L0C2D46
JSL L010922
PLA
PLX
SEC
SBC #$0001
PHA
TXA
SBC #$0000
TAX
PLA
STA $F4
STX $F6
PLA
SEP #$20
STA [$F4]
REP #$20
DEC $EC
L010F67 LDA $EC
SEC
SBC #$0000
BEQ L010F76
BVS L010F74
EOR #$8000
L010F74 BMI L010F15
L010F76 LDA #L0C2D45
LDX #^L0C2D45
PHX
PHA
LDAL L0C2CDC+2
TAX
LDAL L0C2CDC
STA $F4
STX $F6
PLA
PLX
LDY #$0002
PHA
TXA
STA [$F4],Y
PLA
STA [$F4]
LDA $FF
BNE L010FB8
LDAL L0C2CDC+2
TAX
LDAL L0C2CDC
STA $F4
STX $F6
LDY #$0002
LDA [$F4],Y
TAX
LDA [$F4]
PHX
PHA
JSL L011287
PLY
PLY
L010FB8 LDA #$0001
STA L0B0006
LDAL L0C2CDC+2
TAX
LDAL L0C2CDC
STX L0B000A
STA L0B0008
PEA $007F
PEA $0000
_SetInGlobals
BCS L010FDF
LDA #$0000
L010FDF STAL L0B0002
BRA L010FFD
L010FE5 LDA L0B0006
STAL L0C2CDA
LDX L0B000A
LDA L0B0008
PHA
TXA
STAL L0C2CDC+2
PLA
STAL L0C2CDC
L010FFD TAY
TDC
CLC
ADC #$00F9
TCS
TYA
PLD
RTL
L011007 PHD
TSC
SEC
SBC #$00F9
TCD
ADC #$00EE
TCS
LDAL L0C2CEA+2
TAX
LDAL L0C2CEA
STA $F4
STX $F6
LDX $F6
LDA #$0024
CLC
ADC $F4
BCC L01102A
INX
L01102A STX $F2
STA $F0
BRA L011069
L011030 LDX #$0000
LDA #$0000
PHX
PHA
LDY #$0002
LDA [$F0],Y
TAX
LDA [$F0]
JSL L010B98
BEQ L01105D
PEI $FF
LDY #$0002
LDA [$F0],Y
TAX
LDA [$F0]
STA $F4
STX $F6
LDA $F4
LDX $F6
JSL L011145
PLY
L01105D LDA $F0
SEC
SBC #$0004
STA $F0
BCS L011069
DEC $F2
L011069 SEC
LDA $F0
SBCL L0C2CEA
BNE L01107A
LDA $F2
SBCL L0C2CEA+2
BRA L011082
L01107A LDA $F2
SBCL L0C2CEA+2
REP #$02
L011082 BEQ L01108B
BVS L011089
EOR #$8000
L011089 BMI L011030
L01108B LDA $FF
STA L0B000C
LDAL L0C2CEA+2
TAX
LDAL L0C2CEA
STA $F4
STX $F6
LDY #$0002
LDA [$F4],Y
TAX
LDA [$F4]
STA $F4
STX $F6
LDA $F4
LDX $F6
JSL L011145
TDC
CLC
ADC #$00F9
TCS
PLD
RTL
L0110B9 PHB
PLA
XBA
STAL L0110F4
PLA
STAL L0110F4+1
PLA
STAL L0110DA
PLA
STAL L0110DA+2
PLA
STAL L0110D8
JSL GSOS
L0110D8 DW $0000
L0110DA ADRL $00000000
BCS L0110E3
LDA #$0000
L0110E3 STAL L0B0002
LDAL L0110F4+1
PHA
PHB
LDAL L0110F4
STA $01,S
RTL
L0110F4 ADR $000000
L0110F7 ENT
PHD
TSC
SEC
SBC #$00F3
TCD
ADC #$00E8
TCS
LDX $FB
LDA $F9
STX $EC
STA $EA
L01110A LDX $FF
LDA $FD
INC $FD
BNE L011114
INC $FF
L011114 STA $EE
STX $F0
LDA [$EE]
PHA
LDX $FB
LDA $F9
INC $F9
BNE L011125
INC $FB
L011125 STA $EE
STX $F0
PLA
SEP #$20
STA [$EE]
REP #$20
AND #$00FF
BEQ L011137
BRA L01110A
L011137 LDX $EC
LDA $EA
TAY
TDC
CLC
ADC #$00F3
TCS
TYA
PLD
RTL
L011145 ENT
SEP #$10
PHX
REP #$10
DEC
PHA
RTL
L01114D PHD
TSC
SEC
SBC #$00F7
TCD
ADC #$00EC
TCS
PHX
PHA
PEI $FF
PEI $FD
LDA L0B0004
ORA #$0F00
PHA
PEA $8300
PEA $0000
PEA $0000
_NewHandle
BCS L01117A
LDA #$0000
L01117A STAL L0B0002
PLA
PLX
STX $F0
STA $EE
STX $F2
ORA $F2
BEQ L011194
LDY #$0002
LDA [$EE],Y
TAX
LDA [$EE]
BRA L01119A
L011194 LDX #$0000
LDA #$0000
L01119A TAY
TDC
CLC
ADC #$00F7
TCS
TYA
PLD
RTL
L0111A4 ENT
PHD
TSC
SEC
SBC #$00F1
TCD
ADC #$00E6
TCS
LDX $F9
LDA $F7
STX $EA
STA $E8
L0111B7 DEC $FF
LDA $FF
SEC
SBC #$0000
BVS L0111C4
EOR #$8000
L0111C4 BPL L01121E
LDX $FD
LDA $FB
INC $FB
BNE L0111D0
INC $FD
L0111D0 STA $EC
STX $EE
LDA [$EC]
PHA
LDX $F9
LDA $F7
INC $F7
BNE L0111E1
INC $F9
L0111E1 STA $EC
STX $EE
PLA
SEP #$20
STA [$EC]
REP #$20
AND #$00FF
CMP #$0000
BNE L01121C
L0111F4 DEC $FF
LDA $FF
SEC
SBC #$0000
BVS L011201
EOR #$8000
L011201 BPL L01121C
LDX $F9
LDA $F7
INC $F7
BNE L01120D
INC $F9
L01120D STA $EC
STX $EE
LDA #$0000
SEP #$20
STA [$EC]
REP #$20
BRA L0111F4
L01121C BRA L0111B7
L01121E LDX $EA
LDA $E8
TAY
TDC
CLC
ADC #$00F1
TCS
TYA
PLD
RTL
L01122C ENT
PHD
TSC
TCD
TYA
AND #$0001
BNE L01124E
SEP #$20
LDA [$06],Y
CMP [$0A],Y
REP #$20
BNE L011251
TYA
BNE L01124D
LDY #$FFFE
BRA L011251
L011247 LDA [$06],Y
CMP [$0A],Y
BNE L011251
L01124D DEY
L01124E DEY
BPL L011247
L011251 LDA $04,S
STA $0C,S
LDA $02,S
STA $0A,S
PLD
TSC
CLC
ADC #$0008
TCS
CPY #$FFFE
RTL
L011264 PHD
TSC
SEC
SBC #$00F9
TCD
ADC #$00F2
TCS
PEA $0001
PEA ^L0C0020
PEA L0C0020
JSL L011303
PLY
PLY
PLY
TDC
CLC
ADC #$00F9
TCS
PLD
RTL
L011287 PHD
TSC
SEC
SBC #$00F7
TCD
ADC #$00E6
TCS
LDX $FF
LDA $FD
STX $EA
STA $E8
LDX $FF
LDA $FD
STX $F2
ORA $F2
BEQ L0112F5
LDX $FF
LDA $FD
INC $FD
BNE L0112AE
INC $FF
L0112AE STX $EE
STA $EC
STA $F2
STX $F4
LDA [$F2]
AND #$00FF
STA $F0
BRA L0112E5
L0112BF LDX $FF
LDA $FD
INC $FD
BNE L0112C9
INC $FF
L0112C9 STA $F2
STX $F4
LDA [$F2]
PHA
LDX $EE
LDA $EC
INC $EC
BNE L0112DA
INC $EE
L0112DA STA $F2
STX $F4
PLA
SEP #$20
STA [$F2]
REP #$20
L0112E5 LDA $F0
DEC $F0
TAY
BNE L0112BF
LDA #$0000
SEP #$20
STA [$EC]
REP #$20
L0112F5 LDX $EA
LDA $E8
TAY
TDC
CLC
ADC #$00F7
TCS
TYA
PLD
RTL
L011303 TSC
TCD
LDA [$04]
TAX
LDA $04,S
TAY
LDA $06,S
TCD
LDA $08,S
TXS
PHA
PHD
PHY
TSC
TCD
LDY #$0002
LDA [$01],Y
TAX
INY
INY
LDA [$01],Y
STA $08,S
INY
INY
LDA [$01],Y
STA $0A,S
PLA
PLA
PLA
PLY
CMP #$0000
BNE L011332
INC
L011332 PHX
PLD
RTL