Home » Archimedes archive » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94 » !AWMay94/Goodies/Italic/!Italix/!RunImage

!AWMay94/Goodies/Italic/!Italix/!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 » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94
Filename: !AWMay94/Goodies/Italic/!Italix/!RunImage
Read OK:
File size: 46A0 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!RunImage for !Italix
   20REM By Ben Schofield
   30REM LEN1994 Archimedes World
   40REM Hello hackers,
   50REM  I know that this program isn't a major work of master programming
   60REM but watch out for my Disassembler, coming soon...
   70ON ERROR OSCLI"Error Pre-init error ["+REPORT$+" / "+ERL+"]"
   80:
   90task_version$="1.46"
  100task_name$="Italix"
  110task_path$="<Italix$Dir>.Resources."
  120LIBRARY task_path$+"DSLib"
  130:
  140task_handle=FNtask_init(310)
  150:
  160PROCmess_load(task_path$+"Messages")
  170ON ERROR PROCerror_rep
  180:
  190PROCinit
  200:
  210REM Check that Font$Path is correctly set
  220REM If you are having problems with this utility sodding up the machine's
  230REM  fonts, then REM out these lines. And don't swear at me too much, I can't
  240REM  find anything in the PRMs or Style Guide about it!
  250exists=FNvar_checkexistance("Font$Path")
  260IF exists=TRUE THEN
  270 a$=FNvar_get("Font$Path")
  280ELSE
  290 a$=""
  300ENDIF
  310IF INSTR(a$,".,Resources:$.Fonts.")=0 OR exists=FALSE THEN
  320 SYS"OS_SetVarVal","Font$Path","<Font$Prefix>.,Resources:$.Fonts.",,,2
  330 OSCLI"FontInstall"
  340ENDIF
  350:
  360PROCtemp_open(task_path$+"Templates")
  370DIM font_info 256, font_main 256, font_xfse 256, font_mes1 256, font_mes2 256
  380winh_info=FNtemp("proginfo",font_info)
  390winh_main=FNtemp("main",font_main)
  400winh_xfse=FNtemp("xfer_send",font_xfse)
  410winh_mes1=FNtemp("message1",font_mes1)
  420winh_mes2=FNtemp("message2",font_mes2)
  430SYS "Wimp_CloseTemplate"
  440:
  450PROCloadchoices
  460:
  470DIM men_misc FNmenu_space(3)
  480PROCmenu_make(men_misc,"mMi",STR$winh_info+"##",3)
  490DIM men_main FNmenu_space(3)
  500PROCmenu_make(men_main,"mMa",STR$men_misc+"#"+STR$winh_xfse+"#",3)
  510DIM men_bar FNmenu_space(2)
  520PROCmenu_make(men_bar,"mBa",STR$winh_info+"#",2)
  530:
  540PROCic_ch(task_name$+" v"+task_version$,7,winh_info)
  550PROCic_makeindspr("drophere",isb%,10,winh_main,ish%)
  560:
  570PROCibar
  580:
  590PROCactions_shade(1)
  600:
  610REM Polling loop
  620REPEAT
  630 SYS"Wimp_Poll",1,block TO reason
  640 CASE reason OF
  650  WHEN 1:PROCredraw
  660  WHEN 2:SYS "Wimp_OpenWindow",,block
  670  WHEN 3:SYS "Wimp_CloseWindow",,block
  680  WHEN 6:PROCclick(block!0,block!4,block!8,block!12,block!16)
  690  WHEN 7:PROCfile_dragend
  700  WHEN 8:PROCkey(!block,block!4,block!24)
  710  WHEN 9:PROCmenu_sel(block!0,block!4)
  720  WHEN 17,18:PROCmess
  730 ENDCASE
  740UNTIL FALSE
  750:
  760DEFPROCquit
  770SYS "MessageTrans_CloseFile",mess_desc%
  780SYS "Wimp_CloseDown",task_handle,&4B534154
  790END
  800ENDPROC
  810:
  820DEFPROCredraw
  830SYS "Wimp_RedrawWindow",,block TO more
  840WHILE more
  850   SYS "Wimp_GetRectangle",,block TO more
  860ENDWHILE
  870ENDPROC
  880:
  890DEFPROCinit
  900DIM temp_block 1400
  910temp_ilen=1500
  920DIM temp_ibuff temp_ilen
  930temp_ipoint=temp_ibuff
  940DIM block 256
  950DIM iblk 64
  960DIM ibtxt 20
  970DIM spr% 1000 ,isb% 64
  980!spr%=1000
  990spr%!8=16
 1000SYS&2E,9+256,spr%
 1010SYS&2E,10+256,spr%,task_path$+"Sprites"
 1020SYS"Wimp_SlotSize",-1,-1 TO appsize_orig
 1030data_start=HIMEM+8
 1040xfer_xferring=FALSE
 1050xfer_point=data_start
 1060file_loaded=FALSE
 1070file_sheared=FALSE
 1080ENDPROC
 1090:
 1100DEFPROCkey(wh%,ih%,keycode%)
 1110IF keycode%=13 THEN
 1120 CASE wh% OF
 1130  WHEN winh_main:IF ih%=14 PROCshear_anglelimits
 1140  WHEN winh_xfse:IF ih%=2 PROCfile_save(FNic_rd(2,winh_xfse)):ENDPROC
 1150 ENDCASE
 1160ELSE
 1170 SYS"Wimp_ProcessKey",keycode%
 1180ENDIF
 1190ENDPROC
 1200:
 1210DEFPROCclick(msx%,msy%,msb%,mswh%,msih%)
 1220CASE mswh% OF
 1230 WHEN -2:CASE msb% OF
 1240   WHEN 1,4:PROCwindow_open(winh_main)
 1250   WHEN 2:SYS"Wimp_CreateMenu",,men_bar,msx%-64,184:menu_last=men_bar
 1260  ENDCASE
 1270 WHEN winh_main:CASE msb% OF
 1280   WHEN 1,4:CASE msih% OF
 1290     WHEN 4,5,6:PROCradiolock(1,msih%,mswh%)
 1300     WHEN 7,8,9:PROCradiolock(2,msih%,mswh%)
 1310     WHEN 15:PROCshear
 1320     WHEN 16:PROCstartdraw
 1330     WHEN 17:PROCwindow_open(winh_xfse)
 1340     WHEN 18:PROCfile_drop
 1350     WHEN 20,21:PROCradiolock(3,msih%,mswh%)
 1360    ENDCASE
 1370   WHEN 2:SYS"Wimp_CreateMenu",,men_main,msx%-64,msy%:menu_last=men_main
 1380  ENDCASE
 1390 WHEN winh_xfse:IF msb%=1 OR msb%=4 CASE msih% OF
 1400   WHEN 0:PROCsave(FNic_rd(2,winh_xfse))
 1410   WHEN 1:PROCwindow_close(winh_xfse)
 1420   WHEN 3:PROCfile_draginit
 1430  ENDCASE
 1440ENDCASE
 1450ENDPROC
 1460:
 1470DEFPROCmess
 1480shan=block!4
 1490sref=block!8
 1500CASE block!16 OF
 1510 WHEN 0:PROCquit
 1520 WHEN 1
 1530  IF FNvar_checkexistance("Wimp$Scrap")=FALSE PROCmess_box1("NOSCRAP","","OK"):ENDPROC
 1540  IF block!40=&AFF THEN
 1550   !block=256
 1560   block!12=block!8
 1570   block!16=2
 1580   block!36=-1
 1590   $(block+44)="<Wimp$Scrap>"+CHR$0
 1600   SYS"Wimp_SendMessage",17,block,block!4
 1610   file_loadref=block!8
 1620  ELSE
 1630   PROCmess_box1("ONLYDRAW","","OK")
 1640  ENDIF
 1650 WHEN 2
 1660  CASE block!12 OF
 1670   WHEN file_saveref
 1680    path$=FNrd0(block+44)
 1690    PROCfile_save(path$)
 1700    IF file_savedOK=TRUE PROCfile_supload(path$)
 1710    SYS"Wimp_CreateMenu",,-1
 1720    PROCwindow_close(winh_xfse)
 1730  OTHERWISE
 1740   PROCfile_unex("DSAVEACK")
 1750  ENDCASE
 1760 WHEN 3
 1770  CASE block!12 OF
 1780   WHEN 0:PROCfile_load(0)
 1790   WHEN file_loadref:PROCfile_load(1)
 1800  OTHERWISE
 1810   PROCfile_unex("DLOAD")
 1820  ENDCASE
 1830 WHEN 6:xfer_lastref=block!8:PROCfile_xfer
 1840 WHEN &502:PROChelpreq
 1850ENDCASE
 1860ENDPROC
 1870:
 1880DEFPROChelpreq
 1890a$="hlp_"
 1900IF block!36=-1 THEN
 1910 a$+="xxX"
 1920ELSE
 1930 CASE block!32 OF
 1940  WHEN winh_main:a$+="Ma"+STR$(block!36)
 1950  WHEN winh_xfse:a$+="Xf"+STR$(block!36)
 1960  WHEN winh_info:a$+="InX"
 1970  WHEN -2:a$+="BaX"
 1980OTHERWISE
 1990  SYS"Wimp_GetMenuState",1,block+40,block!32,block!36
 2000  snum0=block!40:snum1=block!44
 2010  CASE menu_last OF
 2020   WHEN men_bar:a$+="mBa"+STR$snum0
 2030   WHEN men_main:IF snum0=0 THEN
 2040                  IF snum1>-1 a$+="mMi"+STR$snum1 ELSE a$+="mMa"+STR$snum0
 2050                 ELSE
 2060                  a$+="mMa"+STR$snum0
 2070                 ENDIF
 2080  ENDCASE
 2090 ENDCASE
 2100ENDIF
 2110$mess_genbuff%=a$+CHR$0
 2120SYS"XMessageTrans_Lookup",mess_desc%,mess_genbuff%,mess_genbuff%,255,0,0,0,0 TO ;vset
 2130IF (vset AND 1)=0 a$=FNrd0(mess_genbuff%) ELSE a$=FNtoken("hlp_xxX","")
 2140!block=256
 2150block!12=block!8
 2160block!16=&503
 2170$(block+20)=a$+CHR$0
 2180SYS"Wimp_SendMessage",17,block,block!4
 2190ENDPROC
 2200:
 2210DEFPROCibar
 2220!iblk=-1
 2230iblk!4=0
 2240iblk!8=4
 2250iblk!12=64
 2260iblk!16=72
 2270iblk!20=&311A
 2280iblk!24=ibtxt
 2290iblk!28=spr%
 2300iblk!32=11
 2310$ibtxt="italix_ibar"
 2320SYS "Wimp_CreateIcon",,iblk TO ihan_ibar
 2330ENDPROC
 2340:
 2350DEFPROCmenu_sel(snum0,snum1)
 2360CASE menu_last OF
 2370 WHEN men_bar:IF snum0=1 PROCquit
 2380 WHEN men_main:CASE snum0 OF
 2390   WHEN 0:CASE snum1 OF
 2400     WHEN 1:PROCsavechoices
 2410     WHEN 2:PROCstartdraw
 2420    ENDCASE
 2430   WHEN 2:PROCfile_drop
 2440  ENDCASE
 2450ENDCASE
 2460SYS"Wimp_GetPointerInfo",,block
 2470IF block!8=1 THEN SYS"Wimp_CreateMenu",,men_main ELSE SYS"Wimp_CreateMenu",,-1
 2480ENDIF
 2490ENDPROC
 2500:
 2510DEFPROCactions_shade(bit)
 2520FOR i%=15 TO 18
 2530 PROCic_grey(bit,i%,winh_main)
 2540NEXT
 2550PROCmen_grey(bit,men_main,1)
 2560PROCmen_grey(bit,men_main,2)
 2570PROCmen_grey(bit,men_misc,2)
 2580ENDPROC
 2590:
 2600DEFPROCshear
 2610IF file_sheared=TRUE IF FNmess_box2("SHEARAGAIN","","CANCEL","SHEAR","")=1 ENDPROC
 2620shear=FNwhich(1,winh_main)-4
 2630shear_from=FNwhich(2,winh_main)-7
 2640PROCshear_anglelimits
 2650IF FNwhich(3,winh_main)=21 shear_deg=NOT(shear_deg)+1
 2660SYS"Hourglass_On"
 2670CASE shear OF
 2680 WHEN0,1
 2690  PROCdsl_shear(data_start,data_end,shear_deg,shear,shear_from)
 2700 WHEN2
 2710  PROCdsl_shear(data_start,data_end,shear_deg,0,shear_from)
 2720  PROCdsl_shear(data_start,data_end,shear_deg,1,shear_from)
 2730ENDCASE
 2740SYS"Hourglass_Off"
 2750VDU7:a=INKEY(8)
 2760VDU7
 2770PROCwindow_open(winh_xfse)
 2780file_sheared=TRUE
 2790ENDPROC
 2800:
 2810DEFPROCshear_anglelimits
 2820num$=FNic_rd(14,winh_main)
 2830shear_deg=VAL(num$)
 2840IF shear_deg>89 shear_deg=89:PROCic_ch(STR$(shear_deg),14,winh_main)
 2850ENDPROC
 2860:
 2870DEFPROCstartdraw
 2880REM It is VITAL that the block length isn't set to 256.
 2890REM Thumbs up to Acorn for bug-testing properly....
 2900call=0
 2910REPEAT
 2920 SYS"TaskManager_EnumerateTasks",call,block,24 TO call
 2930 tnp=block!4
 2940 IF call>0 a$=FNrd0(tnp)
 2950UNTIL call<0 OR a$="Draw"
 2960IF a$="Draw" drawhan=!block
 2970IF call<0 SYS"Wimp_StartTask","Filer_Run Resources:$.Apps.!Draw" TO drawhan
 2980IF drawhan=0 ENDPROC
 2990xfer_point=data_start
 3000xfer_xferring=FALSE
 3010block!0=256
 3020block!12=0
 3030block!16=1
 3040block!40=&AFF
 3050$(block+44)="Italixed"+CHR$0
 3060SYS"Wimp_SendMessage",17,block,drawhan
 3070file_saveref=block!8
 3080ENDPROC
 3090:
 3100DEFPROCfile_load(delete)
 3110IF block!40<>&AFF PROCmess_box1("ONLYDRAW","","OK"):ENDPROC
 3120file_name$=FNrd0(block+44)
 3130IF file_loaded=TRUE THEN
 3140 a=FNmess_box2("ALRLOAD","","CANCEL","DISCARD","")
 3150 IF a=1 AND delete=1 SYS"XOS_File",6,file_name$
 3160 IF a=1 ENDPROC
 3170ENDIF
 3180SYS"OS_File",23,file_name$ TO found,,,,data_length
 3190IF found<>1 PROCmess_box1(FNmess_lookup("NOTFOUND"),FNrodot(file_name$),"OK"):ENDPROC
 3200SYS"Wimp_SlotSize",appsize_orig+8+data_length+8,-1 TO size
 3210IF size<(appsize_orig+8+data_length+8) PROCmess_box1("CANTCLAIM",STR$(INT(data_length/1024)+1),"OK"):SYS"Wimp_SlotSize",appsize_orig,-1:ENDPROC
 3220SYS"OS_File",16,file_name$,data_start,0
 3230IF found<>1 PROCmess_box1("NOTFOUND",FNrodot(file_name$),"OK"):ENDPROC
 3240IF delete=1 SYS"XOS_File",6,file_name$
 3250!block=256
 3260block!12=sref
 3270block!16=4
 3280SYS"Wimp_SendMessage",17,block,shan
 3290file_loaded=TRUE
 3300file_sheared=FALSE
 3310data_end=data_length+data_start
 3320PROCactions_shade(0)
 3330PROCwindow_open(winh_main)
 3340ENDPROC
 3350:
 3360DEFPROCfile_drop
 3370file_loaded=FALSE
 3380file_sheared=FALSE
 3390SYS"Wimp_SlotSize",appsize_orig,-1
 3400PROCactions_shade(1)
 3410PROCwindow_close(winh_xfse)
 3420ENDPROC
 3430:
 3440DEFPROCfile_unex(a$)
 3450SYS"XTaskManager_TaskNameFromHandle",block!4 TO a;vset
 3460IF (vset AND 1)>0 ENDPROC
 3470taskn$=FNrd0(a)
 3480PROCmess_box1(a$,taskn$,"OK"):ENDPROC
 3490ENDPROC
 3500:
 3510DEFPROCfile_draginit
 3520!block=winh_xfse
 3530SYS"Wimp_GetWindowState",,block
 3540x0=block!4
 3550y1=block!16
 3560!block=winh_xfse
 3570block!4=3
 3580SYS"Wimp_GetIconState",,block
 3590minx=block!8+x0:miny=block!12+y1
 3600maxx=block!16+x0:maxy=block!20+y1
 3610!block=minx
 3620block!4=miny
 3630block!8=maxx
 3640block!12=maxy
 3650SYS"DragASprite_Start",%11000101,1,"file_aff",block
 3660PROCic_valid("R2;Pptr_hand",3,winh_xfse)
 3670ENDPROC
 3680:
 3690DEFPROCfile_dragend
 3700PROCic_valid("R2;Sfile_aff;Pptr_hand",3,winh_xfse)
 3710SYS"DragASprite_Stop"
 3720SYS"Wimp_GetPointerInfo",,block
 3730file_destx=block!0
 3740file_desty=block!4
 3750file_destwi=block!12
 3760file_destic=block!16
 3770leaf$=FNrodot(FNic_rd(2,winh_xfse))
 3780block!0=256
 3790block!12=0
 3800block!16=1
 3810block!20=file_destwi
 3820block!24=file_destic
 3830block!28=file_destx
 3840block!32=file_desty
 3850block!36=data_length
 3860block!40=&AFF
 3870$(block+44)=leaf$+CHR$0
 3880SYS"Wimp_SendMessage",17,block,file_destwi,file_destic
 3890file_saveref=block!8
 3900PROCwindow_close(winh_xfse)
 3910ENDPROC
 3920:
 3930DEFPROCfile_save(a$)
 3940file_savedOK=FALSE
 3950SYS"XOS_File",10,a$,&AFF,,data_start,data_end TO e;vset
 3960vset=vset AND 1
 3970IF vset=0 file_savedOK=TRUE ELSE PROCmess_box1("SAVEFAILED",FNrd0(e+4),"OK")
 3980ENDPROC
 3990:
 4000DEFPROCfile_supload(a$)
 4010block!0=256
 4020block!12=sref
 4030block!16=3
 4040block!20=file_destwi
 4050block!24=file_destic
 4060block!28=file_destx
 4070block!32=file_desty
 4080block!36=data_length
 4090block!40=&AFF
 4100$(block+44)=a$+CHR$0
 4110SYS"Wimp_SendMessage",17,block,file_destwi,file_destic
 4120ENDPROC
 4130:
 4140DEFPROCfile_xfer
 4150REM this part is a bit of bodge, but it works!
 4160xfer_destpoint=block!20
 4170xfer_destlength=block!24
 4180x=block!4
 4190IF xfer_xferring=FALSE xfer_point=data_start:xfer_xferring=TRUE
 4200IF xfer_point<data_end THEN
 4210 IF (xfer_point+xfer_destlength)>data_end xfer_destlength=data_end-xfer_point
 4220 SYS"Wimp_TransferBlock",task_handle,xfer_point,x,xfer_destpoint,xfer_destlength
 4230 xfer_point+=xfer_destlength
 4240ELSE
 4250 xfer_xferring=FALSE
 4260ENDIF
 4270IF xfer_point>data_end xfer_xferring=FALSE
 4280!block=256
 4290block!4=x
 4300block!12=xfer_lastref
 4310block!16=7
 4320block!20=xfer_destpoint
 4330CASE xfer_xferring OF
 4340 WHEN TRUE
 4350  block!24=xfer_destlength
 4360  type=18
 4370OTHERWISE
 4380 block!24=0
 4390 type=17
 4400ENDCASE
 4410SYS"Wimp_SendMessage",type,block,block!4
 4420ENDPROC
 4430:
 4440DEFPROCsavechoices
 4450esg1=FNwhich(1,winh_main)
 4460esg2=FNwhich(2,winh_main)
 4470esg3=FNwhich(3,winh_main)
 4480PROCshear_anglelimits
 4490block!0=esg1
 4500block!4=esg2
 4510block!8=esg3
 4520block!12=shear_deg
 4530SYS"XOS_File",17,task_path$+"Choices" TO found,,,,,attrib
 4540IF found=1 THEN
 4550 attrib=attrib AND %10
 4560 SYS"XOS_File",4,task_path$+"Choices",,,,attrib
 4570ENDIF
 4580SYS"XOS_File",10,task_path$+"Choices",&FFD,,block,block+16 TO e;vset
 4590IF (vset AND 1)>0 PROCmess_box1("SAVEFAILED",FNrd0(e+4),"OK")
 4600ENDPROC
 4610:
 4620DEFPROCloadchoices
 4630SYS"XOS_File",16,task_path$+"Choices",block,0 TO found ;flags
 4640IF (flags AND 1)=1 OR found<>1 THEN
 4650 esg1=5
 4660 esg2=8
 4670 esg3=20
 4680 shear_deg=30
 4690ELSE
 4700 esg1=block!0
 4710 esg2=block!4
 4720 esg3=block!8
 4730 shear_deg=block!12
 4740ENDIF
 4750FOR i%=0 TO 2
 4760 IF esg1=(i%+4) bit=1 ELSE bit=0
 4770 PROCic_sel(bit,i%+4,winh_main)
 4780 IF esg2=(i%+7) bit=1 ELSE bit=0
 4790 PROCic_sel(bit,i%+7,winh_main)
 4800NEXT
 4810FOR i%=20 TO 21
 4820 IF esg3=i% bit=1 ELSE bit=0
 4830 PROCic_sel(bit,i%,winh_main)
 4840NEXT
 4850PROCic_ch(STR$shear_deg,14,winh_main)
 4860ENDPROC
 4870:
 4880DEFFNtask_init(ver):DIM task_id% 20:$(task_id%+4)="TASK":!task_id%=0:SYS"Wimp_Initialise",ver,task_id%!4,task_name$,task_id% TO a,b:=b
 4890DEFPROCtemp_open(fnam$)
 4900SYS"XOS_File",23,fnam$ TO found,,,,temp_filelength ;flags
 4910flags=flags AND 1
 4920IF flags=1 OR found<>1 PROCmess_box1("NOLOAD",fnam$,"OK"):END
 4930SYS"Wimp_OpenTemplate",,fnam$
 4940ENDPROC
 4950DEFFNtemp(a$,fontref)
 4960SYS "Wimp_LoadTemplate",,temp_block,temp_ipoint,(temp_ibuff+temp_ilen),fontref,a$,0 TO ,,temp_ipoint,,,,fnd%
 4970SYS "Wimp_CreateWindow",,temp_block TO handle
 4980=handle
 4990DEFPROCwindow_open(han)
 5000block!0=han
 5010SYS "Wimp_GetWindowState",,block
 5020SYS "Wimp_OpenWindow",,block
 5030ENDPROC
 5040DEFPROCwindow_close(han)
 5050block!0=han
 5060SYS "Wimp_CloseWindow",,block
 5070ENDPROC
 5080DEFPROCwindow_position(han,x,y)
 5090block!0=han
 5100SYS "Wimp_GetWindowState",,block
 5110xS=block!12-block!4
 5120yS=block!16-block!8
 5130block!4=x
 5140block!8=y
 5150block!12=x+xS
 5160block!16=y+yS
 5170SYS "Wimp_OpenWindow",,block
 5180ENDPROC
 5190DEFPROCic_ch(data$,inum,hand)
 5200block!0=hand
 5210block!4=inum
 5220SYS "Wimp_GetIconState",,block
 5230block!8=0
 5240block!12=0
 5250$(block!28)=data$
 5260block!36=LEN(data$)
 5270SYS "Wimp_SetIconState",,block
 5280ENDPROC
 5290DEFFNic_rd(inum,hand)
 5300block!0=hand
 5310block!4=inum
 5320SYS "Wimp_GetIconState",,block
 5330=$(block!28)
 5340DEFPROCic_makeindspr(a$,adr,inum,hand,RETURN ihan)
 5350adr!0=hand
 5360adr!4=inum
 5370SYS"Wimp_GetIconState",,adr
 5380adr!4=adr!8
 5390adr!8=adr!12
 5400adr!12=adr!16
 5410adr!16=adr!20
 5420adr!20=&11A
 5430adr!24=(adr+42)
 5440$(adr+42)=a$+CHR$0
 5450adr!28=spr%
 5460adr!32=LEN(a$)
 5470SYS"Wimp_CreateIcon",,adr TO ihan
 5480ENDPROC
 5490DEFPROCic_valid(data$,inum,hand)
 5500block!0=hand
 5510block!4=inum
 5520SYS "Wimp_GetIconState",,block
 5530block!8=0
 5540block!12=0
 5550$(block!32)=data$
 5560SYS "Wimp_SetIconState",,block
 5570ENDPROC
 5580DEFPROCic_sel(bit,inum,hand)
 5590IF bit<>0 bit=1<<21
 5600block!0=hand
 5610block!4=inum
 5620SYS "Wimp_GetIconState",,block
 5630block!8=bit
 5640block!12=1<<21
 5650SYS "Wimp_SetIconState",,block
 5660ENDPROC
 5670DEFPROCic_grey(bit,inum,hand)
 5680IF bit<>0 bit=1<<22
 5690block!0=hand
 5700block!4=inum
 5710SYS "Wimp_GetIconState",,block
 5720block!8=bit
 5730block!12=1<<22
 5740SYS "Wimp_SetIconState",,block
 5750ENDPROC
 5760DEFFNic_readsel(inum,hand)
 5770block!0=hand
 5780block!4=inum
 5790SYS "Wimp_GetIconState",,block
 5800iflags=block!24
 5810iflags=iflags AND (1<<21)
 5820IF iflags>0 =1 ELSE =0
 5830DEFPROCmenu_make(menblok,base$,j$,items)
 5840LOCAL sub$,xx$,lbit$,ptr,submenp
 5850$menblok=FNtoken(base$+"T","")
 5860menblok?12=7
 5870menblok?13=2
 5880menblok?14=7
 5890menblok?15=0
 5900menblok!16=(VAL(FNtoken(base$+"W",""))*16)+16
 5910menblok!20=44
 5920menblok!24=0
 5930ptr=28
 5940sub$=j$
 5950def$=FNtoken(base$+"D","")
 5960FOR i%=1 TO items
 5970 lbit$=LEFT$(sub$,INSTR(sub$,"#")-1)
 5980 sub$=RIGHT$(sub$,LEN(sub$)-INSTR(sub$,"#"))
 5990 menblok!ptr=0
 6000 IF LEFT$(lbit$,1)="�" lbit$=RIGHT$(lbit$,LEN(lbit$)-1):menblok!ptr=(menblok!ptr) OR %1000
 6010 IF LEFT$(lbit$,1)="|" lbit$=RIGHT$(lbit$,LEN(lbit$)-1):menblok!ptr=(menblok!ptr) OR %10
 6020 IF i%=items menblok!ptr=menblok!ptr OR %10000000
 6030 IF lbit$="" submenp=-1 ELSE submenp=VAL(lbit$)
 6040 menblok!(ptr+4)=submenp
 6050 menblok!(ptr+8)=&7009031
 6060 lbit$=LEFT$(def$,INSTR(def$,",")-1)
 6070 def$=RIGHT$(def$,LEN(def$)-INSTR(def$,","))
 6080 $(menblok+(ptr+12))=lbit$
 6090 ptr+=24
 6100NEXT
 6110ENDPROC
 6120DEFFNmenu_space(num)
 6130=(num*24)+28+8
 6140DEFFNrd0(rdzp)
 6150rdz$=""
 6160rdzz=0
 6170REPEAT
 6180 IF rdzp?rdzz<>0 rdz$+=CHR$(rdzp?rdzz):rdzz+=1
 6190UNTIL rdzp?rdzz=0 OR rdzp=255
 6200=rdz$
 6210DEFPROCerror_rep
 6220block!0=0
 6230$(block+4)=FNtoken("FATALINT",STR$ERL+" ("+REPORT$+")")
 6240VDU 7
 6250SYS &400DF,block,0,task_name$
 6260SYS "Wimp_CloseDown",task_handle,&4B534154:END
 6270ENDPROC
 6280DEFPROCmen_tick(bit,hand,num)
 6290num=num*24
 6300num+=28
 6310num+=hand
 6320a=!num
 6330IF (a AND 1)=0 AND bit>0 !num=a+1
 6340IF (a AND 1)>0 AND bit=0 !num=a-1
 6350ENDPROC
 6360DEFPROCmen_grey(bit,hand,num)
 6370num=num*24
 6380num+=36
 6390num+=hand
 6400a=!num
 6410IF (a AND (1<<22))=0 AND bit>0 !num=a+(1<<22)
 6420IF (a AND (1<<22))>0 AND bit=0 !num=a-(1<<22)
 6430ENDPROC
 6440DEFFNrodot(a$)
 6450IF INSTR(a$,".")=0 =a$
 6460i=LENa$
 6470REPEAT:i-=1:UNTIL MID$(a$,i,1)="."
 6480=RIGHT$(a$,LENa$-i)
 6490DEFPROCradiolock(esg,icon,window)
 6500esg=(esg<<16)+&200000
 6510SYS"Wimp_WhichIcon",window,block,&3F0000,esg
 6520IF !block=-1 PROCic_sel(1,icon,window)
 6530ENDPROC
 6540DEFFNwhich(esg,window)
 6550esg=(esg<<16)+&200000
 6560SYS"Wimp_WhichIcon",window,block,&3F0000,esg
 6570=!block
 6580DEFPROCmess_load(file$)
 6590SYS"MessageTrans_FileInfo",,file$ TO ,,mess_buffsize
 6600DIM mess_buff% mess_buffsize
 6610DIM mess_desc% 17+LEN(file$)
 6620DIM mess_genbuff% 256
 6630$(mess_desc%+16)=file$
 6640SYS"MessageTrans_OpenFile",mess_desc%,mess_desc%+16,mess_buff%
 6650ENDPROC
 6660DEFPROCmess_close
 6670SYS"MessageTrans_CloseFile",mess_desc%
 6680ENDPROC
 6690DEFFNtoken(a$,b$)
 6700$mess_genbuff%=a$+CHR$(0)
 6710SYS"MessageTrans_Lookup",mess_desc%,mess_genbuff%,mess_genbuff%,255,b$,0,0,0
 6720=FNrd0(mess_genbuff%)
 6730DEFPROCmess_box1(token$,sub1$,resp$)
 6740PROCic_ch(FNtoken(token$,sub1$),0,winh_mes1)
 6750PROCic_ch(FNtoken(resp$,""),1,winh_mes1)
 6760VDU 7
 6770PROCwindow_position(winh_mes1,(FNscreen_x-738)/2,((FNscreen_y-276)/2)+40)
 6780PROCmouse_window(winh_mes1)
 6790icon=FNfakepoll
 6800PROCmouse_screen
 6810PROCwindow_close(winh_mes1)
 6820ENDPROC
 6830DEFFNmess_box2(token$,sub1$,resp1$,resp2$,resp3$)
 6840PROCic_ch(FNtoken(token$,sub1$),0,winh_mes2)
 6850PROCic_ch(FNtoken(resp1$,""),1,winh_mes2)
 6860PROCic_ch(FNtoken(resp2$,""),2,winh_mes2)
 6870VDU 7
 6880PROCwindow_position(winh_mes2,(FNscreen_x-738)/2,((FNscreen_y-276)/2)+40)
 6890PROCmouse_window(winh_mes2)
 6900icon=FNfakepoll
 6910PROCmouse_screen
 6920PROCwindow_close(winh_mes2)
 6930=icon
 6940DEFFNfakepoll
 6950REPEAT
 6960 REPEAT
 6970  SYS"Wimp_Poll",%1110011100000110011,block TO reason
 6980 UNTIL reason=6
 6990UNTIL (block!8=1 OR block!8=4) AND block!16>0
 7000=block!16
 7010DEFPROCmouse_window(hand)
 7020!block=hand
 7030SYS"Wimp_GetWindowOutline",,block
 7040?block=1
 7050block!1=block!4
 7060block!3=block!8
 7070block!5=block!12
 7080block!7=block!16
 7090SYS"OS_Word",21,block
 7100ENDPROC
 7110DEFPROCmouse_screen
 7120?block=1
 7130block!1=0
 7140block!3=0
 7150block!5=FNscreen_x
 7160block!7=FNscreen_y
 7170SYS"OS_Word",21,block
 7180ENDPROC
 7190DEFFNscreen_x
 7200SYS"OS_ReadModeVariable",-1,4 TO ,,xeig%
 7210xeig%=1<<xeig%
 7220SYS"OS_ReadModeVariable",-1,11 TO ,,xpix%
 7230xpix%+=1
 7240=xeig%*xpix%
 7250DEFFNscreen_y
 7260SYS"OS_ReadModeVariable",-1,5 TO ,,yeig%
 7270yeig%=1<<yeig%
 7280SYS"OS_ReadModeVariable",-1,12 TO ,,ypix%
 7290ypix%+=1
 7300=yeig%*ypix%
 7310DEFFNvar_checkexistance(var$)
 7320SYS"XOS_ReadVarVal",var$,,1<<31 TO ,,exists
 7330IF exists=0 =FALSE ELSE =TRUE
 7340DEFFNvar_get(var$)
 7350LOCAL a$,bytes,i%
 7360SYS"XOS_ReadVarVal",var$,block,255,0 TO ,,bytes;vset
 7370a$=""
 7380IF (vset AND 1)=0 THEN
 7390 FOR i%=block TO block+(bytes-1)
 7400  a$+=CHR$(?i%)
 7410 NEXT
 7420ENDIF
 7430=a$

� >!RunImage for !Italix
� By Ben Schofield
� �1994 Archimedes World
(� Hello hackers,
2H�  I know that this program isn't a major work of master programming
<7� but watch out for my Disassembler, coming soon...
F0� � �"Error Pre-init error ["+�$+" / "+�+"]"
P:
Ztask_version$="1.46"
dtask_name$="Italix"
n(task_path$="<Italix$Dir>.Resources."
xț task_path$+"DSLib"
�:
�task_handle=�task_init(310)
�:
�%�mess_load(task_path$+"Messages")
�� � �error_rep
�:
�	�init
�:
�+� Check that Font$Path is correctly set
�K� If you are having problems with this utility sodding up the machine's
�O�  fonts, then REM out these lines. And don't swear at me too much, I can't
�9�  find anything in the PRMs or Style Guide about it!
�+exists=�var_checkexistance("Font$Path")
� exists=� �
 a$=�var_get("Font$Path")
�
"
 a$=""
,�
60� �a$,".,Resources:$.Fonts.")=0 � exists=� �
@I ș"OS_SetVarVal","Font$Path","<Font$Prefix>.,Resources:$.Fonts.",,,2
J �"FontInstall"
T�
^:
h&�temp_open(task_path$+"Templates")
rO� font_info 256, font_main 256, font_xfse 256, font_mes1 256, font_mes2 256
|)winh_info=�temp("proginfo",font_info)
�%winh_main=�temp("main",font_main)
�*winh_xfse=�temp("xfer_send",font_xfse)
�)winh_mes1=�temp("message1",font_mes1)
�)winh_mes2=�temp("message2",font_mes2)
�ș "Wimp_CloseTemplate"
�:
��loadchoices
�:
�� men_misc �menu_space(3)
�0�menu_make(men_misc,"mMi",�winh_info+"##",3)
�� men_main �menu_space(3)
�=�menu_make(men_main,"mMa",�men_misc+"#"+�winh_xfse+"#",3)
�� men_bar �menu_space(2)
.�menu_make(men_bar,"mBa",�winh_info+"#",2)
:
5�ic_ch(task_name$+" v"+task_version$,7,winh_info)
&5�ic_makeindspr("drophere",isb%,10,winh_main,ish%)
0:
:	�ibar
D:
N�actions_shade(1)
X:
b� Polling loop
l�
v# ș"Wimp_Poll",1,block � reason
� Ȏ reason �
�  � 1:�redraw
�%  � 2:ș "Wimp_OpenWindow",,block
�&  � 3:ș "Wimp_CloseWindow",,block
�;  � 6:�click(block!0,block!4,block!8,block!12,block!16)
�  � 7:�file_dragend
�'  � 8:�key(!block,block!4,block!24)
�$  � 9:�menu_sel(block!0,block!4)
�  � 17,18:�mess
� �
�� �
�:
�
��quit
*ș "MessageTrans_CloseFile",mess_desc%
-ș "Wimp_CloseDown",task_handle,&4B534154
�
 �
*:
4��redraw
>(ș "Wimp_RedrawWindow",,block � more
Hȕ more
R+   ș "Wimp_GetRectangle",,block � more
\�
f�
p:
z
��init
�� temp_block 1400
�temp_ilen=1500
�� temp_ibuff temp_ilen
�temp_ipoint=temp_ibuff
�� block 256
�
� iblk 64
�� ibtxt 20
�� spr% 1000 ,isb% 64
�!spr%=1000
�
spr%!8=16
�ș&2E,9+256,spr%
�*ș&2E,10+256,spr%,task_path$+"Sprites"
�*ș"Wimp_SlotSize",-1,-1 � appsize_orig
data_start=�+8
xfer_xferring=�
xfer_point=data_start
$file_loaded=�
.file_sheared=�
8�
B:
L��key(wh%,ih%,keycode%)
V� keycode%=13 �
`
 Ȏ wh% �
j-  � winh_main:� ih%=14 �shear_anglelimits
t;  � winh_xfse:� ih%=2 �file_save(�ic_rd(2,winh_xfse)):�
~ �
��
�! ș"Wimp_ProcessKey",keycode%
��
��
�:
�'��click(msx%,msy%,msb%,mswh%,msih%)
�Ȏ mswh% �
� � -2:Ȏ msb% �
�$   � 1,4:�window_open(winh_main)
�E   � 2:ș"Wimp_CreateMenu",,men_bar,msx%-64,184:menu_last=men_bar
�  �
� � winh_main:Ȏ msb% �
   � 1,4:Ȏ msih% �

*     � 4,5,6:�radiolock(1,msih%,mswh%)
*     � 7,8,9:�radiolock(2,msih%,mswh%)
     � 15:�shear
(     � 16:�startdraw
2%     � 17:�window_open(winh_xfse)
<     � 18:�file_drop
F*     � 20,21:�radiolock(3,msih%,mswh%)
P	    �
ZH   � 2:ș"Wimp_CreateMenu",,men_main,msx%-64,msy%:menu_last=men_main
d  �
n- � winh_xfse:� msb%=1 � msb%=4 Ȏ msih% �
x%   � 0:�save(�ic_rd(2,winh_xfse))
�#   � 1:�window_close(winh_xfse)
�   � 3:�file_draginit
�  �
��
��
�:
�
��mess
�shan=block!4
�sref=block!8
�Ȏ block!16 �
� � 0:�quit
� � 1
�K  � �var_checkexistance("Wimp$Scrap")=� �mess_box1("NOSCRAP","","OK"):�
  � block!40=&AFF �
   !block=256
   block!12=block!8
"   block!16=2
,   block!36=-1
6$   $(block+44)="<Wimp$Scrap>"+�0
@,   ș"Wimp_SendMessage",17,block,block!4
J   file_loadref=block!8
T  �
^%   �mess_box1("ONLYDRAW","","OK")
h  �
r � 2
|  Ȏ block!12 �
�   � file_saveref
�    path$=�rd0(block+44)
�    �file_save(path$)
�-    � file_savedOK=� �file_supload(path$)
�    ș"Wimp_CreateMenu",,-1
�     �window_close(winh_xfse)
�  
�   �file_unex("DSAVEACK")
�  �
� � 3
�  Ȏ block!12 �
�   � 0:�file_load(0)
�#   � file_loadref:�file_load(1)
  
   �file_unex("DLOAD")
  �
&( � 6:xfer_lastref=block!8:�file_xfer
0 � &502:�helpreq
:�
D�
N:
X
��helpreq
b
a$="hlp_"
l� block!36=-1 �
v a$+="xxX"
��
� Ȏ block!32 �
�&  � winh_main:a$+="Ma"+�(block!36)
�&  � winh_xfse:a$+="Xf"+�(block!36)
�  � winh_info:a$+="InX"
�  � -2:a$+="BaX"
�
�8  ș"Wimp_GetMenuState",1,block+40,block!32,block!36
�#  snum0=block!40:snum1=block!44
�  Ȏ menu_last �
�!   � men_bar:a$+="mBa"+�snum0
�   � men_main:� snum0=0 �
�D                  � snum1>-1 a$+="mMi"+�snum1 � a$+="mMa"+�snum0
                 �
&                  a$+="mMa"+�snum0
                 �
   �
* �
4�
>$mess_genbuff%=a$+�0
HWș"XMessageTrans_Lookup",mess_desc%,mess_genbuff%,mess_genbuff%,255,0,0,0,0 � ;vset
RC� (vset � 1)=0 a$=�rd0(mess_genbuff%) � a$=�token("hlp_xxX","")
\!block=256
fblock!12=block!8
pblock!16=&503
z$(block+20)=a$+�0
�)ș"Wimp_SendMessage",17,block,block!4
��
�:
�
��ibar
�!iblk=-1
�iblk!4=0
�iblk!8=4
�iblk!12=64
�iblk!16=72
�iblk!20=&311A
�iblk!24=ibtxt
�iblk!28=spr%
�iblk!32=11
	$ibtxt="italix_ibar"
	*ș "Wimp_CreateIcon",,iblk � ihan_ibar
	�
	$:
	.��menu_sel(snum0,snum1)
	8Ȏ menu_last �
	B � men_bar:� snum0=1 �quit
	L � men_main:Ȏ snum0 �
	V   � 0:Ȏ snum1 �
	`     � 1:�savechoices
	j     � 2:�startdraw
	t	    �
	~   � 2:�file_drop
	�  �
	��
	�"ș"Wimp_GetPointerInfo",,block
	�I� block!8=1 � ș"Wimp_CreateMenu",,men_main � ș"Wimp_CreateMenu",,-1
	��
	��
	�:
	���actions_shade(bit)
	�� i%=15 � 18
	� �ic_grey(bit,i%,winh_main)
	��
	��men_grey(bit,men_main,1)
�men_grey(bit,men_main,2)

�men_grey(bit,men_misc,2)
�
:
(��shear
2J� file_sheared=� � �mess_box2("SHEARAGAIN","","CANCEL","SHEAR","")=1 �
<shear=�which(1,winh_main)-4
F$shear_from=�which(2,winh_main)-7
P�shear_anglelimits
Z5� �which(3,winh_main)=21 shear_deg=�(shear_deg)+1
dș"Hourglass_On"
nȎ shear �
x	 �0,1
�@  �dsl_shear(data_start,data_end,shear_deg,shear,shear_from)
� �2
�<  �dsl_shear(data_start,data_end,shear_deg,0,shear_from)
�<  �dsl_shear(data_start,data_end,shear_deg,1,shear_from)
��
�ș"Hourglass_Off"
�
�7:a=�(8)
��7
��window_open(winh_xfse)
�file_sheared=�
��
�:
���shear_anglelimits
num$=�ic_rd(14,winh_main)
shear_deg=�(num$)
A� shear_deg>89 shear_deg=89:�ic_ch(�(shear_deg),14,winh_main)
"�
,:
6��startdraw
@9� It is VITAL that the block length isn't set to 256.
J5� Thumbs up to Acorn for bug-testing properly....
T
call=0
^�
h8 ș"TaskManager_EnumerateTasks",call,block,24 � call
r tnp=block!4
| � call>0 a$=�rd0(tnp)
�� call<0 � a$="Draw"
�� a$="Draw" drawhan=!block
�L� call<0 ș"Wimp_StartTask","Filer_Run Resources:$.Apps.!Draw" � drawhan
�� drawhan=0 �
�xfer_point=data_start
�xfer_xferring=�
�block!0=256
�block!12=0
�block!16=1
�block!40=&AFF
�$(block+44)="Italixed"+�0
�)ș"Wimp_SendMessage",17,block,drawhan
�file_saveref=block!8
�
:
��file_load(delete)
&5� block!40<>&AFF �mess_box1("ONLYDRAW","","OK"):�
0file_name$=�rd0(block+44)
:� file_loaded=� �
D5 a=�mess_box2("ALRLOAD","","CANCEL","DISCARD","")
N/ � a=1 � delete=1 ș"XOS_File",6,file_name$
X � a=1 �
b�
l4ș"OS_File",23,file_name$ � found,,,,data_length
vM� found<>1 �mess_box1(�mess_lookup("NOTFOUND"),�rodot(file_name$),"OK"):�
�<ș"Wimp_SlotSize",appsize_orig+8+data_length+8,-1 � size
��� size<(appsize_orig+8+data_length+8) �mess_box1("CANTCLAIM",�(�(data_length/1024)+1),"OK"):ș"Wimp_SlotSize",appsize_orig,-1:�
�*ș"OS_File",16,file_name$,data_start,0
�?� found<>1 �mess_box1("NOTFOUND",�rodot(file_name$),"OK"):�
�(� delete=1 ș"XOS_File",6,file_name$
�!block=256
�block!12=sref
�block!16=4
�&ș"Wimp_SendMessage",17,block,shan
�file_loaded=�
�file_sheared=�
�#data_end=data_length+data_start
��actions_shade(0)

�window_open(winh_main)

�

:

 ��file_drop

*file_loaded=�

4file_sheared=�

>%ș"Wimp_SlotSize",appsize_orig,-1

H�actions_shade(1)

R�window_close(winh_xfse)

\�

f:

p��file_unex(a$)

z8ș"XTaskManager_TaskNameFromHandle",block!4 � a;vset

�� (vset � 1)>0 �

�taskn$=�rd0(a)

� �mess_box1(a$,taskn$,"OK"):�

��

�:

���file_draginit

�!block=winh_xfse

�"ș"Wimp_GetWindowState",,block

�x0=block!4

�y1=block!16

�!block=winh_xfse

�
block!4=3

� ș"Wimp_GetIconState",,block
$minx=block!8+x0:miny=block!12+y1
%maxx=block!16+x0:maxy=block!20+y1
!block=minx
$block!4=miny
.block!8=maxx
8block!12=maxy
B6ș"DragASprite_Start",%11000101,1,"file_aff",block
L)�ic_valid("R2;Pptr_hand",3,winh_xfse)
V�
`:
j��file_dragend
t3�ic_valid("R2;Sfile_aff;Pptr_hand",3,winh_xfse)
~ș"DragASprite_Stop"
�"ș"Wimp_GetPointerInfo",,block
�file_destx=block!0
�file_desty=block!4
�file_destwi=block!12
�file_destic=block!16
�%leaf$=�rodot(�ic_rd(2,winh_xfse))
�block!0=256
�block!12=0
�block!16=1
�block!20=file_destwi
�block!24=file_destic
�block!28=file_destx
block!32=file_desty

block!36=data_length
block!40=&AFF
$(block+44)=leaf$+�0
(9ș"Wimp_SendMessage",17,block,file_destwi,file_destic
2file_saveref=block!8
<�window_close(winh_xfse)
F�
P:
Z��file_save(a$)
dfile_savedOK=�
n9ș"XOS_File",10,a$,&AFF,,data_start,data_end � e;vset
xvset=vset � 1
�E� vset=0 file_savedOK=� � �mess_box1("SAVEFAILED",�rd0(e+4),"OK")
��
�:
���file_supload(a$)
�block!0=256
�block!12=sref
�block!16=3
�block!20=file_destwi
�block!24=file_destic
�block!28=file_destx
�block!32=file_desty
�block!36=data_length
�block!40=&AFF
$(block+44)=a$+�0
9ș"Wimp_SendMessage",17,block,file_destwi,file_destic
�
":
,��file_xfer
60� this part is a bit of bodge, but it works!
@xfer_destpoint=block!20
Jxfer_destlength=block!24
T
x=block!4
^;� xfer_xferring=� xfer_point=data_start:xfer_xferring=�
h� xfer_point<data_end �
rP � (xfer_point+xfer_destlength)>data_end xfer_destlength=data_end-xfer_point
|S ș"Wimp_TransferBlock",task_handle,xfer_point,x,xfer_destpoint,xfer_destlength
�  xfer_point+=xfer_destlength
��
� xfer_xferring=�
��
�)� xfer_point>data_end xfer_xferring=�
�!block=256
�
block!4=x
�block!12=xfer_lastref
�block!16=7
�block!20=xfer_destpoint
�Ȏ xfer_xferring �
� � �
�  block!24=xfer_destlength

  type=18

 block!24=0
& type=17
0�
:+ș"Wimp_SendMessage",type,block,block!4
D�
N:
X��savechoices
besg1=�which(1,winh_main)
lesg2=�which(2,winh_main)
vesg3=�which(3,winh_main)
��shear_anglelimits
�block!0=esg1
�block!4=esg2
�block!8=esg3
�block!12=shear_deg
�;ș"XOS_File",17,task_path$+"Choices" � found,,,,,attrib
�� found=1 �
� attrib=attrib � %10
�2 ș"XOS_File",4,task_path$+"Choices",,,,attrib
��
�Fș"XOS_File",10,task_path$+"Choices",&FFD,,block,block+16 � e;vset
�:� (vset � 1)>0 �mess_box1("SAVEFAILED",�rd0(e+4),"OK")
��
:
��loadchoices
?ș"XOS_File",16,task_path$+"Choices",block,0 � found ;flags
  � (flags � 1)=1 � found<>1 �
* esg1=5
4 esg2=8
> esg3=20
H shear_deg=30
R�
\ esg1=block!0
f esg2=block!4
p esg3=block!8
z shear_deg=block!12
��
�� i%=0 � 2
�  � esg1=(i%+4) bit=1 � bit=0
�  �ic_sel(bit,i%+4,winh_main)
�  � esg2=(i%+7) bit=1 � bit=0
�  �ic_sel(bit,i%+7,winh_main)
��
�� i%=20 � 21
� � esg3=i% bit=1 � bit=0
� �ic_sel(bit,i%,winh_main)
��
�#�ic_ch(�shear_deg,14,winh_main)
��
:
�ݤtask_init(ver):� task_id% 20:$(task_id%+4)="TASK":!task_id%=0:ș"Wimp_Initialise",ver,task_id%!4,task_name$,task_id% � a,b:=b
��temp_open(fnam$)
$;ș"XOS_File",23,fnam$ � found,,,,temp_filelength ;flags
.flags=flags � 1
8:� flags=1 � found<>1 �mess_box1("NOLOAD",fnam$,"OK"):�
B ș"Wimp_OpenTemplate",,fnam$
L�
Vݤtemp(a$,fontref)
`nș "Wimp_LoadTemplate",,temp_block,temp_ipoint,(temp_ibuff+temp_ilen),fontref,a$,0 � ,,temp_ipoint,,,,fnd%
j/ș "Wimp_CreateWindow",,temp_block � handle
t=handle
~��window_open(han)
�block!0=han
�#ș "Wimp_GetWindowState",,block
�ș "Wimp_OpenWindow",,block
��
���window_close(han)
�block!0=han
� ș "Wimp_CloseWindow",,block
��
���window_position(han,x,y)
�block!0=han
�#ș "Wimp_GetWindowState",,block
�xS=block!12-block!4
yS=block!16-block!8


block!4=x

block!8=y
block!12=x+xS
(block!16=y+yS
2ș "Wimp_OpenWindow",,block
<�
F��ic_ch(data$,inum,hand)
Pblock!0=hand
Zblock!4=inum
d!ș "Wimp_GetIconState",,block
n
block!8=0
xblock!12=0
�$(block!28)=data$
�block!36=�(data$)
�!ș "Wimp_SetIconState",,block
��
�ݤic_rd(inum,hand)
�block!0=hand
�block!4=inum
�!ș "Wimp_GetIconState",,block
�=$(block!28)
�,��ic_makeindspr(a$,adr,inum,hand,� ihan)
�adr!0=hand
�adr!4=inum
�ș"Wimp_GetIconState",,adr
adr!4=adr!8
adr!8=adr!12
adr!12=adr!16
"adr!16=adr!20
,adr!20=&11A
6adr!24=(adr+42)
@$(adr+42)=a$+�0
Jadr!28=spr%
Tadr!32=�(a$)
^#ș"Wimp_CreateIcon",,adr � ihan
h�
r��ic_valid(data$,inum,hand)
|block!0=hand
�block!4=inum
�!ș "Wimp_GetIconState",,block
�
block!8=0
�block!12=0
�$(block!32)=data$
�!ș "Wimp_SetIconState",,block
��
���ic_sel(bit,inum,hand)
�� bit<>0 bit=1<<21
�block!0=hand
�block!4=inum
�!ș "Wimp_GetIconState",,block
�block!8=bit
block!12=1<<21
!ș "Wimp_SetIconState",,block
�
&��ic_grey(bit,inum,hand)
0� bit<>0 bit=1<<22
:block!0=hand
Dblock!4=inum
N!ș "Wimp_GetIconState",,block
Xblock!8=bit
bblock!12=1<<22
l!ș "Wimp_SetIconState",,block
v�
�ݤic_readsel(inum,hand)
�block!0=hand
�block!4=inum
�!ș "Wimp_GetIconState",,block
�iflags=block!24
�iflags=iflags � (1<<21)
�� iflags>0 =1 � =0
�'��menu_make(menblok,base$,j$,items)
� � sub$,xx$,lbit$,ptr,submenp
�!$menblok=�token(base$+"T","")
�menblok?12=7
�menblok?13=2
�menblok?14=7
menblok?15=0
.menblok!16=(�(�token(base$+"W",""))*16)+16
menblok!20=44
 menblok!24=0
*
ptr=28
4sub$=j$
>def$=�token(base$+"D","")
H� i%=1 � items
R lbit$=�sub$,�sub$,"#")-1)
\# sub$=�sub$,�(sub$)-�sub$,"#"))
f menblok!ptr=0
pO � �lbit$,1)="�" lbit$=�lbit$,�(lbit$)-1):menblok!ptr=(menblok!ptr) � %1000
zM � �lbit$,1)="|" lbit$=�lbit$,�(lbit$)-1):menblok!ptr=(menblok!ptr) � %10
�3 � i%=items menblok!ptr=menblok!ptr � %10000000
�- � lbit$="" submenp=-1 � submenp=�(lbit$)
� menblok!(ptr+4)=submenp
� menblok!(ptr+8)=&7009031
� lbit$=�def$,�def$,",")-1)
�# def$=�def$,�(def$)-�def$,","))
� $(menblok+(ptr+12))=lbit$
� ptr+=24
��
��
�ݤmenu_space(num)
�=(num*24)+28+8
�ݤrd0(rdzp)
rdz$=""

rdzz=0
�
$. � rdzp?rdzz<>0 rdz$+=�(rdzp?rdzz):rdzz+=1
.� rdzp?rdzz=0 � rdzp=255
8	=rdz$
B��error_rep
L
block!0=0
V0$(block+4)=�token("FATALINT",Þ+" ("+�$+")")
`� 7
j ș &400DF,block,0,task_name$
t/ș "Wimp_CloseDown",task_handle,&4B534154:�
~�
���men_tick(bit,hand,num)
�num=num*24
�num+=28
�
num+=hand
�
a=!num
� � (a � 1)=0 � bit>0 !num=a+1
� � (a � 1)>0 � bit=0 !num=a-1
��
���men_grey(bit,hand,num)
�num=num*24
�num+=36
�
num+=hand

a=!num

,� (a � (1<<22))=0 � bit>0 !num=a+(1<<22)
,� (a � (1<<22))>0 � bit=0 !num=a-(1<<22)
�
(ݤrodot(a$)
2� �a$,".")=0 =a$
<	i=�a$
F�:i-=1:� �a$,i,1)="."
P=�a$,�a$-i)
Z ��radiolock(esg,icon,window)
desg=(esg<<16)+&200000
n/ș"Wimp_WhichIcon",window,block,&3F0000,esg
x&� !block=-1 �ic_sel(1,icon,window)
��
�ݤwhich(esg,window)
�esg=(esg<<16)+&200000
�/ș"Wimp_WhichIcon",window,block,&3F0000,esg
�=!block
���mess_load(file$)
�6ș"MessageTrans_FileInfo",,file$ � ,,mess_buffsize
�� mess_buff% mess_buffsize
�� mess_desc% 17+�(file$)
�� mess_genbuff% 256
�$(mess_desc%+16)=file$
�Aș"MessageTrans_OpenFile",mess_desc%,mess_desc%+16,mess_buff%
��
��mess_close
)ș"MessageTrans_CloseFile",mess_desc%
�
"ݤtoken(a$,b$)
,$mess_genbuff%=a$+�(0)
6Oș"MessageTrans_Lookup",mess_desc%,mess_genbuff%,mess_genbuff%,255,b$,0,0,0
@=�rd0(mess_genbuff%)
J#��mess_box1(token$,sub1$,resp$)
T,�ic_ch(�token(token$,sub1$),0,winh_mes1)
^(�ic_ch(�token(resp$,""),1,winh_mes1)
h� 7
rH�window_position(winh_mes1,(�screen_x-738)/2,((�screen_y-276)/2)+40)
|�mouse_window(winh_mes1)
�icon=�fakepoll
��mouse_screen
��window_close(winh_mes1)
��
�2ݤmess_box2(token$,sub1$,resp1$,resp2$,resp3$)
�,�ic_ch(�token(token$,sub1$),0,winh_mes2)
�)�ic_ch(�token(resp1$,""),1,winh_mes2)
�)�ic_ch(�token(resp2$,""),2,winh_mes2)
�� 7
�H�window_position(winh_mes2,(�screen_x-738)/2,((�screen_y-276)/2)+40)
��mouse_window(winh_mes2)
�icon=�fakepoll
��mouse_screen
�window_close(winh_mes2)
	=icon
ݤfakepoll
&�
0 �
:7  ș"Wimp_Poll",%1110011100000110011,block � reason
D � reason=6
N*� (block!8=1 � block!8=4) � block!16>0
X
=block!16
b��mouse_window(hand)
l!block=hand
v$ș"Wimp_GetWindowOutline",,block
�?block=1
�block!1=block!4
�block!3=block!8
�block!5=block!12
�block!7=block!16
�ș"OS_Word",21,block
��
���mouse_screen
�?block=1
�
block!1=0
�
block!3=0
�block!5=�screen_x
�block!7=�screen_y
ș"OS_Word",21,block
�
ݤscreen_x
 *ș"OS_ReadModeVariable",-1,4 � ,,xeig%
*xeig%=1<<xeig%
4+ș"OS_ReadModeVariable",-1,11 � ,,xpix%
>xpix%+=1
H=xeig%*xpix%
Rݤscreen_y
\*ș"OS_ReadModeVariable",-1,5 � ,,yeig%
fyeig%=1<<yeig%
p+ș"OS_ReadModeVariable",-1,12 � ,,ypix%
zypix%+=1
�=yeig%*ypix%
�ݤvar_checkexistance(var$)
�-ș"XOS_ReadVarVal",var$,,1<<31 � ,,exists
�� exists=0 =� � =�
�ݤvar_get(var$)
�� a$,bytes,i%
�6ș"XOS_ReadVarVal",var$,block,255,0 � ,,bytes;vset
�	a$=""
�� (vset � 1)=0 �
�! � i%=block � block+(bytes-1)
�  a$+=�(?i%)
� �
��
=a$
�
00000000  0d 00 0a 1c f4 20 3e 21  52 75 6e 49 6d 61 67 65  |..... >!RunImage|
00000010  20 66 6f 72 20 21 49 74  61 6c 69 78 0d 00 14 16  | for !Italix....|
00000020  f4 20 42 79 20 42 65 6e  20 53 63 68 6f 66 69 65  |. By Ben Schofie|
00000030  6c 64 0d 00 1e 1c f4 20  a9 31 39 39 34 20 41 72  |ld..... .1994 Ar|
00000040  63 68 69 6d 65 64 65 73  20 57 6f 72 6c 64 0d 00  |chimedes World..|
00000050  28 14 f4 20 48 65 6c 6c  6f 20 68 61 63 6b 65 72  |(.. Hello hacker|
00000060  73 2c 0d 00 32 48 f4 20  20 49 20 6b 6e 6f 77 20  |s,..2H.  I know |
00000070  74 68 61 74 20 74 68 69  73 20 70 72 6f 67 72 61  |that this progra|
00000080  6d 20 69 73 6e 27 74 20  61 20 6d 61 6a 6f 72 20  |m isn't a major |
00000090  77 6f 72 6b 20 6f 66 20  6d 61 73 74 65 72 20 70  |work of master p|
000000a0  72 6f 67 72 61 6d 6d 69  6e 67 0d 00 3c 37 f4 20  |rogramming..<7. |
000000b0  62 75 74 20 77 61 74 63  68 20 6f 75 74 20 66 6f  |but watch out fo|
000000c0  72 20 6d 79 20 44 69 73  61 73 73 65 6d 62 6c 65  |r my Disassemble|
000000d0  72 2c 20 63 6f 6d 69 6e  67 20 73 6f 6f 6e 2e 2e  |r, coming soon..|
000000e0  2e 0d 00 46 30 ee 20 85  20 ff 22 45 72 72 6f 72  |...F0. . ."Error|
000000f0  20 50 72 65 2d 69 6e 69  74 20 65 72 72 6f 72 20  | Pre-init error |
00000100  5b 22 2b f6 24 2b 22 20  2f 20 22 2b 9e 2b 22 5d  |["+.$+" / "+.+"]|
00000110  22 0d 00 50 05 3a 0d 00  5a 18 74 61 73 6b 5f 76  |"..P.:..Z.task_v|
00000120  65 72 73 69 6f 6e 24 3d  22 31 2e 34 36 22 0d 00  |ersion$="1.46"..|
00000130  64 17 74 61 73 6b 5f 6e  61 6d 65 24 3d 22 49 74  |d.task_name$="It|
00000140  61 6c 69 78 22 0d 00 6e  28 74 61 73 6b 5f 70 61  |alix"..n(task_pa|
00000150  74 68 24 3d 22 3c 49 74  61 6c 69 78 24 44 69 72  |th$="<Italix$Dir|
00000160  3e 2e 52 65 73 6f 75 72  63 65 73 2e 22 0d 00 78  |>.Resources."..x|
00000170  19 c8 9b 20 74 61 73 6b  5f 70 61 74 68 24 2b 22  |... task_path$+"|
00000180  44 53 4c 69 62 22 0d 00  82 05 3a 0d 00 8c 1f 74  |DSLib"....:....t|
00000190  61 73 6b 5f 68 61 6e 64  6c 65 3d a4 74 61 73 6b  |ask_handle=.task|
000001a0  5f 69 6e 69 74 28 33 31  30 29 0d 00 96 05 3a 0d  |_init(310)....:.|
000001b0  00 a0 25 f2 6d 65 73 73  5f 6c 6f 61 64 28 74 61  |..%.mess_load(ta|
000001c0  73 6b 5f 70 61 74 68 24  2b 22 4d 65 73 73 61 67  |sk_path$+"Messag|
000001d0  65 73 22 29 0d 00 aa 12  ee 20 85 20 f2 65 72 72  |es")..... . .err|
000001e0  6f 72 5f 72 65 70 0d 00  b4 05 3a 0d 00 be 09 f2  |or_rep....:.....|
000001f0  69 6e 69 74 0d 00 c8 05  3a 0d 00 d2 2b f4 20 43  |init....:...+. C|
00000200  68 65 63 6b 20 74 68 61  74 20 46 6f 6e 74 24 50  |heck that Font$P|
00000210  61 74 68 20 69 73 20 63  6f 72 72 65 63 74 6c 79  |ath is correctly|
00000220  20 73 65 74 0d 00 dc 4b  f4 20 49 66 20 79 6f 75  | set...K. If you|
00000230  20 61 72 65 20 68 61 76  69 6e 67 20 70 72 6f 62  | are having prob|
00000240  6c 65 6d 73 20 77 69 74  68 20 74 68 69 73 20 75  |lems with this u|
00000250  74 69 6c 69 74 79 20 73  6f 64 64 69 6e 67 20 75  |tility sodding u|
00000260  70 20 74 68 65 20 6d 61  63 68 69 6e 65 27 73 0d  |p the machine's.|
00000270  00 e6 4f f4 20 20 66 6f  6e 74 73 2c 20 74 68 65  |..O.  fonts, the|
00000280  6e 20 52 45 4d 20 6f 75  74 20 74 68 65 73 65 20  |n REM out these |
00000290  6c 69 6e 65 73 2e 20 41  6e 64 20 64 6f 6e 27 74  |lines. And don't|
000002a0  20 73 77 65 61 72 20 61  74 20 6d 65 20 74 6f 6f  | swear at me too|
000002b0  20 6d 75 63 68 2c 20 49  20 63 61 6e 27 74 0d 00  | much, I can't..|
000002c0  f0 39 f4 20 20 66 69 6e  64 20 61 6e 79 74 68 69  |.9.  find anythi|
000002d0  6e 67 20 69 6e 20 74 68  65 20 50 52 4d 73 20 6f  |ng in the PRMs o|
000002e0  72 20 53 74 79 6c 65 20  47 75 69 64 65 20 61 62  |r Style Guide ab|
000002f0  6f 75 74 20 69 74 21 0d  00 fa 2b 65 78 69 73 74  |out it!...+exist|
00000300  73 3d a4 76 61 72 5f 63  68 65 63 6b 65 78 69 73  |s=.var_checkexis|
00000310  74 61 6e 63 65 28 22 46  6f 6e 74 24 50 61 74 68  |tance("Font$Path|
00000320  22 29 0d 01 04 10 e7 20  65 78 69 73 74 73 3d b9  |")..... exists=.|
00000330  20 8c 0d 01 0e 1d 20 61  24 3d a4 76 61 72 5f 67  | ..... a$=.var_g|
00000340  65 74 28 22 46 6f 6e 74  24 50 61 74 68 22 29 0d  |et("Font$Path").|
00000350  01 18 05 cc 0d 01 22 0a  20 61 24 3d 22 22 0d 01  |......". a$=""..|
00000360  2c 05 cd 0d 01 36 30 e7  20 a7 61 24 2c 22 2e 2c  |,....60. .a$,".,|
00000370  52 65 73 6f 75 72 63 65  73 3a 24 2e 46 6f 6e 74  |Resources:$.Font|
00000380  73 2e 22 29 3d 30 20 84  20 65 78 69 73 74 73 3d  |s.")=0 . exists=|
00000390  a3 20 8c 0d 01 40 49 20  c8 99 22 4f 53 5f 53 65  |. ...@I .."OS_Se|
000003a0  74 56 61 72 56 61 6c 22  2c 22 46 6f 6e 74 24 50  |tVarVal","Font$P|
000003b0  61 74 68 22 2c 22 3c 46  6f 6e 74 24 50 72 65 66  |ath","<Font$Pref|
000003c0  69 78 3e 2e 2c 52 65 73  6f 75 72 63 65 73 3a 24  |ix>.,Resources:$|
000003d0  2e 46 6f 6e 74 73 2e 22  2c 2c 2c 32 0d 01 4a 13  |.Fonts.",,,2..J.|
000003e0  20 ff 22 46 6f 6e 74 49  6e 73 74 61 6c 6c 22 0d  | ."FontInstall".|
000003f0  01 54 05 cd 0d 01 5e 05  3a 0d 01 68 26 f2 74 65  |.T....^.:..h&.te|
00000400  6d 70 5f 6f 70 65 6e 28  74 61 73 6b 5f 70 61 74  |mp_open(task_pat|
00000410  68 24 2b 22 54 65 6d 70  6c 61 74 65 73 22 29 0d  |h$+"Templates").|
00000420  01 72 4f de 20 66 6f 6e  74 5f 69 6e 66 6f 20 32  |.rO. font_info 2|
00000430  35 36 2c 20 66 6f 6e 74  5f 6d 61 69 6e 20 32 35  |56, font_main 25|
00000440  36 2c 20 66 6f 6e 74 5f  78 66 73 65 20 32 35 36  |6, font_xfse 256|
00000450  2c 20 66 6f 6e 74 5f 6d  65 73 31 20 32 35 36 2c  |, font_mes1 256,|
00000460  20 66 6f 6e 74 5f 6d 65  73 32 20 32 35 36 0d 01  | font_mes2 256..|
00000470  7c 29 77 69 6e 68 5f 69  6e 66 6f 3d a4 74 65 6d  ||)winh_info=.tem|
00000480  70 28 22 70 72 6f 67 69  6e 66 6f 22 2c 66 6f 6e  |p("proginfo",fon|
00000490  74 5f 69 6e 66 6f 29 0d  01 86 25 77 69 6e 68 5f  |t_info)...%winh_|
000004a0  6d 61 69 6e 3d a4 74 65  6d 70 28 22 6d 61 69 6e  |main=.temp("main|
000004b0  22 2c 66 6f 6e 74 5f 6d  61 69 6e 29 0d 01 90 2a  |",font_main)...*|
000004c0  77 69 6e 68 5f 78 66 73  65 3d a4 74 65 6d 70 28  |winh_xfse=.temp(|
000004d0  22 78 66 65 72 5f 73 65  6e 64 22 2c 66 6f 6e 74  |"xfer_send",font|
000004e0  5f 78 66 73 65 29 0d 01  9a 29 77 69 6e 68 5f 6d  |_xfse)...)winh_m|
000004f0  65 73 31 3d a4 74 65 6d  70 28 22 6d 65 73 73 61  |es1=.temp("messa|
00000500  67 65 31 22 2c 66 6f 6e  74 5f 6d 65 73 31 29 0d  |ge1",font_mes1).|
00000510  01 a4 29 77 69 6e 68 5f  6d 65 73 32 3d a4 74 65  |..)winh_mes2=.te|
00000520  6d 70 28 22 6d 65 73 73  61 67 65 32 22 2c 66 6f  |mp("message2",fo|
00000530  6e 74 5f 6d 65 73 32 29  0d 01 ae 1b c8 99 20 22  |nt_mes2)...... "|
00000540  57 69 6d 70 5f 43 6c 6f  73 65 54 65 6d 70 6c 61  |Wimp_CloseTempla|
00000550  74 65 22 0d 01 b8 05 3a  0d 01 c2 10 f2 6c 6f 61  |te"....:.....loa|
00000560  64 63 68 6f 69 63 65 73  0d 01 cc 05 3a 0d 01 d6  |dchoices....:...|
00000570  1d de 20 6d 65 6e 5f 6d  69 73 63 20 a4 6d 65 6e  |.. men_misc .men|
00000580  75 5f 73 70 61 63 65 28  33 29 0d 01 e0 30 f2 6d  |u_space(3)...0.m|
00000590  65 6e 75 5f 6d 61 6b 65  28 6d 65 6e 5f 6d 69 73  |enu_make(men_mis|
000005a0  63 2c 22 6d 4d 69 22 2c  c3 77 69 6e 68 5f 69 6e  |c,"mMi",.winh_in|
000005b0  66 6f 2b 22 23 23 22 2c  33 29 0d 01 ea 1d de 20  |fo+"##",3)..... |
000005c0  6d 65 6e 5f 6d 61 69 6e  20 a4 6d 65 6e 75 5f 73  |men_main .menu_s|
000005d0  70 61 63 65 28 33 29 0d  01 f4 3d f2 6d 65 6e 75  |pace(3)...=.menu|
000005e0  5f 6d 61 6b 65 28 6d 65  6e 5f 6d 61 69 6e 2c 22  |_make(men_main,"|
000005f0  6d 4d 61 22 2c c3 6d 65  6e 5f 6d 69 73 63 2b 22  |mMa",.men_misc+"|
00000600  23 22 2b c3 77 69 6e 68  5f 78 66 73 65 2b 22 23  |#"+.winh_xfse+"#|
00000610  22 2c 33 29 0d 01 fe 1c  de 20 6d 65 6e 5f 62 61  |",3)..... men_ba|
00000620  72 20 a4 6d 65 6e 75 5f  73 70 61 63 65 28 32 29  |r .menu_space(2)|
00000630  0d 02 08 2e f2 6d 65 6e  75 5f 6d 61 6b 65 28 6d  |.....menu_make(m|
00000640  65 6e 5f 62 61 72 2c 22  6d 42 61 22 2c c3 77 69  |en_bar,"mBa",.wi|
00000650  6e 68 5f 69 6e 66 6f 2b  22 23 22 2c 32 29 0d 02  |nh_info+"#",2)..|
00000660  12 05 3a 0d 02 1c 35 f2  69 63 5f 63 68 28 74 61  |..:...5.ic_ch(ta|
00000670  73 6b 5f 6e 61 6d 65 24  2b 22 20 76 22 2b 74 61  |sk_name$+" v"+ta|
00000680  73 6b 5f 76 65 72 73 69  6f 6e 24 2c 37 2c 77 69  |sk_version$,7,wi|
00000690  6e 68 5f 69 6e 66 6f 29  0d 02 26 35 f2 69 63 5f  |nh_info)..&5.ic_|
000006a0  6d 61 6b 65 69 6e 64 73  70 72 28 22 64 72 6f 70  |makeindspr("drop|
000006b0  68 65 72 65 22 2c 69 73  62 25 2c 31 30 2c 77 69  |here",isb%,10,wi|
000006c0  6e 68 5f 6d 61 69 6e 2c  69 73 68 25 29 0d 02 30  |nh_main,ish%)..0|
000006d0  05 3a 0d 02 3a 09 f2 69  62 61 72 0d 02 44 05 3a  |.:..:..ibar..D.:|
000006e0  0d 02 4e 15 f2 61 63 74  69 6f 6e 73 5f 73 68 61  |..N..actions_sha|
000006f0  64 65 28 31 29 0d 02 58  05 3a 0d 02 62 12 f4 20  |de(1)..X.:..b.. |
00000700  50 6f 6c 6c 69 6e 67 20  6c 6f 6f 70 0d 02 6c 05  |Polling loop..l.|
00000710  f5 0d 02 76 23 20 c8 99  22 57 69 6d 70 5f 50 6f  |...v# .."Wimp_Po|
00000720  6c 6c 22 2c 31 2c 62 6c  6f 63 6b 20 b8 20 72 65  |ll",1,block . re|
00000730  61 73 6f 6e 0d 02 80 10  20 c8 8e 20 72 65 61 73  |ason.... .. reas|
00000740  6f 6e 20 ca 0d 02 8a 11  20 20 c9 20 31 3a f2 72  |on .....  . 1:.r|
00000750  65 64 72 61 77 0d 02 94  25 20 20 c9 20 32 3a c8  |edraw...%  . 2:.|
00000760  99 20 22 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |. "Wimp_OpenWind|
00000770  6f 77 22 2c 2c 62 6c 6f  63 6b 0d 02 9e 26 20 20  |ow",,block...&  |
00000780  c9 20 33 3a c8 99 20 22  57 69 6d 70 5f 43 6c 6f  |. 3:.. "Wimp_Clo|
00000790  73 65 57 69 6e 64 6f 77  22 2c 2c 62 6c 6f 63 6b  |seWindow",,block|
000007a0  0d 02 a8 3b 20 20 c9 20  36 3a f2 63 6c 69 63 6b  |...;  . 6:.click|
000007b0  28 62 6c 6f 63 6b 21 30  2c 62 6c 6f 63 6b 21 34  |(block!0,block!4|
000007c0  2c 62 6c 6f 63 6b 21 38  2c 62 6c 6f 63 6b 21 31  |,block!8,block!1|
000007d0  32 2c 62 6c 6f 63 6b 21  31 36 29 0d 02 b2 17 20  |2,block!16).... |
000007e0  20 c9 20 37 3a f2 66 69  6c 65 5f 64 72 61 67 65  | . 7:.file_drage|
000007f0  6e 64 0d 02 bc 27 20 20  c9 20 38 3a f2 6b 65 79  |nd...'  . 8:.key|
00000800  28 21 62 6c 6f 63 6b 2c  62 6c 6f 63 6b 21 34 2c  |(!block,block!4,|
00000810  62 6c 6f 63 6b 21 32 34  29 0d 02 c6 24 20 20 c9  |block!24)...$  .|
00000820  20 39 3a f2 6d 65 6e 75  5f 73 65 6c 28 62 6c 6f  | 9:.menu_sel(blo|
00000830  63 6b 21 30 2c 62 6c 6f  63 6b 21 34 29 0d 02 d0  |ck!0,block!4)...|
00000840  13 20 20 c9 20 31 37 2c  31 38 3a f2 6d 65 73 73  |.  . 17,18:.mess|
00000850  0d 02 da 06 20 cb 0d 02  e4 07 fd 20 a3 0d 02 ee  |.... ...... ....|
00000860  05 3a 0d 02 f8 0a dd f2  71 75 69 74 0d 03 02 2a  |.:......quit...*|
00000870  c8 99 20 22 4d 65 73 73  61 67 65 54 72 61 6e 73  |.. "MessageTrans|
00000880  5f 43 6c 6f 73 65 46 69  6c 65 22 2c 6d 65 73 73  |_CloseFile",mess|
00000890  5f 64 65 73 63 25 0d 03  0c 2d c8 99 20 22 57 69  |_desc%...-.. "Wi|
000008a0  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 22 2c 74 61  |mp_CloseDown",ta|
000008b0  73 6b 5f 68 61 6e 64 6c  65 2c 26 34 42 35 33 34  |sk_handle,&4B534|
000008c0  31 35 34 0d 03 16 05 e0  0d 03 20 05 e1 0d 03 2a  |154....... ....*|
000008d0  05 3a 0d 03 34 0c dd f2  72 65 64 72 61 77 0d 03  |.:..4...redraw..|
000008e0  3e 28 c8 99 20 22 57 69  6d 70 5f 52 65 64 72 61  |>(.. "Wimp_Redra|
000008f0  77 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 20  |wWindow",,block |
00000900  b8 20 6d 6f 72 65 0d 03  48 0b c8 95 20 6d 6f 72  |. more..H... mor|
00000910  65 0d 03 52 2b 20 20 20  c8 99 20 22 57 69 6d 70  |e..R+   .. "Wimp|
00000920  5f 47 65 74 52 65 63 74  61 6e 67 6c 65 22 2c 2c  |_GetRectangle",,|
00000930  62 6c 6f 63 6b 20 b8 20  6d 6f 72 65 0d 03 5c 05  |block . more..\.|
00000940  ce 0d 03 66 05 e1 0d 03  70 05 3a 0d 03 7a 0a dd  |...f....p.:..z..|
00000950  f2 69 6e 69 74 0d 03 84  15 de 20 74 65 6d 70 5f  |.init..... temp_|
00000960  62 6c 6f 63 6b 20 31 34  30 30 0d 03 8e 12 74 65  |block 1400....te|
00000970  6d 70 5f 69 6c 65 6e 3d  31 35 30 30 0d 03 98 1a  |mp_ilen=1500....|
00000980  de 20 74 65 6d 70 5f 69  62 75 66 66 20 74 65 6d  |. temp_ibuff tem|
00000990  70 5f 69 6c 65 6e 0d 03  a2 1a 74 65 6d 70 5f 69  |p_ilen....temp_i|
000009a0  70 6f 69 6e 74 3d 74 65  6d 70 5f 69 62 75 66 66  |point=temp_ibuff|
000009b0  0d 03 ac 0f de 20 62 6c  6f 63 6b 20 32 35 36 0d  |..... block 256.|
000009c0  03 b6 0d de 20 69 62 6c  6b 20 36 34 0d 03 c0 0e  |.... iblk 64....|
000009d0  de 20 69 62 74 78 74 20  32 30 0d 03 ca 18 de 20  |. ibtxt 20..... |
000009e0  73 70 72 25 20 31 30 30  30 20 2c 69 73 62 25 20  |spr% 1000 ,isb% |
000009f0  36 34 0d 03 d4 0e 21 73  70 72 25 3d 31 30 30 30  |64....!spr%=1000|
00000a00  0d 03 de 0d 73 70 72 25  21 38 3d 31 36 0d 03 e8  |....spr%!8=16...|
00000a10  14 c8 99 26 32 45 2c 39  2b 32 35 36 2c 73 70 72  |...&2E,9+256,spr|
00000a20  25 0d 03 f2 2a c8 99 26  32 45 2c 31 30 2b 32 35  |%...*..&2E,10+25|
00000a30  36 2c 73 70 72 25 2c 74  61 73 6b 5f 70 61 74 68  |6,spr%,task_path|
00000a40  24 2b 22 53 70 72 69 74  65 73 22 0d 03 fc 2a c8  |$+"Sprites"...*.|
00000a50  99 22 57 69 6d 70 5f 53  6c 6f 74 53 69 7a 65 22  |."Wimp_SlotSize"|
00000a60  2c 2d 31 2c 2d 31 20 b8  20 61 70 70 73 69 7a 65  |,-1,-1 . appsize|
00000a70  5f 6f 72 69 67 0d 04 06  12 64 61 74 61 5f 73 74  |_orig....data_st|
00000a80  61 72 74 3d 93 2b 38 0d  04 10 13 78 66 65 72 5f  |art=.+8....xfer_|
00000a90  78 66 65 72 72 69 6e 67  3d a3 0d 04 1a 19 78 66  |xferring=.....xf|
00000aa0  65 72 5f 70 6f 69 6e 74  3d 64 61 74 61 5f 73 74  |er_point=data_st|
00000ab0  61 72 74 0d 04 24 11 66  69 6c 65 5f 6c 6f 61 64  |art..$.file_load|
00000ac0  65 64 3d a3 0d 04 2e 12  66 69 6c 65 5f 73 68 65  |ed=.....file_she|
00000ad0  61 72 65 64 3d a3 0d 04  38 05 e1 0d 04 42 05 3a  |ared=...8....B.:|
00000ae0  0d 04 4c 1b dd f2 6b 65  79 28 77 68 25 2c 69 68  |..L...key(wh%,ih|
00000af0  25 2c 6b 65 79 63 6f 64  65 25 29 0d 04 56 13 e7  |%,keycode%)..V..|
00000b00  20 6b 65 79 63 6f 64 65  25 3d 31 33 20 8c 0d 04  | keycode%=13 ...|
00000b10  60 0d 20 c8 8e 20 77 68  25 20 ca 0d 04 6a 2d 20  |`. .. wh% ...j- |
00000b20  20 c9 20 77 69 6e 68 5f  6d 61 69 6e 3a e7 20 69  | . winh_main:. i|
00000b30  68 25 3d 31 34 20 f2 73  68 65 61 72 5f 61 6e 67  |h%=14 .shear_ang|
00000b40  6c 65 6c 69 6d 69 74 73  0d 04 74 3b 20 20 c9 20  |lelimits..t;  . |
00000b50  77 69 6e 68 5f 78 66 73  65 3a e7 20 69 68 25 3d  |winh_xfse:. ih%=|
00000b60  32 20 f2 66 69 6c 65 5f  73 61 76 65 28 a4 69 63  |2 .file_save(.ic|
00000b70  5f 72 64 28 32 2c 77 69  6e 68 5f 78 66 73 65 29  |_rd(2,winh_xfse)|
00000b80  29 3a e1 0d 04 7e 06 20  cb 0d 04 88 05 cc 0d 04  |):...~. ........|
00000b90  92 21 20 c8 99 22 57 69  6d 70 5f 50 72 6f 63 65  |.! .."Wimp_Proce|
00000ba0  73 73 4b 65 79 22 2c 6b  65 79 63 6f 64 65 25 0d  |ssKey",keycode%.|
00000bb0  04 9c 05 cd 0d 04 a6 05  e1 0d 04 b0 05 3a 0d 04  |.............:..|
00000bc0  ba 27 dd f2 63 6c 69 63  6b 28 6d 73 78 25 2c 6d  |.'..click(msx%,m|
00000bd0  73 79 25 2c 6d 73 62 25  2c 6d 73 77 68 25 2c 6d  |sy%,msb%,mswh%,m|
00000be0  73 69 68 25 29 0d 04 c4  0e c8 8e 20 6d 73 77 68  |sih%)...... mswh|
00000bf0  25 20 ca 0d 04 ce 13 20  c9 20 2d 32 3a c8 8e 20  |% ..... . -2:.. |
00000c00  6d 73 62 25 20 ca 0d 04  d8 24 20 20 20 c9 20 31  |msb% ....$   . 1|
00000c10  2c 34 3a f2 77 69 6e 64  6f 77 5f 6f 70 65 6e 28  |,4:.window_open(|
00000c20  77 69 6e 68 5f 6d 61 69  6e 29 0d 04 e2 45 20 20  |winh_main)...E  |
00000c30  20 c9 20 32 3a c8 99 22  57 69 6d 70 5f 43 72 65  | . 2:.."Wimp_Cre|
00000c40  61 74 65 4d 65 6e 75 22  2c 2c 6d 65 6e 5f 62 61  |ateMenu",,men_ba|
00000c50  72 2c 6d 73 78 25 2d 36  34 2c 31 38 34 3a 6d 65  |r,msx%-64,184:me|
00000c60  6e 75 5f 6c 61 73 74 3d  6d 65 6e 5f 62 61 72 0d  |nu_last=men_bar.|
00000c70  04 ec 07 20 20 cb 0d 04  f6 1a 20 c9 20 77 69 6e  |...  ..... . win|
00000c80  68 5f 6d 61 69 6e 3a c8  8e 20 6d 73 62 25 20 ca  |h_main:.. msb% .|
00000c90  0d 05 00 17 20 20 20 c9  20 31 2c 34 3a c8 8e 20  |....   . 1,4:.. |
00000ca0  6d 73 69 68 25 20 ca 0d  05 0a 2a 20 20 20 20 20  |msih% ....*     |
00000cb0  c9 20 34 2c 35 2c 36 3a  f2 72 61 64 69 6f 6c 6f  |. 4,5,6:.radiolo|
00000cc0  63 6b 28 31 2c 6d 73 69  68 25 2c 6d 73 77 68 25  |ck(1,msih%,mswh%|
00000cd0  29 0d 05 14 2a 20 20 20  20 20 c9 20 37 2c 38 2c  |)...*     . 7,8,|
00000ce0  39 3a f2 72 61 64 69 6f  6c 6f 63 6b 28 32 2c 6d  |9:.radiolock(2,m|
00000cf0  73 69 68 25 2c 6d 73 77  68 25 29 0d 05 1e 14 20  |sih%,mswh%).... |
00000d00  20 20 20 20 c9 20 31 35  3a f2 73 68 65 61 72 0d  |    . 15:.shear.|
00000d10  05 28 18 20 20 20 20 20  c9 20 31 36 3a f2 73 74  |.(.     . 16:.st|
00000d20  61 72 74 64 72 61 77 0d  05 32 25 20 20 20 20 20  |artdraw..2%     |
00000d30  c9 20 31 37 3a f2 77 69  6e 64 6f 77 5f 6f 70 65  |. 17:.window_ope|
00000d40  6e 28 77 69 6e 68 5f 78  66 73 65 29 0d 05 3c 18  |n(winh_xfse)..<.|
00000d50  20 20 20 20 20 c9 20 31  38 3a f2 66 69 6c 65 5f  |     . 18:.file_|
00000d60  64 72 6f 70 0d 05 46 2a  20 20 20 20 20 c9 20 32  |drop..F*     . 2|
00000d70  30 2c 32 31 3a f2 72 61  64 69 6f 6c 6f 63 6b 28  |0,21:.radiolock(|
00000d80  33 2c 6d 73 69 68 25 2c  6d 73 77 68 25 29 0d 05  |3,msih%,mswh%)..|
00000d90  50 09 20 20 20 20 cb 0d  05 5a 48 20 20 20 c9 20  |P.    ...ZH   . |
00000da0  32 3a c8 99 22 57 69 6d  70 5f 43 72 65 61 74 65  |2:.."Wimp_Create|
00000db0  4d 65 6e 75 22 2c 2c 6d  65 6e 5f 6d 61 69 6e 2c  |Menu",,men_main,|
00000dc0  6d 73 78 25 2d 36 34 2c  6d 73 79 25 3a 6d 65 6e  |msx%-64,msy%:men|
00000dd0  75 5f 6c 61 73 74 3d 6d  65 6e 5f 6d 61 69 6e 0d  |u_last=men_main.|
00000de0  05 64 07 20 20 cb 0d 05  6e 2d 20 c9 20 77 69 6e  |.d.  ...n- . win|
00000df0  68 5f 78 66 73 65 3a e7  20 6d 73 62 25 3d 31 20  |h_xfse:. msb%=1 |
00000e00  84 20 6d 73 62 25 3d 34  20 c8 8e 20 6d 73 69 68  |. msb%=4 .. msih|
00000e10  25 20 ca 0d 05 78 25 20  20 20 c9 20 30 3a f2 73  |% ...x%   . 0:.s|
00000e20  61 76 65 28 a4 69 63 5f  72 64 28 32 2c 77 69 6e  |ave(.ic_rd(2,win|
00000e30  68 5f 78 66 73 65 29 29  0d 05 82 23 20 20 20 c9  |h_xfse))...#   .|
00000e40  20 31 3a f2 77 69 6e 64  6f 77 5f 63 6c 6f 73 65  | 1:.window_close|
00000e50  28 77 69 6e 68 5f 78 66  73 65 29 0d 05 8c 19 20  |(winh_xfse).... |
00000e60  20 20 c9 20 33 3a f2 66  69 6c 65 5f 64 72 61 67  |  . 3:.file_drag|
00000e70  69 6e 69 74 0d 05 96 07  20 20 cb 0d 05 a0 05 cb  |init....  ......|
00000e80  0d 05 aa 05 e1 0d 05 b4  05 3a 0d 05 be 0a dd f2  |.........:......|
00000e90  6d 65 73 73 0d 05 c8 10  73 68 61 6e 3d 62 6c 6f  |mess....shan=blo|
00000ea0  63 6b 21 34 0d 05 d2 10  73 72 65 66 3d 62 6c 6f  |ck!4....sref=blo|
00000eb0  63 6b 21 38 0d 05 dc 11  c8 8e 20 62 6c 6f 63 6b  |ck!8...... block|
00000ec0  21 31 36 20 ca 0d 05 e6  0e 20 c9 20 30 3a f2 71  |!16 ..... . 0:.q|
00000ed0  75 69 74 0d 05 f0 08 20  c9 20 31 0d 05 fa 4b 20  |uit.... . 1...K |
00000ee0  20 e7 20 a4 76 61 72 5f  63 68 65 63 6b 65 78 69  | . .var_checkexi|
00000ef0  73 74 61 6e 63 65 28 22  57 69 6d 70 24 53 63 72  |stance("Wimp$Scr|
00000f00  61 70 22 29 3d a3 20 f2  6d 65 73 73 5f 62 6f 78  |ap")=. .mess_box|
00000f10  31 28 22 4e 4f 53 43 52  41 50 22 2c 22 22 2c 22  |1("NOSCRAP","","|
00000f20  4f 4b 22 29 3a e1 0d 06  04 17 20 20 e7 20 62 6c  |OK"):.....  . bl|
00000f30  6f 63 6b 21 34 30 3d 26  41 46 46 20 8c 0d 06 0e  |ock!40=&AFF ....|
00000f40  11 20 20 20 21 62 6c 6f  63 6b 3d 32 35 36 0d 06  |.   !block=256..|
00000f50  18 17 20 20 20 62 6c 6f  63 6b 21 31 32 3d 62 6c  |..   block!12=bl|
00000f60  6f 63 6b 21 38 0d 06 22  11 20 20 20 62 6c 6f 63  |ock!8..".   bloc|
00000f70  6b 21 31 36 3d 32 0d 06  2c 12 20 20 20 62 6c 6f  |k!16=2..,.   blo|
00000f80  63 6b 21 33 36 3d 2d 31  0d 06 36 24 20 20 20 24  |ck!36=-1..6$   $|
00000f90  28 62 6c 6f 63 6b 2b 34  34 29 3d 22 3c 57 69 6d  |(block+44)="<Wim|
00000fa0  70 24 53 63 72 61 70 3e  22 2b bd 30 0d 06 40 2c  |p$Scrap>"+.0..@,|
00000fb0  20 20 20 c8 99 22 57 69  6d 70 5f 53 65 6e 64 4d  |   .."Wimp_SendM|
00000fc0  65 73 73 61 67 65 22 2c  31 37 2c 62 6c 6f 63 6b  |essage",17,block|
00000fd0  2c 62 6c 6f 63 6b 21 34  0d 06 4a 1b 20 20 20 66  |,block!4..J.   f|
00000fe0  69 6c 65 5f 6c 6f 61 64  72 65 66 3d 62 6c 6f 63  |ile_loadref=bloc|
00000ff0  6b 21 38 0d 06 54 07 20  20 cc 0d 06 5e 25 20 20  |k!8..T.  ...^%  |
00001000  20 f2 6d 65 73 73 5f 62  6f 78 31 28 22 4f 4e 4c  | .mess_box1("ONL|
00001010  59 44 52 41 57 22 2c 22  22 2c 22 4f 4b 22 29 0d  |YDRAW","","OK").|
00001020  06 68 07 20 20 cd 0d 06  72 08 20 c9 20 32 0d 06  |.h.  ...r. . 2..|
00001030  7c 13 20 20 c8 8e 20 62  6c 6f 63 6b 21 31 32 20  ||.  .. block!12 |
00001040  ca 0d 06 86 15 20 20 20  c9 20 66 69 6c 65 5f 73  |.....   . file_s|
00001050  61 76 65 72 65 66 0d 06  90 1c 20 20 20 20 70 61  |averef....    pa|
00001060  74 68 24 3d a4 72 64 30  28 62 6c 6f 63 6b 2b 34  |th$=.rd0(block+4|
00001070  34 29 0d 06 9a 19 20 20  20 20 f2 66 69 6c 65 5f  |4)....    .file_|
00001080  73 61 76 65 28 70 61 74  68 24 29 0d 06 a4 2d 20  |save(path$)...- |
00001090  20 20 20 e7 20 66 69 6c  65 5f 73 61 76 65 64 4f  |   . file_savedO|
000010a0  4b 3d b9 20 f2 66 69 6c  65 5f 73 75 70 6c 6f 61  |K=. .file_suploa|
000010b0  64 28 70 61 74 68 24 29  0d 06 ae 1f 20 20 20 20  |d(path$)....    |
000010c0  c8 99 22 57 69 6d 70 5f  43 72 65 61 74 65 4d 65  |.."Wimp_CreateMe|
000010d0  6e 75 22 2c 2c 2d 31 0d  06 b8 20 20 20 20 20 f2  |nu",,-1...     .|
000010e0  77 69 6e 64 6f 77 5f 63  6c 6f 73 65 28 77 69 6e  |window_close(win|
000010f0  68 5f 78 66 73 65 29 0d  06 c2 07 20 20 7f 0d 06  |h_xfse)....  ...|
00001100  cc 1d 20 20 20 f2 66 69  6c 65 5f 75 6e 65 78 28  |..   .file_unex(|
00001110  22 44 53 41 56 45 41 43  4b 22 29 0d 06 d6 07 20  |"DSAVEACK").... |
00001120  20 cb 0d 06 e0 08 20 c9  20 33 0d 06 ea 13 20 20  | ..... . 3....  |
00001130  c8 8e 20 62 6c 6f 63 6b  21 31 32 20 ca 0d 06 f4  |.. block!12 ....|
00001140  18 20 20 20 c9 20 30 3a  f2 66 69 6c 65 5f 6c 6f  |.   . 0:.file_lo|
00001150  61 64 28 30 29 0d 06 fe  23 20 20 20 c9 20 66 69  |ad(0)...#   . fi|
00001160  6c 65 5f 6c 6f 61 64 72  65 66 3a f2 66 69 6c 65  |le_loadref:.file|
00001170  5f 6c 6f 61 64 28 31 29  0d 07 08 07 20 20 7f 0d  |_load(1)....  ..|
00001180  07 12 1a 20 20 20 f2 66  69 6c 65 5f 75 6e 65 78  |...   .file_unex|
00001190  28 22 44 4c 4f 41 44 22  29 0d 07 1c 07 20 20 cb  |("DLOAD")....  .|
000011a0  0d 07 26 28 20 c9 20 36  3a 78 66 65 72 5f 6c 61  |..&( . 6:xfer_la|
000011b0  73 74 72 65 66 3d 62 6c  6f 63 6b 21 38 3a f2 66  |stref=block!8:.f|
000011c0  69 6c 65 5f 78 66 65 72  0d 07 30 14 20 c9 20 26  |ile_xfer..0. . &|
000011d0  35 30 32 3a f2 68 65 6c  70 72 65 71 0d 07 3a 05  |502:.helpreq..:.|
000011e0  cb 0d 07 44 05 e1 0d 07  4e 05 3a 0d 07 58 0d dd  |...D....N.:..X..|
000011f0  f2 68 65 6c 70 72 65 71  0d 07 62 0d 61 24 3d 22  |.helpreq..b.a$="|
00001200  68 6c 70 5f 22 0d 07 6c  13 e7 20 62 6c 6f 63 6b  |hlp_"..l.. block|
00001210  21 33 36 3d 2d 31 20 8c  0d 07 76 0e 20 61 24 2b  |!36=-1 ...v. a$+|
00001220  3d 22 78 78 58 22 0d 07  80 05 cc 0d 07 8a 12 20  |="xxX"......... |
00001230  c8 8e 20 62 6c 6f 63 6b  21 33 32 20 ca 0d 07 94  |.. block!32 ....|
00001240  26 20 20 c9 20 77 69 6e  68 5f 6d 61 69 6e 3a 61  |&  . winh_main:a|
00001250  24 2b 3d 22 4d 61 22 2b  c3 28 62 6c 6f 63 6b 21  |$+="Ma"+.(block!|
00001260  33 36 29 0d 07 9e 26 20  20 c9 20 77 69 6e 68 5f  |36)...&  . winh_|
00001270  78 66 73 65 3a 61 24 2b  3d 22 58 66 22 2b c3 28  |xfse:a$+="Xf"+.(|
00001280  62 6c 6f 63 6b 21 33 36  29 0d 07 a8 1b 20 20 c9  |block!36)....  .|
00001290  20 77 69 6e 68 5f 69 6e  66 6f 3a 61 24 2b 3d 22  | winh_info:a$+="|
000012a0  49 6e 58 22 0d 07 b2 14  20 20 c9 20 2d 32 3a 61  |InX"....  . -2:a|
000012b0  24 2b 3d 22 42 61 58 22  0d 07 bc 05 7f 0d 07 c6  |$+="BaX"........|
000012c0  38 20 20 c8 99 22 57 69  6d 70 5f 47 65 74 4d 65  |8  .."Wimp_GetMe|
000012d0  6e 75 53 74 61 74 65 22  2c 31 2c 62 6c 6f 63 6b  |nuState",1,block|
000012e0  2b 34 30 2c 62 6c 6f 63  6b 21 33 32 2c 62 6c 6f  |+40,block!32,blo|
000012f0  63 6b 21 33 36 0d 07 d0  23 20 20 73 6e 75 6d 30  |ck!36...#  snum0|
00001300  3d 62 6c 6f 63 6b 21 34  30 3a 73 6e 75 6d 31 3d  |=block!40:snum1=|
00001310  62 6c 6f 63 6b 21 34 34  0d 07 da 14 20 20 c8 8e  |block!44....  ..|
00001320  20 6d 65 6e 75 5f 6c 61  73 74 20 ca 0d 07 e4 21  | menu_last ....!|
00001330  20 20 20 c9 20 6d 65 6e  5f 62 61 72 3a 61 24 2b  |   . men_bar:a$+|
00001340  3d 22 6d 42 61 22 2b c3  73 6e 75 6d 30 0d 07 ee  |="mBa"+.snum0...|
00001350  1d 20 20 20 c9 20 6d 65  6e 5f 6d 61 69 6e 3a e7  |.   . men_main:.|
00001360  20 73 6e 75 6d 30 3d 30  20 8c 0d 07 f8 44 20 20  | snum0=0 ....D  |
00001370  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001380  e7 20 73 6e 75 6d 31 3e  2d 31 20 61 24 2b 3d 22  |. snum1>-1 a$+="|
00001390  6d 4d 69 22 2b c3 73 6e  75 6d 31 20 8b 20 61 24  |mMi"+.snum1 . a$|
000013a0  2b 3d 22 6d 4d 61 22 2b  c3 73 6e 75 6d 30 0d 08  |+="mMa"+.snum0..|
000013b0  02 16 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
000013c0  20 20 20 cc 0d 08 0c 26  20 20 20 20 20 20 20 20  |   ....&        |
000013d0  20 20 20 20 20 20 20 20  20 20 61 24 2b 3d 22 6d  |          a$+="m|
000013e0  4d 61 22 2b c3 73 6e 75  6d 30 0d 08 16 16 20 20  |Ma"+.snum0....  |
000013f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 cd  |               .|
00001400  0d 08 20 07 20 20 cb 0d  08 2a 06 20 cb 0d 08 34  |.. .  ...*. ...4|
00001410  05 cd 0d 08 3e 18 24 6d  65 73 73 5f 67 65 6e 62  |....>.$mess_genb|
00001420  75 66 66 25 3d 61 24 2b  bd 30 0d 08 48 57 c8 99  |uff%=a$+.0..HW..|
00001430  22 58 4d 65 73 73 61 67  65 54 72 61 6e 73 5f 4c  |"XMessageTrans_L|
00001440  6f 6f 6b 75 70 22 2c 6d  65 73 73 5f 64 65 73 63  |ookup",mess_desc|
00001450  25 2c 6d 65 73 73 5f 67  65 6e 62 75 66 66 25 2c  |%,mess_genbuff%,|
00001460  6d 65 73 73 5f 67 65 6e  62 75 66 66 25 2c 32 35  |mess_genbuff%,25|
00001470  35 2c 30 2c 30 2c 30 2c  30 20 b8 20 3b 76 73 65  |5,0,0,0,0 . ;vse|
00001480  74 0d 08 52 43 e7 20 28  76 73 65 74 20 80 20 31  |t..RC. (vset . 1|
00001490  29 3d 30 20 61 24 3d a4  72 64 30 28 6d 65 73 73  |)=0 a$=.rd0(mess|
000014a0  5f 67 65 6e 62 75 66 66  25 29 20 8b 20 61 24 3d  |_genbuff%) . a$=|
000014b0  a4 74 6f 6b 65 6e 28 22  68 6c 70 5f 78 78 58 22  |.token("hlp_xxX"|
000014c0  2c 22 22 29 0d 08 5c 0e  21 62 6c 6f 63 6b 3d 32  |,"")..\.!block=2|
000014d0  35 36 0d 08 66 14 62 6c  6f 63 6b 21 31 32 3d 62  |56..f.block!12=b|
000014e0  6c 6f 63 6b 21 38 0d 08  70 11 62 6c 6f 63 6b 21  |lock!8..p.block!|
000014f0  31 36 3d 26 35 30 33 0d  08 7a 15 24 28 62 6c 6f  |16=&503..z.$(blo|
00001500  63 6b 2b 32 30 29 3d 61  24 2b bd 30 0d 08 84 29  |ck+20)=a$+.0...)|
00001510  c8 99 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |.."Wimp_SendMess|
00001520  61 67 65 22 2c 31 37 2c  62 6c 6f 63 6b 2c 62 6c  |age",17,block,bl|
00001530  6f 63 6b 21 34 0d 08 8e  05 e1 0d 08 98 05 3a 0d  |ock!4.........:.|
00001540  08 a2 0a dd f2 69 62 61  72 0d 08 ac 0c 21 69 62  |.....ibar....!ib|
00001550  6c 6b 3d 2d 31 0d 08 b6  0c 69 62 6c 6b 21 34 3d  |lk=-1....iblk!4=|
00001560  30 0d 08 c0 0c 69 62 6c  6b 21 38 3d 34 0d 08 ca  |0....iblk!8=4...|
00001570  0e 69 62 6c 6b 21 31 32  3d 36 34 0d 08 d4 0e 69  |.iblk!12=64....i|
00001580  62 6c 6b 21 31 36 3d 37  32 0d 08 de 11 69 62 6c  |blk!16=72....ibl|
00001590  6b 21 32 30 3d 26 33 31  31 41 0d 08 e8 11 69 62  |k!20=&311A....ib|
000015a0  6c 6b 21 32 34 3d 69 62  74 78 74 0d 08 f2 10 69  |lk!24=ibtxt....i|
000015b0  62 6c 6b 21 32 38 3d 73  70 72 25 0d 08 fc 0e 69  |blk!28=spr%....i|
000015c0  62 6c 6b 21 33 32 3d 31  31 0d 09 06 18 24 69 62  |blk!32=11....$ib|
000015d0  74 78 74 3d 22 69 74 61  6c 69 78 5f 69 62 61 72  |txt="italix_ibar|
000015e0  22 0d 09 10 2a c8 99 20  22 57 69 6d 70 5f 43 72  |"...*.. "Wimp_Cr|
000015f0  65 61 74 65 49 63 6f 6e  22 2c 2c 69 62 6c 6b 20  |eateIcon",,iblk |
00001600  b8 20 69 68 61 6e 5f 69  62 61 72 0d 09 1a 05 e1  |. ihan_ibar.....|
00001610  0d 09 24 05 3a 0d 09 2e  1b dd f2 6d 65 6e 75 5f  |..$.:......menu_|
00001620  73 65 6c 28 73 6e 75 6d  30 2c 73 6e 75 6d 31 29  |sel(snum0,snum1)|
00001630  0d 09 38 12 c8 8e 20 6d  65 6e 75 5f 6c 61 73 74  |..8... menu_last|
00001640  20 ca 0d 09 42 1e 20 c9  20 6d 65 6e 5f 62 61 72  | ...B. . men_bar|
00001650  3a e7 20 73 6e 75 6d 30  3d 31 20 f2 71 75 69 74  |:. snum0=1 .quit|
00001660  0d 09 4c 1a 20 c9 20 6d  65 6e 5f 6d 61 69 6e 3a  |..L. . men_main:|
00001670  c8 8e 20 73 6e 75 6d 30  20 ca 0d 09 56 15 20 20  |.. snum0 ...V.  |
00001680  20 c9 20 30 3a c8 8e 20  73 6e 75 6d 31 20 ca 0d  | . 0:.. snum1 ..|
00001690  09 60 19 20 20 20 20 20  c9 20 31 3a f2 73 61 76  |.`.     . 1:.sav|
000016a0  65 63 68 6f 69 63 65 73  0d 09 6a 17 20 20 20 20  |echoices..j.    |
000016b0  20 c9 20 32 3a f2 73 74  61 72 74 64 72 61 77 0d  | . 2:.startdraw.|
000016c0  09 74 09 20 20 20 20 cb  0d 09 7e 15 20 20 20 c9  |.t.    ...~.   .|
000016d0  20 32 3a f2 66 69 6c 65  5f 64 72 6f 70 0d 09 88  | 2:.file_drop...|
000016e0  07 20 20 cb 0d 09 92 05  cb 0d 09 9c 22 c8 99 22  |.  .........".."|
000016f0  57 69 6d 70 5f 47 65 74  50 6f 69 6e 74 65 72 49  |Wimp_GetPointerI|
00001700  6e 66 6f 22 2c 2c 62 6c  6f 63 6b 0d 09 a6 49 e7  |nfo",,block...I.|
00001710  20 62 6c 6f 63 6b 21 38  3d 31 20 8c 20 c8 99 22  | block!8=1 . .."|
00001720  57 69 6d 70 5f 43 72 65  61 74 65 4d 65 6e 75 22  |Wimp_CreateMenu"|
00001730  2c 2c 6d 65 6e 5f 6d 61  69 6e 20 8b 20 c8 99 22  |,,men_main . .."|
00001740  57 69 6d 70 5f 43 72 65  61 74 65 4d 65 6e 75 22  |Wimp_CreateMenu"|
00001750  2c 2c 2d 31 0d 09 b0 05  cd 0d 09 ba 05 e1 0d 09  |,,-1............|
00001760  c4 05 3a 0d 09 ce 18 dd  f2 61 63 74 69 6f 6e 73  |..:......actions|
00001770  5f 73 68 61 64 65 28 62  69 74 29 0d 09 d8 10 e3  |_shade(bit).....|
00001780  20 69 25 3d 31 35 20 b8  20 31 38 0d 09 e2 1f 20  | i%=15 . 18.... |
00001790  f2 69 63 5f 67 72 65 79  28 62 69 74 2c 69 25 2c  |.ic_grey(bit,i%,|
000017a0  77 69 6e 68 5f 6d 61 69  6e 29 0d 09 ec 05 ed 0d  |winh_main)......|
000017b0  09 f6 1d f2 6d 65 6e 5f  67 72 65 79 28 62 69 74  |....men_grey(bit|
000017c0  2c 6d 65 6e 5f 6d 61 69  6e 2c 31 29 0d 0a 00 1d  |,men_main,1)....|
000017d0  f2 6d 65 6e 5f 67 72 65  79 28 62 69 74 2c 6d 65  |.men_grey(bit,me|
000017e0  6e 5f 6d 61 69 6e 2c 32  29 0d 0a 0a 1d f2 6d 65  |n_main,2).....me|
000017f0  6e 5f 67 72 65 79 28 62  69 74 2c 6d 65 6e 5f 6d  |n_grey(bit,men_m|
00001800  69 73 63 2c 32 29 0d 0a  14 05 e1 0d 0a 1e 05 3a  |isc,2).........:|
00001810  0d 0a 28 0b dd f2 73 68  65 61 72 0d 0a 32 4a e7  |..(...shear..2J.|
00001820  20 66 69 6c 65 5f 73 68  65 61 72 65 64 3d b9 20  | file_sheared=. |
00001830  e7 20 a4 6d 65 73 73 5f  62 6f 78 32 28 22 53 48  |. .mess_box2("SH|
00001840  45 41 52 41 47 41 49 4e  22 2c 22 22 2c 22 43 41  |EARAGAIN","","CA|
00001850  4e 43 45 4c 22 2c 22 53  48 45 41 52 22 2c 22 22  |NCEL","SHEAR",""|
00001860  29 3d 31 20 e1 0d 0a 3c  1f 73 68 65 61 72 3d a4  |)=1 ...<.shear=.|
00001870  77 68 69 63 68 28 31 2c  77 69 6e 68 5f 6d 61 69  |which(1,winh_mai|
00001880  6e 29 2d 34 0d 0a 46 24  73 68 65 61 72 5f 66 72  |n)-4..F$shear_fr|
00001890  6f 6d 3d a4 77 68 69 63  68 28 32 2c 77 69 6e 68  |om=.which(2,winh|
000018a0  5f 6d 61 69 6e 29 2d 37  0d 0a 50 16 f2 73 68 65  |_main)-7..P..she|
000018b0  61 72 5f 61 6e 67 6c 65  6c 69 6d 69 74 73 0d 0a  |ar_anglelimits..|
000018c0  5a 35 e7 20 a4 77 68 69  63 68 28 33 2c 77 69 6e  |Z5. .which(3,win|
000018d0  68 5f 6d 61 69 6e 29 3d  32 31 20 73 68 65 61 72  |h_main)=21 shear|
000018e0  5f 64 65 67 3d ac 28 73  68 65 61 72 5f 64 65 67  |_deg=.(shear_deg|
000018f0  29 2b 31 0d 0a 64 14 c8  99 22 48 6f 75 72 67 6c  |)+1..d..."Hourgl|
00001900  61 73 73 5f 4f 6e 22 0d  0a 6e 0e c8 8e 20 73 68  |ass_On"..n... sh|
00001910  65 61 72 20 ca 0d 0a 78  09 20 c9 30 2c 31 0d 0a  |ear ...x. .0,1..|
00001920  82 40 20 20 f2 64 73 6c  5f 73 68 65 61 72 28 64  |.@  .dsl_shear(d|
00001930  61 74 61 5f 73 74 61 72  74 2c 64 61 74 61 5f 65  |ata_start,data_e|
00001940  6e 64 2c 73 68 65 61 72  5f 64 65 67 2c 73 68 65  |nd,shear_deg,she|
00001950  61 72 2c 73 68 65 61 72  5f 66 72 6f 6d 29 0d 0a  |ar,shear_from)..|
00001960  8c 07 20 c9 32 0d 0a 96  3c 20 20 f2 64 73 6c 5f  |.. .2...<  .dsl_|
00001970  73 68 65 61 72 28 64 61  74 61 5f 73 74 61 72 74  |shear(data_start|
00001980  2c 64 61 74 61 5f 65 6e  64 2c 73 68 65 61 72 5f  |,data_end,shear_|
00001990  64 65 67 2c 30 2c 73 68  65 61 72 5f 66 72 6f 6d  |deg,0,shear_from|
000019a0  29 0d 0a a0 3c 20 20 f2  64 73 6c 5f 73 68 65 61  |)...<  .dsl_shea|
000019b0  72 28 64 61 74 61 5f 73  74 61 72 74 2c 64 61 74  |r(data_start,dat|
000019c0  61 5f 65 6e 64 2c 73 68  65 61 72 5f 64 65 67 2c  |a_end,shear_deg,|
000019d0  31 2c 73 68 65 61 72 5f  66 72 6f 6d 29 0d 0a aa  |1,shear_from)...|
000019e0  05 cb 0d 0a b4 15 c8 99  22 48 6f 75 72 67 6c 61  |........"Hourgla|
000019f0  73 73 5f 4f 66 66 22 0d  0a be 0d ef 37 3a 61 3d  |ss_Off".....7:a=|
00001a00  a6 28 38 29 0d 0a c8 06  ef 37 0d 0a d2 1b f2 77  |.(8).....7.....w|
00001a10  69 6e 64 6f 77 5f 6f 70  65 6e 28 77 69 6e 68 5f  |indow_open(winh_|
00001a20  78 66 73 65 29 0d 0a dc  12 66 69 6c 65 5f 73 68  |xfse)....file_sh|
00001a30  65 61 72 65 64 3d b9 0d  0a e6 05 e1 0d 0a f0 05  |eared=..........|
00001a40  3a 0d 0a fa 17 dd f2 73  68 65 61 72 5f 61 6e 67  |:......shear_ang|
00001a50  6c 65 6c 69 6d 69 74 73  0d 0b 04 1d 6e 75 6d 24  |lelimits....num$|
00001a60  3d a4 69 63 5f 72 64 28  31 34 2c 77 69 6e 68 5f  |=.ic_rd(14,winh_|
00001a70  6d 61 69 6e 29 0d 0b 0e  15 73 68 65 61 72 5f 64  |main)....shear_d|
00001a80  65 67 3d bb 28 6e 75 6d  24 29 0d 0b 18 41 e7 20  |eg=.(num$)...A. |
00001a90  73 68 65 61 72 5f 64 65  67 3e 38 39 20 73 68 65  |shear_deg>89 she|
00001aa0  61 72 5f 64 65 67 3d 38  39 3a f2 69 63 5f 63 68  |ar_deg=89:.ic_ch|
00001ab0  28 c3 28 73 68 65 61 72  5f 64 65 67 29 2c 31 34  |(.(shear_deg),14|
00001ac0  2c 77 69 6e 68 5f 6d 61  69 6e 29 0d 0b 22 05 e1  |,winh_main).."..|
00001ad0  0d 0b 2c 05 3a 0d 0b 36  0f dd f2 73 74 61 72 74  |..,.:..6...start|
00001ae0  64 72 61 77 0d 0b 40 39  f4 20 49 74 20 69 73 20  |draw..@9. It is |
00001af0  56 49 54 41 4c 20 74 68  61 74 20 74 68 65 20 62  |VITAL that the b|
00001b00  6c 6f 63 6b 20 6c 65 6e  67 74 68 20 69 73 6e 27  |lock length isn'|
00001b10  74 20 73 65 74 20 74 6f  20 32 35 36 2e 0d 0b 4a  |t set to 256...J|
00001b20  35 f4 20 54 68 75 6d 62  73 20 75 70 20 74 6f 20  |5. Thumbs up to |
00001b30  41 63 6f 72 6e 20 66 6f  72 20 62 75 67 2d 74 65  |Acorn for bug-te|
00001b40  73 74 69 6e 67 20 70 72  6f 70 65 72 6c 79 2e 2e  |sting properly..|
00001b50  2e 2e 0d 0b 54 0a 63 61  6c 6c 3d 30 0d 0b 5e 05  |....T.call=0..^.|
00001b60  f5 0d 0b 68 38 20 c8 99  22 54 61 73 6b 4d 61 6e  |...h8 .."TaskMan|
00001b70  61 67 65 72 5f 45 6e 75  6d 65 72 61 74 65 54 61  |ager_EnumerateTa|
00001b80  73 6b 73 22 2c 63 61 6c  6c 2c 62 6c 6f 63 6b 2c  |sks",call,block,|
00001b90  32 34 20 b8 20 63 61 6c  6c 0d 0b 72 10 20 74 6e  |24 . call..r. tn|
00001ba0  70 3d 62 6c 6f 63 6b 21  34 0d 0b 7c 1a 20 e7 20  |p=block!4..|. . |
00001bb0  63 61 6c 6c 3e 30 20 61  24 3d a4 72 64 30 28 74  |call>0 a$=.rd0(t|
00001bc0  6e 70 29 0d 0b 86 18 fd  20 63 61 6c 6c 3c 30 20  |np)..... call<0 |
00001bd0  84 20 61 24 3d 22 44 72  61 77 22 0d 0b 90 1e e7  |. a$="Draw".....|
00001be0  20 61 24 3d 22 44 72 61  77 22 20 64 72 61 77 68  | a$="Draw" drawh|
00001bf0  61 6e 3d 21 62 6c 6f 63  6b 0d 0b 9a 4c e7 20 63  |an=!block...L. c|
00001c00  61 6c 6c 3c 30 20 c8 99  22 57 69 6d 70 5f 53 74  |all<0 .."Wimp_St|
00001c10  61 72 74 54 61 73 6b 22  2c 22 46 69 6c 65 72 5f  |artTask","Filer_|
00001c20  52 75 6e 20 52 65 73 6f  75 72 63 65 73 3a 24 2e  |Run Resources:$.|
00001c30  41 70 70 73 2e 21 44 72  61 77 22 20 b8 20 64 72  |Apps.!Draw" . dr|
00001c40  61 77 68 61 6e 0d 0b a4  11 e7 20 64 72 61 77 68  |awhan..... drawh|
00001c50  61 6e 3d 30 20 e1 0d 0b  ae 19 78 66 65 72 5f 70  |an=0 .....xfer_p|
00001c60  6f 69 6e 74 3d 64 61 74  61 5f 73 74 61 72 74 0d  |oint=data_start.|
00001c70  0b b8 13 78 66 65 72 5f  78 66 65 72 72 69 6e 67  |...xfer_xferring|
00001c80  3d a3 0d 0b c2 0f 62 6c  6f 63 6b 21 30 3d 32 35  |=.....block!0=25|
00001c90  36 0d 0b cc 0e 62 6c 6f  63 6b 21 31 32 3d 30 0d  |6....block!12=0.|
00001ca0  0b d6 0e 62 6c 6f 63 6b  21 31 36 3d 31 0d 0b e0  |...block!16=1...|
00001cb0  11 62 6c 6f 63 6b 21 34  30 3d 26 41 46 46 0d 0b  |.block!40=&AFF..|
00001cc0  ea 1d 24 28 62 6c 6f 63  6b 2b 34 34 29 3d 22 49  |..$(block+44)="I|
00001cd0  74 61 6c 69 78 65 64 22  2b bd 30 0d 0b f4 29 c8  |talixed"+.0...).|
00001ce0  99 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  |."Wimp_SendMessa|
00001cf0  67 65 22 2c 31 37 2c 62  6c 6f 63 6b 2c 64 72 61  |ge",17,block,dra|
00001d00  77 68 61 6e 0d 0b fe 18  66 69 6c 65 5f 73 61 76  |whan....file_sav|
00001d10  65 72 65 66 3d 62 6c 6f  63 6b 21 38 0d 0c 08 05  |eref=block!8....|
00001d20  e1 0d 0c 12 05 3a 0d 0c  1c 17 dd f2 66 69 6c 65  |.....:......file|
00001d30  5f 6c 6f 61 64 28 64 65  6c 65 74 65 29 0d 0c 26  |_load(delete)..&|
00001d40  35 e7 20 62 6c 6f 63 6b  21 34 30 3c 3e 26 41 46  |5. block!40<>&AF|
00001d50  46 20 f2 6d 65 73 73 5f  62 6f 78 31 28 22 4f 4e  |F .mess_box1("ON|
00001d60  4c 59 44 52 41 57 22 2c  22 22 2c 22 4f 4b 22 29  |LYDRAW","","OK")|
00001d70  3a e1 0d 0c 30 1d 66 69  6c 65 5f 6e 61 6d 65 24  |:...0.file_name$|
00001d80  3d a4 72 64 30 28 62 6c  6f 63 6b 2b 34 34 29 0d  |=.rd0(block+44).|
00001d90  0c 3a 15 e7 20 66 69 6c  65 5f 6c 6f 61 64 65 64  |.:.. file_loaded|
00001da0  3d b9 20 8c 0d 0c 44 35  20 61 3d a4 6d 65 73 73  |=. ...D5 a=.mess|
00001db0  5f 62 6f 78 32 28 22 41  4c 52 4c 4f 41 44 22 2c  |_box2("ALRLOAD",|
00001dc0  22 22 2c 22 43 41 4e 43  45 4c 22 2c 22 44 49 53  |"","CANCEL","DIS|
00001dd0  43 41 52 44 22 2c 22 22  29 0d 0c 4e 2f 20 e7 20  |CARD","")..N/ . |
00001de0  61 3d 31 20 80 20 64 65  6c 65 74 65 3d 31 20 c8  |a=1 . delete=1 .|
00001df0  99 22 58 4f 53 5f 46 69  6c 65 22 2c 36 2c 66 69  |."XOS_File",6,fi|
00001e00  6c 65 5f 6e 61 6d 65 24  0d 0c 58 0c 20 e7 20 61  |le_name$..X. . a|
00001e10  3d 31 20 e1 0d 0c 62 05  cd 0d 0c 6c 34 c8 99 22  |=1 ...b....l4.."|
00001e20  4f 53 5f 46 69 6c 65 22  2c 32 33 2c 66 69 6c 65  |OS_File",23,file|
00001e30  5f 6e 61 6d 65 24 20 b8  20 66 6f 75 6e 64 2c 2c  |_name$ . found,,|
00001e40  2c 2c 64 61 74 61 5f 6c  65 6e 67 74 68 0d 0c 76  |,,data_length..v|
00001e50  4d e7 20 66 6f 75 6e 64  3c 3e 31 20 f2 6d 65 73  |M. found<>1 .mes|
00001e60  73 5f 62 6f 78 31 28 a4  6d 65 73 73 5f 6c 6f 6f  |s_box1(.mess_loo|
00001e70  6b 75 70 28 22 4e 4f 54  46 4f 55 4e 44 22 29 2c  |kup("NOTFOUND"),|
00001e80  a4 72 6f 64 6f 74 28 66  69 6c 65 5f 6e 61 6d 65  |.rodot(file_name|
00001e90  24 29 2c 22 4f 4b 22 29  3a e1 0d 0c 80 3c c8 99  |$),"OK"):....<..|
00001ea0  22 57 69 6d 70 5f 53 6c  6f 74 53 69 7a 65 22 2c  |"Wimp_SlotSize",|
00001eb0  61 70 70 73 69 7a 65 5f  6f 72 69 67 2b 38 2b 64  |appsize_orig+8+d|
00001ec0  61 74 61 5f 6c 65 6e 67  74 68 2b 38 2c 2d 31 20  |ata_length+8,-1 |
00001ed0  b8 20 73 69 7a 65 0d 0c  8a 83 e7 20 73 69 7a 65  |. size..... size|
00001ee0  3c 28 61 70 70 73 69 7a  65 5f 6f 72 69 67 2b 38  |<(appsize_orig+8|
00001ef0  2b 64 61 74 61 5f 6c 65  6e 67 74 68 2b 38 29 20  |+data_length+8) |
00001f00  f2 6d 65 73 73 5f 62 6f  78 31 28 22 43 41 4e 54  |.mess_box1("CANT|
00001f10  43 4c 41 49 4d 22 2c c3  28 a8 28 64 61 74 61 5f  |CLAIM",.(.(data_|
00001f20  6c 65 6e 67 74 68 2f 31  30 32 34 29 2b 31 29 2c  |length/1024)+1),|
00001f30  22 4f 4b 22 29 3a c8 99  22 57 69 6d 70 5f 53 6c  |"OK"):.."Wimp_Sl|
00001f40  6f 74 53 69 7a 65 22 2c  61 70 70 73 69 7a 65 5f  |otSize",appsize_|
00001f50  6f 72 69 67 2c 2d 31 3a  e1 0d 0c 94 2a c8 99 22  |orig,-1:....*.."|
00001f60  4f 53 5f 46 69 6c 65 22  2c 31 36 2c 66 69 6c 65  |OS_File",16,file|
00001f70  5f 6e 61 6d 65 24 2c 64  61 74 61 5f 73 74 61 72  |_name$,data_star|
00001f80  74 2c 30 0d 0c 9e 3f e7  20 66 6f 75 6e 64 3c 3e  |t,0...?. found<>|
00001f90  31 20 f2 6d 65 73 73 5f  62 6f 78 31 28 22 4e 4f  |1 .mess_box1("NO|
00001fa0  54 46 4f 55 4e 44 22 2c  a4 72 6f 64 6f 74 28 66  |TFOUND",.rodot(f|
00001fb0  69 6c 65 5f 6e 61 6d 65  24 29 2c 22 4f 4b 22 29  |ile_name$),"OK")|
00001fc0  3a e1 0d 0c a8 28 e7 20  64 65 6c 65 74 65 3d 31  |:....(. delete=1|
00001fd0  20 c8 99 22 58 4f 53 5f  46 69 6c 65 22 2c 36 2c  | .."XOS_File",6,|
00001fe0  66 69 6c 65 5f 6e 61 6d  65 24 0d 0c b2 0e 21 62  |file_name$....!b|
00001ff0  6c 6f 63 6b 3d 32 35 36  0d 0c bc 11 62 6c 6f 63  |lock=256....bloc|
00002000  6b 21 31 32 3d 73 72 65  66 0d 0c c6 0e 62 6c 6f  |k!12=sref....blo|
00002010  63 6b 21 31 36 3d 34 0d  0c d0 26 c8 99 22 57 69  |ck!16=4...&.."Wi|
00002020  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
00002030  31 37 2c 62 6c 6f 63 6b  2c 73 68 61 6e 0d 0c da  |17,block,shan...|
00002040  11 66 69 6c 65 5f 6c 6f  61 64 65 64 3d b9 0d 0c  |.file_loaded=...|
00002050  e4 12 66 69 6c 65 5f 73  68 65 61 72 65 64 3d a3  |..file_sheared=.|
00002060  0d 0c ee 23 64 61 74 61  5f 65 6e 64 3d 64 61 74  |...#data_end=dat|
00002070  61 5f 6c 65 6e 67 74 68  2b 64 61 74 61 5f 73 74  |a_length+data_st|
00002080  61 72 74 0d 0c f8 15 f2  61 63 74 69 6f 6e 73 5f  |art.....actions_|
00002090  73 68 61 64 65 28 30 29  0d 0d 02 1b f2 77 69 6e  |shade(0).....win|
000020a0  64 6f 77 5f 6f 70 65 6e  28 77 69 6e 68 5f 6d 61  |dow_open(winh_ma|
000020b0  69 6e 29 0d 0d 0c 05 e1  0d 0d 16 05 3a 0d 0d 20  |in).........:.. |
000020c0  0f dd f2 66 69 6c 65 5f  64 72 6f 70 0d 0d 2a 11  |...file_drop..*.|
000020d0  66 69 6c 65 5f 6c 6f 61  64 65 64 3d a3 0d 0d 34  |file_loaded=...4|
000020e0  12 66 69 6c 65 5f 73 68  65 61 72 65 64 3d a3 0d  |.file_sheared=..|
000020f0  0d 3e 25 c8 99 22 57 69  6d 70 5f 53 6c 6f 74 53  |.>%.."Wimp_SlotS|
00002100  69 7a 65 22 2c 61 70 70  73 69 7a 65 5f 6f 72 69  |ize",appsize_ori|
00002110  67 2c 2d 31 0d 0d 48 15  f2 61 63 74 69 6f 6e 73  |g,-1..H..actions|
00002120  5f 73 68 61 64 65 28 31  29 0d 0d 52 1c f2 77 69  |_shade(1)..R..wi|
00002130  6e 64 6f 77 5f 63 6c 6f  73 65 28 77 69 6e 68 5f  |ndow_close(winh_|
00002140  78 66 73 65 29 0d 0d 5c  05 e1 0d 0d 66 05 3a 0d  |xfse)..\....f.:.|
00002150  0d 70 13 dd f2 66 69 6c  65 5f 75 6e 65 78 28 61  |.p...file_unex(a|
00002160  24 29 0d 0d 7a 38 c8 99  22 58 54 61 73 6b 4d 61  |$)..z8.."XTaskMa|
00002170  6e 61 67 65 72 5f 54 61  73 6b 4e 61 6d 65 46 72  |nager_TaskNameFr|
00002180  6f 6d 48 61 6e 64 6c 65  22 2c 62 6c 6f 63 6b 21  |omHandle",block!|
00002190  34 20 b8 20 61 3b 76 73  65 74 0d 0d 84 14 e7 20  |4 . a;vset..... |
000021a0  28 76 73 65 74 20 80 20  31 29 3e 30 20 e1 0d 0d  |(vset . 1)>0 ...|
000021b0  8e 12 74 61 73 6b 6e 24  3d a4 72 64 30 28 61 29  |..taskn$=.rd0(a)|
000021c0  0d 0d 98 20 f2 6d 65 73  73 5f 62 6f 78 31 28 61  |... .mess_box1(a|
000021d0  24 2c 74 61 73 6b 6e 24  2c 22 4f 4b 22 29 3a e1  |$,taskn$,"OK"):.|
000021e0  0d 0d a2 05 e1 0d 0d ac  05 3a 0d 0d b6 13 dd f2  |.........:......|
000021f0  66 69 6c 65 5f 64 72 61  67 69 6e 69 74 0d 0d c0  |file_draginit...|
00002200  14 21 62 6c 6f 63 6b 3d  77 69 6e 68 5f 78 66 73  |.!block=winh_xfs|
00002210  65 0d 0d ca 22 c8 99 22  57 69 6d 70 5f 47 65 74  |e...".."Wimp_Get|
00002220  57 69 6e 64 6f 77 53 74  61 74 65 22 2c 2c 62 6c  |WindowState",,bl|
00002230  6f 63 6b 0d 0d d4 0e 78  30 3d 62 6c 6f 63 6b 21  |ock....x0=block!|
00002240  34 0d 0d de 0f 79 31 3d  62 6c 6f 63 6b 21 31 36  |4....y1=block!16|
00002250  0d 0d e8 14 21 62 6c 6f  63 6b 3d 77 69 6e 68 5f  |....!block=winh_|
00002260  78 66 73 65 0d 0d f2 0d  62 6c 6f 63 6b 21 34 3d  |xfse....block!4=|
00002270  33 0d 0d fc 20 c8 99 22  57 69 6d 70 5f 47 65 74  |3... .."Wimp_Get|
00002280  49 63 6f 6e 53 74 61 74  65 22 2c 2c 62 6c 6f 63  |IconState",,bloc|
00002290  6b 0d 0e 06 24 6d 69 6e  78 3d 62 6c 6f 63 6b 21  |k...$minx=block!|
000022a0  38 2b 78 30 3a 6d 69 6e  79 3d 62 6c 6f 63 6b 21  |8+x0:miny=block!|
000022b0  31 32 2b 79 31 0d 0e 10  25 6d 61 78 78 3d 62 6c  |12+y1...%maxx=bl|
000022c0  6f 63 6b 21 31 36 2b 78  30 3a 6d 61 78 79 3d 62  |ock!16+x0:maxy=b|
000022d0  6c 6f 63 6b 21 32 30 2b  79 31 0d 0e 1a 0f 21 62  |lock!20+y1....!b|
000022e0  6c 6f 63 6b 3d 6d 69 6e  78 0d 0e 24 10 62 6c 6f  |lock=minx..$.blo|
000022f0  63 6b 21 34 3d 6d 69 6e  79 0d 0e 2e 10 62 6c 6f  |ck!4=miny....blo|
00002300  63 6b 21 38 3d 6d 61 78  78 0d 0e 38 11 62 6c 6f  |ck!8=maxx..8.blo|
00002310  63 6b 21 31 32 3d 6d 61  78 79 0d 0e 42 36 c8 99  |ck!12=maxy..B6..|
00002320  22 44 72 61 67 41 53 70  72 69 74 65 5f 53 74 61  |"DragASprite_Sta|
00002330  72 74 22 2c 25 31 31 30  30 30 31 30 31 2c 31 2c  |rt",%11000101,1,|
00002340  22 66 69 6c 65 5f 61 66  66 22 2c 62 6c 6f 63 6b  |"file_aff",block|
00002350  0d 0e 4c 29 f2 69 63 5f  76 61 6c 69 64 28 22 52  |..L).ic_valid("R|
00002360  32 3b 50 70 74 72 5f 68  61 6e 64 22 2c 33 2c 77  |2;Pptr_hand",3,w|
00002370  69 6e 68 5f 78 66 73 65  29 0d 0e 56 05 e1 0d 0e  |inh_xfse)..V....|
00002380  60 05 3a 0d 0e 6a 12 dd  f2 66 69 6c 65 5f 64 72  |`.:..j...file_dr|
00002390  61 67 65 6e 64 0d 0e 74  33 f2 69 63 5f 76 61 6c  |agend..t3.ic_val|
000023a0  69 64 28 22 52 32 3b 53  66 69 6c 65 5f 61 66 66  |id("R2;Sfile_aff|
000023b0  3b 50 70 74 72 5f 68 61  6e 64 22 2c 33 2c 77 69  |;Pptr_hand",3,wi|
000023c0  6e 68 5f 78 66 73 65 29  0d 0e 7e 18 c8 99 22 44  |nh_xfse)..~..."D|
000023d0  72 61 67 41 53 70 72 69  74 65 5f 53 74 6f 70 22  |ragASprite_Stop"|
000023e0  0d 0e 88 22 c8 99 22 57  69 6d 70 5f 47 65 74 50  |...".."Wimp_GetP|
000023f0  6f 69 6e 74 65 72 49 6e  66 6f 22 2c 2c 62 6c 6f  |ointerInfo",,blo|
00002400  63 6b 0d 0e 92 16 66 69  6c 65 5f 64 65 73 74 78  |ck....file_destx|
00002410  3d 62 6c 6f 63 6b 21 30  0d 0e 9c 16 66 69 6c 65  |=block!0....file|
00002420  5f 64 65 73 74 79 3d 62  6c 6f 63 6b 21 34 0d 0e  |_desty=block!4..|
00002430  a6 18 66 69 6c 65 5f 64  65 73 74 77 69 3d 62 6c  |..file_destwi=bl|
00002440  6f 63 6b 21 31 32 0d 0e  b0 18 66 69 6c 65 5f 64  |ock!12....file_d|
00002450  65 73 74 69 63 3d 62 6c  6f 63 6b 21 31 36 0d 0e  |estic=block!16..|
00002460  ba 25 6c 65 61 66 24 3d  a4 72 6f 64 6f 74 28 a4  |.%leaf$=.rodot(.|
00002470  69 63 5f 72 64 28 32 2c  77 69 6e 68 5f 78 66 73  |ic_rd(2,winh_xfs|
00002480  65 29 29 0d 0e c4 0f 62  6c 6f 63 6b 21 30 3d 32  |e))....block!0=2|
00002490  35 36 0d 0e ce 0e 62 6c  6f 63 6b 21 31 32 3d 30  |56....block!12=0|
000024a0  0d 0e d8 0e 62 6c 6f 63  6b 21 31 36 3d 31 0d 0e  |....block!16=1..|
000024b0  e2 18 62 6c 6f 63 6b 21  32 30 3d 66 69 6c 65 5f  |..block!20=file_|
000024c0  64 65 73 74 77 69 0d 0e  ec 18 62 6c 6f 63 6b 21  |destwi....block!|
000024d0  32 34 3d 66 69 6c 65 5f  64 65 73 74 69 63 0d 0e  |24=file_destic..|
000024e0  f6 17 62 6c 6f 63 6b 21  32 38 3d 66 69 6c 65 5f  |..block!28=file_|
000024f0  64 65 73 74 78 0d 0f 00  17 62 6c 6f 63 6b 21 33  |destx....block!3|
00002500  32 3d 66 69 6c 65 5f 64  65 73 74 79 0d 0f 0a 18  |2=file_desty....|
00002510  62 6c 6f 63 6b 21 33 36  3d 64 61 74 61 5f 6c 65  |block!36=data_le|
00002520  6e 67 74 68 0d 0f 14 11  62 6c 6f 63 6b 21 34 30  |ngth....block!40|
00002530  3d 26 41 46 46 0d 0f 1e  18 24 28 62 6c 6f 63 6b  |=&AFF....$(block|
00002540  2b 34 34 29 3d 6c 65 61  66 24 2b bd 30 0d 0f 28  |+44)=leaf$+.0..(|
00002550  39 c8 99 22 57 69 6d 70  5f 53 65 6e 64 4d 65 73  |9.."Wimp_SendMes|
00002560  73 61 67 65 22 2c 31 37  2c 62 6c 6f 63 6b 2c 66  |sage",17,block,f|
00002570  69 6c 65 5f 64 65 73 74  77 69 2c 66 69 6c 65 5f  |ile_destwi,file_|
00002580  64 65 73 74 69 63 0d 0f  32 18 66 69 6c 65 5f 73  |destic..2.file_s|
00002590  61 76 65 72 65 66 3d 62  6c 6f 63 6b 21 38 0d 0f  |averef=block!8..|
000025a0  3c 1c f2 77 69 6e 64 6f  77 5f 63 6c 6f 73 65 28  |<..window_close(|
000025b0  77 69 6e 68 5f 78 66 73  65 29 0d 0f 46 05 e1 0d  |winh_xfse)..F...|
000025c0  0f 50 05 3a 0d 0f 5a 13  dd f2 66 69 6c 65 5f 73  |.P.:..Z...file_s|
000025d0  61 76 65 28 61 24 29 0d  0f 64 12 66 69 6c 65 5f  |ave(a$)..d.file_|
000025e0  73 61 76 65 64 4f 4b 3d  a3 0d 0f 6e 39 c8 99 22  |savedOK=...n9.."|
000025f0  58 4f 53 5f 46 69 6c 65  22 2c 31 30 2c 61 24 2c  |XOS_File",10,a$,|
00002600  26 41 46 46 2c 2c 64 61  74 61 5f 73 74 61 72 74  |&AFF,,data_start|
00002610  2c 64 61 74 61 5f 65 6e  64 20 b8 20 65 3b 76 73  |,data_end . e;vs|
00002620  65 74 0d 0f 78 11 76 73  65 74 3d 76 73 65 74 20  |et..x.vset=vset |
00002630  80 20 31 0d 0f 82 45 e7  20 76 73 65 74 3d 30 20  |. 1...E. vset=0 |
00002640  66 69 6c 65 5f 73 61 76  65 64 4f 4b 3d b9 20 8b  |file_savedOK=. .|
00002650  20 f2 6d 65 73 73 5f 62  6f 78 31 28 22 53 41 56  | .mess_box1("SAV|
00002660  45 46 41 49 4c 45 44 22  2c a4 72 64 30 28 65 2b  |EFAILED",.rd0(e+|
00002670  34 29 2c 22 4f 4b 22 29  0d 0f 8c 05 e1 0d 0f 96  |4),"OK")........|
00002680  05 3a 0d 0f a0 16 dd f2  66 69 6c 65 5f 73 75 70  |.:......file_sup|
00002690  6c 6f 61 64 28 61 24 29  0d 0f aa 0f 62 6c 6f 63  |load(a$)....bloc|
000026a0  6b 21 30 3d 32 35 36 0d  0f b4 11 62 6c 6f 63 6b  |k!0=256....block|
000026b0  21 31 32 3d 73 72 65 66  0d 0f be 0e 62 6c 6f 63  |!12=sref....bloc|
000026c0  6b 21 31 36 3d 33 0d 0f  c8 18 62 6c 6f 63 6b 21  |k!16=3....block!|
000026d0  32 30 3d 66 69 6c 65 5f  64 65 73 74 77 69 0d 0f  |20=file_destwi..|
000026e0  d2 18 62 6c 6f 63 6b 21  32 34 3d 66 69 6c 65 5f  |..block!24=file_|
000026f0  64 65 73 74 69 63 0d 0f  dc 17 62 6c 6f 63 6b 21  |destic....block!|
00002700  32 38 3d 66 69 6c 65 5f  64 65 73 74 78 0d 0f e6  |28=file_destx...|
00002710  17 62 6c 6f 63 6b 21 33  32 3d 66 69 6c 65 5f 64  |.block!32=file_d|
00002720  65 73 74 79 0d 0f f0 18  62 6c 6f 63 6b 21 33 36  |esty....block!36|
00002730  3d 64 61 74 61 5f 6c 65  6e 67 74 68 0d 0f fa 11  |=data_length....|
00002740  62 6c 6f 63 6b 21 34 30  3d 26 41 46 46 0d 10 04  |block!40=&AFF...|
00002750  15 24 28 62 6c 6f 63 6b  2b 34 34 29 3d 61 24 2b  |.$(block+44)=a$+|
00002760  bd 30 0d 10 0e 39 c8 99  22 57 69 6d 70 5f 53 65  |.0...9.."Wimp_Se|
00002770  6e 64 4d 65 73 73 61 67  65 22 2c 31 37 2c 62 6c  |ndMessage",17,bl|
00002780  6f 63 6b 2c 66 69 6c 65  5f 64 65 73 74 77 69 2c  |ock,file_destwi,|
00002790  66 69 6c 65 5f 64 65 73  74 69 63 0d 10 18 05 e1  |file_destic.....|
000027a0  0d 10 22 05 3a 0d 10 2c  0f dd f2 66 69 6c 65 5f  |..".:..,...file_|
000027b0  78 66 65 72 0d 10 36 30  f4 20 74 68 69 73 20 70  |xfer..60. this p|
000027c0  61 72 74 20 69 73 20 61  20 62 69 74 20 6f 66 20  |art is a bit of |
000027d0  62 6f 64 67 65 2c 20 62  75 74 20 69 74 20 77 6f  |bodge, but it wo|
000027e0  72 6b 73 21 0d 10 40 1b  78 66 65 72 5f 64 65 73  |rks!..@.xfer_des|
000027f0  74 70 6f 69 6e 74 3d 62  6c 6f 63 6b 21 32 30 0d  |tpoint=block!20.|
00002800  10 4a 1c 78 66 65 72 5f  64 65 73 74 6c 65 6e 67  |.J.xfer_destleng|
00002810  74 68 3d 62 6c 6f 63 6b  21 32 34 0d 10 54 0d 78  |th=block!24..T.x|
00002820  3d 62 6c 6f 63 6b 21 34  0d 10 5e 3b e7 20 78 66  |=block!4..^;. xf|
00002830  65 72 5f 78 66 65 72 72  69 6e 67 3d a3 20 78 66  |er_xferring=. xf|
00002840  65 72 5f 70 6f 69 6e 74  3d 64 61 74 61 5f 73 74  |er_point=data_st|
00002850  61 72 74 3a 78 66 65 72  5f 78 66 65 72 72 69 6e  |art:xfer_xferrin|
00002860  67 3d b9 0d 10 68 1b e7  20 78 66 65 72 5f 70 6f  |g=...h.. xfer_po|
00002870  69 6e 74 3c 64 61 74 61  5f 65 6e 64 20 8c 0d 10  |int<data_end ...|
00002880  72 50 20 e7 20 28 78 66  65 72 5f 70 6f 69 6e 74  |rP . (xfer_point|
00002890  2b 78 66 65 72 5f 64 65  73 74 6c 65 6e 67 74 68  |+xfer_destlength|
000028a0  29 3e 64 61 74 61 5f 65  6e 64 20 78 66 65 72 5f  |)>data_end xfer_|
000028b0  64 65 73 74 6c 65 6e 67  74 68 3d 64 61 74 61 5f  |destlength=data_|
000028c0  65 6e 64 2d 78 66 65 72  5f 70 6f 69 6e 74 0d 10  |end-xfer_point..|
000028d0  7c 53 20 c8 99 22 57 69  6d 70 5f 54 72 61 6e 73  ||S .."Wimp_Trans|
000028e0  66 65 72 42 6c 6f 63 6b  22 2c 74 61 73 6b 5f 68  |ferBlock",task_h|
000028f0  61 6e 64 6c 65 2c 78 66  65 72 5f 70 6f 69 6e 74  |andle,xfer_point|
00002900  2c 78 2c 78 66 65 72 5f  64 65 73 74 70 6f 69 6e  |,x,xfer_destpoin|
00002910  74 2c 78 66 65 72 5f 64  65 73 74 6c 65 6e 67 74  |t,xfer_destlengt|
00002920  68 0d 10 86 20 20 78 66  65 72 5f 70 6f 69 6e 74  |h...  xfer_point|
00002930  2b 3d 78 66 65 72 5f 64  65 73 74 6c 65 6e 67 74  |+=xfer_destlengt|
00002940  68 0d 10 90 05 cc 0d 10  9a 14 20 78 66 65 72 5f  |h......... xfer_|
00002950  78 66 65 72 72 69 6e 67  3d a3 0d 10 a4 05 cd 0d  |xferring=.......|
00002960  10 ae 29 e7 20 78 66 65  72 5f 70 6f 69 6e 74 3e  |..). xfer_point>|
00002970  64 61 74 61 5f 65 6e 64  20 78 66 65 72 5f 78 66  |data_end xfer_xf|
00002980  65 72 72 69 6e 67 3d a3  0d 10 b8 0e 21 62 6c 6f  |erring=.....!blo|
00002990  63 6b 3d 32 35 36 0d 10  c2 0d 62 6c 6f 63 6b 21  |ck=256....block!|
000029a0  34 3d 78 0d 10 cc 19 62  6c 6f 63 6b 21 31 32 3d  |4=x....block!12=|
000029b0  78 66 65 72 5f 6c 61 73  74 72 65 66 0d 10 d6 0e  |xfer_lastref....|
000029c0  62 6c 6f 63 6b 21 31 36  3d 37 0d 10 e0 1b 62 6c  |block!16=7....bl|
000029d0  6f 63 6b 21 32 30 3d 78  66 65 72 5f 64 65 73 74  |ock!20=xfer_dest|
000029e0  70 6f 69 6e 74 0d 10 ea  16 c8 8e 20 78 66 65 72  |point...... xfer|
000029f0  5f 78 66 65 72 72 69 6e  67 20 ca 0d 10 f4 08 20  |_xferring ..... |
00002a00  c9 20 b9 0d 10 fe 1e 20  20 62 6c 6f 63 6b 21 32  |. .....  block!2|
00002a10  34 3d 78 66 65 72 5f 64  65 73 74 6c 65 6e 67 74  |4=xfer_destlengt|
00002a20  68 0d 11 08 0d 20 20 74  79 70 65 3d 31 38 0d 11  |h....  type=18..|
00002a30  12 05 7f 0d 11 1c 0f 20  62 6c 6f 63 6b 21 32 34  |....... block!24|
00002a40  3d 30 0d 11 26 0c 20 74  79 70 65 3d 31 37 0d 11  |=0..&. type=17..|
00002a50  30 05 cb 0d 11 3a 2b c8  99 22 57 69 6d 70 5f 53  |0....:+.."Wimp_S|
00002a60  65 6e 64 4d 65 73 73 61  67 65 22 2c 74 79 70 65  |endMessage",type|
00002a70  2c 62 6c 6f 63 6b 2c 62  6c 6f 63 6b 21 34 0d 11  |,block,block!4..|
00002a80  44 05 e1 0d 11 4e 05 3a  0d 11 58 11 dd f2 73 61  |D....N.:..X...sa|
00002a90  76 65 63 68 6f 69 63 65  73 0d 11 62 1c 65 73 67  |vechoices..b.esg|
00002aa0  31 3d a4 77 68 69 63 68  28 31 2c 77 69 6e 68 5f  |1=.which(1,winh_|
00002ab0  6d 61 69 6e 29 0d 11 6c  1c 65 73 67 32 3d a4 77  |main)..l.esg2=.w|
00002ac0  68 69 63 68 28 32 2c 77  69 6e 68 5f 6d 61 69 6e  |hich(2,winh_main|
00002ad0  29 0d 11 76 1c 65 73 67  33 3d a4 77 68 69 63 68  |)..v.esg3=.which|
00002ae0  28 33 2c 77 69 6e 68 5f  6d 61 69 6e 29 0d 11 80  |(3,winh_main)...|
00002af0  16 f2 73 68 65 61 72 5f  61 6e 67 6c 65 6c 69 6d  |..shear_anglelim|
00002b00  69 74 73 0d 11 8a 10 62  6c 6f 63 6b 21 30 3d 65  |its....block!0=e|
00002b10  73 67 31 0d 11 94 10 62  6c 6f 63 6b 21 34 3d 65  |sg1....block!4=e|
00002b20  73 67 32 0d 11 9e 10 62  6c 6f 63 6b 21 38 3d 65  |sg2....block!8=e|
00002b30  73 67 33 0d 11 a8 16 62  6c 6f 63 6b 21 31 32 3d  |sg3....block!12=|
00002b40  73 68 65 61 72 5f 64 65  67 0d 11 b2 3b c8 99 22  |shear_deg...;.."|
00002b50  58 4f 53 5f 46 69 6c 65  22 2c 31 37 2c 74 61 73  |XOS_File",17,tas|
00002b60  6b 5f 70 61 74 68 24 2b  22 43 68 6f 69 63 65 73  |k_path$+"Choices|
00002b70  22 20 b8 20 66 6f 75 6e  64 2c 2c 2c 2c 2c 61 74  |" . found,,,,,at|
00002b80  74 72 69 62 0d 11 bc 0f  e7 20 66 6f 75 6e 64 3d  |trib..... found=|
00002b90  31 20 8c 0d 11 c6 18 20  61 74 74 72 69 62 3d 61  |1 ..... attrib=a|
00002ba0  74 74 72 69 62 20 80 20  25 31 30 0d 11 d0 32 20  |ttrib . %10...2 |
00002bb0  c8 99 22 58 4f 53 5f 46  69 6c 65 22 2c 34 2c 74  |.."XOS_File",4,t|
00002bc0  61 73 6b 5f 70 61 74 68  24 2b 22 43 68 6f 69 63  |ask_path$+"Choic|
00002bd0  65 73 22 2c 2c 2c 2c 61  74 74 72 69 62 0d 11 da  |es",,,,attrib...|
00002be0  05 cd 0d 11 e4 46 c8 99  22 58 4f 53 5f 46 69 6c  |.....F.."XOS_Fil|
00002bf0  65 22 2c 31 30 2c 74 61  73 6b 5f 70 61 74 68 24  |e",10,task_path$|
00002c00  2b 22 43 68 6f 69 63 65  73 22 2c 26 46 46 44 2c  |+"Choices",&FFD,|
00002c10  2c 62 6c 6f 63 6b 2c 62  6c 6f 63 6b 2b 31 36 20  |,block,block+16 |
00002c20  b8 20 65 3b 76 73 65 74  0d 11 ee 3a e7 20 28 76  |. e;vset...:. (v|
00002c30  73 65 74 20 80 20 31 29  3e 30 20 f2 6d 65 73 73  |set . 1)>0 .mess|
00002c40  5f 62 6f 78 31 28 22 53  41 56 45 46 41 49 4c 45  |_box1("SAVEFAILE|
00002c50  44 22 2c a4 72 64 30 28  65 2b 34 29 2c 22 4f 4b  |D",.rd0(e+4),"OK|
00002c60  22 29 0d 11 f8 05 e1 0d  12 02 05 3a 0d 12 0c 11  |").........:....|
00002c70  dd f2 6c 6f 61 64 63 68  6f 69 63 65 73 0d 12 16  |..loadchoices...|
00002c80  3f c8 99 22 58 4f 53 5f  46 69 6c 65 22 2c 31 36  |?.."XOS_File",16|
00002c90  2c 74 61 73 6b 5f 70 61  74 68 24 2b 22 43 68 6f  |,task_path$+"Cho|
00002ca0  69 63 65 73 22 2c 62 6c  6f 63 6b 2c 30 20 b8 20  |ices",block,0 . |
00002cb0  66 6f 75 6e 64 20 3b 66  6c 61 67 73 0d 12 20 20  |found ;flags..  |
00002cc0  e7 20 28 66 6c 61 67 73  20 80 20 31 29 3d 31 20  |. (flags . 1)=1 |
00002cd0  84 20 66 6f 75 6e 64 3c  3e 31 20 8c 0d 12 2a 0b  |. found<>1 ...*.|
00002ce0  20 65 73 67 31 3d 35 0d  12 34 0b 20 65 73 67 32  | esg1=5..4. esg2|
00002cf0  3d 38 0d 12 3e 0c 20 65  73 67 33 3d 32 30 0d 12  |=8..>. esg3=20..|
00002d00  48 11 20 73 68 65 61 72  5f 64 65 67 3d 33 30 0d  |H. shear_deg=30.|
00002d10  12 52 05 cc 0d 12 5c 11  20 65 73 67 31 3d 62 6c  |.R....\. esg1=bl|
00002d20  6f 63 6b 21 30 0d 12 66  11 20 65 73 67 32 3d 62  |ock!0..f. esg2=b|
00002d30  6c 6f 63 6b 21 34 0d 12  70 11 20 65 73 67 33 3d  |lock!4..p. esg3=|
00002d40  62 6c 6f 63 6b 21 38 0d  12 7a 17 20 73 68 65 61  |block!8..z. shea|
00002d50  72 5f 64 65 67 3d 62 6c  6f 63 6b 21 31 32 0d 12  |r_deg=block!12..|
00002d60  84 05 cd 0d 12 8e 0e e3  20 69 25 3d 30 20 b8 20  |........ i%=0 . |
00002d70  32 0d 12 98 20 20 e7 20  65 73 67 31 3d 28 69 25  |2...  . esg1=(i%|
00002d80  2b 34 29 20 62 69 74 3d  31 20 8b 20 62 69 74 3d  |+4) bit=1 . bit=|
00002d90  30 0d 12 a2 20 20 f2 69  63 5f 73 65 6c 28 62 69  |0...  .ic_sel(bi|
00002da0  74 2c 69 25 2b 34 2c 77  69 6e 68 5f 6d 61 69 6e  |t,i%+4,winh_main|
00002db0  29 0d 12 ac 20 20 e7 20  65 73 67 32 3d 28 69 25  |)...  . esg2=(i%|
00002dc0  2b 37 29 20 62 69 74 3d  31 20 8b 20 62 69 74 3d  |+7) bit=1 . bit=|
00002dd0  30 0d 12 b6 20 20 f2 69  63 5f 73 65 6c 28 62 69  |0...  .ic_sel(bi|
00002de0  74 2c 69 25 2b 37 2c 77  69 6e 68 5f 6d 61 69 6e  |t,i%+7,winh_main|
00002df0  29 0d 12 c0 05 ed 0d 12  ca 10 e3 20 69 25 3d 32  |).......... i%=2|
00002e00  30 20 b8 20 32 31 0d 12  d4 1c 20 e7 20 65 73 67  |0 . 21.... . esg|
00002e10  33 3d 69 25 20 62 69 74  3d 31 20 8b 20 62 69 74  |3=i% bit=1 . bit|
00002e20  3d 30 0d 12 de 1e 20 f2  69 63 5f 73 65 6c 28 62  |=0.... .ic_sel(b|
00002e30  69 74 2c 69 25 2c 77 69  6e 68 5f 6d 61 69 6e 29  |it,i%,winh_main)|
00002e40  0d 12 e8 05 ed 0d 12 f2  23 f2 69 63 5f 63 68 28  |........#.ic_ch(|
00002e50  c3 73 68 65 61 72 5f 64  65 67 2c 31 34 2c 77 69  |.shear_deg,14,wi|
00002e60  6e 68 5f 6d 61 69 6e 29  0d 12 fc 05 e1 0d 13 06  |nh_main)........|
00002e70  05 3a 0d 13 10 83 dd a4  74 61 73 6b 5f 69 6e 69  |.:......task_ini|
00002e80  74 28 76 65 72 29 3a de  20 74 61 73 6b 5f 69 64  |t(ver):. task_id|
00002e90  25 20 32 30 3a 24 28 74  61 73 6b 5f 69 64 25 2b  |% 20:$(task_id%+|
00002ea0  34 29 3d 22 54 41 53 4b  22 3a 21 74 61 73 6b 5f  |4)="TASK":!task_|
00002eb0  69 64 25 3d 30 3a c8 99  22 57 69 6d 70 5f 49 6e  |id%=0:.."Wimp_In|
00002ec0  69 74 69 61 6c 69 73 65  22 2c 76 65 72 2c 74 61  |itialise",ver,ta|
00002ed0  73 6b 5f 69 64 25 21 34  2c 74 61 73 6b 5f 6e 61  |sk_id%!4,task_na|
00002ee0  6d 65 24 2c 74 61 73 6b  5f 69 64 25 20 b8 20 61  |me$,task_id% . a|
00002ef0  2c 62 3a 3d 62 0d 13 1a  16 dd f2 74 65 6d 70 5f  |,b:=b......temp_|
00002f00  6f 70 65 6e 28 66 6e 61  6d 24 29 0d 13 24 3b c8  |open(fnam$)..$;.|
00002f10  99 22 58 4f 53 5f 46 69  6c 65 22 2c 32 33 2c 66  |."XOS_File",23,f|
00002f20  6e 61 6d 24 20 b8 20 66  6f 75 6e 64 2c 2c 2c 2c  |nam$ . found,,,,|
00002f30  74 65 6d 70 5f 66 69 6c  65 6c 65 6e 67 74 68 20  |temp_filelength |
00002f40  3b 66 6c 61 67 73 0d 13  2e 13 66 6c 61 67 73 3d  |;flags....flags=|
00002f50  66 6c 61 67 73 20 80 20  31 0d 13 38 3a e7 20 66  |flags . 1..8:. f|
00002f60  6c 61 67 73 3d 31 20 84  20 66 6f 75 6e 64 3c 3e  |lags=1 . found<>|
00002f70  31 20 f2 6d 65 73 73 5f  62 6f 78 31 28 22 4e 4f  |1 .mess_box1("NO|
00002f80  4c 4f 41 44 22 2c 66 6e  61 6d 24 2c 22 4f 4b 22  |LOAD",fnam$,"OK"|
00002f90  29 3a e0 0d 13 42 20 c8  99 22 57 69 6d 70 5f 4f  |):...B .."Wimp_O|
00002fa0  70 65 6e 54 65 6d 70 6c  61 74 65 22 2c 2c 66 6e  |penTemplate",,fn|
00002fb0  61 6d 24 0d 13 4c 05 e1  0d 13 56 16 dd a4 74 65  |am$..L....V...te|
00002fc0  6d 70 28 61 24 2c 66 6f  6e 74 72 65 66 29 0d 13  |mp(a$,fontref)..|
00002fd0  60 6e c8 99 20 22 57 69  6d 70 5f 4c 6f 61 64 54  |`n.. "Wimp_LoadT|
00002fe0  65 6d 70 6c 61 74 65 22  2c 2c 74 65 6d 70 5f 62  |emplate",,temp_b|
00002ff0  6c 6f 63 6b 2c 74 65 6d  70 5f 69 70 6f 69 6e 74  |lock,temp_ipoint|
00003000  2c 28 74 65 6d 70 5f 69  62 75 66 66 2b 74 65 6d  |,(temp_ibuff+tem|
00003010  70 5f 69 6c 65 6e 29 2c  66 6f 6e 74 72 65 66 2c  |p_ilen),fontref,|
00003020  61 24 2c 30 20 b8 20 2c  2c 74 65 6d 70 5f 69 70  |a$,0 . ,,temp_ip|
00003030  6f 69 6e 74 2c 2c 2c 2c  66 6e 64 25 0d 13 6a 2f  |oint,,,,fnd%..j/|
00003040  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 57  |.. "Wimp_CreateW|
00003050  69 6e 64 6f 77 22 2c 2c  74 65 6d 70 5f 62 6c 6f  |indow",,temp_blo|
00003060  63 6b 20 b8 20 68 61 6e  64 6c 65 0d 13 74 0b 3d  |ck . handle..t.=|
00003070  68 61 6e 64 6c 65 0d 13  7e 16 dd f2 77 69 6e 64  |handle..~...wind|
00003080  6f 77 5f 6f 70 65 6e 28  68 61 6e 29 0d 13 88 0f  |ow_open(han)....|
00003090  62 6c 6f 63 6b 21 30 3d  68 61 6e 0d 13 92 23 c8  |block!0=han...#.|
000030a0  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
000030b0  77 53 74 61 74 65 22 2c  2c 62 6c 6f 63 6b 0d 13  |wState",,block..|
000030c0  9c 1f c8 99 20 22 57 69  6d 70 5f 4f 70 65 6e 57  |.... "Wimp_OpenW|
000030d0  69 6e 64 6f 77 22 2c 2c  62 6c 6f 63 6b 0d 13 a6  |indow",,block...|
000030e0  05 e1 0d 13 b0 17 dd f2  77 69 6e 64 6f 77 5f 63  |........window_c|
000030f0  6c 6f 73 65 28 68 61 6e  29 0d 13 ba 0f 62 6c 6f  |lose(han)....blo|
00003100  63 6b 21 30 3d 68 61 6e  0d 13 c4 20 c8 99 20 22  |ck!0=han... .. "|
00003110  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
00003120  22 2c 2c 62 6c 6f 63 6b  0d 13 ce 05 e1 0d 13 d8  |",,block........|
00003130  1e dd f2 77 69 6e 64 6f  77 5f 70 6f 73 69 74 69  |...window_positi|
00003140  6f 6e 28 68 61 6e 2c 78  2c 79 29 0d 13 e2 0f 62  |on(han,x,y)....b|
00003150  6c 6f 63 6b 21 30 3d 68  61 6e 0d 13 ec 23 c8 99  |lock!0=han...#..|
00003160  20 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  | "Wimp_GetWindow|
00003170  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 0d 13 f6  |State",,block...|
00003180  17 78 53 3d 62 6c 6f 63  6b 21 31 32 2d 62 6c 6f  |.xS=block!12-blo|
00003190  63 6b 21 34 0d 14 00 17  79 53 3d 62 6c 6f 63 6b  |ck!4....yS=block|
000031a0  21 31 36 2d 62 6c 6f 63  6b 21 38 0d 14 0a 0d 62  |!16-block!8....b|
000031b0  6c 6f 63 6b 21 34 3d 78  0d 14 14 0d 62 6c 6f 63  |lock!4=x....bloc|
000031c0  6b 21 38 3d 79 0d 14 1e  11 62 6c 6f 63 6b 21 31  |k!8=y....block!1|
000031d0  32 3d 78 2b 78 53 0d 14  28 11 62 6c 6f 63 6b 21  |2=x+xS..(.block!|
000031e0  31 36 3d 79 2b 79 53 0d  14 32 1f c8 99 20 22 57  |16=y+yS..2... "W|
000031f0  69 6d 70 5f 4f 70 65 6e  57 69 6e 64 6f 77 22 2c  |imp_OpenWindow",|
00003200  2c 62 6c 6f 63 6b 0d 14  3c 05 e1 0d 14 46 1c dd  |,block..<....F..|
00003210  f2 69 63 5f 63 68 28 64  61 74 61 24 2c 69 6e 75  |.ic_ch(data$,inu|
00003220  6d 2c 68 61 6e 64 29 0d  14 50 10 62 6c 6f 63 6b  |m,hand)..P.block|
00003230  21 30 3d 68 61 6e 64 0d  14 5a 10 62 6c 6f 63 6b  |!0=hand..Z.block|
00003240  21 34 3d 69 6e 75 6d 0d  14 64 21 c8 99 20 22 57  |!4=inum..d!.. "W|
00003250  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00003260  22 2c 2c 62 6c 6f 63 6b  0d 14 6e 0d 62 6c 6f 63  |",,block..n.bloc|
00003270  6b 21 38 3d 30 0d 14 78  0e 62 6c 6f 63 6b 21 31  |k!8=0..x.block!1|
00003280  32 3d 30 0d 14 82 15 24  28 62 6c 6f 63 6b 21 32  |2=0....$(block!2|
00003290  38 29 3d 64 61 74 61 24  0d 14 8c 15 62 6c 6f 63  |8)=data$....bloc|
000032a0  6b 21 33 36 3d a9 28 64  61 74 61 24 29 0d 14 96  |k!36=.(data$)...|
000032b0  21 c8 99 20 22 57 69 6d  70 5f 53 65 74 49 63 6f  |!.. "Wimp_SetIco|
000032c0  6e 53 74 61 74 65 22 2c  2c 62 6c 6f 63 6b 0d 14  |nState",,block..|
000032d0  a0 05 e1 0d 14 aa 16 dd  a4 69 63 5f 72 64 28 69  |.........ic_rd(i|
000032e0  6e 75 6d 2c 68 61 6e 64  29 0d 14 b4 10 62 6c 6f  |num,hand)....blo|
000032f0  63 6b 21 30 3d 68 61 6e  64 0d 14 be 10 62 6c 6f  |ck!0=hand....blo|
00003300  63 6b 21 34 3d 69 6e 75  6d 0d 14 c8 21 c8 99 20  |ck!4=inum...!.. |
00003310  22 57 69 6d 70 5f 47 65  74 49 63 6f 6e 53 74 61  |"Wimp_GetIconSta|
00003320  74 65 22 2c 2c 62 6c 6f  63 6b 0d 14 d2 10 3d 24  |te",,block....=$|
00003330  28 62 6c 6f 63 6b 21 32  38 29 0d 14 dc 2c dd f2  |(block!28)...,..|
00003340  69 63 5f 6d 61 6b 65 69  6e 64 73 70 72 28 61 24  |ic_makeindspr(a$|
00003350  2c 61 64 72 2c 69 6e 75  6d 2c 68 61 6e 64 2c f8  |,adr,inum,hand,.|
00003360  20 69 68 61 6e 29 0d 14  e6 0e 61 64 72 21 30 3d  | ihan)....adr!0=|
00003370  68 61 6e 64 0d 14 f0 0e  61 64 72 21 34 3d 69 6e  |hand....adr!4=in|
00003380  75 6d 0d 14 fa 1e c8 99  22 57 69 6d 70 5f 47 65  |um......"Wimp_Ge|
00003390  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 61 64 72  |tIconState",,adr|
000033a0  0d 15 04 0f 61 64 72 21  34 3d 61 64 72 21 38 0d  |....adr!4=adr!8.|
000033b0  15 0e 10 61 64 72 21 38  3d 61 64 72 21 31 32 0d  |...adr!8=adr!12.|
000033c0  15 18 11 61 64 72 21 31  32 3d 61 64 72 21 31 36  |...adr!12=adr!16|
000033d0  0d 15 22 11 61 64 72 21  31 36 3d 61 64 72 21 32  |..".adr!16=adr!2|
000033e0  30 0d 15 2c 0f 61 64 72  21 32 30 3d 26 31 31 41  |0..,.adr!20=&11A|
000033f0  0d 15 36 13 61 64 72 21  32 34 3d 28 61 64 72 2b  |..6.adr!24=(adr+|
00003400  34 32 29 0d 15 40 13 24  28 61 64 72 2b 34 32 29  |42)..@.$(adr+42)|
00003410  3d 61 24 2b bd 30 0d 15  4a 0f 61 64 72 21 32 38  |=a$+.0..J.adr!28|
00003420  3d 73 70 72 25 0d 15 54  10 61 64 72 21 33 32 3d  |=spr%..T.adr!32=|
00003430  a9 28 61 24 29 0d 15 5e  23 c8 99 22 57 69 6d 70  |.(a$)..^#.."Wimp|
00003440  5f 43 72 65 61 74 65 49  63 6f 6e 22 2c 2c 61 64  |_CreateIcon",,ad|
00003450  72 20 b8 20 69 68 61 6e  0d 15 68 05 e1 0d 15 72  |r . ihan..h....r|
00003460  1f dd f2 69 63 5f 76 61  6c 69 64 28 64 61 74 61  |...ic_valid(data|
00003470  24 2c 69 6e 75 6d 2c 68  61 6e 64 29 0d 15 7c 10  |$,inum,hand)..|.|
00003480  62 6c 6f 63 6b 21 30 3d  68 61 6e 64 0d 15 86 10  |block!0=hand....|
00003490  62 6c 6f 63 6b 21 34 3d  69 6e 75 6d 0d 15 90 21  |block!4=inum...!|
000034a0  c8 99 20 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |.. "Wimp_GetIcon|
000034b0  53 74 61 74 65 22 2c 2c  62 6c 6f 63 6b 0d 15 9a  |State",,block...|
000034c0  0d 62 6c 6f 63 6b 21 38  3d 30 0d 15 a4 0e 62 6c  |.block!8=0....bl|
000034d0  6f 63 6b 21 31 32 3d 30  0d 15 ae 15 24 28 62 6c  |ock!12=0....$(bl|
000034e0  6f 63 6b 21 33 32 29 3d  64 61 74 61 24 0d 15 b8  |ock!32)=data$...|
000034f0  21 c8 99 20 22 57 69 6d  70 5f 53 65 74 49 63 6f  |!.. "Wimp_SetIco|
00003500  6e 53 74 61 74 65 22 2c  2c 62 6c 6f 63 6b 0d 15  |nState",,block..|
00003510  c2 05 e1 0d 15 cc 1b dd  f2 69 63 5f 73 65 6c 28  |.........ic_sel(|
00003520  62 69 74 2c 69 6e 75 6d  2c 68 61 6e 64 29 0d 15  |bit,inum,hand)..|
00003530  d6 16 e7 20 62 69 74 3c  3e 30 20 62 69 74 3d 31  |... bit<>0 bit=1|
00003540  3c 3c 32 31 0d 15 e0 10  62 6c 6f 63 6b 21 30 3d  |<<21....block!0=|
00003550  68 61 6e 64 0d 15 ea 10  62 6c 6f 63 6b 21 34 3d  |hand....block!4=|
00003560  69 6e 75 6d 0d 15 f4 21  c8 99 20 22 57 69 6d 70  |inum...!.. "Wimp|
00003570  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
00003580  62 6c 6f 63 6b 0d 15 fe  0f 62 6c 6f 63 6b 21 38  |block....block!8|
00003590  3d 62 69 74 0d 16 08 12  62 6c 6f 63 6b 21 31 32  |=bit....block!12|
000035a0  3d 31 3c 3c 32 31 0d 16  12 21 c8 99 20 22 57 69  |=1<<21...!.. "Wi|
000035b0  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_SetIconState"|
000035c0  2c 2c 62 6c 6f 63 6b 0d  16 1c 05 e1 0d 16 26 1c  |,,block.......&.|
000035d0  dd f2 69 63 5f 67 72 65  79 28 62 69 74 2c 69 6e  |..ic_grey(bit,in|
000035e0  75 6d 2c 68 61 6e 64 29  0d 16 30 16 e7 20 62 69  |um,hand)..0.. bi|
000035f0  74 3c 3e 30 20 62 69 74  3d 31 3c 3c 32 32 0d 16  |t<>0 bit=1<<22..|
00003600  3a 10 62 6c 6f 63 6b 21  30 3d 68 61 6e 64 0d 16  |:.block!0=hand..|
00003610  44 10 62 6c 6f 63 6b 21  34 3d 69 6e 75 6d 0d 16  |D.block!4=inum..|
00003620  4e 21 c8 99 20 22 57 69  6d 70 5f 47 65 74 49 63  |N!.. "Wimp_GetIc|
00003630  6f 6e 53 74 61 74 65 22  2c 2c 62 6c 6f 63 6b 0d  |onState",,block.|
00003640  16 58 0f 62 6c 6f 63 6b  21 38 3d 62 69 74 0d 16  |.X.block!8=bit..|
00003650  62 12 62 6c 6f 63 6b 21  31 32 3d 31 3c 3c 32 32  |b.block!12=1<<22|
00003660  0d 16 6c 21 c8 99 20 22  57 69 6d 70 5f 53 65 74  |..l!.. "Wimp_Set|
00003670  49 63 6f 6e 53 74 61 74  65 22 2c 2c 62 6c 6f 63  |IconState",,bloc|
00003680  6b 0d 16 76 05 e1 0d 16  80 1b dd a4 69 63 5f 72  |k..v........ic_r|
00003690  65 61 64 73 65 6c 28 69  6e 75 6d 2c 68 61 6e 64  |eadsel(inum,hand|
000036a0  29 0d 16 8a 10 62 6c 6f  63 6b 21 30 3d 68 61 6e  |)....block!0=han|
000036b0  64 0d 16 94 10 62 6c 6f  63 6b 21 34 3d 69 6e 75  |d....block!4=inu|
000036c0  6d 0d 16 9e 21 c8 99 20  22 57 69 6d 70 5f 47 65  |m...!.. "Wimp_Ge|
000036d0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 62 6c 6f  |tIconState",,blo|
000036e0  63 6b 0d 16 a8 13 69 66  6c 61 67 73 3d 62 6c 6f  |ck....iflags=blo|
000036f0  63 6b 21 32 34 0d 16 b2  1b 69 66 6c 61 67 73 3d  |ck!24....iflags=|
00003700  69 66 6c 61 67 73 20 80  20 28 31 3c 3c 32 31 29  |iflags . (1<<21)|
00003710  0d 16 bc 16 e7 20 69 66  6c 61 67 73 3e 30 20 3d  |..... iflags>0 =|
00003720  31 20 8b 20 3d 30 0d 16  c6 27 dd f2 6d 65 6e 75  |1 . =0...'..menu|
00003730  5f 6d 61 6b 65 28 6d 65  6e 62 6c 6f 6b 2c 62 61  |_make(menblok,ba|
00003740  73 65 24 2c 6a 24 2c 69  74 65 6d 73 29 0d 16 d0  |se$,j$,items)...|
00003750  20 ea 20 73 75 62 24 2c  78 78 24 2c 6c 62 69 74  | . sub$,xx$,lbit|
00003760  24 2c 70 74 72 2c 73 75  62 6d 65 6e 70 0d 16 da  |$,ptr,submenp...|
00003770  21 24 6d 65 6e 62 6c 6f  6b 3d a4 74 6f 6b 65 6e  |!$menblok=.token|
00003780  28 62 61 73 65 24 2b 22  54 22 2c 22 22 29 0d 16  |(base$+"T","")..|
00003790  e4 10 6d 65 6e 62 6c 6f  6b 3f 31 32 3d 37 0d 16  |..menblok?12=7..|
000037a0  ee 10 6d 65 6e 62 6c 6f  6b 3f 31 33 3d 32 0d 16  |..menblok?13=2..|
000037b0  f8 10 6d 65 6e 62 6c 6f  6b 3f 31 34 3d 37 0d 17  |..menblok?14=7..|
000037c0  02 10 6d 65 6e 62 6c 6f  6b 3f 31 35 3d 30 0d 17  |..menblok?15=0..|
000037d0  0c 2e 6d 65 6e 62 6c 6f  6b 21 31 36 3d 28 bb 28  |..menblok!16=(.(|
000037e0  a4 74 6f 6b 65 6e 28 62  61 73 65 24 2b 22 57 22  |.token(base$+"W"|
000037f0  2c 22 22 29 29 2a 31 36  29 2b 31 36 0d 17 16 11  |,""))*16)+16....|
00003800  6d 65 6e 62 6c 6f 6b 21  32 30 3d 34 34 0d 17 20  |menblok!20=44.. |
00003810  10 6d 65 6e 62 6c 6f 6b  21 32 34 3d 30 0d 17 2a  |.menblok!24=0..*|
00003820  0a 70 74 72 3d 32 38 0d  17 34 0b 73 75 62 24 3d  |.ptr=28..4.sub$=|
00003830  6a 24 0d 17 3e 1d 64 65  66 24 3d a4 74 6f 6b 65  |j$..>.def$=.toke|
00003840  6e 28 62 61 73 65 24 2b  22 44 22 2c 22 22 29 0d  |n(base$+"D","").|
00003850  17 48 12 e3 20 69 25 3d  31 20 b8 20 69 74 65 6d  |.H.. i%=1 . item|
00003860  73 0d 17 52 1e 20 6c 62  69 74 24 3d c0 73 75 62  |s..R. lbit$=.sub|
00003870  24 2c a7 73 75 62 24 2c  22 23 22 29 2d 31 29 0d  |$,.sub$,"#")-1).|
00003880  17 5c 23 20 73 75 62 24  3d c2 73 75 62 24 2c a9  |.\# sub$=.sub$,.|
00003890  28 73 75 62 24 29 2d a7  73 75 62 24 2c 22 23 22  |(sub$)-.sub$,"#"|
000038a0  29 29 0d 17 66 12 20 6d  65 6e 62 6c 6f 6b 21 70  |))..f. menblok!p|
000038b0  74 72 3d 30 0d 17 70 4f  20 e7 20 c0 6c 62 69 74  |tr=0..pO . .lbit|
000038c0  24 2c 31 29 3d 22 81 22  20 6c 62 69 74 24 3d c2  |$,1)="." lbit$=.|
000038d0  6c 62 69 74 24 2c a9 28  6c 62 69 74 24 29 2d 31  |lbit$,.(lbit$)-1|
000038e0  29 3a 6d 65 6e 62 6c 6f  6b 21 70 74 72 3d 28 6d  |):menblok!ptr=(m|
000038f0  65 6e 62 6c 6f 6b 21 70  74 72 29 20 84 20 25 31  |enblok!ptr) . %1|
00003900  30 30 30 0d 17 7a 4d 20  e7 20 c0 6c 62 69 74 24  |000..zM . .lbit$|
00003910  2c 31 29 3d 22 7c 22 20  6c 62 69 74 24 3d c2 6c  |,1)="|" lbit$=.l|
00003920  62 69 74 24 2c a9 28 6c  62 69 74 24 29 2d 31 29  |bit$,.(lbit$)-1)|
00003930  3a 6d 65 6e 62 6c 6f 6b  21 70 74 72 3d 28 6d 65  |:menblok!ptr=(me|
00003940  6e 62 6c 6f 6b 21 70 74  72 29 20 84 20 25 31 30  |nblok!ptr) . %10|
00003950  0d 17 84 33 20 e7 20 69  25 3d 69 74 65 6d 73 20  |...3 . i%=items |
00003960  6d 65 6e 62 6c 6f 6b 21  70 74 72 3d 6d 65 6e 62  |menblok!ptr=menb|
00003970  6c 6f 6b 21 70 74 72 20  84 20 25 31 30 30 30 30  |lok!ptr . %10000|
00003980  30 30 30 0d 17 8e 2d 20  e7 20 6c 62 69 74 24 3d  |000...- . lbit$=|
00003990  22 22 20 73 75 62 6d 65  6e 70 3d 2d 31 20 8b 20  |"" submenp=-1 . |
000039a0  73 75 62 6d 65 6e 70 3d  bb 28 6c 62 69 74 24 29  |submenp=.(lbit$)|
000039b0  0d 17 98 1c 20 6d 65 6e  62 6c 6f 6b 21 28 70 74  |.... menblok!(pt|
000039c0  72 2b 34 29 3d 73 75 62  6d 65 6e 70 0d 17 a2 1d  |r+4)=submenp....|
000039d0  20 6d 65 6e 62 6c 6f 6b  21 28 70 74 72 2b 38 29  | menblok!(ptr+8)|
000039e0  3d 26 37 30 30 39 30 33  31 0d 17 ac 1e 20 6c 62  |=&7009031.... lb|
000039f0  69 74 24 3d c0 64 65 66  24 2c a7 64 65 66 24 2c  |it$=.def$,.def$,|
00003a00  22 2c 22 29 2d 31 29 0d  17 b6 23 20 64 65 66 24  |",")-1)...# def$|
00003a10  3d c2 64 65 66 24 2c a9  28 64 65 66 24 29 2d a7  |=.def$,.(def$)-.|
00003a20  64 65 66 24 2c 22 2c 22  29 29 0d 17 c0 1e 20 24  |def$,",")).... $|
00003a30  28 6d 65 6e 62 6c 6f 6b  2b 28 70 74 72 2b 31 32  |(menblok+(ptr+12|
00003a40  29 29 3d 6c 62 69 74 24  0d 17 ca 0c 20 70 74 72  |))=lbit$.... ptr|
00003a50  2b 3d 32 34 0d 17 d4 05  ed 0d 17 de 05 e1 0d 17  |+=24............|
00003a60  e8 15 dd a4 6d 65 6e 75  5f 73 70 61 63 65 28 6e  |....menu_space(n|
00003a70  75 6d 29 0d 17 f2 12 3d  28 6e 75 6d 2a 32 34 29  |um)....=(num*24)|
00003a80  2b 32 38 2b 38 0d 17 fc  0f dd a4 72 64 30 28 72  |+28+8......rd0(r|
00003a90  64 7a 70 29 0d 18 06 0b  72 64 7a 24 3d 22 22 0d  |dzp)....rdz$="".|
00003aa0  18 10 0a 72 64 7a 7a 3d  30 0d 18 1a 05 f5 0d 18  |...rdzz=0.......|
00003ab0  24 2e 20 e7 20 72 64 7a  70 3f 72 64 7a 7a 3c 3e  |$. . rdzp?rdzz<>|
00003ac0  30 20 72 64 7a 24 2b 3d  bd 28 72 64 7a 70 3f 72  |0 rdz$+=.(rdzp?r|
00003ad0  64 7a 7a 29 3a 72 64 7a  7a 2b 3d 31 0d 18 2e 1c  |dzz):rdzz+=1....|
00003ae0  fd 20 72 64 7a 70 3f 72  64 7a 7a 3d 30 20 84 20  |. rdzp?rdzz=0 . |
00003af0  72 64 7a 70 3d 32 35 35  0d 18 38 09 3d 72 64 7a  |rdzp=255..8.=rdz|
00003b00  24 0d 18 42 0f dd f2 65  72 72 6f 72 5f 72 65 70  |$..B...error_rep|
00003b10  0d 18 4c 0d 62 6c 6f 63  6b 21 30 3d 30 0d 18 56  |..L.block!0=0..V|
00003b20  30 24 28 62 6c 6f 63 6b  2b 34 29 3d a4 74 6f 6b  |0$(block+4)=.tok|
00003b30  65 6e 28 22 46 41 54 41  4c 49 4e 54 22 2c c3 9e  |en("FATALINT",..|
00003b40  2b 22 20 28 22 2b f6 24  2b 22 29 22 29 0d 18 60  |+" ("+.$+")")..`|
00003b50  07 ef 20 37 0d 18 6a 20  c8 99 20 26 34 30 30 44  |.. 7..j .. &400D|
00003b60  46 2c 62 6c 6f 63 6b 2c  30 2c 74 61 73 6b 5f 6e  |F,block,0,task_n|
00003b70  61 6d 65 24 0d 18 74 2f  c8 99 20 22 57 69 6d 70  |ame$..t/.. "Wimp|
00003b80  5f 43 6c 6f 73 65 44 6f  77 6e 22 2c 74 61 73 6b  |_CloseDown",task|
00003b90  5f 68 61 6e 64 6c 65 2c  26 34 42 35 33 34 31 35  |_handle,&4B53415|
00003ba0  34 3a e0 0d 18 7e 05 e1  0d 18 88 1c dd f2 6d 65  |4:...~........me|
00003bb0  6e 5f 74 69 63 6b 28 62  69 74 2c 68 61 6e 64 2c  |n_tick(bit,hand,|
00003bc0  6e 75 6d 29 0d 18 92 0e  6e 75 6d 3d 6e 75 6d 2a  |num)....num=num*|
00003bd0  32 34 0d 18 9c 0b 6e 75  6d 2b 3d 32 38 0d 18 a6  |24....num+=28...|
00003be0  0d 6e 75 6d 2b 3d 68 61  6e 64 0d 18 b0 0a 61 3d  |.num+=hand....a=|
00003bf0  21 6e 75 6d 0d 18 ba 20  e7 20 28 61 20 80 20 31  |!num... . (a . 1|
00003c00  29 3d 30 20 80 20 62 69  74 3e 30 20 21 6e 75 6d  |)=0 . bit>0 !num|
00003c10  3d 61 2b 31 0d 18 c4 20  e7 20 28 61 20 80 20 31  |=a+1... . (a . 1|
00003c20  29 3e 30 20 80 20 62 69  74 3d 30 20 21 6e 75 6d  |)>0 . bit=0 !num|
00003c30  3d 61 2d 31 0d 18 ce 05  e1 0d 18 d8 1c dd f2 6d  |=a-1...........m|
00003c40  65 6e 5f 67 72 65 79 28  62 69 74 2c 68 61 6e 64  |en_grey(bit,hand|
00003c50  2c 6e 75 6d 29 0d 18 e2  0e 6e 75 6d 3d 6e 75 6d  |,num)....num=num|
00003c60  2a 32 34 0d 18 ec 0b 6e  75 6d 2b 3d 33 36 0d 18  |*24....num+=36..|
00003c70  f6 0d 6e 75 6d 2b 3d 68  61 6e 64 0d 19 00 0a 61  |..num+=hand....a|
00003c80  3d 21 6e 75 6d 0d 19 0a  2c e7 20 28 61 20 80 20  |=!num...,. (a . |
00003c90  28 31 3c 3c 32 32 29 29  3d 30 20 80 20 62 69 74  |(1<<22))=0 . bit|
00003ca0  3e 30 20 21 6e 75 6d 3d  61 2b 28 31 3c 3c 32 32  |>0 !num=a+(1<<22|
00003cb0  29 0d 19 14 2c e7 20 28  61 20 80 20 28 31 3c 3c  |)...,. (a . (1<<|
00003cc0  32 32 29 29 3e 30 20 80  20 62 69 74 3d 30 20 21  |22))>0 . bit=0 !|
00003cd0  6e 75 6d 3d 61 2d 28 31  3c 3c 32 32 29 0d 19 1e  |num=a-(1<<22)...|
00003ce0  05 e1 0d 19 28 0f dd a4  72 6f 64 6f 74 28 61 24  |....(...rodot(a$|
00003cf0  29 0d 19 32 14 e7 20 a7  61 24 2c 22 2e 22 29 3d  |)..2.. .a$,".")=|
00003d00  30 20 3d 61 24 0d 19 3c  09 69 3d a9 61 24 0d 19  |0 =a$..<.i=.a$..|
00003d10  46 19 f5 3a 69 2d 3d 31  3a fd 20 c1 61 24 2c 69  |F..:i-=1:. .a$,i|
00003d20  2c 31 29 3d 22 2e 22 0d  19 50 0f 3d c2 61 24 2c  |,1)="."..P.=.a$,|
00003d30  a9 61 24 2d 69 29 0d 19  5a 20 dd f2 72 61 64 69  |.a$-i)..Z ..radi|
00003d40  6f 6c 6f 63 6b 28 65 73  67 2c 69 63 6f 6e 2c 77  |olock(esg,icon,w|
00003d50  69 6e 64 6f 77 29 0d 19  64 19 65 73 67 3d 28 65  |indow)..d.esg=(e|
00003d60  73 67 3c 3c 31 36 29 2b  26 32 30 30 30 30 30 0d  |sg<<16)+&200000.|
00003d70  19 6e 2f c8 99 22 57 69  6d 70 5f 57 68 69 63 68  |.n/.."Wimp_Which|
00003d80  49 63 6f 6e 22 2c 77 69  6e 64 6f 77 2c 62 6c 6f  |Icon",window,blo|
00003d90  63 6b 2c 26 33 46 30 30  30 30 2c 65 73 67 0d 19  |ck,&3F0000,esg..|
00003da0  78 26 e7 20 21 62 6c 6f  63 6b 3d 2d 31 20 f2 69  |x&. !block=-1 .i|
00003db0  63 5f 73 65 6c 28 31 2c  69 63 6f 6e 2c 77 69 6e  |c_sel(1,icon,win|
00003dc0  64 6f 77 29 0d 19 82 05  e1 0d 19 8c 17 dd a4 77  |dow)...........w|
00003dd0  68 69 63 68 28 65 73 67  2c 77 69 6e 64 6f 77 29  |hich(esg,window)|
00003de0  0d 19 96 19 65 73 67 3d  28 65 73 67 3c 3c 31 36  |....esg=(esg<<16|
00003df0  29 2b 26 32 30 30 30 30  30 0d 19 a0 2f c8 99 22  |)+&200000.../.."|
00003e00  57 69 6d 70 5f 57 68 69  63 68 49 63 6f 6e 22 2c  |Wimp_WhichIcon",|
00003e10  77 69 6e 64 6f 77 2c 62  6c 6f 63 6b 2c 26 33 46  |window,block,&3F|
00003e20  30 30 30 30 2c 65 73 67  0d 19 aa 0b 3d 21 62 6c  |0000,esg....=!bl|
00003e30  6f 63 6b 0d 19 b4 16 dd  f2 6d 65 73 73 5f 6c 6f  |ock......mess_lo|
00003e40  61 64 28 66 69 6c 65 24  29 0d 19 be 36 c8 99 22  |ad(file$)...6.."|
00003e50  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 46 69 6c  |MessageTrans_Fil|
00003e60  65 49 6e 66 6f 22 2c 2c  66 69 6c 65 24 20 b8 20  |eInfo",,file$ . |
00003e70  2c 2c 6d 65 73 73 5f 62  75 66 66 73 69 7a 65 0d  |,,mess_buffsize.|
00003e80  19 c8 1e de 20 6d 65 73  73 5f 62 75 66 66 25 20  |.... mess_buff% |
00003e90  6d 65 73 73 5f 62 75 66  66 73 69 7a 65 0d 19 d2  |mess_buffsize...|
00003ea0  1c de 20 6d 65 73 73 5f  64 65 73 63 25 20 31 37  |.. mess_desc% 17|
00003eb0  2b a9 28 66 69 6c 65 24  29 0d 19 dc 17 de 20 6d  |+.(file$)..... m|
00003ec0  65 73 73 5f 67 65 6e 62  75 66 66 25 20 32 35 36  |ess_genbuff% 256|
00003ed0  0d 19 e6 1a 24 28 6d 65  73 73 5f 64 65 73 63 25  |....$(mess_desc%|
00003ee0  2b 31 36 29 3d 66 69 6c  65 24 0d 19 f0 41 c8 99  |+16)=file$...A..|
00003ef0  22 4d 65 73 73 61 67 65  54 72 61 6e 73 5f 4f 70  |"MessageTrans_Op|
00003f00  65 6e 46 69 6c 65 22 2c  6d 65 73 73 5f 64 65 73  |enFile",mess_des|
00003f10  63 25 2c 6d 65 73 73 5f  64 65 73 63 25 2b 31 36  |c%,mess_desc%+16|
00003f20  2c 6d 65 73 73 5f 62 75  66 66 25 0d 19 fa 05 e1  |,mess_buff%.....|
00003f30  0d 1a 04 10 dd f2 6d 65  73 73 5f 63 6c 6f 73 65  |......mess_close|
00003f40  0d 1a 0e 29 c8 99 22 4d  65 73 73 61 67 65 54 72  |...).."MessageTr|
00003f50  61 6e 73 5f 43 6c 6f 73  65 46 69 6c 65 22 2c 6d  |ans_CloseFile",m|
00003f60  65 73 73 5f 64 65 73 63  25 0d 1a 18 05 e1 0d 1a  |ess_desc%.......|
00003f70  22 12 dd a4 74 6f 6b 65  6e 28 61 24 2c 62 24 29  |"...token(a$,b$)|
00003f80  0d 1a 2c 1a 24 6d 65 73  73 5f 67 65 6e 62 75 66  |..,.$mess_genbuf|
00003f90  66 25 3d 61 24 2b bd 28  30 29 0d 1a 36 4f c8 99  |f%=a$+.(0)..6O..|
00003fa0  22 4d 65 73 73 61 67 65  54 72 61 6e 73 5f 4c 6f  |"MessageTrans_Lo|
00003fb0  6f 6b 75 70 22 2c 6d 65  73 73 5f 64 65 73 63 25  |okup",mess_desc%|
00003fc0  2c 6d 65 73 73 5f 67 65  6e 62 75 66 66 25 2c 6d  |,mess_genbuff%,m|
00003fd0  65 73 73 5f 67 65 6e 62  75 66 66 25 2c 32 35 35  |ess_genbuff%,255|
00003fe0  2c 62 24 2c 30 2c 30 2c  30 0d 1a 40 18 3d a4 72  |,b$,0,0,0..@.=.r|
00003ff0  64 30 28 6d 65 73 73 5f  67 65 6e 62 75 66 66 25  |d0(mess_genbuff%|
00004000  29 0d 1a 4a 23 dd f2 6d  65 73 73 5f 62 6f 78 31  |)..J#..mess_box1|
00004010  28 74 6f 6b 65 6e 24 2c  73 75 62 31 24 2c 72 65  |(token$,sub1$,re|
00004020  73 70 24 29 0d 1a 54 2c  f2 69 63 5f 63 68 28 a4  |sp$)..T,.ic_ch(.|
00004030  74 6f 6b 65 6e 28 74 6f  6b 65 6e 24 2c 73 75 62  |token(token$,sub|
00004040  31 24 29 2c 30 2c 77 69  6e 68 5f 6d 65 73 31 29  |1$),0,winh_mes1)|
00004050  0d 1a 5e 28 f2 69 63 5f  63 68 28 a4 74 6f 6b 65  |..^(.ic_ch(.toke|
00004060  6e 28 72 65 73 70 24 2c  22 22 29 2c 31 2c 77 69  |n(resp$,""),1,wi|
00004070  6e 68 5f 6d 65 73 31 29  0d 1a 68 07 ef 20 37 0d  |nh_mes1)..h.. 7.|
00004080  1a 72 48 f2 77 69 6e 64  6f 77 5f 70 6f 73 69 74  |.rH.window_posit|
00004090  69 6f 6e 28 77 69 6e 68  5f 6d 65 73 31 2c 28 a4  |ion(winh_mes1,(.|
000040a0  73 63 72 65 65 6e 5f 78  2d 37 33 38 29 2f 32 2c  |screen_x-738)/2,|
000040b0  28 28 a4 73 63 72 65 65  6e 5f 79 2d 32 37 36 29  |((.screen_y-276)|
000040c0  2f 32 29 2b 34 30 29 0d  1a 7c 1c f2 6d 6f 75 73  |/2)+40)..|..mous|
000040d0  65 5f 77 69 6e 64 6f 77  28 77 69 6e 68 5f 6d 65  |e_window(winh_me|
000040e0  73 31 29 0d 1a 86 12 69  63 6f 6e 3d a4 66 61 6b  |s1)....icon=.fak|
000040f0  65 70 6f 6c 6c 0d 1a 90  11 f2 6d 6f 75 73 65 5f  |epoll.....mouse_|
00004100  73 63 72 65 65 6e 0d 1a  9a 1c f2 77 69 6e 64 6f  |screen.....windo|
00004110  77 5f 63 6c 6f 73 65 28  77 69 6e 68 5f 6d 65 73  |w_close(winh_mes|
00004120  31 29 0d 1a a4 05 e1 0d  1a ae 32 dd a4 6d 65 73  |1)........2..mes|
00004130  73 5f 62 6f 78 32 28 74  6f 6b 65 6e 24 2c 73 75  |s_box2(token$,su|
00004140  62 31 24 2c 72 65 73 70  31 24 2c 72 65 73 70 32  |b1$,resp1$,resp2|
00004150  24 2c 72 65 73 70 33 24  29 0d 1a b8 2c f2 69 63  |$,resp3$)...,.ic|
00004160  5f 63 68 28 a4 74 6f 6b  65 6e 28 74 6f 6b 65 6e  |_ch(.token(token|
00004170  24 2c 73 75 62 31 24 29  2c 30 2c 77 69 6e 68 5f  |$,sub1$),0,winh_|
00004180  6d 65 73 32 29 0d 1a c2  29 f2 69 63 5f 63 68 28  |mes2)...).ic_ch(|
00004190  a4 74 6f 6b 65 6e 28 72  65 73 70 31 24 2c 22 22  |.token(resp1$,""|
000041a0  29 2c 31 2c 77 69 6e 68  5f 6d 65 73 32 29 0d 1a  |),1,winh_mes2)..|
000041b0  cc 29 f2 69 63 5f 63 68  28 a4 74 6f 6b 65 6e 28  |.).ic_ch(.token(|
000041c0  72 65 73 70 32 24 2c 22  22 29 2c 32 2c 77 69 6e  |resp2$,""),2,win|
000041d0  68 5f 6d 65 73 32 29 0d  1a d6 07 ef 20 37 0d 1a  |h_mes2)..... 7..|
000041e0  e0 48 f2 77 69 6e 64 6f  77 5f 70 6f 73 69 74 69  |.H.window_positi|
000041f0  6f 6e 28 77 69 6e 68 5f  6d 65 73 32 2c 28 a4 73  |on(winh_mes2,(.s|
00004200  63 72 65 65 6e 5f 78 2d  37 33 38 29 2f 32 2c 28  |creen_x-738)/2,(|
00004210  28 a4 73 63 72 65 65 6e  5f 79 2d 32 37 36 29 2f  |(.screen_y-276)/|
00004220  32 29 2b 34 30 29 0d 1a  ea 1c f2 6d 6f 75 73 65  |2)+40).....mouse|
00004230  5f 77 69 6e 64 6f 77 28  77 69 6e 68 5f 6d 65 73  |_window(winh_mes|
00004240  32 29 0d 1a f4 12 69 63  6f 6e 3d a4 66 61 6b 65  |2)....icon=.fake|
00004250  70 6f 6c 6c 0d 1a fe 11  f2 6d 6f 75 73 65 5f 73  |poll.....mouse_s|
00004260  63 72 65 65 6e 0d 1b 08  1c f2 77 69 6e 64 6f 77  |creen.....window|
00004270  5f 63 6c 6f 73 65 28 77  69 6e 68 5f 6d 65 73 32  |_close(winh_mes2|
00004280  29 0d 1b 12 09 3d 69 63  6f 6e 0d 1b 1c 0e dd a4  |)....=icon......|
00004290  66 61 6b 65 70 6f 6c 6c  0d 1b 26 05 f5 0d 1b 30  |fakepoll..&....0|
000042a0  06 20 f5 0d 1b 3a 37 20  20 c8 99 22 57 69 6d 70  |. ...:7  .."Wimp|
000042b0  5f 50 6f 6c 6c 22 2c 25  31 31 31 30 30 31 31 31  |_Poll",%11100111|
000042c0  30 30 30 30 30 31 31 30  30 31 31 2c 62 6c 6f 63  |00000110011,bloc|
000042d0  6b 20 b8 20 72 65 61 73  6f 6e 0d 1b 44 0f 20 fd  |k . reason..D. .|
000042e0  20 72 65 61 73 6f 6e 3d  36 0d 1b 4e 2a fd 20 28  | reason=6..N*. (|
000042f0  62 6c 6f 63 6b 21 38 3d  31 20 84 20 62 6c 6f 63  |block!8=1 . bloc|
00004300  6b 21 38 3d 34 29 20 80  20 62 6c 6f 63 6b 21 31  |k!8=4) . block!1|
00004310  36 3e 30 0d 1b 58 0d 3d  62 6c 6f 63 6b 21 31 36  |6>0..X.=block!16|
00004320  0d 1b 62 18 dd f2 6d 6f  75 73 65 5f 77 69 6e 64  |..b...mouse_wind|
00004330  6f 77 28 68 61 6e 64 29  0d 1b 6c 0f 21 62 6c 6f  |ow(hand)..l.!blo|
00004340  63 6b 3d 68 61 6e 64 0d  1b 76 24 c8 99 22 57 69  |ck=hand..v$.."Wi|
00004350  6d 70 5f 47 65 74 57 69  6e 64 6f 77 4f 75 74 6c  |mp_GetWindowOutl|
00004360  69 6e 65 22 2c 2c 62 6c  6f 63 6b 0d 1b 80 0c 3f  |ine",,block....?|
00004370  62 6c 6f 63 6b 3d 31 0d  1b 8a 13 62 6c 6f 63 6b  |block=1....block|
00004380  21 31 3d 62 6c 6f 63 6b  21 34 0d 1b 94 13 62 6c  |!1=block!4....bl|
00004390  6f 63 6b 21 33 3d 62 6c  6f 63 6b 21 38 0d 1b 9e  |ock!3=block!8...|
000043a0  14 62 6c 6f 63 6b 21 35  3d 62 6c 6f 63 6b 21 31  |.block!5=block!1|
000043b0  32 0d 1b a8 14 62 6c 6f  63 6b 21 37 3d 62 6c 6f  |2....block!7=blo|
000043c0  63 6b 21 31 36 0d 1b b2  18 c8 99 22 4f 53 5f 57  |ck!16......"OS_W|
000043d0  6f 72 64 22 2c 32 31 2c  62 6c 6f 63 6b 0d 1b bc  |ord",21,block...|
000043e0  05 e1 0d 1b c6 12 dd f2  6d 6f 75 73 65 5f 73 63  |........mouse_sc|
000043f0  72 65 65 6e 0d 1b d0 0c  3f 62 6c 6f 63 6b 3d 31  |reen....?block=1|
00004400  0d 1b da 0d 62 6c 6f 63  6b 21 31 3d 30 0d 1b e4  |....block!1=0...|
00004410  0d 62 6c 6f 63 6b 21 33  3d 30 0d 1b ee 15 62 6c  |.block!3=0....bl|
00004420  6f 63 6b 21 35 3d a4 73  63 72 65 65 6e 5f 78 0d  |ock!5=.screen_x.|
00004430  1b f8 15 62 6c 6f 63 6b  21 37 3d a4 73 63 72 65  |...block!7=.scre|
00004440  65 6e 5f 79 0d 1c 02 18  c8 99 22 4f 53 5f 57 6f  |en_y......"OS_Wo|
00004450  72 64 22 2c 32 31 2c 62  6c 6f 63 6b 0d 1c 0c 05  |rd",21,block....|
00004460  e1 0d 1c 16 0e dd a4 73  63 72 65 65 6e 5f 78 0d  |.......screen_x.|
00004470  1c 20 2a c8 99 22 4f 53  5f 52 65 61 64 4d 6f 64  |. *.."OS_ReadMod|
00004480  65 56 61 72 69 61 62 6c  65 22 2c 2d 31 2c 34 20  |eVariable",-1,4 |
00004490  b8 20 2c 2c 78 65 69 67  25 0d 1c 2a 12 78 65 69  |. ,,xeig%..*.xei|
000044a0  67 25 3d 31 3c 3c 78 65  69 67 25 0d 1c 34 2b c8  |g%=1<<xeig%..4+.|
000044b0  99 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  |."OS_ReadModeVar|
000044c0  69 61 62 6c 65 22 2c 2d  31 2c 31 31 20 b8 20 2c  |iable",-1,11 . ,|
000044d0  2c 78 70 69 78 25 0d 1c  3e 0c 78 70 69 78 25 2b  |,xpix%..>.xpix%+|
000044e0  3d 31 0d 1c 48 10 3d 78  65 69 67 25 2a 78 70 69  |=1..H.=xeig%*xpi|
000044f0  78 25 0d 1c 52 0e dd a4  73 63 72 65 65 6e 5f 79  |x%..R...screen_y|
00004500  0d 1c 5c 2a c8 99 22 4f  53 5f 52 65 61 64 4d 6f  |..\*.."OS_ReadMo|
00004510  64 65 56 61 72 69 61 62  6c 65 22 2c 2d 31 2c 35  |deVariable",-1,5|
00004520  20 b8 20 2c 2c 79 65 69  67 25 0d 1c 66 12 79 65  | . ,,yeig%..f.ye|
00004530  69 67 25 3d 31 3c 3c 79  65 69 67 25 0d 1c 70 2b  |ig%=1<<yeig%..p+|
00004540  c8 99 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |.."OS_ReadModeVa|
00004550  72 69 61 62 6c 65 22 2c  2d 31 2c 31 32 20 b8 20  |riable",-1,12 . |
00004560  2c 2c 79 70 69 78 25 0d  1c 7a 0c 79 70 69 78 25  |,,ypix%..z.ypix%|
00004570  2b 3d 31 0d 1c 84 10 3d  79 65 69 67 25 2a 79 70  |+=1....=yeig%*yp|
00004580  69 78 25 0d 1c 8e 1e dd  a4 76 61 72 5f 63 68 65  |ix%......var_che|
00004590  63 6b 65 78 69 73 74 61  6e 63 65 28 76 61 72 24  |ckexistance(var$|
000045a0  29 0d 1c 98 2d c8 99 22  58 4f 53 5f 52 65 61 64  |)...-.."XOS_Read|
000045b0  56 61 72 56 61 6c 22 2c  76 61 72 24 2c 2c 31 3c  |VarVal",var$,,1<|
000045c0  3c 33 31 20 b8 20 2c 2c  65 78 69 73 74 73 0d 1c  |<31 . ,,exists..|
000045d0  a2 16 e7 20 65 78 69 73  74 73 3d 30 20 3d a3 20  |... exists=0 =. |
000045e0  8b 20 3d b9 0d 1c ac 13  dd a4 76 61 72 5f 67 65  |. =.......var_ge|
000045f0  74 28 76 61 72 24 29 0d  1c b6 11 ea 20 61 24 2c  |t(var$)..... a$,|
00004600  62 79 74 65 73 2c 69 25  0d 1c c0 36 c8 99 22 58  |bytes,i%...6.."X|
00004610  4f 53 5f 52 65 61 64 56  61 72 56 61 6c 22 2c 76  |OS_ReadVarVal",v|
00004620  61 72 24 2c 62 6c 6f 63  6b 2c 32 35 35 2c 30 20  |ar$,block,255,0 |
00004630  b8 20 2c 2c 62 79 74 65  73 3b 76 73 65 74 0d 1c  |. ,,bytes;vset..|
00004640  ca 09 61 24 3d 22 22 0d  1c d4 14 e7 20 28 76 73  |..a$=""..... (vs|
00004650  65 74 20 80 20 31 29 3d  30 20 8c 0d 1c de 21 20  |et . 1)=0 ....! |
00004660  e3 20 69 25 3d 62 6c 6f  63 6b 20 b8 20 62 6c 6f  |. i%=block . blo|
00004670  63 6b 2b 28 62 79 74 65  73 2d 31 29 0d 1c e8 10  |ck+(bytes-1)....|
00004680  20 20 61 24 2b 3d bd 28  3f 69 25 29 0d 1c f2 06  |  a$+=.(?i%)....|
00004690  20 ed 0d 1c fc 05 cd 0d  1d 06 07 3d 61 24 0d ff  | ..........=a$..|
000046a0