Home » Archimedes archive » Acorn User » AU 1995-06.adf » !Education_Education » Ultima/!Victorian/!Runimage

Ultima/!Victorian/!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 1995-06.adf » !Education_Education
Filename: Ultima/!Victorian/!Runimage
Read OK:
File size: CE2C bytes
Load address: 0000
Exec address: 0000
File contents
    1REM Ultimap v 1.10 (17 Feb 1995)
    2REM LEN Simon Hayles 1994
    3
    4 HIMEM=&40000
    5 DIM taskid% 4:$taskid%="TASK"
    6 SYS "Wimp_Initialise",200,!taskid%,"Ultimap" TO version%,task_handle%
    7
    8 ON ERROR PROCerrorbox
    9
   10 PROCvars
   11
   12 SYS "OS_Module",16,"Ubase%Ultimap"
   13 *UBASE 40000 800000
   14
   15 REM global variables
   16
   17 DIM box% 12,box2% 12,matrix% 16,origin1% 8,origin2% 8
   18 icon_font$="Homerton.Medium"
   19 full_name$="Untitled"
   20 query_string$=""
   21 menu%=0
   22 sprite_size%=&1E000
   23 DIM q% 256,old_q% 256
   24 DIM errblk% 3000
   25 DIM main% 1000,sprites% sprite_size%
   26 !sprites%=sprite_size%:sprites%!8=16:SYS spop%,&209,sprites%
   27 DIM wimp_palette% 20*4
   28 DIM page_stack% 1024
   29
   30 s_sprites%=1
   31 s_draw%=2
   32 s_replay%=3
   33 s_quicktime%=4
   34 s_fonts%=5
   35 s_starcoms%=6
   36 s_loadorder%=7
   37 s_sounds%=8
   38 s_text%=9
   39 s_pages%=10
   40
   41 s_clicks%=11
   42 s_mousedrag%=12
   43 s_often%=13
   44 s_pointer%=14
   45 s_mouse%=15
   46 s_pageshown%=16
   47 s_spare%=17
   48 s_clickson%=18
   49 s_temp%=19
   50 s_sequences%=20
   51
   52 REM options
   53
   54 printing%=FALSE
   55 portrait%=FALSE
   56 current_page%=0
   57 margin%=16
   58 click_time=1
   59 click_pause=1
   60 temp_list%=0
   61 trying%=TRUE
   62 speaking_text%=FALSE
   63 speak_sound%=FALSE
   64 speak_token%=FALSE
   65 h_scroll%=TRUE
   66 v_scroll%=TRUE
   67 toggle_icon%=TRUE
   68 title_bar%=TRUE
   69 scanning%=FALSE
   70 scan_keys%=1
   71 scan_time%=100
   72 scan_object%=1
   73 scan_count%=0
   74 menu_enabled%=TRUE
   75 ws%=sprites%+32
   76 page_size%=3
   77 file_version%=101
   78 current_page$="Page 1"
   79 ws%=sprites%+32
   80
   81 SYS "Hourglass_On"
   82 PROCload_templates
   83 PROCget_mode_info
   84 PROCload_options
   85 PROCnew_file
   86
   87 SYS "OS_GetEnv" TO EnvStr$,end_adr%
   88 IF INSTR(EnvStr$," -quit ") THEN
   89 I%=INSTR(EnvStr$,""""):I%=INSTR(EnvStr$,"""",I%+1)
   90 REPEATI%+=1:UNTILMID$(EnvStr$,I%,1)<>" "
   91 f$=MID$(EnvStr$,I%)
   92 IF f$<>"" full_name$=f$:PROCload_file(f$,2)
   93 ENDIF
   94
   95 icon_bar%=FNiconbar
   96
   97 SYS setcaret%,main_w%,-1,0,10,10
   98
   99 SYS "Hourglass_Off"
  100 ON ERROR PROCerrorbox
  101
  102 SYS drag%,,-1
  103 PROCbegin_trying
  104 REPEAT
  105   PROCtry_poll
  106 UNTIL FALSE
  107
  108 DEFPROCload_templates
  109 DIM font_array% 256:FORt%=0TO252STEP4:t%!font_array%=0:NEXT
  110 SYS "Wimp_OpenTemplate",,"<Obey$Dir>.Templates"
  111 DIM winds% 2000,indir% 1000
  112 indl%=indir%+4000
  113 SYS "Wimp_LoadTemplate",,winds%,indir%,indl%,-1,"main_w",0 TO ,,indir%
  114 SYS "Wimp_CreateWindow",,winds% TO main_w%
  115 SYS "Wimp_LoadTemplate",,winds%,indir%,indl%,font_array%,"pagelist_wc",0 TO ,,indir%
  116 SYS "Wimp_CreateWindow",,winds% TO pagelist_wc%
  117 SYS "Wimp_LoadTemplate",,winds%,indir%,indl%,font_array%,"print_w",0 TO ,,indir%
  118 SYS "Wimp_CreateWindow",,winds% TO print_w%
  119 SYS "Wimp_LoadTemplate",,winds%,indir%,indl%,-1,"info",0 TO ,,indir%
  120 SYS "Wimp_CreateWindow",,winds% TO info%
  121 SYS "Wimp_CloseTemplate"
  122 ENDPROC
  123;
  124 DEFPROCload_options
  125 ptr%=OPENIN("<Ultimap$Dir>.options")
  126 INPUT#ptr%,toolbox_on%,scanning%,scan_keys%,scan_time%,menu_enabled%,sound_vol%
  127 CLOSE#ptr%
  128 ptr%=OPENIN("<Ultimap$Dir>.messages")
  129 INPUT#ptr%,info$,info1$
  130 CLOSE#ptr%
  131 PROCset_icon_text(info%,1,info$)
  132 PROCset_icon_text(info%,2,info1$)
  133 ENDPROC
  134
  135
  136DEF PROCfinish
  137 SYS setcaret%,-1
  138 PROClose_fonts
  139 SYS "Wimp_CloseDown",task_handle%,!taskid%
  140 SYS "OS_Exit"
  141ENDPROC
  142
  143 DEFPROCredraw_window
  144 SYS redraww%,,q% TO more%
  145 WHILE more%
  146   offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
  147   CASE !q% OF
  148     WHEN main_w%:PROCdraw_main_w(q%!28-offx%,q%!32-offy%,q%!36-offx%,q%!40-offy%,offx%,offy%)
  149     WHEN pagelist_wc%:PROCdraw_pagelist_wc(q%!28-offx%,q%!32-offy%,q%!36-offx%,q%!40-offy%)
  150   ENDCASE
  151   SYS getr%,,q% TO more%
  152 ENDWHILE
  153 ENDPROC
  154
  155 DEF PROCfront(handle%)
  156 !q%=handle%:SYS getw%,,q%
  157 PROCopen_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,-1)
  158 ENDPROC
  159
  160 DEF PROCopen_window(handle%,x%,y%,x1%,y1%,scx%,scy%,bhandle%)
  161 IFhandle%=-1THENENDPROC
  162 q%!28=bhandle%
  163 q%!0=handle%
  164 q%!4=x%:q%!8=y%:q%!12=x1%:q%!16=y1%
  165 q%!20=scx%:q%!24=scy%
  166 SYS openw%,,q%
  167 ENDPROC
  168
  169
  170 DEF PROCclose_window(handle%)
  171 !q%=handle%:SYS closew%,,q%
  172 ENDPROC
  173
  174DEF PROCvars
  175 getenv%=&10
  176 wimp%    = (1<<18) + (3<<6)
  177 createw%=wimp%+1
  178 createicon%=wimp%+2
  179 deleteicon%=wimp%+4
  180 openw%=wimp%+5
  181 closew%=wimp%+6
  182 poll%=wimp%+7
  183 redraww%=wimp%+8
  184 updatew%=wimp%+9
  185 getr%=wimp%+10
  186 getw%=wimp%+11
  187 getwi%=wimp%+12
  188 seti%=wimp%+13
  189 geti%=wimp%+14
  190 getp%=wimp%+15
  191 drag%=wimp%+16
  192 forceredraw%=wimp%+17
  193 setcaret%=wimp%+18
  194 getcaret%=wimp%+19
  195 createmenu%=wimp%+20
  196 setextent%=wimp%+&17
  197 processkey%=wimp%+&1C
  198 sendmessage%=wimp%+&27
  199 crsubmenu%=wimp%+&28
  200 ploticon%=&400E2
  201
  202 setcol%=&40743
  203 spop%=&2E
  204 findfont%=&40081
  205 losefont%=&40082
  206 fontinfo%=&40084
  207 stringwidth%=&40085
  208 setfont%=&4008A
  209 currentfont%=&4008B
  210 converttoos%=&40088
  211 converttopoints%=&40089
  212 paint%=&40086
  213 findcaret%=&4008D
  214 charbbox%=&4008E
  215
  216 Ubase%=&1C0100
  217 newfile%=Ubase%
  218 newstack%=Ubase%+1
  219 killstack%=Ubase%+2
  220 addentry%=Ubase%+3
  221 amendentry%=Ubase%+4
  222 findtoken%=Ubase%+5
  223 killentry%=Ubase%+6
  224 movedata%=Ubase%+7
  225 addpacked%=Ubase%+8
  226 getentry%=Ubase%+9
  227 unpacksprite%=Ubase%+10
  228 nentries%=Ubase%+11
  229 movetoend%=Ubase%+12
  230 readstatus%=Ubase%+13
  231 writestatus%=Ubase%+14
  232 rendershape%=Ubase%+15
  233 getnth%=Ubase%+17
  234 locatefile%=Ubase%+19
  235 playsound%=Ubase%+20
  236
  237 PD%=&80140
  238 PDselect%=PD%+5
  239 PDabort%=PD%+9
  240 PDpagesize%=PD%+3
  241 PDgiverec%=PD%+11
  242 PDdrawpage%=PD%+12
  243 PDgetrec%=PD%+13
  244 PDendjob%=PD%+8
  245
  246 LOCAL ERROR
  247 ON ERROR LOCAL ENDPROC
  248 SYS "OS_Module",14,"Ubase%Ultimap"
  249 ENDPROC
  250
  251DEF PROCget_pointer
  252SYS getp%,,q%
  253mousex%=!q%:mousey%=q%!4:b%=q%!8:handle%=q%!12:icon%=q%!16:ob%=q%!20
  254ENDPROC
  255
  256DEF PROCerrorbox
  257REM SYS drag%,,-1
  258!errblk%=ERR:t$=REPORT$:t$="("+STR$ERR+")"+t$+" at line "+STR$ERL
  259$(errblk%+4)=t$+CHR$0
  260SYS "Wimp_ReportError",errblk%,1,"Ultimap"
  261IF ERR<>1 PROCfinish:END
  262REM IF printing% printing%=FALSE:PROCclose_window(print_w%)
  263ENDPROC
  264;
  265 DEFFNiconbar
  266 !q%=-1:q%!4=0:q%!8=0:q%!12=64:q%!16=64
  267 q%!20=&300A
  268 PROCstring0(q%+24,appsprite$)
  269 SYS "Wimp_CreateIcon",,q% TO handle%
  270 =handle%
  271;
  272 DEFPROCset_icon_fonts
  273 SYS findfont%,,icon_font$,12*16,12*16 TO font%
  274 SYS "Wimp_WhichIcon",print_w%,q%,1<<6,1<<6
  275 t%=0:REPEAT:PROCicon_font(print_w%,t%!q%,font%):t%+=4:UNTILt%!q%=-1
  276 ENDPROC
  277
  278 DEFPROCicon_font(window%,icon%,font%)
  279 !errblk%=window%:errblk%!4=icon%
  280 errblk%!12=&FF000000:errblk%!8=font%<<24
  281 font%?font_array%+=1
  282 SYS seti%,,errblk%
  283 ENDPROC
  284
  285 DEFPROClose_fonts
  286 FORA%=0TO255:n%=A%?font_array%:A%?font_array%=0
  287 IF n%>0 FOR B%=1TOn%:SYS losefont%,A%:NEXT
  288 NEXT:ENDPROC
  289
  290 DEFPROCget_mode_info
  291 SYS "Wimp_ReadPalette",,wimp_palette%
  292 SYS "OS_ReadModeVariable",-1,4 TO ,,xef%
  293 SYS "OS_ReadModeVariable",-1,5 TO ,,yef%
  294 SYS "OS_ReadModeVariable",-1,11 TO ,,screen_width%
  295 SYS "OS_ReadModeVariable",-1,12 TO ,,screen_height%
  296 screen_width%=screen_width%<<xef%:screen_height%=screen_height%<<yef%
  297 ENDPROC
  298
  299 DEFPROCstart_drag(type%,x%,y%,x1%,y1%)
  300 !q%=0:q%!4=5
  301 q%!8=x%:q%!12=y%:q%!16=x1%:q%!20=y1%
  302 q%!24=0:q%!28=0:q%!32=screen_width%:q%!36=screen_height%
  303 SYS drag%,,q%
  304 drag_type%=type%
  305 ENDPROC
  306
  307REM--------------------------------------------------------------------------------------------------------
  308
  309 DEFFNstring0(t%):LOCAL t$:t$="":IF ?t%<32:=""
  310 REPEAT:t$=t$+CHR$?t%:t%+=1:UNTIL?t%<32 OR LENt$=255:=t$
  311
  312 DEFPROCstring0(t%,t$):$t%=t$:t%?LENt$=0:ENDPROC
  313
  314REM--------------------------------------------------------------------------------------------------------
  315
  316 DEFPROCcheck_pagelist_wc
  317 but%=q%!8
  318 !ws%=pagelist_wc%:SYS getw%,,ws%
  319 offx%=(ws%!4-ws%!20):offy%=(ws%!16-ws%!24)
  320 page%=(((q%!4)-offy%)DIV-48)+1
  321 SYS nentries%,s_pages% TO np%:IF page%>np% ENDPROC
  322 SYS getnth%,s_pages%,page% TO ,page%
  323 current_page%=page%
  324 PROCarrange_pagelist_wc(page%)
  325 PROCpre_process
  326 PROCshow_page(page%)
  327 IF scanning% PROCscan
  328 IF but%AND4 SYS createmenu%,,-1
  329 ENDPROC
  330
  331 DEFPROCshow_page(page%)
  332 current_page%=page%
  333 !q%=main_w%:SYS getw%,,q%
  334 IF (q%!32) AND (1<<16) SYS forceredraw%,-1,q%!4,q%!8,q%!12,q%!16
  335 PROCwindow_title(main_w%,full_name$)
  336 SYS getentry%,s_pages%,page% TO adr%
  337 current_page$=FNstring0(adr%+4)
  338 OSCLI "set Upage "+current_page$
  339 ENDPROC
  340
  341 DEFPROCupdate_object(stack%,object%)
  342 LOCAL adr%
  343 SYS getentry%,stack%,object% TO adr%
  344 SYS forceredraw%,main_w%,adr%!12,adr%!16,adr%!20,adr%!24
  345 ENDPROC
  346
  347 DEFPROCset_icon_state(window%,icon%,eor%,clear%)
  348 !errblk%=window%:errblk%!4=icon%:errblk%!8=eor%:errblk%!12=clear%:SYS seti%,,errblk%
  349 ENDPROC
  350
  351 DEFFNicon_state(window%,icon%)
  352 !errblk%=window%:errblk%!4=icon%:SYS geti%,,errblk%:=errblk%!24
  353
  354 DEF PROCset_icon_text(window%,icon%,text$)
  355 !errblk%=window%:errblk%!4=icon%:SYS geti%,,errblk%
  356 PROCstring0(errblk%!28,LEFT$(text$,(errblk%!36)-1))
  357 errblk%!8=0:errblk%!12=0:SYS seti%,,errblk%
  358 ENDPROC
  359
  360 DEFFNleaf(name$):IF INSTR(name$,".")=0:=name$
  361 REPEATname$=RIGHT$(name$,LENname$-INSTR(name$,"."))
  362 UNTILINSTR(name$,".")=0:=name$
  363
  364 DEFPROCstart_drag(type%,x%,y%,x1%,y1%)
  365 !q%=0:q%!4=5
  366 q%!8=x%:q%!12=y%:q%!16=x1%:q%!20=y1%
  367 q%!24=0:q%!28=0:q%!32=screen_width%:q%!36=screen_height%
  368 SYS drag%,,q%
  369 drag_type%=type%
  370 ENDPROC
  371
  372 DEFPROCramfetch
  373 DMT_ref%=q%!4
  374 DMT%=q%!20
  375 DMT_len%=q%!24
  376 CASE file_type% OF
  377   WHEN &AFF,&FF9:PROCsave_picture(drag_ptype%,drag_picture%,"")
  378   WHEN &FFF:PROCsave_text(drag_picture%,"")
  379   WHEN &D3C:PROCsave_sound(drag_sound%,"")
  380 ENDCASE
  381 ENDPROC
  382
  383 DEFPROCdatasaveack
  384 IF q%!12<>myref% ENDPROC
  385 DMT%=0
  386 f_type%=q%!40
  387 CASE f_type% OF
  388   WHEN &AFF,&FF9:PROCsave_picture(drag_ptype%,drag_picture%,FNstring0(q%+44))
  389   WHEN &D3C:PROCsave_sound(drag_sound%,FNstring0(q%+44))
  390   WHEN &FFF:PROCsave_text(drag_picture%,FNstring0(q%+44))
  391 ENDCASE
  392 q%!12=q%!8:q%!16=3
  393 SYS sendmessage%,17,q%,q%!4
  394 ENDPROC
  395
  396 DEFPROCsave_picture(type%,token%,name$)
  397 save$=""
  398 LOCAL ERROR
  399 ON ERROR LOCAL:RESTORE ERROR:ERROR 1,REPORT$
  400 IF DMT_ptr%=0 THEN
  401   SYS "Hourglass_On"
  402   SYS getentry%,type%,token% TO adr%
  403   len%=(!adr%)-16
  404   SYS readstatus%,type%,token% TO l%:IF l% len%=l%
  405   adr%+=16
  406   IF type%=s_sprites% THEN
  407     SYS getentry%,s_sprites%,token% TO adr%
  408     IF !adr%=(adr%!16)+16 THEN
  409       save$=FNstring0(adr%+4)
  410       adr%!4=1:adr%!8=16:adr%!12=!adr%
  411       len%=!adr%+12:adr%+=4
  412     ELSE
  413       SYS unpacksprite%,s_sprites%,token%,sprites%+12
  414       !sprites%=1
  415       sprites%!4=16
  416       sprites%!8=(sprites%!12)+16
  417       len%=sprites%!8
  418       adr%=sprites%
  419     ENDIF
  420     file_type%=&FF9
  421   ELSE
  422     file_type%=&AFF
  423   ENDIF
  424   DMT_mylen%=len%
  425   DMT_data%=adr%
  426 ENDIF
  427 PROCsave_slave(name$,adr%,len%,file_type%)
  428 IF save$<>"" THEN
  429   SYS getentry%,s_sprites%,token% TO adr%
  430   PROCstring0(adr%+4,save$)
  431 ENDIF
  432 ENDPROC
  433
  434 DEFPROCsave_sound(sound%,name$)
  435 LOCAL ERROR
  436 ON ERROR LOCAL:RESTORE ERROR:ERROR 1,REPORT$
  437 IF DMT_ptr%=0 THEN
  438   SYS "Hourglass_On"
  439   SYS getentry%,s_sounds%,sound% TO adr%
  440   len%=(!adr%)-24
  441   SYS readstatus%,s_sounds%,sound% TO l%:IF l% len%=l%
  442   adr%+=24
  443   DMT_mylen%=len%
  444   DMT_data%=adr%
  445 ENDIF
  446 PROCsave_slave(name$,adr%,len%,&D3C)
  447 ENDPROC
  448
  449 DEFPROCsave_text(text%,name$)
  450 LOCAL ERROR
  451 ON ERROR LOCAL:RESTORE ERROR:ERROR 1,REPORT$
  452 SYS getentry%,s_text%,text% TO adr%
  453 SYS movedata%,adr%,ws%,!adr%
  454 adr%=ws%+4:t%=adr%
  455 len%=0
  456 REPEAT
  457   IF ?t%=13 ?t%=10
  458   IF ?t%<>0 len%+=1:t%+=1
  459 UNTIL?t%=0 ELSE UNTIL?t%=0
  460 IF DMT_ptr%=0 THEN
  461   SYS "Hourglass_On"
  462   DMT_mylen%=len%
  463   DMT_data%=adr%
  464 ENDIF
  465 PROCsave_slave(name$,adr%,len%,&FFF)
  466 ENDPROC
  467
  468 DEFPROCsave_slave(name$,adr%,len%,file_type%)
  469 IF DMT% THEN
  470   IF DMT_mylen%-DMT_ptr%>DMT_len% THEN
  471     l%=DMT_len%
  472   ELSE
  473     l%=DMT_mylen%-DMT_ptr%
  474     SYS "Hourglass_Off"
  475   ENDIF
  476   SYS "Wimp_TransferBlock",task_handle%,DMT_data%+DMT_ptr%,DMT_ref%,DMT%,l%
  477   DMT_ptr%+=l%
  478   q%!12=q%!8:q%!16=7
  479   q%!24=l%
  480   SYS sendmessage%,18,q%,q%!4:REM send RAM transmit
  481 ELSE
  482    OSCLI "save "+name$+" "+STR$~adr%+" +"+STR$~len%
  483    OSCLI "SETTYPE "+name$+" "+STR$~file_type%
  484    SYS "Hourglass_Off"
  485 ENDIF
  486 ENDPROC
  487
  488 DEFPROCdataload
  489 SYS movedata%,q%,old_q%,256
  490 CASE old_q%!40 OF
  491   WHEN &BC3:
  492     IF old_q%!20=main_w% OR (old_q%!20=-2 AND old_q%!24=icon_bar%) THEN
  493       IF old_q%!12<>0 ENDPROC
  494       IF modified% THEN
  495         PROCopen_query("load"+FNstring0(old_q%+44))
  496       ELSE
  497         PROCload_file(FNstring0(old_q%+44),1)
  498         old_q%!12=old_q%!8:old_q%!16=4:SYS "Wimp_SendMessage",17,old_q%,old_q%!4
  499       ENDIF
  500     ENDIF
  501 ENDCASE
  502 ENDPROC
  503
  504 DEFPROCload_file(name$,error%)
  505 t%=OPENIN(name$):l%=EXT#t%:CLOSE#t%
  506 PROCset_slot(HIMEM+(l%DIV&4000)*&4000+&4000,error%)
  507 SYS newfile%
  508 full_name$=LEFT$(name$,LEN(name$)-INSTR(name$,"!")-1)
  509 SYS "Hourglass_On"
  510 OSCLI "load  "+name$+" 40000"
  511 version%=!&4000C
  512 SYS locatefile%,&78000
  513 modified%=0
  514 query_string$=""
  515 edited_area%=0
  516 current_page%=!&40020:toolbox_on%=!&40024:menu_enabled%=!&40028:page_size%=!&4002C
  517 h_scroll%=!&40060:v_scroll%=!&40064:title_bar%=!&40068:toggle_icon%=!&4006C
  518 scanning%=!&40070:scan_keys%=!&40074:scan_time%=!&40078
  519 PROCsize_page
  520 PROCredefine_main_w
  521 IF !&40030 !&40030=main_w%:SYS openw%,,&40030:PROCopen_main_w
  522 SYS "Hourglass_Off"
  523 SYS "OS_ReadVarVal","Obey$Dir",main%,1000 TO ,,T%
  524 T%?main%=0
  525 full_name$=FNstring0(main%)
  526 PROCwindow_title(main_w%,full_name$)
  527 appsprite$=FNleaf(full_name$)
  528 menu$=RIGHT$(appsprite$,LEN(appsprite$)-1)
  529 IF LENmenu$<12 REPEAT:menu$=menu$+CHR$0:UNTILLENmenu$=12
  530 ENDPROC
  531
  532REM--------------------------------------------------------------------------------------------------------
  533
  534 DEFPROCnew_file
  535 PROCset_slot(HIMEM+&4000,2)
  536 SYS newfile%
  537 FOR t%=1 TO 20
  538   SYS newstack%
  539 NEXT
  540 full_name$="No_Name"
  541 ENDPROC
  542
  543REM----------------------------------------------------------------------------------------------------
  544
  545 DEFPROCopen_centre(handle%,off%)
  546 !q%=handle%:SYS getw%,,q%
  547 w%=(q%!12)-(q%!4):h%=(q%!16)-(q%!8)
  548 wx%=screen_width%DIV2-w%DIV2
  549 wy%=screen_height%DIV2-h%DIV2
  550 PROCopen_window(handle%,wx%,wy%+off%,wx%+w%,wy%+h%+off%,q%!20,q%!24,-1)
  551 ENDPROC
  552
  553 DEFPROCopen_main_w
  554 !ws%=main_w%:SYS getw%,,ws%
  555 sx%=ws%!4:sy%=ws%!8
  556 sx1%=ws%!12:sy1%=ws%!16
  557
  558 sh%=screen_height%:sw%=screen_width%
  559 hs%=0:vs%=0:tb%=0
  560 IF h_scroll% hs%=40
  561 IF v_scroll% vs%+=40
  562 IF title_bar% tb%=36
  563 w%=sx1%-sx%:h%=sy1%-sy%
  564 IF sy1%+tb%>sh% sy1%=sh%-tb%:sy%=sy1%-h%
  565 IF sy%<hs% sy%=hs%
  566 IF sx1%+vs%>sw% sx1%=sw%-vs%:sx%=sx1%-w%
  567 IF sx%<0 sx%=0
  568 !ws%=main_w%
  569 ws%!4=sx%
  570 ws%!8=sy%
  571 ws%!12=sx1%
  572 ws%!16=sy1%
  573 ws%!20=0:ws%!24=0
  574 ws%!28=-1
  575 PROCopen_window(main_w%,ws%!4,ws%!8,ws%!12,ws%!16,ws%!20,ws%!24,ws%!28)
  576 !q%=main_w%:SYS getw%,,ws%
  577 ENDPROC
  578
  579REM----------------------------------------------------------------------------------------------------
  580
  581 DEFPROCdraw_picture(type%,token%,x%,y%,w%,h%,flags%)
  582 IF type%=s_draw% x%+=(1<<xef%):y%+=(1<<yef%):w%-=(2<<xef%):h%-=(2<<yef%)
  583 SYS getentry%,type%,token% TO a%
  584 IF !a%>sprite_size%-24 flags%=flags%OR8
  585 !errblk%=x%:errblk%!4=y%:errblk%!8=w%:errblk%!12=h%
  586 SYS rendershape%,type%,token%,sprites%,errblk%,flags%AND15
  587 ENDPROC
  588
  589REM----------------------------------------------------------------------------------------------------
  590
  591 DEFPROCwindow_title(window%,title$)
  592 IF window%=main_w% THEN
  593   SYS getentry%,s_pages%,current_page% TO adr%
  594   title$=title$+" - "+FNstring0(adr%+4)
  595 ENDIF
  596 IF modified% title$=title$+" *"
  597 !errblk%=window%:SYS getwi%,,errblk%
  598 PROCstring0(errblk%!76,title$)
  599 SYS forceredraw%,-1,errblk%!4,(errblk%!16),errblk%!12,errblk%!16+36
  600 ENDPROC
  601
  602
  603
  604REM----------------------------------------------------------------------------------------------------
  605
  606 DEFPROCcheck_icon_bar
  607 mx%=!q%:my%=q%!4:button%=q%!8
  608 IF button% AND 2:PROCdo_icon_bar_menu(mx%,my%):ENDPROC
  609 PROCfront(main_w%)
  610 SYS setcaret%,main_w%,-1,0,0,10
  611 ENDPROC
  612
  613 DEFPROCdo_icon_bar_menu(x%,y%)
  614 IF scan_time%=0:scan_time%=100:scan_keys%=1
  615 FOR opt%=0TO2STEP2:P%=main%
  616 [opt opt%
  617.iconmenu
  618 equs menu$
  619 equd &070207:equd 208:equd 40:equd 0
  620 equd 0:equd info%:equd &07000021
  621 equs "Info        "
  622 equd scanning%AND1:equd ibmenu:equd &07000021
  623 equs "Scanning    "
  624 equd 0:equd somenu:equd &07000021
  625 equs "Sound volume"
  626 equd &80:equd -1:equd &07000021
  627 equs "Quit        "
  628
  629.ibmenu
  630 equs "Scanning":equd 0
  631 equd &070207:equd 208:equd 40:equd 0
  632 equd (scan_keys%=2)AND1:equd -1:equd &07000021
  633 equs "Two switches"
  634 equd &80:equd ibmenu1:equd &07000021
  635 equs "Speed       "
  636
  637.somenu
  638 equs "Sound Volume"
  639 equd &070207:equd 208:equd 40:equd 0
  640 equd (sound_vol%=&10F)AND1:equd -1:equd &07000021
  641 equs "Off         "
  642 equd (sound_vol%=&14F)AND1:equd -1:equd &07000021
  643 equs "Quiet       "
  644 equd &80 OR ((sound_vol%=&17F)AND1):equd -1:equd &07000021
  645 equs "Loud        "
  646
  647.ibmenu1
  648 equs "Seconds":equb 0:equd 0
  649 equd &070207:equd 208:equd 40:equd 0
  650 equd &84:equd -1:equd &07000121
  651 equd ibmess:equd ibval:equd 8
  652
  653.ibval equs "a0-9."+CHR$0
  654.ibmess equs STR$(scan_time%/100)+CHR$(0)
  655
  656 ]:NEXT
  657
  658 SYS createmenu%,,main%,mx%-16,260
  659 menu%=5
  660 ENDPROC
  661
  662REM----------------------------------------------------------------------------------------------------
  663
  664 DEFPROCicon_bar_menu
  665 LOCAL c%
  666 CASE !q% OF
  667   WHEN 1
  668     CASE q%!4 OF
  669       WHEN -1:scanning%=scanning% EOR TRUE
  670       WHEN 0:
  671         IF scan_keys%=2 scan_keys%=1 ELSE scan_keys%=2
  672         scanning%=TRUE
  673       WHEN 1:
  674         t%=(VAL(FNstring0(ibmess)))*100
  675         IF t% scan_time%=t%
  676         scanning%=TRUE
  677     ENDCASE
  678   WHEN 2:
  679     CASE q%!4 OF
  680       WHEN 0:sound_vol%=&10F
  681       WHEN 1:sound_vol%=&14F
  682       WHEN 2:sound_vol%=&17F
  683     ENDCASE
  684   WHEN 3:IF modified% PROCopen_query("") ELSE PROCfinish
  685 ENDCASE
  686 SYS getp%,,q%:IF q%!8 AND 1 PROCdo_icon_bar_menu(mx%,my%)
  687 ENDPROC
  688
  689REM--------------------------------------------------------------------------------------------------------
  690
  691 DEFPROCdraw_main_w(wx%,wy%,wx1%,wy1%,offx%,offy%)
  692 SYS getentry%,s_pages%,current_page% TO adr%
  693 stack%=adr%!20:page_col%=adr%!28
  694 SYS setcol%,page_col%:RECTANGLE FILL wx%+offx%,wy%+offy%,wx1%-wx%,wy1%-wy%
  695 SYS nentries%,stack% TO no%
  696 IF no% THEN
  697   FOR object%=1 TO no%
  698     SYS getnth%,stack%,object% TO adr%,token%
  699     x%=adr%!12:y%=adr%!16:x1%=adr%!20:y1%=adr%!24:flags%=adr%!36
  700     IF x%<wx1% AND x1%>wx% AND y%<wy1% AND y1%>wy% AND (flags%AND128)=0 THEN
  701       CASE adr%!4 OF
  702         WHEN s_text%:PROCdraw_text(stack%,token%,offx%,offy%)
  703         WHEN s_sprites%,s_draw%:PROCdraw_picture(adr%!4,adr%!8,x%+offx%,y%+offy%,x1%-x%,y1%-y%,flags%)
  704       ENDCASE
  705     ENDIF
  706   NEXT
  707 ENDIF
  708 ENDPROC
  709
  710 DEFFNstrip_spaces(text$)
  711 REPEAT
  712   IF ASCtext$=32 text$=RIGHT$(text$,LENtext$-1)
  713 UNTILASCtext$<>32
  714 =text$
  715
  716 DEFFNlower_case(text$):IF text$="":=""
  717 LOCAL t$,t%,c%
  718 FORt%=1TOLENtext$
  719   c%=ASC(MID$(text$,t%,1))
  720   IF c%>64 AND c%<91 c%+=32
  721   t$=t$+CHR$c%
  722 NEXT
  723 =t$
  724
  725REM----------------------------------------------------------------------------------------------------
  726
  727 DEFPROCdraw_text(stack%,token%,offx%,offy%)
  728 IF speaking_text% AND speak_token%=token% PROChighlight_text(stack%,token%,offx%,offy%,speak_word%):ENDPROC
  729 SYS getentry%,stack%,token% TO adr%
  730 x%=(adr%!12)+offx%
  731 y%=(adr%!16)+offy%
  732 x1%=(adr%!20)-(1<<xef%)+offx%
  733 y1%=(adr%!24)-(1<<yef%)+offy%
  734 flags%=adr%!36:font%=adr%!40:b_s%=adr%!32
  735 fcol%=adr%!52:IF fcol% AND &FF fcol%=page_col%
  736 bcol%=adr%!56
  737 IF flags%AND1 fcol%=fcol%EOR&FFFFFF00:bcol%=bcol%EOR&FFFFFF00
  738 PROCdraw_border(b_s%,fcol%,bcol%,x%,y%,x1%,y1%)
  739 x%+=(1<<xef%)
  740 x1%-=(1<<xef%)
  741 y%+=(1<<yef%)
  742 y1%-=(1<<yef%)
  743LOCAL ERROR
  744ON ERROR LOCAL RESTORE ERROR:font%=0
  745 IF font% THEN
  746   SYS getentry%,s_fonts%,font% TO t%
  747   SYS findfont%,,t%+4,adr%!44,adr%!48 TO font%
  748 ENDIF
  749 IF font% THEN
  750   IF bcol% AND &FF bcol%=fcol%
  751   SYS "ColourTrans_SetFontColours",font%,bcol%,fcol%,14
  752   SYS fontinfo%,font% TO ,cx%,cy%,cx1%,cy1%
  753 ELSE
  754   cx%=-(1<<xef%):cy%=-(1<<yef%):cx1%=8<<xef%:cy1%=8<<yef%
  755 ENDIF
  756 text_height%=cy1%
  757 SYS getentry%,s_text%,adr%!8 TO text%
  758 text%+=4
  759 text_offset%=0
  760 px%=x%+margin%:py%=y1%-text_height%+cy%
  761 centre%=FALSE:right%=FALSE:underline%=FALSE
  762 IF flags% AND 8 centre%=TRUE
  763 IF flags% AND 16 right%=TRUE
  764 IF flags% AND 32 underline%=TRUE
  765 REPEAT
  766   CASE text_offset%?text% OF
  767     WHEN 0:
  768     WHEN 13:py%-=text_height%:text_offset%+=1
  769     OTHERWISE
  770       text$=FNstring0(text%+text_offset%)
  771       text_offset%+=LENtext$
  772       IF font% THEN
  773         SYS stringwidth%,,text$,1<<30,1<<30,-1,LENtext$ TO ,,w%
  774         SYS converttoos%,,w% TO ,w%
  775         IF centre% px%=x%+(x1%-x%)DIV2-w%DIV2
  776         IF right% px%=x1%-w%-margin%
  777         IF underline% text$=CHR$(25)+CHR$(1)+CHR$(16)+text$
  778         SYS paint%,,text$,1<<4,px%,py%-cy%
  779       ELSE
  780         w%=LENtext$*cx1%
  781         IF centre% px%=x%+(x1%-x%)DIV2-w%DIV2
  782         IF right% px%=x1%-w%-margin%
  783         SYS setcol%,fcol%:MOVE px%,py%+cy1%:PRINTtext$
  784         IF underline% MOVE px%,py%-cy%:PLOT1,cx1%*LENtext$,0
  785       ENDIF
  786   ENDCASE
  787 UNTIL text_offset%?text%=0
  788 IF font% SYS losefont%,font%
  789 ENDPROC
  790
  791 DEFPROCdraw_border(style%,col%,bcol%,x%,y%,x1%,y1%)
  792 IF (bcol%AND&FF)=0 SYS setcol%,bcol%:RECTANGLE FILL x%,y%,x1%-x%,y1%-y%
  793 CASE style% OF
  794   WHEN 1
  795     SYS setcol%,col%
  796     RECTANGLE x%,y%,x1%-x%,y1%-y%
  797   WHEN 2:REM bold
  798     SYS setcol%,&FFFFFF00
  799     MOVE x%,y%:DRAW x%,y1%:DRAW x1%,y1%
  800     SYS setcol%,!(wimp_palette%+16)
  801     DRAW x1%,y%:DRAW x%,y%
  802   WHEN 3:REM inset
  803     SYS setcol%,!(wimp_palette%+16)
  804     MOVE x%,y%:DRAW x%,y1%:DRAW x1%,y1%
  805     SYS setcol%,&FFFFFF00
  806     DRAW x1%,y%:DRAW x%,y%
  807   ENDCASE
  808 ENDIF
  809 ENDPROC
  810
  811 DEFPROCplay_sound(sound%)
  812 SYS getentry%,s_sounds%,sound% TO adr1%
  813 len%=(!adr1%)-24:SYS readstatus%,s_sounds%,sound% TO l%:IF l% len%=l%
  814 LOCAL ERROR
  815 ON ERROR LOCAL RESTORE ERROR:PROCerrorbox:ENDPROC
  816 SYS playsound%,adr1%+24,len%,sound_vol%
  817 ENDPROC
  818
  819 DEFPROCplay_sound_wait(sound%)
  820 SYS getentry%,s_sounds%,sound% TO adr1%
  821 len%=(!adr1%)-24:SYS readstatus%,s_sounds%,sound% TO l%:IF l% len%=l%
  822 SYS playsound%,adr1%+24,len%,sound_vol%
  823 REPEAT:SYS playsound%,0 TO t%:UNTILt%<>-1
  824 ENDPROC
  825
  826 DEFPROCmake_space(plus%)
  827 size%=(!&40004-&40000)+plus%*2
  828 slot_size%=HIMEM+(size%DIV&4000)*&4000+&4000
  829 SYS "Wimp_SlotSize",slot_size%,-1 TO t%
  830 IF t%<slot_size% ERROR 1,"Ultimap has run out of memory"
  831 ENDPROC
  832
  833 DEFPROCset_slot(size%,error%)
  834 slot_size%=size%
  835 SYS "Wimp_SlotSize",slot_size%,-1 TO t%
  836 IF t%<slot_size% ERROR error%,"There's not enough memory to load this file!"
  837 ENDPROC
  838
  839 DEFPROCopen_print_w
  840 IF portrait% a%=0:b%=1<<21 ELSE a%=1<<21:b%=0
  841 PROCset_icon_state(print_w%,6,a%,1<<21)
  842 PROCset_icon_state(print_w%,7,b%,1<<21)
  843 PROCset_icon_text(print_w%,2,"1")
  844 SYS getp%,,q%
  845 SYS createmenu%,,-1
  846 SYS createmenu%,,print_w%,!q%-30,q%!4+60
  847 ENDPROC
  848
  849 DEFPROCcheck_print_w
  850 b%=q%!8
  851 CASE q%!16 OF
  852   WHEN 3:SYS createmenu%,,-1
  853   WHEN 4:
  854     !q%=print_w%:q%!4=7:SYS geti%,,q%
  855     IF (q%!24) AND (1<<21) style%=2:portrait%=TRUE ELSE style%=1:portrait%=FALSE
  856     !q%=print_w%:q%!4=2:SYS geti%,,q%
  857     run_num%=VAL(FNstring0(q%!28))
  858     IF run_num%=0 run_num%=1
  859     PROCprint_routine(style%,run_num%)
  860     IF b% AND 6 SYS createmenu%,,-1
  861 ENDCASE
  862 ENDPROC
  863
  864 DEFPROCprint_routine(style%,run_num%)
  865 LOCAL phandle%,ohandle%
  866 LOCAL left%,bottom%,right%,top%
  867 LOCAL copiesleft%,rect%
  868
  869 phandle%=OPENOUT("printer:")
  870 LOCAL ERROR
  871 ON ERROR LOCAL:CLOSE#phandle%:RESTORE ERROR:ERROR 1,"There is no printer driver!"
  872 SYS PDselect%,phandle%,"Ultima" TO ohandle%
  873
  874 ON ERROR LOCAL:SYS PDabort%,phandle%:CLOSE#phandle%:SYS PDselect%,ohandle%:printing%=FALSE:RESTORE ERROR:ERROR 1,REPORT$+STR$ERL
  875
  876 SYS PDpagesize% TO ,,,left%,bottom%,right%,top%
  877 SYS "Hourglass_On"
  878
  879 FOR loop%=1 TO run_num%
  880   !ws%=main_w%:SYS getwi%,,ws%
  881   mx%=ws%!44:my%=ws%!48:mx1%=ws%!52:my1%=ws%!56
  882   !box%=mx%:box%!4=my%:box%!8=mx1%:box%!12=my1%
  883   CASE style% OF
  884     WHEN 1:REM landscape
  885       IF page_size%=4 THEN
  886         scx=.67
  887         scy=.67
  888         !matrix%=0:matrix%!4=-scx*2^16:matrix%!8=scy*2^16:matrix%!12=0
  889         !origin1%=(right%-left%)DIV16:origin1%!4=top%-(top%-bottom%)DIV2-(top%-bottom%)DIV30
  890       ELSE
  891         scx=1.4
  892         scy=1.5
  893         !matrix%=0:matrix%!4=-scx*2^16:matrix%!8=scy*2^16:matrix%!12=0
  894         !origin1%=(right%-left%)DIV20:origin1%!4=top%-(top%-bottom%)DIV20
  895       ENDIF
  896     WHEN 2:REM portrait
  897       scx=1.05
  898       scy=.95
  899       !matrix%=scx*2^16:matrix%!4=0:matrix%!8=0:matrix%!12=scy*2^16
  900       !origin1%=(right%-left%)DIV20:origin1%!4=bottom%
  901   ENDCASE
  902   SYS PDgiverec%,loop%,box%,matrix%,origin1%,&FFFFFF00
  903   printing%=TRUE
  904   SYS PDdrawpage%,1,box2%,0,0 TO copiesleft%,,rect%
  905   WHILE copiesleft%<>0
  906     PROCdraw_main_w(mx%,my%,mx1%,my1%,0,0)
  907     SYS PDgetrec%,,box2% TO copiesleft%,,rect%
  908   ENDWHILE
  909 NEXT
  910
  911 SYS PDendjob%,phandle%
  912 CLOSE#phandle%
  913 SYS PDselect%,ohandle%
  914 printing%=FALSE
  915 SYS "Hourglass_Off"
  916 ENDPROC
  917
  918 DEFPROChide_object(stack%,token%,hide%,on_vdu%)
  919 SYS getentry%,stack%,token% TO adr1%
  920 IF hide%<>0 AND ((adr1%!36)AND128)<>0 on_vdu%=0
  921 IF hide%=0 AND ((adr1%!36)AND128)=0 on_vdu%=0
  922 IF hide% adr1%!36=(adr1%!36)OR128 ELSE adr1%!36=(adr1%!36)AND&FFFFFF7F
  923 IF on_vdu% SYS forceredraw%,main_w%,adr1%!12,adr1%!16,adr1%!20+(4<<xef%),adr1%!24+(1<<yef%)
  924 ENDPROC
  925
  926 DEFPROClight_object(stack%,token%,hi%,on_vdu%)
  927 SYS getentry%,stack%,token% TO adr1%
  928 h%=(adr1%!36)AND1:IF hi% hi%=1
  929 IF hi% adr1%!36=(adr1%!36)OR1 ELSE adr1%!36=(adr1%!36)AND&FFFFFFFE
  930 IF on_vdu% AND h%<>hi% SYS forceredraw%,main_w%,adr1%!12,adr1%!16,adr1%!20,adr1%!24
  931 ENDPROC
  932
  933 DEFFNstack(page%)
  934 LOCAL adr%
  935 SYS getentry%,s_pages%,page% TO adr%
  936 IF adr%=0 OR adr%!20=0 ERROR 2,"bad stack from page"
  937 =adr%!20
  938
  939 DEFFNwhich_object(page%,x%,y%)
  940 stack%=FNstack(page%)
  941 SYS nentries%,stack% TO no%:o%=0
  942 IF no%=0:=0
  943 FOR t%=1 TO no%
  944   SYS getnth%,stack%,t% TO adr%,token%
  945   IF x%>=adr%!12 AND y%>=adr%!16 AND x%<adr%!20 AND y%<adr%!24 AND ((adr%!36)AND128)=0 THEN
  946     o%=token%:off_mx%=x%-adr%!12:off_my%=y%-adr%!16
  947   ENDIF
  948 NEXT
  949 =o%
  950
  951 DEFPROCarrange_pagelist_wc(page%)
  952 iw%=280:ih%=-48:pl_tick%=0
  953 SYS nentries%,s_pages% TO np%
  954 !q%=0:q%!8=iw%-(3<<xef%):q%!12=0
  955 IF np%<3 q%!4=ih%*3 ELSE q%!4=ih%*np%
  956 SYS setextent%,pagelist_wc%,q%
  957 iy%=ih%:cur_y%=iy%
  958 FOR loop%=1TOnp%
  959   SYS getnth%,s_pages%,loop% TO adr%,token%
  960   IF token%=page% cur_y%=iy%:pl_tick%=iy%
  961   iy%+=ih%
  962 NEXT
  963 !q%=pagelist_wc%:SYS getw%,,q%
  964 offy%=(q%!16-q%!24):sy%=q%!24
  965 wy%=(q%!8)-offy%:wy1%=(q%!16)-offy%
  966 IF cur_y%<wy% sy%+=cur_y%-wy%
  967 IF cur_y%-ih%>wy1% sy%=cur_y%-ih%
  968 q%!24=sy%
  969 o%=(q%!32)AND(1<<16)
  970 SYS openw%,,q%
  971 IF o%=0 THEN
  972   SYS closew%,,q%
  973 ELSE
  974   SYS forceredraw%,-1,q%!4,q%!8,q%!12,q%!16
  975 ENDIF
  976 ENDPROC
  977
  978 DEFPROCdraw_pagelist_wc(wx%,wy%,wx1%,wy1%)
  979 SYS nentries%,s_pages% TO np%
  980 SYS findfont%,,icon_font$,12*16,12*16 TO font%
  981 ih%=-48:ix%=0:iy%=ih%:ix1%=280:iy1%=0
  982 FORpage%=1TOnp%
  983   IF ix%<=wx1% AND ix1%>=wx% AND iy%<=wy1% AND iy1%>=wy% THEN
  984     SYS getnth%,s_pages%,page% TO adr%,token%
  985     IF iy%=pl_tick% THEN
  986       !q%=ix%:q%!4=iy%:q%!8=ix%+38:q%!12=iy1%
  987       q%!16=&7000019:PROCstring0(q%+20,"�")
  988       SYS ploticon%,,q%
  989     ENDIF
  990     !q%=ix%+38:q%!4=iy%:q%!8=ix%+280:q%!12=iy1%
  991     q%!16=font%<<24 OR &171:q%!20=adr%+4:q%!24=0:q%!32=12
  992     SYS ploticon%,,q%
  993   ENDIF
  994   iy%+=ih%:iy1%+=ih%
  995 NEXT
  996 SYS losefont%,font%
  997 !q%=pagelist_wc%
  998 ENDPROC
  999
 1000 DEFFNpt_from_context(context%)
 1001 CASE context% OF
 1002   WHEN s_mousedrag%:=4
 1003   WHEN s_often%:=8
 1004   WHEN s_pointer%:=16
 1005   WHEN s_mouse%:=20
 1006   WHEN s_pageshown%:=32
 1007 ENDCASE
 1008 =0
 1009
 1010 DEFFNname_exsists(stack%,f$)
 1011 SYS nentries%,stack% TO ne%
 1012 IF ne%=0:=0
 1013 f%=0:f$=FNlower_case(f$)
 1014 FORentry%=1TOne%
 1015   SYS getnth%,stack%,entry% TO adr%,token%
 1016   IF f$=FNlower_case(FNstring0(adr%+4)) f%=token%
 1017 NEXT:=f%
 1018
 1019 DEFPROCsize_page
 1020 !q%=main_w%:SYS getwi%,,q%
 1021 IF (q%!32)AND(1<<16) open%=TRUE ELSE open%=FALSE
 1022 SYS "Wimp_DeleteWindow",,q%
 1023 bh%=q%!28
 1024 portrait%=FALSE
 1025 CASE page_size% OF
 1026   WHEN 1:q%!52=639<<xef%:q%!48=-(460<<yef%)
 1027   WHEN 2:q%!52=799<<xef%:q%!48=-(580<<yef%)
 1028   WHEN 3:q%!52=1023<<xef%:q%!48=-(748<<yef%)
 1029   WHEN 4:q%!52=1320:q%!48=-2000:portrait%=TRUE
 1030 ENDCASE
 1031 SYS "Wimp_CreateWindow",,q%+4 TO main_w%
 1032 !q%=main_w%:SYS getw%,,q%:PROCopen_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,bh%)
 1033 ENDPROC
 1034
 1035REM ***************************** clicks below here **************************
 1036
 1037 DEFPROCbegin_trying
 1038 trying%=TRUE
 1039 click_underway%=FALSE
 1040 pause_on%=FALSE
 1041 pointer_object%=0
 1042 input$=""
 1043 PROCzero_page_stack
 1044 PROCpre_process
 1045 PROCshow_page(current_page%)
 1046 IF scanning% PROCscan
 1047 OSCLI "set Uobject "+CHR$34+CHR$34
 1048 ENDPROC
 1049
 1050 DEFPROCdelight
 1051 stack%=FNstack(current_page%)
 1052 SYS nentries%,stack% TO no%
 1053 IF no% THEN
 1054   FOR object%=1TOno%
 1055     SYS getnth%,stack%,object% TO adr%
 1056     IF adr%!36 AND 1 adr%!36=(adr%!36)AND-2
 1057   NEXT
 1058 ENDIF
 1059 IF speak_token% PROCupdate_object(stack%,speak_token%)
 1060 ENDPROC
 1061
 1062 DEFPROCzero_page_stack:FORT%=0TO1020STEP4:T%!page_stack%=0:NEXT:page_ptr%=0:ENDPROC
 1063
 1064 DEFPROCpre_process
 1065 pointer_object%=0
 1066 pointer_int%=0
 1067 often_int%=0
 1068 seq_int%=0
 1069 scan_object%=0
 1070 speaking_text%=0:speak_word%=0:speak_token%=0
 1071 pointer_on%=TRUE
 1072 try_time%=TIME
 1073 REPEAT
 1074  SYS nentries%,s_sequences% TO s%
 1075  IF s% THEN
 1076    SYS getnth%,s_sequences%,1 TO adr%,token%
 1077    SYS killentry%,s_sequences%,token%:REM     clear all sequences
 1078  ENDIF
 1079 UNTILs%=0
 1080 REPEAT
 1081  SYS nentries%,s_clickson% TO s%
 1082  IF s% THEN
 1083    SYS getnth%,s_clickson%,1 TO ,token%
 1084    SYS killentry%,s_clickson%,token%:REM     clear all clicks
 1085  ENDIF
 1086 UNTILs%=0
 1087 stack%=FNstack(current_page%)
 1088 SYS getentry%,s_pages%,current_page% TO adr%
 1089 IF adr%!24 SYS writestatus%,s_clicks%,adr%!24,0
 1090 SYS nentries%,stack% TO no%
 1091 IF no% THEN
 1092   FOR object%=1TOno%
 1093     SYS getnth%,stack%,object% TO adr%
 1094     adr%!36=(adr%!36)AND&FFFFFF3E:REM     ensure all objects shown, unselected and unhighlighted
 1095     click%=adr%!28
 1096     IF click% SYS writestatus%,s_clicks%,click%,0:REM          zero status to avoid repetition of click
 1097   NEXT
 1098 ENDIF
 1099 FOR object%=0TOno%
 1100   IF object%=0 THEN
 1101     SYS getentry%,s_pages%,current_page% TO adr%
 1102     click%=adr%!24
 1103   ELSE
 1104     SYS getnth%,stack%,object% TO adr%
 1105     click%=adr%!28
 1106   ENDIF
 1107   IF click% THEN
 1108     SYS getentry%,s_clicks%,click% TO adr%
 1109     SYS readstatus%,s_clicks%,click% TO s%
 1110     IF s%=0 THEN
 1111       SYS writestatus%,s_clicks%,click%,1
 1112       IF adr%!4 PROCpre_click(s_mousedrag%,adr%!4,0)
 1113       IF adr%!8 THEN
 1114         often_int%=TRUE
 1115         adr%!24=try_time%+adr%!12
 1116         PROCpre_click(s_often%,adr%!8,1)
 1117       ENDIF
 1118       IF adr%!16 THEN
 1119         pointer_int%=TRUE
 1120         PROCpre_click(s_pointer%,adr%!16,1)
 1121       ENDIF
 1122       IF adr%!20 PROCpre_click(s_mouse%,adr%!20,1)
 1123       IF adr%!32 THEN
 1124         PROCpre_click(s_pageshown%,adr%!32,1)
 1125         PROCdo_click(s_pageshown%,adr%!32)
 1126       ENDIF
 1127     ENDIF
 1128   ENDIF
 1129 NEXT
 1130 ENDPROC
 1131
 1132 DEFPROCpre_click(context%,click%,seq%)
 1133 LOCAL adr%
 1134 SYS getentry%,context%,click% TO adr%
 1135 end%=adr%+!adr%:adr%+=4
 1136 REPEAT
 1137   len%=!adr%:cmd%=adr%!4
 1138   CASE cmd% OF
 1139     WHEN 1,3,4:IF seq%=0 PROCpre_list(cmd%,adr%+8,len%-12)
 1140     WHEN 5:IF context%=s_pageshown% AND seq%=0 PROCplay_sound(adr%!8)
 1141     WHEN 7:
 1142       IF seq% THEN
 1143         seq_int%=TRUE
 1144         flag%=adr%!12:s%=adr%+36:e%=len%-40
 1145         IF flag% AND 4 s%=adr%+40:e%=len%-44
 1146         PROCpre_list(3,s%,e%)
 1147       ENDIF
 1148   ENDCASE
 1149   adr%+=len%
 1150 UNTIL adr%>=end%
 1151 ENDPROC
 1152
 1153 DEFPROCpre_list(cmd%,adr%,len%)
 1154 FORlist%=0TOlen%STEP4
 1155   CASE cmd% OF
 1156     WHEN 1:PROClight_object(stack%,list%!adr%,1,0)
 1157     WHEN 3:PROChide_object(stack%,list%!adr%,1,0)
 1158     WHEN 4:PROChide_object(stack%,list%!adr%,0,0)
 1159   ENDCASE
 1160 NEXT
 1161 ENDPROC
 1162
 1163 DEFPROCtry_poll
 1164 SYS poll%,,q% TO A%
 1165 SYS playsound%,0
 1166 SYS "OS_Module",16,"Ubase%Ultimap"
 1167 CASE A% OF
 1168   WHEN 0:PROCtry_null
 1169   WHEN 1:PROCredraw_window
 1170   WHEN 2:PROCopen_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
 1171   WHEN 3:PROCclose_window(!q%)
 1172   WHEN 4:IF !q%=main_w% AND pointer_on%=0 OSCLI"pointer 1"
 1173   WHEN 5:IF !q%=main_w% AND pointer_on%=0 SYS "Wimp_SpriteOp",36,1,"ptr_clock",2
 1174   WHEN 6:PROCtry_mouse
 1175   WHEN 7:PROCtry_user_drag
 1176   WHEN 8:PROCtry_keys
 1177   WHEN 9:PROCtry_menu_select
 1178   WHEN 17,18:PROCtry_receive(q%)
 1179 ENDCASE
 1180 ENDPROC
 1181
 1182 DEF PROCtry_receive(q%)
 1183 CASE q%!16 OF
 1184   WHEN 0:PROCfinish:END
 1185   WHEN 2:PROCdatasaveack
 1186   WHEN 3:IF q%!40=&BC3 PROCdataload
 1187   WHEN 6:PROCramfetch
 1188   WHEN &502:PROChelp_request
 1189   WHEN &400C0:PROCtry_menu_warning
 1190   WHEN &400C1:
 1191     SYS "Hourglass_On"
 1192     PROCget_mode_info
 1193     PROClose_fonts
 1194     PROCset_icon_fonts
 1195     SYS "Hourglass_Off"
 1196 ENDCASE
 1197 ENDPROC
 1198
 1199 DEFPROCtry_null
 1200 !q%=main_w%:SYS getw%,,q%:IF((q%!32)AND(1<<16))=0 ENDPROC
 1201 IF seq_int% PROCcheck_sequences(TIME)
 1202 PROCcheck_clicks
 1203 IF RIGHT$(input$,1)=CHR$13:input$=LEFT$(input$,LEN(input$)-1):!q%=main_w%:q%!24=13:PROCtry_keys
 1204 IF pointer_int% AND scanning%=FALSE PROCunder_pointer
 1205 IF often_int% PROCoften
 1206 IF scanning% AND scan_keys%=1 PROCscan
 1207 SYS playsound%,0 TO t%
 1208 IF t%<>-1 THEN
 1209   IF speaking_text% THEN
 1210     IF speak_sound% THEN
 1211       PROCplay_sound_wait(speak_sound%)
 1212     ELSE
 1213       VDU7:t%=TIME+50:REPEAT:UNTILTIME>t%
 1214     ENDIF
 1215     PROCspeaking_text
 1216   ENDIF
 1217 ENDIF
 1218 PROCcheck_sysvars
 1219 ENDPROC
 1220
 1221 DEFPROCcheck_sysvars
 1222 SYS "OS_ReadVarVal","Upage",main%,1000 TO ,,T%
 1223 T%?main%=0:page$=FNstring0(main%)
 1224 IF page$<>current_page$ THEN
 1225   page%=FNname_exsists(s_pages%,page$)
 1226   IF page% THEN
 1227     current_page%=page%
 1228     PROCpre_process
 1229     PROCshow_page(current_page%)
 1230     IF scanning% PROCscan
 1231   ENDIF
 1232 ENDIF
 1233 SYS "OS_ReadVarVal","Uobject",main%,1000 TO ,,T%
 1234 T%?main%=0:object$=FNstring0(main%)
 1235 IF object$<>"" THEN
 1236   OSCLI "set Uobject "+CHR$34+CHR$34
 1237   input$=object$:!q%=main_w%:q%!24=13:PROCtry_keys
 1238 ENDIF
 1239 ENDPROC
 1240
 1241 DEFPROCtry_mouse
 1242 CASE q%!12 OF
 1243   WHEN -2:IF q%!16=icon_bar% SOUND 1,&100,&9000,1:PROCcheck_icon_bar
 1244   WHEN main_w%:PROCtry_main_w
 1245   WHEN pagelist_wc%:PROCcheck_pagelist_wc
 1246   WHEN print_w%:PROCcheck_print_w
 1247 ENDCASE
 1248 ENDPROC
 1249
 1250 DEFPROCtry_main_w
 1251 SYS setcaret%,main_w%,-1,0,0,10
 1252 mx%=!q%:my%=q%!4
 1253 button%=q%!8
 1254 IF button%AND2 THEN
 1255   IF menu_enabled% PROCopen_try_menu(mx%,my%)
 1256   ENDPROC
 1257 ENDIF
 1258 IF scanning% PROCscan_click(button%):ENDPROC
 1259 IF pointer_on%=FALSE ENDPROC
 1260 icon%=q%!16
 1261 !q%=main_w%:SYS getw%,,q%
 1262 offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
 1263 mx%-=offx%:my%-=offy%
 1264 CASE button% OF
 1265   WHEN &40
 1266     stack%=FNstack(current_page%)
 1267     object%=FNwhich_object(current_page%,mx%,my%)
 1268     IF object% THEN
 1269       SYS getentry%,stack%,object% TO adr%
 1270       click%=adr%!28
 1271       IF click% THEN
 1272         SYS getentry%,s_clicks%,click% TO adr%
 1273         IF adr%!4 THEN
 1274           SYS getentry%,s_mousedrag%,adr%!4 TO adr%
 1275           PROCbegin_save(object%,adr%!12)
 1276         ENDIF
 1277       ENDIF
 1278     ENDIF
 1279   WHEN &100
 1280     page_ptr%-=4:IF page_ptr%<0 page_ptr%=1020
 1281     IF page_ptr%!page_stack%<>0 THEN
 1282       PROCdelight
 1283       current_page%=page_ptr%!page_stack%
 1284       page_ptr%!page_stack%=0
 1285       PROCpre_process
 1286       PROCshow_page(current_page%)
 1287       IF scanning% PROCscan
 1288     ENDIF
 1289   WHEN &400
 1290     stack%=FNstack(current_page%)
 1291     object%=FNwhich_object(current_page%,mx%,my%)
 1292     IF object% THEN
 1293       SYS getentry%,stack%,object% TO adr%
 1294       click%=adr%!28
 1295       IF click% THEN
 1296         SYS getentry%,s_clicks%,click% TO adr%
 1297         IF adr%!20 PROCdo_click(s_mouse%,adr%!20)
 1298       ENDIF
 1299     ELSE
 1300       SYS getentry%,s_pages%,current_page% TO adr%
 1301       click%=adr%!24
 1302       IF click% THEN
 1303         SYS getentry%,s_clicks%,click% TO adr%
 1304         IF adr%!20 PROCdo_click(s_mouse%,adr%!20)
 1305       ENDIF
 1306     ENDIF
 1307 ENDCASE
 1308 ENDPROC
 1309
 1310 DEFPROCtry_keys
 1311 CASE !q% OF
 1312   WHEN main_w%
 1313     key%=q%!24
 1314     IF key%=13 THEN
 1315       stack%=FNstack(current_page%)
 1316       IF FNlower_case(LEFT$(input$,6))="object" THEN
 1317         token%=VAL(RIGHT$(input$,LEN(input$)-6))
 1318         SYS getentry%,stack%,token% TO adr%
 1319         IF adr% THEN
 1320           IF adr%!28 THEN
 1321             pointer_object%=token%
 1322             SYS getentry%,s_clicks%,adr%!28 TO adr%
 1323             IF adr%!20 PROCdo_click(s_mouse%,adr%!20)
 1324           ENDIF
 1325         ENDIF
 1326       ENDIF
 1327       IF FNlower_case(LEFT$(input$,4))="back" q%!8=&100:PROCtry_main_w
 1328       input$=""
 1329     ELSE
 1330       IF key%=27:PROCclose_window(main_w%):ENDPROC
 1331       IF key%=&180 PROCopen_print_w:ENDPROC
 1332       IF key%>31 AND key%<255 input$=input$+CHR$(key%) ELSE SYS processkey%,key%
 1333       IF LENinput$=255 input$=""
 1334     ENDIF
 1335   WHEN print_w%
 1336     IF q%!24=13 q%!8=4:q%!16=4:PROCcheck_print_w ELSE SYS processkey%,q%!24
 1337   OTHERWISE
 1338     SYS processkey%,q%!24
 1339 ENDCASE
 1340 ENDPROC
 1341
 1342 DEFPROCdo_click(context%,click%)
 1343 SYS getentry%,context%,click% TO adr%
 1344 SYS movedata%,adr%,ws%+8,!adr%
 1345 !ws%=(ws%!8)+8:ws%!4=12:ws%!8=0
 1346 PROCmake_space(!ws%+16)
 1347 SYS addentry%,s_clickson%,ws%
 1348 PROCcheck_clicks
 1349 ENDPROC
 1350
 1351 DEFPROCcheck_clicks
 1352 SYS nentries%,s_clickson% TO nc%
 1353 IF nc%=0 ENDPROC
 1354 FOR click%=1TOnc%
 1355   SYS getnth%,s_clickson%,click% TO click_adr%
 1356   IF click_adr%!8<TIME AND click_adr%!4<>0 THEN
 1357     ptr%=click_adr%!4:cadr%=click_adr%+ptr%
 1358     click_len%=!cadr%:cmd%=cadr%!4:ok%=TRUE
 1359     CASE cmd% OF
 1360       WHEN 1,3,4:PROCclick_list(cmd%,cadr%+8,click_len%-12)
 1361       WHEN 2
 1362         PROCdelight
 1363         page_ptr%!page_stack%=current_page%
 1364         page_ptr%+=4:IF page_ptr%=1024 page_ptr%=0
 1365         current_page%=cadr%!8
 1366         IF current_page%=0 SYS nentries%,s_pages% TO t%:current_page%=RND(t%)
 1367         IF current_page%=0 current_page%=1
 1368         PROCpre_process
 1369         PROCshow_page(current_page%)
 1370         IF scanning% PROCscan
 1371         ENDPROC
 1372       WHEN 5
 1373         SYS playsound%,0 TO t%
 1374         IF t%=-1 ok%=FALSE ELSE PROCplay_sound(cadr%!8)
 1375       WHEN 6:PROCspeak_text(stack%,cadr%!8)
 1376       WHEN 7:PROCinit_seq(TIME,cadr%)
 1377       WHEN 8:
 1378         click_cmd$=FNstring0(cadr%+8)
 1379         cmd$=FNlower_case(click_cmd$)
 1380         IF LEFT$(cmd$,10)="load file " THEN
 1381           file$=RIGHT$(cmd$,LENcmd$-10):page$=""
 1382           IF INSTR(file$," ") THEN
 1383             page$=RIGHT$(file$,LEN(file$)-INSTR(file$," "))
 1384             file$=LEFT$(file$,INSTR(file$," ")-1)
 1385           ENDIF
 1386           file$=full_name$+"."+file$
 1387           LOCAL ERROR
 1388           ON ERROR LOCAL:RESTORE ERROR:click_adr%!4=0:ERROR 1,REPORT$
 1389           PROCload_file(file$,1)
 1390           IF page$<>"" page%=FNname_exsists(s_pages%,page$):IF page% current_page%=page%
 1391           PROCpre_process
 1392           PROCshow_page(current_page%)
 1393           IF scanning% PROCscan
 1394           PROCzero_page_stack
 1395           ENDPROC
 1396         ENDIF
 1397         IF LEFT$(cmd$,4)="load" OR LEFT$(cmd$,5)="*load" THEN
 1398           file$=RIGHT$(cmd$,LENcmd$-5):page$=""
 1399           IF INSTR(file$," ") THEN
 1400             page$=RIGHT$(file$,LEN(file$)-INSTR(file$," "))
 1401             file$=LEFT$(file$,INSTR(file$," ")-1)
 1402           ENDIF
 1403           LOCAL ERROR
 1404           ON ERROR LOCAL:RESTORE ERROR:click_adr%!4=0:ERROR 1,REPORT$
 1405           PROCload_file(file$,1)
 1406           IF page$<>"" page%=FNname_exsists(s_pages%,page$):IF page% current_page%=page%
 1407           PROCpre_process
 1408           PROCshow_page(current_page%)
 1409           IF scanning% PROCscan
 1410           PROCzero_page_stack
 1411           ENDPROC
 1412         ENDIF
 1413         IF LEFT$(cmd$,3)="run" OR LEFT$(cmd$,4)="*run" THEN
 1414           file$=RIGHT$(cmd$,LENcmd$-4):PRINTfile$
 1415           LOCAL ERROR
 1416           ON ERROR LOCAL:RESTORE ERROR:click_adr%!4=0:ERROR 1,REPORT$
 1417           OSCLI "filer_run "+file$
 1418           click_cmd$=""
 1419         ENDIF
 1420         IF LEFT$(cmd$,6)="replay" THEN
 1421           file$=RIGHT$(cmd$,LENcmd$-7)
 1422           IF INSTR(file$,"-at")=0 THEN
 1423             SYS getentry%,stack%,object% TO adr%
 1424             x%=(adr%!12)+offx%:y%=(adr%!16)+offy%
 1425             file$=file$+" -at "+STR$x%+","+STR$y%
 1426           ENDIF
 1427           LOCAL ERROR
 1428           ON ERROR LOCAL:RESTORE ERROR:click_adr%!4=0:ERROR 1,REPORT$
 1429           SYS "Wimp_StartTask",file$
 1430           click_cmd$=""
 1431         ENDIF
 1432         IF LEFT$(cmd$,4)="back" input$="back":!q%=main_w%:q%!24=13:PROCtry_keys:ENDPROC
 1433         IF LEFT$(cmd$,6)="object" THEN
 1434           click_cmd$=""
 1435           input$=cmd$+CHR$13
 1436         ENDIF
 1437         LOCAL ERROR
 1438         ON ERROR LOCAL:RESTORE ERROR:click_adr%!4=0:ERROR 1,REPORT$
 1439         IF click_cmd$<>"" OSCLI click_cmd$
 1440       WHEN 9:click_adr%!8=TIME+cadr%!8
 1441     ENDCASE
 1442     SYS getnth%,s_clickson%,click% TO click_adr%
 1443     IF ok% click_adr%!4=ptr%+click_len%
 1444     IF click_adr%!4>=!click_adr% click_adr%!4=0
 1445   ENDIF
 1446 NEXT
 1447 click%=1
 1448 REPEAT
 1449   SYS getnth%,s_clickson%,click% TO adr%,token%
 1450   IF adr%!4=0 THEN
 1451     SYS killentry%,s_clickson%,token%
 1452     click%-=1
 1453   ENDIF
 1454   click%+=1
 1455   SYS nentries%,s_clickson% TO nc%
 1456 UNTILclick%>=nc% OR nc%=0
 1457 ENDPROC
 1458
 1459 DEFPROCclick_list(cmd%,adr%,len%)
 1460 FORlist%=0TOlen%STEP4
 1461   CASE cmd% OF
 1462     WHEN 1:PROClight_object(stack%,list%!adr%,1,1)
 1463     WHEN 3:PROChide_object(stack%,list%!adr%,1,1)
 1464     WHEN 4:PROChide_object(stack%,list%!adr%,0,1)
 1465   ENDCASE
 1466 NEXT
 1467 ENDPROC
 1468
 1469 DEFPROCunder_pointer:IF pointer_on%=0 ENDPROC
 1470 PROCget_pointer
 1471 !q%=main_w%:SYS getw%,,q%
 1472 offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
 1473 mx%=mousex%-offx%:my%=mousey%-offy%
 1474 IF handle%=main_w% object%=FNwhich_object(current_page%,mx%,my%) ELSE object%=0
 1475 IF object%<>pointer_object% THEN
 1476   pointer_object%=object%
 1477   stack%=FNstack(current_page%)
 1478   SYS nentries%,stack% TO no%
 1479   IF no% THEN
 1480     FOR ob%=1TOno%
 1481       SYS getnth%,stack%,ob% TO adr%,token%
 1482       IF token%<>object% AND (adr%!36)AND1 PROClight_object(stack%,token%,0,1)
 1483     NEXT
 1484     IF object% THEN
 1485       SYS getentry%,stack%,object% TO adr%,token%
 1486       IF adr%!28 THEN
 1487         SYS getentry%,s_clicks%,adr%!28 TO adr%
 1488         IF adr%!16 PROCdo_click(s_pointer%,adr%!16)
 1489       ENDIF
 1490     ELSE
 1491       SYS getentry%,s_pages%,current_page% TO adr%
 1492       IF adr%!24 THEN
 1493         SYS getentry%,s_clicks%,adr%!24 TO adr%
 1494         IF adr%!16 PROCdo_click(s_pointer%,adr%!16)
 1495       ENDIF
 1496     ENDIF
 1497   ENDIF
 1498 ENDIF
 1499 ENDPROC
 1500
 1501 DEFPROCoften:IF pointer_on%=0 ENDPROC
 1502 stack%=FNstack(current_page%)
 1503 SYS nentries%,stack% TO no%
 1504 IF no% THEN
 1505   FOR ob%=1TOno%
 1506     SYS getnth%,stack%,ob% TO adr%,token%
 1507     IF adr%!28 THEN
 1508       SYS getentry%,s_clicks%,adr%!28 TO adr%
 1509       IF adr%!8 THEN
 1510         IF adr%!24<TIME THEN
 1511           adr%!24=TIME+adr%!12
 1512           PROCdo_click(s_often%,adr%!8)
 1513         ENDIF
 1514       ENDIF
 1515     ENDIF
 1516   NEXT
 1517 ENDIF
 1518 ENDPROC
 1519
 1520 DEFPROCopen_try_menu(mx%,my%)
 1521 FORI%=0TO2STEP2:P%=main%
 1522 [optI%
 1523 equs menu$
 1524 equd &070207
 1525 equd 168:equd 40:equd 0
 1526 equd 8:equd pagelist_wc%:equd &07000021
 1527 equs "Show page   "
 1528 equd &80:equd -1:equd &07000021
 1529 equs "Print       "
 1530 ]:NEXT
 1531 menu%=11
 1532 SYS createmenu%,,main%,mx%,my%-32
 1533 ENDPROC
 1534
 1535 DEFPROCtry_menu_warning
 1536 mx%=q%!24:my%=q%!28:item%=q%!32
 1537 PROCarrange_pagelist_wc(current_page%)
 1538 SYS crsubmenu%,,pagelist_wc%,mx%,my%
 1539 ENDPROC
 1540
 1541 DEFPROCtry_menu_select
 1542 CASE menu% OF
 1543   WHEN 5:PROCicon_bar_menu
 1544   WHEN 11:
 1545     CASE !q% OF
 1546       WHEN 1:PROCopen_print_w
 1547     ENDCASE
 1548 ENDCASE
 1549 ENDPROC
 1550
 1551 DEFPROCtry_pagelist_wc
 1552 but%=q%!8
 1553 !ws%=pagelist_wc%:SYS getw%,,ws%
 1554 offx%=(ws%!4-ws%!20):offy%=(ws%!16-ws%!24)
 1555 page%=(((q%!4)-offy%)DIV-48)+1
 1556 SYS nentries%,s_pages% TO np%:IF page%>np% ENDPROC
 1557 SYS getnth%,s_pages%,page% TO ,page%
 1558 PROCarrange_pagelist_wc(page%)
 1559 PROCshow_page(page%)
 1560 PROCarrange_pagelist_wc(current_page%)
 1561 PROCbegin_trying
 1562 IF but%AND4 SYS createmenu%,,-1
 1563 ENDPROC
 1564
 1565 DEFPROCscan
 1566 IF scan_count%>TIME ENDPROC
 1567 IF scan_keys%=1 scan_count%=TIME+scan_time%
 1568 stack%=FNstack(current_page%)
 1569 SYS nentries%,stack% TO no%
 1570 IF no%=0 ENDPROC
 1571 IF scan_object%<>0 THEN
 1572   SYS getnth%,stack%,scan_object% TO adr%,token%
 1573   IF adr%!36 AND 1 THEN
 1574     PROClight_object(stack%,token%,0,1)
 1575     scan_object%+=1
 1576     IF scan_object%>no% scan_object%=1
 1577   ENDIF
 1578 ELSE
 1579   scan_object%=1
 1580 ENDIF
 1581 yes%=0
 1582 REPEAT
 1583   SYS getnth%,stack%,scan_object% TO adr%,token%
 1584   IF (adr%!28)<>0 AND ((adr%!36)AND128)=0 THEN
 1585     SYS getentry%,s_clicks%,adr%!28 TO adr%
 1586     IF adr%!16 THEN
 1587       PROClight_object(stack%,token%,1,1):yes%=no%
 1588     ELSE
 1589       scan_object%+=1
 1590       IF scan_object%>no% scan_object%=1
 1591       yes%+=1
 1592     ENDIF
 1593   ELSE
 1594     scan_object%+=1
 1595     IF scan_object%>no% scan_object%=1
 1596     yes%+=1
 1597   ENDIF
 1598 UNTILyes%=no%
 1599 ENDPROC
 1600
 1601 DEFPROCscan_click(but%)
 1602 IF scan_object%=0 ENDPROC
 1603 stack%=FNstack(current_page%)
 1604 IF scan_keys%=1 OR (scan_keys%=2 AND (but%AND&101)) THEN
 1605   SYS getnth%,stack%,scan_object% TO adr%,token%
 1606   IF adr%!28 THEN
 1607     SYS getentry%,s_clicks%,adr%!28 TO adr%
 1608     IF adr%!20 PROCdo_click(s_mouse%,adr%!20)
 1609   ENDIF
 1610 ELSE
 1611   IF but%AND&404 PROCscan
 1612 ENDIF
 1613 ENDPROC
 1614
 1615 DEFPROCredefine_main_w
 1616 !q%=main_w%:SYS getwi%,,q%
 1617 IF (q%!32)AND(1<<16) open%=TRUE ELSE open%=FALSE
 1618 SYS "Wimp_DeleteWindow",,q%
 1619 f%=((q%!32)AND&83FFFFFF) OR (&83<<24)
 1620 bh%=q%!28
 1621 IF h_scroll% f%=f%OR(1<<30)
 1622 IF v_scroll% f%=f%OR(1<<28)
 1623 IF h_scroll% OR v_scroll% f%=f%OR(1<<29)
 1624 IF title_bar% f%=f%OR(1<<26):IF toggle_icon% f%=f%OR(1<<27)
 1625 q%!32=f%
 1626 SYS "Wimp_CreateWindow",,q%+4 TO main_w%
 1627 !q%=main_w%:SYS getw%,,q%:PROCopen_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,bh%)
 1628 ENDPROC
 1629
 1630 DEFPROCinit_seq(time%,adr%)
 1631 SYS movedata%,adr%,ws%,!adr%
 1632 IF (adr%!12)AND4 ws%!4=40:ws%!8=36 ELSE ws%!4=36:ws%!8=0
 1633 ws%!12=4:ws%!16=adr%!20:ws%!20=time%
 1634 ws%!24=adr%!8:ws%!28=0:ws%!32=adr%!12
 1635 PROCmake_space(!ws%+16)
 1636 SYS addentry%,s_sequences%,ws%
 1637 IF (ws%!32)AND64 pointer_on%=FALSE:PROCget_pointer:IF handle%=main_w% SYS "Wimp_SpriteOp",36,1,"ptr_clock",2
 1638 ENDPROC
 1639
 1640 DEFPROCcheck_sequences(time%)
 1641 SYS nentries%,s_sequences% TO ns%
 1642 IF ns% THEN
 1643   stack%=FNstack(current_page%)
 1644   FOR seq%=1 TO ns%
 1645     SYS getnth%,s_sequences%,seq% TO adr%
 1646     IF time%>adr%!20 THEN
 1647       adr%!20=time%+adr%!16
 1648       len%=!adr%:ptr%=adr%!4:optr%=adr%!8:ptr_inc%=adr%!12
 1649       loop%=(adr%!32)AND2:last_one%=0
 1650       last%=(adr%!32)AND8:trail%=(adr%!32)AND16:noud%=(adr%!32)AND32
 1651       seethru%=(adr%!32)AND128
 1652       IF adr%!24<>0 AND adr%!28=adr%!24 THEN
 1653         IF loop% THEN
 1654           IF ptr%=40 last_one%=TRUE
 1655         ELSE
 1656           IF ptr%=36 last_one%=TRUE
 1657         ENDIF
 1658       ENDIF
 1659       IF optr%<>0 AND trail%=0 THEN
 1660         IF last_one% THEN
 1661           IF last%=0 THEN
 1662             IF noud% THEN
 1663               PROCfast_draw(stack%,optr%!adr%,TRUE,0)
 1664             ELSE
 1665               PROChide_object(stack%,optr%!adr%,1,1)
 1666             ENDIF
 1667           ENDIF
 1668         ELSE
 1669           IF noud% THEN
 1670             PROCfast_draw(stack%,optr%!adr%,TRUE,0)
 1671           ELSE
 1672             PROChide_object(stack%,optr%!adr%,1,1)
 1673           ENDIF
 1674         ENDIF
 1675       ENDIF
 1676       IF last_one%=0 THEN
 1677         IF noud% THEN
 1678           PROCfast_draw(stack%,ptr%!adr%,0,seethru%)
 1679         ELSE
 1680           PROChide_object(stack%,ptr%!adr%,0,1)
 1681         ENDIF
 1682         adr%!8=ptr%:ptr%+=ptr_inc%
 1683         IF loop% THEN
 1684           IF ptr%=len% THEN
 1685             ptr%=len%-8:adr%!12=-4
 1686           ELSE
 1687             IF ptr%=32 THEN
 1688               ptr%=40:adr%!12=4
 1689               IF adr%!24<>0 adr%!28=(adr%!28)+1
 1690             ENDIF
 1691           ENDIF
 1692         ELSE
 1693           IF ptr%=len% THEN
 1694             ptr%=36
 1695             IF adr%!24<>0 adr%!28=(adr%!28)+1
 1696           ENDIF
 1697         ENDIF
 1698       ELSE
 1699         ptr%=0
 1700       ENDIF
 1701       adr%!4=ptr%
 1702     ENDIF
 1703   NEXT
 1704   REPEAT
 1705     nomore%=TRUE
 1706     SYS nentries%,s_sequences% TO ns%
 1707     IF ns% THEN
 1708       FOR seq%=1 TO ns%
 1709         SYS getnth%,s_sequences%,seq% TO adr%,token%
 1710         IF adr%!4=0 AND (adr%!32)AND64 OSCLI"pointer 1":pointer_on%=TRUE
 1711         IF adr%!4=0 nomore%=0:seq%=ns%:SYS killentry%,s_sequences%,token%
 1712       NEXT
 1713     ENDIF
 1714   UNTILnomore%
 1715 ENDIF
 1716 ENDPROC
 1717
 1718 DEFPROCfast_draw(stack%,token%,erase%,seethru%)
 1719 LOCAL adr%
 1720 !q%=main_w%:SYS getw%,,q%
 1721 offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
 1722 SYS getentry%,stack%,token% TO adr%
 1723 x%=(adr%!12)+offx%
 1724 y%=(adr%!16)+offy%
 1725 x1%=(adr%!20)-(1<<xef%)+offx%
 1726 y1%=(adr%!24)-(1<<yef%)+offy%
 1727 IF erase% THEN
 1728   IF ((adr%!36)AND128)=0 adr%!36=(adr%!36)OR128
 1729   SYS getentry%,s_pages%,current_page% TO adr1%
 1730   bcol%=adr1%!28:
 1731 ELSE
 1732   IF (adr%!36)AND128 AND seethru%=0 adr%!36=(adr%!36)EOR128
 1733 ENDIF
 1734 flags%=adr%!36:type%=adr%!4
 1735 !q%=main_w%:q%!4=x%-offx%:q%!8=y%-offy%-32:q%!12=x1%-offx%+(1<<xef%)+32:q%!16=y1%-offy%+(1<<yef%)
 1736 SYS updatew%,,q% TO more%
 1737 WHILE more%
 1738   IF erase% THEN
 1739     SYS setcol%,bcol%:RECTANGLE FILL x%,y%,x1%-x%,y1%-y%
 1740   ELSE
 1741     CASE type% OF
 1742       WHEN s_text%:PROCdraw_text(stack%,token%,offx%,offy%)
 1743       WHEN s_sprites%,s_draw%:PROCdraw_picture(adr%!4,adr%!8,x%,y%,x1%-x%,y1%-y%,flags%)
 1744     ENDCASE
 1745   ENDIF
 1746   SYS getr%,,q% TO more%
 1747 ENDWHILE
 1748 ENDPROC
 1749
 1750 DEFPROCspeak_text(stack%,token%)
 1751 speak_token%=token%
 1752 speak_word%=0:speak_sound%=0
 1753 SYS getentry%,stack%,token% TO adr%
 1754 SYS getentry%,s_text%,adr%!8 TO adr%
 1755 sptext%=adr%+4
 1756 IF ?sptext%<>0 THEN
 1757   speaking_text%=TRUE
 1758   text$="":a%=sptext%
 1759   REPEAT:text$=text$+CHR$(?a%):a%+=1:UNTIL?a%<48
 1760   speak_sound%=FNname_exsists(s_sounds%,text$)
 1761   PROCupdate_object(stack%,speak_token%)
 1762 ENDIF
 1763 ENDPROC
 1764
 1765 DEFPROCspeaking_text
 1766 SYS getentry%,stack%,speak_token% TO adr%
 1767 SYS getentry%,s_text%,adr%!8 TO adr%
 1768 sptext%=adr%+4
 1769 REPEAT
 1770   speak_word%+=1
 1771   c%=speak_word%?sptext%
 1772 UNTILc%=32 OR c%=13 OR c%=0
 1773 IF c%=32 OR c%=13 THEN
 1774   REPEAT
 1775    speak_word%+=1:c%=speak_word%?sptext%
 1776   UNTILc%>32 OR c%=0
 1777 ENDIF
 1778 IF c%<>0 THEN
 1779   text$="":a%=speak_word%+sptext%
 1780   REPEAT:text$=text$+CHR$(?a%):a%+=1:UNTIL?a%<48
 1781   speak_sound%=FNname_exsists(s_sounds%,text$)
 1782 ENDIF
 1783 IF c%=0 speaking_text%=FALSE
 1784 PROCupdate_object(stack%,speak_token%)
 1785 ENDPROC
 1786
 1787 DEFPROChighlight_text(stack%,token%,offx%,offy%,word%)
 1788 SYS getentry%,stack%,token% TO adr%
 1789 x%=(adr%!12)+offx%
 1790 y%=(adr%!16)+offy%
 1791 x1%=(adr%!20)-(1<<xef%)+offx%
 1792 y1%=(adr%!24)-(1<<yef%)+offy%
 1793 flags%=adr%!36:font%=adr%!40:b_s%=adr%!32
 1794 fcol%=adr%!52:IF fcol% AND &FF fcol%=default_page_col%
 1795 bcol%=adr%!56
 1796 IF flags%AND1 fcol%=fcol%EOR&FFFFFF00:bcol%=bcol%EOR&FFFFFF00
 1797 PROCdraw_border(b_s%,fcol%,bcol%,x%,y%,x1%,y1%)
 1798 x%+=(1<<xef%)
 1799 x1%-=(1<<xef%)
 1800 y%+=(1<<yef%)
 1801 y1%-=(1<<yef%)
 1802 LOCAL ERROR
 1803 ON ERROR LOCAL RESTORE ERROR:font%=0
 1804 IF font% THEN
 1805   SYS getentry%,s_fonts%,font% TO t%
 1806   SYS findfont%,,t%+4,adr%!44,adr%!48 TO font%
 1807 ENDIF
 1808 IF font% THEN
 1809   IF bcol% AND &FF bcol%=fcol%
 1810   SYS fontinfo%,font% TO ,cx%,cy%,cx1%,cy1%
 1811 ELSE
 1812   cx%=-(1<<xef%):cy%=-(1<<yef%):cx1%=8<<xef%:cy1%=8<<yef%
 1813 ENDIF
 1814 text_height%=cy1%
 1815 SYS getentry%,s_text%,adr%!8 TO text%
 1816 text%+=4
 1817 text_offset%=0
 1818 px%=x%+margin%:py%=y1%-text_height%+cy%
 1819 centre%=FALSE:right%=FALSE:underline%=FALSE
 1820 IF flags% AND 8 centre%=TRUE
 1821 IF flags% AND 16 right%=TRUE
 1822 IF flags% AND 32 underline%=TRUE
 1823 REPEAT
 1824   CASE text_offset%?text% OF
 1825     WHEN 0:
 1826     WHEN 13:py%-=text_height%:text_offset%+=1
 1827     OTHERWISE
 1828       text$=FNstring0(text%+text_offset%)
 1829       text_offset%+=LENtext$
 1830       px%=x%+margin%
 1831       IF font% THEN
 1832         SYS stringwidth%,,text$,1<<30,1<<30,-1,LENtext$ TO ,,w%
 1833         SYS converttoos%,,w% TO ,w%
 1834         IF centre% px%=x%+(x1%-x%)DIV2-w%DIV2
 1835         IF right% px%=x1%-w%-margin%
 1836         IF underline% ul$=CHR$(25)+CHR$(1)+CHR$(16) ELSE ul$=""
 1837         SYS "ColourTrans_SetFontColours",font%,bcol%,fcol%,14
 1838         SYS paint%,,ul$+text$,1<<4,px%,py%-cy%
 1839         IF text_offset%>word% AND (text_offset%-LENtext$)<=word% THEN
 1840           i%=word%-(text_offset%-LEN(text$))
 1841           l$=LEFT$(text$,i%)
 1842           SYS stringwidth%,,l$,1<<30,1<<30,-1,LENl$ TO ,,w%
 1843           SYS converttoos%,,w% TO ,w%
 1844           px%+=w%
 1845           r$=RIGHT$(text$,LENtext$-LENl$)
 1846           IF INSTR(r$," ") r$=LEFT$(r$,INSTR(r$," "))
 1847           SYS "ColourTrans_SetFontColours",font%,bcol%EOR&FFFFFF00,fcol%EOR&FFFFFF00,14
 1848           SYS paint%,,ul$+r$,1<<4,px%,py%-cy%
 1849         ENDIF
 1850       ELSE
 1851         w%=LENtext$*cx1%
 1852         IF centre% px%=x%+(x1%-x%)DIV2-w%DIV2
 1853         IF right% px%=x1%-w%-margin%
 1854         SYS setcol%,fcol%:MOVE px%,py%+cy1%:PRINTtext$
 1855         IF underline% MOVE px%,py%-cy%:PLOT1,cx1%*LENtext$,0
 1856         IF text_offset%>word% AND (text_offset%-LENtext$)<=word% THEN
 1857           i%=word%-(text_offset%-LEN(text$))
 1858           l$=LEFT$(text$,i%)
 1859           w%=LENl$*cx1%:px%+=w%
 1860           r$=RIGHT$(text$,LENtext$-LENl$)
 1861           IF INSTR(r$," ") r$=LEFT$(r$,INSTR(r$," "))
 1862           SYS setcol%,fcol%EOR&FFFF0000:MOVE px%,py%+cy1%:PRINTr$
 1863           IF underline% MOVE px%,py%-cy%:PLOT1,cx1%*LENr$,0
 1864         ENDIF
 1865       ENDIF
 1866   ENDCASE
 1867 UNTIL text_offset%?text%=0
 1868 IF font% SYS losefont%,font%
 1869 ENDPROC
 1870
 1871 DEFPROCbegin_save(object%,sound%)
 1872 !q%=main_w%:SYS getw%,,q%
 1873 offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
 1874 SYS getentry%,stack%,object% TO adr%
 1875 ix%=adr%!12:iy%=adr%!16:ix1%=adr%!20:iy1%=adr%!24
 1876 IF sound% THEN
 1877   IF adr%!28 THEN
 1878     SYS getentry%,s_clicks%,adr%!28 TO adr%
 1879     IF adr%!20 THEN
 1880       SYS getentry%,s_mouse%,adr%!20 TO adr%
 1881       IF adr%!8=5 THEN
 1882         drag_sound%=adr%!12
 1883         PROCstart_drag(3,ix%+offx%,iy%+offy%,ix1%+offx%,iy1%+offy%)
 1884       ENDIF
 1885     ENDIF
 1886   ENDIF
 1887 ELSE
 1888   IF adr%!4=s_text% THEN
 1889     drag_ptype%=s_text%:drag_picture%=adr%!8
 1890     PROCstart_drag(2,ix%+offx%,iy%+offy%,ix1%+offx%,iy1%+offy%)
 1891   ELSE
 1892     drag_ptype%=adr%!4:drag_picture%=object%
 1893     PROCstart_drag(4,ix%+offx%,iy%+offy%,ix1%+offx%,iy1%+offy%)
 1894   ENDIF
 1895 ENDIF
 1896 ENDPROC
 1897
 1898 DEFPROCtry_user_drag
 1899 PROCget_pointer
 1900 IF handle%=main_w% ENDPROC
 1901 q%!20=handle%:q%!24=icon%
 1902 q%!28=mousex%:q%!32=mousey%
 1903 q%!36=sprite_size%-24
 1904 !q%=56
 1905 CASE drag_type% OF
 1906    WHEN 2:REM saving text
 1907      save$="text"
 1908      file_type%=&FFF
 1909    WHEN 3:REM saving sound
 1910      SYS getentry%,s_sounds%,drag_sound% TO adr%
 1911      save$=FNstring0(adr%+4)
 1912      file_type%=&D3C
 1913    WHEN 4:REM saving picture
 1914      SYS getentry%,drag_ptype%,drag_picture% TO adr%
 1915      save$=FNstring0(adr%+4)
 1916      IF drag_ptype%=s_sprites% file_type%=&FF9 ELSE file_type%=&AFF
 1917   ENDCASE
 1918   q%!40=file_type%
 1919   PROCstring0(q%+44,save$)
 1920   q%!12=q%!8:q%!16=1
 1921   SYS sendmessage%,17,q%,handle%,icon%:REM send datasave
 1922   myref%=q%!8
 1923   DMT%=0
 1924   DMT_ptr%=0
 1925 ENDCASE
 1926 ENDPROC
"� Ultimap v 1.10 (17 Feb 1995)
� � Simon Hayles 1994


 �=&40000
  � taskid% 4:$taskid%="TASK"
H ș "Wimp_Initialise",200,!taskid%,"Ultimap" � version%,task_handle%

 � � �errorbox
	


 �vars

& ș "OS_Module",16,"Ubase%Ultimap"

 *UBASE 40000 800000

 � global variables

8 � box% 12,box2% 12,matrix% 16,origin1% 8,origin2% 8
! icon_font$="Homerton.Medium"
 full_name$="Untitled"
 query_string$=""
 menu%=0
 sprite_size%=&1E000
 � q% 256,old_q% 256
 � errblk% 3000
' � main% 1000,sprites% sprite_size%
@ !sprites%=sprite_size%:sprites%!8=16:ș spop%,&209,sprites%
 � wimp_palette% 20*4
 � page_stack% 1024

 s_sprites%=1
 s_draw%=2
  s_replay%=3
! s_quicktime%=4
" s_fonts%=5
# s_starcoms%=6
$ s_loadorder%=7
% s_sounds%=8
& s_text%=9
' s_pages%=10
(
) s_clicks%=11
* s_mousedrag%=12
+ s_often%=13
, s_pointer%=14
- s_mouse%=15
. s_pageshown%=16
/ s_spare%=17
0 s_clickson%=18
1 s_temp%=19
2 s_sequences%=20
3
4 � options
5
6 printing%=�
7 portrait%=�
8 current_page%=0
9 margin%=16
: click_time=1
; click_pause=1
< temp_list%=0
= trying%=�
> speaking_text%=�
? speak_sound%=�
@ speak_token%=�
A h_scroll%=�
B v_scroll%=�
C toggle_icon%=�
D title_bar%=�
E scanning%=�
F scan_keys%=1
G scan_time%=100
H scan_object%=1
I scan_count%=0
J menu_enabled%=�
K ws%=sprites%+32
L page_size%=3
M file_version%=101
N current_page$="Page 1"
O ws%=sprites%+32
P
Q ș "Hourglass_On"
R �load_templates
S �get_mode_info
T �load_options
U �new_file
V
W& ș "OS_GetEnv" � EnvStr$,end_adr%
X � �EnvStr$," -quit ") �
Y- I%=�EnvStr$,""""):I%=�EnvStr$,"""",I%+1)
Z  �I%+=1:��EnvStr$,I%,1)<>" "
[ f$=�EnvStr$,I%)
\, � f$<>"" full_name$=f$:�load_file(f$,2)
] �
^
_ icon_bar%=�iconbar
`
a$ ș setcaret%,main_w%,-1,0,10,10
b
c ș "Hourglass_Off"
d � � �errorbox
e
f ș drag%,,-1
g �begin_trying
h �
i   �try_poll
j � �
k
l ��load_templates
m5 � font_array% 256:�t%=0�252�4:t%!font_array%=0:�
n3 ș "Wimp_OpenTemplate",,"<Obey$Dir>.Templates"
o � winds% 2000,indir% 1000
p indl%=indir%+4000
qI ș "Wimp_LoadTemplate",,winds%,indir%,indl%,-1,"main_w",0 � ,,indir%
r- ș "Wimp_CreateWindow",,winds% � main_w%
sW ș "Wimp_LoadTemplate",,winds%,indir%,indl%,font_array%,"pagelist_wc",0 � ,,indir%
t2 ș "Wimp_CreateWindow",,winds% � pagelist_wc%
uS ș "Wimp_LoadTemplate",,winds%,indir%,indl%,font_array%,"print_w",0 � ,,indir%
v. ș "Wimp_CreateWindow",,winds% � print_w%
wG ș "Wimp_LoadTemplate",,winds%,indir%,indl%,-1,"info",0 � ,,indir%
x+ ș "Wimp_CreateWindow",,winds% � info%
y ș "Wimp_CloseTemplate"
z �
{;
| ��load_options
}$ ptr%=�("<Ultimap$Dir>.options")
~P �#ptr%,toolbox_on%,scanning%,scan_keys%,scan_time%,menu_enabled%,sound_vol%
 �#ptr%
�% ptr%=�("<Ultimap$Dir>.messages")
� �#ptr%,info$,info1$
� �#ptr%
�" �set_icon_text(info%,1,info$)
�# �set_icon_text(info%,2,info1$)
� �
�
�
�
� �finish
� ș setcaret%,-1
� �lose_fonts
�. ș "Wimp_CloseDown",task_handle%,!taskid%
� ș "OS_Exit"
��
�
� ��redraw_window
� ș redraww%,,q% � more%
�
 ȕ more%
�-   offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
�   Ȏ !q% �
�\     � main_w%:�draw_main_w(q%!28-offx%,q%!32-offy%,q%!36-offx%,q%!40-offy%,offx%,offy%)
�Z     � pagelist_wc%:�draw_pagelist_wc(q%!28-offx%,q%!32-offy%,q%!36-offx%,q%!40-offy%)
�   �
�   ș getr%,,q% � more%
� �
� �
�
� � �front(handle%)
� !q%=handle%:ș getw%,,q%
�; �open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,-1)
� �
�
�= � �open_window(handle%,x%,y%,x1%,y1%,scx%,scy%,bhandle%)
� �handle%=-1��
� q%!28=bhandle%
� q%!0=handle%
�( q%!4=x%:q%!8=y%:q%!12=x1%:q%!16=y1%
� q%!20=scx%:q%!24=scy%
� ș openw%,,q%
� �
�
�
� � �close_window(handle%)
� !q%=handle%:ș closew%,,q%
� �
�
�� �vars
� getenv%=&10
�  wimp%    = (1<<18) + (3<<6)
� createw%=wimp%+1
� createicon%=wimp%+2
� deleteicon%=wimp%+4
� openw%=wimp%+5
� closew%=wimp%+6
� poll%=wimp%+7
� redraww%=wimp%+8
� updatew%=wimp%+9
� getr%=wimp%+10
� getw%=wimp%+11
� getwi%=wimp%+12
� seti%=wimp%+13
� geti%=wimp%+14
� getp%=wimp%+15
� drag%=wimp%+16
� forceredraw%=wimp%+17
� setcaret%=wimp%+18
� getcaret%=wimp%+19
� createmenu%=wimp%+20
� setextent%=wimp%+&17
� processkey%=wimp%+&1C
� sendmessage%=wimp%+&27
� crsubmenu%=wimp%+&28
� ploticon%=&400E2
�
� setcol%=&40743
� spop%=&2E
� findfont%=&40081
� losefont%=&40082
� fontinfo%=&40084
� stringwidth%=&40085
� setfont%=&4008A
� currentfont%=&4008B
� converttoos%=&40088
� converttopoints%=&40089
� paint%=&40086
� findcaret%=&4008D
� charbbox%=&4008E
�
� Ubase%=&1C0100
� newfile%=Ubase%
� newstack%=Ubase%+1
� killstack%=Ubase%+2
� addentry%=Ubase%+3
� amendentry%=Ubase%+4
� findtoken%=Ubase%+5
� killentry%=Ubase%+6
� movedata%=Ubase%+7
� addpacked%=Ubase%+8
� getentry%=Ubase%+9
� unpacksprite%=Ubase%+10
� nentries%=Ubase%+11
� movetoend%=Ubase%+12
� readstatus%=Ubase%+13
� writestatus%=Ubase%+14
� rendershape%=Ubase%+15
� getnth%=Ubase%+17
� locatefile%=Ubase%+19
� playsound%=Ubase%+20
�
� PD%=&80140
� PDselect%=PD%+5
� PDabort%=PD%+9
� PDpagesize%=PD%+3
� PDgiverec%=PD%+11
� PDdrawpage%=PD%+12
� PDgetrec%=PD%+13
� PDendjob%=PD%+8
�
� � �
� � � � �
�& ș "OS_Module",14,"Ubase%Ultimap"
� �
�
�� �get_pointer
�ș getp%,,q%
�Hmousex%=!q%:mousey%=q%!4:b%=q%!8:handle%=q%!12:icon%=q%!16:ob%=q%!20
��
�
� �errorbox
� SYS drag%,,-1
4!errblk%=�:t$=�$:t$="("+ß+")"+t$+" at line "+Þ
$(errblk%+4)=t$+�0
-ș "Wimp_ReportError",errblk%,1,"Ultimap"
� �<>1 �finish:�
=� IF printing% printing%=FALSE:PROCclose_window(print_w%)
�
;
	 ݤiconbar

+ !q%=-1:q%!4=0:q%!8=0:q%!12=64:q%!16=64
 q%!20=&300A
 �string0(q%+24,appsprite$)

' ș "Wimp_CreateIcon",,q% � handle%

 =handle%
;
 ��set_icon_fonts
1 ș findfont%,,icon_font$,12*16,12*16 � font%
. ș "Wimp_WhichIcon",print_w%,q%,1<<6,1<<6
< t%=0:�:�icon_font(print_w%,t%!q%,font%):t%+=4:�t%!q%=-1
 �

% ��icon_font(window%,icon%,font%)
% !errblk%=window%:errblk%!4=icon%
- errblk%!12=&FF000000:errblk%!8=font%<<24
 font%?font_array%+=1
 ș seti%,,errblk%
 �

 ��lose_fonts
1 �A%=0�255:n%=A%?font_array%:A%?font_array%=0
' � n%>0 � B%=1�n%:ș losefont%,A%:�
  �:�
!
" ��get_mode_info
#) ș "Wimp_ReadPalette",,wimp_palette%
$+ ș "OS_ReadModeVariable",-1,4 � ,,xef%
%+ ș "OS_ReadModeVariable",-1,5 � ,,yef%
&5 ș "OS_ReadModeVariable",-1,11 � ,,screen_width%
'6 ș "OS_ReadModeVariable",-1,12 � ,,screen_height%
(J screen_width%=screen_width%<<xef%:screen_height%=screen_height%<<yef%
) �
*
+& ��start_drag(type%,x%,y%,x1%,y1%)
, !q%=0:q%!4=5
-) q%!8=x%:q%!12=y%:q%!16=x1%:q%!20=y1%
.= q%!24=0:q%!28=0:q%!32=screen_width%:q%!36=screen_height%
/ ș drag%,,q%
0 drag_type%=type%
1 �
2
3m�--------------------------------------------------------------------------------------------------------
4
5* ݤstring0(t%):� t$:t$="":� ?t%<32:=""
6- �:t$=t$+�?t%:t%+=1:�?t%<32 � �t$=255:=t$
7
8' ��string0(t%,t$):$t%=t$:t%?�t$=0:�
9
:m�--------------------------------------------------------------------------------------------------------
;
< ��check_pagelist_wc
= but%=q%!8
>$ !ws%=pagelist_wc%:ș getw%,,ws%
?/ offx%=(ws%!4-ws%!20):offy%=(ws%!16-ws%!24)
@! page%=(((q%!4)-offy%)�-48)+1
A. ș nentries%,s_pages% � np%:� page%>np% �
B' ș getnth%,s_pages%,page% � ,page%
C current_page%=page%
D  �arrange_pagelist_wc(page%)
E �pre_process
F �show_page(page%)
G � scanning% �scan
H  � but%�4 ș createmenu%,,-1
I �
J
K ��show_page(page%)
L current_page%=page%
M !q%=main_w%:ș getw%,,q%
NA � (q%!32) � (1<<16) ș forceredraw%,-1,q%!4,q%!8,q%!12,q%!16
O& �window_title(main_w%,full_name$)
P' ș getentry%,s_pages%,page% � adr%
Q# current_page$=�string0(adr%+4)
R! � "set Upage "+current_page$
S �
T
U$ ��update_object(stack%,object%)
V � adr%
W' ș getentry%,stack%,object% � adr%
X< ș forceredraw%,main_w%,adr%!12,adr%!16,adr%!20,adr%!24
Y �
Z
[0 ��set_icon_state(window%,icon%,eor%,clear%)
\X !errblk%=window%:errblk%!4=icon%:errblk%!8=eor%:errblk%!12=clear%:ș seti%,,errblk%
] �
^
_  ݤicon_state(window%,icon%)
`C !errblk%=window%:errblk%!4=icon%:ș geti%,,errblk%:=errblk%!24
a
b* � �set_icon_text(window%,icon%,text$)
c7 !errblk%=window%:errblk%!4=icon%:ș geti%,,errblk%
d0 �string0(errblk%!28,�text$,(errblk%!36)-1))
e/ errblk%!8=0:errblk%!12=0:ș seti%,,errblk%
f �
g
h) ݤleaf(name$):� �name$,".")=0:=name$
i& �name$=�name$,�name$-�name$,"."))
j ��name$,".")=0:=name$
k
l& ��start_drag(type%,x%,y%,x1%,y1%)
m !q%=0:q%!4=5
n) q%!8=x%:q%!12=y%:q%!16=x1%:q%!20=y1%
o= q%!24=0:q%!28=0:q%!32=screen_width%:q%!36=screen_height%
p ș drag%,,q%
q drag_type%=type%
r �
s
t ��ramfetch
u DMT_ref%=q%!4
v DMT%=q%!20
w DMT_len%=q%!24
x Ȏ file_type% �
y>   � &AFF,&FF9:�save_picture(drag_ptype%,drag_picture%,"")
z*   � &FFF:�save_text(drag_picture%,"")
{)   � &D3C:�save_sound(drag_sound%,"")
| �
} �
~
 ��datasaveack
� � q%!12<>myref% �
� DMT%=0
� f_type%=q%!40
� Ȏ f_type% �
�K   � &AFF,&FF9:�save_picture(drag_ptype%,drag_picture%,�string0(q%+44))
�6   � &D3C:�save_sound(drag_sound%,�string0(q%+44))
�7   � &FFF:�save_text(drag_picture%,�string0(q%+44))
� �
� q%!12=q%!8:q%!16=3
� ș sendmessage%,17,q%,q%!4
� �
�
�' ��save_picture(type%,token%,name$)
�
 save$=""
� � �
� � � �:� �:� 1,�$
� � DMT_ptr%=0 �
�   ș "Hourglass_On"
�'   ș getentry%,type%,token% � adr%
�   len%=(!adr%)-16
�4   ș readstatus%,type%,token% � l%:� l% len%=l%
�   adr%+=16
�   � type%=s_sprites% �
�.     ș getentry%,s_sprites%,token% � adr%
�     � !adr%=(adr%!16)+16 �
�!       save$=�string0(adr%+4)
�+       adr%!4=1:adr%!8=16:adr%!12=!adr%
�        len%=!adr%+12:adr%+=4
�
     �
�9       ș unpacksprite%,s_sprites%,token%,sprites%+12
�       !sprites%=1
�       sprites%!4=16
�&       sprites%!8=(sprites%!12)+16
�       len%=sprites%!8
�       adr%=sprites%
�
     �
�     file_type%=&FF9
�   �
�     file_type%=&AFF
�   �
�   DMT_mylen%=len%
�   DMT_data%=adr%
� �
�, �save_slave(name$,adr%,len%,file_type%)
� � save$<>"" �
�,   ș getentry%,s_sprites%,token% � adr%
�   �string0(adr%+4,save$)
� �
� �
�
� ��save_sound(sound%,name$)
� � �
� � � �:� �:� 1,�$
� � DMT_ptr%=0 �
�   ș "Hourglass_On"
�+   ș getentry%,s_sounds%,sound% � adr%
�   len%=(!adr%)-24
�8   ș readstatus%,s_sounds%,sound% � l%:� l% len%=l%
�   adr%+=24
�   DMT_mylen%=len%
�   DMT_data%=adr%
� �
�& �save_slave(name$,adr%,len%,&D3C)
� �
�
� ��save_text(text%,name$)
� � �
� � � �:� �:� 1,�$
�& ș getentry%,s_text%,text% � adr%
�  ș movedata%,adr%,ws%,!adr%
� adr%=ws%+4:t%=adr%
� len%=0
� �
�   � ?t%=13 ?t%=10
�   � ?t%<>0 len%+=1:t%+=1
� �?t%=0 � �?t%=0
� � DMT_ptr%=0 �
�   ș "Hourglass_On"
�   DMT_mylen%=len%
�   DMT_data%=adr%
� �
�& �save_slave(name$,adr%,len%,&FFF)
� �
�
�- ��save_slave(name$,adr%,len%,file_type%)
�
 � DMT% �
�'   � DMT_mylen%-DMT_ptr%>DMT_len% �
�     l%=DMT_len%
�   �
�     l%=DMT_mylen%-DMT_ptr%
�     ș "Hourglass_Off"
�   �
�O   ș "Wimp_TransferBlock",task_handle%,DMT_data%+DMT_ptr%,DMT_ref%,DMT%,l%
�   DMT_ptr%+=l%
�   q%!12=q%!8:q%!16=7
�   q%!24=l%
�5   ș sendmessage%,18,q%,q%!4:� send RAM transmit
� �
�.    � "save "+name$+" "+�~adr%+" +"+�~len%
�+    � "SETTYPE "+name$+" "+�~file_type%
�    ș "Hourglass_Off"
� �
� �
�
� ��dataload
� ș movedata%,q%,old_q%,256
� Ȏ old_q%!40 �
�   � &BC3:
�E     � old_q%!20=main_w% � (old_q%!20=-2 � old_q%!24=icon_bar%) �
�       � old_q%!12<>0 �
�       � modified% �
�4         �open_query("load"+�string0(old_q%+44))
�       �
�.         �load_file(�string0(old_q%+44),1)
�T         old_q%!12=old_q%!8:old_q%!16=4:ș "Wimp_SendMessage",17,old_q%,old_q%!4
�       �
�
     �
� �
� �
�
� ��load_file(name$,error%)
� t%=�(name$):l%=�#t%:�#t%
�/ �set_slot(�+(l%�&4000)*&4000+&4000,error%)
� ș newfile%
�. full_name$=�name$,�(name$)-�name$,"!")-1)
� ș "Hourglass_On"
� � "load  "+name$+" 40000"
� version%=!&4000C
 ș locatefile%,&78000
 modified%=0
 query_string$=""
 edited_area%=0
W current_page%=!&40020:toolbox_on%=!&40024:menu_enabled%=!&40028:page_size%=!&4002C
P h_scroll%=!&40060:v_scroll%=!&40064:title_bar%=!&40068:toggle_icon%=!&4006C
< scanning%=!&40070:scan_keys%=!&40074:scan_time%=!&40078
 �size_page
 �redefine_main_w
	= � !&40030 !&40030=main_w%:ș openw%,,&40030:�open_main_w

 ș "Hourglass_Off"
4 ș "OS_ReadVarVal","Obey$Dir",main%,1000 � ,,T%
 T%?main%=0

 full_name$=�string0(main%)
& �window_title(main_w%,full_name$)
! appsprite$=�leaf(full_name$)
' menu$=�appsprite$,�(appsprite$)-1)
, � �menu$<12 �:menu$=menu$+�0:��menu$=12
 �

m�--------------------------------------------------------------------------------------------------------

 ��new_file
 �set_slot(�+&4000,2)
 ș newfile%
 � t%=1 � 20
   ș newstack%
 �
 full_name$="No_Name"
 �

i�----------------------------------------------------------------------------------------------------
 
!  ��open_centre(handle%,off%)
" !q%=handle%:ș getw%,,q%
#( w%=(q%!12)-(q%!4):h%=(q%!16)-(q%!8)
$ wx%=screen_width%�2-w%�2
% wy%=screen_height%�2-h%�2
&I �open_window(handle%,wx%,wy%+off%,wx%+w%,wy%+h%+off%,q%!20,q%!24,-1)
' �
(
) ��open_main_w
* !ws%=main_w%:ș getw%,,ws%
+ sx%=ws%!4:sy%=ws%!8
, sx1%=ws%!12:sy1%=ws%!16
-
.) sh%=screen_height%:sw%=screen_width%
/ hs%=0:vs%=0:tb%=0
0 � h_scroll% hs%=40
1 � v_scroll% vs%+=40
2 � title_bar% tb%=36
3 w%=sx1%-sx%:h%=sy1%-sy%
4, � sy1%+tb%>sh% sy1%=sh%-tb%:sy%=sy1%-h%
5 � sy%<hs% sy%=hs%
6, � sx1%+vs%>sw% sx1%=sw%-vs%:sx%=sx1%-w%
7 � sx%<0 sx%=0
8 !ws%=main_w%
9 ws%!4=sx%
: ws%!8=sy%
; ws%!12=sx1%
< ws%!16=sy1%
= ws%!20=0:ws%!24=0
> ws%!28=-1
?I �open_window(main_w%,ws%!4,ws%!8,ws%!12,ws%!16,ws%!20,ws%!24,ws%!28)
@ !q%=main_w%:ș getw%,,ws%
A �
B
Ci�----------------------------------------------------------------------------------------------------
D
E4 ��draw_picture(type%,token%,x%,y%,w%,h%,flags%)
FL � type%=s_draw% x%+=(1<<xef%):y%+=(1<<yef%):w%-=(2<<xef%):h%-=(2<<yef%)
G# ș getentry%,type%,token% � a%
H* � !a%>sprite_size%-24 flags%=flags%�8
I8 !errblk%=x%:errblk%!4=y%:errblk%!8=w%:errblk%!12=h%
J< ș rendershape%,type%,token%,sprites%,errblk%,flags%�15
K �
L
Mi�----------------------------------------------------------------------------------------------------
N
O# ��window_title(window%,title$)
P � window%=main_w% �
Q1   ș getentry%,s_pages%,current_page% � adr%
R+   title$=title$+" - "+�string0(adr%+4)
S �
T# � modified% title$=title$+" *"
U( !errblk%=window%:ș getwi%,,errblk%
V  �string0(errblk%!76,title$)
WG ș forceredraw%,-1,errblk%!4,(errblk%!16),errblk%!12,errblk%!16+36
X �
Y
Z
[
\i�----------------------------------------------------------------------------------------------------
]
^ ��check_icon_bar
_" mx%=!q%:my%=q%!4:button%=q%!8
`/ � button% � 2:�do_icon_bar_menu(mx%,my%):�
a �front(main_w%)
b# ș setcaret%,main_w%,-1,0,0,10
c �
d
e ��do_icon_bar_menu(x%,y%)
f/ � scan_time%=0:scan_time%=100:scan_keys%=1
g � opt%=0�2�2:P%=main%
h [opt opt%
i
.iconmenu
j equs menu$
k) equd &070207:equd 208:equd 40:equd 0
l% equd 0:equd info%:equd &07000021
m equs "Info        "
n0 equd scanning%�1:equd ibmenu:equd &07000021
o equs "Scanning    "
p& equd 0:equd somenu:equd &07000021
q equs "Sound volume"
r$ equd &80:equd -1:equd &07000021
s equs "Quit        "
t
u.ibmenu
v equs "Scanning":equd 0
w) equd &070207:equd 208:equd 40:equd 0
x1 equd (scan_keys%=2)�1:equd -1:equd &07000021
y equs "Two switches"
z) equd &80:equd ibmenu1:equd &07000021
{ equs "Speed       "
|
}.somenu
~ equs "Sound Volume"
) equd &070207:equd 208:equd 40:equd 0
�4 equd (sound_vol%=&10F)�1:equd -1:equd &07000021
� equs "Off         "
�4 equd (sound_vol%=&14F)�1:equd -1:equd &07000021
� equs "Quiet       "
�< equd &80 � ((sound_vol%=&17F)�1):equd -1:equd &07000021
� equs "Loud        "
�
�.ibmenu1
�! equs "Seconds":equb 0:equd 0
�) equd &070207:equd 208:equd 40:equd 0
�$ equd &84:equd -1:equd &07000121
�" equd ibmess:equd ibval:equd 8
�
�.ibval equs "a0-9."+�0
�'.ibmess equs �(scan_time%/100)+�(0)
�
� ]:�
�
�% ș createmenu%,,main%,mx%-16,260
� menu%=5
� �
�
�i�----------------------------------------------------------------------------------------------------
�
� ��icon_bar_menu
�	 � c%
�
 Ȏ !q% �
�
   � 1
�     Ȏ q%!4 �
�'       � -1:scanning%=scanning% � �
�       � 0:
�7         � scan_keys%=2 scan_keys%=1 � scan_keys%=2
�         scanning%=�
�       � 1:
�)         t%=(�(�string0(ibmess)))*100
�         � t% scan_time%=t%
�         scanning%=�
�
     �
�   � 2:
�     Ȏ q%!4 �
�       � 0:sound_vol%=&10F
�       � 1:sound_vol%=&14F
�       � 2:sound_vol%=&17F
�
     �
�0   � 3:� modified% �open_query("") � �finish
� �
�7 ș getp%,,q%:� q%!8 � 1 �do_icon_bar_menu(mx%,my%)
� �
�
�m�--------------------------------------------------------------------------------------------------------
�
�1 ��draw_main_w(wx%,wy%,wx1%,wy1%,offx%,offy%)
�/ ș getentry%,s_pages%,current_page% � adr%
�% stack%=adr%!20:page_col%=adr%!28
�E ș setcol%,page_col%:ȓ Ȑ wx%+offx%,wy%+offy%,wx1%-wx%,wy1%-wy%
� ș nentries%,stack% � no%
� � no% �
�   � object%=1 � no%
�0     ș getnth%,stack%,object% � adr%,token%
�E     x%=adr%!12:y%=adr%!16:x1%=adr%!20:y1%=adr%!24:flags%=adr%!36
�C     � x%<wx1% � x1%>wx% � y%<wy1% � y1%>wy% � (flags%�128)=0 �
�       Ȏ adr%!4 �
�<         � s_text%:�draw_text(stack%,token%,offx%,offy%)
�e         � s_sprites%,s_draw%:�draw_picture(adr%!4,adr%!8,x%+offx%,y%+offy%,x1%-x%,y1%-y%,flags%)
�       �
�
     �
�   �
� �
� �
�
� ݤstrip_spaces(text$)
� �
�)   � �text$=32 text$=�text$,�text$-1)
� ��text$<>32
� =text$
�
�' ݤlower_case(text$):� text$="":=""
� � t$,t%,c%
� �t%=1��text$
�   c%=�(�text$,t%,1))
�   � c%>64 � c%<91 c%+=32
�   t$=t$+�c%
� �
� =t$
�
�i�----------------------------------------------------------------------------------------------------
�
�+ ��draw_text(stack%,token%,offx%,offy%)
�d � speaking_text% � speak_token%=token% �highlight_text(stack%,token%,offx%,offy%,speak_word%):�
�& ș getentry%,stack%,token% � adr%
� x%=(adr%!12)+offx%
� y%=(adr%!16)+offy%
�" x1%=(adr%!20)-(1<<xef%)+offx%
�" y1%=(adr%!24)-(1<<yef%)+offy%
�. flags%=adr%!36:font%=adr%!40:b_s%=adr%!32
�0 fcol%=adr%!52:� fcol% � &FF fcol%=page_col%
� bcol%=adr%!56
�; � flags%�1 fcol%=fcol%�&FFFFFF00:bcol%=bcol%�&FFFFFF00
�1 �draw_border(b_s%,fcol%,bcol%,x%,y%,x1%,y1%)
� x%+=(1<<xef%)
� x1%-=(1<<xef%)
� y%+=(1<<yef%)
� y1%-=(1<<yef%)
�� �
�� � � � �:font%=0
� � font% �
�'   ș getentry%,s_fonts%,font% � t%
�1   ș findfont%,,t%+4,adr%!44,adr%!48 � font%
� �
� � font% �
�    � bcol% � &FF bcol%=fcol%
�;   ș "ColourTrans_SetFontColours",font%,bcol%,fcol%,14
�.   ș fontinfo%,font% � ,cx%,cy%,cx1%,cy1%
� �
�>   cx%=-(1<<xef%):cy%=-(1<<yef%):cx1%=8<<xef%:cy1%=8<<yef%
� �
� text_height%=cy1%
�( ș getentry%,s_text%,adr%!8 � text%
�
 text%+=4
� text_offset%=0
�, px%=x%+margin%:py%=y1%-text_height%+cy%
�$ centre%=�:right%=�:underline%=�
� � flags% � 8 centre%=�
� � flags% � 16 right%=�
� � flags% � 32 underline%=�
� �
�   Ȏ text_offset%?text% �
�
     � 0:
/     � 13:py%-=text_height%:text_offset%+=1

     
-       text$=�string0(text%+text_offset%)
       text_offset%+=�text$
       � font% �
@         ș stringwidth%,,text$,1<<30,1<<30,-1,�text$ � ,,w%
&         ș converttoos%,,w% � ,w%
-         � centre% px%=x%+(x1%-x%)�2-w%�2
(         � right% px%=x1%-w%-margin%
	6         � underline% text$=�(25)+�(1)+�(16)+text$

.         ș paint%,,text$,1<<4,px%,py%-cy%
       �
         w%=�text$*cx1%

-         � centre% px%=x%+(x1%-x%)�2-w%�2
(         � right% px%=x1%-w%-margin%
3         ș setcol%,fcol%:� px%,py%+cy1%:�text$
8         � underline% � px%,py%-cy%:�1,cx1%*�text$,0
       �
   �
 � text_offset%?text%=0
 � font% ș losefont%,font%
 �

3 ��draw_border(style%,col%,bcol%,x%,y%,x1%,y1%)
? � (bcol%�&FF)=0 ș setcol%,bcol%:ȓ Ȑ x%,y%,x1%-x%,y1%-y%
 Ȏ style% �

   � 1
     ș setcol%,col%
     ȓ x%,y%,x1%-x%,y1%-y%
   � 2:� bold
     ș setcol%,&FFFFFF00
#     � x%,y%:� x%,y1%:� x1%,y1%
 '     ș setcol%,!(wimp_palette%+16)
!     � x1%,y%:� x%,y%
"   � 3:� inset
#'     ș setcol%,!(wimp_palette%+16)
$#     � x%,y%:� x%,y1%:� x1%,y1%
%     ș setcol%,&FFFFFF00
&     � x1%,y%:� x%,y%
'   �
( �
) �
*
+ ��play_sound(sound%)
,* ș getentry%,s_sounds%,sound% � adr1%
-G len%=(!adr1%)-24:ș readstatus%,s_sounds%,sound% � l%:� l% len%=l%
. � �
/ � � � � �:�errorbox:�
0+ ș playsound%,adr1%+24,len%,sound_vol%
1 �
2
3 ��play_sound_wait(sound%)
4* ș getentry%,s_sounds%,sound% � adr1%
5G len%=(!adr1%)-24:ș readstatus%,s_sounds%,sound% � l%:� l% len%=l%
6+ ș playsound%,adr1%+24,len%,sound_vol%
7# �:ș playsound%,0 � t%:�t%<>-1
8 �
9
: ��make_space(plus%)
;# size%=(!&40004-&40000)+plus%*2
<+ slot_size%=�+(size%�&4000)*&4000+&4000
=* ș "Wimp_SlotSize",slot_size%,-1 � t%
>8 � t%<slot_size% � 1,"Ultimap has run out of memory"
? �
@
A ��set_slot(size%,error%)
B slot_size%=size%
C* ș "Wimp_SlotSize",slot_size%,-1 � t%
DL � t%<slot_size% � error%,"There's not enough memory to load this file!"
E �
F
G ��open_print_w
H. � portrait% a%=0:b%=1<<21 � a%=1<<21:b%=0
I) �set_icon_state(print_w%,6,a%,1<<21)
J) �set_icon_state(print_w%,7,b%,1<<21)
K# �set_icon_text(print_w%,2,"1")
L ș getp%,,q%
M ș createmenu%,,-1
N, ș createmenu%,,print_w%,!q%-30,q%!4+60
O �
P
Q ��check_print_w
R b%=q%!8
S Ȏ q%!16 �
T   � 3:ș createmenu%,,-1
U   � 4:
V)     !q%=print_w%:q%!4=7:ș geti%,,q%
WH     � (q%!24) � (1<<21) style%=2:portrait%=� � style%=1:portrait%=�
X)     !q%=print_w%:q%!4=2:ș geti%,,q%
Y$     run_num%=�(�string0(q%!28))
Z      � run_num%=0 run_num%=1
[(     �print_routine(style%,run_num%)
\$     � b% � 6 ș createmenu%,,-1
] �
^ �
_
`% ��print_routine(style%,run_num%)
a � phandle%,ohandle%
b  � left%,bottom%,right%,top%
c � copiesleft%,rect%
d
e phandle%=�("printer:")
f � �
g; � � �:�#phandle%:� �:� 1,"There is no printer driver!"
h. ș PDselect%,phandle%,"Ultima" � ohandle%
i
jZ � � �:ș PDabort%,phandle%:�#phandle%:ș PDselect%,ohandle%:printing%=�:� �:� 1,�$+Þ
k
l2 ș PDpagesize% � ,,,left%,bottom%,right%,top%
m ș "Hourglass_On"
n
o � loop%=1 � run_num%
p"   !ws%=main_w%:ș getwi%,,ws%
q4   mx%=ws%!44:my%=ws%!48:mx1%=ws%!52:my1%=ws%!56
r4   !box%=mx%:box%!4=my%:box%!8=mx1%:box%!12=my1%
s   Ȏ style% �
t     � 1:� landscape
u       � page_size%=4 �
v         scx=.67
w         scy=.67
xK         !matrix%=0:matrix%!4=-scx*2^16:matrix%!8=scy*2^16:matrix%!12=0
y[         !origin1%=(right%-left%)�16:origin1%!4=top%-(top%-bottom%)�2-(top%-bottom%)�30
z       �
{         scx=1.4
|         scy=1.5
}K         !matrix%=0:matrix%!4=-scx*2^16:matrix%!8=scy*2^16:matrix%!12=0
~J         !origin1%=(right%-left%)�20:origin1%!4=top%-(top%-bottom%)�20
       �
�     � 2:� portrait
�       scx=1.05
�       scy=.95
�H       !matrix%=scx*2^16:matrix%!4=0:matrix%!8=0:matrix%!12=scy*2^16
�9       !origin1%=(right%-left%)�20:origin1%!4=bottom%
�   �
�:   ș PDgiverec%,loop%,box%,matrix%,origin1%,&FFFFFF00
�   printing%=�
�6   ș PDdrawpage%,1,box2%,0,0 � copiesleft%,,rect%
�   ȕ copiesleft%<>0
�,     �draw_main_w(mx%,my%,mx1%,my1%,0,0)
�1     ș PDgetrec%,,box2% � copiesleft%,,rect%
�   �
� �
�
� ș PDendjob%,phandle%
� �#phandle%
� ș PDselect%,ohandle%
� printing%=�
� ș "Hourglass_Off"
� �
�
�/ ��hide_object(stack%,token%,hide%,on_vdu%)
�' ș getentry%,stack%,token% � adr1%
�/ � hide%<>0 � ((adr1%!36)�128)<>0 on_vdu%=0
�- � hide%=0 � ((adr1%!36)�128)=0 on_vdu%=0
�D � hide% adr1%!36=(adr1%!36)�128 � adr1%!36=(adr1%!36)�&FFFFFF7F
�^ � on_vdu% ș forceredraw%,main_w%,adr1%!12,adr1%!16,adr1%!20+(4<<xef%),adr1%!24+(1<<yef%)
� �
�
�. ��light_object(stack%,token%,hi%,on_vdu%)
�' ș getentry%,stack%,token% � adr1%
�  h%=(adr1%!36)�1:� hi% hi%=1
�@ � hi% adr1%!36=(adr1%!36)�1 � adr1%!36=(adr1%!36)�&FFFFFFFE
�T � on_vdu% � h%<>hi% ș forceredraw%,main_w%,adr1%!12,adr1%!16,adr1%!20,adr1%!24
� �
�
� ݤstack(page%)
� � adr%
�' ș getentry%,s_pages%,page% � adr%
�3 � adr%=0 � adr%!20=0 � 2,"bad stack from page"
�
 =adr%!20
�
�  ݤwhich_object(page%,x%,y%)
� stack%=�stack(page%)
�# ș nentries%,stack% � no%:o%=0
� � no%=0:=0
� � t%=1 � no%
�)   ș getnth%,stack%,t% � adr%,token%
�R   � x%>=adr%!12 � y%>=adr%!16 � x%<adr%!20 � y%<adr%!24 � ((adr%!36)�128)=0 �
�8     o%=token%:off_mx%=x%-adr%!12:off_my%=y%-adr%!16
�   �
� �
� =o%
�
�! ��arrange_pagelist_wc(page%)
� iw%=280:ih%=-48:pl_tick%=0
�  ș nentries%,s_pages% � np%
�% !q%=0:q%!8=iw%-(3<<xef%):q%!12=0
�& � np%<3 q%!4=ih%*3 � q%!4=ih%*np%
�" ș setextent%,pagelist_wc%,q%
� iy%=ih%:cur_y%=iy%
� � loop%=1�np%
�.   ș getnth%,s_pages%,loop% � adr%,token%
�-   � token%=page% cur_y%=iy%:pl_tick%=iy%
�   iy%+=ih%
� �
�" !q%=pagelist_wc%:ș getw%,,q%
�" offy%=(q%!16-q%!24):sy%=q%!24
�( wy%=(q%!8)-offy%:wy1%=(q%!16)-offy%
�! � cur_y%<wy% sy%+=cur_y%-wy%
�% � cur_y%-ih%>wy1% sy%=cur_y%-ih%
� q%!24=sy%
� o%=(q%!32)�(1<<16)
� ș openw%,,q%
�
 � o%=0 �
�   ș closew%,,q%
� �
�/   ș forceredraw%,-1,q%!4,q%!8,q%!12,q%!16
� �
� �
�
�* ��draw_pagelist_wc(wx%,wy%,wx1%,wy1%)
�  ș nentries%,s_pages% � np%
�1 ș findfont%,,icon_font$,12*16,12*16 � font%
�* ih%=-48:ix%=0:iy%=ih%:ix1%=280:iy1%=0
� �page%=1�np%
�8   � ix%<=wx1% � ix1%>=wx% � iy%<=wy1% � iy1%>=wy% �
�0     ș getnth%,s_pages%,page% � adr%,token%
�     � iy%=pl_tick% �
�2       !q%=ix%:q%!4=iy%:q%!8=ix%+38:q%!12=iy1%
�-       q%!16=&7000019:�string0(q%+20,"�")
�       ș ploticon%,,q%
�
     �
�4     !q%=ix%+38:q%!4=iy%:q%!8=ix%+280:q%!12=iy1%
�=     q%!16=font%<<24 � &171:q%!20=adr%+4:q%!24=0:q%!32=12
�     ș ploticon%,,q%
�   �
�   iy%+=ih%:iy1%+=ih%
� �
� ș losefont%,font%
� !q%=pagelist_wc%
� �
�
�  ݤpt_from_context(context%)
� Ȏ context% �
�   � s_mousedrag%:=4
�   � s_often%:=8
�   � s_pointer%:=16
�   � s_mouse%:=20
�   � s_pageshown%:=32
� �
� =0
�
� ݤname_exsists(stack%,f$)
� ș nentries%,stack% � ne%
� � ne%=0:=0
� f%=0:f$=�lower_case(f$)
� �entry%=1�ne%
�-   ș getnth%,stack%,entry% � adr%,token%
�3   � f$=�lower_case(�string0(adr%+4)) f%=token%
�
 �:=f%
�
� ��size_page
� !q%=main_w%:ș getwi%,,q%
�( � (q%!32)�(1<<16) open%=� � open%=�
� ș "Wimp_DeleteWindow",,q%
� bh%=q%!28
 portrait%=�
 Ȏ page_size% �
-   � 1:q%!52=639<<xef%:q%!48=-(460<<yef%)
-   � 2:q%!52=799<<xef%:q%!48=-(580<<yef%)
.   � 3:q%!52=1023<<xef%:q%!48=-(748<<yef%)
-   � 4:q%!52=1320:q%!48=-2000:portrait%=�
 �
+ ș "Wimp_CreateWindow",,q%+4 � main_w%
U !q%=main_w%:ș getw%,,q%:�open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,bh%)
	 �


P� ***************************** clicks below here **************************


 ��begin_trying
 trying%=�
 click_underway%=�
 pause_on%=�
 pointer_object%=0
 input$=""
 �zero_page_stack
 �pre_process
 �show_page(current_page%)
 � scanning% �scan
 � "set Uobject "+�34+�34
 �

 ��delight
! stack%=�stack(current_page%)
 ș nentries%,stack% � no%
 � no% �
   � object%=1�no%
)     ș getnth%,stack%,object% � adr%
 +     � adr%!36 � 1 adr%!36=(adr%!36)�-2
!   �
" �
#7 � speak_token% �update_object(stack%,speak_token%)
$ �
%
&D ��zero_page_stack:�T%=0�1020�4:T%!page_stack%=0:�:page_ptr%=0:�
'
( ��pre_process
) pointer_object%=0
* pointer_int%=0
+ often_int%=0
, seq_int%=0
- scan_object%=0
.2 speaking_text%=0:speak_word%=0:speak_token%=0
/ pointer_on%=�
0 try_time%=�
1 �
2$  ș nentries%,s_sequences% � s%
3  � s% �
4/    ș getnth%,s_sequences%,1 � adr%,token%
5C    ș killentry%,s_sequences%,token%:�     clear all sequences
6  �
7
 �s%=0
8 �
9#  ș nentries%,s_clickson% � s%
:  � s% �
;*    ș getnth%,s_clickson%,1 � ,token%
<?    ș killentry%,s_clickson%,token%:�     clear all clicks
=  �
>
 �s%=0
?! stack%=�stack(current_page%)
@/ ș getentry%,s_pages%,current_page% � adr%
A2 � adr%!24 ș writestatus%,s_clicks%,adr%!24,0
B ș nentries%,stack% � no%
C � no% �
D   � object%=1�no%
E)     ș getnth%,stack%,object% � adr%
Fa     adr%!36=(adr%!36)�&FFFFFF3E:�     ensure all objects shown, unselected and unhighlighted
G     click%=adr%!28
Hh     � click% ș writestatus%,s_clicks%,click%,0:�          zero status to avoid repetition of click
I   �
J �
K � object%=0�no%
L   � object%=0 �
M3     ș getentry%,s_pages%,current_page% � adr%
N     click%=adr%!24
O   �
P)     ș getnth%,stack%,object% � adr%
Q     click%=adr%!28
R   �
S   � click% �
T-     ș getentry%,s_clicks%,click% � adr%
U-     ș readstatus%,s_clicks%,click% � s%
V     � s%=0 �
W-       ș writestatus%,s_clicks%,click%,1
X5       � adr%!4 �pre_click(s_mousedrag%,adr%!4,0)
Y       � adr%!8 �
Z         often_int%=�
[&         adr%!24=try_time%+adr%!12
\*         �pre_click(s_often%,adr%!8,1)
]       �
^       � adr%!16 �
_         pointer_int%=�
`-         �pre_click(s_pointer%,adr%!16,1)
a       �
b3       � adr%!20 �pre_click(s_mouse%,adr%!20,1)
c       � adr%!32 �
d/         �pre_click(s_pageshown%,adr%!32,1)
e,         �do_click(s_pageshown%,adr%!32)
f       �
g
     �
h   �
i �
j �
k
l& ��pre_click(context%,click%,seq%)
m � adr%
n( ș getentry%,context%,click% � adr%
o end%=adr%+!adr%:adr%+=4
p �
q   len%=!adr%:cmd%=adr%!4
r   Ȏ cmd% �
s8     � 1,3,4:� seq%=0 �pre_list(cmd%,adr%+8,len%-12)
tA     � 5:� context%=s_pageshown% � seq%=0 �play_sound(adr%!8)
u
     � 7:
v       � seq% �
w         seq_int%=�
x0         flag%=adr%!12:s%=adr%+36:e%=len%-40
y.         � flag% � 4 s%=adr%+40:e%=len%-44
z         �pre_list(3,s%,e%)
{       �
|   �
}   adr%+=len%
~ � adr%>=end%
 �
�
� ��pre_list(cmd%,adr%,len%)
� �list%=0�len%�4
�   Ȏ cmd% �
�1     � 1:�light_object(stack%,list%!adr%,1,0)
�0     � 3:�hide_object(stack%,list%!adr%,1,0)
�0     � 4:�hide_object(stack%,list%!adr%,0,0)
�   �
� �
� �
�
� ��try_poll
� ș poll%,,q% � A%
� ș playsound%,0
�& ș "OS_Module",16,"Ubase%Ultimap"
� Ȏ A% �
�   � 0:�try_null
�   � 1:�redraw_window
�D   � 2:�open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
�   � 3:�close_window(!q%)
�5   � 4:� !q%=main_w% � pointer_on%=0 �"pointer 1"
�N   � 5:� !q%=main_w% � pointer_on%=0 ș "Wimp_SpriteOp",36,1,"ptr_clock",2
�   � 6:�try_mouse
�   � 7:�try_user_drag
�   � 8:�try_keys
�   � 9:�try_menu_select
�   � 17,18:�try_receive(q%)
� �
� �
�
� � �try_receive(q%)
� Ȏ q%!16 �
�   � 0:�finish:�
�   � 2:�datasaveack
�!   � 3:� q%!40=&BC3 �dataload
�   � 6:�ramfetch
�   � &502:�help_request
�!   � &400C0:�try_menu_warning
�   � &400C1:
�     ș "Hourglass_On"
�     �get_mode_info
�     �lose_fonts
�     �set_icon_fonts
�     ș "Hourglass_Off"
� �
� �
�
� ��try_null
�4 !q%=main_w%:ș getw%,,q%:�((q%!32)�(1<<16))=0 �
�# � seq_int% �check_sequences(�)
� �check_clicks
�P � �input$,1)=�13:input$=�input$,�(input$)-1):!q%=main_w%:q%!24=13:�try_keys
�0 � pointer_int% � scanning%=� �under_pointer
� � often_int% �often
�% � scanning% � scan_keys%=1 �scan
� ș playsound%,0 � t%
� � t%<>-1 �
�   � speaking_text% �
�     � speak_sound% �
�)       �play_sound_wait(speak_sound%)
�
     �
�       �7:t%=�+50:�:��>t%
�
     �
�     �speaking_text
�   �
� �
� �check_sysvars
� �
�
� ��check_sysvars
�1 ș "OS_ReadVarVal","Upage",main%,1000 � ,,T%
�% T%?main%=0:page$=�string0(main%)
� � page$<>current_page$ �
�*   page%=�name_exsists(s_pages%,page$)
�   � page% �
�     current_page%=page%
�     �pre_process
�"     �show_page(current_page%)
�     � scanning% �scan
�   �
� �
�3 ș "OS_ReadVarVal","Uobject",main%,1000 � ,,T%
�' T%?main%=0:object$=�string0(main%)
� � object$<>"" �
�   � "set Uobject "+�34+�34
�4   input$=object$:!q%=main_w%:q%!24=13:�try_keys
� �
� �
�
� ��try_mouse
� Ȏ q%!12 �
�>   � -2:� q%!16=icon_bar% � 1,&100,&9000,1:�check_icon_bar
�   � main_w%:�try_main_w
�(   � pagelist_wc%:�check_pagelist_wc
�    � print_w%:�check_print_w
� �
� �
�
� ��try_main_w
�# ș setcaret%,main_w%,-1,0,0,10
� mx%=!q%:my%=q%!4
� button%=q%!8
� � button%�2 �
�.   � menu_enabled% �open_try_menu(mx%,my%)
�   �
� �
�' � scanning% �scan_click(button%):�
� � pointer_on%=� �
� icon%=q%!16
� !q%=main_w%:ș getw%,,q%
�+ offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
� mx%-=offx%:my%-=offy%
� Ȏ button% �
�   � &40
�%     stack%=�stack(current_page%)
�5     object%=�which_object(current_page%,mx%,my%)
�     � object% �
�-       ș getentry%,stack%,object% � adr%
�       click%=adr%!28
�       � click% �
�1         ș getentry%,s_clicks%,click% � adr%
�         � adr%!4 �
�6           ș getentry%,s_mousedrag%,adr%!4 � adr%
�+           �begin_save(object%,adr%!12)
�         �
�       �
�
     �
�
   � &100
2     page_ptr%-=4:� page_ptr%<0 page_ptr%=1020
%     � page_ptr%!page_stack%<>0 �
       �delight
.       current_page%=page_ptr%!page_stack%
"       page_ptr%!page_stack%=0
       �pre_process
$       �show_page(current_page%)
       � scanning% �scan

     �
	
   � &400

%     stack%=�stack(current_page%)
5     object%=�which_object(current_page%,mx%,my%)
     � object% �

-       ș getentry%,stack%,object% � adr%
       click%=adr%!28
       � click% �
1         ș getentry%,s_clicks%,click% � adr%
2         � adr%!20 �do_click(s_mouse%,adr%!20)
       �

     �
5       ș getentry%,s_pages%,current_page% � adr%
       click%=adr%!24
       � click% �
1         ș getentry%,s_clicks%,click% � adr%
2         � adr%!20 �do_click(s_mouse%,adr%!20)
       �

     �
 �
 �

 ��try_keys

 Ȏ !q% �
    � main_w%
!     key%=q%!24
"     � key%=13 �
#'       stack%=�stack(current_page%)
$/       � �lower_case(�input$,6))="object" �
%+         token%=�(�input$,�(input$)-6))
&.         ș getentry%,stack%,token% � adr%
'         � adr% �
(           � adr%!28 �
)'             pointer_object%=token%
*6             ș getentry%,s_clicks%,adr%!28 � adr%
+6             � adr%!20 �do_click(s_mouse%,adr%!20)
,           �
-         �
.       �
/A       � �lower_case(�input$,4))="back" q%!8=&100:�try_main_w
0       input$=""
1
     �
2-       � key%=27:�close_window(main_w%):�
3&       � key%=&180 �open_print_w:�
4K       � key%>31 � key%<255 input$=input$+�(key%) � ș processkey%,key%
5"       � �input$=255 input$=""
6
     �
7   � print_w%
8H     � q%!24=13 q%!8=4:q%!16=4:�check_print_w � ș processkey%,q%!24
9   
:     ș processkey%,q%!24
; �
< �
=
>  ��do_click(context%,click%)
?( ș getentry%,context%,click% � adr%
@" ș movedata%,adr%,ws%+8,!adr%
A$ !ws%=(ws%!8)+8:ws%!4=12:ws%!8=0
B �make_space(!ws%+16)
C! ș addentry%,s_clickson%,ws%
D �check_clicks
E �
F
G ��check_clicks
H# ș nentries%,s_clickson% � nc%
I � nc%=0 �
J � click%=1�nc%
K1   ș getnth%,s_clickson%,click% � click_adr%
L+   � click_adr%!8<� � click_adr%!4<>0 �
M0     ptr%=click_adr%!4:cadr%=click_adr%+ptr%
N-     click_len%=!cadr%:cmd%=cadr%!4:ok%=�
O     Ȏ cmd% �
P:       � 1,3,4:�click_list(cmd%,cadr%+8,click_len%-12)
Q       � 2
R         �delight
S0         page_ptr%!page_stack%=current_page%
T6         page_ptr%+=4:� page_ptr%=1024 page_ptr%=0
U"         current_page%=cadr%!8
VM         � current_page%=0 ș nentries%,s_pages% � t%:current_page%=�(t%)
W.         � current_page%=0 current_page%=1
X         �pre_process
Y&         �show_page(current_page%)
Z         � scanning% �scan
[         �
\       � 5
]!         ș playsound%,0 � t%
^1         � t%=-1 ok%=� � �play_sound(cadr%!8)
_*       � 6:�speak_text(stack%,cadr%!8)
`!       � 7:�init_seq(�,cadr%)
a       � 8:
b)         click_cmd$=�string0(cadr%+8)
c)         cmd$=�lower_case(click_cmd$)
d'         � �cmd$,10)="load file " �
e-           file$=�cmd$,�cmd$-10):page$=""
f           � �file$," ") �
g3             page$=�file$,�(file$)-�file$," "))
h,             file$=�file$,�file$," ")-1)
i           �
j)           file$=full_name$+"."+file$
k           � �
l.           � � �:� �:click_adr%!4=0:� 1,�$
m"           �load_file(file$,1)
nZ           � page$<>"" page%=�name_exsists(s_pages%,page$):� page% current_page%=page%
o           �pre_process
p(           �show_page(current_page%)
q            � scanning% �scan
r           �zero_page_stack
s           �
t         �
u3         � �cmd$,4)="load" � �cmd$,5)="*load" �
v,           file$=�cmd$,�cmd$-5):page$=""
w           � �file$," ") �
x3             page$=�file$,�(file$)-�file$," "))
y,             file$=�file$,�file$," ")-1)
z           �
{           � �
|.           � � �:� �:click_adr%!4=0:� 1,�$
}"           �load_file(file$,1)
~Z           � page$<>"" page%=�name_exsists(s_pages%,page$):� page% current_page%=page%
           �pre_process
�(           �show_page(current_page%)
�            � scanning% �scan
�           �zero_page_stack
�           �
�         �
�1         � �cmd$,3)="run" � �cmd$,4)="*run" �
�*           file$=�cmd$,�cmd$-4):�file$
�           � �
�.           � � �:� �:click_adr%!4=0:� 1,�$
�#           � "filer_run "+file$
�           click_cmd$=""
�         �
�"         � �cmd$,6)="replay" �
�#           file$=�cmd$,�cmd$-7)
�"           � �file$,"-at")=0 �
�3             ș getentry%,stack%,object% � adr%
�6             x%=(adr%!12)+offx%:y%=(adr%!16)+offy%
�0             file$=file$+" -at "+�x%+","+�y%
�           �
�           � �
�.           � � �:� �:click_adr%!4=0:� 1,�$
�(           ș "Wimp_StartTask",file$
�           click_cmd$=""
�         �
�M         � �cmd$,4)="back" input$="back":!q%=main_w%:q%!24=13:�try_keys:�
�"         � �cmd$,6)="object" �
�           click_cmd$=""
�           input$=cmd$+�13
�         �
�         � �
�,         � � �:� �:click_adr%!4=0:� 1,�$
�*         � click_cmd$<>"" � click_cmd$
�%       � 9:click_adr%!8=�+cadr%!8
�
     �
�3     ș getnth%,s_clickson%,click% � click_adr%
�+     � ok% click_adr%!4=ptr%+click_len%
�3     � click_adr%!4>=!click_adr% click_adr%!4=0
�   �
� �
�
 click%=1
� �
�2   ș getnth%,s_clickson%,click% � adr%,token%
�   � adr%!4=0 �
�)     ș killentry%,s_clickson%,token%
�     click%-=1
�   �
�   click%+=1
�%   ș nentries%,s_clickson% � nc%
� �click%>=nc% � nc%=0
� �
�
�! ��click_list(cmd%,adr%,len%)
� �list%=0�len%�4
�   Ȏ cmd% �
�1     � 1:�light_object(stack%,list%!adr%,1,1)
�0     � 3:�hide_object(stack%,list%!adr%,1,1)
�0     � 4:�hide_object(stack%,list%!adr%,0,1)
�   �
� �
� �
�
�& ��under_pointer:� pointer_on%=0 �
� �get_pointer
� !q%=main_w%:ș getw%,,q%
�+ offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
�( mx%=mousex%-offx%:my%=mousey%-offy%
�O � handle%=main_w% object%=�which_object(current_page%,mx%,my%) � object%=0
�! � object%<>pointer_object% �
�   pointer_object%=object%
�#   stack%=�stack(current_page%)
�    ș nentries%,stack% � no%
�   � no% �
�     � ob%=1�no%
�.       ș getnth%,stack%,ob% � adr%,token%
�K       � token%<>object% � (adr%!36)�1 �light_object(stack%,token%,0,1)
�
     �
�     � object% �
�4       ș getentry%,stack%,object% � adr%,token%
�       � adr%!28 �
�2         ș getentry%,s_clicks%,adr%!28 � adr%
�4         � adr%!16 �do_click(s_pointer%,adr%!16)
�       �
�
     �
�5       ș getentry%,s_pages%,current_page% � adr%
�       � adr%!24 �
�2         ș getentry%,s_clicks%,adr%!24 � adr%
�4         � adr%!16 �do_click(s_pointer%,adr%!16)
�       �
�
     �
�   �
� �
� �
�
� ��often:� pointer_on%=0 �
�! stack%=�stack(current_page%)
� ș nentries%,stack% � no%
� � no% �
�   � ob%=1�no%
�,     ș getnth%,stack%,ob% � adr%,token%
�     � adr%!28 �
�0       ș getentry%,s_clicks%,adr%!28 � adr%
�       � adr%!8 �
�         � adr%!24<� �
�            adr%!24=�+adr%!12
�)           �do_click(s_often%,adr%!8)
�         �
�       �
�
     �
�   �
� �
� �
�
� ��open_try_menu(mx%,my%)
� �I%=0�2�2:P%=main%
� [optI%
� equs menu$
� equd &070207
� equd 168:equd 40:equd 0
�, equd 8:equd pagelist_wc%:equd &07000021
� equs "Show page   "
�$ equd &80:equd -1:equd &07000021
� equs "Print       "
� ]:�
�
 menu%=11
�% ș createmenu%,,main%,mx%,my%-32
� �
�
� ��try_menu_warning
$ mx%=q%!24:my%=q%!28:item%=q%!32
( �arrange_pagelist_wc(current_page%)
( ș crsubmenu%,,pagelist_wc%,mx%,my%
 �

 ��try_menu_select
 Ȏ menu% �
   � 5:�icon_bar_menu
   � 11:
	     Ȏ !q% �

       � 1:�open_print_w

     �
 �

 �

 ��try_pagelist_wc
 but%=q%!8
$ !ws%=pagelist_wc%:ș getw%,,ws%
/ offx%=(ws%!4-ws%!20):offy%=(ws%!16-ws%!24)
! page%=(((q%!4)-offy%)�-48)+1
. ș nentries%,s_pages% � np%:� page%>np% �
' ș getnth%,s_pages%,page% � ,page%
  �arrange_pagelist_wc(page%)
 �show_page(page%)
( �arrange_pagelist_wc(current_page%)
 �begin_trying
  � but%�4 ș createmenu%,,-1
 �

 ��scan
 � scan_count%>� �
, � scan_keys%=1 scan_count%=�+scan_time%
 ! stack%=�stack(current_page%)
! ș nentries%,stack% � no%
" � no%=0 �
# � scan_object%<>0 �
$3   ș getnth%,stack%,scan_object% � adr%,token%
%   � adr%!36 � 1 �
&)     �light_object(stack%,token%,0,1)
'     scan_object%+=1
(*     � scan_object%>no% scan_object%=1
)   �
* �
+   scan_object%=1
, �
- yes%=0
. �
/3   ș getnth%,stack%,scan_object% � adr%,token%
0+   � (adr%!28)<>0 � ((adr%!36)�128)=0 �
1.     ș getentry%,s_clicks%,adr%!28 � adr%
2     � adr%!16 �
34       �light_object(stack%,token%,1,1):yes%=no%
4
     �
5       scan_object%+=1
6,       � scan_object%>no% scan_object%=1
7       yes%+=1
8
     �
9   �
:     scan_object%+=1
;*     � scan_object%>no% scan_object%=1
<     yes%+=1
=   �
> �yes%=no%
? �
@
A ��scan_click(but%)
B � scan_object%=0 �
C! stack%=�stack(current_page%)
D4 � scan_keys%=1 � (scan_keys%=2 � (but%�&101)) �
E3   ș getnth%,stack%,scan_object% � adr%,token%
F   � adr%!28 �
G.     ș getentry%,s_clicks%,adr%!28 � adr%
H.     � adr%!20 �do_click(s_mouse%,adr%!20)
I   �
J �
K   � but%�&404 �scan
L �
M �
N
O ��redefine_main_w
P !q%=main_w%:ș getwi%,,q%
Q( � (q%!32)�(1<<16) open%=� � open%=�
R ș "Wimp_DeleteWindow",,q%
S' f%=((q%!32)�&83FFFFFF) � (&83<<24)
T bh%=q%!28
U � h_scroll% f%=f%�(1<<30)
V � v_scroll% f%=f%�(1<<28)
W* � h_scroll% � v_scroll% f%=f%�(1<<29)
X< � title_bar% f%=f%�(1<<26):� toggle_icon% f%=f%�(1<<27)
Y
 q%!32=f%
Z+ ș "Wimp_CreateWindow",,q%+4 � main_w%
[U !q%=main_w%:ș getw%,,q%:�open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,bh%)
\ �
]
^ ��init_seq(time%,adr%)
_  ș movedata%,adr%,ws%,!adr%
`7 � (adr%!12)�4 ws%!4=40:ws%!8=36 � ws%!4=36:ws%!8=0
a) ws%!12=4:ws%!16=adr%!20:ws%!20=time%
b* ws%!24=adr%!8:ws%!28=0:ws%!32=adr%!12
c �make_space(!ws%+16)
d" ș addentry%,s_sequences%,ws%
ee � (ws%!32)�64 pointer_on%=�:�get_pointer:� handle%=main_w% ș "Wimp_SpriteOp",36,1,"ptr_clock",2
f �
g
h ��check_sequences(time%)
i$ ș nentries%,s_sequences% � ns%
j � ns% �
k#   stack%=�stack(current_page%)
l   � seq%=1 � ns%
m,     ș getnth%,s_sequences%,seq% � adr%
n     � time%>adr%!20 �
o        adr%!20=time%+adr%!16
p?       len%=!adr%:ptr%=adr%!4:optr%=adr%!8:ptr_inc%=adr%!12
q(       loop%=(adr%!32)�2:last_one%=0
rC       last%=(adr%!32)�8:trail%=(adr%!32)�16:noud%=(adr%!32)�32
s!       seethru%=(adr%!32)�128
t+       � adr%!24<>0 � adr%!28=adr%!24 �
u         � loop% �
v$           � ptr%=40 last_one%=�
w         �
x$           � ptr%=36 last_one%=�
y         �
z       �
{"       � optr%<>0 � trail%=0 �
|         � last_one% �
}           � last%=0 �
~             � noud% �
4               �fast_draw(stack%,optr%!adr%,�,0)
�             �
�6               �hide_object(stack%,optr%!adr%,1,1)
�             �
�           �
�         �
�           � noud% �
�2             �fast_draw(stack%,optr%!adr%,�,0)
�           �
�4             �hide_object(stack%,optr%!adr%,1,1)
�           �
�         �
�       �
�       � last_one%=0 �
�         � noud% �
�6           �fast_draw(stack%,ptr%!adr%,0,seethru%)
�         �
�1           �hide_object(stack%,ptr%!adr%,0,1)
�         �
�'         adr%!8=ptr%:ptr%+=ptr_inc%
�         � loop% �
�           � ptr%=len% �
�'             ptr%=len%-8:adr%!12=-4
�           �
�             � ptr%=32 �
�$               ptr%=40:adr%!12=4
�3               � adr%!24<>0 adr%!28=(adr%!28)+1
�             �
�           �
�         �
�           � ptr%=len% �
�             ptr%=36
�1             � adr%!24<>0 adr%!28=(adr%!28)+1
�           �
�         �
�       �
�         ptr%=0
�       �
�       adr%!4=ptr%
�
     �
�   �
�   �
�     nomore%=�
�(     ș nentries%,s_sequences% � ns%
�     � ns% �
�       � seq%=1 � ns%
�7         ș getnth%,s_sequences%,seq% � adr%,token%
�A         � adr%!4=0 � (adr%!32)�64 �"pointer 1":pointer_on%=�
�L         � adr%!4=0 nomore%=0:seq%=ns%:ș killentry%,s_sequences%,token%
�       �
�
     �
�   �nomore%
� �
� �
�
�/ ��fast_draw(stack%,token%,erase%,seethru%)
� � adr%
� !q%=main_w%:ș getw%,,q%
�+ offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
�& ș getentry%,stack%,token% � adr%
� x%=(adr%!12)+offx%
� y%=(adr%!16)+offy%
�" x1%=(adr%!20)-(1<<xef%)+offx%
�" y1%=(adr%!24)-(1<<yef%)+offy%
� � erase% �
�0   � ((adr%!36)�128)=0 adr%!36=(adr%!36)�128
�2   ș getentry%,s_pages%,current_page% � adr1%
�   bcol%=adr1%!28:
� �
�9   � (adr%!36)�128 � seethru%=0 adr%!36=(adr%!36)�128
� �
�  flags%=adr%!36:type%=adr%!4
�f !q%=main_w%:q%!4=x%-offx%:q%!8=y%-offy%-32:q%!12=x1%-offx%+(1<<xef%)+32:q%!16=y1%-offy%+(1<<yef%)
� ș updatew%,,q% � more%
�
 ȕ more%
�   � erase% �
�3     ș setcol%,bcol%:ȓ Ȑ x%,y%,x1%-x%,y1%-y%
�   �
�     Ȏ type% �
�:       � s_text%:�draw_text(stack%,token%,offx%,offy%)
�W       � s_sprites%,s_draw%:�draw_picture(adr%!4,adr%!8,x%,y%,x1%-x%,y1%-y%,flags%)
�
     �
�   �
�   ș getr%,,q% � more%
� �
� �
�
�  ��speak_text(stack%,token%)
� speak_token%=token%
�! speak_word%=0:speak_sound%=0
�& ș getentry%,stack%,token% � adr%
�' ș getentry%,s_text%,adr%!8 � adr%
� sptext%=adr%+4
� � ?sptext%<>0 �
�   speaking_text%=�
�   text$="":a%=sptext%
�)   �:text$=text$+�(?a%):a%+=1:�?a%<48
�2   speak_sound%=�name_exsists(s_sounds%,text$)
�*   �update_object(stack%,speak_token%)
� �
� �
�
� ��speaking_text
�, ș getentry%,stack%,speak_token% � adr%
�' ș getentry%,s_text%,adr%!8 � adr%
� sptext%=adr%+4
� �
�   speak_word%+=1
�   c%=speak_word%?sptext%
� �c%=32 � c%=13 � c%=0
� � c%=32 � c%=13 �
�   �
�-    speak_word%+=1:c%=speak_word%?sptext%
�   �c%>32 � c%=0
� �
� � c%<>0 �
�&   text$="":a%=speak_word%+sptext%
�)   �:text$=text$+�(?a%):a%+=1:�?a%<48
�2   speak_sound%=�name_exsists(s_sounds%,text$)
� �
� � c%=0 speaking_text%=�
�( �update_object(stack%,speak_token%)
� �
�
�6 ��highlight_text(stack%,token%,offx%,offy%,word%)
�& ș getentry%,stack%,token% � adr%
� x%=(adr%!12)+offx%
� y%=(adr%!16)+offy%
�" x1%=(adr%!20)-(1<<xef%)+offx%
" y1%=(adr%!24)-(1<<yef%)+offy%
. flags%=adr%!36:font%=adr%!40:b_s%=adr%!32
8 fcol%=adr%!52:� fcol% � &FF fcol%=default_page_col%
 bcol%=adr%!56
; � flags%�1 fcol%=fcol%�&FFFFFF00:bcol%=bcol%�&FFFFFF00
1 �draw_border(b_s%,fcol%,bcol%,x%,y%,x1%,y1%)
 x%+=(1<<xef%)
 x1%-=(1<<xef%)
 y%+=(1<<yef%)
	 y1%-=(1<<yef%)

 � �
 � � � � �:font%=0
 � font% �

'   ș getentry%,s_fonts%,font% � t%
1   ș findfont%,,t%+4,adr%!44,adr%!48 � font%
 �
 � font% �
    � bcol% � &FF bcol%=fcol%
.   ș fontinfo%,font% � ,cx%,cy%,cx1%,cy1%
 �
>   cx%=-(1<<xef%):cy%=-(1<<yef%):cx1%=8<<xef%:cy1%=8<<yef%
 �
 text_height%=cy1%
( ș getentry%,s_text%,adr%!8 � text%

 text%+=4
 text_offset%=0
, px%=x%+margin%:py%=y1%-text_height%+cy%
$ centre%=�:right%=�:underline%=�
 � flags% � 8 centre%=�
 � flags% � 16 right%=�
 � flags% � 32 underline%=�
 �
    Ȏ text_offset%?text% �
!
     � 0:
"/     � 13:py%-=text_height%:text_offset%+=1
#
     
$-       text$=�string0(text%+text_offset%)
%       text_offset%+=�text$
&       px%=x%+margin%
'       � font% �
(@         ș stringwidth%,,text$,1<<30,1<<30,-1,�text$ � ,,w%
)&         ș converttoos%,,w% � ,w%
*-         � centre% px%=x%+(x1%-x%)�2-w%�2
+(         � right% px%=x1%-w%-margin%
,7         � underline% ul$=�(25)+�(1)+�(16) � ul$=""
-A         ș "ColourTrans_SetFontColours",font%,bcol%,fcol%,14
.2         ș paint%,,ul$+text$,1<<4,px%,py%-cy%
/B         � text_offset%>word% � (text_offset%-�text$)<=word% �
0/           i%=word%-(text_offset%-�(text$))
1           l$=�text$,i%)
2<           ș stringwidth%,,l$,1<<30,1<<30,-1,�l$ � ,,w%
3(           ș converttoos%,,w% � ,w%
4           px%+=w%
5$           r$=�text$,�text$-�l$)
6*           � �r$," ") r$=�r$,�r$," "))
7W           ș "ColourTrans_SetFontColours",font%,bcol%�&FFFFFF00,fcol%�&FFFFFF00,14
81           ș paint%,,ul$+r$,1<<4,px%,py%-cy%
9         �
:       �
;         w%=�text$*cx1%
<-         � centre% px%=x%+(x1%-x%)�2-w%�2
=(         � right% px%=x1%-w%-margin%
>3         ș setcol%,fcol%:� px%,py%+cy1%:�text$
?8         � underline% � px%,py%-cy%:�1,cx1%*�text$,0
@B         � text_offset%>word% � (text_offset%-�text$)<=word% �
A/           i%=word%-(text_offset%-�(text$))
B           l$=�text$,i%)
C"           w%=�l$*cx1%:px%+=w%
D$           r$=�text$,�text$-�l$)
E*           � �r$," ") r$=�r$,�r$," "))
F<           ș setcol%,fcol%�&FFFF0000:� px%,py%+cy1%:�r$
G7           � underline% � px%,py%-cy%:�1,cx1%*�r$,0
H         �
I       �
J   �
K � text_offset%?text%=0
L � font% ș losefont%,font%
M �
N
O! ��begin_save(object%,sound%)
P !q%=main_w%:ș getw%,,q%
Q+ offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
R' ș getentry%,stack%,object% � adr%
S6 ix%=adr%!12:iy%=adr%!16:ix1%=adr%!20:iy1%=adr%!24
T � sound% �
U   � adr%!28 �
V.     ș getentry%,s_clicks%,adr%!28 � adr%
W     � adr%!20 �
X/       ș getentry%,s_mouse%,adr%!20 � adr%
Y       � adr%!8=5 �
Z          drag_sound%=adr%!12
[E         �start_drag(3,ix%+offx%,iy%+offy%,ix1%+offx%,iy1%+offy%)
\       �
]
     �
^   �
_ �
`   � adr%!4=s_text% �
a1     drag_ptype%=s_text%:drag_picture%=adr%!8
bA     �start_drag(2,ix%+offx%,iy%+offy%,ix1%+offx%,iy1%+offy%)
c   �
d1     drag_ptype%=adr%!4:drag_picture%=object%
eA     �start_drag(4,ix%+offx%,iy%+offy%,ix1%+offx%,iy1%+offy%)
f   �
g �
h �
i
j ��try_user_drag
k �get_pointer
l � handle%=main_w% �
m q%!20=handle%:q%!24=icon%
n  q%!28=mousex%:q%!32=mousey%
o q%!36=sprite_size%-24
p !q%=56
q Ȏ drag_type% �
r    � 2:� saving text
s      save$="text"
t      file_type%=&FFF
u    � 3:� saving sound
v3      ș getentry%,s_sounds%,drag_sound% � adr%
w       save$=�string0(adr%+4)
x      file_type%=&D3C
y    � 4:� saving picture
z7      ș getentry%,drag_ptype%,drag_picture% � adr%
{       save$=�string0(adr%+4)
|D      � drag_ptype%=s_sprites% file_type%=&FF9 � file_type%=&AFF
}   �
~   q%!40=file_type%
   �string0(q%+44,save$)
�   q%!12=q%!8:q%!16=1
�:   ș sendmessage%,17,q%,handle%,icon%:� send datasave
�   myref%=q%!8
�
   DMT%=0
�   DMT_ptr%=0
� �
� �
�
00000000  0d 00 01 22 f4 20 55 6c  74 69 6d 61 70 20 76 20  |...". Ultimap v |
00000010  31 2e 31 30 20 28 31 37  20 46 65 62 20 31 39 39  |1.10 (17 Feb 199|
00000020  35 29 0d 00 02 19 f4 20  a9 20 53 69 6d 6f 6e 20  |5)..... . Simon |
00000030  48 61 79 6c 65 73 20 31  39 39 34 0d 00 03 04 0d  |Hayles 1994.....|
00000040  00 04 0d 20 d3 3d 26 34  30 30 30 30 0d 00 05 20  |... .=&40000... |
00000050  20 de 20 74 61 73 6b 69  64 25 20 34 3a 24 74 61  | . taskid% 4:$ta|
00000060  73 6b 69 64 25 3d 22 54  41 53 4b 22 0d 00 06 48  |skid%="TASK"...H|
00000070  20 c8 99 20 22 57 69 6d  70 5f 49 6e 69 74 69 61  | .. "Wimp_Initia|
00000080  6c 69 73 65 22 2c 32 30  30 2c 21 74 61 73 6b 69  |lise",200,!taski|
00000090  64 25 2c 22 55 6c 74 69  6d 61 70 22 20 b8 20 76  |d%,"Ultimap" . v|
000000a0  65 72 73 69 6f 6e 25 2c  74 61 73 6b 5f 68 61 6e  |ersion%,task_han|
000000b0  64 6c 65 25 0d 00 07 04  0d 00 08 12 20 ee 20 85  |dle%........ . .|
000000c0  20 f2 65 72 72 6f 72 62  6f 78 0d 00 09 04 0d 00  | .errorbox......|
000000d0  0a 0a 20 f2 76 61 72 73  0d 00 0b 04 0d 00 0c 26  |.. .vars.......&|
000000e0  20 c8 99 20 22 4f 53 5f  4d 6f 64 75 6c 65 22 2c  | .. "OS_Module",|
000000f0  31 36 2c 22 55 62 61 73  65 25 55 6c 74 69 6d 61  |16,"Ubase%Ultima|
00000100  70 22 0d 00 0d 18 20 2a  55 42 41 53 45 20 34 30  |p".... *UBASE 40|
00000110  30 30 30 20 38 30 30 30  30 30 0d 00 0e 04 0d 00  |000 800000......|
00000120  0f 17 20 f4 20 67 6c 6f  62 61 6c 20 76 61 72 69  |.. . global vari|
00000130  61 62 6c 65 73 0d 00 10  04 0d 00 11 38 20 de 20  |ables.......8 . |
00000140  62 6f 78 25 20 31 32 2c  62 6f 78 32 25 20 31 32  |box% 12,box2% 12|
00000150  2c 6d 61 74 72 69 78 25  20 31 36 2c 6f 72 69 67  |,matrix% 16,orig|
00000160  69 6e 31 25 20 38 2c 6f  72 69 67 69 6e 32 25 20  |in1% 8,origin2% |
00000170  38 0d 00 12 21 20 69 63  6f 6e 5f 66 6f 6e 74 24  |8...! icon_font$|
00000180  3d 22 48 6f 6d 65 72 74  6f 6e 2e 4d 65 64 69 75  |="Homerton.Mediu|
00000190  6d 22 0d 00 13 1a 20 66  75 6c 6c 5f 6e 61 6d 65  |m".... full_name|
000001a0  24 3d 22 55 6e 74 69 74  6c 65 64 22 0d 00 14 15  |$="Untitled"....|
000001b0  20 71 75 65 72 79 5f 73  74 72 69 6e 67 24 3d 22  | query_string$="|
000001c0  22 0d 00 15 0c 20 6d 65  6e 75 25 3d 30 0d 00 16  |".... menu%=0...|
000001d0  18 20 73 70 72 69 74 65  5f 73 69 7a 65 25 3d 26  |. sprite_size%=&|
000001e0  31 45 30 30 30 0d 00 17  18 20 de 20 71 25 20 32  |1E000.... . q% 2|
000001f0  35 36 2c 6f 6c 64 5f 71  25 20 32 35 36 0d 00 18  |56,old_q% 256...|
00000200  13 20 de 20 65 72 72 62  6c 6b 25 20 33 30 30 30  |. . errblk% 3000|
00000210  0d 00 19 27 20 de 20 6d  61 69 6e 25 20 31 30 30  |...' . main% 100|
00000220  30 2c 73 70 72 69 74 65  73 25 20 73 70 72 69 74  |0,sprites% sprit|
00000230  65 5f 73 69 7a 65 25 0d  00 1a 40 20 21 73 70 72  |e_size%...@ !spr|
00000240  69 74 65 73 25 3d 73 70  72 69 74 65 5f 73 69 7a  |ites%=sprite_siz|
00000250  65 25 3a 73 70 72 69 74  65 73 25 21 38 3d 31 36  |e%:sprites%!8=16|
00000260  3a c8 99 20 73 70 6f 70  25 2c 26 32 30 39 2c 73  |:.. spop%,&209,s|
00000270  70 72 69 74 65 73 25 0d  00 1b 19 20 de 20 77 69  |prites%.... . wi|
00000280  6d 70 5f 70 61 6c 65 74  74 65 25 20 32 30 2a 34  |mp_palette% 20*4|
00000290  0d 00 1c 17 20 de 20 70  61 67 65 5f 73 74 61 63  |.... . page_stac|
000002a0  6b 25 20 31 30 32 34 0d  00 1d 04 0d 00 1e 11 20  |k% 1024........ |
000002b0  73 5f 73 70 72 69 74 65  73 25 3d 31 0d 00 1f 0e  |s_sprites%=1....|
000002c0  20 73 5f 64 72 61 77 25  3d 32 0d 00 20 10 20 73  | s_draw%=2.. . s|
000002d0  5f 72 65 70 6c 61 79 25  3d 33 0d 00 21 13 20 73  |_replay%=3..!. s|
000002e0  5f 71 75 69 63 6b 74 69  6d 65 25 3d 34 0d 00 22  |_quicktime%=4.."|
000002f0  0f 20 73 5f 66 6f 6e 74  73 25 3d 35 0d 00 23 12  |. s_fonts%=5..#.|
00000300  20 73 5f 73 74 61 72 63  6f 6d 73 25 3d 36 0d 00  | s_starcoms%=6..|
00000310  24 13 20 73 5f 6c 6f 61  64 6f 72 64 65 72 25 3d  |$. s_loadorder%=|
00000320  37 0d 00 25 10 20 73 5f  73 6f 75 6e 64 73 25 3d  |7..%. s_sounds%=|
00000330  38 0d 00 26 0e 20 73 5f  74 65 78 74 25 3d 39 0d  |8..&. s_text%=9.|
00000340  00 27 10 20 73 5f 70 61  67 65 73 25 3d 31 30 0d  |.'. s_pages%=10.|
00000350  00 28 04 0d 00 29 11 20  73 5f 63 6c 69 63 6b 73  |.(...). s_clicks|
00000360  25 3d 31 31 0d 00 2a 14  20 73 5f 6d 6f 75 73 65  |%=11..*. s_mouse|
00000370  64 72 61 67 25 3d 31 32  0d 00 2b 10 20 73 5f 6f  |drag%=12..+. s_o|
00000380  66 74 65 6e 25 3d 31 33  0d 00 2c 12 20 73 5f 70  |ften%=13..,. s_p|
00000390  6f 69 6e 74 65 72 25 3d  31 34 0d 00 2d 10 20 73  |ointer%=14..-. s|
000003a0  5f 6d 6f 75 73 65 25 3d  31 35 0d 00 2e 14 20 73  |_mouse%=15.... s|
000003b0  5f 70 61 67 65 73 68 6f  77 6e 25 3d 31 36 0d 00  |_pageshown%=16..|
000003c0  2f 10 20 73 5f 73 70 61  72 65 25 3d 31 37 0d 00  |/. s_spare%=17..|
000003d0  30 13 20 73 5f 63 6c 69  63 6b 73 6f 6e 25 3d 31  |0. s_clickson%=1|
000003e0  38 0d 00 31 0f 20 73 5f  74 65 6d 70 25 3d 31 39  |8..1. s_temp%=19|
000003f0  0d 00 32 14 20 73 5f 73  65 71 75 65 6e 63 65 73  |..2. s_sequences|
00000400  25 3d 32 30 0d 00 33 04  0d 00 34 0e 20 f4 20 6f  |%=20..3...4. . o|
00000410  70 74 69 6f 6e 73 0d 00  35 04 0d 00 36 10 20 70  |ptions..5...6. p|
00000420  72 69 6e 74 69 6e 67 25  3d a3 0d 00 37 10 20 70  |rinting%=...7. p|
00000430  6f 72 74 72 61 69 74 25  3d a3 0d 00 38 14 20 63  |ortrait%=...8. c|
00000440  75 72 72 65 6e 74 5f 70  61 67 65 25 3d 30 0d 00  |urrent_page%=0..|
00000450  39 0f 20 6d 61 72 67 69  6e 25 3d 31 36 0d 00 3a  |9. margin%=16..:|
00000460  11 20 63 6c 69 63 6b 5f  74 69 6d 65 3d 31 0d 00  |. click_time=1..|
00000470  3b 12 20 63 6c 69 63 6b  5f 70 61 75 73 65 3d 31  |;. click_pause=1|
00000480  0d 00 3c 11 20 74 65 6d  70 5f 6c 69 73 74 25 3d  |..<. temp_list%=|
00000490  30 0d 00 3d 0e 20 74 72  79 69 6e 67 25 3d b9 0d  |0..=. trying%=..|
000004a0  00 3e 15 20 73 70 65 61  6b 69 6e 67 5f 74 65 78  |.>. speaking_tex|
000004b0  74 25 3d a3 0d 00 3f 13  20 73 70 65 61 6b 5f 73  |t%=...?. speak_s|
000004c0  6f 75 6e 64 25 3d a3 0d  00 40 13 20 73 70 65 61  |ound%=...@. spea|
000004d0  6b 5f 74 6f 6b 65 6e 25  3d a3 0d 00 41 10 20 68  |k_token%=...A. h|
000004e0  5f 73 63 72 6f 6c 6c 25  3d b9 0d 00 42 10 20 76  |_scroll%=...B. v|
000004f0  5f 73 63 72 6f 6c 6c 25  3d b9 0d 00 43 13 20 74  |_scroll%=...C. t|
00000500  6f 67 67 6c 65 5f 69 63  6f 6e 25 3d b9 0d 00 44  |oggle_icon%=...D|
00000510  11 20 74 69 74 6c 65 5f  62 61 72 25 3d b9 0d 00  |. title_bar%=...|
00000520  45 10 20 73 63 61 6e 6e  69 6e 67 25 3d a3 0d 00  |E. scanning%=...|
00000530  46 11 20 73 63 61 6e 5f  6b 65 79 73 25 3d 31 0d  |F. scan_keys%=1.|
00000540  00 47 13 20 73 63 61 6e  5f 74 69 6d 65 25 3d 31  |.G. scan_time%=1|
00000550  30 30 0d 00 48 13 20 73  63 61 6e 5f 6f 62 6a 65  |00..H. scan_obje|
00000560  63 74 25 3d 31 0d 00 49  12 20 73 63 61 6e 5f 63  |ct%=1..I. scan_c|
00000570  6f 75 6e 74 25 3d 30 0d  00 4a 14 20 6d 65 6e 75  |ount%=0..J. menu|
00000580  5f 65 6e 61 62 6c 65 64  25 3d b9 0d 00 4b 14 20  |_enabled%=...K. |
00000590  77 73 25 3d 73 70 72 69  74 65 73 25 2b 33 32 0d  |ws%=sprites%+32.|
000005a0  00 4c 11 20 70 61 67 65  5f 73 69 7a 65 25 3d 33  |.L. page_size%=3|
000005b0  0d 00 4d 16 20 66 69 6c  65 5f 76 65 72 73 69 6f  |..M. file_versio|
000005c0  6e 25 3d 31 30 31 0d 00  4e 1b 20 63 75 72 72 65  |n%=101..N. curre|
000005d0  6e 74 5f 70 61 67 65 24  3d 22 50 61 67 65 20 31  |nt_page$="Page 1|
000005e0  22 0d 00 4f 14 20 77 73  25 3d 73 70 72 69 74 65  |"..O. ws%=sprite|
000005f0  73 25 2b 33 32 0d 00 50  04 0d 00 51 16 20 c8 99  |s%+32..P...Q. ..|
00000600  20 22 48 6f 75 72 67 6c  61 73 73 5f 4f 6e 22 0d  | "Hourglass_On".|
00000610  00 52 14 20 f2 6c 6f 61  64 5f 74 65 6d 70 6c 61  |.R. .load_templa|
00000620  74 65 73 0d 00 53 13 20  f2 67 65 74 5f 6d 6f 64  |tes..S. .get_mod|
00000630  65 5f 69 6e 66 6f 0d 00  54 12 20 f2 6c 6f 61 64  |e_info..T. .load|
00000640  5f 6f 70 74 69 6f 6e 73  0d 00 55 0e 20 f2 6e 65  |_options..U. .ne|
00000650  77 5f 66 69 6c 65 0d 00  56 04 0d 00 57 26 20 c8  |w_file..V...W& .|
00000660  99 20 22 4f 53 5f 47 65  74 45 6e 76 22 20 b8 20  |. "OS_GetEnv" . |
00000670  45 6e 76 53 74 72 24 2c  65 6e 64 5f 61 64 72 25  |EnvStr$,end_adr%|
00000680  0d 00 58 1c 20 e7 20 a7  45 6e 76 53 74 72 24 2c  |..X. . .EnvStr$,|
00000690  22 20 2d 71 75 69 74 20  22 29 20 8c 0d 00 59 2d  |" -quit ") ...Y-|
000006a0  20 49 25 3d a7 45 6e 76  53 74 72 24 2c 22 22 22  | I%=.EnvStr$,"""|
000006b0  22 29 3a 49 25 3d a7 45  6e 76 53 74 72 24 2c 22  |"):I%=.EnvStr$,"|
000006c0  22 22 22 2c 49 25 2b 31  29 0d 00 5a 20 20 f5 49  |""",I%+1)..Z  .I|
000006d0  25 2b 3d 31 3a fd c1 45  6e 76 53 74 72 24 2c 49  |%+=1:..EnvStr$,I|
000006e0  25 2c 31 29 3c 3e 22 20  22 0d 00 5b 14 20 66 24  |%,1)<>" "..[. f$|
000006f0  3d c1 45 6e 76 53 74 72  24 2c 49 25 29 0d 00 5c  |=.EnvStr$,I%)..\|
00000700  2c 20 e7 20 66 24 3c 3e  22 22 20 66 75 6c 6c 5f  |, . f$<>"" full_|
00000710  6e 61 6d 65 24 3d 66 24  3a f2 6c 6f 61 64 5f 66  |name$=f$:.load_f|
00000720  69 6c 65 28 66 24 2c 32  29 0d 00 5d 06 20 cd 0d  |ile(f$,2)..]. ..|
00000730  00 5e 04 0d 00 5f 17 20  69 63 6f 6e 5f 62 61 72  |.^..._. icon_bar|
00000740  25 3d a4 69 63 6f 6e 62  61 72 0d 00 60 04 0d 00  |%=.iconbar..`...|
00000750  61 24 20 c8 99 20 73 65  74 63 61 72 65 74 25 2c  |a$ .. setcaret%,|
00000760  6d 61 69 6e 5f 77 25 2c  2d 31 2c 30 2c 31 30 2c  |main_w%,-1,0,10,|
00000770  31 30 0d 00 62 04 0d 00  63 17 20 c8 99 20 22 48  |10..b...c. .. "H|
00000780  6f 75 72 67 6c 61 73 73  5f 4f 66 66 22 0d 00 64  |ourglass_Off"..d|
00000790  12 20 ee 20 85 20 f2 65  72 72 6f 72 62 6f 78 0d  |. . . .errorbox.|
000007a0  00 65 04 0d 00 66 11 20  c8 99 20 64 72 61 67 25  |.e...f. .. drag%|
000007b0  2c 2c 2d 31 0d 00 67 12  20 f2 62 65 67 69 6e 5f  |,,-1..g. .begin_|
000007c0  74 72 79 69 6e 67 0d 00  68 06 20 f5 0d 00 69 10  |trying..h. ...i.|
000007d0  20 20 20 f2 74 72 79 5f  70 6f 6c 6c 0d 00 6a 08  |   .try_poll..j.|
000007e0  20 fd 20 a3 0d 00 6b 04  0d 00 6c 15 20 dd f2 6c  | . ...k...l. ..l|
000007f0  6f 61 64 5f 74 65 6d 70  6c 61 74 65 73 0d 00 6d  |oad_templates..m|
00000800  35 20 de 20 66 6f 6e 74  5f 61 72 72 61 79 25 20  |5 . font_array% |
00000810  32 35 36 3a e3 74 25 3d  30 b8 32 35 32 88 34 3a  |256:.t%=0.252.4:|
00000820  74 25 21 66 6f 6e 74 5f  61 72 72 61 79 25 3d 30  |t%!font_array%=0|
00000830  3a ed 0d 00 6e 33 20 c8  99 20 22 57 69 6d 70 5f  |:...n3 .. "Wimp_|
00000840  4f 70 65 6e 54 65 6d 70  6c 61 74 65 22 2c 2c 22  |OpenTemplate",,"|
00000850  3c 4f 62 65 79 24 44 69  72 3e 2e 54 65 6d 70 6c  |<Obey$Dir>.Templ|
00000860  61 74 65 73 22 0d 00 6f  1e 20 de 20 77 69 6e 64  |ates"..o. . wind|
00000870  73 25 20 32 30 30 30 2c  69 6e 64 69 72 25 20 31  |s% 2000,indir% 1|
00000880  30 30 30 0d 00 70 16 20  69 6e 64 6c 25 3d 69 6e  |000..p. indl%=in|
00000890  64 69 72 25 2b 34 30 30  30 0d 00 71 49 20 c8 99  |dir%+4000..qI ..|
000008a0  20 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  | "Wimp_LoadTempl|
000008b0  61 74 65 22 2c 2c 77 69  6e 64 73 25 2c 69 6e 64  |ate",,winds%,ind|
000008c0  69 72 25 2c 69 6e 64 6c  25 2c 2d 31 2c 22 6d 61  |ir%,indl%,-1,"ma|
000008d0  69 6e 5f 77 22 2c 30 20  b8 20 2c 2c 69 6e 64 69  |in_w",0 . ,,indi|
000008e0  72 25 0d 00 72 2d 20 c8  99 20 22 57 69 6d 70 5f  |r%..r- .. "Wimp_|
000008f0  43 72 65 61 74 65 57 69  6e 64 6f 77 22 2c 2c 77  |CreateWindow",,w|
00000900  69 6e 64 73 25 20 b8 20  6d 61 69 6e 5f 77 25 0d  |inds% . main_w%.|
00000910  00 73 57 20 c8 99 20 22  57 69 6d 70 5f 4c 6f 61  |.sW .. "Wimp_Loa|
00000920  64 54 65 6d 70 6c 61 74  65 22 2c 2c 77 69 6e 64  |dTemplate",,wind|
00000930  73 25 2c 69 6e 64 69 72  25 2c 69 6e 64 6c 25 2c  |s%,indir%,indl%,|
00000940  66 6f 6e 74 5f 61 72 72  61 79 25 2c 22 70 61 67  |font_array%,"pag|
00000950  65 6c 69 73 74 5f 77 63  22 2c 30 20 b8 20 2c 2c  |elist_wc",0 . ,,|
00000960  69 6e 64 69 72 25 0d 00  74 32 20 c8 99 20 22 57  |indir%..t2 .. "W|
00000970  69 6d 70 5f 43 72 65 61  74 65 57 69 6e 64 6f 77  |imp_CreateWindow|
00000980  22 2c 2c 77 69 6e 64 73  25 20 b8 20 70 61 67 65  |",,winds% . page|
00000990  6c 69 73 74 5f 77 63 25  0d 00 75 53 20 c8 99 20  |list_wc%..uS .. |
000009a0  22 57 69 6d 70 5f 4c 6f  61 64 54 65 6d 70 6c 61  |"Wimp_LoadTempla|
000009b0  74 65 22 2c 2c 77 69 6e  64 73 25 2c 69 6e 64 69  |te",,winds%,indi|
000009c0  72 25 2c 69 6e 64 6c 25  2c 66 6f 6e 74 5f 61 72  |r%,indl%,font_ar|
000009d0  72 61 79 25 2c 22 70 72  69 6e 74 5f 77 22 2c 30  |ray%,"print_w",0|
000009e0  20 b8 20 2c 2c 69 6e 64  69 72 25 0d 00 76 2e 20  | . ,,indir%..v. |
000009f0  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 57  |.. "Wimp_CreateW|
00000a00  69 6e 64 6f 77 22 2c 2c  77 69 6e 64 73 25 20 b8  |indow",,winds% .|
00000a10  20 70 72 69 6e 74 5f 77  25 0d 00 77 47 20 c8 99  | print_w%..wG ..|
00000a20  20 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  | "Wimp_LoadTempl|
00000a30  61 74 65 22 2c 2c 77 69  6e 64 73 25 2c 69 6e 64  |ate",,winds%,ind|
00000a40  69 72 25 2c 69 6e 64 6c  25 2c 2d 31 2c 22 69 6e  |ir%,indl%,-1,"in|
00000a50  66 6f 22 2c 30 20 b8 20  2c 2c 69 6e 64 69 72 25  |fo",0 . ,,indir%|
00000a60  0d 00 78 2b 20 c8 99 20  22 57 69 6d 70 5f 43 72  |..x+ .. "Wimp_Cr|
00000a70  65 61 74 65 57 69 6e 64  6f 77 22 2c 2c 77 69 6e  |eateWindow",,win|
00000a80  64 73 25 20 b8 20 69 6e  66 6f 25 0d 00 79 1c 20  |ds% . info%..y. |
00000a90  c8 99 20 22 57 69 6d 70  5f 43 6c 6f 73 65 54 65  |.. "Wimp_CloseTe|
00000aa0  6d 70 6c 61 74 65 22 0d  00 7a 06 20 e1 0d 00 7b  |mplate"..z. ...{|
00000ab0  05 3b 0d 00 7c 13 20 dd  f2 6c 6f 61 64 5f 6f 70  |.;..|. ..load_op|
00000ac0  74 69 6f 6e 73 0d 00 7d  24 20 70 74 72 25 3d 8e  |tions..}$ ptr%=.|
00000ad0  28 22 3c 55 6c 74 69 6d  61 70 24 44 69 72 3e 2e  |("<Ultimap$Dir>.|
00000ae0  6f 70 74 69 6f 6e 73 22  29 0d 00 7e 50 20 e8 23  |options")..~P .#|
00000af0  70 74 72 25 2c 74 6f 6f  6c 62 6f 78 5f 6f 6e 25  |ptr%,toolbox_on%|
00000b00  2c 73 63 61 6e 6e 69 6e  67 25 2c 73 63 61 6e 5f  |,scanning%,scan_|
00000b10  6b 65 79 73 25 2c 73 63  61 6e 5f 74 69 6d 65 25  |keys%,scan_time%|
00000b20  2c 6d 65 6e 75 5f 65 6e  61 62 6c 65 64 25 2c 73  |,menu_enabled%,s|
00000b30  6f 75 6e 64 5f 76 6f 6c  25 0d 00 7f 0b 20 d9 23  |ound_vol%.... .#|
00000b40  70 74 72 25 0d 00 80 25  20 70 74 72 25 3d 8e 28  |ptr%...% ptr%=.(|
00000b50  22 3c 55 6c 74 69 6d 61  70 24 44 69 72 3e 2e 6d  |"<Ultimap$Dir>.m|
00000b60  65 73 73 61 67 65 73 22  29 0d 00 81 18 20 e8 23  |essages").... .#|
00000b70  70 74 72 25 2c 69 6e 66  6f 24 2c 69 6e 66 6f 31  |ptr%,info$,info1|
00000b80  24 0d 00 82 0b 20 d9 23  70 74 72 25 0d 00 83 22  |$.... .#ptr%..."|
00000b90  20 f2 73 65 74 5f 69 63  6f 6e 5f 74 65 78 74 28  | .set_icon_text(|
00000ba0  69 6e 66 6f 25 2c 31 2c  69 6e 66 6f 24 29 0d 00  |info%,1,info$)..|
00000bb0  84 23 20 f2 73 65 74 5f  69 63 6f 6e 5f 74 65 78  |.# .set_icon_tex|
00000bc0  74 28 69 6e 66 6f 25 2c  32 2c 69 6e 66 6f 31 24  |t(info%,2,info1$|
00000bd0  29 0d 00 85 06 20 e1 0d  00 86 04 0d 00 87 04 0d  |).... ..........|
00000be0  00 88 0d dd 20 f2 66 69  6e 69 73 68 0d 00 89 14  |.... .finish....|
00000bf0  20 c8 99 20 73 65 74 63  61 72 65 74 25 2c 2d 31  | .. setcaret%,-1|
00000c00  0d 00 8a 10 20 f2 6c 6f  73 65 5f 66 6f 6e 74 73  |.... .lose_fonts|
00000c10  0d 00 8b 2e 20 c8 99 20  22 57 69 6d 70 5f 43 6c  |.... .. "Wimp_Cl|
00000c20  6f 73 65 44 6f 77 6e 22  2c 74 61 73 6b 5f 68 61  |oseDown",task_ha|
00000c30  6e 64 6c 65 25 2c 21 74  61 73 6b 69 64 25 0d 00  |ndle%,!taskid%..|
00000c40  8c 11 20 c8 99 20 22 4f  53 5f 45 78 69 74 22 0d  |.. .. "OS_Exit".|
00000c50  00 8d 05 e1 0d 00 8e 04  0d 00 8f 14 20 dd f2 72  |............ ..r|
00000c60  65 64 72 61 77 5f 77 69  6e 64 6f 77 0d 00 90 1c  |edraw_window....|
00000c70  20 c8 99 20 72 65 64 72  61 77 77 25 2c 2c 71 25  | .. redraww%,,q%|
00000c80  20 b8 20 6d 6f 72 65 25  0d 00 91 0d 20 c8 95 20  | . more%.... .. |
00000c90  6d 6f 72 65 25 0d 00 92  2d 20 20 20 6f 66 66 78  |more%...-   offx|
00000ca0  25 3d 28 71 25 21 34 2d  71 25 21 32 30 29 3a 6f  |%=(q%!4-q%!20):o|
00000cb0  66 66 79 25 3d 28 71 25  21 31 36 2d 71 25 21 32  |ffy%=(q%!16-q%!2|
00000cc0  34 29 0d 00 93 0f 20 20  20 c8 8e 20 21 71 25 20  |4)....   .. !q% |
00000cd0  ca 0d 00 94 5c 20 20 20  20 20 c9 20 6d 61 69 6e  |....\     . main|
00000ce0  5f 77 25 3a f2 64 72 61  77 5f 6d 61 69 6e 5f 77  |_w%:.draw_main_w|
00000cf0  28 71 25 21 32 38 2d 6f  66 66 78 25 2c 71 25 21  |(q%!28-offx%,q%!|
00000d00  33 32 2d 6f 66 66 79 25  2c 71 25 21 33 36 2d 6f  |32-offy%,q%!36-o|
00000d10  66 66 78 25 2c 71 25 21  34 30 2d 6f 66 66 79 25  |ffx%,q%!40-offy%|
00000d20  2c 6f 66 66 78 25 2c 6f  66 66 79 25 29 0d 00 95  |,offx%,offy%)...|
00000d30  5a 20 20 20 20 20 c9 20  70 61 67 65 6c 69 73 74  |Z     . pagelist|
00000d40  5f 77 63 25 3a f2 64 72  61 77 5f 70 61 67 65 6c  |_wc%:.draw_pagel|
00000d50  69 73 74 5f 77 63 28 71  25 21 32 38 2d 6f 66 66  |ist_wc(q%!28-off|
00000d60  78 25 2c 71 25 21 33 32  2d 6f 66 66 79 25 2c 71  |x%,q%!32-offy%,q|
00000d70  25 21 33 36 2d 6f 66 66  78 25 2c 71 25 21 34 30  |%!36-offx%,q%!40|
00000d80  2d 6f 66 66 79 25 29 0d  00 96 08 20 20 20 cb 0d  |-offy%)....   ..|
00000d90  00 97 1b 20 20 20 c8 99  20 67 65 74 72 25 2c 2c  |...   .. getr%,,|
00000da0  71 25 20 b8 20 6d 6f 72  65 25 0d 00 98 06 20 ce  |q% . more%.... .|
00000db0  0d 00 99 06 20 e1 0d 00  9a 04 0d 00 9b 16 20 dd  |.... ......... .|
00000dc0  20 f2 66 72 6f 6e 74 28  68 61 6e 64 6c 65 25 29  | .front(handle%)|
00000dd0  0d 00 9c 1d 20 21 71 25  3d 68 61 6e 64 6c 65 25  |.... !q%=handle%|
00000de0  3a c8 99 20 67 65 74 77  25 2c 2c 71 25 0d 00 9d  |:.. getw%,,q%...|
00000df0  3b 20 f2 6f 70 65 6e 5f  77 69 6e 64 6f 77 28 21  |; .open_window(!|
00000e00  71 25 2c 71 25 21 34 2c  71 25 21 38 2c 71 25 21  |q%,q%!4,q%!8,q%!|
00000e10  31 32 2c 71 25 21 31 36  2c 71 25 21 32 30 2c 71  |12,q%!16,q%!20,q|
00000e20  25 21 32 34 2c 2d 31 29  0d 00 9e 06 20 e1 0d 00  |%!24,-1).... ...|
00000e30  9f 04 0d 00 a0 3d 20 dd  20 f2 6f 70 65 6e 5f 77  |.....= . .open_w|
00000e40  69 6e 64 6f 77 28 68 61  6e 64 6c 65 25 2c 78 25  |indow(handle%,x%|
00000e50  2c 79 25 2c 78 31 25 2c  79 31 25 2c 73 63 78 25  |,y%,x1%,y1%,scx%|
00000e60  2c 73 63 79 25 2c 62 68  61 6e 64 6c 65 25 29 0d  |,scy%,bhandle%).|
00000e70  00 a1 12 20 e7 68 61 6e  64 6c 65 25 3d 2d 31 8c  |... .handle%=-1.|
00000e80  e1 0d 00 a2 13 20 71 25  21 32 38 3d 62 68 61 6e  |..... q%!28=bhan|
00000e90  64 6c 65 25 0d 00 a3 11  20 71 25 21 30 3d 68 61  |dle%.... q%!0=ha|
00000ea0  6e 64 6c 65 25 0d 00 a4  28 20 71 25 21 34 3d 78  |ndle%...( q%!4=x|
00000eb0  25 3a 71 25 21 38 3d 79  25 3a 71 25 21 31 32 3d  |%:q%!8=y%:q%!12=|
00000ec0  78 31 25 3a 71 25 21 31  36 3d 79 31 25 0d 00 a5  |x1%:q%!16=y1%...|
00000ed0  1a 20 71 25 21 32 30 3d  73 63 78 25 3a 71 25 21  |. q%!20=scx%:q%!|
00000ee0  32 34 3d 73 63 79 25 0d  00 a6 12 20 c8 99 20 6f  |24=scy%.... .. o|
00000ef0  70 65 6e 77 25 2c 2c 71  25 0d 00 a7 06 20 e1 0d  |penw%,,q%.... ..|
00000f00  00 a8 04 0d 00 a9 04 0d  00 aa 1d 20 dd 20 f2 63  |........... . .c|
00000f10  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 68 61 6e 64  |lose_window(hand|
00000f20  6c 65 25 29 0d 00 ab 1f  20 21 71 25 3d 68 61 6e  |le%).... !q%=han|
00000f30  64 6c 65 25 3a c8 99 20  63 6c 6f 73 65 77 25 2c  |dle%:.. closew%,|
00000f40  2c 71 25 0d 00 ac 06 20  e1 0d 00 ad 04 0d 00 ae  |,q%.... ........|
00000f50  0b dd 20 f2 76 61 72 73  0d 00 af 10 20 67 65 74  |.. .vars.... get|
00000f60  65 6e 76 25 3d 26 31 30  0d 00 b0 20 20 77 69 6d  |env%=&10...  wim|
00000f70  70 25 20 20 20 20 3d 20  28 31 3c 3c 31 38 29 20  |p%    = (1<<18) |
00000f80  2b 20 28 33 3c 3c 36 29  0d 00 b1 15 20 63 72 65  |+ (3<<6).... cre|
00000f90  61 74 65 77 25 3d 77 69  6d 70 25 2b 31 0d 00 b2  |atew%=wimp%+1...|
00000fa0  18 20 63 72 65 61 74 65  69 63 6f 6e 25 3d 77 69  |. createicon%=wi|
00000fb0  6d 70 25 2b 32 0d 00 b3  18 20 64 65 6c 65 74 65  |mp%+2.... delete|
00000fc0  69 63 6f 6e 25 3d 77 69  6d 70 25 2b 34 0d 00 b4  |icon%=wimp%+4...|
00000fd0  13 20 6f 70 65 6e 77 25  3d 77 69 6d 70 25 2b 35  |. openw%=wimp%+5|
00000fe0  0d 00 b5 14 20 63 6c 6f  73 65 77 25 3d 77 69 6d  |.... closew%=wim|
00000ff0  70 25 2b 36 0d 00 b6 12  20 70 6f 6c 6c 25 3d 77  |p%+6.... poll%=w|
00001000  69 6d 70 25 2b 37 0d 00  b7 15 20 72 65 64 72 61  |imp%+7.... redra|
00001010  77 77 25 3d 77 69 6d 70  25 2b 38 0d 00 b8 15 20  |ww%=wimp%+8.... |
00001020  75 70 64 61 74 65 77 25  3d 77 69 6d 70 25 2b 39  |updatew%=wimp%+9|
00001030  0d 00 b9 13 20 67 65 74  72 25 3d 77 69 6d 70 25  |.... getr%=wimp%|
00001040  2b 31 30 0d 00 ba 13 20  67 65 74 77 25 3d 77 69  |+10.... getw%=wi|
00001050  6d 70 25 2b 31 31 0d 00  bb 14 20 67 65 74 77 69  |mp%+11.... getwi|
00001060  25 3d 77 69 6d 70 25 2b  31 32 0d 00 bc 13 20 73  |%=wimp%+12.... s|
00001070  65 74 69 25 3d 77 69 6d  70 25 2b 31 33 0d 00 bd  |eti%=wimp%+13...|
00001080  13 20 67 65 74 69 25 3d  77 69 6d 70 25 2b 31 34  |. geti%=wimp%+14|
00001090  0d 00 be 13 20 67 65 74  70 25 3d 77 69 6d 70 25  |.... getp%=wimp%|
000010a0  2b 31 35 0d 00 bf 13 20  64 72 61 67 25 3d 77 69  |+15.... drag%=wi|
000010b0  6d 70 25 2b 31 36 0d 00  c0 1a 20 66 6f 72 63 65  |mp%+16.... force|
000010c0  72 65 64 72 61 77 25 3d  77 69 6d 70 25 2b 31 37  |redraw%=wimp%+17|
000010d0  0d 00 c1 17 20 73 65 74  63 61 72 65 74 25 3d 77  |.... setcaret%=w|
000010e0  69 6d 70 25 2b 31 38 0d  00 c2 17 20 67 65 74 63  |imp%+18.... getc|
000010f0  61 72 65 74 25 3d 77 69  6d 70 25 2b 31 39 0d 00  |aret%=wimp%+19..|
00001100  c3 19 20 63 72 65 61 74  65 6d 65 6e 75 25 3d 77  |.. createmenu%=w|
00001110  69 6d 70 25 2b 32 30 0d  00 c4 19 20 73 65 74 65  |imp%+20.... sete|
00001120  78 74 65 6e 74 25 3d 77  69 6d 70 25 2b 26 31 37  |xtent%=wimp%+&17|
00001130  0d 00 c5 1a 20 70 72 6f  63 65 73 73 6b 65 79 25  |.... processkey%|
00001140  3d 77 69 6d 70 25 2b 26  31 43 0d 00 c6 1b 20 73  |=wimp%+&1C.... s|
00001150  65 6e 64 6d 65 73 73 61  67 65 25 3d 77 69 6d 70  |endmessage%=wimp|
00001160  25 2b 26 32 37 0d 00 c7  19 20 63 72 73 75 62 6d  |%+&27.... crsubm|
00001170  65 6e 75 25 3d 77 69 6d  70 25 2b 26 32 38 0d 00  |enu%=wimp%+&28..|
00001180  c8 15 20 70 6c 6f 74 69  63 6f 6e 25 3d 26 34 30  |.. ploticon%=&40|
00001190  30 45 32 0d 00 c9 04 0d  00 ca 13 20 73 65 74 63  |0E2........ setc|
000011a0  6f 6c 25 3d 26 34 30 37  34 33 0d 00 cb 0e 20 73  |ol%=&40743.... s|
000011b0  70 6f 70 25 3d 26 32 45  0d 00 cc 15 20 66 69 6e  |pop%=&2E.... fin|
000011c0  64 66 6f 6e 74 25 3d 26  34 30 30 38 31 0d 00 cd  |dfont%=&40081...|
000011d0  15 20 6c 6f 73 65 66 6f  6e 74 25 3d 26 34 30 30  |. losefont%=&400|
000011e0  38 32 0d 00 ce 15 20 66  6f 6e 74 69 6e 66 6f 25  |82.... fontinfo%|
000011f0  3d 26 34 30 30 38 34 0d  00 cf 18 20 73 74 72 69  |=&40084.... stri|
00001200  6e 67 77 69 64 74 68 25  3d 26 34 30 30 38 35 0d  |ngwidth%=&40085.|
00001210  00 d0 14 20 73 65 74 66  6f 6e 74 25 3d 26 34 30  |... setfont%=&40|
00001220  30 38 41 0d 00 d1 18 20  63 75 72 72 65 6e 74 66  |08A.... currentf|
00001230  6f 6e 74 25 3d 26 34 30  30 38 42 0d 00 d2 18 20  |ont%=&4008B.... |
00001240  63 6f 6e 76 65 72 74 74  6f 6f 73 25 3d 26 34 30  |converttoos%=&40|
00001250  30 38 38 0d 00 d3 1c 20  63 6f 6e 76 65 72 74 74  |088.... convertt|
00001260  6f 70 6f 69 6e 74 73 25  3d 26 34 30 30 38 39 0d  |opoints%=&40089.|
00001270  00 d4 12 20 70 61 69 6e  74 25 3d 26 34 30 30 38  |... paint%=&4008|
00001280  36 0d 00 d5 16 20 66 69  6e 64 63 61 72 65 74 25  |6.... findcaret%|
00001290  3d 26 34 30 30 38 44 0d  00 d6 15 20 63 68 61 72  |=&4008D.... char|
000012a0  62 62 6f 78 25 3d 26 34  30 30 38 45 0d 00 d7 04  |bbox%=&4008E....|
000012b0  0d 00 d8 13 20 55 62 61  73 65 25 3d 26 31 43 30  |.... Ubase%=&1C0|
000012c0  31 30 30 0d 00 d9 14 20  6e 65 77 66 69 6c 65 25  |100.... newfile%|
000012d0  3d 55 62 61 73 65 25 0d  00 da 17 20 6e 65 77 73  |=Ubase%.... news|
000012e0  74 61 63 6b 25 3d 55 62  61 73 65 25 2b 31 0d 00  |tack%=Ubase%+1..|
000012f0  db 18 20 6b 69 6c 6c 73  74 61 63 6b 25 3d 55 62  |.. killstack%=Ub|
00001300  61 73 65 25 2b 32 0d 00  dc 17 20 61 64 64 65 6e  |ase%+2.... adden|
00001310  74 72 79 25 3d 55 62 61  73 65 25 2b 33 0d 00 dd  |try%=Ubase%+3...|
00001320  19 20 61 6d 65 6e 64 65  6e 74 72 79 25 3d 55 62  |. amendentry%=Ub|
00001330  61 73 65 25 2b 34 0d 00  de 18 20 66 69 6e 64 74  |ase%+4.... findt|
00001340  6f 6b 65 6e 25 3d 55 62  61 73 65 25 2b 35 0d 00  |oken%=Ubase%+5..|
00001350  df 18 20 6b 69 6c 6c 65  6e 74 72 79 25 3d 55 62  |.. killentry%=Ub|
00001360  61 73 65 25 2b 36 0d 00  e0 17 20 6d 6f 76 65 64  |ase%+6.... moved|
00001370  61 74 61 25 3d 55 62 61  73 65 25 2b 37 0d 00 e1  |ata%=Ubase%+7...|
00001380  18 20 61 64 64 70 61 63  6b 65 64 25 3d 55 62 61  |. addpacked%=Uba|
00001390  73 65 25 2b 38 0d 00 e2  17 20 67 65 74 65 6e 74  |se%+8.... getent|
000013a0  72 79 25 3d 55 62 61 73  65 25 2b 39 0d 00 e3 1c  |ry%=Ubase%+9....|
000013b0  20 75 6e 70 61 63 6b 73  70 72 69 74 65 25 3d 55  | unpacksprite%=U|
000013c0  62 61 73 65 25 2b 31 30  0d 00 e4 18 20 6e 65 6e  |base%+10.... nen|
000013d0  74 72 69 65 73 25 3d 55  62 61 73 65 25 2b 31 31  |tries%=Ubase%+11|
000013e0  0d 00 e5 19 20 6d 6f 76  65 74 6f 65 6e 64 25 3d  |.... movetoend%=|
000013f0  55 62 61 73 65 25 2b 31  32 0d 00 e6 1a 20 72 65  |Ubase%+12.... re|
00001400  61 64 73 74 61 74 75 73  25 3d 55 62 61 73 65 25  |adstatus%=Ubase%|
00001410  2b 31 33 0d 00 e7 1b 20  77 72 69 74 65 73 74 61  |+13.... writesta|
00001420  74 75 73 25 3d 55 62 61  73 65 25 2b 31 34 0d 00  |tus%=Ubase%+14..|
00001430  e8 1b 20 72 65 6e 64 65  72 73 68 61 70 65 25 3d  |.. rendershape%=|
00001440  55 62 61 73 65 25 2b 31  35 0d 00 e9 16 20 67 65  |Ubase%+15.... ge|
00001450  74 6e 74 68 25 3d 55 62  61 73 65 25 2b 31 37 0d  |tnth%=Ubase%+17.|
00001460  00 ea 1a 20 6c 6f 63 61  74 65 66 69 6c 65 25 3d  |... locatefile%=|
00001470  55 62 61 73 65 25 2b 31  39 0d 00 eb 19 20 70 6c  |Ubase%+19.... pl|
00001480  61 79 73 6f 75 6e 64 25  3d 55 62 61 73 65 25 2b  |aysound%=Ubase%+|
00001490  32 30 0d 00 ec 04 0d 00  ed 0f 20 50 44 25 3d 26  |20........ PD%=&|
000014a0  38 30 31 34 30 0d 00 ee  14 20 50 44 73 65 6c 65  |80140.... PDsele|
000014b0  63 74 25 3d 50 44 25 2b  35 0d 00 ef 13 20 50 44  |ct%=PD%+5.... PD|
000014c0  61 62 6f 72 74 25 3d 50  44 25 2b 39 0d 00 f0 16  |abort%=PD%+9....|
000014d0  20 50 44 70 61 67 65 73  69 7a 65 25 3d 50 44 25  | PDpagesize%=PD%|
000014e0  2b 33 0d 00 f1 16 20 50  44 67 69 76 65 72 65 63  |+3.... PDgiverec|
000014f0  25 3d 50 44 25 2b 31 31  0d 00 f2 17 20 50 44 64  |%=PD%+11.... PDd|
00001500  72 61 77 70 61 67 65 25  3d 50 44 25 2b 31 32 0d  |rawpage%=PD%+12.|
00001510  00 f3 15 20 50 44 67 65  74 72 65 63 25 3d 50 44  |... PDgetrec%=PD|
00001520  25 2b 31 33 0d 00 f4 14  20 50 44 65 6e 64 6a 6f  |%+13.... PDendjo|
00001530  62 25 3d 50 44 25 2b 38  0d 00 f5 04 0d 00 f6 08  |b%=PD%+8........|
00001540  20 ea 20 85 0d 00 f7 0c  20 ee 20 85 20 ea 20 e1  | . ..... . . . .|
00001550  0d 00 f8 26 20 c8 99 20  22 4f 53 5f 4d 6f 64 75  |...& .. "OS_Modu|
00001560  6c 65 22 2c 31 34 2c 22  55 62 61 73 65 25 55 6c  |le",14,"Ubase%Ul|
00001570  74 69 6d 61 70 22 0d 00  f9 06 20 e1 0d 00 fa 04  |timap".... .....|
00001580  0d 00 fb 12 dd 20 f2 67  65 74 5f 70 6f 69 6e 74  |..... .get_point|
00001590  65 72 0d 00 fc 10 c8 99  20 67 65 74 70 25 2c 2c  |er...... getp%,,|
000015a0  71 25 0d 00 fd 48 6d 6f  75 73 65 78 25 3d 21 71  |q%...Hmousex%=!q|
000015b0  25 3a 6d 6f 75 73 65 79  25 3d 71 25 21 34 3a 62  |%:mousey%=q%!4:b|
000015c0  25 3d 71 25 21 38 3a 68  61 6e 64 6c 65 25 3d 71  |%=q%!8:handle%=q|
000015d0  25 21 31 32 3a 69 63 6f  6e 25 3d 71 25 21 31 36  |%!12:icon%=q%!16|
000015e0  3a 6f 62 25 3d 71 25 21  32 30 0d 00 fe 05 e1 0d  |:ob%=q%!20......|
000015f0  00 ff 04 0d 01 00 0f dd  20 f2 65 72 72 6f 72 62  |........ .errorb|
00001600  6f 78 0d 01 01 13 f4 20  53 59 53 20 64 72 61 67  |ox..... SYS drag|
00001610  25 2c 2c 2d 31 0d 01 02  34 21 65 72 72 62 6c 6b  |%,,-1...4!errblk|
00001620  25 3d 9f 3a 74 24 3d f6  24 3a 74 24 3d 22 28 22  |%=.:t$=.$:t$="("|
00001630  2b c3 9f 2b 22 29 22 2b  74 24 2b 22 20 61 74 20  |+..+")"+t$+" at |
00001640  6c 69 6e 65 20 22 2b c3  9e 0d 01 03 16 24 28 65  |line "+......$(e|
00001650  72 72 62 6c 6b 25 2b 34  29 3d 74 24 2b bd 30 0d  |rrblk%+4)=t$+.0.|
00001660  01 04 2d c8 99 20 22 57  69 6d 70 5f 52 65 70 6f  |..-.. "Wimp_Repo|
00001670  72 74 45 72 72 6f 72 22  2c 65 72 72 62 6c 6b 25  |rtError",errblk%|
00001680  2c 31 2c 22 55 6c 74 69  6d 61 70 22 0d 01 05 14  |,1,"Ultimap"....|
00001690  e7 20 9f 3c 3e 31 20 f2  66 69 6e 69 73 68 3a e0  |. .<>1 .finish:.|
000016a0  0d 01 06 3d f4 20 49 46  20 70 72 69 6e 74 69 6e  |...=. IF printin|
000016b0  67 25 20 70 72 69 6e 74  69 6e 67 25 3d 46 41 4c  |g% printing%=FAL|
000016c0  53 45 3a 50 52 4f 43 63  6c 6f 73 65 5f 77 69 6e  |SE:PROCclose_win|
000016d0  64 6f 77 28 70 72 69 6e  74 5f 77 25 29 0d 01 07  |dow(print_w%)...|
000016e0  05 e1 0d 01 08 05 3b 0d  01 09 0e 20 dd a4 69 63  |......;.... ..ic|
000016f0  6f 6e 62 61 72 0d 01 0a  2b 20 21 71 25 3d 2d 31  |onbar...+ !q%=-1|
00001700  3a 71 25 21 34 3d 30 3a  71 25 21 38 3d 30 3a 71  |:q%!4=0:q%!8=0:q|
00001710  25 21 31 32 3d 36 34 3a  71 25 21 31 36 3d 36 34  |%!12=64:q%!16=64|
00001720  0d 01 0b 10 20 71 25 21  32 30 3d 26 33 30 30 41  |.... q%!20=&300A|
00001730  0d 01 0c 1f 20 f2 73 74  72 69 6e 67 30 28 71 25  |.... .string0(q%|
00001740  2b 32 34 2c 61 70 70 73  70 72 69 74 65 24 29 0d  |+24,appsprite$).|
00001750  01 0d 27 20 c8 99 20 22  57 69 6d 70 5f 43 72 65  |..' .. "Wimp_Cre|
00001760  61 74 65 49 63 6f 6e 22  2c 2c 71 25 20 b8 20 68  |ateIcon",,q% . h|
00001770  61 6e 64 6c 65 25 0d 01  0e 0d 20 3d 68 61 6e 64  |andle%.... =hand|
00001780  6c 65 25 0d 01 0f 05 3b  0d 01 10 15 20 dd f2 73  |le%....;.... ..s|
00001790  65 74 5f 69 63 6f 6e 5f  66 6f 6e 74 73 0d 01 11  |et_icon_fonts...|
000017a0  31 20 c8 99 20 66 69 6e  64 66 6f 6e 74 25 2c 2c  |1 .. findfont%,,|
000017b0  69 63 6f 6e 5f 66 6f 6e  74 24 2c 31 32 2a 31 36  |icon_font$,12*16|
000017c0  2c 31 32 2a 31 36 20 b8  20 66 6f 6e 74 25 0d 01  |,12*16 . font%..|
000017d0  12 2e 20 c8 99 20 22 57  69 6d 70 5f 57 68 69 63  |.. .. "Wimp_Whic|
000017e0  68 49 63 6f 6e 22 2c 70  72 69 6e 74 5f 77 25 2c  |hIcon",print_w%,|
000017f0  71 25 2c 31 3c 3c 36 2c  31 3c 3c 36 0d 01 13 3c  |q%,1<<6,1<<6...<|
00001800  20 74 25 3d 30 3a f5 3a  f2 69 63 6f 6e 5f 66 6f  | t%=0:.:.icon_fo|
00001810  6e 74 28 70 72 69 6e 74  5f 77 25 2c 74 25 21 71  |nt(print_w%,t%!q|
00001820  25 2c 66 6f 6e 74 25 29  3a 74 25 2b 3d 34 3a fd  |%,font%):t%+=4:.|
00001830  74 25 21 71 25 3d 2d 31  0d 01 14 06 20 e1 0d 01  |t%!q%=-1.... ...|
00001840  15 04 0d 01 16 25 20 dd  f2 69 63 6f 6e 5f 66 6f  |.....% ..icon_fo|
00001850  6e 74 28 77 69 6e 64 6f  77 25 2c 69 63 6f 6e 25  |nt(window%,icon%|
00001860  2c 66 6f 6e 74 25 29 0d  01 17 25 20 21 65 72 72  |,font%)...% !err|
00001870  62 6c 6b 25 3d 77 69 6e  64 6f 77 25 3a 65 72 72  |blk%=window%:err|
00001880  62 6c 6b 25 21 34 3d 69  63 6f 6e 25 0d 01 18 2d  |blk%!4=icon%...-|
00001890  20 65 72 72 62 6c 6b 25  21 31 32 3d 26 46 46 30  | errblk%!12=&FF0|
000018a0  30 30 30 30 30 3a 65 72  72 62 6c 6b 25 21 38 3d  |00000:errblk%!8=|
000018b0  66 6f 6e 74 25 3c 3c 32  34 0d 01 19 19 20 66 6f  |font%<<24.... fo|
000018c0  6e 74 25 3f 66 6f 6e 74  5f 61 72 72 61 79 25 2b  |nt%?font_array%+|
000018d0  3d 31 0d 01 1a 16 20 c8  99 20 73 65 74 69 25 2c  |=1.... .. seti%,|
000018e0  2c 65 72 72 62 6c 6b 25  0d 01 1b 06 20 e1 0d 01  |,errblk%.... ...|
000018f0  1c 04 0d 01 1d 11 20 dd  f2 6c 6f 73 65 5f 66 6f  |...... ..lose_fo|
00001900  6e 74 73 0d 01 1e 31 20  e3 41 25 3d 30 b8 32 35  |nts...1 .A%=0.25|
00001910  35 3a 6e 25 3d 41 25 3f  66 6f 6e 74 5f 61 72 72  |5:n%=A%?font_arr|
00001920  61 79 25 3a 41 25 3f 66  6f 6e 74 5f 61 72 72 61  |ay%:A%?font_arra|
00001930  79 25 3d 30 0d 01 1f 27  20 e7 20 6e 25 3e 30 20  |y%=0...' . n%>0 |
00001940  e3 20 42 25 3d 31 b8 6e  25 3a c8 99 20 6c 6f 73  |. B%=1.n%:.. los|
00001950  65 66 6f 6e 74 25 2c 41  25 3a ed 0d 01 20 08 20  |efont%,A%:... . |
00001960  ed 3a e1 0d 01 21 04 0d  01 22 14 20 dd f2 67 65  |.:...!...". ..ge|
00001970  74 5f 6d 6f 64 65 5f 69  6e 66 6f 0d 01 23 29 20  |t_mode_info..#) |
00001980  c8 99 20 22 57 69 6d 70  5f 52 65 61 64 50 61 6c  |.. "Wimp_ReadPal|
00001990  65 74 74 65 22 2c 2c 77  69 6d 70 5f 70 61 6c 65  |ette",,wimp_pale|
000019a0  74 74 65 25 0d 01 24 2b  20 c8 99 20 22 4f 53 5f  |tte%..$+ .. "OS_|
000019b0  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
000019c0  22 2c 2d 31 2c 34 20 b8  20 2c 2c 78 65 66 25 0d  |",-1,4 . ,,xef%.|
000019d0  01 25 2b 20 c8 99 20 22  4f 53 5f 52 65 61 64 4d  |.%+ .. "OS_ReadM|
000019e0  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 2d 31 2c  |odeVariable",-1,|
000019f0  35 20 b8 20 2c 2c 79 65  66 25 0d 01 26 35 20 c8  |5 . ,,yef%..&5 .|
00001a00  99 20 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |. "OS_ReadModeVa|
00001a10  72 69 61 62 6c 65 22 2c  2d 31 2c 31 31 20 b8 20  |riable",-1,11 . |
00001a20  2c 2c 73 63 72 65 65 6e  5f 77 69 64 74 68 25 0d  |,,screen_width%.|
00001a30  01 27 36 20 c8 99 20 22  4f 53 5f 52 65 61 64 4d  |.'6 .. "OS_ReadM|
00001a40  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 2d 31 2c  |odeVariable",-1,|
00001a50  31 32 20 b8 20 2c 2c 73  63 72 65 65 6e 5f 68 65  |12 . ,,screen_he|
00001a60  69 67 68 74 25 0d 01 28  4a 20 73 63 72 65 65 6e  |ight%..(J screen|
00001a70  5f 77 69 64 74 68 25 3d  73 63 72 65 65 6e 5f 77  |_width%=screen_w|
00001a80  69 64 74 68 25 3c 3c 78  65 66 25 3a 73 63 72 65  |idth%<<xef%:scre|
00001a90  65 6e 5f 68 65 69 67 68  74 25 3d 73 63 72 65 65  |en_height%=scree|
00001aa0  6e 5f 68 65 69 67 68 74  25 3c 3c 79 65 66 25 0d  |n_height%<<yef%.|
00001ab0  01 29 06 20 e1 0d 01 2a  04 0d 01 2b 26 20 dd f2  |.). ...*...+& ..|
00001ac0  73 74 61 72 74 5f 64 72  61 67 28 74 79 70 65 25  |start_drag(type%|
00001ad0  2c 78 25 2c 79 25 2c 78  31 25 2c 79 31 25 29 0d  |,x%,y%,x1%,y1%).|
00001ae0  01 2c 11 20 21 71 25 3d  30 3a 71 25 21 34 3d 35  |.,. !q%=0:q%!4=5|
00001af0  0d 01 2d 29 20 71 25 21  38 3d 78 25 3a 71 25 21  |..-) q%!8=x%:q%!|
00001b00  31 32 3d 79 25 3a 71 25  21 31 36 3d 78 31 25 3a  |12=y%:q%!16=x1%:|
00001b10  71 25 21 32 30 3d 79 31  25 0d 01 2e 3d 20 71 25  |q%!20=y1%...= q%|
00001b20  21 32 34 3d 30 3a 71 25  21 32 38 3d 30 3a 71 25  |!24=0:q%!28=0:q%|
00001b30  21 33 32 3d 73 63 72 65  65 6e 5f 77 69 64 74 68  |!32=screen_width|
00001b40  25 3a 71 25 21 33 36 3d  73 63 72 65 65 6e 5f 68  |%:q%!36=screen_h|
00001b50  65 69 67 68 74 25 0d 01  2f 11 20 c8 99 20 64 72  |eight%../. .. dr|
00001b60  61 67 25 2c 2c 71 25 0d  01 30 15 20 64 72 61 67  |ag%,,q%..0. drag|
00001b70  5f 74 79 70 65 25 3d 74  79 70 65 25 0d 01 31 06  |_type%=type%..1.|
00001b80  20 e1 0d 01 32 04 0d 01  33 6d f4 2d 2d 2d 2d 2d  | ...2...3m.-----|
00001b90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001bf0  2d 2d 2d 0d 01 34 04 0d  01 35 2a 20 dd a4 73 74  |---..4...5* ..st|
00001c00  72 69 6e 67 30 28 74 25  29 3a ea 20 74 24 3a 74  |ring0(t%):. t$:t|
00001c10  24 3d 22 22 3a e7 20 3f  74 25 3c 33 32 3a 3d 22  |$="":. ?t%<32:="|
00001c20  22 0d 01 36 2d 20 f5 3a  74 24 3d 74 24 2b bd 3f  |"..6- .:t$=t$+.?|
00001c30  74 25 3a 74 25 2b 3d 31  3a fd 3f 74 25 3c 33 32  |t%:t%+=1:.?t%<32|
00001c40  20 84 20 a9 74 24 3d 32  35 35 3a 3d 74 24 0d 01  | . .t$=255:=t$..|
00001c50  37 04 0d 01 38 27 20 dd  f2 73 74 72 69 6e 67 30  |7...8' ..string0|
00001c60  28 74 25 2c 74 24 29 3a  24 74 25 3d 74 24 3a 74  |(t%,t$):$t%=t$:t|
00001c70  25 3f a9 74 24 3d 30 3a  e1 0d 01 39 04 0d 01 3a  |%?.t$=0:...9...:|
00001c80  6d f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |m.--------------|
00001c90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001ce0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 01 3b 04 0d 01  |----------..;...|
00001cf0  3c 18 20 dd f2 63 68 65  63 6b 5f 70 61 67 65 6c  |<. ..check_pagel|
00001d00  69 73 74 5f 77 63 0d 01  3d 0e 20 62 75 74 25 3d  |ist_wc..=. but%=|
00001d10  71 25 21 38 0d 01 3e 24  20 21 77 73 25 3d 70 61  |q%!8..>$ !ws%=pa|
00001d20  67 65 6c 69 73 74 5f 77  63 25 3a c8 99 20 67 65  |gelist_wc%:.. ge|
00001d30  74 77 25 2c 2c 77 73 25  0d 01 3f 2f 20 6f 66 66  |tw%,,ws%..?/ off|
00001d40  78 25 3d 28 77 73 25 21  34 2d 77 73 25 21 32 30  |x%=(ws%!4-ws%!20|
00001d50  29 3a 6f 66 66 79 25 3d  28 77 73 25 21 31 36 2d  |):offy%=(ws%!16-|
00001d60  77 73 25 21 32 34 29 0d  01 40 21 20 70 61 67 65  |ws%!24)..@! page|
00001d70  25 3d 28 28 28 71 25 21  34 29 2d 6f 66 66 79 25  |%=(((q%!4)-offy%|
00001d80  29 81 2d 34 38 29 2b 31  0d 01 41 2e 20 c8 99 20  |).-48)+1..A. .. |
00001d90  6e 65 6e 74 72 69 65 73  25 2c 73 5f 70 61 67 65  |nentries%,s_page|
00001da0  73 25 20 b8 20 6e 70 25  3a e7 20 70 61 67 65 25  |s% . np%:. page%|
00001db0  3e 6e 70 25 20 e1 0d 01  42 27 20 c8 99 20 67 65  |>np% ...B' .. ge|
00001dc0  74 6e 74 68 25 2c 73 5f  70 61 67 65 73 25 2c 70  |tnth%,s_pages%,p|
00001dd0  61 67 65 25 20 b8 20 2c  70 61 67 65 25 0d 01 43  |age% . ,page%..C|
00001de0  18 20 63 75 72 72 65 6e  74 5f 70 61 67 65 25 3d  |. current_page%=|
00001df0  70 61 67 65 25 0d 01 44  20 20 f2 61 72 72 61 6e  |page%..D  .arran|
00001e00  67 65 5f 70 61 67 65 6c  69 73 74 5f 77 63 28 70  |ge_pagelist_wc(p|
00001e10  61 67 65 25 29 0d 01 45  11 20 f2 70 72 65 5f 70  |age%)..E. .pre_p|
00001e20  72 6f 63 65 73 73 0d 01  46 16 20 f2 73 68 6f 77  |rocess..F. .show|
00001e30  5f 70 61 67 65 28 70 61  67 65 25 29 0d 01 47 16  |_page(page%)..G.|
00001e40  20 e7 20 73 63 61 6e 6e  69 6e 67 25 20 f2 73 63  | . scanning% .sc|
00001e50  61 6e 0d 01 48 20 20 e7  20 62 75 74 25 80 34 20  |an..H  . but%.4 |
00001e60  c8 99 20 63 72 65 61 74  65 6d 65 6e 75 25 2c 2c  |.. createmenu%,,|
00001e70  2d 31 0d 01 49 06 20 e1  0d 01 4a 04 0d 01 4b 17  |-1..I. ...J...K.|
00001e80  20 dd f2 73 68 6f 77 5f  70 61 67 65 28 70 61 67  | ..show_page(pag|
00001e90  65 25 29 0d 01 4c 18 20  63 75 72 72 65 6e 74 5f  |e%)..L. current_|
00001ea0  70 61 67 65 25 3d 70 61  67 65 25 0d 01 4d 1d 20  |page%=page%..M. |
00001eb0  21 71 25 3d 6d 61 69 6e  5f 77 25 3a c8 99 20 67  |!q%=main_w%:.. g|
00001ec0  65 74 77 25 2c 2c 71 25  0d 01 4e 41 20 e7 20 28  |etw%,,q%..NA . (|
00001ed0  71 25 21 33 32 29 20 80  20 28 31 3c 3c 31 36 29  |q%!32) . (1<<16)|
00001ee0  20 c8 99 20 66 6f 72 63  65 72 65 64 72 61 77 25  | .. forceredraw%|
00001ef0  2c 2d 31 2c 71 25 21 34  2c 71 25 21 38 2c 71 25  |,-1,q%!4,q%!8,q%|
00001f00  21 31 32 2c 71 25 21 31  36 0d 01 4f 26 20 f2 77  |!12,q%!16..O& .w|
00001f10  69 6e 64 6f 77 5f 74 69  74 6c 65 28 6d 61 69 6e  |indow_title(main|
00001f20  5f 77 25 2c 66 75 6c 6c  5f 6e 61 6d 65 24 29 0d  |_w%,full_name$).|
00001f30  01 50 27 20 c8 99 20 67  65 74 65 6e 74 72 79 25  |.P' .. getentry%|
00001f40  2c 73 5f 70 61 67 65 73  25 2c 70 61 67 65 25 20  |,s_pages%,page% |
00001f50  b8 20 61 64 72 25 0d 01  51 23 20 63 75 72 72 65  |. adr%..Q# curre|
00001f60  6e 74 5f 70 61 67 65 24  3d a4 73 74 72 69 6e 67  |nt_page$=.string|
00001f70  30 28 61 64 72 25 2b 34  29 0d 01 52 21 20 ff 20  |0(adr%+4)..R! . |
00001f80  22 73 65 74 20 55 70 61  67 65 20 22 2b 63 75 72  |"set Upage "+cur|
00001f90  72 65 6e 74 5f 70 61 67  65 24 0d 01 53 06 20 e1  |rent_page$..S. .|
00001fa0  0d 01 54 04 0d 01 55 24  20 dd f2 75 70 64 61 74  |..T...U$ ..updat|
00001fb0  65 5f 6f 62 6a 65 63 74  28 73 74 61 63 6b 25 2c  |e_object(stack%,|
00001fc0  6f 62 6a 65 63 74 25 29  0d 01 56 0b 20 ea 20 61  |object%)..V. . a|
00001fd0  64 72 25 0d 01 57 27 20  c8 99 20 67 65 74 65 6e  |dr%..W' .. geten|
00001fe0  74 72 79 25 2c 73 74 61  63 6b 25 2c 6f 62 6a 65  |try%,stack%,obje|
00001ff0  63 74 25 20 b8 20 61 64  72 25 0d 01 58 3c 20 c8  |ct% . adr%..X< .|
00002000  99 20 66 6f 72 63 65 72  65 64 72 61 77 25 2c 6d  |. forceredraw%,m|
00002010  61 69 6e 5f 77 25 2c 61  64 72 25 21 31 32 2c 61  |ain_w%,adr%!12,a|
00002020  64 72 25 21 31 36 2c 61  64 72 25 21 32 30 2c 61  |dr%!16,adr%!20,a|
00002030  64 72 25 21 32 34 0d 01  59 06 20 e1 0d 01 5a 04  |dr%!24..Y. ...Z.|
00002040  0d 01 5b 30 20 dd f2 73  65 74 5f 69 63 6f 6e 5f  |..[0 ..set_icon_|
00002050  73 74 61 74 65 28 77 69  6e 64 6f 77 25 2c 69 63  |state(window%,ic|
00002060  6f 6e 25 2c 65 6f 72 25  2c 63 6c 65 61 72 25 29  |on%,eor%,clear%)|
00002070  0d 01 5c 58 20 21 65 72  72 62 6c 6b 25 3d 77 69  |..\X !errblk%=wi|
00002080  6e 64 6f 77 25 3a 65 72  72 62 6c 6b 25 21 34 3d  |ndow%:errblk%!4=|
00002090  69 63 6f 6e 25 3a 65 72  72 62 6c 6b 25 21 38 3d  |icon%:errblk%!8=|
000020a0  65 6f 72 25 3a 65 72 72  62 6c 6b 25 21 31 32 3d  |eor%:errblk%!12=|
000020b0  63 6c 65 61 72 25 3a c8  99 20 73 65 74 69 25 2c  |clear%:.. seti%,|
000020c0  2c 65 72 72 62 6c 6b 25  0d 01 5d 06 20 e1 0d 01  |,errblk%..]. ...|
000020d0  5e 04 0d 01 5f 20 20 dd  a4 69 63 6f 6e 5f 73 74  |^..._  ..icon_st|
000020e0  61 74 65 28 77 69 6e 64  6f 77 25 2c 69 63 6f 6e  |ate(window%,icon|
000020f0  25 29 0d 01 60 43 20 21  65 72 72 62 6c 6b 25 3d  |%)..`C !errblk%=|
00002100  77 69 6e 64 6f 77 25 3a  65 72 72 62 6c 6b 25 21  |window%:errblk%!|
00002110  34 3d 69 63 6f 6e 25 3a  c8 99 20 67 65 74 69 25  |4=icon%:.. geti%|
00002120  2c 2c 65 72 72 62 6c 6b  25 3a 3d 65 72 72 62 6c  |,,errblk%:=errbl|
00002130  6b 25 21 32 34 0d 01 61  04 0d 01 62 2a 20 dd 20  |k%!24..a...b* . |
00002140  f2 73 65 74 5f 69 63 6f  6e 5f 74 65 78 74 28 77  |.set_icon_text(w|
00002150  69 6e 64 6f 77 25 2c 69  63 6f 6e 25 2c 74 65 78  |indow%,icon%,tex|
00002160  74 24 29 0d 01 63 37 20  21 65 72 72 62 6c 6b 25  |t$)..c7 !errblk%|
00002170  3d 77 69 6e 64 6f 77 25  3a 65 72 72 62 6c 6b 25  |=window%:errblk%|
00002180  21 34 3d 69 63 6f 6e 25  3a c8 99 20 67 65 74 69  |!4=icon%:.. geti|
00002190  25 2c 2c 65 72 72 62 6c  6b 25 0d 01 64 30 20 f2  |%,,errblk%..d0 .|
000021a0  73 74 72 69 6e 67 30 28  65 72 72 62 6c 6b 25 21  |string0(errblk%!|
000021b0  32 38 2c c0 74 65 78 74  24 2c 28 65 72 72 62 6c  |28,.text$,(errbl|
000021c0  6b 25 21 33 36 29 2d 31  29 29 0d 01 65 2f 20 65  |k%!36)-1))..e/ e|
000021d0  72 72 62 6c 6b 25 21 38  3d 30 3a 65 72 72 62 6c  |rrblk%!8=0:errbl|
000021e0  6b 25 21 31 32 3d 30 3a  c8 99 20 73 65 74 69 25  |k%!12=0:.. seti%|
000021f0  2c 2c 65 72 72 62 6c 6b  25 0d 01 66 06 20 e1 0d  |,,errblk%..f. ..|
00002200  01 67 04 0d 01 68 29 20  dd a4 6c 65 61 66 28 6e  |.g...h) ..leaf(n|
00002210  61 6d 65 24 29 3a e7 20  a7 6e 61 6d 65 24 2c 22  |ame$):. .name$,"|
00002220  2e 22 29 3d 30 3a 3d 6e  61 6d 65 24 0d 01 69 26  |.")=0:=name$..i&|
00002230  20 f5 6e 61 6d 65 24 3d  c2 6e 61 6d 65 24 2c a9  | .name$=.name$,.|
00002240  6e 61 6d 65 24 2d a7 6e  61 6d 65 24 2c 22 2e 22  |name$-.name$,"."|
00002250  29 29 0d 01 6a 1a 20 fd  a7 6e 61 6d 65 24 2c 22  |))..j. ..name$,"|
00002260  2e 22 29 3d 30 3a 3d 6e  61 6d 65 24 0d 01 6b 04  |.")=0:=name$..k.|
00002270  0d 01 6c 26 20 dd f2 73  74 61 72 74 5f 64 72 61  |..l& ..start_dra|
00002280  67 28 74 79 70 65 25 2c  78 25 2c 79 25 2c 78 31  |g(type%,x%,y%,x1|
00002290  25 2c 79 31 25 29 0d 01  6d 11 20 21 71 25 3d 30  |%,y1%)..m. !q%=0|
000022a0  3a 71 25 21 34 3d 35 0d  01 6e 29 20 71 25 21 38  |:q%!4=5..n) q%!8|
000022b0  3d 78 25 3a 71 25 21 31  32 3d 79 25 3a 71 25 21  |=x%:q%!12=y%:q%!|
000022c0  31 36 3d 78 31 25 3a 71  25 21 32 30 3d 79 31 25  |16=x1%:q%!20=y1%|
000022d0  0d 01 6f 3d 20 71 25 21  32 34 3d 30 3a 71 25 21  |..o= q%!24=0:q%!|
000022e0  32 38 3d 30 3a 71 25 21  33 32 3d 73 63 72 65 65  |28=0:q%!32=scree|
000022f0  6e 5f 77 69 64 74 68 25  3a 71 25 21 33 36 3d 73  |n_width%:q%!36=s|
00002300  63 72 65 65 6e 5f 68 65  69 67 68 74 25 0d 01 70  |creen_height%..p|
00002310  11 20 c8 99 20 64 72 61  67 25 2c 2c 71 25 0d 01  |. .. drag%,,q%..|
00002320  71 15 20 64 72 61 67 5f  74 79 70 65 25 3d 74 79  |q. drag_type%=ty|
00002330  70 65 25 0d 01 72 06 20  e1 0d 01 73 04 0d 01 74  |pe%..r. ...s...t|
00002340  0f 20 dd f2 72 61 6d 66  65 74 63 68 0d 01 75 12  |. ..ramfetch..u.|
00002350  20 44 4d 54 5f 72 65 66  25 3d 71 25 21 34 0d 01  | DMT_ref%=q%!4..|
00002360  76 0f 20 44 4d 54 25 3d  71 25 21 32 30 0d 01 77  |v. DMT%=q%!20..w|
00002370  13 20 44 4d 54 5f 6c 65  6e 25 3d 71 25 21 32 34  |. DMT_len%=q%!24|
00002380  0d 01 78 14 20 c8 8e 20  66 69 6c 65 5f 74 79 70  |..x. .. file_typ|
00002390  65 25 20 ca 0d 01 79 3e  20 20 20 c9 20 26 41 46  |e% ...y>   . &AF|
000023a0  46 2c 26 46 46 39 3a f2  73 61 76 65 5f 70 69 63  |F,&FF9:.save_pic|
000023b0  74 75 72 65 28 64 72 61  67 5f 70 74 79 70 65 25  |ture(drag_ptype%|
000023c0  2c 64 72 61 67 5f 70 69  63 74 75 72 65 25 2c 22  |,drag_picture%,"|
000023d0  22 29 0d 01 7a 2a 20 20  20 c9 20 26 46 46 46 3a  |")..z*   . &FFF:|
000023e0  f2 73 61 76 65 5f 74 65  78 74 28 64 72 61 67 5f  |.save_text(drag_|
000023f0  70 69 63 74 75 72 65 25  2c 22 22 29 0d 01 7b 29  |picture%,"")..{)|
00002400  20 20 20 c9 20 26 44 33  43 3a f2 73 61 76 65 5f  |   . &D3C:.save_|
00002410  73 6f 75 6e 64 28 64 72  61 67 5f 73 6f 75 6e 64  |sound(drag_sound|
00002420  25 2c 22 22 29 0d 01 7c  06 20 cb 0d 01 7d 06 20  |%,"")..|. ...}. |
00002430  e1 0d 01 7e 04 0d 01 7f  12 20 dd f2 64 61 74 61  |...~..... ..data|
00002440  73 61 76 65 61 63 6b 0d  01 80 16 20 e7 20 71 25  |saveack.... . q%|
00002450  21 31 32 3c 3e 6d 79 72  65 66 25 20 e1 0d 01 81  |!12<>myref% ....|
00002460  0b 20 44 4d 54 25 3d 30  0d 01 82 12 20 66 5f 74  |. DMT%=0.... f_t|
00002470  79 70 65 25 3d 71 25 21  34 30 0d 01 83 11 20 c8  |ype%=q%!40.... .|
00002480  8e 20 66 5f 74 79 70 65  25 20 ca 0d 01 84 4b 20  |. f_type% ....K |
00002490  20 20 c9 20 26 41 46 46  2c 26 46 46 39 3a f2 73  |  . &AFF,&FF9:.s|
000024a0  61 76 65 5f 70 69 63 74  75 72 65 28 64 72 61 67  |ave_picture(drag|
000024b0  5f 70 74 79 70 65 25 2c  64 72 61 67 5f 70 69 63  |_ptype%,drag_pic|
000024c0  74 75 72 65 25 2c a4 73  74 72 69 6e 67 30 28 71  |ture%,.string0(q|
000024d0  25 2b 34 34 29 29 0d 01  85 36 20 20 20 c9 20 26  |%+44))...6   . &|
000024e0  44 33 43 3a f2 73 61 76  65 5f 73 6f 75 6e 64 28  |D3C:.save_sound(|
000024f0  64 72 61 67 5f 73 6f 75  6e 64 25 2c a4 73 74 72  |drag_sound%,.str|
00002500  69 6e 67 30 28 71 25 2b  34 34 29 29 0d 01 86 37  |ing0(q%+44))...7|
00002510  20 20 20 c9 20 26 46 46  46 3a f2 73 61 76 65 5f  |   . &FFF:.save_|
00002520  74 65 78 74 28 64 72 61  67 5f 70 69 63 74 75 72  |text(drag_pictur|
00002530  65 25 2c a4 73 74 72 69  6e 67 30 28 71 25 2b 34  |e%,.string0(q%+4|
00002540  34 29 29 0d 01 87 06 20  cb 0d 01 88 17 20 71 25  |4)).... ..... q%|
00002550  21 31 32 3d 71 25 21 38  3a 71 25 21 31 36 3d 33  |!12=q%!8:q%!16=3|
00002560  0d 01 89 1f 20 c8 99 20  73 65 6e 64 6d 65 73 73  |.... .. sendmess|
00002570  61 67 65 25 2c 31 37 2c  71 25 2c 71 25 21 34 0d  |age%,17,q%,q%!4.|
00002580  01 8a 06 20 e1 0d 01 8b  04 0d 01 8c 27 20 dd f2  |... ........' ..|
00002590  73 61 76 65 5f 70 69 63  74 75 72 65 28 74 79 70  |save_picture(typ|
000025a0  65 25 2c 74 6f 6b 65 6e  25 2c 6e 61 6d 65 24 29  |e%,token%,name$)|
000025b0  0d 01 8d 0d 20 73 61 76  65 24 3d 22 22 0d 01 8e  |.... save$=""...|
000025c0  08 20 ea 20 85 0d 01 8f  15 20 ee 20 85 20 ea 3a  |. . ..... . . .:|
000025d0  f7 20 85 3a 85 20 31 2c  f6 24 0d 01 90 13 20 e7  |. .:. 1,.$.... .|
000025e0  20 44 4d 54 5f 70 74 72  25 3d 30 20 8c 0d 01 91  | DMT_ptr%=0 ....|
000025f0  18 20 20 20 c8 99 20 22  48 6f 75 72 67 6c 61 73  |.   .. "Hourglas|
00002600  73 5f 4f 6e 22 0d 01 92  27 20 20 20 c8 99 20 67  |s_On"...'   .. g|
00002610  65 74 65 6e 74 72 79 25  2c 74 79 70 65 25 2c 74  |etentry%,type%,t|
00002620  6f 6b 65 6e 25 20 b8 20  61 64 72 25 0d 01 93 16  |oken% . adr%....|
00002630  20 20 20 6c 65 6e 25 3d  28 21 61 64 72 25 29 2d  |   len%=(!adr%)-|
00002640  31 36 0d 01 94 34 20 20  20 c8 99 20 72 65 61 64  |16...4   .. read|
00002650  73 74 61 74 75 73 25 2c  74 79 70 65 25 2c 74 6f  |status%,type%,to|
00002660  6b 65 6e 25 20 b8 20 6c  25 3a e7 20 6c 25 20 6c  |ken% . l%:. l% l|
00002670  65 6e 25 3d 6c 25 0d 01  95 0f 20 20 20 61 64 72  |en%=l%....   adr|
00002680  25 2b 3d 31 36 0d 01 96  1b 20 20 20 e7 20 74 79  |%+=16....   . ty|
00002690  70 65 25 3d 73 5f 73 70  72 69 74 65 73 25 20 8c  |pe%=s_sprites% .|
000026a0  0d 01 97 2e 20 20 20 20  20 c8 99 20 67 65 74 65  |....     .. gete|
000026b0  6e 74 72 79 25 2c 73 5f  73 70 72 69 74 65 73 25  |ntry%,s_sprites%|
000026c0  2c 74 6f 6b 65 6e 25 20  b8 20 61 64 72 25 0d 01  |,token% . adr%..|
000026d0  98 1f 20 20 20 20 20 e7  20 21 61 64 72 25 3d 28  |..     . !adr%=(|
000026e0  61 64 72 25 21 31 36 29  2b 31 36 20 8c 0d 01 99  |adr%!16)+16 ....|
000026f0  21 20 20 20 20 20 20 20  73 61 76 65 24 3d a4 73  |!       save$=.s|
00002700  74 72 69 6e 67 30 28 61  64 72 25 2b 34 29 0d 01  |tring0(adr%+4)..|
00002710  9a 2b 20 20 20 20 20 20  20 61 64 72 25 21 34 3d  |.+       adr%!4=|
00002720  31 3a 61 64 72 25 21 38  3d 31 36 3a 61 64 72 25  |1:adr%!8=16:adr%|
00002730  21 31 32 3d 21 61 64 72  25 0d 01 9b 20 20 20 20  |!12=!adr%...    |
00002740  20 20 20 20 6c 65 6e 25  3d 21 61 64 72 25 2b 31  |    len%=!adr%+1|
00002750  32 3a 61 64 72 25 2b 3d  34 0d 01 9c 0a 20 20 20  |2:adr%+=4....   |
00002760  20 20 cc 0d 01 9d 39 20  20 20 20 20 20 20 c8 99  |  ....9       ..|
00002770  20 75 6e 70 61 63 6b 73  70 72 69 74 65 25 2c 73  | unpacksprite%,s|
00002780  5f 73 70 72 69 74 65 73  25 2c 74 6f 6b 65 6e 25  |_sprites%,token%|
00002790  2c 73 70 72 69 74 65 73  25 2b 31 32 0d 01 9e 16  |,sprites%+12....|
000027a0  20 20 20 20 20 20 20 21  73 70 72 69 74 65 73 25  |       !sprites%|
000027b0  3d 31 0d 01 9f 18 20 20  20 20 20 20 20 73 70 72  |=1....       spr|
000027c0  69 74 65 73 25 21 34 3d  31 36 0d 01 a0 26 20 20  |ites%!4=16...&  |
000027d0  20 20 20 20 20 73 70 72  69 74 65 73 25 21 38 3d  |     sprites%!8=|
000027e0  28 73 70 72 69 74 65 73  25 21 31 32 29 2b 31 36  |(sprites%!12)+16|
000027f0  0d 01 a1 1a 20 20 20 20  20 20 20 6c 65 6e 25 3d  |....       len%=|
00002800  73 70 72 69 74 65 73 25  21 38 0d 01 a2 18 20 20  |sprites%!8....  |
00002810  20 20 20 20 20 61 64 72  25 3d 73 70 72 69 74 65  |     adr%=sprite|
00002820  73 25 0d 01 a3 0a 20 20  20 20 20 cd 0d 01 a4 18  |s%....     .....|
00002830  20 20 20 20 20 66 69 6c  65 5f 74 79 70 65 25 3d  |     file_type%=|
00002840  26 46 46 39 0d 01 a5 08  20 20 20 cc 0d 01 a6 18  |&FF9....   .....|
00002850  20 20 20 20 20 66 69 6c  65 5f 74 79 70 65 25 3d  |     file_type%=|
00002860  26 41 46 46 0d 01 a7 08  20 20 20 cd 0d 01 a8 16  |&AFF....   .....|
00002870  20 20 20 44 4d 54 5f 6d  79 6c 65 6e 25 3d 6c 65  |   DMT_mylen%=le|
00002880  6e 25 0d 01 a9 15 20 20  20 44 4d 54 5f 64 61 74  |n%....   DMT_dat|
00002890  61 25 3d 61 64 72 25 0d  01 aa 06 20 cd 0d 01 ab  |a%=adr%.... ....|
000028a0  2c 20 f2 73 61 76 65 5f  73 6c 61 76 65 28 6e 61  |, .save_slave(na|
000028b0  6d 65 24 2c 61 64 72 25  2c 6c 65 6e 25 2c 66 69  |me$,adr%,len%,fi|
000028c0  6c 65 5f 74 79 70 65 25  29 0d 01 ac 12 20 e7 20  |le_type%).... . |
000028d0  73 61 76 65 24 3c 3e 22  22 20 8c 0d 01 ad 2c 20  |save$<>"" ...., |
000028e0  20 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |  .. getentry%,s|
000028f0  5f 73 70 72 69 74 65 73  25 2c 74 6f 6b 65 6e 25  |_sprites%,token%|
00002900  20 b8 20 61 64 72 25 0d  01 ae 1d 20 20 20 f2 73  | . adr%....   .s|
00002910  74 72 69 6e 67 30 28 61  64 72 25 2b 34 2c 73 61  |tring0(adr%+4,sa|
00002920  76 65 24 29 0d 01 af 06  20 cd 0d 01 b0 06 20 e1  |ve$).... ..... .|
00002930  0d 01 b1 04 0d 01 b2 1f  20 dd f2 73 61 76 65 5f  |........ ..save_|
00002940  73 6f 75 6e 64 28 73 6f  75 6e 64 25 2c 6e 61 6d  |sound(sound%,nam|
00002950  65 24 29 0d 01 b3 08 20  ea 20 85 0d 01 b4 15 20  |e$).... . ..... |
00002960  ee 20 85 20 ea 3a f7 20  85 3a 85 20 31 2c f6 24  |. . .:. .:. 1,.$|
00002970  0d 01 b5 13 20 e7 20 44  4d 54 5f 70 74 72 25 3d  |.... . DMT_ptr%=|
00002980  30 20 8c 0d 01 b6 18 20  20 20 c8 99 20 22 48 6f  |0 .....   .. "Ho|
00002990  75 72 67 6c 61 73 73 5f  4f 6e 22 0d 01 b7 2b 20  |urglass_On"...+ |
000029a0  20 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |  .. getentry%,s|
000029b0  5f 73 6f 75 6e 64 73 25  2c 73 6f 75 6e 64 25 20  |_sounds%,sound% |
000029c0  b8 20 61 64 72 25 0d 01  b8 16 20 20 20 6c 65 6e  |. adr%....   len|
000029d0  25 3d 28 21 61 64 72 25  29 2d 32 34 0d 01 b9 38  |%=(!adr%)-24...8|
000029e0  20 20 20 c8 99 20 72 65  61 64 73 74 61 74 75 73  |   .. readstatus|
000029f0  25 2c 73 5f 73 6f 75 6e  64 73 25 2c 73 6f 75 6e  |%,s_sounds%,soun|
00002a00  64 25 20 b8 20 6c 25 3a  e7 20 6c 25 20 6c 65 6e  |d% . l%:. l% len|
00002a10  25 3d 6c 25 0d 01 ba 0f  20 20 20 61 64 72 25 2b  |%=l%....   adr%+|
00002a20  3d 32 34 0d 01 bb 16 20  20 20 44 4d 54 5f 6d 79  |=24....   DMT_my|
00002a30  6c 65 6e 25 3d 6c 65 6e  25 0d 01 bc 15 20 20 20  |len%=len%....   |
00002a40  44 4d 54 5f 64 61 74 61  25 3d 61 64 72 25 0d 01  |DMT_data%=adr%..|
00002a50  bd 06 20 cd 0d 01 be 26  20 f2 73 61 76 65 5f 73  |.. ....& .save_s|
00002a60  6c 61 76 65 28 6e 61 6d  65 24 2c 61 64 72 25 2c  |lave(name$,adr%,|
00002a70  6c 65 6e 25 2c 26 44 33  43 29 0d 01 bf 06 20 e1  |len%,&D3C).... .|
00002a80  0d 01 c0 04 0d 01 c1 1d  20 dd f2 73 61 76 65 5f  |........ ..save_|
00002a90  74 65 78 74 28 74 65 78  74 25 2c 6e 61 6d 65 24  |text(text%,name$|
00002aa0  29 0d 01 c2 08 20 ea 20  85 0d 01 c3 15 20 ee 20  |).... . ..... . |
00002ab0  85 20 ea 3a f7 20 85 3a  85 20 31 2c f6 24 0d 01  |. .:. .:. 1,.$..|
00002ac0  c4 26 20 c8 99 20 67 65  74 65 6e 74 72 79 25 2c  |.& .. getentry%,|
00002ad0  73 5f 74 65 78 74 25 2c  74 65 78 74 25 20 b8 20  |s_text%,text% . |
00002ae0  61 64 72 25 0d 01 c5 20  20 c8 99 20 6d 6f 76 65  |adr%...  .. move|
00002af0  64 61 74 61 25 2c 61 64  72 25 2c 77 73 25 2c 21  |data%,adr%,ws%,!|
00002b00  61 64 72 25 0d 01 c6 17  20 61 64 72 25 3d 77 73  |adr%.... adr%=ws|
00002b10  25 2b 34 3a 74 25 3d 61  64 72 25 0d 01 c7 0b 20  |%+4:t%=adr%.... |
00002b20  6c 65 6e 25 3d 30 0d 01  c8 06 20 f5 0d 01 c9 16  |len%=0.... .....|
00002b30  20 20 20 e7 20 3f 74 25  3d 31 33 20 3f 74 25 3d  |   . ?t%=13 ?t%=|
00002b40  31 30 0d 01 ca 1d 20 20  20 e7 20 3f 74 25 3c 3e  |10....   . ?t%<>|
00002b50  30 20 6c 65 6e 25 2b 3d  31 3a 74 25 2b 3d 31 0d  |0 len%+=1:t%+=1.|
00002b60  01 cb 14 20 fd 3f 74 25  3d 30 20 8b 20 fd 3f 74  |... .?t%=0 . .?t|
00002b70  25 3d 30 0d 01 cc 13 20  e7 20 44 4d 54 5f 70 74  |%=0.... . DMT_pt|
00002b80  72 25 3d 30 20 8c 0d 01  cd 18 20 20 20 c8 99 20  |r%=0 .....   .. |
00002b90  22 48 6f 75 72 67 6c 61  73 73 5f 4f 6e 22 0d 01  |"Hourglass_On"..|
00002ba0  ce 16 20 20 20 44 4d 54  5f 6d 79 6c 65 6e 25 3d  |..   DMT_mylen%=|
00002bb0  6c 65 6e 25 0d 01 cf 15  20 20 20 44 4d 54 5f 64  |len%....   DMT_d|
00002bc0  61 74 61 25 3d 61 64 72  25 0d 01 d0 06 20 cd 0d  |ata%=adr%.... ..|
00002bd0  01 d1 26 20 f2 73 61 76  65 5f 73 6c 61 76 65 28  |..& .save_slave(|
00002be0  6e 61 6d 65 24 2c 61 64  72 25 2c 6c 65 6e 25 2c  |name$,adr%,len%,|
00002bf0  26 46 46 46 29 0d 01 d2  06 20 e1 0d 01 d3 04 0d  |&FFF).... ......|
00002c00  01 d4 2d 20 dd f2 73 61  76 65 5f 73 6c 61 76 65  |..- ..save_slave|
00002c10  28 6e 61 6d 65 24 2c 61  64 72 25 2c 6c 65 6e 25  |(name$,adr%,len%|
00002c20  2c 66 69 6c 65 5f 74 79  70 65 25 29 0d 01 d5 0d  |,file_type%)....|
00002c30  20 e7 20 44 4d 54 25 20  8c 0d 01 d6 27 20 20 20  | . DMT% ....'   |
00002c40  e7 20 44 4d 54 5f 6d 79  6c 65 6e 25 2d 44 4d 54  |. DMT_mylen%-DMT|
00002c50  5f 70 74 72 25 3e 44 4d  54 5f 6c 65 6e 25 20 8c  |_ptr%>DMT_len% .|
00002c60  0d 01 d7 14 20 20 20 20  20 6c 25 3d 44 4d 54 5f  |....     l%=DMT_|
00002c70  6c 65 6e 25 0d 01 d8 08  20 20 20 cc 0d 01 d9 1f  |len%....   .....|
00002c80  20 20 20 20 20 6c 25 3d  44 4d 54 5f 6d 79 6c 65  |     l%=DMT_myle|
00002c90  6e 25 2d 44 4d 54 5f 70  74 72 25 0d 01 da 1b 20  |n%-DMT_ptr%.... |
00002ca0  20 20 20 20 c8 99 20 22  48 6f 75 72 67 6c 61 73  |    .. "Hourglas|
00002cb0  73 5f 4f 66 66 22 0d 01  db 08 20 20 20 cd 0d 01  |s_Off"....   ...|
00002cc0  dc 4f 20 20 20 c8 99 20  22 57 69 6d 70 5f 54 72  |.O   .. "Wimp_Tr|
00002cd0  61 6e 73 66 65 72 42 6c  6f 63 6b 22 2c 74 61 73  |ansferBlock",tas|
00002ce0  6b 5f 68 61 6e 64 6c 65  25 2c 44 4d 54 5f 64 61  |k_handle%,DMT_da|
00002cf0  74 61 25 2b 44 4d 54 5f  70 74 72 25 2c 44 4d 54  |ta%+DMT_ptr%,DMT|
00002d00  5f 72 65 66 25 2c 44 4d  54 25 2c 6c 25 0d 01 dd  |_ref%,DMT%,l%...|
00002d10  13 20 20 20 44 4d 54 5f  70 74 72 25 2b 3d 6c 25  |.   DMT_ptr%+=l%|
00002d20  0d 01 de 19 20 20 20 71  25 21 31 32 3d 71 25 21  |....   q%!12=q%!|
00002d30  38 3a 71 25 21 31 36 3d  37 0d 01 df 0f 20 20 20  |8:q%!16=7....   |
00002d40  71 25 21 32 34 3d 6c 25  0d 01 e0 35 20 20 20 c8  |q%!24=l%...5   .|
00002d50  99 20 73 65 6e 64 6d 65  73 73 61 67 65 25 2c 31  |. sendmessage%,1|
00002d60  38 2c 71 25 2c 71 25 21  34 3a f4 20 73 65 6e 64  |8,q%,q%!4:. send|
00002d70  20 52 41 4d 20 74 72 61  6e 73 6d 69 74 0d 01 e1  | RAM transmit...|
00002d80  06 20 cc 0d 01 e2 2e 20  20 20 20 ff 20 22 73 61  |. .....    . "sa|
00002d90  76 65 20 22 2b 6e 61 6d  65 24 2b 22 20 22 2b c3  |ve "+name$+" "+.|
00002da0  7e 61 64 72 25 2b 22 20  2b 22 2b c3 7e 6c 65 6e  |~adr%+" +"+.~len|
00002db0  25 0d 01 e3 2b 20 20 20  20 ff 20 22 53 45 54 54  |%...+    . "SETT|
00002dc0  59 50 45 20 22 2b 6e 61  6d 65 24 2b 22 20 22 2b  |YPE "+name$+" "+|
00002dd0  c3 7e 66 69 6c 65 5f 74  79 70 65 25 0d 01 e4 1a  |.~file_type%....|
00002de0  20 20 20 20 c8 99 20 22  48 6f 75 72 67 6c 61 73  |    .. "Hourglas|
00002df0  73 5f 4f 66 66 22 0d 01  e5 06 20 cd 0d 01 e6 06  |s_Off".... .....|
00002e00  20 e1 0d 01 e7 04 0d 01  e8 0f 20 dd f2 64 61 74  | ......... ..dat|
00002e10  61 6c 6f 61 64 0d 01 e9  1f 20 c8 99 20 6d 6f 76  |aload.... .. mov|
00002e20  65 64 61 74 61 25 2c 71  25 2c 6f 6c 64 5f 71 25  |edata%,q%,old_q%|
00002e30  2c 32 35 36 0d 01 ea 13  20 c8 8e 20 6f 6c 64 5f  |,256.... .. old_|
00002e40  71 25 21 34 30 20 ca 0d  01 eb 0e 20 20 20 c9 20  |q%!40 .....   . |
00002e50  26 42 43 33 3a 0d 01 ec  45 20 20 20 20 20 e7 20  |&BC3:...E     . |
00002e60  6f 6c 64 5f 71 25 21 32  30 3d 6d 61 69 6e 5f 77  |old_q%!20=main_w|
00002e70  25 20 84 20 28 6f 6c 64  5f 71 25 21 32 30 3d 2d  |% . (old_q%!20=-|
00002e80  32 20 80 20 6f 6c 64 5f  71 25 21 32 34 3d 69 63  |2 . old_q%!24=ic|
00002e90  6f 6e 5f 62 61 72 25 29  20 8c 0d 01 ed 1b 20 20  |on_bar%) .....  |
00002ea0  20 20 20 20 20 e7 20 6f  6c 64 5f 71 25 21 31 32  |     . old_q%!12|
00002eb0  3c 3e 30 20 e1 0d 01 ee  18 20 20 20 20 20 20 20  |<>0 .....       |
00002ec0  e7 20 6d 6f 64 69 66 69  65 64 25 20 8c 0d 01 ef  |. modified% ....|
00002ed0  34 20 20 20 20 20 20 20  20 20 f2 6f 70 65 6e 5f  |4         .open_|
00002ee0  71 75 65 72 79 28 22 6c  6f 61 64 22 2b a4 73 74  |query("load"+.st|
00002ef0  72 69 6e 67 30 28 6f 6c  64 5f 71 25 2b 34 34 29  |ring0(old_q%+44)|
00002f00  29 0d 01 f0 0c 20 20 20  20 20 20 20 cc 0d 01 f1  |)....       ....|
00002f10  2e 20 20 20 20 20 20 20  20 20 f2 6c 6f 61 64 5f  |.         .load_|
00002f20  66 69 6c 65 28 a4 73 74  72 69 6e 67 30 28 6f 6c  |file(.string0(ol|
00002f30  64 5f 71 25 2b 34 34 29  2c 31 29 0d 01 f2 54 20  |d_q%+44),1)...T |
00002f40  20 20 20 20 20 20 20 20  6f 6c 64 5f 71 25 21 31  |        old_q%!1|
00002f50  32 3d 6f 6c 64 5f 71 25  21 38 3a 6f 6c 64 5f 71  |2=old_q%!8:old_q|
00002f60  25 21 31 36 3d 34 3a c8  99 20 22 57 69 6d 70 5f  |%!16=4:.. "Wimp_|
00002f70  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 31 37 2c  |SendMessage",17,|
00002f80  6f 6c 64 5f 71 25 2c 6f  6c 64 5f 71 25 21 34 0d  |old_q%,old_q%!4.|
00002f90  01 f3 0c 20 20 20 20 20  20 20 cd 0d 01 f4 0a 20  |...       ..... |
00002fa0  20 20 20 20 cd 0d 01 f5  06 20 cb 0d 01 f6 06 20  |    ..... ..... |
00002fb0  e1 0d 01 f7 04 0d 01 f8  1e 20 dd f2 6c 6f 61 64  |......... ..load|
00002fc0  5f 66 69 6c 65 28 6e 61  6d 65 24 2c 65 72 72 6f  |_file(name$,erro|
00002fd0  72 25 29 0d 01 f9 1d 20  74 25 3d 8e 28 6e 61 6d  |r%).... t%=.(nam|
00002fe0  65 24 29 3a 6c 25 3d a2  23 74 25 3a d9 23 74 25  |e$):l%=.#t%:.#t%|
00002ff0  0d 01 fa 2f 20 f2 73 65  74 5f 73 6c 6f 74 28 93  |.../ .set_slot(.|
00003000  2b 28 6c 25 81 26 34 30  30 30 29 2a 26 34 30 30  |+(l%.&4000)*&400|
00003010  30 2b 26 34 30 30 30 2c  65 72 72 6f 72 25 29 0d  |0+&4000,error%).|
00003020  01 fb 10 20 c8 99 20 6e  65 77 66 69 6c 65 25 0d  |... .. newfile%.|
00003030  01 fc 2e 20 66 75 6c 6c  5f 6e 61 6d 65 24 3d c0  |... full_name$=.|
00003040  6e 61 6d 65 24 2c a9 28  6e 61 6d 65 24 29 2d a7  |name$,.(name$)-.|
00003050  6e 61 6d 65 24 2c 22 21  22 29 2d 31 29 0d 01 fd  |name$,"!")-1)...|
00003060  16 20 c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |. .. "Hourglass_|
00003070  4f 6e 22 0d 01 fe 1e 20  ff 20 22 6c 6f 61 64 20  |On".... . "load |
00003080  20 22 2b 6e 61 6d 65 24  2b 22 20 34 30 30 30 30  | "+name$+" 40000|
00003090  22 0d 01 ff 15 20 76 65  72 73 69 6f 6e 25 3d 21  |".... version%=!|
000030a0  26 34 30 30 30 43 0d 02  00 1a 20 c8 99 20 6c 6f  |&4000C.... .. lo|
000030b0  63 61 74 65 66 69 6c 65  25 2c 26 37 38 30 30 30  |catefile%,&78000|
000030c0  0d 02 01 10 20 6d 6f 64  69 66 69 65 64 25 3d 30  |.... modified%=0|
000030d0  0d 02 02 15 20 71 75 65  72 79 5f 73 74 72 69 6e  |.... query_strin|
000030e0  67 24 3d 22 22 0d 02 03  13 20 65 64 69 74 65 64  |g$="".... edited|
000030f0  5f 61 72 65 61 25 3d 30  0d 02 04 57 20 63 75 72  |_area%=0...W cur|
00003100  72 65 6e 74 5f 70 61 67  65 25 3d 21 26 34 30 30  |rent_page%=!&400|
00003110  32 30 3a 74 6f 6f 6c 62  6f 78 5f 6f 6e 25 3d 21  |20:toolbox_on%=!|
00003120  26 34 30 30 32 34 3a 6d  65 6e 75 5f 65 6e 61 62  |&40024:menu_enab|
00003130  6c 65 64 25 3d 21 26 34  30 30 32 38 3a 70 61 67  |led%=!&40028:pag|
00003140  65 5f 73 69 7a 65 25 3d  21 26 34 30 30 32 43 0d  |e_size%=!&4002C.|
00003150  02 05 50 20 68 5f 73 63  72 6f 6c 6c 25 3d 21 26  |..P h_scroll%=!&|
00003160  34 30 30 36 30 3a 76 5f  73 63 72 6f 6c 6c 25 3d  |40060:v_scroll%=|
00003170  21 26 34 30 30 36 34 3a  74 69 74 6c 65 5f 62 61  |!&40064:title_ba|
00003180  72 25 3d 21 26 34 30 30  36 38 3a 74 6f 67 67 6c  |r%=!&40068:toggl|
00003190  65 5f 69 63 6f 6e 25 3d  21 26 34 30 30 36 43 0d  |e_icon%=!&4006C.|
000031a0  02 06 3c 20 73 63 61 6e  6e 69 6e 67 25 3d 21 26  |..< scanning%=!&|
000031b0  34 30 30 37 30 3a 73 63  61 6e 5f 6b 65 79 73 25  |40070:scan_keys%|
000031c0  3d 21 26 34 30 30 37 34  3a 73 63 61 6e 5f 74 69  |=!&40074:scan_ti|
000031d0  6d 65 25 3d 21 26 34 30  30 37 38 0d 02 07 0f 20  |me%=!&40078.... |
000031e0  f2 73 69 7a 65 5f 70 61  67 65 0d 02 08 15 20 f2  |.size_page.... .|
000031f0  72 65 64 65 66 69 6e 65  5f 6d 61 69 6e 5f 77 0d  |redefine_main_w.|
00003200  02 09 3d 20 e7 20 21 26  34 30 30 33 30 20 21 26  |..= . !&40030 !&|
00003210  34 30 30 33 30 3d 6d 61  69 6e 5f 77 25 3a c8 99  |40030=main_w%:..|
00003220  20 6f 70 65 6e 77 25 2c  2c 26 34 30 30 33 30 3a  | openw%,,&40030:|
00003230  f2 6f 70 65 6e 5f 6d 61  69 6e 5f 77 0d 02 0a 17  |.open_main_w....|
00003240  20 c8 99 20 22 48 6f 75  72 67 6c 61 73 73 5f 4f  | .. "Hourglass_O|
00003250  66 66 22 0d 02 0b 34 20  c8 99 20 22 4f 53 5f 52  |ff"...4 .. "OS_R|
00003260  65 61 64 56 61 72 56 61  6c 22 2c 22 4f 62 65 79  |eadVarVal","Obey|
00003270  24 44 69 72 22 2c 6d 61  69 6e 25 2c 31 30 30 30  |$Dir",main%,1000|
00003280  20 b8 20 2c 2c 54 25 0d  02 0c 0f 20 54 25 3f 6d  | . ,,T%.... T%?m|
00003290  61 69 6e 25 3d 30 0d 02  0d 1f 20 66 75 6c 6c 5f  |ain%=0.... full_|
000032a0  6e 61 6d 65 24 3d a4 73  74 72 69 6e 67 30 28 6d  |name$=.string0(m|
000032b0  61 69 6e 25 29 0d 02 0e  26 20 f2 77 69 6e 64 6f  |ain%)...& .windo|
000032c0  77 5f 74 69 74 6c 65 28  6d 61 69 6e 5f 77 25 2c  |w_title(main_w%,|
000032d0  66 75 6c 6c 5f 6e 61 6d  65 24 29 0d 02 0f 21 20  |full_name$)...! |
000032e0  61 70 70 73 70 72 69 74  65 24 3d a4 6c 65 61 66  |appsprite$=.leaf|
000032f0  28 66 75 6c 6c 5f 6e 61  6d 65 24 29 0d 02 10 27  |(full_name$)...'|
00003300  20 6d 65 6e 75 24 3d c2  61 70 70 73 70 72 69 74  | menu$=.appsprit|
00003310  65 24 2c a9 28 61 70 70  73 70 72 69 74 65 24 29  |e$,.(appsprite$)|
00003320  2d 31 29 0d 02 11 2c 20  e7 20 a9 6d 65 6e 75 24  |-1)..., . .menu$|
00003330  3c 31 32 20 f5 3a 6d 65  6e 75 24 3d 6d 65 6e 75  |<12 .:menu$=menu|
00003340  24 2b bd 30 3a fd a9 6d  65 6e 75 24 3d 31 32 0d  |$+.0:..menu$=12.|
00003350  02 12 06 20 e1 0d 02 13  04 0d 02 14 6d f4 2d 2d  |... ........m.--|
00003360  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000033c0  2d 2d 2d 2d 2d 2d 0d 02  15 04 0d 02 16 0f 20 dd  |------........ .|
000033d0  f2 6e 65 77 5f 66 69 6c  65 0d 02 17 19 20 f2 73  |.new_file.... .s|
000033e0  65 74 5f 73 6c 6f 74 28  93 2b 26 34 30 30 30 2c  |et_slot(.+&4000,|
000033f0  32 29 0d 02 18 10 20 c8  99 20 6e 65 77 66 69 6c  |2).... .. newfil|
00003400  65 25 0d 02 19 10 20 e3  20 74 25 3d 31 20 b8 20  |e%.... . t%=1 . |
00003410  32 30 0d 02 1a 13 20 20  20 c8 99 20 6e 65 77 73  |20....   .. news|
00003420  74 61 63 6b 25 0d 02 1b  06 20 ed 0d 02 1c 19 20  |tack%.... ..... |
00003430  66 75 6c 6c 5f 6e 61 6d  65 24 3d 22 4e 6f 5f 4e  |full_name$="No_N|
00003440  61 6d 65 22 0d 02 1d 06  20 e1 0d 02 1e 04 0d 02  |ame".... .......|
00003450  1f 69 f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.i.-------------|
00003460  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000034b0  2d 2d 2d 2d 2d 2d 2d 0d  02 20 04 0d 02 21 20 20  |-------.. ...!  |
000034c0  dd f2 6f 70 65 6e 5f 63  65 6e 74 72 65 28 68 61  |..open_centre(ha|
000034d0  6e 64 6c 65 25 2c 6f 66  66 25 29 0d 02 22 1d 20  |ndle%,off%)..". |
000034e0  21 71 25 3d 68 61 6e 64  6c 65 25 3a c8 99 20 67  |!q%=handle%:.. g|
000034f0  65 74 77 25 2c 2c 71 25  0d 02 23 28 20 77 25 3d  |etw%,,q%..#( w%=|
00003500  28 71 25 21 31 32 29 2d  28 71 25 21 34 29 3a 68  |(q%!12)-(q%!4):h|
00003510  25 3d 28 71 25 21 31 36  29 2d 28 71 25 21 38 29  |%=(q%!16)-(q%!8)|
00003520  0d 02 24 1d 20 77 78 25  3d 73 63 72 65 65 6e 5f  |..$. wx%=screen_|
00003530  77 69 64 74 68 25 81 32  2d 77 25 81 32 0d 02 25  |width%.2-w%.2..%|
00003540  1e 20 77 79 25 3d 73 63  72 65 65 6e 5f 68 65 69  |. wy%=screen_hei|
00003550  67 68 74 25 81 32 2d 68  25 81 32 0d 02 26 49 20  |ght%.2-h%.2..&I |
00003560  f2 6f 70 65 6e 5f 77 69  6e 64 6f 77 28 68 61 6e  |.open_window(han|
00003570  64 6c 65 25 2c 77 78 25  2c 77 79 25 2b 6f 66 66  |dle%,wx%,wy%+off|
00003580  25 2c 77 78 25 2b 77 25  2c 77 79 25 2b 68 25 2b  |%,wx%+w%,wy%+h%+|
00003590  6f 66 66 25 2c 71 25 21  32 30 2c 71 25 21 32 34  |off%,q%!20,q%!24|
000035a0  2c 2d 31 29 0d 02 27 06  20 e1 0d 02 28 04 0d 02  |,-1)..'. ...(...|
000035b0  29 12 20 dd f2 6f 70 65  6e 5f 6d 61 69 6e 5f 77  |). ..open_main_w|
000035c0  0d 02 2a 1f 20 21 77 73  25 3d 6d 61 69 6e 5f 77  |..*. !ws%=main_w|
000035d0  25 3a c8 99 20 67 65 74  77 25 2c 2c 77 73 25 0d  |%:.. getw%,,ws%.|
000035e0  02 2b 18 20 73 78 25 3d  77 73 25 21 34 3a 73 79  |.+. sx%=ws%!4:sy|
000035f0  25 3d 77 73 25 21 38 0d  02 2c 1c 20 73 78 31 25  |%=ws%!8..,. sx1%|
00003600  3d 77 73 25 21 31 32 3a  73 79 31 25 3d 77 73 25  |=ws%!12:sy1%=ws%|
00003610  21 31 36 0d 02 2d 04 0d  02 2e 29 20 73 68 25 3d  |!16..-....) sh%=|
00003620  73 63 72 65 65 6e 5f 68  65 69 67 68 74 25 3a 73  |screen_height%:s|
00003630  77 25 3d 73 63 72 65 65  6e 5f 77 69 64 74 68 25  |w%=screen_width%|
00003640  0d 02 2f 16 20 68 73 25  3d 30 3a 76 73 25 3d 30  |../. hs%=0:vs%=0|
00003650  3a 74 62 25 3d 30 0d 02  30 17 20 e7 20 68 5f 73  |:tb%=0..0. . h_s|
00003660  63 72 6f 6c 6c 25 20 68  73 25 3d 34 30 0d 02 31  |croll% hs%=40..1|
00003670  18 20 e7 20 76 5f 73 63  72 6f 6c 6c 25 20 76 73  |. . v_scroll% vs|
00003680  25 2b 3d 34 30 0d 02 32  18 20 e7 20 74 69 74 6c  |%+=40..2. . titl|
00003690  65 5f 62 61 72 25 20 74  62 25 3d 33 36 0d 02 33  |e_bar% tb%=36..3|
000036a0  1c 20 77 25 3d 73 78 31  25 2d 73 78 25 3a 68 25  |. w%=sx1%-sx%:h%|
000036b0  3d 73 79 31 25 2d 73 79  25 0d 02 34 2c 20 e7 20  |=sy1%-sy%..4, . |
000036c0  73 79 31 25 2b 74 62 25  3e 73 68 25 20 73 79 31  |sy1%+tb%>sh% sy1|
000036d0  25 3d 73 68 25 2d 74 62  25 3a 73 79 25 3d 73 79  |%=sh%-tb%:sy%=sy|
000036e0  31 25 2d 68 25 0d 02 35  16 20 e7 20 73 79 25 3c  |1%-h%..5. . sy%<|
000036f0  68 73 25 20 73 79 25 3d  68 73 25 0d 02 36 2c 20  |hs% sy%=hs%..6, |
00003700  e7 20 73 78 31 25 2b 76  73 25 3e 73 77 25 20 73  |. sx1%+vs%>sw% s|
00003710  78 31 25 3d 73 77 25 2d  76 73 25 3a 73 78 25 3d  |x1%=sw%-vs%:sx%=|
00003720  73 78 31 25 2d 77 25 0d  02 37 12 20 e7 20 73 78  |sx1%-w%..7. . sx|
00003730  25 3c 30 20 73 78 25 3d  30 0d 02 38 11 20 21 77  |%<0 sx%=0..8. !w|
00003740  73 25 3d 6d 61 69 6e 5f  77 25 0d 02 39 0e 20 77  |s%=main_w%..9. w|
00003750  73 25 21 34 3d 73 78 25  0d 02 3a 0e 20 77 73 25  |s%!4=sx%..:. ws%|
00003760  21 38 3d 73 79 25 0d 02  3b 10 20 77 73 25 21 31  |!8=sy%..;. ws%!1|
00003770  32 3d 73 78 31 25 0d 02  3c 10 20 77 73 25 21 31  |2=sx1%..<. ws%!1|
00003780  36 3d 73 79 31 25 0d 02  3d 16 20 77 73 25 21 32  |6=sy1%..=. ws%!2|
00003790  30 3d 30 3a 77 73 25 21  32 34 3d 30 0d 02 3e 0e  |0=0:ws%!24=0..>.|
000037a0  20 77 73 25 21 32 38 3d  2d 31 0d 02 3f 49 20 f2  | ws%!28=-1..?I .|
000037b0  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 6d 61 69 6e  |open_window(main|
000037c0  5f 77 25 2c 77 73 25 21  34 2c 77 73 25 21 38 2c  |_w%,ws%!4,ws%!8,|
000037d0  77 73 25 21 31 32 2c 77  73 25 21 31 36 2c 77 73  |ws%!12,ws%!16,ws|
000037e0  25 21 32 30 2c 77 73 25  21 32 34 2c 77 73 25 21  |%!20,ws%!24,ws%!|
000037f0  32 38 29 0d 02 40 1e 20  21 71 25 3d 6d 61 69 6e  |28)..@. !q%=main|
00003800  5f 77 25 3a c8 99 20 67  65 74 77 25 2c 2c 77 73  |_w%:.. getw%,,ws|
00003810  25 0d 02 41 06 20 e1 0d  02 42 04 0d 02 43 69 f4  |%..A. ...B...Ci.|
00003820  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003880  2d 2d 2d 2d 0d 02 44 04  0d 02 45 34 20 dd f2 64  |----..D...E4 ..d|
00003890  72 61 77 5f 70 69 63 74  75 72 65 28 74 79 70 65  |raw_picture(type|
000038a0  25 2c 74 6f 6b 65 6e 25  2c 78 25 2c 79 25 2c 77  |%,token%,x%,y%,w|
000038b0  25 2c 68 25 2c 66 6c 61  67 73 25 29 0d 02 46 4c  |%,h%,flags%)..FL|
000038c0  20 e7 20 74 79 70 65 25  3d 73 5f 64 72 61 77 25  | . type%=s_draw%|
000038d0  20 78 25 2b 3d 28 31 3c  3c 78 65 66 25 29 3a 79  | x%+=(1<<xef%):y|
000038e0  25 2b 3d 28 31 3c 3c 79  65 66 25 29 3a 77 25 2d  |%+=(1<<yef%):w%-|
000038f0  3d 28 32 3c 3c 78 65 66  25 29 3a 68 25 2d 3d 28  |=(2<<xef%):h%-=(|
00003900  32 3c 3c 79 65 66 25 29  0d 02 47 23 20 c8 99 20  |2<<yef%)..G# .. |
00003910  67 65 74 65 6e 74 72 79  25 2c 74 79 70 65 25 2c  |getentry%,type%,|
00003920  74 6f 6b 65 6e 25 20 b8  20 61 25 0d 02 48 2a 20  |token% . a%..H* |
00003930  e7 20 21 61 25 3e 73 70  72 69 74 65 5f 73 69 7a  |. !a%>sprite_siz|
00003940  65 25 2d 32 34 20 66 6c  61 67 73 25 3d 66 6c 61  |e%-24 flags%=fla|
00003950  67 73 25 84 38 0d 02 49  38 20 21 65 72 72 62 6c  |gs%.8..I8 !errbl|
00003960  6b 25 3d 78 25 3a 65 72  72 62 6c 6b 25 21 34 3d  |k%=x%:errblk%!4=|
00003970  79 25 3a 65 72 72 62 6c  6b 25 21 38 3d 77 25 3a  |y%:errblk%!8=w%:|
00003980  65 72 72 62 6c 6b 25 21  31 32 3d 68 25 0d 02 4a  |errblk%!12=h%..J|
00003990  3c 20 c8 99 20 72 65 6e  64 65 72 73 68 61 70 65  |< .. rendershape|
000039a0  25 2c 74 79 70 65 25 2c  74 6f 6b 65 6e 25 2c 73  |%,type%,token%,s|
000039b0  70 72 69 74 65 73 25 2c  65 72 72 62 6c 6b 25 2c  |prites%,errblk%,|
000039c0  66 6c 61 67 73 25 80 31  35 0d 02 4b 06 20 e1 0d  |flags%.15..K. ..|
000039d0  02 4c 04 0d 02 4d 69 f4  2d 2d 2d 2d 2d 2d 2d 2d  |.L...Mi.--------|
000039e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003a30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 02 4e 04  |------------..N.|
00003a40  0d 02 4f 23 20 dd f2 77  69 6e 64 6f 77 5f 74 69  |..O# ..window_ti|
00003a50  74 6c 65 28 77 69 6e 64  6f 77 25 2c 74 69 74 6c  |tle(window%,titl|
00003a60  65 24 29 0d 02 50 18 20  e7 20 77 69 6e 64 6f 77  |e$)..P. . window|
00003a70  25 3d 6d 61 69 6e 5f 77  25 20 8c 0d 02 51 31 20  |%=main_w% ...Q1 |
00003a80  20 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |  .. getentry%,s|
00003a90  5f 70 61 67 65 73 25 2c  63 75 72 72 65 6e 74 5f  |_pages%,current_|
00003aa0  70 61 67 65 25 20 b8 20  61 64 72 25 0d 02 52 2b  |page% . adr%..R+|
00003ab0  20 20 20 74 69 74 6c 65  24 3d 74 69 74 6c 65 24  |   title$=title$|
00003ac0  2b 22 20 2d 20 22 2b a4  73 74 72 69 6e 67 30 28  |+" - "+.string0(|
00003ad0  61 64 72 25 2b 34 29 0d  02 53 06 20 cd 0d 02 54  |adr%+4)..S. ...T|
00003ae0  23 20 e7 20 6d 6f 64 69  66 69 65 64 25 20 74 69  |# . modified% ti|
00003af0  74 6c 65 24 3d 74 69 74  6c 65 24 2b 22 20 2a 22  |tle$=title$+" *"|
00003b00  0d 02 55 28 20 21 65 72  72 62 6c 6b 25 3d 77 69  |..U( !errblk%=wi|
00003b10  6e 64 6f 77 25 3a c8 99  20 67 65 74 77 69 25 2c  |ndow%:.. getwi%,|
00003b20  2c 65 72 72 62 6c 6b 25  0d 02 56 20 20 f2 73 74  |,errblk%..V  .st|
00003b30  72 69 6e 67 30 28 65 72  72 62 6c 6b 25 21 37 36  |ring0(errblk%!76|
00003b40  2c 74 69 74 6c 65 24 29  0d 02 57 47 20 c8 99 20  |,title$)..WG .. |
00003b50  66 6f 72 63 65 72 65 64  72 61 77 25 2c 2d 31 2c  |forceredraw%,-1,|
00003b60  65 72 72 62 6c 6b 25 21  34 2c 28 65 72 72 62 6c  |errblk%!4,(errbl|
00003b70  6b 25 21 31 36 29 2c 65  72 72 62 6c 6b 25 21 31  |k%!16),errblk%!1|
00003b80  32 2c 65 72 72 62 6c 6b  25 21 31 36 2b 33 36 0d  |2,errblk%!16+36.|
00003b90  02 58 06 20 e1 0d 02 59  04 0d 02 5a 04 0d 02 5b  |.X. ...Y...Z...[|
00003ba0  04 0d 02 5c 69 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...\i.----------|
00003bb0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003c00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 02 5d 04 0d 02  |----------..]...|
00003c10  5e 15 20 dd f2 63 68 65  63 6b 5f 69 63 6f 6e 5f  |^. ..check_icon_|
00003c20  62 61 72 0d 02 5f 22 20  6d 78 25 3d 21 71 25 3a  |bar.._" mx%=!q%:|
00003c30  6d 79 25 3d 71 25 21 34  3a 62 75 74 74 6f 6e 25  |my%=q%!4:button%|
00003c40  3d 71 25 21 38 0d 02 60  2f 20 e7 20 62 75 74 74  |=q%!8..`/ . butt|
00003c50  6f 6e 25 20 80 20 32 3a  f2 64 6f 5f 69 63 6f 6e  |on% . 2:.do_icon|
00003c60  5f 62 61 72 5f 6d 65 6e  75 28 6d 78 25 2c 6d 79  |_bar_menu(mx%,my|
00003c70  25 29 3a e1 0d 02 61 14  20 f2 66 72 6f 6e 74 28  |%):...a. .front(|
00003c80  6d 61 69 6e 5f 77 25 29  0d 02 62 23 20 c8 99 20  |main_w%)..b# .. |
00003c90  73 65 74 63 61 72 65 74  25 2c 6d 61 69 6e 5f 77  |setcaret%,main_w|
00003ca0  25 2c 2d 31 2c 30 2c 30  2c 31 30 0d 02 63 06 20  |%,-1,0,0,10..c. |
00003cb0  e1 0d 02 64 04 0d 02 65  1e 20 dd f2 64 6f 5f 69  |...d...e. ..do_i|
00003cc0  63 6f 6e 5f 62 61 72 5f  6d 65 6e 75 28 78 25 2c  |con_bar_menu(x%,|
00003cd0  79 25 29 0d 02 66 2f 20  e7 20 73 63 61 6e 5f 74  |y%)..f/ . scan_t|
00003ce0  69 6d 65 25 3d 30 3a 73  63 61 6e 5f 74 69 6d 65  |ime%=0:scan_time|
00003cf0  25 3d 31 30 30 3a 73 63  61 6e 5f 6b 65 79 73 25  |%=100:scan_keys%|
00003d00  3d 31 0d 02 67 1a 20 e3  20 6f 70 74 25 3d 30 b8  |=1..g. . opt%=0.|
00003d10  32 88 32 3a 50 25 3d 6d  61 69 6e 25 0d 02 68 0e  |2.2:P%=main%..h.|
00003d20  20 5b 6f 70 74 20 6f 70  74 25 0d 02 69 0d 2e 69  | [opt opt%..i..i|
00003d30  63 6f 6e 6d 65 6e 75 0d  02 6a 0f 20 65 71 75 73  |conmenu..j. equs|
00003d40  20 6d 65 6e 75 24 0d 02  6b 29 20 65 71 75 64 20  | menu$..k) equd |
00003d50  26 30 37 30 32 30 37 3a  65 71 75 64 20 32 30 38  |&070207:equd 208|
00003d60  3a 65 71 75 64 20 34 30  3a 65 71 75 64 20 30 0d  |:equd 40:equd 0.|
00003d70  02 6c 25 20 65 71 75 64  20 30 3a 65 71 75 64 20  |.l% equd 0:equd |
00003d80  69 6e 66 6f 25 3a 65 71  75 64 20 26 30 37 30 30  |info%:equd &0700|
00003d90  30 30 32 31 0d 02 6d 18  20 65 71 75 73 20 22 49  |0021..m. equs "I|
00003da0  6e 66 6f 20 20 20 20 20  20 20 20 22 0d 02 6e 30  |nfo        "..n0|
00003db0  20 65 71 75 64 20 73 63  61 6e 6e 69 6e 67 25 80  | equd scanning%.|
00003dc0  31 3a 65 71 75 64 20 69  62 6d 65 6e 75 3a 65 71  |1:equd ibmenu:eq|
00003dd0  75 64 20 26 30 37 30 30  30 30 32 31 0d 02 6f 18  |ud &07000021..o.|
00003de0  20 65 71 75 73 20 22 53  63 61 6e 6e 69 6e 67 20  | equs "Scanning |
00003df0  20 20 20 22 0d 02 70 26  20 65 71 75 64 20 30 3a  |   "..p& equd 0:|
00003e00  65 71 75 64 20 73 6f 6d  65 6e 75 3a 65 71 75 64  |equd somenu:equd|
00003e10  20 26 30 37 30 30 30 30  32 31 0d 02 71 18 20 65  | &07000021..q. e|
00003e20  71 75 73 20 22 53 6f 75  6e 64 20 76 6f 6c 75 6d  |qus "Sound volum|
00003e30  65 22 0d 02 72 24 20 65  71 75 64 20 26 38 30 3a  |e"..r$ equd &80:|
00003e40  65 71 75 64 20 2d 31 3a  65 71 75 64 20 26 30 37  |equd -1:equd &07|
00003e50  30 30 30 30 32 31 0d 02  73 18 20 65 71 75 73 20  |000021..s. equs |
00003e60  22 51 75 69 74 20 20 20  20 20 20 20 20 22 0d 02  |"Quit        "..|
00003e70  74 04 0d 02 75 0b 2e 69  62 6d 65 6e 75 0d 02 76  |t...u..ibmenu..v|
00003e80  1b 20 65 71 75 73 20 22  53 63 61 6e 6e 69 6e 67  |. equs "Scanning|
00003e90  22 3a 65 71 75 64 20 30  0d 02 77 29 20 65 71 75  |":equd 0..w) equ|
00003ea0  64 20 26 30 37 30 32 30  37 3a 65 71 75 64 20 32  |d &070207:equd 2|
00003eb0  30 38 3a 65 71 75 64 20  34 30 3a 65 71 75 64 20  |08:equd 40:equd |
00003ec0  30 0d 02 78 31 20 65 71  75 64 20 28 73 63 61 6e  |0..x1 equd (scan|
00003ed0  5f 6b 65 79 73 25 3d 32  29 80 31 3a 65 71 75 64  |_keys%=2).1:equd|
00003ee0  20 2d 31 3a 65 71 75 64  20 26 30 37 30 30 30 30  | -1:equd &070000|
00003ef0  32 31 0d 02 79 18 20 65  71 75 73 20 22 54 77 6f  |21..y. equs "Two|
00003f00  20 73 77 69 74 63 68 65  73 22 0d 02 7a 29 20 65  | switches"..z) e|
00003f10  71 75 64 20 26 38 30 3a  65 71 75 64 20 69 62 6d  |qud &80:equd ibm|
00003f20  65 6e 75 31 3a 65 71 75  64 20 26 30 37 30 30 30  |enu1:equd &07000|
00003f30  30 32 31 0d 02 7b 18 20  65 71 75 73 20 22 53 70  |021..{. equs "Sp|
00003f40  65 65 64 20 20 20 20 20  20 20 22 0d 02 7c 04 0d  |eed       "..|..|
00003f50  02 7d 0b 2e 73 6f 6d 65  6e 75 0d 02 7e 18 20 65  |.}..somenu..~. e|
00003f60  71 75 73 20 22 53 6f 75  6e 64 20 56 6f 6c 75 6d  |qus "Sound Volum|
00003f70  65 22 0d 02 7f 29 20 65  71 75 64 20 26 30 37 30  |e"...) equd &070|
00003f80  32 30 37 3a 65 71 75 64  20 32 30 38 3a 65 71 75  |207:equd 208:equ|
00003f90  64 20 34 30 3a 65 71 75  64 20 30 0d 02 80 34 20  |d 40:equd 0...4 |
00003fa0  65 71 75 64 20 28 73 6f  75 6e 64 5f 76 6f 6c 25  |equd (sound_vol%|
00003fb0  3d 26 31 30 46 29 80 31  3a 65 71 75 64 20 2d 31  |=&10F).1:equd -1|
00003fc0  3a 65 71 75 64 20 26 30  37 30 30 30 30 32 31 0d  |:equd &07000021.|
00003fd0  02 81 18 20 65 71 75 73  20 22 4f 66 66 20 20 20  |... equs "Off   |
00003fe0  20 20 20 20 20 20 22 0d  02 82 34 20 65 71 75 64  |      "...4 equd|
00003ff0  20 28 73 6f 75 6e 64 5f  76 6f 6c 25 3d 26 31 34  | (sound_vol%=&14|
00004000  46 29 80 31 3a 65 71 75  64 20 2d 31 3a 65 71 75  |F).1:equd -1:equ|
00004010  64 20 26 30 37 30 30 30  30 32 31 0d 02 83 18 20  |d &07000021.... |
00004020  65 71 75 73 20 22 51 75  69 65 74 20 20 20 20 20  |equs "Quiet     |
00004030  20 20 22 0d 02 84 3c 20  65 71 75 64 20 26 38 30  |  "...< equd &80|
00004040  20 84 20 28 28 73 6f 75  6e 64 5f 76 6f 6c 25 3d  | . ((sound_vol%=|
00004050  26 31 37 46 29 80 31 29  3a 65 71 75 64 20 2d 31  |&17F).1):equd -1|
00004060  3a 65 71 75 64 20 26 30  37 30 30 30 30 32 31 0d  |:equd &07000021.|
00004070  02 85 18 20 65 71 75 73  20 22 4c 6f 75 64 20 20  |... equs "Loud  |
00004080  20 20 20 20 20 20 22 0d  02 86 04 0d 02 87 0c 2e  |      ".........|
00004090  69 62 6d 65 6e 75 31 0d  02 88 21 20 65 71 75 73  |ibmenu1...! equs|
000040a0  20 22 53 65 63 6f 6e 64  73 22 3a 65 71 75 62 20  | "Seconds":equb |
000040b0  30 3a 65 71 75 64 20 30  0d 02 89 29 20 65 71 75  |0:equd 0...) equ|
000040c0  64 20 26 30 37 30 32 30  37 3a 65 71 75 64 20 32  |d &070207:equd 2|
000040d0  30 38 3a 65 71 75 64 20  34 30 3a 65 71 75 64 20  |08:equd 40:equd |
000040e0  30 0d 02 8a 24 20 65 71  75 64 20 26 38 34 3a 65  |0...$ equd &84:e|
000040f0  71 75 64 20 2d 31 3a 65  71 75 64 20 26 30 37 30  |qud -1:equd &070|
00004100  30 30 31 32 31 0d 02 8b  22 20 65 71 75 64 20 69  |00121..." equd i|
00004110  62 6d 65 73 73 3a 65 71  75 64 20 69 62 76 61 6c  |bmess:equd ibval|
00004120  3a 65 71 75 64 20 38 0d  02 8c 04 0d 02 8d 1a 2e  |:equd 8.........|
00004130  69 62 76 61 6c 20 65 71  75 73 20 22 61 30 2d 39  |ibval equs "a0-9|
00004140  2e 22 2b bd 30 0d 02 8e  27 2e 69 62 6d 65 73 73  |."+.0...'.ibmess|
00004150  20 65 71 75 73 20 c3 28  73 63 61 6e 5f 74 69 6d  | equs .(scan_tim|
00004160  65 25 2f 31 30 30 29 2b  bd 28 30 29 0d 02 8f 04  |e%/100)+.(0)....|
00004170  0d 02 90 08 20 5d 3a ed  0d 02 91 04 0d 02 92 25  |.... ]:........%|
00004180  20 c8 99 20 63 72 65 61  74 65 6d 65 6e 75 25 2c  | .. createmenu%,|
00004190  2c 6d 61 69 6e 25 2c 6d  78 25 2d 31 36 2c 32 36  |,main%,mx%-16,26|
000041a0  30 0d 02 93 0c 20 6d 65  6e 75 25 3d 35 0d 02 94  |0.... menu%=5...|
000041b0  06 20 e1 0d 02 95 04 0d  02 96 69 f4 2d 2d 2d 2d  |. ........i.----|
000041c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004220  0d 02 97 04 0d 02 98 14  20 dd f2 69 63 6f 6e 5f  |........ ..icon_|
00004230  62 61 72 5f 6d 65 6e 75  0d 02 99 09 20 ea 20 63  |bar_menu.... . c|
00004240  25 0d 02 9a 0d 20 c8 8e  20 21 71 25 20 ca 0d 02  |%.... .. !q% ...|
00004250  9b 0a 20 20 20 c9 20 31  0d 02 9c 12 20 20 20 20  |..   . 1....    |
00004260  20 c8 8e 20 71 25 21 34  20 ca 0d 02 9d 27 20 20  | .. q%!4 ....'  |
00004270  20 20 20 20 20 c9 20 2d  31 3a 73 63 61 6e 6e 69  |     . -1:scanni|
00004280  6e 67 25 3d 73 63 61 6e  6e 69 6e 67 25 20 82 20  |ng%=scanning% . |
00004290  b9 0d 02 9e 0f 20 20 20  20 20 20 20 c9 20 30 3a  |.....       . 0:|
000042a0  0d 02 9f 37 20 20 20 20  20 20 20 20 20 e7 20 73  |...7         . s|
000042b0  63 61 6e 5f 6b 65 79 73  25 3d 32 20 73 63 61 6e  |can_keys%=2 scan|
000042c0  5f 6b 65 79 73 25 3d 31  20 8b 20 73 63 61 6e 5f  |_keys%=1 . scan_|
000042d0  6b 65 79 73 25 3d 32 0d  02 a0 18 20 20 20 20 20  |keys%=2....     |
000042e0  20 20 20 20 73 63 61 6e  6e 69 6e 67 25 3d b9 0d  |    scanning%=..|
000042f0  02 a1 0f 20 20 20 20 20  20 20 c9 20 31 3a 0d 02  |...       . 1:..|
00004300  a2 29 20 20 20 20 20 20  20 20 20 74 25 3d 28 bb  |.)         t%=(.|
00004310  28 a4 73 74 72 69 6e 67  30 28 69 62 6d 65 73 73  |(.string0(ibmess|
00004320  29 29 29 2a 31 30 30 0d  02 a3 1f 20 20 20 20 20  |)))*100....     |
00004330  20 20 20 20 e7 20 74 25  20 73 63 61 6e 5f 74 69  |    . t% scan_ti|
00004340  6d 65 25 3d 74 25 0d 02  a4 18 20 20 20 20 20 20  |me%=t%....      |
00004350  20 20 20 73 63 61 6e 6e  69 6e 67 25 3d b9 0d 02  |   scanning%=...|
00004360  a5 0a 20 20 20 20 20 cb  0d 02 a6 0b 20 20 20 c9  |..     .....   .|
00004370  20 32 3a 0d 02 a7 12 20  20 20 20 20 c8 8e 20 71  | 2:....     .. q|
00004380  25 21 34 20 ca 0d 02 a8  1e 20 20 20 20 20 20 20  |%!4 .....       |
00004390  c9 20 30 3a 73 6f 75 6e  64 5f 76 6f 6c 25 3d 26  |. 0:sound_vol%=&|
000043a0  31 30 46 0d 02 a9 1e 20  20 20 20 20 20 20 c9 20  |10F....       . |
000043b0  31 3a 73 6f 75 6e 64 5f  76 6f 6c 25 3d 26 31 34  |1:sound_vol%=&14|
000043c0  46 0d 02 aa 1e 20 20 20  20 20 20 20 c9 20 32 3a  |F....       . 2:|
000043d0  73 6f 75 6e 64 5f 76 6f  6c 25 3d 26 31 37 46 0d  |sound_vol%=&17F.|
000043e0  02 ab 0a 20 20 20 20 20  cb 0d 02 ac 30 20 20 20  |...     ....0   |
000043f0  c9 20 33 3a e7 20 6d 6f  64 69 66 69 65 64 25 20  |. 3:. modified% |
00004400  f2 6f 70 65 6e 5f 71 75  65 72 79 28 22 22 29 20  |.open_query("") |
00004410  8b 20 f2 66 69 6e 69 73  68 0d 02 ad 06 20 cb 0d  |. .finish.... ..|
00004420  02 ae 37 20 c8 99 20 67  65 74 70 25 2c 2c 71 25  |..7 .. getp%,,q%|
00004430  3a e7 20 71 25 21 38 20  80 20 31 20 f2 64 6f 5f  |:. q%!8 . 1 .do_|
00004440  69 63 6f 6e 5f 62 61 72  5f 6d 65 6e 75 28 6d 78  |icon_bar_menu(mx|
00004450  25 2c 6d 79 25 29 0d 02  af 06 20 e1 0d 02 b0 04  |%,my%).... .....|
00004460  0d 02 b1 6d f4 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...m.-----------|
00004470  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000044c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 02 b2  |-------------...|
000044d0  04 0d 02 b3 31 20 dd f2  64 72 61 77 5f 6d 61 69  |....1 ..draw_mai|
000044e0  6e 5f 77 28 77 78 25 2c  77 79 25 2c 77 78 31 25  |n_w(wx%,wy%,wx1%|
000044f0  2c 77 79 31 25 2c 6f 66  66 78 25 2c 6f 66 66 79  |,wy1%,offx%,offy|
00004500  25 29 0d 02 b4 2f 20 c8  99 20 67 65 74 65 6e 74  |%).../ .. getent|
00004510  72 79 25 2c 73 5f 70 61  67 65 73 25 2c 63 75 72  |ry%,s_pages%,cur|
00004520  72 65 6e 74 5f 70 61 67  65 25 20 b8 20 61 64 72  |rent_page% . adr|
00004530  25 0d 02 b5 25 20 73 74  61 63 6b 25 3d 61 64 72  |%...% stack%=adr|
00004540  25 21 32 30 3a 70 61 67  65 5f 63 6f 6c 25 3d 61  |%!20:page_col%=a|
00004550  64 72 25 21 32 38 0d 02  b6 45 20 c8 99 20 73 65  |dr%!28...E .. se|
00004560  74 63 6f 6c 25 2c 70 61  67 65 5f 63 6f 6c 25 3a  |tcol%,page_col%:|
00004570  c8 93 20 c8 90 20 77 78  25 2b 6f 66 66 78 25 2c  |.. .. wx%+offx%,|
00004580  77 79 25 2b 6f 66 66 79  25 2c 77 78 31 25 2d 77  |wy%+offy%,wx1%-w|
00004590  78 25 2c 77 79 31 25 2d  77 79 25 0d 02 b7 1e 20  |x%,wy1%-wy%.... |
000045a0  c8 99 20 6e 65 6e 74 72  69 65 73 25 2c 73 74 61  |.. nentries%,sta|
000045b0  63 6b 25 20 b8 20 6e 6f  25 0d 02 b8 0c 20 e7 20  |ck% . no%.... . |
000045c0  6e 6f 25 20 8c 0d 02 b9  18 20 20 20 e3 20 6f 62  |no% .....   . ob|
000045d0  6a 65 63 74 25 3d 31 20  b8 20 6e 6f 25 0d 02 ba  |ject%=1 . no%...|
000045e0  30 20 20 20 20 20 c8 99  20 67 65 74 6e 74 68 25  |0     .. getnth%|
000045f0  2c 73 74 61 63 6b 25 2c  6f 62 6a 65 63 74 25 20  |,stack%,object% |
00004600  b8 20 61 64 72 25 2c 74  6f 6b 65 6e 25 0d 02 bb  |. adr%,token%...|
00004610  45 20 20 20 20 20 78 25  3d 61 64 72 25 21 31 32  |E     x%=adr%!12|
00004620  3a 79 25 3d 61 64 72 25  21 31 36 3a 78 31 25 3d  |:y%=adr%!16:x1%=|
00004630  61 64 72 25 21 32 30 3a  79 31 25 3d 61 64 72 25  |adr%!20:y1%=adr%|
00004640  21 32 34 3a 66 6c 61 67  73 25 3d 61 64 72 25 21  |!24:flags%=adr%!|
00004650  33 36 0d 02 bc 43 20 20  20 20 20 e7 20 78 25 3c  |36...C     . x%<|
00004660  77 78 31 25 20 80 20 78  31 25 3e 77 78 25 20 80  |wx1% . x1%>wx% .|
00004670  20 79 25 3c 77 79 31 25  20 80 20 79 31 25 3e 77  | y%<wy1% . y1%>w|
00004680  79 25 20 80 20 28 66 6c  61 67 73 25 80 31 32 38  |y% . (flags%.128|
00004690  29 3d 30 20 8c 0d 02 bd  16 20 20 20 20 20 20 20  |)=0 .....       |
000046a0  c8 8e 20 61 64 72 25 21  34 20 ca 0d 02 be 3c 20  |.. adr%!4 ....< |
000046b0  20 20 20 20 20 20 20 20  c9 20 73 5f 74 65 78 74  |        . s_text|
000046c0  25 3a f2 64 72 61 77 5f  74 65 78 74 28 73 74 61  |%:.draw_text(sta|
000046d0  63 6b 25 2c 74 6f 6b 65  6e 25 2c 6f 66 66 78 25  |ck%,token%,offx%|
000046e0  2c 6f 66 66 79 25 29 0d  02 bf 65 20 20 20 20 20  |,offy%)...e     |
000046f0  20 20 20 20 c9 20 73 5f  73 70 72 69 74 65 73 25  |    . s_sprites%|
00004700  2c 73 5f 64 72 61 77 25  3a f2 64 72 61 77 5f 70  |,s_draw%:.draw_p|
00004710  69 63 74 75 72 65 28 61  64 72 25 21 34 2c 61 64  |icture(adr%!4,ad|
00004720  72 25 21 38 2c 78 25 2b  6f 66 66 78 25 2c 79 25  |r%!8,x%+offx%,y%|
00004730  2b 6f 66 66 79 25 2c 78  31 25 2d 78 25 2c 79 31  |+offy%,x1%-x%,y1|
00004740  25 2d 79 25 2c 66 6c 61  67 73 25 29 0d 02 c0 0c  |%-y%,flags%)....|
00004750  20 20 20 20 20 20 20 cb  0d 02 c1 0a 20 20 20 20  |       .....    |
00004760  20 cd 0d 02 c2 08 20 20  20 ed 0d 02 c3 06 20 cd  | .....   ..... .|
00004770  0d 02 c4 06 20 e1 0d 02  c5 04 0d 02 c6 1a 20 dd  |.... ......... .|
00004780  a4 73 74 72 69 70 5f 73  70 61 63 65 73 28 74 65  |.strip_spaces(te|
00004790  78 74 24 29 0d 02 c7 06  20 f5 0d 02 c8 29 20 20  |xt$).... ....)  |
000047a0  20 e7 20 97 74 65 78 74  24 3d 33 32 20 74 65 78  | . .text$=32 tex|
000047b0  74 24 3d c2 74 65 78 74  24 2c a9 74 65 78 74 24  |t$=.text$,.text$|
000047c0  2d 31 29 0d 02 c9 10 20  fd 97 74 65 78 74 24 3c  |-1).... ..text$<|
000047d0  3e 33 32 0d 02 ca 0b 20  3d 74 65 78 74 24 0d 02  |>32.... =text$..|
000047e0  cb 04 0d 02 cc 27 20 dd  a4 6c 6f 77 65 72 5f 63  |.....' ..lower_c|
000047f0  61 73 65 28 74 65 78 74  24 29 3a e7 20 74 65 78  |ase(text$):. tex|
00004800  74 24 3d 22 22 3a 3d 22  22 0d 02 cd 0f 20 ea 20  |t$="":="".... . |
00004810  74 24 2c 74 25 2c 63 25  0d 02 ce 11 20 e3 74 25  |t$,t%,c%.... .t%|
00004820  3d 31 b8 a9 74 65 78 74  24 0d 02 cf 19 20 20 20  |=1..text$....   |
00004830  63 25 3d 97 28 c1 74 65  78 74 24 2c 74 25 2c 31  |c%=.(.text$,t%,1|
00004840  29 29 0d 02 d0 1d 20 20  20 e7 20 63 25 3e 36 34  |))....   . c%>64|
00004850  20 80 20 63 25 3c 39 31  20 63 25 2b 3d 33 32 0d  | . c%<91 c%+=32.|
00004860  02 d1 10 20 20 20 74 24  3d 74 24 2b bd 63 25 0d  |...   t$=t$+.c%.|
00004870  02 d2 06 20 ed 0d 02 d3  08 20 3d 74 24 0d 02 d4  |... ..... =t$...|
00004880  04 0d 02 d5 69 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....i.----------|
00004890  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000048e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 02 d6 04 0d 02  |----------......|
000048f0  d7 2b 20 dd f2 64 72 61  77 5f 74 65 78 74 28 73  |.+ ..draw_text(s|
00004900  74 61 63 6b 25 2c 74 6f  6b 65 6e 25 2c 6f 66 66  |tack%,token%,off|
00004910  78 25 2c 6f 66 66 79 25  29 0d 02 d8 64 20 e7 20  |x%,offy%)...d . |
00004920  73 70 65 61 6b 69 6e 67  5f 74 65 78 74 25 20 80  |speaking_text% .|
00004930  20 73 70 65 61 6b 5f 74  6f 6b 65 6e 25 3d 74 6f  | speak_token%=to|
00004940  6b 65 6e 25 20 f2 68 69  67 68 6c 69 67 68 74 5f  |ken% .highlight_|
00004950  74 65 78 74 28 73 74 61  63 6b 25 2c 74 6f 6b 65  |text(stack%,toke|
00004960  6e 25 2c 6f 66 66 78 25  2c 6f 66 66 79 25 2c 73  |n%,offx%,offy%,s|
00004970  70 65 61 6b 5f 77 6f 72  64 25 29 3a e1 0d 02 d9  |peak_word%):....|
00004980  26 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |& .. getentry%,s|
00004990  74 61 63 6b 25 2c 74 6f  6b 65 6e 25 20 b8 20 61  |tack%,token% . a|
000049a0  64 72 25 0d 02 da 17 20  78 25 3d 28 61 64 72 25  |dr%.... x%=(adr%|
000049b0  21 31 32 29 2b 6f 66 66  78 25 0d 02 db 17 20 79  |!12)+offx%.... y|
000049c0  25 3d 28 61 64 72 25 21  31 36 29 2b 6f 66 66 79  |%=(adr%!16)+offy|
000049d0  25 0d 02 dc 22 20 78 31  25 3d 28 61 64 72 25 21  |%..." x1%=(adr%!|
000049e0  32 30 29 2d 28 31 3c 3c  78 65 66 25 29 2b 6f 66  |20)-(1<<xef%)+of|
000049f0  66 78 25 0d 02 dd 22 20  79 31 25 3d 28 61 64 72  |fx%..." y1%=(adr|
00004a00  25 21 32 34 29 2d 28 31  3c 3c 79 65 66 25 29 2b  |%!24)-(1<<yef%)+|
00004a10  6f 66 66 79 25 0d 02 de  2e 20 66 6c 61 67 73 25  |offy%.... flags%|
00004a20  3d 61 64 72 25 21 33 36  3a 66 6f 6e 74 25 3d 61  |=adr%!36:font%=a|
00004a30  64 72 25 21 34 30 3a 62  5f 73 25 3d 61 64 72 25  |dr%!40:b_s%=adr%|
00004a40  21 33 32 0d 02 df 30 20  66 63 6f 6c 25 3d 61 64  |!32...0 fcol%=ad|
00004a50  72 25 21 35 32 3a e7 20  66 63 6f 6c 25 20 80 20  |r%!52:. fcol% . |
00004a60  26 46 46 20 66 63 6f 6c  25 3d 70 61 67 65 5f 63  |&FF fcol%=page_c|
00004a70  6f 6c 25 0d 02 e0 12 20  62 63 6f 6c 25 3d 61 64  |ol%.... bcol%=ad|
00004a80  72 25 21 35 36 0d 02 e1  3b 20 e7 20 66 6c 61 67  |r%!56...; . flag|
00004a90  73 25 80 31 20 66 63 6f  6c 25 3d 66 63 6f 6c 25  |s%.1 fcol%=fcol%|
00004aa0  82 26 46 46 46 46 46 46  30 30 3a 62 63 6f 6c 25  |.&FFFFFF00:bcol%|
00004ab0  3d 62 63 6f 6c 25 82 26  46 46 46 46 46 46 30 30  |=bcol%.&FFFFFF00|
00004ac0  0d 02 e2 31 20 f2 64 72  61 77 5f 62 6f 72 64 65  |...1 .draw_borde|
00004ad0  72 28 62 5f 73 25 2c 66  63 6f 6c 25 2c 62 63 6f  |r(b_s%,fcol%,bco|
00004ae0  6c 25 2c 78 25 2c 79 25  2c 78 31 25 2c 79 31 25  |l%,x%,y%,x1%,y1%|
00004af0  29 0d 02 e3 12 20 78 25  2b 3d 28 31 3c 3c 78 65  |).... x%+=(1<<xe|
00004b00  66 25 29 0d 02 e4 13 20  78 31 25 2d 3d 28 31 3c  |f%).... x1%-=(1<|
00004b10  3c 78 65 66 25 29 0d 02  e5 12 20 79 25 2b 3d 28  |<xef%).... y%+=(|
00004b20  31 3c 3c 79 65 66 25 29  0d 02 e6 13 20 79 31 25  |1<<yef%).... y1%|
00004b30  2d 3d 28 31 3c 3c 79 65  66 25 29 0d 02 e7 07 ea  |-=(1<<yef%).....|
00004b40  20 85 0d 02 e8 15 ee 20  85 20 ea 20 f7 20 85 3a  | ...... . . . .:|
00004b50  66 6f 6e 74 25 3d 30 0d  02 e9 0e 20 e7 20 66 6f  |font%=0.... . fo|
00004b60  6e 74 25 20 8c 0d 02 ea  27 20 20 20 c8 99 20 67  |nt% ....'   .. g|
00004b70  65 74 65 6e 74 72 79 25  2c 73 5f 66 6f 6e 74 73  |etentry%,s_fonts|
00004b80  25 2c 66 6f 6e 74 25 20  b8 20 74 25 0d 02 eb 31  |%,font% . t%...1|
00004b90  20 20 20 c8 99 20 66 69  6e 64 66 6f 6e 74 25 2c  |   .. findfont%,|
00004ba0  2c 74 25 2b 34 2c 61 64  72 25 21 34 34 2c 61 64  |,t%+4,adr%!44,ad|
00004bb0  72 25 21 34 38 20 b8 20  66 6f 6e 74 25 0d 02 ec  |r%!48 . font%...|
00004bc0  06 20 cd 0d 02 ed 0e 20  e7 20 66 6f 6e 74 25 20  |. ..... . font% |
00004bd0  8c 0d 02 ee 20 20 20 20  e7 20 62 63 6f 6c 25 20  |....    . bcol% |
00004be0  80 20 26 46 46 20 62 63  6f 6c 25 3d 66 63 6f 6c  |. &FF bcol%=fcol|
00004bf0  25 0d 02 ef 3b 20 20 20  c8 99 20 22 43 6f 6c 6f  |%...;   .. "Colo|
00004c00  75 72 54 72 61 6e 73 5f  53 65 74 46 6f 6e 74 43  |urTrans_SetFontC|
00004c10  6f 6c 6f 75 72 73 22 2c  66 6f 6e 74 25 2c 62 63  |olours",font%,bc|
00004c20  6f 6c 25 2c 66 63 6f 6c  25 2c 31 34 0d 02 f0 2e  |ol%,fcol%,14....|
00004c30  20 20 20 c8 99 20 66 6f  6e 74 69 6e 66 6f 25 2c  |   .. fontinfo%,|
00004c40  66 6f 6e 74 25 20 b8 20  2c 63 78 25 2c 63 79 25  |font% . ,cx%,cy%|
00004c50  2c 63 78 31 25 2c 63 79  31 25 0d 02 f1 06 20 cc  |,cx1%,cy1%.... .|
00004c60  0d 02 f2 3e 20 20 20 63  78 25 3d 2d 28 31 3c 3c  |...>   cx%=-(1<<|
00004c70  78 65 66 25 29 3a 63 79  25 3d 2d 28 31 3c 3c 79  |xef%):cy%=-(1<<y|
00004c80  65 66 25 29 3a 63 78 31  25 3d 38 3c 3c 78 65 66  |ef%):cx1%=8<<xef|
00004c90  25 3a 63 79 31 25 3d 38  3c 3c 79 65 66 25 0d 02  |%:cy1%=8<<yef%..|
00004ca0  f3 06 20 cd 0d 02 f4 16  20 74 65 78 74 5f 68 65  |.. ..... text_he|
00004cb0  69 67 68 74 25 3d 63 79  31 25 0d 02 f5 28 20 c8  |ight%=cy1%...( .|
00004cc0  99 20 67 65 74 65 6e 74  72 79 25 2c 73 5f 74 65  |. getentry%,s_te|
00004cd0  78 74 25 2c 61 64 72 25  21 38 20 b8 20 74 65 78  |xt%,adr%!8 . tex|
00004ce0  74 25 0d 02 f6 0d 20 74  65 78 74 25 2b 3d 34 0d  |t%.... text%+=4.|
00004cf0  02 f7 13 20 74 65 78 74  5f 6f 66 66 73 65 74 25  |... text_offset%|
00004d00  3d 30 0d 02 f8 2c 20 70  78 25 3d 78 25 2b 6d 61  |=0..., px%=x%+ma|
00004d10  72 67 69 6e 25 3a 70 79  25 3d 79 31 25 2d 74 65  |rgin%:py%=y1%-te|
00004d20  78 74 5f 68 65 69 67 68  74 25 2b 63 79 25 0d 02  |xt_height%+cy%..|
00004d30  f9 24 20 63 65 6e 74 72  65 25 3d a3 3a 72 69 67  |.$ centre%=.:rig|
00004d40  68 74 25 3d a3 3a 75 6e  64 65 72 6c 69 6e 65 25  |ht%=.:underline%|
00004d50  3d a3 0d 02 fa 1b 20 e7  20 66 6c 61 67 73 25 20  |=..... . flags% |
00004d60  80 20 38 20 63 65 6e 74  72 65 25 3d b9 0d 02 fb  |. 8 centre%=....|
00004d70  1b 20 e7 20 66 6c 61 67  73 25 20 80 20 31 36 20  |. . flags% . 16 |
00004d80  72 69 67 68 74 25 3d b9  0d 02 fc 1f 20 e7 20 66  |right%=..... . f|
00004d90  6c 61 67 73 25 20 80 20  33 32 20 75 6e 64 65 72  |lags% . 32 under|
00004da0  6c 69 6e 65 25 3d b9 0d  02 fd 06 20 f5 0d 02 fe  |line%=..... ....|
00004db0  1e 20 20 20 c8 8e 20 74  65 78 74 5f 6f 66 66 73  |.   .. text_offs|
00004dc0  65 74 25 3f 74 65 78 74  25 20 ca 0d 02 ff 0d 20  |et%?text% ..... |
00004dd0  20 20 20 20 c9 20 30 3a  0d 03 00 2f 20 20 20 20  |    . 0:.../    |
00004de0  20 c9 20 31 33 3a 70 79  25 2d 3d 74 65 78 74 5f  | . 13:py%-=text_|
00004df0  68 65 69 67 68 74 25 3a  74 65 78 74 5f 6f 66 66  |height%:text_off|
00004e00  73 65 74 25 2b 3d 31 0d  03 01 0a 20 20 20 20 20  |set%+=1....     |
00004e10  7f 0d 03 02 2d 20 20 20  20 20 20 20 74 65 78 74  |....-       text|
00004e20  24 3d a4 73 74 72 69 6e  67 30 28 74 65 78 74 25  |$=.string0(text%|
00004e30  2b 74 65 78 74 5f 6f 66  66 73 65 74 25 29 0d 03  |+text_offset%)..|
00004e40  03 1f 20 20 20 20 20 20  20 74 65 78 74 5f 6f 66  |..       text_of|
00004e50  66 73 65 74 25 2b 3d a9  74 65 78 74 24 0d 03 04  |fset%+=.text$...|
00004e60  14 20 20 20 20 20 20 20  e7 20 66 6f 6e 74 25 20  |.       . font% |
00004e70  8c 0d 03 05 40 20 20 20  20 20 20 20 20 20 c8 99  |....@         ..|
00004e80  20 73 74 72 69 6e 67 77  69 64 74 68 25 2c 2c 74  | stringwidth%,,t|
00004e90  65 78 74 24 2c 31 3c 3c  33 30 2c 31 3c 3c 33 30  |ext$,1<<30,1<<30|
00004ea0  2c 2d 31 2c a9 74 65 78  74 24 20 b8 20 2c 2c 77  |,-1,.text$ . ,,w|
00004eb0  25 0d 03 06 26 20 20 20  20 20 20 20 20 20 c8 99  |%...&         ..|
00004ec0  20 63 6f 6e 76 65 72 74  74 6f 6f 73 25 2c 2c 77  | converttoos%,,w|
00004ed0  25 20 b8 20 2c 77 25 0d  03 07 2d 20 20 20 20 20  |% . ,w%...-     |
00004ee0  20 20 20 20 e7 20 63 65  6e 74 72 65 25 20 70 78  |    . centre% px|
00004ef0  25 3d 78 25 2b 28 78 31  25 2d 78 25 29 81 32 2d  |%=x%+(x1%-x%).2-|
00004f00  77 25 81 32 0d 03 08 28  20 20 20 20 20 20 20 20  |w%.2...(        |
00004f10  20 e7 20 72 69 67 68 74  25 20 70 78 25 3d 78 31  | . right% px%=x1|
00004f20  25 2d 77 25 2d 6d 61 72  67 69 6e 25 0d 03 09 36  |%-w%-margin%...6|
00004f30  20 20 20 20 20 20 20 20  20 e7 20 75 6e 64 65 72  |         . under|
00004f40  6c 69 6e 65 25 20 74 65  78 74 24 3d bd 28 32 35  |line% text$=.(25|
00004f50  29 2b bd 28 31 29 2b bd  28 31 36 29 2b 74 65 78  |)+.(1)+.(16)+tex|
00004f60  74 24 0d 03 0a 2e 20 20  20 20 20 20 20 20 20 c8  |t$....         .|
00004f70  99 20 70 61 69 6e 74 25  2c 2c 74 65 78 74 24 2c  |. paint%,,text$,|
00004f80  31 3c 3c 34 2c 70 78 25  2c 70 79 25 2d 63 79 25  |1<<4,px%,py%-cy%|
00004f90  0d 03 0b 0c 20 20 20 20  20 20 20 cc 0d 03 0c 1b  |....       .....|
00004fa0  20 20 20 20 20 20 20 20  20 77 25 3d a9 74 65 78  |         w%=.tex|
00004fb0  74 24 2a 63 78 31 25 0d  03 0d 2d 20 20 20 20 20  |t$*cx1%...-     |
00004fc0  20 20 20 20 e7 20 63 65  6e 74 72 65 25 20 70 78  |    . centre% px|
00004fd0  25 3d 78 25 2b 28 78 31  25 2d 78 25 29 81 32 2d  |%=x%+(x1%-x%).2-|
00004fe0  77 25 81 32 0d 03 0e 28  20 20 20 20 20 20 20 20  |w%.2...(        |
00004ff0  20 e7 20 72 69 67 68 74  25 20 70 78 25 3d 78 31  | . right% px%=x1|
00005000  25 2d 77 25 2d 6d 61 72  67 69 6e 25 0d 03 0f 33  |%-w%-margin%...3|
00005010  20 20 20 20 20 20 20 20  20 c8 99 20 73 65 74 63  |         .. setc|
00005020  6f 6c 25 2c 66 63 6f 6c  25 3a ec 20 70 78 25 2c  |ol%,fcol%:. px%,|
00005030  70 79 25 2b 63 79 31 25  3a f1 74 65 78 74 24 0d  |py%+cy1%:.text$.|
00005040  03 10 38 20 20 20 20 20  20 20 20 20 e7 20 75 6e  |..8         . un|
00005050  64 65 72 6c 69 6e 65 25  20 ec 20 70 78 25 2c 70  |derline% . px%,p|
00005060  79 25 2d 63 79 25 3a f0  31 2c 63 78 31 25 2a a9  |y%-cy%:.1,cx1%*.|
00005070  74 65 78 74 24 2c 30 0d  03 11 0c 20 20 20 20 20  |text$,0....     |
00005080  20 20 cd 0d 03 12 08 20  20 20 cb 0d 03 13 1b 20  |  .....   ..... |
00005090  fd 20 74 65 78 74 5f 6f  66 66 73 65 74 25 3f 74  |. text_offset%?t|
000050a0  65 78 74 25 3d 30 0d 03  14 1f 20 e7 20 66 6f 6e  |ext%=0.... . fon|
000050b0  74 25 20 c8 99 20 6c 6f  73 65 66 6f 6e 74 25 2c  |t% .. losefont%,|
000050c0  66 6f 6e 74 25 0d 03 15  06 20 e1 0d 03 16 04 0d  |font%.... ......|
000050d0  03 17 33 20 dd f2 64 72  61 77 5f 62 6f 72 64 65  |..3 ..draw_borde|
000050e0  72 28 73 74 79 6c 65 25  2c 63 6f 6c 25 2c 62 63  |r(style%,col%,bc|
000050f0  6f 6c 25 2c 78 25 2c 79  25 2c 78 31 25 2c 79 31  |ol%,x%,y%,x1%,y1|
00005100  25 29 0d 03 18 3f 20 e7  20 28 62 63 6f 6c 25 80  |%)...? . (bcol%.|
00005110  26 46 46 29 3d 30 20 c8  99 20 73 65 74 63 6f 6c  |&FF)=0 .. setcol|
00005120  25 2c 62 63 6f 6c 25 3a  c8 93 20 c8 90 20 78 25  |%,bcol%:.. .. x%|
00005130  2c 79 25 2c 78 31 25 2d  78 25 2c 79 31 25 2d 79  |,y%,x1%-x%,y1%-y|
00005140  25 0d 03 19 10 20 c8 8e  20 73 74 79 6c 65 25 20  |%.... .. style% |
00005150  ca 0d 03 1a 0a 20 20 20  c9 20 31 0d 03 1b 18 20  |.....   . 1.... |
00005160  20 20 20 20 c8 99 20 73  65 74 63 6f 6c 25 2c 63  |    .. setcol%,c|
00005170  6f 6c 25 0d 03 1c 1f 20  20 20 20 20 c8 93 20 78  |ol%....     .. x|
00005180  25 2c 79 25 2c 78 31 25  2d 78 25 2c 79 31 25 2d  |%,y%,x1%-x%,y1%-|
00005190  79 25 0d 03 1d 11 20 20  20 c9 20 32 3a f4 20 62  |y%....   . 2:. b|
000051a0  6f 6c 64 0d 03 1e 1d 20  20 20 20 20 c8 99 20 73  |old....     .. s|
000051b0  65 74 63 6f 6c 25 2c 26  46 46 46 46 46 46 30 30  |etcol%,&FFFFFF00|
000051c0  0d 03 1f 23 20 20 20 20  20 ec 20 78 25 2c 79 25  |...#     . x%,y%|
000051d0  3a df 20 78 25 2c 79 31  25 3a df 20 78 31 25 2c  |:. x%,y1%:. x1%,|
000051e0  79 31 25 0d 03 20 27 20  20 20 20 20 c8 99 20 73  |y1%.. '     .. s|
000051f0  65 74 63 6f 6c 25 2c 21  28 77 69 6d 70 5f 70 61  |etcol%,!(wimp_pa|
00005200  6c 65 74 74 65 25 2b 31  36 29 0d 03 21 19 20 20  |lette%+16)..!.  |
00005210  20 20 20 df 20 78 31 25  2c 79 25 3a df 20 78 25  |   . x1%,y%:. x%|
00005220  2c 79 25 0d 03 22 12 20  20 20 c9 20 33 3a f4 20  |,y%..".   . 3:. |
00005230  69 6e 73 65 74 0d 03 23  27 20 20 20 20 20 c8 99  |inset..#'     ..|
00005240  20 73 65 74 63 6f 6c 25  2c 21 28 77 69 6d 70 5f  | setcol%,!(wimp_|
00005250  70 61 6c 65 74 74 65 25  2b 31 36 29 0d 03 24 23  |palette%+16)..$#|
00005260  20 20 20 20 20 ec 20 78  25 2c 79 25 3a df 20 78  |     . x%,y%:. x|
00005270  25 2c 79 31 25 3a df 20  78 31 25 2c 79 31 25 0d  |%,y1%:. x1%,y1%.|
00005280  03 25 1d 20 20 20 20 20  c8 99 20 73 65 74 63 6f  |.%.     .. setco|
00005290  6c 25 2c 26 46 46 46 46  46 46 30 30 0d 03 26 19  |l%,&FFFFFF00..&.|
000052a0  20 20 20 20 20 df 20 78  31 25 2c 79 25 3a df 20  |     . x1%,y%:. |
000052b0  78 25 2c 79 25 0d 03 27  08 20 20 20 cb 0d 03 28  |x%,y%..'.   ...(|
000052c0  06 20 cd 0d 03 29 06 20  e1 0d 03 2a 04 0d 03 2b  |. ...). ...*...+|
000052d0  19 20 dd f2 70 6c 61 79  5f 73 6f 75 6e 64 28 73  |. ..play_sound(s|
000052e0  6f 75 6e 64 25 29 0d 03  2c 2a 20 c8 99 20 67 65  |ound%)..,* .. ge|
000052f0  74 65 6e 74 72 79 25 2c  73 5f 73 6f 75 6e 64 73  |tentry%,s_sounds|
00005300  25 2c 73 6f 75 6e 64 25  20 b8 20 61 64 72 31 25  |%,sound% . adr1%|
00005310  0d 03 2d 47 20 6c 65 6e  25 3d 28 21 61 64 72 31  |..-G len%=(!adr1|
00005320  25 29 2d 32 34 3a c8 99  20 72 65 61 64 73 74 61  |%)-24:.. readsta|
00005330  74 75 73 25 2c 73 5f 73  6f 75 6e 64 73 25 2c 73  |tus%,s_sounds%,s|
00005340  6f 75 6e 64 25 20 b8 20  6c 25 3a e7 20 6c 25 20  |ound% . l%:. l% |
00005350  6c 65 6e 25 3d 6c 25 0d  03 2e 08 20 ea 20 85 0d  |len%=l%.... . ..|
00005360  03 2f 1a 20 ee 20 85 20  ea 20 f7 20 85 3a f2 65  |./. . . . . .:.e|
00005370  72 72 6f 72 62 6f 78 3a  e1 0d 03 30 2b 20 c8 99  |rrorbox:...0+ ..|
00005380  20 70 6c 61 79 73 6f 75  6e 64 25 2c 61 64 72 31  | playsound%,adr1|
00005390  25 2b 32 34 2c 6c 65 6e  25 2c 73 6f 75 6e 64 5f  |%+24,len%,sound_|
000053a0  76 6f 6c 25 0d 03 31 06  20 e1 0d 03 32 04 0d 03  |vol%..1. ...2...|
000053b0  33 1e 20 dd f2 70 6c 61  79 5f 73 6f 75 6e 64 5f  |3. ..play_sound_|
000053c0  77 61 69 74 28 73 6f 75  6e 64 25 29 0d 03 34 2a  |wait(sound%)..4*|
000053d0  20 c8 99 20 67 65 74 65  6e 74 72 79 25 2c 73 5f  | .. getentry%,s_|
000053e0  73 6f 75 6e 64 73 25 2c  73 6f 75 6e 64 25 20 b8  |sounds%,sound% .|
000053f0  20 61 64 72 31 25 0d 03  35 47 20 6c 65 6e 25 3d  | adr1%..5G len%=|
00005400  28 21 61 64 72 31 25 29  2d 32 34 3a c8 99 20 72  |(!adr1%)-24:.. r|
00005410  65 61 64 73 74 61 74 75  73 25 2c 73 5f 73 6f 75  |eadstatus%,s_sou|
00005420  6e 64 73 25 2c 73 6f 75  6e 64 25 20 b8 20 6c 25  |nds%,sound% . l%|
00005430  3a e7 20 6c 25 20 6c 65  6e 25 3d 6c 25 0d 03 36  |:. l% len%=l%..6|
00005440  2b 20 c8 99 20 70 6c 61  79 73 6f 75 6e 64 25 2c  |+ .. playsound%,|
00005450  61 64 72 31 25 2b 32 34  2c 6c 65 6e 25 2c 73 6f  |adr1%+24,len%,so|
00005460  75 6e 64 5f 76 6f 6c 25  0d 03 37 23 20 f5 3a c8  |und_vol%..7# .:.|
00005470  99 20 70 6c 61 79 73 6f  75 6e 64 25 2c 30 20 b8  |. playsound%,0 .|
00005480  20 74 25 3a fd 74 25 3c  3e 2d 31 0d 03 38 06 20  | t%:.t%<>-1..8. |
00005490  e1 0d 03 39 04 0d 03 3a  18 20 dd f2 6d 61 6b 65  |...9...:. ..make|
000054a0  5f 73 70 61 63 65 28 70  6c 75 73 25 29 0d 03 3b  |_space(plus%)..;|
000054b0  23 20 73 69 7a 65 25 3d  28 21 26 34 30 30 30 34  |# size%=(!&40004|
000054c0  2d 26 34 30 30 30 30 29  2b 70 6c 75 73 25 2a 32  |-&40000)+plus%*2|
000054d0  0d 03 3c 2b 20 73 6c 6f  74 5f 73 69 7a 65 25 3d  |..<+ slot_size%=|
000054e0  93 2b 28 73 69 7a 65 25  81 26 34 30 30 30 29 2a  |.+(size%.&4000)*|
000054f0  26 34 30 30 30 2b 26 34  30 30 30 0d 03 3d 2a 20  |&4000+&4000..=* |
00005500  c8 99 20 22 57 69 6d 70  5f 53 6c 6f 74 53 69 7a  |.. "Wimp_SlotSiz|
00005510  65 22 2c 73 6c 6f 74 5f  73 69 7a 65 25 2c 2d 31  |e",slot_size%,-1|
00005520  20 b8 20 74 25 0d 03 3e  38 20 e7 20 74 25 3c 73  | . t%..>8 . t%<s|
00005530  6c 6f 74 5f 73 69 7a 65  25 20 85 20 31 2c 22 55  |lot_size% . 1,"U|
00005540  6c 74 69 6d 61 70 20 68  61 73 20 72 75 6e 20 6f  |ltimap has run o|
00005550  75 74 20 6f 66 20 6d 65  6d 6f 72 79 22 0d 03 3f  |ut of memory"..?|
00005560  06 20 e1 0d 03 40 04 0d  03 41 1d 20 dd f2 73 65  |. ...@...A. ..se|
00005570  74 5f 73 6c 6f 74 28 73  69 7a 65 25 2c 65 72 72  |t_slot(size%,err|
00005580  6f 72 25 29 0d 03 42 15  20 73 6c 6f 74 5f 73 69  |or%)..B. slot_si|
00005590  7a 65 25 3d 73 69 7a 65  25 0d 03 43 2a 20 c8 99  |ze%=size%..C* ..|
000055a0  20 22 57 69 6d 70 5f 53  6c 6f 74 53 69 7a 65 22  | "Wimp_SlotSize"|
000055b0  2c 73 6c 6f 74 5f 73 69  7a 65 25 2c 2d 31 20 b8  |,slot_size%,-1 .|
000055c0  20 74 25 0d 03 44 4c 20  e7 20 74 25 3c 73 6c 6f  | t%..DL . t%<slo|
000055d0  74 5f 73 69 7a 65 25 20  85 20 65 72 72 6f 72 25  |t_size% . error%|
000055e0  2c 22 54 68 65 72 65 27  73 20 6e 6f 74 20 65 6e  |,"There's not en|
000055f0  6f 75 67 68 20 6d 65 6d  6f 72 79 20 74 6f 20 6c  |ough memory to l|
00005600  6f 61 64 20 74 68 69 73  20 66 69 6c 65 21 22 0d  |oad this file!".|
00005610  03 45 06 20 e1 0d 03 46  04 0d 03 47 13 20 dd f2  |.E. ...F...G. ..|
00005620  6f 70 65 6e 5f 70 72 69  6e 74 5f 77 0d 03 48 2e  |open_print_w..H.|
00005630  20 e7 20 70 6f 72 74 72  61 69 74 25 20 61 25 3d  | . portrait% a%=|
00005640  30 3a 62 25 3d 31 3c 3c  32 31 20 8b 20 61 25 3d  |0:b%=1<<21 . a%=|
00005650  31 3c 3c 32 31 3a 62 25  3d 30 0d 03 49 29 20 f2  |1<<21:b%=0..I) .|
00005660  73 65 74 5f 69 63 6f 6e  5f 73 74 61 74 65 28 70  |set_icon_state(p|
00005670  72 69 6e 74 5f 77 25 2c  36 2c 61 25 2c 31 3c 3c  |rint_w%,6,a%,1<<|
00005680  32 31 29 0d 03 4a 29 20  f2 73 65 74 5f 69 63 6f  |21)..J) .set_ico|
00005690  6e 5f 73 74 61 74 65 28  70 72 69 6e 74 5f 77 25  |n_state(print_w%|
000056a0  2c 37 2c 62 25 2c 31 3c  3c 32 31 29 0d 03 4b 23  |,7,b%,1<<21)..K#|
000056b0  20 f2 73 65 74 5f 69 63  6f 6e 5f 74 65 78 74 28  | .set_icon_text(|
000056c0  70 72 69 6e 74 5f 77 25  2c 32 2c 22 31 22 29 0d  |print_w%,2,"1").|
000056d0  03 4c 11 20 c8 99 20 67  65 74 70 25 2c 2c 71 25  |.L. .. getp%,,q%|
000056e0  0d 03 4d 17 20 c8 99 20  63 72 65 61 74 65 6d 65  |..M. .. createme|
000056f0  6e 75 25 2c 2c 2d 31 0d  03 4e 2c 20 c8 99 20 63  |nu%,,-1..N, .. c|
00005700  72 65 61 74 65 6d 65 6e  75 25 2c 2c 70 72 69 6e  |reatemenu%,,prin|
00005710  74 5f 77 25 2c 21 71 25  2d 33 30 2c 71 25 21 34  |t_w%,!q%-30,q%!4|
00005720  2b 36 30 0d 03 4f 06 20  e1 0d 03 50 04 0d 03 51  |+60..O. ...P...Q|
00005730  14 20 dd f2 63 68 65 63  6b 5f 70 72 69 6e 74 5f  |. ..check_print_|
00005740  77 0d 03 52 0c 20 62 25  3d 71 25 21 38 0d 03 53  |w..R. b%=q%!8..S|
00005750  0f 20 c8 8e 20 71 25 21  31 36 20 ca 0d 03 54 1d  |. .. q%!16 ...T.|
00005760  20 20 20 c9 20 33 3a c8  99 20 63 72 65 61 74 65  |   . 3:.. create|
00005770  6d 65 6e 75 25 2c 2c 2d  31 0d 03 55 0b 20 20 20  |menu%,,-1..U.   |
00005780  c9 20 34 3a 0d 03 56 29  20 20 20 20 20 21 71 25  |. 4:..V)     !q%|
00005790  3d 70 72 69 6e 74 5f 77  25 3a 71 25 21 34 3d 37  |=print_w%:q%!4=7|
000057a0  3a c8 99 20 67 65 74 69  25 2c 2c 71 25 0d 03 57  |:.. geti%,,q%..W|
000057b0  48 20 20 20 20 20 e7 20  28 71 25 21 32 34 29 20  |H     . (q%!24) |
000057c0  80 20 28 31 3c 3c 32 31  29 20 73 74 79 6c 65 25  |. (1<<21) style%|
000057d0  3d 32 3a 70 6f 72 74 72  61 69 74 25 3d b9 20 8b  |=2:portrait%=. .|
000057e0  20 73 74 79 6c 65 25 3d  31 3a 70 6f 72 74 72 61  | style%=1:portra|
000057f0  69 74 25 3d a3 0d 03 58  29 20 20 20 20 20 21 71  |it%=...X)     !q|
00005800  25 3d 70 72 69 6e 74 5f  77 25 3a 71 25 21 34 3d  |%=print_w%:q%!4=|
00005810  32 3a c8 99 20 67 65 74  69 25 2c 2c 71 25 0d 03  |2:.. geti%,,q%..|
00005820  59 24 20 20 20 20 20 72  75 6e 5f 6e 75 6d 25 3d  |Y$     run_num%=|
00005830  bb 28 a4 73 74 72 69 6e  67 30 28 71 25 21 32 38  |.(.string0(q%!28|
00005840  29 29 0d 03 5a 20 20 20  20 20 20 e7 20 72 75 6e  |))..Z      . run|
00005850  5f 6e 75 6d 25 3d 30 20  72 75 6e 5f 6e 75 6d 25  |_num%=0 run_num%|
00005860  3d 31 0d 03 5b 28 20 20  20 20 20 f2 70 72 69 6e  |=1..[(     .prin|
00005870  74 5f 72 6f 75 74 69 6e  65 28 73 74 79 6c 65 25  |t_routine(style%|
00005880  2c 72 75 6e 5f 6e 75 6d  25 29 0d 03 5c 24 20 20  |,run_num%)..\$  |
00005890  20 20 20 e7 20 62 25 20  80 20 36 20 c8 99 20 63  |   . b% . 6 .. c|
000058a0  72 65 61 74 65 6d 65 6e  75 25 2c 2c 2d 31 0d 03  |reatemenu%,,-1..|
000058b0  5d 06 20 cb 0d 03 5e 06  20 e1 0d 03 5f 04 0d 03  |]. ...^. ..._...|
000058c0  60 25 20 dd f2 70 72 69  6e 74 5f 72 6f 75 74 69  |`% ..print_routi|
000058d0  6e 65 28 73 74 79 6c 65  25 2c 72 75 6e 5f 6e 75  |ne(style%,run_nu|
000058e0  6d 25 29 0d 03 61 18 20  ea 20 70 68 61 6e 64 6c  |m%)..a. . phandl|
000058f0  65 25 2c 6f 68 61 6e 64  6c 65 25 0d 03 62 20 20  |e%,ohandle%..b  |
00005900  ea 20 6c 65 66 74 25 2c  62 6f 74 74 6f 6d 25 2c  |. left%,bottom%,|
00005910  72 69 67 68 74 25 2c 74  6f 70 25 0d 03 63 18 20  |right%,top%..c. |
00005920  ea 20 63 6f 70 69 65 73  6c 65 66 74 25 2c 72 65  |. copiesleft%,re|
00005930  63 74 25 0d 03 64 04 0d  03 65 1b 20 70 68 61 6e  |ct%..d...e. phan|
00005940  64 6c 65 25 3d ae 28 22  70 72 69 6e 74 65 72 3a  |dle%=.("printer:|
00005950  22 29 0d 03 66 08 20 ea  20 85 0d 03 67 3b 20 ee  |")..f. . ...g; .|
00005960  20 85 20 ea 3a d9 23 70  68 61 6e 64 6c 65 25 3a  | . .:.#phandle%:|
00005970  f7 20 85 3a 85 20 31 2c  22 54 68 65 72 65 20 69  |. .:. 1,"There i|
00005980  73 20 6e 6f 20 70 72 69  6e 74 65 72 20 64 72 69  |s no printer dri|
00005990  76 65 72 21 22 0d 03 68  2e 20 c8 99 20 50 44 73  |ver!"..h. .. PDs|
000059a0  65 6c 65 63 74 25 2c 70  68 61 6e 64 6c 65 25 2c  |elect%,phandle%,|
000059b0  22 55 6c 74 69 6d 61 22  20 b8 20 6f 68 61 6e 64  |"Ultima" . ohand|
000059c0  6c 65 25 0d 03 69 04 0d  03 6a 5a 20 ee 20 85 20  |le%..i...jZ . . |
000059d0  ea 3a c8 99 20 50 44 61  62 6f 72 74 25 2c 70 68  |.:.. PDabort%,ph|
000059e0  61 6e 64 6c 65 25 3a d9  23 70 68 61 6e 64 6c 65  |andle%:.#phandle|
000059f0  25 3a c8 99 20 50 44 73  65 6c 65 63 74 25 2c 6f  |%:.. PDselect%,o|
00005a00  68 61 6e 64 6c 65 25 3a  70 72 69 6e 74 69 6e 67  |handle%:printing|
00005a10  25 3d a3 3a f7 20 85 3a  85 20 31 2c f6 24 2b c3  |%=.:. .:. 1,.$+.|
00005a20  9e 0d 03 6b 04 0d 03 6c  32 20 c8 99 20 50 44 70  |...k...l2 .. PDp|
00005a30  61 67 65 73 69 7a 65 25  20 b8 20 2c 2c 2c 6c 65  |agesize% . ,,,le|
00005a40  66 74 25 2c 62 6f 74 74  6f 6d 25 2c 72 69 67 68  |ft%,bottom%,righ|
00005a50  74 25 2c 74 6f 70 25 0d  03 6d 16 20 c8 99 20 22  |t%,top%..m. .. "|
00005a60  48 6f 75 72 67 6c 61 73  73 5f 4f 6e 22 0d 03 6e  |Hourglass_On"..n|
00005a70  04 0d 03 6f 19 20 e3 20  6c 6f 6f 70 25 3d 31 20  |...o. . loop%=1 |
00005a80  b8 20 72 75 6e 5f 6e 75  6d 25 0d 03 70 22 20 20  |. run_num%..p"  |
00005a90  20 21 77 73 25 3d 6d 61  69 6e 5f 77 25 3a c8 99  | !ws%=main_w%:..|
00005aa0  20 67 65 74 77 69 25 2c  2c 77 73 25 0d 03 71 34  | getwi%,,ws%..q4|
00005ab0  20 20 20 6d 78 25 3d 77  73 25 21 34 34 3a 6d 79  |   mx%=ws%!44:my|
00005ac0  25 3d 77 73 25 21 34 38  3a 6d 78 31 25 3d 77 73  |%=ws%!48:mx1%=ws|
00005ad0  25 21 35 32 3a 6d 79 31  25 3d 77 73 25 21 35 36  |%!52:my1%=ws%!56|
00005ae0  0d 03 72 34 20 20 20 21  62 6f 78 25 3d 6d 78 25  |..r4   !box%=mx%|
00005af0  3a 62 6f 78 25 21 34 3d  6d 79 25 3a 62 6f 78 25  |:box%!4=my%:box%|
00005b00  21 38 3d 6d 78 31 25 3a  62 6f 78 25 21 31 32 3d  |!8=mx1%:box%!12=|
00005b10  6d 79 31 25 0d 03 73 12  20 20 20 c8 8e 20 73 74  |my1%..s.   .. st|
00005b20  79 6c 65 25 20 ca 0d 03  74 18 20 20 20 20 20 c9  |yle% ...t.     .|
00005b30  20 31 3a f4 20 6c 61 6e  64 73 63 61 70 65 0d 03  | 1:. landscape..|
00005b40  75 1b 20 20 20 20 20 20  20 e7 20 70 61 67 65 5f  |u.       . page_|
00005b50  73 69 7a 65 25 3d 34 20  8c 0d 03 76 14 20 20 20  |size%=4 ...v.   |
00005b60  20 20 20 20 20 20 73 63  78 3d 2e 36 37 0d 03 77  |      scx=.67..w|
00005b70  14 20 20 20 20 20 20 20  20 20 73 63 79 3d 2e 36  |.         scy=.6|
00005b80  37 0d 03 78 4b 20 20 20  20 20 20 20 20 20 21 6d  |7..xK         !m|
00005b90  61 74 72 69 78 25 3d 30  3a 6d 61 74 72 69 78 25  |atrix%=0:matrix%|
00005ba0  21 34 3d 2d 73 63 78 2a  32 5e 31 36 3a 6d 61 74  |!4=-scx*2^16:mat|
00005bb0  72 69 78 25 21 38 3d 73  63 79 2a 32 5e 31 36 3a  |rix%!8=scy*2^16:|
00005bc0  6d 61 74 72 69 78 25 21  31 32 3d 30 0d 03 79 5b  |matrix%!12=0..y[|
00005bd0  20 20 20 20 20 20 20 20  20 21 6f 72 69 67 69 6e  |         !origin|
00005be0  31 25 3d 28 72 69 67 68  74 25 2d 6c 65 66 74 25  |1%=(right%-left%|
00005bf0  29 81 31 36 3a 6f 72 69  67 69 6e 31 25 21 34 3d  |).16:origin1%!4=|
00005c00  74 6f 70 25 2d 28 74 6f  70 25 2d 62 6f 74 74 6f  |top%-(top%-botto|
00005c10  6d 25 29 81 32 2d 28 74  6f 70 25 2d 62 6f 74 74  |m%).2-(top%-bott|
00005c20  6f 6d 25 29 81 33 30 0d  03 7a 0c 20 20 20 20 20  |om%).30..z.     |
00005c30  20 20 cc 0d 03 7b 14 20  20 20 20 20 20 20 20 20  |  ...{.         |
00005c40  73 63 78 3d 31 2e 34 0d  03 7c 14 20 20 20 20 20  |scx=1.4..|.     |
00005c50  20 20 20 20 73 63 79 3d  31 2e 35 0d 03 7d 4b 20  |    scy=1.5..}K |
00005c60  20 20 20 20 20 20 20 20  21 6d 61 74 72 69 78 25  |        !matrix%|
00005c70  3d 30 3a 6d 61 74 72 69  78 25 21 34 3d 2d 73 63  |=0:matrix%!4=-sc|
00005c80  78 2a 32 5e 31 36 3a 6d  61 74 72 69 78 25 21 38  |x*2^16:matrix%!8|
00005c90  3d 73 63 79 2a 32 5e 31  36 3a 6d 61 74 72 69 78  |=scy*2^16:matrix|
00005ca0  25 21 31 32 3d 30 0d 03  7e 4a 20 20 20 20 20 20  |%!12=0..~J      |
00005cb0  20 20 20 21 6f 72 69 67  69 6e 31 25 3d 28 72 69  |   !origin1%=(ri|
00005cc0  67 68 74 25 2d 6c 65 66  74 25 29 81 32 30 3a 6f  |ght%-left%).20:o|
00005cd0  72 69 67 69 6e 31 25 21  34 3d 74 6f 70 25 2d 28  |rigin1%!4=top%-(|
00005ce0  74 6f 70 25 2d 62 6f 74  74 6f 6d 25 29 81 32 30  |top%-bottom%).20|
00005cf0  0d 03 7f 0c 20 20 20 20  20 20 20 cd 0d 03 80 17  |....       .....|
00005d00  20 20 20 20 20 c9 20 32  3a f4 20 70 6f 72 74 72  |     . 2:. portr|
00005d10  61 69 74 0d 03 81 13 20  20 20 20 20 20 20 73 63  |ait....       sc|
00005d20  78 3d 31 2e 30 35 0d 03  82 12 20 20 20 20 20 20  |x=1.05....      |
00005d30  20 73 63 79 3d 2e 39 35  0d 03 83 48 20 20 20 20  | scy=.95...H    |
00005d40  20 20 20 21 6d 61 74 72  69 78 25 3d 73 63 78 2a  |   !matrix%=scx*|
00005d50  32 5e 31 36 3a 6d 61 74  72 69 78 25 21 34 3d 30  |2^16:matrix%!4=0|
00005d60  3a 6d 61 74 72 69 78 25  21 38 3d 30 3a 6d 61 74  |:matrix%!8=0:mat|
00005d70  72 69 78 25 21 31 32 3d  73 63 79 2a 32 5e 31 36  |rix%!12=scy*2^16|
00005d80  0d 03 84 39 20 20 20 20  20 20 20 21 6f 72 69 67  |...9       !orig|
00005d90  69 6e 31 25 3d 28 72 69  67 68 74 25 2d 6c 65 66  |in1%=(right%-lef|
00005da0  74 25 29 81 32 30 3a 6f  72 69 67 69 6e 31 25 21  |t%).20:origin1%!|
00005db0  34 3d 62 6f 74 74 6f 6d  25 0d 03 85 08 20 20 20  |4=bottom%....   |
00005dc0  cb 0d 03 86 3a 20 20 20  c8 99 20 50 44 67 69 76  |....:   .. PDgiv|
00005dd0  65 72 65 63 25 2c 6c 6f  6f 70 25 2c 62 6f 78 25  |erec%,loop%,box%|
00005de0  2c 6d 61 74 72 69 78 25  2c 6f 72 69 67 69 6e 31  |,matrix%,origin1|
00005df0  25 2c 26 46 46 46 46 46  46 30 30 0d 03 87 12 20  |%,&FFFFFF00.... |
00005e00  20 20 70 72 69 6e 74 69  6e 67 25 3d b9 0d 03 88  |  printing%=....|
00005e10  36 20 20 20 c8 99 20 50  44 64 72 61 77 70 61 67  |6   .. PDdrawpag|
00005e20  65 25 2c 31 2c 62 6f 78  32 25 2c 30 2c 30 20 b8  |e%,1,box2%,0,0 .|
00005e30  20 63 6f 70 69 65 73 6c  65 66 74 25 2c 2c 72 65  | copiesleft%,,re|
00005e40  63 74 25 0d 03 89 18 20  20 20 c8 95 20 63 6f 70  |ct%....   .. cop|
00005e50  69 65 73 6c 65 66 74 25  3c 3e 30 0d 03 8a 2c 20  |iesleft%<>0..., |
00005e60  20 20 20 20 f2 64 72 61  77 5f 6d 61 69 6e 5f 77  |    .draw_main_w|
00005e70  28 6d 78 25 2c 6d 79 25  2c 6d 78 31 25 2c 6d 79  |(mx%,my%,mx1%,my|
00005e80  31 25 2c 30 2c 30 29 0d  03 8b 31 20 20 20 20 20  |1%,0,0)...1     |
00005e90  c8 99 20 50 44 67 65 74  72 65 63 25 2c 2c 62 6f  |.. PDgetrec%,,bo|
00005ea0  78 32 25 20 b8 20 63 6f  70 69 65 73 6c 65 66 74  |x2% . copiesleft|
00005eb0  25 2c 2c 72 65 63 74 25  0d 03 8c 08 20 20 20 ce  |%,,rect%....   .|
00005ec0  0d 03 8d 06 20 ed 0d 03  8e 04 0d 03 8f 1a 20 c8  |.... ......... .|
00005ed0  99 20 50 44 65 6e 64 6a  6f 62 25 2c 70 68 61 6e  |. PDendjob%,phan|
00005ee0  64 6c 65 25 0d 03 90 0f  20 d9 23 70 68 61 6e 64  |dle%.... .#phand|
00005ef0  6c 65 25 0d 03 91 1a 20  c8 99 20 50 44 73 65 6c  |le%.... .. PDsel|
00005f00  65 63 74 25 2c 6f 68 61  6e 64 6c 65 25 0d 03 92  |ect%,ohandle%...|
00005f10  10 20 70 72 69 6e 74 69  6e 67 25 3d a3 0d 03 93  |. printing%=....|
00005f20  17 20 c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |. .. "Hourglass_|
00005f30  4f 66 66 22 0d 03 94 06  20 e1 0d 03 95 04 0d 03  |Off".... .......|
00005f40  96 2f 20 dd f2 68 69 64  65 5f 6f 62 6a 65 63 74  |./ ..hide_object|
00005f50  28 73 74 61 63 6b 25 2c  74 6f 6b 65 6e 25 2c 68  |(stack%,token%,h|
00005f60  69 64 65 25 2c 6f 6e 5f  76 64 75 25 29 0d 03 97  |ide%,on_vdu%)...|
00005f70  27 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |' .. getentry%,s|
00005f80  74 61 63 6b 25 2c 74 6f  6b 65 6e 25 20 b8 20 61  |tack%,token% . a|
00005f90  64 72 31 25 0d 03 98 2f  20 e7 20 68 69 64 65 25  |dr1%.../ . hide%|
00005fa0  3c 3e 30 20 80 20 28 28  61 64 72 31 25 21 33 36  |<>0 . ((adr1%!36|
00005fb0  29 80 31 32 38 29 3c 3e  30 20 6f 6e 5f 76 64 75  |).128)<>0 on_vdu|
00005fc0  25 3d 30 0d 03 99 2d 20  e7 20 68 69 64 65 25 3d  |%=0...- . hide%=|
00005fd0  30 20 80 20 28 28 61 64  72 31 25 21 33 36 29 80  |0 . ((adr1%!36).|
00005fe0  31 32 38 29 3d 30 20 6f  6e 5f 76 64 75 25 3d 30  |128)=0 on_vdu%=0|
00005ff0  0d 03 9a 44 20 e7 20 68  69 64 65 25 20 61 64 72  |...D . hide% adr|
00006000  31 25 21 33 36 3d 28 61  64 72 31 25 21 33 36 29  |1%!36=(adr1%!36)|
00006010  84 31 32 38 20 8b 20 61  64 72 31 25 21 33 36 3d  |.128 . adr1%!36=|
00006020  28 61 64 72 31 25 21 33  36 29 80 26 46 46 46 46  |(adr1%!36).&FFFF|
00006030  46 46 37 46 0d 03 9b 5e  20 e7 20 6f 6e 5f 76 64  |FF7F...^ . on_vd|
00006040  75 25 20 c8 99 20 66 6f  72 63 65 72 65 64 72 61  |u% .. forceredra|
00006050  77 25 2c 6d 61 69 6e 5f  77 25 2c 61 64 72 31 25  |w%,main_w%,adr1%|
00006060  21 31 32 2c 61 64 72 31  25 21 31 36 2c 61 64 72  |!12,adr1%!16,adr|
00006070  31 25 21 32 30 2b 28 34  3c 3c 78 65 66 25 29 2c  |1%!20+(4<<xef%),|
00006080  61 64 72 31 25 21 32 34  2b 28 31 3c 3c 79 65 66  |adr1%!24+(1<<yef|
00006090  25 29 0d 03 9c 06 20 e1  0d 03 9d 04 0d 03 9e 2e  |%).... .........|
000060a0  20 dd f2 6c 69 67 68 74  5f 6f 62 6a 65 63 74 28  | ..light_object(|
000060b0  73 74 61 63 6b 25 2c 74  6f 6b 65 6e 25 2c 68 69  |stack%,token%,hi|
000060c0  25 2c 6f 6e 5f 76 64 75  25 29 0d 03 9f 27 20 c8  |%,on_vdu%)...' .|
000060d0  99 20 67 65 74 65 6e 74  72 79 25 2c 73 74 61 63  |. getentry%,stac|
000060e0  6b 25 2c 74 6f 6b 65 6e  25 20 b8 20 61 64 72 31  |k%,token% . adr1|
000060f0  25 0d 03 a0 20 20 68 25  3d 28 61 64 72 31 25 21  |%...  h%=(adr1%!|
00006100  33 36 29 80 31 3a e7 20  68 69 25 20 68 69 25 3d  |36).1:. hi% hi%=|
00006110  31 0d 03 a1 40 20 e7 20  68 69 25 20 61 64 72 31  |1...@ . hi% adr1|
00006120  25 21 33 36 3d 28 61 64  72 31 25 21 33 36 29 84  |%!36=(adr1%!36).|
00006130  31 20 8b 20 61 64 72 31  25 21 33 36 3d 28 61 64  |1 . adr1%!36=(ad|
00006140  72 31 25 21 33 36 29 80  26 46 46 46 46 46 46 46  |r1%!36).&FFFFFFF|
00006150  45 0d 03 a2 54 20 e7 20  6f 6e 5f 76 64 75 25 20  |E...T . on_vdu% |
00006160  80 20 68 25 3c 3e 68 69  25 20 c8 99 20 66 6f 72  |. h%<>hi% .. for|
00006170  63 65 72 65 64 72 61 77  25 2c 6d 61 69 6e 5f 77  |ceredraw%,main_w|
00006180  25 2c 61 64 72 31 25 21  31 32 2c 61 64 72 31 25  |%,adr1%!12,adr1%|
00006190  21 31 36 2c 61 64 72 31  25 21 32 30 2c 61 64 72  |!16,adr1%!20,adr|
000061a0  31 25 21 32 34 0d 03 a3  06 20 e1 0d 03 a4 04 0d  |1%!24.... ......|
000061b0  03 a5 13 20 dd a4 73 74  61 63 6b 28 70 61 67 65  |... ..stack(page|
000061c0  25 29 0d 03 a6 0b 20 ea  20 61 64 72 25 0d 03 a7  |%).... . adr%...|
000061d0  27 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |' .. getentry%,s|
000061e0  5f 70 61 67 65 73 25 2c  70 61 67 65 25 20 b8 20  |_pages%,page% . |
000061f0  61 64 72 25 0d 03 a8 33  20 e7 20 61 64 72 25 3d  |adr%...3 . adr%=|
00006200  30 20 84 20 61 64 72 25  21 32 30 3d 30 20 85 20  |0 . adr%!20=0 . |
00006210  32 2c 22 62 61 64 20 73  74 61 63 6b 20 66 72 6f  |2,"bad stack fro|
00006220  6d 20 70 61 67 65 22 0d  03 a9 0d 20 3d 61 64 72  |m page".... =adr|
00006230  25 21 32 30 0d 03 aa 04  0d 03 ab 20 20 dd a4 77  |%!20.......  ..w|
00006240  68 69 63 68 5f 6f 62 6a  65 63 74 28 70 61 67 65  |hich_object(page|
00006250  25 2c 78 25 2c 79 25 29  0d 03 ac 19 20 73 74 61  |%,x%,y%).... sta|
00006260  63 6b 25 3d a4 73 74 61  63 6b 28 70 61 67 65 25  |ck%=.stack(page%|
00006270  29 0d 03 ad 23 20 c8 99  20 6e 65 6e 74 72 69 65  |)...# .. nentrie|
00006280  73 25 2c 73 74 61 63 6b  25 20 b8 20 6e 6f 25 3a  |s%,stack% . no%:|
00006290  6f 25 3d 30 0d 03 ae 0f  20 e7 20 6e 6f 25 3d 30  |o%=0.... . no%=0|
000062a0  3a 3d 30 0d 03 af 11 20  e3 20 74 25 3d 31 20 b8  |:=0.... . t%=1 .|
000062b0  20 6e 6f 25 0d 03 b0 29  20 20 20 c8 99 20 67 65  | no%...)   .. ge|
000062c0  74 6e 74 68 25 2c 73 74  61 63 6b 25 2c 74 25 20  |tnth%,stack%,t% |
000062d0  b8 20 61 64 72 25 2c 74  6f 6b 65 6e 25 0d 03 b1  |. adr%,token%...|
000062e0  52 20 20 20 e7 20 78 25  3e 3d 61 64 72 25 21 31  |R   . x%>=adr%!1|
000062f0  32 20 80 20 79 25 3e 3d  61 64 72 25 21 31 36 20  |2 . y%>=adr%!16 |
00006300  80 20 78 25 3c 61 64 72  25 21 32 30 20 80 20 79  |. x%<adr%!20 . y|
00006310  25 3c 61 64 72 25 21 32  34 20 80 20 28 28 61 64  |%<adr%!24 . ((ad|
00006320  72 25 21 33 36 29 80 31  32 38 29 3d 30 20 8c 0d  |r%!36).128)=0 ..|
00006330  03 b2 38 20 20 20 20 20  6f 25 3d 74 6f 6b 65 6e  |..8     o%=token|
00006340  25 3a 6f 66 66 5f 6d 78  25 3d 78 25 2d 61 64 72  |%:off_mx%=x%-adr|
00006350  25 21 31 32 3a 6f 66 66  5f 6d 79 25 3d 79 25 2d  |%!12:off_my%=y%-|
00006360  61 64 72 25 21 31 36 0d  03 b3 08 20 20 20 cd 0d  |adr%!16....   ..|
00006370  03 b4 06 20 ed 0d 03 b5  08 20 3d 6f 25 0d 03 b6  |... ..... =o%...|
00006380  04 0d 03 b7 21 20 dd f2  61 72 72 61 6e 67 65 5f  |....! ..arrange_|
00006390  70 61 67 65 6c 69 73 74  5f 77 63 28 70 61 67 65  |pagelist_wc(page|
000063a0  25 29 0d 03 b8 1f 20 69  77 25 3d 32 38 30 3a 69  |%).... iw%=280:i|
000063b0  68 25 3d 2d 34 38 3a 70  6c 5f 74 69 63 6b 25 3d  |h%=-48:pl_tick%=|
000063c0  30 0d 03 b9 20 20 c8 99  20 6e 65 6e 74 72 69 65  |0...  .. nentrie|
000063d0  73 25 2c 73 5f 70 61 67  65 73 25 20 b8 20 6e 70  |s%,s_pages% . np|
000063e0  25 0d 03 ba 25 20 21 71  25 3d 30 3a 71 25 21 38  |%...% !q%=0:q%!8|
000063f0  3d 69 77 25 2d 28 33 3c  3c 78 65 66 25 29 3a 71  |=iw%-(3<<xef%):q|
00006400  25 21 31 32 3d 30 0d 03  bb 26 20 e7 20 6e 70 25  |%!12=0...& . np%|
00006410  3c 33 20 71 25 21 34 3d  69 68 25 2a 33 20 8b 20  |<3 q%!4=ih%*3 . |
00006420  71 25 21 34 3d 69 68 25  2a 6e 70 25 0d 03 bc 22  |q%!4=ih%*np%..."|
00006430  20 c8 99 20 73 65 74 65  78 74 65 6e 74 25 2c 70  | .. setextent%,p|
00006440  61 67 65 6c 69 73 74 5f  77 63 25 2c 71 25 0d 03  |agelist_wc%,q%..|
00006450  bd 17 20 69 79 25 3d 69  68 25 3a 63 75 72 5f 79  |.. iy%=ih%:cur_y|
00006460  25 3d 69 79 25 0d 03 be  12 20 e3 20 6c 6f 6f 70  |%=iy%.... . loop|
00006470  25 3d 31 b8 6e 70 25 0d  03 bf 2e 20 20 20 c8 99  |%=1.np%....   ..|
00006480  20 67 65 74 6e 74 68 25  2c 73 5f 70 61 67 65 73  | getnth%,s_pages|
00006490  25 2c 6c 6f 6f 70 25 20  b8 20 61 64 72 25 2c 74  |%,loop% . adr%,t|
000064a0  6f 6b 65 6e 25 0d 03 c0  2d 20 20 20 e7 20 74 6f  |oken%...-   . to|
000064b0  6b 65 6e 25 3d 70 61 67  65 25 20 63 75 72 5f 79  |ken%=page% cur_y|
000064c0  25 3d 69 79 25 3a 70 6c  5f 74 69 63 6b 25 3d 69  |%=iy%:pl_tick%=i|
000064d0  79 25 0d 03 c1 0f 20 20  20 69 79 25 2b 3d 69 68  |y%....   iy%+=ih|
000064e0  25 0d 03 c2 06 20 ed 0d  03 c3 22 20 21 71 25 3d  |%.... ...." !q%=|
000064f0  70 61 67 65 6c 69 73 74  5f 77 63 25 3a c8 99 20  |pagelist_wc%:.. |
00006500  67 65 74 77 25 2c 2c 71  25 0d 03 c4 22 20 6f 66  |getw%,,q%..." of|
00006510  66 79 25 3d 28 71 25 21  31 36 2d 71 25 21 32 34  |fy%=(q%!16-q%!24|
00006520  29 3a 73 79 25 3d 71 25  21 32 34 0d 03 c5 28 20  |):sy%=q%!24...( |
00006530  77 79 25 3d 28 71 25 21  38 29 2d 6f 66 66 79 25  |wy%=(q%!8)-offy%|
00006540  3a 77 79 31 25 3d 28 71  25 21 31 36 29 2d 6f 66  |:wy1%=(q%!16)-of|
00006550  66 79 25 0d 03 c6 21 20  e7 20 63 75 72 5f 79 25  |fy%...! . cur_y%|
00006560  3c 77 79 25 20 73 79 25  2b 3d 63 75 72 5f 79 25  |<wy% sy%+=cur_y%|
00006570  2d 77 79 25 0d 03 c7 25  20 e7 20 63 75 72 5f 79  |-wy%...% . cur_y|
00006580  25 2d 69 68 25 3e 77 79  31 25 20 73 79 25 3d 63  |%-ih%>wy1% sy%=c|
00006590  75 72 5f 79 25 2d 69 68  25 0d 03 c8 0e 20 71 25  |ur_y%-ih%.... q%|
000065a0  21 32 34 3d 73 79 25 0d  03 c9 17 20 6f 25 3d 28  |!24=sy%.... o%=(|
000065b0  71 25 21 33 32 29 80 28  31 3c 3c 31 36 29 0d 03  |q%!32).(1<<16)..|
000065c0  ca 12 20 c8 99 20 6f 70  65 6e 77 25 2c 2c 71 25  |.. .. openw%,,q%|
000065d0  0d 03 cb 0d 20 e7 20 6f  25 3d 30 20 8c 0d 03 cc  |.... . o%=0 ....|
000065e0  15 20 20 20 c8 99 20 63  6c 6f 73 65 77 25 2c 2c  |.   .. closew%,,|
000065f0  71 25 0d 03 cd 06 20 cc  0d 03 ce 2f 20 20 20 c8  |q%.... ..../   .|
00006600  99 20 66 6f 72 63 65 72  65 64 72 61 77 25 2c 2d  |. forceredraw%,-|
00006610  31 2c 71 25 21 34 2c 71  25 21 38 2c 71 25 21 31  |1,q%!4,q%!8,q%!1|
00006620  32 2c 71 25 21 31 36 0d  03 cf 06 20 cd 0d 03 d0  |2,q%!16.... ....|
00006630  06 20 e1 0d 03 d1 04 0d  03 d2 2a 20 dd f2 64 72  |. ........* ..dr|
00006640  61 77 5f 70 61 67 65 6c  69 73 74 5f 77 63 28 77  |aw_pagelist_wc(w|
00006650  78 25 2c 77 79 25 2c 77  78 31 25 2c 77 79 31 25  |x%,wy%,wx1%,wy1%|
00006660  29 0d 03 d3 20 20 c8 99  20 6e 65 6e 74 72 69 65  |)...  .. nentrie|
00006670  73 25 2c 73 5f 70 61 67  65 73 25 20 b8 20 6e 70  |s%,s_pages% . np|
00006680  25 0d 03 d4 31 20 c8 99  20 66 69 6e 64 66 6f 6e  |%...1 .. findfon|
00006690  74 25 2c 2c 69 63 6f 6e  5f 66 6f 6e 74 24 2c 31  |t%,,icon_font$,1|
000066a0  32 2a 31 36 2c 31 32 2a  31 36 20 b8 20 66 6f 6e  |2*16,12*16 . fon|
000066b0  74 25 0d 03 d5 2a 20 69  68 25 3d 2d 34 38 3a 69  |t%...* ih%=-48:i|
000066c0  78 25 3d 30 3a 69 79 25  3d 69 68 25 3a 69 78 31  |x%=0:iy%=ih%:ix1|
000066d0  25 3d 32 38 30 3a 69 79  31 25 3d 30 0d 03 d6 11  |%=280:iy1%=0....|
000066e0  20 e3 70 61 67 65 25 3d  31 b8 6e 70 25 0d 03 d7  | .page%=1.np%...|
000066f0  38 20 20 20 e7 20 69 78  25 3c 3d 77 78 31 25 20  |8   . ix%<=wx1% |
00006700  80 20 69 78 31 25 3e 3d  77 78 25 20 80 20 69 79  |. ix1%>=wx% . iy|
00006710  25 3c 3d 77 79 31 25 20  80 20 69 79 31 25 3e 3d  |%<=wy1% . iy1%>=|
00006720  77 79 25 20 8c 0d 03 d8  30 20 20 20 20 20 c8 99  |wy% ....0     ..|
00006730  20 67 65 74 6e 74 68 25  2c 73 5f 70 61 67 65 73  | getnth%,s_pages|
00006740  25 2c 70 61 67 65 25 20  b8 20 61 64 72 25 2c 74  |%,page% . adr%,t|
00006750  6f 6b 65 6e 25 0d 03 d9  19 20 20 20 20 20 e7 20  |oken%....     . |
00006760  69 79 25 3d 70 6c 5f 74  69 63 6b 25 20 8c 0d 03  |iy%=pl_tick% ...|
00006770  da 32 20 20 20 20 20 20  20 21 71 25 3d 69 78 25  |.2       !q%=ix%|
00006780  3a 71 25 21 34 3d 69 79  25 3a 71 25 21 38 3d 69  |:q%!4=iy%:q%!8=i|
00006790  78 25 2b 33 38 3a 71 25  21 31 32 3d 69 79 31 25  |x%+38:q%!12=iy1%|
000067a0  0d 03 db 2d 20 20 20 20  20 20 20 71 25 21 31 36  |...-       q%!16|
000067b0  3d 26 37 30 30 30 30 31  39 3a f2 73 74 72 69 6e  |=&7000019:.strin|
000067c0  67 30 28 71 25 2b 32 30  2c 22 80 22 29 0d 03 dc  |g0(q%+20,".")...|
000067d0  1b 20 20 20 20 20 20 20  c8 99 20 70 6c 6f 74 69  |.       .. ploti|
000067e0  63 6f 6e 25 2c 2c 71 25  0d 03 dd 0a 20 20 20 20  |con%,,q%....    |
000067f0  20 cd 0d 03 de 34 20 20  20 20 20 21 71 25 3d 69  | ....4     !q%=i|
00006800  78 25 2b 33 38 3a 71 25  21 34 3d 69 79 25 3a 71  |x%+38:q%!4=iy%:q|
00006810  25 21 38 3d 69 78 25 2b  32 38 30 3a 71 25 21 31  |%!8=ix%+280:q%!1|
00006820  32 3d 69 79 31 25 0d 03  df 3d 20 20 20 20 20 71  |2=iy1%...=     q|
00006830  25 21 31 36 3d 66 6f 6e  74 25 3c 3c 32 34 20 84  |%!16=font%<<24 .|
00006840  20 26 31 37 31 3a 71 25  21 32 30 3d 61 64 72 25  | &171:q%!20=adr%|
00006850  2b 34 3a 71 25 21 32 34  3d 30 3a 71 25 21 33 32  |+4:q%!24=0:q%!32|
00006860  3d 31 32 0d 03 e0 19 20  20 20 20 20 c8 99 20 70  |=12....     .. p|
00006870  6c 6f 74 69 63 6f 6e 25  2c 2c 71 25 0d 03 e1 08  |loticon%,,q%....|
00006880  20 20 20 cd 0d 03 e2 19  20 20 20 69 79 25 2b 3d  |   .....   iy%+=|
00006890  69 68 25 3a 69 79 31 25  2b 3d 69 68 25 0d 03 e3  |ih%:iy1%+=ih%...|
000068a0  06 20 ed 0d 03 e4 17 20  c8 99 20 6c 6f 73 65 66  |. ..... .. losef|
000068b0  6f 6e 74 25 2c 66 6f 6e  74 25 0d 03 e5 15 20 21  |ont%,font%.... !|
000068c0  71 25 3d 70 61 67 65 6c  69 73 74 5f 77 63 25 0d  |q%=pagelist_wc%.|
000068d0  03 e6 06 20 e1 0d 03 e7  04 0d 03 e8 20 20 dd a4  |... ........  ..|
000068e0  70 74 5f 66 72 6f 6d 5f  63 6f 6e 74 65 78 74 28  |pt_from_context(|
000068f0  63 6f 6e 74 65 78 74 25  29 0d 03 e9 12 20 c8 8e  |context%).... ..|
00006900  20 63 6f 6e 74 65 78 74  25 20 ca 0d 03 ea 18 20  | context% ..... |
00006910  20 20 c9 20 73 5f 6d 6f  75 73 65 64 72 61 67 25  |  . s_mousedrag%|
00006920  3a 3d 34 0d 03 eb 14 20  20 20 c9 20 73 5f 6f 66  |:=4....   . s_of|
00006930  74 65 6e 25 3a 3d 38 0d  03 ec 17 20 20 20 c9 20  |ten%:=8....   . |
00006940  73 5f 70 6f 69 6e 74 65  72 25 3a 3d 31 36 0d 03  |s_pointer%:=16..|
00006950  ed 15 20 20 20 c9 20 73  5f 6d 6f 75 73 65 25 3a  |..   . s_mouse%:|
00006960  3d 32 30 0d 03 ee 19 20  20 20 c9 20 73 5f 70 61  |=20....   . s_pa|
00006970  67 65 73 68 6f 77 6e 25  3a 3d 33 32 0d 03 ef 06  |geshown%:=32....|
00006980  20 cb 0d 03 f0 07 20 3d  30 0d 03 f1 04 0d 03 f2  | ..... =0.......|
00006990  1e 20 dd a4 6e 61 6d 65  5f 65 78 73 69 73 74 73  |. ..name_exsists|
000069a0  28 73 74 61 63 6b 25 2c  66 24 29 0d 03 f3 1e 20  |(stack%,f$).... |
000069b0  c8 99 20 6e 65 6e 74 72  69 65 73 25 2c 73 74 61  |.. nentries%,sta|
000069c0  63 6b 25 20 b8 20 6e 65  25 0d 03 f4 0f 20 e7 20  |ck% . ne%.... . |
000069d0  6e 65 25 3d 30 3a 3d 30  0d 03 f5 1c 20 66 25 3d  |ne%=0:=0.... f%=|
000069e0  30 3a 66 24 3d a4 6c 6f  77 65 72 5f 63 61 73 65  |0:f$=.lower_case|
000069f0  28 66 24 29 0d 03 f6 12  20 e3 65 6e 74 72 79 25  |(f$).... .entry%|
00006a00  3d 31 b8 6e 65 25 0d 03  f7 2d 20 20 20 c8 99 20  |=1.ne%...-   .. |
00006a10  67 65 74 6e 74 68 25 2c  73 74 61 63 6b 25 2c 65  |getnth%,stack%,e|
00006a20  6e 74 72 79 25 20 b8 20  61 64 72 25 2c 74 6f 6b  |ntry% . adr%,tok|
00006a30  65 6e 25 0d 03 f8 33 20  20 20 e7 20 66 24 3d a4  |en%...3   . f$=.|
00006a40  6c 6f 77 65 72 5f 63 61  73 65 28 a4 73 74 72 69  |lower_case(.stri|
00006a50  6e 67 30 28 61 64 72 25  2b 34 29 29 20 66 25 3d  |ng0(adr%+4)) f%=|
00006a60  74 6f 6b 65 6e 25 0d 03  f9 0a 20 ed 3a 3d 66 25  |token%.... .:=f%|
00006a70  0d 03 fa 04 0d 03 fb 10  20 dd f2 73 69 7a 65 5f  |........ ..size_|
00006a80  70 61 67 65 0d 03 fc 1e  20 21 71 25 3d 6d 61 69  |page.... !q%=mai|
00006a90  6e 5f 77 25 3a c8 99 20  67 65 74 77 69 25 2c 2c  |n_w%:.. getwi%,,|
00006aa0  71 25 0d 03 fd 28 20 e7  20 28 71 25 21 33 32 29  |q%...( . (q%!32)|
00006ab0  80 28 31 3c 3c 31 36 29  20 6f 70 65 6e 25 3d b9  |.(1<<16) open%=.|
00006ac0  20 8b 20 6f 70 65 6e 25  3d a3 0d 03 fe 1f 20 c8  | . open%=..... .|
00006ad0  99 20 22 57 69 6d 70 5f  44 65 6c 65 74 65 57 69  |. "Wimp_DeleteWi|
00006ae0  6e 64 6f 77 22 2c 2c 71  25 0d 03 ff 0e 20 62 68  |ndow",,q%.... bh|
00006af0  25 3d 71 25 21 32 38 0d  04 00 10 20 70 6f 72 74  |%=q%!28.... port|
00006b00  72 61 69 74 25 3d a3 0d  04 01 14 20 c8 8e 20 70  |rait%=..... .. p|
00006b10  61 67 65 5f 73 69 7a 65  25 20 ca 0d 04 02 2d 20  |age_size% ....- |
00006b20  20 20 c9 20 31 3a 71 25  21 35 32 3d 36 33 39 3c  |  . 1:q%!52=639<|
00006b30  3c 78 65 66 25 3a 71 25  21 34 38 3d 2d 28 34 36  |<xef%:q%!48=-(46|
00006b40  30 3c 3c 79 65 66 25 29  0d 04 03 2d 20 20 20 c9  |0<<yef%)...-   .|
00006b50  20 32 3a 71 25 21 35 32  3d 37 39 39 3c 3c 78 65  | 2:q%!52=799<<xe|
00006b60  66 25 3a 71 25 21 34 38  3d 2d 28 35 38 30 3c 3c  |f%:q%!48=-(580<<|
00006b70  79 65 66 25 29 0d 04 04  2e 20 20 20 c9 20 33 3a  |yef%)....   . 3:|
00006b80  71 25 21 35 32 3d 31 30  32 33 3c 3c 78 65 66 25  |q%!52=1023<<xef%|
00006b90  3a 71 25 21 34 38 3d 2d  28 37 34 38 3c 3c 79 65  |:q%!48=-(748<<ye|
00006ba0  66 25 29 0d 04 05 2d 20  20 20 c9 20 34 3a 71 25  |f%)...-   . 4:q%|
00006bb0  21 35 32 3d 31 33 32 30  3a 71 25 21 34 38 3d 2d  |!52=1320:q%!48=-|
00006bc0  32 30 30 30 3a 70 6f 72  74 72 61 69 74 25 3d b9  |2000:portrait%=.|
00006bd0  0d 04 06 06 20 cb 0d 04  07 2b 20 c8 99 20 22 57  |.... ....+ .. "W|
00006be0  69 6d 70 5f 43 72 65 61  74 65 57 69 6e 64 6f 77  |imp_CreateWindow|
00006bf0  22 2c 2c 71 25 2b 34 20  b8 20 6d 61 69 6e 5f 77  |",,q%+4 . main_w|
00006c00  25 0d 04 08 55 20 21 71  25 3d 6d 61 69 6e 5f 77  |%...U !q%=main_w|
00006c10  25 3a c8 99 20 67 65 74  77 25 2c 2c 71 25 3a f2  |%:.. getw%,,q%:.|
00006c20  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 21 71 25 2c  |open_window(!q%,|
00006c30  71 25 21 34 2c 71 25 21  38 2c 71 25 21 31 32 2c  |q%!4,q%!8,q%!12,|
00006c40  71 25 21 31 36 2c 71 25  21 32 30 2c 71 25 21 32  |q%!16,q%!20,q%!2|
00006c50  34 2c 62 68 25 29 0d 04  09 06 20 e1 0d 04 0a 04  |4,bh%).... .....|
00006c60  0d 04 0b 50 f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |...P. **********|
00006c70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00006c80  2a 2a 2a 20 63 6c 69 63  6b 73 20 62 65 6c 6f 77  |*** clicks below|
00006c90  20 68 65 72 65 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | here **********|
00006ca0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00006cb0  0d 04 0c 04 0d 04 0d 13  20 dd f2 62 65 67 69 6e  |........ ..begin|
00006cc0  5f 74 72 79 69 6e 67 0d  04 0e 0e 20 74 72 79 69  |_trying.... tryi|
00006cd0  6e 67 25 3d b9 0d 04 0f  16 20 63 6c 69 63 6b 5f  |ng%=..... click_|
00006ce0  75 6e 64 65 72 77 61 79  25 3d a3 0d 04 10 10 20  |underway%=..... |
00006cf0  70 61 75 73 65 5f 6f 6e  25 3d a3 0d 04 11 16 20  |pause_on%=..... |
00006d00  70 6f 69 6e 74 65 72 5f  6f 62 6a 65 63 74 25 3d  |pointer_object%=|
00006d10  30 0d 04 12 0e 20 69 6e  70 75 74 24 3d 22 22 0d  |0.... input$="".|
00006d20  04 13 15 20 f2 7a 65 72  6f 5f 70 61 67 65 5f 73  |... .zero_page_s|
00006d30  74 61 63 6b 0d 04 14 11  20 f2 70 72 65 5f 70 72  |tack.... .pre_pr|
00006d40  6f 63 65 73 73 0d 04 15  1e 20 f2 73 68 6f 77 5f  |ocess.... .show_|
00006d50  70 61 67 65 28 63 75 72  72 65 6e 74 5f 70 61 67  |page(current_pag|
00006d60  65 25 29 0d 04 16 16 20  e7 20 73 63 61 6e 6e 69  |e%).... . scanni|
00006d70  6e 67 25 20 f2 73 63 61  6e 0d 04 17 1d 20 ff 20  |ng% .scan.... . |
00006d80  22 73 65 74 20 55 6f 62  6a 65 63 74 20 22 2b bd  |"set Uobject "+.|
00006d90  33 34 2b bd 33 34 0d 04  18 06 20 e1 0d 04 19 04  |34+.34.... .....|
00006da0  0d 04 1a 0e 20 dd f2 64  65 6c 69 67 68 74 0d 04  |.... ..delight..|
00006db0  1b 21 20 73 74 61 63 6b  25 3d a4 73 74 61 63 6b  |.! stack%=.stack|
00006dc0  28 63 75 72 72 65 6e 74  5f 70 61 67 65 25 29 0d  |(current_page%).|
00006dd0  04 1c 1e 20 c8 99 20 6e  65 6e 74 72 69 65 73 25  |... .. nentries%|
00006de0  2c 73 74 61 63 6b 25 20  b8 20 6e 6f 25 0d 04 1d  |,stack% . no%...|
00006df0  0c 20 e7 20 6e 6f 25 20  8c 0d 04 1e 16 20 20 20  |. . no% .....   |
00006e00  e3 20 6f 62 6a 65 63 74  25 3d 31 b8 6e 6f 25 0d  |. object%=1.no%.|
00006e10  04 1f 29 20 20 20 20 20  c8 99 20 67 65 74 6e 74  |..)     .. getnt|
00006e20  68 25 2c 73 74 61 63 6b  25 2c 6f 62 6a 65 63 74  |h%,stack%,object|
00006e30  25 20 b8 20 61 64 72 25  0d 04 20 2b 20 20 20 20  |% . adr%.. +    |
00006e40  20 e7 20 61 64 72 25 21  33 36 20 80 20 31 20 61  | . adr%!36 . 1 a|
00006e50  64 72 25 21 33 36 3d 28  61 64 72 25 21 33 36 29  |dr%!36=(adr%!36)|
00006e60  80 2d 32 0d 04 21 08 20  20 20 ed 0d 04 22 06 20  |.-2..!.   ...". |
00006e70  cd 0d 04 23 37 20 e7 20  73 70 65 61 6b 5f 74 6f  |...#7 . speak_to|
00006e80  6b 65 6e 25 20 f2 75 70  64 61 74 65 5f 6f 62 6a  |ken% .update_obj|
00006e90  65 63 74 28 73 74 61 63  6b 25 2c 73 70 65 61 6b  |ect(stack%,speak|
00006ea0  5f 74 6f 6b 65 6e 25 29  0d 04 24 06 20 e1 0d 04  |_token%)..$. ...|
00006eb0  25 04 0d 04 26 44 20 dd  f2 7a 65 72 6f 5f 70 61  |%...&D ..zero_pa|
00006ec0  67 65 5f 73 74 61 63 6b  3a e3 54 25 3d 30 b8 31  |ge_stack:.T%=0.1|
00006ed0  30 32 30 88 34 3a 54 25  21 70 61 67 65 5f 73 74  |020.4:T%!page_st|
00006ee0  61 63 6b 25 3d 30 3a ed  3a 70 61 67 65 5f 70 74  |ack%=0:.:page_pt|
00006ef0  72 25 3d 30 3a e1 0d 04  27 04 0d 04 28 12 20 dd  |r%=0:...'...(. .|
00006f00  f2 70 72 65 5f 70 72 6f  63 65 73 73 0d 04 29 16  |.pre_process..).|
00006f10  20 70 6f 69 6e 74 65 72  5f 6f 62 6a 65 63 74 25  | pointer_object%|
00006f20  3d 30 0d 04 2a 13 20 70  6f 69 6e 74 65 72 5f 69  |=0..*. pointer_i|
00006f30  6e 74 25 3d 30 0d 04 2b  11 20 6f 66 74 65 6e 5f  |nt%=0..+. often_|
00006f40  69 6e 74 25 3d 30 0d 04  2c 0f 20 73 65 71 5f 69  |int%=0..,. seq_i|
00006f50  6e 74 25 3d 30 0d 04 2d  13 20 73 63 61 6e 5f 6f  |nt%=0..-. scan_o|
00006f60  62 6a 65 63 74 25 3d 30  0d 04 2e 32 20 73 70 65  |bject%=0...2 spe|
00006f70  61 6b 69 6e 67 5f 74 65  78 74 25 3d 30 3a 73 70  |aking_text%=0:sp|
00006f80  65 61 6b 5f 77 6f 72 64  25 3d 30 3a 73 70 65 61  |eak_word%=0:spea|
00006f90  6b 5f 74 6f 6b 65 6e 25  3d 30 0d 04 2f 12 20 70  |k_token%=0../. p|
00006fa0  6f 69 6e 74 65 72 5f 6f  6e 25 3d b9 0d 04 30 10  |ointer_on%=...0.|
00006fb0  20 74 72 79 5f 74 69 6d  65 25 3d 91 0d 04 31 06  | try_time%=...1.|
00006fc0  20 f5 0d 04 32 24 20 20  c8 99 20 6e 65 6e 74 72  | ...2$  .. nentr|
00006fd0  69 65 73 25 2c 73 5f 73  65 71 75 65 6e 63 65 73  |ies%,s_sequences|
00006fe0  25 20 b8 20 73 25 0d 04  33 0c 20 20 e7 20 73 25  |% . s%..3.  . s%|
00006ff0  20 8c 0d 04 34 2f 20 20  20 20 c8 99 20 67 65 74  | ...4/    .. get|
00007000  6e 74 68 25 2c 73 5f 73  65 71 75 65 6e 63 65 73  |nth%,s_sequences|
00007010  25 2c 31 20 b8 20 61 64  72 25 2c 74 6f 6b 65 6e  |%,1 . adr%,token|
00007020  25 0d 04 35 43 20 20 20  20 c8 99 20 6b 69 6c 6c  |%..5C    .. kill|
00007030  65 6e 74 72 79 25 2c 73  5f 73 65 71 75 65 6e 63  |entry%,s_sequenc|
00007040  65 73 25 2c 74 6f 6b 65  6e 25 3a f4 20 20 20 20  |es%,token%:.    |
00007050  20 63 6c 65 61 72 20 61  6c 6c 20 73 65 71 75 65  | clear all seque|
00007060  6e 63 65 73 0d 04 36 07  20 20 cd 0d 04 37 0a 20  |nces..6.  ...7. |
00007070  fd 73 25 3d 30 0d 04 38  06 20 f5 0d 04 39 23 20  |.s%=0..8. ...9# |
00007080  20 c8 99 20 6e 65 6e 74  72 69 65 73 25 2c 73 5f  | .. nentries%,s_|
00007090  63 6c 69 63 6b 73 6f 6e  25 20 b8 20 73 25 0d 04  |clickson% . s%..|
000070a0  3a 0c 20 20 e7 20 73 25  20 8c 0d 04 3b 2a 20 20  |:.  . s% ...;*  |
000070b0  20 20 c8 99 20 67 65 74  6e 74 68 25 2c 73 5f 63  |  .. getnth%,s_c|
000070c0  6c 69 63 6b 73 6f 6e 25  2c 31 20 b8 20 2c 74 6f  |lickson%,1 . ,to|
000070d0  6b 65 6e 25 0d 04 3c 3f  20 20 20 20 c8 99 20 6b  |ken%..<?    .. k|
000070e0  69 6c 6c 65 6e 74 72 79  25 2c 73 5f 63 6c 69 63  |illentry%,s_clic|
000070f0  6b 73 6f 6e 25 2c 74 6f  6b 65 6e 25 3a f4 20 20  |kson%,token%:.  |
00007100  20 20 20 63 6c 65 61 72  20 61 6c 6c 20 63 6c 69  |   clear all cli|
00007110  63 6b 73 0d 04 3d 07 20  20 cd 0d 04 3e 0a 20 fd  |cks..=.  ...>. .|
00007120  73 25 3d 30 0d 04 3f 21  20 73 74 61 63 6b 25 3d  |s%=0..?! stack%=|
00007130  a4 73 74 61 63 6b 28 63  75 72 72 65 6e 74 5f 70  |.stack(current_p|
00007140  61 67 65 25 29 0d 04 40  2f 20 c8 99 20 67 65 74  |age%)..@/ .. get|
00007150  65 6e 74 72 79 25 2c 73  5f 70 61 67 65 73 25 2c  |entry%,s_pages%,|
00007160  63 75 72 72 65 6e 74 5f  70 61 67 65 25 20 b8 20  |current_page% . |
00007170  61 64 72 25 0d 04 41 32  20 e7 20 61 64 72 25 21  |adr%..A2 . adr%!|
00007180  32 34 20 c8 99 20 77 72  69 74 65 73 74 61 74 75  |24 .. writestatu|
00007190  73 25 2c 73 5f 63 6c 69  63 6b 73 25 2c 61 64 72  |s%,s_clicks%,adr|
000071a0  25 21 32 34 2c 30 0d 04  42 1e 20 c8 99 20 6e 65  |%!24,0..B. .. ne|
000071b0  6e 74 72 69 65 73 25 2c  73 74 61 63 6b 25 20 b8  |ntries%,stack% .|
000071c0  20 6e 6f 25 0d 04 43 0c  20 e7 20 6e 6f 25 20 8c  | no%..C. . no% .|
000071d0  0d 04 44 16 20 20 20 e3  20 6f 62 6a 65 63 74 25  |..D.   . object%|
000071e0  3d 31 b8 6e 6f 25 0d 04  45 29 20 20 20 20 20 c8  |=1.no%..E)     .|
000071f0  99 20 67 65 74 6e 74 68  25 2c 73 74 61 63 6b 25  |. getnth%,stack%|
00007200  2c 6f 62 6a 65 63 74 25  20 b8 20 61 64 72 25 0d  |,object% . adr%.|
00007210  04 46 61 20 20 20 20 20  61 64 72 25 21 33 36 3d  |.Fa     adr%!36=|
00007220  28 61 64 72 25 21 33 36  29 80 26 46 46 46 46 46  |(adr%!36).&FFFFF|
00007230  46 33 45 3a f4 20 20 20  20 20 65 6e 73 75 72 65  |F3E:.     ensure|
00007240  20 61 6c 6c 20 6f 62 6a  65 63 74 73 20 73 68 6f  | all objects sho|
00007250  77 6e 2c 20 75 6e 73 65  6c 65 63 74 65 64 20 61  |wn, unselected a|
00007260  6e 64 20 75 6e 68 69 67  68 6c 69 67 68 74 65 64  |nd unhighlighted|
00007270  0d 04 47 17 20 20 20 20  20 63 6c 69 63 6b 25 3d  |..G.     click%=|
00007280  61 64 72 25 21 32 38 0d  04 48 68 20 20 20 20 20  |adr%!28..Hh     |
00007290  e7 20 63 6c 69 63 6b 25  20 c8 99 20 77 72 69 74  |. click% .. writ|
000072a0  65 73 74 61 74 75 73 25  2c 73 5f 63 6c 69 63 6b  |estatus%,s_click|
000072b0  73 25 2c 63 6c 69 63 6b  25 2c 30 3a f4 20 20 20  |s%,click%,0:.   |
000072c0  20 20 20 20 20 20 20 7a  65 72 6f 20 73 74 61 74  |       zero stat|
000072d0  75 73 20 74 6f 20 61 76  6f 69 64 20 72 65 70 65  |us to avoid repe|
000072e0  74 69 74 69 6f 6e 20 6f  66 20 63 6c 69 63 6b 0d  |tition of click.|
000072f0  04 49 08 20 20 20 ed 0d  04 4a 06 20 cd 0d 04 4b  |.I.   ...J. ...K|
00007300  14 20 e3 20 6f 62 6a 65  63 74 25 3d 30 b8 6e 6f  |. . object%=0.no|
00007310  25 0d 04 4c 14 20 20 20  e7 20 6f 62 6a 65 63 74  |%..L.   . object|
00007320  25 3d 30 20 8c 0d 04 4d  33 20 20 20 20 20 c8 99  |%=0 ...M3     ..|
00007330  20 67 65 74 65 6e 74 72  79 25 2c 73 5f 70 61 67  | getentry%,s_pag|
00007340  65 73 25 2c 63 75 72 72  65 6e 74 5f 70 61 67 65  |es%,current_page|
00007350  25 20 b8 20 61 64 72 25  0d 04 4e 17 20 20 20 20  |% . adr%..N.    |
00007360  20 63 6c 69 63 6b 25 3d  61 64 72 25 21 32 34 0d  | click%=adr%!24.|
00007370  04 4f 08 20 20 20 cc 0d  04 50 29 20 20 20 20 20  |.O.   ...P)     |
00007380  c8 99 20 67 65 74 6e 74  68 25 2c 73 74 61 63 6b  |.. getnth%,stack|
00007390  25 2c 6f 62 6a 65 63 74  25 20 b8 20 61 64 72 25  |%,object% . adr%|
000073a0  0d 04 51 17 20 20 20 20  20 63 6c 69 63 6b 25 3d  |..Q.     click%=|
000073b0  61 64 72 25 21 32 38 0d  04 52 08 20 20 20 cd 0d  |adr%!28..R.   ..|
000073c0  04 53 11 20 20 20 e7 20  63 6c 69 63 6b 25 20 8c  |.S.   . click% .|
000073d0  0d 04 54 2d 20 20 20 20  20 c8 99 20 67 65 74 65  |..T-     .. gete|
000073e0  6e 74 72 79 25 2c 73 5f  63 6c 69 63 6b 73 25 2c  |ntry%,s_clicks%,|
000073f0  63 6c 69 63 6b 25 20 b8  20 61 64 72 25 0d 04 55  |click% . adr%..U|
00007400  2d 20 20 20 20 20 c8 99  20 72 65 61 64 73 74 61  |-     .. readsta|
00007410  74 75 73 25 2c 73 5f 63  6c 69 63 6b 73 25 2c 63  |tus%,s_clicks%,c|
00007420  6c 69 63 6b 25 20 b8 20  73 25 0d 04 56 11 20 20  |lick% . s%..V.  |
00007430  20 20 20 e7 20 73 25 3d  30 20 8c 0d 04 57 2d 20  |   . s%=0 ...W- |
00007440  20 20 20 20 20 20 c8 99  20 77 72 69 74 65 73 74  |      .. writest|
00007450  61 74 75 73 25 2c 73 5f  63 6c 69 63 6b 73 25 2c  |atus%,s_clicks%,|
00007460  63 6c 69 63 6b 25 2c 31  0d 04 58 35 20 20 20 20  |click%,1..X5    |
00007470  20 20 20 e7 20 61 64 72  25 21 34 20 f2 70 72 65  |   . adr%!4 .pre|
00007480  5f 63 6c 69 63 6b 28 73  5f 6d 6f 75 73 65 64 72  |_click(s_mousedr|
00007490  61 67 25 2c 61 64 72 25  21 34 2c 30 29 0d 04 59  |ag%,adr%!4,0)..Y|
000074a0  15 20 20 20 20 20 20 20  e7 20 61 64 72 25 21 38  |.       . adr%!8|
000074b0  20 8c 0d 04 5a 19 20 20  20 20 20 20 20 20 20 6f  | ...Z.         o|
000074c0  66 74 65 6e 5f 69 6e 74  25 3d b9 0d 04 5b 26 20  |ften_int%=...[& |
000074d0  20 20 20 20 20 20 20 20  61 64 72 25 21 32 34 3d  |        adr%!24=|
000074e0  74 72 79 5f 74 69 6d 65  25 2b 61 64 72 25 21 31  |try_time%+adr%!1|
000074f0  32 0d 04 5c 2a 20 20 20  20 20 20 20 20 20 f2 70  |2..\*         .p|
00007500  72 65 5f 63 6c 69 63 6b  28 73 5f 6f 66 74 65 6e  |re_click(s_often|
00007510  25 2c 61 64 72 25 21 38  2c 31 29 0d 04 5d 0c 20  |%,adr%!8,1)..]. |
00007520  20 20 20 20 20 20 cd 0d  04 5e 16 20 20 20 20 20  |      ...^.     |
00007530  20 20 e7 20 61 64 72 25  21 31 36 20 8c 0d 04 5f  |  . adr%!16 ..._|
00007540  1b 20 20 20 20 20 20 20  20 20 70 6f 69 6e 74 65  |.         pointe|
00007550  72 5f 69 6e 74 25 3d b9  0d 04 60 2d 20 20 20 20  |r_int%=...`-    |
00007560  20 20 20 20 20 f2 70 72  65 5f 63 6c 69 63 6b 28  |     .pre_click(|
00007570  73 5f 70 6f 69 6e 74 65  72 25 2c 61 64 72 25 21  |s_pointer%,adr%!|
00007580  31 36 2c 31 29 0d 04 61  0c 20 20 20 20 20 20 20  |16,1)..a.       |
00007590  cd 0d 04 62 33 20 20 20  20 20 20 20 e7 20 61 64  |...b3       . ad|
000075a0  72 25 21 32 30 20 f2 70  72 65 5f 63 6c 69 63 6b  |r%!20 .pre_click|
000075b0  28 73 5f 6d 6f 75 73 65  25 2c 61 64 72 25 21 32  |(s_mouse%,adr%!2|
000075c0  30 2c 31 29 0d 04 63 16  20 20 20 20 20 20 20 e7  |0,1)..c.       .|
000075d0  20 61 64 72 25 21 33 32  20 8c 0d 04 64 2f 20 20  | adr%!32 ...d/  |
000075e0  20 20 20 20 20 20 20 f2  70 72 65 5f 63 6c 69 63  |       .pre_clic|
000075f0  6b 28 73 5f 70 61 67 65  73 68 6f 77 6e 25 2c 61  |k(s_pageshown%,a|
00007600  64 72 25 21 33 32 2c 31  29 0d 04 65 2c 20 20 20  |dr%!32,1)..e,   |
00007610  20 20 20 20 20 20 f2 64  6f 5f 63 6c 69 63 6b 28  |      .do_click(|
00007620  73 5f 70 61 67 65 73 68  6f 77 6e 25 2c 61 64 72  |s_pageshown%,adr|
00007630  25 21 33 32 29 0d 04 66  0c 20 20 20 20 20 20 20  |%!32)..f.       |
00007640  cd 0d 04 67 0a 20 20 20  20 20 cd 0d 04 68 08 20  |...g.     ...h. |
00007650  20 20 cd 0d 04 69 06 20  ed 0d 04 6a 06 20 e1 0d  |  ...i. ...j. ..|
00007660  04 6b 04 0d 04 6c 26 20  dd f2 70 72 65 5f 63 6c  |.k...l& ..pre_cl|
00007670  69 63 6b 28 63 6f 6e 74  65 78 74 25 2c 63 6c 69  |ick(context%,cli|
00007680  63 6b 25 2c 73 65 71 25  29 0d 04 6d 0b 20 ea 20  |ck%,seq%)..m. . |
00007690  61 64 72 25 0d 04 6e 28  20 c8 99 20 67 65 74 65  |adr%..n( .. gete|
000076a0  6e 74 72 79 25 2c 63 6f  6e 74 65 78 74 25 2c 63  |ntry%,context%,c|
000076b0  6c 69 63 6b 25 20 b8 20  61 64 72 25 0d 04 6f 1c  |lick% . adr%..o.|
000076c0  20 65 6e 64 25 3d 61 64  72 25 2b 21 61 64 72 25  | end%=adr%+!adr%|
000076d0  3a 61 64 72 25 2b 3d 34  0d 04 70 06 20 f5 0d 04  |:adr%+=4..p. ...|
000076e0  71 1d 20 20 20 6c 65 6e  25 3d 21 61 64 72 25 3a  |q.   len%=!adr%:|
000076f0  63 6d 64 25 3d 61 64 72  25 21 34 0d 04 72 10 20  |cmd%=adr%!4..r. |
00007700  20 20 c8 8e 20 63 6d 64  25 20 ca 0d 04 73 38 20  |  .. cmd% ...s8 |
00007710  20 20 20 20 c9 20 31 2c  33 2c 34 3a e7 20 73 65  |    . 1,3,4:. se|
00007720  71 25 3d 30 20 f2 70 72  65 5f 6c 69 73 74 28 63  |q%=0 .pre_list(c|
00007730  6d 64 25 2c 61 64 72 25  2b 38 2c 6c 65 6e 25 2d  |md%,adr%+8,len%-|
00007740  31 32 29 0d 04 74 41 20  20 20 20 20 c9 20 35 3a  |12)..tA     . 5:|
00007750  e7 20 63 6f 6e 74 65 78  74 25 3d 73 5f 70 61 67  |. context%=s_pag|
00007760  65 73 68 6f 77 6e 25 20  80 20 73 65 71 25 3d 30  |eshown% . seq%=0|
00007770  20 f2 70 6c 61 79 5f 73  6f 75 6e 64 28 61 64 72  | .play_sound(adr|
00007780  25 21 38 29 0d 04 75 0d  20 20 20 20 20 c9 20 37  |%!8)..u.     . 7|
00007790  3a 0d 04 76 13 20 20 20  20 20 20 20 e7 20 73 65  |:..v.       . se|
000077a0  71 25 20 8c 0d 04 77 17  20 20 20 20 20 20 20 20  |q% ...w.        |
000077b0  20 73 65 71 5f 69 6e 74  25 3d b9 0d 04 78 30 20  | seq_int%=...x0 |
000077c0  20 20 20 20 20 20 20 20  66 6c 61 67 25 3d 61 64  |        flag%=ad|
000077d0  72 25 21 31 32 3a 73 25  3d 61 64 72 25 2b 33 36  |r%!12:s%=adr%+36|
000077e0  3a 65 25 3d 6c 65 6e 25  2d 34 30 0d 04 79 2e 20  |:e%=len%-40..y. |
000077f0  20 20 20 20 20 20 20 20  e7 20 66 6c 61 67 25 20  |        . flag% |
00007800  80 20 34 20 73 25 3d 61  64 72 25 2b 34 30 3a 65  |. 4 s%=adr%+40:e|
00007810  25 3d 6c 65 6e 25 2d 34  34 0d 04 7a 1f 20 20 20  |%=len%-44..z.   |
00007820  20 20 20 20 20 20 f2 70  72 65 5f 6c 69 73 74 28  |      .pre_list(|
00007830  33 2c 73 25 2c 65 25 29  0d 04 7b 0c 20 20 20 20  |3,s%,e%)..{.    |
00007840  20 20 20 cd 0d 04 7c 08  20 20 20 cb 0d 04 7d 11  |   ...|.   ...}.|
00007850  20 20 20 61 64 72 25 2b  3d 6c 65 6e 25 0d 04 7e  |   adr%+=len%..~|
00007860  11 20 fd 20 61 64 72 25  3e 3d 65 6e 64 25 0d 04  |. . adr%>=end%..|
00007870  7f 06 20 e1 0d 04 80 04  0d 04 81 1f 20 dd f2 70  |.. ......... ..p|
00007880  72 65 5f 6c 69 73 74 28  63 6d 64 25 2c 61 64 72  |re_list(cmd%,adr|
00007890  25 2c 6c 65 6e 25 29 0d  04 82 14 20 e3 6c 69 73  |%,len%).... .lis|
000078a0  74 25 3d 30 b8 6c 65 6e  25 88 34 0d 04 83 10 20  |t%=0.len%.4.... |
000078b0  20 20 c8 8e 20 63 6d 64  25 20 ca 0d 04 84 31 20  |  .. cmd% ....1 |
000078c0  20 20 20 20 c9 20 31 3a  f2 6c 69 67 68 74 5f 6f  |    . 1:.light_o|
000078d0  62 6a 65 63 74 28 73 74  61 63 6b 25 2c 6c 69 73  |bject(stack%,lis|
000078e0  74 25 21 61 64 72 25 2c  31 2c 30 29 0d 04 85 30  |t%!adr%,1,0)...0|
000078f0  20 20 20 20 20 c9 20 33  3a f2 68 69 64 65 5f 6f  |     . 3:.hide_o|
00007900  62 6a 65 63 74 28 73 74  61 63 6b 25 2c 6c 69 73  |bject(stack%,lis|
00007910  74 25 21 61 64 72 25 2c  31 2c 30 29 0d 04 86 30  |t%!adr%,1,0)...0|
00007920  20 20 20 20 20 c9 20 34  3a f2 68 69 64 65 5f 6f  |     . 4:.hide_o|
00007930  62 6a 65 63 74 28 73 74  61 63 6b 25 2c 6c 69 73  |bject(stack%,lis|
00007940  74 25 21 61 64 72 25 2c  30 2c 30 29 0d 04 87 08  |t%!adr%,0,0)....|
00007950  20 20 20 cb 0d 04 88 06  20 ed 0d 04 89 06 20 e1  |   ..... ..... .|
00007960  0d 04 8a 04 0d 04 8b 0f  20 dd f2 74 72 79 5f 70  |........ ..try_p|
00007970  6f 6c 6c 0d 04 8c 16 20  c8 99 20 70 6f 6c 6c 25  |oll.... .. poll%|
00007980  2c 2c 71 25 20 b8 20 41  25 0d 04 8d 14 20 c8 99  |,,q% . A%.... ..|
00007990  20 70 6c 61 79 73 6f 75  6e 64 25 2c 30 0d 04 8e  | playsound%,0...|
000079a0  26 20 c8 99 20 22 4f 53  5f 4d 6f 64 75 6c 65 22  |& .. "OS_Module"|
000079b0  2c 31 36 2c 22 55 62 61  73 65 25 55 6c 74 69 6d  |,16,"Ubase%Ultim|
000079c0  61 70 22 0d 04 8f 0c 20  c8 8e 20 41 25 20 ca 0d  |ap".... .. A% ..|
000079d0  04 90 14 20 20 20 c9 20  30 3a f2 74 72 79 5f 6e  |...   . 0:.try_n|
000079e0  75 6c 6c 0d 04 91 19 20  20 20 c9 20 31 3a f2 72  |ull....   . 1:.r|
000079f0  65 64 72 61 77 5f 77 69  6e 64 6f 77 0d 04 92 44  |edraw_window...D|
00007a00  20 20 20 c9 20 32 3a f2  6f 70 65 6e 5f 77 69 6e  |   . 2:.open_win|
00007a10  64 6f 77 28 21 71 25 2c  71 25 21 34 2c 71 25 21  |dow(!q%,q%!4,q%!|
00007a20  38 2c 71 25 21 31 32 2c  71 25 21 31 36 2c 71 25  |8,q%!12,q%!16,q%|
00007a30  21 32 30 2c 71 25 21 32  34 2c 71 25 21 32 38 29  |!20,q%!24,q%!28)|
00007a40  0d 04 93 1d 20 20 20 c9  20 33 3a f2 63 6c 6f 73  |....   . 3:.clos|
00007a50  65 5f 77 69 6e 64 6f 77  28 21 71 25 29 0d 04 94  |e_window(!q%)...|
00007a60  35 20 20 20 c9 20 34 3a  e7 20 21 71 25 3d 6d 61  |5   . 4:. !q%=ma|
00007a70  69 6e 5f 77 25 20 80 20  70 6f 69 6e 74 65 72 5f  |in_w% . pointer_|
00007a80  6f 6e 25 3d 30 20 ff 22  70 6f 69 6e 74 65 72 20  |on%=0 ."pointer |
00007a90  31 22 0d 04 95 4e 20 20  20 c9 20 35 3a e7 20 21  |1"...N   . 5:. !|
00007aa0  71 25 3d 6d 61 69 6e 5f  77 25 20 80 20 70 6f 69  |q%=main_w% . poi|
00007ab0  6e 74 65 72 5f 6f 6e 25  3d 30 20 c8 99 20 22 57  |nter_on%=0 .. "W|
00007ac0  69 6d 70 5f 53 70 72 69  74 65 4f 70 22 2c 33 36  |imp_SpriteOp",36|
00007ad0  2c 31 2c 22 70 74 72 5f  63 6c 6f 63 6b 22 2c 32  |,1,"ptr_clock",2|
00007ae0  0d 04 96 15 20 20 20 c9  20 36 3a f2 74 72 79 5f  |....   . 6:.try_|
00007af0  6d 6f 75 73 65 0d 04 97  19 20 20 20 c9 20 37 3a  |mouse....   . 7:|
00007b00  f2 74 72 79 5f 75 73 65  72 5f 64 72 61 67 0d 04  |.try_user_drag..|
00007b10  98 14 20 20 20 c9 20 38  3a f2 74 72 79 5f 6b 65  |..   . 8:.try_ke|
00007b20  79 73 0d 04 99 1b 20 20  20 c9 20 39 3a f2 74 72  |ys....   . 9:.tr|
00007b30  79 5f 6d 65 6e 75 5f 73  65 6c 65 63 74 0d 04 9a  |y_menu_select...|
00007b40  1f 20 20 20 c9 20 31 37  2c 31 38 3a f2 74 72 79  |.   . 17,18:.try|
00007b50  5f 72 65 63 65 69 76 65  28 71 25 29 0d 04 9b 06  |_receive(q%)....|
00007b60  20 cb 0d 04 9c 06 20 e1  0d 04 9d 04 0d 04 9e 17  | ..... .........|
00007b70  20 dd 20 f2 74 72 79 5f  72 65 63 65 69 76 65 28  | . .try_receive(|
00007b80  71 25 29 0d 04 9f 0f 20  c8 8e 20 71 25 21 31 36  |q%).... .. q%!16|
00007b90  20 ca 0d 04 a0 14 20 20  20 c9 20 30 3a f2 66 69  | .....   . 0:.fi|
00007ba0  6e 69 73 68 3a e0 0d 04  a1 17 20 20 20 c9 20 32  |nish:.....   . 2|
00007bb0  3a f2 64 61 74 61 73 61  76 65 61 63 6b 0d 04 a2  |:.datasaveack...|
00007bc0  21 20 20 20 c9 20 33 3a  e7 20 71 25 21 34 30 3d  |!   . 3:. q%!40=|
00007bd0  26 42 43 33 20 f2 64 61  74 61 6c 6f 61 64 0d 04  |&BC3 .dataload..|
00007be0  a3 14 20 20 20 c9 20 36  3a f2 72 61 6d 66 65 74  |..   . 6:.ramfet|
00007bf0  63 68 0d 04 a4 1b 20 20  20 c9 20 26 35 30 32 3a  |ch....   . &502:|
00007c00  f2 68 65 6c 70 5f 72 65  71 75 65 73 74 0d 04 a5  |.help_request...|
00007c10  21 20 20 20 c9 20 26 34  30 30 43 30 3a f2 74 72  |!   . &400C0:.tr|
00007c20  79 5f 6d 65 6e 75 5f 77  61 72 6e 69 6e 67 0d 04  |y_menu_warning..|
00007c30  a6 10 20 20 20 c9 20 26  34 30 30 43 31 3a 0d 04  |..   . &400C1:..|
00007c40  a7 1a 20 20 20 20 20 c8  99 20 22 48 6f 75 72 67  |..     .. "Hourg|
00007c50  6c 61 73 73 5f 4f 6e 22  0d 04 a8 17 20 20 20 20  |lass_On"....    |
00007c60  20 f2 67 65 74 5f 6d 6f  64 65 5f 69 6e 66 6f 0d  | .get_mode_info.|
00007c70  04 a9 14 20 20 20 20 20  f2 6c 6f 73 65 5f 66 6f  |...     .lose_fo|
00007c80  6e 74 73 0d 04 aa 18 20  20 20 20 20 f2 73 65 74  |nts....     .set|
00007c90  5f 69 63 6f 6e 5f 66 6f  6e 74 73 0d 04 ab 1b 20  |_icon_fonts.... |
00007ca0  20 20 20 20 c8 99 20 22  48 6f 75 72 67 6c 61 73  |    .. "Hourglas|
00007cb0  73 5f 4f 66 66 22 0d 04  ac 06 20 cb 0d 04 ad 06  |s_Off".... .....|
00007cc0  20 e1 0d 04 ae 04 0d 04  af 0f 20 dd f2 74 72 79  | ......... ..try|
00007cd0  5f 6e 75 6c 6c 0d 04 b0  34 20 21 71 25 3d 6d 61  |_null...4 !q%=ma|
00007ce0  69 6e 5f 77 25 3a c8 99  20 67 65 74 77 25 2c 2c  |in_w%:.. getw%,,|
00007cf0  71 25 3a e7 28 28 71 25  21 33 32 29 80 28 31 3c  |q%:.((q%!32).(1<|
00007d00  3c 31 36 29 29 3d 30 20  e1 0d 04 b1 23 20 e7 20  |<16))=0 ....# . |
00007d10  73 65 71 5f 69 6e 74 25  20 f2 63 68 65 63 6b 5f  |seq_int% .check_|
00007d20  73 65 71 75 65 6e 63 65  73 28 91 29 0d 04 b2 12  |sequences(.)....|
00007d30  20 f2 63 68 65 63 6b 5f  63 6c 69 63 6b 73 0d 04  | .check_clicks..|
00007d40  b3 50 20 e7 20 c2 69 6e  70 75 74 24 2c 31 29 3d  |.P . .input$,1)=|
00007d50  bd 31 33 3a 69 6e 70 75  74 24 3d c0 69 6e 70 75  |.13:input$=.inpu|
00007d60  74 24 2c a9 28 69 6e 70  75 74 24 29 2d 31 29 3a  |t$,.(input$)-1):|
00007d70  21 71 25 3d 6d 61 69 6e  5f 77 25 3a 71 25 21 32  |!q%=main_w%:q%!2|
00007d80  34 3d 31 33 3a f2 74 72  79 5f 6b 65 79 73 0d 04  |4=13:.try_keys..|
00007d90  b4 30 20 e7 20 70 6f 69  6e 74 65 72 5f 69 6e 74  |.0 . pointer_int|
00007da0  25 20 80 20 73 63 61 6e  6e 69 6e 67 25 3d a3 20  |% . scanning%=. |
00007db0  f2 75 6e 64 65 72 5f 70  6f 69 6e 74 65 72 0d 04  |.under_pointer..|
00007dc0  b5 18 20 e7 20 6f 66 74  65 6e 5f 69 6e 74 25 20  |.. . often_int% |
00007dd0  f2 6f 66 74 65 6e 0d 04  b6 25 20 e7 20 73 63 61  |.often...% . sca|
00007de0  6e 6e 69 6e 67 25 20 80  20 73 63 61 6e 5f 6b 65  |nning% . scan_ke|
00007df0  79 73 25 3d 31 20 f2 73  63 61 6e 0d 04 b7 19 20  |ys%=1 .scan.... |
00007e00  c8 99 20 70 6c 61 79 73  6f 75 6e 64 25 2c 30 20  |.. playsound%,0 |
00007e10  b8 20 74 25 0d 04 b8 0f  20 e7 20 74 25 3c 3e 2d  |. t%.... . t%<>-|
00007e20  31 20 8c 0d 04 b9 19 20  20 20 e7 20 73 70 65 61  |1 .....   . spea|
00007e30  6b 69 6e 67 5f 74 65 78  74 25 20 8c 0d 04 ba 19  |king_text% .....|
00007e40  20 20 20 20 20 e7 20 73  70 65 61 6b 5f 73 6f 75  |     . speak_sou|
00007e50  6e 64 25 20 8c 0d 04 bb  29 20 20 20 20 20 20 20  |nd% ....)       |
00007e60  f2 70 6c 61 79 5f 73 6f  75 6e 64 5f 77 61 69 74  |.play_sound_wait|
00007e70  28 73 70 65 61 6b 5f 73  6f 75 6e 64 25 29 0d 04  |(speak_sound%)..|
00007e80  bc 0a 20 20 20 20 20 cc  0d 04 bd 1d 20 20 20 20  |..     .....    |
00007e90  20 20 20 ef 37 3a 74 25  3d 91 2b 35 30 3a f5 3a  |   .7:t%=.+50:.:|
00007ea0  fd 91 3e 74 25 0d 04 be  0a 20 20 20 20 20 cd 0d  |..>t%....     ..|
00007eb0  04 bf 17 20 20 20 20 20  f2 73 70 65 61 6b 69 6e  |...     .speakin|
00007ec0  67 5f 74 65 78 74 0d 04  c0 08 20 20 20 cd 0d 04  |g_text....   ...|
00007ed0  c1 06 20 cd 0d 04 c2 13  20 f2 63 68 65 63 6b 5f  |.. ..... .check_|
00007ee0  73 79 73 76 61 72 73 0d  04 c3 06 20 e1 0d 04 c4  |sysvars.... ....|
00007ef0  04 0d 04 c5 14 20 dd f2  63 68 65 63 6b 5f 73 79  |..... ..check_sy|
00007f00  73 76 61 72 73 0d 04 c6  31 20 c8 99 20 22 4f 53  |svars...1 .. "OS|
00007f10  5f 52 65 61 64 56 61 72  56 61 6c 22 2c 22 55 70  |_ReadVarVal","Up|
00007f20  61 67 65 22 2c 6d 61 69  6e 25 2c 31 30 30 30 20  |age",main%,1000 |
00007f30  b8 20 2c 2c 54 25 0d 04  c7 25 20 54 25 3f 6d 61  |. ,,T%...% T%?ma|
00007f40  69 6e 25 3d 30 3a 70 61  67 65 24 3d a4 73 74 72  |in%=0:page$=.str|
00007f50  69 6e 67 30 28 6d 61 69  6e 25 29 0d 04 c8 1d 20  |ing0(main%).... |
00007f60  e7 20 70 61 67 65 24 3c  3e 63 75 72 72 65 6e 74  |. page$<>current|
00007f70  5f 70 61 67 65 24 20 8c  0d 04 c9 2a 20 20 20 70  |_page$ ....*   p|
00007f80  61 67 65 25 3d a4 6e 61  6d 65 5f 65 78 73 69 73  |age%=.name_exsis|
00007f90  74 73 28 73 5f 70 61 67  65 73 25 2c 70 61 67 65  |ts(s_pages%,page|
00007fa0  24 29 0d 04 ca 10 20 20  20 e7 20 70 61 67 65 25  |$)....   . page%|
00007fb0  20 8c 0d 04 cb 1c 20 20  20 20 20 63 75 72 72 65  | .....     curre|
00007fc0  6e 74 5f 70 61 67 65 25  3d 70 61 67 65 25 0d 04  |nt_page%=page%..|
00007fd0  cc 15 20 20 20 20 20 f2  70 72 65 5f 70 72 6f 63  |..     .pre_proc|
00007fe0  65 73 73 0d 04 cd 22 20  20 20 20 20 f2 73 68 6f  |ess..."     .sho|
00007ff0  77 5f 70 61 67 65 28 63  75 72 72 65 6e 74 5f 70  |w_page(current_p|
00008000  61 67 65 25 29 0d 04 ce  1a 20 20 20 20 20 e7 20  |age%)....     . |
00008010  73 63 61 6e 6e 69 6e 67  25 20 f2 73 63 61 6e 0d  |scanning% .scan.|
00008020  04 cf 08 20 20 20 cd 0d  04 d0 06 20 cd 0d 04 d1  |...   ..... ....|
00008030  33 20 c8 99 20 22 4f 53  5f 52 65 61 64 56 61 72  |3 .. "OS_ReadVar|
00008040  56 61 6c 22 2c 22 55 6f  62 6a 65 63 74 22 2c 6d  |Val","Uobject",m|
00008050  61 69 6e 25 2c 31 30 30  30 20 b8 20 2c 2c 54 25  |ain%,1000 . ,,T%|
00008060  0d 04 d2 27 20 54 25 3f  6d 61 69 6e 25 3d 30 3a  |...' T%?main%=0:|
00008070  6f 62 6a 65 63 74 24 3d  a4 73 74 72 69 6e 67 30  |object$=.string0|
00008080  28 6d 61 69 6e 25 29 0d  04 d3 14 20 e7 20 6f 62  |(main%).... . ob|
00008090  6a 65 63 74 24 3c 3e 22  22 20 8c 0d 04 d4 1f 20  |ject$<>"" ..... |
000080a0  20 20 ff 20 22 73 65 74  20 55 6f 62 6a 65 63 74  |  . "set Uobject|
000080b0  20 22 2b bd 33 34 2b bd  33 34 0d 04 d5 34 20 20  | "+.34+.34...4  |
000080c0  20 69 6e 70 75 74 24 3d  6f 62 6a 65 63 74 24 3a  | input$=object$:|
000080d0  21 71 25 3d 6d 61 69 6e  5f 77 25 3a 71 25 21 32  |!q%=main_w%:q%!2|
000080e0  34 3d 31 33 3a f2 74 72  79 5f 6b 65 79 73 0d 04  |4=13:.try_keys..|
000080f0  d6 06 20 cd 0d 04 d7 06  20 e1 0d 04 d8 04 0d 04  |.. ..... .......|
00008100  d9 10 20 dd f2 74 72 79  5f 6d 6f 75 73 65 0d 04  |.. ..try_mouse..|
00008110  da 0f 20 c8 8e 20 71 25  21 31 32 20 ca 0d 04 db  |.. .. q%!12 ....|
00008120  3e 20 20 20 c9 20 2d 32  3a e7 20 71 25 21 31 36  |>   . -2:. q%!16|
00008130  3d 69 63 6f 6e 5f 62 61  72 25 20 d4 20 31 2c 26  |=icon_bar% . 1,&|
00008140  31 30 30 2c 26 39 30 30  30 2c 31 3a f2 63 68 65  |100,&9000,1:.che|
00008150  63 6b 5f 69 63 6f 6e 5f  62 61 72 0d 04 dc 1c 20  |ck_icon_bar.... |
00008160  20 20 c9 20 6d 61 69 6e  5f 77 25 3a f2 74 72 79  |  . main_w%:.try|
00008170  5f 6d 61 69 6e 5f 77 0d  04 dd 28 20 20 20 c9 20  |_main_w...(   . |
00008180  70 61 67 65 6c 69 73 74  5f 77 63 25 3a f2 63 68  |pagelist_wc%:.ch|
00008190  65 63 6b 5f 70 61 67 65  6c 69 73 74 5f 77 63 0d  |eck_pagelist_wc.|
000081a0  04 de 20 20 20 20 c9 20  70 72 69 6e 74 5f 77 25  |..    . print_w%|
000081b0  3a f2 63 68 65 63 6b 5f  70 72 69 6e 74 5f 77 0d  |:.check_print_w.|
000081c0  04 df 06 20 cb 0d 04 e0  06 20 e1 0d 04 e1 04 0d  |... ..... ......|
000081d0  04 e2 11 20 dd f2 74 72  79 5f 6d 61 69 6e 5f 77  |... ..try_main_w|
000081e0  0d 04 e3 23 20 c8 99 20  73 65 74 63 61 72 65 74  |...# .. setcaret|
000081f0  25 2c 6d 61 69 6e 5f 77  25 2c 2d 31 2c 30 2c 30  |%,main_w%,-1,0,0|
00008200  2c 31 30 0d 04 e4 15 20  6d 78 25 3d 21 71 25 3a  |,10.... mx%=!q%:|
00008210  6d 79 25 3d 71 25 21 34  0d 04 e5 11 20 62 75 74  |my%=q%!4.... but|
00008220  74 6f 6e 25 3d 71 25 21  38 0d 04 e6 12 20 e7 20  |ton%=q%!8.... . |
00008230  62 75 74 74 6f 6e 25 80  32 20 8c 0d 04 e7 2e 20  |button%.2 ..... |
00008240  20 20 e7 20 6d 65 6e 75  5f 65 6e 61 62 6c 65 64  |  . menu_enabled|
00008250  25 20 f2 6f 70 65 6e 5f  74 72 79 5f 6d 65 6e 75  |% .open_try_menu|
00008260  28 6d 78 25 2c 6d 79 25  29 0d 04 e8 08 20 20 20  |(mx%,my%)....   |
00008270  e1 0d 04 e9 06 20 cd 0d  04 ea 27 20 e7 20 73 63  |..... ....' . sc|
00008280  61 6e 6e 69 6e 67 25 20  f2 73 63 61 6e 5f 63 6c  |anning% .scan_cl|
00008290  69 63 6b 28 62 75 74 74  6f 6e 25 29 3a e1 0d 04  |ick(button%):...|
000082a0  eb 16 20 e7 20 70 6f 69  6e 74 65 72 5f 6f 6e 25  |.. . pointer_on%|
000082b0  3d a3 20 e1 0d 04 ec 10  20 69 63 6f 6e 25 3d 71  |=. ..... icon%=q|
000082c0  25 21 31 36 0d 04 ed 1d  20 21 71 25 3d 6d 61 69  |%!16.... !q%=mai|
000082d0  6e 5f 77 25 3a c8 99 20  67 65 74 77 25 2c 2c 71  |n_w%:.. getw%,,q|
000082e0  25 0d 04 ee 2b 20 6f 66  66 78 25 3d 28 71 25 21  |%...+ offx%=(q%!|
000082f0  34 2d 71 25 21 32 30 29  3a 6f 66 66 79 25 3d 28  |4-q%!20):offy%=(|
00008300  71 25 21 31 36 2d 71 25  21 32 34 29 0d 04 ef 1a  |q%!16-q%!24)....|
00008310  20 6d 78 25 2d 3d 6f 66  66 78 25 3a 6d 79 25 2d  | mx%-=offx%:my%-|
00008320  3d 6f 66 66 79 25 0d 04  f0 11 20 c8 8e 20 62 75  |=offy%.... .. bu|
00008330  74 74 6f 6e 25 20 ca 0d  04 f1 0c 20 20 20 c9 20  |tton% .....   . |
00008340  26 34 30 0d 04 f2 25 20  20 20 20 20 73 74 61 63  |&40...%     stac|
00008350  6b 25 3d a4 73 74 61 63  6b 28 63 75 72 72 65 6e  |k%=.stack(curren|
00008360  74 5f 70 61 67 65 25 29  0d 04 f3 35 20 20 20 20  |t_page%)...5    |
00008370  20 6f 62 6a 65 63 74 25  3d a4 77 68 69 63 68 5f  | object%=.which_|
00008380  6f 62 6a 65 63 74 28 63  75 72 72 65 6e 74 5f 70  |object(current_p|
00008390  61 67 65 25 2c 6d 78 25  2c 6d 79 25 29 0d 04 f4  |age%,mx%,my%)...|
000083a0  14 20 20 20 20 20 e7 20  6f 62 6a 65 63 74 25 20  |.     . object% |
000083b0  8c 0d 04 f5 2d 20 20 20  20 20 20 20 c8 99 20 67  |....-       .. g|
000083c0  65 74 65 6e 74 72 79 25  2c 73 74 61 63 6b 25 2c  |etentry%,stack%,|
000083d0  6f 62 6a 65 63 74 25 20  b8 20 61 64 72 25 0d 04  |object% . adr%..|
000083e0  f6 19 20 20 20 20 20 20  20 63 6c 69 63 6b 25 3d  |..       click%=|
000083f0  61 64 72 25 21 32 38 0d  04 f7 15 20 20 20 20 20  |adr%!28....     |
00008400  20 20 e7 20 63 6c 69 63  6b 25 20 8c 0d 04 f8 31  |  . click% ....1|
00008410  20 20 20 20 20 20 20 20  20 c8 99 20 67 65 74 65  |         .. gete|
00008420  6e 74 72 79 25 2c 73 5f  63 6c 69 63 6b 73 25 2c  |ntry%,s_clicks%,|
00008430  63 6c 69 63 6b 25 20 b8  20 61 64 72 25 0d 04 f9  |click% . adr%...|
00008440  17 20 20 20 20 20 20 20  20 20 e7 20 61 64 72 25  |.         . adr%|
00008450  21 34 20 8c 0d 04 fa 36  20 20 20 20 20 20 20 20  |!4 ....6        |
00008460  20 20 20 c8 99 20 67 65  74 65 6e 74 72 79 25 2c  |   .. getentry%,|
00008470  73 5f 6d 6f 75 73 65 64  72 61 67 25 2c 61 64 72  |s_mousedrag%,adr|
00008480  25 21 34 20 b8 20 61 64  72 25 0d 04 fb 2b 20 20  |%!4 . adr%...+  |
00008490  20 20 20 20 20 20 20 20  20 f2 62 65 67 69 6e 5f  |         .begin_|
000084a0  73 61 76 65 28 6f 62 6a  65 63 74 25 2c 61 64 72  |save(object%,adr|
000084b0  25 21 31 32 29 0d 04 fc  0e 20 20 20 20 20 20 20  |%!12)....       |
000084c0  20 20 cd 0d 04 fd 0c 20  20 20 20 20 20 20 cd 0d  |  .....       ..|
000084d0  04 fe 0a 20 20 20 20 20  cd 0d 04 ff 0d 20 20 20  |...     .....   |
000084e0  c9 20 26 31 30 30 0d 05  00 32 20 20 20 20 20 70  |. &100...2     p|
000084f0  61 67 65 5f 70 74 72 25  2d 3d 34 3a e7 20 70 61  |age_ptr%-=4:. pa|
00008500  67 65 5f 70 74 72 25 3c  30 20 70 61 67 65 5f 70  |ge_ptr%<0 page_p|
00008510  74 72 25 3d 31 30 32 30  0d 05 01 25 20 20 20 20  |tr%=1020...%    |
00008520  20 e7 20 70 61 67 65 5f  70 74 72 25 21 70 61 67  | . page_ptr%!pag|
00008530  65 5f 73 74 61 63 6b 25  3c 3e 30 20 8c 0d 05 02  |e_stack%<>0 ....|
00008540  13 20 20 20 20 20 20 20  f2 64 65 6c 69 67 68 74  |.       .delight|
00008550  0d 05 03 2e 20 20 20 20  20 20 20 63 75 72 72 65  |....       curre|
00008560  6e 74 5f 70 61 67 65 25  3d 70 61 67 65 5f 70 74  |nt_page%=page_pt|
00008570  72 25 21 70 61 67 65 5f  73 74 61 63 6b 25 0d 05  |r%!page_stack%..|
00008580  04 22 20 20 20 20 20 20  20 70 61 67 65 5f 70 74  |."       page_pt|
00008590  72 25 21 70 61 67 65 5f  73 74 61 63 6b 25 3d 30  |r%!page_stack%=0|
000085a0  0d 05 05 17 20 20 20 20  20 20 20 f2 70 72 65 5f  |....       .pre_|
000085b0  70 72 6f 63 65 73 73 0d  05 06 24 20 20 20 20 20  |process...$     |
000085c0  20 20 f2 73 68 6f 77 5f  70 61 67 65 28 63 75 72  |  .show_page(cur|
000085d0  72 65 6e 74 5f 70 61 67  65 25 29 0d 05 07 1c 20  |rent_page%).... |
000085e0  20 20 20 20 20 20 e7 20  73 63 61 6e 6e 69 6e 67  |      . scanning|
000085f0  25 20 f2 73 63 61 6e 0d  05 08 0a 20 20 20 20 20  |% .scan....     |
00008600  cd 0d 05 09 0d 20 20 20  c9 20 26 34 30 30 0d 05  |.....   . &400..|
00008610  0a 25 20 20 20 20 20 73  74 61 63 6b 25 3d a4 73  |.%     stack%=.s|
00008620  74 61 63 6b 28 63 75 72  72 65 6e 74 5f 70 61 67  |tack(current_pag|
00008630  65 25 29 0d 05 0b 35 20  20 20 20 20 6f 62 6a 65  |e%)...5     obje|
00008640  63 74 25 3d a4 77 68 69  63 68 5f 6f 62 6a 65 63  |ct%=.which_objec|
00008650  74 28 63 75 72 72 65 6e  74 5f 70 61 67 65 25 2c  |t(current_page%,|
00008660  6d 78 25 2c 6d 79 25 29  0d 05 0c 14 20 20 20 20  |mx%,my%)....    |
00008670  20 e7 20 6f 62 6a 65 63  74 25 20 8c 0d 05 0d 2d  | . object% ....-|
00008680  20 20 20 20 20 20 20 c8  99 20 67 65 74 65 6e 74  |       .. getent|
00008690  72 79 25 2c 73 74 61 63  6b 25 2c 6f 62 6a 65 63  |ry%,stack%,objec|
000086a0  74 25 20 b8 20 61 64 72  25 0d 05 0e 19 20 20 20  |t% . adr%....   |
000086b0  20 20 20 20 63 6c 69 63  6b 25 3d 61 64 72 25 21  |    click%=adr%!|
000086c0  32 38 0d 05 0f 15 20 20  20 20 20 20 20 e7 20 63  |28....       . c|
000086d0  6c 69 63 6b 25 20 8c 0d  05 10 31 20 20 20 20 20  |lick% ....1     |
000086e0  20 20 20 20 c8 99 20 67  65 74 65 6e 74 72 79 25  |    .. getentry%|
000086f0  2c 73 5f 63 6c 69 63 6b  73 25 2c 63 6c 69 63 6b  |,s_clicks%,click|
00008700  25 20 b8 20 61 64 72 25  0d 05 11 32 20 20 20 20  |% . adr%...2    |
00008710  20 20 20 20 20 e7 20 61  64 72 25 21 32 30 20 f2  |     . adr%!20 .|
00008720  64 6f 5f 63 6c 69 63 6b  28 73 5f 6d 6f 75 73 65  |do_click(s_mouse|
00008730  25 2c 61 64 72 25 21 32  30 29 0d 05 12 0c 20 20  |%,adr%!20)....  |
00008740  20 20 20 20 20 cd 0d 05  13 0a 20 20 20 20 20 cc  |     .....     .|
00008750  0d 05 14 35 20 20 20 20  20 20 20 c8 99 20 67 65  |...5       .. ge|
00008760  74 65 6e 74 72 79 25 2c  73 5f 70 61 67 65 73 25  |tentry%,s_pages%|
00008770  2c 63 75 72 72 65 6e 74  5f 70 61 67 65 25 20 b8  |,current_page% .|
00008780  20 61 64 72 25 0d 05 15  19 20 20 20 20 20 20 20  | adr%....       |
00008790  63 6c 69 63 6b 25 3d 61  64 72 25 21 32 34 0d 05  |click%=adr%!24..|
000087a0  16 15 20 20 20 20 20 20  20 e7 20 63 6c 69 63 6b  |..       . click|
000087b0  25 20 8c 0d 05 17 31 20  20 20 20 20 20 20 20 20  |% ....1         |
000087c0  c8 99 20 67 65 74 65 6e  74 72 79 25 2c 73 5f 63  |.. getentry%,s_c|
000087d0  6c 69 63 6b 73 25 2c 63  6c 69 63 6b 25 20 b8 20  |licks%,click% . |
000087e0  61 64 72 25 0d 05 18 32  20 20 20 20 20 20 20 20  |adr%...2        |
000087f0  20 e7 20 61 64 72 25 21  32 30 20 f2 64 6f 5f 63  | . adr%!20 .do_c|
00008800  6c 69 63 6b 28 73 5f 6d  6f 75 73 65 25 2c 61 64  |lick(s_mouse%,ad|
00008810  72 25 21 32 30 29 0d 05  19 0c 20 20 20 20 20 20  |r%!20)....      |
00008820  20 cd 0d 05 1a 0a 20 20  20 20 20 cd 0d 05 1b 06  | .....     .....|
00008830  20 cb 0d 05 1c 06 20 e1  0d 05 1d 04 0d 05 1e 0f  | ..... .........|
00008840  20 dd f2 74 72 79 5f 6b  65 79 73 0d 05 1f 0d 20  | ..try_keys.... |
00008850  c8 8e 20 21 71 25 20 ca  0d 05 20 10 20 20 20 c9  |.. !q% ... .   .|
00008860  20 6d 61 69 6e 5f 77 25  0d 05 21 13 20 20 20 20  | main_w%..!.    |
00008870  20 6b 65 79 25 3d 71 25  21 32 34 0d 05 22 14 20  | key%=q%!24..". |
00008880  20 20 20 20 e7 20 6b 65  79 25 3d 31 33 20 8c 0d  |    . key%=13 ..|
00008890  05 23 27 20 20 20 20 20  20 20 73 74 61 63 6b 25  |.#'       stack%|
000088a0  3d a4 73 74 61 63 6b 28  63 75 72 72 65 6e 74 5f  |=.stack(current_|
000088b0  70 61 67 65 25 29 0d 05  24 2f 20 20 20 20 20 20  |page%)..$/      |
000088c0  20 e7 20 a4 6c 6f 77 65  72 5f 63 61 73 65 28 c0  | . .lower_case(.|
000088d0  69 6e 70 75 74 24 2c 36  29 29 3d 22 6f 62 6a 65  |input$,6))="obje|
000088e0  63 74 22 20 8c 0d 05 25  2b 20 20 20 20 20 20 20  |ct" ...%+       |
000088f0  20 20 74 6f 6b 65 6e 25  3d bb 28 c2 69 6e 70 75  |  token%=.(.inpu|
00008900  74 24 2c a9 28 69 6e 70  75 74 24 29 2d 36 29 29  |t$,.(input$)-6))|
00008910  0d 05 26 2e 20 20 20 20  20 20 20 20 20 c8 99 20  |..&.         .. |
00008920  67 65 74 65 6e 74 72 79  25 2c 73 74 61 63 6b 25  |getentry%,stack%|
00008930  2c 74 6f 6b 65 6e 25 20  b8 20 61 64 72 25 0d 05  |,token% . adr%..|
00008940  27 15 20 20 20 20 20 20  20 20 20 e7 20 61 64 72  |'.         . adr|
00008950  25 20 8c 0d 05 28 1a 20  20 20 20 20 20 20 20 20  |% ...(.         |
00008960  20 20 e7 20 61 64 72 25  21 32 38 20 8c 0d 05 29  |  . adr%!28 ...)|
00008970  27 20 20 20 20 20 20 20  20 20 20 20 20 20 70 6f  |'             po|
00008980  69 6e 74 65 72 5f 6f 62  6a 65 63 74 25 3d 74 6f  |inter_object%=to|
00008990  6b 65 6e 25 0d 05 2a 36  20 20 20 20 20 20 20 20  |ken%..*6        |
000089a0  20 20 20 20 20 c8 99 20  67 65 74 65 6e 74 72 79  |     .. getentry|
000089b0  25 2c 73 5f 63 6c 69 63  6b 73 25 2c 61 64 72 25  |%,s_clicks%,adr%|
000089c0  21 32 38 20 b8 20 61 64  72 25 0d 05 2b 36 20 20  |!28 . adr%..+6  |
000089d0  20 20 20 20 20 20 20 20  20 20 20 e7 20 61 64 72  |           . adr|
000089e0  25 21 32 30 20 f2 64 6f  5f 63 6c 69 63 6b 28 73  |%!20 .do_click(s|
000089f0  5f 6d 6f 75 73 65 25 2c  61 64 72 25 21 32 30 29  |_mouse%,adr%!20)|
00008a00  0d 05 2c 10 20 20 20 20  20 20 20 20 20 20 20 cd  |..,.           .|
00008a10  0d 05 2d 0e 20 20 20 20  20 20 20 20 20 cd 0d 05  |..-.         ...|
00008a20  2e 0c 20 20 20 20 20 20  20 cd 0d 05 2f 41 20 20  |..       .../A  |
00008a30  20 20 20 20 20 e7 20 a4  6c 6f 77 65 72 5f 63 61  |     . .lower_ca|
00008a40  73 65 28 c0 69 6e 70 75  74 24 2c 34 29 29 3d 22  |se(.input$,4))="|
00008a50  62 61 63 6b 22 20 71 25  21 38 3d 26 31 30 30 3a  |back" q%!8=&100:|
00008a60  f2 74 72 79 5f 6d 61 69  6e 5f 77 0d 05 30 14 20  |.try_main_w..0. |
00008a70  20 20 20 20 20 20 69 6e  70 75 74 24 3d 22 22 0d  |      input$="".|
00008a80  05 31 0a 20 20 20 20 20  cc 0d 05 32 2d 20 20 20  |.1.     ...2-   |
00008a90  20 20 20 20 e7 20 6b 65  79 25 3d 32 37 3a f2 63  |    . key%=27:.c|
00008aa0  6c 6f 73 65 5f 77 69 6e  64 6f 77 28 6d 61 69 6e  |lose_window(main|
00008ab0  5f 77 25 29 3a e1 0d 05  33 26 20 20 20 20 20 20  |_w%):...3&      |
00008ac0  20 e7 20 6b 65 79 25 3d  26 31 38 30 20 f2 6f 70  | . key%=&180 .op|
00008ad0  65 6e 5f 70 72 69 6e 74  5f 77 3a e1 0d 05 34 4b  |en_print_w:...4K|
00008ae0  20 20 20 20 20 20 20 e7  20 6b 65 79 25 3e 33 31  |       . key%>31|
00008af0  20 80 20 6b 65 79 25 3c  32 35 35 20 69 6e 70 75  | . key%<255 inpu|
00008b00  74 24 3d 69 6e 70 75 74  24 2b bd 28 6b 65 79 25  |t$=input$+.(key%|
00008b10  29 20 8b 20 c8 99 20 70  72 6f 63 65 73 73 6b 65  |) . .. processke|
00008b20  79 25 2c 6b 65 79 25 0d  05 35 22 20 20 20 20 20  |y%,key%..5"     |
00008b30  20 20 e7 20 a9 69 6e 70  75 74 24 3d 32 35 35 20  |  . .input$=255 |
00008b40  69 6e 70 75 74 24 3d 22  22 0d 05 36 0a 20 20 20  |input$=""..6.   |
00008b50  20 20 cd 0d 05 37 11 20  20 20 c9 20 70 72 69 6e  |  ...7.   . prin|
00008b60  74 5f 77 25 0d 05 38 48  20 20 20 20 20 e7 20 71  |t_w%..8H     . q|
00008b70  25 21 32 34 3d 31 33 20  71 25 21 38 3d 34 3a 71  |%!24=13 q%!8=4:q|
00008b80  25 21 31 36 3d 34 3a f2  63 68 65 63 6b 5f 70 72  |%!16=4:.check_pr|
00008b90  69 6e 74 5f 77 20 8b 20  c8 99 20 70 72 6f 63 65  |int_w . .. proce|
00008ba0  73 73 6b 65 79 25 2c 71  25 21 32 34 0d 05 39 08  |sskey%,q%!24..9.|
00008bb0  20 20 20 7f 0d 05 3a 1d  20 20 20 20 20 c8 99 20  |   ...:.     .. |
00008bc0  70 72 6f 63 65 73 73 6b  65 79 25 2c 71 25 21 32  |processkey%,q%!2|
00008bd0  34 0d 05 3b 06 20 cb 0d  05 3c 06 20 e1 0d 05 3d  |4..;. ...<. ...=|
00008be0  04 0d 05 3e 20 20 dd f2  64 6f 5f 63 6c 69 63 6b  |...>  ..do_click|
00008bf0  28 63 6f 6e 74 65 78 74  25 2c 63 6c 69 63 6b 25  |(context%,click%|
00008c00  29 0d 05 3f 28 20 c8 99  20 67 65 74 65 6e 74 72  |)..?( .. getentr|
00008c10  79 25 2c 63 6f 6e 74 65  78 74 25 2c 63 6c 69 63  |y%,context%,clic|
00008c20  6b 25 20 b8 20 61 64 72  25 0d 05 40 22 20 c8 99  |k% . adr%..@" ..|
00008c30  20 6d 6f 76 65 64 61 74  61 25 2c 61 64 72 25 2c  | movedata%,adr%,|
00008c40  77 73 25 2b 38 2c 21 61  64 72 25 0d 05 41 24 20  |ws%+8,!adr%..A$ |
00008c50  21 77 73 25 3d 28 77 73  25 21 38 29 2b 38 3a 77  |!ws%=(ws%!8)+8:w|
00008c60  73 25 21 34 3d 31 32 3a  77 73 25 21 38 3d 30 0d  |s%!4=12:ws%!8=0.|
00008c70  05 42 19 20 f2 6d 61 6b  65 5f 73 70 61 63 65 28  |.B. .make_space(|
00008c80  21 77 73 25 2b 31 36 29  0d 05 43 21 20 c8 99 20  |!ws%+16)..C! .. |
00008c90  61 64 64 65 6e 74 72 79  25 2c 73 5f 63 6c 69 63  |addentry%,s_clic|
00008ca0  6b 73 6f 6e 25 2c 77 73  25 0d 05 44 12 20 f2 63  |kson%,ws%..D. .c|
00008cb0  68 65 63 6b 5f 63 6c 69  63 6b 73 0d 05 45 06 20  |heck_clicks..E. |
00008cc0  e1 0d 05 46 04 0d 05 47  13 20 dd f2 63 68 65 63  |...F...G. ..chec|
00008cd0  6b 5f 63 6c 69 63 6b 73  0d 05 48 23 20 c8 99 20  |k_clicks..H# .. |
00008ce0  6e 65 6e 74 72 69 65 73  25 2c 73 5f 63 6c 69 63  |nentries%,s_clic|
00008cf0  6b 73 6f 6e 25 20 b8 20  6e 63 25 0d 05 49 0e 20  |kson% . nc%..I. |
00008d00  e7 20 6e 63 25 3d 30 20  e1 0d 05 4a 13 20 e3 20  |. nc%=0 ...J. . |
00008d10  63 6c 69 63 6b 25 3d 31  b8 6e 63 25 0d 05 4b 31  |click%=1.nc%..K1|
00008d20  20 20 20 c8 99 20 67 65  74 6e 74 68 25 2c 73 5f  |   .. getnth%,s_|
00008d30  63 6c 69 63 6b 73 6f 6e  25 2c 63 6c 69 63 6b 25  |clickson%,click%|
00008d40  20 b8 20 63 6c 69 63 6b  5f 61 64 72 25 0d 05 4c  | . click_adr%..L|
00008d50  2b 20 20 20 e7 20 63 6c  69 63 6b 5f 61 64 72 25  |+   . click_adr%|
00008d60  21 38 3c 91 20 80 20 63  6c 69 63 6b 5f 61 64 72  |!8<. . click_adr|
00008d70  25 21 34 3c 3e 30 20 8c  0d 05 4d 30 20 20 20 20  |%!4<>0 ...M0    |
00008d80  20 70 74 72 25 3d 63 6c  69 63 6b 5f 61 64 72 25  | ptr%=click_adr%|
00008d90  21 34 3a 63 61 64 72 25  3d 63 6c 69 63 6b 5f 61  |!4:cadr%=click_a|
00008da0  64 72 25 2b 70 74 72 25  0d 05 4e 2d 20 20 20 20  |dr%+ptr%..N-    |
00008db0  20 63 6c 69 63 6b 5f 6c  65 6e 25 3d 21 63 61 64  | click_len%=!cad|
00008dc0  72 25 3a 63 6d 64 25 3d  63 61 64 72 25 21 34 3a  |r%:cmd%=cadr%!4:|
00008dd0  6f 6b 25 3d b9 0d 05 4f  12 20 20 20 20 20 c8 8e  |ok%=...O.     ..|
00008de0  20 63 6d 64 25 20 ca 0d  05 50 3a 20 20 20 20 20  | cmd% ...P:     |
00008df0  20 20 c9 20 31 2c 33 2c  34 3a f2 63 6c 69 63 6b  |  . 1,3,4:.click|
00008e00  5f 6c 69 73 74 28 63 6d  64 25 2c 63 61 64 72 25  |_list(cmd%,cadr%|
00008e10  2b 38 2c 63 6c 69 63 6b  5f 6c 65 6e 25 2d 31 32  |+8,click_len%-12|
00008e20  29 0d 05 51 0e 20 20 20  20 20 20 20 c9 20 32 0d  |)..Q.       . 2.|
00008e30  05 52 15 20 20 20 20 20  20 20 20 20 f2 64 65 6c  |.R.         .del|
00008e40  69 67 68 74 0d 05 53 30  20 20 20 20 20 20 20 20  |ight..S0        |
00008e50  20 70 61 67 65 5f 70 74  72 25 21 70 61 67 65 5f  | page_ptr%!page_|
00008e60  73 74 61 63 6b 25 3d 63  75 72 72 65 6e 74 5f 70  |stack%=current_p|
00008e70  61 67 65 25 0d 05 54 36  20 20 20 20 20 20 20 20  |age%..T6        |
00008e80  20 70 61 67 65 5f 70 74  72 25 2b 3d 34 3a e7 20  | page_ptr%+=4:. |
00008e90  70 61 67 65 5f 70 74 72  25 3d 31 30 32 34 20 70  |page_ptr%=1024 p|
00008ea0  61 67 65 5f 70 74 72 25  3d 30 0d 05 55 22 20 20  |age_ptr%=0..U"  |
00008eb0  20 20 20 20 20 20 20 63  75 72 72 65 6e 74 5f 70  |       current_p|
00008ec0  61 67 65 25 3d 63 61 64  72 25 21 38 0d 05 56 4d  |age%=cadr%!8..VM|
00008ed0  20 20 20 20 20 20 20 20  20 e7 20 63 75 72 72 65  |         . curre|
00008ee0  6e 74 5f 70 61 67 65 25  3d 30 20 c8 99 20 6e 65  |nt_page%=0 .. ne|
00008ef0  6e 74 72 69 65 73 25 2c  73 5f 70 61 67 65 73 25  |ntries%,s_pages%|
00008f00  20 b8 20 74 25 3a 63 75  72 72 65 6e 74 5f 70 61  | . t%:current_pa|
00008f10  67 65 25 3d b3 28 74 25  29 0d 05 57 2e 20 20 20  |ge%=.(t%)..W.   |
00008f20  20 20 20 20 20 20 e7 20  63 75 72 72 65 6e 74 5f  |      . current_|
00008f30  70 61 67 65 25 3d 30 20  63 75 72 72 65 6e 74 5f  |page%=0 current_|
00008f40  70 61 67 65 25 3d 31 0d  05 58 19 20 20 20 20 20  |page%=1..X.     |
00008f50  20 20 20 20 f2 70 72 65  5f 70 72 6f 63 65 73 73  |    .pre_process|
00008f60  0d 05 59 26 20 20 20 20  20 20 20 20 20 f2 73 68  |..Y&         .sh|
00008f70  6f 77 5f 70 61 67 65 28  63 75 72 72 65 6e 74 5f  |ow_page(current_|
00008f80  70 61 67 65 25 29 0d 05  5a 1e 20 20 20 20 20 20  |page%)..Z.      |
00008f90  20 20 20 e7 20 73 63 61  6e 6e 69 6e 67 25 20 f2  |   . scanning% .|
00008fa0  73 63 61 6e 0d 05 5b 0e  20 20 20 20 20 20 20 20  |scan..[.        |
00008fb0  20 e1 0d 05 5c 0e 20 20  20 20 20 20 20 c9 20 35  | ...\.       . 5|
00008fc0  0d 05 5d 21 20 20 20 20  20 20 20 20 20 c8 99 20  |..]!         .. |
00008fd0  70 6c 61 79 73 6f 75 6e  64 25 2c 30 20 b8 20 74  |playsound%,0 . t|
00008fe0  25 0d 05 5e 31 20 20 20  20 20 20 20 20 20 e7 20  |%..^1         . |
00008ff0  74 25 3d 2d 31 20 6f 6b  25 3d a3 20 8b 20 f2 70  |t%=-1 ok%=. . .p|
00009000  6c 61 79 5f 73 6f 75 6e  64 28 63 61 64 72 25 21  |lay_sound(cadr%!|
00009010  38 29 0d 05 5f 2a 20 20  20 20 20 20 20 c9 20 36  |8).._*       . 6|
00009020  3a f2 73 70 65 61 6b 5f  74 65 78 74 28 73 74 61  |:.speak_text(sta|
00009030  63 6b 25 2c 63 61 64 72  25 21 38 29 0d 05 60 21  |ck%,cadr%!8)..`!|
00009040  20 20 20 20 20 20 20 c9  20 37 3a f2 69 6e 69 74  |       . 7:.init|
00009050  5f 73 65 71 28 91 2c 63  61 64 72 25 29 0d 05 61  |_seq(.,cadr%)..a|
00009060  0f 20 20 20 20 20 20 20  c9 20 38 3a 0d 05 62 29  |.       . 8:..b)|
00009070  20 20 20 20 20 20 20 20  20 63 6c 69 63 6b 5f 63  |         click_c|
00009080  6d 64 24 3d a4 73 74 72  69 6e 67 30 28 63 61 64  |md$=.string0(cad|
00009090  72 25 2b 38 29 0d 05 63  29 20 20 20 20 20 20 20  |r%+8)..c)       |
000090a0  20 20 63 6d 64 24 3d a4  6c 6f 77 65 72 5f 63 61  |  cmd$=.lower_ca|
000090b0  73 65 28 63 6c 69 63 6b  5f 63 6d 64 24 29 0d 05  |se(click_cmd$)..|
000090c0  64 27 20 20 20 20 20 20  20 20 20 e7 20 c0 63 6d  |d'         . .cm|
000090d0  64 24 2c 31 30 29 3d 22  6c 6f 61 64 20 66 69 6c  |d$,10)="load fil|
000090e0  65 20 22 20 8c 0d 05 65  2d 20 20 20 20 20 20 20  |e " ...e-       |
000090f0  20 20 20 20 66 69 6c 65  24 3d c2 63 6d 64 24 2c  |    file$=.cmd$,|
00009100  a9 63 6d 64 24 2d 31 30  29 3a 70 61 67 65 24 3d  |.cmd$-10):page$=|
00009110  22 22 0d 05 66 1e 20 20  20 20 20 20 20 20 20 20  |""..f.          |
00009120  20 e7 20 a7 66 69 6c 65  24 2c 22 20 22 29 20 8c  | . .file$," ") .|
00009130  0d 05 67 33 20 20 20 20  20 20 20 20 20 20 20 20  |..g3            |
00009140  20 70 61 67 65 24 3d c2  66 69 6c 65 24 2c a9 28  | page$=.file$,.(|
00009150  66 69 6c 65 24 29 2d a7  66 69 6c 65 24 2c 22 20  |file$)-.file$," |
00009160  22 29 29 0d 05 68 2c 20  20 20 20 20 20 20 20 20  |"))..h,         |
00009170  20 20 20 20 66 69 6c 65  24 3d c0 66 69 6c 65 24  |    file$=.file$|
00009180  2c a7 66 69 6c 65 24 2c  22 20 22 29 2d 31 29 0d  |,.file$," ")-1).|
00009190  05 69 10 20 20 20 20 20  20 20 20 20 20 20 cd 0d  |.i.           ..|
000091a0  05 6a 29 20 20 20 20 20  20 20 20 20 20 20 66 69  |.j)           fi|
000091b0  6c 65 24 3d 66 75 6c 6c  5f 6e 61 6d 65 24 2b 22  |le$=full_name$+"|
000091c0  2e 22 2b 66 69 6c 65 24  0d 05 6b 12 20 20 20 20  |."+file$..k.    |
000091d0  20 20 20 20 20 20 20 ea  20 85 0d 05 6c 2e 20 20  |       . ...l.  |
000091e0  20 20 20 20 20 20 20 20  20 ee 20 85 20 ea 3a f7  |         . . .:.|
000091f0  20 85 3a 63 6c 69 63 6b  5f 61 64 72 25 21 34 3d  | .:click_adr%!4=|
00009200  30 3a 85 20 31 2c f6 24  0d 05 6d 22 20 20 20 20  |0:. 1,.$..m"    |
00009210  20 20 20 20 20 20 20 f2  6c 6f 61 64 5f 66 69 6c  |       .load_fil|
00009220  65 28 66 69 6c 65 24 2c  31 29 0d 05 6e 5a 20 20  |e(file$,1)..nZ  |
00009230  20 20 20 20 20 20 20 20  20 e7 20 70 61 67 65 24  |         . page$|
00009240  3c 3e 22 22 20 70 61 67  65 25 3d a4 6e 61 6d 65  |<>"" page%=.name|
00009250  5f 65 78 73 69 73 74 73  28 73 5f 70 61 67 65 73  |_exsists(s_pages|
00009260  25 2c 70 61 67 65 24 29  3a e7 20 70 61 67 65 25  |%,page$):. page%|
00009270  20 63 75 72 72 65 6e 74  5f 70 61 67 65 25 3d 70  | current_page%=p|
00009280  61 67 65 25 0d 05 6f 1b  20 20 20 20 20 20 20 20  |age%..o.        |
00009290  20 20 20 f2 70 72 65 5f  70 72 6f 63 65 73 73 0d  |   .pre_process.|
000092a0  05 70 28 20 20 20 20 20  20 20 20 20 20 20 f2 73  |.p(           .s|
000092b0  68 6f 77 5f 70 61 67 65  28 63 75 72 72 65 6e 74  |how_page(current|
000092c0  5f 70 61 67 65 25 29 0d  05 71 20 20 20 20 20 20  |_page%)..q      |
000092d0  20 20 20 20 20 20 e7 20  73 63 61 6e 6e 69 6e 67  |      . scanning|
000092e0  25 20 f2 73 63 61 6e 0d  05 72 1f 20 20 20 20 20  |% .scan..r.     |
000092f0  20 20 20 20 20 20 f2 7a  65 72 6f 5f 70 61 67 65  |      .zero_page|
00009300  5f 73 74 61 63 6b 0d 05  73 10 20 20 20 20 20 20  |_stack..s.      |
00009310  20 20 20 20 20 e1 0d 05  74 0e 20 20 20 20 20 20  |     ...t.      |
00009320  20 20 20 cd 0d 05 75 33  20 20 20 20 20 20 20 20  |   ...u3        |
00009330  20 e7 20 c0 63 6d 64 24  2c 34 29 3d 22 6c 6f 61  | . .cmd$,4)="loa|
00009340  64 22 20 84 20 c0 63 6d  64 24 2c 35 29 3d 22 2a  |d" . .cmd$,5)="*|
00009350  6c 6f 61 64 22 20 8c 0d  05 76 2c 20 20 20 20 20  |load" ...v,     |
00009360  20 20 20 20 20 20 66 69  6c 65 24 3d c2 63 6d 64  |      file$=.cmd|
00009370  24 2c a9 63 6d 64 24 2d  35 29 3a 70 61 67 65 24  |$,.cmd$-5):page$|
00009380  3d 22 22 0d 05 77 1e 20  20 20 20 20 20 20 20 20  |=""..w.         |
00009390  20 20 e7 20 a7 66 69 6c  65 24 2c 22 20 22 29 20  |  . .file$," ") |
000093a0  8c 0d 05 78 33 20 20 20  20 20 20 20 20 20 20 20  |...x3           |
000093b0  20 20 70 61 67 65 24 3d  c2 66 69 6c 65 24 2c a9  |  page$=.file$,.|
000093c0  28 66 69 6c 65 24 29 2d  a7 66 69 6c 65 24 2c 22  |(file$)-.file$,"|
000093d0  20 22 29 29 0d 05 79 2c  20 20 20 20 20 20 20 20  | "))..y,        |
000093e0  20 20 20 20 20 66 69 6c  65 24 3d c0 66 69 6c 65  |     file$=.file|
000093f0  24 2c a7 66 69 6c 65 24  2c 22 20 22 29 2d 31 29  |$,.file$," ")-1)|
00009400  0d 05 7a 10 20 20 20 20  20 20 20 20 20 20 20 cd  |..z.           .|
00009410  0d 05 7b 12 20 20 20 20  20 20 20 20 20 20 20 ea  |..{.           .|
00009420  20 85 0d 05 7c 2e 20 20  20 20 20 20 20 20 20 20  | ...|.          |
00009430  20 ee 20 85 20 ea 3a f7  20 85 3a 63 6c 69 63 6b  | . . .:. .:click|
00009440  5f 61 64 72 25 21 34 3d  30 3a 85 20 31 2c f6 24  |_adr%!4=0:. 1,.$|
00009450  0d 05 7d 22 20 20 20 20  20 20 20 20 20 20 20 f2  |..}"           .|
00009460  6c 6f 61 64 5f 66 69 6c  65 28 66 69 6c 65 24 2c  |load_file(file$,|
00009470  31 29 0d 05 7e 5a 20 20  20 20 20 20 20 20 20 20  |1)..~Z          |
00009480  20 e7 20 70 61 67 65 24  3c 3e 22 22 20 70 61 67  | . page$<>"" pag|
00009490  65 25 3d a4 6e 61 6d 65  5f 65 78 73 69 73 74 73  |e%=.name_exsists|
000094a0  28 73 5f 70 61 67 65 73  25 2c 70 61 67 65 24 29  |(s_pages%,page$)|
000094b0  3a e7 20 70 61 67 65 25  20 63 75 72 72 65 6e 74  |:. page% current|
000094c0  5f 70 61 67 65 25 3d 70  61 67 65 25 0d 05 7f 1b  |_page%=page%....|
000094d0  20 20 20 20 20 20 20 20  20 20 20 f2 70 72 65 5f  |           .pre_|
000094e0  70 72 6f 63 65 73 73 0d  05 80 28 20 20 20 20 20  |process...(     |
000094f0  20 20 20 20 20 20 f2 73  68 6f 77 5f 70 61 67 65  |      .show_page|
00009500  28 63 75 72 72 65 6e 74  5f 70 61 67 65 25 29 0d  |(current_page%).|
00009510  05 81 20 20 20 20 20 20  20 20 20 20 20 20 e7 20  |..            . |
00009520  73 63 61 6e 6e 69 6e 67  25 20 f2 73 63 61 6e 0d  |scanning% .scan.|
00009530  05 82 1f 20 20 20 20 20  20 20 20 20 20 20 f2 7a  |...           .z|
00009540  65 72 6f 5f 70 61 67 65  5f 73 74 61 63 6b 0d 05  |ero_page_stack..|
00009550  83 10 20 20 20 20 20 20  20 20 20 20 20 e1 0d 05  |..           ...|
00009560  84 0e 20 20 20 20 20 20  20 20 20 cd 0d 05 85 31  |..         ....1|
00009570  20 20 20 20 20 20 20 20  20 e7 20 c0 63 6d 64 24  |         . .cmd$|
00009580  2c 33 29 3d 22 72 75 6e  22 20 84 20 c0 63 6d 64  |,3)="run" . .cmd|
00009590  24 2c 34 29 3d 22 2a 72  75 6e 22 20 8c 0d 05 86  |$,4)="*run" ....|
000095a0  2a 20 20 20 20 20 20 20  20 20 20 20 66 69 6c 65  |*           file|
000095b0  24 3d c2 63 6d 64 24 2c  a9 63 6d 64 24 2d 34 29  |$=.cmd$,.cmd$-4)|
000095c0  3a f1 66 69 6c 65 24 0d  05 87 12 20 20 20 20 20  |:.file$....     |
000095d0  20 20 20 20 20 20 ea 20  85 0d 05 88 2e 20 20 20  |      . .....   |
000095e0  20 20 20 20 20 20 20 20  ee 20 85 20 ea 3a f7 20  |        . . .:. |
000095f0  85 3a 63 6c 69 63 6b 5f  61 64 72 25 21 34 3d 30  |.:click_adr%!4=0|
00009600  3a 85 20 31 2c f6 24 0d  05 89 23 20 20 20 20 20  |:. 1,.$...#     |
00009610  20 20 20 20 20 20 ff 20  22 66 69 6c 65 72 5f 72  |      . "filer_r|
00009620  75 6e 20 22 2b 66 69 6c  65 24 0d 05 8a 1c 20 20  |un "+file$....  |
00009630  20 20 20 20 20 20 20 20  20 63 6c 69 63 6b 5f 63  |         click_c|
00009640  6d 64 24 3d 22 22 0d 05  8b 0e 20 20 20 20 20 20  |md$=""....      |
00009650  20 20 20 cd 0d 05 8c 22  20 20 20 20 20 20 20 20  |   ...."        |
00009660  20 e7 20 c0 63 6d 64 24  2c 36 29 3d 22 72 65 70  | . .cmd$,6)="rep|
00009670  6c 61 79 22 20 8c 0d 05  8d 23 20 20 20 20 20 20  |lay" ....#      |
00009680  20 20 20 20 20 66 69 6c  65 24 3d c2 63 6d 64 24  |     file$=.cmd$|
00009690  2c a9 63 6d 64 24 2d 37  29 0d 05 8e 22 20 20 20  |,.cmd$-7)..."   |
000096a0  20 20 20 20 20 20 20 20  e7 20 a7 66 69 6c 65 24  |        . .file$|
000096b0  2c 22 2d 61 74 22 29 3d  30 20 8c 0d 05 8f 33 20  |,"-at")=0 ....3 |
000096c0  20 20 20 20 20 20 20 20  20 20 20 20 c8 99 20 67  |            .. g|
000096d0  65 74 65 6e 74 72 79 25  2c 73 74 61 63 6b 25 2c  |etentry%,stack%,|
000096e0  6f 62 6a 65 63 74 25 20  b8 20 61 64 72 25 0d 05  |object% . adr%..|
000096f0  90 36 20 20 20 20 20 20  20 20 20 20 20 20 20 78  |.6             x|
00009700  25 3d 28 61 64 72 25 21  31 32 29 2b 6f 66 66 78  |%=(adr%!12)+offx|
00009710  25 3a 79 25 3d 28 61 64  72 25 21 31 36 29 2b 6f  |%:y%=(adr%!16)+o|
00009720  66 66 79 25 0d 05 91 30  20 20 20 20 20 20 20 20  |ffy%...0        |
00009730  20 20 20 20 20 66 69 6c  65 24 3d 66 69 6c 65 24  |     file$=file$|
00009740  2b 22 20 2d 61 74 20 22  2b c3 78 25 2b 22 2c 22  |+" -at "+.x%+","|
00009750  2b c3 79 25 0d 05 92 10  20 20 20 20 20 20 20 20  |+.y%....        |
00009760  20 20 20 cd 0d 05 93 12  20 20 20 20 20 20 20 20  |   .....        |
00009770  20 20 20 ea 20 85 0d 05  94 2e 20 20 20 20 20 20  |   . .....      |
00009780  20 20 20 20 20 ee 20 85  20 ea 3a f7 20 85 3a 63  |     . . .:. .:c|
00009790  6c 69 63 6b 5f 61 64 72  25 21 34 3d 30 3a 85 20  |lick_adr%!4=0:. |
000097a0  31 2c f6 24 0d 05 95 28  20 20 20 20 20 20 20 20  |1,.$...(        |
000097b0  20 20 20 c8 99 20 22 57  69 6d 70 5f 53 74 61 72  |   .. "Wimp_Star|
000097c0  74 54 61 73 6b 22 2c 66  69 6c 65 24 0d 05 96 1c  |tTask",file$....|
000097d0  20 20 20 20 20 20 20 20  20 20 20 63 6c 69 63 6b  |           click|
000097e0  5f 63 6d 64 24 3d 22 22  0d 05 97 0e 20 20 20 20  |_cmd$=""....    |
000097f0  20 20 20 20 20 cd 0d 05  98 4d 20 20 20 20 20 20  |     ....M      |
00009800  20 20 20 e7 20 c0 63 6d  64 24 2c 34 29 3d 22 62  |   . .cmd$,4)="b|
00009810  61 63 6b 22 20 69 6e 70  75 74 24 3d 22 62 61 63  |ack" input$="bac|
00009820  6b 22 3a 21 71 25 3d 6d  61 69 6e 5f 77 25 3a 71  |k":!q%=main_w%:q|
00009830  25 21 32 34 3d 31 33 3a  f2 74 72 79 5f 6b 65 79  |%!24=13:.try_key|
00009840  73 3a e1 0d 05 99 22 20  20 20 20 20 20 20 20 20  |s:...."         |
00009850  e7 20 c0 63 6d 64 24 2c  36 29 3d 22 6f 62 6a 65  |. .cmd$,6)="obje|
00009860  63 74 22 20 8c 0d 05 9a  1c 20 20 20 20 20 20 20  |ct" .....       |
00009870  20 20 20 20 63 6c 69 63  6b 5f 63 6d 64 24 3d 22  |    click_cmd$="|
00009880  22 0d 05 9b 1e 20 20 20  20 20 20 20 20 20 20 20  |"....           |
00009890  69 6e 70 75 74 24 3d 63  6d 64 24 2b bd 31 33 0d  |input$=cmd$+.13.|
000098a0  05 9c 0e 20 20 20 20 20  20 20 20 20 cd 0d 05 9d  |...         ....|
000098b0  10 20 20 20 20 20 20 20  20 20 ea 20 85 0d 05 9e  |.         . ....|
000098c0  2c 20 20 20 20 20 20 20  20 20 ee 20 85 20 ea 3a  |,         . . .:|
000098d0  f7 20 85 3a 63 6c 69 63  6b 5f 61 64 72 25 21 34  |. .:click_adr%!4|
000098e0  3d 30 3a 85 20 31 2c f6  24 0d 05 9f 2a 20 20 20  |=0:. 1,.$...*   |
000098f0  20 20 20 20 20 20 e7 20  63 6c 69 63 6b 5f 63 6d  |      . click_cm|
00009900  64 24 3c 3e 22 22 20 ff  20 63 6c 69 63 6b 5f 63  |d$<>"" . click_c|
00009910  6d 64 24 0d 05 a0 25 20  20 20 20 20 20 20 c9 20  |md$...%       . |
00009920  39 3a 63 6c 69 63 6b 5f  61 64 72 25 21 38 3d 91  |9:click_adr%!8=.|
00009930  2b 63 61 64 72 25 21 38  0d 05 a1 0a 20 20 20 20  |+cadr%!8....    |
00009940  20 cb 0d 05 a2 33 20 20  20 20 20 c8 99 20 67 65  | ....3     .. ge|
00009950  74 6e 74 68 25 2c 73 5f  63 6c 69 63 6b 73 6f 6e  |tnth%,s_clickson|
00009960  25 2c 63 6c 69 63 6b 25  20 b8 20 63 6c 69 63 6b  |%,click% . click|
00009970  5f 61 64 72 25 0d 05 a3  2b 20 20 20 20 20 e7 20  |_adr%...+     . |
00009980  6f 6b 25 20 63 6c 69 63  6b 5f 61 64 72 25 21 34  |ok% click_adr%!4|
00009990  3d 70 74 72 25 2b 63 6c  69 63 6b 5f 6c 65 6e 25  |=ptr%+click_len%|
000099a0  0d 05 a4 33 20 20 20 20  20 e7 20 63 6c 69 63 6b  |...3     . click|
000099b0  5f 61 64 72 25 21 34 3e  3d 21 63 6c 69 63 6b 5f  |_adr%!4>=!click_|
000099c0  61 64 72 25 20 63 6c 69  63 6b 5f 61 64 72 25 21  |adr% click_adr%!|
000099d0  34 3d 30 0d 05 a5 08 20  20 20 cd 0d 05 a6 06 20  |4=0....   ..... |
000099e0  ed 0d 05 a7 0d 20 63 6c  69 63 6b 25 3d 31 0d 05  |..... click%=1..|
000099f0  a8 06 20 f5 0d 05 a9 32  20 20 20 c8 99 20 67 65  |.. ....2   .. ge|
00009a00  74 6e 74 68 25 2c 73 5f  63 6c 69 63 6b 73 6f 6e  |tnth%,s_clickson|
00009a10  25 2c 63 6c 69 63 6b 25  20 b8 20 61 64 72 25 2c  |%,click% . adr%,|
00009a20  74 6f 6b 65 6e 25 0d 05  aa 13 20 20 20 e7 20 61  |token%....   . a|
00009a30  64 72 25 21 34 3d 30 20  8c 0d 05 ab 29 20 20 20  |dr%!4=0 ....)   |
00009a40  20 20 c8 99 20 6b 69 6c  6c 65 6e 74 72 79 25 2c  |  .. killentry%,|
00009a50  73 5f 63 6c 69 63 6b 73  6f 6e 25 2c 74 6f 6b 65  |s_clickson%,toke|
00009a60  6e 25 0d 05 ac 12 20 20  20 20 20 63 6c 69 63 6b  |n%....     click|
00009a70  25 2d 3d 31 0d 05 ad 08  20 20 20 cd 0d 05 ae 10  |%-=1....   .....|
00009a80  20 20 20 63 6c 69 63 6b  25 2b 3d 31 0d 05 af 25  |   click%+=1...%|
00009a90  20 20 20 c8 99 20 6e 65  6e 74 72 69 65 73 25 2c  |   .. nentries%,|
00009aa0  73 5f 63 6c 69 63 6b 73  6f 6e 25 20 b8 20 6e 63  |s_clickson% . nc|
00009ab0  25 0d 05 b0 19 20 fd 63  6c 69 63 6b 25 3e 3d 6e  |%.... .click%>=n|
00009ac0  63 25 20 84 20 6e 63 25  3d 30 0d 05 b1 06 20 e1  |c% . nc%=0.... .|
00009ad0  0d 05 b2 04 0d 05 b3 21  20 dd f2 63 6c 69 63 6b  |.......! ..click|
00009ae0  5f 6c 69 73 74 28 63 6d  64 25 2c 61 64 72 25 2c  |_list(cmd%,adr%,|
00009af0  6c 65 6e 25 29 0d 05 b4  14 20 e3 6c 69 73 74 25  |len%).... .list%|
00009b00  3d 30 b8 6c 65 6e 25 88  34 0d 05 b5 10 20 20 20  |=0.len%.4....   |
00009b10  c8 8e 20 63 6d 64 25 20  ca 0d 05 b6 31 20 20 20  |.. cmd% ....1   |
00009b20  20 20 c9 20 31 3a f2 6c  69 67 68 74 5f 6f 62 6a  |  . 1:.light_obj|
00009b30  65 63 74 28 73 74 61 63  6b 25 2c 6c 69 73 74 25  |ect(stack%,list%|
00009b40  21 61 64 72 25 2c 31 2c  31 29 0d 05 b7 30 20 20  |!adr%,1,1)...0  |
00009b50  20 20 20 c9 20 33 3a f2  68 69 64 65 5f 6f 62 6a  |   . 3:.hide_obj|
00009b60  65 63 74 28 73 74 61 63  6b 25 2c 6c 69 73 74 25  |ect(stack%,list%|
00009b70  21 61 64 72 25 2c 31 2c  31 29 0d 05 b8 30 20 20  |!adr%,1,1)...0  |
00009b80  20 20 20 c9 20 34 3a f2  68 69 64 65 5f 6f 62 6a  |   . 4:.hide_obj|
00009b90  65 63 74 28 73 74 61 63  6b 25 2c 6c 69 73 74 25  |ect(stack%,list%|
00009ba0  21 61 64 72 25 2c 30 2c  31 29 0d 05 b9 08 20 20  |!adr%,0,1)....  |
00009bb0  20 cb 0d 05 ba 06 20 ed  0d 05 bb 06 20 e1 0d 05  | ..... ..... ...|
00009bc0  bc 04 0d 05 bd 26 20 dd  f2 75 6e 64 65 72 5f 70  |.....& ..under_p|
00009bd0  6f 69 6e 74 65 72 3a e7  20 70 6f 69 6e 74 65 72  |ointer:. pointer|
00009be0  5f 6f 6e 25 3d 30 20 e1  0d 05 be 11 20 f2 67 65  |_on%=0 ..... .ge|
00009bf0  74 5f 70 6f 69 6e 74 65  72 0d 05 bf 1d 20 21 71  |t_pointer.... !q|
00009c00  25 3d 6d 61 69 6e 5f 77  25 3a c8 99 20 67 65 74  |%=main_w%:.. get|
00009c10  77 25 2c 2c 71 25 0d 05  c0 2b 20 6f 66 66 78 25  |w%,,q%...+ offx%|
00009c20  3d 28 71 25 21 34 2d 71  25 21 32 30 29 3a 6f 66  |=(q%!4-q%!20):of|
00009c30  66 79 25 3d 28 71 25 21  31 36 2d 71 25 21 32 34  |fy%=(q%!16-q%!24|
00009c40  29 0d 05 c1 28 20 6d 78  25 3d 6d 6f 75 73 65 78  |)...( mx%=mousex|
00009c50  25 2d 6f 66 66 78 25 3a  6d 79 25 3d 6d 6f 75 73  |%-offx%:my%=mous|
00009c60  65 79 25 2d 6f 66 66 79  25 0d 05 c2 4f 20 e7 20  |ey%-offy%...O . |
00009c70  68 61 6e 64 6c 65 25 3d  6d 61 69 6e 5f 77 25 20  |handle%=main_w% |
00009c80  6f 62 6a 65 63 74 25 3d  a4 77 68 69 63 68 5f 6f  |object%=.which_o|
00009c90  62 6a 65 63 74 28 63 75  72 72 65 6e 74 5f 70 61  |bject(current_pa|
00009ca0  67 65 25 2c 6d 78 25 2c  6d 79 25 29 20 8b 20 6f  |ge%,mx%,my%) . o|
00009cb0  62 6a 65 63 74 25 3d 30  0d 05 c3 21 20 e7 20 6f  |bject%=0...! . o|
00009cc0  62 6a 65 63 74 25 3c 3e  70 6f 69 6e 74 65 72 5f  |bject%<>pointer_|
00009cd0  6f 62 6a 65 63 74 25 20  8c 0d 05 c4 1e 20 20 20  |object% .....   |
00009ce0  70 6f 69 6e 74 65 72 5f  6f 62 6a 65 63 74 25 3d  |pointer_object%=|
00009cf0  6f 62 6a 65 63 74 25 0d  05 c5 23 20 20 20 73 74  |object%...#   st|
00009d00  61 63 6b 25 3d a4 73 74  61 63 6b 28 63 75 72 72  |ack%=.stack(curr|
00009d10  65 6e 74 5f 70 61 67 65  25 29 0d 05 c6 20 20 20  |ent_page%)...   |
00009d20  20 c8 99 20 6e 65 6e 74  72 69 65 73 25 2c 73 74  | .. nentries%,st|
00009d30  61 63 6b 25 20 b8 20 6e  6f 25 0d 05 c7 0e 20 20  |ack% . no%....  |
00009d40  20 e7 20 6e 6f 25 20 8c  0d 05 c8 14 20 20 20 20  | . no% .....    |
00009d50  20 e3 20 6f 62 25 3d 31  b8 6e 6f 25 0d 05 c9 2e  | . ob%=1.no%....|
00009d60  20 20 20 20 20 20 20 c8  99 20 67 65 74 6e 74 68  |       .. getnth|
00009d70  25 2c 73 74 61 63 6b 25  2c 6f 62 25 20 b8 20 61  |%,stack%,ob% . a|
00009d80  64 72 25 2c 74 6f 6b 65  6e 25 0d 05 ca 4b 20 20  |dr%,token%...K  |
00009d90  20 20 20 20 20 e7 20 74  6f 6b 65 6e 25 3c 3e 6f  |     . token%<>o|
00009da0  62 6a 65 63 74 25 20 80  20 28 61 64 72 25 21 33  |bject% . (adr%!3|
00009db0  36 29 80 31 20 f2 6c 69  67 68 74 5f 6f 62 6a 65  |6).1 .light_obje|
00009dc0  63 74 28 73 74 61 63 6b  25 2c 74 6f 6b 65 6e 25  |ct(stack%,token%|
00009dd0  2c 30 2c 31 29 0d 05 cb  0a 20 20 20 20 20 ed 0d  |,0,1)....     ..|
00009de0  05 cc 14 20 20 20 20 20  e7 20 6f 62 6a 65 63 74  |...     . object|
00009df0  25 20 8c 0d 05 cd 34 20  20 20 20 20 20 20 c8 99  |% ....4       ..|
00009e00  20 67 65 74 65 6e 74 72  79 25 2c 73 74 61 63 6b  | getentry%,stack|
00009e10  25 2c 6f 62 6a 65 63 74  25 20 b8 20 61 64 72 25  |%,object% . adr%|
00009e20  2c 74 6f 6b 65 6e 25 0d  05 ce 16 20 20 20 20 20  |,token%....     |
00009e30  20 20 e7 20 61 64 72 25  21 32 38 20 8c 0d 05 cf  |  . adr%!28 ....|
00009e40  32 20 20 20 20 20 20 20  20 20 c8 99 20 67 65 74  |2         .. get|
00009e50  65 6e 74 72 79 25 2c 73  5f 63 6c 69 63 6b 73 25  |entry%,s_clicks%|
00009e60  2c 61 64 72 25 21 32 38  20 b8 20 61 64 72 25 0d  |,adr%!28 . adr%.|
00009e70  05 d0 34 20 20 20 20 20  20 20 20 20 e7 20 61 64  |..4         . ad|
00009e80  72 25 21 31 36 20 f2 64  6f 5f 63 6c 69 63 6b 28  |r%!16 .do_click(|
00009e90  73 5f 70 6f 69 6e 74 65  72 25 2c 61 64 72 25 21  |s_pointer%,adr%!|
00009ea0  31 36 29 0d 05 d1 0c 20  20 20 20 20 20 20 cd 0d  |16)....       ..|
00009eb0  05 d2 0a 20 20 20 20 20  cc 0d 05 d3 35 20 20 20  |...     ....5   |
00009ec0  20 20 20 20 c8 99 20 67  65 74 65 6e 74 72 79 25  |    .. getentry%|
00009ed0  2c 73 5f 70 61 67 65 73  25 2c 63 75 72 72 65 6e  |,s_pages%,curren|
00009ee0  74 5f 70 61 67 65 25 20  b8 20 61 64 72 25 0d 05  |t_page% . adr%..|
00009ef0  d4 16 20 20 20 20 20 20  20 e7 20 61 64 72 25 21  |..       . adr%!|
00009f00  32 34 20 8c 0d 05 d5 32  20 20 20 20 20 20 20 20  |24 ....2        |
00009f10  20 c8 99 20 67 65 74 65  6e 74 72 79 25 2c 73 5f  | .. getentry%,s_|
00009f20  63 6c 69 63 6b 73 25 2c  61 64 72 25 21 32 34 20  |clicks%,adr%!24 |
00009f30  b8 20 61 64 72 25 0d 05  d6 34 20 20 20 20 20 20  |. adr%...4      |
00009f40  20 20 20 e7 20 61 64 72  25 21 31 36 20 f2 64 6f  |   . adr%!16 .do|
00009f50  5f 63 6c 69 63 6b 28 73  5f 70 6f 69 6e 74 65 72  |_click(s_pointer|
00009f60  25 2c 61 64 72 25 21 31  36 29 0d 05 d7 0c 20 20  |%,adr%!16)....  |
00009f70  20 20 20 20 20 cd 0d 05  d8 0a 20 20 20 20 20 cd  |     .....     .|
00009f80  0d 05 d9 08 20 20 20 cd  0d 05 da 06 20 cd 0d 05  |....   ..... ...|
00009f90  db 06 20 e1 0d 05 dc 04  0d 05 dd 1e 20 dd f2 6f  |.. ......... ..o|
00009fa0  66 74 65 6e 3a e7 20 70  6f 69 6e 74 65 72 5f 6f  |ften:. pointer_o|
00009fb0  6e 25 3d 30 20 e1 0d 05  de 21 20 73 74 61 63 6b  |n%=0 ....! stack|
00009fc0  25 3d a4 73 74 61 63 6b  28 63 75 72 72 65 6e 74  |%=.stack(current|
00009fd0  5f 70 61 67 65 25 29 0d  05 df 1e 20 c8 99 20 6e  |_page%).... .. n|
00009fe0  65 6e 74 72 69 65 73 25  2c 73 74 61 63 6b 25 20  |entries%,stack% |
00009ff0  b8 20 6e 6f 25 0d 05 e0  0c 20 e7 20 6e 6f 25 20  |. no%.... . no% |
0000a000  8c 0d 05 e1 12 20 20 20  e3 20 6f 62 25 3d 31 b8  |.....   . ob%=1.|
0000a010  6e 6f 25 0d 05 e2 2c 20  20 20 20 20 c8 99 20 67  |no%...,     .. g|
0000a020  65 74 6e 74 68 25 2c 73  74 61 63 6b 25 2c 6f 62  |etnth%,stack%,ob|
0000a030  25 20 b8 20 61 64 72 25  2c 74 6f 6b 65 6e 25 0d  |% . adr%,token%.|
0000a040  05 e3 14 20 20 20 20 20  e7 20 61 64 72 25 21 32  |...     . adr%!2|
0000a050  38 20 8c 0d 05 e4 30 20  20 20 20 20 20 20 c8 99  |8 ....0       ..|
0000a060  20 67 65 74 65 6e 74 72  79 25 2c 73 5f 63 6c 69  | getentry%,s_cli|
0000a070  63 6b 73 25 2c 61 64 72  25 21 32 38 20 b8 20 61  |cks%,adr%!28 . a|
0000a080  64 72 25 0d 05 e5 15 20  20 20 20 20 20 20 e7 20  |dr%....       . |
0000a090  61 64 72 25 21 38 20 8c  0d 05 e6 1a 20 20 20 20  |adr%!8 .....    |
0000a0a0  20 20 20 20 20 e7 20 61  64 72 25 21 32 34 3c 91  |     . adr%!24<.|
0000a0b0  20 8c 0d 05 e7 20 20 20  20 20 20 20 20 20 20 20  | ....           |
0000a0c0  20 61 64 72 25 21 32 34  3d 91 2b 61 64 72 25 21  | adr%!24=.+adr%!|
0000a0d0  31 32 0d 05 e8 29 20 20  20 20 20 20 20 20 20 20  |12...)          |
0000a0e0  20 f2 64 6f 5f 63 6c 69  63 6b 28 73 5f 6f 66 74  | .do_click(s_oft|
0000a0f0  65 6e 25 2c 61 64 72 25  21 38 29 0d 05 e9 0e 20  |en%,adr%!8).... |
0000a100  20 20 20 20 20 20 20 20  cd 0d 05 ea 0c 20 20 20  |        .....   |
0000a110  20 20 20 20 cd 0d 05 eb  0a 20 20 20 20 20 cd 0d  |    .....     ..|
0000a120  05 ec 08 20 20 20 ed 0d  05 ed 06 20 cd 0d 05 ee  |...   ..... ....|
0000a130  06 20 e1 0d 05 ef 04 0d  05 f0 1d 20 dd f2 6f 70  |. ......... ..op|
0000a140  65 6e 5f 74 72 79 5f 6d  65 6e 75 28 6d 78 25 2c  |en_try_menu(mx%,|
0000a150  6d 79 25 29 0d 05 f1 17  20 e3 49 25 3d 30 b8 32  |my%).... .I%=0.2|
0000a160  88 32 3a 50 25 3d 6d 61  69 6e 25 0d 05 f2 0b 20  |.2:P%=main%.... |
0000a170  5b 6f 70 74 49 25 0d 05  f3 0f 20 65 71 75 73 20  |[optI%.... equs |
0000a180  6d 65 6e 75 24 0d 05 f4  11 20 65 71 75 64 20 26  |menu$.... equd &|
0000a190  30 37 30 32 30 37 0d 05  f5 1c 20 65 71 75 64 20  |070207.... equd |
0000a1a0  31 36 38 3a 65 71 75 64  20 34 30 3a 65 71 75 64  |168:equd 40:equd|
0000a1b0  20 30 0d 05 f6 2c 20 65  71 75 64 20 38 3a 65 71  | 0..., equd 8:eq|
0000a1c0  75 64 20 70 61 67 65 6c  69 73 74 5f 77 63 25 3a  |ud pagelist_wc%:|
0000a1d0  65 71 75 64 20 26 30 37  30 30 30 30 32 31 0d 05  |equd &07000021..|
0000a1e0  f7 18 20 65 71 75 73 20  22 53 68 6f 77 20 70 61  |.. equs "Show pa|
0000a1f0  67 65 20 20 20 22 0d 05  f8 24 20 65 71 75 64 20  |ge   "...$ equd |
0000a200  26 38 30 3a 65 71 75 64  20 2d 31 3a 65 71 75 64  |&80:equd -1:equd|
0000a210  20 26 30 37 30 30 30 30  32 31 0d 05 f9 18 20 65  | &07000021.... e|
0000a220  71 75 73 20 22 50 72 69  6e 74 20 20 20 20 20 20  |qus "Print      |
0000a230  20 22 0d 05 fa 08 20 5d  3a ed 0d 05 fb 0d 20 6d  | ".... ]:..... m|
0000a240  65 6e 75 25 3d 31 31 0d  05 fc 25 20 c8 99 20 63  |enu%=11...% .. c|
0000a250  72 65 61 74 65 6d 65 6e  75 25 2c 2c 6d 61 69 6e  |reatemenu%,,main|
0000a260  25 2c 6d 78 25 2c 6d 79  25 2d 33 32 0d 05 fd 06  |%,mx%,my%-32....|
0000a270  20 e1 0d 05 fe 04 0d 05  ff 17 20 dd f2 74 72 79  | ......... ..try|
0000a280  5f 6d 65 6e 75 5f 77 61  72 6e 69 6e 67 0d 06 00  |_menu_warning...|
0000a290  24 20 6d 78 25 3d 71 25  21 32 34 3a 6d 79 25 3d  |$ mx%=q%!24:my%=|
0000a2a0  71 25 21 32 38 3a 69 74  65 6d 25 3d 71 25 21 33  |q%!28:item%=q%!3|
0000a2b0  32 0d 06 01 28 20 f2 61  72 72 61 6e 67 65 5f 70  |2...( .arrange_p|
0000a2c0  61 67 65 6c 69 73 74 5f  77 63 28 63 75 72 72 65  |agelist_wc(curre|
0000a2d0  6e 74 5f 70 61 67 65 25  29 0d 06 02 28 20 c8 99  |nt_page%)...( ..|
0000a2e0  20 63 72 73 75 62 6d 65  6e 75 25 2c 2c 70 61 67  | crsubmenu%,,pag|
0000a2f0  65 6c 69 73 74 5f 77 63  25 2c 6d 78 25 2c 6d 79  |elist_wc%,mx%,my|
0000a300  25 0d 06 03 06 20 e1 0d  06 04 04 0d 06 05 16 20  |%.... ......... |
0000a310  dd f2 74 72 79 5f 6d 65  6e 75 5f 73 65 6c 65 63  |..try_menu_selec|
0000a320  74 0d 06 06 0f 20 c8 8e  20 6d 65 6e 75 25 20 ca  |t.... .. menu% .|
0000a330  0d 06 07 19 20 20 20 c9  20 35 3a f2 69 63 6f 6e  |....   . 5:.icon|
0000a340  5f 62 61 72 5f 6d 65 6e  75 0d 06 08 0c 20 20 20  |_bar_menu....   |
0000a350  c9 20 31 31 3a 0d 06 09  11 20 20 20 20 20 c8 8e  |. 11:....     ..|
0000a360  20 21 71 25 20 ca 0d 06  0a 1c 20 20 20 20 20 20  | !q% .....      |
0000a370  20 c9 20 31 3a f2 6f 70  65 6e 5f 70 72 69 6e 74  | . 1:.open_print|
0000a380  5f 77 0d 06 0b 0a 20 20  20 20 20 cb 0d 06 0c 06  |_w....     .....|
0000a390  20 cb 0d 06 0d 06 20 e1  0d 06 0e 04 0d 06 0f 16  | ..... .........|
0000a3a0  20 dd f2 74 72 79 5f 70  61 67 65 6c 69 73 74 5f  | ..try_pagelist_|
0000a3b0  77 63 0d 06 10 0e 20 62  75 74 25 3d 71 25 21 38  |wc.... but%=q%!8|
0000a3c0  0d 06 11 24 20 21 77 73  25 3d 70 61 67 65 6c 69  |...$ !ws%=pageli|
0000a3d0  73 74 5f 77 63 25 3a c8  99 20 67 65 74 77 25 2c  |st_wc%:.. getw%,|
0000a3e0  2c 77 73 25 0d 06 12 2f  20 6f 66 66 78 25 3d 28  |,ws%.../ offx%=(|
0000a3f0  77 73 25 21 34 2d 77 73  25 21 32 30 29 3a 6f 66  |ws%!4-ws%!20):of|
0000a400  66 79 25 3d 28 77 73 25  21 31 36 2d 77 73 25 21  |fy%=(ws%!16-ws%!|
0000a410  32 34 29 0d 06 13 21 20  70 61 67 65 25 3d 28 28  |24)...! page%=((|
0000a420  28 71 25 21 34 29 2d 6f  66 66 79 25 29 81 2d 34  |(q%!4)-offy%).-4|
0000a430  38 29 2b 31 0d 06 14 2e  20 c8 99 20 6e 65 6e 74  |8)+1.... .. nent|
0000a440  72 69 65 73 25 2c 73 5f  70 61 67 65 73 25 20 b8  |ries%,s_pages% .|
0000a450  20 6e 70 25 3a e7 20 70  61 67 65 25 3e 6e 70 25  | np%:. page%>np%|
0000a460  20 e1 0d 06 15 27 20 c8  99 20 67 65 74 6e 74 68  | ....' .. getnth|
0000a470  25 2c 73 5f 70 61 67 65  73 25 2c 70 61 67 65 25  |%,s_pages%,page%|
0000a480  20 b8 20 2c 70 61 67 65  25 0d 06 16 20 20 f2 61  | . ,page%...  .a|
0000a490  72 72 61 6e 67 65 5f 70  61 67 65 6c 69 73 74 5f  |rrange_pagelist_|
0000a4a0  77 63 28 70 61 67 65 25  29 0d 06 17 16 20 f2 73  |wc(page%).... .s|
0000a4b0  68 6f 77 5f 70 61 67 65  28 70 61 67 65 25 29 0d  |how_page(page%).|
0000a4c0  06 18 28 20 f2 61 72 72  61 6e 67 65 5f 70 61 67  |..( .arrange_pag|
0000a4d0  65 6c 69 73 74 5f 77 63  28 63 75 72 72 65 6e 74  |elist_wc(current|
0000a4e0  5f 70 61 67 65 25 29 0d  06 19 12 20 f2 62 65 67  |_page%).... .beg|
0000a4f0  69 6e 5f 74 72 79 69 6e  67 0d 06 1a 20 20 e7 20  |in_trying...  . |
0000a500  62 75 74 25 80 34 20 c8  99 20 63 72 65 61 74 65  |but%.4 .. create|
0000a510  6d 65 6e 75 25 2c 2c 2d  31 0d 06 1b 06 20 e1 0d  |menu%,,-1.... ..|
0000a520  06 1c 04 0d 06 1d 0b 20  dd f2 73 63 61 6e 0d 06  |....... ..scan..|
0000a530  1e 16 20 e7 20 73 63 61  6e 5f 63 6f 75 6e 74 25  |.. . scan_count%|
0000a540  3e 91 20 e1 0d 06 1f 2c  20 e7 20 73 63 61 6e 5f  |>. ...., . scan_|
0000a550  6b 65 79 73 25 3d 31 20  73 63 61 6e 5f 63 6f 75  |keys%=1 scan_cou|
0000a560  6e 74 25 3d 91 2b 73 63  61 6e 5f 74 69 6d 65 25  |nt%=.+scan_time%|
0000a570  0d 06 20 21 20 73 74 61  63 6b 25 3d a4 73 74 61  |.. ! stack%=.sta|
0000a580  63 6b 28 63 75 72 72 65  6e 74 5f 70 61 67 65 25  |ck(current_page%|
0000a590  29 0d 06 21 1e 20 c8 99  20 6e 65 6e 74 72 69 65  |)..!. .. nentrie|
0000a5a0  73 25 2c 73 74 61 63 6b  25 20 b8 20 6e 6f 25 0d  |s%,stack% . no%.|
0000a5b0  06 22 0e 20 e7 20 6e 6f  25 3d 30 20 e1 0d 06 23  |.". . no%=0 ...#|
0000a5c0  18 20 e7 20 73 63 61 6e  5f 6f 62 6a 65 63 74 25  |. . scan_object%|
0000a5d0  3c 3e 30 20 8c 0d 06 24  33 20 20 20 c8 99 20 67  |<>0 ...$3   .. g|
0000a5e0  65 74 6e 74 68 25 2c 73  74 61 63 6b 25 2c 73 63  |etnth%,stack%,sc|
0000a5f0  61 6e 5f 6f 62 6a 65 63  74 25 20 b8 20 61 64 72  |an_object% . adr|
0000a600  25 2c 74 6f 6b 65 6e 25  0d 06 25 16 20 20 20 e7  |%,token%..%.   .|
0000a610  20 61 64 72 25 21 33 36  20 80 20 31 20 8c 0d 06  | adr%!36 . 1 ...|
0000a620  26 29 20 20 20 20 20 f2  6c 69 67 68 74 5f 6f 62  |&)     .light_ob|
0000a630  6a 65 63 74 28 73 74 61  63 6b 25 2c 74 6f 6b 65  |ject(stack%,toke|
0000a640  6e 25 2c 30 2c 31 29 0d  06 27 18 20 20 20 20 20  |n%,0,1)..'.     |
0000a650  73 63 61 6e 5f 6f 62 6a  65 63 74 25 2b 3d 31 0d  |scan_object%+=1.|
0000a660  06 28 2a 20 20 20 20 20  e7 20 73 63 61 6e 5f 6f  |.(*     . scan_o|
0000a670  62 6a 65 63 74 25 3e 6e  6f 25 20 73 63 61 6e 5f  |bject%>no% scan_|
0000a680  6f 62 6a 65 63 74 25 3d  31 0d 06 29 08 20 20 20  |object%=1..).   |
0000a690  cd 0d 06 2a 06 20 cc 0d  06 2b 15 20 20 20 73 63  |...*. ...+.   sc|
0000a6a0  61 6e 5f 6f 62 6a 65 63  74 25 3d 31 0d 06 2c 06  |an_object%=1..,.|
0000a6b0  20 cd 0d 06 2d 0b 20 79  65 73 25 3d 30 0d 06 2e  | ...-. yes%=0...|
0000a6c0  06 20 f5 0d 06 2f 33 20  20 20 c8 99 20 67 65 74  |. .../3   .. get|
0000a6d0  6e 74 68 25 2c 73 74 61  63 6b 25 2c 73 63 61 6e  |nth%,stack%,scan|
0000a6e0  5f 6f 62 6a 65 63 74 25  20 b8 20 61 64 72 25 2c  |_object% . adr%,|
0000a6f0  74 6f 6b 65 6e 25 0d 06  30 2b 20 20 20 e7 20 28  |token%..0+   . (|
0000a700  61 64 72 25 21 32 38 29  3c 3e 30 20 80 20 28 28  |adr%!28)<>0 . ((|
0000a710  61 64 72 25 21 33 36 29  80 31 32 38 29 3d 30 20  |adr%!36).128)=0 |
0000a720  8c 0d 06 31 2e 20 20 20  20 20 c8 99 20 67 65 74  |...1.     .. get|
0000a730  65 6e 74 72 79 25 2c 73  5f 63 6c 69 63 6b 73 25  |entry%,s_clicks%|
0000a740  2c 61 64 72 25 21 32 38  20 b8 20 61 64 72 25 0d  |,adr%!28 . adr%.|
0000a750  06 32 14 20 20 20 20 20  e7 20 61 64 72 25 21 31  |.2.     . adr%!1|
0000a760  36 20 8c 0d 06 33 34 20  20 20 20 20 20 20 f2 6c  |6 ...34       .l|
0000a770  69 67 68 74 5f 6f 62 6a  65 63 74 28 73 74 61 63  |ight_object(stac|
0000a780  6b 25 2c 74 6f 6b 65 6e  25 2c 31 2c 31 29 3a 79  |k%,token%,1,1):y|
0000a790  65 73 25 3d 6e 6f 25 0d  06 34 0a 20 20 20 20 20  |es%=no%..4.     |
0000a7a0  cc 0d 06 35 1a 20 20 20  20 20 20 20 73 63 61 6e  |...5.       scan|
0000a7b0  5f 6f 62 6a 65 63 74 25  2b 3d 31 0d 06 36 2c 20  |_object%+=1..6, |
0000a7c0  20 20 20 20 20 20 e7 20  73 63 61 6e 5f 6f 62 6a  |      . scan_obj|
0000a7d0  65 63 74 25 3e 6e 6f 25  20 73 63 61 6e 5f 6f 62  |ect%>no% scan_ob|
0000a7e0  6a 65 63 74 25 3d 31 0d  06 37 12 20 20 20 20 20  |ject%=1..7.     |
0000a7f0  20 20 79 65 73 25 2b 3d  31 0d 06 38 0a 20 20 20  |  yes%+=1..8.   |
0000a800  20 20 cd 0d 06 39 08 20  20 20 cc 0d 06 3a 18 20  |  ...9.   ...:. |
0000a810  20 20 20 20 73 63 61 6e  5f 6f 62 6a 65 63 74 25  |    scan_object%|
0000a820  2b 3d 31 0d 06 3b 2a 20  20 20 20 20 e7 20 73 63  |+=1..;*     . sc|
0000a830  61 6e 5f 6f 62 6a 65 63  74 25 3e 6e 6f 25 20 73  |an_object%>no% s|
0000a840  63 61 6e 5f 6f 62 6a 65  63 74 25 3d 31 0d 06 3c  |can_object%=1..<|
0000a850  10 20 20 20 20 20 79 65  73 25 2b 3d 31 0d 06 3d  |.     yes%+=1..=|
0000a860  08 20 20 20 cd 0d 06 3e  0e 20 fd 79 65 73 25 3d  |.   ...>. .yes%=|
0000a870  6e 6f 25 0d 06 3f 06 20  e1 0d 06 40 04 0d 06 41  |no%..?. ...@...A|
0000a880  17 20 dd f2 73 63 61 6e  5f 63 6c 69 63 6b 28 62  |. ..scan_click(b|
0000a890  75 74 25 29 0d 06 42 17  20 e7 20 73 63 61 6e 5f  |ut%)..B. . scan_|
0000a8a0  6f 62 6a 65 63 74 25 3d  30 20 e1 0d 06 43 21 20  |object%=0 ...C! |
0000a8b0  73 74 61 63 6b 25 3d a4  73 74 61 63 6b 28 63 75  |stack%=.stack(cu|
0000a8c0  72 72 65 6e 74 5f 70 61  67 65 25 29 0d 06 44 34  |rrent_page%)..D4|
0000a8d0  20 e7 20 73 63 61 6e 5f  6b 65 79 73 25 3d 31 20  | . scan_keys%=1 |
0000a8e0  84 20 28 73 63 61 6e 5f  6b 65 79 73 25 3d 32 20  |. (scan_keys%=2 |
0000a8f0  80 20 28 62 75 74 25 80  26 31 30 31 29 29 20 8c  |. (but%.&101)) .|
0000a900  0d 06 45 33 20 20 20 c8  99 20 67 65 74 6e 74 68  |..E3   .. getnth|
0000a910  25 2c 73 74 61 63 6b 25  2c 73 63 61 6e 5f 6f 62  |%,stack%,scan_ob|
0000a920  6a 65 63 74 25 20 b8 20  61 64 72 25 2c 74 6f 6b  |ject% . adr%,tok|
0000a930  65 6e 25 0d 06 46 12 20  20 20 e7 20 61 64 72 25  |en%..F.   . adr%|
0000a940  21 32 38 20 8c 0d 06 47  2e 20 20 20 20 20 c8 99  |!28 ...G.     ..|
0000a950  20 67 65 74 65 6e 74 72  79 25 2c 73 5f 63 6c 69  | getentry%,s_cli|
0000a960  63 6b 73 25 2c 61 64 72  25 21 32 38 20 b8 20 61  |cks%,adr%!28 . a|
0000a970  64 72 25 0d 06 48 2e 20  20 20 20 20 e7 20 61 64  |dr%..H.     . ad|
0000a980  72 25 21 32 30 20 f2 64  6f 5f 63 6c 69 63 6b 28  |r%!20 .do_click(|
0000a990  73 5f 6d 6f 75 73 65 25  2c 61 64 72 25 21 32 30  |s_mouse%,adr%!20|
0000a9a0  29 0d 06 49 08 20 20 20  cd 0d 06 4a 06 20 cc 0d  |)..I.   ...J. ..|
0000a9b0  06 4b 18 20 20 20 e7 20  62 75 74 25 80 26 34 30  |.K.   . but%.&40|
0000a9c0  34 20 f2 73 63 61 6e 0d  06 4c 06 20 cd 0d 06 4d  |4 .scan..L. ...M|
0000a9d0  06 20 e1 0d 06 4e 04 0d  06 4f 16 20 dd f2 72 65  |. ...N...O. ..re|
0000a9e0  64 65 66 69 6e 65 5f 6d  61 69 6e 5f 77 0d 06 50  |define_main_w..P|
0000a9f0  1e 20 21 71 25 3d 6d 61  69 6e 5f 77 25 3a c8 99  |. !q%=main_w%:..|
0000aa00  20 67 65 74 77 69 25 2c  2c 71 25 0d 06 51 28 20  | getwi%,,q%..Q( |
0000aa10  e7 20 28 71 25 21 33 32  29 80 28 31 3c 3c 31 36  |. (q%!32).(1<<16|
0000aa20  29 20 6f 70 65 6e 25 3d  b9 20 8b 20 6f 70 65 6e  |) open%=. . open|
0000aa30  25 3d a3 0d 06 52 1f 20  c8 99 20 22 57 69 6d 70  |%=...R. .. "Wimp|
0000aa40  5f 44 65 6c 65 74 65 57  69 6e 64 6f 77 22 2c 2c  |_DeleteWindow",,|
0000aa50  71 25 0d 06 53 27 20 66  25 3d 28 28 71 25 21 33  |q%..S' f%=((q%!3|
0000aa60  32 29 80 26 38 33 46 46  46 46 46 46 29 20 84 20  |2).&83FFFFFF) . |
0000aa70  28 26 38 33 3c 3c 32 34  29 0d 06 54 0e 20 62 68  |(&83<<24)..T. bh|
0000aa80  25 3d 71 25 21 32 38 0d  06 55 1e 20 e7 20 68 5f  |%=q%!28..U. . h_|
0000aa90  73 63 72 6f 6c 6c 25 20  66 25 3d 66 25 84 28 31  |scroll% f%=f%.(1|
0000aaa0  3c 3c 33 30 29 0d 06 56  1e 20 e7 20 76 5f 73 63  |<<30)..V. . v_sc|
0000aab0  72 6f 6c 6c 25 20 66 25  3d 66 25 84 28 31 3c 3c  |roll% f%=f%.(1<<|
0000aac0  32 38 29 0d 06 57 2a 20  e7 20 68 5f 73 63 72 6f  |28)..W* . h_scro|
0000aad0  6c 6c 25 20 84 20 76 5f  73 63 72 6f 6c 6c 25 20  |ll% . v_scroll% |
0000aae0  66 25 3d 66 25 84 28 31  3c 3c 32 39 29 0d 06 58  |f%=f%.(1<<29)..X|
0000aaf0  3c 20 e7 20 74 69 74 6c  65 5f 62 61 72 25 20 66  |< . title_bar% f|
0000ab00  25 3d 66 25 84 28 31 3c  3c 32 36 29 3a e7 20 74  |%=f%.(1<<26):. t|
0000ab10  6f 67 67 6c 65 5f 69 63  6f 6e 25 20 66 25 3d 66  |oggle_icon% f%=f|
0000ab20  25 84 28 31 3c 3c 32 37  29 0d 06 59 0d 20 71 25  |%.(1<<27)..Y. q%|
0000ab30  21 33 32 3d 66 25 0d 06  5a 2b 20 c8 99 20 22 57  |!32=f%..Z+ .. "W|
0000ab40  69 6d 70 5f 43 72 65 61  74 65 57 69 6e 64 6f 77  |imp_CreateWindow|
0000ab50  22 2c 2c 71 25 2b 34 20  b8 20 6d 61 69 6e 5f 77  |",,q%+4 . main_w|
0000ab60  25 0d 06 5b 55 20 21 71  25 3d 6d 61 69 6e 5f 77  |%..[U !q%=main_w|
0000ab70  25 3a c8 99 20 67 65 74  77 25 2c 2c 71 25 3a f2  |%:.. getw%,,q%:.|
0000ab80  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 21 71 25 2c  |open_window(!q%,|
0000ab90  71 25 21 34 2c 71 25 21  38 2c 71 25 21 31 32 2c  |q%!4,q%!8,q%!12,|
0000aba0  71 25 21 31 36 2c 71 25  21 32 30 2c 71 25 21 32  |q%!16,q%!20,q%!2|
0000abb0  34 2c 62 68 25 29 0d 06  5c 06 20 e1 0d 06 5d 04  |4,bh%)..\. ...].|
0000abc0  0d 06 5e 1b 20 dd f2 69  6e 69 74 5f 73 65 71 28  |..^. ..init_seq(|
0000abd0  74 69 6d 65 25 2c 61 64  72 25 29 0d 06 5f 20 20  |time%,adr%).._  |
0000abe0  c8 99 20 6d 6f 76 65 64  61 74 61 25 2c 61 64 72  |.. movedata%,adr|
0000abf0  25 2c 77 73 25 2c 21 61  64 72 25 0d 06 60 37 20  |%,ws%,!adr%..`7 |
0000ac00  e7 20 28 61 64 72 25 21  31 32 29 80 34 20 77 73  |. (adr%!12).4 ws|
0000ac10  25 21 34 3d 34 30 3a 77  73 25 21 38 3d 33 36 20  |%!4=40:ws%!8=36 |
0000ac20  8b 20 77 73 25 21 34 3d  33 36 3a 77 73 25 21 38  |. ws%!4=36:ws%!8|
0000ac30  3d 30 0d 06 61 29 20 77  73 25 21 31 32 3d 34 3a  |=0..a) ws%!12=4:|
0000ac40  77 73 25 21 31 36 3d 61  64 72 25 21 32 30 3a 77  |ws%!16=adr%!20:w|
0000ac50  73 25 21 32 30 3d 74 69  6d 65 25 0d 06 62 2a 20  |s%!20=time%..b* |
0000ac60  77 73 25 21 32 34 3d 61  64 72 25 21 38 3a 77 73  |ws%!24=adr%!8:ws|
0000ac70  25 21 32 38 3d 30 3a 77  73 25 21 33 32 3d 61 64  |%!28=0:ws%!32=ad|
0000ac80  72 25 21 31 32 0d 06 63  19 20 f2 6d 61 6b 65 5f  |r%!12..c. .make_|
0000ac90  73 70 61 63 65 28 21 77  73 25 2b 31 36 29 0d 06  |space(!ws%+16)..|
0000aca0  64 22 20 c8 99 20 61 64  64 65 6e 74 72 79 25 2c  |d" .. addentry%,|
0000acb0  73 5f 73 65 71 75 65 6e  63 65 73 25 2c 77 73 25  |s_sequences%,ws%|
0000acc0  0d 06 65 65 20 e7 20 28  77 73 25 21 33 32 29 80  |..ee . (ws%!32).|
0000acd0  36 34 20 70 6f 69 6e 74  65 72 5f 6f 6e 25 3d a3  |64 pointer_on%=.|
0000ace0  3a f2 67 65 74 5f 70 6f  69 6e 74 65 72 3a e7 20  |:.get_pointer:. |
0000acf0  68 61 6e 64 6c 65 25 3d  6d 61 69 6e 5f 77 25 20  |handle%=main_w% |
0000ad00  c8 99 20 22 57 69 6d 70  5f 53 70 72 69 74 65 4f  |.. "Wimp_SpriteO|
0000ad10  70 22 2c 33 36 2c 31 2c  22 70 74 72 5f 63 6c 6f  |p",36,1,"ptr_clo|
0000ad20  63 6b 22 2c 32 0d 06 66  06 20 e1 0d 06 67 04 0d  |ck",2..f. ...g..|
0000ad30  06 68 1d 20 dd f2 63 68  65 63 6b 5f 73 65 71 75  |.h. ..check_sequ|
0000ad40  65 6e 63 65 73 28 74 69  6d 65 25 29 0d 06 69 24  |ences(time%)..i$|
0000ad50  20 c8 99 20 6e 65 6e 74  72 69 65 73 25 2c 73 5f  | .. nentries%,s_|
0000ad60  73 65 71 75 65 6e 63 65  73 25 20 b8 20 6e 73 25  |sequences% . ns%|
0000ad70  0d 06 6a 0c 20 e7 20 6e  73 25 20 8c 0d 06 6b 23  |..j. . ns% ...k#|
0000ad80  20 20 20 73 74 61 63 6b  25 3d a4 73 74 61 63 6b  |   stack%=.stack|
0000ad90  28 63 75 72 72 65 6e 74  5f 70 61 67 65 25 29 0d  |(current_page%).|
0000ada0  06 6c 15 20 20 20 e3 20  73 65 71 25 3d 31 20 b8  |.l.   . seq%=1 .|
0000adb0  20 6e 73 25 0d 06 6d 2c  20 20 20 20 20 c8 99 20  | ns%..m,     .. |
0000adc0  67 65 74 6e 74 68 25 2c  73 5f 73 65 71 75 65 6e  |getnth%,s_sequen|
0000add0  63 65 73 25 2c 73 65 71  25 20 b8 20 61 64 72 25  |ces%,seq% . adr%|
0000ade0  0d 06 6e 1a 20 20 20 20  20 e7 20 74 69 6d 65 25  |..n.     . time%|
0000adf0  3e 61 64 72 25 21 32 30  20 8c 0d 06 6f 20 20 20  |>adr%!20 ...o   |
0000ae00  20 20 20 20 20 61 64 72  25 21 32 30 3d 74 69 6d  |     adr%!20=tim|
0000ae10  65 25 2b 61 64 72 25 21  31 36 0d 06 70 3f 20 20  |e%+adr%!16..p?  |
0000ae20  20 20 20 20 20 6c 65 6e  25 3d 21 61 64 72 25 3a  |     len%=!adr%:|
0000ae30  70 74 72 25 3d 61 64 72  25 21 34 3a 6f 70 74 72  |ptr%=adr%!4:optr|
0000ae40  25 3d 61 64 72 25 21 38  3a 70 74 72 5f 69 6e 63  |%=adr%!8:ptr_inc|
0000ae50  25 3d 61 64 72 25 21 31  32 0d 06 71 28 20 20 20  |%=adr%!12..q(   |
0000ae60  20 20 20 20 6c 6f 6f 70  25 3d 28 61 64 72 25 21  |    loop%=(adr%!|
0000ae70  33 32 29 80 32 3a 6c 61  73 74 5f 6f 6e 65 25 3d  |32).2:last_one%=|
0000ae80  30 0d 06 72 43 20 20 20  20 20 20 20 6c 61 73 74  |0..rC       last|
0000ae90  25 3d 28 61 64 72 25 21  33 32 29 80 38 3a 74 72  |%=(adr%!32).8:tr|
0000aea0  61 69 6c 25 3d 28 61 64  72 25 21 33 32 29 80 31  |ail%=(adr%!32).1|
0000aeb0  36 3a 6e 6f 75 64 25 3d  28 61 64 72 25 21 33 32  |6:noud%=(adr%!32|
0000aec0  29 80 33 32 0d 06 73 21  20 20 20 20 20 20 20 73  |).32..s!       s|
0000aed0  65 65 74 68 72 75 25 3d  28 61 64 72 25 21 33 32  |eethru%=(adr%!32|
0000aee0  29 80 31 32 38 0d 06 74  2b 20 20 20 20 20 20 20  |).128..t+       |
0000aef0  e7 20 61 64 72 25 21 32  34 3c 3e 30 20 80 20 61  |. adr%!24<>0 . a|
0000af00  64 72 25 21 32 38 3d 61  64 72 25 21 32 34 20 8c  |dr%!28=adr%!24 .|
0000af10  0d 06 75 16 20 20 20 20  20 20 20 20 20 e7 20 6c  |..u.         . l|
0000af20  6f 6f 70 25 20 8c 0d 06  76 24 20 20 20 20 20 20  |oop% ...v$      |
0000af30  20 20 20 20 20 e7 20 70  74 72 25 3d 34 30 20 6c  |     . ptr%=40 l|
0000af40  61 73 74 5f 6f 6e 65 25  3d b9 0d 06 77 0e 20 20  |ast_one%=...w.  |
0000af50  20 20 20 20 20 20 20 cc  0d 06 78 24 20 20 20 20  |       ...x$    |
0000af60  20 20 20 20 20 20 20 e7  20 70 74 72 25 3d 33 36  |       . ptr%=36|
0000af70  20 6c 61 73 74 5f 6f 6e  65 25 3d b9 0d 06 79 0e  | last_one%=...y.|
0000af80  20 20 20 20 20 20 20 20  20 cd 0d 06 7a 0c 20 20  |         ...z.  |
0000af90  20 20 20 20 20 cd 0d 06  7b 22 20 20 20 20 20 20  |     ...{"      |
0000afa0  20 e7 20 6f 70 74 72 25  3c 3e 30 20 80 20 74 72  | . optr%<>0 . tr|
0000afb0  61 69 6c 25 3d 30 20 8c  0d 06 7c 1a 20 20 20 20  |ail%=0 ...|.    |
0000afc0  20 20 20 20 20 e7 20 6c  61 73 74 5f 6f 6e 65 25  |     . last_one%|
0000afd0  20 8c 0d 06 7d 1a 20 20  20 20 20 20 20 20 20 20  | ...}.          |
0000afe0  20 e7 20 6c 61 73 74 25  3d 30 20 8c 0d 06 7e 1a  | . last%=0 ...~.|
0000aff0  20 20 20 20 20 20 20 20  20 20 20 20 20 e7 20 6e  |             . n|
0000b000  6f 75 64 25 20 8c 0d 06  7f 34 20 20 20 20 20 20  |oud% ....4      |
0000b010  20 20 20 20 20 20 20 20  20 f2 66 61 73 74 5f 64  |         .fast_d|
0000b020  72 61 77 28 73 74 61 63  6b 25 2c 6f 70 74 72 25  |raw(stack%,optr%|
0000b030  21 61 64 72 25 2c b9 2c  30 29 0d 06 80 12 20 20  |!adr%,.,0)....  |
0000b040  20 20 20 20 20 20 20 20  20 20 20 cc 0d 06 81 36  |           ....6|
0000b050  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
0000b060  68 69 64 65 5f 6f 62 6a  65 63 74 28 73 74 61 63  |hide_object(stac|
0000b070  6b 25 2c 6f 70 74 72 25  21 61 64 72 25 2c 31 2c  |k%,optr%!adr%,1,|
0000b080  31 29 0d 06 82 12 20 20  20 20 20 20 20 20 20 20  |1)....          |
0000b090  20 20 20 cd 0d 06 83 10  20 20 20 20 20 20 20 20  |   .....        |
0000b0a0  20 20 20 cd 0d 06 84 0e  20 20 20 20 20 20 20 20  |   .....        |
0000b0b0  20 cc 0d 06 85 18 20 20  20 20 20 20 20 20 20 20  | .....          |
0000b0c0  20 e7 20 6e 6f 75 64 25  20 8c 0d 06 86 32 20 20  | . noud% ....2  |
0000b0d0  20 20 20 20 20 20 20 20  20 20 20 f2 66 61 73 74  |           .fast|
0000b0e0  5f 64 72 61 77 28 73 74  61 63 6b 25 2c 6f 70 74  |_draw(stack%,opt|
0000b0f0  72 25 21 61 64 72 25 2c  b9 2c 30 29 0d 06 87 10  |r%!adr%,.,0)....|
0000b100  20 20 20 20 20 20 20 20  20 20 20 cc 0d 06 88 34  |           ....4|
0000b110  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 68 69  |             .hi|
0000b120  64 65 5f 6f 62 6a 65 63  74 28 73 74 61 63 6b 25  |de_object(stack%|
0000b130  2c 6f 70 74 72 25 21 61  64 72 25 2c 31 2c 31 29  |,optr%!adr%,1,1)|
0000b140  0d 06 89 10 20 20 20 20  20 20 20 20 20 20 20 cd  |....           .|
0000b150  0d 06 8a 0e 20 20 20 20  20 20 20 20 20 cd 0d 06  |....         ...|
0000b160  8b 0c 20 20 20 20 20 20  20 cd 0d 06 8c 1a 20 20  |..       .....  |
0000b170  20 20 20 20 20 e7 20 6c  61 73 74 5f 6f 6e 65 25  |     . last_one%|
0000b180  3d 30 20 8c 0d 06 8d 16  20 20 20 20 20 20 20 20  |=0 .....        |
0000b190  20 e7 20 6e 6f 75 64 25  20 8c 0d 06 8e 36 20 20  | . noud% ....6  |
0000b1a0  20 20 20 20 20 20 20 20  20 f2 66 61 73 74 5f 64  |         .fast_d|
0000b1b0  72 61 77 28 73 74 61 63  6b 25 2c 70 74 72 25 21  |raw(stack%,ptr%!|
0000b1c0  61 64 72 25 2c 30 2c 73  65 65 74 68 72 75 25 29  |adr%,0,seethru%)|
0000b1d0  0d 06 8f 0e 20 20 20 20  20 20 20 20 20 cc 0d 06  |....         ...|
0000b1e0  90 31 20 20 20 20 20 20  20 20 20 20 20 f2 68 69  |.1           .hi|
0000b1f0  64 65 5f 6f 62 6a 65 63  74 28 73 74 61 63 6b 25  |de_object(stack%|
0000b200  2c 70 74 72 25 21 61 64  72 25 2c 30 2c 31 29 0d  |,ptr%!adr%,0,1).|
0000b210  06 91 0e 20 20 20 20 20  20 20 20 20 cd 0d 06 92  |...         ....|
0000b220  27 20 20 20 20 20 20 20  20 20 61 64 72 25 21 38  |'         adr%!8|
0000b230  3d 70 74 72 25 3a 70 74  72 25 2b 3d 70 74 72 5f  |=ptr%:ptr%+=ptr_|
0000b240  69 6e 63 25 0d 06 93 16  20 20 20 20 20 20 20 20  |inc%....        |
0000b250  20 e7 20 6c 6f 6f 70 25  20 8c 0d 06 94 1c 20 20  | . loop% .....  |
0000b260  20 20 20 20 20 20 20 20  20 e7 20 70 74 72 25 3d  |         . ptr%=|
0000b270  6c 65 6e 25 20 8c 0d 06  95 27 20 20 20 20 20 20  |len% ....'      |
0000b280  20 20 20 20 20 20 20 70  74 72 25 3d 6c 65 6e 25  |       ptr%=len%|
0000b290  2d 38 3a 61 64 72 25 21  31 32 3d 2d 34 0d 06 96  |-8:adr%!12=-4...|
0000b2a0  10 20 20 20 20 20 20 20  20 20 20 20 cc 0d 06 97  |.           ....|
0000b2b0  1c 20 20 20 20 20 20 20  20 20 20 20 20 20 e7 20  |.             . |
0000b2c0  70 74 72 25 3d 33 32 20  8c 0d 06 98 24 20 20 20  |ptr%=32 ....$   |
0000b2d0  20 20 20 20 20 20 20 20  20 20 20 20 70 74 72 25  |            ptr%|
0000b2e0  3d 34 30 3a 61 64 72 25  21 31 32 3d 34 0d 06 99  |=40:adr%!12=4...|
0000b2f0  33 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |3               |
0000b300  e7 20 61 64 72 25 21 32  34 3c 3e 30 20 61 64 72  |. adr%!24<>0 adr|
0000b310  25 21 32 38 3d 28 61 64  72 25 21 32 38 29 2b 31  |%!28=(adr%!28)+1|
0000b320  0d 06 9a 12 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
0000b330  20 cd 0d 06 9b 10 20 20  20 20 20 20 20 20 20 20  | .....          |
0000b340  20 cd 0d 06 9c 0e 20 20  20 20 20 20 20 20 20 cc  | .....         .|
0000b350  0d 06 9d 1c 20 20 20 20  20 20 20 20 20 20 20 e7  |....           .|
0000b360  20 70 74 72 25 3d 6c 65  6e 25 20 8c 0d 06 9e 18  | ptr%=len% .....|
0000b370  20 20 20 20 20 20 20 20  20 20 20 20 20 70 74 72  |             ptr|
0000b380  25 3d 33 36 0d 06 9f 31  20 20 20 20 20 20 20 20  |%=36...1        |
0000b390  20 20 20 20 20 e7 20 61  64 72 25 21 32 34 3c 3e  |     . adr%!24<>|
0000b3a0  30 20 61 64 72 25 21 32  38 3d 28 61 64 72 25 21  |0 adr%!28=(adr%!|
0000b3b0  32 38 29 2b 31 0d 06 a0  10 20 20 20 20 20 20 20  |28)+1....       |
0000b3c0  20 20 20 20 cd 0d 06 a1  0e 20 20 20 20 20 20 20  |    .....       |
0000b3d0  20 20 cd 0d 06 a2 0c 20  20 20 20 20 20 20 cc 0d  |  .....       ..|
0000b3e0  06 a3 13 20 20 20 20 20  20 20 20 20 70 74 72 25  |...         ptr%|
0000b3f0  3d 30 0d 06 a4 0c 20 20  20 20 20 20 20 cd 0d 06  |=0....       ...|
0000b400  a5 16 20 20 20 20 20 20  20 61 64 72 25 21 34 3d  |..       adr%!4=|
0000b410  70 74 72 25 0d 06 a6 0a  20 20 20 20 20 cd 0d 06  |ptr%....     ...|
0000b420  a7 08 20 20 20 ed 0d 06  a8 08 20 20 20 f5 0d 06  |..   .....   ...|
0000b430  a9 12 20 20 20 20 20 6e  6f 6d 6f 72 65 25 3d b9  |..     nomore%=.|
0000b440  0d 06 aa 28 20 20 20 20  20 c8 99 20 6e 65 6e 74  |...(     .. nent|
0000b450  72 69 65 73 25 2c 73 5f  73 65 71 75 65 6e 63 65  |ries%,s_sequence|
0000b460  73 25 20 b8 20 6e 73 25  0d 06 ab 10 20 20 20 20  |s% . ns%....    |
0000b470  20 e7 20 6e 73 25 20 8c  0d 06 ac 19 20 20 20 20  | . ns% .....    |
0000b480  20 20 20 e3 20 73 65 71  25 3d 31 20 b8 20 6e 73  |   . seq%=1 . ns|
0000b490  25 0d 06 ad 37 20 20 20  20 20 20 20 20 20 c8 99  |%...7         ..|
0000b4a0  20 67 65 74 6e 74 68 25  2c 73 5f 73 65 71 75 65  | getnth%,s_seque|
0000b4b0  6e 63 65 73 25 2c 73 65  71 25 20 b8 20 61 64 72  |nces%,seq% . adr|
0000b4c0  25 2c 74 6f 6b 65 6e 25  0d 06 ae 41 20 20 20 20  |%,token%...A    |
0000b4d0  20 20 20 20 20 e7 20 61  64 72 25 21 34 3d 30 20  |     . adr%!4=0 |
0000b4e0  80 20 28 61 64 72 25 21  33 32 29 80 36 34 20 ff  |. (adr%!32).64 .|
0000b4f0  22 70 6f 69 6e 74 65 72  20 31 22 3a 70 6f 69 6e  |"pointer 1":poin|
0000b500  74 65 72 5f 6f 6e 25 3d  b9 0d 06 af 4c 20 20 20  |ter_on%=....L   |
0000b510  20 20 20 20 20 20 e7 20  61 64 72 25 21 34 3d 30  |      . adr%!4=0|
0000b520  20 6e 6f 6d 6f 72 65 25  3d 30 3a 73 65 71 25 3d  | nomore%=0:seq%=|
0000b530  6e 73 25 3a c8 99 20 6b  69 6c 6c 65 6e 74 72 79  |ns%:.. killentry|
0000b540  25 2c 73 5f 73 65 71 75  65 6e 63 65 73 25 2c 74  |%,s_sequences%,t|
0000b550  6f 6b 65 6e 25 0d 06 b0  0c 20 20 20 20 20 20 20  |oken%....       |
0000b560  ed 0d 06 b1 0a 20 20 20  20 20 cd 0d 06 b2 0f 20  |.....     ..... |
0000b570  20 20 fd 6e 6f 6d 6f 72  65 25 0d 06 b3 06 20 cd  |  .nomore%.... .|
0000b580  0d 06 b4 06 20 e1 0d 06  b5 04 0d 06 b6 2f 20 dd  |.... ......../ .|
0000b590  f2 66 61 73 74 5f 64 72  61 77 28 73 74 61 63 6b  |.fast_draw(stack|
0000b5a0  25 2c 74 6f 6b 65 6e 25  2c 65 72 61 73 65 25 2c  |%,token%,erase%,|
0000b5b0  73 65 65 74 68 72 75 25  29 0d 06 b7 0b 20 ea 20  |seethru%).... . |
0000b5c0  61 64 72 25 0d 06 b8 1d  20 21 71 25 3d 6d 61 69  |adr%.... !q%=mai|
0000b5d0  6e 5f 77 25 3a c8 99 20  67 65 74 77 25 2c 2c 71  |n_w%:.. getw%,,q|
0000b5e0  25 0d 06 b9 2b 20 6f 66  66 78 25 3d 28 71 25 21  |%...+ offx%=(q%!|
0000b5f0  34 2d 71 25 21 32 30 29  3a 6f 66 66 79 25 3d 28  |4-q%!20):offy%=(|
0000b600  71 25 21 31 36 2d 71 25  21 32 34 29 0d 06 ba 26  |q%!16-q%!24)...&|
0000b610  20 c8 99 20 67 65 74 65  6e 74 72 79 25 2c 73 74  | .. getentry%,st|
0000b620  61 63 6b 25 2c 74 6f 6b  65 6e 25 20 b8 20 61 64  |ack%,token% . ad|
0000b630  72 25 0d 06 bb 17 20 78  25 3d 28 61 64 72 25 21  |r%.... x%=(adr%!|
0000b640  31 32 29 2b 6f 66 66 78  25 0d 06 bc 17 20 79 25  |12)+offx%.... y%|
0000b650  3d 28 61 64 72 25 21 31  36 29 2b 6f 66 66 79 25  |=(adr%!16)+offy%|
0000b660  0d 06 bd 22 20 78 31 25  3d 28 61 64 72 25 21 32  |..." x1%=(adr%!2|
0000b670  30 29 2d 28 31 3c 3c 78  65 66 25 29 2b 6f 66 66  |0)-(1<<xef%)+off|
0000b680  78 25 0d 06 be 22 20 79  31 25 3d 28 61 64 72 25  |x%..." y1%=(adr%|
0000b690  21 32 34 29 2d 28 31 3c  3c 79 65 66 25 29 2b 6f  |!24)-(1<<yef%)+o|
0000b6a0  66 66 79 25 0d 06 bf 0f  20 e7 20 65 72 61 73 65  |ffy%.... . erase|
0000b6b0  25 20 8c 0d 06 c0 30 20  20 20 e7 20 28 28 61 64  |% ....0   . ((ad|
0000b6c0  72 25 21 33 36 29 80 31  32 38 29 3d 30 20 61 64  |r%!36).128)=0 ad|
0000b6d0  72 25 21 33 36 3d 28 61  64 72 25 21 33 36 29 84  |r%!36=(adr%!36).|
0000b6e0  31 32 38 0d 06 c1 32 20  20 20 c8 99 20 67 65 74  |128...2   .. get|
0000b6f0  65 6e 74 72 79 25 2c 73  5f 70 61 67 65 73 25 2c  |entry%,s_pages%,|
0000b700  63 75 72 72 65 6e 74 5f  70 61 67 65 25 20 b8 20  |current_page% . |
0000b710  61 64 72 31 25 0d 06 c2  16 20 20 20 62 63 6f 6c  |adr1%....   bcol|
0000b720  25 3d 61 64 72 31 25 21  32 38 3a 0d 06 c3 06 20  |%=adr1%!28:.... |
0000b730  cc 0d 06 c4 39 20 20 20  e7 20 28 61 64 72 25 21  |....9   . (adr%!|
0000b740  33 36 29 80 31 32 38 20  80 20 73 65 65 74 68 72  |36).128 . seethr|
0000b750  75 25 3d 30 20 61 64 72  25 21 33 36 3d 28 61 64  |u%=0 adr%!36=(ad|
0000b760  72 25 21 33 36 29 82 31  32 38 0d 06 c5 06 20 cd  |r%!36).128.... .|
0000b770  0d 06 c6 20 20 66 6c 61  67 73 25 3d 61 64 72 25  |...  flags%=adr%|
0000b780  21 33 36 3a 74 79 70 65  25 3d 61 64 72 25 21 34  |!36:type%=adr%!4|
0000b790  0d 06 c7 66 20 21 71 25  3d 6d 61 69 6e 5f 77 25  |...f !q%=main_w%|
0000b7a0  3a 71 25 21 34 3d 78 25  2d 6f 66 66 78 25 3a 71  |:q%!4=x%-offx%:q|
0000b7b0  25 21 38 3d 79 25 2d 6f  66 66 79 25 2d 33 32 3a  |%!8=y%-offy%-32:|
0000b7c0  71 25 21 31 32 3d 78 31  25 2d 6f 66 66 78 25 2b  |q%!12=x1%-offx%+|
0000b7d0  28 31 3c 3c 78 65 66 25  29 2b 33 32 3a 71 25 21  |(1<<xef%)+32:q%!|
0000b7e0  31 36 3d 79 31 25 2d 6f  66 66 79 25 2b 28 31 3c  |16=y1%-offy%+(1<|
0000b7f0  3c 79 65 66 25 29 0d 06  c8 1c 20 c8 99 20 75 70  |<yef%).... .. up|
0000b800  64 61 74 65 77 25 2c 2c  71 25 20 b8 20 6d 6f 72  |datew%,,q% . mor|
0000b810  65 25 0d 06 c9 0d 20 c8  95 20 6d 6f 72 65 25 0d  |e%.... .. more%.|
0000b820  06 ca 11 20 20 20 e7 20  65 72 61 73 65 25 20 8c  |...   . erase% .|
0000b830  0d 06 cb 33 20 20 20 20  20 c8 99 20 73 65 74 63  |...3     .. setc|
0000b840  6f 6c 25 2c 62 63 6f 6c  25 3a c8 93 20 c8 90 20  |ol%,bcol%:.. .. |
0000b850  78 25 2c 79 25 2c 78 31  25 2d 78 25 2c 79 31 25  |x%,y%,x1%-x%,y1%|
0000b860  2d 79 25 0d 06 cc 08 20  20 20 cc 0d 06 cd 13 20  |-y%....   ..... |
0000b870  20 20 20 20 c8 8e 20 74  79 70 65 25 20 ca 0d 06  |    .. type% ...|
0000b880  ce 3a 20 20 20 20 20 20  20 c9 20 73 5f 74 65 78  |.:       . s_tex|
0000b890  74 25 3a f2 64 72 61 77  5f 74 65 78 74 28 73 74  |t%:.draw_text(st|
0000b8a0  61 63 6b 25 2c 74 6f 6b  65 6e 25 2c 6f 66 66 78  |ack%,token%,offx|
0000b8b0  25 2c 6f 66 66 79 25 29  0d 06 cf 57 20 20 20 20  |%,offy%)...W    |
0000b8c0  20 20 20 c9 20 73 5f 73  70 72 69 74 65 73 25 2c  |   . s_sprites%,|
0000b8d0  73 5f 64 72 61 77 25 3a  f2 64 72 61 77 5f 70 69  |s_draw%:.draw_pi|
0000b8e0  63 74 75 72 65 28 61 64  72 25 21 34 2c 61 64 72  |cture(adr%!4,adr|
0000b8f0  25 21 38 2c 78 25 2c 79  25 2c 78 31 25 2d 78 25  |%!8,x%,y%,x1%-x%|
0000b900  2c 79 31 25 2d 79 25 2c  66 6c 61 67 73 25 29 0d  |,y1%-y%,flags%).|
0000b910  06 d0 0a 20 20 20 20 20  cb 0d 06 d1 08 20 20 20  |...     .....   |
0000b920  cd 0d 06 d2 1b 20 20 20  c8 99 20 67 65 74 72 25  |.....   .. getr%|
0000b930  2c 2c 71 25 20 b8 20 6d  6f 72 65 25 0d 06 d3 06  |,,q% . more%....|
0000b940  20 ce 0d 06 d4 06 20 e1  0d 06 d5 04 0d 06 d6 20  | ..... ........ |
0000b950  20 dd f2 73 70 65 61 6b  5f 74 65 78 74 28 73 74  | ..speak_text(st|
0000b960  61 63 6b 25 2c 74 6f 6b  65 6e 25 29 0d 06 d7 18  |ack%,token%)....|
0000b970  20 73 70 65 61 6b 5f 74  6f 6b 65 6e 25 3d 74 6f  | speak_token%=to|
0000b980  6b 65 6e 25 0d 06 d8 21  20 73 70 65 61 6b 5f 77  |ken%...! speak_w|
0000b990  6f 72 64 25 3d 30 3a 73  70 65 61 6b 5f 73 6f 75  |ord%=0:speak_sou|
0000b9a0  6e 64 25 3d 30 0d 06 d9  26 20 c8 99 20 67 65 74  |nd%=0...& .. get|
0000b9b0  65 6e 74 72 79 25 2c 73  74 61 63 6b 25 2c 74 6f  |entry%,stack%,to|
0000b9c0  6b 65 6e 25 20 b8 20 61  64 72 25 0d 06 da 27 20  |ken% . adr%...' |
0000b9d0  c8 99 20 67 65 74 65 6e  74 72 79 25 2c 73 5f 74  |.. getentry%,s_t|
0000b9e0  65 78 74 25 2c 61 64 72  25 21 38 20 b8 20 61 64  |ext%,adr%!8 . ad|
0000b9f0  72 25 0d 06 db 13 20 73  70 74 65 78 74 25 3d 61  |r%.... sptext%=a|
0000ba00  64 72 25 2b 34 0d 06 dc  14 20 e7 20 3f 73 70 74  |dr%+4.... . ?spt|
0000ba10  65 78 74 25 3c 3e 30 20  8c 0d 06 dd 17 20 20 20  |ext%<>0 .....   |
0000ba20  73 70 65 61 6b 69 6e 67  5f 74 65 78 74 25 3d b9  |speaking_text%=.|
0000ba30  0d 06 de 1a 20 20 20 74  65 78 74 24 3d 22 22 3a  |....   text$="":|
0000ba40  61 25 3d 73 70 74 65 78  74 25 0d 06 df 29 20 20  |a%=sptext%...)  |
0000ba50  20 f5 3a 74 65 78 74 24  3d 74 65 78 74 24 2b bd  | .:text$=text$+.|
0000ba60  28 3f 61 25 29 3a 61 25  2b 3d 31 3a fd 3f 61 25  |(?a%):a%+=1:.?a%|
0000ba70  3c 34 38 0d 06 e0 32 20  20 20 73 70 65 61 6b 5f  |<48...2   speak_|
0000ba80  73 6f 75 6e 64 25 3d a4  6e 61 6d 65 5f 65 78 73  |sound%=.name_exs|
0000ba90  69 73 74 73 28 73 5f 73  6f 75 6e 64 73 25 2c 74  |ists(s_sounds%,t|
0000baa0  65 78 74 24 29 0d 06 e1  2a 20 20 20 f2 75 70 64  |ext$)...*   .upd|
0000bab0  61 74 65 5f 6f 62 6a 65  63 74 28 73 74 61 63 6b  |ate_object(stack|
0000bac0  25 2c 73 70 65 61 6b 5f  74 6f 6b 65 6e 25 29 0d  |%,speak_token%).|
0000bad0  06 e2 06 20 cd 0d 06 e3  06 20 e1 0d 06 e4 04 0d  |... ..... ......|
0000bae0  06 e5 14 20 dd f2 73 70  65 61 6b 69 6e 67 5f 74  |... ..speaking_t|
0000baf0  65 78 74 0d 06 e6 2c 20  c8 99 20 67 65 74 65 6e  |ext..., .. geten|
0000bb00  74 72 79 25 2c 73 74 61  63 6b 25 2c 73 70 65 61  |try%,stack%,spea|
0000bb10  6b 5f 74 6f 6b 65 6e 25  20 b8 20 61 64 72 25 0d  |k_token% . adr%.|
0000bb20  06 e7 27 20 c8 99 20 67  65 74 65 6e 74 72 79 25  |..' .. getentry%|
0000bb30  2c 73 5f 74 65 78 74 25  2c 61 64 72 25 21 38 20  |,s_text%,adr%!8 |
0000bb40  b8 20 61 64 72 25 0d 06  e8 13 20 73 70 74 65 78  |. adr%.... sptex|
0000bb50  74 25 3d 61 64 72 25 2b  34 0d 06 e9 06 20 f5 0d  |t%=adr%+4.... ..|
0000bb60  06 ea 15 20 20 20 73 70  65 61 6b 5f 77 6f 72 64  |...   speak_word|
0000bb70  25 2b 3d 31 0d 06 eb 1d  20 20 20 63 25 3d 73 70  |%+=1....   c%=sp|
0000bb80  65 61 6b 5f 77 6f 72 64  25 3f 73 70 74 65 78 74  |eak_word%?sptext|
0000bb90  25 0d 06 ec 1a 20 fd 63  25 3d 33 32 20 84 20 63  |%.... .c%=32 . c|
0000bba0  25 3d 31 33 20 84 20 63  25 3d 30 0d 06 ed 16 20  |%=13 . c%=0.... |
0000bbb0  e7 20 63 25 3d 33 32 20  84 20 63 25 3d 31 33 20  |. c%=32 . c%=13 |
0000bbc0  8c 0d 06 ee 08 20 20 20  f5 0d 06 ef 2d 20 20 20  |.....   ....-   |
0000bbd0  20 73 70 65 61 6b 5f 77  6f 72 64 25 2b 3d 31 3a  | speak_word%+=1:|
0000bbe0  63 25 3d 73 70 65 61 6b  5f 77 6f 72 64 25 3f 73  |c%=speak_word%?s|
0000bbf0  70 74 65 78 74 25 0d 06  f0 14 20 20 20 fd 63 25  |ptext%....   .c%|
0000bc00  3e 33 32 20 84 20 63 25  3d 30 0d 06 f1 06 20 cd  |>32 . c%=0.... .|
0000bc10  0d 06 f2 0e 20 e7 20 63  25 3c 3e 30 20 8c 0d 06  |.... . c%<>0 ...|
0000bc20  f3 26 20 20 20 74 65 78  74 24 3d 22 22 3a 61 25  |.&   text$="":a%|
0000bc30  3d 73 70 65 61 6b 5f 77  6f 72 64 25 2b 73 70 74  |=speak_word%+spt|
0000bc40  65 78 74 25 0d 06 f4 29  20 20 20 f5 3a 74 65 78  |ext%...)   .:tex|
0000bc50  74 24 3d 74 65 78 74 24  2b bd 28 3f 61 25 29 3a  |t$=text$+.(?a%):|
0000bc60  61 25 2b 3d 31 3a fd 3f  61 25 3c 34 38 0d 06 f5  |a%+=1:.?a%<48...|
0000bc70  32 20 20 20 73 70 65 61  6b 5f 73 6f 75 6e 64 25  |2   speak_sound%|
0000bc80  3d a4 6e 61 6d 65 5f 65  78 73 69 73 74 73 28 73  |=.name_exsists(s|
0000bc90  5f 73 6f 75 6e 64 73 25  2c 74 65 78 74 24 29 0d  |_sounds%,text$).|
0000bca0  06 f6 06 20 cd 0d 06 f7  1c 20 e7 20 63 25 3d 30  |... ..... . c%=0|
0000bcb0  20 73 70 65 61 6b 69 6e  67 5f 74 65 78 74 25 3d  | speaking_text%=|
0000bcc0  a3 0d 06 f8 28 20 f2 75  70 64 61 74 65 5f 6f 62  |....( .update_ob|
0000bcd0  6a 65 63 74 28 73 74 61  63 6b 25 2c 73 70 65 61  |ject(stack%,spea|
0000bce0  6b 5f 74 6f 6b 65 6e 25  29 0d 06 f9 06 20 e1 0d  |k_token%).... ..|
0000bcf0  06 fa 04 0d 06 fb 36 20  dd f2 68 69 67 68 6c 69  |......6 ..highli|
0000bd00  67 68 74 5f 74 65 78 74  28 73 74 61 63 6b 25 2c  |ght_text(stack%,|
0000bd10  74 6f 6b 65 6e 25 2c 6f  66 66 78 25 2c 6f 66 66  |token%,offx%,off|
0000bd20  79 25 2c 77 6f 72 64 25  29 0d 06 fc 26 20 c8 99  |y%,word%)...& ..|
0000bd30  20 67 65 74 65 6e 74 72  79 25 2c 73 74 61 63 6b  | getentry%,stack|
0000bd40  25 2c 74 6f 6b 65 6e 25  20 b8 20 61 64 72 25 0d  |%,token% . adr%.|
0000bd50  06 fd 17 20 78 25 3d 28  61 64 72 25 21 31 32 29  |... x%=(adr%!12)|
0000bd60  2b 6f 66 66 78 25 0d 06  fe 17 20 79 25 3d 28 61  |+offx%.... y%=(a|
0000bd70  64 72 25 21 31 36 29 2b  6f 66 66 79 25 0d 06 ff  |dr%!16)+offy%...|
0000bd80  22 20 78 31 25 3d 28 61  64 72 25 21 32 30 29 2d  |" x1%=(adr%!20)-|
0000bd90  28 31 3c 3c 78 65 66 25  29 2b 6f 66 66 78 25 0d  |(1<<xef%)+offx%.|
0000bda0  07 00 22 20 79 31 25 3d  28 61 64 72 25 21 32 34  |.." y1%=(adr%!24|
0000bdb0  29 2d 28 31 3c 3c 79 65  66 25 29 2b 6f 66 66 79  |)-(1<<yef%)+offy|
0000bdc0  25 0d 07 01 2e 20 66 6c  61 67 73 25 3d 61 64 72  |%.... flags%=adr|
0000bdd0  25 21 33 36 3a 66 6f 6e  74 25 3d 61 64 72 25 21  |%!36:font%=adr%!|
0000bde0  34 30 3a 62 5f 73 25 3d  61 64 72 25 21 33 32 0d  |40:b_s%=adr%!32.|
0000bdf0  07 02 38 20 66 63 6f 6c  25 3d 61 64 72 25 21 35  |..8 fcol%=adr%!5|
0000be00  32 3a e7 20 66 63 6f 6c  25 20 80 20 26 46 46 20  |2:. fcol% . &FF |
0000be10  66 63 6f 6c 25 3d 64 65  66 61 75 6c 74 5f 70 61  |fcol%=default_pa|
0000be20  67 65 5f 63 6f 6c 25 0d  07 03 12 20 62 63 6f 6c  |ge_col%.... bcol|
0000be30  25 3d 61 64 72 25 21 35  36 0d 07 04 3b 20 e7 20  |%=adr%!56...; . |
0000be40  66 6c 61 67 73 25 80 31  20 66 63 6f 6c 25 3d 66  |flags%.1 fcol%=f|
0000be50  63 6f 6c 25 82 26 46 46  46 46 46 46 30 30 3a 62  |col%.&FFFFFF00:b|
0000be60  63 6f 6c 25 3d 62 63 6f  6c 25 82 26 46 46 46 46  |col%=bcol%.&FFFF|
0000be70  46 46 30 30 0d 07 05 31  20 f2 64 72 61 77 5f 62  |FF00...1 .draw_b|
0000be80  6f 72 64 65 72 28 62 5f  73 25 2c 66 63 6f 6c 25  |order(b_s%,fcol%|
0000be90  2c 62 63 6f 6c 25 2c 78  25 2c 79 25 2c 78 31 25  |,bcol%,x%,y%,x1%|
0000bea0  2c 79 31 25 29 0d 07 06  12 20 78 25 2b 3d 28 31  |,y1%).... x%+=(1|
0000beb0  3c 3c 78 65 66 25 29 0d  07 07 13 20 78 31 25 2d  |<<xef%).... x1%-|
0000bec0  3d 28 31 3c 3c 78 65 66  25 29 0d 07 08 12 20 79  |=(1<<xef%).... y|
0000bed0  25 2b 3d 28 31 3c 3c 79  65 66 25 29 0d 07 09 13  |%+=(1<<yef%)....|
0000bee0  20 79 31 25 2d 3d 28 31  3c 3c 79 65 66 25 29 0d  | y1%-=(1<<yef%).|
0000bef0  07 0a 08 20 ea 20 85 0d  07 0b 16 20 ee 20 85 20  |... . ..... . . |
0000bf00  ea 20 f7 20 85 3a 66 6f  6e 74 25 3d 30 0d 07 0c  |. . .:font%=0...|
0000bf10  0e 20 e7 20 66 6f 6e 74  25 20 8c 0d 07 0d 27 20  |. . font% ....' |
0000bf20  20 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |  .. getentry%,s|
0000bf30  5f 66 6f 6e 74 73 25 2c  66 6f 6e 74 25 20 b8 20  |_fonts%,font% . |
0000bf40  74 25 0d 07 0e 31 20 20  20 c8 99 20 66 69 6e 64  |t%...1   .. find|
0000bf50  66 6f 6e 74 25 2c 2c 74  25 2b 34 2c 61 64 72 25  |font%,,t%+4,adr%|
0000bf60  21 34 34 2c 61 64 72 25  21 34 38 20 b8 20 66 6f  |!44,adr%!48 . fo|
0000bf70  6e 74 25 0d 07 0f 06 20  cd 0d 07 10 0e 20 e7 20  |nt%.... ..... . |
0000bf80  66 6f 6e 74 25 20 8c 0d  07 11 20 20 20 20 e7 20  |font% ....    . |
0000bf90  62 63 6f 6c 25 20 80 20  26 46 46 20 62 63 6f 6c  |bcol% . &FF bcol|
0000bfa0  25 3d 66 63 6f 6c 25 0d  07 12 2e 20 20 20 c8 99  |%=fcol%....   ..|
0000bfb0  20 66 6f 6e 74 69 6e 66  6f 25 2c 66 6f 6e 74 25  | fontinfo%,font%|
0000bfc0  20 b8 20 2c 63 78 25 2c  63 79 25 2c 63 78 31 25  | . ,cx%,cy%,cx1%|
0000bfd0  2c 63 79 31 25 0d 07 13  06 20 cc 0d 07 14 3e 20  |,cy1%.... ....> |
0000bfe0  20 20 63 78 25 3d 2d 28  31 3c 3c 78 65 66 25 29  |  cx%=-(1<<xef%)|
0000bff0  3a 63 79 25 3d 2d 28 31  3c 3c 79 65 66 25 29 3a  |:cy%=-(1<<yef%):|
0000c000  63 78 31 25 3d 38 3c 3c  78 65 66 25 3a 63 79 31  |cx1%=8<<xef%:cy1|
0000c010  25 3d 38 3c 3c 79 65 66  25 0d 07 15 06 20 cd 0d  |%=8<<yef%.... ..|
0000c020  07 16 16 20 74 65 78 74  5f 68 65 69 67 68 74 25  |... text_height%|
0000c030  3d 63 79 31 25 0d 07 17  28 20 c8 99 20 67 65 74  |=cy1%...( .. get|
0000c040  65 6e 74 72 79 25 2c 73  5f 74 65 78 74 25 2c 61  |entry%,s_text%,a|
0000c050  64 72 25 21 38 20 b8 20  74 65 78 74 25 0d 07 18  |dr%!8 . text%...|
0000c060  0d 20 74 65 78 74 25 2b  3d 34 0d 07 19 13 20 74  |. text%+=4.... t|
0000c070  65 78 74 5f 6f 66 66 73  65 74 25 3d 30 0d 07 1a  |ext_offset%=0...|
0000c080  2c 20 70 78 25 3d 78 25  2b 6d 61 72 67 69 6e 25  |, px%=x%+margin%|
0000c090  3a 70 79 25 3d 79 31 25  2d 74 65 78 74 5f 68 65  |:py%=y1%-text_he|
0000c0a0  69 67 68 74 25 2b 63 79  25 0d 07 1b 24 20 63 65  |ight%+cy%...$ ce|
0000c0b0  6e 74 72 65 25 3d a3 3a  72 69 67 68 74 25 3d a3  |ntre%=.:right%=.|
0000c0c0  3a 75 6e 64 65 72 6c 69  6e 65 25 3d a3 0d 07 1c  |:underline%=....|
0000c0d0  1b 20 e7 20 66 6c 61 67  73 25 20 80 20 38 20 63  |. . flags% . 8 c|
0000c0e0  65 6e 74 72 65 25 3d b9  0d 07 1d 1b 20 e7 20 66  |entre%=..... . f|
0000c0f0  6c 61 67 73 25 20 80 20  31 36 20 72 69 67 68 74  |lags% . 16 right|
0000c100  25 3d b9 0d 07 1e 1f 20  e7 20 66 6c 61 67 73 25  |%=..... . flags%|
0000c110  20 80 20 33 32 20 75 6e  64 65 72 6c 69 6e 65 25  | . 32 underline%|
0000c120  3d b9 0d 07 1f 06 20 f5  0d 07 20 1e 20 20 20 c8  |=..... ... .   .|
0000c130  8e 20 74 65 78 74 5f 6f  66 66 73 65 74 25 3f 74  |. text_offset%?t|
0000c140  65 78 74 25 20 ca 0d 07  21 0d 20 20 20 20 20 c9  |ext% ...!.     .|
0000c150  20 30 3a 0d 07 22 2f 20  20 20 20 20 c9 20 31 33  | 0:.."/     . 13|
0000c160  3a 70 79 25 2d 3d 74 65  78 74 5f 68 65 69 67 68  |:py%-=text_heigh|
0000c170  74 25 3a 74 65 78 74 5f  6f 66 66 73 65 74 25 2b  |t%:text_offset%+|
0000c180  3d 31 0d 07 23 0a 20 20  20 20 20 7f 0d 07 24 2d  |=1..#.     ...$-|
0000c190  20 20 20 20 20 20 20 74  65 78 74 24 3d a4 73 74  |       text$=.st|
0000c1a0  72 69 6e 67 30 28 74 65  78 74 25 2b 74 65 78 74  |ring0(text%+text|
0000c1b0  5f 6f 66 66 73 65 74 25  29 0d 07 25 1f 20 20 20  |_offset%)..%.   |
0000c1c0  20 20 20 20 74 65 78 74  5f 6f 66 66 73 65 74 25  |    text_offset%|
0000c1d0  2b 3d a9 74 65 78 74 24  0d 07 26 19 20 20 20 20  |+=.text$..&.    |
0000c1e0  20 20 20 70 78 25 3d 78  25 2b 6d 61 72 67 69 6e  |   px%=x%+margin|
0000c1f0  25 0d 07 27 14 20 20 20  20 20 20 20 e7 20 66 6f  |%..'.       . fo|
0000c200  6e 74 25 20 8c 0d 07 28  40 20 20 20 20 20 20 20  |nt% ...(@       |
0000c210  20 20 c8 99 20 73 74 72  69 6e 67 77 69 64 74 68  |  .. stringwidth|
0000c220  25 2c 2c 74 65 78 74 24  2c 31 3c 3c 33 30 2c 31  |%,,text$,1<<30,1|
0000c230  3c 3c 33 30 2c 2d 31 2c  a9 74 65 78 74 24 20 b8  |<<30,-1,.text$ .|
0000c240  20 2c 2c 77 25 0d 07 29  26 20 20 20 20 20 20 20  | ,,w%..)&       |
0000c250  20 20 c8 99 20 63 6f 6e  76 65 72 74 74 6f 6f 73  |  .. converttoos|
0000c260  25 2c 2c 77 25 20 b8 20  2c 77 25 0d 07 2a 2d 20  |%,,w% . ,w%..*- |
0000c270  20 20 20 20 20 20 20 20  e7 20 63 65 6e 74 72 65  |        . centre|
0000c280  25 20 70 78 25 3d 78 25  2b 28 78 31 25 2d 78 25  |% px%=x%+(x1%-x%|
0000c290  29 81 32 2d 77 25 81 32  0d 07 2b 28 20 20 20 20  |).2-w%.2..+(    |
0000c2a0  20 20 20 20 20 e7 20 72  69 67 68 74 25 20 70 78  |     . right% px|
0000c2b0  25 3d 78 31 25 2d 77 25  2d 6d 61 72 67 69 6e 25  |%=x1%-w%-margin%|
0000c2c0  0d 07 2c 37 20 20 20 20  20 20 20 20 20 e7 20 75  |..,7         . u|
0000c2d0  6e 64 65 72 6c 69 6e 65  25 20 75 6c 24 3d bd 28  |nderline% ul$=.(|
0000c2e0  32 35 29 2b bd 28 31 29  2b bd 28 31 36 29 20 8b  |25)+.(1)+.(16) .|
0000c2f0  20 75 6c 24 3d 22 22 0d  07 2d 41 20 20 20 20 20  | ul$=""..-A     |
0000c300  20 20 20 20 c8 99 20 22  43 6f 6c 6f 75 72 54 72  |    .. "ColourTr|
0000c310  61 6e 73 5f 53 65 74 46  6f 6e 74 43 6f 6c 6f 75  |ans_SetFontColou|
0000c320  72 73 22 2c 66 6f 6e 74  25 2c 62 63 6f 6c 25 2c  |rs",font%,bcol%,|
0000c330  66 63 6f 6c 25 2c 31 34  0d 07 2e 32 20 20 20 20  |fcol%,14...2    |
0000c340  20 20 20 20 20 c8 99 20  70 61 69 6e 74 25 2c 2c  |     .. paint%,,|
0000c350  75 6c 24 2b 74 65 78 74  24 2c 31 3c 3c 34 2c 70  |ul$+text$,1<<4,p|
0000c360  78 25 2c 70 79 25 2d 63  79 25 0d 07 2f 42 20 20  |x%,py%-cy%../B  |
0000c370  20 20 20 20 20 20 20 e7  20 74 65 78 74 5f 6f 66  |       . text_of|
0000c380  66 73 65 74 25 3e 77 6f  72 64 25 20 80 20 28 74  |fset%>word% . (t|
0000c390  65 78 74 5f 6f 66 66 73  65 74 25 2d a9 74 65 78  |ext_offset%-.tex|
0000c3a0  74 24 29 3c 3d 77 6f 72  64 25 20 8c 0d 07 30 2f  |t$)<=word% ...0/|
0000c3b0  20 20 20 20 20 20 20 20  20 20 20 69 25 3d 77 6f  |           i%=wo|
0000c3c0  72 64 25 2d 28 74 65 78  74 5f 6f 66 66 73 65 74  |rd%-(text_offset|
0000c3d0  25 2d a9 28 74 65 78 74  24 29 29 0d 07 31 1c 20  |%-.(text$))..1. |
0000c3e0  20 20 20 20 20 20 20 20  20 20 6c 24 3d c0 74 65  |          l$=.te|
0000c3f0  78 74 24 2c 69 25 29 0d  07 32 3c 20 20 20 20 20  |xt$,i%)..2<     |
0000c400  20 20 20 20 20 20 c8 99  20 73 74 72 69 6e 67 77  |      .. stringw|
0000c410  69 64 74 68 25 2c 2c 6c  24 2c 31 3c 3c 33 30 2c  |idth%,,l$,1<<30,|
0000c420  31 3c 3c 33 30 2c 2d 31  2c a9 6c 24 20 b8 20 2c  |1<<30,-1,.l$ . ,|
0000c430  2c 77 25 0d 07 33 28 20  20 20 20 20 20 20 20 20  |,w%..3(         |
0000c440  20 20 c8 99 20 63 6f 6e  76 65 72 74 74 6f 6f 73  |  .. converttoos|
0000c450  25 2c 2c 77 25 20 b8 20  2c 77 25 0d 07 34 16 20  |%,,w% . ,w%..4. |
0000c460  20 20 20 20 20 20 20 20  20 20 70 78 25 2b 3d 77  |          px%+=w|
0000c470  25 0d 07 35 24 20 20 20  20 20 20 20 20 20 20 20  |%..5$           |
0000c480  72 24 3d c2 74 65 78 74  24 2c a9 74 65 78 74 24  |r$=.text$,.text$|
0000c490  2d a9 6c 24 29 0d 07 36  2a 20 20 20 20 20 20 20  |-.l$)..6*       |
0000c4a0  20 20 20 20 e7 20 a7 72  24 2c 22 20 22 29 20 72  |    . .r$," ") r|
0000c4b0  24 3d c0 72 24 2c a7 72  24 2c 22 20 22 29 29 0d  |$=.r$,.r$," ")).|
0000c4c0  07 37 57 20 20 20 20 20  20 20 20 20 20 20 c8 99  |.7W           ..|
0000c4d0  20 22 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 53 65  | "ColourTrans_Se|
0000c4e0  74 46 6f 6e 74 43 6f 6c  6f 75 72 73 22 2c 66 6f  |tFontColours",fo|
0000c4f0  6e 74 25 2c 62 63 6f 6c  25 82 26 46 46 46 46 46  |nt%,bcol%.&FFFFF|
0000c500  46 30 30 2c 66 63 6f 6c  25 82 26 46 46 46 46 46  |F00,fcol%.&FFFFF|
0000c510  46 30 30 2c 31 34 0d 07  38 31 20 20 20 20 20 20  |F00,14..81      |
0000c520  20 20 20 20 20 c8 99 20  70 61 69 6e 74 25 2c 2c  |     .. paint%,,|
0000c530  75 6c 24 2b 72 24 2c 31  3c 3c 34 2c 70 78 25 2c  |ul$+r$,1<<4,px%,|
0000c540  70 79 25 2d 63 79 25 0d  07 39 0e 20 20 20 20 20  |py%-cy%..9.     |
0000c550  20 20 20 20 cd 0d 07 3a  0c 20 20 20 20 20 20 20  |    ...:.       |
0000c560  cc 0d 07 3b 1b 20 20 20  20 20 20 20 20 20 77 25  |...;.         w%|
0000c570  3d a9 74 65 78 74 24 2a  63 78 31 25 0d 07 3c 2d  |=.text$*cx1%..<-|
0000c580  20 20 20 20 20 20 20 20  20 e7 20 63 65 6e 74 72  |         . centr|
0000c590  65 25 20 70 78 25 3d 78  25 2b 28 78 31 25 2d 78  |e% px%=x%+(x1%-x|
0000c5a0  25 29 81 32 2d 77 25 81  32 0d 07 3d 28 20 20 20  |%).2-w%.2..=(   |
0000c5b0  20 20 20 20 20 20 e7 20  72 69 67 68 74 25 20 70  |      . right% p|
0000c5c0  78 25 3d 78 31 25 2d 77  25 2d 6d 61 72 67 69 6e  |x%=x1%-w%-margin|
0000c5d0  25 0d 07 3e 33 20 20 20  20 20 20 20 20 20 c8 99  |%..>3         ..|
0000c5e0  20 73 65 74 63 6f 6c 25  2c 66 63 6f 6c 25 3a ec  | setcol%,fcol%:.|
0000c5f0  20 70 78 25 2c 70 79 25  2b 63 79 31 25 3a f1 74  | px%,py%+cy1%:.t|
0000c600  65 78 74 24 0d 07 3f 38  20 20 20 20 20 20 20 20  |ext$..?8        |
0000c610  20 e7 20 75 6e 64 65 72  6c 69 6e 65 25 20 ec 20  | . underline% . |
0000c620  70 78 25 2c 70 79 25 2d  63 79 25 3a f0 31 2c 63  |px%,py%-cy%:.1,c|
0000c630  78 31 25 2a a9 74 65 78  74 24 2c 30 0d 07 40 42  |x1%*.text$,0..@B|
0000c640  20 20 20 20 20 20 20 20  20 e7 20 74 65 78 74 5f  |         . text_|
0000c650  6f 66 66 73 65 74 25 3e  77 6f 72 64 25 20 80 20  |offset%>word% . |
0000c660  28 74 65 78 74 5f 6f 66  66 73 65 74 25 2d a9 74  |(text_offset%-.t|
0000c670  65 78 74 24 29 3c 3d 77  6f 72 64 25 20 8c 0d 07  |ext$)<=word% ...|
0000c680  41 2f 20 20 20 20 20 20  20 20 20 20 20 69 25 3d  |A/           i%=|
0000c690  77 6f 72 64 25 2d 28 74  65 78 74 5f 6f 66 66 73  |word%-(text_offs|
0000c6a0  65 74 25 2d a9 28 74 65  78 74 24 29 29 0d 07 42  |et%-.(text$))..B|
0000c6b0  1c 20 20 20 20 20 20 20  20 20 20 20 6c 24 3d c0  |.           l$=.|
0000c6c0  74 65 78 74 24 2c 69 25  29 0d 07 43 22 20 20 20  |text$,i%)..C"   |
0000c6d0  20 20 20 20 20 20 20 20  77 25 3d a9 6c 24 2a 63  |        w%=.l$*c|
0000c6e0  78 31 25 3a 70 78 25 2b  3d 77 25 0d 07 44 24 20  |x1%:px%+=w%..D$ |
0000c6f0  20 20 20 20 20 20 20 20  20 20 72 24 3d c2 74 65  |          r$=.te|
0000c700  78 74 24 2c a9 74 65 78  74 24 2d a9 6c 24 29 0d  |xt$,.text$-.l$).|
0000c710  07 45 2a 20 20 20 20 20  20 20 20 20 20 20 e7 20  |.E*           . |
0000c720  a7 72 24 2c 22 20 22 29  20 72 24 3d c0 72 24 2c  |.r$," ") r$=.r$,|
0000c730  a7 72 24 2c 22 20 22 29  29 0d 07 46 3c 20 20 20  |.r$," "))..F<   |
0000c740  20 20 20 20 20 20 20 20  c8 99 20 73 65 74 63 6f  |        .. setco|
0000c750  6c 25 2c 66 63 6f 6c 25  82 26 46 46 46 46 30 30  |l%,fcol%.&FFFF00|
0000c760  30 30 3a ec 20 70 78 25  2c 70 79 25 2b 63 79 31  |00:. px%,py%+cy1|
0000c770  25 3a f1 72 24 0d 07 47  37 20 20 20 20 20 20 20  |%:.r$..G7       |
0000c780  20 20 20 20 e7 20 75 6e  64 65 72 6c 69 6e 65 25  |    . underline%|
0000c790  20 ec 20 70 78 25 2c 70  79 25 2d 63 79 25 3a f0  | . px%,py%-cy%:.|
0000c7a0  31 2c 63 78 31 25 2a a9  72 24 2c 30 0d 07 48 0e  |1,cx1%*.r$,0..H.|
0000c7b0  20 20 20 20 20 20 20 20  20 cd 0d 07 49 0c 20 20  |         ...I.  |
0000c7c0  20 20 20 20 20 cd 0d 07  4a 08 20 20 20 cb 0d 07  |     ...J.   ...|
0000c7d0  4b 1b 20 fd 20 74 65 78  74 5f 6f 66 66 73 65 74  |K. . text_offset|
0000c7e0  25 3f 74 65 78 74 25 3d  30 0d 07 4c 1f 20 e7 20  |%?text%=0..L. . |
0000c7f0  66 6f 6e 74 25 20 c8 99  20 6c 6f 73 65 66 6f 6e  |font% .. losefon|
0000c800  74 25 2c 66 6f 6e 74 25  0d 07 4d 06 20 e1 0d 07  |t%,font%..M. ...|
0000c810  4e 04 0d 07 4f 21 20 dd  f2 62 65 67 69 6e 5f 73  |N...O! ..begin_s|
0000c820  61 76 65 28 6f 62 6a 65  63 74 25 2c 73 6f 75 6e  |ave(object%,soun|
0000c830  64 25 29 0d 07 50 1d 20  21 71 25 3d 6d 61 69 6e  |d%)..P. !q%=main|
0000c840  5f 77 25 3a c8 99 20 67  65 74 77 25 2c 2c 71 25  |_w%:.. getw%,,q%|
0000c850  0d 07 51 2b 20 6f 66 66  78 25 3d 28 71 25 21 34  |..Q+ offx%=(q%!4|
0000c860  2d 71 25 21 32 30 29 3a  6f 66 66 79 25 3d 28 71  |-q%!20):offy%=(q|
0000c870  25 21 31 36 2d 71 25 21  32 34 29 0d 07 52 27 20  |%!16-q%!24)..R' |
0000c880  c8 99 20 67 65 74 65 6e  74 72 79 25 2c 73 74 61  |.. getentry%,sta|
0000c890  63 6b 25 2c 6f 62 6a 65  63 74 25 20 b8 20 61 64  |ck%,object% . ad|
0000c8a0  72 25 0d 07 53 36 20 69  78 25 3d 61 64 72 25 21  |r%..S6 ix%=adr%!|
0000c8b0  31 32 3a 69 79 25 3d 61  64 72 25 21 31 36 3a 69  |12:iy%=adr%!16:i|
0000c8c0  78 31 25 3d 61 64 72 25  21 32 30 3a 69 79 31 25  |x1%=adr%!20:iy1%|
0000c8d0  3d 61 64 72 25 21 32 34  0d 07 54 0f 20 e7 20 73  |=adr%!24..T. . s|
0000c8e0  6f 75 6e 64 25 20 8c 0d  07 55 12 20 20 20 e7 20  |ound% ...U.   . |
0000c8f0  61 64 72 25 21 32 38 20  8c 0d 07 56 2e 20 20 20  |adr%!28 ...V.   |
0000c900  20 20 c8 99 20 67 65 74  65 6e 74 72 79 25 2c 73  |  .. getentry%,s|
0000c910  5f 63 6c 69 63 6b 73 25  2c 61 64 72 25 21 32 38  |_clicks%,adr%!28|
0000c920  20 b8 20 61 64 72 25 0d  07 57 14 20 20 20 20 20  | . adr%..W.     |
0000c930  e7 20 61 64 72 25 21 32  30 20 8c 0d 07 58 2f 20  |. adr%!20 ...X/ |
0000c940  20 20 20 20 20 20 c8 99  20 67 65 74 65 6e 74 72  |      .. getentr|
0000c950  79 25 2c 73 5f 6d 6f 75  73 65 25 2c 61 64 72 25  |y%,s_mouse%,adr%|
0000c960  21 32 30 20 b8 20 61 64  72 25 0d 07 59 17 20 20  |!20 . adr%..Y.  |
0000c970  20 20 20 20 20 e7 20 61  64 72 25 21 38 3d 35 20  |     . adr%!8=5 |
0000c980  8c 0d 07 5a 20 20 20 20  20 20 20 20 20 20 64 72  |...Z          dr|
0000c990  61 67 5f 73 6f 75 6e 64  25 3d 61 64 72 25 21 31  |ag_sound%=adr%!1|
0000c9a0  32 0d 07 5b 45 20 20 20  20 20 20 20 20 20 f2 73  |2..[E         .s|
0000c9b0  74 61 72 74 5f 64 72 61  67 28 33 2c 69 78 25 2b  |tart_drag(3,ix%+|
0000c9c0  6f 66 66 78 25 2c 69 79  25 2b 6f 66 66 79 25 2c  |offx%,iy%+offy%,|
0000c9d0  69 78 31 25 2b 6f 66 66  78 25 2c 69 79 31 25 2b  |ix1%+offx%,iy1%+|
0000c9e0  6f 66 66 79 25 29 0d 07  5c 0c 20 20 20 20 20 20  |offy%)..\.      |
0000c9f0  20 cd 0d 07 5d 0a 20 20  20 20 20 cd 0d 07 5e 08  | ...].     ...^.|
0000ca00  20 20 20 cd 0d 07 5f 06  20 cc 0d 07 60 19 20 20  |   ..._. ...`.  |
0000ca10  20 e7 20 61 64 72 25 21  34 3d 73 5f 74 65 78 74  | . adr%!4=s_text|
0000ca20  25 20 8c 0d 07 61 31 20  20 20 20 20 64 72 61 67  |% ...a1     drag|
0000ca30  5f 70 74 79 70 65 25 3d  73 5f 74 65 78 74 25 3a  |_ptype%=s_text%:|
0000ca40  64 72 61 67 5f 70 69 63  74 75 72 65 25 3d 61 64  |drag_picture%=ad|
0000ca50  72 25 21 38 0d 07 62 41  20 20 20 20 20 f2 73 74  |r%!8..bA     .st|
0000ca60  61 72 74 5f 64 72 61 67  28 32 2c 69 78 25 2b 6f  |art_drag(2,ix%+o|
0000ca70  66 66 78 25 2c 69 79 25  2b 6f 66 66 79 25 2c 69  |ffx%,iy%+offy%,i|
0000ca80  78 31 25 2b 6f 66 66 78  25 2c 69 79 31 25 2b 6f  |x1%+offx%,iy1%+o|
0000ca90  66 66 79 25 29 0d 07 63  08 20 20 20 cc 0d 07 64  |ffy%)..c.   ...d|
0000caa0  31 20 20 20 20 20 64 72  61 67 5f 70 74 79 70 65  |1     drag_ptype|
0000cab0  25 3d 61 64 72 25 21 34  3a 64 72 61 67 5f 70 69  |%=adr%!4:drag_pi|
0000cac0  63 74 75 72 65 25 3d 6f  62 6a 65 63 74 25 0d 07  |cture%=object%..|
0000cad0  65 41 20 20 20 20 20 f2  73 74 61 72 74 5f 64 72  |eA     .start_dr|
0000cae0  61 67 28 34 2c 69 78 25  2b 6f 66 66 78 25 2c 69  |ag(4,ix%+offx%,i|
0000caf0  79 25 2b 6f 66 66 79 25  2c 69 78 31 25 2b 6f 66  |y%+offy%,ix1%+of|
0000cb00  66 78 25 2c 69 79 31 25  2b 6f 66 66 79 25 29 0d  |fx%,iy1%+offy%).|
0000cb10  07 66 08 20 20 20 cd 0d  07 67 06 20 cd 0d 07 68  |.f.   ...g. ...h|
0000cb20  06 20 e1 0d 07 69 04 0d  07 6a 14 20 dd f2 74 72  |. ...i...j. ..tr|
0000cb30  79 5f 75 73 65 72 5f 64  72 61 67 0d 07 6b 11 20  |y_user_drag..k. |
0000cb40  f2 67 65 74 5f 70 6f 69  6e 74 65 72 0d 07 6c 18  |.get_pointer..l.|
0000cb50  20 e7 20 68 61 6e 64 6c  65 25 3d 6d 61 69 6e 5f  | . handle%=main_|
0000cb60  77 25 20 e1 0d 07 6d 1e  20 71 25 21 32 30 3d 68  |w% ...m. q%!20=h|
0000cb70  61 6e 64 6c 65 25 3a 71  25 21 32 34 3d 69 63 6f  |andle%:q%!24=ico|
0000cb80  6e 25 0d 07 6e 20 20 71  25 21 32 38 3d 6d 6f 75  |n%..n  q%!28=mou|
0000cb90  73 65 78 25 3a 71 25 21  33 32 3d 6d 6f 75 73 65  |sex%:q%!32=mouse|
0000cba0  79 25 0d 07 6f 1a 20 71  25 21 33 36 3d 73 70 72  |y%..o. q%!36=spr|
0000cbb0  69 74 65 5f 73 69 7a 65  25 2d 32 34 0d 07 70 0b  |ite_size%-24..p.|
0000cbc0  20 21 71 25 3d 35 36 0d  07 71 14 20 c8 8e 20 64  | !q%=56..q. .. d|
0000cbd0  72 61 67 5f 74 79 70 65  25 20 ca 0d 07 72 19 20  |rag_type% ...r. |
0000cbe0  20 20 20 c9 20 32 3a f4  20 73 61 76 69 6e 67 20  |   . 2:. saving |
0000cbf0  74 65 78 74 0d 07 73 16  20 20 20 20 20 20 73 61  |text..s.      sa|
0000cc00  76 65 24 3d 22 74 65 78  74 22 0d 07 74 19 20 20  |ve$="text"..t.  |
0000cc10  20 20 20 20 66 69 6c 65  5f 74 79 70 65 25 3d 26  |    file_type%=&|
0000cc20  46 46 46 0d 07 75 1a 20  20 20 20 c9 20 33 3a f4  |FFF..u.    . 3:.|
0000cc30  20 73 61 76 69 6e 67 20  73 6f 75 6e 64 0d 07 76  | saving sound..v|
0000cc40  33 20 20 20 20 20 20 c8  99 20 67 65 74 65 6e 74  |3      .. getent|
0000cc50  72 79 25 2c 73 5f 73 6f  75 6e 64 73 25 2c 64 72  |ry%,s_sounds%,dr|
0000cc60  61 67 5f 73 6f 75 6e 64  25 20 b8 20 61 64 72 25  |ag_sound% . adr%|
0000cc70  0d 07 77 20 20 20 20 20  20 20 73 61 76 65 24 3d  |..w       save$=|
0000cc80  a4 73 74 72 69 6e 67 30  28 61 64 72 25 2b 34 29  |.string0(adr%+4)|
0000cc90  0d 07 78 19 20 20 20 20  20 20 66 69 6c 65 5f 74  |..x.      file_t|
0000cca0  79 70 65 25 3d 26 44 33  43 0d 07 79 1c 20 20 20  |ype%=&D3C..y.   |
0000ccb0  20 c9 20 34 3a f4 20 73  61 76 69 6e 67 20 70 69  | . 4:. saving pi|
0000ccc0  63 74 75 72 65 0d 07 7a  37 20 20 20 20 20 20 c8  |cture..z7      .|
0000ccd0  99 20 67 65 74 65 6e 74  72 79 25 2c 64 72 61 67  |. getentry%,drag|
0000cce0  5f 70 74 79 70 65 25 2c  64 72 61 67 5f 70 69 63  |_ptype%,drag_pic|
0000ccf0  74 75 72 65 25 20 b8 20  61 64 72 25 0d 07 7b 20  |ture% . adr%..{ |
0000cd00  20 20 20 20 20 20 73 61  76 65 24 3d a4 73 74 72  |      save$=.str|
0000cd10  69 6e 67 30 28 61 64 72  25 2b 34 29 0d 07 7c 44  |ing0(adr%+4)..|D|
0000cd20  20 20 20 20 20 20 e7 20  64 72 61 67 5f 70 74 79  |      . drag_pty|
0000cd30  70 65 25 3d 73 5f 73 70  72 69 74 65 73 25 20 66  |pe%=s_sprites% f|
0000cd40  69 6c 65 5f 74 79 70 65  25 3d 26 46 46 39 20 8b  |ile_type%=&FF9 .|
0000cd50  20 66 69 6c 65 5f 74 79  70 65 25 3d 26 41 46 46  | file_type%=&AFF|
0000cd60  0d 07 7d 08 20 20 20 cb  0d 07 7e 17 20 20 20 71  |..}.   ...~.   q|
0000cd70  25 21 34 30 3d 66 69 6c  65 5f 74 79 70 65 25 0d  |%!40=file_type%.|
0000cd80  07 7f 1c 20 20 20 f2 73  74 72 69 6e 67 30 28 71  |...   .string0(q|
0000cd90  25 2b 34 34 2c 73 61 76  65 24 29 0d 07 80 19 20  |%+44,save$).... |
0000cda0  20 20 71 25 21 31 32 3d  71 25 21 38 3a 71 25 21  |  q%!12=q%!8:q%!|
0000cdb0  31 36 3d 31 0d 07 81 3a  20 20 20 c8 99 20 73 65  |16=1...:   .. se|
0000cdc0  6e 64 6d 65 73 73 61 67  65 25 2c 31 37 2c 71 25  |ndmessage%,17,q%|
0000cdd0  2c 68 61 6e 64 6c 65 25  2c 69 63 6f 6e 25 3a f4  |,handle%,icon%:.|
0000cde0  20 73 65 6e 64 20 64 61  74 61 73 61 76 65 0d 07  | send datasave..|
0000cdf0  82 12 20 20 20 6d 79 72  65 66 25 3d 71 25 21 38  |..   myref%=q%!8|
0000ce00  0d 07 83 0d 20 20 20 44  4d 54 25 3d 30 0d 07 84  |....   DMT%=0...|
0000ce10  11 20 20 20 44 4d 54 5f  70 74 72 25 3d 30 0d 07  |.   DMT_ptr%=0..|
0000ce20  85 06 20 cb 0d 07 86 06  20 e1 0d ff              |.. ..... ...|
0000ce2c