antoine-source/genesys/edit/TOOLTABLE.S

5550 lines
106 KiB
ArmAsm

*
* Genesys v1.2.4
* Tool Table editor
*
mx %00
rel
lst off
*----------------------------
use 4/Ctl.Macs
use 4/Int.Macs
use 4/Mem.Macs
use 4/QD.Macs
use 4/Resource.Macs
use 4/Text.Macs
use 4/Util.Macs
use 4/Window.Macs
*----------------------------
GSOS EQU $E100A8
sizeHEADER = $000c ; standard header size
sizeSTDREC = $0054 ; 12 entries x 4 + header = $54
sizeFULLREC = $0084 ; 30 entries x 4 + header = $84
resTYPE = $8013 ; resource type supported by the editor
*----------------------------
LDA $04,S
STA ptrBUFFER
LDA $06,S
STA ptrBUFFER+2
JMPL entryPOINT
*--- Show my editor window
showWINDOW
PHD
PHB
PHK
PLB
PEA $0000
PEA $0000
PEA $0000
PEA $0000
PEA $0000
PEA $0000
PEA ^refreshWINDOW
PEA refreshWINDOW
PEA $0000
PEA $0000
PEA $0000
PEA ^myWINDOW
PEA myWINDOW
PEA $800E
_NewWindow2
PLA
STA haWINDOW
PLA
STA haWINDOW+2
LDA haWINDOW+2
PHA
LDA haWINDOW
PHA
_SetPort
PEA $0000
PEA $0000
LDA haWINDOW+2
PHA
LDA haWINDOW
PHA
PEA $0003
PEA ^ctlWINDOW
PEA ctlWINDOW
_NewControl2
PLA
PLA
PLB
PLD
RTL
ctlWINDOW
ADRL L010D
ADRL L012D
ADRL L014D
ADRL L016D
ADRL L018D
ADRL L01AD
ADRL L01CD
ADRL L01ED
ADRL L020D
ADRL L022D
ADRL L024D
ADRL L026D
ADRL L028D
ADRL L02AD
ADRL L02CD
ADRL L02ED
ADRL L030D
ADRL L032D
ADRL L034D
ADRL L036D
ADRL L038D
ADRL L03AD
ADRL L03CD
ADRL L03ED
ADRL L040D
ADRL L042D
ADRL L044D
ADRL L046D
ADRL L048D
ADRL L04AD
adrl cTANIM
ADRL c320
ADRL c640
ADRL cFAAW
ADRL cHWSHA
adrl cSHRON ; new
ADRL cPREF
ADRL $00000000
L010D DW $0008 ; pCount
ADRL $00000001 ; ID
DW $0005 ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000001 ; refCon
ADRL L0714 ; titleRef
DW $0000 ; initialValue
L012D DW $0008 ; pCount
ADRL $00000002 ; ID
DW $000F ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000002 ; refCon
ADRL L0705 ; titleRef
DW $0000 ; initialValue
L014D DW $0008 ; pCount
ADRL $00000003 ; ID
DW $0019 ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000003 ; refCon
ADRL L06F7 ; titleRef
DW $0000 ; initialValue
L016D DW $0008 ; pCount
ADRL $00000004 ; ID
DW $0023 ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000004 ; refCon
ADRL L06EA ; titleRef
DW $0000 ; initialValue
L018D DW $0008 ; pCount
ADRL $00000005 ; ID
DW $002D ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000005 ; refCon
ADRL L06DD ; titleRef
DW $0000 ; initialValue
L01AD DW $0008 ; pCount
ADRL $00000006 ; ID
DW $0037 ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000006 ; refCon
ADRL L06CF ; titleRef
DW $0000 ; initialValue
L01CD DW $0008 ; pCount
ADRL $00000007 ; ID
DW $0041 ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000007 ; refCon
ADRL L06C5 ; titleRef
DW $0000 ; initialValue
L01ED DW $0008 ; pCount
ADRL $00000008 ; ID
DW $004B ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000008 ; refCon
ADRL L06BF ; titleRef
DW $0000 ; initialValue
L020D DW $0008 ; pCount
ADRL $00000009 ; ID
DW $0055 ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000009 ; refCon
ADRL L06BB ; titleRef
DW $0000 ; initialValue
L022D DW $0008 ; pCount
ADRL $0000000A ; ID
DW $005F ; rect
DW $000C
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000000A ; refCon
ADRL L06B6 ; titleRef
DW $0000 ; initialValue
L024D DW $0008 ; pCount
ADRL $0000000B ; ID
DW $0005 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000000B ; refCon
ADRL L06A9 ; titleRef
DW $0000 ; initialValue
L026D DW $0008 ; pCount
ADRL $0000000C ; ID
DW $000F ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000000C ; refCon
ADRL L06A4 ; titleRef
DW $0000 ; initialValue
L028D DW $0008 ; pCount
ADRL $0000000E ; ID
DW $0019 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000000E ; refCon
ADRL L0695 ; titleRef
DW $0000 ; initialValue
L02AD DW $0008 ; pCount
ADRL $0000000F ; ID
DW $0023 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000000F ; refCon
ADRL L0688 ; titleRef
DW $0000 ; initialValue
L02CD DW $0008 ; pCount
ADRL $00000010 ; ID
DW $002D ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000010 ; refCon
ADRL L0678 ; titleRef
DW $0000 ; initialValue
L02ED DW $0008 ; pCount
ADRL $00000011 ; ID
DW $0037 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000011 ; refCon
ADRL L066A ; titleRef
DW $0000 ; initialValue
L030D DW $0008 ; pCount
ADRL $00000012 ; ID
DW $0041 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000012 ; refCon
ADRL L065B ; titleRef
DW $0000 ; initialValue
L032D DW $0008 ; pCount
ADRL $00000013 ; ID
DW $004B ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000013 ; refCon
ADRL L064D ; titleRef
DW $0000 ; initialValue
L034D DW $0008 ; pCount
ADRL $00000014 ; ID
DW $0055 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000014 ; refCon
ADRL L0643 ; titleRef
DW $0000 ; initialValue
L036D DW $0008 ; pCount
ADRL $00000015 ; ID
DW $005F ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000015 ; refCon
ADRL L0634 ; titleRef
DW $0000 ; initialValue
L038D DW $0008 ; pCount
ADRL $00000016 ; ID
DW $0005 ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000016 ; refCon
ADRL L0626 ; titleRef
DW $0000 ; initialValue
L03AD DW $0008 ; pCount
ADRL $00000017 ; ID
DW $000F ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000017 ; refCon
ADRL L0618 ; titleRef
DW $0000 ; initialValue
L03CD DW $0008 ; pCount
ADRL $00000019 ; ID
DW $0019 ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000019 ; refCon
ADRL L0607 ; titleRef
DW $0000 ; initialValue
L03ED DW $0008 ; pCount
ADRL $0000001A ; ID
DW $0023 ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000001A ; refCon
ADRL L05F8 ; titleRef
DW $0000 ; initialValue
L040D DW $0008 ; pCount
ADRL $0000001B ; ID
DW $002D ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000001B ; refCon
ADRL L05EB ; titleRef
DW $0000 ; initialValue
L042D DW $0008 ; pCount
ADRL $0000001C ; ID
DW $0037 ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000001C ; refCon
ADRL L05DE ; titleRef
DW $0000 ; initialValue
L044D DW $0008 ; pCount
ADRL $0000001D ; ID
DW $0041 ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000001D ; refCon
ADRL L05DA ; titleRef
DW $0000 ; initialValue
L046D DW $0008 ; pCount
ADRL $0000001E ; ID
DW $004B ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $0000001E ; refCon
ADRL L059C ; titleRef
DW $0000 ; initialValue
L048D DW $0008 ; pCount
ADRL $00000020 ; ID
DW $0055 ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000020 ; refCon
ADRL L0597 ; titleRef
DW $0000 ; initialValue
L04AD DW $0008 ; pCount
ADRL $00000022 ; ID
DW $005F ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000022 ; refCon
ADRL L058D ; titleRef
DW $0000 ; initialValue
cTANIM DW $0008 ; pCount
ADRL $00000025 ; ID
DW $0069 ; rect
DW $0138
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00000022 ; refCon
ADRL sTANIM ; titleRef
DW $0000 ; initialValue
c320 DW $0008 ; pCount
ADRL $00000320 ; ID
DW $0077 ; rect
DW $000E
DW $0000
DW $0000
ADRL $84000000 ; procRef
DW $0005 ; flag
DW $1000 ; moreFlags
ADRL $00000320 ; refCon
ADRL s320 ; titleRef
DW $0000 ; initialValue
c640 DW $0008 ; pCount
ADRL $00000640 ; ID
DW $0081 ; rect
DW $000E
DW $0000
DW $0000
ADRL $84000000 ; procRef
DW $0005 ; flag
DW $1000 ; moreFlags
ADRL $00000640 ; refCon
ADRL s640 ; titleRef
DW $0001 ; initialValue
cFAAW DW $0008 ; pCount
ADRL $00001001 ; ID
DW $0077 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00001001 ; refCon
ADRL sFAAW ; titleRef
DW $0000 ; initialValue
cHWSHA DW $0008 ; pCount
ADRL $00001002 ; ID
DW $0081 ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00001002 ; refCon
ADRL sHWSHA ; titleRef
DW $0000 ; initialValue
cSHRON DW $0008 ; pCount
ADRL $00001003 ; ID
DW $008b ; rect
DW $00A2
DW $0000
DW $0000
ADRL $82000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00001002 ; refCon
ADRL sSHRON ; titleRef
DW $0000 ; initialValue
cPREF DW $0007 ; pCount
ADRL $00001000 ; ID
DW $007f ; rect
DW $015C
DW $008c
DW $01C0
ADRL $80000000 ; procRef
DW $0000 ; flag
DW $1000 ; moreFlags
ADRL $00001000 ; refCon
ADRL sPREF ; titleRef
sSHRON str 'Keep SHR screen on'
sHWSHA str 'Hardware shadowing'
sFAAW str 'Fastport aware'
sTANIM str 'Animation'
L058D STR 'Text edit'
L0597 STR 'MIDI'
L059C STR 'Resource manager'
sPREF STR 'Preferred'
s640 STR '640 Mode'
s320 STR '320 Mode'
STR 'Resource manager'
L05DA STR 'ACE'
L05DE STR 'List manager'
L05EB STR 'Font manager'
L05F8 STR 'Note sequencer'
L0607 STR 'Note synthesizer'
L0618 STR 'Standard file'
L0626 STR 'Scrap manager'
L0634 STR 'Dialog manager'
L0643 STR 'Line edit'
L064D STR 'Print manager'
L065B STR 'QuickDraw Aux.'
L066A STR 'System loader'
L0678 STR 'Control manager'
L0688 STR 'Menu manager'
L0695 STR 'Window manager'
L06A4 STR 'Text'
L06A9 STR 'Integer math'
L06B6 STR 'SANE'
L06BB STR 'ADB'
L06BF STR 'Sound'
L06C5 STR 'Scheduler'
L06CF STR 'Event manager'
L06DD STR 'Desk manager'
L06EA STR 'QuickDraw II'
L06F7 STR 'Miscellaneous'
L0705 STR 'Memory manager'
L0714 STR 'Tool locator'
L0721 STR ' Tool Table '
myWINDOW DW $0050
DW $C080 ; frame bits
ADRL L0721 ; title ptr
ADRL $00000000 ; refcon
DW $0000 ; zoom rect
DW $0000
DW $0000
DW $0000
ADRL L077E ; color table ptr
DW $0000 ; origin
DW $0000
DW $0000 ; data size
DW $0000
DW $0000 ; max size
DW $0000
DW $0000 ; scroll size
DW $0000
DW $0000 ; page size
DW $0000
ADRL $00000000 ; info bar refcon
DW $0000 ; info bar hite
ADRL $00000000 ; window defproc
ADRL $00000000 ; info bar defproc
ADRL $00000000 ; content defproc
DW $0024 ; content rect
DW $001E
DW $00ba ; was $A6
DW $01F4
ADRL $FFFFFFFF ; starting plane
ADRL $00000000 ; storage ptr
DW $0000
L077E DW $0000
DW $0F00
DW $020F
DW $F0FF
DW $00F0
*--- Refresh window
refreshWINDOW
PHD
PHB
PHK
PLB
PEA $0000
_GetCurResourceFile
LDA resfileID
PHA
_SetCurResourceFile
PEA $0000
PEA $0000
_GetPort
_DrawControls
PEA $000A
PEA $0074 ; was $006A
_MoveTo
PEA $01CC
PEA $0074 ; was $006A
_LineTo
_SetCurResourceFile
PLB
PLD
RTL
BRK $69
RTL
*--- Write the resource
writeRESOURCE
TSC
SEC
SBC #$001A
TCS
PHD
INC
TCD
PHA
LDA #$0001
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $18
PHA
LDA $21
PHA
LDX $1F
LDA $1D
PHX
PHA
_GetResourceAttr
STA L2BCB
PLA
STA $16
LDA $16
AND #$0020
PHA
LDA $21
PHA
LDX $1F
LDA $1D
PHX
PHA
_SetResourceAttr
STA L2BCB
LDA #$0001
PHA
LDA $21
PHA
LDX $1F
LDA $1D
PHX
PHA
_MarkResourceChange
STA L2BCB
LDA $21
PHA
LDX $1F
LDA $1D
PHX
PHA
_WriteResource
STA L2BCB
LDA L2BCB
BNE L0859
BRL L0896
* Cannot write resource
L0859 LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L08E8
PEA L08E8
LDA #$0044
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L0896
BRL L0896
* Resource is written
L0896 LDA $16
PHA
LDA $21
PHA
LDX $1F
LDA $1D
PHX
PHA
_SetResourceAttr
STA L2BCB
LDA #$0001
EOR #$FFFF
INC
PHA
LDA $21
PHA
LDX $1F
LDA $1D
PHX
PHA
_ReleaseResource
STA L2BCB
PHA
LDA $18
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $18
LDA $1B
STA $21
LDA $1A
STA $20
PLD
TSC
CLC
ADC #$0020
TCS
RTL
L08E8 ASC '52~Tool editor: Resource write error. Resource possibly damaged.~^#0'
*--- Load a resource
readRESOURCE
TSC
SEC
SBC #$0028
TCS
PHD
INC
TCD
LDA #$0000
STA $16
LDA #$0000
STA $18
PHA
LDA #$0001
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $26
LDA L2BCB
BNE L0959
BRL L095C
L0959 BRL L0A27
* File depth search failed
L095C LDA #$0001
EOR #$FFFF
INC
PHA
LDA $2F
PHA
LDX $2D
LDA $2B
PHX
PHA
_ReleaseResource
STA L2BCB
PHA
LDA $2F
PHA
LDX $2D
LDA $2B
PHX
PHA
_GetResourceAttr
STA L2BCB
PLA
STA $24
LDA L2BCB
BNE L0996
BRL L0999
L0996 BRL L0A27
* Getting resource attributes failed
L0999 LDA $24
AND #$0020
PHA
LDA $2F
PHA
LDX $2D
LDA $2B
PHX
PHA
_SetResourceAttr
STA L2BCB
LDA L2BCB
BNE L09BA
BRL L09BD
L09BA BRL L0A27
* Setting bit 5 failed
L09BD PHA
PHA
LDA $2F
PHA
LDX $2D
LDA $2B
PHX
PHA
_LoadResource
STA L2BCB
PLA
STA $20
PLA
STA $22
LDA L2BCB
BNE L09E0
BRL L09E3
L09E0 BRL L0A27
* Resource exists
L09E3 LDX $22
LDA $20
PHX
PHA
_HLock
STA L2BCB
LDA L2BCB
BNE L09FB
BRL L09FE
L09FB BRL L0A27
* memory lock failed
L09FE LDA $24
PHA
LDA $2F
PHA
LDX $2D
LDA $2B
PHX
PHA
_SetResourceAttr
STA L2BCB
LDA L2BCB
BNE L0A1C
BRL L0A1F
L0A1C BRL L0A27
L0A1F LDX $22
LDA $20
STX $18
STA $16
* If we're here, we've suffered a lot
L0A27 PHA
LDA $26
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $26
LDA $29
STA $2F
LDA $28
STA $2E
LDX $18
LDY $16
PLD
TSC
CLC
ADC #$002E
TCS
TYA
RTL
*---
makeSTDRESOURCE
TSC
SEC
SBC #$0028
TCS
PHD
INC
TCD
LDA #$0001
STA $16
LDA $2F
PHA
LDX $2D
LDA $2B
PHX
PHA
JSL readRESOURCE
STX $22
STA $20
LDA $20
ORA $22
BEQ L0A75
BRL L0AB5
* Cannot load resource
L0A75 LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L0D79
PEA L0D79
LDA #$003B
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L0AB2
BRL L0AB2
L0AB2 BRL L0D66
* Resource is loaded
L0AB5 LDX $22
LDA $20
PHX
PHA
_HUnlock
STA L2BCB
LDA #sizeSTDREC
LDX #$0000
TAY
BPL L0ACF
DEX
L0ACF PHX
PHA
LDX $22
LDA $20
PHX
PHA
_SetHandleSize
STA L2BCB
LDA L2BCB
BNE L0AE9
BRL L0B67
* Cannot resize handle
L0AE9 LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L0DB4
PEA L0DB4
LDA #$003B
PHA
JSL copyDATA
PHA
LDA #$0001
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $24
LDA #$0001
EOR #$FFFF
INC
PHA
LDA $2F
PHA
LDX $2D
LDA $2B
PHX
PHA
_ReleaseResource
STA L2BCB
PHA
LDA $24
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $24
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L0B64
BRL L0B64
L0B64 BRL L0D66
* Handle is resized
L0B67 LDX $22
LDA $20
PHX
PHA
_HLock
STA L2BCB
* Now, we init a blank resource
LDY #$0002 ; get the pointer
LDA [$20],Y
TAX
LDA [$20]
STX $08
STA $06
LDA #$0000 ; format the header
STA [$06]
LDY #$0002
LDA #$C180 ; with bit 8
STA [$06],Y
LDY #$0004
LDA #$0000
STA [$06],Y
LDY #$0006
LDA #$0000
STA [$06],Y
INY
INY
LDA #$0000
STA [$06],Y
LDY #$000A
LDA #$0012
STA [$06],Y
LDY #$000C ; format the toolrec
PHY
LDA #$0001
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0003
STA [$06],Y
LDY #$000C
PHY
LDA #$0002
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0004
STA [$06],Y
LDY #$000C
PHY
LDA #$0003
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0005
STA [$06],Y
LDY #$000C
PHY
LDA #$0004
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0006
STA [$06],Y
LDY #$000C
PHY
LDA #$0005
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$000B
STA [$06],Y
LDY #$000C
PHY
LDA #$0006
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$000E
STA [$06],Y
LDY #$000C
PHY
LDA #$0007
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$000F
STA [$06],Y
LDY #$000C
PHY
LDA #$0008
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0010
STA [$06],Y
LDY #$000C
PHY
LDA #$0009
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0012
STA [$06],Y
LDY #$000C
PHY
LDA #$000A
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0013
STA [$06],Y
LDY #$000C
PHY
LDA #$000B
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0014
STA [$06],Y
LDY #$000C
PHY
LDA #$000C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0015
STA [$06],Y
LDY #$000C
PHY
LDA #$000D
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0016
STA [$06],Y
LDY #$000C
PHY
LDA #$000E
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0017
STA [$06],Y
LDY #$000C
PHY
LDA #$000F
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$001B
STA [$06],Y
LDY #$000C
PHY
LDA #$0010
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$001C
STA [$06],Y
LDY #$000C
PHY
LDA #$0011
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$001E
STA [$06],Y
LDY #$000C
PHY
LDA #$0012
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA #$0022
STA [$06],Y
LDA #$0001
STA $26
L0D2E LDY #$000C
PHY
LDA $26
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
TYA
CLC
ADC #$0002
TAY
LDA #$0000
STA [$06],Y
INC $26
LDA $26
CMP #$0013
bne L0D2E
*---
L0D54 pei $2F
pei $2D
pei $2B
JSL writeRESOURCE
LDA #$0000
STA $16
L0D66 LDA $29
STA $2F
LDA $28
STA $2E
LDX $16
PLD
TSC
CLC
ADC #$002E
TCS
TXA
RTL
L0D79 ASC '52~Tool editor: Resource load error. Operation aborted.~^#0'
L0DB4 ASC '52~Tool editor: Memory resize error. Operation aborted.~^#0'
*--- Update buffer
updateBUFFER
TSC
SEC
SBC #$0016
TCS
PHD
INC
TCD
LDA ptrBUFFER+2
PHA
LDA ptrBUFFER
PHA
PLA
CLC
ADC #$0048
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0048 ; flag
LDA [$00],Y
ORA #$6000 ; bits 14-13
PLX
STX $00
PLX
STX $02
STA [$00]
LDA ptrBUFFER+2
PHA
LDA ptrBUFFER
PHA
PLA
CLC
ADC #$0050
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036 ; move resource type
LDA [$00],Y ; from offset $36
PLX
STX $00
PLX
STX $02
STA [$00] ; to offset $50
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A ; move resource ID
LDA [$00],Y ; from offset $3A
PHA
LDY #$0038
LDA [$00],Y
PHA
LDA ptrBUFFER+2
PHA
LDA ptrBUFFER
PHA
PLA
CLC
ADC #$0052 ; to offset $52
PHA
PLA
STA $00
PLA
STA $02
PLA
STA [$00]
LDY #$0002
PLA
STA [$00],Y
PLD
TSC
CLC
ADC #$0016
TCS
RTL
*---
L0E80 TSC
SEC
SBC #$0026
TCS
PHD
INC
TCD
LDA #$0000
LDX #$0000
TAY
BPL L0E93
DEX
L0E93 PHX
PHA
PLA
STA $16
PLA
STA $18
PHA
PHA
LDA #$0001
LDX #$0000
TAY
BPL L0EA7
DEX
L0EA7 PHX
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003C ; memID
LDA [$00],Y
PHA
LDA #$8000
PHA
LDA #$0000
LDX #$0000
TAY
BPL L0EC7
DEX
L0EC7 PHX
PHA
_NewHandle
STA L2BCB
PLA
STA haMEMORY2
PLA
STA haMEMORY2+2
LDA L2BCB
BNE L0EE3
BRL L0F23
L0EE3 LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L119F
PEA L119F
LDA #$003C
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L0F20
BRL L0F20
L0F20 BRL L1192
L0F23 PHA
LDA #$0001
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $20
LDA L2BCB
BNE L0F3D
BRL L0F8F
L0F3D LDX haMEMORY2+2
LDA haMEMORY2
PHX
PHA
_DisposeHandle
STA L2BCB
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L11DB
PEA L11DB
LDA #$0036
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L0F8C
BRL L0F8C
L0F8C BRL L1192
L0F8F PHA
PHA
LDA #$FFFF
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
_UniqueResourceID
STA L2BCB
PLA
STA $22
PLA
STA $24
LDA L2BCB
BNE L0FBD
BRL L100F
L0FBD LDX haMEMORY2+2
LDA haMEMORY2
PHX
PHA
_DisposeHandle
STA L2BCB
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L1211
PEA L1211
LDA #$0037
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L100C
BRL L100C
L100C BRL L1141
L100F LDX haMEMORY2+2
LDA haMEMORY2
PHX
PHA
LDA #$0000
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
LDX $24
LDA $22
PHX
PHA
_AddResource
STA L2BCB
LDA L2BCB
BNE L1043
BRL L10A3
L1043 LDX haMEMORY2+2
LDA haMEMORY2
PHX
PHA
_DisposeHandle
STA L2BCB
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L1248
PEA L1248
LDA #$0043
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L1092
BRL L1092
L1092 LDA #$0000
LDX #$0000
TAY
BPL L109C
DEX
L109C STX $24
STA $22
BRL L1141
L10A3 LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
LDX $24
LDA $22
PHX
PHA
_WriteResource
STA L2BCB
LDA L2BCB
BNE L10CB
BRL L1119
L10CB LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L128B
PEA L128B
LDA #$003F
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L1108
BRL L1108
L1108 LDA #$0000
LDX #$0000
TAY
BPL L1112
DEX
L1112 STX $24
STA $22
BRL L1141
L1119 LDA #$0001
EOR #$FFFF
INC
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
LDX $24
LDA $22
PHX
PHA
_ReleaseResource
STA L2BCB
L1141 PHA
LDA $20
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $20
LDA #$0000
LDX #$0000
TAY
BPL L115C
DEX
L115C CMP $22
BNE L1162
CPX $24
L1162 BNE L1167
BRL L1192
L1167 LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
LDX $24
LDA $22
PHX
PHA
JSL makeSTDRESOURCE
TAX
BNE L1187
BRL L118A
L1187 BRL L1192
L118A LDX $24
LDA $22
STX $18
STA $16
L1192 LDX $18
LDY $16
PLD
TSC
CLC
ADC #$0026
TCS
TYA
RTL
L119F ASC '52~Tool editor: Memory creation error. Creation aborted.~^#0'
L11DB ASC '52~Tool editor: Depth get error. Creation aborted.~^#0'
L1211 ASC '52~Tool editor: Could not get ID. Creation aborted.~^#0'
L1248 ASC '52~Tool editor: Could not add resource error. Creation aborted.~^#0'
L128B ASC '52~Tool editor: Could not write resource. Creation aborted.~^#0'
*---
createRESOURCE TSC
SEC
SBC #$0020
TCS
PHD
INC
TCD
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0048
LDA [$00],Y
AND #$8000
BNE L12EA
BRL L1929
L12EA LDA $2B
PHA
LDX $29
LDA $27
PHX
PHA
JSL readRESOURCE ; load resource
STX $18
STA $16
LDA $16 ; check handle
ORA $18
BEQ L1304 ; empty, error
BRL L1344 ; not empty, continue
* Resource is not loaded, display error
L1304 LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L1939 ; cannot load resource
PEA L1939
LDA #$003F
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L1341
BRL L1341
L1341 BRL L1929
* Resource is loaded
L1344 LDX $18
LDA $16
PHX
PHA
_HUnlock
STA L2BCB
LDA #sizeFULLREC
LDX #$0000
TAY
BPL L135E
DEX
L135E PHX
PHA
LDX $18
LDA $16
PHX
PHA
_SetHandleSize
STA L2BCB
LDA L2BCB
BNE L1378
BRL L13F6
* Resource cannot be resized, display error
L1378 PHA
LDA #$0001
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $1E
LDA #$0001
EOR #$FFFF
INC
PHA
LDA $2B
PHA
LDX $29
LDA $27
PHX
PHA
_ReleaseResource
STA L2BCB
PHA
LDA $1E
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $1E
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L1978 ; cannot resize resource
PEA L1978
LDA #$0041
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L13F3
BRL L13F3
L13F3 BRL L1929
* Resource is resized
L13F6 LDX $18
LDA $16
PHX
PHA
_HLock
STA L2BCB
* Now, prepare the resource handle
LDA #$0000
STA $1C
LDA #$0001
STA $1A
L1410 PHA
PHA
PHA
LDX $25
LDA $23
PHX
PHA
LDA #$0000
CLC
ADC $1A
LDX #$0000
TAY
BPL L1426
DEX
L1426 PHX
PHA
_GetCtlHandleFromID
STA L2BCB
_GetCtlValue
STA L2BCB
PLA
BNE L1442
BRL L149C
L1442 LDA $1C
CLC
ADC #$0001
STA $1C
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
STA $00
PLA
STA $02
LDA $1A
STA [$00]
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
CLC
ADC #$0002
PHA
LDA $1A
DEC
ASL
TAX
LDA theTOOLREC,X
PLX
STX $00
PLX
STX $02
STA [$00]
L149C INC $1A
LDA $1A
CMP #$000D
BEQ L14A8
BRL L1410
L14A8 LDA #$000E
STA $1A
L14AD PHA
PHA
PHA
LDX $25
LDA $23
PHX
PHA
LDA #$0000
CLC
ADC $1A
LDX #$0000
TAY
BPL L14C3
DEX
L14C3 PHX
PHA
_GetCtlHandleFromID
STA L2BCB
_GetCtlValue
STA L2BCB
PLA
BNE L14DF
BRL L1539
L14DF LDA $1C
CLC
ADC #$0001
STA $1C
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
STA $00
PLA
STA $02
LDA $1A
STA [$00]
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
CLC
ADC #$0002
PHA
LDA $1A
DEC
ASL
TAX
LDA theTOOLREC,X
PLX
STX $00
PLX
STX $02
STA [$00]
L1539 INC $1A
LDA $1A
CMP #$0018
BEQ L1545
BRL L14AD
L1545 LDA #$0019
STA $1A
L154A PHA
PHA
PHA
LDX $25
LDA $23
PHX
PHA
LDA #$0000
CLC
ADC $1A
LDX #$0000
TAY
BPL L1560
DEX
L1560 PHX
PHA
_GetCtlHandleFromID
STA L2BCB
_GetCtlValue
STA L2BCB
PLA
BNE L157C
BRL L15D6
L157C LDA $1C
CLC
ADC #$0001
STA $1C
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
STA $00
PLA
STA $02
LDA $1A
STA [$00]
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
CLC
ADC #$0002
PHA
LDA $1A
DEC
ASL
TAX
LDA theTOOLREC,X
PLX
STX $00
PLX
STX $02
STA [$00]
L15D6 INC $1A
LDA $1A
CMP #$001F ; number of entries supported
BEQ L15E2
BRL L154A
L15E2 PHA
PHA
PHA
LDX $25
LDA $23
PHX
PHA
LDA #$0020
LDX #$0000
TAY
BPL L15F5
DEX
L15F5 PHX
PHA
_GetCtlHandleFromID
STA L2BCB
_GetCtlValue
STA L2BCB
PLA
BNE L1611
BRL L166D
L1611 LDA $1C
CLC
ADC #$0001
STA $1C
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
STA $00
PLA
STA $02
LDA #$0020
STA [$00]
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
CLC
ADC #$0002
PHA
LDA #$0020
DEC
ASL
TAX
LDA theTOOLREC,X
PLX
STX $00
PLX
STX $02
STA [$00]
L166D PHA
PHA
PHA
pei $25
pei $23
pea $0000
pea $0022
_GetCtlHandleFromID
_GetCtlValue
PLA
beq L16F7
LDA $1C
CLC
ADC #$0001
STA $1C
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
STA $00
PLA
STA $02
LDA #$0022
STA [$00]
* LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
CLC
ADC #$0002
PHA
LDA #$0022
DEC
ASL
TAX
LDA theTOOLREC,X
PLX
STX $00
PLX
STX $02
STA [$00]
*--- Animation Tool
L16F7 PHA
PHA
PHA
pei $25
pei $23
pea $0000
pea $0025
_GetCtlHandleFromID
_GetCtlValue
PLA
beq L16F8
LDA $1C
CLC
ADC #$0001
STA $1C
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
STA $00
PLA
STA $02
LDA #$0025
STA [$00]
* LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$000C
PHA
LDA $1C
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLA
CLC
ADC #$0002
PHA
LDA #$0025
DEC
ASL
TAX
LDA theTOOLREC,X
PLX
STX $00
PLX
STX $02
STA [$00]
*--- end of Animation Tool
L16F8 LDY #$0002 ; +0A - numTools
LDA [$16],Y
TAX
LDA [$16]
CLC
ADC #$000A
STA $00
STX $02
LDA $1C
STA [$00]
LDY #$0002 ; +02 - videoMode for 0
LDA [$16],Y
TAX
LDA [$16]
CLC
ADC #$0002
STA $00
STX $02
LDA #$0000
STA [$00]
PHA ; +02 - videoMode for bit 14
PHA
PHA
LDX $25
LDA $23
PHX
PHA
LDA #$1001
LDX #$0000
TAY
BPL L1734
DEX
L1734 PHX
PHA
_GetCtlHandleFromID
STA L2BCB
_GetCtlValue
STA L2BCB
PLA
beq L1765
LDY #$0002
LDA [$16],Y
TAX
LDA [$16]
CLC
ADC #$0002
STA $00
STX $02
LDA #$4000
STA [$00]
L1765 PHA ; +02 - videoMode for bit 15
PHA
PHA
pei $25
pei $23
pea $0000
pea $1002
_GetCtlHandleFromID
_GetCtlValue
PLA
beq L17BF
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$0002
PHA
* LDY #$0002
LDA [$16],Y
TAX
LDA [$16]
STA $00
STX $02
* LDY #$0002
LDA [$00],Y
ORA #$8000
PLX
STX $00
PLX
STX $02
STA [$00]
L17BF PHA ; +02 - videoMode for bit 7
PHA
PHA
pei $25
pei $23
pea $0000
pea $0640
_GetCtlHandleFromID
_GetCtlValue
PLA
beq L1819
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$0002
PHA
LDY #$0002
LDA [$16],Y
TAX
LDA [$16]
STA $00
STX $02
LDY #$0002
LDA [$00],Y
ORA #$0080
PLX
STX $00
PLX
STX $02
STA [$00]
*--- Begin of Leave SHR screen on
L1819 PHA ; +02 - videoMode for bit 8
PHA
PHA
pei $25
pei $23
pea $0000
pea $1003
_GetCtlHandleFromID
_GetCtlValue
PLA
beq L181A
LDY #$0002
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$0002
PHA
* LDY #$0002
LDA [$16],Y
TAX
LDA [$16]
STA $00
STX $02
* LDY #$0002
LDA [$00],Y
ORA #$0100 ; This is bit 8
PLX
STX $00
PLX
STX $02
STA [$00]
*--- end of "Leave SHR screen on"
L181A LDY #$0002 ; +04 - resFileID
LDA [$16],Y
TAX
LDA [$16]
CLC
ADC #$0004
STA $00
STX $02
LDA #$0000
STA [$00]
LDY #$0002 ; +06 - dPageHandle
LDA [$16],Y
PHA
LDA [$16]
PHA
PLA
CLC
ADC #$0006
PHA
PLA
STA $00
PLA
STA $02
LDA #$0000
STA [$00]
LDY #$0002
LDA #$0000
STA [$00],Y
LDX $18
LDA $16
PHX
PHA
_HUnlock
STA L2BCB
LDA $1C ; number of entries
LDX #$0004 ; x 4
JSL L3154
CLC
ADC #sizeHEADER ; + header
LDX #$0000
TAY
BPL L1874
DEX
L1874 PHX
PHA
LDX $18
LDA $16
PHX
PHA
_SetHandleSize
STA L2BCB
LDA L2BCB
BNE L188E
BRL L190C
* Memory handle cannot be resized, display error
L188E PHA
LDA #$0001
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $1E
LDA #$0001
EOR #$FFFF
INC
PHA
LDA $2B
PHA
LDX $29
LDA $27
PHX
PHA
_ReleaseResource
STA L2BCB
PHA
LDA $1E
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $1E
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L19B9 ; cannot resize handle
PEA L19B9
LDA #$003F
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L1909
BRL L1909
L1909 BRL L1929
* Resource is formatted
L190C LDX $18
LDA $16
PHX
PHA
_HLock
STA L2BCB
LDA $2B
PHA
LDX $29
LDA $27
PHX
PHA
JSL writeRESOURCE
L1929 LDA $21
STA $2B
LDA $20
STA $2A
PLD
TSC
CLC
ADC #$002A
TCS
RTL
L1939 ASC '52~Tool editor: Could not load resource. Changes not saved.~^#0'
L1978 ASC '52~Tool editor: Could not resize resource. Changes not saved.~^#0'
L19B9 ASC '52~Tool editor: Could not resize handle. Changes not saved.~^#0'
*--- Init controls of the editor window
initWINCONTROLS TSC
SEC
SBC #$0028
TCS
PHD
INC
TCD
LDA #$0001
STA $16
LDA #$0001
STA $26
L1A0B LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
LDA #$0000
CLC
ADC $26
LDX #$0000
TAY
BPL L1A26
DEX
L1A26 PHX
PHA
_GetCtlHandleFromID
STA L2BCB
_SetCtlValue
STA L2BCB
INC $26
LDA $26
CMP #$000D
BEQ L1A48
BRL L1A0B
L1A48 LDA #$000E
STA $26
L1A4D LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pei $26
_GetCtlHandleFromID
_SetCtlValue
INC $26
LDA $26
CMP #$0018
bne L1A4D
*---
L1A8A LDA #$0019
STA $26
L1A8F LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pei $26
_GetCtlHandleFromID
_SetCtlValue
INC $26
LDA $26
CMP #$001F
bne L1A8F
* MIDI Toolset
L1ACC LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $0020
_GetCtlHandleFromID
_SetCtlValue
* Text Edit
LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $0022
_GetCtlHandleFromID
_SetCtlValue
* Animation
LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $0025
_GetCtlHandleFromID
_SetCtlValue
* Fastport aware
LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $1001
_GetCtlHandleFromID
_SetCtlValue
* Hardware shadowing
LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $1002
_GetCtlHandleFromID
_SetCtlValue
* Keep SHR screen on
LDA #$0000
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $1003
_GetCtlHandleFromID
_SetCtlValue
*---
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A
LDA [$00],Y
TAX
LDY #$0038
LDA [$00],Y
PHX
PHA
JSL readRESOURCE
STX $22
STA $20
LDA $20
ORA $22
BEQ L1BBC
BRL L1BFC
L1BBC LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L1DCF ; cannot load resource
PEA L1DCF
LDA #$003D
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L1BF9
BRL L1BF9
L1BF9 BRL L1D68
L1BFC LDX $22
LDA $20
PHX
PHA
_HLock
STA L2BCB
LDY #$0002
LDA [$20],Y
TAX
LDA [$20]
STX $08
STA $06
* Check bit 8
LDY #$0002
LDA [$06],Y
AND #$0100
beq L1C52
LDA #$0001
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $1003
_GetCtlHandleFromID
_SetCtlValue
* Check bit 15
L1C52 LDY #$0002
LDA [$06],Y
AND #$8000
beq L1C53
LDA #$0001
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $1002
_GetCtlHandleFromID
_SetCtlValue
* Check bit 14
L1C53 LDY #$0002
LDA [$06],Y
AND #$4000
beq L1C8E
LDA #$0001
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
pea $1001
_GetCtlHandleFromID
_SetCtlValue
* Check Video Mode
L1C8E LDY #$0002
LDA [$06],Y
ldy #$0320 ; mode 320
AND #$0080
beq L1CCC
ldy #$0640 ; mode 640
L1CCC LDA #$0001
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
pea $0000
phy
_GetCtlHandleFromID
_SetCtlValue
*---
LDY #$000A
LDA [$06],Y
STA $0A
LDA #$0001
STA $26
LDA $0A
SEC
SBC $26
BVS L1D10
EOR #$8000
L1D10 BMI L1D15
BRL L1D63
L1D15 LDA #$0001
PHA
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
LDY #$000C
PHY
LDA $26
DEC
ASL
ASL
CLC
ADC $01,S
STA $01,S
PLY
LDA [$06],Y
CLC
ADC #$0000
LDX #$0000
TAY
BPL L1D3F
DEX
L1D3F PHX
PHA
_GetCtlHandleFromID
STA L2BCB
_SetCtlValue
STA L2BCB
LDA $0A
CMP $26
BNE L1D5E
BRL L1D63
L1D5E INC $26
BRL L1D15
L1D63 LDA #$0000
STA $16
L1D68 PHA
LDA #$0001
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $24
LDA #$0001
EOR #$FFFF
INC
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A
LDA [$00],Y
TAX
LDY #$0038
LDA [$00],Y
PHX
PHA
_ReleaseResource
STA L2BCB
PHA
LDA $24
PHA
_SetResourceFileDepth
STA L2BCB
PLA
STA $24
LDX $16
PLD
TSC
CLC
ADC #$0028
TCS
TXA
RTL
L1DCF ASC '52~Tool editor: Could not load resource. Setting aborted.~^#0'
*--- Ask for memory
prepareWINDOW TSC
SEC
SBC #$0016
TCS
PHD
INC
TCD
PHA ; space for result
PHA
LDA #$000C
LDX #$0000
TAY
BPL L1E21
DEX
L1E21 PHX ; size of block to create
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003C
LDA [$00],Y
PHA ; memory ID
LDA #$8000 ; locked
CLC
ADC #$4000 ; fixed
PHA ; attributes
LDA #$0000
LDX #$0000
TAY
BPL L1E45
DEX
L1E45 PHX ; locationPtr
PHA
_NewHandle
STA L2BCB
PLA
STA haMEMORY
PLA
STA haMEMORY+2
LDA L2BCB
BNE L1E61
BRL L1EBC
* Memmory error
L1E61 LDA busyFLAG
BEQ L1E69
BRL L1E7C
L1E69 LDX ptrBUFFER+2
LDA ptrBUFFER
CLC
ADC #$0036
STA $00
STX $02
LDA #$0000
STA [$00]
L1E7C LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L2054 ; cannot open window
PEA L2054
LDA #$0035
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L1EB9
BRL L1EB9
L1EB9 BRL L204C
* Memory is allocated
L1EBC LDX haMEMORY+2 ; deref
LDA haMEMORY
STA $00
STX $02
LDY #$0002
LDA [$00],Y
TAX
LDA [$00]
STX $08 ; save pointer
STA $06
PEI $08
PEI $06
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036 ; get supported resource type
LDA [$00],Y
PLX
STX $00
PLX
STX $02
STA [$00] ; +00 word - save supported resource type to newly allocated buffer
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A ; +02 long - source window pointer
LDA [$00],Y
PHA
LDY #$0038
LDA [$00],Y
PHA
LDY #$0002
PLA
STA [$06],Y
INY
INY
PLA
STA [$06],Y
LDY #$0006 ; +06 word - zero
LDA #$0000
STA [$06],Y
PHA
PHA
_FrontWindow
STA L2BCB
LDY #$0008 ; +08 long - front window pointer
PLA
STA [$06],Y
INY
INY
PLA
STA [$06],Y
JSL showWINDOW ; show my new window
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
_SetPort
STA L2BCB
JSL initWINCONTROLS
TAX
BNE L1F4D
BRL L1F74
* Error at init
L1F4D LDX haMEMORY+2
LDA haMEMORY
PHX
PHA
_DisposeHandle
STA L2BCB
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
_CloseWindow
STA L2BCB
BRL L204C
* No errors, we're good
L1F74 LDA YCOORD
CLC
ADC #$000A
STA YCOORD
LDA xCOORD
CLC
ADC #$001E
STA xCOORD
LDA #$001E
LDX #$0001
SEC
SBC YCOORD
BEQ L1F9B
BVS L1F99
EOR #$8000
L1F99 BMI L1F9C
L1F9B DEX
L1F9C TXA
PHA
LDA YCOORD
LDX #$0001
SEC
SBC #$0050
BEQ L1FB1
BVS L1FAF
EOR #$8000
L1FAF BMI L1FB2
L1FB1 DEX
L1FB2 TXA
ORA $01,S
PLX
TAX
BNE L1FBC
BRL L1FC2
L1FBC LDA #$001E
STA YCOORD
L1FC2 LDA #$001E
LDX #$0001
SEC
SBC xCOORD
BEQ L1FD5
BVS L1FD3
EOR #$8000
L1FD3 BMI L1FD6
L1FD5 DEX
L1FD6 TXA
PHA
LDA xCOORD
LDX #$0001
SEC
SBC #$00B4
BEQ L1FEB
BVS L1FE9
EOR #$8000
L1FE9 BMI L1FEC
L1FEB DEX
L1FEC TXA
ORA $01,S
PLX
TAX
BNE L1FF6
BRL L1FFC
L1FF6 LDA #$001E
STA xCOORD
L1FFC LDA xCOORD ; X-coord
PHA
LDA YCOORD ; Y-coord
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
_MoveWindow
STA L2BCB
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
_ShowWindow
STA L2BCB
LDX haMEMORY+2 ; associate the newly allocated buffer
LDA haMEMORY ; to the refcon of the window
PHX
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
_SetWRefCon
STA L2BCB
LDA busyFLAG ; set the busy flag
CLC
ADC #$0001
STA busyFLAG
L204C PLD
TSC
CLC
ADC #$0016
TCS
RTL
L2054 ASC '52~Tool editor: Memory error. Cannot open window.~^#0'
getFRONTWINDOW TSC
SEC
SBC #$0016
TCS
PHD
INC
TCD
PHA
PHA
_FrontWindow
STA L2BCB
PLA
STA haWINDOW
PLA
STA haWINDOW+2
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
_SetPort
STA L2BCB
PHA
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
_GetWRefCon
STA L2BCB
PLA
STA haMEMORY
PLA
STA haMEMORY+2
PLD
TSC
CLC
ADC #$0016
TCS
RTL
*--- Create a resource and dispose memory
createDISPOSE TSC
SEC
SBC #$001A
TCS
PHD
INC
TCD
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036 ; supported resource type
LDA [$00],Y
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A
LDA [$00],Y
TAX
LDY #$0038
LDA [$00],Y
PHX
PHA
LDX haWINDOW+2
LDA haWINDOW
PHX
PHA
JSL createRESOURCE
LDX haWINDOW+2 ; close the window
LDA haWINDOW
PHX
PHA
_CloseWindow
STA L2BCB
PHA
PHA
LDX haMEMORY+2
LDA haMEMORY
STA $00
STX $02
LDY #$0002
LDA [$00],Y
TAX
LDA [$00]
PHX
PHA
_FindHandle
STA L2BCB
PLA
STA $16
PLA
STA $18
LDA L2BCB
BNE L2158
BRL L2198
* Handle not found
L2158 LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L2213 ; memory location error
PEA L2213 ; ie. cannot find handle
LDA #$003F
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L2195
BRL L2195
L2195 BRL L21ED
* Handle found, dispose it
L2198 LDX $18
LDA $16
PHX
PHA
_DisposeHandle
STA L2BCB
LDA L2BCB
BNE L21B0
BRL L21ED
* Dispose failed
L21B0 LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
LDA #$0100
PHA
PEA ^L2252 ; memory disposal error
PEA L2252
LDA #$003E
PHA
JSL copyDATA
PHA
LDA #$0000
PHA
PEA $0000
PEA $0000
LDX #^myBUFFER2
LDA #myBUFFER2
PHX
PHA
_AlertWindow
STA L2BCB
PLA
BEQ L21ED
BRL L21ED
* Dispose succeeded
L21ED LDA busyFLAG ; busy flag
SEC
SBC #$0001
STA busyFLAG
LDA YCOORD
SEC
SBC #$000A
STA YCOORD
LDA xCOORD
SEC
SBC #$001E
STA xCOORD
PLD
TSC
CLC
ADC #$001A
TCS
RTL
L2213 ASC '52~Tool editor: Memory location error. Consider rebooting.~^#0'
L2252 ASC '52~Tool editor: Memory disposal error. Consider rebooting.~^#0'
L2290 TSC
SEC
SBC #$001A
TCS
PHD
INC
TCD
PHA
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0012
LDA [$00],Y
TAX
LDY #$0010
LDA [$00],Y
PHX
PHA
_GetWRefCon
STA L2BCB
PLA
STA $16
PLA
STA $18
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$000E
LDA [$00],Y
AND #$0001
BEQ L22D9
BRL L231C
L22D9 LDY #$0002
LDA [$16],Y
TAX
LDA [$16]
STA $00
STX $02
LDA [$00]
PHA
LDY #$0002
LDA [$16],Y
TAX
LDA [$16]
STA $00
STX $02
LDY #$0004
LDA [$00],Y
TAX
LDY #$0002
LDA [$00],Y
PHX
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0012
LDA [$00],Y
TAX
LDY #$0010
LDA [$00],Y
PHX
PHA
JSL createRESOURCE
L231C PLD
TSC
CLC
ADC #$001A
TCS
RTL
*--- Handle control click
doCONTROL
TSC
SEC
SBC #$0018
TCS
PHD
INC
TCD
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0028 ; which control ID?
LDA [$00],Y
TAX
LDY #$0026
LDA [$00],Y
PHX
PHA
_LoWord
STA L2BCB
PLA
STA $16
LDA $16
BNE L2359
BRL L2381
* Control ID exists
L2359 LDA ptrBUFFER+2
PHA
LDA ptrBUFFER
PHA
PLA
CLC
ADC #$0048
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0048
LDA [$00],Y
ORA #$8000
PLX
STX $00
PLX
STX $02
STA [$00]
L2381 LDA $16 ; check the preferred button
CMP #$1000
BEQ L238B
BRL L23C9
* OK, make a preferred resource then
L238B LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036
LDA [$00],Y
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A
LDA [$00],Y
TAX
LDY #$0038
LDA [$00],Y
PHX
PHA
JSL makeSTDRESOURCE
TAX
BNE L23BC
BRL L23BF
L23BC BRL L23C9
* init the controls
L23BF JSL initWINCONTROLS
TAX
BNE L23C9
BRL L23C9
L23C9 PLD
TSC
CLC
ADC #$0018
TCS
RTL
*--- Tool Table editor: entry point
entryPOINT
TSC
SEC
SBC #$0020
TCS
PHD
INC
TCD
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$004E ; get resource file ID
LDA [$00],Y
STA resfileID
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003E ; get command
LDA [$00],Y
BRL L27E6
*--- Command 0 - Prepare me
doCOMMAND0
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A ; is window open?
LDA [$00],Y
PHA
LDY #$0038
LDA [$00],Y
PHA
LDA #$0000
LDX #$0000
TAY
BPL L241E
DEX
L241E LDY #$0001
CMP $01,S ; buffer+$38 = $0000?
BEQ L2426 ; yes
DEY ; no
L2426 TXA
CMP $03,S ; buffer+$3a = $0000?
BEQ L242E ; yes
LDY #$0000 ; no
L242E PLA
PLA
TYA
BNE L2436 ; both are zeros, we are here
BRL L24DE ; prepare window
* We have a window
L2436 JSL L0E80 ; prepare the resource
PHX
PHA
LDA ptrBUFFER+2
PHA
LDA ptrBUFFER
PHA
PLA
CLC
ADC #$0038 ; save the window/resource handle
PHA ; at buffer + $38
PLA
STA $00
PLA
STA $02
PLA
STA [$00]
LDY #$0002
PLA
STA [$00],Y
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A ; check emptiness of window/resource ID
LDA [$00],Y
PHA
LDY #$0038
LDA [$00],Y
PHA
LDA #$0000
LDX #$0000
TAY
BPL L2479
DEX
L2479 LDY #$0001
CMP $01,S
BEQ L2481
DEY
L2481 TXA
CMP $03,S
BEQ L2489
LDY #$0000
L2489 PLA
PLA
TYA
BNE L2491
BRL L24B2
* we have no window/resource ID
L2491 LDA busyFLAG ; are we busy?
BEQ L2499
BRL L24AC ; we are busy
* We're not busy
L2499 LDX ptrBUFFER+2
LDA ptrBUFFER
CLC
ADC #$0036 ; we have nothing
STA $00 ; tell no resource type as well
STX $02
LDA #$0000
STA [$00]
L24AC BRL L24E2 ; exit editor
BRL L24DE
* window/resource exists
L24B2 LDA ptrBUFFER+2
PHA
LDA ptrBUFFER
PHA
PLA
CLC
ADC #$0048
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0048
LDA [$00],Y
ORA #$8000
PLX
STX $00
PLX
STX $02
STA [$00]
JSL updateBUFFER
L24DE JSL prepareWINDOW ; no active window
L24E2 BRL exitEDITOR
*--- Command 1 - Return name of the editor
doCOMMAND1
LDX #^myBUFFER1 ; return the name of the editor
LDA #myBUFFER1 ; at buffer offset $2E
PHX
PHA
LDA #$FF01
PHA
PEA ^strEDITOR
PEA strEDITOR
LDA strEDITOR2-strEDITOR ; length of string
PHA
JSL copyDATA ; copy string
PEA ^myBUFFER1 ; 0
PEA myBUFFER1 ; 1
LDA ptrBUFFER+2
PHA ; 2
LDA ptrBUFFER
PHA ; 3
PLA ; 3
CLC
ADC #$002E
PHA ; 3
PLA ; 3
STA $00
PLA ; 2
STA $02
PLA ; 1
STA [$00]
LDY #$0002
PLA ; 0
STA [$00],Y
BRL exitEDITOR
*--- Command 2 - Interact with window
doCOMMAND2
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$004A ; TaskMaster result
LDA [$00],Y
CMP #$0008 ; activateEvent
BEQ L253C
BRL L2543
L253C JSL L2290 ; get the refcon
BRL L259E
L2543 JSL getFRONTWINDOW
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$004A ; TaskMaster result
LDA [$00],Y
BRL L256A
* wInGoAway
L2559 JSL createDISPOSE ; create a resource and dispoes memory
BRL L259E ; exit editor
* wInControl
L2560 JSL doCONTROL
BRL L259E ; exit editor
L2567 BRL L259E ; exit editor
L256A SEC
SBC #$0016
CMP #$000C
BCC L2576
LDA #$000C
L2576 ASL
TAX
LDAL L2584,X
BEQ L2580
PHA
RTS
L2580 JSL L2C09
L2584 DA L2559-1 ; 0 16 wInGoAway *
DA L2567-1 ; 1 17 wInZoom
DA L2567-1 ; 2 18 wInInfo
DA L2567-1 ; 3 19 wInSpecial
DA L2567-1 ; 4 1A wInDeskItem
DA L2567-1 ; 5 1B wInFrame
DA L2567-1 ; 6 1C wInactMenu
DA L2567-1 ; 7 1D wClosedNDA
DA L2567-1 ; 8 1E wCalledSysEdit
DA L2567-1 ; 9 1F wTrackZoom
DA L2567-1 ; A 20 wHitFrame
DA L2560-1 ; B 21 wInControl *
DA L2567-1 ; C 22 wInControlMenu
L259E BRL exitEDITOR
*--- Command 3 - The init command
doCOMMAND3
LDA #$0000
STA YCOORD
LDA #$0000
STA xCOORD
LDA #$0000
STA busyFLAG
LDX #^myBUFFER1 ; copy the name
LDA #myBUFFER1 ; of the supported resource
PHX ; returns the address in
PHA ; the buffer at offset $2E
LDA #$FF01
PHA
PEA ^strRESOURCE
PEA strRESOURCE
LDA #strRESOURCE2-strRESOURCE ; 'Tool table' is 10 chars
PHA
JSL copyDATA
PEA ^myBUFFER1
PEA myBUFFER1
LDA ptrBUFFER+2
PHA
LDA ptrBUFFER
PHA
PLA
CLC
ADC #$002E ; source pointer of data to be copied
PHA
PLA
STA $00
PLA
STA $02
PLA
STA [$00]
LDY #$0002
PLA
STA [$00],Y
LDX ptrBUFFER+2
LDA ptrBUFFER
CLC
ADC #$0036
STA $00
STX $02
LDA #resTYPE ; resource type that the editor handles
STA [$00]
LDA #$0001 ; prepare my resource data
DEC
ASL
TAX
LDA #$0300
STA theTOOLREC,X
LDA #$0002
DEC
ASL
TAX
LDA #$0300
STA theTOOLREC,X
LDA #$0003
DEC
ASL
TAX
LDA #$0300
STA theTOOLREC,X
LDA #$0004
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0005
DEC
ASL
TAX
LDA #$0302
STA theTOOLREC,X
LDA #$0006
DEC
ASL
TAX
LDA #$0300
STA theTOOLREC,X
LDA #$0007
DEC
ASL
TAX
LDA #$0200
STA theTOOLREC,X
LDA #$0008
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0009
DEC
ASL
TAX
LDA #$0201
STA theTOOLREC,X
LDA #$000A
DEC
ASL
TAX
LDA #$0202
STA theTOOLREC,X
LDA #$000B
DEC
ASL
TAX
LDA #$0200
STA theTOOLREC,X
LDA #$000C
DEC
ASL
TAX
LDA #$0201
STA theTOOLREC,X
LDA #$000D
DEC
ASL
TAX
LDA #$0200
STA theTOOLREC,X
LDA #$000E
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$000F
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0010
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0011
DEC
ASL
TAX
LDA #$0300
STA theTOOLREC,X
LDA #$0012
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0013
DEC
ASL
TAX
LDA #$0300
STA theTOOLREC,X
LDA #$0014
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0015
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0016
DEC
ASL
TAX
LDA #$0300
STA theTOOLREC,X
LDA #$0017
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$0018
DEC
ASL
TAX
LDA #$0000
STA theTOOLREC,X
LDA #$0019
DEC
ASL
TAX
LDA #$0104
STA theTOOLREC,X
LDA #$001A
DEC
ASL
TAX
LDA #$0104
STA theTOOLREC,X
LDA #$001B
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$001C
DEC
ASL
TAX
LDA #$0301
STA theTOOLREC,X
LDA #$001D
DEC
ASL
TAX
LDA #$0101
STA theTOOLREC,X
LDA #$001E
DEC
ASL
TAX
LDA #$0100
STA theTOOLREC,X
LDA #$001F
DEC
ASL
TAX
LDA #$0000
STA theTOOLREC,X
LDA #$0020
DEC
ASL
TAX
LDA #$0103
STA theTOOLREC,X
LDA #$0021
DEC
ASL
TAX
LDA #$0000
STA theTOOLREC,X
LDA #$0022
DEC
ASL
TAX
LDA #$0101
STA theTOOLREC,X
LDA #$0025
DEC
ASL
TAX
LDA #$0100
STA theTOOLREC,X
BRL exitEDITOR
*--- Command 4
doCOMMAND4
JSL getFRONTWINDOW
JSL createDISPOSE
BRL exitEDITOR
*--- Command 7
doCOMMAND7
JSL getFRONTWINDOW
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$0036 ; supported resource type
LDA [$00],Y
PHA
LDX ptrBUFFER+2
LDA ptrBUFFER
STA $00
STX $02
LDY #$003A ; window pointer?
LDA [$00],Y
TAX
LDY #$0038
LDA [$00],Y
PHX
PHA
LDX haWINDOW+2 ; GRAFPORT
LDA haWINDOW
PHX
PHA
JSL createRESOURCE ; format resource
BRL exitEDITOR
*--- Command 5
*--- Command 6
*--- Command 8
unsupCOMMAND BRL exitEDITOR
*--- Manages commands
L27E6 CMP #$0008
BCC L27EE
LDA #$0008
L27EE ASL
TAX
LDAL L27FC,X
BEQ L27F8
PHA
RTS
L27F8 JSL L2C09
L27FC DA doCOMMAND0-1 ; 0
DA doCOMMAND1-1 ; 1
DA doCOMMAND2-1 ; 2
DA doCOMMAND3-1 ; 3
DA doCOMMAND4-1 ; 4
DA unsupCOMMAND-1 ; 5
DA unsupCOMMAND-1 ; 6
DA doCOMMAND7-1 ; 7
DA unsupCOMMAND-1 ; 8
exitEDITOR LDA #$0000
STA $16
LDX $16
PLD
TSC
CLC
ADC #$0020
TCS
TXA
RTL
strEDITOR ASC 'Tool table editor v1.3'
strEDITOR2
strRESOURCE ASC 'Tool table'
strRESOURCE2
YCOORD DW $0000
xCOORD DW $0000
ptrBUFFER ADRL $00000000 ; pointer to the shell buffer
busyFLAG DW $0000 ; LOGO - could be the non-reentrant flag
resfileID DW $0000
haMEMORY ADRL $00000000
haMEMORY2 ADRL $00000000
haWINDOW ADRL $00000000
theTOOLREC DS $400 ; 256 tools x 2 words
*--- Buffers
myBUFFER1 DS $100
myBUFFER2 DS $100
*--- Copy data
*
* long 11..14 - destination buffer
* word 0F..10 -
* long 0B..0E - source buffer
* word 09..0A - source length
copyDATA TDC
TAX
TSC
SEC
SBC #$0005
TCD
DEC
TCS
PHX
LDA $09
CMP $0F
BNE L2AC7
LDA $13
PHA
LDA $11
PHA
LDA $0D
PHA
LDA $0B
PHA
LDA $09
BPL L2AC0
EOR #$FFFF
INC
INC
L2AC0 PHA
JSL L2E77
BRA L2B3D
L2AC7 LDA $0D
PHA
LDA $0B
PHA
LDA $09
PHA
JSR L2B4D
PLA
STA $09
PLA
STA $0B
PLA
STA $0D
LDA $13
STA $04
LDA $11
STA $02
LDA $0F
BPL L2AF2
EOR #$FFFF
INC
INC $11
BNE L2AF2
INC $13
L2AF2 CMP $09
BCC L2AF8
LDA $09
L2AF8 TAY
STA $00
BEQ L2B21
LSR
BCC L2B17
SEP #$20
LDA [$0B]
STA [$11]
REP #$20
INC $0B
BNE L2B0E
INC $0D
L2B0E INC $11
BNE L2B14
INC $13
L2B14 DEY
BEQ L2B21
L2B17 DEY
DEY
L2B19 LDA [$0B],Y
STA [$11],Y
DEY
DEY
BPL L2B19
L2B21 LDY $0F
BPL L2B2F
SEP #$20
LDA $00
STA [$02]
REP #$20
BRA L2B3D
L2B2F LDY $00
CPY $0F
BCS L2B3D
SEP #$20
LDA #$00
STA [$02],Y
REP #$20
L2B3D LDA $07
STA $13
LDA $06
STA $12
CLC
TDC
ADC #$0011
PLD
TCS
RTL
L2B4D PHD
TSC
TCD
LDA $05
BEQ L2B9D
BPL L2B8A
INC
BNE L2B7B
LDA $09
AND #$00FF
BNE L2B64
STZ $05
BRA L2B9D
L2B64 LDA #$0001
STA $05
LDA $09
STAL L2B9F
LDA #L2B9F
STA $07
LDA #^L2B9F
STA $09
BRA L2B9D
L2B7B LDA [$07]
AND #$00FF
STA $05
INC $07
BNE L2B88
INC $09
L2B88 BRA L2B9D
L2B8A LDX $05
LDY #$0000
SEP #$20
L2B91 LDA [$07],Y
BEQ L2B99
INY
DEX
BNE L2B91
L2B99 STY $05
REP #$20
L2B9D PLD
RTS
L2B9F DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
ADRL L2BAD
L2BAD DB $00
DB $00
ADRL L2BB3
L2BB3 DB $00
DB $00
DB $00
DB $00
ADRL L2BBB
L2BBB DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
L2BCB DB $00
DB $00
L2BCD DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
L2BD5 DB $00
DB $00
L2BD7 DB $00
DB $00
L2BD9 DB $00
L2BDA DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
L2BE7 PHA
JSL L2E62
LDAL L2BCD
PHA
_DisposeAll
PLA
JSL GSOS
DW $0029 ; Quit
ADRL L2C03
L2C03 ADRL L2C07 ; path name
L2C07 DW $0000 ; flags
L2C09 PEA $0008
JSL L2C16
LDA #$FFFF
JMP L2BE7
L2C16 LDA $04,S
PHA
JSL L2D39
JMPL L2C21
L2C21 PHK
PLB
LDA L2BD9
BNE L2C2B
BRL L2D33
L2C2B BRA L2C45
L2C2D STR 'Error occurred at line '
L2C45 PEA ^L2C2D
PEA L2C2D
_ErrWriteString
LDA L2BD9
PHA
PEA $0001
PEA $0000
PEA $0001
JSL L31B3
BRA L2C74
L2C65 STR ' in procedure '
L2C74 PEA ^L2C65
PEA L2C65
_ErrWriteString
PEA ^L2BDA
PEA L2BDA
PEA $0000
PEA $0001
PEA $0001
JSL L31E3
JSL L2EC1
LDA L2BD5
ORA L2BD7
BNE L2CA3
BRL L2D33
L2CA3 PEA $000D
_ErrWriteChar
PEA $000A
_ErrWriteChar
BRA L2CC6
L2CB9 STR ' Line Name'
L2CC6 PEA ^L2CB9
PEA L2CB9
_ErrWriteLine
BRA L2CE2
L2CD5 STR ' ---- ----'
L2CE2 PEA ^L2CD5
PEA L2CD5
_ErrWriteLine
L2CEF LDA L2BD5
ORA L2BD7
BEQ L2D33
LDA L2BD9
PHA
PEA $0006
PEA $0000
PEA $0001
JSL L31B3
BRA L2D0D
L2D0A STR ' '
L2D0D PEA ^L2D0A
PEA L2D0A
_ErrWriteString
PEA ^L2BDA
PEA L2BDA
PEA $0000
PEA $0001
PEA $0001
JSL L31E3
JSL L2EC1
BRA L2CEF
L2D33 LDA #$FFFF
BRL L2BE7
L2D39 PHD
PEA ^L2D63
PEA L2D63
TSC
TCD
LDX $0A
L2D44 DEX
BEQ L2D53
SEC
LDA [$01]
AND #$00FF
ADC $01
STA $01
BRA L2D44
L2D53 _ErrWriteLine
PLD
LDA $02,S
STA $04,S
PLA
STA $01,S
RTL
L2D63 STR 'Subrange exceeded'
STR 'File is not open'
STR 'Read while at end of file'
STR 'I/O error'
STR 'Out of memory'
STR 'EOLN while at end of file'
STR 'Set overflow'
STR 'Jump to undefined case statement label'
STR 'Integer math error'
STR 'Real math error'
STR 'Underflow'
STR 'Overflow'
STR 'Divide by zero'
STR 'Inexact'
STR 'Stack overflow'
L2E62 PHB
PHK
PLB
STZ L2EF2
STZ L2EF4
LDX #$0026
L2E6E STZ L2EF6,X
DEX
DEX
BPL L2E6E
PLB
RTL
L2E77 TDC
TAX
TSC
SEC
SBC #$FFFF
TCD
DEC
TCS
PHX
LDA $03
LSR
BCC L2E9D
SEP #$20
LDA [$05]
STA [$09]
REP #$20
INC $05
BNE L2E95
INC $07
L2E95 INC $09
BNE L2E9B
INC $0B
L2E9B DEC $03
L2E9D LDY $03
BEQ L2EB1
DEY
DEY
BEQ L2EAD
L2EA5 LDA [$05],Y
STA [$09],Y
DEY
DEY
BNE L2EA5
L2EAD LDA [$05]
STA [$09]
L2EB1 LDA $01
STA $0B
LDA $00
STA $0A
CLC
TDC
ADC #$0009
PLD
TCS
RTL
L2EC1 PHB
PHK
PLB
LDA L2BD7
STA $02
LDA L2BD5
STA $00
LDY #$0010
L2ED1 LDA [$00],Y
STA L2BD5,Y
DEY
DEY
BPL L2ED1
LDA $02
PHA
LDA $00
PHA
JSL L2F1E
PLB
RTL
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
L2EF2 DB $00
DB $00
L2EF4 DB $00
DB $00
L2EF6 DB $00
DB $00
L2EF8 DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
L2F1E TSC
PHD
TCD
LDY $04
LDX $06
SEC
TYA
SBC #$0002
STA $04
BCS L2F30
DEC $06
L2F30 LDA [$04]
BNE L2F3B
TYA
JSL L3039
BRA L2F40
L2F3B TYA
JSL L2F4C
L2F40 LDA $00
STA $04
LDA $02
STA $06
PLD
PLA
PLA
RTL
L2F4C PHA
PHA
PHA
SEC
SBC #$0004
BCS L2F56
DEX
L2F56 PHX
PHA
TSC
PHD
TCD
LDA [$01]
BPL L2F62
BRL L3031
L2F62 LDA [$01]
ORA #$8000
STA [$01]
LDY #$0002
LDA [$01],Y
STA $09
TAY
LDA $01
LDX $03
JSL L30AD
L2F79 LDA $09
CMP #$1000
BCC L2F83
BRL L301F
L2F83 LDA [$01]
AND $09
BEQ L2FDA
SEC
LDA $01
SBC $09
STA $05
LDA $03
SBC #$0000
STA $07
LDY #$0002
LDA [$05],Y
CMP $09
BEQ L2FA3
BRL L3031
L2FA3 LDA [$05]
BMI L2FAA
BRL L3031
L2FAA LDY $09
LDX $03
LDA $01
JSL L30D8
LDY $09
LDX $07
LDA $05
JSL L30D8
LDA $05
STA $01
LDA $07
STA $03
ASL $09
LDA $09
LDY #$0002
STA [$01],Y
TAY
LDA $01
LDX $03
JSL L30AD
BRA L2F79
L2FDA CLC
LDA $01
ADC $09
STA $05
LDA $03
ADC #$0000
STA $07
LDY #$0002
LDA [$05],Y
CMP $09
BNE L3031
LDA [$05]
BPL L3031
LDY $09
LDX $03
LDA $01
JSL L30D8
LDY $09
LDX $07
LDA $05
JSL L30D8
ASL $09
LDY #$0002
LDA $09
STA [$01],Y
LDY $09
LDA $01
LDX $03
JSL L30AD
BRL L2F79
L301F LDY $09
LDA $01
LDX $03
JSL L30D8
LDA $01
LDX $03
JSL L3039
L3031 PLD
TSC
CLC
ADC #$000A
TCS
RTL
L3039 PHA
PHA
SEC
SBC #$000E
BCS L3042
DEX
L3042 PHX
PHA
TSC
PHD
TCD
LDY #$0002
LDA [$01],Y
ORA [$01]
BNE L3063
LDY #$0004
LDA [$01],Y
STAL L2EF2
INY
INY
LDA [$01],Y
STAL L2EF4
BRA L3078
L3063 LDA [$01]
STA $05
LDA [$01],Y
STA $07
LDY #$0004
LDA [$01],Y
STA [$05],Y
INY
INY
LDA [$01],Y
STA [$05],Y
L3078 LDY #$0004
LDA [$01],Y
TAX
INY
INY
ORA [$01],Y
BEQ L3095
LDA [$01],Y
STA $07
STX $05
LDY #$0002
LDA [$01]
STA [$05]
LDA [$01],Y
STA [$05],Y
L3095 LDY #$000A
LDA [$01],Y
PHA
DEY
DEY
LDA [$01],Y
PHA
_DisposeHandle
PLD
PLA
PLA
PLA
PLA
RTL
L30AD PHX
PHA
TSC
PHD
TCD
TYA
JSL L3143
LDY #$0004
LDAL L2EF6,X
STA [$01],Y
INY
INY
LDAL L2EF8,X
STA [$01],Y
LDA $01
STAL L2EF6,X
LDA $03
STAL L2EF8,X
PLD
PLA
PLA
RTL
L30D8 PHX
PHA
LDA #$0000
PHA
PHA
PHA
PHA
TSC
PHD
TCD
TYA
JSL L3143
LDAL L2EF6,X
STA $05
LDAL L2EF8,X
STA $07
L30F5 LDA $05
CMP $09
BNE L3101
LDA $07
CMP $0B
BEQ L3118
L3101 LDA $05
STA $01
LDA $07
STA $03
LDY #$0004
LDA [$01],Y
STA $05
INY
INY
LDA [$01],Y
STA $07
BRA L30F5
L3118 LDY #$0004
LDA $01
ORA $02
BNE L3131
LDA [$05],Y
STAL L2EF6,X
INY
INY
LDA [$05],Y
STAL L2EF8,X
BRA L313B
L3131 LDA [$05],Y
STA [$01],Y
INY
INY
LDA [$05],Y
STA [$01],Y
L313B PLD
TSC
CLC
ADC #$000C
TCS
RTL
L3143 LDX #$0000
DEC
LSR
LSR
LSR
BEQ L3153
L314C INX
INX
INX
INX
LSR
BNE L314C
L3153 RTL
L3154 TAY
PHD
TSC
SEC
SBC #$0007
TCD
DEC
TCS
TYA
LDY #$0000
BIT #$8000
BEQ L316C
EOR #$FFFF
INC
INY
L316C STA $02
TXA
BPL L3176
DEY
EOR #$FFFF
INC
L3176 STA $04
STY $06
LDY #$0010
LDA #$0000
L3180 LSR $02
BCC L3187
CLC
ADC $04
L3187 ROR
ROR $00
DEY
BNE L3180
TAX
BNE L31A8
LDA $00
BMI L31A8
LDY $06
BEQ L319C
EOR #$FFFF
INC
L319C TAY
TDC
CLC
ADC #$0007
TCS
PLA
TCD
TYA
CLV
RTL
L31A8 TDC
CLC
ADC #$0007
TCS
PLA
TCD
SEP #$40
RTL
L31B3 TSC
PHD
TCD
PEA ^L323F
PEA L323F
LDA $0A
JSL L3228
PEA ^L323F
PEA L323F
LDA $08
PHA
LDA $06
PHA
LDA $04
PHA
JSL L31E3
LDA $02
STA $0A
LDA $00
STA $08
PLD
PLA
PLA
PLA
PLA
RTL
L31E3 TSC
PHD
TCD
INC $0A
BNE L31EC
INC $0C
L31EC LDA [$0A]
AND #$00FF
SEC
SBC $08
BPL L3200
EOR #$FFFF
INC
LDY $04
JSL L32DE
L3200 LDA $0C
PHA
LDA $0A
PHA
LDA $06
EOR #$0001
ASL
ORA $04
XBA
CLC
ADC #$1A0C
TAX
JSL $E10000
LDA $02
STA $0C
LDA $00
STA $0A
PLD
CLC
TSC
ADC #$000A
TCS
RTL
L3228 PHA
PEA ^L3269
PEA L3269
PEA $0028
PEA $0001
_Int2Dec
JMP L3291
L323F DB $28
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
L3269 DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
L3291 PHD
TSC
TCD
SEP #$20
LDX #$0000
LDA #$20
L329B CMPL L3269,X
BNE L32A4
INX
BRA L329B
L32A4 REP #$20
TXA
SEC
SBC #$0028
EOR #$FFFF
INC
SEP #$20
CMP [$06]
BEQ L32B7
BCS L32CE
L32B7 LDY #$0001
STA [$06],Y
L32BC LDAL L3269,X
INY
STA [$06],Y
INX
CPX #$0028
BCC L32BC
REP #$20
CLV
BRA L32D2
L32CE REP #$20
SEP #$40
L32D2 LDA $02,S
STA $06,S
LDA $04,S
STA $08,S
PLD
PLA
PLA
RTL
L32DE PHA
TYA
XBA
CLC
ADC #$180C
PHA
PHD
TSC
TCD
L32E9 PEA $0020
LDX $03
JSL $E10000
DEC $05
BNE L32E9
PLD
PLA
PLA
RTL