Home » Archimedes archive » Acorn User » AU 1997-01 B.adf » Regulars » StarInfo/Wickett/!WannaKern/!RunImage

StarInfo/Wickett/!WannaKern/!RunImage

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

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

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-01 B.adf » Regulars
Filename: StarInfo/Wickett/!WannaKern/!RunImage
Read OK:
File size: 795A bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > <WannaKern$Dir>.!RunImage
   20REM Written by Barry Wickett, May 96
   30REM
   40REM Queries to:
   50REM  Barry Wickett
   60REM  14 New Zealand Road
   70REM  Cardiff
   80REM  CF4 3BR
   90
  100PROCwimp_init("WannaKern")
  110
  120REPEAT
  121
  130  SYS"Wimp_Poll",1+dragging%,q% TO reason%
  131  
  140  CASE reason% OF
  150    WHEN 0 : PROCwindow_dragging
  160    WHEN 1 : PROCwindow_redraw(!q%)
  170    WHEN 2 : PROCwindow_open(q%)
  180    WHEN 3 : PROCwindow_close(!q%)
  190    WHEN 6 : PROCmouse_click(!q%,q%!4,q%!8,q%!12,q%!16)
  200    WHEN 7 : PROCwindow_end_drag
  210    WHEN 8 : PROCkey_pressed(!q%,q%!4,q%!24)
  220    WHEN 9 : PROCmenu_select
  230    WHEN 17,18 : PROCmessage(q%!16,q%!4,q%!8)
  240    WHEN 19 : PROCmessage_returned(q%!16)
  250  ENDCASE
  260UNTIL exit%
  270
  280PROCmess_close
  290PROCfs_quit
  300
  310SYS"Wimp_CloseDown"
  340
  350END
  360
  370DEF PROCmouse_info
  380SYS"Wimp_GetPointerInfo",,q%
  390mx%=!q%
  400my%=q%!4
  410but%=q%!8
  420wind%=q%!12
  430icon%=q%!16
  440ENDPROC
  450
  460DEF PROCmouse_click(mx%,my%,but%,wind%,icon%)
  470CASE wind% OF
  480
  490  WHEN -2
  500    CASE but% OF
  510      WHEN 2 : PROCmenu_open(bar_menu%,mx%-(bar_menu%!16)/2-16,184)
  520      WHEN 4
  530        IF FNwindow_active(main%) THEN
  540          PROCwindow_popup(main%)
  550        ELSE
  560          PROCmain_reset
  570          PROCwindow_open_fully(main%,TRUE)
  580          PROCcaret_place(tools%,0,256)
  590        ENDIF
  600    ENDCASE
  620
  630  WHEN tools%
  640    CASE but% OF
  650      WHEN 4
  660        CASE icon% OF
  670          WHEN 2 : PROCfs_popup(FNmess("FSTITLE"),fname$,fheight%,faspect%)
  680          WHEN 5
  690            $scale_text%=STR$(scale%)
  700            PROCmenu_icon_popup(wind%,icon%,scale_menu%)
  710          WHEN 6 : PROCmain_set_auto_kern(FNicon_selected(tools%,6))
  720          WHEN 9,10 : PROCmain_set_global_kern(FNicon_updown(9,10,7,-99,99))
  730          WHEN 11 : PROCmain_reset
  740        ENDCASE
  750      WHEN 2 : PROCmain_open_save_box
  760    ENDCASE
  761    
  770  WHEN main%
  780    CASE but% OF
  790      WHEN 4 : PROCmain_check_drag(mx%,my%)
  800      WHEN 2 : PROCmain_open_save_box
  810    ENDCASE
  811    
  820  WHEN fs_wind% : PROCfs_click(mx%,my%,but%,wind%,icon%)
  821  
  830  WHEN save%
  840    IF but%=4 THEN
  850      CASE icon% OF
  860        WHEN 0 : PROCicon_start_drag(save%,0)
  870        WHEN 2 : PROCmenu_close
  880        WHEN 3 : PROCfile_save(FNicon_text(save%,1))
  890      ENDCASE
  900    ENDIF
  910ENDCASE
  920ENDPROC
  930
  940DEF PROCmain_open_save_box
  950PROCicon_set_text(save%,1,FNmess("DFSN"))
  960PROCwindow_open_as_menu(save%,mx%,my%)
  970ENDPROC
  980
  990DEF PROCkey_pressed(wind%,icon%,key%)
 1000CASE wind% OF
 1010  WHEN fs_wind% : PROCfs_key_pressed(wind%,icon%,key%)
 1020  WHEN tools% : PROCmain_key_pressed(wind%,icon%,key%)
 1030OTHERWISE
 1040  SYS"Wimp_ProcessKey",key%
 1050ENDCASE
 1060ENDPROC
 1070
 1080DEF PROCmain_key_pressed(wind%,icon%,key%)
 1090CASE icon% OF
 1100  WHEN 0 : PROCmain_get_string
 1110  WHEN 7 : PROCmain_set_global_kern(FNicon_val(tools%,7))
 1120ENDCASE
 1130SYS"Wimp_ProcessKey",key%
 1140ENDPROC
 1150
 1160DEF PROCmain_check_drag(mx%,my%)
 1170LOCAL len%, c%, x%
 1180dx%=wx%+32
 1190dy%=wy%-(rad%*2+pane_height%+(fheight%*2.5*scale%)/100)
 1200PROCwindow_info(main%)
 1210len%=LENmain_string$
 1211
 1220IF len%>1 THEN
 1230  drag_loop%=0
 1240  FOR c%=2 TO len%
 1250    x%=dx%+(char_x%(c%)*scale%)/25600+rad%
 1260    IF SQR((mx%-x%)^2+(my%-dy%)^2)<=rad% THEN
 1270      drag_loop%=c%
 1280      off_x%=mx%-x%+rad%
 1290    ENDIF
 1300  NEXT c%
 1310  IF drag_loop% THEN
 1320    PROCwindow_start_user_drag(main%,q%!4,dy%,q%!12,dy%)
 1330    char_base%=dx%+((char_x%(drag_loop%)-kern%(2,drag_loop%))*scale%)/25600+off_x%
 1340  ENDIF
 1350ENDIF
 1360ENDPROC
 1370
 1380DEF PROCwindow_dragging
 1390PROCmouse_info
 1400x%=mx%-char_base%
 1410new_kern%=(x%*25600)/scale%
 1420IF new_kern%<>kern%(2,drag_loop%) THEN
 1430  kern%(2,drag_loop%)=new_kern%
 1440  PROCmain_calc(drag_loop%)
 1450ENDIF
 1460ENDPROC
 1470
 1480DEF PROCwindow_end_drag
 1490dragging%=FALSE
 1500CASE drag_wind% OF
 1510  WHEN main% : PROCmain_calc(drag_loop%)
 1520  WHEN save% : PROCfile_drop(FNfile_leaf(FNicon_text(save%,1)),&AFF,2000)
 1530ENDCASE
 1540ENDPROC
 1550
 1560DEF PROCmain_reset
 1570LOCAL c%
 1580FOR c%=0 TO 255
 1590  kern%(2,c%)=0
 1600NEXT c%
 1610PROCmain_get_string
 1620PROCmain_set_scale(100)
 1630PROCmain_set_auto_kern(TRUE)
 1640PROCmain_set_global_kern(0)
 1650PROCmain_calc(1)
 1660ENDPROC
 1670
 1680DEF PROCmain_get_string
 1690LOCAL new$, diff%
 1700new$=FNicon_text(tools%,0)
 1710IF main_string$<>new$ THEN
 1720  diff%=1
 1730  WHILE LEFT$(main_string$,diff%)=LEFT$(new$,diff%)
 1740    diff%+=1
 1750  ENDWHILE
 1760  main_string$=new$
 1770  PROCmain_calc_kerns
 1780  PROCmain_calc(diff%)
 1790ENDIF
 1800ENDPROC
 1810
 1820DEF PROCmain_set_scale(new%)
 1830IF new%<10 THEN new%=10 ELSE IF new%>999 THEN new%=999
 1840IF scale%<>new% THEN
 1850  scale%=new%
 1860  PROCicon_set_text(tools%,3,STR$(scale%)+"%")
 1870  PROCmain_calc(1)
 1880ENDIF
 1890ENDPROC
 1900
 1910DEF PROCmain_set_auto_kern(new%)
 1920IF auto_kern%<>new% THEN
 1930  auto_kern%=new%
 1940  PROCicon_select(tools%,6,auto_kern%)
 1950  PROCmain_calc(1)
 1960ENDIF
 1970ENDPROC
 1980
 1990DEF PROCmain_set_global_kern(new%)
 2000IF global_kern%<>new% THEN
 2010  global_kern%=new%
 2020  IF FNicon_val(tools%,7)<>new% THEN PROCicon_set_val(tools%,7,global_kern%)
 2030  PROCmain_calc(1)
 2040ENDIF
 2050ENDPROC
 2060
 2070DEF PROCmain_calc_kerns
 2080LOCAL c%, fhandle%, len%
 2090fhandle%=FNfont_handle(fname$,fheight%,faspect%,100)
 2100len%=LENmain_string$
 2110IF len% THEN
 2120  FOR c%=1 TO len%
 2130    kern%(0,c%)=FNfont_width(MID$(main_string$,c%,1),FALSE)
 2140    kern%(1,c%)=FNfont_width(MID$(main_string$,c%,2),TRUE)-FNfont_width(MID$(main_string$,c%,2),FALSE)
 2150  NEXT c%
 2160ENDIF
 2170kern%(2,len%+1)=0
 2180SYS"Font_LoseFont",fhandle%
 2190ENDPROC
 2200
 2210DEF PROCmain_calc(start%)
 2220LOCAL c%, len%, temp_x%
 2230temp_x%=char_x%(start%)
 2240len%=LENmain_string$
 2250IF len%>1 THEN
 2260  FOR c%=start% TO len%+1
 2270    IF c%>1 THEN char_x%(c%)=char_x%(c%-1)+kern%(0,c%-1)-kern%(1,c%-1)*auto_kern%+global_kern%*160+kern%(2,c%)
 2280  NEXT c%
 2290ENDIF
 2300
 2310IF NOTdragging% THEN
 2320  total%=((char_x%(len%)+kern%(0,len%))*scale%)/25600+64
 2330  IF total%<pane_width% THEN total%=pane_width%
 2340  PROCwindow_set_extent(main%,0,-(pane_height%+64+(fheight%*3*scale%)/100),total%,0)
 2350ENDIF
 2360
 2370IF char_x%(start%)<temp_x% THEN temp_x%=char_x%(start%)
 2380PROCwindow_info(main%)
 2390PROCpre_loop
 2400PROCwindow_start_update_box(main%,28+(temp_x%*scale%)/25600,1<<31,1<<30,1<<30)
 2410PROCredraw_loop
 2420PROCpost_loop
 2430ENDPROC
 2440
 2450DEF FNfont_width(st$,kern%)
 2460LOCAL width%
 2470flags%=(1<<8)
 2480IF kern% THEN flags%=flags%OR(1<<9)
 2490SYS"Font_ScanString",fhandle%,st$,flags%,1<<30,1<<30 TO ,,,width%
 2500=width%*0.64
 2510
 2520DEF FNfont_handle(font$,height%,aspect%,scale%)
 2530LOCAL handle%
 2540SYS"Font_FindFont",,font$,(height%*aspect%*16*scale%)/10000,(height%*16*scale%)/100,0,0 TO handle%
 2550=handle%
 2560
 2570DEF PROCmenu_select
 2580CASE menu_open% OF
 2590  WHEN bar_menu% : IF !q%=1 THEN exit%=TRUE
 2600  WHEN fs_menu% : PROCfs_menu_select
 2610  WHEN scale_menu%
 2620    new_scale%=0
 2630    CASE !q% OF
 2640      WHEN 0 : new_scale%=scale%*2
 2650      WHEN 1 : new_scale%=scale%/2
 2660      WHEN 2 : new_scale%=100
 2670      WHEN 3 : new_scale%=50
 2680      WHEN 4 : new_scale%=200
 2690      WHEN 5 : new_scale%=VAL($scale_text%)
 2700    ENDCASE
 2710    IF new_scale% THEN PROCmain_set_scale(new_scale%)
 2720ENDCASE
 2730ENDPROC
 2740
 2750DEF PROCmessage_returned(type%)
 2760CASE type% OF
 2770  WHEN 7
 2780    PROCmenu_close
 2790    PROCheap_lose_block(file_block%)
 2800ENDCASE
 2810ENDCASE
 2820
 2830DEF PROCmessage(type%,task%,ref%)
 2840CASE type% OF
 2850  WHEN 0 : exit%=TRUE
 2860  WHEN 2 : PROCfile_save(FNstring(q%+44))
 2870  WHEN 6 : PROCfile_out_trans
 2880  WHEN &502 : PROCdo_help(q%!32,q%!36)
 2890ENDCASE
 2900ENDPROC
 2910
 2920DEF PROCmessage_reply(mn%,q%!16)
 2930q%!12=ref%
 2940SYS"Wimp_SendMessage",mn%,q%,task%
 2950ENDPROC
 2960
 2970DEF FNfile_leaf(name$)
 2980WHILE INSTR(name$,".")
 2990  name$=MID$(name$,INSTR(name$,".")+1)
 3000ENDWHILE
 3010=name$
 3020
 3030DEF PROCfile_out_trans
 3040IF otrans%=0 THEN file_block%=FNfile_prepare
 3050IF file_block% THEN
 3060  togo%=file_size%-otrans%
 3070  IF togo%>q%!24 THEN togo%=q%!24
 3080  IF togo%+otrans%>file_size% THEN togo%=file_size%
 3090  SYS"Wimp_TransferBlock",my_task%,file_block%+otrans%,task%,q%!20,togo%
 3100  q%!24=togo%
 3110  PROCmessage_reply(18,7)
 3120  otrans%+=togo%
 3130  IF otrans%=file_size% THEN
 3140    PROCheap_lose_block(file_block%)
 3150    PROCmenu_close
 3160  ENDIF
 3170ENDIF
 3180ENDPROC
 3190
 3200DEF FNfile_save_block(name$,pos%,size%,file_type%)
 3210LOCAL ok%,error%
 3220SYS"XOS_File",10,name$,file_type%,,pos%,pos%+size% TO error%;ok%
 3230ok%=((ok%AND1)=0)
 3240IF NOTok% THEN PROCerror_report(FNmess0("save_bad",FNstring(error%+4)))
 3250=ok%
 3260
 3270DEF FNfile_prepare
 3280LOCAL draw_block%
 3290IF LENmain_string$>0 THEN
 3300  PROCdraw_header("WannaKern",25600,25600)
 3310  PROCdraw_start_fonttable
 3320  PROCdraw_add_font(fname$)
 3330  PROCdraw_end_fonttable
 3340  PROCdraw_start_group
 3350  FOR a%=1 TO LENmain_string$
 3360    PROCdraw_text(MID$(main_string$,a%,1),1,fheight%,faspect%,char_x%(a%),0,0)
 3370  NEXT a%
 3380  PROCdraw_end_group
 3390  PROCdraw_end
 3400  file_size%=draw_size%
 3410ENDIF
 3420IF draw_block%=0 THEN PROCerror_message("Draw_Bad")
 3430=draw_block%
 3440
 3450DEF FNfile_name_ok(name$)
 3460LOCAL ok%
 3470ok%=TRUE
 3480IF INSTR(name$,":")=0 AND INSTR(name$,"<")=0 THEN
 3490  ok%=FALSE
 3500  PROCerror_message("save_badname")
 3510ENDIF
 3520=ok%
 3530
 3540DEF PROCfile_save(name$)
 3550LOCAL ok%
 3560ok%=FNfile_name_ok(name$)
 3570IF ok% THEN
 3580  file_block%=FNfile_prepare
 3590  IF file_block% THEN
 3600    IF FNfile_save_block(name$,file_block%,file_size%,file_type%) THEN PROCfile_tell_to_load(task%,name$,file_type%,file_size%,ref%)
 3610    PROCheap_lose_block(file_block%)
 3620    PROCmenu_close
 3630  ENDIF
 3640ENDIF
 3650ENDPROC
 3660
 3670DEF PROCfile_tell_to_load(task%,name$,type%,size%,ref%)
 3680PROCmouse_info
 3690PROCmessage_send(task%,0,17,3,ref%,wind%,icon%,mx%,my%,size%,type%,name$)
 3700ENDPROC
 3710
 3720DEF PROCmessage_send(task%,icon%,mn%,q%!16,q%!12,q%!20,q%!24,q%!28,q%!32,q%!36,q%!40,name$)
 3730PROCplace_null_string(name$,q%+44)
 3740!q%=(48+LENname$)ANDNOT3
 3750SYS"Wimp_SendMessage",mn%,q%,task%,icon%
 3760ENDPROC
 3770
 3780DEF PROCfile_drop(leaf$,ftype%,fsize%)
 3790file_size%=fsize%
 3800file_type%=ftype%
 3810PROCmouse_info
 3820PROCmessage_send(wind%,icon%,17,1,0,wind%,icon%,mx%,my%,file_size%,file_type%,leaf$)
 3830otrans%=0
 3840ENDPROC
 3850
 3860DEF PROCwimp_init(name$)
 3870
 3880my_dir$="<"+name$+"$Dir>"
 3890
 3900PROCmess_load(my_dir$+".Messages")
 3910
 3920my_name$=FNmess("PGN")
 3930
 3940DIM message_block% 16
 3950!message_block%=2
 3960message_block%!4=6
 3970message_block%!8=&502
 3980message_block%!12=0
 3990REM Tell the Wimp only to bother me with these 3 messages.
 4000
 4010SYS"Wimp_Initialise",310,&4B534154,my_name$,message_block% TO ,my_task%
 4020
 4030ON ERROR PROCerror_report(REPORT$+" at line "+STR$(ERL)):END
 4040
 4050PROCheap_init
 4060PROCdraw_init
 4070indsize%=4000
 4080DIM q% 2000, q2% 256, ind% indsize%, menu_block% 2000
 4090indend%=ind%+indsize%
 4100REM set up general block, indirected icon block and menu block
 4110
 4120SYS"XOS_SWINumberFromString",,"DragASprite_Start" TO ;drag%
 4130drag%=(drag% AND 1)=0
 4140SYS"OS_Byte",161,28 TO ,,bit%
 4150IF (bit% AND 2)=0 THEN drag%=FALSE
 4160
 4170SYS"Wimp_OpenTemplate",,my_dir$+".Templates"
 4180info%=FNwindow_template("info")
 4190main%=FNwindow_template("main")
 4200tools%=FNwindow_template("tools")
 4210save%=FNwindow_save_box(&AFF)
 4220PROCfs_init
 4230SYS"Wimp_CloseTemplate"
 4240
 4250my_icon%=FNicon_create(-1,0,0,68,68,&2002,"!"+name$)
 4260
 4270bar_menu%=FNstart_menu(my_name$)
 4280PROCmenu_item(FNmess("IBM0:"),info%)
 4290PROCmenu_item(FNmess("IBM1:"),0)
 4300PROCmenu_end
 4310
 4320scale_text%=FNdim_string("100")
 4330scale_valid%=FNdim_string("A0-9")
 4340scale_menu%=FNstart_menu(FNmess("SMT"))
 4350PROCmenu_item(FNmess("SM0"),0)
 4360PROCmenu_item(FNmess("SM1"),0)
 4370PROCmenu_set_last_flags(2)
 4380PROCmenu_item("100%",0)
 4390PROCmenu_item("50%",0)
 4400PROCmenu_item("200%",0)
 4410PROCmenu_ind_item(scale_text%,scale_valid%,4)
 4420PROCmenu_set_last_flags(4)
 4430PROCmenu_end
 4440
 4450dragging%=FALSE
 4460
 4470exit%=FALSE
 4480
 4490pane%=tools%
 4500pane_parent%=main%
 4510PROCwindow_info(pane%)
 4520pane_width%=q%!12-q%!4
 4530pane_height%=q%!16-q%!8
 4540pane_pos%=0
 4550
 4560scale%=100
 4570auto_kern%=FNicon_selected(tools%,6)
 4580global_kern%=0
 4590main_string$=""
 4600
 4610fname$=FNmess("FONT")
 4620fheight%=VAL(FNmess("FONTHGT"))
 4630faspect%=VAL(FNmess("FONTASPT"))
 4640DIM kern%(2,256), char_x%(256)
 4650PROCicon_set_text(tools%,0,FNmess("STDTEXT"))
 4660
 4670rad%=12
 4680ENDPROC
 4690
 4700DEF PROCwindow_redraw(!q%)
 4710PROCwindow_info(!q%)
 4720PROCpre_loop
 4730SYS"Wimp_RedrawWindow",,q% TO more%
 4740PROCredraw_loop
 4750PROCpost_loop
 4760ENDPROC
 4770
 4780DEF PROCpre_loop
 4790fx%=wx%+32
 4800fy%=wy%-(pane_height%+(fheight%*2.5*scale%)/100)
 4810fhandle%=FNfont_handle(fname$,fheight%,faspect%,scale%)
 4820SYS"ColourTrans_SetFontColours",fhandle%,&FFFFFF00,0,14
 4830ENDPROC
 4840
 4850DEF PROCredraw_loop
 4860LOCAL c%,x%,f%,y%
 4870f%=(1<<4)OR(1<<8)
 4890WHILE more%
 4900  SYS"Wimp_SetColour",0
 4910  RECTANGLE FILL q%!28,q%!32,q%!36-q%!28,q%!40-q%!32
 4920  SYS"Wimp_SetColour",11
 4930  FOR c%=1 TO LENmain_string$
 4940    x%=fx%+(char_x%(c%)*scale%)/25600
 4950    x1%=fx%+((char_x%(c%)+kern%(0,c%))*scale%)/25600
 4960    IF x1%>=q%!28 AND x%<=q%!36 THEN
 4970      SYS"Font_Paint",fhandle%,MID$(main_string$,c%,1),f%,x%,fy%
 4980      IF c%>1 THEN
 4990        CIRCLE x%+rad%,fy%-rad%*2,rad%
 5000        LINE x%,fy%,x%,fy%-rad%*2
 5010      ENDIF
 5020    ENDIF
 5030  NEXT c%
 5040  SYS"Wimp_GetRectangle",,q% TO more%
 5050ENDWHILE
 5060ENDPROC
 5070
 5080DEF PROCpost_loop
 5090SYS"Font_LoseFont",fhandle%
 5100ENDPROC
 5110
 5120DEF PROCfs_newstyle(name$,height%,aspect%)
 5130fname$=name$
 5140fheight%=height%
 5150faspect%=aspect%
 5160PROCmain_calc_kerns
 5170PROCmain_calc(1)
 5180ENDPROC
 5190
 5200DEF PROCdo_help(wind%,icon%)
 5210help_wind$=""
 5220
 5230CASE wind% OF
 5240  WHEN -2 : help_wind$="iconbar"
 5250  WHEN info% : help_wind$="info"
 5260  WHEN main% : help_wind$="main"
 5270  WHEN tools% : help_wind$="tools"
 5280  WHEN fs_wind% : help_wind$="fs"
 5290  WHEN save% : help_wind$="save"
 5300OTHERWISE
 5310  SYS"Wimp_GetMenuState",1,q%+40,wind%,icon%
 5320  CASE menu_open% OF
 5330    WHEN bar_menu% : help_alt$="IM"
 5340    WHEN scale_menu% : help_alt$="SM"
 5350    WHEN fs_menu%
 5360      CASE fs_which% OF
 5370        WHEN 0 : help_alt$="fsmf"
 5380        WHEN 1 : help_alt$="fsmw"
 5390        WHEN 2 : help_alt$="fsms"
 5400      ENDCASE
 5410  ENDCASE
 5420  help_token$=help_alt$+STR$(q%!40)
 5430ENDCASE
 5440
 5450IF help_wind$<>"" THEN
 5460  help_alt$=help_wind$
 5470  help_token$=help_wind$+STR$(icon%)
 5480ENDIF
 5490
 5500help_string$=FNmess("help_"+help_token$)
 5510IF help_string$="" THEN help_string$=FNmess("help_"+help_alt$)
 5520
 5530$(q%+20)=help_string$+CHR$0
 5540!q%=(24+LENhelp_string$)ANDNOT3
 5550PROCmessage_reply(17,&503)
 5560ENDPROC
 5570
 5580DEF FNicon_create(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,$(q%+24))
 5590LOCAL icon%
 5600SYS"Wimp_CreateIcon",,q% TO icon%
 5610=icon%
 5620
 5630DEF PROCicon_info(!q%,q%!4)
 5640SYS"Wimp_GetIconState",,q%
 5650ENDPROC
 5660
 5670DEF PROCicon_select(!q%,q%!4,select%)
 5680SYS"Wimp_GetIconState",,q%
 5690IF select% THEN q%!8=1<<21 ELSE q%!8=0
 5700q%!12=1<<21
 5710IF (q%!24 AND q%!12)<>q%!8 THEN SYS"Wimp_SetIconState",,q%
 5720ENDPROC
 5730
 5740DEF FNicon_selected(!q%,q%!4)
 5750SYS"Wimp_GetIconState",,q%
 5760=(((q%!24)AND(1<<21))>0)
 5770
 5780DEF PROCicon_set_text(!q%,q%!4,text$)
 5790SYS"Wimp_GetIconState",,q%
 5800text$=LEFT$(text$,q%!36-1)
 5810IF $(q%!28)<>text$ THEN
 5820$(q%!28)=text$
 5830q%!8=0
 5840q%!12=0
 5850SYS"Wimp_SetIconState",,q%
 5860PROCcaret_reset(!q%,q%!4)
 5870ENDIF
 5880ENDPROC
 5890
 5900DEF PROCicon_set_val(!q%,q%!4,val%)
 5910PROCicon_set_text(!q%,q%!4,STR$(val%))
 5920ENDPROC
 5930
 5940DEF FNicon_val(!q%,q%!4)
 5950=VAL(FNicon_text(!q%,q%!4))
 5960
 5970DEF FNicon_text(!q%,q%!4)
 5980LOCAL text$
 5990SYS"Wimp_GetIconState",,q%
 6000IF (q%!24)AND(1<<8) THEN text$=$(q%!28) ELSE text$=$(q%+28)
 6010=text$
 6020
 6030DEF PROCicon_set_fh(!q%,q%!4,handle%)
 6040q%!8=(1<<6)OR(handle%<<24)
 6050q%!12=(1<<6)OR(255<<24)
 6060SYS"Wimp_SetIconState",,q%
 6070ENDPROC
 6080
 6090DEF FNicon_selected(!q%,q%!4)
 6100SYS"Wimp_GetIconState",,q%
 6110=(((q%!24)AND(1<<21))>0)
 6120
 6130DEF PROCicon_select(!q%,q%!4,select%)
 6140SYS"Wimp_GetIconState",,q%
 6150IF select% THEN q%!8=1<<21 ELSE q%!8=0
 6160q%!12=1<<21
 6170IF (q%!24 AND q%!12)<>q%!8 THEN SYS"Wimp_SetIconState",,q%
 6180ENDPROC
 6190
 6200DEF FNicon_updown(dec%,inc%,c_icon%,lb%,ub%)
 6210LOCAL val%
 6220val%=FNicon_val(wind%,c_icon%)
 6230IF icon%=dec% AND val%>lb% THEN val%-=1
 6240IF icon%=inc% AND val%<ub% THEN val%+=1
 6250PROCicon_set_val(wind%,c_icon%,val%)
 6260PROCcaret_reset(wind%,c_icon%)
 6270=val%
 6280
 6290DEF PROCicon_start_drag(wind%,icon%)
 6300drag_wind%=wind%
 6310drag_icon%=icon%
 6320PROCwindow_info(wind%)
 6330PROCicon_info(wind%,icon%)
 6340!q%=0
 6350q%!4=5
 6360q%!8+=wx%
 6370q%!12+=wy%
 6380q%!16+=wx%
 6390q%!20+=wy%
 6400q%!24=1<<31
 6410q%!28=1<<31
 6420q%!32=1<<30
 6430q%!36=1<<30
 6440IF drag% THEN
 6450  SYS"DragASprite_Start",197,1,FNicon_text(wind%,icon%),q%+8,q%+24
 6460ELSE
 6470  SYS"Wimp_DragBox",,q%
 6480ENDIF
 6490ENDPROC
 6500
 6510DEF PROCcaret_place(wind%,icon%,index%)
 6520LOCAL len%
 6530len%=LEN(FNicon_text(wind%,icon%))
 6540IF index%>len% THEN index%=len%
 6550SYS"Wimp_SetCaretPosition",wind%,icon%,,,-1,index%
 6560ENDPROC
 6570
 6580DEF PROCcaret_reset(wind%,icon%)
 6590SYS"Wimp_GetCaretPosition",,q%
 6600IF !q%=wind% AND q%!4=icon% THEN PROCcaret_place(wind%,icon%,q%!20)
 6610ENDPROC
 6620
 6630DEF FNwindow_template(title$)
 6640SYS"Wimp_LoadTemplate",,q%,ind%,indend%,-1,title$ TO ,,ind%
 6650SYS"Wimp_CreateWindow",,q% TO wind%
 6660=wind%
 6670
 6680DEF FNwindow_save_box(file_type%)
 6690LOCAL wind%
 6700wind%=FNwindow_template("savebox")
 6710PROCicon_set_text(wind%,0,"file_"+RIGHT$("00"+STR$~(file_type%),3))
 6720=wind%
 6730
 6740DEF PROCwindow_popup(!q%)
 6750SYS"Wimp_GetWindowState",,q%
 6760q%!28=-1
 6770PROCwindow_open(q%)
 6780ENDPROC
 6790
 6800DEF PROCwindow_open(q%)
 6810LOCAL new_pos%
 6820IF !q%=pane_parent% THEN
 6830  PROCwindow_calc_pane
 6840  SYS"Wimp_OpenWindow",,q2%
 6850  SYS"Wimp_OpenWindow",,q%
 6860  PROCwindow_info(pane_parent%)
 6870  PROCwindow_calc_pane
 6880  PROCwindow_info(pane%)
 6890  IF q%!4<>q2%!4 OR q%!8<>q2%!8 OR q%!12<>q2%!12 OR q%!16<>q2%!16 THEN
 6900    q2%!28=!q2%
 6910    SYS"Wimp_OpenWindow",,q2%
 6920  ENDIF
 6930ELSE
 6940  SYS"Wimp_OpenWindow",,q%
 6950ENDIF
 6960ENDPROC
 6970
 6980DEF PROCwindow_calc_pane
 6990!q2%=pane%
 7000q2%!4=q%!4
 7010q2%!8=q%!16-pane_height%
 7020q2%!12=q%!12 : q2%!16=q%!16
 7030q2%!20=0 : q2%!24=0
 7040q2%!28=q%!28 : q%!28=!q2%
 7050ENDPROC
 7060
 7070DEF PROCwindow_open_fully(!q%,top%)
 7080SYS"Wimp_GetWindowInfo",,q%
 7090q%!12=q%!4+(q%!52-q%!44)
 7100q%!8=q%!16-(q%!56-q%!48)
 7110IF top% THEN q%!28=-1
 7120PROCwindow_open(q%)
 7130ENDPROC
 7140
 7150DEF PROCwindow_reopen(!q%)
 7160PROCwindow_info(!q%)
 7170PROCwindow_open(q%)
 7180ENDPROC
 7190
 7200DEF FNwindow_open_fully(!q%)
 7210SYS"Wimp_GetWindowState",,q%
 7220=((q%!32AND(1<<18))<>0)
 7230
 7240DEF PROCwindow_close(!q%)
 7250SYS"Wimp_CloseWindow",,q%
 7260IF !q%=pane_parent% THEN PROCwindow_close(pane%)
 7270IF !q%=pane% THEN pane_pos%=0
 7280ENDPROC
 7290
 7300DEF PROCwindow_info(wind%)
 7310!q%=wind%
 7320SYS"Wimp_GetWindowState",,q%
 7330wx%=q%!4-q%!20
 7340wy%=q%!16-q%!24
 7350ENDPROC
 7360
 7370DEF PROCwindow_new_title(!q%,title$)
 7380SYS"Wimp_GetWindowInfo",,q%
 7390IF $(q%!76)<>title$ THEN
 7400  $(q%!76)=title$
 7410  IF FNwindow_active(!q%) THEN
 7420    SYS"Wimp_GetWindowOutline",,q%
 7430    SYS"Wimp_ForceRedraw",-1,q%!4,q%!16-44,q%!12,q%!16
 7440  ENDIF
 7450ENDIF
 7460ENDPROC
 7470
 7480DEF PROCwindow_set_extent(wind%,x0%,y0%,x1%,y1%)
 7490LOCAL fully%
 7500fully%=FNwindow_open_fully(wind%)
 7510!q%=wind%
 7520SYS"Wimp_GetWindowInfo",,q%
 7530IF x0%<>q%!44 OR y0%<>q%!48 OR x1%<>q%!52 OR y1%<>q%!56 THEN
 7540  !q%=x0%
 7550  q%!4=y0%
 7560  q%!8=x1%
 7570  q%!12=y1%
 7580  SYS"Wimp_SetExtent",wind%,q%
 7590  IF fully% THEN PROCwindow_open_fully(wind%,FALSE) ELSE PROCwindow_reopen(wind%)
 7600  ENDIF
 7610ENDIF
 7620ENDPROC
 7630
 7640DEF FNwindow_active(!q%)
 7650SYS"Wimp_GetWindowState",,q%
 7660=((q%!32AND(1<<16))<>0)
 7670
 7680DEF PROCwindow_force_redraw(!q%)
 7690SYS"Wimp_GetWindowInfo",,q%
 7700SYS"Wimp_ForceRedraw",!q%,q%!44,q%!48,q%!52,q%!56
 7710ENDPROC
 7720
 7730DEF PROCwindow_start_update(!q%)
 7740SYS"Wimp_GetWindowInfo",,q%
 7750q%!4=q%!44
 7760q%!8=q%!48
 7770q%!12=q%!52
 7780q%!16=q%!56
 7790SYS"Wimp_UpdateWindow",,q% TO more%
 7800ENDPROC
 7810
 7820DEF PROCwindow_start_update_box(!q%,q%!4,q%!8,q%!12,q%!16)
 7830SYS"Wimp_UpdateWindow",,q% TO more%
 7840ENDPROC
 7850
 7860DEF PROCwindow_start_user_drag(wind%,q%!24,q%!28,q%!32,q%!36)
 7870!q%=0
 7880q%!4=7
 7890drag_wind%=wind%
 7900SYS"Wimp_DragBox",,q%
 7910dragging%=TRUE
 7920ENDPROC
 7930
 7940DEF PROCwindow_open_as_menu(wind%,mx%,my%)
 7950PROCwindow_info(wind%)
 7960mx%-=(q%!12-q%!4)/2
 7970my%+=48
 7980PROCmenu_open(save%,mx%,my%)
 7990ENDPROC
 8000
 8010DEF FNdim_string(st$)
 8020LOCAL pos%
 8030DIM pos% LENst$+1
 8040$pos%=st$
 8050=pos%
 8060
 8070DEF PROCmenu_open(menu%,mx%,my%)
 8080SYS"Wimp_CreateMenu",,menu%,mx%,my%
 8090menu_open%=menu%
 8100ENDPROC
 8110
 8120DEF PROCmenu_close
 8130SYS"Wimp_CreateMenu",,-1
 8140menu_open%=-1
 8150ENDPROC
 8160
 8170DEF FNstart_menu(name$)
 8180longest%=LENname$
 8190menu_start%=menu_block%
 8200$menu_block%=name$
 8210menu_block%!12=&70207
 8220menu_block%!20=44
 8230menu_block%!24=0
 8240menu_block%+=28
 8250=menu_start%
 8260
 8270DEF PROCmenu_item(item$,link%)
 8280IF LENitem$>longest% THEN longest%=LENitem$
 8290!menu_block%=0
 8300menu_block%!4=link%
 8310menu_block%!8=&7000021
 8320$(menu_block%+12)=item$
 8330menu_block%+=24
 8340ENDPROC
 8350
 8360DEF PROCmenu_set_last_flags(flags%)
 8370!(menu_block%-24)=flags%
 8380ENDPROC
 8390
 8400DEF FNmenu_text(menu%,item%)
 8410menu%+=28+item%*24
 8420IF (menu%!8)AND(1<<8) THEN menu%=menu%!12 ELSE menu%+=12
 8430=$menu%
 8440
 8450DEF PROCmenu_tick(menu%,item%,tick%)
 8460menu%=menu%+28+item%*24
 8470IF tick% THEN !menu%=!menu% OR1 ELSE !menu%=!menu% ANDNOT1
 8480ENDPROC
 8490
 8500DEF PROCmenu_ind_item(text%,valid%,len%)
 8510IF len%-1>longest% THEN longest%=len%-1
 8520!menu_block%=0
 8530menu_block%!4=0
 8540menu_block%!8=&7000121
 8550menu_block%!12=text%
 8560menu_block%!16=valid%
 8570menu_block%!20=len%
 8580menu_block%+=24
 8590ENDPROC
 8600
 8610DEF PROCmenu_end
 8620menu_start%!16=(longest%+1)*16
 8630!(menu_block%-24)=!(menu_block%-24) OR &80
 8640ENDPROC
 8650
 8660DEF PROCmenu_icon_popup(wind%,icon%,menu%)
 8670PROCwindow_info(wind%)
 8680PROCicon_info(wind%,icon%)
 8690PROCmenu_open(menu%,wx%+q%!16,wy%+q%!20)
 8700ENDPROC
 8710
 8720DEF PROCmenu_shade(menu%,item%,shade%)
 8730p%=menu%+36+item%*24
 8740!p%=!p% ANDNOT(1<<22)
 8750IF shade% THEN !p%=!p% OR(1<<22)
 8760ENDPROC
 8770
 8780DEF PROCmess_load(message_file$)
 8790SYS"MessageTrans_FileInfo",,message_file$ TO ,,message_size%;ok%
 8800DIM messages% message_size%
 8810DIM message_desc% 16
 8820DIM message_buffer% 256
 8830SYS"MessageTrans_OpenFile",message_desc%,message_file$,messages%
 8840ENDPROC
 8850
 8860DEF FNmess(token$)
 8861LOCAL ok%
 8870SYS"XMessageTrans_Lookup",message_desc%,token$,message_buffer%,255 TO ;ok%
 8880IF (ok%AND1)=1 THEN ?message_buffer%=0
 8890=FNstring(message_buffer%)
 8900
 8910DEF FNmess0(token$,st0$)
 8911LOCAL ok%
 8920SYS"XMessageTrans_Lookup",message_desc%,token$,message_buffer%,255,st0$ TO ;ok%
 8930IF (ok%AND1)=1 THEN ?message_buffer%=0
 8940=FNstring(message_buffer%)
 8950
 8960DEF PROCmess_close
 8970SYS"MessageTrans_CloseFile",message_desc%
 8980ENDPROC
 8990
 9000DEF FNstring(pos%)
 9010LOCAL st$
 9020WHILE ?pos%>31
 9030  st$+=CHR$(?pos%)
 9040  pos%+=1
 9050ENDWHILE
 9060=st$
 9070
 9080DEF PROCplace_null_string(st$,pos%)
 9090$pos%=st$
 9100pos%?LENst$=0
 9110ENDPROC
 9120
 9130DEF FNcaps(st$)
 9140LOCAL a%
 9150IF LENst$ THEN
 9160  IF MID$(st$,a%,1)>="a" AND MID$(st$,a%,1)<="z" THEN MID$(st$,a%,1)=CHR$(ASC(MID$(st$,a%,1))-32)
 9170ENDIF
 9180=st$
 9190
 9200DEF FNstrip_end_spaces(st$)
 9210WHILE RIGHT$(st$,1)=" "
 9220  st$=MID$(st$,LENst$-1)
 9230ENDWHILE
 9240=st$
 9250
 9260DEF PROCfs_init
 9270DIM fs_menu% 2000
 9280fs_wind%=FNwindow_template("FontSelect")
 9290fs_handle%=0
 9300
 9310fs_active%=FALSE
 9320DIM fs_blank$(2), fs_temp$(2)
 9330fs_blank$()="","(Normal)","(None)"
 9340ENDPROC
 9350
 9360DEF PROCfs_click(mx%,my%,but%,wind%,icon%)
 9370CASE icon% OF
 9380  WHEN 33,32,29,30,31,39,38,35,36,37
 9390    PROCfs_setheight(FNicon_val(fs_wind%,icon%))
 9400  WHEN 15 : PROCfs_tryfont
 9410  WHEN 24 : PROCwindow_close(fs_wind%)
 9420  WHEN 22
 9430    PROCwindow_close(fs_wind%)
 9440    PROCfs_newstyle(fs_name$,fs_height%,fs_aspect%)
 9450  WHEN 8,9 : fs_height%=FNicon_updown(8,9,16,1,999)
 9460  WHEN 13,14 : fs_aspect%=FNicon_updown(13,14,12,1,999)
 9470  WHEN 27 : PROCfs_popupmenu(0,"Font")
 9480  WHEN 20 : PROCfs_popupmenu(1,"Weight")
 9490  WHEN 21 : PROCfs_popupmenu(2,"Style")
 9500ENDCASE
 9510ENDPROC
 9520
 9530DEF PROCfs_menu_select
 9540LOCAL result$, try%, i%, try$
 9550IF !q%>=0 THEN
 9560  result$=FNmenu_text(fs_menu%,!q%)
 9570  FOR i%=0 TO 2
 9580    fs_temp$(i%)=FNfs_part(fs_name$,i%)
 9590  NEXT i%
 9600  fs_temp$(fs_which%)=result$
 9610  try%=1
 9620  REPEAT
 9630    CASE try% OF
 9640      WHEN 1 : try$=FNfs_name(fs_temp$(0),fs_temp$(1),fs_temp$(2))
 9650      WHEN 2
 9660        IF fs_which%=0 THEN
 9670          IF fs_temp$(2)="Oblique" THEN try$=FNfs_name(fs_temp$(0),fs_temp$(1),"Italic")
 9680          IF fs_temp$(2)="Italic" THEN try$=FNfs_name(fs_temp$(0),fs_temp$(1),"Oblique")
 9690        ELSE
 9700          try$=FNfs_name(fs_temp$(0),fs_temp$(1),"*")
 9710        ENDIF
 9720      WHEN 3 : try$=FNfs_name(fs_temp$(0),"*","")
 9730    ENDCASE
 9740    try%+=1
 9750  UNTIL FNfs_font_ok(try$) OR try%>3
 9760  fs_name$=try$
 9770  PROCfs_setfont
 9780ENDIF
 9790ENDPROC
 9800
 9810DEF PROCfs_popupmenu(which%,title$)
 9820fs_which%=which%
 9830LOCAL count%, prefix$, last$, font$, item$
 9840CASE which% OF
 9850  WHEN 0 : prefix$=""
 9860  WHEN 1 : prefix$=FNfs_part(fs_name$,0)+"."
 9870  WHEN 2 : prefix$=FNfs_name(FNfs_part(fs_name$,0),FNfs_part(fs_name$,1),"")+"."
 9880ENDCASE
 9890last$=""
 9900count%=0
 9910menu_block%=fs_menu%
 9920d%=FNstart_menu(title$)
 9930
 9940REPEAT
 9950  SYS"Font_ListFonts",,q%,count%,-1 TO ,,count%
 9960  IF count%<>-1 THEN
 9970    font$=$q%+"."
 9980    IF LEFT$(font$,LENprefix$)=prefix$ THEN
 9990      item$=MID$(font$,LENprefix$+1,INSTR(font$,".",LENprefix$+1)-(LENprefix$+1))
10000      IF item$="" THEN item$=fs_blank$(which%)
10010      IF item$<>last$ THEN
10020        PROCmenu_item(item$,0)
10030        IF item$=FNfs_part(fs_name$,which%) THEN PROCmenu_set_last_flags(1)
10040        last$=item$
10050      ENDIF
10060    ENDIF
10070  ENDIF
10080UNTIL count%=-1
10090PROCmenu_end
10100PROCmenu_icon_popup(fs_wind%,icon%,fs_menu%)
10110ENDPROC
10120
10130DEF FNfs_font_ok(RETURN font$)
10140LOCAL ok%,count%
10150ok%=FALSE
10160count%=0
10170REPEAT
10180  SYS"Font_ListFonts",,q%,count%,-1 TO ,,count%
10190  IF count%<>-1 THEN
10200    IF RIGHT$(font$,1)="*" THEN
10210      IF LEFT$(font$,LENfont$-2)=LEFT$($q%,LENfont$-2) THEN
10220        ok%=TRUE
10230        font$=$q%
10240      ENDIF
10250    ELSE
10260      IF $q%=font$ THEN ok%=TRUE
10270    ENDIF
10280  ENDIF
10290UNTIL count%=-1
10300=ok%
10310
10320DEF PROCfs_setheight(new%)
10330IF new%<>fs_height% THEN
10340  fs_height%=new%
10350  fs_aspect%=100
10360  PROCfs_setfont
10370ENDIF
10380ENDPROC
10390
10400DEF PROCfs_popup(title$,name$,height%,aspect%)
10410PROCwindow_new_title(fs_wind%,title$)
10420fs_height%=height%
10430fs_aspect%=aspect%
10440fs_name$=name$
10450PROCfs_setfont
10460PROCwindow_popup(fs_wind%)
10470PROCfs_tryfont
10480ENDPROC
10490
10500DEF PROCfs_getsize
10510fs_height%=FNicon_val(fs_wind%,16)
10520fs_aspect%=FNicon_val(fs_wind%,12)
10530ENDPROC
10540
10550DEF PROCfs_setfont
10560PROCicon_set_text(fs_wind%,5,FNfs_part(fs_name$,0))
10570PROCicon_set_text(fs_wind%,4,FNfs_part(fs_name$,1))
10580PROCicon_set_text(fs_wind%,6,FNfs_part(fs_name$,2))
10590PROCicon_set_val(fs_wind%,16,fs_height%)
10600PROCicon_set_val(fs_wind%,12,fs_aspect%)
10610ENDPROC
10620
10630DEF PROCfs_tryfont
10670IF fs_handle% THEN SYS"Font_LoseFont",fs_handle%
10671fs_handle%=FNfont_handle(fs_name$,fs_height%,fs_aspect%,100)
10690PROCicon_set_fh(fs_wind%,17,fs_handle%)
10700ENDPROC
10710
10720DEF FNfs_name(name$,weight$,style$)
10730IF LEFT$(weight$,1)="(" THEN weight$=""
10740IF LEFT$(style$,1)="(" THEN style$=""
10750IF weight$<>"" THEN name$+="."+weight$
10760IF style$<>"" THEN name$+="."+style$
10770=name$
10780
10790DEF FNfs_part(name$,part%)
10800LOCAL count%
10810count%=part%
10820name$+="."
10830WHILE count%
10840  name$=MID$(name$,INSTR(name$,".")+1)
10850  count%-=1
10860ENDWHILE
10870IF INSTR(name$,".") THEN name$=LEFT$(name$,INSTR(name$,".")-1)
10880IF name$="" THEN name$=fs_blank$(part%)
10890=name$
10900
10910DEF PROCfs_key_pressed(wind%,icon%,key%)
10920CASE icon% OF
10930  WHEN 12,16 : PROCfs_getsize
10940ENDCASE
10950SYS"Wimp_ProcessKey",key%
10960ENDPROC
10970
10980DEF PROCfs_quit
10990IF fs_handle% THEN SYS"Font_LoseFont",fs_handle%
11000ENDPROC
11010
11020DEF FNwork_space(size%)
11030LOCAL room%,noroom%,new%
11040SYS"XWimp_SlotSize",appsize%+size%,-1 TO new%;noroom%
11050room%=((noroom%AND1)=0)
11060IF new%<appsize%+size% THEN room%=FALSE
11070IF room% THEN appinc%=new%-appsize%
11080=room%
11090
11100DEF PROCheap_init
11110SYS"Wimp_SlotSize",-1,-1 TO appsize%
11120heap%=HIMEM
11130heap_size%=8*1024
11140IF FNwork_space(heap_size%) THEN
11150  SYS"OS_Heap",0,heap%,,heap_size%
11160ELSE
11170  PROCerror_message("Heap_NoRoom")
11180ENDIF
11190ENDPROC
11200
11210DEF FNheap_largest_block
11220LOCAL largest%
11230SYS"OS_Heap",1,heap% TO ,,largest%
11240=largest%
11250
11260DEF FNheap_get_block(size%)
11270LOCAL ok%, block%
11280ok%=TRUE
11290WHILE ok% AND FNheap_largest_block<size%
11300  ok%=FNheap_extend(8*1024)
11310ENDWHILE
11320IF ok% THEN
11330  SYS"OS_Heap",2,heap%,,size% TO ,,block%
11340ELSE
11350  block%=-1
11360  PROCheap_shrink
11370  PROCerror_message("Heap_OutOfRoom")
11380ENDIF
11390=block%
11400
11410DEF PROCheap_lose_block(RETURN block%)
11420IF block%>-1 THEN SYS"OS_Heap",3,heap%,block%
11430block%=-1
11440PROCheap_shrink
11450ENDPROC
11460
11470DEF PROCheap_shrink
11480LOCAL ok%,size%
11490ok%=TRUE
11500size%=-1024*8
11510WHILE ok%
11520  SYS"XOS_Heap",5,heap%,,size% TO ;ok%
11530  ok%=((ok%AND1)=0)
11540  IF ok% THEN
11550    heap_size%=heap%!12
11560    ok%=FNwork_space(heap_size%)
11570  ENDIF
11580ENDWHILE
11590ENDPROC
11600
11610DEF FNheap_extend(size%)
11620LOCAL ok%
11630ok%=FNwork_space(heap_size%+size%)
11640IF ok% THEN
11650  SYS"OS_Heap",5,heap%,,size%
11660  heap_size%=heap%!12
11670ELSE
11680  PROCerror_message("Heap_OutOfRoom")
11690ENDIF
11700=ok%
11710
11720DEF FNheap_extend_block(RETURN block%,inc%)
11730LOCAL ok%, heapfull%
11740heapfull%=FALSE
11750REPEAT
11760  SYS"XOS_Heap",4,heap%,block%,inc% TO ,,block%;ok%
11770  ok%=((ok%AND1)=0)
11780  IF NOTok% THEN heapfull%=NOTFNheap_extend(8*1024)
11790UNTIL ok% OR heapfull%
11800=ok%
11810
11820DEF PROCheap_quit
11830SYS"Wimp_SlotSize",appsize%,-1
11840heap%=-1
11850heap_size%=0
11860ENDPROC
11870
11880DEF PROCdraw_init
11890DIM draw_bound%(10), draw_group%(10), draw_font$(10)
11900ENDPROC
11910
11920DEF PROCdraw_header(title$,ox%,oy%)
11930title$=LEFT$(title$+STRING$(12," "),12)
11940draw_offx%=ox%:draw_offy%=oy%
11950draw_depth%=0
11960draw_b_steps%=8*1024
11970draw_bs%=draw_b_steps%
11980draw_block%=FNheap_get_block(draw_bs%)
11990draw_pos%=0
12000PROCdraw_word(&77617244)
12010PROCdraw_word(201)
12020PROCdraw_word(0)
12030PROCdraw_st(title$)
12040draw_bound%(0)=draw_pos%
12050PROCdraw_null_bound
12060ENDPROC
12070
12080DEF PROCdraw_end
12090IF draw_depth%=0 THEN
12100  draw_size%=draw_pos%
12110ELSE
12120  PROCheap_lose_block(draw_block%)
12130  PROCerror_report("Badly nested groups.")
12140ENDIF
12150ENDPROC
12160
12170DEF PROCdraw_null_bound
12180PROCdraw_word(1<<30)
12190PROCdraw_word(1<<30)
12200PROCdraw_word(1<<31)
12210PROCdraw_word(1<<31)
12220ENDPROC
12230
12240DEF PROCdraw_text(text$,fn%,height%,aspect%,x%,y%,type%)
12250LOCAL fx0%, fy0%, fx1%, fy1%
12251
12252fhandle%=FNfont_handle(draw_font$(fn%),height%,aspect%,100)
12260
12270SYS"Font_SetFont",fhandle%
12280SYS"Font_StringBBox",,text$ TO ,fx0%,fy0%,fx1%,fy1%
12290fx0%=fx0%*0.64:fy0%=fy0%*0.64
12300fx1%=fx1%*0.64:fy1%=fy1%*0.64
12310CASE type% OF
12320  WHEN 1 : x%-=fx1%
12330  WHEN 2 : x%-=fx1%/2
12340  WHEN 3 : y%-=fy1%
12350  WHEN 4 : y%-=fy1%/2
12360ENDCASE
12370SYS"Font_LoseFont",fhandle%
12380x%+=draw_offx%:y%+=draw_offy%
12390
12400PROCdraw_start_object(1,TRUE)
12410draw_x0%=x%+fx0%:draw_y0%=y%+fy0%
12420draw_x1%=x%+fx1%:draw_y1%=y%+fy1%
12430PROCdraw_word(0)
12440PROCdraw_word(&FFFFFF00)
12450PROCdraw_word(fn%)
12460PROCdraw_word(height%*aspect%*6.4)
12470PROCdraw_word(height%*640)
12480PROCdraw_word(x%)
12490PROCdraw_word(y%)
12500PROCdraw_st(text$+CHR$0)
12510PROCdraw_align
12520PROCdraw_end_object
12530ENDPROC
12540
12550DEF PROCdraw_start_fonttable
12560PROCdraw_start_object(0,FALSE)
12570draw_fonts%=0
12580ENDPROC
12590
12600DEF PROCdraw_end_fonttable
12610PROCdraw_align
12620PROCdraw_end_object
12630ENDPROC
12640
12650DEF PROCdraw_add_font(font$)
12660draw_fonts%+=1
12670draw_font$(draw_fonts%)=font$
12680PROCdraw_byte(draw_fonts%)
12690PROCdraw_st(font$+CHR$0)
12700ENDPROC
12710
12720DEF PROCdraw_start_object(type%,bound%)
12730draw_start_obj%=draw_pos%
12740PROCdraw_word(type%)
12750PROCdraw_word(0)
12760IF bound% THEN
12770  draw_obj_bound%=draw_pos%
12780  PROCdraw_null_bound
12790  draw_x0%=1<<30
12800  draw_y0%=1<<30
12810  draw_x1%=1<<31
12820  draw_y1%=1<<31
12830ELSE
12840  draw_obj_bound%=-1
12850ENDIF
12860ENDPROC
12870
12880DEF PROCdraw_start_group
12890draw_depth%+=1
12900PROCdraw_start_object(6,TRUE)
12910draw_group%(draw_depth%)=draw_start_obj%
12920draw_bound%(draw_depth%)=draw_obj_bound%
12930PROCdraw_word(0)
12940PROCdraw_word(0)
12950PROCdraw_word(0)
12960ENDPROC
12970
12980DEF PROCdraw_end_group
12990IF draw_block%>-1 THEN
13000  draw_obj_bound%=draw_bound%(draw_depth%)
13010  draw_start_obj%=draw_group%(draw_depth%)
13020  draw_bound%=draw_block%+draw_obj_bound%
13030  draw_x0%=!draw_bound%
13040  draw_y0%=draw_bound%!4
13050  draw_x1%=draw_bound%!8
13060  draw_y1%=draw_bound%!12
13070  draw_depth%-=1
13080  PROCdraw_end_object
13090ENDIF
13100ENDPROC
13110
13120DEF PROCdraw_end_object
13130IF draw_block%>-1 THEN
13140  !(draw_start_obj%+draw_block%+4)=draw_pos%-draw_start_obj%
13150  IF draw_obj_bound%>-1 THEN
13160    draw_bound%=draw_block%+draw_obj_bound%
13170    !draw_bound%=draw_x0%
13180    draw_bound%!4=draw_y0%
13190    draw_bound%!8=draw_x1%
13200    draw_bound%!12=draw_y1%
13210    draw_bound%=draw_bound%(draw_depth%)+draw_block%
13220    IF draw_x0%<!draw_bound% THEN !draw_bound%=draw_x0%
13230    IF draw_y0%<draw_bound%!4 THEN draw_bound%!4=draw_y0%
13240    IF draw_x1%>draw_bound%!8 THEN draw_bound%!8=draw_x1%
13250    IF draw_y1%>draw_bound%!12 THEN draw_bound%!12=draw_y1%
13260  ENDIF
13270ENDIF
13280ENDPROC
13290
13300DEF PROCdraw_word(word%)
13310IF draw_block%>-1 THEN
13320  IF draw_pos%+4>draw_bs% THEN PROCdraw_try_to_extend
13330  IF draw_block%>-1 THEN
13340    draw_block%!draw_pos%=word%
13350    draw_pos%+=4
13360  ENDIF
13370ENDIF
13380ENDPROC
13390
13400DEF PROCdraw_byte(byte%)
13410IF draw_block%>-1 THEN
13420  IF draw_pos%+1>draw_bs% THEN PROCdraw_try_to_extend
13430  IF draw_block%>-1 THEN
13440    draw_block%?draw_pos%=byte%
13450    draw_pos%+=1
13460  ENDIF
13470ENDIF
13480ENDPROC
13490
13500DEF PROCdraw_align
13510WHILE (draw_pos%AND3)>0
13520  PROCdraw_byte(0)
13530ENDWHILE
13540ENDPROC
13550
13560DEF PROCdraw_st(st$)
13570LOCAL a%
13580IF draw_block%>-1 THEN
13590  IF draw_pos%+LENst$>draw_bs% THEN PROCdraw_try_to_extend
13600  IF draw_block%>-1 THEN
13610    FOR a%=1 TO LENst$
13620      draw_block%?draw_pos%=ASCMID$(st$,a%,1)
13630      draw_pos%+=1
13640    NEXT a%
13650  ENDIF
13660ENDIF
13670ENDPROC
13680
13690DEF PROCdraw_place_ords(x%,y%)
13700x%+=draw_offx%
13710y%+=draw_offy%
13720PROCplace_word(x%)
13730PROCplace_word(y%)
13740ENDPROC
13750
13760DEF PROCdraw_try_to_extend
13770IF FNheap_extend_block(draw_block%,draw_b_steps%) THEN
13780  draw_bs%+=draw_b_steps%
13790ELSE
13800  PROCheap_lose_block(draw_block%)
13810ENDIF
13820ENDPROC
13821
13822DEF PROCerror_message(token$)
13823PROCerror_report(FNmess(token$))
13824ENDPROC
13830
13840DEF PROCerror_report($(q%+4))
13850REM Whoops something has gone wrong!
13860SYS"Wimp_DragBox",,-1
13870dragging%=FALSE
13880!q%=255
13890SYS"Wimp_ReportError",q%,1,my_name$
13900ENDPROC

!� > <WannaKern$Dir>.!RunImage
&� Written by Barry Wickett, May 96
�
(� Queries to:
2�  Barry Wickett
<�  14 New Zealand Road
F�  Cardiff
P�  CF4 3BR
Z
d�wimp_init("WannaKern")
n
x�
y
�,  ș"Wimp_Poll",1+dragging%,q% � reason%
�  
�  Ȏ reason% �
�    � 0 : �window_dragging
�!    � 1 : �window_redraw(!q%)
�    � 2 : �window_open(q%)
�     � 3 : �window_close(!q%)
�5    � 6 : �mouse_click(!q%,q%!4,q%!8,q%!12,q%!16)
�    � 7 : �window_end_drag
�*    � 8 : �key_pressed(!q%,q%!4,q%!24)
�    � 9 : �menu_select
�+    � 17,18 : �message(q%!16,q%!4,q%!8)
�'    � 19 : �message_returned(q%!16)
�  �
� exit%

�mess_close
"�fs_quit
,
6ș"Wimp_CloseDown"
T
^�
h
r� �mouse_info
|ș"Wimp_GetPointerInfo",,q%
�mx%=!q%
�my%=q%!4
�
but%=q%!8
�wind%=q%!12
�icon%=q%!16
��
�
�,� �mouse_click(mx%,my%,but%,wind%,icon%)
�Ȏ wind% �
�
�
  � -2
�    Ȏ but% �
�A      � 2 : �menu_open(bar_menu%,mx%-(bar_menu%!16)/2-16,184)

      � 4
%        � �window_active(main%) �
"          �window_popup(main%)
&
        �
0          �main_reset
:)          �window_open_fully(main%,�)
D(          �caret_place(tools%,0,256)
N
        �
X	    �
l
v  � tools%
�    Ȏ but% �
�
      � 4
�        Ȏ icon% �
�H          � 2 : �fs_popup(�mess("FSTITLE"),fname$,fheight%,faspect%)
�          � 5
�&            $scale_text%=�(scale%)
�9            �menu_icon_popup(wind%,icon%,scale_menu%)
�A          � 6 : �main_set_auto_kern(�icon_selected(tools%,6))
�I          � 9,10 : �main_set_global_kern(�icon_updown(9,10,7,-99,99))
�           � 11 : �main_reset
�
        �
�#      � 2 : �main_open_save_box
�	    �
�    

  � main%
    Ȏ but% �
)      � 4 : �main_check_drag(mx%,my%)
 #      � 2 : �main_open_save_box
*	    �
+    
46  � fs_wind% : �fs_click(mx%,my%,but%,wind%,icon%)
5  
>
  � save%
H    � but%=4 �
R      Ȏ icon% �
\+        � 0 : �icon_start_drag(save%,0)
f        � 2 : �menu_close
p1        � 3 : �file_save(�icon_text(save%,1))
z      �
�	    �
��
��
�
�� �main_open_save_box
�)�icon_set_text(save%,1,�mess("DFSN"))
�'�window_open_as_menu(save%,mx%,my%)
��
�
�$� �key_pressed(wind%,icon%,key%)
�Ȏ wind% �
�4  � fs_wind% : �fs_key_pressed(wind%,icon%,key%)
�4  � tools% : �main_key_pressed(wind%,icon%,key%)

  ș"Wimp_ProcessKey",key%
�
$�
.
8)� �main_key_pressed(wind%,icon%,key%)
BȎ icon% �
L  � 0 : �main_get_string
V6  � 7 : �main_set_global_kern(�icon_val(tools%,7))
`�
jș"Wimp_ProcessKey",key%
t�
~
�� �main_check_drag(mx%,my%)
�� len%, c%, x%
�dx%=wx%+32
�;dy%=wy%-(rad%*2+pane_height%+(fheight%*2.5*scale%)/100)
��window_info(main%)
�len%=�main_string$
�
�� len%>1 �
�  drag_loop%=0
�  � c%=2 � len%
�.    x%=dx%+(char_x%(c%)*scale%)/25600+rad%
�+    � �((mx%-x%)^2+(my%-dy%)^2)<=rad% �
�      drag_loop%=c%
      off_x%=mx%-x%+rad%

	    �

  � c%
  � drag_loop% �
(9    �window_start_user_drag(main%,q%!4,dy%,q%!12,dy%)
2V    char_base%=dx%+((char_x%(drag_loop%)-kern%(2,drag_loop%))*scale%)/25600+off_x%
<  �
F�
P�
Z
d� �window_dragging
n�mouse_info
xx%=mx%-char_base%
�new_kern%=(x%*25600)/scale%
�&� new_kern%<>kern%(2,drag_loop%) �
�#  kern%(2,drag_loop%)=new_kern%
�  �main_calc(drag_loop%)
��
��
�
�� �window_end_drag
�dragging%=�
�Ȏ drag_wind% �
�&  � main% : �main_calc(drag_loop%)
�E  � save% : �file_drop(�file_leaf(�icon_text(save%,1)),&AFF,2000)
��
�

� �main_reset
"� c%
,� c%=0 � 255
6  kern%(2,c%)=0
@� c%
J�main_get_string
T�main_set_scale(100)
^�main_set_auto_kern(�)
h�main_set_global_kern(0)
r�main_calc(1)
|�
�
�� �main_get_string
�� new$, diff%
�new$=�icon_text(tools%,0)
�� main_string$<>new$ �
�
  diff%=1
�*  ȕ �main_string$,diff%)=�new$,diff%)
�    diff%+=1
�  �
�  main_string$=new$
�  �main_calc_kerns
�  �main_calc(diff%)
��
�

� �main_set_scale(new%)
&/� new%<10 � new%=10 � � new%>999 � new%=999
0� scale%<>new% �
:  scale%=new%
D,  �icon_set_text(tools%,3,�(scale%)+"%")
N  �main_calc(1)
X�
b�
l
v� �main_set_auto_kern(new%)
�� auto_kern%<>new% �
�  auto_kern%=new%
�'  �icon_select(tools%,6,auto_kern%)
�  �main_calc(1)
��
��
�
�!� �main_set_global_kern(new%)
�� global_kern%<>new% �
�  global_kern%=new%
�H  � �icon_val(tools%,7)<>new% � �icon_set_val(tools%,7,global_kern%)
�  �main_calc(1)
��
�

� �main_calc_kerns
 � c%, fhandle%, len%
*7fhandle%=�font_handle(fname$,fheight%,faspect%,100)
4len%=�main_string$
>� len% �
H  � c%=1 � len%
R6    kern%(0,c%)=�font_width(�main_string$,c%,1),�)
\Y    kern%(1,c%)=�font_width(�main_string$,c%,2),�)-�font_width(�main_string$,c%,2),�)
f
  � c%
p�
zkern%(2,len%+1)=0
�ș"Font_LoseFont",fhandle%
��
�
�� �main_calc(start%)
�� c%, len%, temp_x%
�temp_x%=char_x%(start%)
�len%=�main_string$
�� len%>1 �
�  � c%=start% � len%+1
�n    � c%>1 � char_x%(c%)=char_x%(c%-1)+kern%(0,c%-1)-kern%(1,c%-1)*auto_kern%+global_kern%*160+kern%(2,c%)
�
  � c%
��
�
	� �dragging% �
	<  total%=((char_x%(len%)+kern%(0,len%))*scale%)/25600+64
	/  � total%<pane_width% � total%=pane_width%
	$U  �window_set_extent(main%,0,-(pane_height%+64+(fheight%*3*scale%)/100),total%,0)
	.�
	8
	B7� char_x%(start%)<temp_x% � temp_x%=char_x%(start%)
	L�window_info(main%)
	V
�pre_loop
	`O�window_start_update_box(main%,28+(temp_x%*scale%)/25600,1<<31,1<<30,1<<30)
	j�redraw_loop
	t�post_loop
	~�
	�
	�� �font_width(st$,kern%)
	�� width%
	�flags%=(1<<8)
	�"� kern% � flags%=flags%�(1<<9)
	�Cș"Font_ScanString",fhandle%,st$,flags%,1<<30,1<<30 � ,,,width%
	�=width%*0.64
	�
	�0� �font_handle(font$,height%,aspect%,scale%)
	�
� handle%
	�dș"Font_FindFont",,font$,(height%*aspect%*16*scale%)/10000,(height%*16*scale%)/100,0,0 � handle%
	�=handle%


� �menu_select
Ȏ menu_open% �
%  � bar_menu% : � !q%=1 � exit%=�
("  � fs_menu% : �fs_menu_select
2  � scale_menu%
<    new_scale%=0
F    Ȏ !q% �
P#      � 0 : new_scale%=scale%*2
Z#      � 1 : new_scale%=scale%/2
d      � 2 : new_scale%=100
n      � 3 : new_scale%=50
x      � 4 : new_scale%=200
�*      � 5 : new_scale%=�($scale_text%)
�	    �
�2    � new_scale% � �main_set_scale(new_scale%)
��
��
�
�� �message_returned(type%)
�Ȏ type% �
�	  � 7
�    �menu_close
�%    �heap_lose_block(file_block%)
��
��

 � �message(type%,task%,ref%)
Ȏ type% �
"  � 0 : exit%=�
,&  � 2 : �file_save(�string(q%+44))
6  � 6 : �file_out_trans
@$  � &502 : �do_help(q%!32,q%!36)
J�
T�
^
h� �message_reply(mn%,q%!16)
rq%!12=ref%
|%ș"Wimp_SendMessage",mn%,q%,task%
��
�
�� �file_leaf(name$)
�ȕ �name$,".")
�!  name$=�name$,�name$,".")+1)
��
�
=name$
�
�� �file_out_trans
�+� otrans%=0 � file_block%=�file_prepare
�� file_block% �
�  togo%=file_size%-otrans%
�!  � togo%>q%!24 � togo%=q%!24
3  � togo%+otrans%>file_size% � togo%=file_size%
K  ș"Wimp_TransferBlock",my_task%,file_block%+otrans%,task%,q%!20,togo%
  q%!24=togo%
&  �message_reply(18,7)
0  otrans%+=togo%
:  � otrans%=file_size% �
D%    �heap_lose_block(file_block%)
N    �menu_close
X  �
b�
l�
v
�3� �file_save_block(name$,pos%,size%,file_type%)
�� ok%,error%
�Bș"XOS_File",10,name$,file_type%,,pos%,pos%+size% � error%;ok%
�ok%=((ok%�1)=0)
�@� �ok% � �error_report(�mess0("save_bad",�string(error%+4)))
�=ok%
�
�� �file_prepare
�� draw_block%
�� �main_string$>0 �
�+  �draw_header("WannaKern",25600,25600)
�  �draw_start_fonttable
�  �draw_add_font(fname$)

  �draw_end_fonttable

  �draw_start_group

  � a%=1 � �main_string$

 K    �draw_text(�main_string$,a%,1),1,fheight%,faspect%,char_x%(a%),0,0)

*
  � a%

4  �draw_end_group

>  �draw_end

H  file_size%=draw_size%

R�

\0� draw_block%=0 � �error_message("Draw_Bad")

f=draw_block%

p

z� �file_name_ok(name$)

�	� ok%

�	ok%=�

�%� �name$,":")=0 � �name$,"<")=0 �

�  ok%=�

�$  �error_message("save_badname")

��

�=ok%

�

�� �file_save(name$)

�	� ok%

�ok%=�file_name_ok(name$)

�� ok% �

�  file_block%=�file_prepare
  � file_block% �
�    � �file_save_block(name$,file_block%,file_size%,file_type%) � �file_tell_to_load(task%,name$,file_type%,file_size%,ref%)
%    �heap_lose_block(file_block%)
$    �menu_close
.  �
8�
B�
L
V6� �file_tell_to_load(task%,name$,type%,size%,ref%)
`�mouse_info
jJ�message_send(task%,0,17,3,ref%,wind%,icon%,mx%,my%,size%,type%,name$)
t�
~
�Z� �message_send(task%,icon%,mn%,q%!16,q%!12,q%!20,q%!24,q%!28,q%!32,q%!36,q%!40,name$)
�#�place_null_string(name$,q%+44)
�!q%=(48+�name$)��3
�+ș"Wimp_SendMessage",mn%,q%,task%,icon%
��
�
�%� �file_drop(leaf$,ftype%,fsize%)
�file_size%=fsize%
�file_type%=ftype%
��mouse_info
�U�message_send(wind%,icon%,17,1,0,wind%,icon%,mx%,my%,file_size%,file_type%,leaf$)
�
otrans%=0
�


� �wimp_init(name$)

(my_dir$="<"+name$+"$Dir>"
2
<#�mess_load(my_dir$+".Messages")
F
Pmy_name$=�mess("PGN")
Z
d� message_block% 16
n!message_block%=2
xmessage_block%!4=6
�message_block%!8=&502
�message_block%!12=0
�<� Tell the Wimp only to bother me with these 3 messages.
�
�Iș"Wimp_Initialise",310,&4B534154,my_name$,message_block% � ,my_task%
�
�,� � �error_report(�$+" at line "+�(�)):�
�
��heap_init
��draw_init
�indsize%=4000
�7� q% 2000, q2% 256, ind% indsize%, menu_block% 2000
�indend%=ind%+indsize%
@� set up general block, indirected icon block and menu block

=ș"XOS_SWINumberFromString",,"DragASprite_Start" � ;drag%
"drag%=(drag% � 1)=0
,ș"OS_Byte",161,28 � ,,bit%
6� (bit% � 2)=0 � drag%=�
@
J/ș"Wimp_OpenTemplate",,my_dir$+".Templates"
T"info%=�window_template("info")
^"main%=�window_template("main")
h$tools%=�window_template("tools")
r save%=�window_save_box(&AFF)
|�fs_init
�ș"Wimp_CloseTemplate"
�
�7my_icon%=�icon_create(-1,0,0,68,68,&2002,"!"+name$)
�
�#bar_menu%=�start_menu(my_name$)
�$�menu_item(�mess("IBM0:"),info%)
� �menu_item(�mess("IBM1:"),0)
�
�menu_end
�
�"scale_text%=�dim_string("100")
�$scale_valid%=�dim_string("A0-9")
�)scale_menu%=�start_menu(�mess("SMT"))
��menu_item(�mess("SM0"),0)
�menu_item(�mess("SM1"),0)
�menu_set_last_flags(2)
�menu_item("100%",0)
&�menu_item("50%",0)
0�menu_item("200%",0)
:.�menu_ind_item(scale_text%,scale_valid%,4)
D�menu_set_last_flags(4)
N
�menu_end
X
bdragging%=�
l
vexit%=�
�
�pane%=tools%
�pane_parent%=main%
��window_info(pane%)
�pane_width%=q%!12-q%!4
�pane_height%=q%!16-q%!8
�pane_pos%=0
�
�scale%=100
�'auto_kern%=�icon_selected(tools%,6)
�global_kern%=0
�main_string$=""
�
fname$=�mess("FONT")
 fheight%=�(�mess("FONTHGT"))
!faspect%=�(�mess("FONTASPT"))
  � kern%(2,256), char_x%(256)
*-�icon_set_text(tools%,0,�mess("STDTEXT"))
4
>rad%=12
H�
R
\� �window_redraw(!q%)
f�window_info(!q%)
p
�pre_loop
z%ș"Wimp_RedrawWindow",,q% � more%
��redraw_loop
��post_loop
��
�
�� �pre_loop
�fx%=wx%+32
�4fy%=wy%-(pane_height%+(fheight%*2.5*scale%)/100)
�:fhandle%=�font_handle(fname$,fheight%,faspect%,scale%)
�:ș"ColourTrans_SetFontColours",fhandle%,&FFFFFF00,0,14
��
�
�� �redraw_loop
�� c%,x%,f%,y%
f%=(1<<4)�(1<<8)
ȕ more%
$  ș"Wimp_SetColour",0
./  ȓ Ȑ q%!28,q%!32,q%!36-q%!28,q%!40-q%!32
8  ș"Wimp_SetColour",11
B  � c%=1 � �main_string$
L)    x%=fx%+(char_x%(c%)*scale%)/25600
V8    x1%=fx%+((char_x%(c%)+kern%(0,c%))*scale%)/25600
`"    � x1%>=q%!28 � x%<=q%!36 �
j?      ș"Font_Paint",fhandle%,�main_string$,c%,1),f%,x%,fy%
t      � c%>1 �
~&        ȏ x%+rad%,fy%-rad%*2,rad%
�"        � x%,fy%,x%,fy%-rad%*2
�      �
�	    �
�
  � c%
�'  ș"Wimp_GetRectangle",,q% � more%
��
��
�
�� �post_loop
�ș"Font_LoseFont",fhandle%
��
�
)� �fs_newstyle(name$,height%,aspect%)

fname$=name$
fheight%=height%
faspect%=aspect%
(�main_calc_kerns
2�main_calc(1)
<�
F
P� �do_help(wind%,icon%)
Zhelp_wind$=""
d
nȎ wind% �
x!  � -2 : help_wind$="iconbar"
�!  � info% : help_wind$="info"
�!  � main% : help_wind$="main"
�#  � tools% : help_wind$="tools"
�"  � fs_wind% : help_wind$="fs"
�!  � save% : help_wind$="save"
�
�/  ș"Wimp_GetMenuState",1,q%+40,wind%,icon%
�  Ȏ menu_open% �
�$    � bar_menu% : help_alt$="IM"
�&    � scale_menu% : help_alt$="SM"
�    � fs_menu%
�      Ȏ fs_which% �
�"        � 0 : help_alt$="fsmf"
"        � 1 : help_alt$="fsmw"
"        � 2 : help_alt$="fsms"
      �
"  �
,$  help_token$=help_alt$+�(q%!40)
6�
@
J� help_wind$<>"" �
T  help_alt$=help_wind$
^%  help_token$=help_wind$+�(icon%)
h�
r
|+help_string$=�mess("help_"+help_token$)
�=� help_string$="" � help_string$=�mess("help_"+help_alt$)
�
�$(q%+20)=help_string$+�0
�!q%=(24+�help_string$)��3
��message_reply(17,&503)
��
�
�<� �icon_create(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,$(q%+24))
�� icon%
�#ș"Wimp_CreateIcon",,q% � icon%
�
=icon%
�
�� �icon_info(!q%,q%!4)
ș"Wimp_GetIconState",,q%
�

&$� �icon_select(!q%,q%!4,select%)
0ș"Wimp_GetIconState",,q%
:#� select% � q%!8=1<<21 � q%!8=0
Dq%!12=1<<21
N7� (q%!24 � q%!12)<>q%!8 � ș"Wimp_SetIconState",,q%
X�
b
l� �icon_selected(!q%,q%!4)
vș"Wimp_GetIconState",,q%
�=(((q%!24)�(1<<21))>0)
�
�$� �icon_set_text(!q%,q%!4,text$)
�ș"Wimp_GetIconState",,q%
�text$=�text$,q%!36-1)
�� $(q%!28)<>text$ �
�$(q%!28)=text$
�
q%!8=0
�q%!12=0
�ș"Wimp_SetIconState",,q%
��caret_reset(!q%,q%!4)
��
��

"� �icon_set_val(!q%,q%!4,val%)
$�icon_set_text(!q%,q%!4,�(val%))
 �
*
4� �icon_val(!q%,q%!4)
>=�(�icon_text(!q%,q%!4))
H
R� �icon_text(!q%,q%!4)
\� text$
fș"Wimp_GetIconState",,q%
p6� (q%!24)�(1<<8) � text$=$(q%!28) � text$=$(q%+28)
z
=text$
�
�$� �icon_set_fh(!q%,q%!4,handle%)
�q%!8=(1<<6)�(handle%<<24)
�q%!12=(1<<6)�(255<<24)
�ș"Wimp_SetIconState",,q%
��
�
�� �icon_selected(!q%,q%!4)
�ș"Wimp_GetIconState",,q%
�=(((q%!24)�(1<<21))>0)
�
�$� �icon_select(!q%,q%!4,select%)
�ș"Wimp_GetIconState",,q%
#� select% � q%!8=1<<21 � q%!8=0
q%!12=1<<21
7� (q%!24 � q%!12)<>q%!8 � ș"Wimp_SetIconState",,q%
$�
.
8-� �icon_updown(dec%,inc%,c_icon%,lb%,ub%)
B
� val%
L!val%=�icon_val(wind%,c_icon%)
V%� icon%=dec% � val%>lb% � val%-=1
`%� icon%=inc% � val%<ub% � val%+=1
j%�icon_set_val(wind%,c_icon%,val%)
t�caret_reset(wind%,c_icon%)
~	=val%
�
�#� �icon_start_drag(wind%,icon%)
�drag_wind%=wind%
�drag_icon%=icon%
��window_info(wind%)
��icon_info(wind%,icon%)
�	!q%=0
�
q%!4=5
�
q%!8+=wx%
�q%!12+=wy%
�q%!16+=wx%
�q%!20+=wy%
q%!24=1<<31

q%!28=1<<31
q%!32=1<<30
q%!36=1<<30
(
� drag% �
2D  ș"DragASprite_Start",197,1,�icon_text(wind%,icon%),q%+8,q%+24
<�
F  ș"Wimp_DragBox",,q%
P�
Z�
d
n&� �caret_place(wind%,icon%,index%)
x
� len%
�#len%=�(�icon_text(wind%,icon%))
�� index%>len% � index%=len%
�5ș"Wimp_SetCaretPosition",wind%,icon%,,,-1,index%
��
�
�� �caret_reset(wind%,icon%)
�!ș"Wimp_GetCaretPosition",,q%
�>� !q%=wind% � q%!4=icon% � �caret_place(wind%,icon%,q%!20)
��
�
�� �window_template(title$)
�=ș"Wimp_LoadTemplate",,q%,ind%,indend%,-1,title$ � ,,ind%
�%ș"Wimp_CreateWindow",,q% � wind%

=wind%

"� �window_save_box(file_type%)
"� wind%
,%wind%=�window_template("savebox")
6;�icon_set_text(wind%,0,"file_"+�"00"+�~(file_type%),3))
@
=wind%
J
T� �window_popup(!q%)
^ș"Wimp_GetWindowState",,q%
hq%!28=-1
r�window_open(q%)
|�
�
�� �window_open(q%)
�� new_pos%
�� !q%=pane_parent% �
�  �window_calc_pane
�  ș"Wimp_OpenWindow",,q2%
�  ș"Wimp_OpenWindow",,q%
�   �window_info(pane_parent%)
�  �window_calc_pane
�  �window_info(pane%)
�C  � q%!4<>q2%!4 � q%!8<>q2%!8 � q%!12<>q2%!12 � q%!16<>q2%!16 �
�    q2%!28=!q2%
�     ș"Wimp_OpenWindow",,q2%
  �
�
  ș"Wimp_OpenWindow",,q%
&�
0�
:
D� �window_calc_pane
N!q2%=pane%
Xq2%!4=q%!4
bq2%!8=q%!16-pane_height%
lq2%!12=q%!12 : q2%!16=q%!16
vq2%!20=0 : q2%!24=0
�q2%!28=q%!28 : q%!28=!q2%
��
�
�"� �window_open_fully(!q%,top%)
�ș"Wimp_GetWindowInfo",,q%
�q%!12=q%!4+(q%!52-q%!44)
�q%!8=q%!16-(q%!56-q%!48)
�� top% � q%!28=-1
��window_open(q%)
��
�
�� �window_reopen(!q%)
��window_info(!q%)
�window_open(q%)
�

 � �window_open_fully(!q%)
*ș"Wimp_GetWindowState",,q%
4=((q%!32�(1<<18))<>0)
>
H� �window_close(!q%)
Rș"Wimp_CloseWindow",,q%
\-� !q%=pane_parent% � �window_close(pane%)
f� !q%=pane% � pane_pos%=0
p�
z
�� �window_info(wind%)
�
!q%=wind%
�ș"Wimp_GetWindowState",,q%
�wx%=q%!4-q%!20
�wy%=q%!16-q%!24
��
�
�#� �window_new_title(!q%,title$)
�ș"Wimp_GetWindowInfo",,q%
�� $(q%!76)<>title$ �
�  $(q%!76)=title$
�  � �window_active(!q%) �
�%    ș"Wimp_GetWindowOutline",,q%
9    ș"Wimp_ForceRedraw",-1,q%!4,q%!16-44,q%!12,q%!16
  �
�
$�
.
8/� �window_set_extent(wind%,x0%,y0%,x1%,y1%)
B� fully%
L$fully%=�window_open_fully(wind%)
V
!q%=wind%
`ș"Wimp_GetWindowInfo",,q%
j9� x0%<>q%!44 � y0%<>q%!48 � x1%<>q%!52 � y1%<>q%!56 �
t
  !q%=x0%
~  q%!4=y0%
�  q%!8=x1%
�  q%!12=y1%
�!  ș"Wimp_SetExtent",wind%,q%
�D  � fully% � �window_open_fully(wind%,�) � �window_reopen(wind%)
�  �
��
��
�
�� �window_active(!q%)
�ș"Wimp_GetWindowState",,q%
�=((q%!32�(1<<16))<>0)
�
� �window_force_redraw(!q%)

ș"Wimp_GetWindowInfo",,q%
4ș"Wimp_ForceRedraw",!q%,q%!44,q%!48,q%!52,q%!56
�
(
2� �window_start_update(!q%)
<ș"Wimp_GetWindowInfo",,q%
Fq%!4=q%!44
Pq%!8=q%!48
Zq%!12=q%!52
dq%!16=q%!56
n%ș"Wimp_UpdateWindow",,q% � more%
x�
�
�9� �window_start_update_box(!q%,q%!4,q%!8,q%!12,q%!16)
�%ș"Wimp_UpdateWindow",,q% � more%
��
�
�<� �window_start_user_drag(wind%,q%!24,q%!28,q%!32,q%!36)
�	!q%=0
�
q%!4=7
�drag_wind%=wind%
�ș"Wimp_DragBox",,q%
�dragging%=�
��
�
)� �window_open_as_menu(wind%,mx%,my%)
�window_info(wind%)
mx%-=(q%!12-q%!4)/2
"my%+=48
,�menu_open(save%,mx%,my%)
6�
@
J� �dim_string(st$)
T
� pos%
^� pos% �st$+1
h
$pos%=st$
r	=pos%
|
�� �menu_open(menu%,mx%,my%)
�&ș"Wimp_CreateMenu",,menu%,mx%,my%
�menu_open%=menu%
��
�
�� �menu_close
�ș"Wimp_CreateMenu",,-1
�menu_open%=-1
��
�
�� �start_menu(name$)
�longest%=�name$
�menu_start%=menu_block%
 $menu_block%=name$
 menu_block%!12=&70207
 menu_block%!20=44
 &menu_block%!24=0
 0menu_block%+=28
 :=menu_start%
 D
 N� �menu_item(item$,link%)
 X'� �item$>longest% � longest%=�item$
 b!menu_block%=0
 lmenu_block%!4=link%
 vmenu_block%!8=&7000021
 �$(menu_block%+12)=item$
 �menu_block%+=24
 ��
 �
 �"� �menu_set_last_flags(flags%)
 �!(menu_block%-24)=flags%
 ��
 �
 �� �menu_text(menu%,item%)
 �menu%+=28+item%*24
 �3� (menu%!8)�(1<<8) � menu%=menu%!12 � menu%+=12
 �=$menu%
 �
!#� �menu_tick(menu%,item%,tick%)
!menu%=menu%+28+item%*24
!2� tick% � !menu%=!menu% �1 � !menu%=!menu% ��1
! �
!*
!4'� �menu_ind_item(text%,valid%,len%)
!>'� len%-1>longest% � longest%=len%-1
!H!menu_block%=0
!Rmenu_block%!4=0
!\menu_block%!8=&7000121
!fmenu_block%!12=text%
!pmenu_block%!16=valid%
!zmenu_block%!20=len%
!�menu_block%+=24
!��
!�
!�� �menu_end
!�"menu_start%!16=(longest%+1)*16
!�-!(menu_block%-24)=!(menu_block%-24) � &80
!��
!�
!�)� �menu_icon_popup(wind%,icon%,menu%)
!��window_info(wind%)
!��icon_info(wind%,icon%)
!�)�menu_open(menu%,wx%+q%!16,wy%+q%!20)
!��
"
"%� �menu_shade(menu%,item%,shade%)
"p%=menu%+36+item%*24
"$!p%=!p% ��(1<<22)
".� shade% � !p%=!p% �(1<<22)
"8�
"B
"L� �mess_load(message_file$)
"VBș"MessageTrans_FileInfo",,message_file$ � ,,message_size%;ok%
"`� messages% message_size%
"j� message_desc% 16
"t� message_buffer% 256
"~Cș"MessageTrans_OpenFile",message_desc%,message_file$,messages%
"��
"�
"�� �mess(token$)
"�	� ok%
"�Lș"XMessageTrans_Lookup",message_desc%,token$,message_buffer%,255 � ;ok%
"�$� (ok%�1)=1 � ?message_buffer%=0
"�=�string(message_buffer%)
"�
"�� �mess0(token$,st0$)
"�	� ok%
"�Qș"XMessageTrans_Lookup",message_desc%,token$,message_buffer%,255,st0$ � ;ok%
"�$� (ok%�1)=1 � ?message_buffer%=0
"�=�string(message_buffer%)
"�
#� �mess_close
#
,ș"MessageTrans_CloseFile",message_desc%
#�
#
#(� �string(pos%)
#2	� st$
#<ȕ ?pos%>31
#F  st$+=�(?pos%)
#P
  pos%+=1
#Z�
#d=st$
#n
#x"� �place_null_string(st$,pos%)
#�
$pos%=st$
#�pos%?�st$=0
#��
#�
#�� �caps(st$)
#�� a%
#�� �st$ �
#�J  � �st$,a%,1)>="a" � �st$,a%,1)<="z" � �st$,a%,1)=�(�(�st$,a%,1))-32)
#��
#�=st$
#�
#�� �strip_end_spaces(st$)
#�ȕ �st$,1)=" "
$  st$=�st$,�st$-1)
$�
$=st$
$"
$,� �fs_init
$6� fs_menu% 2000
$@+fs_wind%=�window_template("FontSelect")
$Jfs_handle%=0
$T
$^fs_active%=�
$h� fs_blank$(2), fs_temp$(2)
$r&fs_blank$()="","(Normal)","(None)"
$|�
$�
$�)� �fs_click(mx%,my%,but%,wind%,icon%)
$�Ȏ icon% �
$�%  � 33,32,29,30,31,39,38,35,36,37
$�0    �fs_setheight(�icon_val(fs_wind%,icon%))
$�  � 15 : �fs_tryfont
$�$  � 24 : �window_close(fs_wind%)
$�
  � 22
$�    �window_close(fs_wind%)
$�4    �fs_newstyle(fs_name$,fs_height%,fs_aspect%)
$�3  � 8,9 : fs_height%=�icon_updown(8,9,16,1,999)
$�7  � 13,14 : fs_aspect%=�icon_updown(13,14,12,1,999)
$�$  � 27 : �fs_popupmenu(0,"Font")
%&  � 20 : �fs_popupmenu(1,"Weight")
%%  � 21 : �fs_popupmenu(2,"Style")
%�
%&�
%0
%:� �fs_menu_select
%D� result$, try%, i%, try$
%N� !q%>=0 �
%X&  result$=�menu_text(fs_menu%,!q%)
%b  � i%=0 � 2
%l*    fs_temp$(i%)=�fs_part(fs_name$,i%)
%v
  � i%
%�!  fs_temp$(fs_which%)=result$
%�  try%=1
%�  �
%�    Ȏ try% �
%�B      � 1 : try$=�fs_name(fs_temp$(0),fs_temp$(1),fs_temp$(2))
%�
      � 2
%�        � fs_which%=0 �
%�W          � fs_temp$(2)="Oblique" � try$=�fs_name(fs_temp$(0),fs_temp$(1),"Italic")
%�W          � fs_temp$(2)="Italic" � try$=�fs_name(fs_temp$(0),fs_temp$(1),"Oblique")
%�
        �
%�8          try$=�fs_name(fs_temp$(0),fs_temp$(1),"*")
%�
        �
%�1      � 3 : try$=�fs_name(fs_temp$(0),"*","")
&	    �
&    try%+=1
&"  � �fs_font_ok(try$) � try%>3
&   fs_name$=try$
&*  �fs_setfont
&4�
&>�
&H
&R"� �fs_popupmenu(which%,title$)
&\fs_which%=which%
&f*� count%, prefix$, last$, font$, item$
&pȎ which% �
&z  � 0 : prefix$=""
&�,  � 1 : prefix$=�fs_part(fs_name$,0)+"."
&�N  � 2 : prefix$=�fs_name(�fs_part(fs_name$,0),�fs_part(fs_name$,1),"")+"."
&��
&�last$=""
&�count%=0
&�menu_block%=fs_menu%
&�d%=�start_menu(title$)
&�
&��
&�1  ș"Font_ListFonts",,q%,count%,-1 � ,,count%
&�  � count%<>-1 �
&�    font$=$q%+"."
&�$    � �font$,�prefix$)=prefix$ �
'F      item$=�font$,�prefix$+1,�font$,".",�prefix$+1)-(�prefix$+1))
'.      � item$="" � item$=fs_blank$(which%)
'      � item$<>last$ �
'$        �menu_item(item$,0)
'.G        � item$=�fs_part(fs_name$,which%) � �menu_set_last_flags(1)
'8        last$=item$
'B      �
'L	    �
'V  �
'`� count%=-1
'j
�menu_end
't-�menu_icon_popup(fs_wind%,icon%,fs_menu%)
'~�
'�
'�� �fs_font_ok(� font$)
'�� ok%,count%
'�	ok%=�
'�count%=0
'��
'�1  ș"Font_ListFonts",,q%,count%,-1 � ,,count%
'�  � count%<>-1 �
'�    � �font$,1)="*" �
'�-      � �font$,�font$-2)=�$q%,�font$-2) �
'�        ok%=�
'�        font$=$q%
(      �
(
	    �
(      � $q%=font$ � ok%=�
(	    �
((  �
(2� count%=-1
(<=ok%
(F
(P� �fs_setheight(new%)
(Z� new%<>fs_height% �
(d  fs_height%=new%
(n  fs_aspect%=100
(x  �fs_setfont
(��
(��
(�
(�-� �fs_popup(title$,name$,height%,aspect%)
(�&�window_new_title(fs_wind%,title$)
(�fs_height%=height%
(�fs_aspect%=aspect%
(�fs_name$=name$
(��fs_setfont
(��window_popup(fs_wind%)
(��fs_tryfont
(��
(�
)� �fs_getsize
)%fs_height%=�icon_val(fs_wind%,16)
)%fs_aspect%=�icon_val(fs_wind%,12)
)"�
),
)6� �fs_setfont
)@3�icon_set_text(fs_wind%,5,�fs_part(fs_name$,0))
)J3�icon_set_text(fs_wind%,4,�fs_part(fs_name$,1))
)T3�icon_set_text(fs_wind%,6,�fs_part(fs_name$,2))
)^)�icon_set_val(fs_wind%,16,fs_height%)
)h)�icon_set_val(fs_wind%,12,fs_aspect%)
)r�
)|
)�� �fs_tryfont
)�/� fs_handle% � ș"Font_LoseFont",fs_handle%
)�?fs_handle%=�font_handle(fs_name$,fs_height%,fs_aspect%,100)
)�(�icon_set_fh(fs_wind%,17,fs_handle%)
)��
)�
)�$� �fs_name(name$,weight$,style$)
)�"� �weight$,1)="(" � weight$=""
)� � �style$,1)="(" � style$=""
)�&� weight$<>"" � name$+="."+weight$
*$� style$<>"" � name$+="."+style$
*
=name$
*
*&� �fs_part(name$,part%)
*0� count%
*:count%=part%
*Dname$+="."
*N
ȕ count%
*X!  name$=�name$,�name$,".")+1)
*b  count%-=1
*l�
*v/� �name$,".") � name$=�name$,�name$,".")-1)
*�'� name$="" � name$=fs_blank$(part%)
*�
=name$
*�
*�'� �fs_key_pressed(wind%,icon%,key%)
*�Ȏ icon% �
*�  � 12,16 : �fs_getsize
*��
*�ș"Wimp_ProcessKey",key%
*��
*�
*�� �fs_quit
*�/� fs_handle% � ș"Font_LoseFont",fs_handle%
*��
+
+� �work_space(size%)
+� room%,noroom%,new%
+ 7ș"XWimp_SlotSize",appsize%+size%,-1 � new%;noroom%
+*room%=((noroom%�1)=0)
+4#� new%<appsize%+size% � room%=�
+>#� room% � appinc%=new%-appsize%
+H
=room%
+R
+\� �heap_init
+f&ș"Wimp_SlotSize",-1,-1 � appsize%
+pheap%=�
+zheap_size%=8*1024
+�� �work_space(heap_size%) �
+�%  ș"OS_Heap",0,heap%,,heap_size%
+��
+�#  �error_message("Heap_NoRoom")
+��
+��
+�
+�� �heap_largest_block
+�� largest%
+�$ș"OS_Heap",1,heap% � ,,largest%
+�
=largest%
+�
+�� �heap_get_block(size%)
,� ok%, block%
,	ok%=�
,&ȕ ok% � �heap_largest_block<size%
,$  ok%=�heap_extend(8*1024)
,.�
,8� ok% �
,B+  ș"OS_Heap",2,heap%,,size% � ,,block%
,L�
,V  block%=-1
,`  �heap_shrink
,j&  �error_message("Heap_OutOfRoom")
,t�
,~=block%
,�
,� � �heap_lose_block(� block%)
,�,� block%>-1 � ș"OS_Heap",3,heap%,block%
,�
block%=-1
,��heap_shrink
,��
,�
,�� �heap_shrink
,�� ok%,size%
,�	ok%=�
,�size%=-1024*8
,�
ȕ ok%
-(  ș"XOS_Heap",5,heap%,,size% � ;ok%
-
  ok%=((ok%�1)=0)
-
  � ok% �
-    heap_size%=heap%!12
-(#    ok%=�work_space(heap_size%)
-2  �
-<�
-F�
-P
-Z� �heap_extend(size%)
-d	� ok%
-n%ok%=�work_space(heap_size%+size%)
-x� ok% �
-�   ș"OS_Heap",5,heap%,,size%
-�  heap_size%=heap%!12
-��
-�&  �error_message("Heap_OutOfRoom")
-��
-�=ok%
-�
-�'� �heap_extend_block(� block%,inc%)
-�� ok%, heapfull%
-�heapfull%=�
-��
-�5  ș"XOS_Heap",4,heap%,block%,inc% � ,,block%;ok%
-�  ok%=((ok%�1)=0)
..  � �ok% � heapfull%=��heap_extend(8*1024)
.� ok% � heapfull%
.=ok%
."
.,� �heap_quit
.6!ș"Wimp_SlotSize",appsize%,-1
.@heap%=-1
.Jheap_size%=0
.T�
.^
.h� �draw_init
.r6� draw_bound%(10), draw_group%(10), draw_font$(10)
.|�
.�
.�"� �draw_header(title$,ox%,oy%)
.�title$=�title$+�12," "),12)
.�!draw_offx%=ox%:draw_offy%=oy%
.�draw_depth%=0
.�draw_b_steps%=8*1024
.�draw_bs%=draw_b_steps%
.�)draw_block%=�heap_get_block(draw_bs%)
.�draw_pos%=0
.��draw_word(&77617244)
.��draw_word(201)
.��draw_word(0)
.��draw_st(title$)
/draw_bound%(0)=draw_pos%
/�draw_null_bound
/�
/&
/0� �draw_end
/:� draw_depth%=0 �
/D  draw_size%=draw_pos%
/N�
/X#  �heap_lose_block(draw_block%)
/b+  �error_report("Badly nested groups.")
/l�
/v�
/�
/�� �draw_null_bound
/��draw_word(1<<30)
/��draw_word(1<<30)
/��draw_word(1<<31)
/��draw_word(1<<31)
/��
/�
/�7� �draw_text(text$,fn%,height%,aspect%,x%,y%,type%)
/�� fx0%, fy0%, fx1%, fy1%
/�
/�>fhandle%=�font_handle(draw_font$(fn%),height%,aspect%,100)
/�
/�ș"Font_SetFont",fhandle%
/�5ș"Font_StringBBox",,text$ � ,fx0%,fy0%,fx1%,fy1%
0!fx0%=fx0%*0.64:fy0%=fy0%*0.64
0!fx1%=fx1%*0.64:fy1%=fy1%*0.64
0Ȏ type% �
0   � 1 : x%-=fx1%
0*  � 2 : x%-=fx1%/2
04  � 3 : y%-=fy1%
0>  � 4 : y%-=fy1%/2
0H�
0Rș"Font_LoseFont",fhandle%
0\!x%+=draw_offx%:y%+=draw_offy%
0f
0p�draw_start_object(1,�)
0z%draw_x0%=x%+fx0%:draw_y0%=y%+fy0%
0�%draw_x1%=x%+fx1%:draw_y1%=y%+fy1%
0��draw_word(0)
0��draw_word(&FFFFFF00)
0��draw_word(fn%)
0�#�draw_word(height%*aspect%*6.4)
0��draw_word(height%*640)
0��draw_word(x%)
0��draw_word(y%)
0��draw_st(text$+�0)
0��draw_align
0��draw_end_object
0��
0�
1� �draw_start_fonttable
1�draw_start_object(0,�)
1draw_fonts%=0
1$�
1.
18� �draw_end_fonttable
1B�draw_align
1L�draw_end_object
1V�
1`
1j� �draw_add_font(font$)
1tdraw_fonts%+=1
1~!draw_font$(draw_fonts%)=font$
1��draw_byte(draw_fonts%)
1��draw_st(font$+�0)
1��
1�
1�&� �draw_start_object(type%,bound%)
1�draw_start_obj%=draw_pos%
1��draw_word(type%)
1��draw_word(0)
1�� bound% �
1�  draw_obj_bound%=draw_pos%
1�  �draw_null_bound
1�  draw_x0%=1<<30
2  draw_y0%=1<<30
2
  draw_x1%=1<<31
2  draw_y1%=1<<31
2�
2(  draw_obj_bound%=-1
22�
2<�
2F
2P� �draw_start_group
2Zdraw_depth%+=1
2d�draw_start_object(6,�)
2n,draw_group%(draw_depth%)=draw_start_obj%
2x,draw_bound%(draw_depth%)=draw_obj_bound%
2��draw_word(0)
2��draw_word(0)
2��draw_word(0)
2��
2�
2�� �draw_end_group
2�� draw_block%>-1 �
2�.  draw_obj_bound%=draw_bound%(draw_depth%)
2�.  draw_start_obj%=draw_group%(draw_depth%)
2�-  draw_bound%=draw_block%+draw_obj_bound%
2�  draw_x0%=!draw_bound%
2�  draw_y0%=draw_bound%!4
2�  draw_x1%=draw_bound%!8
3  draw_y1%=draw_bound%!12
3  draw_depth%-=1
3  �draw_end_object
3"�
3,�
36
3@� �draw_end_object
3J� draw_block%>-1 �
3T@  !(draw_start_obj%+draw_block%+4)=draw_pos%-draw_start_obj%
3^  � draw_obj_bound%>-1 �
3h/    draw_bound%=draw_block%+draw_obj_bound%
3r    !draw_bound%=draw_x0%
3|    draw_bound%!4=draw_y0%
3�    draw_bound%!8=draw_x1%
3�    draw_bound%!12=draw_y1%
3�8    draw_bound%=draw_bound%(draw_depth%)+draw_block%
3�7    � draw_x0%<!draw_bound% � !draw_bound%=draw_x0%
3�9    � draw_y0%<draw_bound%!4 � draw_bound%!4=draw_y0%
3�9    � draw_x1%>draw_bound%!8 � draw_bound%!8=draw_x1%
3�;    � draw_y1%>draw_bound%!12 � draw_bound%!12=draw_y1%
3�  �
3��
3��
3�
3�� �draw_word(word%)
3�� draw_block%>-1 �
42  � draw_pos%+4>draw_bs% � �draw_try_to_extend
4  � draw_block%>-1 �
4#    draw_block%!draw_pos%=word%
4&    draw_pos%+=4
40  �
4:�
4D�
4N
4X� �draw_byte(byte%)
4b� draw_block%>-1 �
4l2  � draw_pos%+1>draw_bs% � �draw_try_to_extend
4v  � draw_block%>-1 �
4�#    draw_block%?draw_pos%=byte%
4�    draw_pos%+=1
4�  �
4��
4��
4�
4�� �draw_align
4�ȕ (draw_pos%�3)>0
4�  �draw_byte(0)
4��
4��
4�
4�� �draw_st(st$)
5� a%
5� draw_block%>-1 �
55  � draw_pos%+�st$>draw_bs% � �draw_try_to_extend
5   � draw_block%>-1 �
5*    � a%=1 � �st$
54+      draw_block%?draw_pos%=��st$,a%,1)
5>      draw_pos%+=1
5H    � a%
5R  �
5\�
5f�
5p
5z� �draw_place_ords(x%,y%)
5�x%+=draw_offx%
5�y%+=draw_offy%
5��place_word(x%)
5��place_word(y%)
5��
5�
5�� �draw_try_to_extend
5�5� �heap_extend_block(draw_block%,draw_b_steps%) �
5�  draw_bs%+=draw_b_steps%
5��
5�#  �heap_lose_block(draw_block%)
5��
5��
5�
5�� �error_message(token$)
5� �error_report(�mess(token$))
6�
6
6� �error_report($(q%+4))
6&� Whoops something has gone wrong!
6$ș"Wimp_DragBox",,-1
6.dragging%=�
68!q%=255
6B&ș"Wimp_ReportError",q%,1,my_name$
6L�
�
00000000  0d 00 0a 21 f4 20 3e 20  3c 57 61 6e 6e 61 4b 65  |...!. > <WannaKe|
00000010  72 6e 24 44 69 72 3e 2e  21 52 75 6e 49 6d 61 67  |rn$Dir>.!RunImag|
00000020  65 0d 00 14 26 f4 20 57  72 69 74 74 65 6e 20 62  |e...&. Written b|
00000030  79 20 42 61 72 72 79 20  57 69 63 6b 65 74 74 2c  |y Barry Wickett,|
00000040  20 4d 61 79 20 39 36 0d  00 1e 05 f4 0d 00 28 11  | May 96.......(.|
00000050  f4 20 51 75 65 72 69 65  73 20 74 6f 3a 0d 00 32  |. Queries to:..2|
00000060  14 f4 20 20 42 61 72 72  79 20 57 69 63 6b 65 74  |..  Barry Wicket|
00000070  74 0d 00 3c 1a f4 20 20  31 34 20 4e 65 77 20 5a  |t..<..  14 New Z|
00000080  65 61 6c 61 6e 64 20 52  6f 61 64 0d 00 46 0e f4  |ealand Road..F..|
00000090  20 20 43 61 72 64 69 66  66 0d 00 50 0e f4 20 20  |  Cardiff..P..  |
000000a0  43 46 34 20 33 42 52 0d  00 5a 04 0d 00 64 1b f2  |CF4 3BR..Z...d..|
000000b0  77 69 6d 70 5f 69 6e 69  74 28 22 57 61 6e 6e 61  |wimp_init("Wanna|
000000c0  4b 65 72 6e 22 29 0d 00  6e 04 0d 00 78 05 f5 0d  |Kern")..n...x...|
000000d0  00 79 04 0d 00 82 2c 20  20 c8 99 22 57 69 6d 70  |.y....,  .."Wimp|
000000e0  5f 50 6f 6c 6c 22 2c 31  2b 64 72 61 67 67 69 6e  |_Poll",1+draggin|
000000f0  67 25 2c 71 25 20 b8 20  72 65 61 73 6f 6e 25 0d  |g%,q% . reason%.|
00000100  00 83 06 20 20 0d 00 8c  12 20 20 c8 8e 20 72 65  |...  ....  .. re|
00000110  61 73 6f 6e 25 20 ca 0d  00 96 1e 20 20 20 20 c9  |ason% .....    .|
00000120  20 30 20 3a 20 f2 77 69  6e 64 6f 77 5f 64 72 61  | 0 : .window_dra|
00000130  67 67 69 6e 67 0d 00 a0  21 20 20 20 20 c9 20 31  |gging...!    . 1|
00000140  20 3a 20 f2 77 69 6e 64  6f 77 5f 72 65 64 72 61  | : .window_redra|
00000150  77 28 21 71 25 29 0d 00  aa 1e 20 20 20 20 c9 20  |w(!q%)....    . |
00000160  32 20 3a 20 f2 77 69 6e  64 6f 77 5f 6f 70 65 6e  |2 : .window_open|
00000170  28 71 25 29 0d 00 b4 20  20 20 20 20 c9 20 33 20  |(q%)...     . 3 |
00000180  3a 20 f2 77 69 6e 64 6f  77 5f 63 6c 6f 73 65 28  |: .window_close(|
00000190  21 71 25 29 0d 00 be 35  20 20 20 20 c9 20 36 20  |!q%)...5    . 6 |
000001a0  3a 20 f2 6d 6f 75 73 65  5f 63 6c 69 63 6b 28 21  |: .mouse_click(!|
000001b0  71 25 2c 71 25 21 34 2c  71 25 21 38 2c 71 25 21  |q%,q%!4,q%!8,q%!|
000001c0  31 32 2c 71 25 21 31 36  29 0d 00 c8 1e 20 20 20  |12,q%!16)....   |
000001d0  20 c9 20 37 20 3a 20 f2  77 69 6e 64 6f 77 5f 65  | . 7 : .window_e|
000001e0  6e 64 5f 64 72 61 67 0d  00 d2 2a 20 20 20 20 c9  |nd_drag...*    .|
000001f0  20 38 20 3a 20 f2 6b 65  79 5f 70 72 65 73 73 65  | 8 : .key_presse|
00000200  64 28 21 71 25 2c 71 25  21 34 2c 71 25 21 32 34  |d(!q%,q%!4,q%!24|
00000210  29 0d 00 dc 1a 20 20 20  20 c9 20 39 20 3a 20 f2  |)....    . 9 : .|
00000220  6d 65 6e 75 5f 73 65 6c  65 63 74 0d 00 e6 2b 20  |menu_select...+ |
00000230  20 20 20 c9 20 31 37 2c  31 38 20 3a 20 f2 6d 65  |   . 17,18 : .me|
00000240  73 73 61 67 65 28 71 25  21 31 36 2c 71 25 21 34  |ssage(q%!16,q%!4|
00000250  2c 71 25 21 38 29 0d 00  f0 27 20 20 20 20 c9 20  |,q%!8)...'    . |
00000260  31 39 20 3a 20 f2 6d 65  73 73 61 67 65 5f 72 65  |19 : .message_re|
00000270  74 75 72 6e 65 64 28 71  25 21 31 36 29 0d 00 fa  |turned(q%!16)...|
00000280  07 20 20 cb 0d 01 04 0b  fd 20 65 78 69 74 25 0d  |.  ...... exit%.|
00000290  01 0e 04 0d 01 18 0f f2  6d 65 73 73 5f 63 6c 6f  |........mess_clo|
000002a0  73 65 0d 01 22 0c f2 66  73 5f 71 75 69 74 0d 01  |se.."..fs_quit..|
000002b0  2c 04 0d 01 36 16 c8 99  22 57 69 6d 70 5f 43 6c  |,...6..."Wimp_Cl|
000002c0  6f 73 65 44 6f 77 6e 22  0d 01 54 04 0d 01 5e 05  |oseDown"..T...^.|
000002d0  e0 0d 01 68 04 0d 01 72  11 dd 20 f2 6d 6f 75 73  |...h...r.. .mous|
000002e0  65 5f 69 6e 66 6f 0d 01  7c 1f c8 99 22 57 69 6d  |e_info..|..."Wim|
000002f0  70 5f 47 65 74 50 6f 69  6e 74 65 72 49 6e 66 6f  |p_GetPointerInfo|
00000300  22 2c 2c 71 25 0d 01 86  0b 6d 78 25 3d 21 71 25  |",,q%....mx%=!q%|
00000310  0d 01 90 0c 6d 79 25 3d  71 25 21 34 0d 01 9a 0d  |....my%=q%!4....|
00000320  62 75 74 25 3d 71 25 21  38 0d 01 a4 0f 77 69 6e  |but%=q%!8....win|
00000330  64 25 3d 71 25 21 31 32  0d 01 ae 0f 69 63 6f 6e  |d%=q%!12....icon|
00000340  25 3d 71 25 21 31 36 0d  01 b8 05 e1 0d 01 c2 04  |%=q%!16.........|
00000350  0d 01 cc 2c dd 20 f2 6d  6f 75 73 65 5f 63 6c 69  |...,. .mouse_cli|
00000360  63 6b 28 6d 78 25 2c 6d  79 25 2c 62 75 74 25 2c  |ck(mx%,my%,but%,|
00000370  77 69 6e 64 25 2c 69 63  6f 6e 25 29 0d 01 d6 0e  |wind%,icon%)....|
00000380  c8 8e 20 77 69 6e 64 25  20 ca 0d 01 e0 04 0d 01  |.. wind% .......|
00000390  ea 0a 20 20 c9 20 2d 32  0d 01 f4 11 20 20 20 20  |..  . -2....    |
000003a0  c8 8e 20 62 75 74 25 20  ca 0d 01 fe 41 20 20 20  |.. but% ....A   |
000003b0  20 20 20 c9 20 32 20 3a  20 f2 6d 65 6e 75 5f 6f  |   . 2 : .menu_o|
000003c0  70 65 6e 28 62 61 72 5f  6d 65 6e 75 25 2c 6d 78  |pen(bar_menu%,mx|
000003d0  25 2d 28 62 61 72 5f 6d  65 6e 75 25 21 31 36 29  |%-(bar_menu%!16)|
000003e0  2f 32 2d 31 36 2c 31 38  34 29 0d 02 08 0d 20 20  |/2-16,184)....  |
000003f0  20 20 20 20 c9 20 34 0d  02 12 25 20 20 20 20 20  |    . 4...%     |
00000400  20 20 20 e7 20 a4 77 69  6e 64 6f 77 5f 61 63 74  |   . .window_act|
00000410  69 76 65 28 6d 61 69 6e  25 29 20 8c 0d 02 1c 22  |ive(main%) ...."|
00000420  20 20 20 20 20 20 20 20  20 20 f2 77 69 6e 64 6f  |          .windo|
00000430  77 5f 70 6f 70 75 70 28  6d 61 69 6e 25 29 0d 02  |w_popup(main%)..|
00000440  26 0d 20 20 20 20 20 20  20 20 cc 0d 02 30 19 20  |&.        ...0. |
00000450  20 20 20 20 20 20 20 20  20 f2 6d 61 69 6e 5f 72  |         .main_r|
00000460  65 73 65 74 0d 02 3a 29  20 20 20 20 20 20 20 20  |eset..:)        |
00000470  20 20 f2 77 69 6e 64 6f  77 5f 6f 70 65 6e 5f 66  |  .window_open_f|
00000480  75 6c 6c 79 28 6d 61 69  6e 25 2c b9 29 0d 02 44  |ully(main%,.)..D|
00000490  28 20 20 20 20 20 20 20  20 20 20 f2 63 61 72 65  |(          .care|
000004a0  74 5f 70 6c 61 63 65 28  74 6f 6f 6c 73 25 2c 30  |t_place(tools%,0|
000004b0  2c 32 35 36 29 0d 02 4e  0d 20 20 20 20 20 20 20  |,256)..N.       |
000004c0  20 cd 0d 02 58 09 20 20  20 20 cb 0d 02 6c 04 0d  | ...X.    ...l..|
000004d0  02 76 0e 20 20 c9 20 74  6f 6f 6c 73 25 0d 02 80  |.v.  . tools%...|
000004e0  11 20 20 20 20 c8 8e 20  62 75 74 25 20 ca 0d 02  |.    .. but% ...|
000004f0  8a 0d 20 20 20 20 20 20  c9 20 34 0d 02 94 16 20  |..      . 4.... |
00000500  20 20 20 20 20 20 20 c8  8e 20 69 63 6f 6e 25 20  |       .. icon% |
00000510  ca 0d 02 9e 48 20 20 20  20 20 20 20 20 20 20 c9  |....H          .|
00000520  20 32 20 3a 20 f2 66 73  5f 70 6f 70 75 70 28 a4  | 2 : .fs_popup(.|
00000530  6d 65 73 73 28 22 46 53  54 49 54 4c 45 22 29 2c  |mess("FSTITLE"),|
00000540  66 6e 61 6d 65 24 2c 66  68 65 69 67 68 74 25 2c  |fname$,fheight%,|
00000550  66 61 73 70 65 63 74 25  29 0d 02 a8 11 20 20 20  |faspect%)....   |
00000560  20 20 20 20 20 20 20 c9  20 35 0d 02 b2 26 20 20  |       . 5...&  |
00000570  20 20 20 20 20 20 20 20  20 20 24 73 63 61 6c 65  |          $scale|
00000580  5f 74 65 78 74 25 3d c3  28 73 63 61 6c 65 25 29  |_text%=.(scale%)|
00000590  0d 02 bc 39 20 20 20 20  20 20 20 20 20 20 20 20  |...9            |
000005a0  f2 6d 65 6e 75 5f 69 63  6f 6e 5f 70 6f 70 75 70  |.menu_icon_popup|
000005b0  28 77 69 6e 64 25 2c 69  63 6f 6e 25 2c 73 63 61  |(wind%,icon%,sca|
000005c0  6c 65 5f 6d 65 6e 75 25  29 0d 02 c6 41 20 20 20  |le_menu%)...A   |
000005d0  20 20 20 20 20 20 20 c9  20 36 20 3a 20 f2 6d 61  |       . 6 : .ma|
000005e0  69 6e 5f 73 65 74 5f 61  75 74 6f 5f 6b 65 72 6e  |in_set_auto_kern|
000005f0  28 a4 69 63 6f 6e 5f 73  65 6c 65 63 74 65 64 28  |(.icon_selected(|
00000600  74 6f 6f 6c 73 25 2c 36  29 29 0d 02 d0 49 20 20  |tools%,6))...I  |
00000610  20 20 20 20 20 20 20 20  c9 20 39 2c 31 30 20 3a  |        . 9,10 :|
00000620  20 f2 6d 61 69 6e 5f 73  65 74 5f 67 6c 6f 62 61  | .main_set_globa|
00000630  6c 5f 6b 65 72 6e 28 a4  69 63 6f 6e 5f 75 70 64  |l_kern(.icon_upd|
00000640  6f 77 6e 28 39 2c 31 30  2c 37 2c 2d 39 39 2c 39  |own(9,10,7,-99,9|
00000650  39 29 29 0d 02 da 20 20  20 20 20 20 20 20 20 20  |9))...          |
00000660  20 c9 20 31 31 20 3a 20  f2 6d 61 69 6e 5f 72 65  | . 11 : .main_re|
00000670  73 65 74 0d 02 e4 0d 20  20 20 20 20 20 20 20 cb  |set....        .|
00000680  0d 02 ee 23 20 20 20 20  20 20 c9 20 32 20 3a 20  |...#      . 2 : |
00000690  f2 6d 61 69 6e 5f 6f 70  65 6e 5f 73 61 76 65 5f  |.main_open_save_|
000006a0  62 6f 78 0d 02 f8 09 20  20 20 20 cb 0d 02 f9 08  |box....    .....|
000006b0  20 20 20 20 0d 03 02 0d  20 20 c9 20 6d 61 69 6e  |    ....  . main|
000006c0  25 0d 03 0c 11 20 20 20  20 c8 8e 20 62 75 74 25  |%....    .. but%|
000006d0  20 ca 0d 03 16 29 20 20  20 20 20 20 c9 20 34 20  | ....)      . 4 |
000006e0  3a 20 f2 6d 61 69 6e 5f  63 68 65 63 6b 5f 64 72  |: .main_check_dr|
000006f0  61 67 28 6d 78 25 2c 6d  79 25 29 0d 03 20 23 20  |ag(mx%,my%).. # |
00000700  20 20 20 20 20 c9 20 32  20 3a 20 f2 6d 61 69 6e  |     . 2 : .main|
00000710  5f 6f 70 65 6e 5f 73 61  76 65 5f 62 6f 78 0d 03  |_open_save_box..|
00000720  2a 09 20 20 20 20 cb 0d  03 2b 08 20 20 20 20 0d  |*.    ...+.    .|
00000730  03 34 36 20 20 c9 20 66  73 5f 77 69 6e 64 25 20  |.46  . fs_wind% |
00000740  3a 20 f2 66 73 5f 63 6c  69 63 6b 28 6d 78 25 2c  |: .fs_click(mx%,|
00000750  6d 79 25 2c 62 75 74 25  2c 77 69 6e 64 25 2c 69  |my%,but%,wind%,i|
00000760  63 6f 6e 25 29 0d 03 35  06 20 20 0d 03 3e 0d 20  |con%)..5.  ..>. |
00000770  20 c9 20 73 61 76 65 25  0d 03 48 12 20 20 20 20  | . save%..H.    |
00000780  e7 20 62 75 74 25 3d 34  20 8c 0d 03 52 14 20 20  |. but%=4 ...R.  |
00000790  20 20 20 20 c8 8e 20 69  63 6f 6e 25 20 ca 0d 03  |    .. icon% ...|
000007a0  5c 2b 20 20 20 20 20 20  20 20 c9 20 30 20 3a 20  |\+        . 0 : |
000007b0  f2 69 63 6f 6e 5f 73 74  61 72 74 5f 64 72 61 67  |.icon_start_drag|
000007c0  28 73 61 76 65 25 2c 30  29 0d 03 66 1d 20 20 20  |(save%,0)..f.   |
000007d0  20 20 20 20 20 c9 20 32  20 3a 20 f2 6d 65 6e 75  |     . 2 : .menu|
000007e0  5f 63 6c 6f 73 65 0d 03  70 31 20 20 20 20 20 20  |_close..p1      |
000007f0  20 20 c9 20 33 20 3a 20  f2 66 69 6c 65 5f 73 61  |  . 3 : .file_sa|
00000800  76 65 28 a4 69 63 6f 6e  5f 74 65 78 74 28 73 61  |ve(.icon_text(sa|
00000810  76 65 25 2c 31 29 29 0d  03 7a 0b 20 20 20 20 20  |ve%,1))..z.     |
00000820  20 cb 0d 03 84 09 20 20  20 20 cd 0d 03 8e 05 cb  | .....    ......|
00000830  0d 03 98 05 e1 0d 03 a2  04 0d 03 ac 19 dd 20 f2  |.............. .|
00000840  6d 61 69 6e 5f 6f 70 65  6e 5f 73 61 76 65 5f 62  |main_open_save_b|
00000850  6f 78 0d 03 b6 29 f2 69  63 6f 6e 5f 73 65 74 5f  |ox...).icon_set_|
00000860  74 65 78 74 28 73 61 76  65 25 2c 31 2c a4 6d 65  |text(save%,1,.me|
00000870  73 73 28 22 44 46 53 4e  22 29 29 0d 03 c0 27 f2  |ss("DFSN"))...'.|
00000880  77 69 6e 64 6f 77 5f 6f  70 65 6e 5f 61 73 5f 6d  |window_open_as_m|
00000890  65 6e 75 28 73 61 76 65  25 2c 6d 78 25 2c 6d 79  |enu(save%,mx%,my|
000008a0  25 29 0d 03 ca 05 e1 0d  03 d4 04 0d 03 de 24 dd  |%)............$.|
000008b0  20 f2 6b 65 79 5f 70 72  65 73 73 65 64 28 77 69  | .key_pressed(wi|
000008c0  6e 64 25 2c 69 63 6f 6e  25 2c 6b 65 79 25 29 0d  |nd%,icon%,key%).|
000008d0  03 e8 0e c8 8e 20 77 69  6e 64 25 20 ca 0d 03 f2  |..... wind% ....|
000008e0  34 20 20 c9 20 66 73 5f  77 69 6e 64 25 20 3a 20  |4  . fs_wind% : |
000008f0  f2 66 73 5f 6b 65 79 5f  70 72 65 73 73 65 64 28  |.fs_key_pressed(|
00000900  77 69 6e 64 25 2c 69 63  6f 6e 25 2c 6b 65 79 25  |wind%,icon%,key%|
00000910  29 0d 03 fc 34 20 20 c9  20 74 6f 6f 6c 73 25 20  |)...4  . tools% |
00000920  3a 20 f2 6d 61 69 6e 5f  6b 65 79 5f 70 72 65 73  |: .main_key_pres|
00000930  73 65 64 28 77 69 6e 64  25 2c 69 63 6f 6e 25 2c  |sed(wind%,icon%,|
00000940  6b 65 79 25 29 0d 04 06  05 7f 0d 04 10 1e 20 20  |key%).........  |
00000950  c8 99 22 57 69 6d 70 5f  50 72 6f 63 65 73 73 4b  |.."Wimp_ProcessK|
00000960  65 79 22 2c 6b 65 79 25  0d 04 1a 05 cb 0d 04 24  |ey",key%.......$|
00000970  05 e1 0d 04 2e 04 0d 04  38 29 dd 20 f2 6d 61 69  |........8). .mai|
00000980  6e 5f 6b 65 79 5f 70 72  65 73 73 65 64 28 77 69  |n_key_pressed(wi|
00000990  6e 64 25 2c 69 63 6f 6e  25 2c 6b 65 79 25 29 0d  |nd%,icon%,key%).|
000009a0  04 42 0e c8 8e 20 69 63  6f 6e 25 20 ca 0d 04 4c  |.B... icon% ...L|
000009b0  1c 20 20 c9 20 30 20 3a  20 f2 6d 61 69 6e 5f 67  |.  . 0 : .main_g|
000009c0  65 74 5f 73 74 72 69 6e  67 0d 04 56 36 20 20 c9  |et_string..V6  .|
000009d0  20 37 20 3a 20 f2 6d 61  69 6e 5f 73 65 74 5f 67  | 7 : .main_set_g|
000009e0  6c 6f 62 61 6c 5f 6b 65  72 6e 28 a4 69 63 6f 6e  |lobal_kern(.icon|
000009f0  5f 76 61 6c 28 74 6f 6f  6c 73 25 2c 37 29 29 0d  |_val(tools%,7)).|
00000a00  04 60 05 cb 0d 04 6a 1c  c8 99 22 57 69 6d 70 5f  |.`....j..."Wimp_|
00000a10  50 72 6f 63 65 73 73 4b  65 79 22 2c 6b 65 79 25  |ProcessKey",key%|
00000a20  0d 04 74 05 e1 0d 04 7e  04 0d 04 88 1f dd 20 f2  |..t....~...... .|
00000a30  6d 61 69 6e 5f 63 68 65  63 6b 5f 64 72 61 67 28  |main_check_drag(|
00000a40  6d 78 25 2c 6d 79 25 29  0d 04 92 12 ea 20 6c 65  |mx%,my%)..... le|
00000a50  6e 25 2c 20 63 25 2c 20  78 25 0d 04 9c 0e 64 78  |n%, c%, x%....dx|
00000a60  25 3d 77 78 25 2b 33 32  0d 04 a6 3b 64 79 25 3d  |%=wx%+32...;dy%=|
00000a70  77 79 25 2d 28 72 61 64  25 2a 32 2b 70 61 6e 65  |wy%-(rad%*2+pane|
00000a80  5f 68 65 69 67 68 74 25  2b 28 66 68 65 69 67 68  |_height%+(fheigh|
00000a90  74 25 2a 32 2e 35 2a 73  63 61 6c 65 25 29 2f 31  |t%*2.5*scale%)/1|
00000aa0  30 30 29 0d 04 b0 17 f2  77 69 6e 64 6f 77 5f 69  |00).....window_i|
00000ab0  6e 66 6f 28 6d 61 69 6e  25 29 0d 04 ba 16 6c 65  |nfo(main%)....le|
00000ac0  6e 25 3d a9 6d 61 69 6e  5f 73 74 72 69 6e 67 24  |n%=.main_string$|
00000ad0  0d 04 bb 04 0d 04 c4 0e  e7 20 6c 65 6e 25 3e 31  |......... len%>1|
00000ae0  20 8c 0d 04 ce 12 20 20  64 72 61 67 5f 6c 6f 6f  | .....  drag_loo|
00000af0  70 25 3d 30 0d 04 d8 13  20 20 e3 20 63 25 3d 32  |p%=0....  . c%=2|
00000b00  20 b8 20 6c 65 6e 25 0d  04 e2 2e 20 20 20 20 78  | . len%....    x|
00000b10  25 3d 64 78 25 2b 28 63  68 61 72 5f 78 25 28 63  |%=dx%+(char_x%(c|
00000b20  25 29 2a 73 63 61 6c 65  25 29 2f 32 35 36 30 30  |%)*scale%)/25600|
00000b30  2b 72 61 64 25 0d 04 ec  2b 20 20 20 20 e7 20 b6  |+rad%...+    . .|
00000b40  28 28 6d 78 25 2d 78 25  29 5e 32 2b 28 6d 79 25  |((mx%-x%)^2+(my%|
00000b50  2d 64 79 25 29 5e 32 29  3c 3d 72 61 64 25 20 8c  |-dy%)^2)<=rad% .|
00000b60  0d 04 f6 17 20 20 20 20  20 20 64 72 61 67 5f 6c  |....      drag_l|
00000b70  6f 6f 70 25 3d 63 25 0d  05 00 1c 20 20 20 20 20  |oop%=c%....     |
00000b80  20 6f 66 66 5f 78 25 3d  6d 78 25 2d 78 25 2b 72  | off_x%=mx%-x%+r|
00000b90  61 64 25 0d 05 0a 09 20  20 20 20 cd 0d 05 14 0a  |ad%....    .....|
00000ba0  20 20 ed 20 63 25 0d 05  1e 14 20 20 e7 20 64 72  |  . c%....  . dr|
00000bb0  61 67 5f 6c 6f 6f 70 25  20 8c 0d 05 28 39 20 20  |ag_loop% ...(9  |
00000bc0  20 20 f2 77 69 6e 64 6f  77 5f 73 74 61 72 74 5f  |  .window_start_|
00000bd0  75 73 65 72 5f 64 72 61  67 28 6d 61 69 6e 25 2c  |user_drag(main%,|
00000be0  71 25 21 34 2c 64 79 25  2c 71 25 21 31 32 2c 64  |q%!4,dy%,q%!12,d|
00000bf0  79 25 29 0d 05 32 56 20  20 20 20 63 68 61 72 5f  |y%)..2V    char_|
00000c00  62 61 73 65 25 3d 64 78  25 2b 28 28 63 68 61 72  |base%=dx%+((char|
00000c10  5f 78 25 28 64 72 61 67  5f 6c 6f 6f 70 25 29 2d  |_x%(drag_loop%)-|
00000c20  6b 65 72 6e 25 28 32 2c  64 72 61 67 5f 6c 6f 6f  |kern%(2,drag_loo|
00000c30  70 25 29 29 2a 73 63 61  6c 65 25 29 2f 32 35 36  |p%))*scale%)/256|
00000c40  30 30 2b 6f 66 66 5f 78  25 0d 05 3c 07 20 20 cd  |00+off_x%..<.  .|
00000c50  0d 05 46 05 cd 0d 05 50  05 e1 0d 05 5a 04 0d 05  |..F....P....Z...|
00000c60  64 16 dd 20 f2 77 69 6e  64 6f 77 5f 64 72 61 67  |d.. .window_drag|
00000c70  67 69 6e 67 0d 05 6e 0f  f2 6d 6f 75 73 65 5f 69  |ging..n..mouse_i|
00000c80  6e 66 6f 0d 05 78 15 78  25 3d 6d 78 25 2d 63 68  |nfo..x.x%=mx%-ch|
00000c90  61 72 5f 62 61 73 65 25  0d 05 82 1f 6e 65 77 5f  |ar_base%....new_|
00000ca0  6b 65 72 6e 25 3d 28 78  25 2a 32 35 36 30 30 29  |kern%=(x%*25600)|
00000cb0  2f 73 63 61 6c 65 25 0d  05 8c 26 e7 20 6e 65 77  |/scale%...&. new|
00000cc0  5f 6b 65 72 6e 25 3c 3e  6b 65 72 6e 25 28 32 2c  |_kern%<>kern%(2,|
00000cd0  64 72 61 67 5f 6c 6f 6f  70 25 29 20 8c 0d 05 96  |drag_loop%) ....|
00000ce0  23 20 20 6b 65 72 6e 25  28 32 2c 64 72 61 67 5f  |#  kern%(2,drag_|
00000cf0  6c 6f 6f 70 25 29 3d 6e  65 77 5f 6b 65 72 6e 25  |loop%)=new_kern%|
00000d00  0d 05 a0 1c 20 20 f2 6d  61 69 6e 5f 63 61 6c 63  |....  .main_calc|
00000d10  28 64 72 61 67 5f 6c 6f  6f 70 25 29 0d 05 aa 05  |(drag_loop%)....|
00000d20  cd 0d 05 b4 05 e1 0d 05  be 04 0d 05 c8 16 dd 20  |............... |
00000d30  f2 77 69 6e 64 6f 77 5f  65 6e 64 5f 64 72 61 67  |.window_end_drag|
00000d40  0d 05 d2 0f 64 72 61 67  67 69 6e 67 25 3d a3 0d  |....dragging%=..|
00000d50  05 dc 13 c8 8e 20 64 72  61 67 5f 77 69 6e 64 25  |..... drag_wind%|
00000d60  20 ca 0d 05 e6 26 20 20  c9 20 6d 61 69 6e 25 20  | ....&  . main% |
00000d70  3a 20 f2 6d 61 69 6e 5f  63 61 6c 63 28 64 72 61  |: .main_calc(dra|
00000d80  67 5f 6c 6f 6f 70 25 29  0d 05 f0 45 20 20 c9 20  |g_loop%)...E  . |
00000d90  73 61 76 65 25 20 3a 20  f2 66 69 6c 65 5f 64 72  |save% : .file_dr|
00000da0  6f 70 28 a4 66 69 6c 65  5f 6c 65 61 66 28 a4 69  |op(.file_leaf(.i|
00000db0  63 6f 6e 5f 74 65 78 74  28 73 61 76 65 25 2c 31  |con_text(save%,1|
00000dc0  29 29 2c 26 41 46 46 2c  32 30 30 30 29 0d 05 fa  |)),&AFF,2000)...|
00000dd0  05 cb 0d 06 04 05 e1 0d  06 0e 04 0d 06 18 11 dd  |................|
00000de0  20 f2 6d 61 69 6e 5f 72  65 73 65 74 0d 06 22 08  | .main_reset..".|
00000df0  ea 20 63 25 0d 06 2c 10  e3 20 63 25 3d 30 20 b8  |. c%..,.. c%=0 .|
00000e00  20 32 35 35 0d 06 36 13  20 20 6b 65 72 6e 25 28  | 255..6.  kern%(|
00000e10  32 2c 63 25 29 3d 30 0d  06 40 08 ed 20 63 25 0d  |2,c%)=0..@.. c%.|
00000e20  06 4a 14 f2 6d 61 69 6e  5f 67 65 74 5f 73 74 72  |.J..main_get_str|
00000e30  69 6e 67 0d 06 54 18 f2  6d 61 69 6e 5f 73 65 74  |ing..T..main_set|
00000e40  5f 73 63 61 6c 65 28 31  30 30 29 0d 06 5e 1a f2  |_scale(100)..^..|
00000e50  6d 61 69 6e 5f 73 65 74  5f 61 75 74 6f 5f 6b 65  |main_set_auto_ke|
00000e60  72 6e 28 b9 29 0d 06 68  1c f2 6d 61 69 6e 5f 73  |rn(.)..h..main_s|
00000e70  65 74 5f 67 6c 6f 62 61  6c 5f 6b 65 72 6e 28 30  |et_global_kern(0|
00000e80  29 0d 06 72 11 f2 6d 61  69 6e 5f 63 61 6c 63 28  |)..r..main_calc(|
00000e90  31 29 0d 06 7c 05 e1 0d  06 86 04 0d 06 90 16 dd  |1)..|...........|
00000ea0  20 f2 6d 61 69 6e 5f 67  65 74 5f 73 74 72 69 6e  | .main_get_strin|
00000eb0  67 0d 06 9a 11 ea 20 6e  65 77 24 2c 20 64 69 66  |g..... new$, dif|
00000ec0  66 25 0d 06 a4 1d 6e 65  77 24 3d a4 69 63 6f 6e  |f%....new$=.icon|
00000ed0  5f 74 65 78 74 28 74 6f  6f 6c 73 25 2c 30 29 0d  |_text(tools%,0).|
00000ee0  06 ae 1a e7 20 6d 61 69  6e 5f 73 74 72 69 6e 67  |.... main_string|
00000ef0  24 3c 3e 6e 65 77 24 20  8c 0d 06 b8 0d 20 20 64  |$<>new$ .....  d|
00000f00  69 66 66 25 3d 31 0d 06  c2 2a 20 20 c8 95 20 c0  |iff%=1...*  .. .|
00000f10  6d 61 69 6e 5f 73 74 72  69 6e 67 24 2c 64 69 66  |main_string$,dif|
00000f20  66 25 29 3d c0 6e 65 77  24 2c 64 69 66 66 25 29  |f%)=.new$,diff%)|
00000f30  0d 06 cc 10 20 20 20 20  64 69 66 66 25 2b 3d 31  |....    diff%+=1|
00000f40  0d 06 d6 07 20 20 ce 0d  06 e0 17 20 20 6d 61 69  |....  .....  mai|
00000f50  6e 5f 73 74 72 69 6e 67  24 3d 6e 65 77 24 0d 06  |n_string$=new$..|
00000f60  ea 16 20 20 f2 6d 61 69  6e 5f 63 61 6c 63 5f 6b  |..  .main_calc_k|
00000f70  65 72 6e 73 0d 06 f4 17  20 20 f2 6d 61 69 6e 5f  |erns....  .main_|
00000f80  63 61 6c 63 28 64 69 66  66 25 29 0d 06 fe 05 cd  |calc(diff%).....|
00000f90  0d 07 08 05 e1 0d 07 12  04 0d 07 1c 1b dd 20 f2  |.............. .|
00000fa0  6d 61 69 6e 5f 73 65 74  5f 73 63 61 6c 65 28 6e  |main_set_scale(n|
00000fb0  65 77 25 29 0d 07 26 2f  e7 20 6e 65 77 25 3c 31  |ew%)..&/. new%<1|
00000fc0  30 20 8c 20 6e 65 77 25  3d 31 30 20 8b 20 e7 20  |0 . new%=10 . . |
00000fd0  6e 65 77 25 3e 39 39 39  20 8c 20 6e 65 77 25 3d  |new%>999 . new%=|
00000fe0  39 39 39 0d 07 30 14 e7  20 73 63 61 6c 65 25 3c  |999..0.. scale%<|
00000ff0  3e 6e 65 77 25 20 8c 0d  07 3a 11 20 20 73 63 61  |>new% ...:.  sca|
00001000  6c 65 25 3d 6e 65 77 25  0d 07 44 2c 20 20 f2 69  |le%=new%..D,  .i|
00001010  63 6f 6e 5f 73 65 74 5f  74 65 78 74 28 74 6f 6f  |con_set_text(too|
00001020  6c 73 25 2c 33 2c c3 28  73 63 61 6c 65 25 29 2b  |ls%,3,.(scale%)+|
00001030  22 25 22 29 0d 07 4e 13  20 20 f2 6d 61 69 6e 5f  |"%")..N.  .main_|
00001040  63 61 6c 63 28 31 29 0d  07 58 05 cd 0d 07 62 05  |calc(1)..X....b.|
00001050  e1 0d 07 6c 04 0d 07 76  1f dd 20 f2 6d 61 69 6e  |...l...v.. .main|
00001060  5f 73 65 74 5f 61 75 74  6f 5f 6b 65 72 6e 28 6e  |_set_auto_kern(n|
00001070  65 77 25 29 0d 07 80 18  e7 20 61 75 74 6f 5f 6b  |ew%)..... auto_k|
00001080  65 72 6e 25 3c 3e 6e 65  77 25 20 8c 0d 07 8a 15  |ern%<>new% .....|
00001090  20 20 61 75 74 6f 5f 6b  65 72 6e 25 3d 6e 65 77  |  auto_kern%=new|
000010a0  25 0d 07 94 27 20 20 f2  69 63 6f 6e 5f 73 65 6c  |%...'  .icon_sel|
000010b0  65 63 74 28 74 6f 6f 6c  73 25 2c 36 2c 61 75 74  |ect(tools%,6,aut|
000010c0  6f 5f 6b 65 72 6e 25 29  0d 07 9e 13 20 20 f2 6d  |o_kern%)....  .m|
000010d0  61 69 6e 5f 63 61 6c 63  28 31 29 0d 07 a8 05 cd  |ain_calc(1).....|
000010e0  0d 07 b2 05 e1 0d 07 bc  04 0d 07 c6 21 dd 20 f2  |............!. .|
000010f0  6d 61 69 6e 5f 73 65 74  5f 67 6c 6f 62 61 6c 5f  |main_set_global_|
00001100  6b 65 72 6e 28 6e 65 77  25 29 0d 07 d0 1a e7 20  |kern(new%)..... |
00001110  67 6c 6f 62 61 6c 5f 6b  65 72 6e 25 3c 3e 6e 65  |global_kern%<>ne|
00001120  77 25 20 8c 0d 07 da 17  20 20 67 6c 6f 62 61 6c  |w% .....  global|
00001130  5f 6b 65 72 6e 25 3d 6e  65 77 25 0d 07 e4 48 20  |_kern%=new%...H |
00001140  20 e7 20 a4 69 63 6f 6e  5f 76 61 6c 28 74 6f 6f  | . .icon_val(too|
00001150  6c 73 25 2c 37 29 3c 3e  6e 65 77 25 20 8c 20 f2  |ls%,7)<>new% . .|
00001160  69 63 6f 6e 5f 73 65 74  5f 76 61 6c 28 74 6f 6f  |icon_set_val(too|
00001170  6c 73 25 2c 37 2c 67 6c  6f 62 61 6c 5f 6b 65 72  |ls%,7,global_ker|
00001180  6e 25 29 0d 07 ee 13 20  20 f2 6d 61 69 6e 5f 63  |n%)....  .main_c|
00001190  61 6c 63 28 31 29 0d 07  f8 05 cd 0d 08 02 05 e1  |alc(1)..........|
000011a0  0d 08 0c 04 0d 08 16 16  dd 20 f2 6d 61 69 6e 5f  |......... .main_|
000011b0  63 61 6c 63 5f 6b 65 72  6e 73 0d 08 20 18 ea 20  |calc_kerns.. .. |
000011c0  63 25 2c 20 66 68 61 6e  64 6c 65 25 2c 20 6c 65  |c%, fhandle%, le|
000011d0  6e 25 0d 08 2a 37 66 68  61 6e 64 6c 65 25 3d a4  |n%..*7fhandle%=.|
000011e0  66 6f 6e 74 5f 68 61 6e  64 6c 65 28 66 6e 61 6d  |font_handle(fnam|
000011f0  65 24 2c 66 68 65 69 67  68 74 25 2c 66 61 73 70  |e$,fheight%,fasp|
00001200  65 63 74 25 2c 31 30 30  29 0d 08 34 16 6c 65 6e  |ect%,100)..4.len|
00001210  25 3d a9 6d 61 69 6e 5f  73 74 72 69 6e 67 24 0d  |%=.main_string$.|
00001220  08 3e 0c e7 20 6c 65 6e  25 20 8c 0d 08 48 13 20  |.>.. len% ...H. |
00001230  20 e3 20 63 25 3d 31 20  b8 20 6c 65 6e 25 0d 08  | . c%=1 . len%..|
00001240  52 36 20 20 20 20 6b 65  72 6e 25 28 30 2c 63 25  |R6    kern%(0,c%|
00001250  29 3d a4 66 6f 6e 74 5f  77 69 64 74 68 28 c1 6d  |)=.font_width(.m|
00001260  61 69 6e 5f 73 74 72 69  6e 67 24 2c 63 25 2c 31  |ain_string$,c%,1|
00001270  29 2c a3 29 0d 08 5c 59  20 20 20 20 6b 65 72 6e  |),.)..\Y    kern|
00001280  25 28 31 2c 63 25 29 3d  a4 66 6f 6e 74 5f 77 69  |%(1,c%)=.font_wi|
00001290  64 74 68 28 c1 6d 61 69  6e 5f 73 74 72 69 6e 67  |dth(.main_string|
000012a0  24 2c 63 25 2c 32 29 2c  b9 29 2d a4 66 6f 6e 74  |$,c%,2),.)-.font|
000012b0  5f 77 69 64 74 68 28 c1  6d 61 69 6e 5f 73 74 72  |_width(.main_str|
000012c0  69 6e 67 24 2c 63 25 2c  32 29 2c a3 29 0d 08 66  |ing$,c%,2),.)..f|
000012d0  0a 20 20 ed 20 63 25 0d  08 70 05 cd 0d 08 7a 15  |.  . c%..p....z.|
000012e0  6b 65 72 6e 25 28 32 2c  6c 65 6e 25 2b 31 29 3d  |kern%(2,len%+1)=|
000012f0  30 0d 08 84 1e c8 99 22  46 6f 6e 74 5f 4c 6f 73  |0......"Font_Los|
00001300  65 46 6f 6e 74 22 2c 66  68 61 6e 64 6c 65 25 0d  |eFont",fhandle%.|
00001310  08 8e 05 e1 0d 08 98 04  0d 08 a2 18 dd 20 f2 6d  |............. .m|
00001320  61 69 6e 5f 63 61 6c 63  28 73 74 61 72 74 25 29  |ain_calc(start%)|
00001330  0d 08 ac 17 ea 20 63 25  2c 20 6c 65 6e 25 2c 20  |..... c%, len%, |
00001340  74 65 6d 70 5f 78 25 0d  08 b6 1b 74 65 6d 70 5f  |temp_x%....temp_|
00001350  78 25 3d 63 68 61 72 5f  78 25 28 73 74 61 72 74  |x%=char_x%(start|
00001360  25 29 0d 08 c0 16 6c 65  6e 25 3d a9 6d 61 69 6e  |%)....len%=.main|
00001370  5f 73 74 72 69 6e 67 24  0d 08 ca 0e e7 20 6c 65  |_string$..... le|
00001380  6e 25 3e 31 20 8c 0d 08  d4 1a 20 20 e3 20 63 25  |n%>1 .....  . c%|
00001390  3d 73 74 61 72 74 25 20  b8 20 6c 65 6e 25 2b 31  |=start% . len%+1|
000013a0  0d 08 de 6e 20 20 20 20  e7 20 63 25 3e 31 20 8c  |...n    . c%>1 .|
000013b0  20 63 68 61 72 5f 78 25  28 63 25 29 3d 63 68 61  | char_x%(c%)=cha|
000013c0  72 5f 78 25 28 63 25 2d  31 29 2b 6b 65 72 6e 25  |r_x%(c%-1)+kern%|
000013d0  28 30 2c 63 25 2d 31 29  2d 6b 65 72 6e 25 28 31  |(0,c%-1)-kern%(1|
000013e0  2c 63 25 2d 31 29 2a 61  75 74 6f 5f 6b 65 72 6e  |,c%-1)*auto_kern|
000013f0  25 2b 67 6c 6f 62 61 6c  5f 6b 65 72 6e 25 2a 31  |%+global_kern%*1|
00001400  36 30 2b 6b 65 72 6e 25  28 32 2c 63 25 29 0d 08  |60+kern%(2,c%)..|
00001410  e8 0a 20 20 ed 20 63 25  0d 08 f2 05 cd 0d 08 fc  |..  . c%........|
00001420  04 0d 09 06 12 e7 20 ac  64 72 61 67 67 69 6e 67  |...... .dragging|
00001430  25 20 8c 0d 09 10 3c 20  20 74 6f 74 61 6c 25 3d  |% ....<  total%=|
00001440  28 28 63 68 61 72 5f 78  25 28 6c 65 6e 25 29 2b  |((char_x%(len%)+|
00001450  6b 65 72 6e 25 28 30 2c  6c 65 6e 25 29 29 2a 73  |kern%(0,len%))*s|
00001460  63 61 6c 65 25 29 2f 32  35 36 30 30 2b 36 34 0d  |cale%)/25600+64.|
00001470  09 1a 2f 20 20 e7 20 74  6f 74 61 6c 25 3c 70 61  |../  . total%<pa|
00001480  6e 65 5f 77 69 64 74 68  25 20 8c 20 74 6f 74 61  |ne_width% . tota|
00001490  6c 25 3d 70 61 6e 65 5f  77 69 64 74 68 25 0d 09  |l%=pane_width%..|
000014a0  24 55 20 20 f2 77 69 6e  64 6f 77 5f 73 65 74 5f  |$U  .window_set_|
000014b0  65 78 74 65 6e 74 28 6d  61 69 6e 25 2c 30 2c 2d  |extent(main%,0,-|
000014c0  28 70 61 6e 65 5f 68 65  69 67 68 74 25 2b 36 34  |(pane_height%+64|
000014d0  2b 28 66 68 65 69 67 68  74 25 2a 33 2a 73 63 61  |+(fheight%*3*sca|
000014e0  6c 65 25 29 2f 31 30 30  29 2c 74 6f 74 61 6c 25  |le%)/100),total%|
000014f0  2c 30 29 0d 09 2e 05 cd  0d 09 38 04 0d 09 42 37  |,0).......8...B7|
00001500  e7 20 63 68 61 72 5f 78  25 28 73 74 61 72 74 25  |. char_x%(start%|
00001510  29 3c 74 65 6d 70 5f 78  25 20 8c 20 74 65 6d 70  |)<temp_x% . temp|
00001520  5f 78 25 3d 63 68 61 72  5f 78 25 28 73 74 61 72  |_x%=char_x%(star|
00001530  74 25 29 0d 09 4c 17 f2  77 69 6e 64 6f 77 5f 69  |t%)..L..window_i|
00001540  6e 66 6f 28 6d 61 69 6e  25 29 0d 09 56 0d f2 70  |nfo(main%)..V..p|
00001550  72 65 5f 6c 6f 6f 70 0d  09 60 4f f2 77 69 6e 64  |re_loop..`O.wind|
00001560  6f 77 5f 73 74 61 72 74  5f 75 70 64 61 74 65 5f  |ow_start_update_|
00001570  62 6f 78 28 6d 61 69 6e  25 2c 32 38 2b 28 74 65  |box(main%,28+(te|
00001580  6d 70 5f 78 25 2a 73 63  61 6c 65 25 29 2f 32 35  |mp_x%*scale%)/25|
00001590  36 30 30 2c 31 3c 3c 33  31 2c 31 3c 3c 33 30 2c  |600,1<<31,1<<30,|
000015a0  31 3c 3c 33 30 29 0d 09  6a 10 f2 72 65 64 72 61  |1<<30)..j..redra|
000015b0  77 5f 6c 6f 6f 70 0d 09  74 0e f2 70 6f 73 74 5f  |w_loop..t..post_|
000015c0  6c 6f 6f 70 0d 09 7e 05  e1 0d 09 88 04 0d 09 92  |loop..~.........|
000015d0  1c dd 20 a4 66 6f 6e 74  5f 77 69 64 74 68 28 73  |.. .font_width(s|
000015e0  74 24 2c 6b 65 72 6e 25  29 0d 09 9c 0c ea 20 77  |t$,kern%)..... w|
000015f0  69 64 74 68 25 0d 09 a6  11 66 6c 61 67 73 25 3d  |idth%....flags%=|
00001600  28 31 3c 3c 38 29 0d 09  b0 22 e7 20 6b 65 72 6e  |(1<<8)...". kern|
00001610  25 20 8c 20 66 6c 61 67  73 25 3d 66 6c 61 67 73  |% . flags%=flags|
00001620  25 84 28 31 3c 3c 39 29  0d 09 ba 43 c8 99 22 46  |%.(1<<9)...C.."F|
00001630  6f 6e 74 5f 53 63 61 6e  53 74 72 69 6e 67 22 2c  |ont_ScanString",|
00001640  66 68 61 6e 64 6c 65 25  2c 73 74 24 2c 66 6c 61  |fhandle%,st$,fla|
00001650  67 73 25 2c 31 3c 3c 33  30 2c 31 3c 3c 33 30 20  |gs%,1<<30,1<<30 |
00001660  b8 20 2c 2c 2c 77 69 64  74 68 25 0d 09 c4 10 3d  |. ,,,width%....=|
00001670  77 69 64 74 68 25 2a 30  2e 36 34 0d 09 ce 04 0d  |width%*0.64.....|
00001680  09 d8 30 dd 20 a4 66 6f  6e 74 5f 68 61 6e 64 6c  |..0. .font_handl|
00001690  65 28 66 6f 6e 74 24 2c  68 65 69 67 68 74 25 2c  |e(font$,height%,|
000016a0  61 73 70 65 63 74 25 2c  73 63 61 6c 65 25 29 0d  |aspect%,scale%).|
000016b0  09 e2 0d ea 20 68 61 6e  64 6c 65 25 0d 09 ec 64  |.... handle%...d|
000016c0  c8 99 22 46 6f 6e 74 5f  46 69 6e 64 46 6f 6e 74  |.."Font_FindFont|
000016d0  22 2c 2c 66 6f 6e 74 24  2c 28 68 65 69 67 68 74  |",,font$,(height|
000016e0  25 2a 61 73 70 65 63 74  25 2a 31 36 2a 73 63 61  |%*aspect%*16*sca|
000016f0  6c 65 25 29 2f 31 30 30  30 30 2c 28 68 65 69 67  |le%)/10000,(heig|
00001700  68 74 25 2a 31 36 2a 73  63 61 6c 65 25 29 2f 31  |ht%*16*scale%)/1|
00001710  30 30 2c 30 2c 30 20 b8  20 68 61 6e 64 6c 65 25  |00,0,0 . handle%|
00001720  0d 09 f6 0c 3d 68 61 6e  64 6c 65 25 0d 0a 00 04  |....=handle%....|
00001730  0d 0a 0a 12 dd 20 f2 6d  65 6e 75 5f 73 65 6c 65  |..... .menu_sele|
00001740  63 74 0d 0a 14 13 c8 8e  20 6d 65 6e 75 5f 6f 70  |ct...... menu_op|
00001750  65 6e 25 20 ca 0d 0a 1e  25 20 20 c9 20 62 61 72  |en% ....%  . bar|
00001760  5f 6d 65 6e 75 25 20 3a  20 e7 20 21 71 25 3d 31  |_menu% : . !q%=1|
00001770  20 8c 20 65 78 69 74 25  3d b9 0d 0a 28 22 20 20  | . exit%=...("  |
00001780  c9 20 66 73 5f 6d 65 6e  75 25 20 3a 20 f2 66 73  |. fs_menu% : .fs|
00001790  5f 6d 65 6e 75 5f 73 65  6c 65 63 74 0d 0a 32 13  |_menu_select..2.|
000017a0  20 20 c9 20 73 63 61 6c  65 5f 6d 65 6e 75 25 0d  |  . scale_menu%.|
000017b0  0a 3c 14 20 20 20 20 6e  65 77 5f 73 63 61 6c 65  |.<.    new_scale|
000017c0  25 3d 30 0d 0a 46 10 20  20 20 20 c8 8e 20 21 71  |%=0..F.    .. !q|
000017d0  25 20 ca 0d 0a 50 23 20  20 20 20 20 20 c9 20 30  |% ...P#      . 0|
000017e0  20 3a 20 6e 65 77 5f 73  63 61 6c 65 25 3d 73 63  | : new_scale%=sc|
000017f0  61 6c 65 25 2a 32 0d 0a  5a 23 20 20 20 20 20 20  |ale%*2..Z#      |
00001800  c9 20 31 20 3a 20 6e 65  77 5f 73 63 61 6c 65 25  |. 1 : new_scale%|
00001810  3d 73 63 61 6c 65 25 2f  32 0d 0a 64 1e 20 20 20  |=scale%/2..d.   |
00001820  20 20 20 c9 20 32 20 3a  20 6e 65 77 5f 73 63 61  |   . 2 : new_sca|
00001830  6c 65 25 3d 31 30 30 0d  0a 6e 1d 20 20 20 20 20  |le%=100..n.     |
00001840  20 c9 20 33 20 3a 20 6e  65 77 5f 73 63 61 6c 65  | . 3 : new_scale|
00001850  25 3d 35 30 0d 0a 78 1e  20 20 20 20 20 20 c9 20  |%=50..x.      . |
00001860  34 20 3a 20 6e 65 77 5f  73 63 61 6c 65 25 3d 32  |4 : new_scale%=2|
00001870  30 30 0d 0a 82 2a 20 20  20 20 20 20 c9 20 35 20  |00...*      . 5 |
00001880  3a 20 6e 65 77 5f 73 63  61 6c 65 25 3d bb 28 24  |: new_scale%=.($|
00001890  73 63 61 6c 65 5f 74 65  78 74 25 29 0d 0a 8c 09  |scale_text%)....|
000018a0  20 20 20 20 cb 0d 0a 96  32 20 20 20 20 e7 20 6e  |    ....2    . n|
000018b0  65 77 5f 73 63 61 6c 65  25 20 8c 20 f2 6d 61 69  |ew_scale% . .mai|
000018c0  6e 5f 73 65 74 5f 73 63  61 6c 65 28 6e 65 77 5f  |n_set_scale(new_|
000018d0  73 63 61 6c 65 25 29 0d  0a a0 05 cb 0d 0a aa 05  |scale%).........|
000018e0  e1 0d 0a b4 04 0d 0a be  1e dd 20 f2 6d 65 73 73  |.......... .mess|
000018f0  61 67 65 5f 72 65 74 75  72 6e 65 64 28 74 79 70  |age_returned(typ|
00001900  65 25 29 0d 0a c8 0e c8  8e 20 74 79 70 65 25 20  |e%)...... type% |
00001910  ca 0d 0a d2 09 20 20 c9  20 37 0d 0a dc 13 20 20  |.....  . 7....  |
00001920  20 20 f2 6d 65 6e 75 5f  63 6c 6f 73 65 0d 0a e6  |  .menu_close...|
00001930  25 20 20 20 20 f2 68 65  61 70 5f 6c 6f 73 65 5f  |%    .heap_lose_|
00001940  62 6c 6f 63 6b 28 66 69  6c 65 5f 62 6c 6f 63 6b  |block(file_block|
00001950  25 29 0d 0a f0 05 cb 0d  0a fa 05 cb 0d 0b 04 04  |%)..............|
00001960  0d 0b 0e 20 dd 20 f2 6d  65 73 73 61 67 65 28 74  |... . .message(t|
00001970  79 70 65 25 2c 74 61 73  6b 25 2c 72 65 66 25 29  |ype%,task%,ref%)|
00001980  0d 0b 18 0e c8 8e 20 74  79 70 65 25 20 ca 0d 0b  |...... type% ...|
00001990  22 13 20 20 c9 20 30 20  3a 20 65 78 69 74 25 3d  |".  . 0 : exit%=|
000019a0  b9 0d 0b 2c 26 20 20 c9  20 32 20 3a 20 f2 66 69  |...,&  . 2 : .fi|
000019b0  6c 65 5f 73 61 76 65 28  a4 73 74 72 69 6e 67 28  |le_save(.string(|
000019c0  71 25 2b 34 34 29 29 0d  0b 36 1b 20 20 c9 20 36  |q%+44))..6.  . 6|
000019d0  20 3a 20 f2 66 69 6c 65  5f 6f 75 74 5f 74 72 61  | : .file_out_tra|
000019e0  6e 73 0d 0b 40 24 20 20  c9 20 26 35 30 32 20 3a  |ns..@$  . &502 :|
000019f0  20 f2 64 6f 5f 68 65 6c  70 28 71 25 21 33 32 2c  | .do_help(q%!32,|
00001a00  71 25 21 33 36 29 0d 0b  4a 05 cb 0d 0b 54 05 e1  |q%!36)..J....T..|
00001a10  0d 0b 5e 04 0d 0b 68 1f  dd 20 f2 6d 65 73 73 61  |..^...h.. .messa|
00001a20  67 65 5f 72 65 70 6c 79  28 6d 6e 25 2c 71 25 21  |ge_reply(mn%,q%!|
00001a30  31 36 29 0d 0b 72 0e 71  25 21 31 32 3d 72 65 66  |16)..r.q%!12=ref|
00001a40  25 0d 0b 7c 25 c8 99 22  57 69 6d 70 5f 53 65 6e  |%..|%.."Wimp_Sen|
00001a50  64 4d 65 73 73 61 67 65  22 2c 6d 6e 25 2c 71 25  |dMessage",mn%,q%|
00001a60  2c 74 61 73 6b 25 0d 0b  86 05 e1 0d 0b 90 04 0d  |,task%..........|
00001a70  0b 9a 17 dd 20 a4 66 69  6c 65 5f 6c 65 61 66 28  |.... .file_leaf(|
00001a80  6e 61 6d 65 24 29 0d 0b  a4 12 c8 95 20 a7 6e 61  |name$)...... .na|
00001a90  6d 65 24 2c 22 2e 22 29  0d 0b ae 21 20 20 6e 61  |me$,".")...!  na|
00001aa0  6d 65 24 3d c1 6e 61 6d  65 24 2c a7 6e 61 6d 65  |me$=.name$,.name|
00001ab0  24 2c 22 2e 22 29 2b 31  29 0d 0b b8 05 ce 0d 0b  |$,".")+1).......|
00001ac0  c2 0a 3d 6e 61 6d 65 24  0d 0b cc 04 0d 0b d6 15  |..=name$........|
00001ad0  dd 20 f2 66 69 6c 65 5f  6f 75 74 5f 74 72 61 6e  |. .file_out_tran|
00001ae0  73 0d 0b e0 2b e7 20 6f  74 72 61 6e 73 25 3d 30  |s...+. otrans%=0|
00001af0  20 8c 20 66 69 6c 65 5f  62 6c 6f 63 6b 25 3d a4  | . file_block%=.|
00001b00  66 69 6c 65 5f 70 72 65  70 61 72 65 0d 0b ea 13  |file_prepare....|
00001b10  e7 20 66 69 6c 65 5f 62  6c 6f 63 6b 25 20 8c 0d  |. file_block% ..|
00001b20  0b f4 1e 20 20 74 6f 67  6f 25 3d 66 69 6c 65 5f  |...  togo%=file_|
00001b30  73 69 7a 65 25 2d 6f 74  72 61 6e 73 25 0d 0b fe  |size%-otrans%...|
00001b40  21 20 20 e7 20 74 6f 67  6f 25 3e 71 25 21 32 34  |!  . togo%>q%!24|
00001b50  20 8c 20 74 6f 67 6f 25  3d 71 25 21 32 34 0d 0c  | . togo%=q%!24..|
00001b60  08 33 20 20 e7 20 74 6f  67 6f 25 2b 6f 74 72 61  |.3  . togo%+otra|
00001b70  6e 73 25 3e 66 69 6c 65  5f 73 69 7a 65 25 20 8c  |ns%>file_size% .|
00001b80  20 74 6f 67 6f 25 3d 66  69 6c 65 5f 73 69 7a 65  | togo%=file_size|
00001b90  25 0d 0c 12 4b 20 20 c8  99 22 57 69 6d 70 5f 54  |%...K  .."Wimp_T|
00001ba0  72 61 6e 73 66 65 72 42  6c 6f 63 6b 22 2c 6d 79  |ransferBlock",my|
00001bb0  5f 74 61 73 6b 25 2c 66  69 6c 65 5f 62 6c 6f 63  |_task%,file_bloc|
00001bc0  6b 25 2b 6f 74 72 61 6e  73 25 2c 74 61 73 6b 25  |k%+otrans%,task%|
00001bd0  2c 71 25 21 32 30 2c 74  6f 67 6f 25 0d 0c 1c 11  |,q%!20,togo%....|
00001be0  20 20 71 25 21 32 34 3d  74 6f 67 6f 25 0d 0c 26  |  q%!24=togo%..&|
00001bf0  1a 20 20 f2 6d 65 73 73  61 67 65 5f 72 65 70 6c  |.  .message_repl|
00001c00  79 28 31 38 2c 37 29 0d  0c 30 14 20 20 6f 74 72  |y(18,7)..0.  otr|
00001c10  61 6e 73 25 2b 3d 74 6f  67 6f 25 0d 0c 3a 1c 20  |ans%+=togo%..:. |
00001c20  20 e7 20 6f 74 72 61 6e  73 25 3d 66 69 6c 65 5f  | . otrans%=file_|
00001c30  73 69 7a 65 25 20 8c 0d  0c 44 25 20 20 20 20 f2  |size% ...D%    .|
00001c40  68 65 61 70 5f 6c 6f 73  65 5f 62 6c 6f 63 6b 28  |heap_lose_block(|
00001c50  66 69 6c 65 5f 62 6c 6f  63 6b 25 29 0d 0c 4e 13  |file_block%)..N.|
00001c60  20 20 20 20 f2 6d 65 6e  75 5f 63 6c 6f 73 65 0d  |    .menu_close.|
00001c70  0c 58 07 20 20 cd 0d 0c  62 05 cd 0d 0c 6c 05 e1  |.X.  ...b....l..|
00001c80  0d 0c 76 04 0d 0c 80 33  dd 20 a4 66 69 6c 65 5f  |..v....3. .file_|
00001c90  73 61 76 65 5f 62 6c 6f  63 6b 28 6e 61 6d 65 24  |save_block(name$|
00001ca0  2c 70 6f 73 25 2c 73 69  7a 65 25 2c 66 69 6c 65  |,pos%,size%,file|
00001cb0  5f 74 79 70 65 25 29 0d  0c 8a 10 ea 20 6f 6b 25  |_type%)..... ok%|
00001cc0  2c 65 72 72 6f 72 25 0d  0c 94 42 c8 99 22 58 4f  |,error%...B.."XO|
00001cd0  53 5f 46 69 6c 65 22 2c  31 30 2c 6e 61 6d 65 24  |S_File",10,name$|
00001ce0  2c 66 69 6c 65 5f 74 79  70 65 25 2c 2c 70 6f 73  |,file_type%,,pos|
00001cf0  25 2c 70 6f 73 25 2b 73  69 7a 65 25 20 b8 20 65  |%,pos%+size% . e|
00001d00  72 72 6f 72 25 3b 6f 6b  25 0d 0c 9e 13 6f 6b 25  |rror%;ok%....ok%|
00001d10  3d 28 28 6f 6b 25 80 31  29 3d 30 29 0d 0c a8 40  |=((ok%.1)=0)...@|
00001d20  e7 20 ac 6f 6b 25 20 8c  20 f2 65 72 72 6f 72 5f  |. .ok% . .error_|
00001d30  72 65 70 6f 72 74 28 a4  6d 65 73 73 30 28 22 73  |report(.mess0("s|
00001d40  61 76 65 5f 62 61 64 22  2c a4 73 74 72 69 6e 67  |ave_bad",.string|
00001d50  28 65 72 72 6f 72 25 2b  34 29 29 29 0d 0c b2 08  |(error%+4)))....|
00001d60  3d 6f 6b 25 0d 0c bc 04  0d 0c c6 13 dd 20 a4 66  |=ok%......... .f|
00001d70  69 6c 65 5f 70 72 65 70  61 72 65 0d 0c d0 11 ea  |ile_prepare.....|
00001d80  20 64 72 61 77 5f 62 6c  6f 63 6b 25 0d 0c da 17  | draw_block%....|
00001d90  e7 20 a9 6d 61 69 6e 5f  73 74 72 69 6e 67 24 3e  |. .main_string$>|
00001da0  30 20 8c 0d 0c e4 2b 20  20 f2 64 72 61 77 5f 68  |0 ....+  .draw_h|
00001db0  65 61 64 65 72 28 22 57  61 6e 6e 61 4b 65 72 6e  |eader("WannaKern|
00001dc0  22 2c 32 35 36 30 30 2c  32 35 36 30 30 29 0d 0c  |",25600,25600)..|
00001dd0  ee 1b 20 20 f2 64 72 61  77 5f 73 74 61 72 74 5f  |..  .draw_start_|
00001de0  66 6f 6e 74 74 61 62 6c  65 0d 0c f8 1c 20 20 f2  |fonttable....  .|
00001df0  64 72 61 77 5f 61 64 64  5f 66 6f 6e 74 28 66 6e  |draw_add_font(fn|
00001e00  61 6d 65 24 29 0d 0d 02  19 20 20 f2 64 72 61 77  |ame$)....  .draw|
00001e10  5f 65 6e 64 5f 66 6f 6e  74 74 61 62 6c 65 0d 0d  |_end_fonttable..|
00001e20  0c 17 20 20 f2 64 72 61  77 5f 73 74 61 72 74 5f  |..  .draw_start_|
00001e30  67 72 6f 75 70 0d 0d 16  1c 20 20 e3 20 61 25 3d  |group....  . a%=|
00001e40  31 20 b8 20 a9 6d 61 69  6e 5f 73 74 72 69 6e 67  |1 . .main_string|
00001e50  24 0d 0d 20 4b 20 20 20  20 f2 64 72 61 77 5f 74  |$.. K    .draw_t|
00001e60  65 78 74 28 c1 6d 61 69  6e 5f 73 74 72 69 6e 67  |ext(.main_string|
00001e70  24 2c 61 25 2c 31 29 2c  31 2c 66 68 65 69 67 68  |$,a%,1),1,fheigh|
00001e80  74 25 2c 66 61 73 70 65  63 74 25 2c 63 68 61 72  |t%,faspect%,char|
00001e90  5f 78 25 28 61 25 29 2c  30 2c 30 29 0d 0d 2a 0a  |_x%(a%),0,0)..*.|
00001ea0  20 20 ed 20 61 25 0d 0d  34 15 20 20 f2 64 72 61  |  . a%..4.  .dra|
00001eb0  77 5f 65 6e 64 5f 67 72  6f 75 70 0d 0d 3e 0f 20  |w_end_group..>. |
00001ec0  20 f2 64 72 61 77 5f 65  6e 64 0d 0d 48 1b 20 20  | .draw_end..H.  |
00001ed0  66 69 6c 65 5f 73 69 7a  65 25 3d 64 72 61 77 5f  |file_size%=draw_|
00001ee0  73 69 7a 65 25 0d 0d 52  05 cd 0d 0d 5c 30 e7 20  |size%..R....\0. |
00001ef0  64 72 61 77 5f 62 6c 6f  63 6b 25 3d 30 20 8c 20  |draw_block%=0 . |
00001f00  f2 65 72 72 6f 72 5f 6d  65 73 73 61 67 65 28 22  |.error_message("|
00001f10  44 72 61 77 5f 42 61 64  22 29 0d 0d 66 10 3d 64  |Draw_Bad")..f.=d|
00001f20  72 61 77 5f 62 6c 6f 63  6b 25 0d 0d 70 04 0d 0d  |raw_block%..p...|
00001f30  7a 1a dd 20 a4 66 69 6c  65 5f 6e 61 6d 65 5f 6f  |z.. .file_name_o|
00001f40  6b 28 6e 61 6d 65 24 29  0d 0d 84 09 ea 20 6f 6b  |k(name$)..... ok|
00001f50  25 0d 0d 8e 09 6f 6b 25  3d b9 0d 0d 98 25 e7 20  |%....ok%=....%. |
00001f60  a7 6e 61 6d 65 24 2c 22  3a 22 29 3d 30 20 80 20  |.name$,":")=0 . |
00001f70  a7 6e 61 6d 65 24 2c 22  3c 22 29 3d 30 20 8c 0d  |.name$,"<")=0 ..|
00001f80  0d a2 0b 20 20 6f 6b 25  3d a3 0d 0d ac 24 20 20  |...  ok%=....$  |
00001f90  f2 65 72 72 6f 72 5f 6d  65 73 73 61 67 65 28 22  |.error_message("|
00001fa0  73 61 76 65 5f 62 61 64  6e 61 6d 65 22 29 0d 0d  |save_badname")..|
00001fb0  b6 05 cd 0d 0d c0 08 3d  6f 6b 25 0d 0d ca 04 0d  |.......=ok%.....|
00001fc0  0d d4 17 dd 20 f2 66 69  6c 65 5f 73 61 76 65 28  |.... .file_save(|
00001fd0  6e 61 6d 65 24 29 0d 0d  de 09 ea 20 6f 6b 25 0d  |name$)..... ok%.|
00001fe0  0d e8 1c 6f 6b 25 3d a4  66 69 6c 65 5f 6e 61 6d  |...ok%=.file_nam|
00001ff0  65 5f 6f 6b 28 6e 61 6d  65 24 29 0d 0d f2 0b e7  |e_ok(name$).....|
00002000  20 6f 6b 25 20 8c 0d 0d  fc 1f 20 20 66 69 6c 65  | ok% .....  file|
00002010  5f 62 6c 6f 63 6b 25 3d  a4 66 69 6c 65 5f 70 72  |_block%=.file_pr|
00002020  65 70 61 72 65 0d 0e 06  15 20 20 e7 20 66 69 6c  |epare....  . fil|
00002030  65 5f 62 6c 6f 63 6b 25  20 8c 0d 0e 10 80 20 20  |e_block% .....  |
00002040  20 20 e7 20 a4 66 69 6c  65 5f 73 61 76 65 5f 62  |  . .file_save_b|
00002050  6c 6f 63 6b 28 6e 61 6d  65 24 2c 66 69 6c 65 5f  |lock(name$,file_|
00002060  62 6c 6f 63 6b 25 2c 66  69 6c 65 5f 73 69 7a 65  |block%,file_size|
00002070  25 2c 66 69 6c 65 5f 74  79 70 65 25 29 20 8c 20  |%,file_type%) . |
00002080  f2 66 69 6c 65 5f 74 65  6c 6c 5f 74 6f 5f 6c 6f  |.file_tell_to_lo|
00002090  61 64 28 74 61 73 6b 25  2c 6e 61 6d 65 24 2c 66  |ad(task%,name$,f|
000020a0  69 6c 65 5f 74 79 70 65  25 2c 66 69 6c 65 5f 73  |ile_type%,file_s|
000020b0  69 7a 65 25 2c 72 65 66  25 29 0d 0e 1a 25 20 20  |ize%,ref%)...%  |
000020c0  20 20 f2 68 65 61 70 5f  6c 6f 73 65 5f 62 6c 6f  |  .heap_lose_blo|
000020d0  63 6b 28 66 69 6c 65 5f  62 6c 6f 63 6b 25 29 0d  |ck(file_block%).|
000020e0  0e 24 13 20 20 20 20 f2  6d 65 6e 75 5f 63 6c 6f  |.$.    .menu_clo|
000020f0  73 65 0d 0e 2e 07 20 20  cd 0d 0e 38 05 cd 0d 0e  |se....  ...8....|
00002100  42 05 e1 0d 0e 4c 04 0d  0e 56 36 dd 20 f2 66 69  |B....L...V6. .fi|
00002110  6c 65 5f 74 65 6c 6c 5f  74 6f 5f 6c 6f 61 64 28  |le_tell_to_load(|
00002120  74 61 73 6b 25 2c 6e 61  6d 65 24 2c 74 79 70 65  |task%,name$,type|
00002130  25 2c 73 69 7a 65 25 2c  72 65 66 25 29 0d 0e 60  |%,size%,ref%)..`|
00002140  0f f2 6d 6f 75 73 65 5f  69 6e 66 6f 0d 0e 6a 4a  |..mouse_info..jJ|
00002150  f2 6d 65 73 73 61 67 65  5f 73 65 6e 64 28 74 61  |.message_send(ta|
00002160  73 6b 25 2c 30 2c 31 37  2c 33 2c 72 65 66 25 2c  |sk%,0,17,3,ref%,|
00002170  77 69 6e 64 25 2c 69 63  6f 6e 25 2c 6d 78 25 2c  |wind%,icon%,mx%,|
00002180  6d 79 25 2c 73 69 7a 65  25 2c 74 79 70 65 25 2c  |my%,size%,type%,|
00002190  6e 61 6d 65 24 29 0d 0e  74 05 e1 0d 0e 7e 04 0d  |name$)..t....~..|
000021a0  0e 88 5a dd 20 f2 6d 65  73 73 61 67 65 5f 73 65  |..Z. .message_se|
000021b0  6e 64 28 74 61 73 6b 25  2c 69 63 6f 6e 25 2c 6d  |nd(task%,icon%,m|
000021c0  6e 25 2c 71 25 21 31 36  2c 71 25 21 31 32 2c 71  |n%,q%!16,q%!12,q|
000021d0  25 21 32 30 2c 71 25 21  32 34 2c 71 25 21 32 38  |%!20,q%!24,q%!28|
000021e0  2c 71 25 21 33 32 2c 71  25 21 33 36 2c 71 25 21  |,q%!32,q%!36,q%!|
000021f0  34 30 2c 6e 61 6d 65 24  29 0d 0e 92 23 f2 70 6c  |40,name$)...#.pl|
00002200  61 63 65 5f 6e 75 6c 6c  5f 73 74 72 69 6e 67 28  |ace_null_string(|
00002210  6e 61 6d 65 24 2c 71 25  2b 34 34 29 0d 0e 9c 16  |name$,q%+44)....|
00002220  21 71 25 3d 28 34 38 2b  a9 6e 61 6d 65 24 29 80  |!q%=(48+.name$).|
00002230  ac 33 0d 0e a6 2b c8 99  22 57 69 6d 70 5f 53 65  |.3...+.."Wimp_Se|
00002240  6e 64 4d 65 73 73 61 67  65 22 2c 6d 6e 25 2c 71  |ndMessage",mn%,q|
00002250  25 2c 74 61 73 6b 25 2c  69 63 6f 6e 25 0d 0e b0  |%,task%,icon%...|
00002260  05 e1 0d 0e ba 04 0d 0e  c4 25 dd 20 f2 66 69 6c  |.........%. .fil|
00002270  65 5f 64 72 6f 70 28 6c  65 61 66 24 2c 66 74 79  |e_drop(leaf$,fty|
00002280  70 65 25 2c 66 73 69 7a  65 25 29 0d 0e ce 15 66  |pe%,fsize%)....f|
00002290  69 6c 65 5f 73 69 7a 65  25 3d 66 73 69 7a 65 25  |ile_size%=fsize%|
000022a0  0d 0e d8 15 66 69 6c 65  5f 74 79 70 65 25 3d 66  |....file_type%=f|
000022b0  74 79 70 65 25 0d 0e e2  0f f2 6d 6f 75 73 65 5f  |type%.....mouse_|
000022c0  69 6e 66 6f 0d 0e ec 55  f2 6d 65 73 73 61 67 65  |info...U.message|
000022d0  5f 73 65 6e 64 28 77 69  6e 64 25 2c 69 63 6f 6e  |_send(wind%,icon|
000022e0  25 2c 31 37 2c 31 2c 30  2c 77 69 6e 64 25 2c 69  |%,17,1,0,wind%,i|
000022f0  63 6f 6e 25 2c 6d 78 25  2c 6d 79 25 2c 66 69 6c  |con%,mx%,my%,fil|
00002300  65 5f 73 69 7a 65 25 2c  66 69 6c 65 5f 74 79 70  |e_size%,file_typ|
00002310  65 25 2c 6c 65 61 66 24  29 0d 0e f6 0d 6f 74 72  |e%,leaf$)....otr|
00002320  61 6e 73 25 3d 30 0d 0f  00 05 e1 0d 0f 0a 04 0d  |ans%=0..........|
00002330  0f 14 17 dd 20 f2 77 69  6d 70 5f 69 6e 69 74 28  |.... .wimp_init(|
00002340  6e 61 6d 65 24 29 0d 0f  1e 04 0d 0f 28 1d 6d 79  |name$)......(.my|
00002350  5f 64 69 72 24 3d 22 3c  22 2b 6e 61 6d 65 24 2b  |_dir$="<"+name$+|
00002360  22 24 44 69 72 3e 22 0d  0f 32 04 0d 0f 3c 23 f2  |"$Dir>"..2...<#.|
00002370  6d 65 73 73 5f 6c 6f 61  64 28 6d 79 5f 64 69 72  |mess_load(my_dir|
00002380  24 2b 22 2e 4d 65 73 73  61 67 65 73 22 29 0d 0f  |$+".Messages")..|
00002390  46 04 0d 0f 50 19 6d 79  5f 6e 61 6d 65 24 3d a4  |F...P.my_name$=.|
000023a0  6d 65 73 73 28 22 50 47  4e 22 29 0d 0f 5a 04 0d  |mess("PGN")..Z..|
000023b0  0f 64 17 de 20 6d 65 73  73 61 67 65 5f 62 6c 6f  |.d.. message_blo|
000023c0  63 6b 25 20 31 36 0d 0f  6e 15 21 6d 65 73 73 61  |ck% 16..n.!messa|
000023d0  67 65 5f 62 6c 6f 63 6b  25 3d 32 0d 0f 78 16 6d  |ge_block%=2..x.m|
000023e0  65 73 73 61 67 65 5f 62  6c 6f 63 6b 25 21 34 3d  |essage_block%!4=|
000023f0  36 0d 0f 82 19 6d 65 73  73 61 67 65 5f 62 6c 6f  |6....message_blo|
00002400  63 6b 25 21 38 3d 26 35  30 32 0d 0f 8c 17 6d 65  |ck%!8=&502....me|
00002410  73 73 61 67 65 5f 62 6c  6f 63 6b 25 21 31 32 3d  |ssage_block%!12=|
00002420  30 0d 0f 96 3c f4 20 54  65 6c 6c 20 74 68 65 20  |0...<. Tell the |
00002430  57 69 6d 70 20 6f 6e 6c  79 20 74 6f 20 62 6f 74  |Wimp only to bot|
00002440  68 65 72 20 6d 65 20 77  69 74 68 20 74 68 65 73  |her me with thes|
00002450  65 20 33 20 6d 65 73 73  61 67 65 73 2e 0d 0f a0  |e 3 messages....|
00002460  04 0d 0f aa 49 c8 99 22  57 69 6d 70 5f 49 6e 69  |....I.."Wimp_Ini|
00002470  74 69 61 6c 69 73 65 22  2c 33 31 30 2c 26 34 42  |tialise",310,&4B|
00002480  35 33 34 31 35 34 2c 6d  79 5f 6e 61 6d 65 24 2c  |534154,my_name$,|
00002490  6d 65 73 73 61 67 65 5f  62 6c 6f 63 6b 25 20 b8  |message_block% .|
000024a0  20 2c 6d 79 5f 74 61 73  6b 25 0d 0f b4 04 0d 0f  | ,my_task%......|
000024b0  be 2c ee 20 85 20 f2 65  72 72 6f 72 5f 72 65 70  |.,. . .error_rep|
000024c0  6f 72 74 28 f6 24 2b 22  20 61 74 20 6c 69 6e 65  |ort(.$+" at line|
000024d0  20 22 2b c3 28 9e 29 29  3a e0 0d 0f c8 04 0d 0f  | "+.(.)):.......|
000024e0  d2 0e f2 68 65 61 70 5f  69 6e 69 74 0d 0f dc 0e  |...heap_init....|
000024f0  f2 64 72 61 77 5f 69 6e  69 74 0d 0f e6 11 69 6e  |.draw_init....in|
00002500  64 73 69 7a 65 25 3d 34  30 30 30 0d 0f f0 37 de  |dsize%=4000...7.|
00002510  20 71 25 20 32 30 30 30  2c 20 71 32 25 20 32 35  | q% 2000, q2% 25|
00002520  36 2c 20 69 6e 64 25 20  69 6e 64 73 69 7a 65 25  |6, ind% indsize%|
00002530  2c 20 6d 65 6e 75 5f 62  6c 6f 63 6b 25 20 32 30  |, menu_block% 20|
00002540  30 30 0d 0f fa 19 69 6e  64 65 6e 64 25 3d 69 6e  |00....indend%=in|
00002550  64 25 2b 69 6e 64 73 69  7a 65 25 0d 10 04 40 f4  |d%+indsize%...@.|
00002560  20 73 65 74 20 75 70 20  67 65 6e 65 72 61 6c 20  | set up general |
00002570  62 6c 6f 63 6b 2c 20 69  6e 64 69 72 65 63 74 65  |block, indirecte|
00002580  64 20 69 63 6f 6e 20 62  6c 6f 63 6b 20 61 6e 64  |d icon block and|
00002590  20 6d 65 6e 75 20 62 6c  6f 63 6b 0d 10 0e 04 0d  | menu block.....|
000025a0  10 18 3d c8 99 22 58 4f  53 5f 53 57 49 4e 75 6d  |..=.."XOS_SWINum|
000025b0  62 65 72 46 72 6f 6d 53  74 72 69 6e 67 22 2c 2c  |berFromString",,|
000025c0  22 44 72 61 67 41 53 70  72 69 74 65 5f 53 74 61  |"DragASprite_Sta|
000025d0  72 74 22 20 b8 20 3b 64  72 61 67 25 0d 10 22 17  |rt" . ;drag%..".|
000025e0  64 72 61 67 25 3d 28 64  72 61 67 25 20 80 20 31  |drag%=(drag% . 1|
000025f0  29 3d 30 0d 10 2c 1f c8  99 22 4f 53 5f 42 79 74  |)=0..,..."OS_Byt|
00002600  65 22 2c 31 36 31 2c 32  38 20 b8 20 2c 2c 62 69  |e",161,28 . ,,bi|
00002610  74 25 0d 10 36 1c e7 20  28 62 69 74 25 20 80 20  |t%..6.. (bit% . |
00002620  32 29 3d 30 20 8c 20 64  72 61 67 25 3d a3 0d 10  |2)=0 . drag%=...|
00002630  40 04 0d 10 4a 2f c8 99  22 57 69 6d 70 5f 4f 70  |@...J/.."Wimp_Op|
00002640  65 6e 54 65 6d 70 6c 61  74 65 22 2c 2c 6d 79 5f  |enTemplate",,my_|
00002650  64 69 72 24 2b 22 2e 54  65 6d 70 6c 61 74 65 73  |dir$+".Templates|
00002660  22 0d 10 54 22 69 6e 66  6f 25 3d a4 77 69 6e 64  |"..T"info%=.wind|
00002670  6f 77 5f 74 65 6d 70 6c  61 74 65 28 22 69 6e 66  |ow_template("inf|
00002680  6f 22 29 0d 10 5e 22 6d  61 69 6e 25 3d a4 77 69  |o")..^"main%=.wi|
00002690  6e 64 6f 77 5f 74 65 6d  70 6c 61 74 65 28 22 6d  |ndow_template("m|
000026a0  61 69 6e 22 29 0d 10 68  24 74 6f 6f 6c 73 25 3d  |ain")..h$tools%=|
000026b0  a4 77 69 6e 64 6f 77 5f  74 65 6d 70 6c 61 74 65  |.window_template|
000026c0  28 22 74 6f 6f 6c 73 22  29 0d 10 72 20 73 61 76  |("tools")..r sav|
000026d0  65 25 3d a4 77 69 6e 64  6f 77 5f 73 61 76 65 5f  |e%=.window_save_|
000026e0  62 6f 78 28 26 41 46 46  29 0d 10 7c 0c f2 66 73  |box(&AFF)..|..fs|
000026f0  5f 69 6e 69 74 0d 10 86  1a c8 99 22 57 69 6d 70  |_init......"Wimp|
00002700  5f 43 6c 6f 73 65 54 65  6d 70 6c 61 74 65 22 0d  |_CloseTemplate".|
00002710  10 90 04 0d 10 9a 37 6d  79 5f 69 63 6f 6e 25 3d  |......7my_icon%=|
00002720  a4 69 63 6f 6e 5f 63 72  65 61 74 65 28 2d 31 2c  |.icon_create(-1,|
00002730  30 2c 30 2c 36 38 2c 36  38 2c 26 32 30 30 32 2c  |0,0,68,68,&2002,|
00002740  22 21 22 2b 6e 61 6d 65  24 29 0d 10 a4 04 0d 10  |"!"+name$)......|
00002750  ae 23 62 61 72 5f 6d 65  6e 75 25 3d a4 73 74 61  |.#bar_menu%=.sta|
00002760  72 74 5f 6d 65 6e 75 28  6d 79 5f 6e 61 6d 65 24  |rt_menu(my_name$|
00002770  29 0d 10 b8 24 f2 6d 65  6e 75 5f 69 74 65 6d 28  |)...$.menu_item(|
00002780  a4 6d 65 73 73 28 22 49  42 4d 30 3a 22 29 2c 69  |.mess("IBM0:"),i|
00002790  6e 66 6f 25 29 0d 10 c2  20 f2 6d 65 6e 75 5f 69  |nfo%)... .menu_i|
000027a0  74 65 6d 28 a4 6d 65 73  73 28 22 49 42 4d 31 3a  |tem(.mess("IBM1:|
000027b0  22 29 2c 30 29 0d 10 cc  0d f2 6d 65 6e 75 5f 65  |"),0).....menu_e|
000027c0  6e 64 0d 10 d6 04 0d 10  e0 22 73 63 61 6c 65 5f  |nd......."scale_|
000027d0  74 65 78 74 25 3d a4 64  69 6d 5f 73 74 72 69 6e  |text%=.dim_strin|
000027e0  67 28 22 31 30 30 22 29  0d 10 ea 24 73 63 61 6c  |g("100")...$scal|
000027f0  65 5f 76 61 6c 69 64 25  3d a4 64 69 6d 5f 73 74  |e_valid%=.dim_st|
00002800  72 69 6e 67 28 22 41 30  2d 39 22 29 0d 10 f4 29  |ring("A0-9")...)|
00002810  73 63 61 6c 65 5f 6d 65  6e 75 25 3d a4 73 74 61  |scale_menu%=.sta|
00002820  72 74 5f 6d 65 6e 75 28  a4 6d 65 73 73 28 22 53  |rt_menu(.mess("S|
00002830  4d 54 22 29 29 0d 10 fe  1e f2 6d 65 6e 75 5f 69  |MT")).....menu_i|
00002840  74 65 6d 28 a4 6d 65 73  73 28 22 53 4d 30 22 29  |tem(.mess("SM0")|
00002850  2c 30 29 0d 11 08 1e f2  6d 65 6e 75 5f 69 74 65  |,0).....menu_ite|
00002860  6d 28 a4 6d 65 73 73 28  22 53 4d 31 22 29 2c 30  |m(.mess("SM1"),0|
00002870  29 0d 11 12 1b f2 6d 65  6e 75 5f 73 65 74 5f 6c  |).....menu_set_l|
00002880  61 73 74 5f 66 6c 61 67  73 28 32 29 0d 11 1c 18  |ast_flags(2)....|
00002890  f2 6d 65 6e 75 5f 69 74  65 6d 28 22 31 30 30 25  |.menu_item("100%|
000028a0  22 2c 30 29 0d 11 26 17  f2 6d 65 6e 75 5f 69 74  |",0)..&..menu_it|
000028b0  65 6d 28 22 35 30 25 22  2c 30 29 0d 11 30 18 f2  |em("50%",0)..0..|
000028c0  6d 65 6e 75 5f 69 74 65  6d 28 22 32 30 30 25 22  |menu_item("200%"|
000028d0  2c 30 29 0d 11 3a 2e f2  6d 65 6e 75 5f 69 6e 64  |,0)..:..menu_ind|
000028e0  5f 69 74 65 6d 28 73 63  61 6c 65 5f 74 65 78 74  |_item(scale_text|
000028f0  25 2c 73 63 61 6c 65 5f  76 61 6c 69 64 25 2c 34  |%,scale_valid%,4|
00002900  29 0d 11 44 1b f2 6d 65  6e 75 5f 73 65 74 5f 6c  |)..D..menu_set_l|
00002910  61 73 74 5f 66 6c 61 67  73 28 34 29 0d 11 4e 0d  |ast_flags(4)..N.|
00002920  f2 6d 65 6e 75 5f 65 6e  64 0d 11 58 04 0d 11 62  |.menu_end..X...b|
00002930  0f 64 72 61 67 67 69 6e  67 25 3d a3 0d 11 6c 04  |.dragging%=...l.|
00002940  0d 11 76 0b 65 78 69 74  25 3d a3 0d 11 80 04 0d  |..v.exit%=......|
00002950  11 8a 10 70 61 6e 65 25  3d 74 6f 6f 6c 73 25 0d  |...pane%=tools%.|
00002960  11 94 16 70 61 6e 65 5f  70 61 72 65 6e 74 25 3d  |...pane_parent%=|
00002970  6d 61 69 6e 25 0d 11 9e  17 f2 77 69 6e 64 6f 77  |main%.....window|
00002980  5f 69 6e 66 6f 28 70 61  6e 65 25 29 0d 11 a8 1a  |_info(pane%)....|
00002990  70 61 6e 65 5f 77 69 64  74 68 25 3d 71 25 21 31  |pane_width%=q%!1|
000029a0  32 2d 71 25 21 34 0d 11  b2 1b 70 61 6e 65 5f 68  |2-q%!4....pane_h|
000029b0  65 69 67 68 74 25 3d 71  25 21 31 36 2d 71 25 21  |eight%=q%!16-q%!|
000029c0  38 0d 11 bc 0f 70 61 6e  65 5f 70 6f 73 25 3d 30  |8....pane_pos%=0|
000029d0  0d 11 c6 04 0d 11 d0 0e  73 63 61 6c 65 25 3d 31  |........scale%=1|
000029e0  30 30 0d 11 da 27 61 75  74 6f 5f 6b 65 72 6e 25  |00...'auto_kern%|
000029f0  3d a4 69 63 6f 6e 5f 73  65 6c 65 63 74 65 64 28  |=.icon_selected(|
00002a00  74 6f 6f 6c 73 25 2c 36  29 0d 11 e4 12 67 6c 6f  |tools%,6)....glo|
00002a10  62 61 6c 5f 6b 65 72 6e  25 3d 30 0d 11 ee 13 6d  |bal_kern%=0....m|
00002a20  61 69 6e 5f 73 74 72 69  6e 67 24 3d 22 22 0d 11  |ain_string$=""..|
00002a30  f8 04 0d 12 02 18 66 6e  61 6d 65 24 3d a4 6d 65  |......fname$=.me|
00002a40  73 73 28 22 46 4f 4e 54  22 29 0d 12 0c 20 66 68  |ss("FONT")... fh|
00002a50  65 69 67 68 74 25 3d bb  28 a4 6d 65 73 73 28 22  |eight%=.(.mess("|
00002a60  46 4f 4e 54 48 47 54 22  29 29 0d 12 16 21 66 61  |FONTHGT"))...!fa|
00002a70  73 70 65 63 74 25 3d bb  28 a4 6d 65 73 73 28 22  |spect%=.(.mess("|
00002a80  46 4f 4e 54 41 53 50 54  22 29 29 0d 12 20 20 de  |FONTASPT"))..  .|
00002a90  20 6b 65 72 6e 25 28 32  2c 32 35 36 29 2c 20 63  | kern%(2,256), c|
00002aa0  68 61 72 5f 78 25 28 32  35 36 29 0d 12 2a 2d f2  |har_x%(256)..*-.|
00002ab0  69 63 6f 6e 5f 73 65 74  5f 74 65 78 74 28 74 6f  |icon_set_text(to|
00002ac0  6f 6c 73 25 2c 30 2c a4  6d 65 73 73 28 22 53 54  |ols%,0,.mess("ST|
00002ad0  44 54 45 58 54 22 29 29  0d 12 34 04 0d 12 3e 0b  |DTEXT"))..4...>.|
00002ae0  72 61 64 25 3d 31 32 0d  12 48 05 e1 0d 12 52 04  |rad%=12..H....R.|
00002af0  0d 12 5c 19 dd 20 f2 77  69 6e 64 6f 77 5f 72 65  |..\.. .window_re|
00002b00  64 72 61 77 28 21 71 25  29 0d 12 66 15 f2 77 69  |draw(!q%)..f..wi|
00002b10  6e 64 6f 77 5f 69 6e 66  6f 28 21 71 25 29 0d 12  |ndow_info(!q%)..|
00002b20  70 0d f2 70 72 65 5f 6c  6f 6f 70 0d 12 7a 25 c8  |p..pre_loop..z%.|
00002b30  99 22 57 69 6d 70 5f 52  65 64 72 61 77 57 69 6e  |."Wimp_RedrawWin|
00002b40  64 6f 77 22 2c 2c 71 25  20 b8 20 6d 6f 72 65 25  |dow",,q% . more%|
00002b50  0d 12 84 10 f2 72 65 64  72 61 77 5f 6c 6f 6f 70  |.....redraw_loop|
00002b60  0d 12 8e 0e f2 70 6f 73  74 5f 6c 6f 6f 70 0d 12  |.....post_loop..|
00002b70  98 05 e1 0d 12 a2 04 0d  12 ac 0f dd 20 f2 70 72  |............ .pr|
00002b80  65 5f 6c 6f 6f 70 0d 12  b6 0e 66 78 25 3d 77 78  |e_loop....fx%=wx|
00002b90  25 2b 33 32 0d 12 c0 34  66 79 25 3d 77 79 25 2d  |%+32...4fy%=wy%-|
00002ba0  28 70 61 6e 65 5f 68 65  69 67 68 74 25 2b 28 66  |(pane_height%+(f|
00002bb0  68 65 69 67 68 74 25 2a  32 2e 35 2a 73 63 61 6c  |height%*2.5*scal|
00002bc0  65 25 29 2f 31 30 30 29  0d 12 ca 3a 66 68 61 6e  |e%)/100)...:fhan|
00002bd0  64 6c 65 25 3d a4 66 6f  6e 74 5f 68 61 6e 64 6c  |dle%=.font_handl|
00002be0  65 28 66 6e 61 6d 65 24  2c 66 68 65 69 67 68 74  |e(fname$,fheight|
00002bf0  25 2c 66 61 73 70 65 63  74 25 2c 73 63 61 6c 65  |%,faspect%,scale|
00002c00  25 29 0d 12 d4 3a c8 99  22 43 6f 6c 6f 75 72 54  |%)...:.."ColourT|
00002c10  72 61 6e 73 5f 53 65 74  46 6f 6e 74 43 6f 6c 6f  |rans_SetFontColo|
00002c20  75 72 73 22 2c 66 68 61  6e 64 6c 65 25 2c 26 46  |urs",fhandle%,&F|
00002c30  46 46 46 46 46 30 30 2c  30 2c 31 34 0d 12 de 05  |FFFFF00,0,14....|
00002c40  e1 0d 12 e8 04 0d 12 f2  12 dd 20 f2 72 65 64 72  |.......... .redr|
00002c50  61 77 5f 6c 6f 6f 70 0d  12 fc 11 ea 20 63 25 2c  |aw_loop..... c%,|
00002c60  78 25 2c 66 25 2c 79 25  0d 13 06 14 66 25 3d 28  |x%,f%,y%....f%=(|
00002c70  31 3c 3c 34 29 84 28 31  3c 3c 38 29 0d 13 1a 0c  |1<<4).(1<<8)....|
00002c80  c8 95 20 6d 6f 72 65 25  0d 13 24 1a 20 20 c8 99  |.. more%..$.  ..|
00002c90  22 57 69 6d 70 5f 53 65  74 43 6f 6c 6f 75 72 22  |"Wimp_SetColour"|
00002ca0  2c 30 0d 13 2e 2f 20 20  c8 93 20 c8 90 20 71 25  |,0.../  .. .. q%|
00002cb0  21 32 38 2c 71 25 21 33  32 2c 71 25 21 33 36 2d  |!28,q%!32,q%!36-|
00002cc0  71 25 21 32 38 2c 71 25  21 34 30 2d 71 25 21 33  |q%!28,q%!40-q%!3|
00002cd0  32 0d 13 38 1b 20 20 c8  99 22 57 69 6d 70 5f 53  |2..8.  .."Wimp_S|
00002ce0  65 74 43 6f 6c 6f 75 72  22 2c 31 31 0d 13 42 1c  |etColour",11..B.|
00002cf0  20 20 e3 20 63 25 3d 31  20 b8 20 a9 6d 61 69 6e  |  . c%=1 . .main|
00002d00  5f 73 74 72 69 6e 67 24  0d 13 4c 29 20 20 20 20  |_string$..L)    |
00002d10  78 25 3d 66 78 25 2b 28  63 68 61 72 5f 78 25 28  |x%=fx%+(char_x%(|
00002d20  63 25 29 2a 73 63 61 6c  65 25 29 2f 32 35 36 30  |c%)*scale%)/2560|
00002d30  30 0d 13 56 38 20 20 20  20 78 31 25 3d 66 78 25  |0..V8    x1%=fx%|
00002d40  2b 28 28 63 68 61 72 5f  78 25 28 63 25 29 2b 6b  |+((char_x%(c%)+k|
00002d50  65 72 6e 25 28 30 2c 63  25 29 29 2a 73 63 61 6c  |ern%(0,c%))*scal|
00002d60  65 25 29 2f 32 35 36 30  30 0d 13 60 22 20 20 20  |e%)/25600..`"   |
00002d70  20 e7 20 78 31 25 3e 3d  71 25 21 32 38 20 80 20  | . x1%>=q%!28 . |
00002d80  78 25 3c 3d 71 25 21 33  36 20 8c 0d 13 6a 3f 20  |x%<=q%!36 ...j? |
00002d90  20 20 20 20 20 c8 99 22  46 6f 6e 74 5f 50 61 69  |     .."Font_Pai|
00002da0  6e 74 22 2c 66 68 61 6e  64 6c 65 25 2c c1 6d 61  |nt",fhandle%,.ma|
00002db0  69 6e 5f 73 74 72 69 6e  67 24 2c 63 25 2c 31 29  |in_string$,c%,1)|
00002dc0  2c 66 25 2c 78 25 2c 66  79 25 0d 13 74 12 20 20  |,f%,x%,fy%..t.  |
00002dd0  20 20 20 20 e7 20 63 25  3e 31 20 8c 0d 13 7e 26  |    . c%>1 ...~&|
00002de0  20 20 20 20 20 20 20 20  c8 8f 20 78 25 2b 72 61  |        .. x%+ra|
00002df0  64 25 2c 66 79 25 2d 72  61 64 25 2a 32 2c 72 61  |d%,fy%-rad%*2,ra|
00002e00  64 25 0d 13 88 22 20 20  20 20 20 20 20 20 86 20  |d%..."        . |
00002e10  78 25 2c 66 79 25 2c 78  25 2c 66 79 25 2d 72 61  |x%,fy%,x%,fy%-ra|
00002e20  64 25 2a 32 0d 13 92 0b  20 20 20 20 20 20 cd 0d  |d%*2....      ..|
00002e30  13 9c 09 20 20 20 20 cd  0d 13 a6 0a 20 20 ed 20  |...    .....  . |
00002e40  63 25 0d 13 b0 27 20 20  c8 99 22 57 69 6d 70 5f  |c%...'  .."Wimp_|
00002e50  47 65 74 52 65 63 74 61  6e 67 6c 65 22 2c 2c 71  |GetRectangle",,q|
00002e60  25 20 b8 20 6d 6f 72 65  25 0d 13 ba 05 ce 0d 13  |% . more%.......|
00002e70  c4 05 e1 0d 13 ce 04 0d  13 d8 10 dd 20 f2 70 6f  |............ .po|
00002e80  73 74 5f 6c 6f 6f 70 0d  13 e2 1e c8 99 22 46 6f  |st_loop......"Fo|
00002e90  6e 74 5f 4c 6f 73 65 46  6f 6e 74 22 2c 66 68 61  |nt_LoseFont",fha|
00002ea0  6e 64 6c 65 25 0d 13 ec  05 e1 0d 13 f6 04 0d 14  |ndle%...........|
00002eb0  00 29 dd 20 f2 66 73 5f  6e 65 77 73 74 79 6c 65  |.). .fs_newstyle|
00002ec0  28 6e 61 6d 65 24 2c 68  65 69 67 68 74 25 2c 61  |(name$,height%,a|
00002ed0  73 70 65 63 74 25 29 0d  14 0a 10 66 6e 61 6d 65  |spect%)....fname|
00002ee0  24 3d 6e 61 6d 65 24 0d  14 14 14 66 68 65 69 67  |$=name$....fheig|
00002ef0  68 74 25 3d 68 65 69 67  68 74 25 0d 14 1e 14 66  |ht%=height%....f|
00002f00  61 73 70 65 63 74 25 3d  61 73 70 65 63 74 25 0d  |aspect%=aspect%.|
00002f10  14 28 14 f2 6d 61 69 6e  5f 63 61 6c 63 5f 6b 65  |.(..main_calc_ke|
00002f20  72 6e 73 0d 14 32 11 f2  6d 61 69 6e 5f 63 61 6c  |rns..2..main_cal|
00002f30  63 28 31 29 0d 14 3c 05  e1 0d 14 46 04 0d 14 50  |c(1)..<....F...P|
00002f40  1b dd 20 f2 64 6f 5f 68  65 6c 70 28 77 69 6e 64  |.. .do_help(wind|
00002f50  25 2c 69 63 6f 6e 25 29  0d 14 5a 11 68 65 6c 70  |%,icon%)..Z.help|
00002f60  5f 77 69 6e 64 24 3d 22  22 0d 14 64 04 0d 14 6e  |_wind$=""..d...n|
00002f70  0e c8 8e 20 77 69 6e 64  25 20 ca 0d 14 78 21 20  |... wind% ...x! |
00002f80  20 c9 20 2d 32 20 3a 20  68 65 6c 70 5f 77 69 6e  | . -2 : help_win|
00002f90  64 24 3d 22 69 63 6f 6e  62 61 72 22 0d 14 82 21  |d$="iconbar"...!|
00002fa0  20 20 c9 20 69 6e 66 6f  25 20 3a 20 68 65 6c 70  |  . info% : help|
00002fb0  5f 77 69 6e 64 24 3d 22  69 6e 66 6f 22 0d 14 8c  |_wind$="info"...|
00002fc0  21 20 20 c9 20 6d 61 69  6e 25 20 3a 20 68 65 6c  |!  . main% : hel|
00002fd0  70 5f 77 69 6e 64 24 3d  22 6d 61 69 6e 22 0d 14  |p_wind$="main"..|
00002fe0  96 23 20 20 c9 20 74 6f  6f 6c 73 25 20 3a 20 68  |.#  . tools% : h|
00002ff0  65 6c 70 5f 77 69 6e 64  24 3d 22 74 6f 6f 6c 73  |elp_wind$="tools|
00003000  22 0d 14 a0 22 20 20 c9  20 66 73 5f 77 69 6e 64  |"..."  . fs_wind|
00003010  25 20 3a 20 68 65 6c 70  5f 77 69 6e 64 24 3d 22  |% : help_wind$="|
00003020  66 73 22 0d 14 aa 21 20  20 c9 20 73 61 76 65 25  |fs"...!  . save%|
00003030  20 3a 20 68 65 6c 70 5f  77 69 6e 64 24 3d 22 73  | : help_wind$="s|
00003040  61 76 65 22 0d 14 b4 05  7f 0d 14 be 2f 20 20 c8  |ave"......../  .|
00003050  99 22 57 69 6d 70 5f 47  65 74 4d 65 6e 75 53 74  |."Wimp_GetMenuSt|
00003060  61 74 65 22 2c 31 2c 71  25 2b 34 30 2c 77 69 6e  |ate",1,q%+40,win|
00003070  64 25 2c 69 63 6f 6e 25  0d 14 c8 15 20 20 c8 8e  |d%,icon%....  ..|
00003080  20 6d 65 6e 75 5f 6f 70  65 6e 25 20 ca 0d 14 d2  | menu_open% ....|
00003090  24 20 20 20 20 c9 20 62  61 72 5f 6d 65 6e 75 25  |$    . bar_menu%|
000030a0  20 3a 20 68 65 6c 70 5f  61 6c 74 24 3d 22 49 4d  | : help_alt$="IM|
000030b0  22 0d 14 dc 26 20 20 20  20 c9 20 73 63 61 6c 65  |"...&    . scale|
000030c0  5f 6d 65 6e 75 25 20 3a  20 68 65 6c 70 5f 61 6c  |_menu% : help_al|
000030d0  74 24 3d 22 53 4d 22 0d  14 e6 12 20 20 20 20 c9  |t$="SM"....    .|
000030e0  20 66 73 5f 6d 65 6e 75  25 0d 14 f0 18 20 20 20  | fs_menu%....   |
000030f0  20 20 20 c8 8e 20 66 73  5f 77 68 69 63 68 25 20  |   .. fs_which% |
00003100  ca 0d 14 fa 22 20 20 20  20 20 20 20 20 c9 20 30  |...."        . 0|
00003110  20 3a 20 68 65 6c 70 5f  61 6c 74 24 3d 22 66 73  | : help_alt$="fs|
00003120  6d 66 22 0d 15 04 22 20  20 20 20 20 20 20 20 c9  |mf"..."        .|
00003130  20 31 20 3a 20 68 65 6c  70 5f 61 6c 74 24 3d 22  | 1 : help_alt$="|
00003140  66 73 6d 77 22 0d 15 0e  22 20 20 20 20 20 20 20  |fsmw"..."       |
00003150  20 c9 20 32 20 3a 20 68  65 6c 70 5f 61 6c 74 24  | . 2 : help_alt$|
00003160  3d 22 66 73 6d 73 22 0d  15 18 0b 20 20 20 20 20  |="fsms"....     |
00003170  20 cb 0d 15 22 07 20 20  cb 0d 15 2c 24 20 20 68  | ...".  ...,$  h|
00003180  65 6c 70 5f 74 6f 6b 65  6e 24 3d 68 65 6c 70 5f  |elp_token$=help_|
00003190  61 6c 74 24 2b c3 28 71  25 21 34 30 29 0d 15 36  |alt$+.(q%!40)..6|
000031a0  05 cb 0d 15 40 04 0d 15  4a 16 e7 20 68 65 6c 70  |....@...J.. help|
000031b0  5f 77 69 6e 64 24 3c 3e  22 22 20 8c 0d 15 54 1a  |_wind$<>"" ...T.|
000031c0  20 20 68 65 6c 70 5f 61  6c 74 24 3d 68 65 6c 70  |  help_alt$=help|
000031d0  5f 77 69 6e 64 24 0d 15  5e 25 20 20 68 65 6c 70  |_wind$..^%  help|
000031e0  5f 74 6f 6b 65 6e 24 3d  68 65 6c 70 5f 77 69 6e  |_token$=help_win|
000031f0  64 24 2b c3 28 69 63 6f  6e 25 29 0d 15 68 05 cd  |d$+.(icon%)..h..|
00003200  0d 15 72 04 0d 15 7c 2b  68 65 6c 70 5f 73 74 72  |..r...|+help_str|
00003210  69 6e 67 24 3d a4 6d 65  73 73 28 22 68 65 6c 70  |ing$=.mess("help|
00003220  5f 22 2b 68 65 6c 70 5f  74 6f 6b 65 6e 24 29 0d  |_"+help_token$).|
00003230  15 86 3d e7 20 68 65 6c  70 5f 73 74 72 69 6e 67  |..=. help_string|
00003240  24 3d 22 22 20 8c 20 68  65 6c 70 5f 73 74 72 69  |$="" . help_stri|
00003250  6e 67 24 3d a4 6d 65 73  73 28 22 68 65 6c 70 5f  |ng$=.mess("help_|
00003260  22 2b 68 65 6c 70 5f 61  6c 74 24 29 0d 15 90 04  |"+help_alt$)....|
00003270  0d 15 9a 1c 24 28 71 25  2b 32 30 29 3d 68 65 6c  |....$(q%+20)=hel|
00003280  70 5f 73 74 72 69 6e 67  24 2b bd 30 0d 15 a4 1d  |p_string$+.0....|
00003290  21 71 25 3d 28 32 34 2b  a9 68 65 6c 70 5f 73 74  |!q%=(24+.help_st|
000032a0  72 69 6e 67 24 29 80 ac  33 0d 15 ae 1b f2 6d 65  |ring$)..3.....me|
000032b0  73 73 61 67 65 5f 72 65  70 6c 79 28 31 37 2c 26  |ssage_reply(17,&|
000032c0  35 30 33 29 0d 15 b8 05  e1 0d 15 c2 04 0d 15 cc  |503)............|
000032d0  3c dd 20 a4 69 63 6f 6e  5f 63 72 65 61 74 65 28  |<. .icon_create(|
000032e0  21 71 25 2c 71 25 21 34  2c 71 25 21 38 2c 71 25  |!q%,q%!4,q%!8,q%|
000032f0  21 31 32 2c 71 25 21 31  36 2c 71 25 21 32 30 2c  |!12,q%!16,q%!20,|
00003300  24 28 71 25 2b 32 34 29  29 0d 15 d6 0b ea 20 69  |$(q%+24))..... i|
00003310  63 6f 6e 25 0d 15 e0 23  c8 99 22 57 69 6d 70 5f  |con%...#.."Wimp_|
00003320  43 72 65 61 74 65 49 63  6f 6e 22 2c 2c 71 25 20  |CreateIcon",,q% |
00003330  b8 20 69 63 6f 6e 25 0d  15 ea 0a 3d 69 63 6f 6e  |. icon%....=icon|
00003340  25 0d 15 f4 04 0d 15 fe  1a dd 20 f2 69 63 6f 6e  |%......... .icon|
00003350  5f 69 6e 66 6f 28 21 71  25 2c 71 25 21 34 29 0d  |_info(!q%,q%!4).|
00003360  16 08 1d c8 99 22 57 69  6d 70 5f 47 65 74 49 63  |....."Wimp_GetIc|
00003370  6f 6e 53 74 61 74 65 22  2c 2c 71 25 0d 16 12 05  |onState",,q%....|
00003380  e1 0d 16 1c 04 0d 16 26  24 dd 20 f2 69 63 6f 6e  |.......&$. .icon|
00003390  5f 73 65 6c 65 63 74 28  21 71 25 2c 71 25 21 34  |_select(!q%,q%!4|
000033a0  2c 73 65 6c 65 63 74 25  29 0d 16 30 1d c8 99 22  |,select%)..0..."|
000033b0  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
000033c0  65 22 2c 2c 71 25 0d 16  3a 23 e7 20 73 65 6c 65  |e",,q%..:#. sele|
000033d0  63 74 25 20 8c 20 71 25  21 38 3d 31 3c 3c 32 31  |ct% . q%!8=1<<21|
000033e0  20 8b 20 71 25 21 38 3d  30 0d 16 44 0f 71 25 21  | . q%!8=0..D.q%!|
000033f0  31 32 3d 31 3c 3c 32 31  0d 16 4e 37 e7 20 28 71  |12=1<<21..N7. (q|
00003400  25 21 32 34 20 80 20 71  25 21 31 32 29 3c 3e 71  |%!24 . q%!12)<>q|
00003410  25 21 38 20 8c 20 c8 99  22 57 69 6d 70 5f 53 65  |%!8 . .."Wimp_Se|
00003420  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 71 25 0d  |tIconState",,q%.|
00003430  16 58 05 e1 0d 16 62 04  0d 16 6c 1e dd 20 a4 69  |.X....b...l.. .i|
00003440  63 6f 6e 5f 73 65 6c 65  63 74 65 64 28 21 71 25  |con_selected(!q%|
00003450  2c 71 25 21 34 29 0d 16  76 1d c8 99 22 57 69 6d  |,q%!4)..v..."Wim|
00003460  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
00003470  2c 71 25 0d 16 80 1a 3d  28 28 28 71 25 21 32 34  |,q%....=(((q%!24|
00003480  29 80 28 31 3c 3c 32 31  29 29 3e 30 29 0d 16 8a  |).(1<<21))>0)...|
00003490  04 0d 16 94 24 dd 20 f2  69 63 6f 6e 5f 73 65 74  |....$. .icon_set|
000034a0  5f 74 65 78 74 28 21 71  25 2c 71 25 21 34 2c 74  |_text(!q%,q%!4,t|
000034b0  65 78 74 24 29 0d 16 9e  1d c8 99 22 57 69 6d 70  |ext$)......"Wimp|
000034c0  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
000034d0  71 25 0d 16 a8 19 74 65  78 74 24 3d c0 74 65 78  |q%....text$=.tex|
000034e0  74 24 2c 71 25 21 33 36  2d 31 29 0d 16 b2 17 e7  |t$,q%!36-1).....|
000034f0  20 24 28 71 25 21 32 38  29 3c 3e 74 65 78 74 24  | $(q%!28)<>text$|
00003500  20 8c 0d 16 bc 12 24 28  71 25 21 32 38 29 3d 74  | .....$(q%!28)=t|
00003510  65 78 74 24 0d 16 c6 0a  71 25 21 38 3d 30 0d 16  |ext$....q%!8=0..|
00003520  d0 0b 71 25 21 31 32 3d  30 0d 16 da 1d c8 99 22  |..q%!12=0......"|
00003530  57 69 6d 70 5f 53 65 74  49 63 6f 6e 53 74 61 74  |Wimp_SetIconStat|
00003540  65 22 2c 2c 71 25 0d 16  e4 1a f2 63 61 72 65 74  |e",,q%.....caret|
00003550  5f 72 65 73 65 74 28 21  71 25 2c 71 25 21 34 29  |_reset(!q%,q%!4)|
00003560  0d 16 ee 05 cd 0d 16 f8  05 e1 0d 17 02 04 0d 17  |................|
00003570  0c 22 dd 20 f2 69 63 6f  6e 5f 73 65 74 5f 76 61  |.". .icon_set_va|
00003580  6c 28 21 71 25 2c 71 25  21 34 2c 76 61 6c 25 29  |l(!q%,q%!4,val%)|
00003590  0d 17 16 24 f2 69 63 6f  6e 5f 73 65 74 5f 74 65  |...$.icon_set_te|
000035a0  78 74 28 21 71 25 2c 71  25 21 34 2c c3 28 76 61  |xt(!q%,q%!4,.(va|
000035b0  6c 25 29 29 0d 17 20 05  e1 0d 17 2a 04 0d 17 34  |l%)).. ....*...4|
000035c0  19 dd 20 a4 69 63 6f 6e  5f 76 61 6c 28 21 71 25  |.. .icon_val(!q%|
000035d0  2c 71 25 21 34 29 0d 17  3e 1c 3d bb 28 a4 69 63  |,q%!4)..>.=.(.ic|
000035e0  6f 6e 5f 74 65 78 74 28  21 71 25 2c 71 25 21 34  |on_text(!q%,q%!4|
000035f0  29 29 0d 17 48 04 0d 17  52 1a dd 20 a4 69 63 6f  |))..H...R.. .ico|
00003600  6e 5f 74 65 78 74 28 21  71 25 2c 71 25 21 34 29  |n_text(!q%,q%!4)|
00003610  0d 17 5c 0b ea 20 74 65  78 74 24 0d 17 66 1d c8  |..\.. text$..f..|
00003620  99 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  |."Wimp_GetIconSt|
00003630  61 74 65 22 2c 2c 71 25  0d 17 70 36 e7 20 28 71  |ate",,q%..p6. (q|
00003640  25 21 32 34 29 80 28 31  3c 3c 38 29 20 8c 20 74  |%!24).(1<<8) . t|
00003650  65 78 74 24 3d 24 28 71  25 21 32 38 29 20 8b 20  |ext$=$(q%!28) . |
00003660  74 65 78 74 24 3d 24 28  71 25 2b 32 38 29 0d 17  |text$=$(q%+28)..|
00003670  7a 0a 3d 74 65 78 74 24  0d 17 84 04 0d 17 8e 24  |z.=text$.......$|
00003680  dd 20 f2 69 63 6f 6e 5f  73 65 74 5f 66 68 28 21  |. .icon_set_fh(!|
00003690  71 25 2c 71 25 21 34 2c  68 61 6e 64 6c 65 25 29  |q%,q%!4,handle%)|
000036a0  0d 17 98 1d 71 25 21 38  3d 28 31 3c 3c 36 29 84  |....q%!8=(1<<6).|
000036b0  28 68 61 6e 64 6c 65 25  3c 3c 32 34 29 0d 17 a2  |(handle%<<24)...|
000036c0  1a 71 25 21 31 32 3d 28  31 3c 3c 36 29 84 28 32  |.q%!12=(1<<6).(2|
000036d0  35 35 3c 3c 32 34 29 0d  17 ac 1d c8 99 22 57 69  |55<<24)......"Wi|
000036e0  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_SetIconState"|
000036f0  2c 2c 71 25 0d 17 b6 05  e1 0d 17 c0 04 0d 17 ca  |,,q%............|
00003700  1e dd 20 a4 69 63 6f 6e  5f 73 65 6c 65 63 74 65  |.. .icon_selecte|
00003710  64 28 21 71 25 2c 71 25  21 34 29 0d 17 d4 1d c8  |d(!q%,q%!4).....|
00003720  99 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  |."Wimp_GetIconSt|
00003730  61 74 65 22 2c 2c 71 25  0d 17 de 1a 3d 28 28 28  |ate",,q%....=(((|
00003740  71 25 21 32 34 29 80 28  31 3c 3c 32 31 29 29 3e  |q%!24).(1<<21))>|
00003750  30 29 0d 17 e8 04 0d 17  f2 24 dd 20 f2 69 63 6f  |0).......$. .ico|
00003760  6e 5f 73 65 6c 65 63 74  28 21 71 25 2c 71 25 21  |n_select(!q%,q%!|
00003770  34 2c 73 65 6c 65 63 74  25 29 0d 17 fc 1d c8 99  |4,select%)......|
00003780  22 57 69 6d 70 5f 47 65  74 49 63 6f 6e 53 74 61  |"Wimp_GetIconSta|
00003790  74 65 22 2c 2c 71 25 0d  18 06 23 e7 20 73 65 6c  |te",,q%...#. sel|
000037a0  65 63 74 25 20 8c 20 71  25 21 38 3d 31 3c 3c 32  |ect% . q%!8=1<<2|
000037b0  31 20 8b 20 71 25 21 38  3d 30 0d 18 10 0f 71 25  |1 . q%!8=0....q%|
000037c0  21 31 32 3d 31 3c 3c 32  31 0d 18 1a 37 e7 20 28  |!12=1<<21...7. (|
000037d0  71 25 21 32 34 20 80 20  71 25 21 31 32 29 3c 3e  |q%!24 . q%!12)<>|
000037e0  71 25 21 38 20 8c 20 c8  99 22 57 69 6d 70 5f 53  |q%!8 . .."Wimp_S|
000037f0  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 71 25  |etIconState",,q%|
00003800  0d 18 24 05 e1 0d 18 2e  04 0d 18 38 2d dd 20 a4  |..$........8-. .|
00003810  69 63 6f 6e 5f 75 70 64  6f 77 6e 28 64 65 63 25  |icon_updown(dec%|
00003820  2c 69 6e 63 25 2c 63 5f  69 63 6f 6e 25 2c 6c 62  |,inc%,c_icon%,lb|
00003830  25 2c 75 62 25 29 0d 18  42 0a ea 20 76 61 6c 25  |%,ub%)..B.. val%|
00003840  0d 18 4c 21 76 61 6c 25  3d a4 69 63 6f 6e 5f 76  |..L!val%=.icon_v|
00003850  61 6c 28 77 69 6e 64 25  2c 63 5f 69 63 6f 6e 25  |al(wind%,c_icon%|
00003860  29 0d 18 56 25 e7 20 69  63 6f 6e 25 3d 64 65 63  |)..V%. icon%=dec|
00003870  25 20 80 20 76 61 6c 25  3e 6c 62 25 20 8c 20 76  |% . val%>lb% . v|
00003880  61 6c 25 2d 3d 31 0d 18  60 25 e7 20 69 63 6f 6e  |al%-=1..`%. icon|
00003890  25 3d 69 6e 63 25 20 80  20 76 61 6c 25 3c 75 62  |%=inc% . val%<ub|
000038a0  25 20 8c 20 76 61 6c 25  2b 3d 31 0d 18 6a 25 f2  |% . val%+=1..j%.|
000038b0  69 63 6f 6e 5f 73 65 74  5f 76 61 6c 28 77 69 6e  |icon_set_val(win|
000038c0  64 25 2c 63 5f 69 63 6f  6e 25 2c 76 61 6c 25 29  |d%,c_icon%,val%)|
000038d0  0d 18 74 1f f2 63 61 72  65 74 5f 72 65 73 65 74  |..t..caret_reset|
000038e0  28 77 69 6e 64 25 2c 63  5f 69 63 6f 6e 25 29 0d  |(wind%,c_icon%).|
000038f0  18 7e 09 3d 76 61 6c 25  0d 18 88 04 0d 18 92 23  |.~.=val%.......#|
00003900  dd 20 f2 69 63 6f 6e 5f  73 74 61 72 74 5f 64 72  |. .icon_start_dr|
00003910  61 67 28 77 69 6e 64 25  2c 69 63 6f 6e 25 29 0d  |ag(wind%,icon%).|
00003920  18 9c 14 64 72 61 67 5f  77 69 6e 64 25 3d 77 69  |...drag_wind%=wi|
00003930  6e 64 25 0d 18 a6 14 64  72 61 67 5f 69 63 6f 6e  |nd%....drag_icon|
00003940  25 3d 69 63 6f 6e 25 0d  18 b0 17 f2 77 69 6e 64  |%=icon%.....wind|
00003950  6f 77 5f 69 6e 66 6f 28  77 69 6e 64 25 29 0d 18  |ow_info(wind%)..|
00003960  ba 1b f2 69 63 6f 6e 5f  69 6e 66 6f 28 77 69 6e  |...icon_info(win|
00003970  64 25 2c 69 63 6f 6e 25  29 0d 18 c4 09 21 71 25  |d%,icon%)....!q%|
00003980  3d 30 0d 18 ce 0a 71 25  21 34 3d 35 0d 18 d8 0d  |=0....q%!4=5....|
00003990  71 25 21 38 2b 3d 77 78  25 0d 18 e2 0e 71 25 21  |q%!8+=wx%....q%!|
000039a0  31 32 2b 3d 77 79 25 0d  18 ec 0e 71 25 21 31 36  |12+=wy%....q%!16|
000039b0  2b 3d 77 78 25 0d 18 f6  0e 71 25 21 32 30 2b 3d  |+=wx%....q%!20+=|
000039c0  77 79 25 0d 19 00 0f 71  25 21 32 34 3d 31 3c 3c  |wy%....q%!24=1<<|
000039d0  33 31 0d 19 0a 0f 71 25  21 32 38 3d 31 3c 3c 33  |31....q%!28=1<<3|
000039e0  31 0d 19 14 0f 71 25 21  33 32 3d 31 3c 3c 33 30  |1....q%!32=1<<30|
000039f0  0d 19 1e 0f 71 25 21 33  36 3d 31 3c 3c 33 30 0d  |....q%!36=1<<30.|
00003a00  19 28 0d e7 20 64 72 61  67 25 20 8c 0d 19 32 44  |.(.. drag% ...2D|
00003a10  20 20 c8 99 22 44 72 61  67 41 53 70 72 69 74 65  |  .."DragASprite|
00003a20  5f 53 74 61 72 74 22 2c  31 39 37 2c 31 2c a4 69  |_Start",197,1,.i|
00003a30  63 6f 6e 5f 74 65 78 74  28 77 69 6e 64 25 2c 69  |con_text(wind%,i|
00003a40  63 6f 6e 25 29 2c 71 25  2b 38 2c 71 25 2b 32 34  |con%),q%+8,q%+24|
00003a50  0d 19 3c 05 cc 0d 19 46  1a 20 20 c8 99 22 57 69  |..<....F.  .."Wi|
00003a60  6d 70 5f 44 72 61 67 42  6f 78 22 2c 2c 71 25 0d  |mp_DragBox",,q%.|
00003a70  19 50 05 cd 0d 19 5a 05  e1 0d 19 64 04 0d 19 6e  |.P....Z....d...n|
00003a80  26 dd 20 f2 63 61 72 65  74 5f 70 6c 61 63 65 28  |&. .caret_place(|
00003a90  77 69 6e 64 25 2c 69 63  6f 6e 25 2c 69 6e 64 65  |wind%,icon%,inde|
00003aa0  78 25 29 0d 19 78 0a ea  20 6c 65 6e 25 0d 19 82  |x%)..x.. len%...|
00003ab0  23 6c 65 6e 25 3d a9 28  a4 69 63 6f 6e 5f 74 65  |#len%=.(.icon_te|
00003ac0  78 74 28 77 69 6e 64 25  2c 69 63 6f 6e 25 29 29  |xt(wind%,icon%))|
00003ad0  0d 19 8c 1f e7 20 69 6e  64 65 78 25 3e 6c 65 6e  |..... index%>len|
00003ae0  25 20 8c 20 69 6e 64 65  78 25 3d 6c 65 6e 25 0d  |% . index%=len%.|
00003af0  19 96 35 c8 99 22 57 69  6d 70 5f 53 65 74 43 61  |..5.."Wimp_SetCa|
00003b00  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 77 69 6e  |retPosition",win|
00003b10  64 25 2c 69 63 6f 6e 25  2c 2c 2c 2d 31 2c 69 6e  |d%,icon%,,,-1,in|
00003b20  64 65 78 25 0d 19 a0 05  e1 0d 19 aa 04 0d 19 b4  |dex%............|
00003b30  1f dd 20 f2 63 61 72 65  74 5f 72 65 73 65 74 28  |.. .caret_reset(|
00003b40  77 69 6e 64 25 2c 69 63  6f 6e 25 29 0d 19 be 21  |wind%,icon%)...!|
00003b50  c8 99 22 57 69 6d 70 5f  47 65 74 43 61 72 65 74  |.."Wimp_GetCaret|
00003b60  50 6f 73 69 74 69 6f 6e  22 2c 2c 71 25 0d 19 c8  |Position",,q%...|
00003b70  3e e7 20 21 71 25 3d 77  69 6e 64 25 20 80 20 71  |>. !q%=wind% . q|
00003b80  25 21 34 3d 69 63 6f 6e  25 20 8c 20 f2 63 61 72  |%!4=icon% . .car|
00003b90  65 74 5f 70 6c 61 63 65  28 77 69 6e 64 25 2c 69  |et_place(wind%,i|
00003ba0  63 6f 6e 25 2c 71 25 21  32 30 29 0d 19 d2 05 e1  |con%,q%!20).....|
00003bb0  0d 19 dc 04 0d 19 e6 1e  dd 20 a4 77 69 6e 64 6f  |......... .windo|
00003bc0  77 5f 74 65 6d 70 6c 61  74 65 28 74 69 74 6c 65  |w_template(title|
00003bd0  24 29 0d 19 f0 3d c8 99  22 57 69 6d 70 5f 4c 6f  |$)...=.."Wimp_Lo|
00003be0  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 71 25 2c  |adTemplate",,q%,|
00003bf0  69 6e 64 25 2c 69 6e 64  65 6e 64 25 2c 2d 31 2c  |ind%,indend%,-1,|
00003c00  74 69 74 6c 65 24 20 b8  20 2c 2c 69 6e 64 25 0d  |title$ . ,,ind%.|
00003c10  19 fa 25 c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |..%.."Wimp_Creat|
00003c20  65 57 69 6e 64 6f 77 22  2c 2c 71 25 20 b8 20 77  |eWindow",,q% . w|
00003c30  69 6e 64 25 0d 1a 04 0a  3d 77 69 6e 64 25 0d 1a  |ind%....=wind%..|
00003c40  0e 04 0d 1a 18 22 dd 20  a4 77 69 6e 64 6f 77 5f  |.....". .window_|
00003c50  73 61 76 65 5f 62 6f 78  28 66 69 6c 65 5f 74 79  |save_box(file_ty|
00003c60  70 65 25 29 0d 1a 22 0b  ea 20 77 69 6e 64 25 0d  |pe%)..".. wind%.|
00003c70  1a 2c 25 77 69 6e 64 25  3d a4 77 69 6e 64 6f 77  |.,%wind%=.window|
00003c80  5f 74 65 6d 70 6c 61 74  65 28 22 73 61 76 65 62  |_template("saveb|
00003c90  6f 78 22 29 0d 1a 36 3b  f2 69 63 6f 6e 5f 73 65  |ox")..6;.icon_se|
00003ca0  74 5f 74 65 78 74 28 77  69 6e 64 25 2c 30 2c 22  |t_text(wind%,0,"|
00003cb0  66 69 6c 65 5f 22 2b c2  22 30 30 22 2b c3 7e 28  |file_"+."00"+.~(|
00003cc0  66 69 6c 65 5f 74 79 70  65 25 29 2c 33 29 29 0d  |file_type%),3)).|
00003cd0  1a 40 0a 3d 77 69 6e 64  25 0d 1a 4a 04 0d 1a 54  |.@.=wind%..J...T|
00003ce0  18 dd 20 f2 77 69 6e 64  6f 77 5f 70 6f 70 75 70  |.. .window_popup|
00003cf0  28 21 71 25 29 0d 1a 5e  1f c8 99 22 57 69 6d 70  |(!q%)..^..."Wimp|
00003d00  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
00003d10  2c 2c 71 25 0d 1a 68 0c  71 25 21 32 38 3d 2d 31  |,,q%..h.q%!28=-1|
00003d20  0d 1a 72 14 f2 77 69 6e  64 6f 77 5f 6f 70 65 6e  |..r..window_open|
00003d30  28 71 25 29 0d 1a 7c 05  e1 0d 1a 86 04 0d 1a 90  |(q%)..|.........|
00003d40  16 dd 20 f2 77 69 6e 64  6f 77 5f 6f 70 65 6e 28  |.. .window_open(|
00003d50  71 25 29 0d 1a 9a 0e ea  20 6e 65 77 5f 70 6f 73  |q%)..... new_pos|
00003d60  25 0d 1a a4 18 e7 20 21  71 25 3d 70 61 6e 65 5f  |%..... !q%=pane_|
00003d70  70 61 72 65 6e 74 25 20  8c 0d 1a ae 17 20 20 f2  |parent% .....  .|
00003d80  77 69 6e 64 6f 77 5f 63  61 6c 63 5f 70 61 6e 65  |window_calc_pane|
00003d90  0d 1a b8 1e 20 20 c8 99  22 57 69 6d 70 5f 4f 70  |....  .."Wimp_Op|
00003da0  65 6e 57 69 6e 64 6f 77  22 2c 2c 71 32 25 0d 1a  |enWindow",,q2%..|
00003db0  c2 1d 20 20 c8 99 22 57  69 6d 70 5f 4f 70 65 6e  |..  .."Wimp_Open|
00003dc0  57 69 6e 64 6f 77 22 2c  2c 71 25 0d 1a cc 20 20  |Window",,q%...  |
00003dd0  20 f2 77 69 6e 64 6f 77  5f 69 6e 66 6f 28 70 61  | .window_info(pa|
00003de0  6e 65 5f 70 61 72 65 6e  74 25 29 0d 1a d6 17 20  |ne_parent%).... |
00003df0  20 f2 77 69 6e 64 6f 77  5f 63 61 6c 63 5f 70 61  | .window_calc_pa|
00003e00  6e 65 0d 1a e0 19 20 20  f2 77 69 6e 64 6f 77 5f  |ne....  .window_|
00003e10  69 6e 66 6f 28 70 61 6e  65 25 29 0d 1a ea 43 20  |info(pane%)...C |
00003e20  20 e7 20 71 25 21 34 3c  3e 71 32 25 21 34 20 84  | . q%!4<>q2%!4 .|
00003e30  20 71 25 21 38 3c 3e 71  32 25 21 38 20 84 20 71  | q%!8<>q2%!8 . q|
00003e40  25 21 31 32 3c 3e 71 32  25 21 31 32 20 84 20 71  |%!12<>q2%!12 . q|
00003e50  25 21 31 36 3c 3e 71 32  25 21 31 36 20 8c 0d 1a  |%!16<>q2%!16 ...|
00003e60  f4 13 20 20 20 20 71 32  25 21 32 38 3d 21 71 32  |..    q2%!28=!q2|
00003e70  25 0d 1a fe 20 20 20 20  20 c8 99 22 57 69 6d 70  |%...     .."Wimp|
00003e80  5f 4f 70 65 6e 57 69 6e  64 6f 77 22 2c 2c 71 32  |_OpenWindow",,q2|
00003e90  25 0d 1b 08 07 20 20 cd  0d 1b 12 05 cc 0d 1b 1c  |%....  .........|
00003ea0  1d 20 20 c8 99 22 57 69  6d 70 5f 4f 70 65 6e 57  |.  .."Wimp_OpenW|
00003eb0  69 6e 64 6f 77 22 2c 2c  71 25 0d 1b 26 05 cd 0d  |indow",,q%..&...|
00003ec0  1b 30 05 e1 0d 1b 3a 04  0d 1b 44 17 dd 20 f2 77  |.0....:...D.. .w|
00003ed0  69 6e 64 6f 77 5f 63 61  6c 63 5f 70 61 6e 65 0d  |indow_calc_pane.|
00003ee0  1b 4e 0e 21 71 32 25 3d  70 61 6e 65 25 0d 1b 58  |.N.!q2%=pane%..X|
00003ef0  0e 71 32 25 21 34 3d 71  25 21 34 0d 1b 62 1c 71  |.q2%!4=q%!4..b.q|
00003f00  32 25 21 38 3d 71 25 21  31 36 2d 70 61 6e 65 5f  |2%!8=q%!16-pane_|
00003f10  68 65 69 67 68 74 25 0d  1b 6c 1f 71 32 25 21 31  |height%..l.q2%!1|
00003f20  32 3d 71 25 21 31 32 20  3a 20 71 32 25 21 31 36  |2=q%!12 : q2%!16|
00003f30  3d 71 25 21 31 36 0d 1b  76 17 71 32 25 21 32 30  |=q%!16..v.q2%!20|
00003f40  3d 30 20 3a 20 71 32 25  21 32 34 3d 30 0d 1b 80  |=0 : q2%!24=0...|
00003f50  1d 71 32 25 21 32 38 3d  71 25 21 32 38 20 3a 20  |.q2%!28=q%!28 : |
00003f60  71 25 21 32 38 3d 21 71  32 25 0d 1b 8a 05 e1 0d  |q%!28=!q2%......|
00003f70  1b 94 04 0d 1b 9e 22 dd  20 f2 77 69 6e 64 6f 77  |......". .window|
00003f80  5f 6f 70 65 6e 5f 66 75  6c 6c 79 28 21 71 25 2c  |_open_fully(!q%,|
00003f90  74 6f 70 25 29 0d 1b a8  1e c8 99 22 57 69 6d 70  |top%)......"Wimp|
00003fa0  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
00003fb0  2c 71 25 0d 1b b2 1c 71  25 21 31 32 3d 71 25 21  |,q%....q%!12=q%!|
00003fc0  34 2b 28 71 25 21 35 32  2d 71 25 21 34 34 29 0d  |4+(q%!52-q%!44).|
00003fd0  1b bc 1c 71 25 21 38 3d  71 25 21 31 36 2d 28 71  |...q%!8=q%!16-(q|
00003fe0  25 21 35 36 2d 71 25 21  34 38 29 0d 1b c6 15 e7  |%!56-q%!48).....|
00003ff0  20 74 6f 70 25 20 8c 20  71 25 21 32 38 3d 2d 31  | top% . q%!28=-1|
00004000  0d 1b d0 14 f2 77 69 6e  64 6f 77 5f 6f 70 65 6e  |.....window_open|
00004010  28 71 25 29 0d 1b da 05  e1 0d 1b e4 04 0d 1b ee  |(q%)............|
00004020  19 dd 20 f2 77 69 6e 64  6f 77 5f 72 65 6f 70 65  |.. .window_reope|
00004030  6e 28 21 71 25 29 0d 1b  f8 15 f2 77 69 6e 64 6f  |n(!q%).....windo|
00004040  77 5f 69 6e 66 6f 28 21  71 25 29 0d 1c 02 14 f2  |w_info(!q%).....|
00004050  77 69 6e 64 6f 77 5f 6f  70 65 6e 28 71 25 29 0d  |window_open(q%).|
00004060  1c 0c 05 e1 0d 1c 16 04  0d 1c 20 1d dd 20 a4 77  |.......... .. .w|
00004070  69 6e 64 6f 77 5f 6f 70  65 6e 5f 66 75 6c 6c 79  |indow_open_fully|
00004080  28 21 71 25 29 0d 1c 2a  1f c8 99 22 57 69 6d 70  |(!q%)..*..."Wimp|
00004090  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
000040a0  2c 2c 71 25 0d 1c 34 19  3d 28 28 71 25 21 33 32  |,,q%..4.=((q%!32|
000040b0  80 28 31 3c 3c 31 38 29  29 3c 3e 30 29 0d 1c 3e  |.(1<<18))<>0)..>|
000040c0  04 0d 1c 48 18 dd 20 f2  77 69 6e 64 6f 77 5f 63  |...H.. .window_c|
000040d0  6c 6f 73 65 28 21 71 25  29 0d 1c 52 1c c8 99 22  |lose(!q%)..R..."|
000040e0  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
000040f0  22 2c 2c 71 25 0d 1c 5c  2d e7 20 21 71 25 3d 70  |",,q%..\-. !q%=p|
00004100  61 6e 65 5f 70 61 72 65  6e 74 25 20 8c 20 f2 77  |ane_parent% . .w|
00004110  69 6e 64 6f 77 5f 63 6c  6f 73 65 28 70 61 6e 65  |indow_close(pane|
00004120  25 29 0d 1c 66 1d e7 20  21 71 25 3d 70 61 6e 65  |%)..f.. !q%=pane|
00004130  25 20 8c 20 70 61 6e 65  5f 70 6f 73 25 3d 30 0d  |% . pane_pos%=0.|
00004140  1c 70 05 e1 0d 1c 7a 04  0d 1c 84 19 dd 20 f2 77  |.p....z...... .w|
00004150  69 6e 64 6f 77 5f 69 6e  66 6f 28 77 69 6e 64 25  |indow_info(wind%|
00004160  29 0d 1c 8e 0d 21 71 25  3d 77 69 6e 64 25 0d 1c  |)....!q%=wind%..|
00004170  98 1f c8 99 22 57 69 6d  70 5f 47 65 74 57 69 6e  |...."Wimp_GetWin|
00004180  64 6f 77 53 74 61 74 65  22 2c 2c 71 25 0d 1c a2  |dowState",,q%...|
00004190  12 77 78 25 3d 71 25 21  34 2d 71 25 21 32 30 0d  |.wx%=q%!4-q%!20.|
000041a0  1c ac 13 77 79 25 3d 71  25 21 31 36 2d 71 25 21  |...wy%=q%!16-q%!|
000041b0  32 34 0d 1c b6 05 e1 0d  1c c0 04 0d 1c ca 23 dd  |24............#.|
000041c0  20 f2 77 69 6e 64 6f 77  5f 6e 65 77 5f 74 69 74  | .window_new_tit|
000041d0  6c 65 28 21 71 25 2c 74  69 74 6c 65 24 29 0d 1c  |le(!q%,title$)..|
000041e0  d4 1e c8 99 22 57 69 6d  70 5f 47 65 74 57 69 6e  |...."Wimp_GetWin|
000041f0  64 6f 77 49 6e 66 6f 22  2c 2c 71 25 0d 1c de 18  |dowInfo",,q%....|
00004200  e7 20 24 28 71 25 21 37  36 29 3c 3e 74 69 74 6c  |. $(q%!76)<>titl|
00004210  65 24 20 8c 0d 1c e8 15  20 20 24 28 71 25 21 37  |e$ .....  $(q%!7|
00004220  36 29 3d 74 69 74 6c 65  24 0d 1c f2 1d 20 20 e7  |6)=title$....  .|
00004230  20 a4 77 69 6e 64 6f 77  5f 61 63 74 69 76 65 28  | .window_active(|
00004240  21 71 25 29 20 8c 0d 1c  fc 25 20 20 20 20 c8 99  |!q%) ....%    ..|
00004250  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 4f  |"Wimp_GetWindowO|
00004260  75 74 6c 69 6e 65 22 2c  2c 71 25 0d 1d 06 39 20  |utline",,q%...9 |
00004270  20 20 20 c8 99 22 57 69  6d 70 5f 46 6f 72 63 65  |   .."Wimp_Force|
00004280  52 65 64 72 61 77 22 2c  2d 31 2c 71 25 21 34 2c  |Redraw",-1,q%!4,|
00004290  71 25 21 31 36 2d 34 34  2c 71 25 21 31 32 2c 71  |q%!16-44,q%!12,q|
000042a0  25 21 31 36 0d 1d 10 07  20 20 cd 0d 1d 1a 05 cd  |%!16....  ......|
000042b0  0d 1d 24 05 e1 0d 1d 2e  04 0d 1d 38 2f dd 20 f2  |..$........8/. .|
000042c0  77 69 6e 64 6f 77 5f 73  65 74 5f 65 78 74 65 6e  |window_set_exten|
000042d0  74 28 77 69 6e 64 25 2c  78 30 25 2c 79 30 25 2c  |t(wind%,x0%,y0%,|
000042e0  78 31 25 2c 79 31 25 29  0d 1d 42 0c ea 20 66 75  |x1%,y1%)..B.. fu|
000042f0  6c 6c 79 25 0d 1d 4c 24  66 75 6c 6c 79 25 3d a4  |lly%..L$fully%=.|
00004300  77 69 6e 64 6f 77 5f 6f  70 65 6e 5f 66 75 6c 6c  |window_open_full|
00004310  79 28 77 69 6e 64 25 29  0d 1d 56 0d 21 71 25 3d  |y(wind%)..V.!q%=|
00004320  77 69 6e 64 25 0d 1d 60  1e c8 99 22 57 69 6d 70  |wind%..`..."Wimp|
00004330  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
00004340  2c 71 25 0d 1d 6a 39 e7  20 78 30 25 3c 3e 71 25  |,q%..j9. x0%<>q%|
00004350  21 34 34 20 84 20 79 30  25 3c 3e 71 25 21 34 38  |!44 . y0%<>q%!48|
00004360  20 84 20 78 31 25 3c 3e  71 25 21 35 32 20 84 20  | . x1%<>q%!52 . |
00004370  79 31 25 3c 3e 71 25 21  35 36 20 8c 0d 1d 74 0d  |y1%<>q%!56 ...t.|
00004380  20 20 21 71 25 3d 78 30  25 0d 1d 7e 0e 20 20 71  |  !q%=x0%..~.  q|
00004390  25 21 34 3d 79 30 25 0d  1d 88 0e 20 20 71 25 21  |%!4=y0%....  q%!|
000043a0  38 3d 78 31 25 0d 1d 92  0f 20 20 71 25 21 31 32  |8=x1%....  q%!12|
000043b0  3d 79 31 25 0d 1d 9c 21  20 20 c8 99 22 57 69 6d  |=y1%...!  .."Wim|
000043c0  70 5f 53 65 74 45 78 74  65 6e 74 22 2c 77 69 6e  |p_SetExtent",win|
000043d0  64 25 2c 71 25 0d 1d a6  44 20 20 e7 20 66 75 6c  |d%,q%...D  . ful|
000043e0  6c 79 25 20 8c 20 f2 77  69 6e 64 6f 77 5f 6f 70  |ly% . .window_op|
000043f0  65 6e 5f 66 75 6c 6c 79  28 77 69 6e 64 25 2c a3  |en_fully(wind%,.|
00004400  29 20 8b 20 f2 77 69 6e  64 6f 77 5f 72 65 6f 70  |) . .window_reop|
00004410  65 6e 28 77 69 6e 64 25  29 0d 1d b0 07 20 20 cd  |en(wind%)....  .|
00004420  0d 1d ba 05 cd 0d 1d c4  05 e1 0d 1d ce 04 0d 1d  |................|
00004430  d8 19 dd 20 a4 77 69 6e  64 6f 77 5f 61 63 74 69  |... .window_acti|
00004440  76 65 28 21 71 25 29 0d  1d e2 1f c8 99 22 57 69  |ve(!q%)......"Wi|
00004450  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
00004460  65 22 2c 2c 71 25 0d 1d  ec 19 3d 28 28 71 25 21  |e",,q%....=((q%!|
00004470  33 32 80 28 31 3c 3c 31  36 29 29 3c 3e 30 29 0d  |32.(1<<16))<>0).|
00004480  1d f6 04 0d 1e 00 1f dd  20 f2 77 69 6e 64 6f 77  |........ .window|
00004490  5f 66 6f 72 63 65 5f 72  65 64 72 61 77 28 21 71  |_force_redraw(!q|
000044a0  25 29 0d 1e 0a 1e c8 99  22 57 69 6d 70 5f 47 65  |%)......"Wimp_Ge|
000044b0  74 57 69 6e 64 6f 77 49  6e 66 6f 22 2c 2c 71 25  |tWindowInfo",,q%|
000044c0  0d 1e 14 34 c8 99 22 57  69 6d 70 5f 46 6f 72 63  |...4.."Wimp_Forc|
000044d0  65 52 65 64 72 61 77 22  2c 21 71 25 2c 71 25 21  |eRedraw",!q%,q%!|
000044e0  34 34 2c 71 25 21 34 38  2c 71 25 21 35 32 2c 71  |44,q%!48,q%!52,q|
000044f0  25 21 35 36 0d 1e 1e 05  e1 0d 1e 28 04 0d 1e 32  |%!56.......(...2|
00004500  1f dd 20 f2 77 69 6e 64  6f 77 5f 73 74 61 72 74  |.. .window_start|
00004510  5f 75 70 64 61 74 65 28  21 71 25 29 0d 1e 3c 1e  |_update(!q%)..<.|
00004520  c8 99 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |.."Wimp_GetWindo|
00004530  77 49 6e 66 6f 22 2c 2c  71 25 0d 1e 46 0e 71 25  |wInfo",,q%..F.q%|
00004540  21 34 3d 71 25 21 34 34  0d 1e 50 0e 71 25 21 38  |!4=q%!44..P.q%!8|
00004550  3d 71 25 21 34 38 0d 1e  5a 0f 71 25 21 31 32 3d  |=q%!48..Z.q%!12=|
00004560  71 25 21 35 32 0d 1e 64  0f 71 25 21 31 36 3d 71  |q%!52..d.q%!16=q|
00004570  25 21 35 36 0d 1e 6e 25  c8 99 22 57 69 6d 70 5f  |%!56..n%.."Wimp_|
00004580  55 70 64 61 74 65 57 69  6e 64 6f 77 22 2c 2c 71  |UpdateWindow",,q|
00004590  25 20 b8 20 6d 6f 72 65  25 0d 1e 78 05 e1 0d 1e  |% . more%..x....|
000045a0  82 04 0d 1e 8c 39 dd 20  f2 77 69 6e 64 6f 77 5f  |.....9. .window_|
000045b0  73 74 61 72 74 5f 75 70  64 61 74 65 5f 62 6f 78  |start_update_box|
000045c0  28 21 71 25 2c 71 25 21  34 2c 71 25 21 38 2c 71  |(!q%,q%!4,q%!8,q|
000045d0  25 21 31 32 2c 71 25 21  31 36 29 0d 1e 96 25 c8  |%!12,q%!16)...%.|
000045e0  99 22 57 69 6d 70 5f 55  70 64 61 74 65 57 69 6e  |."Wimp_UpdateWin|
000045f0  64 6f 77 22 2c 2c 71 25  20 b8 20 6d 6f 72 65 25  |dow",,q% . more%|
00004600  0d 1e a0 05 e1 0d 1e aa  04 0d 1e b4 3c dd 20 f2  |............<. .|
00004610  77 69 6e 64 6f 77 5f 73  74 61 72 74 5f 75 73 65  |window_start_use|
00004620  72 5f 64 72 61 67 28 77  69 6e 64 25 2c 71 25 21  |r_drag(wind%,q%!|
00004630  32 34 2c 71 25 21 32 38  2c 71 25 21 33 32 2c 71  |24,q%!28,q%!32,q|
00004640  25 21 33 36 29 0d 1e be  09 21 71 25 3d 30 0d 1e  |%!36)....!q%=0..|
00004650  c8 0a 71 25 21 34 3d 37  0d 1e d2 14 64 72 61 67  |..q%!4=7....drag|
00004660  5f 77 69 6e 64 25 3d 77  69 6e 64 25 0d 1e dc 18  |_wind%=wind%....|
00004670  c8 99 22 57 69 6d 70 5f  44 72 61 67 42 6f 78 22  |.."Wimp_DragBox"|
00004680  2c 2c 71 25 0d 1e e6 0f  64 72 61 67 67 69 6e 67  |,,q%....dragging|
00004690  25 3d b9 0d 1e f0 05 e1  0d 1e fa 04 0d 1f 04 29  |%=.............)|
000046a0  dd 20 f2 77 69 6e 64 6f  77 5f 6f 70 65 6e 5f 61  |. .window_open_a|
000046b0  73 5f 6d 65 6e 75 28 77  69 6e 64 25 2c 6d 78 25  |s_menu(wind%,mx%|
000046c0  2c 6d 79 25 29 0d 1f 0e  17 f2 77 69 6e 64 6f 77  |,my%).....window|
000046d0  5f 69 6e 66 6f 28 77 69  6e 64 25 29 0d 1f 18 17  |_info(wind%)....|
000046e0  6d 78 25 2d 3d 28 71 25  21 31 32 2d 71 25 21 34  |mx%-=(q%!12-q%!4|
000046f0  29 2f 32 0d 1f 22 0b 6d  79 25 2b 3d 34 38 0d 1f  |)/2..".my%+=48..|
00004700  2c 1d f2 6d 65 6e 75 5f  6f 70 65 6e 28 73 61 76  |,..menu_open(sav|
00004710  65 25 2c 6d 78 25 2c 6d  79 25 29 0d 1f 36 05 e1  |e%,mx%,my%)..6..|
00004720  0d 1f 40 04 0d 1f 4a 16  dd 20 a4 64 69 6d 5f 73  |..@...J.. .dim_s|
00004730  74 72 69 6e 67 28 73 74  24 29 0d 1f 54 0a ea 20  |tring(st$)..T.. |
00004740  70 6f 73 25 0d 1f 5e 11  de 20 70 6f 73 25 20 a9  |pos%..^.. pos% .|
00004750  73 74 24 2b 31 0d 1f 68  0d 24 70 6f 73 25 3d 73  |st$+1..h.$pos%=s|
00004760  74 24 0d 1f 72 09 3d 70  6f 73 25 0d 1f 7c 04 0d  |t$..r.=pos%..|..|
00004770  1f 86 1f dd 20 f2 6d 65  6e 75 5f 6f 70 65 6e 28  |.... .menu_open(|
00004780  6d 65 6e 75 25 2c 6d 78  25 2c 6d 79 25 29 0d 1f  |menu%,mx%,my%)..|
00004790  90 26 c8 99 22 57 69 6d  70 5f 43 72 65 61 74 65  |.&.."Wimp_Create|
000047a0  4d 65 6e 75 22 2c 2c 6d  65 6e 75 25 2c 6d 78 25  |Menu",,menu%,mx%|
000047b0  2c 6d 79 25 0d 1f 9a 14  6d 65 6e 75 5f 6f 70 65  |,my%....menu_ope|
000047c0  6e 25 3d 6d 65 6e 75 25  0d 1f a4 05 e1 0d 1f ae  |n%=menu%........|
000047d0  04 0d 1f b8 11 dd 20 f2  6d 65 6e 75 5f 63 6c 6f  |...... .menu_clo|
000047e0  73 65 0d 1f c2 1b c8 99  22 57 69 6d 70 5f 43 72  |se......"Wimp_Cr|
000047f0  65 61 74 65 4d 65 6e 75  22 2c 2c 2d 31 0d 1f cc  |eateMenu",,-1...|
00004800  11 6d 65 6e 75 5f 6f 70  65 6e 25 3d 2d 31 0d 1f  |.menu_open%=-1..|
00004810  d6 05 e1 0d 1f e0 04 0d  1f ea 18 dd 20 a4 73 74  |............ .st|
00004820  61 72 74 5f 6d 65 6e 75  28 6e 61 6d 65 24 29 0d  |art_menu(name$).|
00004830  1f f4 13 6c 6f 6e 67 65  73 74 25 3d a9 6e 61 6d  |...longest%=.nam|
00004840  65 24 0d 1f fe 1b 6d 65  6e 75 5f 73 74 61 72 74  |e$....menu_start|
00004850  25 3d 6d 65 6e 75 5f 62  6c 6f 63 6b 25 0d 20 08  |%=menu_block%. .|
00004860  16 24 6d 65 6e 75 5f 62  6c 6f 63 6b 25 3d 6e 61  |.$menu_block%=na|
00004870  6d 65 24 0d 20 12 19 6d  65 6e 75 5f 62 6c 6f 63  |me$. ..menu_bloc|
00004880  6b 25 21 31 32 3d 26 37  30 32 30 37 0d 20 1c 15  |k%!12=&70207. ..|
00004890  6d 65 6e 75 5f 62 6c 6f  63 6b 25 21 32 30 3d 34  |menu_block%!20=4|
000048a0  34 0d 20 26 14 6d 65 6e  75 5f 62 6c 6f 63 6b 25  |4. &.menu_block%|
000048b0  21 32 34 3d 30 0d 20 30  13 6d 65 6e 75 5f 62 6c  |!24=0. 0.menu_bl|
000048c0  6f 63 6b 25 2b 3d 32 38  0d 20 3a 10 3d 6d 65 6e  |ock%+=28. :.=men|
000048d0  75 5f 73 74 61 72 74 25  0d 20 44 04 0d 20 4e 1d  |u_start%. D.. N.|
000048e0  dd 20 f2 6d 65 6e 75 5f  69 74 65 6d 28 69 74 65  |. .menu_item(ite|
000048f0  6d 24 2c 6c 69 6e 6b 25  29 0d 20 58 27 e7 20 a9  |m$,link%). X'. .|
00004900  69 74 65 6d 24 3e 6c 6f  6e 67 65 73 74 25 20 8c  |item$>longest% .|
00004910  20 6c 6f 6e 67 65 73 74  25 3d a9 69 74 65 6d 24  | longest%=.item$|
00004920  0d 20 62 12 21 6d 65 6e  75 5f 62 6c 6f 63 6b 25  |. b.!menu_block%|
00004930  3d 30 0d 20 6c 17 6d 65  6e 75 5f 62 6c 6f 63 6b  |=0. l.menu_block|
00004940  25 21 34 3d 6c 69 6e 6b  25 0d 20 76 1a 6d 65 6e  |%!4=link%. v.men|
00004950  75 5f 62 6c 6f 63 6b 25  21 38 3d 26 37 30 30 30  |u_block%!8=&7000|
00004960  30 32 31 0d 20 80 1b 24  28 6d 65 6e 75 5f 62 6c  |021. ..$(menu_bl|
00004970  6f 63 6b 25 2b 31 32 29  3d 69 74 65 6d 24 0d 20  |ock%+12)=item$. |
00004980  8a 13 6d 65 6e 75 5f 62  6c 6f 63 6b 25 2b 3d 32  |..menu_block%+=2|
00004990  34 0d 20 94 05 e1 0d 20  9e 04 0d 20 a8 22 dd 20  |4. .... ... .". |
000049a0  f2 6d 65 6e 75 5f 73 65  74 5f 6c 61 73 74 5f 66  |.menu_set_last_f|
000049b0  6c 61 67 73 28 66 6c 61  67 73 25 29 0d 20 b2 1c  |lags(flags%). ..|
000049c0  21 28 6d 65 6e 75 5f 62  6c 6f 63 6b 25 2d 32 34  |!(menu_block%-24|
000049d0  29 3d 66 6c 61 67 73 25  0d 20 bc 05 e1 0d 20 c6  |)=flags%. .... .|
000049e0  04 0d 20 d0 1d dd 20 a4  6d 65 6e 75 5f 74 65 78  |.. ... .menu_tex|
000049f0  74 28 6d 65 6e 75 25 2c  69 74 65 6d 25 29 0d 20  |t(menu%,item%). |
00004a00  da 16 6d 65 6e 75 25 2b  3d 32 38 2b 69 74 65 6d  |..menu%+=28+item|
00004a10  25 2a 32 34 0d 20 e4 33  e7 20 28 6d 65 6e 75 25  |%*24. .3. (menu%|
00004a20  21 38 29 80 28 31 3c 3c  38 29 20 8c 20 6d 65 6e  |!8).(1<<8) . men|
00004a30  75 25 3d 6d 65 6e 75 25  21 31 32 20 8b 20 6d 65  |u%=menu%!12 . me|
00004a40  6e 75 25 2b 3d 31 32 0d  20 ee 0b 3d 24 6d 65 6e  |nu%+=12. ..=$men|
00004a50  75 25 0d 20 f8 04 0d 21  02 23 dd 20 f2 6d 65 6e  |u%. ...!.#. .men|
00004a60  75 5f 74 69 63 6b 28 6d  65 6e 75 25 2c 69 74 65  |u_tick(menu%,ite|
00004a70  6d 25 2c 74 69 63 6b 25  29 0d 21 0c 1b 6d 65 6e  |m%,tick%).!..men|
00004a80  75 25 3d 6d 65 6e 75 25  2b 32 38 2b 69 74 65 6d  |u%=menu%+28+item|
00004a90  25 2a 32 34 0d 21 16 32  e7 20 74 69 63 6b 25 20  |%*24.!.2. tick% |
00004aa0  8c 20 21 6d 65 6e 75 25  3d 21 6d 65 6e 75 25 20  |. !menu%=!menu% |
00004ab0  84 31 20 8b 20 21 6d 65  6e 75 25 3d 21 6d 65 6e  |.1 . !menu%=!men|
00004ac0  75 25 20 80 ac 31 0d 21  20 05 e1 0d 21 2a 04 0d  |u% ..1.! ...!*..|
00004ad0  21 34 27 dd 20 f2 6d 65  6e 75 5f 69 6e 64 5f 69  |!4'. .menu_ind_i|
00004ae0  74 65 6d 28 74 65 78 74  25 2c 76 61 6c 69 64 25  |tem(text%,valid%|
00004af0  2c 6c 65 6e 25 29 0d 21  3e 27 e7 20 6c 65 6e 25  |,len%).!>'. len%|
00004b00  2d 31 3e 6c 6f 6e 67 65  73 74 25 20 8c 20 6c 6f  |-1>longest% . lo|
00004b10  6e 67 65 73 74 25 3d 6c  65 6e 25 2d 31 0d 21 48  |ngest%=len%-1.!H|
00004b20  12 21 6d 65 6e 75 5f 62  6c 6f 63 6b 25 3d 30 0d  |.!menu_block%=0.|
00004b30  21 52 13 6d 65 6e 75 5f  62 6c 6f 63 6b 25 21 34  |!R.menu_block%!4|
00004b40  3d 30 0d 21 5c 1a 6d 65  6e 75 5f 62 6c 6f 63 6b  |=0.!\.menu_block|
00004b50  25 21 38 3d 26 37 30 30  30 31 32 31 0d 21 66 18  |%!8=&7000121.!f.|
00004b60  6d 65 6e 75 5f 62 6c 6f  63 6b 25 21 31 32 3d 74  |menu_block%!12=t|
00004b70  65 78 74 25 0d 21 70 19  6d 65 6e 75 5f 62 6c 6f  |ext%.!p.menu_blo|
00004b80  63 6b 25 21 31 36 3d 76  61 6c 69 64 25 0d 21 7a  |ck%!16=valid%.!z|
00004b90  17 6d 65 6e 75 5f 62 6c  6f 63 6b 25 21 32 30 3d  |.menu_block%!20=|
00004ba0  6c 65 6e 25 0d 21 84 13  6d 65 6e 75 5f 62 6c 6f  |len%.!..menu_blo|
00004bb0  63 6b 25 2b 3d 32 34 0d  21 8e 05 e1 0d 21 98 04  |ck%+=24.!....!..|
00004bc0  0d 21 a2 0f dd 20 f2 6d  65 6e 75 5f 65 6e 64 0d  |.!... .menu_end.|
00004bd0  21 ac 22 6d 65 6e 75 5f  73 74 61 72 74 25 21 31  |!."menu_start%!1|
00004be0  36 3d 28 6c 6f 6e 67 65  73 74 25 2b 31 29 2a 31  |6=(longest%+1)*1|
00004bf0  36 0d 21 b6 2d 21 28 6d  65 6e 75 5f 62 6c 6f 63  |6.!.-!(menu_bloc|
00004c00  6b 25 2d 32 34 29 3d 21  28 6d 65 6e 75 5f 62 6c  |k%-24)=!(menu_bl|
00004c10  6f 63 6b 25 2d 32 34 29  20 84 20 26 38 30 0d 21  |ock%-24) . &80.!|
00004c20  c0 05 e1 0d 21 ca 04 0d  21 d4 29 dd 20 f2 6d 65  |....!...!.). .me|
00004c30  6e 75 5f 69 63 6f 6e 5f  70 6f 70 75 70 28 77 69  |nu_icon_popup(wi|
00004c40  6e 64 25 2c 69 63 6f 6e  25 2c 6d 65 6e 75 25 29  |nd%,icon%,menu%)|
00004c50  0d 21 de 17 f2 77 69 6e  64 6f 77 5f 69 6e 66 6f  |.!...window_info|
00004c60  28 77 69 6e 64 25 29 0d  21 e8 1b f2 69 63 6f 6e  |(wind%).!...icon|
00004c70  5f 69 6e 66 6f 28 77 69  6e 64 25 2c 69 63 6f 6e  |_info(wind%,icon|
00004c80  25 29 0d 21 f2 29 f2 6d  65 6e 75 5f 6f 70 65 6e  |%).!.).menu_open|
00004c90  28 6d 65 6e 75 25 2c 77  78 25 2b 71 25 21 31 36  |(menu%,wx%+q%!16|
00004ca0  2c 77 79 25 2b 71 25 21  32 30 29 0d 21 fc 05 e1  |,wy%+q%!20).!...|
00004cb0  0d 22 06 04 0d 22 10 25  dd 20 f2 6d 65 6e 75 5f  |."...".%. .menu_|
00004cc0  73 68 61 64 65 28 6d 65  6e 75 25 2c 69 74 65 6d  |shade(menu%,item|
00004cd0  25 2c 73 68 61 64 65 25  29 0d 22 1a 18 70 25 3d  |%,shade%)."..p%=|
00004ce0  6d 65 6e 75 25 2b 33 36  2b 69 74 65 6d 25 2a 32  |menu%+36+item%*2|
00004cf0  34 0d 22 24 15 21 70 25  3d 21 70 25 20 80 ac 28  |4."$.!p%=!p% ..(|
00004d00  31 3c 3c 32 32 29 0d 22  2e 1f e7 20 73 68 61 64  |1<<22)."... shad|
00004d10  65 25 20 8c 20 21 70 25  3d 21 70 25 20 84 28 31  |e% . !p%=!p% .(1|
00004d20  3c 3c 32 32 29 0d 22 38  05 e1 0d 22 42 04 0d 22  |<<22)."8..."B.."|
00004d30  4c 1f dd 20 f2 6d 65 73  73 5f 6c 6f 61 64 28 6d  |L.. .mess_load(m|
00004d40  65 73 73 61 67 65 5f 66  69 6c 65 24 29 0d 22 56  |essage_file$)."V|
00004d50  42 c8 99 22 4d 65 73 73  61 67 65 54 72 61 6e 73  |B.."MessageTrans|
00004d60  5f 46 69 6c 65 49 6e 66  6f 22 2c 2c 6d 65 73 73  |_FileInfo",,mess|
00004d70  61 67 65 5f 66 69 6c 65  24 20 b8 20 2c 2c 6d 65  |age_file$ . ,,me|
00004d80  73 73 61 67 65 5f 73 69  7a 65 25 3b 6f 6b 25 0d  |ssage_size%;ok%.|
00004d90  22 60 1d de 20 6d 65 73  73 61 67 65 73 25 20 6d  |"`.. messages% m|
00004da0  65 73 73 61 67 65 5f 73  69 7a 65 25 0d 22 6a 16  |essage_size%."j.|
00004db0  de 20 6d 65 73 73 61 67  65 5f 64 65 73 63 25 20  |. message_desc% |
00004dc0  31 36 0d 22 74 19 de 20  6d 65 73 73 61 67 65 5f  |16."t.. message_|
00004dd0  62 75 66 66 65 72 25 20  32 35 36 0d 22 7e 43 c8  |buffer% 256."~C.|
00004de0  99 22 4d 65 73 73 61 67  65 54 72 61 6e 73 5f 4f  |."MessageTrans_O|
00004df0  70 65 6e 46 69 6c 65 22  2c 6d 65 73 73 61 67 65  |penFile",message|
00004e00  5f 64 65 73 63 25 2c 6d  65 73 73 61 67 65 5f 66  |_desc%,message_f|
00004e10  69 6c 65 24 2c 6d 65 73  73 61 67 65 73 25 0d 22  |ile$,messages%."|
00004e20  88 05 e1 0d 22 92 04 0d  22 9c 13 dd 20 a4 6d 65  |...."..."... .me|
00004e30  73 73 28 74 6f 6b 65 6e  24 29 0d 22 9d 09 ea 20  |ss(token$)."... |
00004e40  6f 6b 25 0d 22 a6 4c c8  99 22 58 4d 65 73 73 61  |ok%.".L.."XMessa|
00004e50  67 65 54 72 61 6e 73 5f  4c 6f 6f 6b 75 70 22 2c  |geTrans_Lookup",|
00004e60  6d 65 73 73 61 67 65 5f  64 65 73 63 25 2c 74 6f  |message_desc%,to|
00004e70  6b 65 6e 24 2c 6d 65 73  73 61 67 65 5f 62 75 66  |ken$,message_buf|
00004e80  66 65 72 25 2c 32 35 35  20 b8 20 3b 6f 6b 25 0d  |fer%,255 . ;ok%.|
00004e90  22 b0 24 e7 20 28 6f 6b  25 80 31 29 3d 31 20 8c  |".$. (ok%.1)=1 .|
00004ea0  20 3f 6d 65 73 73 61 67  65 5f 62 75 66 66 65 72  | ?message_buffer|
00004eb0  25 3d 30 0d 22 ba 1d 3d  a4 73 74 72 69 6e 67 28  |%=0."..=.string(|
00004ec0  6d 65 73 73 61 67 65 5f  62 75 66 66 65 72 25 29  |message_buffer%)|
00004ed0  0d 22 c4 04 0d 22 ce 19  dd 20 a4 6d 65 73 73 30  |."..."... .mess0|
00004ee0  28 74 6f 6b 65 6e 24 2c  73 74 30 24 29 0d 22 cf  |(token$,st0$).".|
00004ef0  09 ea 20 6f 6b 25 0d 22  d8 51 c8 99 22 58 4d 65  |.. ok%.".Q.."XMe|
00004f00  73 73 61 67 65 54 72 61  6e 73 5f 4c 6f 6f 6b 75  |ssageTrans_Looku|
00004f10  70 22 2c 6d 65 73 73 61  67 65 5f 64 65 73 63 25  |p",message_desc%|
00004f20  2c 74 6f 6b 65 6e 24 2c  6d 65 73 73 61 67 65 5f  |,token$,message_|
00004f30  62 75 66 66 65 72 25 2c  32 35 35 2c 73 74 30 24  |buffer%,255,st0$|
00004f40  20 b8 20 3b 6f 6b 25 0d  22 e2 24 e7 20 28 6f 6b  | . ;ok%.".$. (ok|
00004f50  25 80 31 29 3d 31 20 8c  20 3f 6d 65 73 73 61 67  |%.1)=1 . ?messag|
00004f60  65 5f 62 75 66 66 65 72  25 3d 30 0d 22 ec 1d 3d  |e_buffer%=0."..=|
00004f70  a4 73 74 72 69 6e 67 28  6d 65 73 73 61 67 65 5f  |.string(message_|
00004f80  62 75 66 66 65 72 25 29  0d 22 f6 04 0d 23 00 11  |buffer%)."...#..|
00004f90  dd 20 f2 6d 65 73 73 5f  63 6c 6f 73 65 0d 23 0a  |. .mess_close.#.|
00004fa0  2c c8 99 22 4d 65 73 73  61 67 65 54 72 61 6e 73  |,.."MessageTrans|
00004fb0  5f 43 6c 6f 73 65 46 69  6c 65 22 2c 6d 65 73 73  |_CloseFile",mess|
00004fc0  61 67 65 5f 64 65 73 63  25 0d 23 14 05 e1 0d 23  |age_desc%.#....#|
00004fd0  1e 04 0d 23 28 13 dd 20  a4 73 74 72 69 6e 67 28  |...#(.. .string(|
00004fe0  70 6f 73 25 29 0d 23 32  09 ea 20 73 74 24 0d 23  |pos%).#2.. st$.#|
00004ff0  3c 0f c8 95 20 3f 70 6f  73 25 3e 33 31 0d 23 46  |<... ?pos%>31.#F|
00005000  13 20 20 73 74 24 2b 3d  bd 28 3f 70 6f 73 25 29  |.  st$+=.(?pos%)|
00005010  0d 23 50 0d 20 20 70 6f  73 25 2b 3d 31 0d 23 5a  |.#P.  pos%+=1.#Z|
00005020  05 ce 0d 23 64 08 3d 73  74 24 0d 23 6e 04 0d 23  |...#d.=st$.#n..#|
00005030  78 22 dd 20 f2 70 6c 61  63 65 5f 6e 75 6c 6c 5f  |x". .place_null_|
00005040  73 74 72 69 6e 67 28 73  74 24 2c 70 6f 73 25 29  |string(st$,pos%)|
00005050  0d 23 82 0d 24 70 6f 73  25 3d 73 74 24 0d 23 8c  |.#..$pos%=st$.#.|
00005060  0f 70 6f 73 25 3f a9 73  74 24 3d 30 0d 23 96 05  |.pos%?.st$=0.#..|
00005070  e1 0d 23 a0 04 0d 23 aa  10 dd 20 a4 63 61 70 73  |..#...#... .caps|
00005080  28 73 74 24 29 0d 23 b4  08 ea 20 61 25 0d 23 be  |(st$).#... a%.#.|
00005090  0c e7 20 a9 73 74 24 20  8c 0d 23 c8 4a 20 20 e7  |.. .st$ ..#.J  .|
000050a0  20 c1 73 74 24 2c 61 25  2c 31 29 3e 3d 22 61 22  | .st$,a%,1)>="a"|
000050b0  20 80 20 c1 73 74 24 2c  61 25 2c 31 29 3c 3d 22  | . .st$,a%,1)<="|
000050c0  7a 22 20 8c 20 c1 73 74  24 2c 61 25 2c 31 29 3d  |z" . .st$,a%,1)=|
000050d0  bd 28 97 28 c1 73 74 24  2c 61 25 2c 31 29 29 2d  |.(.(.st$,a%,1))-|
000050e0  33 32 29 0d 23 d2 05 cd  0d 23 dc 08 3d 73 74 24  |32).#....#..=st$|
000050f0  0d 23 e6 04 0d 23 f0 1c  dd 20 a4 73 74 72 69 70  |.#...#... .strip|
00005100  5f 65 6e 64 5f 73 70 61  63 65 73 28 73 74 24 29  |_end_spaces(st$)|
00005110  0d 23 fa 12 c8 95 20 c2  73 74 24 2c 31 29 3d 22  |.#.... .st$,1)="|
00005120  20 22 0d 24 04 16 20 20  73 74 24 3d c1 73 74 24  | ".$..  st$=.st$|
00005130  2c a9 73 74 24 2d 31 29  0d 24 0e 05 ce 0d 24 18  |,.st$-1).$....$.|
00005140  08 3d 73 74 24 0d 24 22  04 0d 24 2c 0e dd 20 f2  |.=st$.$"..$,.. .|
00005150  66 73 5f 69 6e 69 74 0d  24 36 13 de 20 66 73 5f  |fs_init.$6.. fs_|
00005160  6d 65 6e 75 25 20 32 30  30 30 0d 24 40 2b 66 73  |menu% 2000.$@+fs|
00005170  5f 77 69 6e 64 25 3d a4  77 69 6e 64 6f 77 5f 74  |_wind%=.window_t|
00005180  65 6d 70 6c 61 74 65 28  22 46 6f 6e 74 53 65 6c  |emplate("FontSel|
00005190  65 63 74 22 29 0d 24 4a  10 66 73 5f 68 61 6e 64  |ect").$J.fs_hand|
000051a0  6c 65 25 3d 30 0d 24 54  04 0d 24 5e 10 66 73 5f  |le%=0.$T..$^.fs_|
000051b0  61 63 74 69 76 65 25 3d  a3 0d 24 68 1f de 20 66  |active%=..$h.. f|
000051c0  73 5f 62 6c 61 6e 6b 24  28 32 29 2c 20 66 73 5f  |s_blank$(2), fs_|
000051d0  74 65 6d 70 24 28 32 29  0d 24 72 26 66 73 5f 62  |temp$(2).$r&fs_b|
000051e0  6c 61 6e 6b 24 28 29 3d  22 22 2c 22 28 4e 6f 72  |lank$()="","(Nor|
000051f0  6d 61 6c 29 22 2c 22 28  4e 6f 6e 65 29 22 0d 24  |mal)","(None)".$|
00005200  7c 05 e1 0d 24 86 04 0d  24 90 29 dd 20 f2 66 73  ||...$...$.). .fs|
00005210  5f 63 6c 69 63 6b 28 6d  78 25 2c 6d 79 25 2c 62  |_click(mx%,my%,b|
00005220  75 74 25 2c 77 69 6e 64  25 2c 69 63 6f 6e 25 29  |ut%,wind%,icon%)|
00005230  0d 24 9a 0e c8 8e 20 69  63 6f 6e 25 20 ca 0d 24  |.$.... icon% ..$|
00005240  a4 25 20 20 c9 20 33 33  2c 33 32 2c 32 39 2c 33  |.%  . 33,32,29,3|
00005250  30 2c 33 31 2c 33 39 2c  33 38 2c 33 35 2c 33 36  |0,31,39,38,35,36|
00005260  2c 33 37 0d 24 ae 30 20  20 20 20 f2 66 73 5f 73  |,37.$.0    .fs_s|
00005270  65 74 68 65 69 67 68 74  28 a4 69 63 6f 6e 5f 76  |etheight(.icon_v|
00005280  61 6c 28 66 73 5f 77 69  6e 64 25 2c 69 63 6f 6e  |al(fs_wind%,icon|
00005290  25 29 29 0d 24 b8 18 20  20 c9 20 31 35 20 3a 20  |%)).$..  . 15 : |
000052a0  f2 66 73 5f 74 72 79 66  6f 6e 74 0d 24 c2 24 20  |.fs_tryfont.$.$ |
000052b0  20 c9 20 32 34 20 3a 20  f2 77 69 6e 64 6f 77 5f  | . 24 : .window_|
000052c0  63 6c 6f 73 65 28 66 73  5f 77 69 6e 64 25 29 0d  |close(fs_wind%).|
000052d0  24 cc 0a 20 20 c9 20 32  32 0d 24 d6 1f 20 20 20  |$..  . 22.$..   |
000052e0  20 f2 77 69 6e 64 6f 77  5f 63 6c 6f 73 65 28 66  | .window_close(f|
000052f0  73 5f 77 69 6e 64 25 29  0d 24 e0 34 20 20 20 20  |s_wind%).$.4    |
00005300  f2 66 73 5f 6e 65 77 73  74 79 6c 65 28 66 73 5f  |.fs_newstyle(fs_|
00005310  6e 61 6d 65 24 2c 66 73  5f 68 65 69 67 68 74 25  |name$,fs_height%|
00005320  2c 66 73 5f 61 73 70 65  63 74 25 29 0d 24 ea 33  |,fs_aspect%).$.3|
00005330  20 20 c9 20 38 2c 39 20  3a 20 66 73 5f 68 65 69  |  . 8,9 : fs_hei|
00005340  67 68 74 25 3d a4 69 63  6f 6e 5f 75 70 64 6f 77  |ght%=.icon_updow|
00005350  6e 28 38 2c 39 2c 31 36  2c 31 2c 39 39 39 29 0d  |n(8,9,16,1,999).|
00005360  24 f4 37 20 20 c9 20 31  33 2c 31 34 20 3a 20 66  |$.7  . 13,14 : f|
00005370  73 5f 61 73 70 65 63 74  25 3d a4 69 63 6f 6e 5f  |s_aspect%=.icon_|
00005380  75 70 64 6f 77 6e 28 31  33 2c 31 34 2c 31 32 2c  |updown(13,14,12,|
00005390  31 2c 39 39 39 29 0d 24  fe 24 20 20 c9 20 32 37  |1,999).$.$  . 27|
000053a0  20 3a 20 f2 66 73 5f 70  6f 70 75 70 6d 65 6e 75  | : .fs_popupmenu|
000053b0  28 30 2c 22 46 6f 6e 74  22 29 0d 25 08 26 20 20  |(0,"Font").%.&  |
000053c0  c9 20 32 30 20 3a 20 f2  66 73 5f 70 6f 70 75 70  |. 20 : .fs_popup|
000053d0  6d 65 6e 75 28 31 2c 22  57 65 69 67 68 74 22 29  |menu(1,"Weight")|
000053e0  0d 25 12 25 20 20 c9 20  32 31 20 3a 20 f2 66 73  |.%.%  . 21 : .fs|
000053f0  5f 70 6f 70 75 70 6d 65  6e 75 28 32 2c 22 53 74  |_popupmenu(2,"St|
00005400  79 6c 65 22 29 0d 25 1c  05 cb 0d 25 26 05 e1 0d  |yle").%....%&...|
00005410  25 30 04 0d 25 3a 15 dd  20 f2 66 73 5f 6d 65 6e  |%0..%:.. .fs_men|
00005420  75 5f 73 65 6c 65 63 74  0d 25 44 1d ea 20 72 65  |u_select.%D.. re|
00005430  73 75 6c 74 24 2c 20 74  72 79 25 2c 20 69 25 2c  |sult$, try%, i%,|
00005440  20 74 72 79 24 0d 25 4e  0e e7 20 21 71 25 3e 3d  | try$.%N.. !q%>=|
00005450  30 20 8c 0d 25 58 26 20  20 72 65 73 75 6c 74 24  |0 ..%X&  result$|
00005460  3d a4 6d 65 6e 75 5f 74  65 78 74 28 66 73 5f 6d  |=.menu_text(fs_m|
00005470  65 6e 75 25 2c 21 71 25  29 0d 25 62 10 20 20 e3  |enu%,!q%).%b.  .|
00005480  20 69 25 3d 30 20 b8 20  32 0d 25 6c 2a 20 20 20  | i%=0 . 2.%l*   |
00005490  20 66 73 5f 74 65 6d 70  24 28 69 25 29 3d a4 66  | fs_temp$(i%)=.f|
000054a0  73 5f 70 61 72 74 28 66  73 5f 6e 61 6d 65 24 2c  |s_part(fs_name$,|
000054b0  69 25 29 0d 25 76 0a 20  20 ed 20 69 25 0d 25 80  |i%).%v.  . i%.%.|
000054c0  21 20 20 66 73 5f 74 65  6d 70 24 28 66 73 5f 77  |!  fs_temp$(fs_w|
000054d0  68 69 63 68 25 29 3d 72  65 73 75 6c 74 24 0d 25  |hich%)=result$.%|
000054e0  8a 0c 20 20 74 72 79 25  3d 31 0d 25 94 07 20 20  |..  try%=1.%..  |
000054f0  f5 0d 25 9e 11 20 20 20  20 c8 8e 20 74 72 79 25  |..%..    .. try%|
00005500  20 ca 0d 25 a8 42 20 20  20 20 20 20 c9 20 31 20  | ..%.B      . 1 |
00005510  3a 20 74 72 79 24 3d a4  66 73 5f 6e 61 6d 65 28  |: try$=.fs_name(|
00005520  66 73 5f 74 65 6d 70 24  28 30 29 2c 66 73 5f 74  |fs_temp$(0),fs_t|
00005530  65 6d 70 24 28 31 29 2c  66 73 5f 74 65 6d 70 24  |emp$(1),fs_temp$|
00005540  28 32 29 29 0d 25 b2 0d  20 20 20 20 20 20 c9 20  |(2)).%..      . |
00005550  32 0d 25 bc 1b 20 20 20  20 20 20 20 20 e7 20 66  |2.%..        . f|
00005560  73 5f 77 68 69 63 68 25  3d 30 20 8c 0d 25 c6 57  |s_which%=0 ..%.W|
00005570  20 20 20 20 20 20 20 20  20 20 e7 20 66 73 5f 74  |          . fs_t|
00005580  65 6d 70 24 28 32 29 3d  22 4f 62 6c 69 71 75 65  |emp$(2)="Oblique|
00005590  22 20 8c 20 74 72 79 24  3d a4 66 73 5f 6e 61 6d  |" . try$=.fs_nam|
000055a0  65 28 66 73 5f 74 65 6d  70 24 28 30 29 2c 66 73  |e(fs_temp$(0),fs|
000055b0  5f 74 65 6d 70 24 28 31  29 2c 22 49 74 61 6c 69  |_temp$(1),"Itali|
000055c0  63 22 29 0d 25 d0 57 20  20 20 20 20 20 20 20 20  |c").%.W         |
000055d0  20 e7 20 66 73 5f 74 65  6d 70 24 28 32 29 3d 22  | . fs_temp$(2)="|
000055e0  49 74 61 6c 69 63 22 20  8c 20 74 72 79 24 3d a4  |Italic" . try$=.|
000055f0  66 73 5f 6e 61 6d 65 28  66 73 5f 74 65 6d 70 24  |fs_name(fs_temp$|
00005600  28 30 29 2c 66 73 5f 74  65 6d 70 24 28 31 29 2c  |(0),fs_temp$(1),|
00005610  22 4f 62 6c 69 71 75 65  22 29 0d 25 da 0d 20 20  |"Oblique").%..  |
00005620  20 20 20 20 20 20 cc 0d  25 e4 38 20 20 20 20 20  |      ..%.8     |
00005630  20 20 20 20 20 74 72 79  24 3d a4 66 73 5f 6e 61  |     try$=.fs_na|
00005640  6d 65 28 66 73 5f 74 65  6d 70 24 28 30 29 2c 66  |me(fs_temp$(0),f|
00005650  73 5f 74 65 6d 70 24 28  31 29 2c 22 2a 22 29 0d  |s_temp$(1),"*").|
00005660  25 ee 0d 20 20 20 20 20  20 20 20 cd 0d 25 f8 31  |%..        ..%.1|
00005670  20 20 20 20 20 20 c9 20  33 20 3a 20 74 72 79 24  |      . 3 : try$|
00005680  3d a4 66 73 5f 6e 61 6d  65 28 66 73 5f 74 65 6d  |=.fs_name(fs_tem|
00005690  70 24 28 30 29 2c 22 2a  22 2c 22 22 29 0d 26 02  |p$(0),"*","").&.|
000056a0  09 20 20 20 20 cb 0d 26  0c 0f 20 20 20 20 74 72  |.    ..&..    tr|
000056b0  79 25 2b 3d 31 0d 26 16  22 20 20 fd 20 a4 66 73  |y%+=1.&."  . .fs|
000056c0  5f 66 6f 6e 74 5f 6f 6b  28 74 72 79 24 29 20 84  |_font_ok(try$) .|
000056d0  20 74 72 79 25 3e 33 0d  26 20 13 20 20 66 73 5f  | try%>3.& .  fs_|
000056e0  6e 61 6d 65 24 3d 74 72  79 24 0d 26 2a 11 20 20  |name$=try$.&*.  |
000056f0  f2 66 73 5f 73 65 74 66  6f 6e 74 0d 26 34 05 cd  |.fs_setfont.&4..|
00005700  0d 26 3e 05 e1 0d 26 48  04 0d 26 52 22 dd 20 f2  |.&>...&H..&R". .|
00005710  66 73 5f 70 6f 70 75 70  6d 65 6e 75 28 77 68 69  |fs_popupmenu(whi|
00005720  63 68 25 2c 74 69 74 6c  65 24 29 0d 26 5c 14 66  |ch%,title$).&\.f|
00005730  73 5f 77 68 69 63 68 25  3d 77 68 69 63 68 25 0d  |s_which%=which%.|
00005740  26 66 2a ea 20 63 6f 75  6e 74 25 2c 20 70 72 65  |&f*. count%, pre|
00005750  66 69 78 24 2c 20 6c 61  73 74 24 2c 20 66 6f 6e  |fix$, last$, fon|
00005760  74 24 2c 20 69 74 65 6d  24 0d 26 70 0f c8 8e 20  |t$, item$.&p... |
00005770  77 68 69 63 68 25 20 ca  0d 26 7a 16 20 20 c9 20  |which% ..&z.  . |
00005780  30 20 3a 20 70 72 65 66  69 78 24 3d 22 22 0d 26  |0 : prefix$="".&|
00005790  84 2c 20 20 c9 20 31 20  3a 20 70 72 65 66 69 78  |.,  . 1 : prefix|
000057a0  24 3d a4 66 73 5f 70 61  72 74 28 66 73 5f 6e 61  |$=.fs_part(fs_na|
000057b0  6d 65 24 2c 30 29 2b 22  2e 22 0d 26 8e 4e 20 20  |me$,0)+".".&.N  |
000057c0  c9 20 32 20 3a 20 70 72  65 66 69 78 24 3d a4 66  |. 2 : prefix$=.f|
000057d0  73 5f 6e 61 6d 65 28 a4  66 73 5f 70 61 72 74 28  |s_name(.fs_part(|
000057e0  66 73 5f 6e 61 6d 65 24  2c 30 29 2c a4 66 73 5f  |fs_name$,0),.fs_|
000057f0  70 61 72 74 28 66 73 5f  6e 61 6d 65 24 2c 31 29  |part(fs_name$,1)|
00005800  2c 22 22 29 2b 22 2e 22  0d 26 98 05 cb 0d 26 a2  |,"")+".".&....&.|
00005810  0c 6c 61 73 74 24 3d 22  22 0d 26 ac 0c 63 6f 75  |.last$="".&..cou|
00005820  6e 74 25 3d 30 0d 26 b6  18 6d 65 6e 75 5f 62 6c  |nt%=0.&..menu_bl|
00005830  6f 63 6b 25 3d 66 73 5f  6d 65 6e 75 25 0d 26 c0  |ock%=fs_menu%.&.|
00005840  1a 64 25 3d a4 73 74 61  72 74 5f 6d 65 6e 75 28  |.d%=.start_menu(|
00005850  74 69 74 6c 65 24 29 0d  26 ca 04 0d 26 d4 05 f5  |title$).&...&...|
00005860  0d 26 de 31 20 20 c8 99  22 46 6f 6e 74 5f 4c 69  |.&.1  .."Font_Li|
00005870  73 74 46 6f 6e 74 73 22  2c 2c 71 25 2c 63 6f 75  |stFonts",,q%,cou|
00005880  6e 74 25 2c 2d 31 20 b8  20 2c 2c 63 6f 75 6e 74  |nt%,-1 . ,,count|
00005890  25 0d 26 e8 14 20 20 e7  20 63 6f 75 6e 74 25 3c  |%.&..  . count%<|
000058a0  3e 2d 31 20 8c 0d 26 f2  15 20 20 20 20 66 6f 6e  |>-1 ..&..    fon|
000058b0  74 24 3d 24 71 25 2b 22  2e 22 0d 26 fc 24 20 20  |t$=$q%+".".&.$  |
000058c0  20 20 e7 20 c0 66 6f 6e  74 24 2c a9 70 72 65 66  |  . .font$,.pref|
000058d0  69 78 24 29 3d 70 72 65  66 69 78 24 20 8c 0d 27  |ix$)=prefix$ ..'|
000058e0  06 46 20 20 20 20 20 20  69 74 65 6d 24 3d c1 66  |.F      item$=.f|
000058f0  6f 6e 74 24 2c a9 70 72  65 66 69 78 24 2b 31 2c  |ont$,.prefix$+1,|
00005900  a7 66 6f 6e 74 24 2c 22  2e 22 2c a9 70 72 65 66  |.font$,".",.pref|
00005910  69 78 24 2b 31 29 2d 28  a9 70 72 65 66 69 78 24  |ix$+1)-(.prefix$|
00005920  2b 31 29 29 0d 27 10 2e  20 20 20 20 20 20 e7 20  |+1)).'..      . |
00005930  69 74 65 6d 24 3d 22 22  20 8c 20 69 74 65 6d 24  |item$="" . item$|
00005940  3d 66 73 5f 62 6c 61 6e  6b 24 28 77 68 69 63 68  |=fs_blank$(which|
00005950  25 29 0d 27 1a 1a 20 20  20 20 20 20 e7 20 69 74  |%).'..      . it|
00005960  65 6d 24 3c 3e 6c 61 73  74 24 20 8c 0d 27 24 1f  |em$<>last$ ..'$.|
00005970  20 20 20 20 20 20 20 20  f2 6d 65 6e 75 5f 69 74  |        .menu_it|
00005980  65 6d 28 69 74 65 6d 24  2c 30 29 0d 27 2e 47 20  |em(item$,0).'.G |
00005990  20 20 20 20 20 20 20 e7  20 69 74 65 6d 24 3d a4  |       . item$=.|
000059a0  66 73 5f 70 61 72 74 28  66 73 5f 6e 61 6d 65 24  |fs_part(fs_name$|
000059b0  2c 77 68 69 63 68 25 29  20 8c 20 f2 6d 65 6e 75  |,which%) . .menu|
000059c0  5f 73 65 74 5f 6c 61 73  74 5f 66 6c 61 67 73 28  |_set_last_flags(|
000059d0  31 29 0d 27 38 17 20 20  20 20 20 20 20 20 6c 61  |1).'8.        la|
000059e0  73 74 24 3d 69 74 65 6d  24 0d 27 42 0b 20 20 20  |st$=item$.'B.   |
000059f0  20 20 20 cd 0d 27 4c 09  20 20 20 20 cd 0d 27 56  |   ..'L.    ..'V|
00005a00  07 20 20 cd 0d 27 60 0f  fd 20 63 6f 75 6e 74 25  |.  ..'`.. count%|
00005a10  3d 2d 31 0d 27 6a 0d f2  6d 65 6e 75 5f 65 6e 64  |=-1.'j..menu_end|
00005a20  0d 27 74 2d f2 6d 65 6e  75 5f 69 63 6f 6e 5f 70  |.'t-.menu_icon_p|
00005a30  6f 70 75 70 28 66 73 5f  77 69 6e 64 25 2c 69 63  |opup(fs_wind%,ic|
00005a40  6f 6e 25 2c 66 73 5f 6d  65 6e 75 25 29 0d 27 7e  |on%,fs_menu%).'~|
00005a50  05 e1 0d 27 88 04 0d 27  92 1a dd 20 a4 66 73 5f  |...'...'... .fs_|
00005a60  66 6f 6e 74 5f 6f 6b 28  f8 20 66 6f 6e 74 24 29  |font_ok(. font$)|
00005a70  0d 27 9c 10 ea 20 6f 6b  25 2c 63 6f 75 6e 74 25  |.'... ok%,count%|
00005a80  0d 27 a6 09 6f 6b 25 3d  a3 0d 27 b0 0c 63 6f 75  |.'..ok%=..'..cou|
00005a90  6e 74 25 3d 30 0d 27 ba  05 f5 0d 27 c4 31 20 20  |nt%=0.'....'.1  |
00005aa0  c8 99 22 46 6f 6e 74 5f  4c 69 73 74 46 6f 6e 74  |.."Font_ListFont|
00005ab0  73 22 2c 2c 71 25 2c 63  6f 75 6e 74 25 2c 2d 31  |s",,q%,count%,-1|
00005ac0  20 b8 20 2c 2c 63 6f 75  6e 74 25 0d 27 ce 14 20  | . ,,count%.'.. |
00005ad0  20 e7 20 63 6f 75 6e 74  25 3c 3e 2d 31 20 8c 0d  | . count%<>-1 ..|
00005ae0  27 d8 19 20 20 20 20 e7  20 c2 66 6f 6e 74 24 2c  |'..    . .font$,|
00005af0  31 29 3d 22 2a 22 20 8c  0d 27 e2 2d 20 20 20 20  |1)="*" ..'.-    |
00005b00  20 20 e7 20 c0 66 6f 6e  74 24 2c a9 66 6f 6e 74  |  . .font$,.font|
00005b10  24 2d 32 29 3d c0 24 71  25 2c a9 66 6f 6e 74 24  |$-2)=.$q%,.font$|
00005b20  2d 32 29 20 8c 0d 27 ec  11 20 20 20 20 20 20 20  |-2) ..'..       |
00005b30  20 6f 6b 25 3d b9 0d 27  f6 15 20 20 20 20 20 20  | ok%=..'..      |
00005b40  20 20 66 6f 6e 74 24 3d  24 71 25 0d 28 00 0b 20  |  font$=$q%.(.. |
00005b50  20 20 20 20 20 cd 0d 28  0a 09 20 20 20 20 cc 0d  |     ..(..    ..|
00005b60  28 14 1d 20 20 20 20 20  20 e7 20 24 71 25 3d 66  |(..      . $q%=f|
00005b70  6f 6e 74 24 20 8c 20 6f  6b 25 3d b9 0d 28 1e 09  |ont$ . ok%=..(..|
00005b80  20 20 20 20 cd 0d 28 28  07 20 20 cd 0d 28 32 0f  |    ..((.  ..(2.|
00005b90  fd 20 63 6f 75 6e 74 25  3d 2d 31 0d 28 3c 08 3d  |. count%=-1.(<.=|
00005ba0  6f 6b 25 0d 28 46 04 0d  28 50 19 dd 20 f2 66 73  |ok%.(F..(P.. .fs|
00005bb0  5f 73 65 74 68 65 69 67  68 74 28 6e 65 77 25 29  |_setheight(new%)|
00005bc0  0d 28 5a 18 e7 20 6e 65  77 25 3c 3e 66 73 5f 68  |.(Z.. new%<>fs_h|
00005bd0  65 69 67 68 74 25 20 8c  0d 28 64 15 20 20 66 73  |eight% ..(d.  fs|
00005be0  5f 68 65 69 67 68 74 25  3d 6e 65 77 25 0d 28 6e  |_height%=new%.(n|
00005bf0  14 20 20 66 73 5f 61 73  70 65 63 74 25 3d 31 30  |.  fs_aspect%=10|
00005c00  30 0d 28 78 11 20 20 f2  66 73 5f 73 65 74 66 6f  |0.(x.  .fs_setfo|
00005c10  6e 74 0d 28 82 05 cd 0d  28 8c 05 e1 0d 28 96 04  |nt.(....(....(..|
00005c20  0d 28 a0 2d dd 20 f2 66  73 5f 70 6f 70 75 70 28  |.(.-. .fs_popup(|
00005c30  74 69 74 6c 65 24 2c 6e  61 6d 65 24 2c 68 65 69  |title$,name$,hei|
00005c40  67 68 74 25 2c 61 73 70  65 63 74 25 29 0d 28 aa  |ght%,aspect%).(.|
00005c50  26 f2 77 69 6e 64 6f 77  5f 6e 65 77 5f 74 69 74  |&.window_new_tit|
00005c60  6c 65 28 66 73 5f 77 69  6e 64 25 2c 74 69 74 6c  |le(fs_wind%,titl|
00005c70  65 24 29 0d 28 b4 16 66  73 5f 68 65 69 67 68 74  |e$).(..fs_height|
00005c80  25 3d 68 65 69 67 68 74  25 0d 28 be 16 66 73 5f  |%=height%.(..fs_|
00005c90  61 73 70 65 63 74 25 3d  61 73 70 65 63 74 25 0d  |aspect%=aspect%.|
00005ca0  28 c8 12 66 73 5f 6e 61  6d 65 24 3d 6e 61 6d 65  |(..fs_name$=name|
00005cb0  24 0d 28 d2 0f f2 66 73  5f 73 65 74 66 6f 6e 74  |$.(...fs_setfont|
00005cc0  0d 28 dc 1b f2 77 69 6e  64 6f 77 5f 70 6f 70 75  |.(...window_popu|
00005cd0  70 28 66 73 5f 77 69 6e  64 25 29 0d 28 e6 0f f2  |p(fs_wind%).(...|
00005ce0  66 73 5f 74 72 79 66 6f  6e 74 0d 28 f0 05 e1 0d  |fs_tryfont.(....|
00005cf0  28 fa 04 0d 29 04 11 dd  20 f2 66 73 5f 67 65 74  |(...)... .fs_get|
00005d00  73 69 7a 65 0d 29 0e 25  66 73 5f 68 65 69 67 68  |size.).%fs_heigh|
00005d10  74 25 3d a4 69 63 6f 6e  5f 76 61 6c 28 66 73 5f  |t%=.icon_val(fs_|
00005d20  77 69 6e 64 25 2c 31 36  29 0d 29 18 25 66 73 5f  |wind%,16).).%fs_|
00005d30  61 73 70 65 63 74 25 3d  a4 69 63 6f 6e 5f 76 61  |aspect%=.icon_va|
00005d40  6c 28 66 73 5f 77 69 6e  64 25 2c 31 32 29 0d 29  |l(fs_wind%,12).)|
00005d50  22 05 e1 0d 29 2c 04 0d  29 36 11 dd 20 f2 66 73  |"...),..)6.. .fs|
00005d60  5f 73 65 74 66 6f 6e 74  0d 29 40 33 f2 69 63 6f  |_setfont.)@3.ico|
00005d70  6e 5f 73 65 74 5f 74 65  78 74 28 66 73 5f 77 69  |n_set_text(fs_wi|
00005d80  6e 64 25 2c 35 2c a4 66  73 5f 70 61 72 74 28 66  |nd%,5,.fs_part(f|
00005d90  73 5f 6e 61 6d 65 24 2c  30 29 29 0d 29 4a 33 f2  |s_name$,0)).)J3.|
00005da0  69 63 6f 6e 5f 73 65 74  5f 74 65 78 74 28 66 73  |icon_set_text(fs|
00005db0  5f 77 69 6e 64 25 2c 34  2c a4 66 73 5f 70 61 72  |_wind%,4,.fs_par|
00005dc0  74 28 66 73 5f 6e 61 6d  65 24 2c 31 29 29 0d 29  |t(fs_name$,1)).)|
00005dd0  54 33 f2 69 63 6f 6e 5f  73 65 74 5f 74 65 78 74  |T3.icon_set_text|
00005de0  28 66 73 5f 77 69 6e 64  25 2c 36 2c a4 66 73 5f  |(fs_wind%,6,.fs_|
00005df0  70 61 72 74 28 66 73 5f  6e 61 6d 65 24 2c 32 29  |part(fs_name$,2)|
00005e00  29 0d 29 5e 29 f2 69 63  6f 6e 5f 73 65 74 5f 76  |).)^).icon_set_v|
00005e10  61 6c 28 66 73 5f 77 69  6e 64 25 2c 31 36 2c 66  |al(fs_wind%,16,f|
00005e20  73 5f 68 65 69 67 68 74  25 29 0d 29 68 29 f2 69  |s_height%).)h).i|
00005e30  63 6f 6e 5f 73 65 74 5f  76 61 6c 28 66 73 5f 77  |con_set_val(fs_w|
00005e40  69 6e 64 25 2c 31 32 2c  66 73 5f 61 73 70 65 63  |ind%,12,fs_aspec|
00005e50  74 25 29 0d 29 72 05 e1  0d 29 7c 04 0d 29 86 11  |t%).)r...)|..)..|
00005e60  dd 20 f2 66 73 5f 74 72  79 66 6f 6e 74 0d 29 ae  |. .fs_tryfont.).|
00005e70  2f e7 20 66 73 5f 68 61  6e 64 6c 65 25 20 8c 20  |/. fs_handle% . |
00005e80  c8 99 22 46 6f 6e 74 5f  4c 6f 73 65 46 6f 6e 74  |.."Font_LoseFont|
00005e90  22 2c 66 73 5f 68 61 6e  64 6c 65 25 0d 29 af 3f  |",fs_handle%.).?|
00005ea0  66 73 5f 68 61 6e 64 6c  65 25 3d a4 66 6f 6e 74  |fs_handle%=.font|
00005eb0  5f 68 61 6e 64 6c 65 28  66 73 5f 6e 61 6d 65 24  |_handle(fs_name$|
00005ec0  2c 66 73 5f 68 65 69 67  68 74 25 2c 66 73 5f 61  |,fs_height%,fs_a|
00005ed0  73 70 65 63 74 25 2c 31  30 30 29 0d 29 c2 28 f2  |spect%,100).).(.|
00005ee0  69 63 6f 6e 5f 73 65 74  5f 66 68 28 66 73 5f 77  |icon_set_fh(fs_w|
00005ef0  69 6e 64 25 2c 31 37 2c  66 73 5f 68 61 6e 64 6c  |ind%,17,fs_handl|
00005f00  65 25 29 0d 29 cc 05 e1  0d 29 d6 04 0d 29 e0 24  |e%).)....)...).$|
00005f10  dd 20 a4 66 73 5f 6e 61  6d 65 28 6e 61 6d 65 24  |. .fs_name(name$|
00005f20  2c 77 65 69 67 68 74 24  2c 73 74 79 6c 65 24 29  |,weight$,style$)|
00005f30  0d 29 ea 22 e7 20 c0 77  65 69 67 68 74 24 2c 31  |.).". .weight$,1|
00005f40  29 3d 22 28 22 20 8c 20  77 65 69 67 68 74 24 3d  |)="(" . weight$=|
00005f50  22 22 0d 29 f4 20 e7 20  c0 73 74 79 6c 65 24 2c  |"".). . .style$,|
00005f60  31 29 3d 22 28 22 20 8c  20 73 74 79 6c 65 24 3d  |1)="(" . style$=|
00005f70  22 22 0d 29 fe 26 e7 20  77 65 69 67 68 74 24 3c  |"".).&. weight$<|
00005f80  3e 22 22 20 8c 20 6e 61  6d 65 24 2b 3d 22 2e 22  |>"" . name$+="."|
00005f90  2b 77 65 69 67 68 74 24  0d 2a 08 24 e7 20 73 74  |+weight$.*.$. st|
00005fa0  79 6c 65 24 3c 3e 22 22  20 8c 20 6e 61 6d 65 24  |yle$<>"" . name$|
00005fb0  2b 3d 22 2e 22 2b 73 74  79 6c 65 24 0d 2a 12 0a  |+="."+style$.*..|
00005fc0  3d 6e 61 6d 65 24 0d 2a  1c 04 0d 2a 26 1b dd 20  |=name$.*...*&.. |
00005fd0  a4 66 73 5f 70 61 72 74  28 6e 61 6d 65 24 2c 70  |.fs_part(name$,p|
00005fe0  61 72 74 25 29 0d 2a 30  0c ea 20 63 6f 75 6e 74  |art%).*0.. count|
00005ff0  25 0d 2a 3a 10 63 6f 75  6e 74 25 3d 70 61 72 74  |%.*:.count%=part|
00006000  25 0d 2a 44 0e 6e 61 6d  65 24 2b 3d 22 2e 22 0d  |%.*D.name$+=".".|
00006010  2a 4e 0d c8 95 20 63 6f  75 6e 74 25 0d 2a 58 21  |*N... count%.*X!|
00006020  20 20 6e 61 6d 65 24 3d  c1 6e 61 6d 65 24 2c a7  |  name$=.name$,.|
00006030  6e 61 6d 65 24 2c 22 2e  22 29 2b 31 29 0d 2a 62  |name$,".")+1).*b|
00006040  0f 20 20 63 6f 75 6e 74  25 2d 3d 31 0d 2a 6c 05  |.  count%-=1.*l.|
00006050  ce 0d 2a 76 2f e7 20 a7  6e 61 6d 65 24 2c 22 2e  |..*v/. .name$,".|
00006060  22 29 20 8c 20 6e 61 6d  65 24 3d c0 6e 61 6d 65  |") . name$=.name|
00006070  24 2c a7 6e 61 6d 65 24  2c 22 2e 22 29 2d 31 29  |$,.name$,".")-1)|
00006080  0d 2a 80 27 e7 20 6e 61  6d 65 24 3d 22 22 20 8c  |.*.'. name$="" .|
00006090  20 6e 61 6d 65 24 3d 66  73 5f 62 6c 61 6e 6b 24  | name$=fs_blank$|
000060a0  28 70 61 72 74 25 29 0d  2a 8a 0a 3d 6e 61 6d 65  |(part%).*..=name|
000060b0  24 0d 2a 94 04 0d 2a 9e  27 dd 20 f2 66 73 5f 6b  |$.*...*.'. .fs_k|
000060c0  65 79 5f 70 72 65 73 73  65 64 28 77 69 6e 64 25  |ey_pressed(wind%|
000060d0  2c 69 63 6f 6e 25 2c 6b  65 79 25 29 0d 2a a8 0e  |,icon%,key%).*..|
000060e0  c8 8e 20 69 63 6f 6e 25  20 ca 0d 2a b2 1b 20 20  |.. icon% ..*..  |
000060f0  c9 20 31 32 2c 31 36 20  3a 20 f2 66 73 5f 67 65  |. 12,16 : .fs_ge|
00006100  74 73 69 7a 65 0d 2a bc  05 cb 0d 2a c6 1c c8 99  |tsize.*....*....|
00006110  22 57 69 6d 70 5f 50 72  6f 63 65 73 73 4b 65 79  |"Wimp_ProcessKey|
00006120  22 2c 6b 65 79 25 0d 2a  d0 05 e1 0d 2a da 04 0d  |",key%.*....*...|
00006130  2a e4 0e dd 20 f2 66 73  5f 71 75 69 74 0d 2a ee  |*... .fs_quit.*.|
00006140  2f e7 20 66 73 5f 68 61  6e 64 6c 65 25 20 8c 20  |/. fs_handle% . |
00006150  c8 99 22 46 6f 6e 74 5f  4c 6f 73 65 46 6f 6e 74  |.."Font_LoseFont|
00006160  22 2c 66 73 5f 68 61 6e  64 6c 65 25 0d 2a f8 05  |",fs_handle%.*..|
00006170  e1 0d 2b 02 04 0d 2b 0c  18 dd 20 a4 77 6f 72 6b  |..+...+... .work|
00006180  5f 73 70 61 63 65 28 73  69 7a 65 25 29 0d 2b 16  |_space(size%).+.|
00006190  18 ea 20 72 6f 6f 6d 25  2c 6e 6f 72 6f 6f 6d 25  |.. room%,noroom%|
000061a0  2c 6e 65 77 25 0d 2b 20  37 c8 99 22 58 57 69 6d  |,new%.+ 7.."XWim|
000061b0  70 5f 53 6c 6f 74 53 69  7a 65 22 2c 61 70 70 73  |p_SlotSize",apps|
000061c0  69 7a 65 25 2b 73 69 7a  65 25 2c 2d 31 20 b8 20  |ize%+size%,-1 . |
000061d0  6e 65 77 25 3b 6e 6f 72  6f 6f 6d 25 0d 2b 2a 19  |new%;noroom%.+*.|
000061e0  72 6f 6f 6d 25 3d 28 28  6e 6f 72 6f 6f 6d 25 80  |room%=((noroom%.|
000061f0  31 29 3d 30 29 0d 2b 34  23 e7 20 6e 65 77 25 3c  |1)=0).+4#. new%<|
00006200  61 70 70 73 69 7a 65 25  2b 73 69 7a 65 25 20 8c  |appsize%+size% .|
00006210  20 72 6f 6f 6d 25 3d a3  0d 2b 3e 23 e7 20 72 6f  | room%=..+>#. ro|
00006220  6f 6d 25 20 8c 20 61 70  70 69 6e 63 25 3d 6e 65  |om% . appinc%=ne|
00006230  77 25 2d 61 70 70 73 69  7a 65 25 0d 2b 48 0a 3d  |w%-appsize%.+H.=|
00006240  72 6f 6f 6d 25 0d 2b 52  04 0d 2b 5c 10 dd 20 f2  |room%.+R..+\.. .|
00006250  68 65 61 70 5f 69 6e 69  74 0d 2b 66 26 c8 99 22  |heap_init.+f&.."|
00006260  57 69 6d 70 5f 53 6c 6f  74 53 69 7a 65 22 2c 2d  |Wimp_SlotSize",-|
00006270  31 2c 2d 31 20 b8 20 61  70 70 73 69 7a 65 25 0d  |1,-1 . appsize%.|
00006280  2b 70 0b 68 65 61 70 25  3d 93 0d 2b 7a 15 68 65  |+p.heap%=..+z.he|
00006290  61 70 5f 73 69 7a 65 25  3d 38 2a 31 30 32 34 0d  |ap_size%=8*1024.|
000062a0  2b 84 1f e7 20 a4 77 6f  72 6b 5f 73 70 61 63 65  |+... .work_space|
000062b0  28 68 65 61 70 5f 73 69  7a 65 25 29 20 8c 0d 2b  |(heap_size%) ..+|
000062c0  8e 25 20 20 c8 99 22 4f  53 5f 48 65 61 70 22 2c  |.%  .."OS_Heap",|
000062d0  30 2c 68 65 61 70 25 2c  2c 68 65 61 70 5f 73 69  |0,heap%,,heap_si|
000062e0  7a 65 25 0d 2b 98 05 cc  0d 2b a2 23 20 20 f2 65  |ze%.+....+.#  .e|
000062f0  72 72 6f 72 5f 6d 65 73  73 61 67 65 28 22 48 65  |rror_message("He|
00006300  61 70 5f 4e 6f 52 6f 6f  6d 22 29 0d 2b ac 05 cd  |ap_NoRoom").+...|
00006310  0d 2b b6 05 e1 0d 2b c0  04 0d 2b ca 19 dd 20 a4  |.+....+...+... .|
00006320  68 65 61 70 5f 6c 61 72  67 65 73 74 5f 62 6c 6f  |heap_largest_blo|
00006330  63 6b 0d 2b d4 0e ea 20  6c 61 72 67 65 73 74 25  |ck.+... largest%|
00006340  0d 2b de 24 c8 99 22 4f  53 5f 48 65 61 70 22 2c  |.+.$.."OS_Heap",|
00006350  31 2c 68 65 61 70 25 20  b8 20 2c 2c 6c 61 72 67  |1,heap% . ,,larg|
00006360  65 73 74 25 0d 2b e8 0d  3d 6c 61 72 67 65 73 74  |est%.+..=largest|
00006370  25 0d 2b f2 04 0d 2b fc  1c dd 20 a4 68 65 61 70  |%.+...+... .heap|
00006380  5f 67 65 74 5f 62 6c 6f  63 6b 28 73 69 7a 65 25  |_get_block(size%|
00006390  29 0d 2c 06 11 ea 20 6f  6b 25 2c 20 62 6c 6f 63  |).,... ok%, bloc|
000063a0  6b 25 0d 2c 10 09 6f 6b  25 3d b9 0d 2c 1a 26 c8  |k%.,..ok%=..,.&.|
000063b0  95 20 6f 6b 25 20 80 20  a4 68 65 61 70 5f 6c 61  |. ok% . .heap_la|
000063c0  72 67 65 73 74 5f 62 6c  6f 63 6b 3c 73 69 7a 65  |rgest_block<size|
000063d0  25 0d 2c 24 1e 20 20 6f  6b 25 3d a4 68 65 61 70  |%.,$.  ok%=.heap|
000063e0  5f 65 78 74 65 6e 64 28  38 2a 31 30 32 34 29 0d  |_extend(8*1024).|
000063f0  2c 2e 05 ce 0d 2c 38 0b  e7 20 6f 6b 25 20 8c 0d  |,....,8.. ok% ..|
00006400  2c 42 2b 20 20 c8 99 22  4f 53 5f 48 65 61 70 22  |,B+  .."OS_Heap"|
00006410  2c 32 2c 68 65 61 70 25  2c 2c 73 69 7a 65 25 20  |,2,heap%,,size% |
00006420  b8 20 2c 2c 62 6c 6f 63  6b 25 0d 2c 4c 05 cc 0d  |. ,,block%.,L...|
00006430  2c 56 0f 20 20 62 6c 6f  63 6b 25 3d 2d 31 0d 2c  |,V.  block%=-1.,|
00006440  60 12 20 20 f2 68 65 61  70 5f 73 68 72 69 6e 6b  |`.  .heap_shrink|
00006450  0d 2c 6a 26 20 20 f2 65  72 72 6f 72 5f 6d 65 73  |.,j&  .error_mes|
00006460  73 61 67 65 28 22 48 65  61 70 5f 4f 75 74 4f 66  |sage("Heap_OutOf|
00006470  52 6f 6f 6d 22 29 0d 2c  74 05 cd 0d 2c 7e 0b 3d  |Room").,t...,~.=|
00006480  62 6c 6f 63 6b 25 0d 2c  88 04 0d 2c 92 20 dd 20  |block%.,...,. . |
00006490  f2 68 65 61 70 5f 6c 6f  73 65 5f 62 6c 6f 63 6b  |.heap_lose_block|
000064a0  28 f8 20 62 6c 6f 63 6b  25 29 0d 2c 9c 2c e7 20  |(. block%).,.,. |
000064b0  62 6c 6f 63 6b 25 3e 2d  31 20 8c 20 c8 99 22 4f  |block%>-1 . .."O|
000064c0  53 5f 48 65 61 70 22 2c  33 2c 68 65 61 70 25 2c  |S_Heap",3,heap%,|
000064d0  62 6c 6f 63 6b 25 0d 2c  a6 0d 62 6c 6f 63 6b 25  |block%.,..block%|
000064e0  3d 2d 31 0d 2c b0 10 f2  68 65 61 70 5f 73 68 72  |=-1.,...heap_shr|
000064f0  69 6e 6b 0d 2c ba 05 e1  0d 2c c4 04 0d 2c ce 12  |ink.,....,...,..|
00006500  dd 20 f2 68 65 61 70 5f  73 68 72 69 6e 6b 0d 2c  |. .heap_shrink.,|
00006510  d8 0f ea 20 6f 6b 25 2c  73 69 7a 65 25 0d 2c e2  |... ok%,size%.,.|
00006520  09 6f 6b 25 3d b9 0d 2c  ec 11 73 69 7a 65 25 3d  |.ok%=..,..size%=|
00006530  2d 31 30 32 34 2a 38 0d  2c f6 0a c8 95 20 6f 6b  |-1024*8.,.... ok|
00006540  25 0d 2d 00 28 20 20 c8  99 22 58 4f 53 5f 48 65  |%.-.(  .."XOS_He|
00006550  61 70 22 2c 35 2c 68 65  61 70 25 2c 2c 73 69 7a  |ap",5,heap%,,siz|
00006560  65 25 20 b8 20 3b 6f 6b  25 0d 2d 0a 15 20 20 6f  |e% . ;ok%.-..  o|
00006570  6b 25 3d 28 28 6f 6b 25  80 31 29 3d 30 29 0d 2d  |k%=((ok%.1)=0).-|
00006580  14 0d 20 20 e7 20 6f 6b  25 20 8c 0d 2d 1e 1b 20  |..  . ok% ..-.. |
00006590  20 20 20 68 65 61 70 5f  73 69 7a 65 25 3d 68 65  |   heap_size%=he|
000065a0  61 70 25 21 31 32 0d 2d  28 23 20 20 20 20 6f 6b  |ap%!12.-(#    ok|
000065b0  25 3d a4 77 6f 72 6b 5f  73 70 61 63 65 28 68 65  |%=.work_space(he|
000065c0  61 70 5f 73 69 7a 65 25  29 0d 2d 32 07 20 20 cd  |ap_size%).-2.  .|
000065d0  0d 2d 3c 05 ce 0d 2d 46  05 e1 0d 2d 50 04 0d 2d  |.-<...-F...-P..-|
000065e0  5a 19 dd 20 a4 68 65 61  70 5f 65 78 74 65 6e 64  |Z.. .heap_extend|
000065f0  28 73 69 7a 65 25 29 0d  2d 64 09 ea 20 6f 6b 25  |(size%).-d.. ok%|
00006600  0d 2d 6e 25 6f 6b 25 3d  a4 77 6f 72 6b 5f 73 70  |.-n%ok%=.work_sp|
00006610  61 63 65 28 68 65 61 70  5f 73 69 7a 65 25 2b 73  |ace(heap_size%+s|
00006620  69 7a 65 25 29 0d 2d 78  0b e7 20 6f 6b 25 20 8c  |ize%).-x.. ok% .|
00006630  0d 2d 82 20 20 20 c8 99  22 4f 53 5f 48 65 61 70  |.-.   .."OS_Heap|
00006640  22 2c 35 2c 68 65 61 70  25 2c 2c 73 69 7a 65 25  |",5,heap%,,size%|
00006650  0d 2d 8c 19 20 20 68 65  61 70 5f 73 69 7a 65 25  |.-..  heap_size%|
00006660  3d 68 65 61 70 25 21 31  32 0d 2d 96 05 cc 0d 2d  |=heap%!12.-....-|
00006670  a0 26 20 20 f2 65 72 72  6f 72 5f 6d 65 73 73 61  |.&  .error_messa|
00006680  67 65 28 22 48 65 61 70  5f 4f 75 74 4f 66 52 6f  |ge("Heap_OutOfRo|
00006690  6f 6d 22 29 0d 2d aa 05  cd 0d 2d b4 08 3d 6f 6b  |om").-....-..=ok|
000066a0  25 0d 2d be 04 0d 2d c8  27 dd 20 a4 68 65 61 70  |%.-...-.'. .heap|
000066b0  5f 65 78 74 65 6e 64 5f  62 6c 6f 63 6b 28 f8 20  |_extend_block(. |
000066c0  62 6c 6f 63 6b 25 2c 69  6e 63 25 29 0d 2d d2 14  |block%,inc%).-..|
000066d0  ea 20 6f 6b 25 2c 20 68  65 61 70 66 75 6c 6c 25  |. ok%, heapfull%|
000066e0  0d 2d dc 0f 68 65 61 70  66 75 6c 6c 25 3d a3 0d  |.-..heapfull%=..|
000066f0  2d e6 05 f5 0d 2d f0 35  20 20 c8 99 22 58 4f 53  |-....-.5  .."XOS|
00006700  5f 48 65 61 70 22 2c 34  2c 68 65 61 70 25 2c 62  |_Heap",4,heap%,b|
00006710  6c 6f 63 6b 25 2c 69 6e  63 25 20 b8 20 2c 2c 62  |lock%,inc% . ,,b|
00006720  6c 6f 63 6b 25 3b 6f 6b  25 0d 2d fa 15 20 20 6f  |lock%;ok%.-..  o|
00006730  6b 25 3d 28 28 6f 6b 25  80 31 29 3d 30 29 0d 2e  |k%=((ok%.1)=0)..|
00006740  04 2e 20 20 e7 20 ac 6f  6b 25 20 8c 20 68 65 61  |..  . .ok% . hea|
00006750  70 66 75 6c 6c 25 3d ac  a4 68 65 61 70 5f 65 78  |pfull%=..heap_ex|
00006760  74 65 6e 64 28 38 2a 31  30 32 34 29 0d 2e 0e 15  |tend(8*1024)....|
00006770  fd 20 6f 6b 25 20 84 20  68 65 61 70 66 75 6c 6c  |. ok% . heapfull|
00006780  25 0d 2e 18 08 3d 6f 6b  25 0d 2e 22 04 0d 2e 2c  |%....=ok%.."...,|
00006790  10 dd 20 f2 68 65 61 70  5f 71 75 69 74 0d 2e 36  |.. .heap_quit..6|
000067a0  21 c8 99 22 57 69 6d 70  5f 53 6c 6f 74 53 69 7a  |!.."Wimp_SlotSiz|
000067b0  65 22 2c 61 70 70 73 69  7a 65 25 2c 2d 31 0d 2e  |e",appsize%,-1..|
000067c0  40 0c 68 65 61 70 25 3d  2d 31 0d 2e 4a 10 68 65  |@.heap%=-1..J.he|
000067d0  61 70 5f 73 69 7a 65 25  3d 30 0d 2e 54 05 e1 0d  |ap_size%=0..T...|
000067e0  2e 5e 04 0d 2e 68 10 dd  20 f2 64 72 61 77 5f 69  |.^...h.. .draw_i|
000067f0  6e 69 74 0d 2e 72 36 de  20 64 72 61 77 5f 62 6f  |nit..r6. draw_bo|
00006800  75 6e 64 25 28 31 30 29  2c 20 64 72 61 77 5f 67  |und%(10), draw_g|
00006810  72 6f 75 70 25 28 31 30  29 2c 20 64 72 61 77 5f  |roup%(10), draw_|
00006820  66 6f 6e 74 24 28 31 30  29 0d 2e 7c 05 e1 0d 2e  |font$(10)..|....|
00006830  86 04 0d 2e 90 22 dd 20  f2 64 72 61 77 5f 68 65  |.....". .draw_he|
00006840  61 64 65 72 28 74 69 74  6c 65 24 2c 6f 78 25 2c  |ader(title$,ox%,|
00006850  6f 79 25 29 0d 2e 9a 1f  74 69 74 6c 65 24 3d c0  |oy%)....title$=.|
00006860  74 69 74 6c 65 24 2b c4  31 32 2c 22 20 22 29 2c  |title$+.12," "),|
00006870  31 32 29 0d 2e a4 21 64  72 61 77 5f 6f 66 66 78  |12)...!draw_offx|
00006880  25 3d 6f 78 25 3a 64 72  61 77 5f 6f 66 66 79 25  |%=ox%:draw_offy%|
00006890  3d 6f 79 25 0d 2e ae 11  64 72 61 77 5f 64 65 70  |=oy%....draw_dep|
000068a0  74 68 25 3d 30 0d 2e b8  18 64 72 61 77 5f 62 5f  |th%=0....draw_b_|
000068b0  73 74 65 70 73 25 3d 38  2a 31 30 32 34 0d 2e c2  |steps%=8*1024...|
000068c0  1a 64 72 61 77 5f 62 73  25 3d 64 72 61 77 5f 62  |.draw_bs%=draw_b|
000068d0  5f 73 74 65 70 73 25 0d  2e cc 29 64 72 61 77 5f  |_steps%...)draw_|
000068e0  62 6c 6f 63 6b 25 3d a4  68 65 61 70 5f 67 65 74  |block%=.heap_get|
000068f0  5f 62 6c 6f 63 6b 28 64  72 61 77 5f 62 73 25 29  |_block(draw_bs%)|
00006900  0d 2e d6 0f 64 72 61 77  5f 70 6f 73 25 3d 30 0d  |....draw_pos%=0.|
00006910  2e e0 19 f2 64 72 61 77  5f 77 6f 72 64 28 26 37  |....draw_word(&7|
00006920  37 36 31 37 32 34 34 29  0d 2e ea 13 f2 64 72 61  |7617244).....dra|
00006930  77 5f 77 6f 72 64 28 32  30 31 29 0d 2e f4 11 f2  |w_word(201).....|
00006940  64 72 61 77 5f 77 6f 72  64 28 30 29 0d 2e fe 14  |draw_word(0)....|
00006950  f2 64 72 61 77 5f 73 74  28 74 69 74 6c 65 24 29  |.draw_st(title$)|
00006960  0d 2f 08 1c 64 72 61 77  5f 62 6f 75 6e 64 25 28  |./..draw_bound%(|
00006970  30 29 3d 64 72 61 77 5f  70 6f 73 25 0d 2f 12 14  |0)=draw_pos%./..|
00006980  f2 64 72 61 77 5f 6e 75  6c 6c 5f 62 6f 75 6e 64  |.draw_null_bound|
00006990  0d 2f 1c 05 e1 0d 2f 26  04 0d 2f 30 0f dd 20 f2  |./..../&../0.. .|
000069a0  64 72 61 77 5f 65 6e 64  0d 2f 3a 15 e7 20 64 72  |draw_end./:.. dr|
000069b0  61 77 5f 64 65 70 74 68  25 3d 30 20 8c 0d 2f 44  |aw_depth%=0 ../D|
000069c0  1a 20 20 64 72 61 77 5f  73 69 7a 65 25 3d 64 72  |.  draw_size%=dr|
000069d0  61 77 5f 70 6f 73 25 0d  2f 4e 05 cc 0d 2f 58 23  |aw_pos%./N.../X#|
000069e0  20 20 f2 68 65 61 70 5f  6c 6f 73 65 5f 62 6c 6f  |  .heap_lose_blo|
000069f0  63 6b 28 64 72 61 77 5f  62 6c 6f 63 6b 25 29 0d  |ck(draw_block%).|
00006a00  2f 62 2b 20 20 f2 65 72  72 6f 72 5f 72 65 70 6f  |/b+  .error_repo|
00006a10  72 74 28 22 42 61 64 6c  79 20 6e 65 73 74 65 64  |rt("Badly nested|
00006a20  20 67 72 6f 75 70 73 2e  22 29 0d 2f 6c 05 cd 0d  | groups.")./l...|
00006a30  2f 76 05 e1 0d 2f 80 04  0d 2f 8a 16 dd 20 f2 64  |/v.../.../... .d|
00006a40  72 61 77 5f 6e 75 6c 6c  5f 62 6f 75 6e 64 0d 2f  |raw_null_bound./|
00006a50  94 15 f2 64 72 61 77 5f  77 6f 72 64 28 31 3c 3c  |...draw_word(1<<|
00006a60  33 30 29 0d 2f 9e 15 f2  64 72 61 77 5f 77 6f 72  |30)./...draw_wor|
00006a70  64 28 31 3c 3c 33 30 29  0d 2f a8 15 f2 64 72 61  |d(1<<30)./...dra|
00006a80  77 5f 77 6f 72 64 28 31  3c 3c 33 31 29 0d 2f b2  |w_word(1<<31)./.|
00006a90  15 f2 64 72 61 77 5f 77  6f 72 64 28 31 3c 3c 33  |..draw_word(1<<3|
00006aa0  31 29 0d 2f bc 05 e1 0d  2f c6 04 0d 2f d0 37 dd  |1)./..../.../.7.|
00006ab0  20 f2 64 72 61 77 5f 74  65 78 74 28 74 65 78 74  | .draw_text(text|
00006ac0  24 2c 66 6e 25 2c 68 65  69 67 68 74 25 2c 61 73  |$,fn%,height%,as|
00006ad0  70 65 63 74 25 2c 78 25  2c 79 25 2c 74 79 70 65  |pect%,x%,y%,type|
00006ae0  25 29 0d 2f da 1c ea 20  66 78 30 25 2c 20 66 79  |%)./... fx0%, fy|
00006af0  30 25 2c 20 66 78 31 25  2c 20 66 79 31 25 0d 2f  |0%, fx1%, fy1%./|
00006b00  db 04 0d 2f dc 3e 66 68  61 6e 64 6c 65 25 3d a4  |.../.>fhandle%=.|
00006b10  66 6f 6e 74 5f 68 61 6e  64 6c 65 28 64 72 61 77  |font_handle(draw|
00006b20  5f 66 6f 6e 74 24 28 66  6e 25 29 2c 68 65 69 67  |_font$(fn%),heig|
00006b30  68 74 25 2c 61 73 70 65  63 74 25 2c 31 30 30 29  |ht%,aspect%,100)|
00006b40  0d 2f e4 04 0d 2f ee 1d  c8 99 22 46 6f 6e 74 5f  |./.../...."Font_|
00006b50  53 65 74 46 6f 6e 74 22  2c 66 68 61 6e 64 6c 65  |SetFont",fhandle|
00006b60  25 0d 2f f8 35 c8 99 22  46 6f 6e 74 5f 53 74 72  |%./.5.."Font_Str|
00006b70  69 6e 67 42 42 6f 78 22  2c 2c 74 65 78 74 24 20  |ingBBox",,text$ |
00006b80  b8 20 2c 66 78 30 25 2c  66 79 30 25 2c 66 78 31  |. ,fx0%,fy0%,fx1|
00006b90  25 2c 66 79 31 25 0d 30  02 21 66 78 30 25 3d 66  |%,fy1%.0.!fx0%=f|
00006ba0  78 30 25 2a 30 2e 36 34  3a 66 79 30 25 3d 66 79  |x0%*0.64:fy0%=fy|
00006bb0  30 25 2a 30 2e 36 34 0d  30 0c 21 66 78 31 25 3d  |0%*0.64.0.!fx1%=|
00006bc0  66 78 31 25 2a 30 2e 36  34 3a 66 79 31 25 3d 66  |fx1%*0.64:fy1%=f|
00006bd0  79 31 25 2a 30 2e 36 34  0d 30 16 0e c8 8e 20 74  |y1%*0.64.0.... t|
00006be0  79 70 65 25 20 ca 0d 30  20 14 20 20 c9 20 31 20  |ype% ..0 .  . 1 |
00006bf0  3a 20 78 25 2d 3d 66 78  31 25 0d 30 2a 16 20 20  |: x%-=fx1%.0*.  |
00006c00  c9 20 32 20 3a 20 78 25  2d 3d 66 78 31 25 2f 32  |. 2 : x%-=fx1%/2|
00006c10  0d 30 34 14 20 20 c9 20  33 20 3a 20 79 25 2d 3d  |.04.  . 3 : y%-=|
00006c20  66 79 31 25 0d 30 3e 16  20 20 c9 20 34 20 3a 20  |fy1%.0>.  . 4 : |
00006c30  79 25 2d 3d 66 79 31 25  2f 32 0d 30 48 05 cb 0d  |y%-=fy1%/2.0H...|
00006c40  30 52 1e c8 99 22 46 6f  6e 74 5f 4c 6f 73 65 46  |0R..."Font_LoseF|
00006c50  6f 6e 74 22 2c 66 68 61  6e 64 6c 65 25 0d 30 5c  |ont",fhandle%.0\|
00006c60  21 78 25 2b 3d 64 72 61  77 5f 6f 66 66 78 25 3a  |!x%+=draw_offx%:|
00006c70  79 25 2b 3d 64 72 61 77  5f 6f 66 66 79 25 0d 30  |y%+=draw_offy%.0|
00006c80  66 04 0d 30 70 1b f2 64  72 61 77 5f 73 74 61 72  |f..0p..draw_star|
00006c90  74 5f 6f 62 6a 65 63 74  28 31 2c b9 29 0d 30 7a  |t_object(1,.).0z|
00006ca0  25 64 72 61 77 5f 78 30  25 3d 78 25 2b 66 78 30  |%draw_x0%=x%+fx0|
00006cb0  25 3a 64 72 61 77 5f 79  30 25 3d 79 25 2b 66 79  |%:draw_y0%=y%+fy|
00006cc0  30 25 0d 30 84 25 64 72  61 77 5f 78 31 25 3d 78  |0%.0.%draw_x1%=x|
00006cd0  25 2b 66 78 31 25 3a 64  72 61 77 5f 79 31 25 3d  |%+fx1%:draw_y1%=|
00006ce0  79 25 2b 66 79 31 25 0d  30 8e 11 f2 64 72 61 77  |y%+fy1%.0...draw|
00006cf0  5f 77 6f 72 64 28 30 29  0d 30 98 19 f2 64 72 61  |_word(0).0...dra|
00006d00  77 5f 77 6f 72 64 28 26  46 46 46 46 46 46 30 30  |w_word(&FFFFFF00|
00006d10  29 0d 30 a2 13 f2 64 72  61 77 5f 77 6f 72 64 28  |).0...draw_word(|
00006d20  66 6e 25 29 0d 30 ac 23  f2 64 72 61 77 5f 77 6f  |fn%).0.#.draw_wo|
00006d30  72 64 28 68 65 69 67 68  74 25 2a 61 73 70 65 63  |rd(height%*aspec|
00006d40  74 25 2a 36 2e 34 29 0d  30 b6 1b f2 64 72 61 77  |t%*6.4).0...draw|
00006d50  5f 77 6f 72 64 28 68 65  69 67 68 74 25 2a 36 34  |_word(height%*64|
00006d60  30 29 0d 30 c0 12 f2 64  72 61 77 5f 77 6f 72 64  |0).0...draw_word|
00006d70  28 78 25 29 0d 30 ca 12  f2 64 72 61 77 5f 77 6f  |(x%).0...draw_wo|
00006d80  72 64 28 79 25 29 0d 30  d4 16 f2 64 72 61 77 5f  |rd(y%).0...draw_|
00006d90  73 74 28 74 65 78 74 24  2b bd 30 29 0d 30 de 0f  |st(text$+.0).0..|
00006da0  f2 64 72 61 77 5f 61 6c  69 67 6e 0d 30 e8 14 f2  |.draw_align.0...|
00006db0  64 72 61 77 5f 65 6e 64  5f 6f 62 6a 65 63 74 0d  |draw_end_object.|
00006dc0  30 f2 05 e1 0d 30 fc 04  0d 31 06 1b dd 20 f2 64  |0....0...1... .d|
00006dd0  72 61 77 5f 73 74 61 72  74 5f 66 6f 6e 74 74 61  |raw_start_fontta|
00006de0  62 6c 65 0d 31 10 1b f2  64 72 61 77 5f 73 74 61  |ble.1...draw_sta|
00006df0  72 74 5f 6f 62 6a 65 63  74 28 30 2c a3 29 0d 31  |rt_object(0,.).1|
00006e00  1a 11 64 72 61 77 5f 66  6f 6e 74 73 25 3d 30 0d  |..draw_fonts%=0.|
00006e10  31 24 05 e1 0d 31 2e 04  0d 31 38 19 dd 20 f2 64  |1$...1...18.. .d|
00006e20  72 61 77 5f 65 6e 64 5f  66 6f 6e 74 74 61 62 6c  |raw_end_fonttabl|
00006e30  65 0d 31 42 0f f2 64 72  61 77 5f 61 6c 69 67 6e  |e.1B..draw_align|
00006e40  0d 31 4c 14 f2 64 72 61  77 5f 65 6e 64 5f 6f 62  |.1L..draw_end_ob|
00006e50  6a 65 63 74 0d 31 56 05  e1 0d 31 60 04 0d 31 6a  |ject.1V...1`..1j|
00006e60  1b dd 20 f2 64 72 61 77  5f 61 64 64 5f 66 6f 6e  |.. .draw_add_fon|
00006e70  74 28 66 6f 6e 74 24 29  0d 31 74 12 64 72 61 77  |t(font$).1t.draw|
00006e80  5f 66 6f 6e 74 73 25 2b  3d 31 0d 31 7e 21 64 72  |_fonts%+=1.1~!dr|
00006e90  61 77 5f 66 6f 6e 74 24  28 64 72 61 77 5f 66 6f  |aw_font$(draw_fo|
00006ea0  6e 74 73 25 29 3d 66 6f  6e 74 24 0d 31 88 1b f2  |nts%)=font$.1...|
00006eb0  64 72 61 77 5f 62 79 74  65 28 64 72 61 77 5f 66  |draw_byte(draw_f|
00006ec0  6f 6e 74 73 25 29 0d 31  92 16 f2 64 72 61 77 5f  |onts%).1...draw_|
00006ed0  73 74 28 66 6f 6e 74 24  2b bd 30 29 0d 31 9c 05  |st(font$+.0).1..|
00006ee0  e1 0d 31 a6 04 0d 31 b0  26 dd 20 f2 64 72 61 77  |..1...1.&. .draw|
00006ef0  5f 73 74 61 72 74 5f 6f  62 6a 65 63 74 28 74 79  |_start_object(ty|
00006f00  70 65 25 2c 62 6f 75 6e  64 25 29 0d 31 ba 1d 64  |pe%,bound%).1..d|
00006f10  72 61 77 5f 73 74 61 72  74 5f 6f 62 6a 25 3d 64  |raw_start_obj%=d|
00006f20  72 61 77 5f 70 6f 73 25  0d 31 c4 15 f2 64 72 61  |raw_pos%.1...dra|
00006f30  77 5f 77 6f 72 64 28 74  79 70 65 25 29 0d 31 ce  |w_word(type%).1.|
00006f40  11 f2 64 72 61 77 5f 77  6f 72 64 28 30 29 0d 31  |..draw_word(0).1|
00006f50  d8 0e e7 20 62 6f 75 6e  64 25 20 8c 0d 31 e2 1f  |... bound% ..1..|
00006f60  20 20 64 72 61 77 5f 6f  62 6a 5f 62 6f 75 6e 64  |  draw_obj_bound|
00006f70  25 3d 64 72 61 77 5f 70  6f 73 25 0d 31 ec 16 20  |%=draw_pos%.1.. |
00006f80  20 f2 64 72 61 77 5f 6e  75 6c 6c 5f 62 6f 75 6e  | .draw_null_boun|
00006f90  64 0d 31 f6 14 20 20 64  72 61 77 5f 78 30 25 3d  |d.1..  draw_x0%=|
00006fa0  31 3c 3c 33 30 0d 32 00  14 20 20 64 72 61 77 5f  |1<<30.2..  draw_|
00006fb0  79 30 25 3d 31 3c 3c 33  30 0d 32 0a 14 20 20 64  |y0%=1<<30.2..  d|
00006fc0  72 61 77 5f 78 31 25 3d  31 3c 3c 33 31 0d 32 14  |raw_x1%=1<<31.2.|
00006fd0  14 20 20 64 72 61 77 5f  79 31 25 3d 31 3c 3c 33  |.  draw_y1%=1<<3|
00006fe0  31 0d 32 1e 05 cc 0d 32  28 18 20 20 64 72 61 77  |1.2....2(.  draw|
00006ff0  5f 6f 62 6a 5f 62 6f 75  6e 64 25 3d 2d 31 0d 32  |_obj_bound%=-1.2|
00007000  32 05 cd 0d 32 3c 05 e1  0d 32 46 04 0d 32 50 17  |2...2<...2F..2P.|
00007010  dd 20 f2 64 72 61 77 5f  73 74 61 72 74 5f 67 72  |. .draw_start_gr|
00007020  6f 75 70 0d 32 5a 12 64  72 61 77 5f 64 65 70 74  |oup.2Z.draw_dept|
00007030  68 25 2b 3d 31 0d 32 64  1b f2 64 72 61 77 5f 73  |h%+=1.2d..draw_s|
00007040  74 61 72 74 5f 6f 62 6a  65 63 74 28 36 2c b9 29  |tart_object(6,.)|
00007050  0d 32 6e 2c 64 72 61 77  5f 67 72 6f 75 70 25 28  |.2n,draw_group%(|
00007060  64 72 61 77 5f 64 65 70  74 68 25 29 3d 64 72 61  |draw_depth%)=dra|
00007070  77 5f 73 74 61 72 74 5f  6f 62 6a 25 0d 32 78 2c  |w_start_obj%.2x,|
00007080  64 72 61 77 5f 62 6f 75  6e 64 25 28 64 72 61 77  |draw_bound%(draw|
00007090  5f 64 65 70 74 68 25 29  3d 64 72 61 77 5f 6f 62  |_depth%)=draw_ob|
000070a0  6a 5f 62 6f 75 6e 64 25  0d 32 82 11 f2 64 72 61  |j_bound%.2...dra|
000070b0  77 5f 77 6f 72 64 28 30  29 0d 32 8c 11 f2 64 72  |w_word(0).2...dr|
000070c0  61 77 5f 77 6f 72 64 28  30 29 0d 32 96 11 f2 64  |aw_word(0).2...d|
000070d0  72 61 77 5f 77 6f 72 64  28 30 29 0d 32 a0 05 e1  |raw_word(0).2...|
000070e0  0d 32 aa 04 0d 32 b4 15  dd 20 f2 64 72 61 77 5f  |.2...2... .draw_|
000070f0  65 6e 64 5f 67 72 6f 75  70 0d 32 be 16 e7 20 64  |end_group.2... d|
00007100  72 61 77 5f 62 6c 6f 63  6b 25 3e 2d 31 20 8c 0d  |raw_block%>-1 ..|
00007110  32 c8 2e 20 20 64 72 61  77 5f 6f 62 6a 5f 62 6f  |2..  draw_obj_bo|
00007120  75 6e 64 25 3d 64 72 61  77 5f 62 6f 75 6e 64 25  |und%=draw_bound%|
00007130  28 64 72 61 77 5f 64 65  70 74 68 25 29 0d 32 d2  |(draw_depth%).2.|
00007140  2e 20 20 64 72 61 77 5f  73 74 61 72 74 5f 6f 62  |.  draw_start_ob|
00007150  6a 25 3d 64 72 61 77 5f  67 72 6f 75 70 25 28 64  |j%=draw_group%(d|
00007160  72 61 77 5f 64 65 70 74  68 25 29 0d 32 dc 2d 20  |raw_depth%).2.- |
00007170  20 64 72 61 77 5f 62 6f  75 6e 64 25 3d 64 72 61  | draw_bound%=dra|
00007180  77 5f 62 6c 6f 63 6b 25  2b 64 72 61 77 5f 6f 62  |w_block%+draw_ob|
00007190  6a 5f 62 6f 75 6e 64 25  0d 32 e6 1b 20 20 64 72  |j_bound%.2..  dr|
000071a0  61 77 5f 78 30 25 3d 21  64 72 61 77 5f 62 6f 75  |aw_x0%=!draw_bou|
000071b0  6e 64 25 0d 32 f0 1c 20  20 64 72 61 77 5f 79 30  |nd%.2..  draw_y0|
000071c0  25 3d 64 72 61 77 5f 62  6f 75 6e 64 25 21 34 0d  |%=draw_bound%!4.|
000071d0  32 fa 1c 20 20 64 72 61  77 5f 78 31 25 3d 64 72  |2..  draw_x1%=dr|
000071e0  61 77 5f 62 6f 75 6e 64  25 21 38 0d 33 04 1d 20  |aw_bound%!8.3.. |
000071f0  20 64 72 61 77 5f 79 31  25 3d 64 72 61 77 5f 62  | draw_y1%=draw_b|
00007200  6f 75 6e 64 25 21 31 32  0d 33 0e 14 20 20 64 72  |ound%!12.3..  dr|
00007210  61 77 5f 64 65 70 74 68  25 2d 3d 31 0d 33 18 16  |aw_depth%-=1.3..|
00007220  20 20 f2 64 72 61 77 5f  65 6e 64 5f 6f 62 6a 65  |  .draw_end_obje|
00007230  63 74 0d 33 22 05 cd 0d  33 2c 05 e1 0d 33 36 04  |ct.3"...3,...36.|
00007240  0d 33 40 16 dd 20 f2 64  72 61 77 5f 65 6e 64 5f  |.3@.. .draw_end_|
00007250  6f 62 6a 65 63 74 0d 33  4a 16 e7 20 64 72 61 77  |object.3J.. draw|
00007260  5f 62 6c 6f 63 6b 25 3e  2d 31 20 8c 0d 33 54 40  |_block%>-1 ..3T@|
00007270  20 20 21 28 64 72 61 77  5f 73 74 61 72 74 5f 6f  |  !(draw_start_o|
00007280  62 6a 25 2b 64 72 61 77  5f 62 6c 6f 63 6b 25 2b  |bj%+draw_block%+|
00007290  34 29 3d 64 72 61 77 5f  70 6f 73 25 2d 64 72 61  |4)=draw_pos%-dra|
000072a0  77 5f 73 74 61 72 74 5f  6f 62 6a 25 0d 33 5e 1c  |w_start_obj%.3^.|
000072b0  20 20 e7 20 64 72 61 77  5f 6f 62 6a 5f 62 6f 75  |  . draw_obj_bou|
000072c0  6e 64 25 3e 2d 31 20 8c  0d 33 68 2f 20 20 20 20  |nd%>-1 ..3h/    |
000072d0  64 72 61 77 5f 62 6f 75  6e 64 25 3d 64 72 61 77  |draw_bound%=draw|
000072e0  5f 62 6c 6f 63 6b 25 2b  64 72 61 77 5f 6f 62 6a  |_block%+draw_obj|
000072f0  5f 62 6f 75 6e 64 25 0d  33 72 1d 20 20 20 20 21  |_bound%.3r.    !|
00007300  64 72 61 77 5f 62 6f 75  6e 64 25 3d 64 72 61 77  |draw_bound%=draw|
00007310  5f 78 30 25 0d 33 7c 1e  20 20 20 20 64 72 61 77  |_x0%.3|.    draw|
00007320  5f 62 6f 75 6e 64 25 21  34 3d 64 72 61 77 5f 79  |_bound%!4=draw_y|
00007330  30 25 0d 33 86 1e 20 20  20 20 64 72 61 77 5f 62  |0%.3..    draw_b|
00007340  6f 75 6e 64 25 21 38 3d  64 72 61 77 5f 78 31 25  |ound%!8=draw_x1%|
00007350  0d 33 90 1f 20 20 20 20  64 72 61 77 5f 62 6f 75  |.3..    draw_bou|
00007360  6e 64 25 21 31 32 3d 64  72 61 77 5f 79 31 25 0d  |nd%!12=draw_y1%.|
00007370  33 9a 38 20 20 20 20 64  72 61 77 5f 62 6f 75 6e  |3.8    draw_boun|
00007380  64 25 3d 64 72 61 77 5f  62 6f 75 6e 64 25 28 64  |d%=draw_bound%(d|
00007390  72 61 77 5f 64 65 70 74  68 25 29 2b 64 72 61 77  |raw_depth%)+draw|
000073a0  5f 62 6c 6f 63 6b 25 0d  33 a4 37 20 20 20 20 e7  |_block%.3.7    .|
000073b0  20 64 72 61 77 5f 78 30  25 3c 21 64 72 61 77 5f  | draw_x0%<!draw_|
000073c0  62 6f 75 6e 64 25 20 8c  20 21 64 72 61 77 5f 62  |bound% . !draw_b|
000073d0  6f 75 6e 64 25 3d 64 72  61 77 5f 78 30 25 0d 33  |ound%=draw_x0%.3|
000073e0  ae 39 20 20 20 20 e7 20  64 72 61 77 5f 79 30 25  |.9    . draw_y0%|
000073f0  3c 64 72 61 77 5f 62 6f  75 6e 64 25 21 34 20 8c  |<draw_bound%!4 .|
00007400  20 64 72 61 77 5f 62 6f  75 6e 64 25 21 34 3d 64  | draw_bound%!4=d|
00007410  72 61 77 5f 79 30 25 0d  33 b8 39 20 20 20 20 e7  |raw_y0%.3.9    .|
00007420  20 64 72 61 77 5f 78 31  25 3e 64 72 61 77 5f 62  | draw_x1%>draw_b|
00007430  6f 75 6e 64 25 21 38 20  8c 20 64 72 61 77 5f 62  |ound%!8 . draw_b|
00007440  6f 75 6e 64 25 21 38 3d  64 72 61 77 5f 78 31 25  |ound%!8=draw_x1%|
00007450  0d 33 c2 3b 20 20 20 20  e7 20 64 72 61 77 5f 79  |.3.;    . draw_y|
00007460  31 25 3e 64 72 61 77 5f  62 6f 75 6e 64 25 21 31  |1%>draw_bound%!1|
00007470  32 20 8c 20 64 72 61 77  5f 62 6f 75 6e 64 25 21  |2 . draw_bound%!|
00007480  31 32 3d 64 72 61 77 5f  79 31 25 0d 33 cc 07 20  |12=draw_y1%.3.. |
00007490  20 cd 0d 33 d6 05 cd 0d  33 e0 05 e1 0d 33 ea 04  | ..3....3....3..|
000074a0  0d 33 f4 17 dd 20 f2 64  72 61 77 5f 77 6f 72 64  |.3... .draw_word|
000074b0  28 77 6f 72 64 25 29 0d  33 fe 16 e7 20 64 72 61  |(word%).3... dra|
000074c0  77 5f 62 6c 6f 63 6b 25  3e 2d 31 20 8c 0d 34 08  |w_block%>-1 ..4.|
000074d0  32 20 20 e7 20 64 72 61  77 5f 70 6f 73 25 2b 34  |2  . draw_pos%+4|
000074e0  3e 64 72 61 77 5f 62 73  25 20 8c 20 f2 64 72 61  |>draw_bs% . .dra|
000074f0  77 5f 74 72 79 5f 74 6f  5f 65 78 74 65 6e 64 0d  |w_try_to_extend.|
00007500  34 12 18 20 20 e7 20 64  72 61 77 5f 62 6c 6f 63  |4..  . draw_bloc|
00007510  6b 25 3e 2d 31 20 8c 0d  34 1c 23 20 20 20 20 64  |k%>-1 ..4.#    d|
00007520  72 61 77 5f 62 6c 6f 63  6b 25 21 64 72 61 77 5f  |raw_block%!draw_|
00007530  70 6f 73 25 3d 77 6f 72  64 25 0d 34 26 14 20 20  |pos%=word%.4&.  |
00007540  20 20 64 72 61 77 5f 70  6f 73 25 2b 3d 34 0d 34  |  draw_pos%+=4.4|
00007550  30 07 20 20 cd 0d 34 3a  05 cd 0d 34 44 05 e1 0d  |0.  ..4:...4D...|
00007560  34 4e 04 0d 34 58 17 dd  20 f2 64 72 61 77 5f 62  |4N..4X.. .draw_b|
00007570  79 74 65 28 62 79 74 65  25 29 0d 34 62 16 e7 20  |yte(byte%).4b.. |
00007580  64 72 61 77 5f 62 6c 6f  63 6b 25 3e 2d 31 20 8c  |draw_block%>-1 .|
00007590  0d 34 6c 32 20 20 e7 20  64 72 61 77 5f 70 6f 73  |.4l2  . draw_pos|
000075a0  25 2b 31 3e 64 72 61 77  5f 62 73 25 20 8c 20 f2  |%+1>draw_bs% . .|
000075b0  64 72 61 77 5f 74 72 79  5f 74 6f 5f 65 78 74 65  |draw_try_to_exte|
000075c0  6e 64 0d 34 76 18 20 20  e7 20 64 72 61 77 5f 62  |nd.4v.  . draw_b|
000075d0  6c 6f 63 6b 25 3e 2d 31  20 8c 0d 34 80 23 20 20  |lock%>-1 ..4.#  |
000075e0  20 20 64 72 61 77 5f 62  6c 6f 63 6b 25 3f 64 72  |  draw_block%?dr|
000075f0  61 77 5f 70 6f 73 25 3d  62 79 74 65 25 0d 34 8a  |aw_pos%=byte%.4.|
00007600  14 20 20 20 20 64 72 61  77 5f 70 6f 73 25 2b 3d  |.    draw_pos%+=|
00007610  31 0d 34 94 07 20 20 cd  0d 34 9e 05 cd 0d 34 a8  |1.4..  ..4....4.|
00007620  05 e1 0d 34 b2 04 0d 34  bc 11 dd 20 f2 64 72 61  |...4...4... .dra|
00007630  77 5f 61 6c 69 67 6e 0d  34 c6 16 c8 95 20 28 64  |w_align.4.... (d|
00007640  72 61 77 5f 70 6f 73 25  80 33 29 3e 30 0d 34 d0  |raw_pos%.3)>0.4.|
00007650  13 20 20 f2 64 72 61 77  5f 62 79 74 65 28 30 29  |.  .draw_byte(0)|
00007660  0d 34 da 05 ce 0d 34 e4  05 e1 0d 34 ee 04 0d 34  |.4....4....4...4|
00007670  f8 13 dd 20 f2 64 72 61  77 5f 73 74 28 73 74 24  |... .draw_st(st$|
00007680  29 0d 35 02 08 ea 20 61  25 0d 35 0c 16 e7 20 64  |).5... a%.5... d|
00007690  72 61 77 5f 62 6c 6f 63  6b 25 3e 2d 31 20 8c 0d  |raw_block%>-1 ..|
000076a0  35 16 35 20 20 e7 20 64  72 61 77 5f 70 6f 73 25  |5.5  . draw_pos%|
000076b0  2b a9 73 74 24 3e 64 72  61 77 5f 62 73 25 20 8c  |+.st$>draw_bs% .|
000076c0  20 f2 64 72 61 77 5f 74  72 79 5f 74 6f 5f 65 78  | .draw_try_to_ex|
000076d0  74 65 6e 64 0d 35 20 18  20 20 e7 20 64 72 61 77  |tend.5 .  . draw|
000076e0  5f 62 6c 6f 63 6b 25 3e  2d 31 20 8c 0d 35 2a 15  |_block%>-1 ..5*.|
000076f0  20 20 20 20 e3 20 61 25  3d 31 20 b8 20 a9 73 74  |    . a%=1 . .st|
00007700  24 0d 35 34 2b 20 20 20  20 20 20 64 72 61 77 5f  |$.54+      draw_|
00007710  62 6c 6f 63 6b 25 3f 64  72 61 77 5f 70 6f 73 25  |block%?draw_pos%|
00007720  3d 97 c1 73 74 24 2c 61  25 2c 31 29 0d 35 3e 16  |=..st$,a%,1).5>.|
00007730  20 20 20 20 20 20 64 72  61 77 5f 70 6f 73 25 2b  |      draw_pos%+|
00007740  3d 31 0d 35 48 0c 20 20  20 20 ed 20 61 25 0d 35  |=1.5H.    . a%.5|
00007750  52 07 20 20 cd 0d 35 5c  05 cd 0d 35 66 05 e1 0d  |R.  ..5\...5f...|
00007760  35 70 04 0d 35 7a 1d dd  20 f2 64 72 61 77 5f 70  |5p..5z.. .draw_p|
00007770  6c 61 63 65 5f 6f 72 64  73 28 78 25 2c 79 25 29  |lace_ords(x%,y%)|
00007780  0d 35 84 12 78 25 2b 3d  64 72 61 77 5f 6f 66 66  |.5..x%+=draw_off|
00007790  78 25 0d 35 8e 12 79 25  2b 3d 64 72 61 77 5f 6f  |x%.5..y%+=draw_o|
000077a0  66 66 79 25 0d 35 98 13  f2 70 6c 61 63 65 5f 77  |ffy%.5...place_w|
000077b0  6f 72 64 28 78 25 29 0d  35 a2 13 f2 70 6c 61 63  |ord(x%).5...plac|
000077c0  65 5f 77 6f 72 64 28 79  25 29 0d 35 ac 05 e1 0d  |e_word(y%).5....|
000077d0  35 b6 04 0d 35 c0 19 dd  20 f2 64 72 61 77 5f 74  |5...5... .draw_t|
000077e0  72 79 5f 74 6f 5f 65 78  74 65 6e 64 0d 35 ca 35  |ry_to_extend.5.5|
000077f0  e7 20 a4 68 65 61 70 5f  65 78 74 65 6e 64 5f 62  |. .heap_extend_b|
00007800  6c 6f 63 6b 28 64 72 61  77 5f 62 6c 6f 63 6b 25  |lock(draw_block%|
00007810  2c 64 72 61 77 5f 62 5f  73 74 65 70 73 25 29 20  |,draw_b_steps%) |
00007820  8c 0d 35 d4 1d 20 20 64  72 61 77 5f 62 73 25 2b  |..5..  draw_bs%+|
00007830  3d 64 72 61 77 5f 62 5f  73 74 65 70 73 25 0d 35  |=draw_b_steps%.5|
00007840  de 05 cc 0d 35 e8 23 20  20 f2 68 65 61 70 5f 6c  |....5.#  .heap_l|
00007850  6f 73 65 5f 62 6c 6f 63  6b 28 64 72 61 77 5f 62  |ose_block(draw_b|
00007860  6c 6f 63 6b 25 29 0d 35  f2 05 cd 0d 35 fc 05 e1  |lock%).5....5...|
00007870  0d 35 fd 04 0d 35 fe 1c  dd 20 f2 65 72 72 6f 72  |.5...5... .error|
00007880  5f 6d 65 73 73 61 67 65  28 74 6f 6b 65 6e 24 29  |_message(token$)|
00007890  0d 35 ff 20 f2 65 72 72  6f 72 5f 72 65 70 6f 72  |.5. .error_repor|
000078a0  74 28 a4 6d 65 73 73 28  74 6f 6b 65 6e 24 29 29  |t(.mess(token$))|
000078b0  0d 36 00 05 e1 0d 36 06  04 0d 36 10 1c dd 20 f2  |.6....6...6... .|
000078c0  65 72 72 6f 72 5f 72 65  70 6f 72 74 28 24 28 71  |error_report($(q|
000078d0  25 2b 34 29 29 0d 36 1a  26 f4 20 57 68 6f 6f 70  |%+4)).6.&. Whoop|
000078e0  73 20 73 6f 6d 65 74 68  69 6e 67 20 68 61 73 20  |s something has |
000078f0  67 6f 6e 65 20 77 72 6f  6e 67 21 0d 36 24 18 c8  |gone wrong!.6$..|
00007900  99 22 57 69 6d 70 5f 44  72 61 67 42 6f 78 22 2c  |."Wimp_DragBox",|
00007910  2c 2d 31 0d 36 2e 0f 64  72 61 67 67 69 6e 67 25  |,-1.6..dragging%|
00007920  3d a3 0d 36 38 0b 21 71  25 3d 32 35 35 0d 36 42  |=..68.!q%=255.6B|
00007930  26 c8 99 22 57 69 6d 70  5f 52 65 70 6f 72 74 45  |&.."Wimp_ReportE|
00007940  72 72 6f 72 22 2c 71 25  2c 31 2c 6d 79 5f 6e 61  |rror",q%,1,my_na|
00007950  6d 65 24 0d 36 4c 05 e1  0d ff                    |me$.6L....|
0000795a