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

!AWMay94/Goodies/MenuMake/!Menaker/!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/MenuMake/!Menaker/!RunImage
Read OK:
File size: 68D2 bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
   10REM >!Menaker
   20REM Menu Creation System
   30REM for Archimedes World
   40REM LEN1993 Richard M. Leggett
   50REM 1/6/93 - 10/9/93
   60
   70initialised=FALSE
   80LIBRARY "<Menaker$Dir>.WimpLib"
   90ON ERROR PROCerror_trap
  100
  110PROCinitialise
  120PROCinitialise_library
  130PROCinstall("!Menaker",68,68)
  140PROCinitialise_menus(6)
  150PROCsetup_windows
  160PROCsetup_menus
  170PROCread_errors
  180PROCload_app_stuff
  190PROCread_vdu
  200PROCmain_loop
  210PROCshutdown
  220END
  230
  240DEFPROCerror_trap
  250error$="Whoops! An error has occurred, type "+REPORT$+" "+STR$ERR+"/"+STR$ERL+". It may be best to save, quit and start again. Attempt to continue?"
  260IF NOT initialised THEN PRINT error$
  270IF initialised THEN
  280  CASE ERR OF
  290    WHEN 257:PROCsystem_error(14,1):PROCmain_loop
  300    WHEN 654:PROCsystem_error(0,1)
  310    OTHERWISE:
  320      PROCreport_error(error$,3)
  330      IF user_response=1 PROCmain_loop
  340  ENDCASE
  350ENDIF
  360END
  370
  380DEFPROCinitialise
  390DIM sblock% 256
  400DIM psprites 512,    usprites 80*1024
  410DIM sname 16,        rename 16,       fname 256
  420DIM runimage 40*1024,temps 10*1024,   run 1024
  430DIM icon_menu 512,   menus_menu 512,  items_menu 512
  440DIM menu_menu 512,   item_menu 512,   opt_menu 512
  450DIM action(20,40),   fname$(20,40),   text$(20,40)
  460DIM sprite$(20,40),  ftype(20,40)
  470DIM no_opts(20),     type(20),        mname$(20)
  480DIM error$(20)
  490DIM check$(10)
  500
  510no_opts()=255:type()=1
  520mname$(0)="� Archimedes World 1993"
  530os_menu=0:quit=FALSE:oq=FALSE
  540type=1:current_menu=0:num_mens=1:alter_item=-1
  550modified=FALSE
  560prog_name$="Menaker"
  570version$="2.19 (14-Sep-93)"
  580filename$=""
  590runfiles=TRUE
  600ENDPROC
  610
  620DEFPROCsetup_windows
  630PROCload_templates("<Menaker$Dir>")
  640info_handle=wi_handle%(1)
  650crme_handle=wi_handle%(2)
  660itin_handle=wi_handle%(3)
  670list_handle=wi_handle%(4)
  680typ1_handle=wi_handle%(5)
  690typ2_handle=wi_handle%(6)
  700typ3_handle=wi_handle%(7)
  710save_handle=wi_handle%(8)
  720mesg_handle=wi_handle%(9)
  730copy_handle=wi_handle%(10)
  740PROCset_indirected(info_handle,4,version$)
  750handle=typ1_handle
  760ENDPROC
  770
  780DEFPROCsetup_menus
  790PROCread_menu_data(6)
  800FOR menu=1 TO 6
  810  PROCmake_menu(menu)
  820NEXT
  830PROCtick_item(6,1)
  840no_mmd=wm_nopts(1)-1
  850ENDPROC
  860
  870DEFPROCmain_loop
  880initialised=TRUE
  890mask=%10001100000000000000000000000000
  900REPEAT
  910  SYS "Wimp_Poll",mask,block% TO reason%
  920  CASE reason% OF
  930    WHEN 2:SYS "Wimp_OpenWindow",,block%
  940    WHEN 3:SYS "Wimp_CloseWindow",,block%
  950    WHEN 6:PROCclick_icon
  960    WHEN 7:PROCend_user_drag
  970    WHEN 8:PROCkey_press
  980    WHEN 9:PROCmenu_selection
  990    WHEN 17,18:PROCreceive
 1000  ENDCASE
 1010UNTIL quit
 1020ENDPROC
 1030
 1040DEFPROCreceive
 1050CASE block%!16 OF
 1060  WHEN 0     :PROCshutdown
 1070  WHEN 2     :PROCdatasave
 1080  WHEN 3     :PROCdataload
 1090  WHEN &400C1:PROCread_vdu
 1100ENDCASE
 1110ENDPROC
 1120
 1130DEFPROCkey_press
 1140key=block%!24
 1150window_handle=!block%
 1160icon_handle=block%!4
 1170CASE key OF
 1180  WHEN 13  :PROCreturn
 1190  OTHERWISE:SYS"Wimp_ProcessKey",key
 1200ENDCASE
 1210ENDPROC
 1220
 1230DEFPROCreturn
 1240CASE window_handle OF
 1250  WHEN crme_handle:PROCend_alter_menu
 1260  WHEN itin_handle:PROCend_alter_item
 1270  WHEN save_handle:IF key=13 THEN PROCquicksave
 1280ENDCASE
 1290ENDPROC
 1300
 1310DEFPROCmenu_selection
 1320option$=FNwhat_selection
 1330CASE option$ OF
 1340  WHEN "1.Clear":PROCclear_it
 1350  WHEN "1.Quit":PROCquit_program
 1360  WHEN "1.Copy files":PROCcopy_files
 1370  WHEN "2.New menu":PROCnew_menu
 1380  WHEN "3.Main menu item":PROCmainmenu_item
 1390  WHEN "3.Submenu item":PROCsubmenu_item
 1400ENDCASE
 1410IF os_menu=2 AND RIGHT$(option$,6)="Delete":PROCdelete_menu
 1420IF os_menu=2 AND RIGHT$(option$,4)="type":PROCalter_menu
 1430IF os_menu=3 AND RIGHT$(option$,6)="Delete":PROCdelete_item
 1440IF os_menu=3 AND RIGHT$(option$,4)="info":PROCalter_item
 1450IF os_menu=3 AND RIGHT$(option$,4)="menu":PROCmake_submenu
 1460ENDPROC
 1470
 1480DEFPROCclick_icon
 1490xpos=!block%:ypos=block%!4
 1500button=block%!8:window=block%!12:icon=block%!16
 1510CASE window OF
 1520  WHEN -2         :PROCicon_bar_click
 1530  WHEN list_handle:PROClist_click
 1540  WHEN handle     :PROChandle_click
 1550  WHEN crme_handle:PROCcrme_click
 1560  WHEN itin_handle:PROCitin_click
 1570  WHEN save_handle:PROCsave_file_click
 1580ENDCASE
 1590block%!12=window:block%!16=icon:block%!8=0
 1600ENDPROC
 1610
 1620DEFPROCicon_bar_click
 1630CASE button OF
 1640  WHEN 4:PROCopen_ib_window
 1650  WHEN 2:os_menu=1:PROCshowmenu(icon_menu,!block%-64,140+(no_mmd*44))
 1660ENDCASE
 1670ENDPROC
 1680
 1690DEFPROCend_user_drag
 1700minx=!block%:miny=block%!4
 1710maxx=block%!8:maxy=block%!12
 1720SYS"Wimp_GetPointerInfo",,block%
 1730destination=block%!12
 1740icon=block%!16
 1750CASE current_drag OF
 1760  WHEN 1:PROCstart_save
 1770  WHEN 2:PROCmove_option
 1780ENDCASE
 1790ENDPROC
 1800
 1810DEFPROCstart_save
 1820block%!20=destination:block%!24=block%!16
 1830block%!28=!block%:block%!32=block%!4
 1840block%!36=(12*1024):!block%=64
 1850block%!12=0:block%!16=1:block%!40=&2000
 1860file$=FNget_indirected(save_handle,1)
 1870leaf$=FNgetleaf(file$)
 1880IF LEFT$(leaf$,1)<>"!" THEN leaf$="!"+leaf$
 1890$(block%+44)=leaf$
 1900SYS"Wimp_SendMessage",18,block%,destination,block%!24
 1910ENDPROC
 1920
 1930REM ------------------------------------------------------------------
 1940
 1950DEFPROCcrme_click
 1960CASE icon OF
 1970  WHEN 6:PROCend_alter_menu
 1980  WHEN 8:PROCclose_window(crme_handle)
 1990ENDCASE
 2000ENDPROC
 2010
 2020DEFPROCsave_file_click
 2030CASE icon OF
 2040  WHEN 0:IF button AND 64 PROCdragbox
 2050  WHEN 2:IF button AND 5 PROCquicksave
 2060ENDCASE
 2070ENDPROC
 2080
 2090DEFPROCitin_click
 2100CASE icon OF
 2110  WHEN 9:PROCclose_window(itin_handle)
 2120  WHEN 10:PROCend_alter_item
 2130ENDCASE
 2140ENDPROC
 2150
 2160DEFPROClist_click
 2170CASE button OF
 2180  WHEN 4:IF mname$(icon)<>"" THEN PROCselect_current_menu
 2190  WHEN 2:PROClist_menu
 2200ENDCASE
 2210ENDPROC
 2220
 2230DEFPROChandle_click
 2240ds=FALSE
 2250CASE button OF
 2260  WHEN 4:PROCclicked_on_icon:ds=TRUE
 2270  WHEN 2:PROChandle_menu:ds=TRUE
 2280ENDCASE
 2290IF ds ENDPROC
 2300IF icon>=18 AND icon<=35 AND (button AND 64) PROCdrag_option
 2310ENDPROC
 2320
 2330DEFPROCquit_program
 2340IF modified THEN
 2350  PROCsystem_error(1,3)
 2360  IF user_response<>1 ENDPROC
 2370ENDIF
 2380PROCshutdown
 2390ENDPROC
 2400
 2410DEFPROCdatasave
 2420PROCset_indirected(save_handle,1,FNstring(block%+44))
 2430PROCsave_it
 2440block%!12=block%!8:block%!16=3:!block%=256
 2450SYS"Wimp_SendMessage",18,block%,block%!20,block%!24
 2460ENDPROC
 2470
 2480DEFPROCdataload
 2490filetype=block%!40:file$=FNzero_string(block%+44)
 2500window=block%!20:icon=block%!24
 2510CASE window OF
 2520  WHEN -2:PROCicon_bar_drag
 2530  WHEN handle:PROCadd_menu_drag
 2540  WHEN copy_handle:PROCcopy_file
 2550ENDCASE
 2560ENDPROC
 2570
 2580DEFPROCicon_bar_drag
 2590IF filetype<>&2000 PROCerror(2,1):ENDPROC
 2600PROCload_file
 2610ENDPROC
 2620
 2630DEFPROCadd_menu_drag
 2640PROCclose_window(itin_handle)
 2650modified=TRUE
 2660newpos=no_opts(current_menu)+1
 2670IF newpos=256 newpos=0
 2680IF newpos>17 THEN
 2690  PROCerror(3,1)
 2700  ENDPROC
 2710ENDIF
 2720no_opts(current_menu)=newpos:fname$(current_menu,newpos)=file$
 2730text$(current_menu,newpos)=FNfile(file$):ftype(current_menu,newpos)=filetype
 2740act=1
 2750CASE filetype OF
 2760  WHEN &1000:sprite$(current_menu,newpos)="directory":act=2
 2770  WHEN &2000:sprite$(current_menu,newpos)=text$(current_menu,newpos):act=3
 2780  OTHERWISE: sprite$(current_menu,newpos)="file_"+STR$~filetype:act=3
 2790ENDCASE
 2800action(current_menu,newpos)=act
 2810PROCredo_all_icons
 2820ENDPROC
 2830
 2840DEFFNfile(fn$)
 2850in=LEN(fn$)+1
 2860REPEAT
 2870  in-=1
 2880UNTIL MID$(fn$,in,1)="."
 2890=RIGHT$(fn$,LEN(fn$)-in)
 2900
 2910DEFPROCredo_all_icons
 2920plus=18:to=17:title=36
 2930FOR icn=0 TO to
 2940  PROCset_indirected(handle,icn,text$(current_menu,icn))
 2950  PROCset_indirected(handle,icn+plus,sprite$(current_menu,icn))
 2960  PROCunset_bit(handle,icn+plus,21)
 2970NEXT
 2980PROCset_indirected(handle,title,mname$(current_menu))
 2990PROCsize_window
 3000SYS"Wimp_ForceRedraw",handle,0,-1800,1200,0
 3010ENDPROC
 3020
 3030DEFPROCsize_window
 3040n=no_opts(current_menu)
 3050IF n=255 n=-1
 3060CASE handle OF
 3070  WHEN typ1_handle:PROCtype1_size
 3080  WHEN typ2_handle:PROCtype2_size
 3090  WHEN typ3_handle:PROCtype3_size
 3100ENDCASE
 3110ENDPROC
 3120
 3130DEFPROCtype1_size
 3140n+=1:x=640:y=160+(n*88)
 3150!block%=0:block%!4=-y:block%!8=x:block%!12=0
 3160SYS"Wimp_SetExtent",handle,block%
 3170IF n>10 THEN y=160+(10*88)
 3180!block%=handle
 3190SYS"Wimp_GetWindowState",,block%
 3200block%!12=block%!4+x:block%!16=block%!8+y
 3210SYS"Wimp_OpenWindow",,block%
 3220ENDPROC
 3230
 3240DEFPROCtype2_size
 3250y=(n DIV 2)+1
 3260IF n>(y*2) THEN y+=1
 3270x=1080:y=132+(y*88)
 3280!block%=handle
 3290SYS"Wimp_GetWindowState",,block%
 3300block%!12=block%!4+x:block%!16=block%!8+y
 3310SYS"Wimp_OpenWindow",,block%
 3320ENDPROC
 3330
 3340DEFPROCtype3_size
 3350y=(n DIV 3)+1
 3360IF n>(y*3) THEN y+=1
 3370x=872:y=120+(y*132)
 3380!block%=handle
 3390SYS"Wimp_GetWindowState",,block%
 3400block%!12=block%!4+x:block%!16=block%!8+y
 3410SYS"Wimp_OpenWindow",,block%
 3420ENDPROC
 3430
 3440DEFPROClist_menu
 3450os_menu=2
 3460IF icon>=0 AND icon<=20 THEN wm_data$(2,2)="Menu '"+mname$(icon)+"'"
 3470PROCmake_menu(2)
 3480IF RIGHT$(wm_data$(2,2),2)="''" THEN PROCgrey_item(2,2)
 3490PROCshowmenu(menus_menu,!block%-64,block%!4)
 3500ENDPROC
 3510
 3520DEFPROChandle_menu
 3530item=FNicon_to_item(icon)
 3540os_menu=3
 3550it$="Item '"
 3560IF item>=0 AND item<=40 THEN
 3570  it$=it$+text$(current_menu,item)+"'"
 3580ELSE
 3590  it$+="'"
 3600ENDIF
 3610wm_data$(3,1)=it$
 3620PROCmake_menu(3)
 3630IF RIGHT$(it$,2)="''" THEN PROCgrey_item(3,1)
 3640PROCshowmenu(items_menu,!block%-64,block%!4)
 3650ENDPROC
 3660
 3670DEFPROCopen_ib_window
 3680PROCopen_window(list_handle)
 3690PROCredraw_list
 3700PROCredo_all_icons
 3710ENDPROC
 3720
 3730DEFPROCdelete_menu
 3740IF icon=0 THEN PROCerror(4,1):ENDPROC
 3750error$="Are you sure you want to delete the menu '"+mname$(icon)+"'?"
 3760PROCreport_error(error$,3)
 3770IF user_response=2 ENDPROC
 3780modified=TRUE
 3790IF icon=current_menu THEN
 3800  current_menu=0
 3810  PROCclose_window(handle)
 3820ENDIF
 3830FOR loop=icon TO 18
 3840  no_opts(loop)=no_opts(loop+1)
 3850  type(loop)=type(loop+1)
 3860  mname$(loop)=mname$(loop+1)
 3870  FOR subloop=0 TO 40
 3880    action(loop,subloop)=action(loop+1,subloop)
 3890    fname$(loop,subloop)=fname$(loop+1,subloop)
 3900    text$(loop,subloop)=text$(loop+1,subloop)
 3910    sprite$(loop,subloop)=sprite$(loop+1,subloop)
 3920    ftype(loop,subloop)=ftype(loop+1,subloop)
 3930  NEXT
 3940NEXT
 3950mname$(19)=""
 3960num_mens-=1
 3970PROCredraw_list
 3980ENDPROC
 3990
 4000DEFPROCdelete_item
 4010PROCclose_window(itin_handle)
 4020item=FNicon_to_item(icon)
 4030modified=TRUE
 4040FOR loop=item TO 17
 4050  action(current_menu,loop)=action(current_menu,loop+1)
 4060  fname$(current_menu,loop)=fname$(current_menu,loop+1)
 4070  text$(current_menu,loop)=text$(current_menu,loop+1)
 4080  sprite$(current_menu,loop)=sprite$(current_menu,loop+1)
 4090  ftype(current_menu,loop)=ftype(current_menu,loop+1)
 4100NEXT
 4110no_opts(current_menu)-=1
 4120PROCredo_all_icons
 4130ENDPROC
 4140
 4150DEFPROCnew_menu
 4160IF num_mens=20 THEN
 4170  PROCerror(5,1)
 4180  ENDPROC
 4190ENDIF
 4200inm=TRUE
 4210alter_menu=num_mens
 4220PROCcentre_window(crme_handle,508,480)
 4230PROCset_indirected(crme_handle,7,"New menu")
 4240PROCset_bit(crme_handle,2,21)
 4250PROCunset_bit(crme_handle,3,21):PROCunset_bit(crme_handle,4,21)
 4260PROCcaret(crme_handle,7)
 4270ENDPROC
 4280
 4290DEFPROCalter_menu
 4300IF icon<0 OR icon>19 THEN PROCerror(6,1)
 4310inm=FALSE
 4320alter_menu=icon
 4330PROCcentre_window(crme_handle,508,480)
 4340PROCset_indirected(crme_handle,7,mname$(alter_menu))
 4350PROCunset_bit(crme_handle,2,21):PROCunset_bit(crme_handle,3,21)
 4360PROCunset_bit(crme_handle,4,21)
 4370ty=type(alter_menu)
 4380IF ty<1 OR ty>3 THEN PROCerror(7,1)
 4390PROCset_bit(crme_handle,1+ty,21)
 4400PROCcaret(crme_handle,7)
 4410ENDPROC
 4420
 4430DEFPROCend_alter_menu
 4440PROCclose_window(crme_handle)
 4450menname$=FNget_indirected(crme_handle,7)
 4460IF inm AND FNmenu_exist(menname$) PROCerror(15,1):ENDPROC
 4470IF inm THEN num_mens+=1
 4480IF mname$(alter_menu)<>"" PROCmenu_exists
 4490mname$(alter_menu)=menname$
 4500PROCset_indirected(list_handle,alter_menu,mname$(alter_menu))
 4510ty=1
 4520IF FNget_state(crme_handle,2) THEN ty=1
 4530IF FNget_state(crme_handle,3) THEN ty=2
 4540IF FNget_state(crme_handle,4) THEN ty=3
 4550type(alter_menu)=ty
 4560IF current_menu=alter_menu THEN
 4570  PROCclose_window(handle)
 4580  CASE type(current_menu) OF
 4590     WHEN 1:handle=typ1_handle
 4600     WHEN 2:handle=typ2_handle
 4610     WHEN 3:handle=typ3_handle
 4620  ENDCASE
 4630  PROCopen_window(handle)
 4640  PROCredo_all_icons
 4650ENDIF
 4660PROCredraw_list
 4670modified=TRUE
 4680ENDPROC
 4690
 4700DEFPROCmenu_exists
 4710FOR menu=0 TO num_mens-1
 4720  IF no_opts(menu)<>255 PROCmenu_ex
 4730NEXT
 4740ENDPROC
 4750
 4760DEFPROCmenu_ex
 4770FOR item=0 TO no_opts(menu)
 4780  IF action(menu,item)=1 AND fname$(menu,item)=mname$(alter_menu) THEN
 4790    fname$(menu,item)=menname$
 4800  ENDIF
 4810NEXT
 4820ENDPROC
 4830
 4840DEFPROCselect_current_menu
 4850current_menu=icon
 4860SYS"Wimp_ForceRedraw",list_handle,0,-820,220,0
 4870PROCclose_window(handle)
 4880handle=wi_handle%(type(current_menu)+4)
 4890data=wi_data%(type(current_menu)+4)
 4900PROCopen_window(handle)
 4910PROCredo_all_icons
 4920PROCredraw_list
 4930PROCclose_window(itin_handle)
 4940ENDPROC
 4950
 4960DEFPROCredraw_list
 4970FOR icon=0 TO 19
 4980  PROCset_indirected(list_handle,icon,"  "+FNm(icon))
 4990  IF icon=current_menu THEN PROCset_indirected(list_handle,icon,"* "+FNm(icon))
 5000NEXT
 5010PROClist_size
 5020SYS"Wimp_ForceRedraw",list_handle,0,-1000,220,0
 5030ENDPROC
 5040
 5050DEFPROClist_size
 5060x=220:y=24+(num_mens*40)
 5070IF y<=144 THEN y=144
 5080!block%=0:block%!4=-y:block%!8=x:block%!12=0
 5090SYS"Wimp_SetExtent",list_handle,block%
 5100IF num_mens>10 THEN y=424
 5110!block%=list_handle
 5120SYS"Wimp_GetWindowState",,block%
 5130block%!12=block%!4+x:block%!16=block%!8+y
 5140SYS"Wimp_OpenWindow",,block%
 5150ENDPROC
 5160
 5170DEFPROCalter_item
 5180PROCcentre_window(itin_handle,528,680)
 5190item=FNicon_to_item(icon)
 5200alter_item=item
 5210PROCset_indirected(itin_handle,8,fname$(current_menu,item))
 5220PROCset_indirected(itin_handle,5,text$(current_menu,item))
 5230PROCset_indirected(itin_handle,2,sprite$(current_menu,item))
 5240PROCset_indirected(itin_handle,1,sprite$(current_menu,item))
 5250act=action(current_menu,item):act$="????"
 5260CASE act OF
 5270  WHEN 1:act$="Open menu:"
 5280  WHEN 2:act$="Open dir:"
 5290  WHEN 3:act$="Run file:"
 5300ENDCASE
 5310PROCset_indirected(itin_handle,13,act$)
 5320PROCcaret(itin_handle,2)
 5330ENDPROC
 5340
 5350DEFPROCend_alter_item
 5360IF alter_item=-1 PROCminus_one
 5370IF alter_item>=100 THEN
 5380  alter_item-=100
 5390  PROCcreate_alter_submenu
 5400ENDIF
 5410fname$(current_menu,alter_item)=FNget_indirected(itin_handle,8)
 5420text$(current_menu,alter_item)=FNget_indirected(itin_handle,5)
 5430sprite$(current_menu,alter_item)=FNget_indirected(itin_handle,2)
 5440PROCclose_window(itin_handle)
 5450PROCredo_all_icons
 5460modified=TRUE
 5470ENDPROC
 5480
 5490DEFPROCminus_one
 5500IF num_mens=20 THEN
 5510  PROCerror(5,1)
 5520  ENDPROC
 5530ENDIF
 5540newpos=no_opts(current_menu)+1
 5550IF newpos=256 newpos=0
 5560IF newpos>17 THEN
 5570  PROCerror(3,1)
 5580  ENDPROC
 5590ENDIF
 5600no_opts(current_menu)=newpos
 5610alter_item=newpos
 5620action(current_menu,newpos)=1
 5630n$=FNget_indirected(itin_handle,8)
 5640IF FNmenu_exist(n$) THEN PROCerror(15,1):ENDPROC
 5650num_mens+=1
 5660n=num_mens-1
 5670mname$(n)=n$
 5680type(n)=1
 5690no_opts(n)=255
 5700PROCredraw_list
 5710ENDPROC
 5720
 5730DEFPROCcreate_alter_submenu
 5740IF num_mens=20 THEN
 5750  PROCerror(5,1)
 5760  ENDPROC
 5770ENDIF
 5780num_mens+=1
 5790n=num_mens-1
 5800mname$(n)=FNrz(FNgetleaf(fname$(current_menu,alter_item)))
 5810type(n)=1
 5820action(current_menu,alter_item)=1
 5830CASE ftype(current_menu,alter_item) OF
 5840  WHEN &1000:PROCsubmenu_dir
 5850  OTHERWISE:PROCsubmenu_file
 5860ENDCASE
 5870modified=TRUE
 5880PROCredo_all_icons
 5890PROCredraw_list
 5900ENDPROC
 5910
 5920DEFPROCsubmenu_file
 5930no_opts(n)=2
 5940fname$(n,0)=fname$(current_menu,alter_item):text$(n,0)="!Run"
 5950ftype(n,0)=ftype(current_menu,alter_item)
 5960sprite$(n,0)=sprite$(current_menu,alter_item):action(n,0)=3
 5970f$=fname$(current_menu,alter_item)
 5980leaf$=FNgetleaf(f$)
 5990dir$=LEFT$(f$,LEN(f$)-LEN(leaf$))
 6000fname$(n,1)=dir$:text$(n,1)="Open Directory"
 6010ftype(n,1)=&1000:sprite$(n,1)="directory":action(n,1)=2
 6020fname$(n,2)="Main Menu":text$(n,2)="Main Menu"
 6030ftype(n,2)=0:sprite$(n,2)="menu":action(n,2)=1
 6040ENDPROC
 6050
 6060DEFPROCsubmenu_dir
 6070no_opts(n)=1
 6080fname$(n,0)=fname$(current_menu,alter_item):text$(n,0)="Open Directory"
 6090ftype(n,0)=ftype(current_menu,alter_item)
 6100sprite$(n,0)=sprite$(current_menu,alter_item):action(n,0)=2
 6110fname$(n,1)="Main Menu":text$(n,1)="Main Menu"
 6120ftype(n,1)=0:sprite$(n,1)="menu":action(n,1)=1
 6130ENDPROC
 6140
 6150DEFPROCquicksave
 6160file$=FNget_indirected(save_handle,1)
 6170leaf$=FNgetleaf(file$)
 6180IF LEFT$(leaf$,1)<>"!" THEN leaf$="!"+leaf$
 6190IF INSTR(file$,".") THEN
 6200  PROCsave_it
 6210ELSE
 6220  PROCerror(9,1)
 6230ENDIF
 6240ENDPROC
 6250
 6260DEFPROCsave_it
 6270oldname$=filename$
 6280make=FNget_state(save_handle,3)
 6290filename$=FNget_indirected(save_handle,1)
 6300l$=FNgetleaf(filename$):r$=LEFT$(filename$,LEN(filename$)-LEN(l$))
 6310IF LEFT$(l$,1)<>"!" filename$=r$+"!"+l$
 6320OSCLI"CDir "+filename$
 6330OSCLI"CDir "+filename$+".Programs"
 6340$sname="!menu"
 6350$rename=leaf$
 6360SYS"OS_SpriteOp",256+26,psprites,sname,rename
 6370$fname=filename$+".!Sprites"
 6380SYS"OS_SpriteOp",256+12,psprites,fname
 6390SYS"OS_SpriteOp",256+26,psprites,rename,sname
 6400IF make THEN
 6410  PROCappend_the_sprites
 6420  $fname=filename$+".Sprites"
 6430  SYS"OS_SpriteOp",256+12,usprites,fname
 6440  PROCdelete_sprites
 6450ENDIF
 6460PROCsave_prog_file(filename$+".!RunImage","Basic",runimage,ri_length)
 6470PROCsave_prog_file(filename$+".!Run","Obey",run,ru_length)
 6480PROCsave_prog_file(filename$+".Templates","fec",temps,te_length)
 6490PROCsave_load_data(TRUE)
 6500PROCclose_window(save_handle)
 6510modified=FALSE
 6520SYS"Wimp_CreateMenu",,-1
 6530IF oldname$<>"" AND oldname$<>"<Obey$Dir>" AND oldname$<>filename$ PROCconfirm_copy
 6540ENDPROC
 6550
 6560DEFPROCconfirm_copy
 6570error$(18)=" Do you wish to copy the programs from "+oldname$+" to the new save? (Cancel aborts)"
 6580PROCerror(18,3)
 6590IF user_response=2 ENDPROC
 6600*Set OldCopy$Options <Copy$Options>
 6610*Set Copy$Options A ~C ~D ~F ~L ~N ~P ~Q R ~S ~T ~V
 6620A$="Copy "+oldname$+".Programs "+filename$+".Programs"
 6630OSCLI A$
 6640*Set Copy$Options <OldCopy$Options>
 6650ENDPROC
 6660
 6670DEFPROCsave_load_data(s)
 6680F$=filename$+".MenuData"
 6690IF s X=OPENOUT F$           ELSE X=OPENIN F$
 6700IF X=0 PROCsl_error:ENDPROC
 6710r=82:m=77:l=76
 6720IF s BPUT#X,82              ELSE r=BGET#X
 6730IF s BPUT#X,77              ELSE m=BGET#X
 6740IF s BPUT#X,76              ELSE l=BGET#X
 6750IF NOT s AND ((r+m+l)<>235) THEN PROCsl_error:ENDPROC
 6760IF s BPUT#X,num_mens        ELSE num_mens=BGET#X
 6770IF s PRINT#X,make           ELSE INPUT#X,make
 6780FOR menu=0 TO num_mens-1
 6790  IF s PRINT#X,mname$(menu) ELSE INPUT#X,mname$(menu)
 6800  IF s BPUT#X,type(menu)    ELSE type(menu)=BGET#X
 6810  IF s BPUT#X,no_opts(menu) ELSE no_opts(menu)=BGET#X
 6820  IF no_opts(menu)<>255 THEN PROCsl_each
 6830NEXT
 6840CLOSE#X
 6850IF s OSCLI"SetType "+F$+" Data"
 6860IF NOT s OSCLI"Iconsprites "+filename$+".Sprites"
 6870modified=FALSE
 6880ENDPROC
 6890
 6900DEFPROCsl_each
 6910FOR item=0 TO no_opts(menu)
 6920  IF s BPUT#X,action(menu,item)   ELSE action(menu,item)=BGET#X
 6930  IF s PRINT#X,fname$(menu,item)  ELSE INPUT#X,fname$(menu,item)
 6940  IF s PRINT#X,text$(menu,item)   ELSE INPUT#X,text$(menu,item)
 6950  IF s PRINT#X,sprite$(menu,item) ELSE INPUT#X,sprite$(menu,item)
 6960  IF s PRINT#X,ftype(menu,item)   ELSE INPUT#X,ftype(menu,item)
 6970NEXT
 6980ENDPROC
 6990
 7000DEFPROCsl_error
 7010CLOSE#0
 7020PROCerror(10,1)
 7030ENDPROC
 7040
 7050DEFPROCload_app_stuff
 7060PROCcreate_sprite_area("<Menaker$Dir>.Menu.Sprites",usprites,80*1024)
 7070PROCcreate_sprite_area("<Menaker$Dir>.Menu.!Sprites",psprites,512)
 7080ri_length=FNload_prog_file("<Menaker$Dir>.Menu.!RunImage",runimage)
 7090ru_length=FNload_prog_file("<Menaker$Dir>.Menu.!Run",run)
 7100te_length=FNload_prog_file("<Menaker$Dir>.Menu.Templates",temps)
 7110ENDPROC
 7120
 7130DEFFNload_prog_file(n$,m)
 7140$fname=n$
 7150SYS"OS_File",17,fname TO ,,,,l
 7160OSCLI"Load "+n$+" "+STR$~m
 7170=l
 7180
 7190DEFPROCsave_prog_file(n$,t$,m,l)
 7200OSCLI"Save "+n$+" "+STR$~m+" +"+STR$~l
 7210OSCLI"Settype "+n$+" "+t$
 7220ENDPROC
 7230
 7240DEFPROCcreate_sprite_area(n$,m,size)
 7250!m=size:m!4=0:m!8=16:m!12=16
 7260SYS"OS_SpriteOp",256+9,m
 7270$fname=n$
 7280SYS"OS_SpriteOp",256+10,m,fname
 7290ENDPROC
 7300
 7310DEFFNicon_to_item(icn)
 7320it=icn
 7330IF it>17 THEN it-=18
 7340=it
 7350
 7360DEFPROCload_file
 7370IF modified THEN
 7380  PROCerror(11,3)
 7390  IF user_response=2 ENDPROC
 7400ENDIF
 7410PROCclear_data
 7420filename$=file$
 7430PROCsave_load_data(FALSE)
 7440PROCclose_window(handle)
 7450CASE type(current_menu) OF
 7460   WHEN 1:handle=typ1_handle
 7470   WHEN 2:handle=typ2_handle
 7480   WHEN 3:handle=typ3_handle
 7490ENDCASE
 7500PROCopen_window(handle)
 7510PROCredo_all_icons
 7520PROCredraw_list
 7530PROCset_indirected(save_handle,1,file$)
 7540modified=FALSE
 7550OSCLI"Set MenakerServer$Dir "+filename$
 7560ENDPROC
 7570
 7580DEFPROCclear_it
 7590user_response=1
 7600IF modified THEN PROCerror(12,3)
 7610IF user_response=1 THEN
 7620  PROCclear_data
 7630  PROCredo_all_icons
 7640  PROCredraw_list
 7650ENDIF
 7660ENDPROC
 7670
 7680DEFPROCclear_data
 7690no_opts()=255:type()=1
 7700mname$()="":mname$(0)="Main Menu":action()=0:fname$()=""
 7710text$()="":sprite$()="":ftype()=0
 7720type=1:current_menu=0:num_mens=1:alter_item=-1:modified=FALSE
 7730filename$=""
 7740PROCclose_window(copy_handle)
 7750PROCset_indirected(save_handle,1,"!MenuFile")
 7760ENDPROC
 7770
 7780DEFPROCappend_the_sprites
 7790SYS"OS_SpriteOp",256+8,usprites TO ,,,num
 7800check$()="":cc=0
 7810FOR menu=0 TO num_mens-1
 7820  IF no_opts(menu)<>255 PROCa_b
 7830NEXT
 7840ENDPROC
 7850
 7860DEFPROCa_b
 7870FOR option=0 TO no_opts(menu)
 7880  fi$=fname$(menu,option)
 7890  IF action(menu,option)<>1 AND ftype(menu,option)=&2000 AND FNnot_there THEN
 7900    PROCappend_sprites(fname$(menu,option))
 7910    IF LEN(check$(cc))>=240 THEN cc+=1
 7920    check$(cc)+=fi$
 7930  ENDIF
 7940NEXT
 7950ENDPROC
 7960
 7970DEFFNnot_there
 7980found=FALSE
 7990fi$=FNgetleaf(fi$)
 8000FOR c=0 TO cc
 8010  IF INSTR(check$(c),fi$) THEN found=TRUE:c=cc
 8020NEXT
 8030=NOT found
 8040
 8050DEFPROCdelete_sprites
 8060SYS"OS_SpriteOp",256+8,usprites TO ,,,num
 8070IF num=1 ENDPROC
 8080FOR n=1 TO num-1
 8090  SYS"OS_SpriteOp",256+13,usprites,sname,256,2 TO ,,,length
 8100  SYS"OS_SpriteOp",256+25,usprites,sname
 8110NEXT
 8120ENDPROC
 8130
 8140DEFPROCappend_sprites(f$)
 8150leaf$=FNalpha(FNgetleaf(f$))
 8160leaf$=LEFT$(leaf$,LEN(leaf$)-1)
 8170fn$=f$+".!Sprites"
 8180$fname=fn$
 8190X=OPENIN fn$
 8200CLOSE#X
 8210IF X=0 THEN
 8220  PROCreport_error("Can't find sprite file for "+f$+", but will continue...",1)
 8230  ENDPROC
 8240ENDIF
 8250SYS"OS_SpriteOp",256+11,usprites,fname
 8260old_num=num+1
 8270REPEAT
 8280  SYS"OS_SpriteOp",256+8,usprites TO ,,,num
 8290  d=FALSE
 8300  FOR s=old_num TO num
 8310    SYS"OS_SpriteOp",256+13,usprites,sname,256,s TO ,,,length
 8320    sprite$=FNalpha(FNget_name(sname))
 8330    IF sprite$<>leaf$ THEN
 8340      $sname=sprite$
 8350      SYS"OS_SpriteOp",256+25,usprites,sname
 8360      s=num
 8370      d=TRUE
 8380    ENDIF
 8390  NEXT
 8400UNTIL d=FALSE
 8410SYS"OS_SpriteOp",256+8,usprites TO ,,,num
 8420ENDPROC
 8430
 8440DEFFNm(n)
 8450=LEFT$(mname$(icon),10)
 8460
 8470DEFPROCread_errors
 8480error$(0)="Sorry, but there's a problem : Please find !Fonts and try loading again."
 8490error$(1)="There is unsaved data. Are you sure you want to quit? (Cancel aborts)"
 8500error$(2)="The file you dragged is not a recognised menu."
 8510error$(3)="Sorry, but this version of the program will not support more items."
 8520error$(4)="Sorry, but you can't delete the main menu - I'd only get confused if you did."
 8530error$(5)="Sorry, but you can't have any more menus in this version of the program."
 8540error$(6)="How did you manage that? You can't alter a non-existant menu!"
 8550error$(7)="How did you manage that? You've selected an invalid type!"
 8560error$(8)=""
 8570error$(9)="To save, drag the icon to a directory viewer."
 8580error$(10)="Sorry, there's a problem - the menu data is either not present, or corrupt"
 8590error$(11)="Loading the file will overwrite existing data. Are you sure you want to? (Cancel aborts)"
 8600error$(12)="Are you sure - All data will be lost? (Cancel aborts)"
 8610error$(13)="Fatal error - must exit."
 8620error$(14)="To load the sprites for this file, you must increase Module area."
 8630error$(15)="A menu of that name already exists."
 8640error$(16)="Before copying files, you must have saved the menu."
 8650ENDPROC
 8660
 8670DEFPROCsystem_error(n,c)
 8680PROCreport_error(error$(n),c)
 8690ENDPROC
 8700
 8710DEFPROCerror(n,c)
 8720PROCset_bit(mesg_handle,1,23)
 8730IF c=3 THEN PROCunset_bit(mesg_handle,1,23)
 8740PROCset_indirected(mesg_handle,0,error$(n))
 8750x=728:y=276
 8760PROCcentre_window(mesg_handle,728,276)
 8770MOUSE RECTANGLE block%!4,block%!8,x,y
 8780VDU7
 8790REPEAT
 8800  SYS "Wimp_Poll",mask,block% TO reason%
 8810  CASE reason% OF
 8820    WHEN 6:PROCclick_icon
 8830    WHEN 17,18:PROCreceive
 8840  ENDCASE
 8850UNTIL reason%=6
 8860icon=block%!16
 8870IF icon=1 user_response=2 ELSE user_response=1
 8880MOUSE RECTANGLE 0,0,xr,yr
 8890PROCclose_window(mesg_handle)
 8900ENDPROC
 8910
 8920DEFPROCmainmenu_item
 8930modified=TRUE
 8940newpos=no_opts(current_menu)+1
 8950IF newpos=256 newpos=0
 8960IF newpos>17 THEN
 8970  PROCerror(3,1)
 8980  ENDPROC
 8990ENDIF
 9000no_opts(current_menu)=newpos
 9010fname$(current_menu,newpos)="Main Menu"
 9020text$(current_menu,newpos)="Main Menu"
 9030ftype(current_menu,newpos)=0
 9040sprite$(current_menu,newpos)="menu"
 9050action(current_menu,newpos)=1
 9060PROCredo_all_icons
 9070ENDPROC
 9080
 9090DEFPROCdragbox
 9100PROCstart_drag(save_handle,0)
 9110current_drag=1
 9120ENDPROC
 9130
 9140DEFPROCdrag_option
 9150modified=TRUE
 9160current_drag=2
 9170f_dragged=FNicon_to_item(icon)
 9180IF f_dragged>no_opts(current_menu) ENDPROC
 9190PROCstart_drag(handle,icon)
 9200ENDPROC
 9210
 9220DEFPROCmove_option
 9230IF destination<>handle ENDPROC
 9240IF icon<0 OR icon>35 ENDPROC
 9250s_dragged=FNicon_to_item(icon)
 9260IF f_dragged=s_dragged ENDPROC
 9270IF s_dragged>no_opts(current_menu) ENDPROC
 9280a=action(current_menu,f_dragged)
 9290f$=fname$(current_menu,f_dragged)
 9300t$=text$(current_menu,f_dragged)
 9310s$=sprite$(current_menu,f_dragged)
 9320f=ftype(current_menu,f_dragged)
 9330IF f_dragged<s_dragged THEN f=f_dragged+1:t=s_dragged:p=-1:s=1
 9340IF f_dragged>s_dragged THEN f=f_dragged-1:t=s_dragged:p=1:s=-1
 9350FOR d=f TO t STEP s
 9360  action(current_menu,d+p) =action(current_menu,d)
 9370  fname$(current_menu,d+p) =fname$(current_menu,d)
 9380  text$(current_menu,d+p)  =text$(current_menu,d)
 9390  sprite$(current_menu,d+p)=sprite$(current_menu,d)
 9400  ftype(current_menu,d+p)  =ftype(current_menu,d)
 9410NEXT
 9420action(current_menu,s_dragged)=a
 9430fname$(current_menu,s_dragged)=f$
 9440text$(current_menu,s_dragged)=t$
 9450sprite$(current_menu,s_dragged)=s$
 9460ftype(current_menu,s_dragged)=f
 9470PROCredo_all_icons
 9480ENDPROC
 9490
 9500DEFPROCmake_submenu
 9510item=FNicon_to_item(icon)
 9520IF FNmenu_exist(text$(current_menu,item)) THEN PROCerror(15,1):ENDPROC
 9530alter_item=item+100
 9540PROCset_indirected(itin_handle,8,text$(current_menu,item))
 9550PROCset_indirected(itin_handle,5,text$(current_menu,item))
 9560PROCset_indirected(itin_handle,2,sprite$(current_menu,item))
 9570PROCset_indirected(itin_handle,1,sprite$(current_menu,item))
 9580PROCset_indirected(itin_handle,13,"Open menu:")
 9590PROCcentre_window(itin_handle,528,680)
 9600PROCcaret(itin_handle,2)
 9610ENDPROC
 9620
 9630DEFPROCsubmenu_item
 9640alter_item=-1
 9650PROCset_indirected(itin_handle,8,"Submenu")
 9660PROCset_indirected(itin_handle,5,"Submenu")
 9670PROCset_indirected(itin_handle,2,"menu")
 9680PROCset_indirected(itin_handle,1,"menu")
 9690PROCset_indirected(itin_handle,13,"Open menu:")
 9700PROCcentre_window(itin_handle,528,680)
 9710PROCcaret(itin_handle,2)
 9720ENDPROC
 9730
 9740DEFFNmenu_exist(A$)
 9750m=255:e=FALSE
 9760FOR n=0 TO 20
 9770  IF mname$(n)=A$ THEN m=n:e=TRUE
 9780NEXT
 9790=e
 9800
 9810DEFPROCcopy_files
 9820IF filename$="" PROCerror(16,1):ENDPROC
 9830PROCcentre_window(copy_handle,620,156)
 9840OSCLI"Set MenakerServer$Dir "+filename$
 9850ENDPROC
 9860
 9870DEFPROCcopy_file
 9880l=LEN(file$)
 9890l$=FNgetleaf(file$)
 9900FOR menu=0 TO num_mens-1
 9910  FOR item=0 TO no_opts(menu)
 9920    fn$=fname$(menu,item)
 9930    IF LEFT$(fn$,l)=file$ THEN PROCcopy_gotone
 9940  NEXT
 9950NEXT
 9960PROCsave_load_data(TRUE)
 9970*Set OldCopy$Options <Copy$Options>
 9980*Set Copy$Options A ~C ~D ~F ~L ~N ~P ~Q R ~S ~T ~V
 9990A$="Copy "+file$+" "+filename$+".Programs."+l$
10000OSCLI A$
10010*Set Copy$Options <OldCopy$Options>
10020ENDPROC
10030
10040DEFPROCcopy_gotone
10050n$=RIGHT$(fn$,LEN(fn$)-l+LEN(l$)-1)
10060fname$(menu,item)="<MenakerServer$Dir>.Programs."+n$
10070ENDPROC
10080
10090DEFPROCclicked_on_icon
10100IF filename$="" filename$="<Obey$Dir>"
10110OSCLI"Set MenakerServer$Dir "+filename$
10120SYS"OS_Byte",21
10130item=FNicon_to_item(icon)
10140IF action(current_menu,item)=1 THEN PROCnew_menu_found:ENDPROC
10150IF action(current_menu,item)=2 THEN PROCopen_dir_found
10160IF action(current_menu,item)=3 THEN PROCrun_file_found
10170ENDPROC
10180
10190DEFPROCrun_file_found
10200IF NOT runfiles ENDPROC
10210OSCLI"Filer_Run "+fname$(current_menu,item)
10220ENDPROC
10230
10240DEFPROCopen_dir_found
10250IF NOT runfiles ENDPROC
10260OSCLI"Filer_OpenDir "+fname$(current_menu,item)
10270ENDPROC
10280
10290DEFPROCnew_menu_found
10300m$=fname$(current_menu,item)
10310z=FNmenu_exist(m$)
10320IF m$="Main Menu" m=0
10330IF m>=0 AND m<=20 THEN
10340  current_menu=m
10350  PROCclose_window(handle)
10360  handle=wi_handle%(type(current_menu)+4)
10370  data=wi_data%(type(current_menu)+4)
10380  PROCopen_window(handle)
10390  PROCredo_all_icons
10400  PROCredraw_list
10410ENDIF
10420ENDPROC
10430
10440DEFPROCrun_files_from
10450IF runfiles THEN runfiles=FALSE ELSE runfiles=TRUE
10460PROCtick_item(6,1)
10470ENDPROC
10480
10490REM ------------------------------- Menu Data ---------------------------
10500
10510DATA "Menaker",6,icon_menu
10520DATA "Info",info_handle
10530DATA "Save",save_handle
10540DATA "Options",opt_menu
10550DATA "Clear",-1
10560DATA "Copy files",-1
10570DATA "Quit",-1
10580
10590DATA "Menus",2,menus_menu
10600DATA "New menu",-1
10610DATA "Menu ''",menu_menu
10620
10630DATA "Items",3,items_menu
10640DATA "Item ''",item_menu
10650DATA "Main menu item",-1
10660DATA "Submenu item",-1
10670
10680DATA "Menu",2,menu_menu
10690DATA "Delete",-1
10700DATA "Alter type",-1
10710
10720DATA "Item",3,item_menu
10730DATA "Delete",-1
10740DATA "Alter info",-1
10750DATA "Make submenu",-1
10760
10770DATA "Options",1,opt_menu
10780DATA "Run files from Menaker",-1

� >!Menaker
� Menu Creation System
� for Archimedes World
(� �1993 Richard M. Leggett
2� 1/6/93 - 10/9/93
<
Finitialised=�
Pț "<Menaker$Dir>.WimpLib"
Z� � �error_trap
d
n�initialise
x�initialise_library
��install("!Menaker",68,68)
��initialise_menus(6)
��setup_windows
��setup_menus
��read_errors
��load_app_stuff
�
�read_vdu
��main_loop
�
�shutdown
��
�
���error_trap
��error$="Whoops! An error has occurred, type "+�$+" "+ß+"/"+Þ+". It may be best to save, quit and start again. Attempt to continue?"
� � initialised � � error$
� initialised �
  Ȏ � �
",    � 257:�system_error(14,1):�main_loop
,     � 654:�system_error(0,1)
6
    :
@!      �report_error(error$,3)
J&      � user_response=1 �main_loop
T  �
^�
h�
r
|��initialise
�� sblock% 256
�'� psprites 512,    usprites 80*1024
�1� sname 16,        rename 16,       fname 256
�0� runimage 40*1024,temps 10*1024,   run 1024
�6� icon_menu 512,   menus_menu 512,  items_menu 512
�4� menu_menu 512,   item_menu 512,   opt_menu 512
�4� action(20,40),   fname$(20,40),   text$(20,40)
�#� sprite$(20,40),  ftype(20,40)
�2� no_opts(20),     type(20),        mname$(20)
�� error$(20)
�� check$(10)
�
�no_opts()=255:type()=1
'mname$(0)="� Archimedes World 1993"
os_menu=0:quit=�:oq=�
2type=1:current_menu=0:num_mens=1:alter_item=-1
&modified=�
0prog_name$="Menaker"
:version$="2.19 (14-Sep-93)"
Dfilename$=""
Nrunfiles=�
X�
b
l��setup_windows
v$�load_templates("<Menaker$Dir>")
�info_handle=wi_handle%(1)
�crme_handle=wi_handle%(2)
�itin_handle=wi_handle%(3)
�list_handle=wi_handle%(4)
�typ1_handle=wi_handle%(5)
�typ2_handle=wi_handle%(6)
�typ3_handle=wi_handle%(7)
�save_handle=wi_handle%(8)
�mesg_handle=wi_handle%(9)
�copy_handle=wi_handle%(10)
�+�set_indirected(info_handle,4,version$)
�handle=typ1_handle
��

��setup_menus
�read_menu_data(6)
 � menu=1 � 6
*  �make_menu(menu)
4�
>�tick_item(6,1)
Hno_mmd=wm_nopts(1)-1
R�
\
f��main_loop
pinitialised=�
z*mask=%10001100000000000000000000000000
��
�*  ș "Wimp_Poll",mask,block% � reason%
�  Ȏ reason% �
�(    � 2:ș "Wimp_OpenWindow",,block%
�)    � 3:ș "Wimp_CloseWindow",,block%
�    � 6:�click_icon
�    � 7:�end_user_drag
�    � 8:�key_press
�    � 9:�menu_selection
�    � 17,18:�receive
�  �
�
� quit
��


��receive
Ȏ block%!16 �
$  � 0     :�shutdown
.  � 2     :�datasave
8  � 3     :�dataload
B  � &400C1:�read_vdu
L�
V�
`
j��key_press
tkey=block%!24
~window_handle=!block%
�icon_handle=block%!4
�Ȏ key �
�  � 13  :�return
�  :ș"Wimp_ProcessKey",key
��
��
�
���return
�Ȏ window_handle �
�#  � crme_handle:�end_alter_menu
�#  � itin_handle:�end_alter_item
�)  � save_handle:� key=13 � �quicksave
�

�

��menu_selection
(option$=�what_selection
2Ȏ option$ �
<  � "1.Clear":�clear_it
F  � "1.Quit":�quit_program
P"  � "1.Copy files":�copy_files
Z  � "2.New menu":�new_menu
d)  � "3.Main menu item":�mainmenu_item
n&  � "3.Submenu item":�submenu_item
x�
�3� os_menu=2 � �option$,6)="Delete":�delete_menu
�0� os_menu=2 � �option$,4)="type":�alter_menu
�3� os_menu=3 � �option$,6)="Delete":�delete_item
�0� os_menu=3 � �option$,4)="info":�alter_item
�2� os_menu=3 � �option$,4)="menu":�make_submenu
��
�
���click_icon
�xpos=!block%:ypos=block%!4
�3button=block%!8:window=block%!12:icon=block%!16
�Ȏ window �
�#  � -2         :�icon_bar_click
�  � list_handle:�list_click
!  � handle     :�handle_click
  � crme_handle:�crme_click
  � itin_handle:�itin_click
"$  � save_handle:�save_file_click
,�
6.block%!12=window:block%!16=icon:block%!8=0
@�
J
T��icon_bar_click
^Ȏ button �
h  � 4:�open_ib_window
rC  � 2:os_menu=1:�showmenu(icon_menu,!block%-64,140+(no_mmd*44))
|�
��
�
���end_user_drag
�minx=!block%:miny=block%!4
� maxx=block%!8:maxy=block%!12
�#ș"Wimp_GetPointerInfo",,block%
�destination=block%!12
�icon=block%!16
�Ȏ current_drag �
�  � 1:�start_save
�  � 2:�move_option
��
��

��start_save
-block%!20=destination:block%!24=block%!16
&(block%!28=!block%:block%!32=block%!4
0"block%!36=(12*1024):!block%=64
:+block%!12=0:block%!16=1:block%!40=&2000
D(file$=�get_indirected(save_handle,1)
Nleaf$=�getleaf(file$)
X&� �leaf$,1)<>"!" � leaf$="!"+leaf$
b$(block%+44)=leaf$
l8ș"Wimp_SendMessage",18,block%,destination,block%!24
v�
�
�H� ------------------------------------------------------------------
�
���crme_click
�
Ȏ icon �
�  � 6:�end_alter_menu
�$  � 8:�close_window(crme_handle)
��
��
�
���save_file_click
�
Ȏ icon �
�   � 0:� button � 64 �dragbox
!  � 2:� button � 5 �quicksave
�
�
 
*��itin_click
4
Ȏ icon �
>$  � 9:�close_window(itin_handle)
H  � 10:�end_alter_item
R�
\�
f
p��list_click
zȎ button �
�3  � 4:� mname$(icon)<>"" � �select_current_menu
�  � 2:�list_menu
��
��
�
���handle_click
�ds=�
�Ȏ button �
�  � 4:�clicked_on_icon:ds=�
�  � 2:�handle_menu:ds=�
��
�
� ds �
�6� icon>=18 � icon<=35 � (button � 64) �drag_option
	�
	
	��quit_program
	$� modified �
	.  �system_error(1,3)
	8  � user_response<>1 �
	B�
	L
�shutdown
	V�
	`
	j��datasave
	t5�set_indirected(save_handle,1,�string(block%+44))
	~�save_it
	�.block%!12=block%!8:block%!16=3:!block%=256
	�6ș"Wimp_SendMessage",18,block%,block%!20,block%!24
	��
	�
	���dataload
	�4filetype=block%!40:file$=�zero_string(block%+44)
	�#window=block%!20:icon=block%!24
	�Ȏ window �
	�  � -2:�icon_bar_drag
	�  � handle:�add_menu_drag
	�  � copy_handle:�copy_file
	��
�


��icon_bar_drag
#� filetype<>&2000 �error(2,1):�
(�load_file
2�
<
F��add_menu_drag
P�close_window(itin_handle)
Zmodified=�
d"newpos=no_opts(current_menu)+1
n� newpos=256 newpos=0
x� newpos>17 �
�  �error(3,1)
�  �
��
�Bno_opts(current_menu)=newpos:fname$(current_menu,newpos)=file$
�Otext$(current_menu,newpos)=�file(file$):ftype(current_menu,newpos)=filetype
�	act=1
�Ȏ filetype �
�<  � &1000:sprite$(current_menu,newpos)="directory":act=2
�K  � &2000:sprite$(current_menu,newpos)=text$(current_menu,newpos):act=3
�>  : sprite$(current_menu,newpos)="file_"+�~filetype:act=3
��
�#action(current_menu,newpos)=act
��redo_all_icons
�

ݤfile(fn$)
"in=�(fn$)+1
,�
6  in-=1
@� �fn$,in,1)="."
J=�fn$,�(fn$)-in)
T
^��redo_all_icons
hplus=18:to=17:title=36
r� icn=0 � to
|9  �set_indirected(handle,icn,text$(current_menu,icn))
�@  �set_indirected(handle,icn+plus,sprite$(current_menu,icn))
�$  �unset_bit(handle,icn+plus,21)
��
�6�set_indirected(handle,title,mname$(current_menu))
��size_window
�.ș"Wimp_ForceRedraw",handle,0,-1800,1200,0
��
�
���size_window
�n=no_opts(current_menu)
�� n=255 n=-1
�Ȏ handle �
�  � typ1_handle:�type1_size
  � typ2_handle:�type2_size
  � typ3_handle:�type3_size
�
&�
0
:��type1_size
Dn+=1:x=640:y=160+(n*88)
N0!block%=0:block%!4=-y:block%!8=x:block%!12=0
X$ș"Wimp_SetExtent",handle,block%
b� n>10 � y=160+(10*88)
l!block%=handle
v#ș"Wimp_GetWindowState",,block%
�-block%!12=block%!4+x:block%!16=block%!8+y
�ș"Wimp_OpenWindow",,block%
��
�
���type2_size
�y=(n � 2)+1
�� n>(y*2) � y+=1
�x=1080:y=132+(y*88)
�!block%=handle
�#ș"Wimp_GetWindowState",,block%
�-block%!12=block%!4+x:block%!16=block%!8+y
�ș"Wimp_OpenWindow",,block%
��



��type3_size

y=(n � 3)+1

 � n>(y*3) � y+=1

*x=872:y=120+(y*132)

4!block%=handle

>#ș"Wimp_GetWindowState",,block%

H-block%!12=block%!4+x:block%!16=block%!8+y

Rș"Wimp_OpenWindow",,block%

\�

f

p��list_menu

z
os_menu=2

�B� icon>=0 � icon<=20 � wm_data$(2,2)="Menu '"+mname$(icon)+"'"

��make_menu(2)

�.� �wm_data$(2,2),2)="''" � �grey_item(2,2)

�-�showmenu(menus_menu,!block%-64,block%!4)

��

�

���handle_menu

�item=�icon_to_item(icon)

�
os_menu=3

�it$="Item '"

�� item>=0 � item<=40 �

�*  it$=it$+text$(current_menu,item)+"'"

��
  it$+="'"
�
wm_data$(3,1)=it$
$�make_menu(3)
.$� �it$,2)="''" � �grey_item(3,1)
8-�showmenu(items_menu,!block%-64,block%!4)
B�
L
V��open_ib_window
`�open_window(list_handle)
j�redraw_list
t�redo_all_icons
~�
�
���delete_menu
�� icon=0 � �error(4,1):�
�Ierror$="Are you sure you want to delete the menu '"+mname$(icon)+"'?"
��report_error(error$,3)
�� user_response=2 �
�modified=�
�� icon=current_menu �
�  current_menu=0
�  �close_window(handle)
��
�� loop=icon � 18
#  no_opts(loop)=no_opts(loop+1)

  type(loop)=type(loop+1)
!  mname$(loop)=mname$(loop+1)
  � subloop=0 � 40
(3    action(loop,subloop)=action(loop+1,subloop)
23    fname$(loop,subloop)=fname$(loop+1,subloop)
<1    text$(loop,subloop)=text$(loop+1,subloop)
F5    sprite$(loop,subloop)=sprite$(loop+1,subloop)
P1    ftype(loop,subloop)=ftype(loop+1,subloop)
Z  �
d�
nmname$(19)=""
xnum_mens-=1
��redraw_list
��
�
���delete_item
��close_window(itin_handle)
�item=�icon_to_item(icon)
�modified=�
�� loop=item � 17
�;  action(current_menu,loop)=action(current_menu,loop+1)
�;  fname$(current_menu,loop)=fname$(current_menu,loop+1)
�9  text$(current_menu,loop)=text$(current_menu,loop+1)
�=  sprite$(current_menu,loop)=sprite$(current_menu,loop+1)
�9  ftype(current_menu,loop)=ftype(current_menu,loop+1)
�
no_opts(current_menu)-=1
�redo_all_icons
"�
,
6��new_menu
@� num_mens=20 �
J  �error(5,1)
T  �
^�
h	inm=�
ralter_menu=num_mens
|'�centre_window(crme_handle,508,480)
�-�set_indirected(crme_handle,7,"New menu")
��set_bit(crme_handle,2,21)
�=�unset_bit(crme_handle,3,21):�unset_bit(crme_handle,4,21)
��caret(crme_handle,7)
��
�
���alter_menu
�$� icon<0 � icon>19 � �error(6,1)
�	inm=�
�alter_menu=icon
�'�centre_window(crme_handle,508,480)
�5�set_indirected(crme_handle,7,mname$(alter_menu))
�=�unset_bit(crme_handle,2,21):�unset_bit(crme_handle,3,21)
 �unset_bit(crme_handle,4,21)
ty=type(alter_menu)
� ty<1 � ty>3 � �error(7,1)
&!�set_bit(crme_handle,1+ty,21)
0�caret(crme_handle,7)
:�
D
N��end_alter_menu
X�close_window(crme_handle)
b+menname$=�get_indirected(crme_handle,7)
l0� inm � �menu_exist(menname$) �error(15,1):�
v� inm � num_mens+=1
�)� mname$(alter_menu)<>"" �menu_exists
�mname$(alter_menu)=menname$
�>�set_indirected(list_handle,alter_menu,mname$(alter_menu))
�ty=1
�&� �get_state(crme_handle,2) � ty=1
�&� �get_state(crme_handle,3) � ty=2
�&� �get_state(crme_handle,4) � ty=3
�type(alter_menu)=ty
�� current_menu=alter_menu �
�  �close_window(handle)
�  Ȏ type(current_menu) �
�     � 1:handle=typ1_handle
�     � 2:handle=typ2_handle
     � 3:handle=typ3_handle
  �
  �open_window(handle)
   �redo_all_icons
*�
4�redraw_list
>modified=�
H�
R
\��menu_exists
f� menu=0 � num_mens-1
p#  � no_opts(menu)<>255 �menu_ex
z�
��
�
�
��menu_ex
�� item=0 � no_opts(menu)
�D  � action(menu,item)=1 � fname$(menu,item)=mname$(alter_menu) �
�"    fname$(menu,item)=menname$
�  �
��
��
�
���select_current_menu
�current_menu=icon
�1ș"Wimp_ForceRedraw",list_handle,0,-820,220,0
�close_window(handle)
+handle=wi_handle%(type(current_menu)+4)
'data=wi_data%(type(current_menu)+4)
$�open_window(handle)
.�redo_all_icons
8�redraw_list
B�close_window(itin_handle)
L�
V
`��redraw_list
j� icon=0 � 19
t5  �set_indirected(list_handle,icon,"  "+�m(icon))
~K  � icon=current_menu � �set_indirected(list_handle,icon,"* "+�m(icon))
��
��list_size
�2ș"Wimp_ForceRedraw",list_handle,0,-1000,220,0
��
�
���list_size
�x=220:y=24+(num_mens*40)
�� y<=144 � y=144
�0!block%=0:block%!4=-y:block%!8=x:block%!12=0
�)ș"Wimp_SetExtent",list_handle,block%
�� num_mens>10 � y=424
�!block%=list_handle
#ș"Wimp_GetWindowState",,block%

-block%!12=block%!4+x:block%!16=block%!8+y
ș"Wimp_OpenWindow",,block%
�
(
2��alter_item
<'�centre_window(itin_handle,528,680)
Fitem=�icon_to_item(icon)
Palter_item=item
Z<�set_indirected(itin_handle,8,fname$(current_menu,item))
d;�set_indirected(itin_handle,5,text$(current_menu,item))
n=�set_indirected(itin_handle,2,sprite$(current_menu,item))
x=�set_indirected(itin_handle,1,sprite$(current_menu,item))
�-act=action(current_menu,item):act$="????"
�Ȏ act �
�  � 1:act$="Open menu:"
�  � 2:act$="Open dir:"
�  � 3:act$="Run file:"
��
�(�set_indirected(itin_handle,13,act$)
��caret(itin_handle,2)
��
�
���end_alter_item
�� alter_item=-1 �minus_one
�� alter_item>=100 �
  alter_item-=100
  �create_alter_submenu
�
"Bfname$(current_menu,alter_item)=�get_indirected(itin_handle,8)
,Atext$(current_menu,alter_item)=�get_indirected(itin_handle,5)
6Csprite$(current_menu,alter_item)=�get_indirected(itin_handle,2)
@�close_window(itin_handle)
J�redo_all_icons
Tmodified=�
^�
h
r��minus_one
|� num_mens=20 �
�  �error(5,1)
�  �
��
�"newpos=no_opts(current_menu)+1
�� newpos=256 newpos=0
�� newpos>17 �
�  �error(3,1)
�  �
��
� no_opts(current_menu)=newpos
�alter_item=newpos
�!action(current_menu,newpos)=1
�%n$=�get_indirected(itin_handle,8)
&� �menu_exist(n$) � �error(15,1):�
num_mens+=1
n=num_mens-1
&mname$(n)=n$
0
type(n)=1
:no_opts(n)=255
D�redraw_list
N�
X
b��create_alter_submenu
l� num_mens=20 �
v  �error(5,1)
�  �
��
�num_mens+=1
�n=num_mens-1
�<mname$(n)=�rz(�getleaf(fname$(current_menu,alter_item)))
�
type(n)=1
�%action(current_menu,alter_item)=1
�'Ȏ ftype(current_menu,alter_item) �
�  � &1000:�submenu_dir
�  :�submenu_file
��
�modified=�
��redo_all_icons
�redraw_list
�

 ��submenu_file
*no_opts(n)=2
4Afname$(n,0)=fname$(current_menu,alter_item):text$(n,0)="!Run"
>-ftype(n,0)=ftype(current_menu,alter_item)
H?sprite$(n,0)=sprite$(current_menu,alter_item):action(n,0)=3
R&f$=fname$(current_menu,alter_item)
\leaf$=�getleaf(f$)
fdir$=�f$,�(f$)-�(leaf$))
p0fname$(n,1)=dir$:text$(n,1)="Open Directory"
z;ftype(n,1)=&1000:sprite$(n,1)="directory":action(n,1)=2
�2fname$(n,2)="Main Menu":text$(n,2)="Main Menu"
�2ftype(n,2)=0:sprite$(n,2)="menu":action(n,2)=1
��
�
���submenu_dir
�no_opts(n)=1
�Kfname$(n,0)=fname$(current_menu,alter_item):text$(n,0)="Open Directory"
�-ftype(n,0)=ftype(current_menu,alter_item)
�?sprite$(n,0)=sprite$(current_menu,alter_item):action(n,0)=2
�2fname$(n,1)="Main Menu":text$(n,1)="Main Menu"
�2ftype(n,1)=0:sprite$(n,1)="menu":action(n,1)=1
��
�
��quicksave
(file$=�get_indirected(save_handle,1)
leaf$=�getleaf(file$)
$&� �leaf$,1)<>"!" � leaf$="!"+leaf$
.� �file$,".") �
8  �save_it
B�
L  �error(9,1)
V�
`�
j
t
��save_it
~oldname$=filename$
�"make=�get_state(save_handle,3)
�,filename$=�get_indirected(save_handle,1)
�<l$=�getleaf(filename$):r$=�filename$,�(filename$)-�(l$))
�%� �l$,1)<>"!" filename$=r$+"!"+l$
��"CDir "+filename$
�"�"CDir "+filename$+".Programs"
�$sname="!menu"
�$rename=leaf$
�0ș"OS_SpriteOp",256+26,psprites,sname,rename
� $fname=filename$+".!Sprites"
�)ș"OS_SpriteOp",256+12,psprites,fname
�0ș"OS_SpriteOp",256+26,psprites,rename,sname
� make �

  �append_the_sprites
!  $fname=filename$+".Sprites"
+  ș"OS_SpriteOp",256+12,usprites,fname
(  �delete_sprites
2�
<F�save_prog_file(filename$+".!RunImage","Basic",runimage,ri_length)
F;�save_prog_file(filename$+".!Run","Obey",run,ru_length)
PA�save_prog_file(filename$+".Templates","fec",temps,te_length)
Z�save_load_data(�)
d�close_window(save_handle)
nmodified=�
xș"Wimp_CreateMenu",,-1
�O� oldname$<>"" � oldname$<>"<Obey$Dir>" � oldname$<>filename$ �confirm_copy
��
�
���confirm_copy
�eerror$(18)=" Do you wish to copy the programs from "+oldname$+" to the new save? (Cancel aborts)"
��error(18,3)
�� user_response=2 �
�'*Set OldCopy$Options <Copy$Options>
�7*Set Copy$Options A ~C ~D ~F ~L ~N ~P ~Q R ~S ~T ~V
�:A$="Copy "+oldname$+".Programs "+filename$+".Programs"
�� A$
�'*Set Copy$Options <OldCopy$Options>
��

��save_load_data(s)
F$=filename$+".MenuData"
"!� s X=� F$           � X=� F$
,� X=0 �sl_error:�
6r=82:m=77:l=76
@#� s �#X,82              � r=�#X
J#� s �#X,77              � m=�#X
T#� s �#X,76              � l=�#X
^(� � s � ((r+m+l)<>235) � �sl_error:�
h*� s �#X,num_mens        � num_mens=�#X
r%� s �#X,make           � �#X,make
|� menu=0 � num_mens-1
�-  � s �#X,mname$(menu) � �#X,mname$(menu)
�,  � s �#X,type(menu)    � type(menu)=�#X
�/  � s �#X,no_opts(menu) � no_opts(menu)=�#X
�%  � no_opts(menu)<>255 � �sl_each
��
��#X
�� s �"SetType "+F$+" Data"
�.� � s �"Iconsprites "+filename$+".Sprites"
�modified=�
��
�
�
��sl_each
�� item=0 � no_opts(menu)
9  � s �#X,action(menu,item)   � action(menu,item)=�#X
8  � s �#X,fname$(menu,item)  � �#X,fname$(menu,item)
7  � s �#X,text$(menu,item)   � �#X,text$(menu,item)
&9  � s �#X,sprite$(menu,item) � �#X,sprite$(menu,item)
07  � s �#X,ftype(menu,item)   � �#X,ftype(menu,item)
:�
D�
N
X��sl_error
b�#0
l�error(10,1)
v�
�
���load_app_stuff
�F�create_sprite_area("<Menaker$Dir>.Menu.Sprites",usprites,80*1024)
�C�create_sprite_area("<Menaker$Dir>.Menu.!Sprites",psprites,512)
�Fri_length=�load_prog_file("<Menaker$Dir>.Menu.!RunImage",runimage)
�<ru_length=�load_prog_file("<Menaker$Dir>.Menu.!Run",run)
�Cte_length=�load_prog_file("<Menaker$Dir>.Menu.Templates",temps)
��
�
�ݤload_prog_file(n$,m)
�
$fname=n$
� ș"OS_File",17,fname � ,,,,l
��"Load "+n$+" "+�~m
=l

��save_prog_file(n$,t$,m,l)
  �"Save "+n$+" "+�~m+" +"+�~l
*�"Settype "+n$+" "+t$
4�
>
H#��create_sprite_area(n$,m,size)
R !m=size:m!4=0:m!8=16:m!12=16
\ș"OS_SpriteOp",256+9,m
f
$fname=n$
p"ș"OS_SpriteOp",256+10,m,fname
z�
�
�ݤicon_to_item(icn)
�
it=icn
�� it>17 � it-=18
�=it
�
���load_file
�� modified �
�  �error(11,3)
�  � user_response=2 �
��
��clear_data
�filename$=file$
�save_load_data(�)
�close_window(handle)
Ȏ type(current_menu) �
$   � 1:handle=typ1_handle
.   � 2:handle=typ2_handle
8   � 3:handle=typ3_handle
B�
L�open_window(handle)
V�redo_all_icons
`�redraw_list
j(�set_indirected(save_handle,1,file$)
tmodified=�
~'�"Set MenakerServer$Dir "+filename$
��
�
���clear_it
�user_response=1
�� modified � �error(12,3)
�� user_response=1 �
�  �clear_data
�  �redo_all_icons
�  �redraw_list
��
��
�
��clear_data

no_opts()=255:type()=1
<mname$()="":mname$(0)="Main Menu":action()=0:fname$()=""
%text$()="":sprite$()="":ftype()=0
(=type=1:current_menu=0:num_mens=1:alter_item=-1:modified=�
2filename$=""
<�close_window(copy_handle)
F.�set_indirected(save_handle,1,"!MenuFile")
P�
Z
d��append_the_sprites
n+ș"OS_SpriteOp",256+8,usprites � ,,,num
xcheck$()="":cc=0
�� menu=0 � num_mens-1
�  � no_opts(menu)<>255 �a_b
��
��
�
�	��a_b
�� option=0 � no_opts(menu)
�  fi$=fname$(menu,option)
�H  � action(menu,option)<>1 � ftype(menu,option)=&2000 � �not_there �
�,    �append_sprites(fname$(menu,option))
�$    � �(check$(cc))>=240 � cc+=1
�    check$(cc)+=fi$
�  �
�
�

"ݤnot_there
,found=�
6fi$=�getleaf(fi$)
@� c=0 � cc
J&  � �check$(c),fi$) � found=�:c=cc
T�
^=� found
h
r��delete_sprites
|+ș"OS_SpriteOp",256+8,usprites � ,,,num
�
� num=1 �
�� n=1 � num-1
�=  ș"OS_SpriteOp",256+13,usprites,sname,256,2 � ,,,length
�+  ș"OS_SpriteOp",256+25,usprites,sname
��
��
�
���append_sprites(f$)
�leaf$=�alpha(�getleaf(f$))
�leaf$=�leaf$,�(leaf$)-1)
�fn$=f$+".!Sprites"
�$fname=fn$
�X=� fn$
 �#X
 � X=0 �
 P  �report_error("Can't find sprite file for "+f$+", but will continue...",1)
 &  �
 0�
 :)ș"OS_SpriteOp",256+11,usprites,fname
 Dold_num=num+1
 N�
 X-  ș"OS_SpriteOp",256+8,usprites � ,,,num
 b	  d=�
 l  � s=old_num � num
 v?    ș"OS_SpriteOp",256+13,usprites,sname,256,s � ,,,length
 �(    sprite$=�alpha(�get_name(sname))
 �    � sprite$<>leaf$ �
 �      $sname=sprite$
 �/      ș"OS_SpriteOp",256+25,usprites,sname
 �      s=num
 �
      d=�
 �	    �
 �  �
 �	� d=�
 �+ș"OS_SpriteOp",256+8,usprites � ,,,num
 ��
 �
 �
ݤm(n)
!=�mname$(icon),10)
!
!��read_errors
! Xerror$(0)="Sorry, but there's a problem : Please find !Fonts and try loading again."
!*Uerror$(1)="There is unsaved data. Are you sure you want to quit? (Cancel aborts)"
!4>error$(2)="The file you dragged is not a recognised menu."
!>Serror$(3)="Sorry, but this version of the program will not support more items."
!H]error$(4)="Sorry, but you can't delete the main menu - I'd only get confused if you did."
!RXerror$(5)="Sorry, but you can't have any more menus in this version of the program."
!\Merror$(6)="How did you manage that? You can't alter a non-existant menu!"
!fIerror$(7)="How did you manage that? You've selected an invalid type!"
!perror$(8)=""
!z=error$(9)="To save, drag the icon to a directory viewer."
!�[error$(10)="Sorry, there's a problem - the menu data is either not present, or corrupt"
!�ierror$(11)="Loading the file will overwrite existing data. Are you sure you want to? (Cancel aborts)"
!�Ferror$(12)="Are you sure - All data will be lost? (Cancel aborts)"
!�)error$(13)="Fatal error - must exit."
!�Rerror$(14)="To load the sprites for this file, you must increase Module area."
!�4error$(15)="A menu of that name already exists."
!�Derror$(16)="Before copying files, you must have saved the menu."
!��
!�
!���system_error(n,c)
!��report_error(error$(n),c)
!��
!�
"��error(n,c)
"�set_bit(mesg_handle,1,23)
"(� c=3 � �unset_bit(mesg_handle,1,23)
"$,�set_indirected(mesg_handle,0,error$(n))
".x=728:y=276
"8'�centre_window(mesg_handle,728,276)
"Bȗ ȓ block%!4,block%!8,x,y
"L�7
"V�
"`*  ș "Wimp_Poll",mask,block% � reason%
"j  Ȏ reason% �
"t    � 6:�click_icon
"~    � 17,18:�receive
"�  �
"�� reason%=6
"�icon=block%!16
"�.� icon=1 user_response=2 � user_response=1
"�ȗ ȓ 0,0,xr,yr
"��close_window(mesg_handle)
"��
"�
"���mainmenu_item
"�modified=�
"�"newpos=no_opts(current_menu)+1
"�� newpos=256 newpos=0
#� newpos>17 �
#
  �error(3,1)
#  �
#�
#( no_opts(current_menu)=newpos
#2+fname$(current_menu,newpos)="Main Menu"
#<*text$(current_menu,newpos)="Main Menu"
#F ftype(current_menu,newpos)=0
#P'sprite$(current_menu,newpos)="menu"
#Z!action(current_menu,newpos)=1
#d�redo_all_icons
#n�
#x
#�
��dragbox
#��start_drag(save_handle,0)
#�current_drag=1
#��
#�
#���drag_option
#�modified=�
#�current_drag=2
#�!f_dragged=�icon_to_item(icon)
#�'� f_dragged>no_opts(current_menu) �
#��start_drag(handle,icon)
#��
#�
$��move_option
$� destination<>handle �
$� icon<0 � icon>35 �
$"!s_dragged=�icon_to_item(icon)
$,� f_dragged=s_dragged �
$6'� s_dragged>no_opts(current_menu) �
$@$a=action(current_menu,f_dragged)
$J%f$=fname$(current_menu,f_dragged)
$T$t$=text$(current_menu,f_dragged)
$^&s$=sprite$(current_menu,f_dragged)
$h#f=ftype(current_menu,f_dragged)
$r>� f_dragged<s_dragged � f=f_dragged+1:t=s_dragged:p=-1:s=1
$|>� f_dragged>s_dragged � f=f_dragged-1:t=s_dragged:p=1:s=-1
$�� d=f � t � s
$�6  action(current_menu,d+p) =action(current_menu,d)
$�6  fname$(current_menu,d+p) =fname$(current_menu,d)
$�5  text$(current_menu,d+p)  =text$(current_menu,d)
$�7  sprite$(current_menu,d+p)=sprite$(current_menu,d)
$�5  ftype(current_menu,d+p)  =ftype(current_menu,d)
$��
$�$action(current_menu,s_dragged)=a
$�%fname$(current_menu,s_dragged)=f$
$�$text$(current_menu,s_dragged)=t$
$�&sprite$(current_menu,s_dragged)=s$
$�#ftype(current_menu,s_dragged)=f
$��redo_all_icons
%�
%
%��make_submenu
%&item=�icon_to_item(icon)
%0<� �menu_exist(text$(current_menu,item)) � �error(15,1):�
%:alter_item=item+100
%D;�set_indirected(itin_handle,8,text$(current_menu,item))
%N;�set_indirected(itin_handle,5,text$(current_menu,item))
%X=�set_indirected(itin_handle,2,sprite$(current_menu,item))
%b=�set_indirected(itin_handle,1,sprite$(current_menu,item))
%l0�set_indirected(itin_handle,13,"Open menu:")
%v'�centre_window(itin_handle,528,680)
%��caret(itin_handle,2)
%��
%�
%���submenu_item
%�alter_item=-1
%�,�set_indirected(itin_handle,8,"Submenu")
%�,�set_indirected(itin_handle,5,"Submenu")
%�)�set_indirected(itin_handle,2,"menu")
%�)�set_indirected(itin_handle,1,"menu")
%�0�set_indirected(itin_handle,13,"Open menu:")
%�'�centre_window(itin_handle,528,680)
%��caret(itin_handle,2)
%��
&
&ݤmenu_exist(A$)
&
m=255:e=�
& � n=0 � 20
&*  � mname$(n)=A$ � m=n:e=�
&4�
&>=e
&H
&R��copy_files
&\!� filename$="" �error(16,1):�
&f'�centre_window(copy_handle,620,156)
&p'�"Set MenakerServer$Dir "+filename$
&z�
&�
&���copy_file
&�l=�(file$)
&�l$=�getleaf(file$)
&�� menu=0 � num_mens-1
&�  � item=0 � no_opts(menu)
&�    fn$=fname$(menu,item)
&�&    � �fn$,l)=file$ � �copy_gotone
&�  �
&��
&��save_load_data(�)
&�'*Set OldCopy$Options <Copy$Options>
&�7*Set Copy$Options A ~C ~D ~F ~L ~N ~P ~Q R ~S ~T ~V
'2A$="Copy "+file$+" "+filename$+".Programs."+l$
'� A$
''*Set Copy$Options <OldCopy$Options>
'$�
'.
'8��copy_gotone
'Bn$=�fn$,�(fn$)-l+�(l$)-1)
'L8fname$(menu,item)="<MenakerServer$Dir>.Programs."+n$
'V�
'`
'j��clicked_on_icon
't)� filename$="" filename$="<Obey$Dir>"
'~'�"Set MenakerServer$Dir "+filename$
'�ș"OS_Byte",21
'�item=�icon_to_item(icon)
'�5� action(current_menu,item)=1 � �new_menu_found:�
'�3� action(current_menu,item)=2 � �open_dir_found
'�3� action(current_menu,item)=3 � �run_file_found
'��
'�
'���run_file_found
'�� � runfiles �
'�+�"Filer_Run "+fname$(current_menu,item)
'��
'�
(��open_dir_found
(
� � runfiles �
(/�"Filer_OpenDir "+fname$(current_menu,item)
(�
((
(2��new_menu_found
(< m$=fname$(current_menu,item)
(Fz=�menu_exist(m$)
(P� m$="Main Menu" m=0
(Z� m>=0 � m<=20 �
(d  current_menu=m
(n  �close_window(handle)
(x-  handle=wi_handle%(type(current_menu)+4)
(�)  data=wi_data%(type(current_menu)+4)
(�  �open_window(handle)
(�  �redo_all_icons
(�  �redraw_list
(��
(��
(�
(���run_files_from
(�(� runfiles � runfiles=� � runfiles=�
(��tick_item(6,1)
(��
(�
(�K� ------------------------------- Menu Data ---------------------------
)
)� "Menaker",6,icon_menu
)� "Info",info_handle
)"� "Save",save_handle
),� "Options",opt_menu
)6� "Clear",-1
)@� "Copy files",-1
)J� "Quit",-1
)T
)^� "Menus",2,menus_menu
)h� "New menu",-1
)r� "Menu ''",menu_menu
)|
)�� "Items",3,items_menu
)�� "Item ''",item_menu
)�� "Main menu item",-1
)�� "Submenu item",-1
)�
)�� "Menu",2,menu_menu
)�� "Delete",-1
)�� "Alter type",-1
)�
)�� "Item",3,item_menu
)�� "Delete",-1
)�� "Alter info",-1
)�� "Make submenu",-1
*
*� "Options",1,opt_menu
*!� "Run files from Menaker",-1
�
00000000  0d 00 0a 0f f4 20 3e 21  4d 65 6e 61 6b 65 72 0d  |..... >!Menaker.|
00000010  00 14 1a f4 20 4d 65 6e  75 20 43 72 65 61 74 69  |.... Menu Creati|
00000020  6f 6e 20 53 79 73 74 65  6d 0d 00 1e 1a f4 20 66  |on System..... f|
00000030  6f 72 20 41 72 63 68 69  6d 65 64 65 73 20 57 6f  |or Archimedes Wo|
00000040  72 6c 64 0d 00 28 1e f4  20 a9 31 39 39 33 20 52  |rld..(.. .1993 R|
00000050  69 63 68 61 72 64 20 4d  2e 20 4c 65 67 67 65 74  |ichard M. Legget|
00000060  74 0d 00 32 16 f4 20 31  2f 36 2f 39 33 20 2d 20  |t..2.. 1/6/93 - |
00000070  31 30 2f 39 2f 39 33 0d  00 3c 04 0d 00 46 11 69  |10/9/93..<...F.i|
00000080  6e 69 74 69 61 6c 69 73  65 64 3d a3 0d 00 50 1e  |nitialised=...P.|
00000090  c8 9b 20 22 3c 4d 65 6e  61 6b 65 72 24 44 69 72  |.. "<Menaker$Dir|
000000a0  3e 2e 57 69 6d 70 4c 69  62 22 0d 00 5a 13 ee 20  |>.WimpLib"..Z.. |
000000b0  85 20 f2 65 72 72 6f 72  5f 74 72 61 70 0d 00 64  |. .error_trap..d|
000000c0  04 0d 00 6e 0f f2 69 6e  69 74 69 61 6c 69 73 65  |...n..initialise|
000000d0  0d 00 78 17 f2 69 6e 69  74 69 61 6c 69 73 65 5f  |..x..initialise_|
000000e0  6c 69 62 72 61 72 79 0d  00 82 1e f2 69 6e 73 74  |library.....inst|
000000f0  61 6c 6c 28 22 21 4d 65  6e 61 6b 65 72 22 2c 36  |all("!Menaker",6|
00000100  38 2c 36 38 29 0d 00 8c  18 f2 69 6e 69 74 69 61  |8,68).....initia|
00000110  6c 69 73 65 5f 6d 65 6e  75 73 28 36 29 0d 00 96  |lise_menus(6)...|
00000120  12 f2 73 65 74 75 70 5f  77 69 6e 64 6f 77 73 0d  |..setup_windows.|
00000130  00 a0 10 f2 73 65 74 75  70 5f 6d 65 6e 75 73 0d  |....setup_menus.|
00000140  00 aa 10 f2 72 65 61 64  5f 65 72 72 6f 72 73 0d  |....read_errors.|
00000150  00 b4 13 f2 6c 6f 61 64  5f 61 70 70 5f 73 74 75  |....load_app_stu|
00000160  66 66 0d 00 be 0d f2 72  65 61 64 5f 76 64 75 0d  |ff.....read_vdu.|
00000170  00 c8 0e f2 6d 61 69 6e  5f 6c 6f 6f 70 0d 00 d2  |....main_loop...|
00000180  0d f2 73 68 75 74 64 6f  77 6e 0d 00 dc 05 e0 0d  |..shutdown......|
00000190  00 e6 04 0d 00 f0 10 dd  f2 65 72 72 6f 72 5f 74  |.........error_t|
000001a0  72 61 70 0d 00 fa 89 65  72 72 6f 72 24 3d 22 57  |rap....error$="W|
000001b0  68 6f 6f 70 73 21 20 41  6e 20 65 72 72 6f 72 20  |hoops! An error |
000001c0  68 61 73 20 6f 63 63 75  72 72 65 64 2c 20 74 79  |has occurred, ty|
000001d0  70 65 20 22 2b f6 24 2b  22 20 22 2b c3 9f 2b 22  |pe "+.$+" "+..+"|
000001e0  2f 22 2b c3 9e 2b 22 2e  20 49 74 20 6d 61 79 20  |/"+..+". It may |
000001f0  62 65 20 62 65 73 74 20  74 6f 20 73 61 76 65 2c  |be best to save,|
00000200  20 71 75 69 74 20 61 6e  64 20 73 74 61 72 74 20  | quit and start |
00000210  61 67 61 69 6e 2e 20 41  74 74 65 6d 70 74 20 74  |again. Attempt t|
00000220  6f 20 63 6f 6e 74 69 6e  75 65 3f 22 0d 01 04 1e  |o continue?"....|
00000230  e7 20 ac 20 69 6e 69 74  69 61 6c 69 73 65 64 20  |. . initialised |
00000240  8c 20 f1 20 65 72 72 6f  72 24 0d 01 0e 13 e7 20  |. . error$..... |
00000250  69 6e 69 74 69 61 6c 69  73 65 64 20 8c 0d 01 18  |initialised ....|
00000260  0c 20 20 c8 8e 20 9f 20  ca 0d 01 22 2c 20 20 20  |.  .. . ...",   |
00000270  20 c9 20 32 35 37 3a f2  73 79 73 74 65 6d 5f 65  | . 257:.system_e|
00000280  72 72 6f 72 28 31 34 2c  31 29 3a f2 6d 61 69 6e  |rror(14,1):.main|
00000290  5f 6c 6f 6f 70 0d 01 2c  20 20 20 20 20 c9 20 36  |_loop..,     . 6|
000002a0  35 34 3a f2 73 79 73 74  65 6d 5f 65 72 72 6f 72  |54:.system_error|
000002b0  28 30 2c 31 29 0d 01 36  0a 20 20 20 20 7f 3a 0d  |(0,1)..6.    .:.|
000002c0  01 40 21 20 20 20 20 20  20 f2 72 65 70 6f 72 74  |.@!      .report|
000002d0  5f 65 72 72 6f 72 28 65  72 72 6f 72 24 2c 33 29  |_error(error$,3)|
000002e0  0d 01 4a 26 20 20 20 20  20 20 e7 20 75 73 65 72  |..J&      . user|
000002f0  5f 72 65 73 70 6f 6e 73  65 3d 31 20 f2 6d 61 69  |_response=1 .mai|
00000300  6e 5f 6c 6f 6f 70 0d 01  54 07 20 20 cb 0d 01 5e  |n_loop..T.  ...^|
00000310  05 cd 0d 01 68 05 e0 0d  01 72 04 0d 01 7c 10 dd  |....h....r...|..|
00000320  f2 69 6e 69 74 69 61 6c  69 73 65 0d 01 86 11 de  |.initialise.....|
00000330  20 73 62 6c 6f 63 6b 25  20 32 35 36 0d 01 90 27  | sblock% 256...'|
00000340  de 20 70 73 70 72 69 74  65 73 20 35 31 32 2c 20  |. psprites 512, |
00000350  20 20 20 75 73 70 72 69  74 65 73 20 38 30 2a 31  |   usprites 80*1|
00000360  30 32 34 0d 01 9a 31 de  20 73 6e 61 6d 65 20 31  |024...1. sname 1|
00000370  36 2c 20 20 20 20 20 20  20 20 72 65 6e 61 6d 65  |6,        rename|
00000380  20 31 36 2c 20 20 20 20  20 20 20 66 6e 61 6d 65  | 16,       fname|
00000390  20 32 35 36 0d 01 a4 30  de 20 72 75 6e 69 6d 61  | 256...0. runima|
000003a0  67 65 20 34 30 2a 31 30  32 34 2c 74 65 6d 70 73  |ge 40*1024,temps|
000003b0  20 31 30 2a 31 30 32 34  2c 20 20 20 72 75 6e 20  | 10*1024,   run |
000003c0  31 30 32 34 0d 01 ae 36  de 20 69 63 6f 6e 5f 6d  |1024...6. icon_m|
000003d0  65 6e 75 20 35 31 32 2c  20 20 20 6d 65 6e 75 73  |enu 512,   menus|
000003e0  5f 6d 65 6e 75 20 35 31  32 2c 20 20 69 74 65 6d  |_menu 512,  item|
000003f0  73 5f 6d 65 6e 75 20 35  31 32 0d 01 b8 34 de 20  |s_menu 512...4. |
00000400  6d 65 6e 75 5f 6d 65 6e  75 20 35 31 32 2c 20 20  |menu_menu 512,  |
00000410  20 69 74 65 6d 5f 6d 65  6e 75 20 35 31 32 2c 20  | item_menu 512, |
00000420  20 20 6f 70 74 5f 6d 65  6e 75 20 35 31 32 0d 01  |  opt_menu 512..|
00000430  c2 34 de 20 61 63 74 69  6f 6e 28 32 30 2c 34 30  |.4. action(20,40|
00000440  29 2c 20 20 20 66 6e 61  6d 65 24 28 32 30 2c 34  |),   fname$(20,4|
00000450  30 29 2c 20 20 20 74 65  78 74 24 28 32 30 2c 34  |0),   text$(20,4|
00000460  30 29 0d 01 cc 23 de 20  73 70 72 69 74 65 24 28  |0)...#. sprite$(|
00000470  32 30 2c 34 30 29 2c 20  20 66 74 79 70 65 28 32  |20,40),  ftype(2|
00000480  30 2c 34 30 29 0d 01 d6  32 de 20 6e 6f 5f 6f 70  |0,40)...2. no_op|
00000490  74 73 28 32 30 29 2c 20  20 20 20 20 74 79 70 65  |ts(20),     type|
000004a0  28 32 30 29 2c 20 20 20  20 20 20 20 20 6d 6e 61  |(20),        mna|
000004b0  6d 65 24 28 32 30 29 0d  01 e0 10 de 20 65 72 72  |me$(20)..... err|
000004c0  6f 72 24 28 32 30 29 0d  01 ea 10 de 20 63 68 65  |or$(20)..... che|
000004d0  63 6b 24 28 31 30 29 0d  01 f4 04 0d 01 fe 1a 6e  |ck$(10)........n|
000004e0  6f 5f 6f 70 74 73 28 29  3d 32 35 35 3a 74 79 70  |o_opts()=255:typ|
000004f0  65 28 29 3d 31 0d 02 08  27 6d 6e 61 6d 65 24 28  |e()=1...'mname$(|
00000500  30 29 3d 22 a9 20 41 72  63 68 69 6d 65 64 65 73  |0)=". Archimedes|
00000510  20 57 6f 72 6c 64 20 31  39 39 33 22 0d 02 12 19  | World 1993"....|
00000520  6f 73 5f 6d 65 6e 75 3d  30 3a 71 75 69 74 3d a3  |os_menu=0:quit=.|
00000530  3a 6f 71 3d a3 0d 02 1c  32 74 79 70 65 3d 31 3a  |:oq=....2type=1:|
00000540  63 75 72 72 65 6e 74 5f  6d 65 6e 75 3d 30 3a 6e  |current_menu=0:n|
00000550  75 6d 5f 6d 65 6e 73 3d  31 3a 61 6c 74 65 72 5f  |um_mens=1:alter_|
00000560  69 74 65 6d 3d 2d 31 0d  02 26 0e 6d 6f 64 69 66  |item=-1..&.modif|
00000570  69 65 64 3d a3 0d 02 30  18 70 72 6f 67 5f 6e 61  |ied=...0.prog_na|
00000580  6d 65 24 3d 22 4d 65 6e  61 6b 65 72 22 0d 02 3a  |me$="Menaker"..:|
00000590  1f 76 65 72 73 69 6f 6e  24 3d 22 32 2e 31 39 20  |.version$="2.19 |
000005a0  28 31 34 2d 53 65 70 2d  39 33 29 22 0d 02 44 10  |(14-Sep-93)"..D.|
000005b0  66 69 6c 65 6e 61 6d 65  24 3d 22 22 0d 02 4e 0e  |filename$=""..N.|
000005c0  72 75 6e 66 69 6c 65 73  3d b9 0d 02 58 05 e1 0d  |runfiles=...X...|
000005d0  02 62 04 0d 02 6c 13 dd  f2 73 65 74 75 70 5f 77  |.b...l...setup_w|
000005e0  69 6e 64 6f 77 73 0d 02  76 24 f2 6c 6f 61 64 5f  |indows..v$.load_|
000005f0  74 65 6d 70 6c 61 74 65  73 28 22 3c 4d 65 6e 61  |templates("<Mena|
00000600  6b 65 72 24 44 69 72 3e  22 29 0d 02 80 1d 69 6e  |ker$Dir>")....in|
00000610  66 6f 5f 68 61 6e 64 6c  65 3d 77 69 5f 68 61 6e  |fo_handle=wi_han|
00000620  64 6c 65 25 28 31 29 0d  02 8a 1d 63 72 6d 65 5f  |dle%(1)....crme_|
00000630  68 61 6e 64 6c 65 3d 77  69 5f 68 61 6e 64 6c 65  |handle=wi_handle|
00000640  25 28 32 29 0d 02 94 1d  69 74 69 6e 5f 68 61 6e  |%(2)....itin_han|
00000650  64 6c 65 3d 77 69 5f 68  61 6e 64 6c 65 25 28 33  |dle=wi_handle%(3|
00000660  29 0d 02 9e 1d 6c 69 73  74 5f 68 61 6e 64 6c 65  |)....list_handle|
00000670  3d 77 69 5f 68 61 6e 64  6c 65 25 28 34 29 0d 02  |=wi_handle%(4)..|
00000680  a8 1d 74 79 70 31 5f 68  61 6e 64 6c 65 3d 77 69  |..typ1_handle=wi|
00000690  5f 68 61 6e 64 6c 65 25  28 35 29 0d 02 b2 1d 74  |_handle%(5)....t|
000006a0  79 70 32 5f 68 61 6e 64  6c 65 3d 77 69 5f 68 61  |yp2_handle=wi_ha|
000006b0  6e 64 6c 65 25 28 36 29  0d 02 bc 1d 74 79 70 33  |ndle%(6)....typ3|
000006c0  5f 68 61 6e 64 6c 65 3d  77 69 5f 68 61 6e 64 6c  |_handle=wi_handl|
000006d0  65 25 28 37 29 0d 02 c6  1d 73 61 76 65 5f 68 61  |e%(7)....save_ha|
000006e0  6e 64 6c 65 3d 77 69 5f  68 61 6e 64 6c 65 25 28  |ndle=wi_handle%(|
000006f0  38 29 0d 02 d0 1d 6d 65  73 67 5f 68 61 6e 64 6c  |8)....mesg_handl|
00000700  65 3d 77 69 5f 68 61 6e  64 6c 65 25 28 39 29 0d  |e=wi_handle%(9).|
00000710  02 da 1e 63 6f 70 79 5f  68 61 6e 64 6c 65 3d 77  |...copy_handle=w|
00000720  69 5f 68 61 6e 64 6c 65  25 28 31 30 29 0d 02 e4  |i_handle%(10)...|
00000730  2b f2 73 65 74 5f 69 6e  64 69 72 65 63 74 65 64  |+.set_indirected|
00000740  28 69 6e 66 6f 5f 68 61  6e 64 6c 65 2c 34 2c 76  |(info_handle,4,v|
00000750  65 72 73 69 6f 6e 24 29  0d 02 ee 16 68 61 6e 64  |ersion$)....hand|
00000760  6c 65 3d 74 79 70 31 5f  68 61 6e 64 6c 65 0d 02  |le=typ1_handle..|
00000770  f8 05 e1 0d 03 02 04 0d  03 0c 11 dd f2 73 65 74  |.............set|
00000780  75 70 5f 6d 65 6e 75 73  0d 03 16 16 f2 72 65 61  |up_menus.....rea|
00000790  64 5f 6d 65 6e 75 5f 64  61 74 61 28 36 29 0d 03  |d_menu_data(6)..|
000007a0  20 10 e3 20 6d 65 6e 75  3d 31 20 b8 20 36 0d 03  | .. menu=1 . 6..|
000007b0  2a 16 20 20 f2 6d 61 6b  65 5f 6d 65 6e 75 28 6d  |*.  .make_menu(m|
000007c0  65 6e 75 29 0d 03 34 05  ed 0d 03 3e 13 f2 74 69  |enu)..4....>..ti|
000007d0  63 6b 5f 69 74 65 6d 28  36 2c 31 29 0d 03 48 18  |ck_item(6,1)..H.|
000007e0  6e 6f 5f 6d 6d 64 3d 77  6d 5f 6e 6f 70 74 73 28  |no_mmd=wm_nopts(|
000007f0  31 29 2d 31 0d 03 52 05  e1 0d 03 5c 04 0d 03 66  |1)-1..R....\...f|
00000800  0f dd f2 6d 61 69 6e 5f  6c 6f 6f 70 0d 03 70 11  |...main_loop..p.|
00000810  69 6e 69 74 69 61 6c 69  73 65 64 3d b9 0d 03 7a  |initialised=...z|
00000820  2a 6d 61 73 6b 3d 25 31  30 30 30 31 31 30 30 30  |*mask=%100011000|
00000830  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
00000840  30 30 30 30 30 30 30 0d  03 84 05 f5 0d 03 8e 2a  |0000000........*|
00000850  20 20 c8 99 20 22 57 69  6d 70 5f 50 6f 6c 6c 22  |  .. "Wimp_Poll"|
00000860  2c 6d 61 73 6b 2c 62 6c  6f 63 6b 25 20 b8 20 72  |,mask,block% . r|
00000870  65 61 73 6f 6e 25 0d 03  98 12 20 20 c8 8e 20 72  |eason%....  .. r|
00000880  65 61 73 6f 6e 25 20 ca  0d 03 a2 28 20 20 20 20  |eason% ....(    |
00000890  c9 20 32 3a c8 99 20 22  57 69 6d 70 5f 4f 70 65  |. 2:.. "Wimp_Ope|
000008a0  6e 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 25  |nWindow",,block%|
000008b0  0d 03 ac 29 20 20 20 20  c9 20 33 3a c8 99 20 22  |...)    . 3:.. "|
000008c0  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
000008d0  22 2c 2c 62 6c 6f 63 6b  25 0d 03 b6 17 20 20 20  |",,block%....   |
000008e0  20 c9 20 36 3a f2 63 6c  69 63 6b 5f 69 63 6f 6e  | . 6:.click_icon|
000008f0  0d 03 c0 1a 20 20 20 20  c9 20 37 3a f2 65 6e 64  |....    . 7:.end|
00000900  5f 75 73 65 72 5f 64 72  61 67 0d 03 ca 16 20 20  |_user_drag....  |
00000910  20 20 c9 20 38 3a f2 6b  65 79 5f 70 72 65 73 73  |  . 8:.key_press|
00000920  0d 03 d4 1b 20 20 20 20  c9 20 39 3a f2 6d 65 6e  |....    . 9:.men|
00000930  75 5f 73 65 6c 65 63 74  69 6f 6e 0d 03 de 18 20  |u_selection.... |
00000940  20 20 20 c9 20 31 37 2c  31 38 3a f2 72 65 63 65  |   . 17,18:.rece|
00000950  69 76 65 0d 03 e8 07 20  20 cb 0d 03 f2 0a fd 20  |ive....  ...... |
00000960  71 75 69 74 0d 03 fc 05  e1 0d 04 06 04 0d 04 10  |quit............|
00000970  0d dd f2 72 65 63 65 69  76 65 0d 04 1a 12 c8 8e  |...receive......|
00000980  20 62 6c 6f 63 6b 25 21  31 36 20 ca 0d 04 24 18  | block%!16 ...$.|
00000990  20 20 c9 20 30 20 20 20  20 20 3a f2 73 68 75 74  |  . 0     :.shut|
000009a0  64 6f 77 6e 0d 04 2e 18  20 20 c9 20 32 20 20 20  |down....  . 2   |
000009b0  20 20 3a f2 64 61 74 61  73 61 76 65 0d 04 38 18  |  :.datasave..8.|
000009c0  20 20 c9 20 33 20 20 20  20 20 3a f2 64 61 74 61  |  . 3     :.data|
000009d0  6c 6f 61 64 0d 04 42 18  20 20 c9 20 26 34 30 30  |load..B.  . &400|
000009e0  43 31 3a f2 72 65 61 64  5f 76 64 75 0d 04 4c 05  |C1:.read_vdu..L.|
000009f0  cb 0d 04 56 05 e1 0d 04  60 04 0d 04 6a 0f dd f2  |...V....`...j...|
00000a00  6b 65 79 5f 70 72 65 73  73 0d 04 74 11 6b 65 79  |key_press..t.key|
00000a10  3d 62 6c 6f 63 6b 25 21  32 34 0d 04 7e 19 77 69  |=block%!24..~.wi|
00000a20  6e 64 6f 77 5f 68 61 6e  64 6c 65 3d 21 62 6c 6f  |ndow_handle=!blo|
00000a30  63 6b 25 0d 04 88 18 69  63 6f 6e 5f 68 61 6e 64  |ck%....icon_hand|
00000a40  6c 65 3d 62 6c 6f 63 6b  25 21 34 0d 04 92 0c c8  |le=block%!4.....|
00000a50  8e 20 6b 65 79 20 ca 0d  04 9c 14 20 20 c9 20 31  |. key .....  . 1|
00000a60  33 20 20 3a f2 72 65 74  75 72 6e 0d 04 a6 1f 20  |3  :.return.... |
00000a70  20 7f 3a c8 99 22 57 69  6d 70 5f 50 72 6f 63 65  | .:.."Wimp_Proce|
00000a80  73 73 4b 65 79 22 2c 6b  65 79 0d 04 b0 05 cb 0d  |ssKey",key......|
00000a90  04 ba 05 e1 0d 04 c4 04  0d 04 ce 0c dd f2 72 65  |..............re|
00000aa0  74 75 72 6e 0d 04 d8 16  c8 8e 20 77 69 6e 64 6f  |turn...... windo|
00000ab0  77 5f 68 61 6e 64 6c 65  20 ca 0d 04 e2 23 20 20  |w_handle ....#  |
00000ac0  c9 20 63 72 6d 65 5f 68  61 6e 64 6c 65 3a f2 65  |. crme_handle:.e|
00000ad0  6e 64 5f 61 6c 74 65 72  5f 6d 65 6e 75 0d 04 ec  |nd_alter_menu...|
00000ae0  23 20 20 c9 20 69 74 69  6e 5f 68 61 6e 64 6c 65  |#  . itin_handle|
00000af0  3a f2 65 6e 64 5f 61 6c  74 65 72 5f 69 74 65 6d  |:.end_alter_item|
00000b00  0d 04 f6 29 20 20 c9 20  73 61 76 65 5f 68 61 6e  |...)  . save_han|
00000b10  64 6c 65 3a e7 20 6b 65  79 3d 31 33 20 8c 20 f2  |dle:. key=13 . .|
00000b20  71 75 69 63 6b 73 61 76  65 0d 05 00 05 cb 0d 05  |quicksave.......|
00000b30  0a 05 e1 0d 05 14 04 0d  05 1e 14 dd f2 6d 65 6e  |.............men|
00000b40  75 5f 73 65 6c 65 63 74  69 6f 6e 0d 05 28 1b 6f  |u_selection..(.o|
00000b50  70 74 69 6f 6e 24 3d a4  77 68 61 74 5f 73 65 6c  |ption$=.what_sel|
00000b60  65 63 74 69 6f 6e 0d 05  32 10 c8 8e 20 6f 70 74  |ection..2... opt|
00000b70  69 6f 6e 24 20 ca 0d 05  3c 1b 20 20 c9 20 22 31  |ion$ ...<.  . "1|
00000b80  2e 43 6c 65 61 72 22 3a  f2 63 6c 65 61 72 5f 69  |.Clear":.clear_i|
00000b90  74 0d 05 46 1e 20 20 c9  20 22 31 2e 51 75 69 74  |t..F.  . "1.Quit|
00000ba0  22 3a f2 71 75 69 74 5f  70 72 6f 67 72 61 6d 0d  |":.quit_program.|
00000bb0  05 50 22 20 20 c9 20 22  31 2e 43 6f 70 79 20 66  |.P"  . "1.Copy f|
00000bc0  69 6c 65 73 22 3a f2 63  6f 70 79 5f 66 69 6c 65  |iles":.copy_file|
00000bd0  73 0d 05 5a 1e 20 20 c9  20 22 32 2e 4e 65 77 20  |s..Z.  . "2.New |
00000be0  6d 65 6e 75 22 3a f2 6e  65 77 5f 6d 65 6e 75 0d  |menu":.new_menu.|
00000bf0  05 64 29 20 20 c9 20 22  33 2e 4d 61 69 6e 20 6d  |.d)  . "3.Main m|
00000c00  65 6e 75 20 69 74 65 6d  22 3a f2 6d 61 69 6e 6d  |enu item":.mainm|
00000c10  65 6e 75 5f 69 74 65 6d  0d 05 6e 26 20 20 c9 20  |enu_item..n&  . |
00000c20  22 33 2e 53 75 62 6d 65  6e 75 20 69 74 65 6d 22  |"3.Submenu item"|
00000c30  3a f2 73 75 62 6d 65 6e  75 5f 69 74 65 6d 0d 05  |:.submenu_item..|
00000c40  78 05 cb 0d 05 82 33 e7  20 6f 73 5f 6d 65 6e 75  |x.....3. os_menu|
00000c50  3d 32 20 80 20 c2 6f 70  74 69 6f 6e 24 2c 36 29  |=2 . .option$,6)|
00000c60  3d 22 44 65 6c 65 74 65  22 3a f2 64 65 6c 65 74  |="Delete":.delet|
00000c70  65 5f 6d 65 6e 75 0d 05  8c 30 e7 20 6f 73 5f 6d  |e_menu...0. os_m|
00000c80  65 6e 75 3d 32 20 80 20  c2 6f 70 74 69 6f 6e 24  |enu=2 . .option$|
00000c90  2c 34 29 3d 22 74 79 70  65 22 3a f2 61 6c 74 65  |,4)="type":.alte|
00000ca0  72 5f 6d 65 6e 75 0d 05  96 33 e7 20 6f 73 5f 6d  |r_menu...3. os_m|
00000cb0  65 6e 75 3d 33 20 80 20  c2 6f 70 74 69 6f 6e 24  |enu=3 . .option$|
00000cc0  2c 36 29 3d 22 44 65 6c  65 74 65 22 3a f2 64 65  |,6)="Delete":.de|
00000cd0  6c 65 74 65 5f 69 74 65  6d 0d 05 a0 30 e7 20 6f  |lete_item...0. o|
00000ce0  73 5f 6d 65 6e 75 3d 33  20 80 20 c2 6f 70 74 69  |s_menu=3 . .opti|
00000cf0  6f 6e 24 2c 34 29 3d 22  69 6e 66 6f 22 3a f2 61  |on$,4)="info":.a|
00000d00  6c 74 65 72 5f 69 74 65  6d 0d 05 aa 32 e7 20 6f  |lter_item...2. o|
00000d10  73 5f 6d 65 6e 75 3d 33  20 80 20 c2 6f 70 74 69  |s_menu=3 . .opti|
00000d20  6f 6e 24 2c 34 29 3d 22  6d 65 6e 75 22 3a f2 6d  |on$,4)="menu":.m|
00000d30  61 6b 65 5f 73 75 62 6d  65 6e 75 0d 05 b4 05 e1  |ake_submenu.....|
00000d40  0d 05 be 04 0d 05 c8 10  dd f2 63 6c 69 63 6b 5f  |..........click_|
00000d50  69 63 6f 6e 0d 05 d2 1e  78 70 6f 73 3d 21 62 6c  |icon....xpos=!bl|
00000d60  6f 63 6b 25 3a 79 70 6f  73 3d 62 6c 6f 63 6b 25  |ock%:ypos=block%|
00000d70  21 34 0d 05 dc 33 62 75  74 74 6f 6e 3d 62 6c 6f  |!4...3button=blo|
00000d80  63 6b 25 21 38 3a 77 69  6e 64 6f 77 3d 62 6c 6f  |ck%!8:window=blo|
00000d90  63 6b 25 21 31 32 3a 69  63 6f 6e 3d 62 6c 6f 63  |ck%!12:icon=bloc|
00000da0  6b 25 21 31 36 0d 05 e6  0f c8 8e 20 77 69 6e 64  |k%!16...... wind|
00000db0  6f 77 20 ca 0d 05 f0 23  20 20 c9 20 2d 32 20 20  |ow ....#  . -2  |
00000dc0  20 20 20 20 20 20 20 3a  f2 69 63 6f 6e 5f 62 61  |       :.icon_ba|
00000dd0  72 5f 63 6c 69 63 6b 0d  05 fa 1f 20 20 c9 20 6c  |r_click....  . l|
00000de0  69 73 74 5f 68 61 6e 64  6c 65 3a f2 6c 69 73 74  |ist_handle:.list|
00000df0  5f 63 6c 69 63 6b 0d 06  04 21 20 20 c9 20 68 61  |_click...!  . ha|
00000e00  6e 64 6c 65 20 20 20 20  20 3a f2 68 61 6e 64 6c  |ndle     :.handl|
00000e10  65 5f 63 6c 69 63 6b 0d  06 0e 1f 20 20 c9 20 63  |e_click....  . c|
00000e20  72 6d 65 5f 68 61 6e 64  6c 65 3a f2 63 72 6d 65  |rme_handle:.crme|
00000e30  5f 63 6c 69 63 6b 0d 06  18 1f 20 20 c9 20 69 74  |_click....  . it|
00000e40  69 6e 5f 68 61 6e 64 6c  65 3a f2 69 74 69 6e 5f  |in_handle:.itin_|
00000e50  63 6c 69 63 6b 0d 06 22  24 20 20 c9 20 73 61 76  |click.."$  . sav|
00000e60  65 5f 68 61 6e 64 6c 65  3a f2 73 61 76 65 5f 66  |e_handle:.save_f|
00000e70  69 6c 65 5f 63 6c 69 63  6b 0d 06 2c 05 cb 0d 06  |ile_click..,....|
00000e80  36 2e 62 6c 6f 63 6b 25  21 31 32 3d 77 69 6e 64  |6.block%!12=wind|
00000e90  6f 77 3a 62 6c 6f 63 6b  25 21 31 36 3d 69 63 6f  |ow:block%!16=ico|
00000ea0  6e 3a 62 6c 6f 63 6b 25  21 38 3d 30 0d 06 40 05  |n:block%!8=0..@.|
00000eb0  e1 0d 06 4a 04 0d 06 54  14 dd f2 69 63 6f 6e 5f  |...J...T...icon_|
00000ec0  62 61 72 5f 63 6c 69 63  6b 0d 06 5e 0f c8 8e 20  |bar_click..^... |
00000ed0  62 75 74 74 6f 6e 20 ca  0d 06 68 19 20 20 c9 20  |button ...h.  . |
00000ee0  34 3a f2 6f 70 65 6e 5f  69 62 5f 77 69 6e 64 6f  |4:.open_ib_windo|
00000ef0  77 0d 06 72 43 20 20 c9  20 32 3a 6f 73 5f 6d 65  |w..rC  . 2:os_me|
00000f00  6e 75 3d 31 3a f2 73 68  6f 77 6d 65 6e 75 28 69  |nu=1:.showmenu(i|
00000f10  63 6f 6e 5f 6d 65 6e 75  2c 21 62 6c 6f 63 6b 25  |con_menu,!block%|
00000f20  2d 36 34 2c 31 34 30 2b  28 6e 6f 5f 6d 6d 64 2a  |-64,140+(no_mmd*|
00000f30  34 34 29 29 0d 06 7c 05  cb 0d 06 86 05 e1 0d 06  |44))..|.........|
00000f40  90 04 0d 06 9a 13 dd f2  65 6e 64 5f 75 73 65 72  |........end_user|
00000f50  5f 64 72 61 67 0d 06 a4  1e 6d 69 6e 78 3d 21 62  |_drag....minx=!b|
00000f60  6c 6f 63 6b 25 3a 6d 69  6e 79 3d 62 6c 6f 63 6b  |lock%:miny=block|
00000f70  25 21 34 0d 06 ae 20 6d  61 78 78 3d 62 6c 6f 63  |%!4... maxx=bloc|
00000f80  6b 25 21 38 3a 6d 61 78  79 3d 62 6c 6f 63 6b 25  |k%!8:maxy=block%|
00000f90  21 31 32 0d 06 b8 23 c8  99 22 57 69 6d 70 5f 47  |!12...#.."Wimp_G|
00000fa0  65 74 50 6f 69 6e 74 65  72 49 6e 66 6f 22 2c 2c  |etPointerInfo",,|
00000fb0  62 6c 6f 63 6b 25 0d 06  c2 19 64 65 73 74 69 6e  |block%....destin|
00000fc0  61 74 69 6f 6e 3d 62 6c  6f 63 6b 25 21 31 32 0d  |ation=block%!12.|
00000fd0  06 cc 12 69 63 6f 6e 3d  62 6c 6f 63 6b 25 21 31  |...icon=block%!1|
00000fe0  36 0d 06 d6 15 c8 8e 20  63 75 72 72 65 6e 74 5f  |6...... current_|
00000ff0  64 72 61 67 20 ca 0d 06  e0 15 20 20 c9 20 31 3a  |drag .....  . 1:|
00001000  f2 73 74 61 72 74 5f 73  61 76 65 0d 06 ea 16 20  |.start_save.... |
00001010  20 c9 20 32 3a f2 6d 6f  76 65 5f 6f 70 74 69 6f  | . 2:.move_optio|
00001020  6e 0d 06 f4 05 cb 0d 06  fe 05 e1 0d 07 08 04 0d  |n...............|
00001030  07 12 10 dd f2 73 74 61  72 74 5f 73 61 76 65 0d  |.....start_save.|
00001040  07 1c 2d 62 6c 6f 63 6b  25 21 32 30 3d 64 65 73  |..-block%!20=des|
00001050  74 69 6e 61 74 69 6f 6e  3a 62 6c 6f 63 6b 25 21  |tination:block%!|
00001060  32 34 3d 62 6c 6f 63 6b  25 21 31 36 0d 07 26 28  |24=block%!16..&(|
00001070  62 6c 6f 63 6b 25 21 32  38 3d 21 62 6c 6f 63 6b  |block%!28=!block|
00001080  25 3a 62 6c 6f 63 6b 25  21 33 32 3d 62 6c 6f 63  |%:block%!32=bloc|
00001090  6b 25 21 34 0d 07 30 22  62 6c 6f 63 6b 25 21 33  |k%!4..0"block%!3|
000010a0  36 3d 28 31 32 2a 31 30  32 34 29 3a 21 62 6c 6f  |6=(12*1024):!blo|
000010b0  63 6b 25 3d 36 34 0d 07  3a 2b 62 6c 6f 63 6b 25  |ck%=64..:+block%|
000010c0  21 31 32 3d 30 3a 62 6c  6f 63 6b 25 21 31 36 3d  |!12=0:block%!16=|
000010d0  31 3a 62 6c 6f 63 6b 25  21 34 30 3d 26 32 30 30  |1:block%!40=&200|
000010e0  30 0d 07 44 28 66 69 6c  65 24 3d a4 67 65 74 5f  |0..D(file$=.get_|
000010f0  69 6e 64 69 72 65 63 74  65 64 28 73 61 76 65 5f  |indirected(save_|
00001100  68 61 6e 64 6c 65 2c 31  29 0d 07 4e 19 6c 65 61  |handle,1)..N.lea|
00001110  66 24 3d a4 67 65 74 6c  65 61 66 28 66 69 6c 65  |f$=.getleaf(file|
00001120  24 29 0d 07 58 26 e7 20  c0 6c 65 61 66 24 2c 31  |$)..X&. .leaf$,1|
00001130  29 3c 3e 22 21 22 20 8c  20 6c 65 61 66 24 3d 22  |)<>"!" . leaf$="|
00001140  21 22 2b 6c 65 61 66 24  0d 07 62 16 24 28 62 6c  |!"+leaf$..b.$(bl|
00001150  6f 63 6b 25 2b 34 34 29  3d 6c 65 61 66 24 0d 07  |ock%+44)=leaf$..|
00001160  6c 38 c8 99 22 57 69 6d  70 5f 53 65 6e 64 4d 65  |l8.."Wimp_SendMe|
00001170  73 73 61 67 65 22 2c 31  38 2c 62 6c 6f 63 6b 25  |ssage",18,block%|
00001180  2c 64 65 73 74 69 6e 61  74 69 6f 6e 2c 62 6c 6f  |,destination,blo|
00001190  63 6b 25 21 32 34 0d 07  76 05 e1 0d 07 80 04 0d  |ck%!24..v.......|
000011a0  07 8a 48 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..H. -----------|
000011b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000011e0  2d 2d 2d 2d 2d 2d 2d 0d  07 94 04 0d 07 9e 10 dd  |-------.........|
000011f0  f2 63 72 6d 65 5f 63 6c  69 63 6b 0d 07 a8 0d c8  |.crme_click.....|
00001200  8e 20 69 63 6f 6e 20 ca  0d 07 b2 19 20 20 c9 20  |. icon .....  . |
00001210  36 3a f2 65 6e 64 5f 61  6c 74 65 72 5f 6d 65 6e  |6:.end_alter_men|
00001220  75 0d 07 bc 24 20 20 c9  20 38 3a f2 63 6c 6f 73  |u...$  . 8:.clos|
00001230  65 5f 77 69 6e 64 6f 77  28 63 72 6d 65 5f 68 61  |e_window(crme_ha|
00001240  6e 64 6c 65 29 0d 07 c6  05 cb 0d 07 d0 05 e1 0d  |ndle)...........|
00001250  07 da 04 0d 07 e4 15 dd  f2 73 61 76 65 5f 66 69  |.........save_fi|
00001260  6c 65 5f 63 6c 69 63 6b  0d 07 ee 0d c8 8e 20 69  |le_click...... i|
00001270  63 6f 6e 20 ca 0d 07 f8  20 20 20 c9 20 30 3a e7  |con ....   . 0:.|
00001280  20 62 75 74 74 6f 6e 20  80 20 36 34 20 f2 64 72  | button . 64 .dr|
00001290  61 67 62 6f 78 0d 08 02  21 20 20 c9 20 32 3a e7  |agbox...!  . 2:.|
000012a0  20 62 75 74 74 6f 6e 20  80 20 35 20 f2 71 75 69  | button . 5 .qui|
000012b0  63 6b 73 61 76 65 0d 08  0c 05 cb 0d 08 16 05 e1  |cksave..........|
000012c0  0d 08 20 04 0d 08 2a 10  dd f2 69 74 69 6e 5f 63  |.. ...*...itin_c|
000012d0  6c 69 63 6b 0d 08 34 0d  c8 8e 20 69 63 6f 6e 20  |lick..4... icon |
000012e0  ca 0d 08 3e 24 20 20 c9  20 39 3a f2 63 6c 6f 73  |...>$  . 9:.clos|
000012f0  65 5f 77 69 6e 64 6f 77  28 69 74 69 6e 5f 68 61  |e_window(itin_ha|
00001300  6e 64 6c 65 29 0d 08 48  1a 20 20 c9 20 31 30 3a  |ndle)..H.  . 10:|
00001310  f2 65 6e 64 5f 61 6c 74  65 72 5f 69 74 65 6d 0d  |.end_alter_item.|
00001320  08 52 05 cb 0d 08 5c 05  e1 0d 08 66 04 0d 08 70  |.R....\....f...p|
00001330  10 dd f2 6c 69 73 74 5f  63 6c 69 63 6b 0d 08 7a  |...list_click..z|
00001340  0f c8 8e 20 62 75 74 74  6f 6e 20 ca 0d 08 84 33  |... button ....3|
00001350  20 20 c9 20 34 3a e7 20  6d 6e 61 6d 65 24 28 69  |  . 4:. mname$(i|
00001360  63 6f 6e 29 3c 3e 22 22  20 8c 20 f2 73 65 6c 65  |con)<>"" . .sele|
00001370  63 74 5f 63 75 72 72 65  6e 74 5f 6d 65 6e 75 0d  |ct_current_menu.|
00001380  08 8e 14 20 20 c9 20 32  3a f2 6c 69 73 74 5f 6d  |...  . 2:.list_m|
00001390  65 6e 75 0d 08 98 05 cb  0d 08 a2 05 e1 0d 08 ac  |enu.............|
000013a0  04 0d 08 b6 12 dd f2 68  61 6e 64 6c 65 5f 63 6c  |.......handle_cl|
000013b0  69 63 6b 0d 08 c0 08 64  73 3d a3 0d 08 ca 0f c8  |ick....ds=......|
000013c0  8e 20 62 75 74 74 6f 6e  20 ca 0d 08 d4 1f 20 20  |. button .....  |
000013d0  c9 20 34 3a f2 63 6c 69  63 6b 65 64 5f 6f 6e 5f  |. 4:.clicked_on_|
000013e0  69 63 6f 6e 3a 64 73 3d  b9 0d 08 de 1b 20 20 c9  |icon:ds=.....  .|
000013f0  20 32 3a f2 68 61 6e 64  6c 65 5f 6d 65 6e 75 3a  | 2:.handle_menu:|
00001400  64 73 3d b9 0d 08 e8 05  cb 0d 08 f2 0a e7 20 64  |ds=........... d|
00001410  73 20 e1 0d 08 fc 36 e7  20 69 63 6f 6e 3e 3d 31  |s ....6. icon>=1|
00001420  38 20 80 20 69 63 6f 6e  3c 3d 33 35 20 80 20 28  |8 . icon<=35 . (|
00001430  62 75 74 74 6f 6e 20 80  20 36 34 29 20 f2 64 72  |button . 64) .dr|
00001440  61 67 5f 6f 70 74 69 6f  6e 0d 09 06 05 e1 0d 09  |ag_option.......|
00001450  10 04 0d 09 1a 12 dd f2  71 75 69 74 5f 70 72 6f  |........quit_pro|
00001460  67 72 61 6d 0d 09 24 10  e7 20 6d 6f 64 69 66 69  |gram..$.. modifi|
00001470  65 64 20 8c 0d 09 2e 18  20 20 f2 73 79 73 74 65  |ed .....  .syste|
00001480  6d 5f 65 72 72 6f 72 28  31 2c 33 29 0d 09 38 1a  |m_error(1,3)..8.|
00001490  20 20 e7 20 75 73 65 72  5f 72 65 73 70 6f 6e 73  |  . user_respons|
000014a0  65 3c 3e 31 20 e1 0d 09  42 05 cd 0d 09 4c 0d f2  |e<>1 ...B....L..|
000014b0  73 68 75 74 64 6f 77 6e  0d 09 56 05 e1 0d 09 60  |shutdown..V....`|
000014c0  04 0d 09 6a 0e dd f2 64  61 74 61 73 61 76 65 0d  |...j...datasave.|
000014d0  09 74 35 f2 73 65 74 5f  69 6e 64 69 72 65 63 74  |.t5.set_indirect|
000014e0  65 64 28 73 61 76 65 5f  68 61 6e 64 6c 65 2c 31  |ed(save_handle,1|
000014f0  2c a4 73 74 72 69 6e 67  28 62 6c 6f 63 6b 25 2b  |,.string(block%+|
00001500  34 34 29 29 0d 09 7e 0c  f2 73 61 76 65 5f 69 74  |44))..~..save_it|
00001510  0d 09 88 2e 62 6c 6f 63  6b 25 21 31 32 3d 62 6c  |....block%!12=bl|
00001520  6f 63 6b 25 21 38 3a 62  6c 6f 63 6b 25 21 31 36  |ock%!8:block%!16|
00001530  3d 33 3a 21 62 6c 6f 63  6b 25 3d 32 35 36 0d 09  |=3:!block%=256..|
00001540  92 36 c8 99 22 57 69 6d  70 5f 53 65 6e 64 4d 65  |.6.."Wimp_SendMe|
00001550  73 73 61 67 65 22 2c 31  38 2c 62 6c 6f 63 6b 25  |ssage",18,block%|
00001560  2c 62 6c 6f 63 6b 25 21  32 30 2c 62 6c 6f 63 6b  |,block%!20,block|
00001570  25 21 32 34 0d 09 9c 05  e1 0d 09 a6 04 0d 09 b0  |%!24............|
00001580  0e dd f2 64 61 74 61 6c  6f 61 64 0d 09 ba 34 66  |...dataload...4f|
00001590  69 6c 65 74 79 70 65 3d  62 6c 6f 63 6b 25 21 34  |iletype=block%!4|
000015a0  30 3a 66 69 6c 65 24 3d  a4 7a 65 72 6f 5f 73 74  |0:file$=.zero_st|
000015b0  72 69 6e 67 28 62 6c 6f  63 6b 25 2b 34 34 29 0d  |ring(block%+44).|
000015c0  09 c4 23 77 69 6e 64 6f  77 3d 62 6c 6f 63 6b 25  |..#window=block%|
000015d0  21 32 30 3a 69 63 6f 6e  3d 62 6c 6f 63 6b 25 21  |!20:icon=block%!|
000015e0  32 34 0d 09 ce 0f c8 8e  20 77 69 6e 64 6f 77 20  |24...... window |
000015f0  ca 0d 09 d8 19 20 20 c9  20 2d 32 3a f2 69 63 6f  |.....  . -2:.ico|
00001600  6e 5f 62 61 72 5f 64 72  61 67 0d 09 e2 1d 20 20  |n_bar_drag....  |
00001610  c9 20 68 61 6e 64 6c 65  3a f2 61 64 64 5f 6d 65  |. handle:.add_me|
00001620  6e 75 5f 64 72 61 67 0d  09 ec 1e 20 20 c9 20 63  |nu_drag....  . c|
00001630  6f 70 79 5f 68 61 6e 64  6c 65 3a f2 63 6f 70 79  |opy_handle:.copy|
00001640  5f 66 69 6c 65 0d 09 f6  05 cb 0d 0a 00 05 e1 0d  |_file...........|
00001650  0a 0a 04 0d 0a 14 13 dd  f2 69 63 6f 6e 5f 62 61  |.........icon_ba|
00001660  72 5f 64 72 61 67 0d 0a  1e 23 e7 20 66 69 6c 65  |r_drag...#. file|
00001670  74 79 70 65 3c 3e 26 32  30 30 30 20 f2 65 72 72  |type<>&2000 .err|
00001680  6f 72 28 32 2c 31 29 3a  e1 0d 0a 28 0e f2 6c 6f  |or(2,1):...(..lo|
00001690  61 64 5f 66 69 6c 65 0d  0a 32 05 e1 0d 0a 3c 04  |ad_file..2....<.|
000016a0  0d 0a 46 13 dd f2 61 64  64 5f 6d 65 6e 75 5f 64  |..F...add_menu_d|
000016b0  72 61 67 0d 0a 50 1e f2  63 6c 6f 73 65 5f 77 69  |rag..P..close_wi|
000016c0  6e 64 6f 77 28 69 74 69  6e 5f 68 61 6e 64 6c 65  |ndow(itin_handle|
000016d0  29 0d 0a 5a 0e 6d 6f 64  69 66 69 65 64 3d b9 0d  |)..Z.modified=..|
000016e0  0a 64 22 6e 65 77 70 6f  73 3d 6e 6f 5f 6f 70 74  |.d"newpos=no_opt|
000016f0  73 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 29 2b  |s(current_menu)+|
00001700  31 0d 0a 6e 19 e7 20 6e  65 77 70 6f 73 3d 32 35  |1..n.. newpos=25|
00001710  36 20 6e 65 77 70 6f 73  3d 30 0d 0a 78 11 e7 20  |6 newpos=0..x.. |
00001720  6e 65 77 70 6f 73 3e 31  37 20 8c 0d 0a 82 11 20  |newpos>17 ..... |
00001730  20 f2 65 72 72 6f 72 28  33 2c 31 29 0d 0a 8c 07  | .error(3,1)....|
00001740  20 20 e1 0d 0a 96 05 cd  0d 0a a0 42 6e 6f 5f 6f  |  .........Bno_o|
00001750  70 74 73 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |pts(current_menu|
00001760  29 3d 6e 65 77 70 6f 73  3a 66 6e 61 6d 65 24 28  |)=newpos:fname$(|
00001770  63 75 72 72 65 6e 74 5f  6d 65 6e 75 2c 6e 65 77  |current_menu,new|
00001780  70 6f 73 29 3d 66 69 6c  65 24 0d 0a aa 4f 74 65  |pos)=file$...Ote|
00001790  78 74 24 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |xt$(current_menu|
000017a0  2c 6e 65 77 70 6f 73 29  3d a4 66 69 6c 65 28 66  |,newpos)=.file(f|
000017b0  69 6c 65 24 29 3a 66 74  79 70 65 28 63 75 72 72  |ile$):ftype(curr|
000017c0  65 6e 74 5f 6d 65 6e 75  2c 6e 65 77 70 6f 73 29  |ent_menu,newpos)|
000017d0  3d 66 69 6c 65 74 79 70  65 0d 0a b4 09 61 63 74  |=filetype....act|
000017e0  3d 31 0d 0a be 11 c8 8e  20 66 69 6c 65 74 79 70  |=1...... filetyp|
000017f0  65 20 ca 0d 0a c8 3c 20  20 c9 20 26 31 30 30 30  |e ....<  . &1000|
00001800  3a 73 70 72 69 74 65 24  28 63 75 72 72 65 6e 74  |:sprite$(current|
00001810  5f 6d 65 6e 75 2c 6e 65  77 70 6f 73 29 3d 22 64  |_menu,newpos)="d|
00001820  69 72 65 63 74 6f 72 79  22 3a 61 63 74 3d 32 0d  |irectory":act=2.|
00001830  0a d2 4b 20 20 c9 20 26  32 30 30 30 3a 73 70 72  |..K  . &2000:spr|
00001840  69 74 65 24 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |ite$(current_men|
00001850  75 2c 6e 65 77 70 6f 73  29 3d 74 65 78 74 24 28  |u,newpos)=text$(|
00001860  63 75 72 72 65 6e 74 5f  6d 65 6e 75 2c 6e 65 77  |current_menu,new|
00001870  70 6f 73 29 3a 61 63 74  3d 33 0d 0a dc 3e 20 20  |pos):act=3...>  |
00001880  7f 3a 20 73 70 72 69 74  65 24 28 63 75 72 72 65  |.: sprite$(curre|
00001890  6e 74 5f 6d 65 6e 75 2c  6e 65 77 70 6f 73 29 3d  |nt_menu,newpos)=|
000018a0  22 66 69 6c 65 5f 22 2b  c3 7e 66 69 6c 65 74 79  |"file_"+.~filety|
000018b0  70 65 3a 61 63 74 3d 33  0d 0a e6 05 cb 0d 0a f0  |pe:act=3........|
000018c0  23 61 63 74 69 6f 6e 28  63 75 72 72 65 6e 74 5f  |#action(current_|
000018d0  6d 65 6e 75 2c 6e 65 77  70 6f 73 29 3d 61 63 74  |menu,newpos)=act|
000018e0  0d 0a fa 13 f2 72 65 64  6f 5f 61 6c 6c 5f 69 63  |.....redo_all_ic|
000018f0  6f 6e 73 0d 0b 04 05 e1  0d 0b 0e 04 0d 0b 18 0f  |ons.............|
00001900  dd a4 66 69 6c 65 28 66  6e 24 29 0d 0b 22 0f 69  |..file(fn$)..".i|
00001910  6e 3d a9 28 66 6e 24 29  2b 31 0d 0b 2c 05 f5 0d  |n=.(fn$)+1..,...|
00001920  0b 36 0b 20 20 69 6e 2d  3d 31 0d 0b 40 14 fd 20  |.6.  in-=1..@.. |
00001930  c1 66 6e 24 2c 69 6e 2c  31 29 3d 22 2e 22 0d 0b  |.fn$,in,1)="."..|
00001940  4a 14 3d c2 66 6e 24 2c  a9 28 66 6e 24 29 2d 69  |J.=.fn$,.(fn$)-i|
00001950  6e 29 0d 0b 54 04 0d 0b  5e 14 dd f2 72 65 64 6f  |n)..T...^...redo|
00001960  5f 61 6c 6c 5f 69 63 6f  6e 73 0d 0b 68 1a 70 6c  |_all_icons..h.pl|
00001970  75 73 3d 31 38 3a 74 6f  3d 31 37 3a 74 69 74 6c  |us=18:to=17:titl|
00001980  65 3d 33 36 0d 0b 72 10  e3 20 69 63 6e 3d 30 20  |e=36..r.. icn=0 |
00001990  b8 20 74 6f 0d 0b 7c 39  20 20 f2 73 65 74 5f 69  |. to..|9  .set_i|
000019a0  6e 64 69 72 65 63 74 65  64 28 68 61 6e 64 6c 65  |ndirected(handle|
000019b0  2c 69 63 6e 2c 74 65 78  74 24 28 63 75 72 72 65  |,icn,text$(curre|
000019c0  6e 74 5f 6d 65 6e 75 2c  69 63 6e 29 29 0d 0b 86  |nt_menu,icn))...|
000019d0  40 20 20 f2 73 65 74 5f  69 6e 64 69 72 65 63 74  |@  .set_indirect|
000019e0  65 64 28 68 61 6e 64 6c  65 2c 69 63 6e 2b 70 6c  |ed(handle,icn+pl|
000019f0  75 73 2c 73 70 72 69 74  65 24 28 63 75 72 72 65  |us,sprite$(curre|
00001a00  6e 74 5f 6d 65 6e 75 2c  69 63 6e 29 29 0d 0b 90  |nt_menu,icn))...|
00001a10  24 20 20 f2 75 6e 73 65  74 5f 62 69 74 28 68 61  |$  .unset_bit(ha|
00001a20  6e 64 6c 65 2c 69 63 6e  2b 70 6c 75 73 2c 32 31  |ndle,icn+plus,21|
00001a30  29 0d 0b 9a 05 ed 0d 0b  a4 36 f2 73 65 74 5f 69  |)........6.set_i|
00001a40  6e 64 69 72 65 63 74 65  64 28 68 61 6e 64 6c 65  |ndirected(handle|
00001a50  2c 74 69 74 6c 65 2c 6d  6e 61 6d 65 24 28 63 75  |,title,mname$(cu|
00001a60  72 72 65 6e 74 5f 6d 65  6e 75 29 29 0d 0b ae 10  |rrent_menu))....|
00001a70  f2 73 69 7a 65 5f 77 69  6e 64 6f 77 0d 0b b8 2e  |.size_window....|
00001a80  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
00001a90  72 61 77 22 2c 68 61 6e  64 6c 65 2c 30 2c 2d 31  |raw",handle,0,-1|
00001aa0  38 30 30 2c 31 32 30 30  2c 30 0d 0b c2 05 e1 0d  |800,1200,0......|
00001ab0  0b cc 04 0d 0b d6 11 dd  f2 73 69 7a 65 5f 77 69  |.........size_wi|
00001ac0  6e 64 6f 77 0d 0b e0 1b  6e 3d 6e 6f 5f 6f 70 74  |ndow....n=no_opt|
00001ad0  73 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 29 0d  |s(current_menu).|
00001ae0  0b ea 10 e7 20 6e 3d 32  35 35 20 6e 3d 2d 31 0d  |.... n=255 n=-1.|
00001af0  0b f4 0f c8 8e 20 68 61  6e 64 6c 65 20 ca 0d 0b  |..... handle ...|
00001b00  fe 1f 20 20 c9 20 74 79  70 31 5f 68 61 6e 64 6c  |..  . typ1_handl|
00001b10  65 3a f2 74 79 70 65 31  5f 73 69 7a 65 0d 0c 08  |e:.type1_size...|
00001b20  1f 20 20 c9 20 74 79 70  32 5f 68 61 6e 64 6c 65  |.  . typ2_handle|
00001b30  3a f2 74 79 70 65 32 5f  73 69 7a 65 0d 0c 12 1f  |:.type2_size....|
00001b40  20 20 c9 20 74 79 70 33  5f 68 61 6e 64 6c 65 3a  |  . typ3_handle:|
00001b50  f2 74 79 70 65 33 5f 73  69 7a 65 0d 0c 1c 05 cb  |.type3_size.....|
00001b60  0d 0c 26 05 e1 0d 0c 30  04 0d 0c 3a 10 dd f2 74  |..&....0...:...t|
00001b70  79 70 65 31 5f 73 69 7a  65 0d 0c 44 1b 6e 2b 3d  |ype1_size..D.n+=|
00001b80  31 3a 78 3d 36 34 30 3a  79 3d 31 36 30 2b 28 6e  |1:x=640:y=160+(n|
00001b90  2a 38 38 29 0d 0c 4e 30  21 62 6c 6f 63 6b 25 3d  |*88)..N0!block%=|
00001ba0  30 3a 62 6c 6f 63 6b 25  21 34 3d 2d 79 3a 62 6c  |0:block%!4=-y:bl|
00001bb0  6f 63 6b 25 21 38 3d 78  3a 62 6c 6f 63 6b 25 21  |ock%!8=x:block%!|
00001bc0  31 32 3d 30 0d 0c 58 24  c8 99 22 57 69 6d 70 5f  |12=0..X$.."Wimp_|
00001bd0  53 65 74 45 78 74 65 6e  74 22 2c 68 61 6e 64 6c  |SetExtent",handl|
00001be0  65 2c 62 6c 6f 63 6b 25  0d 0c 62 1a e7 20 6e 3e  |e,block%..b.. n>|
00001bf0  31 30 20 8c 20 79 3d 31  36 30 2b 28 31 30 2a 38  |10 . y=160+(10*8|
00001c00  38 29 0d 0c 6c 12 21 62  6c 6f 63 6b 25 3d 68 61  |8)..l.!block%=ha|
00001c10  6e 64 6c 65 0d 0c 76 23  c8 99 22 57 69 6d 70 5f  |ndle..v#.."Wimp_|
00001c20  47 65 74 57 69 6e 64 6f  77 53 74 61 74 65 22 2c  |GetWindowState",|
00001c30  2c 62 6c 6f 63 6b 25 0d  0c 80 2d 62 6c 6f 63 6b  |,block%...-block|
00001c40  25 21 31 32 3d 62 6c 6f  63 6b 25 21 34 2b 78 3a  |%!12=block%!4+x:|
00001c50  62 6c 6f 63 6b 25 21 31  36 3d 62 6c 6f 63 6b 25  |block%!16=block%|
00001c60  21 38 2b 79 0d 0c 8a 1f  c8 99 22 57 69 6d 70 5f  |!8+y......"Wimp_|
00001c70  4f 70 65 6e 57 69 6e 64  6f 77 22 2c 2c 62 6c 6f  |OpenWindow",,blo|
00001c80  63 6b 25 0d 0c 94 05 e1  0d 0c 9e 04 0d 0c a8 10  |ck%.............|
00001c90  dd f2 74 79 70 65 32 5f  73 69 7a 65 0d 0c b2 0f  |..type2_size....|
00001ca0  79 3d 28 6e 20 81 20 32  29 2b 31 0d 0c bc 14 e7  |y=(n . 2)+1.....|
00001cb0  20 6e 3e 28 79 2a 32 29  20 8c 20 79 2b 3d 31 0d  | n>(y*2) . y+=1.|
00001cc0  0c c6 17 78 3d 31 30 38  30 3a 79 3d 31 33 32 2b  |...x=1080:y=132+|
00001cd0  28 79 2a 38 38 29 0d 0c  d0 12 21 62 6c 6f 63 6b  |(y*88)....!block|
00001ce0  25 3d 68 61 6e 64 6c 65  0d 0c da 23 c8 99 22 57  |%=handle...#.."W|
00001cf0  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
00001d00  74 65 22 2c 2c 62 6c 6f  63 6b 25 0d 0c e4 2d 62  |te",,block%...-b|
00001d10  6c 6f 63 6b 25 21 31 32  3d 62 6c 6f 63 6b 25 21  |lock%!12=block%!|
00001d20  34 2b 78 3a 62 6c 6f 63  6b 25 21 31 36 3d 62 6c  |4+x:block%!16=bl|
00001d30  6f 63 6b 25 21 38 2b 79  0d 0c ee 1f c8 99 22 57  |ock%!8+y......"W|
00001d40  69 6d 70 5f 4f 70 65 6e  57 69 6e 64 6f 77 22 2c  |imp_OpenWindow",|
00001d50  2c 62 6c 6f 63 6b 25 0d  0c f8 05 e1 0d 0d 02 04  |,block%.........|
00001d60  0d 0d 0c 10 dd f2 74 79  70 65 33 5f 73 69 7a 65  |......type3_size|
00001d70  0d 0d 16 0f 79 3d 28 6e  20 81 20 33 29 2b 31 0d  |....y=(n . 3)+1.|
00001d80  0d 20 14 e7 20 6e 3e 28  79 2a 33 29 20 8c 20 79  |. .. n>(y*3) . y|
00001d90  2b 3d 31 0d 0d 2a 17 78  3d 38 37 32 3a 79 3d 31  |+=1..*.x=872:y=1|
00001da0  32 30 2b 28 79 2a 31 33  32 29 0d 0d 34 12 21 62  |20+(y*132)..4.!b|
00001db0  6c 6f 63 6b 25 3d 68 61  6e 64 6c 65 0d 0d 3e 23  |lock%=handle..>#|
00001dc0  c8 99 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |.."Wimp_GetWindo|
00001dd0  77 53 74 61 74 65 22 2c  2c 62 6c 6f 63 6b 25 0d  |wState",,block%.|
00001de0  0d 48 2d 62 6c 6f 63 6b  25 21 31 32 3d 62 6c 6f  |.H-block%!12=blo|
00001df0  63 6b 25 21 34 2b 78 3a  62 6c 6f 63 6b 25 21 31  |ck%!4+x:block%!1|
00001e00  36 3d 62 6c 6f 63 6b 25  21 38 2b 79 0d 0d 52 1f  |6=block%!8+y..R.|
00001e10  c8 99 22 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |.."Wimp_OpenWind|
00001e20  6f 77 22 2c 2c 62 6c 6f  63 6b 25 0d 0d 5c 05 e1  |ow",,block%..\..|
00001e30  0d 0d 66 04 0d 0d 70 0f  dd f2 6c 69 73 74 5f 6d  |..f...p...list_m|
00001e40  65 6e 75 0d 0d 7a 0d 6f  73 5f 6d 65 6e 75 3d 32  |enu..z.os_menu=2|
00001e50  0d 0d 84 42 e7 20 69 63  6f 6e 3e 3d 30 20 80 20  |...B. icon>=0 . |
00001e60  69 63 6f 6e 3c 3d 32 30  20 8c 20 77 6d 5f 64 61  |icon<=20 . wm_da|
00001e70  74 61 24 28 32 2c 32 29  3d 22 4d 65 6e 75 20 27  |ta$(2,2)="Menu '|
00001e80  22 2b 6d 6e 61 6d 65 24  28 69 63 6f 6e 29 2b 22  |"+mname$(icon)+"|
00001e90  27 22 0d 0d 8e 11 f2 6d  61 6b 65 5f 6d 65 6e 75  |'".....make_menu|
00001ea0  28 32 29 0d 0d 98 2e e7  20 c2 77 6d 5f 64 61 74  |(2)..... .wm_dat|
00001eb0  61 24 28 32 2c 32 29 2c  32 29 3d 22 27 27 22 20  |a$(2,2),2)="''" |
00001ec0  8c 20 f2 67 72 65 79 5f  69 74 65 6d 28 32 2c 32  |. .grey_item(2,2|
00001ed0  29 0d 0d a2 2d f2 73 68  6f 77 6d 65 6e 75 28 6d  |)...-.showmenu(m|
00001ee0  65 6e 75 73 5f 6d 65 6e  75 2c 21 62 6c 6f 63 6b  |enus_menu,!block|
00001ef0  25 2d 36 34 2c 62 6c 6f  63 6b 25 21 34 29 0d 0d  |%-64,block%!4)..|
00001f00  ac 05 e1 0d 0d b6 04 0d  0d c0 11 dd f2 68 61 6e  |.............han|
00001f10  64 6c 65 5f 6d 65 6e 75  0d 0d ca 1c 69 74 65 6d  |dle_menu....item|
00001f20  3d a4 69 63 6f 6e 5f 74  6f 5f 69 74 65 6d 28 69  |=.icon_to_item(i|
00001f30  63 6f 6e 29 0d 0d d4 0d  6f 73 5f 6d 65 6e 75 3d  |con)....os_menu=|
00001f40  33 0d 0d de 10 69 74 24  3d 22 49 74 65 6d 20 27  |3....it$="Item '|
00001f50  22 0d 0d e8 1a e7 20 69  74 65 6d 3e 3d 30 20 80  |"..... item>=0 .|
00001f60  20 69 74 65 6d 3c 3d 34  30 20 8c 0d 0d f2 2a 20  | item<=40 ....* |
00001f70  20 69 74 24 3d 69 74 24  2b 74 65 78 74 24 28 63  | it$=it$+text$(c|
00001f80  75 72 72 65 6e 74 5f 6d  65 6e 75 2c 69 74 65 6d  |urrent_menu,item|
00001f90  29 2b 22 27 22 0d 0d fc  05 cc 0d 0e 06 0e 20 20  |)+"'".........  |
00001fa0  69 74 24 2b 3d 22 27 22  0d 0e 10 05 cd 0d 0e 1a  |it$+="'"........|
00001fb0  15 77 6d 5f 64 61 74 61  24 28 33 2c 31 29 3d 69  |.wm_data$(3,1)=i|
00001fc0  74 24 0d 0e 24 11 f2 6d  61 6b 65 5f 6d 65 6e 75  |t$..$..make_menu|
00001fd0  28 33 29 0d 0e 2e 24 e7  20 c2 69 74 24 2c 32 29  |(3)...$. .it$,2)|
00001fe0  3d 22 27 27 22 20 8c 20  f2 67 72 65 79 5f 69 74  |="''" . .grey_it|
00001ff0  65 6d 28 33 2c 31 29 0d  0e 38 2d f2 73 68 6f 77  |em(3,1)..8-.show|
00002000  6d 65 6e 75 28 69 74 65  6d 73 5f 6d 65 6e 75 2c  |menu(items_menu,|
00002010  21 62 6c 6f 63 6b 25 2d  36 34 2c 62 6c 6f 63 6b  |!block%-64,block|
00002020  25 21 34 29 0d 0e 42 05  e1 0d 0e 4c 04 0d 0e 56  |%!4)..B....L...V|
00002030  14 dd f2 6f 70 65 6e 5f  69 62 5f 77 69 6e 64 6f  |...open_ib_windo|
00002040  77 0d 0e 60 1d f2 6f 70  65 6e 5f 77 69 6e 64 6f  |w..`..open_windo|
00002050  77 28 6c 69 73 74 5f 68  61 6e 64 6c 65 29 0d 0e  |w(list_handle)..|
00002060  6a 10 f2 72 65 64 72 61  77 5f 6c 69 73 74 0d 0e  |j..redraw_list..|
00002070  74 13 f2 72 65 64 6f 5f  61 6c 6c 5f 69 63 6f 6e  |t..redo_all_icon|
00002080  73 0d 0e 7e 05 e1 0d 0e  88 04 0d 0e 92 11 dd f2  |s..~............|
00002090  64 65 6c 65 74 65 5f 6d  65 6e 75 0d 0e 9c 1c e7  |delete_menu.....|
000020a0  20 69 63 6f 6e 3d 30 20  8c 20 f2 65 72 72 6f 72  | icon=0 . .error|
000020b0  28 34 2c 31 29 3a e1 0d  0e a6 49 65 72 72 6f 72  |(4,1):....Ierror|
000020c0  24 3d 22 41 72 65 20 79  6f 75 20 73 75 72 65 20  |$="Are you sure |
000020d0  79 6f 75 20 77 61 6e 74  20 74 6f 20 64 65 6c 65  |you want to dele|
000020e0  74 65 20 74 68 65 20 6d  65 6e 75 20 27 22 2b 6d  |te the menu '"+m|
000020f0  6e 61 6d 65 24 28 69 63  6f 6e 29 2b 22 27 3f 22  |name$(icon)+"'?"|
00002100  0d 0e b0 1b f2 72 65 70  6f 72 74 5f 65 72 72 6f  |.....report_erro|
00002110  72 28 65 72 72 6f 72 24  2c 33 29 0d 0e ba 17 e7  |r(error$,3).....|
00002120  20 75 73 65 72 5f 72 65  73 70 6f 6e 73 65 3d 32  | user_response=2|
00002130  20 e1 0d 0e c4 0e 6d 6f  64 69 66 69 65 64 3d b9  | .....modified=.|
00002140  0d 0e ce 19 e7 20 69 63  6f 6e 3d 63 75 72 72 65  |..... icon=curre|
00002150  6e 74 5f 6d 65 6e 75 20  8c 0d 0e d8 14 20 20 63  |nt_menu .....  c|
00002160  75 72 72 65 6e 74 5f 6d  65 6e 75 3d 30 0d 0e e2  |urrent_menu=0...|
00002170  1b 20 20 f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  |.  .close_window|
00002180  28 68 61 6e 64 6c 65 29  0d 0e ec 05 cd 0d 0e f6  |(handle)........|
00002190  14 e3 20 6c 6f 6f 70 3d  69 63 6f 6e 20 b8 20 31  |.. loop=icon . 1|
000021a0  38 0d 0f 00 23 20 20 6e  6f 5f 6f 70 74 73 28 6c  |8...#  no_opts(l|
000021b0  6f 6f 70 29 3d 6e 6f 5f  6f 70 74 73 28 6c 6f 6f  |oop)=no_opts(loo|
000021c0  70 2b 31 29 0d 0f 0a 1d  20 20 74 79 70 65 28 6c  |p+1)....  type(l|
000021d0  6f 6f 70 29 3d 74 79 70  65 28 6c 6f 6f 70 2b 31  |oop)=type(loop+1|
000021e0  29 0d 0f 14 21 20 20 6d  6e 61 6d 65 24 28 6c 6f  |)...!  mname$(lo|
000021f0  6f 70 29 3d 6d 6e 61 6d  65 24 28 6c 6f 6f 70 2b  |op)=mname$(loop+|
00002200  31 29 0d 0f 1e 16 20 20  e3 20 73 75 62 6c 6f 6f  |1)....  . subloo|
00002210  70 3d 30 20 b8 20 34 30  0d 0f 28 33 20 20 20 20  |p=0 . 40..(3    |
00002220  61 63 74 69 6f 6e 28 6c  6f 6f 70 2c 73 75 62 6c  |action(loop,subl|
00002230  6f 6f 70 29 3d 61 63 74  69 6f 6e 28 6c 6f 6f 70  |oop)=action(loop|
00002240  2b 31 2c 73 75 62 6c 6f  6f 70 29 0d 0f 32 33 20  |+1,subloop)..23 |
00002250  20 20 20 66 6e 61 6d 65  24 28 6c 6f 6f 70 2c 73  |   fname$(loop,s|
00002260  75 62 6c 6f 6f 70 29 3d  66 6e 61 6d 65 24 28 6c  |ubloop)=fname$(l|
00002270  6f 6f 70 2b 31 2c 73 75  62 6c 6f 6f 70 29 0d 0f  |oop+1,subloop)..|
00002280  3c 31 20 20 20 20 74 65  78 74 24 28 6c 6f 6f 70  |<1    text$(loop|
00002290  2c 73 75 62 6c 6f 6f 70  29 3d 74 65 78 74 24 28  |,subloop)=text$(|
000022a0  6c 6f 6f 70 2b 31 2c 73  75 62 6c 6f 6f 70 29 0d  |loop+1,subloop).|
000022b0  0f 46 35 20 20 20 20 73  70 72 69 74 65 24 28 6c  |.F5    sprite$(l|
000022c0  6f 6f 70 2c 73 75 62 6c  6f 6f 70 29 3d 73 70 72  |oop,subloop)=spr|
000022d0  69 74 65 24 28 6c 6f 6f  70 2b 31 2c 73 75 62 6c  |ite$(loop+1,subl|
000022e0  6f 6f 70 29 0d 0f 50 31  20 20 20 20 66 74 79 70  |oop)..P1    ftyp|
000022f0  65 28 6c 6f 6f 70 2c 73  75 62 6c 6f 6f 70 29 3d  |e(loop,subloop)=|
00002300  66 74 79 70 65 28 6c 6f  6f 70 2b 31 2c 73 75 62  |ftype(loop+1,sub|
00002310  6c 6f 6f 70 29 0d 0f 5a  07 20 20 ed 0d 0f 64 05  |loop)..Z.  ...d.|
00002320  ed 0d 0f 6e 11 6d 6e 61  6d 65 24 28 31 39 29 3d  |...n.mname$(19)=|
00002330  22 22 0d 0f 78 0f 6e 75  6d 5f 6d 65 6e 73 2d 3d  |""..x.num_mens-=|
00002340  31 0d 0f 82 10 f2 72 65  64 72 61 77 5f 6c 69 73  |1.....redraw_lis|
00002350  74 0d 0f 8c 05 e1 0d 0f  96 04 0d 0f a0 11 dd f2  |t...............|
00002360  64 65 6c 65 74 65 5f 69  74 65 6d 0d 0f aa 1e f2  |delete_item.....|
00002370  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 69 74 69  |close_window(iti|
00002380  6e 5f 68 61 6e 64 6c 65  29 0d 0f b4 1c 69 74 65  |n_handle)....ite|
00002390  6d 3d a4 69 63 6f 6e 5f  74 6f 5f 69 74 65 6d 28  |m=.icon_to_item(|
000023a0  69 63 6f 6e 29 0d 0f be  0e 6d 6f 64 69 66 69 65  |icon)....modifie|
000023b0  64 3d b9 0d 0f c8 14 e3  20 6c 6f 6f 70 3d 69 74  |d=...... loop=it|
000023c0  65 6d 20 b8 20 31 37 0d  0f d2 3b 20 20 61 63 74  |em . 17...;  act|
000023d0  69 6f 6e 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |ion(current_menu|
000023e0  2c 6c 6f 6f 70 29 3d 61  63 74 69 6f 6e 28 63 75  |,loop)=action(cu|
000023f0  72 72 65 6e 74 5f 6d 65  6e 75 2c 6c 6f 6f 70 2b  |rrent_menu,loop+|
00002400  31 29 0d 0f dc 3b 20 20  66 6e 61 6d 65 24 28 63  |1)...;  fname$(c|
00002410  75 72 72 65 6e 74 5f 6d  65 6e 75 2c 6c 6f 6f 70  |urrent_menu,loop|
00002420  29 3d 66 6e 61 6d 65 24  28 63 75 72 72 65 6e 74  |)=fname$(current|
00002430  5f 6d 65 6e 75 2c 6c 6f  6f 70 2b 31 29 0d 0f e6  |_menu,loop+1)...|
00002440  39 20 20 74 65 78 74 24  28 63 75 72 72 65 6e 74  |9  text$(current|
00002450  5f 6d 65 6e 75 2c 6c 6f  6f 70 29 3d 74 65 78 74  |_menu,loop)=text|
00002460  24 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 2c 6c  |$(current_menu,l|
00002470  6f 6f 70 2b 31 29 0d 0f  f0 3d 20 20 73 70 72 69  |oop+1)...=  spri|
00002480  74 65 24 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |te$(current_menu|
00002490  2c 6c 6f 6f 70 29 3d 73  70 72 69 74 65 24 28 63  |,loop)=sprite$(c|
000024a0  75 72 72 65 6e 74 5f 6d  65 6e 75 2c 6c 6f 6f 70  |urrent_menu,loop|
000024b0  2b 31 29 0d 0f fa 39 20  20 66 74 79 70 65 28 63  |+1)...9  ftype(c|
000024c0  75 72 72 65 6e 74 5f 6d  65 6e 75 2c 6c 6f 6f 70  |urrent_menu,loop|
000024d0  29 3d 66 74 79 70 65 28  63 75 72 72 65 6e 74 5f  |)=ftype(current_|
000024e0  6d 65 6e 75 2c 6c 6f 6f  70 2b 31 29 0d 10 04 05  |menu,loop+1)....|
000024f0  ed 0d 10 0e 1c 6e 6f 5f  6f 70 74 73 28 63 75 72  |.....no_opts(cur|
00002500  72 65 6e 74 5f 6d 65 6e  75 29 2d 3d 31 0d 10 18  |rent_menu)-=1...|
00002510  13 f2 72 65 64 6f 5f 61  6c 6c 5f 69 63 6f 6e 73  |..redo_all_icons|
00002520  0d 10 22 05 e1 0d 10 2c  04 0d 10 36 0e dd f2 6e  |.."....,...6...n|
00002530  65 77 5f 6d 65 6e 75 0d  10 40 13 e7 20 6e 75 6d  |ew_menu..@.. num|
00002540  5f 6d 65 6e 73 3d 32 30  20 8c 0d 10 4a 11 20 20  |_mens=20 ...J.  |
00002550  f2 65 72 72 6f 72 28 35  2c 31 29 0d 10 54 07 20  |.error(5,1)..T. |
00002560  20 e1 0d 10 5e 05 cd 0d  10 68 09 69 6e 6d 3d b9  | ...^....h.inm=.|
00002570  0d 10 72 17 61 6c 74 65  72 5f 6d 65 6e 75 3d 6e  |..r.alter_menu=n|
00002580  75 6d 5f 6d 65 6e 73 0d  10 7c 27 f2 63 65 6e 74  |um_mens..|'.cent|
00002590  72 65 5f 77 69 6e 64 6f  77 28 63 72 6d 65 5f 68  |re_window(crme_h|
000025a0  61 6e 64 6c 65 2c 35 30  38 2c 34 38 30 29 0d 10  |andle,508,480)..|
000025b0  86 2d f2 73 65 74 5f 69  6e 64 69 72 65 63 74 65  |.-.set_indirecte|
000025c0  64 28 63 72 6d 65 5f 68  61 6e 64 6c 65 2c 37 2c  |d(crme_handle,7,|
000025d0  22 4e 65 77 20 6d 65 6e  75 22 29 0d 10 90 1e f2  |"New menu").....|
000025e0  73 65 74 5f 62 69 74 28  63 72 6d 65 5f 68 61 6e  |set_bit(crme_han|
000025f0  64 6c 65 2c 32 2c 32 31  29 0d 10 9a 3d f2 75 6e  |dle,2,21)...=.un|
00002600  73 65 74 5f 62 69 74 28  63 72 6d 65 5f 68 61 6e  |set_bit(crme_han|
00002610  64 6c 65 2c 33 2c 32 31  29 3a f2 75 6e 73 65 74  |dle,3,21):.unset|
00002620  5f 62 69 74 28 63 72 6d  65 5f 68 61 6e 64 6c 65  |_bit(crme_handle|
00002630  2c 34 2c 32 31 29 0d 10  a4 19 f2 63 61 72 65 74  |,4,21).....caret|
00002640  28 63 72 6d 65 5f 68 61  6e 64 6c 65 2c 37 29 0d  |(crme_handle,7).|
00002650  10 ae 05 e1 0d 10 b8 04  0d 10 c2 10 dd f2 61 6c  |..............al|
00002660  74 65 72 5f 6d 65 6e 75  0d 10 cc 24 e7 20 69 63  |ter_menu...$. ic|
00002670  6f 6e 3c 30 20 84 20 69  63 6f 6e 3e 31 39 20 8c  |on<0 . icon>19 .|
00002680  20 f2 65 72 72 6f 72 28  36 2c 31 29 0d 10 d6 09  | .error(6,1)....|
00002690  69 6e 6d 3d a3 0d 10 e0  13 61 6c 74 65 72 5f 6d  |inm=.....alter_m|
000026a0  65 6e 75 3d 69 63 6f 6e  0d 10 ea 27 f2 63 65 6e  |enu=icon...'.cen|
000026b0  74 72 65 5f 77 69 6e 64  6f 77 28 63 72 6d 65 5f  |tre_window(crme_|
000026c0  68 61 6e 64 6c 65 2c 35  30 38 2c 34 38 30 29 0d  |handle,508,480).|
000026d0  10 f4 35 f2 73 65 74 5f  69 6e 64 69 72 65 63 74  |..5.set_indirect|
000026e0  65 64 28 63 72 6d 65 5f  68 61 6e 64 6c 65 2c 37  |ed(crme_handle,7|
000026f0  2c 6d 6e 61 6d 65 24 28  61 6c 74 65 72 5f 6d 65  |,mname$(alter_me|
00002700  6e 75 29 29 0d 10 fe 3d  f2 75 6e 73 65 74 5f 62  |nu))...=.unset_b|
00002710  69 74 28 63 72 6d 65 5f  68 61 6e 64 6c 65 2c 32  |it(crme_handle,2|
00002720  2c 32 31 29 3a f2 75 6e  73 65 74 5f 62 69 74 28  |,21):.unset_bit(|
00002730  63 72 6d 65 5f 68 61 6e  64 6c 65 2c 33 2c 32 31  |crme_handle,3,21|
00002740  29 0d 11 08 20 f2 75 6e  73 65 74 5f 62 69 74 28  |)... .unset_bit(|
00002750  63 72 6d 65 5f 68 61 6e  64 6c 65 2c 34 2c 32 31  |crme_handle,4,21|
00002760  29 0d 11 12 17 74 79 3d  74 79 70 65 28 61 6c 74  |)....ty=type(alt|
00002770  65 72 5f 6d 65 6e 75 29  0d 11 1c 1f e7 20 74 79  |er_menu)..... ty|
00002780  3c 31 20 84 20 74 79 3e  33 20 8c 20 f2 65 72 72  |<1 . ty>3 . .err|
00002790  6f 72 28 37 2c 31 29 0d  11 26 21 f2 73 65 74 5f  |or(7,1)..&!.set_|
000027a0  62 69 74 28 63 72 6d 65  5f 68 61 6e 64 6c 65 2c  |bit(crme_handle,|
000027b0  31 2b 74 79 2c 32 31 29  0d 11 30 19 f2 63 61 72  |1+ty,21)..0..car|
000027c0  65 74 28 63 72 6d 65 5f  68 61 6e 64 6c 65 2c 37  |et(crme_handle,7|
000027d0  29 0d 11 3a 05 e1 0d 11  44 04 0d 11 4e 14 dd f2  |)..:....D...N...|
000027e0  65 6e 64 5f 61 6c 74 65  72 5f 6d 65 6e 75 0d 11  |end_alter_menu..|
000027f0  58 1e f2 63 6c 6f 73 65  5f 77 69 6e 64 6f 77 28  |X..close_window(|
00002800  63 72 6d 65 5f 68 61 6e  64 6c 65 29 0d 11 62 2b  |crme_handle)..b+|
00002810  6d 65 6e 6e 61 6d 65 24  3d a4 67 65 74 5f 69 6e  |menname$=.get_in|
00002820  64 69 72 65 63 74 65 64  28 63 72 6d 65 5f 68 61  |directed(crme_ha|
00002830  6e 64 6c 65 2c 37 29 0d  11 6c 30 e7 20 69 6e 6d  |ndle,7)..l0. inm|
00002840  20 80 20 a4 6d 65 6e 75  5f 65 78 69 73 74 28 6d  | . .menu_exist(m|
00002850  65 6e 6e 61 6d 65 24 29  20 f2 65 72 72 6f 72 28  |enname$) .error(|
00002860  31 35 2c 31 29 3a e1 0d  11 76 17 e7 20 69 6e 6d  |15,1):...v.. inm|
00002870  20 8c 20 6e 75 6d 5f 6d  65 6e 73 2b 3d 31 0d 11  | . num_mens+=1..|
00002880  80 29 e7 20 6d 6e 61 6d  65 24 28 61 6c 74 65 72  |.). mname$(alter|
00002890  5f 6d 65 6e 75 29 3c 3e  22 22 20 f2 6d 65 6e 75  |_menu)<>"" .menu|
000028a0  5f 65 78 69 73 74 73 0d  11 8a 1f 6d 6e 61 6d 65  |_exists....mname|
000028b0  24 28 61 6c 74 65 72 5f  6d 65 6e 75 29 3d 6d 65  |$(alter_menu)=me|
000028c0  6e 6e 61 6d 65 24 0d 11  94 3e f2 73 65 74 5f 69  |nname$...>.set_i|
000028d0  6e 64 69 72 65 63 74 65  64 28 6c 69 73 74 5f 68  |ndirected(list_h|
000028e0  61 6e 64 6c 65 2c 61 6c  74 65 72 5f 6d 65 6e 75  |andle,alter_menu|
000028f0  2c 6d 6e 61 6d 65 24 28  61 6c 74 65 72 5f 6d 65  |,mname$(alter_me|
00002900  6e 75 29 29 0d 11 9e 08  74 79 3d 31 0d 11 a8 26  |nu))....ty=1...&|
00002910  e7 20 a4 67 65 74 5f 73  74 61 74 65 28 63 72 6d  |. .get_state(crm|
00002920  65 5f 68 61 6e 64 6c 65  2c 32 29 20 8c 20 74 79  |e_handle,2) . ty|
00002930  3d 31 0d 11 b2 26 e7 20  a4 67 65 74 5f 73 74 61  |=1...&. .get_sta|
00002940  74 65 28 63 72 6d 65 5f  68 61 6e 64 6c 65 2c 33  |te(crme_handle,3|
00002950  29 20 8c 20 74 79 3d 32  0d 11 bc 26 e7 20 a4 67  |) . ty=2...&. .g|
00002960  65 74 5f 73 74 61 74 65  28 63 72 6d 65 5f 68 61  |et_state(crme_ha|
00002970  6e 64 6c 65 2c 34 29 20  8c 20 74 79 3d 33 0d 11  |ndle,4) . ty=3..|
00002980  c6 17 74 79 70 65 28 61  6c 74 65 72 5f 6d 65 6e  |..type(alter_men|
00002990  75 29 3d 74 79 0d 11 d0  1f e7 20 63 75 72 72 65  |u)=ty..... curre|
000029a0  6e 74 5f 6d 65 6e 75 3d  61 6c 74 65 72 5f 6d 65  |nt_menu=alter_me|
000029b0  6e 75 20 8c 0d 11 da 1b  20 20 f2 63 6c 6f 73 65  |nu .....  .close|
000029c0  5f 77 69 6e 64 6f 77 28  68 61 6e 64 6c 65 29 0d  |_window(handle).|
000029d0  11 e4 1d 20 20 c8 8e 20  74 79 70 65 28 63 75 72  |...  .. type(cur|
000029e0  72 65 6e 74 5f 6d 65 6e  75 29 20 ca 0d 11 ee 1f  |rent_menu) .....|
000029f0  20 20 20 20 20 c9 20 31  3a 68 61 6e 64 6c 65 3d  |     . 1:handle=|
00002a00  74 79 70 31 5f 68 61 6e  64 6c 65 0d 11 f8 1f 20  |typ1_handle.... |
00002a10  20 20 20 20 c9 20 32 3a  68 61 6e 64 6c 65 3d 74  |    . 2:handle=t|
00002a20  79 70 32 5f 68 61 6e 64  6c 65 0d 12 02 1f 20 20  |yp2_handle....  |
00002a30  20 20 20 c9 20 33 3a 68  61 6e 64 6c 65 3d 74 79  |   . 3:handle=ty|
00002a40  70 33 5f 68 61 6e 64 6c  65 0d 12 0c 07 20 20 cb  |p3_handle....  .|
00002a50  0d 12 16 1a 20 20 f2 6f  70 65 6e 5f 77 69 6e 64  |....  .open_wind|
00002a60  6f 77 28 68 61 6e 64 6c  65 29 0d 12 20 15 20 20  |ow(handle).. .  |
00002a70  f2 72 65 64 6f 5f 61 6c  6c 5f 69 63 6f 6e 73 0d  |.redo_all_icons.|
00002a80  12 2a 05 cd 0d 12 34 10  f2 72 65 64 72 61 77 5f  |.*....4..redraw_|
00002a90  6c 69 73 74 0d 12 3e 0e  6d 6f 64 69 66 69 65 64  |list..>.modified|
00002aa0  3d b9 0d 12 48 05 e1 0d  12 52 04 0d 12 5c 11 dd  |=...H....R...\..|
00002ab0  f2 6d 65 6e 75 5f 65 78  69 73 74 73 0d 12 66 19  |.menu_exists..f.|
00002ac0  e3 20 6d 65 6e 75 3d 30  20 b8 20 6e 75 6d 5f 6d  |. menu=0 . num_m|
00002ad0  65 6e 73 2d 31 0d 12 70  23 20 20 e7 20 6e 6f 5f  |ens-1..p#  . no_|
00002ae0  6f 70 74 73 28 6d 65 6e  75 29 3c 3e 32 35 35 20  |opts(menu)<>255 |
00002af0  f2 6d 65 6e 75 5f 65 78  0d 12 7a 05 ed 0d 12 84  |.menu_ex..z.....|
00002b00  05 e1 0d 12 8e 04 0d 12  98 0d dd f2 6d 65 6e 75  |............menu|
00002b10  5f 65 78 0d 12 a2 1c e3  20 69 74 65 6d 3d 30 20  |_ex..... item=0 |
00002b20  b8 20 6e 6f 5f 6f 70 74  73 28 6d 65 6e 75 29 0d  |. no_opts(menu).|
00002b30  12 ac 44 20 20 e7 20 61  63 74 69 6f 6e 28 6d 65  |..D  . action(me|
00002b40  6e 75 2c 69 74 65 6d 29  3d 31 20 80 20 66 6e 61  |nu,item)=1 . fna|
00002b50  6d 65 24 28 6d 65 6e 75  2c 69 74 65 6d 29 3d 6d  |me$(menu,item)=m|
00002b60  6e 61 6d 65 24 28 61 6c  74 65 72 5f 6d 65 6e 75  |name$(alter_menu|
00002b70  29 20 8c 0d 12 b6 22 20  20 20 20 66 6e 61 6d 65  |) ...."    fname|
00002b80  24 28 6d 65 6e 75 2c 69  74 65 6d 29 3d 6d 65 6e  |$(menu,item)=men|
00002b90  6e 61 6d 65 24 0d 12 c0  07 20 20 cd 0d 12 ca 05  |name$....  .....|
00002ba0  ed 0d 12 d4 05 e1 0d 12  de 04 0d 12 e8 19 dd f2  |................|
00002bb0  73 65 6c 65 63 74 5f 63  75 72 72 65 6e 74 5f 6d  |select_current_m|
00002bc0  65 6e 75 0d 12 f2 15 63  75 72 72 65 6e 74 5f 6d  |enu....current_m|
00002bd0  65 6e 75 3d 69 63 6f 6e  0d 12 fc 31 c8 99 22 57  |enu=icon...1.."W|
00002be0  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00002bf0  2c 6c 69 73 74 5f 68 61  6e 64 6c 65 2c 30 2c 2d  |,list_handle,0,-|
00002c00  38 32 30 2c 32 32 30 2c  30 0d 13 06 19 f2 63 6c  |820,220,0.....cl|
00002c10  6f 73 65 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |ose_window(handl|
00002c20  65 29 0d 13 10 2b 68 61  6e 64 6c 65 3d 77 69 5f  |e)...+handle=wi_|
00002c30  68 61 6e 64 6c 65 25 28  74 79 70 65 28 63 75 72  |handle%(type(cur|
00002c40  72 65 6e 74 5f 6d 65 6e  75 29 2b 34 29 0d 13 1a  |rent_menu)+4)...|
00002c50  27 64 61 74 61 3d 77 69  5f 64 61 74 61 25 28 74  |'data=wi_data%(t|
00002c60  79 70 65 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |ype(current_menu|
00002c70  29 2b 34 29 0d 13 24 18  f2 6f 70 65 6e 5f 77 69  |)+4)..$..open_wi|
00002c80  6e 64 6f 77 28 68 61 6e  64 6c 65 29 0d 13 2e 13  |ndow(handle)....|
00002c90  f2 72 65 64 6f 5f 61 6c  6c 5f 69 63 6f 6e 73 0d  |.redo_all_icons.|
00002ca0  13 38 10 f2 72 65 64 72  61 77 5f 6c 69 73 74 0d  |.8..redraw_list.|
00002cb0  13 42 1e f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  |.B..close_window|
00002cc0  28 69 74 69 6e 5f 68 61  6e 64 6c 65 29 0d 13 4c  |(itin_handle)..L|
00002cd0  05 e1 0d 13 56 04 0d 13  60 11 dd f2 72 65 64 72  |....V...`...redr|
00002ce0  61 77 5f 6c 69 73 74 0d  13 6a 11 e3 20 69 63 6f  |aw_list..j.. ico|
00002cf0  6e 3d 30 20 b8 20 31 39  0d 13 74 35 20 20 f2 73  |n=0 . 19..t5  .s|
00002d00  65 74 5f 69 6e 64 69 72  65 63 74 65 64 28 6c 69  |et_indirected(li|
00002d10  73 74 5f 68 61 6e 64 6c  65 2c 69 63 6f 6e 2c 22  |st_handle,icon,"|
00002d20  20 20 22 2b a4 6d 28 69  63 6f 6e 29 29 0d 13 7e  |  "+.m(icon))..~|
00002d30  4b 20 20 e7 20 69 63 6f  6e 3d 63 75 72 72 65 6e  |K  . icon=curren|
00002d40  74 5f 6d 65 6e 75 20 8c  20 f2 73 65 74 5f 69 6e  |t_menu . .set_in|
00002d50  64 69 72 65 63 74 65 64  28 6c 69 73 74 5f 68 61  |directed(list_ha|
00002d60  6e 64 6c 65 2c 69 63 6f  6e 2c 22 2a 20 22 2b a4  |ndle,icon,"* "+.|
00002d70  6d 28 69 63 6f 6e 29 29  0d 13 88 05 ed 0d 13 92  |m(icon))........|
00002d80  0e f2 6c 69 73 74 5f 73  69 7a 65 0d 13 9c 32 c8  |..list_size...2.|
00002d90  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
00002da0  61 77 22 2c 6c 69 73 74  5f 68 61 6e 64 6c 65 2c  |aw",list_handle,|
00002db0  30 2c 2d 31 30 30 30 2c  32 32 30 2c 30 0d 13 a6  |0,-1000,220,0...|
00002dc0  05 e1 0d 13 b0 04 0d 13  ba 0f dd f2 6c 69 73 74  |............list|
00002dd0  5f 73 69 7a 65 0d 13 c4  1c 78 3d 32 32 30 3a 79  |_size....x=220:y|
00002de0  3d 32 34 2b 28 6e 75 6d  5f 6d 65 6e 73 2a 34 30  |=24+(num_mens*40|
00002df0  29 0d 13 ce 14 e7 20 79  3c 3d 31 34 34 20 8c 20  |)..... y<=144 . |
00002e00  79 3d 31 34 34 0d 13 d8  30 21 62 6c 6f 63 6b 25  |y=144...0!block%|
00002e10  3d 30 3a 62 6c 6f 63 6b  25 21 34 3d 2d 79 3a 62  |=0:block%!4=-y:b|
00002e20  6c 6f 63 6b 25 21 38 3d  78 3a 62 6c 6f 63 6b 25  |lock%!8=x:block%|
00002e30  21 31 32 3d 30 0d 13 e2  29 c8 99 22 57 69 6d 70  |!12=0...).."Wimp|
00002e40  5f 53 65 74 45 78 74 65  6e 74 22 2c 6c 69 73 74  |_SetExtent",list|
00002e50  5f 68 61 6e 64 6c 65 2c  62 6c 6f 63 6b 25 0d 13  |_handle,block%..|
00002e60  ec 19 e7 20 6e 75 6d 5f  6d 65 6e 73 3e 31 30 20  |... num_mens>10 |
00002e70  8c 20 79 3d 34 32 34 0d  13 f6 17 21 62 6c 6f 63  |. y=424....!bloc|
00002e80  6b 25 3d 6c 69 73 74 5f  68 61 6e 64 6c 65 0d 14  |k%=list_handle..|
00002e90  00 23 c8 99 22 57 69 6d  70 5f 47 65 74 57 69 6e  |.#.."Wimp_GetWin|
00002ea0  64 6f 77 53 74 61 74 65  22 2c 2c 62 6c 6f 63 6b  |dowState",,block|
00002eb0  25 0d 14 0a 2d 62 6c 6f  63 6b 25 21 31 32 3d 62  |%...-block%!12=b|
00002ec0  6c 6f 63 6b 25 21 34 2b  78 3a 62 6c 6f 63 6b 25  |lock%!4+x:block%|
00002ed0  21 31 36 3d 62 6c 6f 63  6b 25 21 38 2b 79 0d 14  |!16=block%!8+y..|
00002ee0  14 1f c8 99 22 57 69 6d  70 5f 4f 70 65 6e 57 69  |...."Wimp_OpenWi|
00002ef0  6e 64 6f 77 22 2c 2c 62  6c 6f 63 6b 25 0d 14 1e  |ndow",,block%...|
00002f00  05 e1 0d 14 28 04 0d 14  32 10 dd f2 61 6c 74 65  |....(...2...alte|
00002f10  72 5f 69 74 65 6d 0d 14  3c 27 f2 63 65 6e 74 72  |r_item..<'.centr|
00002f20  65 5f 77 69 6e 64 6f 77  28 69 74 69 6e 5f 68 61  |e_window(itin_ha|
00002f30  6e 64 6c 65 2c 35 32 38  2c 36 38 30 29 0d 14 46  |ndle,528,680)..F|
00002f40  1c 69 74 65 6d 3d a4 69  63 6f 6e 5f 74 6f 5f 69  |.item=.icon_to_i|
00002f50  74 65 6d 28 69 63 6f 6e  29 0d 14 50 13 61 6c 74  |tem(icon)..P.alt|
00002f60  65 72 5f 69 74 65 6d 3d  69 74 65 6d 0d 14 5a 3c  |er_item=item..Z<|
00002f70  f2 73 65 74 5f 69 6e 64  69 72 65 63 74 65 64 28  |.set_indirected(|
00002f80  69 74 69 6e 5f 68 61 6e  64 6c 65 2c 38 2c 66 6e  |itin_handle,8,fn|
00002f90  61 6d 65 24 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |ame$(current_men|
00002fa0  75 2c 69 74 65 6d 29 29  0d 14 64 3b f2 73 65 74  |u,item))..d;.set|
00002fb0  5f 69 6e 64 69 72 65 63  74 65 64 28 69 74 69 6e  |_indirected(itin|
00002fc0  5f 68 61 6e 64 6c 65 2c  35 2c 74 65 78 74 24 28  |_handle,5,text$(|
00002fd0  63 75 72 72 65 6e 74 5f  6d 65 6e 75 2c 69 74 65  |current_menu,ite|
00002fe0  6d 29 29 0d 14 6e 3d f2  73 65 74 5f 69 6e 64 69  |m))..n=.set_indi|
00002ff0  72 65 63 74 65 64 28 69  74 69 6e 5f 68 61 6e 64  |rected(itin_hand|
00003000  6c 65 2c 32 2c 73 70 72  69 74 65 24 28 63 75 72  |le,2,sprite$(cur|
00003010  72 65 6e 74 5f 6d 65 6e  75 2c 69 74 65 6d 29 29  |rent_menu,item))|
00003020  0d 14 78 3d f2 73 65 74  5f 69 6e 64 69 72 65 63  |..x=.set_indirec|
00003030  74 65 64 28 69 74 69 6e  5f 68 61 6e 64 6c 65 2c  |ted(itin_handle,|
00003040  31 2c 73 70 72 69 74 65  24 28 63 75 72 72 65 6e  |1,sprite$(curren|
00003050  74 5f 6d 65 6e 75 2c 69  74 65 6d 29 29 0d 14 82  |t_menu,item))...|
00003060  2d 61 63 74 3d 61 63 74  69 6f 6e 28 63 75 72 72  |-act=action(curr|
00003070  65 6e 74 5f 6d 65 6e 75  2c 69 74 65 6d 29 3a 61  |ent_menu,item):a|
00003080  63 74 24 3d 22 3f 3f 3f  3f 22 0d 14 8c 0c c8 8e  |ct$="????"......|
00003090  20 61 63 74 20 ca 0d 14  96 1b 20 20 c9 20 31 3a  | act .....  . 1:|
000030a0  61 63 74 24 3d 22 4f 70  65 6e 20 6d 65 6e 75 3a  |act$="Open menu:|
000030b0  22 0d 14 a0 1a 20 20 c9  20 32 3a 61 63 74 24 3d  |"....  . 2:act$=|
000030c0  22 4f 70 65 6e 20 64 69  72 3a 22 0d 14 aa 1a 20  |"Open dir:".... |
000030d0  20 c9 20 33 3a 61 63 74  24 3d 22 52 75 6e 20 66  | . 3:act$="Run f|
000030e0  69 6c 65 3a 22 0d 14 b4  05 cb 0d 14 be 28 f2 73  |ile:"........(.s|
000030f0  65 74 5f 69 6e 64 69 72  65 63 74 65 64 28 69 74  |et_indirected(it|
00003100  69 6e 5f 68 61 6e 64 6c  65 2c 31 33 2c 61 63 74  |in_handle,13,act|
00003110  24 29 0d 14 c8 19 f2 63  61 72 65 74 28 69 74 69  |$).....caret(iti|
00003120  6e 5f 68 61 6e 64 6c 65  2c 32 29 0d 14 d2 05 e1  |n_handle,2).....|
00003130  0d 14 dc 04 0d 14 e6 14  dd f2 65 6e 64 5f 61 6c  |..........end_al|
00003140  74 65 72 5f 69 74 65 6d  0d 14 f0 1e e7 20 61 6c  |ter_item..... al|
00003150  74 65 72 5f 69 74 65 6d  3d 2d 31 20 f2 6d 69 6e  |ter_item=-1 .min|
00003160  75 73 5f 6f 6e 65 0d 14  fa 17 e7 20 61 6c 74 65  |us_one..... alte|
00003170  72 5f 69 74 65 6d 3e 3d  31 30 30 20 8c 0d 15 04  |r_item>=100 ....|
00003180  15 20 20 61 6c 74 65 72  5f 69 74 65 6d 2d 3d 31  |.  alter_item-=1|
00003190  30 30 0d 15 0e 1b 20 20  f2 63 72 65 61 74 65 5f  |00....  .create_|
000031a0  61 6c 74 65 72 5f 73 75  62 6d 65 6e 75 0d 15 18  |alter_submenu...|
000031b0  05 cd 0d 15 22 42 66 6e  61 6d 65 24 28 63 75 72  |...."Bfname$(cur|
000031c0  72 65 6e 74 5f 6d 65 6e  75 2c 61 6c 74 65 72 5f  |rent_menu,alter_|
000031d0  69 74 65 6d 29 3d a4 67  65 74 5f 69 6e 64 69 72  |item)=.get_indir|
000031e0  65 63 74 65 64 28 69 74  69 6e 5f 68 61 6e 64 6c  |ected(itin_handl|
000031f0  65 2c 38 29 0d 15 2c 41  74 65 78 74 24 28 63 75  |e,8)..,Atext$(cu|
00003200  72 72 65 6e 74 5f 6d 65  6e 75 2c 61 6c 74 65 72  |rrent_menu,alter|
00003210  5f 69 74 65 6d 29 3d a4  67 65 74 5f 69 6e 64 69  |_item)=.get_indi|
00003220  72 65 63 74 65 64 28 69  74 69 6e 5f 68 61 6e 64  |rected(itin_hand|
00003230  6c 65 2c 35 29 0d 15 36  43 73 70 72 69 74 65 24  |le,5)..6Csprite$|
00003240  28 63 75 72 72 65 6e 74  5f 6d 65 6e 75 2c 61 6c  |(current_menu,al|
00003250  74 65 72 5f 69 74 65 6d  29 3d a4 67 65 74 5f 69  |ter_item)=.get_i|
00003260  6e 64 69 72 65 63 74 65  64 28 69 74 69 6e 5f 68  |ndirected(itin_h|
00003270  61 6e 64 6c 65 2c 32 29  0d 15 40 1e f2 63 6c 6f  |andle,2)..@..clo|
00003280  73 65 5f 77 69 6e 64 6f  77 28 69 74 69 6e 5f 68  |se_window(itin_h|
00003290  61 6e 64 6c 65 29 0d 15  4a 13 f2 72 65 64 6f 5f  |andle)..J..redo_|
000032a0  61 6c 6c 5f 69 63 6f 6e  73 0d 15 54 0e 6d 6f 64  |all_icons..T.mod|
000032b0  69 66 69 65 64 3d b9 0d  15 5e 05 e1 0d 15 68 04  |ified=...^....h.|
000032c0  0d 15 72 0f dd f2 6d 69  6e 75 73 5f 6f 6e 65 0d  |..r...minus_one.|
000032d0  15 7c 13 e7 20 6e 75 6d  5f 6d 65 6e 73 3d 32 30  |.|.. num_mens=20|
000032e0  20 8c 0d 15 86 11 20 20  f2 65 72 72 6f 72 28 35  | .....  .error(5|
000032f0  2c 31 29 0d 15 90 07 20  20 e1 0d 15 9a 05 cd 0d  |,1)....  .......|
00003300  15 a4 22 6e 65 77 70 6f  73 3d 6e 6f 5f 6f 70 74  |.."newpos=no_opt|
00003310  73 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 29 2b  |s(current_menu)+|
00003320  31 0d 15 ae 19 e7 20 6e  65 77 70 6f 73 3d 32 35  |1..... newpos=25|
00003330  36 20 6e 65 77 70 6f 73  3d 30 0d 15 b8 11 e7 20  |6 newpos=0..... |
00003340  6e 65 77 70 6f 73 3e 31  37 20 8c 0d 15 c2 11 20  |newpos>17 ..... |
00003350  20 f2 65 72 72 6f 72 28  33 2c 31 29 0d 15 cc 07  | .error(3,1)....|
00003360  20 20 e1 0d 15 d6 05 cd  0d 15 e0 20 6e 6f 5f 6f  |  ......... no_o|
00003370  70 74 73 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |pts(current_menu|
00003380  29 3d 6e 65 77 70 6f 73  0d 15 ea 15 61 6c 74 65  |)=newpos....alte|
00003390  72 5f 69 74 65 6d 3d 6e  65 77 70 6f 73 0d 15 f4  |r_item=newpos...|
000033a0  21 61 63 74 69 6f 6e 28  63 75 72 72 65 6e 74 5f  |!action(current_|
000033b0  6d 65 6e 75 2c 6e 65 77  70 6f 73 29 3d 31 0d 15  |menu,newpos)=1..|
000033c0  fe 25 6e 24 3d a4 67 65  74 5f 69 6e 64 69 72 65  |.%n$=.get_indire|
000033d0  63 74 65 64 28 69 74 69  6e 5f 68 61 6e 64 6c 65  |cted(itin_handle|
000033e0  2c 38 29 0d 16 08 26 e7  20 a4 6d 65 6e 75 5f 65  |,8)...&. .menu_e|
000033f0  78 69 73 74 28 6e 24 29  20 8c 20 f2 65 72 72 6f  |xist(n$) . .erro|
00003400  72 28 31 35 2c 31 29 3a  e1 0d 16 12 0f 6e 75 6d  |r(15,1):.....num|
00003410  5f 6d 65 6e 73 2b 3d 31  0d 16 1c 10 6e 3d 6e 75  |_mens+=1....n=nu|
00003420  6d 5f 6d 65 6e 73 2d 31  0d 16 26 10 6d 6e 61 6d  |m_mens-1..&.mnam|
00003430  65 24 28 6e 29 3d 6e 24  0d 16 30 0d 74 79 70 65  |e$(n)=n$..0.type|
00003440  28 6e 29 3d 31 0d 16 3a  12 6e 6f 5f 6f 70 74 73  |(n)=1..:.no_opts|
00003450  28 6e 29 3d 32 35 35 0d  16 44 10 f2 72 65 64 72  |(n)=255..D..redr|
00003460  61 77 5f 6c 69 73 74 0d  16 4e 05 e1 0d 16 58 04  |aw_list..N....X.|
00003470  0d 16 62 1a dd f2 63 72  65 61 74 65 5f 61 6c 74  |..b...create_alt|
00003480  65 72 5f 73 75 62 6d 65  6e 75 0d 16 6c 13 e7 20  |er_submenu..l.. |
00003490  6e 75 6d 5f 6d 65 6e 73  3d 32 30 20 8c 0d 16 76  |num_mens=20 ...v|
000034a0  11 20 20 f2 65 72 72 6f  72 28 35 2c 31 29 0d 16  |.  .error(5,1)..|
000034b0  80 07 20 20 e1 0d 16 8a  05 cd 0d 16 94 0f 6e 75  |..  ..........nu|
000034c0  6d 5f 6d 65 6e 73 2b 3d  31 0d 16 9e 10 6e 3d 6e  |m_mens+=1....n=n|
000034d0  75 6d 5f 6d 65 6e 73 2d  31 0d 16 a8 3c 6d 6e 61  |um_mens-1...<mna|
000034e0  6d 65 24 28 6e 29 3d a4  72 7a 28 a4 67 65 74 6c  |me$(n)=.rz(.getl|
000034f0  65 61 66 28 66 6e 61 6d  65 24 28 63 75 72 72 65  |eaf(fname$(curre|
00003500  6e 74 5f 6d 65 6e 75 2c  61 6c 74 65 72 5f 69 74  |nt_menu,alter_it|
00003510  65 6d 29 29 29 0d 16 b2  0d 74 79 70 65 28 6e 29  |em)))....type(n)|
00003520  3d 31 0d 16 bc 25 61 63  74 69 6f 6e 28 63 75 72  |=1...%action(cur|
00003530  72 65 6e 74 5f 6d 65 6e  75 2c 61 6c 74 65 72 5f  |rent_menu,alter_|
00003540  69 74 65 6d 29 3d 31 0d  16 c6 27 c8 8e 20 66 74  |item)=1...'.. ft|
00003550  79 70 65 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |ype(current_menu|
00003560  2c 61 6c 74 65 72 5f 69  74 65 6d 29 20 ca 0d 16  |,alter_item) ...|
00003570  d0 1a 20 20 c9 20 26 31  30 30 30 3a f2 73 75 62  |..  . &1000:.sub|
00003580  6d 65 6e 75 5f 64 69 72  0d 16 da 15 20 20 7f 3a  |menu_dir....  .:|
00003590  f2 73 75 62 6d 65 6e 75  5f 66 69 6c 65 0d 16 e4  |.submenu_file...|
000035a0  05 cb 0d 16 ee 0e 6d 6f  64 69 66 69 65 64 3d b9  |......modified=.|
000035b0  0d 16 f8 13 f2 72 65 64  6f 5f 61 6c 6c 5f 69 63  |.....redo_all_ic|
000035c0  6f 6e 73 0d 17 02 10 f2  72 65 64 72 61 77 5f 6c  |ons.....redraw_l|
000035d0  69 73 74 0d 17 0c 05 e1  0d 17 16 04 0d 17 20 12  |ist........... .|
000035e0  dd f2 73 75 62 6d 65 6e  75 5f 66 69 6c 65 0d 17  |..submenu_file..|
000035f0  2a 10 6e 6f 5f 6f 70 74  73 28 6e 29 3d 32 0d 17  |*.no_opts(n)=2..|
00003600  34 41 66 6e 61 6d 65 24  28 6e 2c 30 29 3d 66 6e  |4Afname$(n,0)=fn|
00003610  61 6d 65 24 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |ame$(current_men|
00003620  75 2c 61 6c 74 65 72 5f  69 74 65 6d 29 3a 74 65  |u,alter_item):te|
00003630  78 74 24 28 6e 2c 30 29  3d 22 21 52 75 6e 22 0d  |xt$(n,0)="!Run".|
00003640  17 3e 2d 66 74 79 70 65  28 6e 2c 30 29 3d 66 74  |.>-ftype(n,0)=ft|
00003650  79 70 65 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |ype(current_menu|
00003660  2c 61 6c 74 65 72 5f 69  74 65 6d 29 0d 17 48 3f  |,alter_item)..H?|
00003670  73 70 72 69 74 65 24 28  6e 2c 30 29 3d 73 70 72  |sprite$(n,0)=spr|
00003680  69 74 65 24 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |ite$(current_men|
00003690  75 2c 61 6c 74 65 72 5f  69 74 65 6d 29 3a 61 63  |u,alter_item):ac|
000036a0  74 69 6f 6e 28 6e 2c 30  29 3d 33 0d 17 52 26 66  |tion(n,0)=3..R&f|
000036b0  24 3d 66 6e 61 6d 65 24  28 63 75 72 72 65 6e 74  |$=fname$(current|
000036c0  5f 6d 65 6e 75 2c 61 6c  74 65 72 5f 69 74 65 6d  |_menu,alter_item|
000036d0  29 0d 17 5c 16 6c 65 61  66 24 3d a4 67 65 74 6c  |)..\.leaf$=.getl|
000036e0  65 61 66 28 66 24 29 0d  17 66 1c 64 69 72 24 3d  |eaf(f$)..f.dir$=|
000036f0  c0 66 24 2c a9 28 66 24  29 2d a9 28 6c 65 61 66  |.f$,.(f$)-.(leaf|
00003700  24 29 29 0d 17 70 30 66  6e 61 6d 65 24 28 6e 2c  |$))..p0fname$(n,|
00003710  31 29 3d 64 69 72 24 3a  74 65 78 74 24 28 6e 2c  |1)=dir$:text$(n,|
00003720  31 29 3d 22 4f 70 65 6e  20 44 69 72 65 63 74 6f  |1)="Open Directo|
00003730  72 79 22 0d 17 7a 3b 66  74 79 70 65 28 6e 2c 31  |ry"..z;ftype(n,1|
00003740  29 3d 26 31 30 30 30 3a  73 70 72 69 74 65 24 28  |)=&1000:sprite$(|
00003750  6e 2c 31 29 3d 22 64 69  72 65 63 74 6f 72 79 22  |n,1)="directory"|
00003760  3a 61 63 74 69 6f 6e 28  6e 2c 31 29 3d 32 0d 17  |:action(n,1)=2..|
00003770  84 32 66 6e 61 6d 65 24  28 6e 2c 32 29 3d 22 4d  |.2fname$(n,2)="M|
00003780  61 69 6e 20 4d 65 6e 75  22 3a 74 65 78 74 24 28  |ain Menu":text$(|
00003790  6e 2c 32 29 3d 22 4d 61  69 6e 20 4d 65 6e 75 22  |n,2)="Main Menu"|
000037a0  0d 17 8e 32 66 74 79 70  65 28 6e 2c 32 29 3d 30  |...2ftype(n,2)=0|
000037b0  3a 73 70 72 69 74 65 24  28 6e 2c 32 29 3d 22 6d  |:sprite$(n,2)="m|
000037c0  65 6e 75 22 3a 61 63 74  69 6f 6e 28 6e 2c 32 29  |enu":action(n,2)|
000037d0  3d 31 0d 17 98 05 e1 0d  17 a2 04 0d 17 ac 11 dd  |=1..............|
000037e0  f2 73 75 62 6d 65 6e 75  5f 64 69 72 0d 17 b6 10  |.submenu_dir....|
000037f0  6e 6f 5f 6f 70 74 73 28  6e 29 3d 31 0d 17 c0 4b  |no_opts(n)=1...K|
00003800  66 6e 61 6d 65 24 28 6e  2c 30 29 3d 66 6e 61 6d  |fname$(n,0)=fnam|
00003810  65 24 28 63 75 72 72 65  6e 74 5f 6d 65 6e 75 2c  |e$(current_menu,|
00003820  61 6c 74 65 72 5f 69 74  65 6d 29 3a 74 65 78 74  |alter_item):text|
00003830  24 28 6e 2c 30 29 3d 22  4f 70 65 6e 20 44 69 72  |$(n,0)="Open Dir|
00003840  65 63 74 6f 72 79 22 0d  17 ca 2d 66 74 79 70 65  |ectory"...-ftype|
00003850  28 6e 2c 30 29 3d 66 74  79 70 65 28 63 75 72 72  |(n,0)=ftype(curr|
00003860  65 6e 74 5f 6d 65 6e 75  2c 61 6c 74 65 72 5f 69  |ent_menu,alter_i|
00003870  74 65 6d 29 0d 17 d4 3f  73 70 72 69 74 65 24 28  |tem)...?sprite$(|
00003880  6e 2c 30 29 3d 73 70 72  69 74 65 24 28 63 75 72  |n,0)=sprite$(cur|
00003890  72 65 6e 74 5f 6d 65 6e  75 2c 61 6c 74 65 72 5f  |rent_menu,alter_|
000038a0  69 74 65 6d 29 3a 61 63  74 69 6f 6e 28 6e 2c 30  |item):action(n,0|
000038b0  29 3d 32 0d 17 de 32 66  6e 61 6d 65 24 28 6e 2c  |)=2...2fname$(n,|
000038c0  31 29 3d 22 4d 61 69 6e  20 4d 65 6e 75 22 3a 74  |1)="Main Menu":t|
000038d0  65 78 74 24 28 6e 2c 31  29 3d 22 4d 61 69 6e 20  |ext$(n,1)="Main |
000038e0  4d 65 6e 75 22 0d 17 e8  32 66 74 79 70 65 28 6e  |Menu"...2ftype(n|
000038f0  2c 31 29 3d 30 3a 73 70  72 69 74 65 24 28 6e 2c  |,1)=0:sprite$(n,|
00003900  31 29 3d 22 6d 65 6e 75  22 3a 61 63 74 69 6f 6e  |1)="menu":action|
00003910  28 6e 2c 31 29 3d 31 0d  17 f2 05 e1 0d 17 fc 04  |(n,1)=1.........|
00003920  0d 18 06 0f dd f2 71 75  69 63 6b 73 61 76 65 0d  |......quicksave.|
00003930  18 10 28 66 69 6c 65 24  3d a4 67 65 74 5f 69 6e  |..(file$=.get_in|
00003940  64 69 72 65 63 74 65 64  28 73 61 76 65 5f 68 61  |directed(save_ha|
00003950  6e 64 6c 65 2c 31 29 0d  18 1a 19 6c 65 61 66 24  |ndle,1)....leaf$|
00003960  3d a4 67 65 74 6c 65 61  66 28 66 69 6c 65 24 29  |=.getleaf(file$)|
00003970  0d 18 24 26 e7 20 c0 6c  65 61 66 24 2c 31 29 3c  |..$&. .leaf$,1)<|
00003980  3e 22 21 22 20 8c 20 6c  65 61 66 24 3d 22 21 22  |>"!" . leaf$="!"|
00003990  2b 6c 65 61 66 24 0d 18  2e 13 e7 20 a7 66 69 6c  |+leaf$..... .fil|
000039a0  65 24 2c 22 2e 22 29 20  8c 0d 18 38 0e 20 20 f2  |e$,".") ...8.  .|
000039b0  73 61 76 65 5f 69 74 0d  18 42 05 cc 0d 18 4c 11  |save_it..B....L.|
000039c0  20 20 f2 65 72 72 6f 72  28 39 2c 31 29 0d 18 56  |  .error(9,1)..V|
000039d0  05 cd 0d 18 60 05 e1 0d  18 6a 04 0d 18 74 0d dd  |....`....j...t..|
000039e0  f2 73 61 76 65 5f 69 74  0d 18 7e 16 6f 6c 64 6e  |.save_it..~.oldn|
000039f0  61 6d 65 24 3d 66 69 6c  65 6e 61 6d 65 24 0d 18  |ame$=filename$..|
00003a00  88 22 6d 61 6b 65 3d a4  67 65 74 5f 73 74 61 74  |."make=.get_stat|
00003a10  65 28 73 61 76 65 5f 68  61 6e 64 6c 65 2c 33 29  |e(save_handle,3)|
00003a20  0d 18 92 2c 66 69 6c 65  6e 61 6d 65 24 3d a4 67  |...,filename$=.g|
00003a30  65 74 5f 69 6e 64 69 72  65 63 74 65 64 28 73 61  |et_indirected(sa|
00003a40  76 65 5f 68 61 6e 64 6c  65 2c 31 29 0d 18 9c 3c  |ve_handle,1)...<|
00003a50  6c 24 3d a4 67 65 74 6c  65 61 66 28 66 69 6c 65  |l$=.getleaf(file|
00003a60  6e 61 6d 65 24 29 3a 72  24 3d c0 66 69 6c 65 6e  |name$):r$=.filen|
00003a70  61 6d 65 24 2c a9 28 66  69 6c 65 6e 61 6d 65 24  |ame$,.(filename$|
00003a80  29 2d a9 28 6c 24 29 29  0d 18 a6 25 e7 20 c0 6c  |)-.(l$))...%. .l|
00003a90  24 2c 31 29 3c 3e 22 21  22 20 66 69 6c 65 6e 61  |$,1)<>"!" filena|
00003aa0  6d 65 24 3d 72 24 2b 22  21 22 2b 6c 24 0d 18 b0  |me$=r$+"!"+l$...|
00003ab0  16 ff 22 43 44 69 72 20  22 2b 66 69 6c 65 6e 61  |.."CDir "+filena|
00003ac0  6d 65 24 0d 18 ba 22 ff  22 43 44 69 72 20 22 2b  |me$..."."CDir "+|
00003ad0  66 69 6c 65 6e 61 6d 65  24 2b 22 2e 50 72 6f 67  |filename$+".Prog|
00003ae0  72 61 6d 73 22 0d 18 c4  12 24 73 6e 61 6d 65 3d  |rams"....$sname=|
00003af0  22 21 6d 65 6e 75 22 0d  18 ce 11 24 72 65 6e 61  |"!menu"....$rena|
00003b00  6d 65 3d 6c 65 61 66 24  0d 18 d8 30 c8 99 22 4f  |me=leaf$...0.."O|
00003b10  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00003b20  32 36 2c 70 73 70 72 69  74 65 73 2c 73 6e 61 6d  |26,psprites,snam|
00003b30  65 2c 72 65 6e 61 6d 65  0d 18 e2 20 24 66 6e 61  |e,rename... $fna|
00003b40  6d 65 3d 66 69 6c 65 6e  61 6d 65 24 2b 22 2e 21  |me=filename$+".!|
00003b50  53 70 72 69 74 65 73 22  0d 18 ec 29 c8 99 22 4f  |Sprites"...).."O|
00003b60  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00003b70  31 32 2c 70 73 70 72 69  74 65 73 2c 66 6e 61 6d  |12,psprites,fnam|
00003b80  65 0d 18 f6 30 c8 99 22  4f 53 5f 53 70 72 69 74  |e...0.."OS_Sprit|
00003b90  65 4f 70 22 2c 32 35 36  2b 32 36 2c 70 73 70 72  |eOp",256+26,pspr|
00003ba0  69 74 65 73 2c 72 65 6e  61 6d 65 2c 73 6e 61 6d  |ites,rename,snam|
00003bb0  65 0d 19 00 0c e7 20 6d  61 6b 65 20 8c 0d 19 0a  |e..... make ....|
00003bc0  19 20 20 f2 61 70 70 65  6e 64 5f 74 68 65 5f 73  |.  .append_the_s|
00003bd0  70 72 69 74 65 73 0d 19  14 21 20 20 24 66 6e 61  |prites...!  $fna|
00003be0  6d 65 3d 66 69 6c 65 6e  61 6d 65 24 2b 22 2e 53  |me=filename$+".S|
00003bf0  70 72 69 74 65 73 22 0d  19 1e 2b 20 20 c8 99 22  |prites"...+  .."|
00003c00  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 35 36  |OS_SpriteOp",256|
00003c10  2b 31 32 2c 75 73 70 72  69 74 65 73 2c 66 6e 61  |+12,usprites,fna|
00003c20  6d 65 0d 19 28 15 20 20  f2 64 65 6c 65 74 65 5f  |me..(.  .delete_|
00003c30  73 70 72 69 74 65 73 0d  19 32 05 cd 0d 19 3c 46  |sprites..2....<F|
00003c40  f2 73 61 76 65 5f 70 72  6f 67 5f 66 69 6c 65 28  |.save_prog_file(|
00003c50  66 69 6c 65 6e 61 6d 65  24 2b 22 2e 21 52 75 6e  |filename$+".!Run|
00003c60  49 6d 61 67 65 22 2c 22  42 61 73 69 63 22 2c 72  |Image","Basic",r|
00003c70  75 6e 69 6d 61 67 65 2c  72 69 5f 6c 65 6e 67 74  |unimage,ri_lengt|
00003c80  68 29 0d 19 46 3b f2 73  61 76 65 5f 70 72 6f 67  |h)..F;.save_prog|
00003c90  5f 66 69 6c 65 28 66 69  6c 65 6e 61 6d 65 24 2b  |_file(filename$+|
00003ca0  22 2e 21 52 75 6e 22 2c  22 4f 62 65 79 22 2c 72  |".!Run","Obey",r|
00003cb0  75 6e 2c 72 75 5f 6c 65  6e 67 74 68 29 0d 19 50  |un,ru_length)..P|
00003cc0  41 f2 73 61 76 65 5f 70  72 6f 67 5f 66 69 6c 65  |A.save_prog_file|
00003cd0  28 66 69 6c 65 6e 61 6d  65 24 2b 22 2e 54 65 6d  |(filename$+".Tem|
00003ce0  70 6c 61 74 65 73 22 2c  22 66 65 63 22 2c 74 65  |plates","fec",te|
00003cf0  6d 70 73 2c 74 65 5f 6c  65 6e 67 74 68 29 0d 19  |mps,te_length)..|
00003d00  5a 16 f2 73 61 76 65 5f  6c 6f 61 64 5f 64 61 74  |Z..save_load_dat|
00003d10  61 28 b9 29 0d 19 64 1e  f2 63 6c 6f 73 65 5f 77  |a(.)..d..close_w|
00003d20  69 6e 64 6f 77 28 73 61  76 65 5f 68 61 6e 64 6c  |indow(save_handl|
00003d30  65 29 0d 19 6e 0e 6d 6f  64 69 66 69 65 64 3d a3  |e)..n.modified=.|
00003d40  0d 19 78 1b c8 99 22 57  69 6d 70 5f 43 72 65 61  |..x..."Wimp_Crea|
00003d50  74 65 4d 65 6e 75 22 2c  2c 2d 31 0d 19 82 4f e7  |teMenu",,-1...O.|
00003d60  20 6f 6c 64 6e 61 6d 65  24 3c 3e 22 22 20 80 20  | oldname$<>"" . |
00003d70  6f 6c 64 6e 61 6d 65 24  3c 3e 22 3c 4f 62 65 79  |oldname$<>"<Obey|
00003d80  24 44 69 72 3e 22 20 80  20 6f 6c 64 6e 61 6d 65  |$Dir>" . oldname|
00003d90  24 3c 3e 66 69 6c 65 6e  61 6d 65 24 20 f2 63 6f  |$<>filename$ .co|
00003da0  6e 66 69 72 6d 5f 63 6f  70 79 0d 19 8c 05 e1 0d  |nfirm_copy......|
00003db0  19 96 04 0d 19 a0 12 dd  f2 63 6f 6e 66 69 72 6d  |.........confirm|
00003dc0  5f 63 6f 70 79 0d 19 aa  65 65 72 72 6f 72 24 28  |_copy...eerror$(|
00003dd0  31 38 29 3d 22 20 44 6f  20 79 6f 75 20 77 69 73  |18)=" Do you wis|
00003de0  68 20 74 6f 20 63 6f 70  79 20 74 68 65 20 70 72  |h to copy the pr|
00003df0  6f 67 72 61 6d 73 20 66  72 6f 6d 20 22 2b 6f 6c  |ograms from "+ol|
00003e00  64 6e 61 6d 65 24 2b 22  20 74 6f 20 74 68 65 20  |dname$+" to the |
00003e10  6e 65 77 20 73 61 76 65  3f 20 28 43 61 6e 63 65  |new save? (Cance|
00003e20  6c 20 61 62 6f 72 74 73  29 22 0d 19 b4 10 f2 65  |l aborts)".....e|
00003e30  72 72 6f 72 28 31 38 2c  33 29 0d 19 be 17 e7 20  |rror(18,3)..... |
00003e40  75 73 65 72 5f 72 65 73  70 6f 6e 73 65 3d 32 20  |user_response=2 |
00003e50  e1 0d 19 c8 27 2a 53 65  74 20 4f 6c 64 43 6f 70  |....'*Set OldCop|
00003e60  79 24 4f 70 74 69 6f 6e  73 20 3c 43 6f 70 79 24  |y$Options <Copy$|
00003e70  4f 70 74 69 6f 6e 73 3e  0d 19 d2 37 2a 53 65 74  |Options>...7*Set|
00003e80  20 43 6f 70 79 24 4f 70  74 69 6f 6e 73 20 41 20  | Copy$Options A |
00003e90  7e 43 20 7e 44 20 7e 46  20 7e 4c 20 7e 4e 20 7e  |~C ~D ~F ~L ~N ~|
00003ea0  50 20 7e 51 20 52 20 7e  53 20 7e 54 20 7e 56 0d  |P ~Q R ~S ~T ~V.|
00003eb0  19 dc 3a 41 24 3d 22 43  6f 70 79 20 22 2b 6f 6c  |..:A$="Copy "+ol|
00003ec0  64 6e 61 6d 65 24 2b 22  2e 50 72 6f 67 72 61 6d  |dname$+".Program|
00003ed0  73 20 22 2b 66 69 6c 65  6e 61 6d 65 24 2b 22 2e  |s "+filename$+".|
00003ee0  50 72 6f 67 72 61 6d 73  22 0d 19 e6 08 ff 20 41  |Programs"..... A|
00003ef0  24 0d 19 f0 27 2a 53 65  74 20 43 6f 70 79 24 4f  |$...'*Set Copy$O|
00003f00  70 74 69 6f 6e 73 20 3c  4f 6c 64 43 6f 70 79 24  |ptions <OldCopy$|
00003f10  4f 70 74 69 6f 6e 73 3e  0d 19 fa 05 e1 0d 1a 04  |Options>........|
00003f20  04 0d 1a 0e 17 dd f2 73  61 76 65 5f 6c 6f 61 64  |.......save_load|
00003f30  5f 64 61 74 61 28 73 29  0d 1a 18 1c 46 24 3d 66  |_data(s)....F$=f|
00003f40  69 6c 65 6e 61 6d 65 24  2b 22 2e 4d 65 6e 75 44  |ilename$+".MenuD|
00003f50  61 74 61 22 0d 1a 22 21  e7 20 73 20 58 3d ae 20  |ata".."!. s X=. |
00003f60  46 24 20 20 20 20 20 20  20 20 20 20 20 8b 20 58  |F$           . X|
00003f70  3d 8e 20 46 24 0d 1a 2c  15 e7 20 58 3d 30 20 f2  |=. F$..,.. X=0 .|
00003f80  73 6c 5f 65 72 72 6f 72  3a e1 0d 1a 36 12 72 3d  |sl_error:...6.r=|
00003f90  38 32 3a 6d 3d 37 37 3a  6c 3d 37 36 0d 1a 40 23  |82:m=77:l=76..@#|
00003fa0  e7 20 73 20 d5 23 58 2c  38 32 20 20 20 20 20 20  |. s .#X,82      |
00003fb0  20 20 20 20 20 20 20 20  8b 20 72 3d 9a 23 58 0d  |        . r=.#X.|
00003fc0  1a 4a 23 e7 20 73 20 d5  23 58 2c 37 37 20 20 20  |.J#. s .#X,77   |
00003fd0  20 20 20 20 20 20 20 20  20 20 20 8b 20 6d 3d 9a  |           . m=.|
00003fe0  23 58 0d 1a 54 23 e7 20  73 20 d5 23 58 2c 37 36  |#X..T#. s .#X,76|
00003ff0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 8b 20  |              . |
00004000  6c 3d 9a 23 58 0d 1a 5e  28 e7 20 ac 20 73 20 80  |l=.#X..^(. . s .|
00004010  20 28 28 72 2b 6d 2b 6c  29 3c 3e 32 33 35 29 20  | ((r+m+l)<>235) |
00004020  8c 20 f2 73 6c 5f 65 72  72 6f 72 3a e1 0d 1a 68  |. .sl_error:...h|
00004030  2a e7 20 73 20 d5 23 58  2c 6e 75 6d 5f 6d 65 6e  |*. s .#X,num_men|
00004040  73 20 20 20 20 20 20 20  20 8b 20 6e 75 6d 5f 6d  |s        . num_m|
00004050  65 6e 73 3d 9a 23 58 0d  1a 72 25 e7 20 73 20 f1  |ens=.#X..r%. s .|
00004060  23 58 2c 6d 61 6b 65 20  20 20 20 20 20 20 20 20  |#X,make         |
00004070  20 20 8b 20 e8 23 58 2c  6d 61 6b 65 0d 1a 7c 19  |  . .#X,make..|.|
00004080  e3 20 6d 65 6e 75 3d 30  20 b8 20 6e 75 6d 5f 6d  |. menu=0 . num_m|
00004090  65 6e 73 2d 31 0d 1a 86  2d 20 20 e7 20 73 20 f1  |ens-1...-  . s .|
000040a0  23 58 2c 6d 6e 61 6d 65  24 28 6d 65 6e 75 29 20  |#X,mname$(menu) |
000040b0  8b 20 e8 23 58 2c 6d 6e  61 6d 65 24 28 6d 65 6e  |. .#X,mname$(men|
000040c0  75 29 0d 1a 90 2c 20 20  e7 20 73 20 d5 23 58 2c  |u)...,  . s .#X,|
000040d0  74 79 70 65 28 6d 65 6e  75 29 20 20 20 20 8b 20  |type(menu)    . |
000040e0  74 79 70 65 28 6d 65 6e  75 29 3d 9a 23 58 0d 1a  |type(menu)=.#X..|
000040f0  9a 2f 20 20 e7 20 73 20  d5 23 58 2c 6e 6f 5f 6f  |./  . s .#X,no_o|
00004100  70 74 73 28 6d 65 6e 75  29 20 8b 20 6e 6f 5f 6f  |pts(menu) . no_o|
00004110  70 74 73 28 6d 65 6e 75  29 3d 9a 23 58 0d 1a a4  |pts(menu)=.#X...|
00004120  25 20 20 e7 20 6e 6f 5f  6f 70 74 73 28 6d 65 6e  |%  . no_opts(men|
00004130  75 29 3c 3e 32 35 35 20  8c 20 f2 73 6c 5f 65 61  |u)<>255 . .sl_ea|
00004140  63 68 0d 1a ae 05 ed 0d  1a b8 07 d9 23 58 0d 1a  |ch..........#X..|
00004150  c2 1e e7 20 73 20 ff 22  53 65 74 54 79 70 65 20  |... s ."SetType |
00004160  22 2b 46 24 2b 22 20 44  61 74 61 22 0d 1a cc 2e  |"+F$+" Data"....|
00004170  e7 20 ac 20 73 20 ff 22  49 63 6f 6e 73 70 72 69  |. . s ."Iconspri|
00004180  74 65 73 20 22 2b 66 69  6c 65 6e 61 6d 65 24 2b  |tes "+filename$+|
00004190  22 2e 53 70 72 69 74 65  73 22 0d 1a d6 0e 6d 6f  |".Sprites"....mo|
000041a0  64 69 66 69 65 64 3d a3  0d 1a e0 05 e1 0d 1a ea  |dified=.........|
000041b0  04 0d 1a f4 0d dd f2 73  6c 5f 65 61 63 68 0d 1a  |.......sl_each..|
000041c0  fe 1c e3 20 69 74 65 6d  3d 30 20 b8 20 6e 6f 5f  |... item=0 . no_|
000041d0  6f 70 74 73 28 6d 65 6e  75 29 0d 1b 08 39 20 20  |opts(menu)...9  |
000041e0  e7 20 73 20 d5 23 58 2c  61 63 74 69 6f 6e 28 6d  |. s .#X,action(m|
000041f0  65 6e 75 2c 69 74 65 6d  29 20 20 20 8b 20 61 63  |enu,item)   . ac|
00004200  74 69 6f 6e 28 6d 65 6e  75 2c 69 74 65 6d 29 3d  |tion(menu,item)=|
00004210  9a 23 58 0d 1b 12 38 20  20 e7 20 73 20 f1 23 58  |.#X...8  . s .#X|
00004220  2c 66 6e 61 6d 65 24 28  6d 65 6e 75 2c 69 74 65  |,fname$(menu,ite|
00004230  6d 29 20 20 8b 20 e8 23  58 2c 66 6e 61 6d 65 24  |m)  . .#X,fname$|
00004240  28 6d 65 6e 75 2c 69 74  65 6d 29 0d 1b 1c 37 20  |(menu,item)...7 |
00004250  20 e7 20 73 20 f1 23 58  2c 74 65 78 74 24 28 6d  | . s .#X,text$(m|
00004260  65 6e 75 2c 69 74 65 6d  29 20 20 20 8b 20 e8 23  |enu,item)   . .#|
00004270  58 2c 74 65 78 74 24 28  6d 65 6e 75 2c 69 74 65  |X,text$(menu,ite|
00004280  6d 29 0d 1b 26 39 20 20  e7 20 73 20 f1 23 58 2c  |m)..&9  . s .#X,|
00004290  73 70 72 69 74 65 24 28  6d 65 6e 75 2c 69 74 65  |sprite$(menu,ite|
000042a0  6d 29 20 8b 20 e8 23 58  2c 73 70 72 69 74 65 24  |m) . .#X,sprite$|
000042b0  28 6d 65 6e 75 2c 69 74  65 6d 29 0d 1b 30 37 20  |(menu,item)..07 |
000042c0  20 e7 20 73 20 f1 23 58  2c 66 74 79 70 65 28 6d  | . s .#X,ftype(m|
000042d0  65 6e 75 2c 69 74 65 6d  29 20 20 20 8b 20 e8 23  |enu,item)   . .#|
000042e0  58 2c 66 74 79 70 65 28  6d 65 6e 75 2c 69 74 65  |X,ftype(menu,ite|
000042f0  6d 29 0d 1b 3a 05 ed 0d  1b 44 05 e1 0d 1b 4e 04  |m)..:....D....N.|
00004300  0d 1b 58 0e dd f2 73 6c  5f 65 72 72 6f 72 0d 1b  |..X...sl_error..|
00004310  62 07 d9 23 30 0d 1b 6c  10 f2 65 72 72 6f 72 28  |b..#0..l..error(|
00004320  31 30 2c 31 29 0d 1b 76  05 e1 0d 1b 80 04 0d 1b  |10,1)..v........|
00004330  8a 14 dd f2 6c 6f 61 64  5f 61 70 70 5f 73 74 75  |....load_app_stu|
00004340  66 66 0d 1b 94 46 f2 63  72 65 61 74 65 5f 73 70  |ff...F.create_sp|
00004350  72 69 74 65 5f 61 72 65  61 28 22 3c 4d 65 6e 61  |rite_area("<Mena|
00004360  6b 65 72 24 44 69 72 3e  2e 4d 65 6e 75 2e 53 70  |ker$Dir>.Menu.Sp|
00004370  72 69 74 65 73 22 2c 75  73 70 72 69 74 65 73 2c  |rites",usprites,|
00004380  38 30 2a 31 30 32 34 29  0d 1b 9e 43 f2 63 72 65  |80*1024)...C.cre|
00004390  61 74 65 5f 73 70 72 69  74 65 5f 61 72 65 61 28  |ate_sprite_area(|
000043a0  22 3c 4d 65 6e 61 6b 65  72 24 44 69 72 3e 2e 4d  |"<Menaker$Dir>.M|
000043b0  65 6e 75 2e 21 53 70 72  69 74 65 73 22 2c 70 73  |enu.!Sprites",ps|
000043c0  70 72 69 74 65 73 2c 35  31 32 29 0d 1b a8 46 72  |prites,512)...Fr|
000043d0  69 5f 6c 65 6e 67 74 68  3d a4 6c 6f 61 64 5f 70  |i_length=.load_p|
000043e0  72 6f 67 5f 66 69 6c 65  28 22 3c 4d 65 6e 61 6b  |rog_file("<Menak|
000043f0  65 72 24 44 69 72 3e 2e  4d 65 6e 75 2e 21 52 75  |er$Dir>.Menu.!Ru|
00004400  6e 49 6d 61 67 65 22 2c  72 75 6e 69 6d 61 67 65  |nImage",runimage|
00004410  29 0d 1b b2 3c 72 75 5f  6c 65 6e 67 74 68 3d a4  |)...<ru_length=.|
00004420  6c 6f 61 64 5f 70 72 6f  67 5f 66 69 6c 65 28 22  |load_prog_file("|
00004430  3c 4d 65 6e 61 6b 65 72  24 44 69 72 3e 2e 4d 65  |<Menaker$Dir>.Me|
00004440  6e 75 2e 21 52 75 6e 22  2c 72 75 6e 29 0d 1b bc  |nu.!Run",run)...|
00004450  43 74 65 5f 6c 65 6e 67  74 68 3d a4 6c 6f 61 64  |Cte_length=.load|
00004460  5f 70 72 6f 67 5f 66 69  6c 65 28 22 3c 4d 65 6e  |_prog_file("<Men|
00004470  61 6b 65 72 24 44 69 72  3e 2e 4d 65 6e 75 2e 54  |aker$Dir>.Menu.T|
00004480  65 6d 70 6c 61 74 65 73  22 2c 74 65 6d 70 73 29  |emplates",temps)|
00004490  0d 1b c6 05 e1 0d 1b d0  04 0d 1b da 1a dd a4 6c  |...............l|
000044a0  6f 61 64 5f 70 72 6f 67  5f 66 69 6c 65 28 6e 24  |oad_prog_file(n$|
000044b0  2c 6d 29 0d 1b e4 0d 24  66 6e 61 6d 65 3d 6e 24  |,m)....$fname=n$|
000044c0  0d 1b ee 20 c8 99 22 4f  53 5f 46 69 6c 65 22 2c  |... .."OS_File",|
000044d0  31 37 2c 66 6e 61 6d 65  20 b8 20 2c 2c 2c 2c 6c  |17,fname . ,,,,l|
000044e0  0d 1b f8 17 ff 22 4c 6f  61 64 20 22 2b 6e 24 2b  |....."Load "+n$+|
000044f0  22 20 22 2b c3 7e 6d 0d  1c 02 06 3d 6c 0d 1c 0c  |" "+.~m....=l...|
00004500  04 0d 1c 16 1f dd f2 73  61 76 65 5f 70 72 6f 67  |.......save_prog|
00004510  5f 66 69 6c 65 28 6e 24  2c 74 24 2c 6d 2c 6c 29  |_file(n$,t$,m,l)|
00004520  0d 1c 20 20 ff 22 53 61  76 65 20 22 2b 6e 24 2b  |..  ."Save "+n$+|
00004530  22 20 22 2b c3 7e 6d 2b  22 20 2b 22 2b c3 7e 6c  |" "+.~m+" +"+.~l|
00004540  0d 1c 2a 19 ff 22 53 65  74 74 79 70 65 20 22 2b  |..*.."Settype "+|
00004550  6e 24 2b 22 20 22 2b 74  24 0d 1c 34 05 e1 0d 1c  |n$+" "+t$..4....|
00004560  3e 04 0d 1c 48 23 dd f2  63 72 65 61 74 65 5f 73  |>...H#..create_s|
00004570  70 72 69 74 65 5f 61 72  65 61 28 6e 24 2c 6d 2c  |prite_area(n$,m,|
00004580  73 69 7a 65 29 0d 1c 52  20 21 6d 3d 73 69 7a 65  |size)..R !m=size|
00004590  3a 6d 21 34 3d 30 3a 6d  21 38 3d 31 36 3a 6d 21  |:m!4=0:m!8=16:m!|
000045a0  31 32 3d 31 36 0d 1c 5c  1b c8 99 22 4f 53 5f 53  |12=16..\..."OS_S|
000045b0  70 72 69 74 65 4f 70 22  2c 32 35 36 2b 39 2c 6d  |priteOp",256+9,m|
000045c0  0d 1c 66 0d 24 66 6e 61  6d 65 3d 6e 24 0d 1c 70  |..f.$fname=n$..p|
000045d0  22 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |".."OS_SpriteOp"|
000045e0  2c 32 35 36 2b 31 30 2c  6d 2c 66 6e 61 6d 65 0d  |,256+10,m,fname.|
000045f0  1c 7a 05 e1 0d 1c 84 04  0d 1c 8e 17 dd a4 69 63  |.z............ic|
00004600  6f 6e 5f 74 6f 5f 69 74  65 6d 28 69 63 6e 29 0d  |on_to_item(icn).|
00004610  1c 98 0a 69 74 3d 69 63  6e 0d 1c a2 14 e7 20 69  |...it=icn..... i|
00004620  74 3e 31 37 20 8c 20 69  74 2d 3d 31 38 0d 1c ac  |t>17 . it-=18...|
00004630  07 3d 69 74 0d 1c b6 04  0d 1c c0 0f dd f2 6c 6f  |.=it..........lo|
00004640  61 64 5f 66 69 6c 65 0d  1c ca 10 e7 20 6d 6f 64  |ad_file..... mod|
00004650  69 66 69 65 64 20 8c 0d  1c d4 12 20 20 f2 65 72  |ified .....  .er|
00004660  72 6f 72 28 31 31 2c 33  29 0d 1c de 19 20 20 e7  |ror(11,3)....  .|
00004670  20 75 73 65 72 5f 72 65  73 70 6f 6e 73 65 3d 32  | user_response=2|
00004680  20 e1 0d 1c e8 05 cd 0d  1c f2 0f f2 63 6c 65 61  | ...........clea|
00004690  72 5f 64 61 74 61 0d 1c  fc 13 66 69 6c 65 6e 61  |r_data....filena|
000046a0  6d 65 24 3d 66 69 6c 65  24 0d 1d 06 16 f2 73 61  |me$=file$.....sa|
000046b0  76 65 5f 6c 6f 61 64 5f  64 61 74 61 28 a3 29 0d  |ve_load_data(.).|
000046c0  1d 10 19 f2 63 6c 6f 73  65 5f 77 69 6e 64 6f 77  |....close_window|
000046d0  28 68 61 6e 64 6c 65 29  0d 1d 1a 1b c8 8e 20 74  |(handle)...... t|
000046e0  79 70 65 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |ype(current_menu|
000046f0  29 20 ca 0d 1d 24 1d 20  20 20 c9 20 31 3a 68 61  |) ...$.   . 1:ha|
00004700  6e 64 6c 65 3d 74 79 70  31 5f 68 61 6e 64 6c 65  |ndle=typ1_handle|
00004710  0d 1d 2e 1d 20 20 20 c9  20 32 3a 68 61 6e 64 6c  |....   . 2:handl|
00004720  65 3d 74 79 70 32 5f 68  61 6e 64 6c 65 0d 1d 38  |e=typ2_handle..8|
00004730  1d 20 20 20 c9 20 33 3a  68 61 6e 64 6c 65 3d 74  |.   . 3:handle=t|
00004740  79 70 33 5f 68 61 6e 64  6c 65 0d 1d 42 05 cb 0d  |yp3_handle..B...|
00004750  1d 4c 18 f2 6f 70 65 6e  5f 77 69 6e 64 6f 77 28  |.L..open_window(|
00004760  68 61 6e 64 6c 65 29 0d  1d 56 13 f2 72 65 64 6f  |handle)..V..redo|
00004770  5f 61 6c 6c 5f 69 63 6f  6e 73 0d 1d 60 10 f2 72  |_all_icons..`..r|
00004780  65 64 72 61 77 5f 6c 69  73 74 0d 1d 6a 28 f2 73  |edraw_list..j(.s|
00004790  65 74 5f 69 6e 64 69 72  65 63 74 65 64 28 73 61  |et_indirected(sa|
000047a0  76 65 5f 68 61 6e 64 6c  65 2c 31 2c 66 69 6c 65  |ve_handle,1,file|
000047b0  24 29 0d 1d 74 0e 6d 6f  64 69 66 69 65 64 3d a3  |$)..t.modified=.|
000047c0  0d 1d 7e 27 ff 22 53 65  74 20 4d 65 6e 61 6b 65  |..~'."Set Menake|
000047d0  72 53 65 72 76 65 72 24  44 69 72 20 22 2b 66 69  |rServer$Dir "+fi|
000047e0  6c 65 6e 61 6d 65 24 0d  1d 88 05 e1 0d 1d 92 04  |lename$.........|
000047f0  0d 1d 9c 0e dd f2 63 6c  65 61 72 5f 69 74 0d 1d  |......clear_it..|
00004800  a6 13 75 73 65 72 5f 72  65 73 70 6f 6e 73 65 3d  |..user_response=|
00004810  31 0d 1d b0 1d e7 20 6d  6f 64 69 66 69 65 64 20  |1..... modified |
00004820  8c 20 f2 65 72 72 6f 72  28 31 32 2c 33 29 0d 1d  |. .error(12,3)..|
00004830  ba 17 e7 20 75 73 65 72  5f 72 65 73 70 6f 6e 73  |... user_respons|
00004840  65 3d 31 20 8c 0d 1d c4  11 20 20 f2 63 6c 65 61  |e=1 .....  .clea|
00004850  72 5f 64 61 74 61 0d 1d  ce 15 20 20 f2 72 65 64  |r_data....  .red|
00004860  6f 5f 61 6c 6c 5f 69 63  6f 6e 73 0d 1d d8 12 20  |o_all_icons.... |
00004870  20 f2 72 65 64 72 61 77  5f 6c 69 73 74 0d 1d e2  | .redraw_list...|
00004880  05 cd 0d 1d ec 05 e1 0d  1d f6 04 0d 1e 00 10 dd  |................|
00004890  f2 63 6c 65 61 72 5f 64  61 74 61 0d 1e 0a 1a 6e  |.clear_data....n|
000048a0  6f 5f 6f 70 74 73 28 29  3d 32 35 35 3a 74 79 70  |o_opts()=255:typ|
000048b0  65 28 29 3d 31 0d 1e 14  3c 6d 6e 61 6d 65 24 28  |e()=1...<mname$(|
000048c0  29 3d 22 22 3a 6d 6e 61  6d 65 24 28 30 29 3d 22  |)="":mname$(0)="|
000048d0  4d 61 69 6e 20 4d 65 6e  75 22 3a 61 63 74 69 6f  |Main Menu":actio|
000048e0  6e 28 29 3d 30 3a 66 6e  61 6d 65 24 28 29 3d 22  |n()=0:fname$()="|
000048f0  22 0d 1e 1e 25 74 65 78  74 24 28 29 3d 22 22 3a  |"...%text$()="":|
00004900  73 70 72 69 74 65 24 28  29 3d 22 22 3a 66 74 79  |sprite$()="":fty|
00004910  70 65 28 29 3d 30 0d 1e  28 3d 74 79 70 65 3d 31  |pe()=0..(=type=1|
00004920  3a 63 75 72 72 65 6e 74  5f 6d 65 6e 75 3d 30 3a  |:current_menu=0:|
00004930  6e 75 6d 5f 6d 65 6e 73  3d 31 3a 61 6c 74 65 72  |num_mens=1:alter|
00004940  5f 69 74 65 6d 3d 2d 31  3a 6d 6f 64 69 66 69 65  |_item=-1:modifie|
00004950  64 3d a3 0d 1e 32 10 66  69 6c 65 6e 61 6d 65 24  |d=...2.filename$|
00004960  3d 22 22 0d 1e 3c 1e f2  63 6c 6f 73 65 5f 77 69  |=""..<..close_wi|
00004970  6e 64 6f 77 28 63 6f 70  79 5f 68 61 6e 64 6c 65  |ndow(copy_handle|
00004980  29 0d 1e 46 2e f2 73 65  74 5f 69 6e 64 69 72 65  |)..F..set_indire|
00004990  63 74 65 64 28 73 61 76  65 5f 68 61 6e 64 6c 65  |cted(save_handle|
000049a0  2c 31 2c 22 21 4d 65 6e  75 46 69 6c 65 22 29 0d  |,1,"!MenuFile").|
000049b0  1e 50 05 e1 0d 1e 5a 04  0d 1e 64 18 dd f2 61 70  |.P....Z...d...ap|
000049c0  70 65 6e 64 5f 74 68 65  5f 73 70 72 69 74 65 73  |pend_the_sprites|
000049d0  0d 1e 6e 2b c8 99 22 4f  53 5f 53 70 72 69 74 65  |..n+.."OS_Sprite|
000049e0  4f 70 22 2c 32 35 36 2b  38 2c 75 73 70 72 69 74  |Op",256+8,usprit|
000049f0  65 73 20 b8 20 2c 2c 2c  6e 75 6d 0d 1e 78 14 63  |es . ,,,num..x.c|
00004a00  68 65 63 6b 24 28 29 3d  22 22 3a 63 63 3d 30 0d  |heck$()="":cc=0.|
00004a10  1e 82 19 e3 20 6d 65 6e  75 3d 30 20 b8 20 6e 75  |.... menu=0 . nu|
00004a20  6d 5f 6d 65 6e 73 2d 31  0d 1e 8c 1f 20 20 e7 20  |m_mens-1....  . |
00004a30  6e 6f 5f 6f 70 74 73 28  6d 65 6e 75 29 3c 3e 32  |no_opts(menu)<>2|
00004a40  35 35 20 f2 61 5f 62 0d  1e 96 05 ed 0d 1e a0 05  |55 .a_b.........|
00004a50  e1 0d 1e aa 04 0d 1e b4  09 dd f2 61 5f 62 0d 1e  |...........a_b..|
00004a60  be 1e e3 20 6f 70 74 69  6f 6e 3d 30 20 b8 20 6e  |... option=0 . n|
00004a70  6f 5f 6f 70 74 73 28 6d  65 6e 75 29 0d 1e c8 1d  |o_opts(menu)....|
00004a80  20 20 66 69 24 3d 66 6e  61 6d 65 24 28 6d 65 6e  |  fi$=fname$(men|
00004a90  75 2c 6f 70 74 69 6f 6e  29 0d 1e d2 48 20 20 e7  |u,option)...H  .|
00004aa0  20 61 63 74 69 6f 6e 28  6d 65 6e 75 2c 6f 70 74  | action(menu,opt|
00004ab0  69 6f 6e 29 3c 3e 31 20  80 20 66 74 79 70 65 28  |ion)<>1 . ftype(|
00004ac0  6d 65 6e 75 2c 6f 70 74  69 6f 6e 29 3d 26 32 30  |menu,option)=&20|
00004ad0  30 30 20 80 20 a4 6e 6f  74 5f 74 68 65 72 65 20  |00 . .not_there |
00004ae0  8c 0d 1e dc 2c 20 20 20  20 f2 61 70 70 65 6e 64  |....,    .append|
00004af0  5f 73 70 72 69 74 65 73  28 66 6e 61 6d 65 24 28  |_sprites(fname$(|
00004b00  6d 65 6e 75 2c 6f 70 74  69 6f 6e 29 29 0d 1e e6  |menu,option))...|
00004b10  24 20 20 20 20 e7 20 a9  28 63 68 65 63 6b 24 28  |$    . .(check$(|
00004b20  63 63 29 29 3e 3d 32 34  30 20 8c 20 63 63 2b 3d  |cc))>=240 . cc+=|
00004b30  31 0d 1e f0 17 20 20 20  20 63 68 65 63 6b 24 28  |1....    check$(|
00004b40  63 63 29 2b 3d 66 69 24  0d 1e fa 07 20 20 cd 0d  |cc)+=fi$....  ..|
00004b50  1f 04 05 ed 0d 1f 0e 05  e1 0d 1f 18 04 0d 1f 22  |..............."|
00004b60  0f dd a4 6e 6f 74 5f 74  68 65 72 65 0d 1f 2c 0b  |...not_there..,.|
00004b70  66 6f 75 6e 64 3d a3 0d  1f 36 15 66 69 24 3d a4  |found=...6.fi$=.|
00004b80  67 65 74 6c 65 61 66 28  66 69 24 29 0d 1f 40 0e  |getleaf(fi$)..@.|
00004b90  e3 20 63 3d 30 20 b8 20  63 63 0d 1f 4a 26 20 20  |. c=0 . cc..J&  |
00004ba0  e7 20 a7 63 68 65 63 6b  24 28 63 29 2c 66 69 24  |. .check$(c),fi$|
00004bb0  29 20 8c 20 66 6f 75 6e  64 3d b9 3a 63 3d 63 63  |) . found=.:c=cc|
00004bc0  0d 1f 54 05 ed 0d 1f 5e  0c 3d ac 20 66 6f 75 6e  |..T....^.=. foun|
00004bd0  64 0d 1f 68 04 0d 1f 72  14 dd f2 64 65 6c 65 74  |d..h...r...delet|
00004be0  65 5f 73 70 72 69 74 65  73 0d 1f 7c 2b c8 99 22  |e_sprites..|+.."|
00004bf0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 35 36  |OS_SpriteOp",256|
00004c00  2b 38 2c 75 73 70 72 69  74 65 73 20 b8 20 2c 2c  |+8,usprites . ,,|
00004c10  2c 6e 75 6d 0d 1f 86 0d  e7 20 6e 75 6d 3d 31 20  |,num..... num=1 |
00004c20  e1 0d 1f 90 11 e3 20 6e  3d 31 20 b8 20 6e 75 6d  |...... n=1 . num|
00004c30  2d 31 0d 1f 9a 3d 20 20  c8 99 22 4f 53 5f 53 70  |-1...=  .."OS_Sp|
00004c40  72 69 74 65 4f 70 22 2c  32 35 36 2b 31 33 2c 75  |riteOp",256+13,u|
00004c50  73 70 72 69 74 65 73 2c  73 6e 61 6d 65 2c 32 35  |sprites,sname,25|
00004c60  36 2c 32 20 b8 20 2c 2c  2c 6c 65 6e 67 74 68 0d  |6,2 . ,,,length.|
00004c70  1f a4 2b 20 20 c8 99 22  4f 53 5f 53 70 72 69 74  |..+  .."OS_Sprit|
00004c80  65 4f 70 22 2c 32 35 36  2b 32 35 2c 75 73 70 72  |eOp",256+25,uspr|
00004c90  69 74 65 73 2c 73 6e 61  6d 65 0d 1f ae 05 ed 0d  |ites,sname......|
00004ca0  1f b8 05 e1 0d 1f c2 04  0d 1f cc 18 dd f2 61 70  |..............ap|
00004cb0  70 65 6e 64 5f 73 70 72  69 74 65 73 28 66 24 29  |pend_sprites(f$)|
00004cc0  0d 1f d6 1e 6c 65 61 66  24 3d a4 61 6c 70 68 61  |....leaf$=.alpha|
00004cd0  28 a4 67 65 74 6c 65 61  66 28 66 24 29 29 0d 1f  |(.getleaf(f$))..|
00004ce0  e0 1c 6c 65 61 66 24 3d  c0 6c 65 61 66 24 2c a9  |..leaf$=.leaf$,.|
00004cf0  28 6c 65 61 66 24 29 2d  31 29 0d 1f ea 16 66 6e  |(leaf$)-1)....fn|
00004d00  24 3d 66 24 2b 22 2e 21  53 70 72 69 74 65 73 22  |$=f$+".!Sprites"|
00004d10  0d 1f f4 0e 24 66 6e 61  6d 65 3d 66 6e 24 0d 1f  |....$fname=fn$..|
00004d20  fe 0b 58 3d 8e 20 66 6e  24 0d 20 08 07 d9 23 58  |..X=. fn$. ...#X|
00004d30  0d 20 12 0b e7 20 58 3d  30 20 8c 0d 20 1c 50 20  |. ... X=0 .. .P |
00004d40  20 f2 72 65 70 6f 72 74  5f 65 72 72 6f 72 28 22  | .report_error("|
00004d50  43 61 6e 27 74 20 66 69  6e 64 20 73 70 72 69 74  |Can't find sprit|
00004d60  65 20 66 69 6c 65 20 66  6f 72 20 22 2b 66 24 2b  |e file for "+f$+|
00004d70  22 2c 20 62 75 74 20 77  69 6c 6c 20 63 6f 6e 74  |", but will cont|
00004d80  69 6e 75 65 2e 2e 2e 22  2c 31 29 0d 20 26 07 20  |inue...",1). &. |
00004d90  20 e1 0d 20 30 05 cd 0d  20 3a 29 c8 99 22 4f 53  | .. 0... :).."OS|
00004da0  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 31  |_SpriteOp",256+1|
00004db0  31 2c 75 73 70 72 69 74  65 73 2c 66 6e 61 6d 65  |1,usprites,fname|
00004dc0  0d 20 44 11 6f 6c 64 5f  6e 75 6d 3d 6e 75 6d 2b  |. D.old_num=num+|
00004dd0  31 0d 20 4e 05 f5 0d 20  58 2d 20 20 c8 99 22 4f  |1. N... X-  .."O|
00004de0  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00004df0  38 2c 75 73 70 72 69 74  65 73 20 b8 20 2c 2c 2c  |8,usprites . ,,,|
00004e00  6e 75 6d 0d 20 62 09 20  20 64 3d a3 0d 20 6c 17  |num. b.  d=.. l.|
00004e10  20 20 e3 20 73 3d 6f 6c  64 5f 6e 75 6d 20 b8 20  |  . s=old_num . |
00004e20  6e 75 6d 0d 20 76 3f 20  20 20 20 c8 99 22 4f 53  |num. v?    .."OS|
00004e30  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 31  |_SpriteOp",256+1|
00004e40  33 2c 75 73 70 72 69 74  65 73 2c 73 6e 61 6d 65  |3,usprites,sname|
00004e50  2c 32 35 36 2c 73 20 b8  20 2c 2c 2c 6c 65 6e 67  |,256,s . ,,,leng|
00004e60  74 68 0d 20 80 28 20 20  20 20 73 70 72 69 74 65  |th. .(    sprite|
00004e70  24 3d a4 61 6c 70 68 61  28 a4 67 65 74 5f 6e 61  |$=.alpha(.get_na|
00004e80  6d 65 28 73 6e 61 6d 65  29 29 0d 20 8a 1a 20 20  |me(sname)). ..  |
00004e90  20 20 e7 20 73 70 72 69  74 65 24 3c 3e 6c 65 61  |  . sprite$<>lea|
00004ea0  66 24 20 8c 0d 20 94 18  20 20 20 20 20 20 24 73  |f$ .. ..      $s|
00004eb0  6e 61 6d 65 3d 73 70 72  69 74 65 24 0d 20 9e 2f  |name=sprite$. ./|
00004ec0  20 20 20 20 20 20 c8 99  22 4f 53 5f 53 70 72 69  |      .."OS_Spri|
00004ed0  74 65 4f 70 22 2c 32 35  36 2b 32 35 2c 75 73 70  |teOp",256+25,usp|
00004ee0  72 69 74 65 73 2c 73 6e  61 6d 65 0d 20 a8 0f 20  |rites,sname. .. |
00004ef0  20 20 20 20 20 73 3d 6e  75 6d 0d 20 b2 0d 20 20  |     s=num. ..  |
00004f00  20 20 20 20 64 3d b9 0d  20 bc 09 20 20 20 20 cd  |    d=.. ..    .|
00004f10  0d 20 c6 07 20 20 ed 0d  20 d0 09 fd 20 64 3d a3  |. ..  .. ... d=.|
00004f20  0d 20 da 2b c8 99 22 4f  53 5f 53 70 72 69 74 65  |. .+.."OS_Sprite|
00004f30  4f 70 22 2c 32 35 36 2b  38 2c 75 73 70 72 69 74  |Op",256+8,usprit|
00004f40  65 73 20 b8 20 2c 2c 2c  6e 75 6d 0d 20 e4 05 e1  |es . ,,,num. ...|
00004f50  0d 20 ee 04 0d 20 f8 0a  dd a4 6d 28 6e 29 0d 21  |. ... ....m(n).!|
00004f60  02 16 3d c0 6d 6e 61 6d  65 24 28 69 63 6f 6e 29  |..=.mname$(icon)|
00004f70  2c 31 30 29 0d 21 0c 04  0d 21 16 11 dd f2 72 65  |,10).!...!....re|
00004f80  61 64 5f 65 72 72 6f 72  73 0d 21 20 58 65 72 72  |ad_errors.! Xerr|
00004f90  6f 72 24 28 30 29 3d 22  53 6f 72 72 79 2c 20 62  |or$(0)="Sorry, b|
00004fa0  75 74 20 74 68 65 72 65  27 73 20 61 20 70 72 6f  |ut there's a pro|
00004fb0  62 6c 65 6d 20 3a 20 50  6c 65 61 73 65 20 66 69  |blem : Please fi|
00004fc0  6e 64 20 21 46 6f 6e 74  73 20 61 6e 64 20 74 72  |nd !Fonts and tr|
00004fd0  79 20 6c 6f 61 64 69 6e  67 20 61 67 61 69 6e 2e  |y loading again.|
00004fe0  22 0d 21 2a 55 65 72 72  6f 72 24 28 31 29 3d 22  |".!*Uerror$(1)="|
00004ff0  54 68 65 72 65 20 69 73  20 75 6e 73 61 76 65 64  |There is unsaved|
00005000  20 64 61 74 61 2e 20 41  72 65 20 79 6f 75 20 73  | data. Are you s|
00005010  75 72 65 20 79 6f 75 20  77 61 6e 74 20 74 6f 20  |ure you want to |
00005020  71 75 69 74 3f 20 28 43  61 6e 63 65 6c 20 61 62  |quit? (Cancel ab|
00005030  6f 72 74 73 29 22 0d 21  34 3e 65 72 72 6f 72 24  |orts)".!4>error$|
00005040  28 32 29 3d 22 54 68 65  20 66 69 6c 65 20 79 6f  |(2)="The file yo|
00005050  75 20 64 72 61 67 67 65  64 20 69 73 20 6e 6f 74  |u dragged is not|
00005060  20 61 20 72 65 63 6f 67  6e 69 73 65 64 20 6d 65  | a recognised me|
00005070  6e 75 2e 22 0d 21 3e 53  65 72 72 6f 72 24 28 33  |nu.".!>Serror$(3|
00005080  29 3d 22 53 6f 72 72 79  2c 20 62 75 74 20 74 68  |)="Sorry, but th|
00005090  69 73 20 76 65 72 73 69  6f 6e 20 6f 66 20 74 68  |is version of th|
000050a0  65 20 70 72 6f 67 72 61  6d 20 77 69 6c 6c 20 6e  |e program will n|
000050b0  6f 74 20 73 75 70 70 6f  72 74 20 6d 6f 72 65 20  |ot support more |
000050c0  69 74 65 6d 73 2e 22 0d  21 48 5d 65 72 72 6f 72  |items.".!H]error|
000050d0  24 28 34 29 3d 22 53 6f  72 72 79 2c 20 62 75 74  |$(4)="Sorry, but|
000050e0  20 79 6f 75 20 63 61 6e  27 74 20 64 65 6c 65 74  | you can't delet|
000050f0  65 20 74 68 65 20 6d 61  69 6e 20 6d 65 6e 75 20  |e the main menu |
00005100  2d 20 49 27 64 20 6f 6e  6c 79 20 67 65 74 20 63  |- I'd only get c|
00005110  6f 6e 66 75 73 65 64 20  69 66 20 79 6f 75 20 64  |onfused if you d|
00005120  69 64 2e 22 0d 21 52 58  65 72 72 6f 72 24 28 35  |id.".!RXerror$(5|
00005130  29 3d 22 53 6f 72 72 79  2c 20 62 75 74 20 79 6f  |)="Sorry, but yo|
00005140  75 20 63 61 6e 27 74 20  68 61 76 65 20 61 6e 79  |u can't have any|
00005150  20 6d 6f 72 65 20 6d 65  6e 75 73 20 69 6e 20 74  | more menus in t|
00005160  68 69 73 20 76 65 72 73  69 6f 6e 20 6f 66 20 74  |his version of t|
00005170  68 65 20 70 72 6f 67 72  61 6d 2e 22 0d 21 5c 4d  |he program.".!\M|
00005180  65 72 72 6f 72 24 28 36  29 3d 22 48 6f 77 20 64  |error$(6)="How d|
00005190  69 64 20 79 6f 75 20 6d  61 6e 61 67 65 20 74 68  |id you manage th|
000051a0  61 74 3f 20 59 6f 75 20  63 61 6e 27 74 20 61 6c  |at? You can't al|
000051b0  74 65 72 20 61 20 6e 6f  6e 2d 65 78 69 73 74 61  |ter a non-exista|
000051c0  6e 74 20 6d 65 6e 75 21  22 0d 21 66 49 65 72 72  |nt menu!".!fIerr|
000051d0  6f 72 24 28 37 29 3d 22  48 6f 77 20 64 69 64 20  |or$(7)="How did |
000051e0  79 6f 75 20 6d 61 6e 61  67 65 20 74 68 61 74 3f  |you manage that?|
000051f0  20 59 6f 75 27 76 65 20  73 65 6c 65 63 74 65 64  | You've selected|
00005200  20 61 6e 20 69 6e 76 61  6c 69 64 20 74 79 70 65  | an invalid type|
00005210  21 22 0d 21 70 10 65 72  72 6f 72 24 28 38 29 3d  |!".!p.error$(8)=|
00005220  22 22 0d 21 7a 3d 65 72  72 6f 72 24 28 39 29 3d  |"".!z=error$(9)=|
00005230  22 54 6f 20 73 61 76 65  2c 20 64 72 61 67 20 74  |"To save, drag t|
00005240  68 65 20 69 63 6f 6e 20  74 6f 20 61 20 64 69 72  |he icon to a dir|
00005250  65 63 74 6f 72 79 20 76  69 65 77 65 72 2e 22 0d  |ectory viewer.".|
00005260  21 84 5b 65 72 72 6f 72  24 28 31 30 29 3d 22 53  |!.[error$(10)="S|
00005270  6f 72 72 79 2c 20 74 68  65 72 65 27 73 20 61 20  |orry, there's a |
00005280  70 72 6f 62 6c 65 6d 20  2d 20 74 68 65 20 6d 65  |problem - the me|
00005290  6e 75 20 64 61 74 61 20  69 73 20 65 69 74 68 65  |nu data is eithe|
000052a0  72 20 6e 6f 74 20 70 72  65 73 65 6e 74 2c 20 6f  |r not present, o|
000052b0  72 20 63 6f 72 72 75 70  74 22 0d 21 8e 69 65 72  |r corrupt".!.ier|
000052c0  72 6f 72 24 28 31 31 29  3d 22 4c 6f 61 64 69 6e  |ror$(11)="Loadin|
000052d0  67 20 74 68 65 20 66 69  6c 65 20 77 69 6c 6c 20  |g the file will |
000052e0  6f 76 65 72 77 72 69 74  65 20 65 78 69 73 74 69  |overwrite existi|
000052f0  6e 67 20 64 61 74 61 2e  20 41 72 65 20 79 6f 75  |ng data. Are you|
00005300  20 73 75 72 65 20 79 6f  75 20 77 61 6e 74 20 74  | sure you want t|
00005310  6f 3f 20 28 43 61 6e 63  65 6c 20 61 62 6f 72 74  |o? (Cancel abort|
00005320  73 29 22 0d 21 98 46 65  72 72 6f 72 24 28 31 32  |s)".!.Ferror$(12|
00005330  29 3d 22 41 72 65 20 79  6f 75 20 73 75 72 65 20  |)="Are you sure |
00005340  2d 20 41 6c 6c 20 64 61  74 61 20 77 69 6c 6c 20  |- All data will |
00005350  62 65 20 6c 6f 73 74 3f  20 28 43 61 6e 63 65 6c  |be lost? (Cancel|
00005360  20 61 62 6f 72 74 73 29  22 0d 21 a2 29 65 72 72  | aborts)".!.)err|
00005370  6f 72 24 28 31 33 29 3d  22 46 61 74 61 6c 20 65  |or$(13)="Fatal e|
00005380  72 72 6f 72 20 2d 20 6d  75 73 74 20 65 78 69 74  |rror - must exit|
00005390  2e 22 0d 21 ac 52 65 72  72 6f 72 24 28 31 34 29  |.".!.Rerror$(14)|
000053a0  3d 22 54 6f 20 6c 6f 61  64 20 74 68 65 20 73 70  |="To load the sp|
000053b0  72 69 74 65 73 20 66 6f  72 20 74 68 69 73 20 66  |rites for this f|
000053c0  69 6c 65 2c 20 79 6f 75  20 6d 75 73 74 20 69 6e  |ile, you must in|
000053d0  63 72 65 61 73 65 20 4d  6f 64 75 6c 65 20 61 72  |crease Module ar|
000053e0  65 61 2e 22 0d 21 b6 34  65 72 72 6f 72 24 28 31  |ea.".!.4error$(1|
000053f0  35 29 3d 22 41 20 6d 65  6e 75 20 6f 66 20 74 68  |5)="A menu of th|
00005400  61 74 20 6e 61 6d 65 20  61 6c 72 65 61 64 79 20  |at name already |
00005410  65 78 69 73 74 73 2e 22  0d 21 c0 44 65 72 72 6f  |exists.".!.Derro|
00005420  72 24 28 31 36 29 3d 22  42 65 66 6f 72 65 20 63  |r$(16)="Before c|
00005430  6f 70 79 69 6e 67 20 66  69 6c 65 73 2c 20 79 6f  |opying files, yo|
00005440  75 20 6d 75 73 74 20 68  61 76 65 20 73 61 76 65  |u must have save|
00005450  64 20 74 68 65 20 6d 65  6e 75 2e 22 0d 21 ca 05  |d the menu.".!..|
00005460  e1 0d 21 d4 04 0d 21 de  17 dd f2 73 79 73 74 65  |..!...!....syste|
00005470  6d 5f 65 72 72 6f 72 28  6e 2c 63 29 0d 21 e8 1e  |m_error(n,c).!..|
00005480  f2 72 65 70 6f 72 74 5f  65 72 72 6f 72 28 65 72  |.report_error(er|
00005490  72 6f 72 24 28 6e 29 2c  63 29 0d 21 f2 05 e1 0d  |ror$(n),c).!....|
000054a0  21 fc 04 0d 22 06 10 dd  f2 65 72 72 6f 72 28 6e  |!..."....error(n|
000054b0  2c 63 29 0d 22 10 1e f2  73 65 74 5f 62 69 74 28  |,c)."...set_bit(|
000054c0  6d 65 73 67 5f 68 61 6e  64 6c 65 2c 31 2c 32 33  |mesg_handle,1,23|
000054d0  29 0d 22 1a 28 e7 20 63  3d 33 20 8c 20 f2 75 6e  |).".(. c=3 . .un|
000054e0  73 65 74 5f 62 69 74 28  6d 65 73 67 5f 68 61 6e  |set_bit(mesg_han|
000054f0  64 6c 65 2c 31 2c 32 33  29 0d 22 24 2c f2 73 65  |dle,1,23)."$,.se|
00005500  74 5f 69 6e 64 69 72 65  63 74 65 64 28 6d 65 73  |t_indirected(mes|
00005510  67 5f 68 61 6e 64 6c 65  2c 30 2c 65 72 72 6f 72  |g_handle,0,error|
00005520  24 28 6e 29 29 0d 22 2e  0f 78 3d 37 32 38 3a 79  |$(n))."..x=728:y|
00005530  3d 32 37 36 0d 22 38 27  f2 63 65 6e 74 72 65 5f  |=276."8'.centre_|
00005540  77 69 6e 64 6f 77 28 6d  65 73 67 5f 68 61 6e 64  |window(mesg_hand|
00005550  6c 65 2c 37 32 38 2c 32  37 36 29 0d 22 42 1f c8  |le,728,276)."B..|
00005560  97 20 c8 93 20 62 6c 6f  63 6b 25 21 34 2c 62 6c  |. .. block%!4,bl|
00005570  6f 63 6b 25 21 38 2c 78  2c 79 0d 22 4c 06 ef 37  |ock%!8,x,y."L..7|
00005580  0d 22 56 05 f5 0d 22 60  2a 20 20 c8 99 20 22 57  |."V..."`*  .. "W|
00005590  69 6d 70 5f 50 6f 6c 6c  22 2c 6d 61 73 6b 2c 62  |imp_Poll",mask,b|
000055a0  6c 6f 63 6b 25 20 b8 20  72 65 61 73 6f 6e 25 0d  |lock% . reason%.|
000055b0  22 6a 12 20 20 c8 8e 20  72 65 61 73 6f 6e 25 20  |"j.  .. reason% |
000055c0  ca 0d 22 74 17 20 20 20  20 c9 20 36 3a f2 63 6c  |.."t.    . 6:.cl|
000055d0  69 63 6b 5f 69 63 6f 6e  0d 22 7e 18 20 20 20 20  |ick_icon."~.    |
000055e0  c9 20 31 37 2c 31 38 3a  f2 72 65 63 65 69 76 65  |. 17,18:.receive|
000055f0  0d 22 88 07 20 20 cb 0d  22 92 0f fd 20 72 65 61  |."..  .."... rea|
00005600  73 6f 6e 25 3d 36 0d 22  9c 12 69 63 6f 6e 3d 62  |son%=6."..icon=b|
00005610  6c 6f 63 6b 25 21 31 36  0d 22 a6 2e e7 20 69 63  |lock%!16."... ic|
00005620  6f 6e 3d 31 20 75 73 65  72 5f 72 65 73 70 6f 6e  |on=1 user_respon|
00005630  73 65 3d 32 20 8b 20 75  73 65 72 5f 72 65 73 70  |se=2 . user_resp|
00005640  6f 6e 73 65 3d 31 0d 22  b0 13 c8 97 20 c8 93 20  |onse=1.".... .. |
00005650  30 2c 30 2c 78 72 2c 79  72 0d 22 ba 1e f2 63 6c  |0,0,xr,yr."...cl|
00005660  6f 73 65 5f 77 69 6e 64  6f 77 28 6d 65 73 67 5f  |ose_window(mesg_|
00005670  68 61 6e 64 6c 65 29 0d  22 c4 05 e1 0d 22 ce 04  |handle)."...."..|
00005680  0d 22 d8 13 dd f2 6d 61  69 6e 6d 65 6e 75 5f 69  |."....mainmenu_i|
00005690  74 65 6d 0d 22 e2 0e 6d  6f 64 69 66 69 65 64 3d  |tem."..modified=|
000056a0  b9 0d 22 ec 22 6e 65 77  70 6f 73 3d 6e 6f 5f 6f  |.."."newpos=no_o|
000056b0  70 74 73 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |pts(current_menu|
000056c0  29 2b 31 0d 22 f6 19 e7  20 6e 65 77 70 6f 73 3d  |)+1."... newpos=|
000056d0  32 35 36 20 6e 65 77 70  6f 73 3d 30 0d 23 00 11  |256 newpos=0.#..|
000056e0  e7 20 6e 65 77 70 6f 73  3e 31 37 20 8c 0d 23 0a  |. newpos>17 ..#.|
000056f0  11 20 20 f2 65 72 72 6f  72 28 33 2c 31 29 0d 23  |.  .error(3,1).#|
00005700  14 07 20 20 e1 0d 23 1e  05 cd 0d 23 28 20 6e 6f  |..  ..#....#( no|
00005710  5f 6f 70 74 73 28 63 75  72 72 65 6e 74 5f 6d 65  |_opts(current_me|
00005720  6e 75 29 3d 6e 65 77 70  6f 73 0d 23 32 2b 66 6e  |nu)=newpos.#2+fn|
00005730  61 6d 65 24 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |ame$(current_men|
00005740  75 2c 6e 65 77 70 6f 73  29 3d 22 4d 61 69 6e 20  |u,newpos)="Main |
00005750  4d 65 6e 75 22 0d 23 3c  2a 74 65 78 74 24 28 63  |Menu".#<*text$(c|
00005760  75 72 72 65 6e 74 5f 6d  65 6e 75 2c 6e 65 77 70  |urrent_menu,newp|
00005770  6f 73 29 3d 22 4d 61 69  6e 20 4d 65 6e 75 22 0d  |os)="Main Menu".|
00005780  23 46 20 66 74 79 70 65  28 63 75 72 72 65 6e 74  |#F ftype(current|
00005790  5f 6d 65 6e 75 2c 6e 65  77 70 6f 73 29 3d 30 0d  |_menu,newpos)=0.|
000057a0  23 50 27 73 70 72 69 74  65 24 28 63 75 72 72 65  |#P'sprite$(curre|
000057b0  6e 74 5f 6d 65 6e 75 2c  6e 65 77 70 6f 73 29 3d  |nt_menu,newpos)=|
000057c0  22 6d 65 6e 75 22 0d 23  5a 21 61 63 74 69 6f 6e  |"menu".#Z!action|
000057d0  28 63 75 72 72 65 6e 74  5f 6d 65 6e 75 2c 6e 65  |(current_menu,ne|
000057e0  77 70 6f 73 29 3d 31 0d  23 64 13 f2 72 65 64 6f  |wpos)=1.#d..redo|
000057f0  5f 61 6c 6c 5f 69 63 6f  6e 73 0d 23 6e 05 e1 0d  |_all_icons.#n...|
00005800  23 78 04 0d 23 82 0d dd  f2 64 72 61 67 62 6f 78  |#x..#....dragbox|
00005810  0d 23 8c 1e f2 73 74 61  72 74 5f 64 72 61 67 28  |.#...start_drag(|
00005820  73 61 76 65 5f 68 61 6e  64 6c 65 2c 30 29 0d 23  |save_handle,0).#|
00005830  96 12 63 75 72 72 65 6e  74 5f 64 72 61 67 3d 31  |..current_drag=1|
00005840  0d 23 a0 05 e1 0d 23 aa  04 0d 23 b4 11 dd f2 64  |.#....#...#....d|
00005850  72 61 67 5f 6f 70 74 69  6f 6e 0d 23 be 0e 6d 6f  |rag_option.#..mo|
00005860  64 69 66 69 65 64 3d b9  0d 23 c8 12 63 75 72 72  |dified=..#..curr|
00005870  65 6e 74 5f 64 72 61 67  3d 32 0d 23 d2 21 66 5f  |ent_drag=2.#.!f_|
00005880  64 72 61 67 67 65 64 3d  a4 69 63 6f 6e 5f 74 6f  |dragged=.icon_to|
00005890  5f 69 74 65 6d 28 69 63  6f 6e 29 0d 23 dc 27 e7  |_item(icon).#.'.|
000058a0  20 66 5f 64 72 61 67 67  65 64 3e 6e 6f 5f 6f 70  | f_dragged>no_op|
000058b0  74 73 28 63 75 72 72 65  6e 74 5f 6d 65 6e 75 29  |ts(current_menu)|
000058c0  20 e1 0d 23 e6 1c f2 73  74 61 72 74 5f 64 72 61  | ..#...start_dra|
000058d0  67 28 68 61 6e 64 6c 65  2c 69 63 6f 6e 29 0d 23  |g(handle,icon).#|
000058e0  f0 05 e1 0d 23 fa 04 0d  24 04 11 dd f2 6d 6f 76  |....#...$....mov|
000058f0  65 5f 6f 70 74 69 6f 6e  0d 24 0e 1b e7 20 64 65  |e_option.$... de|
00005900  73 74 69 6e 61 74 69 6f  6e 3c 3e 68 61 6e 64 6c  |stination<>handl|
00005910  65 20 e1 0d 24 18 18 e7  20 69 63 6f 6e 3c 30 20  |e ..$... icon<0 |
00005920  84 20 69 63 6f 6e 3e 33  35 20 e1 0d 24 22 21 73  |. icon>35 ..$"!s|
00005930  5f 64 72 61 67 67 65 64  3d a4 69 63 6f 6e 5f 74  |_dragged=.icon_t|
00005940  6f 5f 69 74 65 6d 28 69  63 6f 6e 29 0d 24 2c 1b  |o_item(icon).$,.|
00005950  e7 20 66 5f 64 72 61 67  67 65 64 3d 73 5f 64 72  |. f_dragged=s_dr|
00005960  61 67 67 65 64 20 e1 0d  24 36 27 e7 20 73 5f 64  |agged ..$6'. s_d|
00005970  72 61 67 67 65 64 3e 6e  6f 5f 6f 70 74 73 28 63  |ragged>no_opts(c|
00005980  75 72 72 65 6e 74 5f 6d  65 6e 75 29 20 e1 0d 24  |urrent_menu) ..$|
00005990  40 24 61 3d 61 63 74 69  6f 6e 28 63 75 72 72 65  |@$a=action(curre|
000059a0  6e 74 5f 6d 65 6e 75 2c  66 5f 64 72 61 67 67 65  |nt_menu,f_dragge|
000059b0  64 29 0d 24 4a 25 66 24  3d 66 6e 61 6d 65 24 28  |d).$J%f$=fname$(|
000059c0  63 75 72 72 65 6e 74 5f  6d 65 6e 75 2c 66 5f 64  |current_menu,f_d|
000059d0  72 61 67 67 65 64 29 0d  24 54 24 74 24 3d 74 65  |ragged).$T$t$=te|
000059e0  78 74 24 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |xt$(current_menu|
000059f0  2c 66 5f 64 72 61 67 67  65 64 29 0d 24 5e 26 73  |,f_dragged).$^&s|
00005a00  24 3d 73 70 72 69 74 65  24 28 63 75 72 72 65 6e  |$=sprite$(curren|
00005a10  74 5f 6d 65 6e 75 2c 66  5f 64 72 61 67 67 65 64  |t_menu,f_dragged|
00005a20  29 0d 24 68 23 66 3d 66  74 79 70 65 28 63 75 72  |).$h#f=ftype(cur|
00005a30  72 65 6e 74 5f 6d 65 6e  75 2c 66 5f 64 72 61 67  |rent_menu,f_drag|
00005a40  67 65 64 29 0d 24 72 3e  e7 20 66 5f 64 72 61 67  |ged).$r>. f_drag|
00005a50  67 65 64 3c 73 5f 64 72  61 67 67 65 64 20 8c 20  |ged<s_dragged . |
00005a60  66 3d 66 5f 64 72 61 67  67 65 64 2b 31 3a 74 3d  |f=f_dragged+1:t=|
00005a70  73 5f 64 72 61 67 67 65  64 3a 70 3d 2d 31 3a 73  |s_dragged:p=-1:s|
00005a80  3d 31 0d 24 7c 3e e7 20  66 5f 64 72 61 67 67 65  |=1.$|>. f_dragge|
00005a90  64 3e 73 5f 64 72 61 67  67 65 64 20 8c 20 66 3d  |d>s_dragged . f=|
00005aa0  66 5f 64 72 61 67 67 65  64 2d 31 3a 74 3d 73 5f  |f_dragged-1:t=s_|
00005ab0  64 72 61 67 67 65 64 3a  70 3d 31 3a 73 3d 2d 31  |dragged:p=1:s=-1|
00005ac0  0d 24 86 11 e3 20 64 3d  66 20 b8 20 74 20 88 20  |.$... d=f . t . |
00005ad0  73 0d 24 90 36 20 20 61  63 74 69 6f 6e 28 63 75  |s.$.6  action(cu|
00005ae0  72 72 65 6e 74 5f 6d 65  6e 75 2c 64 2b 70 29 20  |rrent_menu,d+p) |
00005af0  3d 61 63 74 69 6f 6e 28  63 75 72 72 65 6e 74 5f  |=action(current_|
00005b00  6d 65 6e 75 2c 64 29 0d  24 9a 36 20 20 66 6e 61  |menu,d).$.6  fna|
00005b10  6d 65 24 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |me$(current_menu|
00005b20  2c 64 2b 70 29 20 3d 66  6e 61 6d 65 24 28 63 75  |,d+p) =fname$(cu|
00005b30  72 72 65 6e 74 5f 6d 65  6e 75 2c 64 29 0d 24 a4  |rrent_menu,d).$.|
00005b40  35 20 20 74 65 78 74 24  28 63 75 72 72 65 6e 74  |5  text$(current|
00005b50  5f 6d 65 6e 75 2c 64 2b  70 29 20 20 3d 74 65 78  |_menu,d+p)  =tex|
00005b60  74 24 28 63 75 72 72 65  6e 74 5f 6d 65 6e 75 2c  |t$(current_menu,|
00005b70  64 29 0d 24 ae 37 20 20  73 70 72 69 74 65 24 28  |d).$.7  sprite$(|
00005b80  63 75 72 72 65 6e 74 5f  6d 65 6e 75 2c 64 2b 70  |current_menu,d+p|
00005b90  29 3d 73 70 72 69 74 65  24 28 63 75 72 72 65 6e  |)=sprite$(curren|
00005ba0  74 5f 6d 65 6e 75 2c 64  29 0d 24 b8 35 20 20 66  |t_menu,d).$.5  f|
00005bb0  74 79 70 65 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |type(current_men|
00005bc0  75 2c 64 2b 70 29 20 20  3d 66 74 79 70 65 28 63  |u,d+p)  =ftype(c|
00005bd0  75 72 72 65 6e 74 5f 6d  65 6e 75 2c 64 29 0d 24  |urrent_menu,d).$|
00005be0  c2 05 ed 0d 24 cc 24 61  63 74 69 6f 6e 28 63 75  |....$.$action(cu|
00005bf0  72 72 65 6e 74 5f 6d 65  6e 75 2c 73 5f 64 72 61  |rrent_menu,s_dra|
00005c00  67 67 65 64 29 3d 61 0d  24 d6 25 66 6e 61 6d 65  |gged)=a.$.%fname|
00005c10  24 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 2c 73  |$(current_menu,s|
00005c20  5f 64 72 61 67 67 65 64  29 3d 66 24 0d 24 e0 24  |_dragged)=f$.$.$|
00005c30  74 65 78 74 24 28 63 75  72 72 65 6e 74 5f 6d 65  |text$(current_me|
00005c40  6e 75 2c 73 5f 64 72 61  67 67 65 64 29 3d 74 24  |nu,s_dragged)=t$|
00005c50  0d 24 ea 26 73 70 72 69  74 65 24 28 63 75 72 72  |.$.&sprite$(curr|
00005c60  65 6e 74 5f 6d 65 6e 75  2c 73 5f 64 72 61 67 67  |ent_menu,s_dragg|
00005c70  65 64 29 3d 73 24 0d 24  f4 23 66 74 79 70 65 28  |ed)=s$.$.#ftype(|
00005c80  63 75 72 72 65 6e 74 5f  6d 65 6e 75 2c 73 5f 64  |current_menu,s_d|
00005c90  72 61 67 67 65 64 29 3d  66 0d 24 fe 13 f2 72 65  |ragged)=f.$...re|
00005ca0  64 6f 5f 61 6c 6c 5f 69  63 6f 6e 73 0d 25 08 05  |do_all_icons.%..|
00005cb0  e1 0d 25 12 04 0d 25 1c  12 dd f2 6d 61 6b 65 5f  |..%...%....make_|
00005cc0  73 75 62 6d 65 6e 75 0d  25 26 1c 69 74 65 6d 3d  |submenu.%&.item=|
00005cd0  a4 69 63 6f 6e 5f 74 6f  5f 69 74 65 6d 28 69 63  |.icon_to_item(ic|
00005ce0  6f 6e 29 0d 25 30 3c e7  20 a4 6d 65 6e 75 5f 65  |on).%0<. .menu_e|
00005cf0  78 69 73 74 28 74 65 78  74 24 28 63 75 72 72 65  |xist(text$(curre|
00005d00  6e 74 5f 6d 65 6e 75 2c  69 74 65 6d 29 29 20 8c  |nt_menu,item)) .|
00005d10  20 f2 65 72 72 6f 72 28  31 35 2c 31 29 3a e1 0d  | .error(15,1):..|
00005d20  25 3a 17 61 6c 74 65 72  5f 69 74 65 6d 3d 69 74  |%:.alter_item=it|
00005d30  65 6d 2b 31 30 30 0d 25  44 3b f2 73 65 74 5f 69  |em+100.%D;.set_i|
00005d40  6e 64 69 72 65 63 74 65  64 28 69 74 69 6e 5f 68  |ndirected(itin_h|
00005d50  61 6e 64 6c 65 2c 38 2c  74 65 78 74 24 28 63 75  |andle,8,text$(cu|
00005d60  72 72 65 6e 74 5f 6d 65  6e 75 2c 69 74 65 6d 29  |rrent_menu,item)|
00005d70  29 0d 25 4e 3b f2 73 65  74 5f 69 6e 64 69 72 65  |).%N;.set_indire|
00005d80  63 74 65 64 28 69 74 69  6e 5f 68 61 6e 64 6c 65  |cted(itin_handle|
00005d90  2c 35 2c 74 65 78 74 24  28 63 75 72 72 65 6e 74  |,5,text$(current|
00005da0  5f 6d 65 6e 75 2c 69 74  65 6d 29 29 0d 25 58 3d  |_menu,item)).%X=|
00005db0  f2 73 65 74 5f 69 6e 64  69 72 65 63 74 65 64 28  |.set_indirected(|
00005dc0  69 74 69 6e 5f 68 61 6e  64 6c 65 2c 32 2c 73 70  |itin_handle,2,sp|
00005dd0  72 69 74 65 24 28 63 75  72 72 65 6e 74 5f 6d 65  |rite$(current_me|
00005de0  6e 75 2c 69 74 65 6d 29  29 0d 25 62 3d f2 73 65  |nu,item)).%b=.se|
00005df0  74 5f 69 6e 64 69 72 65  63 74 65 64 28 69 74 69  |t_indirected(iti|
00005e00  6e 5f 68 61 6e 64 6c 65  2c 31 2c 73 70 72 69 74  |n_handle,1,sprit|
00005e10  65 24 28 63 75 72 72 65  6e 74 5f 6d 65 6e 75 2c  |e$(current_menu,|
00005e20  69 74 65 6d 29 29 0d 25  6c 30 f2 73 65 74 5f 69  |item)).%l0.set_i|
00005e30  6e 64 69 72 65 63 74 65  64 28 69 74 69 6e 5f 68  |ndirected(itin_h|
00005e40  61 6e 64 6c 65 2c 31 33  2c 22 4f 70 65 6e 20 6d  |andle,13,"Open m|
00005e50  65 6e 75 3a 22 29 0d 25  76 27 f2 63 65 6e 74 72  |enu:").%v'.centr|
00005e60  65 5f 77 69 6e 64 6f 77  28 69 74 69 6e 5f 68 61  |e_window(itin_ha|
00005e70  6e 64 6c 65 2c 35 32 38  2c 36 38 30 29 0d 25 80  |ndle,528,680).%.|
00005e80  19 f2 63 61 72 65 74 28  69 74 69 6e 5f 68 61 6e  |..caret(itin_han|
00005e90  64 6c 65 2c 32 29 0d 25  8a 05 e1 0d 25 94 04 0d  |dle,2).%....%...|
00005ea0  25 9e 12 dd f2 73 75 62  6d 65 6e 75 5f 69 74 65  |%....submenu_ite|
00005eb0  6d 0d 25 a8 11 61 6c 74  65 72 5f 69 74 65 6d 3d  |m.%..alter_item=|
00005ec0  2d 31 0d 25 b2 2c f2 73  65 74 5f 69 6e 64 69 72  |-1.%.,.set_indir|
00005ed0  65 63 74 65 64 28 69 74  69 6e 5f 68 61 6e 64 6c  |ected(itin_handl|
00005ee0  65 2c 38 2c 22 53 75 62  6d 65 6e 75 22 29 0d 25  |e,8,"Submenu").%|
00005ef0  bc 2c f2 73 65 74 5f 69  6e 64 69 72 65 63 74 65  |.,.set_indirecte|
00005f00  64 28 69 74 69 6e 5f 68  61 6e 64 6c 65 2c 35 2c  |d(itin_handle,5,|
00005f10  22 53 75 62 6d 65 6e 75  22 29 0d 25 c6 29 f2 73  |"Submenu").%.).s|
00005f20  65 74 5f 69 6e 64 69 72  65 63 74 65 64 28 69 74  |et_indirected(it|
00005f30  69 6e 5f 68 61 6e 64 6c  65 2c 32 2c 22 6d 65 6e  |in_handle,2,"men|
00005f40  75 22 29 0d 25 d0 29 f2  73 65 74 5f 69 6e 64 69  |u").%.).set_indi|
00005f50  72 65 63 74 65 64 28 69  74 69 6e 5f 68 61 6e 64  |rected(itin_hand|
00005f60  6c 65 2c 31 2c 22 6d 65  6e 75 22 29 0d 25 da 30  |le,1,"menu").%.0|
00005f70  f2 73 65 74 5f 69 6e 64  69 72 65 63 74 65 64 28  |.set_indirected(|
00005f80  69 74 69 6e 5f 68 61 6e  64 6c 65 2c 31 33 2c 22  |itin_handle,13,"|
00005f90  4f 70 65 6e 20 6d 65 6e  75 3a 22 29 0d 25 e4 27  |Open menu:").%.'|
00005fa0  f2 63 65 6e 74 72 65 5f  77 69 6e 64 6f 77 28 69  |.centre_window(i|
00005fb0  74 69 6e 5f 68 61 6e 64  6c 65 2c 35 32 38 2c 36  |tin_handle,528,6|
00005fc0  38 30 29 0d 25 ee 19 f2  63 61 72 65 74 28 69 74  |80).%...caret(it|
00005fd0  69 6e 5f 68 61 6e 64 6c  65 2c 32 29 0d 25 f8 05  |in_handle,2).%..|
00005fe0  e1 0d 26 02 04 0d 26 0c  14 dd a4 6d 65 6e 75 5f  |..&...&....menu_|
00005ff0  65 78 69 73 74 28 41 24  29 0d 26 16 0d 6d 3d 32  |exist(A$).&..m=2|
00006000  35 35 3a 65 3d a3 0d 26  20 0e e3 20 6e 3d 30 20  |55:e=..& .. n=0 |
00006010  b8 20 32 30 0d 26 2a 1e  20 20 e7 20 6d 6e 61 6d  |. 20.&*.  . mnam|
00006020  65 24 28 6e 29 3d 41 24  20 8c 20 6d 3d 6e 3a 65  |e$(n)=A$ . m=n:e|
00006030  3d b9 0d 26 34 05 ed 0d  26 3e 06 3d 65 0d 26 48  |=..&4...&>.=e.&H|
00006040  04 0d 26 52 10 dd f2 63  6f 70 79 5f 66 69 6c 65  |..&R...copy_file|
00006050  73 0d 26 5c 21 e7 20 66  69 6c 65 6e 61 6d 65 24  |s.&\!. filename$|
00006060  3d 22 22 20 f2 65 72 72  6f 72 28 31 36 2c 31 29  |="" .error(16,1)|
00006070  3a e1 0d 26 66 27 f2 63  65 6e 74 72 65 5f 77 69  |:..&f'.centre_wi|
00006080  6e 64 6f 77 28 63 6f 70  79 5f 68 61 6e 64 6c 65  |ndow(copy_handle|
00006090  2c 36 32 30 2c 31 35 36  29 0d 26 70 27 ff 22 53  |,620,156).&p'."S|
000060a0  65 74 20 4d 65 6e 61 6b  65 72 53 65 72 76 65 72  |et MenakerServer|
000060b0  24 44 69 72 20 22 2b 66  69 6c 65 6e 61 6d 65 24  |$Dir "+filename$|
000060c0  0d 26 7a 05 e1 0d 26 84  04 0d 26 8e 0f dd f2 63  |.&z...&...&....c|
000060d0  6f 70 79 5f 66 69 6c 65  0d 26 98 0e 6c 3d a9 28  |opy_file.&..l=.(|
000060e0  66 69 6c 65 24 29 0d 26  a2 16 6c 24 3d a4 67 65  |file$).&..l$=.ge|
000060f0  74 6c 65 61 66 28 66 69  6c 65 24 29 0d 26 ac 19  |tleaf(file$).&..|
00006100  e3 20 6d 65 6e 75 3d 30  20 b8 20 6e 75 6d 5f 6d  |. menu=0 . num_m|
00006110  65 6e 73 2d 31 0d 26 b6  1e 20 20 e3 20 69 74 65  |ens-1.&..  . ite|
00006120  6d 3d 30 20 b8 20 6e 6f  5f 6f 70 74 73 28 6d 65  |m=0 . no_opts(me|
00006130  6e 75 29 0d 26 c0 1d 20  20 20 20 66 6e 24 3d 66  |nu).&..    fn$=f|
00006140  6e 61 6d 65 24 28 6d 65  6e 75 2c 69 74 65 6d 29  |name$(menu,item)|
00006150  0d 26 ca 26 20 20 20 20  e7 20 c0 66 6e 24 2c 6c  |.&.&    . .fn$,l|
00006160  29 3d 66 69 6c 65 24 20  8c 20 f2 63 6f 70 79 5f  |)=file$ . .copy_|
00006170  67 6f 74 6f 6e 65 0d 26  d4 07 20 20 ed 0d 26 de  |gotone.&..  ..&.|
00006180  05 ed 0d 26 e8 16 f2 73  61 76 65 5f 6c 6f 61 64  |...&...save_load|
00006190  5f 64 61 74 61 28 b9 29  0d 26 f2 27 2a 53 65 74  |_data(.).&.'*Set|
000061a0  20 4f 6c 64 43 6f 70 79  24 4f 70 74 69 6f 6e 73  | OldCopy$Options|
000061b0  20 3c 43 6f 70 79 24 4f  70 74 69 6f 6e 73 3e 0d  | <Copy$Options>.|
000061c0  26 fc 37 2a 53 65 74 20  43 6f 70 79 24 4f 70 74  |&.7*Set Copy$Opt|
000061d0  69 6f 6e 73 20 41 20 7e  43 20 7e 44 20 7e 46 20  |ions A ~C ~D ~F |
000061e0  7e 4c 20 7e 4e 20 7e 50  20 7e 51 20 52 20 7e 53  |~L ~N ~P ~Q R ~S|
000061f0  20 7e 54 20 7e 56 0d 27  06 32 41 24 3d 22 43 6f  | ~T ~V.'.2A$="Co|
00006200  70 79 20 22 2b 66 69 6c  65 24 2b 22 20 22 2b 66  |py "+file$+" "+f|
00006210  69 6c 65 6e 61 6d 65 24  2b 22 2e 50 72 6f 67 72  |ilename$+".Progr|
00006220  61 6d 73 2e 22 2b 6c 24  0d 27 10 08 ff 20 41 24  |ams."+l$.'... A$|
00006230  0d 27 1a 27 2a 53 65 74  20 43 6f 70 79 24 4f 70  |.'.'*Set Copy$Op|
00006240  74 69 6f 6e 73 20 3c 4f  6c 64 43 6f 70 79 24 4f  |tions <OldCopy$O|
00006250  70 74 69 6f 6e 73 3e 0d  27 24 05 e1 0d 27 2e 04  |ptions>.'$...'..|
00006260  0d 27 38 11 dd f2 63 6f  70 79 5f 67 6f 74 6f 6e  |.'8...copy_goton|
00006270  65 0d 27 42 1d 6e 24 3d  c2 66 6e 24 2c a9 28 66  |e.'B.n$=.fn$,.(f|
00006280  6e 24 29 2d 6c 2b a9 28  6c 24 29 2d 31 29 0d 27  |n$)-l+.(l$)-1).'|
00006290  4c 38 66 6e 61 6d 65 24  28 6d 65 6e 75 2c 69 74  |L8fname$(menu,it|
000062a0  65 6d 29 3d 22 3c 4d 65  6e 61 6b 65 72 53 65 72  |em)="<MenakerSer|
000062b0  76 65 72 24 44 69 72 3e  2e 50 72 6f 67 72 61 6d  |ver$Dir>.Program|
000062c0  73 2e 22 2b 6e 24 0d 27  56 05 e1 0d 27 60 04 0d  |s."+n$.'V...'`..|
000062d0  27 6a 15 dd f2 63 6c 69  63 6b 65 64 5f 6f 6e 5f  |'j...clicked_on_|
000062e0  69 63 6f 6e 0d 27 74 29  e7 20 66 69 6c 65 6e 61  |icon.'t). filena|
000062f0  6d 65 24 3d 22 22 20 66  69 6c 65 6e 61 6d 65 24  |me$="" filename$|
00006300  3d 22 3c 4f 62 65 79 24  44 69 72 3e 22 0d 27 7e  |="<Obey$Dir>".'~|
00006310  27 ff 22 53 65 74 20 4d  65 6e 61 6b 65 72 53 65  |'."Set MenakerSe|
00006320  72 76 65 72 24 44 69 72  20 22 2b 66 69 6c 65 6e  |rver$Dir "+filen|
00006330  61 6d 65 24 0d 27 88 12  c8 99 22 4f 53 5f 42 79  |ame$.'...."OS_By|
00006340  74 65 22 2c 32 31 0d 27  92 1c 69 74 65 6d 3d a4  |te",21.'..item=.|
00006350  69 63 6f 6e 5f 74 6f 5f  69 74 65 6d 28 69 63 6f  |icon_to_item(ico|
00006360  6e 29 0d 27 9c 35 e7 20  61 63 74 69 6f 6e 28 63  |n).'.5. action(c|
00006370  75 72 72 65 6e 74 5f 6d  65 6e 75 2c 69 74 65 6d  |urrent_menu,item|
00006380  29 3d 31 20 8c 20 f2 6e  65 77 5f 6d 65 6e 75 5f  |)=1 . .new_menu_|
00006390  66 6f 75 6e 64 3a e1 0d  27 a6 33 e7 20 61 63 74  |found:..'.3. act|
000063a0  69 6f 6e 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |ion(current_menu|
000063b0  2c 69 74 65 6d 29 3d 32  20 8c 20 f2 6f 70 65 6e  |,item)=2 . .open|
000063c0  5f 64 69 72 5f 66 6f 75  6e 64 0d 27 b0 33 e7 20  |_dir_found.'.3. |
000063d0  61 63 74 69 6f 6e 28 63  75 72 72 65 6e 74 5f 6d  |action(current_m|
000063e0  65 6e 75 2c 69 74 65 6d  29 3d 33 20 8c 20 f2 72  |enu,item)=3 . .r|
000063f0  75 6e 5f 66 69 6c 65 5f  66 6f 75 6e 64 0d 27 ba  |un_file_found.'.|
00006400  05 e1 0d 27 c4 04 0d 27  ce 14 dd f2 72 75 6e 5f  |...'...'....run_|
00006410  66 69 6c 65 5f 66 6f 75  6e 64 0d 27 d8 12 e7 20  |file_found.'... |
00006420  ac 20 72 75 6e 66 69 6c  65 73 20 e1 0d 27 e2 2b  |. runfiles ..'.+|
00006430  ff 22 46 69 6c 65 72 5f  52 75 6e 20 22 2b 66 6e  |."Filer_Run "+fn|
00006440  61 6d 65 24 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |ame$(current_men|
00006450  75 2c 69 74 65 6d 29 0d  27 ec 05 e1 0d 27 f6 04  |u,item).'....'..|
00006460  0d 28 00 14 dd f2 6f 70  65 6e 5f 64 69 72 5f 66  |.(....open_dir_f|
00006470  6f 75 6e 64 0d 28 0a 12  e7 20 ac 20 72 75 6e 66  |ound.(... . runf|
00006480  69 6c 65 73 20 e1 0d 28  14 2f ff 22 46 69 6c 65  |iles ..(./."File|
00006490  72 5f 4f 70 65 6e 44 69  72 20 22 2b 66 6e 61 6d  |r_OpenDir "+fnam|
000064a0  65 24 28 63 75 72 72 65  6e 74 5f 6d 65 6e 75 2c  |e$(current_menu,|
000064b0  69 74 65 6d 29 0d 28 1e  05 e1 0d 28 28 04 0d 28  |item).(....((..(|
000064c0  32 14 dd f2 6e 65 77 5f  6d 65 6e 75 5f 66 6f 75  |2...new_menu_fou|
000064d0  6e 64 0d 28 3c 20 6d 24  3d 66 6e 61 6d 65 24 28  |nd.(< m$=fname$(|
000064e0  63 75 72 72 65 6e 74 5f  6d 65 6e 75 2c 69 74 65  |current_menu,ite|
000064f0  6d 29 0d 28 46 15 7a 3d  a4 6d 65 6e 75 5f 65 78  |m).(F.z=.menu_ex|
00006500  69 73 74 28 6d 24 29 0d  28 50 18 e7 20 6d 24 3d  |ist(m$).(P.. m$=|
00006510  22 4d 61 69 6e 20 4d 65  6e 75 22 20 6d 3d 30 0d  |"Main Menu" m=0.|
00006520  28 5a 14 e7 20 6d 3e 3d  30 20 80 20 6d 3c 3d 32  |(Z.. m>=0 . m<=2|
00006530  30 20 8c 0d 28 64 14 20  20 63 75 72 72 65 6e 74  |0 ..(d.  current|
00006540  5f 6d 65 6e 75 3d 6d 0d  28 6e 1b 20 20 f2 63 6c  |_menu=m.(n.  .cl|
00006550  6f 73 65 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |ose_window(handl|
00006560  65 29 0d 28 78 2d 20 20  68 61 6e 64 6c 65 3d 77  |e).(x-  handle=w|
00006570  69 5f 68 61 6e 64 6c 65  25 28 74 79 70 65 28 63  |i_handle%(type(c|
00006580  75 72 72 65 6e 74 5f 6d  65 6e 75 29 2b 34 29 0d  |urrent_menu)+4).|
00006590  28 82 29 20 20 64 61 74  61 3d 77 69 5f 64 61 74  |(.)  data=wi_dat|
000065a0  61 25 28 74 79 70 65 28  63 75 72 72 65 6e 74 5f  |a%(type(current_|
000065b0  6d 65 6e 75 29 2b 34 29  0d 28 8c 1a 20 20 f2 6f  |menu)+4).(..  .o|
000065c0  70 65 6e 5f 77 69 6e 64  6f 77 28 68 61 6e 64 6c  |pen_window(handl|
000065d0  65 29 0d 28 96 15 20 20  f2 72 65 64 6f 5f 61 6c  |e).(..  .redo_al|
000065e0  6c 5f 69 63 6f 6e 73 0d  28 a0 12 20 20 f2 72 65  |l_icons.(..  .re|
000065f0  64 72 61 77 5f 6c 69 73  74 0d 28 aa 05 cd 0d 28  |draw_list.(....(|
00006600  b4 05 e1 0d 28 be 04 0d  28 c8 14 dd f2 72 75 6e  |....(...(....run|
00006610  5f 66 69 6c 65 73 5f 66  72 6f 6d 0d 28 d2 28 e7  |_files_from.(.(.|
00006620  20 72 75 6e 66 69 6c 65  73 20 8c 20 72 75 6e 66  | runfiles . runf|
00006630  69 6c 65 73 3d a3 20 8b  20 72 75 6e 66 69 6c 65  |iles=. . runfile|
00006640  73 3d b9 0d 28 dc 13 f2  74 69 63 6b 5f 69 74 65  |s=..(...tick_ite|
00006650  6d 28 36 2c 31 29 0d 28  e6 05 e1 0d 28 f0 04 0d  |m(6,1).(....(...|
00006660  28 fa 4b f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |(.K. -----------|
00006670  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00006680  2d 2d 2d 2d 20 4d 65 6e  75 20 44 61 74 61 20 2d  |---- Menu Data -|
00006690  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000066a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 29 04 04 0d 29  |----------.)...)|
000066b0  0e 1b dc 20 22 4d 65 6e  61 6b 65 72 22 2c 36 2c  |... "Menaker",6,|
000066c0  69 63 6f 6e 5f 6d 65 6e  75 0d 29 18 18 dc 20 22  |icon_menu.)... "|
000066d0  49 6e 66 6f 22 2c 69 6e  66 6f 5f 68 61 6e 64 6c  |Info",info_handl|
000066e0  65 0d 29 22 18 dc 20 22  53 61 76 65 22 2c 73 61  |e.)".. "Save",sa|
000066f0  76 65 5f 68 61 6e 64 6c  65 0d 29 2c 18 dc 20 22  |ve_handle.),.. "|
00006700  4f 70 74 69 6f 6e 73 22  2c 6f 70 74 5f 6d 65 6e  |Options",opt_men|
00006710  75 0d 29 36 10 dc 20 22  43 6c 65 61 72 22 2c 2d  |u.)6.. "Clear",-|
00006720  31 0d 29 40 15 dc 20 22  43 6f 70 79 20 66 69 6c  |1.)@.. "Copy fil|
00006730  65 73 22 2c 2d 31 0d 29  4a 0f dc 20 22 51 75 69  |es",-1.)J.. "Qui|
00006740  74 22 2c 2d 31 0d 29 54  04 0d 29 5e 1a dc 20 22  |t",-1.)T..)^.. "|
00006750  4d 65 6e 75 73 22 2c 32  2c 6d 65 6e 75 73 5f 6d  |Menus",2,menus_m|
00006760  65 6e 75 0d 29 68 13 dc  20 22 4e 65 77 20 6d 65  |enu.)h.. "New me|
00006770  6e 75 22 2c 2d 31 0d 29  72 19 dc 20 22 4d 65 6e  |nu",-1.)r.. "Men|
00006780  75 20 27 27 22 2c 6d 65  6e 75 5f 6d 65 6e 75 0d  |u ''",menu_menu.|
00006790  29 7c 04 0d 29 86 1a dc  20 22 49 74 65 6d 73 22  |)|..)... "Items"|
000067a0  2c 33 2c 69 74 65 6d 73  5f 6d 65 6e 75 0d 29 90  |,3,items_menu.).|
000067b0  19 dc 20 22 49 74 65 6d  20 27 27 22 2c 69 74 65  |.. "Item ''",ite|
000067c0  6d 5f 6d 65 6e 75 0d 29  9a 19 dc 20 22 4d 61 69  |m_menu.)... "Mai|
000067d0  6e 20 6d 65 6e 75 20 69  74 65 6d 22 2c 2d 31 0d  |n menu item",-1.|
000067e0  29 a4 17 dc 20 22 53 75  62 6d 65 6e 75 20 69 74  |)... "Submenu it|
000067f0  65 6d 22 2c 2d 31 0d 29  ae 04 0d 29 b8 18 dc 20  |em",-1.)...)... |
00006800  22 4d 65 6e 75 22 2c 32  2c 6d 65 6e 75 5f 6d 65  |"Menu",2,menu_me|
00006810  6e 75 0d 29 c2 11 dc 20  22 44 65 6c 65 74 65 22  |nu.)... "Delete"|
00006820  2c 2d 31 0d 29 cc 15 dc  20 22 41 6c 74 65 72 20  |,-1.)... "Alter |
00006830  74 79 70 65 22 2c 2d 31  0d 29 d6 04 0d 29 e0 18  |type",-1.)...)..|
00006840  dc 20 22 49 74 65 6d 22  2c 33 2c 69 74 65 6d 5f  |. "Item",3,item_|
00006850  6d 65 6e 75 0d 29 ea 11  dc 20 22 44 65 6c 65 74  |menu.)... "Delet|
00006860  65 22 2c 2d 31 0d 29 f4  15 dc 20 22 41 6c 74 65  |e",-1.)... "Alte|
00006870  72 20 69 6e 66 6f 22 2c  2d 31 0d 29 fe 17 dc 20  |r info",-1.)... |
00006880  22 4d 61 6b 65 20 73 75  62 6d 65 6e 75 22 2c 2d  |"Make submenu",-|
00006890  31 0d 2a 08 04 0d 2a 12  1a dc 20 22 4f 70 74 69  |1.*...*... "Opti|
000068a0  6f 6e 73 22 2c 31 2c 6f  70 74 5f 6d 65 6e 75 0d  |ons",1,opt_menu.|
000068b0  2a 1c 21 dc 20 22 52 75  6e 20 66 69 6c 65 73 20  |*.!. "Run files |
000068c0  66 72 6f 6d 20 4d 65 6e  61 6b 65 72 22 2c 2d 31  |from Menaker",-1|
000068d0  0d ff                                             |..|
000068d2