Home » Archimedes archive » Acorn User » AU 1994-05.adf » !StarInfo_StarInfo » Salt/!ChrEd/!RunImage

Salt/!ChrEd/!RunImage

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 » Acorn User » AU 1994-05.adf » !StarInfo_StarInfo
Filename: Salt/!ChrEd/!RunImage
Read OK:
File size: 7FF0 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >!RunImage (!ChrEd)
   20REM By  Darren Salt
   30REM (c) AU May 1994
   40:
   50app%=HIMEM-&8000
   60SYS "XOS_SWINumberFromString",,"XHourglass_On" TO waiton;ok%
   70IF ok% AND 1:waiton=TRUE
   80SYS "XOS_SWINumberFromString",,"XHourglass_Off" TO waitoff;ok%
   90IF ok% AND 1:waitoff=TRUE
  100SYS "OS_Module",6,,,20 TO ,,messages%
  110SYS "MessageTrans_FileInfo",,"<Obey$Dir>.Messages" TO F%,,L%
  120IF F% AND 1 THEN
  130 messages%!16=0
  140ELSE
  150 SYS "XOS_Module",6,,,L% TO A%,,messages%!16;F%
  160 IF F% AND 1:SYS "OS_Module",7,,messages%:SYS "OS_GenerateError",A%
  170ENDIF
  180SYS "MessageTrans_OpenFile",messages%,"<Obey$Dir>.Messages",messages%!16
  190ON ERROR SYS "MessageTrans_CloseFile",messages%:SYS "OS_Module",7,,messages%!16:SYS "OS_Module",7,,messages%:SYS waitoff:SYS "OS_SpriteOp",256+60,-1:ERROR EXT ERR,REPORT$+" @ "+STR$ ERL
  200SYS waiton:os3%=FALSE
  210A%=300:B%=0:*RMEnsure WindowManager 3 MemoryA 8604 10_200 { > Null: }
  220IF A%>299 THEN
  230 B%=&860C:C%=1:D%=2:E%=3:F%=5:G%=8:H%=10:I%=1282
  240 J%=&400C0:K%=&400C3:L%=&400C9:M%=0:os3%=TRUE
  250ENDIF
  260SYS "Wimp_Initialise",A%,&4B534154,"ChrEd",B% TO version%,mytask%
  270SYS "OS_File",5,"<Obey$Dir>.Sprites" TO X%,,,,Y%:Y%+=16
  280HIMEM=HIMEM-Y%:spr%=HIMEM:IF X%<>1:ERROR 214,"!ChrEd Sprites not found"
  290REM SWI 57 = "OS_SWINumberFromString"
  300SYS 57,,"OS_SpriteOp" TO spop:SYS 57,,"XOS_SpriteOp" TO xspop
  310SYS 57,,"OS_ReadModeVariable" TO mvar:SYS 57,,"Wimp_CreateMenu" TO crmenu
  320SYS 57,,"Wimp_ForceRedraw" TO fredraw:SYS 57,,"Wimp_GetIconState" TO getic
  330SYS 57,,"Wimp_GetPointerInfo" TO getptr:SYS 57,,"Wimp_OpenWindow" TO openw
  340SYS 57,,"Wimp_GetWindowState" TO getw:SYS 57,,"Wimp_SetIconState" TO setic
  350DIM q% 2240,msg% 320,buf 256,icn &200,ic% &100,scale% 16,colours 16
  360DIM caret% 24:caret%!20=FALSE:SYS "XWimp_SpriteOp",24,,"left" TO ;f%
  370IF f% AND 1:*IconSprites <Obey$Dir>.Arrows
  380!spr%=Y%:spr%!8=16:SYS spop,256+9,spr%
  390SYS spop,256+10,spr%,"<Obey$Dir>.Sprites":title$=STRING$(255," ")
  400PROCmakewindmenus:PROCinitflags:chricon%=FNiconbar:SYS waitoff:end%=FALSE
  410rst%=FALSE:topy%=99999:q%!16=&400C3:PROCmessage
  420ON ERROR PROCerrbox
  430REPEAT
  440 SYS "Wimp_Poll",,q% TO reason%
  450 CASE reason% OF
  460 WHEN 2:SYS openw,,q%
  470 WHEN 3:PROCclosewindow(!q%)
  480 WHEN 6:PROCcheckmouse(!q%,q%!4,q%!8,q%!12,q%!16,q%!20)
  490 WHEN 7:PROCdrag
  500 WHEN 8:PROCkey(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24)
  510 WHEN 9:PROCmenuselect
  520 WHEN 17,18:PROCmessage
  530 ENDCASE
  540 IF caret%!20 THEN
  550  q%!1000=savehand%:SYS getw,,q%+1000
  560  IF (q%?1034 AND 1)=0 THEN
  570   SYS "Wimp_SetCaretPosition",!caret%,caret%!4,caret%!8,caret%!12,caret%!16
  580   caret%!20=FALSE
  590  ENDIF
  600 ENDIF
  610 IF end%=TRUE:end%=FNsaveold(TRUE)
  620UNTIL end%
  630SYS "MessageTrans_CloseFile",messages%
  640SYS "OS_Module",7,,messages%!16:SYS "OS_Module",7,,messages%
  650SYS "Wimp_CloseDown":IF rst%:SYS "Wimp_ProcessKey",508
  660END
  670:
  680DEF PROCdrag
  690IF dragging%=2:SYS "XDragASprite_Stop":ELSE SYS "Wimp_DragBox",-1
  700dragging%=0:SYS getptr,,q%+40:IF FNfind(q%!52)=dragfrom%:ENDPROC
  710msg%!32=q%!44:msg%!28=q%!40:msg%!24=q%!56:msg%!20=q%!52:msg%!16=1:msg%!12=0
  720$(msg%+44)=FNlastbit(FNgetstr(savetext))+CHR$ 0:!msg%=60:msg%!4=mytask%
  730msg%!36=fsize%:msg%!40=&FF7:SYS "Wimp_SendMessage",17,msg%,q%!52,q%!56
  740ENDPROC
  750:
  760DEF FNgetstr(a%)
  770LOCAL b$:WHILE ?a%>31:b$+=CHR$ ?a%:a%+=1:ENDWHILE
  780=b$
  790:
  800DEF FNlastbit(s$)
  810LOCAL b$
  820WHILE RIGHT$(s$)>"" AND INSTR(":.",RIGHT$(s$))=0
  830 b$=RIGHT$(s$)+b$:s$=LEFT$(s$)
  840ENDWHILE
  850=b$
  860:
  870DEF PROCkey(hand%,icon%,xcar%,ycar%,carh%,carpos%,key%)
  880LOCAL i%:i%=TRUE:SYS getptr,,q%+80:x%=q%!80:y%=q%!84
  890CASE hand% OF
  900WHEN savehand%
  910 CASE key% OF
  920 WHEN 10,13
  930  CASE icon% OF
  940  WHEN 0:f$=FNgetstr(savetext):IF FNpath(f$):PROCsave(f$):SYS crmenu,,-1
  950   i%=FALSE
  960  WHEN 7:PROCtextend(hand%,0):PROCpress(hand%,0):i%=FALSE
  970  ENDCASE
  980 WHEN 385:PROCpress(hand%,1):i%=FALSE
  990 WHEN 386,387,388,389:i%=FALSE:!q%=hand%
 1000  FOR q%!4=3 TO 6
 1010   SYS getic,,q%
 1020   IF q%!24 AND 1<<21:IF q%!4<>key%-383:q%!8=0:q%!12=1<<21:SYS setic,,q%
 1030  NEXT
 1040  PROCpress(hand%,key%-383)
 1050 WHEN 394,398,399,410:!q%=hand%:q%!4=6:SYS getic,,q%
 1060  IF q%!24 AND 1<<21 THEN
 1070   IF icon%=0:icon%=7:ELSE icon%=0
 1080   PROCtextend(hand%,icon%):PROCpress(hand%,icon%)
 1090  ENDIF
 1100  i%=FALSE
 1110 ENDCASE
 1120OTHERWISE
 1130 i%=FALSE:current%=FNfind(hand%):!q%=unsavedhand%:SYS getw,,q%
 1140 IF q%?34 AND 1 THEN
 1150  CASE key% OF
 1160  WHEN 67,99,386:PROCpress(unsavedhand%,2)
 1170  WHEN 68,100,385:PROCpress(unsavedhand%,1)
 1180  OTHERWISE:i%=TRUE
 1190  ENDCASE
 1200 ELSE chr%=?FNaddr("n",current%)
 1210  CASE key% OF
 1220  WHEN 1:PROCpress(hand%,6)
 1230  WHEN 3:PROCpress(hand%,12)
 1240  WHEN 4:PROCpress(hand%,11)
 1250  WHEN 7:PROCpress(hand%,8)
 1260  WHEN 9:PROCpress(hand%,7)
 1270  WHEN 15:PROCseticon(hand%,22,FALSE):PROCpress(hand%,21)
 1280  WHEN 16:PROCseticon(hand%,21,FALSE):PROCpress(hand%,22)
 1290  WHEN 17:PROCpress(hand%,5)
 1300  WHEN 19:PROCpress(hand%,9)
 1310  WHEN 23:PROCpress(hand%,10)
 1320  WHEN 24:PROCpress(hand%,3)
 1330  WHEN 25:PROCpress(hand%,4)
 1340  WHEN 38,405:PROCpress(hand%,13)
 1350  WHEN 42,407:PROCpress(hand%,15)
 1360  WHEN 43,406:PROCpress(hand%,14)
 1370  WHEN 127:PROCpress(hand%,12)
 1380  WHEN 387:$savetext=$(FNaddr("n",current%)+4)
 1390   SYS crmenu,,savehand%,x%-64,y%:SYS "Wimp_GetCaretPosition",,caret%
 1400   PROCtextend(savehand%,0):caret%!20=TRUE
 1410  WHEN 389:PROCpress(hand%,10)
 1420  WHEN 390,461:PROCpress(hand%,9)
 1430  WHEN 391,395:PROCpress(hand%,8)
 1440  WHEN 392:!q%=hand%:q%!4=16:SYS getic,,q%
 1450   IF q%?26 AND 32 ELSE PROCpress(hand%,16)
 1460  WHEN 393:PROCpress(hand%,11)
 1470  WHEN 396,397,398,399:PROCpress(hand%,key%-379)
 1480  WHEN 412,413,414,415,428,429,430,431:*FX 15
 1490   CASE key% OF
 1500   WHEN 412,428:n%=chr%-1:IF n%<32:n%=255:ELSE IF n%=127:n%=126
 1510   WHEN 413,429:n%=chr%+1:IF n%>255:n%=32:ELSE IF n%=127:n%=128
 1520   WHEN 414,430:n%=chr%+32:IF n%>255:n%-=224:ELSE IF n%=127:n%=159
 1530   WHEN 415,431:n%=chr%-32:IF n%<32:n%+=224:ELSE IF n%=127:n%=95
 1540   ENDCASE
 1550   IF n%<>chr%:PROCsetchr(n%)
 1560  WHEN 418:PROCclosewindow(hand%)
 1570  OTHERWISE:i%=TRUE
 1580  ENDCASE
 1590 ENDIF
 1600ENDCASE
 1610IF i%:SYS "Wimp_ProcessKey",key%
 1620*FX 21,1
 1630ENDPROC
 1640:
 1650DEF PROCpress(hand%,icon%)
 1660IF icon%<0 THEN
 1670 PROCcheckmouse(x%,y%,1,hand%,NOT icon%,0)
 1680ELSE PROCcheckmouse(x%,y%,4,hand%,icon%,0)
 1690ENDIF
 1700ENDPROC
 1710:
 1720DEF PROCsetchr(n)
 1730PROCshowup(?FNaddr("n",current%)):!buf=handle%(current%):buf!4=23
 1740SYS getic,,buf:SYS "Wimp_DeleteIcon",,buf:buf?28=n:buf!4=!buf
 1750SYS "Wimp_CreateIcon",,buf+4:?FNaddr("n",current%)=n:PROCshowup(n)
 1760PROCredrawicon(handle%(current%),23)
 1770ENDPROC
 1780:
 1790DEF FNpath(f$)
 1800LOCAL i%:i%=LEN f$+1:IF INSTR(f$,"::"):i%=INSTR(f$,"::")+2
 1810f$=MID$(f$,i%):i%=FALSE
 1820IF INSTR(f$,"."):f$=MID$(f$,INSTR(f$,".")+1):IF INSTR(f$,"."):i%=TRUE
 1830IF i% ELSE PROCtellthemoff(FNlookup("DragSave"))
 1840=i%
 1850:
 1860DEF FNtextaddr(hand%,icon%)
 1870PROCgeticoninfo(hand%,icon%):IF icn?25 AND 1:=icn!28
 1880=icn+28
 1890:
 1900DEF PROCgeticoninfo(hand%,icon%)
 1910!icn=hand%:icn!4=icon%:SYS getic,,icn
 1920ENDPROC
 1930:
 1940DEF PROCreplotmap
 1950LOCAL x%,y%,A%,B%,C%,D%
 1960SYS spop,256+60,spr%,"b"+STR$ current% TO `1%,`2%,`3%,`4%
 1970FOR x%=0 TO 7
 1980 FOR y%=0 TO 7
 1990  GCOL (y%?bit% AND 128>>x%)>0 AND 1:RECTANGLE FILL x%*24+4,344-y%*48,17,35
 2000 NEXT
 2010NEXT
 2020SYS spop,256+60,spr%,"c"+STR$ current%:GCOL 0:RECTANGLE FILL 4,8,15,31
 2030D%=bit%:E%=4:F%=36:GCOL 1:CALL plotchr:SYS spop,`1%,`2%,`3%,`4%
 2040ENDPROC
 2050:
 2060DEF PROCreplotchr(X%,Y%)
 2070SYS spop,256+60,spr%,"m"+STR$ current% TO `1%,`2%,`3%,`4%:SYS getic,,q%
 2080FOR n%=X% TO Y%
 2090 IF n%<>127 THEN
 2100  D%=FNchr(n%):E%=(n% AND 31)*18:F%=(7-(n% DIV 32))*68+35
 2110  GCOL 0:RECTANGLE FILL E%,F%-31,15,31:GCOL 3:CALL plotchr
 2120 ENDIF
 2130NEXT
 2140SYS spop,`1%,`2%,`3%,`4%:PROCredrawicon(handle%(current%),1)
 2150ENDPROC
 2160:
 2170DEF PROCshowup(chr%)
 2180LOCAL n%,x%,y%:P%=FNchr(chr%):x%=(chr% AND 31)*18:y%=(7-(chr% DIV 32))*68+36
 2190SYS spop,256+60,spr%,"m"+STR$ current% TO `1%,`2%,`3%,`4%
 2200GCOL 3,2:RECTANGLE FILL x%,y%,15,31:SYS spop,`1%,`2%,`3%,`4%:q%!4=1
 2210!q%=handle%(current%):SYS getic,,q%:PROCupdate(!q%,q%!8+x%,q%!12+y%,16,32)
 2220ENDPROC
 2230:
 2240DEF PROCupdate(hand%,x%,y%,n%,f)
 2250SYS fredraw,hand%,x%,y%,x%+n%,y%+f
 2260ENDPROC
 2270:
 2280DEF FNchr(chr%)
 2290IF chr%:=FNaddr("f",current%)+chr%*10-318:ELSE =bit%
 2300:
 2310DEF PROCmessage
 2320FOR n%=0 TO !q%-1 STEP 4:msg%!n%=q%!n%:NEXT
 2330CASE q%!16 OF
 2340WHEN 0:end%=TRUE:rst%=FALSE
 2350WHEN 1:PROCdatasave
 2360WHEN 2:PROCdatasaveack
 2370WHEN 3:PROCdataload
 2380WHEN 5:PROCdataopen
 2390WHEN 8:end%=TRUE:rst%=q%!20=0:!msg%=20:msg%!12=msg%!8:msg%!16=0
 2400 IF FNchanged(-1):SYS "Wimp_SendMessage",19,msg%
 2410WHEN 10:PROCsaveopts
 2420WHEN 1282:PROChelp
 2430WHEN &400C0
 2440 IF q%!20=savehand% THEN
 2450  f=q%!24:g=q%!28:SYS getw,,q%+20:q%!24=f:q%!28=g-savey%:q%!32=f+savex%
 2460  q%!36=g:SYS openw,,q%+20:SYS "Wimp_CreateSubMenu",,q%!20,f,g
 2470  SYS "Wimp_GetCaretPosition",,caret%:caret%!20=TRUE
 2480  PROCtextend(savehand%,0):!q%=savehand%:q%!4=6:SYS getic,,q%
 2490  PROCgreyicon(savehand%,7,q%!24 AND 1<<21)
 2500  FOR n=8 TO 11:PROCgreyicon(savehand%,n,FALSE):NEXT
 2510 ENDIF
 2520WHEN &400C3:SYS mvar,-1,12 TO ,,maxy%
 2530 SYS mvar,-1,5 TO ,,Y%:maxy%=maxy%<<Y%
 2540 IF topy%>maxy%:topy%=maxy%-80:IF topy%<0:topy%=maxy%
 2550WHEN &400C9
 2560 IF caret%!20 THEN
 2570  SYS "Wimp_SetCaretPosition",!caret%,caret%!4,caret%!8,caret%!12,caret%!16
 2580  caret%!20=FALSE
 2590 ENDIF
 2600ENDCASE
 2610ENDPROC
 2620:
 2630DEF PROCreply(messtype%,reason%)
 2640msg%!12=msg%!8:msg%!16=reason%:SYS "Wimp_SendMessage",messtype%,msg%,msg%!4
 2650ENDPROC
 2660:
 2670DEF PROCcheckmouse(mx%,my%,b%,hand%,icon%,ob%)
 2680IF b% AND &505 THEN
 2690 c%=(b% AND 1)>0
 2700 CASE hand% OF
 2710 WHEN -2:PROCnewfile
 2720 WHEN savehand%
 2730  CASE icon% OF
 2740  WHEN 0:FOR n=8 TO 11:PROCgreyicon(savehand%,n,FALSE):NEXT
 2750  WHEN 1:f$=FNgetstr(savetext):IF FNpath(f$):PROCsave(f$):SYS crmenu,,-1
 2760  WHEN 2:PROCinitsavedrag(savehand%)
 2770  WHEN 3,4,5,6:PROCseticon(savehand%,icon%,TRUE)
 2780   PROCgreyicon(savehand%,7,icon%=6)
 2790   SYS "Wimp_GetCaretPosition",,q%
 2800   IF !q%=hand% AND q%!4=7 AND icon%<>6 THEN
 2810    PROCtextend(!q%,0):FOR n=8 TO 11:PROCgreyicon(savehand%,n,FALSE):NEXT
 2820   ENDIF
 2830  WHEN 7:FOR n=8 TO 11:PROCgreyicon(savehand%,n,TRUE):NEXT
 2840  WHEN 8,9,10,11:SYS "Wimp_GetCaretPosition",,q%
 2850   IF LEN $savechrs<255 THEN
 2860    $savechrs=LEFT$($savechrs,q%!20)+MID$("\-�|",icon%-7,1)+$(savechrs+q%!20)
 2870    SYS "Wimp_SetCaretPosition",hand%,7,,,-1,q%!20+1:PROCredrawicon(hand%,7)
 2880   ENDIF
 2890  ENDCASE
 2900 WHEN unsavedhand%
 2910  CASE icon% OF
 2920  WHEN 1:IF delete%:PROCdelete(current%):ELSE end%=1
 2930  WHEN 2:rst%=FALSE
 2940  ENDCASE
 2950  SYS crmenu,,-1
 2960 WHEN infohand%
 2970 OTHERWISE
 2980  current%=FNfind(hand%):chr%=?FNaddr("n",current%):!q%=hand%:q%!4=22
 2990  SYS "Wimp_SetCaretPosition",hand%,-1:SYS getic,,q%:B%=q%!24 AND 1<<21
 3000  A%=bit%:IF B%:A%=FNaddr("f",current%)+2
 3010  CASE icon% OF
 3020  WHEN 0:PROCiconxy(hand%,0,mx%,my%,n,f)
 3030   x%=n DIV 24:y%=7-(f DIV 48):n=n MOD 24:f=f MOD 48
 3040   IF ((x% OR y%) AND -8)=0 AND n>2 AND f>2 THEN
 3050    f=128>>x%:n=bit%+y%:IF c%:?n=?n AND NOT f:ELSE ?n=?n OR f
 3060    !q%=hand%:q%!4=0:n=x%*24:f=(7-y%)*48:PROCreplotmap
 3070    PROCupdate(hand%,q%!208+n+2,q%!212+f+4,22,48):q%!204=2:SYS getic,,q%+200
 3080    PROCupdate(hand%,q%!208+4+x%*2,q%!212+36-y%*4,2,4)
 3090   ENDIF
 3100  WHEN 1:PROCiconxy(hand%,1,mx%,my%,n,f)
 3110   x%=n DIV 18:y%=7-(f DIV 68):n=n MOD 18:f=f MOD 68
 3120   IF (x% AND -32)=0 AND y%>0 AND y%<8 AND n<16 AND f<66 THEN
 3130    n=y%*32+x%
 3140    CASE b% AND &555 OF
 3150    WHEN 1:IF INKEY-1:PROCswap(chr%):ELSE PROCstore(chr%)
 3160    WHEN 4:IF INKEY-1:PROCdefault(chr%):ELSE PROCgrab(chr%)
 3170    OTHERWISE:IF n<>chr% AND n<>127:PROCsetchr(n)
 3180    ENDCASE
 3190    PROCredrawmap
 3200   ENDIF
 3210  WHEN 3:PROCon(B%,flipx):IF B%:PROCoff:ELSE PROCredrawmap
 3220  WHEN 4:PROCon(B%,flipy):IF B%:PROCoff:ELSE PROCredrawmap
 3230  WHEN 5-c%:PROCon(B%,rotatec):IF B%:PROCoff:ELSE PROCredrawmap
 3240  WHEN 6+c%:PROCon(B%,rotatea):IF B%:PROCoff:ELSE PROCredrawmap
 3250  WHEN 7:PROCon(B%,invert):IF B%:PROCoff:ELSE PROCredrawmap
 3260  WHEN 8:IF B% ELSE PROCgrab(chr%):PROCredrawmap
 3270  WHEN 9:IF B% ELSE PROCstore(chr%)
 3280  WHEN 10:IF B% ELSE PROCswap(chr%):PROCredrawmap
 3290  WHEN 11:IF B% ELSE PROCdefault(chr%):PROCredrawmap
 3300  WHEN 12
 3310   IF B% THEN
 3320    SYS spop,256+36,spr%,"ptr_waiting",2
 3330    SYS "OS_ReadPalette",1,25 TO ,,C%:D%=NOT C%
 3340    REPEAT
 3350     WAIT:t%=(t%+1) AND 31
 3360     IF t%=1:MOUSE COLOUR 2,D%>>8,D%>>16,D%>>24
 3370     IF t%=25:MOUSE COLOUR 2,C%>>8,C%>>16,C%>>24
 3380    UNTIL INKEY-129=255
 3390    SYS "OS_Confirm" TO c%:*%Pointer
 3400    IF INSTR("Yy",CHR$ c%)>0:PROCon(TRUE,clear):PROCoff
 3410   ELSE
 3420    !undo=!bit%:undo!4=bit%!4:undo%=0:CALL clear:PROCredrawmap
 3430   ENDIF
 3440  WHEN 13:IF B% ELSE PROCop(chr%,"AND"):PROCredrawmap
 3450  WHEN 14:IF B% ELSE PROCop(chr%,"OR"):PROCredrawmap
 3460  WHEN 15:IF B% ELSE PROCop(chr%,"EOR"):PROCredrawmap
 3470  WHEN 16:PROCundo
 3480  WHEN 17-c%:IF B% ELSE PROCleft:PROCredrawmap
 3490  WHEN 18+c%:IF B% ELSE PROCright:PROCredrawmap
 3500  WHEN 19-c%:IF B% ELSE PROCdown:PROCredrawmap
 3510  WHEN 20+c%:IF B% ELSE PROCup:PROCredrawmap
 3520  WHEN 21,22:PROCseticon(hand%,icon%,TRUE)
 3530   FOR n=8 TO 20
 3540    IF n<>12 AND n<>16:PROCgreyicon(hand%,n,icon%=21)
 3550   NEXT
 3560  ENDCASE
 3570 ENDCASE
 3580ELSE
 3590 IF b% AND 2 THEN
 3600  CASE hand% OF
 3610  WHEN -2:menuID%=0:SYS crmenu,,quitmenu%,mx%-qx%,qy%
 3620  WHEN infohand%,savehand%,unsavedhand%
 3630  OTHERWISE:current%=FNfind(hand%)
 3640   menuID%=1:$savetext=$(FNaddr("n",current%)+4)
 3650   SYS crmenu,,mainmenu%,mx%-64,my%:menux%=mx%-64:menuy%=my%
 3660  ENDCASE
 3670 ENDIF
 3680ENDIF
 3690ENDPROC
 3700:
 3710DEF PROCon(f,n)
 3720IF f:SYS waiton
 3730CALL n
 3740ENDPROC
 3750:
 3760DEF PROCoff
 3770PROCreplotchr(32,255):PROCredrawicon(handle%(current%),1)
 3780PROCchanged(current%,TRUE):SYS waitoff
 3790ENDPROC
 3800:
 3810DEF PROCseticon(!q%,q%!4,f)
 3820SYS getic,,q%:IF f:q%!8=1<<21:ELSE q%!8=0
 3830q%!12=1<<21:SYS setic,,q%
 3840ENDPROC
 3850:
 3860DEF PROCgreyicon(!q%,q%!4,f)
 3870SYS getic,,q%
 3880IF q%?16 AND 1 THEN
 3890 IF f:q%!8=&7009000:q%!12=&F00F000:ELSE q%!8=&2000000:q%!12=&F00F000
 3900ELSE q%!12=1<<22:IF f:q%!8=0:ELSE q%!8=1<<22
 3910ENDIF
 3920SYS setic,,q%
 3930ENDPROC
 3940:
 3950DEF PROCredrawicon(!q%,q%!4)
 3960LOCAL q%!8,q%!12:SYS setic,,q%
 3970ENDPROC
 3980:
 3990DEF PROCiconxy(hand%,icon%,mx%,my%,RETURN x%,RETURN y%)
 4000q%!100=hand%:SYS "Wimp_GetWindowInfo",,q%+100:q%!200=hand%:q%!204=icon%
 4010SYS getic,,q%+200:x%=mx%-q%!104+q%!120-q%!208:y%=my%-q%!116+q%!124-q%!212
 4020ENDPROC
 4030:
 4040DEF PROCmakewindmenus
 4050DIM names% &1000,menus% &800:name%=names%:last%=names%+&1000:menu%=menus%
 4060RESTORE +0
 4070LOCAL ERROR
 4080ON ERROR LOCAL SYS "XWimp_CloseTemplate":RESTORE ERROR:ERROR EXT ERR,REPORT$
 4090A%=TRUE:*RMEnsure UtilityModule 3.12 MemoryA 8604 0 { > Null: }
 4100IF A% ELSE A%=TRUE:*RMEnsure ROMApps3D 0 MemoryA 8604 0 { > Null: }
 4110is3d%=A%:IF A%:A%=3:ELSE A%=2
 4120SYS "Wimp_OpenTemplate",,"<Obey$Dir>.Templates"+STR$ A%
 4130A%=FNcreatewindow("Edit"):DIM mainhand% 88+q%!84*32,title%(15),handle%(16)
 4140FOR n%=0 TO 84+q%!84*32 STEP 4:mainhand%!n%=q%!n%:NEXT
 4150savehand%=FNcreatewindow("Save"):savex%=q%!8-!q%:savey%=q%!12-q%!4
 4160unsavedhand%=FNcreatewindow("Unsaved"):infohand%=FNcreatewindow("Info")
 4170RESTORE ERROR
 4180SYS "Wimp_CloseTemplate":FOR n%=0 TO 15:DIM A% 255:title%(n%)=A%:NEXT
 4190text=FNtextaddr(unsavedhand%,0):savetext=FNtextaddr(savehand%,0)
 4200savechrs=FNtextaddr(savehand%,7):x%=0:y%=0:mainmenu%=FNmakemenu(x%,y%)
 4210qx%=0:qy%=96:quitmenu%=FNmakemenu(qx%,qy%)
 4220ENDPROC
 4230:
 4240DEF PROCpreparemenus
 4250IF current%>TRUE:$savetext=$(FNaddr("n",current%)+4)
 4260ENDPROC
 4270:
 4280DEF FNcreatewindow(a$)
 4290SYS "Wimp_LoadTemplate",,q%,name%,last%,-1,a$ TO ,,name%,,,,A%
 4300IF A% ELSE ERROR 1,FNlookup1("NoWind",a$)
 4310icon%=0:q%!64=spr%
 4320IF a$="Edit" THEN
 4330 q%!144=spr%:IF is3d%:FOR n%=q%+208 TO q%+624 STEP 32:!n%=q%!208:NEXT
 4340ELSE IF a$="Save":FOR n%=q%+328 TO q%+456 STEP 32:!n%=!n% OR 1<<22:NEXT
 4350 SYS "Wimp_CreateWindow",,q% TO icon%
 4360ENDIF
 4370=icon%
 4380:
 4390DEF PROCtext(item%,$buf)
 4400!(item% AND -4)=name%:IF item% AND 1 ELSE item%!4=-1:item%!8=LEN $buf+1
 4410$name%=$buf:name%+=LEN $buf+1
 4420ENDPROC
 4430:
 4440DEF FNmakemenu(RETURN x%,RETURN y%)
 4450width%=0:READ $buf:IF ?buf=96:$buf=FNlookup($(buf+1))
 4460$menu%=$buf:menu%!12=&70207:menu%!20=44:menu%!24=0:n=-1:READ $buf
 4470WHILE $buf>"":n+=1:PROCitem(menu%,n,$buf):READ $buf:ENDWHILE
 4480IF n>-1:menu%!16=width%*16+8:PROClast(menu%,n)
 4490x%=width%*8+24:menu%+=52+24*n
 4500=menu%-52-24*n
 4510:
 4520DEF PROCitem(menu%,item%,$buf)
 4530LOCAL write%
 4540IF ?buf=96 THEN
 4550 f=INSTR($buf,"|"):IF f ELSE f=INSTR($buf,"?")
 4560 g=buf?(f-1)
 4570 IF f THEN
 4580  $buf=FNlookup(MID$($buf,2,f-2))+"|"+MID$($buf,f+1)
 4590 ELSE $buf=FNlookup($(buf+1))
 4600 ENDIF
 4610ENDIF
 4620menu%+=28+item%*24:!menu%=8 AND g=63:menu%!4=-1:menu%!8=&7000021
 4630IF RIGHT$($buf)="-":!menu%+=2:$buf=LEFT$($buf):y%+=28
 4640item%=INSTR($buf,"|")
 4650IF item%:menu%!4=EVAL MID$($buf,item%+1):$buf=LEFT$($buf,item%-1)
 4660IF LEN $buf<12 AND NOT write% THEN
 4670 $(menu%+12)=$buf
 4680ELSE menu%!8+=256:PROCtext(menu%+12,$buf)
 4690ENDIF
 4700y%+=44:IF width%<LEN $buf:width%=LEN $buf
 4710ENDPROC
 4720:
 4730DEF PROClast(menu%,item%)
 4740menu%+=28+item%*24:!menu%=!menu% OR 128
 4750ENDPROC
 4760:
 4770DEF PROCnewfile
 4780SYS waiton
 4790CASE FNnewfile OF
 4800WHEN 0:PROCreplotchr(32,255):PROCgrab(65):PROCreplotmap:PROCshowup(65)
 4810 !q%=handle%(current%):SYS getw,,q%:SYS openw,,q%
 4820 SYS "Wimp_SetCaretPosition",!q%,-1:SYS waitoff
 4830WHEN 1:SYS waitoff:PROCtellthemoff(FNlookup("Memory"))
 4840WHEN 2:SYS waitoff:PROCtellthemoff(FNlookup("Capacity"))
 4850ENDCASE
 4860ENDPROC
 4870:
 4880DEF FNmemory
 4890SYS "Wimp_SlotSize",-1,-1 TO ,,A%
 4900=A%>=spr%+!spr%+12980-&8000
 4910:
 4920DEF FNnewfile
 4930IF files%=16:=2
 4940LOCAL ERROR
 4950ON ERROR LOCAL RESTORE ERROR:files%-=1:=1
 4960A%=spr%+!spr%-&8000:B%=A%+12980:SYS "Wimp_SlotSize",B%,-1 TO C%
 4970IF A%>B%:SYS "Wimp_SlotSize",A%,-1:RESTORE ERROR:=1
 4980current%=files%:files%+=1:!spr%+=13056
 4990SYS spop,256+27,spr%,"chred","b"+STR$ current%
 5000SYS spop,256+27,spr%,"chred_chr","c"+STR$ current%
 5010SYS spop,256+27,spr%,"chred_map","m"+STR$ current%
 5020SYS spop,256+15,spr%,"n"+STR$ current%,,264,1,15
 5030SYS spop,256+15,spr%,"f"+STR$ current%,,2240,1,15
 5040!spr%=spr%!12:SYS "Wimp_SlotSize",spr%+!spr%-&8000,-1
 5050A%=FNaddr("n",current%):B%=FNaddr("f",current%):n=32
 5060FOR n%=B% TO B%+2239 STEP 10:?n%=23:n%?1=n:SYS "OS_Word",10,n%+1:n+=1:NEXT
 5070!A%=65:$(A%+4)=FNlookup("Default"):$(mainhand%+108)="b"+STR$ current%
 5080$(mainhand%+140)="m"+STR$ current%:$(mainhand%+172)="c"+STR$ current%
 5090$title%(current%)=FNlookup("NoName"):Y%=mainhand%!12-mainhand%!4
 5100IF topy%-Y%<80:topy%=maxy%-80:IF topy%<0:topy%=maxy%
 5110mainhand%!12=topy%:mainhand%!4=topy%-Y%:mainhand%!72=title%(current%)
 5120SYS "XWimp_CreateWindow",,mainhand% TO handle%(current%);X%
 5130IF X% AND 1:PROCdel(current%):ERROR
 5140topy%-=64:IF topy%-Y%<80:topy%=maxy%-80:IF topy%<0:topy%=maxy%
 5150!q%=handle%(current%):SYS getw,,q%
 5160RESTORE ERROR
 5170=0
 5180:
 5190DEF PROCinitsavedrag(!q%)
 5200LOCAL x%,y%,ysize%:A%=TRUE
 5210LOCAL ERROR
 5220ON ERROR LOCAL A%=FALSE:PROCtellthemoff(REPORT$)
 5230IF A% THEN
 5240 fsize%=2240:q%!4=6:SYS getic,,q%:IF current%>-1:dragfrom%=current%
 5250 IF q%!24 AND 1<<21:fsize%=FNsavechrs(savechrs)
 5260 q%!40=!q%:SYS getw,,q%+40:q%!4=2:SYS getic,,q%:q%!8+=q%!44-q%!60
 5270 q%!12+=q%!56-q%!64:q%!16=q%!8+68:q%!20=q%!12+68:q%!24=0:q%!28=0:!q%=0
 5280 q%!4=5:SYS mvar,-1,4 TO ,,x%:SYS mvar,-1,11 TO ,,y%:q%!32=(y%+1)<<x%
 5290 SYS mvar,-1,5 TO ,,x%:SYS mvar,-1,12 TO ,,y%:q%!36=(y%+1)<<x%
 5300 SYS "OS_Byte",161,28 TO ,,x%
 5310 IF x% AND 2 THEN
 5320  dragging%=2:SYS &62400,&C5,spr%,"file_ff7",q%+8 TO ;x%
 5330  IF x% AND 1:x%=0:ELSE x%=2
 5340 ENDIF
 5350 IF (x% AND 2)=0:SYS "Wimp_DragBox",,q%:dragging%=1
 5360ENDIF
 5370RESTORE ERROR
 5380ENDPROC
 5390:
 5400DEF FNiconbar
 5410LOCAL ii%:!ic%=-1:ic%!4=0:ic%!8=0:ic%!12=64:ic%!16=68:ic%!20=&700311A
 5420DIM ic%!24 12:$(ic%!24)="!chred":ic%!28=1:ic%!32=12
 5430SYS "Wimp_CreateIcon",,ic% TO ii%
 5440=ii%
 5450:
 5460DEF PROCmenuselect
 5470LOCAL redo%:SYS getptr,,q%+80
 5480redo%=q%!88 AND 1
 5490CASE menuID% OF
 5500WHEN 0:PROCdecodeiconmenu
 5510WHEN 1:PROCdecodemainmenu
 5520ENDCASE
 5530ENDPROC
 5540:
 5550DEF PROCdecodeiconmenu
 5560CASE !q% OF
 5570WHEN 1:end%=TRUE:rst%=FALSE
 5580ENDCASE
 5590ENDPROC
 5600:
 5610DEF PROCdecodemainmenu
 5620LOCAL b%,B%:b%=q%!88 AND 6:redo%=q%!88 AND 3
 5630CASE !q% OF
 5640WHEN 0:f$=FNgetstr(savetext):IF FNpath(f$):PROCsave(f$)
 5650WHEN 1:SYS "OS_WriteN",FNaddr("f",current%),2240
 5660 SYS fredraw,-1,0,0,65535,65535
 5670WHEN 2:SYS 6,25:SYS fredraw,-1,0,0,65535,65535
 5680ENDCASE
 5690PROCpreparemenus:IF redo%:SYS crmenu,,mainmenu%,menux%,menuy%
 5700ENDPROC
 5710:
 5720DEF PROCfront(!q%)
 5730SYS getw,,q%:q%!28=-1:SYS openw,,q%
 5740ENDPROC
 5750:
 5760DEF PROCopenat(!q%,q%!44,q%!48)
 5770SYS getw,,q%:q%!12+=q%!44-q%!4:q%!16+=q%!48-q%!8:SYS openw,,q%
 5780ENDPROC
 5790:
 5800DEF PROCopenats(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24)
 5810q%!28=-1:SYS openw,,q%
 5820ENDPROC
 5830:
 5840DEF PROCclosewindow(hand%)
 5850A%=FNfind(hand%)
 5860IF A%<0 THEN
 5870 !q%=hand%:SYS "Wimp_CloseWindow",,q%
 5880ELSE current%=A%:IF FNsaveold(FALSE):PROCdelete(current%)
 5890ENDIF
 5900ENDPROC
 5910:
 5920DEF PROCforceredraw(hand%)
 5930!q%=hand%:SYS "Wimp_GetWindowInfo",,q%
 5940SYS fredraw,hand%,q%!44,q%!48,q%!52,q%!56
 5950ENDPROC
 5960:
 5970DEF PROCsave(f$)
 5980LOCAL ERROR
 5990ON ERROR LOCAL IF ERR=1:PROCtellthemoff(REPORT$):RESTORE ERROR:ENDPROC:ELSE IF FNtellthemoff(REPORT$,FALSE):RESTORE ERROR:ENDPROC
 6000!q%=savehand%:f=3
 6010FOR q%!4=4 TO 6
 6020 SYS getic,,q%:IF q%!24 AND 1<<21:f=q%!4
 6030NEXT
 6040n%=FNaddr("f",current%)
 6050CASE f OF
 6060WHEN 3:SYS "OS_File",10,f$,&FF7,,n%,n%+2240
 6070WHEN 4:PROCsavepart(f$,n%,"�-�")
 6080WHEN 5:PROCsavepart(f$,n%," -~")
 6090WHEN 6:PROCsavepart(f$,n%,$savechrs)
 6100ENDCASE
 6110RESTORE ERROR
 6120IF f$<>"<Wimp$Scrap>":$(FNaddr("n",current%)+4)=f$:PROCchanged(current%,0)
 6130ENDPROC
 6140:
 6150DEF FNsavechrs(g)
 6160IF ?g=13:ERROR 1,FNlookup("NullStr")
 6170FOR n=0 TO 252 STEP 4:buf!n=0:NEXT:lit%=FALSE:bar%=FALSE:top%=0
 6180range%=FALSE:c2%=0
 6190WHILE ?g>31
 6200 c1%=FNasc(g):IF c1%<32:ERROR 1,FNlookup("Unprint")
 6210 IF ?g=45 THEN
 6220  g+=1:IF ?g<32:ERROR 1,FNlookup1("BadCtrl","-")
 6230  c2%=FNasc(g):IF c2%<32:ERROR 1,FNlookup("Unprint")
 6240 ELSE c2%=c1%
 6250 ENDIF
 6260 IF c1%>c2%:SWAP c1%,c2%
 6270 FOR n=c1% TO c2%:buf?n=1:NEXT
 6280ENDWHILE
 6290buf?127=0:g=0:FOR n=0 TO 255:g=g+buf?n:NEXT
 6300IF g ELSE ERROR 1,FNlookup("NullStr")
 6310=g*10
 6320:
 6330DEF PROCsavepart(f$,f,$q%)
 6340fsize%=FNsavechrs(q%):g=OPENOUT f$:SYS "OS_File",18,f$,&FF7:EXT #g=fsize%
 6350FOR n=32 TO 255
 6360 IF buf?n:SYS "XOS_GBPB",2,g,f,10 TO C%;D%
 6370 f+=10:IF D% AND 1:PROCsaveclose(C%)
 6380NEXT
 6390PROCsaveclose(0)
 6400ENDPROC
 6410:
 6420DEF PROCsaveclose(C%)
 6430IF g:SYS "XOS_Find",0,g TO E%;F%:ELSE F%=0
 6440IF F% AND 1 AND C%=0:SYS "OS_GenerateError",E%
 6450IF C%:SYS "OS_GenerateError",C%
 6460ENDPROC
 6470:
 6480DEF FNasc(RETURN g)
 6490LOCAL A%
 6500CASE ?g OF
 6510WHEN 92:IF g?1<31:ERROR 1,FNlookup1("BadCtrl","\"):ELSE A%=g?1:g+=2
 6520WHEN 124:g+=2
 6530 CASE g?-1 OF
 6540 WHEN 33:A%=FNasc(g) EOR 128
 6550 WHEN 63:A%=127
 6560 OTHERWISE:A%=g?-1:IF A%<32:ERROR 1,FNlookup1("BadCtrl","|")
 6570  IF A%>63 AND A%<>124 AND A%<127 THEN
 6580   B%=INSTR("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_",CHR$ A%)
 6590   IF B% ELSE B%=INSTR("@abcdefghijklmnopqrstuvwxyz{|}~`",CHR$ A%)
 6600   A%=B%-1 AND 31
 6610  ENDIF
 6620 ENDCASE
 6630WHEN 132
 6640 LOCAL ERROR
 6650 ON ERROR LOCAL RESTORE ERROR:ERROR 1,FNlookup("BadHex")
 6660 IF g?2<32:ERROR
 6670 A%=EVAL ("&"+MID$($g,2,2)):g+=3
 6680 RESTORE ERROR
 6690OTHERWISE:A%=?g:g+=1
 6700ENDCASE
 6710=A%
 6720:
 6730DEF PROCload($buf)
 6740LOCAL type%,ftype%,in%,s%,l%,ext
 6750IF $buf<>"":IF FNcheckfile($buf,ext):PROCdoload($buf,msg%!20)
 6760ENDPROC
 6770:
 6780DEF FNcheckfile($buf,RETURN ext)
 6790SYS "OS_File",5,buf TO type%,,ftype%,,ext
 6800IF type%=1 AND (ftype% OR 255)=&FFFFF7FF THEN
 6810 IF ext=0 OR ext MOD 10 OR ext>2240:PROCtellthemoff(FNlookupf("BadFont",$buf)):type%=0
 6820ELSE
 6830 IF type%=1 THEN
 6840  PROCtellthemoff(FNlookupf("CantLoad",$buf))
 6850 ELSE PROCtellthemoff(FNlookup("CantLDir"))
 6860 ENDIF
 6870 type%=0
 6880ENDIF
 6890=type%
 6900:
 6910DEF PROCdoload($buf,W%)
 6920LOCAL i%,x,y,f$:f$=$buf:SYS "OS_File",5,f$ TO ,,,,ext
 6930IF ext<0 OR ext>2240:PROCtellthemoff(FNlookupf("BadFont",f$)):ENDPROC
 6940W%=FNfind(W%):current%=W%
 6950IF W%<0 THEN
 6960 IF FNmemory ELSE PROCtellthemoff(FNlookup("Memory")):ENDPROC
 6970 IF files%=16:PROCtellthemoff(FNlookup("Capacity")):ENDPROC
 6980ENDIF
 6990SYS waiton
 7000LOCAL ERROR
 7010ON ERROR LOCAL SYS waitoff:IF FNnoload:SYS waiton:ELSE RESTORE ERROR:ENDPROC
 7020SYS "OS_File",255,f$,q%:FOR n%=0 TO 252 STEP 4:n%!buf=0:NEXT
 7030FOR n%=q% TO q%+ext-1 STEP 10
 7040 IF ?n%<>23:ERROR 1,FNlookupf("BadFont",f$)
 7050 IF n%?1<32 THEN
 7060  PROCtellthemoff(FNlookup("BadDef"))
 7070 ELSE IF buf?(n%?1):PROCtellthemoff(FNlookup("DupDef")):n%?1=0
 7080 ENDIF
 7090 buf?(n%?1)=1
 7100NEXT
 7110RESTORE ERROR
 7120IF W%<0:IF FNnewfile
 7130FOR n%=q% TO q%+ext-1 STEP 10
 7140 IF n%?1>31:n=FNaddr("f",current%)+(n%?1-32)*10:!n=!n%:n!4=n%!4:n!6=n%!6
 7150NEXT
 7160!q%=handle%(current%):SYS getw,,q%:SYS openw,,q%
 7170SYS "Wimp_SetCaretPosition",!q%,-1
 7180IF W%<0 THEN
 7190 IF f$<>"<Wimp$Scrap>":$(FNaddr("n",current%)+4)=f$
 7200 PROCshowup(65):?A%=65:PROCgrab(65):PROCreplotmap
 7210 PROCredrawicon(!q%,0):PROCtitlebar(current%)
 7220ELSE PROCchanged(current%,TRUE)
 7230ENDIF
 7240PROCreplotchr(32,255):SYS waitoff
 7250ENDPROC
 7260:
 7270DEF PROCinternal(W%)
 7280W%=FNfind(W%):IF W%=dragfrom%:ENDPROC
 7290current%=W%
 7300IF W%<0 THEN
 7310 IF FNmemory ELSE PROCtellthemoff(FNlookup("Memory")):ENDPROC
 7320 IF files%=16:PROCtellthemoff(FNlookup("Capacity")):ENDPROC
 7330ENDIF
 7340SYS waiton
 7350IF W%<0:IF FNnewfile
 7360A%=FNaddr("f",current%):B%=FNaddr("f",dragfrom%):!q%=savehand%:f=3
 7370FOR q%!4=4 TO 6
 7380 SYS getic,,q%:IF q%!24 AND 1<<21:f=q%!4
 7390NEXT
 7400n%=FNaddr("f",current%)
 7410CASE f OF
 7420WHEN 3:FOR n%=32 TO 255 STEP 4:n%!buf=TRUE:NEXT
 7430WHEN 4:$q%="�-�":IF FNsavechrs(q%)
 7440WHEN 5:$q%=" -~":IF FNsavechrs(q%)
 7450WHEN 6:IF FNsavechrs(savechrs)
 7460ENDCASE
 7470FOR n%=32 TO 255
 7480 IF n%?buf:!A%=!B%:A%!4=B%!4:A%!6=B%!6
 7490 A%+=10:B%+=10
 7500NEXT
 7510!q%=handle%(current%):SYS getw,,q%:SYS openw,,q%
 7520SYS "Wimp_SetCaretPosition",!q%,-1
 7530IF W%<0 THEN
 7540 $(FNaddr("n",current%)+4)=FNlookup("Default"):PROCshowup(65):?A%=65
 7550 PROCgrab(65):PROCreplotmap:PROCredrawicon(!q%,0)
 7560ENDIF
 7570PROCchanged(current%,TRUE):PROCreplotchr(32,255):SYS waitoff:SYS crmenu,,-1
 7580ENDPROC
 7590:
 7600DEF FNnoload
 7610LOCAL A%
 7620IF ERR=1 THEN
 7630 PROCtellthemoff(REPORT$):A%=FALSE
 7640ELSE A%=FNtellthemoff(REPORT$,FALSE)
 7650ENDIF
 7660=A%
 7670:
 7680DEF FNsaveold(f)
 7690LOCAL n%:delete%=f=FALSE
 7700IF f THEN
 7710 f=FNchanged(-1)
 7720 IF f=1:$text=FNlookup("FontQuit1"):ELSE $text=FNlookupf("FontQuitN",STR$ f)
 7730ELSE f=FNchanged(current%):$text=FNlookup("FontDump")
 7740ENDIF
 7750SYS getptr,,q%
 7760IF f THEN
 7770 SYS mvar,-1,11 TO ,,x%:SYS mvar,-1,4 TO ,,n%:x%=x%<<n%
 7780 SYS mvar,-1,12 TO ,,y%:SYS mvar,-1,5 TO ,,n%:y%=y%<<n%
 7790 SYS crmenu,,unsavedhand%,x%/2-370,y%/2+160 TO ,n%
 7800ENDIF
 7810=(f=0)
 7820:
 7830DEF PROCtellthemoff($(buf+4))
 7840!buf=0:SYS "Wimp_ReportError",buf,1,"ChrEd"
 7850ENDPROC
 7860:
 7870DEF FNtellthemoff($(buf+4),f)
 7880!buf=0:SYS "Wimp_ReportError",buf,3+(f AND 128),"ChrEd" TO ,f
 7890=f-1
 7900:
 7910DEF PROCerrbox
 7920LOCAL what%:SYS "Wimp_DragBox",,-1:SYS &62401
 7930!buf=ERR:$(buf+4)=REPORT$+" (at line "+STR$ ERL+")"+CHR$ 0
 7940SYS "Wimp_ReportError",buf,3,"ChrEd" TO ,what%
 7950IF what%=2:end%=TRUE:rst%=FALSE
 7960ENDPROC
 7970:
 7980DEF PROCinitflags
 7990DIM bit% 8,undo 16,mc% 1024,tempbuf% 2240:files%=0
 8000FOR c%=0 TO 2 STEP 2
 8010P%=mc%
 8020[OPT c%
 8030.flipx TEQ 1,#0:MOVNE 1,#223
 8040.flipx0 MOV 4,#8
 8050.flipx1 LDRB 2,[0]:MOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3
 8060MOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1
 8070ADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3
 8080MOVS 2,2,LSR #1:ADC 3,3,3:STRB 3,[0],#1:SUBS 4,4,#1:BNE flipx1:ADD 0,0,#2
 8090SUBS 1,1,#1:BPL flipx0:MOV PC,14
 8100:
 8110.flipy TEQ 1,#0:MOVNE 1,#223:ADD 4,0,#7
 8120.flipy0 LDRB 2,[0]:LDRB 3,[4]:STRB 3,[0],#1:STRB 2,[4],#-1:LDRB 2,[0]
 8130LDRB 3,[4]:STRB 3,[0],#1:STRB 2,[4],#-1:LDRB 2,[0]:LDRB 3,[4]:STRB 3,[0],#1
 8140STRB 2,[4],#-1:LDRB 2,[0]:LDRB 3,[4]:STRB 3,[0],#7:STRB 2,[4],#13
 8150SUBS 1,1,#1:BPL flipy0:MOV PC,14
 8160:
 8170.rotatec TEQ 1,#0:MOVNE 1,#223:ADR 2,temp
 8180.rcloop MOV 3,#7:MOV 7,#1
 8190.cxloop MOV 4,#7:MOV 5,#0:MOV 6,#128
 8200.cyloop LDRB 8,[0,4]:ANDS 8,8,7:ORRNE 5,5,6:MOV 6,6,LSR #1:SUBS 4,4,#1
 8210BPL cyloop:STRB 5,[2,3]:MOV 7,7,LSL #1:SUBS 3,3,#1:BPL cxloop:LDRB 4,[2]
 8220STRB 4,[0],#1:LDRB 4,[2,#1]:STRB 4,[0],#1:LDRB 4,[2,#2]:STRB 4,[0],#1
 8230LDRB 4,[2,#3]:STRB 4,[0],#1:LDRB 4,[2,#4]:STRB 4,[0],#1:LDRB 4,[2,#5]
 8240STRB 4,[0],#1:LDRB 4,[2,#6]:STRB 4,[0],#1:LDRB 4,[2,#7]:STRB 4,[0],#3
 8250SUBS 1,1,#1:BPL rcloop:MOV PC,14
 8260:
 8270.temp EQUD 0:EQUD 0
 8280:
 8290.rotatea TEQ 1,#0:MOVNE 1,#223:ADR 2,temp
 8300.raloop MOV 3,#7:MOV 6,#128
 8310.axloop MOV 4,#7:MOV 5,#0:MOV 7,#1
 8320.ayloop LDRB 8,[0,4]:ANDS 8,8,6:ORRNE 5,5,7:MOV 7,7,LSL #1:SUBS 4,4,#1
 8330BPL ayloop:STRB 5,[2,3]:MOV 6,6,LSR #1:SUBS 3,3,#1:BPL axloop:LDRB 4,[2]
 8340STRB 4,[0],#1:LDRB 4,[2,#1]:STRB 4,[0],#1:LDRB 4,[2,#2]:STRB 4,[0],#1
 8350LDRB 4,[2,#3]:STRB 4,[0],#1:LDRB 4,[2,#4]:STRB 4,[0],#1:LDRB 4,[2,#5]
 8360STRB 4,[0],#1:LDRB 4,[2,#6]:STRB 4,[0],#1:LDRB 4,[2,#7]:STRB 4,[0],#3
 8370SUBS 1,1,#1:BPL raloop:MOV PC,14
 8380:
 8390.invert TEQ 1,#0:MOVNE 1,#223
 8400.invert0 MOV 4,#8:LDRB 2,[0]:EOR 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 8410EOR 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]:EOR 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 8420EOR 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]:EOR 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 8430EOR 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]:EOR 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 8440EOR 2,2,#255:STRB 2,[0],#3:SUBS 1,1,#1:BPL invert0:MOV PC,14
 8450:
 8460.clear TEQ 1,#0:MOVNE 1,#223:MOV 2,#0
 8470.clear0 STRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#1
 8480STRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#3:SUBS 1,1,#1
 8490BPL clear0:MOV PC,14
 8500:
 8510.plotchr MOV 7,#7
 8520.plotchr1 SWI 256+23:SWI 256+6:LDRB 0,[3,7]:SWI "OS_WriteC":SWI 256:SWI 256
 8530SWI 256:SWI 256:SWI 256:SWI 256:SWI 256:MOV 0,#4:MOV 1,4:SUB 2,5,7,LSL #2
 8540SWI "OS_Plot":MOV 0,#17:MOV 1,#15:MOV 2,#0:SWI "OS_Plot":SUBS 7,7,#1
 8550BPL plotchr1:MOV PC,14
 8560]NEXT
 8570var$=STRING$(255," "):sel$=var$:sel$="":file$=var$:file$="":var$=""
 8580current%=-1:!bit%=&7E66663C:bit%!4=&666666:undo%=0:!undo=!bit%:undo!4=bit%!4
 8590undo!8=!undo:undo!12=undo!4
 8600ENDPROC
 8610:
 8620DEF PROCtextend(hand%,icon%)
 8630LOCAL i%:PROCgeticoninfo(hand%,icon%):WHILE i%?(icn!28)>31:i%+=1:ENDWHILE
 8640SYS "Wimp_SetCaretPosition",hand%,icon%,,,-1,i%
 8650ENDPROC
 8660:
 8670DEF PROCgrab(chr%)
 8680P%=FNchr(chr%):!undo=!bit%:undo!4=bit%!4:undo%=0:!bit%=!P%:bit%!4=P%!4
 8690ENDPROC
 8700:
 8710DEF PROCstore(chr%)
 8720P%=FNchr(chr%):undo%=chr%+256*current%:undo!8=!P%:undo!12=P%!4:!P%=!bit%
 8730P%!4=bit%!4:PROCreplotchr(chr%,chr%):PROCchanged(current%,TRUE)
 8740ENDPROC
 8750:
 8760DEF PROCswap(chr%)
 8770P%=FNchr(chr%):SWAP !P%,!bit%:SWAP P%!4,bit%!4
 8780PROCreplotchr(chr%,chr%):PROCchanged(current%,TRUE)
 8790ENDPROC
 8800:
 8810DEF PROCdefault(chr%)
 8820?q%=chr%:SYS "OS_Word",10,q%:!undo=!bit%:undo!4=bit%!4:undo%=0
 8830!bit%=q%!1:bit%!4=q%!5
 8840ENDPROC
 8850:
 8860DEF PROCclear(chr%)
 8870P%=FNchr(chr%):!undo=!bit%:undo!4=bit%!4:undo%=0:!P%=0:P%!4=0:PROCredrawmap
 8880ENDPROC
 8890:
 8900DEF PROCleft
 8910FOR n%=0 TO 7:n%?bit%=n%?bit%*2-(n%?bit%>127):NEXT
 8920ENDPROC
 8930:
 8940DEF PROCright
 8950FOR n%=0 TO 7:n%?bit%=n%?bit%/2+128*(n%?bit% AND 1):NEXT
 8960ENDPROC
 8970:
 8980DEF PROCup
 8990f=?bit%:FOR n%=0 TO 6:n%?bit%=n%?(bit%+1):NEXT:bit%?7=f
 9000ENDPROC
 9010:
 9020DEF PROCdown
 9030f=bit%?7:FOR n%=6 TO 0 STEP -1:n%?(bit%+1)=n%?bit%:NEXT:?bit%=f
 9040ENDPROC
 9050:
 9060DEF PROCop(chr%,$buf)
 9070P%=FNchr(chr%):!undo=!bit%:undo!4=bit%!4:undo%=0
 9080!bit%=EVAL ("!bit% "+$buf+" !P%"):bit%!4=EVAL ("bit%!4 "+$buf+" P%!4")
 9090ENDPROC
 9100:
 9110DEF PROCundo
 9120IF undo% THEN
 9130 P%=FNaddr("f",undo%>>8)+(undo% AND 255)*10-318
 9140 SWAP !P%,undo!8:SWAP P%!4,undo!12
 9150 f=?FNaddr("n",current%)=(undo% AND 255) AND current%=undo% DIV 256
 9160 IF current%=undo% DIV 256:PROCreplotchr(undo% AND 255,undo% AND 255)
 9170ELSE SWAP !bit%,!undo:SWAP bit%!4,undo!4:PROCredrawmap
 9180ENDIF
 9190ENDPROC
 9200:
 9210DEF PROCredrawmap
 9220PROCreplotmap:PROCredrawicon(handle%(current%),0)
 9230PROCredrawicon(handle%(current%),2)
 9240ENDPROC
 9250:
 9260DEF PROChelp
 9270W%=FNfind(q%!32):$buf=""
 9280IF W%>-1:q%!40=handle%(W%):q%!44=22:SYS getic,,q%+40:B%=q%?66 AND 32
 9290CASE q%!32 OF
 9300WHEN -2:$buf="IconBar"
 9310WHEN savehand%
 9320 CASE q%!36 OF
 9330 WHEN 0:$buf="SaveName"
 9340 WHEN 1:$buf="SaveOK"
 9350 WHEN 2:$buf="SaveDrag"
 9360 WHEN 3:$buf="SaveAll"
 9370 WHEN 4:$buf="SaveTBS"
 9380 WHEN 5:$buf="SaveTBC"
 9390 WHEN 6:$buf="SaveDef"
 9400 WHEN 7:$buf="SaveEnter"
 9410 WHEN 8:$buf="SaveLiteral"
 9420 WHEN 9:$buf="SaveRange"
 9430 WHEN 10:$buf="SaveHex"
 9440 WHEN 11:$buf="SaveBar"
 9450 OTHERWISE:$buf="SaveW"
 9460 ENDCASE
 9470WHEN infohand%:$buf="Info"
 9480WHEN unsavedhand%
 9490 CASE q%!36 OF
 9500 WHEN 1:IF delete%:$buf="UnsvDiscard":ELSE $buf="UnsvQuit"
 9510 WHEN 2:IF delete%:$buf="UnsvKeep":ELSE $buf="UnsvNoQuit"
 9520 OTHERWISE:IF delete%:$buf="UnsvLoseOne":ELSE $buf="UnsvLoseAll"
 9530 ENDCASE
 9540OTHERWISE
 9550 IF W%>-1 THEN
 9560  CASE q%!36 OF
 9570  WHEN 0:$buf="MainEdit"
 9580  WHEN 1:$buf="MainSelChr"
 9590  WHEN 2:$buf="MainSEdit"
 9600  WHEN 3:$buf="MainFlipX"
 9610  WHEN 4:$buf="MainFlipY"
 9620  WHEN 5:$buf="MainRotC"
 9630  WHEN 6:$buf="MainRotA"
 9640  WHEN 7:$buf="MainInv"
 9650  WHEN 8:$buf="MainGrab"
 9660  WHEN 9:$buf="MainStore"
 9670  WHEN 10:$buf="MainSwap"
 9680  WHEN 11:$buf="MainDeflt"
 9690  WHEN 12:$buf="MainClear":IF B%:$buf+=",MainConfirm1"
 9700  WHEN 13:$buf="MainAnd"
 9710  WHEN 14:$buf="MainOr"
 9720  WHEN 15:$buf="MainEor"
 9730  WHEN 16:$buf="MainUndo"
 9740  WHEN 17:$buf="MainLeft"
 9750  WHEN 18:$buf="MainRight"
 9760  WHEN 19:$buf="MainDown"
 9770  WHEN 20:$buf="MainUp"
 9780  WHEN 21:$buf="MainAppChr"
 9790  WHEN 22:$buf="MainAppSet"
 9800  WHEN 23:$buf="MainCurrent"
 9810  OTHERWISE:$buf="Main":IF FNchanged(W%):$buf+=",MainConfirm2"
 9820  ENDCASE
 9830 ELSE
 9840  SYS "Wimp_GetMenuState",,q%+20
 9850  CASE menuID% OF
 9860  WHEN 0:$buf="MenuIcon"
 9870  WHEN 1:$buf="MenuMain"
 9880  ENDCASE
 9890  B%=q%+20:WHILE !B%<>-1:$buf+=STR$ !B%:B%+=4:ENDWHILE
 9900  IF $buf="MenuIcon1" AND FNchanged(-1):$buf+="+"
 9910  IF RIGHT$($buf)>"9":$buf=""
 9920 ENDIF
 9930ENDCASE
 9940PROCtohelp($buf)
 9950ENDPROC
 9960:
 9970DEF PROCtohelp($buf)
 9980$(q%+20)="":f=INSTR($buf,","):IF f ELSE f=LEN $buf+1
 9990WHILE $buf>""
10000 $(q%+20)+=FNlookup(LEFT$($buf,f-1)):$buf=MID$($buf,f+1):f=INSTR($buf,",")
10010 IF f ELSE f=LEN $buf+1
10020ENDWHILE
10030$(q%+20)+=CHR$ 0:!q%=23+LEN $(q%+20) AND -4:q%!12=q%!8:PROCreply(17,1283)
10040ENDPROC
10050:
10060DEF FNlookup($icn)=FNlookupf($icn,"")
10070:
10080DEF PROCtoken(a$)
10090n%=INSTR($icn,a$)
10100WHILE n%
10110 IF n%?icn<>48 ELSE IF B% ELSE n%?icn=49
10120 $icn=LEFT$($icn,n%-1)+FNlookup(a$+CHR$ n%?icn)+MID$($icn,n%+2)
10130 n%=INSTR($icn,a$)
10140ENDWHILE
10150ENDPROC
10160:
10170DEF FNlookup1($icn,a$)
10180LOCAL n%
10190SYS "MessageTrans_Lookup",messages%,icn,icn,256,FNlookup(a$) TO ,,,n%
10200n%?icn=13:PROCtoken("`"):IF os3% ELSE PROCtoken("\")
10210=$icn
10220:
10230DEF FNlookupf($icn,a$)
10240LOCAL n%
10250SYS "MessageTrans_Lookup",messages%,icn,icn,256,a$ TO ,,,n%:n%?icn=13
10260n%=INSTR($icn,"~"):IF n%:$icn=LEFT$($icn,n%-1)+a$+MID$($icn,n%+2)
10270PROCtoken("`"):IF os3% ELSE PROCtoken("\")
10280=$icn
10290:
10300DEF PROCdatasave
10310IF msg%!40<>&FF7:ENDPROC
10320f%=FALSE
10330IF msg%!4=mytask% THEN
10340 CASE msg%!20 OF
10350 WHEN savehand%,unsavedhand%,infohand%:f%=TRUE
10360 OTHERWISE:PROCinternal(msg%!20):f%=TRUE
10370 ENDCASE
10380ENDIF
10390IF f%:ENDPROC
10400SYS "XOS_ReadVarVal","Wimp$Scrap",q%+300 TO a%;f%
10410IF f% AND 1 AND !a%=&124:PROCtellthemoff(FNlookup("NoScrap")):ENDPROC
10420$(msg%+44)="<Wimp$Scrap>"+CHR$ 0:!msg%=60:msg%!36=-1
10430msg%!20=FNaddr("f",current%):msg%!24=2240:PROCreply(17,2)
10440ENDPROC
10450:
10460DEF PROCdatasaveack
10470IF msg%!4=mytask%:ENDPROC
10480PROCsave(FNgetstr(msg%+44)):SYS getptr,,q%:PROCreply(18,3):SYS crmenu,,-1
10490ENDPROC
10500:
10510DEF PROCdataload
10520!msg%=20:PROCreply(17,4):PROCload(FNgetstr(msg%+44))
10530IF FNgetstr(msg%+44)="<Wimp$Scrap>":*Remove <Wimp$Scrap>
10540ENDPROC
10550:
10560DEF PROCdataopen
10570IF msg%!40<>&FF7:ENDPROC
10580!msg%=20:PROCreply(17,4):PROCload(FNgetstr(msg%+44))
10590$(FNaddr("n",current%)+4)=FNgetstr(msg%+44)
10600ENDPROC
10610:
10620DEF FNaddr(a$,A%)
10630SYS spop,256+24,spr%,a$+STR$ A% TO ,,A%
10640=A%+A%!32
10650:
10660DEF FNfind(hand%)
10670LOCAL A%:WHILE hand%<>handle%(A%) AND A%<files%:A%+=1:ENDWHILE
10680IF A%=files%:=-1:ELSE =A%
10690:
10700DEF FNchanged(n%)
10710LOCAL f
10720IF n%<0 THEN
10730 IF files%:FOR n%=0 TO files%-1:f-=FNchanged(n%)>0:NEXT
10740ELSE SYS xspop,256+24,spr%,"n"+STR$ n% TO ;B%
10750 IF B% AND 1:f=0:ELSE f=?(FNaddr("n",n%)+3)
10760ENDIF
10770=f
10780:
10790DEF PROCchanged(n%,f)
10800?(FNaddr("n",n%)+3)=f<>0 AND 1:PROCtitlebar(n%)
10810ENDPROC
10820:
10830DEF PROCtitlebar(n%)
10840$icn=$title%(n%):$buf=$(FNaddr("n",n%)+4)
10850IF $buf="BBCfont":$buf=FNlookup("NoName")
10860$title%(n%)=RIGHT$($buf,253):IF FNchanged(n%):$title%(n%)+=" *"
10870IF $title%(n%)<>$icn THEN
10880 SYS "XWimp_SetCaretPosition",-1
10890 SYS "XWimp_SetCaretPosition",handle%(current%),-1
10900ENDIF
10910ENDPROC
10920:
10930DEF PROCdelete(n%)
10940!q%=handle%(n%):IF !q%>0:SYS "XWimp_DeleteWindow",,q%
10950PROCdel(n%):files%-=1
10960ENDPROC
10970:
10980DEF PROCdel(A%)
10990LOCAL B%:B%=files%-1:SYS xspop,256+25,spr%,"b"+STR$ A%
11000SYS xspop,256+25,spr%,"c"+STR$ A%:SYS xspop,256+25,spr%,"m"+STR$ A%
11010SYS xspop,256+25,spr%,"n"+STR$ A%:SYS xspop,256+25,spr%,"f"+STR$ A%
11020handle%(A%)=-1:!spr%=spr%!12
11030IF B%>A% THEN
11040 SWAP handle%(A%),handle%(B%):SWAP title%(A%),title%(B%)
11050 SYS xspop,256+26,spr%,"b"+STR$ B%,"b"+STR$ A%
11060 SYS xspop,256+26,spr%,"c"+STR$ B%,"c"+STR$ A%
11070 SYS xspop,256+26,spr%,"m"+STR$ B%,"m"+STR$ A%
11080 SYS xspop,256+26,spr%,"n"+STR$ B%,"n"+STR$ A%
11090 SYS xspop,256+26,spr%,"f"+STR$ B%,"f"+STR$ A%
11100ENDIF
11110SYS "Wimp_SlotSize",spr%+!spr%-&8000,-1
11120ENDPROC
11130:
11140REM Menus
11150:
11160DATA ``T
11170DATA `SaveF?savehand%,`Test,`UnTest,
11180:
11190DATA ``T
11200DATA `IW|infohand%,`Q,

�     >!RunImage (!ChrEd)
� By  Darren Salt
� (c) AU May 1994
(:
2app%=�-&8000
<>ș "XOS_SWINumberFromString",,"XHourglass_On" � waiton;ok%
F� ok% � 1:waiton=�
P@ș "XOS_SWINumberFromString",,"XHourglass_Off" � waitoff;ok%
Z� ok% � 1:waitoff=�
d'ș "OS_Module",6,,,20 � ,,messages%
n>ș "MessageTrans_FileInfo",,"<Obey$Dir>.Messages" � F%,,L%
x� F% � 1 �
� messages%!16=0
��
�1 ș "XOS_Module",6,,,L% � A%,,messages%!16;F%
�B � F% � 1:ș "OS_Module",7,,messages%:ș "OS_GenerateError",A%
��
�Kș "MessageTrans_OpenFile",messages%,"<Obey$Dir>.Messages",messages%!16
��� � ș "MessageTrans_CloseFile",messages%:ș "OS_Module",7,,messages%!16:ș "OS_Module",7,,messages%:ș waitoff:ș "OS_SpriteOp",256+60,-1:� � �,�$+" @ "+� �
�ș waiton:os3%=�
�IA%=300:B%=0:*RMEnsure WindowManager 3 MemoryA 8604 10_200 { > Null: }
�� A%>299 �
�4 B%=&860C:C%=1:D%=2:E%=3:F%=5:G%=8:H%=10:I%=1282
�. J%=&400C0:K%=&400C3:L%=&400C9:M%=0:os3%=�
��
Cș "Wimp_Initialise",A%,&4B534154,"ChrEd",B% � version%,mytask%
9ș "OS_File",5,"<Obey$Dir>.Sprites" � X%,,,,Y%:Y%+=16
:�=�-Y%:spr%=�:� X%<>1:� 214,"!ChrEd Sprites not found"
"'� SWI 57 = "OS_SWINumberFromString"
,=ș 57,,"OS_SpriteOp" � spop:ș 57,,"XOS_SpriteOp" � xspop
6Iș 57,,"OS_ReadModeVariable" � mvar:ș 57,,"Wimp_CreateMenu" � crmenu
@Jș 57,,"Wimp_ForceRedraw" � fredraw:ș 57,,"Wimp_GetIconState" � getic
JJș 57,,"Wimp_GetPointerInfo" � getptr:ș 57,,"Wimp_OpenWindow" � openw
TJș 57,,"Wimp_GetWindowState" � getw:ș 57,,"Wimp_SetIconState" � setic
^E� q% 2240,msg% 320,buf 256,icn &200,ic% &100,scale% 16,colours 16
h@� caret% 24:caret%!20=�:ș "XWimp_SpriteOp",24,,"left" � ;f%
r+� f% � 1:*IconSprites <Obey$Dir>.Arrows
|)!spr%=Y%:spr%!8=16:ș spop,256+9,spr%
�=ș spop,256+10,spr%,"<Obey$Dir>.Sprites":title$=�255," ")
�A�makewindmenus:�initflags:chricon%=�iconbar:ș waitoff:end%=�
�,rst%=�:topy%=99999:q%!16=&400C3:�message
�� � �errbox
��
�! ș "Wimp_Poll",,q% � reason%
� Ȏ reason% �
� � 2:ș openw,,q%
� � 3:�closewindow(!q%)
�5 � 6:�checkmouse(!q%,q%!4,q%!8,q%!12,q%!16,q%!20)
� � 7:�drag
�4 � 8:�key(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24)
� � 9:�menuselect
 � 17,18:�message
 �
 � caret%!20 �
&(  q%!1000=savehand%:ș getw,,q%+1000
0  � (q%?1034 � 1)=0 �
:O   ș "Wimp_SetCaretPosition",!caret%,caret%!4,caret%!8,caret%!12,caret%!16
D   caret%!20=�
N  �
X �
b � end%=�:end%=�saveold(�)
l
� end%
v)ș "MessageTrans_CloseFile",messages%
�>ș "OS_Module",7,,messages%!16:ș "OS_Module",7,,messages%
�7ș "Wimp_CloseDown":� rst%:ș "Wimp_ProcessKey",508
��
�:
�� �drag
�?� dragging%=2:ș "XDragASprite_Stop":� ș "Wimp_DragBox",-1
�;dragging%=0:ș getptr,,q%+40:� �find(q%!52)=dragfrom%:�
�Omsg%!32=q%!44:msg%!28=q%!40:msg%!24=q%!56:msg%!20=q%!52:msg%!16=1:msg%!12=0
�F$(msg%+44)=�lastbit(�getstr(savetext))+� 0:!msg%=60:msg%!4=mytask%
�Imsg%!36=fsize%:msg%!40=&FF7:ș "Wimp_SendMessage",17,msg%,q%!52,q%!56
��
�:
�� �getstr(a%)
$� b$:ȕ ?a%>31:b$+=� ?a%:a%+=1:�
=b$
:
 � �lastbit(s$)
*� b$
4ȕ �s$)>"" � �":.",�s$))=0
> b$=�s$)+b$:s$=�s$)
H�
R=b$
\:
f6� �key(hand%,icon%,xcar%,ycar%,carh%,carpos%,key%)
p0� i%:i%=�:ș getptr,,q%+80:x%=q%!80:y%=q%!84
zȎ hand% �
�� savehand%
� Ȏ key% �
� � 10,13
�  Ȏ icon% �
�B  � 0:f$=�getstr(savetext):� �path(f$):�save(f$):ș crmenu,,-1
�   i%=�
�0  � 7:�textend(hand%,0):�press(hand%,0):i%=�
�  �
� � 385:�press(hand%,1):i%=�
�% � 386,387,388,389:i%=�:!q%=hand%
�  � q%!4=3 � 6
�   ș getic,,q%
�G   � q%!24 � 1<<21:� q%!4<>key%-383:q%!8=0:q%!12=1<<21:ș setic,,q%
  �
  �press(hand%,key%-383)
4 � 394,398,399,410:!q%=hand%:q%!4=6:ș getic,,q%
$  � q%!24 � 1<<21 �
."   � icon%=0:icon%=7:� icon%=0
80   �textend(hand%,icon%):�press(hand%,icon%)
B  �
L
  i%=�
V �
`
j< i%=�:current%=�find(hand%):!q%=unsavedhand%:ș getw,,q%
t � q%?34 � 1 �
~  Ȏ key% �
�(  � 67,99,386:�press(unsavedhand%,2)
�)  � 68,100,385:�press(unsavedhand%,1)
�  :i%=�
�  �
�  � chr%=?�addr("n",current%)
�  Ȏ key% �
�  � 1:�press(hand%,6)
�  � 3:�press(hand%,12)
�  � 4:�press(hand%,11)
�  � 7:�press(hand%,8)
�  � 9:�press(hand%,7)
�0  � 15:�seticon(hand%,22,�):�press(hand%,21)
0  � 16:�seticon(hand%,21,�):�press(hand%,22)

  � 17:�press(hand%,5)
  � 19:�press(hand%,9)
  � 23:�press(hand%,10)
(  � 24:�press(hand%,3)
2  � 25:�press(hand%,4)
<  � 38,405:�press(hand%,13)
F  � 42,407:�press(hand%,15)
P  � 43,406:�press(hand%,14)
Z  � 127:�press(hand%,12)
d.  � 387:$savetext=$(�addr("n",current%)+4)
nG   ș crmenu,,savehand%,x%-64,y%:ș "Wimp_GetCaretPosition",,caret%
x(   �textend(savehand%,0):caret%!20=�
�  � 389:�press(hand%,10)
�  � 390,461:�press(hand%,9)
�  � 391,395:�press(hand%,8)
�*  � 392:!q%=hand%:q%!4=16:ș getic,,q%
�&   � q%?26 � 32 � �press(hand%,16)
�  � 393:�press(hand%,11)
�.  � 396,397,398,399:�press(hand%,key%-379)
�.  � 412,413,414,415,428,429,430,431:*FX 15
�   Ȏ key% �
�;   � 412,428:n%=chr%-1:� n%<32:n%=255:� � n%=127:n%=126
�;   � 413,429:n%=chr%+1:� n%>255:n%=32:� � n%=127:n%=128
�>   � 414,430:n%=chr%+32:� n%>255:n%-=224:� � n%=127:n%=159
�<   � 415,431:n%=chr%-32:� n%<32:n%+=224:� � n%=127:n%=95
   �
   � n%<>chr%:�setchr(n%)
  � 418:�closewindow(hand%)
"  :i%=�
,  �
6 �
@�
J"� i%:ș "Wimp_ProcessKey",key%
T*FX 21,1
^�
h:
r� �press(hand%,icon%)
|� icon%<0 �
�) �checkmouse(x%,y%,1,hand%,� icon%,0)
�(� �checkmouse(x%,y%,4,hand%,icon%,0)
��
��
�:
�� �setchr(n)
�A�showup(?�addr("n",current%)):!buf=handle%(current%):buf!4=23
�?ș getic,,buf:ș "Wimp_DeleteIcon",,buf:buf?28=n:buf!4=!buf
�Aș "Wimp_CreateIcon",,buf+4:?�addr("n",current%)=n:�showup(n)
�%�redrawicon(handle%(current%),23)
��
�:
�� �path(f$)
-� i%:i%=� f$+1:� �f$,"::"):i%=�f$,"::")+2
f$=�f$,i%):i%=�
1� �f$,"."):f$=�f$,�f$,".")+1):� �f$,"."):i%=�
&,� i% � �tellthemoff(�lookup("DragSave"))
0=i%
::
D� �textaddr(hand%,icon%)
N2�geticoninfo(hand%,icon%):� icn?25 � 1:=icn!28
X=icn+28
b:
l� �geticoninfo(hand%,icon%)
v(!icn=hand%:icn!4=icon%:ș getic,,icn
��
�:
�� �replotmap
�� x%,y%,A%,B%,C%,D%
�8ș spop,256+60,spr%,"b"+� current% � `1%,`2%,`3%,`4%
�� x%=0 � 7
� � y%=0 � 7
�?  � (y%?bit% � 128>>x%)>0 � 1:ȓ Ȑ x%*24+4,344-y%*48,17,35
� �
��
�:ș spop,256+60,spr%,"c"+� current%:� 0:ȓ Ȑ 4,8,15,31
�<D%=bit%:E%=4:F%=36:� 1:� plotchr:ș spop,`1%,`2%,`3%,`4%
��
:
� �replotchr(X%,Y%)
Eș spop,256+60,spr%,"m"+� current% � `1%,`2%,`3%,`4%:ș getic,,q%
 � n%=X% � Y%
* � n%<>127 �
48  D%=�chr(n%):E%=(n% � 31)*18:F%=(7-(n% � 32))*68+35
>,  � 0:ȓ Ȑ E%,F%-31,15,31:� 3:� plotchr
H �
R�
\<ș spop,`1%,`2%,`3%,`4%:�redrawicon(handle%(current%),1)
f�
p:
z� �showup(chr%)
�G� n%,x%,y%:P%=�chr(chr%):x%=(chr% � 31)*18:y%=(7-(chr% � 32))*68+36
�8ș spop,256+60,spr%,"m"+� current% � `1%,`2%,`3%,`4%
�:� 3,2:ȓ Ȑ x%,y%,15,31:ș spop,`1%,`2%,`3%,`4%:q%!4=1
�J!q%=handle%(current%):ș getic,,q%:�update(!q%,q%!8+x%,q%!12+y%,16,32)
��
�:
�� �update(hand%,x%,y%,n%,f)
�%ș fredraw,hand%,x%,y%,x%+n%,y%+f
��
�:
�� �chr(chr%)
�3� chr%:=�addr("f",current%)+chr%*10-318:� =bit%
�:
	� �message
	&� n%=0 � !q%-1 � 4:msg%!n%=q%!n%:�
	Ȏ q%!16 �
	$� 0:end%=�:rst%=�
	.� 1:�datasave
	8� 2:�datasaveack
	B� 3:�dataload
	L� 5:�dataopen
	V=� 8:end%=�:rst%=q%!20=0:!msg%=20:msg%!12=msg%!8:msg%!16=0
	`1 � �changed(-1):ș "Wimp_SendMessage",19,msg%
	j� 10:�saveopts
	t� 1282:�help
	~� &400C0
	� � q%!20=savehand% �
	�J  f=q%!24:g=q%!28:ș getw,,q%+20:q%!24=f:q%!28=g-savey%:q%!32=f+savex%
	�@  q%!36=g:ș openw,,q%+20:ș "Wimp_CreateSubMenu",,q%!20,f,g
	�4  ș "Wimp_GetCaretPosition",,caret%:caret%!20=�
	�=  �textend(savehand%,0):!q%=savehand%:q%!4=6:ș getic,,q%
	�*  �greyicon(savehand%,7,q%!24 � 1<<21)
	�+  � n=8 � 11:�greyicon(savehand%,n,�):�
	� �
	�$� &400C3:ș mvar,-1,12 � ,,maxy%
	�( ș mvar,-1,5 � ,,Y%:maxy%=maxy%<<Y%
	�7 � topy%>maxy%:topy%=maxy%-80:� topy%<0:topy%=maxy%
	�� &400C9
 � caret%!20 �

N  ș "Wimp_SetCaretPosition",!caret%,caret%!4,caret%!8,caret%!12,caret%!16
  caret%!20=�
 �
(�
2�
<:
F� �reply(messtype%,reason%)
PNmsg%!12=msg%!8:msg%!16=reason%:ș "Wimp_SendMessage",messtype%,msg%,msg%!4
Z�
d:
n-� �checkmouse(mx%,my%,b%,hand%,icon%,ob%)
x� b% � &505 �
� c%=(b% � 1)>0
� Ȏ hand% �
� � -2:�newfile
� � savehand%
�  Ȏ icon% �
�/  � 0:� n=8 � 11:�greyicon(savehand%,n,�):�
�B  � 1:f$=�getstr(savetext):� �path(f$):�save(f$):ș crmenu,,-1
�"  � 2:�initsavedrag(savehand%)
�+  � 3,4,5,6:�seticon(savehand%,icon%,�)
�%   �greyicon(savehand%,7,icon%=6)
�%   ș "Wimp_GetCaretPosition",,q%
�(   � !q%=hand% � q%!4=7 � icon%<>6 �
�=    �textend(!q%,0):� n=8 � 11:�greyicon(savehand%,n,�):�
   �
/  � 7:� n=8 � 11:�greyicon(savehand%,n,�):�
0  � 8,9,10,11:ș "Wimp_GetCaretPosition",,q%
"   � � $savechrs<255 �
,H    $savechrs=�$savechrs,q%!20)+�"\-�|",icon%-7,1)+$(savechrs+q%!20)
6L    ș "Wimp_SetCaretPosition",hand%,7,,,-1,q%!20+1:�redrawicon(hand%,7)
@   �
J  �
T � unsavedhand%
^  Ȏ icon% �
h.  � 1:� delete%:�delete(current%):� end%=1
r  � 2:rst%=�
|  �
�  ș crmenu,,-1
� � infohand%
� 
�G  current%=�find(hand%):chr%=?�addr("n",current%):!q%=hand%:q%!4=22
�G  ș "Wimp_SetCaretPosition",hand%,-1:ș getic,,q%:B%=q%!24 � 1<<21
�+  A%=bit%:� B%:A%=�addr("f",current%)+2
�  Ȏ icon% �
�&  � 0:�iconxy(hand%,0,mx%,my%,n,f)
�0   x%=n � 24:y%=7-(f � 48):n=n � 24:f=f � 48
�)   � ((x% � y%) � -8)=0 � n>2 � f>2 �
�8    f=128>>x%:n=bit%+y%:� c%:?n=?n � � f:� ?n=?n � f
�7    !q%=hand%:q%!4=0:n=x%*24:f=(7-y%)*48:�replotmap
�L    �update(hand%,q%!208+n+2,q%!212+f+4,22,48):q%!204=2:ș getic,,q%+200
7    �update(hand%,q%!208+4+x%*2,q%!212+36-y%*4,2,4)
   �
&  � 1:�iconxy(hand%,1,mx%,my%,n,f)
&0   x%=n � 18:y%=7-(f � 68):n=n � 18:f=f � 68
03   � (x% � -32)=0 � y%>0 � y%<8 � n<16 � f<66 �
:    n=y%*32+x%
D    Ȏ b% � &555 �
N,    � 1:� �-1:�swap(chr%):� �store(chr%)
X.    � 4:� �-1:�default(chr%):� �grab(chr%)
b'    :� n<>chr% � n<>127:�setchr(n)
l	    �
v    �redrawmap
�   �
�.  � 3:�on(B%,flipx):� B%:�off:� �redrawmap
�.  � 4:�on(B%,flipy):� B%:�off:� �redrawmap
�3  � 5-c%:�on(B%,rotatec):� B%:�off:� �redrawmap
�3  � 6+c%:�on(B%,rotatea):� B%:�off:� �redrawmap
�/  � 7:�on(B%,invert):� B%:�off:� �redrawmap
�'  � 8:� B% � �grab(chr%):�redrawmap
�  � 9:� B% � �store(chr%)
�(  � 10:� B% � �swap(chr%):�redrawmap
�+  � 11:� B% � �default(chr%):�redrawmap
�
  � 12
�
   � B% �
�+    ș spop,256+36,spr%,"ptr_waiting",2

/    ș "OS_ReadPalette",1,25 � ,,C%:D%=� C%

	    �

     Ȗ:t%=(t%+1) � 31

 *     � t%=1:ȗ � 2,D%>>8,D%>>16,D%>>24

*+     � t%=25:ȗ � 2,C%>>8,C%>>16,C%>>24

4    � �-129=255

>&    ș "OS_Confirm" � c%:*%Pointer

H)    � �"Yy",� c%)>0:�on(�,clear):�off

R   �

\<    !undo=!bit%:undo!4=bit%!4:undo%=0:� clear:�redrawmap

f   �

p,  � 13:� B% � �op(chr%,"AND"):�redrawmap

z+  � 14:� B% � �op(chr%,"OR"):�redrawmap

�,  � 15:� B% � �op(chr%,"EOR"):�redrawmap

�  � 16:�undo

�%  � 17-c%:� B% � �left:�redrawmap

�&  � 18+c%:� B% � �right:�redrawmap

�%  � 19-c%:� B% � �down:�redrawmap

�#  � 20+c%:� B% � �up:�redrawmap

�%  � 21,22:�seticon(hand%,icon%,�)

�   � n=8 � 20

�3    � n<>12 � n<>16:�greyicon(hand%,n,icon%=21)

�   �

�  �

� �

��
 � b% � 2 �
  Ȏ hand% �
5  � -2:menuID%=0:ș crmenu,,quitmenu%,mx%-qx%,qy%
$(  � infohand%,savehand%,unsavedhand%
.  :current%=�find(hand%)
83   menuID%=1:$savetext=$(�addr("n",current%)+4)
B?   ș crmenu,,mainmenu%,mx%-64,my%:menux%=mx%-64:menuy%=my%
L  �
V �
`�
j�
t:
~� �on(f,n)
�� f:ș waiton
�� n
��
�:
�
� �off
�7�replotchr(32,255):�redrawicon(handle%(current%),1)
�#�changed(current%,�):ș waitoff
��
�:
�� �seticon(!q%,q%!4,f)
�(ș getic,,q%:� f:q%!8=1<<21:� q%!8=0
�q%!12=1<<21:ș setic,,q%
�

:
� �greyicon(!q%,q%!4,f)
ș getic,,q%
(� q%?16 � 1 �
2D � f:q%!8=&7009000:q%!12=&F00F000:� q%!8=&2000000:q%!12=&F00F000
<)� q%!12=1<<22:� f:q%!8=0:� q%!8=1<<22
F�
Pș setic,,q%
Z�
d:
n� �redrawicon(!q%,q%!4)
x� q%!8,q%!12:ș setic,,q%
��
�:
�,� �iconxy(hand%,icon%,mx%,my%,� x%,� y%)
�Jq%!100=hand%:ș "Wimp_GetWindowInfo",,q%+100:q%!200=hand%:q%!204=icon%
�Lș getic,,q%+200:x%=mx%-q%!104+q%!120-q%!208:y%=my%-q%!116+q%!124-q%!212
��
�:
�� �makewindmenus
�K� names% &1000,menus% &800:name%=names%:last%=names%+&1000:menu%=menus%
�� +0
�� �
�/� � � ș "XWimp_CloseTemplate":� �:� � �,�$
�@A%=�:*RMEnsure UtilityModule 3.12 MemoryA 8604 0 { > Null: }
@� A% � A%=�:*RMEnsure ROMApps3D 0 MemoryA 8604 0 { > Null: }
is3d%=A%:� A%:A%=3:� A%=2
7ș "Wimp_OpenTemplate",,"<Obey$Dir>.Templates"+� A%
"KA%=�createwindow("Edit"):� mainhand% 88+q%!84*32,title%(15),handle%(16)
,1� n%=0 � 84+q%!84*32 � 4:mainhand%!n%=q%!n%:�
6Esavehand%=�createwindow("Save"):savex%=q%!8-!q%:savey%=q%!12-q%!4
@Iunsavedhand%=�createwindow("Unsaved"):infohand%=�createwindow("Info")
J� �
T@ș "Wimp_CloseTemplate":� n%=0 � 15:� A% 255:title%(n%)=A%:�
^Btext=�textaddr(unsavedhand%,0):savetext=�textaddr(savehand%,0)
hHsavechrs=�textaddr(savehand%,7):x%=0:y%=0:mainmenu%=�makemenu(x%,y%)
r-qx%=0:qy%=96:quitmenu%=�makemenu(qx%,qy%)
|�
�:
�� �preparemenus
�3� current%>�:$savetext=$(�addr("n",current%)+4)
��
�:
�� �createwindow(a$)
�@ș "Wimp_LoadTemplate",,q%,name%,last%,-1,a$ � ,,name%,,,,A%
�$� A% � � 1,�lookup1("NoWind",a$)
�icon%=0:q%!64=spr%
�� a$="Edit" �
�? q%!144=spr%:� is3d%:� n%=q%+208 � q%+624 � 32:!n%=q%!208:�
�=� � a$="Save":� n%=q%+328 � q%+456 � 32:!n%=!n% � 1<<22:�
�' ș "Wimp_CreateWindow",,q% � icon%
�

=icon%
:
&� �text(item%,$buf)
0A!(item% � -4)=name%:� item% � 1 � item%!4=-1:item%!8=� $buf+1
:$name%=$buf:name%+=� $buf+1
D�
N:
X� �makemenu(� x%,� y%)
b4width%=0:� $buf:� ?buf=96:$buf=�lookup($(buf+1))
lB$menu%=$buf:menu%!12=&70207:menu%!20=44:menu%!24=0:n=-1:� $buf
v0ȕ $buf>"":n+=1:�item(menu%,n,$buf):� $buf:�
�.� n>-1:menu%!16=width%*16+8:�last(menu%,n)
�!x%=width%*8+24:menu%+=52+24*n
�=menu%-52-24*n
�:
�� �item(menu%,item%,$buf)
�� write%
�� ?buf=96 �
�$ f=�$buf,"|"):� f � f=�$buf,"?")
� g=buf?(f-1)
�
 � f �
�/  $buf=�lookup(�$buf,2,f-2))+"|"+�$buf,f+1)
� � $buf=�lookup($(buf+1))
� �
�
Bmenu%+=28+item%*24:!menu%=8 � g=63:menu%!4=-1:menu%!8=&7000021
-� �$buf)="-":!menu%+=2:$buf=�$buf):y%+=28
 item%=�$buf,"|")
*8� item%:menu%!4=� �$buf,item%+1):$buf=�$buf,item%-1)
4� � $buf<12 � � write% �
> $(menu%+12)=$buf
H'� menu%!8+=256:�text(menu%+12,$buf)
R�
\(y%+=44:� width%<� $buf:width%=� $buf
f�
p:
z� �last(menu%,item%)
�*menu%+=28+item%*24:!menu%=!menu% � 128
��
�:
�� �newfile
�
ș waiton
�Ȏ �newfile �
�;� 0:�replotchr(32,255):�grab(65):�replotmap:�showup(65)
�3 !q%=handle%(current%):ș getw,,q%:ș openw,,q%
�1 ș "Wimp_SetCaretPosition",!q%,-1:ș waitoff
�2� 1:ș waitoff:�tellthemoff(�lookup("Memory"))
�4� 2:ș waitoff:�tellthemoff(�lookup("Capacity"))
��
��
:

� �memory
#ș "Wimp_SlotSize",-1,-1 � ,,A%
$=A%>=spr%+!spr%+12980-&8000
.:
8� �newfile
B� files%=16:=2
L� �
V� � � � �:files%-=1:=1
`AA%=spr%+!spr%-&8000:B%=A%+12980:ș "Wimp_SlotSize",B%,-1 � C%
j+� A%>B%:ș "Wimp_SlotSize",A%,-1:� �:=1
t*current%=files%:files%+=1:!spr%+=13056
~.ș spop,256+27,spr%,"chred","b"+� current%
�2ș spop,256+27,spr%,"chred_chr","c"+� current%
�2ș spop,256+27,spr%,"chred_map","m"+� current%
�0ș spop,256+15,spr%,"n"+� current%,,264,1,15
�1ș spop,256+15,spr%,"f"+� current%,,2240,1,15
�8!spr%=spr%!12:ș "Wimp_SlotSize",spr%+!spr%-&8000,-1
�6A%=�addr("n",current%):B%=�addr("f",current%):n=32
�D� n%=B% � B%+2239 � 10:?n%=23:n%?1=n:ș "OS_Word",10,n%+1:n+=1:�
�E!A%=65:$(A%+4)=�lookup("Default"):$(mainhand%+108)="b"+� current%
�C$(mainhand%+140)="m"+� current%:$(mainhand%+172)="c"+� current%
�C$title%(current%)=�lookup("NoName"):Y%=mainhand%!12-mainhand%!4
�6� topy%-Y%<80:topy%=maxy%-80:� topy%<0:topy%=maxy%
�Imainhand%!12=topy%:mainhand%!4=topy%-Y%:mainhand%!72=title%(current%)
=ș "XWimp_CreateWindow",,mainhand% � handle%(current%);X%

� X% � 1:�del(current%):�
@topy%-=64:� topy%-Y%<80:topy%=maxy%-80:� topy%<0:topy%=maxy%
%!q%=handle%(current%):ș getw,,q%
(� �
2=0
<:
F� �initsavedrag(!q%)
P� x%,y%,ysize%:A%=�
Z� �
d� � � A%=�:�tellthemoff(�$)
n
� A% �
xE fsize%=2240:q%!4=6:ș getic,,q%:� current%>-1:dragfrom%=current%
�/ � q%!24 � 1<<21:fsize%=�savechrs(savechrs)
�C q%!40=!q%:ș getw,,q%+40:q%!4=2:ș getic,,q%:q%!8+=q%!44-q%!60
�J q%!12+=q%!56-q%!64:q%!16=q%!8+68:q%!20=q%!12+68:q%!24=0:q%!28=0:!q%=0
�E q%!4=5:ș mvar,-1,4 � ,,x%:ș mvar,-1,11 � ,,y%:q%!32=(y%+1)<<x%
�> ș mvar,-1,5 � ,,x%:ș mvar,-1,12 � ,,y%:q%!36=(y%+1)<<x%
� ș "OS_Byte",161,28 � ,,x%
� � x% � 2 �
�:  dragging%=2:ș &62400,&C5,spr%,"file_ff7",q%+8 � ;x%
�  � x% � 1:x%=0:� x%=2
� �
�3 � (x% � 2)=0:ș "Wimp_DragBox",,q%:dragging%=1
��
�� �
�
:
� �iconbar
"E� ii%:!ic%=-1:ic%!4=0:ic%!8=0:ic%!12=64:ic%!16=68:ic%!20=&700311A
,5� ic%!24 12:$(ic%!24)="!chred":ic%!28=1:ic%!32=12
6#ș "Wimp_CreateIcon",,ic% � ii%
@=ii%
J:
T� �menuselect
^� redo%:ș getptr,,q%+80
hredo%=q%!88 � 1
rȎ menuID% �
|� 0:�decodeiconmenu
�� 1:�decodemainmenu
��
��
�:
�� �decodeiconmenu
�Ȏ !q% �
�� 1:end%=�:rst%=�
��
��
�:
�� �decodemainmenu
�(� b%,B%:b%=q%!88 � 6:redo%=q%!88 � 3
�Ȏ !q% �
2� 0:f$=�getstr(savetext):� �path(f$):�save(f$)
/� 1:ș "OS_WriteN",�addr("f",current%),2240
" ș fredraw,-1,0,0,65535,65535
&-� 2:ș 6,25:ș fredraw,-1,0,0,65535,65535
0�
:<�preparemenus:� redo%:ș crmenu,,mainmenu%,menux%,menuy%
D�
N:
X� �front(!q%)
b%ș getw,,q%:q%!28=-1:ș openw,,q%
l�
v:
�� �openat(!q%,q%!44,q%!48)
�@ș getw,,q%:q%!12+=q%!44-q%!4:q%!16+=q%!48-q%!8:ș openw,,q%
��
�:
�5� �openats(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24)
�q%!28=-1:ș openw,,q%
��
�:
�� �closewindow(hand%)
�A%=�find(hand%)
�� A%<0 �
�( !q%=hand%:ș "Wimp_CloseWindow",,q%
�1� current%=A%:� �saveold(�):�delete(current%)
�
�
:
 � �forceredraw(hand%)
*)!q%=hand%:ș "Wimp_GetWindowInfo",,q%
4,ș fredraw,hand%,q%!44,q%!48,q%!52,q%!56
>�
H:
R� �save(f$)
\� �
fC� � � � �=1:�tellthemoff(�$):� �:�:� � �tellthemoff(�$,�):� �:�
p!q%=savehand%:f=3
z� q%!4=4 � 6
�( ș getic,,q%:� q%!24 � 1<<21:f=q%!4
��
�n%=�addr("f",current%)
�
Ȏ f �
�+� 3:ș "OS_File",10,f$,&FF7,,n%,n%+2240
�� 4:�savepart(f$,n%,"�-�")
�� 5:�savepart(f$,n%," -~")
�"� 6:�savepart(f$,n%,$savechrs)
��
�� �
�I� f$<>"<Wimp$Scrap>":$(�addr("n",current%)+4)=f$:�changed(current%,0)
��
�:
� �savechrs(g)
"� ?g=13:� 1,�lookup("NullStr")
2� n=0 � 252 � 4:buf!n=0:�:lit%=�:bar%=�:top%=0
$range%=�:c2%=0
.ȕ ?g>31
80 c1%=�asc(g):� c1%<32:� 1,�lookup("Unprint")
B � ?g=45 �
L.  g+=1:� ?g<32:� 1,�lookup1("BadCtrl","-")
V1  c2%=�asc(g):� c2%<32:� 1,�lookup("Unprint")
` � c2%=c1%
j �
t � c1%>c2%:Ȕ c1%,c2%
~ � n=c1% � c2%:buf?n=1:�
��
�)buf?127=0:g=0:� n=0 � 255:g=g+buf?n:�
� � g � � 1,�lookup("NullStr")
�	=g*10
�:
�� �savepart(f$,f,$q%)
�Cfsize%=�savechrs(q%):g=� f$:ș "OS_File",18,f$,&FF7:� #g=fsize%
�� n=32 � 255
�+ � buf?n:ș "XOS_GBPB",2,g,f,10 � C%;D%
�" f+=10:� D% � 1:�saveclose(C%)
��
��saveclose(0)
�

:
� �saveclose(C%)
(� g:ș "XOS_Find",0,g � E%;F%:� F%=0
(,� F% � 1 � C%=0:ș "OS_GenerateError",E%
2!� C%:ș "OS_GenerateError",C%
<�
F:
P� �asc(� g)
Z� A%
dȎ ?g �
n;� 92:� g?1<31:� 1,�lookup1("BadCtrl","\"):� A%=g?1:g+=2
x� 124:g+=2
� Ȏ g?-1 �
� � 33:A%=�asc(g) � 128
� � 63:A%=127
�2 :A%=g?-1:� A%<32:� 1,�lookup1("BadCtrl","|")
�"  � A%>63 � A%<>124 � A%<127 �
�3   B%=�"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_",� A%)
�:   � B% � B%=�"@abcdefghijklmnopqrstuvwxyz{|}~`",� A%)
�   A%=B%-1 � 31
�  �
� �
�	� 132
� � �
�$ � � � � �:� 1,�lookup("BadHex")
 � g?2<32:�
 A%=� ("&"+�$g,2,2)):g+=3
 � �
":A%=?g:g+=1
,�
6=A%
@:
J� �load($buf)
T � type%,ftype%,in%,s%,l%,ext
^;� $buf<>"":� �checkfile($buf,ext):�doload($buf,msg%!20)
h�
r:
|� �checkfile($buf,� ext)
�+ș "OS_File",5,buf � type%,,ftype%,,ext
�*� type%=1 � (ftype% � 255)=&FFFFF7FF �
�Q � ext=0 � ext � 10 � ext>2240:�tellthemoff(�lookupf("BadFont",$buf)):type%=0
��
� � type%=1 �
�-  �tellthemoff(�lookupf("CantLoad",$buf))
�( � �tellthemoff(�lookup("CantLDir"))
� �
� type%=0
��
�
=type%
�:
�� �doload($buf,W%)
3� i%,x,y,f$:f$=$buf:ș "OS_File",5,f$ � ,,,,ext
=� ext<0 � ext>2240:�tellthemoff(�lookupf("BadFont",f$)):�
W%=�find(W%):current%=W%
&� W%<0 �
02 � �memory � �tellthemoff(�lookup("Memory")):�
:4 � files%=16:�tellthemoff(�lookup("Capacity")):�
D�
N
ș waiton
X� �
b0� � � ș waitoff:� �noload:ș waiton:� � �:�
l6ș "OS_File",255,f$,q%:� n%=0 � 252 � 4:n%!buf=0:�
v� n%=q% � q%+ext-1 � 10
�) � ?n%<>23:� 1,�lookupf("BadFont",f$)
� � n%?1<32 �
�%  �tellthemoff(�lookup("BadDef"))
�: � � buf?(n%?1):�tellthemoff(�lookup("DupDef")):n%?1=0
� �
� buf?(n%?1)=1
��
�� �
�� W%<0:� �newfile
�� n%=q% � q%+ext-1 � 10
�J � n%?1>31:n=�addr("f",current%)+(n%?1-32)*10:!n=!n%:n!4=n%!4:n!6=n%!6
��
�2!q%=handle%(current%):ș getw,,q%:ș openw,,q%
%ș "Wimp_SetCaretPosition",!q%,-1
� W%<0 �
5 � f$<>"<Wimp$Scrap>":$(�addr("n",current%)+4)=f$
 , �showup(65):?A%=65:�grab(65):�replotmap
*+ �redrawicon(!q%,0):�titlebar(current%)
4� �changed(current%,�)
>�
H!�replotchr(32,255):ș waitoff
R�
\:
f� �internal(W%)
p!W%=�find(W%):� W%=dragfrom%:�
zcurrent%=W%
�� W%<0 �
�2 � �memory � �tellthemoff(�lookup("Memory")):�
�4 � files%=16:�tellthemoff(�lookup("Capacity")):�
��
�
ș waiton
�� W%<0:� �newfile
�DA%=�addr("f",current%):B%=�addr("f",dragfrom%):!q%=savehand%:f=3
�� q%!4=4 � 6
�( ș getic,,q%:� q%!24 � 1<<21:f=q%!4
��
�n%=�addr("f",current%)
�
Ȏ f �
�$� 3:� n%=32 � 255 � 4:n%!buf=�:�
!� 4:$q%="�-�":� �savechrs(q%)
!� 5:$q%=" -~":� �savechrs(q%)
� 6:� �savechrs(savechrs)
$�
.� n%=32 � 255
8) � n%?buf:!A%=!B%:A%!4=B%!4:A%!6=B%!6
B A%+=10:B%+=10
L�
V2!q%=handle%(current%):ș getw,,q%:ș openw,,q%
`%ș "Wimp_SetCaretPosition",!q%,-1
j� W%<0 �
tC $(�addr("n",current%)+4)=�lookup("Default"):�showup(65):?A%=65
~, �grab(65):�replotmap:�redrawicon(!q%,0)
��
�D�changed(current%,�):�replotchr(32,255):ș waitoff:ș crmenu,,-1
��
�:
�
� �noload
�� A%
�� �=1 �
� �tellthemoff(�$):A%=�
�� A%=�tellthemoff(�$,�)
��
�=A%
�:
� �saveold(f)

� n%:delete%=f=�
	� f �
 f=�changed(-1)
(G � f=1:$text=�lookup("FontQuit1"):� $text=�lookupf("FontQuitN",� f)
24� f=�changed(current%):$text=�lookup("FontDump")
<�
Fș getptr,,q%
P	� f �
Z7 ș mvar,-1,11 � ,,x%:ș mvar,-1,4 � ,,n%:x%=x%<<n%
d7 ș mvar,-1,12 � ,,y%:ș mvar,-1,5 � ,,n%:y%=y%<<n%
n4 ș crmenu,,unsavedhand%,x%/2-370,y%/2+160 � ,n%
x�
�
=(f=0)
�:
�� �tellthemoff($(buf+4))
�.!buf=0:ș "Wimp_ReportError",buf,1,"ChrEd"
��
�:
�� �tellthemoff($(buf+4),f)
�=!buf=0:ș "Wimp_ReportError",buf,3+(f � 128),"ChrEd" � ,f
�=f-1
�:
�
� �errbox
�+� what%:ș "Wimp_DragBox",,-1:ș &62401
�/!buf=�:$(buf+4)=�$+" (at line "+� �+")"+� 0
0ș "Wimp_ReportError",buf,3,"ChrEd" � ,what%
� what%=2:end%=�:rst%=�
�
":
,� �initflags
64� bit% 8,undo 16,mc% 1024,tempbuf% 2240:files%=0
@� c%=0 � 2 � 2
J
P%=mc%
T[OPT c%
^ .flipx TEQ 1,#0:MOVNE 1,#223
h.flipx0 MOV 4,#8
rJ.flipx1 LDRB 2,[0]:MOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3
|GMOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1
�AADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3:MOVS 2,2,LSR #1:ADC 3,3,3
�MMOVS 2,2,LSR #1:ADC 3,3,3:STRB 3,[0],#1:SUBS 4,4,#1:BNE flipx1:ADD 0,0,#2
�$SUBS 1,1,#1:BPL flipx0:MOV PC,14
�:
�+.flipy TEQ 1,#0:MOVNE 1,#223:ADD 4,0,#7
�I.flipy0 LDRB 2,[0]:LDRB 3,[4]:STRB 3,[0],#1:STRB 2,[4],#-1:LDRB 2,[0]
�OLDRB 3,[4]:STRB 3,[0],#1:STRB 2,[4],#-1:LDRB 2,[0]:LDRB 3,[4]:STRB 3,[0],#1
�ESTRB 2,[4],#-1:LDRB 2,[0]:LDRB 3,[4]:STRB 3,[0],#7:STRB 2,[4],#13
�$SUBS 1,1,#1:BPL flipy0:MOV PC,14
�:
�-.rotatec TEQ 1,#0:MOVNE 1,#223:ADR 2,temp
�.rcloop MOV 3,#7:MOV 7,#1
�(.cxloop MOV 4,#7:MOV 5,#0:MOV 6,#128
 G.cyloop LDRB 8,[0,4]:�S 8,8,7:�RNE 5,5,6:MOV 6,6,LSR #1:SUBS 4,4,#1
 LBPL cyloop:STRB 5,[2,3]:MOV 7,7,LSL #1:SUBS 3,3,#1:BPL cxloop:LDRB 4,[2]
 ISTRB 4,[0],#1:LDRB 4,[2,#1]:STRB 4,[0],#1:LDRB 4,[2,#2]:STRB 4,[0],#1
 &ILDRB 4,[2,#3]:STRB 4,[0],#1:LDRB 4,[2,#4]:STRB 4,[0],#1:LDRB 4,[2,#5]
 0ISTRB 4,[0],#1:LDRB 4,[2,#6]:STRB 4,[0],#1:LDRB 4,[2,#7]:STRB 4,[0],#3
 :$SUBS 1,1,#1:BPL rcloop:MOV PC,14
 D:
 N.temp EQUD 0:EQUD 0
 X:
 b-.rotatea TEQ 1,#0:MOVNE 1,#223:ADR 2,temp
 l.raloop MOV 3,#7:MOV 6,#128
 v&.axloop MOV 4,#7:MOV 5,#0:MOV 7,#1
 �G.ayloop LDRB 8,[0,4]:�S 8,8,6:�RNE 5,5,7:MOV 7,7,LSL #1:SUBS 4,4,#1
 �LBPL ayloop:STRB 5,[2,3]:MOV 6,6,LSR #1:SUBS 3,3,#1:BPL axloop:LDRB 4,[2]
 �ISTRB 4,[0],#1:LDRB 4,[2,#1]:STRB 4,[0],#1:LDRB 4,[2,#2]:STRB 4,[0],#1
 �ILDRB 4,[2,#3]:STRB 4,[0],#1:LDRB 4,[2,#4]:STRB 4,[0],#1:LDRB 4,[2,#5]
 �ISTRB 4,[0],#1:LDRB 4,[2,#6]:STRB 4,[0],#1:LDRB 4,[2,#7]:STRB 4,[0],#3
 �$SUBS 1,1,#1:BPL raloop:MOV PC,14
 �:
 �!.invert TEQ 1,#0:MOVNE 1,#223
 �D.invert0 MOV 4,#8:LDRB 2,[0]:� 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 �K� 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]:� 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 �K� 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]:� 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 �K� 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]:� 2,2,#255:STRB 2,[0],#1:LDRB 2,[0]
 �>� 2,2,#255:STRB 2,[0],#3:SUBS 1,1,#1:BPL invert0:MOV PC,14
!:
!).clear TEQ 1,#0:MOVNE 1,#223:MOV 2,#0
!C.clear0 STRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#1
! GSTRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#1:STRB 2,[0],#3:SUBS 1,1,#1
!*BPL clear0:MOV PC,14
!4:
!>.plotchr MOV 7,#7
!HO.plotchr1 SWI 256+23:SWI 256+6:LDRB 0,[3,7]:SWI "OS_WriteC":SWI 256:SWI 256
!RMSWI 256:SWI 256:SWI 256:SWI 256:SWI 256:MOV 0,#4:MOV 1,4:SUB 2,5,7,LSL #2
!\HSWI "OS_Plot":MOV 0,#17:MOV 1,#15:MOV 2,#0:SWI "OS_Plot":SUBS 7,7,#1
!fBPL plotchr1:MOV PC,14
!p]�
!z@var$=�255," "):sel$=var$:sel$="":file$=var$:file$="":var$=""
!�Pcurrent%=-1:!bit%=&7E66663C:bit%!4=&666666:undo%=0:!undo=!bit%:undo!4=bit%!4
!�undo!8=!undo:undo!12=undo!4
!��
!�:
!�� �textend(hand%,icon%)
!�<� i%:�geticoninfo(hand%,icon%):ȕ i%?(icn!28)>31:i%+=1:�
!�2ș "Wimp_SetCaretPosition",hand%,icon%,,,-1,i%
!��
!�:
!�� �grab(chr%)
!�IP%=�chr(chr%):!undo=!bit%:undo!4=bit%!4:undo%=0:!bit%=!P%:bit%!4=P%!4
!��
!�:
"� �store(chr%)
"KP%=�chr(chr%):undo%=chr%+256*current%:undo!8=!P%:undo!12=P%!4:!P%=!bit%
":P%!4=bit%!4:�replotchr(chr%,chr%):�changed(current%,�)
"$�
".:
"8� �swap(chr%)
"B-P%=�chr(chr%):Ȕ !P%,!bit%:Ȕ P%!4,bit%!4
"L.�replotchr(chr%,chr%):�changed(current%,�)
"V�
"`:
"j� �default(chr%)
"tA?q%=chr%:ș "OS_Word",10,q%:!undo=!bit%:undo!4=bit%!4:undo%=0
"~!bit%=q%!1:bit%!4=q%!5
"��
"�:
"�� �clear(chr%)
"�KP%=�chr(chr%):!undo=!bit%:undo!4=bit%!4:undo%=0:!P%=0:P%!4=0:�redrawmap
"��
"�:
"�� �left
"�0� n%=0 � 7:n%?bit%=n%?bit%*2-(n%?bit%>127):�
"��
"�:
"�� �right
"�4� n%=0 � 7:n%?bit%=n%?bit%/2+128*(n%?bit% � 1):�
#�
#
:
#	� �up
#5f=?bit%:� n%=0 � 6:n%?bit%=n%?(bit%+1):�:bit%?7=f
#(�
#2:
#<� �down
#F:f=bit%?7:� n%=6 � 0 � -1:n%?(bit%+1)=n%?bit%:�:?bit%=f
#P�
#Z:
#d� �op(chr%,$buf)
#n3P%=�chr(chr%):!undo=!bit%:undo!4=bit%!4:undo%=0
#xD!bit%=� ("!bit% "+$buf+" !P%"):bit%!4=� ("bit%!4 "+$buf+" P%!4")
#��
#�:
#�� �undo
#�
� undo% �
#�0 P%=�addr("f",undo%>>8)+(undo% � 255)*10-318
#�" Ȕ !P%,undo!8:Ȕ P%!4,undo!12
#�@ f=?�addr("n",current%)=(undo% � 255) � current%=undo% � 256
#�? � current%=undo% � 256:�replotchr(undo% � 255,undo% � 255)
#�0� Ȕ !bit%,!undo:Ȕ bit%!4,undo!4:�redrawmap
#��
#��
#�:
#�� �redrawmap
$/�replotmap:�redrawicon(handle%(current%),0)
$$�redrawicon(handle%(current%),2)
$�
$":
$,� �help
$6W%=�find(q%!32):$buf=""
$@D� W%>-1:q%!40=handle%(W%):q%!44=22:ș getic,,q%+40:B%=q%?66 � 32
$JȎ q%!32 �
$T� -2:$buf="IconBar"
$^� savehand%
$h Ȏ q%!36 �
$r � 0:$buf="SaveName"
$| � 1:$buf="SaveOK"
$� � 2:$buf="SaveDrag"
$� � 3:$buf="SaveAll"
$� � 4:$buf="SaveTBS"
$� � 5:$buf="SaveTBC"
$� � 6:$buf="SaveDef"
$� � 7:$buf="SaveEnter"
$� � 8:$buf="SaveLiteral"
$� � 9:$buf="SaveRange"
$� � 10:$buf="SaveHex"
$� � 11:$buf="SaveBar"
$� :$buf="SaveW"
$� �
$�� infohand%:$buf="Info"
%� unsavedhand%
% Ȏ q%!36 �
%7 � 1:� delete%:$buf="UnsvDiscard":� $buf="UnsvQuit"
%&6 � 2:� delete%:$buf="UnsvKeep":� $buf="UnsvNoQuit"
%08 :� delete%:$buf="UnsvLoseOne":� $buf="UnsvLoseAll"
%: �
%D
%N � W%>-1 �
%X  Ȏ q%!36 �
%b  � 0:$buf="MainEdit"
%l  � 1:$buf="MainSelChr"
%v  � 2:$buf="MainSEdit"
%�  � 3:$buf="MainFlipX"
%�  � 4:$buf="MainFlipY"
%�  � 5:$buf="MainRotC"
%�  � 6:$buf="MainRotA"
%�  � 7:$buf="MainInv"
%�  � 8:$buf="MainGrab"
%�  � 9:$buf="MainStore"
%�  � 10:$buf="MainSwap"
%�  � 11:$buf="MainDeflt"
%�6  � 12:$buf="MainClear":� B%:$buf+=",MainConfirm1"
%�  � 13:$buf="MainAnd"
%�  � 14:$buf="MainOr"
%�  � 15:$buf="MainEor"
&  � 16:$buf="MainUndo"
&  � 17:$buf="MainLeft"
&  � 18:$buf="MainRight"
&   � 19:$buf="MainDown"
&*  � 20:$buf="MainUp"
&4  � 21:$buf="MainAppChr"
&>  � 22:$buf="MainAppSet"
&H  � 23:$buf="MainCurrent"
&R8  :$buf="Main":� �changed(W%):$buf+=",MainConfirm2"
&\  �
&f �
&p#  ș "Wimp_GetMenuState",,q%+20
&z  Ȏ menuID% �
&�  � 0:$buf="MenuIcon"
&�  � 1:$buf="MenuMain"
&�  �
&�-  B%=q%+20:ȕ !B%<>-1:$buf+=� !B%:B%+=4:�
&�1  � $buf="MenuIcon1" � �changed(-1):$buf+="+"
&�  � �$buf)>"9":$buf=""
&� �
&��
&��tohelp($buf)
&��
&�:
&�� �tohelp($buf)
&�-$(q%+20)="":f=�$buf,","):� f � f=� $buf+1
'ȕ $buf>""
'? $(q%+20)+=�lookup(�$buf,f-1)):$buf=�$buf,f+1):f=�$buf,",")
' � f � f=� $buf+1
'$�
'.C$(q%+20)+=� 0:!q%=23+� $(q%+20) � -4:q%!12=q%!8:�reply(17,1283)
'8�
'B:
'L%� �lookup($icn)=�lookupf($icn,"")
'V:
'`� �token(a$)
'jn%=�$icn,a$)
't	ȕ n%
'~$ � n%?icn<>48 � � B% � n%?icn=49
'�6 $icn=�$icn,n%-1)+�lookup(a$+� n%?icn)+�$icn,n%+2)
'� n%=�$icn,a$)
'��
'��
'�:
'�� �lookup1($icn,a$)
'�� n%
'�Fș "MessageTrans_Lookup",messages%,icn,icn,256,�lookup(a$) � ,,,n%
'�.n%?icn=13:�token("`"):� os3% � �token("\")
'�	=$icn
'�:
'�� �lookupf($icn,a$)
(� n%
(
Gș "MessageTrans_Lookup",messages%,icn,icn,256,a$ � ,,,n%:n%?icn=13
(6n%=�$icn,"~"):� n%:$icn=�$icn,n%-1)+a$+�$icn,n%+2)
($�token("`"):� os3% � �token("\")
((	=$icn
(2:
(<� �datasave
(F� msg%!40<>&FF7:�
(Pf%=�
(Z� msg%!4=mytask% �
(d Ȏ msg%!20 �
(n, � savehand%,unsavedhand%,infohand%:f%=�
(x :�internal(msg%!20):f%=�
(� �
(��
(�
� f%:�
(�3ș "XOS_ReadVarVal","Wimp$Scrap",q%+300 � a%;f%
(�:� f% � 1 � !a%=&124:�tellthemoff(�lookup("NoScrap")):�
(�5$(msg%+44)="<Wimp$Scrap>"+� 0:!msg%=60:msg%!36=-1
(�9msg%!20=�addr("f",current%):msg%!24=2240:�reply(17,2)
(��
(�:
(�� �datasaveack
(�� msg%!4=mytask%:�
(�D�save(�getstr(msg%+44)):ș getptr,,q%:�reply(18,3):ș crmenu,,-1
(��
):
)� �dataload
)1!msg%=20:�reply(17,4):�load(�getstr(msg%+44))
)":� �getstr(msg%+44)="<Wimp$Scrap>":*Remove <Wimp$Scrap>
),�
)6:
)@� �dataopen
)J� msg%!40<>&FF7:�
)T1!msg%=20:�reply(17,4):�load(�getstr(msg%+44))
)^-$(�addr("n",current%)+4)=�getstr(msg%+44)
)h�
)r:
)|� �addr(a$,A%)
)�&ș spop,256+24,spr%,a$+� A% � ,,A%
)�
=A%+A%!32
)�:
)�� �find(hand%)
)�2� A%:ȕ hand%<>handle%(A%) � A%<files%:A%+=1:�
)�� A%=files%:=-1:� =A%
)�:
)�� �changed(n%)
)�� f
)�� n%<0 �
)�3 � files%:� n%=0 � files%-1:f-=�changed(n%)>0:�
)�)� ș xspop,256+24,spr%,"n"+� n% � ;B%
)�( � B% � 1:f=0:� f=?(�addr("n",n%)+3)
*�
*=f
*:
*&� �changed(n%,f)
*0-?(�addr("n",n%)+3)=f<>0 � 1:�titlebar(n%)
*:�
*D:
*N� �titlebar(n%)
*X,$icn=$title%(n%):$buf=$(�addr("n",n%)+4)
*b+� $buf="BBCfont":$buf=�lookup("NoName")
*l;$title%(n%)=�$buf,253):� �changed(n%):$title%(n%)+=" *"
*v� $title%(n%)<>$icn �
*�# ș "XWimp_SetCaretPosition",-1
*�5 ș "XWimp_SetCaretPosition",handle%(current%),-1
*��
*��
*�:
*�� �delete(n%)
*�7!q%=handle%(n%):� !q%>0:ș "XWimp_DeleteWindow",,q%
*��del(n%):files%-=1
*��
*�:
*�� �del(A%)
*�2� B%:B%=files%-1:ș xspop,256+25,spr%,"b"+� A%
*�?ș xspop,256+25,spr%,"c"+� A%:ș xspop,256+25,spr%,"m"+� A%
+?ș xspop,256+25,spr%,"n"+� A%:ș xspop,256+25,spr%,"f"+� A%
+ handle%(A%)=-1:!spr%=spr%!12
+
� B%>A% �
+ 8 Ȕ handle%(A%),handle%(B%):Ȕ title%(A%),title%(B%)
+*+ ș xspop,256+26,spr%,"b"+� B%,"b"+� A%
+4+ ș xspop,256+26,spr%,"c"+� B%,"c"+� A%
+>+ ș xspop,256+26,spr%,"m"+� B%,"m"+� A%
+H+ ș xspop,256+26,spr%,"n"+� B%,"n"+� A%
+R+ ș xspop,256+26,spr%,"f"+� B%,"f"+� A%
+\�
+f*ș "Wimp_SlotSize",spr%+!spr%-&8000,-1
+p�
+z:
+�� Menus
+�:
+�	� ``T
+�%� `SaveF?savehand%,`Test,`UnTest,
+�:
+�	� ``T
+�� `IW|infohand%,`Q,
�
00000000  0d 00 0a 1d f4 20 20 20  20 20 3e 21 52 75 6e 49  |.....     >!RunI|
00000010  6d 61 67 65 20 28 21 43  68 72 45 64 29 0d 00 14  |mage (!ChrEd)...|
00000020  15 f4 20 42 79 20 20 44  61 72 72 65 6e 20 53 61  |.. By  Darren Sa|
00000030  6c 74 0d 00 1e 15 f4 20  28 63 29 20 41 55 20 4d  |lt..... (c) AU M|
00000040  61 79 20 31 39 39 34 0d  00 28 05 3a 0d 00 32 10  |ay 1994..(.:..2.|
00000050  61 70 70 25 3d 93 2d 26  38 30 30 30 0d 00 3c 3e  |app%=.-&8000..<>|
00000060  c8 99 20 22 58 4f 53 5f  53 57 49 4e 75 6d 62 65  |.. "XOS_SWINumbe|
00000070  72 46 72 6f 6d 53 74 72  69 6e 67 22 2c 2c 22 58  |rFromString",,"X|
00000080  48 6f 75 72 67 6c 61 73  73 5f 4f 6e 22 20 b8 20  |Hourglass_On" . |
00000090  77 61 69 74 6f 6e 3b 6f  6b 25 0d 00 46 16 e7 20  |waiton;ok%..F.. |
000000a0  6f 6b 25 20 80 20 31 3a  77 61 69 74 6f 6e 3d b9  |ok% . 1:waiton=.|
000000b0  0d 00 50 40 c8 99 20 22  58 4f 53 5f 53 57 49 4e  |..P@.. "XOS_SWIN|
000000c0  75 6d 62 65 72 46 72 6f  6d 53 74 72 69 6e 67 22  |umberFromString"|
000000d0  2c 2c 22 58 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |,,"XHourglass_Of|
000000e0  66 22 20 b8 20 77 61 69  74 6f 66 66 3b 6f 6b 25  |f" . waitoff;ok%|
000000f0  0d 00 5a 17 e7 20 6f 6b  25 20 80 20 31 3a 77 61  |..Z.. ok% . 1:wa|
00000100  69 74 6f 66 66 3d b9 0d  00 64 27 c8 99 20 22 4f  |itoff=...d'.. "O|
00000110  53 5f 4d 6f 64 75 6c 65  22 2c 36 2c 2c 2c 32 30  |S_Module",6,,,20|
00000120  20 b8 20 2c 2c 6d 65 73  73 61 67 65 73 25 0d 00  | . ,,messages%..|
00000130  6e 3e c8 99 20 22 4d 65  73 73 61 67 65 54 72 61  |n>.. "MessageTra|
00000140  6e 73 5f 46 69 6c 65 49  6e 66 6f 22 2c 2c 22 3c  |ns_FileInfo",,"<|
00000150  4f 62 65 79 24 44 69 72  3e 2e 4d 65 73 73 61 67  |Obey$Dir>.Messag|
00000160  65 73 22 20 b8 20 46 25  2c 2c 4c 25 0d 00 78 0e  |es" . F%,,L%..x.|
00000170  e7 20 46 25 20 80 20 31  20 8c 0d 00 82 13 20 6d  |. F% . 1 ..... m|
00000180  65 73 73 61 67 65 73 25  21 31 36 3d 30 0d 00 8c  |essages%!16=0...|
00000190  05 cc 0d 00 96 31 20 c8  99 20 22 58 4f 53 5f 4d  |.....1 .. "XOS_M|
000001a0  6f 64 75 6c 65 22 2c 36  2c 2c 2c 4c 25 20 b8 20  |odule",6,,,L% . |
000001b0  41 25 2c 2c 6d 65 73 73  61 67 65 73 25 21 31 36  |A%,,messages%!16|
000001c0  3b 46 25 0d 00 a0 42 20  e7 20 46 25 20 80 20 31  |;F%...B . F% . 1|
000001d0  3a c8 99 20 22 4f 53 5f  4d 6f 64 75 6c 65 22 2c  |:.. "OS_Module",|
000001e0  37 2c 2c 6d 65 73 73 61  67 65 73 25 3a c8 99 20  |7,,messages%:.. |
000001f0  22 4f 53 5f 47 65 6e 65  72 61 74 65 45 72 72 6f  |"OS_GenerateErro|
00000200  72 22 2c 41 25 0d 00 aa  05 cd 0d 00 b4 4b c8 99  |r",A%........K..|
00000210  20 22 4d 65 73 73 61 67  65 54 72 61 6e 73 5f 4f  | "MessageTrans_O|
00000220  70 65 6e 46 69 6c 65 22  2c 6d 65 73 73 61 67 65  |penFile",message|
00000230  73 25 2c 22 3c 4f 62 65  79 24 44 69 72 3e 2e 4d  |s%,"<Obey$Dir>.M|
00000240  65 73 73 61 67 65 73 22  2c 6d 65 73 73 61 67 65  |essages",message|
00000250  73 25 21 31 36 0d 00 be  a1 ee 20 85 20 c8 99 20  |s%!16..... . .. |
00000260  22 4d 65 73 73 61 67 65  54 72 61 6e 73 5f 43 6c  |"MessageTrans_Cl|
00000270  6f 73 65 46 69 6c 65 22  2c 6d 65 73 73 61 67 65  |oseFile",message|
00000280  73 25 3a c8 99 20 22 4f  53 5f 4d 6f 64 75 6c 65  |s%:.. "OS_Module|
00000290  22 2c 37 2c 2c 6d 65 73  73 61 67 65 73 25 21 31  |",7,,messages%!1|
000002a0  36 3a c8 99 20 22 4f 53  5f 4d 6f 64 75 6c 65 22  |6:.. "OS_Module"|
000002b0  2c 37 2c 2c 6d 65 73 73  61 67 65 73 25 3a c8 99  |,7,,messages%:..|
000002c0  20 77 61 69 74 6f 66 66  3a c8 99 20 22 4f 53 5f  | waitoff:.. "OS_|
000002d0  53 70 72 69 74 65 4f 70  22 2c 32 35 36 2b 36 30  |SpriteOp",256+60|
000002e0  2c 2d 31 3a 85 20 a2 20  9f 2c f6 24 2b 22 20 40  |,-1:. . .,.$+" @|
000002f0  20 22 2b c3 20 9e 0d 00  c8 14 c8 99 20 77 61 69  | "+. ....... wai|
00000300  74 6f 6e 3a 6f 73 33 25  3d a3 0d 00 d2 49 41 25  |ton:os3%=....IA%|
00000310  3d 33 30 30 3a 42 25 3d  30 3a 2a 52 4d 45 6e 73  |=300:B%=0:*RMEns|
00000320  75 72 65 20 57 69 6e 64  6f 77 4d 61 6e 61 67 65  |ure WindowManage|
00000330  72 20 33 20 4d 65 6d 6f  72 79 41 20 38 36 30 34  |r 3 MemoryA 8604|
00000340  20 31 30 5f 32 30 30 20  7b 20 3e 20 4e 75 6c 6c  | 10_200 { > Null|
00000350  3a 20 7d 0d 00 dc 0e e7  20 41 25 3e 32 39 39 20  |: }..... A%>299 |
00000360  8c 0d 00 e6 34 20 42 25  3d 26 38 36 30 43 3a 43  |....4 B%=&860C:C|
00000370  25 3d 31 3a 44 25 3d 32  3a 45 25 3d 33 3a 46 25  |%=1:D%=2:E%=3:F%|
00000380  3d 35 3a 47 25 3d 38 3a  48 25 3d 31 30 3a 49 25  |=5:G%=8:H%=10:I%|
00000390  3d 31 32 38 32 0d 00 f0  2e 20 4a 25 3d 26 34 30  |=1282.... J%=&40|
000003a0  30 43 30 3a 4b 25 3d 26  34 30 30 43 33 3a 4c 25  |0C0:K%=&400C3:L%|
000003b0  3d 26 34 30 30 43 39 3a  4d 25 3d 30 3a 6f 73 33  |=&400C9:M%=0:os3|
000003c0  25 3d b9 0d 00 fa 05 cd  0d 01 04 43 c8 99 20 22  |%=.........C.. "|
000003d0  57 69 6d 70 5f 49 6e 69  74 69 61 6c 69 73 65 22  |Wimp_Initialise"|
000003e0  2c 41 25 2c 26 34 42 35  33 34 31 35 34 2c 22 43  |,A%,&4B534154,"C|
000003f0  68 72 45 64 22 2c 42 25  20 b8 20 76 65 72 73 69  |hrEd",B% . versi|
00000400  6f 6e 25 2c 6d 79 74 61  73 6b 25 0d 01 0e 39 c8  |on%,mytask%...9.|
00000410  99 20 22 4f 53 5f 46 69  6c 65 22 2c 35 2c 22 3c  |. "OS_File",5,"<|
00000420  4f 62 65 79 24 44 69 72  3e 2e 53 70 72 69 74 65  |Obey$Dir>.Sprite|
00000430  73 22 20 b8 20 58 25 2c  2c 2c 2c 59 25 3a 59 25  |s" . X%,,,,Y%:Y%|
00000440  2b 3d 31 36 0d 01 18 3a  d3 3d 93 2d 59 25 3a 73  |+=16...:.=.-Y%:s|
00000450  70 72 25 3d 93 3a e7 20  58 25 3c 3e 31 3a 85 20  |pr%=.:. X%<>1:. |
00000460  32 31 34 2c 22 21 43 68  72 45 64 20 53 70 72 69  |214,"!ChrEd Spri|
00000470  74 65 73 20 6e 6f 74 20  66 6f 75 6e 64 22 0d 01  |tes not found"..|
00000480  22 27 f4 20 53 57 49 20  35 37 20 3d 20 22 4f 53  |"'. SWI 57 = "OS|
00000490  5f 53 57 49 4e 75 6d 62  65 72 46 72 6f 6d 53 74  |_SWINumberFromSt|
000004a0  72 69 6e 67 22 0d 01 2c  3d c8 99 20 35 37 2c 2c  |ring"..,=.. 57,,|
000004b0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 20 b8 20  |"OS_SpriteOp" . |
000004c0  73 70 6f 70 3a c8 99 20  35 37 2c 2c 22 58 4f 53  |spop:.. 57,,"XOS|
000004d0  5f 53 70 72 69 74 65 4f  70 22 20 b8 20 78 73 70  |_SpriteOp" . xsp|
000004e0  6f 70 0d 01 36 49 c8 99  20 35 37 2c 2c 22 4f 53  |op..6I.. 57,,"OS|
000004f0  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
00000500  65 22 20 b8 20 6d 76 61  72 3a c8 99 20 35 37 2c  |e" . mvar:.. 57,|
00000510  2c 22 57 69 6d 70 5f 43  72 65 61 74 65 4d 65 6e  |,"Wimp_CreateMen|
00000520  75 22 20 b8 20 63 72 6d  65 6e 75 0d 01 40 4a c8  |u" . crmenu..@J.|
00000530  99 20 35 37 2c 2c 22 57  69 6d 70 5f 46 6f 72 63  |. 57,,"Wimp_Forc|
00000540  65 52 65 64 72 61 77 22  20 b8 20 66 72 65 64 72  |eRedraw" . fredr|
00000550  61 77 3a c8 99 20 35 37  2c 2c 22 57 69 6d 70 5f  |aw:.. 57,,"Wimp_|
00000560  47 65 74 49 63 6f 6e 53  74 61 74 65 22 20 b8 20  |GetIconState" . |
00000570  67 65 74 69 63 0d 01 4a  4a c8 99 20 35 37 2c 2c  |getic..JJ.. 57,,|
00000580  22 57 69 6d 70 5f 47 65  74 50 6f 69 6e 74 65 72  |"Wimp_GetPointer|
00000590  49 6e 66 6f 22 20 b8 20  67 65 74 70 74 72 3a c8  |Info" . getptr:.|
000005a0  99 20 35 37 2c 2c 22 57  69 6d 70 5f 4f 70 65 6e  |. 57,,"Wimp_Open|
000005b0  57 69 6e 64 6f 77 22 20  b8 20 6f 70 65 6e 77 0d  |Window" . openw.|
000005c0  01 54 4a c8 99 20 35 37  2c 2c 22 57 69 6d 70 5f  |.TJ.. 57,,"Wimp_|
000005d0  47 65 74 57 69 6e 64 6f  77 53 74 61 74 65 22 20  |GetWindowState" |
000005e0  b8 20 67 65 74 77 3a c8  99 20 35 37 2c 2c 22 57  |. getw:.. 57,,"W|
000005f0  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
00000600  22 20 b8 20 73 65 74 69  63 0d 01 5e 45 de 20 71  |" . setic..^E. q|
00000610  25 20 32 32 34 30 2c 6d  73 67 25 20 33 32 30 2c  |% 2240,msg% 320,|
00000620  62 75 66 20 32 35 36 2c  69 63 6e 20 26 32 30 30  |buf 256,icn &200|
00000630  2c 69 63 25 20 26 31 30  30 2c 73 63 61 6c 65 25  |,ic% &100,scale%|
00000640  20 31 36 2c 63 6f 6c 6f  75 72 73 20 31 36 0d 01  | 16,colours 16..|
00000650  68 40 de 20 63 61 72 65  74 25 20 32 34 3a 63 61  |h@. caret% 24:ca|
00000660  72 65 74 25 21 32 30 3d  a3 3a c8 99 20 22 58 57  |ret%!20=.:.. "XW|
00000670  69 6d 70 5f 53 70 72 69  74 65 4f 70 22 2c 32 34  |imp_SpriteOp",24|
00000680  2c 2c 22 6c 65 66 74 22  20 b8 20 3b 66 25 0d 01  |,,"left" . ;f%..|
00000690  72 2b e7 20 66 25 20 80  20 31 3a 2a 49 63 6f 6e  |r+. f% . 1:*Icon|
000006a0  53 70 72 69 74 65 73 20  3c 4f 62 65 79 24 44 69  |Sprites <Obey$Di|
000006b0  72 3e 2e 41 72 72 6f 77  73 0d 01 7c 29 21 73 70  |r>.Arrows..|)!sp|
000006c0  72 25 3d 59 25 3a 73 70  72 25 21 38 3d 31 36 3a  |r%=Y%:spr%!8=16:|
000006d0  c8 99 20 73 70 6f 70 2c  32 35 36 2b 39 2c 73 70  |.. spop,256+9,sp|
000006e0  72 25 0d 01 86 3d c8 99  20 73 70 6f 70 2c 32 35  |r%...=.. spop,25|
000006f0  36 2b 31 30 2c 73 70 72  25 2c 22 3c 4f 62 65 79  |6+10,spr%,"<Obey|
00000700  24 44 69 72 3e 2e 53 70  72 69 74 65 73 22 3a 74  |$Dir>.Sprites":t|
00000710  69 74 6c 65 24 3d c4 32  35 35 2c 22 20 22 29 0d  |itle$=.255," ").|
00000720  01 90 41 f2 6d 61 6b 65  77 69 6e 64 6d 65 6e 75  |..A.makewindmenu|
00000730  73 3a f2 69 6e 69 74 66  6c 61 67 73 3a 63 68 72  |s:.initflags:chr|
00000740  69 63 6f 6e 25 3d a4 69  63 6f 6e 62 61 72 3a c8  |icon%=.iconbar:.|
00000750  99 20 77 61 69 74 6f 66  66 3a 65 6e 64 25 3d a3  |. waitoff:end%=.|
00000760  0d 01 9a 2c 72 73 74 25  3d a3 3a 74 6f 70 79 25  |...,rst%=.:topy%|
00000770  3d 39 39 39 39 39 3a 71  25 21 31 36 3d 26 34 30  |=99999:q%!16=&40|
00000780  30 43 33 3a f2 6d 65 73  73 61 67 65 0d 01 a4 0f  |0C3:.message....|
00000790  ee 20 85 20 f2 65 72 72  62 6f 78 0d 01 ae 05 f5  |. . .errbox.....|
000007a0  0d 01 b8 21 20 c8 99 20  22 57 69 6d 70 5f 50 6f  |...! .. "Wimp_Po|
000007b0  6c 6c 22 2c 2c 71 25 20  b8 20 72 65 61 73 6f 6e  |ll",,q% . reason|
000007c0  25 0d 01 c2 11 20 c8 8e  20 72 65 61 73 6f 6e 25  |%.... .. reason%|
000007d0  20 ca 0d 01 cc 15 20 c9  20 32 3a c8 99 20 6f 70  | ..... . 2:.. op|
000007e0  65 6e 77 2c 2c 71 25 0d  01 d6 1a 20 c9 20 33 3a  |enw,,q%.... . 3:|
000007f0  f2 63 6c 6f 73 65 77 69  6e 64 6f 77 28 21 71 25  |.closewindow(!q%|
00000800  29 0d 01 e0 35 20 c9 20  36 3a f2 63 68 65 63 6b  |)...5 . 6:.check|
00000810  6d 6f 75 73 65 28 21 71  25 2c 71 25 21 34 2c 71  |mouse(!q%,q%!4,q|
00000820  25 21 38 2c 71 25 21 31  32 2c 71 25 21 31 36 2c  |%!8,q%!12,q%!16,|
00000830  71 25 21 32 30 29 0d 01  ea 0e 20 c9 20 37 3a f2  |q%!20).... . 7:.|
00000840  64 72 61 67 0d 01 f4 34  20 c9 20 38 3a f2 6b 65  |drag...4 . 8:.ke|
00000850  79 28 21 71 25 2c 71 25  21 34 2c 71 25 21 38 2c  |y(!q%,q%!4,q%!8,|
00000860  71 25 21 31 32 2c 71 25  21 31 36 2c 71 25 21 32  |q%!12,q%!16,q%!2|
00000870  30 2c 71 25 21 32 34 29  0d 01 fe 14 20 c9 20 39  |0,q%!24).... . 9|
00000880  3a f2 6d 65 6e 75 73 65  6c 65 63 74 0d 02 08 15  |:.menuselect....|
00000890  20 c9 20 31 37 2c 31 38  3a f2 6d 65 73 73 61 67  | . 17,18:.messag|
000008a0  65 0d 02 12 06 20 cb 0d  02 1c 12 20 e7 20 63 61  |e.... ..... . ca|
000008b0  72 65 74 25 21 32 30 20  8c 0d 02 26 28 20 20 71  |ret%!20 ...&(  q|
000008c0  25 21 31 30 30 30 3d 73  61 76 65 68 61 6e 64 25  |%!1000=savehand%|
000008d0  3a c8 99 20 67 65 74 77  2c 2c 71 25 2b 31 30 30  |:.. getw,,q%+100|
000008e0  30 0d 02 30 19 20 20 e7  20 28 71 25 3f 31 30 33  |0..0.  . (q%?103|
000008f0  34 20 80 20 31 29 3d 30  20 8c 0d 02 3a 4f 20 20  |4 . 1)=0 ...:O  |
00000900  20 c8 99 20 22 57 69 6d  70 5f 53 65 74 43 61 72  | .. "Wimp_SetCar|
00000910  65 74 50 6f 73 69 74 69  6f 6e 22 2c 21 63 61 72  |etPosition",!car|
00000920  65 74 25 2c 63 61 72 65  74 25 21 34 2c 63 61 72  |et%,caret%!4,car|
00000930  65 74 25 21 38 2c 63 61  72 65 74 25 21 31 32 2c  |et%!8,caret%!12,|
00000940  63 61 72 65 74 25 21 31  36 0d 02 44 12 20 20 20  |caret%!16..D.   |
00000950  63 61 72 65 74 25 21 32  30 3d a3 0d 02 4e 07 20  |caret%!20=...N. |
00000960  20 cd 0d 02 58 06 20 cd  0d 02 62 1e 20 e7 20 65  | ...X. ...b. . e|
00000970  6e 64 25 3d b9 3a 65 6e  64 25 3d a4 73 61 76 65  |nd%=.:end%=.save|
00000980  6f 6c 64 28 b9 29 0d 02  6c 0a fd 20 65 6e 64 25  |old(.)..l.. end%|
00000990  0d 02 76 29 c8 99 20 22  4d 65 73 73 61 67 65 54  |..v).. "MessageT|
000009a0  72 61 6e 73 5f 43 6c 6f  73 65 46 69 6c 65 22 2c  |rans_CloseFile",|
000009b0  6d 65 73 73 61 67 65 73  25 0d 02 80 3e c8 99 20  |messages%...>.. |
000009c0  22 4f 53 5f 4d 6f 64 75  6c 65 22 2c 37 2c 2c 6d  |"OS_Module",7,,m|
000009d0  65 73 73 61 67 65 73 25  21 31 36 3a c8 99 20 22  |essages%!16:.. "|
000009e0  4f 53 5f 4d 6f 64 75 6c  65 22 2c 37 2c 2c 6d 65  |OS_Module",7,,me|
000009f0  73 73 61 67 65 73 25 0d  02 8a 37 c8 99 20 22 57  |ssages%...7.. "W|
00000a00  69 6d 70 5f 43 6c 6f 73  65 44 6f 77 6e 22 3a e7  |imp_CloseDown":.|
00000a10  20 72 73 74 25 3a c8 99  20 22 57 69 6d 70 5f 50  | rst%:.. "Wimp_P|
00000a20  72 6f 63 65 73 73 4b 65  79 22 2c 35 30 38 0d 02  |rocessKey",508..|
00000a30  94 05 e0 0d 02 9e 05 3a  0d 02 a8 0b dd 20 f2 64  |.......:..... .d|
00000a40  72 61 67 0d 02 b2 3f e7  20 64 72 61 67 67 69 6e  |rag...?. draggin|
00000a50  67 25 3d 32 3a c8 99 20  22 58 44 72 61 67 41 53  |g%=2:.. "XDragAS|
00000a60  70 72 69 74 65 5f 53 74  6f 70 22 3a 8b 20 c8 99  |prite_Stop":. ..|
00000a70  20 22 57 69 6d 70 5f 44  72 61 67 42 6f 78 22 2c  | "Wimp_DragBox",|
00000a80  2d 31 0d 02 bc 3b 64 72  61 67 67 69 6e 67 25 3d  |-1...;dragging%=|
00000a90  30 3a c8 99 20 67 65 74  70 74 72 2c 2c 71 25 2b  |0:.. getptr,,q%+|
00000aa0  34 30 3a e7 20 a4 66 69  6e 64 28 71 25 21 35 32  |40:. .find(q%!52|
00000ab0  29 3d 64 72 61 67 66 72  6f 6d 25 3a e1 0d 02 c6  |)=dragfrom%:....|
00000ac0  4f 6d 73 67 25 21 33 32  3d 71 25 21 34 34 3a 6d  |Omsg%!32=q%!44:m|
00000ad0  73 67 25 21 32 38 3d 71  25 21 34 30 3a 6d 73 67  |sg%!28=q%!40:msg|
00000ae0  25 21 32 34 3d 71 25 21  35 36 3a 6d 73 67 25 21  |%!24=q%!56:msg%!|
00000af0  32 30 3d 71 25 21 35 32  3a 6d 73 67 25 21 31 36  |20=q%!52:msg%!16|
00000b00  3d 31 3a 6d 73 67 25 21  31 32 3d 30 0d 02 d0 46  |=1:msg%!12=0...F|
00000b10  24 28 6d 73 67 25 2b 34  34 29 3d a4 6c 61 73 74  |$(msg%+44)=.last|
00000b20  62 69 74 28 a4 67 65 74  73 74 72 28 73 61 76 65  |bit(.getstr(save|
00000b30  74 65 78 74 29 29 2b bd  20 30 3a 21 6d 73 67 25  |text))+. 0:!msg%|
00000b40  3d 36 30 3a 6d 73 67 25  21 34 3d 6d 79 74 61 73  |=60:msg%!4=mytas|
00000b50  6b 25 0d 02 da 49 6d 73  67 25 21 33 36 3d 66 73  |k%...Imsg%!36=fs|
00000b60  69 7a 65 25 3a 6d 73 67  25 21 34 30 3d 26 46 46  |ize%:msg%!40=&FF|
00000b70  37 3a c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |7:.. "Wimp_SendM|
00000b80  65 73 73 61 67 65 22 2c  31 37 2c 6d 73 67 25 2c  |essage",17,msg%,|
00000b90  71 25 21 35 32 2c 71 25  21 35 36 0d 02 e4 05 e1  |q%!52,q%!56.....|
00000ba0  0d 02 ee 05 3a 0d 02 f8  11 dd 20 a4 67 65 74 73  |....:..... .gets|
00000bb0  74 72 28 61 25 29 0d 03  02 24 ea 20 62 24 3a c8  |tr(a%)...$. b$:.|
00000bc0  95 20 3f 61 25 3e 33 31  3a 62 24 2b 3d bd 20 3f  |. ?a%>31:b$+=. ?|
00000bd0  61 25 3a 61 25 2b 3d 31  3a ce 0d 03 0c 07 3d 62  |a%:a%+=1:.....=b|
00000be0  24 0d 03 16 05 3a 0d 03  20 12 dd 20 a4 6c 61 73  |$....:.. .. .las|
00000bf0  74 62 69 74 28 73 24 29  0d 03 2a 08 ea 20 62 24  |tbit(s$)..*.. b$|
00000c00  0d 03 34 1e c8 95 20 c2  73 24 29 3e 22 22 20 80  |..4... .s$)>"" .|
00000c10  20 a7 22 3a 2e 22 2c c2  73 24 29 29 3d 30 0d 03  | .":.",.s$))=0..|
00000c20  3e 17 20 62 24 3d c2 73  24 29 2b 62 24 3a 73 24  |>. b$=.s$)+b$:s$|
00000c30  3d c0 73 24 29 0d 03 48  05 ce 0d 03 52 07 3d 62  |=.s$)..H....R.=b|
00000c40  24 0d 03 5c 05 3a 0d 03  66 36 dd 20 f2 6b 65 79  |$..\.:..f6. .key|
00000c50  28 68 61 6e 64 25 2c 69  63 6f 6e 25 2c 78 63 61  |(hand%,icon%,xca|
00000c60  72 25 2c 79 63 61 72 25  2c 63 61 72 68 25 2c 63  |r%,ycar%,carh%,c|
00000c70  61 72 70 6f 73 25 2c 6b  65 79 25 29 0d 03 70 30  |arpos%,key%)..p0|
00000c80  ea 20 69 25 3a 69 25 3d  b9 3a c8 99 20 67 65 74  |. i%:i%=.:.. get|
00000c90  70 74 72 2c 2c 71 25 2b  38 30 3a 78 25 3d 71 25  |ptr,,q%+80:x%=q%|
00000ca0  21 38 30 3a 79 25 3d 71  25 21 38 34 0d 03 7a 0e  |!80:y%=q%!84..z.|
00000cb0  c8 8e 20 68 61 6e 64 25  20 ca 0d 03 84 0f c9 20  |.. hand% ...... |
00000cc0  73 61 76 65 68 61 6e 64  25 0d 03 8e 0e 20 c8 8e  |savehand%.... ..|
00000cd0  20 6b 65 79 25 20 ca 0d  03 98 0c 20 c9 20 31 30  | key% ..... . 10|
00000ce0  2c 31 33 0d 03 a2 10 20  20 c8 8e 20 69 63 6f 6e  |,13....  .. icon|
00000cf0  25 20 ca 0d 03 ac 42 20  20 c9 20 30 3a 66 24 3d  |% ....B  . 0:f$=|
00000d00  a4 67 65 74 73 74 72 28  73 61 76 65 74 65 78 74  |.getstr(savetext|
00000d10  29 3a e7 20 a4 70 61 74  68 28 66 24 29 3a f2 73  |):. .path(f$):.s|
00000d20  61 76 65 28 66 24 29 3a  c8 99 20 63 72 6d 65 6e  |ave(f$):.. crmen|
00000d30  75 2c 2c 2d 31 0d 03 b6  0b 20 20 20 69 25 3d a3  |u,,-1....   i%=.|
00000d40  0d 03 c0 30 20 20 c9 20  37 3a f2 74 65 78 74 65  |...0  . 7:.texte|
00000d50  6e 64 28 68 61 6e 64 25  2c 30 29 3a f2 70 72 65  |nd(hand%,0):.pre|
00000d60  73 73 28 68 61 6e 64 25  2c 30 29 3a 69 25 3d a3  |ss(hand%,0):i%=.|
00000d70  0d 03 ca 07 20 20 cb 0d  03 d4 1f 20 c9 20 33 38  |....  ..... . 38|
00000d80  35 3a f2 70 72 65 73 73  28 68 61 6e 64 25 2c 31  |5:.press(hand%,1|
00000d90  29 3a 69 25 3d a3 0d 03  de 25 20 c9 20 33 38 36  |):i%=....% . 386|
00000da0  2c 33 38 37 2c 33 38 38  2c 33 38 39 3a 69 25 3d  |,387,388,389:i%=|
00000db0  a3 3a 21 71 25 3d 68 61  6e 64 25 0d 03 e8 12 20  |.:!q%=hand%.... |
00000dc0  20 e3 20 71 25 21 34 3d  33 20 b8 20 36 0d 03 f2  | . q%!4=3 . 6...|
00000dd0  13 20 20 20 c8 99 20 67  65 74 69 63 2c 2c 71 25  |.   .. getic,,q%|
00000de0  0d 03 fc 47 20 20 20 e7  20 71 25 21 32 34 20 80  |...G   . q%!24 .|
00000df0  20 31 3c 3c 32 31 3a e7  20 71 25 21 34 3c 3e 6b  | 1<<21:. q%!4<>k|
00000e00  65 79 25 2d 33 38 33 3a  71 25 21 38 3d 30 3a 71  |ey%-383:q%!8=0:q|
00000e10  25 21 31 32 3d 31 3c 3c  32 31 3a c8 99 20 73 65  |%!12=1<<21:.. se|
00000e20  74 69 63 2c 2c 71 25 0d  04 06 07 20 20 ed 0d 04  |tic,,q%....  ...|
00000e30  10 1c 20 20 f2 70 72 65  73 73 28 68 61 6e 64 25  |..  .press(hand%|
00000e40  2c 6b 65 79 25 2d 33 38  33 29 0d 04 1a 34 20 c9  |,key%-383)...4 .|
00000e50  20 33 39 34 2c 33 39 38  2c 33 39 39 2c 34 31 30  | 394,398,399,410|
00000e60  3a 21 71 25 3d 68 61 6e  64 25 3a 71 25 21 34 3d  |:!q%=hand%:q%!4=|
00000e70  36 3a c8 99 20 67 65 74  69 63 2c 2c 71 25 0d 04  |6:.. getic,,q%..|
00000e80  24 17 20 20 e7 20 71 25  21 32 34 20 80 20 31 3c  |$.  . q%!24 . 1<|
00000e90  3c 32 31 20 8c 0d 04 2e  22 20 20 20 e7 20 69 63  |<21 ...."   . ic|
00000ea0  6f 6e 25 3d 30 3a 69 63  6f 6e 25 3d 37 3a 8b 20  |on%=0:icon%=7:. |
00000eb0  69 63 6f 6e 25 3d 30 0d  04 38 30 20 20 20 f2 74  |icon%=0..80   .t|
00000ec0  65 78 74 65 6e 64 28 68  61 6e 64 25 2c 69 63 6f  |extend(hand%,ico|
00000ed0  6e 25 29 3a f2 70 72 65  73 73 28 68 61 6e 64 25  |n%):.press(hand%|
00000ee0  2c 69 63 6f 6e 25 29 0d  04 42 07 20 20 cd 0d 04  |,icon%)..B.  ...|
00000ef0  4c 0a 20 20 69 25 3d a3  0d 04 56 06 20 cb 0d 04  |L.  i%=...V. ...|
00000f00  60 05 7f 0d 04 6a 3c 20  69 25 3d a3 3a 63 75 72  |`....j< i%=.:cur|
00000f10  72 65 6e 74 25 3d a4 66  69 6e 64 28 68 61 6e 64  |rent%=.find(hand|
00000f20  25 29 3a 21 71 25 3d 75  6e 73 61 76 65 64 68 61  |%):!q%=unsavedha|
00000f30  6e 64 25 3a c8 99 20 67  65 74 77 2c 2c 71 25 0d  |nd%:.. getw,,q%.|
00000f40  04 74 12 20 e7 20 71 25  3f 33 34 20 80 20 31 20  |.t. . q%?34 . 1 |
00000f50  8c 0d 04 7e 0f 20 20 c8  8e 20 6b 65 79 25 20 ca  |...~.  .. key% .|
00000f60  0d 04 88 28 20 20 c9 20  36 37 2c 39 39 2c 33 38  |...(  . 67,99,38|
00000f70  36 3a f2 70 72 65 73 73  28 75 6e 73 61 76 65 64  |6:.press(unsaved|
00000f80  68 61 6e 64 25 2c 32 29  0d 04 92 29 20 20 c9 20  |hand%,2)...)  . |
00000f90  36 38 2c 31 30 30 2c 33  38 35 3a f2 70 72 65 73  |68,100,385:.pres|
00000fa0  73 28 75 6e 73 61 76 65  64 68 61 6e 64 25 2c 31  |s(unsavedhand%,1|
00000fb0  29 0d 04 9c 0c 20 20 7f  3a 69 25 3d b9 0d 04 a6  |)....  .:i%=....|
00000fc0  07 20 20 cb 0d 04 b0 20  20 cc 20 63 68 72 25 3d  |.  ....  . chr%=|
00000fd0  3f a4 61 64 64 72 28 22  6e 22 2c 63 75 72 72 65  |?.addr("n",curre|
00000fe0  6e 74 25 29 0d 04 ba 0f  20 20 c8 8e 20 6b 65 79  |nt%)....  .. key|
00000ff0  25 20 ca 0d 04 c4 19 20  20 c9 20 31 3a f2 70 72  |% .....  . 1:.pr|
00001000  65 73 73 28 68 61 6e 64  25 2c 36 29 0d 04 ce 1a  |ess(hand%,6)....|
00001010  20 20 c9 20 33 3a f2 70  72 65 73 73 28 68 61 6e  |  . 3:.press(han|
00001020  64 25 2c 31 32 29 0d 04  d8 1a 20 20 c9 20 34 3a  |d%,12)....  . 4:|
00001030  f2 70 72 65 73 73 28 68  61 6e 64 25 2c 31 31 29  |.press(hand%,11)|
00001040  0d 04 e2 19 20 20 c9 20  37 3a f2 70 72 65 73 73  |....  . 7:.press|
00001050  28 68 61 6e 64 25 2c 38  29 0d 04 ec 19 20 20 c9  |(hand%,8)....  .|
00001060  20 39 3a f2 70 72 65 73  73 28 68 61 6e 64 25 2c  | 9:.press(hand%,|
00001070  37 29 0d 04 f6 30 20 20  c9 20 31 35 3a f2 73 65  |7)...0  . 15:.se|
00001080  74 69 63 6f 6e 28 68 61  6e 64 25 2c 32 32 2c a3  |ticon(hand%,22,.|
00001090  29 3a f2 70 72 65 73 73  28 68 61 6e 64 25 2c 32  |):.press(hand%,2|
000010a0  31 29 0d 05 00 30 20 20  c9 20 31 36 3a f2 73 65  |1)...0  . 16:.se|
000010b0  74 69 63 6f 6e 28 68 61  6e 64 25 2c 32 31 2c a3  |ticon(hand%,21,.|
000010c0  29 3a f2 70 72 65 73 73  28 68 61 6e 64 25 2c 32  |):.press(hand%,2|
000010d0  32 29 0d 05 0a 1a 20 20  c9 20 31 37 3a f2 70 72  |2)....  . 17:.pr|
000010e0  65 73 73 28 68 61 6e 64  25 2c 35 29 0d 05 14 1a  |ess(hand%,5)....|
000010f0  20 20 c9 20 31 39 3a f2  70 72 65 73 73 28 68 61  |  . 19:.press(ha|
00001100  6e 64 25 2c 39 29 0d 05  1e 1b 20 20 c9 20 32 33  |nd%,9)....  . 23|
00001110  3a f2 70 72 65 73 73 28  68 61 6e 64 25 2c 31 30  |:.press(hand%,10|
00001120  29 0d 05 28 1a 20 20 c9  20 32 34 3a f2 70 72 65  |)..(.  . 24:.pre|
00001130  73 73 28 68 61 6e 64 25  2c 33 29 0d 05 32 1a 20  |ss(hand%,3)..2. |
00001140  20 c9 20 32 35 3a f2 70  72 65 73 73 28 68 61 6e  | . 25:.press(han|
00001150  64 25 2c 34 29 0d 05 3c  1f 20 20 c9 20 33 38 2c  |d%,4)..<.  . 38,|
00001160  34 30 35 3a f2 70 72 65  73 73 28 68 61 6e 64 25  |405:.press(hand%|
00001170  2c 31 33 29 0d 05 46 1f  20 20 c9 20 34 32 2c 34  |,13)..F.  . 42,4|
00001180  30 37 3a f2 70 72 65 73  73 28 68 61 6e 64 25 2c  |07:.press(hand%,|
00001190  31 35 29 0d 05 50 1f 20  20 c9 20 34 33 2c 34 30  |15)..P.  . 43,40|
000011a0  36 3a f2 70 72 65 73 73  28 68 61 6e 64 25 2c 31  |6:.press(hand%,1|
000011b0  34 29 0d 05 5a 1c 20 20  c9 20 31 32 37 3a f2 70  |4)..Z.  . 127:.p|
000011c0  72 65 73 73 28 68 61 6e  64 25 2c 31 32 29 0d 05  |ress(hand%,12)..|
000011d0  64 2e 20 20 c9 20 33 38  37 3a 24 73 61 76 65 74  |d.  . 387:$savet|
000011e0  65 78 74 3d 24 28 a4 61  64 64 72 28 22 6e 22 2c  |ext=$(.addr("n",|
000011f0  63 75 72 72 65 6e 74 25  29 2b 34 29 0d 05 6e 47  |current%)+4)..nG|
00001200  20 20 20 c8 99 20 63 72  6d 65 6e 75 2c 2c 73 61  |   .. crmenu,,sa|
00001210  76 65 68 61 6e 64 25 2c  78 25 2d 36 34 2c 79 25  |vehand%,x%-64,y%|
00001220  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 43 61 72  |:.. "Wimp_GetCar|
00001230  65 74 50 6f 73 69 74 69  6f 6e 22 2c 2c 63 61 72  |etPosition",,car|
00001240  65 74 25 0d 05 78 28 20  20 20 f2 74 65 78 74 65  |et%..x(   .texte|
00001250  6e 64 28 73 61 76 65 68  61 6e 64 25 2c 30 29 3a  |nd(savehand%,0):|
00001260  63 61 72 65 74 25 21 32  30 3d b9 0d 05 82 1c 20  |caret%!20=..... |
00001270  20 c9 20 33 38 39 3a f2  70 72 65 73 73 28 68 61  | . 389:.press(ha|
00001280  6e 64 25 2c 31 30 29 0d  05 8c 1f 20 20 c9 20 33  |nd%,10)....  . 3|
00001290  39 30 2c 34 36 31 3a f2  70 72 65 73 73 28 68 61  |90,461:.press(ha|
000012a0  6e 64 25 2c 39 29 0d 05  96 1f 20 20 c9 20 33 39  |nd%,9)....  . 39|
000012b0  31 2c 33 39 35 3a f2 70  72 65 73 73 28 68 61 6e  |1,395:.press(han|
000012c0  64 25 2c 38 29 0d 05 a0  2a 20 20 c9 20 33 39 32  |d%,8)...*  . 392|
000012d0  3a 21 71 25 3d 68 61 6e  64 25 3a 71 25 21 34 3d  |:!q%=hand%:q%!4=|
000012e0  31 36 3a c8 99 20 67 65  74 69 63 2c 2c 71 25 0d  |16:.. getic,,q%.|
000012f0  05 aa 26 20 20 20 e7 20  71 25 3f 32 36 20 80 20  |..&   . q%?26 . |
00001300  33 32 20 8b 20 f2 70 72  65 73 73 28 68 61 6e 64  |32 . .press(hand|
00001310  25 2c 31 36 29 0d 05 b4  1c 20 20 c9 20 33 39 33  |%,16)....  . 393|
00001320  3a f2 70 72 65 73 73 28  68 61 6e 64 25 2c 31 31  |:.press(hand%,11|
00001330  29 0d 05 be 2e 20 20 c9  20 33 39 36 2c 33 39 37  |)....  . 396,397|
00001340  2c 33 39 38 2c 33 39 39  3a f2 70 72 65 73 73 28  |,398,399:.press(|
00001350  68 61 6e 64 25 2c 6b 65  79 25 2d 33 37 39 29 0d  |hand%,key%-379).|
00001360  05 c8 2e 20 20 c9 20 34  31 32 2c 34 31 33 2c 34  |...  . 412,413,4|
00001370  31 34 2c 34 31 35 2c 34  32 38 2c 34 32 39 2c 34  |14,415,428,429,4|
00001380  33 30 2c 34 33 31 3a 2a  46 58 20 31 35 0d 05 d2  |30,431:*FX 15...|
00001390  10 20 20 20 c8 8e 20 6b  65 79 25 20 ca 0d 05 dc  |.   .. key% ....|
000013a0  3b 20 20 20 c9 20 34 31  32 2c 34 32 38 3a 6e 25  |;   . 412,428:n%|
000013b0  3d 63 68 72 25 2d 31 3a  e7 20 6e 25 3c 33 32 3a  |=chr%-1:. n%<32:|
000013c0  6e 25 3d 32 35 35 3a 8b  20 e7 20 6e 25 3d 31 32  |n%=255:. . n%=12|
000013d0  37 3a 6e 25 3d 31 32 36  0d 05 e6 3b 20 20 20 c9  |7:n%=126...;   .|
000013e0  20 34 31 33 2c 34 32 39  3a 6e 25 3d 63 68 72 25  | 413,429:n%=chr%|
000013f0  2b 31 3a e7 20 6e 25 3e  32 35 35 3a 6e 25 3d 33  |+1:. n%>255:n%=3|
00001400  32 3a 8b 20 e7 20 6e 25  3d 31 32 37 3a 6e 25 3d  |2:. . n%=127:n%=|
00001410  31 32 38 0d 05 f0 3e 20  20 20 c9 20 34 31 34 2c  |128...>   . 414,|
00001420  34 33 30 3a 6e 25 3d 63  68 72 25 2b 33 32 3a e7  |430:n%=chr%+32:.|
00001430  20 6e 25 3e 32 35 35 3a  6e 25 2d 3d 32 32 34 3a  | n%>255:n%-=224:|
00001440  8b 20 e7 20 6e 25 3d 31  32 37 3a 6e 25 3d 31 35  |. . n%=127:n%=15|
00001450  39 0d 05 fa 3c 20 20 20  c9 20 34 31 35 2c 34 33  |9...<   . 415,43|
00001460  31 3a 6e 25 3d 63 68 72  25 2d 33 32 3a e7 20 6e  |1:n%=chr%-32:. n|
00001470  25 3c 33 32 3a 6e 25 2b  3d 32 32 34 3a 8b 20 e7  |%<32:n%+=224:. .|
00001480  20 6e 25 3d 31 32 37 3a  6e 25 3d 39 35 0d 06 04  | n%=127:n%=95...|
00001490  08 20 20 20 cb 0d 06 0e  1d 20 20 20 e7 20 6e 25  |.   .....   . n%|
000014a0  3c 3e 63 68 72 25 3a f2  73 65 74 63 68 72 28 6e  |<>chr%:.setchr(n|
000014b0  25 29 0d 06 18 1f 20 20  c9 20 34 31 38 3a f2 63  |%)....  . 418:.c|
000014c0  6c 6f 73 65 77 69 6e 64  6f 77 28 68 61 6e 64 25  |losewindow(hand%|
000014d0  29 0d 06 22 0c 20 20 7f  3a 69 25 3d b9 0d 06 2c  |)..".  .:i%=...,|
000014e0  07 20 20 cb 0d 06 36 06  20 cd 0d 06 40 05 cb 0d  |.  ...6. ...@...|
000014f0  06 4a 22 e7 20 69 25 3a  c8 99 20 22 57 69 6d 70  |.J". i%:.. "Wimp|
00001500  5f 50 72 6f 63 65 73 73  4b 65 79 22 2c 6b 65 79  |_ProcessKey",key|
00001510  25 0d 06 54 0c 2a 46 58  20 32 31 2c 31 0d 06 5e  |%..T.*FX 21,1..^|
00001520  05 e1 0d 06 68 05 3a 0d  06 72 19 dd 20 f2 70 72  |....h.:..r.. .pr|
00001530  65 73 73 28 68 61 6e 64  25 2c 69 63 6f 6e 25 29  |ess(hand%,icon%)|
00001540  0d 06 7c 0f e7 20 69 63  6f 6e 25 3c 30 20 8c 0d  |..|.. icon%<0 ..|
00001550  06 86 29 20 f2 63 68 65  63 6b 6d 6f 75 73 65 28  |..) .checkmouse(|
00001560  78 25 2c 79 25 2c 31 2c  68 61 6e 64 25 2c ac 20  |x%,y%,1,hand%,. |
00001570  69 63 6f 6e 25 2c 30 29  0d 06 90 28 cc 20 f2 63  |icon%,0)...(. .c|
00001580  68 65 63 6b 6d 6f 75 73  65 28 78 25 2c 79 25 2c  |heckmouse(x%,y%,|
00001590  34 2c 68 61 6e 64 25 2c  69 63 6f 6e 25 2c 30 29  |4,hand%,icon%,0)|
000015a0  0d 06 9a 05 cd 0d 06 a4  05 e1 0d 06 ae 05 3a 0d  |..............:.|
000015b0  06 b8 10 dd 20 f2 73 65  74 63 68 72 28 6e 29 0d  |.... .setchr(n).|
000015c0  06 c2 41 f2 73 68 6f 77  75 70 28 3f a4 61 64 64  |..A.showup(?.add|
000015d0  72 28 22 6e 22 2c 63 75  72 72 65 6e 74 25 29 29  |r("n",current%))|
000015e0  3a 21 62 75 66 3d 68 61  6e 64 6c 65 25 28 63 75  |:!buf=handle%(cu|
000015f0  72 72 65 6e 74 25 29 3a  62 75 66 21 34 3d 32 33  |rrent%):buf!4=23|
00001600  0d 06 cc 3f c8 99 20 67  65 74 69 63 2c 2c 62 75  |...?.. getic,,bu|
00001610  66 3a c8 99 20 22 57 69  6d 70 5f 44 65 6c 65 74  |f:.. "Wimp_Delet|
00001620  65 49 63 6f 6e 22 2c 2c  62 75 66 3a 62 75 66 3f  |eIcon",,buf:buf?|
00001630  32 38 3d 6e 3a 62 75 66  21 34 3d 21 62 75 66 0d  |28=n:buf!4=!buf.|
00001640  06 d6 41 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |..A.. "Wimp_Crea|
00001650  74 65 49 63 6f 6e 22 2c  2c 62 75 66 2b 34 3a 3f  |teIcon",,buf+4:?|
00001660  a4 61 64 64 72 28 22 6e  22 2c 63 75 72 72 65 6e  |.addr("n",curren|
00001670  74 25 29 3d 6e 3a f2 73  68 6f 77 75 70 28 6e 29  |t%)=n:.showup(n)|
00001680  0d 06 e0 25 f2 72 65 64  72 61 77 69 63 6f 6e 28  |...%.redrawicon(|
00001690  68 61 6e 64 6c 65 25 28  63 75 72 72 65 6e 74 25  |handle%(current%|
000016a0  29 2c 32 33 29 0d 06 ea  05 e1 0d 06 f4 05 3a 0d  |),23).........:.|
000016b0  06 fe 0f dd 20 a4 70 61  74 68 28 66 24 29 0d 07  |.... .path(f$)..|
000016c0  08 2d ea 20 69 25 3a 69  25 3d a9 20 66 24 2b 31  |.-. i%:i%=. f$+1|
000016d0  3a e7 20 a7 66 24 2c 22  3a 3a 22 29 3a 69 25 3d  |:. .f$,"::"):i%=|
000016e0  a7 66 24 2c 22 3a 3a 22  29 2b 32 0d 07 12 13 66  |.f$,"::")+2....f|
000016f0  24 3d c1 66 24 2c 69 25  29 3a 69 25 3d a3 0d 07  |$=.f$,i%):i%=...|
00001700  1c 31 e7 20 a7 66 24 2c  22 2e 22 29 3a 66 24 3d  |.1. .f$,"."):f$=|
00001710  c1 66 24 2c a7 66 24 2c  22 2e 22 29 2b 31 29 3a  |.f$,.f$,".")+1):|
00001720  e7 20 a7 66 24 2c 22 2e  22 29 3a 69 25 3d b9 0d  |. .f$,"."):i%=..|
00001730  07 26 2c e7 20 69 25 20  8b 20 f2 74 65 6c 6c 74  |.&,. i% . .tellt|
00001740  68 65 6d 6f 66 66 28 a4  6c 6f 6f 6b 75 70 28 22  |hemoff(.lookup("|
00001750  44 72 61 67 53 61 76 65  22 29 29 0d 07 30 07 3d  |DragSave"))..0.=|
00001760  69 25 0d 07 3a 05 3a 0d  07 44 1c dd 20 a4 74 65  |i%..:.:..D.. .te|
00001770  78 74 61 64 64 72 28 68  61 6e 64 25 2c 69 63 6f  |xtaddr(hand%,ico|
00001780  6e 25 29 0d 07 4e 32 f2  67 65 74 69 63 6f 6e 69  |n%)..N2.geticoni|
00001790  6e 66 6f 28 68 61 6e 64  25 2c 69 63 6f 6e 25 29  |nfo(hand%,icon%)|
000017a0  3a e7 20 69 63 6e 3f 32  35 20 80 20 31 3a 3d 69  |:. icn?25 . 1:=i|
000017b0  63 6e 21 32 38 0d 07 58  0b 3d 69 63 6e 2b 32 38  |cn!28..X.=icn+28|
000017c0  0d 07 62 05 3a 0d 07 6c  1f dd 20 f2 67 65 74 69  |..b.:..l.. .geti|
000017d0  63 6f 6e 69 6e 66 6f 28  68 61 6e 64 25 2c 69 63  |coninfo(hand%,ic|
000017e0  6f 6e 25 29 0d 07 76 28  21 69 63 6e 3d 68 61 6e  |on%)..v(!icn=han|
000017f0  64 25 3a 69 63 6e 21 34  3d 69 63 6f 6e 25 3a c8  |d%:icn!4=icon%:.|
00001800  99 20 67 65 74 69 63 2c  2c 69 63 6e 0d 07 80 05  |. getic,,icn....|
00001810  e1 0d 07 8a 05 3a 0d 07  94 10 dd 20 f2 72 65 70  |.....:..... .rep|
00001820  6c 6f 74 6d 61 70 0d 07  9e 17 ea 20 78 25 2c 79  |lotmap..... x%,y|
00001830  25 2c 41 25 2c 42 25 2c  43 25 2c 44 25 0d 07 a8  |%,A%,B%,C%,D%...|
00001840  38 c8 99 20 73 70 6f 70  2c 32 35 36 2b 36 30 2c  |8.. spop,256+60,|
00001850  73 70 72 25 2c 22 62 22  2b c3 20 63 75 72 72 65  |spr%,"b"+. curre|
00001860  6e 74 25 20 b8 20 60 31  25 2c 60 32 25 2c 60 33  |nt% . `1%,`2%,`3|
00001870  25 2c 60 34 25 0d 07 b2  0e e3 20 78 25 3d 30 20  |%,`4%..... x%=0 |
00001880  b8 20 37 0d 07 bc 0f 20  e3 20 79 25 3d 30 20 b8  |. 7.... . y%=0 .|
00001890  20 37 0d 07 c6 3f 20 20  e6 20 28 79 25 3f 62 69  | 7...?  . (y%?bi|
000018a0  74 25 20 80 20 31 32 38  3e 3e 78 25 29 3e 30 20  |t% . 128>>x%)>0 |
000018b0  80 20 31 3a c8 93 20 c8  90 20 78 25 2a 32 34 2b  |. 1:.. .. x%*24+|
000018c0  34 2c 33 34 34 2d 79 25  2a 34 38 2c 31 37 2c 33  |4,344-y%*48,17,3|
000018d0  35 0d 07 d0 06 20 ed 0d  07 da 05 ed 0d 07 e4 3a  |5.... .........:|
000018e0  c8 99 20 73 70 6f 70 2c  32 35 36 2b 36 30 2c 73  |.. spop,256+60,s|
000018f0  70 72 25 2c 22 63 22 2b  c3 20 63 75 72 72 65 6e  |pr%,"c"+. curren|
00001900  74 25 3a e6 20 30 3a c8  93 20 c8 90 20 34 2c 38  |t%:. 0:.. .. 4,8|
00001910  2c 31 35 2c 33 31 0d 07  ee 3c 44 25 3d 62 69 74  |,15,31...<D%=bit|
00001920  25 3a 45 25 3d 34 3a 46  25 3d 33 36 3a e6 20 31  |%:E%=4:F%=36:. 1|
00001930  3a d6 20 70 6c 6f 74 63  68 72 3a c8 99 20 73 70  |:. plotchr:.. sp|
00001940  6f 70 2c 60 31 25 2c 60  32 25 2c 60 33 25 2c 60  |op,`1%,`2%,`3%,`|
00001950  34 25 0d 07 f8 05 e1 0d  08 02 05 3a 0d 08 0c 17  |4%.........:....|
00001960  dd 20 f2 72 65 70 6c 6f  74 63 68 72 28 58 25 2c  |. .replotchr(X%,|
00001970  59 25 29 0d 08 16 45 c8  99 20 73 70 6f 70 2c 32  |Y%)...E.. spop,2|
00001980  35 36 2b 36 30 2c 73 70  72 25 2c 22 6d 22 2b c3  |56+60,spr%,"m"+.|
00001990  20 63 75 72 72 65 6e 74  25 20 b8 20 60 31 25 2c  | current% . `1%,|
000019a0  60 32 25 2c 60 33 25 2c  60 34 25 3a c8 99 20 67  |`2%,`3%,`4%:.. g|
000019b0  65 74 69 63 2c 2c 71 25  0d 08 20 10 e3 20 6e 25  |etic,,q%.. .. n%|
000019c0  3d 58 25 20 b8 20 59 25  0d 08 2a 10 20 e7 20 6e  |=X% . Y%..*. . n|
000019d0  25 3c 3e 31 32 37 20 8c  0d 08 34 38 20 20 44 25  |%<>127 ...48  D%|
000019e0  3d a4 63 68 72 28 6e 25  29 3a 45 25 3d 28 6e 25  |=.chr(n%):E%=(n%|
000019f0  20 80 20 33 31 29 2a 31  38 3a 46 25 3d 28 37 2d  | . 31)*18:F%=(7-|
00001a00  28 6e 25 20 81 20 33 32  29 29 2a 36 38 2b 33 35  |(n% . 32))*68+35|
00001a10  0d 08 3e 2c 20 20 e6 20  30 3a c8 93 20 c8 90 20  |..>,  . 0:.. .. |
00001a20  45 25 2c 46 25 2d 33 31  2c 31 35 2c 33 31 3a e6  |E%,F%-31,15,31:.|
00001a30  20 33 3a d6 20 70 6c 6f  74 63 68 72 0d 08 48 06  | 3:. plotchr..H.|
00001a40  20 cd 0d 08 52 05 ed 0d  08 5c 3c c8 99 20 73 70  | ...R....\<.. sp|
00001a50  6f 70 2c 60 31 25 2c 60  32 25 2c 60 33 25 2c 60  |op,`1%,`2%,`3%,`|
00001a60  34 25 3a f2 72 65 64 72  61 77 69 63 6f 6e 28 68  |4%:.redrawicon(h|
00001a70  61 6e 64 6c 65 25 28 63  75 72 72 65 6e 74 25 29  |andle%(current%)|
00001a80  2c 31 29 0d 08 66 05 e1  0d 08 70 05 3a 0d 08 7a  |,1)..f....p.:..z|
00001a90  13 dd 20 f2 73 68 6f 77  75 70 28 63 68 72 25 29  |.. .showup(chr%)|
00001aa0  0d 08 84 47 ea 20 6e 25  2c 78 25 2c 79 25 3a 50  |...G. n%,x%,y%:P|
00001ab0  25 3d a4 63 68 72 28 63  68 72 25 29 3a 78 25 3d  |%=.chr(chr%):x%=|
00001ac0  28 63 68 72 25 20 80 20  33 31 29 2a 31 38 3a 79  |(chr% . 31)*18:y|
00001ad0  25 3d 28 37 2d 28 63 68  72 25 20 81 20 33 32 29  |%=(7-(chr% . 32)|
00001ae0  29 2a 36 38 2b 33 36 0d  08 8e 38 c8 99 20 73 70  |)*68+36...8.. sp|
00001af0  6f 70 2c 32 35 36 2b 36  30 2c 73 70 72 25 2c 22  |op,256+60,spr%,"|
00001b00  6d 22 2b c3 20 63 75 72  72 65 6e 74 25 20 b8 20  |m"+. current% . |
00001b10  60 31 25 2c 60 32 25 2c  60 33 25 2c 60 34 25 0d  |`1%,`2%,`3%,`4%.|
00001b20  08 98 3a e6 20 33 2c 32  3a c8 93 20 c8 90 20 78  |..:. 3,2:.. .. x|
00001b30  25 2c 79 25 2c 31 35 2c  33 31 3a c8 99 20 73 70  |%,y%,15,31:.. sp|
00001b40  6f 70 2c 60 31 25 2c 60  32 25 2c 60 33 25 2c 60  |op,`1%,`2%,`3%,`|
00001b50  34 25 3a 71 25 21 34 3d  31 0d 08 a2 4a 21 71 25  |4%:q%!4=1...J!q%|
00001b60  3d 68 61 6e 64 6c 65 25  28 63 75 72 72 65 6e 74  |=handle%(current|
00001b70  25 29 3a c8 99 20 67 65  74 69 63 2c 2c 71 25 3a  |%):.. getic,,q%:|
00001b80  f2 75 70 64 61 74 65 28  21 71 25 2c 71 25 21 38  |.update(!q%,q%!8|
00001b90  2b 78 25 2c 71 25 21 31  32 2b 79 25 2c 31 36 2c  |+x%,q%!12+y%,16,|
00001ba0  33 32 29 0d 08 ac 05 e1  0d 08 b6 05 3a 0d 08 c0  |32).........:...|
00001bb0  1f dd 20 f2 75 70 64 61  74 65 28 68 61 6e 64 25  |.. .update(hand%|
00001bc0  2c 78 25 2c 79 25 2c 6e  25 2c 66 29 0d 08 ca 25  |,x%,y%,n%,f)...%|
00001bd0  c8 99 20 66 72 65 64 72  61 77 2c 68 61 6e 64 25  |.. fredraw,hand%|
00001be0  2c 78 25 2c 79 25 2c 78  25 2b 6e 25 2c 79 25 2b  |,x%,y%,x%+n%,y%+|
00001bf0  66 0d 08 d4 05 e1 0d 08  de 05 3a 0d 08 e8 10 dd  |f.........:.....|
00001c00  20 a4 63 68 72 28 63 68  72 25 29 0d 08 f2 33 e7  | .chr(chr%)...3.|
00001c10  20 63 68 72 25 3a 3d a4  61 64 64 72 28 22 66 22  | chr%:=.addr("f"|
00001c20  2c 63 75 72 72 65 6e 74  25 29 2b 63 68 72 25 2a  |,current%)+chr%*|
00001c30  31 30 2d 33 31 38 3a 8b  20 3d 62 69 74 25 0d 08  |10-318:. =bit%..|
00001c40  fc 05 3a 0d 09 06 0e dd  20 f2 6d 65 73 73 61 67  |..:..... .messag|
00001c50  65 0d 09 10 26 e3 20 6e  25 3d 30 20 b8 20 21 71  |e...&. n%=0 . !q|
00001c60  25 2d 31 20 88 20 34 3a  6d 73 67 25 21 6e 25 3d  |%-1 . 4:msg%!n%=|
00001c70  71 25 21 6e 25 3a ed 0d  09 1a 0e c8 8e 20 71 25  |q%!n%:....... q%|
00001c80  21 31 36 20 ca 0d 09 24  15 c9 20 30 3a 65 6e 64  |!16 ...$.. 0:end|
00001c90  25 3d b9 3a 72 73 74 25  3d a3 0d 09 2e 11 c9 20  |%=.:rst%=...... |
00001ca0  31 3a f2 64 61 74 61 73  61 76 65 0d 09 38 14 c9  |1:.datasave..8..|
00001cb0  20 32 3a f2 64 61 74 61  73 61 76 65 61 63 6b 0d  | 2:.datasaveack.|
00001cc0  09 42 11 c9 20 33 3a f2  64 61 74 61 6c 6f 61 64  |.B.. 3:.dataload|
00001cd0  0d 09 4c 11 c9 20 35 3a  f2 64 61 74 61 6f 70 65  |..L.. 5:.dataope|
00001ce0  6e 0d 09 56 3d c9 20 38  3a 65 6e 64 25 3d b9 3a  |n..V=. 8:end%=.:|
00001cf0  72 73 74 25 3d 71 25 21  32 30 3d 30 3a 21 6d 73  |rst%=q%!20=0:!ms|
00001d00  67 25 3d 32 30 3a 6d 73  67 25 21 31 32 3d 6d 73  |g%=20:msg%!12=ms|
00001d10  67 25 21 38 3a 6d 73 67  25 21 31 36 3d 30 0d 09  |g%!8:msg%!16=0..|
00001d20  60 31 20 e7 20 a4 63 68  61 6e 67 65 64 28 2d 31  |`1 . .changed(-1|
00001d30  29 3a c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |):.. "Wimp_SendM|
00001d40  65 73 73 61 67 65 22 2c  31 39 2c 6d 73 67 25 0d  |essage",19,msg%.|
00001d50  09 6a 12 c9 20 31 30 3a  f2 73 61 76 65 6f 70 74  |.j.. 10:.saveopt|
00001d60  73 0d 09 74 10 c9 20 31  32 38 32 3a f2 68 65 6c  |s..t.. 1282:.hel|
00001d70  70 0d 09 7e 0c c9 20 26  34 30 30 43 30 0d 09 88  |p..~.. &400C0...|
00001d80  18 20 e7 20 71 25 21 32  30 3d 73 61 76 65 68 61  |. . q%!20=saveha|
00001d90  6e 64 25 20 8c 0d 09 92  4a 20 20 66 3d 71 25 21  |nd% ....J  f=q%!|
00001da0  32 34 3a 67 3d 71 25 21  32 38 3a c8 99 20 67 65  |24:g=q%!28:.. ge|
00001db0  74 77 2c 2c 71 25 2b 32  30 3a 71 25 21 32 34 3d  |tw,,q%+20:q%!24=|
00001dc0  66 3a 71 25 21 32 38 3d  67 2d 73 61 76 65 79 25  |f:q%!28=g-savey%|
00001dd0  3a 71 25 21 33 32 3d 66  2b 73 61 76 65 78 25 0d  |:q%!32=f+savex%.|
00001de0  09 9c 40 20 20 71 25 21  33 36 3d 67 3a c8 99 20  |..@  q%!36=g:.. |
00001df0  6f 70 65 6e 77 2c 2c 71  25 2b 32 30 3a c8 99 20  |openw,,q%+20:.. |
00001e00  22 57 69 6d 70 5f 43 72  65 61 74 65 53 75 62 4d  |"Wimp_CreateSubM|
00001e10  65 6e 75 22 2c 2c 71 25  21 32 30 2c 66 2c 67 0d  |enu",,q%!20,f,g.|
00001e20  09 a6 34 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |..4  .. "Wimp_Ge|
00001e30  74 43 61 72 65 74 50 6f  73 69 74 69 6f 6e 22 2c  |tCaretPosition",|
00001e40  2c 63 61 72 65 74 25 3a  63 61 72 65 74 25 21 32  |,caret%:caret%!2|
00001e50  30 3d b9 0d 09 b0 3d 20  20 f2 74 65 78 74 65 6e  |0=....=  .texten|
00001e60  64 28 73 61 76 65 68 61  6e 64 25 2c 30 29 3a 21  |d(savehand%,0):!|
00001e70  71 25 3d 73 61 76 65 68  61 6e 64 25 3a 71 25 21  |q%=savehand%:q%!|
00001e80  34 3d 36 3a c8 99 20 67  65 74 69 63 2c 2c 71 25  |4=6:.. getic,,q%|
00001e90  0d 09 ba 2a 20 20 f2 67  72 65 79 69 63 6f 6e 28  |...*  .greyicon(|
00001ea0  73 61 76 65 68 61 6e 64  25 2c 37 2c 71 25 21 32  |savehand%,7,q%!2|
00001eb0  34 20 80 20 31 3c 3c 32  31 29 0d 09 c4 2b 20 20  |4 . 1<<21)...+  |
00001ec0  e3 20 6e 3d 38 20 b8 20  31 31 3a f2 67 72 65 79  |. n=8 . 11:.grey|
00001ed0  69 63 6f 6e 28 73 61 76  65 68 61 6e 64 25 2c 6e  |icon(savehand%,n|
00001ee0  2c a3 29 3a ed 0d 09 ce  06 20 cd 0d 09 d8 24 c9  |,.):..... ....$.|
00001ef0  20 26 34 30 30 43 33 3a  c8 99 20 6d 76 61 72 2c  | &400C3:.. mvar,|
00001f00  2d 31 2c 31 32 20 b8 20  2c 2c 6d 61 78 79 25 0d  |-1,12 . ,,maxy%.|
00001f10  09 e2 28 20 c8 99 20 6d  76 61 72 2c 2d 31 2c 35  |..( .. mvar,-1,5|
00001f20  20 b8 20 2c 2c 59 25 3a  6d 61 78 79 25 3d 6d 61  | . ,,Y%:maxy%=ma|
00001f30  78 79 25 3c 3c 59 25 0d  09 ec 37 20 e7 20 74 6f  |xy%<<Y%...7 . to|
00001f40  70 79 25 3e 6d 61 78 79  25 3a 74 6f 70 79 25 3d  |py%>maxy%:topy%=|
00001f50  6d 61 78 79 25 2d 38 30  3a e7 20 74 6f 70 79 25  |maxy%-80:. topy%|
00001f60  3c 30 3a 74 6f 70 79 25  3d 6d 61 78 79 25 0d 09  |<0:topy%=maxy%..|
00001f70  f6 0c c9 20 26 34 30 30  43 39 0d 0a 00 12 20 e7  |... &400C9.... .|
00001f80  20 63 61 72 65 74 25 21  32 30 20 8c 0d 0a 0a 4e  | caret%!20 ....N|
00001f90  20 20 c8 99 20 22 57 69  6d 70 5f 53 65 74 43 61  |  .. "Wimp_SetCa|
00001fa0  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 21 63 61  |retPosition",!ca|
00001fb0  72 65 74 25 2c 63 61 72  65 74 25 21 34 2c 63 61  |ret%,caret%!4,ca|
00001fc0  72 65 74 25 21 38 2c 63  61 72 65 74 25 21 31 32  |ret%!8,caret%!12|
00001fd0  2c 63 61 72 65 74 25 21  31 36 0d 0a 14 11 20 20  |,caret%!16....  |
00001fe0  63 61 72 65 74 25 21 32  30 3d a3 0d 0a 1e 06 20  |caret%!20=..... |
00001ff0  cd 0d 0a 28 05 cb 0d 0a  32 05 e1 0d 0a 3c 05 3a  |...(....2....<.:|
00002000  0d 0a 46 1f dd 20 f2 72  65 70 6c 79 28 6d 65 73  |..F.. .reply(mes|
00002010  73 74 79 70 65 25 2c 72  65 61 73 6f 6e 25 29 0d  |stype%,reason%).|
00002020  0a 50 4e 6d 73 67 25 21  31 32 3d 6d 73 67 25 21  |.PNmsg%!12=msg%!|
00002030  38 3a 6d 73 67 25 21 31  36 3d 72 65 61 73 6f 6e  |8:msg%!16=reason|
00002040  25 3a c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |%:.. "Wimp_SendM|
00002050  65 73 73 61 67 65 22 2c  6d 65 73 73 74 79 70 65  |essage",messtype|
00002060  25 2c 6d 73 67 25 2c 6d  73 67 25 21 34 0d 0a 5a  |%,msg%,msg%!4..Z|
00002070  05 e1 0d 0a 64 05 3a 0d  0a 6e 2d dd 20 f2 63 68  |....d.:..n-. .ch|
00002080  65 63 6b 6d 6f 75 73 65  28 6d 78 25 2c 6d 79 25  |eckmouse(mx%,my%|
00002090  2c 62 25 2c 68 61 6e 64  25 2c 69 63 6f 6e 25 2c  |,b%,hand%,icon%,|
000020a0  6f 62 25 29 0d 0a 78 11  e7 20 62 25 20 80 20 26  |ob%)..x.. b% . &|
000020b0  35 30 35 20 8c 0d 0a 82  12 20 63 25 3d 28 62 25  |505 ..... c%=(b%|
000020c0  20 80 20 31 29 3e 30 0d  0a 8c 0f 20 c8 8e 20 68  | . 1)>0.... .. h|
000020d0  61 6e 64 25 20 ca 0d 0a  96 12 20 c9 20 2d 32 3a  |and% ..... . -2:|
000020e0  f2 6e 65 77 66 69 6c 65  0d 0a a0 10 20 c9 20 73  |.newfile.... . s|
000020f0  61 76 65 68 61 6e 64 25  0d 0a aa 10 20 20 c8 8e  |avehand%....  ..|
00002100  20 69 63 6f 6e 25 20 ca  0d 0a b4 2f 20 20 c9 20  | icon% ..../  . |
00002110  30 3a e3 20 6e 3d 38 20  b8 20 31 31 3a f2 67 72  |0:. n=8 . 11:.gr|
00002120  65 79 69 63 6f 6e 28 73  61 76 65 68 61 6e 64 25  |eyicon(savehand%|
00002130  2c 6e 2c a3 29 3a ed 0d  0a be 42 20 20 c9 20 31  |,n,.):....B  . 1|
00002140  3a 66 24 3d a4 67 65 74  73 74 72 28 73 61 76 65  |:f$=.getstr(save|
00002150  74 65 78 74 29 3a e7 20  a4 70 61 74 68 28 66 24  |text):. .path(f$|
00002160  29 3a f2 73 61 76 65 28  66 24 29 3a c8 99 20 63  |):.save(f$):.. c|
00002170  72 6d 65 6e 75 2c 2c 2d  31 0d 0a c8 22 20 20 c9  |rmenu,,-1..."  .|
00002180  20 32 3a f2 69 6e 69 74  73 61 76 65 64 72 61 67  | 2:.initsavedrag|
00002190  28 73 61 76 65 68 61 6e  64 25 29 0d 0a d2 2b 20  |(savehand%)...+ |
000021a0  20 c9 20 33 2c 34 2c 35  2c 36 3a f2 73 65 74 69  | . 3,4,5,6:.seti|
000021b0  63 6f 6e 28 73 61 76 65  68 61 6e 64 25 2c 69 63  |con(savehand%,ic|
000021c0  6f 6e 25 2c b9 29 0d 0a  dc 25 20 20 20 f2 67 72  |on%,.)...%   .gr|
000021d0  65 79 69 63 6f 6e 28 73  61 76 65 68 61 6e 64 25  |eyicon(savehand%|
000021e0  2c 37 2c 69 63 6f 6e 25  3d 36 29 0d 0a e6 25 20  |,7,icon%=6)...% |
000021f0  20 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 43 61  |  .. "Wimp_GetCa|
00002200  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 2c 71 25  |retPosition",,q%|
00002210  0d 0a f0 28 20 20 20 e7  20 21 71 25 3d 68 61 6e  |...(   . !q%=han|
00002220  64 25 20 80 20 71 25 21  34 3d 37 20 80 20 69 63  |d% . q%!4=7 . ic|
00002230  6f 6e 25 3c 3e 36 20 8c  0d 0a fa 3d 20 20 20 20  |on%<>6 ....=    |
00002240  f2 74 65 78 74 65 6e 64  28 21 71 25 2c 30 29 3a  |.textend(!q%,0):|
00002250  e3 20 6e 3d 38 20 b8 20  31 31 3a f2 67 72 65 79  |. n=8 . 11:.grey|
00002260  69 63 6f 6e 28 73 61 76  65 68 61 6e 64 25 2c 6e  |icon(savehand%,n|
00002270  2c a3 29 3a ed 0d 0b 04  08 20 20 20 cd 0d 0b 0e  |,.):.....   ....|
00002280  2f 20 20 c9 20 37 3a e3  20 6e 3d 38 20 b8 20 31  |/  . 7:. n=8 . 1|
00002290  31 3a f2 67 72 65 79 69  63 6f 6e 28 73 61 76 65  |1:.greyicon(save|
000022a0  68 61 6e 64 25 2c 6e 2c  b9 29 3a ed 0d 0b 18 30  |hand%,n,.):....0|
000022b0  20 20 c9 20 38 2c 39 2c  31 30 2c 31 31 3a c8 99  |  . 8,9,10,11:..|
000022c0  20 22 57 69 6d 70 5f 47  65 74 43 61 72 65 74 50  | "Wimp_GetCaretP|
000022d0  6f 73 69 74 69 6f 6e 22  2c 2c 71 25 0d 0b 22 1a  |osition",,q%..".|
000022e0  20 20 20 e7 20 a9 20 24  73 61 76 65 63 68 72 73  |   . . $savechrs|
000022f0  3c 32 35 35 20 8c 0d 0b  2c 48 20 20 20 20 24 73  |<255 ...,H    $s|
00002300  61 76 65 63 68 72 73 3d  c0 24 73 61 76 65 63 68  |avechrs=.$savech|
00002310  72 73 2c 71 25 21 32 30  29 2b c1 22 5c 2d 84 7c  |rs,q%!20)+."\-.||
00002320  22 2c 69 63 6f 6e 25 2d  37 2c 31 29 2b 24 28 73  |",icon%-7,1)+$(s|
00002330  61 76 65 63 68 72 73 2b  71 25 21 32 30 29 0d 0b  |avechrs+q%!20)..|
00002340  36 4c 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 53  |6L    .. "Wimp_S|
00002350  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 22  |etCaretPosition"|
00002360  2c 68 61 6e 64 25 2c 37  2c 2c 2c 2d 31 2c 71 25  |,hand%,7,,,-1,q%|
00002370  21 32 30 2b 31 3a f2 72  65 64 72 61 77 69 63 6f  |!20+1:.redrawico|
00002380  6e 28 68 61 6e 64 25 2c  37 29 0d 0b 40 08 20 20  |n(hand%,7)..@.  |
00002390  20 cd 0d 0b 4a 07 20 20  cb 0d 0b 54 13 20 c9 20  | ...J.  ...T. . |
000023a0  75 6e 73 61 76 65 64 68  61 6e 64 25 0d 0b 5e 10  |unsavedhand%..^.|
000023b0  20 20 c8 8e 20 69 63 6f  6e 25 20 ca 0d 0b 68 2e  |  .. icon% ...h.|
000023c0  20 20 c9 20 31 3a e7 20  64 65 6c 65 74 65 25 3a  |  . 1:. delete%:|
000023d0  f2 64 65 6c 65 74 65 28  63 75 72 72 65 6e 74 25  |.delete(current%|
000023e0  29 3a 8b 20 65 6e 64 25  3d 31 0d 0b 72 10 20 20  |):. end%=1..r.  |
000023f0  c9 20 32 3a 72 73 74 25  3d a3 0d 0b 7c 07 20 20  |. 2:rst%=...|.  |
00002400  cb 0d 0b 86 13 20 20 c8  99 20 63 72 6d 65 6e 75  |.....  .. crmenu|
00002410  2c 2c 2d 31 0d 0b 90 10  20 c9 20 69 6e 66 6f 68  |,,-1.... . infoh|
00002420  61 6e 64 25 0d 0b 9a 06  20 7f 0d 0b a4 47 20 20  |and%.... ....G  |
00002430  63 75 72 72 65 6e 74 25  3d a4 66 69 6e 64 28 68  |current%=.find(h|
00002440  61 6e 64 25 29 3a 63 68  72 25 3d 3f a4 61 64 64  |and%):chr%=?.add|
00002450  72 28 22 6e 22 2c 63 75  72 72 65 6e 74 25 29 3a  |r("n",current%):|
00002460  21 71 25 3d 68 61 6e 64  25 3a 71 25 21 34 3d 32  |!q%=hand%:q%!4=2|
00002470  32 0d 0b ae 47 20 20 c8  99 20 22 57 69 6d 70 5f  |2...G  .. "Wimp_|
00002480  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
00002490  22 2c 68 61 6e 64 25 2c  2d 31 3a c8 99 20 67 65  |",hand%,-1:.. ge|
000024a0  74 69 63 2c 2c 71 25 3a  42 25 3d 71 25 21 32 34  |tic,,q%:B%=q%!24|
000024b0  20 80 20 31 3c 3c 32 31  0d 0b b8 2b 20 20 41 25  | . 1<<21...+  A%|
000024c0  3d 62 69 74 25 3a e7 20  42 25 3a 41 25 3d a4 61  |=bit%:. B%:A%=.a|
000024d0  64 64 72 28 22 66 22 2c  63 75 72 72 65 6e 74 25  |ddr("f",current%|
000024e0  29 2b 32 0d 0b c2 10 20  20 c8 8e 20 69 63 6f 6e  |)+2....  .. icon|
000024f0  25 20 ca 0d 0b cc 26 20  20 c9 20 30 3a f2 69 63  |% ....&  . 0:.ic|
00002500  6f 6e 78 79 28 68 61 6e  64 25 2c 30 2c 6d 78 25  |onxy(hand%,0,mx%|
00002510  2c 6d 79 25 2c 6e 2c 66  29 0d 0b d6 30 20 20 20  |,my%,n,f)...0   |
00002520  78 25 3d 6e 20 81 20 32  34 3a 79 25 3d 37 2d 28  |x%=n . 24:y%=7-(|
00002530  66 20 81 20 34 38 29 3a  6e 3d 6e 20 83 20 32 34  |f . 48):n=n . 24|
00002540  3a 66 3d 66 20 83 20 34  38 0d 0b e0 29 20 20 20  |:f=f . 48...)   |
00002550  e7 20 28 28 78 25 20 84  20 79 25 29 20 80 20 2d  |. ((x% . y%) . -|
00002560  38 29 3d 30 20 80 20 6e  3e 32 20 80 20 66 3e 32  |8)=0 . n>2 . f>2|
00002570  20 8c 0d 0b ea 38 20 20  20 20 66 3d 31 32 38 3e  | ....8    f=128>|
00002580  3e 78 25 3a 6e 3d 62 69  74 25 2b 79 25 3a e7 20  |>x%:n=bit%+y%:. |
00002590  63 25 3a 3f 6e 3d 3f 6e  20 80 20 ac 20 66 3a 8b  |c%:?n=?n . . f:.|
000025a0  20 3f 6e 3d 3f 6e 20 84  20 66 0d 0b f4 37 20 20  | ?n=?n . f...7  |
000025b0  20 20 21 71 25 3d 68 61  6e 64 25 3a 71 25 21 34  |  !q%=hand%:q%!4|
000025c0  3d 30 3a 6e 3d 78 25 2a  32 34 3a 66 3d 28 37 2d  |=0:n=x%*24:f=(7-|
000025d0  79 25 29 2a 34 38 3a f2  72 65 70 6c 6f 74 6d 61  |y%)*48:.replotma|
000025e0  70 0d 0b fe 4c 20 20 20  20 f2 75 70 64 61 74 65  |p...L    .update|
000025f0  28 68 61 6e 64 25 2c 71  25 21 32 30 38 2b 6e 2b  |(hand%,q%!208+n+|
00002600  32 2c 71 25 21 32 31 32  2b 66 2b 34 2c 32 32 2c  |2,q%!212+f+4,22,|
00002610  34 38 29 3a 71 25 21 32  30 34 3d 32 3a c8 99 20  |48):q%!204=2:.. |
00002620  67 65 74 69 63 2c 2c 71  25 2b 32 30 30 0d 0c 08  |getic,,q%+200...|
00002630  37 20 20 20 20 f2 75 70  64 61 74 65 28 68 61 6e  |7    .update(han|
00002640  64 25 2c 71 25 21 32 30  38 2b 34 2b 78 25 2a 32  |d%,q%!208+4+x%*2|
00002650  2c 71 25 21 32 31 32 2b  33 36 2d 79 25 2a 34 2c  |,q%!212+36-y%*4,|
00002660  32 2c 34 29 0d 0c 12 08  20 20 20 cd 0d 0c 1c 26  |2,4)....   ....&|
00002670  20 20 c9 20 31 3a f2 69  63 6f 6e 78 79 28 68 61  |  . 1:.iconxy(ha|
00002680  6e 64 25 2c 31 2c 6d 78  25 2c 6d 79 25 2c 6e 2c  |nd%,1,mx%,my%,n,|
00002690  66 29 0d 0c 26 30 20 20  20 78 25 3d 6e 20 81 20  |f)..&0   x%=n . |
000026a0  31 38 3a 79 25 3d 37 2d  28 66 20 81 20 36 38 29  |18:y%=7-(f . 68)|
000026b0  3a 6e 3d 6e 20 83 20 31  38 3a 66 3d 66 20 83 20  |:n=n . 18:f=f . |
000026c0  36 38 0d 0c 30 33 20 20  20 e7 20 28 78 25 20 80  |68..03   . (x% .|
000026d0  20 2d 33 32 29 3d 30 20  80 20 79 25 3e 30 20 80  | -32)=0 . y%>0 .|
000026e0  20 79 25 3c 38 20 80 20  6e 3c 31 36 20 80 20 66  | y%<8 . n<16 . f|
000026f0  3c 36 36 20 8c 0d 0c 3a  12 20 20 20 20 6e 3d 79  |<66 ...:.    n=y|
00002700  25 2a 33 32 2b 78 25 0d  0c 44 16 20 20 20 20 c8  |%*32+x%..D.    .|
00002710  8e 20 62 25 20 80 20 26  35 35 35 20 ca 0d 0c 4e  |. b% . &555 ...N|
00002720  2c 20 20 20 20 c9 20 31  3a e7 20 a6 2d 31 3a f2  |,    . 1:. .-1:.|
00002730  73 77 61 70 28 63 68 72  25 29 3a 8b 20 f2 73 74  |swap(chr%):. .st|
00002740  6f 72 65 28 63 68 72 25  29 0d 0c 58 2e 20 20 20  |ore(chr%)..X.   |
00002750  20 c9 20 34 3a e7 20 a6  2d 31 3a f2 64 65 66 61  | . 4:. .-1:.defa|
00002760  75 6c 74 28 63 68 72 25  29 3a 8b 20 f2 67 72 61  |ult(chr%):. .gra|
00002770  62 28 63 68 72 25 29 0d  0c 62 27 20 20 20 20 7f  |b(chr%)..b'    .|
00002780  3a e7 20 6e 3c 3e 63 68  72 25 20 80 20 6e 3c 3e  |:. n<>chr% . n<>|
00002790  31 32 37 3a f2 73 65 74  63 68 72 28 6e 29 0d 0c  |127:.setchr(n)..|
000027a0  6c 09 20 20 20 20 cb 0d  0c 76 12 20 20 20 20 f2  |l.    ...v.    .|
000027b0  72 65 64 72 61 77 6d 61  70 0d 0c 80 08 20 20 20  |redrawmap....   |
000027c0  cd 0d 0c 8a 2e 20 20 c9  20 33 3a f2 6f 6e 28 42  |.....  . 3:.on(B|
000027d0  25 2c 66 6c 69 70 78 29  3a e7 20 42 25 3a f2 6f  |%,flipx):. B%:.o|
000027e0  66 66 3a 8b 20 f2 72 65  64 72 61 77 6d 61 70 0d  |ff:. .redrawmap.|
000027f0  0c 94 2e 20 20 c9 20 34  3a f2 6f 6e 28 42 25 2c  |...  . 4:.on(B%,|
00002800  66 6c 69 70 79 29 3a e7  20 42 25 3a f2 6f 66 66  |flipy):. B%:.off|
00002810  3a 8b 20 f2 72 65 64 72  61 77 6d 61 70 0d 0c 9e  |:. .redrawmap...|
00002820  33 20 20 c9 20 35 2d 63  25 3a f2 6f 6e 28 42 25  |3  . 5-c%:.on(B%|
00002830  2c 72 6f 74 61 74 65 63  29 3a e7 20 42 25 3a f2  |,rotatec):. B%:.|
00002840  6f 66 66 3a 8b 20 f2 72  65 64 72 61 77 6d 61 70  |off:. .redrawmap|
00002850  0d 0c a8 33 20 20 c9 20  36 2b 63 25 3a f2 6f 6e  |...3  . 6+c%:.on|
00002860  28 42 25 2c 72 6f 74 61  74 65 61 29 3a e7 20 42  |(B%,rotatea):. B|
00002870  25 3a f2 6f 66 66 3a 8b  20 f2 72 65 64 72 61 77  |%:.off:. .redraw|
00002880  6d 61 70 0d 0c b2 2f 20  20 c9 20 37 3a f2 6f 6e  |map.../  . 7:.on|
00002890  28 42 25 2c 69 6e 76 65  72 74 29 3a e7 20 42 25  |(B%,invert):. B%|
000028a0  3a f2 6f 66 66 3a 8b 20  f2 72 65 64 72 61 77 6d  |:.off:. .redrawm|
000028b0  61 70 0d 0c bc 27 20 20  c9 20 38 3a e7 20 42 25  |ap...'  . 8:. B%|
000028c0  20 8b 20 f2 67 72 61 62  28 63 68 72 25 29 3a f2  | . .grab(chr%):.|
000028d0  72 65 64 72 61 77 6d 61  70 0d 0c c6 1d 20 20 c9  |redrawmap....  .|
000028e0  20 39 3a e7 20 42 25 20  8b 20 f2 73 74 6f 72 65  | 9:. B% . .store|
000028f0  28 63 68 72 25 29 0d 0c  d0 28 20 20 c9 20 31 30  |(chr%)...(  . 10|
00002900  3a e7 20 42 25 20 8b 20  f2 73 77 61 70 28 63 68  |:. B% . .swap(ch|
00002910  72 25 29 3a f2 72 65 64  72 61 77 6d 61 70 0d 0c  |r%):.redrawmap..|
00002920  da 2b 20 20 c9 20 31 31  3a e7 20 42 25 20 8b 20  |.+  . 11:. B% . |
00002930  f2 64 65 66 61 75 6c 74  28 63 68 72 25 29 3a f2  |.default(chr%):.|
00002940  72 65 64 72 61 77 6d 61  70 0d 0c e4 0a 20 20 c9  |redrawmap....  .|
00002950  20 31 32 0d 0c ee 0d 20  20 20 e7 20 42 25 20 8c  | 12....   . B% .|
00002960  0d 0c f8 2b 20 20 20 20  c8 99 20 73 70 6f 70 2c  |...+    .. spop,|
00002970  32 35 36 2b 33 36 2c 73  70 72 25 2c 22 70 74 72  |256+36,spr%,"ptr|
00002980  5f 77 61 69 74 69 6e 67  22 2c 32 0d 0d 02 2f 20  |_waiting",2.../ |
00002990  20 20 20 c8 99 20 22 4f  53 5f 52 65 61 64 50 61  |   .. "OS_ReadPa|
000029a0  6c 65 74 74 65 22 2c 31  2c 32 35 20 b8 20 2c 2c  |lette",1,25 . ,,|
000029b0  43 25 3a 44 25 3d ac 20  43 25 0d 0d 0c 09 20 20  |C%:D%=. C%....  |
000029c0  20 20 f5 0d 0d 16 1a 20  20 20 20 20 c8 96 3a 74  |  .....     ..:t|
000029d0  25 3d 28 74 25 2b 31 29  20 80 20 33 31 0d 0d 20  |%=(t%+1) . 31.. |
000029e0  2a 20 20 20 20 20 e7 20  74 25 3d 31 3a c8 97 20  |*     . t%=1:.. |
000029f0  fb 20 32 2c 44 25 3e 3e  38 2c 44 25 3e 3e 31 36  |. 2,D%>>8,D%>>16|
00002a00  2c 44 25 3e 3e 32 34 0d  0d 2a 2b 20 20 20 20 20  |,D%>>24..*+     |
00002a10  e7 20 74 25 3d 32 35 3a  c8 97 20 fb 20 32 2c 43  |. t%=25:.. . 2,C|
00002a20  25 3e 3e 38 2c 43 25 3e  3e 31 36 2c 43 25 3e 3e  |%>>8,C%>>16,C%>>|
00002a30  32 34 0d 0d 34 13 20 20  20 20 fd 20 a6 2d 31 32  |24..4.    . .-12|
00002a40  39 3d 32 35 35 0d 0d 3e  26 20 20 20 20 c8 99 20  |9=255..>&    .. |
00002a50  22 4f 53 5f 43 6f 6e 66  69 72 6d 22 20 b8 20 63  |"OS_Confirm" . c|
00002a60  25 3a 2a 25 50 6f 69 6e  74 65 72 0d 0d 48 29 20  |%:*%Pointer..H) |
00002a70  20 20 20 e7 20 a7 22 59  79 22 2c bd 20 63 25 29  |   . ."Yy",. c%)|
00002a80  3e 30 3a f2 6f 6e 28 b9  2c 63 6c 65 61 72 29 3a  |>0:.on(.,clear):|
00002a90  f2 6f 66 66 0d 0d 52 08  20 20 20 cc 0d 0d 5c 3c  |.off..R.   ...\<|
00002aa0  20 20 20 20 21 75 6e 64  6f 3d 21 62 69 74 25 3a  |    !undo=!bit%:|
00002ab0  75 6e 64 6f 21 34 3d 62  69 74 25 21 34 3a 75 6e  |undo!4=bit%!4:un|
00002ac0  64 6f 25 3d 30 3a d6 20  63 6c 65 61 72 3a f2 72  |do%=0:. clear:.r|
00002ad0  65 64 72 61 77 6d 61 70  0d 0d 66 08 20 20 20 cd  |edrawmap..f.   .|
00002ae0  0d 0d 70 2c 20 20 c9 20  31 33 3a e7 20 42 25 20  |..p,  . 13:. B% |
00002af0  8b 20 f2 6f 70 28 63 68  72 25 2c 22 41 4e 44 22  |. .op(chr%,"AND"|
00002b00  29 3a f2 72 65 64 72 61  77 6d 61 70 0d 0d 7a 2b  |):.redrawmap..z+|
00002b10  20 20 c9 20 31 34 3a e7  20 42 25 20 8b 20 f2 6f  |  . 14:. B% . .o|
00002b20  70 28 63 68 72 25 2c 22  4f 52 22 29 3a f2 72 65  |p(chr%,"OR"):.re|
00002b30  64 72 61 77 6d 61 70 0d  0d 84 2c 20 20 c9 20 31  |drawmap...,  . 1|
00002b40  35 3a e7 20 42 25 20 8b  20 f2 6f 70 28 63 68 72  |5:. B% . .op(chr|
00002b50  25 2c 22 45 4f 52 22 29  3a f2 72 65 64 72 61 77  |%,"EOR"):.redraw|
00002b60  6d 61 70 0d 0d 8e 10 20  20 c9 20 31 36 3a f2 75  |map....  . 16:.u|
00002b70  6e 64 6f 0d 0d 98 25 20  20 c9 20 31 37 2d 63 25  |ndo...%  . 17-c%|
00002b80  3a e7 20 42 25 20 8b 20  f2 6c 65 66 74 3a f2 72  |:. B% . .left:.r|
00002b90  65 64 72 61 77 6d 61 70  0d 0d a2 26 20 20 c9 20  |edrawmap...&  . |
00002ba0  31 38 2b 63 25 3a e7 20  42 25 20 8b 20 f2 72 69  |18+c%:. B% . .ri|
00002bb0  67 68 74 3a f2 72 65 64  72 61 77 6d 61 70 0d 0d  |ght:.redrawmap..|
00002bc0  ac 25 20 20 c9 20 31 39  2d 63 25 3a e7 20 42 25  |.%  . 19-c%:. B%|
00002bd0  20 8b 20 f2 64 6f 77 6e  3a f2 72 65 64 72 61 77  | . .down:.redraw|
00002be0  6d 61 70 0d 0d b6 23 20  20 c9 20 32 30 2b 63 25  |map...#  . 20+c%|
00002bf0  3a e7 20 42 25 20 8b 20  f2 75 70 3a f2 72 65 64  |:. B% . .up:.red|
00002c00  72 61 77 6d 61 70 0d 0d  c0 25 20 20 c9 20 32 31  |rawmap...%  . 21|
00002c10  2c 32 32 3a f2 73 65 74  69 63 6f 6e 28 68 61 6e  |,22:.seticon(han|
00002c20  64 25 2c 69 63 6f 6e 25  2c b9 29 0d 0d ca 11 20  |d%,icon%,.).... |
00002c30  20 20 e3 20 6e 3d 38 20  b8 20 32 30 0d 0d d4 33  |  . n=8 . 20...3|
00002c40  20 20 20 20 e7 20 6e 3c  3e 31 32 20 80 20 6e 3c  |    . n<>12 . n<|
00002c50  3e 31 36 3a f2 67 72 65  79 69 63 6f 6e 28 68 61  |>16:.greyicon(ha|
00002c60  6e 64 25 2c 6e 2c 69 63  6f 6e 25 3d 32 31 29 0d  |nd%,n,icon%=21).|
00002c70  0d de 08 20 20 20 ed 0d  0d e8 07 20 20 cb 0d 0d  |...   .....  ...|
00002c80  f2 06 20 cb 0d 0d fc 05  cc 0d 0e 06 0f 20 e7 20  |.. .......... . |
00002c90  62 25 20 80 20 32 20 8c  0d 0e 10 10 20 20 c8 8e  |b% . 2 .....  ..|
00002ca0  20 68 61 6e 64 25 20 ca  0d 0e 1a 35 20 20 c9 20  | hand% ....5  . |
00002cb0  2d 32 3a 6d 65 6e 75 49  44 25 3d 30 3a c8 99 20  |-2:menuID%=0:.. |
00002cc0  63 72 6d 65 6e 75 2c 2c  71 75 69 74 6d 65 6e 75  |crmenu,,quitmenu|
00002cd0  25 2c 6d 78 25 2d 71 78  25 2c 71 79 25 0d 0e 24  |%,mx%-qx%,qy%..$|
00002ce0  28 20 20 c9 20 69 6e 66  6f 68 61 6e 64 25 2c 73  |(  . infohand%,s|
00002cf0  61 76 65 68 61 6e 64 25  2c 75 6e 73 61 76 65 64  |avehand%,unsaved|
00002d00  68 61 6e 64 25 0d 0e 2e  1d 20 20 7f 3a 63 75 72  |hand%....  .:cur|
00002d10  72 65 6e 74 25 3d a4 66  69 6e 64 28 68 61 6e 64  |rent%=.find(hand|
00002d20  25 29 0d 0e 38 33 20 20  20 6d 65 6e 75 49 44 25  |%)..83   menuID%|
00002d30  3d 31 3a 24 73 61 76 65  74 65 78 74 3d 24 28 a4  |=1:$savetext=$(.|
00002d40  61 64 64 72 28 22 6e 22  2c 63 75 72 72 65 6e 74  |addr("n",current|
00002d50  25 29 2b 34 29 0d 0e 42  3f 20 20 20 c8 99 20 63  |%)+4)..B?   .. c|
00002d60  72 6d 65 6e 75 2c 2c 6d  61 69 6e 6d 65 6e 75 25  |rmenu,,mainmenu%|
00002d70  2c 6d 78 25 2d 36 34 2c  6d 79 25 3a 6d 65 6e 75  |,mx%-64,my%:menu|
00002d80  78 25 3d 6d 78 25 2d 36  34 3a 6d 65 6e 75 79 25  |x%=mx%-64:menuy%|
00002d90  3d 6d 79 25 0d 0e 4c 07  20 20 cb 0d 0e 56 06 20  |=my%..L.  ...V. |
00002da0  cd 0d 0e 60 05 cd 0d 0e  6a 05 e1 0d 0e 74 05 3a  |...`....j....t.:|
00002db0  0d 0e 7e 0e dd 20 f2 6f  6e 28 66 2c 6e 29 0d 0e  |..~.. .on(f,n)..|
00002dc0  88 11 e7 20 66 3a c8 99  20 77 61 69 74 6f 6e 0d  |... f:.. waiton.|
00002dd0  0e 92 07 d6 20 6e 0d 0e  9c 05 e1 0d 0e a6 05 3a  |.... n.........:|
00002de0  0d 0e b0 0a dd 20 f2 6f  66 66 0d 0e ba 37 f2 72  |..... .off...7.r|
00002df0  65 70 6c 6f 74 63 68 72  28 33 32 2c 32 35 35 29  |eplotchr(32,255)|
00002e00  3a f2 72 65 64 72 61 77  69 63 6f 6e 28 68 61 6e  |:.redrawicon(han|
00002e10  64 6c 65 25 28 63 75 72  72 65 6e 74 25 29 2c 31  |dle%(current%),1|
00002e20  29 0d 0e c4 23 f2 63 68  61 6e 67 65 64 28 63 75  |)...#.changed(cu|
00002e30  72 72 65 6e 74 25 2c b9  29 3a c8 99 20 77 61 69  |rrent%,.):.. wai|
00002e40  74 6f 66 66 0d 0e ce 05  e1 0d 0e d8 05 3a 0d 0e  |toff.........:..|
00002e50  e2 1a dd 20 f2 73 65 74  69 63 6f 6e 28 21 71 25  |... .seticon(!q%|
00002e60  2c 71 25 21 34 2c 66 29  0d 0e ec 28 c8 99 20 67  |,q%!4,f)...(.. g|
00002e70  65 74 69 63 2c 2c 71 25  3a e7 20 66 3a 71 25 21  |etic,,q%:. f:q%!|
00002e80  38 3d 31 3c 3c 32 31 3a  8b 20 71 25 21 38 3d 30  |8=1<<21:. q%!8=0|
00002e90  0d 0e f6 1c 71 25 21 31  32 3d 31 3c 3c 32 31 3a  |....q%!12=1<<21:|
00002ea0  c8 99 20 73 65 74 69 63  2c 2c 71 25 0d 0f 00 05  |.. setic,,q%....|
00002eb0  e1 0d 0f 0a 05 3a 0d 0f  14 1b dd 20 f2 67 72 65  |.....:..... .gre|
00002ec0  79 69 63 6f 6e 28 21 71  25 2c 71 25 21 34 2c 66  |yicon(!q%,q%!4,f|
00002ed0  29 0d 0f 1e 10 c8 99 20  67 65 74 69 63 2c 2c 71  |)...... getic,,q|
00002ee0  25 0d 0f 28 11 e7 20 71  25 3f 31 36 20 80 20 31  |%..(.. q%?16 . 1|
00002ef0  20 8c 0d 0f 32 44 20 e7  20 66 3a 71 25 21 38 3d  | ...2D . f:q%!8=|
00002f00  26 37 30 30 39 30 30 30  3a 71 25 21 31 32 3d 26  |&7009000:q%!12=&|
00002f10  46 30 30 46 30 30 30 3a  8b 20 71 25 21 38 3d 26  |F00F000:. q%!8=&|
00002f20  32 30 30 30 30 30 30 3a  71 25 21 31 32 3d 26 46  |2000000:q%!12=&F|
00002f30  30 30 46 30 30 30 0d 0f  3c 29 cc 20 71 25 21 31  |00F000..<). q%!1|
00002f40  32 3d 31 3c 3c 32 32 3a  e7 20 66 3a 71 25 21 38  |2=1<<22:. f:q%!8|
00002f50  3d 30 3a 8b 20 71 25 21  38 3d 31 3c 3c 32 32 0d  |=0:. q%!8=1<<22.|
00002f60  0f 46 05 cd 0d 0f 50 10  c8 99 20 73 65 74 69 63  |.F....P... setic|
00002f70  2c 2c 71 25 0d 0f 5a 05  e1 0d 0f 64 05 3a 0d 0f  |,,q%..Z....d.:..|
00002f80  6e 1b dd 20 f2 72 65 64  72 61 77 69 63 6f 6e 28  |n.. .redrawicon(|
00002f90  21 71 25 2c 71 25 21 34  29 0d 0f 78 1d ea 20 71  |!q%,q%!4)..x.. q|
00002fa0  25 21 38 2c 71 25 21 31  32 3a c8 99 20 73 65 74  |%!8,q%!12:.. set|
00002fb0  69 63 2c 2c 71 25 0d 0f  82 05 e1 0d 0f 8c 05 3a  |ic,,q%.........:|
00002fc0  0d 0f 96 2c dd 20 f2 69  63 6f 6e 78 79 28 68 61  |...,. .iconxy(ha|
00002fd0  6e 64 25 2c 69 63 6f 6e  25 2c 6d 78 25 2c 6d 79  |nd%,icon%,mx%,my|
00002fe0  25 2c f8 20 78 25 2c f8  20 79 25 29 0d 0f a0 4a  |%,. x%,. y%)...J|
00002ff0  71 25 21 31 30 30 3d 68  61 6e 64 25 3a c8 99 20  |q%!100=hand%:.. |
00003000  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
00003010  6e 66 6f 22 2c 2c 71 25  2b 31 30 30 3a 71 25 21  |nfo",,q%+100:q%!|
00003020  32 30 30 3d 68 61 6e 64  25 3a 71 25 21 32 30 34  |200=hand%:q%!204|
00003030  3d 69 63 6f 6e 25 0d 0f  aa 4c c8 99 20 67 65 74  |=icon%...L.. get|
00003040  69 63 2c 2c 71 25 2b 32  30 30 3a 78 25 3d 6d 78  |ic,,q%+200:x%=mx|
00003050  25 2d 71 25 21 31 30 34  2b 71 25 21 31 32 30 2d  |%-q%!104+q%!120-|
00003060  71 25 21 32 30 38 3a 79  25 3d 6d 79 25 2d 71 25  |q%!208:y%=my%-q%|
00003070  21 31 31 36 2b 71 25 21  31 32 34 2d 71 25 21 32  |!116+q%!124-q%!2|
00003080  31 32 0d 0f b4 05 e1 0d  0f be 05 3a 0d 0f c8 14  |12.........:....|
00003090  dd 20 f2 6d 61 6b 65 77  69 6e 64 6d 65 6e 75 73  |. .makewindmenus|
000030a0  0d 0f d2 4b de 20 6e 61  6d 65 73 25 20 26 31 30  |...K. names% &10|
000030b0  30 30 2c 6d 65 6e 75 73  25 20 26 38 30 30 3a 6e  |00,menus% &800:n|
000030c0  61 6d 65 25 3d 6e 61 6d  65 73 25 3a 6c 61 73 74  |ame%=names%:last|
000030d0  25 3d 6e 61 6d 65 73 25  2b 26 31 30 30 30 3a 6d  |%=names%+&1000:m|
000030e0  65 6e 75 25 3d 6d 65 6e  75 73 25 0d 0f dc 08 f7  |enu%=menus%.....|
000030f0  20 2b 30 0d 0f e6 07 ea  20 85 0d 0f f0 2f ee 20  | +0..... ..../. |
00003100  85 20 ea 20 c8 99 20 22  58 57 69 6d 70 5f 43 6c  |. . .. "XWimp_Cl|
00003110  6f 73 65 54 65 6d 70 6c  61 74 65 22 3a f7 20 85  |oseTemplate":. .|
00003120  3a 85 20 a2 20 9f 2c f6  24 0d 0f fa 40 41 25 3d  |:. . .,.$...@A%=|
00003130  b9 3a 2a 52 4d 45 6e 73  75 72 65 20 55 74 69 6c  |.:*RMEnsure Util|
00003140  69 74 79 4d 6f 64 75 6c  65 20 33 2e 31 32 20 4d  |ityModule 3.12 M|
00003150  65 6d 6f 72 79 41 20 38  36 30 34 20 30 20 7b 20  |emoryA 8604 0 { |
00003160  3e 20 4e 75 6c 6c 3a 20  7d 0d 10 04 40 e7 20 41  |> Null: }...@. A|
00003170  25 20 8b 20 41 25 3d b9  3a 2a 52 4d 45 6e 73 75  |% . A%=.:*RMEnsu|
00003180  72 65 20 52 4f 4d 41 70  70 73 33 44 20 30 20 4d  |re ROMApps3D 0 M|
00003190  65 6d 6f 72 79 41 20 38  36 30 34 20 30 20 7b 20  |emoryA 8604 0 { |
000031a0  3e 20 4e 75 6c 6c 3a 20  7d 0d 10 0e 1d 69 73 33  |> Null: }....is3|
000031b0  64 25 3d 41 25 3a e7 20  41 25 3a 41 25 3d 33 3a  |d%=A%:. A%:A%=3:|
000031c0  8b 20 41 25 3d 32 0d 10  18 37 c8 99 20 22 57 69  |. A%=2...7.. "Wi|
000031d0  6d 70 5f 4f 70 65 6e 54  65 6d 70 6c 61 74 65 22  |mp_OpenTemplate"|
000031e0  2c 2c 22 3c 4f 62 65 79  24 44 69 72 3e 2e 54 65  |,,"<Obey$Dir>.Te|
000031f0  6d 70 6c 61 74 65 73 22  2b c3 20 41 25 0d 10 22  |mplates"+. A%.."|
00003200  4b 41 25 3d a4 63 72 65  61 74 65 77 69 6e 64 6f  |KA%=.createwindo|
00003210  77 28 22 45 64 69 74 22  29 3a de 20 6d 61 69 6e  |w("Edit"):. main|
00003220  68 61 6e 64 25 20 38 38  2b 71 25 21 38 34 2a 33  |hand% 88+q%!84*3|
00003230  32 2c 74 69 74 6c 65 25  28 31 35 29 2c 68 61 6e  |2,title%(15),han|
00003240  64 6c 65 25 28 31 36 29  0d 10 2c 31 e3 20 6e 25  |dle%(16)..,1. n%|
00003250  3d 30 20 b8 20 38 34 2b  71 25 21 38 34 2a 33 32  |=0 . 84+q%!84*32|
00003260  20 88 20 34 3a 6d 61 69  6e 68 61 6e 64 25 21 6e  | . 4:mainhand%!n|
00003270  25 3d 71 25 21 6e 25 3a  ed 0d 10 36 45 73 61 76  |%=q%!n%:...6Esav|
00003280  65 68 61 6e 64 25 3d a4  63 72 65 61 74 65 77 69  |ehand%=.createwi|
00003290  6e 64 6f 77 28 22 53 61  76 65 22 29 3a 73 61 76  |ndow("Save"):sav|
000032a0  65 78 25 3d 71 25 21 38  2d 21 71 25 3a 73 61 76  |ex%=q%!8-!q%:sav|
000032b0  65 79 25 3d 71 25 21 31  32 2d 71 25 21 34 0d 10  |ey%=q%!12-q%!4..|
000032c0  40 49 75 6e 73 61 76 65  64 68 61 6e 64 25 3d a4  |@Iunsavedhand%=.|
000032d0  63 72 65 61 74 65 77 69  6e 64 6f 77 28 22 55 6e  |createwindow("Un|
000032e0  73 61 76 65 64 22 29 3a  69 6e 66 6f 68 61 6e 64  |saved"):infohand|
000032f0  25 3d a4 63 72 65 61 74  65 77 69 6e 64 6f 77 28  |%=.createwindow(|
00003300  22 49 6e 66 6f 22 29 0d  10 4a 07 f7 20 85 0d 10  |"Info")..J.. ...|
00003310  54 40 c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |T@.. "Wimp_Close|
00003320  54 65 6d 70 6c 61 74 65  22 3a e3 20 6e 25 3d 30  |Template":. n%=0|
00003330  20 b8 20 31 35 3a de 20  41 25 20 32 35 35 3a 74  | . 15:. A% 255:t|
00003340  69 74 6c 65 25 28 6e 25  29 3d 41 25 3a ed 0d 10  |itle%(n%)=A%:...|
00003350  5e 42 74 65 78 74 3d a4  74 65 78 74 61 64 64 72  |^Btext=.textaddr|
00003360  28 75 6e 73 61 76 65 64  68 61 6e 64 25 2c 30 29  |(unsavedhand%,0)|
00003370  3a 73 61 76 65 74 65 78  74 3d a4 74 65 78 74 61  |:savetext=.texta|
00003380  64 64 72 28 73 61 76 65  68 61 6e 64 25 2c 30 29  |ddr(savehand%,0)|
00003390  0d 10 68 48 73 61 76 65  63 68 72 73 3d a4 74 65  |..hHsavechrs=.te|
000033a0  78 74 61 64 64 72 28 73  61 76 65 68 61 6e 64 25  |xtaddr(savehand%|
000033b0  2c 37 29 3a 78 25 3d 30  3a 79 25 3d 30 3a 6d 61  |,7):x%=0:y%=0:ma|
000033c0  69 6e 6d 65 6e 75 25 3d  a4 6d 61 6b 65 6d 65 6e  |inmenu%=.makemen|
000033d0  75 28 78 25 2c 79 25 29  0d 10 72 2d 71 78 25 3d  |u(x%,y%)..r-qx%=|
000033e0  30 3a 71 79 25 3d 39 36  3a 71 75 69 74 6d 65 6e  |0:qy%=96:quitmen|
000033f0  75 25 3d a4 6d 61 6b 65  6d 65 6e 75 28 71 78 25  |u%=.makemenu(qx%|
00003400  2c 71 79 25 29 0d 10 7c  05 e1 0d 10 86 05 3a 0d  |,qy%)..|......:.|
00003410  10 90 13 dd 20 f2 70 72  65 70 61 72 65 6d 65 6e  |.... .preparemen|
00003420  75 73 0d 10 9a 33 e7 20  63 75 72 72 65 6e 74 25  |us...3. current%|
00003430  3e b9 3a 24 73 61 76 65  74 65 78 74 3d 24 28 a4  |>.:$savetext=$(.|
00003440  61 64 64 72 28 22 6e 22  2c 63 75 72 72 65 6e 74  |addr("n",current|
00003450  25 29 2b 34 29 0d 10 a4  05 e1 0d 10 ae 05 3a 0d  |%)+4).........:.|
00003460  10 b8 17 dd 20 a4 63 72  65 61 74 65 77 69 6e 64  |.... .createwind|
00003470  6f 77 28 61 24 29 0d 10  c2 40 c8 99 20 22 57 69  |ow(a$)...@.. "Wi|
00003480  6d 70 5f 4c 6f 61 64 54  65 6d 70 6c 61 74 65 22  |mp_LoadTemplate"|
00003490  2c 2c 71 25 2c 6e 61 6d  65 25 2c 6c 61 73 74 25  |,,q%,name%,last%|
000034a0  2c 2d 31 2c 61 24 20 b8  20 2c 2c 6e 61 6d 65 25  |,-1,a$ . ,,name%|
000034b0  2c 2c 2c 2c 41 25 0d 10  cc 24 e7 20 41 25 20 8b  |,,,,A%...$. A% .|
000034c0  20 85 20 31 2c a4 6c 6f  6f 6b 75 70 31 28 22 4e  | . 1,.lookup1("N|
000034d0  6f 57 69 6e 64 22 2c 61  24 29 0d 10 d6 16 69 63  |oWind",a$)....ic|
000034e0  6f 6e 25 3d 30 3a 71 25  21 36 34 3d 73 70 72 25  |on%=0:q%!64=spr%|
000034f0  0d 10 e0 11 e7 20 61 24  3d 22 45 64 69 74 22 20  |..... a$="Edit" |
00003500  8c 0d 10 ea 3f 20 71 25  21 31 34 34 3d 73 70 72  |....? q%!144=spr|
00003510  25 3a e7 20 69 73 33 64  25 3a e3 20 6e 25 3d 71  |%:. is3d%:. n%=q|
00003520  25 2b 32 30 38 20 b8 20  71 25 2b 36 32 34 20 88  |%+208 . q%+624 .|
00003530  20 33 32 3a 21 6e 25 3d  71 25 21 32 30 38 3a ed  | 32:!n%=q%!208:.|
00003540  0d 10 f4 3d cc 20 e7 20  61 24 3d 22 53 61 76 65  |...=. . a$="Save|
00003550  22 3a e3 20 6e 25 3d 71  25 2b 33 32 38 20 b8 20  |":. n%=q%+328 . |
00003560  71 25 2b 34 35 36 20 88  20 33 32 3a 21 6e 25 3d  |q%+456 . 32:!n%=|
00003570  21 6e 25 20 84 20 31 3c  3c 32 32 3a ed 0d 10 fe  |!n% . 1<<22:....|
00003580  27 20 c8 99 20 22 57 69  6d 70 5f 43 72 65 61 74  |' .. "Wimp_Creat|
00003590  65 57 69 6e 64 6f 77 22  2c 2c 71 25 20 b8 20 69  |eWindow",,q% . i|
000035a0  63 6f 6e 25 0d 11 08 05  cd 0d 11 12 0a 3d 69 63  |con%.........=ic|
000035b0  6f 6e 25 0d 11 1c 05 3a  0d 11 26 17 dd 20 f2 74  |on%....:..&.. .t|
000035c0  65 78 74 28 69 74 65 6d  25 2c 24 62 75 66 29 0d  |ext(item%,$buf).|
000035d0  11 30 41 21 28 69 74 65  6d 25 20 80 20 2d 34 29  |.0A!(item% . -4)|
000035e0  3d 6e 61 6d 65 25 3a e7  20 69 74 65 6d 25 20 80  |=name%:. item% .|
000035f0  20 31 20 8b 20 69 74 65  6d 25 21 34 3d 2d 31 3a  | 1 . item%!4=-1:|
00003600  69 74 65 6d 25 21 38 3d  a9 20 24 62 75 66 2b 31  |item%!8=. $buf+1|
00003610  0d 11 3a 1f 24 6e 61 6d  65 25 3d 24 62 75 66 3a  |..:.$name%=$buf:|
00003620  6e 61 6d 65 25 2b 3d a9  20 24 62 75 66 2b 31 0d  |name%+=. $buf+1.|
00003630  11 44 05 e1 0d 11 4e 05  3a 0d 11 58 1a dd 20 a4  |.D....N.:..X.. .|
00003640  6d 61 6b 65 6d 65 6e 75  28 f8 20 78 25 2c f8 20  |makemenu(. x%,. |
00003650  79 25 29 0d 11 62 34 77  69 64 74 68 25 3d 30 3a  |y%)..b4width%=0:|
00003660  f3 20 24 62 75 66 3a e7  20 3f 62 75 66 3d 39 36  |. $buf:. ?buf=96|
00003670  3a 24 62 75 66 3d a4 6c  6f 6f 6b 75 70 28 24 28  |:$buf=.lookup($(|
00003680  62 75 66 2b 31 29 29 0d  11 6c 42 24 6d 65 6e 75  |buf+1))..lB$menu|
00003690  25 3d 24 62 75 66 3a 6d  65 6e 75 25 21 31 32 3d  |%=$buf:menu%!12=|
000036a0  26 37 30 32 30 37 3a 6d  65 6e 75 25 21 32 30 3d  |&70207:menu%!20=|
000036b0  34 34 3a 6d 65 6e 75 25  21 32 34 3d 30 3a 6e 3d  |44:menu%!24=0:n=|
000036c0  2d 31 3a f3 20 24 62 75  66 0d 11 76 30 c8 95 20  |-1:. $buf..v0.. |
000036d0  24 62 75 66 3e 22 22 3a  6e 2b 3d 31 3a f2 69 74  |$buf>"":n+=1:.it|
000036e0  65 6d 28 6d 65 6e 75 25  2c 6e 2c 24 62 75 66 29  |em(menu%,n,$buf)|
000036f0  3a f3 20 24 62 75 66 3a  ce 0d 11 80 2e e7 20 6e  |:. $buf:...... n|
00003700  3e 2d 31 3a 6d 65 6e 75  25 21 31 36 3d 77 69 64  |>-1:menu%!16=wid|
00003710  74 68 25 2a 31 36 2b 38  3a f2 6c 61 73 74 28 6d  |th%*16+8:.last(m|
00003720  65 6e 75 25 2c 6e 29 0d  11 8a 21 78 25 3d 77 69  |enu%,n)...!x%=wi|
00003730  64 74 68 25 2a 38 2b 32  34 3a 6d 65 6e 75 25 2b  |dth%*8+24:menu%+|
00003740  3d 35 32 2b 32 34 2a 6e  0d 11 94 12 3d 6d 65 6e  |=52+24*n....=men|
00003750  75 25 2d 35 32 2d 32 34  2a 6e 0d 11 9e 05 3a 0d  |u%-52-24*n....:.|
00003760  11 a8 1d dd 20 f2 69 74  65 6d 28 6d 65 6e 75 25  |.... .item(menu%|
00003770  2c 69 74 65 6d 25 2c 24  62 75 66 29 0d 11 b2 0c  |,item%,$buf)....|
00003780  ea 20 77 72 69 74 65 25  0d 11 bc 0f e7 20 3f 62  |. write%..... ?b|
00003790  75 66 3d 39 36 20 8c 0d  11 c6 24 20 66 3d a7 24  |uf=96 ....$ f=.$|
000037a0  62 75 66 2c 22 7c 22 29  3a e7 20 66 20 8b 20 66  |buf,"|"):. f . f|
000037b0  3d a7 24 62 75 66 2c 22  3f 22 29 0d 11 d0 10 20  |=.$buf,"?").... |
000037c0  67 3d 62 75 66 3f 28 66  2d 31 29 0d 11 da 0a 20  |g=buf?(f-1).... |
000037d0  e7 20 66 20 8c 0d 11 e4  2f 20 20 24 62 75 66 3d  |. f ..../  $buf=|
000037e0  a4 6c 6f 6f 6b 75 70 28  c1 24 62 75 66 2c 32 2c  |.lookup(.$buf,2,|
000037f0  66 2d 32 29 29 2b 22 7c  22 2b c1 24 62 75 66 2c  |f-2))+"|"+.$buf,|
00003800  66 2b 31 29 0d 11 ee 1d  20 cc 20 24 62 75 66 3d  |f+1).... . $buf=|
00003810  a4 6c 6f 6f 6b 75 70 28  24 28 62 75 66 2b 31 29  |.lookup($(buf+1)|
00003820  29 0d 11 f8 06 20 cd 0d  12 02 05 cd 0d 12 0c 42  |).... .........B|
00003830  6d 65 6e 75 25 2b 3d 32  38 2b 69 74 65 6d 25 2a  |menu%+=28+item%*|
00003840  32 34 3a 21 6d 65 6e 75  25 3d 38 20 80 20 67 3d  |24:!menu%=8 . g=|
00003850  36 33 3a 6d 65 6e 75 25  21 34 3d 2d 31 3a 6d 65  |63:menu%!4=-1:me|
00003860  6e 75 25 21 38 3d 26 37  30 30 30 30 32 31 0d 12  |nu%!8=&7000021..|
00003870  16 2d e7 20 c2 24 62 75  66 29 3d 22 2d 22 3a 21  |.-. .$buf)="-":!|
00003880  6d 65 6e 75 25 2b 3d 32  3a 24 62 75 66 3d c0 24  |menu%+=2:$buf=.$|
00003890  62 75 66 29 3a 79 25 2b  3d 32 38 0d 12 20 14 69  |buf):y%+=28.. .i|
000038a0  74 65 6d 25 3d a7 24 62  75 66 2c 22 7c 22 29 0d  |tem%=.$buf,"|").|
000038b0  12 2a 38 e7 20 69 74 65  6d 25 3a 6d 65 6e 75 25  |.*8. item%:menu%|
000038c0  21 34 3d a0 20 c1 24 62  75 66 2c 69 74 65 6d 25  |!4=. .$buf,item%|
000038d0  2b 31 29 3a 24 62 75 66  3d c0 24 62 75 66 2c 69  |+1):$buf=.$buf,i|
000038e0  74 65 6d 25 2d 31 29 0d  12 34 1c e7 20 a9 20 24  |tem%-1)..4.. . $|
000038f0  62 75 66 3c 31 32 20 80  20 ac 20 77 72 69 74 65  |buf<12 . . write|
00003900  25 20 8c 0d 12 3e 15 20  24 28 6d 65 6e 75 25 2b  |% ...>. $(menu%+|
00003910  31 32 29 3d 24 62 75 66  0d 12 48 27 cc 20 6d 65  |12)=$buf..H'. me|
00003920  6e 75 25 21 38 2b 3d 32  35 36 3a f2 74 65 78 74  |nu%!8+=256:.text|
00003930  28 6d 65 6e 75 25 2b 31  32 2c 24 62 75 66 29 0d  |(menu%+12,$buf).|
00003940  12 52 05 cd 0d 12 5c 28  79 25 2b 3d 34 34 3a e7  |.R....\(y%+=44:.|
00003950  20 77 69 64 74 68 25 3c  a9 20 24 62 75 66 3a 77  | width%<. $buf:w|
00003960  69 64 74 68 25 3d a9 20  24 62 75 66 0d 12 66 05  |idth%=. $buf..f.|
00003970  e1 0d 12 70 05 3a 0d 12  7a 18 dd 20 f2 6c 61 73  |...p.:..z.. .las|
00003980  74 28 6d 65 6e 75 25 2c  69 74 65 6d 25 29 0d 12  |t(menu%,item%)..|
00003990  84 2a 6d 65 6e 75 25 2b  3d 32 38 2b 69 74 65 6d  |.*menu%+=28+item|
000039a0  25 2a 32 34 3a 21 6d 65  6e 75 25 3d 21 6d 65 6e  |%*24:!menu%=!men|
000039b0  75 25 20 84 20 31 32 38  0d 12 8e 05 e1 0d 12 98  |u% . 128........|
000039c0  05 3a 0d 12 a2 0e dd 20  f2 6e 65 77 66 69 6c 65  |.:..... .newfile|
000039d0  0d 12 ac 0d c8 99 20 77  61 69 74 6f 6e 0d 12 b6  |...... waiton...|
000039e0  11 c8 8e 20 a4 6e 65 77  66 69 6c 65 20 ca 0d 12  |... .newfile ...|
000039f0  c0 3b c9 20 30 3a f2 72  65 70 6c 6f 74 63 68 72  |.;. 0:.replotchr|
00003a00  28 33 32 2c 32 35 35 29  3a f2 67 72 61 62 28 36  |(32,255):.grab(6|
00003a10  35 29 3a f2 72 65 70 6c  6f 74 6d 61 70 3a f2 73  |5):.replotmap:.s|
00003a20  68 6f 77 75 70 28 36 35  29 0d 12 ca 33 20 21 71  |howup(65)...3 !q|
00003a30  25 3d 68 61 6e 64 6c 65  25 28 63 75 72 72 65 6e  |%=handle%(curren|
00003a40  74 25 29 3a c8 99 20 67  65 74 77 2c 2c 71 25 3a  |t%):.. getw,,q%:|
00003a50  c8 99 20 6f 70 65 6e 77  2c 2c 71 25 0d 12 d4 31  |.. openw,,q%...1|
00003a60  20 c8 99 20 22 57 69 6d  70 5f 53 65 74 43 61 72  | .. "Wimp_SetCar|
00003a70  65 74 50 6f 73 69 74 69  6f 6e 22 2c 21 71 25 2c  |etPosition",!q%,|
00003a80  2d 31 3a c8 99 20 77 61  69 74 6f 66 66 0d 12 de  |-1:.. waitoff...|
00003a90  32 c9 20 31 3a c8 99 20  77 61 69 74 6f 66 66 3a  |2. 1:.. waitoff:|
00003aa0  f2 74 65 6c 6c 74 68 65  6d 6f 66 66 28 a4 6c 6f  |.tellthemoff(.lo|
00003ab0  6f 6b 75 70 28 22 4d 65  6d 6f 72 79 22 29 29 0d  |okup("Memory")).|
00003ac0  12 e8 34 c9 20 32 3a c8  99 20 77 61 69 74 6f 66  |..4. 2:.. waitof|
00003ad0  66 3a f2 74 65 6c 6c 74  68 65 6d 6f 66 66 28 a4  |f:.tellthemoff(.|
00003ae0  6c 6f 6f 6b 75 70 28 22  43 61 70 61 63 69 74 79  |lookup("Capacity|
00003af0  22 29 29 0d 12 f2 05 cb  0d 12 fc 05 e1 0d 13 06  |")).............|
00003b00  05 3a 0d 13 10 0d dd 20  a4 6d 65 6d 6f 72 79 0d  |.:..... .memory.|
00003b10  13 1a 23 c8 99 20 22 57  69 6d 70 5f 53 6c 6f 74  |..#.. "Wimp_Slot|
00003b20  53 69 7a 65 22 2c 2d 31  2c 2d 31 20 b8 20 2c 2c  |Size",-1,-1 . ,,|
00003b30  41 25 0d 13 24 1f 3d 41  25 3e 3d 73 70 72 25 2b  |A%..$.=A%>=spr%+|
00003b40  21 73 70 72 25 2b 31 32  39 38 30 2d 26 38 30 30  |!spr%+12980-&800|
00003b50  30 0d 13 2e 05 3a 0d 13  38 0e dd 20 a4 6e 65 77  |0....:..8.. .new|
00003b60  66 69 6c 65 0d 13 42 12  e7 20 66 69 6c 65 73 25  |file..B.. files%|
00003b70  3d 31 36 3a 3d 32 0d 13  4c 07 ea 20 85 0d 13 56  |=16:=2..L.. ...V|
00003b80  1a ee 20 85 20 ea 20 f7  20 85 3a 66 69 6c 65 73  |.. . . . .:files|
00003b90  25 2d 3d 31 3a 3d 31 0d  13 60 41 41 25 3d 73 70  |%-=1:=1..`AA%=sp|
00003ba0  72 25 2b 21 73 70 72 25  2d 26 38 30 30 30 3a 42  |r%+!spr%-&8000:B|
00003bb0  25 3d 41 25 2b 31 32 39  38 30 3a c8 99 20 22 57  |%=A%+12980:.. "W|
00003bc0  69 6d 70 5f 53 6c 6f 74  53 69 7a 65 22 2c 42 25  |imp_SlotSize",B%|
00003bd0  2c 2d 31 20 b8 20 43 25  0d 13 6a 2b e7 20 41 25  |,-1 . C%..j+. A%|
00003be0  3e 42 25 3a c8 99 20 22  57 69 6d 70 5f 53 6c 6f  |>B%:.. "Wimp_Slo|
00003bf0  74 53 69 7a 65 22 2c 41  25 2c 2d 31 3a f7 20 85  |tSize",A%,-1:. .|
00003c00  3a 3d 31 0d 13 74 2a 63  75 72 72 65 6e 74 25 3d  |:=1..t*current%=|
00003c10  66 69 6c 65 73 25 3a 66  69 6c 65 73 25 2b 3d 31  |files%:files%+=1|
00003c20  3a 21 73 70 72 25 2b 3d  31 33 30 35 36 0d 13 7e  |:!spr%+=13056..~|
00003c30  2e c8 99 20 73 70 6f 70  2c 32 35 36 2b 32 37 2c  |... spop,256+27,|
00003c40  73 70 72 25 2c 22 63 68  72 65 64 22 2c 22 62 22  |spr%,"chred","b"|
00003c50  2b c3 20 63 75 72 72 65  6e 74 25 0d 13 88 32 c8  |+. current%...2.|
00003c60  99 20 73 70 6f 70 2c 32  35 36 2b 32 37 2c 73 70  |. spop,256+27,sp|
00003c70  72 25 2c 22 63 68 72 65  64 5f 63 68 72 22 2c 22  |r%,"chred_chr","|
00003c80  63 22 2b c3 20 63 75 72  72 65 6e 74 25 0d 13 92  |c"+. current%...|
00003c90  32 c8 99 20 73 70 6f 70  2c 32 35 36 2b 32 37 2c  |2.. spop,256+27,|
00003ca0  73 70 72 25 2c 22 63 68  72 65 64 5f 6d 61 70 22  |spr%,"chred_map"|
00003cb0  2c 22 6d 22 2b c3 20 63  75 72 72 65 6e 74 25 0d  |,"m"+. current%.|
00003cc0  13 9c 30 c8 99 20 73 70  6f 70 2c 32 35 36 2b 31  |..0.. spop,256+1|
00003cd0  35 2c 73 70 72 25 2c 22  6e 22 2b c3 20 63 75 72  |5,spr%,"n"+. cur|
00003ce0  72 65 6e 74 25 2c 2c 32  36 34 2c 31 2c 31 35 0d  |rent%,,264,1,15.|
00003cf0  13 a6 31 c8 99 20 73 70  6f 70 2c 32 35 36 2b 31  |..1.. spop,256+1|
00003d00  35 2c 73 70 72 25 2c 22  66 22 2b c3 20 63 75 72  |5,spr%,"f"+. cur|
00003d10  72 65 6e 74 25 2c 2c 32  32 34 30 2c 31 2c 31 35  |rent%,,2240,1,15|
00003d20  0d 13 b0 38 21 73 70 72  25 3d 73 70 72 25 21 31  |...8!spr%=spr%!1|
00003d30  32 3a c8 99 20 22 57 69  6d 70 5f 53 6c 6f 74 53  |2:.. "Wimp_SlotS|
00003d40  69 7a 65 22 2c 73 70 72  25 2b 21 73 70 72 25 2d  |ize",spr%+!spr%-|
00003d50  26 38 30 30 30 2c 2d 31  0d 13 ba 36 41 25 3d a4  |&8000,-1...6A%=.|
00003d60  61 64 64 72 28 22 6e 22  2c 63 75 72 72 65 6e 74  |addr("n",current|
00003d70  25 29 3a 42 25 3d a4 61  64 64 72 28 22 66 22 2c  |%):B%=.addr("f",|
00003d80  63 75 72 72 65 6e 74 25  29 3a 6e 3d 33 32 0d 13  |current%):n=32..|
00003d90  c4 44 e3 20 6e 25 3d 42  25 20 b8 20 42 25 2b 32  |.D. n%=B% . B%+2|
00003da0  32 33 39 20 88 20 31 30  3a 3f 6e 25 3d 32 33 3a  |239 . 10:?n%=23:|
00003db0  6e 25 3f 31 3d 6e 3a c8  99 20 22 4f 53 5f 57 6f  |n%?1=n:.. "OS_Wo|
00003dc0  72 64 22 2c 31 30 2c 6e  25 2b 31 3a 6e 2b 3d 31  |rd",10,n%+1:n+=1|
00003dd0  3a ed 0d 13 ce 45 21 41  25 3d 36 35 3a 24 28 41  |:....E!A%=65:$(A|
00003de0  25 2b 34 29 3d a4 6c 6f  6f 6b 75 70 28 22 44 65  |%+4)=.lookup("De|
00003df0  66 61 75 6c 74 22 29 3a  24 28 6d 61 69 6e 68 61  |fault"):$(mainha|
00003e00  6e 64 25 2b 31 30 38 29  3d 22 62 22 2b c3 20 63  |nd%+108)="b"+. c|
00003e10  75 72 72 65 6e 74 25 0d  13 d8 43 24 28 6d 61 69  |urrent%...C$(mai|
00003e20  6e 68 61 6e 64 25 2b 31  34 30 29 3d 22 6d 22 2b  |nhand%+140)="m"+|
00003e30  c3 20 63 75 72 72 65 6e  74 25 3a 24 28 6d 61 69  |. current%:$(mai|
00003e40  6e 68 61 6e 64 25 2b 31  37 32 29 3d 22 63 22 2b  |nhand%+172)="c"+|
00003e50  c3 20 63 75 72 72 65 6e  74 25 0d 13 e2 43 24 74  |. current%...C$t|
00003e60  69 74 6c 65 25 28 63 75  72 72 65 6e 74 25 29 3d  |itle%(current%)=|
00003e70  a4 6c 6f 6f 6b 75 70 28  22 4e 6f 4e 61 6d 65 22  |.lookup("NoName"|
00003e80  29 3a 59 25 3d 6d 61 69  6e 68 61 6e 64 25 21 31  |):Y%=mainhand%!1|
00003e90  32 2d 6d 61 69 6e 68 61  6e 64 25 21 34 0d 13 ec  |2-mainhand%!4...|
00003ea0  36 e7 20 74 6f 70 79 25  2d 59 25 3c 38 30 3a 74  |6. topy%-Y%<80:t|
00003eb0  6f 70 79 25 3d 6d 61 78  79 25 2d 38 30 3a e7 20  |opy%=maxy%-80:. |
00003ec0  74 6f 70 79 25 3c 30 3a  74 6f 70 79 25 3d 6d 61  |topy%<0:topy%=ma|
00003ed0  78 79 25 0d 13 f6 49 6d  61 69 6e 68 61 6e 64 25  |xy%...Imainhand%|
00003ee0  21 31 32 3d 74 6f 70 79  25 3a 6d 61 69 6e 68 61  |!12=topy%:mainha|
00003ef0  6e 64 25 21 34 3d 74 6f  70 79 25 2d 59 25 3a 6d  |nd%!4=topy%-Y%:m|
00003f00  61 69 6e 68 61 6e 64 25  21 37 32 3d 74 69 74 6c  |ainhand%!72=titl|
00003f10  65 25 28 63 75 72 72 65  6e 74 25 29 0d 14 00 3d  |e%(current%)...=|
00003f20  c8 99 20 22 58 57 69 6d  70 5f 43 72 65 61 74 65  |.. "XWimp_Create|
00003f30  57 69 6e 64 6f 77 22 2c  2c 6d 61 69 6e 68 61 6e  |Window",,mainhan|
00003f40  64 25 20 b8 20 68 61 6e  64 6c 65 25 28 63 75 72  |d% . handle%(cur|
00003f50  72 65 6e 74 25 29 3b 58  25 0d 14 0a 1d e7 20 58  |rent%);X%..... X|
00003f60  25 20 80 20 31 3a f2 64  65 6c 28 63 75 72 72 65  |% . 1:.del(curre|
00003f70  6e 74 25 29 3a 85 0d 14  14 40 74 6f 70 79 25 2d  |nt%):....@topy%-|
00003f80  3d 36 34 3a e7 20 74 6f  70 79 25 2d 59 25 3c 38  |=64:. topy%-Y%<8|
00003f90  30 3a 74 6f 70 79 25 3d  6d 61 78 79 25 2d 38 30  |0:topy%=maxy%-80|
00003fa0  3a e7 20 74 6f 70 79 25  3c 30 3a 74 6f 70 79 25  |:. topy%<0:topy%|
00003fb0  3d 6d 61 78 79 25 0d 14  1e 25 21 71 25 3d 68 61  |=maxy%...%!q%=ha|
00003fc0  6e 64 6c 65 25 28 63 75  72 72 65 6e 74 25 29 3a  |ndle%(current%):|
00003fd0  c8 99 20 67 65 74 77 2c  2c 71 25 0d 14 28 07 f7  |.. getw,,q%..(..|
00003fe0  20 85 0d 14 32 06 3d 30  0d 14 3c 05 3a 0d 14 46  | ...2.=0..<.:..F|
00003ff0  18 dd 20 f2 69 6e 69 74  73 61 76 65 64 72 61 67  |.. .initsavedrag|
00004000  28 21 71 25 29 0d 14 50  17 ea 20 78 25 2c 79 25  |(!q%)..P.. x%,y%|
00004010  2c 79 73 69 7a 65 25 3a  41 25 3d b9 0d 14 5a 07  |,ysize%:A%=...Z.|
00004020  ea 20 85 0d 14 64 1f ee  20 85 20 ea 20 41 25 3d  |. ...d.. . . A%=|
00004030  a3 3a f2 74 65 6c 6c 74  68 65 6d 6f 66 66 28 f6  |.:.tellthemoff(.|
00004040  24 29 0d 14 6e 0a e7 20  41 25 20 8c 0d 14 78 45  |$)..n.. A% ...xE|
00004050  20 66 73 69 7a 65 25 3d  32 32 34 30 3a 71 25 21  | fsize%=2240:q%!|
00004060  34 3d 36 3a c8 99 20 67  65 74 69 63 2c 2c 71 25  |4=6:.. getic,,q%|
00004070  3a e7 20 63 75 72 72 65  6e 74 25 3e 2d 31 3a 64  |:. current%>-1:d|
00004080  72 61 67 66 72 6f 6d 25  3d 63 75 72 72 65 6e 74  |ragfrom%=current|
00004090  25 0d 14 82 2f 20 e7 20  71 25 21 32 34 20 80 20  |%.../ . q%!24 . |
000040a0  31 3c 3c 32 31 3a 66 73  69 7a 65 25 3d a4 73 61  |1<<21:fsize%=.sa|
000040b0  76 65 63 68 72 73 28 73  61 76 65 63 68 72 73 29  |vechrs(savechrs)|
000040c0  0d 14 8c 43 20 71 25 21  34 30 3d 21 71 25 3a c8  |...C q%!40=!q%:.|
000040d0  99 20 67 65 74 77 2c 2c  71 25 2b 34 30 3a 71 25  |. getw,,q%+40:q%|
000040e0  21 34 3d 32 3a c8 99 20  67 65 74 69 63 2c 2c 71  |!4=2:.. getic,,q|
000040f0  25 3a 71 25 21 38 2b 3d  71 25 21 34 34 2d 71 25  |%:q%!8+=q%!44-q%|
00004100  21 36 30 0d 14 96 4a 20  71 25 21 31 32 2b 3d 71  |!60...J q%!12+=q|
00004110  25 21 35 36 2d 71 25 21  36 34 3a 71 25 21 31 36  |%!56-q%!64:q%!16|
00004120  3d 71 25 21 38 2b 36 38  3a 71 25 21 32 30 3d 71  |=q%!8+68:q%!20=q|
00004130  25 21 31 32 2b 36 38 3a  71 25 21 32 34 3d 30 3a  |%!12+68:q%!24=0:|
00004140  71 25 21 32 38 3d 30 3a  21 71 25 3d 30 0d 14 a0  |q%!28=0:!q%=0...|
00004150  45 20 71 25 21 34 3d 35  3a c8 99 20 6d 76 61 72  |E q%!4=5:.. mvar|
00004160  2c 2d 31 2c 34 20 b8 20  2c 2c 78 25 3a c8 99 20  |,-1,4 . ,,x%:.. |
00004170  6d 76 61 72 2c 2d 31 2c  31 31 20 b8 20 2c 2c 79  |mvar,-1,11 . ,,y|
00004180  25 3a 71 25 21 33 32 3d  28 79 25 2b 31 29 3c 3c  |%:q%!32=(y%+1)<<|
00004190  78 25 0d 14 aa 3e 20 c8  99 20 6d 76 61 72 2c 2d  |x%...> .. mvar,-|
000041a0  31 2c 35 20 b8 20 2c 2c  78 25 3a c8 99 20 6d 76  |1,5 . ,,x%:.. mv|
000041b0  61 72 2c 2d 31 2c 31 32  20 b8 20 2c 2c 79 25 3a  |ar,-1,12 . ,,y%:|
000041c0  71 25 21 33 36 3d 28 79  25 2b 31 29 3c 3c 78 25  |q%!36=(y%+1)<<x%|
000041d0  0d 14 b4 1f 20 c8 99 20  22 4f 53 5f 42 79 74 65  |.... .. "OS_Byte|
000041e0  22 2c 31 36 31 2c 32 38  20 b8 20 2c 2c 78 25 0d  |",161,28 . ,,x%.|
000041f0  14 be 0f 20 e7 20 78 25  20 80 20 32 20 8c 0d 14  |... . x% . 2 ...|
00004200  c8 3a 20 20 64 72 61 67  67 69 6e 67 25 3d 32 3a  |.:  dragging%=2:|
00004210  c8 99 20 26 36 32 34 30  30 2c 26 43 35 2c 73 70  |.. &62400,&C5,sp|
00004220  72 25 2c 22 66 69 6c 65  5f 66 66 37 22 2c 71 25  |r%,"file_ff7",q%|
00004230  2b 38 20 b8 20 3b 78 25  0d 14 d2 1a 20 20 e7 20  |+8 . ;x%....  . |
00004240  78 25 20 80 20 31 3a 78  25 3d 30 3a 8b 20 78 25  |x% . 1:x%=0:. x%|
00004250  3d 32 0d 14 dc 06 20 cd  0d 14 e6 33 20 e7 20 28  |=2.... ....3 . (|
00004260  78 25 20 80 20 32 29 3d  30 3a c8 99 20 22 57 69  |x% . 2)=0:.. "Wi|
00004270  6d 70 5f 44 72 61 67 42  6f 78 22 2c 2c 71 25 3a  |mp_DragBox",,q%:|
00004280  64 72 61 67 67 69 6e 67  25 3d 31 0d 14 f0 05 cd  |dragging%=1.....|
00004290  0d 14 fa 07 f7 20 85 0d  15 04 05 e1 0d 15 0e 05  |..... ..........|
000042a0  3a 0d 15 18 0e dd 20 a4  69 63 6f 6e 62 61 72 0d  |:..... .iconbar.|
000042b0  15 22 45 ea 20 69 69 25  3a 21 69 63 25 3d 2d 31  |."E. ii%:!ic%=-1|
000042c0  3a 69 63 25 21 34 3d 30  3a 69 63 25 21 38 3d 30  |:ic%!4=0:ic%!8=0|
000042d0  3a 69 63 25 21 31 32 3d  36 34 3a 69 63 25 21 31  |:ic%!12=64:ic%!1|
000042e0  36 3d 36 38 3a 69 63 25  21 32 30 3d 26 37 30 30  |6=68:ic%!20=&700|
000042f0  33 31 31 41 0d 15 2c 35  de 20 69 63 25 21 32 34  |311A..,5. ic%!24|
00004300  20 31 32 3a 24 28 69 63  25 21 32 34 29 3d 22 21  | 12:$(ic%!24)="!|
00004310  63 68 72 65 64 22 3a 69  63 25 21 32 38 3d 31 3a  |chred":ic%!28=1:|
00004320  69 63 25 21 33 32 3d 31  32 0d 15 36 23 c8 99 20  |ic%!32=12..6#.. |
00004330  22 57 69 6d 70 5f 43 72  65 61 74 65 49 63 6f 6e  |"Wimp_CreateIcon|
00004340  22 2c 2c 69 63 25 20 b8  20 69 69 25 0d 15 40 08  |",,ic% . ii%..@.|
00004350  3d 69 69 25 0d 15 4a 05  3a 0d 15 54 11 dd 20 f2  |=ii%..J.:..T.. .|
00004360  6d 65 6e 75 73 65 6c 65  63 74 0d 15 5e 1c ea 20  |menuselect..^.. |
00004370  72 65 64 6f 25 3a c8 99  20 67 65 74 70 74 72 2c  |redo%:.. getptr,|
00004380  2c 71 25 2b 38 30 0d 15  68 13 72 65 64 6f 25 3d  |,q%+80..h.redo%=|
00004390  71 25 21 38 38 20 80 20  31 0d 15 72 10 c8 8e 20  |q%!88 . 1..r... |
000043a0  6d 65 6e 75 49 44 25 20  ca 0d 15 7c 17 c9 20 30  |menuID% ...|.. 0|
000043b0  3a f2 64 65 63 6f 64 65  69 63 6f 6e 6d 65 6e 75  |:.decodeiconmenu|
000043c0  0d 15 86 17 c9 20 31 3a  f2 64 65 63 6f 64 65 6d  |..... 1:.decodem|
000043d0  61 69 6e 6d 65 6e 75 0d  15 90 05 cb 0d 15 9a 05  |ainmenu.........|
000043e0  e1 0d 15 a4 05 3a 0d 15  ae 15 dd 20 f2 64 65 63  |.....:..... .dec|
000043f0  6f 64 65 69 63 6f 6e 6d  65 6e 75 0d 15 b8 0c c8  |odeiconmenu.....|
00004400  8e 20 21 71 25 20 ca 0d  15 c2 15 c9 20 31 3a 65  |. !q% ...... 1:e|
00004410  6e 64 25 3d b9 3a 72 73  74 25 3d a3 0d 15 cc 05  |nd%=.:rst%=.....|
00004420  cb 0d 15 d6 05 e1 0d 15  e0 05 3a 0d 15 ea 15 dd  |..........:.....|
00004430  20 f2 64 65 63 6f 64 65  6d 61 69 6e 6d 65 6e 75  | .decodemainmenu|
00004440  0d 15 f4 28 ea 20 62 25  2c 42 25 3a 62 25 3d 71  |...(. b%,B%:b%=q|
00004450  25 21 38 38 20 80 20 36  3a 72 65 64 6f 25 3d 71  |%!88 . 6:redo%=q|
00004460  25 21 38 38 20 80 20 33  0d 15 fe 0c c8 8e 20 21  |%!88 . 3...... !|
00004470  71 25 20 ca 0d 16 08 32  c9 20 30 3a 66 24 3d a4  |q% ....2. 0:f$=.|
00004480  67 65 74 73 74 72 28 73  61 76 65 74 65 78 74 29  |getstr(savetext)|
00004490  3a e7 20 a4 70 61 74 68  28 66 24 29 3a f2 73 61  |:. .path(f$):.sa|
000044a0  76 65 28 66 24 29 0d 16  12 2f c9 20 31 3a c8 99  |ve(f$).../. 1:..|
000044b0  20 22 4f 53 5f 57 72 69  74 65 4e 22 2c a4 61 64  | "OS_WriteN",.ad|
000044c0  64 72 28 22 66 22 2c 63  75 72 72 65 6e 74 25 29  |dr("f",current%)|
000044d0  2c 32 32 34 30 0d 16 1c  22 20 c8 99 20 66 72 65  |,2240..." .. fre|
000044e0  64 72 61 77 2c 2d 31 2c  30 2c 30 2c 36 35 35 33  |draw,-1,0,0,6553|
000044f0  35 2c 36 35 35 33 35 0d  16 26 2d c9 20 32 3a c8  |5,65535..&-. 2:.|
00004500  99 20 36 2c 32 35 3a c8  99 20 66 72 65 64 72 61  |. 6,25:.. fredra|
00004510  77 2c 2d 31 2c 30 2c 30  2c 36 35 35 33 35 2c 36  |w,-1,0,0,65535,6|
00004520  35 35 33 35 0d 16 30 05  cb 0d 16 3a 3c f2 70 72  |5535..0....:<.pr|
00004530  65 70 61 72 65 6d 65 6e  75 73 3a e7 20 72 65 64  |eparemenus:. red|
00004540  6f 25 3a c8 99 20 63 72  6d 65 6e 75 2c 2c 6d 61  |o%:.. crmenu,,ma|
00004550  69 6e 6d 65 6e 75 25 2c  6d 65 6e 75 78 25 2c 6d  |inmenu%,menux%,m|
00004560  65 6e 75 79 25 0d 16 44  05 e1 0d 16 4e 05 3a 0d  |enuy%..D....N.:.|
00004570  16 58 11 dd 20 f2 66 72  6f 6e 74 28 21 71 25 29  |.X.. .front(!q%)|
00004580  0d 16 62 25 c8 99 20 67  65 74 77 2c 2c 71 25 3a  |..b%.. getw,,q%:|
00004590  71 25 21 32 38 3d 2d 31  3a c8 99 20 6f 70 65 6e  |q%!28=-1:.. open|
000045a0  77 2c 2c 71 25 0d 16 6c  05 e1 0d 16 76 05 3a 0d  |w,,q%..l....v.:.|
000045b0  16 80 1e dd 20 f2 6f 70  65 6e 61 74 28 21 71 25  |.... .openat(!q%|
000045c0  2c 71 25 21 34 34 2c 71  25 21 34 38 29 0d 16 8a  |,q%!44,q%!48)...|
000045d0  40 c8 99 20 67 65 74 77  2c 2c 71 25 3a 71 25 21  |@.. getw,,q%:q%!|
000045e0  31 32 2b 3d 71 25 21 34  34 2d 71 25 21 34 3a 71  |12+=q%!44-q%!4:q|
000045f0  25 21 31 36 2b 3d 71 25  21 34 38 2d 71 25 21 38  |%!16+=q%!48-q%!8|
00004600  3a c8 99 20 6f 70 65 6e  77 2c 2c 71 25 0d 16 94  |:.. openw,,q%...|
00004610  05 e1 0d 16 9e 05 3a 0d  16 a8 35 dd 20 f2 6f 70  |......:...5. .op|
00004620  65 6e 61 74 73 28 21 71  25 2c 71 25 21 34 2c 71  |enats(!q%,q%!4,q|
00004630  25 21 38 2c 71 25 21 31  32 2c 71 25 21 31 36 2c  |%!8,q%!12,q%!16,|
00004640  71 25 21 32 30 2c 71 25  21 32 34 29 0d 16 b2 19  |q%!20,q%!24)....|
00004650  71 25 21 32 38 3d 2d 31  3a c8 99 20 6f 70 65 6e  |q%!28=-1:.. open|
00004660  77 2c 2c 71 25 0d 16 bc  05 e1 0d 16 c6 05 3a 0d  |w,,q%.........:.|
00004670  16 d0 19 dd 20 f2 63 6c  6f 73 65 77 69 6e 64 6f  |.... .closewindo|
00004680  77 28 68 61 6e 64 25 29  0d 16 da 13 41 25 3d a4  |w(hand%)....A%=.|
00004690  66 69 6e 64 28 68 61 6e  64 25 29 0d 16 e4 0c e7  |find(hand%).....|
000046a0  20 41 25 3c 30 20 8c 0d  16 ee 28 20 21 71 25 3d  | A%<0 ....( !q%=|
000046b0  68 61 6e 64 25 3a c8 99  20 22 57 69 6d 70 5f 43  |hand%:.. "Wimp_C|
000046c0  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 71 25 0d  |loseWindow",,q%.|
000046d0  16 f8 31 cc 20 63 75 72  72 65 6e 74 25 3d 41 25  |..1. current%=A%|
000046e0  3a e7 20 a4 73 61 76 65  6f 6c 64 28 a3 29 3a f2  |:. .saveold(.):.|
000046f0  64 65 6c 65 74 65 28 63  75 72 72 65 6e 74 25 29  |delete(current%)|
00004700  0d 17 02 05 cd 0d 17 0c  05 e1 0d 17 16 05 3a 0d  |..............:.|
00004710  17 20 19 dd 20 f2 66 6f  72 63 65 72 65 64 72 61  |. .. .forceredra|
00004720  77 28 68 61 6e 64 25 29  0d 17 2a 29 21 71 25 3d  |w(hand%)..*)!q%=|
00004730  68 61 6e 64 25 3a c8 99  20 22 57 69 6d 70 5f 47  |hand%:.. "Wimp_G|
00004740  65 74 57 69 6e 64 6f 77  49 6e 66 6f 22 2c 2c 71  |etWindowInfo",,q|
00004750  25 0d 17 34 2c c8 99 20  66 72 65 64 72 61 77 2c  |%..4,.. fredraw,|
00004760  68 61 6e 64 25 2c 71 25  21 34 34 2c 71 25 21 34  |hand%,q%!44,q%!4|
00004770  38 2c 71 25 21 35 32 2c  71 25 21 35 36 0d 17 3e  |8,q%!52,q%!56..>|
00004780  05 e1 0d 17 48 05 3a 0d  17 52 0f dd 20 f2 73 61  |....H.:..R.. .sa|
00004790  76 65 28 66 24 29 0d 17  5c 07 ea 20 85 0d 17 66  |ve(f$)..\.. ...f|
000047a0  43 ee 20 85 20 ea 20 e7  20 9f 3d 31 3a f2 74 65  |C. . . . .=1:.te|
000047b0  6c 6c 74 68 65 6d 6f 66  66 28 f6 24 29 3a f7 20  |llthemoff(.$):. |
000047c0  85 3a e1 3a 8b 20 e7 20  a4 74 65 6c 6c 74 68 65  |.:.:. . .tellthe|
000047d0  6d 6f 66 66 28 f6 24 2c  a3 29 3a f7 20 85 3a e1  |moff(.$,.):. .:.|
000047e0  0d 17 70 15 21 71 25 3d  73 61 76 65 68 61 6e 64  |..p.!q%=savehand|
000047f0  25 3a 66 3d 33 0d 17 7a  10 e3 20 71 25 21 34 3d  |%:f=3..z.. q%!4=|
00004800  34 20 b8 20 36 0d 17 84  28 20 c8 99 20 67 65 74  |4 . 6...( .. get|
00004810  69 63 2c 2c 71 25 3a e7  20 71 25 21 32 34 20 80  |ic,,q%:. q%!24 .|
00004820  20 31 3c 3c 32 31 3a 66  3d 71 25 21 34 0d 17 8e  | 1<<21:f=q%!4...|
00004830  05 ed 0d 17 98 1a 6e 25  3d a4 61 64 64 72 28 22  |......n%=.addr("|
00004840  66 22 2c 63 75 72 72 65  6e 74 25 29 0d 17 a2 0a  |f",current%)....|
00004850  c8 8e 20 66 20 ca 0d 17  ac 2b c9 20 33 3a c8 99  |.. f ....+. 3:..|
00004860  20 22 4f 53 5f 46 69 6c  65 22 2c 31 30 2c 66 24  | "OS_File",10,f$|
00004870  2c 26 46 46 37 2c 2c 6e  25 2c 6e 25 2b 32 32 34  |,&FF7,,n%,n%+224|
00004880  30 0d 17 b6 1e c9 20 34  3a f2 73 61 76 65 70 61  |0..... 4:.savepa|
00004890  72 74 28 66 24 2c 6e 25  2c 22 80 2d ff 22 29 0d  |rt(f$,n%,".-.").|
000048a0  17 c0 1e c9 20 35 3a f2  73 61 76 65 70 61 72 74  |.... 5:.savepart|
000048b0  28 66 24 2c 6e 25 2c 22  20 2d 7e 22 29 0d 17 ca  |(f$,n%," -~")...|
000048c0  22 c9 20 36 3a f2 73 61  76 65 70 61 72 74 28 66  |". 6:.savepart(f|
000048d0  24 2c 6e 25 2c 24 73 61  76 65 63 68 72 73 29 0d  |$,n%,$savechrs).|
000048e0  17 d4 05 cb 0d 17 de 07  f7 20 85 0d 17 e8 49 e7  |......... ....I.|
000048f0  20 66 24 3c 3e 22 3c 57  69 6d 70 24 53 63 72 61  | f$<>"<Wimp$Scra|
00004900  70 3e 22 3a 24 28 a4 61  64 64 72 28 22 6e 22 2c  |p>":$(.addr("n",|
00004910  63 75 72 72 65 6e 74 25  29 2b 34 29 3d 66 24 3a  |current%)+4)=f$:|
00004920  f2 63 68 61 6e 67 65 64  28 63 75 72 72 65 6e 74  |.changed(current|
00004930  25 2c 30 29 0d 17 f2 05  e1 0d 17 fc 05 3a 0d 18  |%,0).........:..|
00004940  06 12 dd 20 a4 73 61 76  65 63 68 72 73 28 67 29  |... .savechrs(g)|
00004950  0d 18 10 22 e7 20 3f 67  3d 31 33 3a 85 20 31 2c  |...". ?g=13:. 1,|
00004960  a4 6c 6f 6f 6b 75 70 28  22 4e 75 6c 6c 53 74 72  |.lookup("NullStr|
00004970  22 29 0d 18 1a 32 e3 20  6e 3d 30 20 b8 20 32 35  |")...2. n=0 . 25|
00004980  32 20 88 20 34 3a 62 75  66 21 6e 3d 30 3a ed 3a  |2 . 4:buf!n=0:.:|
00004990  6c 69 74 25 3d a3 3a 62  61 72 25 3d a3 3a 74 6f  |lit%=.:bar%=.:to|
000049a0  70 25 3d 30 0d 18 24 12  72 61 6e 67 65 25 3d a3  |p%=0..$.range%=.|
000049b0  3a 63 32 25 3d 30 0d 18  2e 0c c8 95 20 3f 67 3e  |:c2%=0...... ?g>|
000049c0  33 31 0d 18 38 30 20 63  31 25 3d a4 61 73 63 28  |31..80 c1%=.asc(|
000049d0  67 29 3a e7 20 63 31 25  3c 33 32 3a 85 20 31 2c  |g):. c1%<32:. 1,|
000049e0  a4 6c 6f 6f 6b 75 70 28  22 55 6e 70 72 69 6e 74  |.lookup("Unprint|
000049f0  22 29 0d 18 42 0e 20 e7  20 3f 67 3d 34 35 20 8c  |")..B. . ?g=45 .|
00004a00  0d 18 4c 2e 20 20 67 2b  3d 31 3a e7 20 3f 67 3c  |..L.  g+=1:. ?g<|
00004a10  33 32 3a 85 20 31 2c a4  6c 6f 6f 6b 75 70 31 28  |32:. 1,.lookup1(|
00004a20  22 42 61 64 43 74 72 6c  22 2c 22 2d 22 29 0d 18  |"BadCtrl","-")..|
00004a30  56 31 20 20 63 32 25 3d  a4 61 73 63 28 67 29 3a  |V1  c2%=.asc(g):|
00004a40  e7 20 63 32 25 3c 33 32  3a 85 20 31 2c a4 6c 6f  |. c2%<32:. 1,.lo|
00004a50  6f 6b 75 70 28 22 55 6e  70 72 69 6e 74 22 29 0d  |okup("Unprint").|
00004a60  18 60 0e 20 cc 20 63 32  25 3d 63 31 25 0d 18 6a  |.`. . c2%=c1%..j|
00004a70  06 20 cd 0d 18 74 19 20  e7 20 63 31 25 3e 63 32  |. ...t. . c1%>c2|
00004a80  25 3a c8 94 20 63 31 25  2c 63 32 25 0d 18 7e 1c  |%:.. c1%,c2%..~.|
00004a90  20 e3 20 6e 3d 63 31 25  20 b8 20 63 32 25 3a 62  | . n=c1% . c2%:b|
00004aa0  75 66 3f 6e 3d 31 3a ed  0d 18 88 05 ce 0d 18 92  |uf?n=1:.........|
00004ab0  29 62 75 66 3f 31 32 37  3d 30 3a 67 3d 30 3a e3  |)buf?127=0:g=0:.|
00004ac0  20 6e 3d 30 20 b8 20 32  35 35 3a 67 3d 67 2b 62  | n=0 . 255:g=g+b|
00004ad0  75 66 3f 6e 3a ed 0d 18  9c 20 e7 20 67 20 8b 20  |uf?n:.... . g . |
00004ae0  85 20 31 2c a4 6c 6f 6f  6b 75 70 28 22 4e 75 6c  |. 1,.lookup("Nul|
00004af0  6c 53 74 72 22 29 0d 18  a6 09 3d 67 2a 31 30 0d  |lStr")....=g*10.|
00004b00  18 b0 05 3a 0d 18 ba 19  dd 20 f2 73 61 76 65 70  |...:..... .savep|
00004b10  61 72 74 28 66 24 2c 66  2c 24 71 25 29 0d 18 c4  |art(f$,f,$q%)...|
00004b20  43 66 73 69 7a 65 25 3d  a4 73 61 76 65 63 68 72  |Cfsize%=.savechr|
00004b30  73 28 71 25 29 3a 67 3d  ae 20 66 24 3a c8 99 20  |s(q%):g=. f$:.. |
00004b40  22 4f 53 5f 46 69 6c 65  22 2c 31 38 2c 66 24 2c  |"OS_File",18,f$,|
00004b50  26 46 46 37 3a a2 20 23  67 3d 66 73 69 7a 65 25  |&FF7:. #g=fsize%|
00004b60  0d 18 ce 10 e3 20 6e 3d  33 32 20 b8 20 32 35 35  |..... n=32 . 255|
00004b70  0d 18 d8 2b 20 e7 20 62  75 66 3f 6e 3a c8 99 20  |...+ . buf?n:.. |
00004b80  22 58 4f 53 5f 47 42 50  42 22 2c 32 2c 67 2c 66  |"XOS_GBPB",2,g,f|
00004b90  2c 31 30 20 b8 20 43 25  3b 44 25 0d 18 e2 22 20  |,10 . C%;D%..." |
00004ba0  66 2b 3d 31 30 3a e7 20  44 25 20 80 20 31 3a f2  |f+=10:. D% . 1:.|
00004bb0  73 61 76 65 63 6c 6f 73  65 28 43 25 29 0d 18 ec  |saveclose(C%)...|
00004bc0  05 ed 0d 18 f6 11 f2 73  61 76 65 63 6c 6f 73 65  |.......saveclose|
00004bd0  28 30 29 0d 19 00 05 e1  0d 19 0a 05 3a 0d 19 14  |(0).........:...|
00004be0  14 dd 20 f2 73 61 76 65  63 6c 6f 73 65 28 43 25  |.. .saveclose(C%|
00004bf0  29 0d 19 1e 28 e7 20 67  3a c8 99 20 22 58 4f 53  |)...(. g:.. "XOS|
00004c00  5f 46 69 6e 64 22 2c 30  2c 67 20 b8 20 45 25 3b  |_Find",0,g . E%;|
00004c10  46 25 3a 8b 20 46 25 3d  30 0d 19 28 2c e7 20 46  |F%:. F%=0..(,. F|
00004c20  25 20 80 20 31 20 80 20  43 25 3d 30 3a c8 99 20  |% . 1 . C%=0:.. |
00004c30  22 4f 53 5f 47 65 6e 65  72 61 74 65 45 72 72 6f  |"OS_GenerateErro|
00004c40  72 22 2c 45 25 0d 19 32  21 e7 20 43 25 3a c8 99  |r",E%..2!. C%:..|
00004c50  20 22 4f 53 5f 47 65 6e  65 72 61 74 65 45 72 72  | "OS_GenerateErr|
00004c60  6f 72 22 2c 43 25 0d 19  3c 05 e1 0d 19 46 05 3a  |or",C%..<....F.:|
00004c70  0d 19 50 0f dd 20 a4 61  73 63 28 f8 20 67 29 0d  |..P.. .asc(. g).|
00004c80  19 5a 08 ea 20 41 25 0d  19 64 0b c8 8e 20 3f 67  |.Z.. A%..d... ?g|
00004c90  20 ca 0d 19 6e 3b c9 20  39 32 3a e7 20 67 3f 31  | ...n;. 92:. g?1|
00004ca0  3c 33 31 3a 85 20 31 2c  a4 6c 6f 6f 6b 75 70 31  |<31:. 1,.lookup1|
00004cb0  28 22 42 61 64 43 74 72  6c 22 2c 22 5c 22 29 3a  |("BadCtrl","\"):|
00004cc0  8b 20 41 25 3d 67 3f 31  3a 67 2b 3d 32 0d 19 78  |. A%=g?1:g+=2..x|
00004cd0  0e c9 20 31 32 34 3a 67  2b 3d 32 0d 19 82 0e 20  |.. 124:g+=2.... |
00004ce0  c8 8e 20 67 3f 2d 31 20  ca 0d 19 8c 1a 20 c9 20  |.. g?-1 ..... . |
00004cf0  33 33 3a 41 25 3d a4 61  73 63 28 67 29 20 82 20  |33:A%=.asc(g) . |
00004d00  31 32 38 0d 19 96 10 20  c9 20 36 33 3a 41 25 3d  |128.... . 63:A%=|
00004d10  31 32 37 0d 19 a0 32 20  7f 3a 41 25 3d 67 3f 2d  |127...2 .:A%=g?-|
00004d20  31 3a e7 20 41 25 3c 33  32 3a 85 20 31 2c a4 6c  |1:. A%<32:. 1,.l|
00004d30  6f 6f 6b 75 70 31 28 22  42 61 64 43 74 72 6c 22  |ookup1("BadCtrl"|
00004d40  2c 22 7c 22 29 0d 19 aa  22 20 20 e7 20 41 25 3e  |,"|")..."  . A%>|
00004d50  36 33 20 80 20 41 25 3c  3e 31 32 34 20 80 20 41  |63 . A%<>124 . A|
00004d60  25 3c 31 32 37 20 8c 0d  19 b4 33 20 20 20 42 25  |%<127 ....3   B%|
00004d70  3d a7 22 40 41 42 43 44  45 46 47 48 49 4a 4b 4c  |=."@ABCDEFGHIJKL|
00004d80  4d 4e 4f 50 51 52 53 54  55 56 57 58 59 5a 5b 5c  |MNOPQRSTUVWXYZ[\|
00004d90  5d 5e 5f 22 2c bd 20 41  25 29 0d 19 be 3a 20 20  |]^_",. A%)...:  |
00004da0  20 e7 20 42 25 20 8b 20  42 25 3d a7 22 40 61 62  | . B% . B%=."@ab|
00004db0  63 64 65 66 67 68 69 6a  6b 6c 6d 6e 6f 70 71 72  |cdefghijklmnopqr|
00004dc0  73 74 75 76 77 78 79 7a  7b 7c 7d 7e 60 22 2c bd  |stuvwxyz{|}~`",.|
00004dd0  20 41 25 29 0d 19 c8 13  20 20 20 41 25 3d 42 25  | A%)....   A%=B%|
00004de0  2d 31 20 80 20 33 31 0d  19 d2 07 20 20 cd 0d 19  |-1 . 31....  ...|
00004df0  dc 06 20 cb 0d 19 e6 09  c9 20 31 33 32 0d 19 f0  |.. ...... 132...|
00004e00  08 20 ea 20 85 0d 19 fa  24 20 ee 20 85 20 ea 20  |. . ....$ . . . |
00004e10  f7 20 85 3a 85 20 31 2c  a4 6c 6f 6f 6b 75 70 28  |. .:. 1,.lookup(|
00004e20  22 42 61 64 48 65 78 22  29 0d 1a 04 0f 20 e7 20  |"BadHex").... . |
00004e30  67 3f 32 3c 33 32 3a 85  0d 1a 0e 1d 20 41 25 3d  |g?2<32:..... A%=|
00004e40  a0 20 28 22 26 22 2b c1  24 67 2c 32 2c 32 29 29  |. ("&"+.$g,2,2))|
00004e50  3a 67 2b 3d 33 0d 1a 18  08 20 f7 20 85 0d 1a 22  |:g+=3.... . ..."|
00004e60  10 7f 3a 41 25 3d 3f 67  3a 67 2b 3d 31 0d 1a 2c  |..:A%=?g:g+=1..,|
00004e70  05 cb 0d 1a 36 07 3d 41  25 0d 1a 40 05 3a 0d 1a  |....6.=A%..@.:..|
00004e80  4a 11 dd 20 f2 6c 6f 61  64 28 24 62 75 66 29 0d  |J.. .load($buf).|
00004e90  1a 54 20 ea 20 74 79 70  65 25 2c 66 74 79 70 65  |.T . type%,ftype|
00004ea0  25 2c 69 6e 25 2c 73 25  2c 6c 25 2c 65 78 74 0d  |%,in%,s%,l%,ext.|
00004eb0  1a 5e 3b e7 20 24 62 75  66 3c 3e 22 22 3a e7 20  |.^;. $buf<>"":. |
00004ec0  a4 63 68 65 63 6b 66 69  6c 65 28 24 62 75 66 2c  |.checkfile($buf,|
00004ed0  65 78 74 29 3a f2 64 6f  6c 6f 61 64 28 24 62 75  |ext):.doload($bu|
00004ee0  66 2c 6d 73 67 25 21 32  30 29 0d 1a 68 05 e1 0d  |f,msg%!20)..h...|
00004ef0  1a 72 05 3a 0d 1a 7c 1c  dd 20 a4 63 68 65 63 6b  |.r.:..|.. .check|
00004f00  66 69 6c 65 28 24 62 75  66 2c f8 20 65 78 74 29  |file($buf,. ext)|
00004f10  0d 1a 86 2b c8 99 20 22  4f 53 5f 46 69 6c 65 22  |...+.. "OS_File"|
00004f20  2c 35 2c 62 75 66 20 b8  20 74 79 70 65 25 2c 2c  |,5,buf . type%,,|
00004f30  66 74 79 70 65 25 2c 2c  65 78 74 0d 1a 90 2a e7  |ftype%,,ext...*.|
00004f40  20 74 79 70 65 25 3d 31  20 80 20 28 66 74 79 70  | type%=1 . (ftyp|
00004f50  65 25 20 84 20 32 35 35  29 3d 26 46 46 46 46 46  |e% . 255)=&FFFFF|
00004f60  37 46 46 20 8c 0d 1a 9a  51 20 e7 20 65 78 74 3d  |7FF ....Q . ext=|
00004f70  30 20 84 20 65 78 74 20  83 20 31 30 20 84 20 65  |0 . ext . 10 . e|
00004f80  78 74 3e 32 32 34 30 3a  f2 74 65 6c 6c 74 68 65  |xt>2240:.tellthe|
00004f90  6d 6f 66 66 28 a4 6c 6f  6f 6b 75 70 66 28 22 42  |moff(.lookupf("B|
00004fa0  61 64 46 6f 6e 74 22 2c  24 62 75 66 29 29 3a 74  |adFont",$buf)):t|
00004fb0  79 70 65 25 3d 30 0d 1a  a4 05 cc 0d 1a ae 10 20  |ype%=0......... |
00004fc0  e7 20 74 79 70 65 25 3d  31 20 8c 0d 1a b8 2d 20  |. type%=1 ....- |
00004fd0  20 f2 74 65 6c 6c 74 68  65 6d 6f 66 66 28 a4 6c  | .tellthemoff(.l|
00004fe0  6f 6f 6b 75 70 66 28 22  43 61 6e 74 4c 6f 61 64  |ookupf("CantLoad|
00004ff0  22 2c 24 62 75 66 29 29  0d 1a c2 28 20 cc 20 f2  |",$buf))...( . .|
00005000  74 65 6c 6c 74 68 65 6d  6f 66 66 28 a4 6c 6f 6f  |tellthemoff(.loo|
00005010  6b 75 70 28 22 43 61 6e  74 4c 44 69 72 22 29 29  |kup("CantLDir"))|
00005020  0d 1a cc 06 20 cd 0d 1a  d6 0c 20 74 79 70 65 25  |.... ..... type%|
00005030  3d 30 0d 1a e0 05 cd 0d  1a ea 0a 3d 74 79 70 65  |=0.........=type|
00005040  25 0d 1a f4 05 3a 0d 1a  fe 16 dd 20 f2 64 6f 6c  |%....:..... .dol|
00005050  6f 61 64 28 24 62 75 66  2c 57 25 29 0d 1b 08 33  |oad($buf,W%)...3|
00005060  ea 20 69 25 2c 78 2c 79  2c 66 24 3a 66 24 3d 24  |. i%,x,y,f$:f$=$|
00005070  62 75 66 3a c8 99 20 22  4f 53 5f 46 69 6c 65 22  |buf:.. "OS_File"|
00005080  2c 35 2c 66 24 20 b8 20  2c 2c 2c 2c 65 78 74 0d  |,5,f$ . ,,,,ext.|
00005090  1b 12 3d e7 20 65 78 74  3c 30 20 84 20 65 78 74  |..=. ext<0 . ext|
000050a0  3e 32 32 34 30 3a f2 74  65 6c 6c 74 68 65 6d 6f  |>2240:.tellthemo|
000050b0  66 66 28 a4 6c 6f 6f 6b  75 70 66 28 22 42 61 64  |ff(.lookupf("Bad|
000050c0  46 6f 6e 74 22 2c 66 24  29 29 3a e1 0d 1b 1c 1c  |Font",f$)):.....|
000050d0  57 25 3d a4 66 69 6e 64  28 57 25 29 3a 63 75 72  |W%=.find(W%):cur|
000050e0  72 65 6e 74 25 3d 57 25  0d 1b 26 0c e7 20 57 25  |rent%=W%..&.. W%|
000050f0  3c 30 20 8c 0d 1b 30 32  20 e7 20 a4 6d 65 6d 6f  |<0 ...02 . .memo|
00005100  72 79 20 8b 20 f2 74 65  6c 6c 74 68 65 6d 6f 66  |ry . .tellthemof|
00005110  66 28 a4 6c 6f 6f 6b 75  70 28 22 4d 65 6d 6f 72  |f(.lookup("Memor|
00005120  79 22 29 29 3a e1 0d 1b  3a 34 20 e7 20 66 69 6c  |y")):...:4 . fil|
00005130  65 73 25 3d 31 36 3a f2  74 65 6c 6c 74 68 65 6d  |es%=16:.tellthem|
00005140  6f 66 66 28 a4 6c 6f 6f  6b 75 70 28 22 43 61 70  |off(.lookup("Cap|
00005150  61 63 69 74 79 22 29 29  3a e1 0d 1b 44 05 cd 0d  |acity")):...D...|
00005160  1b 4e 0d c8 99 20 77 61  69 74 6f 6e 0d 1b 58 07  |.N... waiton..X.|
00005170  ea 20 85 0d 1b 62 30 ee  20 85 20 ea 20 c8 99 20  |. ...b0. . . .. |
00005180  77 61 69 74 6f 66 66 3a  e7 20 a4 6e 6f 6c 6f 61  |waitoff:. .noloa|
00005190  64 3a c8 99 20 77 61 69  74 6f 6e 3a 8b 20 f7 20  |d:.. waiton:. . |
000051a0  85 3a e1 0d 1b 6c 36 c8  99 20 22 4f 53 5f 46 69  |.:...l6.. "OS_Fi|
000051b0  6c 65 22 2c 32 35 35 2c  66 24 2c 71 25 3a e3 20  |le",255,f$,q%:. |
000051c0  6e 25 3d 30 20 b8 20 32  35 32 20 88 20 34 3a 6e  |n%=0 . 252 . 4:n|
000051d0  25 21 62 75 66 3d 30 3a  ed 0d 1b 76 1b e3 20 6e  |%!buf=0:...v.. n|
000051e0  25 3d 71 25 20 b8 20 71  25 2b 65 78 74 2d 31 20  |%=q% . q%+ext-1 |
000051f0  88 20 31 30 0d 1b 80 29  20 e7 20 3f 6e 25 3c 3e  |. 10...) . ?n%<>|
00005200  32 33 3a 85 20 31 2c a4  6c 6f 6f 6b 75 70 66 28  |23:. 1,.lookupf(|
00005210  22 42 61 64 46 6f 6e 74  22 2c 66 24 29 0d 1b 8a  |"BadFont",f$)...|
00005220  10 20 e7 20 6e 25 3f 31  3c 33 32 20 8c 0d 1b 94  |. . n%?1<32 ....|
00005230  25 20 20 f2 74 65 6c 6c  74 68 65 6d 6f 66 66 28  |%  .tellthemoff(|
00005240  a4 6c 6f 6f 6b 75 70 28  22 42 61 64 44 65 66 22  |.lookup("BadDef"|
00005250  29 29 0d 1b 9e 3a 20 cc  20 e7 20 62 75 66 3f 28  |))...: . . buf?(|
00005260  6e 25 3f 31 29 3a f2 74  65 6c 6c 74 68 65 6d 6f  |n%?1):.tellthemo|
00005270  66 66 28 a4 6c 6f 6f 6b  75 70 28 22 44 75 70 44  |ff(.lookup("DupD|
00005280  65 66 22 29 29 3a 6e 25  3f 31 3d 30 0d 1b a8 06  |ef")):n%?1=0....|
00005290  20 cd 0d 1b b2 11 20 62  75 66 3f 28 6e 25 3f 31  | ..... buf?(n%?1|
000052a0  29 3d 31 0d 1b bc 05 ed  0d 1b c6 07 f7 20 85 0d  |)=1.......... ..|
000052b0  1b d0 15 e7 20 57 25 3c  30 3a e7 20 a4 6e 65 77  |.... W%<0:. .new|
000052c0  66 69 6c 65 0d 1b da 1b  e3 20 6e 25 3d 71 25 20  |file..... n%=q% |
000052d0  b8 20 71 25 2b 65 78 74  2d 31 20 88 20 31 30 0d  |. q%+ext-1 . 10.|
000052e0  1b e4 4a 20 e7 20 6e 25  3f 31 3e 33 31 3a 6e 3d  |..J . n%?1>31:n=|
000052f0  a4 61 64 64 72 28 22 66  22 2c 63 75 72 72 65 6e  |.addr("f",curren|
00005300  74 25 29 2b 28 6e 25 3f  31 2d 33 32 29 2a 31 30  |t%)+(n%?1-32)*10|
00005310  3a 21 6e 3d 21 6e 25 3a  6e 21 34 3d 6e 25 21 34  |:!n=!n%:n!4=n%!4|
00005320  3a 6e 21 36 3d 6e 25 21  36 0d 1b ee 05 ed 0d 1b  |:n!6=n%!6.......|
00005330  f8 32 21 71 25 3d 68 61  6e 64 6c 65 25 28 63 75  |.2!q%=handle%(cu|
00005340  72 72 65 6e 74 25 29 3a  c8 99 20 67 65 74 77 2c  |rrent%):.. getw,|
00005350  2c 71 25 3a c8 99 20 6f  70 65 6e 77 2c 2c 71 25  |,q%:.. openw,,q%|
00005360  0d 1c 02 25 c8 99 20 22  57 69 6d 70 5f 53 65 74  |...%.. "Wimp_Set|
00005370  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 22 2c 21  |CaretPosition",!|
00005380  71 25 2c 2d 31 0d 1c 0c  0c e7 20 57 25 3c 30 20  |q%,-1..... W%<0 |
00005390  8c 0d 1c 16 35 20 e7 20  66 24 3c 3e 22 3c 57 69  |....5 . f$<>"<Wi|
000053a0  6d 70 24 53 63 72 61 70  3e 22 3a 24 28 a4 61 64  |mp$Scrap>":$(.ad|
000053b0  64 72 28 22 6e 22 2c 63  75 72 72 65 6e 74 25 29  |dr("n",current%)|
000053c0  2b 34 29 3d 66 24 0d 1c  20 2c 20 f2 73 68 6f 77  |+4)=f$.. , .show|
000053d0  75 70 28 36 35 29 3a 3f  41 25 3d 36 35 3a f2 67  |up(65):?A%=65:.g|
000053e0  72 61 62 28 36 35 29 3a  f2 72 65 70 6c 6f 74 6d  |rab(65):.replotm|
000053f0  61 70 0d 1c 2a 2b 20 f2  72 65 64 72 61 77 69 63  |ap..*+ .redrawic|
00005400  6f 6e 28 21 71 25 2c 30  29 3a f2 74 69 74 6c 65  |on(!q%,0):.title|
00005410  62 61 72 28 63 75 72 72  65 6e 74 25 29 0d 1c 34  |bar(current%)..4|
00005420  1a cc 20 f2 63 68 61 6e  67 65 64 28 63 75 72 72  |.. .changed(curr|
00005430  65 6e 74 25 2c b9 29 0d  1c 3e 05 cd 0d 1c 48 21  |ent%,.)..>....H!|
00005440  f2 72 65 70 6c 6f 74 63  68 72 28 33 32 2c 32 35  |.replotchr(32,25|
00005450  35 29 3a c8 99 20 77 61  69 74 6f 66 66 0d 1c 52  |5):.. waitoff..R|
00005460  05 e1 0d 1c 5c 05 3a 0d  1c 66 13 dd 20 f2 69 6e  |....\.:..f.. .in|
00005470  74 65 72 6e 61 6c 28 57  25 29 0d 1c 70 21 57 25  |ternal(W%)..p!W%|
00005480  3d a4 66 69 6e 64 28 57  25 29 3a e7 20 57 25 3d  |=.find(W%):. W%=|
00005490  64 72 61 67 66 72 6f 6d  25 3a e1 0d 1c 7a 0f 63  |dragfrom%:...z.c|
000054a0  75 72 72 65 6e 74 25 3d  57 25 0d 1c 84 0c e7 20  |urrent%=W%..... |
000054b0  57 25 3c 30 20 8c 0d 1c  8e 32 20 e7 20 a4 6d 65  |W%<0 ....2 . .me|
000054c0  6d 6f 72 79 20 8b 20 f2  74 65 6c 6c 74 68 65 6d  |mory . .tellthem|
000054d0  6f 66 66 28 a4 6c 6f 6f  6b 75 70 28 22 4d 65 6d  |off(.lookup("Mem|
000054e0  6f 72 79 22 29 29 3a e1  0d 1c 98 34 20 e7 20 66  |ory")):....4 . f|
000054f0  69 6c 65 73 25 3d 31 36  3a f2 74 65 6c 6c 74 68  |iles%=16:.tellth|
00005500  65 6d 6f 66 66 28 a4 6c  6f 6f 6b 75 70 28 22 43  |emoff(.lookup("C|
00005510  61 70 61 63 69 74 79 22  29 29 3a e1 0d 1c a2 05  |apacity")):.....|
00005520  cd 0d 1c ac 0d c8 99 20  77 61 69 74 6f 6e 0d 1c  |....... waiton..|
00005530  b6 15 e7 20 57 25 3c 30  3a e7 20 a4 6e 65 77 66  |... W%<0:. .newf|
00005540  69 6c 65 0d 1c c0 44 41  25 3d a4 61 64 64 72 28  |ile...DA%=.addr(|
00005550  22 66 22 2c 63 75 72 72  65 6e 74 25 29 3a 42 25  |"f",current%):B%|
00005560  3d a4 61 64 64 72 28 22  66 22 2c 64 72 61 67 66  |=.addr("f",dragf|
00005570  72 6f 6d 25 29 3a 21 71  25 3d 73 61 76 65 68 61  |rom%):!q%=saveha|
00005580  6e 64 25 3a 66 3d 33 0d  1c ca 10 e3 20 71 25 21  |nd%:f=3..... q%!|
00005590  34 3d 34 20 b8 20 36 0d  1c d4 28 20 c8 99 20 67  |4=4 . 6...( .. g|
000055a0  65 74 69 63 2c 2c 71 25  3a e7 20 71 25 21 32 34  |etic,,q%:. q%!24|
000055b0  20 80 20 31 3c 3c 32 31  3a 66 3d 71 25 21 34 0d  | . 1<<21:f=q%!4.|
000055c0  1c de 05 ed 0d 1c e8 1a  6e 25 3d a4 61 64 64 72  |........n%=.addr|
000055d0  28 22 66 22 2c 63 75 72  72 65 6e 74 25 29 0d 1c  |("f",current%)..|
000055e0  f2 0a c8 8e 20 66 20 ca  0d 1c fc 24 c9 20 33 3a  |.... f ....$. 3:|
000055f0  e3 20 6e 25 3d 33 32 20  b8 20 32 35 35 20 88 20  |. n%=32 . 255 . |
00005600  34 3a 6e 25 21 62 75 66  3d b9 3a ed 0d 1d 06 21  |4:n%!buf=.:....!|
00005610  c9 20 34 3a 24 71 25 3d  22 80 2d ff 22 3a e7 20  |. 4:$q%=".-.":. |
00005620  a4 73 61 76 65 63 68 72  73 28 71 25 29 0d 1d 10  |.savechrs(q%)...|
00005630  21 c9 20 35 3a 24 71 25  3d 22 20 2d 7e 22 3a e7  |!. 5:$q%=" -~":.|
00005640  20 a4 73 61 76 65 63 68  72 73 28 71 25 29 0d 1d  | .savechrs(q%)..|
00005650  1a 1d c9 20 36 3a e7 20  a4 73 61 76 65 63 68 72  |... 6:. .savechr|
00005660  73 28 73 61 76 65 63 68  72 73 29 0d 1d 24 05 cb  |s(savechrs)..$..|
00005670  0d 1d 2e 11 e3 20 6e 25  3d 33 32 20 b8 20 32 35  |..... n%=32 . 25|
00005680  35 0d 1d 38 29 20 e7 20  6e 25 3f 62 75 66 3a 21  |5..8) . n%?buf:!|
00005690  41 25 3d 21 42 25 3a 41  25 21 34 3d 42 25 21 34  |A%=!B%:A%!4=B%!4|
000056a0  3a 41 25 21 36 3d 42 25  21 36 0d 1d 42 12 20 41  |:A%!6=B%!6..B. A|
000056b0  25 2b 3d 31 30 3a 42 25  2b 3d 31 30 0d 1d 4c 05  |%+=10:B%+=10..L.|
000056c0  ed 0d 1d 56 32 21 71 25  3d 68 61 6e 64 6c 65 25  |...V2!q%=handle%|
000056d0  28 63 75 72 72 65 6e 74  25 29 3a c8 99 20 67 65  |(current%):.. ge|
000056e0  74 77 2c 2c 71 25 3a c8  99 20 6f 70 65 6e 77 2c  |tw,,q%:.. openw,|
000056f0  2c 71 25 0d 1d 60 25 c8  99 20 22 57 69 6d 70 5f  |,q%..`%.. "Wimp_|
00005700  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
00005710  22 2c 21 71 25 2c 2d 31  0d 1d 6a 0c e7 20 57 25  |",!q%,-1..j.. W%|
00005720  3c 30 20 8c 0d 1d 74 43  20 24 28 a4 61 64 64 72  |<0 ...tC $(.addr|
00005730  28 22 6e 22 2c 63 75 72  72 65 6e 74 25 29 2b 34  |("n",current%)+4|
00005740  29 3d a4 6c 6f 6f 6b 75  70 28 22 44 65 66 61 75  |)=.lookup("Defau|
00005750  6c 74 22 29 3a f2 73 68  6f 77 75 70 28 36 35 29  |lt"):.showup(65)|
00005760  3a 3f 41 25 3d 36 35 0d  1d 7e 2c 20 f2 67 72 61  |:?A%=65..~, .gra|
00005770  62 28 36 35 29 3a f2 72  65 70 6c 6f 74 6d 61 70  |b(65):.replotmap|
00005780  3a f2 72 65 64 72 61 77  69 63 6f 6e 28 21 71 25  |:.redrawicon(!q%|
00005790  2c 30 29 0d 1d 88 05 cd  0d 1d 92 44 f2 63 68 61  |,0)........D.cha|
000057a0  6e 67 65 64 28 63 75 72  72 65 6e 74 25 2c b9 29  |nged(current%,.)|
000057b0  3a f2 72 65 70 6c 6f 74  63 68 72 28 33 32 2c 32  |:.replotchr(32,2|
000057c0  35 35 29 3a c8 99 20 77  61 69 74 6f 66 66 3a c8  |55):.. waitoff:.|
000057d0  99 20 63 72 6d 65 6e 75  2c 2c 2d 31 0d 1d 9c 05  |. crmenu,,-1....|
000057e0  e1 0d 1d a6 05 3a 0d 1d  b0 0d dd 20 a4 6e 6f 6c  |.....:..... .nol|
000057f0  6f 61 64 0d 1d ba 08 ea  20 41 25 0d 1d c4 0b e7  |oad..... A%.....|
00005800  20 9f 3d 31 20 8c 0d 1d  ce 1a 20 f2 74 65 6c 6c  | .=1 ..... .tell|
00005810  74 68 65 6d 6f 66 66 28  f6 24 29 3a 41 25 3d a3  |themoff(.$):A%=.|
00005820  0d 1d d8 1b cc 20 41 25  3d a4 74 65 6c 6c 74 68  |..... A%=.tellth|
00005830  65 6d 6f 66 66 28 f6 24  2c a3 29 0d 1d e2 05 cd  |emoff(.$,.).....|
00005840  0d 1d ec 07 3d 41 25 0d  1d f6 05 3a 0d 1e 00 11  |....=A%....:....|
00005850  dd 20 a4 73 61 76 65 6f  6c 64 28 66 29 0d 1e 0a  |. .saveold(f)...|
00005860  14 ea 20 6e 25 3a 64 65  6c 65 74 65 25 3d 66 3d  |.. n%:delete%=f=|
00005870  a3 0d 1e 14 09 e7 20 66  20 8c 0d 1e 1e 13 20 66  |...... f ..... f|
00005880  3d a4 63 68 61 6e 67 65  64 28 2d 31 29 0d 1e 28  |=.changed(-1)..(|
00005890  47 20 e7 20 66 3d 31 3a  24 74 65 78 74 3d a4 6c  |G . f=1:$text=.l|
000058a0  6f 6f 6b 75 70 28 22 46  6f 6e 74 51 75 69 74 31  |ookup("FontQuit1|
000058b0  22 29 3a 8b 20 24 74 65  78 74 3d a4 6c 6f 6f 6b  |"):. $text=.look|
000058c0  75 70 66 28 22 46 6f 6e  74 51 75 69 74 4e 22 2c  |upf("FontQuitN",|
000058d0  c3 20 66 29 0d 1e 32 34  cc 20 66 3d a4 63 68 61  |. f)..24. f=.cha|
000058e0  6e 67 65 64 28 63 75 72  72 65 6e 74 25 29 3a 24  |nged(current%):$|
000058f0  74 65 78 74 3d a4 6c 6f  6f 6b 75 70 28 22 46 6f  |text=.lookup("Fo|
00005900  6e 74 44 75 6d 70 22 29  0d 1e 3c 05 cd 0d 1e 46  |ntDump")..<....F|
00005910  11 c8 99 20 67 65 74 70  74 72 2c 2c 71 25 0d 1e  |... getptr,,q%..|
00005920  50 09 e7 20 66 20 8c 0d  1e 5a 37 20 c8 99 20 6d  |P.. f ...Z7 .. m|
00005930  76 61 72 2c 2d 31 2c 31  31 20 b8 20 2c 2c 78 25  |var,-1,11 . ,,x%|
00005940  3a c8 99 20 6d 76 61 72  2c 2d 31 2c 34 20 b8 20  |:.. mvar,-1,4 . |
00005950  2c 2c 6e 25 3a 78 25 3d  78 25 3c 3c 6e 25 0d 1e  |,,n%:x%=x%<<n%..|
00005960  64 37 20 c8 99 20 6d 76  61 72 2c 2d 31 2c 31 32  |d7 .. mvar,-1,12|
00005970  20 b8 20 2c 2c 79 25 3a  c8 99 20 6d 76 61 72 2c  | . ,,y%:.. mvar,|
00005980  2d 31 2c 35 20 b8 20 2c  2c 6e 25 3a 79 25 3d 79  |-1,5 . ,,n%:y%=y|
00005990  25 3c 3c 6e 25 0d 1e 6e  34 20 c8 99 20 63 72 6d  |%<<n%..n4 .. crm|
000059a0  65 6e 75 2c 2c 75 6e 73  61 76 65 64 68 61 6e 64  |enu,,unsavedhand|
000059b0  25 2c 78 25 2f 32 2d 33  37 30 2c 79 25 2f 32 2b  |%,x%/2-370,y%/2+|
000059c0  31 36 30 20 b8 20 2c 6e  25 0d 1e 78 05 cd 0d 1e  |160 . ,n%..x....|
000059d0  82 0a 3d 28 66 3d 30 29  0d 1e 8c 05 3a 0d 1e 96  |..=(f=0)....:...|
000059e0  1c dd 20 f2 74 65 6c 6c  74 68 65 6d 6f 66 66 28  |.. .tellthemoff(|
000059f0  24 28 62 75 66 2b 34 29  29 0d 1e a0 2e 21 62 75  |$(buf+4))....!bu|
00005a00  66 3d 30 3a c8 99 20 22  57 69 6d 70 5f 52 65 70  |f=0:.. "Wimp_Rep|
00005a10  6f 72 74 45 72 72 6f 72  22 2c 62 75 66 2c 31 2c  |ortError",buf,1,|
00005a20  22 43 68 72 45 64 22 0d  1e aa 05 e1 0d 1e b4 05  |"ChrEd".........|
00005a30  3a 0d 1e be 1e dd 20 a4  74 65 6c 6c 74 68 65 6d  |:..... .tellthem|
00005a40  6f 66 66 28 24 28 62 75  66 2b 34 29 2c 66 29 0d  |off($(buf+4),f).|
00005a50  1e c8 3d 21 62 75 66 3d  30 3a c8 99 20 22 57 69  |..=!buf=0:.. "Wi|
00005a60  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
00005a70  62 75 66 2c 33 2b 28 66  20 80 20 31 32 38 29 2c  |buf,3+(f . 128),|
00005a80  22 43 68 72 45 64 22 20  b8 20 2c 66 0d 1e d2 08  |"ChrEd" . ,f....|
00005a90  3d 66 2d 31 0d 1e dc 05  3a 0d 1e e6 0d dd 20 f2  |=f-1....:..... .|
00005aa0  65 72 72 62 6f 78 0d 1e  f0 2b ea 20 77 68 61 74  |errbox...+. what|
00005ab0  25 3a c8 99 20 22 57 69  6d 70 5f 44 72 61 67 42  |%:.. "Wimp_DragB|
00005ac0  6f 78 22 2c 2c 2d 31 3a  c8 99 20 26 36 32 34 30  |ox",,-1:.. &6240|
00005ad0  31 0d 1e fa 2f 21 62 75  66 3d 9f 3a 24 28 62 75  |1.../!buf=.:$(bu|
00005ae0  66 2b 34 29 3d f6 24 2b  22 20 28 61 74 20 6c 69  |f+4)=.$+" (at li|
00005af0  6e 65 20 22 2b c3 20 9e  2b 22 29 22 2b bd 20 30  |ne "+. .+")"+. 0|
00005b00  0d 1f 04 30 c8 99 20 22  57 69 6d 70 5f 52 65 70  |...0.. "Wimp_Rep|
00005b10  6f 72 74 45 72 72 6f 72  22 2c 62 75 66 2c 33 2c  |ortError",buf,3,|
00005b20  22 43 68 72 45 64 22 20  b8 20 2c 77 68 61 74 25  |"ChrEd" . ,what%|
00005b30  0d 1f 0e 1b e7 20 77 68  61 74 25 3d 32 3a 65 6e  |..... what%=2:en|
00005b40  64 25 3d b9 3a 72 73 74  25 3d a3 0d 1f 18 05 e1  |d%=.:rst%=......|
00005b50  0d 1f 22 05 3a 0d 1f 2c  10 dd 20 f2 69 6e 69 74  |..".:..,.. .init|
00005b60  66 6c 61 67 73 0d 1f 36  34 de 20 62 69 74 25 20  |flags..64. bit% |
00005b70  38 2c 75 6e 64 6f 20 31  36 2c 6d 63 25 20 31 30  |8,undo 16,mc% 10|
00005b80  32 34 2c 74 65 6d 70 62  75 66 25 20 32 32 34 30  |24,tempbuf% 2240|
00005b90  3a 66 69 6c 65 73 25 3d  30 0d 1f 40 12 e3 20 63  |:files%=0..@.. c|
00005ba0  25 3d 30 20 b8 20 32 20  88 20 32 0d 1f 4a 0a 50  |%=0 . 2 . 2..J.P|
00005bb0  25 3d 6d 63 25 0d 1f 54  0b 5b 4f 50 54 20 63 25  |%=mc%..T.[OPT c%|
00005bc0  0d 1f 5e 20 2e 66 6c 69  70 78 20 54 45 51 20 31  |..^ .flipx TEQ 1|
00005bd0  2c 23 30 3a 4d 4f 56 4e  45 20 31 2c 23 32 32 33  |,#0:MOVNE 1,#223|
00005be0  0d 1f 68 14 2e 66 6c 69  70 78 30 20 4d 4f 56 20  |..h..flipx0 MOV |
00005bf0  34 2c 23 38 0d 1f 72 4a  2e 66 6c 69 70 78 31 20  |4,#8..rJ.flipx1 |
00005c00  4c 44 52 42 20 32 2c 5b  30 5d 3a 4d 4f 56 53 20  |LDRB 2,[0]:MOVS |
00005c10  32 2c 32 2c 4c 53 52 20  23 31 3a 41 44 43 20 33  |2,2,LSR #1:ADC 3|
00005c20  2c 33 2c 33 3a 4d 4f 56  53 20 32 2c 32 2c 4c 53  |,3,3:MOVS 2,2,LS|
00005c30  52 20 23 31 3a 41 44 43  20 33 2c 33 2c 33 0d 1f  |R #1:ADC 3,3,3..|
00005c40  7c 47 4d 4f 56 53 20 32  2c 32 2c 4c 53 52 20 23  ||GMOVS 2,2,LSR #|
00005c50  31 3a 41 44 43 20 33 2c  33 2c 33 3a 4d 4f 56 53  |1:ADC 3,3,3:MOVS|
00005c60  20 32 2c 32 2c 4c 53 52  20 23 31 3a 41 44 43 20  | 2,2,LSR #1:ADC |
00005c70  33 2c 33 2c 33 3a 4d 4f  56 53 20 32 2c 32 2c 4c  |3,3,3:MOVS 2,2,L|
00005c80  53 52 20 23 31 0d 1f 86  41 41 44 43 20 33 2c 33  |SR #1...AADC 3,3|
00005c90  2c 33 3a 4d 4f 56 53 20  32 2c 32 2c 4c 53 52 20  |,3:MOVS 2,2,LSR |
00005ca0  23 31 3a 41 44 43 20 33  2c 33 2c 33 3a 4d 4f 56  |#1:ADC 3,3,3:MOV|
00005cb0  53 20 32 2c 32 2c 4c 53  52 20 23 31 3a 41 44 43  |S 2,2,LSR #1:ADC|
00005cc0  20 33 2c 33 2c 33 0d 1f  90 4d 4d 4f 56 53 20 32  | 3,3,3...MMOVS 2|
00005cd0  2c 32 2c 4c 53 52 20 23  31 3a 41 44 43 20 33 2c  |,2,LSR #1:ADC 3,|
00005ce0  33 2c 33 3a 53 54 52 42  20 33 2c 5b 30 5d 2c 23  |3,3:STRB 3,[0],#|
00005cf0  31 3a 53 55 42 53 20 34  2c 34 2c 23 31 3a 42 4e  |1:SUBS 4,4,#1:BN|
00005d00  45 20 66 6c 69 70 78 31  3a 41 44 44 20 30 2c 30  |E flipx1:ADD 0,0|
00005d10  2c 23 32 0d 1f 9a 24 53  55 42 53 20 31 2c 31 2c  |,#2...$SUBS 1,1,|
00005d20  23 31 3a 42 50 4c 20 66  6c 69 70 78 30 3a 4d 4f  |#1:BPL flipx0:MO|
00005d30  56 20 50 43 2c 31 34 0d  1f a4 05 3a 0d 1f ae 2b  |V PC,14....:...+|
00005d40  2e 66 6c 69 70 79 20 54  45 51 20 31 2c 23 30 3a  |.flipy TEQ 1,#0:|
00005d50  4d 4f 56 4e 45 20 31 2c  23 32 32 33 3a 41 44 44  |MOVNE 1,#223:ADD|
00005d60  20 34 2c 30 2c 23 37 0d  1f b8 49 2e 66 6c 69 70  | 4,0,#7...I.flip|
00005d70  79 30 20 4c 44 52 42 20  32 2c 5b 30 5d 3a 4c 44  |y0 LDRB 2,[0]:LD|
00005d80  52 42 20 33 2c 5b 34 5d  3a 53 54 52 42 20 33 2c  |RB 3,[4]:STRB 3,|
00005d90  5b 30 5d 2c 23 31 3a 53  54 52 42 20 32 2c 5b 34  |[0],#1:STRB 2,[4|
00005da0  5d 2c 23 2d 31 3a 4c 44  52 42 20 32 2c 5b 30 5d  |],#-1:LDRB 2,[0]|
00005db0  0d 1f c2 4f 4c 44 52 42  20 33 2c 5b 34 5d 3a 53  |...OLDRB 3,[4]:S|
00005dc0  54 52 42 20 33 2c 5b 30  5d 2c 23 31 3a 53 54 52  |TRB 3,[0],#1:STR|
00005dd0  42 20 32 2c 5b 34 5d 2c  23 2d 31 3a 4c 44 52 42  |B 2,[4],#-1:LDRB|
00005de0  20 32 2c 5b 30 5d 3a 4c  44 52 42 20 33 2c 5b 34  | 2,[0]:LDRB 3,[4|
00005df0  5d 3a 53 54 52 42 20 33  2c 5b 30 5d 2c 23 31 0d  |]:STRB 3,[0],#1.|
00005e00  1f cc 45 53 54 52 42 20  32 2c 5b 34 5d 2c 23 2d  |..ESTRB 2,[4],#-|
00005e10  31 3a 4c 44 52 42 20 32  2c 5b 30 5d 3a 4c 44 52  |1:LDRB 2,[0]:LDR|
00005e20  42 20 33 2c 5b 34 5d 3a  53 54 52 42 20 33 2c 5b  |B 3,[4]:STRB 3,[|
00005e30  30 5d 2c 23 37 3a 53 54  52 42 20 32 2c 5b 34 5d  |0],#7:STRB 2,[4]|
00005e40  2c 23 31 33 0d 1f d6 24  53 55 42 53 20 31 2c 31  |,#13...$SUBS 1,1|
00005e50  2c 23 31 3a 42 50 4c 20  66 6c 69 70 79 30 3a 4d  |,#1:BPL flipy0:M|
00005e60  4f 56 20 50 43 2c 31 34  0d 1f e0 05 3a 0d 1f ea  |OV PC,14....:...|
00005e70  2d 2e 72 6f 74 61 74 65  63 20 54 45 51 20 31 2c  |-.rotatec TEQ 1,|
00005e80  23 30 3a 4d 4f 56 4e 45  20 31 2c 23 32 32 33 3a  |#0:MOVNE 1,#223:|
00005e90  41 44 52 20 32 2c 74 65  6d 70 0d 1f f4 1d 2e 72  |ADR 2,temp.....r|
00005ea0  63 6c 6f 6f 70 20 4d 4f  56 20 33 2c 23 37 3a 4d  |cloop MOV 3,#7:M|
00005eb0  4f 56 20 37 2c 23 31 0d  1f fe 28 2e 63 78 6c 6f  |OV 7,#1...(.cxlo|
00005ec0  6f 70 20 4d 4f 56 20 34  2c 23 37 3a 4d 4f 56 20  |op MOV 4,#7:MOV |
00005ed0  35 2c 23 30 3a 4d 4f 56  20 36 2c 23 31 32 38 0d  |5,#0:MOV 6,#128.|
00005ee0  20 08 47 2e 63 79 6c 6f  6f 70 20 4c 44 52 42 20  | .G.cyloop LDRB |
00005ef0  38 2c 5b 30 2c 34 5d 3a  80 53 20 38 2c 38 2c 37  |8,[0,4]:.S 8,8,7|
00005f00  3a 84 52 4e 45 20 35 2c  35 2c 36 3a 4d 4f 56 20  |:.RNE 5,5,6:MOV |
00005f10  36 2c 36 2c 4c 53 52 20  23 31 3a 53 55 42 53 20  |6,6,LSR #1:SUBS |
00005f20  34 2c 34 2c 23 31 0d 20  12 4c 42 50 4c 20 63 79  |4,4,#1. .LBPL cy|
00005f30  6c 6f 6f 70 3a 53 54 52  42 20 35 2c 5b 32 2c 33  |loop:STRB 5,[2,3|
00005f40  5d 3a 4d 4f 56 20 37 2c  37 2c 4c 53 4c 20 23 31  |]:MOV 7,7,LSL #1|
00005f50  3a 53 55 42 53 20 33 2c  33 2c 23 31 3a 42 50 4c  |:SUBS 3,3,#1:BPL|
00005f60  20 63 78 6c 6f 6f 70 3a  4c 44 52 42 20 34 2c 5b  | cxloop:LDRB 4,[|
00005f70  32 5d 0d 20 1c 49 53 54  52 42 20 34 2c 5b 30 5d  |2]. .ISTRB 4,[0]|
00005f80  2c 23 31 3a 4c 44 52 42  20 34 2c 5b 32 2c 23 31  |,#1:LDRB 4,[2,#1|
00005f90  5d 3a 53 54 52 42 20 34  2c 5b 30 5d 2c 23 31 3a  |]:STRB 4,[0],#1:|
00005fa0  4c 44 52 42 20 34 2c 5b  32 2c 23 32 5d 3a 53 54  |LDRB 4,[2,#2]:ST|
00005fb0  52 42 20 34 2c 5b 30 5d  2c 23 31 0d 20 26 49 4c  |RB 4,[0],#1. &IL|
00005fc0  44 52 42 20 34 2c 5b 32  2c 23 33 5d 3a 53 54 52  |DRB 4,[2,#3]:STR|
00005fd0  42 20 34 2c 5b 30 5d 2c  23 31 3a 4c 44 52 42 20  |B 4,[0],#1:LDRB |
00005fe0  34 2c 5b 32 2c 23 34 5d  3a 53 54 52 42 20 34 2c  |4,[2,#4]:STRB 4,|
00005ff0  5b 30 5d 2c 23 31 3a 4c  44 52 42 20 34 2c 5b 32  |[0],#1:LDRB 4,[2|
00006000  2c 23 35 5d 0d 20 30 49  53 54 52 42 20 34 2c 5b  |,#5]. 0ISTRB 4,[|
00006010  30 5d 2c 23 31 3a 4c 44  52 42 20 34 2c 5b 32 2c  |0],#1:LDRB 4,[2,|
00006020  23 36 5d 3a 53 54 52 42  20 34 2c 5b 30 5d 2c 23  |#6]:STRB 4,[0],#|
00006030  31 3a 4c 44 52 42 20 34  2c 5b 32 2c 23 37 5d 3a  |1:LDRB 4,[2,#7]:|
00006040  53 54 52 42 20 34 2c 5b  30 5d 2c 23 33 0d 20 3a  |STRB 4,[0],#3. :|
00006050  24 53 55 42 53 20 31 2c  31 2c 23 31 3a 42 50 4c  |$SUBS 1,1,#1:BPL|
00006060  20 72 63 6c 6f 6f 70 3a  4d 4f 56 20 50 43 2c 31  | rcloop:MOV PC,1|
00006070  34 0d 20 44 05 3a 0d 20  4e 17 2e 74 65 6d 70 20  |4. D.:. N..temp |
00006080  45 51 55 44 20 30 3a 45  51 55 44 20 30 0d 20 58  |EQUD 0:EQUD 0. X|
00006090  05 3a 0d 20 62 2d 2e 72  6f 74 61 74 65 61 20 54  |.:. b-.rotatea T|
000060a0  45 51 20 31 2c 23 30 3a  4d 4f 56 4e 45 20 31 2c  |EQ 1,#0:MOVNE 1,|
000060b0  23 32 32 33 3a 41 44 52  20 32 2c 74 65 6d 70 0d  |#223:ADR 2,temp.|
000060c0  20 6c 1f 2e 72 61 6c 6f  6f 70 20 4d 4f 56 20 33  | l..raloop MOV 3|
000060d0  2c 23 37 3a 4d 4f 56 20  36 2c 23 31 32 38 0d 20  |,#7:MOV 6,#128. |
000060e0  76 26 2e 61 78 6c 6f 6f  70 20 4d 4f 56 20 34 2c  |v&.axloop MOV 4,|
000060f0  23 37 3a 4d 4f 56 20 35  2c 23 30 3a 4d 4f 56 20  |#7:MOV 5,#0:MOV |
00006100  37 2c 23 31 0d 20 80 47  2e 61 79 6c 6f 6f 70 20  |7,#1. .G.ayloop |
00006110  4c 44 52 42 20 38 2c 5b  30 2c 34 5d 3a 80 53 20  |LDRB 8,[0,4]:.S |
00006120  38 2c 38 2c 36 3a 84 52  4e 45 20 35 2c 35 2c 37  |8,8,6:.RNE 5,5,7|
00006130  3a 4d 4f 56 20 37 2c 37  2c 4c 53 4c 20 23 31 3a  |:MOV 7,7,LSL #1:|
00006140  53 55 42 53 20 34 2c 34  2c 23 31 0d 20 8a 4c 42  |SUBS 4,4,#1. .LB|
00006150  50 4c 20 61 79 6c 6f 6f  70 3a 53 54 52 42 20 35  |PL ayloop:STRB 5|
00006160  2c 5b 32 2c 33 5d 3a 4d  4f 56 20 36 2c 36 2c 4c  |,[2,3]:MOV 6,6,L|
00006170  53 52 20 23 31 3a 53 55  42 53 20 33 2c 33 2c 23  |SR #1:SUBS 3,3,#|
00006180  31 3a 42 50 4c 20 61 78  6c 6f 6f 70 3a 4c 44 52  |1:BPL axloop:LDR|
00006190  42 20 34 2c 5b 32 5d 0d  20 94 49 53 54 52 42 20  |B 4,[2]. .ISTRB |
000061a0  34 2c 5b 30 5d 2c 23 31  3a 4c 44 52 42 20 34 2c  |4,[0],#1:LDRB 4,|
000061b0  5b 32 2c 23 31 5d 3a 53  54 52 42 20 34 2c 5b 30  |[2,#1]:STRB 4,[0|
000061c0  5d 2c 23 31 3a 4c 44 52  42 20 34 2c 5b 32 2c 23  |],#1:LDRB 4,[2,#|
000061d0  32 5d 3a 53 54 52 42 20  34 2c 5b 30 5d 2c 23 31  |2]:STRB 4,[0],#1|
000061e0  0d 20 9e 49 4c 44 52 42  20 34 2c 5b 32 2c 23 33  |. .ILDRB 4,[2,#3|
000061f0  5d 3a 53 54 52 42 20 34  2c 5b 30 5d 2c 23 31 3a  |]:STRB 4,[0],#1:|
00006200  4c 44 52 42 20 34 2c 5b  32 2c 23 34 5d 3a 53 54  |LDRB 4,[2,#4]:ST|
00006210  52 42 20 34 2c 5b 30 5d  2c 23 31 3a 4c 44 52 42  |RB 4,[0],#1:LDRB|
00006220  20 34 2c 5b 32 2c 23 35  5d 0d 20 a8 49 53 54 52  | 4,[2,#5]. .ISTR|
00006230  42 20 34 2c 5b 30 5d 2c  23 31 3a 4c 44 52 42 20  |B 4,[0],#1:LDRB |
00006240  34 2c 5b 32 2c 23 36 5d  3a 53 54 52 42 20 34 2c  |4,[2,#6]:STRB 4,|
00006250  5b 30 5d 2c 23 31 3a 4c  44 52 42 20 34 2c 5b 32  |[0],#1:LDRB 4,[2|
00006260  2c 23 37 5d 3a 53 54 52  42 20 34 2c 5b 30 5d 2c  |,#7]:STRB 4,[0],|
00006270  23 33 0d 20 b2 24 53 55  42 53 20 31 2c 31 2c 23  |#3. .$SUBS 1,1,#|
00006280  31 3a 42 50 4c 20 72 61  6c 6f 6f 70 3a 4d 4f 56  |1:BPL raloop:MOV|
00006290  20 50 43 2c 31 34 0d 20  bc 05 3a 0d 20 c6 21 2e  | PC,14. ..:. .!.|
000062a0  69 6e 76 65 72 74 20 54  45 51 20 31 2c 23 30 3a  |invert TEQ 1,#0:|
000062b0  4d 4f 56 4e 45 20 31 2c  23 32 32 33 0d 20 d0 44  |MOVNE 1,#223. .D|
000062c0  2e 69 6e 76 65 72 74 30  20 4d 4f 56 20 34 2c 23  |.invert0 MOV 4,#|
000062d0  38 3a 4c 44 52 42 20 32  2c 5b 30 5d 3a 82 20 32  |8:LDRB 2,[0]:. 2|
000062e0  2c 32 2c 23 32 35 35 3a  53 54 52 42 20 32 2c 5b  |,2,#255:STRB 2,[|
000062f0  30 5d 2c 23 31 3a 4c 44  52 42 20 32 2c 5b 30 5d  |0],#1:LDRB 2,[0]|
00006300  0d 20 da 4b 82 20 32 2c  32 2c 23 32 35 35 3a 53  |. .K. 2,2,#255:S|
00006310  54 52 42 20 32 2c 5b 30  5d 2c 23 31 3a 4c 44 52  |TRB 2,[0],#1:LDR|
00006320  42 20 32 2c 5b 30 5d 3a  82 20 32 2c 32 2c 23 32  |B 2,[0]:. 2,2,#2|
00006330  35 35 3a 53 54 52 42 20  32 2c 5b 30 5d 2c 23 31  |55:STRB 2,[0],#1|
00006340  3a 4c 44 52 42 20 32 2c  5b 30 5d 0d 20 e4 4b 82  |:LDRB 2,[0]. .K.|
00006350  20 32 2c 32 2c 23 32 35  35 3a 53 54 52 42 20 32  | 2,2,#255:STRB 2|
00006360  2c 5b 30 5d 2c 23 31 3a  4c 44 52 42 20 32 2c 5b  |,[0],#1:LDRB 2,[|
00006370  30 5d 3a 82 20 32 2c 32  2c 23 32 35 35 3a 53 54  |0]:. 2,2,#255:ST|
00006380  52 42 20 32 2c 5b 30 5d  2c 23 31 3a 4c 44 52 42  |RB 2,[0],#1:LDRB|
00006390  20 32 2c 5b 30 5d 0d 20  ee 4b 82 20 32 2c 32 2c  | 2,[0]. .K. 2,2,|
000063a0  23 32 35 35 3a 53 54 52  42 20 32 2c 5b 30 5d 2c  |#255:STRB 2,[0],|
000063b0  23 31 3a 4c 44 52 42 20  32 2c 5b 30 5d 3a 82 20  |#1:LDRB 2,[0]:. |
000063c0  32 2c 32 2c 23 32 35 35  3a 53 54 52 42 20 32 2c  |2,2,#255:STRB 2,|
000063d0  5b 30 5d 2c 23 31 3a 4c  44 52 42 20 32 2c 5b 30  |[0],#1:LDRB 2,[0|
000063e0  5d 0d 20 f8 3e 82 20 32  2c 32 2c 23 32 35 35 3a  |]. .>. 2,2,#255:|
000063f0  53 54 52 42 20 32 2c 5b  30 5d 2c 23 33 3a 53 55  |STRB 2,[0],#3:SU|
00006400  42 53 20 31 2c 31 2c 23  31 3a 42 50 4c 20 69 6e  |BS 1,1,#1:BPL in|
00006410  76 65 72 74 30 3a 4d 4f  56 20 50 43 2c 31 34 0d  |vert0:MOV PC,14.|
00006420  21 02 05 3a 0d 21 0c 29  2e 63 6c 65 61 72 20 54  |!..:.!.).clear T|
00006430  45 51 20 31 2c 23 30 3a  4d 4f 56 4e 45 20 31 2c  |EQ 1,#0:MOVNE 1,|
00006440  23 32 32 33 3a 4d 4f 56  20 32 2c 23 30 0d 21 16  |#223:MOV 2,#0.!.|
00006450  43 2e 63 6c 65 61 72 30  20 53 54 52 42 20 32 2c  |C.clear0 STRB 2,|
00006460  5b 30 5d 2c 23 31 3a 53  54 52 42 20 32 2c 5b 30  |[0],#1:STRB 2,[0|
00006470  5d 2c 23 31 3a 53 54 52  42 20 32 2c 5b 30 5d 2c  |],#1:STRB 2,[0],|
00006480  23 31 3a 53 54 52 42 20  32 2c 5b 30 5d 2c 23 31  |#1:STRB 2,[0],#1|
00006490  0d 21 20 47 53 54 52 42  20 32 2c 5b 30 5d 2c 23  |.! GSTRB 2,[0],#|
000064a0  31 3a 53 54 52 42 20 32  2c 5b 30 5d 2c 23 31 3a  |1:STRB 2,[0],#1:|
000064b0  53 54 52 42 20 32 2c 5b  30 5d 2c 23 31 3a 53 54  |STRB 2,[0],#1:ST|
000064c0  52 42 20 32 2c 5b 30 5d  2c 23 33 3a 53 55 42 53  |RB 2,[0],#3:SUBS|
000064d0  20 31 2c 31 2c 23 31 0d  21 2a 18 42 50 4c 20 63  | 1,1,#1.!*.BPL c|
000064e0  6c 65 61 72 30 3a 4d 4f  56 20 50 43 2c 31 34 0d  |lear0:MOV PC,14.|
000064f0  21 34 05 3a 0d 21 3e 15  2e 70 6c 6f 74 63 68 72  |!4.:.!>..plotchr|
00006500  20 4d 4f 56 20 37 2c 23  37 0d 21 48 4f 2e 70 6c  | MOV 7,#7.!HO.pl|
00006510  6f 74 63 68 72 31 20 53  57 49 20 32 35 36 2b 32  |otchr1 SWI 256+2|
00006520  33 3a 53 57 49 20 32 35  36 2b 36 3a 4c 44 52 42  |3:SWI 256+6:LDRB|
00006530  20 30 2c 5b 33 2c 37 5d  3a 53 57 49 20 22 4f 53  | 0,[3,7]:SWI "OS|
00006540  5f 57 72 69 74 65 43 22  3a 53 57 49 20 32 35 36  |_WriteC":SWI 256|
00006550  3a 53 57 49 20 32 35 36  0d 21 52 4d 53 57 49 20  |:SWI 256.!RMSWI |
00006560  32 35 36 3a 53 57 49 20  32 35 36 3a 53 57 49 20  |256:SWI 256:SWI |
*
00006580  32 35 36 3a 4d 4f 56 20  30 2c 23 34 3a 4d 4f 56  |256:MOV 0,#4:MOV|
00006590  20 31 2c 34 3a 53 55 42  20 32 2c 35 2c 37 2c 4c  | 1,4:SUB 2,5,7,L|
000065a0  53 4c 20 23 32 0d 21 5c  48 53 57 49 20 22 4f 53  |SL #2.!\HSWI "OS|
000065b0  5f 50 6c 6f 74 22 3a 4d  4f 56 20 30 2c 23 31 37  |_Plot":MOV 0,#17|
000065c0  3a 4d 4f 56 20 31 2c 23  31 35 3a 4d 4f 56 20 32  |:MOV 1,#15:MOV 2|
000065d0  2c 23 30 3a 53 57 49 20  22 4f 53 5f 50 6c 6f 74  |,#0:SWI "OS_Plot|
000065e0  22 3a 53 55 42 53 20 37  2c 37 2c 23 31 0d 21 66  |":SUBS 7,7,#1.!f|
000065f0  1a 42 50 4c 20 70 6c 6f  74 63 68 72 31 3a 4d 4f  |.BPL plotchr1:MO|
00006600  56 20 50 43 2c 31 34 0d  21 70 06 5d ed 0d 21 7a  |V PC,14.!p.]..!z|
00006610  40 76 61 72 24 3d c4 32  35 35 2c 22 20 22 29 3a  |@var$=.255," "):|
00006620  73 65 6c 24 3d 76 61 72  24 3a 73 65 6c 24 3d 22  |sel$=var$:sel$="|
00006630  22 3a 66 69 6c 65 24 3d  76 61 72 24 3a 66 69 6c  |":file$=var$:fil|
00006640  65 24 3d 22 22 3a 76 61  72 24 3d 22 22 0d 21 84  |e$="":var$="".!.|
00006650  50 63 75 72 72 65 6e 74  25 3d 2d 31 3a 21 62 69  |Pcurrent%=-1:!bi|
00006660  74 25 3d 26 37 45 36 36  36 36 33 43 3a 62 69 74  |t%=&7E66663C:bit|
00006670  25 21 34 3d 26 36 36 36  36 36 36 3a 75 6e 64 6f  |%!4=&666666:undo|
00006680  25 3d 30 3a 21 75 6e 64  6f 3d 21 62 69 74 25 3a  |%=0:!undo=!bit%:|
00006690  75 6e 64 6f 21 34 3d 62  69 74 25 21 34 0d 21 8e  |undo!4=bit%!4.!.|
000066a0  1f 75 6e 64 6f 21 38 3d  21 75 6e 64 6f 3a 75 6e  |.undo!8=!undo:un|
000066b0  64 6f 21 31 32 3d 75 6e  64 6f 21 34 0d 21 98 05  |do!12=undo!4.!..|
000066c0  e1 0d 21 a2 05 3a 0d 21  ac 1b dd 20 f2 74 65 78  |..!..:.!... .tex|
000066d0  74 65 6e 64 28 68 61 6e  64 25 2c 69 63 6f 6e 25  |tend(hand%,icon%|
000066e0  29 0d 21 b6 3c ea 20 69  25 3a f2 67 65 74 69 63  |).!.<. i%:.getic|
000066f0  6f 6e 69 6e 66 6f 28 68  61 6e 64 25 2c 69 63 6f  |oninfo(hand%,ico|
00006700  6e 25 29 3a c8 95 20 69  25 3f 28 69 63 6e 21 32  |n%):.. i%?(icn!2|
00006710  38 29 3e 33 31 3a 69 25  2b 3d 31 3a ce 0d 21 c0  |8)>31:i%+=1:..!.|
00006720  32 c8 99 20 22 57 69 6d  70 5f 53 65 74 43 61 72  |2.. "Wimp_SetCar|
00006730  65 74 50 6f 73 69 74 69  6f 6e 22 2c 68 61 6e 64  |etPosition",hand|
00006740  25 2c 69 63 6f 6e 25 2c  2c 2c 2d 31 2c 69 25 0d  |%,icon%,,,-1,i%.|
00006750  21 ca 05 e1 0d 21 d4 05  3a 0d 21 de 11 dd 20 f2  |!....!..:.!... .|
00006760  67 72 61 62 28 63 68 72  25 29 0d 21 e8 49 50 25  |grab(chr%).!.IP%|
00006770  3d a4 63 68 72 28 63 68  72 25 29 3a 21 75 6e 64  |=.chr(chr%):!und|
00006780  6f 3d 21 62 69 74 25 3a  75 6e 64 6f 21 34 3d 62  |o=!bit%:undo!4=b|
00006790  69 74 25 21 34 3a 75 6e  64 6f 25 3d 30 3a 21 62  |it%!4:undo%=0:!b|
000067a0  69 74 25 3d 21 50 25 3a  62 69 74 25 21 34 3d 50  |it%=!P%:bit%!4=P|
000067b0  25 21 34 0d 21 f2 05 e1  0d 21 fc 05 3a 0d 22 06  |%!4.!....!..:.".|
000067c0  12 dd 20 f2 73 74 6f 72  65 28 63 68 72 25 29 0d  |.. .store(chr%).|
000067d0  22 10 4b 50 25 3d a4 63  68 72 28 63 68 72 25 29  |".KP%=.chr(chr%)|
000067e0  3a 75 6e 64 6f 25 3d 63  68 72 25 2b 32 35 36 2a  |:undo%=chr%+256*|
000067f0  63 75 72 72 65 6e 74 25  3a 75 6e 64 6f 21 38 3d  |current%:undo!8=|
00006800  21 50 25 3a 75 6e 64 6f  21 31 32 3d 50 25 21 34  |!P%:undo!12=P%!4|
00006810  3a 21 50 25 3d 21 62 69  74 25 0d 22 1a 3a 50 25  |:!P%=!bit%.".:P%|
00006820  21 34 3d 62 69 74 25 21  34 3a f2 72 65 70 6c 6f  |!4=bit%!4:.replo|
00006830  74 63 68 72 28 63 68 72  25 2c 63 68 72 25 29 3a  |tchr(chr%,chr%):|
00006840  f2 63 68 61 6e 67 65 64  28 63 75 72 72 65 6e 74  |.changed(current|
00006850  25 2c b9 29 0d 22 24 05  e1 0d 22 2e 05 3a 0d 22  |%,.)."$..."..:."|
00006860  38 11 dd 20 f2 73 77 61  70 28 63 68 72 25 29 0d  |8.. .swap(chr%).|
00006870  22 42 2d 50 25 3d a4 63  68 72 28 63 68 72 25 29  |"B-P%=.chr(chr%)|
00006880  3a c8 94 20 21 50 25 2c  21 62 69 74 25 3a c8 94  |:.. !P%,!bit%:..|
00006890  20 50 25 21 34 2c 62 69  74 25 21 34 0d 22 4c 2e  | P%!4,bit%!4."L.|
000068a0  f2 72 65 70 6c 6f 74 63  68 72 28 63 68 72 25 2c  |.replotchr(chr%,|
000068b0  63 68 72 25 29 3a f2 63  68 61 6e 67 65 64 28 63  |chr%):.changed(c|
000068c0  75 72 72 65 6e 74 25 2c  b9 29 0d 22 56 05 e1 0d  |urrent%,.)."V...|
000068d0  22 60 05 3a 0d 22 6a 14  dd 20 f2 64 65 66 61 75  |"`.:."j.. .defau|
000068e0  6c 74 28 63 68 72 25 29  0d 22 74 41 3f 71 25 3d  |lt(chr%)."tA?q%=|
000068f0  63 68 72 25 3a c8 99 20  22 4f 53 5f 57 6f 72 64  |chr%:.. "OS_Word|
00006900  22 2c 31 30 2c 71 25 3a  21 75 6e 64 6f 3d 21 62  |",10,q%:!undo=!b|
00006910  69 74 25 3a 75 6e 64 6f  21 34 3d 62 69 74 25 21  |it%:undo!4=bit%!|
00006920  34 3a 75 6e 64 6f 25 3d  30 0d 22 7e 1a 21 62 69  |4:undo%=0."~.!bi|
00006930  74 25 3d 71 25 21 31 3a  62 69 74 25 21 34 3d 71  |t%=q%!1:bit%!4=q|
00006940  25 21 35 0d 22 88 05 e1  0d 22 92 05 3a 0d 22 9c  |%!5."...."..:.".|
00006950  12 dd 20 f2 63 6c 65 61  72 28 63 68 72 25 29 0d  |.. .clear(chr%).|
00006960  22 a6 4b 50 25 3d a4 63  68 72 28 63 68 72 25 29  |".KP%=.chr(chr%)|
00006970  3a 21 75 6e 64 6f 3d 21  62 69 74 25 3a 75 6e 64  |:!undo=!bit%:und|
00006980  6f 21 34 3d 62 69 74 25  21 34 3a 75 6e 64 6f 25  |o!4=bit%!4:undo%|
00006990  3d 30 3a 21 50 25 3d 30  3a 50 25 21 34 3d 30 3a  |=0:!P%=0:P%!4=0:|
000069a0  f2 72 65 64 72 61 77 6d  61 70 0d 22 b0 05 e1 0d  |.redrawmap."....|
000069b0  22 ba 05 3a 0d 22 c4 0b  dd 20 f2 6c 65 66 74 0d  |"..:."... .left.|
000069c0  22 ce 30 e3 20 6e 25 3d  30 20 b8 20 37 3a 6e 25  |".0. n%=0 . 7:n%|
000069d0  3f 62 69 74 25 3d 6e 25  3f 62 69 74 25 2a 32 2d  |?bit%=n%?bit%*2-|
000069e0  28 6e 25 3f 62 69 74 25  3e 31 32 37 29 3a ed 0d  |(n%?bit%>127):..|
000069f0  22 d8 05 e1 0d 22 e2 05  3a 0d 22 ec 0c dd 20 f2  |"...."..:."... .|
00006a00  72 69 67 68 74 0d 22 f6  34 e3 20 6e 25 3d 30 20  |right.".4. n%=0 |
00006a10  b8 20 37 3a 6e 25 3f 62  69 74 25 3d 6e 25 3f 62  |. 7:n%?bit%=n%?b|
00006a20  69 74 25 2f 32 2b 31 32  38 2a 28 6e 25 3f 62 69  |it%/2+128*(n%?bi|
00006a30  74 25 20 80 20 31 29 3a  ed 0d 23 00 05 e1 0d 23  |t% . 1):..#....#|
00006a40  0a 05 3a 0d 23 14 09 dd  20 f2 75 70 0d 23 1e 35  |..:.#... .up.#.5|
00006a50  66 3d 3f 62 69 74 25 3a  e3 20 6e 25 3d 30 20 b8  |f=?bit%:. n%=0 .|
00006a60  20 36 3a 6e 25 3f 62 69  74 25 3d 6e 25 3f 28 62  | 6:n%?bit%=n%?(b|
00006a70  69 74 25 2b 31 29 3a ed  3a 62 69 74 25 3f 37 3d  |it%+1):.:bit%?7=|
00006a80  66 0d 23 28 05 e1 0d 23  32 05 3a 0d 23 3c 0b dd  |f.#(...#2.:.#<..|
00006a90  20 f2 64 6f 77 6e 0d 23  46 3a 66 3d 62 69 74 25  | .down.#F:f=bit%|
00006aa0  3f 37 3a e3 20 6e 25 3d  36 20 b8 20 30 20 88 20  |?7:. n%=6 . 0 . |
00006ab0  2d 31 3a 6e 25 3f 28 62  69 74 25 2b 31 29 3d 6e  |-1:n%?(bit%+1)=n|
00006ac0  25 3f 62 69 74 25 3a ed  3a 3f 62 69 74 25 3d 66  |%?bit%:.:?bit%=f|
00006ad0  0d 23 50 05 e1 0d 23 5a  05 3a 0d 23 64 14 dd 20  |.#P...#Z.:.#d.. |
00006ae0  f2 6f 70 28 63 68 72 25  2c 24 62 75 66 29 0d 23  |.op(chr%,$buf).#|
00006af0  6e 33 50 25 3d a4 63 68  72 28 63 68 72 25 29 3a  |n3P%=.chr(chr%):|
00006b00  21 75 6e 64 6f 3d 21 62  69 74 25 3a 75 6e 64 6f  |!undo=!bit%:undo|
00006b10  21 34 3d 62 69 74 25 21  34 3a 75 6e 64 6f 25 3d  |!4=bit%!4:undo%=|
00006b20  30 0d 23 78 44 21 62 69  74 25 3d a0 20 28 22 21  |0.#xD!bit%=. ("!|
00006b30  62 69 74 25 20 22 2b 24  62 75 66 2b 22 20 21 50  |bit% "+$buf+" !P|
00006b40  25 22 29 3a 62 69 74 25  21 34 3d a0 20 28 22 62  |%"):bit%!4=. ("b|
00006b50  69 74 25 21 34 20 22 2b  24 62 75 66 2b 22 20 50  |it%!4 "+$buf+" P|
00006b60  25 21 34 22 29 0d 23 82  05 e1 0d 23 8c 05 3a 0d  |%!4").#....#..:.|
00006b70  23 96 0b dd 20 f2 75 6e  64 6f 0d 23 a0 0d e7 20  |#... .undo.#... |
00006b80  75 6e 64 6f 25 20 8c 0d  23 aa 30 20 50 25 3d a4  |undo% ..#.0 P%=.|
00006b90  61 64 64 72 28 22 66 22  2c 75 6e 64 6f 25 3e 3e  |addr("f",undo%>>|
00006ba0  38 29 2b 28 75 6e 64 6f  25 20 80 20 32 35 35 29  |8)+(undo% . 255)|
00006bb0  2a 31 30 2d 33 31 38 0d  23 b4 22 20 c8 94 20 21  |*10-318.#." .. !|
00006bc0  50 25 2c 75 6e 64 6f 21  38 3a c8 94 20 50 25 21  |P%,undo!8:.. P%!|
00006bd0  34 2c 75 6e 64 6f 21 31  32 0d 23 be 40 20 66 3d  |4,undo!12.#.@ f=|
00006be0  3f a4 61 64 64 72 28 22  6e 22 2c 63 75 72 72 65  |?.addr("n",curre|
00006bf0  6e 74 25 29 3d 28 75 6e  64 6f 25 20 80 20 32 35  |nt%)=(undo% . 25|
00006c00  35 29 20 80 20 63 75 72  72 65 6e 74 25 3d 75 6e  |5) . current%=un|
00006c10  64 6f 25 20 81 20 32 35  36 0d 23 c8 3f 20 e7 20  |do% . 256.#.? . |
00006c20  63 75 72 72 65 6e 74 25  3d 75 6e 64 6f 25 20 81  |current%=undo% .|
00006c30  20 32 35 36 3a f2 72 65  70 6c 6f 74 63 68 72 28  | 256:.replotchr(|
00006c40  75 6e 64 6f 25 20 80 20  32 35 35 2c 75 6e 64 6f  |undo% . 255,undo|
00006c50  25 20 80 20 32 35 35 29  0d 23 d2 30 cc 20 c8 94  |% . 255).#.0. ..|
00006c60  20 21 62 69 74 25 2c 21  75 6e 64 6f 3a c8 94 20  | !bit%,!undo:.. |
00006c70  62 69 74 25 21 34 2c 75  6e 64 6f 21 34 3a f2 72  |bit%!4,undo!4:.r|
00006c80  65 64 72 61 77 6d 61 70  0d 23 dc 05 cd 0d 23 e6  |edrawmap.#....#.|
00006c90  05 e1 0d 23 f0 05 3a 0d  23 fa 10 dd 20 f2 72 65  |...#..:.#... .re|
00006ca0  64 72 61 77 6d 61 70 0d  24 04 2f f2 72 65 70 6c  |drawmap.$./.repl|
00006cb0  6f 74 6d 61 70 3a f2 72  65 64 72 61 77 69 63 6f  |otmap:.redrawico|
00006cc0  6e 28 68 61 6e 64 6c 65  25 28 63 75 72 72 65 6e  |n(handle%(curren|
00006cd0  74 25 29 2c 30 29 0d 24  0e 24 f2 72 65 64 72 61  |t%),0).$.$.redra|
00006ce0  77 69 63 6f 6e 28 68 61  6e 64 6c 65 25 28 63 75  |wicon(handle%(cu|
00006cf0  72 72 65 6e 74 25 29 2c  32 29 0d 24 18 05 e1 0d  |rrent%),2).$....|
00006d00  24 22 05 3a 0d 24 2c 0b  dd 20 f2 68 65 6c 70 0d  |$".:.$,.. .help.|
00006d10  24 36 1b 57 25 3d a4 66  69 6e 64 28 71 25 21 33  |$6.W%=.find(q%!3|
00006d20  32 29 3a 24 62 75 66 3d  22 22 0d 24 40 44 e7 20  |2):$buf="".$@D. |
00006d30  57 25 3e 2d 31 3a 71 25  21 34 30 3d 68 61 6e 64  |W%>-1:q%!40=hand|
00006d40  6c 65 25 28 57 25 29 3a  71 25 21 34 34 3d 32 32  |le%(W%):q%!44=22|
00006d50  3a c8 99 20 67 65 74 69  63 2c 2c 71 25 2b 34 30  |:.. getic,,q%+40|
00006d60  3a 42 25 3d 71 25 3f 36  36 20 80 20 33 32 0d 24  |:B%=q%?66 . 32.$|
00006d70  4a 0e c8 8e 20 71 25 21  33 32 20 ca 0d 24 54 17  |J... q%!32 ..$T.|
00006d80  c9 20 2d 32 3a 24 62 75  66 3d 22 49 63 6f 6e 42  |. -2:$buf="IconB|
00006d90  61 72 22 0d 24 5e 0f c9  20 73 61 76 65 68 61 6e  |ar".$^.. savehan|
00006da0  64 25 0d 24 68 0f 20 c8  8e 20 71 25 21 33 36 20  |d%.$h. .. q%!36 |
00006db0  ca 0d 24 72 18 20 c9 20  30 3a 24 62 75 66 3d 22  |..$r. . 0:$buf="|
00006dc0  53 61 76 65 4e 61 6d 65  22 0d 24 7c 16 20 c9 20  |SaveName".$|. . |
00006dd0  31 3a 24 62 75 66 3d 22  53 61 76 65 4f 4b 22 0d  |1:$buf="SaveOK".|
00006de0  24 86 18 20 c9 20 32 3a  24 62 75 66 3d 22 53 61  |$.. . 2:$buf="Sa|
00006df0  76 65 44 72 61 67 22 0d  24 90 17 20 c9 20 33 3a  |veDrag".$.. . 3:|
00006e00  24 62 75 66 3d 22 53 61  76 65 41 6c 6c 22 0d 24  |$buf="SaveAll".$|
00006e10  9a 17 20 c9 20 34 3a 24  62 75 66 3d 22 53 61 76  |.. . 4:$buf="Sav|
00006e20  65 54 42 53 22 0d 24 a4  17 20 c9 20 35 3a 24 62  |eTBS".$.. . 5:$b|
00006e30  75 66 3d 22 53 61 76 65  54 42 43 22 0d 24 ae 17  |uf="SaveTBC".$..|
00006e40  20 c9 20 36 3a 24 62 75  66 3d 22 53 61 76 65 44  | . 6:$buf="SaveD|
00006e50  65 66 22 0d 24 b8 19 20  c9 20 37 3a 24 62 75 66  |ef".$.. . 7:$buf|
00006e60  3d 22 53 61 76 65 45 6e  74 65 72 22 0d 24 c2 1b  |="SaveEnter".$..|
00006e70  20 c9 20 38 3a 24 62 75  66 3d 22 53 61 76 65 4c  | . 8:$buf="SaveL|
00006e80  69 74 65 72 61 6c 22 0d  24 cc 19 20 c9 20 39 3a  |iteral".$.. . 9:|
00006e90  24 62 75 66 3d 22 53 61  76 65 52 61 6e 67 65 22  |$buf="SaveRange"|
00006ea0  0d 24 d6 18 20 c9 20 31  30 3a 24 62 75 66 3d 22  |.$.. . 10:$buf="|
00006eb0  53 61 76 65 48 65 78 22  0d 24 e0 18 20 c9 20 31  |SaveHex".$.. . 1|
00006ec0  31 3a 24 62 75 66 3d 22  53 61 76 65 42 61 72 22  |1:$buf="SaveBar"|
00006ed0  0d 24 ea 13 20 7f 3a 24  62 75 66 3d 22 53 61 76  |.$.. .:$buf="Sav|
00006ee0  65 57 22 0d 24 f4 06 20  cb 0d 24 fe 1b c9 20 69  |eW".$.. ..$... i|
00006ef0  6e 66 6f 68 61 6e 64 25  3a 24 62 75 66 3d 22 49  |nfohand%:$buf="I|
00006f00  6e 66 6f 22 0d 25 08 12  c9 20 75 6e 73 61 76 65  |nfo".%... unsave|
00006f10  64 68 61 6e 64 25 0d 25  12 0f 20 c8 8e 20 71 25  |dhand%.%.. .. q%|
00006f20  21 33 36 20 ca 0d 25 1c  37 20 c9 20 31 3a e7 20  |!36 ..%.7 . 1:. |
00006f30  64 65 6c 65 74 65 25 3a  24 62 75 66 3d 22 55 6e  |delete%:$buf="Un|
00006f40  73 76 44 69 73 63 61 72  64 22 3a 8b 20 24 62 75  |svDiscard":. $bu|
00006f50  66 3d 22 55 6e 73 76 51  75 69 74 22 0d 25 26 36  |f="UnsvQuit".%&6|
00006f60  20 c9 20 32 3a e7 20 64  65 6c 65 74 65 25 3a 24  | . 2:. delete%:$|
00006f70  62 75 66 3d 22 55 6e 73  76 4b 65 65 70 22 3a 8b  |buf="UnsvKeep":.|
00006f80  20 24 62 75 66 3d 22 55  6e 73 76 4e 6f 51 75 69  | $buf="UnsvNoQui|
00006f90  74 22 0d 25 30 38 20 7f  3a e7 20 64 65 6c 65 74  |t".%08 .:. delet|
00006fa0  65 25 3a 24 62 75 66 3d  22 55 6e 73 76 4c 6f 73  |e%:$buf="UnsvLos|
00006fb0  65 4f 6e 65 22 3a 8b 20  24 62 75 66 3d 22 55 6e  |eOne":. $buf="Un|
00006fc0  73 76 4c 6f 73 65 41 6c  6c 22 0d 25 3a 06 20 cb  |svLoseAll".%:. .|
00006fd0  0d 25 44 05 7f 0d 25 4e  0e 20 e7 20 57 25 3e 2d  |.%D...%N. . W%>-|
00006fe0  31 20 8c 0d 25 58 10 20  20 c8 8e 20 71 25 21 33  |1 ..%X.  .. q%!3|
00006ff0  36 20 ca 0d 25 62 19 20  20 c9 20 30 3a 24 62 75  |6 ..%b.  . 0:$bu|
00007000  66 3d 22 4d 61 69 6e 45  64 69 74 22 0d 25 6c 1b  |f="MainEdit".%l.|
00007010  20 20 c9 20 31 3a 24 62  75 66 3d 22 4d 61 69 6e  |  . 1:$buf="Main|
00007020  53 65 6c 43 68 72 22 0d  25 76 1a 20 20 c9 20 32  |SelChr".%v.  . 2|
00007030  3a 24 62 75 66 3d 22 4d  61 69 6e 53 45 64 69 74  |:$buf="MainSEdit|
00007040  22 0d 25 80 1a 20 20 c9  20 33 3a 24 62 75 66 3d  |".%..  . 3:$buf=|
00007050  22 4d 61 69 6e 46 6c 69  70 58 22 0d 25 8a 1a 20  |"MainFlipX".%.. |
00007060  20 c9 20 34 3a 24 62 75  66 3d 22 4d 61 69 6e 46  | . 4:$buf="MainF|
00007070  6c 69 70 59 22 0d 25 94  19 20 20 c9 20 35 3a 24  |lipY".%..  . 5:$|
00007080  62 75 66 3d 22 4d 61 69  6e 52 6f 74 43 22 0d 25  |buf="MainRotC".%|
00007090  9e 19 20 20 c9 20 36 3a  24 62 75 66 3d 22 4d 61  |..  . 6:$buf="Ma|
000070a0  69 6e 52 6f 74 41 22 0d  25 a8 18 20 20 c9 20 37  |inRotA".%..  . 7|
000070b0  3a 24 62 75 66 3d 22 4d  61 69 6e 49 6e 76 22 0d  |:$buf="MainInv".|
000070c0  25 b2 19 20 20 c9 20 38  3a 24 62 75 66 3d 22 4d  |%..  . 8:$buf="M|
000070d0  61 69 6e 47 72 61 62 22  0d 25 bc 1a 20 20 c9 20  |ainGrab".%..  . |
000070e0  39 3a 24 62 75 66 3d 22  4d 61 69 6e 53 74 6f 72  |9:$buf="MainStor|
000070f0  65 22 0d 25 c6 1a 20 20  c9 20 31 30 3a 24 62 75  |e".%..  . 10:$bu|
00007100  66 3d 22 4d 61 69 6e 53  77 61 70 22 0d 25 d0 1b  |f="MainSwap".%..|
00007110  20 20 c9 20 31 31 3a 24  62 75 66 3d 22 4d 61 69  |  . 11:$buf="Mai|
00007120  6e 44 65 66 6c 74 22 0d  25 da 36 20 20 c9 20 31  |nDeflt".%.6  . 1|
00007130  32 3a 24 62 75 66 3d 22  4d 61 69 6e 43 6c 65 61  |2:$buf="MainClea|
00007140  72 22 3a e7 20 42 25 3a  24 62 75 66 2b 3d 22 2c  |r":. B%:$buf+=",|
00007150  4d 61 69 6e 43 6f 6e 66  69 72 6d 31 22 0d 25 e4  |MainConfirm1".%.|
00007160  19 20 20 c9 20 31 33 3a  24 62 75 66 3d 22 4d 61  |.  . 13:$buf="Ma|
00007170  69 6e 41 6e 64 22 0d 25  ee 18 20 20 c9 20 31 34  |inAnd".%..  . 14|
00007180  3a 24 62 75 66 3d 22 4d  61 69 6e 4f 72 22 0d 25  |:$buf="MainOr".%|
00007190  f8 19 20 20 c9 20 31 35  3a 24 62 75 66 3d 22 4d  |..  . 15:$buf="M|
000071a0  61 69 6e 45 6f 72 22 0d  26 02 1a 20 20 c9 20 31  |ainEor".&..  . 1|
000071b0  36 3a 24 62 75 66 3d 22  4d 61 69 6e 55 6e 64 6f  |6:$buf="MainUndo|
000071c0  22 0d 26 0c 1a 20 20 c9  20 31 37 3a 24 62 75 66  |".&..  . 17:$buf|
000071d0  3d 22 4d 61 69 6e 4c 65  66 74 22 0d 26 16 1b 20  |="MainLeft".&.. |
000071e0  20 c9 20 31 38 3a 24 62  75 66 3d 22 4d 61 69 6e  | . 18:$buf="Main|
000071f0  52 69 67 68 74 22 0d 26  20 1a 20 20 c9 20 31 39  |Right".& .  . 19|
00007200  3a 24 62 75 66 3d 22 4d  61 69 6e 44 6f 77 6e 22  |:$buf="MainDown"|
00007210  0d 26 2a 18 20 20 c9 20  32 30 3a 24 62 75 66 3d  |.&*.  . 20:$buf=|
00007220  22 4d 61 69 6e 55 70 22  0d 26 34 1c 20 20 c9 20  |"MainUp".&4.  . |
00007230  32 31 3a 24 62 75 66 3d  22 4d 61 69 6e 41 70 70  |21:$buf="MainApp|
00007240  43 68 72 22 0d 26 3e 1c  20 20 c9 20 32 32 3a 24  |Chr".&>.  . 22:$|
00007250  62 75 66 3d 22 4d 61 69  6e 41 70 70 53 65 74 22  |buf="MainAppSet"|
00007260  0d 26 48 1d 20 20 c9 20  32 33 3a 24 62 75 66 3d  |.&H.  . 23:$buf=|
00007270  22 4d 61 69 6e 43 75 72  72 65 6e 74 22 0d 26 52  |"MainCurrent".&R|
00007280  38 20 20 7f 3a 24 62 75  66 3d 22 4d 61 69 6e 22  |8  .:$buf="Main"|
00007290  3a e7 20 a4 63 68 61 6e  67 65 64 28 57 25 29 3a  |:. .changed(W%):|
000072a0  24 62 75 66 2b 3d 22 2c  4d 61 69 6e 43 6f 6e 66  |$buf+=",MainConf|
000072b0  69 72 6d 32 22 0d 26 5c  07 20 20 cb 0d 26 66 06  |irm2".&\.  ..&f.|
000072c0  20 cc 0d 26 70 23 20 20  c8 99 20 22 57 69 6d 70  | ..&p#  .. "Wimp|
000072d0  5f 47 65 74 4d 65 6e 75  53 74 61 74 65 22 2c 2c  |_GetMenuState",,|
000072e0  71 25 2b 32 30 0d 26 7a  12 20 20 c8 8e 20 6d 65  |q%+20.&z.  .. me|
000072f0  6e 75 49 44 25 20 ca 0d  26 84 19 20 20 c9 20 30  |nuID% ..&..  . 0|
00007300  3a 24 62 75 66 3d 22 4d  65 6e 75 49 63 6f 6e 22  |:$buf="MenuIcon"|
00007310  0d 26 8e 19 20 20 c9 20  31 3a 24 62 75 66 3d 22  |.&..  . 1:$buf="|
00007320  4d 65 6e 75 4d 61 69 6e  22 0d 26 98 07 20 20 cb  |MenuMain".&..  .|
00007330  0d 26 a2 2d 20 20 42 25  3d 71 25 2b 32 30 3a c8  |.&.-  B%=q%+20:.|
00007340  95 20 21 42 25 3c 3e 2d  31 3a 24 62 75 66 2b 3d  |. !B%<>-1:$buf+=|
00007350  c3 20 21 42 25 3a 42 25  2b 3d 34 3a ce 0d 26 ac  |. !B%:B%+=4:..&.|
00007360  31 20 20 e7 20 24 62 75  66 3d 22 4d 65 6e 75 49  |1  . $buf="MenuI|
00007370  63 6f 6e 31 22 20 80 20  a4 63 68 61 6e 67 65 64  |con1" . .changed|
00007380  28 2d 31 29 3a 24 62 75  66 2b 3d 22 2b 22 0d 26  |(-1):$buf+="+".&|
00007390  b6 1a 20 20 e7 20 c2 24  62 75 66 29 3e 22 39 22  |..  . .$buf)>"9"|
000073a0  3a 24 62 75 66 3d 22 22  0d 26 c0 06 20 cd 0d 26  |:$buf="".&.. ..&|
000073b0  ca 05 cb 0d 26 d4 11 f2  74 6f 68 65 6c 70 28 24  |....&...tohelp($|
000073c0  62 75 66 29 0d 26 de 05  e1 0d 26 e8 05 3a 0d 26  |buf).&....&..:.&|
000073d0  f2 13 dd 20 f2 74 6f 68  65 6c 70 28 24 62 75 66  |... .tohelp($buf|
000073e0  29 0d 26 fc 2d 24 28 71  25 2b 32 30 29 3d 22 22  |).&.-$(q%+20)=""|
000073f0  3a 66 3d a7 24 62 75 66  2c 22 2c 22 29 3a e7 20  |:f=.$buf,","):. |
00007400  66 20 8b 20 66 3d a9 20  24 62 75 66 2b 31 0d 27  |f . f=. $buf+1.'|
00007410  06 0e c8 95 20 24 62 75  66 3e 22 22 0d 27 10 3f  |.... $buf>"".'.?|
00007420  20 24 28 71 25 2b 32 30  29 2b 3d a4 6c 6f 6f 6b  | $(q%+20)+=.look|
00007430  75 70 28 c0 24 62 75 66  2c 66 2d 31 29 29 3a 24  |up(.$buf,f-1)):$|
00007440  62 75 66 3d c1 24 62 75  66 2c 66 2b 31 29 3a 66  |buf=.$buf,f+1):f|
00007450  3d a7 24 62 75 66 2c 22  2c 22 29 0d 27 1a 15 20  |=.$buf,",").'.. |
00007460  e7 20 66 20 8b 20 66 3d  a9 20 24 62 75 66 2b 31  |. f . f=. $buf+1|
00007470  0d 27 24 05 ce 0d 27 2e  43 24 28 71 25 2b 32 30  |.'$...'.C$(q%+20|
00007480  29 2b 3d bd 20 30 3a 21  71 25 3d 32 33 2b a9 20  |)+=. 0:!q%=23+. |
00007490  24 28 71 25 2b 32 30 29  20 80 20 2d 34 3a 71 25  |$(q%+20) . -4:q%|
000074a0  21 31 32 3d 71 25 21 38  3a f2 72 65 70 6c 79 28  |!12=q%!8:.reply(|
000074b0  31 37 2c 31 32 38 33 29  0d 27 38 05 e1 0d 27 42  |17,1283).'8...'B|
000074c0  05 3a 0d 27 4c 25 dd 20  a4 6c 6f 6f 6b 75 70 28  |.:.'L%. .lookup(|
000074d0  24 69 63 6e 29 3d a4 6c  6f 6f 6b 75 70 66 28 24  |$icn)=.lookupf($|
000074e0  69 63 6e 2c 22 22 29 0d  27 56 05 3a 0d 27 60 10  |icn,"").'V.:.'`.|
000074f0  dd 20 f2 74 6f 6b 65 6e  28 61 24 29 0d 27 6a 10  |. .token(a$).'j.|
00007500  6e 25 3d a7 24 69 63 6e  2c 61 24 29 0d 27 74 09  |n%=.$icn,a$).'t.|
00007510  c8 95 20 6e 25 0d 27 7e  24 20 e7 20 6e 25 3f 69  |.. n%.'~$ . n%?i|
00007520  63 6e 3c 3e 34 38 20 8b  20 e7 20 42 25 20 8b 20  |cn<>48 . . B% . |
00007530  6e 25 3f 69 63 6e 3d 34  39 0d 27 88 36 20 24 69  |n%?icn=49.'.6 $i|
00007540  63 6e 3d c0 24 69 63 6e  2c 6e 25 2d 31 29 2b a4  |cn=.$icn,n%-1)+.|
00007550  6c 6f 6f 6b 75 70 28 61  24 2b bd 20 6e 25 3f 69  |lookup(a$+. n%?i|
00007560  63 6e 29 2b c1 24 69 63  6e 2c 6e 25 2b 32 29 0d  |cn)+.$icn,n%+2).|
00007570  27 92 11 20 6e 25 3d a7  24 69 63 6e 2c 61 24 29  |'.. n%=.$icn,a$)|
00007580  0d 27 9c 05 ce 0d 27 a6  05 e1 0d 27 b0 05 3a 0d  |.'....'....'..:.|
00007590  27 ba 17 dd 20 a4 6c 6f  6f 6b 75 70 31 28 24 69  |'... .lookup1($i|
000075a0  63 6e 2c 61 24 29 0d 27  c4 08 ea 20 6e 25 0d 27  |cn,a$).'... n%.'|
000075b0  ce 46 c8 99 20 22 4d 65  73 73 61 67 65 54 72 61  |.F.. "MessageTra|
000075c0  6e 73 5f 4c 6f 6f 6b 75  70 22 2c 6d 65 73 73 61  |ns_Lookup",messa|
000075d0  67 65 73 25 2c 69 63 6e  2c 69 63 6e 2c 32 35 36  |ges%,icn,icn,256|
000075e0  2c a4 6c 6f 6f 6b 75 70  28 61 24 29 20 b8 20 2c  |,.lookup(a$) . ,|
000075f0  2c 2c 6e 25 0d 27 d8 2e  6e 25 3f 69 63 6e 3d 31  |,,n%.'..n%?icn=1|
00007600  33 3a f2 74 6f 6b 65 6e  28 22 60 22 29 3a e7 20  |3:.token("`"):. |
00007610  6f 73 33 25 20 8b 20 f2  74 6f 6b 65 6e 28 22 5c  |os3% . .token("\|
00007620  22 29 0d 27 e2 09 3d 24  69 63 6e 0d 27 ec 05 3a  |").'..=$icn.'..:|
00007630  0d 27 f6 17 dd 20 a4 6c  6f 6f 6b 75 70 66 28 24  |.'... .lookupf($|
00007640  69 63 6e 2c 61 24 29 0d  28 00 08 ea 20 6e 25 0d  |icn,a$).(... n%.|
00007650  28 0a 47 c8 99 20 22 4d  65 73 73 61 67 65 54 72  |(.G.. "MessageTr|
00007660  61 6e 73 5f 4c 6f 6f 6b  75 70 22 2c 6d 65 73 73  |ans_Lookup",mess|
00007670  61 67 65 73 25 2c 69 63  6e 2c 69 63 6e 2c 32 35  |ages%,icn,icn,25|
00007680  36 2c 61 24 20 b8 20 2c  2c 2c 6e 25 3a 6e 25 3f  |6,a$ . ,,,n%:n%?|
00007690  69 63 6e 3d 31 33 0d 28  14 36 6e 25 3d a7 24 69  |icn=13.(.6n%=.$i|
000076a0  63 6e 2c 22 7e 22 29 3a  e7 20 6e 25 3a 24 69 63  |cn,"~"):. n%:$ic|
000076b0  6e 3d c0 24 69 63 6e 2c  6e 25 2d 31 29 2b 61 24  |n=.$icn,n%-1)+a$|
000076c0  2b c1 24 69 63 6e 2c 6e  25 2b 32 29 0d 28 1e 24  |+.$icn,n%+2).(.$|
000076d0  f2 74 6f 6b 65 6e 28 22  60 22 29 3a e7 20 6f 73  |.token("`"):. os|
000076e0  33 25 20 8b 20 f2 74 6f  6b 65 6e 28 22 5c 22 29  |3% . .token("\")|
000076f0  0d 28 28 09 3d 24 69 63  6e 0d 28 32 05 3a 0d 28  |.((.=$icn.(2.:.(|
00007700  3c 0f dd 20 f2 64 61 74  61 73 61 76 65 0d 28 46  |<.. .datasave.(F|
00007710  15 e7 20 6d 73 67 25 21  34 30 3c 3e 26 46 46 37  |.. msg%!40<>&FF7|
00007720  3a e1 0d 28 50 08 66 25  3d a3 0d 28 5a 16 e7 20  |:..(P.f%=..(Z.. |
00007730  6d 73 67 25 21 34 3d 6d  79 74 61 73 6b 25 20 8c  |msg%!4=mytask% .|
00007740  0d 28 64 11 20 c8 8e 20  6d 73 67 25 21 32 30 20  |.(d. .. msg%!20 |
00007750  ca 0d 28 6e 2c 20 c9 20  73 61 76 65 68 61 6e 64  |..(n, . savehand|
00007760  25 2c 75 6e 73 61 76 65  64 68 61 6e 64 25 2c 69  |%,unsavedhand%,i|
00007770  6e 66 6f 68 61 6e 64 25  3a 66 25 3d b9 0d 28 78  |nfohand%:f%=..(x|
00007780  1e 20 7f 3a f2 69 6e 74  65 72 6e 61 6c 28 6d 73  |. .:.internal(ms|
00007790  67 25 21 32 30 29 3a 66  25 3d b9 0d 28 82 06 20  |g%!20):f%=..(.. |
000077a0  cb 0d 28 8c 05 cd 0d 28  96 0a e7 20 66 25 3a e1  |..(....(... f%:.|
000077b0  0d 28 a0 33 c8 99 20 22  58 4f 53 5f 52 65 61 64  |.(.3.. "XOS_Read|
000077c0  56 61 72 56 61 6c 22 2c  22 57 69 6d 70 24 53 63  |VarVal","Wimp$Sc|
000077d0  72 61 70 22 2c 71 25 2b  33 30 30 20 b8 20 61 25  |rap",q%+300 . a%|
000077e0  3b 66 25 0d 28 aa 3a e7  20 66 25 20 80 20 31 20  |;f%.(.:. f% . 1 |
000077f0  80 20 21 61 25 3d 26 31  32 34 3a f2 74 65 6c 6c  |. !a%=&124:.tell|
00007800  74 68 65 6d 6f 66 66 28  a4 6c 6f 6f 6b 75 70 28  |themoff(.lookup(|
00007810  22 4e 6f 53 63 72 61 70  22 29 29 3a e1 0d 28 b4  |"NoScrap")):..(.|
00007820  35 24 28 6d 73 67 25 2b  34 34 29 3d 22 3c 57 69  |5$(msg%+44)="<Wi|
00007830  6d 70 24 53 63 72 61 70  3e 22 2b bd 20 30 3a 21  |mp$Scrap>"+. 0:!|
00007840  6d 73 67 25 3d 36 30 3a  6d 73 67 25 21 33 36 3d  |msg%=60:msg%!36=|
00007850  2d 31 0d 28 be 39 6d 73  67 25 21 32 30 3d a4 61  |-1.(.9msg%!20=.a|
00007860  64 64 72 28 22 66 22 2c  63 75 72 72 65 6e 74 25  |ddr("f",current%|
00007870  29 3a 6d 73 67 25 21 32  34 3d 32 32 34 30 3a f2  |):msg%!24=2240:.|
00007880  72 65 70 6c 79 28 31 37  2c 32 29 0d 28 c8 05 e1  |reply(17,2).(...|
00007890  0d 28 d2 05 3a 0d 28 dc  12 dd 20 f2 64 61 74 61  |.(..:.(... .data|
000078a0  73 61 76 65 61 63 6b 0d  28 e6 16 e7 20 6d 73 67  |saveack.(... msg|
000078b0  25 21 34 3d 6d 79 74 61  73 6b 25 3a e1 0d 28 f0  |%!4=mytask%:..(.|
000078c0  44 f2 73 61 76 65 28 a4  67 65 74 73 74 72 28 6d  |D.save(.getstr(m|
000078d0  73 67 25 2b 34 34 29 29  3a c8 99 20 67 65 74 70  |sg%+44)):.. getp|
000078e0  74 72 2c 2c 71 25 3a f2  72 65 70 6c 79 28 31 38  |tr,,q%:.reply(18|
000078f0  2c 33 29 3a c8 99 20 63  72 6d 65 6e 75 2c 2c 2d  |,3):.. crmenu,,-|
00007900  31 0d 28 fa 05 e1 0d 29  04 05 3a 0d 29 0e 0f dd  |1.(....)..:.)...|
00007910  20 f2 64 61 74 61 6c 6f  61 64 0d 29 18 31 21 6d  | .dataload.).1!m|
00007920  73 67 25 3d 32 30 3a f2  72 65 70 6c 79 28 31 37  |sg%=20:.reply(17|
00007930  2c 34 29 3a f2 6c 6f 61  64 28 a4 67 65 74 73 74  |,4):.load(.getst|
00007940  72 28 6d 73 67 25 2b 34  34 29 29 0d 29 22 3a e7  |r(msg%+44)).)":.|
00007950  20 a4 67 65 74 73 74 72  28 6d 73 67 25 2b 34 34  | .getstr(msg%+44|
00007960  29 3d 22 3c 57 69 6d 70  24 53 63 72 61 70 3e 22  |)="<Wimp$Scrap>"|
00007970  3a 2a 52 65 6d 6f 76 65  20 3c 57 69 6d 70 24 53  |:*Remove <Wimp$S|
00007980  63 72 61 70 3e 0d 29 2c  05 e1 0d 29 36 05 3a 0d  |crap>.),...)6.:.|
00007990  29 40 0f dd 20 f2 64 61  74 61 6f 70 65 6e 0d 29  |)@.. .dataopen.)|
000079a0  4a 15 e7 20 6d 73 67 25  21 34 30 3c 3e 26 46 46  |J.. msg%!40<>&FF|
000079b0  37 3a e1 0d 29 54 31 21  6d 73 67 25 3d 32 30 3a  |7:..)T1!msg%=20:|
000079c0  f2 72 65 70 6c 79 28 31  37 2c 34 29 3a f2 6c 6f  |.reply(17,4):.lo|
000079d0  61 64 28 a4 67 65 74 73  74 72 28 6d 73 67 25 2b  |ad(.getstr(msg%+|
000079e0  34 34 29 29 0d 29 5e 2d  24 28 a4 61 64 64 72 28  |44)).)^-$(.addr(|
000079f0  22 6e 22 2c 63 75 72 72  65 6e 74 25 29 2b 34 29  |"n",current%)+4)|
00007a00  3d a4 67 65 74 73 74 72  28 6d 73 67 25 2b 34 34  |=.getstr(msg%+44|
00007a10  29 0d 29 68 05 e1 0d 29  72 05 3a 0d 29 7c 12 dd  |).)h...)r.:.)|..|
00007a20  20 a4 61 64 64 72 28 61  24 2c 41 25 29 0d 29 86  | .addr(a$,A%).).|
00007a30  26 c8 99 20 73 70 6f 70  2c 32 35 36 2b 32 34 2c  |&.. spop,256+24,|
00007a40  73 70 72 25 2c 61 24 2b  c3 20 41 25 20 b8 20 2c  |spr%,a$+. A% . ,|
00007a50  2c 41 25 0d 29 90 0d 3d  41 25 2b 41 25 21 33 32  |,A%.)..=A%+A%!32|
00007a60  0d 29 9a 05 3a 0d 29 a4  12 dd 20 a4 66 69 6e 64  |.)..:.)... .find|
00007a70  28 68 61 6e 64 25 29 0d  29 ae 32 ea 20 41 25 3a  |(hand%).).2. A%:|
00007a80  c8 95 20 68 61 6e 64 25  3c 3e 68 61 6e 64 6c 65  |.. hand%<>handle|
00007a90  25 28 41 25 29 20 80 20  41 25 3c 66 69 6c 65 73  |%(A%) . A%<files|
00007aa0  25 3a 41 25 2b 3d 31 3a  ce 0d 29 b8 19 e7 20 41  |%:A%+=1:..)... A|
00007ab0  25 3d 66 69 6c 65 73 25  3a 3d 2d 31 3a 8b 20 3d  |%=files%:=-1:. =|
00007ac0  41 25 0d 29 c2 05 3a 0d  29 cc 12 dd 20 a4 63 68  |A%.)..:.)... .ch|
00007ad0  61 6e 67 65 64 28 6e 25  29 0d 29 d6 07 ea 20 66  |anged(n%).)... f|
00007ae0  0d 29 e0 0c e7 20 6e 25  3c 30 20 8c 0d 29 ea 33  |.)... n%<0 ..).3|
00007af0  20 e7 20 66 69 6c 65 73  25 3a e3 20 6e 25 3d 30  | . files%:. n%=0|
00007b00  20 b8 20 66 69 6c 65 73  25 2d 31 3a 66 2d 3d a4  | . files%-1:f-=.|
00007b10  63 68 61 6e 67 65 64 28  6e 25 29 3e 30 3a ed 0d  |changed(n%)>0:..|
00007b20  29 f4 29 cc 20 c8 99 20  78 73 70 6f 70 2c 32 35  |).). .. xspop,25|
00007b30  36 2b 32 34 2c 73 70 72  25 2c 22 6e 22 2b c3 20  |6+24,spr%,"n"+. |
00007b40  6e 25 20 b8 20 3b 42 25  0d 29 fe 28 20 e7 20 42  |n% . ;B%.).( . B|
00007b50  25 20 80 20 31 3a 66 3d  30 3a 8b 20 66 3d 3f 28  |% . 1:f=0:. f=?(|
00007b60  a4 61 64 64 72 28 22 6e  22 2c 6e 25 29 2b 33 29  |.addr("n",n%)+3)|
00007b70  0d 2a 08 05 cd 0d 2a 12  06 3d 66 0d 2a 1c 05 3a  |.*....*..=f.*..:|
00007b80  0d 2a 26 14 dd 20 f2 63  68 61 6e 67 65 64 28 6e  |.*&.. .changed(n|
00007b90  25 2c 66 29 0d 2a 30 2d  3f 28 a4 61 64 64 72 28  |%,f).*0-?(.addr(|
00007ba0  22 6e 22 2c 6e 25 29 2b  33 29 3d 66 3c 3e 30 20  |"n",n%)+3)=f<>0 |
00007bb0  80 20 31 3a f2 74 69 74  6c 65 62 61 72 28 6e 25  |. 1:.titlebar(n%|
00007bc0  29 0d 2a 3a 05 e1 0d 2a  44 05 3a 0d 2a 4e 13 dd  |).*:...*D.:.*N..|
00007bd0  20 f2 74 69 74 6c 65 62  61 72 28 6e 25 29 0d 2a  | .titlebar(n%).*|
00007be0  58 2c 24 69 63 6e 3d 24  74 69 74 6c 65 25 28 6e  |X,$icn=$title%(n|
00007bf0  25 29 3a 24 62 75 66 3d  24 28 a4 61 64 64 72 28  |%):$buf=$(.addr(|
00007c00  22 6e 22 2c 6e 25 29 2b  34 29 0d 2a 62 2b e7 20  |"n",n%)+4).*b+. |
00007c10  24 62 75 66 3d 22 42 42  43 66 6f 6e 74 22 3a 24  |$buf="BBCfont":$|
00007c20  62 75 66 3d a4 6c 6f 6f  6b 75 70 28 22 4e 6f 4e  |buf=.lookup("NoN|
00007c30  61 6d 65 22 29 0d 2a 6c  3b 24 74 69 74 6c 65 25  |ame").*l;$title%|
00007c40  28 6e 25 29 3d c2 24 62  75 66 2c 32 35 33 29 3a  |(n%)=.$buf,253):|
00007c50  e7 20 a4 63 68 61 6e 67  65 64 28 6e 25 29 3a 24  |. .changed(n%):$|
00007c60  74 69 74 6c 65 25 28 6e  25 29 2b 3d 22 20 2a 22  |title%(n%)+=" *"|
00007c70  0d 2a 76 19 e7 20 24 74  69 74 6c 65 25 28 6e 25  |.*v.. $title%(n%|
00007c80  29 3c 3e 24 69 63 6e 20  8c 0d 2a 80 23 20 c8 99  |)<>$icn ..*.# ..|
00007c90  20 22 58 57 69 6d 70 5f  53 65 74 43 61 72 65 74  | "XWimp_SetCaret|
00007ca0  50 6f 73 69 74 69 6f 6e  22 2c 2d 31 0d 2a 8a 35  |Position",-1.*.5|
00007cb0  20 c8 99 20 22 58 57 69  6d 70 5f 53 65 74 43 61  | .. "XWimp_SetCa|
00007cc0  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 68 61 6e  |retPosition",han|
00007cd0  64 6c 65 25 28 63 75 72  72 65 6e 74 25 29 2c 2d  |dle%(current%),-|
00007ce0  31 0d 2a 94 05 cd 0d 2a  9e 05 e1 0d 2a a8 05 3a  |1.*....*....*..:|
00007cf0  0d 2a b2 11 dd 20 f2 64  65 6c 65 74 65 28 6e 25  |.*... .delete(n%|
00007d00  29 0d 2a bc 37 21 71 25  3d 68 61 6e 64 6c 65 25  |).*.7!q%=handle%|
00007d10  28 6e 25 29 3a e7 20 21  71 25 3e 30 3a c8 99 20  |(n%):. !q%>0:.. |
00007d20  22 58 57 69 6d 70 5f 44  65 6c 65 74 65 57 69 6e  |"XWimp_DeleteWin|
00007d30  64 6f 77 22 2c 2c 71 25  0d 2a c6 16 f2 64 65 6c  |dow",,q%.*...del|
00007d40  28 6e 25 29 3a 66 69 6c  65 73 25 2d 3d 31 0d 2a  |(n%):files%-=1.*|
00007d50  d0 05 e1 0d 2a da 05 3a  0d 2a e4 0e dd 20 f2 64  |....*..:.*... .d|
00007d60  65 6c 28 41 25 29 0d 2a  ee 32 ea 20 42 25 3a 42  |el(A%).*.2. B%:B|
00007d70  25 3d 66 69 6c 65 73 25  2d 31 3a c8 99 20 78 73  |%=files%-1:.. xs|
00007d80  70 6f 70 2c 32 35 36 2b  32 35 2c 73 70 72 25 2c  |pop,256+25,spr%,|
00007d90  22 62 22 2b c3 20 41 25  0d 2a f8 3f c8 99 20 78  |"b"+. A%.*.?.. x|
00007da0  73 70 6f 70 2c 32 35 36  2b 32 35 2c 73 70 72 25  |spop,256+25,spr%|
00007db0  2c 22 63 22 2b c3 20 41  25 3a c8 99 20 78 73 70  |,"c"+. A%:.. xsp|
00007dc0  6f 70 2c 32 35 36 2b 32  35 2c 73 70 72 25 2c 22  |op,256+25,spr%,"|
00007dd0  6d 22 2b c3 20 41 25 0d  2b 02 3f c8 99 20 78 73  |m"+. A%.+.?.. xs|
00007de0  70 6f 70 2c 32 35 36 2b  32 35 2c 73 70 72 25 2c  |pop,256+25,spr%,|
00007df0  22 6e 22 2b c3 20 41 25  3a c8 99 20 78 73 70 6f  |"n"+. A%:.. xspo|
00007e00  70 2c 32 35 36 2b 32 35  2c 73 70 72 25 2c 22 66  |p,256+25,spr%,"f|
00007e10  22 2b c3 20 41 25 0d 2b  0c 20 68 61 6e 64 6c 65  |"+. A%.+. handle|
00007e20  25 28 41 25 29 3d 2d 31  3a 21 73 70 72 25 3d 73  |%(A%)=-1:!spr%=s|
00007e30  70 72 25 21 31 32 0d 2b  16 0d e7 20 42 25 3e 41  |pr%!12.+... B%>A|
00007e40  25 20 8c 0d 2b 20 38 20  c8 94 20 68 61 6e 64 6c  |% ..+ 8 .. handl|
00007e50  65 25 28 41 25 29 2c 68  61 6e 64 6c 65 25 28 42  |e%(A%),handle%(B|
00007e60  25 29 3a c8 94 20 74 69  74 6c 65 25 28 41 25 29  |%):.. title%(A%)|
00007e70  2c 74 69 74 6c 65 25 28  42 25 29 0d 2b 2a 2b 20  |,title%(B%).+*+ |
00007e80  c8 99 20 78 73 70 6f 70  2c 32 35 36 2b 32 36 2c  |.. xspop,256+26,|
00007e90  73 70 72 25 2c 22 62 22  2b c3 20 42 25 2c 22 62  |spr%,"b"+. B%,"b|
00007ea0  22 2b c3 20 41 25 0d 2b  34 2b 20 c8 99 20 78 73  |"+. A%.+4+ .. xs|
00007eb0  70 6f 70 2c 32 35 36 2b  32 36 2c 73 70 72 25 2c  |pop,256+26,spr%,|
00007ec0  22 63 22 2b c3 20 42 25  2c 22 63 22 2b c3 20 41  |"c"+. B%,"c"+. A|
00007ed0  25 0d 2b 3e 2b 20 c8 99  20 78 73 70 6f 70 2c 32  |%.+>+ .. xspop,2|
00007ee0  35 36 2b 32 36 2c 73 70  72 25 2c 22 6d 22 2b c3  |56+26,spr%,"m"+.|
00007ef0  20 42 25 2c 22 6d 22 2b  c3 20 41 25 0d 2b 48 2b  | B%,"m"+. A%.+H+|
00007f00  20 c8 99 20 78 73 70 6f  70 2c 32 35 36 2b 32 36  | .. xspop,256+26|
00007f10  2c 73 70 72 25 2c 22 6e  22 2b c3 20 42 25 2c 22  |,spr%,"n"+. B%,"|
00007f20  6e 22 2b c3 20 41 25 0d  2b 52 2b 20 c8 99 20 78  |n"+. A%.+R+ .. x|
00007f30  73 70 6f 70 2c 32 35 36  2b 32 36 2c 73 70 72 25  |spop,256+26,spr%|
00007f40  2c 22 66 22 2b c3 20 42  25 2c 22 66 22 2b c3 20  |,"f"+. B%,"f"+. |
00007f50  41 25 0d 2b 5c 05 cd 0d  2b 66 2a c8 99 20 22 57  |A%.+\...+f*.. "W|
00007f60  69 6d 70 5f 53 6c 6f 74  53 69 7a 65 22 2c 73 70  |imp_SlotSize",sp|
00007f70  72 25 2b 21 73 70 72 25  2d 26 38 30 30 30 2c 2d  |r%+!spr%-&8000,-|
00007f80  31 0d 2b 70 05 e1 0d 2b  7a 05 3a 0d 2b 84 0b f4  |1.+p...+z.:.+...|
00007f90  20 4d 65 6e 75 73 0d 2b  8e 05 3a 0d 2b 98 09 dc  | Menus.+..:.+...|
00007fa0  20 60 60 54 0d 2b a2 25  dc 20 60 53 61 76 65 46  | ``T.+.%. `SaveF|
00007fb0  3f 73 61 76 65 68 61 6e  64 25 2c 60 54 65 73 74  |?savehand%,`Test|
00007fc0  2c 60 55 6e 54 65 73 74  2c 0d 2b ac 05 3a 0d 2b  |,`UnTest,.+..:.+|
00007fd0  b6 09 dc 20 60 60 54 0d  2b c0 17 dc 20 60 49 57  |... ``T.+... `IW|
00007fe0  7c 69 6e 66 6f 68 61 6e  64 25 2c 60 51 2c 0d ff  ||infohand%,`Q,..|
00007ff0