diff --git a/.DS_Store b/.DS_Store index b97f41a..4bf97e7 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/genesys/.DS_Store b/genesys/.DS_Store index 96e93f2..e9be3f9 100644 Binary files a/genesys/.DS_Store and b/genesys/.DS_Store differ diff --git a/genesys/GEMAIN.S b/genesys/GEMAIN.S index e1ab235..9b13cbf 100644 --- a/genesys/GEMAIN.S +++ b/genesys/GEMAIN.S @@ -63,6 +63,12 @@ GSOS EQU $E100A8 PHD PHK PLB + + lda #L02434C + stal $300 + lda #^L02434C + stal $302 + _TLStartUp PEA $0000 _TLVersion @@ -1465,12 +1471,19 @@ L020E54 PHD LDA #$2020 STA L02105D STA L02105D+2 + sta L02105D+4 PEA $0000 PEA $0000 PEA $0000 PEA $0000 - PEA $0000 - PEA $0000 + +* AV 202010 - Fixed the About bug +* It happened when users had more than 8MB + +* PEA $0000 +* PEA $0000 + pha + pha _RealFreeMem LDX #$2002 JSL L027D42 @@ -1481,7 +1494,7 @@ L020E54 PHD JSL L027D42 PEA ^L02105D PEA L02105D - PEA $0004 + PEA $0006 ; was 4 PEA $0000 _Long2Dec LDX #$2004 @@ -1653,7 +1666,7 @@ L021046 PHD copyBRUTAL str '(c) 2020, Brutal Deluxe' L02105B DW $0000 -L02105D ASC ' 0k free memory'00 +L02105D ASC ' 0k free memory'00 L02106F DW $0000 ; event code ADRL $00000000 ; event message ADRL $00000000 ; tick count @@ -13258,8 +13271,8 @@ strPRINTRECORD1 asc 'PRINTRECORD'00 strPRINTRECORD2 asc 'Print Record'00 strFONT1 asc 'FONT'00 strFONT2 asc 'Font'00 -strVERSIONS1 asc 'VERSIONS'00 -strVERSIONS2 asc 'Versions'00 +strVERSIONS1 asc 'UPDATEINFO'00 +strVERSIONS2 asc 'Update Info'00 L025F5A ASC 'rType $%0.4X'00 L025F67 ASC 'ICON'00 diff --git a/genesys/disks/genesys_v134_program.2mg b/genesys/disks/genesys_v134_program.2mg new file mode 100644 index 0000000..885645f Binary files /dev/null and b/genesys/disks/genesys_v134_program.2mg differ diff --git a/genesys/genesys_2020.po b/genesys/disks/genesys_v134_program.po similarity index 82% rename from genesys/genesys_2020.po rename to genesys/disks/genesys_v134_program.po index b15d900..8efffe0 100644 Binary files a/genesys/genesys_2020.po and b/genesys/disks/genesys_v134_program.po differ diff --git a/genesys/disks/genesys_v134_templates.2mg b/genesys/disks/genesys_v134_templates.2mg new file mode 100644 index 0000000..631246e Binary files /dev/null and b/genesys/disks/genesys_v134_templates.2mg differ diff --git a/genesys/disks/genesys_v134_templates.po b/genesys/disks/genesys_v134_templates.po new file mode 100644 index 0000000..328637e Binary files /dev/null and b/genesys/disks/genesys_v134_templates.po differ diff --git a/genesys/edit/MAKE.VERSIONS.S b/genesys/edit/MAKE.VERSIONS.S new file mode 100644 index 0000000..66e7704 --- /dev/null +++ b/genesys/edit/MAKE.VERSIONS.S @@ -0,0 +1,19 @@ +* +* Genesys v1.2.4 +* Make versions +* + +* Expansion linker file + + DSK Versions + TYP $BC + +* Assemble files + + XPL + + ASM VERSIONS.S + KND $0000 + SNA Versions + + diff --git a/genesys/edit/TOOLTABLE.S b/genesys/edit/TOOLTABLE.S index 8abc190..6c079e7 100644 --- a/genesys/edit/TOOLTABLE.S +++ b/genesys/edit/TOOLTABLE.S @@ -22,15 +22,23 @@ 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 L2842 + STA ptrBUFFER LDA $06,S - STA L2842+2 - JMPL L23D1 + STA ptrBUFFER+2 + JMPL entryPOINT -L000E PHD +*--- Show my editor window + +showWINDOW + PHD PHB PHK PLB @@ -40,33 +48,33 @@ L000E PHD PEA $0000 PEA $0000 PEA $0000 - PEA ^L0788 - PEA L0788 + PEA ^refreshWINDOW + PEA refreshWINDOW PEA $0000 PEA $0000 PEA $0000 - PEA ^L072E - PEA L072E + PEA ^myWINDOW + PEA myWINDOW PEA $800E _NewWindow2 PLA - STA L2852 + STA haWINDOW PLA - STA L2852+2 - LDA L2852+2 + STA haWINDOW+2 + LDA haWINDOW+2 PHA - LDA L2852 + LDA haWINDOW PHA _SetPort PEA $0000 PEA $0000 - LDA L2852+2 + LDA haWINDOW+2 PHA - LDA L2852 + LDA haWINDOW PHA PEA $0003 - PEA ^L007D - PEA L007D + PEA ^ctlWINDOW + PEA ctlWINDOW _NewControl2 PLA PLA @@ -74,7 +82,8 @@ L000E PHD PLD RTL -L007D ADRL L010D +ctlWINDOW + ADRL L010D ADRL L012D ADRL L014D ADRL L016D @@ -569,7 +578,7 @@ L0705 STR 'Memory manager' L0714 STR 'Tool locator' L0721 STR ' Tool Table ' -L072E DW $0050 +myWINDOW DW $0050 DW $C080 ; frame bits ADRL L0721 ; title ptr ADRL $00000000 ; refcon @@ -607,13 +616,16 @@ L077E DW $0000 DW $F0FF DW $00F0 -L0788 PHD +*--- Refresh window + +refreshWINDOW + PHD PHB PHK PLB PEA $0000 _GetCurResourceFile - LDA L2848 + LDA resfileID PHA _SetCurResourceFile PEA $0000 @@ -634,7 +646,10 @@ L0788 PHD BRK $69 RTL -L07DC TSC +*--- Write the resource + +writeRESOURCE + TSC SEC SBC #$001A TCS @@ -691,8 +706,11 @@ L07DC TSC LDA L2BCB BNE L0859 BRL L0896 -L0859 LDX #^L299A - LDA #L299A + +* Cannot write resource + +L0859 LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -701,14 +719,14 @@ L0859 LDX #^L299A PEA L08E8 LDA #$0044 PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -716,6 +734,9 @@ L0859 LDX #^L299A PLA BEQ L0896 BRL L0896 + +* Resource is written + L0896 LDA $16 PHA LDA $21 @@ -756,9 +777,12 @@ L0896 LDA $16 TCS RTL -L08E8 ASC '52~Tool editor: Resource write error. Re' - ASC 'source possibly damaged.~^#0' -L092C TSC +L08E8 ASC '52~Tool editor: Resource write error. Resource possibly damaged.~^#0' + +*--- Load a resource + +readRESOURCE + TSC SEC SBC #$0028 TCS @@ -780,6 +804,9 @@ L092C TSC BNE L0959 BRL L095C L0959 BRL L0A27 + +* File depth search failed + L095C LDA #$0001 EOR #$FFFF INC @@ -807,6 +834,9 @@ L095C LDA #$0001 BNE L0996 BRL L0999 L0996 BRL L0A27 + +* Getting resource attributes failed + L0999 LDA $24 AND #$0020 PHA @@ -822,6 +852,9 @@ L0999 LDA $24 BNE L09BA BRL L09BD L09BA BRL L0A27 + +* Setting bit 5 failed + L09BD PHA PHA LDA $2F @@ -840,6 +873,9 @@ L09BD PHA BNE L09E0 BRL L09E3 L09E0 BRL L0A27 + +* Resource exists + L09E3 LDX $22 LDA $20 PHX @@ -850,6 +886,9 @@ L09E3 LDX $22 BNE L09FB BRL L09FE L09FB BRL L0A27 + +* memory lock failed + L09FE LDA $24 PHA LDA $2F @@ -864,10 +903,14 @@ L09FE LDA $24 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 @@ -889,7 +932,10 @@ L0A27 PHA TYA RTL -L0A4D TSC +*--- + +makeSTDRESOURCE + TSC SEC SBC #$0028 TCS @@ -904,15 +950,18 @@ L0A4D TSC LDA $2B PHX PHA - JSL L092C + JSL readRESOURCE STX $22 STA $20 LDA $20 ORA $22 BEQ L0A75 BRL L0AB5 -L0A75 LDX #^L299A - LDA #L299A + +* Cannot load resource + +L0A75 LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -921,14 +970,14 @@ L0A75 LDX #^L299A PEA L0D79 LDA #$003B PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -937,13 +986,16 @@ L0A75 LDX #^L299A BEQ L0AB2 BRL L0AB2 L0AB2 BRL L0D66 + +* Resource is loaded + L0AB5 LDX $22 LDA $20 PHX PHA _HUnlock STA L2BCB - LDA #$0054 + LDA #sizeSTDREC LDX #$0000 TAY BPL L0ACF @@ -959,8 +1011,11 @@ L0ACF PHX LDA L2BCB BNE L0AE9 BRL L0B67 -L0AE9 LDX #^L299A - LDA #L299A + +* Cannot resize handle + +L0AE9 LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -969,7 +1024,7 @@ L0AE9 LDX #^L299A PEA L0DB4 LDA #$003B PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0001 PHA @@ -1001,8 +1056,8 @@ L0AE9 LDX #^L299A PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1011,19 +1066,26 @@ L0AE9 LDX #^L299A BEQ L0B64 BRL L0B64 L0B64 BRL L0D66 + +* Handle is resized + L0B67 LDX $22 LDA $20 PHX PHA _HLock STA L2BCB - LDY #$0002 + +* Now, we init a blank resource + + LDY #$0002 ; get the pointer LDA [$20],Y TAX LDA [$20] STX $08 STA $06 - LDA #$0000 + + LDA #$0000 ; format the header STA [$06] LDY #$0002 LDA #$C080 @@ -1041,7 +1103,8 @@ L0B67 LDX $22 LDY #$000A LDA #$0012 STA [$06],Y - LDY #$000C + + LDY #$000C ; format the toolrec PHY LDA #$0001 DEC @@ -1259,6 +1322,7 @@ L0B67 LDX $22 STA [$06],Y LDA #$0001 STA $26 + L0D2E LDY #$000C PHY LDA $26 @@ -1280,13 +1344,14 @@ L0D2E LDY #$000C CMP #$0013 BEQ L0D54 BRL L0D2E + L0D54 LDA $2F PHA LDX $2D LDA $2B PHX PHA - JSL L07DC + JSL writeRESOURCE LDA #$0000 STA $16 L0D66 LDA $29 @@ -1302,73 +1367,76 @@ L0D66 LDA $29 TXA RTL -L0D79 ASC '52~Tool editor: Resource load error. Ope' - ASC 'ration aborted.~^#0' -L0DB4 ASC '52~Tool editor: Memory resize error. Ope' - ASC 'ration aborted.~^#0' -L0DEF TSC +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 L2842+2 + LDA ptrBUFFER+2 PHA - LDA L2842 + LDA ptrBUFFER PHA PLA CLC ADC #$0048 PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$0048 + LDY #$0048 ; flag LDA [$00],Y - ORA #$6000 + ORA #$6000 ; bits 14-13 PLX STX $00 PLX STX $02 STA [$00] - LDA L2842+2 + LDA ptrBUFFER+2 PHA - LDA L2842 + LDA ptrBUFFER PHA PLA CLC ADC #$0050 PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$0036 - LDA [$00],Y + LDY #$0036 ; move resource type + LDA [$00],Y ; from offset $36 PLX STX $00 PLX STX $02 - STA [$00] - LDX L2842+2 - LDA L2842 + STA [$00] ; to offset $50 + + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$003A - LDA [$00],Y + LDY #$003A ; move resource ID + LDA [$00],Y ; from offset $3A PHA LDY #$0038 LDA [$00],Y PHA - LDA L2842+2 + LDA ptrBUFFER+2 PHA - LDA L2842 + LDA ptrBUFFER PHA PLA CLC - ADC #$0052 + ADC #$0052 ; to offset $52 PHA PLA STA $00 @@ -1379,6 +1447,7 @@ L0DEF TSC LDY #$0002 PLA STA [$00],Y + PLD TSC CLC @@ -1386,6 +1455,8 @@ L0DEF TSC TCS RTL +*--- + L0E80 TSC SEC SBC #$0026 @@ -1413,11 +1484,11 @@ L0E93 PHX DEX L0EA7 PHX PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$003C + LDY #$003C ; memID LDA [$00],Y PHA LDA #$8000 @@ -1432,14 +1503,14 @@ L0EC7 PHX _NewHandle STA L2BCB PLA - STA L284E + STA haMEMORY2 PLA - STA L284E+2 + STA haMEMORY2+2 LDA L2BCB BNE L0EE3 BRL L0F23 -L0EE3 LDX #^L299A - LDA #L299A +L0EE3 LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -1448,14 +1519,14 @@ L0EE3 LDX #^L299A PEA L119F LDA #$003C PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1474,14 +1545,14 @@ L0F23 PHA LDA L2BCB BNE L0F3D BRL L0F8F -L0F3D LDX L284E+2 - LDA L284E +L0F3D LDX haMEMORY2+2 + LDA haMEMORY2 PHX PHA _DisposeHandle STA L2BCB - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -1490,14 +1561,14 @@ L0F3D LDX L284E+2 PEA L11DB LDA #$0036 PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1510,8 +1581,8 @@ L0F8F PHA PHA LDA #$FFFF PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 @@ -1526,14 +1597,14 @@ L0F8F PHA LDA L2BCB BNE L0FBD BRL L100F -L0FBD LDX L284E+2 - LDA L284E +L0FBD LDX haMEMORY2+2 + LDA haMEMORY2 PHX PHA _DisposeHandle STA L2BCB - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -1542,14 +1613,14 @@ L0FBD LDX L284E+2 PEA L1211 LDA #$0037 PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1558,14 +1629,14 @@ L0FBD LDX L284E+2 BEQ L100C BRL L100C L100C BRL L1141 -L100F LDX L284E+2 - LDA L284E +L100F LDX haMEMORY2+2 + LDA haMEMORY2 PHX PHA LDA #$0000 PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 @@ -1580,14 +1651,14 @@ L100F LDX L284E+2 LDA L2BCB BNE L1043 BRL L10A3 -L1043 LDX L284E+2 - LDA L284E +L1043 LDX haMEMORY2+2 + LDA haMEMORY2 PHX PHA _DisposeHandle STA L2BCB - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -1596,14 +1667,14 @@ L1043 LDX L284E+2 PEA L1248 LDA #$0043 PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1619,8 +1690,8 @@ L1092 LDA #$0000 L109C STX $24 STA $22 BRL L1141 -L10A3 LDX L2842+2 - LDA L2842 +L10A3 LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 @@ -1635,8 +1706,8 @@ L10A3 LDX L2842+2 LDA L2BCB BNE L10CB BRL L1119 -L10CB LDX #^L299A - LDA #L299A +L10CB LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 @@ -1645,14 +1716,14 @@ L10CB LDX #^L299A PEA L128B LDA #$003F PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1672,8 +1743,8 @@ L1119 LDA #$0001 EOR #$FFFF INC PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 @@ -1702,8 +1773,8 @@ L115C CMP $22 CPX $24 L1162 BNE L1167 BRL L1192 -L1167 LDX L2842+2 - LDA L2842 +L1167 LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 @@ -1713,7 +1784,7 @@ L1167 LDX L2842+2 LDA $22 PHX PHA - JSL L0A4D + JSL makeSTDRESOURCE TAX BNE L1187 BRL L118A @@ -1732,26 +1803,23 @@ L1192 LDX $18 TYA RTL -L119F ASC '52~Tool editor: Memory creation error. C' - ASC 'reation aborted.~^#0' -L11DB ASC '52~Tool editor: Depth get error. Creatio' - ASC 'n aborted.~^#0' -L1211 ASC '52~Tool editor: Could not get ID. Creati' - ASC 'on aborted.~^#0' -L1248 ASC '52~Tool editor: Could not add resource e' - ASC 'rror. Creation aborted.~^#0' -L128B ASC '52~Tool editor: Could not write resource' - ASC '. Creation aborted.~^#0' +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' -L12CA TSC +*--- + +createRESOURCE TSC SEC SBC #$0020 TCS PHD INC TCD - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0048 @@ -1765,31 +1833,34 @@ L12EA LDA $2B LDA $27 PHX PHA - JSL L092C + JSL readRESOURCE ; load resource STX $18 STA $16 - LDA $16 + LDA $16 ; check handle ORA $18 - BEQ L1304 - BRL L1344 -L1304 LDX #^L299A - LDA #L299A + 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 + PEA ^L1939 ; cannot load resource PEA L1939 LDA #$003F PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1798,13 +1869,16 @@ L1304 LDX #^L299A BEQ L1341 BRL L1341 L1341 BRL L1929 + +* Resource is loaded + L1344 LDX $18 LDA $16 PHX PHA _HUnlock STA L2BCB - LDA #$0084 + LDA #sizeFULLREC LDX #$0000 TAY BPL L135E @@ -1820,6 +1894,9 @@ L135E PHX LDA L2BCB BNE L1378 BRL L13F6 + +* Resource cannot be resized, display error + L1378 PHA LDA #$0001 PHA @@ -1846,24 +1923,24 @@ L1378 PHA STA L2BCB PLA STA $1E - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 PHA - PEA ^L1978 + PEA ^L1978 ; cannot resize resource PEA L1978 LDA #$0041 PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -1872,12 +1949,18 @@ L1378 PHA 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 @@ -1955,7 +2038,7 @@ L1442 LDA $1C DEC ASL TAX - LDA L2856,X + LDA theTOOLREC,X PLX STX $00 PLX @@ -1966,6 +2049,7 @@ L149C INC $1A CMP #$000D BEQ L14A8 BRL L1410 + L14A8 LDA #$000E STA $1A L14AD PHA @@ -2041,7 +2125,7 @@ L14DF LDA $1C DEC ASL TAX - LDA L2856,X + LDA theTOOLREC,X PLX STX $00 PLX @@ -2127,7 +2211,7 @@ L157C LDA $1C DEC ASL TAX - LDA L2856,X + LDA theTOOLREC,X PLX STX $00 PLX @@ -2135,7 +2219,7 @@ L157C LDA $1C STA [$00] L15D6 INC $1A LDA $1A - CMP #$001F + CMP #$001F ; number of entries supported BEQ L15E2 BRL L154A L15E2 PHA @@ -2209,7 +2293,7 @@ L1611 LDA $1C DEC ASL TAX - LDA L2856,X + LDA theTOOLREC,X PLX STX $00 PLX @@ -2286,13 +2370,14 @@ L169C LDA $1C DEC ASL TAX - LDA L2856,X + LDA theTOOLREC,X PLX STX $00 PLX STX $02 STA [$00] -L16F8 LDY #$0002 + +L16F8 LDY #$0002 ; +0A - numTools LDA [$16],Y TAX LDA [$16] @@ -2302,7 +2387,8 @@ L16F8 LDY #$0002 STX $02 LDA $1C STA [$00] - LDY #$0002 + + LDY #$0002 ; +02 - videoMode for 0 LDA [$16],Y TAX LDA [$16] @@ -2312,7 +2398,8 @@ L16F8 LDY #$0002 STX $02 LDA #$0000 STA [$00] - PHA + + PHA ; +02 - videoMode for bit 14 PHA PHA LDX $25 @@ -2343,7 +2430,8 @@ L1750 LDY #$0002 STX $02 LDA #$4000 STA [$00] -L1765 PHA + +L1765 PHA ; +02 - videoMode for bit 15 PHA PHA LDX $25 @@ -2364,6 +2452,7 @@ L1778 PHX PLA BNE L1794 BRL L17BF + L1794 LDY #$0002 LDA [$16],Y PHA @@ -2387,7 +2476,8 @@ L1794 LDY #$0002 PLX STX $02 STA [$00] -L17BF PHA + +L17BF PHA ; +02 - videoMode for bit 7 PHA PHA LDX $25 @@ -2408,6 +2498,7 @@ L17D2 PHX PLA BNE L17EE BRL L1819 + L17EE LDY #$0002 LDA [$16],Y PHA @@ -2431,7 +2522,8 @@ L17EE LDY #$0002 PLX STX $02 STA [$00] -L1819 LDY #$0002 + +L1819 LDY #$0002 ; +04 - resFileID LDA [$16],Y TAX LDA [$16] @@ -2441,7 +2533,8 @@ L1819 LDY #$0002 STX $02 LDA #$0000 STA [$00] - LDY #$0002 + + LDY #$0002 ; +06 - dPageHandle LDA [$16],Y PHA LDA [$16] @@ -2459,17 +2552,18 @@ L1819 LDY #$0002 LDY #$0002 LDA #$0000 STA [$00],Y + LDX $18 LDA $16 PHX PHA _HUnlock STA L2BCB - LDA $1C - LDX #$0004 + LDA $1C ; number of entries + LDX #$0004 ; x 4 JSL L3154 CLC - ADC #$000C + ADC #sizeHEADER ; + header LDX #$0000 TAY BPL L1874 @@ -2485,6 +2579,9 @@ L1874 PHX LDA L2BCB BNE L188E BRL L190C + +* Memory handle cannot be resized, display error + L188E PHA LDA #$0001 PHA @@ -2511,24 +2608,24 @@ L188E PHA STA L2BCB PLA STA $1E - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 PHA - PEA ^L19B9 + PEA ^L19B9 ; cannot resize handle PEA L19B9 LDA #$003F PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -2537,19 +2634,24 @@ L188E PHA 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 L07DC + JSL writeRESOURCE + L1929 LDA $21 STA $2B LDA $20 @@ -2561,13 +2663,13 @@ L1929 LDA $21 TCS RTL -L1939 ASC '52~Tool editor: Could not load resource.' - ASC ' Changes not saved.~^#0' -L1978 ASC '52~Tool editor: Could not resize resourc' - ASC 'e. Changes not saved.~^#0' -L19B9 ASC '52~Tool editor: Could not resize handle.' - ASC ' Changes not saved.~^#0' -L19F8 TSC +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 @@ -2582,8 +2684,8 @@ L1A0B LDA #$0000 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$0000 @@ -2610,8 +2712,8 @@ L1A4D LDA #$0000 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$0000 @@ -2638,8 +2740,8 @@ L1A8F LDA #$0000 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$0000 @@ -2664,8 +2766,8 @@ L1ACC LDA #$0000 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$0020 @@ -2683,8 +2785,8 @@ L1AE4 PHX PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$0022 @@ -2702,8 +2804,8 @@ L1B12 PHX PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$1001 @@ -2721,8 +2823,8 @@ L1B40 PHX PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$1002 @@ -2736,15 +2838,15 @@ L1B6E PHX STA L2BCB _SetCtlValue STA L2BCB - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 LDA [$00],Y PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$003A @@ -2754,31 +2856,31 @@ L1B6E PHX LDA [$00],Y PHX PHA - JSL L092C + JSL readRESOURCE STX $22 STA $20 LDA $20 ORA $22 BEQ L1BBC BRL L1BFC -L1BBC LDX #^L299A - LDA #L299A +L1BBC LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 PHA - PEA ^L1DCF + PEA ^L1DCF ; cannot load resource PEA L1DCF LDA #$003D PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -2808,8 +2910,8 @@ L1C25 LDA #$0001 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$1002 @@ -2832,8 +2934,8 @@ L1C60 LDA #$0001 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$1001 @@ -2856,8 +2958,8 @@ L1C9B LDA #$0001 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$0640 @@ -2876,8 +2978,8 @@ L1CCC LDA #$0001 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDA #$0320 @@ -2907,8 +3009,8 @@ L1D15 LDA #$0001 PHA PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA LDY #$000C @@ -2953,15 +3055,15 @@ L1D68 PHA EOR #$FFFF INC PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 LDA [$00],Y PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$003A @@ -2989,80 +3091,86 @@ L1D68 PHA TXA RTL -L1DCF ASC '52~Tool editor: Could not load resource.' - ASC ' Setting aborted.~^#0' -L1E0C TSC +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 + + PHA ; space for result PHA LDA #$000C LDX #$0000 TAY BPL L1E21 DEX -L1E21 PHX +L1E21 PHX ; size of block to create PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$003C LDA [$00],Y - PHA - LDA #$8000 + PHA ; memory ID + LDA #$8000 ; locked CLC - ADC #$4000 - PHA + ADC #$4000 ; fixed + PHA ; attributes LDA #$0000 LDX #$0000 TAY BPL L1E45 DEX -L1E45 PHX +L1E45 PHX ; locationPtr PHA _NewHandle STA L2BCB PLA - STA L284A + STA haMEMORY PLA - STA L284A+2 + STA haMEMORY+2 LDA L2BCB BNE L1E61 BRL L1EBC -L1E61 LDA L2846 + +* Memmory error + +L1E61 LDA busyFLAG BEQ L1E69 BRL L1E7C -L1E69 LDX L2842+2 - LDA L2842 +L1E69 LDX ptrBUFFER+2 + LDA ptrBUFFER CLC ADC #$0036 STA $00 STX $02 LDA #$0000 STA [$00] -L1E7C LDX #^L299A - LDA #L299A +L1E7C LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 PHA - PEA ^L2054 + PEA ^L2054 ; cannot open window PEA L2054 LDA #$0035 PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -3071,34 +3179,38 @@ L1E7C LDX #^L299A BEQ L1EB9 BRL L1EB9 L1EB9 BRL L204C -L1EBC LDX L284A+2 - LDA L284A + +* Memory is allocated + +L1EBC LDX haMEMORY+2 ; deref + LDA haMEMORY STA $00 STX $02 LDY #$0002 LDA [$00],Y TAX LDA [$00] - STX $08 + STX $08 ; save pointer STA $06 PEI $08 PEI $06 - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$0036 + LDY #$0036 ; get supported resource type LDA [$00],Y PLX STX $00 PLX STX $02 - STA [$00] - LDX L2842+2 - LDA L2842 + STA [$00] ; +00 word - save supported resource type to newly allocated buffer + + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$003A + LDY #$003A ; +02 long - source window pointer LDA [$00],Y PHA LDY #$0038 @@ -3111,56 +3223,67 @@ L1EBC LDX L284A+2 INY PLA STA [$06],Y - LDY #$0006 + + LDY #$0006 ; +06 word - zero LDA #$0000 STA [$06],Y + PHA PHA _FrontWindow STA L2BCB - LDY #$0008 + LDY #$0008 ; +08 long - front window pointer PLA STA [$06],Y INY INY PLA STA [$06],Y - JSL L000E - LDX L2852+2 - LDA L2852 + + JSL showWINDOW ; show my new window + + LDX haWINDOW+2 + LDA haWINDOW PHX PHA _SetPort STA L2BCB - JSL L19F8 + + JSL initWINCONTROLS TAX BNE L1F4D BRL L1F74 -L1F4D LDX L284A+2 - LDA L284A + +* Error at init + +L1F4D LDX haMEMORY+2 + LDA haMEMORY PHX PHA _DisposeHandle STA L2BCB - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA _CloseWindow STA L2BCB BRL L204C -L1F74 LDA L283E + +* No errors, we're good + +L1F74 LDA YCOORD CLC ADC #$000A - STA L283E - LDA L2840 + STA YCOORD + LDA xCOORD CLC ADC #$001E - STA L2840 + STA xCOORD LDA #$001E LDX #$0001 SEC - SBC L283E + SBC YCOORD BEQ L1F9B BVS L1F99 EOR #$8000 @@ -3168,7 +3291,7 @@ L1F99 BMI L1F9C L1F9B DEX L1F9C TXA PHA - LDA L283E + LDA YCOORD LDX #$0001 SEC SBC #$0050 @@ -3184,11 +3307,11 @@ L1FB2 TXA BNE L1FBC BRL L1FC2 L1FBC LDA #$001E - STA L283E + STA YCOORD L1FC2 LDA #$001E LDX #$0001 SEC - SBC L2840 + SBC xCOORD BEQ L1FD5 BVS L1FD3 EOR #$8000 @@ -3196,7 +3319,7 @@ L1FD3 BMI L1FD6 L1FD5 DEX L1FD6 TXA PHA - LDA L2840 + LDA xCOORD LDX #$0001 SEC SBC #$00B4 @@ -3212,37 +3335,39 @@ L1FEC TXA BNE L1FF6 BRL L1FFC L1FF6 LDA #$001E - STA L2840 -L1FFC LDA L2840 + STA xCOORD +L1FFC LDA xCOORD ; X-coord PHA - LDA L283E + LDA YCOORD ; Y-coord PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA _MoveWindow STA L2BCB - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA _ShowWindow STA L2BCB - LDX L284A+2 - LDA L284A + + LDX haMEMORY+2 ; associate the newly allocated buffer + LDA haMEMORY ; to the refcon of the window PHX PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA _SetWRefCon STA L2BCB - LDA L2846 + + LDA busyFLAG ; set the busy flag CLC ADC #$0001 - STA L2846 + STA busyFLAG L204C PLD TSC CLC @@ -3252,7 +3377,7 @@ L204C PLD L2054 ASC '52~Tool editor: Memory error. Cannot open window.~^#0' -L2089 TSC +getFRONTWINDOW TSC SEC SBC #$0016 TCS @@ -3264,27 +3389,27 @@ L2089 TSC _FrontWindow STA L2BCB PLA - STA L2852 + STA haWINDOW PLA - STA L2852+2 - LDX L2852+2 - LDA L2852 + STA haWINDOW+2 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA _SetPort STA L2BCB PHA PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA _GetWRefCon STA L2BCB PLA - STA L284A + STA haMEMORY PLA - STA L284A+2 + STA haMEMORY+2 PLD TSC CLC @@ -3292,22 +3417,24 @@ L2089 TSC TCS RTL -L20DC TSC +*--- Create a resource and dispose memory + +createDISPOSE TSC SEC SBC #$001A TCS PHD INC TCD - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$0036 + LDY #$0036 ; supported resource type LDA [$00],Y PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$003A @@ -3317,21 +3444,23 @@ L20DC TSC LDA [$00],Y PHX PHA - LDX L2852+2 - LDA L2852 + LDX haWINDOW+2 + LDA haWINDOW PHX PHA - JSL L12CA - LDX L2852+2 - LDA L2852 + JSL createRESOURCE + + LDX haWINDOW+2 ; close the window + LDA haWINDOW PHX PHA _CloseWindow STA L2BCB + PHA PHA - LDX L284A+2 - LDA L284A + LDX haMEMORY+2 + LDA haMEMORY STA $00 STX $02 LDY #$0002 @@ -3349,24 +3478,27 @@ L20DC TSC LDA L2BCB BNE L2158 BRL L2198 -L2158 LDX #^L299A - LDA #L299A + +* Handle not found + +L2158 LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 PHA - PEA ^L2213 - PEA L2213 + PEA ^L2213 ; memory location error + PEA L2213 ; ie. cannot find handle LDA #$003F PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -3375,6 +3507,9 @@ L2158 LDX #^L299A BEQ L2195 BRL L2195 L2195 BRL L21ED + +* Handle found, dispose it + L2198 LDX $18 LDA $16 PHX @@ -3384,24 +3519,27 @@ L2198 LDX $18 LDA L2BCB BNE L21B0 BRL L21ED -L21B0 LDX #^L299A - LDA #L299A + +* Dispose failed + +L21B0 LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA LDA #$0100 PHA - PEA ^L2252 + PEA ^L2252 ; memory disposal error PEA L2252 LDA #$003E PHA - JSL L2A9A + JSL copyDATA PHA LDA #$0000 PHA PEA $0000 PEA $0000 - LDX #^L299A - LDA #L299A + LDX #^myBUFFER2 + LDA #myBUFFER2 PHX PHA _AlertWindow @@ -3409,18 +3547,21 @@ L21B0 LDX #^L299A PLA BEQ L21ED BRL L21ED -L21ED LDA L2846 + +* Dispose succeeded + +L21ED LDA busyFLAG ; busy flag SEC SBC #$0001 - STA L2846 - LDA L283E + STA busyFLAG + LDA YCOORD SEC SBC #$000A - STA L283E - LDA L2840 + STA YCOORD + LDA xCOORD SEC SBC #$001E - STA L2840 + STA xCOORD PLD TSC CLC @@ -3440,8 +3581,8 @@ L2290 TSC TCD PHA PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0012 @@ -3457,8 +3598,8 @@ L2290 TSC STA $16 PLA STA $18 - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$000E @@ -3487,8 +3628,8 @@ L22D9 LDY #$0002 LDA [$00],Y PHX PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0012 @@ -3498,7 +3639,7 @@ L22D9 LDY #$0002 LDA [$00],Y PHX PHA - JSL L12CA + JSL createRESOURCE L231C PLD TSC CLC @@ -3506,7 +3647,10 @@ L231C PLD TCS RTL -L2324 TSC +*--- Handle control click + +doCONTROL + TSC SEC SBC #$0018 TCS @@ -3514,11 +3658,11 @@ L2324 TSC INC TCD PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$0028 + LDY #$0028 ; which control ID? LDA [$00],Y TAX LDY #$0026 @@ -3532,16 +3676,19 @@ L2324 TSC LDA $16 BNE L2359 BRL L2381 -L2359 LDA L2842+2 + +* Control ID exists + +L2359 LDA ptrBUFFER+2 PHA - LDA L2842 + LDA ptrBUFFER PHA PLA CLC ADC #$0048 PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0048 @@ -3552,19 +3699,23 @@ L2359 LDA L2842+2 PLX STX $02 STA [$00] -L2381 LDA $16 + +L2381 LDA $16 ; check the preferred button CMP #$1000 BEQ L238B BRL L23C9 -L238B LDX L2842+2 - LDA L2842 + +* OK, make a preferred resource then + +L238B LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0036 LDA [$00],Y PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$003A @@ -3574,15 +3725,19 @@ L238B LDX L2842+2 LDA [$00],Y PHX PHA - JSL L0A4D + JSL makeSTDRESOURCE TAX BNE L23BC BRL L23BF L23BC BRL L23C9 -L23BF JSL L19F8 + +* init the controls + +L23BF JSL initWINCONTROLS TAX BNE L23C9 BRL L23C9 + L23C9 PLD TSC CLC @@ -3592,35 +3747,37 @@ L23C9 PLD *--- Tool Table editor: entry point -L23D1 TSC +entryPOINT + TSC SEC SBC #$0020 TCS PHD INC TCD - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$004E + LDY #$004E ; get resource file ID LDA [$00],Y - STA L2848 - LDX L2842+2 - LDA L2842 + STA resfileID + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$003E + LDY #$003E ; get command LDA [$00],Y BRL L27E6 -*--- Command 0 +*--- Command 0 - Prepare me -L23FE LDX L2842+2 - LDA L2842 +doCOMMAND0 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$003A + LDY #$003A ; is window open? LDA [$00],Y PHA LDY #$0038 @@ -3632,29 +3789,32 @@ L23FE LDX L2842+2 BPL L241E DEX L241E LDY #$0001 - CMP $01,S - BEQ L2426 - DEY + CMP $01,S ; buffer+$38 = $0000? + BEQ L2426 ; yes + DEY ; no L2426 TXA - CMP $03,S - BEQ L242E - LDY #$0000 + CMP $03,S ; buffer+$3a = $0000? + BEQ L242E ; yes + LDY #$0000 ; no L242E PLA PLA TYA - BNE L2436 - BRL L24DE -L2436 JSL L0E80 + 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 L2842+2 + LDA ptrBUFFER+2 PHA - LDA L2842 + LDA ptrBUFFER PHA PLA CLC - ADC #$0038 - PHA + ADC #$0038 ; save the window/resource handle + PHA ; at buffer + $38 PLA STA $00 PLA @@ -3664,11 +3824,12 @@ L2436 JSL L0E80 LDY #$0002 PLA STA [$00],Y - LDX L2842+2 - LDA L2842 + + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$003A + LDY #$003A ; check emptiness of window/resource ID LDA [$00],Y PHA LDY #$0038 @@ -3692,29 +3853,39 @@ L2489 PLA TYA BNE L2491 BRL L24B2 -L2491 LDA L2846 + +* we have no window/resource ID + +L2491 LDA busyFLAG ; are we busy? BEQ L2499 - BRL L24AC -L2499 LDX L2842+2 - LDA L2842 + BRL L24AC ; we are busy + +* We're not busy + +L2499 LDX ptrBUFFER+2 + LDA ptrBUFFER CLC - ADC #$0036 - STA $00 + ADC #$0036 ; we have nothing + STA $00 ; tell no resource type as well STX $02 LDA #$0000 STA [$00] -L24AC BRL L24E2 + +L24AC BRL L24E2 ; exit editor BRL L24DE -L24B2 LDA L2842+2 + +* window/resource exists + +L24B2 LDA ptrBUFFER+2 PHA - LDA L2842 + LDA ptrBUFFER PHA PLA CLC ADC #$0048 PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 LDY #$0048 @@ -3725,70 +3896,83 @@ L24B2 LDA L2842+2 PLX STX $02 STA [$00] - JSL L0DEF -L24DE JSL L1E0C -L24E2 BRL L280E + JSL updateBUFFER + +L24DE JSL prepareWINDOW ; no active window +L24E2 BRL exitEDITOR -*--- Command 1 +*--- Command 1 - Return name of the editor -L24E5 LDX #^L289A - LDA #L289A +doCOMMAND1 + LDX #^myBUFFER1 ; return the name of the editor + LDA #myBUFFER1 ; at buffer offset $2E PHX PHA LDA #$FF01 PHA - PEA ^L281E - PEA L281E - LDA #$0016 + PEA ^strEDITOR + PEA strEDITOR + LDA strEDITOR2-strEDITOR ; length of string PHA - JSL L2A9A - PEA ^L289A - PEA L289A - LDA L2842+2 - PHA - LDA L2842 - PHA - PLA + 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 - PLA + PHA ; 3 + PLA ; 3 STA $00 - PLA + PLA ; 2 STA $02 - PLA + PLA ; 1 STA [$00] LDY #$0002 - PLA + PLA ; 0 STA [$00],Y - BRL L280E + BRL exitEDITOR -*--- Command 2 +*--- Command 2 - Interact with window -L2525 LDX L2842+2 - LDA L2842 +doCOMMAND2 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$004A + LDY #$004A ; TaskMaster result LDA [$00],Y - CMP #$0008 + CMP #$0008 ; activateEvent BEQ L253C BRL L2543 -L253C JSL L2290 + +L253C JSL L2290 ; get the refcon BRL L259E -L2543 JSL L2089 - LDX L2842+2 - LDA L2842 + +L2543 JSL getFRONTWINDOW + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$004A + LDY #$004A ; TaskMaster result LDA [$00],Y BRL L256A -L2559 JSL L20DC - BRL L259E -L2560 JSL L2324 - BRL L259E -L2567 BRL L259E + +* 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 @@ -3803,50 +3987,52 @@ L2576 ASL L2580 JSL L2C09 -L2584 DA L2559-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2567-1 - DA L2560-1 - DA L2567-1 +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 L280E +L259E BRL exitEDITOR -*--- Command 3 +*--- Command 3 - The init command -L25A1 LDA #$0000 - STA L283E +doCOMMAND3 LDA #$0000 - STA L2840 + STA YCOORD LDA #$0000 - STA L2846 - LDX #^L289A - LDA #L289A - PHX - PHA + 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 ^L2834 - PEA L2834 - LDA #$000A + PEA ^strRESOURCE + PEA strRESOURCE + LDA #strRESOURCE2-strRESOURCE ; 'Tool table' is 10 chars PHA - JSL L2A9A - PEA ^L289A - PEA L289A - LDA L2842+2 + JSL copyDATA + PEA ^myBUFFER1 + PEA myBUFFER1 + LDA ptrBUFFER+2 PHA - LDA L2842 + LDA ptrBUFFER PHA PLA CLC - ADC #$002E + ADC #$002E ; source pointer of data to be copied PHA PLA STA $00 @@ -3857,259 +4043,265 @@ L25A1 LDA #$0000 LDY #$0002 PLA STA [$00],Y - LDX L2842+2 - LDA L2842 + + LDX ptrBUFFER+2 + LDA ptrBUFFER CLC ADC #$0036 STA $00 STX $02 - LDA #$8013 + LDA #resTYPE ; resource type that the editor handles STA [$00] - LDA #$0001 + + LDA #$0001 ; prepare my resource data DEC ASL TAX LDA #$0300 - STA L2856,X + STA theTOOLREC,X LDA #$0002 DEC ASL TAX LDA #$0300 - STA L2856,X + STA theTOOLREC,X LDA #$0003 DEC ASL TAX LDA #$0300 - STA L2856,X + STA theTOOLREC,X LDA #$0004 DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0005 DEC ASL TAX LDA #$0302 - STA L2856,X + STA theTOOLREC,X LDA #$0006 DEC ASL TAX LDA #$0300 - STA L2856,X + STA theTOOLREC,X LDA #$0007 DEC ASL TAX LDA #$0200 - STA L2856,X + STA theTOOLREC,X LDA #$0008 DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0009 DEC ASL TAX LDA #$0201 - STA L2856,X + STA theTOOLREC,X LDA #$000A DEC ASL TAX LDA #$0202 - STA L2856,X + STA theTOOLREC,X LDA #$000B DEC ASL TAX LDA #$0200 - STA L2856,X + STA theTOOLREC,X LDA #$000C DEC ASL TAX LDA #$0201 - STA L2856,X + STA theTOOLREC,X LDA #$000D DEC ASL TAX LDA #$0200 - STA L2856,X + STA theTOOLREC,X LDA #$000E DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$000F DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0010 DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0011 DEC ASL TAX LDA #$0300 - STA L2856,X + STA theTOOLREC,X LDA #$0012 DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0013 DEC ASL TAX LDA #$0300 - STA L2856,X + STA theTOOLREC,X LDA #$0014 DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0015 DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0016 DEC ASL TAX LDA #$0300 - STA L2856,X + STA theTOOLREC,X LDA #$0017 DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$0018 DEC ASL TAX LDA #$0000 - STA L2856,X + STA theTOOLREC,X LDA #$0019 DEC ASL TAX LDA #$0104 - STA L2856,X + STA theTOOLREC,X LDA #$001A DEC ASL TAX LDA #$0104 - STA L2856,X + STA theTOOLREC,X LDA #$001B DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$001C DEC ASL TAX LDA #$0301 - STA L2856,X + STA theTOOLREC,X LDA #$001D DEC ASL TAX LDA #$0101 - STA L2856,X + STA theTOOLREC,X LDA #$001E DEC ASL TAX LDA #$0100 - STA L2856,X + STA theTOOLREC,X LDA #$001F DEC ASL TAX LDA #$0000 - STA L2856,X + STA theTOOLREC,X LDA #$0020 DEC ASL TAX LDA #$0103 - STA L2856,X + STA theTOOLREC,X LDA #$0021 DEC ASL TAX LDA #$0000 - STA L2856,X + STA theTOOLREC,X LDA #$0022 DEC ASL TAX LDA #$0101 - STA L2856,X - BRL L280E + STA theTOOLREC,X + BRL exitEDITOR *--- Command 4 -L279E JSL L2089 - JSL L20DC - BRL L280E +doCOMMAND4 + JSL getFRONTWINDOW + JSL createDISPOSE + BRL exitEDITOR *--- Command 7 -L27A9 JSL L2089 - LDX L2842+2 - LDA L2842 +doCOMMAND7 + JSL getFRONTWINDOW + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$0036 + LDY #$0036 ; supported resource type LDA [$00],Y PHA - LDX L2842+2 - LDA L2842 + LDX ptrBUFFER+2 + LDA ptrBUFFER STA $00 STX $02 - LDY #$003A + LDY #$003A ; window pointer? LDA [$00],Y TAX LDY #$0038 LDA [$00],Y PHX PHA - LDX L2852+2 ; GRAFPORT - LDA L2852 + LDX haWINDOW+2 ; GRAFPORT + LDA haWINDOW PHX PHA - JSL L12CA - BRL L280E + JSL createRESOURCE ; format resource + BRL exitEDITOR *--- Command 5 *--- Command 6 -*--- Command 7 +*--- Command 8 -L27E3 BRL L280E +unsupCOMMAND BRL exitEDITOR + +*--- Manages commands L27E6 CMP #$0008 BCC L27EE @@ -4123,17 +4315,17 @@ L27EE ASL L27F8 JSL L2C09 -L27FC DA L23FE-1 - DA L24E5-1 - DA L2525-1 - DA L25A1-1 - DA L279E-1 - DA L27E3-1 - DA L27E3-1 - DA L27A9-1 - DA L27E3-1 +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 -L280E LDA #$0000 +exitEDITOR LDA #$0000 STA $16 LDX $16 PLD @@ -4144,88 +4336,34 @@ L280E LDA #$0000 TXA RTL -L281E ASC 'Tool table editor v1.2' -L2834 ASC 'Tool table' -L283E DW $0000 -L2840 DW $0000 -L2842 ADRL $00000000 -L2846 DW $0000 -L2848 DW $0000 -L284A ADRL $00000000 -L284E ADRL $00000000 -L2852 ADRL $00000000 -L2856 DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 - DB $00 -L289A DS $100 -L299A DS $100 +strEDITOR ASC 'Tool table editor v1.2' +strEDITOR2 +strRESOURCE ASC 'Tool table' +strRESOURCE2 -L2A9A TDC +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 $44 + +*--- 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 @@ -4253,6 +4391,7 @@ L2A9A TDC L2AC0 PHA JSL L2E77 BRA L2B3D + L2AC7 LDA $0D PHA LDA $0B diff --git a/genesys/edit/VERSIONS.S b/genesys/edit/VERSIONS.S new file mode 100644 index 0000000..e1d4a93 --- /dev/null +++ b/genesys/edit/VERSIONS.S @@ -0,0 +1,4687 @@ +* +* Genesys v1.3.4 +* Versions editor +* + + mx %00 + rel + lst off + +*---------------------------- + + use 4/Ctl.Macs + use 4/Int.Macs + use 4/Line.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 + +*---------------------------- +* Process +* +* Command 3 is launched at boot time +* Command 0 is launched at each Add +* + +*---------------------------- +* Ewen's Versions resource type $DEAD: +* +* +0000 word version must be zero +* +0004 long resource ID of string holding app's display name +* +0008 long resource ID of string holding author's name +* +000c long resource ID of string URL to the downloads folder +* +0010 long resource ID of string for downloadable archive name +* +0014 long resource ID of string for Versions.List data file +* + +sizeHEADER = $000c ; standard header size +sizeSTDREC = $0054 ; 12 entries x 4 + header = $54 +sizeFULLREC = $0084 ; 30 entries x 4 + header = $84 +resSIZE = 22 ; 2 + 5 x 4 +resTYPE = $dead ; resource type supported by the editor + +rPString = $8006 + +*---------------------------- + + lda #myRESOURCE + stal $300 + lda #^myRESOURCE + stal $302 + + 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 ptrWINDOW + PLA + STA ptrWINDOW+2 + LDA ptrWINDOW+2 + PHA + LDA ptrWINDOW + PHA + _SetPort + PEA $0000 + PEA $0000 + LDA ptrWINDOW+2 + PHA + LDA ptrWINDOW + PHA + PEA $0003 + PEA ^ctlWINDOW + PEA ctlWINDOW + _NewControl2 + PLA + PLA + PLB + PLD + RTL + +ctlWINDOW + adrl ctlSTR5 + adrl ctlSTR4 + adrl ctlSTR3 + adrl ctlSTR2 + adrl ctlSTR1 + adrl ctlLE5 + adrl ctlLE4 + adrl ctlLE3 + adrl ctlLE2 + adrl ctlLE1 + adrl $00000000 + +ctlSTR5 + DW $0008 ; pCount - ID text + ADRL $00000005 ; ID + DW 129 ; rect + DW 10 + DW 138 + DW 230 + ADRL $81000000 ; procRef + DW $0000 ; flag + DW $1000 ; moreFlags + ADRL $00000000 ; refCon + ADRL strSTR5 ; textRef + DW 23 ; textSize + +ctlSTR4 + DW $0008 ; pCount - ID text + ADRL $00000004 ; ID + DW 99 ; rect + DW 10 + DW 108 + DW 230 + ADRL $81000000 ; procRef + DW $0000 ; flag + DW $1000 ; moreFlags + ADRL $00000000 ; refCon + ADRL strSTR4 ; textRef + DW 25 ; textSize + +ctlSTR3 + DW $0008 ; pCount - ID text + ADRL $00000003 ; ID + DW 69 ; rect + DW 10 + DW 78 + DW 230 + ADRL $81000000 ; procRef + DW $0000 ; flag + DW $1000 ; moreFlags + ADRL $00000000 ; refCon + ADRL strSTR3 ; textRef + DW 23 ; textSize + +ctlSTR2 + DW $0008 ; pCount - ID text + ADRL $00000002 ; ID + DW 39 ; rect + DW 10 + DW 48 + DW 230 + ADRL $81000000 ; procRef + DW $0000 ; flag + DW $1000 ; moreFlags + ADRL $00000000 ; refCon + ADRL strSTR2 ; textRef + DW 13 ; textSize + +ctlSTR1 + DW $0008 ; pCount - ID text + ADRL $00000001 ; ID + DW 9 ; rect + DW 10 + DW 18 + DW 230 + ADRL $81000000 ; procRef + DW $0000 ; flag + DW $1000 ; moreFlags + ADRL $00000000 ; refCon + ADRL strSTR1 ; textRef + DW 26 ; textSize + +ctlLE5 + DW $0008 ; pCount + ADRL $0000000A ; ID + DW 140 ; rect + DW 20 + DW 153 + DW 280 + ADRL $83000000 ; procRef + DW $0000 ; flag + DW $7000 ; moreFlags + ADRL $00000000 ; refCon + DW 255 ; maxSize + ADRL mySTRING5B ; defaultRef + +ctlLE4 + DW $0008 ; pCount + ADRL $00000009 ; ID + DW 110 ; rect + DW 20 + DW 123 + DW 280 + ADRL $83000000 ; procRef + DW $0000 ; flag + DW $7000 ; moreFlags + ADRL $00000000 ; refCon + DW 255 ; maxSize + ADRL mySTRING4B ; defaultRef + +ctlLE3 + DW $0008 ; pCount + ADRL $00000008 ; ID + DW 80 ; rect + DW 20 + DW 93 + DW 280 + ADRL $83000000 ; procRef + DW $0000 ; flag + DW $7000 ; moreFlags + ADRL $00000000 ; refCon + DW 255 ; maxSize + ADRL mySTRING3B ; defaultRef + +ctlLE2 + DW $0008 ; pCount + ADRL $00000007 ; ID + DW 50 ; rect + DW 20 + DW 63 + DW 280 + ADRL $83000000 ; procRef + DW $0000 ; flag + DW $7000 ; moreFlags + ADRL $00000000 ; refCon + DW 255 ; maxSize + ADRL mySTRING2B ; defaultRef + +ctlLE1 + DW $0008 ; pCount + ADRL $00000006 ; ID + DW 20 ; rect + DW 20 + DW 33 + DW 280 + ADRL $83000000 ; procRef + DW $0000 ; flag + DW $7000 ; moreFlags + ADRL $00000000 ; refCon + DW 255 ; maxSize + ADRL mySTRING1B ; defaultRef + +strSTR5 asc 'Versions.List data file' +strSTR4 asc 'Downloadable archive name' +strSTR3 asc 'URL of downloads folder' +strSTR2 asc 'Author'27's name' +strSTR1 asc 'Application'27's display name' + +winTITLE str ' Versions ' + +myWINDOW DW $0050 + DW $C080 ; frame bits + ADRL winTITLE ; 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 36 ; content rect + DW 30 + DW 196 + DW 340 + 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 + _SetCurResourceFile + PLB + PLD + 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 ; no resource is loaded + 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 succeeded + +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 succeeded + +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 succeeded + +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 was loaded, it exists + +L09E3 LDX $22 + LDA $20 + PHX + PHA + _HLock + STA L2BCB + LDA L2BCB + BNE L09FB + BRL L09FE +L09FB BRL L0A27 + +* memory lock succeeded + +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 + +* If we're here, our resource is in memory +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 ; return resource + 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 ; load resource in memory + STX $22 + STA $20 + LDA $20 + ORA $22 + BEQ L0A75 + BRL L0AB5 + +* Cannot load resource, it does not exist + +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, it exists + +L0AB5 LDX $22 + LDA $20 + PHX + PHA + _HUnlock + STA L2BCB + LDA #resSIZE ; was 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 + + ldy #0 ; make all zeroes + tya +]lp sta [$06],y + iny + iny + cpy #resSIZE + bcc ]lp + +*--- + +L0D54 LDA $2F + PHA + LDX $2D + LDA $2B + PHX + PHA + 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 #$003C ; memID + lda [$00],Y + sta memID + + 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 #resSIZE ; was 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 LOGO + +* 1. We see if we have IDs of 0 or a real ID for each string +* => we'll use the myRESOURCE thing +* 2. We ask for an rPString ID if needed +* 3. We build the rUpdate accordingly +* 4. We save or update the five pStrings + +* Set depth + +* pha +* PushWord #1 +* _SetResourceFileDepth +* PullWord resDepth + +* Clear my string buffers + + ldx #256-2 +]lp stz mySTRING1,x + stz mySTRING2,x + stz mySTRING3,x + stz mySTRING4,x + stz mySTRING5,x + dex + dex + bpl ]lp + +*---------------------------- +*--- Handle resource string 1 + + lda strID1 + ora strID1+2 + bne ID1exists + + pha + pha + PushWord #$ffff + PushWord #rPString + _UniqueResourceID + PullLong strID1 + +ID1exists + +*- + + PushWord #rPString + PushLong strID1 + _RemoveResource + +*- + + pha + pha + PushLong #$100 ; maxSize + PushWord memID + PushWord #$c018 + PushLong #0 + _NewHandle + PullLong haID1 + +*- + + pha ; for string 1 + pha + PushLong ptrWINDOW + PushLong #6 + _GetCtlHandleFromID + pla + sta $00 + pla + sta $02 + + ldy #2 + lda [$00],y + tax + lda [$00] + sta $00 + stx $02 + + ldy #$1e + lda [$00],y + sta theHANDLE+2 + ldy #$1c + lda [$00],y + sta theHANDLE + + pha + PushLong theHANDLE + _LEGetTextLen + PullWord lenSTRING1 + + pha + pha + PushLong theHANDLE + _LEGetTextHand + PushLong #mySTRING1B + PushLong lenSTRING1 + _HandToPtr + +*- + + sep #$20 + lda lenSTRING1 + sta mySTRING1 + rep #$20 + +*- + + PushLong #mySTRING1 + PushLong haID1 + PushLong #$100 + _PtrToHand + +*- + + PushLong haID1 ; for string 1 + _HUnlock + pea $0000 + lda lenSTRING1 + inc + pha + PushLong haID1 + _SetHandleSize + PushLong haID1 + _HLock + +*- + + PushLong haID1 + PushWord #0 + PushWord #rPString + PushLong strID1 + _AddResource + +*- + + PushWord #$ffff + PushWord #rPString + PushLong strID1 + _ReleaseResource + +*---------------------------- +*--- Handle resource string 2 + + lda strID2 + ora strID2+2 + bne ID2exists + + pha + pha + PushWord #$ffff + PushWord #rPString + _UniqueResourceID + PullLong strID2 + +ID2exists + +*- + + PushWord #rPString + PushLong strID2 + _RemoveResource + +*- + + pha + pha + PushLong #$100 ; maxSize + PushWord memID + PushWord #$c018 + PushLong #0 + _NewHandle + PullLong haID2 + +*- + + pha ; for string 2 + pha + PushLong ptrWINDOW + PushLong #7 + _GetCtlHandleFromID + pla + sta $00 + pla + sta $02 + + ldy #2 + lda [$00],y + tax + lda [$00] + sta $00 + stx $02 + + ldy #$1e + lda [$00],y + sta theHANDLE+2 + ldy #$1c + lda [$00],y + sta theHANDLE + + pha + PushLong theHANDLE + _LEGetTextLen + PullWord lenSTRING2 + + pha + pha + PushLong theHANDLE + _LEGetTextHand + PushLong #mySTRING2B + PushLong lenSTRING2 + _HandToPtr + +*- + + sep #$20 + lda lenSTRING2 + sta mySTRING2 + rep #$20 + +*- + + PushLong #mySTRING2 + PushLong haID2 + PushLong #$100 + _PtrToHand + +*- + + PushLong haID2 ; for string 2 + _HUnlock + pea $0000 + lda lenSTRING2 + inc + pha + PushLong haID2 + _SetHandleSize + PushLong haID2 + _HLock + +*- + + PushLong haID2 + PushWord #0 + PushWord #rPString + PushLong strID2 + _AddResource + +*- + + PushWord #$ffff + PushWord #rPString + PushLong strID2 + _ReleaseResource + +*---------------------------- +*--- Handle resource string 3 + + lda strID3 + ora strID3+2 + bne ID3exists + + pha + pha + PushWord #$ffff + PushWord #rPString + _UniqueResourceID + PullLong strID3 + +ID3exists + +*- + + PushWord #rPString + PushLong strID3 + _RemoveResource + +*- + + pha + pha + PushLong #$100 ; maxSize + PushWord memID + PushWord #$c018 + PushLong #0 + _NewHandle + PullLong haID3 + +*- + + pha ; for string 3 + pha + PushLong ptrWINDOW + PushLong #8 + _GetCtlHandleFromID + pla + sta $00 + pla + sta $02 + + ldy #2 + lda [$00],y + tax + lda [$00] + sta $00 + stx $02 + + ldy #$1e + lda [$00],y + sta theHANDLE+2 + ldy #$1c + lda [$00],y + sta theHANDLE + + pha + PushLong theHANDLE + _LEGetTextLen + PullWord lenSTRING3 + + pha + pha + PushLong theHANDLE + _LEGetTextHand + PushLong #mySTRING3B + PushLong lenSTRING3 + _HandToPtr + +*- + + sep #$20 + lda lenSTRING3 + sta mySTRING3 + rep #$20 + +*- + + PushLong #mySTRING3 + PushLong haID3 + PushLong #$100 + _PtrToHand + +*- + + PushLong haID3 ; for string 3 + _HUnlock + pea $0000 + lda lenSTRING3 + inc + pha + PushLong haID3 + _SetHandleSize + PushLong haID3 + _HLock + +*- + + PushLong haID3 + PushWord #0 + PushWord #rPString + PushLong strID3 + _AddResource + +*- + + PushWord #$ffff + PushWord #rPString + PushLong strID3 + _ReleaseResource + +*---------------------------- +*--- Handle resource string 4 + + lda strID4 + ora strID4+2 + bne ID4exists + + pha + pha + PushWord #$ffff + PushWord #rPString + _UniqueResourceID + PullLong strID4 + +ID4exists + +*- + + PushWord #rPString + PushLong strID4 + _RemoveResource + +*- + + pha + pha + PushLong #$100 ; maxSize + PushWord memID + PushWord #$c018 + PushLong #0 + _NewHandle + PullLong haID4 + +*- + + pha ; for string 4 + pha + PushLong ptrWINDOW + PushLong #9 + _GetCtlHandleFromID + pla + sta $00 + pla + sta $02 + + ldy #2 + lda [$00],y + tax + lda [$00] + sta $00 + stx $02 + + ldy #$1e + lda [$00],y + sta theHANDLE+2 + ldy #$1c + lda [$00],y + sta theHANDLE + + pha + PushLong theHANDLE + _LEGetTextLen + PullWord lenSTRING4 + + pha + pha + PushLong theHANDLE + _LEGetTextHand + PushLong #mySTRING4B + PushLong lenSTRING4 + _HandToPtr + +*- + + sep #$20 + lda lenSTRING4 + sta mySTRING4 + rep #$20 + +*- + + PushLong #mySTRING4 + PushLong haID4 + PushLong #$100 + _PtrToHand + +*- + + PushLong haID4 ; for string 4 + _HUnlock + pea $0000 + lda lenSTRING4 + inc + pha + PushLong haID4 + _SetHandleSize + PushLong haID4 + _HLock + +*- + + PushLong haID4 + PushWord #0 + PushWord #rPString + PushLong strID4 + _AddResource + +*- + + PushWord #$ffff + PushWord #rPString + PushLong strID4 + _ReleaseResource + +*---------------------------- +*--- Handle resource string 5 + + lda strID5 + ora strID5+2 + bne ID5exists + + pha + pha + PushWord #$ffff + PushWord #rPString + _UniqueResourceID + PullLong strID5 + +ID5exists + +*- + + PushWord #rPString + PushLong strID5 + _RemoveResource + +*- + + pha + pha + PushLong #$100 ; maxSize + PushWord memID + PushWord #$c018 + PushLong #0 + _NewHandle + PullLong haID5 + +*- + + pha ; for string 5 + pha + PushLong ptrWINDOW + PushLong #10 + _GetCtlHandleFromID + pla + sta $00 + pla + sta $02 + + ldy #2 + lda [$00],y + tax + lda [$00] + sta $00 + stx $02 + + ldy #$1e + lda [$00],y + sta theHANDLE+2 + ldy #$1c + lda [$00],y + sta theHANDLE + + pha + PushLong theHANDLE + _LEGetTextLen + PullWord lenSTRING5 + + pha + pha + PushLong theHANDLE + _LEGetTextHand + PushLong #mySTRING5B + PushLong lenSTRING5 + _HandToPtr + +*- + + sep #$20 + lda lenSTRING5 + sta mySTRING5 + rep #$20 + +*- + + PushLong #mySTRING5 + PushLong haID5 + PushLong #$100 + _PtrToHand + +*- + + PushLong haID5 ; for string 5 + _HUnlock + pea $0000 + lda lenSTRING5 + inc + pha + PushLong haID5 + _SetHandleSize + PushLong haID5 + _HLock + +*- + + PushLong haID5 + PushWord #0 + PushWord #rPString + PushLong strID5 + _AddResource + +*- + + PushWord #$ffff + PushWord #rPString + PushLong strID5 + _ReleaseResource + +* The end + + pha + PushWord resDepth + _SetResourceFileDepth + PullWord resDepth + +* Copy the updated resource + + PushLong #myRESOURCE + pei $18 + pei $16 + PushLong #resSIZE + _PtrToHand + +* Clear the resource + + ldx #0 +]lp stz myRESOURCE,x + inx + inx + cpx #resSIZE + bcc ]lp + +* Resource is formatted, write it + +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' + +resDepth ds 2 + +*--- Init controls of the editor window + +initWINCONTROLS + TSC + SEC + SBC #$0028 + TCS + PHD + INC + TCD + LDA #$0001 + STA $16 + LDA #$0001 + STA $26 + + 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 + +* Cannot load resource + +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 + +* Resource is now in memory + +L1BFC LDX $22 + LDA $20 + PHX + PHA + _HLock + STA L2BCB + + LDY #$0002 ; set the pointer + LDA [$20],Y + TAX + LDA [$20] + STX $08 + STA $06 + +* Copy the resource + + ldy #0 +]lp lda [$06],y + sta myRESOURCE,y + iny + iny + cpy #resSIZE + bcc ]lp + +* Init my flags + + stz lenSTRING1 ; 0 means empty string + stz lenSTRING2 + stz lenSTRING3 + stz lenSTRING4 + stz lenSTRING5 + + ldx #256-2 ; clear +]lp stz mySTRING1,x + stz mySTRING2,x + stz mySTRING3,x + stz mySTRING4,x + stz mySTRING5,x + dex + dex + bpl ]lp + +* Now, load the associated 5 rPStrings + + pha + pha + PushWord #rPString + ldy #4 + lda [$06],y + pha + ldy #2 + lda [$06],y + pha + _LoadResource + pla + plx + bcs next2 + + phx + pha + PushLong #mySTRING1 + PushLong #256 + _HandToPtr + + PushWord #-1 + PushWord #rPString + ldy #4 + lda [$06],y + pha + ldy #2 + lda [$06],y + pha + _ReleaseResource + +next2 pha ; get handle of control + pha + PushLong ptrWINDOW + PushLong #6 + _GetCtlHandleFromID + pla + plx + bcs next3 + sta theHANDLE + stx theHANDLE+2 + + PushLong #mySTRING1B ; pointer to text + + lda mySTRING1 ; length of text + and #$00ff + sta lenSTRING1 + pha + + pha ; get the line edit control from the lineedit control + pha + PushLong theHANDLE + _GetCtlTitle + _LESetText + +* Now, load the associated 5 rPStrings + +next3 pha + pha + PushWord #rPString + ldy #8 + lda [$06],y + pha + ldy #6 + lda [$06],y + pha + _LoadResource + pla + plx + bcs next4 + + phx + pha + PushLong #mySTRING2 + PushLong #256 + _HandToPtr + + PushWord #-1 + PushWord #rPString + ldy #8 + lda [$06],y + pha + ldy #6 + lda [$06],y + pha + _ReleaseResource + +next4 pha ; get handle of control + pha + PushLong ptrWINDOW + PushLong #7 + _GetCtlHandleFromID + pla + plx + bcs next5 + sta theHANDLE + stx theHANDLE+2 + + PushLong #mySTRING2B ; pointer to text + + lda mySTRING2 ; length of text + and #$00ff + sta lenSTRING2 + pha + + pha ; get the line edit control from the lineedit control + pha + PushLong theHANDLE + _GetCtlTitle + _LESetText + +* Now, load the associated 5 rPStrings + +next5 pha + pha + PushWord #rPString + ldy #12 + lda [$06],y + pha + ldy #10 + lda [$06],y + pha + _LoadResource + pla + plx + bcs next6 + + phx + pha + PushLong #mySTRING3 + PushLong #256 + _HandToPtr + + PushWord #-1 + PushWord #rPString + ldy #12 + lda [$06],y + pha + ldy #10 + lda [$06],y + pha + _ReleaseResource + +next6 pha ; get handle of control + pha + PushLong ptrWINDOW + PushLong #8 + _GetCtlHandleFromID + pla + plx + bcs next7 + sta theHANDLE + stx theHANDLE+2 + + PushLong #mySTRING3B ; pointer to text + + lda mySTRING3 ; length of text + and #$00ff + sta lenSTRING3 + pha + + pha ; get the line edit control from the lineedit control + pha + PushLong theHANDLE + _GetCtlTitle + _LESetText + +* Now, load the associated 5 rPStrings + +next7 pha + pha + PushWord #rPString + ldy #16 + lda [$06],y + pha + ldy #14 + lda [$06],y + pha + _LoadResource + pla + plx + bcs next8 + + phx + pha + PushLong #mySTRING4 + PushLong #256 + _HandToPtr + + PushWord #-1 + PushWord #rPString + ldy #16 + lda [$06],y + pha + ldy #14 + lda [$06],y + pha + _ReleaseResource + +next8 pha ; get handle of control + pha + PushLong ptrWINDOW + PushLong #9 + _GetCtlHandleFromID + pla + plx + bcs next9 + sta theHANDLE + stx theHANDLE+2 + + PushLong #mySTRING4B ; pointer to text + + lda mySTRING4 ; length of text + and #$00ff + sta lenSTRING4 + pha + + pha ; get the line edit control from the lineedit control + pha + PushLong theHANDLE + _GetCtlTitle + _LESetText + +* Now, load the associated 5 rPStrings + +next9 pha + pha + PushWord #rPString + ldy #20 + lda [$06],y + pha + ldy #18 + lda [$06],y + pha + _LoadResource + pla + plx + bcs next10 + + phx + pha + PushLong #mySTRING5 + PushLong #256 + _HandToPtr + + PushWord #-1 + PushWord #rPString + ldy #20 + lda [$06],y + pha + ldy #18 + lda [$06],y + pha + _ReleaseResource + +next10 pha ; get handle of control + pha + PushLong ptrWINDOW + PushLong #10 + _GetCtlHandleFromID + pla + plx + bcs next11 + sta theHANDLE + stx theHANDLE+2 + + PushLong #mySTRING5B ; pointer to text + + lda mySTRING5 ; length of text + and #$00ff + sta lenSTRING5 + pha + + pha ; get the line edit control from the lineedit control + pha + PushLong theHANDLE + _GetCtlTitle + _LESetText + +next11 ; end of the funny initialization, ahem... + +*--- + +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 ptrWINDOW+2 + LDA ptrWINDOW + 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 ptrWINDOW+2 + LDA ptrWINDOW + 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 ptrWINDOW+2 + LDA ptrWINDOW + PHX + PHA + _MoveWindow + STA L2BCB + LDX ptrWINDOW+2 + LDA ptrWINDOW + PHX + PHA + _ShowWindow + STA L2BCB + + LDX haMEMORY+2 ; associate the newly allocated buffer + LDA haMEMORY ; to the refcon of the window + PHX + PHA + LDX ptrWINDOW+2 + LDA ptrWINDOW + 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 ptrWINDOW + PLA + STA ptrWINDOW+2 + LDX ptrWINDOW+2 + LDA ptrWINDOW + PHX + PHA + _SetPort + STA L2BCB + PHA + PHA + LDX ptrWINDOW+2 + LDA ptrWINDOW + 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 ptrWINDOW+2 + LDA ptrWINDOW + PHX + PHA + JSL createRESOURCE + + LDX ptrWINDOW+2 ; close the window + LDA ptrWINDOW + 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 + +*--- Versions 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] + +* Clear the resource + + ldx #0 +]lp stz myRESOURCE,x + inx + inx + cpx #resSIZE + bcc ]lp + +* Init my flags + + stz lenSTRING1 ; 0 means empty string + stz lenSTRING2 + stz lenSTRING3 + stz lenSTRING4 + stz lenSTRING5 + + ldx #256-2 ; clear +]lp stz mySTRING1,x + stz mySTRING2,x + stz mySTRING3,x + stz mySTRING4,x + stz mySTRING5,x + dex + dex + bpl ]lp + + 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 ptrWINDOW+2 ; GRAFPORT + LDA ptrWINDOW + 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 'rUpdateInfo editor v1' +strEDITOR2 +strRESOURCE ASC 'Update Info' +strRESOURCE2 + +YCOORD DW $0000 +xCOORD DW $0000 +ptrBUFFER ADRL $00000000 ; pointer to the shell buffer +busyFLAG DW $0000 ; the busy flag +resfileID DW $0000 +haMEMORY ADRL $00000000 +haMEMORY2 ADRL $00000000 +ptrWINDOW ADRL $00000000 +theHANDLE ds 4 +memID ds 2 + +*--- Buffers + +myRESOURCE + ds 2 ; version = 0 +strID1 ds 4 ; 0: ID to create, <>0: ID to use +strID2 ds 4 +strID3 ds 4 +strID4 ds 4 +strID5 ds 4 + +haID1 ds 4 ; memory handle of rPString +haID2 ds 4 +haID3 ds 4 +haID4 ds 4 +haID5 ds 4 + +myBUFFER1 DS $100 +myBUFFER2 DS $100 + +mySTRING1 ds $1 +mySTRING1B ds $ff +mySTRING2 ds $1 +mySTRING2B ds $ff +mySTRING3 ds $1 +mySTRING3B ds $ff +mySTRING4 ds $1 +mySTRING4B ds $ff +mySTRING5 ds $1 +mySTRING5B ds $ff + +lenSTRING1 ds 4 +lenSTRING2 ds 4 +lenSTRING3 ds 4 +lenSTRING4 ds 4 +lenSTRING5 ds 4 + +*--- 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 diff --git a/genesys/genesys buffer.txt b/genesys/genesys buffer.txt new file mode 100644 index 0000000..08da609 --- /dev/null +++ b/genesys/genesys buffer.txt @@ -0,0 +1,46 @@ +*--- The commands + +0 - prepare me +1 - return the name of the editor +2 - interact with window +3 - initializes the editor +4 - get front windows, create a resource, dispose memory, exit +5 - not handled +6 - not handled +7 - get front window, create a resource, exit +8 - not handled + +*--- The buffer that is passed to the editor + +L02434C DW $0000 ; 00 event code +L02434E ADRL $00000000 ; 02 event message + ADRL $00000000 ; 06 tick count +L024356 DW $0000 ; 0A mouse location +L024358 DW $0000 ; 0C +L02435A DW $0000 ; 0E modifiers +L02435C ADRL $00000000 ; 10 task data +L024360 ADRL $00000000 ; 14 task mask + ADRL $00000000 ; 18 +L024368 DW $0000 ; 1C +L02436A ADRL $00000000 ; 1E handle to control +L02436E DW $0000 ; 22 + DW $0000 ; +L024372 ADRL $00000000 ; 26 control ID - ()$0001 or $1002 or $1003 for tool table) + DW $0000 ; + DW $0000 ; +L02437A ADRL $00000000 ; 2E O source pointer of data to be copied ($20 bytes) (STR 'Version') +L02437E ADRL $00000000 ; 32 O another pointer (STR 'VERSIONS_01234567') +L024382 DW $0000 ; 36 O supported resource type +L024384 ADRL $00000000 ; 38 resource ID +L024388 DW $0000 ; 3C memory ID +L02438A DW $0000 ; 3E command (0..5) +L02438C DW $0000 ; 40 Y-coord +L02438E DW $0000 ; 42 X-coord + DW $0000 ; + DW $0000 ; +L024394 DW $0000 ; 48 flag (bit 15: is resource formatted?, did we handle the command?) +L024396 DW $0000 ; 4A TaskMaster result + DW $0000 ; +L02439A DW $0000 ; 4E Resource file ID +L02439C DW $0000 ; 50 Resource type +L02439E ADRL $00000000 ; 52 Resource ID diff --git a/genesys/genesys readme.txt b/genesys/genesys readme.txt index b8927c6..5147e79 100644 --- a/genesys/genesys readme.txt +++ b/genesys/genesys readme.txt @@ -1,20 +1,28 @@ Genesys v1.3.4 Readme - November 2020 Shell -- it is based on v1.2.4 (I do not find v1.3 reliable) +- It is based on v1.2.4 (I do not find v1.3 reliable) - I've added ten resource types that were not included in the display (it does not mean the resource type has a dedicated editor) -- the help menu is updated (the data is a resource type $5751 in file Gen.Data) +- The help menu is updated (the data is a resource type $5751 in file Gen.Data) Editors - Control - - It handles the new bits in icon, line edit, and static text controls - - I have added support for rectangle and thermometer controls + It handles the new bits in icon, line edit, and static text controls + I have added support for rectangle and thermometer controls +- Update Info + A new editor to create rUpdateInfo resources for Ewen Wannop's Versions software +Export +- APW REZ + Thanks to Chris Vavruska, one can generate rez files of new controls, new control data, and rUpdateInfo + Idea - I realized that a control can be created from the Add Control pop-up menu or after creating a window. But you cannot add to the window an already created control. You must create it from zero. That is weird, one should be able to add to the window an available control. -The shell and the editors communicate through a 64-byte buffer. That is mandatory to understand to write new editors. My plan is to create a Versions editor (Ewen's Versions is a cool product). +If you want to test, report bugs, ask for features... https://github.com/antoinevignau/source/tree/main/genesys -No work has been done on exporting resource files. +Thank you Ewen Wannop and Chris Vavruska! -If you want to test, report bugs, ask for features... https://github.com/antoinevignau/source/tree/main/genesys \ No newline at end of file +Antoine Vignau & Olivier Zardini +Brutal Deluxe Software +brutaldeluxe.fr diff --git a/genesys/templates/ApwRez.scg b/genesys/templates/ApwRez.scg new file mode 100644 index 0000000..9e721a8 --- /dev/null +++ b/genesys/templates/ApwRez.scg @@ -0,0 +1,2812 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# APW REZ Template +# v1.2b2 10Oct90, MWW - fixed alert templates +# b3 24Oct90, ZAK - reformatted all output to be "nice" +# added TwoRects template +# added CDEVFlags template +# added wString +# b4 27Oct90, MWW - fixed rTextForLETextBox2 +# corrected rControl's ScrollControl +# added array braces to rCursor +# added StringList template +# v1.3.4 12Nov20, CCV - added RectangeControl template +# added ThermometerControl template +# added UpdateInfo template +# added pw/keymask to EditLineControl +# added Version Template +# added Comment Template +# added Bundle Template +# Copyright 1990 +# Simple Software Systems International, Inc. +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TITLE +# LOAD R127 $27 # set single quote char +# CTRL R127 7 # as exception character. +IF R17 EQ 1 + WRITE +// --------------------------------------------------------------------\n + WRITE +// Genesys created REZ data code\n + WRITE +// Simple Software Systems International, Inc.\n + WRITE +// APWREZ.SCG 1.2\n + WRITE +// --------------------------------------------------------------------\n\n + WRITE +#include "types.rez"\n\n +ELSE +IF R17 EQ 3 + WRITE +// --------------------------------------------------------------------\n + WRITE +// Genesys created REZ defines\n + WRITE +// Simple Software Systems International, Inc.\n + WRITE +// APWREZ.SCG 1.2\n + WRITE +// --------------------------------------------------------------------\n\n +END +DONE 0 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# handle undefined resource types as hex data +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE 0 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- type $%0.4lX is undefined and therefore created as hex DATA \n\n +END +LOAD R1 R13 # get resource type +NAME R2 0 # get label (either from rResName or Genesys default) +LOAD R3 R19 +WRITE +data $%0.4lX (%s, $%0.4lX) {\n +# do resource in hex bytes ::::::::::::::::::::::::::::::::::::::::::: +LOAD R20 R12 # get res size +# where the action is :::::::::::::::::::::::::::::::::::::::::::::::: +LOOP R24 +LOAD R21 32 +READ R1 BYTE +WRITE + $"%0.2lX +DEC R21 1 # remove one byte +DEC R20 1 +LOOP R25 +READ R1 BYTE +WRITE +%0.2lX +DEC R21 1 # remove another byte +DEC R20 1 +IF R20 NE 0 + IF R21 NE 0 + CONT R25 # finish line + END +END +IF R20 NE 0 +WRITE +"\n + CONT R24 # do next line +ELSE +WRITE +";\n +WRITE +};\n\n +END +DONE 0 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rIcon - $8001 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8001 +IF R15 EQ 1 # put in header if first one + WRITE +// --- Icon Definitions\n\n +END +NAME R1 0 # get label (either from rResName or Genesys default) +LOAD R2 R19 +WRITE +resource rIcon (%s, $%0.4lX) {\n +READ R1 WORD +WRITE + $%0.4lX, // kind\n +READ R20 WORD # pull off iconSize word - calculated by REZ +READ R1 WORD +LOAD R20 R1 # keep for height pixel count +WRITE + $%0.4lX, // height\n +READ R1 WORD +LOAD R21 R1 # keep for width pixel count +WRITE + $%0.4lX, // width\n\n +# do icon image :::::::::::::::::::::::::::::::::::::::::::::::::::::: +LOAD R22 R20 # get height (rows) +LOOP R24 +LOAD R23 R21 # get width (pixels) +READ R1 BYTE +WRITE + $"%0.2lX +DEC R23 2 # remove one byte +LOOP R25 +READ R1 BYTE +WRITE +%0.2lX +DEC R23 2 # remove another byte +IF R23 NE 0 + CONT R25 # finish line +ELSE + IF R22 NE 1 # don't put the " on the last line +WRITE +"\n + END +END +DEC R22 1 # drop to next row +IF R22 NE 0 + CONT R24 # do next line +ELSE +WRITE +",\n\n +END +# do icon mask ::::::::::::::::::::::::::::::::::::::::::::::::::::::: +LOOP R24 +LOAD R23 R21 # get width (pixels) +READ R1 BYTE +WRITE + $"%0.2lX +DEC R23 2 # remove one byte +LOOP R25 +READ R1 BYTE +WRITE +%0.2lX +DEC R23 2 # remove another byte +IF R23 NE 0 + CONT R25 # finish line +ELSE + IF R20 NE 1 # don't put the " on the last line +WRITE +"\n + END +END +DEC R20 1 # drop to next row +IF R20 NE 0 + CONT R24 # do next line +ELSE +WRITE +";\n +WRITE +};\n\n +END +DONE $8001 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rPicture - $8002 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8002 +IF R15 EQ 1 # put in header if first one + WRITE +// --- Picture Definitions\n\n +END +NAME R1 0 # get label (either from rResName or Genesys default) +LOAD R2 R19 +WRITE +data rPicture (%s, $%0.4lX) {\n +# do picture image in hex bytes :::::::::::::::::::::::::::::::::::::: +LOAD R20 R12 # get res size +# where the action is :::::::::::::::::::::::::::::::::::::::::::::::: +LOOP R24 +LOAD R21 32 +READ R1 BYTE +WRITE + $"%0.2lX +DEC R21 1 # remove one byte +DEC R20 1 +LOOP R25 +READ R1 BYTE +WRITE +%0.2lX +DEC R21 1 # remove another byte +DEC R20 1 +IF R20 NE 0 + IF R21 NE 0 + CONT R25 # finish line + END +END +IF R20 NE 0 +WRITE +"\n + CONT R24 # do next line +ELSE +WRITE +";\n +WRITE +};\n\n +END +DONE $8002 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rControlList - $8003 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8003 +IF R15 EQ 1 # put in header if first one + WRITE +// --- Control List Definitions\n\n +END +NAME R1 0 # get label (either from rResName or Genesys default) +LOAD R2 R19 +WRITE +resource rControlList (%s, $%0.4lX) {\n +WRITE + {\n + LOAD R2 1 # look ahead 1, waiting for a 0 terminator + READ R21 LONG + LOOP R20 + LOAD R1 R21 + READ R21 LONG + IF R21 NE 0 + NAME R1 $8004 + WRITE + %s, // control %ld\n + ELSE + NAME R1 $8004 + WRITE + %s, // control %ld\n + WRITE + };\n +WRITE +};\n\n + DONE 0 + END + INC R2 1 + CONT R20 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rControlTemplate - $8004 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8004 +IF R15 EQ 1 # put in header if first one + WRITE +// --- Control Templates\n\n +END +NAME R1 0 # get label (either from rResName or Genesys default) +LOAD R2 R19 +WRITE +resource rControlTemplate (%s, $%0.4lX) {\n +# read in the standard control header info ::::::::::::::::::::::::::: +READ R50 WORD pcount - read in the standard '6' +LOAD R20 R50 keep a copy +READ R51 LONG id +READ R52 WORD \ +READ R53 WORD \ rect +READ R54 WORD / +READ R55 WORD / +READ R56 LONG procref +READ R57 WORD flag +READ R58 WORD moreFlags +READ R59 LONG refCon +LOAD R1 R51 +WRITE + $%0.8lX, // ID\n +LOAD R1 R52 get control rect +LOAD R2 R53 +LOAD R3 R54 +LOAD R4 R55 +WRITE + {%.3ld,%.3ld,%.3ld,%.3ld}, // rect\n +# iconButtonControl :::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $7FF0001 + WRITE + iconButtonControl +ELSE +# simpleButtonControl :::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $80000000 + WRITE + simpleButtonControl +ELSE +# statTextControl :::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $81000000 + WRITE + statTextControl +ELSE +# checkControl ::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $82000000 + WRITE + checkControl +ELSE +# editLineControl :::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $83000000 + WRITE + editLineControl +ELSE +# radioControl ::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $84000000 + WRITE + radioControl +ELSE +# editTextControl :::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $85000000 + WRITE + editTextControl +ELSE +# ScrollControl ::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $86000000 + WRITE + ScrollControl +ELSE +# popUpControl ::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $87000000 + WRITE + popUpControl +ELSE +# growControl :::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $88000000 + WRITE + growControl +ELSE +# listControl :::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $89000000 + WRITE + listControl +ELSE +# pictureControl ::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $8D000000 + WRITE + pictureControl +ELSE +# thermometerControl :::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $87FF0002 + WRITE + thermometerControl +ELSE +# rectangleControl :::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $87FF0003 + WRITE + rectangleControl +END +# now, handle the remaining control header parms ::::::::::::::::::::: +WRITE + {{\n +LOAD R1 R57 get flag word +WRITE + $%0.4lX, // flag\n +LOAD R1 R58 get MoreFlags word +WRITE + $%0.4lX, // moreFlags\n +LOAD R1 R59 get refCon +IF R56 EQ $88000000 handle a growControl with 6 parms + WRITE + $%0.8lX // refCon\n +ELSE + IF R56 EQ $87FF0003 + AND R20 EQ 6 + WRITE + $%0.8lX // refCon\n + ELSE + WRITE + $%0.8lX, // refCon\n + END +END +# +# Now the header is done, handle each control seperately ::::::::::::: +# +# IconButtonControl :::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $7FF0001 pCount 7 8 9 10 11 +AND R20 EQ 7 + READ R1 LONG get iconRef + NAME R1 $8001 + WRITE + %s // iconRef\n +END +IF R56 EQ $7FF0001 +AND R20 GT 7 + READ R1 LONG get iconRef + NAME R1 $8001 + WRITE + %s, // iconRef\n +END +IF R56 EQ $7FF0001 + AND R20 EQ 8 + READ R1 LONG get titleRef + NAME R1 $8006 + WRITE + %s // titleRef\n +END +IF R56 EQ $7FF0001 + AND R20 GT 8 + READ R1 LONG get titleRef + NAME R1 $8006 + WRITE + %s, // titleRef\n +END +IF R56 EQ $7FF0001 +AND R20 EQ 9 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $7FF0001 +AND R20 GT 9 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s, // colorTableRef\n +END +IF R56 EQ $7FF0001 +AND R20 EQ 10 + READ R1 WORD get displayMode + WRITE + $%0.4lX // displayMode\n +END +IF R56 EQ $7FF0001 +AND R20 GT 10 + READ R1 WORD get displayMode + WRITE + $%0.4lX // displayMode\n +END +IF R56 EQ $7FF0001 +AND R20 EQ 11 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $7FF0001 +AND R20 EQ 11 +AND R17 NE 1 + WRITE + {"%s", +END +IF R56 EQ $7FF0001 +AND R20 EQ 11 +AND R17 EQ 1 + WRITE + {"\\$%0.2lX", +END +IF R56 EQ $7FF0001 +AND R20 EQ 11 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $7FF0001 +AND R20 EQ 11 +AND R17 NE 1 + WRITE +"%s", +END +IF R56 EQ $7FF0001 +AND R20 EQ 11 +AND R17 EQ 1 + WRITE +"\\$%0.2lX", +END +IF R56 EQ $7FF0001 +AND R20 EQ 11 + READ R1 WORD + READ R2 WORD + WRITE + $%0.4lX, $%0.4lX} // key equivalents\n +END +IF R56 EQ $7FF0001 + WRITE + }};\n + WRITE +};\n\n +END +# SimpleButtonControl :::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $80000000 pCount 7 8 9 +AND R20 EQ 7 + READ R1 LONG get titleRef + NAME R1 $8006 + WRITE + %s // titleRef\n +END +IF R56 EQ $80000000 +AND R20 GT 7 + READ R1 LONG get titleRef + NAME R1 $8006 + WRITE + %s, // titleRef\n +END +IF R56 EQ $80000000 +AND R20 EQ 8 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $80000000 +AND R20 GT 8 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s, // colorTableRef\n +END +IF R56 EQ $80000000 +AND R20 EQ 9 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $80000000 +AND R20 EQ 9 +AND R17 NE 1 + WRITE + {"%s", +END +IF R56 EQ $80000000 +AND R20 EQ 9 +AND R17 EQ 1 + WRITE + {"\\$%0.2lX", +END +IF R56 EQ $80000000 +AND R20 EQ 9 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $80000000 +AND R20 EQ 9 +AND R17 NE 1 + WRITE +"%s", +END +IF R56 EQ $80000000 +AND R20 EQ 9 +AND R17 EQ 1 + WRITE + "\\$%0.2lX", +END +IF R56 EQ $80000000 +AND R20 EQ 9 + READ R1 WORD + READ R2 WORD + WRITE +$%0.4lX,$%0.4lX} // key equivalents\n +END +IF R56 EQ $80000000 + WRITE + }};\n + WRITE +};\n\n +END +# StatTextControl :::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $81000000 pCount 7 8 9 +AND R20 EQ 7 + READ R1 LONG get textRef + NAME R1 $800B + WRITE + %s // textRef\n +END +IF R56 EQ $81000000 +AND R20 GT 7 + READ R1 LONG get textRef + NAME R1 $800B + WRITE + %s, // textRef\n +END +IF R56 EQ $81000000 +AND R20 EQ 8 + WRITE + %s_CNT // textSize\n +END +IF R56 EQ $81000000 +AND R20 GT 8 + WRITE + %s_CNT, // textSize\n +END +IF R56 EQ $81000000 +AND R20 EQ 9 + READ R1 WORD ignore prior word + READ R1 WORD get just + WRITE + $%0.4lX // just\n +END +IF R56 EQ $81000000 + WRITE + }};\n + WRITE +};\n\n +END +# CheckControl ::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $82000000 pCount 8 9 10 + READ R1 LONG get titleRef + NAME R1 $8006 + WRITE + %s, // titleRef\n +END +IF R56 EQ $82000000 +AND R20 EQ 8 + READ R1 WORD get initialValue + WRITE + $%0.4lX // initialValue\n +END +IF R56 EQ $82000000 +AND R20 GT 8 + READ R1 WORD get initialValue + WRITE + $%0.4lX, // initialValue\n +END +IF R56 EQ $82000000 +AND R20 EQ 9 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $82000000 +AND R20 GT 9 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s, // colorTableRef\n +END +IF R56 EQ $82000000 +AND R20 EQ 10 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $82000000 +AND R20 EQ 10 +AND R17 NE 1 + WRITE + {"%s", +END +IF R56 EQ $82000000 +AND R20 EQ 10 +AND R17 EQ 1 + WRITE + {"\\$%0.2lX", +END +IF R56 EQ $82000000 +AND R20 EQ 10 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $82000000 +AND R20 EQ 10 +AND R17 NE 1 + WRITE +"%s", +END +IF R56 EQ $82000000 +AND R20 EQ 10 +AND R17 EQ 1 + WRITE +"\\$%0.2lX", +END +IF R56 EQ $82000000 +AND R20 EQ 10 + READ R1 WORD + READ R2 WORD + WRITE +$%0.4lX,$%0.4lX} // key equivalents\n +END +IF R56 EQ $82000000 + WRITE + }};\n + WRITE +};\n\n +END +# EditLineControl :::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $83000000 pCount 8 9 10 + READ R1 WORD get maxSize + WRITE + $%0.4lX, // maxSize\n +END +IF R56 EQ $83000000 +AND R20 EQ 8 + READ R1 LONG defaultRef + NAME R1 $8006 + WRITE + %s // defaultRef\n +END +IF R56 EQ $83000000 +AND R20 GT 8 + READ R1 LONG defaultRef + NAME R1 $8006 + WRITE + %s, // defaultRef\n +END +IF R56 EQ $83000000 +AND R20 EQ 9 + READ R1 WORD pwChar + WRITE + $%0.4lX // pwChar\n +END +IF R56 EQ $83000000 +AND R20 GT 9 + READ R1 WORD pwChar + WRITE + $%0.4lX, // pwChar\n +END +IF R56 EQ $83000000 +AND R20 EQ 10 + READ R1 WORD keyMask + WRITE + $%0.4lX // KeyMask\n +END +IF R56 EQ $83000000 + WRITE + }};\n + WRITE +};\n\n +END +# RadioControl ::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $84000000 pCount 8 9 10 + READ R1 LONG get titleRef + NAME R1 $8006 + WRITE + %s, // titleRef\n +END +IF R56 EQ $84000000 +AND R20 EQ 8 + READ R1 WORD get initialValue + WRITE + $%0.4lX // initialValue\n +END +IF R56 EQ $84000000 +AND R20 GT 8 + READ R1 WORD get initialValue + WRITE + $%0.4lX, // initialValue\n +END +IF R56 EQ $84000000 +AND R20 EQ 9 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $84000000 +AND R20 GT 9 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s, // colorTableRef\n +END +IF R56 EQ $84000000 +AND R20 EQ 10 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $84000000 +AND R20 EQ 10 +AND R17 NE 1 + WRITE + {"%s", +END +IF R56 EQ $84000000 +AND R20 EQ 10 +AND R17 EQ 1 + WRITE + {"\\$%0.2lX", +END +IF R56 EQ $84000000 +AND R20 EQ 10 + READ R1 BYTE + CTRL R1 5 convert to ASCII +END +IF R56 EQ $84000000 +AND R20 EQ 10 +AND R17 NE 1 + WRITE +"%s", +END +IF R56 EQ $84000000 +AND R20 EQ 10 +AND R17 EQ 1 + WRITE +"\\$%0.2lX", +END +IF R56 EQ $84000000 +AND R20 EQ 10 + READ R1 WORD + READ R2 WORD + WRITE +$%0.4lX,$%0.4lX} // key equivalents\n +END +IF R56 EQ $84000000 + WRITE + }};\n + WRITE +};\n\n +END +# EditTextControl :::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $85000000 pCount 7 to 23 +AND R20 EQ 7 + READ R1 LONG get textFlags + WRITE + $%0.8lX // textFlags\n +END +IF R56 EQ $85000000 +AND R20 GT 7 + READ R1 LONG get textFlags + WRITE + $%0.8lX, // textFlags\n +END +IF R56 EQ $85000000 +AND R20 EQ 8 + WRITE + { + READ R1 WORD get indentRect + READ R2 WORD + READ R3 WORD + READ R4 WORD + WRITE +%.3ld,%.3ld,%.3ld,%.3ld} // indentRect\n +END +IF R56 EQ $85000000 +AND R20 GT 8 + WRITE + { + READ R1 WORD get indentRect + READ R2 WORD + READ R3 WORD + READ R4 WORD + WRITE +%.3ld,%.3ld,%.3ld,%.3ld}, // indentRect\n +END +IF R56 EQ $85000000 +AND R20 EQ 9 + READ R1 LONG get vertBar + WRITE + $%0.8lX // vertBar\n +END +IF R56 EQ $85000000 +AND R20 GT 9 + READ R1 LONG get vertBar + WRITE + $%0.8lX, // vertBar\n +END +IF R56 EQ $85000000 +AND R20 EQ 10 + READ R1 WORD get vertAmount + WRITE + $%0.4lX // vertAmount\n +END +IF R56 EQ $85000000 +AND R20 GT 10 + READ R1 WORD get vertAmount + WRITE + $%0.4lX, // vertAmount\n +END +IF R56 EQ $85000000 +AND R20 EQ 11 + READ R1 LONG get horzBar + WRITE + $%0.8lX // horzBar\n +END +IF R56 EQ $85000000 +AND R20 GT 11 + READ R1 LONG get horzBar + WRITE + $%0.8lX, // horzBar\n +END +IF R56 EQ $85000000 +AND R20 EQ 12 + READ R1 WORD get horzAmount + WRITE + $%0.4lX // horzAmount\n +END +IF R56 EQ $85000000 +AND R20 GT 12 + READ R1 WORD get horzAmount + WRITE + $%0.4lX, // horzAmount\n +END +IF R56 EQ $85000000 +AND R20 EQ 13 + READ R1 LONG get styleRef + WRITE + $%0.8lX // styleRef\n +END +IF R56 EQ $85000000 +AND R20 GT 13 + READ R1 LONG get styleRef + WRITE + $%0.8lX, // styleRef\n +END +IF R56 EQ $85000000 +AND R20 EQ 14 + READ R1 WORD get textDescriptor + WRITE + $%0.4lX // textDescriptor\n +END +IF R56 EQ $85000000 +AND R20 GT 14 + READ R1 WORD get textDescriptor + WRITE + $%0.4lX, // textDescriptor\n +END +IF R56 EQ $85000000 +AND R20 EQ 15 + READ R1 LONG get textRef + NAME R1 $8006 + WRITE + %s // textRef\n +END +IF R56 EQ $85000000 +AND R20 GT 15 + READ R1 LONG get textRef + NAME R1 $8006 + WRITE + %s, // textRef\n +END +IF R56 EQ $85000000 +AND R20 EQ 16 + READ R1 LONG get textLength + WRITE + $%0.8lX // textLength\n +END +IF R56 EQ $85000000 +AND R20 GT 16 + READ R1 LONG get textLength + WRITE + $%0.8lX, // textLength\n +END +IF R56 EQ $85000000 +AND R20 EQ 17 + READ R1 LONG get maxChars + WRITE + $%0.8lX // maxChars\n +END +IF R56 EQ $85000000 +AND R20 GT 17 + READ R1 LONG get maxChars + WRITE + $%0.8lX, // maxChars\n +END +IF R56 EQ $85000000 +AND R20 EQ 18 + READ R1 LONG get maxLines + WRITE + $%0.8lX // maxLines\n +END +IF R56 EQ $85000000 +AND R20 GT 18 + READ R1 LONG get maxLines + WRITE + $%0.8lX, // maxLines\n +END +IF R56 EQ $85000000 +AND R20 EQ 19 + READ R1 WORD get maxCharsPerLine + WRITE + $%0.4lX // maxCharsPerLine\n +END +IF R56 EQ $85000000 +AND R20 GT 19 + READ R1 WORD get maxCharsPerLine + WRITE + $%0.4lX, // maxCharsPerLine\n +END +IF R56 EQ $85000000 +AND R20 EQ 20 + READ R1 WORD get maxHeight + WRITE + $%0.4lX // maxHeight\n +END +IF R56 EQ $85000000 +AND R20 GT 20 + READ R1 WORD get maxHeight + WRITE + $%0.4lX, // maxHeight\n +END +IF R56 EQ $85000000 +AND R20 EQ 21 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $85000000 +AND R20 GT 21 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s, // colorTableRef\n +END +IF R56 EQ $85000000 +AND R20 EQ 22 + READ R1 WORD get drawMode + WRITE + $%0.4lX // drawMode\n +END +IF R56 EQ $85000000 +AND R20 GT 22 + READ R1 LONG get drawMode + WRITE + $%0.4lX, // drawMode\n +END +IF R56 EQ $85000000 +AND R20 EQ 23 + READ R1 LONG get filterProcPtr + WRITE + $%0.8lX // filterProcPtr\n +END +IF R56 EQ $85000000 + WRITE + }};\n + WRITE +};\n\n +END +# ScrollControl ::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $86000000 pCount 9 10 + READ R1 WORD + WRITE + $%0.4lX, // maxSize\n + READ R1 WORD + WRITE + $%0.4lX, // viewSize\n +END +IF R56 EQ $86000000 +AND R20 EQ 9 + READ R1 WORD get initialValue + WRITE + $%0.4lX // initialValue\n +END +IF R56 EQ $86000000 +AND R20 GT 9 + READ R1 WORD get initialValue + WRITE + $%0.4lX, // initialValue\n +END +IF R56 EQ $86000000 +AND R20 EQ 10 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $86000000 + WRITE + }};\n + WRITE +};\n\n +END +# PopUpControl ::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $87000000 pCount 9 10 + READ R1 WORD + WRITE + $%0.4lX, // titleWidth\n + READ R1 LONG + NAME R1 $8009 + WRITE + %s, // menuRef\n +END +IF R56 EQ $87000000 +AND R20 EQ 9 + READ R1 WORD get initialValue + WRITE + $%0.4lX // initialValue\n +END +IF R56 EQ $87000000 +AND R20 GT 9 + READ R1 WORD get initialValue + WRITE + $%0.4lX, // initialValue\n +END +IF R56 EQ $87000000 +AND R20 EQ 10 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $87000000 + WRITE + }};\n + WRITE +};\n\n +END +# GrowControl :::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $88000000 pCount 6 7 +AND R20 EQ 7 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $88000000 + WRITE + }};\n + WRITE +};\n\n +END +# ListControl :::::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $89000000 pCount 14 15 + READ R1 WORD + WRITE + $%0.4lX, // listSize\n + READ R1 WORD + WRITE + $%0.4lX, // listView\n + READ R1 WORD + WRITE + $%0.4lX, // listType\n + READ R1 WORD + WRITE + $%0.4lX, // listStart\n + READ R1 LONG + WRITE + // $%0.8lX, // listDraw (pointer to draw routine)\n + READ R1 WORD + WRITE + $%0.4lX, // listMemHeight\n + READ R1 WORD + WRITE + $%0.4lX, // listMemSize\n +END +IF R56 EQ $89000000 +AND R20 EQ 14 + READ R1 LONG + WRITE + $%0.8lX // listRef\n +END +IF R56 EQ $89000000 +AND R20 GT 14 + READ R1 LONG + WRITE + $%0.8lX, // listRef\n +END +IF R56 EQ $89000000 +AND R20 EQ 15 + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $89000000 + WRITE + }};\n + WRITE +};\n\n +END +# PictureControl ::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $8D000000 pCount 7 + READ R1 LONG + NAME R1 $8002 + WRITE + %s // pictureRef\n + WRITE + }};\n + WRITE +};\n\n + +END +# ThermometerControl ::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $87FF0002 pCount 8 9 + READ R1 WORD + WRITE + $%0.4lX, // value\n +END +IF R56 EQ $87FF0002 +AND R20 EQ 8 + READ R1 WORD + WRITE + $%0.4lX // scale\n +END +IF R56 EQ $87FF0002 +AND R20 GT 8 + READ R1 WORD + WRITE + $%0.4lX, // scale\n + READ R1 LONG get colorTableRef + NAME R1 $800D + WRITE + %s // colorTableRef\n +END +IF R56 EQ $87FF0002 + WRITE + }};\n + WRITE +};\n\n +END +# RectangleControl ::::::::::::::::::::::::::::::::::::::::::::::::::::: +IF R56 EQ $87FF0003 pCount 6 8 9 10 +AND R20 EQ 8 + READ R1 WORD + WRITE + $%0.4lX, // pen height\n + READ R1 WORD +END +IF R56 EQ $87FF0003 +AND R20 GT 8 + WRITE + $%0.4lX, // pen width\n +END +IF R56 EQ $87FF0003 +AND R20 EQ 8 + WRITE + $%0.4lX // pen width\n +END +IF R56 EQ $87FF0003 +AND R20 GT 8 + READ R1 WORD + WRITE + $"%0.4lX + READ R1 WORD + WRITE + %0.4lX + READ R1 WORD + WRITE + %0.4lX + READ R1 WORD +END +IF R56 EQ $87FF0003 +AND R20 GT 9 + WRITE + %0.4lX", // pen mask\n +END +IF R56 EQ $87FF0003 +AND R20 EQ 9 + WRITE + %0.4lX" // pen mask\n +END +IF R56 EQ $87FF0003 +AND R20 GT 9 +LOAD R21 32 +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + $"%0.4lX %0.4lX %0.4lX %0.4lX"\n +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + $"%0.4lX %0.4lX %0.4lX %0.4lX"\n +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + $"%0.4lX %0.4lX %0.4lX %0.4lX"\n +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + $"%0.4lX %0.4lX %0.4lX %0.4lX" // pen pattern\n +END +IF R56 EQ $87FF0003 + WRITE + }};\n + WRITE +};\n\n +END +DONE $8004 +# +# +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rC1InputString - $8005 +# rPString - $8006 +# rTextForLETextBox2 $800B +# rTextBlock - $8011 +# rAlertString - $8015 +# rText - $8016 +# rCString - $801D +# rErrorString - $8020 +# rWString - $8022 +# rC1OutputString - $8023 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8005 rC1InputString +TYPE $8006 rPString +TYPE $800B rTextForLETextBox2 +TYPE $8011 rTextBlock +TYPE $8015 rAlertString +TYPE $8016 rText +TYPE $801D rCString +TYPE $8020 rErrorString +TYPE $8022 rWString +TYPE $8023 rC1OutputString +NAME R1 0 +LOAD R2 R19 +LOAD R25 R1 +IF R13 EQ $8005 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rC1InputString Templates\n\n + END +IF R13 EQ $8005 + READ R20 WORD + WRITE +resource rC1InputString (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $8006 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rPString Templates\n\n + END +IF R13 EQ $8006 + READ R20 BYTE + WRITE +resource rPString (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $800B + IF R15 EQ 1 # put in header if first one + WRITE +// --- rTextForLETextBox2 Templates\n\n + END +IF R13 EQ $800B + LOAD R20 R12 + LOAD R2 R12 + WRITE +#define %s_CNT %ld /* move this line to the top of this file */\n\n + LOAD R2 R19 + WRITE +resource rTextForLETextBox2 (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $8011 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rTextBlock Templates\n\n + END +IF R13 EQ $8011 + LOAD R20 R12 + WRITE +resource rTextBlock (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $8015 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rAlertString Templates\n\n + END +IF R13 EQ $8015 + LOAD R20 R12 + DEC R20 1 + WRITE +resource rAlertString (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $8016 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rText Templates\n\n + END +IF R13 EQ $8016 + LOAD R20 R12 + WRITE +resource rText (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $801D + IF R15 EQ 1 # put in header if first one + WRITE +// --- rCString Templates\n\n + END +IF R13 EQ $801D + LOAD R20 R12 + DEC R20 1 + WRITE +resource rCString (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $8020 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rErrorString Templates\n\n + END +IF R13 EQ $8020 + LOAD R20 R12 + DEC R20 1 + WRITE +resource rErrorString (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $8022 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rWString Templates\n\n + END +IF R13 EQ $8022 + LOAD R20 R12 + DEC R20 1 + WRITE +resource rWString (%s, $%0.4lX) {\n +ELSE +IF R13 EQ $8023 + IF R15 EQ 1 # put in header if first one + WRITE +// --- rC1OutputString Templates\n\n + END +IF R13 EQ $8023 + LOAD R20 R12 + DEC R20 4 + WRITE +resource rC1OutputString (%s, $%0.4lX) {\n + READ R1 WORD + READ R2 WORD + WRITE + $%0.4lX, // buffer length\n +END +# insert the actual text here :::::::::::::::::::::::::::::::::::::::: +WRITE + " +LOOP R23 +LOAD R22 64 set the count to 64 characters per line... +IF R20 LT 64 + LOAD R22 R20 ...or remaining characters +END +READ R1 NSTR R22 request a string of r22 characters +IF R17 NE 1 a string is referenced by R1 +AND R20 GT 0 + WRITE +%s +ELSE + IF R20 GT 0 + WRITE +\\$%0.2lX +END +DEC R20 R16 reduce the count by those processed +IF R20 GT 0 + WRITE +"\n " + CONT R23 go back if not done +END +IF R13 EQ $8015 + WRITE +"\n "\\$00 +END +WRITE +"\n +WRITE +};\n\n +# +DONE 0 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rStringList - $8007 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8007 rStringList +IF R15 EQ 1 put a header in if this is the first one + WRITE +// --- rStringList Templates\n\n +END +# +NAME R20 0 +READ R21 WORD +# +LOAD R1 R20 name ref +LOAD R2 R19 +WRITE +resource rStringList (%s, $%0.4lX) {\n {\n +# +LOOP R100 +# +READ R23 BYTE +LOAD R1 R23 length byte +# +LOOP R101 +# +IF R23 GE 48 set the count to 48 or remaining characters + LOAD R24 48 +ELSE + LOAD R24 R23 +END +READ R1 NSTR R24 request a string of r22 characters +IF R17 EQ 0 a string is referenced by R1 +OR R17 EQ 2 + WRITE + "%s" +ELSE +IF R17 EQ 1 a value is contained in R1 + WRITE + "\$%0.2lX" +END +DEC R23 R16 reduce the count by those processed +IF R23 GT 0 + WRITE +\n + CONT R101 go back if not done +END +DEC R21 1 +IF R21 GT 0 + WRITE +,\n + CONT R100 +END +LOAD R1 R20 +WRITE +\n }\n};\n\n +DONE 0 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rMenuBar - $8008 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8008 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Menu Bar Definitions\n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rMenuBar (%s, $%0.4lX) {\n +WRITE + {\n + READ R1 WORD # trash version + READ R1 WORD # trash menuFlag + READ R21 LONG # look ahead 1 + LOOP R20 + LOAD R1 R21 + READ R21 LONG + NAME R1 $8009 # get rMenu + IF R21 NE 0 + WRITE + %s,\n + ELSE + WRITE + %s\n + WRITE + };\n + WRITE +};\n\n + DONE 0 + END + CONT R20 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rMenu - $8009 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8009 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Menu Definitions\n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rMenu (%s, $%0.4lX) {\n +READ R1 WORD # trash version +READ R1 WORD +WRITE + $%0.4lX, // menuID\n +READ R1 WORD +WRITE + $%0.4lX, // menuFlag\n +READ R1 LONG +NAME R1 $8006 +WRITE + %s, { // menuTitleRef\n + READ R21 LONG # look ahead 1 + LOOP R20 + LOAD R1 R21 + READ R21 LONG + NAME R1 $800A # get rMenuItem + IF R21 NE 0 + WRITE + %s,\n + ELSE + WRITE + %s\n + WRITE + };\n + WRITE +};\n\n + DONE 0 + END + CONT R20 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rMenuItem - $800A +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $800A +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Menu Item Definitions\n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rMenuItem (%s, $%0.4lX) {\n +READ R1 WORD # trash version +READ R1 WORD +WRITE + $%0.4lX, // itemID\n +READ R1 BYTE +CTRL R1 5 # convert to ASCII +IF R17 NE 1 + WRITE + "%s", +ELSE + WRITE + "", +END +READ R1 BYTE +CTRL R1 5 # convert to ASCII +IF R17 NE 1 + WRITE +"%s", // itemChar, itemAltChar\n +ELSE + WRITE +"", // itemChar, itemAltChar\n +END +READ R1 WORD +IF R1 EQ 0 + WRITE + NIL, // itemCheck\n +ELSE + WRITE + $%0.4lX, // itemCheck\n +END +READ R1 WORD +WRITE + $%0.4lX, // itemFlag\n +READ R1 LONG +NAME R1 $8006 +WRITE + %s // itemTitleRef\n +WRITE +};\n\n +DONE $800A +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rCtlDefProc - $800C +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $800C +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Control Definition Procedures\n\n +END +LOAD R1 R13 # get resource type +NAME R2 0 # get label (either from rResName or Genesys default) +LOAD R3 R19 +WRITE +data $%0.4lX (%s, $%0.4lX) {\n +# do resource in hex bytes ::::::::::::::::::::::::::::::::::::::::::: +LOAD R20 R12 # get res size +# where the action is :::::::::::::::::::::::::::::::::::::::::::::::: +LOOP R24 +LOAD R21 32 +READ R1 BYTE +WRITE + $"%0.2lX +DEC R21 1 # remove one byte +DEC R20 1 +LOOP R25 +READ R1 BYTE +WRITE +%0.2lX +DEC R21 1 # remove another byte +DEC R20 1 +IF R20 NE 0 + IF R21 NE 0 + CONT R25 # finish line + END +END +IF R20 NE 0 +WRITE +"\n + CONT R24 # do next line +ELSE +WRITE +";\n +WRITE +};\n\n +END +DONE $800C +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rWindParam1 - $800E +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $800E +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Window Templates\n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rWindParam1 (%s, $%0.4lX) {\n +READ R1 WORD # trash plLength +READ R1 WORD +WRITE + $%0.4lX, // plFrame (frame bits)\n +READ R1 LONG +IF R1 NE 0 + NAME R1 $8006 + WRITE + %s, // plTitle (title ID)\n +ELSE + WRITE + NIL, // plTitle (no Title)\n +END +READ R1 LONG +WRITE + $%0.8lX, // plRefCon\n +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + {%.3ld,%.3ld,%.3ld,%.3ld}, // plZoomRect\n +READ R1 LONG +IF R1 NE 0 + NAME R1 $8010 + WRITE + %s, // plColorTable\n +ELSE + WRITE + NIL, // plColorTable (standard colors)\n +END +READ R1 WORD +READ R2 WORD +WRITE + {$%0.4lX, $%0.4lX}, // plYOrigin, plXOrigin\n +READ R1 WORD +READ R2 WORD +WRITE + {$%0.4lX, $%0.4lX}, // plDataHeight, plDataWidth\n +READ R1 WORD +READ R2 WORD +WRITE + {$%0.4lX, $%0.4lX}, // plMaxHeight, plMaxWidth\n +READ R1 WORD +READ R2 WORD +WRITE + {$%0.4lX, $%0.4lX}, // plVerScroll, plHorScroll\n +READ R1 WORD +READ R2 WORD +WRITE + {$%0.4lX, $%0.4lX}, // plVerPage, plHorPage\n +READ R1 LONG +WRITE + $%0.8lX, // plInfoText (info RefCon)\n +READ R1 WORD +WRITE + $%0.4lX, // plInfoHeight\n +READ R1 LONG # skip plDefProc +READ R1 LONG # skip plInfoDraw +READ R1 LONG # skip plContentDraw +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + {%.3ld,%.3ld,%.3ld,%.3ld}, // plPosition\n +READ R1 LONG +IF R1 EQ $FFFFFFFF + WRITE + infront, // plPlane\n +ELSE + WRITE + $%0.8lX, // plPlane\n +END +READ R1 LONG +READ R22 WORD +LOAD R23 R22 +BIT R22 AND $F +IF R22 EQ 9 + LOAD R21 $8003 # rControlList +ELSE + LOAD R21 $8004 # rControlTemplate +END +IF R1 NE 0 + NAME R1 R21 + WRITE + %s, // plControlList\n +ELSE + WRITE + NIL, // plControlList (none)\n +END +LOAD R1 R23 +WRITE + $%0.4lX // plInDesc\n +WRITE +};\n\n +DONE $800E +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rWindColor - $8010 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8010 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Window Color Templates\n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rWindColor (%s, $%0.4lX) {\n +READ R1 WORD +WRITE + $%0.4lX, // frameColor\n +READ R1 WORD +WRITE + $%0.4lX, // titleColor\n +READ R1 WORD +WRITE + $%0.4lX, // tBarColor\n +READ R1 WORD +WRITE + $%0.4lX, // growColor\n +READ R1 WORD +WRITE + $%0.4lX // infoColor\n +WRITE +};\n\n +DONE $8010 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rToolStartup - $8013 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8013 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Tool Startup Table Templates\n\n +END +PTEXT R51 +#Tool Locator +PTEXT R52 +#Memory Manager +PTEXT R53 +#Miscellaneous Tools +PTEXT R54 +#QuickDraw II +PTEXT R55 +#Desk Manager +PTEXT R56 +#Event Manager +PTEXT R57 +#Scheduler +PTEXT R58 +#Sound Manager +PTEXT R59 +#Apple Desktop Bus +PTEXT R60 +#SANE +PTEXT R61 +#Integer Math +PTEXT R62 +#Text Tools +PTEXT R63 +#(Invalid Tool) +PTEXT R64 +#Window Manager +PTEXT R65 +#Menu Manager +PTEXT R66 +#Control Manager +PTEXT R67 +#System Loader +PTEXT R68 +#QuickDraw II Aux. +PTEXT R69 +#Print Manager +PTEXT R70 +#LineEdit Tools +PTEXT R71 +#Dialog Manager +PTEXT R72 +#Scrap Manager +PTEXT R73 +#Standard File Tools +PTEXT R74 +#Disk Utilities +PTEXT R75 +#Note Synthesizer +PTEXT R76 +#Note Sequencer +PTEXT R77 +#Font Manager +PTEXT R78 +#List Manager +PTEXT R79 +#ACE Tools +PTEXT R80 +#Resource Manager +PTEXT R81 +#(Invalid Tool) +PTEXT R82 +#MIDI Tool Set +PTEXT R83 +#VOC Tool Set +PTEXT R84 +#TextEdit Manager +NAME R1 0 +LOAD R2 R19 +WRITE +resource rToolStartup (%s, $%0.4lX) {\n +READ R1 WORD # trash flags +READ R1 WORD +WRITE + $%0.4lX, { // videoMode\n + READ R1 WORD # trash resFileID + READ R1 LONG # trash dPageHandle + READ R21 WORD # keep numTools + LOOP R20 + READ R1 WORD + READ R2 WORD + LOAD R50 R1 + INC R50 50 + WRITE + %.2ld, $%0.4lX + DEC R21 1 + INDEX R1 R50 + IF R21 NE 0 + WRITE +, // %p \n + ELSE + WRITE + // %p \n + END +IF R21 NE 0 + CONT R20 +END +WRITE + }\n +WRITE +};\n\n +DONE $8013 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rResName - $8014 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8014 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +\n// --- type $%0.4lX defines\n\n +END +NAME R1 0 +LOAD R2 R14 +WRITE +#define %s $%0.8lX\n +DONE 0 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rTwoRects - $801A +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $801A +IF R15 EQ 1 + LOAD R1 R13 + WRITE +// --- TwoRects Templates\n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rTwoRects (%s, $%0.4lX) {\n +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + {%.3ld,%.3ld,%.3ld,%.3ld}, // rect 1\n +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + {%.3ld,%.3ld,%.3ld,%.3ld} // rect 2\n +WRITE +};\n\n +DONE $801A +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rCDEVFlags - $8019 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8019 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- CDEVFlags Templates \n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rCDEVFlags (%s, $%0.4lX) {\n +READ R1 WORD +WRITE + $%0.4lX, // CDEVFlags\n +READ R1 BYTE +WRITE + $%0.2lX, // enabled\n +READ R1 BYTE +WRITE + $%0.2lX, // version\n +READ R1 BYTE +WRITE + $%0.2lX, // machine ROM version\n +READ R1 BYTE +WRITE + $%0.2lX, // System Disk version\n +READ R1 WORD +READ R2 WORD +READ R3 WORD +READ R4 WORD +WRITE + {%.2ld,%.2ld,%.3ld,%.3ld}, // dataRect - top left MUST be 0,0\n +READ R1 PSTR +WRITE + "%s",\n +READ R1 PSTR +WRITE + "%s",\n +READ R1 PSTR +WRITE + "%s"\n +WRITE +};\n\n +DONE $8019 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rCursor - $8027 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8027 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Cursor Templates \n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rCursor (%s, $%0.4lX) {\n +READ R1 WORD +LOAD R20 R1 +WRITE + $%0.4lX, // height\n +READ R1 WORD +LOAD R21 R1 +WRITE + $%0.4lX, // width\n {\n +# do cursor image :::::::::::::::::::::::::::::::::::::::::::::::::::: +LOAD R22 R20 +LOOP R24 +LOAD R23 R21 +READ R1 WORD +WRITE + $%0.4lX +DEC R23 1 +LOOP R25 +READ R1 WORD +WRITE +, $%0.4lX +DEC R23 1 +IF R23 NE 0 + CONT R25 +ELSE + IF R22 NE 1 + WRITE +,\n +END +DEC R22 1 # do next row +IF R22 NE 0 + CONT R24 +ELSE + WRITE +\n },\n {\n +END +# do cursor mask ::::::::::::::::::::::::::::::::::::::::::::::::::::: +LOOP R24 +LOAD R23 R21 +READ R1 WORD +WRITE + $%0.4lX +DEC R23 1 +LOOP R25 +READ R1 WORD +WRITE +, $%0.4lX +DEC R23 1 +IF R23 NE 0 + CONT R25 +ELSE + IF R20 NE 1 + WRITE +,\n +END +DEC R20 1 # do next row +IF R20 NE 0 + CONT R24 +ELSE + WRITE +\n },\n +END +READ R1 WORD +WRITE + $%0.4lX, // hotspot Y\n +READ R1 WORD +WRITE + $%0.4lX, // hotspot X\n +READ R1 WORD +WRITE + $%0.4lX // cursor ID (640 mode)\n +WRITE +};\n\n +DONE $8027 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rVersion - $8029 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $8029 +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Version Templates \n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rVersion (%s, $%0.4lX) {\n +WRITE + { +READ R21 BYTE release +READ R22 BYTE stage +READ R23 BYTE minor/bug +READ R1 BYTE Major +WRITE +%ld, +LOAD R1 R23 +DIV R1 16 +WRITE + %ld, +LOAD R1 R23 +BIT R1 AND $F +WRITE + %ld, +BIT R22 SR 5 +IF R22 EQ 1 + WRITE + development, +END +IF R22 EQ 2 + WRITE + alpha, +END +IF R22 EQ 3 + WRITE + beta, +END +IF R22 EQ 4 + WRITE + final, +END +IF R22 EQ 5 + WRITE + release, +END +LOAD R1 R21 +WRITE +%lx},\n +READ R1 WORD Country Code +IF R1 EQ 0 + WRITE + verUS,\n +END +IF R1 EQ 1 + WRITE + verFrance,\n +END +IF R1 EQ 2 + WRITE + verBritain,\n +END +IF R1 EQ 3 + WRITE + verGermany,\n +END +IF R1 EQ 4 + WRITE + verItaly,\n +END +IF R1 EQ 5 + WRITE + verNetherlands,\n +END +IF R1 EQ 6 + WRITE + verBelgiumLux,\n +END +IF R1 EQ 7 + WRITE + verSweden,\n +END +IF R1 EQ 8 + WRITE + verSpain,\n +END +IF R1 EQ 9 + WRITE + verDenmark,\n +END +IF R1 EQ 10 + WRITE + verPortugal,\n +END +IF R1 EQ 11 + WRITE + verFrCanada,\n +END +IF R1 EQ 12 + WRITE + verNorway,\n +END +IF R1 EQ 13 + WRITE + verIsrael,\n +END +IF R1 EQ 14 + WRITE + verJapan,\n +END +IF R1 EQ 15 + WRITE + verAustralia,\n +END +IF R1 EQ 16 + WRITE + verArabic,\n +END +IF R1 EQ 17 + WRITE + verFinland,\n +END +IF R1 EQ 18 + WRITE + verFRSwiss,\n +END +IF R1 EQ 19 + WRITE + verGRSwiss,\n +END +IF R1 EQ 20 + WRITE + verGreece,\n +END +IF R1 EQ 21 + WRITE + verIceland,\n +END +IF R1 EQ 22 + WRITE + verMalta,\n +END +IF R1 EQ 23 + WRITE + verCyprus,\n +END +IF R1 EQ 24 + WRITE + verTurkey,\n +END +IF R1 EQ 25 + WRITE + verYugoslavia,\n +END +IF R1 EQ 26 + WRITE + verIndia,\n +END +IF R1 EQ 27 + WRITE + verPakistan,\n +END +IF R1 EQ 41 + WRITE + verLithuania,\n +END +IF R1 EQ 42 + WRITE + verPoland,\n +END +IF R1 EQ 43 + WRITE + verHungary,\n +END +IF R1 EQ 44 + WRITE + verEstonia,\n +END +IF R1 EQ 45 + WRITE + verLatvia,\n +END +IF R1 EQ 46 + WRITE + verLapland,\n +END +IF R1 EQ 47 + WRITE + verFaeroeIsl,\n +END +IF R1 EQ 48 + WRITE + verIran,\n +END +IF R1 EQ 49 + WRITE + verRussia,\n +END +IF R1 EQ 50 + WRITE + verIreland,\n +END +IF R1 EQ 51 + WRITE + verKorea,\n +END +IF R1 EQ 52 + WRITE + verChina,\n +END +IF R1 EQ 53 + WRITE + verTaiwan,\n +END +IF R1 EQ 54 + WRITE + verThailand,\n +END +READ R1 PSTR +WRITE + "%s",\n +READ R1 PSTR +WRITE + "%s"\n +WRITE +};\n\n +DONE $8029 +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rComment - $802A +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $802A +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Comment Templates \n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rComment (%s, $%0.4lX) {\n +WRITE + " +LOAD R20 R12 +LOOP R23 +LOAD R22 64 set the count to 64 characters per line... +IF R20 LT 64 + LOAD R22 R20 ...or remaining characters +END +READ R1 NSTR R22 request a string of r22 characters +IF R17 NE 1 a string is referenced by R1 +AND R20 GT 0 + WRITE +%s +ELSE + IF R20 GT 0 + WRITE +\\$%0.2lX +END +DEC R20 R16 reduce the count by those processed +IF R20 GT 0 + WRITE +"\n " + CONT R23 go back if not done +END +WRITE +"\n +WRITE +};\n\n +DONE $802A +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rBundle - $802B +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $802B +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- Bundle Templates \n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rBundle (%s, $%0.4lX) {\n +READ R1 WORD version +READ R20 WORD offset +READ R1 LONG +NAME R1 $8001 +WRITE + %s, // Icon ID for the application\n +READ R1 LONG +WRITE + $%0.8lX, // Bundle ID of this resource\n +READ R1 LONG space for handle +READ R21 WORD OneDocCount +WRITE + {\n +LOOP R23 + READ R24 WORD struct size + READ R25 WORD offset to match + READ R26 WORD pCount + IF R26 GT 0 + WRITE + {\n + READ R1 WORD + LOAD R28 R1 + BIT R28 AND 1 + IF R28 EQ 0 + WRITE + DontLaunch + ELSE + WRITE + LaunchThis + END + LOAD R28 R1 + BIT R28 AND $10 + IF R28 NE 0 + WRITE + +reads + END + LOAD R28 R1 + BIT R28 AND $20 + IF R28 NE 0 + WRITE + +writes + END + LOAD R28 R1 + BIT R28 AND $20 + IF R28 NE 0 + WRITE + +native + END + LOAD R28 R1 + BIT R28 AND $40 + IF R28 NE 0 + WRITE + +creator + END + WRITE +, // voting clout\n + END + IF R26 GT 1 + READ R1 LONG + IF R26 GT 2 + WRITE + {%ld}, + ELSE + WRITE + {%ld} + END + WRITE + // rFinderPath ID space\n + READ R1 LONG space for handle + END + IF R26 GT 2 + READ R1 LONG + IF R26 GT 3 + WRITE + {$%0.8lX}, + ELSE + WRITE + {$%0.8lX} + END + WRITE + // large rIcon ID for this document\n + READ R1 LONG space for handle + END + IF R26 GT 3 + READ R1 LONG + IF R26 GT 4 + WRITE + {$%0.8lX}, + ELSE + WRITE + {$%0.8lX} + END + WRITE + // small rIcon ID for this document\n + READ R1 LONG space for handle + END + IF R26 GT 4 + READ R1 PSTR + WRITE + "%s",\n + END + IF R26 NE 0 + WRITE + },\n + END + READ R27 LONG + LOAD R1 R27 + WRITE + $%0.4lX, //match flags\n + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchFileType {{\n + READ R1 WORD + WRITE + $%0.4lX // filetype to match\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchAuxType {{\n + READ R1 LONG + WRITE + $%0.8lX, // auxtype mask\n + READ R1 LONG + WRITE + $%0.8lX // auxtype to match\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchFileName {{\n + READ R1 PSTR + WRITE + "%s" // filename string\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchCreateDate {{\n + READ R1 WORD + WRITE + $%0.4lX, // compare how\n + READ R1 BYTE + READ R2 BYTE + READ R3 BYTE + READ R4 BYTE + READ R5 BYTE + READ R6 BYTE + READ R7 BYTE + READ R8 BYTE + WRITE + $"%0.2lX %0.2lX %0.2lX %0.2lX %0.2lX %0.2lX %0.2lX %0.2lX"\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchModDate {{\n + READ R1 WORD + WRITE + $%0.4lX, // compare how\n + READ R1 BYTE + READ R2 BYTE + READ R3 BYTE + READ R4 BYTE + READ R5 BYTE + READ R6 BYTE + READ R7 BYTE + READ R8 BYTE + WRITE + $"%0.2lX %0.2lX %0.2lX %0.2lX %0.2lX %0.2lX %0.2lX %0.2lX"\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchLocalAccess {{\n + READ R1 WORD + WRITE + $%0.4lX, // access word mask\n + READ R1 WORD + WRITE + $%0.4lX // access word comparsion value\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchNetworkAccess {{\n + READ R1 LONG + WRITE + $%0.4lX, // access word mask\n + READ R1 LONG + WRITE + $%0.4lX // access word comparsion value\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchExtended {{\n + READ R1 WORD + WRITE + $%0.4lX, // mask for bits\n + READ R1 WORD + WRITE + $%0.4lX // is the file extended? (high bit)\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchHFSFileType {{\n + READ R1 LONG + WRITE + $%0.8lX // hfs filetype\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchHFSCreator {{\n + READ R1 LONG + WRITE + $%0.8lX // hfs creator type\n + WRITE + }},\n + ELSE + READ R1 WORD + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchOptionList {{\n + READ R29 WORD optionCount + LOOP R30 + WRITE + {\n + READ R31 WORD filesystems + WRITE + { + LOOP R32 + READ R1 WORD + WRITE +%0.4lX + DEC R31 1 + IF R31 GT 0 + WRITE +, + CONT R32 + END + WRITE +},\n + READ R1 WORD + WRITE + $%0.4lX,\n + READ R1 LONG + WRITE + $%0.8lX,\n + READ R1 LONG + WRITE + $%0.8lX,\n + READ R1 WORD + WRITE + $%0.4lX,\n + DEC R29 1 + IF R29 GT 0 + WRITE + },\n + CONT R30 + END + WRITE + }\n + WRITE + }},\n + ELSE + WRITE + Empty {},\n + END + READ R1 WORD Key + IF R1 NE 0 + WRITE + MatchEOF {{\n + READ R1 WORD + WRITE + %ld,\n + READ R1 LONG + WRITE + $%0.8lX\n + WRITE + }}\n + ELSE + WRITE + Empty {}\n + END + DEC R21 1 + IF R21 GT 0 + CONT R23 + END +WRITE + }\n +WRITE +}; +DONE $802B +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +# rUpdateInfo - $DEAD +# see https://speccie.uk/speccie/downloads/versions_developers_manual.pdf +#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +TYPE $DEAD +IF R15 EQ 1 put in header if first one + LOAD R1 R13 + WRITE +// --- UpdateInfo Templates \n\n + WRITE +#ifndef rUpdateInfo\n + WRITE +#define rUpdateInfo $DEAD\n + WRITE +type rUpdateInfo {\n + WRITE + integer = 0; // version must be zero */\n + WRITE + longint; // Resource ID of string holding app's display name\n + WRITE + longint; // ID of string holding author's name\n + WRITE + longint; // ID of string URL to the downloads folder\n + WRITE + longint; // ID of string for downloadable archive name\n + WRITE + longint; // ID of string for Versions.List data file\n + WRITE +};\n + WRITE +#endif\n\n +END +NAME R1 0 +LOAD R2 R19 +WRITE +resource rUpdateInfo (%s, $%0.4lX) {\n +READ R1 WORD + WRITE + $%0.4lX, // Reserved - Must Be Zero\n +READ R1 LONG +NAME R1 $8006 + WRITE + %s, // Application Display Name\n +READ R1 LONG +NAME R1 $8006 + WRITE + %s, // Authors Name\n +READ R1 LONG +NAME R1 $8006 + WRITE + %s, // Download Folder URL\n +READ R1 LONG +NAME R1 $8006 + WRITE + %s, // Download Archive Name\n +READ R1 LONG +NAME R1 $8006 + WRITE + %s // Versions.List Data File\n + WRITE +};\n\n +DONE $DEAD +# +# End of APWREZ scg template... Have a nice day :) +#