Home » Archimedes archive » Micro User » MU 1991-04.adf » PD-Stuff » Mod_Dis/ModDis201

Mod_Dis/ModDis201

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Micro User » MU 1991-04.adf » PD-Stuff
Filename: Mod_Dis/ModDis201
Read OK:
File size: 6B35 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >ModDis201
   20REM Revised script file format
   30REM Detects end-of-code with BIC
   40REM Handles help code correctly
   50REM Fixed negative bug in PROCloadtypes
   60REM Some support for out-of-module branches added
   70REM 'Acorn' compressed string format can now be selected
   80REM Works with modules with no title string
   90REM >ModDis200
  100REM New version recognises its own script files
  110REM OSWriteI recognised
  120REM Doesn't crash when padded string ends module
  130REM >ModDis105
  140REM Fixed bug with word in PROCask
  150REM Length of padded string now captured when writescript%=TRUE
  160REM Works if branch table not followed by code
  170REM >ModDis104
  180REM Fixed bug with SWI branch table overrun
  190REM Fixed bug with SWI mask
  200REM No more keypress prompts while reading script file
  210REM Warns about simultaneously reading and writing script file
  220REM >ModDis103
  230REM Can cope with some strings longer than 255 bytes (I think)
  240REM Copes with " character in strings
  250REM >ModDis102
  260REM Bundled macro for ADRlong implemented
  270REM >ModDis101
  280REM Scripts added
  290REM Bug with SWI table entries exceeding number of names fixed
  300REM >ModDis100
  310REM Keyword table now copes with zeros
  320REM Copes with ADR followed by ADD or SUB (ADRlong)
  330REM Speeded up final pass
  340REM Fixed bug in EQUW
  350REM >ModDisF
  360REM Sorted out bits,shift problem
  370REM >ModDisE
  380REM Tried to improve recognition of SWI branch table
  390REM Added external type (7)
  400REM Header labels now take precedence over sABCD
  410REM Alignment problem with SWI OS_WriteS fixed
  420REM >ModDisD
  430REM Debug information added
  440REM Better trapping for no SWI decoding code
  450REM >ModDisC
  460REM Recognises Configure keywords
  470REM Warns about coprocessor and undefined commands
  480REM Recognises CR-terminated strings and padded strings
  490REM Provision for loading and saving type% array
  500REM >ModDisB
  510REM Provision for LDR/STR Rn,exp
  520REM Speeded up Ask
  530
  540REM Lorcan Mongey
  550REM 56 Salisbury Court
  560REM Dublin Road
  570REM Belfast BT7 1DD
  580REM Tel: 0232 234386
  590
  600REM I can also be reached at the following BBS
  610
  620REM BBS              Telephone     ID
  630REM ----------------------------------------------
  640REM CIX              081 390 1244  lorcan@cix.uucp
  650REM World of Cryton  0749 670030   lorcan (#237)
  660REM Arcade           081 654 2212  lorcan (#417)
  670
  680PROCinit
  690PROCexternal
  710PROCheader
  730offset%=0
  740WHILEoffset%<=bytes%
  750  IFtype%(offset%)=0THENPROCask:offset%-=1
  760  offset%+=1
  770ENDWHILE
  780CLOSE#0
  800PROCdis
  810END
  820
  830DEFPROCaddress(RETURN offset%)
  840CASEtype%(offset%)OF
  850  WHEN0:
  860  WHEN3:ENDPROC
  870  OTHERWISE:ERROR255,"Expecting type 3 or 0"
  880ENDCASE
  890LOCALI%
  900address%=base%!offset%
  910FORI%=0TO3
  920  type%(offset%+I%)=3
  930NEXT
  940offset%+=4
  950ENDPROC
  960
  970DEFPROCadradd
  980LOCALI%,len2%
  990FORI%=0TO3
 1000  type%(offset%+I%)=5
 1010NEXT
 1020I%=INSTR(inst$,"#")
 1030dest$=MID$(inst$,I%+1,9)
 1040dest%=FNimm(dest$)+offset%+8
 1050PROCcheckformore
 1060IFdest%>bytes%ORdest%<0THENoffset%+=4:ENDPROC
 1070IFlabel$(dest%)=""THENlabel$(dest%)="x"+STR$~(dest%)
 1080IFtype%(dest%)=0THEN
 1090  IFdebug%THEN
 1100    COLOUR6
 1110    PRINT"Add",~offset%
 1120    COLOUR7
 1130  ENDIF
 1140  PROCwhatsthis(offset%,dest%)
 1150  CASEtype%OF
 1160    WHEN-4:PROCstringA(offset%)
 1170    WHEN-3:PROCpaddedstring(dest%,number%)
 1180    WHEN-2:PROCstringCR(dest%)
 1190    WHEN-1:PROCstring0(dest%)
 1200    WHEN 0:
 1210    WHEN 1:PROCbyte(dest%)
 1220    WHEN 2:PROCword(dest%)
 1230    WHEN 4:PROCdouble(dest%)
 1240    WHEN 5:PROCcode(dest%)
 1250  ENDCASE
 1260ENDIF
 1270offset%+=4
 1280ENDPROC
 1290
 1300DEFPROCadrsub
 1310LOCALI%
 1320FORI%=0TO3
 1330  type%(offset%+I%)=5
 1340NEXT
 1350I%=INSTR(inst$,"#")
 1360dest$=MID$(inst$,I%+1,9)
 1370dest%=offset%-FNimm(dest$)+8
 1380PROCcheckformore
 1390IFdest%>bytes%ORdest%<0THENoffset%+=4:ENDPROC
 1400IFlabel$(dest%)=""THENlabel$(dest%)="x"+STR$~(dest%)
 1410IFtype%(dest%)=0THEN
 1420  IFdebug%THEN
 1430    COLOUR6
 1440    PRINT"Sub",~offset%
 1450    COLOUR7
 1460  ENDIF
 1470  PROCwhatsthis(offset%,dest%)
 1480  CASEtype%OF
 1490    WHEN-4:PROCstringA(offset%)
 1500    WHEN-3:PROCpaddedstring(dest%,number%)
 1510    WHEN-2:PROCstringCR(dest%)
 1520    WHEN-1:PROCstring0(dest%)
 1530    WHEN 0:
 1540    WHEN 1:PROCbyte(dest%)
 1550    WHEN 2:PROCword(dest%)
 1560    WHEN 4:PROCdouble(dest%)
 1570    WHEN 5:PROCcode(dest%)
 1580  ENDCASE
 1590ENDIF
 1600offset%+=4
 1610ENDPROC
 1620
 1630DEFPROCalign(RETURN offset%)
 1640CASEtype%(offset%)OF
 1650  WHEN0:
 1660  WHEN6:ENDPROC
 1670  OTHERWISE:ERROR255,"Expecting type 6 or 0"
 1680ENDCASE
 1690LOCALpointer%
 1700pointer%=offset%+base%
 1710WHILEpointer%MOD4<>0
 1720  type%(offset%)=6
 1730  pointer%+=1
 1740  offset%+=1
 1750ENDWHILE
 1760ENDPROC
 1770
 1780DEFPROCask
 1790LOCALcount%,type%,I%,J%
 1800count%=1
 1810WHILEtype%(offset%+count%)=0AND(offset%+count%)<=bytes%ANDcount%<=68
 1820  count%+=1
 1830ENDWHILE
 1840OSCLI"MemoryI "+STR$~(offset%+base%-&20)+" +20"
 1850COLOUR1
 1860OSCLI"MemoryI "+STR$~(offset%+base%)+" +4"
 1870COLOUR7
 1880OSCLI"MemoryI "+STR$~(offset%+base%+4)+" +20"
 1890PRINT'count%," byte(s) at ";~offset%;" of unknown type"
 1900type%=0:number%=1
 1910IFNOTFNreplay(offset%,type%,number%)THEN
 1920  INPUTtype%
 1930  CASEtype%OF
 1940    WHEN-3     :INPUT"Length of padded string",number%
 1950    WHEN1,2,3,4:INPUT"How many",number%
 1960  ENDCASE
 1970  PROCcapture(offset%,type%,number%)
 1980ENDIF
 1990CASEtype%OF
 2000  WHEN-4:PROCstringA(offset%)
 2010  WHEN-3:PROCpaddedstring(offset%,number%)
 2020  WHEN-2:PROCstringCR(offset%)
 2030  WHEN-1:PROCstring0(offset%)
 2040  WHEN 1:FORJ%=1TOnumber%:PROCbyte(offset%):NEXT
 2050  WHEN 2:FORJ%=1TOnumber%:PROCword(offset%):NEXT
 2060  WHEN 3:FORJ%=1TOnumber%:PROCaddress(offset%):NEXT
 2070  WHEN 4:FORJ%=1TOnumber%:PROCdouble(offset%):NEXT
 2080  WHEN 5:PROCcode(offset%)
 2090  WHEN 6:PROCalign(offset%)
 2100ENDCASE
 2110ENDPROC
 2120
 2130DEFPROCbranch
 2140dest%=(((EVAL(RIGHT$(inst$,len%-7)))<<8)>>8)+offset%
 2150IFdest%>bytes%ORdest%<0THENoffset%+=4:ENDPROC
 2160IFlabel$(dest%)=""THENlabel$(dest%)="x"+STR$~(dest%)
 2170PROCcode(dest%)
 2180offset%+=4
 2190ENDPROC
 2200
 2210DEFPROCbranchlink
 2220dest%=(((EVAL(RIGHT$(inst$,len%-7)))<<8)>>8)+offset%
 2230IFdest%>bytes%ORdest%<0THENoffset%+=4:ENDPROC
 2240IFLEFT$(label$(dest%),1)="x"ORlabel$(dest%)=""THENlabel$(dest%)="s"+STR$~(dest%)
 2250PROCcode(dest%)
 2260offset%+=4
 2270ENDPROC
 2280
 2290DEFPROCbranchtable
 2300LOCALendoftable%
 2310offset%+=4
 2320LOCALI%
 2330endoftable%=FALSE
 2340REPEAT
 2350  inst%=base%!offset%
 2360  inst$=FNextract(inst%,len%)
 2370  CASEFNinst(inst%)OF
 2380    WHEN1:FORI%=0TO3
 2390            type%(offset%+I%)=5
 2400          NEXT
 2410          PROCbranch
 2420    OTHERWISE:endoftable%=TRUE
 2430  ENDCASE
 2440UNTILendoftable%
 2450ENDPROC
 2460
 2470DEFPROCbyte(RETURN offset%)
 2480CASEtype%(offset%)OF
 2490  WHEN0:
 2500  WHEN1:ENDPROC
 2510  OTHERWISE:ERROR255,"Expecting type 1 or 0"
 2520ENDCASE
 2530byte%=base%?offset%
 2540type%(offset%)=1
 2550offset%+=1
 2560ENDPROC
 2570
 2580DEFPROCcapture(offset%,type%,number%)
 2590LOCALstring$
 2600IFwritescript%THEN
 2610  string$=STR$~offset%+","+STR$type%+","+STR$number%
 2620  PTR#script%=EXT#script%
 2630  BPUT#script%,string$
 2640ENDIF
 2650ENDPROC
 2660
 2670DEFPROCcheckformore
 2680LOCALI%
 2690cond%=(inst%AND&F0000000)>>28
 2700rd%=(inst%AND&0000F000)>>12
 2710same%=(cond%<<28)OR(rd%<<16)OR(rd%<<12)
 2720mask%=&FFEFF000
 2730target1%=&02800000 ORsame%
 2740target2%=&02400000 ORsame%
 2750inst2%=base%!(offset%+4)
 2760extra$=""
 2770IF((inst2%ANDmask%)=target1%)OR((inst2%ANDmask%)=target2%)THEN
 2780  inst2$=FNextract(inst2%,len2%)
 2790  I%=INSTR(inst2$,"#")
 2800  dest2$=MID$(inst2$,I%+1,9)
 2810  offset2%=FNimm(dest2$)
 2820  IF(inst2%AND&00800000)=&800000THEN
 2830    dest%+=offset2%
 2840    extra$="-&"+STR$~offset2%
 2850  ELSE
 2860    dest%-=offset2%
 2870    extra$="+&"+STR$~offset2%
 2880  ENDIF
 2890  IFNOTdebug%THEN
 2900    COLOUR6
 2910    PRINT"ADRL"
 2920    OSCLI"MemoryI "+STR$~(base%+offset%)+" +8"
 2930    PRINT~dest% offset2%
 2940    G%=GET
 2950    COLOUR7
 2960  ENDIF
 2970ENDIF
 2980ENDPROC
 2990
 3000DEFPROCcode(RETURN offset%)
 3010CASEtype%(offset%)OF
 3020  WHEN0:
 3030  WHEN5:ENDPROC
 3040  OTHERWISE:ERROR255,"Expecting type 5 or 0"
 3050ENDCASE
 3060LOCALI%
 3070inst%=base%!offset%
 3080IFdebug%THEN
 3090  COLOUR6
 3100  PRINT"Code",~offset%
 3110  COLOUR7
 3120ENDIF
 3130FORI%=0TO3
 3140  type%(offset%+I%)=5
 3150NEXT
 3160inst$=FNextract(inst%,len%)
 3170return%=FALSE
 3180CASEFNinst(inst%)OF
 3190  WHEN 1:PROCbranch:ENDPROC
 3200  WHEN 2:PROCbranch
 3210  WHEN 3:PROCbranchlink
 3220  WHEN 4:ENDPROC
 3230  WHEN 5:PROCswi:IFreturn%THENreturn%=FALSE:ENDPROC
 3240  WHEN 6:ENDPROC
 3250  WHEN 7:PROCbranchtable:ENDPROC
 3260  WHEN 8:PROCadradd
 3270  WHEN 9:PROCadrsub
 3280  WHEN10:ENDPROC
 3290  WHEN11:PROClsexp
 3300  WHEN12:PROCcopro:ENDPROC
 3310  WHEN13:PROCundef:ENDPROC
 3320  WHEN14:ENDPROC
 3330  OTHERWISE:offset%+=4
 3340ENDCASE
 3350IFoffset%>bytes%THENENDPROC
 3360IFtype%(offset%)=0THEN3070
 3370ENDPROC
 3380
 3390DEFPROCcopro
 3400LOCALI%
 3410VDU7
 3420PRINT"Attempting to disassemble coprocessor instruction"
 3430OSCLI("MemoryI "+STR$~(offset%+base%))
 3440IFreadscript%THEN
 3450  PRINT"Continuing in a moment..."
 3460  FORI%=1TO100000:NEXT
 3470ELSE
 3480  PRINT"Press any key to continue"'
 3490  G%=GET
 3500ENDIF
 3510FORI%=0TO3
 3520  type%(offset%+I%)=0
 3530NEXT
 3540ENDPROC
 3550
 3560DEFPROCdebug
 3570FORoffset%=0TObytes%
 3580IFlabel$(offset%)<>""THEN
 3590  PRINT~offset%,type%(offset%)," ",label$(offset%)
 3600ENDIF
 3610NEXT
 3620*MEMORYI 10000 +32
 3630G%=GET
 3640FORI%=0TObytes%
 3650  PRINT~I%,type%(I%),label$(I%)
 3660NEXT
 3670G%=GET
 3680FORI%=0TObytes%
 3690  IFtype%(I%)=0THENPRINT~I%,type%(I%),label$(I%)
 3700NEXT
 3710ENDPROC
 3720
 3730DEFPROCdis
 3740offset%=0
 3750OSCLI"Spool SOURCES."+filename$
 3760PRINT"REM >SOURCES."+filename$
 3770PRINT"DIMcode%&10000"
 3780PRINT"FORI%=0TO&10000STEP4"
 3790PRINT"  code%!I%=0"
 3800PRINT"NEXT"
 3810PRINT"OS_WriteI=&100"
 3820PRINT"XOS_WriteI=&20100"
 3830PRINT"FORpass%=4TO7STEP3"
 3840PRINT"O%=code%"
 3850PRINT"P%=0"
 3860PRINT"[OPT pass%"
 3870REPEAT
 3880  CASEtype%(offset%)OF
 3890    WHEN-3:PROCdispaddedstring
 3900    WHEN-2:PROCdisstrCR
 3910    WHEN-1:PROCdisstr0
 3920    WHEN 0:offset%+=1
 3930    WHEN 1:PROCdisbyte
 3940    WHEN 2:PROCdisword
 3950    WHEN 3:PROCdisaddr
 3960    WHEN 4:PROCdisdoub
 3970    WHEN 5:PROCdiscode
 3980    WHEN 6:PROCdisalign
 3990    WHEN 7:PROCdisexternal
 4000  ENDCASE
 4010UNTILoffset%>bytes%
 4020PRINT"]:NEXT"
 4030PRINT"SYS""OS_File"",10,""MODULES."+filename$+""",&FFA,,code%,O%"
 4040PRINT"END"'
 4050PRINT"DEFFNadrl(cond$,reg%,label$)"
 4060PRINT"IFcond$=""""ORcond$=""  ""THENcond$=""AL"""
 4070PRINT"cc%=(INSTR(""EQNECSCCMIPLVSVCHILSGELTGTLEALNV"",cond$)-1)DIV2"
 4080PRINT"IFpass%AND2=0THEN"
 4090PRINT"  [OPT pass%"
 4100PRINT"  EQUD 0"
 4110PRINT"  EQUD 0"
 4120PRINT"  ]"
 4130PRINT"ELSE"
 4140PRINT"  offset%=EVAL(label$)-P%-8"
 4150PRINT"  lo%=ABS(offset%)AND&FF"
 4160PRINT"  hi%=ABS(offset%)AND&FF00"
 4170PRINT"  IFoffset%>=0THEN"
 4180PRINT"    op1%=(cc%<<28)OR(&028F0000+(reg%<<12)+lo%)"
 4190PRINT"    op2%=(cc%<<28)OR(&02800C00+(reg%<<16)+(reg%<<12)+(hi%>>8))"
 4200PRINT"  ELSE"
 4210PRINT"    op1%=(cc%<<28)OR(&024F0000+(reg%<<12)+lo%)"
 4220PRINT"    op2%=(cc%<<28)OR(&02400C00+(reg%<<16)+(reg%<<12)+(hi%>>8))"
 4230PRINT"  ENDIF"
 4240PRINT"  [OPT pass%"
 4250PRINT"  EQUD op1%"
 4260PRINT"  EQUD op2%"
 4270PRINT"  ]"
 4280PRINT"ENDIF"
 4290PRINT"=0"
 4300*Spool
 4310ENDPROC
 4320
 4330DEFPROCdisaddr
 4340address%=base%!offset%
 4350IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 4360PRINTTAB(20)"EQUD    ";label$(address%)
 4370offset%+=4
 4380ENDPROC
 4390
 4400DEFPROCdisadradd
 4410inst%=base%!offset%
 4420inst$=FNextract(inst%,len%)
 4430I%=INSTR(inst$,"#")
 4440dest%=EVAL(MID$(inst$,I%+1,9))+offset%+8
 4450PROCcheckformore
 4460IFextra$=""THEN
 4470  IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 4480  I%=INSTR(inst$,",")
 4490  LEFT$(inst$)="ADR"
 4500  PRINTTAB(20)LEFT$(inst$,I%)+label$(dest%)
 4510  offset%+=4
 4520ELSE
 4530  IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 4540  cond$=MID$(inst$,4,2)
 4550  IFdest%>bytes%ORdest%<0THEN
 4560    PRINTTAB(20)"FNadrl("""+cond$+""","+STR$(rd%)+",""&"+STR$~dest%+""")"
 4570  ELSE
 4580    PRINTTAB(20)"FNadrl("""+cond$+""","+STR$(rd%)+","""+label$(dest%)+""")"
 4590  ENDIF
 4600  offset%+=8
 4610ENDIF
 4620ENDPROC
 4630
 4640DEFPROCdisadrsub
 4650inst%=base%!offset%
 4660inst$=FNextract(inst%,len%)
 4670I%=INSTR(inst$,"#")
 4680dest%=-EVAL(MID$(inst$,I%+1,9))+offset%+8
 4690PROCcheckformore
 4700IFextra$=""THEN
 4710  IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 4720  I%=INSTR(inst$,",")
 4730  LEFT$(inst$)="ADR"
 4740  PRINTTAB(20)LEFT$(inst$,I%)+label$(dest%)
 4750  offset%+=4
 4760ELSE
 4770  IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 4780  cond$=MID$(inst$,4,2)
 4790  IFdest%>bytes%ORdest%<0THEN
 4800    PRINTTAB(20)"FNadrl("""+cond$+""","+STR$(rd%)+",""&"+STR$~dest%+""")"
 4810  ELSE
 4820    PRINTTAB(20)"FNadrl("""+cond$+""","+STR$(rd%)+","""+label$(dest%)+""")"
 4830  ENDIF
 4840  offset%+=8
 4850ENDIF
 4860ENDPROC
 4870
 4880DEFPROCdisalign
 4890LOCALpointer%
 4900PRINTTAB(20)"ALIGN"
 4910pointer%=offset%+base%
 4920WHILEpointer%MOD4<>0
 4930  pointer%+=1
 4940  offset%+=1
 4950ENDWHILE
 4960ENDPROC
 4970
 4980DEFPROCdisbl
 4990dest%=(((EVAL(RIGHT$(inst$,len%-7)))<<8)>>8)+offset%
 5000IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 5010IFdest%>bytes%ORdest%<0THEN
 5020  PRINTTAB(20)LEFT$(inst$,8)+"&";~dest%
 5030ELSE
 5040  PRINTTAB(20)LEFT$(inst$,8)+label$(dest%)
 5050ENDIF
 5060offset%+=4
 5070ENDPROC
 5080
 5090DEFPROCdisbranch
 5100dest%=(((EVAL(RIGHT$(inst$,len%-7)))<<8)>>8)+offset%
 5110IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 5120IFdest%>bytes%ORdest%<0THEN
 5130  PRINTTAB(20)LEFT$(inst$,8)+"&";~dest%
 5140ELSE
 5150  PRINTTAB(20)LEFT$(inst$,8)+label$(dest%)
 5151ENDIF
 5160offset%+=4
 5170ENDPROC
 5180
 5190DEFPROCdisbyte
 5200byte%=base%?offset%
 5210IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 5220byte$=STR$~(byte%)
 5230byte$=STRING$(2-LEN(byte$),"0")+byte$
 5240PRINTTAB(20)"EQUB    &";byte$
 5250offset%+=1
 5260ENDPROC
 5270
 5280DEFPROCdiscode
 5290inst%=base%!offset%
 5300inst$=FNextract(inst%,len%)
 5310CASEFNinst(inst%)OF
 5320  WHEN 1:PROCdisbranch
 5330  WHEN 2:PROCdisbranch
 5340  WHEN 3:PROCdisbl
 5350  WHEN 4:PROCdisother
 5360  WHEN 5:PROCdisswi
 5370  WHEN 6:PROCdisother
 5380  WHEN 7:PROCdisother
 5390  WHEN 8:PROCdisadradd
 5400  WHEN 9:PROCdisadrsub
 5410  WHEN10:PROCdisother
 5420  WHEN11:PROCdislsexp
 5430  WHEN12:PROCdiscopro
 5440  WHEN13:PROCdisundef
 5450  WHEN14:PROCdisother
 5460  OTHERWISE:PROCdisother
 5470ENDCASE
 5480ENDPROC
 5490
 5500DEFPROCdisdoub
 5510double%=base%!offset%
 5520IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 5530double$=STR$~(double%)
 5540double$=STRING$(8-LEN(double$),"0")+double$
 5550PRINTTAB(20)"EQUD    &";double$
 5560offset%+=4
 5570ENDPROC
 5580
 5590DEFPROCdisexternal
 5600REM Desktop module
 5610CASEoffset%OF
 5620  WHEN &5FC:PRINT"]"
 5630            PRINT"OSCLI""Load TEMPLATES.Filer ""+STR$~O%"
 5640            PRINT"O%+=&489"
 5650            PRINT"P%+=&489"
 5660            PRINT"[OPT pass%"
 5670            offset%+=&489
 5680  WHEN &AAF:PRINT"]"
 5690            PRINT"OSCLI""Load TEMPLATES.NetFiler ""+STR$~O%"
 5700            PRINT"O%+=&43F"
 5710            PRINT"P%+=&43F"
 5720            PRINT"[OPT pass%"
 5730            offset%+=&43F
 5740  WHEN &F16:PRINT"]"
 5750            PRINT"OSCLI""Load TEMPLATES.Palette ""+STR$~O%"
 5760            PRINT"O%+=&4E1"
 5770            PRINT"P%+=&4E1"
 5780            PRINT"[OPT pass%"
 5790            offset%+=&4E1
 5800  WHEN&141F:PRINT"]"
 5810            PRINT"OSCLI""Load TEMPLATES.Switcher ""+STR$~O%"
 5820            PRINT"O%+=&4D9"
 5830            PRINT"P%+=&4D9"
 5840            PRINT"[OPT pass%"
 5850            offset%+=&4D9
 5860  WHEN&191B:PRINT"]"
 5870            PRINT"OSCLI""Load TEMPLATES.Wimp ""+STR$~O%"
 5880            PRINT"O%+=&27D"
 5890            PRINT"P%+=&27D"
 5900            PRINT"[OPT pass%"
 5910            offset%+=&27D
 5920ENDCASE
 5930ENDPROC
 5940
 5950DEFPROCdislsexp
 5960inst%=base%!offset%
 5970inst$=FNextract(inst%,len%)
 5980I%=INSTR(inst$,"#")+1
 5990J%=INSTR(inst$,"]")-I%
 6000dest%=EVAL(MID$(inst$,I%,J%))+offset%+8
 6010IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 6020I%=INSTR(inst$,",")
 6030PRINTTAB(20)LEFT$(inst$,I%)+label$(dest%)
 6040offset%+=4
 6050ENDPROC
 6060
 6070DEFPROCdisother
 6080IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 6090PRINTTAB(20)inst$
 6100offset%+=4
 6110ENDPROC
 6120
 6130DEFPROCdispaddedstring
 6140LOCALend%
 6150strlen%=0
 6160IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 6170end%=FALSE
 6180REPEAT
 6190  char$=CHR$(base%?offset%)
 6200  strbuf%?strlen%=ASCchar$
 6210  strlen%+=1
 6220  offset%+=1
 6230  IFoffset%>bytes%THEN
 6240    end%=TRUE
 6250  ELSE
 6260    IFtype%(offset%)<>-3 ORlabel$(offset%)<>""THENend%=TRUE
 6270  ENDIF
 6280UNTILend%
 6290PROCprintString(strlen%)
 6300ENDPROC
 6310
 6320DEFPROCdisstr0
 6330strlen%=0
 6340IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 6350REPEAT
 6360  char$=CHR$(base%?offset%)
 6370  strbuf%?strlen%=ASCchar$
 6380  strlen%+=1
 6390  offset%+=1
 6400  IFchar$=CHR$27THEN
 6410    char$=CHR$(base%?offset%)
 6420    strbuf%?strlen%=ASCchar$
 6430    strlen%+=1
 6440    offset%+=1
 6450    char$=CHR$(base%?offset%)
 6460    strbuf%?strlen%=ASCchar$
 6470    strlen%+=1
 6480    offset%+=1
 6490  ENDIF
 6500UNTILchar$=CHR$0 ORlabel$(offset%)<>""
 6510PROCprintString(strlen%)
 6520ENDPROC
 6530
 6540DEFPROCdisstrCR
 6550LOCALlen%
 6560string$=$(base%+offset%)+CHR$13
 6570$strbuf%=string$
 6580strlen%=LENstring$
 6590IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 6600offset%+=strlen%
 6610PROCprintString(strlen%)
 6620ENDPROC
 6630
 6640DEFPROCdisswi
 6650IF(inst%AND&0FFDFF00)=&0F000100THEN
 6660  I%=INSTR(inst$,"""")
 6670  IFI%<>0THEN
 6680    inst$=LEFT$(inst$,I%-1)+"ASC"+RIGHT$(inst$,LENinst$-I%+1)
 6690  ENDIF
 6700ELSE
 6710  IFRIGHT$(inst$,4)="User"THEN
 6720    num%=inst%AND&00FFFFFF
 6730    inst$=LEFT$(inst$,8)+"&"+STR$~num%
 6740  ELSE
 6750    inst$=LEFT$(inst$,8)+""""+RIGHT$(inst$,len%-8)+""""
 6760  ENDIF
 6770ENDIF
 6780IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 6790PRINTTAB(20)inst$
 6800num%=inst%ANDsmask%
 6810offset%+=4
 6820CASEnum%OF
 6830  WHEN1:PROCdisstr0:PROCdisalign
 6840ENDCASE
 6850ENDPROC
 6860
 6870DEFPROCdisword
 6880word%=base%?offset%+&100*(base%?(offset%+1))
 6890IFlabel$(offset%)<>""THENPRINT".";label$(offset%);
 6900word$=STR$~(word%)
 6910word$=STRING$(4-LEN(word$),"0")+word$
 6920PRINTTAB(20)"EQUW    &";STR$~(word%)
 6930offset%+=2
 6940ENDPROC
 6950
 6960DEFPROCdouble(RETURN offset%)
 6970CASEtype%(offset%)OF
 6980  WHEN0:
 6990  WHEN3,4:ENDPROC
 7000  OTHERWISE:ERROR255,"Expecting type 3, 4 or 0"
 7010ENDCASE
 7020LOCALI%
 7030double%=base%!offset%
 7040FORI%=0TO3
 7050  type%(offset%+I%)=4
 7060NEXT
 7070offset%+=4
 7080ENDPROC
 7090
 7100DEFPROCerror
 7110*Spool
 7130COLOUR7
 7140PRINTREPORT$+" at line ";ERL
 7290CLOSE#0
 7300END
 7310
 7320DEFPROCexit
 7330return%=TRUE
 7340offset%+=4
 7350ENDPROC
 7360
 7370DEFPROCexternal
 7380ENDPROC
 7390
 7740DEFPROCexternal
 7750REM Desktop module
 7760FORoffset%=&5FCTO&5FC+&489-1
 7770  type%(offset%)=7
 7780NEXT
 7790FORoffset%=&AAFTO&AAF+&43F-1
 7800  type%(offset%)=7
 7810NEXT
 7820FORoffset%=&F16TO&F16+&4E1-1
 7830  type%(offset%)=7
 7840NEXT
 7850FORoffset%=&141FTO&141F+&4D9-1
 7860  type%(offset%)=7
 7870NEXT
 7880FORoffset%=&191BTO&191B+&27D-1
 7890  type%(offset%)=7
 7900NEXT
 7910ENDPROC
 7920
 7930DEFPROCheader
 7940label$(0)="Header"
 7950offset%=0
 7960FORI%=0TO3
 7970  READA$
 7980  IFdebug%THEN
 7990    COLOUR6
 8000    PRINTA$
 8010    COLOUR7
 8020  ENDIF
 8030  IFbase%!offset%=0THEN
 8040    PROCdouble(offset%)
 8050  ELSE
 8060    PROCaddress(offset%)
 8070    label$(address%)=A$
 8080    PROCcode(address%)
 8090  ENDIF
 8100NEXT
 8110REM Title string
 8120IFdebug%THEN
 8130  COLOUR6
 8140  PRINT"TitleString"
 8150  COLOUR7
 8160ENDIF
 8161  READA$
 8170  IFbase%!offset%=0THEN
 8180    PROCdouble(offset%)
 8190  ELSE
 8200    PROCaddress(offset%)
 8220    label$(address%)=A$
 8230    PROCstring0(address%)
 8240  ENDIF
 8250REM Help string
 8260READA$
 8270IFdebug%THEN
 8280  COLOUR6
 8290  PRINTA$
 8300  COLOUR7
 8310ENDIF
 8320IFbase%!offset%=0THEN
 8330  PROCdouble(offset%)
 8340ELSE
 8350  PROCaddress(offset%)
 8360  label$(address%)=A$
 8370  PROCstring0(address%)
 8380ENDIF
 8390REM Help and command keyword table
 8400READA$
 8410IFdebug%THEN
 8420  COLOUR6
 8430  PRINTA$
 8440  COLOUR7
 8450ENDIF
 8460IFbase%!offset%=0THEN
 8470  PROCdouble(offset%)
 8480ELSE
 8490  PROCaddress(offset%)
 8500  label$(address%)=A$
 8510  PROCkwtable(address%)
 8520ENDIF
 8530
 8540IFtype%(offset%)<>0THENENDPROC
 8550REM SWI chunk base number
 8560IFdebug%THEN
 8570  COLOUR6
 8580  PRINT"SWIChunkBaseNumber"
 8590  COLOUR7
 8600ENDIF
 8610IFbase%!offset%=0THENENDPROC
 8620IF((base%!offset%)AND&FF00003F)<>&00000000THENENDPROC
 8630IF((base%!(offset%+4))AND&FC000003)<>&00000000THENENDPROC
 8640PROCdouble(offset%)
 8650
 8660REM SWI decoding table
 8670offset%=&24
 8680IF(base%!offset%<bytes%)THEN
 8690  IFdebug%THEN
 8700    COLOUR6
 8710    PRINT"SWIDecodingTable"
 8720    COLOUR7
 8730  ENDIF
 8740  IFbase%!offset%=0THEN
 8750    PROCdouble(offset%)
 8760  ELSE
 8770    PROCaddress(offset%)
 8780    label$(address%)="SWIDecodeTable"
 8790    PROCswitable(address%)
 8800  ENDIF
 8810ENDIF
 8820
 8830REM SWI handler code
 8840offset%=&20
 8850IFdebug%THEN
 8860  COLOUR6
 8870  PRINT"SWIHandlerCode"
 8880  COLOUR7
 8890ENDIF
 8900IFbase%!offset%=0THEN
 8910  PROCdouble(offset%)
 8920ELSE
 8930  PROCaddress(offset%)
 8940  label$(address%)="SWIHandlerCode"
 8950  PROCswihandler(address%)
 8960ENDIF
 8970
 8980REM SWI decoding code
 8990offset%=&28
 9000IFdebug%THEN
 9010  COLOUR6
 9020  PRINT"SWIDecodingCode"
 9030  COLOUR7
 9040ENDIF
 9050IFbase%!offset%=0THEN
 9060  PROCdouble(offset%)
 9070ELSE
 9080  IFbase%!offset%<bytes%THEN
 9090    PROCaddress(offset%)
 9100    label$(address%)="SWIDecodeCode"
 9110    PROCcode(address%)
 9120  ENDIF
 9130ENDIF
 9140ENDPROC
 9150
 9160DEFPROCinit
 9170ONERRORPROCerror
 9180LOMEM=&30000
 9190version$="2.00"
 9200stage%=0
 9210debug%=TRUE:REM Prints debugging information in cyan
 9220flop%=FALSE:REM Accept floating-point opcodes (not implemented)
 9230readscript%=TRUE:REM Read user responses from file
 9240writescript%=TRUE:REM Write user responses to file
 9250REMIFreadscript%ANDwritescript%THENERROR255,"Can't read and write script"
 9260base%=&10000
 9270REMMODE20:REM If you have no multisync, try MODE 12
 9280MODE12:REM If you have a multisync, try MODE 20
 9290INPUT"filename",filename$
 9300SYS"OS_File",12,filename$,base%,0,"ORIGINALS."TO,,,,filelen%
 9310IFreadscript%ORwritescript%THEN
 9320  SYS"OS_File",17,"SCRIPTS."+filename$TOtype%
 9330  IFtype%=0THENSYS"OS_File",11,"SCRIPTS."+filename$,&FFF,0,0
 9340  script%=OPENUP("SCRIPTS."+filename$)
 9350ENDIF
 9360REM Fix for Podule !&107C8=&814:REM @@@@@@@@@@@@@@@@@@@@@@@@
 9370bytes%=filelen%-1
 9380words%=((bytes%+1)DIV4)-1
 9390DIMlabel$(bytes%),type%(bytes%+1),buffer%&100,swi$(63),strbuf%&1000
 9400bmask%=(%1111)<<24
 9410b%=(%1010)<<24
 9420bl%=(%1011)<<24
 9430end%=(%11101000000100001)<<15
 9440emask%=end%
 9450smask%=&000DFFFF
 9460swi%=(%1111)<<24
 9470ENDPROC
 9480
 9490DEFPROCkwtable(offset%)
 9500LOCALkeyword$,helpcode%
 9510REPEAT
 9520  helpcode%=FALSE
 9530  PROCstring0(offset%)
 9540  keyword$=string$
 9550  PROCalign(offset%)
 9560  offset%+=4
 9570  PROCdouble(offset%)
 9580  IF(double%AND&40000000)=&40000000THENkeyword$="Config"+keyword$
 9590  IF(double%AND&20000000)=&20000000THENhelpcode%=TRUE
 9600  offset%-=8
 9610  IFbase%!offset%=0THEN
 9620    PROCdouble(offset%)
 9630  ELSE
 9640    IFbase%!offset%>bytes%ORbase%!offset%<0THEN
 9650      PROCdouble(offset%)
 9660    ELSE
 9670      PROCaddress(offset%)
 9680      label$(address%)=keyword$+"Code"
 9690      PROCcode(address%)
 9700    ENDIF
 9710  ENDIF
 9720  offset%+=4
 9730  IFbase%!offset%=0THEN
 9740    PROCdouble(offset%)
 9750  ELSE
 9760    PROCaddress(offset%)
 9770    label$(address%)=keyword$+"Syntax"
 9780    PROCstringA(address%)
 9790  ENDIF
 9800  IFbase%!offset%=0THEN
 9810    PROCdouble(offset%)
 9820  ELSE
 9830    PROCaddress(offset%)
 9840    label$(address%)=keyword$+"Help"
 9850    IFhelpcode%THEN
 9860      PROCcode(address%)
 9870    ELSE
 9880      PROCstringA(address%)
 9890    ENDIF
 9900  ENDIF
 9910UNTILbase%?offset%=0
 9920PROCbyte(offset%)
 9930ENDPROC
 9940
 9950DEFPROCloadtypes
 9960LOCALF%,I%
 9970F%=OPENIN("Types")
 9980FORI%=0TObytes%
 9990  type%(I%)=BGET#F%
10000  IFtype%(I%)>127THENtype%(I%)-=256
10010NEXT
10020CLOSE#F%
10030F%=OPENIN("Labels")
10040FORI%=0TObytes%
10050  INPUT#F%,label$(I%)
10060NEXT
10070CLOSE#F%
10080ENDPROC
10090
10100DEFPROClsexp
10110LOCALI%,J%
10120FORI%=0TO3
10130  type%(offset%+I%)=5
10140NEXT
10150I%=INSTR(inst$,"#")+1
10160J%=INSTR(inst$,"]")-I%
10170dest%=EVAL(MID$(inst$,I%,J%))+offset%+8
10180IFlabel$(dest%)=""THENlabel$(dest%)="x"+STR$~(dest%)
10190IFtype%(dest%)=0THEN
10200  IFdebug%THEN
10210    COLOUR6
10220    PRINT"LSexp",~offset%
10230    COLOUR7
10240  ENDIF
10250  PROCwhatsthis(offset%,dest%)
10260  CASEtype%OF
10270    WHEN-4:PROCstringA(offset%)
10280    WHEN-3:PROCpaddedstring(dest%,number%)
10290    WHEN-2:PROCstringCR(dest%)
10300    WHEN-1:PROCstring0(dest%)
10310    WHEN 0:
10320    WHEN 1:PROCbyte(dest%)
10330    WHEN 2:PROCword(dest%)
10340    WHEN 4:PROCdouble(dest%)
10350    WHEN 5:PROCcode(dest%)
10360  ENDCASE
10370ENDIF
10380offset%+=4
10390ENDPROC
10400
10410DEFPROCpaddedstring(RETURN offset%,len%)
10420LOCALI%
10430CASEtype%(offset%)OF
10440  WHEN 0:
10450  WHEN-3:REMENDPROC
10460  OTHERWISE:ERROR255,"Expecting type -3 or 0"
10470ENDCASE
10480FORI%=1TOlen%
10490  type%(offset%)=-3
10500  offset%+=1
10510NEXT
10520ENDPROC
10530
10540DEFPROCsavetypes
10550LOCALF%,I%
10560F%=OPENOUT("Types")
10570FORI%=0TObytes%
10580  BPUT#F%,type%(I%)
10590NEXT
10600CLOSE#F%
10610F%=OPENOUT("Labels")
10620FORI%=0TObytes%
10630  PRINT#F%,label$(I%)
10640NEXT
10650CLOSE#F%
10660ENDPROC
10670
10680DEFPROCstring0(RETURN offset%)
10690CASEtype%(offset%)OF
10700  WHEN 0:
10710  WHEN-1:REMENDPROC
10720  OTHERWISE:ERROR255,"Expecting type -1 or 0"
10730ENDCASE
10740string$=""
10750WHILEbase%?offset%<>0
10760  IFLENstring$<255THENstring$+=CHR$(base%?offset%)
10770  type%(offset%)=-1
10780  offset%+=1
10790ENDWHILE
10800type%(offset%)=-1
10810offset%+=1
10820ENDPROC
10830
10840DEFPROCstringA(RETURN offset%)
10850CASEtype%(offset%)OF
10860  WHEN 0:
10870  WHEN-1:ENDPROC
10880  OTHERWISE:ERROR255,"Expecting type -1 or 0"
10890ENDCASE
10900WHILEbase%?offset%<>0
10910  type%(offset%)=-1
10920  IFbase%?offset%=27THEN
10930    offset%+=1
10940    type%(offset%)=-1
10950  ENDIF
10960  offset%+=1
10970ENDWHILE
10980type%(offset%)=-1
10990offset%+=1
11000ENDPROC
11010
11020DEFPROCstringCR(RETURN offset%)
11030CASEtype%(offset%)OF
11040  WHEN 0:
11050  WHEN-2:REMENDPROC
11060  OTHERWISE:ERROR255,"Expecting type -2 or 0"
11070ENDCASE
11080WHILEbase%?offset%<>13
11090  type%(offset%)=-2
11100  offset%+=1
11110ENDWHILE
11120type%(offset%)=-2
11130offset%+=1
11140ENDPROC
11150
11160DEFPROCswi
11170inst$=LEFT$(inst$,8)+""""+RIGHT$(inst$,len%-8)+""""
11180num%=inst%ANDsmask%
11190CASEnum%OF
11200  WHEN  1:PROCwriteS
11210  WHEN&11:PROCexit
11220  OTHERWISE:offset%+=4
11230ENDCASE
11240ENDPROC
11250
11260DEFPROCswibranch
11270dest%=(((EVAL(RIGHT$(inst$,len%-7)))<<8)>>8)+offset%
11280IFswi$(counter%)=""THEN
11290  IFlabel$(dest%)=""THENlabel$(dest%)="x"+STR$~(dest%)
11300ELSE
11310  label$(dest%)=swi$(counter%)
11320ENDIF
11330PROCcode(dest%)
11340offset%+=4
11350ENDPROC
11360
11370DEFPROCswibranchtable
11380IFdebug%THEN
11390  COLOUR6
11400  PRINT"Got to SWI branch table"
11410  COLOUR7
11420ENDIF
11430offset%+=4
11440LOCALI%,end%,counter%
11450end%=FALSE
11460REPEAT
11470  IFtype%(offset%)=0THEN
11480    inst%=base%!offset%
11490    FORI%=0TO3
11500      type%(offset%+I%)=5
11510    NEXT
11520    inst$=FNextract(inst%,len%)
11530    IFdebug%THEN
11540      COLOUR6
11550      PRINTcounter%,FNinst(inst%)
11560      COLOUR7
11570    ENDIF
11580    CASEFNinst(inst%)OF
11590      WHEN1:PROCswibranch
11600      OTHERWISE:IFcounter%=0THEN
11610                  PROCcode(offset%)
11620                  offset%+=4
11630                ELSE
11640                  end%=TRUE:REM End of table
11650                ENDIF
11660    ENDCASE
11670    counter%+=1
11680  ELSE
11690    end%=TRUE
11700  ENDIF
11710UNTILend%
11720IFdebug%THEN
11730  COLOUR6
11740  PRINT"Left SWI branch table with counter=";counter%
11750  COLOUR7
11760ENDIF
11770ENDPROC
11780
11790DEFPROCswihandler(offset%)
11800CASEtype%(offset%)OF
11810  WHEN0:
11820  WHEN5:ENDPROC
11830  OTHERWISE:ERROR255,"Expecting type 5 or 0"
11840ENDCASE
11850LOCALI%
11860inst%=base%!offset%
11870FORI%=0TO3
11880  type%(offset%+I%)=5
11890NEXT
11900inst$=FNextract(inst%,len%)
11910CASEFNinst(inst%)OF
11920  WHEN 1:PROCbranch:ENDPROC
11930  REMWHEN 2:IFFNinst(base%!(offset%+4))=2THENPROCswibranchtable ELSEPROCbranch
11940  WHEN 2:PROCbranch
11950  WHEN 3:PROCbranchlink
11960  WHEN 4:ENDPROC
11970  WHEN 5:PROCswi
11980  WHEN 6:ENDPROC
11990  WHEN 7:PROCswibranchtable
12000  WHEN 8:PROCadradd
12010  WHEN 9:PROCadrsub
12020  WHEN10:ENDPROC
12030  WHEN11:PROClsexp
12040  WHEN12:PROCcopro:ENDPROC
12050  WHEN13:PROCundef:ENDPROC
12060  WHEN14:ENDPROC
12070  OTHERWISE:offset%+=4
12080ENDCASE
12090IFoffset%>bytes%THENENDPROC
12100IFtype%(offset%)=0THEN11860
12110ENDPROC
12120
12130DEFPROCswitable(RETURN offset%)
12140LOCALI%,prefix$
12150PROCstring0(offset%)
12160prefix$=string$+"_"
12170swi$(I%)=prefix$+"BadSWI"
12180I%+=1
12190WHILEbase%?offset%<>0
12200  PROCstring0(offset%)
12210  swi$(I%)=prefix$+string$
12220  I%+=1
12230ENDWHILE
12240PROCbyte(offset%)
12250ENDPROC
12260
12270DEFPROCundef
12280LOCALI%
12290VDU7
12300PRINT"Attempting to disassemble undefined instruction"
12310OSCLI("MemoryI "+STR$~(offset%+base%))
12320IFreadscript%THEN
12330  PRINT"Continuing in a moment..."
12340  FORI%=1TO100000:NEXT
12350ELSE
12360  PRINT"Press any key to continue"'
12370  G%=GET
12380ENDIF
12390FORI%=0TO3
12400  type%(offset%+I%)=0
12410NEXT
12420ENDPROC
12430
12440DEFPROCwhatsthis(offset%,dest%)
12450LOCALcount%,I%
12460count%=1
12470WHILEtype%(dest%+count%)=0AND(dest%+count%)<=bytes%ANDcount%<=68
12480  count%+=1
12490ENDWHILE
12500COLOUR3
12510OSCLI"MemoryI "+STR$~(offset%+base%)+" +10"
12520COLOUR7:PRINT
12530OSCLI"MEMORYI "+STR$~(dest%+base%-&20)+" +20"
12540COLOUR1
12550OSCLI"MEMORYI "+STR$~(dest%+base%)+" +4"
12560COLOUR7
12570OSCLI"MEMORYI "+STR$~(dest%+base%+4)+" +20"
12580PRINT'~dest%
12590PRINT"What's this?"
12600type%=0:number%=1
12610IFNOTFNreplay(dest%,type%,number%)THEN
12620  INPUTtype%
12630  IFtype%=-3THENINPUT"Length of padded string",number%
12640  IFtype%<>0THENPROCcapture(dest%,type%,number%)
12650ENDIF
12660ENDPROC
12670
12680DEFPROCword(RETURN offset%)
12690CASEtype%(offset%)OF
12700  WHEN0:
12710  WHEN2:ENDPROC
12720  OTHERWISE:ERROR255,"Expecting type 2 or 0"
12730ENDCASE
12740LOCALI%
12750word%=base%?offset%+&100*(base%?(offset%+1))
12760FORI%=0TO1
12770  type%(offset%+I%)=2
12780NEXT
12790offset%+=2
12800ENDPROC
12810
12820DEFPROCwriteS
12830offset%+=4
12840PROCstring0(offset%)
12850IFoffset%MOD4<>0THEN
12860  PROCalign(offset%)
12870ENDIF
12880ENDPROC
12890
12900DEFFNextract(inst%,RETURN len%)
12910LOCALI%
12920SYS"Debugger_Disassemble",inst%,0TO,buffer%,len%
12930len%-=1
12940inst$=""
12950REPEAT
12960  inst$+=CHR$(buffer%?I%)
12970  I%+=1
12980UNTILbuffer%?I%=0
12990=inst$
13000
13010DEFFNimm(imm$)
13020LOCALI%,imm%,bits%,shift%
13030I%=INSTR(imm$,",")
13040IFI%=0THEN
13050  imm%=EVAL(imm$)
13060ELSE
13070  bits%=EVAL(LEFT$(imm$,I%-1))
13080  shift%=EVAL(RIGHT$(imm$,LEN(imm$)-I%))
13090  imm%=(bits%<<(32-shift%))OR(bits%>>shift%)
13100ENDIF
13110=imm%
13120
13130DEFFNinst(inst%)
13140IF(inst%AND&FF000000)=&EA000000THEN= 1:REM BAL
13150IF(inst%AND&0F000000)=&0A000000THEN= 2:REM conditional branch
13160IF(inst%AND&0F000000)=&0B000000THEN= 3:REM BL
13170IF(inst%AND&FE108000)=&E8108000THEN= 4:REM LDM ,{PC}
13180IF(inst%AND&0F000000)=&0F000000THEN= 5:REM SWI
13190IF(inst%AND&FDE0F000)=&E1A0F000THEN= 6:REM MOV PC,
13200IF(inst%AND&08EFFFF0)=&008FF100THEN= 7:REM Branch table
13210IF(inst%AND&0FEF0000)=&028F0000THEN= 8:REM ADR add
13220IF(inst%AND&0FEF0000)=&024F0000THEN= 9:REM ADR sub
13230IF(inst%AND&FFFFF000)=&E39EF000THEN=10:REM ORRS PC,R14,#...
13240IF(inst%AND&0F2F0000)=&050F0000THEN=11:REM LDR/STR Rn,<expr>
13250IF(inst%AND&0F000000)=&0E000000THEN=12:REM Co-pro
13260IF(inst%AND&0E000000)=&0C000000THEN=12:REM Co-pro
13270IF(inst%AND&0F000090)=&01000090THEN=13:REM Undefined
13280IF(inst%AND&0E000010)=&06000010THEN=13:REM Undefined
13290IF(inst%AND&FFFFF000)=&E3DEF000THEN=14:REM BICS PC,R14,#...
13300=0
13310
13320DEFFNreplay(target%,RETURN type%,RETURN number%)
13330IFNOTreadscript%THEN=FALSE
13340LOCALend%,string$,offset%,success%,I%
13350PTR#script%=0
13360end%=FALSE
13370REPEAT
13380  IFEOF#script%THEN
13390    success%=FALSE
13400    end%=TRUE
13410  ELSE
13420    string$=GET$#script%
13430    offset%=EVAL("&"+string$)
13440    IFoffset%=target%THEN
13450      success%=TRUE
13460      I%=INSTR(string$,",")
13470      LEFT$(string$,I%)=STRING$(I%," ")
13480      type%=EVALstring$
13490      I%=INSTR(string$,",")
13500      LEFT$(string$,I%)=STRING$(I%," ")
13510      number%=EVALstring$
13520      end%=TRUE
13530    ENDIF
13540  ENDIF
13550UNTILend%
13560=success%
13570
13580DEFFNyesno
13590G%=GET
13600IFG%=89 ORG%=121 THEN=TRUE ELSE=FALSE
13610
13620DATA StartCode,InitCode,FinalCode,SerCallHandler,TitleString,HelpString,HelpCommKeywTab,SWIChunkBaseNum,SWIHandlerCode,SWIDecodTab,SWIDecodCode
13630
13640DEFPROCprintString(Length%)
13650REM Prints a string in EQUS format
13660LOCALI%,String%
13670PRINTTAB(20)"EQUS    ";
13680String%=FALSE
13690IFLength%>1THEN
13700  FORI%=0TOLength%-2
13710    Char%=strbuf%?I%
13720    REMChar%=ASC(MID$(String$,I%,1))
13730    IF(Char%<32)OR(Char%>126)THEN
13740      IFString%THEN
13750        String%=FALSE
13760        PRINT"""+CHR$"+STR$(Char%)+"+";
13770      ELSE
13780        PRINT"CHR$"+STR$(Char%)+"+";
13790      ENDIF
13800    ELSE
13810      IFString%THEN
13820        PRINTCHR$(Char%);
13830      ELSE
13840        String%=TRUE
13850        PRINT""""+CHR$(Char%);
13860      ENDIF
13870      IFChar%=34THENPRINTCHR$(Char%);
13880    ENDIF
13890  NEXT
13900ENDIF
13910Char%=strbuf%?(Length%-1)
13920REMChar%=ASC(RIGHT$(String$,1))
13930IF(Char%<32)OR(Char%>126)THEN
13940  IFString%THEN
13950    PRINT"""+CHR$"+STR$(Char%)
13960  ELSE
13970    PRINT"CHR$"+STR$(Char%)
13980  ENDIF
13990ELSE
14000  IFString%THEN
14010    PRINTCHR$(Char%)+""""
14020  ELSE
14030    PRINT""""+CHR$(Char%)+""""
14040  ENDIF
14050ENDIF
14060ENDPROC

� >ModDis201
 � Revised script file format
"� Detects end-of-code with BIC
(!� Handles help code correctly
2)� Fixed negative bug in PROCloadtypes
<3� Some support for out-of-module branches added
F:� 'Acorn' compressed string format can now be selected
P-� Works with modules with no title string
Z� >ModDis200
d1� New version recognises its own script files
n� OSWriteI recognised
x2� Doesn't crash when padded string ends module
�� >ModDis105
�$� Fixed bug with word in PROCask
�A� Length of padded string now captured when writescript%=TRUE
�0� Works if branch table not followed by code
�� >ModDis104
�-� Fixed bug with SWI branch table overrun
�� Fixed bug with SWI mask
�8� No more keypress prompts while reading script file
�@� Warns about simultaneously reading and writing script file
�� >ModDis103
�@� Can cope with some strings longer than 255 bytes (I think)
�'� Copes with " character in strings
�� >ModDis102
+� Bundled macro for ADRlong implemented
� >ModDis101
� Scripts added
"@� Bug with SWI table entries exceeding number of names fixed
,� >ModDis100
6(� Keyword table now copes with zeros
@5� Copes with ADR followed by ADD or SUB (ADRlong)
J� Speeded up final pass
T� Fixed bug in EQUW
^� >ModDisF
h#� Sorted out bits,shift problem
r� >ModDisE
|6� Tried to improve recognition of SWI branch table
�� Added external type (7)
�2� Header labels now take precedence over sABCD
�0� Alignment problem with SWI OS_WriteS fixed
�� >ModDisD
�� Debug information added
�.� Better trapping for no SWI decoding code
�� >ModDisC
�#� Recognises Configure keywords
�4� Warns about coprocessor and undefined commands
�9� Recognises CR-terminated strings and padded strings
�2� Provision for loading and saving type% array
�� >ModDisB
�"� Provision for LDR/STR Rn,exp
� Speeded up Ask

� Lorcan Mongey
&� 56 Salisbury Court
0� Dublin Road
:� Belfast BT7 1DD
D� Tel: 0232 234386
N
X0� I can also be reached at the following BBS
b
l'� BBS              Telephone     ID
v4� ----------------------------------------------
�4� CIX              081 390 1244  lorcan@cix.uucp
�2� World of Cryton  0749 670030   lorcan (#237)
�2� Arcade           081 654 2212  lorcan (#417)
�
�	�init
�
�external
��header
�
offset%=0
�ȕoffset%<=bytes%
�'  �type%(offset%)=0��ask:offset%-=1
�  offset%+=1
�
�#0
 �dis
*�
4
>��address(� offset%)
HȎtype%(offset%)�
R	  �0:
\
  �3:�
f$  :�255,"Expecting type 3 or 0"
p�
z�I%
�address%=base%!offset%
��I%=0�3
�  type%(offset%+I%)=3
��
�offset%+=4
��
�
���adradd
�
�I%,len2%
��I%=0�3
�  type%(offset%+I%)=5
��
�I%=�inst$,"#")
dest$=�inst$,I%+1,9)
dest%=�imm(dest$)+offset%+8
�checkformore
$&�dest%>bytes%�dest%<0�offset%+=4:�
.1�label$(dest%)=""�label$(dest%)="x"+�~(dest%)
8�type%(dest%)=0�
B  �debug%�
L
    �6
V    �"Add",~offset%
`
    �7
j  �
t  �whatsthis(offset%,dest%)
~  Ȏtype%�
�    �-4:�stringA(offset%)
�(    �-3:�paddedstring(dest%,number%)
�    �-2:�stringCR(dest%)
�    �-1:�string0(dest%)
�    � 0:
�    � 1:�byte(dest%)
�    � 2:�word(dest%)
�    � 4:�double(dest%)
�    � 5:�code(dest%)
�  �
��
�offset%+=4
�


��adrsub
�I%
(�I%=0�3
2  type%(offset%+I%)=5
<�
FI%=�inst$,"#")
Pdest$=�inst$,I%+1,9)
Zdest%=offset%-�imm(dest$)+8
d�checkformore
n&�dest%>bytes%�dest%<0�offset%+=4:�
x1�label$(dest%)=""�label$(dest%)="x"+�~(dest%)
��type%(dest%)=0�
�  �debug%�
�
    �6
�    �"Sub",~offset%
�
    �7
�  �
�  �whatsthis(offset%,dest%)
�  Ȏtype%�
�    �-4:�stringA(offset%)
�(    �-3:�paddedstring(dest%,number%)
�    �-2:�stringCR(dest%)
�    �-1:�string0(dest%)
�    � 0:
    � 1:�byte(dest%)
    � 2:�word(dest%)
    � 4:�double(dest%)
"    � 5:�code(dest%)
,  �
6�
@offset%+=4
J�
T
^��align(� offset%)
hȎtype%(offset%)�
r	  �0:
|
  �6:�
�$  :�255,"Expecting type 6 or 0"
��
�
�pointer%
�pointer%=offset%+base%
�ȕpointer%�4<>0
�  type%(offset%)=6
�  pointer%+=1
�  offset%+=1
��
��
�
�	��ask
��count%,type%,I%,J%
count%=1
Aȕtype%(offset%+count%)=0�(offset%+count%)<=bytes%�count%<=68
  count%+=1
&�
0,�"MemoryI "+�~(offset%+base%-&20)+" +20"
:�1
D'�"MemoryI "+�~(offset%+base%)+" +4"
N�7
X*�"MemoryI "+�~(offset%+base%+4)+" +20"
b7�'count%," byte(s) at ";~offset%;" of unknown type"
ltype%=0:number%=1
v%笤replay(offset%,type%,number%)�
�  �type%
�  Ȏtype%�
�3    �-3     :�"Length of padded string",number%
�$    �1,2,3,4:�"How many",number%
�  �
�%  �capture(offset%,type%,number%)
��
�Ȏtype%�
�  �-4:�stringA(offset%)
�(  �-3:�paddedstring(offset%,number%)
�  �-2:�stringCR(offset%)
�  �-1:�string0(offset%)
�(  � 1:�J%=1�number%:�byte(offset%):�
(  � 2:�J%=1�number%:�word(offset%):�
+  � 3:�J%=1�number%:�address(offset%):�
*  � 4:�J%=1�number%:�double(offset%):�
   � 5:�code(offset%)
*  � 6:�align(offset%)
4�
>�
H
R��branch
\/dest%=(((�(�inst$,len%-7)))<<8)>>8)+offset%
f&�dest%>bytes%�dest%<0�offset%+=4:�
p1�label$(dest%)=""�label$(dest%)="x"+�~(dest%)
z�code(dest%)
�offset%+=4
��
�
���branchlink
�/dest%=(((�(�inst$,len%-7)))<<8)>>8)+offset%
�&�dest%>bytes%�dest%<0�offset%+=4:�
�G�label$(dest%),1)="x"�label$(dest%)=""�label$(dest%)="s"+�~(dest%)
��code(dest%)
�offset%+=4
��
�
���branchtable
��endoftable%
	offset%+=4
	�I%
	endoftable%=�
	$�
	.  inst%=base%!offset%
	8   inst$=�extract(inst%,len%)
	B  Ȏ�inst(inst%)�
	L    �1:�I%=0�3
	V#            type%(offset%+I%)=5
	`          �
	j          �branch
	t    :endoftable%=�
	~  �
	��endoftable%
	��
	�
	���byte(� offset%)
	�Ȏtype%(offset%)�
	�	  �0:
	�
  �1:�
	�$  :�255,"Expecting type 1 or 0"
	��
	�byte%=base%?offset%
	�type%(offset%)=1
	�offset%+=1
�


$��capture(offset%,type%,number%)
�string$
(�writescript%�
2/  string$=�~offset%+","+�type%+","+�number%
<  �#script%=�#script%
F  �#script%,string$
P�
Z�
d
n��checkformore
x�I%
�cond%=(inst%�&F0000000)>>28
�rd%=(inst%�&0000F000)>>12
�)same%=(cond%<<28)�(rd%<<16)�(rd%<<12)
�mask%=&FFEFF000
�target1%=&02800000 �same%
�target2%=&02400000 �same%
�inst2%=base%!(offset%+4)
�
extra$=""
�9�((inst2%�mask%)=target1%)�((inst2%�mask%)=target2%)�
�#  inst2$=�extract(inst2%,len2%)
�  I%=�inst2$,"#")
�  dest2$=�inst2$,I%+1,9)
�  offset2%=�imm(dest2$)
"  �(inst2%�&00800000)=&800000�
    dest%+=offset2%
    extra$="-&"+�~offset2%
"  �
,    dest%-=offset2%
6    extra$="+&"+�~offset2%
@  �
J  �debug%�
T
    �6
^    �"ADRL"
h+    �"MemoryI "+�~(base%+offset%)+" +8"
r    �~dest% offset2%
|    G%=�
�
    �7
�  �
��
��
�
���code(� offset%)
�Ȏtype%(offset%)�
�	  �0:
�
  �5:�
�$  :�255,"Expecting type 5 or 0"
��
��I%
�inst%=base%!offset%
�debug%�
  �6
  �"Code",~offset%
&  �7
0�
:�I%=0�3
D  type%(offset%+I%)=5
N�
Xinst$=�extract(inst%,len%)
b
return%=�
lȎ�inst(inst%)�
v  � 1:�branch:�
�  � 2:�branch
�  � 3:�branchlink
�  � 4:�
�#  � 5:�swi:�return%�return%=�:�
�  � 6:�
�  � 7:�branchtable:�
�  � 8:�adradd
�  � 9:�adrsub
�  �10:�
�  �11:�lsexp
�  �12:�copro:�
�  �13:�undef:�
�  �14:�

  :offset%+=4

�

�offset%>bytes%��

 �type%(offset%)=0��d~K

*�

4

>��copro

H�I%

R�7

\8�"Attempting to disassemble coprocessor instruction"

f#�("MemoryI "+�~(offset%+base%))

p�readscript%�

z"  �"Continuing in a moment..."

�  �I%=1�100000:�

��

�#  �"Press any key to continue"'

�
  G%=�

��

��I%=0�3

�  type%(offset%+I%)=0

��

��

�

���debug

��offset%=0�bytes%

��label$(offset%)<>""�
2  �~offset%,type%(offset%)," ",label$(offset%)
�
�
$*MEMORYI 10000 +32
.G%=�
8�I%=0�bytes%
B  �~I%,type%(I%),label$(I%)
L�
VG%=�
`�I%=0�bytes%
j,  �type%(I%)=0��~I%,type%(I%),label$(I%)
t�
~�
�
�	��dis
�
offset%=0
��"Spool SOURCES."+filename$
��"REM >SOURCES."+filename$
��"DIMcode%&10000"
��"FORI%=0TO&10000STEP4"
��"  code%!I%=0"
��"NEXT"
��"OS_WriteI=&100"
��"XOS_WriteI=&20100"
��"FORpass%=4TO7STEP3"
�"O%=code%"

�"P%=0"
�"[OPT pass%"
�
(  Ȏtype%(offset%)�
2    �-3:�dispaddedstring
<    �-2:�disstrCR
F    �-1:�disstr0
P    � 0:offset%+=1
Z    � 1:�disbyte
d    � 2:�disword
n    � 3:�disaddr
x    � 4:�disdoub
�    � 5:�discode
�    � 6:�disalign
�    � 7:�disexternal
�  �
��offset%>bytes%
�
�"]:NEXT"
�A�"SYS""OS_File"",10,""MODULES."+filename$+""",&FFA,,code%,O%"
��"END"'
�#�"DEFFNadrl(cond$,reg%,label$)"
�1�"IFcond$=""""ORcond$=""  ""THENcond$=""AL"""
�D�"cc%=(INSTR(""EQNECSCCMIPLVSVCHILSGELTGTLEALNV"",cond$)-1)DIV2"
��"IFpass%AND2=0THEN"
��"  [OPT pass%"
�"  EQUD 0"
�"  EQUD 0"

�"  ]"
"�"ELSE"
,"�"  offset%=EVAL(label$)-P%-8"
6�"  lo%=ABS(offset%)AND&FF"
@!�"  hi%=ABS(offset%)AND&FF00"
J�"  IFoffset%>=0THEN"
T5�"    op1%=(cc%<<28)OR(&028F0000+(reg%<<12)+lo%)"
^E�"    op2%=(cc%<<28)OR(&02800C00+(reg%<<16)+(reg%<<12)+(hi%>>8))"
h
�"  ELSE"
r5�"    op1%=(cc%<<28)OR(&024F0000+(reg%<<12)+lo%)"
|E�"    op2%=(cc%<<28)OR(&02400C00+(reg%<<16)+(reg%<<12)+(hi%>>8))"
��"  ENDIF"
��"  [OPT pass%"
��"  EQUD op1%"
��"  EQUD op2%"
�
�"  ]"
��"ENDIF"
�	�"=0"
�
*Spool
��
�
�
��disaddr
�address%=base%!offset%
�.�label$(offset%)<>""��".";label$(offset%);
$�20)"EQUD    ";label$(address%)
offset%+=4
�
&
0��disadradd
:inst%=base%!offset%
Dinst$=�extract(inst%,len%)
NI%=�inst$,"#")
X%dest%=�(�inst$,I%+1,9))+offset%+8
b�checkformore
l�extra$=""�
v0  �label$(offset%)<>""��".";label$(offset%);
�  I%=�inst$,",")
�  �inst$)="ADR"
�#  �20)�inst$,I%)+label$(dest%)
�  offset%+=4
��
�0  �label$(offset%)<>""��".";label$(offset%);
�  cond$=�inst$,4,2)
�  �dest%>bytes%�dest%<0�
�@    �20)"FNadrl("""+cond$+""","+�(rd%)+",""&"+�~dest%+""")"
�  �
�E    �20)"FNadrl("""+cond$+""","+�(rd%)+","""+label$(dest%)+""")"
�  �
�  offset%+=8
�
�

 ��disadrsub
*inst%=base%!offset%
4inst$=�extract(inst%,len%)
>I%=�inst$,"#")
H&dest%=-�(�inst$,I%+1,9))+offset%+8
R�checkformore
\�extra$=""�
f0  �label$(offset%)<>""��".";label$(offset%);
p  I%=�inst$,",")
z  �inst$)="ADR"
�#  �20)�inst$,I%)+label$(dest%)
�  offset%+=4
��
�0  �label$(offset%)<>""��".";label$(offset%);
�  cond$=�inst$,4,2)
�  �dest%>bytes%�dest%<0�
�@    �20)"FNadrl("""+cond$+""","+�(rd%)+",""&"+�~dest%+""")"
�  �
�E    �20)"FNadrl("""+cond$+""","+�(rd%)+","""+label$(dest%)+""")"
�  �
�  offset%+=8
��
��

��disalign

�pointer%
$�20)"ALIGN"
.pointer%=offset%+base%
8ȕpointer%�4<>0
B  pointer%+=1
L  offset%+=1
V�
`�
j
t��disbl
~/dest%=(((�(�inst$,len%-7)))<<8)>>8)+offset%
�.�label$(offset%)<>""��".";label$(offset%);
��dest%>bytes%�dest%<0�
�  �20)�inst$,8)+"&";~dest%
��
�"  �20)�inst$,8)+label$(dest%)
��
�offset%+=4
��
�
���disbranch
�/dest%=(((�(�inst$,len%-7)))<<8)>>8)+offset%
�.�label$(offset%)<>""��".";label$(offset%);
�dest%>bytes%�dest%<0�

  �20)�inst$,8)+"&";~dest%
�
"  �20)�inst$,8)+label$(dest%)
�
(offset%+=4
2�
<
F
��disbyte
Pbyte%=base%?offset%
Z.�label$(offset%)<>""��".";label$(offset%);
dbyte$=�~(byte%)
n byte$=�2-�(byte$),"0")+byte$
x�20)"EQUB    &";byte$
�offset%+=1
��
�
�
��discode
�inst%=base%!offset%
�inst$=�extract(inst%,len%)
�Ȏ�inst(inst%)�
�  � 1:�disbranch
�  � 2:�disbranch
�  � 3:�disbl
�  � 4:�disother
�  � 5:�disswi
�  � 6:�disother
  � 7:�disother
  � 8:�disadradd
  � 9:�disadrsub
"  �10:�disother
,  �11:�dislsexp
6  �12:�discopro
@  �13:�disundef
J  �14:�disother
T  :�disother
^�
h�
r
|
��disdoub
�double%=base%!offset%
�.�label$(offset%)<>""��".";label$(offset%);
�double$=�~(double%)
�&double$=�8-�(double$),"0")+double$
��20)"EQUD    &";double$
�offset%+=4
��
�
���disexternal
�� Desktop module
�Ȏoffset%�
�  � &5FC:�"]"
�9            �"OSCLI""Load TEMPLATES.Filer ""+STR$~O%"
            �"O%+=&489"
            �"P%+=&489"
            �"[OPT pass%"
&            offset%+=&489
0  � &AAF:�"]"
:<            �"OSCLI""Load TEMPLATES.NetFiler ""+STR$~O%"
D            �"O%+=&43F"
N            �"P%+=&43F"
X            �"[OPT pass%"
b            offset%+=&43F
l  � &F16:�"]"
v;            �"OSCLI""Load TEMPLATES.Palette ""+STR$~O%"
�            �"O%+=&4E1"
�            �"P%+=&4E1"
�            �"[OPT pass%"
�            offset%+=&4E1
�  �&141F:�"]"
�<            �"OSCLI""Load TEMPLATES.Switcher ""+STR$~O%"
�            �"O%+=&4D9"
�            �"P%+=&4D9"
�            �"[OPT pass%"
�            offset%+=&4D9
�  �&191B:�"]"
�8            �"OSCLI""Load TEMPLATES.Wimp ""+STR$~O%"
�            �"O%+=&27D"
            �"P%+=&27D"
            �"[OPT pass%"
            offset%+=&27D
 �
*�
4
>��dislsexp
Hinst%=base%!offset%
Rinst$=�extract(inst%,len%)
\I%=�inst$,"#")+1
fJ%=�inst$,"]")-I%
p$dest%=�(�inst$,I%,J%))+offset%+8
z.�label$(offset%)<>""��".";label$(offset%);
�I%=�inst$,",")
�!�20)�inst$,I%)+label$(dest%)
�offset%+=4
��
�
���disother
�.�label$(offset%)<>""��".";label$(offset%);
��20)inst$
�offset%+=4
��
�
���dispaddedstring
�	�end%

strlen%=0
.�label$(offset%)<>""��".";label$(offset%);

end%=�
$�
.  char$=�(base%?offset%)
8  strbuf%?strlen%=�char$
B  strlen%+=1
L  offset%+=1
V  �offset%>bytes%�
`    end%=�
j  �
t7    �type%(offset%)<>-3 �label$(offset%)<>""�end%=�
~  �
�	�end%
��printString(strlen%)
��
�
�
��disstr0
�
strlen%=0
�.�label$(offset%)<>""��".";label$(offset%);
��
�  char$=�(base%?offset%)
�  strbuf%?strlen%=�char$
�  strlen%+=1
�  offset%+=1
  �char$=�27�

    char$=�(base%?offset%)
    strbuf%?strlen%=�char$
    strlen%+=1
(    offset%+=1
2    char$=�(base%?offset%)
<    strbuf%?strlen%=�char$
F    strlen%+=1
P    offset%+=1
Z  �
d"�char$=�0 �label$(offset%)<>""
n�printString(strlen%)
x�
�
���disstrCR
�	�len%
� string$=$(base%+offset%)+�13
�$strbuf%=string$
�strlen%=�string$
�.�label$(offset%)<>""��".";label$(offset%);
�offset%+=strlen%
��printString(strlen%)
��
�
���disswi
�!�(inst%�&0FFDFF00)=&0F000100�
  I%=�inst$,"""")

  �I%<>0�
4    inst$=�inst$,I%-1)+"ASC"+�inst$,�inst$-I%+1)
"  �
,�
6  ��inst$,4)="User"�
@    num%=inst%�&00FFFFFF
J"    inst$=�inst$,8)+"&"+�~num%
T  �
^0    inst$=�inst$,8)+""""+�inst$,len%-8)+""""
h  �
r�
|.�label$(offset%)<>""��".";label$(offset%);
��20)inst$
�num%=inst%�smask%
�offset%+=4
�Ȏnum%�
�  �1:�disstr0:�disalign
��
��
�
�
��disword
�0word%=base%?offset%+&100*(base%?(offset%+1))
�.�label$(offset%)<>""��".";label$(offset%);
�word$=�~(word%)
� word$=�4-�(word$),"0")+word$
�20)"EQUW    &";�~(word%)
offset%+=2
�
&
0��double(� offset%)
:Ȏtype%(offset%)�
D	  �0:
N  �3,4:�
X'  :�255,"Expecting type 3, 4 or 0"
b�
l�I%
vdouble%=base%!offset%
��I%=0�3
�  type%(offset%+I%)=4
��
�offset%+=4
��
�
���error
�
*Spool
��7
��$+" at line ";�
z�#0
��
�
�
��exit
�
return%=�
�offset%+=4
��
�
���external
��
�
<��external
F� Desktop module
P�offset%=&5FC�&5FC+&489-1
Z  type%(offset%)=7
d�
n�offset%=&AAF�&AAF+&43F-1
x  type%(offset%)=7
��
��offset%=&F16�&F16+&4E1-1
�  type%(offset%)=7
��
��offset%=&141F�&141F+&4D9-1
�  type%(offset%)=7
��
��offset%=&191B�&191B+&27D-1
�  type%(offset%)=7
��
��
�
���header
label$(0)="Header"

offset%=0
�I%=0�3
"	  �A$
,  �debug%�
6
    �6
@    �A$
J
    �7
T  �
^  �base%!offset%=0�
h    �double(offset%)
r  �
|    �address(offset%)
�    label$(address%)=A$
�    �code(address%)
�  �
��
�� Title string
��debug%�
�  �6
�  �"TitleString"
�  �7
��
�	  �A$
�  �base%!offset%=0�
�    �double(offset%)
�  �
     �address(offset%)
     label$(address%)=A$
 &    �string0(address%)
 0  �
 :� Help string
 D�A$
 N�debug%�
 X  �6
 b	  �A$
 l  �7
 v�
 ��base%!offset%=0�
 �  �double(offset%)
 ��
 �  �address(offset%)
 �  label$(address%)=A$
 �  �string0(address%)
 ��
 �$� Help and command keyword table
 ��A$
 ��debug%�
 �  �6
 �	  �A$
 �  �7
!�
!�base%!offset%=0�
!  �double(offset%)
! �
!*  �address(offset%)
!4  label$(address%)=A$
!>  �kwtable(address%)
!H�
!R
!\�type%(offset%)<>0��
!f� SWI chunk base number
!p�debug%�
!z  �6
!�  �"SWIChunkBaseNumber"
!�  �7
!��
!��base%!offset%=0��
!�-�((base%!offset%)�&FF00003F)<>&00000000��
!�1�((base%!(offset%+4))�&FC000003)<>&00000000��
!��double(offset%)
!�
!�� SWI decoding table
!�offset%=&24
!��(base%!offset%<bytes%)�
!�  �debug%�
!�
    �6
"    �"SWIDecodingTable"
"
    �7
"  �
"$  �base%!offset%=0�
".    �double(offset%)
"8  �
"B    �address(offset%)
"L)    label$(address%)="SWIDecodeTable"
"V    �switable(address%)
"`  �
"j�
"t
"~� SWI handler code
"�offset%=&20
"��debug%�
"�  �6
"�  �"SWIHandlerCode"
"�  �7
"��
"��base%!offset%=0�
"�  �double(offset%)
"��
"�  �address(offset%)
"�'  label$(address%)="SWIHandlerCode"
"�  �swihandler(address%)
#�
#

#� SWI decoding code
#offset%=&28
#(�debug%�
#2  �6
#<  �"SWIDecodingCode"
#F  �7
#P�
#Z�base%!offset%=0�
#d  �double(offset%)
#n�
#x  �base%!offset%<bytes%�
#�    �address(offset%)
#�(    label$(address%)="SWIDecodeCode"
#�    �code(address%)
#�  �
#��
#��
#�
#�
��init
#���error
#��=&30000
#�version$="2.00"
#�stage%=0
#�3debug%=�:� Prints debugging information in cyan
$=flop%=�:� Accept floating-point opcodes (not implemented)
$1readscript%=�:� Read user responses from file
$1writescript%=�:� Write user responses to file
$"K�IFreadscript%ANDwritescript%THENERROR255,"Can't read and write script"
$,base%=&10000
$65�MODE20:REM If you have no multisync, try MODE 12
$@.�12:� If you have a multisync, try MODE 20
$J�"filename",filename$
$T>ș"OS_File",12,filename$,base%,0,"ORIGINALS."�,,,,filelen%
$^�readscript%�writescript%�
$h/  ș"OS_File",17,"SCRIPTS."+filename$�type%
$r;  �type%=0�ș"OS_File",11,"SCRIPTS."+filename$,&FFF,0,0
$|%  script%=�("SCRIPTS."+filename$)
$��
$�>� Fix for Podule !&107C8=&814:REM @@@@@@@@@@@@@@@@@@@@@@@@
$�bytes%=filelen%-1
$�words%=((bytes%+1)�4)-1
$�E�label$(bytes%),type%(bytes%+1),buffer%&100,swi$(63),strbuf%&1000
$�bmask%=(%1111)<<24
$�b%=(%1010)<<24
$�bl%=(%1011)<<24
$�!end%=(%11101000000100001)<<15
$�emask%=end%
$�smask%=&000DFFFF
$�swi%=(%1111)<<24
$��
%
%��kwtable(offset%)
%�keyword$,helpcode%
%&�
%0  helpcode%=�
%:  �string0(offset%)
%D  keyword$=string$
%N  �align(offset%)
%X  offset%+=4
%b  �double(offset%)
%l?  �(double%�&40000000)=&40000000�keyword$="Config"+keyword$
%v0  �(double%�&20000000)=&20000000�helpcode%=�
%�  offset%-=8
%�  �base%!offset%=0�
%�    �double(offset%)
%�  �
%�.    �base%!offset%>bytes%�base%!offset%<0�
%�      �double(offset%)
%�	    �
%�      �address(offset%)
%�*      label$(address%)=keyword$+"Code"
%�      �code(address%)
%�	    �
%�  �
%�  offset%+=4
&  �base%!offset%=0�
&    �double(offset%)
&  �
&     �address(offset%)
&**    label$(address%)=keyword$+"Syntax"
&4    �stringA(address%)
&>  �
&H  �base%!offset%=0�
&R    �double(offset%)
&\  �
&f    �address(offset%)
&p(    label$(address%)=keyword$+"Help"
&z    �helpcode%�
&�      �code(address%)
&�	    �
&�      �stringA(address%)
&�	    �
&�  �
&��base%?offset%=0
&��byte(offset%)
&��
&�
&���loadtypes
&�
�F%,I%
&�F%=�("Types")
&��I%=0�bytes%
'  type%(I%)=�#F%
'#  �type%(I%)>127�type%(I%)-=256
'�
'$�#F%
'.F%=�("Labels")
'8�I%=0�bytes%
'B  �#F%,label$(I%)
'L�
'V�#F%
'`�
'j
't��lsexp
'~
�I%,J%
'��I%=0�3
'�  type%(offset%+I%)=5
'��
'�I%=�inst$,"#")+1
'�J%=�inst$,"]")-I%
'�$dest%=�(�inst$,I%,J%))+offset%+8
'�1�label$(dest%)=""�label$(dest%)="x"+�~(dest%)
'��type%(dest%)=0�
'�  �debug%�
'�
    �6
'�    �"LSexp",~offset%
'�
    �7
(  �
(
  �whatsthis(offset%,dest%)
(  Ȏtype%�
(    �-4:�stringA(offset%)
(((    �-3:�paddedstring(dest%,number%)
(2    �-2:�stringCR(dest%)
(<    �-1:�string0(dest%)
(F    � 0:
(P    � 1:�byte(dest%)
(Z    � 2:�word(dest%)
(d    � 4:�double(dest%)
(n    � 5:�code(dest%)
(x  �
(��
(�offset%+=4
(��
(�
(�"��paddedstring(� offset%,len%)
(��I%
(�Ȏtype%(offset%)�
(�
  � 0:
(�  �-3:�ENDPROC
(�%  :�255,"Expecting type -3 or 0"
(��
(��I%=1�len%
(�  type%(offset%)=-3
)  offset%+=1
)�
)�
)"
),��savetypes
)6
�F%,I%
)@F%=�("Types")
)J�I%=0�bytes%
)T  �#F%,type%(I%)
)^�
)h�#F%
)rF%=�("Labels")
)|�I%=0�bytes%
)�  �#F%,label$(I%)
)��
)��#F%
)��
)�
)���string0(� offset%)
)�Ȏtype%(offset%)�
)�
  � 0:
)�  �-1:�ENDPROC
)�%  :�255,"Expecting type -1 or 0"
)��
)�string$=""
)�ȕbase%?offset%<>0
*-  �string$<255�string$+=�(base%?offset%)
*  type%(offset%)=-1
*  offset%+=1
*&�
*0type%(offset%)=-1
*:offset%+=1
*D�
*N
*X��stringA(� offset%)
*bȎtype%(offset%)�
*l
  � 0:
*v  �-1:�
*�%  :�255,"Expecting type -1 or 0"
*��
*�ȕbase%?offset%<>0
*�  type%(offset%)=-1
*�  �base%?offset%=27�
*�    offset%+=1
*�    type%(offset%)=-1
*�  �
*�  offset%+=1
*��
*�type%(offset%)=-1
*�offset%+=1
*��
+
+��stringCR(� offset%)
+Ȏtype%(offset%)�
+ 
  � 0:
+*  �-2:�ENDPROC
+4%  :�255,"Expecting type -2 or 0"
+>�
+Hȕbase%?offset%<>13
+R  type%(offset%)=-2
+\  offset%+=1
+f�
+ptype%(offset%)=-2
+zoffset%+=1
+��
+�
+�	��swi
+�,inst$=�inst$,8)+""""+�inst$,len%-8)+""""
+�num%=inst%�smask%
+�Ȏnum%�
+�  �  1:�writeS
+�  �&11:�exit
+�  :offset%+=4
+��
+��
+�
+���swibranch
,/dest%=(((�(�inst$,len%-7)))<<8)>>8)+offset%
,�swi$(counter%)=""�
,3  �label$(dest%)=""�label$(dest%)="x"+�~(dest%)
,$�
,."  label$(dest%)=swi$(counter%)
,8�
,B�code(dest%)
,Loffset%+=4
,V�
,`
,j��swibranchtable
,t�debug%�
,~  �6
,�   �"Got to SWI branch table"
,�  �7
,��
,�offset%+=4
,��I%,end%,counter%
,�
end%=�
,��
,�  �type%(offset%)=0�
,�    inst%=base%!offset%
,�    �I%=0�3
,�      type%(offset%+I%)=5
,�	    �
-"    inst$=�extract(inst%,len%)
-
    �debug%�
-      �6
-       �counter%,�inst(inst%)
-(      �7
-2	    �
-<    Ȏ�inst(inst%)�
-F      �1:�swibranch
-P      :�counter%=0�
-Z$                  �code(offset%)
-d                   offset%+=4
-n                �
-x+                  end%=�:� End of table
-�                �
-�	    �
-�    counter%+=1
-�  �
-�    end%=�
-�  �
-�	�end%
-��debug%�
-�  �6
-�5  �"Left SWI branch table with counter=";counter%
-�  �7
-��
-��
.
.��swihandler(offset%)
.Ȏtype%(offset%)�
."	  �0:
.,
  �5:�
.6$  :�255,"Expecting type 5 or 0"
.@�
.J�I%
.Tinst%=base%!offset%
.^�I%=0�3
.h  type%(offset%+I%)=5
.r�
.|inst$=�extract(inst%,len%)
.�Ȏ�inst(inst%)�
.�  � 1:�branch:�
.�P  �WHEN 2:IFFNinst(base%!(offset%+4))=2THENPROCswibranchtable ELSEPROCbranch
.�  � 2:�branch
.�  � 3:�branchlink
.�  � 4:�
.�  � 5:�swi
.�  � 6:�
.�  � 7:�swibranchtable
.�  � 8:�adradd
.�  � 9:�adrsub
.�  �10:�
.�  �11:�lsexp
/  �12:�copro:�
/  �13:�undef:�
/  �14:�
/&  :offset%+=4
/0�
/:�offset%>bytes%��
/D�type%(offset%)=0��DTn
/N�
/X
/b��switable(� offset%)
/l�I%,prefix$
/v�string0(offset%)
/�prefix$=string$+"_"
/�swi$(I%)=prefix$+"BadSWI"
/�	I%+=1
/�ȕbase%?offset%<>0
/�  �string0(offset%)
/�  swi$(I%)=prefix$+string$
/�  I%+=1
/��
/��byte(offset%)
/��
/�
/���undef
/��I%
0�7
06�"Attempting to disassemble undefined instruction"
0#�("MemoryI "+�~(offset%+base%))
0 �readscript%�
0*"  �"Continuing in a moment..."
04  �I%=1�100000:�
0>�
0H#  �"Press any key to continue"'
0R
  G%=�
0\�
0f�I%=0�3
0p  type%(offset%+I%)=0
0z�
0��
0�
0���whatsthis(offset%,dest%)
0��count%,I%
0�count%=1
0�=ȕtype%(dest%+count%)=0�(dest%+count%)<=bytes%�count%<=68
0�  count%+=1
0��
0��3
0�(�"MemoryI "+�~(offset%+base%)+" +10"
0��7:�
0�*�"MEMORYI "+�~(dest%+base%-&20)+" +20"
0��1
1%�"MEMORYI "+�~(dest%+base%)+" +4"
1�7
1(�"MEMORYI "+�~(dest%+base%+4)+" +20"
1$�'~dest%
1.�"What's this?"
18type%=0:number%=1
1B#笤replay(dest%,type%,number%)�
1L  �type%
1V2  �type%=-3��"Length of padded string",number%
1`-  �type%<>0��capture(dest%,type%,number%)
1j�
1t�
1~
1���word(� offset%)
1�Ȏtype%(offset%)�
1�	  �0:
1�
  �2:�
1�$  :�255,"Expecting type 2 or 0"
1��
1��I%
1�0word%=base%?offset%+&100*(base%?(offset%+1))
1��I%=0�1
1�  type%(offset%+I%)=2
1��
1�offset%+=2
2�
2

2��writeS
2offset%+=4
2(�string0(offset%)
22�offset%�4<>0�
2<  �align(offset%)
2F�
2P�
2Z
2dݤextract(inst%,� len%)
2n�I%
2x2ș"Debugger_Disassemble",inst%,0�,buffer%,len%
2�len%-=1
2�inst$=""
2��
2�  inst$+=�(buffer%?I%)
2�  I%+=1
2��buffer%?I%=0
2�
=inst$
2�
2�ݤimm(imm$)
2��I%,imm%,bits%,shift%
2�I%=�imm$,",")
2�
�I%=0�
2�  imm%=�(imm$)
3�
3  bits%=�(�imm$,I%-1))
3!  shift%=�(�imm$,�(imm$)-I%))
3"/  imm%=(bits%<<(32-shift%))�(bits%>>shift%)
3,�
36	=imm%
3@
3Jݤinst(inst%)
3T*�(inst%�&FF000000)=&EA000000�= 1:� BAL
3^9�(inst%�&0F000000)=&0A000000�= 2:� conditional branch
3h)�(inst%�&0F000000)=&0B000000�= 3:� BL
3r0�(inst%�&FE108000)=&E8108000�= 4:� LDM ,{PC}
3|*�(inst%�&0F000000)=&0F000000�= 5:� SWI
3�.�(inst%�&FDE0F000)=&E1A0F000�= 6:� MOV PC,
3�3�(inst%�&08EFFFF0)=&008FF100�= 7:� Branch table
3�.�(inst%�&0FEF0000)=&028F0000�= 8:� ADR add
3�.�(inst%�&0FEF0000)=&024F0000�= 9:� ADR sub
3�7�(inst%�&FFFFF000)=&E39EF000�=10:� ORRS PC,R14,#...
3�8�(inst%�&0F2F0000)=&050F0000�=11:� LDR/STR Rn,<expr>
3�-�(inst%�&0F000000)=&0E000000�=12:� Co-pro
3�-�(inst%�&0E000000)=&0C000000�=12:� Co-pro
3�0�(inst%�&0F000090)=&01000090�=13:� Undefined
3�0�(inst%�&0E000010)=&06000010�=13:� Undefined
3�7�(inst%�&FFFFF000)=&E3DEF000�=14:� BICS PC,R14,#...
3�=0
3�
4'ݤreplay(target%,� type%,� number%)
4�readscript%�=�
4%�end%,string$,offset%,success%,I%
4&�#script%=0
40
end%=�
4:�
4D  ��#script%�
4N    success%=�
4X    end%=�
4b  �
4l    string$=�#script%
4v    offset%=�("&"+string$)
4�    �offset%=target%�
4�      success%=�
4�      I%=�string$,",")
4�      �string$,I%)=�I%," ")
4�      type%=�string$
4�      I%=�string$,",")
4�      �string$,I%)=�I%," ")
4�      number%=�string$
4�      end%=�
4�	    �
4�  �
4�	�end%
4�
=success%
5
5ݤyesno
5G%=�
5 �G%=89 �G%=121 �=� �=�
5*
54�� StartCode,InitCode,FinalCode,SerCallHandler,TitleString,HelpString,HelpCommKeywTab,SWIChunkBaseNum,SWIHandlerCode,SWIDecodTab,SWIDecodCode
5>
5H��printString(Length%)
5R$� Prints a string in EQUS format
5\�I%,String%
5f�20)"EQUS    ";
5p
String%=�
5z�Length%>1�
5�  �I%=0�Length%-2
5�    Char%=strbuf%?I%
5�&    �Char%=ASC(MID$(String$,I%,1))
5�     �(Char%<32)�(Char%>126)�
5�      �String%�
5�        String%=�
5�$        �"""+CHR$"+�(Char%)+"+";
5�      �
5�!        �"CHR$"+�(Char%)+"+";
5�      �
5�	    �
5�      �String%�
5�        �(Char%);
6      �
6        String%=�
6        �""""+�(Char%);
6$      �
6.      �Char%=34��(Char%);
68	    �
6B  �
6L�
6VChar%=strbuf%?(Length%-1)
6`!�Char%=ASC(RIGHT$(String$,1))
6j�(Char%<32)�(Char%>126)�
6t  �String%�
6~    �"""+CHR$"+�(Char%)
6�  �
6�    �"CHR$"+�(Char%)
6�  �
6��
6�  �String%�
6�    �(Char%)+""""
6�  �
6�    �""""+�(Char%)+""""
6�  �
6��
6��
�
00000000  0d 00 0a 10 f4 20 3e 4d  6f 64 44 69 73 32 30 31  |..... >ModDis201|
00000010  0d 00 14 20 f4 20 52 65  76 69 73 65 64 20 73 63  |... . Revised sc|
00000020  72 69 70 74 20 66 69 6c  65 20 66 6f 72 6d 61 74  |ript file format|
00000030  0d 00 1e 22 f4 20 44 65  74 65 63 74 73 20 65 6e  |...". Detects en|
00000040  64 2d 6f 66 2d 63 6f 64  65 20 77 69 74 68 20 42  |d-of-code with B|
00000050  49 43 0d 00 28 21 f4 20  48 61 6e 64 6c 65 73 20  |IC..(!. Handles |
00000060  68 65 6c 70 20 63 6f 64  65 20 63 6f 72 72 65 63  |help code correc|
00000070  74 6c 79 0d 00 32 29 f4  20 46 69 78 65 64 20 6e  |tly..2). Fixed n|
00000080  65 67 61 74 69 76 65 20  62 75 67 20 69 6e 20 50  |egative bug in P|
00000090  52 4f 43 6c 6f 61 64 74  79 70 65 73 0d 00 3c 33  |ROCloadtypes..<3|
000000a0  f4 20 53 6f 6d 65 20 73  75 70 70 6f 72 74 20 66  |. Some support f|
000000b0  6f 72 20 6f 75 74 2d 6f  66 2d 6d 6f 64 75 6c 65  |or out-of-module|
000000c0  20 62 72 61 6e 63 68 65  73 20 61 64 64 65 64 0d  | branches added.|
000000d0  00 46 3a f4 20 27 41 63  6f 72 6e 27 20 63 6f 6d  |.F:. 'Acorn' com|
000000e0  70 72 65 73 73 65 64 20  73 74 72 69 6e 67 20 66  |pressed string f|
000000f0  6f 72 6d 61 74 20 63 61  6e 20 6e 6f 77 20 62 65  |ormat can now be|
00000100  20 73 65 6c 65 63 74 65  64 0d 00 50 2d f4 20 57  | selected..P-. W|
00000110  6f 72 6b 73 20 77 69 74  68 20 6d 6f 64 75 6c 65  |orks with module|
00000120  73 20 77 69 74 68 20 6e  6f 20 74 69 74 6c 65 20  |s with no title |
00000130  73 74 72 69 6e 67 0d 00  5a 10 f4 20 3e 4d 6f 64  |string..Z.. >Mod|
00000140  44 69 73 32 30 30 0d 00  64 31 f4 20 4e 65 77 20  |Dis200..d1. New |
00000150  76 65 72 73 69 6f 6e 20  72 65 63 6f 67 6e 69 73  |version recognis|
00000160  65 73 20 69 74 73 20 6f  77 6e 20 73 63 72 69 70  |es its own scrip|
00000170  74 20 66 69 6c 65 73 0d  00 6e 19 f4 20 4f 53 57  |t files..n.. OSW|
00000180  72 69 74 65 49 20 72 65  63 6f 67 6e 69 73 65 64  |riteI recognised|
00000190  0d 00 78 32 f4 20 44 6f  65 73 6e 27 74 20 63 72  |..x2. Doesn't cr|
000001a0  61 73 68 20 77 68 65 6e  20 70 61 64 64 65 64 20  |ash when padded |
000001b0  73 74 72 69 6e 67 20 65  6e 64 73 20 6d 6f 64 75  |string ends modu|
000001c0  6c 65 0d 00 82 10 f4 20  3e 4d 6f 64 44 69 73 31  |le..... >ModDis1|
000001d0  30 35 0d 00 8c 24 f4 20  46 69 78 65 64 20 62 75  |05...$. Fixed bu|
000001e0  67 20 77 69 74 68 20 77  6f 72 64 20 69 6e 20 50  |g with word in P|
000001f0  52 4f 43 61 73 6b 0d 00  96 41 f4 20 4c 65 6e 67  |ROCask...A. Leng|
00000200  74 68 20 6f 66 20 70 61  64 64 65 64 20 73 74 72  |th of padded str|
00000210  69 6e 67 20 6e 6f 77 20  63 61 70 74 75 72 65 64  |ing now captured|
00000220  20 77 68 65 6e 20 77 72  69 74 65 73 63 72 69 70  | when writescrip|
00000230  74 25 3d 54 52 55 45 0d  00 a0 30 f4 20 57 6f 72  |t%=TRUE...0. Wor|
00000240  6b 73 20 69 66 20 62 72  61 6e 63 68 20 74 61 62  |ks if branch tab|
00000250  6c 65 20 6e 6f 74 20 66  6f 6c 6c 6f 77 65 64 20  |le not followed |
00000260  62 79 20 63 6f 64 65 0d  00 aa 10 f4 20 3e 4d 6f  |by code..... >Mo|
00000270  64 44 69 73 31 30 34 0d  00 b4 2d f4 20 46 69 78  |dDis104...-. Fix|
00000280  65 64 20 62 75 67 20 77  69 74 68 20 53 57 49 20  |ed bug with SWI |
00000290  62 72 61 6e 63 68 20 74  61 62 6c 65 20 6f 76 65  |branch table ove|
000002a0  72 72 75 6e 0d 00 be 1d  f4 20 46 69 78 65 64 20  |rrun..... Fixed |
000002b0  62 75 67 20 77 69 74 68  20 53 57 49 20 6d 61 73  |bug with SWI mas|
000002c0  6b 0d 00 c8 38 f4 20 4e  6f 20 6d 6f 72 65 20 6b  |k...8. No more k|
000002d0  65 79 70 72 65 73 73 20  70 72 6f 6d 70 74 73 20  |eypress prompts |
000002e0  77 68 69 6c 65 20 72 65  61 64 69 6e 67 20 73 63  |while reading sc|
000002f0  72 69 70 74 20 66 69 6c  65 0d 00 d2 40 f4 20 57  |ript file...@. W|
00000300  61 72 6e 73 20 61 62 6f  75 74 20 73 69 6d 75 6c  |arns about simul|
00000310  74 61 6e 65 6f 75 73 6c  79 20 72 65 61 64 69 6e  |taneously readin|
00000320  67 20 61 6e 64 20 77 72  69 74 69 6e 67 20 73 63  |g and writing sc|
00000330  72 69 70 74 20 66 69 6c  65 0d 00 dc 10 f4 20 3e  |ript file..... >|
00000340  4d 6f 64 44 69 73 31 30  33 0d 00 e6 40 f4 20 43  |ModDis103...@. C|
00000350  61 6e 20 63 6f 70 65 20  77 69 74 68 20 73 6f 6d  |an cope with som|
00000360  65 20 73 74 72 69 6e 67  73 20 6c 6f 6e 67 65 72  |e strings longer|
00000370  20 74 68 61 6e 20 32 35  35 20 62 79 74 65 73 20  | than 255 bytes |
00000380  28 49 20 74 68 69 6e 6b  29 0d 00 f0 27 f4 20 43  |(I think)...'. C|
00000390  6f 70 65 73 20 77 69 74  68 20 22 20 63 68 61 72  |opes with " char|
000003a0  61 63 74 65 72 20 69 6e  20 73 74 72 69 6e 67 73  |acter in strings|
000003b0  0d 00 fa 10 f4 20 3e 4d  6f 64 44 69 73 31 30 32  |..... >ModDis102|
000003c0  0d 01 04 2b f4 20 42 75  6e 64 6c 65 64 20 6d 61  |...+. Bundled ma|
000003d0  63 72 6f 20 66 6f 72 20  41 44 52 6c 6f 6e 67 20  |cro for ADRlong |
000003e0  69 6d 70 6c 65 6d 65 6e  74 65 64 0d 01 0e 10 f4  |implemented.....|
000003f0  20 3e 4d 6f 64 44 69 73  31 30 31 0d 01 18 13 f4  | >ModDis101.....|
00000400  20 53 63 72 69 70 74 73  20 61 64 64 65 64 0d 01  | Scripts added..|
00000410  22 40 f4 20 42 75 67 20  77 69 74 68 20 53 57 49  |"@. Bug with SWI|
00000420  20 74 61 62 6c 65 20 65  6e 74 72 69 65 73 20 65  | table entries e|
00000430  78 63 65 65 64 69 6e 67  20 6e 75 6d 62 65 72 20  |xceeding number |
00000440  6f 66 20 6e 61 6d 65 73  20 66 69 78 65 64 0d 01  |of names fixed..|
00000450  2c 10 f4 20 3e 4d 6f 64  44 69 73 31 30 30 0d 01  |,.. >ModDis100..|
00000460  36 28 f4 20 4b 65 79 77  6f 72 64 20 74 61 62 6c  |6(. Keyword tabl|
00000470  65 20 6e 6f 77 20 63 6f  70 65 73 20 77 69 74 68  |e now copes with|
00000480  20 7a 65 72 6f 73 0d 01  40 35 f4 20 43 6f 70 65  | zeros..@5. Cope|
00000490  73 20 77 69 74 68 20 41  44 52 20 66 6f 6c 6c 6f  |s with ADR follo|
000004a0  77 65 64 20 62 79 20 41  44 44 20 6f 72 20 53 55  |wed by ADD or SU|
000004b0  42 20 28 41 44 52 6c 6f  6e 67 29 0d 01 4a 1b f4  |B (ADRlong)..J..|
000004c0  20 53 70 65 65 64 65 64  20 75 70 20 66 69 6e 61  | Speeded up fina|
000004d0  6c 20 70 61 73 73 0d 01  54 17 f4 20 46 69 78 65  |l pass..T.. Fixe|
000004e0  64 20 62 75 67 20 69 6e  20 45 51 55 57 0d 01 5e  |d bug in EQUW..^|
000004f0  0e f4 20 3e 4d 6f 64 44  69 73 46 0d 01 68 23 f4  |.. >ModDisF..h#.|
00000500  20 53 6f 72 74 65 64 20  6f 75 74 20 62 69 74 73  | Sorted out bits|
00000510  2c 73 68 69 66 74 20 70  72 6f 62 6c 65 6d 0d 01  |,shift problem..|
00000520  72 0e f4 20 3e 4d 6f 64  44 69 73 45 0d 01 7c 36  |r.. >ModDisE..|6|
00000530  f4 20 54 72 69 65 64 20  74 6f 20 69 6d 70 72 6f  |. Tried to impro|
00000540  76 65 20 72 65 63 6f 67  6e 69 74 69 6f 6e 20 6f  |ve recognition o|
00000550  66 20 53 57 49 20 62 72  61 6e 63 68 20 74 61 62  |f SWI branch tab|
00000560  6c 65 0d 01 86 1d f4 20  41 64 64 65 64 20 65 78  |le..... Added ex|
00000570  74 65 72 6e 61 6c 20 74  79 70 65 20 28 37 29 0d  |ternal type (7).|
00000580  01 90 32 f4 20 48 65 61  64 65 72 20 6c 61 62 65  |..2. Header labe|
00000590  6c 73 20 6e 6f 77 20 74  61 6b 65 20 70 72 65 63  |ls now take prec|
000005a0  65 64 65 6e 63 65 20 6f  76 65 72 20 73 41 42 43  |edence over sABC|
000005b0  44 0d 01 9a 30 f4 20 41  6c 69 67 6e 6d 65 6e 74  |D...0. Alignment|
000005c0  20 70 72 6f 62 6c 65 6d  20 77 69 74 68 20 53 57  | problem with SW|
000005d0  49 20 4f 53 5f 57 72 69  74 65 53 20 66 69 78 65  |I OS_WriteS fixe|
000005e0  64 0d 01 a4 0e f4 20 3e  4d 6f 64 44 69 73 44 0d  |d..... >ModDisD.|
000005f0  01 ae 1d f4 20 44 65 62  75 67 20 69 6e 66 6f 72  |.... Debug infor|
00000600  6d 61 74 69 6f 6e 20 61  64 64 65 64 0d 01 b8 2e  |mation added....|
00000610  f4 20 42 65 74 74 65 72  20 74 72 61 70 70 69 6e  |. Better trappin|
00000620  67 20 66 6f 72 20 6e 6f  20 53 57 49 20 64 65 63  |g for no SWI dec|
00000630  6f 64 69 6e 67 20 63 6f  64 65 0d 01 c2 0e f4 20  |oding code..... |
00000640  3e 4d 6f 64 44 69 73 43  0d 01 cc 23 f4 20 52 65  |>ModDisC...#. Re|
00000650  63 6f 67 6e 69 73 65 73  20 43 6f 6e 66 69 67 75  |cognises Configu|
00000660  72 65 20 6b 65 79 77 6f  72 64 73 0d 01 d6 34 f4  |re keywords...4.|
00000670  20 57 61 72 6e 73 20 61  62 6f 75 74 20 63 6f 70  | Warns about cop|
00000680  72 6f 63 65 73 73 6f 72  20 61 6e 64 20 75 6e 64  |rocessor and und|
00000690  65 66 69 6e 65 64 20 63  6f 6d 6d 61 6e 64 73 0d  |efined commands.|
000006a0  01 e0 39 f4 20 52 65 63  6f 67 6e 69 73 65 73 20  |..9. Recognises |
000006b0  43 52 2d 74 65 72 6d 69  6e 61 74 65 64 20 73 74  |CR-terminated st|
000006c0  72 69 6e 67 73 20 61 6e  64 20 70 61 64 64 65 64  |rings and padded|
000006d0  20 73 74 72 69 6e 67 73  0d 01 ea 32 f4 20 50 72  | strings...2. Pr|
000006e0  6f 76 69 73 69 6f 6e 20  66 6f 72 20 6c 6f 61 64  |ovision for load|
000006f0  69 6e 67 20 61 6e 64 20  73 61 76 69 6e 67 20 74  |ing and saving t|
00000700  79 70 65 25 20 61 72 72  61 79 0d 01 f4 0e f4 20  |ype% array..... |
00000710  3e 4d 6f 64 44 69 73 42  0d 01 fe 22 f4 20 50 72  |>ModDisB...". Pr|
00000720  6f 76 69 73 69 6f 6e 20  66 6f 72 20 4c 44 52 2f  |ovision for LDR/|
00000730  53 54 52 20 52 6e 2c 65  78 70 0d 02 08 14 f4 20  |STR Rn,exp..... |
00000740  53 70 65 65 64 65 64 20  75 70 20 41 73 6b 0d 02  |Speeded up Ask..|
00000750  12 04 0d 02 1c 13 f4 20  4c 6f 72 63 61 6e 20 4d  |....... Lorcan M|
00000760  6f 6e 67 65 79 0d 02 26  18 f4 20 35 36 20 53 61  |ongey..&.. 56 Sa|
00000770  6c 69 73 62 75 72 79 20  43 6f 75 72 74 0d 02 30  |lisbury Court..0|
00000780  11 f4 20 44 75 62 6c 69  6e 20 52 6f 61 64 0d 02  |.. Dublin Road..|
00000790  3a 15 f4 20 42 65 6c 66  61 73 74 20 42 54 37 20  |:.. Belfast BT7 |
000007a0  31 44 44 0d 02 44 16 f4  20 54 65 6c 3a 20 30 32  |1DD..D.. Tel: 02|
000007b0  33 32 20 32 33 34 33 38  36 0d 02 4e 04 0d 02 58  |32 234386..N...X|
000007c0  30 f4 20 49 20 63 61 6e  20 61 6c 73 6f 20 62 65  |0. I can also be|
000007d0  20 72 65 61 63 68 65 64  20 61 74 20 74 68 65 20  | reached at the |
000007e0  66 6f 6c 6c 6f 77 69 6e  67 20 42 42 53 0d 02 62  |following BBS..b|
000007f0  04 0d 02 6c 27 f4 20 42  42 53 20 20 20 20 20 20  |...l'. BBS      |
00000800  20 20 20 20 20 20 20 20  54 65 6c 65 70 68 6f 6e  |        Telephon|
00000810  65 20 20 20 20 20 49 44  0d 02 76 34 f4 20 2d 2d  |e     ID..v4. --|
00000820  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000840  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 02 80 34  |------------...4|
00000850  f4 20 43 49 58 20 20 20  20 20 20 20 20 20 20 20  |. CIX           |
00000860  20 20 20 30 38 31 20 33  39 30 20 31 32 34 34 20  |   081 390 1244 |
00000870  20 6c 6f 72 63 61 6e 40  63 69 78 2e 75 75 63 70  | lorcan@cix.uucp|
00000880  0d 02 8a 32 f4 20 57 6f  72 6c 64 20 6f 66 20 43  |...2. World of C|
00000890  72 79 74 6f 6e 20 20 30  37 34 39 20 36 37 30 30  |ryton  0749 6700|
000008a0  33 30 20 20 20 6c 6f 72  63 61 6e 20 28 23 32 33  |30   lorcan (#23|
000008b0  37 29 0d 02 94 32 f4 20  41 72 63 61 64 65 20 20  |7)...2. Arcade  |
000008c0  20 20 20 20 20 20 20 20  20 30 38 31 20 36 35 34  |         081 654|
000008d0  20 32 32 31 32 20 20 6c  6f 72 63 61 6e 20 28 23  | 2212  lorcan (#|
000008e0  34 31 37 29 0d 02 9e 04  0d 02 a8 09 f2 69 6e 69  |417).........ini|
000008f0  74 0d 02 b2 0d f2 65 78  74 65 72 6e 61 6c 0d 02  |t.....external..|
00000900  c6 0b f2 68 65 61 64 65  72 0d 02 da 0d 6f 66 66  |...header....off|
00000910  73 65 74 25 3d 30 0d 02  e4 15 c8 95 6f 66 66 73  |set%=0......offs|
00000920  65 74 25 3c 3d 62 79 74  65 73 25 0d 02 ee 27 20  |et%<=bytes%...' |
00000930  20 e7 74 79 70 65 25 28  6f 66 66 73 65 74 25 29  | .type%(offset%)|
00000940  3d 30 8c f2 61 73 6b 3a  6f 66 66 73 65 74 25 2d  |=0..ask:offset%-|
00000950  3d 31 0d 02 f8 10 20 20  6f 66 66 73 65 74 25 2b  |=1....  offset%+|
00000960  3d 31 0d 03 02 05 ce 0d  03 0c 07 d9 23 30 0d 03  |=1..........#0..|
00000970  20 08 f2 64 69 73 0d 03  2a 05 e0 0d 03 34 04 0d  | ..dis..*....4..|
00000980  03 3e 18 dd f2 61 64 64  72 65 73 73 28 f8 20 6f  |.>...address(. o|
00000990  66 66 73 65 74 25 29 0d  03 48 15 c8 8e 74 79 70  |ffset%)..H...typ|
000009a0  65 25 28 6f 66 66 73 65  74 25 29 ca 0d 03 52 09  |e%(offset%)...R.|
000009b0  20 20 c9 30 3a 0d 03 5c  0a 20 20 c9 33 3a e1 0d  |  .0:..\.  .3:..|
000009c0  03 66 24 20 20 7f 3a 85  32 35 35 2c 22 45 78 70  |.f$  .:.255,"Exp|
000009d0  65 63 74 69 6e 67 20 74  79 70 65 20 33 20 6f 72  |ecting type 3 or|
000009e0  20 30 22 0d 03 70 05 cb  0d 03 7a 07 ea 49 25 0d  | 0"..p....z..I%.|
000009f0  03 84 1a 61 64 64 72 65  73 73 25 3d 62 61 73 65  |...address%=base|
00000a00  25 21 6f 66 66 73 65 74  25 0d 03 8e 0b e3 49 25  |%!offset%.....I%|
00000a10  3d 30 b8 33 0d 03 98 19  20 20 74 79 70 65 25 28  |=0.3....  type%(|
00000a20  6f 66 66 73 65 74 25 2b  49 25 29 3d 33 0d 03 a2  |offset%+I%)=3...|
00000a30  05 ed 0d 03 ac 0e 6f 66  66 73 65 74 25 2b 3d 34  |......offset%+=4|
00000a40  0d 03 b6 05 e1 0d 03 c0  04 0d 03 ca 0c dd f2 61  |...............a|
00000a50  64 72 61 64 64 0d 03 d4  0d ea 49 25 2c 6c 65 6e  |dradd.....I%,len|
00000a60  32 25 0d 03 de 0b e3 49  25 3d 30 b8 33 0d 03 e8  |2%.....I%=0.3...|
00000a70  19 20 20 74 79 70 65 25  28 6f 66 66 73 65 74 25  |.  type%(offset%|
00000a80  2b 49 25 29 3d 35 0d 03  f2 05 ed 0d 03 fc 12 49  |+I%)=5.........I|
00000a90  25 3d a7 69 6e 73 74 24  2c 22 23 22 29 0d 04 06  |%=.inst$,"#")...|
00000aa0  18 64 65 73 74 24 3d c1  69 6e 73 74 24 2c 49 25  |.dest$=.inst$,I%|
00000ab0  2b 31 2c 39 29 0d 04 10  1f 64 65 73 74 25 3d a4  |+1,9)....dest%=.|
00000ac0  69 6d 6d 28 64 65 73 74  24 29 2b 6f 66 66 73 65  |imm(dest$)+offse|
00000ad0  74 25 2b 38 0d 04 1a 11  f2 63 68 65 63 6b 66 6f  |t%+8.....checkfo|
00000ae0  72 6d 6f 72 65 0d 04 24  26 e7 64 65 73 74 25 3e  |rmore..$&.dest%>|
00000af0  62 79 74 65 73 25 84 64  65 73 74 25 3c 30 8c 6f  |bytes%.dest%<0.o|
00000b00  66 66 73 65 74 25 2b 3d  34 3a e1 0d 04 2e 31 e7  |ffset%+=4:....1.|
00000b10  6c 61 62 65 6c 24 28 64  65 73 74 25 29 3d 22 22  |label$(dest%)=""|
00000b20  8c 6c 61 62 65 6c 24 28  64 65 73 74 25 29 3d 22  |.label$(dest%)="|
00000b30  78 22 2b c3 7e 28 64 65  73 74 25 29 0d 04 38 14  |x"+.~(dest%)..8.|
00000b40  e7 74 79 70 65 25 28 64  65 73 74 25 29 3d 30 8c  |.type%(dest%)=0.|
00000b50  0d 04 42 0e 20 20 e7 64  65 62 75 67 25 8c 0d 04  |..B.  .debug%...|
00000b60  4c 0a 20 20 20 20 fb 36  0d 04 56 17 20 20 20 20  |L.    .6..V.    |
00000b70  f1 22 41 64 64 22 2c 7e  6f 66 66 73 65 74 25 0d  |."Add",~offset%.|
00000b80  04 60 0a 20 20 20 20 fb  37 0d 04 6a 07 20 20 cd  |.`.    .7..j.  .|
00000b90  0d 04 74 1f 20 20 f2 77  68 61 74 73 74 68 69 73  |..t.  .whatsthis|
00000ba0  28 6f 66 66 73 65 74 25  2c 64 65 73 74 25 29 0d  |(offset%,dest%).|
00000bb0  04 7e 0e 20 20 c8 8e 74  79 70 65 25 ca 0d 04 88  |.~.  ..type%....|
00000bc0  1d 20 20 20 20 c9 2d 34  3a f2 73 74 72 69 6e 67  |.    .-4:.string|
00000bd0  41 28 6f 66 66 73 65 74  25 29 0d 04 92 28 20 20  |A(offset%)...(  |
00000be0  20 20 c9 2d 33 3a f2 70  61 64 64 65 64 73 74 72  |  .-3:.paddedstr|
00000bf0  69 6e 67 28 64 65 73 74  25 2c 6e 75 6d 62 65 72  |ing(dest%,number|
00000c00  25 29 0d 04 9c 1c 20 20  20 20 c9 2d 32 3a f2 73  |%)....    .-2:.s|
00000c10  74 72 69 6e 67 43 52 28  64 65 73 74 25 29 0d 04  |tringCR(dest%)..|
00000c20  a6 1b 20 20 20 20 c9 2d  31 3a f2 73 74 72 69 6e  |..    .-1:.strin|
00000c30  67 30 28 64 65 73 74 25  29 0d 04 b0 0c 20 20 20  |g0(dest%)....   |
00000c40  20 c9 20 30 3a 0d 04 ba  18 20 20 20 20 c9 20 31  | . 0:....    . 1|
00000c50  3a f2 62 79 74 65 28 64  65 73 74 25 29 0d 04 c4  |:.byte(dest%)...|
00000c60  18 20 20 20 20 c9 20 32  3a f2 77 6f 72 64 28 64  |.    . 2:.word(d|
00000c70  65 73 74 25 29 0d 04 ce  1a 20 20 20 20 c9 20 34  |est%)....    . 4|
00000c80  3a f2 64 6f 75 62 6c 65  28 64 65 73 74 25 29 0d  |:.double(dest%).|
00000c90  04 d8 18 20 20 20 20 c9  20 35 3a f2 63 6f 64 65  |...    . 5:.code|
00000ca0  28 64 65 73 74 25 29 0d  04 e2 07 20 20 cb 0d 04  |(dest%)....  ...|
00000cb0  ec 05 cd 0d 04 f6 0e 6f  66 66 73 65 74 25 2b 3d  |.......offset%+=|
00000cc0  34 0d 05 00 05 e1 0d 05  0a 04 0d 05 14 0c dd f2  |4...............|
00000cd0  61 64 72 73 75 62 0d 05  1e 07 ea 49 25 0d 05 28  |adrsub.....I%..(|
00000ce0  0b e3 49 25 3d 30 b8 33  0d 05 32 19 20 20 74 79  |..I%=0.3..2.  ty|
00000cf0  70 65 25 28 6f 66 66 73  65 74 25 2b 49 25 29 3d  |pe%(offset%+I%)=|
00000d00  35 0d 05 3c 05 ed 0d 05  46 12 49 25 3d a7 69 6e  |5..<....F.I%=.in|
00000d10  73 74 24 2c 22 23 22 29  0d 05 50 18 64 65 73 74  |st$,"#")..P.dest|
00000d20  24 3d c1 69 6e 73 74 24  2c 49 25 2b 31 2c 39 29  |$=.inst$,I%+1,9)|
00000d30  0d 05 5a 1f 64 65 73 74  25 3d 6f 66 66 73 65 74  |..Z.dest%=offset|
00000d40  25 2d a4 69 6d 6d 28 64  65 73 74 24 29 2b 38 0d  |%-.imm(dest$)+8.|
00000d50  05 64 11 f2 63 68 65 63  6b 66 6f 72 6d 6f 72 65  |.d..checkformore|
00000d60  0d 05 6e 26 e7 64 65 73  74 25 3e 62 79 74 65 73  |..n&.dest%>bytes|
00000d70  25 84 64 65 73 74 25 3c  30 8c 6f 66 66 73 65 74  |%.dest%<0.offset|
00000d80  25 2b 3d 34 3a e1 0d 05  78 31 e7 6c 61 62 65 6c  |%+=4:...x1.label|
00000d90  24 28 64 65 73 74 25 29  3d 22 22 8c 6c 61 62 65  |$(dest%)="".labe|
00000da0  6c 24 28 64 65 73 74 25  29 3d 22 78 22 2b c3 7e  |l$(dest%)="x"+.~|
00000db0  28 64 65 73 74 25 29 0d  05 82 14 e7 74 79 70 65  |(dest%).....type|
00000dc0  25 28 64 65 73 74 25 29  3d 30 8c 0d 05 8c 0e 20  |%(dest%)=0..... |
00000dd0  20 e7 64 65 62 75 67 25  8c 0d 05 96 0a 20 20 20  | .debug%.....   |
00000de0  20 fb 36 0d 05 a0 17 20  20 20 20 f1 22 53 75 62  | .6....    ."Sub|
00000df0  22 2c 7e 6f 66 66 73 65  74 25 0d 05 aa 0a 20 20  |",~offset%....  |
00000e00  20 20 fb 37 0d 05 b4 07  20 20 cd 0d 05 be 1f 20  |  .7....  ..... |
00000e10  20 f2 77 68 61 74 73 74  68 69 73 28 6f 66 66 73  | .whatsthis(offs|
00000e20  65 74 25 2c 64 65 73 74  25 29 0d 05 c8 0e 20 20  |et%,dest%)....  |
00000e30  c8 8e 74 79 70 65 25 ca  0d 05 d2 1d 20 20 20 20  |..type%.....    |
00000e40  c9 2d 34 3a f2 73 74 72  69 6e 67 41 28 6f 66 66  |.-4:.stringA(off|
00000e50  73 65 74 25 29 0d 05 dc  28 20 20 20 20 c9 2d 33  |set%)...(    .-3|
00000e60  3a f2 70 61 64 64 65 64  73 74 72 69 6e 67 28 64  |:.paddedstring(d|
00000e70  65 73 74 25 2c 6e 75 6d  62 65 72 25 29 0d 05 e6  |est%,number%)...|
00000e80  1c 20 20 20 20 c9 2d 32  3a f2 73 74 72 69 6e 67  |.    .-2:.string|
00000e90  43 52 28 64 65 73 74 25  29 0d 05 f0 1b 20 20 20  |CR(dest%)....   |
00000ea0  20 c9 2d 31 3a f2 73 74  72 69 6e 67 30 28 64 65  | .-1:.string0(de|
00000eb0  73 74 25 29 0d 05 fa 0c  20 20 20 20 c9 20 30 3a  |st%)....    . 0:|
00000ec0  0d 06 04 18 20 20 20 20  c9 20 31 3a f2 62 79 74  |....    . 1:.byt|
00000ed0  65 28 64 65 73 74 25 29  0d 06 0e 18 20 20 20 20  |e(dest%)....    |
00000ee0  c9 20 32 3a f2 77 6f 72  64 28 64 65 73 74 25 29  |. 2:.word(dest%)|
00000ef0  0d 06 18 1a 20 20 20 20  c9 20 34 3a f2 64 6f 75  |....    . 4:.dou|
00000f00  62 6c 65 28 64 65 73 74  25 29 0d 06 22 18 20 20  |ble(dest%)..".  |
00000f10  20 20 c9 20 35 3a f2 63  6f 64 65 28 64 65 73 74  |  . 5:.code(dest|
00000f20  25 29 0d 06 2c 07 20 20  cb 0d 06 36 05 cd 0d 06  |%)..,.  ...6....|
00000f30  40 0e 6f 66 66 73 65 74  25 2b 3d 34 0d 06 4a 05  |@.offset%+=4..J.|
00000f40  e1 0d 06 54 04 0d 06 5e  16 dd f2 61 6c 69 67 6e  |...T...^...align|
00000f50  28 f8 20 6f 66 66 73 65  74 25 29 0d 06 68 15 c8  |(. offset%)..h..|
00000f60  8e 74 79 70 65 25 28 6f  66 66 73 65 74 25 29 ca  |.type%(offset%).|
00000f70  0d 06 72 09 20 20 c9 30  3a 0d 06 7c 0a 20 20 c9  |..r.  .0:..|.  .|
00000f80  36 3a e1 0d 06 86 24 20  20 7f 3a 85 32 35 35 2c  |6:....$  .:.255,|
00000f90  22 45 78 70 65 63 74 69  6e 67 20 74 79 70 65 20  |"Expecting type |
00000fa0  36 20 6f 72 20 30 22 0d  06 90 05 cb 0d 06 9a 0d  |6 or 0".........|
00000fb0  ea 70 6f 69 6e 74 65 72  25 0d 06 a4 1a 70 6f 69  |.pointer%....poi|
00000fc0  6e 74 65 72 25 3d 6f 66  66 73 65 74 25 2b 62 61  |nter%=offset%+ba|
00000fd0  73 65 25 0d 06 ae 13 c8  95 70 6f 69 6e 74 65 72  |se%......pointer|
00000fe0  25 83 34 3c 3e 30 0d 06  b8 16 20 20 74 79 70 65  |%.4<>0....  type|
00000ff0  25 28 6f 66 66 73 65 74  25 29 3d 36 0d 06 c2 11  |%(offset%)=6....|
00001000  20 20 70 6f 69 6e 74 65  72 25 2b 3d 31 0d 06 cc  |  pointer%+=1...|
00001010  10 20 20 6f 66 66 73 65  74 25 2b 3d 31 0d 06 d6  |.  offset%+=1...|
00001020  05 ce 0d 06 e0 05 e1 0d  06 ea 04 0d 06 f4 09 dd  |................|
00001030  f2 61 73 6b 0d 06 fe 17  ea 63 6f 75 6e 74 25 2c  |.ask.....count%,|
00001040  74 79 70 65 25 2c 49 25  2c 4a 25 0d 07 08 0c 63  |type%,I%,J%....c|
00001050  6f 75 6e 74 25 3d 31 0d  07 12 41 c8 95 74 79 70  |ount%=1...A..typ|
00001060  65 25 28 6f 66 66 73 65  74 25 2b 63 6f 75 6e 74  |e%(offset%+count|
00001070  25 29 3d 30 80 28 6f 66  66 73 65 74 25 2b 63 6f  |%)=0.(offset%+co|
00001080  75 6e 74 25 29 3c 3d 62  79 74 65 73 25 80 63 6f  |unt%)<=bytes%.co|
00001090  75 6e 74 25 3c 3d 36 38  0d 07 1c 0f 20 20 63 6f  |unt%<=68....  co|
000010a0  75 6e 74 25 2b 3d 31 0d  07 26 05 ce 0d 07 30 2c  |unt%+=1..&....0,|
000010b0  ff 22 4d 65 6d 6f 72 79  49 20 22 2b c3 7e 28 6f  |."MemoryI "+.~(o|
000010c0  66 66 73 65 74 25 2b 62  61 73 65 25 2d 26 32 30  |ffset%+base%-&20|
000010d0  29 2b 22 20 2b 32 30 22  0d 07 3a 06 fb 31 0d 07  |)+" +20"..:..1..|
000010e0  44 27 ff 22 4d 65 6d 6f  72 79 49 20 22 2b c3 7e  |D'."MemoryI "+.~|
000010f0  28 6f 66 66 73 65 74 25  2b 62 61 73 65 25 29 2b  |(offset%+base%)+|
00001100  22 20 2b 34 22 0d 07 4e  06 fb 37 0d 07 58 2a ff  |" +4"..N..7..X*.|
00001110  22 4d 65 6d 6f 72 79 49  20 22 2b c3 7e 28 6f 66  |"MemoryI "+.~(of|
00001120  66 73 65 74 25 2b 62 61  73 65 25 2b 34 29 2b 22  |fset%+base%+4)+"|
00001130  20 2b 32 30 22 0d 07 62  37 f1 27 63 6f 75 6e 74  | +20"..b7.'count|
00001140  25 2c 22 20 62 79 74 65  28 73 29 20 61 74 20 22  |%," byte(s) at "|
00001150  3b 7e 6f 66 66 73 65 74  25 3b 22 20 6f 66 20 75  |;~offset%;" of u|
00001160  6e 6b 6e 6f 77 6e 20 74  79 70 65 22 0d 07 6c 15  |nknown type"..l.|
00001170  74 79 70 65 25 3d 30 3a  6e 75 6d 62 65 72 25 3d  |type%=0:number%=|
00001180  31 0d 07 76 25 e7 ac a4  72 65 70 6c 61 79 28 6f  |1..v%...replay(o|
00001190  66 66 73 65 74 25 2c 74  79 70 65 25 2c 6e 75 6d  |ffset%,type%,num|
000011a0  62 65 72 25 29 8c 0d 07  80 0c 20 20 e8 74 79 70  |ber%).....  .typ|
000011b0  65 25 0d 07 8a 0e 20 20  c8 8e 74 79 70 65 25 ca  |e%....  ..type%.|
000011c0  0d 07 94 33 20 20 20 20  c9 2d 33 20 20 20 20 20  |...3    .-3     |
000011d0  3a e8 22 4c 65 6e 67 74  68 20 6f 66 20 70 61 64  |:."Length of pad|
000011e0  64 65 64 20 73 74 72 69  6e 67 22 2c 6e 75 6d 62  |ded string",numb|
000011f0  65 72 25 0d 07 9e 24 20  20 20 20 c9 31 2c 32 2c  |er%...$    .1,2,|
00001200  33 2c 34 3a e8 22 48 6f  77 20 6d 61 6e 79 22 2c  |3,4:."How many",|
00001210  6e 75 6d 62 65 72 25 0d  07 a8 07 20 20 cb 0d 07  |number%....  ...|
00001220  b2 25 20 20 f2 63 61 70  74 75 72 65 28 6f 66 66  |.%  .capture(off|
00001230  73 65 74 25 2c 74 79 70  65 25 2c 6e 75 6d 62 65  |set%,type%,numbe|
00001240  72 25 29 0d 07 bc 05 cd  0d 07 c6 0c c8 8e 74 79  |r%)...........ty|
00001250  70 65 25 ca 0d 07 d0 1b  20 20 c9 2d 34 3a f2 73  |pe%.....  .-4:.s|
00001260  74 72 69 6e 67 41 28 6f  66 66 73 65 74 25 29 0d  |tringA(offset%).|
00001270  07 da 28 20 20 c9 2d 33  3a f2 70 61 64 64 65 64  |..(  .-3:.padded|
00001280  73 74 72 69 6e 67 28 6f  66 66 73 65 74 25 2c 6e  |string(offset%,n|
00001290  75 6d 62 65 72 25 29 0d  07 e4 1c 20 20 c9 2d 32  |umber%)....  .-2|
000012a0  3a f2 73 74 72 69 6e 67  43 52 28 6f 66 66 73 65  |:.stringCR(offse|
000012b0  74 25 29 0d 07 ee 1b 20  20 c9 2d 31 3a f2 73 74  |t%)....  .-1:.st|
000012c0  72 69 6e 67 30 28 6f 66  66 73 65 74 25 29 0d 07  |ring0(offset%)..|
000012d0  f8 28 20 20 c9 20 31 3a  e3 4a 25 3d 31 b8 6e 75  |.(  . 1:.J%=1.nu|
000012e0  6d 62 65 72 25 3a f2 62  79 74 65 28 6f 66 66 73  |mber%:.byte(offs|
000012f0  65 74 25 29 3a ed 0d 08  02 28 20 20 c9 20 32 3a  |et%):....(  . 2:|
00001300  e3 4a 25 3d 31 b8 6e 75  6d 62 65 72 25 3a f2 77  |.J%=1.number%:.w|
00001310  6f 72 64 28 6f 66 66 73  65 74 25 29 3a ed 0d 08  |ord(offset%):...|
00001320  0c 2b 20 20 c9 20 33 3a  e3 4a 25 3d 31 b8 6e 75  |.+  . 3:.J%=1.nu|
00001330  6d 62 65 72 25 3a f2 61  64 64 72 65 73 73 28 6f  |mber%:.address(o|
00001340  66 66 73 65 74 25 29 3a  ed 0d 08 16 2a 20 20 c9  |ffset%):....*  .|
00001350  20 34 3a e3 4a 25 3d 31  b8 6e 75 6d 62 65 72 25  | 4:.J%=1.number%|
00001360  3a f2 64 6f 75 62 6c 65  28 6f 66 66 73 65 74 25  |:.double(offset%|
00001370  29 3a ed 0d 08 20 18 20  20 c9 20 35 3a f2 63 6f  |):... .  . 5:.co|
00001380  64 65 28 6f 66 66 73 65  74 25 29 0d 08 2a 19 20  |de(offset%)..*. |
00001390  20 c9 20 36 3a f2 61 6c  69 67 6e 28 6f 66 66 73  | . 6:.align(offs|
000013a0  65 74 25 29 0d 08 34 05  cb 0d 08 3e 05 e1 0d 08  |et%)..4....>....|
000013b0  48 04 0d 08 52 0c dd f2  62 72 61 6e 63 68 0d 08  |H...R...branch..|
000013c0  5c 2f 64 65 73 74 25 3d  28 28 28 a0 28 c2 69 6e  |\/dest%=(((.(.in|
000013d0  73 74 24 2c 6c 65 6e 25  2d 37 29 29 29 3c 3c 38  |st$,len%-7)))<<8|
000013e0  29 3e 3e 38 29 2b 6f 66  66 73 65 74 25 0d 08 66  |)>>8)+offset%..f|
000013f0  26 e7 64 65 73 74 25 3e  62 79 74 65 73 25 84 64  |&.dest%>bytes%.d|
00001400  65 73 74 25 3c 30 8c 6f  66 66 73 65 74 25 2b 3d  |est%<0.offset%+=|
00001410  34 3a e1 0d 08 70 31 e7  6c 61 62 65 6c 24 28 64  |4:...p1.label$(d|
00001420  65 73 74 25 29 3d 22 22  8c 6c 61 62 65 6c 24 28  |est%)="".label$(|
00001430  64 65 73 74 25 29 3d 22  78 22 2b c3 7e 28 64 65  |dest%)="x"+.~(de|
00001440  73 74 25 29 0d 08 7a 10  f2 63 6f 64 65 28 64 65  |st%)..z..code(de|
00001450  73 74 25 29 0d 08 84 0e  6f 66 66 73 65 74 25 2b  |st%)....offset%+|
00001460  3d 34 0d 08 8e 05 e1 0d  08 98 04 0d 08 a2 10 dd  |=4..............|
00001470  f2 62 72 61 6e 63 68 6c  69 6e 6b 0d 08 ac 2f 64  |.branchlink.../d|
00001480  65 73 74 25 3d 28 28 28  a0 28 c2 69 6e 73 74 24  |est%=(((.(.inst$|
00001490  2c 6c 65 6e 25 2d 37 29  29 29 3c 3c 38 29 3e 3e  |,len%-7)))<<8)>>|
000014a0  38 29 2b 6f 66 66 73 65  74 25 0d 08 b6 26 e7 64  |8)+offset%...&.d|
000014b0  65 73 74 25 3e 62 79 74  65 73 25 84 64 65 73 74  |est%>bytes%.dest|
000014c0  25 3c 30 8c 6f 66 66 73  65 74 25 2b 3d 34 3a e1  |%<0.offset%+=4:.|
000014d0  0d 08 c0 47 e7 c0 6c 61  62 65 6c 24 28 64 65 73  |...G..label$(des|
000014e0  74 25 29 2c 31 29 3d 22  78 22 84 6c 61 62 65 6c  |t%),1)="x".label|
000014f0  24 28 64 65 73 74 25 29  3d 22 22 8c 6c 61 62 65  |$(dest%)="".labe|
00001500  6c 24 28 64 65 73 74 25  29 3d 22 73 22 2b c3 7e  |l$(dest%)="s"+.~|
00001510  28 64 65 73 74 25 29 0d  08 ca 10 f2 63 6f 64 65  |(dest%).....code|
00001520  28 64 65 73 74 25 29 0d  08 d4 0e 6f 66 66 73 65  |(dest%)....offse|
00001530  74 25 2b 3d 34 0d 08 de  05 e1 0d 08 e8 04 0d 08  |t%+=4...........|
00001540  f2 11 dd f2 62 72 61 6e  63 68 74 61 62 6c 65 0d  |....branchtable.|
00001550  08 fc 10 ea 65 6e 64 6f  66 74 61 62 6c 65 25 0d  |....endoftable%.|
00001560  09 06 0e 6f 66 66 73 65  74 25 2b 3d 34 0d 09 10  |...offset%+=4...|
00001570  07 ea 49 25 0d 09 1a 11  65 6e 64 6f 66 74 61 62  |..I%....endoftab|
00001580  6c 65 25 3d a3 0d 09 24  05 f5 0d 09 2e 19 20 20  |le%=...$......  |
00001590  69 6e 73 74 25 3d 62 61  73 65 25 21 6f 66 66 73  |inst%=base%!offs|
000015a0  65 74 25 0d 09 38 20 20  20 69 6e 73 74 24 3d a4  |et%..8   inst$=.|
000015b0  65 78 74 72 61 63 74 28  69 6e 73 74 25 2c 6c 65  |extract(inst%,le|
000015c0  6e 25 29 0d 09 42 15 20  20 c8 8e a4 69 6e 73 74  |n%)..B.  ...inst|
000015d0  28 69 6e 73 74 25 29 ca  0d 09 4c 12 20 20 20 20  |(inst%)...L.    |
000015e0  c9 31 3a e3 49 25 3d 30  b8 33 0d 09 56 23 20 20  |.1:.I%=0.3..V#  |
000015f0  20 20 20 20 20 20 20 20  20 20 74 79 70 65 25 28  |          type%(|
00001600  6f 66 66 73 65 74 25 2b  49 25 29 3d 35 0d 09 60  |offset%+I%)=5..`|
00001610  0f 20 20 20 20 20 20 20  20 20 20 ed 0d 09 6a 15  |.          ...j.|
00001620  20 20 20 20 20 20 20 20  20 20 f2 62 72 61 6e 63  |          .branc|
00001630  68 0d 09 74 17 20 20 20  20 7f 3a 65 6e 64 6f 66  |h..t.    .:endof|
00001640  74 61 62 6c 65 25 3d b9  0d 09 7e 07 20 20 cb 0d  |table%=...~.  ..|
00001650  09 88 10 fd 65 6e 64 6f  66 74 61 62 6c 65 25 0d  |....endoftable%.|
00001660  09 92 05 e1 0d 09 9c 04  0d 09 a6 15 dd f2 62 79  |..............by|
00001670  74 65 28 f8 20 6f 66 66  73 65 74 25 29 0d 09 b0  |te(. offset%)...|
00001680  15 c8 8e 74 79 70 65 25  28 6f 66 66 73 65 74 25  |...type%(offset%|
00001690  29 ca 0d 09 ba 09 20 20  c9 30 3a 0d 09 c4 0a 20  |).....  .0:.... |
000016a0  20 c9 31 3a e1 0d 09 ce  24 20 20 7f 3a 85 32 35  | .1:....$  .:.25|
000016b0  35 2c 22 45 78 70 65 63  74 69 6e 67 20 74 79 70  |5,"Expecting typ|
000016c0  65 20 31 20 6f 72 20 30  22 0d 09 d8 05 cb 0d 09  |e 1 or 0".......|
000016d0  e2 17 62 79 74 65 25 3d  62 61 73 65 25 3f 6f 66  |..byte%=base%?of|
000016e0  66 73 65 74 25 0d 09 ec  14 74 79 70 65 25 28 6f  |fset%....type%(o|
000016f0  66 66 73 65 74 25 29 3d  31 0d 09 f6 0e 6f 66 66  |ffset%)=1....off|
00001700  73 65 74 25 2b 3d 31 0d  0a 00 05 e1 0d 0a 0a 04  |set%+=1.........|
00001710  0d 0a 14 24 dd f2 63 61  70 74 75 72 65 28 6f 66  |...$..capture(of|
00001720  66 73 65 74 25 2c 74 79  70 65 25 2c 6e 75 6d 62  |fset%,type%,numb|
00001730  65 72 25 29 0d 0a 1e 0c  ea 73 74 72 69 6e 67 24  |er%).....string$|
00001740  0d 0a 28 12 e7 77 72 69  74 65 73 63 72 69 70 74  |..(..writescript|
00001750  25 8c 0d 0a 32 2f 20 20  73 74 72 69 6e 67 24 3d  |%...2/  string$=|
00001760  c3 7e 6f 66 66 73 65 74  25 2b 22 2c 22 2b c3 74  |.~offset%+","+.t|
00001770  79 70 65 25 2b 22 2c 22  2b c3 6e 75 6d 62 65 72  |ype%+","+.number|
00001780  25 0d 0a 3c 19 20 20 cf  23 73 63 72 69 70 74 25  |%..<.  .#script%|
00001790  3d a2 23 73 63 72 69 70  74 25 0d 0a 46 17 20 20  |=.#script%..F.  |
000017a0  d5 23 73 63 72 69 70 74  25 2c 73 74 72 69 6e 67  |.#script%,string|
000017b0  24 0d 0a 50 05 cd 0d 0a  5a 05 e1 0d 0a 64 04 0d  |$..P....Z....d..|
000017c0  0a 6e 12 dd f2 63 68 65  63 6b 66 6f 72 6d 6f 72  |.n...checkformor|
000017d0  65 0d 0a 78 07 ea 49 25  0d 0a 82 1f 63 6f 6e 64  |e..x..I%....cond|
000017e0  25 3d 28 69 6e 73 74 25  80 26 46 30 30 30 30 30  |%=(inst%.&F00000|
000017f0  30 30 29 3e 3e 32 38 0d  0a 8c 1d 72 64 25 3d 28  |00)>>28....rd%=(|
00001800  69 6e 73 74 25 80 26 30  30 30 30 46 30 30 30 29  |inst%.&0000F000)|
00001810  3e 3e 31 32 0d 0a 96 29  73 61 6d 65 25 3d 28 63  |>>12...)same%=(c|
00001820  6f 6e 64 25 3c 3c 32 38  29 84 28 72 64 25 3c 3c  |ond%<<28).(rd%<<|
00001830  31 36 29 84 28 72 64 25  3c 3c 31 32 29 0d 0a a0  |16).(rd%<<12)...|
00001840  13 6d 61 73 6b 25 3d 26  46 46 45 46 46 30 30 30  |.mask%=&FFEFF000|
00001850  0d 0a aa 1d 74 61 72 67  65 74 31 25 3d 26 30 32  |....target1%=&02|
00001860  38 30 30 30 30 30 20 84  73 61 6d 65 25 0d 0a b4  |800000 .same%...|
00001870  1d 74 61 72 67 65 74 32  25 3d 26 30 32 34 30 30  |.target2%=&02400|
00001880  30 30 30 20 84 73 61 6d  65 25 0d 0a be 1c 69 6e  |000 .same%....in|
00001890  73 74 32 25 3d 62 61 73  65 25 21 28 6f 66 66 73  |st2%=base%!(offs|
000018a0  65 74 25 2b 34 29 0d 0a  c8 0d 65 78 74 72 61 24  |et%+4)....extra$|
000018b0  3d 22 22 0d 0a d2 39 e7  28 28 69 6e 73 74 32 25  |=""...9.((inst2%|
000018c0  80 6d 61 73 6b 25 29 3d  74 61 72 67 65 74 31 25  |.mask%)=target1%|
000018d0  29 84 28 28 69 6e 73 74  32 25 80 6d 61 73 6b 25  |).((inst2%.mask%|
000018e0  29 3d 74 61 72 67 65 74  32 25 29 8c 0d 0a dc 23  |)=target2%)....#|
000018f0  20 20 69 6e 73 74 32 24  3d a4 65 78 74 72 61 63  |  inst2$=.extrac|
00001900  74 28 69 6e 73 74 32 25  2c 6c 65 6e 32 25 29 0d  |t(inst2%,len2%).|
00001910  0a e6 15 20 20 49 25 3d  a7 69 6e 73 74 32 24 2c  |...  I%=.inst2$,|
00001920  22 23 22 29 0d 0a f0 1c  20 20 64 65 73 74 32 24  |"#")....  dest2$|
00001930  3d c1 69 6e 73 74 32 24  2c 49 25 2b 31 2c 39 29  |=.inst2$,I%+1,9)|
00001940  0d 0a fa 1b 20 20 6f 66  66 73 65 74 32 25 3d a4  |....  offset2%=.|
00001950  69 6d 6d 28 64 65 73 74  32 24 29 0d 0b 04 22 20  |imm(dest2$)..." |
00001960  20 e7 28 69 6e 73 74 32  25 80 26 30 30 38 30 30  | .(inst2%.&00800|
00001970  30 30 30 29 3d 26 38 30  30 30 30 30 8c 0d 0b 0e  |000)=&800000....|
00001980  17 20 20 20 20 64 65 73  74 25 2b 3d 6f 66 66 73  |.    dest%+=offs|
00001990  65 74 32 25 0d 0b 18 1e  20 20 20 20 65 78 74 72  |et2%....    extr|
000019a0  61 24 3d 22 2d 26 22 2b  c3 7e 6f 66 66 73 65 74  |a$="-&"+.~offset|
000019b0  32 25 0d 0b 22 07 20 20  cc 0d 0b 2c 17 20 20 20  |2%..".  ...,.   |
000019c0  20 64 65 73 74 25 2d 3d  6f 66 66 73 65 74 32 25  | dest%-=offset2%|
000019d0  0d 0b 36 1e 20 20 20 20  65 78 74 72 61 24 3d 22  |..6.    extra$="|
000019e0  2b 26 22 2b c3 7e 6f 66  66 73 65 74 32 25 0d 0b  |+&"+.~offset2%..|
000019f0  40 07 20 20 cd 0d 0b 4a  0f 20 20 e7 ac 64 65 62  |@.  ...J.  ..deb|
00001a00  75 67 25 8c 0d 0b 54 0a  20 20 20 20 fb 36 0d 0b  |ug%...T.    .6..|
00001a10  5e 0f 20 20 20 20 f1 22  41 44 52 4c 22 0d 0b 68  |^.    ."ADRL"..h|
00001a20  2b 20 20 20 20 ff 22 4d  65 6d 6f 72 79 49 20 22  |+    ."MemoryI "|
00001a30  2b c3 7e 28 62 61 73 65  25 2b 6f 66 66 73 65 74  |+.~(base%+offset|
00001a40  25 29 2b 22 20 2b 38 22  0d 0b 72 18 20 20 20 20  |%)+" +8"..r.    |
00001a50  f1 7e 64 65 73 74 25 20  6f 66 66 73 65 74 32 25  |.~dest% offset2%|
00001a60  0d 0b 7c 0c 20 20 20 20  47 25 3d a5 0d 0b 86 0a  |..|.    G%=.....|
00001a70  20 20 20 20 fb 37 0d 0b  90 07 20 20 cd 0d 0b 9a  |    .7....  ....|
00001a80  05 cd 0d 0b a4 05 e1 0d  0b ae 04 0d 0b b8 15 dd  |................|
00001a90  f2 63 6f 64 65 28 f8 20  6f 66 66 73 65 74 25 29  |.code(. offset%)|
00001aa0  0d 0b c2 15 c8 8e 74 79  70 65 25 28 6f 66 66 73  |......type%(offs|
00001ab0  65 74 25 29 ca 0d 0b cc  09 20 20 c9 30 3a 0d 0b  |et%).....  .0:..|
00001ac0  d6 0a 20 20 c9 35 3a e1  0d 0b e0 24 20 20 7f 3a  |..  .5:....$  .:|
00001ad0  85 32 35 35 2c 22 45 78  70 65 63 74 69 6e 67 20  |.255,"Expecting |
00001ae0  74 79 70 65 20 35 20 6f  72 20 30 22 0d 0b ea 05  |type 5 or 0"....|
00001af0  cb 0d 0b f4 07 ea 49 25  0d 0b fe 17 69 6e 73 74  |......I%....inst|
00001b00  25 3d 62 61 73 65 25 21  6f 66 66 73 65 74 25 0d  |%=base%!offset%.|
00001b10  0c 08 0c e7 64 65 62 75  67 25 8c 0d 0c 12 08 20  |....debug%..... |
00001b20  20 fb 36 0d 0c 1c 16 20  20 f1 22 43 6f 64 65 22  | .6....  ."Code"|
00001b30  2c 7e 6f 66 66 73 65 74  25 0d 0c 26 08 20 20 fb  |,~offset%..&.  .|
00001b40  37 0d 0c 30 05 cd 0d 0c  3a 0b e3 49 25 3d 30 b8  |7..0....:..I%=0.|
00001b50  33 0d 0c 44 19 20 20 74  79 70 65 25 28 6f 66 66  |3..D.  type%(off|
00001b60  73 65 74 25 2b 49 25 29  3d 35 0d 0c 4e 05 ed 0d  |set%+I%)=5..N...|
00001b70  0c 58 1e 69 6e 73 74 24  3d a4 65 78 74 72 61 63  |.X.inst$=.extrac|
00001b80  74 28 69 6e 73 74 25 2c  6c 65 6e 25 29 0d 0c 62  |t(inst%,len%)..b|
00001b90  0d 72 65 74 75 72 6e 25  3d a3 0d 0c 6c 13 c8 8e  |.return%=...l...|
00001ba0  a4 69 6e 73 74 28 69 6e  73 74 25 29 ca 0d 0c 76  |.inst(inst%)...v|
00001bb0  13 20 20 c9 20 31 3a f2  62 72 61 6e 63 68 3a e1  |.  . 1:.branch:.|
00001bc0  0d 0c 80 11 20 20 c9 20  32 3a f2 62 72 61 6e 63  |....  . 2:.branc|
00001bd0  68 0d 0c 8a 15 20 20 c9  20 33 3a f2 62 72 61 6e  |h....  . 3:.bran|
00001be0  63 68 6c 69 6e 6b 0d 0c  94 0b 20 20 c9 20 34 3a  |chlink....  . 4:|
00001bf0  e1 0d 0c 9e 23 20 20 c9  20 35 3a f2 73 77 69 3a  |....#  . 5:.swi:|
00001c00  e7 72 65 74 75 72 6e 25  8c 72 65 74 75 72 6e 25  |.return%.return%|
00001c10  3d a3 3a e1 0d 0c a8 0b  20 20 c9 20 36 3a e1 0d  |=.:.....  . 6:..|
00001c20  0c b2 18 20 20 c9 20 37  3a f2 62 72 61 6e 63 68  |...  . 7:.branch|
00001c30  74 61 62 6c 65 3a e1 0d  0c bc 11 20 20 c9 20 38  |table:.....  . 8|
00001c40  3a f2 61 64 72 61 64 64  0d 0c c6 11 20 20 c9 20  |:.adradd....  . |
00001c50  39 3a f2 61 64 72 73 75  62 0d 0c d0 0b 20 20 c9  |9:.adrsub....  .|
00001c60  31 30 3a e1 0d 0c da 10  20 20 c9 31 31 3a f2 6c  |10:.....  .11:.l|
00001c70  73 65 78 70 0d 0c e4 12  20 20 c9 31 32 3a f2 63  |sexp....  .12:.c|
00001c80  6f 70 72 6f 3a e1 0d 0c  ee 12 20 20 c9 31 33 3a  |opro:.....  .13:|
00001c90  f2 75 6e 64 65 66 3a e1  0d 0c f8 0b 20 20 c9 31  |.undef:.....  .1|
00001ca0  34 3a e1 0d 0d 02 12 20  20 7f 3a 6f 66 66 73 65  |4:.....  .:offse|
00001cb0  74 25 2b 3d 34 0d 0d 0c  05 cb 0d 0d 16 15 e7 6f  |t%+=4..........o|
00001cc0  66 66 73 65 74 25 3e 62  79 74 65 73 25 8c e1 0d  |ffset%>bytes%...|
00001cd0  0d 20 1a e7 74 79 70 65  25 28 6f 66 66 73 65 74  |. ..type%(offset|
00001ce0  25 29 3d 30 8c 8d 64 7e  4b 0d 0d 2a 05 e1 0d 0d  |%)=0..d~K..*....|
00001cf0  34 04 0d 0d 3e 0b dd f2  63 6f 70 72 6f 0d 0d 48  |4...>...copro..H|
00001d00  07 ea 49 25 0d 0d 52 06  ef 37 0d 0d 5c 38 f1 22  |..I%..R..7..\8."|
00001d10  41 74 74 65 6d 70 74 69  6e 67 20 74 6f 20 64 69  |Attempting to di|
00001d20  73 61 73 73 65 6d 62 6c  65 20 63 6f 70 72 6f 63  |sassemble coproc|
00001d30  65 73 73 6f 72 20 69 6e  73 74 72 75 63 74 69 6f  |essor instructio|
00001d40  6e 22 0d 0d 66 23 ff 28  22 4d 65 6d 6f 72 79 49  |n"..f#.("MemoryI|
00001d50  20 22 2b c3 7e 28 6f 66  66 73 65 74 25 2b 62 61  | "+.~(offset%+ba|
00001d60  73 65 25 29 29 0d 0d 70  11 e7 72 65 61 64 73 63  |se%))..p..readsc|
00001d70  72 69 70 74 25 8c 0d 0d  7a 22 20 20 f1 22 43 6f  |ript%...z"  ."Co|
00001d80  6e 74 69 6e 75 69 6e 67  20 69 6e 20 61 20 6d 6f  |ntinuing in a mo|
00001d90  6d 65 6e 74 2e 2e 2e 22  0d 0d 84 14 20 20 e3 49  |ment..."....  .I|
00001da0  25 3d 31 b8 31 30 30 30  30 30 3a ed 0d 0d 8e 05  |%=1.100000:.....|
00001db0  cc 0d 0d 98 23 20 20 f1  22 50 72 65 73 73 20 61  |....#  ."Press a|
00001dc0  6e 79 20 6b 65 79 20 74  6f 20 63 6f 6e 74 69 6e  |ny key to contin|
00001dd0  75 65 22 27 0d 0d a2 0a  20 20 47 25 3d a5 0d 0d  |ue"'....  G%=...|
00001de0  ac 05 cd 0d 0d b6 0b e3  49 25 3d 30 b8 33 0d 0d  |........I%=0.3..|
00001df0  c0 19 20 20 74 79 70 65  25 28 6f 66 66 73 65 74  |..  type%(offset|
00001e00  25 2b 49 25 29 3d 30 0d  0d ca 05 ed 0d 0d d4 05  |%+I%)=0.........|
00001e10  e1 0d 0d de 04 0d 0d e8  0b dd f2 64 65 62 75 67  |...........debug|
00001e20  0d 0d f2 15 e3 6f 66 66  73 65 74 25 3d 30 b8 62  |.....offset%=0.b|
00001e30  79 74 65 73 25 0d 0d fc  19 e7 6c 61 62 65 6c 24  |ytes%.....label$|
00001e40  28 6f 66 66 73 65 74 25  29 3c 3e 22 22 8c 0d 0e  |(offset%)<>""...|
00001e50  06 32 20 20 f1 7e 6f 66  66 73 65 74 25 2c 74 79  |.2  .~offset%,ty|
00001e60  70 65 25 28 6f 66 66 73  65 74 25 29 2c 22 20 22  |pe%(offset%)," "|
00001e70  2c 6c 61 62 65 6c 24 28  6f 66 66 73 65 74 25 29  |,label$(offset%)|
00001e80  0d 0e 10 05 cd 0d 0e 1a  05 ed 0d 0e 24 16 2a 4d  |............$.*M|
00001e90  45 4d 4f 52 59 49 20 31  30 30 30 30 20 2b 33 32  |EMORYI 10000 +32|
00001ea0  0d 0e 2e 08 47 25 3d a5  0d 0e 38 10 e3 49 25 3d  |....G%=...8..I%=|
00001eb0  30 b8 62 79 74 65 73 25  0d 0e 42 1f 20 20 f1 7e  |0.bytes%..B.  .~|
00001ec0  49 25 2c 74 79 70 65 25  28 49 25 29 2c 6c 61 62  |I%,type%(I%),lab|
00001ed0  65 6c 24 28 49 25 29 0d  0e 4c 05 ed 0d 0e 56 08  |el$(I%)..L....V.|
00001ee0  47 25 3d a5 0d 0e 60 10  e3 49 25 3d 30 b8 62 79  |G%=...`..I%=0.by|
00001ef0  74 65 73 25 0d 0e 6a 2c  20 20 e7 74 79 70 65 25  |tes%..j,  .type%|
00001f00  28 49 25 29 3d 30 8c f1  7e 49 25 2c 74 79 70 65  |(I%)=0..~I%,type|
00001f10  25 28 49 25 29 2c 6c 61  62 65 6c 24 28 49 25 29  |%(I%),label$(I%)|
00001f20  0d 0e 74 05 ed 0d 0e 7e  05 e1 0d 0e 88 04 0d 0e  |..t....~........|
00001f30  92 09 dd f2 64 69 73 0d  0e 9c 0d 6f 66 66 73 65  |....dis....offse|
00001f40  74 25 3d 30 0d 0e a6 1f  ff 22 53 70 6f 6f 6c 20  |t%=0....."Spool |
00001f50  53 4f 55 52 43 45 53 2e  22 2b 66 69 6c 65 6e 61  |SOURCES."+filena|
00001f60  6d 65 24 0d 0e b0 1e f1  22 52 45 4d 20 3e 53 4f  |me$....."REM >SO|
00001f70  55 52 43 45 53 2e 22 2b  66 69 6c 65 6e 61 6d 65  |URCES."+filename|
00001f80  24 0d 0e ba 15 f1 22 44  49 4d 63 6f 64 65 25 26  |$....."DIMcode%&|
00001f90  31 30 30 30 30 22 0d 0e  c4 1b f1 22 46 4f 52 49  |10000"....."FORI|
00001fa0  25 3d 30 54 4f 26 31 30  30 30 30 53 54 45 50 34  |%=0TO&10000STEP4|
00001fb0  22 0d 0e ce 13 f1 22 20  20 63 6f 64 65 25 21 49  |"....."  code%!I|
00001fc0  25 3d 30 22 0d 0e d8 0b  f1 22 4e 45 58 54 22 0d  |%=0"....."NEXT".|
00001fd0  0e e2 15 f1 22 4f 53 5f  57 72 69 74 65 49 3d 26  |...."OS_WriteI=&|
00001fe0  31 30 30 22 0d 0e ec 18  f1 22 58 4f 53 5f 57 72  |100"....."XOS_Wr|
00001ff0  69 74 65 49 3d 26 32 30  31 30 30 22 0d 0e f6 19  |iteI=&20100"....|
00002000  f1 22 46 4f 52 70 61 73  73 25 3d 34 54 4f 37 53  |."FORpass%=4TO7S|
00002010  54 45 50 33 22 0d 0f 00  0f f1 22 4f 25 3d 63 6f  |TEP3"....."O%=co|
00002020  64 65 25 22 0d 0f 0a 0b  f1 22 50 25 3d 30 22 0d  |de%"....."P%=0".|
00002030  0f 14 11 f1 22 5b 4f 50  54 20 70 61 73 73 25 22  |...."[OPT pass%"|
00002040  0d 0f 1e 05 f5 0d 0f 28  17 20 20 c8 8e 74 79 70  |.......(.  ..typ|
00002050  65 25 28 6f 66 66 73 65  74 25 29 ca 0d 0f 32 1c  |e%(offset%)...2.|
00002060  20 20 20 20 c9 2d 33 3a  f2 64 69 73 70 61 64 64  |    .-3:.dispadd|
00002070  65 64 73 74 72 69 6e 67  0d 0f 3c 15 20 20 20 20  |edstring..<.    |
00002080  c9 2d 32 3a f2 64 69 73  73 74 72 43 52 0d 0f 46  |.-2:.disstrCR..F|
00002090  14 20 20 20 20 c9 2d 31  3a f2 64 69 73 73 74 72  |.    .-1:.disstr|
000020a0  30 0d 0f 50 16 20 20 20  20 c9 20 30 3a 6f 66 66  |0..P.    . 0:off|
000020b0  73 65 74 25 2b 3d 31 0d  0f 5a 14 20 20 20 20 c9  |set%+=1..Z.    .|
000020c0  20 31 3a f2 64 69 73 62  79 74 65 0d 0f 64 14 20  | 1:.disbyte..d. |
000020d0  20 20 20 c9 20 32 3a f2  64 69 73 77 6f 72 64 0d  |   . 2:.disword.|
000020e0  0f 6e 14 20 20 20 20 c9  20 33 3a f2 64 69 73 61  |.n.    . 3:.disa|
000020f0  64 64 72 0d 0f 78 14 20  20 20 20 c9 20 34 3a f2  |ddr..x.    . 4:.|
00002100  64 69 73 64 6f 75 62 0d  0f 82 14 20 20 20 20 c9  |disdoub....    .|
00002110  20 35 3a f2 64 69 73 63  6f 64 65 0d 0f 8c 15 20  | 5:.discode.... |
00002120  20 20 20 c9 20 36 3a f2  64 69 73 61 6c 69 67 6e  |   . 6:.disalign|
00002130  0d 0f 96 18 20 20 20 20  c9 20 37 3a f2 64 69 73  |....    . 7:.dis|
00002140  65 78 74 65 72 6e 61 6c  0d 0f a0 07 20 20 cb 0d  |external....  ..|
00002150  0f aa 13 fd 6f 66 66 73  65 74 25 3e 62 79 74 65  |....offset%>byte|
00002160  73 25 0d 0f b4 0d f1 22  5d 3a 4e 45 58 54 22 0d  |s%....."]:NEXT".|
00002170  0f be 41 f1 22 53 59 53  22 22 4f 53 5f 46 69 6c  |..A."SYS""OS_Fil|
00002180  65 22 22 2c 31 30 2c 22  22 4d 4f 44 55 4c 45 53  |e"",10,""MODULES|
00002190  2e 22 2b 66 69 6c 65 6e  61 6d 65 24 2b 22 22 22  |."+filename$+"""|
000021a0  2c 26 46 46 41 2c 2c 63  6f 64 65 25 2c 4f 25 22  |,&FFA,,code%,O%"|
000021b0  0d 0f c8 0b f1 22 45 4e  44 22 27 0d 0f d2 23 f1  |....."END"'...#.|
000021c0  22 44 45 46 46 4e 61 64  72 6c 28 63 6f 6e 64 24  |"DEFFNadrl(cond$|
000021d0  2c 72 65 67 25 2c 6c 61  62 65 6c 24 29 22 0d 0f  |,reg%,label$)"..|
000021e0  dc 31 f1 22 49 46 63 6f  6e 64 24 3d 22 22 22 22  |.1."IFcond$=""""|
000021f0  4f 52 63 6f 6e 64 24 3d  22 22 20 20 22 22 54 48  |ORcond$=""  ""TH|
00002200  45 4e 63 6f 6e 64 24 3d  22 22 41 4c 22 22 22 0d  |ENcond$=""AL""".|
00002210  0f e6 44 f1 22 63 63 25  3d 28 49 4e 53 54 52 28  |..D."cc%=(INSTR(|
00002220  22 22 45 51 4e 45 43 53  43 43 4d 49 50 4c 56 53  |""EQNECSCCMIPLVS|
00002230  56 43 48 49 4c 53 47 45  4c 54 47 54 4c 45 41 4c  |VCHILSGELTGTLEAL|
00002240  4e 56 22 22 2c 63 6f 6e  64 24 29 2d 31 29 44 49  |NV"",cond$)-1)DI|
00002250  56 32 22 0d 0f f0 18 f1  22 49 46 70 61 73 73 25  |V2"....."IFpass%|
00002260  41 4e 44 32 3d 30 54 48  45 4e 22 0d 0f fa 13 f1  |AND2=0THEN".....|
00002270  22 20 20 5b 4f 50 54 20  70 61 73 73 25 22 0d 10  |"  [OPT pass%"..|
00002280  04 0f f1 22 20 20 45 51  55 44 20 30 22 0d 10 0e  |..."  EQUD 0"...|
00002290  0f f1 22 20 20 45 51 55  44 20 30 22 0d 10 18 0a  |.."  EQUD 0"....|
000022a0  f1 22 20 20 5d 22 0d 10  22 0b f1 22 45 4c 53 45  |."  ]"..".."ELSE|
000022b0  22 0d 10 2c 22 f1 22 20  20 6f 66 66 73 65 74 25  |"..,"."  offset%|
000022c0  3d 45 56 41 4c 28 6c 61  62 65 6c 24 29 2d 50 25  |=EVAL(label$)-P%|
000022d0  2d 38 22 0d 10 36 1f f1  22 20 20 6c 6f 25 3d 41  |-8"..6.."  lo%=A|
000022e0  42 53 28 6f 66 66 73 65  74 25 29 41 4e 44 26 46  |BS(offset%)AND&F|
000022f0  46 22 0d 10 40 21 f1 22  20 20 68 69 25 3d 41 42  |F"..@!."  hi%=AB|
00002300  53 28 6f 66 66 73 65 74  25 29 41 4e 44 26 46 46  |S(offset%)AND&FF|
00002310  30 30 22 0d 10 4a 19 f1  22 20 20 49 46 6f 66 66  |00"..J.."  IFoff|
00002320  73 65 74 25 3e 3d 30 54  48 45 4e 22 0d 10 54 35  |set%>=0THEN"..T5|
00002330  f1 22 20 20 20 20 6f 70  31 25 3d 28 63 63 25 3c  |."    op1%=(cc%<|
00002340  3c 32 38 29 4f 52 28 26  30 32 38 46 30 30 30 30  |<28)OR(&028F0000|
00002350  2b 28 72 65 67 25 3c 3c  31 32 29 2b 6c 6f 25 29  |+(reg%<<12)+lo%)|
00002360  22 0d 10 5e 45 f1 22 20  20 20 20 6f 70 32 25 3d  |"..^E."    op2%=|
00002370  28 63 63 25 3c 3c 32 38  29 4f 52 28 26 30 32 38  |(cc%<<28)OR(&028|
00002380  30 30 43 30 30 2b 28 72  65 67 25 3c 3c 31 36 29  |00C00+(reg%<<16)|
00002390  2b 28 72 65 67 25 3c 3c  31 32 29 2b 28 68 69 25  |+(reg%<<12)+(hi%|
000023a0  3e 3e 38 29 29 22 0d 10  68 0d f1 22 20 20 45 4c  |>>8))"..h.."  EL|
000023b0  53 45 22 0d 10 72 35 f1  22 20 20 20 20 6f 70 31  |SE"..r5."    op1|
000023c0  25 3d 28 63 63 25 3c 3c  32 38 29 4f 52 28 26 30  |%=(cc%<<28)OR(&0|
000023d0  32 34 46 30 30 30 30 2b  28 72 65 67 25 3c 3c 31  |24F0000+(reg%<<1|
000023e0  32 29 2b 6c 6f 25 29 22  0d 10 7c 45 f1 22 20 20  |2)+lo%)"..|E."  |
000023f0  20 20 6f 70 32 25 3d 28  63 63 25 3c 3c 32 38 29  |  op2%=(cc%<<28)|
00002400  4f 52 28 26 30 32 34 30  30 43 30 30 2b 28 72 65  |OR(&02400C00+(re|
00002410  67 25 3c 3c 31 36 29 2b  28 72 65 67 25 3c 3c 31  |g%<<16)+(reg%<<1|
00002420  32 29 2b 28 68 69 25 3e  3e 38 29 29 22 0d 10 86  |2)+(hi%>>8))"...|
00002430  0e f1 22 20 20 45 4e 44  49 46 22 0d 10 90 13 f1  |.."  ENDIF".....|
00002440  22 20 20 5b 4f 50 54 20  70 61 73 73 25 22 0d 10  |"  [OPT pass%"..|
00002450  9a 12 f1 22 20 20 45 51  55 44 20 6f 70 31 25 22  |..."  EQUD op1%"|
00002460  0d 10 a4 12 f1 22 20 20  45 51 55 44 20 6f 70 32  |....."  EQUD op2|
00002470  25 22 0d 10 ae 0a f1 22  20 20 5d 22 0d 10 b8 0c  |%"....."  ]"....|
00002480  f1 22 45 4e 44 49 46 22  0d 10 c2 09 f1 22 3d 30  |."ENDIF"....."=0|
00002490  22 0d 10 cc 0a 2a 53 70  6f 6f 6c 0d 10 d6 05 e1  |"....*Spool.....|
000024a0  0d 10 e0 04 0d 10 ea 0d  dd f2 64 69 73 61 64 64  |..........disadd|
000024b0  72 0d 10 f4 1a 61 64 64  72 65 73 73 25 3d 62 61  |r....address%=ba|
000024c0  73 65 25 21 6f 66 66 73  65 74 25 0d 10 fe 2e e7  |se%!offset%.....|
000024d0  6c 61 62 65 6c 24 28 6f  66 66 73 65 74 25 29 3c  |label$(offset%)<|
000024e0  3e 22 22 8c f1 22 2e 22  3b 6c 61 62 65 6c 24 28  |>""..".";label$(|
000024f0  6f 66 66 73 65 74 25 29  3b 0d 11 08 24 f1 8a 32  |offset%);...$..2|
00002500  30 29 22 45 51 55 44 20  20 20 20 22 3b 6c 61 62  |0)"EQUD    ";lab|
00002510  65 6c 24 28 61 64 64 72  65 73 73 25 29 0d 11 12  |el$(address%)...|
00002520  0e 6f 66 66 73 65 74 25  2b 3d 34 0d 11 1c 05 e1  |.offset%+=4.....|
00002530  0d 11 26 04 0d 11 30 0f  dd f2 64 69 73 61 64 72  |..&...0...disadr|
00002540  61 64 64 0d 11 3a 17 69  6e 73 74 25 3d 62 61 73  |add..:.inst%=bas|
00002550  65 25 21 6f 66 66 73 65  74 25 0d 11 44 1e 69 6e  |e%!offset%..D.in|
00002560  73 74 24 3d a4 65 78 74  72 61 63 74 28 69 6e 73  |st$=.extract(ins|
00002570  74 25 2c 6c 65 6e 25 29  0d 11 4e 12 49 25 3d a7  |t%,len%)..N.I%=.|
00002580  69 6e 73 74 24 2c 22 23  22 29 0d 11 58 25 64 65  |inst$,"#")..X%de|
00002590  73 74 25 3d a0 28 c1 69  6e 73 74 24 2c 49 25 2b  |st%=.(.inst$,I%+|
000025a0  31 2c 39 29 29 2b 6f 66  66 73 65 74 25 2b 38 0d  |1,9))+offset%+8.|
000025b0  11 62 11 f2 63 68 65 63  6b 66 6f 72 6d 6f 72 65  |.b..checkformore|
000025c0  0d 11 6c 0f e7 65 78 74  72 61 24 3d 22 22 8c 0d  |..l..extra$=""..|
000025d0  11 76 30 20 20 e7 6c 61  62 65 6c 24 28 6f 66 66  |.v0  .label$(off|
000025e0  73 65 74 25 29 3c 3e 22  22 8c f1 22 2e 22 3b 6c  |set%)<>""..".";l|
000025f0  61 62 65 6c 24 28 6f 66  66 73 65 74 25 29 3b 0d  |abel$(offset%);.|
00002600  11 80 14 20 20 49 25 3d  a7 69 6e 73 74 24 2c 22  |...  I%=.inst$,"|
00002610  2c 22 29 0d 11 8a 13 20  20 c0 69 6e 73 74 24 29  |,")....  .inst$)|
00002620  3d 22 41 44 52 22 0d 11  94 23 20 20 f1 8a 32 30  |="ADR"...#  ..20|
00002630  29 c0 69 6e 73 74 24 2c  49 25 29 2b 6c 61 62 65  |).inst$,I%)+labe|
00002640  6c 24 28 64 65 73 74 25  29 0d 11 9e 10 20 20 6f  |l$(dest%)....  o|
00002650  66 66 73 65 74 25 2b 3d  34 0d 11 a8 05 cc 0d 11  |ffset%+=4.......|
00002660  b2 30 20 20 e7 6c 61 62  65 6c 24 28 6f 66 66 73  |.0  .label$(offs|
00002670  65 74 25 29 3c 3e 22 22  8c f1 22 2e 22 3b 6c 61  |et%)<>""..".";la|
00002680  62 65 6c 24 28 6f 66 66  73 65 74 25 29 3b 0d 11  |bel$(offset%);..|
00002690  bc 17 20 20 63 6f 6e 64  24 3d c1 69 6e 73 74 24  |..  cond$=.inst$|
000026a0  2c 34 2c 32 29 0d 11 c6  1c 20 20 e7 64 65 73 74  |,4,2)....  .dest|
000026b0  25 3e 62 79 74 65 73 25  84 64 65 73 74 25 3c 30  |%>bytes%.dest%<0|
000026c0  8c 0d 11 d0 40 20 20 20  20 f1 8a 32 30 29 22 46  |....@    ..20)"F|
000026d0  4e 61 64 72 6c 28 22 22  22 2b 63 6f 6e 64 24 2b  |Nadrl("""+cond$+|
000026e0  22 22 22 2c 22 2b c3 28  72 64 25 29 2b 22 2c 22  |""","+.(rd%)+","|
000026f0  22 26 22 2b c3 7e 64 65  73 74 25 2b 22 22 22 29  |"&"+.~dest%+""")|
00002700  22 0d 11 da 07 20 20 cc  0d 11 e4 45 20 20 20 20  |"....  ....E    |
00002710  f1 8a 32 30 29 22 46 4e  61 64 72 6c 28 22 22 22  |..20)"FNadrl("""|
00002720  2b 63 6f 6e 64 24 2b 22  22 22 2c 22 2b c3 28 72  |+cond$+""","+.(r|
00002730  64 25 29 2b 22 2c 22 22  22 2b 6c 61 62 65 6c 24  |d%)+","""+label$|
00002740  28 64 65 73 74 25 29 2b  22 22 22 29 22 0d 11 ee  |(dest%)+""")"...|
00002750  07 20 20 cd 0d 11 f8 10  20 20 6f 66 66 73 65 74  |.  .....  offset|
00002760  25 2b 3d 38 0d 12 02 05  cd 0d 12 0c 05 e1 0d 12  |%+=8............|
00002770  16 04 0d 12 20 0f dd f2  64 69 73 61 64 72 73 75  |.... ...disadrsu|
00002780  62 0d 12 2a 17 69 6e 73  74 25 3d 62 61 73 65 25  |b..*.inst%=base%|
00002790  21 6f 66 66 73 65 74 25  0d 12 34 1e 69 6e 73 74  |!offset%..4.inst|
000027a0  24 3d a4 65 78 74 72 61  63 74 28 69 6e 73 74 25  |$=.extract(inst%|
000027b0  2c 6c 65 6e 25 29 0d 12  3e 12 49 25 3d a7 69 6e  |,len%)..>.I%=.in|
000027c0  73 74 24 2c 22 23 22 29  0d 12 48 26 64 65 73 74  |st$,"#")..H&dest|
000027d0  25 3d 2d a0 28 c1 69 6e  73 74 24 2c 49 25 2b 31  |%=-.(.inst$,I%+1|
000027e0  2c 39 29 29 2b 6f 66 66  73 65 74 25 2b 38 0d 12  |,9))+offset%+8..|
000027f0  52 11 f2 63 68 65 63 6b  66 6f 72 6d 6f 72 65 0d  |R..checkformore.|
00002800  12 5c 0f e7 65 78 74 72  61 24 3d 22 22 8c 0d 12  |.\..extra$=""...|
00002810  66 30 20 20 e7 6c 61 62  65 6c 24 28 6f 66 66 73  |f0  .label$(offs|
00002820  65 74 25 29 3c 3e 22 22  8c f1 22 2e 22 3b 6c 61  |et%)<>""..".";la|
00002830  62 65 6c 24 28 6f 66 66  73 65 74 25 29 3b 0d 12  |bel$(offset%);..|
00002840  70 14 20 20 49 25 3d a7  69 6e 73 74 24 2c 22 2c  |p.  I%=.inst$,",|
00002850  22 29 0d 12 7a 13 20 20  c0 69 6e 73 74 24 29 3d  |")..z.  .inst$)=|
00002860  22 41 44 52 22 0d 12 84  23 20 20 f1 8a 32 30 29  |"ADR"...#  ..20)|
00002870  c0 69 6e 73 74 24 2c 49  25 29 2b 6c 61 62 65 6c  |.inst$,I%)+label|
00002880  24 28 64 65 73 74 25 29  0d 12 8e 10 20 20 6f 66  |$(dest%)....  of|
00002890  66 73 65 74 25 2b 3d 34  0d 12 98 05 cc 0d 12 a2  |fset%+=4........|
000028a0  30 20 20 e7 6c 61 62 65  6c 24 28 6f 66 66 73 65  |0  .label$(offse|
000028b0  74 25 29 3c 3e 22 22 8c  f1 22 2e 22 3b 6c 61 62  |t%)<>""..".";lab|
000028c0  65 6c 24 28 6f 66 66 73  65 74 25 29 3b 0d 12 ac  |el$(offset%);...|
000028d0  17 20 20 63 6f 6e 64 24  3d c1 69 6e 73 74 24 2c  |.  cond$=.inst$,|
000028e0  34 2c 32 29 0d 12 b6 1c  20 20 e7 64 65 73 74 25  |4,2)....  .dest%|
000028f0  3e 62 79 74 65 73 25 84  64 65 73 74 25 3c 30 8c  |>bytes%.dest%<0.|
00002900  0d 12 c0 40 20 20 20 20  f1 8a 32 30 29 22 46 4e  |...@    ..20)"FN|
00002910  61 64 72 6c 28 22 22 22  2b 63 6f 6e 64 24 2b 22  |adrl("""+cond$+"|
00002920  22 22 2c 22 2b c3 28 72  64 25 29 2b 22 2c 22 22  |"","+.(rd%)+",""|
00002930  26 22 2b c3 7e 64 65 73  74 25 2b 22 22 22 29 22  |&"+.~dest%+""")"|
00002940  0d 12 ca 07 20 20 cc 0d  12 d4 45 20 20 20 20 f1  |....  ....E    .|
00002950  8a 32 30 29 22 46 4e 61  64 72 6c 28 22 22 22 2b  |.20)"FNadrl("""+|
00002960  63 6f 6e 64 24 2b 22 22  22 2c 22 2b c3 28 72 64  |cond$+""","+.(rd|
00002970  25 29 2b 22 2c 22 22 22  2b 6c 61 62 65 6c 24 28  |%)+","""+label$(|
00002980  64 65 73 74 25 29 2b 22  22 22 29 22 0d 12 de 07  |dest%)+""")"....|
00002990  20 20 cd 0d 12 e8 10 20  20 6f 66 66 73 65 74 25  |  .....  offset%|
000029a0  2b 3d 38 0d 12 f2 05 cd  0d 12 fc 05 e1 0d 13 06  |+=8.............|
000029b0  04 0d 13 10 0e dd f2 64  69 73 61 6c 69 67 6e 0d  |.......disalign.|
000029c0  13 1a 0d ea 70 6f 69 6e  74 65 72 25 0d 13 24 10  |....pointer%..$.|
000029d0  f1 8a 32 30 29 22 41 4c  49 47 4e 22 0d 13 2e 1a  |..20)"ALIGN"....|
000029e0  70 6f 69 6e 74 65 72 25  3d 6f 66 66 73 65 74 25  |pointer%=offset%|
000029f0  2b 62 61 73 65 25 0d 13  38 13 c8 95 70 6f 69 6e  |+base%..8...poin|
00002a00  74 65 72 25 83 34 3c 3e  30 0d 13 42 11 20 20 70  |ter%.4<>0..B.  p|
00002a10  6f 69 6e 74 65 72 25 2b  3d 31 0d 13 4c 10 20 20  |ointer%+=1..L.  |
00002a20  6f 66 66 73 65 74 25 2b  3d 31 0d 13 56 05 ce 0d  |offset%+=1..V...|
00002a30  13 60 05 e1 0d 13 6a 04  0d 13 74 0b dd f2 64 69  |.`....j...t...di|
00002a40  73 62 6c 0d 13 7e 2f 64  65 73 74 25 3d 28 28 28  |sbl..~/dest%=(((|
00002a50  a0 28 c2 69 6e 73 74 24  2c 6c 65 6e 25 2d 37 29  |.(.inst$,len%-7)|
00002a60  29 29 3c 3c 38 29 3e 3e  38 29 2b 6f 66 66 73 65  |))<<8)>>8)+offse|
00002a70  74 25 0d 13 88 2e e7 6c  61 62 65 6c 24 28 6f 66  |t%.....label$(of|
00002a80  66 73 65 74 25 29 3c 3e  22 22 8c f1 22 2e 22 3b  |fset%)<>""..".";|
00002a90  6c 61 62 65 6c 24 28 6f  66 66 73 65 74 25 29 3b  |label$(offset%);|
00002aa0  0d 13 92 1a e7 64 65 73  74 25 3e 62 79 74 65 73  |.....dest%>bytes|
00002ab0  25 84 64 65 73 74 25 3c  30 8c 0d 13 9c 1f 20 20  |%.dest%<0.....  |
00002ac0  f1 8a 32 30 29 c0 69 6e  73 74 24 2c 38 29 2b 22  |..20).inst$,8)+"|
00002ad0  26 22 3b 7e 64 65 73 74  25 0d 13 a6 05 cc 0d 13  |&";~dest%.......|
00002ae0  b0 22 20 20 f1 8a 32 30  29 c0 69 6e 73 74 24 2c  |."  ..20).inst$,|
00002af0  38 29 2b 6c 61 62 65 6c  24 28 64 65 73 74 25 29  |8)+label$(dest%)|
00002b00  0d 13 ba 05 cd 0d 13 c4  0e 6f 66 66 73 65 74 25  |.........offset%|
00002b10  2b 3d 34 0d 13 ce 05 e1  0d 13 d8 04 0d 13 e2 0f  |+=4.............|
00002b20  dd f2 64 69 73 62 72 61  6e 63 68 0d 13 ec 2f 64  |..disbranch.../d|
00002b30  65 73 74 25 3d 28 28 28  a0 28 c2 69 6e 73 74 24  |est%=(((.(.inst$|
00002b40  2c 6c 65 6e 25 2d 37 29  29 29 3c 3c 38 29 3e 3e  |,len%-7)))<<8)>>|
00002b50  38 29 2b 6f 66 66 73 65  74 25 0d 13 f6 2e e7 6c  |8)+offset%.....l|
00002b60  61 62 65 6c 24 28 6f 66  66 73 65 74 25 29 3c 3e  |abel$(offset%)<>|
00002b70  22 22 8c f1 22 2e 22 3b  6c 61 62 65 6c 24 28 6f  |""..".";label$(o|
00002b80  66 66 73 65 74 25 29 3b  0d 14 00 1a e7 64 65 73  |ffset%);.....des|
00002b90  74 25 3e 62 79 74 65 73  25 84 64 65 73 74 25 3c  |t%>bytes%.dest%<|
00002ba0  30 8c 0d 14 0a 1f 20 20  f1 8a 32 30 29 c0 69 6e  |0.....  ..20).in|
00002bb0  73 74 24 2c 38 29 2b 22  26 22 3b 7e 64 65 73 74  |st$,8)+"&";~dest|
00002bc0  25 0d 14 14 05 cc 0d 14  1e 22 20 20 f1 8a 32 30  |%........"  ..20|
00002bd0  29 c0 69 6e 73 74 24 2c  38 29 2b 6c 61 62 65 6c  |).inst$,8)+label|
00002be0  24 28 64 65 73 74 25 29  0d 14 1f 05 cd 0d 14 28  |$(dest%).......(|
00002bf0  0e 6f 66 66 73 65 74 25  2b 3d 34 0d 14 32 05 e1  |.offset%+=4..2..|
00002c00  0d 14 3c 04 0d 14 46 0d  dd f2 64 69 73 62 79 74  |..<...F...disbyt|
00002c10  65 0d 14 50 17 62 79 74  65 25 3d 62 61 73 65 25  |e..P.byte%=base%|
00002c20  3f 6f 66 66 73 65 74 25  0d 14 5a 2e e7 6c 61 62  |?offset%..Z..lab|
00002c30  65 6c 24 28 6f 66 66 73  65 74 25 29 3c 3e 22 22  |el$(offset%)<>""|
00002c40  8c f1 22 2e 22 3b 6c 61  62 65 6c 24 28 6f 66 66  |..".";label$(off|
00002c50  73 65 74 25 29 3b 0d 14  64 13 62 79 74 65 24 3d  |set%);..d.byte$=|
00002c60  c3 7e 28 62 79 74 65 25  29 0d 14 6e 20 62 79 74  |.~(byte%)..n byt|
00002c70  65 24 3d c4 32 2d a9 28  62 79 74 65 24 29 2c 22  |e$=.2-.(byte$),"|
00002c80  30 22 29 2b 62 79 74 65  24 0d 14 78 1a f1 8a 32  |0")+byte$..x...2|
00002c90  30 29 22 45 51 55 42 20  20 20 20 26 22 3b 62 79  |0)"EQUB    &";by|
00002ca0  74 65 24 0d 14 82 0e 6f  66 66 73 65 74 25 2b 3d  |te$....offset%+=|
00002cb0  31 0d 14 8c 05 e1 0d 14  96 04 0d 14 a0 0d dd f2  |1...............|
00002cc0  64 69 73 63 6f 64 65 0d  14 aa 17 69 6e 73 74 25  |discode....inst%|
00002cd0  3d 62 61 73 65 25 21 6f  66 66 73 65 74 25 0d 14  |=base%!offset%..|
00002ce0  b4 1e 69 6e 73 74 24 3d  a4 65 78 74 72 61 63 74  |..inst$=.extract|
00002cf0  28 69 6e 73 74 25 2c 6c  65 6e 25 29 0d 14 be 13  |(inst%,len%)....|
00002d00  c8 8e a4 69 6e 73 74 28  69 6e 73 74 25 29 ca 0d  |...inst(inst%)..|
00002d10  14 c8 14 20 20 c9 20 31  3a f2 64 69 73 62 72 61  |...  . 1:.disbra|
00002d20  6e 63 68 0d 14 d2 14 20  20 c9 20 32 3a f2 64 69  |nch....  . 2:.di|
00002d30  73 62 72 61 6e 63 68 0d  14 dc 10 20 20 c9 20 33  |sbranch....  . 3|
00002d40  3a f2 64 69 73 62 6c 0d  14 e6 13 20 20 c9 20 34  |:.disbl....  . 4|
00002d50  3a f2 64 69 73 6f 74 68  65 72 0d 14 f0 11 20 20  |:.disother....  |
00002d60  c9 20 35 3a f2 64 69 73  73 77 69 0d 14 fa 13 20  |. 5:.disswi.... |
00002d70  20 c9 20 36 3a f2 64 69  73 6f 74 68 65 72 0d 15  | . 6:.disother..|
00002d80  04 13 20 20 c9 20 37 3a  f2 64 69 73 6f 74 68 65  |..  . 7:.disothe|
00002d90  72 0d 15 0e 14 20 20 c9  20 38 3a f2 64 69 73 61  |r....  . 8:.disa|
00002da0  64 72 61 64 64 0d 15 18  14 20 20 c9 20 39 3a f2  |dradd....  . 9:.|
00002db0  64 69 73 61 64 72 73 75  62 0d 15 22 13 20 20 c9  |disadrsub..".  .|
00002dc0  31 30 3a f2 64 69 73 6f  74 68 65 72 0d 15 2c 13  |10:.disother..,.|
00002dd0  20 20 c9 31 31 3a f2 64  69 73 6c 73 65 78 70 0d  |  .11:.dislsexp.|
00002de0  15 36 13 20 20 c9 31 32  3a f2 64 69 73 63 6f 70  |.6.  .12:.discop|
00002df0  72 6f 0d 15 40 13 20 20  c9 31 33 3a f2 64 69 73  |ro..@.  .13:.dis|
00002e00  75 6e 64 65 66 0d 15 4a  13 20 20 c9 31 34 3a f2  |undef..J.  .14:.|
00002e10  64 69 73 6f 74 68 65 72  0d 15 54 11 20 20 7f 3a  |disother..T.  .:|
00002e20  f2 64 69 73 6f 74 68 65  72 0d 15 5e 05 cb 0d 15  |.disother..^....|
00002e30  68 05 e1 0d 15 72 04 0d  15 7c 0d dd f2 64 69 73  |h....r...|...dis|
00002e40  64 6f 75 62 0d 15 86 19  64 6f 75 62 6c 65 25 3d  |doub....double%=|
00002e50  62 61 73 65 25 21 6f 66  66 73 65 74 25 0d 15 90  |base%!offset%...|
00002e60  2e e7 6c 61 62 65 6c 24  28 6f 66 66 73 65 74 25  |..label$(offset%|
00002e70  29 3c 3e 22 22 8c f1 22  2e 22 3b 6c 61 62 65 6c  |)<>""..".";label|
00002e80  24 28 6f 66 66 73 65 74  25 29 3b 0d 15 9a 17 64  |$(offset%);....d|
00002e90  6f 75 62 6c 65 24 3d c3  7e 28 64 6f 75 62 6c 65  |ouble$=.~(double|
00002ea0  25 29 0d 15 a4 26 64 6f  75 62 6c 65 24 3d c4 38  |%)...&double$=.8|
00002eb0  2d a9 28 64 6f 75 62 6c  65 24 29 2c 22 30 22 29  |-.(double$),"0")|
00002ec0  2b 64 6f 75 62 6c 65 24  0d 15 ae 1c f1 8a 32 30  |+double$......20|
00002ed0  29 22 45 51 55 44 20 20  20 20 26 22 3b 64 6f 75  |)"EQUD    &";dou|
00002ee0  62 6c 65 24 0d 15 b8 0e  6f 66 66 73 65 74 25 2b  |ble$....offset%+|
00002ef0  3d 34 0d 15 c2 05 e1 0d  15 cc 04 0d 15 d6 11 dd  |=4..............|
00002f00  f2 64 69 73 65 78 74 65  72 6e 61 6c 0d 15 e0 14  |.disexternal....|
00002f10  f4 20 44 65 73 6b 74 6f  70 20 6d 6f 64 75 6c 65  |. Desktop module|
00002f20  0d 15 ea 0e c8 8e 6f 66  66 73 65 74 25 ca 0d 15  |......offset%...|
00002f30  f4 11 20 20 c9 20 26 35  46 43 3a f1 22 5d 22 0d  |..  . &5FC:."]".|
00002f40  15 fe 39 20 20 20 20 20  20 20 20 20 20 20 20 f1  |..9            .|
00002f50  22 4f 53 43 4c 49 22 22  4c 6f 61 64 20 54 45 4d  |"OSCLI""Load TEM|
00002f60  50 4c 41 54 45 53 2e 46  69 6c 65 72 20 22 22 2b  |PLATES.Filer ""+|
00002f70  53 54 52 24 7e 4f 25 22  0d 16 08 1b 20 20 20 20  |STR$~O%"....    |
00002f80  20 20 20 20 20 20 20 20  f1 22 4f 25 2b 3d 26 34  |        ."O%+=&4|
00002f90  38 39 22 0d 16 12 1b 20  20 20 20 20 20 20 20 20  |89"....         |
00002fa0  20 20 20 f1 22 50 25 2b  3d 26 34 38 39 22 0d 16  |   ."P%+=&489"..|
00002fb0  1c 1d 20 20 20 20 20 20  20 20 20 20 20 20 f1 22  |..            ."|
00002fc0  5b 4f 50 54 20 70 61 73  73 25 22 0d 16 26 1d 20  |[OPT pass%"..&. |
00002fd0  20 20 20 20 20 20 20 20  20 20 20 6f 66 66 73 65  |           offse|
00002fe0  74 25 2b 3d 26 34 38 39  0d 16 30 11 20 20 c9 20  |t%+=&489..0.  . |
00002ff0  26 41 41 46 3a f1 22 5d  22 0d 16 3a 3c 20 20 20  |&AAF:."]"..:<   |
00003000  20 20 20 20 20 20 20 20  20 f1 22 4f 53 43 4c 49  |         ."OSCLI|
00003010  22 22 4c 6f 61 64 20 54  45 4d 50 4c 41 54 45 53  |""Load TEMPLATES|
00003020  2e 4e 65 74 46 69 6c 65  72 20 22 22 2b 53 54 52  |.NetFiler ""+STR|
00003030  24 7e 4f 25 22 0d 16 44  1b 20 20 20 20 20 20 20  |$~O%"..D.       |
00003040  20 20 20 20 20 f1 22 4f  25 2b 3d 26 34 33 46 22  |     ."O%+=&43F"|
00003050  0d 16 4e 1b 20 20 20 20  20 20 20 20 20 20 20 20  |..N.            |
00003060  f1 22 50 25 2b 3d 26 34  33 46 22 0d 16 58 1d 20  |."P%+=&43F"..X. |
00003070  20 20 20 20 20 20 20 20  20 20 20 f1 22 5b 4f 50  |           ."[OP|
00003080  54 20 70 61 73 73 25 22  0d 16 62 1d 20 20 20 20  |T pass%"..b.    |
00003090  20 20 20 20 20 20 20 20  6f 66 66 73 65 74 25 2b  |        offset%+|
000030a0  3d 26 34 33 46 0d 16 6c  11 20 20 c9 20 26 46 31  |=&43F..l.  . &F1|
000030b0  36 3a f1 22 5d 22 0d 16  76 3b 20 20 20 20 20 20  |6:."]"..v;      |
000030c0  20 20 20 20 20 20 f1 22  4f 53 43 4c 49 22 22 4c  |      ."OSCLI""L|
000030d0  6f 61 64 20 54 45 4d 50  4c 41 54 45 53 2e 50 61  |oad TEMPLATES.Pa|
000030e0  6c 65 74 74 65 20 22 22  2b 53 54 52 24 7e 4f 25  |lette ""+STR$~O%|
000030f0  22 0d 16 80 1b 20 20 20  20 20 20 20 20 20 20 20  |"....           |
00003100  20 f1 22 4f 25 2b 3d 26  34 45 31 22 0d 16 8a 1b  | ."O%+=&4E1"....|
00003110  20 20 20 20 20 20 20 20  20 20 20 20 f1 22 50 25  |            ."P%|
00003120  2b 3d 26 34 45 31 22 0d  16 94 1d 20 20 20 20 20  |+=&4E1"....     |
00003130  20 20 20 20 20 20 20 f1  22 5b 4f 50 54 20 70 61  |       ."[OPT pa|
00003140  73 73 25 22 0d 16 9e 1d  20 20 20 20 20 20 20 20  |ss%"....        |
00003150  20 20 20 20 6f 66 66 73  65 74 25 2b 3d 26 34 45  |    offset%+=&4E|
00003160  31 0d 16 a8 11 20 20 c9  26 31 34 31 46 3a f1 22  |1....  .&141F:."|
00003170  5d 22 0d 16 b2 3c 20 20  20 20 20 20 20 20 20 20  |]"...<          |
00003180  20 20 f1 22 4f 53 43 4c  49 22 22 4c 6f 61 64 20  |  ."OSCLI""Load |
00003190  54 45 4d 50 4c 41 54 45  53 2e 53 77 69 74 63 68  |TEMPLATES.Switch|
000031a0  65 72 20 22 22 2b 53 54  52 24 7e 4f 25 22 0d 16  |er ""+STR$~O%"..|
000031b0  bc 1b 20 20 20 20 20 20  20 20 20 20 20 20 f1 22  |..            ."|
000031c0  4f 25 2b 3d 26 34 44 39  22 0d 16 c6 1b 20 20 20  |O%+=&4D9"....   |
000031d0  20 20 20 20 20 20 20 20  20 f1 22 50 25 2b 3d 26  |         ."P%+=&|
000031e0  34 44 39 22 0d 16 d0 1d  20 20 20 20 20 20 20 20  |4D9"....        |
000031f0  20 20 20 20 f1 22 5b 4f  50 54 20 70 61 73 73 25  |    ."[OPT pass%|
00003200  22 0d 16 da 1d 20 20 20  20 20 20 20 20 20 20 20  |"....           |
00003210  20 6f 66 66 73 65 74 25  2b 3d 26 34 44 39 0d 16  | offset%+=&4D9..|
00003220  e4 11 20 20 c9 26 31 39  31 42 3a f1 22 5d 22 0d  |..  .&191B:."]".|
00003230  16 ee 38 20 20 20 20 20  20 20 20 20 20 20 20 f1  |..8            .|
00003240  22 4f 53 43 4c 49 22 22  4c 6f 61 64 20 54 45 4d  |"OSCLI""Load TEM|
00003250  50 4c 41 54 45 53 2e 57  69 6d 70 20 22 22 2b 53  |PLATES.Wimp ""+S|
00003260  54 52 24 7e 4f 25 22 0d  16 f8 1b 20 20 20 20 20  |TR$~O%"....     |
00003270  20 20 20 20 20 20 20 f1  22 4f 25 2b 3d 26 32 37  |       ."O%+=&27|
00003280  44 22 0d 17 02 1b 20 20  20 20 20 20 20 20 20 20  |D"....          |
00003290  20 20 f1 22 50 25 2b 3d  26 32 37 44 22 0d 17 0c  |  ."P%+=&27D"...|
000032a0  1d 20 20 20 20 20 20 20  20 20 20 20 20 f1 22 5b  |.            ."[|
000032b0  4f 50 54 20 70 61 73 73  25 22 0d 17 16 1d 20 20  |OPT pass%"....  |
000032c0  20 20 20 20 20 20 20 20  20 20 6f 66 66 73 65 74  |          offset|
000032d0  25 2b 3d 26 32 37 44 0d  17 20 05 cb 0d 17 2a 05  |%+=&27D.. ....*.|
000032e0  e1 0d 17 34 04 0d 17 3e  0e dd f2 64 69 73 6c 73  |...4...>...disls|
000032f0  65 78 70 0d 17 48 17 69  6e 73 74 25 3d 62 61 73  |exp..H.inst%=bas|
00003300  65 25 21 6f 66 66 73 65  74 25 0d 17 52 1e 69 6e  |e%!offset%..R.in|
00003310  73 74 24 3d a4 65 78 74  72 61 63 74 28 69 6e 73  |st$=.extract(ins|
00003320  74 25 2c 6c 65 6e 25 29  0d 17 5c 14 49 25 3d a7  |t%,len%)..\.I%=.|
00003330  69 6e 73 74 24 2c 22 23  22 29 2b 31 0d 17 66 15  |inst$,"#")+1..f.|
00003340  4a 25 3d a7 69 6e 73 74  24 2c 22 5d 22 29 2d 49  |J%=.inst$,"]")-I|
00003350  25 0d 17 70 24 64 65 73  74 25 3d a0 28 c1 69 6e  |%..p$dest%=.(.in|
00003360  73 74 24 2c 49 25 2c 4a  25 29 29 2b 6f 66 66 73  |st$,I%,J%))+offs|
00003370  65 74 25 2b 38 0d 17 7a  2e e7 6c 61 62 65 6c 24  |et%+8..z..label$|
00003380  28 6f 66 66 73 65 74 25  29 3c 3e 22 22 8c f1 22  |(offset%)<>"".."|
00003390  2e 22 3b 6c 61 62 65 6c  24 28 6f 66 66 73 65 74  |.";label$(offset|
000033a0  25 29 3b 0d 17 84 12 49  25 3d a7 69 6e 73 74 24  |%);....I%=.inst$|
000033b0  2c 22 2c 22 29 0d 17 8e  21 f1 8a 32 30 29 c0 69  |,",")...!..20).i|
000033c0  6e 73 74 24 2c 49 25 29  2b 6c 61 62 65 6c 24 28  |nst$,I%)+label$(|
000033d0  64 65 73 74 25 29 0d 17  98 0e 6f 66 66 73 65 74  |dest%)....offset|
000033e0  25 2b 3d 34 0d 17 a2 05  e1 0d 17 ac 04 0d 17 b6  |%+=4............|
000033f0  0e dd f2 64 69 73 6f 74  68 65 72 0d 17 c0 2e e7  |...disother.....|
00003400  6c 61 62 65 6c 24 28 6f  66 66 73 65 74 25 29 3c  |label$(offset%)<|
00003410  3e 22 22 8c f1 22 2e 22  3b 6c 61 62 65 6c 24 28  |>""..".";label$(|
00003420  6f 66 66 73 65 74 25 29  3b 0d 17 ca 0e f1 8a 32  |offset%);......2|
00003430  30 29 69 6e 73 74 24 0d  17 d4 0e 6f 66 66 73 65  |0)inst$....offse|
00003440  74 25 2b 3d 34 0d 17 de  05 e1 0d 17 e8 04 0d 17  |t%+=4...........|
00003450  f2 15 dd f2 64 69 73 70  61 64 64 65 64 73 74 72  |....dispaddedstr|
00003460  69 6e 67 0d 17 fc 09 ea  65 6e 64 25 0d 18 06 0d  |ing.....end%....|
00003470  73 74 72 6c 65 6e 25 3d  30 0d 18 10 2e e7 6c 61  |strlen%=0.....la|
00003480  62 65 6c 24 28 6f 66 66  73 65 74 25 29 3c 3e 22  |bel$(offset%)<>"|
00003490  22 8c f1 22 2e 22 3b 6c  61 62 65 6c 24 28 6f 66  |"..".";label$(of|
000034a0  66 73 65 74 25 29 3b 0d  18 1a 0a 65 6e 64 25 3d  |fset%);....end%=|
000034b0  a3 0d 18 24 05 f5 0d 18  2e 1c 20 20 63 68 61 72  |...$......  char|
000034c0  24 3d bd 28 62 61 73 65  25 3f 6f 66 66 73 65 74  |$=.(base%?offset|
000034d0  25 29 0d 18 38 1c 20 20  73 74 72 62 75 66 25 3f  |%)..8.  strbuf%?|
000034e0  73 74 72 6c 65 6e 25 3d  97 63 68 61 72 24 0d 18  |strlen%=.char$..|
000034f0  42 10 20 20 73 74 72 6c  65 6e 25 2b 3d 31 0d 18  |B.  strlen%+=1..|
00003500  4c 10 20 20 6f 66 66 73  65 74 25 2b 3d 31 0d 18  |L.  offset%+=1..|
00003510  56 16 20 20 e7 6f 66 66  73 65 74 25 3e 62 79 74  |V.  .offset%>byt|
00003520  65 73 25 8c 0d 18 60 0e  20 20 20 20 65 6e 64 25  |es%...`.    end%|
00003530  3d b9 0d 18 6a 07 20 20  cc 0d 18 74 37 20 20 20  |=...j.  ...t7   |
00003540  20 e7 74 79 70 65 25 28  6f 66 66 73 65 74 25 29  | .type%(offset%)|
00003550  3c 3e 2d 33 20 84 6c 61  62 65 6c 24 28 6f 66 66  |<>-3 .label$(off|
00003560  73 65 74 25 29 3c 3e 22  22 8c 65 6e 64 25 3d b9  |set%)<>"".end%=.|
00003570  0d 18 7e 07 20 20 cd 0d  18 88 09 fd 65 6e 64 25  |..~.  ......end%|
00003580  0d 18 92 19 f2 70 72 69  6e 74 53 74 72 69 6e 67  |.....printString|
00003590  28 73 74 72 6c 65 6e 25  29 0d 18 9c 05 e1 0d 18  |(strlen%).......|
000035a0  a6 04 0d 18 b0 0d dd f2  64 69 73 73 74 72 30 0d  |........disstr0.|
000035b0  18 ba 0d 73 74 72 6c 65  6e 25 3d 30 0d 18 c4 2e  |...strlen%=0....|
000035c0  e7 6c 61 62 65 6c 24 28  6f 66 66 73 65 74 25 29  |.label$(offset%)|
000035d0  3c 3e 22 22 8c f1 22 2e  22 3b 6c 61 62 65 6c 24  |<>""..".";label$|
000035e0  28 6f 66 66 73 65 74 25  29 3b 0d 18 ce 05 f5 0d  |(offset%);......|
000035f0  18 d8 1c 20 20 63 68 61  72 24 3d bd 28 62 61 73  |...  char$=.(bas|
00003600  65 25 3f 6f 66 66 73 65  74 25 29 0d 18 e2 1c 20  |e%?offset%).... |
00003610  20 73 74 72 62 75 66 25  3f 73 74 72 6c 65 6e 25  | strbuf%?strlen%|
00003620  3d 97 63 68 61 72 24 0d  18 ec 10 20 20 73 74 72  |=.char$....  str|
00003630  6c 65 6e 25 2b 3d 31 0d  18 f6 10 20 20 6f 66 66  |len%+=1....  off|
00003640  73 65 74 25 2b 3d 31 0d  19 00 11 20 20 e7 63 68  |set%+=1....  .ch|
00003650  61 72 24 3d bd 32 37 8c  0d 19 0a 1e 20 20 20 20  |ar$=.27.....    |
00003660  63 68 61 72 24 3d bd 28  62 61 73 65 25 3f 6f 66  |char$=.(base%?of|
00003670  66 73 65 74 25 29 0d 19  14 1e 20 20 20 20 73 74  |fset%)....    st|
00003680  72 62 75 66 25 3f 73 74  72 6c 65 6e 25 3d 97 63  |rbuf%?strlen%=.c|
00003690  68 61 72 24 0d 19 1e 12  20 20 20 20 73 74 72 6c  |har$....    strl|
000036a0  65 6e 25 2b 3d 31 0d 19  28 12 20 20 20 20 6f 66  |en%+=1..(.    of|
000036b0  66 73 65 74 25 2b 3d 31  0d 19 32 1e 20 20 20 20  |fset%+=1..2.    |
000036c0  63 68 61 72 24 3d bd 28  62 61 73 65 25 3f 6f 66  |char$=.(base%?of|
000036d0  66 73 65 74 25 29 0d 19  3c 1e 20 20 20 20 73 74  |fset%)..<.    st|
000036e0  72 62 75 66 25 3f 73 74  72 6c 65 6e 25 3d 97 63  |rbuf%?strlen%=.c|
000036f0  68 61 72 24 0d 19 46 12  20 20 20 20 73 74 72 6c  |har$..F.    strl|
00003700  65 6e 25 2b 3d 31 0d 19  50 12 20 20 20 20 6f 66  |en%+=1..P.    of|
00003710  66 73 65 74 25 2b 3d 31  0d 19 5a 07 20 20 cd 0d  |fset%+=1..Z.  ..|
00003720  19 64 22 fd 63 68 61 72  24 3d bd 30 20 84 6c 61  |.d".char$=.0 .la|
00003730  62 65 6c 24 28 6f 66 66  73 65 74 25 29 3c 3e 22  |bel$(offset%)<>"|
00003740  22 0d 19 6e 19 f2 70 72  69 6e 74 53 74 72 69 6e  |"..n..printStrin|
00003750  67 28 73 74 72 6c 65 6e  25 29 0d 19 78 05 e1 0d  |g(strlen%)..x...|
00003760  19 82 04 0d 19 8c 0e dd  f2 64 69 73 73 74 72 43  |.........disstrC|
00003770  52 0d 19 96 09 ea 6c 65  6e 25 0d 19 a0 20 73 74  |R.....len%... st|
00003780  72 69 6e 67 24 3d 24 28  62 61 73 65 25 2b 6f 66  |ring$=$(base%+of|
00003790  66 73 65 74 25 29 2b bd  31 33 0d 19 aa 14 24 73  |fset%)+.13....$s|
000037a0  74 72 62 75 66 25 3d 73  74 72 69 6e 67 24 0d 19  |trbuf%=string$..|
000037b0  b4 14 73 74 72 6c 65 6e  25 3d a9 73 74 72 69 6e  |..strlen%=.strin|
000037c0  67 24 0d 19 be 2e e7 6c  61 62 65 6c 24 28 6f 66  |g$.....label$(of|
000037d0  66 73 65 74 25 29 3c 3e  22 22 8c f1 22 2e 22 3b  |fset%)<>""..".";|
000037e0  6c 61 62 65 6c 24 28 6f  66 66 73 65 74 25 29 3b  |label$(offset%);|
000037f0  0d 19 c8 14 6f 66 66 73  65 74 25 2b 3d 73 74 72  |....offset%+=str|
00003800  6c 65 6e 25 0d 19 d2 19  f2 70 72 69 6e 74 53 74  |len%.....printSt|
00003810  72 69 6e 67 28 73 74 72  6c 65 6e 25 29 0d 19 dc  |ring(strlen%)...|
00003820  05 e1 0d 19 e6 04 0d 19  f0 0c dd f2 64 69 73 73  |............diss|
00003830  77 69 0d 19 fa 21 e7 28  69 6e 73 74 25 80 26 30  |wi...!.(inst%.&0|
00003840  46 46 44 46 46 30 30 29  3d 26 30 46 30 30 30 31  |FFDFF00)=&0F0001|
00003850  30 30 8c 0d 1a 04 15 20  20 49 25 3d a7 69 6e 73  |00.....  I%=.ins|
00003860  74 24 2c 22 22 22 22 29  0d 1a 0e 0d 20 20 e7 49  |t$,"""")....  .I|
00003870  25 3c 3e 30 8c 0d 1a 18  34 20 20 20 20 69 6e 73  |%<>0....4    ins|
00003880  74 24 3d c0 69 6e 73 74  24 2c 49 25 2d 31 29 2b  |t$=.inst$,I%-1)+|
00003890  22 41 53 43 22 2b c2 69  6e 73 74 24 2c a9 69 6e  |"ASC"+.inst$,.in|
000038a0  73 74 24 2d 49 25 2b 31  29 0d 1a 22 07 20 20 cd  |st$-I%+1)..".  .|
000038b0  0d 1a 2c 05 cc 0d 1a 36  18 20 20 e7 c2 69 6e 73  |..,....6.  ..ins|
000038c0  74 24 2c 34 29 3d 22 55  73 65 72 22 8c 0d 1a 40  |t$,4)="User"...@|
000038d0  1c 20 20 20 20 6e 75 6d  25 3d 69 6e 73 74 25 80  |.    num%=inst%.|
000038e0  26 30 30 46 46 46 46 46  46 0d 1a 4a 22 20 20 20  |&00FFFFFF..J"   |
000038f0  20 69 6e 73 74 24 3d c0  69 6e 73 74 24 2c 38 29  | inst$=.inst$,8)|
00003900  2b 22 26 22 2b c3 7e 6e  75 6d 25 0d 1a 54 07 20  |+"&"+.~num%..T. |
00003910  20 cc 0d 1a 5e 30 20 20  20 20 69 6e 73 74 24 3d  | ...^0    inst$=|
00003920  c0 69 6e 73 74 24 2c 38  29 2b 22 22 22 22 2b c2  |.inst$,8)+""""+.|
00003930  69 6e 73 74 24 2c 6c 65  6e 25 2d 38 29 2b 22 22  |inst$,len%-8)+""|
00003940  22 22 0d 1a 68 07 20 20  cd 0d 1a 72 05 cd 0d 1a  |""..h.  ...r....|
00003950  7c 2e e7 6c 61 62 65 6c  24 28 6f 66 66 73 65 74  ||..label$(offset|
00003960  25 29 3c 3e 22 22 8c f1  22 2e 22 3b 6c 61 62 65  |%)<>""..".";labe|
00003970  6c 24 28 6f 66 66 73 65  74 25 29 3b 0d 1a 86 0e  |l$(offset%);....|
00003980  f1 8a 32 30 29 69 6e 73  74 24 0d 1a 90 15 6e 75  |..20)inst$....nu|
00003990  6d 25 3d 69 6e 73 74 25  80 73 6d 61 73 6b 25 0d  |m%=inst%.smask%.|
000039a0  1a 9a 0e 6f 66 66 73 65  74 25 2b 3d 34 0d 1a a4  |...offset%+=4...|
000039b0  0b c8 8e 6e 75 6d 25 ca  0d 1a ae 1b 20 20 c9 31  |...num%.....  .1|
000039c0  3a f2 64 69 73 73 74 72  30 3a f2 64 69 73 61 6c  |:.disstr0:.disal|
000039d0  69 67 6e 0d 1a b8 05 cb  0d 1a c2 05 e1 0d 1a cc  |ign.............|
000039e0  04 0d 1a d6 0d dd f2 64  69 73 77 6f 72 64 0d 1a  |.......disword..|
000039f0  e0 30 77 6f 72 64 25 3d  62 61 73 65 25 3f 6f 66  |.0word%=base%?of|
00003a00  66 73 65 74 25 2b 26 31  30 30 2a 28 62 61 73 65  |fset%+&100*(base|
00003a10  25 3f 28 6f 66 66 73 65  74 25 2b 31 29 29 0d 1a  |%?(offset%+1))..|
00003a20  ea 2e e7 6c 61 62 65 6c  24 28 6f 66 66 73 65 74  |...label$(offset|
00003a30  25 29 3c 3e 22 22 8c f1  22 2e 22 3b 6c 61 62 65  |%)<>""..".";labe|
00003a40  6c 24 28 6f 66 66 73 65  74 25 29 3b 0d 1a f4 13  |l$(offset%);....|
00003a50  77 6f 72 64 24 3d c3 7e  28 77 6f 72 64 25 29 0d  |word$=.~(word%).|
00003a60  1a fe 20 77 6f 72 64 24  3d c4 34 2d a9 28 77 6f  |.. word$=.4-.(wo|
00003a70  72 64 24 29 2c 22 30 22  29 2b 77 6f 72 64 24 0d  |rd$),"0")+word$.|
00003a80  1b 08 1e f1 8a 32 30 29  22 45 51 55 57 20 20 20  |.....20)"EQUW   |
00003a90  20 26 22 3b c3 7e 28 77  6f 72 64 25 29 0d 1b 12  | &";.~(word%)...|
00003aa0  0e 6f 66 66 73 65 74 25  2b 3d 32 0d 1b 1c 05 e1  |.offset%+=2.....|
00003ab0  0d 1b 26 04 0d 1b 30 17  dd f2 64 6f 75 62 6c 65  |..&...0...double|
00003ac0  28 f8 20 6f 66 66 73 65  74 25 29 0d 1b 3a 15 c8  |(. offset%)..:..|
00003ad0  8e 74 79 70 65 25 28 6f  66 66 73 65 74 25 29 ca  |.type%(offset%).|
00003ae0  0d 1b 44 09 20 20 c9 30  3a 0d 1b 4e 0c 20 20 c9  |..D.  .0:..N.  .|
00003af0  33 2c 34 3a e1 0d 1b 58  27 20 20 7f 3a 85 32 35  |3,4:...X'  .:.25|
00003b00  35 2c 22 45 78 70 65 63  74 69 6e 67 20 74 79 70  |5,"Expecting typ|
00003b10  65 20 33 2c 20 34 20 6f  72 20 30 22 0d 1b 62 05  |e 3, 4 or 0"..b.|
00003b20  cb 0d 1b 6c 07 ea 49 25  0d 1b 76 19 64 6f 75 62  |...l..I%..v.doub|
00003b30  6c 65 25 3d 62 61 73 65  25 21 6f 66 66 73 65 74  |le%=base%!offset|
00003b40  25 0d 1b 80 0b e3 49 25  3d 30 b8 33 0d 1b 8a 19  |%.....I%=0.3....|
00003b50  20 20 74 79 70 65 25 28  6f 66 66 73 65 74 25 2b  |  type%(offset%+|
00003b60  49 25 29 3d 34 0d 1b 94  05 ed 0d 1b 9e 0e 6f 66  |I%)=4.........of|
00003b70  66 73 65 74 25 2b 3d 34  0d 1b a8 05 e1 0d 1b b2  |fset%+=4........|
00003b80  04 0d 1b bc 0b dd f2 65  72 72 6f 72 0d 1b c6 0a  |.......error....|
00003b90  2a 53 70 6f 6f 6c 0d 1b  da 06 fb 37 0d 1b e4 15  |*Spool.....7....|
00003ba0  f1 f6 24 2b 22 20 61 74  20 6c 69 6e 65 20 22 3b  |..$+" at line ";|
00003bb0  9e 0d 1c 7a 07 d9 23 30  0d 1c 84 05 e0 0d 1c 8e  |...z..#0........|
00003bc0  04 0d 1c 98 0a dd f2 65  78 69 74 0d 1c a2 0d 72  |.......exit....r|
00003bd0  65 74 75 72 6e 25 3d b9  0d 1c ac 0e 6f 66 66 73  |eturn%=.....offs|
00003be0  65 74 25 2b 3d 34 0d 1c  b6 05 e1 0d 1c c0 04 0d  |et%+=4..........|
00003bf0  1c ca 0e dd f2 65 78 74  65 72 6e 61 6c 0d 1c d4  |.....external...|
00003c00  05 e1 0d 1c de 04 0d 1e  3c 0e dd f2 65 78 74 65  |........<...exte|
00003c10  72 6e 61 6c 0d 1e 46 14  f4 20 44 65 73 6b 74 6f  |rnal..F.. Deskto|
00003c20  70 20 6d 6f 64 75 6c 65  0d 1e 50 1d e3 6f 66 66  |p module..P..off|
00003c30  73 65 74 25 3d 26 35 46  43 b8 26 35 46 43 2b 26  |set%=&5FC.&5FC+&|
00003c40  34 38 39 2d 31 0d 1e 5a  16 20 20 74 79 70 65 25  |489-1..Z.  type%|
00003c50  28 6f 66 66 73 65 74 25  29 3d 37 0d 1e 64 05 ed  |(offset%)=7..d..|
00003c60  0d 1e 6e 1d e3 6f 66 66  73 65 74 25 3d 26 41 41  |..n..offset%=&AA|
00003c70  46 b8 26 41 41 46 2b 26  34 33 46 2d 31 0d 1e 78  |F.&AAF+&43F-1..x|
00003c80  16 20 20 74 79 70 65 25  28 6f 66 66 73 65 74 25  |.  type%(offset%|
00003c90  29 3d 37 0d 1e 82 05 ed  0d 1e 8c 1d e3 6f 66 66  |)=7..........off|
00003ca0  73 65 74 25 3d 26 46 31  36 b8 26 46 31 36 2b 26  |set%=&F16.&F16+&|
00003cb0  34 45 31 2d 31 0d 1e 96  16 20 20 74 79 70 65 25  |4E1-1....  type%|
00003cc0  28 6f 66 66 73 65 74 25  29 3d 37 0d 1e a0 05 ed  |(offset%)=7.....|
00003cd0  0d 1e aa 1f e3 6f 66 66  73 65 74 25 3d 26 31 34  |.....offset%=&14|
00003ce0  31 46 b8 26 31 34 31 46  2b 26 34 44 39 2d 31 0d  |1F.&141F+&4D9-1.|
00003cf0  1e b4 16 20 20 74 79 70  65 25 28 6f 66 66 73 65  |...  type%(offse|
00003d00  74 25 29 3d 37 0d 1e be  05 ed 0d 1e c8 1f e3 6f  |t%)=7..........o|
00003d10  66 66 73 65 74 25 3d 26  31 39 31 42 b8 26 31 39  |ffset%=&191B.&19|
00003d20  31 42 2b 26 32 37 44 2d  31 0d 1e d2 16 20 20 74  |1B+&27D-1....  t|
00003d30  79 70 65 25 28 6f 66 66  73 65 74 25 29 3d 37 0d  |ype%(offset%)=7.|
00003d40  1e dc 05 ed 0d 1e e6 05  e1 0d 1e f0 04 0d 1e fa  |................|
00003d50  0c dd f2 68 65 61 64 65  72 0d 1f 04 16 6c 61 62  |...header....lab|
00003d60  65 6c 24 28 30 29 3d 22  48 65 61 64 65 72 22 0d  |el$(0)="Header".|
00003d70  1f 0e 0d 6f 66 66 73 65  74 25 3d 30 0d 1f 18 0b  |...offset%=0....|
00003d80  e3 49 25 3d 30 b8 33 0d  1f 22 09 20 20 f3 41 24  |.I%=0.3..".  .A$|
00003d90  0d 1f 2c 0e 20 20 e7 64  65 62 75 67 25 8c 0d 1f  |..,.  .debug%...|
00003da0  36 0a 20 20 20 20 fb 36  0d 1f 40 0b 20 20 20 20  |6.    .6..@.    |
00003db0  f1 41 24 0d 1f 4a 0a 20  20 20 20 fb 37 0d 1f 54  |.A$..J.    .7..T|
00003dc0  07 20 20 cd 0d 1f 5e 17  20 20 e7 62 61 73 65 25  |.  ...^.  .base%|
00003dd0  21 6f 66 66 73 65 74 25  3d 30 8c 0d 1f 68 18 20  |!offset%=0...h. |
00003de0  20 20 20 f2 64 6f 75 62  6c 65 28 6f 66 66 73 65  |   .double(offse|
00003df0  74 25 29 0d 1f 72 07 20  20 cc 0d 1f 7c 19 20 20  |t%)..r.  ...|.  |
00003e00  20 20 f2 61 64 64 72 65  73 73 28 6f 66 66 73 65  |  .address(offse|
00003e10  74 25 29 0d 1f 86 1b 20  20 20 20 6c 61 62 65 6c  |t%)....    label|
00003e20  24 28 61 64 64 72 65 73  73 25 29 3d 41 24 0d 1f  |$(address%)=A$..|
00003e30  90 17 20 20 20 20 f2 63  6f 64 65 28 61 64 64 72  |..    .code(addr|
00003e40  65 73 73 25 29 0d 1f 9a  07 20 20 cd 0d 1f a4 05  |ess%)....  .....|
00003e50  ed 0d 1f ae 12 f4 20 54  69 74 6c 65 20 73 74 72  |...... Title str|
00003e60  69 6e 67 0d 1f b8 0c e7  64 65 62 75 67 25 8c 0d  |ing.....debug%..|
00003e70  1f c2 08 20 20 fb 36 0d  1f cc 14 20 20 f1 22 54  |...  .6....  ."T|
00003e80  69 74 6c 65 53 74 72 69  6e 67 22 0d 1f d6 08 20  |itleString".... |
00003e90  20 fb 37 0d 1f e0 05 cd  0d 1f e1 09 20 20 f3 41  | .7.........  .A|
00003ea0  24 0d 1f ea 17 20 20 e7  62 61 73 65 25 21 6f 66  |$....  .base%!of|
00003eb0  66 73 65 74 25 3d 30 8c  0d 1f f4 18 20 20 20 20  |fset%=0.....    |
00003ec0  f2 64 6f 75 62 6c 65 28  6f 66 66 73 65 74 25 29  |.double(offset%)|
00003ed0  0d 1f fe 07 20 20 cc 0d  20 08 19 20 20 20 20 f2  |....  .. ..    .|
00003ee0  61 64 64 72 65 73 73 28  6f 66 66 73 65 74 25 29  |address(offset%)|
00003ef0  0d 20 1c 1b 20 20 20 20  6c 61 62 65 6c 24 28 61  |. ..    label$(a|
00003f00  64 64 72 65 73 73 25 29  3d 41 24 0d 20 26 1a 20  |ddress%)=A$. &. |
00003f10  20 20 20 f2 73 74 72 69  6e 67 30 28 61 64 64 72  |   .string0(addr|
00003f20  65 73 73 25 29 0d 20 30  07 20 20 cd 0d 20 3a 11  |ess%). 0.  .. :.|
00003f30  f4 20 48 65 6c 70 20 73  74 72 69 6e 67 0d 20 44  |. Help string. D|
00003f40  07 f3 41 24 0d 20 4e 0c  e7 64 65 62 75 67 25 8c  |..A$. N..debug%.|
00003f50  0d 20 58 08 20 20 fb 36  0d 20 62 09 20 20 f1 41  |. X.  .6. b.  .A|
00003f60  24 0d 20 6c 08 20 20 fb  37 0d 20 76 05 cd 0d 20  |$. l.  .7. v... |
00003f70  80 15 e7 62 61 73 65 25  21 6f 66 66 73 65 74 25  |...base%!offset%|
00003f80  3d 30 8c 0d 20 8a 16 20  20 f2 64 6f 75 62 6c 65  |=0.. ..  .double|
00003f90  28 6f 66 66 73 65 74 25  29 0d 20 94 05 cc 0d 20  |(offset%). .... |
00003fa0  9e 17 20 20 f2 61 64 64  72 65 73 73 28 6f 66 66  |..  .address(off|
00003fb0  73 65 74 25 29 0d 20 a8  19 20 20 6c 61 62 65 6c  |set%). ..  label|
00003fc0  24 28 61 64 64 72 65 73  73 25 29 3d 41 24 0d 20  |$(address%)=A$. |
00003fd0  b2 18 20 20 f2 73 74 72  69 6e 67 30 28 61 64 64  |..  .string0(add|
00003fe0  72 65 73 73 25 29 0d 20  bc 05 cd 0d 20 c6 24 f4  |ress%). .... .$.|
00003ff0  20 48 65 6c 70 20 61 6e  64 20 63 6f 6d 6d 61 6e  | Help and comman|
00004000  64 20 6b 65 79 77 6f 72  64 20 74 61 62 6c 65 0d  |d keyword table.|
00004010  20 d0 07 f3 41 24 0d 20  da 0c e7 64 65 62 75 67  | ...A$. ...debug|
00004020  25 8c 0d 20 e4 08 20 20  fb 36 0d 20 ee 09 20 20  |%.. ..  .6. ..  |
00004030  f1 41 24 0d 20 f8 08 20  20 fb 37 0d 21 02 05 cd  |.A$. ..  .7.!...|
00004040  0d 21 0c 15 e7 62 61 73  65 25 21 6f 66 66 73 65  |.!...base%!offse|
00004050  74 25 3d 30 8c 0d 21 16  16 20 20 f2 64 6f 75 62  |t%=0..!..  .doub|
00004060  6c 65 28 6f 66 66 73 65  74 25 29 0d 21 20 05 cc  |le(offset%).! ..|
00004070  0d 21 2a 17 20 20 f2 61  64 64 72 65 73 73 28 6f  |.!*.  .address(o|
00004080  66 66 73 65 74 25 29 0d  21 34 19 20 20 6c 61 62  |ffset%).!4.  lab|
00004090  65 6c 24 28 61 64 64 72  65 73 73 25 29 3d 41 24  |el$(address%)=A$|
000040a0  0d 21 3e 18 20 20 f2 6b  77 74 61 62 6c 65 28 61  |.!>.  .kwtable(a|
000040b0  64 64 72 65 73 73 25 29  0d 21 48 05 cd 0d 21 52  |ddress%).!H...!R|
000040c0  04 0d 21 5c 18 e7 74 79  70 65 25 28 6f 66 66 73  |..!\..type%(offs|
000040d0  65 74 25 29 3c 3e 30 8c  e1 0d 21 66 1b f4 20 53  |et%)<>0...!f.. S|
000040e0  57 49 20 63 68 75 6e 6b  20 62 61 73 65 20 6e 75  |WI chunk base nu|
000040f0  6d 62 65 72 0d 21 70 0c  e7 64 65 62 75 67 25 8c  |mber.!p..debug%.|
00004100  0d 21 7a 08 20 20 fb 36  0d 21 84 1b 20 20 f1 22  |.!z.  .6.!..  ."|
00004110  53 57 49 43 68 75 6e 6b  42 61 73 65 4e 75 6d 62  |SWIChunkBaseNumb|
00004120  65 72 22 0d 21 8e 08 20  20 fb 37 0d 21 98 05 cd  |er".!..  .7.!...|
00004130  0d 21 a2 16 e7 62 61 73  65 25 21 6f 66 66 73 65  |.!...base%!offse|
00004140  74 25 3d 30 8c e1 0d 21  ac 2d e7 28 28 62 61 73  |t%=0...!.-.((bas|
00004150  65 25 21 6f 66 66 73 65  74 25 29 80 26 46 46 30  |e%!offset%).&FF0|
00004160  30 30 30 33 46 29 3c 3e  26 30 30 30 30 30 30 30  |0003F)<>&0000000|
00004170  30 8c e1 0d 21 b6 31 e7  28 28 62 61 73 65 25 21  |0...!.1.((base%!|
00004180  28 6f 66 66 73 65 74 25  2b 34 29 29 80 26 46 43  |(offset%+4)).&FC|
00004190  30 30 30 30 30 33 29 3c  3e 26 30 30 30 30 30 30  |000003)<>&000000|
000041a0  30 30 8c e1 0d 21 c0 14  f2 64 6f 75 62 6c 65 28  |00...!...double(|
000041b0  6f 66 66 73 65 74 25 29  0d 21 ca 04 0d 21 d4 18  |offset%).!...!..|
000041c0  f4 20 53 57 49 20 64 65  63 6f 64 69 6e 67 20 74  |. SWI decoding t|
000041d0  61 62 6c 65 0d 21 de 0f  6f 66 66 73 65 74 25 3d  |able.!..offset%=|
000041e0  26 32 34 0d 21 e8 1c e7  28 62 61 73 65 25 21 6f  |&24.!...(base%!o|
000041f0  66 66 73 65 74 25 3c 62  79 74 65 73 25 29 8c 0d  |ffset%<bytes%)..|
00004200  21 f2 0e 20 20 e7 64 65  62 75 67 25 8c 0d 21 fc  |!..  .debug%..!.|
00004210  0a 20 20 20 20 fb 36 0d  22 06 1b 20 20 20 20 f1  |.    .6."..    .|
00004220  22 53 57 49 44 65 63 6f  64 69 6e 67 54 61 62 6c  |"SWIDecodingTabl|
00004230  65 22 0d 22 10 0a 20 20  20 20 fb 37 0d 22 1a 07  |e"."..    .7."..|
00004240  20 20 cd 0d 22 24 17 20  20 e7 62 61 73 65 25 21  |  .."$.  .base%!|
00004250  6f 66 66 73 65 74 25 3d  30 8c 0d 22 2e 18 20 20  |offset%=0.."..  |
00004260  20 20 f2 64 6f 75 62 6c  65 28 6f 66 66 73 65 74  |  .double(offset|
00004270  25 29 0d 22 38 07 20 20  cc 0d 22 42 19 20 20 20  |%)."8.  .."B.   |
00004280  20 f2 61 64 64 72 65 73  73 28 6f 66 66 73 65 74  | .address(offset|
00004290  25 29 0d 22 4c 29 20 20  20 20 6c 61 62 65 6c 24  |%)."L)    label$|
000042a0  28 61 64 64 72 65 73 73  25 29 3d 22 53 57 49 44  |(address%)="SWID|
000042b0  65 63 6f 64 65 54 61 62  6c 65 22 0d 22 56 1b 20  |ecodeTable"."V. |
000042c0  20 20 20 f2 73 77 69 74  61 62 6c 65 28 61 64 64  |   .switable(add|
000042d0  72 65 73 73 25 29 0d 22  60 07 20 20 cd 0d 22 6a  |ress%)."`.  .."j|
000042e0  05 cd 0d 22 74 04 0d 22  7e 16 f4 20 53 57 49 20  |..."t.."~.. SWI |
000042f0  68 61 6e 64 6c 65 72 20  63 6f 64 65 0d 22 88 0f  |handler code."..|
00004300  6f 66 66 73 65 74 25 3d  26 32 30 0d 22 92 0c e7  |offset%=&20."...|
00004310  64 65 62 75 67 25 8c 0d  22 9c 08 20 20 fb 36 0d  |debug%.."..  .6.|
00004320  22 a6 17 20 20 f1 22 53  57 49 48 61 6e 64 6c 65  |"..  ."SWIHandle|
00004330  72 43 6f 64 65 22 0d 22  b0 08 20 20 fb 37 0d 22  |rCode"."..  .7."|
00004340  ba 05 cd 0d 22 c4 15 e7  62 61 73 65 25 21 6f 66  |...."...base%!of|
00004350  66 73 65 74 25 3d 30 8c  0d 22 ce 16 20 20 f2 64  |fset%=0.."..  .d|
00004360  6f 75 62 6c 65 28 6f 66  66 73 65 74 25 29 0d 22  |ouble(offset%)."|
00004370  d8 05 cc 0d 22 e2 17 20  20 f2 61 64 64 72 65 73  |...."..  .addres|
00004380  73 28 6f 66 66 73 65 74  25 29 0d 22 ec 27 20 20  |s(offset%).".'  |
00004390  6c 61 62 65 6c 24 28 61  64 64 72 65 73 73 25 29  |label$(address%)|
000043a0  3d 22 53 57 49 48 61 6e  64 6c 65 72 43 6f 64 65  |="SWIHandlerCode|
000043b0  22 0d 22 f6 1b 20 20 f2  73 77 69 68 61 6e 64 6c  |"."..  .swihandl|
000043c0  65 72 28 61 64 64 72 65  73 73 25 29 0d 23 00 05  |er(address%).#..|
000043d0  cd 0d 23 0a 04 0d 23 14  17 f4 20 53 57 49 20 64  |..#...#... SWI d|
000043e0  65 63 6f 64 69 6e 67 20  63 6f 64 65 0d 23 1e 0f  |ecoding code.#..|
000043f0  6f 66 66 73 65 74 25 3d  26 32 38 0d 23 28 0c e7  |offset%=&28.#(..|
00004400  64 65 62 75 67 25 8c 0d  23 32 08 20 20 fb 36 0d  |debug%..#2.  .6.|
00004410  23 3c 18 20 20 f1 22 53  57 49 44 65 63 6f 64 69  |#<.  ."SWIDecodi|
00004420  6e 67 43 6f 64 65 22 0d  23 46 08 20 20 fb 37 0d  |ngCode".#F.  .7.|
00004430  23 50 05 cd 0d 23 5a 15  e7 62 61 73 65 25 21 6f  |#P...#Z..base%!o|
00004440  66 66 73 65 74 25 3d 30  8c 0d 23 64 16 20 20 f2  |ffset%=0..#d.  .|
00004450  64 6f 75 62 6c 65 28 6f  66 66 73 65 74 25 29 0d  |double(offset%).|
00004460  23 6e 05 cc 0d 23 78 1c  20 20 e7 62 61 73 65 25  |#n...#x.  .base%|
00004470  21 6f 66 66 73 65 74 25  3c 62 79 74 65 73 25 8c  |!offset%<bytes%.|
00004480  0d 23 82 19 20 20 20 20  f2 61 64 64 72 65 73 73  |.#..    .address|
00004490  28 6f 66 66 73 65 74 25  29 0d 23 8c 28 20 20 20  |(offset%).#.(   |
000044a0  20 6c 61 62 65 6c 24 28  61 64 64 72 65 73 73 25  | label$(address%|
000044b0  29 3d 22 53 57 49 44 65  63 6f 64 65 43 6f 64 65  |)="SWIDecodeCode|
000044c0  22 0d 23 96 17 20 20 20  20 f2 63 6f 64 65 28 61  |".#..    .code(a|
000044d0  64 64 72 65 73 73 25 29  0d 23 a0 07 20 20 cd 0d  |ddress%).#..  ..|
000044e0  23 aa 05 cd 0d 23 b4 05  e1 0d 23 be 04 0d 23 c8  |#....#....#...#.|
000044f0  0a dd f2 69 6e 69 74 0d  23 d2 0c ee 85 f2 65 72  |...init.#.....er|
00004500  72 6f 72 0d 23 dc 0c d2  3d 26 33 30 30 30 30 0d  |ror.#...=&30000.|
00004510  23 e6 13 76 65 72 73 69  6f 6e 24 3d 22 32 2e 30  |#..version$="2.0|
00004520  30 22 0d 23 f0 0c 73 74  61 67 65 25 3d 30 0d 23  |0".#..stage%=0.#|
00004530  fa 33 64 65 62 75 67 25  3d b9 3a f4 20 50 72 69  |.3debug%=.:. Pri|
00004540  6e 74 73 20 64 65 62 75  67 67 69 6e 67 20 69 6e  |nts debugging in|
00004550  66 6f 72 6d 61 74 69 6f  6e 20 69 6e 20 63 79 61  |formation in cya|
00004560  6e 0d 24 04 3d 66 6c 6f  70 25 3d a3 3a f4 20 41  |n.$.=flop%=.:. A|
00004570  63 63 65 70 74 20 66 6c  6f 61 74 69 6e 67 2d 70  |ccept floating-p|
00004580  6f 69 6e 74 20 6f 70 63  6f 64 65 73 20 28 6e 6f  |oint opcodes (no|
00004590  74 20 69 6d 70 6c 65 6d  65 6e 74 65 64 29 0d 24  |t implemented).$|
000045a0  0e 31 72 65 61 64 73 63  72 69 70 74 25 3d b9 3a  |.1readscript%=.:|
000045b0  f4 20 52 65 61 64 20 75  73 65 72 20 72 65 73 70  |. Read user resp|
000045c0  6f 6e 73 65 73 20 66 72  6f 6d 20 66 69 6c 65 0d  |onses from file.|
000045d0  24 18 31 77 72 69 74 65  73 63 72 69 70 74 25 3d  |$.1writescript%=|
000045e0  b9 3a f4 20 57 72 69 74  65 20 75 73 65 72 20 72  |.:. Write user r|
000045f0  65 73 70 6f 6e 73 65 73  20 74 6f 20 66 69 6c 65  |esponses to file|
00004600  0d 24 22 4b f4 49 46 72  65 61 64 73 63 72 69 70  |.$"K.IFreadscrip|
00004610  74 25 41 4e 44 77 72 69  74 65 73 63 72 69 70 74  |t%ANDwritescript|
00004620  25 54 48 45 4e 45 52 52  4f 52 32 35 35 2c 22 43  |%THENERROR255,"C|
00004630  61 6e 27 74 20 72 65 61  64 20 61 6e 64 20 77 72  |an't read and wr|
00004640  69 74 65 20 73 63 72 69  70 74 22 0d 24 2c 10 62  |ite script".$,.b|
00004650  61 73 65 25 3d 26 31 30  30 30 30 0d 24 36 35 f4  |ase%=&10000.$65.|
00004660  4d 4f 44 45 32 30 3a 52  45 4d 20 49 66 20 79 6f  |MODE20:REM If yo|
00004670  75 20 68 61 76 65 20 6e  6f 20 6d 75 6c 74 69 73  |u have no multis|
00004680  79 6e 63 2c 20 74 72 79  20 4d 4f 44 45 20 31 32  |ync, try MODE 12|
00004690  0d 24 40 2e eb 31 32 3a  f4 20 49 66 20 79 6f 75  |.$@..12:. If you|
000046a0  20 68 61 76 65 20 61 20  6d 75 6c 74 69 73 79 6e  | have a multisyn|
000046b0  63 2c 20 74 72 79 20 4d  4f 44 45 20 32 30 0d 24  |c, try MODE 20.$|
000046c0  4a 19 e8 22 66 69 6c 65  6e 61 6d 65 22 2c 66 69  |J.."filename",fi|
000046d0  6c 65 6e 61 6d 65 24 0d  24 54 3e c8 99 22 4f 53  |lename$.$T>.."OS|
000046e0  5f 46 69 6c 65 22 2c 31  32 2c 66 69 6c 65 6e 61  |_File",12,filena|
000046f0  6d 65 24 2c 62 61 73 65  25 2c 30 2c 22 4f 52 49  |me$,base%,0,"ORI|
00004700  47 49 4e 41 4c 53 2e 22  b8 2c 2c 2c 2c 66 69 6c  |GINALS.".,,,,fil|
00004710  65 6c 65 6e 25 0d 24 5e  1e e7 72 65 61 64 73 63  |elen%.$^..readsc|
00004720  72 69 70 74 25 84 77 72  69 74 65 73 63 72 69 70  |ript%.writescrip|
00004730  74 25 8c 0d 24 68 2f 20  20 c8 99 22 4f 53 5f 46  |t%..$h/  .."OS_F|
00004740  69 6c 65 22 2c 31 37 2c  22 53 43 52 49 50 54 53  |ile",17,"SCRIPTS|
00004750  2e 22 2b 66 69 6c 65 6e  61 6d 65 24 b8 74 79 70  |."+filename$.typ|
00004760  65 25 0d 24 72 3b 20 20  e7 74 79 70 65 25 3d 30  |e%.$r;  .type%=0|
00004770  8c c8 99 22 4f 53 5f 46  69 6c 65 22 2c 31 31 2c  |..."OS_File",11,|
00004780  22 53 43 52 49 50 54 53  2e 22 2b 66 69 6c 65 6e  |"SCRIPTS."+filen|
00004790  61 6d 65 24 2c 26 46 46  46 2c 30 2c 30 0d 24 7c  |ame$,&FFF,0,0.$||
000047a0  25 20 20 73 63 72 69 70  74 25 3d ad 28 22 53 43  |%  script%=.("SC|
000047b0  52 49 50 54 53 2e 22 2b  66 69 6c 65 6e 61 6d 65  |RIPTS."+filename|
000047c0  24 29 0d 24 86 05 cd 0d  24 90 3e f4 20 46 69 78  |$).$....$.>. Fix|
000047d0  20 66 6f 72 20 50 6f 64  75 6c 65 20 21 26 31 30  | for Podule !&10|
000047e0  37 43 38 3d 26 38 31 34  3a 52 45 4d 20 40 40 40  |7C8=&814:REM @@@|
000047f0  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40  |@@@@@@@@@@@@@@@@|
00004800  40 40 40 40 40 0d 24 9a  15 62 79 74 65 73 25 3d  |@@@@@.$..bytes%=|
00004810  66 69 6c 65 6c 65 6e 25  2d 31 0d 24 a4 1b 77 6f  |filelen%-1.$..wo|
00004820  72 64 73 25 3d 28 28 62  79 74 65 73 25 2b 31 29  |rds%=((bytes%+1)|
00004830  81 34 29 2d 31 0d 24 ae  45 de 6c 61 62 65 6c 24  |.4)-1.$.E.label$|
00004840  28 62 79 74 65 73 25 29  2c 74 79 70 65 25 28 62  |(bytes%),type%(b|
00004850  79 74 65 73 25 2b 31 29  2c 62 75 66 66 65 72 25  |ytes%+1),buffer%|
00004860  26 31 30 30 2c 73 77 69  24 28 36 33 29 2c 73 74  |&100,swi$(63),st|
00004870  72 62 75 66 25 26 31 30  30 30 0d 24 b8 16 62 6d  |rbuf%&1000.$..bm|
00004880  61 73 6b 25 3d 28 25 31  31 31 31 29 3c 3c 32 34  |ask%=(%1111)<<24|
00004890  0d 24 c2 12 62 25 3d 28  25 31 30 31 30 29 3c 3c  |.$..b%=(%1010)<<|
000048a0  32 34 0d 24 cc 13 62 6c  25 3d 28 25 31 30 31 31  |24.$..bl%=(%1011|
000048b0  29 3c 3c 32 34 0d 24 d6  21 65 6e 64 25 3d 28 25  |)<<24.$.!end%=(%|
000048c0  31 31 31 30 31 30 30 30  30 30 30 31 30 30 30 30  |1110100000010000|
000048d0  31 29 3c 3c 31 35 0d 24  e0 0f 65 6d 61 73 6b 25  |1)<<15.$..emask%|
000048e0  3d 65 6e 64 25 0d 24 ea  14 73 6d 61 73 6b 25 3d  |=end%.$..smask%=|
000048f0  26 30 30 30 44 46 46 46  46 0d 24 f4 14 73 77 69  |&000DFFFF.$..swi|
00004900  25 3d 28 25 31 31 31 31  29 3c 3c 32 34 0d 24 fe  |%=(%1111)<<24.$.|
00004910  05 e1 0d 25 08 04 0d 25  12 16 dd f2 6b 77 74 61  |...%...%....kwta|
00004920  62 6c 65 28 6f 66 66 73  65 74 25 29 0d 25 1c 17  |ble(offset%).%..|
00004930  ea 6b 65 79 77 6f 72 64  24 2c 68 65 6c 70 63 6f  |.keyword$,helpco|
00004940  64 65 25 0d 25 26 05 f5  0d 25 30 11 20 20 68 65  |de%.%&...%0.  he|
00004950  6c 70 63 6f 64 65 25 3d  a3 0d 25 3a 17 20 20 f2  |lpcode%=..%:.  .|
00004960  73 74 72 69 6e 67 30 28  6f 66 66 73 65 74 25 29  |string0(offset%)|
00004970  0d 25 44 16 20 20 6b 65  79 77 6f 72 64 24 3d 73  |.%D.  keyword$=s|
00004980  74 72 69 6e 67 24 0d 25  4e 15 20 20 f2 61 6c 69  |tring$.%N.  .ali|
00004990  67 6e 28 6f 66 66 73 65  74 25 29 0d 25 58 10 20  |gn(offset%).%X. |
000049a0  20 6f 66 66 73 65 74 25  2b 3d 34 0d 25 62 16 20  | offset%+=4.%b. |
000049b0  20 f2 64 6f 75 62 6c 65  28 6f 66 66 73 65 74 25  | .double(offset%|
000049c0  29 0d 25 6c 3f 20 20 e7  28 64 6f 75 62 6c 65 25  |).%l?  .(double%|
000049d0  80 26 34 30 30 30 30 30  30 30 29 3d 26 34 30 30  |.&40000000)=&400|
000049e0  30 30 30 30 30 8c 6b 65  79 77 6f 72 64 24 3d 22  |00000.keyword$="|
000049f0  43 6f 6e 66 69 67 22 2b  6b 65 79 77 6f 72 64 24  |Config"+keyword$|
00004a00  0d 25 76 30 20 20 e7 28  64 6f 75 62 6c 65 25 80  |.%v0  .(double%.|
00004a10  26 32 30 30 30 30 30 30  30 29 3d 26 32 30 30 30  |&20000000)=&2000|
00004a20  30 30 30 30 8c 68 65 6c  70 63 6f 64 65 25 3d b9  |0000.helpcode%=.|
00004a30  0d 25 80 10 20 20 6f 66  66 73 65 74 25 2d 3d 38  |.%..  offset%-=8|
00004a40  0d 25 8a 17 20 20 e7 62  61 73 65 25 21 6f 66 66  |.%..  .base%!off|
00004a50  73 65 74 25 3d 30 8c 0d  25 94 18 20 20 20 20 f2  |set%=0..%..    .|
00004a60  64 6f 75 62 6c 65 28 6f  66 66 73 65 74 25 29 0d  |double(offset%).|
00004a70  25 9e 07 20 20 cc 0d 25  a8 2e 20 20 20 20 e7 62  |%..  ..%..    .b|
00004a80  61 73 65 25 21 6f 66 66  73 65 74 25 3e 62 79 74  |ase%!offset%>byt|
00004a90  65 73 25 84 62 61 73 65  25 21 6f 66 66 73 65 74  |es%.base%!offset|
00004aa0  25 3c 30 8c 0d 25 b2 1a  20 20 20 20 20 20 f2 64  |%<0..%..      .d|
00004ab0  6f 75 62 6c 65 28 6f 66  66 73 65 74 25 29 0d 25  |ouble(offset%).%|
00004ac0  bc 09 20 20 20 20 cc 0d  25 c6 1b 20 20 20 20 20  |..    ..%..     |
00004ad0  20 f2 61 64 64 72 65 73  73 28 6f 66 66 73 65 74  | .address(offset|
00004ae0  25 29 0d 25 d0 2a 20 20  20 20 20 20 6c 61 62 65  |%).%.*      labe|
00004af0  6c 24 28 61 64 64 72 65  73 73 25 29 3d 6b 65 79  |l$(address%)=key|
00004b00  77 6f 72 64 24 2b 22 43  6f 64 65 22 0d 25 da 19  |word$+"Code".%..|
00004b10  20 20 20 20 20 20 f2 63  6f 64 65 28 61 64 64 72  |      .code(addr|
00004b20  65 73 73 25 29 0d 25 e4  09 20 20 20 20 cd 0d 25  |ess%).%..    ..%|
00004b30  ee 07 20 20 cd 0d 25 f8  10 20 20 6f 66 66 73 65  |..  ..%..  offse|
00004b40  74 25 2b 3d 34 0d 26 02  17 20 20 e7 62 61 73 65  |t%+=4.&..  .base|
00004b50  25 21 6f 66 66 73 65 74  25 3d 30 8c 0d 26 0c 18  |%!offset%=0..&..|
00004b60  20 20 20 20 f2 64 6f 75  62 6c 65 28 6f 66 66 73  |    .double(offs|
00004b70  65 74 25 29 0d 26 16 07  20 20 cc 0d 26 20 19 20  |et%).&..  ..& . |
00004b80  20 20 20 f2 61 64 64 72  65 73 73 28 6f 66 66 73  |   .address(offs|
00004b90  65 74 25 29 0d 26 2a 2a  20 20 20 20 6c 61 62 65  |et%).&**    labe|
00004ba0  6c 24 28 61 64 64 72 65  73 73 25 29 3d 6b 65 79  |l$(address%)=key|
00004bb0  77 6f 72 64 24 2b 22 53  79 6e 74 61 78 22 0d 26  |word$+"Syntax".&|
00004bc0  34 1a 20 20 20 20 f2 73  74 72 69 6e 67 41 28 61  |4.    .stringA(a|
00004bd0  64 64 72 65 73 73 25 29  0d 26 3e 07 20 20 cd 0d  |ddress%).&>.  ..|
00004be0  26 48 17 20 20 e7 62 61  73 65 25 21 6f 66 66 73  |&H.  .base%!offs|
00004bf0  65 74 25 3d 30 8c 0d 26  52 18 20 20 20 20 f2 64  |et%=0..&R.    .d|
00004c00  6f 75 62 6c 65 28 6f 66  66 73 65 74 25 29 0d 26  |ouble(offset%).&|
00004c10  5c 07 20 20 cc 0d 26 66  19 20 20 20 20 f2 61 64  |\.  ..&f.    .ad|
00004c20  64 72 65 73 73 28 6f 66  66 73 65 74 25 29 0d 26  |dress(offset%).&|
00004c30  70 28 20 20 20 20 6c 61  62 65 6c 24 28 61 64 64  |p(    label$(add|
00004c40  72 65 73 73 25 29 3d 6b  65 79 77 6f 72 64 24 2b  |ress%)=keyword$+|
00004c50  22 48 65 6c 70 22 0d 26  7a 13 20 20 20 20 e7 68  |"Help".&z.    .h|
00004c60  65 6c 70 63 6f 64 65 25  8c 0d 26 84 19 20 20 20  |elpcode%..&..   |
00004c70  20 20 20 f2 63 6f 64 65  28 61 64 64 72 65 73 73  |   .code(address|
00004c80  25 29 0d 26 8e 09 20 20  20 20 cc 0d 26 98 1c 20  |%).&..    ..&.. |
00004c90  20 20 20 20 20 f2 73 74  72 69 6e 67 41 28 61 64  |     .stringA(ad|
00004ca0  64 72 65 73 73 25 29 0d  26 a2 09 20 20 20 20 cd  |dress%).&..    .|
00004cb0  0d 26 ac 07 20 20 cd 0d  26 b6 14 fd 62 61 73 65  |.&..  ..&...base|
00004cc0  25 3f 6f 66 66 73 65 74  25 3d 30 0d 26 c0 12 f2  |%?offset%=0.&...|
00004cd0  62 79 74 65 28 6f 66 66  73 65 74 25 29 0d 26 ca  |byte(offset%).&.|
00004ce0  05 e1 0d 26 d4 04 0d 26  de 0f dd f2 6c 6f 61 64  |...&...&....load|
00004cf0  74 79 70 65 73 0d 26 e8  0a ea 46 25 2c 49 25 0d  |types.&...F%,I%.|
00004d00  26 f2 11 46 25 3d 8e 28  22 54 79 70 65 73 22 29  |&..F%=.("Types")|
00004d10  0d 26 fc 10 e3 49 25 3d  30 b8 62 79 74 65 73 25  |.&...I%=0.bytes%|
00004d20  0d 27 06 14 20 20 74 79  70 65 25 28 49 25 29 3d  |.'..  type%(I%)=|
00004d30  9a 23 46 25 0d 27 10 23  20 20 e7 74 79 70 65 25  |.#F%.'.#  .type%|
00004d40  28 49 25 29 3e 31 32 37  8c 74 79 70 65 25 28 49  |(I%)>127.type%(I|
00004d50  25 29 2d 3d 32 35 36 0d  27 1a 05 ed 0d 27 24 08  |%)-=256.'....'$.|
00004d60  d9 23 46 25 0d 27 2e 12  46 25 3d 8e 28 22 4c 61  |.#F%.'..F%=.("La|
00004d70  62 65 6c 73 22 29 0d 27  38 10 e3 49 25 3d 30 b8  |bels").'8..I%=0.|
00004d80  62 79 74 65 73 25 0d 27  42 15 20 20 e8 23 46 25  |bytes%.'B.  .#F%|
00004d90  2c 6c 61 62 65 6c 24 28  49 25 29 0d 27 4c 05 ed  |,label$(I%).'L..|
00004da0  0d 27 56 08 d9 23 46 25  0d 27 60 05 e1 0d 27 6a  |.'V..#F%.'`...'j|
00004db0  04 0d 27 74 0b dd f2 6c  73 65 78 70 0d 27 7e 0a  |..'t...lsexp.'~.|
00004dc0  ea 49 25 2c 4a 25 0d 27  88 0b e3 49 25 3d 30 b8  |.I%,J%.'...I%=0.|
00004dd0  33 0d 27 92 19 20 20 74  79 70 65 25 28 6f 66 66  |3.'..  type%(off|
00004de0  73 65 74 25 2b 49 25 29  3d 35 0d 27 9c 05 ed 0d  |set%+I%)=5.'....|
00004df0  27 a6 14 49 25 3d a7 69  6e 73 74 24 2c 22 23 22  |'..I%=.inst$,"#"|
00004e00  29 2b 31 0d 27 b0 15 4a  25 3d a7 69 6e 73 74 24  |)+1.'..J%=.inst$|
00004e10  2c 22 5d 22 29 2d 49 25  0d 27 ba 24 64 65 73 74  |,"]")-I%.'.$dest|
00004e20  25 3d a0 28 c1 69 6e 73  74 24 2c 49 25 2c 4a 25  |%=.(.inst$,I%,J%|
00004e30  29 29 2b 6f 66 66 73 65  74 25 2b 38 0d 27 c4 31  |))+offset%+8.'.1|
00004e40  e7 6c 61 62 65 6c 24 28  64 65 73 74 25 29 3d 22  |.label$(dest%)="|
00004e50  22 8c 6c 61 62 65 6c 24  28 64 65 73 74 25 29 3d  |".label$(dest%)=|
00004e60  22 78 22 2b c3 7e 28 64  65 73 74 25 29 0d 27 ce  |"x"+.~(dest%).'.|
00004e70  14 e7 74 79 70 65 25 28  64 65 73 74 25 29 3d 30  |..type%(dest%)=0|
00004e80  8c 0d 27 d8 0e 20 20 e7  64 65 62 75 67 25 8c 0d  |..'..  .debug%..|
00004e90  27 e2 0a 20 20 20 20 fb  36 0d 27 ec 19 20 20 20  |'..    .6.'..   |
00004ea0  20 f1 22 4c 53 65 78 70  22 2c 7e 6f 66 66 73 65  | ."LSexp",~offse|
00004eb0  74 25 0d 27 f6 0a 20 20  20 20 fb 37 0d 28 00 07  |t%.'..    .7.(..|
00004ec0  20 20 cd 0d 28 0a 1f 20  20 f2 77 68 61 74 73 74  |  ..(..  .whatst|
00004ed0  68 69 73 28 6f 66 66 73  65 74 25 2c 64 65 73 74  |his(offset%,dest|
00004ee0  25 29 0d 28 14 0e 20 20  c8 8e 74 79 70 65 25 ca  |%).(..  ..type%.|
00004ef0  0d 28 1e 1d 20 20 20 20  c9 2d 34 3a f2 73 74 72  |.(..    .-4:.str|
00004f00  69 6e 67 41 28 6f 66 66  73 65 74 25 29 0d 28 28  |ingA(offset%).((|
00004f10  28 20 20 20 20 c9 2d 33  3a f2 70 61 64 64 65 64  |(    .-3:.padded|
00004f20  73 74 72 69 6e 67 28 64  65 73 74 25 2c 6e 75 6d  |string(dest%,num|
00004f30  62 65 72 25 29 0d 28 32  1c 20 20 20 20 c9 2d 32  |ber%).(2.    .-2|
00004f40  3a f2 73 74 72 69 6e 67  43 52 28 64 65 73 74 25  |:.stringCR(dest%|
00004f50  29 0d 28 3c 1b 20 20 20  20 c9 2d 31 3a f2 73 74  |).(<.    .-1:.st|
00004f60  72 69 6e 67 30 28 64 65  73 74 25 29 0d 28 46 0c  |ring0(dest%).(F.|
00004f70  20 20 20 20 c9 20 30 3a  0d 28 50 18 20 20 20 20  |    . 0:.(P.    |
00004f80  c9 20 31 3a f2 62 79 74  65 28 64 65 73 74 25 29  |. 1:.byte(dest%)|
00004f90  0d 28 5a 18 20 20 20 20  c9 20 32 3a f2 77 6f 72  |.(Z.    . 2:.wor|
00004fa0  64 28 64 65 73 74 25 29  0d 28 64 1a 20 20 20 20  |d(dest%).(d.    |
00004fb0  c9 20 34 3a f2 64 6f 75  62 6c 65 28 64 65 73 74  |. 4:.double(dest|
00004fc0  25 29 0d 28 6e 18 20 20  20 20 c9 20 35 3a f2 63  |%).(n.    . 5:.c|
00004fd0  6f 64 65 28 64 65 73 74  25 29 0d 28 78 07 20 20  |ode(dest%).(x.  |
00004fe0  cb 0d 28 82 05 cd 0d 28  8c 0e 6f 66 66 73 65 74  |..(....(..offset|
00004ff0  25 2b 3d 34 0d 28 96 05  e1 0d 28 a0 04 0d 28 aa  |%+=4.(....(...(.|
00005000  22 dd f2 70 61 64 64 65  64 73 74 72 69 6e 67 28  |"..paddedstring(|
00005010  f8 20 6f 66 66 73 65 74  25 2c 6c 65 6e 25 29 0d  |. offset%,len%).|
00005020  28 b4 07 ea 49 25 0d 28  be 15 c8 8e 74 79 70 65  |(...I%.(....type|
00005030  25 28 6f 66 66 73 65 74  25 29 ca 0d 28 c8 0a 20  |%(offset%)..(.. |
00005040  20 c9 20 30 3a 0d 28 d2  12 20 20 c9 2d 33 3a f4  | . 0:.(..  .-3:.|
00005050  45 4e 44 50 52 4f 43 0d  28 dc 25 20 20 7f 3a 85  |ENDPROC.(.%  .:.|
00005060  32 35 35 2c 22 45 78 70  65 63 74 69 6e 67 20 74  |255,"Expecting t|
00005070  79 70 65 20 2d 33 20 6f  72 20 30 22 0d 28 e6 05  |ype -3 or 0".(..|
00005080  cb 0d 28 f0 0e e3 49 25  3d 31 b8 6c 65 6e 25 0d  |..(...I%=1.len%.|
00005090  28 fa 17 20 20 74 79 70  65 25 28 6f 66 66 73 65  |(..  type%(offse|
000050a0  74 25 29 3d 2d 33 0d 29  04 10 20 20 6f 66 66 73  |t%)=-3.)..  offs|
000050b0  65 74 25 2b 3d 31 0d 29  0e 05 ed 0d 29 18 05 e1  |et%+=1.)....)...|
000050c0  0d 29 22 04 0d 29 2c 0f  dd f2 73 61 76 65 74 79  |.)"..),...savety|
000050d0  70 65 73 0d 29 36 0a ea  46 25 2c 49 25 0d 29 40  |pes.)6..F%,I%.)@|
000050e0  11 46 25 3d ae 28 22 54  79 70 65 73 22 29 0d 29  |.F%=.("Types").)|
000050f0  4a 10 e3 49 25 3d 30 b8  62 79 74 65 73 25 0d 29  |J..I%=0.bytes%.)|
00005100  54 14 20 20 d5 23 46 25  2c 74 79 70 65 25 28 49  |T.  .#F%,type%(I|
00005110  25 29 0d 29 5e 05 ed 0d  29 68 08 d9 23 46 25 0d  |%).)^...)h..#F%.|
00005120  29 72 12 46 25 3d ae 28  22 4c 61 62 65 6c 73 22  |)r.F%=.("Labels"|
00005130  29 0d 29 7c 10 e3 49 25  3d 30 b8 62 79 74 65 73  |).)|..I%=0.bytes|
00005140  25 0d 29 86 15 20 20 f1  23 46 25 2c 6c 61 62 65  |%.)..  .#F%,labe|
00005150  6c 24 28 49 25 29 0d 29  90 05 ed 0d 29 9a 08 d9  |l$(I%).)....)...|
00005160  23 46 25 0d 29 a4 05 e1  0d 29 ae 04 0d 29 b8 18  |#F%.)....)...)..|
00005170  dd f2 73 74 72 69 6e 67  30 28 f8 20 6f 66 66 73  |..string0(. offs|
00005180  65 74 25 29 0d 29 c2 15  c8 8e 74 79 70 65 25 28  |et%).)....type%(|
00005190  6f 66 66 73 65 74 25 29  ca 0d 29 cc 0a 20 20 c9  |offset%)..)..  .|
000051a0  20 30 3a 0d 29 d6 12 20  20 c9 2d 31 3a f4 45 4e  | 0:.)..  .-1:.EN|
000051b0  44 50 52 4f 43 0d 29 e0  25 20 20 7f 3a 85 32 35  |DPROC.).%  .:.25|
000051c0  35 2c 22 45 78 70 65 63  74 69 6e 67 20 74 79 70  |5,"Expecting typ|
000051d0  65 20 2d 31 20 6f 72 20  30 22 0d 29 ea 05 cb 0d  |e -1 or 0".)....|
000051e0  29 f4 0e 73 74 72 69 6e  67 24 3d 22 22 0d 29 fe  |)..string$="".).|
000051f0  16 c8 95 62 61 73 65 25  3f 6f 66 66 73 65 74 25  |...base%?offset%|
00005200  3c 3e 30 0d 2a 08 2d 20  20 e7 a9 73 74 72 69 6e  |<>0.*.-  ..strin|
00005210  67 24 3c 32 35 35 8c 73  74 72 69 6e 67 24 2b 3d  |g$<255.string$+=|
00005220  bd 28 62 61 73 65 25 3f  6f 66 66 73 65 74 25 29  |.(base%?offset%)|
00005230  0d 2a 12 17 20 20 74 79  70 65 25 28 6f 66 66 73  |.*..  type%(offs|
00005240  65 74 25 29 3d 2d 31 0d  2a 1c 10 20 20 6f 66 66  |et%)=-1.*..  off|
00005250  73 65 74 25 2b 3d 31 0d  2a 26 05 ce 0d 2a 30 15  |set%+=1.*&...*0.|
00005260  74 79 70 65 25 28 6f 66  66 73 65 74 25 29 3d 2d  |type%(offset%)=-|
00005270  31 0d 2a 3a 0e 6f 66 66  73 65 74 25 2b 3d 31 0d  |1.*:.offset%+=1.|
00005280  2a 44 05 e1 0d 2a 4e 04  0d 2a 58 18 dd f2 73 74  |*D...*N..*X...st|
00005290  72 69 6e 67 41 28 f8 20  6f 66 66 73 65 74 25 29  |ringA(. offset%)|
000052a0  0d 2a 62 15 c8 8e 74 79  70 65 25 28 6f 66 66 73  |.*b...type%(offs|
000052b0  65 74 25 29 ca 0d 2a 6c  0a 20 20 c9 20 30 3a 0d  |et%)..*l.  . 0:.|
000052c0  2a 76 0b 20 20 c9 2d 31  3a e1 0d 2a 80 25 20 20  |*v.  .-1:..*.%  |
000052d0  7f 3a 85 32 35 35 2c 22  45 78 70 65 63 74 69 6e  |.:.255,"Expectin|
000052e0  67 20 74 79 70 65 20 2d  31 20 6f 72 20 30 22 0d  |g type -1 or 0".|
000052f0  2a 8a 05 cb 0d 2a 94 16  c8 95 62 61 73 65 25 3f  |*....*....base%?|
00005300  6f 66 66 73 65 74 25 3c  3e 30 0d 2a 9e 17 20 20  |offset%<>0.*..  |
00005310  74 79 70 65 25 28 6f 66  66 73 65 74 25 29 3d 2d  |type%(offset%)=-|
00005320  31 0d 2a a8 18 20 20 e7  62 61 73 65 25 3f 6f 66  |1.*..  .base%?of|
00005330  66 73 65 74 25 3d 32 37  8c 0d 2a b2 12 20 20 20  |fset%=27..*..   |
00005340  20 6f 66 66 73 65 74 25  2b 3d 31 0d 2a bc 19 20  | offset%+=1.*.. |
00005350  20 20 20 74 79 70 65 25  28 6f 66 66 73 65 74 25  |   type%(offset%|
00005360  29 3d 2d 31 0d 2a c6 07  20 20 cd 0d 2a d0 10 20  |)=-1.*..  ..*.. |
00005370  20 6f 66 66 73 65 74 25  2b 3d 31 0d 2a da 05 ce  | offset%+=1.*...|
00005380  0d 2a e4 15 74 79 70 65  25 28 6f 66 66 73 65 74  |.*..type%(offset|
00005390  25 29 3d 2d 31 0d 2a ee  0e 6f 66 66 73 65 74 25  |%)=-1.*..offset%|
000053a0  2b 3d 31 0d 2a f8 05 e1  0d 2b 02 04 0d 2b 0c 19  |+=1.*....+...+..|
000053b0  dd f2 73 74 72 69 6e 67  43 52 28 f8 20 6f 66 66  |..stringCR(. off|
000053c0  73 65 74 25 29 0d 2b 16  15 c8 8e 74 79 70 65 25  |set%).+....type%|
000053d0  28 6f 66 66 73 65 74 25  29 ca 0d 2b 20 0a 20 20  |(offset%)..+ .  |
000053e0  c9 20 30 3a 0d 2b 2a 12  20 20 c9 2d 32 3a f4 45  |. 0:.+*.  .-2:.E|
000053f0  4e 44 50 52 4f 43 0d 2b  34 25 20 20 7f 3a 85 32  |NDPROC.+4%  .:.2|
00005400  35 35 2c 22 45 78 70 65  63 74 69 6e 67 20 74 79  |55,"Expecting ty|
00005410  70 65 20 2d 32 20 6f 72  20 30 22 0d 2b 3e 05 cb  |pe -2 or 0".+>..|
00005420  0d 2b 48 17 c8 95 62 61  73 65 25 3f 6f 66 66 73  |.+H...base%?offs|
00005430  65 74 25 3c 3e 31 33 0d  2b 52 17 20 20 74 79 70  |et%<>13.+R.  typ|
00005440  65 25 28 6f 66 66 73 65  74 25 29 3d 2d 32 0d 2b  |e%(offset%)=-2.+|
00005450  5c 10 20 20 6f 66 66 73  65 74 25 2b 3d 31 0d 2b  |\.  offset%+=1.+|
00005460  66 05 ce 0d 2b 70 15 74  79 70 65 25 28 6f 66 66  |f...+p.type%(off|
00005470  73 65 74 25 29 3d 2d 32  0d 2b 7a 0e 6f 66 66 73  |set%)=-2.+z.offs|
00005480  65 74 25 2b 3d 31 0d 2b  84 05 e1 0d 2b 8e 04 0d  |et%+=1.+....+...|
00005490  2b 98 09 dd f2 73 77 69  0d 2b a2 2c 69 6e 73 74  |+....swi.+.,inst|
000054a0  24 3d c0 69 6e 73 74 24  2c 38 29 2b 22 22 22 22  |$=.inst$,8)+""""|
000054b0  2b c2 69 6e 73 74 24 2c  6c 65 6e 25 2d 38 29 2b  |+.inst$,len%-8)+|
000054c0  22 22 22 22 0d 2b ac 15  6e 75 6d 25 3d 69 6e 73  |"""".+..num%=ins|
000054d0  74 25 80 73 6d 61 73 6b  25 0d 2b b6 0b c8 8e 6e  |t%.smask%.+....n|
000054e0  75 6d 25 ca 0d 2b c0 12  20 20 c9 20 20 31 3a f2  |um%..+..  .  1:.|
000054f0  77 72 69 74 65 53 0d 2b  ca 10 20 20 c9 26 31 31  |writeS.+..  .&11|
00005500  3a f2 65 78 69 74 0d 2b  d4 12 20 20 7f 3a 6f 66  |:.exit.+..  .:of|
00005510  66 73 65 74 25 2b 3d 34  0d 2b de 05 cb 0d 2b e8  |fset%+=4.+....+.|
00005520  05 e1 0d 2b f2 04 0d 2b  fc 0f dd f2 73 77 69 62  |...+...+....swib|
00005530  72 61 6e 63 68 0d 2c 06  2f 64 65 73 74 25 3d 28  |ranch.,./dest%=(|
00005540  28 28 a0 28 c2 69 6e 73  74 24 2c 6c 65 6e 25 2d  |((.(.inst$,len%-|
00005550  37 29 29 29 3c 3c 38 29  3e 3e 38 29 2b 6f 66 66  |7)))<<8)>>8)+off|
00005560  73 65 74 25 0d 2c 10 17  e7 73 77 69 24 28 63 6f  |set%.,...swi$(co|
00005570  75 6e 74 65 72 25 29 3d  22 22 8c 0d 2c 1a 33 20  |unter%)=""..,.3 |
00005580  20 e7 6c 61 62 65 6c 24  28 64 65 73 74 25 29 3d  | .label$(dest%)=|
00005590  22 22 8c 6c 61 62 65 6c  24 28 64 65 73 74 25 29  |"".label$(dest%)|
000055a0  3d 22 78 22 2b c3 7e 28  64 65 73 74 25 29 0d 2c  |="x"+.~(dest%).,|
000055b0  24 05 cc 0d 2c 2e 22 20  20 6c 61 62 65 6c 24 28  |$...,."  label$(|
000055c0  64 65 73 74 25 29 3d 73  77 69 24 28 63 6f 75 6e  |dest%)=swi$(coun|
000055d0  74 65 72 25 29 0d 2c 38  05 cd 0d 2c 42 10 f2 63  |ter%).,8...,B..c|
000055e0  6f 64 65 28 64 65 73 74  25 29 0d 2c 4c 0e 6f 66  |ode(dest%).,L.of|
000055f0  66 73 65 74 25 2b 3d 34  0d 2c 56 05 e1 0d 2c 60  |fset%+=4.,V...,`|
00005600  04 0d 2c 6a 14 dd f2 73  77 69 62 72 61 6e 63 68  |..,j...swibranch|
00005610  74 61 62 6c 65 0d 2c 74  0c e7 64 65 62 75 67 25  |table.,t..debug%|
00005620  8c 0d 2c 7e 08 20 20 fb  36 0d 2c 88 20 20 20 f1  |..,~.  .6.,.   .|
00005630  22 47 6f 74 20 74 6f 20  53 57 49 20 62 72 61 6e  |"Got to SWI bran|
00005640  63 68 20 74 61 62 6c 65  22 0d 2c 92 08 20 20 fb  |ch table".,..  .|
00005650  37 0d 2c 9c 05 cd 0d 2c  a6 0e 6f 66 66 73 65 74  |7.,....,..offset|
00005660  25 2b 3d 34 0d 2c b0 15  ea 49 25 2c 65 6e 64 25  |%+=4.,...I%,end%|
00005670  2c 63 6f 75 6e 74 65 72  25 0d 2c ba 0a 65 6e 64  |,counter%.,..end|
00005680  25 3d a3 0d 2c c4 05 f5  0d 2c ce 18 20 20 e7 74  |%=..,....,..  .t|
00005690  79 70 65 25 28 6f 66 66  73 65 74 25 29 3d 30 8c  |ype%(offset%)=0.|
000056a0  0d 2c d8 1b 20 20 20 20  69 6e 73 74 25 3d 62 61  |.,..    inst%=ba|
000056b0  73 65 25 21 6f 66 66 73  65 74 25 0d 2c e2 0f 20  |se%!offset%.,.. |
000056c0  20 20 20 e3 49 25 3d 30  b8 33 0d 2c ec 1d 20 20  |   .I%=0.3.,..  |
000056d0  20 20 20 20 74 79 70 65  25 28 6f 66 66 73 65 74  |    type%(offset|
000056e0  25 2b 49 25 29 3d 35 0d  2c f6 09 20 20 20 20 ed  |%+I%)=5.,..    .|
000056f0  0d 2d 00 22 20 20 20 20  69 6e 73 74 24 3d a4 65  |.-."    inst$=.e|
00005700  78 74 72 61 63 74 28 69  6e 73 74 25 2c 6c 65 6e  |xtract(inst%,len|
00005710  25 29 0d 2d 0a 10 20 20  20 20 e7 64 65 62 75 67  |%).-..    .debug|
00005720  25 8c 0d 2d 14 0c 20 20  20 20 20 20 fb 36 0d 2d  |%..-..      .6.-|
00005730  1e 20 20 20 20 20 20 20  f1 63 6f 75 6e 74 65 72  |.       .counter|
00005740  25 2c a4 69 6e 73 74 28  69 6e 73 74 25 29 0d 2d  |%,.inst(inst%).-|
00005750  28 0c 20 20 20 20 20 20  fb 37 0d 2d 32 09 20 20  |(.      .7.-2.  |
00005760  20 20 cd 0d 2d 3c 17 20  20 20 20 c8 8e a4 69 6e  |  ..-<.    ...in|
00005770  73 74 28 69 6e 73 74 25  29 ca 0d 2d 46 17 20 20  |st(inst%)..-F.  |
00005780  20 20 20 20 c9 31 3a f2  73 77 69 62 72 61 6e 63  |    .1:.swibranc|
00005790  68 0d 2d 50 18 20 20 20  20 20 20 7f 3a e7 63 6f  |h.-P.      .:.co|
000057a0  75 6e 74 65 72 25 3d 30  8c 0d 2d 5a 24 20 20 20  |unter%=0..-Z$   |
000057b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
000057c0  63 6f 64 65 28 6f 66 66  73 65 74 25 29 0d 2d 64  |code(offset%).-d|
000057d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000057e0  20 20 20 6f 66 66 73 65  74 25 2b 3d 34 0d 2d 6e  |   offset%+=4.-n|
000057f0  15 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00005800  20 cc 0d 2d 78 2b 20 20  20 20 20 20 20 20 20 20  | ..-x+          |
00005810  20 20 20 20 20 20 20 20  65 6e 64 25 3d b9 3a f4  |        end%=.:.|
00005820  20 45 6e 64 20 6f 66 20  74 61 62 6c 65 0d 2d 82  | End of table.-.|
00005830  15 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00005840  20 cd 0d 2d 8c 09 20 20  20 20 cb 0d 2d 96 13 20  | ..-..    ..-.. |
00005850  20 20 20 63 6f 75 6e 74  65 72 25 2b 3d 31 0d 2d  |   counter%+=1.-|
00005860  a0 07 20 20 cc 0d 2d aa  0e 20 20 20 20 65 6e 64  |..  ..-..    end|
00005870  25 3d b9 0d 2d b4 07 20  20 cd 0d 2d be 09 fd 65  |%=..-..  ..-...e|
00005880  6e 64 25 0d 2d c8 0c e7  64 65 62 75 67 25 8c 0d  |nd%.-...debug%..|
00005890  2d d2 08 20 20 fb 36 0d  2d dc 35 20 20 f1 22 4c  |-..  .6.-.5  ."L|
000058a0  65 66 74 20 53 57 49 20  62 72 61 6e 63 68 20 74  |eft SWI branch t|
000058b0  61 62 6c 65 20 77 69 74  68 20 63 6f 75 6e 74 65  |able with counte|
000058c0  72 3d 22 3b 63 6f 75 6e  74 65 72 25 0d 2d e6 08  |r=";counter%.-..|
000058d0  20 20 fb 37 0d 2d f0 05  cd 0d 2d fa 05 e1 0d 2e  |  .7.-....-.....|
000058e0  04 04 0d 2e 0e 19 dd f2  73 77 69 68 61 6e 64 6c  |........swihandl|
000058f0  65 72 28 6f 66 66 73 65  74 25 29 0d 2e 18 15 c8  |er(offset%).....|
00005900  8e 74 79 70 65 25 28 6f  66 66 73 65 74 25 29 ca  |.type%(offset%).|
00005910  0d 2e 22 09 20 20 c9 30  3a 0d 2e 2c 0a 20 20 c9  |..".  .0:..,.  .|
00005920  35 3a e1 0d 2e 36 24 20  20 7f 3a 85 32 35 35 2c  |5:...6$  .:.255,|
00005930  22 45 78 70 65 63 74 69  6e 67 20 74 79 70 65 20  |"Expecting type |
00005940  35 20 6f 72 20 30 22 0d  2e 40 05 cb 0d 2e 4a 07  |5 or 0"..@....J.|
00005950  ea 49 25 0d 2e 54 17 69  6e 73 74 25 3d 62 61 73  |.I%..T.inst%=bas|
00005960  65 25 21 6f 66 66 73 65  74 25 0d 2e 5e 0b e3 49  |e%!offset%..^..I|
00005970  25 3d 30 b8 33 0d 2e 68  19 20 20 74 79 70 65 25  |%=0.3..h.  type%|
00005980  28 6f 66 66 73 65 74 25  2b 49 25 29 3d 35 0d 2e  |(offset%+I%)=5..|
00005990  72 05 ed 0d 2e 7c 1e 69  6e 73 74 24 3d a4 65 78  |r....|.inst$=.ex|
000059a0  74 72 61 63 74 28 69 6e  73 74 25 2c 6c 65 6e 25  |tract(inst%,len%|
000059b0  29 0d 2e 86 13 c8 8e a4  69 6e 73 74 28 69 6e 73  |).......inst(ins|
000059c0  74 25 29 ca 0d 2e 90 13  20 20 c9 20 31 3a f2 62  |t%).....  . 1:.b|
000059d0  72 61 6e 63 68 3a e1 0d  2e 9a 50 20 20 f4 57 48  |ranch:....P  .WH|
000059e0  45 4e 20 32 3a 49 46 46  4e 69 6e 73 74 28 62 61  |EN 2:IFFNinst(ba|
000059f0  73 65 25 21 28 6f 66 66  73 65 74 25 2b 34 29 29  |se%!(offset%+4))|
00005a00  3d 32 54 48 45 4e 50 52  4f 43 73 77 69 62 72 61  |=2THENPROCswibra|
00005a10  6e 63 68 74 61 62 6c 65  20 45 4c 53 45 50 52 4f  |nchtable ELSEPRO|
00005a20  43 62 72 61 6e 63 68 0d  2e a4 11 20 20 c9 20 32  |Cbranch....  . 2|
00005a30  3a f2 62 72 61 6e 63 68  0d 2e ae 15 20 20 c9 20  |:.branch....  . |
00005a40  33 3a f2 62 72 61 6e 63  68 6c 69 6e 6b 0d 2e b8  |3:.branchlink...|
00005a50  0b 20 20 c9 20 34 3a e1  0d 2e c2 0e 20 20 c9 20  |.  . 4:.....  . |
00005a60  35 3a f2 73 77 69 0d 2e  cc 0b 20 20 c9 20 36 3a  |5:.swi....  . 6:|
00005a70  e1 0d 2e d6 19 20 20 c9  20 37 3a f2 73 77 69 62  |.....  . 7:.swib|
00005a80  72 61 6e 63 68 74 61 62  6c 65 0d 2e e0 11 20 20  |ranchtable....  |
00005a90  c9 20 38 3a f2 61 64 72  61 64 64 0d 2e ea 11 20  |. 8:.adradd.... |
00005aa0  20 c9 20 39 3a f2 61 64  72 73 75 62 0d 2e f4 0b  | . 9:.adrsub....|
00005ab0  20 20 c9 31 30 3a e1 0d  2e fe 10 20 20 c9 31 31  |  .10:.....  .11|
00005ac0  3a f2 6c 73 65 78 70 0d  2f 08 12 20 20 c9 31 32  |:.lsexp./..  .12|
00005ad0  3a f2 63 6f 70 72 6f 3a  e1 0d 2f 12 12 20 20 c9  |:.copro:../..  .|
00005ae0  31 33 3a f2 75 6e 64 65  66 3a e1 0d 2f 1c 0b 20  |13:.undef:../.. |
00005af0  20 c9 31 34 3a e1 0d 2f  26 12 20 20 7f 3a 6f 66  | .14:../&.  .:of|
00005b00  66 73 65 74 25 2b 3d 34  0d 2f 30 05 cb 0d 2f 3a  |fset%+=4./0.../:|
00005b10  15 e7 6f 66 66 73 65 74  25 3e 62 79 74 65 73 25  |..offset%>bytes%|
00005b20  8c e1 0d 2f 44 1a e7 74  79 70 65 25 28 6f 66 66  |.../D..type%(off|
00005b30  73 65 74 25 29 3d 30 8c  8d 44 54 6e 0d 2f 4e 05  |set%)=0..DTn./N.|
00005b40  e1 0d 2f 58 04 0d 2f 62  19 dd f2 73 77 69 74 61  |../X../b...swita|
00005b50  62 6c 65 28 f8 20 6f 66  66 73 65 74 25 29 0d 2f  |ble(. offset%)./|
00005b60  6c 0f ea 49 25 2c 70 72  65 66 69 78 24 0d 2f 76  |l..I%,prefix$./v|
00005b70  15 f2 73 74 72 69 6e 67  30 28 6f 66 66 73 65 74  |..string0(offset|
00005b80  25 29 0d 2f 80 17 70 72  65 66 69 78 24 3d 73 74  |%)./..prefix$=st|
00005b90  72 69 6e 67 24 2b 22 5f  22 0d 2f 8a 1d 73 77 69  |ring$+"_"./..swi|
00005ba0  24 28 49 25 29 3d 70 72  65 66 69 78 24 2b 22 42  |$(I%)=prefix$+"B|
00005bb0  61 64 53 57 49 22 0d 2f  94 09 49 25 2b 3d 31 0d  |adSWI"./..I%+=1.|
00005bc0  2f 9e 16 c8 95 62 61 73  65 25 3f 6f 66 66 73 65  |/....base%?offse|
00005bd0  74 25 3c 3e 30 0d 2f a8  17 20 20 f2 73 74 72 69  |t%<>0./..  .stri|
00005be0  6e 67 30 28 6f 66 66 73  65 74 25 29 0d 2f b2 1e  |ng0(offset%)./..|
00005bf0  20 20 73 77 69 24 28 49  25 29 3d 70 72 65 66 69  |  swi$(I%)=prefi|
00005c00  78 24 2b 73 74 72 69 6e  67 24 0d 2f bc 0b 20 20  |x$+string$./..  |
00005c10  49 25 2b 3d 31 0d 2f c6  05 ce 0d 2f d0 12 f2 62  |I%+=1./..../...b|
00005c20  79 74 65 28 6f 66 66 73  65 74 25 29 0d 2f da 05  |yte(offset%)./..|
00005c30  e1 0d 2f e4 04 0d 2f ee  0b dd f2 75 6e 64 65 66  |../.../....undef|
00005c40  0d 2f f8 07 ea 49 25 0d  30 02 06 ef 37 0d 30 0c  |./...I%.0...7.0.|
00005c50  36 f1 22 41 74 74 65 6d  70 74 69 6e 67 20 74 6f  |6."Attempting to|
00005c60  20 64 69 73 61 73 73 65  6d 62 6c 65 20 75 6e 64  | disassemble und|
00005c70  65 66 69 6e 65 64 20 69  6e 73 74 72 75 63 74 69  |efined instructi|
00005c80  6f 6e 22 0d 30 16 23 ff  28 22 4d 65 6d 6f 72 79  |on".0.#.("Memory|
00005c90  49 20 22 2b c3 7e 28 6f  66 66 73 65 74 25 2b 62  |I "+.~(offset%+b|
00005ca0  61 73 65 25 29 29 0d 30  20 11 e7 72 65 61 64 73  |ase%)).0 ..reads|
00005cb0  63 72 69 70 74 25 8c 0d  30 2a 22 20 20 f1 22 43  |cript%..0*"  ."C|
00005cc0  6f 6e 74 69 6e 75 69 6e  67 20 69 6e 20 61 20 6d  |ontinuing in a m|
00005cd0  6f 6d 65 6e 74 2e 2e 2e  22 0d 30 34 14 20 20 e3  |oment...".04.  .|
00005ce0  49 25 3d 31 b8 31 30 30  30 30 30 3a ed 0d 30 3e  |I%=1.100000:..0>|
00005cf0  05 cc 0d 30 48 23 20 20  f1 22 50 72 65 73 73 20  |...0H#  ."Press |
00005d00  61 6e 79 20 6b 65 79 20  74 6f 20 63 6f 6e 74 69  |any key to conti|
00005d10  6e 75 65 22 27 0d 30 52  0a 20 20 47 25 3d a5 0d  |nue"'.0R.  G%=..|
00005d20  30 5c 05 cd 0d 30 66 0b  e3 49 25 3d 30 b8 33 0d  |0\...0f..I%=0.3.|
00005d30  30 70 19 20 20 74 79 70  65 25 28 6f 66 66 73 65  |0p.  type%(offse|
00005d40  74 25 2b 49 25 29 3d 30  0d 30 7a 05 ed 0d 30 84  |t%+I%)=0.0z...0.|
00005d50  05 e1 0d 30 8e 04 0d 30  98 1e dd f2 77 68 61 74  |...0...0....what|
00005d60  73 74 68 69 73 28 6f 66  66 73 65 74 25 2c 64 65  |sthis(offset%,de|
00005d70  73 74 25 29 0d 30 a2 0e  ea 63 6f 75 6e 74 25 2c  |st%).0...count%,|
00005d80  49 25 0d 30 ac 0c 63 6f  75 6e 74 25 3d 31 0d 30  |I%.0..count%=1.0|
00005d90  b6 3d c8 95 74 79 70 65  25 28 64 65 73 74 25 2b  |.=..type%(dest%+|
00005da0  63 6f 75 6e 74 25 29 3d  30 80 28 64 65 73 74 25  |count%)=0.(dest%|
00005db0  2b 63 6f 75 6e 74 25 29  3c 3d 62 79 74 65 73 25  |+count%)<=bytes%|
00005dc0  80 63 6f 75 6e 74 25 3c  3d 36 38 0d 30 c0 0f 20  |.count%<=68.0.. |
00005dd0  20 63 6f 75 6e 74 25 2b  3d 31 0d 30 ca 05 ce 0d  | count%+=1.0....|
00005de0  30 d4 06 fb 33 0d 30 de  28 ff 22 4d 65 6d 6f 72  |0...3.0.(."Memor|
00005df0  79 49 20 22 2b c3 7e 28  6f 66 66 73 65 74 25 2b  |yI "+.~(offset%+|
00005e00  62 61 73 65 25 29 2b 22  20 2b 31 30 22 0d 30 e8  |base%)+" +10".0.|
00005e10  08 fb 37 3a f1 0d 30 f2  2a ff 22 4d 45 4d 4f 52  |..7:..0.*."MEMOR|
00005e20  59 49 20 22 2b c3 7e 28  64 65 73 74 25 2b 62 61  |YI "+.~(dest%+ba|
00005e30  73 65 25 2d 26 32 30 29  2b 22 20 2b 32 30 22 0d  |se%-&20)+" +20".|
00005e40  30 fc 06 fb 31 0d 31 06  25 ff 22 4d 45 4d 4f 52  |0...1.1.%."MEMOR|
00005e50  59 49 20 22 2b c3 7e 28  64 65 73 74 25 2b 62 61  |YI "+.~(dest%+ba|
00005e60  73 65 25 29 2b 22 20 2b  34 22 0d 31 10 06 fb 37  |se%)+" +4".1...7|
00005e70  0d 31 1a 28 ff 22 4d 45  4d 4f 52 59 49 20 22 2b  |.1.(."MEMORYI "+|
00005e80  c3 7e 28 64 65 73 74 25  2b 62 61 73 65 25 2b 34  |.~(dest%+base%+4|
00005e90  29 2b 22 20 2b 32 30 22  0d 31 24 0c f1 27 7e 64  |)+" +20".1$..'~d|
00005ea0  65 73 74 25 0d 31 2e 13  f1 22 57 68 61 74 27 73  |est%.1..."What's|
00005eb0  20 74 68 69 73 3f 22 0d  31 38 15 74 79 70 65 25  | this?".18.type%|
00005ec0  3d 30 3a 6e 75 6d 62 65  72 25 3d 31 0d 31 42 23  |=0:number%=1.1B#|
00005ed0  e7 ac a4 72 65 70 6c 61  79 28 64 65 73 74 25 2c  |...replay(dest%,|
00005ee0  74 79 70 65 25 2c 6e 75  6d 62 65 72 25 29 8c 0d  |type%,number%)..|
00005ef0  31 4c 0c 20 20 e8 74 79  70 65 25 0d 31 56 32 20  |1L.  .type%.1V2 |
00005f00  20 e7 74 79 70 65 25 3d  2d 33 8c e8 22 4c 65 6e  | .type%=-3.."Len|
00005f10  67 74 68 20 6f 66 20 70  61 64 64 65 64 20 73 74  |gth of padded st|
00005f20  72 69 6e 67 22 2c 6e 75  6d 62 65 72 25 0d 31 60  |ring",number%.1`|
00005f30  2d 20 20 e7 74 79 70 65  25 3c 3e 30 8c f2 63 61  |-  .type%<>0..ca|
00005f40  70 74 75 72 65 28 64 65  73 74 25 2c 74 79 70 65  |pture(dest%,type|
00005f50  25 2c 6e 75 6d 62 65 72  25 29 0d 31 6a 05 cd 0d  |%,number%).1j...|
00005f60  31 74 05 e1 0d 31 7e 04  0d 31 88 15 dd f2 77 6f  |1t...1~..1....wo|
00005f70  72 64 28 f8 20 6f 66 66  73 65 74 25 29 0d 31 92  |rd(. offset%).1.|
00005f80  15 c8 8e 74 79 70 65 25  28 6f 66 66 73 65 74 25  |...type%(offset%|
00005f90  29 ca 0d 31 9c 09 20 20  c9 30 3a 0d 31 a6 0a 20  |)..1..  .0:.1.. |
00005fa0  20 c9 32 3a e1 0d 31 b0  24 20 20 7f 3a 85 32 35  | .2:..1.$  .:.25|
00005fb0  35 2c 22 45 78 70 65 63  74 69 6e 67 20 74 79 70  |5,"Expecting typ|
00005fc0  65 20 32 20 6f 72 20 30  22 0d 31 ba 05 cb 0d 31  |e 2 or 0".1....1|
00005fd0  c4 07 ea 49 25 0d 31 ce  30 77 6f 72 64 25 3d 62  |...I%.1.0word%=b|
00005fe0  61 73 65 25 3f 6f 66 66  73 65 74 25 2b 26 31 30  |ase%?offset%+&10|
00005ff0  30 2a 28 62 61 73 65 25  3f 28 6f 66 66 73 65 74  |0*(base%?(offset|
00006000  25 2b 31 29 29 0d 31 d8  0b e3 49 25 3d 30 b8 31  |%+1)).1...I%=0.1|
00006010  0d 31 e2 19 20 20 74 79  70 65 25 28 6f 66 66 73  |.1..  type%(offs|
00006020  65 74 25 2b 49 25 29 3d  32 0d 31 ec 05 ed 0d 31  |et%+I%)=2.1....1|
00006030  f6 0e 6f 66 66 73 65 74  25 2b 3d 32 0d 32 00 05  |..offset%+=2.2..|
00006040  e1 0d 32 0a 04 0d 32 14  0c dd f2 77 72 69 74 65  |..2...2....write|
00006050  53 0d 32 1e 0e 6f 66 66  73 65 74 25 2b 3d 34 0d  |S.2..offset%+=4.|
00006060  32 28 15 f2 73 74 72 69  6e 67 30 28 6f 66 66 73  |2(..string0(offs|
00006070  65 74 25 29 0d 32 32 12  e7 6f 66 66 73 65 74 25  |et%).22..offset%|
00006080  83 34 3c 3e 30 8c 0d 32  3c 15 20 20 f2 61 6c 69  |.4<>0..2<.  .ali|
00006090  67 6e 28 6f 66 66 73 65  74 25 29 0d 32 46 05 cd  |gn(offset%).2F..|
000060a0  0d 32 50 05 e1 0d 32 5a  04 0d 32 64 1b dd a4 65  |.2P...2Z..2d...e|
000060b0  78 74 72 61 63 74 28 69  6e 73 74 25 2c f8 20 6c  |xtract(inst%,. l|
000060c0  65 6e 25 29 0d 32 6e 07  ea 49 25 0d 32 78 32 c8  |en%).2n..I%.2x2.|
000060d0  99 22 44 65 62 75 67 67  65 72 5f 44 69 73 61 73  |."Debugger_Disas|
000060e0  73 65 6d 62 6c 65 22 2c  69 6e 73 74 25 2c 30 b8  |semble",inst%,0.|
000060f0  2c 62 75 66 66 65 72 25  2c 6c 65 6e 25 0d 32 82  |,buffer%,len%.2.|
00006100  0b 6c 65 6e 25 2d 3d 31  0d 32 8c 0c 69 6e 73 74  |.len%-=1.2..inst|
00006110  24 3d 22 22 0d 32 96 05  f5 0d 32 a0 1a 20 20 69  |$="".2....2..  i|
00006120  6e 73 74 24 2b 3d bd 28  62 75 66 66 65 72 25 3f  |nst$+=.(buffer%?|
00006130  49 25 29 0d 32 aa 0b 20  20 49 25 2b 3d 31 0d 32  |I%).2..  I%+=1.2|
00006140  b4 11 fd 62 75 66 66 65  72 25 3f 49 25 3d 30 0d  |...buffer%?I%=0.|
00006150  32 be 0a 3d 69 6e 73 74  24 0d 32 c8 04 0d 32 d2  |2..=inst$.2...2.|
00006160  0f dd a4 69 6d 6d 28 69  6d 6d 24 29 0d 32 dc 19  |...imm(imm$).2..|
00006170  ea 49 25 2c 69 6d 6d 25  2c 62 69 74 73 25 2c 73  |.I%,imm%,bits%,s|
00006180  68 69 66 74 25 0d 32 e6  11 49 25 3d a7 69 6d 6d  |hift%.2..I%=.imm|
00006190  24 2c 22 2c 22 29 0d 32  f0 0a e7 49 25 3d 30 8c  |$,",").2...I%=0.|
000061a0  0d 32 fa 12 20 20 69 6d  6d 25 3d a0 28 69 6d 6d  |.2..  imm%=.(imm|
000061b0  24 29 0d 33 04 05 cc 0d  33 0e 1a 20 20 62 69 74  |$).3....3..  bit|
000061c0  73 25 3d a0 28 c0 69 6d  6d 24 2c 49 25 2d 31 29  |s%=.(.imm$,I%-1)|
000061d0  29 0d 33 18 21 20 20 73  68 69 66 74 25 3d a0 28  |).3.!  shift%=.(|
000061e0  c2 69 6d 6d 24 2c a9 28  69 6d 6d 24 29 2d 49 25  |.imm$,.(imm$)-I%|
000061f0  29 29 0d 33 22 2f 20 20  69 6d 6d 25 3d 28 62 69  |)).3"/  imm%=(bi|
00006200  74 73 25 3c 3c 28 33 32  2d 73 68 69 66 74 25 29  |ts%<<(32-shift%)|
00006210  29 84 28 62 69 74 73 25  3e 3e 73 68 69 66 74 25  |).(bits%>>shift%|
00006220  29 0d 33 2c 05 cd 0d 33  36 09 3d 69 6d 6d 25 0d  |).3,...36.=imm%.|
00006230  33 40 04 0d 33 4a 11 dd  a4 69 6e 73 74 28 69 6e  |3@..3J...inst(in|
00006240  73 74 25 29 0d 33 54 2a  e7 28 69 6e 73 74 25 80  |st%).3T*.(inst%.|
00006250  26 46 46 30 30 30 30 30  30 29 3d 26 45 41 30 30  |&FF000000)=&EA00|
00006260  30 30 30 30 8c 3d 20 31  3a f4 20 42 41 4c 0d 33  |0000.= 1:. BAL.3|
00006270  5e 39 e7 28 69 6e 73 74  25 80 26 30 46 30 30 30  |^9.(inst%.&0F000|
00006280  30 30 30 29 3d 26 30 41  30 30 30 30 30 30 8c 3d  |000)=&0A000000.=|
00006290  20 32 3a f4 20 63 6f 6e  64 69 74 69 6f 6e 61 6c  | 2:. conditional|
000062a0  20 62 72 61 6e 63 68 0d  33 68 29 e7 28 69 6e 73  | branch.3h).(ins|
000062b0  74 25 80 26 30 46 30 30  30 30 30 30 29 3d 26 30  |t%.&0F000000)=&0|
000062c0  42 30 30 30 30 30 30 8c  3d 20 33 3a f4 20 42 4c  |B000000.= 3:. BL|
000062d0  0d 33 72 30 e7 28 69 6e  73 74 25 80 26 46 45 31  |.3r0.(inst%.&FE1|
000062e0  30 38 30 30 30 29 3d 26  45 38 31 30 38 30 30 30  |08000)=&E8108000|
000062f0  8c 3d 20 34 3a f4 20 4c  44 4d 20 2c 7b 50 43 7d  |.= 4:. LDM ,{PC}|
00006300  0d 33 7c 2a e7 28 69 6e  73 74 25 80 26 30 46 30  |.3|*.(inst%.&0F0|
00006310  30 30 30 30 30 29 3d 26  30 46 30 30 30 30 30 30  |00000)=&0F000000|
00006320  8c 3d 20 35 3a f4 20 53  57 49 0d 33 86 2e e7 28  |.= 5:. SWI.3...(|
00006330  69 6e 73 74 25 80 26 46  44 45 30 46 30 30 30 29  |inst%.&FDE0F000)|
00006340  3d 26 45 31 41 30 46 30  30 30 8c 3d 20 36 3a f4  |=&E1A0F000.= 6:.|
00006350  20 4d 4f 56 20 50 43 2c  0d 33 90 33 e7 28 69 6e  | MOV PC,.3.3.(in|
00006360  73 74 25 80 26 30 38 45  46 46 46 46 30 29 3d 26  |st%.&08EFFFF0)=&|
00006370  30 30 38 46 46 31 30 30  8c 3d 20 37 3a f4 20 42  |008FF100.= 7:. B|
00006380  72 61 6e 63 68 20 74 61  62 6c 65 0d 33 9a 2e e7  |ranch table.3...|
00006390  28 69 6e 73 74 25 80 26  30 46 45 46 30 30 30 30  |(inst%.&0FEF0000|
000063a0  29 3d 26 30 32 38 46 30  30 30 30 8c 3d 20 38 3a  |)=&028F0000.= 8:|
000063b0  f4 20 41 44 52 20 61 64  64 0d 33 a4 2e e7 28 69  |. ADR add.3...(i|
000063c0  6e 73 74 25 80 26 30 46  45 46 30 30 30 30 29 3d  |nst%.&0FEF0000)=|
000063d0  26 30 32 34 46 30 30 30  30 8c 3d 20 39 3a f4 20  |&024F0000.= 9:. |
000063e0  41 44 52 20 73 75 62 0d  33 ae 37 e7 28 69 6e 73  |ADR sub.3.7.(ins|
000063f0  74 25 80 26 46 46 46 46  46 30 30 30 29 3d 26 45  |t%.&FFFFF000)=&E|
00006400  33 39 45 46 30 30 30 8c  3d 31 30 3a f4 20 4f 52  |39EF000.=10:. OR|
00006410  52 53 20 50 43 2c 52 31  34 2c 23 2e 2e 2e 0d 33  |RS PC,R14,#....3|
00006420  b8 38 e7 28 69 6e 73 74  25 80 26 30 46 32 46 30  |.8.(inst%.&0F2F0|
00006430  30 30 30 29 3d 26 30 35  30 46 30 30 30 30 8c 3d  |000)=&050F0000.=|
00006440  31 31 3a f4 20 4c 44 52  2f 53 54 52 20 52 6e 2c  |11:. LDR/STR Rn,|
00006450  3c 65 78 70 72 3e 0d 33  c2 2d e7 28 69 6e 73 74  |<expr>.3.-.(inst|
00006460  25 80 26 30 46 30 30 30  30 30 30 29 3d 26 30 45  |%.&0F000000)=&0E|
00006470  30 30 30 30 30 30 8c 3d  31 32 3a f4 20 43 6f 2d  |000000.=12:. Co-|
00006480  70 72 6f 0d 33 cc 2d e7  28 69 6e 73 74 25 80 26  |pro.3.-.(inst%.&|
00006490  30 45 30 30 30 30 30 30  29 3d 26 30 43 30 30 30  |0E000000)=&0C000|
000064a0  30 30 30 8c 3d 31 32 3a  f4 20 43 6f 2d 70 72 6f  |000.=12:. Co-pro|
000064b0  0d 33 d6 30 e7 28 69 6e  73 74 25 80 26 30 46 30  |.3.0.(inst%.&0F0|
000064c0  30 30 30 39 30 29 3d 26  30 31 30 30 30 30 39 30  |00090)=&01000090|
000064d0  8c 3d 31 33 3a f4 20 55  6e 64 65 66 69 6e 65 64  |.=13:. Undefined|
000064e0  0d 33 e0 30 e7 28 69 6e  73 74 25 80 26 30 45 30  |.3.0.(inst%.&0E0|
000064f0  30 30 30 31 30 29 3d 26  30 36 30 30 30 30 31 30  |00010)=&06000010|
00006500  8c 3d 31 33 3a f4 20 55  6e 64 65 66 69 6e 65 64  |.=13:. Undefined|
00006510  0d 33 ea 37 e7 28 69 6e  73 74 25 80 26 46 46 46  |.3.7.(inst%.&FFF|
00006520  46 46 30 30 30 29 3d 26  45 33 44 45 46 30 30 30  |FF000)=&E3DEF000|
00006530  8c 3d 31 34 3a f4 20 42  49 43 53 20 50 43 2c 52  |.=14:. BICS PC,R|
00006540  31 34 2c 23 2e 2e 2e 0d  33 f4 06 3d 30 0d 33 fe  |14,#....3..=0.3.|
00006550  04 0d 34 08 27 dd a4 72  65 70 6c 61 79 28 74 61  |..4.'..replay(ta|
00006560  72 67 65 74 25 2c f8 20  74 79 70 65 25 2c f8 20  |rget%,. type%,. |
00006570  6e 75 6d 62 65 72 25 29  0d 34 12 14 e7 ac 72 65  |number%).4....re|
00006580  61 64 73 63 72 69 70 74  25 8c 3d a3 0d 34 1c 25  |adscript%.=..4.%|
00006590  ea 65 6e 64 25 2c 73 74  72 69 6e 67 24 2c 6f 66  |.end%,string$,of|
000065a0  66 73 65 74 25 2c 73 75  63 63 65 73 73 25 2c 49  |fset%,success%,I|
000065b0  25 0d 34 26 0f cf 23 73  63 72 69 70 74 25 3d 30  |%.4&..#script%=0|
000065c0  0d 34 30 0a 65 6e 64 25  3d a3 0d 34 3a 05 f5 0d  |.40.end%=..4:...|
000065d0  34 44 11 20 20 e7 c5 23  73 63 72 69 70 74 25 8c  |4D.  ..#script%.|
000065e0  0d 34 4e 12 20 20 20 20  73 75 63 63 65 73 73 25  |.4N.    success%|
000065f0  3d a3 0d 34 58 0e 20 20  20 20 65 6e 64 25 3d b9  |=..4X.    end%=.|
00006600  0d 34 62 07 20 20 cc 0d  34 6c 19 20 20 20 20 73  |.4b.  ..4l.    s|
00006610  74 72 69 6e 67 24 3d be  23 73 63 72 69 70 74 25  |tring$=.#script%|
00006620  0d 34 76 1e 20 20 20 20  6f 66 66 73 65 74 25 3d  |.4v.    offset%=|
00006630  a0 28 22 26 22 2b 73 74  72 69 6e 67 24 29 0d 34  |.("&"+string$).4|
00006640  80 19 20 20 20 20 e7 6f  66 66 73 65 74 25 3d 74  |..    .offset%=t|
00006650  61 72 67 65 74 25 8c 0d  34 8a 14 20 20 20 20 20  |arget%..4..     |
00006660  20 73 75 63 63 65 73 73  25 3d b9 0d 34 94 1a 20  | success%=..4.. |
00006670  20 20 20 20 20 49 25 3d  a7 73 74 72 69 6e 67 24  |     I%=.string$|
00006680  2c 22 2c 22 29 0d 34 9e  1f 20 20 20 20 20 20 c0  |,",").4..      .|
00006690  73 74 72 69 6e 67 24 2c  49 25 29 3d c4 49 25 2c  |string$,I%)=.I%,|
000066a0  22 20 22 29 0d 34 a8 18  20 20 20 20 20 20 74 79  |" ").4..      ty|
000066b0  70 65 25 3d a0 73 74 72  69 6e 67 24 0d 34 b2 1a  |pe%=.string$.4..|
000066c0  20 20 20 20 20 20 49 25  3d a7 73 74 72 69 6e 67  |      I%=.string|
000066d0  24 2c 22 2c 22 29 0d 34  bc 1f 20 20 20 20 20 20  |$,",").4..      |
000066e0  c0 73 74 72 69 6e 67 24  2c 49 25 29 3d c4 49 25  |.string$,I%)=.I%|
000066f0  2c 22 20 22 29 0d 34 c6  1a 20 20 20 20 20 20 6e  |," ").4..      n|
00006700  75 6d 62 65 72 25 3d a0  73 74 72 69 6e 67 24 0d  |umber%=.string$.|
00006710  34 d0 10 20 20 20 20 20  20 65 6e 64 25 3d b9 0d  |4..      end%=..|
00006720  34 da 09 20 20 20 20 cd  0d 34 e4 07 20 20 cd 0d  |4..    ..4..  ..|
00006730  34 ee 09 fd 65 6e 64 25  0d 34 f8 0d 3d 73 75 63  |4...end%.4..=suc|
00006740  63 65 73 73 25 0d 35 02  04 0d 35 0c 0b dd a4 79  |cess%.5...5....y|
00006750  65 73 6e 6f 0d 35 16 08  47 25 3d a5 0d 35 20 1a  |esno.5..G%=..5 .|
00006760  e7 47 25 3d 38 39 20 84  47 25 3d 31 32 31 20 8c  |.G%=89 .G%=121 .|
00006770  3d b9 20 8b 3d a3 0d 35  2a 04 0d 35 34 90 dc 20  |=. .=..5*..54.. |
00006780  53 74 61 72 74 43 6f 64  65 2c 49 6e 69 74 43 6f  |StartCode,InitCo|
00006790  64 65 2c 46 69 6e 61 6c  43 6f 64 65 2c 53 65 72  |de,FinalCode,Ser|
000067a0  43 61 6c 6c 48 61 6e 64  6c 65 72 2c 54 69 74 6c  |CallHandler,Titl|
000067b0  65 53 74 72 69 6e 67 2c  48 65 6c 70 53 74 72 69  |eString,HelpStri|
000067c0  6e 67 2c 48 65 6c 70 43  6f 6d 6d 4b 65 79 77 54  |ng,HelpCommKeywT|
000067d0  61 62 2c 53 57 49 43 68  75 6e 6b 42 61 73 65 4e  |ab,SWIChunkBaseN|
000067e0  75 6d 2c 53 57 49 48 61  6e 64 6c 65 72 43 6f 64  |um,SWIHandlerCod|
000067f0  65 2c 53 57 49 44 65 63  6f 64 54 61 62 2c 53 57  |e,SWIDecodTab,SW|
00006800  49 44 65 63 6f 64 43 6f  64 65 0d 35 3e 04 0d 35  |IDecodCode.5>..5|
00006810  48 1a dd f2 70 72 69 6e  74 53 74 72 69 6e 67 28  |H...printString(|
00006820  4c 65 6e 67 74 68 25 29  0d 35 52 24 f4 20 50 72  |Length%).5R$. Pr|
00006830  69 6e 74 73 20 61 20 73  74 72 69 6e 67 20 69 6e  |ints a string in|
00006840  20 45 51 55 53 20 66 6f  72 6d 61 74 0d 35 5c 0f  | EQUS format.5\.|
00006850  ea 49 25 2c 53 74 72 69  6e 67 25 0d 35 66 14 f1  |.I%,String%.5f..|
00006860  8a 32 30 29 22 45 51 55  53 20 20 20 20 22 3b 0d  |.20)"EQUS    ";.|
00006870  35 70 0d 53 74 72 69 6e  67 25 3d a3 0d 35 7a 0f  |5p.String%=..5z.|
00006880  e7 4c 65 6e 67 74 68 25  3e 31 8c 0d 35 84 15 20  |.Length%>1..5.. |
00006890  20 e3 49 25 3d 30 b8 4c  65 6e 67 74 68 25 2d 32  | .I%=0.Length%-2|
000068a0  0d 35 8e 18 20 20 20 20  43 68 61 72 25 3d 73 74  |.5..    Char%=st|
000068b0  72 62 75 66 25 3f 49 25  0d 35 98 26 20 20 20 20  |rbuf%?I%.5.&    |
000068c0  f4 43 68 61 72 25 3d 41  53 43 28 4d 49 44 24 28  |.Char%=ASC(MID$(|
000068d0  53 74 72 69 6e 67 24 2c  49 25 2c 31 29 29 0d 35  |String$,I%,1)).5|
000068e0  a2 20 20 20 20 20 e7 28  43 68 61 72 25 3c 33 32  |.     .(Char%<32|
000068f0  29 84 28 43 68 61 72 25  3e 31 32 36 29 8c 0d 35  |).(Char%>126)..5|
00006900  ac 13 20 20 20 20 20 20  e7 53 74 72 69 6e 67 25  |..      .String%|
00006910  8c 0d 35 b6 15 20 20 20  20 20 20 20 20 53 74 72  |..5..        Str|
00006920  69 6e 67 25 3d a3 0d 35  c0 24 20 20 20 20 20 20  |ing%=..5.$      |
00006930  20 20 f1 22 22 22 2b 43  48 52 24 22 2b c3 28 43  |  ."""+CHR$"+.(C|
00006940  68 61 72 25 29 2b 22 2b  22 3b 0d 35 ca 0b 20 20  |har%)+"+";.5..  |
00006950  20 20 20 20 cc 0d 35 d4  21 20 20 20 20 20 20 20  |    ..5.!       |
00006960  20 f1 22 43 48 52 24 22  2b c3 28 43 68 61 72 25  | ."CHR$"+.(Char%|
00006970  29 2b 22 2b 22 3b 0d 35  de 0b 20 20 20 20 20 20  |)+"+";.5..      |
00006980  cd 0d 35 e8 09 20 20 20  20 cc 0d 35 f2 13 20 20  |..5..    ..5..  |
00006990  20 20 20 20 e7 53 74 72  69 6e 67 25 8c 0d 35 fc  |    .String%..5.|
000069a0  16 20 20 20 20 20 20 20  20 f1 bd 28 43 68 61 72  |.        ..(Char|
000069b0  25 29 3b 0d 36 06 0b 20  20 20 20 20 20 cc 0d 36  |%);.6..      ..6|
000069c0  10 15 20 20 20 20 20 20  20 20 53 74 72 69 6e 67  |..        String|
000069d0  25 3d b9 0d 36 1a 1b 20  20 20 20 20 20 20 20 f1  |%=..6..        .|
000069e0  22 22 22 22 2b bd 28 43  68 61 72 25 29 3b 0d 36  |""""+.(Char%);.6|
000069f0  24 0b 20 20 20 20 20 20  cd 0d 36 2e 1e 20 20 20  |$.      ..6..   |
00006a00  20 20 20 e7 43 68 61 72  25 3d 33 34 8c f1 bd 28  |   .Char%=34...(|
00006a10  43 68 61 72 25 29 3b 0d  36 38 09 20 20 20 20 cd  |Char%);.68.    .|
00006a20  0d 36 42 07 20 20 ed 0d  36 4c 05 cd 0d 36 56 1d  |.6B.  ..6L...6V.|
00006a30  43 68 61 72 25 3d 73 74  72 62 75 66 25 3f 28 4c  |Char%=strbuf%?(L|
00006a40  65 6e 67 74 68 25 2d 31  29 0d 36 60 21 f4 43 68  |ength%-1).6`!.Ch|
00006a50  61 72 25 3d 41 53 43 28  52 49 47 48 54 24 28 53  |ar%=ASC(RIGHT$(S|
00006a60  74 72 69 6e 67 24 2c 31  29 29 0d 36 6a 1c e7 28  |tring$,1)).6j..(|
00006a70  43 68 61 72 25 3c 33 32  29 84 28 43 68 61 72 25  |Char%<32).(Char%|
00006a80  3e 31 32 36 29 8c 0d 36  74 0f 20 20 e7 53 74 72  |>126)..6t.  .Str|
00006a90  69 6e 67 25 8c 0d 36 7e  1b 20 20 20 20 f1 22 22  |ing%..6~.    .""|
00006aa0  22 2b 43 48 52 24 22 2b  c3 28 43 68 61 72 25 29  |"+CHR$"+.(Char%)|
00006ab0  0d 36 88 07 20 20 cc 0d  36 92 18 20 20 20 20 f1  |.6..  ..6..    .|
00006ac0  22 43 48 52 24 22 2b c3  28 43 68 61 72 25 29 0d  |"CHR$"+.(Char%).|
00006ad0  36 9c 07 20 20 cd 0d 36  a6 05 cc 0d 36 b0 0f 20  |6..  ..6....6.. |
00006ae0  20 e7 53 74 72 69 6e 67  25 8c 0d 36 ba 16 20 20  | .String%..6..  |
00006af0  20 20 f1 bd 28 43 68 61  72 25 29 2b 22 22 22 22  |  ..(Char%)+""""|
00006b00  0d 36 c4 07 20 20 cc 0d  36 ce 1b 20 20 20 20 f1  |.6..  ..6..    .|
00006b10  22 22 22 22 2b bd 28 43  68 61 72 25 29 2b 22 22  |""""+.(Char%)+""|
00006b20  22 22 0d 36 d8 07 20 20  cd 0d 36 e2 05 cd 0d 36  |"".6..  ..6....6|
00006b30  ec 05 e1 0d ff                                    |.....|
00006b35