Home » Archimedes archive » Archimedes World » AW-1992-08.adf » AWaug92 » !AWaug92/Goodies/Wimped/!WimpEd/!RunImage

!AWaug92/Goodies/Wimped/!WimpEd/!RunImage

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

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

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1992-08.adf » AWaug92
Filename: !AWaug92/Goodies/Wimped/!WimpEd/!RunImage
Read OK:
File size: 10991 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM------------------------------
   20REM       MAIN PROGRAM
   30REM------------------------------
   40REM
   50
   60 block_memory%=30*1024 : icon_memory%=20*1024
   70 wimp_memory%=0:indirect%=0
   80 :
   90 Task$=FNWimp_Start("WimpEd")
  100   PROCCreate_Windows
  110   PROCCreate_Icons
  120   PROCCreate_Menus
  130   PROCCreate_Initialise
  140 
  150 PROCWimp_WaitForEvent(draw%+mouse%+menu%+message%+drag%+key%)
  160 PROCWimp_CloseDown
  170END
  180:
  190REM------------------------------
  200REM------------------------------
  210REM  INDEX OF EVENTS TO DEAL WITH
  220REM------------------------------
  230REM------------------------------
  240REM
  250REMEvent0 :  THE NULL EVENT
  260REMEvent1 :  DRAWING WINDOWS REQUEST
  270REMEvent2 :  OPEN WINDOW REQUEST
  280REMEvent3 :  CLOSE WINDOW REQUEST
  290REMEvent4 :  POINTER LEAVING WINDOW
  300REMEvent5 :  POINTER ENTERING WINDOW
  310REMEvent6 :  MOUSE CLICKS
  320REMEvent7 :  DRAGS
  330REMEvent8 :  KEY PRESSES
  340REMEvent9 :  MENU CHOICES
  350REMEvent10:  SCROLL REQUESTS
  360REMEvent11:  LOSE CARET
  370REMEvent12:  GAIN CARET
  380REM
  390REMEvents17/18/19:  MESSAGES
  400REM!
  410REM------------------------------
  420REM------------------------------
  430:
  440:
  450REM------------------------------
  460REM       INITIAL PROCEDURES
  470REM------------------------------
  480:
  490DEF PROCCreate_Windows
  500 Info_Window%=FNWindow_Load("info")
  510 Save_Window%=FNWindow_Load("save")
  520ENDPROC
  530:
  540DEF PROCCreate_Icons
  550 Bar_Icon%=FNIcon_Bar("!WimpEd")
  560ENDPROC
  570:
  580DEF PROCCreate_Menus
  590  Bar_Menu%=FNMenu_Create("WimpEd\Info\Choices\Windows\Icon Bar\Save\Quit")
  600  Choice_Menu%=FNMenu_Create("Choices\No REMs\Terse\Library\LoadToEditor\Interface")
  610  PROCMenu_Glue(Bar_Menu%,1,Info_Window%)
  620  PROCMenu_Glue(Bar_Menu%,2,Choice_Menu%)
  630  PROCMenu_Glue(Bar_Menu%,5,Save_Window%)
  640  PROCMenu_Disable(Bar_Menu%,3)
  650  PROCMenu_Disable(Bar_Menu%,4)
  660  PROCMenu_DottedLine(Bar_Menu%,2)
  670  PROCMenu_DottedLine(Bar_Menu%,4)
  680  PROCMenu_DottedLine(Choice_Menu%,4)
  690  col%=FNWimp_ColourMenu
  700ENDPROC
  710:
  720DEF PROCCreate_Initialise
  730 PROCcode
  740 wimp_memory%=0 : indirect%=0
  750 Template$="" : SSprite$="" : Sprite$=""  : next%=0
  760 Name$="Task" : interface%=FALSE
  770 NoOfMenus%=16 : NoOfItems%=16 : NoOfWindows%=0 : Bar%=FALSE
  780 NoOfColourMenus%=0
  790 Buffer_Length%=12  : prolix%=TRUE : terse%=FALSE : cmenu%=0 : Library%=FALSE
  800 Editor%=FALSE
  810 DIM Buffer% Buffer_Length%
  820 DIM Buffer1% Buffer_Length%
  830 DIM Buffer2% Buffer_Length%
  840 DIM Menus%(NoOfMenus%) : DIM ColourMenu%(16)
  850 DIM Menu_Block% NoOfMenus%*(28+NoOfItems%*24)
  860 DIM date% 50 : DIM Type$(16) : Type$()=""
  870 make$=FNWimp_ReadVariable("Make$Dir")
  880 file$=make$+".Data"
  890 file%=OPENUP(file$)
  900 INPUT#file%,prolix%,terse%,Library%,Editor%
  910 CLOSE#file%:file%=0
  920 IF NOT(prolix%) THEN PROCMenu_Tick(Choice_Menu%,1)
  930 IF terse% THEN PROCMenu_Tick(Choice_Menu%,2)
  940 IF Library% THEN PROCMenu_Tick(Choice_Menu%,3)
  950 IF Editor% THEN PROCMenu_Tick(Choice_Menu%,4)
  960ENDPROC
  970:
  980REM------------------------------
  990REMEvent1 :  DRAWING WINDOWS REQUEST
 1000REM------------------------------
 1010:
 1020DEF PROCEvent_DrawWindow(window%)
 1030ENDPROC
 1040:
 1050REM------------------------------
 1060REMEvent6 :  MOUSE CLICKS
 1070REM------------------------------
 1080:
 1090DEF PROCEvent_DealWithMouseClick(button%,window%,icon%,x%,y%)
 1100CASE button% OF
 1110 WHEN 2    : PROCPopUpMenu(window%,icon%,x%,y%)
 1120 OTHERWISE : IF interface% SYS"Wimp_BorderIcon",,wimp%
 1130ENDCASE
 1140ENDPROC
 1150:
 1160 DEF PROCPopUpMenu(window%,icon%,x%,y%)
 1170 IF window%=0 THEN xxx%=640 : yyy%=512 ELSE xxx%=x% : yyy%=y%
 1180 LOCAL i%
 1190  CASE window% OF
 1200   WHEN Bar_Window%
 1210    CASE icon% OF
 1220     WHEN Bar_Icon% : PROCBarMenu_PopUp(x%,y%)
 1230    ENDCASE
 1240   OTHERWISE
 1250    i%=-1
 1260    REPEAT i%+=1
 1270      IF window%=Window%(i%) THEN PROCWindowsMenu_PopUp(i%,x%,y%)
 1280    UNTIL (i%=NoOfWindows%) OR (window%=Window%(i%))
 1290  ENDCASE
 1300 ENDPROC
 1310 :
 1320  DEF PROCWindowsMenu_PopUp(i%,x%,y%)
 1330  LOCAL n%
 1340   xx%=x% : yy%=y%
 1350   window_menu%=i%
 1360   PROCMenu_Build(Menus%(),Menu$(),i%)
 1370   PROCMenu_PopUp(Menus%(0),x%,y%)
 1380  ENDPROC
 1390:
 1400REM------------------------------
 1410REMEvent7 :  DRAGS
 1420REM------------------------------
 1430:
 1440REM------------------------------
 1450REMEvent8 :  KEY PRESSES
 1460REM------------------------------
 1470:
 1480DEF PROCEvent_DealWithKeyPressed(window%,icon%,key%)
 1490CASE key% OF
 1500 WHEN 13   :
 1510 OTHERWISE : SYS "Wimp_ProcessKey",wimp%!24
 1520ENDCASE
 1530ENDPROC
 1540:
 1550REM------------------------------
 1560REMEvent9 :  MENU CHOICES
 1570REM------------------------------
 1580:
 1590DEF PROCEvent_DealWithMenuChoice
 1600 CASE menu% OF
 1610  WHEN Bar_Menu% : PROCDealWithBar_Menu
 1620  WHEN Edit_Menu%: PROCDealWithEditMenu
 1630  OTHERWISE      : PROCDealWithWindowMenu(window_menu%)
 1640 ENDCASE
 1650ENDPROC
 1660:
 1670 DEF PROCDealWithEditMenu
 1680   menu$=Menu$(Wind%,Menu%)
 1690  CASE FNMenu_Item(0) OF
 1700   WHEN 1 :  Menu$(Wind%,Menu%)=FNEditItem(menu$,Item%)
 1710   WHEN 2 :  PROCDeleteItem
 1720   WHEN 3 :  CASE FNMenu_Item(1) OF
 1730               WHEN 1 :PROCInsertAbove
 1740             ENDCASE
 1750   WHEN 4 :  CASE FNMenu_Item(1) OF
 1760              WHEN 0    : PROCRemoveSubMenu
 1770              WHEN 1    : PROCAddSubMenu
 1780              WHEN 2    : PROCAddColourMenu
 1790              OTHERWISE : PROCWindowLeaf
 1800             ENDCASE
 1810  ENDCASE
 1820  IF Wind%=0 THEN xxx%=640 : yyy%=512
 1830  PROCWindowsMenu_PopUp(Wind%,xxx%,yyy%)
 1840 ENDPROC
 1850:
 1860    DEF PROCAddColourMenu
 1870     LOCAL i%,j%,k% : i%=0 : j%=0
 1880     men$=Menu$(Wind%,Menu%)
 1890     REPEAT : i%+=1 : j%=INSTR(menu$,"\",j%+1) : UNTIL i%=Item%+1
 1900     i%=FNWimp_ColourMenu
 1910     men$=LEFT$(men$,j%-1)+">"+STR$(i%)+"C"+RIGHT$(men$,LEN(men$)-j%+1)
 1920     Menu$(Wind%,Menu%)=men$
 1930    ENDPROC
 1940:
 1950    DEF FNEditItem(menu$,k%)
 1960    LOCAL i%,j%,s%,item$,insert$: i%=0 : j%=0
 1970 
 1980    insert$=$Buffer%
 1990    CASE insert$ OF
 2000    WHEN "" : =menu$
 2010    OTHERWISE
 2020    REPEAT : i%+=1 : j%=INSTR(menu$,"\",j%+1) : UNTIL i%=k%
 2030    i%=INSTR(menu$,"\",j%+1)
 2040    item$=MID$(menu$,j%+1,i%-j%-1)
 2050    s%=INSTR(item$,">")+j%
 2060       CASE s% OF
 2070        WHEN j%   :
 2080        OTHERWISE :
 2090         insert$=insert$+MID$(menu$,s%,i%-s%)
 2100         s%=VAL(MID$(menu$,s%+1,i%-s%-1))
 2110         IF s%<100 THEN PROCChangeTitle(s%,$Buffer%)
 2120       ENDCASE
 2130    =LEFT$(menu$,j%)+insert$+RIGHT$(menu$,LENmenu$-i%+1)
 2140    ENDCASE
 2150:
 2160    DEF PROCChangeTitle(s%,insert$)
 2170     LOCAL i%,men$  : men$=Menu$(Wind%,s%)
 2180     i%=INSTR(men$,"\")
 2190     Menu$(Wind%,s%)=insert$+RIGHT$(men$,LENmen$-i%+1)
 2200    ENDPROC
 2210:
 2220    DEF PROCRemoveSubMenu
 2230     LOCAL i%,j% : i%=0 : j%=0
 2240     menu$=Menu$(Wind%,Menu%)
 2250     REPEAT : i%+=1 : j%=INSTR(menu$,"\",j%+1) : UNTIL i%=Item%
 2260     i%=INSTR(menu$,"\",j%+1)
 2270     item$=MID$(menu$,j%+1,i%-j%-1)
 2280     s%=INSTR(item$,">")
 2290     CASE s% OF
 2300      WHEN 0    :
 2310                 CASE FNMenu_Item(1) OF
 2320                   WHEN 1    : PROCAddSubMenu
 2330                   OTHERWISE : PROCWindowLeaf
 2340                 ENDCASE
 2350      OTHERWISE :
 2360       CASE FNCancelBox(Task$,"Delete Submenus?") OF
 2370        WHEN 1 : s%=VAL(RIGHT$(item$,LENitem$-s%))
 2380                 IF s%<100 THEN PROCRemoveTree(Wind%,s%)
 2390                 CASE FNMenu_Item(1) OF
 2400                   WHEN 1    : PROCAddSubMenu
 2410                   OTHERWISE : PROCWindowLeaf
 2420                 ENDCASE
 2430 
 2440       ENDCASE
 2450     ENDCASE
 2460    ENDPROC
 2470:
 2480    DEF PROCAddSubMenu
 2490     LOCAL i%,j% : i%=0 : j%=0
 2500     NoOfSubmenus%(Wind%)+=1
 2510     menu$=Menu$(Wind%,Menu%)
 2520     REPEAT : i%+=1 : j%=INSTR(menu$,"\",j%+1) : UNTIL i%=Item%+1
 2530     menu$=LEFT$(menu$,j%-1)+">"+STR$NoOfSubmenus%(Wind%)+RIGHT$(menu$,LENmenu$-j%+1)
 2540     Menu$(Wind%,Menu%)=menu$
 2550     Menu$(Wind%,NoOfSubmenus%(Wind%))=$Buffer%+"\"+$Buffer1%+"\"
 2560    ENDPROC
 2570:
 2580    DEF PROCWindowLeaf
 2590     LOCAL i%,j% : i%=0 : j%=0
 2600     menu$=Menu$(Wind%,Menu%)
 2610     wind%=Window%(FNMenu_Item(1)-2)
 2620     REPEAT : i%+=1 : j%=INSTR(menu$,"\",j%+1) : UNTIL i%=Item%+1
 2630     menu$=LEFT$(menu$,j%-1)+">"+STR$(wind%)+RIGHT$(menu$,LEN(menu$)-j%+1)
 2640     Menu$(Wind%,Menu%)=menu$
 2650    ENDPROC
 2660:
 2670   DEF PROCDeleteItem
 2680    LOCAL i%,j%,k%,item$ : i%=0 : j%=0
 2690    menu$=Menu$(Wind%,Menu%)
 2700    REPEAT : i%+=1 : j%=INSTR(menu$,"\",j%+1) : UNTIL i%=Item%
 2710    i%=INSTR(menu$,"\",j%+1)
 2720    Menu$(Wind%,Menu%)=LEFT$(menu$,j%-1)+RIGHT$(menu$,LENmenu$-i%+1)
 2730    item$=MID$(menu$,j%+1,i%-j%-1)
 2740    k%=INSTR(item$,">")
 2750    CASE k% OF
 2760     WHEN 0    :
 2770     OTHERWISE :
 2780     s%=VAL(RIGHT$(item$,LENitem$-k%))
 2790     CASE s%<100 OF
 2800      WHEN TRUE:
 2810      tot%=0:PROCRemoveTree(Wind%,s%):PROCUpdateTree(Wind%,s%)
 2820      NoOfSubmenus%(Wind%)-=tot%
 2830     ENDCASE
 2840    ENDCASE
 2850   ENDPROC
 2860:
 2870    DEF PROCRemoveTree(Wind%,k%)
 2880    LOCAL i%,j% : i%=0
 2890    REPEAT
 2900     i%=INSTR(Menu$(Wind%,k%),">",i%+1)
 2910     j%=VAL(RIGHT$(Menu$(Wind%,k%),LEN(Menu$(Wind%,k%))-i%))
 2920     IF i%<>0 AND j%<100 THEN PROCRemoveTree(Wind%,j%)
 2930    UNTIL i%=0
 2940    Menu$(Wind%,k%)="" : tot%+=1
 2950    ENDPROC
 2960:
 2970    DEF PROCUpdateTree(Wind%,s%)
 2980    LOCAL i%
 2990    CASE s% OF
 3000     WHEN NoOfSubmenus%(Wind%) :
 3010     OTHERWISE : i%=s%
 3020      REPEAT : i%+=1 : UNTIL Menu$(Wind%,i%)<>"" OR i%>NoOfSubmenus%(Wind%)
 3030      CASE TRUE OF
 3040       WHEN i%<=NoOfSubmenus%(Wind%) :
 3050        Menu$(Wind%,s%)=Menu$(Wind%,i%)
 3060        Menu$(Wind%,i%)=""
 3070        PROCRelabel(Wind%,s%,i%)
 3080      ENDCASE
 3090     ENDCASE
 3100     IF s%<NoOfSubmenus%(Wind%) THEN PROCUpdateTree(Wind%,s%+1)
 3110     ENDPROC
 3120:
 3130     DEF PROCRelabel(Wind%,s%,i%)
 3140     LOCAL j%,k%,t%,x$,y$ : j%=0 : x$=">"+STR$i%+"\"
 3150     REPEAT : j%+=1 : k%=INSTR(Menu$(Wind%,j%),x$) : UNTIL k%<>0 OR j%>s%
 3160     y$=Menu$(Wind%,j%) : t%=INSTR(y$,"\",k%)
 3170     Menu$(Wind%,j%)=LEFT$(y$,k%)+STR$s%+RIGHT$(y$,LENy$-t%+1)
 3180     ENDPROC
 3190:
 3200   DEF PROCInsertAbove
 3210     LOCAL i%,j% : i%=0 : j%=0
 3220     menu$=Menu$(Wind%,Menu%)
 3230     REPEAT : i%+=1 : j%=INSTR(menu$,"\",j%+1) : UNTIL i%=Item%
 3240     menu$=LEFT$(menu$,j%)+$Buffer2%+"\"+RIGHT$(menu$,LENmenu$-j%)
 3250     Menu$(Wind%,Menu%)=menu$
 3260   ENDPROC
 3270:
 3280 DEF PROCDealWithBar_Menu
 3290 LOCAL file%
 3300  CASE FNMenu_Item(0) OF
 3310   WHEN 1 :
 3320
 3330   WHEN 2 : CASE FNMenu_Item(1) OF
 3340             WHEN 1 :  prolix%=NOT(prolix%)
 3350                       PROCMenu_Tick(Choice_Menu%,1)
 3360                       CASE NOT(prolix%) AND NOTterse% OF
 3370                        WHEN TRUE
 3380                        terse%=NOT(terse%)
 3390                        PROCMenu_Tick(Choice_Menu%,2)
 3400                       ENDCASE
 3410                       PROCMenu_AdjustOn(menu%)
 3420             WHEN 2 :  terse%=NOT(terse%)
 3430                       PROCMenu_Tick(Choice_Menu%,2)
 3440                       CASE NOTterse% AND NOTprolix% OF
 3450                        WHEN TRUE
 3460                        prolix%=NOTprolix%
 3470                        PROCMenu_Tick(Choice_Menu%,1)
 3480                       ENDCASE
 3490                       PROCMenu_AdjustOn(menu%)
 3500             WHEN 3 :  Library%=NOT(Library%)
 3510                       PROCMenu_Tick(Choice_Menu%,3)
 3520                       PROCMenu_AdjustOn(menu%)
 3530             WHEN 4 :  Editor%=NOT(Editor%)
 3540                       PROCMenu_Tick(Choice_Menu%,4)
 3550                       PROCMenu_AdjustOn(menu%)
 3560             WHEN 5 :
 3570     *set interface$ true
 3580     *if "<System$Path>" = "" then Error 0 System resources cannot be found
 3590     *RMEnsure SharedCLibrary 0 RMLoad System:modules.CLib
 3600     *RMEnsure SharedCLibrary 0 set interface$=false
 3610     *RMEnsure InterfaceManager 1.25 RMLoad System:modules.Interface
 3620     *RMEnsure InterfaceManager 1.25 set interface$ false
 3630     CASE FNWimp_ReadVariable("interface$") OF
 3640      WHEN "true" :
 3650        interface%=NOT(interface%)
 3660        PROCMenu_Tick(Choice_Menu%,5)
 3670        PROCMenu_AdjustOn(menu%)
 3680      OTHERWISE :
 3690        PROCAlertBox("WimpEd","Interface module couldn't be loaded!")
 3700     ENDCASE
 3710            ENDCASE
 3720   WHEN 3 :
 3730    CASE FNMenu_Item(1) OF
 3740     WHEN 0    :
 3750     OTHERWISE : itm%=FNMenu_Item(1)
 3760                 PROCWindow_BringToTop(Window%(itm%))
 3770                 PROCMenu_AdjustOn(menu%)
 3780    ENDCASE
 3790   WHEN 4 : CASE NoOfWindows% OF
 3800             WHEN 0    : PROCAlertBox(Task$,"No templates file loaded!")
 3810             OTHERWISE :
 3820             SYS "Wimp_GetPointerInfo",,pointer_wimp%
 3830             CASE ((pointer_wimp%!8)AND1) OF
 3840              WHEN 1    : CASE Bar% OF
 3850                          WHEN TRUE
 3860                           CASE FNCancelBox(Task$,"No icon to be placed on Bar?") OF
 3870                            WHEN 1:
 3880                             PROCMenu_Tick(Bar_Menu%,4)
 3890                             Bar%=FALSE
 3900                           ENDCASE
 3910                          ENDCASE
 3920              OTHERWISE :IF NOTBar% THEN PROCMenu_Tick(Bar_Menu%,4)
 3930                         Bar%=TRUE
 3940                         PROCWindowsMenu_PopUp(0,640,512)
 3950             ENDCASE
 3960            ENDCASE
 3970   WHEN 5 :
 3980   WHEN 6 : PROCWimp_Quit
 3990  ENDCASE
 4000 ENDPROC
 4010:
 4020 DEF PROCDealWithWindowMenu(window%)
 4030 LOCAL item%
 4040 Buffer$=$Buffer%
 4050 CASE FNMenu_Item(0) OF
 4060  WHEN 1 :
 4070           CASE window% OF
 4080            WHEN  0   : SYS "Wimp_CreateMenu",-1
 4090            OTHERWISE : PROCWindow_Close(Window%(window%))
 4100           ENDCASE
 4110  WHEN 2 :
 4120   CASE FNMenu_Item(1) OF
 4130    WHEN 0    : PROCDeleteWindowMenu(window%)
 4140    OTHERWISE : PROCDealWithSelection(window%)
 4150   ENDCASE
 4160  WHEN 3 :
 4170           CASE window% OF
 4180            WHEN  0   :
 4190             item%=FNMenu_Item(1)
 4200             CASE item% OF
 4210              WHEN 0:
 4220              OTHERWISE:
 4230              Click%(item%)=NOT(Click%(item%))
 4240              PROCMenu_Tick(Wind_Menu%,item%)
 4250              PROCWindowsMenu_PopUp(0,640,512)
 4260             ENDCASE
 4270            OTHERWISE : Open%(window%)=NOT(Open%(window%))
 4280           ENDCASE
 4290  WHEN 4 : Exit%(window%)=NOT(Exit%(window%))
 4300 ENDCASE
 4310 ENDPROC
 4320:
 4330 DEF PROCDeleteWindowMenu(window%)
 4340 LOCAL i%
 4350  CASE FNCancelBox(Task$,"Delete "+Window$(window%)+" menu?") OF
 4360   WHEN 1 : FOR i%=1 TO NoOfSubmenus%(window%)
 4370             Menu$(window%,i%)=""
 4380            NEXT
 4390            Menu$(window%,1)=Window$(window%)+"\"
 4400   WHEN 2 :
 4410  ENDCASE
 4420 ENDPROC
 4430:
 4440 DEF PROCDealWithSelection(window%)
 4450 LOCAL menu$,x$,i%,j%,k% : j%=1 : i%=1
 4460 menu$=Menu$(window%,1)
 4470 WHILE FNMenu_Item(j%)<>0
 4480  menu$=FNMenu(menu$,FNMenu_Item(j%))
 4490  k%=i%
 4500  i%=INSTR(menu$,">") : i%=VAL(RIGHT$(menu$,LEN(menu$)-i%))
 4510  IF i%<100 THEN menu$=Menu$(window%,i%)
 4520  j%+=1
 4530 ENDWHILE
 4540 j%=FNMenu_Item(j%-1) : menu$=FNMenu(Menu$(window%,k%),j%)
 4550 CASE menu$ OF
 4560  WHEN ""   :  CASE Buffer$ OF
 4570                WHEN   "" :
 4580                OTHERWISE :
 4590                 PROCAddMenuItem(window%,k%)
 4600                 IF window%=0 THEN xxx%=640 : yyy%=512
 4610                 PROCWindowsMenu_PopUp(window_menu%,xxx%,yyy%)
 4620               ENDCASE
 4630  OTHERWISE :  PROCEditMenuItem(window%,k%,j%)
 4640 ENDCASE
 4650 ENDPROC
 4660 :
 4670 DEF PROCAddMenuItem(window%,menu%)
 4680 LOCAL k%
 4690  CASE (window%=0) AND (menu%=1) OF
 4700  WHEN TRUE
 4710   k%=INSTR(Menu$(0,1),"\Quit\")
 4720   Menu$(0,1)=LEFT$(Menu$(0,1),k%)+Buffer$+"\Quit\"
 4730  WHEN FALSE
 4740   Menu$(window%,menu%)+=Buffer$+"\"
 4750  ENDCASE
 4760 ENDPROC
 4770 :
 4780 DEF PROCEditMenuItem(window%,men%,item%)
 4790  i%=INSTR(menu$,">")
 4800  IF i%<>0 THEN menu$=LEFT$(menu$,i%-1)
 4810  $Buffer%=menu$ : $Buffer1%="" : $Buffer2%=""
 4820  Wind%=window% : Menu%=men% : Item%=item%
 4830  SYS "Wimp_GetPointerInfo",,wimp%
 4840  PROCMenu_PopUp(Edit_Menu%,wimp%!0,wimp%!4)
 4850 ENDPROC
 4860 :
 4870 DEF FNMenu(menu$,item%)
 4880  LOCAL i%,k%
 4890  k%=0 : i%=0
 4900  REPEAT
 4910   k%=INSTR(menu$,"\",k%+1) : i%+=1
 4920  UNTIL i%=item%
 4930  i%=INSTR(menu$,"\",k%+1)
 4940  IF i%=0 THEN=RIGHT$(menu$,LENmenu$-k%) ELSE=MID$(menu$,k%+1,i%-k%-1)
 4950 :
 4960REM------------------------------
 4970REMEvents17/18/19:  MESSAGES
 4980REM----------- -------------------
 4990:
 5000DEF PROCEvent_DealWithMessages(message%)
 5010CASE message% OF
 5020  WHEN message_quit%  : PROCWimp_Quit
 5030  WHEN message_save%  : PROCDealWithSavingOfFile(FNFile_PathName)
 5040  WHEN message_load%  : PROCDealWithLoadingOfFile
 5050  WHEN &400C0         : window_menu%=0
 5060ENDCASE
 5070PROCMenu_Close
 5080ENDPROC
 5090:
 5100 DEF PROCDealWithSavingOfFile(file$)
 5110   SYS "Hourglass_On"
 5120   file%=OPENUP(make$+".Data ")
 5130   PRINT#file%, prolix%,terse%,Library%,Editor%
 5140   CLOSE#file%:file%=0
 5150   LOCAL c$ : c$="F~C~V"
 5160   OSCLI("*CDIR "+file$)                : REM Create Application Directory
 5170   IF Template$<>"" THEN OSCLI("* COPY "+Template$+" "+file$+".Templates "+c$)
 5180   IF Sprite$<>""   THEN OSCLI("*COPY "+Sprite$+" "+file$+".Sprites "+c$)
 5190   CASE SSprite$ OF
 5200    WHEN ""  :
 5210     OSCLI("*COPY "+make$+".Library.!Sprites "+file$+".!Sprites "+c$)
 5220    OTHERWISE:
 5230     OSCLI("*COPY "+SSprite$+" "+file$+".!Sprites "+c$)
 5240   ENDCASE
 5250   PROCCreate_RunFile(file$)
 5260   PROCCreate_HelpFile(file$)
 5270   PROCCreate_RunImage(file$)
 5280   SYS "Hourglass_Off"
 5290   CASE Library% OF
 5300    WHEN TRUE :
 5310     f$=make$+".Library.WimpB"
 5320     c$="F~C~V"
 5330     OSCLI("*COPY "+f$+" "+g$+".Wimp "+c$)
 5340    OTHERWISE :
 5350      f$=make$+".Library.Wimp"
 5360REM   s%=OPENIN f$ : t%=EXT#s% : CLOSE#s% : s%=0
 5370REM   OSCLI("LOAD "+f$+" "+STR$~ptr%)
 5380REM   ptr%+=t%
 5390      F%=OPENUP(file$+".!RunImage")
 5400      PTR#F%=EXT#F%
 5410      G%=OPENIN(f$)
 5420REM      PTR#F%=PTR#F% - 2:REM for BASIC files
 5430      CALL append%
 5440REM   REPEAT:B%=BGET#G%:BPUT#F%,B%:UNTIL EOF#G%
 5450      CLOSE#F%:F%=0
 5460      CLOSE#G%:G%=0
 5470   ENDCASE
 5480
 5490 CASE Editor% OF
 5500  WHEN TRUE
 5510   *set Dialogue$ yes
 5520   *RmEnsure Dialogue  0.00 *set Dialogue$ no
 5530    CASE FNWimp_ReadVariable("Dialogue$") OF
 5540     WHEN "yes"
 5550      OSCLI("WimpTask MESSAGE StrongED2_OpenDoc "+file$+".!RunImage 128 960 528 520 0 0 -wrap 80 -wordwrap -bcol 7 -fcol 0")
 5560    ENDCASE
 5570   PROCWimp_SendToEdit(file$+".!RunImage")
 5580  ENDCASE
 5590
 5600 ENDPROC
 5610:
 5620  DEF PROCCreate_RunFile(file$)
 5630  LOCAL ptr% : ptr%=wimp% : application$=LEFT$(FNGetLeaf(file$))
 5640  PROCAdd_Line("",0)
 5650  PROCAdd_Line("| ----------------------------"+STRING$(LENName$,"-"),0)
 5660  PROCAdd_Line("| Run file for application : "+Name$,0)
 5670  PROCAdd_Line("| ----------------------------"+STRING$(LENName$,"-"),0)
 5680  PROCAdd_Line("",0)
 5690  application$=RIGHT$(application$,LENapplication$-1)
 5700  PROCAdd_Line("Set "+application$+"$Dir <Obey$Dir>",2)
 5710  CASE SSprite$ OF
 5720   WHEN ""   :
 5730   OTHERWISE :
 5740    PROCAdd_Line("IconSprites <Obey$Dir>.!Sprites",2)
 5750  ENDCASE
 5760  CASE interface% OF
 5770  WHEN TRUE:
 5780   PROCAdd_Line("",0)
 5790   PROCAdd_Line("| Loading interface module:",0)
 5800   PROCAdd_Line("",0)
 5810   PROCAdd_Line("If ""<System$Path>""=""""  then Error 0 System resources cannot be found",2)
 5820   PROCAdd_Line("RMEnsure SharedCLibrary 0 RMLoad System:modules.CLib",2)
 5830   PROCAdd_Line("RMEnsure InterfaceManager 1.25 RMLoad System:modules.Interface",2)
 5840   PROCAdd_Line("RMEnsure InterfaceManager 1.25 Error Couldn't load Interface module",2)
 5850  ENDCASE
 5860  PROCAdd_Line("",0)
 5870  PROCAdd_Line("WimpSlot -min 64K -max 64K",2)
 5880  PROCAdd_Line("Run <Obey$Dir>.!RunImage ",2)
 5890  file$+=".!Run"
 5900  SYS "OS_File",10,file$,&FEB,,wimp%,ptr%
 5910 ENDPROC
 5920  :
 5930 DEF PROCCreate_HelpFile(file$)
 5940 LOCAL ptr%,i% : ptr%=wimp%
 5950  date%!0=0
 5960  SYS "OS_Word",14,date%
 5970  y$=$date%
 5980    PROCAdd_Line("  ",0)
 5990    PROCAdd_Line(STRING$(40,"-"),18)
 6000    PROCAdd_Line("Application : "+Name$,(63-LENName$)DIV2)
 6010    PROCAdd_Line("",0)
 6020    PROCAdd_Line("Help for Version 1.0 : ("+MID$(y$,5,11)+")",20)
 6030    PROCAdd_Line("  ",0)
 6040    PROCAdd_Line(STRING$(40,"-"),18)
 6050    FOR i%=1 TO 5 :PROCAdd_Line("",0):NEXT
 6060    PROCAdd_Line("<User writes help here>",26)
 6070    PROCAdd_Line("",0)
 6080  file$+=".!Help"
 6090  SYS "OS_File",10,file$,&FFF,,wimp%,ptr%
 6100 ENDPROC
 6110 :
 6120REM------------------------------
 6130REM>>>>>>>>>>>!RunImage
 6140REM------------------------------
 6150REM
 6160 DEF PROCCreate_RunImage(file$)
 6170  LOCAL ptr%
 6180  ptr%=wimp%
 6190  PROCIndex
 6200  PROCMainProgram
 6210  PROCCreate_Procedures
 6220  PROCEvent_Procedures
 6230  g$=file$
 6240  file$+=".!RunImage"
 6250  SYS "OS_File",10,file$,&FD1,,wimp%,ptr%
 6260  ENDPROC
 6270:
 6280  DEF PROCIndex
 6290  x$=LEFT$(FNGetLeaf(file$))
 6300  indent%=20
 6310  PROCComment2("PROGRAM INDEX : "+x$,indent%)
 6320  indent%=25
 6330  PROCAdd_REM(STRING$(30,"-"),indent%-5)
 6340  PROCAdd_REM("",0)
 6350  PROCAdd_REM("1.�MAIN�PROGRAM",indent%)
 6360  PROCAdd_REM("",0)
 6370  PROCAdd_REM("2.�CREATE�PROCEDURES",indent%)
 6380  PROCAdd_REM("",0)
 6390  PROCAdd_REM("2.1�Create�Initial�Data",indent%+4)
 6400  PROCAdd_REM("2.2�Create�Windows",indent%+4)
 6410  PROCAdd_REM("2.3�Create�Menus",indent%+4)
 6420  PROCAdd_REM("",0)
 6430  PROCAdd_REM("3.�EVENT�PROCEDURES",indent%)
 6440  PROCAdd_REM("",0)
 6450  PROCAdd_REM("3.0�Window�Closing",indent%+4)
 6460  PROCAdd_REM("3.1�Window�Drawing",indent%+4)
 6470  PROCAdd_REM("3.2�Mouse�Clicks",indent%+4)
 6480  PROCAdd_REM("3.3�Key�Presses",indent%+4)
 6490  PROCAdd_REM("3.4�Menu�Choices",indent%+4)
 6500  PROCAdd_REM("3.5�File�Loading",indent%+4)
 6510  PROCAdd_REM("3.6�File�Saving",indent%+4)
 6520  PROCAdd_REM("",0)
 6530  PROCAdd_REM(STRING$(30,"-"),indent%-5)
 6540  PROCAdd_REM("",0)
 6550  ENDPROC
 6560 :
 6570  DEF PROCMainProgram
 6580   PROCAdd_REMS(2)
 6590   PROCHeading("1.�MAIN�PROGRAM",20)
 6600   indent%=24
 6610   PROCAdd_REMS(2)
 6620   IF Library% THEN PROCAdd_Line("LIBRARY "+"""<Obey$Dir>.Wimp""",indent%)
 6630   PROCAdd_REMS(1)
 6640   arg$=""""
 6650   arg$+=application$
 6660   arg$+=""""
 6670   arg$+=","+STR$wimp_memory%+","+STR$indirect%
 6680   PROCAdd_Line("PROCWimp_Start("+arg$+")",indent%)
 6690   PROCAdd_REMS(1)
 6700   PROCAdd_Line("PROCUser_SetInitialData",indent%)
 6710   PROCAdd_REMS(1)
 6720   PROCAdd_Line("PROCCreate_Windows",indent%)
 6730   PROCAdd_Line("PROCCreate_Menus",indent%)
 6740   PROCAdd_REMS(1)
 6750   PROCAdd_Line("PROCWimp_WaitForEvent",indent%)
 6760   PROCAdd_REMS(1)
 6770   PROCAdd_Line("PROCWimp_CloseDown",indent%)
 6780   PROCAdd_REMS(1)
 6790   PROCAdd_Line("END",indent%)
 6800   PROCAdd_REMS(5)
 6810  ENDPROC
 6820 :
 6830  DEF PROCCreate_Procedures
 6840   PROCUser_SetInitialData
 6850   PROCWindows
 6860   PROCMenus
 6870  ENDPROC
 6880  :
 6890    DEF PROCUser_SetInitialData
 6900    indent%=4
 6910    PROCHeader("2.1�Create�Initial�Data",indent%)
 6920    PROCAdd_PROC("User_SetInitialData",indent%)
 6930    IF interface% THEN PROCAdd_Line("interface%=TRUE",indent%)
 6940    CASE NOT(terse%) OF
 6950     WHEN TRUE :
 6960      PROCHeading("Users Initial Data goes here",indent%+10)
 6970      PROCAdd_REMS(1)
 6980    ENDCASE
 6990    PROCFooter("End of Initial Data",indent%)
 7000    ENDPROC
 7010  :
 7020    DEF FNMemory(j%)
 7030    LOCAL memory%,x$ : memory%=0
 7040      flag%=Templates%!j%
 7050       CASE TRUE OF
 7060         WHEN (flag%AND(1<<8))=(1<<8)
 7070           CASE TRUE OF
 7080           WHEN (flag%AND1)=1
 7090             m%=Templates%!(j%+12) : memory%+=m%
 7100             CASE Templates%!(j%+8) OF
 7110             WHEN -1 :
 7120             OTHERWISE:
 7130              REM validated!
 7140              m%=Templates%!(j%+8)
 7150              x$=$m%
 7160              m%=20*LEN(x$)+1
 7170             memory%+=m%
 7180             ENDCASE
 7190          ENDCASE
 7200       ENDCASE
 7210    =memory%
 7220  :
 7230    DEF FNTitle
 7240    LOCAL memory%,j%,x$ : memory%=0 : j%=72
 7250      flag%=Templates%!60
 7260       CASE TRUE OF
 7270         WHEN (flag%AND(1<<8))=(1<<8)
 7280          CASE TRUE OF
 7290           WHEN (flag%AND1)=1
 7300             m%=Templates%!(j%+12) : memory%=m%
 7310             CASE Templates%!(j%+8) OF
 7320             WHEN -1 :
 7330             OTHERWISE:
 7340              REM validated!
 7350              m%=Templates%!(j%+8)
 7360              x$=$m%
 7370              m%=20*LEN(x$)+1
 7380             memory%+=m%
 7390             ENDCASE
 7400          ENDCASE
 7410       ENDCASE
 7420    =memory%
 7430:
 7440    DEF FNIconMemory
 7450    LOCAL i%,j%,n%,memory%
 7460    CASE NoOfWindows% OF
 7470     WHEN 0
 7480     OTHERWISE
 7490      FOR i%=1 TO NoOfWindows%
 7500      Templates%!0=Window%(i%)
 7510      SYS "Wimp_GetWindowInfo",,Templates%
 7520      memory%=FNTitle
 7530      n%=Templates%!88
 7540      j%=92+16
 7550      REPEAT
 7560       memory%+=FNMemory(j%)
 7570       j%+=32
 7580      UNTIL j%>=(n%*32+92+16)
 7590      NEXT
 7600    ENDCASE
 7610    =memory%
 7620  :
 7630      DEF PROCHeader(x$,indent%)
 7640      PROCHeading(x$,16+indent%)
 7650      PROCAdd_REMS(2)
 7660      PROCAdd_REM(STRING$(65,"~"),indent%)
 7670      PROCAdd_REMS(1)
 7680      ENDPROC
 7690  :
 7700      DEF PROCFooter(x$,indent%)
 7710       PROCAdd_REMS(1)
 7720       PROCAdd_Line("ENDPROC",indent%)
 7730       PROCAdd_REMS(1)
 7740       PROCAdd_REM(STRING$(65,"~"),indent%)
 7750       PROCAdd_REM(STRING$(65-LENx$," ")+x$,indent%)
 7760       PROCAdd_REMS(3)
 7770      ENDPROC
 7780 :
 7790      DEF PROCFooter1(x$,indent%)
 7800       PROCAdd_REMS(1)
 7810       PROCAdd_REM(STRING$(65,"~"),indent%)
 7820       PROCAdd_REM(STRING$(65-LENx$," ")+x$,indent%)
 7830       PROCAdd_REMS(3)
 7840      ENDPROC
 7850 :
 7860    DEF PROCWindows
 7870    LOCAL i%,x$
 7880    indent%=4
 7890    PROCHeader("2.2�Create�Windows",indent%)
 7900    PROCAdd_PROC("Create_Windows",indent%)
 7910    PROCAdd_REMS(1)
 7920
 7930    CASE Sprite$ OF
 7940     WHEN ""   :
 7950      IF NOT(terse%) THEN PROCHeading("No sprite file",indent%+10)
 7960     OTHERWISE :
 7970           PROCAdd_REMS(1)
 7980           PROCAdd_Line("PROCWimp_SpritesLoad",indent%+2)
 7990           PROCAdd_REMS(1)
 8000    ENDCASE
 8010    CASE NoOfWindows% OF
 8020     WHEN 0    :
 8030      IF NOT(terse%) THEN PROCHeading("No windows defined",indent%+10)
 8040     OTHERWISE :
 8050      PROCAdd_REMS(1)
 8060      FOR i%=1 TO NoOfWindows%
 8070       x$=Window$(i%)
 8080       x$=STRING$(15-LENx$," ")+x$
 8090       x$+="_Window%=FNWimp_WindowLoad("""+Window$(i%)+""")"
 8100       PROCAdd_Line(x$,indent%)
 8110      NEXT
 8120      PROCAdd_REMS(1)
 8130      open%=FALSE
 8140      FOR i%=1 TO NoOfWindows%
 8150      CASE Open%(i%) OF
 8160       WHEN TRUE :
 8170        PROCAdd_Line("PROCWimp_WindowBringToTop("+Window$(i%)+"_Window%)",indent%+1)
 8180        open%=TRUE
 8190       ENDCASE
 8200      NEXT
 8210      CASE NOTopen% AND NOT(terse%) OF
 8220      WHEN TRUE:
 8230       PROCHeading("No windows opened at run time!",indent%+10)
 8240      ENDCASE
 8250    ENDCASE
 8260    CASE Bar% OF
 8270     WHEN TRUE:
 8280     PROCAdd_Line("Bar_Icon%=FNWimp_IconBar("""+"!"+application$+""")",indent%)
 8290     WHEN FALSE
 8300      IF NOT(terse%) THEN PROCHeading("No icon defined for icon bar",indent%+10)
 8310    ENDCASE
 8320    PROCAdd_Line("ENDPROC",indent%)
 8330    PROCAdd_Line(":",indent%+1)
 8340    CASE FNSaveTrue OF
 8350    WHEN TRUE:
 8360    PROCAdd_Line("DEF FNEvent_Save(window%)",indent%+1)
 8370    PROCAdd_Line("CASE window% OF",indent%+3)
 8380    FOR i%=1 TO NoOfWindows%
 8390    CASE LEFT$(Window$(i%),4) OF
 8400     WHEN "Save","save","SAVE"
 8410     PROCAdd_Line("WHEN "+Window$(i%)+"_Window% :=TRUE",indent%+5)
 8420    ENDCASE
 8430    NEXT
 8440    PROCAdd_Line("OTHERWISE :=FALSE",indent%+5)
 8450    PROCAdd_Line("ENDCASE",indent%+3)
 8460    OTHERWISE
 8470    PROCAdd_Line("DEF FNEvent_Save(window%)=FALSE",indent%+1)
 8480    ENDCASE
 8490    PROCAdd_REMS(1)
 8500    PROCAdd_Line(":",indent%+1)
 8510    PROCAdd_Line("DEF FNEvent_Sprites(window%)=sprites%",indent%+1)
 8520    PROCAdd_REMS(1)
 8530    PROCFooter1("End of Create Windows",indent%)
 8540    ENDPROC
 8550  :
 8560    DEF PROCAdd_PROC(x$,indent%)
 8570     PROCAdd_Line(":",indent%)
 8580     PROCAdd_Line("DEF PROC"+x$,indent%)
 8590     PROCAdd_REMS(1)
 8600    ENDPROC
 8610  :
 8620 DEF PROCMenus
 8630    indent%=4
 8640    PROCHeader("2.3�Create�Menus",indent%)
 8650    PROCAdd_PROC("Create_Menus",indent%)
 8660    CASE TRUE OF
 8670     WHEN  NoOfWindows%=0 AND Bar%=0 :
 8680       IF NOT(terse%) THEN PROCHeading("No menus defined!",indent%+10)
 8690     OTHERWISE :
 8700      FOR i%=0 TO NoOfWindows%
 8710       k%=NoOfSubmenus%(i%)-1 : x$=Window$(i%)+"_Menu%"
 8720       CASE k% OF
 8730        WHEN 0    :
 8740         menu$=LEFT$(Menu$(i%,1))
 8750         CASE INSTR(menu$,"\") OF
 8760         WHEN 0 :
 8770          CASE NOTterse% OF
 8780           WHEN TRUE
 8790            PROCAdd_REM("No menu for window: "+Window$(i%),indent%)
 8800          ENDCASE
 8810         OTHERWISE
 8820          IF NOT((i%=0) AND (Bar%=FALSE)) THEN
 8830          CASE NOTterse% OF
 8840           WHEN TRUE
 8850            PROCAdd_REMS(1)
 8860            PROCAdd_REM("Menu for window: "+Window$(i%),indent%)
 8870            PROCAdd_REMS(1)
 8880          ENDCASE
 8890          PROCAdd_Menu(" "+x$,Menu$(i%,1),-1,indent%)
 8900          ENDIF
 8910          PROCAdd_REMS(1)
 8920         ENDCASE
 8930        OTHERWISE :
 8940        CASE NOTterse% OF
 8950         WHEN TRUE
 8960         PROCAdd_REMS(1)
 8970         PROCAdd_REM("Menu for window: "+Window$(i%),indent%)
 8980         PROCAdd_REMS(1)
 8990        ENDCASE
 9000         PROCAdd_Line(" DIM "+x$+"("+STR$k%+")",indent%)
 9010         PROCAdd_REMS(1)
 9020         FOR j%=k% TO 0 STEP-1
 9030          PROCAdd_Menu(x$,Menu$(i%,j%+1),j%,indent%)
 9040         NEXT
 9050         PROCAdd_REMS(1)
 9060        ENDCASE
 9070       NEXT
 9080    ENDCASE
 9090    PROCAdd_Line("ENDPROC",indent%)
 9100    PROCAdd_Line(":",indent%+1)
 9110    PROCMousePopUp
 9120    PROCFooter1("End of Menu Definitions",indent%)
 9130    ENDPROC
 9140  :
 9150  DEF PROCMousePopUp
 9160  indent%=4
 9170  PROCAdd_Line("DEF FNEvent_Menu(window%)",indent%+1)
 9180  CASE TRUE OF
 9190    WHEN NoOfWindows%=0 AND Bar%=0 :
 9200      PROCAdd_Line("=FALSE",indent%+1)
 9210    OTHERWISE :
 9220      PROCAdd_Line("CASE window% OF",indent%+1)
 9230      FOR i%=0 TO NoOfWindows%
 9240       x$="WHEN "+Window$(i%)+"_Window%"
 9250       x$+=STRING$(24-LENx$," ")+": ="
 9260       menu$=LEFT$(Menu$(i%,1))
 9270       CASE  INSTR(menu$,"\") OF
 9280         WHEN 0    :
 9290         OTHERWISE : CASE i% OF
 9300                      WHEN 0   :
 9310                       CASE Bar% OF
 9320                        WHEN TRUE : x$+="Bar_Menu%"
 9330                        OTHERWISE : x$+="FALSE"
 9340                       ENDCASE
 9350                      OTHERWISE: x$+=Window$(i%)+"_Menu%"
 9360                     ENDCASE
 9370                     PROCAdd_Line(x$,indent%+2)
 9380       ENDCASE
 9390      NEXT
 9400      PROCAdd_Line("OTHERWISE               : =FALSE",indent%+2)
 9410      PROCAdd_Line("ENDCASE",indent%+1)
 9420      PROCAdd_REMS(1)
 9430  ENDCASE
 9440  PROCAdd_REMS(1)
 9450 ENDPROC
 9460:
 9470      DEF PROCAdd_Menu(x$,menu$,j%,indent%)
 9480      menu$=FNAmend_Menu(x$,menu$)
 9490      menu$=LEFT$(menu$)
 9500      CASE j% OF
 9510       WHEN -1,0   :
 9520        PROCAdd_MenuLine(" "+x$,menu$,indent%)
 9530       OTHERWISE :
 9540        PROCAdd_MenuLine(" "+x$+"("+STR$j%+")",menu$,indent%)
 9550      ENDCASE
 9560      ENDPROC
 9570  :
 9580      DEF PROCAdd_MenuLine(x$,menu$,indent%)
 9590      LOCAL i%,j%,k%,len%,s$
 9600      i%=60-LENx$-LEN("=FNWimp_MenuCreate")
 9610      CASE TRUE OF
 9620       WHEN i%>LEN(menu$)
 9630         PROCAdd_Line(x$+"=FNWimp_MenuCreate("""+menu$+""")",indent%)
 9640       OTHERWISE:
 9650        len%=60-LEN("menu$=")-4
 9660        CASE TRUE OF
 9670         WHEN LEN(menu$)<=len%
 9680          PROCAdd_Line("menu$="+""""+menu$+"""",indent%+2)
 9690         OTHERWISE
 9700          s$="-" : j%=0
 9710          REPEAT
 9720          REPEAT : k%=j%:j%=INSTR(menu$,"\",j%+1) : UNTIL (j%>len%) OR (j%=0)
 9730          IF j%>58 OR LENmenu$>58 THEN j%=k%
 9740          CASE s$ OF
 9750           WHEN "-" :  s$=" "
 9760           OTHERWISE:  s$="+"
 9770          ENDCASE
 9780          CASE j% OF
 9790           WHEN 0
 9800            PROCAdd_Line("menu$"+s$+"="+""""+menu$+"""",indent%+2)
 9810            menu$=""
 9820           OTHERWISE
 9830            PROCAdd_Line("menu$"+s$+"="+""""+LEFT$(menu$,j%)+"""",indent%+2)
 9840            menu$=RIGHT$(menu$,LENmenu$-j%)
 9850          ENDCASE
 9860          UNTIL menu$=""
 9870        ENDCASE
 9880        PROCAdd_Line(x$+"=FNWimp_MenuCreate(menu$)",indent%)
 9890      ENDCASE
 9900      ENDPROC
 9910  :
 9920      DEF FNAmend_Menu(x$,menu$)
 9930      LOCAL i%,j%,k%,n%,z$ : i%=0
 9940      REPEAT :
 9950       i%=INSTR(menu$,">",i%+1)
 9960       CASE i% OF
 9970        WHEN 0    :
 9980        OTHERWISE :
 9990           j%=INSTR(menu$,"\",i%+1)
10000           k%=VAL(MID$(menu$,i%+1,j%-i%-1))
10010           CASE TRUE OF
10020            WHEN k%<100
10030             z$=x$+"("+STR$(k%-1)+")"
10040            OTHERWISE
10050             CASE INSTR(MID$(menu$,i%+1,j%-i%-1),"C") OF
10060              WHEN 0   :
10070               n%=1
10080               WHILE Window%(n%)<>k% : n%+=1 :ENDWHILE
10090               z$=Window$(n%)+"_Window%"
10100              OTHERWISE:
10110               n%=i% : REPEAT : n%-=1 : UNTIL MID$(menu$,n%,1)="\"
10120               z$=MID$(menu$,n%+1,i%-n%-1)+"_CMenu%"
10130               PROCAdd_MenuLine(z$,"Colours",indent%)
10140             ENDCASE
10150           ENDCASE
10160           menu$=LEFT$(menu$,i%)+z$+RIGHT$(menu$,LENmenu$-j%+1)
10170        ENDCASE
10180       UNTIL i%=0
10190      =menu$
10200:
10210:
10220REM------------------------------
10230REM#      WRITING EVENT PROCEDURES
10240REM------------------------------
10250REM
10260:
10270    DEF PROCEvent_Procedures
10280     PROCWindowClose
10290     PROCWindowDraw
10300     PROCMouseClick
10310     PROCKeys
10320     PROCUser_MenuChoice
10330     PROCFileLoading
10340     PROCFileSaving
10350    ENDPROC
10360    :
10370  DEF PROCWindowClose
10380  indent%=4
10390  PROCHeader("3.0�Window�Closing",indent%)
10400  PROCAdd_PROC("Event_WindowClose(window%,buttons%)",indent%)
10410  CASE NoOfWindows% OF
10420   WHEN 0    : IF NOT(terse%) THEN PROCHeading("No windows defined",indent%+10)
10430   OTHERWISE :
10440     PROCAdd_Line("CASE window% OF",indent%)
10450     FOR i%=1 TO NoOfWindows%
10460      x$="WHEN "+Window$(i%)+"_Window%"
10470      x$+=STRING$(25-LENx$," ")+":"
10480       CASE Exit%(i%) OF
10490       WHEN FALSE :
10500        x$+=" REM No closing action defined!"
10510        IF NOT(terse%) THEN PROCAdd_Line(x$,indent%+1)
10520       OTHERWISE          :
10530        x$+=" finished%=TRUE"
10540        PROCAdd_Line(x$,indent%+1)
10550      ENDCASE
10560     NEXT
10570     PROCAdd_Line("ENDCASE",indent%)
10580  ENDCASE
10590  PROCAdd_REMS(1)
10600  PROCAdd_Line("ENDPROC",indent%)
10610  PROCAdd_REMS(2)
10620  PROCFooter1("End of Window Close Routines",indent%)
10630  ENDPROC
10640:
10650  DEF FNWindowDraw
10660  LOCAL i%,draw% : draw%=FALSE
10670  CASE NoOfWindows% OF
10680  WHEN 0:
10690  OTHERWISE:
10700  FOR i%=1 TO NoOfWindows%
10710   Templates%!0=Window%(i%)
10720   SYS "Wimp_GetWindowInfo",,Templates%
10730   Flag%(i%)=!(Templates%+32)
10740   Flag%(i%)=Flag%(i%)>>>4
10750   Flag%(i%)=Flag%(i%)MOD2
10760   IF Flag%(i%)<>1 THEN draw%=TRUE
10770  NEXT
10780  ENDCASE
10790 =draw%
10800 :
10810  DEF PROCWindowDraw
10820  indent%=4
10830  PROCHeader("3.1�Window�Drawing",indent%)
10840  PROCAdd_PROC("Event_Draw(window%,x_origin%,y_origin%)",indent%)
10850  CASE NoOfWindows% OF
10860   WHEN 0    : IF NOT(terse%) THEN PROCHeading("No windows defined",indent%+10)
10870   OTHERWISE :
10880     PROCAdd_Line("CASE window% OF",indent%)
10890     FOR i%=1 TO NoOfWindows%
10900      x$="WHEN "+Window$(i%)+"_Window%"
10910      x$+=STRING$(25-LENx$," ")+":"
10920       CASE Flag%(i%) OF
10930       WHEN             1 :
10940        x$+=" REM Redrawn automatically!"
10950        IF NOT(terse%) THEN PROCAdd_Line(x$,indent%+1)
10960       OTHERWISE          :
10970        x$+=" PROCUser_Draw"+Window$(i%)+"Window"
10980        PROCAdd_Line(x$,indent%+1)
10990      ENDCASE
11000     NEXT
11010     PROCAdd_Line("ENDCASE",indent%)
11020  ENDCASE
11030  PROCAdd_REMS(1)
11040  PROCAdd_Line("ENDPROC",indent%)
11050  PROCAdd_REMS(2)
11060   CASE NoOfWindows% OF
11070     WHEN 0 :
11080     OTHERWISE:
11090         FOR i%=1 TO NoOfWindows%
11100           CASE Flag%(i%) OF
11110            WHEN             1 :
11120            OTHERWISE
11130            PROCAdd_PROC("User_Draw"+Window$(i%)+"Window",indent%+6)
11140            IF prolix% PROCHeading("User to provide code here",indent%+10)
11150            PROCAdd_Line("ENDPROC",indent%+6)
11160            PROCAdd_REMS(2)
11170           ENDCASE
11180         NEXT
11190    ENDCASE
11200  PROCFooter1("End of Window Drawing Routines",indent%)
11210  ENDPROC
11220:
11230 DEF FNMenuExist
11240 LOCAL i%,menu% : i%=-1 : menu%=FALSE
11250 CASE NoOfWindows% OF
11260  WHEN 0
11270   IF Bar% THEN menu%=TRUE
11280  OTHERWISE
11290   REPEAT : i%+=1
11300    IF INSTR(LEFT$(Menu$(i%,1)),"\")<>0 THEN menu%=TRUE
11310   UNTIL i%=NoOfWindows% OR menu%=TRUE
11320 ENDCASE
11330=menu%
11340 :
11350 
11360 DEF FNMouseClick
11370 LOCAL i%,click%   : click%=FALSE
11380 CASE NoOfWindows% OF
11390  WHEN 0 : IF Bar%<>0 THEN click%=TRUE
11400  OTHERWISE
11410  IF Bar% THEN click%=TRUE
11420  FOR i%=1 TO NoOfWindows%
11430   Templates%!0=Window%(i%)
11440   SYS "Wimp_GetWindowInfo",,Templates%
11450   Flag%(i%)=Templates%!64
11460   Flag%(i%)=Flag%(i%)>>>12
11470   CASE Window$(i%) OF
11480    WHEN "Save","save","SAVE" : Flag%(i%)=-1
11490    OTHERWISE
11500     IF Flag%(i%)<>0 THEN click%=TRUE
11510   ENDCASE
11520  NEXT
11530 ENDCASE
11540=click%
11550:
11560DEF PROCMouseClick
11570 indent%=4
11580  PROCHeader("3.2�Mouse�Clicks",indent%)
11590  PROCAdd_PROC("Event_MouseClick(window%,icon%,button%,x%,y%)",indent%)
11600  PROCAdd_Line("CASE window% OF",indent%)
11610  PROCBarMouse
11620  CASE NoOfWindows% OF
11630   WHEN 0 :
11640    IF NOT(terse%) THEN PROCHeading("No windows defined!",indent%+10)
11650   OTHERWISE
11660    PROCMouseContents
11670  ENDCASE
11680  PROCAdd_Line("ENDCASE",indent%)
11690  PROCAdd_REMS(1)
11700  PROCAdd_Line("ENDPROC",indent%)
11710  IF NoOfWindows%<>0 THEN PROCMouseSubs
11720  PROCFooter1("End of Dealing with Mouse Clicks",indent%)
11730  ENDPROC
11740 :
11750 DEF PROCBarMouse
11760  CASE Bar% OF
11770   WHEN TRUE :
11780    x$="WHEN Bar_Window%        :"
11790    PROCAdd_Line(x$+" PROCUser_MouseBar",indent%+1)
11800   OTHERWISE :
11810    x$="WHEN Bar_Window%        : REM No Icon on icon bar!"
11820    IF NOTterse% THEN PROCAdd_Line(x$,indent%+1)
11830  ENDCASE
11840 ENDPROC
11850 :
11860 DEF PROCMouseContents
11870 LOCAL nn%,mm%
11880  FOR i%=1 TO NoOfWindows%
11890  CASE LEFT$(Window$(i%),4) OF
11900   WHEN "Save","save","SAVE" : Flag%(i%)=-1
11910   OTHERWISE :
11920    Templates%!0=Window%(i%)
11930    SYS "Wimp_GetWindowInfo",,Templates%
11940    nn%=Templates%!88
11950    mm%=Templates%!(92+16)
11960    Flag%(i%)=Templates%!64
11970    Flag%(i%)=Flag%(i%)>>>12
11980    CASE nn%=0 OR Flag%(i%)<>0 OF
11990     WHEN  TRUE:
12000     OTHERWISE :
12010      pattern%=(1<<12)+(1<<13)+(1<<14)+(1<<15)
12020      SYS "Wimp_WhichIcon",Window%(i%),Templates%,pattern%,0
12030      mm%=0
12040      WHILE (Templates%!mm%)<>-1 : mm%+=4 : ENDWHILE
12050      mm%=(mm%DIV4)
12060      IF nn%<>mm% THEN Flag%(i%)=1
12070    ENDCASE
12080  ENDCASE
12090  PROCMice
12100  NEXT
12110 ENDPROC
12120 :
12130 DEF PROCMice
12140  x$="WHEN "+Window$(i%)+"_Window%"
12150  x$+=STRING$(24-LENx$," ")+": "
12160      CASE Flag%(i%) OF
12170       WHEN 0    : CASE terse% OF
12180                    WHEN FALSE
12190                     x$+="REM  Mouse clicks are ignored!"
12200                     PROCAdd_Line(x$,indent%+1)
12210                   ENDCASE
12220       WHEN -1   :
12230       OTHERWISE : x$+="PROCUser_Mouse"+Window$(i%)+"( button%,icon%)"
12240                   PROCAdd_Line(x$,indent%+1)
12250                   ENDCASE
12260 ENDPROC
12270 :
12280 DEF PROCMouseSubs
12290  IF Bar% THEN PROCBarSub
12300  FOR i%=1 TO NoOfWindows%
12310    CASE Flag%(i%) OF
12320      WHEN 0,-1 :
12330      OTHERWISE :
12340        PROCAdd_REMS(2)
12350        x$="User_Mouse"+Window$(i%)+"( button%,icon%)"
12360        PROCAdd_PROC(x$,indent%+2)
12370        PROCAdd_Line("PROCWimp_WindowAlert("+""""+Window$(i%)+""""+","+"""Mouse button="""+"+STR$button%+"+"""icon="""+"+STR$icon%)",indent%+3)
12380        PROCAdd_REMS(1)
12390        PROCAdd_Line("ENDPROC",indent%+2)
12400     ENDCASE
12410   NEXT
12420 ENDPROC
12430 :
12440 DEF PROCBarSub
12450  PROCAdd_REMS(2)
12460  PROCAdd_PROC("User_MouseBar",indent%+2)
12470     click%=FALSE
12480     FOR i%=1 TO NoOfWindows%
12490      CASE TRUE OF
12500       WHEN  Click%(i%)
12510        x$="PROCWimp_WindowBringToTop("+Window$(i%)+"_Window%)"
12520        PROCAdd_Line(x$,indent%+3)
12530        click%=TRUE
12540      ENDCASE
12550     NEXT
12560      CASE prolix% OF
12570      WHEN TRUE
12580       IF NOT(click%)  THEN PROCHeading("Use PROCWimp_WindowBringToTop() here ",indent%+8)
12590      ENDCASE
12600 PROCAdd_REMS(1)
12610 PROCAdd_Line("ENDPROC",indent%+2)
12620 ENDPROC
12630:
12640  DEF FNKeys
12650  LOCAL write% : write%=FALSE
12660  CASE LEFT$(Window$(i%),4) OF
12670   WHEN "SAVE","Save","save"  : write%=1
12680   OTHERWISE :
12690    pattern%=(1<<12)+(1<<13)+(1<<14)+(1<<15)
12700    SYS "Wimp_WhichIcon",Window%(i%),Templates%,pattern%,pattern%
12710    IF (Templates%!0)<>-1 THEN write%=TRUE
12720  ENDCASE
12730  =write%
12740 :
12750  DEF PROCKeys
12760  indent%=4
12770  PROCHeader("3.3�Key�Presses",indent%)
12780  PROCAdd_PROC("Event_KeyPress(window%,icon%,key%)",indent%)
12790  CASE NoOfWindows% OF
12800  WHEN 0
12810   IF NOT(terse%) THEN PROCHeading("No windows defined!",indent%+10)
12820  OTHERWISE
12830  PROCAdd_Line("CASE window% OF",indent%+3)
12840  FOR i%=1 TO NoOfWindows%
12850    x$="WHEN "+Window$(i%)+"_Window%"
12860    x$+=STRING$(24-LENx$," ")+": "
12870    CASE FNKeys OF
12880    WHEN 1 :
12890    WHEN TRUE
12900     PROCAdd_Line(x$+"PROCUser_KeyPress"+Window$(i%)+"( icon%,key%)",indent%+4)
12910    WHEN FALSE
12920     IF NOT(terse%) THEN PROCAdd_Line(x$+"REM  No writeable icons!",indent%+4)
12930    ENDCASE
12940  NEXT
12950  PROCAdd_Line("ENDCASE",indent%+3)
12960  PROCAdd_REMS(1)
12970  ENDCASE
12980  PROCAdd_Line("ENDPROC",indent%)
12990  PROCAdd_REMS(2)
13000  IF NoOfWindows%<>0 THEN PROCKey2
13010  PROCFooter1("End of key press procedures",indent%)
13020  ENDPROC
13030:
13040  DEF PROCKey2
13050   FOR i%=1 TO NoOfWindows%
13060    CASE FNKeys OF
13070     WHEN -1
13080     PROCAdd_REMS(1)
13090     PROCAdd_PROC("User_KeyPress"+Window$(i%)+"( icon%,key%)",indent%+2)
13100     PROCAdd_Line("PROCWimp_WindowAlert("+""""+Window$(i%)+""""+","+"""Key pressed="""+"+STR$key%+"+"""icon="""+"+STR$icon%)",indent%+2)
13110     PROCAdd_REMS(1)
13120     PROCAdd_Line("ENDPROC",indent%+2)
13130    ENDCASE
13140  NEXT
13150  ENDPROC
13160:
13170  DEF PROCUser_MenuChoice
13180   indent%=4
13190  PROCHeader("3.4�Menu�Choices",indent%)
13200  PROCAdd_PROC("Event_MenuChoice(menu%)",indent%)
13210  CASE TRUE OF
13220   WHEN NoOfWindows%=0 AND Bar%=0 :
13230    IF NOT(terse%) THEN PROCHeading("No windows defined!",indent%+10)
13240   OTHERWISE
13250    PROCAdd_Line("CASE menu% OF",indent%+1)
13260    PROCAdd_REMS(1)
13270    FOR i%=0 TO NoOfWindows%
13280     x$="WHEN "+Window$(i%)+"_Menu%"
13290     x$+=STRING$(24-LENx$," ")+": "
13300      menu$=LEFT$(Menu$(i%,1))
13310      CASE i% OF
13320       WHEN 0    :
13330        IF Bar%<>0 THEN x$+="PROCUser_MenuChoice"+Window$(i%): PROCAdd_Line(x$,indent%+7)
13340       OTHERWISE :
13350           CASE  INSTR(menu$,"\") OF
13360           WHEN 0:
13370             IF NOT(terse%) THEN x$+="REM  No menu defined!":PROCAdd_Line(x$,indent%+7)
13380           OTHERWISE :
13390             x$+="PROCUser_MenuChoice"+Window$(i%)
13400             PROCAdd_Line(x$,indent%+7)
13410           ENDCASE
13420       ENDCASE
13430    NEXT
13440    PROCAdd_REMS(1)
13450    PROCAdd_Line("ENDCASE",indent%+1)
13460  ENDCASE
13470  PROCAdd_REMS(1)
13480  PROCAdd_Line("ENDPROC",indent%)
13490  PROCMenuDealer
13500  PROCFooter1("End of Menu Choice Procedures",indent%)
13510  ENDPROC
13520:
13530  DEF PROCMenuDealer
13540  LOCAL i%
13550  CASE TRUE OF
13560   WHEN NoOfWindows%=0 AND Bar%=0 :
13570   OTHERWISE :
13580    FOR i%=0 TO NoOfWindows%
13590    menu$=LEFT$(Menu$(i%,1))
13600      CASE  INSTR(menu$,"\") OF
13610        WHEN 0:
13620        OTHERWISE :
13630        CASE i%=0 AND Bar%=0 OF
13640        WHEN TRUE:
13650        OTHERWISE:
13660         PROCAdd_REMS(2)
13670         PROCAdd_PROC("User_MenuChoice"+Window$(i%),indent%)
13680         PROCMenuPrint(Menu$(i%,1),0)
13690         PROCAdd_Line("ENDPROC",indent%)
13700        ENDCASE
13710      ENDCASE
13720   NEXT
13730  ENDCASE
13740  ENDPROC
13750:
13760  DEF PROCMenuPrint(menu$,level%)
13770  LOCAL j%,k%,s%,t%,v%,item$,itm$ : k%=INSTR(menu$,"\") : v%=0
13780  PROCAdd_Line("CASE FNWimp_MenuChoice("+STR$level%+") OF",2*level%+5)
13790  REPEAT : v%+=1
13800   IF v%<10 THEN c$=" :" ELSE c$=":"
13810   j%=k% :  k%=INSTR(menu$,"\",j%+1)
13820   CASE k% OF
13830     WHEN 0
13840     OTHERWISE :
13850      item$=MID$(menu$,j%+1,k%-j%-1) : itm$=item$
13860      s%=INSTR(item$,">")
13870      CASE s% OF
13880       WHEN 0    :
13890        x$=""""+item$+""""
13900        item$="WHEN "+STR$v%+c$
13910        CASE itm$ OF
13920         WHEN "Quit" :
13930         item$+="finished%=TRUE"
13940         OTHERWISE:
13950         item$+=" PROCWimp_WindowAlert("+""""+Window$(i%)
13960        item$+=" Menu"+""""+","+x$+")"
13970        ENDCASE
13980        PROCAdd_Line(item$,2*level%+6)
13990       OTHERWISE :
14000        t%=VAL(RIGHT$(item$,LENitem$-s%))
14010        item$=LEFT$(item$,s%-1)
14020        item$="WHEN "+STR$v%+c$
14030        PROCAdd_Line(item$,2*level%+6)
14040        CASE RIGHT$(itm$) OF
14050        WHEN "C"
14060         x$="IF FNWimp_MenuChoice("+STR$(level%+1)+")<>0 THEN"
14070         PROCAdd_Line(x$,2*level%+8)
14080         x$="col%=FNWimp_MenuChoice("+STR$(level%+1)+")-1"
14090         PROCAdd_Line(x$,2*level%+10)
14100         x$="PROCWimp_WindowAlert("+""""+Window$(i%)+" Menu"
14110         item$=x$+""",""Colour Chosen=""+STR$col%)"
14120         PROCAdd_Line(item$,2*level%+10)
14130         PROCAdd_Line("ENDIF",2*level%+8)
14140        ENDCASE
14150        IF t%<100 THEN PROCMenuPrint(Menu$(i%,t%),level%+1)
14160      ENDCASE
14170   ENDCASE
14180  UNTIL k%=0
14190  PROCAdd_Line("ENDCASE",2*level%+5)
14200  ENDPROC
14210:
14220  DEF PROCFileLoading
14230  indent%=4
14240
14250  PROCHeader("3.5�File�Loading",indent%)
14260  PROCAdd_PROC("Event_LoadFile(file$,type$)",indent%)
14270  CASE next% OF
14280   WHEN 0:
14290    IF NOT(terse%) THEN PROCHeading("No files loaded!",indent%+8)
14300   OTHERWISE
14310     PROCAdd_Line("CASE type$ OF",indent%+2)
14320     FOR i%=1 TO next%
14330      x$ ="WHEN "+""""+Type$(i%)+""""+STRING$(13-LEN(Type$(i%))," ")+": "
14340      x$+="PROCUser_LoadFile"+Type$(i%)+"(file$)"
14350      PROCAdd_Line(x$,indent%+4)
14360     NEXT
14370     PROCAdd_Line("ENDCASE",indent%+2)
14380   ENDCASE
14390   PROCAdd_REMS(1)
14400   PROCAdd_Line("ENDPROC",indent%)
14410 CASE next% OF
14420   WHEN 0:
14430   OTHERWISE
14440     FOR i%=1 TO next%
14450      PROCAdd_REMS(1)
14460      PROCAdd_PROC("User_LoadFile"+Type$(i%)+"(file$)",indent%+2)
14470      x$="PROCWimp_WindowAlert("
14480      x$+=""""+LEFT$(FNGetLeaf(file$))+""""
14490      x$+=","+"""Loading file """+"+file$)"
14500      PROCAdd_Line(x$,indent%+4)
14510      PROCAdd_REMS(1)
14520      PROCAdd_Line("ENDPROC",indent%+2)
14530     NEXT
14540   ENDCASE
14550  PROCFooter1("End of file loading procedure",indent%+2)
14560  ENDPROC
14570:
14580 DEF PROCFileSaving
14590   indent%=4
14600  PROCHeader("3.6�File�Saving",indent%)
14610  PROCAdd_PROC("Event_SaveFile(file$,window%)",indent%)
14620  CASE FNSaveTrue OF
14630  WHEN TRUE:
14640   PROCAdd_Line("CASE window% OF",indent%+2)
14650   FOR i%=1 TO NoOfWindows%
14660    x$="WHEN "+Window$(i%)+"_Window%"
14670    x$+=STRING$(26-LENx$," ")+": "
14680    CASE LEFT$(Window$(i%),4) OF
14690     WHEN "Save","save","SAVE"
14700      x$+="PROCWimp_WindowAlert("
14710      x$+=""""+Window$(i%)+""""
14720      x$+=","+"""Saving file """+"+file$)"
14730      PROCAdd_Line(x$,indent%+4)
14740     OTHERWISE :
14750      x$+="REM  Not a save window!"
14760      IF NOTterse% THEN PROCAdd_Line(x$,indent%+4)
14770    ENDCASE
14780   NEXT
14790   PROCAdd_Line("ENDCASE",indent%+2)
14800  ENDCASE
14810  PROCFooter("End of file saving procedure",indent%)
14820  ENDPROC
14830:
14840DEF FNSaveTrue
14850LOCAL result%,i%
14860CASE NoOfWindows% OF
14870WHEN 0   : result%=FALSE
14880OTHERWISE:
14890 i%=0
14900 REPEAT
14910  i%+=1
14920  CASE LEFT$(Window$(i%),4) OF
14930     WHEN "Save","save","SAVE" : result%=TRUE
14940  ENDCASE
14950 UNTIL i%=NoOfWindows% OR result%=TRUE
14960ENDCASE
14970=result%
14980:
14990REM------------------------------
15000REM      Tool procedures
15010REM------------------------------
15020REM
15030:
15040    DEF PROCAdd_Line(x$,indent%)
15050    CASE prolix% OF
15060    WHEN TRUE:
15070     $ptr%=STRING$(3+indent%," ")+x$+CHR$10
15080     ptr%+=LENx$+4+indent%
15090    OTHERWISE:
15100     IF LEFT$(x$,3)<>"REM" THEN $ptr%=STRING$(3+indent%," ")+x$+CHR$10:ptr%+=LENx$+4+indent%
15110    ENDCASE
15120    ENDPROC
15130:
15140    DEF PROCAdd_REM(x$,indent%)
15150    PROCAdd_Line("REM"+STRING$(indent%," ")+x$,-3)
15160    ENDPROC
15170:
15180    DEF PROCAdd_REMS(n%)
15190    LOCAL i%
15200    FOR i%=1 TO n% :  PROCAdd_REM("",0) : NEXT
15210    ENDPROC
15220:
15230    DEF PROCHeading(x$,indent%)
15240    PROCAdd_REM("",0)
15250    PROCAdd_REM("------------------------------",indent%)
15260    PROCAdd_REM(STRING$(15-(LEN(x$)DIV2)," ")+x$,indent%)
15270    PROCAdd_REM("------------------------------",indent%)
15280    PROCAdd_REM("",0)
15290    ENDPROC
15300 :
15310    DEF PROCComment(x$)
15320    PROCAdd_REM("",0)
15330    PROCAdd_Line("REM"+STRING$(15," ")+STRING$(30,"-"),-3)
15340    PROCAdd_Line("REM"+STRING$(30-(LEN(x$)DIV2)," ")+x$,-3)
15350    PROCAdd_Line("REM"+STRING$(15," ")+STRING$(30,"-"),-3)
15360    PROCAdd_REM("",0)
15370    ENDPROC
15380 :
15390    DEF PROCComment2(x$,indent%)
15400    PROCAdd_REM("------------------------------",indent%)
15410    PROCAdd_REM(STRING$(15-(LEN(x$)DIV2)," ")+x$,indent%)
15420    PROCAdd_REM("",0)
15430    date%!0=0
15440    SYS "OS_Word",14,date%
15450    y$=$date%
15460    PROCAdd_REM(STRING$(15-(LEN(x$)DIV2)," ")+y$,indent%)
15470    PROCAdd_REM("------------------------------",indent%)
15480    PROCAdd_REM("",0)
15490    ENDPROC
15500REM------------------------------
15510REM**********FILE LOADING
15520REM------------------------------
15530:
15540 DEF PROCDealWithLoadingOfFile
15550 LOCAL type$,file$,new%,i%
15560   : type$=FNFile_Type : file$=FNFile_PathName : new%=0
15570 CASE type$ OF
15580  WHEN "Template" :
15590   CASE Template$ OF
15600    WHEN ""   : PROCDealWithLoadingTemplate
15610    OTHERWISE : new%=1
15620   ENDCASE
15630  WHEN "Sprite"
15640   CASE LEFT$(FNGetLeaf(file$)) OF
15650    WHEN "Sprites","SPRITES","sprites"    : PROCDealWithLoadingSpriteFile
15660    WHEN "!Sprites","!SPRITES","!sprites" : PROCDealWithLoadingSystemSprites
15670    OTHERWISE       :  new%=1
15680   ENDCASE
15690  OTHERWISE
15700  IF next%<16 THEN new%=1
15710 ENDCASE
15720 CASE new% OF
15730 WHEN 1 :
15740 i%=0 : test%=FALSE
15750   REPEAT
15760   i%+=1
15770   IF Type$(i%)=type$ THEN test%=TRUE
15780   UNTIL i%=16 OR test%=TRUE
15790   CASE test% OF
15800   WHEN TRUE
15810    PROCAlertBox(Task$,"Application already responds to files of type : "+type$)
15820   OTHERWISE
15830   next%+=1
15840   CASE next%>16 OF
15850   WHEN TRUE : PROCAlertBox(Task$,"Too many types!")
15860   OTHERWISE :
15870    Type$(next%)=type$
15880    PROCAlertBox(Task$,"Application will respond to loading of files of type : "+type$)
15890   ENDCASE
15900   ENDCASE
15910 ENDCASE
15920 ENDPROC
15930:
15940 DEF PROCDealWithLoadingSystemSprites
15950  LOCAL file%,offset%,x$,x%,y%,i%,j%,NoOfSprites%,test%
15960  test%=FALSE
15970  SSprite$=file$
15980  file%=OPENIN(file$)
15990   NoOfSprites%=BGET#file%
16000   y%=0 : PTR#file%=4 : offset%=BGET#file% : offset%-=4
16010   j%=0
16020   REPEAT j%+=1
16030    offset%+=y% : PTR#file%=offset% : y%=0
16040    FOR i%=0 TO 24 STEP8
16050     x%=BGET#file%
16060     y%+=x%<<i%
16070    NEXT
16080    x$=GET$#file% : x$=LEFT$(x$,10)
16090    CASE TRUE OF
16100     WHEN LEFT$(x$,1)="!"    :
16110      x%=FNCancelBox(Task$,"Change Application Name to "+x$+" ?")
16120      CASE x% OF
16130      WHEN 1 :
16140       test%=TRUE
16150       Name$=x$
16160       OSCLI("*IconSprites "+file$)
16170       PROCIcon_MakeText(Save_Window%,1,x$)
16180       x%=FNicon_newsprite(wimp%,Save_Window%,0,Name$,FALSE)
16190       CASE Bar% OF
16200       WHEN TRUE :
16210        xy%=INSTR(Menu$(0,1),"\")
16220        Menu$(0,1)=FNrem(Name$)+RIGHT$(Menu$(0,1),LEN(Menu$(0,1))-xy%+1)
16230       ENDCASE
16240      ENDCASE
16250    ENDCASE
16260   UNTIL j%>=NoOfSprites% OR test%
16270  CLOSE#file% : file%=0
16280 ENDPROC
16290:
16300 DEF PROCDealWithLoadingSpriteFile
16310  Sprite$=file$
16320 ENDPROC
16330:
16340 DEF PROCDealWithLoadingTemplate
16350  Template$=file$
16360  wimp_memory%=0 : indirect%=0
16370  PROCLoad_Windows
16380 ENDPROC
16390 :
16400  DEF PROCLoad_Windows
16410   LOCAL n%,x$ : n%=0 : NoOfWindows%=0 : x$=""
16420   CASE FNFile_Load(Template$)  OF
16430    WHEN FALSE :
16440     PROCAlertBox("WimpEd","Templates contain font data! WimpEd cannot load this file")
16450    OTHERWISE :
16460    OSCLI("LOAD "+Template$+" "+STR$~file%)
16470    Templates%=file%+16
16480   REPEAT
16490    NoOfWindows%+=1
16500    n%+=24
16510   UNTIL Templates%!n%=0
16520   CASE NoOfWindows% OF
16530   WHEN 0:
16540   OTHERWISE:
16550   DIM Window$(NoOfWindows%),Window%(NoOfWindows%),Click%(NoOfWindows%)
16560   DIM Menu$(NoOfWindows%,NoOfMenus%),NoOfSubmenus%(NoOfWindows%)
16570   DIM Flag%(NoOfWindows%),Open%(NoOfWindows%),Exit%(NoOfWindows%)
16580   Open%()=FALSE : Exit%()=FALSE :
16590   FOR n%=1 TO NoOfWindows%
16600    Window$(n%)=$(Templates%+12+24*(n%-1))
16610    Window%(n%)=FNWindow_Get(Window$(n%),Template$)
16620    Click%(n%)=sprites_only%
16630    x$+="\"+Window$(n%)
16640    NoOfSubmenus%(n%)=1
16650    Menu$(n%,0)="Menu Maker\Close Window\Menu>1\Run   � Open\Close � Exit"
16660    Menu$(n%,1)=Window$(n%)+"\"
16670   NEXT
16680   Wind_Menu%=FNMenu_Create("Windows"+x$)
16690   Windows_Menu%=FNMenu_Create("Windows"+x$)
16700   FOR n%=1 TO NoOfWindows%
16710    IF Click%(n%) THEN PROCMenu_ColourItem(Windows_Menu%,n%,11)
16720   NEXT
16730   Click%()=FALSE
16740    PROCMenu_Enable(Bar_Menu%,3)
16750    PROCMenu_Enable(Bar_Menu%,4)
16760    PROCMenu_Glue(Bar_Menu%,3,Windows_Menu%)
16770   Edit_Menu%=FNMenu_Create("Edit\\Delete\Insert Above\Submenu")
16780   Sub_Menu%=FNMenu_Create(" Submenu \\Colours"+x$)
16790   Insert_Menu%=FNMenu_Create("Insert\")
16800    PROCMenu_DottedLine(Edit_Menu%,1)
16810    PROCMenu_Glue(Edit_Menu%,4,Sub_Menu%)
16820    PROCMenu_Glue(Edit_Menu%,3,Insert_Menu%)
16830    PROCMenu_DottedLine(Edit_Menu%,3)
16840    PROCMenu_DottedLine(Sub_Menu%,1)
16850    PROCMenu_DottedLine(Sub_Menu%,2)
16860    $Buffer1%=""
16870    PROCMenu_Write(Edit_Menu%,1,Buffer%,-1,Buffer_Length%)
16880    PROCMenu_Write(Sub_Menu%,1,Buffer1%,-1,Buffer_Length%)
16890    PROCMenu_Write(Insert_Menu%,1,Buffer2%,-1,Buffer_Length%)
16900    Window$(0)="Bar" : Window%(0)=-2 : NoOfSubmenus%(0)=1
16910    Menu$(0,0)="Icon Bar\Close\Menu>1\Click Opens"
16920    Name$=FNrem(Name$)
16930    Menu$(0,1)=Name$+"\"
16940    FOR n%=1 TO NoOfWindows%
16950     CASE Window$(n%) OF
16960      WHEN "Info","info","INFO"
16970       Menu$(0,1)+="Info>"+STR$(Window%(n%))+"\"
16980     ENDCASE
16990    NEXT
17000    Menu$(0,1)+="Quit\"
17010    ENDCASE
17020  ENDCASE
17030  ENDPROC
17040:
17050DEF FNrem(x$)
17060IF RIGHT$(x$)=CHR$0 THEN=LEFT$(x$) ELSE=x$
17070:
17080REM-------------------------------------------------------------------------
17090REM-------------------------------------------------------------------------
17100REM
17110REM                      WIMP PROCEDURE LIBRARY
17120REM
17130REM@          INDEX
17140REM
17150REM*******POLLING ROUTINE
17160REM*******WIMP ROUTINES
17170REM*******WINDOW ROUTINES
17180REM*******ICON ROUTINES
17190REM*******MENU ROUTINES
17200REM*******FILE ROUTINES
17210REM*******SPRITE ROUTINES
17220REM*******MISCELLANEOUS
17230REM
17240REM-------------------------------------------------------------------------
17250REM-------------------------------------------------------------------------
17260:
17270REM------------------------------
17280REM*******POLLING ROUTINE
17290REM------------------------------
17300:
17310DEF PROCWimp_WaitForEvent(mask%)
17320finished%=FALSE
17330mask%=mask%OR((1<<2)+(1<<3)+(1<<7)+(1<<9)+(1<<10))
17340mask%=mask%OR((1<<13)+(1<<14)+(1<<15)+(1<<16))
17350mask%=mask%OR%11111111111100000000000000000000
17360mask%=NOT(mask%)
17370REPEAT
17380 SYS "Wimp_Poll",mask%,wimp% TO event%
17390 IF wimp%!0=Save_Window% OR wimp%!12=Save_Window% THEN PROCSave_Event ELSE PROCNonSave_Event
17400UNTIL finished%
17410ENDPROC
17420:
17430DEF PROCNonSave_Event
17440CASE event% OF
17450 WHEN 0 : PROCEvent_DealWithNullEvent(wimp%!0)
17460 WHEN 1 : PROCWindow_Redraw
17470 WHEN 2 : PROCWindow_Open(!wimp%,1)
17480 WHEN 3 : PROCWindow_Close(!wimp%)
17490 WHEN 4 :
17500 WHEN 5 :
17510 WHEN 6 :
17520 PROCEvent_DealWithMouseClick(wimp%!8,wimp%!12,wimp%!16,wimp%!0,wimp%!4)
17530 WHEN 7 : PROCEvent_SaveMessage
17540 WHEN 8 : PROCEvent_DealWithKeyPressed(wimp%!0,wimp%!4,wimp%!24)
17550 WHEN 9 :
17560          PROCEvent_DealWithMenuChoice
17570 WHEN 17,18 : xx%=wimp%!20 : yy%=wimp%!24
17580              CASE wimp%!16=message_save% AND wimp%!36>-1 OF
17590              WHEN TRUE:
17600               file$=FNFile_PathName
17610               PROCEvent_DealWithMessages(wimp%!16)
17620               PROCIcon_MakeText(Save_Window%,1,file$)
17630              OTHERWISE:
17640               PROCEvent_DealWithMessages(wimp%!16)
17650              ENDCASE
17660ENDCASE
17670ENDPROC
17680:
17690REM------------------------------
17700REM         SAVE ROUTINES
17710REM------------------------------
17720:
17730DEF PROCSave_Event
17740 CASE wimp%!0 OF
17750  WHEN Save_Window% : PROCFile_Save
17760  OTHERWISE         : CASE wimp%!16 OF
17770                       WHEN 0 :
17780                        IF wimp%!8 AND &50 THEN PROCDrag_Box(Save_Window%)
17790                       WHEN 2 :
17800                        IF wimp%!8 AND 5 THEN PROCFile_Save
17810                      ENDCASE
17820 ENDCASE
17830ENDPROC
17840:
17850 DEF PROCFile_Save
17860 LOCAL x$
17870 x$=FNIcon_GetText(Save_Window%,1)
17880 CASE INSTR(x$,".") OF
17890  WHEN 0    :
17900   PROCAlertBox(Task$,"To save, drag the icon to a directory window")
17910  OTHERWISE :
17920   PROCDealWithSavingOfFile(x$)
17930 ENDCASE
17940 SYS "Wimp_CreateMenu",-1
17950 ENDPROC
17960:
17970 DEF PROCDrag_Box(window%)
17980 LOCAL ox%,oy%
17990  !wimp%=window%
18000  SYS "Wimp_GetWindowState",,wimp%
18010  ox%=wimp%!4-wimp%!20  : oy%=wimp%!16-wimp%!24
18020  wimp%!4=0
18030  SYS "Wimp_GetIconState",,wimp%
18040  !wimp%=window%
18050  wimp%!4=5
18060  wimp%!8=ox%+wimp%!8    : wimp%!12=oy%+wimp%!12
18070  wimp%!16=ox%+wimp%!16  : wimp%!20=oy%+wimp%!20
18080  wimp%!24=0:wimp%!28=0
18090  wimp%!32=&7FFFFFFF  : wimp%!36=&7FFFFFFF
18100  SYS "Wimp_DragBox",,wimp%
18110 ENDPROC
18120:
18130 DEF PROCEvent_SaveMessage
18140  LOCAL file$,window%,icon%,x%,y%
18150  SYS "Wimp_GetPointerInfo",,wimp%
18160  window%=wimp%!12 : icon%=wimp%!16  : x%=wimp%!0  : y%=wimp%!4
18170  file$=FNGetLeaf(FNIcon_GetText(Save_Window%,1))
18180  wimp%!20=window%
18190  wimp%!24=icon%
18200  wimp%!28=x% : wimp%!32=y%
18210  wimp%!36=length%
18220  wimp%!0=64
18230  wimp%!12=0
18240  wimp%!16=1
18250  wimp%!40=&FFF
18260  $(wimp%+44)=file$
18270  SYS "Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
18280 ENDPROC
18290:
18300 DEF FNGetLeaf(name$)
18310  WHILE INSTR(name$,".")
18320   name$=MID$(name$,INSTR(name$,".")+1)
18330  ENDWHILE
18340 =name$+CHR$(0)
18350:
18360REM------------------------------
18370REM*******WIMP ROUTINES
18380REM------------------------------
18390:
18400DEF PROCWimp_SetEventVariables
18410REM#
18420 DIM wimp% block_memory%,icons% icon_memory%
18430  icon_end%=icons%+icon_memory%
18440 DIM pointer_wimp% 20
18450REM
18460 null%=1                : draw%=2           : pointer_leaving%=1<<4
18470 pointer_entering%=1<<5 : mouse%=1<<6       : drag%=1<<7
18480 key%=1<<8              : menu%=1<<9        : scroll%=1<<10
18490 lose_caret%=1<<11      : gain_caret%=1<<12 : message%=(1<<17)+(1<<18)
18500 recorder%=1<<18        : acknowledge%=1<<19: window%=0
18510 sprites%=1             : version%=0        : task%=0
18520 Bar_Window%=-2         : Bar_Icon%=0       : Bar_Menu%=0
18530 x_origin%=0            : y_origin%=0       : SaveWindow%=-3
18540 message_quit%=0        : message_save%=2   : message_load%=3
18550 mouse_button%=2
18560ENDPROC
18570:
18580DEF FNWimp_Start(TaskName$)
18590REM...Initialises a task.
18600REM...See page 1173 of RiscOs Manual.
18610REM
18620REM
18630 PROCWimp_SetEventVariables
18640 ON ERROR PROCError(task%,TaskName$):END
18650 $wimp%="TASK"
18660 SYS "Wimp_Initialise",200,!wimp%,TaskName$ TO version%,task%
18670=TaskName$
18680:
18690DEF PROCWimp_Quit
18700finished%=TRUE
18710ENDPROC
18720:
18730DEF PROCError(task%,TaskName$)
18740ON ERROR OFF
18750DIM ErrorMsg% 36
18760ErrorMsg%!0     = 36                : REM Length of message
18770ErrorMsg%!12    = 0                 : REM This is an original message
18780ErrorMsg%!16    = &81080            : REM Message number to set caret
18790ErrorMsg%!20    = ERL               : REM Line to put caret on
18800$(ErrorMsg%+24) = "!RunImage   "    : REM File to put caret on
18810SYS "Wimp_SendMessage",17,ErrorMsg%
18820PROCWimp_Alert(TaskName$,REPORT$+"at line "+STR$(ERL DIV 10),2)
18830PROCWimp_CloseDown
18840ENDPROC
18850:
18860DEF PROCWimp_CloseDown
18870SYS "Wimp_CloseDown",task%,"TASK"
18880ENDPROC
18890:
18900REM------------------------------
18910REM*******WINDOW ROUTINES
18920REM------------------------------
18930:
18940DEF FNWindow_Load(a$)=FNWindow_Get(a$,"<Make$Dir>.Templates")
18950:
18960DEF FNWindow_Get(a$,path$)
18970LOCAL c%,ic%,id%,in%,i%,x$
18980 SYS "Wimp_OpenTemplate",,path$
18990 $wimp%=a$
19000 ic%=icons%
19010 SYS "Wimp_LoadTemplate",,wimp%,icons%,icon_end%,-1,wimp%,0 TO ,,icons%
19020 id%=icons%-ic%
19030 wimp%!64=sprites%
19040 SYS "Wimp_CreateWindow",,wimp% TO c%
19050 SYS "Wimp_CloseTemplate"
19060 in%=wimp%!84
19070 in%=88+32*in%+id%
19080 IF wimp_memory%<in% THEN wimp_memory%=in%
19090 indirect%+=id%
19100 SYS "Wimp_WhichIcon",c%,wimp%+8,1+2+(1<<8),2+(1<<8)
19110CASE wimp%!8 OF
19120 WHEN -1   : sprites_only%=FALSE
19130 OTHERWISE : i%=8 : sprites_only%=TRUE
19140   REPEAT
19150   wimp%!4=wimp%!i% : wimp%!0=c%
19160   SYS "Wimp_DeleteIcon",,wimp%
19170   i%+=4
19180   UNTIL (wimp%!i%)=-1
19190ENDCASE
19200=c%
19210:
19220DEF PROCWindow_Open(window%,state%)
19230!wimp%=window%
19240IF state%=0 THEN SYS "Wimp_GetWindowState",,wimp%
19250SYS "Wimp_OpenWindow",,wimp%
19260ENDPROC
19270:
19280DEF PROCWindow_OpenUp(window%)
19290PROCWindow_Open(window%,0)
19300PROCWindow_ForceDraw(window%)
19310ENDPROC
19320:
19330DEF PROCWindow_Close(window%)
19340!wimp%=window%
19350SYS "Wimp_CloseWindow",,wimp%
19360ENDPROC
19370:
19380DEF PROCWindow_BringToTop(window%)
19390!wimp%=window%
19400SYS "Wimp_GetWindowState",,wimp%
19410wimp%!28=-1
19420SYS "Wimp_OpenWindow",,wimp%
19430ENDPROC
19440:
19450DEF PROCWindow_Redraw
19460 LOCAL more%
19470 SYS "Wimp_RedrawWindow",,wimp% TO more%
19480 PROCWindow_GetOrigin(wimp%,x0%,y0%)
19490 x_origin%=x0% : y_origin%=y0%
19500 WHILE more%
19510   IF interface% THEN SYS"Wimp_BorderWindow",,wimp%
19520   PROCEvent_DrawWindow(wimp%!0)
19530   SYS "Wimp_GetRectangle",,wimp% TO more%
19540 ENDWHILE
19550 ENDPROC
19560:
19570DEF PROCWindow_ForceDraw(window%)
19580CASE window% OF
19590 WHEN -1   : SYS "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
19600 OTHERWISE : SYS "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
19610ENDCASE
19620ENDPROC
19630:
19640DEF PROCWindow_GetOrigin(wimp%,RETURN x0%,RETURN y0%)
19650x0%=wimp%!4-wimp%!20
19660y0%=wimp%!16-wimp%!24
19670ENDPROC
19680:
19690DEF FNWindow_Title(window%)
19700 wimp%!0=window%
19710 SYS "Wimp_GetWindInfo",,wimp%
19720 IF ((wimp%!60)AND&100)=0 ERROR 1,"Title isn't indirected"
19730=$(wimp%!76)
19740:
19750DEF PROCWindow_Draw(x,y)
19760 DRAW x-x_origin%,y-y_origin%
19770ENDPROC
19780:
19790DEF PROCWindow_Move(x,y)
19800 MOVE x+x_origin%,y_origin%+y
19810ENDPROC
19820:
19830DEF PROCWindow_RectangleFill(x,y,width%,height%,colour%)
19840SYS "Wimp_SetColour",colour%
19850RECTANGLE FILL x-x_origin%,y_origin%+y,width%,height%
19860ENDPROC
19870:
19880DEF PROCWindow_Line(x,y,x1,y1)
19890 LINE x+x_origin%,y+y_origin%,x1+x_origin%,y1+y_origin%
19900ENDPROC
19910:
19920DEF PROCWindow_TAB(x,y)
19930 MOVE 16*x+x_origin%,y_origin%-32*y
19940ENDPROC
19950:
19960REM------------------------------
19970REM*******ICON ROUTINES
19980REM------------------------------
19990:
20000DEF FNIcon_Bar(Sprite$)
20010=FNIcon_Create(-1,0,0,68,68,&3002,Sprite$,0,0,0)
20020:
20030DEF FNIcon_Create(window%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
20040wimp%!0=window%
20050wimp%!4=ix%      : wimp%!8=iy%
20060wimp%!12=ix%+iw% : wimp%!16=iy%+ih%
20070wimp%!20=flag%
20080IF d1%=0 THEN $(wimp%+24)=text$ ELSE wimp%!24=d1% : wimp%!28=d2% : wimp%!32=d3%
20090SYS "Wimp_CreateIcon",,wimp% TO icon%
20100=icon%
20110:
20120DEF PROCIcon_MakeText(window%,icon%,x$)
20130 wimp%!0=window% : wimp%!4=icon%
20140 SYS "Wimp_GetIconState",,wimp%
20150 IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
20160 $(wimp%!28)=x$
20170 wimp%!0=window% : wimp%!4=icon%
20180 wimp%!8=0 : wimp%!12=0
20190 SYS "Wimp_SetIconState",,wimp%
20200ENDPROC
20210:
20220DEF FNIcon_GetText(window%,icon%)
20230 wimp%!0=window% : wimp%!4=icon%
20240 SYS "Wimp_GetIconState",,wimp%
20250 IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
20260=$(wimp%!28)
20270:
20280DEF FNIcon_Val(window%,icon%)
20290 wimp%!0=window% : wimp%!4=icon%
20300 SYS "Wimp_GetIconState",,wimp%
20310 IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
20320=$(wimp%!32)
20330:
20340DEF PROCWimp_IconMakeSprite(window%,icon%,x$)
20350 wimp%!0=window% : wimp%!4=icon%
20360 SYS "Wimp_GetIconState",,wimp%
20370 $(wimp%+28)=x$+CHR$0
20380 wimp%!0=window% : wimp%!4=icon%
20390 wimp%!8=0 : wimp%!12=0
20400 SYS "Wimp_SetIconState",,wimp%
20410ENDPROC
20420:
20430DEF PROCIcon_Enable(window%,j%)
20440wimp%!0=window% : wimp%!4=j%
20450wimp%!8=0       : wimp%!12=1<<22
20460SYS "Wimp_SetIconState",,wimp%
20470ENDPROC
20480:
20490DEF PROCIcon_Disable(window%,j%)
20500wimp%!0=window% : wimp%!4=j%
20510wimp%!8=1<<22   : wimp%!12=1<<22
20520SYS "Wimp_SetIconState",,wimp%
20530ENDPROC
20540:
20550DEF PROCPlotIcon(wimp%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
20560wimp%!0=ix%      : wimp%!4=iy%
20570wimp%!8=ix%+iw% : wimp%!12=iy%+ih%
20580wimp%!16=flag%
20590IF d1%=0 THEN $(wimp%+24)=text$ ELSE wimp%!24=d1% : wimp%!28=d2% : wimp%!32=d3%
20600SYS "Wimp_PlotIcon",,wimp%
20610ENDPROC
20620:
20630DEF PROCSprites_Load
20640LOCAL S%,T%
20650S%=OPENIN"<Obey$Dir>.Sprites":T%=EXT#S%+16:CLOSE#S%:S%=0
20660DIM sprites% T%, spname% 12
20670!sprites%=T%:sprites%!8=0
20680SYS "OS_SpriteOp",&109,sprites%
20690SYS "OS_SpriteOp",&10A,sprites%,"<Obey$Dir>.Sprites"
20700ENDPROC
20710:
20720REM------------------------------
20730REM*******MENU ROUTINES
20740REM------------------------------
20750:
20760DEF PROCMenu_AdjustOn(menu%)
20770SYS "Wimp_GetPointerInfo",,pointer_wimp%
20780IF ((pointer_wimp%!8)AND1)=1 THEN SYS "Wimp_CreateMenu",,menu%,pointer_wimp%!0,pointer_wimp%!4
20790ENDPROC
20800:
20810 DEF FNMenu_Create(menu$)
20820 LOCAL menu%
20830 DIM menu% 28+FNMenu_NoOfEntries(menu$)*24
20840=FNMenu_Build(menu%,menu$)
20850:
20860 DEF FNMenu_Build(menu%,menu$)
20870 LOCAL ypos%,width%,length%,k%
20880 menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
20890 menu%!16=140 : menu%!20=44 : menu%!24=0
20900 ptr%=menu%+28
20910 $menu%=LEFT$(menu$,INSTR(menu$,"\")-1)
20920 width%=LEN(LEFT$(menu$,INSTR(menu$,"\")-1))
20930 menu$+="\" : Menu_NoOfEntries%=0
20940 WHILE menu$<>""
20950   menu$=MID$(menu$,INSTR(menu$,"\")+1)
20960   CASE menu$ OF
20970   WHEN "":
20980   OTHERWISE:
20990     !ptr%=0 : ptr%!4=-1 : ptr%!8=&7000021
21000     length%=INSTR(menu$,"\")-1 : k%=INSTR(LEFT$(menu$,length%),">")-1
21010     IF k%<>-1 THEN length%=k%
21020     $(ptr%+12)=LEFT$(menu$,length%)
21030     IF length%>width% THEN width%=length%
21040     ptr%+=24
21050     Menu_NoOfEntries%+=1
21060   ENDCASE
21070 ENDWHILE
21080 menu%!16=16*(width%+1)
21090 ptr%!-24=ptr%!-24 OR &80 : REM...Last item
21100 =menu%
21110:
21120 DEF PROCMenu_Build(RETURN Menus%(),Menu$(),i%)
21130  LOCAL ypos%,width%,length%,k%,j%,item$
21140 $Buffer%=""
21150 REMj%=DIM(Menus%(),1)
21160 REMWHILE Menu$(i%,j%)="" : j%-=1 : ENDWHILE
21170 j%=NoOfSubmenus%(i%)
21180 ptr%=Menu_Block%
21190 REPEAT
21200 menu%=ptr%  : Menus%(j%)=menu% : menu$=Menu$(i%,j%)
21210 menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
21220 menu%!16=140 : menu%!20=44 : menu%!24=0
21230 ptr%=menu%+28
21240 $menu%=LEFT$(menu$,INSTR(menu$,"\")-1)
21250 width%=LEN(LEFT$(menu$,INSTR(menu$,"\")-1))
21260 menu$+="\" : Menu_NoOfEntries%=0
21270 WHILE menu$<>""
21280   menu$=MID$(menu$,INSTR(menu$,"\")+1)
21290   CASE menu$ OF
21300   WHEN ""
21310   OTHERWISE:
21320     !ptr%=0 : ptr%!4=-1 : ptr%!8=&7000021
21330     length%=INSTR(menu$,"\")-1
21340     k%=INSTR(LEFT$(menu$,length%),">")
21350     CASE k% OF
21360     WHEN 0:
21370     OTHERWISE:
21380      item$=MID$(menu$,k%+1,length%-k%)
21390      s%=VAL(item$)
21400      IF s%<100 THEN ptr%!4=Menus%(s%) ELSE ptr%!4=s%
21410      length%=k%-1
21420     ENDCASE
21430     $(ptr%+12)=LEFT$(menu$,length%)
21440     IF length%>width% THEN width%=length%
21450     ptr%+=24
21460     Menu_NoOfEntries%+=1
21470   ENDCASE
21480 ENDWHILE
21490 menu%!16=16*(width%+1)
21500 ptr%!-24=ptr%!-24 OR &80 : REM...Last item
21510 j%-=1
21520 PROCMenu_Write(menu%,Menu_NoOfEntries%,Buffer%,-1,Buffer_Length%)
21530 UNTIL j%=0
21540 Menus%(0)=FNMenu_Build(ptr%,Menu$(i%,0))
21550 PROCMenu_Glue(Menus%(0),2,Menus%(1))
21560 CASE Open%(i%) OF
21570  WHEN TRUE : PROCMenu_Tick(Menus%(0),3)
21580  OTHERWISE : PROCMenu_ATick(Menus%(0),3,0)
21590 ENDCASE
21600 CASE Exit%(i%) OF
21610  WHEN TRUE : PROCMenu_Tick(Menus%(0),4)
21620  OTHERWISE : PROCMenu_ATick(Menus%(0),4,0)
21630 ENDCASE
21640 CASE i% OF
21650  WHEN 0 : PROCMenu_Glue(Menus%(0),3,Wind_Menu%)
21660 ENDCASE
21670 PROCMenu_ForeGroundColour(Menus%(0),1,4)
21680 PROCMenu_ForeGroundColour(Menus%(0),2,4)
21690 PROCMenu_TitleForegroundColour(Menus%(0),4)
21700 PROCMenu_TitleBackgroundColour(Menus%(0),1)
21710 ENDPROC
21720:
21730 DEF PROCMenu_Close
21740  SYS "Wimp_CreateMenu",-1
21750 ENDPROC
21760:
21770 DEF FNMenu_Item(level%)=(wimp%!(4*level%))+1
21780:
21790 DEF FNMenu_NoOfEntries(menu$)
21800 LOCAL n% ,j% : n%=0 : j%=0
21810 REPEAT
21820  j%=INSTR(menu$,"\",j%+1)
21830  IF j%<>0 THEN n%+=1
21840 UNTIL j%=0
21850=n%
21860:
21870DEF PROCBarMenu_PopUp(x%,y%)
21880LOCAL n% : n%=0
21890 WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
21900 n%+=1
21910 ENDWHILE
21920 SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,160+n%*44
21930 menu%=Bar_Menu%
21940ENDPROC
21950:
21960DEF PROCMenu_PopUp(Menu%,x%,y%)
21970 menu%=Menu%
21980 SYS "Wimp_CreateMenu",,menu%,x%-64,y%+20
21990ENDPROC
22000:
22010 DEF PROCMenu_Glue(menu1%,item%,menu2%)
22020 menu1%!(8+item%*24)=menu2%
22030 ENDPROC
22040:
22050 DEF PROCMenu_UnGlue(menu1%,item%)
22060 menu1%!(8+item%*24)=-1
22070 ENDPROC
22080:
22090 DEF PROCMenu_Message(menu%,item%)
22100 menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR(1<<3)
22110 ENDPROC
22120:
22130 DEF PROCMenu_Tick(menu%,item%)
22140 menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR1
22150 ENDPROC
22160 :
22170 DEF PROCMenu_ATick(menu%,item%,i%)
22180 LOCAL x% : x%=menu%!(28+(item%-1)*24) : x%=x%>>>1 : x%=x%<<1
22190 CASE i% OF
22200  WHEN 1 : x%=x%+1
22210 ENDCASE
22220 menu%!(28+(item%-1)*24)=x%
22230 ENDPROC
22240 :
22250 DEF PROCMenu_DottedLine(menu%,item%)
22260 menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR2
22270 ENDPROC
22280 :
22290 DEF PROCMenu_ForeGroundColour(menu%,item%,colour%)
22300 menu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))DIV16)
22310 ENDPROC
22320 :
22330 DEF PROCMenu_BackGroundColour(menu%,item%,colour%)
22340 LOCAL fore%,rem%
22350 fore%=(menu%?(39+(item%-1)*24))MOD16
22360 rem%=((menu%?(39+(item%-1)*24))DIV16)MOD16
22370 menu%?(39+(item%-1)*24)=fore%+16*colour%+rem%
22380 ENDPROC
22390 :
22400 DEF PROCMenu_ColourItem(menu%,item%,colour%)
22410 menu%?(39+(item%-1)*24)=colour%
22420 ENDPROC
22430 :
22440  DEF FNColour(i%)
22450 LOCAL j%
22460 CASE TRUE OF
22470   WHEN i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
22480   OTHERWISE                        : j%=0
22490 ENDCASE
22500 =i%*16+j%
22510 :
22520 DEF PROCColourTick(number%)
22530 PROCTick(Colours%,number%+1)
22540 SYS "Wimp_CreateSubMenu",,Colours%,wimp%!24,wimp%!28
22550 PROCTick(Colours%,number%+1)
22560 ENDPROC
22570 :
22580 DEF FNWimp_ColourMenu=FNWimp_ColoursMenu("    ")
22590 :
22600 DEF FNWimp_ColoursMenu(title$)
22610 LOCAL x$,men%,j%
22620 x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
22630 men%=FNMenu_Create(x$)
22640 FOR i%=0 TO 15
22650 CASE TRUE OF
22660   WHEN i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
22670   OTHERWISE                        : j%=0
22680 ENDCASE
22690   PROCMenu_ColourItem(men%,i%+1,i%*16+j%)
22700   PROCMenu_Centre(men%,i%+1)
22710 NEXT
22720 =men%
22730 :
22740 DEF PROCMenu_Centre(menu%,item%)
22750 menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<3)
22760 ENDPROC
22770 :
22780 DEF PROCMenu_Disable(menu%,item%)
22790 menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<22)
22800 ENDPROC
22810 :
22820 DEF PROCMenu_Enable(menu%,item%)
22830 PROCMenu_Disable(menu%,item%)
22840 menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)EOR(1<<22)
22850 ENDPROC
22860 :
22870 DEF PROCMenu_Write(menu%,item%,buffer%,val%,BufferLength%)
22880 menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR4
22890 menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR&100
22900 menu%!(40+(item%-1)*24)=buffer%
22910 menu%!(44+(item%-1)*24)=val%
22920 menu%!(48+(item%-1)*24)=BufferLength%
22930 ENDPROC
22940 :
22950 DEF PROCMenu_Title(menu%,title$)
22960 $menu%=LEFT$(title$,12)+CHR$0
22970 ENDPROC
22980 :
22990 DEF PROCMenu_TitleForegroundColour(menu%,colour%)
23000 menu%?12=colour%
23010 ENDPROC
23020 :
23030 DEF PROCMenu_TitleBackgroundColour(menu%,colour%)
23040 menu%?13=colour%
23050 ENDPROC
23060 :
23070 DEF PROCMenu_Item(menu%,item%,item$)
23080 $(menu%+(40+(item%-1)*24))=LEFT$(item$,12)+CHR$0
23090 ENDPROC
23100:
23110REM------------------------------
23120REM*******FILE ROUTINES
23130REM------------------------------
23140:
23150DEF FNFile_Type
23160 CASE wimp%!40 OF
23170  WHEN &FFF :="Text"
23180  WHEN &FFD :="Data"
23190  WHEN &FFB :="Basic"
23200  WHEN &FF9 :="Sprite"
23210  WHEN &FED :="Palette"
23220  WHEN &FEC :="Template"
23230  WHEN &AFF :="Draw"
23240  WHEN &1000:="Folder"
23250  WHEN &2000:="Application"
23260  OTHERWISE=STR$~(wimp%!40)
23270 ENDCASE
23280:
23290DEF FNFile_PathName=FNGet_StringAtAddress(wimp%+44)
23300:
23310DEF FNFile_Load(f$)
23320 LOCAL S%,T%
23330 DIM offset% 4
23340 S%=OPENIN f$
23350 T%=EXT#S%+16
23360 PTR#S%=0
23370 SYS "OS_GBPB",4,S%,offset%,4
23380 CLOSE#S%:S%=0
23390 CASE offset%!0 OF
23400  WHEN    -1:DIM file% T%:S%=TRUE
23410  OTHERWISE :S%=FALSE
23420 ENDCASE
23430 =S%
23440
23450:
23460DEF FNGet_StringAtAddress(ptr%)
23470 LOCAL s$ : s$=""
23480 WHILE (?ptr%<>13)AND(?ptr%<>0) : s$+=CHR$(?ptr%): ptr%+=1 :ENDWHILE:
23490 =s$
23500:
23510DEF FNGet_StringFromPath(f$)
23520IF INSTR(f$,".")=0 THEN=f$ELSE=FNGet_StringFromPath(RIGHT$(f$,LEN(f$)-INSTR(f$,".")))
23530:
23540REM------------------------------
23550REM*******SPRITE ROUTINES
23560REM------------------------------
23570REM
23580:
23590REM------------------------------
23600REM*******MISCELLANEOUS
23610REM------------------------------
23620:
23630DEF PROCWimp_Alert(title$,message$,button%)
23640REM...Places alert box with title and message on screen.
23650REM...See page 1243 RiscOs manual.
23660LOCAL response%
23670$(wimp%+4)=message$
23680CASE button% OF
23690  WHEN 2    : response%=1     : REM...Error Box
23700  WHEN 1    : response%=15    : REM...OK and CANCEL butons
23710  WHEN 3    : response%=(1<<5)+16
23720  WHEN 4    : response%=(1<<6)+16
23730  OTHERWISE : response%=16    : REM...OK button only
23740ENDCASE
23750SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
23760ENDPROC
23770:
23780DEF FNCancelBox(title$,message$)
23790 $(wimp%+4)=message$
23800 response%=23
23810 SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
23820=response%
23830:
23840DEF FNWimp_BASICParameters
23850 LOCAL com$,param$,I%
23860 SYS "OS_GetEnv" TO com$
23870 params$=""
23880 I%=INSTR(com$," -quit ")
23890 IF I% THEN params$=MID$(com$,INSTR(com$," ",I%+LEN" -quit ")+1)
23900=params$
23910DEF PROCWimp_ErrorBox(title$,message$)
23920PROCWimp_Alert(title$,message$,2)
23930ENDPROC
23940:
23950DEF PROCAlertBox(title$,message$)
23960PROCWimp_Alert(title$,message$,0)
23970ENDPROC
23980:
23990DEF PROCWimp_CancelBox(title$,message$)
24000PROCWimp_Alert(title$,message$,1)
24010ENDPROC
24020:
24030:
24040DEF FNWimp_ReadVariable(Variable$)
24050LOCALlen%,result%,variable%
24060$wimp%=Variable$
24070SYS"OS_ReadVarVal",wimp%,wimp%+255,255,,3 TO,,len%
24080wimp%?(len%+255)=13
24090=$(wimp%+255)
24100:
24110DEF PROCWimp_SendToEdit(file$)
24120LOCAL n%
24130wimp%!4=&6CC01C0C
24140wimp%!16=5
24150wimp%!36=0
24160wimp%!40=&FFF
24170$(wimp%+44)=file$+CHR$0
24180n%=LENfile$+45
24190IF n%MOD4 THEN !wimp%=4+(n%>>2)<<2 ELSE !wimp%=n%
24200SYS "Wimp_SendMessage",17,wimp%,0
24210ENDPROC
24220:
24230DEF PROCWimp_SpritesLoad
24240REM|This loads a file called Sprites from the
24250REM|path
24260REM|            <Obey$Dir>.Sprites
24270REM|
24280REM|
24290PROCWimp_SpritesPathLoad("<Obey$Dir>.Sprites")
24300ENDPROC
24310:
24320DEF PROCWimp_SpritesPathLoad(pathname$)
24330REM|This loads a sprites file with full name
24340REM|given by pathname$. E.g.
24350REM|
24360REM|    PROCWimp_SpritesPathLoad("$.Pictures")
24370REM|
24380LOCALS%,T%
24390S%=OPENIN pathname$:T%=EXT#S%+16:CLOSE#S%:S%=0
24400DIMsprites%T%,spname%12
24410!sprites%=T%:sprites%!8=0
24420SYS"OS_SpriteOp",&109,sprites%
24430SYS"OS_SpriteOp",&10A,sprites%,pathname$
24440ENDPROC
24450:
24460DEF PROCWimp_SpritesPlot(sprite$)
24470REM|
24480REM|
24490REM|
24500REM|
24510REM|
24520SYS"OS_SpriteOp",&11C,sprites%,sprite$,,,0
24530ENDPROC
24540:
24550DEF PROCWimp_SpritesDelete(sprite$)
24560REM|
24570REM|
24580REM|
24590REM|
24600REM|
24610SYS"OS_SpriteOp",&119,sprites%,sprite$
24620ENDPROC
24630:
24640DEF PROCWimp_SpritesRename(sprite$,name$)
24650REM|
24660REM|
24670REM|
24680REM|
24690REM|
24700SYS"OS_SpriteOp",&11A,sprites%,sprite$,name$
24710ENDPROC
24720:
24730DEFFNicon_newsprite(b,whandle%,ihandle%,newname$,redraw)
24740b!0=whandle%:b!4=ihandle%
24750SYS "Wimp_GetIconState",,b
24760SYS "Wimp_DeleteIcon",,b
24770b!4=b!8:b!8=b!12:b!12=b!16:b!16=b!20:b!20=b!24:$(b+24)=newname$
24780SYS "Wimp_CreateIcon",,b TO ihandle%
24790IF redraw THEN SYS "Wimp_ForceRedraw",b!0,b!4,b!8,b!12,b!16
24800=ihandle%
24810:
24820DEF FNWimp_ReadVariable(Variable$)
24830LOCALlen%,result%,variable%
24840$wimp%=Variable$
24850SYS"OS_ReadVarVal",wimp%,wimp%+255,255,,3TO,,len%
24860wimp%?(len%+255)=13
24870=$(wimp%+255)
24880:
24890DEF PROCcode
24900DIM append% 24
24910FOR K%=0 TO 1:P%=append%:[OPT 2*K%
24920.nextbyte
24930 MOV R1,R6:SWI "OS_BGet"
24940 MOVCS PC,R14
24950 MOV R1,R5:SWI "OS_BPut"
24960 B nextbyte
24970]:NEXT
24980ENDPROC

#�------------------------------
�       MAIN PROGRAM
#�------------------------------
(�
2
<1 block_memory%=30*1024 : icon_memory%=20*1024
F wimp_memory%=0:indirect%=0
P :
Z  Task$=�Wimp_Start("WimpEd")
d   �Create_Windows
n   �Create_Icons
x   �Create_Menus
�   �Create_Initialise
� 
�? �Wimp_WaitForEvent(draw%+mouse%+menu%+message%+drag%+key%)
� �Wimp_CloseDown
��
�:
�#�------------------------------
�#�------------------------------
�#�  INDEX OF EVENTS TO DEAL WITH
�#�------------------------------
�#�------------------------------
��
��Event0 :  THE NULL EVENT
&�Event1 :  DRAWING WINDOWS REQUEST
"�Event2 :  OPEN WINDOW REQUEST
#�Event3 :  CLOSE WINDOW REQUEST
"%�Event4 :  POINTER LEAVING WINDOW
,&�Event5 :  POINTER ENTERING WINDOW
6�Event6 :  MOUSE CLICKS
@�Event7 :  DRAGS
J�Event8 :  KEY PRESSES
T�Event9 :  MENU CHOICES
^�Event10:  SCROLL REQUESTS
h�Event11:  LOSE CARET
r�Event12:  GAIN CARET
|�
��Events17/18/19:  MESSAGES
��!
�#�------------------------------
�#�------------------------------
�:
�:
�#�------------------------------
��       INITIAL PROCEDURES
�#�------------------------------
�:
�� �Create_Windows
�& Info_Window%=�Window_Load("info")
�& Save_Window%=�Window_Load("save")
�
:
� �Create_Icons
&# Bar_Icon%=�Icon_Bar("!WimpEd")
0�
::
D� �Create_Menus
NN  Bar_Menu%=�Menu_Create("WimpEd\Info\Choices\Windows\Icon Bar\Save\Quit")
XW  Choice_Menu%=�Menu_Create("Choices\No REMs\Terse\Library\LoadToEditor\Interface")
b*  �Menu_Glue(Bar_Menu%,1,Info_Window%)
l*  �Menu_Glue(Bar_Menu%,2,Choice_Menu%)
v*  �Menu_Glue(Bar_Menu%,5,Save_Window%)
�   �Menu_Disable(Bar_Menu%,3)
�   �Menu_Disable(Bar_Menu%,4)
�#  �Menu_DottedLine(Bar_Menu%,2)
�#  �Menu_DottedLine(Bar_Menu%,4)
�&  �Menu_DottedLine(Choice_Menu%,4)
�  col%=�Wimp_ColourMenu
��
�:
�� �Create_Initialise
�
 �code
�! wimp_memory%=0 : indirect%=0
�7 Template$="" : SSprite$="" : Sprite$=""  : next%=0
�  Name$="Task" : interface%=�
< NoOfMenus%=16 : NoOfItems%=16 : NoOfWindows%=0 : Bar%=�
 NoOfColourMenus%=0
F Buffer_Length%=12  : prolix%=� : terse%=� : cmenu%=0 : Library%=�
  Editor%=�
* � Buffer% Buffer_Length%
4 � Buffer1% Buffer_Length%
> � Buffer2% Buffer_Length%
H- � Menus%(NoOfMenus%) : � ColourMenu%(16)
R0 � Menu_Block% NoOfMenus%*(28+NoOfItems%*24)
\* � date% 50 : � Type$(16) : Type$()=""
f) make$=�Wimp_ReadVariable("Make$Dir")
p file$=make$+".Data"
z file%=�(file$)
�, �#file%,prolix%,terse%,Library%,Editor%
� �#file%:file%=0
�. � �(prolix%) � �Menu_Tick(Choice_Menu%,1)
�* � terse% � �Menu_Tick(Choice_Menu%,2)
�, � Library% � �Menu_Tick(Choice_Menu%,3)
�+ � Editor% � �Menu_Tick(Choice_Menu%,4)
��
�:
�#�------------------------------
�&�Event1 :  DRAWING WINDOWS REQUEST
�#�------------------------------
�:
� � �Event_DrawWindow(window%)
�
:
#�------------------------------
$�Event6 :  MOUSE CLICKS
.#�------------------------------
8:
B<� �Event_DealWithMouseClick(button%,window%,icon%,x%,y%)
LȎ button% �
V- � 2    : �PopUpMenu(window%,icon%,x%,y%)
`0  : � interface% ș"Wimp_BorderIcon",,wimp%
j�
t�
~:
�& � �PopUpMenu(window%,icon%,x%,y%)
�: � window%=0 � xxx%=640 : yyy%=512 � xxx%=x% : yyy%=y%
�	 � i%
�  Ȏ window% �
�   � Bar_Window%
�    Ȏ icon% �
�,     � Bar_Icon% : �BarMenu_PopUp(x%,y%)
�	    �
�   
�
    i%=-1
�    � i%+=1
�>      � window%=Window%(i%) � �WindowsMenu_PopUp(i%,x%,y%)
3    � (i%=NoOfWindows%) � (window%=Window%(i%))

  �
 �
 :
($  � �WindowsMenu_PopUp(i%,x%,y%)
2
  � n%
<   xx%=x% : yy%=y%
F   window_menu%=i%
P'   �Menu_Build(Menus%(),Menu$(),i%)
Z#   �Menu_PopUp(Menus%(0),x%,y%)
d  �
n:
x#�------------------------------
��Event7 :  DRAGS
�#�------------------------------
�:
�#�------------------------------
��Event8 :  KEY PRESSES
�#�------------------------------
�:
�3� �Event_DealWithKeyPressed(window%,icon%,key%)
�
Ȏ key% �
�
 � 13   :
�&  : ș "Wimp_ProcessKey",wimp%!24
��
��
:
#�------------------------------
�Event9 :  MENU CHOICES
"#�------------------------------
,:
6� �Event_DealWithMenuChoice
@ Ȏ menu% �
J%  � Bar_Menu% : �DealWithBar_Menu
T%  � Edit_Menu%: �DealWithEditMenu
^0        : �DealWithWindowMenu(window_menu%)
h �
r�
|:
� � �DealWithEditMenu
�   menu$=Menu$(Wind%,Menu%)
�  Ȏ �Menu_Item(0) �
�7   � 1 :  Menu$(Wind%,Menu%)=�EditItem(menu$,Item%)
�   � 2 :  �DeleteItem
�    � 3 :  Ȏ �Menu_Item(1) �
�$               � 1 :�InsertAbove
�             �
�    � 4 :  Ȏ �Menu_Item(1) �
�)              � 0    : �RemoveSubMenu
�&              � 1    : �AddSubMenu
�)              � 2    : �AddColourMenu
�!               : �WindowLeaf
             �
  �
%  � Wind%=0 � xxx%=640 : yyy%=512
&)  �WindowsMenu_PopUp(Wind%,xxx%,yyy%)
0 �
::
D    � �AddColourMenu
N!     � i%,j%,k% : i%=0 : j%=0
X      men$=Menu$(Wind%,Menu%)
b7     � : i%+=1 : j%=�menu$,"\",j%+1) : � i%=Item%+1
l     i%=�Wimp_ColourMenu
v;     men$=�men$,j%-1)+">"+�(i%)+"C"+�men$,�(men$)-j%+1)
�      Menu$(Wind%,Menu%)=men$
�	    �
�:
�    � �EditItem(menu$,k%)
�-    � i%,j%,s%,item$,insert$: i%=0 : j%=0
� 
�    insert$=$Buffer%
�    Ȏ insert$ �
�    � "" : =menu$
�	    
�1    � : i%+=1 : j%=�menu$,"\",j%+1) : � i%=k%
�    i%=�menu$,"\",j%+1)
�"    item$=�menu$,j%+1,i%-j%-1)
    s%=�item$,">")+j%
       Ȏ s% �
        � j%   :
          :
*-         insert$=insert$+�menu$,s%,i%-s%)
4'         s%=�(�menu$,s%+1,i%-s%-1))
>1         � s%<100 � �ChangeTitle(s%,$Buffer%)
H       �
R/    =�menu$,j%)+insert$+�menu$,�menu$-i%+1)
\	    �
f:
p"    � �ChangeTitle(s%,insert$)
z*     � i%,men$  : men$=Menu$(Wind%,s%)
�     i%=�men$,"\")
�2     Menu$(Wind%,s%)=insert$+�men$,�men$-i%+1)
�	    �
�:
�    � �RemoveSubMenu
�     � i%,j% : i%=0 : j%=0
�!     menu$=Menu$(Wind%,Menu%)
�5     � : i%+=1 : j%=�menu$,"\",j%+1) : � i%=Item%
�     i%=�menu$,"\",j%+1)
�#     item$=�menu$,j%+1,i%-j%-1)
�     s%=�item$,">")
�     Ȏ s% �
�      � 0    :
	'                 Ȏ �Menu_Item(1) �
	+                   � 1    : �AddSubMenu
	&                    : �WindowLeaf
	$                 �
	.
       :
	84       Ȏ �CancelBox(Task$,"Delete Submenus?") �
	B)        � 1 : s%=�(�item$,�item$-s%))
	L5                 � s%<100 � �RemoveTree(Wind%,s%)
	V'                 Ȏ �Menu_Item(1) �
	`+                   � 1    : �AddSubMenu
	j&                    : �WindowLeaf
	t                 �
	~ 
	�       �
	�
     �
	�	    �
	�:
	�    � �AddSubMenu
	�     � i%,j% : i%=0 : j%=0
	�      NoOfSubmenus%(Wind%)+=1
	�!     menu$=Menu$(Wind%,Menu%)
	�7     � : i%+=1 : j%=�menu$,"\",j%+1) : � i%=Item%+1
	�I     menu$=�menu$,j%-1)+">"+�NoOfSubmenus%(Wind%)+�menu$,�menu$-j%+1)
	�!     Menu$(Wind%,Menu%)=menu$
	�E     Menu$(Wind%,NoOfSubmenus%(Wind%))=$Buffer%+"\"+$Buffer1%+"\"
	    �

:
    � �WindowLeaf
     � i%,j% : i%=0 : j%=0
(!     menu$=Menu$(Wind%,Menu%)
2'     wind%=Window%(�Menu_Item(1)-2)
<7     � : i%+=1 : j%=�menu$,"\",j%+1) : � i%=Item%+1
F>     menu$=�menu$,j%-1)+">"+�(wind%)+�menu$,�(menu$)-j%+1)
P!     Menu$(Wind%,Menu%)=menu$
Z	    �
d:
n   � �DeleteItem
x&    � i%,j%,k%,item$ : i%=0 : j%=0
�     menu$=Menu$(Wind%,Menu%)
�4    � : i%+=1 : j%=�menu$,"\",j%+1) : � i%=Item%
�    i%=�menu$,"\",j%+1)
�;    Menu$(Wind%,Menu%)=�menu$,j%-1)+�menu$,�menu$-i%+1)
�"    item$=�menu$,j%+1,i%-j%-1)
�    k%=�item$,">")
�    Ȏ k% �
�     � 0    :
�      :
�      s%=�(�item$,�item$-k%))
�     Ȏ s%<100 �
�      � �:
�<      tot%=0:�RemoveTree(Wind%,s%):�UpdateTree(Wind%,s%)
$      NoOfSubmenus%(Wind%)-=tot%

     �
	    �
"   �
,:
6    � �RemoveTree(Wind%,k%)
@    � i%,j% : i%=0
J	    �
T&     i%=�Menu$(Wind%,k%),">",i%+1)
^6     j%=�(�Menu$(Wind%,k%),�(Menu$(Wind%,k%))-i%))
h1     � i%<>0 � j%<100 � �RemoveTree(Wind%,j%)
r    � i%=0
|$    Menu$(Wind%,k%)="" : tot%+=1
�	    �
�:
�    � �UpdateTree(Wind%,s%)
�    � i%
�    Ȏ s% �
�!     � NoOfSubmenus%(Wind%) :
�      : i%=s%
�E      � : i%+=1 : � Menu$(Wind%,i%)<>"" � i%>NoOfSubmenus%(Wind%)
�      Ȏ � �
�'       � i%<=NoOfSubmenus%(Wind%) :
�+        Menu$(Wind%,s%)=Menu$(Wind%,i%)
�        Menu$(Wind%,i%)=""
�!        �Relabel(Wind%,s%,i%)
      �

     �
<     � s%<NoOfSubmenus%(Wind%) � �UpdateTree(Wind%,s%+1)
&
     �
0:
:      � �Relabel(Wind%,s%,i%)
D1     � j%,k%,t%,x$,y$ : j%=0 : x$=">"+�i%+"\"
N>     � : j%+=1 : k%=�Menu$(Wind%,j%),x$) : � k%<>0 � j%>s%
X,     y$=Menu$(Wind%,j%) : t%=�y$,"\",k%)
b2     Menu$(Wind%,j%)=�y$,k%)+�s%+�y$,�y$-t%+1)
l
     �
v:
�   � �InsertAbove
�     � i%,j% : i%=0 : j%=0
�!     menu$=Menu$(Wind%,Menu%)
�5     � : i%+=1 : j%=�menu$,"\",j%+1) : � i%=Item%
�9     menu$=�menu$,j%)+$Buffer2%+"\"+�menu$,�menu$-j%)
�!     Menu$(Wind%,Menu%)=menu$
�   �
�:
� � �DealWithBar_Menu
� � file%
�  Ȏ �Menu_Item(0) �
�   � 1 :
�

   � 2 : Ȏ �Menu_Item(1) �

*             � 1 :  prolix%=�(prolix%)

5                       �Menu_Tick(Choice_Menu%,1)

 4                       Ȏ �(prolix%) � �terse% �

*                        � �

4,                        terse%=�(terse%)

>6                        �Menu_Tick(Choice_Menu%,2)

H                       �

R0                       �Menu_AdjustOn(menu%)

\(             � 2 :  terse%=�(terse%)

f5                       �Menu_Tick(Choice_Menu%,2)

p2                       Ȏ �terse% � �prolix% �

z                        � �

�,                        prolix%=�prolix%

�6                        �Menu_Tick(Choice_Menu%,1)

�                       �

�0                       �Menu_AdjustOn(menu%)

�,             � 3 :  Library%=�(Library%)

�5                       �Menu_Tick(Choice_Menu%,3)

�0                       �Menu_AdjustOn(menu%)

�*             � 4 :  Editor%=�(Editor%)

�5                       �Menu_Tick(Choice_Menu%,4)

�0                       �Menu_AdjustOn(menu%)

�             � 5 :

�     *set interface$ true

�O     *if "<System$Path>" = "" then Error 0 System resources cannot be found
>     *RMEnsure SharedCLibrary 0 RMLoad System:modules.CLib
8     *RMEnsure SharedCLibrary 0 set interface$=false
H     *RMEnsure InterfaceManager 1.25 RMLoad System:modules.Interface
$=     *RMEnsure InterfaceManager 1.25 set interface$ false
..     Ȏ �Wimp_ReadVariable("interface$") �
8      � "true" :
B$        interface%=�(interface%)
L&        �Menu_Tick(Choice_Menu%,5)
V!        �Menu_AdjustOn(menu%)
`
       :
jF        �AlertBox("WimpEd","Interface module couldn't be loaded!")
t
     �
~            �
�   � 3 :
�    Ȏ �Menu_Item(1) �
�     � 0    :
�      : itm%=�Menu_Item(1)
�6                 �Window_BringToTop(Window%(itm%))
�*                 �Menu_AdjustOn(menu%)
�	    �
�   � 4 : Ȏ NoOfWindows% �
�F             � 0    : �AlertBox(Task$,"No templates file loaded!")
�              :
�8             ș "Wimp_GetPointerInfo",,pointer_wimp%
�+             Ȏ ((pointer_wimp%!8)�1) �
$              � 1    : Ȏ Bar% �

!                          � �
T                           Ȏ �CancelBox(Task$,"No icon to be placed on Bar?") �
$                            � 1:
(8                             �Menu_Tick(Bar_Menu%,4)
2'                             Bar%=�
<                            �
F                          �
P6               :� �Bar% � �Menu_Tick(Bar_Menu%,4)
Z#                         Bar%=�
d:                         �WindowsMenu_PopUp(0,640,512)
n             �
x            �
�   � 5 :
�   � 6 : �Wimp_Quit
�  �
� �
�:
�# � �DealWithWindowMenu(window%)
� � item%
� Buffer$=$Buffer%
� Ȏ �Menu_Item(0) �
�  � 1 :
�           Ȏ window% �
�0            �  0   : ș "Wimp_CreateMenu",-1
�3             : �Window_Close(Window%(window%))
           �
  � 2 :
   Ȏ �Menu_Item(1) �
"+    � 0    : �DeleteWindowMenu(window%)
,'     : �DealWithSelection(window%)
6   �
@  � 3 :
J           Ȏ window% �
T            �  0   :
^$             item%=�Menu_Item(1)
h             Ȏ item% �
r              � 0:
|              :
�0              Click%(item%)=�(Click%(item%))
�.              �Menu_Tick(Wind_Menu%,item%)
�/              �WindowsMenu_PopUp(0,640,512)
�             �
�4             : Open%(window%)=�(Open%(window%))
�           �
�,  � 4 : Exit%(window%)=�(Exit%(window%))
� �
� �
�:
�! � �DeleteWindowMenu(window%)
�	 � i%
�@  Ȏ �CancelBox(Task$,"Delete "+Window$(window%)+" menu?") �
,   � 1 : � i%=1 � NoOfSubmenus%(window%)
%             Menu$(window%,i%)=""
            �
&5            Menu$(window%,1)=Window$(window%)+"\"
0   � 2 :
:  �
D �
N:
X" � �DealWithSelection(window%)
b& � menu$,x$,i%,j%,k% : j%=1 : i%=1
l menu$=Menu$(window%,1)
v ȕ �Menu_Item(j%)<>0
�'  menu$=�Menu(menu$,�Menu_Item(j%))
�  k%=i%
�0  i%=�menu$,">") : i%=�(�menu$,�(menu$)-i%))
�(  � i%<100 � menu$=Menu$(window%,i%)
�  j%+=1
� �
�< j%=�Menu_Item(j%-1) : menu$=�Menu(Menu$(window%,k%),j%)
� Ȏ menu$ �
�  � ""   :  Ȏ Buffer$ �
�                �   "" :
�                 :
�-                 �AddMenuItem(window%,k%)
�6                 � window%=0 � xxx%=640 : yyy%=512
?                 �WindowsMenu_PopUp(window_menu%,xxx%,yyy%)
               �
'   :  �EditMenuItem(window%,k%,j%)
  �
* �
4 :
>" � �AddMenuItem(window%,menu%)
H	 � k%
R"  Ȏ (window%=0) � (menu%=1) �
\	  � �
f   k%=�Menu$(0,1),"\Quit\")
p2   Menu$(0,1)=�Menu$(0,1),k%)+Buffer$+"\Quit\"
z	  � �
�(   Menu$(window%,menu%)+=Buffer$+"\"
�  �
� �
� :
�( � �EditMenuItem(window%,men%,item%)
�  i%=�menu$,">")
�"  � i%<>0 � menu$=�menu$,i%-1)
�2  $Buffer%=menu$ : $Buffer1%="" : $Buffer2%=""
�.  Wind%=window% : Menu%=men% : Item%=item%
�%  ș "Wimp_GetPointerInfo",,wimp%
�-  �Menu_PopUp(Edit_Menu%,wimp%!0,wimp%!4)
� �
� :
 � �Menu(menu$,item%)

  � i%,k%
  k%=0 : i%=0
$  �
."   k%=�menu$,"\",k%+1) : i%+=1
8  � i%=item%
B  i%=�menu$,"\",k%+1)
L7  � i%=0 �=�menu$,�menu$-k%) �=�menu$,k%+1,i%-k%-1)
V :
`#�------------------------------
j�Events17/18/19:  MESSAGES
t$�----------- -------------------
~:
�'� �Event_DealWithMessages(message%)
�Ȏ message% �
�#  � message_quit%  : �Wimp_Quit
�>  � message_save%  : �DealWithSavingOfFile(�File_PathName)
�/  � message_load%  : �DealWithLoadingOfFile
�'  � &400C0         : window_menu%=0
��
��Menu_Close
��
�:
�# � �DealWithSavingOfFile(file$)
�   ș "Hourglass_On"
   file%=�(make$+".Data ")

/   �#file%, prolix%,terse%,Library%,Editor%
   �#file%:file%=0
   � c$ : c$="F~C~V"
(H   �("*CDIR "+file$)                : � Create Application Directory
2J   � Template$<>"" � �("* COPY "+Template$+" "+file$+".Templates "+c$)
<E   � Sprite$<>""   � �("*COPY "+Sprite$+" "+file$+".Sprites "+c$)
F   Ȏ SSprite$ �
P    � ""  :
ZE     �("*COPY "+make$+".Library.!Sprites "+file$+".!Sprites "+c$)
d
    :
n7     �("*COPY "+SSprite$+" "+file$+".!Sprites "+c$)
x   �
�   �Create_RunFile(file$)
�   �Create_HelpFile(file$)
�   �Create_RunImage(file$)
�   ș "Hourglass_Off"
�   Ȏ Library% �
�
    � � :
�"     f$=make$+".Library.WimpB"
�     c$="F~C~V"
�*     �("*COPY "+f$+" "+g$+".Wimp "+c$)
�     :
�"      f$=make$+".Library.Wimp"
�2�   s%=OPENIN f$ : t%=EXT#s% : CLOSE#s% : s%=0
�'�   OSCLI("LOAD "+f$+" "+STR$~ptr%)
�   ptr%+=t%
"      F%=�(file$+".!RunImage")
      �#F%=�#F%
"      G%=�(f$)
,0�      PTR#F%=PTR#F% - 2:REM for BASIC files
6      � append%
@1�   REPEAT:B%=BGET#G%:BPUT#F%,B%:UNTIL EOF#G%
J      �#F%:F%=0
T      �#G%:G%=0
^   �
h
r Ȏ Editor% �
|	  � �
�   *set Dialogue$ yes
�1   *RmEnsure Dialogue  0.00 *set Dialogue$ no
�,    Ȏ �Wimp_ReadVariable("Dialogue$") �
�     � "yes"
�|      �("WimpTask MESSAGE StrongED2_OpenDoc "+file$+".!RunImage 128 960 528 520 0 0 -wrap 80 -wordwrap -bcol 7 -fcol 0")
�	    �
�+   �Wimp_SendToEdit(file$+".!RunImage")
�  �
�
� �
�:
�  � �Create_RunFile(file$)
�:  � ptr% : ptr%=wimp% : application$=��GetLeaf(file$))
  �Add_Line("",0)
@  �Add_Line("| ----------------------------"+ĩName$,"-"),0)
8  �Add_Line("| Run file for application : "+Name$,0)
&@  �Add_Line("| ----------------------------"+ĩName$,"-"),0)
0  �Add_Line("",0)
:1  application$=�application$,�application$-1)
D8  �Add_Line("Set "+application$+"$Dir <Obey$Dir>",2)
N  Ȏ SSprite$ �
X   � ""   :
b
    :
l6    �Add_Line("IconSprites <Obey$Dir>.!Sprites",2)
v  �
�  Ȏ interface% �
�
  � �:
�   �Add_Line("",0)
�1   �Add_Line("| Loading interface module:",0)
�   �Add_Line("",0)
�^   �Add_Line("If ""<System$Path>""=""""  then Error 0 System resources cannot be found",2)
�J   �Add_Line("RMEnsure SharedCLibrary 0 RMLoad System:modules.CLib",2)
�T   �Add_Line("RMEnsure InterfaceManager 1.25 RMLoad System:modules.Interface",2)
�Y   �Add_Line("RMEnsure InterfaceManager 1.25 Error Couldn't load Interface module",2)
�  �
�  �Add_Line("",0)
�/  �Add_Line("WimpSlot -min 64K -max 64K",2)
�.  �Add_Line("Run <Obey$Dir>.!RunImage ",2)
  file$+=".!Run"
,  ș "OS_File",10,file$,&FEB,,wimp%,ptr%
 �
   :
* � �Create_HelpFile(file$)
4 � ptr%,i% : ptr%=wimp%
>  date%!0=0
H  ș "OS_Word",14,date%
R  y$=$date%
\    �Add_Line("  ",0)
f    �Add_Line(�40,"-"),18)
p7    �Add_Line("Application : "+Name$,(63-�Name$)�2)
z    �Add_Line("",0)
�>    �Add_Line("Help for Version 1.0 : ("+�y$,5,11)+")",20)
�    �Add_Line("  ",0)
�    �Add_Line(�40,"-"),18)
�%    � i%=1 � 5 :�Add_Line("",0):�
�/    �Add_Line("<User writes help here>",26)
�    �Add_Line("",0)
�  file$+=".!Help"
�,  ș "OS_File",10,file$,&FFF,,wimp%,ptr%
� �
� :
�#�------------------------------
��>>>>>>>>>>>!RunImage
�#�------------------------------
�
 � �Create_RunImage(file$)
  � ptr%
$  ptr%=wimp%
.  �Index
8  �MainProgram
B  �Create_Procedures
L  �Event_Procedures
V  g$=file$
`  file$+=".!RunImage"
j,  ș "OS_File",10,file$,&FD1,,wimp%,ptr%
t  �
~:
�  � �Index
�  x$=��GetLeaf(file$))
�  indent%=20
�.  �Comment2("PROGRAM INDEX : "+x$,indent%)
�  indent%=25
�"  �Add_REM(�30,"-"),indent%-5)
�  �Add_REM("",0)
�)  �Add_REM("1.�MAIN�PROGRAM",indent%)
�  �Add_REM("",0)
�.  �Add_REM("2.�CREATE�PROCEDURES",indent%)
�  �Add_REM("",0)
�3  �Add_REM("2.1�Create�Initial�Data",indent%+4)
.  �Add_REM("2.2�Create�Windows",indent%+4)

,  �Add_REM("2.3�Create�Menus",indent%+4)
  �Add_REM("",0)
-  �Add_REM("3.�EVENT�PROCEDURES",indent%)
(  �Add_REM("",0)
2.  �Add_REM("3.0�Window�Closing",indent%+4)
<.  �Add_REM("3.1�Window�Drawing",indent%+4)
F,  �Add_REM("3.2�Mouse�Clicks",indent%+4)
P+  �Add_REM("3.3�Key�Presses",indent%+4)
Z,  �Add_REM("3.4�Menu�Choices",indent%+4)
d,  �Add_REM("3.5�File�Loading",indent%+4)
n+  �Add_REM("3.6�File�Saving",indent%+4)
x  �Add_REM("",0)
�"  �Add_REM(�30,"-"),indent%-5)
�  �Add_REM("",0)
�  �
� :
�  � �MainProgram
�   �Add_REMS(2)
�%   �Heading("1.�MAIN�PROGRAM",20)
�   indent%=24
�   �Add_REMS(2)
�G   � Library% � �Add_Line("LIBRARY "+"""<Obey$Dir>.Wimp""",indent%)
�   �Add_REMS(1)
�   arg$=""""
�   arg$+=application$
   arg$+=""""
-   arg$+=","+�wimp_memory%+","+�indirect%
4   �Add_Line("PROCWimp_Start("+arg$+")",indent%)
"   �Add_REMS(1)
,3   �Add_Line("PROCUser_SetInitialData",indent%)
6   �Add_REMS(1)
@.   �Add_Line("PROCCreate_Windows",indent%)
J,   �Add_Line("PROCCreate_Menus",indent%)
T   �Add_REMS(1)
^1   �Add_Line("PROCWimp_WaitForEvent",indent%)
h   �Add_REMS(1)
r.   �Add_Line("PROCWimp_CloseDown",indent%)
|   �Add_REMS(1)
�   �Add_Line("END",indent%)
�   �Add_REMS(5)
�  �
� :
�  � �Create_Procedures
�   �User_SetInitialData
�   �Windows
�
   �Menus
�  �
�  :
�    � �User_SetInitialData
�    indent%=4
�2    �Header("2.1�Create�Initial�Data",indent%)
0    �Add_PROC("User_SetInitialData",indent%)
;    � interface% � �Add_Line("interface%=TRUE",indent%)
    Ȏ �(terse%) �
&     � � :
0=      �Heading("Users Initial Data goes here",indent%+10)
:      �Add_REMS(1)
D	    �
N.    �Footer("End of Initial Data",indent%)
X	    �
b  :
l    � �Memory(j%)
v     � memory%,x$ : memory%=0
�      flag%=Templates%!j%
�       Ȏ � �
�$         � (flag%�(1<<8))=(1<<8)
�           Ȏ � �
�           � (flag%�1)=1
�4             m%=Templates%!(j%+12) : memory%+=m%
�'             Ȏ Templates%!(j%+8) �
�             � -1 :
�             :
�              � validated!
�&              m%=Templates%!(j%+8)
�              x$=$m%
�              m%=20*�(x$)+1
             memory%+=m%
             �
          �
        �
*    =memory%
4  :
>    � �Title
H+    � memory%,j%,x$ : memory%=0 : j%=72
R      flag%=Templates%!60
\       Ȏ � �
f$         � (flag%�(1<<8))=(1<<8)
p          Ȏ � �
z           � (flag%�1)=1
�3             m%=Templates%!(j%+12) : memory%=m%
�'             Ȏ Templates%!(j%+8) �
�             � -1 :
�             :
�              � validated!
�&              m%=Templates%!(j%+8)
�              x$=$m%
�              m%=20*�(x$)+1
�             memory%+=m%
�             �
�          �
�       �
�    =memory%
:
    � �IconMemory
    � i%,j%,n%,memory%
$    Ȏ NoOfWindows% �
.     � 0
8
     
B      � i%=1 � NoOfWindows%
L"      Templates%!0=Window%(i%)
V-      ș "Wimp_GetWindowInfo",,Templates%
`      memory%=�Title
j      n%=Templates%!88
t      j%=92+16
~      �
�       memory%+=�Memory(j%)
�       j%+=32
�      � j%>=(n%*32+92+16)
�      �
�	    �
�    =memory%
�  :
�      � �Header(x$,indent%)
�!      �Heading(x$,16+indent%)
�      �Add_REMS(2)
�$      �Add_REM(�65,"~"),indent%)
�      �Add_REMS(1)
      �

  :
      � �Footer(x$,indent%)
       �Add_REMS(1)
('       �Add_Line("ENDPROC",indent%)
2       �Add_REMS(1)
<%       �Add_REM(�65,"~"),indent%)
F,       �Add_REM(�65-�x$," ")+x$,indent%)
P       �Add_REMS(3)
Z      �
d :
n       � �Footer1(x$,indent%)
x       �Add_REMS(1)
�%       �Add_REM(�65,"~"),indent%)
�,       �Add_REM(�65-�x$," ")+x$,indent%)
�       �Add_REMS(3)
�      �
� :
�    � �Windows
�    � i%,x$
�    indent%=4
�-    �Header("2.2�Create�Windows",indent%)
�+    �Add_PROC("Create_Windows",indent%)
�    �Add_REMS(1)
�
�    Ȏ Sprite$ �
     � ""   :
=      � �(terse%) � �Heading("No sprite file",indent%+10)
      :
"           �Add_REMS(1)
,:           �Add_Line("PROCWimp_SpritesLoad",indent%+2)
6           �Add_REMS(1)
@	    �
J    Ȏ NoOfWindows% �
T     � 0    :
^A      � �(terse%) � �Heading("No windows defined",indent%+10)
h      :
r      �Add_REMS(1)
|      � i%=1 � NoOfWindows%
�       x$=Window$(i%)
�       x$=�15-�x$," ")+x$
�@       x$+="_Window%=FNWimp_WindowLoad("""+Window$(i%)+""")"
�        �Add_Line(x$,indent%)
�      �
�      �Add_REMS(1)
�      open%=�
�      � i%=1 � NoOfWindows%
�      Ȏ Open%(i%) �
�       � � :
�U        �Add_Line("PROCWimp_WindowBringToTop("+Window$(i%)+"_Window%)",indent%+1)
�        open%=�
�       �
       �
 !      Ȏ �open% � �(terse%) �
       � �:
 &@       �Heading("No windows opened at run time!",indent%+10)
 0      �
 :	    �
 D    Ȏ Bar% �
 N
     � �:
 XP     �Add_Line("Bar_Icon%=FNWimp_IconBar("""+"!"+application$+""")",indent%)
 b     � �
 lK      � �(terse%) � �Heading("No icon defined for icon bar",indent%+10)
 v	    �
 �$    �Add_Line("ENDPROC",indent%)
 �     �Add_Line(":",indent%+1)
 �    Ȏ �SaveTrue �
 �    � �:
 �8    �Add_Line("DEF FNEvent_Save(window%)",indent%+1)
 �.    �Add_Line("CASE window% OF",indent%+3)
 �    � i%=1 � NoOfWindows%
 �    Ȏ �Window$(i%),4) �
 �     � "Save","save","SAVE"
 �C     �Add_Line("WHEN "+Window$(i%)+"_Window% :=TRUE",indent%+5)
 �	    �
 �	    �
 �0    �Add_Line("OTHERWISE :=FALSE",indent%+5)
!&    �Add_Line("ENDCASE",indent%+3)
!	    
!>    �Add_Line("DEF FNEvent_Save(window%)=FALSE",indent%+1)
! 	    �
!*    �Add_REMS(1)
!4     �Add_Line(":",indent%+1)
!>D    �Add_Line("DEF FNEvent_Sprites(window%)=sprites%",indent%+1)
!H    �Add_REMS(1)
!R1    �Footer1("End of Create Windows",indent%)
!\	    �
!f  :
!p    � �Add_PROC(x$,indent%)
!z     �Add_Line(":",indent%)
!�)     �Add_Line("DEF PROC"+x$,indent%)
!�     �Add_REMS(1)
!�	    �
!�  :
!�
 � �Menus
!�    indent%=4
!�+    �Header("2.3�Create�Menus",indent%)
!�)    �Add_PROC("Create_Menus",indent%)
!�    Ȏ � �
!�%     �  NoOfWindows%=0 � Bar%=0 :
!�A       � �(terse%) � �Heading("No menus defined!",indent%+10)
!�      :
!�      � i%=0 � NoOfWindows%
";       k%=NoOfSubmenus%(i%)-1 : x$=Window$(i%)+"_Menu%"
"       Ȏ k% �
"        � 0    :
"$          menu$=�Menu$(i%,1))
".         Ȏ �menu$,"\") �
"8         � 0 :
"B          Ȏ �terse% �
"L           � �
"VD            �Add_REM("No menu for window: "+Window$(i%),indent%)
"`          �
"j         
"t&          � �((i%=0) � (Bar%=�)) �
"~          Ȏ �terse% �
"�           � �
"�            �Add_REMS(1)
"�A            �Add_REM("Menu for window: "+Window$(i%),indent%)
"�            �Add_REMS(1)
"�          �
"�6          �Add_Menu(" "+x$,Menu$(i%,1),-1,indent%)
"�          �
"�          �Add_REMS(1)
"�         �
"�         :
"�        Ȏ �terse% �
"�         � �
#         �Add_REMS(1)
#
>         �Add_REM("Menu for window: "+Window$(i%),indent%)
#         �Add_REMS(1)
#
        �
#(6         �Add_Line(" DIM "+x$+"("+�k%+")",indent%)
#2         �Add_REMS(1)
#<         � j%=k% � 0 �-1
#F5          �Add_Menu(x$,Menu$(i%,j%+1),j%,indent%)
#P         �
#Z         �Add_REMS(1)
#d
        �
#n       �
#x	    �
#�$    �Add_Line("ENDPROC",indent%)
#�     �Add_Line(":",indent%+1)
#�    �MousePopUp
#�3    �Footer1("End of Menu Definitions",indent%)
#�	    �
#�  :
#�  � �MousePopUp
#�  indent%=4
#�6  �Add_Line("DEF FNEvent_Menu(window%)",indent%+1)
#�  Ȏ � �
#�#    � NoOfWindows%=0 � Bar%=0 :
#�'      �Add_Line("=FALSE",indent%+1)
#�     :
$0      �Add_Line("CASE window% OF",indent%+1)
$      � i%=0 � NoOfWindows%
$,       x$="WHEN "+Window$(i%)+"_Window%"
$"!       x$+=�24-�x$," ")+": ="
$,       menu$=�Menu$(i%,1))
$6       Ȏ  �menu$,"\") �
$@         � 0    :
$J          : Ȏ i% �
$T!                      � 0   :
$^$                       Ȏ Bar% �
$h1                        � � : x$+="Bar_Menu%"
$r+                         : x$+="FALSE"
$|                       �
$�5                      : x$+=Window$(i%)+"_Menu%"
$�                     �
$�0                     �Add_Line(x$,indent%+2)
$�       �
$�      �
$�A      �Add_Line("OTHERWISE               : =FALSE",indent%+2)
$�(      �Add_Line("ENDCASE",indent%+1)
$�      �Add_REMS(1)
$�  �
$�  �Add_REMS(1)
$� �
$�:
$�*      � �Add_Menu(x$,menu$,j%,indent%)
%%      menu$=�Amend_Menu(x$,menu$)
%      menu$=�menu$)
%      Ȏ j% �
%&       � -1,0   :
%0/        �Add_MenuLine(" "+x$,menu$,indent%)
%:        :
%D;        �Add_MenuLine(" "+x$+"("+�j%+")",menu$,indent%)
%N      �
%X      �
%b  :
%l+      � �Add_MenuLine(x$,menu$,indent%)
%v      � i%,j%,k%,len%,s$
%�+      i%=60-�x$-�("=FNWimp_MenuCreate")
%�      Ȏ � �
%�       � i%>�(menu$)
%�F         �Add_Line(x$+"=FNWimp_MenuCreate("""+menu$+""")",indent%)
%�
       :
%�!        len%=60-�("menu$=")-4
%�        Ȏ � �
%�         � �(menu$)<=len%
%�;          �Add_Line("menu$="+""""+menu$+"""",indent%+2)
%�         
%�          s$="-" : j%=0
%�          �
%�B          � : k%=j%:j%=�menu$,"\",j%+1) : � (j%>len%) � (j%=0)
&)          � j%>58 � �menu$>58 � j%=k%
&          Ȏ s$ �
&           � "-" :  s$=" "
&            :  s$="+"
&*          �
&4          Ȏ j% �
&>           � 0
&HC            �Add_Line("menu$"+s$+"="+""""+menu$+"""",indent%+2)
&R            menu$=""
&\           
&fH            �Add_Line("menu$"+s$+"="+""""+�menu$,j%)+"""",indent%+2)
&p'            menu$=�menu$,�menu$-j%)
&z          �
&�          � menu$=""
&�
        �
&�=        �Add_Line(x$+"=FNWimp_MenuCreate(menu$)",indent%)
&�      �
&�      �
&�  :
&�!      � �Amend_Menu(x$,menu$)
&�!      � i%,j%,k%,n%,z$ : i%=0
&�
      � :
&�       i%=�menu$,">",i%+1)
&�       Ȏ i% �
&�        � 0    :
&�         :
'"           j%=�menu$,"\",i%+1)
')           k%=�(�menu$,i%+1,j%-i%-1))
'           Ȏ � �
'$            � k%<100
'.&             z$=x$+"("+�(k%-1)+")"
'8            
'B0             Ȏ ��menu$,i%+1,j%-i%-1),"C") �
'L              � 0   :
'V               n%=1
'`0               ȕ Window%(n%)<>k% : n%+=1 :�
'j,               z$=Window$(n%)+"_Window%"
't              :
'~9               n%=i% : � : n%-=1 : � �menu$,n%,1)="\"
'�4               z$=�menu$,n%+1,i%-n%-1)+"_CMenu%"
'�6               �Add_MenuLine(z$,"Colours",indent%)
'�             �
'�           �
'�6           menu$=�menu$,i%)+z$+�menu$,�menu$-j%+1)
'�
        �
'�       � i%=0
'�      =menu$
'�:
'�:
'�#�------------------------------
'�$�#      WRITING EVENT PROCEDURES
(#�------------------------------
(
�
(:
(    � �Event_Procedures
((     �WindowClose
(2     �WindowDraw
(<     �MouseClick
(F     �Keys
(P     �User_MenuChoice
(Z     �FileLoading
(d     �FileSaving
(n	    �
(x	    :
(�  � �WindowClose
(�  indent%=4
(�+  �Header("3.0�Window�Closing",indent%)
(�>  �Add_PROC("Event_WindowClose(window%,buttons%)",indent%)
(�  Ȏ NoOfWindows% �
(�G   � 0    : � �(terse%) � �Heading("No windows defined",indent%+10)
(�
    :
(�-     �Add_Line("CASE window% OF",indent%)
(�     � i%=1 � NoOfWindows%
(�+      x$="WHEN "+Window$(i%)+"_Window%"
(�      x$+=�25-�x$," ")+":"
(�       Ȏ Exit%(i%) �
(�       � � :
)1        x$+=" REM No closing action defined!"
)1        � �(terse%) � �Add_Line(x$,indent%+1)
)                 :
)"!        x$+=" finished%=TRUE"
),#        �Add_Line(x$,indent%+1)
)6      �
)@
     �
)J%     �Add_Line("ENDCASE",indent%)
)T  �
)^  �Add_REMS(1)
)h"  �Add_Line("ENDPROC",indent%)
)r  �Add_REMS(2)
)|6  �Footer1("End of Window Close Routines",indent%)
)�  �
)�:
)�  � �WindowDraw
)�  � i%,draw% : draw%=�
)�  Ȏ NoOfWindows% �
)�
  � 0:
)�  :
)�  � i%=1 � NoOfWindows%
)�   Templates%!0=Window%(i%)
)�*   ș "Wimp_GetWindowInfo",,Templates%
)�!   Flag%(i%)=!(Templates%+32)
)�   Flag%(i%)=Flag%(i%)>>>4
)�   Flag%(i%)=Flag%(i%)�2
*   � Flag%(i%)<>1 � draw%=�
*  �
*  �
*& =draw%
*0 :
*:  � �WindowDraw
*D  indent%=4
*N+  �Header("3.1�Window�Drawing",indent%)
*XB  �Add_PROC("Event_Draw(window%,x_origin%,y_origin%)",indent%)
*b  Ȏ NoOfWindows% �
*lG   � 0    : � �(terse%) � �Heading("No windows defined",indent%+10)
*v
    :
*�-     �Add_Line("CASE window% OF",indent%)
*�     � i%=1 � NoOfWindows%
*�+      x$="WHEN "+Window$(i%)+"_Window%"
*�      x$+=�25-�x$," ")+":"
*�       Ȏ Flag%(i%) �
*�       �             1 :
*�-        x$+=" REM Redrawn automatically!"
*�1        � �(terse%) � �Add_Line(x$,indent%+1)
*�                 :
*�5        x$+=" PROCUser_Draw"+Window$(i%)+"Window"
*�#        �Add_Line(x$,indent%+1)
*�      �
*�
     �
+%     �Add_Line("ENDCASE",indent%)
+  �
+  �Add_REMS(1)
+ "  �Add_Line("ENDPROC",indent%)
+*  �Add_REMS(2)
+4   Ȏ NoOfWindows% �
+>     � 0 :
+H     :
+R"         � i%=1 � NoOfWindows%
+\           Ȏ Flag%(i%) �
+f!            �             1 :
+p            
+zE            �Add_PROC("User_Draw"+Window$(i%)+"Window",indent%+6)
+�J            � prolix% �Heading("User to provide code here",indent%+10)
+�.            �Add_Line("ENDPROC",indent%+6)
+�            �Add_REMS(2)
+�           �
+�         �
+�	    �
+�8  �Footer1("End of Window Drawing Routines",indent%)
+�  �
+�:
+� � �MenuExist
+�! � i%,menu% : i%=-1 : menu%=�
+� Ȏ NoOfWindows% �
+�	  � 0
,   � Bar% � menu%=�
,  
,   � : i%+=1
,$*    � ��Menu$(i%,1)),"\")<>0 � menu%=�
,."   � i%=NoOfWindows% � menu%=�
,8 �
,B
=menu%
,L :
,V 
,` � �MouseClick
,j � i%,click%   : click%=�
,t Ȏ NoOfWindows% �
,~   � 0 : � Bar%<>0 � click%=�
,�  
,�  � Bar% � click%=�
,�  � i%=1 � NoOfWindows%
,�   Templates%!0=Window%(i%)
,�*   ș "Wimp_GetWindowInfo",,Templates%
,�   Flag%(i%)=Templates%!64
,�   Flag%(i%)=Flag%(i%)>>>12
,�   Ȏ Window$(i%) �
,�-    � "Save","save","SAVE" : Flag%(i%)=-1
,�	    
,�"     � Flag%(i%)<>0 � click%=�
,�   �
-  �
-
 �
-=click%
-:
-(� �MouseClick
-2 indent%=4
-<)  �Header("3.2�Mouse�Clicks",indent%)
-FH  �Add_PROC("Event_MouseClick(window%,icon%,button%,x%,y%)",indent%)
-P*  �Add_Line("CASE window% OF",indent%)
-Z  �BarMouse
-d  Ȏ NoOfWindows% �
-n   � 0 :
-x@    � �(terse%) � �Heading("No windows defined!",indent%+10)
-�   
-�    �MouseContents
-�  �
-�"  �Add_Line("ENDCASE",indent%)
-�  �Add_REMS(1)
-�"  �Add_Line("ENDPROC",indent%)
-�$  � NoOfWindows%<>0 � �MouseSubs
-�:  �Footer1("End of Dealing with Mouse Clicks",indent%)
-�  �
-� :
-� � �BarMouse
-�  Ȏ Bar% �
-�   � � :
.&    x$="WHEN Bar_Window%        :"
.4    �Add_Line(x$+" PROCUser_MouseBar",indent%+1)
.
    :
."?    x$="WHEN Bar_Window%        : REM No Icon on icon bar!"
.,+    � �terse% � �Add_Line(x$,indent%+1)
.6  �
.@ �
.J :
.T � �MouseContents
.^ � nn%,mm%
.h  � i%=1 � NoOfWindows%
.r  Ȏ �Window$(i%),4) �
.|,   � "Save","save","SAVE" : Flag%(i%)=-1
.�
    :
.�     Templates%!0=Window%(i%)
.�+    ș "Wimp_GetWindowInfo",,Templates%
.�    nn%=Templates%!88
.�    mm%=Templates%!(92+16)
.�    Flag%(i%)=Templates%!64
.�     Flag%(i%)=Flag%(i%)>>>12
.�!    Ȏ nn%=0 � Flag%(i%)<>0 �
.�     �  �:
.�      :
.�2      pattern%=(1<<12)+(1<<13)+(1<<14)+(1<<15)
.�?      ș "Wimp_WhichIcon",Window%(i%),Templates%,pattern%,0
.�      mm%=0
/.      ȕ (Templates%!mm%)<>-1 : mm%+=4 : �
/      mm%=(mm%�4)
/"      � nn%<>mm% � Flag%(i%)=1
/&	    �
/0  �
/:  �Mice
/D  �
/N �
/X :
/b � �Mice
/l'  x$="WHEN "+Window$(i%)+"_Window%"
/v  x$+=�24-�x$," ")+": "
/�      Ȏ Flag%(i%) �
/�       � 0    : Ȏ terse% �
/�                    � �
/�=                     x$+="REM  Mouse clicks are ignored!"
/�0                     �Add_Line(x$,indent%+1)
/�                   �
/�       � -1   :
/�B        : x$+="PROCUser_Mouse"+Window$(i%)+"( button%,icon%)"
/�.                   �Add_Line(x$,indent%+1)
/�                   �
/� �
/� :
/� � �MouseSubs
0  � Bar% � �BarSub
0  � i%=1 � NoOfWindows%
0    Ȏ Flag%(i%) �
0       � 0,-1 :
0*
       :
04        �Add_REMS(2)
0>:        x$="User_Mouse"+Window$(i%)+"( button%,icon%)"
0H#        �Add_PROC(x$,indent%+2)
0R�        �Add_Line("PROCWimp_WindowAlert("+""""+Window$(i%)+""""+","+"""Mouse button="""+"+STR$button%+"+"""icon="""+"+STR$icon%)",indent%+3)
0\        �Add_REMS(1)
0f*        �Add_Line("ENDPROC",indent%+2)
0p
     �
0z   �
0� �
0� :
0� � �BarSub
0�  �Add_REMS(2)
0�*  �Add_PROC("User_MouseBar",indent%+2)
0�     click%=�
0�     � i%=1 � NoOfWindows%
0�      Ȏ � �
0�       �  Click%(i%)
0�C        x$="PROCWimp_WindowBringToTop("+Window$(i%)+"_Window%)"
0�#        �Add_Line(x$,indent%+3)
0�        click%=�
0�      �
1
     �
1      Ȏ prolix% �
1
      � �
1$U       � �(click%)  � �Heading("Use PROCWimp_WindowBringToTop() here ",indent%+8)
1.      �
18 �Add_REMS(1)
1B# �Add_Line("ENDPROC",indent%+2)
1L �
1V:
1`
  � �Keys
1j  � write% : write%=�
1t  Ȏ �Window$(i%),4) �
1~)   � "SAVE","Save","save"  : write%=1
1�
    :
1�0    pattern%=(1<<12)+(1<<13)+(1<<14)+(1<<15)
1�D    ș "Wimp_WhichIcon",Window%(i%),Templates%,pattern%,pattern%
1�'    � (Templates%!0)<>-1 � write%=�
1�  �
1�
  =write%
1� :
1�
  � �Keys
1�  indent%=4
1�(  �Header("3.3�Key�Presses",indent%)
1�=  �Add_PROC("Event_KeyPress(window%,icon%,key%)",indent%)
1�  Ȏ NoOfWindows% �
2	  � 0
2
?   � �(terse%) � �Heading("No windows defined!",indent%+10)
2  
2,  �Add_Line("CASE window% OF",indent%+3)
2(  � i%=1 � NoOfWindows%
22)    x$="WHEN "+Window$(i%)+"_Window%"
2<    x$+=�24-�x$," ")+": "
2F    Ȏ �Keys �
2P
    � 1 :
2Z    � �
2dP     �Add_Line(x$+"PROCUser_KeyPress"+Window$(i%)+"( icon%,key%)",indent%+4)
2n    � �
2xI     � �(terse%) � �Add_Line(x$+"REM  No writeable icons!",indent%+4)
2�	    �
2�  �
2�$  �Add_Line("ENDCASE",indent%+3)
2�  �Add_REMS(1)
2�  �
2�"  �Add_Line("ENDPROC",indent%)
2�  �Add_REMS(2)
2�  � NoOfWindows%<>0 � �Key2
2�5  �Footer1("End of key press procedures",indent%)
2�  �
2�:
2�
  � �Key2
2�   � i%=1 � NoOfWindows%
3    Ȏ �Keys �
3
     � -1
3     �Add_REMS(1)
3"I     �Add_PROC("User_KeyPress"+Window$(i%)+"( icon%,key%)",indent%+2)
3,�     �Add_Line("PROCWimp_WindowAlert("+""""+Window$(i%)+""""+","+"""Key pressed="""+"+STR$key%+"+"""icon="""+"+STR$icon%)",indent%+2)
36     �Add_REMS(1)
3@'     �Add_Line("ENDPROC",indent%+2)
3J	    �
3T  �
3^  �
3h:
3r  � �User_MenuChoice
3|   indent%=4
3�)  �Header("3.4�Menu�Choices",indent%)
3�2  �Add_PROC("Event_MenuChoice(menu%)",indent%)
3�  Ȏ � �
3�"   � NoOfWindows%=0 � Bar%=0 :
3�@    � �(terse%) � �Heading("No windows defined!",indent%+10)
3�   
3�,    �Add_Line("CASE menu% OF",indent%+1)
3�    �Add_REMS(1)
3�    � i%=0 � NoOfWindows%
3�(     x$="WHEN "+Window$(i%)+"_Menu%"
3�     x$+=�24-�x$," ")+": "
3�      menu$=�Menu$(i%,1))
3�      Ȏ i% �
4       � 0    :
4V        � Bar%<>0 � x$+="PROCUser_MenuChoice"+Window$(i%): �Add_Line(x$,indent%+7)
4        :
4&            Ȏ  �menu$,"\") �
40           � 0:
4:R             � �(terse%) � x$+="REM  No menu defined!":�Add_Line(x$,indent%+7)
4D            :
4N6             x$+="PROCUser_MenuChoice"+Window$(i%)
4X(             �Add_Line(x$,indent%+7)
4b           �
4l       �
4v	    �
4�    �Add_REMS(1)
4�&    �Add_Line("ENDCASE",indent%+1)
4�  �
4�  �Add_REMS(1)
4�"  �Add_Line("ENDPROC",indent%)
4�  �MenuDealer
4�7  �Footer1("End of Menu Choice Procedures",indent%)
4�  �
4�:
4�  � �MenuDealer
4�
  � i%
4�  Ȏ � �
4�"   � NoOfWindows%=0 � Bar%=0 :
5
    :
5    � i%=0 � NoOfWindows%
5    menu$=�Menu$(i%,1))
5       Ȏ  �menu$,"\") �
5*        � 0:
54         :
5>        Ȏ i%=0 � Bar%=0 �
5H        � �:
5R        :
5\         �Add_REMS(2)
5f=         �Add_PROC("User_MenuChoice"+Window$(i%),indent%)
5p&         �MenuPrint(Menu$(i%,1),0)
5z)         �Add_Line("ENDPROC",indent%)
5�
        �
5�      �
5�   �
5�  �
5�  �
5�:
5�   � �MenuPrint(menu$,level%)
5�9  � j%,k%,s%,t%,v%,item$,itm$ : k%=�menu$,"\") : v%=0
5�D  �Add_Line("CASE FNWimp_MenuChoice("+�level%+") OF",2*level%+5)
5�  � : v%+=1
5�!   � v%<10 � c$=" :" � c$=":"
5�#   j%=k% :  k%=�menu$,"\",j%+1)
5�   Ȏ k% �
6     � 0
6      :
61      item$=�menu$,j%+1,k%-j%-1) : itm$=item$
6$      s%=�item$,">")
6.      Ȏ s% �
68       � 0    :
6B        x$=""""+item$+""""
6L         item$="WHEN "+�v%+c$
6V        Ȏ itm$ �
6`         � "Quit" :
6j$         item$+="finished%=TRUE"
6t         :
6~=         item$+=" PROCWimp_WindowAlert("+""""+Window$(i%)
6�*        item$+=" Menu"+""""+","+x$+")"
6�
        �
6�'        �Add_Line(item$,2*level%+6)
6�        :
6�#        t%=�(�item$,�item$-s%))
6�        item$=�item$,s%-1)
6�         item$="WHEN "+�v%+c$
6�'        �Add_Line(item$,2*level%+6)
6�        Ȏ �itm$) �
6�        � "C"
6�?         x$="IF FNWimp_MenuChoice("+�(level%+1)+")<>0 THEN"
6�%         �Add_Line(x$,2*level%+8)
7;         x$="col%=FNWimp_MenuChoice("+�(level%+1)+")-1"
7
&         �Add_Line(x$,2*level%+10)
7@         x$="PROCWimp_WindowAlert("+""""+Window$(i%)+" Menu"
77         item$=x$+""",""Colour Chosen=""+STR$col%)"
7()         �Add_Line(item$,2*level%+10)
72*         �Add_Line("ENDIF",2*level%+8)
7<
        �
7F8        � t%<100 � �MenuPrint(Menu$(i%,t%),level%+1)
7P      �
7Z   �
7d  � k%=0
7n%  �Add_Line("ENDCASE",2*level%+5)
7x  �
7�:
7�  � �FileLoading
7�  indent%=4
7�
7�)  �Header("3.5�File�Loading",indent%)
7�6  �Add_PROC("Event_LoadFile(file$,type$)",indent%)
7�  Ȏ next% �
7�   � 0:
7�<    � �(terse%) � �Heading("No files loaded!",indent%+8)
7�   
7�-     �Add_Line("CASE type$ OF",indent%+2)
7�     � i%=1 � next%
7�D      x$ ="WHEN "+""""+Type$(i%)+""""+�13-�(Type$(i%))," ")+": "
85      x$+="PROCUser_LoadFile"+Type$(i%)+"(file$)"
8!      �Add_Line(x$,indent%+4)
8
     �
8"'     �Add_Line("ENDCASE",indent%+2)
8,   �
86   �Add_REMS(1)
8@#   �Add_Line("ENDPROC",indent%)
8J Ȏ next% �
8T   � 0:
8^   
8h     � i%=1 � next%
8r      �Add_REMS(1)
8|B      �Add_PROC("User_LoadFile"+Type$(i%)+"(file$)",indent%+2)
8�$      x$="PROCWimp_WindowAlert("
8�)      x$+=""""+��GetLeaf(file$))+""""
8�/      x$+=","+"""Loading file """+"+file$)"
8�!      �Add_Line(x$,indent%+4)
8�      �Add_REMS(1)
8�(      �Add_Line("ENDPROC",indent%+2)
8�
     �
8�   �
8�9  �Footer1("End of file loading procedure",indent%+2)
8�  �
8�:
8� � �FileSaving
8�   indent%=4
9(  �Header("3.6�File�Saving",indent%)
98  �Add_PROC("Event_SaveFile(file$,window%)",indent%)
9  Ȏ �SaveTrue �
9&
  � �:
90-   �Add_Line("CASE window% OF",indent%+2)
9:   � i%=1 � NoOfWindows%
9D)    x$="WHEN "+Window$(i%)+"_Window%"
9N    x$+=�26-�x$," ")+": "
9X    Ȏ �Window$(i%),4) �
9b     � "Save","save","SAVE"
9l%      x$+="PROCWimp_WindowAlert("
9v#      x$+=""""+Window$(i%)+""""
9�.      x$+=","+"""Saving file """+"+file$)"
9�!      �Add_Line(x$,indent%+4)
9�      :
9�'      x$+="REM  Not a save window!"
9�-      � �terse% � �Add_Line(x$,indent%+4)
9�	    �
9�   �
9�%   �Add_Line("ENDCASE",indent%+2)
9�  �
9�5  �Footer("End of file saving procedure",indent%)
9�  �
9�:
9�� �SaveTrue
:� result%,i%
:Ȏ NoOfWindows% �
:� 0   : result%=�
: :
:*	 i%=0
:4 �
:>  i%+=1
:H  Ȏ �Window$(i%),4) �
:R+     � "Save","save","SAVE" : result%=�
:\  �
:f" � i%=NoOfWindows% � result%=�
:p�
:z=result%
:�:
:�#�------------------------------
:��      Tool procedures
:�#�------------------------------
:��
:�:
:�    � �Add_Line(x$,indent%)
:�    Ȏ prolix% �
:�    � �:
:�%     $ptr%=�3+indent%," ")+x$+�10
:�     ptr%+=�x$+4+indent%
:�
    :
:�K     � �x$,3)<>"REM" � $ptr%=�3+indent%," ")+x$+�10:ptr%+=�x$+4+indent%
;	    �
;	    �
;:
;$    � �Add_REM(x$,indent%)
;.,    �Add_Line("REM"+�indent%," ")+x$,-3)
;8	    �
;B:
;L    � �Add_REMS(n%)
;V    � i%
;`)    � i%=1 � n% :  �Add_REM("",0) : �
;j	    �
;t:
;~    � �Heading(x$,indent%)
;�    �Add_REM("",0)
;�:    �Add_REM("------------------------------",indent%)
;�/    �Add_REM(�15-(�(x$)�2)," ")+x$,indent%)
;�:    �Add_REM("------------------------------",indent%)
;�    �Add_REM("",0)
;�	    �
;� :
;�    � �Comment(x$)
;�    �Add_REM("",0)
;�-    �Add_Line("REM"+�15," ")+�30,"-"),-3)
;�1    �Add_Line("REM"+�30-(�(x$)�2)," ")+x$,-3)
;�-    �Add_Line("REM"+�15," ")+�30,"-"),-3)
<    �Add_REM("",0)
<
	    �
< :
<    � �Comment2(x$,indent%)
<(:    �Add_REM("------------------------------",indent%)
<2/    �Add_REM(�15-(�(x$)�2)," ")+x$,indent%)
<<    �Add_REM("",0)
<F    date%!0=0
<P    ș "OS_Word",14,date%
<Z    y$=$date%
<d/    �Add_REM(�15-(�(x$)�2)," ")+y$,indent%)
<n:    �Add_REM("------------------------------",indent%)
<x    �Add_REM("",0)
<�	    �
<�#�------------------------------
<��**********FILE LOADING
<�#�------------------------------
<�:
<� � �DealWithLoadingOfFile
<� � type$,file$,new%,i%
<�9   : type$=�File_Type : file$=�File_PathName : new%=0
<� Ȏ type$ �
<�  � "Template" :
<�   Ȏ Template$ �
<�)    � ""   : �DealWithLoadingTemplate
<�     : new%=1
=   �
=  � "Sprite"
=   Ȏ ��GetLeaf(file$)) �
="G    � "Sprites","SPRITES","sprites"    : �DealWithLoadingSpriteFile
=,J    � "!Sprites","!SPRITES","!sprites" : �DealWithLoadingSystemSprites
=6           :  new%=1
=@   �
=J  
=T  � next%<16 � new%=1
=^ �
=h Ȏ new% �
=r
 � 1 :
=| i%=0 : test%=�
=�   �
=�   i%+=1
=�"   � Type$(i%)=type$ � test%=�
=�   � i%=16 � test%=�
=�   Ȏ test% �
=�
   � �
=�Q    �AlertBox(Task$,"Application already responds to files of type : "+type$)
=�   
=�   next%+=1
=�   Ȏ next%>16 �
=�/   � � : �AlertBox(Task$,"Too many types!")
=�
    :
=�    Type$(next%)=type$
>X    �AlertBox(Task$,"Application will respond to loading of files of type : "+type$)
>   �
>   �
>& �
>0 �
>::
>D$ � �DealWithLoadingSystemSprites
>N7  � file%,offset%,x$,x%,y%,i%,j%,NoOfSprites%,test%
>X
  test%=�
>b  SSprite$=file$
>l  file%=�(file$)
>v   NoOfSprites%=�#file%
>�6   y%=0 : �#file%=4 : offset%=�#file% : offset%-=4
>�   j%=0
>�   � j%+=1
>�,    offset%+=y% : �#file%=offset% : y%=0
>�    � i%=0 � 24 �8
>�     x%=�#file%
>�     y%+=x%<<i%
>�	    �
>�    x$=�#file% : x$=�x$,10)
>�    Ȏ � �
>�     � �x$,1)="!"    :
>�D      x%=�CancelBox(Task$,"Change Application Name to "+x$+" ?")
>�      Ȏ x% �
?      � 1 :
?       test%=�
?       Name$=x$
? #       �("*IconSprites "+file$)
?*,       �Icon_MakeText(Save_Window%,1,x$)
?4;       x%=�icon_newsprite(wimp%,Save_Window%,0,Name$,�)
?>       Ȏ Bar% �
?H       � � :
?R         xy%=�Menu$(0,1),"\")
?\C        Menu$(0,1)=�rem(Name$)+�Menu$(0,1),�(Menu$(0,1))-xy%+1)
?f       �
?p      �
?z	    �
?�!   � j%>=NoOfSprites% � test%
?�  �#file% : file%=0
?� �
?�:
?�! � �DealWithLoadingSpriteFile
?�  Sprite$=file$
?� �
?�:
?� � �DealWithLoadingTemplate
?�  Template$=file$
?�"  wimp_memory%=0 : indirect%=0
?�  �Load_Windows
?� �
@ :
@  � �Load_Windows
@.   � n%,x$ : n%=0 : NoOfWindows%=0 : x$=""
@$"   Ȏ �File_Load(Template$)  �
@.
    � � :
@8X     �AlertBox("WimpEd","Templates contain font data! WimpEd cannot load this file")
@B     :
@L(    �("LOAD "+Template$+" "+�~file%)
@V    Templates%=file%+16
@`   �
@j    NoOfWindows%+=1
@t    n%+=24
@~   � Templates%!n%=0
@�   Ȏ NoOfWindows% �
@�   � 0:
@�	   :
@�I   � Window$(NoOfWindows%),Window%(NoOfWindows%),Click%(NoOfWindows%)
@�C   � Menu$(NoOfWindows%,NoOfMenus%),NoOfSubmenus%(NoOfWindows%)
@�D   � Flag%(NoOfWindows%),Open%(NoOfWindows%),Exit%(NoOfWindows%)
@�   Open%()=� : Exit%()=� :
@�   � n%=1 � NoOfWindows%
@�.    Window$(n%)=$(Templates%+12+24*(n%-1))
@�6    Window%(n%)=�Window_Get(Window$(n%),Template$)
@�     Click%(n%)=sprites_only%
@�    x$+="\"+Window$(n%)
A    NoOfSubmenus%(n%)=1
A
N    Menu$(n%,0)="Menu Maker\Close Window\Menu>1\Run   � Open\Close � Exit"
A#    Menu$(n%,1)=Window$(n%)+"\"
A   �
A(,   Wind_Menu%=�Menu_Create("Windows"+x$)
A2/   Windows_Menu%=�Menu_Create("Windows"+x$)
A<   � n%=1 � NoOfWindows%
AF<    � Click%(n%) � �Menu_ColourItem(Windows_Menu%,n%,11)
AP   �
AZ   Click%()=�
Ad!    �Menu_Enable(Bar_Menu%,3)
An!    �Menu_Enable(Bar_Menu%,4)
Ax-    �Menu_Glue(Bar_Menu%,3,Windows_Menu%)
A�C   Edit_Menu%=�Menu_Create("Edit\\Delete\Insert Above\Submenu")
A�6   Sub_Menu%=�Menu_Create(" Submenu \\Colours"+x$)
A�+   Insert_Menu%=�Menu_Create("Insert\")
A�&    �Menu_DottedLine(Edit_Menu%,1)
A�*    �Menu_Glue(Edit_Menu%,4,Sub_Menu%)
A�-    �Menu_Glue(Edit_Menu%,3,Insert_Menu%)
A�&    �Menu_DottedLine(Edit_Menu%,3)
A�%    �Menu_DottedLine(Sub_Menu%,1)
A�%    �Menu_DottedLine(Sub_Menu%,2)
A�    $Buffer1%=""
A�;    �Menu_Write(Edit_Menu%,1,Buffer%,-1,Buffer_Length%)
A�;    �Menu_Write(Sub_Menu%,1,Buffer1%,-1,Buffer_Length%)
A�>    �Menu_Write(Insert_Menu%,1,Buffer2%,-1,Buffer_Length%)
B=    Window$(0)="Bar" : Window%(0)=-2 : NoOfSubmenus%(0)=1
B6    Menu$(0,0)="Icon Bar\Close\Menu>1\Click Opens"
B    Name$=�rem(Name$)
B"    Menu$(0,1)=Name$+"\"
B,    � n%=1 � NoOfWindows%
B6     Ȏ Window$(n%) �
B@       � "Info","info","INFO"
BJ1       Menu$(0,1)+="Info>"+�(Window%(n%))+"\"
BT
     �
B^	    �
Bh    Menu$(0,1)+="Quit\"
Br	    �
B|  �
B�  �
B�:
B�� �rem(x$)
B�� �x$)=�0 �=�x$) �=x$
B�:
B�N�-------------------------------------------------------------------------
B�N�-------------------------------------------------------------------------
B��
B�1�                      WIMP PROCEDURE LIBRARY
B��
B��@          INDEX
B��
B��*******POLLING ROUTINE
C�*******WIMP ROUTINES
C�*******WINDOW ROUTINES
C�*******ICON ROUTINES
C&�*******MENU ROUTINES
C0�*******FILE ROUTINES
C:�*******SPRITE ROUTINES
CD�*******MISCELLANEOUS
CN�
CXN�-------------------------------------------------------------------------
CbN�-------------------------------------------------------------------------
Cl:
Cv#�------------------------------
C��*******POLLING ROUTINE
C�#�------------------------------
C�:
C�� �Wimp_WaitForEvent(mask%)
C�finished%=�
C�5mask%=mask%�((1<<2)+(1<<3)+(1<<7)+(1<<9)+(1<<10))
C�1mask%=mask%�((1<<13)+(1<<14)+(1<<15)+(1<<16))
C�1mask%=mask%�%11111111111100000000000000000000
C�mask%=�(mask%)
C��
C�( ș "Wimp_Poll",mask%,wimp% � event%
C�R � wimp%!0=Save_Window% � wimp%!12=Save_Window% � �Save_Event � �NonSave_Event
C�� finished%
D�
D:
D� �NonSave_Event
D Ȏ event% �
D*, � 0 : �Event_DealWithNullEvent(wimp%!0)
D4 � 1 : �Window_Redraw
D>! � 2 : �Window_Open(!wimp%,1)
DH  � 3 : �Window_Close(!wimp%)
DR
 � 4 :
D\
 � 5 :
Df
 � 6 :
DpI �Event_DealWithMouseClick(wimp%!8,wimp%!12,wimp%!16,wimp%!0,wimp%!4)
Dz � 7 : �Event_SaveMessage
D�> � 8 : �Event_DealWithKeyPressed(wimp%!0,wimp%!4,wimp%!24)
D�
 � 9 :
D�'          �Event_DealWithMenuChoice
D�* � 17,18 : xx%=wimp%!20 : yy%=wimp%!24
D�;              Ȏ wimp%!16=message_save% � wimp%!36>-1 �
D�              � �:
D�'               file$=�File_PathName
D�4               �Event_DealWithMessages(wimp%!16)
D�7               �Icon_MakeText(Save_Window%,1,file$)
D�              :
D�4               �Event_DealWithMessages(wimp%!16)
D�              �
D��
E�
E:
E#�------------------------------
E$�         SAVE ROUTINES
E.#�------------------------------
E8:
EB� �Save_Event
EL Ȏ wimp%!0 �
EV!  � Save_Window% : �File_Save
E`           : Ȏ wimp%!16 �
Ej                        � 0 :
EtE                        � wimp%!8 � &50 � �Drag_Box(Save_Window%)
E~                        � 2 :
E�6                        � wimp%!8 � 5 � �File_Save
E�                      �
E� �
E��
E�:
E� � �File_Save
E�	 � x$
E�% x$=�Icon_GetText(Save_Window%,1)
E� Ȏ �x$,".") �
E�  � 0    :
E�F   �AlertBox(Task$,"To save, drag the icon to a directory window")
E�	   :
F    �DealWithSavingOfFile(x$)
F
 �
F ș "Wimp_CreateMenu",-1
F �
F(:
F2 � �Drag_Box(window%)
F< � ox%,oy%
FF  !wimp%=window%
FP%  ș "Wimp_GetWindowState",,wimp%
FZ3  ox%=wimp%!4-wimp%!20  : oy%=wimp%!16-wimp%!24
Fd  wimp%!4=0
Fn#  ș "Wimp_GetIconState",,wimp%
Fx  !wimp%=window%
F�  wimp%!4=5
F�4  wimp%!8=ox%+wimp%!8    : wimp%!12=oy%+wimp%!12
F�4  wimp%!16=ox%+wimp%!16  : wimp%!20=oy%+wimp%!20
F�  wimp%!24=0:wimp%!28=0
F�.  wimp%!32=&7FFFFFFF  : wimp%!36=&7FFFFFFF
F�  ș "Wimp_DragBox",,wimp%
F� �
F�:
F� � �Event_SaveMessage
F�!  � file$,window%,icon%,x%,y%
F�%  ș "Wimp_GetPointerInfo",,wimp%
F�C  window%=wimp%!12 : icon%=wimp%!16  : x%=wimp%!0  : y%=wimp%!4
F�3  file$=�GetLeaf(�Icon_GetText(Save_Window%,1))
G  wimp%!20=window%
G  wimp%!24=icon%
G  wimp%!28=x% : wimp%!32=y%
G"  wimp%!36=length%
G,  wimp%!0=64
G6  wimp%!12=0
G@  wimp%!16=1
GJ  wimp%!40=&FFF
GT  $(wimp%+44)=file$
G^6  ș "Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
Gh �
Gr:
G| � �GetLeaf(name$)
G�  ȕ �name$,".")
G�"   name$=�name$,�name$,".")+1)
G�  �
G� =name$+�(0)
G�:
G�#�------------------------------
G��*******WIMP ROUTINES
G�#�------------------------------
G�:
G�� �Wimp_SetEventVariables
G��#
G�. � wimp% block_memory%,icons% icon_memory%
G�#  icon_end%=icons%+icon_memory%
H � pointer_wimp% 20
H�
HG null%=1                : draw%=2           : pointer_leaving%=1<<4
H&< pointer_entering%=1<<5 : mouse%=1<<6       : drag%=1<<7
H0? key%=1<<8              : menu%=1<<9        : scroll%=1<<10
H:J lose_caret%=1<<11      : gain_caret%=1<<12 : message%=(1<<17)+(1<<18)
HD; recorder%=1<<18        : acknowledge%=1<<19: window%=0
HN9 sprites%=1             : version%=0        : task%=0
HX= Bar_Window%=-2         : Bar_Icon%=0       : Bar_Menu%=0
Hb@ x_origin%=0            : y_origin%=0       : SaveWindow%=-3
HlA message_quit%=0        : message_save%=2   : message_load%=3
Hv mouse_button%=2
H��
H�:
H�� �Wimp_Start(TaskName$)
H��...Initialises a task.
H�'�...See page 1173 of RiscOs Manual.
H��
H��
H� �Wimp_SetEventVariables
H�" � � �Error(task%,TaskName$):�
H� $wimp%="TASK"
H�? ș "Wimp_Initialise",200,!wimp%,TaskName$ � version%,task%
H�=TaskName$
H�:
I� �Wimp_Quit
Ifinished%=�
I�
I :
I*� �Error(task%,TaskName$)
I4	� � �
I>� ErrorMsg% 36
IH=ErrorMsg%!0     = 36                : � Length of message
IRGErrorMsg%!12    = 0                 : � This is an original message
I\GErrorMsg%!16    = &81080            : � Message number to set caret
If>ErrorMsg%!20    = �               : � Line to put caret on
Ip@$(ErrorMsg%+24) = "!RunImage   "    : � File to put caret on
Iz&ș "Wimp_SendMessage",17,ErrorMsg%
I�4�Wimp_Alert(TaskName$,�$+"at line "+�(� � 10),2)
I��Wimp_CloseDown
I��
I�:
I�� �Wimp_CloseDown
I�$ș "Wimp_CloseDown",task%,"TASK"
I��
I�:
I�#�------------------------------
I��*******WINDOW ROUTINES
I�#�------------------------------
I�:
I�=� �Window_Load(a$)=�Window_Get(a$,"<Make$Dir>.Templates")
J:
J� �Window_Get(a$,path$)
J� c%,ic%,id%,in%,i%,x$
J$" ș "Wimp_OpenTemplate",,path$
J. $wimp%=a$
J8 ic%=icons%
JBI ș "Wimp_LoadTemplate",,wimp%,icons%,icon_end%,-1,wimp%,0 � ,,icons%
JL id%=icons%-ic%
JV wimp%!64=sprites%
J`' ș "Wimp_CreateWindow",,wimp% � c%
Jj ș "Wimp_CloseTemplate"
Jt in%=wimp%!84
J~ in%=88+32*in%+id%
J�* � wimp_memory%<in% � wimp_memory%=in%
J� indirect%+=id%
J�7 ș "Wimp_WhichIcon",c%,wimp%+8,1+2+(1<<8),2+(1<<8)
J�Ȏ wimp%!8 �
J� � -1   : sprites_only%=�
J�  : i%=8 : sprites_only%=�
J�   �
J�$   wimp%!4=wimp%!i% : wimp%!0=c%
J�"   ș "Wimp_DeleteIcon",,wimp%
J�   i%+=4
J�   � (wimp%!i%)=-1
J��
K=c%
K
:
K"� �Window_Open(window%,state%)
K!wimp%=window%
K(0� state%=0 � ș "Wimp_GetWindowState",,wimp%
K2ș "Wimp_OpenWindow",,wimp%
K<�
KF:
KP� �Window_OpenUp(window%)
KZ�Window_Open(window%,0)
Kd�Window_ForceDraw(window%)
Kn�
Kx:
K�� �Window_Close(window%)
K�!wimp%=window%
K� ș "Wimp_CloseWindow",,wimp%
K��
K�:
K�!� �Window_BringToTop(window%)
K�!wimp%=window%
K�#ș "Wimp_GetWindowState",,wimp%
K�wimp%!28=-1
K�ș "Wimp_OpenWindow",,wimp%
K��
K�:
K�� �Window_Redraw
L � more%
L* ș "Wimp_RedrawWindow",,wimp% � more%
L% �Window_GetOrigin(wimp%,x0%,y0%)
L"" x_origin%=x0% : y_origin%=y0%
L,
 ȕ more%
L62   � interface% � ș"Wimp_BorderWindow",,wimp%
L@!   �Event_DrawWindow(wimp%!0)
LJ,   ș "Wimp_GetRectangle",,wimp% � more%
LT �
L^ �
Lh:
Lr � �Window_ForceDraw(window%)
L|Ȏ window% �
L�8 � -1   : ș "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
L�9  : ș "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
L��
L��
L�:
L�*� �Window_GetOrigin(wimp%,� x0%,� y0%)
L�x0%=wimp%!4-wimp%!20
L�y0%=wimp%!16-wimp%!24
L��
L�:
L�� �Window_Title(window%)
L� wimp%!0=window%
L�! ș "Wimp_GetWindInfo",,wimp%
M7 � ((wimp%!60)�&100)=0 � 1,"Title isn't indirected"
M=$(wimp%!76)
M:
M&� �Window_Draw(x,y)
M0 � x-x_origin%,y-y_origin%
M:�
MD:
MN� �Window_Move(x,y)
MX � x+x_origin%,y_origin%+y
Mb�
Ml:
Mv7� �Window_RectangleFill(x,y,width%,height%,colour%)
M�ș "Wimp_SetColour",colour%
M�0ȓ Ȑ x-x_origin%,y_origin%+y,width%,height%
M��
M�:
M�� �Window_Line(x,y,x1,y1)
M�8 � x+x_origin%,y+y_origin%,x1+x_origin%,y1+y_origin%
M��
M�:
M�� �Window_TAB(x,y)
M�$ � 16*x+x_origin%,y_origin%-32*y
M��
M�:
M�#�------------------------------
N�*******ICON ROUTINES
N#�------------------------------
N:
N � �Icon_Bar(Sprite$)
N*3=�Icon_Create(-1,0,0,68,68,&3002,Sprite$,0,0,0)
N4:
N>C� �Icon_Create(window%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
NHwimp%!0=window%
NR"wimp%!4=ix%      : wimp%!8=iy%
N\'wimp%!12=ix%+iw% : wimp%!16=iy%+ih%
Nfwimp%!20=flag%
NpL� d1%=0 � $(wimp%+24)=text$ � wimp%!24=d1% : wimp%!28=d2% : wimp%!32=d3%
Nz'ș "Wimp_CreateIcon",,wimp% � icon%
N�
=icon%
N�:
N�&� �Icon_MakeText(window%,icon%,x$)
N�$ wimp%!0=window% : wimp%!4=icon%
N�" ș "Wimp_GetIconState",,wimp%
N�8 � ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
N� $(wimp%!28)=x$
N�$ wimp%!0=window% : wimp%!4=icon%
N� wimp%!8=0 : wimp%!12=0
N�" ș "Wimp_SetIconState",,wimp%
N��
N�:
N�"� �Icon_GetText(window%,icon%)
O$ wimp%!0=window% : wimp%!4=icon%
O" ș "Wimp_GetIconState",,wimp%
O8 � ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
O$=$(wimp%!28)
O.:
O8� �Icon_Val(window%,icon%)
OB$ wimp%!0=window% : wimp%!4=icon%
OL" ș "Wimp_GetIconState",,wimp%
OV8 � ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
O`=$(wimp%!32)
Oj:
Ot,� �Wimp_IconMakeSprite(window%,icon%,x$)
O~$ wimp%!0=window% : wimp%!4=icon%
O�" ș "Wimp_GetIconState",,wimp%
O� $(wimp%+28)=x$+�0
O�$ wimp%!0=window% : wimp%!4=icon%
O� wimp%!8=0 : wimp%!12=0
O�" ș "Wimp_SetIconState",,wimp%
O��
O�:
O�� �Icon_Enable(window%,j%)
O� wimp%!0=window% : wimp%!4=j%
O�$wimp%!8=0       : wimp%!12=1<<22
O�!ș "Wimp_SetIconState",,wimp%
O��
P:
P
� �Icon_Disable(window%,j%)
P wimp%!0=window% : wimp%!4=j%
P$wimp%!8=1<<22   : wimp%!12=1<<22
P(!ș "Wimp_SetIconState",,wimp%
P2�
P<:
PF>� �PlotIcon(wimp%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
PP"wimp%!0=ix%      : wimp%!4=iy%
PZ&wimp%!8=ix%+iw% : wimp%!12=iy%+ih%
Pdwimp%!16=flag%
PnL� d1%=0 � $(wimp%+24)=text$ � wimp%!24=d1% : wimp%!28=d2% : wimp%!32=d3%
Pxș "Wimp_PlotIcon",,wimp%
P��
P�:
P�� �Sprites_Load
P�� S%,T%
P�1S%=�"<Obey$Dir>.Sprites":T%=�#S%+16:�#S%:S%=0
P�� sprites% T%, spname% 12
P�!sprites%=T%:sprites%!8=0
P�"ș "OS_SpriteOp",&109,sprites%
P�7ș "OS_SpriteOp",&10A,sprites%,"<Obey$Dir>.Sprites"
P��
P�:
P�#�------------------------------
P��*******MENU ROUTINES
Q#�------------------------------
Q:
Q� �Menu_AdjustOn(menu%)
Q"+ș "Wimp_GetPointerInfo",,pointer_wimp%
Q,[� ((pointer_wimp%!8)�1)=1 � ș "Wimp_CreateMenu",,menu%,pointer_wimp%!0,pointer_wimp%!4
Q6�
Q@:
QJ � �Menu_Create(menu$)
QT � menu%
Q^+ � menu% 28+�Menu_NoOfEntries(menu$)*24
Qh=�Menu_Build(menu%,menu$)
Qr:
Q| � �Menu_Build(menu%,menu$)
Q� � ypos%,width%,length%,k%
Q�5 menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
Q�, menu%!16=140 : menu%!20=44 : menu%!24=0
Q� ptr%=menu%+28
Q�! $menu%=�menu$,�menu$,"\")-1)
Q�$ width%=�(�menu$,�menu$,"\")-1))
Q�% menu$+="\" : Menu_NoOfEntries%=0
Q� ȕ menu$<>""
Q�"   menu$=�menu$,�menu$,"\")+1)
Q�   Ȏ menu$ �
Q�   � "":
Q�	   :
Q�.     !ptr%=0 : ptr%!4=-1 : ptr%!8=&7000021
R;     length%=�menu$,"\")-1 : k%=��menu$,length%),">")-1
R     � k%<>-1 � length%=k%
R#     $(ptr%+12)=�menu$,length%)
R&*     � length%>width% � width%=length%
R0     ptr%+=24
R:     Menu_NoOfEntries%+=1
RD   �
RN �
RX menu%!16=16*(width%+1)
Rb, ptr%!-24=ptr%!-24 � &80 : �...Last item
Rl =menu%
Rv:
R�) � �Menu_Build(� Menus%(),Menu$(),i%)
R�(  � ypos%,width%,length%,k%,j%,item$
R� $Buffer%=""
R� �j%=DIM(Menus%(),1)
R�. �WHILE Menu$(i%,j%)="" : j%-=1 : ENDWHILE
R� j%=NoOfSubmenus%(i%)
R� ptr%=Menu_Block%
R� �
R�8 menu%=ptr%  : Menus%(j%)=menu% : menu$=Menu$(i%,j%)
R�5 menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
R�, menu%!16=140 : menu%!20=44 : menu%!24=0
R� ptr%=menu%+28
R�! $menu%=�menu$,�menu$,"\")-1)
S$ width%=�(�menu$,�menu$,"\")-1))
S% menu$+="\" : Menu_NoOfEntries%=0
S ȕ menu$<>""
S "   menu$=�menu$,�menu$,"\")+1)
S*   Ȏ menu$ �
S4   � ""
S>	   :
SH.     !ptr%=0 : ptr%!4=-1 : ptr%!8=&7000021
SR     length%=�menu$,"\")-1
S\!     k%=��menu$,length%),">")
Sf     Ȏ k% �
Sp
     � 0:
Sz     :
S�'      item$=�menu$,k%+1,length%-k%)
S�      s%=�(item$)
S�2      � s%<100 � ptr%!4=Menus%(s%) � ptr%!4=s%
S�      length%=k%-1
S�
     �
S�#     $(ptr%+12)=�menu$,length%)
S�*     � length%>width% � width%=length%
S�     ptr%+=24
S�     Menu_NoOfEntries%+=1
S�   �
S� �
S� menu%!16=16*(width%+1)
S�, ptr%!-24=ptr%!-24 � &80 : �...Last item
T
 j%-=1
TC �Menu_Write(menu%,Menu_NoOfEntries%,Buffer%,-1,Buffer_Length%)
T � j%=0
T$, Menus%(0)=�Menu_Build(ptr%,Menu$(i%,0))
T.& �Menu_Glue(Menus%(0),2,Menus%(1))
T8 Ȏ Open%(i%) �
TB#  � � : �Menu_Tick(Menus%(0),3)
TL$   : �Menu_ATick(Menus%(0),3,0)
TV �
T` Ȏ Exit%(i%) �
Tj#  � � : �Menu_Tick(Menus%(0),4)
Tt$   : �Menu_ATick(Menus%(0),4,0)
T~ �
T� Ȏ i% �
T�.  � 0 : �Menu_Glue(Menus%(0),3,Wind_Menu%)
T� �
T�* �Menu_ForeGroundColour(Menus%(0),1,4)
T�* �Menu_ForeGroundColour(Menus%(0),2,4)
T�- �Menu_TitleForegroundColour(Menus%(0),4)
T�- �Menu_TitleBackgroundColour(Menus%(0),1)
T� �
T�:
T� � �Menu_Close
T�  ș "Wimp_CreateMenu",-1
T� �
U:
U
. � �Menu_Item(level%)=(wimp%!(4*level%))+1
U:
U � �Menu_NoOfEntries(menu$)
U( � n% ,j% : n%=0 : j%=0
U2 �
U<  j%=�menu$,"\",j%+1)
UF  � j%<>0 � n%+=1
UP � j%=0
UZ=n%
Ud:
Un� �BarMenu_PopUp(x%,y%)
Ux� n% : n%=0
U�, ȕ ((Bar_Menu%!(28+n%*24))�%10000000)=0
U�
 n%+=1
U� �
U�4 ș "Wimp_CreateMenu",,Bar_Menu%,x%-64,160+n%*44
U� menu%=Bar_Menu%
U��
U�:
U�� �Menu_PopUp(Menu%,x%,y%)
U� menu%=Menu%
U�, ș "Wimp_CreateMenu",,menu%,x%-64,y%+20
U��
U�:
U�& � �Menu_Glue(menu1%,item%,menu2%)
V menu1%!(8+item%*24)=menu2%
V �
V:
V"! � �Menu_UnGlue(menu1%,item%)
V, menu1%!(8+item%*24)=-1
V6 �
V@:
VJ! � �Menu_Message(menu%,item%)
VT= menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�(1<<3)
V^ �
Vh:
Vr � �Menu_Tick(menu%,item%)
V|8 menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�1
V� �
V� :
V�" � �Menu_ATick(menu%,item%,i%)
V�= � x% : x%=menu%!(28+(item%-1)*24) : x%=x%>>>1 : x%=x%<<1
V� Ȏ i% �
V�  � 1 : x%=x%+1
V� �
V� menu%!(28+(item%-1)*24)=x%
V� �
V� :
V�$ � �Menu_DottedLine(menu%,item%)
V�8 menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�2
V� �
W :
W2 � �Menu_ForeGroundColour(menu%,item%,colour%)
WF menu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))�16)
W& �
W0 :
W:2 � �Menu_BackGroundColour(menu%,item%,colour%)
WD � fore%,rem%
WN' fore%=(menu%?(39+(item%-1)*24))�16
WX+ rem%=((menu%?(39+(item%-1)*24))�16)�16
Wb2 menu%?(39+(item%-1)*24)=fore%+16*colour%+rem%
Wl �
Wv :
W�, � �Menu_ColourItem(menu%,item%,colour%)
W�$ menu%?(39+(item%-1)*24)=colour%
W� �
W� :
W�  � �Colour(i%)
W�	 � j%
W� Ȏ � �
W�+   � i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
W�&                           : j%=0
W� �
W� =i%*16+j%
W� :
W� � �ColourTick(number%)
X �Tick(Colours%,number%+1)
X8 ș "Wimp_CreateSubMenu",,Colours%,wimp%!24,wimp%!28
X �Tick(Colours%,number%+1)
X  �
X* :
X41 � �Wimp_ColourMenu=�Wimp_ColoursMenu("    ")
X> :
XH  � �Wimp_ColoursMenu(title$)
XR � x$,men%,j%
X\7 x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
Xf men%=�Menu_Create(x$)
Xp � i%=0 � 15
Xz Ȏ � �
X�+   � i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
X�&                           : j%=0
X� �
X�+   �Menu_ColourItem(men%,i%+1,i%*16+j%)
X�   �Menu_Centre(men%,i%+1)
X� �
X�
 =men%
X� :
X�  � �Menu_Centre(menu%,item%)
X�; menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<3)
X� �
X� :
X�! � �Menu_Disable(menu%,item%)
Y< menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<22)
Y �
Y :
Y$  � �Menu_Enable(menu%,item%)
Y. �Menu_Disable(menu%,item%)
Y8< menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<22)
YB �
YL :
YV: � �Menu_Write(menu%,item%,buffer%,val%,BufferLength%)
Y`8 menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�4
Yj9 menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�&100
Yt$ menu%!(40+(item%-1)*24)=buffer%
Y~! menu%!(44+(item%-1)*24)=val%
Y�* menu%!(48+(item%-1)*24)=BufferLength%
Y� �
Y� :
Y�  � �Menu_Title(menu%,title$)
Y� $menu%=�title$,12)+�0
Y� �
Y� :
Y�1 � �Menu_TitleForegroundColour(menu%,colour%)
Y� menu%?12=colour%
Y� �
Y� :
Y�1 � �Menu_TitleBackgroundColour(menu%,colour%)
Z menu%?13=colour%
Z
 �
Z :
Z$ � �Menu_Item(menu%,item%,item$)
Z(- $(menu%+(40+(item%-1)*24))=�item$,12)+�0
Z2 �
Z<:
ZF#�------------------------------
ZP�*******FILE ROUTINES
ZZ#�------------------------------
Zd:
Zn� �File_Type
Zx Ȏ wimp%!40 �
Z�  � &FFF :="Text"
Z�  � &FFD :="Data"
Z�  � &FFB :="Basic"
Z�  � &FF9 :="Sprite"
Z�  � &FED :="Palette"
Z�  � &FEC :="Template"
Z�  � &AFF :="Draw"
Z�  � &1000:="Folder"
Z�  � &2000:="Application"
Z�  =�~(wimp%!40)
Z� �
Z�:
Z�3� �File_PathName=�Get_StringAtAddress(wimp%+44)
[:
[� �File_Load(f$)
[ � S%,T%
[" � offset% 4
[, S%=� f$
[6 T%=�#S%+16
[@ �#S%=0
[J  ș "OS_GBPB",4,S%,offset%,4
[T �#S%:S%=0
[^ Ȏ offset%!0 �
[h  �    -1:� file% T%:S%=�
[r
   :S%=�
[| �
[� =S%
[�
[�:
[� � �Get_StringAtAddress(ptr%)
[� � s$ : s$=""
[�: ȕ (?ptr%<>13)�(?ptr%<>0) : s$+=�(?ptr%): ptr%+=1 :�:
[� =s$
[�:
[�� �Get_StringFromPath(f$)
[�?� �f$,".")=0 �=f$�=�Get_StringFromPath(�f$,�(f$)-�f$,".")))
[�:
[�#�------------------------------
[��*******SPRITE ROUTINES
\#�------------------------------
\�
\:
\&#�------------------------------
\0�*******MISCELLANEOUS
\:#�------------------------------
\D:
\N*� �Wimp_Alert(title$,message$,button%)
\X:�...Places alert box with title and message on screen.
\b$�...See page 1243 RiscOs manual.
\l� response%
\v$(wimp%+4)=message$
\�Ȏ button% �
\�.  � 2    : response%=1     : �...Error Box
\�9  � 1    : response%=15    : �...OK and CANCEL butons
\�"  � 3    : response%=(1<<5)+16
\�"  � 4    : response%=(1<<6)+16
\�.   : response%=16    : �...OK button only
\��
\�=ș "Wimp_ReportError",wimp%,response%,title$ � ,response%
\��
\�:
\�!� �CancelBox(title$,message$)
\� $(wimp%+4)=message$
\� response%=23
]> ș "Wimp_ReportError",wimp%,response%,title$ � ,response%
]=response%
]:
] � �Wimp_BASICParameters
]* � com$,param$,I%
]4 ș "OS_GetEnv" � com$
]> params$=""
]H I%=�com$," -quit ")
]R5 � I% � params$=�com$,�com$," ",I%+�" -quit ")+1)
]\=params$
]f%� �Wimp_ErrorBox(title$,message$)
]p"�Wimp_Alert(title$,message$,2)
]z�
]�:
]� � �AlertBox(title$,message$)
]�"�Wimp_Alert(title$,message$,0)
]��
]�:
]�&� �Wimp_CancelBox(title$,message$)
]�"�Wimp_Alert(title$,message$,1)
]��
]�:
]�:
]�#� �Wimp_ReadVariable(Variable$)
]��len%,result%,variable%
]�$wimp%=Variable$
^4ș"OS_ReadVarVal",wimp%,wimp%+255,255,,3 �,,len%
^wimp%?(len%+255)=13
^=$(wimp%+255)
^$:
^.� �Wimp_SendToEdit(file$)
^8� n%
^Bwimp%!4=&6CC01C0C
^Lwimp%!16=5
^Vwimp%!36=0
^`wimp%!40=&FFF
^j$(wimp%+44)=file$+�0
^tn%=�file$+45
^~,� n%�4 � !wimp%=4+(n%>>2)<<2 � !wimp%=n%
^�$ș "Wimp_SendMessage",17,wimp%,0
^��
^�:
^�� �Wimp_SpritesLoad
^�/�|This loads a file called Sprites from the
^�
�|path
^�$�|            <Obey$Dir>.Sprites
^��|
^��|
^�/�Wimp_SpritesPathLoad("<Obey$Dir>.Sprites")
^��
^�:
_&� �Wimp_SpritesPathLoad(pathname$)
_
.�|This loads a sprites file with full name
_�|given by pathname$. E.g.
_�|
_(0�|    PROCWimp_SpritesPathLoad("$.Pictures")
_2�|
_<
�S%,T%
_F'S%=� pathname$:T%=�#S%+16:�#S%:S%=0
_P�sprites%T%,spname%12
_Z!sprites%=T%:sprites%!8=0
_d!ș"OS_SpriteOp",&109,sprites%
_n+ș"OS_SpriteOp",&10A,sprites%,pathname$
_x�
_�:
_� � �Wimp_SpritesPlot(sprite$)
_��|
_��|
_��|
_��|
_��|
_�-ș"OS_SpriteOp",&11C,sprites%,sprite$,,,0
_��
_�:
_�"� �Wimp_SpritesDelete(sprite$)
_��|
_��|
`�|
`�|
`�|
`")ș"OS_SpriteOp",&119,sprites%,sprite$
`,�
`6:
`@(� �Wimp_SpritesRename(sprite$,name$)
`J�|
`T�|
`^�|
`h�|
`r�|
`|/ș"OS_SpriteOp",&11A,sprites%,sprite$,name$
`��
`�:
`�9ݤicon_newsprite(b,whandle%,ihandle%,newname$,redraw)
`�b!0=whandle%:b!4=ihandle%
`�ș "Wimp_GetIconState",,b
`�ș "Wimp_DeleteIcon",,b
`�Cb!4=b!8:b!8=b!12:b!12=b!16:b!16=b!20:b!20=b!24:$(b+24)=newname$
`�&ș "Wimp_CreateIcon",,b � ihandle%
`�:� redraw � ș "Wimp_ForceRedraw",b!0,b!4,b!8,b!12,b!16
`�
=ihandle%
`�:
`�#� �Wimp_ReadVariable(Variable$)
`��len%,result%,variable%
a$wimp%=Variable$
a3ș"OS_ReadVarVal",wimp%,wimp%+255,255,,3�,,len%
awimp%?(len%+255)=13
a&=$(wimp%+255)
a0:
a:� �code
aD� append% 24
aN#� K%=0 � 1:P%=append%:[OPT 2*K%
aX
.nextbyte
ab MOV R1,R6:SWI "OS_BGet"
al MOVCS PC,R14
av MOV R1,R5:SWI "OS_BPut"
a� B nextbyte
a�]:�
a��
�
00000000  0d 00 0a 23 f4 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...#.-----------|
00000010  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000020  2d 2d 2d 0d 00 14 18 f4  20 20 20 20 20 20 20 4d  |---.....       M|
00000030  41 49 4e 20 50 52 4f 47  52 41 4d 0d 00 1e 23 f4  |AIN PROGRAM...#.|
00000040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000050  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 00  |--------------..|
00000060  28 05 f4 0d 00 32 04 0d  00 3c 31 20 62 6c 6f 63  |(....2...<1 bloc|
00000070  6b 5f 6d 65 6d 6f 72 79  25 3d 33 30 2a 31 30 32  |k_memory%=30*102|
00000080  34 20 3a 20 69 63 6f 6e  5f 6d 65 6d 6f 72 79 25  |4 : icon_memory%|
00000090  3d 32 30 2a 31 30 32 34  0d 00 46 1f 20 77 69 6d  |=20*1024..F. wim|
000000a0  70 5f 6d 65 6d 6f 72 79  25 3d 30 3a 69 6e 64 69  |p_memory%=0:indi|
000000b0  72 65 63 74 25 3d 30 0d  00 50 06 20 3a 0d 00 5a  |rect%=0..P. :..Z|
000000c0  20 20 54 61 73 6b 24 3d  a4 57 69 6d 70 5f 53 74  |  Task$=.Wimp_St|
000000d0  61 72 74 28 22 57 69 6d  70 45 64 22 29 0d 00 64  |art("WimpEd")..d|
000000e0  16 20 20 20 f2 43 72 65  61 74 65 5f 57 69 6e 64  |.   .Create_Wind|
000000f0  6f 77 73 0d 00 6e 14 20  20 20 f2 43 72 65 61 74  |ows..n.   .Creat|
00000100  65 5f 49 63 6f 6e 73 0d  00 78 14 20 20 20 f2 43  |e_Icons..x.   .C|
00000110  72 65 61 74 65 5f 4d 65  6e 75 73 0d 00 82 19 20  |reate_Menus.... |
00000120  20 20 f2 43 72 65 61 74  65 5f 49 6e 69 74 69 61  |  .Create_Initia|
00000130  6c 69 73 65 0d 00 8c 05  20 0d 00 96 3f 20 f2 57  |lise.... ...? .W|
00000140  69 6d 70 5f 57 61 69 74  46 6f 72 45 76 65 6e 74  |imp_WaitForEvent|
00000150  28 64 72 61 77 25 2b 6d  6f 75 73 65 25 2b 6d 65  |(draw%+mouse%+me|
00000160  6e 75 25 2b 6d 65 73 73  61 67 65 25 2b 64 72 61  |nu%+message%+dra|
00000170  67 25 2b 6b 65 79 25 29  0d 00 a0 14 20 f2 57 69  |g%+key%).... .Wi|
00000180  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 0d 00 aa 05  |mp_CloseDown....|
00000190  e0 0d 00 b4 05 3a 0d 00  be 23 f4 2d 2d 2d 2d 2d  |.....:...#.-----|
000001a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000001b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 00 c8 23 f4 2d 2d  |---------...#.--|
000001c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000001d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 d2 23  |------------...#|
000001e0  f4 20 20 49 4e 44 45 58  20 4f 46 20 45 56 45 4e  |.  INDEX OF EVEN|
000001f0  54 53 20 54 4f 20 44 45  41 4c 20 57 49 54 48 0d  |TS TO DEAL WITH.|
00000200  00 dc 23 f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..#.------------|
00000210  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000220  2d 2d 0d 00 e6 23 f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |--...#.---------|
00000230  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000240  2d 2d 2d 2d 2d 0d 00 f0  05 f4 0d 00 fa 1d f4 45  |-----..........E|
00000250  76 65 6e 74 30 20 3a 20  20 54 48 45 20 4e 55 4c  |vent0 :  THE NUL|
00000260  4c 20 45 56 45 4e 54 0d  01 04 26 f4 45 76 65 6e  |L EVENT...&.Even|
00000270  74 31 20 3a 20 20 44 52  41 57 49 4e 47 20 57 49  |t1 :  DRAWING WI|
00000280  4e 44 4f 57 53 20 52 45  51 55 45 53 54 0d 01 0e  |NDOWS REQUEST...|
00000290  22 f4 45 76 65 6e 74 32  20 3a 20 20 4f 50 45 4e  |".Event2 :  OPEN|
000002a0  20 57 49 4e 44 4f 57 20  52 45 51 55 45 53 54 0d  | WINDOW REQUEST.|
000002b0  01 18 23 f4 45 76 65 6e  74 33 20 3a 20 20 43 4c  |..#.Event3 :  CL|
000002c0  4f 53 45 20 57 49 4e 44  4f 57 20 52 45 51 55 45  |OSE WINDOW REQUE|
000002d0  53 54 0d 01 22 25 f4 45  76 65 6e 74 34 20 3a 20  |ST.."%.Event4 : |
000002e0  20 50 4f 49 4e 54 45 52  20 4c 45 41 56 49 4e 47  | POINTER LEAVING|
000002f0  20 57 49 4e 44 4f 57 0d  01 2c 26 f4 45 76 65 6e  | WINDOW..,&.Even|
00000300  74 35 20 3a 20 20 50 4f  49 4e 54 45 52 20 45 4e  |t5 :  POINTER EN|
00000310  54 45 52 49 4e 47 20 57  49 4e 44 4f 57 0d 01 36  |TERING WINDOW..6|
00000320  1b f4 45 76 65 6e 74 36  20 3a 20 20 4d 4f 55 53  |..Event6 :  MOUS|
00000330  45 20 43 4c 49 43 4b 53  0d 01 40 14 f4 45 76 65  |E CLICKS..@..Eve|
00000340  6e 74 37 20 3a 20 20 44  52 41 47 53 0d 01 4a 1a  |nt7 :  DRAGS..J.|
00000350  f4 45 76 65 6e 74 38 20  3a 20 20 4b 45 59 20 50  |.Event8 :  KEY P|
00000360  52 45 53 53 45 53 0d 01  54 1b f4 45 76 65 6e 74  |RESSES..T..Event|
00000370  39 20 3a 20 20 4d 45 4e  55 20 43 48 4f 49 43 45  |9 :  MENU CHOICE|
00000380  53 0d 01 5e 1e f4 45 76  65 6e 74 31 30 3a 20 20  |S..^..Event10:  |
00000390  53 43 52 4f 4c 4c 20 52  45 51 55 45 53 54 53 0d  |SCROLL REQUESTS.|
000003a0  01 68 19 f4 45 76 65 6e  74 31 31 3a 20 20 4c 4f  |.h..Event11:  LO|
000003b0  53 45 20 43 41 52 45 54  0d 01 72 19 f4 45 76 65  |SE CARET..r..Eve|
000003c0  6e 74 31 32 3a 20 20 47  41 49 4e 20 43 41 52 45  |nt12:  GAIN CARE|
000003d0  54 0d 01 7c 05 f4 0d 01  86 1e f4 45 76 65 6e 74  |T..|.......Event|
000003e0  73 31 37 2f 31 38 2f 31  39 3a 20 20 4d 45 53 53  |s17/18/19:  MESS|
000003f0  41 47 45 53 0d 01 90 06  f4 21 0d 01 9a 23 f4 2d  |AGES.....!...#.-|
00000400  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000410  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 01 a4  |-------------...|
00000420  23 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |#.--------------|
00000430  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000440  0d 01 ae 05 3a 0d 01 b8  05 3a 0d 01 c2 23 f4 2d  |....:....:...#.-|
00000450  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000460  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 01 cc  |-------------...|
00000470  1e f4 20 20 20 20 20 20  20 49 4e 49 54 49 41 4c  |..       INITIAL|
00000480  20 50 52 4f 43 45 44 55  52 45 53 0d 01 d6 23 f4  | PROCEDURES...#.|
00000490  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000004a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 01  |--------------..|
000004b0  e0 05 3a 0d 01 ea 15 dd  20 f2 43 72 65 61 74 65  |..:..... .Create|
000004c0  5f 57 69 6e 64 6f 77 73  0d 01 f4 26 20 49 6e 66  |_Windows...& Inf|
000004d0  6f 5f 57 69 6e 64 6f 77  25 3d a4 57 69 6e 64 6f  |o_Window%=.Windo|
000004e0  77 5f 4c 6f 61 64 28 22  69 6e 66 6f 22 29 0d 01  |w_Load("info")..|
000004f0  fe 26 20 53 61 76 65 5f  57 69 6e 64 6f 77 25 3d  |.& Save_Window%=|
00000500  a4 57 69 6e 64 6f 77 5f  4c 6f 61 64 28 22 73 61  |.Window_Load("sa|
00000510  76 65 22 29 0d 02 08 05  e1 0d 02 12 05 3a 0d 02  |ve").........:..|
00000520  1c 13 dd 20 f2 43 72 65  61 74 65 5f 49 63 6f 6e  |... .Create_Icon|
00000530  73 0d 02 26 23 20 42 61  72 5f 49 63 6f 6e 25 3d  |s..&# Bar_Icon%=|
00000540  a4 49 63 6f 6e 5f 42 61  72 28 22 21 57 69 6d 70  |.Icon_Bar("!Wimp|
00000550  45 64 22 29 0d 02 30 05  e1 0d 02 3a 05 3a 0d 02  |Ed")..0....:.:..|
00000560  44 13 dd 20 f2 43 72 65  61 74 65 5f 4d 65 6e 75  |D.. .Create_Menu|
00000570  73 0d 02 4e 4e 20 20 42  61 72 5f 4d 65 6e 75 25  |s..NN  Bar_Menu%|
00000580  3d a4 4d 65 6e 75 5f 43  72 65 61 74 65 28 22 57  |=.Menu_Create("W|
00000590  69 6d 70 45 64 5c 49 6e  66 6f 5c 43 68 6f 69 63  |impEd\Info\Choic|
000005a0  65 73 5c 57 69 6e 64 6f  77 73 5c 49 63 6f 6e 20  |es\Windows\Icon |
000005b0  42 61 72 5c 53 61 76 65  5c 51 75 69 74 22 29 0d  |Bar\Save\Quit").|
000005c0  02 58 57 20 20 43 68 6f  69 63 65 5f 4d 65 6e 75  |.XW  Choice_Menu|
000005d0  25 3d a4 4d 65 6e 75 5f  43 72 65 61 74 65 28 22  |%=.Menu_Create("|
000005e0  43 68 6f 69 63 65 73 5c  4e 6f 20 52 45 4d 73 5c  |Choices\No REMs\|
000005f0  54 65 72 73 65 5c 4c 69  62 72 61 72 79 5c 4c 6f  |Terse\Library\Lo|
00000600  61 64 54 6f 45 64 69 74  6f 72 5c 49 6e 74 65 72  |adToEditor\Inter|
00000610  66 61 63 65 22 29 0d 02  62 2a 20 20 f2 4d 65 6e  |face")..b*  .Men|
00000620  75 5f 47 6c 75 65 28 42  61 72 5f 4d 65 6e 75 25  |u_Glue(Bar_Menu%|
00000630  2c 31 2c 49 6e 66 6f 5f  57 69 6e 64 6f 77 25 29  |,1,Info_Window%)|
00000640  0d 02 6c 2a 20 20 f2 4d  65 6e 75 5f 47 6c 75 65  |..l*  .Menu_Glue|
00000650  28 42 61 72 5f 4d 65 6e  75 25 2c 32 2c 43 68 6f  |(Bar_Menu%,2,Cho|
00000660  69 63 65 5f 4d 65 6e 75  25 29 0d 02 76 2a 20 20  |ice_Menu%)..v*  |
00000670  f2 4d 65 6e 75 5f 47 6c  75 65 28 42 61 72 5f 4d  |.Menu_Glue(Bar_M|
00000680  65 6e 75 25 2c 35 2c 53  61 76 65 5f 57 69 6e 64  |enu%,5,Save_Wind|
00000690  6f 77 25 29 0d 02 80 20  20 20 f2 4d 65 6e 75 5f  |ow%)...   .Menu_|
000006a0  44 69 73 61 62 6c 65 28  42 61 72 5f 4d 65 6e 75  |Disable(Bar_Menu|
000006b0  25 2c 33 29 0d 02 8a 20  20 20 f2 4d 65 6e 75 5f  |%,3)...   .Menu_|
000006c0  44 69 73 61 62 6c 65 28  42 61 72 5f 4d 65 6e 75  |Disable(Bar_Menu|
000006d0  25 2c 34 29 0d 02 94 23  20 20 f2 4d 65 6e 75 5f  |%,4)...#  .Menu_|
000006e0  44 6f 74 74 65 64 4c 69  6e 65 28 42 61 72 5f 4d  |DottedLine(Bar_M|
000006f0  65 6e 75 25 2c 32 29 0d  02 9e 23 20 20 f2 4d 65  |enu%,2)...#  .Me|
00000700  6e 75 5f 44 6f 74 74 65  64 4c 69 6e 65 28 42 61  |nu_DottedLine(Ba|
00000710  72 5f 4d 65 6e 75 25 2c  34 29 0d 02 a8 26 20 20  |r_Menu%,4)...&  |
00000720  f2 4d 65 6e 75 5f 44 6f  74 74 65 64 4c 69 6e 65  |.Menu_DottedLine|
00000730  28 43 68 6f 69 63 65 5f  4d 65 6e 75 25 2c 34 29  |(Choice_Menu%,4)|
00000740  0d 02 b2 1b 20 20 63 6f  6c 25 3d a4 57 69 6d 70  |....  col%=.Wimp|
00000750  5f 43 6f 6c 6f 75 72 4d  65 6e 75 0d 02 bc 05 e1  |_ColourMenu.....|
00000760  0d 02 c6 05 3a 0d 02 d0  18 dd 20 f2 43 72 65 61  |....:..... .Crea|
00000770  74 65 5f 49 6e 69 74 69  61 6c 69 73 65 0d 02 da  |te_Initialise...|
00000780  0a 20 f2 63 6f 64 65 0d  02 e4 21 20 77 69 6d 70  |. .code...! wimp|
00000790  5f 6d 65 6d 6f 72 79 25  3d 30 20 3a 20 69 6e 64  |_memory%=0 : ind|
000007a0  69 72 65 63 74 25 3d 30  0d 02 ee 37 20 54 65 6d  |irect%=0...7 Tem|
000007b0  70 6c 61 74 65 24 3d 22  22 20 3a 20 53 53 70 72  |plate$="" : SSpr|
000007c0  69 74 65 24 3d 22 22 20  3a 20 53 70 72 69 74 65  |ite$="" : Sprite|
000007d0  24 3d 22 22 20 20 3a 20  6e 65 78 74 25 3d 30 0d  |$=""  : next%=0.|
000007e0  02 f8 20 20 4e 61 6d 65  24 3d 22 54 61 73 6b 22  |..  Name$="Task"|
000007f0  20 3a 20 69 6e 74 65 72  66 61 63 65 25 3d a3 0d  | : interface%=..|
00000800  03 02 3c 20 4e 6f 4f 66  4d 65 6e 75 73 25 3d 31  |..< NoOfMenus%=1|
00000810  36 20 3a 20 4e 6f 4f 66  49 74 65 6d 73 25 3d 31  |6 : NoOfItems%=1|
00000820  36 20 3a 20 4e 6f 4f 66  57 69 6e 64 6f 77 73 25  |6 : NoOfWindows%|
00000830  3d 30 20 3a 20 42 61 72  25 3d a3 0d 03 0c 17 20  |=0 : Bar%=..... |
00000840  4e 6f 4f 66 43 6f 6c 6f  75 72 4d 65 6e 75 73 25  |NoOfColourMenus%|
00000850  3d 30 0d 03 16 46 20 42  75 66 66 65 72 5f 4c 65  |=0...F Buffer_Le|
00000860  6e 67 74 68 25 3d 31 32  20 20 3a 20 70 72 6f 6c  |ngth%=12  : prol|
00000870  69 78 25 3d b9 20 3a 20  74 65 72 73 65 25 3d a3  |ix%=. : terse%=.|
00000880  20 3a 20 63 6d 65 6e 75  25 3d 30 20 3a 20 4c 69  | : cmenu%=0 : Li|
00000890  62 72 61 72 79 25 3d a3  0d 03 20 0e 20 45 64 69  |brary%=... . Edi|
000008a0  74 6f 72 25 3d a3 0d 03  2a 1d 20 de 20 42 75 66  |tor%=...*. . Buf|
000008b0  66 65 72 25 20 42 75 66  66 65 72 5f 4c 65 6e 67  |fer% Buffer_Leng|
000008c0  74 68 25 0d 03 34 1e 20  de 20 42 75 66 66 65 72  |th%..4. . Buffer|
000008d0  31 25 20 42 75 66 66 65  72 5f 4c 65 6e 67 74 68  |1% Buffer_Length|
000008e0  25 0d 03 3e 1e 20 de 20  42 75 66 66 65 72 32 25  |%..>. . Buffer2%|
000008f0  20 42 75 66 66 65 72 5f  4c 65 6e 67 74 68 25 0d  | Buffer_Length%.|
00000900  03 48 2d 20 de 20 4d 65  6e 75 73 25 28 4e 6f 4f  |.H- . Menus%(NoO|
00000910  66 4d 65 6e 75 73 25 29  20 3a 20 de 20 43 6f 6c  |fMenus%) : . Col|
00000920  6f 75 72 4d 65 6e 75 25  28 31 36 29 0d 03 52 30  |ourMenu%(16)..R0|
00000930  20 de 20 4d 65 6e 75 5f  42 6c 6f 63 6b 25 20 4e  | . Menu_Block% N|
00000940  6f 4f 66 4d 65 6e 75 73  25 2a 28 32 38 2b 4e 6f  |oOfMenus%*(28+No|
00000950  4f 66 49 74 65 6d 73 25  2a 32 34 29 0d 03 5c 2a  |OfItems%*24)..\*|
00000960  20 de 20 64 61 74 65 25  20 35 30 20 3a 20 de 20  | . date% 50 : . |
00000970  54 79 70 65 24 28 31 36  29 20 3a 20 54 79 70 65  |Type$(16) : Type|
00000980  24 28 29 3d 22 22 0d 03  66 29 20 6d 61 6b 65 24  |$()=""..f) make$|
00000990  3d a4 57 69 6d 70 5f 52  65 61 64 56 61 72 69 61  |=.Wimp_ReadVaria|
000009a0  62 6c 65 28 22 4d 61 6b  65 24 44 69 72 22 29 0d  |ble("Make$Dir").|
000009b0  03 70 18 20 66 69 6c 65  24 3d 6d 61 6b 65 24 2b  |.p. file$=make$+|
000009c0  22 2e 44 61 74 61 22 0d  03 7a 13 20 66 69 6c 65  |".Data"..z. file|
000009d0  25 3d ad 28 66 69 6c 65  24 29 0d 03 84 2c 20 e8  |%=.(file$)..., .|
000009e0  23 66 69 6c 65 25 2c 70  72 6f 6c 69 78 25 2c 74  |#file%,prolix%,t|
000009f0  65 72 73 65 25 2c 4c 69  62 72 61 72 79 25 2c 45  |erse%,Library%,E|
00000a00  64 69 74 6f 72 25 0d 03  8e 14 20 d9 23 66 69 6c  |ditor%.... .#fil|
00000a10  65 25 3a 66 69 6c 65 25  3d 30 0d 03 98 2e 20 e7  |e%:file%=0.... .|
00000a20  20 ac 28 70 72 6f 6c 69  78 25 29 20 8c 20 f2 4d  | .(prolix%) . .M|
00000a30  65 6e 75 5f 54 69 63 6b  28 43 68 6f 69 63 65 5f  |enu_Tick(Choice_|
00000a40  4d 65 6e 75 25 2c 31 29  0d 03 a2 2a 20 e7 20 74  |Menu%,1)...* . t|
00000a50  65 72 73 65 25 20 8c 20  f2 4d 65 6e 75 5f 54 69  |erse% . .Menu_Ti|
00000a60  63 6b 28 43 68 6f 69 63  65 5f 4d 65 6e 75 25 2c  |ck(Choice_Menu%,|
00000a70  32 29 0d 03 ac 2c 20 e7  20 4c 69 62 72 61 72 79  |2)..., . Library|
00000a80  25 20 8c 20 f2 4d 65 6e  75 5f 54 69 63 6b 28 43  |% . .Menu_Tick(C|
00000a90  68 6f 69 63 65 5f 4d 65  6e 75 25 2c 33 29 0d 03  |hoice_Menu%,3)..|
00000aa0  b6 2b 20 e7 20 45 64 69  74 6f 72 25 20 8c 20 f2  |.+ . Editor% . .|
00000ab0  4d 65 6e 75 5f 54 69 63  6b 28 43 68 6f 69 63 65  |Menu_Tick(Choice|
00000ac0  5f 4d 65 6e 75 25 2c 34  29 0d 03 c0 05 e1 0d 03  |_Menu%,4).......|
00000ad0  ca 05 3a 0d 03 d4 23 f4  2d 2d 2d 2d 2d 2d 2d 2d  |..:...#.--------|
00000ae0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000af0  2d 2d 2d 2d 2d 2d 0d 03  de 26 f4 45 76 65 6e 74  |------...&.Event|
00000b00  31 20 3a 20 20 44 52 41  57 49 4e 47 20 57 49 4e  |1 :  DRAWING WIN|
00000b10  44 4f 57 53 20 52 45 51  55 45 53 54 0d 03 e8 23  |DOWS REQUEST...#|
00000b20  f4 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00000b30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00000b40  03 f2 05 3a 0d 03 fc 20  dd 20 f2 45 76 65 6e 74  |...:... . .Event|
00000b50  5f 44 72 61 77 57 69 6e  64 6f 77 28 77 69 6e 64  |_DrawWindow(wind|
00000b60  6f 77 25 29 0d 04 06 05  e1 0d 04 10 05 3a 0d 04  |ow%).........:..|
00000b70  1a 23 f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.#.-------------|
00000b80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000b90  2d 0d 04 24 1b f4 45 76  65 6e 74 36 20 3a 20 20  |-..$..Event6 :  |
00000ba0  4d 4f 55 53 45 20 43 4c  49 43 4b 53 0d 04 2e 23  |MOUSE CLICKS...#|
00000bb0  f4 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00000bc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00000bd0  04 38 05 3a 0d 04 42 3c  dd 20 f2 45 76 65 6e 74  |.8.:..B<. .Event|
00000be0  5f 44 65 61 6c 57 69 74  68 4d 6f 75 73 65 43 6c  |_DealWithMouseCl|
00000bf0  69 63 6b 28 62 75 74 74  6f 6e 25 2c 77 69 6e 64  |ick(button%,wind|
00000c00  6f 77 25 2c 69 63 6f 6e  25 2c 78 25 2c 79 25 29  |ow%,icon%,x%,y%)|
00000c10  0d 04 4c 10 c8 8e 20 62  75 74 74 6f 6e 25 20 ca  |..L... button% .|
00000c20  0d 04 56 2d 20 c9 20 32  20 20 20 20 3a 20 f2 50  |..V- . 2    : .P|
00000c30  6f 70 55 70 4d 65 6e 75  28 77 69 6e 64 6f 77 25  |opUpMenu(window%|
00000c40  2c 69 63 6f 6e 25 2c 78  25 2c 79 25 29 0d 04 60  |,icon%,x%,y%)..`|
00000c50  30 20 7f 20 3a 20 e7 20  69 6e 74 65 72 66 61 63  |0 . : . interfac|
00000c60  65 25 20 c8 99 22 57 69  6d 70 5f 42 6f 72 64 65  |e% .."Wimp_Borde|
00000c70  72 49 63 6f 6e 22 2c 2c  77 69 6d 70 25 0d 04 6a  |rIcon",,wimp%..j|
00000c80  05 cb 0d 04 74 05 e1 0d  04 7e 05 3a 0d 04 88 26  |....t....~.:...&|
00000c90  20 dd 20 f2 50 6f 70 55  70 4d 65 6e 75 28 77 69  | . .PopUpMenu(wi|
00000ca0  6e 64 6f 77 25 2c 69 63  6f 6e 25 2c 78 25 2c 79  |ndow%,icon%,x%,y|
00000cb0  25 29 0d 04 92 3a 20 e7  20 77 69 6e 64 6f 77 25  |%)...: . window%|
00000cc0  3d 30 20 8c 20 78 78 78  25 3d 36 34 30 20 3a 20  |=0 . xxx%=640 : |
00000cd0  79 79 79 25 3d 35 31 32  20 8b 20 78 78 78 25 3d  |yyy%=512 . xxx%=|
00000ce0  78 25 20 3a 20 79 79 79  25 3d 79 25 0d 04 9c 09  |x% : yyy%=y%....|
00000cf0  20 ea 20 69 25 0d 04 a6  12 20 20 c8 8e 20 77 69  | . i%....  .. wi|
00000d00  6e 64 6f 77 25 20 ca 0d  04 b0 14 20 20 20 c9 20  |ndow% .....   . |
00000d10  42 61 72 5f 57 69 6e 64  6f 77 25 0d 04 ba 12 20  |Bar_Window%.... |
00000d20  20 20 20 c8 8e 20 69 63  6f 6e 25 20 ca 0d 04 c4  |   .. icon% ....|
00000d30  2c 20 20 20 20 20 c9 20  42 61 72 5f 49 63 6f 6e  |,     . Bar_Icon|
00000d40  25 20 3a 20 f2 42 61 72  4d 65 6e 75 5f 50 6f 70  |% : .BarMenu_Pop|
00000d50  55 70 28 78 25 2c 79 25  29 0d 04 ce 09 20 20 20  |Up(x%,y%)....   |
00000d60  20 cb 0d 04 d8 08 20 20  20 7f 0d 04 e2 0d 20 20  | .....   .....  |
00000d70  20 20 69 25 3d 2d 31 0d  04 ec 0f 20 20 20 20 f5  |  i%=-1....    .|
00000d80  20 69 25 2b 3d 31 0d 04  f6 3e 20 20 20 20 20 20  | i%+=1...>      |
00000d90  e7 20 77 69 6e 64 6f 77  25 3d 57 69 6e 64 6f 77  |. window%=Window|
00000da0  25 28 69 25 29 20 8c 20  f2 57 69 6e 64 6f 77 73  |%(i%) . .Windows|
00000db0  4d 65 6e 75 5f 50 6f 70  55 70 28 69 25 2c 78 25  |Menu_PopUp(i%,x%|
00000dc0  2c 79 25 29 0d 05 00 33  20 20 20 20 fd 20 28 69  |,y%)...3    . (i|
00000dd0  25 3d 4e 6f 4f 66 57 69  6e 64 6f 77 73 25 29 20  |%=NoOfWindows%) |
00000de0  84 20 28 77 69 6e 64 6f  77 25 3d 57 69 6e 64 6f  |. (window%=Windo|
00000df0  77 25 28 69 25 29 29 0d  05 0a 07 20 20 cb 0d 05  |w%(i%))....  ...|
00000e00  14 06 20 e1 0d 05 1e 06  20 3a 0d 05 28 24 20 20  |.. ..... :..($  |
00000e10  dd 20 f2 57 69 6e 64 6f  77 73 4d 65 6e 75 5f 50  |. .WindowsMenu_P|
00000e20  6f 70 55 70 28 69 25 2c  78 25 2c 79 25 29 0d 05  |opUp(i%,x%,y%)..|
00000e30  32 0a 20 20 ea 20 6e 25  0d 05 3c 16 20 20 20 78  |2.  . n%..<.   x|
00000e40  78 25 3d 78 25 20 3a 20  79 79 25 3d 79 25 0d 05  |x%=x% : yy%=y%..|
00000e50  46 16 20 20 20 77 69 6e  64 6f 77 5f 6d 65 6e 75  |F.   window_menu|
00000e60  25 3d 69 25 0d 05 50 27  20 20 20 f2 4d 65 6e 75  |%=i%..P'   .Menu|
00000e70  5f 42 75 69 6c 64 28 4d  65 6e 75 73 25 28 29 2c  |_Build(Menus%(),|
00000e80  4d 65 6e 75 24 28 29 2c  69 25 29 0d 05 5a 23 20  |Menu$(),i%)..Z# |
00000e90  20 20 f2 4d 65 6e 75 5f  50 6f 70 55 70 28 4d 65  |  .Menu_PopUp(Me|
00000ea0  6e 75 73 25 28 30 29 2c  78 25 2c 79 25 29 0d 05  |nus%(0),x%,y%)..|
00000eb0  64 07 20 20 e1 0d 05 6e  05 3a 0d 05 78 23 f4 2d  |d.  ...n.:..x#.-|
00000ec0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000ed0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 05 82  |-------------...|
00000ee0  14 f4 45 76 65 6e 74 37  20 3a 20 20 44 52 41 47  |..Event7 :  DRAG|
00000ef0  53 0d 05 8c 23 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |S...#.----------|
00000f00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000f10  2d 2d 2d 2d 0d 05 96 05  3a 0d 05 a0 23 f4 2d 2d  |----....:...#.--|
00000f20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000f30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 05 aa 1a  |------------....|
00000f40  f4 45 76 65 6e 74 38 20  3a 20 20 4b 45 59 20 50  |.Event8 :  KEY P|
00000f50  52 45 53 53 45 53 0d 05  b4 23 f4 2d 2d 2d 2d 2d  |RESSES...#.-----|
00000f60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000f70  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 05 be 05 3a 0d 05  |---------....:..|
00000f80  c8 33 dd 20 f2 45 76 65  6e 74 5f 44 65 61 6c 57  |.3. .Event_DealW|
00000f90  69 74 68 4b 65 79 50 72  65 73 73 65 64 28 77 69  |ithKeyPressed(wi|
00000fa0  6e 64 6f 77 25 2c 69 63  6f 6e 25 2c 6b 65 79 25  |ndow%,icon%,key%|
00000fb0  29 0d 05 d2 0d c8 8e 20  6b 65 79 25 20 ca 0d 05  |)...... key% ...|
00000fc0  dc 0d 20 c9 20 31 33 20  20 20 3a 0d 05 e6 26 20  |.. . 13   :...& |
00000fd0  7f 20 3a 20 c8 99 20 22  57 69 6d 70 5f 50 72 6f  |. : .. "Wimp_Pro|
00000fe0  63 65 73 73 4b 65 79 22  2c 77 69 6d 70 25 21 32  |cessKey",wimp%!2|
00000ff0  34 0d 05 f0 05 cb 0d 05  fa 05 e1 0d 06 04 05 3a  |4..............:|
00001000  0d 06 0e 23 f4 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...#.-----------|
00001010  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001020  2d 2d 2d 0d 06 18 1b f4  45 76 65 6e 74 39 20 3a  |---.....Event9 :|
00001030  20 20 4d 45 4e 55 20 43  48 4f 49 43 45 53 0d 06  |  MENU CHOICES..|
00001040  22 23 f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |"#.-------------|
00001050  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001060  2d 0d 06 2c 05 3a 0d 06  36 1f dd 20 f2 45 76 65  |-..,.:..6.. .Eve|
00001070  6e 74 5f 44 65 61 6c 57  69 74 68 4d 65 6e 75 43  |nt_DealWithMenuC|
00001080  68 6f 69 63 65 0d 06 40  0f 20 c8 8e 20 6d 65 6e  |hoice..@. .. men|
00001090  75 25 20 ca 0d 06 4a 25  20 20 c9 20 42 61 72 5f  |u% ...J%  . Bar_|
000010a0  4d 65 6e 75 25 20 3a 20  f2 44 65 61 6c 57 69 74  |Menu% : .DealWit|
000010b0  68 42 61 72 5f 4d 65 6e  75 0d 06 54 25 20 20 c9  |hBar_Menu..T%  .|
000010c0  20 45 64 69 74 5f 4d 65  6e 75 25 3a 20 f2 44 65  | Edit_Menu%: .De|
000010d0  61 6c 57 69 74 68 45 64  69 74 4d 65 6e 75 0d 06  |alWithEditMenu..|
000010e0  5e 30 20 20 7f 20 20 20  20 20 20 3a 20 f2 44 65  |^0  .      : .De|
000010f0  61 6c 57 69 74 68 57 69  6e 64 6f 77 4d 65 6e 75  |alWithWindowMenu|
00001100  28 77 69 6e 64 6f 77 5f  6d 65 6e 75 25 29 0d 06  |(window_menu%)..|
00001110  68 06 20 cb 0d 06 72 05  e1 0d 06 7c 05 3a 0d 06  |h. ...r....|.:..|
00001120  86 18 20 dd 20 f2 44 65  61 6c 57 69 74 68 45 64  |.. . .DealWithEd|
00001130  69 74 4d 65 6e 75 0d 06  90 1f 20 20 20 6d 65 6e  |itMenu....   men|
00001140  75 24 3d 4d 65 6e 75 24  28 57 69 6e 64 25 2c 4d  |u$=Menu$(Wind%,M|
00001150  65 6e 75 25 29 0d 06 9a  18 20 20 c8 8e 20 a4 4d  |enu%)....  .. .M|
00001160  65 6e 75 5f 49 74 65 6d  28 30 29 20 ca 0d 06 a4  |enu_Item(0) ....|
00001170  37 20 20 20 c9 20 31 20  3a 20 20 4d 65 6e 75 24  |7   . 1 :  Menu$|
00001180  28 57 69 6e 64 25 2c 4d  65 6e 75 25 29 3d a4 45  |(Wind%,Menu%)=.E|
00001190  64 69 74 49 74 65 6d 28  6d 65 6e 75 24 2c 49 74  |ditItem(menu$,It|
000011a0  65 6d 25 29 0d 06 ae 19  20 20 20 c9 20 32 20 3a  |em%)....   . 2 :|
000011b0  20 20 f2 44 65 6c 65 74  65 49 74 65 6d 0d 06 b8  |  .DeleteItem...|
000011c0  20 20 20 20 c9 20 33 20  3a 20 20 c8 8e 20 a4 4d  |    . 3 :  .. .M|
000011d0  65 6e 75 5f 49 74 65 6d  28 31 29 20 ca 0d 06 c2  |enu_Item(1) ....|
000011e0  24 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |$               |
000011f0  c9 20 31 20 3a f2 49 6e  73 65 72 74 41 62 6f 76  |. 1 :.InsertAbov|
00001200  65 0d 06 cc 12 20 20 20  20 20 20 20 20 20 20 20  |e....           |
00001210  20 20 cb 0d 06 d6 20 20  20 20 c9 20 34 20 3a 20  |  ....    . 4 : |
00001220  20 c8 8e 20 a4 4d 65 6e  75 5f 49 74 65 6d 28 31  | .. .Menu_Item(1|
00001230  29 20 ca 0d 06 e0 29 20  20 20 20 20 20 20 20 20  |) ....)         |
00001240  20 20 20 20 20 c9 20 30  20 20 20 20 3a 20 f2 52  |     . 0    : .R|
00001250  65 6d 6f 76 65 53 75 62  4d 65 6e 75 0d 06 ea 26  |emoveSubMenu...&|
00001260  20 20 20 20 20 20 20 20  20 20 20 20 20 20 c9 20  |              . |
00001270  31 20 20 20 20 3a 20 f2  41 64 64 53 75 62 4d 65  |1    : .AddSubMe|
00001280  6e 75 0d 06 f4 29 20 20  20 20 20 20 20 20 20 20  |nu...)          |
00001290  20 20 20 20 c9 20 32 20  20 20 20 3a 20 f2 41 64  |    . 2    : .Ad|
000012a0  64 43 6f 6c 6f 75 72 4d  65 6e 75 0d 06 fe 21 20  |dColourMenu...! |
000012b0  20 20 20 20 20 20 20 20  20 20 20 20 20 7f 20 3a  |             . :|
000012c0  20 f2 57 69 6e 64 6f 77  4c 65 61 66 0d 07 08 12  | .WindowLeaf....|
000012d0  20 20 20 20 20 20 20 20  20 20 20 20 20 cb 0d 07  |             ...|
000012e0  12 07 20 20 cb 0d 07 1c  25 20 20 e7 20 57 69 6e  |..  ....%  . Win|
000012f0  64 25 3d 30 20 8c 20 78  78 78 25 3d 36 34 30 20  |d%=0 . xxx%=640 |
00001300  3a 20 79 79 79 25 3d 35  31 32 0d 07 26 29 20 20  |: yyy%=512..&)  |
00001310  f2 57 69 6e 64 6f 77 73  4d 65 6e 75 5f 50 6f 70  |.WindowsMenu_Pop|
00001320  55 70 28 57 69 6e 64 25  2c 78 78 78 25 2c 79 79  |Up(Wind%,xxx%,yy|
00001330  79 25 29 0d 07 30 06 20  e1 0d 07 3a 05 3a 0d 07  |y%)..0. ...:.:..|
00001340  44 18 20 20 20 20 dd 20  f2 41 64 64 43 6f 6c 6f  |D.    . .AddColo|
00001350  75 72 4d 65 6e 75 0d 07  4e 21 20 20 20 20 20 ea  |urMenu..N!     .|
00001360  20 69 25 2c 6a 25 2c 6b  25 20 3a 20 69 25 3d 30  | i%,j%,k% : i%=0|
00001370  20 3a 20 6a 25 3d 30 0d  07 58 20 20 20 20 20 20  | : j%=0..X      |
00001380  6d 65 6e 24 3d 4d 65 6e  75 24 28 57 69 6e 64 25  |men$=Menu$(Wind%|
00001390  2c 4d 65 6e 75 25 29 0d  07 62 37 20 20 20 20 20  |,Menu%)..b7     |
000013a0  f5 20 3a 20 69 25 2b 3d  31 20 3a 20 6a 25 3d a7  |. : i%+=1 : j%=.|
000013b0  6d 65 6e 75 24 2c 22 5c  22 2c 6a 25 2b 31 29 20  |menu$,"\",j%+1) |
000013c0  3a 20 fd 20 69 25 3d 49  74 65 6d 25 2b 31 0d 07  |: . i%=Item%+1..|
000013d0  6c 1c 20 20 20 20 20 69  25 3d a4 57 69 6d 70 5f  |l.     i%=.Wimp_|
000013e0  43 6f 6c 6f 75 72 4d 65  6e 75 0d 07 76 3b 20 20  |ColourMenu..v;  |
000013f0  20 20 20 6d 65 6e 24 3d  c0 6d 65 6e 24 2c 6a 25  |   men$=.men$,j%|
00001400  2d 31 29 2b 22 3e 22 2b  c3 28 69 25 29 2b 22 43  |-1)+">"+.(i%)+"C|
00001410  22 2b c2 6d 65 6e 24 2c  a9 28 6d 65 6e 24 29 2d  |"+.men$,.(men$)-|
00001420  6a 25 2b 31 29 0d 07 80  20 20 20 20 20 20 4d 65  |j%+1)...      Me|
00001430  6e 75 24 28 57 69 6e 64  25 2c 4d 65 6e 75 25 29  |nu$(Wind%,Menu%)|
00001440  3d 6d 65 6e 24 0d 07 8a  09 20 20 20 20 e1 0d 07  |=men$....    ...|
00001450  94 05 3a 0d 07 9e 1d 20  20 20 20 dd 20 a4 45 64  |..:....    . .Ed|
00001460  69 74 49 74 65 6d 28 6d  65 6e 75 24 2c 6b 25 29  |itItem(menu$,k%)|
00001470  0d 07 a8 2d 20 20 20 20  ea 20 69 25 2c 6a 25 2c  |...-    . i%,j%,|
00001480  73 25 2c 69 74 65 6d 24  2c 69 6e 73 65 72 74 24  |s%,item$,insert$|
00001490  3a 20 69 25 3d 30 20 3a  20 6a 25 3d 30 0d 07 b2  |: i%=0 : j%=0...|
000014a0  05 20 0d 07 bc 18 20 20  20 20 69 6e 73 65 72 74  |. ....    insert|
000014b0  24 3d 24 42 75 66 66 65  72 25 0d 07 c6 14 20 20  |$=$Buffer%....  |
000014c0  20 20 c8 8e 20 69 6e 73  65 72 74 24 20 ca 0d 07  |  .. insert$ ...|
000014d0  d0 15 20 20 20 20 c9 20  22 22 20 3a 20 3d 6d 65  |..    . "" : =me|
000014e0  6e 75 24 0d 07 da 09 20  20 20 20 7f 0d 07 e4 31  |nu$....    ....1|
000014f0  20 20 20 20 f5 20 3a 20  69 25 2b 3d 31 20 3a 20  |    . : i%+=1 : |
00001500  6a 25 3d a7 6d 65 6e 75  24 2c 22 5c 22 2c 6a 25  |j%=.menu$,"\",j%|
00001510  2b 31 29 20 3a 20 fd 20  69 25 3d 6b 25 0d 07 ee  |+1) : . i%=k%...|
00001520  1b 20 20 20 20 69 25 3d  a7 6d 65 6e 75 24 2c 22  |.    i%=.menu$,"|
00001530  5c 22 2c 6a 25 2b 31 29  0d 07 f8 22 20 20 20 20  |\",j%+1)..."    |
00001540  69 74 65 6d 24 3d c1 6d  65 6e 75 24 2c 6a 25 2b  |item$=.menu$,j%+|
00001550  31 2c 69 25 2d 6a 25 2d  31 29 0d 08 02 19 20 20  |1,i%-j%-1)....  |
00001560  20 20 73 25 3d a7 69 74  65 6d 24 2c 22 3e 22 29  |  s%=.item$,">")|
00001570  2b 6a 25 0d 08 0c 12 20  20 20 20 20 20 20 c8 8e  |+j%....       ..|
00001580  20 73 25 20 ca 0d 08 16  14 20 20 20 20 20 20 20  | s% .....       |
00001590  20 c9 20 6a 25 20 20 20  3a 0d 08 20 0f 20 20 20  | . j%   :.. .   |
000015a0  20 20 20 20 20 7f 20 3a  0d 08 2a 2d 20 20 20 20  |     . :..*-    |
000015b0  20 20 20 20 20 69 6e 73  65 72 74 24 3d 69 6e 73  |     insert$=ins|
000015c0  65 72 74 24 2b c1 6d 65  6e 75 24 2c 73 25 2c 69  |ert$+.menu$,s%,i|
000015d0  25 2d 73 25 29 0d 08 34  27 20 20 20 20 20 20 20  |%-s%)..4'       |
000015e0  20 20 73 25 3d bb 28 c1  6d 65 6e 75 24 2c 73 25  |  s%=.(.menu$,s%|
000015f0  2b 31 2c 69 25 2d 73 25  2d 31 29 29 0d 08 3e 31  |+1,i%-s%-1))..>1|
00001600  20 20 20 20 20 20 20 20  20 e7 20 73 25 3c 31 30  |         . s%<10|
00001610  30 20 8c 20 f2 43 68 61  6e 67 65 54 69 74 6c 65  |0 . .ChangeTitle|
00001620  28 73 25 2c 24 42 75 66  66 65 72 25 29 0d 08 48  |(s%,$Buffer%)..H|
00001630  0c 20 20 20 20 20 20 20  cb 0d 08 52 2f 20 20 20  |.       ...R/   |
00001640  20 3d c0 6d 65 6e 75 24  2c 6a 25 29 2b 69 6e 73  | =.menu$,j%)+ins|
00001650  65 72 74 24 2b c2 6d 65  6e 75 24 2c a9 6d 65 6e  |ert$+.menu$,.men|
00001660  75 24 2d 69 25 2b 31 29  0d 08 5c 09 20 20 20 20  |u$-i%+1)..\.    |
00001670  cb 0d 08 66 05 3a 0d 08  70 22 20 20 20 20 dd 20  |...f.:..p"    . |
00001680  f2 43 68 61 6e 67 65 54  69 74 6c 65 28 73 25 2c  |.ChangeTitle(s%,|
00001690  69 6e 73 65 72 74 24 29  0d 08 7a 2a 20 20 20 20  |insert$)..z*    |
000016a0  20 ea 20 69 25 2c 6d 65  6e 24 20 20 3a 20 6d 65  | . i%,men$  : me|
000016b0  6e 24 3d 4d 65 6e 75 24  28 57 69 6e 64 25 2c 73  |n$=Menu$(Wind%,s|
000016c0  25 29 0d 08 84 16 20 20  20 20 20 69 25 3d a7 6d  |%)....     i%=.m|
000016d0  65 6e 24 2c 22 5c 22 29  0d 08 8e 32 20 20 20 20  |en$,"\")...2    |
000016e0  20 4d 65 6e 75 24 28 57  69 6e 64 25 2c 73 25 29  | Menu$(Wind%,s%)|
000016f0  3d 69 6e 73 65 72 74 24  2b c2 6d 65 6e 24 2c a9  |=insert$+.men$,.|
00001700  6d 65 6e 24 2d 69 25 2b  31 29 0d 08 98 09 20 20  |men$-i%+1)....  |
00001710  20 20 e1 0d 08 a2 05 3a  0d 08 ac 18 20 20 20 20  |  .....:....    |
00001720  dd 20 f2 52 65 6d 6f 76  65 53 75 62 4d 65 6e 75  |. .RemoveSubMenu|
00001730  0d 08 b6 1e 20 20 20 20  20 ea 20 69 25 2c 6a 25  |....     . i%,j%|
00001740  20 3a 20 69 25 3d 30 20  3a 20 6a 25 3d 30 0d 08  | : i%=0 : j%=0..|
00001750  c0 21 20 20 20 20 20 6d  65 6e 75 24 3d 4d 65 6e  |.!     menu$=Men|
00001760  75 24 28 57 69 6e 64 25  2c 4d 65 6e 75 25 29 0d  |u$(Wind%,Menu%).|
00001770  08 ca 35 20 20 20 20 20  f5 20 3a 20 69 25 2b 3d  |..5     . : i%+=|
00001780  31 20 3a 20 6a 25 3d a7  6d 65 6e 75 24 2c 22 5c  |1 : j%=.menu$,"\|
00001790  22 2c 6a 25 2b 31 29 20  3a 20 fd 20 69 25 3d 49  |",j%+1) : . i%=I|
000017a0  74 65 6d 25 0d 08 d4 1c  20 20 20 20 20 69 25 3d  |tem%....     i%=|
000017b0  a7 6d 65 6e 75 24 2c 22  5c 22 2c 6a 25 2b 31 29  |.menu$,"\",j%+1)|
000017c0  0d 08 de 23 20 20 20 20  20 69 74 65 6d 24 3d c1  |...#     item$=.|
000017d0  6d 65 6e 75 24 2c 6a 25  2b 31 2c 69 25 2d 6a 25  |menu$,j%+1,i%-j%|
000017e0  2d 31 29 0d 08 e8 17 20  20 20 20 20 73 25 3d a7  |-1)....     s%=.|
000017f0  69 74 65 6d 24 2c 22 3e  22 29 0d 08 f2 10 20 20  |item$,">")....  |
00001800  20 20 20 c8 8e 20 73 25  20 ca 0d 08 fc 12 20 20  |   .. s% .....  |
00001810  20 20 20 20 c9 20 30 20  20 20 20 3a 0d 09 06 27  |    . 0    :...'|
00001820  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001830  20 c8 8e 20 a4 4d 65 6e  75 5f 49 74 65 6d 28 31  | .. .Menu_Item(1|
00001840  29 20 ca 0d 09 10 2b 20  20 20 20 20 20 20 20 20  |) ....+         |
00001850  20 20 20 20 20 20 20 20  20 20 c9 20 31 20 20 20  |          . 1   |
00001860  20 3a 20 f2 41 64 64 53  75 62 4d 65 6e 75 0d 09  | : .AddSubMenu..|
00001870  1a 26 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.&              |
00001880  20 20 20 20 20 7f 20 3a  20 f2 57 69 6e 64 6f 77  |     . : .Window|
00001890  4c 65 61 66 0d 09 24 16  20 20 20 20 20 20 20 20  |Leaf..$.        |
000018a0  20 20 20 20 20 20 20 20  20 cb 0d 09 2e 0d 20 20  |         .....  |
000018b0  20 20 20 20 7f 20 3a 0d  09 38 34 20 20 20 20 20  |    . :..84     |
000018c0  20 20 c8 8e 20 a4 43 61  6e 63 65 6c 42 6f 78 28  |  .. .CancelBox(|
000018d0  54 61 73 6b 24 2c 22 44  65 6c 65 74 65 20 53 75  |Task$,"Delete Su|
000018e0  62 6d 65 6e 75 73 3f 22  29 20 ca 0d 09 42 29 20  |bmenus?") ...B) |
000018f0  20 20 20 20 20 20 20 c9  20 31 20 3a 20 73 25 3d  |       . 1 : s%=|
00001900  bb 28 c2 69 74 65 6d 24  2c a9 69 74 65 6d 24 2d  |.(.item$,.item$-|
00001910  73 25 29 29 0d 09 4c 35  20 20 20 20 20 20 20 20  |s%))..L5        |
00001920  20 20 20 20 20 20 20 20  20 e7 20 73 25 3c 31 30  |         . s%<10|
00001930  30 20 8c 20 f2 52 65 6d  6f 76 65 54 72 65 65 28  |0 . .RemoveTree(|
00001940  57 69 6e 64 25 2c 73 25  29 0d 09 56 27 20 20 20  |Wind%,s%)..V'   |
00001950  20 20 20 20 20 20 20 20  20 20 20 20 20 20 c8 8e  |              ..|
00001960  20 a4 4d 65 6e 75 5f 49  74 65 6d 28 31 29 20 ca  | .Menu_Item(1) .|
00001970  0d 09 60 2b 20 20 20 20  20 20 20 20 20 20 20 20  |..`+            |
00001980  20 20 20 20 20 20 20 c9  20 31 20 20 20 20 3a 20  |       . 1    : |
00001990  f2 41 64 64 53 75 62 4d  65 6e 75 0d 09 6a 26 20  |.AddSubMenu..j& |
000019a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000019b0  20 20 7f 20 3a 20 f2 57  69 6e 64 6f 77 4c 65 61  |  . : .WindowLea|
000019c0  66 0d 09 74 16 20 20 20  20 20 20 20 20 20 20 20  |f..t.           |
000019d0  20 20 20 20 20 20 cb 0d  09 7e 05 20 0d 09 88 0c  |      ...~. ....|
000019e0  20 20 20 20 20 20 20 cb  0d 09 92 0a 20 20 20 20  |       .....    |
000019f0  20 cb 0d 09 9c 09 20 20  20 20 e1 0d 09 a6 05 3a  | .....    .....:|
00001a00  0d 09 b0 15 20 20 20 20  dd 20 f2 41 64 64 53 75  |....    . .AddSu|
00001a10  62 4d 65 6e 75 0d 09 ba  1e 20 20 20 20 20 ea 20  |bMenu....     . |
00001a20  69 25 2c 6a 25 20 3a 20  69 25 3d 30 20 3a 20 6a  |i%,j% : i%=0 : j|
00001a30  25 3d 30 0d 09 c4 20 20  20 20 20 20 4e 6f 4f 66  |%=0...      NoOf|
00001a40  53 75 62 6d 65 6e 75 73  25 28 57 69 6e 64 25 29  |Submenus%(Wind%)|
00001a50  2b 3d 31 0d 09 ce 21 20  20 20 20 20 6d 65 6e 75  |+=1...!     menu|
00001a60  24 3d 4d 65 6e 75 24 28  57 69 6e 64 25 2c 4d 65  |$=Menu$(Wind%,Me|
00001a70  6e 75 25 29 0d 09 d8 37  20 20 20 20 20 f5 20 3a  |nu%)...7     . :|
00001a80  20 69 25 2b 3d 31 20 3a  20 6a 25 3d a7 6d 65 6e  | i%+=1 : j%=.men|
00001a90  75 24 2c 22 5c 22 2c 6a  25 2b 31 29 20 3a 20 fd  |u$,"\",j%+1) : .|
00001aa0  20 69 25 3d 49 74 65 6d  25 2b 31 0d 09 e2 49 20  | i%=Item%+1...I |
00001ab0  20 20 20 20 6d 65 6e 75  24 3d c0 6d 65 6e 75 24  |    menu$=.menu$|
00001ac0  2c 6a 25 2d 31 29 2b 22  3e 22 2b c3 4e 6f 4f 66  |,j%-1)+">"+.NoOf|
00001ad0  53 75 62 6d 65 6e 75 73  25 28 57 69 6e 64 25 29  |Submenus%(Wind%)|
00001ae0  2b c2 6d 65 6e 75 24 2c  a9 6d 65 6e 75 24 2d 6a  |+.menu$,.menu$-j|
00001af0  25 2b 31 29 0d 09 ec 21  20 20 20 20 20 4d 65 6e  |%+1)...!     Men|
00001b00  75 24 28 57 69 6e 64 25  2c 4d 65 6e 75 25 29 3d  |u$(Wind%,Menu%)=|
00001b10  6d 65 6e 75 24 0d 09 f6  45 20 20 20 20 20 4d 65  |menu$...E     Me|
00001b20  6e 75 24 28 57 69 6e 64  25 2c 4e 6f 4f 66 53 75  |nu$(Wind%,NoOfSu|
00001b30  62 6d 65 6e 75 73 25 28  57 69 6e 64 25 29 29 3d  |bmenus%(Wind%))=|
00001b40  24 42 75 66 66 65 72 25  2b 22 5c 22 2b 24 42 75  |$Buffer%+"\"+$Bu|
00001b50  66 66 65 72 31 25 2b 22  5c 22 0d 0a 00 09 20 20  |ffer1%+"\"....  |
00001b60  20 20 e1 0d 0a 0a 05 3a  0d 0a 14 15 20 20 20 20  |  .....:....    |
00001b70  dd 20 f2 57 69 6e 64 6f  77 4c 65 61 66 0d 0a 1e  |. .WindowLeaf...|
00001b80  1e 20 20 20 20 20 ea 20  69 25 2c 6a 25 20 3a 20  |.     . i%,j% : |
00001b90  69 25 3d 30 20 3a 20 6a  25 3d 30 0d 0a 28 21 20  |i%=0 : j%=0..(! |
00001ba0  20 20 20 20 6d 65 6e 75  24 3d 4d 65 6e 75 24 28  |    menu$=Menu$(|
00001bb0  57 69 6e 64 25 2c 4d 65  6e 75 25 29 0d 0a 32 27  |Wind%,Menu%)..2'|
00001bc0  20 20 20 20 20 77 69 6e  64 25 3d 57 69 6e 64 6f  |     wind%=Windo|
00001bd0  77 25 28 a4 4d 65 6e 75  5f 49 74 65 6d 28 31 29  |w%(.Menu_Item(1)|
00001be0  2d 32 29 0d 0a 3c 37 20  20 20 20 20 f5 20 3a 20  |-2)..<7     . : |
00001bf0  69 25 2b 3d 31 20 3a 20  6a 25 3d a7 6d 65 6e 75  |i%+=1 : j%=.menu|
00001c00  24 2c 22 5c 22 2c 6a 25  2b 31 29 20 3a 20 fd 20  |$,"\",j%+1) : . |
00001c10  69 25 3d 49 74 65 6d 25  2b 31 0d 0a 46 3e 20 20  |i%=Item%+1..F>  |
00001c20  20 20 20 6d 65 6e 75 24  3d c0 6d 65 6e 75 24 2c  |   menu$=.menu$,|
00001c30  6a 25 2d 31 29 2b 22 3e  22 2b c3 28 77 69 6e 64  |j%-1)+">"+.(wind|
00001c40  25 29 2b c2 6d 65 6e 75  24 2c a9 28 6d 65 6e 75  |%)+.menu$,.(menu|
00001c50  24 29 2d 6a 25 2b 31 29  0d 0a 50 21 20 20 20 20  |$)-j%+1)..P!    |
00001c60  20 4d 65 6e 75 24 28 57  69 6e 64 25 2c 4d 65 6e  | Menu$(Wind%,Men|
00001c70  75 25 29 3d 6d 65 6e 75  24 0d 0a 5a 09 20 20 20  |u%)=menu$..Z.   |
00001c80  20 e1 0d 0a 64 05 3a 0d  0a 6e 14 20 20 20 dd 20  | ...d.:..n.   . |
00001c90  f2 44 65 6c 65 74 65 49  74 65 6d 0d 0a 78 26 20  |.DeleteItem..x& |
00001ca0  20 20 20 ea 20 69 25 2c  6a 25 2c 6b 25 2c 69 74  |   . i%,j%,k%,it|
00001cb0  65 6d 24 20 3a 20 69 25  3d 30 20 3a 20 6a 25 3d  |em$ : i%=0 : j%=|
00001cc0  30 0d 0a 82 20 20 20 20  20 6d 65 6e 75 24 3d 4d  |0...     menu$=M|
00001cd0  65 6e 75 24 28 57 69 6e  64 25 2c 4d 65 6e 75 25  |enu$(Wind%,Menu%|
00001ce0  29 0d 0a 8c 34 20 20 20  20 f5 20 3a 20 69 25 2b  |)...4    . : i%+|
00001cf0  3d 31 20 3a 20 6a 25 3d  a7 6d 65 6e 75 24 2c 22  |=1 : j%=.menu$,"|
00001d00  5c 22 2c 6a 25 2b 31 29  20 3a 20 fd 20 69 25 3d  |\",j%+1) : . i%=|
00001d10  49 74 65 6d 25 0d 0a 96  1b 20 20 20 20 69 25 3d  |Item%....    i%=|
00001d20  a7 6d 65 6e 75 24 2c 22  5c 22 2c 6a 25 2b 31 29  |.menu$,"\",j%+1)|
00001d30  0d 0a a0 3b 20 20 20 20  4d 65 6e 75 24 28 57 69  |...;    Menu$(Wi|
00001d40  6e 64 25 2c 4d 65 6e 75  25 29 3d c0 6d 65 6e 75  |nd%,Menu%)=.menu|
00001d50  24 2c 6a 25 2d 31 29 2b  c2 6d 65 6e 75 24 2c a9  |$,j%-1)+.menu$,.|
00001d60  6d 65 6e 75 24 2d 69 25  2b 31 29 0d 0a aa 22 20  |menu$-i%+1)..." |
00001d70  20 20 20 69 74 65 6d 24  3d c1 6d 65 6e 75 24 2c  |   item$=.menu$,|
00001d80  6a 25 2b 31 2c 69 25 2d  6a 25 2d 31 29 0d 0a b4  |j%+1,i%-j%-1)...|
00001d90  16 20 20 20 20 6b 25 3d  a7 69 74 65 6d 24 2c 22  |.    k%=.item$,"|
00001da0  3e 22 29 0d 0a be 0f 20  20 20 20 c8 8e 20 6b 25  |>")....    .. k%|
00001db0  20 ca 0d 0a c8 11 20 20  20 20 20 c9 20 30 20 20  | .....     . 0  |
00001dc0  20 20 3a 0d 0a d2 0c 20  20 20 20 20 7f 20 3a 0d  |  :....     . :.|
00001dd0  0a dc 20 20 20 20 20 20  73 25 3d bb 28 c2 69 74  |..      s%=.(.it|
00001de0  65 6d 24 2c a9 69 74 65  6d 24 2d 6b 25 29 29 0d  |em$,.item$-k%)).|
00001df0  0a e6 14 20 20 20 20 20  c8 8e 20 73 25 3c 31 30  |...     .. s%<10|
00001e00  30 20 ca 0d 0a f0 0e 20  20 20 20 20 20 c9 20 b9  |0 .....      . .|
00001e10  3a 0d 0a fa 3c 20 20 20  20 20 20 74 6f 74 25 3d  |:...<      tot%=|
00001e20  30 3a f2 52 65 6d 6f 76  65 54 72 65 65 28 57 69  |0:.RemoveTree(Wi|
00001e30  6e 64 25 2c 73 25 29 3a  f2 55 70 64 61 74 65 54  |nd%,s%):.UpdateT|
00001e40  72 65 65 28 57 69 6e 64  25 2c 73 25 29 0d 0b 04  |ree(Wind%,s%)...|
00001e50  24 20 20 20 20 20 20 4e  6f 4f 66 53 75 62 6d 65  |$      NoOfSubme|
00001e60  6e 75 73 25 28 57 69 6e  64 25 29 2d 3d 74 6f 74  |nus%(Wind%)-=tot|
00001e70  25 0d 0b 0e 0a 20 20 20  20 20 cb 0d 0b 18 09 20  |%....     ..... |
00001e80  20 20 20 cb 0d 0b 22 08  20 20 20 e1 0d 0b 2c 05  |   ...".   ...,.|
00001e90  3a 0d 0b 36 1f 20 20 20  20 dd 20 f2 52 65 6d 6f  |:..6.    . .Remo|
00001ea0  76 65 54 72 65 65 28 57  69 6e 64 25 2c 6b 25 29  |veTree(Wind%,k%)|
00001eb0  0d 0b 40 16 20 20 20 20  ea 20 69 25 2c 6a 25 20  |..@.    . i%,j% |
00001ec0  3a 20 69 25 3d 30 0d 0b  4a 09 20 20 20 20 f5 0d  |: i%=0..J.    ..|
00001ed0  0b 54 26 20 20 20 20 20  69 25 3d a7 4d 65 6e 75  |.T&     i%=.Menu|
00001ee0  24 28 57 69 6e 64 25 2c  6b 25 29 2c 22 3e 22 2c  |$(Wind%,k%),">",|
00001ef0  69 25 2b 31 29 0d 0b 5e  36 20 20 20 20 20 6a 25  |i%+1)..^6     j%|
00001f00  3d bb 28 c2 4d 65 6e 75  24 28 57 69 6e 64 25 2c  |=.(.Menu$(Wind%,|
00001f10  6b 25 29 2c a9 28 4d 65  6e 75 24 28 57 69 6e 64  |k%),.(Menu$(Wind|
00001f20  25 2c 6b 25 29 29 2d 69  25 29 29 0d 0b 68 31 20  |%,k%))-i%))..h1 |
00001f30  20 20 20 20 e7 20 69 25  3c 3e 30 20 80 20 6a 25  |    . i%<>0 . j%|
00001f40  3c 31 30 30 20 8c 20 f2  52 65 6d 6f 76 65 54 72  |<100 . .RemoveTr|
00001f50  65 65 28 57 69 6e 64 25  2c 6a 25 29 0d 0b 72 0e  |ee(Wind%,j%)..r.|
00001f60  20 20 20 20 fd 20 69 25  3d 30 0d 0b 7c 24 20 20  |    . i%=0..|$  |
00001f70  20 20 4d 65 6e 75 24 28  57 69 6e 64 25 2c 6b 25  |  Menu$(Wind%,k%|
00001f80  29 3d 22 22 20 3a 20 74  6f 74 25 2b 3d 31 0d 0b  |)="" : tot%+=1..|
00001f90  86 09 20 20 20 20 e1 0d  0b 90 05 3a 0d 0b 9a 1f  |..    .....:....|
00001fa0  20 20 20 20 dd 20 f2 55  70 64 61 74 65 54 72 65  |    . .UpdateTre|
00001fb0  65 28 57 69 6e 64 25 2c  73 25 29 0d 0b a4 0c 20  |e(Wind%,s%).... |
00001fc0  20 20 20 ea 20 69 25 0d  0b ae 0f 20 20 20 20 c8  |   . i%....    .|
00001fd0  8e 20 73 25 20 ca 0d 0b  b8 21 20 20 20 20 20 c9  |. s% ....!     .|
00001fe0  20 4e 6f 4f 66 53 75 62  6d 65 6e 75 73 25 28 57  | NoOfSubmenus%(W|
00001ff0  69 6e 64 25 29 20 3a 0d  0b c2 12 20 20 20 20 20  |ind%) :....     |
00002000  7f 20 3a 20 69 25 3d 73  25 0d 0b cc 45 20 20 20  |. : i%=s%...E   |
00002010  20 20 20 f5 20 3a 20 69  25 2b 3d 31 20 3a 20 fd  |   . : i%+=1 : .|
00002020  20 4d 65 6e 75 24 28 57  69 6e 64 25 2c 69 25 29  | Menu$(Wind%,i%)|
00002030  3c 3e 22 22 20 84 20 69  25 3e 4e 6f 4f 66 53 75  |<>"" . i%>NoOfSu|
00002040  62 6d 65 6e 75 73 25 28  57 69 6e 64 25 29 0d 0b  |bmenus%(Wind%)..|
00002050  d6 10 20 20 20 20 20 20  c8 8e 20 b9 20 ca 0d 0b  |..      .. . ...|
00002060  e0 27 20 20 20 20 20 20  20 c9 20 69 25 3c 3d 4e  |.'       . i%<=N|
00002070  6f 4f 66 53 75 62 6d 65  6e 75 73 25 28 57 69 6e  |oOfSubmenus%(Win|
00002080  64 25 29 20 3a 0d 0b ea  2b 20 20 20 20 20 20 20  |d%) :...+       |
00002090  20 4d 65 6e 75 24 28 57  69 6e 64 25 2c 73 25 29  | Menu$(Wind%,s%)|
000020a0  3d 4d 65 6e 75 24 28 57  69 6e 64 25 2c 69 25 29  |=Menu$(Wind%,i%)|
000020b0  0d 0b f4 1e 20 20 20 20  20 20 20 20 4d 65 6e 75  |....        Menu|
000020c0  24 28 57 69 6e 64 25 2c  69 25 29 3d 22 22 0d 0b  |$(Wind%,i%)=""..|
000020d0  fe 21 20 20 20 20 20 20  20 20 f2 52 65 6c 61 62  |.!        .Relab|
000020e0  65 6c 28 57 69 6e 64 25  2c 73 25 2c 69 25 29 0d  |el(Wind%,s%,i%).|
000020f0  0c 08 0b 20 20 20 20 20  20 cb 0d 0c 12 0a 20 20  |...      .....  |
00002100  20 20 20 cb 0d 0c 1c 3c  20 20 20 20 20 e7 20 73  |   ....<     . s|
00002110  25 3c 4e 6f 4f 66 53 75  62 6d 65 6e 75 73 25 28  |%<NoOfSubmenus%(|
00002120  57 69 6e 64 25 29 20 8c  20 f2 55 70 64 61 74 65  |Wind%) . .Update|
00002130  54 72 65 65 28 57 69 6e  64 25 2c 73 25 2b 31 29  |Tree(Wind%,s%+1)|
00002140  0d 0c 26 0a 20 20 20 20  20 e1 0d 0c 30 05 3a 0d  |..&.     ...0.:.|
00002150  0c 3a 20 20 20 20 20 20  dd 20 f2 52 65 6c 61 62  |.:      . .Relab|
00002160  65 6c 28 57 69 6e 64 25  2c 73 25 2c 69 25 29 0d  |el(Wind%,s%,i%).|
00002170  0c 44 31 20 20 20 20 20  ea 20 6a 25 2c 6b 25 2c  |.D1     . j%,k%,|
00002180  74 25 2c 78 24 2c 79 24  20 3a 20 6a 25 3d 30 20  |t%,x$,y$ : j%=0 |
00002190  3a 20 78 24 3d 22 3e 22  2b c3 69 25 2b 22 5c 22  |: x$=">"+.i%+"\"|
000021a0  0d 0c 4e 3e 20 20 20 20  20 f5 20 3a 20 6a 25 2b  |..N>     . : j%+|
000021b0  3d 31 20 3a 20 6b 25 3d  a7 4d 65 6e 75 24 28 57  |=1 : k%=.Menu$(W|
000021c0  69 6e 64 25 2c 6a 25 29  2c 78 24 29 20 3a 20 fd  |ind%,j%),x$) : .|
000021d0  20 6b 25 3c 3e 30 20 84  20 6a 25 3e 73 25 0d 0c  | k%<>0 . j%>s%..|
000021e0  58 2c 20 20 20 20 20 79  24 3d 4d 65 6e 75 24 28  |X,     y$=Menu$(|
000021f0  57 69 6e 64 25 2c 6a 25  29 20 3a 20 74 25 3d a7  |Wind%,j%) : t%=.|
00002200  79 24 2c 22 5c 22 2c 6b  25 29 0d 0c 62 32 20 20  |y$,"\",k%)..b2  |
00002210  20 20 20 4d 65 6e 75 24  28 57 69 6e 64 25 2c 6a  |   Menu$(Wind%,j|
00002220  25 29 3d c0 79 24 2c 6b  25 29 2b c3 73 25 2b c2  |%)=.y$,k%)+.s%+.|
00002230  79 24 2c a9 79 24 2d 74  25 2b 31 29 0d 0c 6c 0a  |y$,.y$-t%+1)..l.|
00002240  20 20 20 20 20 e1 0d 0c  76 05 3a 0d 0c 80 15 20  |     ...v.:.... |
00002250  20 20 dd 20 f2 49 6e 73  65 72 74 41 62 6f 76 65  |  . .InsertAbove|
00002260  0d 0c 8a 1e 20 20 20 20  20 ea 20 69 25 2c 6a 25  |....     . i%,j%|
00002270  20 3a 20 69 25 3d 30 20  3a 20 6a 25 3d 30 0d 0c  | : i%=0 : j%=0..|
00002280  94 21 20 20 20 20 20 6d  65 6e 75 24 3d 4d 65 6e  |.!     menu$=Men|
00002290  75 24 28 57 69 6e 64 25  2c 4d 65 6e 75 25 29 0d  |u$(Wind%,Menu%).|
000022a0  0c 9e 35 20 20 20 20 20  f5 20 3a 20 69 25 2b 3d  |..5     . : i%+=|
000022b0  31 20 3a 20 6a 25 3d a7  6d 65 6e 75 24 2c 22 5c  |1 : j%=.menu$,"\|
000022c0  22 2c 6a 25 2b 31 29 20  3a 20 fd 20 69 25 3d 49  |",j%+1) : . i%=I|
000022d0  74 65 6d 25 0d 0c a8 39  20 20 20 20 20 6d 65 6e  |tem%...9     men|
000022e0  75 24 3d c0 6d 65 6e 75  24 2c 6a 25 29 2b 24 42  |u$=.menu$,j%)+$B|
000022f0  75 66 66 65 72 32 25 2b  22 5c 22 2b c2 6d 65 6e  |uffer2%+"\"+.men|
00002300  75 24 2c a9 6d 65 6e 75  24 2d 6a 25 29 0d 0c b2  |u$,.menu$-j%)...|
00002310  21 20 20 20 20 20 4d 65  6e 75 24 28 57 69 6e 64  |!     Menu$(Wind|
00002320  25 2c 4d 65 6e 75 25 29  3d 6d 65 6e 75 24 0d 0c  |%,Menu%)=menu$..|
00002330  bc 08 20 20 20 e1 0d 0c  c6 05 3a 0d 0c d0 18 20  |..   .....:.... |
00002340  dd 20 f2 44 65 61 6c 57  69 74 68 42 61 72 5f 4d  |. .DealWithBar_M|
00002350  65 6e 75 0d 0c da 0c 20  ea 20 66 69 6c 65 25 0d  |enu.... . file%.|
00002360  0c e4 18 20 20 c8 8e 20  a4 4d 65 6e 75 5f 49 74  |...  .. .Menu_It|
00002370  65 6d 28 30 29 20 ca 0d  0c ee 0c 20 20 20 c9 20  |em(0) .....   . |
00002380  31 20 3a 0d 0c f8 04 0d  0d 02 1f 20 20 20 c9 20  |1 :........   . |
00002390  32 20 3a 20 c8 8e 20 a4  4d 65 6e 75 5f 49 74 65  |2 : .. .Menu_Ite|
000023a0  6d 28 31 29 20 ca 0d 0d  0c 2a 20 20 20 20 20 20  |m(1) ....*      |
000023b0  20 20 20 20 20 20 20 c9  20 31 20 3a 20 20 70 72  |       . 1 :  pr|
000023c0  6f 6c 69 78 25 3d ac 28  70 72 6f 6c 69 78 25 29  |olix%=.(prolix%)|
000023d0  0d 0d 16 35 20 20 20 20  20 20 20 20 20 20 20 20  |...5            |
000023e0  20 20 20 20 20 20 20 20  20 20 20 f2 4d 65 6e 75  |           .Menu|
000023f0  5f 54 69 63 6b 28 43 68  6f 69 63 65 5f 4d 65 6e  |_Tick(Choice_Men|
00002400  75 25 2c 31 29 0d 0d 20  34 20 20 20 20 20 20 20  |u%,1).. 4       |
00002410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002420  c8 8e 20 ac 28 70 72 6f  6c 69 78 25 29 20 80 20  |.. .(prolix%) . |
00002430  ac 74 65 72 73 65 25 20  ca 0d 0d 2a 1f 20 20 20  |.terse% ...*.   |
00002440  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002450  20 20 20 20 20 c9 20 b9  0d 0d 34 2c 20 20 20 20  |     . ...4,    |
00002460  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002470  20 20 20 20 74 65 72 73  65 25 3d ac 28 74 65 72  |    terse%=.(ter|
00002480  73 65 25 29 0d 0d 3e 36  20 20 20 20 20 20 20 20  |se%)..>6        |
00002490  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000024a0  f2 4d 65 6e 75 5f 54 69  63 6b 28 43 68 6f 69 63  |.Menu_Tick(Choic|
000024b0  65 5f 4d 65 6e 75 25 2c  32 29 0d 0d 48 1c 20 20  |e_Menu%,2)..H.  |
000024c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000024d0  20 20 20 20 20 cb 0d 0d  52 30 20 20 20 20 20 20  |     ...R0      |
000024e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000024f0  20 f2 4d 65 6e 75 5f 41  64 6a 75 73 74 4f 6e 28  | .Menu_AdjustOn(|
00002500  6d 65 6e 75 25 29 0d 0d  5c 28 20 20 20 20 20 20  |menu%)..\(      |
00002510  20 20 20 20 20 20 20 c9  20 32 20 3a 20 20 74 65  |       . 2 :  te|
00002520  72 73 65 25 3d ac 28 74  65 72 73 65 25 29 0d 0d  |rse%=.(terse%)..|
00002530  66 35 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |f5              |
00002540  20 20 20 20 20 20 20 20  20 f2 4d 65 6e 75 5f 54  |         .Menu_T|
00002550  69 63 6b 28 43 68 6f 69  63 65 5f 4d 65 6e 75 25  |ick(Choice_Menu%|
00002560  2c 32 29 0d 0d 70 32 20  20 20 20 20 20 20 20 20  |,2)..p2         |
00002570  20 20 20 20 20 20 20 20  20 20 20 20 20 20 c8 8e  |              ..|
00002580  20 ac 74 65 72 73 65 25  20 80 20 ac 70 72 6f 6c  | .terse% . .prol|
00002590  69 78 25 20 ca 0d 0d 7a  1f 20 20 20 20 20 20 20  |ix% ...z.       |
000025a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000025b0  20 c9 20 b9 0d 0d 84 2c  20 20 20 20 20 20 20 20  | . ....,        |
000025c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000025d0  70 72 6f 6c 69 78 25 3d  ac 70 72 6f 6c 69 78 25  |prolix%=.prolix%|
000025e0  0d 0d 8e 36 20 20 20 20  20 20 20 20 20 20 20 20  |...6            |
000025f0  20 20 20 20 20 20 20 20  20 20 20 20 f2 4d 65 6e  |            .Men|
00002600  75 5f 54 69 63 6b 28 43  68 6f 69 63 65 5f 4d 65  |u_Tick(Choice_Me|
00002610  6e 75 25 2c 31 29 0d 0d  98 1c 20 20 20 20 20 20  |nu%,1)....      |
00002620  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002630  20 cb 0d 0d a2 30 20 20  20 20 20 20 20 20 20 20  | ....0          |
00002640  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 4d 65  |             .Me|
00002650  6e 75 5f 41 64 6a 75 73  74 4f 6e 28 6d 65 6e 75  |nu_AdjustOn(menu|
00002660  25 29 0d 0d ac 2c 20 20  20 20 20 20 20 20 20 20  |%)...,          |
00002670  20 20 20 c9 20 33 20 3a  20 20 4c 69 62 72 61 72  |   . 3 :  Librar|
00002680  79 25 3d ac 28 4c 69 62  72 61 72 79 25 29 0d 0d  |y%=.(Library%)..|
00002690  b6 35 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.5              |
000026a0  20 20 20 20 20 20 20 20  20 f2 4d 65 6e 75 5f 54  |         .Menu_T|
000026b0  69 63 6b 28 43 68 6f 69  63 65 5f 4d 65 6e 75 25  |ick(Choice_Menu%|
000026c0  2c 33 29 0d 0d c0 30 20  20 20 20 20 20 20 20 20  |,3)...0         |
000026d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 f2 4d  |              .M|
000026e0  65 6e 75 5f 41 64 6a 75  73 74 4f 6e 28 6d 65 6e  |enu_AdjustOn(men|
000026f0  75 25 29 0d 0d ca 2a 20  20 20 20 20 20 20 20 20  |u%)...*         |
00002700  20 20 20 20 c9 20 34 20  3a 20 20 45 64 69 74 6f  |    . 4 :  Edito|
00002710  72 25 3d ac 28 45 64 69  74 6f 72 25 29 0d 0d d4  |r%=.(Editor%)...|
00002720  35 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |5               |
00002730  20 20 20 20 20 20 20 20  f2 4d 65 6e 75 5f 54 69  |        .Menu_Ti|
00002740  63 6b 28 43 68 6f 69 63  65 5f 4d 65 6e 75 25 2c  |ck(Choice_Menu%,|
00002750  34 29 0d 0d de 30 20 20  20 20 20 20 20 20 20 20  |4)...0          |
00002760  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 4d 65  |             .Me|
00002770  6e 75 5f 41 64 6a 75 73  74 4f 6e 28 6d 65 6e 75  |nu_AdjustOn(menu|
00002780  25 29 0d 0d e8 16 20 20  20 20 20 20 20 20 20 20  |%)....          |
00002790  20 20 20 c9 20 35 20 3a  0d 0d f2 1d 20 20 20 20  |   . 5 :....    |
000027a0  20 2a 73 65 74 20 69 6e  74 65 72 66 61 63 65 24  | *set interface$|
000027b0  20 74 72 75 65 0d 0d fc  4f 20 20 20 20 20 2a 69  | true...O     *i|
000027c0  66 20 22 3c 53 79 73 74  65 6d 24 50 61 74 68 3e  |f "<System$Path>|
000027d0  22 20 3d 20 22 22 20 74  68 65 6e 20 45 72 72 6f  |" = "" then Erro|
000027e0  72 20 30 20 53 79 73 74  65 6d 20 72 65 73 6f 75  |r 0 System resou|
000027f0  72 63 65 73 20 63 61 6e  6e 6f 74 20 62 65 20 66  |rces cannot be f|
00002800  6f 75 6e 64 0d 0e 06 3e  20 20 20 20 20 2a 52 4d  |ound...>     *RM|
00002810  45 6e 73 75 72 65 20 53  68 61 72 65 64 43 4c 69  |Ensure SharedCLi|
00002820  62 72 61 72 79 20 30 20  52 4d 4c 6f 61 64 20 53  |brary 0 RMLoad S|
00002830  79 73 74 65 6d 3a 6d 6f  64 75 6c 65 73 2e 43 4c  |ystem:modules.CL|
00002840  69 62 0d 0e 10 38 20 20  20 20 20 2a 52 4d 45 6e  |ib...8     *RMEn|
00002850  73 75 72 65 20 53 68 61  72 65 64 43 4c 69 62 72  |sure SharedCLibr|
00002860  61 72 79 20 30 20 73 65  74 20 69 6e 74 65 72 66  |ary 0 set interf|
00002870  61 63 65 24 3d 66 61 6c  73 65 0d 0e 1a 48 20 20  |ace$=false...H  |
00002880  20 20 20 2a 52 4d 45 6e  73 75 72 65 20 49 6e 74  |   *RMEnsure Int|
00002890  65 72 66 61 63 65 4d 61  6e 61 67 65 72 20 31 2e  |erfaceManager 1.|
000028a0  32 35 20 52 4d 4c 6f 61  64 20 53 79 73 74 65 6d  |25 RMLoad System|
000028b0  3a 6d 6f 64 75 6c 65 73  2e 49 6e 74 65 72 66 61  |:modules.Interfa|
000028c0  63 65 0d 0e 24 3d 20 20  20 20 20 2a 52 4d 45 6e  |ce..$=     *RMEn|
000028d0  73 75 72 65 20 49 6e 74  65 72 66 61 63 65 4d 61  |sure InterfaceMa|
000028e0  6e 61 67 65 72 20 31 2e  32 35 20 73 65 74 20 69  |nager 1.25 set i|
000028f0  6e 74 65 72 66 61 63 65  24 20 66 61 6c 73 65 0d  |nterface$ false.|
00002900  0e 2e 2e 20 20 20 20 20  c8 8e 20 a4 57 69 6d 70  |...     .. .Wimp|
00002910  5f 52 65 61 64 56 61 72  69 61 62 6c 65 28 22 69  |_ReadVariable("i|
00002920  6e 74 65 72 66 61 63 65  24 22 29 20 ca 0d 0e 38  |nterface$") ...8|
00002930  14 20 20 20 20 20 20 c9  20 22 74 72 75 65 22 20  |.      . "true" |
00002940  3a 0d 0e 42 24 20 20 20  20 20 20 20 20 69 6e 74  |:..B$        int|
00002950  65 72 66 61 63 65 25 3d  ac 28 69 6e 74 65 72 66  |erface%=.(interf|
00002960  61 63 65 25 29 0d 0e 4c  26 20 20 20 20 20 20 20  |ace%)..L&       |
00002970  20 f2 4d 65 6e 75 5f 54  69 63 6b 28 43 68 6f 69  | .Menu_Tick(Choi|
00002980  63 65 5f 4d 65 6e 75 25  2c 35 29 0d 0e 56 21 20  |ce_Menu%,5)..V! |
00002990  20 20 20 20 20 20 20 f2  4d 65 6e 75 5f 41 64 6a  |       .Menu_Adj|
000029a0  75 73 74 4f 6e 28 6d 65  6e 75 25 29 0d 0e 60 0d  |ustOn(menu%)..`.|
000029b0  20 20 20 20 20 20 7f 20  3a 0d 0e 6a 46 20 20 20  |      . :..jF   |
000029c0  20 20 20 20 20 f2 41 6c  65 72 74 42 6f 78 28 22  |     .AlertBox("|
000029d0  57 69 6d 70 45 64 22 2c  22 49 6e 74 65 72 66 61  |WimpEd","Interfa|
000029e0  63 65 20 6d 6f 64 75 6c  65 20 63 6f 75 6c 64 6e  |ce module couldn|
000029f0  27 74 20 62 65 20 6c 6f  61 64 65 64 21 22 29 0d  |'t be loaded!").|
00002a00  0e 74 0a 20 20 20 20 20  cb 0d 0e 7e 11 20 20 20  |.t.     ...~.   |
00002a10  20 20 20 20 20 20 20 20  20 cb 0d 0e 88 0c 20 20  |         .....  |
00002a20  20 c9 20 33 20 3a 0d 0e  92 1a 20 20 20 20 c8 8e  | . 3 :....    ..|
00002a30  20 a4 4d 65 6e 75 5f 49  74 65 6d 28 31 29 20 ca  | .Menu_Item(1) .|
00002a40  0d 0e 9c 11 20 20 20 20  20 c9 20 30 20 20 20 20  |....     . 0    |
00002a50  3a 0d 0e a6 1f 20 20 20  20 20 7f 20 3a 20 69 74  |:....     . : it|
00002a60  6d 25 3d a4 4d 65 6e 75  5f 49 74 65 6d 28 31 29  |m%=.Menu_Item(1)|
00002a70  0d 0e b0 36 20 20 20 20  20 20 20 20 20 20 20 20  |...6            |
00002a80  20 20 20 20 20 f2 57 69  6e 64 6f 77 5f 42 72 69  |     .Window_Bri|
00002a90  6e 67 54 6f 54 6f 70 28  57 69 6e 64 6f 77 25 28  |ngToTop(Window%(|
00002aa0  69 74 6d 25 29 29 0d 0e  ba 2a 20 20 20 20 20 20  |itm%))...*      |
00002ab0  20 20 20 20 20 20 20 20  20 20 20 f2 4d 65 6e 75  |           .Menu|
00002ac0  5f 41 64 6a 75 73 74 4f  6e 28 6d 65 6e 75 25 29  |_AdjustOn(menu%)|
00002ad0  0d 0e c4 09 20 20 20 20  cb 0d 0e ce 1e 20 20 20  |....    .....   |
00002ae0  c9 20 34 20 3a 20 c8 8e  20 4e 6f 4f 66 57 69 6e  |. 4 : .. NoOfWin|
00002af0  64 6f 77 73 25 20 ca 0d  0e d8 46 20 20 20 20 20  |dows% ....F     |
00002b00  20 20 20 20 20 20 20 20  c9 20 30 20 20 20 20 3a  |        . 0    :|
00002b10  20 f2 41 6c 65 72 74 42  6f 78 28 54 61 73 6b 24  | .AlertBox(Task$|
00002b20  2c 22 4e 6f 20 74 65 6d  70 6c 61 74 65 73 20 66  |,"No templates f|
00002b30  69 6c 65 20 6c 6f 61 64  65 64 21 22 29 0d 0e e2  |ile loaded!")...|
00002b40  14 20 20 20 20 20 20 20  20 20 20 20 20 20 7f 20  |.             . |
00002b50  3a 0d 0e ec 38 20 20 20  20 20 20 20 20 20 20 20  |:...8           |
00002b60  20 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 50 6f  |  .. "Wimp_GetPo|
00002b70  69 6e 74 65 72 49 6e 66  6f 22 2c 2c 70 6f 69 6e  |interInfo",,poin|
00002b80  74 65 72 5f 77 69 6d 70  25 0d 0e f6 2b 20 20 20  |ter_wimp%...+   |
00002b90  20 20 20 20 20 20 20 20  20 20 c8 8e 20 28 28 70  |          .. ((p|
00002ba0  6f 69 6e 74 65 72 5f 77  69 6d 70 25 21 38 29 80  |ointer_wimp%!8).|
00002bb0  31 29 20 ca 0d 0f 00 24  20 20 20 20 20 20 20 20  |1) ....$        |
00002bc0  20 20 20 20 20 20 c9 20  31 20 20 20 20 3a 20 c8  |      . 1    : .|
00002bd0  8e 20 42 61 72 25 20 ca  0d 0f 0a 21 20 20 20 20  |. Bar% ....!    |
00002be0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002bf0  20 20 20 20 20 20 c9 20  b9 0d 0f 14 54 20 20 20  |      . ....T   |
00002c00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002c10  20 20 20 20 20 20 20 20  c8 8e 20 a4 43 61 6e 63  |        .. .Canc|
00002c20  65 6c 42 6f 78 28 54 61  73 6b 24 2c 22 4e 6f 20  |elBox(Task$,"No |
00002c30  69 63 6f 6e 20 74 6f 20  62 65 20 70 6c 61 63 65  |icon to be place|
00002c40  64 20 6f 6e 20 42 61 72  3f 22 29 20 ca 0d 0f 1e  |d on Bar?") ....|
00002c50  24 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |$               |
00002c60  20 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 31  |             . 1|
00002c70  3a 0d 0f 28 38 20 20 20  20 20 20 20 20 20 20 20  |:..(8           |
00002c80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002c90  20 20 f2 4d 65 6e 75 5f  54 69 63 6b 28 42 61 72  |  .Menu_Tick(Bar|
00002ca0  5f 4d 65 6e 75 25 2c 34  29 0d 0f 32 27 20 20 20  |_Menu%,4)..2'   |
00002cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002cc0  20 20 20 20 20 20 20 20  20 20 42 61 72 25 3d a3  |          Bar%=.|
00002cd0  0d 0f 3c 20 20 20 20 20  20 20 20 20 20 20 20 20  |..<             |
00002ce0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 cb  |               .|
00002cf0  0d 0f 46 1f 20 20 20 20  20 20 20 20 20 20 20 20  |..F.            |
00002d00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 cb 0d  |              ..|
00002d10  0f 50 36 20 20 20 20 20  20 20 20 20 20 20 20 20  |.P6             |
00002d20  20 7f 20 3a e7 20 ac 42  61 72 25 20 8c 20 f2 4d  | . :. .Bar% . .M|
00002d30  65 6e 75 5f 54 69 63 6b  28 42 61 72 5f 4d 65 6e  |enu_Tick(Bar_Men|
00002d40  75 25 2c 34 29 0d 0f 5a  23 20 20 20 20 20 20 20  |u%,4)..Z#       |
00002d50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002d60  20 20 42 61 72 25 3d b9  0d 0f 64 3a 20 20 20 20  |  Bar%=...d:    |
00002d70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002d80  20 20 20 20 20 f2 57 69  6e 64 6f 77 73 4d 65 6e  |     .WindowsMen|
00002d90  75 5f 50 6f 70 55 70 28  30 2c 36 34 30 2c 35 31  |u_PopUp(0,640,51|
00002da0  32 29 0d 0f 6e 12 20 20  20 20 20 20 20 20 20 20  |2)..n.          |
00002db0  20 20 20 cb 0d 0f 78 11  20 20 20 20 20 20 20 20  |   ...x.        |
00002dc0  20 20 20 20 cb 0d 0f 82  0c 20 20 20 c9 20 35 20  |    .....   . 5 |
00002dd0  3a 0d 0f 8c 17 20 20 20  c9 20 36 20 3a 20 f2 57  |:....   . 6 : .W|
00002de0  69 6d 70 5f 51 75 69 74  0d 0f 96 07 20 20 cb 0d  |imp_Quit....  ..|
00002df0  0f a0 06 20 e1 0d 0f aa  05 3a 0d 0f b4 23 20 dd  |... .....:...# .|
00002e00  20 f2 44 65 61 6c 57 69  74 68 57 69 6e 64 6f 77  | .DealWithWindow|
00002e10  4d 65 6e 75 28 77 69 6e  64 6f 77 25 29 0d 0f be  |Menu(window%)...|
00002e20  0c 20 ea 20 69 74 65 6d  25 0d 0f c8 15 20 42 75  |. . item%.... Bu|
00002e30  66 66 65 72 24 3d 24 42  75 66 66 65 72 25 0d 0f  |ffer$=$Buffer%..|
00002e40  d2 17 20 c8 8e 20 a4 4d  65 6e 75 5f 49 74 65 6d  |.. .. .Menu_Item|
00002e50  28 30 29 20 ca 0d 0f dc  0b 20 20 c9 20 31 20 3a  |(0) .....  . 1 :|
00002e60  0d 0f e6 1b 20 20 20 20  20 20 20 20 20 20 20 c8  |....           .|
00002e70  8e 20 77 69 6e 64 6f 77  25 20 ca 0d 0f f0 30 20  |. window% ....0 |
00002e80  20 20 20 20 20 20 20 20  20 20 20 c9 20 20 30 20  |           .  0 |
00002e90  20 20 3a 20 c8 99 20 22  57 69 6d 70 5f 43 72 65  |  : .. "Wimp_Cre|
00002ea0  61 74 65 4d 65 6e 75 22  2c 2d 31 0d 0f fa 33 20  |ateMenu",-1...3 |
00002eb0  20 20 20 20 20 20 20 20  20 20 20 7f 20 3a 20 f2  |           . : .|
00002ec0  57 69 6e 64 6f 77 5f 43  6c 6f 73 65 28 57 69 6e  |Window_Close(Win|
00002ed0  64 6f 77 25 28 77 69 6e  64 6f 77 25 29 29 0d 10  |dow%(window%))..|
00002ee0  04 10 20 20 20 20 20 20  20 20 20 20 20 cb 0d 10  |..           ...|
00002ef0  0e 0b 20 20 c9 20 32 20  3a 0d 10 18 19 20 20 20  |..  . 2 :....   |
00002f00  c8 8e 20 a4 4d 65 6e 75  5f 49 74 65 6d 28 31 29  |.. .Menu_Item(1)|
00002f10  20 ca 0d 10 22 2b 20 20  20 20 c9 20 30 20 20 20  | ..."+    . 0   |
00002f20  20 3a 20 f2 44 65 6c 65  74 65 57 69 6e 64 6f 77  | : .DeleteWindow|
00002f30  4d 65 6e 75 28 77 69 6e  64 6f 77 25 29 0d 10 2c  |Menu(window%)..,|
00002f40  27 20 20 20 20 7f 20 3a  20 f2 44 65 61 6c 57 69  |'    . : .DealWi|
00002f50  74 68 53 65 6c 65 63 74  69 6f 6e 28 77 69 6e 64  |thSelection(wind|
00002f60  6f 77 25 29 0d 10 36 08  20 20 20 cb 0d 10 40 0b  |ow%)..6.   ...@.|
00002f70  20 20 c9 20 33 20 3a 0d  10 4a 1b 20 20 20 20 20  |  . 3 :..J.     |
00002f80  20 20 20 20 20 20 c8 8e  20 77 69 6e 64 6f 77 25  |      .. window%|
00002f90  20 ca 0d 10 54 18 20 20  20 20 20 20 20 20 20 20  | ...T.          |
00002fa0  20 20 c9 20 20 30 20 20  20 3a 0d 10 5e 24 20 20  |  .  0   :..^$  |
00002fb0  20 20 20 20 20 20 20 20  20 20 20 69 74 65 6d 25  |           item%|
00002fc0  3d a4 4d 65 6e 75 5f 49  74 65 6d 28 31 29 0d 10  |=.Menu_Item(1)..|
00002fd0  68 1b 20 20 20 20 20 20  20 20 20 20 20 20 20 c8  |h.             .|
00002fe0  8e 20 69 74 65 6d 25 20  ca 0d 10 72 16 20 20 20  |. item% ...r.   |
00002ff0  20 20 20 20 20 20 20 20  20 20 20 c9 20 30 3a 0d  |           . 0:.|
00003000  10 7c 14 20 20 20 20 20  20 20 20 20 20 20 20 20  |.|.             |
00003010  20 7f 3a 0d 10 86 30 20  20 20 20 20 20 20 20 20  | .:...0         |
00003020  20 20 20 20 20 43 6c 69  63 6b 25 28 69 74 65 6d  |     Click%(item|
00003030  25 29 3d ac 28 43 6c 69  63 6b 25 28 69 74 65 6d  |%)=.(Click%(item|
00003040  25 29 29 0d 10 90 2e 20  20 20 20 20 20 20 20 20  |%))....         |
00003050  20 20 20 20 20 f2 4d 65  6e 75 5f 54 69 63 6b 28  |     .Menu_Tick(|
00003060  57 69 6e 64 5f 4d 65 6e  75 25 2c 69 74 65 6d 25  |Wind_Menu%,item%|
00003070  29 0d 10 9a 2f 20 20 20  20 20 20 20 20 20 20 20  |).../           |
00003080  20 20 20 f2 57 69 6e 64  6f 77 73 4d 65 6e 75 5f  |   .WindowsMenu_|
00003090  50 6f 70 55 70 28 30 2c  36 34 30 2c 35 31 32 29  |PopUp(0,640,512)|
000030a0  0d 10 a4 12 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
000030b0  20 cb 0d 10 ae 34 20 20  20 20 20 20 20 20 20 20  | ....4          |
000030c0  20 20 7f 20 3a 20 4f 70  65 6e 25 28 77 69 6e 64  |  . : Open%(wind|
000030d0  6f 77 25 29 3d ac 28 4f  70 65 6e 25 28 77 69 6e  |ow%)=.(Open%(win|
000030e0  64 6f 77 25 29 29 0d 10  b8 10 20 20 20 20 20 20  |dow%))....      |
000030f0  20 20 20 20 20 cb 0d 10  c2 2c 20 20 c9 20 34 20  |     ....,  . 4 |
00003100  3a 20 45 78 69 74 25 28  77 69 6e 64 6f 77 25 29  |: Exit%(window%)|
00003110  3d ac 28 45 78 69 74 25  28 77 69 6e 64 6f 77 25  |=.(Exit%(window%|
00003120  29 29 0d 10 cc 06 20 cb  0d 10 d6 06 20 e1 0d 10  |)).... ..... ...|
00003130  e0 05 3a 0d 10 ea 21 20  dd 20 f2 44 65 6c 65 74  |..:...! . .Delet|
00003140  65 57 69 6e 64 6f 77 4d  65 6e 75 28 77 69 6e 64  |eWindowMenu(wind|
00003150  6f 77 25 29 0d 10 f4 09  20 ea 20 69 25 0d 10 fe  |ow%).... . i%...|
00003160  40 20 20 c8 8e 20 a4 43  61 6e 63 65 6c 42 6f 78  |@  .. .CancelBox|
00003170  28 54 61 73 6b 24 2c 22  44 65 6c 65 74 65 20 22  |(Task$,"Delete "|
00003180  2b 57 69 6e 64 6f 77 24  28 77 69 6e 64 6f 77 25  |+Window$(window%|
00003190  29 2b 22 20 6d 65 6e 75  3f 22 29 20 ca 0d 11 08  |)+" menu?") ....|
000031a0  2c 20 20 20 c9 20 31 20  3a 20 e3 20 69 25 3d 31  |,   . 1 : . i%=1|
000031b0  20 b8 20 4e 6f 4f 66 53  75 62 6d 65 6e 75 73 25  | . NoOfSubmenus%|
000031c0  28 77 69 6e 64 6f 77 25  29 0d 11 12 25 20 20 20  |(window%)...%   |
000031d0  20 20 20 20 20 20 20 20  20 20 4d 65 6e 75 24 28  |          Menu$(|
000031e0  77 69 6e 64 6f 77 25 2c  69 25 29 3d 22 22 0d 11  |window%,i%)=""..|
000031f0  1c 11 20 20 20 20 20 20  20 20 20 20 20 20 ed 0d  |..            ..|
00003200  11 26 35 20 20 20 20 20  20 20 20 20 20 20 20 4d  |.&5            M|
00003210  65 6e 75 24 28 77 69 6e  64 6f 77 25 2c 31 29 3d  |enu$(window%,1)=|
00003220  57 69 6e 64 6f 77 24 28  77 69 6e 64 6f 77 25 29  |Window$(window%)|
00003230  2b 22 5c 22 0d 11 30 0c  20 20 20 c9 20 32 20 3a  |+"\"..0.   . 2 :|
00003240  0d 11 3a 07 20 20 cb 0d  11 44 06 20 e1 0d 11 4e  |..:.  ...D. ...N|
00003250  05 3a 0d 11 58 22 20 dd  20 f2 44 65 61 6c 57 69  |.:..X" . .DealWi|
00003260  74 68 53 65 6c 65 63 74  69 6f 6e 28 77 69 6e 64  |thSelection(wind|
00003270  6f 77 25 29 0d 11 62 26  20 ea 20 6d 65 6e 75 24  |ow%)..b& . menu$|
00003280  2c 78 24 2c 69 25 2c 6a  25 2c 6b 25 20 3a 20 6a  |,x$,i%,j%,k% : j|
00003290  25 3d 31 20 3a 20 69 25  3d 31 0d 11 6c 1b 20 6d  |%=1 : i%=1..l. m|
000032a0  65 6e 75 24 3d 4d 65 6e  75 24 28 77 69 6e 64 6f  |enu$=Menu$(windo|
000032b0  77 25 2c 31 29 0d 11 76  19 20 c8 95 20 a4 4d 65  |w%,1)..v. .. .Me|
000032c0  6e 75 5f 49 74 65 6d 28  6a 25 29 3c 3e 30 0d 11  |nu_Item(j%)<>0..|
000032d0  80 27 20 20 6d 65 6e 75  24 3d a4 4d 65 6e 75 28  |.'  menu$=.Menu(|
000032e0  6d 65 6e 75 24 2c a4 4d  65 6e 75 5f 49 74 65 6d  |menu$,.Menu_Item|
000032f0  28 6a 25 29 29 0d 11 8a  0b 20 20 6b 25 3d 69 25  |(j%))....  k%=i%|
00003300  0d 11 94 30 20 20 69 25  3d a7 6d 65 6e 75 24 2c  |...0  i%=.menu$,|
00003310  22 3e 22 29 20 3a 20 69  25 3d bb 28 c2 6d 65 6e  |">") : i%=.(.men|
00003320  75 24 2c a9 28 6d 65 6e  75 24 29 2d 69 25 29 29  |u$,.(menu$)-i%))|
00003330  0d 11 9e 28 20 20 e7 20  69 25 3c 31 30 30 20 8c  |...(  . i%<100 .|
00003340  20 6d 65 6e 75 24 3d 4d  65 6e 75 24 28 77 69 6e  | menu$=Menu$(win|
00003350  64 6f 77 25 2c 69 25 29  0d 11 a8 0b 20 20 6a 25  |dow%,i%)....  j%|
00003360  2b 3d 31 0d 11 b2 06 20  ce 0d 11 bc 3c 20 6a 25  |+=1.... ....< j%|
00003370  3d a4 4d 65 6e 75 5f 49  74 65 6d 28 6a 25 2d 31  |=.Menu_Item(j%-1|
00003380  29 20 3a 20 6d 65 6e 75  24 3d a4 4d 65 6e 75 28  |) : menu$=.Menu(|
00003390  4d 65 6e 75 24 28 77 69  6e 64 6f 77 25 2c 6b 25  |Menu$(window%,k%|
000033a0  29 2c 6a 25 29 0d 11 c6  0f 20 c8 8e 20 6d 65 6e  |),j%).... .. men|
000033b0  75 24 20 ca 0d 11 d0 1c  20 20 c9 20 22 22 20 20  |u$ .....  . ""  |
000033c0  20 3a 20 20 c8 8e 20 42  75 66 66 65 72 24 20 ca  | :  .. Buffer$ .|
000033d0  0d 11 da 1c 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
000033e0  20 20 20 20 c9 20 20 20  22 22 20 3a 0d 11 e4 17  |    .   "" :....|
000033f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003400  7f 20 3a 0d 11 ee 2d 20  20 20 20 20 20 20 20 20  |. :...-         |
00003410  20 20 20 20 20 20 20 20  f2 41 64 64 4d 65 6e 75  |        .AddMenu|
00003420  49 74 65 6d 28 77 69 6e  64 6f 77 25 2c 6b 25 29  |Item(window%,k%)|
00003430  0d 11 f8 36 20 20 20 20  20 20 20 20 20 20 20 20  |...6            |
00003440  20 20 20 20 20 e7 20 77  69 6e 64 6f 77 25 3d 30  |     . window%=0|
00003450  20 8c 20 78 78 78 25 3d  36 34 30 20 3a 20 79 79  | . xxx%=640 : yy|
00003460  79 25 3d 35 31 32 0d 12  02 3f 20 20 20 20 20 20  |y%=512...?      |
00003470  20 20 20 20 20 20 20 20  20 20 20 f2 57 69 6e 64  |           .Wind|
00003480  6f 77 73 4d 65 6e 75 5f  50 6f 70 55 70 28 77 69  |owsMenu_PopUp(wi|
00003490  6e 64 6f 77 5f 6d 65 6e  75 25 2c 78 78 78 25 2c  |ndow_menu%,xxx%,|
000034a0  79 79 79 25 29 0d 12 0c  14 20 20 20 20 20 20 20  |yyy%)....       |
000034b0  20 20 20 20 20 20 20 20  cb 0d 12 16 27 20 20 7f  |        ....'  .|
000034c0  20 3a 20 20 f2 45 64 69  74 4d 65 6e 75 49 74 65  | :  .EditMenuIte|
000034d0  6d 28 77 69 6e 64 6f 77  25 2c 6b 25 2c 6a 25 29  |m(window%,k%,j%)|
000034e0  0d 12 20 06 20 cb 0d 12  2a 06 20 e1 0d 12 34 06  |.. . ...*. ...4.|
000034f0  20 3a 0d 12 3e 22 20 dd  20 f2 41 64 64 4d 65 6e  | :..>" . .AddMen|
00003500  75 49 74 65 6d 28 77 69  6e 64 6f 77 25 2c 6d 65  |uItem(window%,me|
00003510  6e 75 25 29 0d 12 48 09  20 ea 20 6b 25 0d 12 52  |nu%)..H. . k%..R|
00003520  22 20 20 c8 8e 20 28 77  69 6e 64 6f 77 25 3d 30  |"  .. (window%=0|
00003530  29 20 80 20 28 6d 65 6e  75 25 3d 31 29 20 ca 0d  |) . (menu%=1) ..|
00003540  12 5c 09 20 20 c9 20 b9  0d 12 66 1f 20 20 20 6b  |.\.  . ...f.   k|
00003550  25 3d a7 4d 65 6e 75 24  28 30 2c 31 29 2c 22 5c  |%=.Menu$(0,1),"\|
00003560  51 75 69 74 5c 22 29 0d  12 70 32 20 20 20 4d 65  |Quit\")..p2   Me|
00003570  6e 75 24 28 30 2c 31 29  3d c0 4d 65 6e 75 24 28  |nu$(0,1)=.Menu$(|
00003580  30 2c 31 29 2c 6b 25 29  2b 42 75 66 66 65 72 24  |0,1),k%)+Buffer$|
00003590  2b 22 5c 51 75 69 74 5c  22 0d 12 7a 09 20 20 c9  |+"\Quit\"..z.  .|
000035a0  20 a3 0d 12 84 28 20 20  20 4d 65 6e 75 24 28 77  | ....(   Menu$(w|
000035b0  69 6e 64 6f 77 25 2c 6d  65 6e 75 25 29 2b 3d 42  |indow%,menu%)+=B|
000035c0  75 66 66 65 72 24 2b 22  5c 22 0d 12 8e 07 20 20  |uffer$+"\"....  |
000035d0  cb 0d 12 98 06 20 e1 0d  12 a2 06 20 3a 0d 12 ac  |..... ..... :...|
000035e0  28 20 dd 20 f2 45 64 69  74 4d 65 6e 75 49 74 65  |( . .EditMenuIte|
000035f0  6d 28 77 69 6e 64 6f 77  25 2c 6d 65 6e 25 2c 69  |m(window%,men%,i|
00003600  74 65 6d 25 29 0d 12 b6  14 20 20 69 25 3d a7 6d  |tem%)....  i%=.m|
00003610  65 6e 75 24 2c 22 3e 22  29 0d 12 c0 22 20 20 e7  |enu$,">")..."  .|
00003620  20 69 25 3c 3e 30 20 8c  20 6d 65 6e 75 24 3d c0  | i%<>0 . menu$=.|
00003630  6d 65 6e 75 24 2c 69 25  2d 31 29 0d 12 ca 32 20  |menu$,i%-1)...2 |
00003640  20 24 42 75 66 66 65 72  25 3d 6d 65 6e 75 24 20  | $Buffer%=menu$ |
00003650  3a 20 24 42 75 66 66 65  72 31 25 3d 22 22 20 3a  |: $Buffer1%="" :|
00003660  20 24 42 75 66 66 65 72  32 25 3d 22 22 0d 12 d4  | $Buffer2%=""...|
00003670  2e 20 20 57 69 6e 64 25  3d 77 69 6e 64 6f 77 25  |.  Wind%=window%|
00003680  20 3a 20 4d 65 6e 75 25  3d 6d 65 6e 25 20 3a 20  | : Menu%=men% : |
00003690  49 74 65 6d 25 3d 69 74  65 6d 25 0d 12 de 25 20  |Item%=item%...% |
000036a0  20 c8 99 20 22 57 69 6d  70 5f 47 65 74 50 6f 69  | .. "Wimp_GetPoi|
000036b0  6e 74 65 72 49 6e 66 6f  22 2c 2c 77 69 6d 70 25  |nterInfo",,wimp%|
000036c0  0d 12 e8 2d 20 20 f2 4d  65 6e 75 5f 50 6f 70 55  |...-  .Menu_PopU|
000036d0  70 28 45 64 69 74 5f 4d  65 6e 75 25 2c 77 69 6d  |p(Edit_Menu%,wim|
000036e0  70 25 21 30 2c 77 69 6d  70 25 21 34 29 0d 12 f2  |p%!0,wimp%!4)...|
000036f0  06 20 e1 0d 12 fc 06 20  3a 0d 13 06 19 20 dd 20  |. ..... :.... . |
00003700  a4 4d 65 6e 75 28 6d 65  6e 75 24 2c 69 74 65 6d  |.Menu(menu$,item|
00003710  25 29 0d 13 10 0d 20 20  ea 20 69 25 2c 6b 25 0d  |%)....  . i%,k%.|
00003720  13 1a 11 20 20 6b 25 3d  30 20 3a 20 69 25 3d 30  |...  k%=0 : i%=0|
00003730  0d 13 24 07 20 20 f5 0d  13 2e 22 20 20 20 6b 25  |..$.  ...."   k%|
00003740  3d a7 6d 65 6e 75 24 2c  22 5c 22 2c 6b 25 2b 31  |=.menu$,"\",k%+1|
00003750  29 20 3a 20 69 25 2b 3d  31 0d 13 38 10 20 20 fd  |) : i%+=1..8.  .|
00003760  20 69 25 3d 69 74 65 6d  25 0d 13 42 19 20 20 69  | i%=item%..B.  i|
00003770  25 3d a7 6d 65 6e 75 24  2c 22 5c 22 2c 6b 25 2b  |%=.menu$,"\",k%+|
00003780  31 29 0d 13 4c 37 20 20  e7 20 69 25 3d 30 20 8c  |1)..L7  . i%=0 .|
00003790  3d c2 6d 65 6e 75 24 2c  a9 6d 65 6e 75 24 2d 6b  |=.menu$,.menu$-k|
000037a0  25 29 20 8b 3d c1 6d 65  6e 75 24 2c 6b 25 2b 31  |%) .=.menu$,k%+1|
000037b0  2c 69 25 2d 6b 25 2d 31  29 0d 13 56 06 20 3a 0d  |,i%-k%-1)..V. :.|
000037c0  13 60 23 f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.`#.------------|
000037d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000037e0  2d 2d 0d 13 6a 1e f4 45  76 65 6e 74 73 31 37 2f  |--..j..Events17/|
000037f0  31 38 2f 31 39 3a 20 20  4d 45 53 53 41 47 45 53  |18/19:  MESSAGES|
00003800  0d 13 74 24 f4 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..t$.-----------|
00003810  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00003820  2d 2d 2d 2d 0d 13 7e 05  3a 0d 13 88 27 dd 20 f2  |----..~.:...'. .|
00003830  45 76 65 6e 74 5f 44 65  61 6c 57 69 74 68 4d 65  |Event_DealWithMe|
00003840  73 73 61 67 65 73 28 6d  65 73 73 61 67 65 25 29  |ssages(message%)|
00003850  0d 13 92 11 c8 8e 20 6d  65 73 73 61 67 65 25 20  |...... message% |
00003860  ca 0d 13 9c 23 20 20 c9  20 6d 65 73 73 61 67 65  |....#  . message|
00003870  5f 71 75 69 74 25 20 20  3a 20 f2 57 69 6d 70 5f  |_quit%  : .Wimp_|
00003880  51 75 69 74 0d 13 a6 3e  20 20 c9 20 6d 65 73 73  |Quit...>  . mess|
00003890  61 67 65 5f 73 61 76 65  25 20 20 3a 20 f2 44 65  |age_save%  : .De|
000038a0  61 6c 57 69 74 68 53 61  76 69 6e 67 4f 66 46 69  |alWithSavingOfFi|
000038b0  6c 65 28 a4 46 69 6c 65  5f 50 61 74 68 4e 61 6d  |le(.File_PathNam|
000038c0  65 29 0d 13 b0 2f 20 20  c9 20 6d 65 73 73 61 67  |e).../  . messag|
000038d0  65 5f 6c 6f 61 64 25 20  20 3a 20 f2 44 65 61 6c  |e_load%  : .Deal|
000038e0  57 69 74 68 4c 6f 61 64  69 6e 67 4f 66 46 69 6c  |WithLoadingOfFil|
000038f0  65 0d 13 ba 27 20 20 c9  20 26 34 30 30 43 30 20  |e...'  . &400C0 |
00003900  20 20 20 20 20 20 20 20  3a 20 77 69 6e 64 6f 77  |        : window|
00003910  5f 6d 65 6e 75 25 3d 30  0d 13 c4 05 cb 0d 13 ce  |_menu%=0........|
00003920  0f f2 4d 65 6e 75 5f 43  6c 6f 73 65 0d 13 d8 05  |..Menu_Close....|
00003930  e1 0d 13 e2 05 3a 0d 13  ec 23 20 dd 20 f2 44 65  |.....:...# . .De|
00003940  61 6c 57 69 74 68 53 61  76 69 6e 67 4f 66 46 69  |alWithSavingOfFi|
00003950  6c 65 28 66 69 6c 65 24  29 0d 13 f6 18 20 20 20  |le(file$)....   |
00003960  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |.. "Hourglass_On|
00003970  22 0d 14 00 1e 20 20 20  66 69 6c 65 25 3d ad 28  |"....   file%=.(|
00003980  6d 61 6b 65 24 2b 22 2e  44 61 74 61 20 22 29 0d  |make$+".Data ").|
00003990  14 0a 2f 20 20 20 f1 23  66 69 6c 65 25 2c 20 70  |../   .#file%, p|
000039a0  72 6f 6c 69 78 25 2c 74  65 72 73 65 25 2c 4c 69  |rolix%,terse%,Li|
000039b0  62 72 61 72 79 25 2c 45  64 69 74 6f 72 25 0d 14  |brary%,Editor%..|
000039c0  14 16 20 20 20 d9 23 66  69 6c 65 25 3a 66 69 6c  |..   .#file%:fil|
000039d0  65 25 3d 30 0d 14 1e 18  20 20 20 ea 20 63 24 20  |e%=0....   . c$ |
000039e0  3a 20 63 24 3d 22 46 7e  43 7e 56 22 0d 14 28 48  |: c$="F~C~V"..(H|
000039f0  20 20 20 ff 28 22 2a 43  44 49 52 20 22 2b 66 69  |   .("*CDIR "+fi|
00003a00  6c 65 24 29 20 20 20 20  20 20 20 20 20 20 20 20  |le$)            |
00003a10  20 20 20 20 3a 20 f4 20  43 72 65 61 74 65 20 41  |    : . Create A|
00003a20  70 70 6c 69 63 61 74 69  6f 6e 20 44 69 72 65 63  |pplication Direc|
00003a30  74 6f 72 79 0d 14 32 4a  20 20 20 e7 20 54 65 6d  |tory..2J   . Tem|
00003a40  70 6c 61 74 65 24 3c 3e  22 22 20 8c 20 ff 28 22  |plate$<>"" . .("|
00003a50  2a 20 43 4f 50 59 20 22  2b 54 65 6d 70 6c 61 74  |* COPY "+Templat|
00003a60  65 24 2b 22 20 22 2b 66  69 6c 65 24 2b 22 2e 54  |e$+" "+file$+".T|
00003a70  65 6d 70 6c 61 74 65 73  20 22 2b 63 24 29 0d 14  |emplates "+c$)..|
00003a80  3c 45 20 20 20 e7 20 53  70 72 69 74 65 24 3c 3e  |<E   . Sprite$<>|
00003a90  22 22 20 20 20 8c 20 ff  28 22 2a 43 4f 50 59 20  |""   . .("*COPY |
00003aa0  22 2b 53 70 72 69 74 65  24 2b 22 20 22 2b 66 69  |"+Sprite$+" "+fi|
00003ab0  6c 65 24 2b 22 2e 53 70  72 69 74 65 73 20 22 2b  |le$+".Sprites "+|
00003ac0  63 24 29 0d 14 46 14 20  20 20 c8 8e 20 53 53 70  |c$)..F.   .. SSp|
00003ad0  72 69 74 65 24 20 ca 0d  14 50 0f 20 20 20 20 c9  |rite$ ...P.    .|
00003ae0  20 22 22 20 20 3a 0d 14  5a 45 20 20 20 20 20 ff  | ""  :..ZE     .|
00003af0  28 22 2a 43 4f 50 59 20  22 2b 6d 61 6b 65 24 2b  |("*COPY "+make$+|
00003b00  22 2e 4c 69 62 72 61 72  79 2e 21 53 70 72 69 74  |".Library.!Sprit|
00003b10  65 73 20 22 2b 66 69 6c  65 24 2b 22 2e 21 53 70  |es "+file$+".!Sp|
00003b20  72 69 74 65 73 20 22 2b  63 24 29 0d 14 64 0a 20  |rites "+c$)..d. |
00003b30  20 20 20 7f 3a 0d 14 6e  37 20 20 20 20 20 ff 28  |   .:..n7     .(|
00003b40  22 2a 43 4f 50 59 20 22  2b 53 53 70 72 69 74 65  |"*COPY "+SSprite|
00003b50  24 2b 22 20 22 2b 66 69  6c 65 24 2b 22 2e 21 53  |$+" "+file$+".!S|
00003b60  70 72 69 74 65 73 20 22  2b 63 24 29 0d 14 78 08  |prites "+c$)..x.|
00003b70  20 20 20 cb 0d 14 82 1d  20 20 20 f2 43 72 65 61  |   .....   .Crea|
00003b80  74 65 5f 52 75 6e 46 69  6c 65 28 66 69 6c 65 24  |te_RunFile(file$|
00003b90  29 0d 14 8c 1e 20 20 20  f2 43 72 65 61 74 65 5f  |)....   .Create_|
00003ba0  48 65 6c 70 46 69 6c 65  28 66 69 6c 65 24 29 0d  |HelpFile(file$).|
00003bb0  14 96 1e 20 20 20 f2 43  72 65 61 74 65 5f 52 75  |...   .Create_Ru|
00003bc0  6e 49 6d 61 67 65 28 66  69 6c 65 24 29 0d 14 a0  |nImage(file$)...|
00003bd0  19 20 20 20 c8 99 20 22  48 6f 75 72 67 6c 61 73  |.   .. "Hourglas|
00003be0  73 5f 4f 66 66 22 0d 14  aa 14 20 20 20 c8 8e 20  |s_Off"....   .. |
00003bf0  4c 69 62 72 61 72 79 25  20 ca 0d 14 b4 0d 20 20  |Library% .....  |
00003c00  20 20 c9 20 b9 20 3a 0d  14 be 22 20 20 20 20 20  |  . . :..."     |
00003c10  66 24 3d 6d 61 6b 65 24  2b 22 2e 4c 69 62 72 61  |f$=make$+".Libra|
00003c20  72 79 2e 57 69 6d 70 42  22 0d 14 c8 13 20 20 20  |ry.WimpB"....   |
00003c30  20 20 63 24 3d 22 46 7e  43 7e 56 22 0d 14 d2 2a  |  c$="F~C~V"...*|
00003c40  20 20 20 20 20 ff 28 22  2a 43 4f 50 59 20 22 2b  |     .("*COPY "+|
00003c50  66 24 2b 22 20 22 2b 67  24 2b 22 2e 57 69 6d 70  |f$+" "+g$+".Wimp|
00003c60  20 22 2b 63 24 29 0d 14  dc 0b 20 20 20 20 7f 20  | "+c$)....    . |
00003c70  3a 0d 14 e6 22 20 20 20  20 20 20 66 24 3d 6d 61  |:..."      f$=ma|
00003c80  6b 65 24 2b 22 2e 4c 69  62 72 61 72 79 2e 57 69  |ke$+".Library.Wi|
00003c90  6d 70 22 0d 14 f0 32 f4  20 20 20 73 25 3d 4f 50  |mp"...2.   s%=OP|
00003ca0  45 4e 49 4e 20 66 24 20  3a 20 74 25 3d 45 58 54  |ENIN f$ : t%=EXT|
00003cb0  23 73 25 20 3a 20 43 4c  4f 53 45 23 73 25 20 3a  |#s% : CLOSE#s% :|
00003cc0  20 73 25 3d 30 0d 14 fa  27 f4 20 20 20 4f 53 43  | s%=0...'.   OSC|
00003cd0  4c 49 28 22 4c 4f 41 44  20 22 2b 66 24 2b 22 20  |LI("LOAD "+f$+" |
00003ce0  22 2b 53 54 52 24 7e 70  74 72 25 29 0d 15 04 10  |"+STR$~ptr%)....|
00003cf0  f4 20 20 20 70 74 72 25  2b 3d 74 25 0d 15 0e 22  |.   ptr%+=t%..."|
00003d00  20 20 20 20 20 20 46 25  3d ad 28 66 69 6c 65 24  |      F%=.(file$|
00003d10  2b 22 2e 21 52 75 6e 49  6d 61 67 65 22 29 0d 15  |+".!RunImage")..|
00003d20  18 13 20 20 20 20 20 20  cf 23 46 25 3d a2 23 46  |..      .#F%=.#F|
00003d30  25 0d 15 22 12 20 20 20  20 20 20 47 25 3d 8e 28  |%..".      G%=.(|
00003d40  66 24 29 0d 15 2c 30 f4  20 20 20 20 20 20 50 54  |f$)..,0.      PT|
00003d50  52 23 46 25 3d 50 54 52  23 46 25 20 2d 20 32 3a  |R#F%=PTR#F% - 2:|
00003d60  52 45 4d 20 66 6f 72 20  42 41 53 49 43 20 66 69  |REM for BASIC fi|
00003d70  6c 65 73 0d 15 36 13 20  20 20 20 20 20 d6 20 61  |les..6.      . a|
00003d80  70 70 65 6e 64 25 0d 15  40 31 f4 20 20 20 52 45  |ppend%..@1.   RE|
00003d90  50 45 41 54 3a 42 25 3d  42 47 45 54 23 47 25 3a  |PEAT:B%=BGET#G%:|
00003da0  42 50 55 54 23 46 25 2c  42 25 3a 55 4e 54 49 4c  |BPUT#F%,B%:UNTIL|
00003db0  20 45 4f 46 23 47 25 0d  15 4a 13 20 20 20 20 20  | EOF#G%..J.     |
00003dc0  20 d9 23 46 25 3a 46 25  3d 30 0d 15 54 13 20 20  | .#F%:F%=0..T.  |
00003dd0  20 20 20 20 d9 23 47 25  3a 47 25 3d 30 0d 15 5e  |    .#G%:G%=0..^|
00003de0  08 20 20 20 cb 0d 15 68  04 0d 15 72 11 20 c8 8e  |.   ...h...r. ..|
00003df0  20 45 64 69 74 6f 72 25  20 ca 0d 15 7c 09 20 20  | Editor% ...|.  |
00003e00  c9 20 b9 0d 15 86 19 20  20 20 2a 73 65 74 20 44  |. .....   *set D|
00003e10  69 61 6c 6f 67 75 65 24  20 79 65 73 0d 15 90 31  |ialogue$ yes...1|
00003e20  20 20 20 2a 52 6d 45 6e  73 75 72 65 20 44 69 61  |   *RmEnsure Dia|
00003e30  6c 6f 67 75 65 20 20 30  2e 30 30 20 2a 73 65 74  |logue  0.00 *set|
00003e40  20 44 69 61 6c 6f 67 75  65 24 20 6e 6f 0d 15 9a  | Dialogue$ no...|
00003e50  2c 20 20 20 20 c8 8e 20  a4 57 69 6d 70 5f 52 65  |,    .. .Wimp_Re|
00003e60  61 64 56 61 72 69 61 62  6c 65 28 22 44 69 61 6c  |adVariable("Dial|
00003e70  6f 67 75 65 24 22 29 20  ca 0d 15 a4 10 20 20 20  |ogue$") .....   |
00003e80  20 20 c9 20 22 79 65 73  22 0d 15 ae 7c 20 20 20  |  . "yes"...|   |
00003e90  20 20 20 ff 28 22 57 69  6d 70 54 61 73 6b 20 4d  |   .("WimpTask M|
00003ea0  45 53 53 41 47 45 20 53  74 72 6f 6e 67 45 44 32  |ESSAGE StrongED2|
00003eb0  5f 4f 70 65 6e 44 6f 63  20 22 2b 66 69 6c 65 24  |_OpenDoc "+file$|
00003ec0  2b 22 2e 21 52 75 6e 49  6d 61 67 65 20 31 32 38  |+".!RunImage 128|
00003ed0  20 39 36 30 20 35 32 38  20 35 32 30 20 30 20 30  | 960 528 520 0 0|
00003ee0  20 2d 77 72 61 70 20 38  30 20 2d 77 6f 72 64 77  | -wrap 80 -wordw|
00003ef0  72 61 70 20 2d 62 63 6f  6c 20 37 20 2d 66 63 6f  |rap -bcol 7 -fco|
00003f00  6c 20 30 22 29 0d 15 b8  09 20 20 20 20 cb 0d 15  |l 0")....    ...|
00003f10  c2 2b 20 20 20 f2 57 69  6d 70 5f 53 65 6e 64 54  |.+   .Wimp_SendT|
00003f20  6f 45 64 69 74 28 66 69  6c 65 24 2b 22 2e 21 52  |oEdit(file$+".!R|
00003f30  75 6e 49 6d 61 67 65 22  29 0d 15 cc 07 20 20 cb  |unImage")....  .|
00003f40  0d 15 d6 04 0d 15 e0 06  20 e1 0d 15 ea 05 3a 0d  |........ .....:.|
00003f50  15 f4 1e 20 20 dd 20 f2  43 72 65 61 74 65 5f 52  |...  . .Create_R|
00003f60  75 6e 46 69 6c 65 28 66  69 6c 65 24 29 0d 15 fe  |unFile(file$)...|
00003f70  3a 20 20 ea 20 70 74 72  25 20 3a 20 70 74 72 25  |:  . ptr% : ptr%|
00003f80  3d 77 69 6d 70 25 20 3a  20 61 70 70 6c 69 63 61  |=wimp% : applica|
00003f90  74 69 6f 6e 24 3d c0 a4  47 65 74 4c 65 61 66 28  |tion$=..GetLeaf(|
00003fa0  66 69 6c 65 24 29 29 0d  16 08 15 20 20 f2 41 64  |file$))....  .Ad|
00003fb0  64 5f 4c 69 6e 65 28 22  22 2c 30 29 0d 16 12 40  |d_Line("",0)...@|
00003fc0  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 7c 20 2d  |  .Add_Line("| -|
00003fd0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00003fe0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 22 2b c4 a9 4e  |-----------"+..N|
00003ff0  61 6d 65 24 2c 22 2d 22  29 2c 30 29 0d 16 1c 38  |ame$,"-"),0)...8|
00004000  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 7c 20 52  |  .Add_Line("| R|
00004010  75 6e 20 66 69 6c 65 20  66 6f 72 20 61 70 70 6c  |un file for appl|
00004020  69 63 61 74 69 6f 6e 20  3a 20 22 2b 4e 61 6d 65  |ication : "+Name|
00004030  24 2c 30 29 0d 16 26 40  20 20 f2 41 64 64 5f 4c  |$,0)..&@  .Add_L|
00004040  69 6e 65 28 22 7c 20 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ine("| ---------|
00004050  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00004060  2d 2d 2d 22 2b c4 a9 4e  61 6d 65 24 2c 22 2d 22  |---"+..Name$,"-"|
00004070  29 2c 30 29 0d 16 30 15  20 20 f2 41 64 64 5f 4c  |),0)..0.  .Add_L|
00004080  69 6e 65 28 22 22 2c 30  29 0d 16 3a 31 20 20 61  |ine("",0)..:1  a|
00004090  70 70 6c 69 63 61 74 69  6f 6e 24 3d c2 61 70 70  |pplication$=.app|
000040a0  6c 69 63 61 74 69 6f 6e  24 2c a9 61 70 70 6c 69  |lication$,.appli|
000040b0  63 61 74 69 6f 6e 24 2d  31 29 0d 16 44 38 20 20  |cation$-1)..D8  |
000040c0  f2 41 64 64 5f 4c 69 6e  65 28 22 53 65 74 20 22  |.Add_Line("Set "|
000040d0  2b 61 70 70 6c 69 63 61  74 69 6f 6e 24 2b 22 24  |+application$+"$|
000040e0  44 69 72 20 3c 4f 62 65  79 24 44 69 72 3e 22 2c  |Dir <Obey$Dir>",|
000040f0  32 29 0d 16 4e 13 20 20  c8 8e 20 53 53 70 72 69  |2)..N.  .. SSpri|
00004100  74 65 24 20 ca 0d 16 58  0f 20 20 20 c9 20 22 22  |te$ ...X.   . ""|
00004110  20 20 20 3a 0d 16 62 0a  20 20 20 7f 20 3a 0d 16  |   :..b.   . :..|
00004120  6c 36 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |l6    .Add_Line(|
00004130  22 49 63 6f 6e 53 70 72  69 74 65 73 20 3c 4f 62  |"IconSprites <Ob|
00004140  65 79 24 44 69 72 3e 2e  21 53 70 72 69 74 65 73  |ey$Dir>.!Sprites|
00004150  22 2c 32 29 0d 16 76 07  20 20 cb 0d 16 80 15 20  |",2)..v.  ..... |
00004160  20 c8 8e 20 69 6e 74 65  72 66 61 63 65 25 20 ca  | .. interface% .|
00004170  0d 16 8a 0a 20 20 c9 20  b9 3a 0d 16 94 16 20 20  |....  . .:....  |
00004180  20 f2 41 64 64 5f 4c 69  6e 65 28 22 22 2c 30 29  | .Add_Line("",0)|
00004190  0d 16 9e 31 20 20 20 f2  41 64 64 5f 4c 69 6e 65  |...1   .Add_Line|
000041a0  28 22 7c 20 4c 6f 61 64  69 6e 67 20 69 6e 74 65  |("| Loading inte|
000041b0  72 66 61 63 65 20 6d 6f  64 75 6c 65 3a 22 2c 30  |rface module:",0|
000041c0  29 0d 16 a8 16 20 20 20  f2 41 64 64 5f 4c 69 6e  |)....   .Add_Lin|
000041d0  65 28 22 22 2c 30 29 0d  16 b2 5e 20 20 20 f2 41  |e("",0)...^   .A|
000041e0  64 64 5f 4c 69 6e 65 28  22 49 66 20 22 22 3c 53  |dd_Line("If ""<S|
000041f0  79 73 74 65 6d 24 50 61  74 68 3e 22 22 3d 22 22  |ystem$Path>""=""|
00004200  22 22 20 20 74 68 65 6e  20 45 72 72 6f 72 20 30  |""  then Error 0|
00004210  20 53 79 73 74 65 6d 20  72 65 73 6f 75 72 63 65  | System resource|
00004220  73 20 63 61 6e 6e 6f 74  20 62 65 20 66 6f 75 6e  |s cannot be foun|
00004230  64 22 2c 32 29 0d 16 bc  4a 20 20 20 f2 41 64 64  |d",2)...J   .Add|
00004240  5f 4c 69 6e 65 28 22 52  4d 45 6e 73 75 72 65 20  |_Line("RMEnsure |
00004250  53 68 61 72 65 64 43 4c  69 62 72 61 72 79 20 30  |SharedCLibrary 0|
00004260  20 52 4d 4c 6f 61 64 20  53 79 73 74 65 6d 3a 6d  | RMLoad System:m|
00004270  6f 64 75 6c 65 73 2e 43  4c 69 62 22 2c 32 29 0d  |odules.CLib",2).|
00004280  16 c6 54 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |..T   .Add_Line(|
00004290  22 52 4d 45 6e 73 75 72  65 20 49 6e 74 65 72 66  |"RMEnsure Interf|
000042a0  61 63 65 4d 61 6e 61 67  65 72 20 31 2e 32 35 20  |aceManager 1.25 |
000042b0  52 4d 4c 6f 61 64 20 53  79 73 74 65 6d 3a 6d 6f  |RMLoad System:mo|
000042c0  64 75 6c 65 73 2e 49 6e  74 65 72 66 61 63 65 22  |dules.Interface"|
000042d0  2c 32 29 0d 16 d0 59 20  20 20 f2 41 64 64 5f 4c  |,2)...Y   .Add_L|
000042e0  69 6e 65 28 22 52 4d 45  6e 73 75 72 65 20 49 6e  |ine("RMEnsure In|
000042f0  74 65 72 66 61 63 65 4d  61 6e 61 67 65 72 20 31  |terfaceManager 1|
00004300  2e 32 35 20 45 72 72 6f  72 20 43 6f 75 6c 64 6e  |.25 Error Couldn|
00004310  27 74 20 6c 6f 61 64 20  49 6e 74 65 72 66 61 63  |'t load Interfac|
00004320  65 20 6d 6f 64 75 6c 65  22 2c 32 29 0d 16 da 07  |e module",2)....|
00004330  20 20 cb 0d 16 e4 15 20  20 f2 41 64 64 5f 4c 69  |  .....  .Add_Li|
00004340  6e 65 28 22 22 2c 30 29  0d 16 ee 2f 20 20 f2 41  |ne("",0).../  .A|
00004350  64 64 5f 4c 69 6e 65 28  22 57 69 6d 70 53 6c 6f  |dd_Line("WimpSlo|
00004360  74 20 2d 6d 69 6e 20 36  34 4b 20 2d 6d 61 78 20  |t -min 64K -max |
00004370  36 34 4b 22 2c 32 29 0d  16 f8 2e 20 20 f2 41 64  |64K",2)....  .Ad|
00004380  64 5f 4c 69 6e 65 28 22  52 75 6e 20 3c 4f 62 65  |d_Line("Run <Obe|
00004390  79 24 44 69 72 3e 2e 21  52 75 6e 49 6d 61 67 65  |y$Dir>.!RunImage|
000043a0  20 22 2c 32 29 0d 17 02  14 20 20 66 69 6c 65 24  | ",2)....  file$|
000043b0  2b 3d 22 2e 21 52 75 6e  22 0d 17 0c 2c 20 20 c8  |+=".!Run"...,  .|
000043c0  99 20 22 4f 53 5f 46 69  6c 65 22 2c 31 30 2c 66  |. "OS_File",10,f|
000043d0  69 6c 65 24 2c 26 46 45  42 2c 2c 77 69 6d 70 25  |ile$,&FEB,,wimp%|
000043e0  2c 70 74 72 25 0d 17 16  06 20 e1 0d 17 20 07 20  |,ptr%.... ... . |
000043f0  20 3a 0d 17 2a 1e 20 dd  20 f2 43 72 65 61 74 65  | :..*. . .Create|
00004400  5f 48 65 6c 70 46 69 6c  65 28 66 69 6c 65 24 29  |_HelpFile(file$)|
00004410  0d 17 34 1b 20 ea 20 70  74 72 25 2c 69 25 20 3a  |..4. . ptr%,i% :|
00004420  20 70 74 72 25 3d 77 69  6d 70 25 0d 17 3e 0f 20  | ptr%=wimp%..>. |
00004430  20 64 61 74 65 25 21 30  3d 30 0d 17 48 1b 20 20  | date%!0=0..H.  |
00004440  c8 99 20 22 4f 53 5f 57  6f 72 64 22 2c 31 34 2c  |.. "OS_Word",14,|
00004450  64 61 74 65 25 0d 17 52  0f 20 20 79 24 3d 24 64  |date%..R.  y$=$d|
00004460  61 74 65 25 0d 17 5c 19  20 20 20 20 f2 41 64 64  |ate%..\.    .Add|
00004470  5f 4c 69 6e 65 28 22 20  20 22 2c 30 29 0d 17 66  |_Line("  ",0)..f|
00004480  1e 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 c4  |.    .Add_Line(.|
00004490  34 30 2c 22 2d 22 29 2c  31 38 29 0d 17 70 37 20  |40,"-"),18)..p7 |
000044a0  20 20 20 f2 41 64 64 5f  4c 69 6e 65 28 22 41 70  |   .Add_Line("Ap|
000044b0  70 6c 69 63 61 74 69 6f  6e 20 3a 20 22 2b 4e 61  |plication : "+Na|
000044c0  6d 65 24 2c 28 36 33 2d  a9 4e 61 6d 65 24 29 81  |me$,(63-.Name$).|
000044d0  32 29 0d 17 7a 17 20 20  20 20 f2 41 64 64 5f 4c  |2)..z.    .Add_L|
000044e0  69 6e 65 28 22 22 2c 30  29 0d 17 84 3e 20 20 20  |ine("",0)...>   |
000044f0  20 f2 41 64 64 5f 4c 69  6e 65 28 22 48 65 6c 70  | .Add_Line("Help|
00004500  20 66 6f 72 20 56 65 72  73 69 6f 6e 20 31 2e 30  | for Version 1.0|
00004510  20 3a 20 28 22 2b c1 79  24 2c 35 2c 31 31 29 2b  | : ("+.y$,5,11)+|
00004520  22 29 22 2c 32 30 29 0d  17 8e 19 20 20 20 20 f2  |")",20)....    .|
00004530  41 64 64 5f 4c 69 6e 65  28 22 20 20 22 2c 30 29  |Add_Line("  ",0)|
00004540  0d 17 98 1e 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |....    .Add_Lin|
00004550  65 28 c4 34 30 2c 22 2d  22 29 2c 31 38 29 0d 17  |e(.40,"-"),18)..|
00004560  a2 25 20 20 20 20 e3 20  69 25 3d 31 20 b8 20 35  |.%    . i%=1 . 5|
00004570  20 3a f2 41 64 64 5f 4c  69 6e 65 28 22 22 2c 30  | :.Add_Line("",0|
00004580  29 3a ed 0d 17 ac 2f 20  20 20 20 f2 41 64 64 5f  |):..../    .Add_|
00004590  4c 69 6e 65 28 22 3c 55  73 65 72 20 77 72 69 74  |Line("<User writ|
000045a0  65 73 20 68 65 6c 70 20  68 65 72 65 3e 22 2c 32  |es help here>",2|
000045b0  36 29 0d 17 b6 17 20 20  20 20 f2 41 64 64 5f 4c  |6)....    .Add_L|
000045c0  69 6e 65 28 22 22 2c 30  29 0d 17 c0 15 20 20 66  |ine("",0)....  f|
000045d0  69 6c 65 24 2b 3d 22 2e  21 48 65 6c 70 22 0d 17  |ile$+=".!Help"..|
000045e0  ca 2c 20 20 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |.,  .. "OS_File"|
000045f0  2c 31 30 2c 66 69 6c 65  24 2c 26 46 46 46 2c 2c  |,10,file$,&FFF,,|
00004600  77 69 6d 70 25 2c 70 74  72 25 0d 17 d4 06 20 e1  |wimp%,ptr%.... .|
00004610  0d 17 de 06 20 3a 0d 17  e8 23 f4 2d 2d 2d 2d 2d  |.... :...#.-----|
00004620  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00004630  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 17 f2 19 f4 3e 3e  |---------.....>>|
00004640  3e 3e 3e 3e 3e 3e 3e 3e  3e 21 52 75 6e 49 6d 61  |>>>>>>>>>!RunIma|
00004650  67 65 0d 17 fc 23 f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ge...#.---------|
00004660  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00004670  2d 2d 2d 2d 2d 0d 18 06  05 f4 0d 18 10 1e 20 dd  |-----......... .|
00004680  20 f2 43 72 65 61 74 65  5f 52 75 6e 49 6d 61 67  | .Create_RunImag|
00004690  65 28 66 69 6c 65 24 29  0d 18 1a 0c 20 20 ea 20  |e(file$)....  . |
000046a0  70 74 72 25 0d 18 24 10  20 20 70 74 72 25 3d 77  |ptr%..$.  ptr%=w|
000046b0  69 6d 70 25 0d 18 2e 0c  20 20 f2 49 6e 64 65 78  |imp%....  .Index|
000046c0  0d 18 38 12 20 20 f2 4d  61 69 6e 50 72 6f 67 72  |..8.  .MainProgr|
000046d0  61 6d 0d 18 42 18 20 20  f2 43 72 65 61 74 65 5f  |am..B.  .Create_|
000046e0  50 72 6f 63 65 64 75 72  65 73 0d 18 4c 17 20 20  |Procedures..L.  |
000046f0  f2 45 76 65 6e 74 5f 50  72 6f 63 65 64 75 72 65  |.Event_Procedure|
00004700  73 0d 18 56 0e 20 20 67  24 3d 66 69 6c 65 24 0d  |s..V.  g$=file$.|
00004710  18 60 19 20 20 66 69 6c  65 24 2b 3d 22 2e 21 52  |.`.  file$+=".!R|
00004720  75 6e 49 6d 61 67 65 22  0d 18 6a 2c 20 20 c8 99  |unImage"..j,  ..|
00004730  20 22 4f 53 5f 46 69 6c  65 22 2c 31 30 2c 66 69  | "OS_File",10,fi|
00004740  6c 65 24 2c 26 46 44 31  2c 2c 77 69 6d 70 25 2c  |le$,&FD1,,wimp%,|
00004750  70 74 72 25 0d 18 74 07  20 20 e1 0d 18 7e 05 3a  |ptr%..t.  ...~.:|
00004760  0d 18 88 0e 20 20 dd 20  f2 49 6e 64 65 78 0d 18  |....  . .Index..|
00004770  92 1a 20 20 78 24 3d c0  a4 47 65 74 4c 65 61 66  |..  x$=..GetLeaf|
00004780  28 66 69 6c 65 24 29 29  0d 18 9c 10 20 20 69 6e  |(file$))....  in|
00004790  64 65 6e 74 25 3d 32 30  0d 18 a6 2e 20 20 f2 43  |dent%=20....  .C|
000047a0  6f 6d 6d 65 6e 74 32 28  22 50 52 4f 47 52 41 4d  |omment2("PROGRAM|
000047b0  20 49 4e 44 45 58 20 3a  20 22 2b 78 24 2c 69 6e  | INDEX : "+x$,in|
000047c0  64 65 6e 74 25 29 0d 18  b0 10 20 20 69 6e 64 65  |dent%)....  inde|
000047d0  6e 74 25 3d 32 35 0d 18  ba 22 20 20 f2 41 64 64  |nt%=25..."  .Add|
000047e0  5f 52 45 4d 28 c4 33 30  2c 22 2d 22 29 2c 69 6e  |_REM(.30,"-"),in|
000047f0  64 65 6e 74 25 2d 35 29  0d 18 c4 14 20 20 f2 41  |dent%-5)....  .A|
00004800  64 64 5f 52 45 4d 28 22  22 2c 30 29 0d 18 ce 29  |dd_REM("",0)...)|
00004810  20 20 f2 41 64 64 5f 52  45 4d 28 22 31 2e a0 4d  |  .Add_REM("1..M|
00004820  41 49 4e a0 50 52 4f 47  52 41 4d 22 2c 69 6e 64  |AIN.PROGRAM",ind|
00004830  65 6e 74 25 29 0d 18 d8  14 20 20 f2 41 64 64 5f  |ent%)....  .Add_|
00004840  52 45 4d 28 22 22 2c 30  29 0d 18 e2 2e 20 20 f2  |REM("",0)....  .|
00004850  41 64 64 5f 52 45 4d 28  22 32 2e a0 43 52 45 41  |Add_REM("2..CREA|
00004860  54 45 a0 50 52 4f 43 45  44 55 52 45 53 22 2c 69  |TE.PROCEDURES",i|
00004870  6e 64 65 6e 74 25 29 0d  18 ec 14 20 20 f2 41 64  |ndent%)....  .Ad|
00004880  64 5f 52 45 4d 28 22 22  2c 30 29 0d 18 f6 33 20  |d_REM("",0)...3 |
00004890  20 f2 41 64 64 5f 52 45  4d 28 22 32 2e 31 a0 43  | .Add_REM("2.1.C|
000048a0  72 65 61 74 65 a0 49 6e  69 74 69 61 6c a0 44 61  |reate.Initial.Da|
000048b0  74 61 22 2c 69 6e 64 65  6e 74 25 2b 34 29 0d 19  |ta",indent%+4)..|
000048c0  00 2e 20 20 f2 41 64 64  5f 52 45 4d 28 22 32 2e  |..  .Add_REM("2.|
000048d0  32 a0 43 72 65 61 74 65  a0 57 69 6e 64 6f 77 73  |2.Create.Windows|
000048e0  22 2c 69 6e 64 65 6e 74  25 2b 34 29 0d 19 0a 2c  |",indent%+4)...,|
000048f0  20 20 f2 41 64 64 5f 52  45 4d 28 22 32 2e 33 a0  |  .Add_REM("2.3.|
00004900  43 72 65 61 74 65 a0 4d  65 6e 75 73 22 2c 69 6e  |Create.Menus",in|
00004910  64 65 6e 74 25 2b 34 29  0d 19 14 14 20 20 f2 41  |dent%+4)....  .A|
00004920  64 64 5f 52 45 4d 28 22  22 2c 30 29 0d 19 1e 2d  |dd_REM("",0)...-|
00004930  20 20 f2 41 64 64 5f 52  45 4d 28 22 33 2e a0 45  |  .Add_REM("3..E|
00004940  56 45 4e 54 a0 50 52 4f  43 45 44 55 52 45 53 22  |VENT.PROCEDURES"|
00004950  2c 69 6e 64 65 6e 74 25  29 0d 19 28 14 20 20 f2  |,indent%)..(.  .|
00004960  41 64 64 5f 52 45 4d 28  22 22 2c 30 29 0d 19 32  |Add_REM("",0)..2|
00004970  2e 20 20 f2 41 64 64 5f  52 45 4d 28 22 33 2e 30  |.  .Add_REM("3.0|
00004980  a0 57 69 6e 64 6f 77 a0  43 6c 6f 73 69 6e 67 22  |.Window.Closing"|
00004990  2c 69 6e 64 65 6e 74 25  2b 34 29 0d 19 3c 2e 20  |,indent%+4)..<. |
000049a0  20 f2 41 64 64 5f 52 45  4d 28 22 33 2e 31 a0 57  | .Add_REM("3.1.W|
000049b0  69 6e 64 6f 77 a0 44 72  61 77 69 6e 67 22 2c 69  |indow.Drawing",i|
000049c0  6e 64 65 6e 74 25 2b 34  29 0d 19 46 2c 20 20 f2  |ndent%+4)..F,  .|
000049d0  41 64 64 5f 52 45 4d 28  22 33 2e 32 a0 4d 6f 75  |Add_REM("3.2.Mou|
000049e0  73 65 a0 43 6c 69 63 6b  73 22 2c 69 6e 64 65 6e  |se.Clicks",inden|
000049f0  74 25 2b 34 29 0d 19 50  2b 20 20 f2 41 64 64 5f  |t%+4)..P+  .Add_|
00004a00  52 45 4d 28 22 33 2e 33  a0 4b 65 79 a0 50 72 65  |REM("3.3.Key.Pre|
00004a10  73 73 65 73 22 2c 69 6e  64 65 6e 74 25 2b 34 29  |sses",indent%+4)|
00004a20  0d 19 5a 2c 20 20 f2 41  64 64 5f 52 45 4d 28 22  |..Z,  .Add_REM("|
00004a30  33 2e 34 a0 4d 65 6e 75  a0 43 68 6f 69 63 65 73  |3.4.Menu.Choices|
00004a40  22 2c 69 6e 64 65 6e 74  25 2b 34 29 0d 19 64 2c  |",indent%+4)..d,|
00004a50  20 20 f2 41 64 64 5f 52  45 4d 28 22 33 2e 35 a0  |  .Add_REM("3.5.|
00004a60  46 69 6c 65 a0 4c 6f 61  64 69 6e 67 22 2c 69 6e  |File.Loading",in|
00004a70  64 65 6e 74 25 2b 34 29  0d 19 6e 2b 20 20 f2 41  |dent%+4)..n+  .A|
00004a80  64 64 5f 52 45 4d 28 22  33 2e 36 a0 46 69 6c 65  |dd_REM("3.6.File|
00004a90  a0 53 61 76 69 6e 67 22  2c 69 6e 64 65 6e 74 25  |.Saving",indent%|
00004aa0  2b 34 29 0d 19 78 14 20  20 f2 41 64 64 5f 52 45  |+4)..x.  .Add_RE|
00004ab0  4d 28 22 22 2c 30 29 0d  19 82 22 20 20 f2 41 64  |M("",0)..."  .Ad|
00004ac0  64 5f 52 45 4d 28 c4 33  30 2c 22 2d 22 29 2c 69  |d_REM(.30,"-"),i|
00004ad0  6e 64 65 6e 74 25 2d 35  29 0d 19 8c 14 20 20 f2  |ndent%-5)....  .|
00004ae0  41 64 64 5f 52 45 4d 28  22 22 2c 30 29 0d 19 96  |Add_REM("",0)...|
00004af0  07 20 20 e1 0d 19 a0 06  20 3a 0d 19 aa 14 20 20  |.  ..... :....  |
00004b00  dd 20 f2 4d 61 69 6e 50  72 6f 67 72 61 6d 0d 19  |. .MainProgram..|
00004b10  b4 13 20 20 20 f2 41 64  64 5f 52 45 4d 53 28 32  |..   .Add_REMS(2|
00004b20  29 0d 19 be 25 20 20 20  f2 48 65 61 64 69 6e 67  |)...%   .Heading|
00004b30  28 22 31 2e a0 4d 41 49  4e a0 50 52 4f 47 52 41  |("1..MAIN.PROGRA|
00004b40  4d 22 2c 32 30 29 0d 19  c8 11 20 20 20 69 6e 64  |M",20)....   ind|
00004b50  65 6e 74 25 3d 32 34 0d  19 d2 13 20 20 20 f2 41  |ent%=24....   .A|
00004b60  64 64 5f 52 45 4d 53 28  32 29 0d 19 dc 47 20 20  |dd_REMS(2)...G  |
00004b70  20 e7 20 4c 69 62 72 61  72 79 25 20 8c 20 f2 41  | . Library% . .A|
00004b80  64 64 5f 4c 69 6e 65 28  22 4c 49 42 52 41 52 59  |dd_Line("LIBRARY|
00004b90  20 22 2b 22 22 22 3c 4f  62 65 79 24 44 69 72 3e  | "+"""<Obey$Dir>|
00004ba0  2e 57 69 6d 70 22 22 22  2c 69 6e 64 65 6e 74 25  |.Wimp""",indent%|
00004bb0  29 0d 19 e6 13 20 20 20  f2 41 64 64 5f 52 45 4d  |)....   .Add_REM|
00004bc0  53 28 31 29 0d 19 f0 10  20 20 20 61 72 67 24 3d  |S(1)....   arg$=|
00004bd0  22 22 22 22 0d 19 fa 19  20 20 20 61 72 67 24 2b  |""""....   arg$+|
00004be0  3d 61 70 70 6c 69 63 61  74 69 6f 6e 24 0d 1a 04  |=application$...|
00004bf0  11 20 20 20 61 72 67 24  2b 3d 22 22 22 22 0d 1a  |.   arg$+=""""..|
00004c00  0e 2d 20 20 20 61 72 67  24 2b 3d 22 2c 22 2b c3  |.-   arg$+=","+.|
00004c10  77 69 6d 70 5f 6d 65 6d  6f 72 79 25 2b 22 2c 22  |wimp_memory%+","|
00004c20  2b c3 69 6e 64 69 72 65  63 74 25 0d 1a 18 34 20  |+.indirect%...4 |
00004c30  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 50 52 4f  |  .Add_Line("PRO|
00004c40  43 57 69 6d 70 5f 53 74  61 72 74 28 22 2b 61 72  |CWimp_Start("+ar|
00004c50  67 24 2b 22 29 22 2c 69  6e 64 65 6e 74 25 29 0d  |g$+")",indent%).|
00004c60  1a 22 13 20 20 20 f2 41  64 64 5f 52 45 4d 53 28  |.".   .Add_REMS(|
00004c70  31 29 0d 1a 2c 33 20 20  20 f2 41 64 64 5f 4c 69  |1)..,3   .Add_Li|
00004c80  6e 65 28 22 50 52 4f 43  55 73 65 72 5f 53 65 74  |ne("PROCUser_Set|
00004c90  49 6e 69 74 69 61 6c 44  61 74 61 22 2c 69 6e 64  |InitialData",ind|
00004ca0  65 6e 74 25 29 0d 1a 36  13 20 20 20 f2 41 64 64  |ent%)..6.   .Add|
00004cb0  5f 52 45 4d 53 28 31 29  0d 1a 40 2e 20 20 20 f2  |_REMS(1)..@.   .|
00004cc0  41 64 64 5f 4c 69 6e 65  28 22 50 52 4f 43 43 72  |Add_Line("PROCCr|
00004cd0  65 61 74 65 5f 57 69 6e  64 6f 77 73 22 2c 69 6e  |eate_Windows",in|
00004ce0  64 65 6e 74 25 29 0d 1a  4a 2c 20 20 20 f2 41 64  |dent%)..J,   .Ad|
00004cf0  64 5f 4c 69 6e 65 28 22  50 52 4f 43 43 72 65 61  |d_Line("PROCCrea|
00004d00  74 65 5f 4d 65 6e 75 73  22 2c 69 6e 64 65 6e 74  |te_Menus",indent|
00004d10  25 29 0d 1a 54 13 20 20  20 f2 41 64 64 5f 52 45  |%)..T.   .Add_RE|
00004d20  4d 53 28 31 29 0d 1a 5e  31 20 20 20 f2 41 64 64  |MS(1)..^1   .Add|
00004d30  5f 4c 69 6e 65 28 22 50  52 4f 43 57 69 6d 70 5f  |_Line("PROCWimp_|
00004d40  57 61 69 74 46 6f 72 45  76 65 6e 74 22 2c 69 6e  |WaitForEvent",in|
00004d50  64 65 6e 74 25 29 0d 1a  68 13 20 20 20 f2 41 64  |dent%)..h.   .Ad|
00004d60  64 5f 52 45 4d 53 28 31  29 0d 1a 72 2e 20 20 20  |d_REMS(1)..r.   |
00004d70  f2 41 64 64 5f 4c 69 6e  65 28 22 50 52 4f 43 57  |.Add_Line("PROCW|
00004d80  69 6d 70 5f 43 6c 6f 73  65 44 6f 77 6e 22 2c 69  |imp_CloseDown",i|
00004d90  6e 64 65 6e 74 25 29 0d  1a 7c 13 20 20 20 f2 41  |ndent%)..|.   .A|
00004da0  64 64 5f 52 45 4d 53 28  31 29 0d 1a 86 1f 20 20  |dd_REMS(1)....  |
00004db0  20 f2 41 64 64 5f 4c 69  6e 65 28 22 45 4e 44 22  | .Add_Line("END"|
00004dc0  2c 69 6e 64 65 6e 74 25  29 0d 1a 90 13 20 20 20  |,indent%)....   |
00004dd0  f2 41 64 64 5f 52 45 4d  53 28 35 29 0d 1a 9a 07  |.Add_REMS(5)....|
00004de0  20 20 e1 0d 1a a4 06 20  3a 0d 1a ae 1a 20 20 dd  |  ..... :....  .|
00004df0  20 f2 43 72 65 61 74 65  5f 50 72 6f 63 65 64 75  | .Create_Procedu|
00004e00  72 65 73 0d 1a b8 1b 20  20 20 f2 55 73 65 72 5f  |res....   .User_|
00004e10  53 65 74 49 6e 69 74 69  61 6c 44 61 74 61 0d 1a  |SetInitialData..|
00004e20  c2 0f 20 20 20 f2 57 69  6e 64 6f 77 73 0d 1a cc  |..   .Windows...|
00004e30  0d 20 20 20 f2 4d 65 6e  75 73 0d 1a d6 07 20 20  |.   .Menus....  |
00004e40  e1 0d 1a e0 07 20 20 3a  0d 1a ea 1e 20 20 20 20  |.....  :....    |
00004e50  dd 20 f2 55 73 65 72 5f  53 65 74 49 6e 69 74 69  |. .User_SetIniti|
00004e60  61 6c 44 61 74 61 0d 1a  f4 11 20 20 20 20 69 6e  |alData....    in|
00004e70  64 65 6e 74 25 3d 34 0d  1a fe 32 20 20 20 20 f2  |dent%=4...2    .|
00004e80  48 65 61 64 65 72 28 22  32 2e 31 a0 43 72 65 61  |Header("2.1.Crea|
00004e90  74 65 a0 49 6e 69 74 69  61 6c a0 44 61 74 61 22  |te.Initial.Data"|
00004ea0  2c 69 6e 64 65 6e 74 25  29 0d 1b 08 30 20 20 20  |,indent%)...0   |
00004eb0  20 f2 41 64 64 5f 50 52  4f 43 28 22 55 73 65 72  | .Add_PROC("User|
00004ec0  5f 53 65 74 49 6e 69 74  69 61 6c 44 61 74 61 22  |_SetInitialData"|
00004ed0  2c 69 6e 64 65 6e 74 25  29 0d 1b 12 3b 20 20 20  |,indent%)...;   |
00004ee0  20 e7 20 69 6e 74 65 72  66 61 63 65 25 20 8c 20  | . interface% . |
00004ef0  f2 41 64 64 5f 4c 69 6e  65 28 22 69 6e 74 65 72  |.Add_Line("inter|
00004f00  66 61 63 65 25 3d 54 52  55 45 22 2c 69 6e 64 65  |face%=TRUE",inde|
00004f10  6e 74 25 29 0d 1b 1c 16  20 20 20 20 c8 8e 20 ac  |nt%)....    .. .|
00004f20  28 74 65 72 73 65 25 29  20 ca 0d 1b 26 0e 20 20  |(terse%) ...&.  |
00004f30  20 20 20 c9 20 b9 20 3a  0d 1b 30 3d 20 20 20 20  |   . . :..0=    |
00004f40  20 20 f2 48 65 61 64 69  6e 67 28 22 55 73 65 72  |  .Heading("User|
00004f50  73 20 49 6e 69 74 69 61  6c 20 44 61 74 61 20 67  |s Initial Data g|
00004f60  6f 65 73 20 68 65 72 65  22 2c 69 6e 64 65 6e 74  |oes here",indent|
00004f70  25 2b 31 30 29 0d 1b 3a  16 20 20 20 20 20 20 f2  |%+10)..:.      .|
00004f80  41 64 64 5f 52 45 4d 53  28 31 29 0d 1b 44 09 20  |Add_REMS(1)..D. |
00004f90  20 20 20 cb 0d 1b 4e 2e  20 20 20 20 f2 46 6f 6f  |   ...N.    .Foo|
00004fa0  74 65 72 28 22 45 6e 64  20 6f 66 20 49 6e 69 74  |ter("End of Init|
00004fb0  69 61 6c 20 44 61 74 61  22 2c 69 6e 64 65 6e 74  |ial Data",indent|
00004fc0  25 29 0d 1b 58 09 20 20  20 20 e1 0d 1b 62 07 20  |%)..X.    ...b. |
00004fd0  20 3a 0d 1b 6c 15 20 20  20 20 dd 20 a4 4d 65 6d  | :..l.    . .Mem|
00004fe0  6f 72 79 28 6a 25 29 0d  1b 76 20 20 20 20 20 ea  |ory(j%)..v     .|
00004ff0  20 6d 65 6d 6f 72 79 25  2c 78 24 20 3a 20 6d 65  | memory%,x$ : me|
00005000  6d 6f 72 79 25 3d 30 0d  1b 80 1d 20 20 20 20 20  |mory%=0....     |
00005010  20 66 6c 61 67 25 3d 54  65 6d 70 6c 61 74 65 73  | flag%=Templates|
00005020  25 21 6a 25 0d 1b 8a 11  20 20 20 20 20 20 20 c8  |%!j%....       .|
00005030  8e 20 b9 20 ca 0d 1b 94  24 20 20 20 20 20 20 20  |. . ....$       |
00005040  20 20 c9 20 28 66 6c 61  67 25 80 28 31 3c 3c 38  |  . (flag%.(1<<8|
00005050  29 29 3d 28 31 3c 3c 38  29 0d 1b 9e 15 20 20 20  |))=(1<<8)....   |
00005060  20 20 20 20 20 20 20 20  c8 8e 20 b9 20 ca 0d 1b  |        .. . ...|
00005070  a8 1c 20 20 20 20 20 20  20 20 20 20 20 c9 20 28  |..           . (|
00005080  66 6c 61 67 25 80 31 29  3d 31 0d 1b b2 34 20 20  |flag%.1)=1...4  |
00005090  20 20 20 20 20 20 20 20  20 20 20 6d 25 3d 54 65  |           m%=Te|
000050a0  6d 70 6c 61 74 65 73 25  21 28 6a 25 2b 31 32 29  |mplates%!(j%+12)|
000050b0  20 3a 20 6d 65 6d 6f 72  79 25 2b 3d 6d 25 0d 1b  | : memory%+=m%..|
000050c0  bc 27 20 20 20 20 20 20  20 20 20 20 20 20 20 c8  |.'             .|
000050d0  8e 20 54 65 6d 70 6c 61  74 65 73 25 21 28 6a 25  |. Templates%!(j%|
000050e0  2b 38 29 20 ca 0d 1b c6  17 20 20 20 20 20 20 20  |+8) .....       |
000050f0  20 20 20 20 20 20 c9 20  2d 31 20 3a 0d 1b d0 13  |      . -1 :....|
00005100  20 20 20 20 20 20 20 20  20 20 20 20 20 7f 3a 0d  |             .:.|
00005110  1b da 1e 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
00005120  20 f4 20 76 61 6c 69 64  61 74 65 64 21 0d 1b e4  | . validated!...|
00005130  26 20 20 20 20 20 20 20  20 20 20 20 20 20 20 6d  |&              m|
00005140  25 3d 54 65 6d 70 6c 61  74 65 73 25 21 28 6a 25  |%=Templates%!(j%|
00005150  2b 38 29 0d 1b ee 18 20  20 20 20 20 20 20 20 20  |+8)....         |
00005160  20 20 20 20 20 78 24 3d  24 6d 25 0d 1b f8 1f 20  |     x$=$m%.... |
00005170  20 20 20 20 20 20 20 20  20 20 20 20 20 6d 25 3d  |             m%=|
00005180  32 30 2a a9 28 78 24 29  2b 31 0d 1c 02 1c 20 20  |20*.(x$)+1....  |
00005190  20 20 20 20 20 20 20 20  20 20 20 6d 65 6d 6f 72  |           memor|
000051a0  79 25 2b 3d 6d 25 0d 1c  0c 12 20 20 20 20 20 20  |y%+=m%....      |
000051b0  20 20 20 20 20 20 20 cb  0d 1c 16 0f 20 20 20 20  |       .....    |
000051c0  20 20 20 20 20 20 cb 0d  1c 20 0c 20 20 20 20 20  |      ... .     |
000051d0  20 20 cb 0d 1c 2a 10 20  20 20 20 3d 6d 65 6d 6f  |  ...*.    =memo|
000051e0  72 79 25 0d 1c 34 07 20  20 3a 0d 1c 3e 10 20 20  |ry%..4.  :..>.  |
000051f0  20 20 dd 20 a4 54 69 74  6c 65 0d 1c 48 2b 20 20  |  . .Title..H+  |
00005200  20 20 ea 20 6d 65 6d 6f  72 79 25 2c 6a 25 2c 78  |  . memory%,j%,x|
00005210  24 20 3a 20 6d 65 6d 6f  72 79 25 3d 30 20 3a 20  |$ : memory%=0 : |
00005220  6a 25 3d 37 32 0d 1c 52  1d 20 20 20 20 20 20 66  |j%=72..R.      f|
00005230  6c 61 67 25 3d 54 65 6d  70 6c 61 74 65 73 25 21  |lag%=Templates%!|
00005240  36 30 0d 1c 5c 11 20 20  20 20 20 20 20 c8 8e 20  |60..\.       .. |
00005250  b9 20 ca 0d 1c 66 24 20  20 20 20 20 20 20 20 20  |. ...f$         |
00005260  c9 20 28 66 6c 61 67 25  80 28 31 3c 3c 38 29 29  |. (flag%.(1<<8))|
00005270  3d 28 31 3c 3c 38 29 0d  1c 70 14 20 20 20 20 20  |=(1<<8)..p.     |
00005280  20 20 20 20 20 c8 8e 20  b9 20 ca 0d 1c 7a 1c 20  |     .. . ...z. |
00005290  20 20 20 20 20 20 20 20  20 20 c9 20 28 66 6c 61  |          . (fla|
000052a0  67 25 80 31 29 3d 31 0d  1c 84 33 20 20 20 20 20  |g%.1)=1...3     |
000052b0  20 20 20 20 20 20 20 20  6d 25 3d 54 65 6d 70 6c  |        m%=Templ|
000052c0  61 74 65 73 25 21 28 6a  25 2b 31 32 29 20 3a 20  |ates%!(j%+12) : |
000052d0  6d 65 6d 6f 72 79 25 3d  6d 25 0d 1c 8e 27 20 20  |memory%=m%...'  |
000052e0  20 20 20 20 20 20 20 20  20 20 20 c8 8e 20 54 65  |           .. Te|
000052f0  6d 70 6c 61 74 65 73 25  21 28 6a 25 2b 38 29 20  |mplates%!(j%+8) |
00005300  ca 0d 1c 98 17 20 20 20  20 20 20 20 20 20 20 20  |.....           |
00005310  20 20 c9 20 2d 31 20 3a  0d 1c a2 13 20 20 20 20  |  . -1 :....    |
00005320  20 20 20 20 20 20 20 20  20 7f 3a 0d 1c ac 1e 20  |         .:.... |
00005330  20 20 20 20 20 20 20 20  20 20 20 20 20 f4 20 76  |             . v|
00005340  61 6c 69 64 61 74 65 64  21 0d 1c b6 26 20 20 20  |alidated!...&   |
00005350  20 20 20 20 20 20 20 20  20 20 20 6d 25 3d 54 65  |           m%=Te|
00005360  6d 70 6c 61 74 65 73 25  21 28 6a 25 2b 38 29 0d  |mplates%!(j%+8).|
00005370  1c c0 18 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
00005380  20 78 24 3d 24 6d 25 0d  1c ca 1f 20 20 20 20 20  | x$=$m%....     |
00005390  20 20 20 20 20 20 20 20  20 6d 25 3d 32 30 2a a9  |         m%=20*.|
000053a0  28 78 24 29 2b 31 0d 1c  d4 1c 20 20 20 20 20 20  |(x$)+1....      |
000053b0  20 20 20 20 20 20 20 6d  65 6d 6f 72 79 25 2b 3d  |       memory%+=|
000053c0  6d 25 0d 1c de 12 20 20  20 20 20 20 20 20 20 20  |m%....          |
000053d0  20 20 20 cb 0d 1c e8 0f  20 20 20 20 20 20 20 20  |   .....        |
000053e0  20 20 cb 0d 1c f2 0c 20  20 20 20 20 20 20 cb 0d  |  .....       ..|
000053f0  1c fc 10 20 20 20 20 3d  6d 65 6d 6f 72 79 25 0d  |...    =memory%.|
00005400  1d 06 05 3a 0d 1d 10 15  20 20 20 20 dd 20 a4 49  |...:....    . .I|
00005410  63 6f 6e 4d 65 6d 6f 72  79 0d 1d 1a 1a 20 20 20  |conMemory....   |
00005420  20 ea 20 69 25 2c 6a 25  2c 6e 25 2c 6d 65 6d 6f  | . i%,j%,n%,memo|
00005430  72 79 25 0d 1d 24 19 20  20 20 20 c8 8e 20 4e 6f  |ry%..$.    .. No|
00005440  4f 66 57 69 6e 64 6f 77  73 25 20 ca 0d 1d 2e 0c  |OfWindows% .....|
00005450  20 20 20 20 20 c9 20 30  0d 1d 38 0a 20 20 20 20  |     . 0..8.    |
00005460  20 7f 0d 1d 42 1f 20 20  20 20 20 20 e3 20 69 25  | ...B.      . i%|
00005470  3d 31 20 b8 20 4e 6f 4f  66 57 69 6e 64 6f 77 73  |=1 . NoOfWindows|
00005480  25 0d 1d 4c 22 20 20 20  20 20 20 54 65 6d 70 6c  |%..L"      Templ|
00005490  61 74 65 73 25 21 30 3d  57 69 6e 64 6f 77 25 28  |ates%!0=Window%(|
000054a0  69 25 29 0d 1d 56 2d 20  20 20 20 20 20 c8 99 20  |i%)..V-      .. |
000054b0  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
000054c0  6e 66 6f 22 2c 2c 54 65  6d 70 6c 61 74 65 73 25  |nfo",,Templates%|
000054d0  0d 1d 60 18 20 20 20 20  20 20 6d 65 6d 6f 72 79  |..`.      memory|
000054e0  25 3d a4 54 69 74 6c 65  0d 1d 6a 1a 20 20 20 20  |%=.Title..j.    |
000054f0  20 20 6e 25 3d 54 65 6d  70 6c 61 74 65 73 25 21  |  n%=Templates%!|
00005500  38 38 0d 1d 74 12 20 20  20 20 20 20 6a 25 3d 39  |88..t.      j%=9|
00005510  32 2b 31 36 0d 1d 7e 0b  20 20 20 20 20 20 f5 0d  |2+16..~.      ..|
00005520  1d 88 1f 20 20 20 20 20  20 20 6d 65 6d 6f 72 79  |...       memory|
00005530  25 2b 3d a4 4d 65 6d 6f  72 79 28 6a 25 29 0d 1d  |%+=.Memory(j%)..|
00005540  92 11 20 20 20 20 20 20  20 6a 25 2b 3d 33 32 0d  |..       j%+=32.|
00005550  1d 9c 1d 20 20 20 20 20  20 fd 20 6a 25 3e 3d 28  |...      . j%>=(|
00005560  6e 25 2a 33 32 2b 39 32  2b 31 36 29 0d 1d a6 0b  |n%*32+92+16)....|
00005570  20 20 20 20 20 20 ed 0d  1d b0 09 20 20 20 20 cb  |      .....    .|
00005580  0d 1d ba 10 20 20 20 20  3d 6d 65 6d 6f 72 79 25  |....    =memory%|
00005590  0d 1d c4 07 20 20 3a 0d  1d ce 1f 20 20 20 20 20  |....  :....     |
000055a0  20 dd 20 f2 48 65 61 64  65 72 28 78 24 2c 69 6e  | . .Header(x$,in|
000055b0  64 65 6e 74 25 29 0d 1d  d8 21 20 20 20 20 20 20  |dent%)...!      |
000055c0  f2 48 65 61 64 69 6e 67  28 78 24 2c 31 36 2b 69  |.Heading(x$,16+i|
000055d0  6e 64 65 6e 74 25 29 0d  1d e2 16 20 20 20 20 20  |ndent%)....     |
000055e0  20 f2 41 64 64 5f 52 45  4d 53 28 32 29 0d 1d ec  | .Add_REMS(2)...|
000055f0  24 20 20 20 20 20 20 f2  41 64 64 5f 52 45 4d 28  |$      .Add_REM(|
00005600  c4 36 35 2c 22 7e 22 29  2c 69 6e 64 65 6e 74 25  |.65,"~"),indent%|
00005610  29 0d 1d f6 16 20 20 20  20 20 20 f2 41 64 64 5f  |)....      .Add_|
00005620  52 45 4d 53 28 31 29 0d  1e 00 0b 20 20 20 20 20  |REMS(1)....     |
00005630  20 e1 0d 1e 0a 07 20 20  3a 0d 1e 14 1f 20 20 20  | .....  :....   |
00005640  20 20 20 dd 20 f2 46 6f  6f 74 65 72 28 78 24 2c  |   . .Footer(x$,|
00005650  69 6e 64 65 6e 74 25 29  0d 1e 1e 17 20 20 20 20  |indent%)....    |
00005660  20 20 20 f2 41 64 64 5f  52 45 4d 53 28 31 29 0d  |   .Add_REMS(1).|
00005670  1e 28 27 20 20 20 20 20  20 20 f2 41 64 64 5f 4c  |.('       .Add_L|
00005680  69 6e 65 28 22 45 4e 44  50 52 4f 43 22 2c 69 6e  |ine("ENDPROC",in|
00005690  64 65 6e 74 25 29 0d 1e  32 17 20 20 20 20 20 20  |dent%)..2.      |
000056a0  20 f2 41 64 64 5f 52 45  4d 53 28 31 29 0d 1e 3c  | .Add_REMS(1)..<|
000056b0  25 20 20 20 20 20 20 20  f2 41 64 64 5f 52 45 4d  |%       .Add_REM|
000056c0  28 c4 36 35 2c 22 7e 22  29 2c 69 6e 64 65 6e 74  |(.65,"~"),indent|
000056d0  25 29 0d 1e 46 2c 20 20  20 20 20 20 20 f2 41 64  |%)..F,       .Ad|
000056e0  64 5f 52 45 4d 28 c4 36  35 2d a9 78 24 2c 22 20  |d_REM(.65-.x$," |
000056f0  22 29 2b 78 24 2c 69 6e  64 65 6e 74 25 29 0d 1e  |")+x$,indent%)..|
00005700  50 17 20 20 20 20 20 20  20 f2 41 64 64 5f 52 45  |P.       .Add_RE|
00005710  4d 53 28 33 29 0d 1e 5a  0b 20 20 20 20 20 20 e1  |MS(3)..Z.      .|
00005720  0d 1e 64 06 20 3a 0d 1e  6e 20 20 20 20 20 20 20  |..d. :..n       |
00005730  dd 20 f2 46 6f 6f 74 65  72 31 28 78 24 2c 69 6e  |. .Footer1(x$,in|
00005740  64 65 6e 74 25 29 0d 1e  78 17 20 20 20 20 20 20  |dent%)..x.      |
00005750  20 f2 41 64 64 5f 52 45  4d 53 28 31 29 0d 1e 82  | .Add_REMS(1)...|
00005760  25 20 20 20 20 20 20 20  f2 41 64 64 5f 52 45 4d  |%       .Add_REM|
00005770  28 c4 36 35 2c 22 7e 22  29 2c 69 6e 64 65 6e 74  |(.65,"~"),indent|
00005780  25 29 0d 1e 8c 2c 20 20  20 20 20 20 20 f2 41 64  |%)...,       .Ad|
00005790  64 5f 52 45 4d 28 c4 36  35 2d a9 78 24 2c 22 20  |d_REM(.65-.x$," |
000057a0  22 29 2b 78 24 2c 69 6e  64 65 6e 74 25 29 0d 1e  |")+x$,indent%)..|
000057b0  96 17 20 20 20 20 20 20  20 f2 41 64 64 5f 52 45  |..       .Add_RE|
000057c0  4d 53 28 33 29 0d 1e a0  0b 20 20 20 20 20 20 e1  |MS(3)....      .|
000057d0  0d 1e aa 06 20 3a 0d 1e  b4 12 20 20 20 20 dd 20  |.... :....    . |
000057e0  f2 57 69 6e 64 6f 77 73  0d 1e be 0f 20 20 20 20  |.Windows....    |
000057f0  ea 20 69 25 2c 78 24 0d  1e c8 11 20 20 20 20 69  |. i%,x$....    i|
00005800  6e 64 65 6e 74 25 3d 34  0d 1e d2 2d 20 20 20 20  |ndent%=4...-    |
00005810  f2 48 65 61 64 65 72 28  22 32 2e 32 a0 43 72 65  |.Header("2.2.Cre|
00005820  61 74 65 a0 57 69 6e 64  6f 77 73 22 2c 69 6e 64  |ate.Windows",ind|
00005830  65 6e 74 25 29 0d 1e dc  2b 20 20 20 20 f2 41 64  |ent%)...+    .Ad|
00005840  64 5f 50 52 4f 43 28 22  43 72 65 61 74 65 5f 57  |d_PROC("Create_W|
00005850  69 6e 64 6f 77 73 22 2c  69 6e 64 65 6e 74 25 29  |indows",indent%)|
00005860  0d 1e e6 14 20 20 20 20  f2 41 64 64 5f 52 45 4d  |....    .Add_REM|
00005870  53 28 31 29 0d 1e f0 04  0d 1e fa 14 20 20 20 20  |S(1)........    |
00005880  c8 8e 20 53 70 72 69 74  65 24 20 ca 0d 1f 04 11  |.. Sprite$ .....|
00005890  20 20 20 20 20 c9 20 22  22 20 20 20 3a 0d 1f 0e  |     . ""   :...|
000058a0  3d 20 20 20 20 20 20 e7  20 ac 28 74 65 72 73 65  |=      . .(terse|
000058b0  25 29 20 8c 20 f2 48 65  61 64 69 6e 67 28 22 4e  |%) . .Heading("N|
000058c0  6f 20 73 70 72 69 74 65  20 66 69 6c 65 22 2c 69  |o sprite file",i|
000058d0  6e 64 65 6e 74 25 2b 31  30 29 0d 1f 18 0c 20 20  |ndent%+10)....  |
000058e0  20 20 20 7f 20 3a 0d 1f  22 1b 20 20 20 20 20 20  |   . :..".      |
000058f0  20 20 20 20 20 f2 41 64  64 5f 52 45 4d 53 28 31  |     .Add_REMS(1|
00005900  29 0d 1f 2c 3a 20 20 20  20 20 20 20 20 20 20 20  |)..,:           |
00005910  f2 41 64 64 5f 4c 69 6e  65 28 22 50 52 4f 43 57  |.Add_Line("PROCW|
00005920  69 6d 70 5f 53 70 72 69  74 65 73 4c 6f 61 64 22  |imp_SpritesLoad"|
00005930  2c 69 6e 64 65 6e 74 25  2b 32 29 0d 1f 36 1b 20  |,indent%+2)..6. |
00005940  20 20 20 20 20 20 20 20  20 20 f2 41 64 64 5f 52  |          .Add_R|
00005950  45 4d 53 28 31 29 0d 1f  40 09 20 20 20 20 cb 0d  |EMS(1)..@.    ..|
00005960  1f 4a 19 20 20 20 20 c8  8e 20 4e 6f 4f 66 57 69  |.J.    .. NoOfWi|
00005970  6e 64 6f 77 73 25 20 ca  0d 1f 54 11 20 20 20 20  |ndows% ...T.    |
00005980  20 c9 20 30 20 20 20 20  3a 0d 1f 5e 41 20 20 20  | . 0    :..^A   |
00005990  20 20 20 e7 20 ac 28 74  65 72 73 65 25 29 20 8c  |   . .(terse%) .|
000059a0  20 f2 48 65 61 64 69 6e  67 28 22 4e 6f 20 77 69  | .Heading("No wi|
000059b0  6e 64 6f 77 73 20 64 65  66 69 6e 65 64 22 2c 69  |ndows defined",i|
000059c0  6e 64 65 6e 74 25 2b 31  30 29 0d 1f 68 0c 20 20  |ndent%+10)..h.  |
000059d0  20 20 20 7f 20 3a 0d 1f  72 16 20 20 20 20 20 20  |   . :..r.      |
000059e0  f2 41 64 64 5f 52 45 4d  53 28 31 29 0d 1f 7c 1f  |.Add_REMS(1)..|.|
000059f0  20 20 20 20 20 20 e3 20  69 25 3d 31 20 b8 20 4e  |      . i%=1 . N|
00005a00  6f 4f 66 57 69 6e 64 6f  77 73 25 0d 1f 86 19 20  |oOfWindows%.... |
00005a10  20 20 20 20 20 20 78 24  3d 57 69 6e 64 6f 77 24  |      x$=Window$|
00005a20  28 69 25 29 0d 1f 90 1d  20 20 20 20 20 20 20 78  |(i%)....       x|
00005a30  24 3d c4 31 35 2d a9 78  24 2c 22 20 22 29 2b 78  |$=.15-.x$," ")+x|
00005a40  24 0d 1f 9a 40 20 20 20  20 20 20 20 78 24 2b 3d  |$...@       x$+=|
00005a50  22 5f 57 69 6e 64 6f 77  25 3d 46 4e 57 69 6d 70  |"_Window%=FNWimp|
00005a60  5f 57 69 6e 64 6f 77 4c  6f 61 64 28 22 22 22 2b  |_WindowLoad("""+|
00005a70  57 69 6e 64 6f 77 24 28  69 25 29 2b 22 22 22 29  |Window$(i%)+""")|
00005a80  22 0d 1f a4 20 20 20 20  20 20 20 20 f2 41 64 64  |"...        .Add|
00005a90  5f 4c 69 6e 65 28 78 24  2c 69 6e 64 65 6e 74 25  |_Line(x$,indent%|
00005aa0  29 0d 1f ae 0b 20 20 20  20 20 20 ed 0d 1f b8 16  |)....      .....|
00005ab0  20 20 20 20 20 20 f2 41  64 64 5f 52 45 4d 53 28  |      .Add_REMS(|
00005ac0  31 29 0d 1f c2 11 20 20  20 20 20 20 6f 70 65 6e  |1)....      open|
00005ad0  25 3d a3 0d 1f cc 1f 20  20 20 20 20 20 e3 20 69  |%=.....      . i|
00005ae0  25 3d 31 20 b8 20 4e 6f  4f 66 57 69 6e 64 6f 77  |%=1 . NoOfWindow|
00005af0  73 25 0d 1f d6 18 20 20  20 20 20 20 c8 8e 20 4f  |s%....      .. O|
00005b00  70 65 6e 25 28 69 25 29  20 ca 0d 1f e0 10 20 20  |pen%(i%) .....  |
00005b10  20 20 20 20 20 c9 20 b9  20 3a 0d 1f ea 55 20 20  |     . . :...U  |
00005b20  20 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |      .Add_Line(|
00005b30  22 50 52 4f 43 57 69 6d  70 5f 57 69 6e 64 6f 77  |"PROCWimp_Window|
00005b40  42 72 69 6e 67 54 6f 54  6f 70 28 22 2b 57 69 6e  |BringToTop("+Win|
00005b50  64 6f 77 24 28 69 25 29  2b 22 5f 57 69 6e 64 6f  |dow$(i%)+"_Windo|
00005b60  77 25 29 22 2c 69 6e 64  65 6e 74 25 2b 31 29 0d  |w%)",indent%+1).|
00005b70  1f f4 13 20 20 20 20 20  20 20 20 6f 70 65 6e 25  |...        open%|
00005b80  3d b9 0d 1f fe 0c 20 20  20 20 20 20 20 cb 0d 20  |=.....       .. |
00005b90  08 0b 20 20 20 20 20 20  ed 0d 20 12 21 20 20 20  |..      .. .!   |
00005ba0  20 20 20 c8 8e 20 ac 6f  70 65 6e 25 20 80 20 ac  |   .. .open% . .|
00005bb0  28 74 65 72 73 65 25 29  20 ca 0d 20 1c 0e 20 20  |(terse%) .. ..  |
00005bc0  20 20 20 20 c9 20 b9 3a  0d 20 26 40 20 20 20 20  |    . .:. &@    |
00005bd0  20 20 20 f2 48 65 61 64  69 6e 67 28 22 4e 6f 20  |   .Heading("No |
00005be0  77 69 6e 64 6f 77 73 20  6f 70 65 6e 65 64 20 61  |windows opened a|
00005bf0  74 20 72 75 6e 20 74 69  6d 65 21 22 2c 69 6e 64  |t run time!",ind|
00005c00  65 6e 74 25 2b 31 30 29  0d 20 30 0b 20 20 20 20  |ent%+10). 0.    |
00005c10  20 20 cb 0d 20 3a 09 20  20 20 20 cb 0d 20 44 11  |  .. :.    .. D.|
00005c20  20 20 20 20 c8 8e 20 42  61 72 25 20 ca 0d 20 4e  |    .. Bar% .. N|
00005c30  0d 20 20 20 20 20 c9 20  b9 3a 0d 20 58 50 20 20  |.     . .:. XP  |
00005c40  20 20 20 f2 41 64 64 5f  4c 69 6e 65 28 22 42 61  |   .Add_Line("Ba|
00005c50  72 5f 49 63 6f 6e 25 3d  46 4e 57 69 6d 70 5f 49  |r_Icon%=FNWimp_I|
00005c60  63 6f 6e 42 61 72 28 22  22 22 2b 22 21 22 2b 61  |conBar("""+"!"+a|
00005c70  70 70 6c 69 63 61 74 69  6f 6e 24 2b 22 22 22 29  |pplication$+""")|
00005c80  22 2c 69 6e 64 65 6e 74  25 29 0d 20 62 0c 20 20  |",indent%). b.  |
00005c90  20 20 20 c9 20 a3 0d 20  6c 4b 20 20 20 20 20 20  |   . .. lK      |
00005ca0  e7 20 ac 28 74 65 72 73  65 25 29 20 8c 20 f2 48  |. .(terse%) . .H|
00005cb0  65 61 64 69 6e 67 28 22  4e 6f 20 69 63 6f 6e 20  |eading("No icon |
00005cc0  64 65 66 69 6e 65 64 20  66 6f 72 20 69 63 6f 6e  |defined for icon|
00005cd0  20 62 61 72 22 2c 69 6e  64 65 6e 74 25 2b 31 30  | bar",indent%+10|
00005ce0  29 0d 20 76 09 20 20 20  20 cb 0d 20 80 24 20 20  |). v.    .. .$  |
00005cf0  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 45 4e 44  |  .Add_Line("END|
00005d00  50 52 4f 43 22 2c 69 6e  64 65 6e 74 25 29 0d 20  |PROC",indent%). |
00005d10  8a 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |.     .Add_Line(|
00005d20  22 3a 22 2c 69 6e 64 65  6e 74 25 2b 31 29 0d 20  |":",indent%+1). |
00005d30  94 16 20 20 20 20 c8 8e  20 a4 53 61 76 65 54 72  |..    .. .SaveTr|
00005d40  75 65 20 ca 0d 20 9e 0c  20 20 20 20 c9 20 b9 3a  |ue .. ..    . .:|
00005d50  0d 20 a8 38 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |. .8    .Add_Lin|
00005d60  65 28 22 44 45 46 20 46  4e 45 76 65 6e 74 5f 53  |e("DEF FNEvent_S|
00005d70  61 76 65 28 77 69 6e 64  6f 77 25 29 22 2c 69 6e  |ave(window%)",in|
00005d80  64 65 6e 74 25 2b 31 29  0d 20 b2 2e 20 20 20 20  |dent%+1). ..    |
00005d90  f2 41 64 64 5f 4c 69 6e  65 28 22 43 41 53 45 20  |.Add_Line("CASE |
00005da0  77 69 6e 64 6f 77 25 20  4f 46 22 2c 69 6e 64 65  |window% OF",inde|
00005db0  6e 74 25 2b 33 29 0d 20  bc 1d 20 20 20 20 e3 20  |nt%+3). ..    . |
00005dc0  69 25 3d 31 20 b8 20 4e  6f 4f 66 57 69 6e 64 6f  |i%=1 . NoOfWindo|
00005dd0  77 73 25 0d 20 c6 1c 20  20 20 20 c8 8e 20 c0 57  |ws%. ..    .. .W|
00005de0  69 6e 64 6f 77 24 28 69  25 29 2c 34 29 20 ca 0d  |indow$(i%),4) ..|
00005df0  20 d0 1f 20 20 20 20 20  c9 20 22 53 61 76 65 22  | ..     . "Save"|
00005e00  2c 22 73 61 76 65 22 2c  22 53 41 56 45 22 0d 20  |,"save","SAVE". |
00005e10  da 43 20 20 20 20 20 f2  41 64 64 5f 4c 69 6e 65  |.C     .Add_Line|
00005e20  28 22 57 48 45 4e 20 22  2b 57 69 6e 64 6f 77 24  |("WHEN "+Window$|
00005e30  28 69 25 29 2b 22 5f 57  69 6e 64 6f 77 25 20 3a  |(i%)+"_Window% :|
00005e40  3d 54 52 55 45 22 2c 69  6e 64 65 6e 74 25 2b 35  |=TRUE",indent%+5|
00005e50  29 0d 20 e4 09 20 20 20  20 cb 0d 20 ee 09 20 20  |). ..    .. ..  |
00005e60  20 20 ed 0d 20 f8 30 20  20 20 20 f2 41 64 64 5f  |  .. .0    .Add_|
00005e70  4c 69 6e 65 28 22 4f 54  48 45 52 57 49 53 45 20  |Line("OTHERWISE |
00005e80  3a 3d 46 41 4c 53 45 22  2c 69 6e 64 65 6e 74 25  |:=FALSE",indent%|
00005e90  2b 35 29 0d 21 02 26 20  20 20 20 f2 41 64 64 5f  |+5).!.&    .Add_|
00005ea0  4c 69 6e 65 28 22 45 4e  44 43 41 53 45 22 2c 69  |Line("ENDCASE",i|
00005eb0  6e 64 65 6e 74 25 2b 33  29 0d 21 0c 09 20 20 20  |ndent%+3).!..   |
00005ec0  20 7f 0d 21 16 3e 20 20  20 20 f2 41 64 64 5f 4c  | ..!.>    .Add_L|
00005ed0  69 6e 65 28 22 44 45 46  20 46 4e 45 76 65 6e 74  |ine("DEF FNEvent|
00005ee0  5f 53 61 76 65 28 77 69  6e 64 6f 77 25 29 3d 46  |_Save(window%)=F|
00005ef0  41 4c 53 45 22 2c 69 6e  64 65 6e 74 25 2b 31 29  |ALSE",indent%+1)|
00005f00  0d 21 20 09 20 20 20 20  cb 0d 21 2a 14 20 20 20  |.! .    ..!*.   |
00005f10  20 f2 41 64 64 5f 52 45  4d 53 28 31 29 0d 21 34  | .Add_REMS(1).!4|
00005f20  20 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 22  |     .Add_Line("|
00005f30  3a 22 2c 69 6e 64 65 6e  74 25 2b 31 29 0d 21 3e  |:",indent%+1).!>|
00005f40  44 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 22  |D    .Add_Line("|
00005f50  44 45 46 20 46 4e 45 76  65 6e 74 5f 53 70 72 69  |DEF FNEvent_Spri|
00005f60  74 65 73 28 77 69 6e 64  6f 77 25 29 3d 73 70 72  |tes(window%)=spr|
00005f70  69 74 65 73 25 22 2c 69  6e 64 65 6e 74 25 2b 31  |ites%",indent%+1|
00005f80  29 0d 21 48 14 20 20 20  20 f2 41 64 64 5f 52 45  |).!H.    .Add_RE|
00005f90  4d 53 28 31 29 0d 21 52  31 20 20 20 20 f2 46 6f  |MS(1).!R1    .Fo|
00005fa0  6f 74 65 72 31 28 22 45  6e 64 20 6f 66 20 43 72  |oter1("End of Cr|
00005fb0  65 61 74 65 20 57 69 6e  64 6f 77 73 22 2c 69 6e  |eate Windows",in|
00005fc0  64 65 6e 74 25 29 0d 21  5c 09 20 20 20 20 e1 0d  |dent%).!\.    ..|
00005fd0  21 66 07 20 20 3a 0d 21  70 1f 20 20 20 20 dd 20  |!f.  :.!p.    . |
00005fe0  f2 41 64 64 5f 50 52 4f  43 28 78 24 2c 69 6e 64  |.Add_PROC(x$,ind|
00005ff0  65 6e 74 25 29 0d 21 7a  1f 20 20 20 20 20 f2 41  |ent%).!z.     .A|
00006000  64 64 5f 4c 69 6e 65 28  22 3a 22 2c 69 6e 64 65  |dd_Line(":",inde|
00006010  6e 74 25 29 0d 21 84 29  20 20 20 20 20 f2 41 64  |nt%).!.)     .Ad|
00006020  64 5f 4c 69 6e 65 28 22  44 45 46 20 50 52 4f 43  |d_Line("DEF PROC|
00006030  22 2b 78 24 2c 69 6e 64  65 6e 74 25 29 0d 21 8e  |"+x$,indent%).!.|
00006040  15 20 20 20 20 20 f2 41  64 64 5f 52 45 4d 53 28  |.     .Add_REMS(|
00006050  31 29 0d 21 98 09 20 20  20 20 e1 0d 21 a2 07 20  |1).!..    ..!.. |
00006060  20 3a 0d 21 ac 0d 20 dd  20 f2 4d 65 6e 75 73 0d  | :.!.. . .Menus.|
00006070  21 b6 11 20 20 20 20 69  6e 64 65 6e 74 25 3d 34  |!..    indent%=4|
00006080  0d 21 c0 2b 20 20 20 20  f2 48 65 61 64 65 72 28  |.!.+    .Header(|
00006090  22 32 2e 33 a0 43 72 65  61 74 65 a0 4d 65 6e 75  |"2.3.Create.Menu|
000060a0  73 22 2c 69 6e 64 65 6e  74 25 29 0d 21 ca 29 20  |s",indent%).!.) |
000060b0  20 20 20 f2 41 64 64 5f  50 52 4f 43 28 22 43 72  |   .Add_PROC("Cr|
000060c0  65 61 74 65 5f 4d 65 6e  75 73 22 2c 69 6e 64 65  |eate_Menus",inde|
000060d0  6e 74 25 29 0d 21 d4 0e  20 20 20 20 c8 8e 20 b9  |nt%).!..    .. .|
000060e0  20 ca 0d 21 de 25 20 20  20 20 20 c9 20 20 4e 6f  | ..!.%     .  No|
000060f0  4f 66 57 69 6e 64 6f 77  73 25 3d 30 20 80 20 42  |OfWindows%=0 . B|
00006100  61 72 25 3d 30 20 3a 0d  21 e8 41 20 20 20 20 20  |ar%=0 :.!.A     |
00006110  20 20 e7 20 ac 28 74 65  72 73 65 25 29 20 8c 20  |  . .(terse%) . |
00006120  f2 48 65 61 64 69 6e 67  28 22 4e 6f 20 6d 65 6e  |.Heading("No men|
00006130  75 73 20 64 65 66 69 6e  65 64 21 22 2c 69 6e 64  |us defined!",ind|
00006140  65 6e 74 25 2b 31 30 29  0d 21 f2 0c 20 20 20 20  |ent%+10).!..    |
00006150  20 7f 20 3a 0d 21 fc 1f  20 20 20 20 20 20 e3 20  | . :.!..      . |
00006160  69 25 3d 30 20 b8 20 4e  6f 4f 66 57 69 6e 64 6f  |i%=0 . NoOfWindo|
00006170  77 73 25 0d 22 06 3b 20  20 20 20 20 20 20 6b 25  |ws%.".;       k%|
00006180  3d 4e 6f 4f 66 53 75 62  6d 65 6e 75 73 25 28 69  |=NoOfSubmenus%(i|
00006190  25 29 2d 31 20 3a 20 78  24 3d 57 69 6e 64 6f 77  |%)-1 : x$=Window|
000061a0  24 28 69 25 29 2b 22 5f  4d 65 6e 75 25 22 0d 22  |$(i%)+"_Menu%"."|
000061b0  10 12 20 20 20 20 20 20  20 c8 8e 20 6b 25 20 ca  |..       .. k% .|
000061c0  0d 22 1a 14 20 20 20 20  20 20 20 20 c9 20 30 20  |."..        . 0 |
000061d0  20 20 20 3a 0d 22 24 20  20 20 20 20 20 20 20 20  |   :."$         |
000061e0  20 6d 65 6e 75 24 3d c0  4d 65 6e 75 24 28 69 25  | menu$=.Menu$(i%|
000061f0  2c 31 29 29 0d 22 2e 1d  20 20 20 20 20 20 20 20  |,1))."..        |
00006200  20 c8 8e 20 a7 6d 65 6e  75 24 2c 22 5c 22 29 20  | .. .menu$,"\") |
00006210  ca 0d 22 38 12 20 20 20  20 20 20 20 20 20 c9 20  |.."8.         . |
00006220  30 20 3a 0d 22 42 1a 20  20 20 20 20 20 20 20 20  |0 :."B.         |
00006230  20 c8 8e 20 ac 74 65 72  73 65 25 20 ca 0d 22 4c  | .. .terse% .."L|
00006240  12 20 20 20 20 20 20 20  20 20 20 20 c9 20 b9 0d  |.           . ..|
00006250  22 56 44 20 20 20 20 20  20 20 20 20 20 20 20 f2  |"VD            .|
00006260  41 64 64 5f 52 45 4d 28  22 4e 6f 20 6d 65 6e 75  |Add_REM("No menu|
00006270  20 66 6f 72 20 77 69 6e  64 6f 77 3a 20 22 2b 57  | for window: "+W|
00006280  69 6e 64 6f 77 24 28 69  25 29 2c 69 6e 64 65 6e  |indow$(i%),inden|
00006290  74 25 29 0d 22 60 0f 20  20 20 20 20 20 20 20 20  |t%)."`.         |
000062a0  20 cb 0d 22 6a 0e 20 20  20 20 20 20 20 20 20 7f  | .."j.         .|
000062b0  0d 22 74 26 20 20 20 20  20 20 20 20 20 20 e7 20  |."t&          . |
000062c0  ac 28 28 69 25 3d 30 29  20 80 20 28 42 61 72 25  |.((i%=0) . (Bar%|
000062d0  3d a3 29 29 20 8c 0d 22  7e 1a 20 20 20 20 20 20  |=.)) .."~.      |
000062e0  20 20 20 20 c8 8e 20 ac  74 65 72 73 65 25 20 ca  |    .. .terse% .|
000062f0  0d 22 88 12 20 20 20 20  20 20 20 20 20 20 20 c9  |."..           .|
00006300  20 b9 0d 22 92 1c 20 20  20 20 20 20 20 20 20 20  | .."..          |
00006310  20 20 f2 41 64 64 5f 52  45 4d 53 28 31 29 0d 22  |  .Add_REMS(1)."|
00006320  9c 41 20 20 20 20 20 20  20 20 20 20 20 20 f2 41  |.A            .A|
00006330  64 64 5f 52 45 4d 28 22  4d 65 6e 75 20 66 6f 72  |dd_REM("Menu for|
00006340  20 77 69 6e 64 6f 77 3a  20 22 2b 57 69 6e 64 6f  | window: "+Windo|
00006350  77 24 28 69 25 29 2c 69  6e 64 65 6e 74 25 29 0d  |w$(i%),indent%).|
00006360  22 a6 1c 20 20 20 20 20  20 20 20 20 20 20 20 f2  |"..            .|
00006370  41 64 64 5f 52 45 4d 53  28 31 29 0d 22 b0 0f 20  |Add_REMS(1).".. |
00006380  20 20 20 20 20 20 20 20  20 cb 0d 22 ba 36 20 20  |         ..".6  |
00006390  20 20 20 20 20 20 20 20  f2 41 64 64 5f 4d 65 6e  |        .Add_Men|
000063a0  75 28 22 20 22 2b 78 24  2c 4d 65 6e 75 24 28 69  |u(" "+x$,Menu$(i|
000063b0  25 2c 31 29 2c 2d 31 2c  69 6e 64 65 6e 74 25 29  |%,1),-1,indent%)|
000063c0  0d 22 c4 0f 20 20 20 20  20 20 20 20 20 20 cd 0d  |."..          ..|
000063d0  22 ce 1a 20 20 20 20 20  20 20 20 20 20 f2 41 64  |"..          .Ad|
000063e0  64 5f 52 45 4d 53 28 31  29 0d 22 d8 0e 20 20 20  |d_REMS(1)."..   |
000063f0  20 20 20 20 20 20 cb 0d  22 e2 0f 20 20 20 20 20  |      .."..     |
00006400  20 20 20 7f 20 3a 0d 22  ec 18 20 20 20 20 20 20  |   . :."..      |
00006410  20 20 c8 8e 20 ac 74 65  72 73 65 25 20 ca 0d 22  |  .. .terse% .."|
00006420  f6 10 20 20 20 20 20 20  20 20 20 c9 20 b9 0d 23  |..         . ..#|
00006430  00 19 20 20 20 20 20 20  20 20 20 f2 41 64 64 5f  |..         .Add_|
00006440  52 45 4d 53 28 31 29 0d  23 0a 3e 20 20 20 20 20  |REMS(1).#.>     |
00006450  20 20 20 20 f2 41 64 64  5f 52 45 4d 28 22 4d 65  |    .Add_REM("Me|
00006460  6e 75 20 66 6f 72 20 77  69 6e 64 6f 77 3a 20 22  |nu for window: "|
00006470  2b 57 69 6e 64 6f 77 24  28 69 25 29 2c 69 6e 64  |+Window$(i%),ind|
00006480  65 6e 74 25 29 0d 23 14  19 20 20 20 20 20 20 20  |ent%).#..       |
00006490  20 20 f2 41 64 64 5f 52  45 4d 53 28 31 29 0d 23  |  .Add_REMS(1).#|
000064a0  1e 0d 20 20 20 20 20 20  20 20 cb 0d 23 28 36 20  |..        ..#(6 |
000064b0  20 20 20 20 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |        .Add_Lin|
000064c0  65 28 22 20 44 49 4d 20  22 2b 78 24 2b 22 28 22  |e(" DIM "+x$+"("|
000064d0  2b c3 6b 25 2b 22 29 22  2c 69 6e 64 65 6e 74 25  |+.k%+")",indent%|
000064e0  29 0d 23 32 19 20 20 20  20 20 20 20 20 20 f2 41  |).#2.         .A|
000064f0  64 64 5f 52 45 4d 53 28  31 29 0d 23 3c 1c 20 20  |dd_REMS(1).#<.  |
00006500  20 20 20 20 20 20 20 e3  20 6a 25 3d 6b 25 20 b8  |       . j%=k% .|
00006510  20 30 20 88 2d 31 0d 23  46 35 20 20 20 20 20 20  | 0 .-1.#F5      |
00006520  20 20 20 20 f2 41 64 64  5f 4d 65 6e 75 28 78 24  |    .Add_Menu(x$|
00006530  2c 4d 65 6e 75 24 28 69  25 2c 6a 25 2b 31 29 2c  |,Menu$(i%,j%+1),|
00006540  6a 25 2c 69 6e 64 65 6e  74 25 29 0d 23 50 0e 20  |j%,indent%).#P. |
00006550  20 20 20 20 20 20 20 20  ed 0d 23 5a 19 20 20 20  |        ..#Z.   |
00006560  20 20 20 20 20 20 f2 41  64 64 5f 52 45 4d 53 28  |      .Add_REMS(|
00006570  31 29 0d 23 64 0d 20 20  20 20 20 20 20 20 cb 0d  |1).#d.        ..|
00006580  23 6e 0c 20 20 20 20 20  20 20 ed 0d 23 78 09 20  |#n.       ..#x. |
00006590  20 20 20 cb 0d 23 82 24  20 20 20 20 f2 41 64 64  |   ..#.$    .Add|
000065a0  5f 4c 69 6e 65 28 22 45  4e 44 50 52 4f 43 22 2c  |_Line("ENDPROC",|
000065b0  69 6e 64 65 6e 74 25 29  0d 23 8c 20 20 20 20 20  |indent%).#.     |
000065c0  f2 41 64 64 5f 4c 69 6e  65 28 22 3a 22 2c 69 6e  |.Add_Line(":",in|
000065d0  64 65 6e 74 25 2b 31 29  0d 23 96 13 20 20 20 20  |dent%+1).#..    |
000065e0  f2 4d 6f 75 73 65 50 6f  70 55 70 0d 23 a0 33 20  |.MousePopUp.#.3 |
000065f0  20 20 20 f2 46 6f 6f 74  65 72 31 28 22 45 6e 64  |   .Footer1("End|
00006600  20 6f 66 20 4d 65 6e 75  20 44 65 66 69 6e 69 74  | of Menu Definit|
00006610  69 6f 6e 73 22 2c 69 6e  64 65 6e 74 25 29 0d 23  |ions",indent%).#|
00006620  aa 09 20 20 20 20 e1 0d  23 b4 07 20 20 3a 0d 23  |..    ..#..  :.#|
00006630  be 13 20 20 dd 20 f2 4d  6f 75 73 65 50 6f 70 55  |..  . .MousePopU|
00006640  70 0d 23 c8 0f 20 20 69  6e 64 65 6e 74 25 3d 34  |p.#..  indent%=4|
00006650  0d 23 d2 36 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |.#.6  .Add_Line(|
00006660  22 44 45 46 20 46 4e 45  76 65 6e 74 5f 4d 65 6e  |"DEF FNEvent_Men|
00006670  75 28 77 69 6e 64 6f 77  25 29 22 2c 69 6e 64 65  |u(window%)",inde|
00006680  6e 74 25 2b 31 29 0d 23  dc 0c 20 20 c8 8e 20 b9  |nt%+1).#..  .. .|
00006690  20 ca 0d 23 e6 23 20 20  20 20 c9 20 4e 6f 4f 66  | ..#.#    . NoOf|
000066a0  57 69 6e 64 6f 77 73 25  3d 30 20 80 20 42 61 72  |Windows%=0 . Bar|
000066b0  25 3d 30 20 3a 0d 23 f0  27 20 20 20 20 20 20 f2  |%=0 :.#.'      .|
000066c0  41 64 64 5f 4c 69 6e 65  28 22 3d 46 41 4c 53 45  |Add_Line("=FALSE|
000066d0  22 2c 69 6e 64 65 6e 74  25 2b 31 29 0d 23 fa 0b  |",indent%+1).#..|
000066e0  20 20 20 20 7f 20 3a 0d  24 04 30 20 20 20 20 20  |    . :.$.0     |
000066f0  20 f2 41 64 64 5f 4c 69  6e 65 28 22 43 41 53 45  | .Add_Line("CASE|
00006700  20 77 69 6e 64 6f 77 25  20 4f 46 22 2c 69 6e 64  | window% OF",ind|
00006710  65 6e 74 25 2b 31 29 0d  24 0e 1f 20 20 20 20 20  |ent%+1).$..     |
00006720  20 e3 20 69 25 3d 30 20  b8 20 4e 6f 4f 66 57 69  | . i%=0 . NoOfWi|
00006730  6e 64 6f 77 73 25 0d 24  18 2c 20 20 20 20 20 20  |ndows%.$.,      |
00006740  20 78 24 3d 22 57 48 45  4e 20 22 2b 57 69 6e 64  | x$="WHEN "+Wind|
00006750  6f 77 24 28 69 25 29 2b  22 5f 57 69 6e 64 6f 77  |ow$(i%)+"_Window|
00006760  25 22 0d 24 22 21 20 20  20 20 20 20 20 78 24 2b  |%".$"!       x$+|
00006770  3d c4 32 34 2d a9 78 24  2c 22 20 22 29 2b 22 3a  |=.24-.x$," ")+":|
00006780  20 3d 22 0d 24 2c 1e 20  20 20 20 20 20 20 6d 65  | =".$,.       me|
00006790  6e 75 24 3d c0 4d 65 6e  75 24 28 69 25 2c 31 29  |nu$=.Menu$(i%,1)|
000067a0  29 0d 24 36 1c 20 20 20  20 20 20 20 c8 8e 20 20  |).$6.       ..  |
000067b0  a7 6d 65 6e 75 24 2c 22  5c 22 29 20 ca 0d 24 40  |.menu$,"\") ..$@|
000067c0  15 20 20 20 20 20 20 20  20 20 c9 20 30 20 20 20  |.         . 0   |
000067d0  20 3a 0d 24 4a 18 20 20  20 20 20 20 20 20 20 7f  | :.$J.         .|
000067e0  20 3a 20 c8 8e 20 69 25  20 ca 0d 24 54 21 20 20  | : .. i% ..$T!  |
000067f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006800  20 20 20 20 c9 20 30 20  20 20 3a 0d 24 5e 24 20  |    . 0   :.$^$ |
00006810  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006820  20 20 20 20 20 20 c8 8e  20 42 61 72 25 20 ca 0d  |      .. Bar% ..|
00006830  24 68 31 20 20 20 20 20  20 20 20 20 20 20 20 20  |$h1             |
00006840  20 20 20 20 20 20 20 20  20 20 20 c9 20 b9 20 3a  |           . . :|
00006850  20 78 24 2b 3d 22 42 61  72 5f 4d 65 6e 75 25 22  | x$+="Bar_Menu%"|
00006860  0d 24 72 2b 20 20 20 20  20 20 20 20 20 20 20 20  |.$r+            |
00006870  20 20 20 20 20 20 20 20  20 20 20 20 7f 20 3a 20  |            . : |
00006880  78 24 2b 3d 22 46 41 4c  53 45 22 0d 24 7c 1c 20  |x$+="FALSE".$|. |
00006890  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000068a0  20 20 20 20 20 20 cb 0d  24 86 35 20 20 20 20 20  |      ..$.5     |
000068b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000068c0  20 7f 3a 20 78 24 2b 3d  57 69 6e 64 6f 77 24 28  | .: x$+=Window$(|
000068d0  69 25 29 2b 22 5f 4d 65  6e 75 25 22 0d 24 90 1a  |i%)+"_Menu%".$..|
000068e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000068f0  20 20 20 20 20 cb 0d 24  9a 30 20 20 20 20 20 20  |     ..$.0      |
00006900  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
00006910  41 64 64 5f 4c 69 6e 65  28 78 24 2c 69 6e 64 65  |Add_Line(x$,inde|
00006920  6e 74 25 2b 32 29 0d 24  a4 0c 20 20 20 20 20 20  |nt%+2).$..      |
00006930  20 cb 0d 24 ae 0b 20 20  20 20 20 20 ed 0d 24 b8  | ..$..      ..$.|
00006940  41 20 20 20 20 20 20 f2  41 64 64 5f 4c 69 6e 65  |A      .Add_Line|
00006950  28 22 4f 54 48 45 52 57  49 53 45 20 20 20 20 20  |("OTHERWISE     |
00006960  20 20 20 20 20 20 20 20  20 20 3a 20 3d 46 41 4c  |          : =FAL|
00006970  53 45 22 2c 69 6e 64 65  6e 74 25 2b 32 29 0d 24  |SE",indent%+2).$|
00006980  c2 28 20 20 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |.(      .Add_Lin|
00006990  65 28 22 45 4e 44 43 41  53 45 22 2c 69 6e 64 65  |e("ENDCASE",inde|
000069a0  6e 74 25 2b 31 29 0d 24  cc 16 20 20 20 20 20 20  |nt%+1).$..      |
000069b0  f2 41 64 64 5f 52 45 4d  53 28 31 29 0d 24 d6 07  |.Add_REMS(1).$..|
000069c0  20 20 cb 0d 24 e0 12 20  20 f2 41 64 64 5f 52 45  |  ..$..  .Add_RE|
000069d0  4d 53 28 31 29 0d 24 ea  06 20 e1 0d 24 f4 05 3a  |MS(1).$.. ..$..:|
000069e0  0d 24 fe 2a 20 20 20 20  20 20 dd 20 f2 41 64 64  |.$.*      . .Add|
000069f0  5f 4d 65 6e 75 28 78 24  2c 6d 65 6e 75 24 2c 6a  |_Menu(x$,menu$,j|
00006a00  25 2c 69 6e 64 65 6e 74  25 29 0d 25 08 25 20 20  |%,indent%).%.%  |
00006a10  20 20 20 20 6d 65 6e 75  24 3d a4 41 6d 65 6e 64  |    menu$=.Amend|
00006a20  5f 4d 65 6e 75 28 78 24  2c 6d 65 6e 75 24 29 0d  |_Menu(x$,menu$).|
00006a30  25 12 17 20 20 20 20 20  20 6d 65 6e 75 24 3d c0  |%..      menu$=.|
00006a40  6d 65 6e 75 24 29 0d 25  1c 11 20 20 20 20 20 20  |menu$).%..      |
00006a50  c8 8e 20 6a 25 20 ca 0d  25 26 15 20 20 20 20 20  |.. j% ..%&.     |
00006a60  20 20 c9 20 2d 31 2c 30  20 20 20 3a 0d 25 30 2f  |  . -1,0   :.%0/|
00006a70  20 20 20 20 20 20 20 20  f2 41 64 64 5f 4d 65 6e  |        .Add_Men|
00006a80  75 4c 69 6e 65 28 22 20  22 2b 78 24 2c 6d 65 6e  |uLine(" "+x$,men|
00006a90  75 24 2c 69 6e 64 65 6e  74 25 29 0d 25 3a 0e 20  |u$,indent%).%:. |
00006aa0  20 20 20 20 20 20 7f 20  3a 0d 25 44 3b 20 20 20  |      . :.%D;   |
00006ab0  20 20 20 20 20 f2 41 64  64 5f 4d 65 6e 75 4c 69  |     .Add_MenuLi|
00006ac0  6e 65 28 22 20 22 2b 78  24 2b 22 28 22 2b c3 6a  |ne(" "+x$+"("+.j|
00006ad0  25 2b 22 29 22 2c 6d 65  6e 75 24 2c 69 6e 64 65  |%+")",menu$,inde|
00006ae0  6e 74 25 29 0d 25 4e 0b  20 20 20 20 20 20 cb 0d  |nt%).%N.      ..|
00006af0  25 58 0b 20 20 20 20 20  20 e1 0d 25 62 07 20 20  |%X.      ..%b.  |
00006b00  3a 0d 25 6c 2b 20 20 20  20 20 20 dd 20 f2 41 64  |:.%l+      . .Ad|
00006b10  64 5f 4d 65 6e 75 4c 69  6e 65 28 78 24 2c 6d 65  |d_MenuLine(x$,me|
00006b20  6e 75 24 2c 69 6e 64 65  6e 74 25 29 0d 25 76 1c  |nu$,indent%).%v.|
00006b30  20 20 20 20 20 20 ea 20  69 25 2c 6a 25 2c 6b 25  |      . i%,j%,k%|
00006b40  2c 6c 65 6e 25 2c 73 24  0d 25 80 2b 20 20 20 20  |,len%,s$.%.+    |
00006b50  20 20 69 25 3d 36 30 2d  a9 78 24 2d a9 28 22 3d  |  i%=60-.x$-.("=|
00006b60  46 4e 57 69 6d 70 5f 4d  65 6e 75 43 72 65 61 74  |FNWimp_MenuCreat|
00006b70  65 22 29 0d 25 8a 10 20  20 20 20 20 20 c8 8e 20  |e").%..      .. |
00006b80  b9 20 ca 0d 25 94 18 20  20 20 20 20 20 20 c9 20  |. ..%..       . |
00006b90  69 25 3e a9 28 6d 65 6e  75 24 29 0d 25 9e 46 20  |i%>.(menu$).%.F |
00006ba0  20 20 20 20 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |        .Add_Lin|
00006bb0  65 28 78 24 2b 22 3d 46  4e 57 69 6d 70 5f 4d 65  |e(x$+"=FNWimp_Me|
00006bc0  6e 75 43 72 65 61 74 65  28 22 22 22 2b 6d 65 6e  |nuCreate("""+men|
00006bd0  75 24 2b 22 22 22 29 22  2c 69 6e 64 65 6e 74 25  |u$+""")",indent%|
00006be0  29 0d 25 a8 0d 20 20 20  20 20 20 20 7f 3a 0d 25  |).%..       .:.%|
00006bf0  b2 21 20 20 20 20 20 20  20 20 6c 65 6e 25 3d 36  |.!        len%=6|
00006c00  30 2d a9 28 22 6d 65 6e  75 24 3d 22 29 2d 34 0d  |0-.("menu$=")-4.|
00006c10  25 bc 12 20 20 20 20 20  20 20 20 c8 8e 20 b9 20  |%..        .. . |
00006c20  ca 0d 25 c6 1d 20 20 20  20 20 20 20 20 20 c9 20  |..%..         . |
00006c30  a9 28 6d 65 6e 75 24 29  3c 3d 6c 65 6e 25 0d 25  |.(menu$)<=len%.%|
00006c40  d0 3b 20 20 20 20 20 20  20 20 20 20 f2 41 64 64  |.;          .Add|
00006c50  5f 4c 69 6e 65 28 22 6d  65 6e 75 24 3d 22 2b 22  |_Line("menu$="+"|
00006c60  22 22 22 2b 6d 65 6e 75  24 2b 22 22 22 22 2c 69  |"""+menu$+"""",i|
00006c70  6e 64 65 6e 74 25 2b 32  29 0d 25 da 0e 20 20 20  |ndent%+2).%..   |
00006c80  20 20 20 20 20 20 7f 0d  25 e4 1b 20 20 20 20 20  |      ..%..     |
00006c90  20 20 20 20 20 73 24 3d  22 2d 22 20 3a 20 6a 25  |     s$="-" : j%|
00006ca0  3d 30 0d 25 ee 0f 20 20  20 20 20 20 20 20 20 20  |=0.%..          |
00006cb0  f5 0d 25 f8 42 20 20 20  20 20 20 20 20 20 20 f5  |..%.B          .|
00006cc0  20 3a 20 6b 25 3d 6a 25  3a 6a 25 3d a7 6d 65 6e  | : k%=j%:j%=.men|
00006cd0  75 24 2c 22 5c 22 2c 6a  25 2b 31 29 20 3a 20 fd  |u$,"\",j%+1) : .|
00006ce0  20 28 6a 25 3e 6c 65 6e  25 29 20 84 20 28 6a 25  | (j%>len%) . (j%|
00006cf0  3d 30 29 0d 26 02 29 20  20 20 20 20 20 20 20 20  |=0).&.)         |
00006d00  20 e7 20 6a 25 3e 35 38  20 84 20 a9 6d 65 6e 75  | . j%>58 . .menu|
00006d10  24 3e 35 38 20 8c 20 6a  25 3d 6b 25 0d 26 0c 15  |$>58 . j%=k%.&..|
00006d20  20 20 20 20 20 20 20 20  20 20 c8 8e 20 73 24 20  |          .. s$ |
00006d30  ca 0d 26 16 1e 20 20 20  20 20 20 20 20 20 20 20  |..&..           |
00006d40  c9 20 22 2d 22 20 3a 20  20 73 24 3d 22 20 22 0d  |. "-" :  s$=" ".|
00006d50  26 20 19 20 20 20 20 20  20 20 20 20 20 20 7f 3a  |& .           .:|
00006d60  20 20 73 24 3d 22 2b 22  0d 26 2a 0f 20 20 20 20  |  s$="+".&*.    |
00006d70  20 20 20 20 20 20 cb 0d  26 34 15 20 20 20 20 20  |      ..&4.     |
00006d80  20 20 20 20 20 c8 8e 20  6a 25 20 ca 0d 26 3e 12  |     .. j% ..&>.|
00006d90  20 20 20 20 20 20 20 20  20 20 20 c9 20 30 0d 26  |           . 0.&|
00006da0  48 43 20 20 20 20 20 20  20 20 20 20 20 20 f2 41  |HC            .A|
00006db0  64 64 5f 4c 69 6e 65 28  22 6d 65 6e 75 24 22 2b  |dd_Line("menu$"+|
00006dc0  73 24 2b 22 3d 22 2b 22  22 22 22 2b 6d 65 6e 75  |s$+"="+""""+menu|
00006dd0  24 2b 22 22 22 22 2c 69  6e 64 65 6e 74 25 2b 32  |$+"""",indent%+2|
00006de0  29 0d 26 52 18 20 20 20  20 20 20 20 20 20 20 20  |).&R.           |
00006df0  20 6d 65 6e 75 24 3d 22  22 0d 26 5c 10 20 20 20  | menu$="".&\.   |
00006e00  20 20 20 20 20 20 20 20  7f 0d 26 66 48 20 20 20  |        ..&fH   |
00006e10  20 20 20 20 20 20 20 20  20 f2 41 64 64 5f 4c 69  |         .Add_Li|
00006e20  6e 65 28 22 6d 65 6e 75  24 22 2b 73 24 2b 22 3d  |ne("menu$"+s$+"=|
00006e30  22 2b 22 22 22 22 2b c0  6d 65 6e 75 24 2c 6a 25  |"+""""+.menu$,j%|
00006e40  29 2b 22 22 22 22 2c 69  6e 64 65 6e 74 25 2b 32  |)+"""",indent%+2|
00006e50  29 0d 26 70 27 20 20 20  20 20 20 20 20 20 20 20  |).&p'           |
00006e60  20 6d 65 6e 75 24 3d c2  6d 65 6e 75 24 2c a9 6d  | menu$=.menu$,.m|
00006e70  65 6e 75 24 2d 6a 25 29  0d 26 7a 0f 20 20 20 20  |enu$-j%).&z.    |
00006e80  20 20 20 20 20 20 cb 0d  26 84 18 20 20 20 20 20  |      ..&..     |
00006e90  20 20 20 20 20 fd 20 6d  65 6e 75 24 3d 22 22 0d  |     . menu$="".|
00006ea0  26 8e 0d 20 20 20 20 20  20 20 20 cb 0d 26 98 3d  |&..        ..&.=|
00006eb0  20 20 20 20 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |        .Add_Lin|
00006ec0  65 28 78 24 2b 22 3d 46  4e 57 69 6d 70 5f 4d 65  |e(x$+"=FNWimp_Me|
00006ed0  6e 75 43 72 65 61 74 65  28 6d 65 6e 75 24 29 22  |nuCreate(menu$)"|
00006ee0  2c 69 6e 64 65 6e 74 25  29 0d 26 a2 0b 20 20 20  |,indent%).&..   |
00006ef0  20 20 20 cb 0d 26 ac 0b  20 20 20 20 20 20 e1 0d  |   ..&..      ..|
00006f00  26 b6 07 20 20 3a 0d 26  c0 21 20 20 20 20 20 20  |&..  :.&.!      |
00006f10  dd 20 a4 41 6d 65 6e 64  5f 4d 65 6e 75 28 78 24  |. .Amend_Menu(x$|
00006f20  2c 6d 65 6e 75 24 29 0d  26 ca 21 20 20 20 20 20  |,menu$).&.!     |
00006f30  20 ea 20 69 25 2c 6a 25  2c 6b 25 2c 6e 25 2c 7a  | . i%,j%,k%,n%,z|
00006f40  24 20 3a 20 69 25 3d 30  0d 26 d4 0d 20 20 20 20  |$ : i%=0.&..    |
00006f50  20 20 f5 20 3a 0d 26 de  1e 20 20 20 20 20 20 20  |  . :.&..       |
00006f60  69 25 3d a7 6d 65 6e 75  24 2c 22 3e 22 2c 69 25  |i%=.menu$,">",i%|
00006f70  2b 31 29 0d 26 e8 12 20  20 20 20 20 20 20 c8 8e  |+1).&..       ..|
00006f80  20 69 25 20 ca 0d 26 f2  14 20 20 20 20 20 20 20  | i% ..&..       |
00006f90  20 c9 20 30 20 20 20 20  3a 0d 26 fc 0f 20 20 20  | . 0    :.&..   |
00006fa0  20 20 20 20 20 7f 20 3a  0d 27 06 22 20 20 20 20  |     . :.'."    |
00006fb0  20 20 20 20 20 20 20 6a  25 3d a7 6d 65 6e 75 24  |       j%=.menu$|
00006fc0  2c 22 5c 22 2c 69 25 2b  31 29 0d 27 10 29 20 20  |,"\",i%+1).'.)  |
00006fd0  20 20 20 20 20 20 20 20  20 6b 25 3d bb 28 c1 6d  |         k%=.(.m|
00006fe0  65 6e 75 24 2c 69 25 2b  31 2c 6a 25 2d 69 25 2d  |enu$,i%+1,j%-i%-|
00006ff0  31 29 29 0d 27 1a 15 20  20 20 20 20 20 20 20 20  |1)).'..         |
00007000  20 20 c8 8e 20 b9 20 ca  0d 27 24 18 20 20 20 20  |  .. . ..'$.    |
00007010  20 20 20 20 20 20 20 20  c9 20 6b 25 3c 31 30 30  |        . k%<100|
00007020  0d 27 2e 26 20 20 20 20  20 20 20 20 20 20 20 20  |.'.&            |
00007030  20 7a 24 3d 78 24 2b 22  28 22 2b c3 28 6b 25 2d  | z$=x$+"("+.(k%-|
00007040  31 29 2b 22 29 22 0d 27  38 11 20 20 20 20 20 20  |1)+")".'8.      |
00007050  20 20 20 20 20 20 7f 0d  27 42 30 20 20 20 20 20  |      ..'B0     |
00007060  20 20 20 20 20 20 20 20  c8 8e 20 a7 c1 6d 65 6e  |        .. ..men|
00007070  75 24 2c 69 25 2b 31 2c  6a 25 2d 69 25 2d 31 29  |u$,i%+1,j%-i%-1)|
00007080  2c 22 43 22 29 20 ca 0d  27 4c 19 20 20 20 20 20  |,"C") ..'L.     |
00007090  20 20 20 20 20 20 20 20  20 c9 20 30 20 20 20 3a  |         . 0   :|
000070a0  0d 27 56 17 20 20 20 20  20 20 20 20 20 20 20 20  |.'V.            |
000070b0  20 20 20 6e 25 3d 31 0d  27 60 30 20 20 20 20 20  |   n%=1.'`0     |
000070c0  20 20 20 20 20 20 20 20  20 20 c8 95 20 57 69 6e  |          .. Win|
000070d0  64 6f 77 25 28 6e 25 29  3c 3e 6b 25 20 3a 20 6e  |dow%(n%)<>k% : n|
000070e0  25 2b 3d 31 20 3a ce 0d  27 6a 2c 20 20 20 20 20  |%+=1 :..'j,     |
000070f0  20 20 20 20 20 20 20 20  20 20 7a 24 3d 57 69 6e  |          z$=Win|
00007100  64 6f 77 24 28 6e 25 29  2b 22 5f 57 69 6e 64 6f  |dow$(n%)+"_Windo|
00007110  77 25 22 0d 27 74 14 20  20 20 20 20 20 20 20 20  |w%".'t.         |
00007120  20 20 20 20 20 7f 3a 0d  27 7e 39 20 20 20 20 20  |     .:.'~9     |
00007130  20 20 20 20 20 20 20 20  20 20 6e 25 3d 69 25 20  |          n%=i% |
00007140  3a 20 f5 20 3a 20 6e 25  2d 3d 31 20 3a 20 fd 20  |: . : n%-=1 : . |
00007150  c1 6d 65 6e 75 24 2c 6e  25 2c 31 29 3d 22 5c 22  |.menu$,n%,1)="\"|
00007160  0d 27 88 34 20 20 20 20  20 20 20 20 20 20 20 20  |.'.4            |
00007170  20 20 20 7a 24 3d c1 6d  65 6e 75 24 2c 6e 25 2b  |   z$=.menu$,n%+|
00007180  31 2c 69 25 2d 6e 25 2d  31 29 2b 22 5f 43 4d 65  |1,i%-n%-1)+"_CMe|
00007190  6e 75 25 22 0d 27 92 36  20 20 20 20 20 20 20 20  |nu%".'.6        |
000071a0  20 20 20 20 20 20 20 f2  41 64 64 5f 4d 65 6e 75  |       .Add_Menu|
000071b0  4c 69 6e 65 28 7a 24 2c  22 43 6f 6c 6f 75 72 73  |Line(z$,"Colours|
000071c0  22 2c 69 6e 64 65 6e 74  25 29 0d 27 9c 12 20 20  |",indent%).'..  |
000071d0  20 20 20 20 20 20 20 20  20 20 20 cb 0d 27 a6 10  |           ..'..|
000071e0  20 20 20 20 20 20 20 20  20 20 20 cb 0d 27 b0 36  |           ..'.6|
000071f0  20 20 20 20 20 20 20 20  20 20 20 6d 65 6e 75 24  |           menu$|
00007200  3d c0 6d 65 6e 75 24 2c  69 25 29 2b 7a 24 2b c2  |=.menu$,i%)+z$+.|
00007210  6d 65 6e 75 24 2c a9 6d  65 6e 75 24 2d 6a 25 2b  |menu$,.menu$-j%+|
00007220  31 29 0d 27 ba 0d 20 20  20 20 20 20 20 20 cb 0d  |1).'..        ..|
00007230  27 c4 11 20 20 20 20 20  20 20 fd 20 69 25 3d 30  |'..       . i%=0|
00007240  0d 27 ce 10 20 20 20 20  20 20 3d 6d 65 6e 75 24  |.'..      =menu$|
00007250  0d 27 d8 05 3a 0d 27 e2  05 3a 0d 27 ec 23 f4 2d  |.'..:.'..:.'.#.-|
00007260  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00007270  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 27 f6  |-------------.'.|
00007280  24 f4 23 20 20 20 20 20  20 57 52 49 54 49 4e 47  |$.#      WRITING|
00007290  20 45 56 45 4e 54 20 50  52 4f 43 45 44 55 52 45  | EVENT PROCEDURE|
000072a0  53 0d 28 00 23 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |S.(.#.----------|
000072b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000072c0  2d 2d 2d 2d 0d 28 0a 05  f4 0d 28 14 05 3a 0d 28  |----.(....(..:.(|
000072d0  1e 1b 20 20 20 20 dd 20  f2 45 76 65 6e 74 5f 50  |..    . .Event_P|
000072e0  72 6f 63 65 64 75 72 65  73 0d 28 28 15 20 20 20  |rocedures.((.   |
000072f0  20 20 f2 57 69 6e 64 6f  77 43 6c 6f 73 65 0d 28  |  .WindowClose.(|
00007300  32 14 20 20 20 20 20 f2  57 69 6e 64 6f 77 44 72  |2.     .WindowDr|
00007310  61 77 0d 28 3c 14 20 20  20 20 20 f2 4d 6f 75 73  |aw.(<.     .Mous|
00007320  65 43 6c 69 63 6b 0d 28  46 0e 20 20 20 20 20 f2  |eClick.(F.     .|
00007330  4b 65 79 73 0d 28 50 19  20 20 20 20 20 f2 55 73  |Keys.(P.     .Us|
00007340  65 72 5f 4d 65 6e 75 43  68 6f 69 63 65 0d 28 5a  |er_MenuChoice.(Z|
00007350  15 20 20 20 20 20 f2 46  69 6c 65 4c 6f 61 64 69  |.     .FileLoadi|
00007360  6e 67 0d 28 64 14 20 20  20 20 20 f2 46 69 6c 65  |ng.(d.     .File|
00007370  53 61 76 69 6e 67 0d 28  6e 09 20 20 20 20 e1 0d  |Saving.(n.    ..|
00007380  28 78 09 20 20 20 20 3a  0d 28 82 14 20 20 dd 20  |(x.    :.(..  . |
00007390  f2 57 69 6e 64 6f 77 43  6c 6f 73 65 0d 28 8c 0f  |.WindowClose.(..|
000073a0  20 20 69 6e 64 65 6e 74  25 3d 34 0d 28 96 2b 20  |  indent%=4.(.+ |
000073b0  20 f2 48 65 61 64 65 72  28 22 33 2e 30 a0 57 69  | .Header("3.0.Wi|
000073c0  6e 64 6f 77 a0 43 6c 6f  73 69 6e 67 22 2c 69 6e  |ndow.Closing",in|
000073d0  64 65 6e 74 25 29 0d 28  a0 3e 20 20 f2 41 64 64  |dent%).(.>  .Add|
000073e0  5f 50 52 4f 43 28 22 45  76 65 6e 74 5f 57 69 6e  |_PROC("Event_Win|
000073f0  64 6f 77 43 6c 6f 73 65  28 77 69 6e 64 6f 77 25  |dowClose(window%|
00007400  2c 62 75 74 74 6f 6e 73  25 29 22 2c 69 6e 64 65  |,buttons%)",inde|
00007410  6e 74 25 29 0d 28 aa 17  20 20 c8 8e 20 4e 6f 4f  |nt%).(..  .. NoO|
00007420  66 57 69 6e 64 6f 77 73  25 20 ca 0d 28 b4 47 20  |fWindows% ..(.G |
00007430  20 20 c9 20 30 20 20 20  20 3a 20 e7 20 ac 28 74  |  . 0    : . .(t|
00007440  65 72 73 65 25 29 20 8c  20 f2 48 65 61 64 69 6e  |erse%) . .Headin|
00007450  67 28 22 4e 6f 20 77 69  6e 64 6f 77 73 20 64 65  |g("No windows de|
00007460  66 69 6e 65 64 22 2c 69  6e 64 65 6e 74 25 2b 31  |fined",indent%+1|
00007470  30 29 0d 28 be 0a 20 20  20 7f 20 3a 0d 28 c8 2d  |0).(..   . :.(.-|
00007480  20 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 22  |     .Add_Line("|
00007490  43 41 53 45 20 77 69 6e  64 6f 77 25 20 4f 46 22  |CASE window% OF"|
000074a0  2c 69 6e 64 65 6e 74 25  29 0d 28 d2 1e 20 20 20  |,indent%).(..   |
000074b0  20 20 e3 20 69 25 3d 31  20 b8 20 4e 6f 4f 66 57  |  . i%=1 . NoOfW|
000074c0  69 6e 64 6f 77 73 25 0d  28 dc 2b 20 20 20 20 20  |indows%.(.+     |
000074d0  20 78 24 3d 22 57 48 45  4e 20 22 2b 57 69 6e 64  | x$="WHEN "+Wind|
000074e0  6f 77 24 28 69 25 29 2b  22 5f 57 69 6e 64 6f 77  |ow$(i%)+"_Window|
000074f0  25 22 0d 28 e6 1e 20 20  20 20 20 20 78 24 2b 3d  |%".(..      x$+=|
00007500  c4 32 35 2d a9 78 24 2c  22 20 22 29 2b 22 3a 22  |.25-.x$," ")+":"|
00007510  0d 28 f0 19 20 20 20 20  20 20 20 c8 8e 20 45 78  |.(..       .. Ex|
00007520  69 74 25 28 69 25 29 20  ca 0d 28 fa 10 20 20 20  |it%(i%) ..(..   |
00007530  20 20 20 20 c9 20 a3 20  3a 0d 29 04 31 20 20 20  |    . . :.).1   |
00007540  20 20 20 20 20 78 24 2b  3d 22 20 52 45 4d 20 4e  |     x$+=" REM N|
00007550  6f 20 63 6c 6f 73 69 6e  67 20 61 63 74 69 6f 6e  |o closing action|
00007560  20 64 65 66 69 6e 65 64  21 22 0d 29 0e 31 20 20  | defined!".).1  |
00007570  20 20 20 20 20 20 e7 20  ac 28 74 65 72 73 65 25  |      . .(terse%|
00007580  29 20 8c 20 f2 41 64 64  5f 4c 69 6e 65 28 78 24  |) . .Add_Line(x$|
00007590  2c 69 6e 64 65 6e 74 25  2b 31 29 0d 29 18 17 20  |,indent%+1).).. |
000075a0  20 20 20 20 20 20 7f 20  20 20 20 20 20 20 20 20  |      .         |
000075b0  20 3a 0d 29 22 21 20 20  20 20 20 20 20 20 78 24  | :.)"!        x$|
000075c0  2b 3d 22 20 66 69 6e 69  73 68 65 64 25 3d 54 52  |+=" finished%=TR|
000075d0  55 45 22 0d 29 2c 23 20  20 20 20 20 20 20 20 f2  |UE".),#        .|
000075e0  41 64 64 5f 4c 69 6e 65  28 78 24 2c 69 6e 64 65  |Add_Line(x$,inde|
000075f0  6e 74 25 2b 31 29 0d 29  36 0b 20 20 20 20 20 20  |nt%+1).)6.      |
00007600  cb 0d 29 40 0a 20 20 20  20 20 ed 0d 29 4a 25 20  |..)@.     ..)J% |
00007610  20 20 20 20 f2 41 64 64  5f 4c 69 6e 65 28 22 45  |    .Add_Line("E|
00007620  4e 44 43 41 53 45 22 2c  69 6e 64 65 6e 74 25 29  |NDCASE",indent%)|
00007630  0d 29 54 07 20 20 cb 0d  29 5e 12 20 20 f2 41 64  |.)T.  ..)^.  .Ad|
00007640  64 5f 52 45 4d 53 28 31  29 0d 29 68 22 20 20 f2  |d_REMS(1).)h"  .|
00007650  41 64 64 5f 4c 69 6e 65  28 22 45 4e 44 50 52 4f  |Add_Line("ENDPRO|
00007660  43 22 2c 69 6e 64 65 6e  74 25 29 0d 29 72 12 20  |C",indent%).)r. |
00007670  20 f2 41 64 64 5f 52 45  4d 53 28 32 29 0d 29 7c  | .Add_REMS(2).)||
00007680  36 20 20 f2 46 6f 6f 74  65 72 31 28 22 45 6e 64  |6  .Footer1("End|
00007690  20 6f 66 20 57 69 6e 64  6f 77 20 43 6c 6f 73 65  | of Window Close|
000076a0  20 52 6f 75 74 69 6e 65  73 22 2c 69 6e 64 65 6e  | Routines",inden|
000076b0  74 25 29 0d 29 86 07 20  20 e1 0d 29 90 05 3a 0d  |t%).)..  ..)..:.|
000076c0  29 9a 13 20 20 dd 20 a4  57 69 6e 64 6f 77 44 72  |)..  . .WindowDr|
000076d0  61 77 0d 29 a4 1a 20 20  ea 20 69 25 2c 64 72 61  |aw.)..  . i%,dra|
000076e0  77 25 20 3a 20 64 72 61  77 25 3d a3 0d 29 ae 17  |w% : draw%=..)..|
000076f0  20 20 c8 8e 20 4e 6f 4f  66 57 69 6e 64 6f 77 73  |  .. NoOfWindows|
00007700  25 20 ca 0d 29 b8 0a 20  20 c9 20 30 3a 0d 29 c2  |% ..)..  . 0:.).|
00007710  08 20 20 7f 3a 0d 29 cc  1b 20 20 e3 20 69 25 3d  |.  .:.)..  . i%=|
00007720  31 20 b8 20 4e 6f 4f 66  57 69 6e 64 6f 77 73 25  |1 . NoOfWindows%|
00007730  0d 29 d6 1f 20 20 20 54  65 6d 70 6c 61 74 65 73  |.)..   Templates|
00007740  25 21 30 3d 57 69 6e 64  6f 77 25 28 69 25 29 0d  |%!0=Window%(i%).|
00007750  29 e0 2a 20 20 20 c8 99  20 22 57 69 6d 70 5f 47  |).*   .. "Wimp_G|
00007760  65 74 57 69 6e 64 6f 77  49 6e 66 6f 22 2c 2c 54  |etWindowInfo",,T|
00007770  65 6d 70 6c 61 74 65 73  25 0d 29 ea 21 20 20 20  |emplates%.).!   |
00007780  46 6c 61 67 25 28 69 25  29 3d 21 28 54 65 6d 70  |Flag%(i%)=!(Temp|
00007790  6c 61 74 65 73 25 2b 33  32 29 0d 29 f4 1e 20 20  |lates%+32).)..  |
000077a0  20 46 6c 61 67 25 28 69  25 29 3d 46 6c 61 67 25  | Flag%(i%)=Flag%|
000077b0  28 69 25 29 3e 3e 3e 34  0d 29 fe 1c 20 20 20 46  |(i%)>>>4.)..   F|
000077c0  6c 61 67 25 28 69 25 29  3d 46 6c 61 67 25 28 69  |lag%(i%)=Flag%(i|
000077d0  25 29 83 32 0d 2a 08 1f  20 20 20 e7 20 46 6c 61  |%).2.*..   . Fla|
000077e0  67 25 28 69 25 29 3c 3e  31 20 8c 20 64 72 61 77  |g%(i%)<>1 . draw|
000077f0  25 3d b9 0d 2a 12 07 20  20 ed 0d 2a 1c 07 20 20  |%=..*..  ..*..  |
00007800  cb 0d 2a 26 0b 20 3d 64  72 61 77 25 0d 2a 30 06  |..*&. =draw%.*0.|
00007810  20 3a 0d 2a 3a 13 20 20  dd 20 f2 57 69 6e 64 6f  | :.*:.  . .Windo|
00007820  77 44 72 61 77 0d 2a 44  0f 20 20 69 6e 64 65 6e  |wDraw.*D.  inden|
00007830  74 25 3d 34 0d 2a 4e 2b  20 20 f2 48 65 61 64 65  |t%=4.*N+  .Heade|
00007840  72 28 22 33 2e 31 a0 57  69 6e 64 6f 77 a0 44 72  |r("3.1.Window.Dr|
00007850  61 77 69 6e 67 22 2c 69  6e 64 65 6e 74 25 29 0d  |awing",indent%).|
00007860  2a 58 42 20 20 f2 41 64  64 5f 50 52 4f 43 28 22  |*XB  .Add_PROC("|
00007870  45 76 65 6e 74 5f 44 72  61 77 28 77 69 6e 64 6f  |Event_Draw(windo|
00007880  77 25 2c 78 5f 6f 72 69  67 69 6e 25 2c 79 5f 6f  |w%,x_origin%,y_o|
00007890  72 69 67 69 6e 25 29 22  2c 69 6e 64 65 6e 74 25  |rigin%)",indent%|
000078a0  29 0d 2a 62 17 20 20 c8  8e 20 4e 6f 4f 66 57 69  |).*b.  .. NoOfWi|
000078b0  6e 64 6f 77 73 25 20 ca  0d 2a 6c 47 20 20 20 c9  |ndows% ..*lG   .|
000078c0  20 30 20 20 20 20 3a 20  e7 20 ac 28 74 65 72 73  | 0    : . .(ters|
000078d0  65 25 29 20 8c 20 f2 48  65 61 64 69 6e 67 28 22  |e%) . .Heading("|
000078e0  4e 6f 20 77 69 6e 64 6f  77 73 20 64 65 66 69 6e  |No windows defin|
000078f0  65 64 22 2c 69 6e 64 65  6e 74 25 2b 31 30 29 0d  |ed",indent%+10).|
00007900  2a 76 0a 20 20 20 7f 20  3a 0d 2a 80 2d 20 20 20  |*v.   . :.*.-   |
00007910  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 43 41 53  |  .Add_Line("CAS|
00007920  45 20 77 69 6e 64 6f 77  25 20 4f 46 22 2c 69 6e  |E window% OF",in|
00007930  64 65 6e 74 25 29 0d 2a  8a 1e 20 20 20 20 20 e3  |dent%).*..     .|
00007940  20 69 25 3d 31 20 b8 20  4e 6f 4f 66 57 69 6e 64  | i%=1 . NoOfWind|
00007950  6f 77 73 25 0d 2a 94 2b  20 20 20 20 20 20 78 24  |ows%.*.+      x$|
00007960  3d 22 57 48 45 4e 20 22  2b 57 69 6e 64 6f 77 24  |="WHEN "+Window$|
00007970  28 69 25 29 2b 22 5f 57  69 6e 64 6f 77 25 22 0d  |(i%)+"_Window%".|
00007980  2a 9e 1e 20 20 20 20 20  20 78 24 2b 3d c4 32 35  |*..      x$+=.25|
00007990  2d a9 78 24 2c 22 20 22  29 2b 22 3a 22 0d 2a a8  |-.x$," ")+":".*.|
000079a0  19 20 20 20 20 20 20 20  c8 8e 20 46 6c 61 67 25  |.       .. Flag%|
000079b0  28 69 25 29 20 ca 0d 2a  b2 1c 20 20 20 20 20 20  |(i%) ..*..      |
000079c0  20 c9 20 20 20 20 20 20  20 20 20 20 20 20 20 31  | .             1|
000079d0  20 3a 0d 2a bc 2d 20 20  20 20 20 20 20 20 78 24  | :.*.-        x$|
000079e0  2b 3d 22 20 52 45 4d 20  52 65 64 72 61 77 6e 20  |+=" REM Redrawn |
000079f0  61 75 74 6f 6d 61 74 69  63 61 6c 6c 79 21 22 0d  |automatically!".|
00007a00  2a c6 31 20 20 20 20 20  20 20 20 e7 20 ac 28 74  |*.1        . .(t|
00007a10  65 72 73 65 25 29 20 8c  20 f2 41 64 64 5f 4c 69  |erse%) . .Add_Li|
00007a20  6e 65 28 78 24 2c 69 6e  64 65 6e 74 25 2b 31 29  |ne(x$,indent%+1)|
00007a30  0d 2a d0 17 20 20 20 20  20 20 20 7f 20 20 20 20  |.*..       .    |
00007a40  20 20 20 20 20 20 3a 0d  2a da 35 20 20 20 20 20  |      :.*.5     |
00007a50  20 20 20 78 24 2b 3d 22  20 50 52 4f 43 55 73 65  |   x$+=" PROCUse|
00007a60  72 5f 44 72 61 77 22 2b  57 69 6e 64 6f 77 24 28  |r_Draw"+Window$(|
00007a70  69 25 29 2b 22 57 69 6e  64 6f 77 22 0d 2a e4 23  |i%)+"Window".*.#|
00007a80  20 20 20 20 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |        .Add_Lin|
00007a90  65 28 78 24 2c 69 6e 64  65 6e 74 25 2b 31 29 0d  |e(x$,indent%+1).|
00007aa0  2a ee 0b 20 20 20 20 20  20 cb 0d 2a f8 0a 20 20  |*..      ..*..  |
00007ab0  20 20 20 ed 0d 2b 02 25  20 20 20 20 20 f2 41 64  |   ..+.%     .Ad|
00007ac0  64 5f 4c 69 6e 65 28 22  45 4e 44 43 41 53 45 22  |d_Line("ENDCASE"|
00007ad0  2c 69 6e 64 65 6e 74 25  29 0d 2b 0c 07 20 20 cb  |,indent%).+..  .|
00007ae0  0d 2b 16 12 20 20 f2 41  64 64 5f 52 45 4d 53 28  |.+..  .Add_REMS(|
00007af0  31 29 0d 2b 20 22 20 20  f2 41 64 64 5f 4c 69 6e  |1).+ "  .Add_Lin|
00007b00  65 28 22 45 4e 44 50 52  4f 43 22 2c 69 6e 64 65  |e("ENDPROC",inde|
00007b10  6e 74 25 29 0d 2b 2a 12  20 20 f2 41 64 64 5f 52  |nt%).+*.  .Add_R|
00007b20  45 4d 53 28 32 29 0d 2b  34 18 20 20 20 c8 8e 20  |EMS(2).+4.   .. |
00007b30  4e 6f 4f 66 57 69 6e 64  6f 77 73 25 20 ca 0d 2b  |NoOfWindows% ..+|
00007b40  3e 0e 20 20 20 20 20 c9  20 30 20 3a 0d 2b 48 0b  |>.     . 0 :.+H.|
00007b50  20 20 20 20 20 7f 3a 0d  2b 52 22 20 20 20 20 20  |     .:.+R"     |
00007b60  20 20 20 20 e3 20 69 25  3d 31 20 b8 20 4e 6f 4f  |    . i%=1 . NoO|
00007b70  66 57 69 6e 64 6f 77 73  25 0d 2b 5c 1d 20 20 20  |fWindows%.+\.   |
00007b80  20 20 20 20 20 20 20 20  c8 8e 20 46 6c 61 67 25  |        .. Flag%|
00007b90  28 69 25 29 20 ca 0d 2b  66 21 20 20 20 20 20 20  |(i%) ..+f!      |
00007ba0  20 20 20 20 20 20 c9 20  20 20 20 20 20 20 20 20  |      .         |
00007bb0  20 20 20 20 31 20 3a 0d  2b 70 11 20 20 20 20 20  |    1 :.+p.     |
00007bc0  20 20 20 20 20 20 20 7f  0d 2b 7a 45 20 20 20 20  |       ..+zE    |
00007bd0  20 20 20 20 20 20 20 20  f2 41 64 64 5f 50 52 4f  |        .Add_PRO|
00007be0  43 28 22 55 73 65 72 5f  44 72 61 77 22 2b 57 69  |C("User_Draw"+Wi|
00007bf0  6e 64 6f 77 24 28 69 25  29 2b 22 57 69 6e 64 6f  |ndow$(i%)+"Windo|
00007c00  77 22 2c 69 6e 64 65 6e  74 25 2b 36 29 0d 2b 84  |w",indent%+6).+.|
00007c10  4a 20 20 20 20 20 20 20  20 20 20 20 20 e7 20 70  |J            . p|
00007c20  72 6f 6c 69 78 25 20 f2  48 65 61 64 69 6e 67 28  |rolix% .Heading(|
00007c30  22 55 73 65 72 20 74 6f  20 70 72 6f 76 69 64 65  |"User to provide|
00007c40  20 63 6f 64 65 20 68 65  72 65 22 2c 69 6e 64 65  | code here",inde|
00007c50  6e 74 25 2b 31 30 29 0d  2b 8e 2e 20 20 20 20 20  |nt%+10).+..     |
00007c60  20 20 20 20 20 20 20 f2  41 64 64 5f 4c 69 6e 65  |       .Add_Line|
00007c70  28 22 45 4e 44 50 52 4f  43 22 2c 69 6e 64 65 6e  |("ENDPROC",inden|
00007c80  74 25 2b 36 29 0d 2b 98  1c 20 20 20 20 20 20 20  |t%+6).+..       |
00007c90  20 20 20 20 20 f2 41 64  64 5f 52 45 4d 53 28 32  |     .Add_REMS(2|
00007ca0  29 0d 2b a2 10 20 20 20  20 20 20 20 20 20 20 20  |).+..           |
00007cb0  cb 0d 2b ac 0e 20 20 20  20 20 20 20 20 20 ed 0d  |..+..         ..|
00007cc0  2b b6 09 20 20 20 20 cb  0d 2b c0 38 20 20 f2 46  |+..    ..+.8  .F|
00007cd0  6f 6f 74 65 72 31 28 22  45 6e 64 20 6f 66 20 57  |ooter1("End of W|
00007ce0  69 6e 64 6f 77 20 44 72  61 77 69 6e 67 20 52 6f  |indow Drawing Ro|
00007cf0  75 74 69 6e 65 73 22 2c  69 6e 64 65 6e 74 25 29  |utines",indent%)|
00007d00  0d 2b ca 07 20 20 e1 0d  2b d4 05 3a 0d 2b de 11  |.+..  ..+..:.+..|
00007d10  20 dd 20 a4 4d 65 6e 75  45 78 69 73 74 0d 2b e8  | . .MenuExist.+.|
00007d20  21 20 ea 20 69 25 2c 6d  65 6e 75 25 20 3a 20 69  |! . i%,menu% : i|
00007d30  25 3d 2d 31 20 3a 20 6d  65 6e 75 25 3d a3 0d 2b  |%=-1 : menu%=..+|
00007d40  f2 16 20 c8 8e 20 4e 6f  4f 66 57 69 6e 64 6f 77  |.. .. NoOfWindow|
00007d50  73 25 20 ca 0d 2b fc 09  20 20 c9 20 30 0d 2c 06  |s% ..+..  . 0.,.|
00007d60  17 20 20 20 e7 20 42 61  72 25 20 8c 20 6d 65 6e  |.   . Bar% . men|
00007d70  75 25 3d b9 0d 2c 10 07  20 20 7f 0d 2c 1a 10 20  |u%=..,..  ..,.. |
00007d80  20 20 f5 20 3a 20 69 25  2b 3d 31 0d 2c 24 2a 20  |  . : i%+=1.,$* |
00007d90  20 20 20 e7 20 a7 c0 4d  65 6e 75 24 28 69 25 2c  |   . ..Menu$(i%,|
00007da0  31 29 29 2c 22 5c 22 29  3c 3e 30 20 8c 20 6d 65  |1)),"\")<>0 . me|
00007db0  6e 75 25 3d b9 0d 2c 2e  22 20 20 20 fd 20 69 25  |nu%=..,."   . i%|
00007dc0  3d 4e 6f 4f 66 57 69 6e  64 6f 77 73 25 20 84 20  |=NoOfWindows% . |
00007dd0  6d 65 6e 75 25 3d b9 0d  2c 38 06 20 cb 0d 2c 42  |menu%=..,8. ..,B|
00007de0  0a 3d 6d 65 6e 75 25 0d  2c 4c 06 20 3a 0d 2c 56  |.=menu%.,L. :.,V|
00007df0  05 20 0d 2c 60 12 20 dd  20 a4 4d 6f 75 73 65 43  |. .,`. . .MouseC|
00007e00  6c 69 63 6b 0d 2c 6a 1d  20 ea 20 69 25 2c 63 6c  |lick.,j. . i%,cl|
00007e10  69 63 6b 25 20 20 20 3a  20 63 6c 69 63 6b 25 3d  |ick%   : click%=|
00007e20  a3 0d 2c 74 16 20 c8 8e  20 4e 6f 4f 66 57 69 6e  |..,t. .. NoOfWin|
00007e30  64 6f 77 73 25 20 ca 0d  2c 7e 20 20 20 c9 20 30  |dows% ..,~   . 0|
00007e40  20 3a 20 e7 20 42 61 72  25 3c 3e 30 20 8c 20 63  | : . Bar%<>0 . c|
00007e50  6c 69 63 6b 25 3d b9 0d  2c 88 07 20 20 7f 0d 2c  |lick%=..,..  ..,|
00007e60  92 17 20 20 e7 20 42 61  72 25 20 8c 20 63 6c 69  |..  . Bar% . cli|
00007e70  63 6b 25 3d b9 0d 2c 9c  1b 20 20 e3 20 69 25 3d  |ck%=..,..  . i%=|
00007e80  31 20 b8 20 4e 6f 4f 66  57 69 6e 64 6f 77 73 25  |1 . NoOfWindows%|
00007e90  0d 2c a6 1f 20 20 20 54  65 6d 70 6c 61 74 65 73  |.,..   Templates|
00007ea0  25 21 30 3d 57 69 6e 64  6f 77 25 28 69 25 29 0d  |%!0=Window%(i%).|
00007eb0  2c b0 2a 20 20 20 c8 99  20 22 57 69 6d 70 5f 47  |,.*   .. "Wimp_G|
00007ec0  65 74 57 69 6e 64 6f 77  49 6e 66 6f 22 2c 2c 54  |etWindowInfo",,T|
00007ed0  65 6d 70 6c 61 74 65 73  25 0d 2c ba 1e 20 20 20  |emplates%.,..   |
00007ee0  46 6c 61 67 25 28 69 25  29 3d 54 65 6d 70 6c 61  |Flag%(i%)=Templa|
00007ef0  74 65 73 25 21 36 34 0d  2c c4 1f 20 20 20 46 6c  |tes%!64.,..   Fl|
00007f00  61 67 25 28 69 25 29 3d  46 6c 61 67 25 28 69 25  |ag%(i%)=Flag%(i%|
00007f10  29 3e 3e 3e 31 32 0d 2c  ce 17 20 20 20 c8 8e 20  |)>>>12.,..   .. |
00007f20  57 69 6e 64 6f 77 24 28  69 25 29 20 ca 0d 2c d8  |Window$(i%) ..,.|
00007f30  2d 20 20 20 20 c9 20 22  53 61 76 65 22 2c 22 73  |-    . "Save","s|
00007f40  61 76 65 22 2c 22 53 41  56 45 22 20 3a 20 46 6c  |ave","SAVE" : Fl|
00007f50  61 67 25 28 69 25 29 3d  2d 31 0d 2c e2 09 20 20  |ag%(i%)=-1.,..  |
00007f60  20 20 7f 0d 2c ec 22 20  20 20 20 20 e7 20 46 6c  |  ..,."     . Fl|
00007f70  61 67 25 28 69 25 29 3c  3e 30 20 8c 20 63 6c 69  |ag%(i%)<>0 . cli|
00007f80  63 6b 25 3d b9 0d 2c f6  08 20 20 20 cb 0d 2d 00  |ck%=..,..   ..-.|
00007f90  07 20 20 ed 0d 2d 0a 06  20 cb 0d 2d 14 0b 3d 63  |.  ..-.. ..-..=c|
00007fa0  6c 69 63 6b 25 0d 2d 1e  05 3a 0d 2d 28 11 dd 20  |lick%.-..:.-(.. |
00007fb0  f2 4d 6f 75 73 65 43 6c  69 63 6b 0d 2d 32 0e 20  |.MouseClick.-2. |
00007fc0  69 6e 64 65 6e 74 25 3d  34 0d 2d 3c 29 20 20 f2  |indent%=4.-<)  .|
00007fd0  48 65 61 64 65 72 28 22  33 2e 32 a0 4d 6f 75 73  |Header("3.2.Mous|
00007fe0  65 a0 43 6c 69 63 6b 73  22 2c 69 6e 64 65 6e 74  |e.Clicks",indent|
00007ff0  25 29 0d 2d 46 48 20 20  f2 41 64 64 5f 50 52 4f  |%).-FH  .Add_PRO|
00008000  43 28 22 45 76 65 6e 74  5f 4d 6f 75 73 65 43 6c  |C("Event_MouseCl|
00008010  69 63 6b 28 77 69 6e 64  6f 77 25 2c 69 63 6f 6e  |ick(window%,icon|
00008020  25 2c 62 75 74 74 6f 6e  25 2c 78 25 2c 79 25 29  |%,button%,x%,y%)|
00008030  22 2c 69 6e 64 65 6e 74  25 29 0d 2d 50 2a 20 20  |",indent%).-P*  |
00008040  f2 41 64 64 5f 4c 69 6e  65 28 22 43 41 53 45 20  |.Add_Line("CASE |
00008050  77 69 6e 64 6f 77 25 20  4f 46 22 2c 69 6e 64 65  |window% OF",inde|
00008060  6e 74 25 29 0d 2d 5a 0f  20 20 f2 42 61 72 4d 6f  |nt%).-Z.  .BarMo|
00008070  75 73 65 0d 2d 64 17 20  20 c8 8e 20 4e 6f 4f 66  |use.-d.  .. NoOf|
00008080  57 69 6e 64 6f 77 73 25  20 ca 0d 2d 6e 0c 20 20  |Windows% ..-n.  |
00008090  20 c9 20 30 20 3a 0d 2d  78 40 20 20 20 20 e7 20  | . 0 :.-x@    . |
000080a0  ac 28 74 65 72 73 65 25  29 20 8c 20 f2 48 65 61  |.(terse%) . .Hea|
000080b0  64 69 6e 67 28 22 4e 6f  20 77 69 6e 64 6f 77 73  |ding("No windows|
000080c0  20 64 65 66 69 6e 65 64  21 22 2c 69 6e 64 65 6e  | defined!",inden|
000080d0  74 25 2b 31 30 29 0d 2d  82 08 20 20 20 7f 0d 2d  |t%+10).-..   ..-|
000080e0  8c 16 20 20 20 20 f2 4d  6f 75 73 65 43 6f 6e 74  |..    .MouseCont|
000080f0  65 6e 74 73 0d 2d 96 07  20 20 cb 0d 2d a0 22 20  |ents.-..  ..-." |
00008100  20 f2 41 64 64 5f 4c 69  6e 65 28 22 45 4e 44 43  | .Add_Line("ENDC|
00008110  41 53 45 22 2c 69 6e 64  65 6e 74 25 29 0d 2d aa  |ASE",indent%).-.|
00008120  12 20 20 f2 41 64 64 5f  52 45 4d 53 28 31 29 0d  |.  .Add_REMS(1).|
00008130  2d b4 22 20 20 f2 41 64  64 5f 4c 69 6e 65 28 22  |-."  .Add_Line("|
00008140  45 4e 44 50 52 4f 43 22  2c 69 6e 64 65 6e 74 25  |ENDPROC",indent%|
00008150  29 0d 2d be 24 20 20 e7  20 4e 6f 4f 66 57 69 6e  |).-.$  . NoOfWin|
00008160  64 6f 77 73 25 3c 3e 30  20 8c 20 f2 4d 6f 75 73  |dows%<>0 . .Mous|
00008170  65 53 75 62 73 0d 2d c8  3a 20 20 f2 46 6f 6f 74  |eSubs.-.:  .Foot|
00008180  65 72 31 28 22 45 6e 64  20 6f 66 20 44 65 61 6c  |er1("End of Deal|
00008190  69 6e 67 20 77 69 74 68  20 4d 6f 75 73 65 20 43  |ing with Mouse C|
000081a0  6c 69 63 6b 73 22 2c 69  6e 64 65 6e 74 25 29 0d  |licks",indent%).|
000081b0  2d d2 07 20 20 e1 0d 2d  dc 06 20 3a 0d 2d e6 10  |-..  ..-.. :.-..|
000081c0  20 dd 20 f2 42 61 72 4d  6f 75 73 65 0d 2d f0 0f  | . .BarMouse.-..|
000081d0  20 20 c8 8e 20 42 61 72  25 20 ca 0d 2d fa 0c 20  |  .. Bar% ..-.. |
000081e0  20 20 c9 20 b9 20 3a 0d  2e 04 26 20 20 20 20 78  |  . . :...&    x|
000081f0  24 3d 22 57 48 45 4e 20  42 61 72 5f 57 69 6e 64  |$="WHEN Bar_Wind|
00008200  6f 77 25 20 20 20 20 20  20 20 20 3a 22 0d 2e 0e  |ow%        :"...|
00008210  34 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 78  |4    .Add_Line(x|
00008220  24 2b 22 20 50 52 4f 43  55 73 65 72 5f 4d 6f 75  |$+" PROCUser_Mou|
00008230  73 65 42 61 72 22 2c 69  6e 64 65 6e 74 25 2b 31  |seBar",indent%+1|
00008240  29 0d 2e 18 0a 20 20 20  7f 20 3a 0d 2e 22 3f 20  |)....   . :.."? |
00008250  20 20 20 78 24 3d 22 57  48 45 4e 20 42 61 72 5f  |   x$="WHEN Bar_|
00008260  57 69 6e 64 6f 77 25 20  20 20 20 20 20 20 20 3a  |Window%        :|
00008270  20 52 45 4d 20 4e 6f 20  49 63 6f 6e 20 6f 6e 20  | REM No Icon on |
00008280  69 63 6f 6e 20 62 61 72  21 22 0d 2e 2c 2b 20 20  |icon bar!"..,+  |
00008290  20 20 e7 20 ac 74 65 72  73 65 25 20 8c 20 f2 41  |  . .terse% . .A|
000082a0  64 64 5f 4c 69 6e 65 28  78 24 2c 69 6e 64 65 6e  |dd_Line(x$,inden|
000082b0  74 25 2b 31 29 0d 2e 36  07 20 20 cb 0d 2e 40 06  |t%+1)..6.  ...@.|
000082c0  20 e1 0d 2e 4a 06 20 3a  0d 2e 54 15 20 dd 20 f2  | ...J. :..T. . .|
000082d0  4d 6f 75 73 65 43 6f 6e  74 65 6e 74 73 0d 2e 5e  |MouseContents..^|
000082e0  0e 20 ea 20 6e 6e 25 2c  6d 6d 25 0d 2e 68 1b 20  |. . nn%,mm%..h. |
000082f0  20 e3 20 69 25 3d 31 20  b8 20 4e 6f 4f 66 57 69  | . i%=1 . NoOfWi|
00008300  6e 64 6f 77 73 25 0d 2e  72 1a 20 20 c8 8e 20 c0  |ndows%..r.  .. .|
00008310  57 69 6e 64 6f 77 24 28  69 25 29 2c 34 29 20 ca  |Window$(i%),4) .|
00008320  0d 2e 7c 2c 20 20 20 c9  20 22 53 61 76 65 22 2c  |..|,   . "Save",|
00008330  22 73 61 76 65 22 2c 22  53 41 56 45 22 20 3a 20  |"save","SAVE" : |
00008340  46 6c 61 67 25 28 69 25  29 3d 2d 31 0d 2e 86 0a  |Flag%(i%)=-1....|
00008350  20 20 20 7f 20 3a 0d 2e  90 20 20 20 20 20 54 65  |   . :...     Te|
00008360  6d 70 6c 61 74 65 73 25  21 30 3d 57 69 6e 64 6f  |mplates%!0=Windo|
00008370  77 25 28 69 25 29 0d 2e  9a 2b 20 20 20 20 c8 99  |w%(i%)...+    ..|
00008380  20 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  | "Wimp_GetWindow|
00008390  49 6e 66 6f 22 2c 2c 54  65 6d 70 6c 61 74 65 73  |Info",,Templates|
000083a0  25 0d 2e a4 19 20 20 20  20 6e 6e 25 3d 54 65 6d  |%....    nn%=Tem|
000083b0  70 6c 61 74 65 73 25 21  38 38 0d 2e ae 1e 20 20  |plates%!88....  |
000083c0  20 20 6d 6d 25 3d 54 65  6d 70 6c 61 74 65 73 25  |  mm%=Templates%|
000083d0  21 28 39 32 2b 31 36 29  0d 2e b8 1f 20 20 20 20  |!(92+16)....    |
000083e0  46 6c 61 67 25 28 69 25  29 3d 54 65 6d 70 6c 61  |Flag%(i%)=Templa|
000083f0  74 65 73 25 21 36 34 0d  2e c2 20 20 20 20 20 46  |tes%!64...     F|
00008400  6c 61 67 25 28 69 25 29  3d 46 6c 61 67 25 28 69  |lag%(i%)=Flag%(i|
00008410  25 29 3e 3e 3e 31 32 0d  2e cc 21 20 20 20 20 c8  |%)>>>12...!    .|
00008420  8e 20 6e 6e 25 3d 30 20  84 20 46 6c 61 67 25 28  |. nn%=0 . Flag%(|
00008430  69 25 29 3c 3e 30 20 ca  0d 2e d6 0e 20 20 20 20  |i%)<>0 .....    |
00008440  20 c9 20 20 b9 3a 0d 2e  e0 0c 20 20 20 20 20 7f  | .  .:....     .|
00008450  20 3a 0d 2e ea 32 20 20  20 20 20 20 70 61 74 74  | :...2      patt|
00008460  65 72 6e 25 3d 28 31 3c  3c 31 32 29 2b 28 31 3c  |ern%=(1<<12)+(1<|
00008470  3c 31 33 29 2b 28 31 3c  3c 31 34 29 2b 28 31 3c  |<13)+(1<<14)+(1<|
00008480  3c 31 35 29 0d 2e f4 3f  20 20 20 20 20 20 c8 99  |<15)...?      ..|
00008490  20 22 57 69 6d 70 5f 57  68 69 63 68 49 63 6f 6e  | "Wimp_WhichIcon|
000084a0  22 2c 57 69 6e 64 6f 77  25 28 69 25 29 2c 54 65  |",Window%(i%),Te|
000084b0  6d 70 6c 61 74 65 73 25  2c 70 61 74 74 65 72 6e  |mplates%,pattern|
000084c0  25 2c 30 0d 2e fe 0f 20  20 20 20 20 20 6d 6d 25  |%,0....      mm%|
000084d0  3d 30 0d 2f 08 2e 20 20  20 20 20 20 c8 95 20 28  |=0./..      .. (|
000084e0  54 65 6d 70 6c 61 74 65  73 25 21 6d 6d 25 29 3c  |Templates%!mm%)<|
000084f0  3e 2d 31 20 3a 20 6d 6d  25 2b 3d 34 20 3a 20 ce  |>-1 : mm%+=4 : .|
00008500  0d 2f 12 15 20 20 20 20  20 20 6d 6d 25 3d 28 6d  |./..      mm%=(m|
00008510  6d 25 81 34 29 0d 2f 1c  22 20 20 20 20 20 20 e7  |m%.4)./."      .|
00008520  20 6e 6e 25 3c 3e 6d 6d  25 20 8c 20 46 6c 61 67  | nn%<>mm% . Flag|
00008530  25 28 69 25 29 3d 31 0d  2f 26 09 20 20 20 20 cb  |%(i%)=1./&.    .|
00008540  0d 2f 30 07 20 20 cb 0d  2f 3a 0b 20 20 f2 4d 69  |./0.  ../:.  .Mi|
00008550  63 65 0d 2f 44 07 20 20  ed 0d 2f 4e 06 20 e1 0d  |ce./D.  ../N. ..|
00008560  2f 58 06 20 3a 0d 2f 62  0c 20 dd 20 f2 4d 69 63  |/X. :./b. . .Mic|
00008570  65 0d 2f 6c 27 20 20 78  24 3d 22 57 48 45 4e 20  |e./l'  x$="WHEN |
00008580  22 2b 57 69 6e 64 6f 77  24 28 69 25 29 2b 22 5f  |"+Window$(i%)+"_|
00008590  57 69 6e 64 6f 77 25 22  0d 2f 76 1b 20 20 78 24  |Window%"./v.  x$|
000085a0  2b 3d c4 32 34 2d a9 78  24 2c 22 20 22 29 2b 22  |+=.24-.x$," ")+"|
000085b0  3a 20 22 0d 2f 80 18 20  20 20 20 20 20 c8 8e 20  |: "./..      .. |
000085c0  46 6c 61 67 25 28 69 25  29 20 ca 0d 2f 8a 1f 20  |Flag%(i%) ../.. |
000085d0  20 20 20 20 20 20 c9 20  30 20 20 20 20 3a 20 c8  |      . 0    : .|
000085e0  8e 20 74 65 72 73 65 25  20 ca 0d 2f 94 1b 20 20  |. terse% ../..  |
000085f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00008600  20 20 c9 20 a3 0d 2f 9e  3d 20 20 20 20 20 20 20  |  . ../.=       |
00008610  20 20 20 20 20 20 20 20  20 20 20 20 20 20 78 24  |              x$|
00008620  2b 3d 22 52 45 4d 20 20  4d 6f 75 73 65 20 63 6c  |+="REM  Mouse cl|
00008630  69 63 6b 73 20 61 72 65  20 69 67 6e 6f 72 65 64  |icks are ignored|
00008640  21 22 0d 2f a8 30 20 20  20 20 20 20 20 20 20 20  |!"./.0          |
00008650  20 20 20 20 20 20 20 20  20 20 20 f2 41 64 64 5f  |           .Add_|
00008660  4c 69 6e 65 28 78 24 2c  69 6e 64 65 6e 74 25 2b  |Line(x$,indent%+|
00008670  31 29 0d 2f b2 18 20 20  20 20 20 20 20 20 20 20  |1)./..          |
00008680  20 20 20 20 20 20 20 20  20 cb 0d 2f bc 13 20 20  |         ../..  |
00008690  20 20 20 20 20 c9 20 2d  31 20 20 20 3a 0d 2f c6  |     . -1   :./.|
000086a0  42 20 20 20 20 20 20 20  7f 20 3a 20 78 24 2b 3d  |B       . : x$+=|
000086b0  22 50 52 4f 43 55 73 65  72 5f 4d 6f 75 73 65 22  |"PROCUser_Mouse"|
000086c0  2b 57 69 6e 64 6f 77 24  28 69 25 29 2b 22 28 20  |+Window$(i%)+"( |
000086d0  62 75 74 74 6f 6e 25 2c  69 63 6f 6e 25 29 22 0d  |button%,icon%)".|
000086e0  2f d0 2e 20 20 20 20 20  20 20 20 20 20 20 20 20  |/..             |
000086f0  20 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |      .Add_Line(|
00008700  78 24 2c 69 6e 64 65 6e  74 25 2b 31 29 0d 2f da  |x$,indent%+1)./.|
00008710  18 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00008720  20 20 20 20 cb 0d 2f e4  06 20 e1 0d 2f ee 06 20  |    ../.. ../.. |
00008730  3a 0d 2f f8 11 20 dd 20  f2 4d 6f 75 73 65 53 75  |:./.. . .MouseSu|
00008740  62 73 0d 30 02 16 20 20  e7 20 42 61 72 25 20 8c  |bs.0..  . Bar% .|
00008750  20 f2 42 61 72 53 75 62  0d 30 0c 1b 20 20 e3 20  | .BarSub.0..  . |
00008760  69 25 3d 31 20 b8 20 4e  6f 4f 66 57 69 6e 64 6f  |i%=1 . NoOfWindo|
00008770  77 73 25 0d 30 16 16 20  20 20 20 c8 8e 20 46 6c  |ws%.0..    .. Fl|
00008780  61 67 25 28 69 25 29 20  ca 0d 30 20 12 20 20 20  |ag%(i%) ..0 .   |
00008790  20 20 20 c9 20 30 2c 2d  31 20 3a 0d 30 2a 0d 20  |   . 0,-1 :.0*. |
000087a0  20 20 20 20 20 7f 20 3a  0d 30 34 18 20 20 20 20  |     . :.04.    |
000087b0  20 20 20 20 f2 41 64 64  5f 52 45 4d 53 28 32 29  |    .Add_REMS(2)|
000087c0  0d 30 3e 3a 20 20 20 20  20 20 20 20 78 24 3d 22  |.0>:        x$="|
000087d0  55 73 65 72 5f 4d 6f 75  73 65 22 2b 57 69 6e 64  |User_Mouse"+Wind|
000087e0  6f 77 24 28 69 25 29 2b  22 28 20 62 75 74 74 6f  |ow$(i%)+"( butto|
000087f0  6e 25 2c 69 63 6f 6e 25  29 22 0d 30 48 23 20 20  |n%,icon%)".0H#  |
00008800  20 20 20 20 20 20 f2 41  64 64 5f 50 52 4f 43 28  |      .Add_PROC(|
00008810  78 24 2c 69 6e 64 65 6e  74 25 2b 32 29 0d 30 52  |x$,indent%+2).0R|
00008820  90 20 20 20 20 20 20 20  20 f2 41 64 64 5f 4c 69  |.        .Add_Li|
00008830  6e 65 28 22 50 52 4f 43  57 69 6d 70 5f 57 69 6e  |ne("PROCWimp_Win|
00008840  64 6f 77 41 6c 65 72 74  28 22 2b 22 22 22 22 2b  |dowAlert("+""""+|
00008850  57 69 6e 64 6f 77 24 28  69 25 29 2b 22 22 22 22  |Window$(i%)+""""|
00008860  2b 22 2c 22 2b 22 22 22  4d 6f 75 73 65 20 62 75  |+","+"""Mouse bu|
00008870  74 74 6f 6e 3d 22 22 22  2b 22 2b 53 54 52 24 62  |tton="""+"+STR$b|
00008880  75 74 74 6f 6e 25 2b 22  2b 22 22 22 69 63 6f 6e  |utton%+"+"""icon|
00008890  3d 22 22 22 2b 22 2b 53  54 52 24 69 63 6f 6e 25  |="""+"+STR$icon%|
000088a0  29 22 2c 69 6e 64 65 6e  74 25 2b 33 29 0d 30 5c  |)",indent%+3).0\|
000088b0  18 20 20 20 20 20 20 20  20 f2 41 64 64 5f 52 45  |.        .Add_RE|
000088c0  4d 53 28 31 29 0d 30 66  2a 20 20 20 20 20 20 20  |MS(1).0f*       |
000088d0  20 f2 41 64 64 5f 4c 69  6e 65 28 22 45 4e 44 50  | .Add_Line("ENDP|
000088e0  52 4f 43 22 2c 69 6e 64  65 6e 74 25 2b 32 29 0d  |ROC",indent%+2).|
000088f0  30 70 0a 20 20 20 20 20  cb 0d 30 7a 08 20 20 20  |0p.     ..0z.   |
00008900  ed 0d 30 84 06 20 e1 0d  30 8e 06 20 3a 0d 30 98  |..0.. ..0.. :.0.|
00008910  0e 20 dd 20 f2 42 61 72  53 75 62 0d 30 a2 12 20  |. . .BarSub.0.. |
00008920  20 f2 41 64 64 5f 52 45  4d 53 28 32 29 0d 30 ac  | .Add_REMS(2).0.|
00008930  2a 20 20 f2 41 64 64 5f  50 52 4f 43 28 22 55 73  |*  .Add_PROC("Us|
00008940  65 72 5f 4d 6f 75 73 65  42 61 72 22 2c 69 6e 64  |er_MouseBar",ind|
00008950  65 6e 74 25 2b 32 29 0d  30 b6 11 20 20 20 20 20  |ent%+2).0..     |
00008960  63 6c 69 63 6b 25 3d a3  0d 30 c0 1e 20 20 20 20  |click%=..0..    |
00008970  20 e3 20 69 25 3d 31 20  b8 20 4e 6f 4f 66 57 69  | . i%=1 . NoOfWi|
00008980  6e 64 6f 77 73 25 0d 30  ca 10 20 20 20 20 20 20  |ndows%.0..      |
00008990  c8 8e 20 b9 20 ca 0d 30  d4 18 20 20 20 20 20 20  |.. . ..0..      |
000089a0  20 c9 20 20 43 6c 69 63  6b 25 28 69 25 29 0d 30  | .  Click%(i%).0|
000089b0  de 43 20 20 20 20 20 20  20 20 78 24 3d 22 50 52  |.C        x$="PR|
000089c0  4f 43 57 69 6d 70 5f 57  69 6e 64 6f 77 42 72 69  |OCWimp_WindowBri|
000089d0  6e 67 54 6f 54 6f 70 28  22 2b 57 69 6e 64 6f 77  |ngToTop("+Window|
000089e0  24 28 69 25 29 2b 22 5f  57 69 6e 64 6f 77 25 29  |$(i%)+"_Window%)|
000089f0  22 0d 30 e8 23 20 20 20  20 20 20 20 20 f2 41 64  |".0.#        .Ad|
00008a00  64 5f 4c 69 6e 65 28 78  24 2c 69 6e 64 65 6e 74  |d_Line(x$,indent|
00008a10  25 2b 33 29 0d 30 f2 14  20 20 20 20 20 20 20 20  |%+3).0..        |
00008a20  63 6c 69 63 6b 25 3d b9  0d 30 fc 0b 20 20 20 20  |click%=..0..    |
00008a30  20 20 cb 0d 31 06 0a 20  20 20 20 20 ed 0d 31 10  |  ..1..     ..1.|
00008a40  16 20 20 20 20 20 20 c8  8e 20 70 72 6f 6c 69 78  |.      .. prolix|
00008a50  25 20 ca 0d 31 1a 0d 20  20 20 20 20 20 c9 20 b9  |% ..1..      . .|
00008a60  0d 31 24 55 20 20 20 20  20 20 20 e7 20 ac 28 63  |.1$U       . .(c|
00008a70  6c 69 63 6b 25 29 20 20  8c 20 f2 48 65 61 64 69  |lick%)  . .Headi|
00008a80  6e 67 28 22 55 73 65 20  50 52 4f 43 57 69 6d 70  |ng("Use PROCWimp|
00008a90  5f 57 69 6e 64 6f 77 42  72 69 6e 67 54 6f 54 6f  |_WindowBringToTo|
00008aa0  70 28 29 20 68 65 72 65  20 22 2c 69 6e 64 65 6e  |p() here ",inden|
00008ab0  74 25 2b 38 29 0d 31 2e  0b 20 20 20 20 20 20 cb  |t%+8).1..      .|
00008ac0  0d 31 38 11 20 f2 41 64  64 5f 52 45 4d 53 28 31  |.18. .Add_REMS(1|
00008ad0  29 0d 31 42 23 20 f2 41  64 64 5f 4c 69 6e 65 28  |).1B# .Add_Line(|
00008ae0  22 45 4e 44 50 52 4f 43  22 2c 69 6e 64 65 6e 74  |"ENDPROC",indent|
00008af0  25 2b 32 29 0d 31 4c 06  20 e1 0d 31 56 05 3a 0d  |%+2).1L. ..1V.:.|
00008b00  31 60 0d 20 20 dd 20 a4  4b 65 79 73 0d 31 6a 19  |1`.  . .Keys.1j.|
00008b10  20 20 ea 20 77 72 69 74  65 25 20 3a 20 77 72 69  |  . write% : wri|
00008b20  74 65 25 3d a3 0d 31 74  1a 20 20 c8 8e 20 c0 57  |te%=..1t.  .. .W|
00008b30  69 6e 64 6f 77 24 28 69  25 29 2c 34 29 20 ca 0d  |indow$(i%),4) ..|
00008b40  31 7e 29 20 20 20 c9 20  22 53 41 56 45 22 2c 22  |1~)   . "SAVE","|
00008b50  53 61 76 65 22 2c 22 73  61 76 65 22 20 20 3a 20  |Save","save"  : |
00008b60  77 72 69 74 65 25 3d 31  0d 31 88 0a 20 20 20 7f  |write%=1.1..   .|
00008b70  20 3a 0d 31 92 30 20 20  20 20 70 61 74 74 65 72  | :.1.0    patter|
00008b80  6e 25 3d 28 31 3c 3c 31  32 29 2b 28 31 3c 3c 31  |n%=(1<<12)+(1<<1|
00008b90  33 29 2b 28 31 3c 3c 31  34 29 2b 28 31 3c 3c 31  |3)+(1<<14)+(1<<1|
00008ba0  35 29 0d 31 9c 44 20 20  20 20 c8 99 20 22 57 69  |5).1.D    .. "Wi|
00008bb0  6d 70 5f 57 68 69 63 68  49 63 6f 6e 22 2c 57 69  |mp_WhichIcon",Wi|
00008bc0  6e 64 6f 77 25 28 69 25  29 2c 54 65 6d 70 6c 61  |ndow%(i%),Templa|
00008bd0  74 65 73 25 2c 70 61 74  74 65 72 6e 25 2c 70 61  |tes%,pattern%,pa|
00008be0  74 74 65 72 6e 25 0d 31  a6 27 20 20 20 20 e7 20  |ttern%.1.'    . |
00008bf0  28 54 65 6d 70 6c 61 74  65 73 25 21 30 29 3c 3e  |(Templates%!0)<>|
00008c00  2d 31 20 8c 20 77 72 69  74 65 25 3d b9 0d 31 b0  |-1 . write%=..1.|
00008c10  07 20 20 cb 0d 31 ba 0d  20 20 3d 77 72 69 74 65  |.  ..1..  =write|
00008c20  25 0d 31 c4 06 20 3a 0d  31 ce 0d 20 20 dd 20 f2  |%.1.. :.1..  . .|
00008c30  4b 65 79 73 0d 31 d8 0f  20 20 69 6e 64 65 6e 74  |Keys.1..  indent|
00008c40  25 3d 34 0d 31 e2 28 20  20 f2 48 65 61 64 65 72  |%=4.1.(  .Header|
00008c50  28 22 33 2e 33 a0 4b 65  79 a0 50 72 65 73 73 65  |("3.3.Key.Presse|
00008c60  73 22 2c 69 6e 64 65 6e  74 25 29 0d 31 ec 3d 20  |s",indent%).1.= |
00008c70  20 f2 41 64 64 5f 50 52  4f 43 28 22 45 76 65 6e  | .Add_PROC("Even|
00008c80  74 5f 4b 65 79 50 72 65  73 73 28 77 69 6e 64 6f  |t_KeyPress(windo|
00008c90  77 25 2c 69 63 6f 6e 25  2c 6b 65 79 25 29 22 2c  |w%,icon%,key%)",|
00008ca0  69 6e 64 65 6e 74 25 29  0d 31 f6 17 20 20 c8 8e  |indent%).1..  ..|
00008cb0  20 4e 6f 4f 66 57 69 6e  64 6f 77 73 25 20 ca 0d  | NoOfWindows% ..|
00008cc0  32 00 09 20 20 c9 20 30  0d 32 0a 3f 20 20 20 e7  |2..  . 0.2.?   .|
00008cd0  20 ac 28 74 65 72 73 65  25 29 20 8c 20 f2 48 65  | .(terse%) . .He|
00008ce0  61 64 69 6e 67 28 22 4e  6f 20 77 69 6e 64 6f 77  |ading("No window|
00008cf0  73 20 64 65 66 69 6e 65  64 21 22 2c 69 6e 64 65  |s defined!",inde|
00008d00  6e 74 25 2b 31 30 29 0d  32 14 07 20 20 7f 0d 32  |nt%+10).2..  ..2|
00008d10  1e 2c 20 20 f2 41 64 64  5f 4c 69 6e 65 28 22 43  |.,  .Add_Line("C|
00008d20  41 53 45 20 77 69 6e 64  6f 77 25 20 4f 46 22 2c  |ASE window% OF",|
00008d30  69 6e 64 65 6e 74 25 2b  33 29 0d 32 28 1b 20 20  |indent%+3).2(.  |
00008d40  e3 20 69 25 3d 31 20 b8  20 4e 6f 4f 66 57 69 6e  |. i%=1 . NoOfWin|
00008d50  64 6f 77 73 25 0d 32 32  29 20 20 20 20 78 24 3d  |dows%.22)    x$=|
00008d60  22 57 48 45 4e 20 22 2b  57 69 6e 64 6f 77 24 28  |"WHEN "+Window$(|
00008d70  69 25 29 2b 22 5f 57 69  6e 64 6f 77 25 22 0d 32  |i%)+"_Window%".2|
00008d80  3c 1d 20 20 20 20 78 24  2b 3d c4 32 34 2d a9 78  |<.    x$+=.24-.x|
00008d90  24 2c 22 20 22 29 2b 22  3a 20 22 0d 32 46 12 20  |$," ")+": ".2F. |
00008da0  20 20 20 c8 8e 20 a4 4b  65 79 73 20 ca 0d 32 50  |   .. .Keys ..2P|
00008db0  0d 20 20 20 20 c9 20 31  20 3a 0d 32 5a 0b 20 20  |.    . 1 :.2Z.  |
00008dc0  20 20 c9 20 b9 0d 32 64  50 20 20 20 20 20 f2 41  |  . ..2dP     .A|
00008dd0  64 64 5f 4c 69 6e 65 28  78 24 2b 22 50 52 4f 43  |dd_Line(x$+"PROC|
00008de0  55 73 65 72 5f 4b 65 79  50 72 65 73 73 22 2b 57  |User_KeyPress"+W|
00008df0  69 6e 64 6f 77 24 28 69  25 29 2b 22 28 20 69 63  |indow$(i%)+"( ic|
00008e00  6f 6e 25 2c 6b 65 79 25  29 22 2c 69 6e 64 65 6e  |on%,key%)",inden|
00008e10  74 25 2b 34 29 0d 32 6e  0b 20 20 20 20 c9 20 a3  |t%+4).2n.    . .|
00008e20  0d 32 78 49 20 20 20 20  20 e7 20 ac 28 74 65 72  |.2xI     . .(ter|
00008e30  73 65 25 29 20 8c 20 f2  41 64 64 5f 4c 69 6e 65  |se%) . .Add_Line|
00008e40  28 78 24 2b 22 52 45 4d  20 20 4e 6f 20 77 72 69  |(x$+"REM  No wri|
00008e50  74 65 61 62 6c 65 20 69  63 6f 6e 73 21 22 2c 69  |teable icons!",i|
00008e60  6e 64 65 6e 74 25 2b 34  29 0d 32 82 09 20 20 20  |ndent%+4).2..   |
00008e70  20 cb 0d 32 8c 07 20 20  ed 0d 32 96 24 20 20 f2  | ..2..  ..2.$  .|
00008e80  41 64 64 5f 4c 69 6e 65  28 22 45 4e 44 43 41 53  |Add_Line("ENDCAS|
00008e90  45 22 2c 69 6e 64 65 6e  74 25 2b 33 29 0d 32 a0  |E",indent%+3).2.|
00008ea0  12 20 20 f2 41 64 64 5f  52 45 4d 53 28 31 29 0d  |.  .Add_REMS(1).|
00008eb0  32 aa 07 20 20 cb 0d 32  b4 22 20 20 f2 41 64 64  |2..  ..2."  .Add|
00008ec0  5f 4c 69 6e 65 28 22 45  4e 44 50 52 4f 43 22 2c  |_Line("ENDPROC",|
00008ed0  69 6e 64 65 6e 74 25 29  0d 32 be 12 20 20 f2 41  |indent%).2..  .A|
00008ee0  64 64 5f 52 45 4d 53 28  32 29 0d 32 c8 1f 20 20  |dd_REMS(2).2..  |
00008ef0  e7 20 4e 6f 4f 66 57 69  6e 64 6f 77 73 25 3c 3e  |. NoOfWindows%<>|
00008f00  30 20 8c 20 f2 4b 65 79  32 0d 32 d2 35 20 20 f2  |0 . .Key2.2.5  .|
00008f10  46 6f 6f 74 65 72 31 28  22 45 6e 64 20 6f 66 20  |Footer1("End of |
00008f20  6b 65 79 20 70 72 65 73  73 20 70 72 6f 63 65 64  |key press proced|
00008f30  75 72 65 73 22 2c 69 6e  64 65 6e 74 25 29 0d 32  |ures",indent%).2|
00008f40  dc 07 20 20 e1 0d 32 e6  05 3a 0d 32 f0 0d 20 20  |..  ..2..:.2..  |
00008f50  dd 20 f2 4b 65 79 32 0d  32 fa 1c 20 20 20 e3 20  |. .Key2.2..   . |
00008f60  69 25 3d 31 20 b8 20 4e  6f 4f 66 57 69 6e 64 6f  |i%=1 . NoOfWindo|
00008f70  77 73 25 0d 33 04 12 20  20 20 20 c8 8e 20 a4 4b  |ws%.3..    .. .K|
00008f80  65 79 73 20 ca 0d 33 0e  0d 20 20 20 20 20 c9 20  |eys ..3..     . |
00008f90  2d 31 0d 33 18 15 20 20  20 20 20 f2 41 64 64 5f  |-1.3..     .Add_|
00008fa0  52 45 4d 53 28 31 29 0d  33 22 49 20 20 20 20 20  |REMS(1).3"I     |
00008fb0  f2 41 64 64 5f 50 52 4f  43 28 22 55 73 65 72 5f  |.Add_PROC("User_|
00008fc0  4b 65 79 50 72 65 73 73  22 2b 57 69 6e 64 6f 77  |KeyPress"+Window|
00008fd0  24 28 69 25 29 2b 22 28  20 69 63 6f 6e 25 2c 6b  |$(i%)+"( icon%,k|
00008fe0  65 79 25 29 22 2c 69 6e  64 65 6e 74 25 2b 32 29  |ey%)",indent%+2)|
00008ff0  0d 33 2c 89 20 20 20 20  20 f2 41 64 64 5f 4c 69  |.3,.     .Add_Li|
00009000  6e 65 28 22 50 52 4f 43  57 69 6d 70 5f 57 69 6e  |ne("PROCWimp_Win|
00009010  64 6f 77 41 6c 65 72 74  28 22 2b 22 22 22 22 2b  |dowAlert("+""""+|
00009020  57 69 6e 64 6f 77 24 28  69 25 29 2b 22 22 22 22  |Window$(i%)+""""|
00009030  2b 22 2c 22 2b 22 22 22  4b 65 79 20 70 72 65 73  |+","+"""Key pres|
00009040  73 65 64 3d 22 22 22 2b  22 2b 53 54 52 24 6b 65  |sed="""+"+STR$ke|
00009050  79 25 2b 22 2b 22 22 22  69 63 6f 6e 3d 22 22 22  |y%+"+"""icon="""|
00009060  2b 22 2b 53 54 52 24 69  63 6f 6e 25 29 22 2c 69  |+"+STR$icon%)",i|
00009070  6e 64 65 6e 74 25 2b 32  29 0d 33 36 15 20 20 20  |ndent%+2).36.   |
00009080  20 20 f2 41 64 64 5f 52  45 4d 53 28 31 29 0d 33  |  .Add_REMS(1).3|
00009090  40 27 20 20 20 20 20 f2  41 64 64 5f 4c 69 6e 65  |@'     .Add_Line|
000090a0  28 22 45 4e 44 50 52 4f  43 22 2c 69 6e 64 65 6e  |("ENDPROC",inden|
000090b0  74 25 2b 32 29 0d 33 4a  09 20 20 20 20 cb 0d 33  |t%+2).3J.    ..3|
000090c0  54 07 20 20 ed 0d 33 5e  07 20 20 e1 0d 33 68 05  |T.  ..3^.  ..3h.|
000090d0  3a 0d 33 72 18 20 20 dd  20 f2 55 73 65 72 5f 4d  |:.3r.  . .User_M|
000090e0  65 6e 75 43 68 6f 69 63  65 0d 33 7c 10 20 20 20  |enuChoice.3|.   |
000090f0  69 6e 64 65 6e 74 25 3d  34 0d 33 86 29 20 20 f2  |indent%=4.3.)  .|
00009100  48 65 61 64 65 72 28 22  33 2e 34 a0 4d 65 6e 75  |Header("3.4.Menu|
00009110  a0 43 68 6f 69 63 65 73  22 2c 69 6e 64 65 6e 74  |.Choices",indent|
00009120  25 29 0d 33 90 32 20 20  f2 41 64 64 5f 50 52 4f  |%).3.2  .Add_PRO|
00009130  43 28 22 45 76 65 6e 74  5f 4d 65 6e 75 43 68 6f  |C("Event_MenuCho|
00009140  69 63 65 28 6d 65 6e 75  25 29 22 2c 69 6e 64 65  |ice(menu%)",inde|
00009150  6e 74 25 29 0d 33 9a 0c  20 20 c8 8e 20 b9 20 ca  |nt%).3..  .. . .|
00009160  0d 33 a4 22 20 20 20 c9  20 4e 6f 4f 66 57 69 6e  |.3."   . NoOfWin|
00009170  64 6f 77 73 25 3d 30 20  80 20 42 61 72 25 3d 30  |dows%=0 . Bar%=0|
00009180  20 3a 0d 33 ae 40 20 20  20 20 e7 20 ac 28 74 65  | :.3.@    . .(te|
00009190  72 73 65 25 29 20 8c 20  f2 48 65 61 64 69 6e 67  |rse%) . .Heading|
000091a0  28 22 4e 6f 20 77 69 6e  64 6f 77 73 20 64 65 66  |("No windows def|
000091b0  69 6e 65 64 21 22 2c 69  6e 64 65 6e 74 25 2b 31  |ined!",indent%+1|
000091c0  30 29 0d 33 b8 08 20 20  20 7f 0d 33 c2 2c 20 20  |0).3..   ..3.,  |
000091d0  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 43 41 53  |  .Add_Line("CAS|
000091e0  45 20 6d 65 6e 75 25 20  4f 46 22 2c 69 6e 64 65  |E menu% OF",inde|
000091f0  6e 74 25 2b 31 29 0d 33  cc 14 20 20 20 20 f2 41  |nt%+1).3..    .A|
00009200  64 64 5f 52 45 4d 53 28  31 29 0d 33 d6 1d 20 20  |dd_REMS(1).3..  |
00009210  20 20 e3 20 69 25 3d 30  20 b8 20 4e 6f 4f 66 57  |  . i%=0 . NoOfW|
00009220  69 6e 64 6f 77 73 25 0d  33 e0 28 20 20 20 20 20  |indows%.3.(     |
00009230  78 24 3d 22 57 48 45 4e  20 22 2b 57 69 6e 64 6f  |x$="WHEN "+Windo|
00009240  77 24 28 69 25 29 2b 22  5f 4d 65 6e 75 25 22 0d  |w$(i%)+"_Menu%".|
00009250  33 ea 1e 20 20 20 20 20  78 24 2b 3d c4 32 34 2d  |3..     x$+=.24-|
00009260  a9 78 24 2c 22 20 22 29  2b 22 3a 20 22 0d 33 f4  |.x$," ")+": ".3.|
00009270  1d 20 20 20 20 20 20 6d  65 6e 75 24 3d c0 4d 65  |.      menu$=.Me|
00009280  6e 75 24 28 69 25 2c 31  29 29 0d 33 fe 11 20 20  |nu$(i%,1)).3..  |
00009290  20 20 20 20 c8 8e 20 69  25 20 ca 0d 34 08 13 20  |    .. i% ..4.. |
000092a0  20 20 20 20 20 20 c9 20  30 20 20 20 20 3a 0d 34  |      . 0    :.4|
000092b0  12 56 20 20 20 20 20 20  20 20 e7 20 42 61 72 25  |.V        . Bar%|
000092c0  3c 3e 30 20 8c 20 78 24  2b 3d 22 50 52 4f 43 55  |<>0 . x$+="PROCU|
000092d0  73 65 72 5f 4d 65 6e 75  43 68 6f 69 63 65 22 2b  |ser_MenuChoice"+|
000092e0  57 69 6e 64 6f 77 24 28  69 25 29 3a 20 f2 41 64  |Window$(i%): .Ad|
000092f0  64 5f 4c 69 6e 65 28 78  24 2c 69 6e 64 65 6e 74  |d_Line(x$,indent|
00009300  25 2b 37 29 0d 34 1c 0e  20 20 20 20 20 20 20 7f  |%+7).4..       .|
00009310  20 3a 0d 34 26 20 20 20  20 20 20 20 20 20 20 20  | :.4&           |
00009320  20 c8 8e 20 20 a7 6d 65  6e 75 24 2c 22 5c 22 29  | ..  .menu$,"\")|
00009330  20 ca 0d 34 30 13 20 20  20 20 20 20 20 20 20 20  | ..40.          |
00009340  20 c9 20 30 3a 0d 34 3a  52 20 20 20 20 20 20 20  | . 0:.4:R       |
00009350  20 20 20 20 20 20 e7 20  ac 28 74 65 72 73 65 25  |      . .(terse%|
00009360  29 20 8c 20 78 24 2b 3d  22 52 45 4d 20 20 4e 6f  |) . x$+="REM  No|
00009370  20 6d 65 6e 75 20 64 65  66 69 6e 65 64 21 22 3a  | menu defined!":|
00009380  f2 41 64 64 5f 4c 69 6e  65 28 78 24 2c 69 6e 64  |.Add_Line(x$,ind|
00009390  65 6e 74 25 2b 37 29 0d  34 44 12 20 20 20 20 20  |ent%+7).4D.     |
000093a0  20 20 20 20 20 20 7f 20  3a 0d 34 4e 36 20 20 20  |      . :.4N6   |
000093b0  20 20 20 20 20 20 20 20  20 20 78 24 2b 3d 22 50  |          x$+="P|
000093c0  52 4f 43 55 73 65 72 5f  4d 65 6e 75 43 68 6f 69  |ROCUser_MenuChoi|
000093d0  63 65 22 2b 57 69 6e 64  6f 77 24 28 69 25 29 0d  |ce"+Window$(i%).|
000093e0  34 58 28 20 20 20 20 20  20 20 20 20 20 20 20 20  |4X(             |
000093f0  f2 41 64 64 5f 4c 69 6e  65 28 78 24 2c 69 6e 64  |.Add_Line(x$,ind|
00009400  65 6e 74 25 2b 37 29 0d  34 62 10 20 20 20 20 20  |ent%+7).4b.     |
00009410  20 20 20 20 20 20 cb 0d  34 6c 0c 20 20 20 20 20  |      ..4l.     |
00009420  20 20 cb 0d 34 76 09 20  20 20 20 ed 0d 34 80 14  |  ..4v.    ..4..|
00009430  20 20 20 20 f2 41 64 64  5f 52 45 4d 53 28 31 29  |    .Add_REMS(1)|
00009440  0d 34 8a 26 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |.4.&    .Add_Lin|
00009450  65 28 22 45 4e 44 43 41  53 45 22 2c 69 6e 64 65  |e("ENDCASE",inde|
00009460  6e 74 25 2b 31 29 0d 34  94 07 20 20 cb 0d 34 9e  |nt%+1).4..  ..4.|
00009470  12 20 20 f2 41 64 64 5f  52 45 4d 53 28 31 29 0d  |.  .Add_REMS(1).|
00009480  34 a8 22 20 20 f2 41 64  64 5f 4c 69 6e 65 28 22  |4."  .Add_Line("|
00009490  45 4e 44 50 52 4f 43 22  2c 69 6e 64 65 6e 74 25  |ENDPROC",indent%|
000094a0  29 0d 34 b2 11 20 20 f2  4d 65 6e 75 44 65 61 6c  |).4..  .MenuDeal|
000094b0  65 72 0d 34 bc 37 20 20  f2 46 6f 6f 74 65 72 31  |er.4.7  .Footer1|
000094c0  28 22 45 6e 64 20 6f 66  20 4d 65 6e 75 20 43 68  |("End of Menu Ch|
000094d0  6f 69 63 65 20 50 72 6f  63 65 64 75 72 65 73 22  |oice Procedures"|
000094e0  2c 69 6e 64 65 6e 74 25  29 0d 34 c6 07 20 20 e1  |,indent%).4..  .|
000094f0  0d 34 d0 05 3a 0d 34 da  13 20 20 dd 20 f2 4d 65  |.4..:.4..  . .Me|
00009500  6e 75 44 65 61 6c 65 72  0d 34 e4 0a 20 20 ea 20  |nuDealer.4..  . |
00009510  69 25 0d 34 ee 0c 20 20  c8 8e 20 b9 20 ca 0d 34  |i%.4..  .. . ..4|
00009520  f8 22 20 20 20 c9 20 4e  6f 4f 66 57 69 6e 64 6f  |."   . NoOfWindo|
00009530  77 73 25 3d 30 20 80 20  42 61 72 25 3d 30 20 3a  |ws%=0 . Bar%=0 :|
00009540  0d 35 02 0a 20 20 20 7f  20 3a 0d 35 0c 1d 20 20  |.5..   . :.5..  |
00009550  20 20 e3 20 69 25 3d 30  20 b8 20 4e 6f 4f 66 57  |  . i%=0 . NoOfW|
00009560  69 6e 64 6f 77 73 25 0d  35 16 1b 20 20 20 20 6d  |indows%.5..    m|
00009570  65 6e 75 24 3d c0 4d 65  6e 75 24 28 69 25 2c 31  |enu$=.Menu$(i%,1|
00009580  29 29 0d 35 20 1b 20 20  20 20 20 20 c8 8e 20 20  |)).5 .      ..  |
00009590  a7 6d 65 6e 75 24 2c 22  5c 22 29 20 ca 0d 35 2a  |.menu$,"\") ..5*|
000095a0  10 20 20 20 20 20 20 20  20 c9 20 30 3a 0d 35 34  |.        . 0:.54|
000095b0  0f 20 20 20 20 20 20 20  20 7f 20 3a 0d 35 3e 1e  |.        . :.5>.|
000095c0  20 20 20 20 20 20 20 20  c8 8e 20 69 25 3d 30 20  |        .. i%=0 |
000095d0  80 20 42 61 72 25 3d 30  20 ca 0d 35 48 10 20 20  |. Bar%=0 ..5H.  |
000095e0  20 20 20 20 20 20 c9 20  b9 3a 0d 35 52 0e 20 20  |      . .:.5R.  |
000095f0  20 20 20 20 20 20 7f 3a  0d 35 5c 19 20 20 20 20  |      .:.5\.    |
00009600  20 20 20 20 20 f2 41 64  64 5f 52 45 4d 53 28 32  |     .Add_REMS(2|
00009610  29 0d 35 66 3d 20 20 20  20 20 20 20 20 20 f2 41  |).5f=         .A|
00009620  64 64 5f 50 52 4f 43 28  22 55 73 65 72 5f 4d 65  |dd_PROC("User_Me|
00009630  6e 75 43 68 6f 69 63 65  22 2b 57 69 6e 64 6f 77  |nuChoice"+Window|
00009640  24 28 69 25 29 2c 69 6e  64 65 6e 74 25 29 0d 35  |$(i%),indent%).5|
00009650  70 26 20 20 20 20 20 20  20 20 20 f2 4d 65 6e 75  |p&         .Menu|
00009660  50 72 69 6e 74 28 4d 65  6e 75 24 28 69 25 2c 31  |Print(Menu$(i%,1|
00009670  29 2c 30 29 0d 35 7a 29  20 20 20 20 20 20 20 20  |),0).5z)        |
00009680  20 f2 41 64 64 5f 4c 69  6e 65 28 22 45 4e 44 50  | .Add_Line("ENDP|
00009690  52 4f 43 22 2c 69 6e 64  65 6e 74 25 29 0d 35 84  |ROC",indent%).5.|
000096a0  0d 20 20 20 20 20 20 20  20 cb 0d 35 8e 0b 20 20  |.        ..5..  |
000096b0  20 20 20 20 cb 0d 35 98  08 20 20 20 ed 0d 35 a2  |    ..5..   ..5.|
000096c0  07 20 20 cb 0d 35 ac 07  20 20 e1 0d 35 b6 05 3a  |.  ..5..  ..5..:|
000096d0  0d 35 c0 20 20 20 dd 20  f2 4d 65 6e 75 50 72 69  |.5.   . .MenuPri|
000096e0  6e 74 28 6d 65 6e 75 24  2c 6c 65 76 65 6c 25 29  |nt(menu$,level%)|
000096f0  0d 35 ca 39 20 20 ea 20  6a 25 2c 6b 25 2c 73 25  |.5.9  . j%,k%,s%|
00009700  2c 74 25 2c 76 25 2c 69  74 65 6d 24 2c 69 74 6d  |,t%,v%,item$,itm|
00009710  24 20 3a 20 6b 25 3d a7  6d 65 6e 75 24 2c 22 5c  |$ : k%=.menu$,"\|
00009720  22 29 20 3a 20 76 25 3d  30 0d 35 d4 44 20 20 f2  |") : v%=0.5.D  .|
00009730  41 64 64 5f 4c 69 6e 65  28 22 43 41 53 45 20 46  |Add_Line("CASE F|
00009740  4e 57 69 6d 70 5f 4d 65  6e 75 43 68 6f 69 63 65  |NWimp_MenuChoice|
00009750  28 22 2b c3 6c 65 76 65  6c 25 2b 22 29 20 4f 46  |("+.level%+") OF|
00009760  22 2c 32 2a 6c 65 76 65  6c 25 2b 35 29 0d 35 de  |",2*level%+5).5.|
00009770  0f 20 20 f5 20 3a 20 76  25 2b 3d 31 0d 35 e8 21  |.  . : v%+=1.5.!|
00009780  20 20 20 e7 20 76 25 3c  31 30 20 8c 20 63 24 3d  |   . v%<10 . c$=|
00009790  22 20 3a 22 20 8b 20 63  24 3d 22 3a 22 0d 35 f2  |" :" . c$=":".5.|
000097a0  23 20 20 20 6a 25 3d 6b  25 20 3a 20 20 6b 25 3d  |#   j%=k% :  k%=|
000097b0  a7 6d 65 6e 75 24 2c 22  5c 22 2c 6a 25 2b 31 29  |.menu$,"\",j%+1)|
000097c0  0d 35 fc 0e 20 20 20 c8  8e 20 6b 25 20 ca 0d 36  |.5..   .. k% ..6|
000097d0  06 0c 20 20 20 20 20 c9  20 30 0d 36 10 0c 20 20  |..     . 0.6..  |
000097e0  20 20 20 7f 20 3a 0d 36  1a 31 20 20 20 20 20 20  |   . :.6.1      |
000097f0  69 74 65 6d 24 3d c1 6d  65 6e 75 24 2c 6a 25 2b  |item$=.menu$,j%+|
00009800  31 2c 6b 25 2d 6a 25 2d  31 29 20 3a 20 69 74 6d  |1,k%-j%-1) : itm|
00009810  24 3d 69 74 65 6d 24 0d  36 24 18 20 20 20 20 20  |$=item$.6$.     |
00009820  20 73 25 3d a7 69 74 65  6d 24 2c 22 3e 22 29 0d  | s%=.item$,">").|
00009830  36 2e 11 20 20 20 20 20  20 c8 8e 20 73 25 20 ca  |6..      .. s% .|
00009840  0d 36 38 13 20 20 20 20  20 20 20 c9 20 30 20 20  |.68.       . 0  |
00009850  20 20 3a 0d 36 42 1e 20  20 20 20 20 20 20 20 78  |  :.6B.        x|
00009860  24 3d 22 22 22 22 2b 69  74 65 6d 24 2b 22 22 22  |$=""""+item$+"""|
00009870  22 0d 36 4c 20 20 20 20  20 20 20 20 20 69 74 65  |".6L         ite|
00009880  6d 24 3d 22 57 48 45 4e  20 22 2b c3 76 25 2b 63  |m$="WHEN "+.v%+c|
00009890  24 0d 36 56 15 20 20 20  20 20 20 20 20 c8 8e 20  |$.6V.        .. |
000098a0  69 74 6d 24 20 ca 0d 36  60 17 20 20 20 20 20 20  |itm$ ..6`.      |
000098b0  20 20 20 c9 20 22 51 75  69 74 22 20 3a 0d 36 6a  |   . "Quit" :.6j|
000098c0  24 20 20 20 20 20 20 20  20 20 69 74 65 6d 24 2b  |$         item$+|
000098d0  3d 22 66 69 6e 69 73 68  65 64 25 3d 54 52 55 45  |="finished%=TRUE|
000098e0  22 0d 36 74 0f 20 20 20  20 20 20 20 20 20 7f 3a  |".6t.         .:|
000098f0  0d 36 7e 3d 20 20 20 20  20 20 20 20 20 69 74 65  |.6~=         ite|
00009900  6d 24 2b 3d 22 20 50 52  4f 43 57 69 6d 70 5f 57  |m$+=" PROCWimp_W|
00009910  69 6e 64 6f 77 41 6c 65  72 74 28 22 2b 22 22 22  |indowAlert("+"""|
00009920  22 2b 57 69 6e 64 6f 77  24 28 69 25 29 0d 36 88  |"+Window$(i%).6.|
00009930  2a 20 20 20 20 20 20 20  20 69 74 65 6d 24 2b 3d  |*        item$+=|
00009940  22 20 4d 65 6e 75 22 2b  22 22 22 22 2b 22 2c 22  |" Menu"+""""+","|
00009950  2b 78 24 2b 22 29 22 0d  36 92 0d 20 20 20 20 20  |+x$+")".6..     |
00009960  20 20 20 cb 0d 36 9c 27  20 20 20 20 20 20 20 20  |   ..6.'        |
00009970  f2 41 64 64 5f 4c 69 6e  65 28 69 74 65 6d 24 2c  |.Add_Line(item$,|
00009980  32 2a 6c 65 76 65 6c 25  2b 36 29 0d 36 a6 0e 20  |2*level%+6).6.. |
00009990  20 20 20 20 20 20 7f 20  3a 0d 36 b0 23 20 20 20  |      . :.6.#   |
000099a0  20 20 20 20 20 74 25 3d  bb 28 c2 69 74 65 6d 24  |     t%=.(.item$|
000099b0  2c a9 69 74 65 6d 24 2d  73 25 29 29 0d 36 ba 1e  |,.item$-s%)).6..|
000099c0  20 20 20 20 20 20 20 20  69 74 65 6d 24 3d c0 69  |        item$=.i|
000099d0  74 65 6d 24 2c 73 25 2d  31 29 0d 36 c4 20 20 20  |tem$,s%-1).6.   |
000099e0  20 20 20 20 20 20 69 74  65 6d 24 3d 22 57 48 45  |      item$="WHE|
000099f0  4e 20 22 2b c3 76 25 2b  63 24 0d 36 ce 27 20 20  |N "+.v%+c$.6.'  |
00009a00  20 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |      .Add_Line(|
00009a10  69 74 65 6d 24 2c 32 2a  6c 65 76 65 6c 25 2b 36  |item$,2*level%+6|
00009a20  29 0d 36 d8 17 20 20 20  20 20 20 20 20 c8 8e 20  |).6..        .. |
00009a30  c2 69 74 6d 24 29 20 ca  0d 36 e2 11 20 20 20 20  |.itm$) ..6..    |
00009a40  20 20 20 20 c9 20 22 43  22 0d 36 ec 3f 20 20 20  |    . "C".6.?   |
00009a50  20 20 20 20 20 20 78 24  3d 22 49 46 20 46 4e 57  |      x$="IF FNW|
00009a60  69 6d 70 5f 4d 65 6e 75  43 68 6f 69 63 65 28 22  |imp_MenuChoice("|
00009a70  2b c3 28 6c 65 76 65 6c  25 2b 31 29 2b 22 29 3c  |+.(level%+1)+")<|
00009a80  3e 30 20 54 48 45 4e 22  0d 36 f6 25 20 20 20 20  |>0 THEN".6.%    |
00009a90  20 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 78  |     .Add_Line(x|
00009aa0  24 2c 32 2a 6c 65 76 65  6c 25 2b 38 29 0d 37 00  |$,2*level%+8).7.|
00009ab0  3b 20 20 20 20 20 20 20  20 20 78 24 3d 22 63 6f  |;         x$="co|
00009ac0  6c 25 3d 46 4e 57 69 6d  70 5f 4d 65 6e 75 43 68  |l%=FNWimp_MenuCh|
00009ad0  6f 69 63 65 28 22 2b c3  28 6c 65 76 65 6c 25 2b  |oice("+.(level%+|
00009ae0  31 29 2b 22 29 2d 31 22  0d 37 0a 26 20 20 20 20  |1)+")-1".7.&    |
00009af0  20 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 78  |     .Add_Line(x|
00009b00  24 2c 32 2a 6c 65 76 65  6c 25 2b 31 30 29 0d 37  |$,2*level%+10).7|
00009b10  14 40 20 20 20 20 20 20  20 20 20 78 24 3d 22 50  |.@         x$="P|
00009b20  52 4f 43 57 69 6d 70 5f  57 69 6e 64 6f 77 41 6c  |ROCWimp_WindowAl|
00009b30  65 72 74 28 22 2b 22 22  22 22 2b 57 69 6e 64 6f  |ert("+""""+Windo|
00009b40  77 24 28 69 25 29 2b 22  20 4d 65 6e 75 22 0d 37  |w$(i%)+" Menu".7|
00009b50  1e 37 20 20 20 20 20 20  20 20 20 69 74 65 6d 24  |.7         item$|
00009b60  3d 78 24 2b 22 22 22 2c  22 22 43 6f 6c 6f 75 72  |=x$+""",""Colour|
00009b70  20 43 68 6f 73 65 6e 3d  22 22 2b 53 54 52 24 63  | Chosen=""+STR$c|
00009b80  6f 6c 25 29 22 0d 37 28  29 20 20 20 20 20 20 20  |ol%)".7()       |
00009b90  20 20 f2 41 64 64 5f 4c  69 6e 65 28 69 74 65 6d  |  .Add_Line(item|
00009ba0  24 2c 32 2a 6c 65 76 65  6c 25 2b 31 30 29 0d 37  |$,2*level%+10).7|
00009bb0  32 2a 20 20 20 20 20 20  20 20 20 f2 41 64 64 5f  |2*         .Add_|
00009bc0  4c 69 6e 65 28 22 45 4e  44 49 46 22 2c 32 2a 6c  |Line("ENDIF",2*l|
00009bd0  65 76 65 6c 25 2b 38 29  0d 37 3c 0d 20 20 20 20  |evel%+8).7<.    |
00009be0  20 20 20 20 cb 0d 37 46  38 20 20 20 20 20 20 20  |    ..7F8       |
00009bf0  20 e7 20 74 25 3c 31 30  30 20 8c 20 f2 4d 65 6e  | . t%<100 . .Men|
00009c00  75 50 72 69 6e 74 28 4d  65 6e 75 24 28 69 25 2c  |uPrint(Menu$(i%,|
00009c10  74 25 29 2c 6c 65 76 65  6c 25 2b 31 29 0d 37 50  |t%),level%+1).7P|
00009c20  0b 20 20 20 20 20 20 cb  0d 37 5a 08 20 20 20 cb  |.      ..7Z.   .|
00009c30  0d 37 64 0c 20 20 fd 20  6b 25 3d 30 0d 37 6e 25  |.7d.  . k%=0.7n%|
00009c40  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 45 4e 44  |  .Add_Line("END|
00009c50  43 41 53 45 22 2c 32 2a  6c 65 76 65 6c 25 2b 35  |CASE",2*level%+5|
00009c60  29 0d 37 78 07 20 20 e1  0d 37 82 05 3a 0d 37 8c  |).7x.  ..7..:.7.|
00009c70  14 20 20 dd 20 f2 46 69  6c 65 4c 6f 61 64 69 6e  |.  . .FileLoadin|
00009c80  67 0d 37 96 0f 20 20 69  6e 64 65 6e 74 25 3d 34  |g.7..  indent%=4|
00009c90  0d 37 a0 04 0d 37 aa 29  20 20 f2 48 65 61 64 65  |.7...7.)  .Heade|
00009ca0  72 28 22 33 2e 35 a0 46  69 6c 65 a0 4c 6f 61 64  |r("3.5.File.Load|
00009cb0  69 6e 67 22 2c 69 6e 64  65 6e 74 25 29 0d 37 b4  |ing",indent%).7.|
00009cc0  36 20 20 f2 41 64 64 5f  50 52 4f 43 28 22 45 76  |6  .Add_PROC("Ev|
00009cd0  65 6e 74 5f 4c 6f 61 64  46 69 6c 65 28 66 69 6c  |ent_LoadFile(fil|
00009ce0  65 24 2c 74 79 70 65 24  29 22 2c 69 6e 64 65 6e  |e$,type$)",inden|
00009cf0  74 25 29 0d 37 be 10 20  20 c8 8e 20 6e 65 78 74  |t%).7..  .. next|
00009d00  25 20 ca 0d 37 c8 0b 20  20 20 c9 20 30 3a 0d 37  |% ..7..   . 0:.7|
00009d10  d2 3c 20 20 20 20 e7 20  ac 28 74 65 72 73 65 25  |.<    . .(terse%|
00009d20  29 20 8c 20 f2 48 65 61  64 69 6e 67 28 22 4e 6f  |) . .Heading("No|
00009d30  20 66 69 6c 65 73 20 6c  6f 61 64 65 64 21 22 2c  | files loaded!",|
00009d40  69 6e 64 65 6e 74 25 2b  38 29 0d 37 dc 08 20 20  |indent%+8).7..  |
00009d50  20 7f 0d 37 e6 2d 20 20  20 20 20 f2 41 64 64 5f  | ..7.-     .Add_|
00009d60  4c 69 6e 65 28 22 43 41  53 45 20 74 79 70 65 24  |Line("CASE type$|
00009d70  20 4f 46 22 2c 69 6e 64  65 6e 74 25 2b 32 29 0d  | OF",indent%+2).|
00009d80  37 f0 17 20 20 20 20 20  e3 20 69 25 3d 31 20 b8  |7..     . i%=1 .|
00009d90  20 6e 65 78 74 25 0d 37  fa 44 20 20 20 20 20 20  | next%.7.D      |
00009da0  78 24 20 3d 22 57 48 45  4e 20 22 2b 22 22 22 22  |x$ ="WHEN "+""""|
00009db0  2b 54 79 70 65 24 28 69  25 29 2b 22 22 22 22 2b  |+Type$(i%)+""""+|
00009dc0  c4 31 33 2d a9 28 54 79  70 65 24 28 69 25 29 29  |.13-.(Type$(i%))|
00009dd0  2c 22 20 22 29 2b 22 3a  20 22 0d 38 04 35 20 20  |," ")+": ".8.5  |
00009de0  20 20 20 20 78 24 2b 3d  22 50 52 4f 43 55 73 65  |    x$+="PROCUse|
00009df0  72 5f 4c 6f 61 64 46 69  6c 65 22 2b 54 79 70 65  |r_LoadFile"+Type|
00009e00  24 28 69 25 29 2b 22 28  66 69 6c 65 24 29 22 0d  |$(i%)+"(file$)".|
00009e10  38 0e 21 20 20 20 20 20  20 f2 41 64 64 5f 4c 69  |8.!      .Add_Li|
00009e20  6e 65 28 78 24 2c 69 6e  64 65 6e 74 25 2b 34 29  |ne(x$,indent%+4)|
00009e30  0d 38 18 0a 20 20 20 20  20 ed 0d 38 22 27 20 20  |.8..     ..8"'  |
00009e40  20 20 20 f2 41 64 64 5f  4c 69 6e 65 28 22 45 4e  |   .Add_Line("EN|
00009e50  44 43 41 53 45 22 2c 69  6e 64 65 6e 74 25 2b 32  |DCASE",indent%+2|
00009e60  29 0d 38 2c 08 20 20 20  cb 0d 38 36 13 20 20 20  |).8,.   ..86.   |
00009e70  f2 41 64 64 5f 52 45 4d  53 28 31 29 0d 38 40 23  |.Add_REMS(1).8@#|
00009e80  20 20 20 f2 41 64 64 5f  4c 69 6e 65 28 22 45 4e  |   .Add_Line("EN|
00009e90  44 50 52 4f 43 22 2c 69  6e 64 65 6e 74 25 29 0d  |DPROC",indent%).|
00009ea0  38 4a 0f 20 c8 8e 20 6e  65 78 74 25 20 ca 0d 38  |8J. .. next% ..8|
00009eb0  54 0b 20 20 20 c9 20 30  3a 0d 38 5e 08 20 20 20  |T.   . 0:.8^.   |
00009ec0  7f 0d 38 68 17 20 20 20  20 20 e3 20 69 25 3d 31  |..8h.     . i%=1|
00009ed0  20 b8 20 6e 65 78 74 25  0d 38 72 16 20 20 20 20  | . next%.8r.    |
00009ee0  20 20 f2 41 64 64 5f 52  45 4d 53 28 31 29 0d 38  |  .Add_REMS(1).8|
00009ef0  7c 42 20 20 20 20 20 20  f2 41 64 64 5f 50 52 4f  ||B      .Add_PRO|
00009f00  43 28 22 55 73 65 72 5f  4c 6f 61 64 46 69 6c 65  |C("User_LoadFile|
00009f10  22 2b 54 79 70 65 24 28  69 25 29 2b 22 28 66 69  |"+Type$(i%)+"(fi|
00009f20  6c 65 24 29 22 2c 69 6e  64 65 6e 74 25 2b 32 29  |le$)",indent%+2)|
00009f30  0d 38 86 24 20 20 20 20  20 20 78 24 3d 22 50 52  |.8.$      x$="PR|
00009f40  4f 43 57 69 6d 70 5f 57  69 6e 64 6f 77 41 6c 65  |OCWimp_WindowAle|
00009f50  72 74 28 22 0d 38 90 29  20 20 20 20 20 20 78 24  |rt(".8.)      x$|
00009f60  2b 3d 22 22 22 22 2b c0  a4 47 65 74 4c 65 61 66  |+=""""+..GetLeaf|
00009f70  28 66 69 6c 65 24 29 29  2b 22 22 22 22 0d 38 9a  |(file$))+"""".8.|
00009f80  2f 20 20 20 20 20 20 78  24 2b 3d 22 2c 22 2b 22  |/      x$+=","+"|
00009f90  22 22 4c 6f 61 64 69 6e  67 20 66 69 6c 65 20 22  |""Loading file "|
00009fa0  22 22 2b 22 2b 66 69 6c  65 24 29 22 0d 38 a4 21  |""+"+file$)".8.!|
00009fb0  20 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |      .Add_Line(|
00009fc0  78 24 2c 69 6e 64 65 6e  74 25 2b 34 29 0d 38 ae  |x$,indent%+4).8.|
00009fd0  16 20 20 20 20 20 20 f2  41 64 64 5f 52 45 4d 53  |.      .Add_REMS|
00009fe0  28 31 29 0d 38 b8 28 20  20 20 20 20 20 f2 41 64  |(1).8.(      .Ad|
00009ff0  64 5f 4c 69 6e 65 28 22  45 4e 44 50 52 4f 43 22  |d_Line("ENDPROC"|
0000a000  2c 69 6e 64 65 6e 74 25  2b 32 29 0d 38 c2 0a 20  |,indent%+2).8.. |
0000a010  20 20 20 20 ed 0d 38 cc  08 20 20 20 cb 0d 38 d6  |    ..8..   ..8.|
0000a020  39 20 20 f2 46 6f 6f 74  65 72 31 28 22 45 6e 64  |9  .Footer1("End|
0000a030  20 6f 66 20 66 69 6c 65  20 6c 6f 61 64 69 6e 67  | of file loading|
0000a040  20 70 72 6f 63 65 64 75  72 65 22 2c 69 6e 64 65  | procedure",inde|
0000a050  6e 74 25 2b 32 29 0d 38  e0 07 20 20 e1 0d 38 ea  |nt%+2).8..  ..8.|
0000a060  05 3a 0d 38 f4 12 20 dd  20 f2 46 69 6c 65 53 61  |.:.8.. . .FileSa|
0000a070  76 69 6e 67 0d 38 fe 10  20 20 20 69 6e 64 65 6e  |ving.8..   inden|
0000a080  74 25 3d 34 0d 39 08 28  20 20 f2 48 65 61 64 65  |t%=4.9.(  .Heade|
0000a090  72 28 22 33 2e 36 a0 46  69 6c 65 a0 53 61 76 69  |r("3.6.File.Savi|
0000a0a0  6e 67 22 2c 69 6e 64 65  6e 74 25 29 0d 39 12 38  |ng",indent%).9.8|
0000a0b0  20 20 f2 41 64 64 5f 50  52 4f 43 28 22 45 76 65  |  .Add_PROC("Eve|
0000a0c0  6e 74 5f 53 61 76 65 46  69 6c 65 28 66 69 6c 65  |nt_SaveFile(file|
0000a0d0  24 2c 77 69 6e 64 6f 77  25 29 22 2c 69 6e 64 65  |$,window%)",inde|
0000a0e0  6e 74 25 29 0d 39 1c 14  20 20 c8 8e 20 a4 53 61  |nt%).9..  .. .Sa|
0000a0f0  76 65 54 72 75 65 20 ca  0d 39 26 0a 20 20 c9 20  |veTrue ..9&.  . |
0000a100  b9 3a 0d 39 30 2d 20 20  20 f2 41 64 64 5f 4c 69  |.:.90-   .Add_Li|
0000a110  6e 65 28 22 43 41 53 45  20 77 69 6e 64 6f 77 25  |ne("CASE window%|
0000a120  20 4f 46 22 2c 69 6e 64  65 6e 74 25 2b 32 29 0d  | OF",indent%+2).|
0000a130  39 3a 1c 20 20 20 e3 20  69 25 3d 31 20 b8 20 4e  |9:.   . i%=1 . N|
0000a140  6f 4f 66 57 69 6e 64 6f  77 73 25 0d 39 44 29 20  |oOfWindows%.9D) |
0000a150  20 20 20 78 24 3d 22 57  48 45 4e 20 22 2b 57 69  |   x$="WHEN "+Wi|
0000a160  6e 64 6f 77 24 28 69 25  29 2b 22 5f 57 69 6e 64  |ndow$(i%)+"_Wind|
0000a170  6f 77 25 22 0d 39 4e 1d  20 20 20 20 78 24 2b 3d  |ow%".9N.    x$+=|
0000a180  c4 32 36 2d a9 78 24 2c  22 20 22 29 2b 22 3a 20  |.26-.x$," ")+": |
0000a190  22 0d 39 58 1c 20 20 20  20 c8 8e 20 c0 57 69 6e  |".9X.    .. .Win|
0000a1a0  64 6f 77 24 28 69 25 29  2c 34 29 20 ca 0d 39 62  |dow$(i%),4) ..9b|
0000a1b0  1f 20 20 20 20 20 c9 20  22 53 61 76 65 22 2c 22  |.     . "Save","|
0000a1c0  73 61 76 65 22 2c 22 53  41 56 45 22 0d 39 6c 25  |save","SAVE".9l%|
0000a1d0  20 20 20 20 20 20 78 24  2b 3d 22 50 52 4f 43 57  |      x$+="PROCW|
0000a1e0  69 6d 70 5f 57 69 6e 64  6f 77 41 6c 65 72 74 28  |imp_WindowAlert(|
0000a1f0  22 0d 39 76 23 20 20 20  20 20 20 78 24 2b 3d 22  |".9v#      x$+="|
0000a200  22 22 22 2b 57 69 6e 64  6f 77 24 28 69 25 29 2b  |"""+Window$(i%)+|
0000a210  22 22 22 22 0d 39 80 2e  20 20 20 20 20 20 78 24  |"""".9..      x$|
0000a220  2b 3d 22 2c 22 2b 22 22  22 53 61 76 69 6e 67 20  |+=","+"""Saving |
0000a230  66 69 6c 65 20 22 22 22  2b 22 2b 66 69 6c 65 24  |file """+"+file$|
0000a240  29 22 0d 39 8a 21 20 20  20 20 20 20 f2 41 64 64  |)".9.!      .Add|
0000a250  5f 4c 69 6e 65 28 78 24  2c 69 6e 64 65 6e 74 25  |_Line(x$,indent%|
0000a260  2b 34 29 0d 39 94 0c 20  20 20 20 20 7f 20 3a 0d  |+4).9..     . :.|
0000a270  39 9e 27 20 20 20 20 20  20 78 24 2b 3d 22 52 45  |9.'      x$+="RE|
0000a280  4d 20 20 4e 6f 74 20 61  20 73 61 76 65 20 77 69  |M  Not a save wi|
0000a290  6e 64 6f 77 21 22 0d 39  a8 2d 20 20 20 20 20 20  |ndow!".9.-      |
0000a2a0  e7 20 ac 74 65 72 73 65  25 20 8c 20 f2 41 64 64  |. .terse% . .Add|
0000a2b0  5f 4c 69 6e 65 28 78 24  2c 69 6e 64 65 6e 74 25  |_Line(x$,indent%|
0000a2c0  2b 34 29 0d 39 b2 09 20  20 20 20 cb 0d 39 bc 08  |+4).9..    ..9..|
0000a2d0  20 20 20 ed 0d 39 c6 25  20 20 20 f2 41 64 64 5f  |   ..9.%   .Add_|
0000a2e0  4c 69 6e 65 28 22 45 4e  44 43 41 53 45 22 2c 69  |Line("ENDCASE",i|
0000a2f0  6e 64 65 6e 74 25 2b 32  29 0d 39 d0 07 20 20 cb  |ndent%+2).9..  .|
0000a300  0d 39 da 35 20 20 f2 46  6f 6f 74 65 72 28 22 45  |.9.5  .Footer("E|
0000a310  6e 64 20 6f 66 20 66 69  6c 65 20 73 61 76 69 6e  |nd of file savin|
0000a320  67 20 70 72 6f 63 65 64  75 72 65 22 2c 69 6e 64  |g procedure",ind|
0000a330  65 6e 74 25 29 0d 39 e4  07 20 20 e1 0d 39 ee 05  |ent%).9..  ..9..|
0000a340  3a 0d 39 f8 0f dd 20 a4  53 61 76 65 54 72 75 65  |:.9... .SaveTrue|
0000a350  0d 3a 02 10 ea 20 72 65  73 75 6c 74 25 2c 69 25  |.:... result%,i%|
0000a360  0d 3a 0c 15 c8 8e 20 4e  6f 4f 66 57 69 6e 64 6f  |.:.... NoOfWindo|
0000a370  77 73 25 20 ca 0d 3a 16  15 c9 20 30 20 20 20 3a  |ws% ..:... 0   :|
0000a380  20 72 65 73 75 6c 74 25  3d a3 0d 3a 20 06 7f 3a  | result%=..: ..:|
0000a390  0d 3a 2a 09 20 69 25 3d  30 0d 3a 34 06 20 f5 0d  |.:*. i%=0.:4. ..|
0000a3a0  3a 3e 0b 20 20 69 25 2b  3d 31 0d 3a 48 1a 20 20  |:>.  i%+=1.:H.  |
0000a3b0  c8 8e 20 c0 57 69 6e 64  6f 77 24 28 69 25 29 2c  |.. .Window$(i%),|
0000a3c0  34 29 20 ca 0d 3a 52 2b  20 20 20 20 20 c9 20 22  |4) ..:R+     . "|
0000a3d0  53 61 76 65 22 2c 22 73  61 76 65 22 2c 22 53 41  |Save","save","SA|
0000a3e0  56 45 22 20 3a 20 72 65  73 75 6c 74 25 3d b9 0d  |VE" : result%=..|
0000a3f0  3a 5c 07 20 20 cb 0d 3a  66 22 20 fd 20 69 25 3d  |:\.  ..:f" . i%=|
0000a400  4e 6f 4f 66 57 69 6e 64  6f 77 73 25 20 84 20 72  |NoOfWindows% . r|
0000a410  65 73 75 6c 74 25 3d b9  0d 3a 70 05 cb 0d 3a 7a  |esult%=..:p...:z|
0000a420  0c 3d 72 65 73 75 6c 74  25 0d 3a 84 05 3a 0d 3a  |.=result%.:..:.:|
0000a430  8e 23 f4 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.#.-------------|
0000a440  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a450  2d 0d 3a 98 1a f4 20 20  20 20 20 20 54 6f 6f 6c  |-.:...      Tool|
0000a460  20 70 72 6f 63 65 64 75  72 65 73 0d 3a a2 23 f4  | procedures.:.#.|
0000a470  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a480  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 3a  |--------------.:|
0000a490  ac 05 f4 0d 3a b6 05 3a  0d 3a c0 1f 20 20 20 20  |....:..:.:..    |
0000a4a0  dd 20 f2 41 64 64 5f 4c  69 6e 65 28 78 24 2c 69  |. .Add_Line(x$,i|
0000a4b0  6e 64 65 6e 74 25 29 0d  3a ca 14 20 20 20 20 c8  |ndent%).:..    .|
0000a4c0  8e 20 70 72 6f 6c 69 78  25 20 ca 0d 3a d4 0c 20  |. prolix% ..:.. |
0000a4d0  20 20 20 c9 20 b9 3a 0d  3a de 25 20 20 20 20 20  |   . .:.:.%     |
0000a4e0  24 70 74 72 25 3d c4 33  2b 69 6e 64 65 6e 74 25  |$ptr%=.3+indent%|
0000a4f0  2c 22 20 22 29 2b 78 24  2b bd 31 30 0d 3a e8 1c  |," ")+x$+.10.:..|
0000a500  20 20 20 20 20 70 74 72  25 2b 3d a9 78 24 2b 34  |     ptr%+=.x$+4|
0000a510  2b 69 6e 64 65 6e 74 25  0d 3a f2 0a 20 20 20 20  |+indent%.:..    |
0000a520  7f 3a 0d 3a fc 4b 20 20  20 20 20 e7 20 c0 78 24  |.:.:.K     . .x$|
0000a530  2c 33 29 3c 3e 22 52 45  4d 22 20 8c 20 24 70 74  |,3)<>"REM" . $pt|
0000a540  72 25 3d c4 33 2b 69 6e  64 65 6e 74 25 2c 22 20  |r%=.3+indent%," |
0000a550  22 29 2b 78 24 2b bd 31  30 3a 70 74 72 25 2b 3d  |")+x$+.10:ptr%+=|
0000a560  a9 78 24 2b 34 2b 69 6e  64 65 6e 74 25 0d 3b 06  |.x$+4+indent%.;.|
0000a570  09 20 20 20 20 cb 0d 3b  10 09 20 20 20 20 e1 0d  |.    ..;..    ..|
0000a580  3b 1a 05 3a 0d 3b 24 1e  20 20 20 20 dd 20 f2 41  |;..:.;$.    . .A|
0000a590  64 64 5f 52 45 4d 28 78  24 2c 69 6e 64 65 6e 74  |dd_REM(x$,indent|
0000a5a0  25 29 0d 3b 2e 2c 20 20  20 20 f2 41 64 64 5f 4c  |%).;.,    .Add_L|
0000a5b0  69 6e 65 28 22 52 45 4d  22 2b c4 69 6e 64 65 6e  |ine("REM"+.inden|
0000a5c0  74 25 2c 22 20 22 29 2b  78 24 2c 2d 33 29 0d 3b  |t%," ")+x$,-3).;|
0000a5d0  38 09 20 20 20 20 e1 0d  3b 42 05 3a 0d 3b 4c 17  |8.    ..;B.:.;L.|
0000a5e0  20 20 20 20 dd 20 f2 41  64 64 5f 52 45 4d 53 28  |    . .Add_REMS(|
0000a5f0  6e 25 29 0d 3b 56 0c 20  20 20 20 ea 20 69 25 0d  |n%).;V.    . i%.|
0000a600  3b 60 29 20 20 20 20 e3  20 69 25 3d 31 20 b8 20  |;`)    . i%=1 . |
0000a610  6e 25 20 3a 20 20 f2 41  64 64 5f 52 45 4d 28 22  |n% :  .Add_REM("|
0000a620  22 2c 30 29 20 3a 20 ed  0d 3b 6a 09 20 20 20 20  |",0) : ..;j.    |
0000a630  e1 0d 3b 74 05 3a 0d 3b  7e 1e 20 20 20 20 dd 20  |..;t.:.;~.    . |
0000a640  f2 48 65 61 64 69 6e 67  28 78 24 2c 69 6e 64 65  |.Heading(x$,inde|
0000a650  6e 74 25 29 0d 3b 88 16  20 20 20 20 f2 41 64 64  |nt%).;..    .Add|
0000a660  5f 52 45 4d 28 22 22 2c  30 29 0d 3b 92 3a 20 20  |_REM("",0).;.:  |
0000a670  20 20 f2 41 64 64 5f 52  45 4d 28 22 2d 2d 2d 2d  |  .Add_REM("----|
0000a680  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a690  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 22 2c 69 6e 64 65  |----------",inde|
0000a6a0  6e 74 25 29 0d 3b 9c 2f  20 20 20 20 f2 41 64 64  |nt%).;./    .Add|
0000a6b0  5f 52 45 4d 28 c4 31 35  2d 28 a9 28 78 24 29 81  |_REM(.15-(.(x$).|
0000a6c0  32 29 2c 22 20 22 29 2b  78 24 2c 69 6e 64 65 6e  |2)," ")+x$,inden|
0000a6d0  74 25 29 0d 3b a6 3a 20  20 20 20 f2 41 64 64 5f  |t%).;.:    .Add_|
0000a6e0  52 45 4d 28 22 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |REM("-----------|
0000a6f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a700  2d 2d 2d 22 2c 69 6e 64  65 6e 74 25 29 0d 3b b0  |---",indent%).;.|
0000a710  16 20 20 20 20 f2 41 64  64 5f 52 45 4d 28 22 22  |.    .Add_REM(""|
0000a720  2c 30 29 0d 3b ba 09 20  20 20 20 e1 0d 3b c4 06  |,0).;..    ..;..|
0000a730  20 3a 0d 3b ce 16 20 20  20 20 dd 20 f2 43 6f 6d  | :.;..    . .Com|
0000a740  6d 65 6e 74 28 78 24 29  0d 3b d8 16 20 20 20 20  |ment(x$).;..    |
0000a750  f2 41 64 64 5f 52 45 4d  28 22 22 2c 30 29 0d 3b  |.Add_REM("",0).;|
0000a760  e2 2d 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |.-    .Add_Line(|
0000a770  22 52 45 4d 22 2b c4 31  35 2c 22 20 22 29 2b c4  |"REM"+.15," ")+.|
0000a780  33 30 2c 22 2d 22 29 2c  2d 33 29 0d 3b ec 31 20  |30,"-"),-3).;.1 |
0000a790  20 20 20 f2 41 64 64 5f  4c 69 6e 65 28 22 52 45  |   .Add_Line("RE|
0000a7a0  4d 22 2b c4 33 30 2d 28  a9 28 78 24 29 81 32 29  |M"+.30-(.(x$).2)|
0000a7b0  2c 22 20 22 29 2b 78 24  2c 2d 33 29 0d 3b f6 2d  |," ")+x$,-3).;.-|
0000a7c0  20 20 20 20 f2 41 64 64  5f 4c 69 6e 65 28 22 52  |    .Add_Line("R|
0000a7d0  45 4d 22 2b c4 31 35 2c  22 20 22 29 2b c4 33 30  |EM"+.15," ")+.30|
0000a7e0  2c 22 2d 22 29 2c 2d 33  29 0d 3c 00 16 20 20 20  |,"-"),-3).<..   |
0000a7f0  20 f2 41 64 64 5f 52 45  4d 28 22 22 2c 30 29 0d  | .Add_REM("",0).|
0000a800  3c 0a 09 20 20 20 20 e1  0d 3c 14 06 20 3a 0d 3c  |<..    ..<.. :.<|
0000a810  1e 1f 20 20 20 20 dd 20  f2 43 6f 6d 6d 65 6e 74  |..    . .Comment|
0000a820  32 28 78 24 2c 69 6e 64  65 6e 74 25 29 0d 3c 28  |2(x$,indent%).<(|
0000a830  3a 20 20 20 20 f2 41 64  64 5f 52 45 4d 28 22 2d  |:    .Add_REM("-|
0000a840  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a850  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 22 2c 69  |-------------",i|
0000a860  6e 64 65 6e 74 25 29 0d  3c 32 2f 20 20 20 20 f2  |ndent%).<2/    .|
0000a870  41 64 64 5f 52 45 4d 28  c4 31 35 2d 28 a9 28 78  |Add_REM(.15-(.(x|
0000a880  24 29 81 32 29 2c 22 20  22 29 2b 78 24 2c 69 6e  |$).2)," ")+x$,in|
0000a890  64 65 6e 74 25 29 0d 3c  3c 16 20 20 20 20 f2 41  |dent%).<<.    .A|
0000a8a0  64 64 5f 52 45 4d 28 22  22 2c 30 29 0d 3c 46 11  |dd_REM("",0).<F.|
0000a8b0  20 20 20 20 64 61 74 65  25 21 30 3d 30 0d 3c 50  |    date%!0=0.<P|
0000a8c0  1d 20 20 20 20 c8 99 20  22 4f 53 5f 57 6f 72 64  |.    .. "OS_Word|
0000a8d0  22 2c 31 34 2c 64 61 74  65 25 0d 3c 5a 11 20 20  |",14,date%.<Z.  |
0000a8e0  20 20 79 24 3d 24 64 61  74 65 25 0d 3c 64 2f 20  |  y$=$date%.<d/ |
0000a8f0  20 20 20 f2 41 64 64 5f  52 45 4d 28 c4 31 35 2d  |   .Add_REM(.15-|
0000a900  28 a9 28 78 24 29 81 32  29 2c 22 20 22 29 2b 79  |(.(x$).2)," ")+y|
0000a910  24 2c 69 6e 64 65 6e 74  25 29 0d 3c 6e 3a 20 20  |$,indent%).<n:  |
0000a920  20 20 f2 41 64 64 5f 52  45 4d 28 22 2d 2d 2d 2d  |  .Add_REM("----|
0000a930  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a940  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 22 2c 69 6e 64 65  |----------",inde|
0000a950  6e 74 25 29 0d 3c 78 16  20 20 20 20 f2 41 64 64  |nt%).<x.    .Add|
0000a960  5f 52 45 4d 28 22 22 2c  30 29 0d 3c 82 09 20 20  |_REM("",0).<..  |
0000a970  20 20 e1 0d 3c 8c 23 f4  2d 2d 2d 2d 2d 2d 2d 2d  |  ..<.#.--------|
0000a980  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a990  2d 2d 2d 2d 2d 2d 0d 3c  96 1b f4 2a 2a 2a 2a 2a  |------.<...*****|
0000a9a0  2a 2a 2a 2a 2a 46 49 4c  45 20 4c 4f 41 44 49 4e  |*****FILE LOADIN|
0000a9b0  47 0d 3c a0 23 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |G.<.#.----------|
0000a9c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000a9d0  2d 2d 2d 2d 0d 3c aa 05  3a 0d 3c b4 1d 20 dd 20  |----.<..:.<.. . |
0000a9e0  f2 44 65 61 6c 57 69 74  68 4c 6f 61 64 69 6e 67  |.DealWithLoading|
0000a9f0  4f 66 46 69 6c 65 0d 3c  be 1a 20 ea 20 74 79 70  |OfFile.<.. . typ|
0000aa00  65 24 2c 66 69 6c 65 24  2c 6e 65 77 25 2c 69 25  |e$,file$,new%,i%|
0000aa10  0d 3c c8 39 20 20 20 3a  20 74 79 70 65 24 3d a4  |.<.9   : type$=.|
0000aa20  46 69 6c 65 5f 54 79 70  65 20 3a 20 66 69 6c 65  |File_Type : file|
0000aa30  24 3d a4 46 69 6c 65 5f  50 61 74 68 4e 61 6d 65  |$=.File_PathName|
0000aa40  20 3a 20 6e 65 77 25 3d  30 0d 3c d2 0f 20 c8 8e  | : new%=0.<.. ..|
0000aa50  20 74 79 70 65 24 20 ca  0d 3c dc 14 20 20 c9 20  | type$ ..<..  . |
0000aa60  22 54 65 6d 70 6c 61 74  65 22 20 3a 0d 3c e6 15  |"Template" :.<..|
0000aa70  20 20 20 c8 8e 20 54 65  6d 70 6c 61 74 65 24 20  |   .. Template$ |
0000aa80  ca 0d 3c f0 29 20 20 20  20 c9 20 22 22 20 20 20  |..<.)    . ""   |
0000aa90  3a 20 f2 44 65 61 6c 57  69 74 68 4c 6f 61 64 69  |: .DealWithLoadi|
0000aaa0  6e 67 54 65 6d 70 6c 61  74 65 0d 3c fa 12 20 20  |ngTemplate.<..  |
0000aab0  20 20 7f 20 3a 20 6e 65  77 25 3d 31 0d 3d 04 08  |  . : new%=1.=..|
0000aac0  20 20 20 cb 0d 3d 0e 10  20 20 c9 20 22 53 70 72  |   ..=..  . "Spr|
0000aad0  69 74 65 22 0d 3d 18 1d  20 20 20 c8 8e 20 c0 a4  |ite".=..   .. ..|
0000aae0  47 65 74 4c 65 61 66 28  66 69 6c 65 24 29 29 20  |GetLeaf(file$)) |
0000aaf0  ca 0d 3d 22 47 20 20 20  20 c9 20 22 53 70 72 69  |..="G    . "Spri|
0000ab00  74 65 73 22 2c 22 53 50  52 49 54 45 53 22 2c 22  |tes","SPRITES","|
0000ab10  73 70 72 69 74 65 73 22  20 20 20 20 3a 20 f2 44  |sprites"    : .D|
0000ab20  65 61 6c 57 69 74 68 4c  6f 61 64 69 6e 67 53 70  |ealWithLoadingSp|
0000ab30  72 69 74 65 46 69 6c 65  0d 3d 2c 4a 20 20 20 20  |riteFile.=,J    |
0000ab40  c9 20 22 21 53 70 72 69  74 65 73 22 2c 22 21 53  |. "!Sprites","!S|
0000ab50  50 52 49 54 45 53 22 2c  22 21 73 70 72 69 74 65  |PRITES","!sprite|
0000ab60  73 22 20 3a 20 f2 44 65  61 6c 57 69 74 68 4c 6f  |s" : .DealWithLo|
0000ab70  61 64 69 6e 67 53 79 73  74 65 6d 53 70 72 69 74  |adingSystemSprit|
0000ab80  65 73 0d 3d 36 19 20 20  20 20 7f 20 20 20 20 20  |es.=6.    .     |
0000ab90  20 20 3a 20 20 6e 65 77  25 3d 31 0d 3d 40 08 20  |  :  new%=1.=@. |
0000aba0  20 20 cb 0d 3d 4a 07 20  20 7f 0d 3d 54 19 20 20  |  ..=J.  ..=T.  |
0000abb0  e7 20 6e 65 78 74 25 3c  31 36 20 8c 20 6e 65 77  |. next%<16 . new|
0000abc0  25 3d 31 0d 3d 5e 06 20  cb 0d 3d 68 0e 20 c8 8e  |%=1.=^. ..=h. ..|
0000abd0  20 6e 65 77 25 20 ca 0d  3d 72 0a 20 c9 20 31 20  | new% ..=r. . 1 |
0000abe0  3a 0d 3d 7c 13 20 69 25  3d 30 20 3a 20 74 65 73  |:.=|. i%=0 : tes|
0000abf0  74 25 3d a3 0d 3d 86 08  20 20 20 f5 0d 3d 90 0c  |t%=..=..   ..=..|
0000ac00  20 20 20 69 25 2b 3d 31  0d 3d 9a 22 20 20 20 e7  |   i%+=1.=."   .|
0000ac10  20 54 79 70 65 24 28 69  25 29 3d 74 79 70 65 24  | Type$(i%)=type$|
0000ac20  20 8c 20 74 65 73 74 25  3d b9 0d 3d a4 18 20 20  | . test%=..=..  |
0000ac30  20 fd 20 69 25 3d 31 36  20 84 20 74 65 73 74 25  | . i%=16 . test%|
0000ac40  3d b9 0d 3d ae 11 20 20  20 c8 8e 20 74 65 73 74  |=..=..   .. test|
0000ac50  25 20 ca 0d 3d b8 0a 20  20 20 c9 20 b9 0d 3d c2  |% ..=..   . ..=.|
0000ac60  51 20 20 20 20 f2 41 6c  65 72 74 42 6f 78 28 54  |Q    .AlertBox(T|
0000ac70  61 73 6b 24 2c 22 41 70  70 6c 69 63 61 74 69 6f  |ask$,"Applicatio|
0000ac80  6e 20 61 6c 72 65 61 64  79 20 72 65 73 70 6f 6e  |n already respon|
0000ac90  64 73 20 74 6f 20 66 69  6c 65 73 20 6f 66 20 74  |ds to files of t|
0000aca0  79 70 65 20 3a 20 22 2b  74 79 70 65 24 29 0d 3d  |ype : "+type$).=|
0000acb0  cc 08 20 20 20 7f 0d 3d  d6 0f 20 20 20 6e 65 78  |..   ..=..   nex|
0000acc0  74 25 2b 3d 31 0d 3d e0  14 20 20 20 c8 8e 20 6e  |t%+=1.=..   .. n|
0000acd0  65 78 74 25 3e 31 36 20  ca 0d 3d ea 2f 20 20 20  |ext%>16 ..=./   |
0000ace0  c9 20 b9 20 3a 20 f2 41  6c 65 72 74 42 6f 78 28  |. . : .AlertBox(|
0000acf0  54 61 73 6b 24 2c 22 54  6f 6f 20 6d 61 6e 79 20  |Task$,"Too many |
0000ad00  74 79 70 65 73 21 22 29  0d 3d f4 0a 20 20 20 7f  |types!").=..   .|
0000ad10  20 3a 0d 3d fe 1a 20 20  20 20 54 79 70 65 24 28  | :.=..    Type$(|
0000ad20  6e 65 78 74 25 29 3d 74  79 70 65 24 0d 3e 08 58  |next%)=type$.>.X|
0000ad30  20 20 20 20 f2 41 6c 65  72 74 42 6f 78 28 54 61  |    .AlertBox(Ta|
0000ad40  73 6b 24 2c 22 41 70 70  6c 69 63 61 74 69 6f 6e  |sk$,"Application|
0000ad50  20 77 69 6c 6c 20 72 65  73 70 6f 6e 64 20 74 6f  | will respond to|
0000ad60  20 6c 6f 61 64 69 6e 67  20 6f 66 20 66 69 6c 65  | loading of file|
0000ad70  73 20 6f 66 20 74 79 70  65 20 3a 20 22 2b 74 79  |s of type : "+ty|
0000ad80  70 65 24 29 0d 3e 12 08  20 20 20 cb 0d 3e 1c 08  |pe$).>..   ..>..|
0000ad90  20 20 20 cb 0d 3e 26 06  20 cb 0d 3e 30 06 20 e1  |   ..>&. ..>0. .|
0000ada0  0d 3e 3a 05 3a 0d 3e 44  24 20 dd 20 f2 44 65 61  |.>:.:.>D$ . .Dea|
0000adb0  6c 57 69 74 68 4c 6f 61  64 69 6e 67 53 79 73 74  |lWithLoadingSyst|
0000adc0  65 6d 53 70 72 69 74 65  73 0d 3e 4e 37 20 20 ea  |emSprites.>N7  .|
0000add0  20 66 69 6c 65 25 2c 6f  66 66 73 65 74 25 2c 78  | file%,offset%,x|
0000ade0  24 2c 78 25 2c 79 25 2c  69 25 2c 6a 25 2c 4e 6f  |$,x%,y%,i%,j%,No|
0000adf0  4f 66 53 70 72 69 74 65  73 25 2c 74 65 73 74 25  |OfSprites%,test%|
0000ae00  0d 3e 58 0d 20 20 74 65  73 74 25 3d a3 0d 3e 62  |.>X.  test%=..>b|
0000ae10  14 20 20 53 53 70 72 69  74 65 24 3d 66 69 6c 65  |.  SSprite$=file|
0000ae20  24 0d 3e 6c 14 20 20 66  69 6c 65 25 3d 8e 28 66  |$.>l.  file%=.(f|
0000ae30  69 6c 65 24 29 0d 3e 76  1b 20 20 20 4e 6f 4f 66  |ile$).>v.   NoOf|
0000ae40  53 70 72 69 74 65 73 25  3d 9a 23 66 69 6c 65 25  |Sprites%=.#file%|
0000ae50  0d 3e 80 36 20 20 20 79  25 3d 30 20 3a 20 cf 23  |.>.6   y%=0 : .#|
0000ae60  66 69 6c 65 25 3d 34 20  3a 20 6f 66 66 73 65 74  |file%=4 : offset|
0000ae70  25 3d 9a 23 66 69 6c 65  25 20 3a 20 6f 66 66 73  |%=.#file% : offs|
0000ae80  65 74 25 2d 3d 34 0d 3e  8a 0b 20 20 20 6a 25 3d  |et%-=4.>..   j%=|
0000ae90  30 0d 3e 94 0e 20 20 20  f5 20 6a 25 2b 3d 31 0d  |0.>..   . j%+=1.|
0000aea0  3e 9e 2c 20 20 20 20 6f  66 66 73 65 74 25 2b 3d  |>.,    offset%+=|
0000aeb0  79 25 20 3a 20 cf 23 66  69 6c 65 25 3d 6f 66 66  |y% : .#file%=off|
0000aec0  73 65 74 25 20 3a 20 79  25 3d 30 0d 3e a8 16 20  |set% : y%=0.>.. |
0000aed0  20 20 20 e3 20 69 25 3d  30 20 b8 20 32 34 20 88  |   . i%=0 . 24 .|
0000aee0  38 0d 3e b2 13 20 20 20  20 20 78 25 3d 9a 23 66  |8.>..     x%=.#f|
0000aef0  69 6c 65 25 0d 3e bc 13  20 20 20 20 20 79 25 2b  |ile%.>..     y%+|
0000af00  3d 78 25 3c 3c 69 25 0d  3e c6 09 20 20 20 20 ed  |=x%<<i%.>..    .|
0000af10  0d 3e d0 1f 20 20 20 20  78 24 3d be 23 66 69 6c  |.>..    x$=.#fil|
0000af20  65 25 20 3a 20 78 24 3d  c0 78 24 2c 31 30 29 0d  |e% : x$=.x$,10).|
0000af30  3e da 0e 20 20 20 20 c8  8e 20 b9 20 ca 0d 3e e4  |>..    .. . ..>.|
0000af40  1a 20 20 20 20 20 c9 20  c0 78 24 2c 31 29 3d 22  |.     . .x$,1)="|
0000af50  21 22 20 20 20 20 3a 0d  3e ee 44 20 20 20 20 20  |!"    :.>.D     |
0000af60  20 78 25 3d a4 43 61 6e  63 65 6c 42 6f 78 28 54  | x%=.CancelBox(T|
0000af70  61 73 6b 24 2c 22 43 68  61 6e 67 65 20 41 70 70  |ask$,"Change App|
0000af80  6c 69 63 61 74 69 6f 6e  20 4e 61 6d 65 20 74 6f  |lication Name to|
0000af90  20 22 2b 78 24 2b 22 20  3f 22 29 0d 3e f8 11 20  | "+x$+" ?").>.. |
0000afa0  20 20 20 20 20 c8 8e 20  78 25 20 ca 0d 3f 02 0f  |     .. x% ..?..|
0000afb0  20 20 20 20 20 20 c9 20  31 20 3a 0d 3f 0c 12 20  |      . 1 :.?.. |
0000afc0  20 20 20 20 20 20 74 65  73 74 25 3d b9 0d 3f 16  |      test%=..?.|
0000afd0  13 20 20 20 20 20 20 20  4e 61 6d 65 24 3d 78 24  |.       Name$=x$|
0000afe0  0d 3f 20 23 20 20 20 20  20 20 20 ff 28 22 2a 49  |.? #       .("*I|
0000aff0  63 6f 6e 53 70 72 69 74  65 73 20 22 2b 66 69 6c  |conSprites "+fil|
0000b000  65 24 29 0d 3f 2a 2c 20  20 20 20 20 20 20 f2 49  |e$).?*,       .I|
0000b010  63 6f 6e 5f 4d 61 6b 65  54 65 78 74 28 53 61 76  |con_MakeText(Sav|
0000b020  65 5f 57 69 6e 64 6f 77  25 2c 31 2c 78 24 29 0d  |e_Window%,1,x$).|
0000b030  3f 34 3b 20 20 20 20 20  20 20 78 25 3d a4 69 63  |?4;       x%=.ic|
0000b040  6f 6e 5f 6e 65 77 73 70  72 69 74 65 28 77 69 6d  |on_newsprite(wim|
0000b050  70 25 2c 53 61 76 65 5f  57 69 6e 64 6f 77 25 2c  |p%,Save_Window%,|
0000b060  30 2c 4e 61 6d 65 24 2c  a3 29 0d 3f 3e 14 20 20  |0,Name$,.).?>.  |
0000b070  20 20 20 20 20 c8 8e 20  42 61 72 25 20 ca 0d 3f  |     .. Bar% ..?|
0000b080  48 10 20 20 20 20 20 20  20 c9 20 b9 20 3a 0d 3f  |H.       . . :.?|
0000b090  52 20 20 20 20 20 20 20  20 20 78 79 25 3d a7 4d  |R         xy%=.M|
0000b0a0  65 6e 75 24 28 30 2c 31  29 2c 22 5c 22 29 0d 3f  |enu$(0,1),"\").?|
0000b0b0  5c 43 20 20 20 20 20 20  20 20 4d 65 6e 75 24 28  |\C        Menu$(|
0000b0c0  30 2c 31 29 3d a4 72 65  6d 28 4e 61 6d 65 24 29  |0,1)=.rem(Name$)|
0000b0d0  2b c2 4d 65 6e 75 24 28  30 2c 31 29 2c a9 28 4d  |+.Menu$(0,1),.(M|
0000b0e0  65 6e 75 24 28 30 2c 31  29 29 2d 78 79 25 2b 31  |enu$(0,1))-xy%+1|
0000b0f0  29 0d 3f 66 0c 20 20 20  20 20 20 20 cb 0d 3f 70  |).?f.       ..?p|
0000b100  0b 20 20 20 20 20 20 cb  0d 3f 7a 09 20 20 20 20  |.      ..?z.    |
0000b110  cb 0d 3f 84 21 20 20 20  fd 20 6a 25 3e 3d 4e 6f  |..?.!   . j%>=No|
0000b120  4f 66 53 70 72 69 74 65  73 25 20 84 20 74 65 73  |OfSprites% . tes|
0000b130  74 25 0d 3f 8e 17 20 20  d9 23 66 69 6c 65 25 20  |t%.?..  .#file% |
0000b140  3a 20 66 69 6c 65 25 3d  30 0d 3f 98 06 20 e1 0d  |: file%=0.?.. ..|
0000b150  3f a2 05 3a 0d 3f ac 21  20 dd 20 f2 44 65 61 6c  |?..:.?.! . .Deal|
0000b160  57 69 74 68 4c 6f 61 64  69 6e 67 53 70 72 69 74  |WithLoadingSprit|
0000b170  65 46 69 6c 65 0d 3f b6  13 20 20 53 70 72 69 74  |eFile.?..  Sprit|
0000b180  65 24 3d 66 69 6c 65 24  0d 3f c0 06 20 e1 0d 3f  |e$=file$.?.. ..?|
0000b190  ca 05 3a 0d 3f d4 1f 20  dd 20 f2 44 65 61 6c 57  |..:.?.. . .DealW|
0000b1a0  69 74 68 4c 6f 61 64 69  6e 67 54 65 6d 70 6c 61  |ithLoadingTempla|
0000b1b0  74 65 0d 3f de 15 20 20  54 65 6d 70 6c 61 74 65  |te.?..  Template|
0000b1c0  24 3d 66 69 6c 65 24 0d  3f e8 22 20 20 77 69 6d  |$=file$.?."  wim|
0000b1d0  70 5f 6d 65 6d 6f 72 79  25 3d 30 20 3a 20 69 6e  |p_memory%=0 : in|
0000b1e0  64 69 72 65 63 74 25 3d  30 0d 3f f2 13 20 20 f2  |direct%=0.?..  .|
0000b1f0  4c 6f 61 64 5f 57 69 6e  64 6f 77 73 0d 3f fc 06  |Load_Windows.?..|
0000b200  20 e1 0d 40 06 06 20 3a  0d 40 10 15 20 20 dd 20  | ..@.. :.@..  . |
0000b210  f2 4c 6f 61 64 5f 57 69  6e 64 6f 77 73 0d 40 1a  |.Load_Windows.@.|
0000b220  2e 20 20 20 ea 20 6e 25  2c 78 24 20 3a 20 6e 25  |.   . n%,x$ : n%|
0000b230  3d 30 20 3a 20 4e 6f 4f  66 57 69 6e 64 6f 77 73  |=0 : NoOfWindows|
0000b240  25 3d 30 20 3a 20 78 24  3d 22 22 0d 40 24 22 20  |%=0 : x$="".@$" |
0000b250  20 20 c8 8e 20 a4 46 69  6c 65 5f 4c 6f 61 64 28  |  .. .File_Load(|
0000b260  54 65 6d 70 6c 61 74 65  24 29 20 20 ca 0d 40 2e  |Template$)  ..@.|
0000b270  0d 20 20 20 20 c9 20 a3  20 3a 0d 40 38 58 20 20  |.    . . :.@8X  |
0000b280  20 20 20 f2 41 6c 65 72  74 42 6f 78 28 22 57 69  |   .AlertBox("Wi|
0000b290  6d 70 45 64 22 2c 22 54  65 6d 70 6c 61 74 65 73  |mpEd","Templates|
0000b2a0  20 63 6f 6e 74 61 69 6e  20 66 6f 6e 74 20 64 61  | contain font da|
0000b2b0  74 61 21 20 57 69 6d 70  45 64 20 63 61 6e 6e 6f  |ta! WimpEd canno|
0000b2c0  74 20 6c 6f 61 64 20 74  68 69 73 20 66 69 6c 65  |t load this file|
0000b2d0  22 29 0d 40 42 0b 20 20  20 20 7f 20 3a 0d 40 4c  |").@B.    . :.@L|
0000b2e0  28 20 20 20 20 ff 28 22  4c 4f 41 44 20 22 2b 54  |(    .("LOAD "+T|
0000b2f0  65 6d 70 6c 61 74 65 24  2b 22 20 22 2b c3 7e 66  |emplate$+" "+.~f|
0000b300  69 6c 65 25 29 0d 40 56  1b 20 20 20 20 54 65 6d  |ile%).@V.    Tem|
0000b310  70 6c 61 74 65 73 25 3d  66 69 6c 65 25 2b 31 36  |plates%=file%+16|
0000b320  0d 40 60 08 20 20 20 f5  0d 40 6a 17 20 20 20 20  |.@`.   ..@j.    |
0000b330  4e 6f 4f 66 57 69 6e 64  6f 77 73 25 2b 3d 31 0d  |NoOfWindows%+=1.|
0000b340  40 74 0e 20 20 20 20 6e  25 2b 3d 32 34 0d 40 7e  |@t.    n%+=24.@~|
0000b350  18 20 20 20 fd 20 54 65  6d 70 6c 61 74 65 73 25  |.   . Templates%|
0000b360  21 6e 25 3d 30 0d 40 88  18 20 20 20 c8 8e 20 4e  |!n%=0.@..   .. N|
0000b370  6f 4f 66 57 69 6e 64 6f  77 73 25 20 ca 0d 40 92  |oOfWindows% ..@.|
0000b380  0b 20 20 20 c9 20 30 3a  0d 40 9c 09 20 20 20 7f  |.   . 0:.@..   .|
0000b390  3a 0d 40 a6 49 20 20 20  de 20 57 69 6e 64 6f 77  |:.@.I   . Window|
0000b3a0  24 28 4e 6f 4f 66 57 69  6e 64 6f 77 73 25 29 2c  |$(NoOfWindows%),|
0000b3b0  57 69 6e 64 6f 77 25 28  4e 6f 4f 66 57 69 6e 64  |Window%(NoOfWind|
0000b3c0  6f 77 73 25 29 2c 43 6c  69 63 6b 25 28 4e 6f 4f  |ows%),Click%(NoO|
0000b3d0  66 57 69 6e 64 6f 77 73  25 29 0d 40 b0 43 20 20  |fWindows%).@.C  |
0000b3e0  20 de 20 4d 65 6e 75 24  28 4e 6f 4f 66 57 69 6e  | . Menu$(NoOfWin|
0000b3f0  64 6f 77 73 25 2c 4e 6f  4f 66 4d 65 6e 75 73 25  |dows%,NoOfMenus%|
0000b400  29 2c 4e 6f 4f 66 53 75  62 6d 65 6e 75 73 25 28  |),NoOfSubmenus%(|
0000b410  4e 6f 4f 66 57 69 6e 64  6f 77 73 25 29 0d 40 ba  |NoOfWindows%).@.|
0000b420  44 20 20 20 de 20 46 6c  61 67 25 28 4e 6f 4f 66  |D   . Flag%(NoOf|
0000b430  57 69 6e 64 6f 77 73 25  29 2c 4f 70 65 6e 25 28  |Windows%),Open%(|
0000b440  4e 6f 4f 66 57 69 6e 64  6f 77 73 25 29 2c 45 78  |NoOfWindows%),Ex|
0000b450  69 74 25 28 4e 6f 4f 66  57 69 6e 64 6f 77 73 25  |it%(NoOfWindows%|
0000b460  29 0d 40 c4 1e 20 20 20  4f 70 65 6e 25 28 29 3d  |).@..   Open%()=|
0000b470  a3 20 3a 20 45 78 69 74  25 28 29 3d a3 20 3a 0d  |. : Exit%()=. :.|
0000b480  40 ce 1c 20 20 20 e3 20  6e 25 3d 31 20 b8 20 4e  |@..   . n%=1 . N|
0000b490  6f 4f 66 57 69 6e 64 6f  77 73 25 0d 40 d8 2e 20  |oOfWindows%.@.. |
0000b4a0  20 20 20 57 69 6e 64 6f  77 24 28 6e 25 29 3d 24  |   Window$(n%)=$|
0000b4b0  28 54 65 6d 70 6c 61 74  65 73 25 2b 31 32 2b 32  |(Templates%+12+2|
0000b4c0  34 2a 28 6e 25 2d 31 29  29 0d 40 e2 36 20 20 20  |4*(n%-1)).@.6   |
0000b4d0  20 57 69 6e 64 6f 77 25  28 6e 25 29 3d a4 57 69  | Window%(n%)=.Wi|
0000b4e0  6e 64 6f 77 5f 47 65 74  28 57 69 6e 64 6f 77 24  |ndow_Get(Window$|
0000b4f0  28 6e 25 29 2c 54 65 6d  70 6c 61 74 65 24 29 0d  |(n%),Template$).|
0000b500  40 ec 20 20 20 20 20 43  6c 69 63 6b 25 28 6e 25  |@.     Click%(n%|
0000b510  29 3d 73 70 72 69 74 65  73 5f 6f 6e 6c 79 25 0d  |)=sprites_only%.|
0000b520  40 f6 1b 20 20 20 20 78  24 2b 3d 22 5c 22 2b 57  |@..    x$+="\"+W|
0000b530  69 6e 64 6f 77 24 28 6e  25 29 0d 41 00 1b 20 20  |indow$(n%).A..  |
0000b540  20 20 4e 6f 4f 66 53 75  62 6d 65 6e 75 73 25 28  |  NoOfSubmenus%(|
0000b550  6e 25 29 3d 31 0d 41 0a  4e 20 20 20 20 4d 65 6e  |n%)=1.A.N    Men|
0000b560  75 24 28 6e 25 2c 30 29  3d 22 4d 65 6e 75 20 4d  |u$(n%,0)="Menu M|
0000b570  61 6b 65 72 5c 43 6c 6f  73 65 20 57 69 6e 64 6f  |aker\Close Windo|
0000b580  77 5c 4d 65 6e 75 3e 31  5c 52 75 6e 20 20 20 89  |w\Menu>1\Run   .|
0000b590  20 4f 70 65 6e 5c 43 6c  6f 73 65 20 89 20 45 78  | Open\Close . Ex|
0000b5a0  69 74 22 0d 41 14 23 20  20 20 20 4d 65 6e 75 24  |it".A.#    Menu$|
0000b5b0  28 6e 25 2c 31 29 3d 57  69 6e 64 6f 77 24 28 6e  |(n%,1)=Window$(n|
0000b5c0  25 29 2b 22 5c 22 0d 41  1e 08 20 20 20 ed 0d 41  |%)+"\".A..   ..A|
0000b5d0  28 2c 20 20 20 57 69 6e  64 5f 4d 65 6e 75 25 3d  |(,   Wind_Menu%=|
0000b5e0  a4 4d 65 6e 75 5f 43 72  65 61 74 65 28 22 57 69  |.Menu_Create("Wi|
0000b5f0  6e 64 6f 77 73 22 2b 78  24 29 0d 41 32 2f 20 20  |ndows"+x$).A2/  |
0000b600  20 57 69 6e 64 6f 77 73  5f 4d 65 6e 75 25 3d a4  | Windows_Menu%=.|
0000b610  4d 65 6e 75 5f 43 72 65  61 74 65 28 22 57 69 6e  |Menu_Create("Win|
0000b620  64 6f 77 73 22 2b 78 24  29 0d 41 3c 1c 20 20 20  |dows"+x$).A<.   |
0000b630  e3 20 6e 25 3d 31 20 b8  20 4e 6f 4f 66 57 69 6e  |. n%=1 . NoOfWin|
0000b640  64 6f 77 73 25 0d 41 46  3c 20 20 20 20 e7 20 43  |dows%.AF<    . C|
0000b650  6c 69 63 6b 25 28 6e 25  29 20 8c 20 f2 4d 65 6e  |lick%(n%) . .Men|
0000b660  75 5f 43 6f 6c 6f 75 72  49 74 65 6d 28 57 69 6e  |u_ColourItem(Win|
0000b670  64 6f 77 73 5f 4d 65 6e  75 25 2c 6e 25 2c 31 31  |dows_Menu%,n%,11|
0000b680  29 0d 41 50 08 20 20 20  ed 0d 41 5a 11 20 20 20  |).AP.   ..AZ.   |
0000b690  43 6c 69 63 6b 25 28 29  3d a3 0d 41 64 21 20 20  |Click%()=..Ad!  |
0000b6a0  20 20 f2 4d 65 6e 75 5f  45 6e 61 62 6c 65 28 42  |  .Menu_Enable(B|
0000b6b0  61 72 5f 4d 65 6e 75 25  2c 33 29 0d 41 6e 21 20  |ar_Menu%,3).An! |
0000b6c0  20 20 20 f2 4d 65 6e 75  5f 45 6e 61 62 6c 65 28  |   .Menu_Enable(|
0000b6d0  42 61 72 5f 4d 65 6e 75  25 2c 34 29 0d 41 78 2d  |Bar_Menu%,4).Ax-|
0000b6e0  20 20 20 20 f2 4d 65 6e  75 5f 47 6c 75 65 28 42  |    .Menu_Glue(B|
0000b6f0  61 72 5f 4d 65 6e 75 25  2c 33 2c 57 69 6e 64 6f  |ar_Menu%,3,Windo|
0000b700  77 73 5f 4d 65 6e 75 25  29 0d 41 82 43 20 20 20  |ws_Menu%).A.C   |
0000b710  45 64 69 74 5f 4d 65 6e  75 25 3d a4 4d 65 6e 75  |Edit_Menu%=.Menu|
0000b720  5f 43 72 65 61 74 65 28  22 45 64 69 74 5c 5c 44  |_Create("Edit\\D|
0000b730  65 6c 65 74 65 5c 49 6e  73 65 72 74 20 41 62 6f  |elete\Insert Abo|
0000b740  76 65 5c 53 75 62 6d 65  6e 75 22 29 0d 41 8c 36  |ve\Submenu").A.6|
0000b750  20 20 20 53 75 62 5f 4d  65 6e 75 25 3d a4 4d 65  |   Sub_Menu%=.Me|
0000b760  6e 75 5f 43 72 65 61 74  65 28 22 20 53 75 62 6d  |nu_Create(" Subm|
0000b770  65 6e 75 20 5c 5c 43 6f  6c 6f 75 72 73 22 2b 78  |enu \\Colours"+x|
0000b780  24 29 0d 41 96 2b 20 20  20 49 6e 73 65 72 74 5f  |$).A.+   Insert_|
0000b790  4d 65 6e 75 25 3d a4 4d  65 6e 75 5f 43 72 65 61  |Menu%=.Menu_Crea|
0000b7a0  74 65 28 22 49 6e 73 65  72 74 5c 22 29 0d 41 a0  |te("Insert\").A.|
0000b7b0  26 20 20 20 20 f2 4d 65  6e 75 5f 44 6f 74 74 65  |&    .Menu_Dotte|
0000b7c0  64 4c 69 6e 65 28 45 64  69 74 5f 4d 65 6e 75 25  |dLine(Edit_Menu%|
0000b7d0  2c 31 29 0d 41 aa 2a 20  20 20 20 f2 4d 65 6e 75  |,1).A.*    .Menu|
0000b7e0  5f 47 6c 75 65 28 45 64  69 74 5f 4d 65 6e 75 25  |_Glue(Edit_Menu%|
0000b7f0  2c 34 2c 53 75 62 5f 4d  65 6e 75 25 29 0d 41 b4  |,4,Sub_Menu%).A.|
0000b800  2d 20 20 20 20 f2 4d 65  6e 75 5f 47 6c 75 65 28  |-    .Menu_Glue(|
0000b810  45 64 69 74 5f 4d 65 6e  75 25 2c 33 2c 49 6e 73  |Edit_Menu%,3,Ins|
0000b820  65 72 74 5f 4d 65 6e 75  25 29 0d 41 be 26 20 20  |ert_Menu%).A.&  |
0000b830  20 20 f2 4d 65 6e 75 5f  44 6f 74 74 65 64 4c 69  |  .Menu_DottedLi|
0000b840  6e 65 28 45 64 69 74 5f  4d 65 6e 75 25 2c 33 29  |ne(Edit_Menu%,3)|
0000b850  0d 41 c8 25 20 20 20 20  f2 4d 65 6e 75 5f 44 6f  |.A.%    .Menu_Do|
0000b860  74 74 65 64 4c 69 6e 65  28 53 75 62 5f 4d 65 6e  |ttedLine(Sub_Men|
0000b870  75 25 2c 31 29 0d 41 d2  25 20 20 20 20 f2 4d 65  |u%,1).A.%    .Me|
0000b880  6e 75 5f 44 6f 74 74 65  64 4c 69 6e 65 28 53 75  |nu_DottedLine(Su|
0000b890  62 5f 4d 65 6e 75 25 2c  32 29 0d 41 dc 14 20 20  |b_Menu%,2).A..  |
0000b8a0  20 20 24 42 75 66 66 65  72 31 25 3d 22 22 0d 41  |  $Buffer1%="".A|
0000b8b0  e6 3b 20 20 20 20 f2 4d  65 6e 75 5f 57 72 69 74  |.;    .Menu_Writ|
0000b8c0  65 28 45 64 69 74 5f 4d  65 6e 75 25 2c 31 2c 42  |e(Edit_Menu%,1,B|
0000b8d0  75 66 66 65 72 25 2c 2d  31 2c 42 75 66 66 65 72  |uffer%,-1,Buffer|
0000b8e0  5f 4c 65 6e 67 74 68 25  29 0d 41 f0 3b 20 20 20  |_Length%).A.;   |
0000b8f0  20 f2 4d 65 6e 75 5f 57  72 69 74 65 28 53 75 62  | .Menu_Write(Sub|
0000b900  5f 4d 65 6e 75 25 2c 31  2c 42 75 66 66 65 72 31  |_Menu%,1,Buffer1|
0000b910  25 2c 2d 31 2c 42 75 66  66 65 72 5f 4c 65 6e 67  |%,-1,Buffer_Leng|
0000b920  74 68 25 29 0d 41 fa 3e  20 20 20 20 f2 4d 65 6e  |th%).A.>    .Men|
0000b930  75 5f 57 72 69 74 65 28  49 6e 73 65 72 74 5f 4d  |u_Write(Insert_M|
0000b940  65 6e 75 25 2c 31 2c 42  75 66 66 65 72 32 25 2c  |enu%,1,Buffer2%,|
0000b950  2d 31 2c 42 75 66 66 65  72 5f 4c 65 6e 67 74 68  |-1,Buffer_Length|
0000b960  25 29 0d 42 04 3d 20 20  20 20 57 69 6e 64 6f 77  |%).B.=    Window|
0000b970  24 28 30 29 3d 22 42 61  72 22 20 3a 20 57 69 6e  |$(0)="Bar" : Win|
0000b980  64 6f 77 25 28 30 29 3d  2d 32 20 3a 20 4e 6f 4f  |dow%(0)=-2 : NoO|
0000b990  66 53 75 62 6d 65 6e 75  73 25 28 30 29 3d 31 0d  |fSubmenus%(0)=1.|
0000b9a0  42 0e 36 20 20 20 20 4d  65 6e 75 24 28 30 2c 30  |B.6    Menu$(0,0|
0000b9b0  29 3d 22 49 63 6f 6e 20  42 61 72 5c 43 6c 6f 73  |)="Icon Bar\Clos|
0000b9c0  65 5c 4d 65 6e 75 3e 31  5c 43 6c 69 63 6b 20 4f  |e\Menu>1\Click O|
0000b9d0  70 65 6e 73 22 0d 42 18  19 20 20 20 20 4e 61 6d  |pens".B..    Nam|
0000b9e0  65 24 3d a4 72 65 6d 28  4e 61 6d 65 24 29 0d 42  |e$=.rem(Name$).B|
0000b9f0  22 1c 20 20 20 20 4d 65  6e 75 24 28 30 2c 31 29  |".    Menu$(0,1)|
0000ba00  3d 4e 61 6d 65 24 2b 22  5c 22 0d 42 2c 1d 20 20  |=Name$+"\".B,.  |
0000ba10  20 20 e3 20 6e 25 3d 31  20 b8 20 4e 6f 4f 66 57  |  . n%=1 . NoOfW|
0000ba20  69 6e 64 6f 77 73 25 0d  42 36 19 20 20 20 20 20  |indows%.B6.     |
0000ba30  c8 8e 20 57 69 6e 64 6f  77 24 28 6e 25 29 20 ca  |.. Window$(n%) .|
0000ba40  0d 42 40 20 20 20 20 20  20 20 c9 20 22 49 6e 66  |.B@       . "Inf|
0000ba50  6f 22 2c 22 69 6e 66 6f  22 2c 22 49 4e 46 4f 22  |o","info","INFO"|
0000ba60  0d 42 4a 31 20 20 20 20  20 20 20 4d 65 6e 75 24  |.BJ1       Menu$|
0000ba70  28 30 2c 31 29 2b 3d 22  49 6e 66 6f 3e 22 2b c3  |(0,1)+="Info>"+.|
0000ba80  28 57 69 6e 64 6f 77 25  28 6e 25 29 29 2b 22 5c  |(Window%(n%))+"\|
0000ba90  22 0d 42 54 0a 20 20 20  20 20 cb 0d 42 5e 09 20  |".BT.     ..B^. |
0000baa0  20 20 20 ed 0d 42 68 1b  20 20 20 20 4d 65 6e 75  |   ..Bh.    Menu|
0000bab0  24 28 30 2c 31 29 2b 3d  22 51 75 69 74 5c 22 0d  |$(0,1)+="Quit\".|
0000bac0  42 72 09 20 20 20 20 cb  0d 42 7c 07 20 20 cb 0d  |Br.    ..B|.  ..|
0000bad0  42 86 07 20 20 e1 0d 42  90 05 3a 0d 42 9a 0e dd  |B..  ..B..:.B...|
0000bae0  20 a4 72 65 6d 28 78 24  29 0d 42 a4 19 e7 20 c2  | .rem(x$).B... .|
0000baf0  78 24 29 3d bd 30 20 8c  3d c0 78 24 29 20 8b 3d  |x$)=.0 .=.x$) .=|
0000bb00  78 24 0d 42 ae 05 3a 0d  42 b8 4e f4 2d 2d 2d 2d  |x$.B..:.B.N.----|
0000bb10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000bb50  2d 2d 2d 2d 2d 0d 42 c2  4e f4 2d 2d 2d 2d 2d 2d  |-----.B.N.------|
0000bb60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000bba0  2d 2d 2d 0d 42 cc 05 f4  0d 42 d6 31 f4 20 20 20  |---.B....B.1.   |
0000bbb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bbc0  20 20 20 57 49 4d 50 20  50 52 4f 43 45 44 55 52  |   WIMP PROCEDUR|
0000bbd0  45 20 4c 49 42 52 41 52  59 0d 42 e0 05 f4 0d 42  |E LIBRARY.B....B|
0000bbe0  ea 15 f4 40 20 20 20 20  20 20 20 20 20 20 49 4e  |...@          IN|
0000bbf0  44 45 58 0d 42 f4 05 f4  0d 42 fe 1b f4 2a 2a 2a  |DEX.B....B...***|
0000bc00  2a 2a 2a 2a 50 4f 4c 4c  49 4e 47 20 52 4f 55 54  |****POLLING ROUT|
0000bc10  49 4e 45 0d 43 08 19 f4  2a 2a 2a 2a 2a 2a 2a 57  |INE.C...*******W|
0000bc20  49 4d 50 20 52 4f 55 54  49 4e 45 53 0d 43 12 1b  |IMP ROUTINES.C..|
0000bc30  f4 2a 2a 2a 2a 2a 2a 2a  57 49 4e 44 4f 57 20 52  |.*******WINDOW R|
0000bc40  4f 55 54 49 4e 45 53 0d  43 1c 19 f4 2a 2a 2a 2a  |OUTINES.C...****|
0000bc50  2a 2a 2a 49 43 4f 4e 20  52 4f 55 54 49 4e 45 53  |***ICON ROUTINES|
0000bc60  0d 43 26 19 f4 2a 2a 2a  2a 2a 2a 2a 4d 45 4e 55  |.C&..*******MENU|
0000bc70  20 52 4f 55 54 49 4e 45  53 0d 43 30 19 f4 2a 2a  | ROUTINES.C0..**|
0000bc80  2a 2a 2a 2a 2a 46 49 4c  45 20 52 4f 55 54 49 4e  |*****FILE ROUTIN|
0000bc90  45 53 0d 43 3a 1b f4 2a  2a 2a 2a 2a 2a 2a 53 50  |ES.C:..*******SP|
0000bca0  52 49 54 45 20 52 4f 55  54 49 4e 45 53 0d 43 44  |RITE ROUTINES.CD|
0000bcb0  19 f4 2a 2a 2a 2a 2a 2a  2a 4d 49 53 43 45 4c 4c  |..*******MISCELL|
0000bcc0  41 4e 45 4f 55 53 0d 43  4e 05 f4 0d 43 58 4e f4  |ANEOUS.CN...CXN.|
0000bcd0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000bd10  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 43 62 4e f4 2d 2d  |---------.CbN.--|
0000bd20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000bd60  2d 2d 2d 2d 2d 2d 2d 0d  43 6c 05 3a 0d 43 76 23  |-------.Cl.:.Cv#|
0000bd70  f4 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
0000bd80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
0000bd90  43 80 1b f4 2a 2a 2a 2a  2a 2a 2a 50 4f 4c 4c 49  |C...*******POLLI|
0000bda0  4e 47 20 52 4f 55 54 49  4e 45 0d 43 8a 23 f4 2d  |NG ROUTINE.C.#.-|
0000bdb0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000bdc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 43 94  |-------------.C.|
0000bdd0  05 3a 0d 43 9e 1f dd 20  f2 57 69 6d 70 5f 57 61  |.:.C... .Wimp_Wa|
0000bde0  69 74 46 6f 72 45 76 65  6e 74 28 6d 61 73 6b 25  |itForEvent(mask%|
0000bdf0  29 0d 43 a8 0f 66 69 6e  69 73 68 65 64 25 3d a3  |).C..finished%=.|
0000be00  0d 43 b2 35 6d 61 73 6b  25 3d 6d 61 73 6b 25 84  |.C.5mask%=mask%.|
0000be10  28 28 31 3c 3c 32 29 2b  28 31 3c 3c 33 29 2b 28  |((1<<2)+(1<<3)+(|
0000be20  31 3c 3c 37 29 2b 28 31  3c 3c 39 29 2b 28 31 3c  |1<<7)+(1<<9)+(1<|
0000be30  3c 31 30 29 29 0d 43 bc  31 6d 61 73 6b 25 3d 6d  |<10)).C.1mask%=m|
0000be40  61 73 6b 25 84 28 28 31  3c 3c 31 33 29 2b 28 31  |ask%.((1<<13)+(1|
0000be50  3c 3c 31 34 29 2b 28 31  3c 3c 31 35 29 2b 28 31  |<<14)+(1<<15)+(1|
0000be60  3c 3c 31 36 29 29 0d 43  c6 31 6d 61 73 6b 25 3d  |<<16)).C.1mask%=|
0000be70  6d 61 73 6b 25 84 25 31  31 31 31 31 31 31 31 31  |mask%.%111111111|
0000be80  31 31 31 30 30 30 30 30  30 30 30 30 30 30 30 30  |1110000000000000|
0000be90  30 30 30 30 30 30 30 0d  43 d0 12 6d 61 73 6b 25  |0000000.C..mask%|
0000bea0  3d ac 28 6d 61 73 6b 25  29 0d 43 da 05 f5 0d 43  |=.(mask%).C....C|
0000beb0  e4 28 20 c8 99 20 22 57  69 6d 70 5f 50 6f 6c 6c  |.( .. "Wimp_Poll|
0000bec0  22 2c 6d 61 73 6b 25 2c  77 69 6d 70 25 20 b8 20  |",mask%,wimp% . |
0000bed0  65 76 65 6e 74 25 0d 43  ee 52 20 e7 20 77 69 6d  |event%.C.R . wim|
0000bee0  70 25 21 30 3d 53 61 76  65 5f 57 69 6e 64 6f 77  |p%!0=Save_Window|
0000bef0  25 20 84 20 77 69 6d 70  25 21 31 32 3d 53 61 76  |% . wimp%!12=Sav|
0000bf00  65 5f 57 69 6e 64 6f 77  25 20 8c 20 f2 53 61 76  |e_Window% . .Sav|
0000bf10  65 5f 45 76 65 6e 74 20  8b 20 f2 4e 6f 6e 53 61  |e_Event . .NonSa|
0000bf20  76 65 5f 45 76 65 6e 74  0d 43 f8 0f fd 20 66 69  |ve_Event.C... fi|
0000bf30  6e 69 73 68 65 64 25 0d  44 02 05 e1 0d 44 0c 05  |nished%.D....D..|
0000bf40  3a 0d 44 16 14 dd 20 f2  4e 6f 6e 53 61 76 65 5f  |:.D... .NonSave_|
0000bf50  45 76 65 6e 74 0d 44 20  0f c8 8e 20 65 76 65 6e  |Event.D ... even|
0000bf60  74 25 20 ca 0d 44 2a 2c  20 c9 20 30 20 3a 20 f2  |t% ..D*, . 0 : .|
0000bf70  45 76 65 6e 74 5f 44 65  61 6c 57 69 74 68 4e 75  |Event_DealWithNu|
0000bf80  6c 6c 45 76 65 6e 74 28  77 69 6d 70 25 21 30 29  |llEvent(wimp%!0)|
0000bf90  0d 44 34 19 20 c9 20 31  20 3a 20 f2 57 69 6e 64  |.D4. . 1 : .Wind|
0000bfa0  6f 77 5f 52 65 64 72 61  77 0d 44 3e 21 20 c9 20  |ow_Redraw.D>! . |
0000bfb0  32 20 3a 20 f2 57 69 6e  64 6f 77 5f 4f 70 65 6e  |2 : .Window_Open|
0000bfc0  28 21 77 69 6d 70 25 2c  31 29 0d 44 48 20 20 c9  |(!wimp%,1).DH  .|
0000bfd0  20 33 20 3a 20 f2 57 69  6e 64 6f 77 5f 43 6c 6f  | 3 : .Window_Clo|
0000bfe0  73 65 28 21 77 69 6d 70  25 29 0d 44 52 0a 20 c9  |se(!wimp%).DR. .|
0000bff0  20 34 20 3a 0d 44 5c 0a  20 c9 20 35 20 3a 0d 44  | 4 :.D\. . 5 :.D|
0000c000  66 0a 20 c9 20 36 20 3a  0d 44 70 49 20 f2 45 76  |f. . 6 :.DpI .Ev|
0000c010  65 6e 74 5f 44 65 61 6c  57 69 74 68 4d 6f 75 73  |ent_DealWithMous|
0000c020  65 43 6c 69 63 6b 28 77  69 6d 70 25 21 38 2c 77  |eClick(wimp%!8,w|
0000c030  69 6d 70 25 21 31 32 2c  77 69 6d 70 25 21 31 36  |imp%!12,wimp%!16|
0000c040  2c 77 69 6d 70 25 21 30  2c 77 69 6d 70 25 21 34  |,wimp%!0,wimp%!4|
0000c050  29 0d 44 7a 1d 20 c9 20  37 20 3a 20 f2 45 76 65  |).Dz. . 7 : .Eve|
0000c060  6e 74 5f 53 61 76 65 4d  65 73 73 61 67 65 0d 44  |nt_SaveMessage.D|
0000c070  84 3e 20 c9 20 38 20 3a  20 f2 45 76 65 6e 74 5f  |.> . 8 : .Event_|
0000c080  44 65 61 6c 57 69 74 68  4b 65 79 50 72 65 73 73  |DealWithKeyPress|
0000c090  65 64 28 77 69 6d 70 25  21 30 2c 77 69 6d 70 25  |ed(wimp%!0,wimp%|
0000c0a0  21 34 2c 77 69 6d 70 25  21 32 34 29 0d 44 8e 0a  |!4,wimp%!24).D..|
0000c0b0  20 c9 20 39 20 3a 0d 44  98 27 20 20 20 20 20 20  | . 9 :.D.'      |
0000c0c0  20 20 20 20 f2 45 76 65  6e 74 5f 44 65 61 6c 57  |    .Event_DealW|
0000c0d0  69 74 68 4d 65 6e 75 43  68 6f 69 63 65 0d 44 a2  |ithMenuChoice.D.|
0000c0e0  2a 20 c9 20 31 37 2c 31  38 20 3a 20 78 78 25 3d  |* . 17,18 : xx%=|
0000c0f0  77 69 6d 70 25 21 32 30  20 3a 20 79 79 25 3d 77  |wimp%!20 : yy%=w|
0000c100  69 6d 70 25 21 32 34 0d  44 ac 3b 20 20 20 20 20  |imp%!24.D.;     |
0000c110  20 20 20 20 20 20 20 20  20 c8 8e 20 77 69 6d 70  |         .. wimp|
0000c120  25 21 31 36 3d 6d 65 73  73 61 67 65 5f 73 61 76  |%!16=message_sav|
0000c130  65 25 20 80 20 77 69 6d  70 25 21 33 36 3e 2d 31  |e% . wimp%!36>-1|
0000c140  20 ca 0d 44 b6 16 20 20  20 20 20 20 20 20 20 20  | ..D..          |
0000c150  20 20 20 20 c9 20 b9 3a  0d 44 c0 27 20 20 20 20  |    . .:.D.'    |
0000c160  20 20 20 20 20 20 20 20  20 20 20 66 69 6c 65 24  |           file$|
0000c170  3d a4 46 69 6c 65 5f 50  61 74 68 4e 61 6d 65 0d  |=.File_PathName.|
0000c180  44 ca 34 20 20 20 20 20  20 20 20 20 20 20 20 20  |D.4             |
0000c190  20 20 f2 45 76 65 6e 74  5f 44 65 61 6c 57 69 74  |  .Event_DealWit|
0000c1a0  68 4d 65 73 73 61 67 65  73 28 77 69 6d 70 25 21  |hMessages(wimp%!|
0000c1b0  31 36 29 0d 44 d4 37 20  20 20 20 20 20 20 20 20  |16).D.7         |
0000c1c0  20 20 20 20 20 20 f2 49  63 6f 6e 5f 4d 61 6b 65  |      .Icon_Make|
0000c1d0  54 65 78 74 28 53 61 76  65 5f 57 69 6e 64 6f 77  |Text(Save_Window|
0000c1e0  25 2c 31 2c 66 69 6c 65  24 29 0d 44 de 14 20 20  |%,1,file$).D..  |
0000c1f0  20 20 20 20 20 20 20 20  20 20 20 20 7f 3a 0d 44  |            .:.D|
0000c200  e8 34 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.4              |
0000c210  20 f2 45 76 65 6e 74 5f  44 65 61 6c 57 69 74 68  | .Event_DealWith|
0000c220  4d 65 73 73 61 67 65 73  28 77 69 6d 70 25 21 31  |Messages(wimp%!1|
0000c230  36 29 0d 44 f2 13 20 20  20 20 20 20 20 20 20 20  |6).D..          |
0000c240  20 20 20 20 cb 0d 44 fc  05 cb 0d 45 06 05 e1 0d  |    ..D....E....|
0000c250  45 10 05 3a 0d 45 1a 23  f4 2d 2d 2d 2d 2d 2d 2d  |E..:.E.#.-------|
0000c260  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000c270  2d 2d 2d 2d 2d 2d 2d 0d  45 24 1b f4 20 20 20 20  |-------.E$..    |
0000c280  20 20 20 20 20 53 41 56  45 20 52 4f 55 54 49 4e  |     SAVE ROUTIN|
0000c290  45 53 0d 45 2e 23 f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ES.E.#.---------|
0000c2a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000c2b0  2d 2d 2d 2d 2d 0d 45 38  05 3a 0d 45 42 11 dd 20  |-----.E8.:.EB.. |
0000c2c0  f2 53 61 76 65 5f 45 76  65 6e 74 0d 45 4c 11 20  |.Save_Event.EL. |
0000c2d0  c8 8e 20 77 69 6d 70 25  21 30 20 ca 0d 45 56 21  |.. wimp%!0 ..EV!|
0000c2e0  20 20 c9 20 53 61 76 65  5f 57 69 6e 64 6f 77 25  |  . Save_Window%|
0000c2f0  20 3a 20 f2 46 69 6c 65  5f 53 61 76 65 0d 45 60  | : .File_Save.E`|
0000c300  1f 20 20 7f 20 20 20 20  20 20 20 20 20 3a 20 c8  |.  .         : .|
0000c310  8e 20 77 69 6d 70 25 21  31 36 20 ca 0d 45 6a 20  |. wimp%!16 ..Ej |
0000c320  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000c330  20 20 20 20 20 20 20 c9  20 30 20 3a 0d 45 74 45  |       . 0 :.EtE|
0000c340  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000c350  20 20 20 20 20 20 20 20  e7 20 77 69 6d 70 25 21  |        . wimp%!|
0000c360  38 20 80 20 26 35 30 20  8c 20 f2 44 72 61 67 5f  |8 . &50 . .Drag_|
0000c370  42 6f 78 28 53 61 76 65  5f 57 69 6e 64 6f 77 25  |Box(Save_Window%|
0000c380  29 0d 45 7e 20 20 20 20  20 20 20 20 20 20 20 20  |).E~            |
0000c390  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 32 20  |            . 2 |
0000c3a0  3a 0d 45 88 36 20 20 20  20 20 20 20 20 20 20 20  |:.E.6           |
0000c3b0  20 20 20 20 20 20 20 20  20 20 20 20 20 e7 20 77  |             . w|
0000c3c0  69 6d 70 25 21 38 20 80  20 35 20 8c 20 f2 46 69  |imp%!8 . 5 . .Fi|
0000c3d0  6c 65 5f 53 61 76 65 0d  45 92 1b 20 20 20 20 20  |le_Save.E..     |
0000c3e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000c3f0  20 cb 0d 45 9c 06 20 cb  0d 45 a6 05 e1 0d 45 b0  | ..E.. ..E....E.|
0000c400  05 3a 0d 45 ba 11 20 dd  20 f2 46 69 6c 65 5f 53  |.:.E.. . .File_S|
0000c410  61 76 65 0d 45 c4 09 20  ea 20 78 24 0d 45 ce 25  |ave.E.. . x$.E.%|
0000c420  20 78 24 3d a4 49 63 6f  6e 5f 47 65 74 54 65 78  | x$=.Icon_GetTex|
0000c430  74 28 53 61 76 65 5f 57  69 6e 64 6f 77 25 2c 31  |t(Save_Window%,1|
0000c440  29 0d 45 d8 12 20 c8 8e  20 a7 78 24 2c 22 2e 22  |).E.. .. .x$,"."|
0000c450  29 20 ca 0d 45 e2 0e 20  20 c9 20 30 20 20 20 20  |) ..E..  . 0    |
0000c460  3a 0d 45 ec 46 20 20 20  f2 41 6c 65 72 74 42 6f  |:.E.F   .AlertBo|
0000c470  78 28 54 61 73 6b 24 2c  22 54 6f 20 73 61 76 65  |x(Task$,"To save|
0000c480  2c 20 64 72 61 67 20 74  68 65 20 69 63 6f 6e 20  |, drag the icon |
0000c490  74 6f 20 61 20 64 69 72  65 63 74 6f 72 79 20 77  |to a directory w|
0000c4a0  69 6e 64 6f 77 22 29 0d  45 f6 09 20 20 7f 20 3a  |indow").E..  . :|
0000c4b0  0d 46 00 20 20 20 20 f2  44 65 61 6c 57 69 74 68  |.F.    .DealWith|
0000c4c0  53 61 76 69 6e 67 4f 66  46 69 6c 65 28 78 24 29  |SavingOfFile(x$)|
0000c4d0  0d 46 0a 06 20 cb 0d 46  14 1c 20 c8 99 20 22 57  |.F.. ..F.. .. "W|
0000c4e0  69 6d 70 5f 43 72 65 61  74 65 4d 65 6e 75 22 2c  |imp_CreateMenu",|
0000c4f0  2d 31 0d 46 1e 06 20 e1  0d 46 28 05 3a 0d 46 32  |-1.F.. ..F(.:.F2|
0000c500  19 20 dd 20 f2 44 72 61  67 5f 42 6f 78 28 77 69  |. . .Drag_Box(wi|
0000c510  6e 64 6f 77 25 29 0d 46  3c 0e 20 ea 20 6f 78 25  |ndow%).F<. . ox%|
0000c520  2c 6f 79 25 0d 46 46 14  20 20 21 77 69 6d 70 25  |,oy%.FF.  !wimp%|
0000c530  3d 77 69 6e 64 6f 77 25  0d 46 50 25 20 20 c8 99  |=window%.FP%  ..|
0000c540  20 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  | "Wimp_GetWindow|
0000c550  53 74 61 74 65 22 2c 2c  77 69 6d 70 25 0d 46 5a  |State",,wimp%.FZ|
0000c560  33 20 20 6f 78 25 3d 77  69 6d 70 25 21 34 2d 77  |3  ox%=wimp%!4-w|
0000c570  69 6d 70 25 21 32 30 20  20 3a 20 6f 79 25 3d 77  |imp%!20  : oy%=w|
0000c580  69 6d 70 25 21 31 36 2d  77 69 6d 70 25 21 32 34  |imp%!16-wimp%!24|
0000c590  0d 46 64 0f 20 20 77 69  6d 70 25 21 34 3d 30 0d  |.Fd.  wimp%!4=0.|
0000c5a0  46 6e 23 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |Fn#  .. "Wimp_Ge|
0000c5b0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 77 69 6d  |tIconState",,wim|
0000c5c0  70 25 0d 46 78 14 20 20  21 77 69 6d 70 25 3d 77  |p%.Fx.  !wimp%=w|
0000c5d0  69 6e 64 6f 77 25 0d 46  82 0f 20 20 77 69 6d 70  |indow%.F..  wimp|
0000c5e0  25 21 34 3d 35 0d 46 8c  34 20 20 77 69 6d 70 25  |%!4=5.F.4  wimp%|
0000c5f0  21 38 3d 6f 78 25 2b 77  69 6d 70 25 21 38 20 20  |!8=ox%+wimp%!8  |
0000c600  20 20 3a 20 77 69 6d 70  25 21 31 32 3d 6f 79 25  |  : wimp%!12=oy%|
0000c610  2b 77 69 6d 70 25 21 31  32 0d 46 96 34 20 20 77  |+wimp%!12.F.4  w|
0000c620  69 6d 70 25 21 31 36 3d  6f 78 25 2b 77 69 6d 70  |imp%!16=ox%+wimp|
0000c630  25 21 31 36 20 20 3a 20  77 69 6d 70 25 21 32 30  |%!16  : wimp%!20|
0000c640  3d 6f 79 25 2b 77 69 6d  70 25 21 32 30 0d 46 a0  |=oy%+wimp%!20.F.|
0000c650  1b 20 20 77 69 6d 70 25  21 32 34 3d 30 3a 77 69  |.  wimp%!24=0:wi|
0000c660  6d 70 25 21 32 38 3d 30  0d 46 aa 2e 20 20 77 69  |mp%!28=0.F..  wi|
0000c670  6d 70 25 21 33 32 3d 26  37 46 46 46 46 46 46 46  |mp%!32=&7FFFFFFF|
0000c680  20 20 3a 20 77 69 6d 70  25 21 33 36 3d 26 37 46  |  : wimp%!36=&7F|
0000c690  46 46 46 46 46 46 0d 46  b4 1e 20 20 c8 99 20 22  |FFFFFF.F..  .. "|
0000c6a0  57 69 6d 70 5f 44 72 61  67 42 6f 78 22 2c 2c 77  |Wimp_DragBox",,w|
0000c6b0  69 6d 70 25 0d 46 be 06  20 e1 0d 46 c8 05 3a 0d  |imp%.F.. ..F..:.|
0000c6c0  46 d2 19 20 dd 20 f2 45  76 65 6e 74 5f 53 61 76  |F.. . .Event_Sav|
0000c6d0  65 4d 65 73 73 61 67 65  0d 46 dc 21 20 20 ea 20  |eMessage.F.!  . |
0000c6e0  66 69 6c 65 24 2c 77 69  6e 64 6f 77 25 2c 69 63  |file$,window%,ic|
0000c6f0  6f 6e 25 2c 78 25 2c 79  25 0d 46 e6 25 20 20 c8  |on%,x%,y%.F.%  .|
0000c700  99 20 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |. "Wimp_GetPoint|
0000c710  65 72 49 6e 66 6f 22 2c  2c 77 69 6d 70 25 0d 46  |erInfo",,wimp%.F|
0000c720  f0 43 20 20 77 69 6e 64  6f 77 25 3d 77 69 6d 70  |.C  window%=wimp|
0000c730  25 21 31 32 20 3a 20 69  63 6f 6e 25 3d 77 69 6d  |%!12 : icon%=wim|
0000c740  70 25 21 31 36 20 20 3a  20 78 25 3d 77 69 6d 70  |p%!16  : x%=wimp|
0000c750  25 21 30 20 20 3a 20 79  25 3d 77 69 6d 70 25 21  |%!0  : y%=wimp%!|
0000c760  34 0d 46 fa 33 20 20 66  69 6c 65 24 3d a4 47 65  |4.F.3  file$=.Ge|
0000c770  74 4c 65 61 66 28 a4 49  63 6f 6e 5f 47 65 74 54  |tLeaf(.Icon_GetT|
0000c780  65 78 74 28 53 61 76 65  5f 57 69 6e 64 6f 77 25  |ext(Save_Window%|
0000c790  2c 31 29 29 0d 47 04 16  20 20 77 69 6d 70 25 21  |,1)).G..  wimp%!|
0000c7a0  32 30 3d 77 69 6e 64 6f  77 25 0d 47 0e 14 20 20  |20=window%.G..  |
0000c7b0  77 69 6d 70 25 21 32 34  3d 69 63 6f 6e 25 0d 47  |wimp%!24=icon%.G|
0000c7c0  18 1f 20 20 77 69 6d 70  25 21 32 38 3d 78 25 20  |..  wimp%!28=x% |
0000c7d0  3a 20 77 69 6d 70 25 21  33 32 3d 79 25 0d 47 22  |: wimp%!32=y%.G"|
0000c7e0  16 20 20 77 69 6d 70 25  21 33 36 3d 6c 65 6e 67  |.  wimp%!36=leng|
0000c7f0  74 68 25 0d 47 2c 10 20  20 77 69 6d 70 25 21 30  |th%.G,.  wimp%!0|
0000c800  3d 36 34 0d 47 36 10 20  20 77 69 6d 70 25 21 31  |=64.G6.  wimp%!1|
0000c810  32 3d 30 0d 47 40 10 20  20 77 69 6d 70 25 21 31  |2=0.G@.  wimp%!1|
0000c820  36 3d 31 0d 47 4a 13 20  20 77 69 6d 70 25 21 34  |6=1.GJ.  wimp%!4|
0000c830  30 3d 26 46 46 46 0d 47  54 17 20 20 24 28 77 69  |0=&FFF.GT.  $(wi|
0000c840  6d 70 25 2b 34 34 29 3d  66 69 6c 65 24 0d 47 5e  |mp%+44)=file$.G^|
0000c850  36 20 20 c8 99 20 22 57  69 6d 70 5f 53 65 6e 64  |6  .. "Wimp_Send|
0000c860  4d 65 73 73 61 67 65 22  2c 31 37 2c 77 69 6d 70  |Message",17,wimp|
0000c870  25 2c 77 69 6d 70 25 21  32 30 2c 77 69 6d 70 25  |%,wimp%!20,wimp%|
0000c880  21 32 34 0d 47 68 06 20  e1 0d 47 72 05 3a 0d 47  |!24.Gh. ..Gr.:.G|
0000c890  7c 16 20 dd 20 a4 47 65  74 4c 65 61 66 28 6e 61  ||. . .GetLeaf(na|
0000c8a0  6d 65 24 29 0d 47 86 14  20 20 c8 95 20 a7 6e 61  |me$).G..  .. .na|
0000c8b0  6d 65 24 2c 22 2e 22 29  0d 47 90 22 20 20 20 6e  |me$,".").G."   n|
0000c8c0  61 6d 65 24 3d c1 6e 61  6d 65 24 2c a7 6e 61 6d  |ame$=.name$,.nam|
0000c8d0  65 24 2c 22 2e 22 29 2b  31 29 0d 47 9a 07 20 20  |e$,".")+1).G..  |
0000c8e0  ce 0d 47 a4 10 20 3d 6e  61 6d 65 24 2b bd 28 30  |..G.. =name$+.(0|
0000c8f0  29 0d 47 ae 05 3a 0d 47  b8 23 f4 2d 2d 2d 2d 2d  |).G..:.G.#.-----|
0000c900  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000c910  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 47 c2 19 f4 2a 2a  |---------.G...**|
0000c920  2a 2a 2a 2a 2a 57 49 4d  50 20 52 4f 55 54 49 4e  |*****WIMP ROUTIN|
0000c930  45 53 0d 47 cc 23 f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ES.G.#.---------|
0000c940  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000c950  2d 2d 2d 2d 2d 0d 47 d6  05 3a 0d 47 e0 1d dd 20  |-----.G..:.G... |
0000c960  f2 57 69 6d 70 5f 53 65  74 45 76 65 6e 74 56 61  |.Wimp_SetEventVa|
0000c970  72 69 61 62 6c 65 73 0d  47 ea 06 f4 23 0d 47 f4  |riables.G...#.G.|
0000c980  2e 20 de 20 77 69 6d 70  25 20 62 6c 6f 63 6b 5f  |. . wimp% block_|
0000c990  6d 65 6d 6f 72 79 25 2c  69 63 6f 6e 73 25 20 69  |memory%,icons% i|
0000c9a0  63 6f 6e 5f 6d 65 6d 6f  72 79 25 0d 47 fe 23 20  |con_memory%.G.# |
0000c9b0  20 69 63 6f 6e 5f 65 6e  64 25 3d 69 63 6f 6e 73  | icon_end%=icons|
0000c9c0  25 2b 69 63 6f 6e 5f 6d  65 6d 6f 72 79 25 0d 48  |%+icon_memory%.H|
0000c9d0  08 17 20 de 20 70 6f 69  6e 74 65 72 5f 77 69 6d  |.. . pointer_wim|
0000c9e0  70 25 20 32 30 0d 48 12  05 f4 0d 48 1c 47 20 6e  |p% 20.H....H.G n|
0000c9f0  75 6c 6c 25 3d 31 20 20  20 20 20 20 20 20 20 20  |ull%=1          |
0000ca00  20 20 20 20 20 20 3a 20  64 72 61 77 25 3d 32 20  |      : draw%=2 |
0000ca10  20 20 20 20 20 20 20 20  20 20 3a 20 70 6f 69 6e  |          : poin|
0000ca20  74 65 72 5f 6c 65 61 76  69 6e 67 25 3d 31 3c 3c  |ter_leaving%=1<<|
0000ca30  34 0d 48 26 3c 20 70 6f  69 6e 74 65 72 5f 65 6e  |4.H&< pointer_en|
0000ca40  74 65 72 69 6e 67 25 3d  31 3c 3c 35 20 3a 20 6d  |tering%=1<<5 : m|
0000ca50  6f 75 73 65 25 3d 31 3c  3c 36 20 20 20 20 20 20  |ouse%=1<<6      |
0000ca60  20 3a 20 64 72 61 67 25  3d 31 3c 3c 37 0d 48 30  | : drag%=1<<7.H0|
0000ca70  3f 20 6b 65 79 25 3d 31  3c 3c 38 20 20 20 20 20  |? key%=1<<8     |
0000ca80  20 20 20 20 20 20 20 20  20 3a 20 6d 65 6e 75 25  |         : menu%|
0000ca90  3d 31 3c 3c 39 20 20 20  20 20 20 20 20 3a 20 73  |=1<<9        : s|
0000caa0  63 72 6f 6c 6c 25 3d 31  3c 3c 31 30 0d 48 3a 4a  |croll%=1<<10.H:J|
0000cab0  20 6c 6f 73 65 5f 63 61  72 65 74 25 3d 31 3c 3c  | lose_caret%=1<<|
0000cac0  31 31 20 20 20 20 20 20  3a 20 67 61 69 6e 5f 63  |11      : gain_c|
0000cad0  61 72 65 74 25 3d 31 3c  3c 31 32 20 3a 20 6d 65  |aret%=1<<12 : me|
0000cae0  73 73 61 67 65 25 3d 28  31 3c 3c 31 37 29 2b 28  |ssage%=(1<<17)+(|
0000caf0  31 3c 3c 31 38 29 0d 48  44 3b 20 72 65 63 6f 72  |1<<18).HD; recor|
0000cb00  64 65 72 25 3d 31 3c 3c  31 38 20 20 20 20 20 20  |der%=1<<18      |
0000cb10  20 20 3a 20 61 63 6b 6e  6f 77 6c 65 64 67 65 25  |  : acknowledge%|
0000cb20  3d 31 3c 3c 31 39 3a 20  77 69 6e 64 6f 77 25 3d  |=1<<19: window%=|
0000cb30  30 0d 48 4e 39 20 73 70  72 69 74 65 73 25 3d 31  |0.HN9 sprites%=1|
0000cb40  20 20 20 20 20 20 20 20  20 20 20 20 20 3a 20 76  |             : v|
0000cb50  65 72 73 69 6f 6e 25 3d  30 20 20 20 20 20 20 20  |ersion%=0       |
0000cb60  20 3a 20 74 61 73 6b 25  3d 30 0d 48 58 3d 20 42  | : task%=0.HX= B|
0000cb70  61 72 5f 57 69 6e 64 6f  77 25 3d 2d 32 20 20 20  |ar_Window%=-2   |
0000cb80  20 20 20 20 20 20 3a 20  42 61 72 5f 49 63 6f 6e  |      : Bar_Icon|
0000cb90  25 3d 30 20 20 20 20 20  20 20 3a 20 42 61 72 5f  |%=0       : Bar_|
0000cba0  4d 65 6e 75 25 3d 30 0d  48 62 40 20 78 5f 6f 72  |Menu%=0.Hb@ x_or|
0000cbb0  69 67 69 6e 25 3d 30 20  20 20 20 20 20 20 20 20  |igin%=0         |
0000cbc0  20 20 20 3a 20 79 5f 6f  72 69 67 69 6e 25 3d 30  |   : y_origin%=0|
0000cbd0  20 20 20 20 20 20 20 3a  20 53 61 76 65 57 69 6e  |       : SaveWin|
0000cbe0  64 6f 77 25 3d 2d 33 0d  48 6c 41 20 6d 65 73 73  |dow%=-3.HlA mess|
0000cbf0  61 67 65 5f 71 75 69 74  25 3d 30 20 20 20 20 20  |age_quit%=0     |
0000cc00  20 20 20 3a 20 6d 65 73  73 61 67 65 5f 73 61 76  |   : message_sav|
0000cc10  65 25 3d 32 20 20 20 3a  20 6d 65 73 73 61 67 65  |e%=2   : message|
0000cc20  5f 6c 6f 61 64 25 3d 33  0d 48 76 14 20 6d 6f 75  |_load%=3.Hv. mou|
0000cc30  73 65 5f 62 75 74 74 6f  6e 25 3d 32 0d 48 80 05  |se_button%=2.H..|
0000cc40  e1 0d 48 8a 05 3a 0d 48  94 1c dd 20 a4 57 69 6d  |..H..:.H... .Wim|
0000cc50  70 5f 53 74 61 72 74 28  54 61 73 6b 4e 61 6d 65  |p_Start(TaskName|
0000cc60  24 29 0d 48 9e 1b f4 2e  2e 2e 49 6e 69 74 69 61  |$).H......Initia|
0000cc70  6c 69 73 65 73 20 61 20  74 61 73 6b 2e 0d 48 a8  |lises a task..H.|
0000cc80  27 f4 2e 2e 2e 53 65 65  20 70 61 67 65 20 31 31  |'....See page 11|
0000cc90  37 33 20 6f 66 20 52 69  73 63 4f 73 20 4d 61 6e  |73 of RiscOs Man|
0000cca0  75 61 6c 2e 0d 48 b2 05  f4 0d 48 bc 05 f4 0d 48  |ual..H....H....H|
0000ccb0  c6 1c 20 f2 57 69 6d 70  5f 53 65 74 45 76 65 6e  |.. .Wimp_SetEven|
0000ccc0  74 56 61 72 69 61 62 6c  65 73 0d 48 d0 22 20 ee  |tVariables.H." .|
0000ccd0  20 85 20 f2 45 72 72 6f  72 28 74 61 73 6b 25 2c  | . .Error(task%,|
0000cce0  54 61 73 6b 4e 61 6d 65  24 29 3a e0 0d 48 da 12  |TaskName$):..H..|
0000ccf0  20 24 77 69 6d 70 25 3d  22 54 41 53 4b 22 0d 48  | $wimp%="TASK".H|
0000cd00  e4 3f 20 c8 99 20 22 57  69 6d 70 5f 49 6e 69 74  |.? .. "Wimp_Init|
0000cd10  69 61 6c 69 73 65 22 2c  32 30 30 2c 21 77 69 6d  |ialise",200,!wim|
0000cd20  70 25 2c 54 61 73 6b 4e  61 6d 65 24 20 b8 20 76  |p%,TaskName$ . v|
0000cd30  65 72 73 69 6f 6e 25 2c  74 61 73 6b 25 0d 48 ee  |ersion%,task%.H.|
0000cd40  0e 3d 54 61 73 6b 4e 61  6d 65 24 0d 48 f8 05 3a  |.=TaskName$.H..:|
0000cd50  0d 49 02 10 dd 20 f2 57  69 6d 70 5f 51 75 69 74  |.I... .Wimp_Quit|
0000cd60  0d 49 0c 0f 66 69 6e 69  73 68 65 64 25 3d b9 0d  |.I..finished%=..|
0000cd70  49 16 05 e1 0d 49 20 05  3a 0d 49 2a 1d dd 20 f2  |I....I .:.I*.. .|
0000cd80  45 72 72 6f 72 28 74 61  73 6b 25 2c 54 61 73 6b  |Error(task%,Task|
0000cd90  4e 61 6d 65 24 29 0d 49  34 09 ee 20 85 20 87 0d  |Name$).I4.. . ..|
0000cda0  49 3e 12 de 20 45 72 72  6f 72 4d 73 67 25 20 33  |I>.. ErrorMsg% 3|
0000cdb0  36 0d 49 48 3d 45 72 72  6f 72 4d 73 67 25 21 30  |6.IH=ErrorMsg%!0|
0000cdc0  20 20 20 20 20 3d 20 33  36 20 20 20 20 20 20 20  |     = 36       |
0000cdd0  20 20 20 20 20 20 20 20  20 3a 20 f4 20 4c 65 6e  |         : . Len|
0000cde0  67 74 68 20 6f 66 20 6d  65 73 73 61 67 65 0d 49  |gth of message.I|
0000cdf0  52 47 45 72 72 6f 72 4d  73 67 25 21 31 32 20 20  |RGErrorMsg%!12  |
0000ce00  20 20 3d 20 30 20 20 20  20 20 20 20 20 20 20 20  |  = 0           |
0000ce10  20 20 20 20 20 20 3a 20  f4 20 54 68 69 73 20 69  |      : . This i|
0000ce20  73 20 61 6e 20 6f 72 69  67 69 6e 61 6c 20 6d 65  |s an original me|
0000ce30  73 73 61 67 65 0d 49 5c  47 45 72 72 6f 72 4d 73  |ssage.I\GErrorMs|
0000ce40  67 25 21 31 36 20 20 20  20 3d 20 26 38 31 30 38  |g%!16    = &8108|
0000ce50  30 20 20 20 20 20 20 20  20 20 20 20 20 3a 20 f4  |0            : .|
0000ce60  20 4d 65 73 73 61 67 65  20 6e 75 6d 62 65 72 20  | Message number |
0000ce70  74 6f 20 73 65 74 20 63  61 72 65 74 0d 49 66 3e  |to set caret.If>|
0000ce80  45 72 72 6f 72 4d 73 67  25 21 32 30 20 20 20 20  |ErrorMsg%!20    |
0000ce90  3d 20 9e 20 20 20 20 20  20 20 20 20 20 20 20 20  |= .             |
0000cea0  20 20 3a 20 f4 20 4c 69  6e 65 20 74 6f 20 70 75  |  : . Line to pu|
0000ceb0  74 20 63 61 72 65 74 20  6f 6e 0d 49 70 40 24 28  |t caret on.Ip@$(|
0000cec0  45 72 72 6f 72 4d 73 67  25 2b 32 34 29 20 3d 20  |ErrorMsg%+24) = |
0000ced0  22 21 52 75 6e 49 6d 61  67 65 20 20 20 22 20 20  |"!RunImage   "  |
0000cee0  20 20 3a 20 f4 20 46 69  6c 65 20 74 6f 20 70 75  |  : . File to pu|
0000cef0  74 20 63 61 72 65 74 20  6f 6e 0d 49 7a 26 c8 99  |t caret on.Iz&..|
0000cf00  20 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  | "Wimp_SendMessa|
0000cf10  67 65 22 2c 31 37 2c 45  72 72 6f 72 4d 73 67 25  |ge",17,ErrorMsg%|
0000cf20  0d 49 84 34 f2 57 69 6d  70 5f 41 6c 65 72 74 28  |.I.4.Wimp_Alert(|
0000cf30  54 61 73 6b 4e 61 6d 65  24 2c f6 24 2b 22 61 74  |TaskName$,.$+"at|
0000cf40  20 6c 69 6e 65 20 22 2b  c3 28 9e 20 81 20 31 30  | line "+.(. . 10|
0000cf50  29 2c 32 29 0d 49 8e 13  f2 57 69 6d 70 5f 43 6c  |),2).I...Wimp_Cl|
0000cf60  6f 73 65 44 6f 77 6e 0d  49 98 05 e1 0d 49 a2 05  |oseDown.I....I..|
0000cf70  3a 0d 49 ac 15 dd 20 f2  57 69 6d 70 5f 43 6c 6f  |:.I... .Wimp_Clo|
0000cf80  73 65 44 6f 77 6e 0d 49  b6 24 c8 99 20 22 57 69  |seDown.I.$.. "Wi|
0000cf90  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 22 2c 74 61  |mp_CloseDown",ta|
0000cfa0  73 6b 25 2c 22 54 41 53  4b 22 0d 49 c0 05 e1 0d  |sk%,"TASK".I....|
0000cfb0  49 ca 05 3a 0d 49 d4 23  f4 2d 2d 2d 2d 2d 2d 2d  |I..:.I.#.-------|
0000cfc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000cfd0  2d 2d 2d 2d 2d 2d 2d 0d  49 de 1b f4 2a 2a 2a 2a  |-------.I...****|
0000cfe0  2a 2a 2a 57 49 4e 44 4f  57 20 52 4f 55 54 49 4e  |***WINDOW ROUTIN|
0000cff0  45 53 0d 49 e8 23 f4 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ES.I.#.---------|
0000d000  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000d010  2d 2d 2d 2d 2d 0d 49 f2  05 3a 0d 49 fc 3d dd 20  |-----.I..:.I.=. |
0000d020  a4 57 69 6e 64 6f 77 5f  4c 6f 61 64 28 61 24 29  |.Window_Load(a$)|
0000d030  3d a4 57 69 6e 64 6f 77  5f 47 65 74 28 61 24 2c  |=.Window_Get(a$,|
0000d040  22 3c 4d 61 6b 65 24 44  69 72 3e 2e 54 65 6d 70  |"<Make$Dir>.Temp|
0000d050  6c 61 74 65 73 22 29 0d  4a 06 05 3a 0d 4a 10 1b  |lates").J..:.J..|
0000d060  dd 20 a4 57 69 6e 64 6f  77 5f 47 65 74 28 61 24  |. .Window_Get(a$|
0000d070  2c 70 61 74 68 24 29 0d  4a 1a 1a ea 20 63 25 2c  |,path$).J... c%,|
0000d080  69 63 25 2c 69 64 25 2c  69 6e 25 2c 69 25 2c 78  |ic%,id%,in%,i%,x|
0000d090  24 0d 4a 24 22 20 c8 99  20 22 57 69 6d 70 5f 4f  |$.J$" .. "Wimp_O|
0000d0a0  70 65 6e 54 65 6d 70 6c  61 74 65 22 2c 2c 70 61  |penTemplate",,pa|
0000d0b0  74 68 24 0d 4a 2e 0e 20  24 77 69 6d 70 25 3d 61  |th$.J.. $wimp%=a|
0000d0c0  24 0d 4a 38 0f 20 69 63  25 3d 69 63 6f 6e 73 25  |$.J8. ic%=icons%|
0000d0d0  0d 4a 42 49 20 c8 99 20  22 57 69 6d 70 5f 4c 6f  |.JBI .. "Wimp_Lo|
0000d0e0  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 77 69 6d  |adTemplate",,wim|
0000d0f0  70 25 2c 69 63 6f 6e 73  25 2c 69 63 6f 6e 5f 65  |p%,icons%,icon_e|
0000d100  6e 64 25 2c 2d 31 2c 77  69 6d 70 25 2c 30 20 b8  |nd%,-1,wimp%,0 .|
0000d110  20 2c 2c 69 63 6f 6e 73  25 0d 4a 4c 13 20 69 64  | ,,icons%.JL. id|
0000d120  25 3d 69 63 6f 6e 73 25  2d 69 63 25 0d 4a 56 16  |%=icons%-ic%.JV.|
0000d130  20 77 69 6d 70 25 21 36  34 3d 73 70 72 69 74 65  | wimp%!64=sprite|
0000d140  73 25 0d 4a 60 27 20 c8  99 20 22 57 69 6d 70 5f  |s%.J`' .. "Wimp_|
0000d150  43 72 65 61 74 65 57 69  6e 64 6f 77 22 2c 2c 77  |CreateWindow",,w|
0000d160  69 6d 70 25 20 b8 20 63  25 0d 4a 6a 1c 20 c8 99  |imp% . c%.Jj. ..|
0000d170  20 22 57 69 6d 70 5f 43  6c 6f 73 65 54 65 6d 70  | "Wimp_CloseTemp|
0000d180  6c 61 74 65 22 0d 4a 74  11 20 69 6e 25 3d 77 69  |late".Jt. in%=wi|
0000d190  6d 70 25 21 38 34 0d 4a  7e 16 20 69 6e 25 3d 38  |mp%!84.J~. in%=8|
0000d1a0  38 2b 33 32 2a 69 6e 25  2b 69 64 25 0d 4a 88 2a  |8+32*in%+id%.J.*|
0000d1b0  20 e7 20 77 69 6d 70 5f  6d 65 6d 6f 72 79 25 3c  | . wimp_memory%<|
0000d1c0  69 6e 25 20 8c 20 77 69  6d 70 5f 6d 65 6d 6f 72  |in% . wimp_memor|
0000d1d0  79 25 3d 69 6e 25 0d 4a  92 13 20 69 6e 64 69 72  |y%=in%.J.. indir|
0000d1e0  65 63 74 25 2b 3d 69 64  25 0d 4a 9c 37 20 c8 99  |ect%+=id%.J.7 ..|
0000d1f0  20 22 57 69 6d 70 5f 57  68 69 63 68 49 63 6f 6e  | "Wimp_WhichIcon|
0000d200  22 2c 63 25 2c 77 69 6d  70 25 2b 38 2c 31 2b 32  |",c%,wimp%+8,1+2|
0000d210  2b 28 31 3c 3c 38 29 2c  32 2b 28 31 3c 3c 38 29  |+(1<<8),2+(1<<8)|
0000d220  0d 4a a6 10 c8 8e 20 77  69 6d 70 25 21 38 20 ca  |.J.... wimp%!8 .|
0000d230  0d 4a b0 1d 20 c9 20 2d  31 20 20 20 3a 20 73 70  |.J.. . -1   : sp|
0000d240  72 69 74 65 73 5f 6f 6e  6c 79 25 3d a3 0d 4a ba  |rites_only%=..J.|
0000d250  1f 20 7f 20 3a 20 69 25  3d 38 20 3a 20 73 70 72  |. . : i%=8 : spr|
0000d260  69 74 65 73 5f 6f 6e 6c  79 25 3d b9 0d 4a c4 08  |ites_only%=..J..|
0000d270  20 20 20 f5 0d 4a ce 24  20 20 20 77 69 6d 70 25  |   ..J.$   wimp%|
0000d280  21 34 3d 77 69 6d 70 25  21 69 25 20 3a 20 77 69  |!4=wimp%!i% : wi|
0000d290  6d 70 25 21 30 3d 63 25  0d 4a d8 22 20 20 20 c8  |mp%!0=c%.J."   .|
0000d2a0  99 20 22 57 69 6d 70 5f  44 65 6c 65 74 65 49 63  |. "Wimp_DeleteIc|
0000d2b0  6f 6e 22 2c 2c 77 69 6d  70 25 0d 4a e2 0c 20 20  |on",,wimp%.J..  |
0000d2c0  20 69 25 2b 3d 34 0d 4a  ec 16 20 20 20 fd 20 28  | i%+=4.J..   . (|
0000d2d0  77 69 6d 70 25 21 69 25  29 3d 2d 31 0d 4a f6 05  |wimp%!i%)=-1.J..|
0000d2e0  cb 0d 4b 00 07 3d 63 25  0d 4b 0a 05 3a 0d 4b 14  |..K..=c%.K..:.K.|
0000d2f0  22 dd 20 f2 57 69 6e 64  6f 77 5f 4f 70 65 6e 28  |". .Window_Open(|
0000d300  77 69 6e 64 6f 77 25 2c  73 74 61 74 65 25 29 0d  |window%,state%).|
0000d310  4b 1e 12 21 77 69 6d 70  25 3d 77 69 6e 64 6f 77  |K..!wimp%=window|
0000d320  25 0d 4b 28 30 e7 20 73  74 61 74 65 25 3d 30 20  |%.K(0. state%=0 |
0000d330  8c 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 57 69  |. .. "Wimp_GetWi|
0000d340  6e 64 6f 77 53 74 61 74  65 22 2c 2c 77 69 6d 70  |ndowState",,wimp|
0000d350  25 0d 4b 32 1f c8 99 20  22 57 69 6d 70 5f 4f 70  |%.K2... "Wimp_Op|
0000d360  65 6e 57 69 6e 64 6f 77  22 2c 2c 77 69 6d 70 25  |enWindow",,wimp%|
0000d370  0d 4b 3c 05 e1 0d 4b 46  05 3a 0d 4b 50 1d dd 20  |.K<...KF.:.KP.. |
0000d380  f2 57 69 6e 64 6f 77 5f  4f 70 65 6e 55 70 28 77  |.Window_OpenUp(w|
0000d390  69 6e 64 6f 77 25 29 0d  4b 5a 1b f2 57 69 6e 64  |indow%).KZ..Wind|
0000d3a0  6f 77 5f 4f 70 65 6e 28  77 69 6e 64 6f 77 25 2c  |ow_Open(window%,|
0000d3b0  30 29 0d 4b 64 1e f2 57  69 6e 64 6f 77 5f 46 6f  |0).Kd..Window_Fo|
0000d3c0  72 63 65 44 72 61 77 28  77 69 6e 64 6f 77 25 29  |rceDraw(window%)|
0000d3d0  0d 4b 6e 05 e1 0d 4b 78  05 3a 0d 4b 82 1c dd 20  |.Kn...Kx.:.K... |
0000d3e0  f2 57 69 6e 64 6f 77 5f  43 6c 6f 73 65 28 77 69  |.Window_Close(wi|
0000d3f0  6e 64 6f 77 25 29 0d 4b  8c 12 21 77 69 6d 70 25  |ndow%).K..!wimp%|
0000d400  3d 77 69 6e 64 6f 77 25  0d 4b 96 20 c8 99 20 22  |=window%.K. .. "|
0000d410  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
0000d420  22 2c 2c 77 69 6d 70 25  0d 4b a0 05 e1 0d 4b aa  |",,wimp%.K....K.|
0000d430  05 3a 0d 4b b4 21 dd 20  f2 57 69 6e 64 6f 77 5f  |.:.K.!. .Window_|
0000d440  42 72 69 6e 67 54 6f 54  6f 70 28 77 69 6e 64 6f  |BringToTop(windo|
0000d450  77 25 29 0d 4b be 12 21  77 69 6d 70 25 3d 77 69  |w%).K..!wimp%=wi|
0000d460  6e 64 6f 77 25 0d 4b c8  23 c8 99 20 22 57 69 6d  |ndow%.K.#.. "Wim|
0000d470  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
0000d480  22 2c 2c 77 69 6d 70 25  0d 4b d2 0f 77 69 6d 70  |",,wimp%.K..wimp|
0000d490  25 21 32 38 3d 2d 31 0d  4b dc 1f c8 99 20 22 57  |%!28=-1.K.... "W|
0000d4a0  69 6d 70 5f 4f 70 65 6e  57 69 6e 64 6f 77 22 2c  |imp_OpenWindow",|
0000d4b0  2c 77 69 6d 70 25 0d 4b  e6 05 e1 0d 4b f0 05 3a  |,wimp%.K....K..:|
0000d4c0  0d 4b fa 14 dd 20 f2 57  69 6e 64 6f 77 5f 52 65  |.K... .Window_Re|
0000d4d0  64 72 61 77 0d 4c 04 0c  20 ea 20 6d 6f 72 65 25  |draw.L.. . more%|
0000d4e0  0d 4c 0e 2a 20 c8 99 20  22 57 69 6d 70 5f 52 65  |.L.* .. "Wimp_Re|
0000d4f0  64 72 61 77 57 69 6e 64  6f 77 22 2c 2c 77 69 6d  |drawWindow",,wim|
0000d500  70 25 20 b8 20 6d 6f 72  65 25 0d 4c 18 25 20 f2  |p% . more%.L.% .|
0000d510  57 69 6e 64 6f 77 5f 47  65 74 4f 72 69 67 69 6e  |Window_GetOrigin|
0000d520  28 77 69 6d 70 25 2c 78  30 25 2c 79 30 25 29 0d  |(wimp%,x0%,y0%).|
0000d530  4c 22 22 20 78 5f 6f 72  69 67 69 6e 25 3d 78 30  |L"" x_origin%=x0|
0000d540  25 20 3a 20 79 5f 6f 72  69 67 69 6e 25 3d 79 30  |% : y_origin%=y0|
0000d550  25 0d 4c 2c 0d 20 c8 95  20 6d 6f 72 65 25 0d 4c  |%.L,. .. more%.L|
0000d560  36 32 20 20 20 e7 20 69  6e 74 65 72 66 61 63 65  |62   . interface|
0000d570  25 20 8c 20 c8 99 22 57  69 6d 70 5f 42 6f 72 64  |% . .."Wimp_Bord|
0000d580  65 72 57 69 6e 64 6f 77  22 2c 2c 77 69 6d 70 25  |erWindow",,wimp%|
0000d590  0d 4c 40 21 20 20 20 f2  45 76 65 6e 74 5f 44 72  |.L@!   .Event_Dr|
0000d5a0  61 77 57 69 6e 64 6f 77  28 77 69 6d 70 25 21 30  |awWindow(wimp%!0|
0000d5b0  29 0d 4c 4a 2c 20 20 20  c8 99 20 22 57 69 6d 70  |).LJ,   .. "Wimp|
0000d5c0  5f 47 65 74 52 65 63 74  61 6e 67 6c 65 22 2c 2c  |_GetRectangle",,|
0000d5d0  77 69 6d 70 25 20 b8 20  6d 6f 72 65 25 0d 4c 54  |wimp% . more%.LT|
0000d5e0  06 20 ce 0d 4c 5e 06 20  e1 0d 4c 68 05 3a 0d 4c  |. ..L^. ..Lh.:.L|
0000d5f0  72 20 dd 20 f2 57 69 6e  64 6f 77 5f 46 6f 72 63  |r . .Window_Forc|
0000d600  65 44 72 61 77 28 77 69  6e 64 6f 77 25 29 0d 4c  |eDraw(window%).L|
0000d610  7c 10 c8 8e 20 77 69 6e  64 6f 77 25 20 ca 0d 4c  ||... window% ..L|
0000d620  86 38 20 c9 20 2d 31 20  20 20 3a 20 c8 99 20 22  |.8 . -1   : .. "|
0000d630  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
0000d640  22 2c 2d 31 2c 30 2c 30  2c 32 2a 31 32 38 30 2c  |",-1,0,0,2*1280,|
0000d650  32 2a 31 30 32 34 0d 4c  90 39 20 7f 20 3a 20 c8  |2*1024.L.9 . : .|
0000d660  99 20 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |. "Wimp_ForceRed|
0000d670  72 61 77 22 2c 77 69 6e  64 6f 77 25 2c 30 2c 2d  |raw",window%,0,-|
0000d680  32 2a 31 30 32 34 2c 32  2a 31 32 38 30 2c 30 0d  |2*1024,2*1280,0.|
0000d690  4c 9a 05 cb 0d 4c a4 05  e1 0d 4c ae 05 3a 0d 4c  |L....L....L..:.L|
0000d6a0  b8 2a dd 20 f2 57 69 6e  64 6f 77 5f 47 65 74 4f  |.*. .Window_GetO|
0000d6b0  72 69 67 69 6e 28 77 69  6d 70 25 2c f8 20 78 30  |rigin(wimp%,. x0|
0000d6c0  25 2c f8 20 79 30 25 29  0d 4c c2 18 78 30 25 3d  |%,. y0%).L..x0%=|
0000d6d0  77 69 6d 70 25 21 34 2d  77 69 6d 70 25 21 32 30  |wimp%!4-wimp%!20|
0000d6e0  0d 4c cc 19 79 30 25 3d  77 69 6d 70 25 21 31 36  |.L..y0%=wimp%!16|
0000d6f0  2d 77 69 6d 70 25 21 32  34 0d 4c d6 05 e1 0d 4c  |-wimp%!24.L....L|
0000d700  e0 05 3a 0d 4c ea 1c dd  20 a4 57 69 6e 64 6f 77  |..:.L... .Window|
0000d710  5f 54 69 74 6c 65 28 77  69 6e 64 6f 77 25 29 0d  |_Title(window%).|
0000d720  4c f4 14 20 77 69 6d 70  25 21 30 3d 77 69 6e 64  |L.. wimp%!0=wind|
0000d730  6f 77 25 0d 4c fe 21 20  c8 99 20 22 57 69 6d 70  |ow%.L.! .. "Wimp|
0000d740  5f 47 65 74 57 69 6e 64  49 6e 66 6f 22 2c 2c 77  |_GetWindInfo",,w|
0000d750  69 6d 70 25 0d 4d 08 37  20 e7 20 28 28 77 69 6d  |imp%.M.7 . ((wim|
0000d760  70 25 21 36 30 29 80 26  31 30 30 29 3d 30 20 85  |p%!60).&100)=0 .|
0000d770  20 31 2c 22 54 69 74 6c  65 20 69 73 6e 27 74 20  | 1,"Title isn't |
0000d780  69 6e 64 69 72 65 63 74  65 64 22 0d 4d 12 10 3d  |indirected".M..=|
0000d790  24 28 77 69 6d 70 25 21  37 36 29 0d 4d 1c 05 3a  |$(wimp%!76).M..:|
0000d7a0  0d 4d 26 17 dd 20 f2 57  69 6e 64 6f 77 5f 44 72  |.M&.. .Window_Dr|
0000d7b0  61 77 28 78 2c 79 29 0d  4d 30 1e 20 df 20 78 2d  |aw(x,y).M0. . x-|
0000d7c0  78 5f 6f 72 69 67 69 6e  25 2c 79 2d 79 5f 6f 72  |x_origin%,y-y_or|
0000d7d0  69 67 69 6e 25 0d 4d 3a  05 e1 0d 4d 44 05 3a 0d  |igin%.M:...MD.:.|
0000d7e0  4d 4e 17 dd 20 f2 57 69  6e 64 6f 77 5f 4d 6f 76  |MN.. .Window_Mov|
0000d7f0  65 28 78 2c 79 29 0d 4d  58 1e 20 ec 20 78 2b 78  |e(x,y).MX. . x+x|
0000d800  5f 6f 72 69 67 69 6e 25  2c 79 5f 6f 72 69 67 69  |_origin%,y_origi|
0000d810  6e 25 2b 79 0d 4d 62 05  e1 0d 4d 6c 05 3a 0d 4d  |n%+y.Mb...Ml.:.M|
0000d820  76 37 dd 20 f2 57 69 6e  64 6f 77 5f 52 65 63 74  |v7. .Window_Rect|
0000d830  61 6e 67 6c 65 46 69 6c  6c 28 78 2c 79 2c 77 69  |angleFill(x,y,wi|
0000d840  64 74 68 25 2c 68 65 69  67 68 74 25 2c 63 6f 6c  |dth%,height%,col|
0000d850  6f 75 72 25 29 0d 4d 80  1f c8 99 20 22 57 69 6d  |our%).M.... "Wim|
0000d860  70 5f 53 65 74 43 6f 6c  6f 75 72 22 2c 63 6f 6c  |p_SetColour",col|
0000d870  6f 75 72 25 0d 4d 8a 30  c8 93 20 c8 90 20 78 2d  |our%.M.0.. .. x-|
0000d880  78 5f 6f 72 69 67 69 6e  25 2c 79 5f 6f 72 69 67  |x_origin%,y_orig|
0000d890  69 6e 25 2b 79 2c 77 69  64 74 68 25 2c 68 65 69  |in%+y,width%,hei|
0000d8a0  67 68 74 25 0d 4d 94 05  e1 0d 4d 9e 05 3a 0d 4d  |ght%.M....M..:.M|
0000d8b0  a8 1d dd 20 f2 57 69 6e  64 6f 77 5f 4c 69 6e 65  |... .Window_Line|
0000d8c0  28 78 2c 79 2c 78 31 2c  79 31 29 0d 4d b2 38 20  |(x,y,x1,y1).M.8 |
0000d8d0  86 20 78 2b 78 5f 6f 72  69 67 69 6e 25 2c 79 2b  |. x+x_origin%,y+|
0000d8e0  79 5f 6f 72 69 67 69 6e  25 2c 78 31 2b 78 5f 6f  |y_origin%,x1+x_o|
0000d8f0  72 69 67 69 6e 25 2c 79  31 2b 79 5f 6f 72 69 67  |rigin%,y1+y_orig|
0000d900  69 6e 25 0d 4d bc 05 e1  0d 4d c6 05 3a 0d 4d d0  |in%.M....M..:.M.|
0000d910  16 dd 20 f2 57 69 6e 64  6f 77 5f 54 41 42 28 78  |.. .Window_TAB(x|
0000d920  2c 79 29 0d 4d da 24 20  ec 20 31 36 2a 78 2b 78  |,y).M.$ . 16*x+x|
0000d930  5f 6f 72 69 67 69 6e 25  2c 79 5f 6f 72 69 67 69  |_origin%,y_origi|
0000d940  6e 25 2d 33 32 2a 79 0d  4d e4 05 e1 0d 4d ee 05  |n%-32*y.M....M..|
0000d950  3a 0d 4d f8 23 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |:.M.#.----------|
0000d960  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000d970  2d 2d 2d 2d 0d 4e 02 19  f4 2a 2a 2a 2a 2a 2a 2a  |----.N...*******|
0000d980  49 43 4f 4e 20 52 4f 55  54 49 4e 45 53 0d 4e 0c  |ICON ROUTINES.N.|
0000d990  23 f4 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |#.--------------|
0000d9a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000d9b0  0d 4e 16 05 3a 0d 4e 20  18 dd 20 a4 49 63 6f 6e  |.N..:.N .. .Icon|
0000d9c0  5f 42 61 72 28 53 70 72  69 74 65 24 29 0d 4e 2a  |_Bar(Sprite$).N*|
0000d9d0  33 3d a4 49 63 6f 6e 5f  43 72 65 61 74 65 28 2d  |3=.Icon_Create(-|
0000d9e0  31 2c 30 2c 30 2c 36 38  2c 36 38 2c 26 33 30 30  |1,0,0,68,68,&300|
0000d9f0  32 2c 53 70 72 69 74 65  24 2c 30 2c 30 2c 30 29  |2,Sprite$,0,0,0)|
0000da00  0d 4e 34 05 3a 0d 4e 3e  43 dd 20 a4 49 63 6f 6e  |.N4.:.N>C. .Icon|
0000da10  5f 43 72 65 61 74 65 28  77 69 6e 64 6f 77 25 2c  |_Create(window%,|
0000da20  69 78 25 2c 69 79 25 2c  69 77 25 2c 69 68 25 2c  |ix%,iy%,iw%,ih%,|
0000da30  66 6c 61 67 25 2c 74 65  78 74 24 2c 64 31 25 2c  |flag%,text$,d1%,|
0000da40  64 32 25 2c 64 33 25 29  0d 4e 48 13 77 69 6d 70  |d2%,d3%).NH.wimp|
0000da50  25 21 30 3d 77 69 6e 64  6f 77 25 0d 4e 52 22 77  |%!0=window%.NR"w|
0000da60  69 6d 70 25 21 34 3d 69  78 25 20 20 20 20 20 20  |imp%!4=ix%      |
0000da70  3a 20 77 69 6d 70 25 21  38 3d 69 79 25 0d 4e 5c  |: wimp%!8=iy%.N\|
0000da80  27 77 69 6d 70 25 21 31  32 3d 69 78 25 2b 69 77  |'wimp%!12=ix%+iw|
0000da90  25 20 3a 20 77 69 6d 70  25 21 31 36 3d 69 79 25  |% : wimp%!16=iy%|
0000daa0  2b 69 68 25 0d 4e 66 12  77 69 6d 70 25 21 32 30  |+ih%.Nf.wimp%!20|
0000dab0  3d 66 6c 61 67 25 0d 4e  70 4c e7 20 64 31 25 3d  |=flag%.NpL. d1%=|
0000dac0  30 20 8c 20 24 28 77 69  6d 70 25 2b 32 34 29 3d  |0 . $(wimp%+24)=|
0000dad0  74 65 78 74 24 20 8b 20  77 69 6d 70 25 21 32 34  |text$ . wimp%!24|
0000dae0  3d 64 31 25 20 3a 20 77  69 6d 70 25 21 32 38 3d  |=d1% : wimp%!28=|
0000daf0  64 32 25 20 3a 20 77 69  6d 70 25 21 33 32 3d 64  |d2% : wimp%!32=d|
0000db00  33 25 0d 4e 7a 27 c8 99  20 22 57 69 6d 70 5f 43  |3%.Nz'.. "Wimp_C|
0000db10  72 65 61 74 65 49 63 6f  6e 22 2c 2c 77 69 6d 70  |reateIcon",,wimp|
0000db20  25 20 b8 20 69 63 6f 6e  25 0d 4e 84 0a 3d 69 63  |% . icon%.N..=ic|
0000db30  6f 6e 25 0d 4e 8e 05 3a  0d 4e 98 26 dd 20 f2 49  |on%.N..:.N.&. .I|
0000db40  63 6f 6e 5f 4d 61 6b 65  54 65 78 74 28 77 69 6e  |con_MakeText(win|
0000db50  64 6f 77 25 2c 69 63 6f  6e 25 2c 78 24 29 0d 4e  |dow%,icon%,x$).N|
0000db60  a2 24 20 77 69 6d 70 25  21 30 3d 77 69 6e 64 6f  |.$ wimp%!0=windo|
0000db70  77 25 20 3a 20 77 69 6d  70 25 21 34 3d 69 63 6f  |w% : wimp%!4=ico|
0000db80  6e 25 0d 4e ac 22 20 c8  99 20 22 57 69 6d 70 5f  |n%.N." .. "Wimp_|
0000db90  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 77  |GetIconState",,w|
0000dba0  69 6d 70 25 0d 4e b6 38  20 e7 20 28 28 77 69 6d  |imp%.N.8 . ((wim|
0000dbb0  70 25 21 32 34 29 20 80  20 26 31 30 30 29 3d 30  |p%!24) . &100)=0|
0000dbc0  20 85 20 31 2c 22 49 63  6f 6e 20 69 73 6e 27 74  | . 1,"Icon isn't|
0000dbd0  20 69 6e 64 69 72 65 63  74 65 64 22 0d 4e c0 13  | indirected".N..|
0000dbe0  20 24 28 77 69 6d 70 25  21 32 38 29 3d 78 24 0d  | $(wimp%!28)=x$.|
0000dbf0  4e ca 24 20 77 69 6d 70  25 21 30 3d 77 69 6e 64  |N.$ wimp%!0=wind|
0000dc00  6f 77 25 20 3a 20 77 69  6d 70 25 21 34 3d 69 63  |ow% : wimp%!4=ic|
0000dc10  6f 6e 25 0d 4e d4 1b 20  77 69 6d 70 25 21 38 3d  |on%.N.. wimp%!8=|
0000dc20  30 20 3a 20 77 69 6d 70  25 21 31 32 3d 30 0d 4e  |0 : wimp%!12=0.N|
0000dc30  de 22 20 c8 99 20 22 57  69 6d 70 5f 53 65 74 49  |." .. "Wimp_SetI|
0000dc40  63 6f 6e 53 74 61 74 65  22 2c 2c 77 69 6d 70 25  |conState",,wimp%|
0000dc50  0d 4e e8 05 e1 0d 4e f2  05 3a 0d 4e fc 22 dd 20  |.N....N..:.N.". |
0000dc60  a4 49 63 6f 6e 5f 47 65  74 54 65 78 74 28 77 69  |.Icon_GetText(wi|
0000dc70  6e 64 6f 77 25 2c 69 63  6f 6e 25 29 0d 4f 06 24  |ndow%,icon%).O.$|
0000dc80  20 77 69 6d 70 25 21 30  3d 77 69 6e 64 6f 77 25  | wimp%!0=window%|
0000dc90  20 3a 20 77 69 6d 70 25  21 34 3d 69 63 6f 6e 25  | : wimp%!4=icon%|
0000dca0  0d 4f 10 22 20 c8 99 20  22 57 69 6d 70 5f 47 65  |.O." .. "Wimp_Ge|
0000dcb0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 77 69 6d  |tIconState",,wim|
0000dcc0  70 25 0d 4f 1a 38 20 e7  20 28 28 77 69 6d 70 25  |p%.O.8 . ((wimp%|
0000dcd0  21 32 34 29 20 80 20 26  31 30 30 29 3d 30 20 85  |!24) . &100)=0 .|
0000dce0  20 31 2c 22 49 63 6f 6e  20 69 73 6e 27 74 20 69  | 1,"Icon isn't i|
0000dcf0  6e 64 69 72 65 63 74 65  64 22 0d 4f 24 10 3d 24  |ndirected".O$.=$|
0000dd00  28 77 69 6d 70 25 21 32  38 29 0d 4f 2e 05 3a 0d  |(wimp%!28).O..:.|
0000dd10  4f 38 1e dd 20 a4 49 63  6f 6e 5f 56 61 6c 28 77  |O8.. .Icon_Val(w|
0000dd20  69 6e 64 6f 77 25 2c 69  63 6f 6e 25 29 0d 4f 42  |indow%,icon%).OB|
0000dd30  24 20 77 69 6d 70 25 21  30 3d 77 69 6e 64 6f 77  |$ wimp%!0=window|
0000dd40  25 20 3a 20 77 69 6d 70  25 21 34 3d 69 63 6f 6e  |% : wimp%!4=icon|
0000dd50  25 0d 4f 4c 22 20 c8 99  20 22 57 69 6d 70 5f 47  |%.OL" .. "Wimp_G|
0000dd60  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 77 69  |etIconState",,wi|
0000dd70  6d 70 25 0d 4f 56 38 20  e7 20 28 28 77 69 6d 70  |mp%.OV8 . ((wimp|
0000dd80  25 21 32 34 29 20 80 20  26 31 30 30 29 3d 30 20  |%!24) . &100)=0 |
0000dd90  85 20 31 2c 22 49 63 6f  6e 20 69 73 6e 27 74 20  |. 1,"Icon isn't |
0000dda0  69 6e 64 69 72 65 63 74  65 64 22 0d 4f 60 10 3d  |indirected".O`.=|
0000ddb0  24 28 77 69 6d 70 25 21  33 32 29 0d 4f 6a 05 3a  |$(wimp%!32).Oj.:|
0000ddc0  0d 4f 74 2c dd 20 f2 57  69 6d 70 5f 49 63 6f 6e  |.Ot,. .Wimp_Icon|
0000ddd0  4d 61 6b 65 53 70 72 69  74 65 28 77 69 6e 64 6f  |MakeSprite(windo|
0000dde0  77 25 2c 69 63 6f 6e 25  2c 78 24 29 0d 4f 7e 24  |w%,icon%,x$).O~$|
0000ddf0  20 77 69 6d 70 25 21 30  3d 77 69 6e 64 6f 77 25  | wimp%!0=window%|
0000de00  20 3a 20 77 69 6d 70 25  21 34 3d 69 63 6f 6e 25  | : wimp%!4=icon%|
0000de10  0d 4f 88 22 20 c8 99 20  22 57 69 6d 70 5f 47 65  |.O." .. "Wimp_Ge|
0000de20  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 77 69 6d  |tIconState",,wim|
0000de30  70 25 0d 4f 92 16 20 24  28 77 69 6d 70 25 2b 32  |p%.O.. $(wimp%+2|
0000de40  38 29 3d 78 24 2b bd 30  0d 4f 9c 24 20 77 69 6d  |8)=x$+.0.O.$ wim|
0000de50  70 25 21 30 3d 77 69 6e  64 6f 77 25 20 3a 20 77  |p%!0=window% : w|
0000de60  69 6d 70 25 21 34 3d 69  63 6f 6e 25 0d 4f a6 1b  |imp%!4=icon%.O..|
0000de70  20 77 69 6d 70 25 21 38  3d 30 20 3a 20 77 69 6d  | wimp%!8=0 : wim|
0000de80  70 25 21 31 32 3d 30 0d  4f b0 22 20 c8 99 20 22  |p%!12=0.O." .. "|
0000de90  57 69 6d 70 5f 53 65 74  49 63 6f 6e 53 74 61 74  |Wimp_SetIconStat|
0000dea0  65 22 2c 2c 77 69 6d 70  25 0d 4f ba 05 e1 0d 4f  |e",,wimp%.O....O|
0000deb0  c4 05 3a 0d 4f ce 1e dd  20 f2 49 63 6f 6e 5f 45  |..:.O... .Icon_E|
0000dec0  6e 61 62 6c 65 28 77 69  6e 64 6f 77 25 2c 6a 25  |nable(window%,j%|
0000ded0  29 0d 4f d8 20 77 69 6d  70 25 21 30 3d 77 69 6e  |).O. wimp%!0=win|
0000dee0  64 6f 77 25 20 3a 20 77  69 6d 70 25 21 34 3d 6a  |dow% : wimp%!4=j|
0000def0  25 0d 4f e2 24 77 69 6d  70 25 21 38 3d 30 20 20  |%.O.$wimp%!8=0  |
0000df00  20 20 20 20 20 3a 20 77  69 6d 70 25 21 31 32 3d  |     : wimp%!12=|
0000df10  31 3c 3c 32 32 0d 4f ec  21 c8 99 20 22 57 69 6d  |1<<22.O.!.. "Wim|
0000df20  70 5f 53 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_SetIconState",|
0000df30  2c 77 69 6d 70 25 0d 4f  f6 05 e1 0d 50 00 05 3a  |,wimp%.O....P..:|
0000df40  0d 50 0a 1f dd 20 f2 49  63 6f 6e 5f 44 69 73 61  |.P... .Icon_Disa|
0000df50  62 6c 65 28 77 69 6e 64  6f 77 25 2c 6a 25 29 0d  |ble(window%,j%).|
0000df60  50 14 20 77 69 6d 70 25  21 30 3d 77 69 6e 64 6f  |P. wimp%!0=windo|
0000df70  77 25 20 3a 20 77 69 6d  70 25 21 34 3d 6a 25 0d  |w% : wimp%!4=j%.|
0000df80  50 1e 24 77 69 6d 70 25  21 38 3d 31 3c 3c 32 32  |P.$wimp%!8=1<<22|
0000df90  20 20 20 3a 20 77 69 6d  70 25 21 31 32 3d 31 3c  |   : wimp%!12=1<|
0000dfa0  3c 32 32 0d 50 28 21 c8  99 20 22 57 69 6d 70 5f  |<22.P(!.. "Wimp_|
0000dfb0  53 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 77  |SetIconState",,w|
0000dfc0  69 6d 70 25 0d 50 32 05  e1 0d 50 3c 05 3a 0d 50  |imp%.P2...P<.:.P|
0000dfd0  46 3e dd 20 f2 50 6c 6f  74 49 63 6f 6e 28 77 69  |F>. .PlotIcon(wi|
0000dfe0  6d 70 25 2c 69 78 25 2c  69 79 25 2c 69 77 25 2c  |mp%,ix%,iy%,iw%,|
0000dff0  69 68 25 2c 66 6c 61 67  25 2c 74 65 78 74 24 2c  |ih%,flag%,text$,|
0000e000  64 31 25 2c 64 32 25 2c  64 33 25 29 0d 50 50 22  |d1%,d2%,d3%).PP"|
0000e010  77 69 6d 70 25 21 30 3d  69 78 25 20 20 20 20 20  |wimp%!0=ix%     |
0000e020  20 3a 20 77 69 6d 70 25  21 34 3d 69 79 25 0d 50  | : wimp%!4=iy%.P|
0000e030  5a 26 77 69 6d 70 25 21  38 3d 69 78 25 2b 69 77  |Z&wimp%!8=ix%+iw|
0000e040  25 20 3a 20 77 69 6d 70  25 21 31 32 3d 69 79 25  |% : wimp%!12=iy%|
0000e050  2b 69 68 25 0d 50 64 12  77 69 6d 70 25 21 31 36  |+ih%.Pd.wimp%!16|
0000e060  3d 66 6c 61 67 25 0d 50  6e 4c e7 20 64 31 25 3d  |=flag%.PnL. d1%=|
0000e070  30 20 8c 20 24 28 77 69  6d 70 25 2b 32 34 29 3d  |0 . $(wimp%+24)=|
0000e080  74 65 78 74 24 20 8b 20  77 69 6d 70 25 21 32 34  |text$ . wimp%!24|
0000e090  3d 64 31 25 20 3a 20 77  69 6d 70 25 21 32 38 3d  |=d1% : wimp%!28=|
0000e0a0  64 32 25 20 3a 20 77 69  6d 70 25 21 33 32 3d 64  |d2% : wimp%!32=d|
0000e0b0  33 25 0d 50 78 1d c8 99  20 22 57 69 6d 70 5f 50  |3%.Px... "Wimp_P|
0000e0c0  6c 6f 74 49 63 6f 6e 22  2c 2c 77 69 6d 70 25 0d  |lotIcon",,wimp%.|
0000e0d0  50 82 05 e1 0d 50 8c 05  3a 0d 50 96 13 dd 20 f2  |P....P..:.P... .|
0000e0e0  53 70 72 69 74 65 73 5f  4c 6f 61 64 0d 50 a0 0b  |Sprites_Load.P..|
0000e0f0  ea 20 53 25 2c 54 25 0d  50 aa 31 53 25 3d 8e 22  |. S%,T%.P.1S%=."|
0000e100  3c 4f 62 65 79 24 44 69  72 3e 2e 53 70 72 69 74  |<Obey$Dir>.Sprit|
0000e110  65 73 22 3a 54 25 3d a2  23 53 25 2b 31 36 3a d9  |es":T%=.#S%+16:.|
0000e120  23 53 25 3a 53 25 3d 30  0d 50 b4 1d de 20 73 70  |#S%:S%=0.P... sp|
0000e130  72 69 74 65 73 25 20 54  25 2c 20 73 70 6e 61 6d  |rites% T%, spnam|
0000e140  65 25 20 31 32 0d 50 be  1d 21 73 70 72 69 74 65  |e% 12.P..!sprite|
0000e150  73 25 3d 54 25 3a 73 70  72 69 74 65 73 25 21 38  |s%=T%:sprites%!8|
0000e160  3d 30 0d 50 c8 22 c8 99  20 22 4f 53 5f 53 70 72  |=0.P.".. "OS_Spr|
0000e170  69 74 65 4f 70 22 2c 26  31 30 39 2c 73 70 72 69  |iteOp",&109,spri|
0000e180  74 65 73 25 0d 50 d2 37  c8 99 20 22 4f 53 5f 53  |tes%.P.7.. "OS_S|
0000e190  70 72 69 74 65 4f 70 22  2c 26 31 30 41 2c 73 70  |priteOp",&10A,sp|
0000e1a0  72 69 74 65 73 25 2c 22  3c 4f 62 65 79 24 44 69  |rites%,"<Obey$Di|
0000e1b0  72 3e 2e 53 70 72 69 74  65 73 22 0d 50 dc 05 e1  |r>.Sprites".P...|
0000e1c0  0d 50 e6 05 3a 0d 50 f0  23 f4 2d 2d 2d 2d 2d 2d  |.P..:.P.#.------|
0000e1d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000e1e0  2d 2d 2d 2d 2d 2d 2d 2d  0d 50 fa 19 f4 2a 2a 2a  |--------.P...***|
0000e1f0  2a 2a 2a 2a 4d 45 4e 55  20 52 4f 55 54 49 4e 45  |****MENU ROUTINE|
0000e200  53 0d 51 04 23 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |S.Q.#.----------|
0000e210  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000e220  2d 2d 2d 2d 0d 51 0e 05  3a 0d 51 18 1b dd 20 f2  |----.Q..:.Q... .|
0000e230  4d 65 6e 75 5f 41 64 6a  75 73 74 4f 6e 28 6d 65  |Menu_AdjustOn(me|
0000e240  6e 75 25 29 0d 51 22 2b  c8 99 20 22 57 69 6d 70  |nu%).Q"+.. "Wimp|
0000e250  5f 47 65 74 50 6f 69 6e  74 65 72 49 6e 66 6f 22  |_GetPointerInfo"|
0000e260  2c 2c 70 6f 69 6e 74 65  72 5f 77 69 6d 70 25 0d  |,,pointer_wimp%.|
0000e270  51 2c 5b e7 20 28 28 70  6f 69 6e 74 65 72 5f 77  |Q,[. ((pointer_w|
0000e280  69 6d 70 25 21 38 29 80  31 29 3d 31 20 8c 20 c8  |imp%!8).1)=1 . .|
0000e290  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 4d 65  |. "Wimp_CreateMe|
0000e2a0  6e 75 22 2c 2c 6d 65 6e  75 25 2c 70 6f 69 6e 74  |nu",,menu%,point|
0000e2b0  65 72 5f 77 69 6d 70 25  21 30 2c 70 6f 69 6e 74  |er_wimp%!0,point|
0000e2c0  65 72 5f 77 69 6d 70 25  21 34 0d 51 36 05 e1 0d  |er_wimp%!4.Q6...|
0000e2d0  51 40 05 3a 0d 51 4a 1a  20 dd 20 a4 4d 65 6e 75  |Q@.:.QJ. . .Menu|
0000e2e0  5f 43 72 65 61 74 65 28  6d 65 6e 75 24 29 0d 51  |_Create(menu$).Q|
0000e2f0  54 0c 20 ea 20 6d 65 6e  75 25 0d 51 5e 2b 20 de  |T. . menu%.Q^+ .|
0000e300  20 6d 65 6e 75 25 20 32  38 2b a4 4d 65 6e 75 5f  | menu% 28+.Menu_|
0000e310  4e 6f 4f 66 45 6e 74 72  69 65 73 28 6d 65 6e 75  |NoOfEntries(menu|
0000e320  24 29 2a 32 34 0d 51 68  1d 3d a4 4d 65 6e 75 5f  |$)*24.Qh.=.Menu_|
0000e330  42 75 69 6c 64 28 6d 65  6e 75 25 2c 6d 65 6e 75  |Build(menu%,menu|
0000e340  24 29 0d 51 72 05 3a 0d  51 7c 1f 20 dd 20 a4 4d  |$).Qr.:.Q|. . .M|
0000e350  65 6e 75 5f 42 75 69 6c  64 28 6d 65 6e 75 25 2c  |enu_Build(menu%,|
0000e360  6d 65 6e 75 24 29 0d 51  86 1e 20 ea 20 79 70 6f  |menu$).Q.. . ypo|
0000e370  73 25 2c 77 69 64 74 68  25 2c 6c 65 6e 67 74 68  |s%,width%,length|
0000e380  25 2c 6b 25 0d 51 90 35  20 6d 65 6e 75 25 3f 31  |%,k%.Q.5 menu%?1|
0000e390  32 3d 37 20 3a 20 6d 65  6e 75 25 3f 31 33 3d 32  |2=7 : menu%?13=2|
0000e3a0  20 3a 20 6d 65 6e 75 25  3f 31 34 3d 37 20 3a 6d  | : menu%?14=7 :m|
0000e3b0  65 6e 75 25 3f 31 35 3d  30 0d 51 9a 2c 20 6d 65  |enu%?15=0.Q., me|
0000e3c0  6e 75 25 21 31 36 3d 31  34 30 20 3a 20 6d 65 6e  |nu%!16=140 : men|
0000e3d0  75 25 21 32 30 3d 34 34  20 3a 20 6d 65 6e 75 25  |u%!20=44 : menu%|
0000e3e0  21 32 34 3d 30 0d 51 a4  12 20 70 74 72 25 3d 6d  |!24=0.Q.. ptr%=m|
0000e3f0  65 6e 75 25 2b 32 38 0d  51 ae 21 20 24 6d 65 6e  |enu%+28.Q.! $men|
0000e400  75 25 3d c0 6d 65 6e 75  24 2c a7 6d 65 6e 75 24  |u%=.menu$,.menu$|
0000e410  2c 22 5c 22 29 2d 31 29  0d 51 b8 24 20 77 69 64  |,"\")-1).Q.$ wid|
0000e420  74 68 25 3d a9 28 c0 6d  65 6e 75 24 2c a7 6d 65  |th%=.(.menu$,.me|
0000e430  6e 75 24 2c 22 5c 22 29  2d 31 29 29 0d 51 c2 25  |nu$,"\")-1)).Q.%|
0000e440  20 6d 65 6e 75 24 2b 3d  22 5c 22 20 3a 20 4d 65  | menu$+="\" : Me|
0000e450  6e 75 5f 4e 6f 4f 66 45  6e 74 72 69 65 73 25 3d  |nu_NoOfEntries%=|
0000e460  30 0d 51 cc 11 20 c8 95  20 6d 65 6e 75 24 3c 3e  |0.Q.. .. menu$<>|
0000e470  22 22 0d 51 d6 22 20 20  20 6d 65 6e 75 24 3d c1  |"".Q."   menu$=.|
0000e480  6d 65 6e 75 24 2c a7 6d  65 6e 75 24 2c 22 5c 22  |menu$,.menu$,"\"|
0000e490  29 2b 31 29 0d 51 e0 11  20 20 20 c8 8e 20 6d 65  |)+1).Q..   .. me|
0000e4a0  6e 75 24 20 ca 0d 51 ea  0c 20 20 20 c9 20 22 22  |nu$ ..Q..   . ""|
0000e4b0  3a 0d 51 f4 09 20 20 20  7f 3a 0d 51 fe 2e 20 20  |:.Q..   .:.Q..  |
0000e4c0  20 20 20 21 70 74 72 25  3d 30 20 3a 20 70 74 72  |   !ptr%=0 : ptr|
0000e4d0  25 21 34 3d 2d 31 20 3a  20 70 74 72 25 21 38 3d  |%!4=-1 : ptr%!8=|
0000e4e0  26 37 30 30 30 30 32 31  0d 52 08 3b 20 20 20 20  |&7000021.R.;    |
0000e4f0  20 6c 65 6e 67 74 68 25  3d a7 6d 65 6e 75 24 2c  | length%=.menu$,|
0000e500  22 5c 22 29 2d 31 20 3a  20 6b 25 3d a7 c0 6d 65  |"\")-1 : k%=..me|
0000e510  6e 75 24 2c 6c 65 6e 67  74 68 25 29 2c 22 3e 22  |nu$,length%),">"|
0000e520  29 2d 31 0d 52 12 1e 20  20 20 20 20 e7 20 6b 25  |)-1.R..     . k%|
0000e530  3c 3e 2d 31 20 8c 20 6c  65 6e 67 74 68 25 3d 6b  |<>-1 . length%=k|
0000e540  25 0d 52 1c 23 20 20 20  20 20 24 28 70 74 72 25  |%.R.#     $(ptr%|
0000e550  2b 31 32 29 3d c0 6d 65  6e 75 24 2c 6c 65 6e 67  |+12)=.menu$,leng|
0000e560  74 68 25 29 0d 52 26 2a  20 20 20 20 20 e7 20 6c  |th%).R&*     . l|
0000e570  65 6e 67 74 68 25 3e 77  69 64 74 68 25 20 8c 20  |ength%>width% . |
0000e580  77 69 64 74 68 25 3d 6c  65 6e 67 74 68 25 0d 52  |width%=length%.R|
0000e590  30 11 20 20 20 20 20 70  74 72 25 2b 3d 32 34 0d  |0.     ptr%+=24.|
0000e5a0  52 3a 1d 20 20 20 20 20  4d 65 6e 75 5f 4e 6f 4f  |R:.     Menu_NoO|
0000e5b0  66 45 6e 74 72 69 65 73  25 2b 3d 31 0d 52 44 08  |fEntries%+=1.RD.|
0000e5c0  20 20 20 cb 0d 52 4e 06  20 ce 0d 52 58 1b 20 6d  |   ..RN. ..RX. m|
0000e5d0  65 6e 75 25 21 31 36 3d  31 36 2a 28 77 69 64 74  |enu%!16=16*(widt|
0000e5e0  68 25 2b 31 29 0d 52 62  2c 20 70 74 72 25 21 2d  |h%+1).Rb, ptr%!-|
0000e5f0  32 34 3d 70 74 72 25 21  2d 32 34 20 84 20 26 38  |24=ptr%!-24 . &8|
0000e600  30 20 3a 20 f4 2e 2e 2e  4c 61 73 74 20 69 74 65  |0 : ....Last ite|
0000e610  6d 0d 52 6c 0b 20 3d 6d  65 6e 75 25 0d 52 76 05  |m.Rl. =menu%.Rv.|
0000e620  3a 0d 52 80 29 20 dd 20  f2 4d 65 6e 75 5f 42 75  |:.R.) . .Menu_Bu|
0000e630  69 6c 64 28 f8 20 4d 65  6e 75 73 25 28 29 2c 4d  |ild(. Menus%(),M|
0000e640  65 6e 75 24 28 29 2c 69  25 29 0d 52 8a 28 20 20  |enu$(),i%).R.(  |
0000e650  ea 20 79 70 6f 73 25 2c  77 69 64 74 68 25 2c 6c  |. ypos%,width%,l|
0000e660  65 6e 67 74 68 25 2c 6b  25 2c 6a 25 2c 69 74 65  |ength%,k%,j%,ite|
0000e670  6d 24 0d 52 94 10 20 24  42 75 66 66 65 72 25 3d  |m$.R.. $Buffer%=|
0000e680  22 22 0d 52 9e 18 20 f4  6a 25 3d 44 49 4d 28 4d  |"".R.. .j%=DIM(M|
0000e690  65 6e 75 73 25 28 29 2c  31 29 0d 52 a8 2e 20 f4  |enus%(),1).R.. .|
0000e6a0  57 48 49 4c 45 20 4d 65  6e 75 24 28 69 25 2c 6a  |WHILE Menu$(i%,j|
0000e6b0  25 29 3d 22 22 20 3a 20  6a 25 2d 3d 31 20 3a 20  |%)="" : j%-=1 : |
0000e6c0  45 4e 44 57 48 49 4c 45  0d 52 b2 19 20 6a 25 3d  |ENDWHILE.R.. j%=|
0000e6d0  4e 6f 4f 66 53 75 62 6d  65 6e 75 73 25 28 69 25  |NoOfSubmenus%(i%|
0000e6e0  29 0d 52 bc 15 20 70 74  72 25 3d 4d 65 6e 75 5f  |).R.. ptr%=Menu_|
0000e6f0  42 6c 6f 63 6b 25 0d 52  c6 06 20 f5 0d 52 d0 38  |Block%.R.. ..R.8|
0000e700  20 6d 65 6e 75 25 3d 70  74 72 25 20 20 3a 20 4d  | menu%=ptr%  : M|
0000e710  65 6e 75 73 25 28 6a 25  29 3d 6d 65 6e 75 25 20  |enus%(j%)=menu% |
0000e720  3a 20 6d 65 6e 75 24 3d  4d 65 6e 75 24 28 69 25  |: menu$=Menu$(i%|
0000e730  2c 6a 25 29 0d 52 da 35  20 6d 65 6e 75 25 3f 31  |,j%).R.5 menu%?1|
0000e740  32 3d 37 20 3a 20 6d 65  6e 75 25 3f 31 33 3d 32  |2=7 : menu%?13=2|
0000e750  20 3a 20 6d 65 6e 75 25  3f 31 34 3d 37 20 3a 6d  | : menu%?14=7 :m|
0000e760  65 6e 75 25 3f 31 35 3d  30 0d 52 e4 2c 20 6d 65  |enu%?15=0.R., me|
0000e770  6e 75 25 21 31 36 3d 31  34 30 20 3a 20 6d 65 6e  |nu%!16=140 : men|
0000e780  75 25 21 32 30 3d 34 34  20 3a 20 6d 65 6e 75 25  |u%!20=44 : menu%|
0000e790  21 32 34 3d 30 0d 52 ee  12 20 70 74 72 25 3d 6d  |!24=0.R.. ptr%=m|
0000e7a0  65 6e 75 25 2b 32 38 0d  52 f8 21 20 24 6d 65 6e  |enu%+28.R.! $men|
0000e7b0  75 25 3d c0 6d 65 6e 75  24 2c a7 6d 65 6e 75 24  |u%=.menu$,.menu$|
0000e7c0  2c 22 5c 22 29 2d 31 29  0d 53 02 24 20 77 69 64  |,"\")-1).S.$ wid|
0000e7d0  74 68 25 3d a9 28 c0 6d  65 6e 75 24 2c a7 6d 65  |th%=.(.menu$,.me|
0000e7e0  6e 75 24 2c 22 5c 22 29  2d 31 29 29 0d 53 0c 25  |nu$,"\")-1)).S.%|
0000e7f0  20 6d 65 6e 75 24 2b 3d  22 5c 22 20 3a 20 4d 65  | menu$+="\" : Me|
0000e800  6e 75 5f 4e 6f 4f 66 45  6e 74 72 69 65 73 25 3d  |nu_NoOfEntries%=|
0000e810  30 0d 53 16 11 20 c8 95  20 6d 65 6e 75 24 3c 3e  |0.S.. .. menu$<>|
0000e820  22 22 0d 53 20 22 20 20  20 6d 65 6e 75 24 3d c1  |"".S "   menu$=.|
0000e830  6d 65 6e 75 24 2c a7 6d  65 6e 75 24 2c 22 5c 22  |menu$,.menu$,"\"|
0000e840  29 2b 31 29 0d 53 2a 11  20 20 20 c8 8e 20 6d 65  |)+1).S*.   .. me|
0000e850  6e 75 24 20 ca 0d 53 34  0b 20 20 20 c9 20 22 22  |nu$ ..S4.   . ""|
0000e860  0d 53 3e 09 20 20 20 7f  3a 0d 53 48 2e 20 20 20  |.S>.   .:.SH.   |
0000e870  20 20 21 70 74 72 25 3d  30 20 3a 20 70 74 72 25  |  !ptr%=0 : ptr%|
0000e880  21 34 3d 2d 31 20 3a 20  70 74 72 25 21 38 3d 26  |!4=-1 : ptr%!8=&|
0000e890  37 30 30 30 30 32 31 0d  53 52 1e 20 20 20 20 20  |7000021.SR.     |
0000e8a0  6c 65 6e 67 74 68 25 3d  a7 6d 65 6e 75 24 2c 22  |length%=.menu$,"|
0000e8b0  5c 22 29 2d 31 0d 53 5c  21 20 20 20 20 20 6b 25  |\")-1.S\!     k%|
0000e8c0  3d a7 c0 6d 65 6e 75 24  2c 6c 65 6e 67 74 68 25  |=..menu$,length%|
0000e8d0  29 2c 22 3e 22 29 0d 53  66 10 20 20 20 20 20 c8  |),">").Sf.     .|
0000e8e0  8e 20 6b 25 20 ca 0d 53  70 0d 20 20 20 20 20 c9  |. k% ..Sp.     .|
0000e8f0  20 30 3a 0d 53 7a 0b 20  20 20 20 20 7f 3a 0d 53  | 0:.Sz.     .:.S|
0000e900  84 27 20 20 20 20 20 20  69 74 65 6d 24 3d c1 6d  |.'      item$=.m|
0000e910  65 6e 75 24 2c 6b 25 2b  31 2c 6c 65 6e 67 74 68  |enu$,k%+1,length|
0000e920  25 2d 6b 25 29 0d 53 8e  15 20 20 20 20 20 20 73  |%-k%).S..      s|
0000e930  25 3d bb 28 69 74 65 6d  24 29 0d 53 98 32 20 20  |%=.(item$).S.2  |
0000e940  20 20 20 20 e7 20 73 25  3c 31 30 30 20 8c 20 70  |    . s%<100 . p|
0000e950  74 72 25 21 34 3d 4d 65  6e 75 73 25 28 73 25 29  |tr%!4=Menus%(s%)|
0000e960  20 8b 20 70 74 72 25 21  34 3d 73 25 0d 53 a2 16  | . ptr%!4=s%.S..|
0000e970  20 20 20 20 20 20 6c 65  6e 67 74 68 25 3d 6b 25  |      length%=k%|
0000e980  2d 31 0d 53 ac 0a 20 20  20 20 20 cb 0d 53 b6 23  |-1.S..     ..S.#|
0000e990  20 20 20 20 20 24 28 70  74 72 25 2b 31 32 29 3d  |     $(ptr%+12)=|
0000e9a0  c0 6d 65 6e 75 24 2c 6c  65 6e 67 74 68 25 29 0d  |.menu$,length%).|
0000e9b0  53 c0 2a 20 20 20 20 20  e7 20 6c 65 6e 67 74 68  |S.*     . length|
0000e9c0  25 3e 77 69 64 74 68 25  20 8c 20 77 69 64 74 68  |%>width% . width|
0000e9d0  25 3d 6c 65 6e 67 74 68  25 0d 53 ca 11 20 20 20  |%=length%.S..   |
0000e9e0  20 20 70 74 72 25 2b 3d  32 34 0d 53 d4 1d 20 20  |  ptr%+=24.S..  |
0000e9f0  20 20 20 4d 65 6e 75 5f  4e 6f 4f 66 45 6e 74 72  |   Menu_NoOfEntr|
0000ea00  69 65 73 25 2b 3d 31 0d  53 de 08 20 20 20 cb 0d  |ies%+=1.S..   ..|
0000ea10  53 e8 06 20 ce 0d 53 f2  1b 20 6d 65 6e 75 25 21  |S.. ..S.. menu%!|
0000ea20  31 36 3d 31 36 2a 28 77  69 64 74 68 25 2b 31 29  |16=16*(width%+1)|
0000ea30  0d 53 fc 2c 20 70 74 72  25 21 2d 32 34 3d 70 74  |.S., ptr%!-24=pt|
0000ea40  72 25 21 2d 32 34 20 84  20 26 38 30 20 3a 20 f4  |r%!-24 . &80 : .|
0000ea50  2e 2e 2e 4c 61 73 74 20  69 74 65 6d 0d 54 06 0a  |...Last item.T..|
0000ea60  20 6a 25 2d 3d 31 0d 54  10 43 20 f2 4d 65 6e 75  | j%-=1.T.C .Menu|
0000ea70  5f 57 72 69 74 65 28 6d  65 6e 75 25 2c 4d 65 6e  |_Write(menu%,Men|
0000ea80  75 5f 4e 6f 4f 66 45 6e  74 72 69 65 73 25 2c 42  |u_NoOfEntries%,B|
0000ea90  75 66 66 65 72 25 2c 2d  31 2c 42 75 66 66 65 72  |uffer%,-1,Buffer|
0000eaa0  5f 4c 65 6e 67 74 68 25  29 0d 54 1a 0b 20 fd 20  |_Length%).T.. . |
0000eab0  6a 25 3d 30 0d 54 24 2c  20 4d 65 6e 75 73 25 28  |j%=0.T$, Menus%(|
0000eac0  30 29 3d a4 4d 65 6e 75  5f 42 75 69 6c 64 28 70  |0)=.Menu_Build(p|
0000ead0  74 72 25 2c 4d 65 6e 75  24 28 69 25 2c 30 29 29  |tr%,Menu$(i%,0))|
0000eae0  0d 54 2e 26 20 f2 4d 65  6e 75 5f 47 6c 75 65 28  |.T.& .Menu_Glue(|
0000eaf0  4d 65 6e 75 73 25 28 30  29 2c 32 2c 4d 65 6e 75  |Menus%(0),2,Menu|
0000eb00  73 25 28 31 29 29 0d 54  38 13 20 c8 8e 20 4f 70  |s%(1)).T8. .. Op|
0000eb10  65 6e 25 28 69 25 29 20  ca 0d 54 42 23 20 20 c9  |en%(i%) ..TB#  .|
0000eb20  20 b9 20 3a 20 f2 4d 65  6e 75 5f 54 69 63 6b 28  | . : .Menu_Tick(|
0000eb30  4d 65 6e 75 73 25 28 30  29 2c 33 29 0d 54 4c 24  |Menus%(0),3).TL$|
0000eb40  20 20 7f 20 3a 20 f2 4d  65 6e 75 5f 41 54 69 63  |  . : .Menu_ATic|
0000eb50  6b 28 4d 65 6e 75 73 25  28 30 29 2c 33 2c 30 29  |k(Menus%(0),3,0)|
0000eb60  0d 54 56 06 20 cb 0d 54  60 13 20 c8 8e 20 45 78  |.TV. ..T`. .. Ex|
0000eb70  69 74 25 28 69 25 29 20  ca 0d 54 6a 23 20 20 c9  |it%(i%) ..Tj#  .|
0000eb80  20 b9 20 3a 20 f2 4d 65  6e 75 5f 54 69 63 6b 28  | . : .Menu_Tick(|
0000eb90  4d 65 6e 75 73 25 28 30  29 2c 34 29 0d 54 74 24  |Menus%(0),4).Tt$|
0000eba0  20 20 7f 20 3a 20 f2 4d  65 6e 75 5f 41 54 69 63  |  . : .Menu_ATic|
0000ebb0  6b 28 4d 65 6e 75 73 25  28 30 29 2c 34 2c 30 29  |k(Menus%(0),4,0)|
0000ebc0  0d 54 7e 06 20 cb 0d 54  88 0c 20 c8 8e 20 69 25  |.T~. ..T.. .. i%|
0000ebd0  20 ca 0d 54 92 2e 20 20  c9 20 30 20 3a 20 f2 4d  | ..T..  . 0 : .M|
0000ebe0  65 6e 75 5f 47 6c 75 65  28 4d 65 6e 75 73 25 28  |enu_Glue(Menus%(|
0000ebf0  30 29 2c 33 2c 57 69 6e  64 5f 4d 65 6e 75 25 29  |0),3,Wind_Menu%)|
0000ec00  0d 54 9c 06 20 cb 0d 54  a6 2a 20 f2 4d 65 6e 75  |.T.. ..T.* .Menu|
0000ec10  5f 46 6f 72 65 47 72 6f  75 6e 64 43 6f 6c 6f 75  |_ForeGroundColou|
0000ec20  72 28 4d 65 6e 75 73 25  28 30 29 2c 31 2c 34 29  |r(Menus%(0),1,4)|
0000ec30  0d 54 b0 2a 20 f2 4d 65  6e 75 5f 46 6f 72 65 47  |.T.* .Menu_ForeG|
0000ec40  72 6f 75 6e 64 43 6f 6c  6f 75 72 28 4d 65 6e 75  |roundColour(Menu|
0000ec50  73 25 28 30 29 2c 32 2c  34 29 0d 54 ba 2d 20 f2  |s%(0),2,4).T.- .|
0000ec60  4d 65 6e 75 5f 54 69 74  6c 65 46 6f 72 65 67 72  |Menu_TitleForegr|
0000ec70  6f 75 6e 64 43 6f 6c 6f  75 72 28 4d 65 6e 75 73  |oundColour(Menus|
0000ec80  25 28 30 29 2c 34 29 0d  54 c4 2d 20 f2 4d 65 6e  |%(0),4).T.- .Men|
0000ec90  75 5f 54 69 74 6c 65 42  61 63 6b 67 72 6f 75 6e  |u_TitleBackgroun|
0000eca0  64 43 6f 6c 6f 75 72 28  4d 65 6e 75 73 25 28 30  |dColour(Menus%(0|
0000ecb0  29 2c 31 29 0d 54 ce 06  20 e1 0d 54 d8 05 3a 0d  |),1).T.. ..T..:.|
0000ecc0  54 e2 12 20 dd 20 f2 4d  65 6e 75 5f 43 6c 6f 73  |T.. . .Menu_Clos|
0000ecd0  65 0d 54 ec 1d 20 20 c8  99 20 22 57 69 6d 70 5f  |e.T..  .. "Wimp_|
0000ece0  43 72 65 61 74 65 4d 65  6e 75 22 2c 2d 31 0d 54  |CreateMenu",-1.T|
0000ecf0  f6 06 20 e1 0d 55 00 05  3a 0d 55 0a 2e 20 dd 20  |.. ..U..:.U.. . |
0000ed00  a4 4d 65 6e 75 5f 49 74  65 6d 28 6c 65 76 65 6c  |.Menu_Item(level|
0000ed10  25 29 3d 28 77 69 6d 70  25 21 28 34 2a 6c 65 76  |%)=(wimp%!(4*lev|
0000ed20  65 6c 25 29 29 2b 31 0d  55 14 05 3a 0d 55 1e 1f  |el%))+1.U..:.U..|
0000ed30  20 dd 20 a4 4d 65 6e 75  5f 4e 6f 4f 66 45 6e 74  | . .Menu_NoOfEnt|
0000ed40  72 69 65 73 28 6d 65 6e  75 24 29 0d 55 28 1b 20  |ries(menu$).U(. |
0000ed50  ea 20 6e 25 20 2c 6a 25  20 3a 20 6e 25 3d 30 20  |. n% ,j% : n%=0 |
0000ed60  3a 20 6a 25 3d 30 0d 55  32 06 20 f5 0d 55 3c 19  |: j%=0.U2. ..U<.|
0000ed70  20 20 6a 25 3d a7 6d 65  6e 75 24 2c 22 5c 22 2c  |  j%=.menu$,"\",|
0000ed80  6a 25 2b 31 29 0d 55 46  15 20 20 e7 20 6a 25 3c  |j%+1).UF.  . j%<|
0000ed90  3e 30 20 8c 20 6e 25 2b  3d 31 0d 55 50 0b 20 fd  |>0 . n%+=1.UP. .|
0000eda0  20 6a 25 3d 30 0d 55 5a  07 3d 6e 25 0d 55 64 05  | j%=0.UZ.=n%.Ud.|
0000edb0  3a 0d 55 6e 1b dd 20 f2  42 61 72 4d 65 6e 75 5f  |:.Un.. .BarMenu_|
0000edc0  50 6f 70 55 70 28 78 25  2c 79 25 29 0d 55 78 0f  |PopUp(x%,y%).Ux.|
0000edd0  ea 20 6e 25 20 3a 20 6e  25 3d 30 0d 55 82 2c 20  |. n% : n%=0.U., |
0000ede0  c8 95 20 28 28 42 61 72  5f 4d 65 6e 75 25 21 28  |.. ((Bar_Menu%!(|
0000edf0  32 38 2b 6e 25 2a 32 34  29 29 80 25 31 30 30 30  |28+n%*24)).%1000|
0000ee00  30 30 30 30 29 3d 30 0d  55 8c 0a 20 6e 25 2b 3d  |0000)=0.U.. n%+=|
0000ee10  31 0d 55 96 06 20 ce 0d  55 a0 34 20 c8 99 20 22  |1.U.. ..U.4 .. "|
0000ee20  57 69 6d 70 5f 43 72 65  61 74 65 4d 65 6e 75 22  |Wimp_CreateMenu"|
0000ee30  2c 2c 42 61 72 5f 4d 65  6e 75 25 2c 78 25 2d 36  |,,Bar_Menu%,x%-6|
0000ee40  34 2c 31 36 30 2b 6e 25  2a 34 34 0d 55 aa 14 20  |4,160+n%*44.U.. |
0000ee50  6d 65 6e 75 25 3d 42 61  72 5f 4d 65 6e 75 25 0d  |menu%=Bar_Menu%.|
0000ee60  55 b4 05 e1 0d 55 be 05  3a 0d 55 c8 1e dd 20 f2  |U....U..:.U... .|
0000ee70  4d 65 6e 75 5f 50 6f 70  55 70 28 4d 65 6e 75 25  |Menu_PopUp(Menu%|
0000ee80  2c 78 25 2c 79 25 29 0d  55 d2 10 20 6d 65 6e 75  |,x%,y%).U.. menu|
0000ee90  25 3d 4d 65 6e 75 25 0d  55 dc 2c 20 c8 99 20 22  |%=Menu%.U., .. "|
0000eea0  57 69 6d 70 5f 43 72 65  61 74 65 4d 65 6e 75 22  |Wimp_CreateMenu"|
0000eeb0  2c 2c 6d 65 6e 75 25 2c  78 25 2d 36 34 2c 79 25  |,,menu%,x%-64,y%|
0000eec0  2b 32 30 0d 55 e6 05 e1  0d 55 f0 05 3a 0d 55 fa  |+20.U....U..:.U.|
0000eed0  26 20 dd 20 f2 4d 65 6e  75 5f 47 6c 75 65 28 6d  |& . .Menu_Glue(m|
0000eee0  65 6e 75 31 25 2c 69 74  65 6d 25 2c 6d 65 6e 75  |enu1%,item%,menu|
0000eef0  32 25 29 0d 56 04 1f 20  6d 65 6e 75 31 25 21 28  |2%).V.. menu1%!(|
0000ef00  38 2b 69 74 65 6d 25 2a  32 34 29 3d 6d 65 6e 75  |8+item%*24)=menu|
0000ef10  32 25 0d 56 0e 06 20 e1  0d 56 18 05 3a 0d 56 22  |2%.V.. ..V..:.V"|
0000ef20  21 20 dd 20 f2 4d 65 6e  75 5f 55 6e 47 6c 75 65  |! . .Menu_UnGlue|
0000ef30  28 6d 65 6e 75 31 25 2c  69 74 65 6d 25 29 0d 56  |(menu1%,item%).V|
0000ef40  2c 1b 20 6d 65 6e 75 31  25 21 28 38 2b 69 74 65  |,. menu1%!(8+ite|
0000ef50  6d 25 2a 32 34 29 3d 2d  31 0d 56 36 06 20 e1 0d  |m%*24)=-1.V6. ..|
0000ef60  56 40 05 3a 0d 56 4a 21  20 dd 20 f2 4d 65 6e 75  |V@.:.VJ! . .Menu|
0000ef70  5f 4d 65 73 73 61 67 65  28 6d 65 6e 75 25 2c 69  |_Message(menu%,i|
0000ef80  74 65 6d 25 29 0d 56 54  3d 20 6d 65 6e 75 25 21  |tem%).VT= menu%!|
0000ef90  28 32 38 2b 28 69 74 65  6d 25 2d 31 29 2a 32 34  |(28+(item%-1)*24|
0000efa0  29 3d 28 6d 65 6e 75 25  21 28 32 38 2b 28 69 74  |)=(menu%!(28+(it|
0000efb0  65 6d 25 2d 31 29 2a 32  34 29 29 82 28 31 3c 3c  |em%-1)*24)).(1<<|
0000efc0  33 29 0d 56 5e 06 20 e1  0d 56 68 05 3a 0d 56 72  |3).V^. ..Vh.:.Vr|
0000efd0  1e 20 dd 20 f2 4d 65 6e  75 5f 54 69 63 6b 28 6d  |. . .Menu_Tick(m|
0000efe0  65 6e 75 25 2c 69 74 65  6d 25 29 0d 56 7c 38 20  |enu%,item%).V|8 |
0000eff0  6d 65 6e 75 25 21 28 32  38 2b 28 69 74 65 6d 25  |menu%!(28+(item%|
0000f000  2d 31 29 2a 32 34 29 3d  28 6d 65 6e 75 25 21 28  |-1)*24)=(menu%!(|
0000f010  32 38 2b 28 69 74 65 6d  25 2d 31 29 2a 32 34 29  |28+(item%-1)*24)|
0000f020  29 82 31 0d 56 86 06 20  e1 0d 56 90 06 20 3a 0d  |).1.V.. ..V.. :.|
0000f030  56 9a 22 20 dd 20 f2 4d  65 6e 75 5f 41 54 69 63  |V." . .Menu_ATic|
0000f040  6b 28 6d 65 6e 75 25 2c  69 74 65 6d 25 2c 69 25  |k(menu%,item%,i%|
0000f050  29 0d 56 a4 3d 20 ea 20  78 25 20 3a 20 78 25 3d  |).V.= . x% : x%=|
0000f060  6d 65 6e 75 25 21 28 32  38 2b 28 69 74 65 6d 25  |menu%!(28+(item%|
0000f070  2d 31 29 2a 32 34 29 20  3a 20 78 25 3d 78 25 3e  |-1)*24) : x%=x%>|
0000f080  3e 3e 31 20 3a 20 78 25  3d 78 25 3c 3c 31 0d 56  |>>1 : x%=x%<<1.V|
0000f090  ae 0c 20 c8 8e 20 69 25  20 ca 0d 56 b8 13 20 20  |.. .. i% ..V..  |
0000f0a0  c9 20 31 20 3a 20 78 25  3d 78 25 2b 31 0d 56 c2  |. 1 : x%=x%+1.V.|
0000f0b0  06 20 cb 0d 56 cc 1f 20  6d 65 6e 75 25 21 28 32  |. ..V.. menu%!(2|
0000f0c0  38 2b 28 69 74 65 6d 25  2d 31 29 2a 32 34 29 3d  |8+(item%-1)*24)=|
0000f0d0  78 25 0d 56 d6 06 20 e1  0d 56 e0 06 20 3a 0d 56  |x%.V.. ..V.. :.V|
0000f0e0  ea 24 20 dd 20 f2 4d 65  6e 75 5f 44 6f 74 74 65  |.$ . .Menu_Dotte|
0000f0f0  64 4c 69 6e 65 28 6d 65  6e 75 25 2c 69 74 65 6d  |dLine(menu%,item|
0000f100  25 29 0d 56 f4 38 20 6d  65 6e 75 25 21 28 32 38  |%).V.8 menu%!(28|
0000f110  2b 28 69 74 65 6d 25 2d  31 29 2a 32 34 29 3d 28  |+(item%-1)*24)=(|
0000f120  6d 65 6e 75 25 21 28 32  38 2b 28 69 74 65 6d 25  |menu%!(28+(item%|
0000f130  2d 31 29 2a 32 34 29 29  84 32 0d 56 fe 06 20 e1  |-1)*24)).2.V.. .|
0000f140  0d 57 08 06 20 3a 0d 57  12 32 20 dd 20 f2 4d 65  |.W.. :.W.2 . .Me|
0000f150  6e 75 5f 46 6f 72 65 47  72 6f 75 6e 64 43 6f 6c  |nu_ForeGroundCol|
0000f160  6f 75 72 28 6d 65 6e 75  25 2c 69 74 65 6d 25 2c  |our(menu%,item%,|
0000f170  63 6f 6c 6f 75 72 25 29  0d 57 1c 46 20 6d 65 6e  |colour%).W.F men|
0000f180  75 25 3f 28 33 39 2b 28  69 74 65 6d 25 2d 31 29  |u%?(39+(item%-1)|
0000f190  2a 32 34 29 3d 63 6f 6c  6f 75 72 25 2b 31 36 2a  |*24)=colour%+16*|
0000f1a0  28 28 6d 65 6e 75 25 3f  28 33 39 2b 28 69 74 65  |((menu%?(39+(ite|
0000f1b0  6d 25 2d 31 29 2a 32 34  29 29 81 31 36 29 0d 57  |m%-1)*24)).16).W|
0000f1c0  26 06 20 e1 0d 57 30 06  20 3a 0d 57 3a 32 20 dd  |&. ..W0. :.W:2 .|
0000f1d0  20 f2 4d 65 6e 75 5f 42  61 63 6b 47 72 6f 75 6e  | .Menu_BackGroun|
0000f1e0  64 43 6f 6c 6f 75 72 28  6d 65 6e 75 25 2c 69 74  |dColour(menu%,it|
0000f1f0  65 6d 25 2c 63 6f 6c 6f  75 72 25 29 0d 57 44 11  |em%,colour%).WD.|
0000f200  20 ea 20 66 6f 72 65 25  2c 72 65 6d 25 0d 57 4e  | . fore%,rem%.WN|
0000f210  27 20 66 6f 72 65 25 3d  28 6d 65 6e 75 25 3f 28  |' fore%=(menu%?(|
0000f220  33 39 2b 28 69 74 65 6d  25 2d 31 29 2a 32 34 29  |39+(item%-1)*24)|
0000f230  29 83 31 36 0d 57 58 2b  20 72 65 6d 25 3d 28 28  |).16.WX+ rem%=((|
0000f240  6d 65 6e 75 25 3f 28 33  39 2b 28 69 74 65 6d 25  |menu%?(39+(item%|
0000f250  2d 31 29 2a 32 34 29 29  81 31 36 29 83 31 36 0d  |-1)*24)).16).16.|
0000f260  57 62 32 20 6d 65 6e 75  25 3f 28 33 39 2b 28 69  |Wb2 menu%?(39+(i|
0000f270  74 65 6d 25 2d 31 29 2a  32 34 29 3d 66 6f 72 65  |tem%-1)*24)=fore|
0000f280  25 2b 31 36 2a 63 6f 6c  6f 75 72 25 2b 72 65 6d  |%+16*colour%+rem|
0000f290  25 0d 57 6c 06 20 e1 0d  57 76 06 20 3a 0d 57 80  |%.Wl. ..Wv. :.W.|
0000f2a0  2c 20 dd 20 f2 4d 65 6e  75 5f 43 6f 6c 6f 75 72  |, . .Menu_Colour|
0000f2b0  49 74 65 6d 28 6d 65 6e  75 25 2c 69 74 65 6d 25  |Item(menu%,item%|
0000f2c0  2c 63 6f 6c 6f 75 72 25  29 0d 57 8a 24 20 6d 65  |,colour%).W.$ me|
0000f2d0  6e 75 25 3f 28 33 39 2b  28 69 74 65 6d 25 2d 31  |nu%?(39+(item%-1|
0000f2e0  29 2a 32 34 29 3d 63 6f  6c 6f 75 72 25 0d 57 94  |)*24)=colour%.W.|
0000f2f0  06 20 e1 0d 57 9e 06 20  3a 0d 57 a8 13 20 20 dd  |. ..W.. :.W..  .|
0000f300  20 a4 43 6f 6c 6f 75 72  28 69 25 29 0d 57 b2 09  | .Colour(i%).W..|
0000f310  20 ea 20 6a 25 0d 57 bc  0b 20 c8 8e 20 b9 20 ca  | . j%.W.. .. . .|
0000f320  0d 57 c6 2b 20 20 20 c9  20 69 25 3c 34 2c 69 25  |.W.+   . i%<4,i%|
0000f330  3d 39 2c 69 25 3d 31 32  2c 69 25 3d 31 34 2c 69  |=9,i%=12,i%=14,i|
0000f340  25 3d 31 35 20 3a 20 6a  25 3d 37 0d 57 d0 26 20  |%=15 : j%=7.W.& |
0000f350  20 20 7f 20 20 20 20 20  20 20 20 20 20 20 20 20  |  .             |
0000f360  20 20 20 20 20 20 20 20  20 20 20 3a 20 6a 25 3d  |           : j%=|
0000f370  30 0d 57 da 06 20 cb 0d  57 e4 0e 20 3d 69 25 2a  |0.W.. ..W.. =i%*|
0000f380  31 36 2b 6a 25 0d 57 ee  06 20 3a 0d 57 f8 1b 20  |16+j%.W.. :.W.. |
0000f390  dd 20 f2 43 6f 6c 6f 75  72 54 69 63 6b 28 6e 75  |. .ColourTick(nu|
0000f3a0  6d 62 65 72 25 29 0d 58  02 1e 20 f2 54 69 63 6b  |mber%).X.. .Tick|
0000f3b0  28 43 6f 6c 6f 75 72 73  25 2c 6e 75 6d 62 65 72  |(Colours%,number|
0000f3c0  25 2b 31 29 0d 58 0c 38  20 c8 99 20 22 57 69 6d  |%+1).X.8 .. "Wim|
0000f3d0  70 5f 43 72 65 61 74 65  53 75 62 4d 65 6e 75 22  |p_CreateSubMenu"|
0000f3e0  2c 2c 43 6f 6c 6f 75 72  73 25 2c 77 69 6d 70 25  |,,Colours%,wimp%|
0000f3f0  21 32 34 2c 77 69 6d 70  25 21 32 38 0d 58 16 1e  |!24,wimp%!28.X..|
0000f400  20 f2 54 69 63 6b 28 43  6f 6c 6f 75 72 73 25 2c  | .Tick(Colours%,|
0000f410  6e 75 6d 62 65 72 25 2b  31 29 0d 58 20 06 20 e1  |number%+1).X . .|
0000f420  0d 58 2a 06 20 3a 0d 58  34 31 20 dd 20 a4 57 69  |.X*. :.X41 . .Wi|
0000f430  6d 70 5f 43 6f 6c 6f 75  72 4d 65 6e 75 3d a4 57  |mp_ColourMenu=.W|
0000f440  69 6d 70 5f 43 6f 6c 6f  75 72 73 4d 65 6e 75 28  |imp_ColoursMenu(|
0000f450  22 20 20 20 20 22 29 0d  58 3e 06 20 3a 0d 58 48  |"    ").X>. :.XH|
0000f460  20 20 dd 20 a4 57 69 6d  70 5f 43 6f 6c 6f 75 72  |  . .Wimp_Colour|
0000f470  73 4d 65 6e 75 28 74 69  74 6c 65 24 29 0d 58 52  |sMenu(title$).XR|
0000f480  11 20 ea 20 78 24 2c 6d  65 6e 25 2c 6a 25 0d 58  |. . x$,men%,j%.X|
0000f490  5c 37 20 78 24 3d 74 69  74 6c 65 24 2b 22 5c 30  |\7 x$=title$+"\0|
0000f4a0  5c 31 5c 32 5c 33 5c 34  5c 35 5c 36 5c 37 5c 38  |\1\2\3\4\5\6\7\8|
0000f4b0  5c 39 5c 31 30 5c 31 31  5c 31 32 5c 31 33 5c 31  |\9\10\11\12\13\1|
0000f4c0  34 5c 31 35 22 0d 58 66  1a 20 6d 65 6e 25 3d a4  |4\15".Xf. men%=.|
0000f4d0  4d 65 6e 75 5f 43 72 65  61 74 65 28 78 24 29 0d  |Menu_Create(x$).|
0000f4e0  58 70 10 20 e3 20 69 25  3d 30 20 b8 20 31 35 0d  |Xp. . i%=0 . 15.|
0000f4f0  58 7a 0b 20 c8 8e 20 b9  20 ca 0d 58 84 2b 20 20  |Xz. .. . ..X.+  |
0000f500  20 c9 20 69 25 3c 34 2c  69 25 3d 39 2c 69 25 3d  | . i%<4,i%=9,i%=|
0000f510  31 32 2c 69 25 3d 31 34  2c 69 25 3d 31 35 20 3a  |12,i%=14,i%=15 :|
0000f520  20 6a 25 3d 37 0d 58 8e  26 20 20 20 7f 20 20 20  | j%=7.X.&   .   |
0000f530  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000f540  20 20 20 20 20 3a 20 6a  25 3d 30 0d 58 98 06 20  |     : j%=0.X.. |
0000f550  cb 0d 58 a2 2b 20 20 20  f2 4d 65 6e 75 5f 43 6f  |..X.+   .Menu_Co|
0000f560  6c 6f 75 72 49 74 65 6d  28 6d 65 6e 25 2c 69 25  |lourItem(men%,i%|
0000f570  2b 31 2c 69 25 2a 31 36  2b 6a 25 29 0d 58 ac 1e  |+1,i%*16+j%).X..|
0000f580  20 20 20 f2 4d 65 6e 75  5f 43 65 6e 74 72 65 28  |   .Menu_Centre(|
0000f590  6d 65 6e 25 2c 69 25 2b  31 29 0d 58 b6 06 20 ed  |men%,i%+1).X.. .|
0000f5a0  0d 58 c0 0a 20 3d 6d 65  6e 25 0d 58 ca 06 20 3a  |.X.. =men%.X.. :|
0000f5b0  0d 58 d4 20 20 dd 20 f2  4d 65 6e 75 5f 43 65 6e  |.X.  . .Menu_Cen|
0000f5c0  74 72 65 28 6d 65 6e 75  25 2c 69 74 65 6d 25 29  |tre(menu%,item%)|
0000f5d0  0d 58 de 3b 20 6d 65 6e  75 25 21 28 33 36 2b 28  |.X.; menu%!(36+(|
0000f5e0  69 74 65 6d 25 2d 31 29  2a 32 34 29 3d 6d 65 6e  |item%-1)*24)=men|
0000f5f0  75 25 21 28 33 36 2b 28  69 74 65 6d 25 2d 31 29  |u%!(36+(item%-1)|
0000f600  2a 32 34 29 84 28 31 3c  3c 33 29 0d 58 e8 06 20  |*24).(1<<3).X.. |
0000f610  e1 0d 58 f2 06 20 3a 0d  58 fc 21 20 dd 20 f2 4d  |..X.. :.X.! . .M|
0000f620  65 6e 75 5f 44 69 73 61  62 6c 65 28 6d 65 6e 75  |enu_Disable(menu|
0000f630  25 2c 69 74 65 6d 25 29  0d 59 06 3c 20 6d 65 6e  |%,item%).Y.< men|
0000f640  75 25 21 28 33 36 2b 28  69 74 65 6d 25 2d 31 29  |u%!(36+(item%-1)|
0000f650  2a 32 34 29 3d 6d 65 6e  75 25 21 28 33 36 2b 28  |*24)=menu%!(36+(|
0000f660  69 74 65 6d 25 2d 31 29  2a 32 34 29 84 28 31 3c  |item%-1)*24).(1<|
0000f670  3c 32 32 29 0d 59 10 06  20 e1 0d 59 1a 06 20 3a  |<22).Y.. ..Y.. :|
0000f680  0d 59 24 20 20 dd 20 f2  4d 65 6e 75 5f 45 6e 61  |.Y$  . .Menu_Ena|
0000f690  62 6c 65 28 6d 65 6e 75  25 2c 69 74 65 6d 25 29  |ble(menu%,item%)|
0000f6a0  0d 59 2e 1f 20 f2 4d 65  6e 75 5f 44 69 73 61 62  |.Y.. .Menu_Disab|
0000f6b0  6c 65 28 6d 65 6e 75 25  2c 69 74 65 6d 25 29 0d  |le(menu%,item%).|
0000f6c0  59 38 3c 20 6d 65 6e 75  25 21 28 33 36 2b 28 69  |Y8< menu%!(36+(i|
0000f6d0  74 65 6d 25 2d 31 29 2a  32 34 29 3d 6d 65 6e 75  |tem%-1)*24)=menu|
0000f6e0  25 21 28 33 36 2b 28 69  74 65 6d 25 2d 31 29 2a  |%!(36+(item%-1)*|
0000f6f0  32 34 29 82 28 31 3c 3c  32 32 29 0d 59 42 06 20  |24).(1<<22).YB. |
0000f700  e1 0d 59 4c 06 20 3a 0d  59 56 3a 20 dd 20 f2 4d  |..YL. :.YV: . .M|
0000f710  65 6e 75 5f 57 72 69 74  65 28 6d 65 6e 75 25 2c  |enu_Write(menu%,|
0000f720  69 74 65 6d 25 2c 62 75  66 66 65 72 25 2c 76 61  |item%,buffer%,va|
0000f730  6c 25 2c 42 75 66 66 65  72 4c 65 6e 67 74 68 25  |l%,BufferLength%|
0000f740  29 0d 59 60 38 20 6d 65  6e 75 25 21 28 32 38 2b  |).Y`8 menu%!(28+|
0000f750  28 69 74 65 6d 25 2d 31  29 2a 32 34 29 3d 28 6d  |(item%-1)*24)=(m|
0000f760  65 6e 75 25 21 28 32 38  2b 28 69 74 65 6d 25 2d  |enu%!(28+(item%-|
0000f770  31 29 2a 32 34 29 29 84  34 0d 59 6a 39 20 6d 65  |1)*24)).4.Yj9 me|
0000f780  6e 75 25 21 28 33 36 2b  28 69 74 65 6d 25 2d 31  |nu%!(36+(item%-1|
0000f790  29 2a 32 34 29 3d 6d 65  6e 75 25 21 28 33 36 2b  |)*24)=menu%!(36+|
0000f7a0  28 69 74 65 6d 25 2d 31  29 2a 32 34 29 84 26 31  |(item%-1)*24).&1|
0000f7b0  30 30 0d 59 74 24 20 6d  65 6e 75 25 21 28 34 30  |00.Yt$ menu%!(40|
0000f7c0  2b 28 69 74 65 6d 25 2d  31 29 2a 32 34 29 3d 62  |+(item%-1)*24)=b|
0000f7d0  75 66 66 65 72 25 0d 59  7e 21 20 6d 65 6e 75 25  |uffer%.Y~! menu%|
0000f7e0  21 28 34 34 2b 28 69 74  65 6d 25 2d 31 29 2a 32  |!(44+(item%-1)*2|
0000f7f0  34 29 3d 76 61 6c 25 0d  59 88 2a 20 6d 65 6e 75  |4)=val%.Y.* menu|
0000f800  25 21 28 34 38 2b 28 69  74 65 6d 25 2d 31 29 2a  |%!(48+(item%-1)*|
0000f810  32 34 29 3d 42 75 66 66  65 72 4c 65 6e 67 74 68  |24)=BufferLength|
0000f820  25 0d 59 92 06 20 e1 0d  59 9c 06 20 3a 0d 59 a6  |%.Y.. ..Y.. :.Y.|
0000f830  20 20 dd 20 f2 4d 65 6e  75 5f 54 69 74 6c 65 28  |  . .Menu_Title(|
0000f840  6d 65 6e 75 25 2c 74 69  74 6c 65 24 29 0d 59 b0  |menu%,title$).Y.|
0000f850  1a 20 24 6d 65 6e 75 25  3d c0 74 69 74 6c 65 24  |. $menu%=.title$|
0000f860  2c 31 32 29 2b bd 30 0d  59 ba 06 20 e1 0d 59 c4  |,12)+.0.Y.. ..Y.|
0000f870  06 20 3a 0d 59 ce 31 20  dd 20 f2 4d 65 6e 75 5f  |. :.Y.1 . .Menu_|
0000f880  54 69 74 6c 65 46 6f 72  65 67 72 6f 75 6e 64 43  |TitleForegroundC|
0000f890  6f 6c 6f 75 72 28 6d 65  6e 75 25 2c 63 6f 6c 6f  |olour(menu%,colo|
0000f8a0  75 72 25 29 0d 59 d8 15  20 6d 65 6e 75 25 3f 31  |ur%).Y.. menu%?1|
0000f8b0  32 3d 63 6f 6c 6f 75 72  25 0d 59 e2 06 20 e1 0d  |2=colour%.Y.. ..|
0000f8c0  59 ec 06 20 3a 0d 59 f6  31 20 dd 20 f2 4d 65 6e  |Y.. :.Y.1 . .Men|
0000f8d0  75 5f 54 69 74 6c 65 42  61 63 6b 67 72 6f 75 6e  |u_TitleBackgroun|
0000f8e0  64 43 6f 6c 6f 75 72 28  6d 65 6e 75 25 2c 63 6f  |dColour(menu%,co|
0000f8f0  6c 6f 75 72 25 29 0d 5a  00 15 20 6d 65 6e 75 25  |lour%).Z.. menu%|
0000f900  3f 31 33 3d 63 6f 6c 6f  75 72 25 0d 5a 0a 06 20  |?13=colour%.Z.. |
0000f910  e1 0d 5a 14 06 20 3a 0d  5a 1e 24 20 dd 20 f2 4d  |..Z.. :.Z.$ . .M|
0000f920  65 6e 75 5f 49 74 65 6d  28 6d 65 6e 75 25 2c 69  |enu_Item(menu%,i|
0000f930  74 65 6d 25 2c 69 74 65  6d 24 29 0d 5a 28 2d 20  |tem%,item$).Z(- |
0000f940  24 28 6d 65 6e 75 25 2b  28 34 30 2b 28 69 74 65  |$(menu%+(40+(ite|
0000f950  6d 25 2d 31 29 2a 32 34  29 29 3d c0 69 74 65 6d  |m%-1)*24))=.item|
0000f960  24 2c 31 32 29 2b bd 30  0d 5a 32 06 20 e1 0d 5a  |$,12)+.0.Z2. ..Z|
0000f970  3c 05 3a 0d 5a 46 23 f4  2d 2d 2d 2d 2d 2d 2d 2d  |<.:.ZF#.--------|
0000f980  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000f990  2d 2d 2d 2d 2d 2d 0d 5a  50 19 f4 2a 2a 2a 2a 2a  |------.ZP..*****|
0000f9a0  2a 2a 46 49 4c 45 20 52  4f 55 54 49 4e 45 53 0d  |**FILE ROUTINES.|
0000f9b0  5a 5a 23 f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ZZ#.------------|
0000f9c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000f9d0  2d 2d 0d 5a 64 05 3a 0d  5a 6e 10 dd 20 a4 46 69  |--.Zd.:.Zn.. .Fi|
0000f9e0  6c 65 5f 54 79 70 65 0d  5a 78 12 20 c8 8e 20 77  |le_Type.Zx. .. w|
0000f9f0  69 6d 70 25 21 34 30 20  ca 0d 5a 82 15 20 20 c9  |imp%!40 ..Z..  .|
0000fa00  20 26 46 46 46 20 3a 3d  22 54 65 78 74 22 0d 5a  | &FFF :="Text".Z|
0000fa10  8c 15 20 20 c9 20 26 46  46 44 20 3a 3d 22 44 61  |..  . &FFD :="Da|
0000fa20  74 61 22 0d 5a 96 16 20  20 c9 20 26 46 46 42 20  |ta".Z..  . &FFB |
0000fa30  3a 3d 22 42 61 73 69 63  22 0d 5a a0 17 20 20 c9  |:="Basic".Z..  .|
0000fa40  20 26 46 46 39 20 3a 3d  22 53 70 72 69 74 65 22  | &FF9 :="Sprite"|
0000fa50  0d 5a aa 18 20 20 c9 20  26 46 45 44 20 3a 3d 22  |.Z..  . &FED :="|
0000fa60  50 61 6c 65 74 74 65 22  0d 5a b4 19 20 20 c9 20  |Palette".Z..  . |
0000fa70  26 46 45 43 20 3a 3d 22  54 65 6d 70 6c 61 74 65  |&FEC :="Template|
0000fa80  22 0d 5a be 15 20 20 c9  20 26 41 46 46 20 3a 3d  |".Z..  . &AFF :=|
0000fa90  22 44 72 61 77 22 0d 5a  c8 17 20 20 c9 20 26 31  |"Draw".Z..  . &1|
0000faa0  30 30 30 3a 3d 22 46 6f  6c 64 65 72 22 0d 5a d2  |000:="Folder".Z.|
0000fab0  1c 20 20 c9 20 26 32 30  30 30 3a 3d 22 41 70 70  |.  . &2000:="App|
0000fac0  6c 69 63 61 74 69 6f 6e  22 0d 5a dc 14 20 20 7f  |lication".Z..  .|
0000fad0  3d c3 7e 28 77 69 6d 70  25 21 34 30 29 0d 5a e6  |=.~(wimp%!40).Z.|
0000fae0  06 20 cb 0d 5a f0 05 3a  0d 5a fa 33 dd 20 a4 46  |. ..Z..:.Z.3. .F|
0000faf0  69 6c 65 5f 50 61 74 68  4e 61 6d 65 3d a4 47 65  |ile_PathName=.Ge|
0000fb00  74 5f 53 74 72 69 6e 67  41 74 41 64 64 72 65 73  |t_StringAtAddres|
0000fb10  73 28 77 69 6d 70 25 2b  34 34 29 0d 5b 04 05 3a  |s(wimp%+44).[..:|
0000fb20  0d 5b 0e 14 dd 20 a4 46  69 6c 65 5f 4c 6f 61 64  |.[... .File_Load|
0000fb30  28 66 24 29 0d 5b 18 0c  20 ea 20 53 25 2c 54 25  |(f$).[.. . S%,T%|
0000fb40  0d 5b 22 10 20 de 20 6f  66 66 73 65 74 25 20 34  |.[". . offset% 4|
0000fb50  0d 5b 2c 0c 20 53 25 3d  8e 20 66 24 0d 5b 36 0f  |.[,. S%=. f$.[6.|
0000fb60  20 54 25 3d a2 23 53 25  2b 31 36 0d 5b 40 0b 20  | T%=.#S%+16.[@. |
0000fb70  cf 23 53 25 3d 30 0d 5b  4a 20 20 c8 99 20 22 4f  |.#S%=0.[J  .. "O|
0000fb80  53 5f 47 42 50 42 22 2c  34 2c 53 25 2c 6f 66 66  |S_GBPB",4,S%,off|
0000fb90  73 65 74 25 2c 34 0d 5b  54 0e 20 d9 23 53 25 3a  |set%,4.[T. .#S%:|
0000fba0  53 25 3d 30 0d 5b 5e 13  20 c8 8e 20 6f 66 66 73  |S%=0.[^. .. offs|
0000fbb0  65 74 25 21 30 20 ca 0d  5b 68 1d 20 20 c9 20 20  |et%!0 ..[h.  .  |
0000fbc0  20 20 2d 31 3a de 20 66  69 6c 65 25 20 54 25 3a  |  -1:. file% T%:|
0000fbd0  53 25 3d b9 0d 5b 72 0d  20 20 7f 20 3a 53 25 3d  |S%=..[r.  . :S%=|
0000fbe0  a3 0d 5b 7c 06 20 cb 0d  5b 86 08 20 3d 53 25 0d  |..[|. ..[.. =S%.|
0000fbf0  5b 90 04 0d 5b 9a 05 3a  0d 5b a4 20 dd 20 a4 47  |[...[..:.[. . .G|
0000fc00  65 74 5f 53 74 72 69 6e  67 41 74 41 64 64 72 65  |et_StringAtAddre|
0000fc10  73 73 28 70 74 72 25 29  0d 5b ae 11 20 ea 20 73  |ss(ptr%).[.. . s|
0000fc20  24 20 3a 20 73 24 3d 22  22 0d 5b b8 3a 20 c8 95  |$ : s$="".[.: ..|
0000fc30  20 28 3f 70 74 72 25 3c  3e 31 33 29 80 28 3f 70  | (?ptr%<>13).(?p|
0000fc40  74 72 25 3c 3e 30 29 20  3a 20 73 24 2b 3d bd 28  |tr%<>0) : s$+=.(|
0000fc50  3f 70 74 72 25 29 3a 20  70 74 72 25 2b 3d 31 20  |?ptr%): ptr%+=1 |
0000fc60  3a ce 3a 0d 5b c2 08 20  3d 73 24 0d 5b cc 05 3a  |:.:.[.. =s$.[..:|
0000fc70  0d 5b d6 1d dd 20 a4 47  65 74 5f 53 74 72 69 6e  |.[... .Get_Strin|
0000fc80  67 46 72 6f 6d 50 61 74  68 28 66 24 29 0d 5b e0  |gFromPath(f$).[.|
0000fc90  3f e7 20 a7 66 24 2c 22  2e 22 29 3d 30 20 8c 3d  |?. .f$,".")=0 .=|
0000fca0  66 24 8b 3d a4 47 65 74  5f 53 74 72 69 6e 67 46  |f$.=.Get_StringF|
0000fcb0  72 6f 6d 50 61 74 68 28  c2 66 24 2c a9 28 66 24  |romPath(.f$,.(f$|
0000fcc0  29 2d a7 66 24 2c 22 2e  22 29 29 29 0d 5b ea 05  |)-.f$,"."))).[..|
0000fcd0  3a 0d 5b f4 23 f4 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |:.[.#.----------|
0000fce0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000fcf0  2d 2d 2d 2d 0d 5b fe 1b  f4 2a 2a 2a 2a 2a 2a 2a  |----.[...*******|
0000fd00  53 50 52 49 54 45 20 52  4f 55 54 49 4e 45 53 0d  |SPRITE ROUTINES.|
0000fd10  5c 08 23 f4 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |\.#.------------|
0000fd20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000fd30  2d 2d 0d 5c 12 05 f4 0d  5c 1c 05 3a 0d 5c 26 23  |--.\....\..:.\&#|
0000fd40  f4 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
0000fd50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
0000fd60  5c 30 19 f4 2a 2a 2a 2a  2a 2a 2a 4d 49 53 43 45  |\0..*******MISCE|
0000fd70  4c 4c 41 4e 45 4f 55 53  0d 5c 3a 23 f4 2d 2d 2d  |LLANEOUS.\:#.---|
0000fd80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0000fd90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 5c 44 05 3a  |-----------.\D.:|
0000fda0  0d 5c 4e 2a dd 20 f2 57  69 6d 70 5f 41 6c 65 72  |.\N*. .Wimp_Aler|
0000fdb0  74 28 74 69 74 6c 65 24  2c 6d 65 73 73 61 67 65  |t(title$,message|
0000fdc0  24 2c 62 75 74 74 6f 6e  25 29 0d 5c 58 3a f4 2e  |$,button%).\X:..|
0000fdd0  2e 2e 50 6c 61 63 65 73  20 61 6c 65 72 74 20 62  |..Places alert b|
0000fde0  6f 78 20 77 69 74 68 20  74 69 74 6c 65 20 61 6e  |ox with title an|
0000fdf0  64 20 6d 65 73 73 61 67  65 20 6f 6e 20 73 63 72  |d message on scr|
0000fe00  65 65 6e 2e 0d 5c 62 24  f4 2e 2e 2e 53 65 65 20  |een..\b$....See |
0000fe10  70 61 67 65 20 31 32 34  33 20 52 69 73 63 4f 73  |page 1243 RiscOs|
0000fe20  20 6d 61 6e 75 61 6c 2e  0d 5c 6c 0f ea 20 72 65  | manual..\l.. re|
0000fe30  73 70 6f 6e 73 65 25 0d  5c 76 17 24 28 77 69 6d  |sponse%.\v.$(wim|
0000fe40  70 25 2b 34 29 3d 6d 65  73 73 61 67 65 24 0d 5c  |p%+4)=message$.\|
0000fe50  80 10 c8 8e 20 62 75 74  74 6f 6e 25 20 ca 0d 5c  |.... button% ..\|
0000fe60  8a 2e 20 20 c9 20 32 20  20 20 20 3a 20 72 65 73  |..  . 2    : res|
0000fe70  70 6f 6e 73 65 25 3d 31  20 20 20 20 20 3a 20 f4  |ponse%=1     : .|
0000fe80  2e 2e 2e 45 72 72 6f 72  20 42 6f 78 0d 5c 94 39  |...Error Box.\.9|
0000fe90  20 20 c9 20 31 20 20 20  20 3a 20 72 65 73 70 6f  |  . 1    : respo|
0000fea0  6e 73 65 25 3d 31 35 20  20 20 20 3a 20 f4 2e 2e  |nse%=15    : ...|
0000feb0  2e 4f 4b 20 61 6e 64 20  43 41 4e 43 45 4c 20 62  |.OK and CANCEL b|
0000fec0  75 74 6f 6e 73 0d 5c 9e  22 20 20 c9 20 33 20 20  |utons.\."  . 3  |
0000fed0  20 20 3a 20 72 65 73 70  6f 6e 73 65 25 3d 28 31  |  : response%=(1|
0000fee0  3c 3c 35 29 2b 31 36 0d  5c a8 22 20 20 c9 20 34  |<<5)+16.\."  . 4|
0000fef0  20 20 20 20 3a 20 72 65  73 70 6f 6e 73 65 25 3d  |    : response%=|
0000ff00  28 31 3c 3c 36 29 2b 31  36 0d 5c b2 2e 20 20 7f  |(1<<6)+16.\..  .|
0000ff10  20 3a 20 72 65 73 70 6f  6e 73 65 25 3d 31 36 20  | : response%=16 |
0000ff20  20 20 20 3a 20 f4 2e 2e  2e 4f 4b 20 62 75 74 74  |   : ....OK butt|
0000ff30  6f 6e 20 6f 6e 6c 79 0d  5c bc 05 cb 0d 5c c6 3d  |on only.\....\.=|
0000ff40  c8 99 20 22 57 69 6d 70  5f 52 65 70 6f 72 74 45  |.. "Wimp_ReportE|
0000ff50  72 72 6f 72 22 2c 77 69  6d 70 25 2c 72 65 73 70  |rror",wimp%,resp|
0000ff60  6f 6e 73 65 25 2c 74 69  74 6c 65 24 20 b8 20 2c  |onse%,title$ . ,|
0000ff70  72 65 73 70 6f 6e 73 65  25 0d 5c d0 05 e1 0d 5c  |response%.\....\|
0000ff80  da 05 3a 0d 5c e4 21 dd  20 a4 43 61 6e 63 65 6c  |..:.\.!. .Cancel|
0000ff90  42 6f 78 28 74 69 74 6c  65 24 2c 6d 65 73 73 61  |Box(title$,messa|
0000ffa0  67 65 24 29 0d 5c ee 18  20 24 28 77 69 6d 70 25  |ge$).\.. $(wimp%|
0000ffb0  2b 34 29 3d 6d 65 73 73  61 67 65 24 0d 5c f8 11  |+4)=message$.\..|
0000ffc0  20 72 65 73 70 6f 6e 73  65 25 3d 32 33 0d 5d 02  | response%=23.].|
0000ffd0  3e 20 c8 99 20 22 57 69  6d 70 5f 52 65 70 6f 72  |> .. "Wimp_Repor|
0000ffe0  74 45 72 72 6f 72 22 2c  77 69 6d 70 25 2c 72 65  |tError",wimp%,re|
0000fff0  73 70 6f 6e 73 65 25 2c  74 69 74 6c 65 24 20 b8  |sponse%,title$ .|
00010000  20 2c 72 65 73 70 6f 6e  73 65 25 0d 5d 0c 0e 3d  | ,response%.]..=|
00010010  72 65 73 70 6f 6e 73 65  25 0d 5d 16 05 3a 0d 5d  |response%.]..:.]|
00010020  20 1b dd 20 a4 57 69 6d  70 5f 42 41 53 49 43 50  | .. .Wimp_BASICP|
00010030  61 72 61 6d 65 74 65 72  73 0d 5d 2a 15 20 ea 20  |arameters.]*. . |
00010040  63 6f 6d 24 2c 70 61 72  61 6d 24 2c 49 25 0d 5d  |com$,param$,I%.]|
00010050  34 1a 20 c8 99 20 22 4f  53 5f 47 65 74 45 6e 76  |4. .. "OS_GetEnv|
00010060  22 20 b8 20 63 6f 6d 24  0d 5d 3e 0f 20 70 61 72  |" . com$.]>. par|
00010070  61 6d 73 24 3d 22 22 0d  5d 48 18 20 49 25 3d a7  |ams$="".]H. I%=.|
00010080  63 6f 6d 24 2c 22 20 2d  71 75 69 74 20 22 29 0d  |com$," -quit ").|
00010090  5d 52 35 20 e7 20 49 25  20 8c 20 70 61 72 61 6d  |]R5 . I% . param|
000100a0  73 24 3d c1 63 6f 6d 24  2c a7 63 6f 6d 24 2c 22  |s$=.com$,.com$,"|
000100b0  20 22 2c 49 25 2b a9 22  20 2d 71 75 69 74 20 22  | ",I%+." -quit "|
000100c0  29 2b 31 29 0d 5d 5c 0c  3d 70 61 72 61 6d 73 24  |)+1).]\.=params$|
000100d0  0d 5d 66 25 dd 20 f2 57  69 6d 70 5f 45 72 72 6f  |.]f%. .Wimp_Erro|
000100e0  72 42 6f 78 28 74 69 74  6c 65 24 2c 6d 65 73 73  |rBox(title$,mess|
000100f0  61 67 65 24 29 0d 5d 70  22 f2 57 69 6d 70 5f 41  |age$).]p".Wimp_A|
00010100  6c 65 72 74 28 74 69 74  6c 65 24 2c 6d 65 73 73  |lert(title$,mess|
00010110  61 67 65 24 2c 32 29 0d  5d 7a 05 e1 0d 5d 84 05  |age$,2).]z...]..|
00010120  3a 0d 5d 8e 20 dd 20 f2  41 6c 65 72 74 42 6f 78  |:.]. . .AlertBox|
00010130  28 74 69 74 6c 65 24 2c  6d 65 73 73 61 67 65 24  |(title$,message$|
00010140  29 0d 5d 98 22 f2 57 69  6d 70 5f 41 6c 65 72 74  |).].".Wimp_Alert|
00010150  28 74 69 74 6c 65 24 2c  6d 65 73 73 61 67 65 24  |(title$,message$|
00010160  2c 30 29 0d 5d a2 05 e1  0d 5d ac 05 3a 0d 5d b6  |,0).]....]..:.].|
00010170  26 dd 20 f2 57 69 6d 70  5f 43 61 6e 63 65 6c 42  |&. .Wimp_CancelB|
00010180  6f 78 28 74 69 74 6c 65  24 2c 6d 65 73 73 61 67  |ox(title$,messag|
00010190  65 24 29 0d 5d c0 22 f2  57 69 6d 70 5f 41 6c 65  |e$).].".Wimp_Ale|
000101a0  72 74 28 74 69 74 6c 65  24 2c 6d 65 73 73 61 67  |rt(title$,messag|
000101b0  65 24 2c 31 29 0d 5d ca  05 e1 0d 5d d4 05 3a 0d  |e$,1).]....]..:.|
000101c0  5d de 05 3a 0d 5d e8 23  dd 20 a4 57 69 6d 70 5f  |]..:.].#. .Wimp_|
000101d0  52 65 61 64 56 61 72 69  61 62 6c 65 28 56 61 72  |ReadVariable(Var|
000101e0  69 61 62 6c 65 24 29 0d  5d f2 1b ea 6c 65 6e 25  |iable$).]...len%|
000101f0  2c 72 65 73 75 6c 74 25  2c 76 61 72 69 61 62 6c  |,result%,variabl|
00010200  65 25 0d 5d fc 14 24 77  69 6d 70 25 3d 56 61 72  |e%.]..$wimp%=Var|
00010210  69 61 62 6c 65 24 0d 5e  06 34 c8 99 22 4f 53 5f  |iable$.^.4.."OS_|
00010220  52 65 61 64 56 61 72 56  61 6c 22 2c 77 69 6d 70  |ReadVarVal",wimp|
00010230  25 2c 77 69 6d 70 25 2b  32 35 35 2c 32 35 35 2c  |%,wimp%+255,255,|
00010240  2c 33 20 b8 2c 2c 6c 65  6e 25 0d 5e 10 17 77 69  |,3 .,,len%.^..wi|
00010250  6d 70 25 3f 28 6c 65 6e  25 2b 32 35 35 29 3d 31  |mp%?(len%+255)=1|
00010260  33 0d 5e 1a 11 3d 24 28  77 69 6d 70 25 2b 32 35  |3.^..=$(wimp%+25|
00010270  35 29 0d 5e 24 05 3a 0d  5e 2e 1d dd 20 f2 57 69  |5).^$.:.^... .Wi|
00010280  6d 70 5f 53 65 6e 64 54  6f 45 64 69 74 28 66 69  |mp_SendToEdit(fi|
00010290  6c 65 24 29 0d 5e 38 08  ea 20 6e 25 0d 5e 42 15  |le$).^8.. n%.^B.|
000102a0  77 69 6d 70 25 21 34 3d  26 36 43 43 30 31 43 30  |wimp%!4=&6CC01C0|
000102b0  43 0d 5e 4c 0e 77 69 6d  70 25 21 31 36 3d 35 0d  |C.^L.wimp%!16=5.|
000102c0  5e 56 0e 77 69 6d 70 25  21 33 36 3d 30 0d 5e 60  |^V.wimp%!36=0.^`|
000102d0  11 77 69 6d 70 25 21 34  30 3d 26 46 46 46 0d 5e  |.wimp%!40=&FFF.^|
000102e0  6a 18 24 28 77 69 6d 70  25 2b 34 34 29 3d 66 69  |j.$(wimp%+44)=fi|
000102f0  6c 65 24 2b bd 30 0d 5e  74 10 6e 25 3d a9 66 69  |le$+.0.^t.n%=.fi|
00010300  6c 65 24 2b 34 35 0d 5e  7e 2c e7 20 6e 25 83 34  |le$+45.^~,. n%.4|
00010310  20 8c 20 21 77 69 6d 70  25 3d 34 2b 28 6e 25 3e  | . !wimp%=4+(n%>|
00010320  3e 32 29 3c 3c 32 20 8b  20 21 77 69 6d 70 25 3d  |>2)<<2 . !wimp%=|
00010330  6e 25 0d 5e 88 24 c8 99  20 22 57 69 6d 70 5f 53  |n%.^.$.. "Wimp_S|
00010340  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 37 2c 77  |endMessage",17,w|
00010350  69 6d 70 25 2c 30 0d 5e  92 05 e1 0d 5e 9c 05 3a  |imp%,0.^....^..:|
00010360  0d 5e a6 17 dd 20 f2 57  69 6d 70 5f 53 70 72 69  |.^... .Wimp_Spri|
00010370  74 65 73 4c 6f 61 64 0d  5e b0 2f f4 7c 54 68 69  |tesLoad.^./.|Thi|
00010380  73 20 6c 6f 61 64 73 20  61 20 66 69 6c 65 20 63  |s loads a file c|
00010390  61 6c 6c 65 64 20 53 70  72 69 74 65 73 20 66 72  |alled Sprites fr|
000103a0  6f 6d 20 74 68 65 0d 5e  ba 0a f4 7c 70 61 74 68  |om the.^...|path|
000103b0  0d 5e c4 24 f4 7c 20 20  20 20 20 20 20 20 20 20  |.^.$.|          |
000103c0  20 20 3c 4f 62 65 79 24  44 69 72 3e 2e 53 70 72  |  <Obey$Dir>.Spr|
000103d0  69 74 65 73 0d 5e ce 06  f4 7c 0d 5e d8 06 f4 7c  |ites.^...|.^...||
000103e0  0d 5e e2 2f f2 57 69 6d  70 5f 53 70 72 69 74 65  |.^./.Wimp_Sprite|
000103f0  73 50 61 74 68 4c 6f 61  64 28 22 3c 4f 62 65 79  |sPathLoad("<Obey|
00010400  24 44 69 72 3e 2e 53 70  72 69 74 65 73 22 29 0d  |$Dir>.Sprites").|
00010410  5e ec 05 e1 0d 5e f6 05  3a 0d 5f 00 26 dd 20 f2  |^....^..:._.&. .|
00010420  57 69 6d 70 5f 53 70 72  69 74 65 73 50 61 74 68  |Wimp_SpritesPath|
00010430  4c 6f 61 64 28 70 61 74  68 6e 61 6d 65 24 29 0d  |Load(pathname$).|
00010440  5f 0a 2e f4 7c 54 68 69  73 20 6c 6f 61 64 73 20  |_...|This loads |
00010450  61 20 73 70 72 69 74 65  73 20 66 69 6c 65 20 77  |a sprites file w|
00010460  69 74 68 20 66 75 6c 6c  20 6e 61 6d 65 0d 5f 14  |ith full name._.|
00010470  1e f4 7c 67 69 76 65 6e  20 62 79 20 70 61 74 68  |..|given by path|
00010480  6e 61 6d 65 24 2e 20 45  2e 67 2e 0d 5f 1e 06 f4  |name$. E.g.._...|
00010490  7c 0d 5f 28 30 f4 7c 20  20 20 20 50 52 4f 43 57  ||._(0.|    PROCW|
000104a0  69 6d 70 5f 53 70 72 69  74 65 73 50 61 74 68 4c  |imp_SpritesPathL|
000104b0  6f 61 64 28 22 24 2e 50  69 63 74 75 72 65 73 22  |oad("$.Pictures"|
000104c0  29 0d 5f 32 06 f4 7c 0d  5f 3c 0a ea 53 25 2c 54  |)._2..|._<..S%,T|
000104d0  25 0d 5f 46 27 53 25 3d  8e 20 70 61 74 68 6e 61  |%._F'S%=. pathna|
000104e0  6d 65 24 3a 54 25 3d a2  23 53 25 2b 31 36 3a d9  |me$:T%=.#S%+16:.|
000104f0  23 53 25 3a 53 25 3d 30  0d 5f 50 19 de 73 70 72  |#S%:S%=0._P..spr|
00010500  69 74 65 73 25 54 25 2c  73 70 6e 61 6d 65 25 31  |ites%T%,spname%1|
00010510  32 0d 5f 5a 1d 21 73 70  72 69 74 65 73 25 3d 54  |2._Z.!sprites%=T|
00010520  25 3a 73 70 72 69 74 65  73 25 21 38 3d 30 0d 5f  |%:sprites%!8=0._|
00010530  64 21 c8 99 22 4f 53 5f  53 70 72 69 74 65 4f 70  |d!.."OS_SpriteOp|
00010540  22 2c 26 31 30 39 2c 73  70 72 69 74 65 73 25 0d  |",&109,sprites%.|
00010550  5f 6e 2b c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |_n+.."OS_SpriteO|
00010560  70 22 2c 26 31 30 41 2c  73 70 72 69 74 65 73 25  |p",&10A,sprites%|
00010570  2c 70 61 74 68 6e 61 6d  65 24 0d 5f 78 05 e1 0d  |,pathname$._x...|
00010580  5f 82 05 3a 0d 5f 8c 20  dd 20 f2 57 69 6d 70 5f  |_..:._. . .Wimp_|
00010590  53 70 72 69 74 65 73 50  6c 6f 74 28 73 70 72 69  |SpritesPlot(spri|
000105a0  74 65 24 29 0d 5f 96 06  f4 7c 0d 5f a0 06 f4 7c  |te$)._...|._...||
000105b0  0d 5f aa 06 f4 7c 0d 5f  b4 06 f4 7c 0d 5f be 06  |._...|._...|._..|
000105c0  f4 7c 0d 5f c8 2d c8 99  22 4f 53 5f 53 70 72 69  |.|._.-.."OS_Spri|
000105d0  74 65 4f 70 22 2c 26 31  31 43 2c 73 70 72 69 74  |teOp",&11C,sprit|
000105e0  65 73 25 2c 73 70 72 69  74 65 24 2c 2c 2c 30 0d  |es%,sprite$,,,0.|
000105f0  5f d2 05 e1 0d 5f dc 05  3a 0d 5f e6 22 dd 20 f2  |_...._..:._.". .|
00010600  57 69 6d 70 5f 53 70 72  69 74 65 73 44 65 6c 65  |Wimp_SpritesDele|
00010610  74 65 28 73 70 72 69 74  65 24 29 0d 5f f0 06 f4  |te(sprite$)._...|
00010620  7c 0d 5f fa 06 f4 7c 0d  60 04 06 f4 7c 0d 60 0e  ||._...|.`...|.`.|
00010630  06 f4 7c 0d 60 18 06 f4  7c 0d 60 22 29 c8 99 22  |..|.`...|.`").."|
00010640  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 31  |OS_SpriteOp",&11|
00010650  39 2c 73 70 72 69 74 65  73 25 2c 73 70 72 69 74  |9,sprites%,sprit|
00010660  65 24 0d 60 2c 05 e1 0d  60 36 05 3a 0d 60 40 28  |e$.`,...`6.:.`@(|
00010670  dd 20 f2 57 69 6d 70 5f  53 70 72 69 74 65 73 52  |. .Wimp_SpritesR|
00010680  65 6e 61 6d 65 28 73 70  72 69 74 65 24 2c 6e 61  |ename(sprite$,na|
00010690  6d 65 24 29 0d 60 4a 06  f4 7c 0d 60 54 06 f4 7c  |me$).`J..|.`T..||
000106a0  0d 60 5e 06 f4 7c 0d 60  68 06 f4 7c 0d 60 72 06  |.`^..|.`h..|.`r.|
000106b0  f4 7c 0d 60 7c 2f c8 99  22 4f 53 5f 53 70 72 69  |.|.`|/.."OS_Spri|
000106c0  74 65 4f 70 22 2c 26 31  31 41 2c 73 70 72 69 74  |teOp",&11A,sprit|
000106d0  65 73 25 2c 73 70 72 69  74 65 24 2c 6e 61 6d 65  |es%,sprite$,name|
000106e0  24 0d 60 86 05 e1 0d 60  90 05 3a 0d 60 9a 39 dd  |$.`....`..:.`.9.|
000106f0  a4 69 63 6f 6e 5f 6e 65  77 73 70 72 69 74 65 28  |.icon_newsprite(|
00010700  62 2c 77 68 61 6e 64 6c  65 25 2c 69 68 61 6e 64  |b,whandle%,ihand|
00010710  6c 65 25 2c 6e 65 77 6e  61 6d 65 24 2c 72 65 64  |le%,newname$,red|
00010720  72 61 77 29 0d 60 a4 1d  62 21 30 3d 77 68 61 6e  |raw).`..b!0=whan|
00010730  64 6c 65 25 3a 62 21 34  3d 69 68 61 6e 64 6c 65  |dle%:b!4=ihandle|
00010740  25 0d 60 ae 1d c8 99 20  22 57 69 6d 70 5f 47 65  |%.`.... "Wimp_Ge|
00010750  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 62 0d 60  |tIconState",,b.`|
00010760  b8 1b c8 99 20 22 57 69  6d 70 5f 44 65 6c 65 74  |.... "Wimp_Delet|
00010770  65 49 63 6f 6e 22 2c 2c  62 0d 60 c2 43 62 21 34  |eIcon",,b.`.Cb!4|
00010780  3d 62 21 38 3a 62 21 38  3d 62 21 31 32 3a 62 21  |=b!8:b!8=b!12:b!|
00010790  31 32 3d 62 21 31 36 3a  62 21 31 36 3d 62 21 32  |12=b!16:b!16=b!2|
000107a0  30 3a 62 21 32 30 3d 62  21 32 34 3a 24 28 62 2b  |0:b!20=b!24:$(b+|
000107b0  32 34 29 3d 6e 65 77 6e  61 6d 65 24 0d 60 cc 26  |24)=newname$.`.&|
000107c0  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 49  |.. "Wimp_CreateI|
000107d0  63 6f 6e 22 2c 2c 62 20  b8 20 69 68 61 6e 64 6c  |con",,b . ihandl|
000107e0  65 25 0d 60 d6 3a e7 20  72 65 64 72 61 77 20 8c  |e%.`.:. redraw .|
000107f0  20 c8 99 20 22 57 69 6d  70 5f 46 6f 72 63 65 52  | .. "Wimp_ForceR|
00010800  65 64 72 61 77 22 2c 62  21 30 2c 62 21 34 2c 62  |edraw",b!0,b!4,b|
00010810  21 38 2c 62 21 31 32 2c  62 21 31 36 0d 60 e0 0d  |!8,b!12,b!16.`..|
00010820  3d 69 68 61 6e 64 6c 65  25 0d 60 ea 05 3a 0d 60  |=ihandle%.`..:.`|
00010830  f4 23 dd 20 a4 57 69 6d  70 5f 52 65 61 64 56 61  |.#. .Wimp_ReadVa|
00010840  72 69 61 62 6c 65 28 56  61 72 69 61 62 6c 65 24  |riable(Variable$|
00010850  29 0d 60 fe 1b ea 6c 65  6e 25 2c 72 65 73 75 6c  |).`...len%,resul|
00010860  74 25 2c 76 61 72 69 61  62 6c 65 25 0d 61 08 14  |t%,variable%.a..|
00010870  24 77 69 6d 70 25 3d 56  61 72 69 61 62 6c 65 24  |$wimp%=Variable$|
00010880  0d 61 12 33 c8 99 22 4f  53 5f 52 65 61 64 56 61  |.a.3.."OS_ReadVa|
00010890  72 56 61 6c 22 2c 77 69  6d 70 25 2c 77 69 6d 70  |rVal",wimp%,wimp|
000108a0  25 2b 32 35 35 2c 32 35  35 2c 2c 33 b8 2c 2c 6c  |%+255,255,,3.,,l|
000108b0  65 6e 25 0d 61 1c 17 77  69 6d 70 25 3f 28 6c 65  |en%.a..wimp%?(le|
000108c0  6e 25 2b 32 35 35 29 3d  31 33 0d 61 26 11 3d 24  |n%+255)=13.a&.=$|
000108d0  28 77 69 6d 70 25 2b 32  35 35 29 0d 61 30 05 3a  |(wimp%+255).a0.:|
000108e0  0d 61 3a 0b dd 20 f2 63  6f 64 65 0d 61 44 10 de  |.a:.. .code.aD..|
000108f0  20 61 70 70 65 6e 64 25  20 32 34 0d 61 4e 23 e3  | append% 24.aN#.|
00010900  20 4b 25 3d 30 20 b8 20  31 3a 50 25 3d 61 70 70  | K%=0 . 1:P%=app|
00010910  65 6e 64 25 3a 5b 4f 50  54 20 32 2a 4b 25 0d 61  |end%:[OPT 2*K%.a|
00010920  58 0d 2e 6e 65 78 74 62  79 74 65 0d 61 62 1c 20  |X..nextbyte.ab. |
00010930  4d 4f 56 20 52 31 2c 52  36 3a 53 57 49 20 22 4f  |MOV R1,R6:SWI "O|
00010940  53 5f 42 47 65 74 22 0d  61 6c 11 20 4d 4f 56 43  |S_BGet".al. MOVC|
00010950  53 20 50 43 2c 52 31 34  0d 61 76 1c 20 4d 4f 56  |S PC,R14.av. MOV|
00010960  20 52 31 2c 52 35 3a 53  57 49 20 22 4f 53 5f 42  | R1,R5:SWI "OS_B|
00010970  50 75 74 22 0d 61 80 0f  20 42 20 6e 65 78 74 62  |Put".a.. B nextb|
00010980  79 74 65 0d 61 8a 07 5d  3a ed 0d 61 94 05 e1 0d  |yte.a..]:..a....|
00010990  ff                                                |.|
00010991