Home » Archimedes archive » Archimedes World » AW-1995-04-Disc1.adf » Disk1Apr95 » !AWApr95/Goodies/Draw/!Libraries/!RunImage

!AWApr95/Goodies/Draw/!Libraries/!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-1995-04-Disc1.adf » Disk1Apr95
Filename: !AWApr95/Goodies/Draw/!Libraries/!RunImage
Read OK:
File size: 5201 bytes
Load address: 0000
Exec address: 0000
File contents
    1ON ERROR PROCError
    2PROCWimp_Initialise("Library Maker")
    3PROCDefine_Windows
    4PROCDefine_Menus
    5REPEAT
    6 event%=FNWimp_PollSave(mask%)
    7 CASE event% OF
    8  WHEN 2     : SYS "Wimp_OpenWindow",,wimp%
    9  WHEN 3     : SYS "Wimp_CloseWindow",,wimp%
   10  WHEN 6     : PROCEvent_MouseClick
   11  WHEN 9     : PROCEvent_MenuChoice
   12  WHEN 17,18 : PROCEvent_Message
   13 ENDCASE
   14UNTIL finished%
   15END
   16
   17DEF PROCWimp_Initialise(task$)
   18DIM wimp% 3000, icons% 1525
   19icon_memory%=icons%+1525
   20SYS "Wimp_Initialise",200,&4B534154,task$
   21mask%=0
   22finished%=FALSE
   23sprite_name$=""
   24Basic_File$=""
   25Options%=0
   26ENDPROC
   27
   28DEF PROCDefine_Windows
   29LibSave_Window%=FNWimp_WindowLoad("LibSave")
   30Info_Window%=FNWimp_WindowLoad("Info")
   31LinkSave_Window%=FNWimp_WindowLoad("LinkSave")
   32Convert_Window%=FNWimp_WindowLoad("Convert")
   33SYS "Wimp_CloseTemplate"
   34PROCRead_Defaults
   35ENDPROC
   36  :
   37  DEF PROCRead_Defaults
   38  DIM  defaults% 4
   39  IF FNFile_Exists("LinkLib:Defaults") THEN
   40   SYS "OS_File",16,"LinkLib:Defaults",defaults%
   41   crunch%=defaults%!0
   42  ELSE
   43   crunch%=%11111
   44  ENDIF
   45  PROCSet_LinkSaveIcons
   46  ENDPROC
   47     :
   48     DEF PROCSet_LinkSaveIcons
   49      FOR icon%=4 TO 8
   50        IF crunch%AND(1<<(icon%-4)) THEN
   51         PROCWimp_IconSelect(LinkSave_Window%,icon%)
   52        ENDIF
   53       NEXT
   54     ENDPROC
   55
   56DEF PROCDefine_Menus
   57Bar_Icon%=FNWimp_IconBar("!Libraries")
   58Bar_Menu%=FNWimp_MenuCreate("Libraries\Info\New Library\Quit")
   59PROCWimp_MenuGlue(Bar_Menu%,1,Info_Window%)
   60PROCWimp_MenuGlue(Bar_Menu%,2,LibSave_Window%)
   61LinkSave_Menu%=FNWimp_MenuCreate("Libraries\SaveDefaults")
   62ENDPROC
   63
   64
   65DEF PROCEvent_MouseClick
   66CASE wimp%!12 OF
   67 WHEN -2
   68  CASE wimp%!8 OF
   69   WHEN 2    : PROCWimp_MenuPopUpBar(wimp%!0,wimp%!4)
   70  ENDCASE
   71 WHEN LinkSave_Window%
   72  CASE wimp%!8 OF
   73   WHEN 2    : PROCWimp_MenuPopUp(LinkSave_Menu%,wimp%!0,wimp%!4)
   74   OTHERWISE : PROCGet_LinkOptions(wimp%!16)
   75  ENDCASE
   76ENDCASE
   77ENDPROC
   78   :
   79   DEF PROCGet_LinkOptions(icon%)
   80    CASE icon% OF
   81     WHEN 4,5,6,7,8
   82      ic%=icon%-4 : crunch%=crunch%EOR(1<<ic%)
   83    ENDCASE
   84   ENDPROC
   85
   86DEF PROCEvent_MenuChoice
   87 CASE menu% OF
   88  WHEN Bar_Menu%
   89   CASE wimp%!0 OF
   90    WHEN 2 : PROCWimp_MenuClose : finished%=TRUE
   91   ENDCASE
   92  WHEN LinkSave_Menu%
   93   CASE wimp%!0 OF
   94    WHEN 0 : PROCSave_Defaults
   95   ENDCASE
   96 ENDCASE
   97ENDPROC
   98  :
   99  DEF PROCSave_Defaults
  100  defaults%!0=crunch%
  101  SYS "OS_File",10,"LinkLib:Defaults",&FFD,,defaults%,defaults%+4
  102  ENDPROC
  103
  104DEF PROCEvent_Message
  105message%=wimp%!16
  106 CASE message%  OF
  107  WHEN 0 : finished%=TRUE
  108  WHEN 3 : PROCDealWithLoadedFile(wimp%!40)
  109 ENDCASE
  110ENDPROC
  111  :
  112  DEF PROCDealWithLoadedFile(type%)
  113  LOCAL g$
  114   CASE type% OF
  115    WHEN &FFB :
  116     Basic_File$=FNWimp_GetStringAtAddress(wimp%+44)
  117     PROCWimp_IconPutText(LinkSave_Window%,14,"file_ffb")
  118     PROCDealWithBasicFile
  119    WHEN &B9B :
  120     DBasic_File$=FNWimp_GetStringAtAddress(wimp%+44)
  121     PROCWimp_WindowBringToTop(Convert_Window%)
  122    WHEN &2000: 
  123     Basic_File$=FNWimp_GetStringAtAddress(wimp%+44)
  124     leaf$=FNWimp_GetFileFromPathname(Basic_File$)
  125     CASE FNTypeOfApplication(Basic_File$) OF
  126      WHEN "Unrecognised"
  127      WHEN "Library"
  128       PROCWimp_Alert("","Is a library!")
  129      OTHERWISE
  130       PROCWimp_IconPutText(LinkSave_Window%,14,leaf$)
  131       Basic_File$+=g$
  132       PROCDealWithBasicFile
  133     ENDCASE
  134   ENDCASE
  135  ENDPROC
  136  
  137    DEF FNTypeOfApplication(Basic_File$)
  138     IF FNFound(Basic_File$+".!RunImage") THEN g$=".!RunImage":=g$
  139     IF FNLibrary(Basic_File$) THEN ="Library"
  140     IF FNFound(Basic_File$+".!Runimage") THEN g$=".!Runimage":=g$
  141     IF FNFound(Basic_File$+".!runimage") THEN g$=".!runimage":=g$
  142     IF FNFound(Basic_File$+".!RUNIMAGE") THEN g$=".!RUNIMAGE":=g$
  143     ="Unrecognised"
  144     
  145    DEF FNFound(ff$)
  146     LOCAL found%
  147     found%=TRUE : $wimp%=ff$
  148     SYS "OS_File",5,wimp% TO found%
  149    =found%
  150
  151    DEF FNLibrary(ff$)
  152     LOCAL found%
  153     $wimp%=ff$+".Library"
  154     SYS "OS_File",5,wimp% TO found%
  155     IF found%=2 THEN=TRUE ELSE=FALSE
  156  
  157    DEF PROCDealWithBasicFile
  158     PROCWimp_IconPutText(LinkSave_Window%,11,Basic_File$)
  159     PROCWimp_WindowBringToTop(LinkSave_Window%)
  160     u$=FNWimp_IconText(LinkSave_Window%,1)
  161     PROCWimp_IconCaret(LinkSave_Window%,1,LENu$)
  162    ENDPROC
  163
  164DEF FNDefine_Save(window%)
  165LOCAL result%
  166CASE window% OF
  167 WHEN LibSave_Window%,LinkSave_Window%,Convert_Window%  : result%=TRUE
  168 OTHERWISE             : result%=FALSE
  169ENDCASE
  170=result%
  171
  172DEF PROCEvent_SaveFile(file$,window%)
  173CASE window% OF
  174 WHEN LibSave_Window% : PROCCreateNewLibrary
  175 WHEN LinkSave_Window%: PROCLinkLibraries
  176 WHEN Convert_Window%
  177  
  178  PROCSaveAndConvert
  179ENDCASE
  180ENDPROC
  181
  182
  183REM  3.1 Creating a new library
  184REM  ==========================
  185
  186  DEF PROCCreateNewLibrary
  187   PROCGetLibraryName
  188   OSCLI"CDIR "+file$
  189   OSCLI"CDIR "+file$+".Library"
  190   IF sprite_name$="" THEN PROCLoad_Sprites
  191   PROCCopy_SpriteFiles
  192   PROCCopy_Run
  193   PROCCopy_Boot
  194   PROCCopy_ReadMe
  195  ENDPROC
  196    :
  197    DEF PROCGetLibraryName
  198     leaf$=FNWimp_GetFileFromPathname(file$)
  199     file$=LEFT$(file$,LENfile$-LENleaf$)
  200     IF LEFT$(leaf$,1)<>"!" THEN
  201      file$+="!"+LEFT$(leaf$,9)
  202      PROCWimp_IconPutText(LibSave_Window%,1,file$)
  203     ELSE
  204      file$+=LEFT$(leaf$,10)
  205      PROCWimp_IconPutText(LibSave_Window%,1,file$)
  206     ENDIF
  207    ENDPROC
  208    :
  209    DEF PROCLoad_Sprites
  210     sprite_name$="!library" : sm_sprite$="sm!library"
  211     Sprites%=FNWimp_SpriteLoad("LinkLib:LSprite")
  212     Sprites22%=FNWimp_SpriteLoad("LinkLib:LSprite22")
  213     Sprites23%=FNWimp_SpriteLoad("LinkLib:LSprite23")
  214    ENDPROC
  215    :
  216    DEF PROCCopy_SpriteFiles
  217     leaf$=FNWimp_GetFileFromPathname(file$)
  218     SYS "OS_SpriteOp",256+26,Sprites%,sprite_name$,leaf$+CHR$0
  219     SYS "OS_SpriteOp",256+26,Sprites%,sm_sprite$,"sm"+leaf$+CHR$0
  220     SYS "OS_SpriteOp",256+12,Sprites%,file$+".!Sprites"
  221     SYS "OS_SpriteOp",256+26,Sprites22%,sprite_name$,leaf$+CHR$0
  222     SYS "OS_SpriteOp",256+26,Sprites22%,sm_sprite$,"sm"+leaf$+CHR$0
  223     SYS "OS_SpriteOp",256+12,Sprites22%,file$+".!Sprites22"
  224     SYS "OS_SpriteOp",256+26,Sprites23%,sprite_name$,leaf$+CHR$0
  225     SYS "OS_SpriteOp",256+26,Sprites23%,sm_sprite$,"sm"+leaf$+CHR$0
  226     SYS "OS_SpriteOp",256+12,Sprites23%,file$+".!Sprites23"
  227     sprite_name$=leaf$  : sm_sprite$="sm"+leaf$
  228    ENDPROC
  229    :
  230    DEF PROCCopy_Run
  231     LOCAL p% : p%=wimp%
  232     IF LEFT$(leaf$,1)="!" THEN leaf$=RIGHT$(leaf$,LENleaf$-1)
  233     PROCAdd_Line("Iconsprites <Obey$Dir>.!Sprites")
  234     PROCAdd_Line("Set "+leaf$+"$Path <Obey$Dir>.")
  235     PROCAdd_Line("Filer_OpenDir "+leaf$+":Library")
  236     SYS "OS_File",10,file$+".!Run",&FEB,,wimp%,p%
  237    ENDPROC
  238    :
  239    DEF PROCCopy_Boot
  240     LOCAL p% : p%=wimp%
  241     PROCAdd_Line("Iconsprites <Obey$Dir>.!Sprites")
  242     PROCAdd_Line("Set "+leaf$+"$Path <Obey$Dir>.")
  243     SYS "OS_File",10,file$+".!Boot",&FEB,,wimp%,p%
  244    ENDPROC
  245    :
  246    DEF PROCCopy_ReadMe
  247     LOCAL p% : p%=wimp% : wimp%!0=0
  248     SYS "OS_Word",14,wimp% : date$=$wimp%
  249     date$=LEFT$(date$,INSTR(date$,".")-1)
  250     PROCAdd_Line("")
  251     PROCAdd_Line(STRING$(11+LENleaf$,"-"))
  252     PROCAdd_Line(" Library: "+leaf$)
  253     PROCAdd_Line("")
  254     PROCAdd_Line(" Purpose: BASIC procedure Library - 'intelligent' directory")
  255     PROCAdd_Line("")
  256     PROCAdd_Line(" Version: 1.0 ("+date$+")")
  257     PROCAdd_Line("")
  258     PROCAdd_Line(STRING$(11+LENleaf$,"-"))
  259     PROCAdd_Line("")    
  260     PROCAdd_Line("")
  261     PROCAdd_Line("   USAGE:")
  262     PROCAdd_Line("")
  263     RESTORE+0
  264     DATA "This application is intended to  be used in exactly the same way"
  265     DATA "as a normal Filer directory. The only difference is that objects"
  266     DATA "stored in the directory are always referred to by the SAME pathname"
  267     DATA "no matter where the directory itself is stored." 
  268     DATA ""
  269     DATA "This is invaluable for programs which have other files as input"
  270     DATA "resources. With absolute pathnames, errors arise when the main"
  271     DATA "program cannot find its resource files - usually because they"
  272     DATA "have been moved. This means editing the main program which can"
  273     DATA "be a nuisance. Use of this type of 'intelligent' directory"
  274     DATA "removes this problem."
  275     DATA ""
  276     DATA "Such directories are especially useful for the storing of BASIC"
  277     DATA "procedure libraries:"
  278     DATA ""
  279     DATA "1. Double-clicking the directory icon in a Filer window causes"
  280     DATA "   it to be opened, just like a normal directory."
  281     DATA ""
  282     DATA "2. Files and directories can be created and saved in the usual"
  283     DATA "   way�."
  284     DATA ""
  285     DATA "3. Any BASIC procedure libraries stored in this directory can"
  286     DATA "   be loaded into your BASIC program by including the BASIC "
  287     DATA "   statement:"
  288     DATA ""
  289     DATA ""
  290     DATA "   For example, to load library 'Fred' contained in directory"
  291     DATA "   'Jim' :"
  292     DATA ""
  293     DATA ""
  294     DATA "   All that is required for your program to properly locate the"
  295     DATA "   library is that the Filer must have 'seen' the directory -"
  296     DATA "   an equivalent technique is to 'Filer_Boot' the application."
  297     DATA ""
  298     DATA "4. The directory can be moved around, even to different filing"
  299     DATA "   systems.Your main program will still work."
  300     DATA ""
  301     DATA "   All that has to be done is, immediately after moving it, "
  302     DATA "   simply double-click the directory  icon to inform the Filer"
  303     DATA "   as to the new location."
  304     DATA ""
  305     DATA "5. Linking"
  306     DATA ""
  307     DATA "   By using the application '!LinkLib' it is possible to make a"
  308     DATA "   free-standing program which will contain just the procedures"
  309     DATA "   which your program uses."
  310     DATA ""
  311     DATA "   Simply run the application !LinkLib and drag your main BASIC"
  312     DATA "   program to the icon on the iconbar. A window opens enabling"
  313     DATA "   you to finish the linking procedure so giving you a new main"
  314     DATA "   program containing no LIBRARY calls but with the appropriate"
  315     DATA "   procedures added."
  316     DATA ""
  317     DATA "   N.B. New 'intelligent' directories can be created from "
  318     DATA "   !LinkLib's iconbar menu."
  319     DATA ""     
  320     FOR i%=1 TO 56
  321     READ x$ : PROCAdd_Line("   "+x$)
  322     IF i%=25 THEN PROCAdd_Line("               LIBRARY """+leaf$+":Library.<Pathname>""")
  323     IF i%=29 THEN PROCAdd_Line("               LIBRARY """+leaf$+":Library.Jim.Fred""")
  324     NEXT
  325     PROCAdd_Line("   "+STRING$(60,"*"))
  326     SYS "OS_File",10,file$+".Library.!ReadMe",&FFF,,wimp%,p%
  327    ENDPROC
  328      :
  329      DEF PROCAdd_Line(x$)
  330       $p%=x$+CHR$10 : p%+=LENx$+1
  331      ENDPROC
  332
  333REM  3.2 Saving Files
  334REM  ===================
  335
  336 DEF PROCLinkLibraries
  337 IF Basic_File$<>"" THEN
  338  IF FNWimpScrap THEN
  339   OSCLI"Set Basic$File "+Basic_File$
  340   OSCLI"Set Save$File "+file$
  341   OSCLI("SetEval Crunch "+STR$crunch%)
  342   *FX200,1
  343   *WimpTask LinkLib:Link
  344   SYS "Wimp_CloseWindow",,wimp%
  345   ENDIF 
  346 ELSE
  347  mess$="No file to be processed. "
  348  mess$+="Drag a BASIC file onto icon bar or this window."
  349  PROCWimp_Alert("LinkLib",mess$)
  350 ENDIF
  351 ENDPROC
  352
  353 DEF FNWimpScrap
  354  LOCAL found%  
  355  SYS "XOS_File",13,"<Wimp$ScrapDir>" TO found%
  356  IF found%=2 THEN
  357   *Set LibLink$Path <Wimp$ScrapDir>.
  358   found%=TRUE
  359   ELSE
  360   PROCWimp_Alert("Libraries","The linker needs a scrap directory to work!")
  361   found%=FALSE
  362   ENDIF
  363   =found%
  364 
  365
  366REM ======================
  367REM 4. Wimp
  368REM ======================
  369
  370REM 4.1 Menus
  371REM =============
  372
  373DEF FNWimp_MenuCreate(menu$)
  374LOCAL menu%,index%,width%,length%,k%,s%
  375DIM menu% 28+FNWimp_MenuNoOfEntries(menu$)*24
  376menu%?12=7   : menu%?13=2  : menu%?14=7 :menu%?15=0
  377menu%!16=140 : menu%!20=44 : menu%!24=0
  378index%=menu%+28
  379$menu%=LEFT$(menu$,INSTR(menu$,"\")-1)
  380width%=LEN(LEFT$(menu$,INSTR(menu$,"\")-1))
  381menu$+="\" : Menu_NoOfEntries%=0
  382WHILE menu$<>""
  383menu$=MID$(menu$,INSTR(menu$,"\")+1)
  384CASE menu$ OF
  385 WHEN ""
  386 OTHERWISE :
  387  !index%=0 : index%!4=-1 : index%!8=&7000021
  388  length%=INSTR(menu$,"\")-1
  389  k%=INSTR(LEFT$(menu$,length%),">")
  390  CASE k% OF
  391   WHEN 0
  392   OTHERWISE
  393    s%=EVAL(MID$(menu$,k%+1,length%-k%))
  394    index%!4=s%
  395    length%=k%-1
  396  ENDCASE
  397  $(index%+12)=LEFT$(menu$,length%)
  398  IF length%>width% THEN width%=length%
  399  index%+=24
  400ENDCASE
  401ENDWHILE
  402menu%!16=16*(width%+1)
  403index%!-24=index%!-24 OR &80 : =menu%
  404:
  405DEF FNWimp_MenuNoOfEntries(menu$)
  406LOCAL n% ,j% : n%=0 : j%=0
  407REPEAT
  408j%=INSTR(menu$,"\",j%+1)
  409IF j%<>0 THEN n%+=1
  410UNTIL j%=0
  411=n%
  412:
  413DEF PROCWimp_MenuPopUpBar(x%,y%)
  414LOCAL n% : n%=0
  415WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
  416n%+=1
  417ENDWHILE
  418SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
  419menu%=Bar_Menu%
  420ENDPROC
  421:
  422DEF PROCWimp_MenuPopUp(Menu%,x%,y%)
  423menu%=Menu%
  424SYS "Wimp_CreateMenu",,menu%,x%-64,y%+20
  425ENDPROC
  426:
  427DEF PROCWimp_MenuClose
  428SYS "Wimp_CreateMenu",-1
  429ENDPROC
  430:
  431DEF PROCWimp_MenuGlue(menu1%,item%,menu2%)
  432menu1%!(8+item%*24)=menu2%
  433ENDPROC
  434
  435REM 4.2 Sprites
  436REM ===========
  437
  438DEF FNWimp_SpriteLoad(pathname$)
  439LOCAL S%,T%,sprites%
  440S%=OPENIN(pathname$):T%=EXT#S%+4:CLOSE#S%
  441DIM sprites% T%,spname% 12
  442!sprites%=T%:sprites%!8=0
  443SYS"OS_SpriteOp",&109,sprites%
  444SYS"OS_SpriteOp",&10A,sprites%,pathname$
  445=sprites%
  446
  447REM 4.3 Windows
  448REM ===========
  449
  450DEF FNWimp_WindowLoad(window$)
  451=FNWimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
  452:
  453DEF FNWimp_WindowLoadFrom(window$,template$)
  454LOCAL c%
  455SYS "Wimp_OpenTemplate",,template$
  456SYS "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,,window$,0 TO ,,icons%
  457SYS "Wimp_CreateWindow",,wimp% TO c%
  458SYS "Wimp_CloseTemplate"
  459=c%
  460:
  461DEF PROCWimp_WindowBringToTop(window%)
  462!wimp%=window%
  463SYS "Wimp_GetWindowState",,wimp%
  464wimp%!28=-1
  465SYS "Wimp_OpenWindow",,wimp%
  466ENDPROC
  467
  468REM 4.4 Icons
  469REM =========
  470
  471DEF FNWimp_IconBar(Sprite$)
  472LOCAL icon%
  473wimp%!0=-1
  474wimp%!4=0     : wimp%!8=0
  475wimp%!12=68+16   : wimp%!16=68+32
  476wimp%!20=&3002
  477$(wimp%+24)=Sprite$
  478SYS "Wimp_CreateIcon",,wimp% TO icon%
  479=icon%
  480:
  481DEF PROCWimp_IconPutText(window%,icon%,text$)
  482wimp%!0=window% : wimp%!4=icon%
  483SYS "Wimp_GetIconState",,wimp%
  484IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
  485$(wimp%!28)=text$
  486wimp%!0=window% : wimp%!4=icon%
  487wimp%!8=0 : wimp%!12=0
  488SYS "Wimp_SetIconState",,wimp%
  489ENDPROC
  490:
  491DEF FNWimp_IconText(window%,icon%)
  492wimp%!0=window% : wimp%!4=icon%
  493SYS "Wimp_GetIconState",,wimp%
  494IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
  495=$(wimp%!28)
  496:
  497DEF PROCWimp_IconSelect(window%,icon%)
  498wimp%!0=window% : wimp%!4=icon%
  499SYS "Wimp_GetIconState",,wimp%
  500wimp%!8=1<<21 : wimp%!12=1<<21
  501SYS "Wimp_SetIconState",,wimp%
  502ENDPROC
  503:
  504DEF PROCWimp_IconCaret(window%,icon%,chars%)
  505SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
  506ENDPROC
  507
  508REM 4.5 Miscellaneous
  509REM =================
  510
  511DEF PROCWimp_Alert(title$,message$)
  512wimp%!0=0
  513$(wimp%+4)=message$+CHR$0
  514SYS "Wimp_ReportError",wimp%,1<<4,title$
  515ENDPROC
  516
  517DEF FNWimp_GetFileFromPathname(f$)
  518CASE INSTR(f$,".") OF
  519 WHEN 0    :=f$
  520 OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,".")))
  521ENDCASE
  522
  523DEF FNWimp_GetStringAtAddress(array%)
  524LOCALs$:s$=""
  525WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE:
  526=s$
  527
  528DEF FNFile_Exists(pathname$)
  529LOCAL found%
  530SYS "XOS_File",13,pathname$ TO found%
  531=-found%
  532
  533:
  534REM ------------------------------------------------------------------------
  535REM  5. SAVE
  536REM ------------------------------------------------------------------------
  537REM > Library:Resources.Save
  538:
  539DEF FNWimp_PollSave(mask%)
  540LOCAL drag_a_sprite%
  541 SYS "Wimp_Poll",mask%,wimp% TO event%
  542 CASE event% OF
  543  WHEN 6
  544  REM...Click on Mouse button
  545   icon%=wimp%!16 : window%=wimp%!12 : button%=wimp%!8
  546   IF FNDefine_Save(window%) THEN
  547      CASE icon% OF
  548       WHEN 0 : REM...Drag       : event%=-1
  549        IF button% AND &50 THEN PROCWimp_PollSaveDrag(window%,icon%)
  550       WHEN 2 : REM...OK button  : event%=-1
  551        IF button% AND   5 THEN PROCWimp_PollSaveFile(window%)
  552      ENDCASE
  553   ENDIF
  554  WHEN7
  555   REM...Drag has ended
  556   SYS "OS_Byte",161,28 TO ,,drag_a_sprite%
  557   drag_a_sprite%=(drag_a_sprite% AND 2)=2
  558   IF drag_a_sprite% THEN SYS "DragASprite_Stop"
  559   IF FNDefine_Save(save%) THEN
  560      event%=-1
  561      PROCWimpPoll_SaveMessage
  562   ENDIF
  563  WHEN8
  564   window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
  565   IF FNDefine_Save(window%) THEN
  566      event%=-1
  567      PROCWimp_PollSaveFile(window%)
  568   ENDIF
  569  WHEN 12
  570  window%=wimp%!0
  571  IF FNDefine_Save(window%) THEN
  572   file$=FNWimp_IconText(window%,1)
  573   SYS "Wimp_SetCaretPosition",window%,1,,,-1,LENfile$
  574  ENDIF
  575  WHEN17,18
  576  message%=wimp%!16
  577    CASE message% OF
  578     WHEN 2 : REM Data Save acknowledge
  579       event%=-1
  580       file$=FNWimp_GetStringAtAddress(wimp%+44)
  581       IF file$<>"<Wimp$Scrap>" THEN
  582         PROCWimp_IconPutText(save%,1,file$)
  583         PROCEvent_SaveFile(file$,save%)
  584       ENDIF
  585     WHEN 4 : REM Data Load Acknowledge
  586     WHEN 6 : REM Ram Fetch
  587    ENDCASE
  588 ENDCASE
  589=event%
  590:
  591DEF PROCWimp_PollSaveFile(window%)
  592LOCALx$
  593 REM...Read text in icon 1
  594 wimp%!0=window% : wimp%!4=1
  595 SYS "Wimp_GetIconState",,wimp%
  596 IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
  597 x$=$(wimp%!28)
  598 CASE INSTR(x$,".") OF
  599  WHEN 0   :
  600   PROCWimp_Alert("!Library","To save file, drag the icon to a directory window")
  601  OTHERWISE: PROCEvent_SaveFile(x$,window%)
  602 ENDCASE
  603 SYS"Wimp_CreateMenu",-1
  604ENDPROC
  605:
  606DEF PROCWimp_PollSaveDrag(window%,icon%)
  607LOCAL x%,y%,wx%,wy%,wX%,wY%,xoff%,yoff%,drag_a_sprite%
  608LOCAL icx%,icy%,icX%,icY%,sprite_pointer%
  609
  610  !wimp%=window% : SYS"Wimp_GetWindowState",,wimp%
  611  wx%=wimp%!4 : wy%=wimp%!8 : wX%=wimp%!12 : wY%=wimp%!16
  612  xoff%=wimp%!20 : yoff%=wimp%!24
  613  x%=wx%-xoff% : y%=wY%-yoff%
  614
  615  wimp%!4=icon%  : SYS"Wimp_GetIconState",,wimp%
  616  icx%=wimp%!8 : icy%=wimp%!12
  617  icX%=wimp%!16: icY%=wimp%!20
  618
  619SYS "OS_Byte",161,28 TO ,,drag_a_sprite%
  620drag_a_sprite%=(drag_a_sprite% AND 2)=2
  621
  622CASE drag_a_sprite% OF
  623 WHEN TRUE :
  624  IF ((wimp%!24) AND &100)=0 THEN
  625     sprite_pointer%=1
  626     sprite$=$(wimp%+28)
  627  ELSE
  628     sprite_pointer%=wimp%!32
  629     sprite$=$(wimp%!28)
  630  ENDIF
  631  !wimp% =wx%+icx% : wimp%!4=wY%+icy%
  632  wimp%!8=wx%+icX% : wimp%!12=wY%+icY%
  633  SYS"DragASprite_Start",%11000101,sprite_pointer%,sprite$,wimp%
  634 OTHERWISE
  635  !wimp%=window% : wimp%!4=5
  636  wimp%!8=x%+icx%:wimp%!12=y%+icy%
  637  wimp%!16=x%+icX%:wimp%!20=y%+icY%
  638  wimp%!24=0:wimp%!28=0
  639  wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
  640  SYS"Wimp_DragBox",,wimp%
  641ENDCASE
  642 save%=window%
  643ENDPROC
  644:
  645DEF PROCWimpPoll_SaveMessage
  646LOCALfile$,window%,icon%,x%,y%
  647 SYS "Wimp_CreateMenu",,-1
  648 SYS"Wimp_GetPointerInfo",,wimp%
  649 window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
  650 IF window%<0 THEN ENDPROC
  651 wimp%!0=save% : wimp%!4=1
  652 SYS "Wimp_GetIconState",,wimp%
  653 IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
  654 file$=$(wimp%!28)
  655 file$=FNWimp_GetFileFromPathname(file$)
  656 wimp%!20=window%
  657 wimp%!24=icon%
  658 wimp%!28=x%:wimp%!32=y%
  659 wimp%!36=256
  660 wimp%!0=64
  661 wimp%!12=0
  662 wimp%!16=1
  663 CASE TRUE OF
  664  WHEN FNDefine_Save(save%) : wimp%!40=&FFF
  665  OTHERWISE : wimp%!40=FNDefine_Save(save%)
  666 ENDCASE
  667 $(wimp%+44)=file$+CHR$0
  668 SYS"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
  669ENDPROC
  670:
  671REM -----------------------------------------------------------------------
  672REM 6. Error procedure
  673REM -----------------------------------------------------------------------
  674
  675DEF PROCError
  676ON ERROR OFF
  677*Set Basic$File <LinkLib$File>
  678CHAIN "Edit:Throwback"
  679END
  680ENDPROC
  681:
  682REM Convert
  683
  684DEF PROCSaveAndConvert
  685DIM variable% 512
  686LOCAL ERROR
  687PROCCheckWimpScrap
  688PROCCheckPrelude
  689PROCCheckProgramFile
  690PROCStartBuildingProgram
  691PROCAddPrelude
  692PROCAddProgram
  693PROCRunProgram
  694RESTORE ERROR
  695ENDPROC
  696
  697DEF PROCCheckWimpScrap
  698SYS "XOS_File",13,"<Wimp$ScrapDir>"  TO found%
  699IF found%<>2 THEN PROCConvertError(2)
  700ENDPROC
  701
  702DEF PROCCheckPrelude
  703SYS "XOS_File",13,"<DrawBasic$Options>"  TO found%,,,,prelude%
  704IF found%<>1 THEN PROCConvertError(3)
  705ENDPROC
  706
  707DEF PROCCheckProgramFile
  708SYS "XOS_File",13,DBasic_File$  TO found%,,,,program%
  709IF found%<>1 THEN PROCConvertError(4)
  710ENDPROC
  711
  712DEF PROCStartBuildingProgram
  713 DIM file% 256+prelude%+program%
  714 ptr%=file%
  715 PROCAdd("ON ERROR ON ERROR OFF : CHAIN "+"""Throwback:Error""")
  716 PROCAdd("LIBRARY "+"""DrawBasic:Utils""")
  717 PROCAdd("HIMEM =FNFreeSlot")
  718 PROCAdd("PROCBeginDrawing")
  719ENDPROC
  720
  721DEF PROCAddPrelude
  722 SYS "OS_File",12,"<DrawBasic$Options>",ptr%
  723 PROCTokenise(prelude%)
  724ENDPROC
  725
  726DEF PROCAddProgram 
  727 SYS "OS_File",12,DBasic_File$,ptr% 
  728 PROCTokenise(program%)
  729ENDPROC
  730
  731DEF PROCRunProgram
  732ptr%?0=13 : ptr%+=1
  733OSCLI("Save <Wimp$Scrap> "+STR$~file%+" "+STR$~ptr%)
  734*SetType <Wimp$Scrap> Basic
  735OSCLI("Set Basic$File "+file$)
  736*WimpTask LinkLib:Convert
  737wimp%!0=Convert_Window%
  738SYS "Wimp_CloseWindow",,wimp%
  739ENDPROC
  740
  741REM -------------------------------------------------------------------------
  742
  743
  744DEF PROCAdd(x$)
  745$ptr%=x$+CHR$13 : ptr%+=LENx$+1
  746ENDPROC
  747
  748DEF PROCTokenise(length%)
  749 line%=0
  750 end%=ptr%+length%
  751 WHILE ptr%<end%
  752  CASE ptr%?0 OF
  753   WHEN 10,13: line%+=1 : ptr%?0=13
  754   WHEN 160  : ptr%?0=&F2
  755   WHEN 187  : ptr%?0=&A4
  756  ENDCASE
  757  ptr%+=1
  758 ENDWHILE
  759ENDPROC
  760
  761DEF PROCConvertError(error%)
  762ON ERROR OFF 
  763CASE error% OF
  764                                  
  765 WHEN 0
  766   PRINT "Error in Convert "+REPORT$;"at line";ERL
  767 WHEN 2
  768   ERROR 0, "!Libraries requires a scrap directory to work"
  769 WHEN 3
  770   ERROR 0,"No DrawLib 'setup' file defined"
  771 WHEN 4
  772   ERROR 0,"Program file not found!"
  773ENDCASE
  774END
� � �Error
%�Wimp_Initialise("Library Maker")
�Define_Windows
�Define_Menus
�
! event%=�Wimp_PollSave(mask%)
 Ȏ event% �
+  � 2     : ș "Wimp_OpenWindow",,wimp%
	,  � 3     : ș "Wimp_CloseWindow",,wimp%

!  � 6     : �Event_MouseClick
!  � 9     : �Event_MenuChoice
  � 17,18 : �Event_Message

 �
� finished%
�

� �Wimp_Initialise(task$)
� wimp% 3000, icons% 1525
icon_memory%=icons%+1525
,ș "Wimp_Initialise",200,&4B534154,task$
mask%=0
finished%=�
sprite_name$=""
Basic_File$=""
Options%=0
�

� �Define_Windows
/LibSave_Window%=�Wimp_WindowLoad("LibSave")
)Info_Window%=�Wimp_WindowLoad("Info")
1LinkSave_Window%=�Wimp_WindowLoad("LinkSave")
 /Convert_Window%=�Wimp_WindowLoad("Convert")
!ș "Wimp_CloseTemplate"
"�Read_Defaults
#�
$  :
%  � �Read_Defaults
&  �  defaults% 4
'*  � �File_Exists("LinkLib:Defaults") �
(3   ș "OS_File",16,"LinkLib:Defaults",defaults%
)   crunch%=defaults%!0
*  �
+   crunch%=%11111
,  �
-  �Set_LinkSaveIcons
.  �
/
     :
0     � �Set_LinkSaveIcons
1      � icon%=4 � 8
2&        � crunch%�(1<<(icon%-4)) �
35         �Wimp_IconSelect(LinkSave_Window%,icon%)
4
        �
5       �
6
     �
7
8� �Define_Menus
9)Bar_Icon%=�Wimp_IconBar("!Libraries")
:ABar_Menu%=�Wimp_MenuCreate("Libraries\Info\New Library\Quit")
;,�Wimp_MenuGlue(Bar_Menu%,1,Info_Window%)
</�Wimp_MenuGlue(Bar_Menu%,2,LibSave_Window%)
==LinkSave_Menu%=�Wimp_MenuCreate("Libraries\SaveDefaults")
>�
?
@
A� �Event_MouseClick
BȎ wimp%!12 �
C	 � -2
D  Ȏ wimp%!8 �
E3   � 2    : �Wimp_MenuPopUpBar(wimp%!0,wimp%!4)
F  �
G � LinkSave_Window%
H  Ȏ wimp%!8 �
I?   � 2    : �Wimp_MenuPopUp(LinkSave_Menu%,wimp%!0,wimp%!4)
J%    : �Get_LinkOptions(wimp%!16)
K  �
L�
M�
N   :
O    � �Get_LinkOptions(icon%)
P    Ȏ icon% �
Q     � 4,5,6,7,8
R0      ic%=icon%-4 : crunch%=crunch%�(1<<ic%)
S	    �
T   �
U
V� �Event_MenuChoice
W Ȏ menu% �
X  � Bar_Menu%
Y   Ȏ wimp%!0 �
Z+    � 2 : �Wimp_MenuClose : finished%=�
[   �
\  � LinkSave_Menu%
]   Ȏ wimp%!0 �
^    � 0 : �Save_Defaults
_   �
` �
a�
b  :
c  � �Save_Defaults
d  defaults%!0=crunch%
eD  ș "OS_File",10,"LinkLib:Defaults",&FFD,,defaults%,defaults%+4
f  �
g
h� �Event_Message
imessage%=wimp%!16
j Ȏ message%  �
k  � 0 : finished%=�
l)  � 3 : �DealWithLoadedFile(wimp%!40)
m �
n�
o  :
p"  � �DealWithLoadedFile(type%)
q
  � g$
r   Ȏ type% �
s    � &FFB :
t7     Basic_File$=�Wimp_GetStringAtAddress(wimp%+44)
u:     �Wimp_IconPutText(LinkSave_Window%,14,"file_ffb")
v     �DealWithBasicFile
w    � &B9B :
x8     DBasic_File$=�Wimp_GetStringAtAddress(wimp%+44)
y0     �Wimp_WindowBringToTop(Convert_Window%)
z    � &2000: 
{7     Basic_File$=�Wimp_GetStringAtAddress(wimp%+44)
|5     leaf$=�Wimp_GetFileFromPathname(Basic_File$)
}-     Ȏ �TypeOfApplication(Basic_File$) �
~      � "Unrecognised"
      � "Library"
�*       �Wimp_Alert("","Is a library!")
�      
�7       �Wimp_IconPutText(LinkSave_Window%,14,leaf$)
�       Basic_File$+=g$
�       �DealWithBasicFile
�
     �
�   �
�  �
�  
�)    � �TypeOfApplication(Basic_File$)
�A     � �Found(Basic_File$+".!RunImage") � g$=".!RunImage":=g$
�-     � �Library(Basic_File$) � ="Library"
�A     � �Found(Basic_File$+".!Runimage") � g$=".!Runimage":=g$
�A     � �Found(Basic_File$+".!runimage") � g$=".!runimage":=g$
�A     � �Found(Basic_File$+".!RUNIMAGE") � g$=".!RUNIMAGE":=g$
�     ="Unrecognised"
�	     
�    � �Found(ff$)
�     � found%
�     found%=� : $wimp%=ff$
�&     ș "OS_File",5,wimp% � found%
�    =found%
�
�    � �Library(ff$)
�     � found%
�     $wimp%=ff$+".Library"
�&     ș "OS_File",5,wimp% � found%
�     � found%=2 �=� �=�
�  
�    � �DealWithBasicFile
�;     �Wimp_IconPutText(LinkSave_Window%,11,Basic_File$)
�1     �Wimp_WindowBringToTop(LinkSave_Window%)
�.     u$=�Wimp_IconText(LinkSave_Window%,1)
�0     �Wimp_IconCaret(LinkSave_Window%,1,�u$)
�	    �
�
�� �Define_Save(window%)
�
� result%
�Ȏ window% �
�D � LibSave_Window%,LinkSave_Window%,Convert_Window%  : result%=�
�              : result%=�
��
�=result%
�
�$� �Event_SaveFile(file$,window%)
�Ȏ window% �
�* � LibSave_Window% : �CreateNewLibrary
�' � LinkSave_Window%: �LinkLibraries
� � Convert_Window%
�  
�  �SaveAndConvert
��
��
�
�
�!�  3.1 Creating a new library
�!�  ==========================
�
�  � �CreateNewLibrary
�   �GetLibraryName
�   �"CDIR "+file$
�    �"CDIR "+file$+".Library"
�(   � sprite_name$="" � �Load_Sprites
�   �Copy_SpriteFiles
�   �Copy_Run
�   �Copy_Boot
�   �Copy_ReadMe
�  �
�	    :
�    � �GetLibraryName
�/     leaf$=�Wimp_GetFileFromPathname(file$)
�$     file$=�file$,�file$-�leaf$)
�     � �leaf$,1)<>"!" �
�      file$+="!"+�leaf$,9)
�4      �Wimp_IconPutText(LibSave_Window%,1,file$)
�
     �
�      file$+=�leaf$,10)
�4      �Wimp_IconPutText(LibSave_Window%,1,file$)
�
     �
�	    �
�	    :
�    � �Load_Sprites
�:     sprite_name$="!library" : sm_sprite$="sm!library"
�5     Sprites%=�Wimp_SpriteLoad("LinkLib:LSprite")
�9     Sprites22%=�Wimp_SpriteLoad("LinkLib:LSprite22")
�9     Sprites23%=�Wimp_SpriteLoad("LinkLib:LSprite23")
�	    �
�	    :
�    � �Copy_SpriteFiles
�/     leaf$=�Wimp_GetFileFromPathname(file$)
�?     ș "OS_SpriteOp",256+26,Sprites%,sprite_name$,leaf$+�0
�B     ș "OS_SpriteOp",256+26,Sprites%,sm_sprite$,"sm"+leaf$+�0
�;     ș "OS_SpriteOp",256+12,Sprites%,file$+".!Sprites"
�A     ș "OS_SpriteOp",256+26,Sprites22%,sprite_name$,leaf$+�0
�D     ș "OS_SpriteOp",256+26,Sprites22%,sm_sprite$,"sm"+leaf$+�0
�?     ș "OS_SpriteOp",256+12,Sprites22%,file$+".!Sprites22"
�A     ș "OS_SpriteOp",256+26,Sprites23%,sprite_name$,leaf$+�0
�D     ș "OS_SpriteOp",256+26,Sprites23%,sm_sprite$,"sm"+leaf$+�0
�?     ș "OS_SpriteOp",256+12,Sprites23%,file$+".!Sprites23"
�4     sprite_name$=leaf$  : sm_sprite$="sm"+leaf$
�	    �
�	    :
�    � �Copy_Run
�     � p% : p%=wimp%
�1     � �leaf$,1)="!" � leaf$=�leaf$,�leaf$-1)
�5     �Add_Line("Iconsprites <Obey$Dir>.!Sprites")
�4     �Add_Line("Set "+leaf$+"$Path <Obey$Dir>.")
�5     �Add_Line("Filer_OpenDir "+leaf$+":Library")
�5     ș "OS_File",10,file$+".!Run",&FEB,,wimp%,p%
�	    �
�	    :
�    � �Copy_Boot
�     � p% : p%=wimp%
�5     �Add_Line("Iconsprites <Obey$Dir>.!Sprites")
�4     �Add_Line("Set "+leaf$+"$Path <Obey$Dir>.")
�6     ș "OS_File",10,file$+".!Boot",&FEB,,wimp%,p%
�	    �
�	    :
�    � �Copy_ReadMe
�$     � p% : p%=wimp% : wimp%!0=0
�-     ș "OS_Word",14,wimp% : date$=$wimp%
�$     date$=�date$,�date$,".")-1)
�     �Add_Line("")
�#     �Add_Line(�11+�leaf$,"-"))
�&     �Add_Line(" Library: "+leaf$)
�     �Add_Line("")
�Q     �Add_Line(" Purpose: BASIC procedure Library - 'intelligent' directory")
�     �Add_Line("")
/     �Add_Line(" Version: 1.0 ("+date$+")")
     �Add_Line("")
#     �Add_Line(�11+�leaf$,"-"))
     �Add_Line("")    
     �Add_Line("")
     �Add_Line("   USAGE:")
     �Add_Line("")
     �+0
M     � "This application is intended to  be used in exactly the same way"
	M     � "as a normal Filer directory. The only difference is that objects"

P     � "stored in the directory are always referred to by the SAME pathname"
=     � "no matter where the directory itself is stored." 

     � ""

L     � "This is invaluable for programs which have other files as input"
K     � "resources. With absolute pathnames, errors arise when the main"
J     � "program cannot find its resource files - usually because they"
K     � "have been moved. This means editing the main program which can"
G     � "be a nuisance. Use of this type of 'intelligent' directory"
"     � "removes this problem."

     � ""
L     � "Such directories are especially useful for the storing of BASIC"
!     � "procedure libraries:"

     � ""
K     � "1. Double-clicking the directory icon in a Filer window causes"
>     � "   it to be opened, just like a normal directory."

     � ""
K     � "2. Files and directories can be created and saved in the usual"
     � "   way�."

     � ""
J     � "3. Any BASIC procedure libraries stored in this directory can"
I     � "   be loaded into your BASIC program by including the BASIC "
     � "   statement:"
 
     � ""
!
     � ""
"J     � "   For example, to load library 'Fred' contained in directory"
#     � "   'Jim' :"
$
     � ""
%
     � ""
&L     � "   All that is required for your program to properly locate the"
'J     � "   library is that the Filer must have 'seen' the directory -"
(K     � "   an equivalent technique is to 'Filer_Boot' the application."
)
     � ""
*K     � "4. The directory can be moved around, even to different filing"
+:     � "   systems.Your main program will still work."
,
     � ""
-I     � "   All that has to be done is, immediately after moving it, "
.K     � "   simply double-click the directory  icon to inform the Filer"
/'     � "   as to the new location."
0
     � ""
1     � "5. Linking"
2
     � ""
3L     � "   By using the application '!LinkLib' it is possible to make a"
4L     � "   free-standing program which will contain just the procedures"
5(     � "   which your program uses."
6
     � ""
7L     � "   Simply run the application !LinkLib and drag your main BASIC"
8K     � "   program to the icon on the iconbar. A window opens enabling"
9L     � "   you to finish the linking procedure so giving you a new main"
:L     � "   program containing no LIBRARY calls but with the appropriate"
;!     � "   procedures added."
<
     � ""
=G     � "   N.B. New 'intelligent' directories can be created from "
>(     � "   !LinkLib's iconbar menu."
?     � ""     
@     � i%=1 � 56
A#     � x$ : �Add_Line("   "+x$)
BW     � i%=25 � �Add_Line("               LIBRARY """+leaf$+":Library.<Pathname>""")
CU     � i%=29 � �Add_Line("               LIBRARY """+leaf$+":Library.Jim.Fred""")
D
     �
E"     �Add_Line("   "+�60,"*"))
F@     ș "OS_File",10,file$+".Library.!ReadMe",&FFF,,wimp%,p%
G	    �
H      :
I      � �Add_Line(x$)
J!       $p%=x$+�10 : p%+=�x$+1
K      �
L
M�  3.2 Saving Files
N�  ===================
O
P � �LinkLibraries
Q � Basic_File$<>"" �
R  � �WimpScrap �
S%   �"Set Basic$File "+Basic_File$
T   �"Set Save$File "+file$
U$   �("SetEval Crunch "+�crunch%)
V   *FX200,1
W   *WimpTask LinkLib:Link
X#   ș "Wimp_CloseWindow",,wimp%
Y	   � 
Z �
['  mess$="No file to be processed. "
\>  mess$+="Drag a BASIC file onto icon bar or this window."
]"  �Wimp_Alert("LinkLib",mess$)
^ �
_ �
`
a � �WimpScrap
b  � found%  
c1  ș "XOS_File",13,"<Wimp$ScrapDir>" � found%
d  � found%=2 �
e)   *Set LibLink$Path <Wimp$ScrapDir>.
f   found%=�
g   �
hM   �Wimp_Alert("Libraries","The linker needs a scrap directory to work!")
i   found%=�
j   �
k   =found%
l 
m
n� ======================
o
� 4. Wimp
p� ======================
q
r� 4.1 Menus
s� =============
t
u� �Wimp_MenuCreate(menu$)
v'� menu%,index%,width%,length%,k%,s%
w.� menu% 28+�Wimp_MenuNoOfEntries(menu$)*24
x7menu%?12=7   : menu%?13=2  : menu%?14=7 :menu%?15=0
y+menu%!16=140 : menu%!20=44 : menu%!24=0
zindex%=menu%+28
{ $menu%=�menu$,�menu$,"\")-1)
|#width%=�(�menu$,�menu$,"\")-1))
}$menu$+="\" : Menu_NoOfEntries%=0
~ȕ menu$<>""
menu$=�menu$,�menu$,"\")+1)
�Ȏ menu$ �
�	 � ""
�  :
�1  !index%=0 : index%!4=-1 : index%!8=&7000021
�  length%=�menu$,"\")-1
�  k%=��menu$,length%),">")
�
  Ȏ k% �
�
   � 0
�   
�%    s%=�(�menu$,k%+1,length%-k%))
�    index%!4=s%
�    length%=k%-1
�  �
�"  $(index%+12)=�menu$,length%)
�'  � length%>width% � width%=length%
�  index%+=24
��
��
�menu%!16=16*(width%+1)
�(index%!-24=index%!-24 � &80 : =menu%
�:
�"� �Wimp_MenuNoOfEntries(menu$)
�� n% ,j% : n%=0 : j%=0
��
�j%=�menu$,"\",j%+1)
�� j%<>0 � n%+=1
�
� j%=0
�=n%
�:
�� �Wimp_MenuPopUpBar(x%,y%)
�� n% : n%=0
�+ȕ ((Bar_Menu%!(28+n%*24))�%10000000)=0
�	n%+=1
��
�2ș "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
�menu%=Bar_Menu%
��
�:
�"� �Wimp_MenuPopUp(Menu%,x%,y%)
�menu%=Menu%
�+ș "Wimp_CreateMenu",,menu%,x%-64,y%+20
��
�:
�� �Wimp_MenuClose
�ș "Wimp_CreateMenu",-1
��
�:
�)� �Wimp_MenuGlue(menu1%,item%,menu2%)
�menu1%!(8+item%*24)=menu2%
��
�
�� 4.2 Sprites
�� ===========
�
�!� �Wimp_SpriteLoad(pathname$)
�� S%,T%,sprites%
�"S%=�(pathname$):T%=�#S%+4:�#S%
�� sprites% T%,spname% 12
�!sprites%=T%:sprites%!8=0
�!ș"OS_SpriteOp",&109,sprites%
�+ș"OS_SpriteOp",&10A,sprites%,pathname$
�
=sprites%
�
�� 4.3 Windows
�� ===========
�
�� �Wimp_WindowLoad(window$)
�9=�Wimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
�:
�-� �Wimp_WindowLoadFrom(window$,template$)
�� c%
�%ș "Wimp_OpenTemplate",,template$
�Kș "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,,window$,0 � ,,icons%
�&ș "Wimp_CreateWindow",,wimp% � c%
�ș "Wimp_CloseTemplate"
�=c%
�:
�%� �Wimp_WindowBringToTop(window%)
�!wimp%=window%
�#ș "Wimp_GetWindowState",,wimp%
�wimp%!28=-1
�ș "Wimp_OpenWindow",,wimp%
��
�
�� 4.4 Icons
�� =========
�
�� �Wimp_IconBar(Sprite$)
�� icon%
�wimp%!0=-1
�wimp%!4=0     : wimp%!8=0
�%wimp%!12=68+16   : wimp%!16=68+32
�wimp%!20=&3002
�$(wimp%+24)=Sprite$
�'ș "Wimp_CreateIcon",,wimp% � icon%
�
=icon%
�:
�,� �Wimp_IconPutText(window%,icon%,text$)
�#wimp%!0=window% : wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
�$(wimp%!28)=text$
�#wimp%!0=window% : wimp%!4=icon%
�wimp%!8=0 : wimp%!12=0
�!ș "Wimp_SetIconState",,wimp%
��
�:
�#� �Wimp_IconText(window%,icon%)
�#wimp%!0=window% : wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
�=$(wimp%!28)
�:
�%� �Wimp_IconSelect(window%,icon%)
�#wimp%!0=window% : wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�"wimp%!8=1<<21 : wimp%!12=1<<21
�!ș "Wimp_SetIconState",,wimp%
��
�:
�+� �Wimp_IconCaret(window%,icon%,chars%)
�8ș "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
��
�
�� 4.5 Miscellaneous
�� =================
�
�"� �Wimp_Alert(title$,message$)

wimp%!0=0
$(wimp%+4)=message$+�0
+ș "Wimp_ReportError",wimp%,1<<4,title$
�

#� �Wimp_GetFileFromPathname(f$)
Ȏ �f$,".") �
 � 0    :=f$
7  :=�Wimp_GetFileFromPathname(�f$,�(f$)-�f$,".")))
	�


&� �Wimp_GetStringAtAddress(array%)

�s$:s$=""

<ȕ(?array%<>13)�(?array%<>0):s$+=�(?array%):array%+=1:�:
=s$

� �File_Exists(pathname$)
� found%
'ș "XOS_File",13,pathname$ � found%
=-found%

:
N� ------------------------------------------------------------------------
�  5. SAVE
N� ------------------------------------------------------------------------
� > Library:Resources.Save
:
� �Wimp_PollSave(mask%)
� drag_a_sprite%
( ș "Wimp_Poll",mask%,wimp% � event%
 Ȏ event% �
	  � 6
   �...Click on Mouse button
!:   icon%=wimp%!16 : window%=wimp%!12 : button%=wimp%!8
"    � �Define_Save(window%) �
#      Ȏ icon% �
$+       � 0 : �...Drag       : event%=-1
%?        � button% � &50 � �Wimp_PollSaveDrag(window%,icon%)
&+       � 2 : �...OK button  : event%=-1
'9        � button% �   5 � �Wimp_PollSaveFile(window%)
(      �
)   �
*  �7
+   �...Drag has ended
,-   ș "OS_Byte",161,28 � ,,drag_a_sprite%
-,   drag_a_sprite%=(drag_a_sprite% � 2)=2
./   � drag_a_sprite% � ș "DragASprite_Stop"
/   � �Define_Save(save%) �
0      event%=-1
1      �WimpPoll_SaveMessage
2   �
3  �8
42   window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
5    � �Define_Save(window%) �
6      event%=-1
7%      �Wimp_PollSaveFile(window%)
8   �
9
  � 12
:  window%=wimp%!0
;  � �Define_Save(window%) �
<&   file$=�Wimp_IconText(window%,1)
=7   ș "Wimp_SetCaretPosition",window%,1,,,-1,�file$
>  �
?  �17,18
@  message%=wimp%!16
A    Ȏ message% �
B&     � 2 : � Data Save acknowledge
C       event%=-1
D3       file$=�Wimp_GetStringAtAddress(wimp%+44)
E$       � file$<>"<Wimp$Scrap>" �
F-         �Wimp_IconPutText(save%,1,file$)
G)         �Event_SaveFile(file$,save%)
H       �
I&     � 4 : � Data Load Acknowledge
J     � 6 : � Ram Fetch
K	    �
L �
M=event%
N:
O!� �Wimp_PollSaveFile(window%)
P�x$
Q �...Read text in icon 1
R  wimp%!0=window% : wimp%!4=1
S" ș "Wimp_GetIconState",,wimp%
T8 � ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
U x$=$(wimp%!28)
V Ȏ �x$,".") �
W
  � 0   :
XR   �Wimp_Alert("!Library","To save file, drag the icon to a directory window")
Y$  : �Event_SaveFile(x$,window%)
Z �
[ ș"Wimp_CreateMenu",-1
\�
]:
^'� �Wimp_PollSaveDrag(window%,icon%)
_6� x%,y%,wx%,wy%,wX%,wY%,xoff%,yoff%,drag_a_sprite%
`)� icx%,icy%,icX%,icY%,sprite_pointer%
a
b5  !wimp%=window% : ș"Wimp_GetWindowState",,wimp%
c=  wx%=wimp%!4 : wy%=wimp%!8 : wX%=wimp%!12 : wY%=wimp%!16
d%  xoff%=wimp%!20 : yoff%=wimp%!24
e!  x%=wx%-xoff% : y%=wY%-yoff%
f
g3  wimp%!4=icon%  : ș"Wimp_GetIconState",,wimp%
h"  icx%=wimp%!8 : icy%=wimp%!12
i"  icX%=wimp%!16: icY%=wimp%!20
j
k*ș "OS_Byte",161,28 � ,,drag_a_sprite%
l)drag_a_sprite%=(drag_a_sprite% � 2)=2
m
nȎ drag_a_sprite% �
o
 � � :
p  � ((wimp%!24) � &100)=0 �
q     sprite_pointer%=1
r     sprite$=$(wimp%+28)
s  �
t!     sprite_pointer%=wimp%!32
u     sprite$=$(wimp%!28)
v  �
w)  !wimp% =wx%+icx% : wimp%!4=wY%+icy%
x*  wimp%!8=wx%+icX% : wimp%!12=wY%+icY%
yC  ș"DragASprite_Start",%11000101,sprite_pointer%,sprite$,wimp%
z 
{   !wimp%=window% : wimp%!4=5
|&  wimp%!8=x%+icx%:wimp%!12=y%+icy%
}'  wimp%!16=x%+icX%:wimp%!20=y%+icY%
~  wimp%!24=0:wimp%!28=0
+  wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
�  ș"Wimp_DragBox",,wimp%
��
� save%=window%
��
�:
�� �WimpPoll_SaveMessage
��file$,window%,icon%,x%,y%
� ș "Wimp_CreateMenu",,-1
�# ș"Wimp_GetPointerInfo",,wimp%
�: window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
� � window%<0 � �
� wimp%!0=save% : wimp%!4=1
�" ș "Wimp_GetIconState",,wimp%
�8 � ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
� file$=$(wimp%!28)
�+ file$=�Wimp_GetFileFromPathname(file$)
� wimp%!20=window%
� wimp%!24=icon%
� wimp%!28=x%:wimp%!32=y%
� wimp%!36=256
� wimp%!0=64
� wimp%!12=0
� wimp%!16=1
� Ȏ � �
�+  � �Define_Save(save%) : wimp%!40=&FFF
�&   : wimp%!40=�Define_Save(save%)
� �
� $(wimp%+44)=file$+�0
�4 ș"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
��
�:
�M� -----------------------------------------------------------------------
�� 6. Error procedure
�M� -----------------------------------------------------------------------
�
�� �Error
�	� � �
�"*Set Basic$File <LinkLib$File>
�� "Edit:Throwback"
��
��
�:
�
� Convert
�
�� �SaveAndConvert
�� variable% 512
�� �
��CheckWimpScrap
��CheckPrelude
��CheckProgramFile
��StartBuildingProgram
��AddPrelude
��AddProgram
��RunProgram
�� �
��
�
�� �CheckWimpScrap
�0ș "XOS_File",13,"<Wimp$ScrapDir>"  � found%
�"� found%<>2 � �ConvertError(2)
��
�
�� �CheckPrelude
�@ș "XOS_File",13,"<DrawBasic$Options>"  � found%,,,,prelude%
�"� found%<>1 � �ConvertError(3)
��
�
�� �CheckProgramFile
�7ș "XOS_File",13,DBasic_File$  � found%,,,,program%
�"� found%<>1 � �ConvertError(4)
��
�
�� �StartBuildingProgram
�" � file% 256+prelude%+program%
� ptr%=file%
�A �Add("ON ERROR ON ERROR OFF : CHAIN "+"""Throwback:Error""")
�+ �Add("LIBRARY "+"""DrawBasic:Utils""")
� �Add("HIMEM =FNFreeSlot")
� �Add("PROCBeginDrawing")
��
�
�� �AddPrelude
�/ ș "OS_File",12,"<DrawBasic$Options>",ptr%
� �Tokenise(prelude%)
��
�
�� �AddProgram 
�' ș "OS_File",12,DBasic_File$,ptr% 
� �Tokenise(program%)
��
�
�� �RunProgram
�ptr%?0=13 : ptr%+=1
�.�("Save <Wimp$Scrap> "+�~file%+" "+�~ptr%)
�*SetType <Wimp$Scrap> Basic
��("Set Basic$File "+file$)
�*WimpTask LinkLib:Convert
�wimp%!0=Convert_Window%
� ș "Wimp_CloseWindow",,wimp%
��
�
�O� -------------------------------------------------------------------------
�
�
�� �Add(x$)
�$ptr%=x$+�13 : ptr%+=�x$+1
��
�
�� �Tokenise(length%)
� line%=0
� end%=ptr%+length%
� ȕ ptr%<end%
�  Ȏ ptr%?0 �
�$   � 10,13: line%+=1 : ptr%?0=13
�   � 160  : ptr%?0=&F2
�   � 187  : ptr%?0=&A4
�  �
�
  ptr%+=1
� �
��
�
�� �ConvertError(error%)
�
� � � 
�Ȏ error% �
�&                                  
� � 0
�+   � "Error in Convert "+�$;"at line";�
� � 2
;   � 0, "!Libraries requires a scrap directory to work"
 � 3
,   � 0,"No DrawLib 'setup' file defined"
 � 4
$   � 0,"Program file not found!"
�
�
�
00000000  0d 00 01 0e ee 20 85 20  f2 45 72 72 6f 72 0d 00  |..... . .Error..|
00000010  02 25 f2 57 69 6d 70 5f  49 6e 69 74 69 61 6c 69  |.%.Wimp_Initiali|
00000020  73 65 28 22 4c 69 62 72  61 72 79 20 4d 61 6b 65  |se("Library Make|
00000030  72 22 29 0d 00 03 13 f2  44 65 66 69 6e 65 5f 57  |r").....Define_W|
00000040  69 6e 64 6f 77 73 0d 00  04 11 f2 44 65 66 69 6e  |indows.....Defin|
00000050  65 5f 4d 65 6e 75 73 0d  00 05 05 f5 0d 00 06 21  |e_Menus........!|
00000060  20 65 76 65 6e 74 25 3d  a4 57 69 6d 70 5f 50 6f  | event%=.Wimp_Po|
00000070  6c 6c 53 61 76 65 28 6d  61 73 6b 25 29 0d 00 07  |llSave(mask%)...|
00000080  10 20 c8 8e 20 65 76 65  6e 74 25 20 ca 0d 00 08  |. .. event% ....|
00000090  2b 20 20 c9 20 32 20 20  20 20 20 3a 20 c8 99 20  |+  . 2     : .. |
000000a0  22 57 69 6d 70 5f 4f 70  65 6e 57 69 6e 64 6f 77  |"Wimp_OpenWindow|
000000b0  22 2c 2c 77 69 6d 70 25  0d 00 09 2c 20 20 c9 20  |",,wimp%...,  . |
000000c0  33 20 20 20 20 20 3a 20  c8 99 20 22 57 69 6d 70  |3     : .. "Wimp|
000000d0  5f 43 6c 6f 73 65 57 69  6e 64 6f 77 22 2c 2c 77  |_CloseWindow",,w|
000000e0  69 6d 70 25 0d 00 0a 21  20 20 c9 20 36 20 20 20  |imp%...!  . 6   |
000000f0  20 20 3a 20 f2 45 76 65  6e 74 5f 4d 6f 75 73 65  |  : .Event_Mouse|
00000100  43 6c 69 63 6b 0d 00 0b  21 20 20 c9 20 39 20 20  |Click...!  . 9  |
00000110  20 20 20 3a 20 f2 45 76  65 6e 74 5f 4d 65 6e 75  |   : .Event_Menu|
00000120  43 68 6f 69 63 65 0d 00  0c 1e 20 20 c9 20 31 37  |Choice....  . 17|
00000130  2c 31 38 20 3a 20 f2 45  76 65 6e 74 5f 4d 65 73  |,18 : .Event_Mes|
00000140  73 61 67 65 0d 00 0d 06  20 cb 0d 00 0e 0f fd 20  |sage.... ...... |
00000150  66 69 6e 69 73 68 65 64  25 0d 00 0f 05 e0 0d 00  |finished%.......|
00000160  10 04 0d 00 11 1d dd 20  f2 57 69 6d 70 5f 49 6e  |....... .Wimp_In|
00000170  69 74 69 61 6c 69 73 65  28 74 61 73 6b 24 29 0d  |itialise(task$).|
00000180  00 12 1d de 20 77 69 6d  70 25 20 33 30 30 30 2c  |.... wimp% 3000,|
00000190  20 69 63 6f 6e 73 25 20  31 35 32 35 0d 00 13 1c  | icons% 1525....|
000001a0  69 63 6f 6e 5f 6d 65 6d  6f 72 79 25 3d 69 63 6f  |icon_memory%=ico|
000001b0  6e 73 25 2b 31 35 32 35  0d 00 14 2c c8 99 20 22  |ns%+1525...,.. "|
000001c0  57 69 6d 70 5f 49 6e 69  74 69 61 6c 69 73 65 22  |Wimp_Initialise"|
000001d0  2c 32 30 30 2c 26 34 42  35 33 34 31 35 34 2c 74  |,200,&4B534154,t|
000001e0  61 73 6b 24 0d 00 15 0b  6d 61 73 6b 25 3d 30 0d  |ask$....mask%=0.|
000001f0  00 16 0f 66 69 6e 69 73  68 65 64 25 3d a3 0d 00  |...finished%=...|
00000200  17 13 73 70 72 69 74 65  5f 6e 61 6d 65 24 3d 22  |..sprite_name$="|
00000210  22 0d 00 18 12 42 61 73  69 63 5f 46 69 6c 65 24  |"....Basic_File$|
00000220  3d 22 22 0d 00 19 0e 4f  70 74 69 6f 6e 73 25 3d  |=""....Options%=|
00000230  30 0d 00 1a 05 e1 0d 00  1b 04 0d 00 1c 15 dd 20  |0.............. |
00000240  f2 44 65 66 69 6e 65 5f  57 69 6e 64 6f 77 73 0d  |.Define_Windows.|
00000250  00 1d 2f 4c 69 62 53 61  76 65 5f 57 69 6e 64 6f  |../LibSave_Windo|
00000260  77 25 3d a4 57 69 6d 70  5f 57 69 6e 64 6f 77 4c  |w%=.Wimp_WindowL|
00000270  6f 61 64 28 22 4c 69 62  53 61 76 65 22 29 0d 00  |oad("LibSave")..|
00000280  1e 29 49 6e 66 6f 5f 57  69 6e 64 6f 77 25 3d a4  |.)Info_Window%=.|
00000290  57 69 6d 70 5f 57 69 6e  64 6f 77 4c 6f 61 64 28  |Wimp_WindowLoad(|
000002a0  22 49 6e 66 6f 22 29 0d  00 1f 31 4c 69 6e 6b 53  |"Info")...1LinkS|
000002b0  61 76 65 5f 57 69 6e 64  6f 77 25 3d a4 57 69 6d  |ave_Window%=.Wim|
000002c0  70 5f 57 69 6e 64 6f 77  4c 6f 61 64 28 22 4c 69  |p_WindowLoad("Li|
000002d0  6e 6b 53 61 76 65 22 29  0d 00 20 2f 43 6f 6e 76  |nkSave").. /Conv|
000002e0  65 72 74 5f 57 69 6e 64  6f 77 25 3d a4 57 69 6d  |ert_Window%=.Wim|
000002f0  70 5f 57 69 6e 64 6f 77  4c 6f 61 64 28 22 43 6f  |p_WindowLoad("Co|
00000300  6e 76 65 72 74 22 29 0d  00 21 1b c8 99 20 22 57  |nvert")..!... "W|
00000310  69 6d 70 5f 43 6c 6f 73  65 54 65 6d 70 6c 61 74  |imp_CloseTemplat|
00000320  65 22 0d 00 22 12 f2 52  65 61 64 5f 44 65 66 61  |e".."..Read_Defa|
00000330  75 6c 74 73 0d 00 23 05  e1 0d 00 24 07 20 20 3a  |ults..#....$.  :|
00000340  0d 00 25 16 20 20 dd 20  f2 52 65 61 64 5f 44 65  |..%.  . .Read_De|
00000350  66 61 75 6c 74 73 0d 00  26 14 20 20 de 20 20 64  |faults..&.  .  d|
00000360  65 66 61 75 6c 74 73 25  20 34 0d 00 27 2a 20 20  |efaults% 4..'*  |
00000370  e7 20 a4 46 69 6c 65 5f  45 78 69 73 74 73 28 22  |. .File_Exists("|
00000380  4c 69 6e 6b 4c 69 62 3a  44 65 66 61 75 6c 74 73  |LinkLib:Defaults|
00000390  22 29 20 8c 0d 00 28 33  20 20 20 c8 99 20 22 4f  |") ...(3   .. "O|
000003a0  53 5f 46 69 6c 65 22 2c  31 36 2c 22 4c 69 6e 6b  |S_File",16,"Link|
000003b0  4c 69 62 3a 44 65 66 61  75 6c 74 73 22 2c 64 65  |Lib:Defaults",de|
000003c0  66 61 75 6c 74 73 25 0d  00 29 1a 20 20 20 63 72  |faults%..).   cr|
000003d0  75 6e 63 68 25 3d 64 65  66 61 75 6c 74 73 25 21  |unch%=defaults%!|
000003e0  30 0d 00 2a 07 20 20 cc  0d 00 2b 15 20 20 20 63  |0..*.  ...+.   c|
000003f0  72 75 6e 63 68 25 3d 25  31 31 31 31 31 0d 00 2c  |runch%=%11111..,|
00000400  07 20 20 cd 0d 00 2d 18  20 20 f2 53 65 74 5f 4c  |.  ...-.  .Set_L|
00000410  69 6e 6b 53 61 76 65 49  63 6f 6e 73 0d 00 2e 07  |inkSaveIcons....|
00000420  20 20 e1 0d 00 2f 0a 20  20 20 20 20 3a 0d 00 30  |  .../.     :..0|
00000430  1d 20 20 20 20 20 dd 20  f2 53 65 74 5f 4c 69 6e  |.     . .Set_Lin|
00000440  6b 53 61 76 65 49 63 6f  6e 73 0d 00 31 17 20 20  |kSaveIcons..1.  |
00000450  20 20 20 20 e3 20 69 63  6f 6e 25 3d 34 20 b8 20  |    . icon%=4 . |
00000460  38 0d 00 32 26 20 20 20  20 20 20 20 20 e7 20 63  |8..2&        . c|
00000470  72 75 6e 63 68 25 80 28  31 3c 3c 28 69 63 6f 6e  |runch%.(1<<(icon|
00000480  25 2d 34 29 29 20 8c 0d  00 33 35 20 20 20 20 20  |%-4)) ...35     |
00000490  20 20 20 20 f2 57 69 6d  70 5f 49 63 6f 6e 53 65  |    .Wimp_IconSe|
000004a0  6c 65 63 74 28 4c 69 6e  6b 53 61 76 65 5f 57 69  |lect(LinkSave_Wi|
000004b0  6e 64 6f 77 25 2c 69 63  6f 6e 25 29 0d 00 34 0d  |ndow%,icon%)..4.|
000004c0  20 20 20 20 20 20 20 20  cd 0d 00 35 0c 20 20 20  |        ...5.   |
000004d0  20 20 20 20 ed 0d 00 36  0a 20 20 20 20 20 e1 0d  |    ...6.     ..|
000004e0  00 37 04 0d 00 38 13 dd  20 f2 44 65 66 69 6e 65  |.7...8.. .Define|
000004f0  5f 4d 65 6e 75 73 0d 00  39 29 42 61 72 5f 49 63  |_Menus..9)Bar_Ic|
00000500  6f 6e 25 3d a4 57 69 6d  70 5f 49 63 6f 6e 42 61  |on%=.Wimp_IconBa|
00000510  72 28 22 21 4c 69 62 72  61 72 69 65 73 22 29 0d  |r("!Libraries").|
00000520  00 3a 41 42 61 72 5f 4d  65 6e 75 25 3d a4 57 69  |.:ABar_Menu%=.Wi|
00000530  6d 70 5f 4d 65 6e 75 43  72 65 61 74 65 28 22 4c  |mp_MenuCreate("L|
00000540  69 62 72 61 72 69 65 73  5c 49 6e 66 6f 5c 4e 65  |ibraries\Info\Ne|
00000550  77 20 4c 69 62 72 61 72  79 5c 51 75 69 74 22 29  |w Library\Quit")|
00000560  0d 00 3b 2c f2 57 69 6d  70 5f 4d 65 6e 75 47 6c  |..;,.Wimp_MenuGl|
00000570  75 65 28 42 61 72 5f 4d  65 6e 75 25 2c 31 2c 49  |ue(Bar_Menu%,1,I|
00000580  6e 66 6f 5f 57 69 6e 64  6f 77 25 29 0d 00 3c 2f  |nfo_Window%)..</|
00000590  f2 57 69 6d 70 5f 4d 65  6e 75 47 6c 75 65 28 42  |.Wimp_MenuGlue(B|
000005a0  61 72 5f 4d 65 6e 75 25  2c 32 2c 4c 69 62 53 61  |ar_Menu%,2,LibSa|
000005b0  76 65 5f 57 69 6e 64 6f  77 25 29 0d 00 3d 3d 4c  |ve_Window%)..==L|
000005c0  69 6e 6b 53 61 76 65 5f  4d 65 6e 75 25 3d a4 57  |inkSave_Menu%=.W|
000005d0  69 6d 70 5f 4d 65 6e 75  43 72 65 61 74 65 28 22  |imp_MenuCreate("|
000005e0  4c 69 62 72 61 72 69 65  73 5c 53 61 76 65 44 65  |Libraries\SaveDe|
000005f0  66 61 75 6c 74 73 22 29  0d 00 3e 05 e1 0d 00 3f  |faults")..>....?|
00000600  04 0d 00 40 04 0d 00 41  17 dd 20 f2 45 76 65 6e  |...@...A.. .Even|
00000610  74 5f 4d 6f 75 73 65 43  6c 69 63 6b 0d 00 42 11  |t_MouseClick..B.|
00000620  c8 8e 20 77 69 6d 70 25  21 31 32 20 ca 0d 00 43  |.. wimp%!12 ...C|
00000630  09 20 c9 20 2d 32 0d 00  44 12 20 20 c8 8e 20 77  |. . -2..D.  .. w|
00000640  69 6d 70 25 21 38 20 ca  0d 00 45 33 20 20 20 c9  |imp%!8 ...E3   .|
00000650  20 32 20 20 20 20 3a 20  f2 57 69 6d 70 5f 4d 65  | 2    : .Wimp_Me|
00000660  6e 75 50 6f 70 55 70 42  61 72 28 77 69 6d 70 25  |nuPopUpBar(wimp%|
00000670  21 30 2c 77 69 6d 70 25  21 34 29 0d 00 46 07 20  |!0,wimp%!4)..F. |
00000680  20 cb 0d 00 47 17 20 c9  20 4c 69 6e 6b 53 61 76  | ...G. . LinkSav|
00000690  65 5f 57 69 6e 64 6f 77  25 0d 00 48 12 20 20 c8  |e_Window%..H.  .|
000006a0  8e 20 77 69 6d 70 25 21  38 20 ca 0d 00 49 3f 20  |. wimp%!8 ...I? |
000006b0  20 20 c9 20 32 20 20 20  20 3a 20 f2 57 69 6d 70  |  . 2    : .Wimp|
000006c0  5f 4d 65 6e 75 50 6f 70  55 70 28 4c 69 6e 6b 53  |_MenuPopUp(LinkS|
000006d0  61 76 65 5f 4d 65 6e 75  25 2c 77 69 6d 70 25 21  |ave_Menu%,wimp%!|
000006e0  30 2c 77 69 6d 70 25 21  34 29 0d 00 4a 25 20 20  |0,wimp%!4)..J%  |
000006f0  20 7f 20 3a 20 f2 47 65  74 5f 4c 69 6e 6b 4f 70  | . : .Get_LinkOp|
00000700  74 69 6f 6e 73 28 77 69  6d 70 25 21 31 36 29 0d  |tions(wimp%!16).|
00000710  00 4b 07 20 20 cb 0d 00  4c 05 cb 0d 00 4d 05 e1  |.K.  ...L....M..|
00000720  0d 00 4e 08 20 20 20 3a  0d 00 4f 20 20 20 20 dd  |..N.   :..O    .|
00000730  20 f2 47 65 74 5f 4c 69  6e 6b 4f 70 74 69 6f 6e  | .Get_LinkOption|
00000740  73 28 69 63 6f 6e 25 29  0d 00 50 12 20 20 20 20  |s(icon%)..P.    |
00000750  c8 8e 20 69 63 6f 6e 25  20 ca 0d 00 51 14 20 20  |.. icon% ...Q.  |
00000760  20 20 20 c9 20 34 2c 35  2c 36 2c 37 2c 38 0d 00  |   . 4,5,6,7,8..|
00000770  52 30 20 20 20 20 20 20  69 63 25 3d 69 63 6f 6e  |R0      ic%=icon|
00000780  25 2d 34 20 3a 20 63 72  75 6e 63 68 25 3d 63 72  |%-4 : crunch%=cr|
00000790  75 6e 63 68 25 82 28 31  3c 3c 69 63 25 29 0d 00  |unch%.(1<<ic%)..|
000007a0  53 09 20 20 20 20 cb 0d  00 54 08 20 20 20 e1 0d  |S.    ...T.   ..|
000007b0  00 55 04 0d 00 56 17 dd  20 f2 45 76 65 6e 74 5f  |.U...V.. .Event_|
000007c0  4d 65 6e 75 43 68 6f 69  63 65 0d 00 57 0f 20 c8  |MenuChoice..W. .|
000007d0  8e 20 6d 65 6e 75 25 20  ca 0d 00 58 11 20 20 c9  |. menu% ...X.  .|
000007e0  20 42 61 72 5f 4d 65 6e  75 25 0d 00 59 13 20 20  | Bar_Menu%..Y.  |
000007f0  20 c8 8e 20 77 69 6d 70  25 21 30 20 ca 0d 00 5a  | .. wimp%!0 ...Z|
00000800  2b 20 20 20 20 c9 20 32  20 3a 20 f2 57 69 6d 70  |+    . 2 : .Wimp|
00000810  5f 4d 65 6e 75 43 6c 6f  73 65 20 3a 20 66 69 6e  |_MenuClose : fin|
00000820  69 73 68 65 64 25 3d b9  0d 00 5b 08 20 20 20 cb  |ished%=...[.   .|
00000830  0d 00 5c 16 20 20 c9 20  4c 69 6e 6b 53 61 76 65  |..\.  . LinkSave|
00000840  5f 4d 65 6e 75 25 0d 00  5d 13 20 20 20 c8 8e 20  |_Menu%..].   .. |
00000850  77 69 6d 70 25 21 30 20  ca 0d 00 5e 1c 20 20 20  |wimp%!0 ...^.   |
00000860  20 c9 20 30 20 3a 20 f2  53 61 76 65 5f 44 65 66  | . 0 : .Save_Def|
00000870  61 75 6c 74 73 0d 00 5f  08 20 20 20 cb 0d 00 60  |aults.._.   ...`|
00000880  06 20 cb 0d 00 61 05 e1  0d 00 62 07 20 20 3a 0d  |. ...a....b.  :.|
00000890  00 63 16 20 20 dd 20 f2  53 61 76 65 5f 44 65 66  |.c.  . .Save_Def|
000008a0  61 75 6c 74 73 0d 00 64  19 20 20 64 65 66 61 75  |aults..d.  defau|
000008b0  6c 74 73 25 21 30 3d 63  72 75 6e 63 68 25 0d 00  |lts%!0=crunch%..|
000008c0  65 44 20 20 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |eD  .. "OS_File"|
000008d0  2c 31 30 2c 22 4c 69 6e  6b 4c 69 62 3a 44 65 66  |,10,"LinkLib:Def|
000008e0  61 75 6c 74 73 22 2c 26  46 46 44 2c 2c 64 65 66  |aults",&FFD,,def|
000008f0  61 75 6c 74 73 25 2c 64  65 66 61 75 6c 74 73 25  |aults%,defaults%|
00000900  2b 34 0d 00 66 07 20 20  e1 0d 00 67 04 0d 00 68  |+4..f.  ...g...h|
00000910  14 dd 20 f2 45 76 65 6e  74 5f 4d 65 73 73 61 67  |.. .Event_Messag|
00000920  65 0d 00 69 15 6d 65 73  73 61 67 65 25 3d 77 69  |e..i.message%=wi|
00000930  6d 70 25 21 31 36 0d 00  6a 13 20 c8 8e 20 6d 65  |mp%!16..j. .. me|
00000940  73 73 61 67 65 25 20 20  ca 0d 00 6b 17 20 20 c9  |ssage%  ...k.  .|
00000950  20 30 20 3a 20 66 69 6e  69 73 68 65 64 25 3d b9  | 0 : finished%=.|
00000960  0d 00 6c 29 20 20 c9 20  33 20 3a 20 f2 44 65 61  |..l)  . 3 : .Dea|
00000970  6c 57 69 74 68 4c 6f 61  64 65 64 46 69 6c 65 28  |lWithLoadedFile(|
00000980  77 69 6d 70 25 21 34 30  29 0d 00 6d 06 20 cb 0d  |wimp%!40)..m. ..|
00000990  00 6e 05 e1 0d 00 6f 07  20 20 3a 0d 00 70 22 20  |.n....o.  :..p" |
000009a0  20 dd 20 f2 44 65 61 6c  57 69 74 68 4c 6f 61 64  | . .DealWithLoad|
000009b0  65 64 46 69 6c 65 28 74  79 70 65 25 29 0d 00 71  |edFile(type%)..q|
000009c0  0a 20 20 ea 20 67 24 0d  00 72 11 20 20 20 c8 8e  |.  . g$..r.   ..|
000009d0  20 74 79 70 65 25 20 ca  0d 00 73 10 20 20 20 20  | type% ...s.    |
000009e0  c9 20 26 46 46 42 20 3a  0d 00 74 37 20 20 20 20  |. &FFB :..t7    |
000009f0  20 42 61 73 69 63 5f 46  69 6c 65 24 3d a4 57 69  | Basic_File$=.Wi|
00000a00  6d 70 5f 47 65 74 53 74  72 69 6e 67 41 74 41 64  |mp_GetStringAtAd|
00000a10  64 72 65 73 73 28 77 69  6d 70 25 2b 34 34 29 0d  |dress(wimp%+44).|
00000a20  00 75 3a 20 20 20 20 20  f2 57 69 6d 70 5f 49 63  |.u:     .Wimp_Ic|
00000a30  6f 6e 50 75 74 54 65 78  74 28 4c 69 6e 6b 53 61  |onPutText(LinkSa|
00000a40  76 65 5f 57 69 6e 64 6f  77 25 2c 31 34 2c 22 66  |ve_Window%,14,"f|
00000a50  69 6c 65 5f 66 66 62 22  29 0d 00 76 1b 20 20 20  |ile_ffb")..v.   |
00000a60  20 20 f2 44 65 61 6c 57  69 74 68 42 61 73 69 63  |  .DealWithBasic|
00000a70  46 69 6c 65 0d 00 77 10  20 20 20 20 c9 20 26 42  |File..w.    . &B|
00000a80  39 42 20 3a 0d 00 78 38  20 20 20 20 20 44 42 61  |9B :..x8     DBa|
00000a90  73 69 63 5f 46 69 6c 65  24 3d a4 57 69 6d 70 5f  |sic_File$=.Wimp_|
00000aa0  47 65 74 53 74 72 69 6e  67 41 74 41 64 64 72 65  |GetStringAtAddre|
00000ab0  73 73 28 77 69 6d 70 25  2b 34 34 29 0d 00 79 30  |ss(wimp%+44)..y0|
00000ac0  20 20 20 20 20 f2 57 69  6d 70 5f 57 69 6e 64 6f  |     .Wimp_Windo|
00000ad0  77 42 72 69 6e 67 54 6f  54 6f 70 28 43 6f 6e 76  |wBringToTop(Conv|
00000ae0  65 72 74 5f 57 69 6e 64  6f 77 25 29 0d 00 7a 11  |ert_Window%)..z.|
00000af0  20 20 20 20 c9 20 26 32  30 30 30 3a 20 0d 00 7b  |    . &2000: ..{|
00000b00  37 20 20 20 20 20 42 61  73 69 63 5f 46 69 6c 65  |7     Basic_File|
00000b10  24 3d a4 57 69 6d 70 5f  47 65 74 53 74 72 69 6e  |$=.Wimp_GetStrin|
00000b20  67 41 74 41 64 64 72 65  73 73 28 77 69 6d 70 25  |gAtAddress(wimp%|
00000b30  2b 34 34 29 0d 00 7c 35  20 20 20 20 20 6c 65 61  |+44)..|5     lea|
00000b40  66 24 3d a4 57 69 6d 70  5f 47 65 74 46 69 6c 65  |f$=.Wimp_GetFile|
00000b50  46 72 6f 6d 50 61 74 68  6e 61 6d 65 28 42 61 73  |FromPathname(Bas|
00000b60  69 63 5f 46 69 6c 65 24  29 0d 00 7d 2d 20 20 20  |ic_File$)..}-   |
00000b70  20 20 c8 8e 20 a4 54 79  70 65 4f 66 41 70 70 6c  |  .. .TypeOfAppl|
00000b80  69 63 61 74 69 6f 6e 28  42 61 73 69 63 5f 46 69  |ication(Basic_Fi|
00000b90  6c 65 24 29 20 ca 0d 00  7e 1a 20 20 20 20 20 20  |le$) ...~.      |
00000ba0  c9 20 22 55 6e 72 65 63  6f 67 6e 69 73 65 64 22  |. "Unrecognised"|
00000bb0  0d 00 7f 15 20 20 20 20  20 20 c9 20 22 4c 69 62  |....      . "Lib|
00000bc0  72 61 72 79 22 0d 00 80  2a 20 20 20 20 20 20 20  |rary"...*       |
00000bd0  f2 57 69 6d 70 5f 41 6c  65 72 74 28 22 22 2c 22  |.Wimp_Alert("","|
00000be0  49 73 20 61 20 6c 69 62  72 61 72 79 21 22 29 0d  |Is a library!").|
00000bf0  00 81 0b 20 20 20 20 20  20 7f 0d 00 82 37 20 20  |...      ....7  |
00000c00  20 20 20 20 20 f2 57 69  6d 70 5f 49 63 6f 6e 50  |     .Wimp_IconP|
00000c10  75 74 54 65 78 74 28 4c  69 6e 6b 53 61 76 65 5f  |utText(LinkSave_|
00000c20  57 69 6e 64 6f 77 25 2c  31 34 2c 6c 65 61 66 24  |Window%,14,leaf$|
00000c30  29 0d 00 83 1a 20 20 20  20 20 20 20 42 61 73 69  |)....       Basi|
00000c40  63 5f 46 69 6c 65 24 2b  3d 67 24 0d 00 84 1d 20  |c_File$+=g$.... |
00000c50  20 20 20 20 20 20 f2 44  65 61 6c 57 69 74 68 42  |      .DealWithB|
00000c60  61 73 69 63 46 69 6c 65  0d 00 85 0a 20 20 20 20  |asicFile....    |
00000c70  20 cb 0d 00 86 08 20 20  20 cb 0d 00 87 07 20 20  | .....   .....  |
00000c80  e1 0d 00 88 06 20 20 0d  00 89 29 20 20 20 20 dd  |.....  ...)    .|
00000c90  20 a4 54 79 70 65 4f 66  41 70 70 6c 69 63 61 74  | .TypeOfApplicat|
00000ca0  69 6f 6e 28 42 61 73 69  63 5f 46 69 6c 65 24 29  |ion(Basic_File$)|
00000cb0  0d 00 8a 41 20 20 20 20  20 e7 20 a4 46 6f 75 6e  |...A     . .Foun|
00000cc0  64 28 42 61 73 69 63 5f  46 69 6c 65 24 2b 22 2e  |d(Basic_File$+".|
00000cd0  21 52 75 6e 49 6d 61 67  65 22 29 20 8c 20 67 24  |!RunImage") . g$|
00000ce0  3d 22 2e 21 52 75 6e 49  6d 61 67 65 22 3a 3d 67  |=".!RunImage":=g|
00000cf0  24 0d 00 8b 2d 20 20 20  20 20 e7 20 a4 4c 69 62  |$...-     . .Lib|
00000d00  72 61 72 79 28 42 61 73  69 63 5f 46 69 6c 65 24  |rary(Basic_File$|
00000d10  29 20 8c 20 3d 22 4c 69  62 72 61 72 79 22 0d 00  |) . ="Library"..|
00000d20  8c 41 20 20 20 20 20 e7  20 a4 46 6f 75 6e 64 28  |.A     . .Found(|
00000d30  42 61 73 69 63 5f 46 69  6c 65 24 2b 22 2e 21 52  |Basic_File$+".!R|
00000d40  75 6e 69 6d 61 67 65 22  29 20 8c 20 67 24 3d 22  |unimage") . g$="|
00000d50  2e 21 52 75 6e 69 6d 61  67 65 22 3a 3d 67 24 0d  |.!Runimage":=g$.|
00000d60  00 8d 41 20 20 20 20 20  e7 20 a4 46 6f 75 6e 64  |..A     . .Found|
00000d70  28 42 61 73 69 63 5f 46  69 6c 65 24 2b 22 2e 21  |(Basic_File$+".!|
00000d80  72 75 6e 69 6d 61 67 65  22 29 20 8c 20 67 24 3d  |runimage") . g$=|
00000d90  22 2e 21 72 75 6e 69 6d  61 67 65 22 3a 3d 67 24  |".!runimage":=g$|
00000da0  0d 00 8e 41 20 20 20 20  20 e7 20 a4 46 6f 75 6e  |...A     . .Foun|
00000db0  64 28 42 61 73 69 63 5f  46 69 6c 65 24 2b 22 2e  |d(Basic_File$+".|
00000dc0  21 52 55 4e 49 4d 41 47  45 22 29 20 8c 20 67 24  |!RUNIMAGE") . g$|
00000dd0  3d 22 2e 21 52 55 4e 49  4d 41 47 45 22 3a 3d 67  |=".!RUNIMAGE":=g|
00000de0  24 0d 00 8f 18 20 20 20  20 20 3d 22 55 6e 72 65  |$....     ="Unre|
00000df0  63 6f 67 6e 69 73 65 64  22 0d 00 90 09 20 20 20  |cognised"....   |
00000e00  20 20 0d 00 91 15 20 20  20 20 dd 20 a4 46 6f 75  |  ....    . .Fou|
00000e10  6e 64 28 66 66 24 29 0d  00 92 11 20 20 20 20 20  |nd(ff$)....     |
00000e20  ea 20 66 6f 75 6e 64 25  0d 00 93 1e 20 20 20 20  |. found%....    |
00000e30  20 66 6f 75 6e 64 25 3d  b9 20 3a 20 24 77 69 6d  | found%=. : $wim|
00000e40  70 25 3d 66 66 24 0d 00  94 26 20 20 20 20 20 c8  |p%=ff$...&     .|
00000e50  99 20 22 4f 53 5f 46 69  6c 65 22 2c 35 2c 77 69  |. "OS_File",5,wi|
00000e60  6d 70 25 20 b8 20 66 6f  75 6e 64 25 0d 00 95 0f  |mp% . found%....|
00000e70  20 20 20 20 3d 66 6f 75  6e 64 25 0d 00 96 04 0d  |    =found%.....|
00000e80  00 97 17 20 20 20 20 dd  20 a4 4c 69 62 72 61 72  |...    . .Librar|
00000e90  79 28 66 66 24 29 0d 00  98 11 20 20 20 20 20 ea  |y(ff$)....     .|
00000ea0  20 66 6f 75 6e 64 25 0d  00 99 1e 20 20 20 20 20  | found%....     |
00000eb0  24 77 69 6d 70 25 3d 66  66 24 2b 22 2e 4c 69 62  |$wimp%=ff$+".Lib|
00000ec0  72 61 72 79 22 0d 00 9a  26 20 20 20 20 20 c8 99  |rary"...&     ..|
00000ed0  20 22 4f 53 5f 46 69 6c  65 22 2c 35 2c 77 69 6d  | "OS_File",5,wim|
00000ee0  70 25 20 b8 20 66 6f 75  6e 64 25 0d 00 9b 1b 20  |p% . found%.... |
00000ef0  20 20 20 20 e7 20 66 6f  75 6e 64 25 3d 32 20 8c  |    . found%=2 .|
00000f00  3d b9 20 8b 3d a3 0d 00  9c 06 20 20 0d 00 9d 1c  |=. .=.....  ....|
00000f10  20 20 20 20 dd 20 f2 44  65 61 6c 57 69 74 68 42  |    . .DealWithB|
00000f20  61 73 69 63 46 69 6c 65  0d 00 9e 3b 20 20 20 20  |asicFile...;    |
00000f30  20 f2 57 69 6d 70 5f 49  63 6f 6e 50 75 74 54 65  | .Wimp_IconPutTe|
00000f40  78 74 28 4c 69 6e 6b 53  61 76 65 5f 57 69 6e 64  |xt(LinkSave_Wind|
00000f50  6f 77 25 2c 31 31 2c 42  61 73 69 63 5f 46 69 6c  |ow%,11,Basic_Fil|
00000f60  65 24 29 0d 00 9f 31 20  20 20 20 20 f2 57 69 6d  |e$)...1     .Wim|
00000f70  70 5f 57 69 6e 64 6f 77  42 72 69 6e 67 54 6f 54  |p_WindowBringToT|
00000f80  6f 70 28 4c 69 6e 6b 53  61 76 65 5f 57 69 6e 64  |op(LinkSave_Wind|
00000f90  6f 77 25 29 0d 00 a0 2e  20 20 20 20 20 75 24 3d  |ow%)....     u$=|
00000fa0  a4 57 69 6d 70 5f 49 63  6f 6e 54 65 78 74 28 4c  |.Wimp_IconText(L|
00000fb0  69 6e 6b 53 61 76 65 5f  57 69 6e 64 6f 77 25 2c  |inkSave_Window%,|
00000fc0  31 29 0d 00 a1 30 20 20  20 20 20 f2 57 69 6d 70  |1)...0     .Wimp|
00000fd0  5f 49 63 6f 6e 43 61 72  65 74 28 4c 69 6e 6b 53  |_IconCaret(LinkS|
00000fe0  61 76 65 5f 57 69 6e 64  6f 77 25 2c 31 2c a9 75  |ave_Window%,1,.u|
00000ff0  24 29 0d 00 a2 09 20 20  20 20 e1 0d 00 a3 04 0d  |$)....    ......|
00001000  00 a4 1b dd 20 a4 44 65  66 69 6e 65 5f 53 61 76  |.... .Define_Sav|
00001010  65 28 77 69 6e 64 6f 77  25 29 0d 00 a5 0d ea 20  |e(window%)..... |
00001020  72 65 73 75 6c 74 25 0d  00 a6 10 c8 8e 20 77 69  |result%...... wi|
00001030  6e 64 6f 77 25 20 ca 0d  00 a7 44 20 c9 20 4c 69  |ndow% ....D . Li|
00001040  62 53 61 76 65 5f 57 69  6e 64 6f 77 25 2c 4c 69  |bSave_Window%,Li|
00001050  6e 6b 53 61 76 65 5f 57  69 6e 64 6f 77 25 2c 43  |nkSave_Window%,C|
00001060  6f 6e 76 65 72 74 5f 57  69 6e 64 6f 77 25 20 20  |onvert_Window%  |
00001070  3a 20 72 65 73 75 6c 74  25 3d b9 0d 00 a8 1e 20  |: result%=..... |
00001080  7f 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |.             : |
00001090  72 65 73 75 6c 74 25 3d  a3 0d 00 a9 05 cb 0d 00  |result%=........|
000010a0  aa 0c 3d 72 65 73 75 6c  74 25 0d 00 ab 04 0d 00  |..=result%......|
000010b0  ac 24 dd 20 f2 45 76 65  6e 74 5f 53 61 76 65 46  |.$. .Event_SaveF|
000010c0  69 6c 65 28 66 69 6c 65  24 2c 77 69 6e 64 6f 77  |ile(file$,window|
000010d0  25 29 0d 00 ad 10 c8 8e  20 77 69 6e 64 6f 77 25  |%)...... window%|
000010e0  20 ca 0d 00 ae 2a 20 c9  20 4c 69 62 53 61 76 65  | ....* . LibSave|
000010f0  5f 57 69 6e 64 6f 77 25  20 3a 20 f2 43 72 65 61  |_Window% : .Crea|
00001100  74 65 4e 65 77 4c 69 62  72 61 72 79 0d 00 af 27  |teNewLibrary...'|
00001110  20 c9 20 4c 69 6e 6b 53  61 76 65 5f 57 69 6e 64  | . LinkSave_Wind|
00001120  6f 77 25 3a 20 f2 4c 69  6e 6b 4c 69 62 72 61 72  |ow%: .LinkLibrar|
00001130  69 65 73 0d 00 b0 16 20  c9 20 43 6f 6e 76 65 72  |ies.... . Conver|
00001140  74 5f 57 69 6e 64 6f 77  25 0d 00 b1 06 20 20 0d  |t_Window%....  .|
00001150  00 b2 15 20 20 f2 53 61  76 65 41 6e 64 43 6f 6e  |...  .SaveAndCon|
00001160  76 65 72 74 0d 00 b3 05  cb 0d 00 b4 05 e1 0d 00  |vert............|
00001170  b5 04 0d 00 b6 04 0d 00  b7 21 f4 20 20 33 2e 31  |.........!.  3.1|
00001180  20 43 72 65 61 74 69 6e  67 20 61 20 6e 65 77 20  | Creating a new |
00001190  6c 69 62 72 61 72 79 0d  00 b8 21 f4 20 20 3d 3d  |library...!.  ==|
000011a0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
000011b0  3d 3d 3d 3d 3d 3d 3d 3d  0d 00 b9 04 0d 00 ba 19  |========........|
000011c0  20 20 dd 20 f2 43 72 65  61 74 65 4e 65 77 4c 69  |  . .CreateNewLi|
000011d0  62 72 61 72 79 0d 00 bb  16 20 20 20 f2 47 65 74  |brary....   .Get|
000011e0  4c 69 62 72 61 72 79 4e  61 6d 65 0d 00 bc 15 20  |LibraryName.... |
000011f0  20 20 ff 22 43 44 49 52  20 22 2b 66 69 6c 65 24  |  ."CDIR "+file$|
00001200  0d 00 bd 20 20 20 20 ff  22 43 44 49 52 20 22 2b  |...    ."CDIR "+|
00001210  66 69 6c 65 24 2b 22 2e  4c 69 62 72 61 72 79 22  |file$+".Library"|
00001220  0d 00 be 28 20 20 20 e7  20 73 70 72 69 74 65 5f  |...(   . sprite_|
00001230  6e 61 6d 65 24 3d 22 22  20 8c 20 f2 4c 6f 61 64  |name$="" . .Load|
00001240  5f 53 70 72 69 74 65 73  0d 00 bf 18 20 20 20 f2  |_Sprites....   .|
00001250  43 6f 70 79 5f 53 70 72  69 74 65 46 69 6c 65 73  |Copy_SpriteFiles|
00001260  0d 00 c0 10 20 20 20 f2  43 6f 70 79 5f 52 75 6e  |....   .Copy_Run|
00001270  0d 00 c1 11 20 20 20 f2  43 6f 70 79 5f 42 6f 6f  |....   .Copy_Boo|
00001280  74 0d 00 c2 13 20 20 20  f2 43 6f 70 79 5f 52 65  |t....   .Copy_Re|
00001290  61 64 4d 65 0d 00 c3 07  20 20 e1 0d 00 c4 09 20  |adMe....  ..... |
000012a0  20 20 20 3a 0d 00 c5 19  20 20 20 20 dd 20 f2 47  |   :....    . .G|
000012b0  65 74 4c 69 62 72 61 72  79 4e 61 6d 65 0d 00 c6  |etLibraryName...|
000012c0  2f 20 20 20 20 20 6c 65  61 66 24 3d a4 57 69 6d  |/     leaf$=.Wim|
000012d0  70 5f 47 65 74 46 69 6c  65 46 72 6f 6d 50 61 74  |p_GetFileFromPat|
000012e0  68 6e 61 6d 65 28 66 69  6c 65 24 29 0d 00 c7 24  |hname(file$)...$|
000012f0  20 20 20 20 20 66 69 6c  65 24 3d c0 66 69 6c 65  |     file$=.file|
00001300  24 2c a9 66 69 6c 65 24  2d a9 6c 65 61 66 24 29  |$,.file$-.leaf$)|
00001310  0d 00 c8 1b 20 20 20 20  20 e7 20 c0 6c 65 61 66  |....     . .leaf|
00001320  24 2c 31 29 3c 3e 22 21  22 20 8c 0d 00 c9 1e 20  |$,1)<>"!" ..... |
00001330  20 20 20 20 20 66 69 6c  65 24 2b 3d 22 21 22 2b  |     file$+="!"+|
00001340  c0 6c 65 61 66 24 2c 39  29 0d 00 ca 34 20 20 20  |.leaf$,9)...4   |
00001350  20 20 20 f2 57 69 6d 70  5f 49 63 6f 6e 50 75 74  |   .Wimp_IconPut|
00001360  54 65 78 74 28 4c 69 62  53 61 76 65 5f 57 69 6e  |Text(LibSave_Win|
00001370  64 6f 77 25 2c 31 2c 66  69 6c 65 24 29 0d 00 cb  |dow%,1,file$)...|
00001380  0a 20 20 20 20 20 cc 0d  00 cc 1b 20 20 20 20 20  |.     .....     |
00001390  20 66 69 6c 65 24 2b 3d  c0 6c 65 61 66 24 2c 31  | file$+=.leaf$,1|
000013a0  30 29 0d 00 cd 34 20 20  20 20 20 20 f2 57 69 6d  |0)...4      .Wim|
000013b0  70 5f 49 63 6f 6e 50 75  74 54 65 78 74 28 4c 69  |p_IconPutText(Li|
000013c0  62 53 61 76 65 5f 57 69  6e 64 6f 77 25 2c 31 2c  |bSave_Window%,1,|
000013d0  66 69 6c 65 24 29 0d 00  ce 0a 20 20 20 20 20 cd  |file$)....     .|
000013e0  0d 00 cf 09 20 20 20 20  e1 0d 00 d0 09 20 20 20  |....    .....   |
000013f0  20 3a 0d 00 d1 17 20 20  20 20 dd 20 f2 4c 6f 61  | :....    . .Loa|
00001400  64 5f 53 70 72 69 74 65  73 0d 00 d2 3a 20 20 20  |d_Sprites...:   |
00001410  20 20 73 70 72 69 74 65  5f 6e 61 6d 65 24 3d 22  |  sprite_name$="|
00001420  21 6c 69 62 72 61 72 79  22 20 3a 20 73 6d 5f 73  |!library" : sm_s|
00001430  70 72 69 74 65 24 3d 22  73 6d 21 6c 69 62 72 61  |prite$="sm!libra|
00001440  72 79 22 0d 00 d3 35 20  20 20 20 20 53 70 72 69  |ry"...5     Spri|
00001450  74 65 73 25 3d a4 57 69  6d 70 5f 53 70 72 69 74  |tes%=.Wimp_Sprit|
00001460  65 4c 6f 61 64 28 22 4c  69 6e 6b 4c 69 62 3a 4c  |eLoad("LinkLib:L|
00001470  53 70 72 69 74 65 22 29  0d 00 d4 39 20 20 20 20  |Sprite")...9    |
00001480  20 53 70 72 69 74 65 73  32 32 25 3d a4 57 69 6d  | Sprites22%=.Wim|
00001490  70 5f 53 70 72 69 74 65  4c 6f 61 64 28 22 4c 69  |p_SpriteLoad("Li|
000014a0  6e 6b 4c 69 62 3a 4c 53  70 72 69 74 65 32 32 22  |nkLib:LSprite22"|
000014b0  29 0d 00 d5 39 20 20 20  20 20 53 70 72 69 74 65  |)...9     Sprite|
000014c0  73 32 33 25 3d a4 57 69  6d 70 5f 53 70 72 69 74  |s23%=.Wimp_Sprit|
000014d0  65 4c 6f 61 64 28 22 4c  69 6e 6b 4c 69 62 3a 4c  |eLoad("LinkLib:L|
000014e0  53 70 72 69 74 65 32 33  22 29 0d 00 d6 09 20 20  |Sprite23")....  |
000014f0  20 20 e1 0d 00 d7 09 20  20 20 20 3a 0d 00 d8 1b  |  .....    :....|
00001500  20 20 20 20 dd 20 f2 43  6f 70 79 5f 53 70 72 69  |    . .Copy_Spri|
00001510  74 65 46 69 6c 65 73 0d  00 d9 2f 20 20 20 20 20  |teFiles.../     |
00001520  6c 65 61 66 24 3d a4 57  69 6d 70 5f 47 65 74 46  |leaf$=.Wimp_GetF|
00001530  69 6c 65 46 72 6f 6d 50  61 74 68 6e 61 6d 65 28  |ileFromPathname(|
00001540  66 69 6c 65 24 29 0d 00  da 3f 20 20 20 20 20 c8  |file$)...?     .|
00001550  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
00001560  32 35 36 2b 32 36 2c 53  70 72 69 74 65 73 25 2c  |256+26,Sprites%,|
00001570  73 70 72 69 74 65 5f 6e  61 6d 65 24 2c 6c 65 61  |sprite_name$,lea|
00001580  66 24 2b bd 30 0d 00 db  42 20 20 20 20 20 c8 99  |f$+.0...B     ..|
00001590  20 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 32  | "OS_SpriteOp",2|
000015a0  35 36 2b 32 36 2c 53 70  72 69 74 65 73 25 2c 73  |56+26,Sprites%,s|
000015b0  6d 5f 73 70 72 69 74 65  24 2c 22 73 6d 22 2b 6c  |m_sprite$,"sm"+l|
000015c0  65 61 66 24 2b bd 30 0d  00 dc 3b 20 20 20 20 20  |eaf$+.0...;     |
000015d0  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
000015e0  2c 32 35 36 2b 31 32 2c  53 70 72 69 74 65 73 25  |,256+12,Sprites%|
000015f0  2c 66 69 6c 65 24 2b 22  2e 21 53 70 72 69 74 65  |,file$+".!Sprite|
00001600  73 22 0d 00 dd 41 20 20  20 20 20 c8 99 20 22 4f  |s"...A     .. "O|
00001610  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00001620  32 36 2c 53 70 72 69 74  65 73 32 32 25 2c 73 70  |26,Sprites22%,sp|
00001630  72 69 74 65 5f 6e 61 6d  65 24 2c 6c 65 61 66 24  |rite_name$,leaf$|
00001640  2b bd 30 0d 00 de 44 20  20 20 20 20 c8 99 20 22  |+.0...D     .. "|
00001650  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 35 36  |OS_SpriteOp",256|
00001660  2b 32 36 2c 53 70 72 69  74 65 73 32 32 25 2c 73  |+26,Sprites22%,s|
00001670  6d 5f 73 70 72 69 74 65  24 2c 22 73 6d 22 2b 6c  |m_sprite$,"sm"+l|
00001680  65 61 66 24 2b bd 30 0d  00 df 3f 20 20 20 20 20  |eaf$+.0...?     |
00001690  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
000016a0  2c 32 35 36 2b 31 32 2c  53 70 72 69 74 65 73 32  |,256+12,Sprites2|
000016b0  32 25 2c 66 69 6c 65 24  2b 22 2e 21 53 70 72 69  |2%,file$+".!Spri|
000016c0  74 65 73 32 32 22 0d 00  e0 41 20 20 20 20 20 c8  |tes22"...A     .|
000016d0  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
000016e0  32 35 36 2b 32 36 2c 53  70 72 69 74 65 73 32 33  |256+26,Sprites23|
000016f0  25 2c 73 70 72 69 74 65  5f 6e 61 6d 65 24 2c 6c  |%,sprite_name$,l|
00001700  65 61 66 24 2b bd 30 0d  00 e1 44 20 20 20 20 20  |eaf$+.0...D     |
00001710  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00001720  2c 32 35 36 2b 32 36 2c  53 70 72 69 74 65 73 32  |,256+26,Sprites2|
00001730  33 25 2c 73 6d 5f 73 70  72 69 74 65 24 2c 22 73  |3%,sm_sprite$,"s|
00001740  6d 22 2b 6c 65 61 66 24  2b bd 30 0d 00 e2 3f 20  |m"+leaf$+.0...? |
00001750  20 20 20 20 c8 99 20 22  4f 53 5f 53 70 72 69 74  |    .. "OS_Sprit|
00001760  65 4f 70 22 2c 32 35 36  2b 31 32 2c 53 70 72 69  |eOp",256+12,Spri|
00001770  74 65 73 32 33 25 2c 66  69 6c 65 24 2b 22 2e 21  |tes23%,file$+".!|
00001780  53 70 72 69 74 65 73 32  33 22 0d 00 e3 34 20 20  |Sprites23"...4  |
00001790  20 20 20 73 70 72 69 74  65 5f 6e 61 6d 65 24 3d  |   sprite_name$=|
000017a0  6c 65 61 66 24 20 20 3a  20 73 6d 5f 73 70 72 69  |leaf$  : sm_spri|
000017b0  74 65 24 3d 22 73 6d 22  2b 6c 65 61 66 24 0d 00  |te$="sm"+leaf$..|
000017c0  e4 09 20 20 20 20 e1 0d  00 e5 09 20 20 20 20 3a  |..    .....    :|
000017d0  0d 00 e6 13 20 20 20 20  dd 20 f2 43 6f 70 79 5f  |....    . .Copy_|
000017e0  52 75 6e 0d 00 e7 18 20  20 20 20 20 ea 20 70 25  |Run....     . p%|
000017f0  20 3a 20 70 25 3d 77 69  6d 70 25 0d 00 e8 31 20  | : p%=wimp%...1 |
00001800  20 20 20 20 e7 20 c0 6c  65 61 66 24 2c 31 29 3d  |    . .leaf$,1)=|
00001810  22 21 22 20 8c 20 6c 65  61 66 24 3d c2 6c 65 61  |"!" . leaf$=.lea|
00001820  66 24 2c a9 6c 65 61 66  24 2d 31 29 0d 00 e9 35  |f$,.leaf$-1)...5|
00001830  20 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 22  |     .Add_Line("|
00001840  49 63 6f 6e 73 70 72 69  74 65 73 20 3c 4f 62 65  |Iconsprites <Obe|
00001850  79 24 44 69 72 3e 2e 21  53 70 72 69 74 65 73 22  |y$Dir>.!Sprites"|
00001860  29 0d 00 ea 34 20 20 20  20 20 f2 41 64 64 5f 4c  |)...4     .Add_L|
00001870  69 6e 65 28 22 53 65 74  20 22 2b 6c 65 61 66 24  |ine("Set "+leaf$|
00001880  2b 22 24 50 61 74 68 20  3c 4f 62 65 79 24 44 69  |+"$Path <Obey$Di|
00001890  72 3e 2e 22 29 0d 00 eb  35 20 20 20 20 20 f2 41  |r>.")...5     .A|
000018a0  64 64 5f 4c 69 6e 65 28  22 46 69 6c 65 72 5f 4f  |dd_Line("Filer_O|
000018b0  70 65 6e 44 69 72 20 22  2b 6c 65 61 66 24 2b 22  |penDir "+leaf$+"|
000018c0  3a 4c 69 62 72 61 72 79  22 29 0d 00 ec 35 20 20  |:Library")...5  |
000018d0  20 20 20 c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |   .. "OS_File",|
000018e0  31 30 2c 66 69 6c 65 24  2b 22 2e 21 52 75 6e 22  |10,file$+".!Run"|
000018f0  2c 26 46 45 42 2c 2c 77  69 6d 70 25 2c 70 25 0d  |,&FEB,,wimp%,p%.|
00001900  00 ed 09 20 20 20 20 e1  0d 00 ee 09 20 20 20 20  |...    .....    |
00001910  3a 0d 00 ef 14 20 20 20  20 dd 20 f2 43 6f 70 79  |:....    . .Copy|
00001920  5f 42 6f 6f 74 0d 00 f0  18 20 20 20 20 20 ea 20  |_Boot....     . |
00001930  70 25 20 3a 20 70 25 3d  77 69 6d 70 25 0d 00 f1  |p% : p%=wimp%...|
00001940  35 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |5     .Add_Line(|
00001950  22 49 63 6f 6e 73 70 72  69 74 65 73 20 3c 4f 62  |"Iconsprites <Ob|
00001960  65 79 24 44 69 72 3e 2e  21 53 70 72 69 74 65 73  |ey$Dir>.!Sprites|
00001970  22 29 0d 00 f2 34 20 20  20 20 20 f2 41 64 64 5f  |")...4     .Add_|
00001980  4c 69 6e 65 28 22 53 65  74 20 22 2b 6c 65 61 66  |Line("Set "+leaf|
00001990  24 2b 22 24 50 61 74 68  20 3c 4f 62 65 79 24 44  |$+"$Path <Obey$D|
000019a0  69 72 3e 2e 22 29 0d 00  f3 36 20 20 20 20 20 c8  |ir>.")...6     .|
000019b0  99 20 22 4f 53 5f 46 69  6c 65 22 2c 31 30 2c 66  |. "OS_File",10,f|
000019c0  69 6c 65 24 2b 22 2e 21  42 6f 6f 74 22 2c 26 46  |ile$+".!Boot",&F|
000019d0  45 42 2c 2c 77 69 6d 70  25 2c 70 25 0d 00 f4 09  |EB,,wimp%,p%....|
000019e0  20 20 20 20 e1 0d 00 f5  09 20 20 20 20 3a 0d 00  |    .....    :..|
000019f0  f6 16 20 20 20 20 dd 20  f2 43 6f 70 79 5f 52 65  |..    . .Copy_Re|
00001a00  61 64 4d 65 0d 00 f7 24  20 20 20 20 20 ea 20 70  |adMe...$     . p|
00001a10  25 20 3a 20 70 25 3d 77  69 6d 70 25 20 3a 20 77  |% : p%=wimp% : w|
00001a20  69 6d 70 25 21 30 3d 30  0d 00 f8 2d 20 20 20 20  |imp%!0=0...-    |
00001a30  20 c8 99 20 22 4f 53 5f  57 6f 72 64 22 2c 31 34  | .. "OS_Word",14|
00001a40  2c 77 69 6d 70 25 20 3a  20 64 61 74 65 24 3d 24  |,wimp% : date$=$|
00001a50  77 69 6d 70 25 0d 00 f9  24 20 20 20 20 20 64 61  |wimp%...$     da|
00001a60  74 65 24 3d c0 64 61 74  65 24 2c a7 64 61 74 65  |te$=.date$,.date|
00001a70  24 2c 22 2e 22 29 2d 31  29 0d 00 fa 16 20 20 20  |$,".")-1)....   |
00001a80  20 20 f2 41 64 64 5f 4c  69 6e 65 28 22 22 29 0d  |  .Add_Line("").|
00001a90  00 fb 23 20 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |..#     .Add_Lin|
00001aa0  65 28 c4 31 31 2b a9 6c  65 61 66 24 2c 22 2d 22  |e(.11+.leaf$,"-"|
00001ab0  29 29 0d 00 fc 26 20 20  20 20 20 f2 41 64 64 5f  |))...&     .Add_|
00001ac0  4c 69 6e 65 28 22 20 4c  69 62 72 61 72 79 3a 20  |Line(" Library: |
00001ad0  22 2b 6c 65 61 66 24 29  0d 00 fd 16 20 20 20 20  |"+leaf$)....    |
00001ae0  20 f2 41 64 64 5f 4c 69  6e 65 28 22 22 29 0d 00  | .Add_Line("")..|
00001af0  fe 51 20 20 20 20 20 f2  41 64 64 5f 4c 69 6e 65  |.Q     .Add_Line|
00001b00  28 22 20 50 75 72 70 6f  73 65 3a 20 42 41 53 49  |(" Purpose: BASI|
00001b10  43 20 70 72 6f 63 65 64  75 72 65 20 4c 69 62 72  |C procedure Libr|
00001b20  61 72 79 20 2d 20 27 69  6e 74 65 6c 6c 69 67 65  |ary - 'intellige|
00001b30  6e 74 27 20 64 69 72 65  63 74 6f 72 79 22 29 0d  |nt' directory").|
00001b40  00 ff 16 20 20 20 20 20  f2 41 64 64 5f 4c 69 6e  |...     .Add_Lin|
00001b50  65 28 22 22 29 0d 01 00  2f 20 20 20 20 20 f2 41  |e("").../     .A|
00001b60  64 64 5f 4c 69 6e 65 28  22 20 56 65 72 73 69 6f  |dd_Line(" Versio|
00001b70  6e 3a 20 31 2e 30 20 28  22 2b 64 61 74 65 24 2b  |n: 1.0 ("+date$+|
00001b80  22 29 22 29 0d 01 01 16  20 20 20 20 20 f2 41 64  |")")....     .Ad|
00001b90  64 5f 4c 69 6e 65 28 22  22 29 0d 01 02 23 20 20  |d_Line("")...#  |
00001ba0  20 20 20 f2 41 64 64 5f  4c 69 6e 65 28 c4 31 31  |   .Add_Line(.11|
00001bb0  2b a9 6c 65 61 66 24 2c  22 2d 22 29 29 0d 01 03  |+.leaf$,"-"))...|
00001bc0  1a 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |.     .Add_Line(|
00001bd0  22 22 29 20 20 20 20 0d  01 04 16 20 20 20 20 20  |"")    ....     |
00001be0  f2 41 64 64 5f 4c 69 6e  65 28 22 22 29 0d 01 05  |.Add_Line("")...|
00001bf0  1f 20 20 20 20 20 f2 41  64 64 5f 4c 69 6e 65 28  |.     .Add_Line(|
00001c00  22 20 20 20 55 53 41 47  45 3a 22 29 0d 01 06 16  |"   USAGE:")....|
00001c10  20 20 20 20 20 f2 41 64  64 5f 4c 69 6e 65 28 22  |     .Add_Line("|
00001c20  22 29 0d 01 07 0c 20 20  20 20 20 f7 2b 30 0d 01  |")....     .+0..|
00001c30  08 4d 20 20 20 20 20 dc  20 22 54 68 69 73 20 61  |.M     . "This a|
00001c40  70 70 6c 69 63 61 74 69  6f 6e 20 69 73 20 69 6e  |pplication is in|
00001c50  74 65 6e 64 65 64 20 74  6f 20 20 62 65 20 75 73  |tended to  be us|
00001c60  65 64 20 69 6e 20 65 78  61 63 74 6c 79 20 74 68  |ed in exactly th|
00001c70  65 20 73 61 6d 65 20 77  61 79 22 0d 01 09 4d 20  |e same way"...M |
00001c80  20 20 20 20 dc 20 22 61  73 20 61 20 6e 6f 72 6d  |    . "as a norm|
00001c90  61 6c 20 46 69 6c 65 72  20 64 69 72 65 63 74 6f  |al Filer directo|
00001ca0  72 79 2e 20 54 68 65 20  6f 6e 6c 79 20 64 69 66  |ry. The only dif|
00001cb0  66 65 72 65 6e 63 65 20  69 73 20 74 68 61 74 20  |ference is that |
00001cc0  6f 62 6a 65 63 74 73 22  0d 01 0a 50 20 20 20 20  |objects"...P    |
00001cd0  20 dc 20 22 73 74 6f 72  65 64 20 69 6e 20 74 68  | . "stored in th|
00001ce0  65 20 64 69 72 65 63 74  6f 72 79 20 61 72 65 20  |e directory are |
00001cf0  61 6c 77 61 79 73 20 72  65 66 65 72 72 65 64 20  |always referred |
00001d00  74 6f 20 62 79 20 74 68  65 20 53 41 4d 45 20 70  |to by the SAME p|
00001d10  61 74 68 6e 61 6d 65 22  0d 01 0b 3d 20 20 20 20  |athname"...=    |
00001d20  20 dc 20 22 6e 6f 20 6d  61 74 74 65 72 20 77 68  | . "no matter wh|
00001d30  65 72 65 20 74 68 65 20  64 69 72 65 63 74 6f 72  |ere the director|
00001d40  79 20 69 74 73 65 6c 66  20 69 73 20 73 74 6f 72  |y itself is stor|
00001d50  65 64 2e 22 20 0d 01 0c  0d 20 20 20 20 20 dc 20  |ed." ....     . |
00001d60  22 22 0d 01 0d 4c 20 20  20 20 20 dc 20 22 54 68  |""...L     . "Th|
00001d70  69 73 20 69 73 20 69 6e  76 61 6c 75 61 62 6c 65  |is is invaluable|
00001d80  20 66 6f 72 20 70 72 6f  67 72 61 6d 73 20 77 68  | for programs wh|
00001d90  69 63 68 20 68 61 76 65  20 6f 74 68 65 72 20 66  |ich have other f|
00001da0  69 6c 65 73 20 61 73 20  69 6e 70 75 74 22 0d 01  |iles as input"..|
00001db0  0e 4b 20 20 20 20 20 dc  20 22 72 65 73 6f 75 72  |.K     . "resour|
00001dc0  63 65 73 2e 20 57 69 74  68 20 61 62 73 6f 6c 75  |ces. With absolu|
00001dd0  74 65 20 70 61 74 68 6e  61 6d 65 73 2c 20 65 72  |te pathnames, er|
00001de0  72 6f 72 73 20 61 72 69  73 65 20 77 68 65 6e 20  |rors arise when |
00001df0  74 68 65 20 6d 61 69 6e  22 0d 01 0f 4a 20 20 20  |the main"...J   |
00001e00  20 20 dc 20 22 70 72 6f  67 72 61 6d 20 63 61 6e  |  . "program can|
00001e10  6e 6f 74 20 66 69 6e 64  20 69 74 73 20 72 65 73  |not find its res|
00001e20  6f 75 72 63 65 20 66 69  6c 65 73 20 2d 20 75 73  |ource files - us|
00001e30  75 61 6c 6c 79 20 62 65  63 61 75 73 65 20 74 68  |ually because th|
00001e40  65 79 22 0d 01 10 4b 20  20 20 20 20 dc 20 22 68  |ey"...K     . "h|
00001e50  61 76 65 20 62 65 65 6e  20 6d 6f 76 65 64 2e 20  |ave been moved. |
00001e60  54 68 69 73 20 6d 65 61  6e 73 20 65 64 69 74 69  |This means editi|
00001e70  6e 67 20 74 68 65 20 6d  61 69 6e 20 70 72 6f 67  |ng the main prog|
00001e80  72 61 6d 20 77 68 69 63  68 20 63 61 6e 22 0d 01  |ram which can"..|
00001e90  11 47 20 20 20 20 20 dc  20 22 62 65 20 61 20 6e  |.G     . "be a n|
00001ea0  75 69 73 61 6e 63 65 2e  20 55 73 65 20 6f 66 20  |uisance. Use of |
00001eb0  74 68 69 73 20 74 79 70  65 20 6f 66 20 27 69 6e  |this type of 'in|
00001ec0  74 65 6c 6c 69 67 65 6e  74 27 20 64 69 72 65 63  |telligent' direc|
00001ed0  74 6f 72 79 22 0d 01 12  22 20 20 20 20 20 dc 20  |tory"..."     . |
00001ee0  22 72 65 6d 6f 76 65 73  20 74 68 69 73 20 70 72  |"removes this pr|
00001ef0  6f 62 6c 65 6d 2e 22 0d  01 13 0d 20 20 20 20 20  |oblem."....     |
00001f00  dc 20 22 22 0d 01 14 4c  20 20 20 20 20 dc 20 22  |. ""...L     . "|
00001f10  53 75 63 68 20 64 69 72  65 63 74 6f 72 69 65 73  |Such directories|
00001f20  20 61 72 65 20 65 73 70  65 63 69 61 6c 6c 79 20  | are especially |
00001f30  75 73 65 66 75 6c 20 66  6f 72 20 74 68 65 20 73  |useful for the s|
00001f40  74 6f 72 69 6e 67 20 6f  66 20 42 41 53 49 43 22  |toring of BASIC"|
00001f50  0d 01 15 21 20 20 20 20  20 dc 20 22 70 72 6f 63  |...!     . "proc|
00001f60  65 64 75 72 65 20 6c 69  62 72 61 72 69 65 73 3a  |edure libraries:|
00001f70  22 0d 01 16 0d 20 20 20  20 20 dc 20 22 22 0d 01  |"....     . ""..|
00001f80  17 4b 20 20 20 20 20 dc  20 22 31 2e 20 44 6f 75  |.K     . "1. Dou|
00001f90  62 6c 65 2d 63 6c 69 63  6b 69 6e 67 20 74 68 65  |ble-clicking the|
00001fa0  20 64 69 72 65 63 74 6f  72 79 20 69 63 6f 6e 20  | directory icon |
00001fb0  69 6e 20 61 20 46 69 6c  65 72 20 77 69 6e 64 6f  |in a Filer windo|
00001fc0  77 20 63 61 75 73 65 73  22 0d 01 18 3e 20 20 20  |w causes"...>   |
00001fd0  20 20 dc 20 22 20 20 20  69 74 20 74 6f 20 62 65  |  . "   it to be|
00001fe0  20 6f 70 65 6e 65 64 2c  20 6a 75 73 74 20 6c 69  | opened, just li|
00001ff0  6b 65 20 61 20 6e 6f 72  6d 61 6c 20 64 69 72 65  |ke a normal dire|
00002000  63 74 6f 72 79 2e 22 0d  01 19 0d 20 20 20 20 20  |ctory."....     |
00002010  dc 20 22 22 0d 01 1a 4b  20 20 20 20 20 dc 20 22  |. ""...K     . "|
00002020  32 2e 20 46 69 6c 65 73  20 61 6e 64 20 64 69 72  |2. Files and dir|
00002030  65 63 74 6f 72 69 65 73  20 63 61 6e 20 62 65 20  |ectories can be |
00002040  63 72 65 61 74 65 64 20  61 6e 64 20 73 61 76 65  |created and save|
00002050  64 20 69 6e 20 74 68 65  20 75 73 75 61 6c 22 0d  |d in the usual".|
00002060  01 1b 15 20 20 20 20 20  dc 20 22 20 20 20 77 61  |...     . "   wa|
00002070  79 9c 2e 22 0d 01 1c 0d  20 20 20 20 20 dc 20 22  |y.."....     . "|
00002080  22 0d 01 1d 4a 20 20 20  20 20 dc 20 22 33 2e 20  |"...J     . "3. |
00002090  41 6e 79 20 42 41 53 49  43 20 70 72 6f 63 65 64  |Any BASIC proced|
000020a0  75 72 65 20 6c 69 62 72  61 72 69 65 73 20 73 74  |ure libraries st|
000020b0  6f 72 65 64 20 69 6e 20  74 68 69 73 20 64 69 72  |ored in this dir|
000020c0  65 63 74 6f 72 79 20 63  61 6e 22 0d 01 1e 49 20  |ectory can"...I |
000020d0  20 20 20 20 dc 20 22 20  20 20 62 65 20 6c 6f 61  |    . "   be loa|
000020e0  64 65 64 20 69 6e 74 6f  20 79 6f 75 72 20 42 41  |ded into your BA|
000020f0  53 49 43 20 70 72 6f 67  72 61 6d 20 62 79 20 69  |SIC program by i|
00002100  6e 63 6c 75 64 69 6e 67  20 74 68 65 20 42 41 53  |ncluding the BAS|
00002110  49 43 20 22 0d 01 1f 1a  20 20 20 20 20 dc 20 22  |IC "....     . "|
00002120  20 20 20 73 74 61 74 65  6d 65 6e 74 3a 22 0d 01  |   statement:"..|
00002130  20 0d 20 20 20 20 20 dc  20 22 22 0d 01 21 0d 20  | .     . ""..!. |
00002140  20 20 20 20 dc 20 22 22  0d 01 22 4a 20 20 20 20  |    . "".."J    |
00002150  20 dc 20 22 20 20 20 46  6f 72 20 65 78 61 6d 70  | . "   For examp|
00002160  6c 65 2c 20 74 6f 20 6c  6f 61 64 20 6c 69 62 72  |le, to load libr|
00002170  61 72 79 20 27 46 72 65  64 27 20 63 6f 6e 74 61  |ary 'Fred' conta|
00002180  69 6e 65 64 20 69 6e 20  64 69 72 65 63 74 6f 72  |ined in director|
00002190  79 22 0d 01 23 17 20 20  20 20 20 dc 20 22 20 20  |y"..#.     . "  |
000021a0  20 27 4a 69 6d 27 20 3a  22 0d 01 24 0d 20 20 20  | 'Jim' :"..$.   |
000021b0  20 20 dc 20 22 22 0d 01  25 0d 20 20 20 20 20 dc  |  . ""..%.     .|
000021c0  20 22 22 0d 01 26 4c 20  20 20 20 20 dc 20 22 20  | ""..&L     . " |
000021d0  20 20 41 6c 6c 20 74 68  61 74 20 69 73 20 72 65  |  All that is re|
000021e0  71 75 69 72 65 64 20 66  6f 72 20 79 6f 75 72 20  |quired for your |
000021f0  70 72 6f 67 72 61 6d 20  74 6f 20 70 72 6f 70 65  |program to prope|
00002200  72 6c 79 20 6c 6f 63 61  74 65 20 74 68 65 22 0d  |rly locate the".|
00002210  01 27 4a 20 20 20 20 20  dc 20 22 20 20 20 6c 69  |.'J     . "   li|
00002220  62 72 61 72 79 20 69 73  20 74 68 61 74 20 74 68  |brary is that th|
00002230  65 20 46 69 6c 65 72 20  6d 75 73 74 20 68 61 76  |e Filer must hav|
00002240  65 20 27 73 65 65 6e 27  20 74 68 65 20 64 69 72  |e 'seen' the dir|
00002250  65 63 74 6f 72 79 20 2d  22 0d 01 28 4b 20 20 20  |ectory -"..(K   |
00002260  20 20 dc 20 22 20 20 20  61 6e 20 65 71 75 69 76  |  . "   an equiv|
00002270  61 6c 65 6e 74 20 74 65  63 68 6e 69 71 75 65 20  |alent technique |
00002280  69 73 20 74 6f 20 27 46  69 6c 65 72 5f 42 6f 6f  |is to 'Filer_Boo|
00002290  74 27 20 74 68 65 20 61  70 70 6c 69 63 61 74 69  |t' the applicati|
000022a0  6f 6e 2e 22 0d 01 29 0d  20 20 20 20 20 dc 20 22  |on."..).     . "|
000022b0  22 0d 01 2a 4b 20 20 20  20 20 dc 20 22 34 2e 20  |"..*K     . "4. |
000022c0  54 68 65 20 64 69 72 65  63 74 6f 72 79 20 63 61  |The directory ca|
000022d0  6e 20 62 65 20 6d 6f 76  65 64 20 61 72 6f 75 6e  |n be moved aroun|
000022e0  64 2c 20 65 76 65 6e 20  74 6f 20 64 69 66 66 65  |d, even to diffe|
000022f0  72 65 6e 74 20 66 69 6c  69 6e 67 22 0d 01 2b 3a  |rent filing"..+:|
00002300  20 20 20 20 20 dc 20 22  20 20 20 73 79 73 74 65  |     . "   syste|
00002310  6d 73 2e 59 6f 75 72 20  6d 61 69 6e 20 70 72 6f  |ms.Your main pro|
00002320  67 72 61 6d 20 77 69 6c  6c 20 73 74 69 6c 6c 20  |gram will still |
00002330  77 6f 72 6b 2e 22 0d 01  2c 0d 20 20 20 20 20 dc  |work."..,.     .|
00002340  20 22 22 0d 01 2d 49 20  20 20 20 20 dc 20 22 20  | ""..-I     . " |
00002350  20 20 41 6c 6c 20 74 68  61 74 20 68 61 73 20 74  |  All that has t|
00002360  6f 20 62 65 20 64 6f 6e  65 20 69 73 2c 20 69 6d  |o be done is, im|
00002370  6d 65 64 69 61 74 65 6c  79 20 61 66 74 65 72 20  |mediately after |
00002380  6d 6f 76 69 6e 67 20 69  74 2c 20 22 0d 01 2e 4b  |moving it, "...K|
00002390  20 20 20 20 20 dc 20 22  20 20 20 73 69 6d 70 6c  |     . "   simpl|
000023a0  79 20 64 6f 75 62 6c 65  2d 63 6c 69 63 6b 20 74  |y double-click t|
000023b0  68 65 20 64 69 72 65 63  74 6f 72 79 20 20 69 63  |he directory  ic|
000023c0  6f 6e 20 74 6f 20 69 6e  66 6f 72 6d 20 74 68 65  |on to inform the|
000023d0  20 46 69 6c 65 72 22 0d  01 2f 27 20 20 20 20 20  | Filer"../'     |
000023e0  dc 20 22 20 20 20 61 73  20 74 6f 20 74 68 65 20  |. "   as to the |
000023f0  6e 65 77 20 6c 6f 63 61  74 69 6f 6e 2e 22 0d 01  |new location."..|
00002400  30 0d 20 20 20 20 20 dc  20 22 22 0d 01 31 17 20  |0.     . ""..1. |
00002410  20 20 20 20 dc 20 22 35  2e 20 4c 69 6e 6b 69 6e  |    . "5. Linkin|
00002420  67 22 0d 01 32 0d 20 20  20 20 20 dc 20 22 22 0d  |g"..2.     . "".|
00002430  01 33 4c 20 20 20 20 20  dc 20 22 20 20 20 42 79  |.3L     . "   By|
00002440  20 75 73 69 6e 67 20 74  68 65 20 61 70 70 6c 69  | using the appli|
00002450  63 61 74 69 6f 6e 20 27  21 4c 69 6e 6b 4c 69 62  |cation '!LinkLib|
00002460  27 20 69 74 20 69 73 20  70 6f 73 73 69 62 6c 65  |' it is possible|
00002470  20 74 6f 20 6d 61 6b 65  20 61 22 0d 01 34 4c 20  | to make a"..4L |
00002480  20 20 20 20 dc 20 22 20  20 20 66 72 65 65 2d 73  |    . "   free-s|
00002490  74 61 6e 64 69 6e 67 20  70 72 6f 67 72 61 6d 20  |tanding program |
000024a0  77 68 69 63 68 20 77 69  6c 6c 20 63 6f 6e 74 61  |which will conta|
000024b0  69 6e 20 6a 75 73 74 20  74 68 65 20 70 72 6f 63  |in just the proc|
000024c0  65 64 75 72 65 73 22 0d  01 35 28 20 20 20 20 20  |edures"..5(     |
000024d0  dc 20 22 20 20 20 77 68  69 63 68 20 79 6f 75 72  |. "   which your|
000024e0  20 70 72 6f 67 72 61 6d  20 75 73 65 73 2e 22 0d  | program uses.".|
000024f0  01 36 0d 20 20 20 20 20  dc 20 22 22 0d 01 37 4c  |.6.     . ""..7L|
00002500  20 20 20 20 20 dc 20 22  20 20 20 53 69 6d 70 6c  |     . "   Simpl|
00002510  79 20 72 75 6e 20 74 68  65 20 61 70 70 6c 69 63  |y run the applic|
00002520  61 74 69 6f 6e 20 21 4c  69 6e 6b 4c 69 62 20 61  |ation !LinkLib a|
00002530  6e 64 20 64 72 61 67 20  79 6f 75 72 20 6d 61 69  |nd drag your mai|
00002540  6e 20 42 41 53 49 43 22  0d 01 38 4b 20 20 20 20  |n BASIC"..8K    |
00002550  20 dc 20 22 20 20 20 70  72 6f 67 72 61 6d 20 74  | . "   program t|
00002560  6f 20 74 68 65 20 69 63  6f 6e 20 6f 6e 20 74 68  |o the icon on th|
00002570  65 20 69 63 6f 6e 62 61  72 2e 20 41 20 77 69 6e  |e iconbar. A win|
00002580  64 6f 77 20 6f 70 65 6e  73 20 65 6e 61 62 6c 69  |dow opens enabli|
00002590  6e 67 22 0d 01 39 4c 20  20 20 20 20 dc 20 22 20  |ng"..9L     . " |
000025a0  20 20 79 6f 75 20 74 6f  20 66 69 6e 69 73 68 20  |  you to finish |
000025b0  74 68 65 20 6c 69 6e 6b  69 6e 67 20 70 72 6f 63  |the linking proc|
000025c0  65 64 75 72 65 20 73 6f  20 67 69 76 69 6e 67 20  |edure so giving |
000025d0  79 6f 75 20 61 20 6e 65  77 20 6d 61 69 6e 22 0d  |you a new main".|
000025e0  01 3a 4c 20 20 20 20 20  dc 20 22 20 20 20 70 72  |.:L     . "   pr|
000025f0  6f 67 72 61 6d 20 63 6f  6e 74 61 69 6e 69 6e 67  |ogram containing|
00002600  20 6e 6f 20 4c 49 42 52  41 52 59 20 63 61 6c 6c  | no LIBRARY call|
00002610  73 20 62 75 74 20 77 69  74 68 20 74 68 65 20 61  |s but with the a|
00002620  70 70 72 6f 70 72 69 61  74 65 22 0d 01 3b 21 20  |ppropriate"..;! |
00002630  20 20 20 20 dc 20 22 20  20 20 70 72 6f 63 65 64  |    . "   proced|
00002640  75 72 65 73 20 61 64 64  65 64 2e 22 0d 01 3c 0d  |ures added."..<.|
00002650  20 20 20 20 20 dc 20 22  22 0d 01 3d 47 20 20 20  |     . ""..=G   |
00002660  20 20 dc 20 22 20 20 20  4e 2e 42 2e 20 4e 65 77  |  . "   N.B. New|
00002670  20 27 69 6e 74 65 6c 6c  69 67 65 6e 74 27 20 64  | 'intelligent' d|
00002680  69 72 65 63 74 6f 72 69  65 73 20 63 61 6e 20 62  |irectories can b|
00002690  65 20 63 72 65 61 74 65  64 20 66 72 6f 6d 20 22  |e created from "|
000026a0  0d 01 3e 28 20 20 20 20  20 dc 20 22 20 20 20 21  |..>(     . "   !|
000026b0  4c 69 6e 6b 4c 69 62 27  73 20 69 63 6f 6e 62 61  |LinkLib's iconba|
000026c0  72 20 6d 65 6e 75 2e 22  0d 01 3f 12 20 20 20 20  |r menu."..?.    |
000026d0  20 dc 20 22 22 20 20 20  20 20 0d 01 40 14 20 20  | . ""     ..@.  |
000026e0  20 20 20 e3 20 69 25 3d  31 20 b8 20 35 36 0d 01  |   . i%=1 . 56..|
000026f0  41 23 20 20 20 20 20 f3  20 78 24 20 3a 20 f2 41  |A#     . x$ : .A|
00002700  64 64 5f 4c 69 6e 65 28  22 20 20 20 22 2b 78 24  |dd_Line("   "+x$|
00002710  29 0d 01 42 57 20 20 20  20 20 e7 20 69 25 3d 32  |)..BW     . i%=2|
00002720  35 20 8c 20 f2 41 64 64  5f 4c 69 6e 65 28 22 20  |5 . .Add_Line(" |
00002730  20 20 20 20 20 20 20 20  20 20 20 20 20 20 4c 49  |              LI|
00002740  42 52 41 52 59 20 22 22  22 2b 6c 65 61 66 24 2b  |BRARY """+leaf$+|
00002750  22 3a 4c 69 62 72 61 72  79 2e 3c 50 61 74 68 6e  |":Library.<Pathn|
00002760  61 6d 65 3e 22 22 22 29  0d 01 43 55 20 20 20 20  |ame>""")..CU    |
00002770  20 e7 20 69 25 3d 32 39  20 8c 20 f2 41 64 64 5f  | . i%=29 . .Add_|
00002780  4c 69 6e 65 28 22 20 20  20 20 20 20 20 20 20 20  |Line("          |
00002790  20 20 20 20 20 4c 49 42  52 41 52 59 20 22 22 22  |     LIBRARY """|
000027a0  2b 6c 65 61 66 24 2b 22  3a 4c 69 62 72 61 72 79  |+leaf$+":Library|
000027b0  2e 4a 69 6d 2e 46 72 65  64 22 22 22 29 0d 01 44  |.Jim.Fred""")..D|
000027c0  0a 20 20 20 20 20 ed 0d  01 45 22 20 20 20 20 20  |.     ...E"     |
000027d0  f2 41 64 64 5f 4c 69 6e  65 28 22 20 20 20 22 2b  |.Add_Line("   "+|
000027e0  c4 36 30 2c 22 2a 22 29  29 0d 01 46 40 20 20 20  |.60,"*"))..F@   |
000027f0  20 20 c8 99 20 22 4f 53  5f 46 69 6c 65 22 2c 31  |  .. "OS_File",1|
00002800  30 2c 66 69 6c 65 24 2b  22 2e 4c 69 62 72 61 72  |0,file$+".Librar|
00002810  79 2e 21 52 65 61 64 4d  65 22 2c 26 46 46 46 2c  |y.!ReadMe",&FFF,|
00002820  2c 77 69 6d 70 25 2c 70  25 0d 01 47 09 20 20 20  |,wimp%,p%..G.   |
00002830  20 e1 0d 01 48 0b 20 20  20 20 20 20 3a 0d 01 49  | ...H.      :..I|
00002840  19 20 20 20 20 20 20 dd  20 f2 41 64 64 5f 4c 69  |.      . .Add_Li|
00002850  6e 65 28 78 24 29 0d 01  4a 21 20 20 20 20 20 20  |ne(x$)..J!      |
00002860  20 24 70 25 3d 78 24 2b  bd 31 30 20 3a 20 70 25  | $p%=x$+.10 : p%|
00002870  2b 3d a9 78 24 2b 31 0d  01 4b 0b 20 20 20 20 20  |+=.x$+1..K.     |
00002880  20 e1 0d 01 4c 04 0d 01  4d 17 f4 20 20 33 2e 32  | ...L...M..  3.2|
00002890  20 53 61 76 69 6e 67 20  46 69 6c 65 73 0d 01 4e  | Saving Files..N|
000028a0  1a f4 20 20 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |..  ============|
000028b0  3d 3d 3d 3d 3d 3d 3d 0d  01 4f 04 0d 01 50 15 20  |=======..O...P. |
000028c0  dd 20 f2 4c 69 6e 6b 4c  69 62 72 61 72 69 65 73  |. .LinkLibraries|
000028d0  0d 01 51 18 20 e7 20 42  61 73 69 63 5f 46 69 6c  |..Q. . Basic_Fil|
000028e0  65 24 3c 3e 22 22 20 8c  0d 01 52 14 20 20 e7 20  |e$<>"" ...R.  . |
000028f0  a4 57 69 6d 70 53 63 72  61 70 20 8c 0d 01 53 25  |.WimpScrap ...S%|
00002900  20 20 20 ff 22 53 65 74  20 42 61 73 69 63 24 46  |   ."Set Basic$F|
00002910  69 6c 65 20 22 2b 42 61  73 69 63 5f 46 69 6c 65  |ile "+Basic_File|
00002920  24 0d 01 54 1e 20 20 20  ff 22 53 65 74 20 53 61  |$..T.   ."Set Sa|
00002930  76 65 24 46 69 6c 65 20  22 2b 66 69 6c 65 24 0d  |ve$File "+file$.|
00002940  01 55 24 20 20 20 ff 28  22 53 65 74 45 76 61 6c  |.U$   .("SetEval|
00002950  20 43 72 75 6e 63 68 20  22 2b c3 63 72 75 6e 63  | Crunch "+.crunc|
00002960  68 25 29 0d 01 56 0f 20  20 20 2a 46 58 32 30 30  |h%)..V.   *FX200|
00002970  2c 31 0d 01 57 1d 20 20  20 2a 57 69 6d 70 54 61  |,1..W.   *WimpTa|
00002980  73 6b 20 4c 69 6e 6b 4c  69 62 3a 4c 69 6e 6b 0d  |sk LinkLib:Link.|
00002990  01 58 23 20 20 20 c8 99  20 22 57 69 6d 70 5f 43  |.X#   .. "Wimp_C|
000029a0  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 77 69 6d  |loseWindow",,wim|
000029b0  70 25 0d 01 59 09 20 20  20 cd 20 0d 01 5a 06 20  |p%..Y.   . ..Z. |
000029c0  cc 0d 01 5b 27 20 20 6d  65 73 73 24 3d 22 4e 6f  |...['  mess$="No|
000029d0  20 66 69 6c 65 20 74 6f  20 62 65 20 70 72 6f 63  | file to be proc|
000029e0  65 73 73 65 64 2e 20 22  0d 01 5c 3e 20 20 6d 65  |essed. "..\>  me|
000029f0  73 73 24 2b 3d 22 44 72  61 67 20 61 20 42 41 53  |ss$+="Drag a BAS|
00002a00  49 43 20 66 69 6c 65 20  6f 6e 74 6f 20 69 63 6f  |IC file onto ico|
00002a10  6e 20 62 61 72 20 6f 72  20 74 68 69 73 20 77 69  |n bar or this wi|
00002a20  6e 64 6f 77 2e 22 0d 01  5d 22 20 20 f2 57 69 6d  |ndow."..]"  .Wim|
00002a30  70 5f 41 6c 65 72 74 28  22 4c 69 6e 6b 4c 69 62  |p_Alert("LinkLib|
00002a40  22 2c 6d 65 73 73 24 29  0d 01 5e 06 20 cd 0d 01  |",mess$)..^. ...|
00002a50  5f 06 20 e1 0d 01 60 04  0d 01 61 11 20 dd 20 a4  |_. ...`...a. . .|
00002a60  57 69 6d 70 53 63 72 61  70 0d 01 62 10 20 20 ea  |WimpScrap..b.  .|
00002a70  20 66 6f 75 6e 64 25 20  20 0d 01 63 31 20 20 c8  | found%  ..c1  .|
00002a80  99 20 22 58 4f 53 5f 46  69 6c 65 22 2c 31 33 2c  |. "XOS_File",13,|
00002a90  22 3c 57 69 6d 70 24 53  63 72 61 70 44 69 72 3e  |"<Wimp$ScrapDir>|
00002aa0  22 20 b8 20 66 6f 75 6e  64 25 0d 01 64 12 20 20  |" . found%..d.  |
00002ab0  e7 20 66 6f 75 6e 64 25  3d 32 20 8c 0d 01 65 29  |. found%=2 ...e)|
00002ac0  20 20 20 2a 53 65 74 20  4c 69 62 4c 69 6e 6b 24  |   *Set LibLink$|
00002ad0  50 61 74 68 20 3c 57 69  6d 70 24 53 63 72 61 70  |Path <Wimp$Scrap|
00002ae0  44 69 72 3e 2e 0d 01 66  0f 20 20 20 66 6f 75 6e  |Dir>...f.   foun|
00002af0  64 25 3d b9 0d 01 67 08  20 20 20 cc 0d 01 68 4d  |d%=...g.   ...hM|
00002b00  20 20 20 f2 57 69 6d 70  5f 41 6c 65 72 74 28 22  |   .Wimp_Alert("|
00002b10  4c 69 62 72 61 72 69 65  73 22 2c 22 54 68 65 20  |Libraries","The |
00002b20  6c 69 6e 6b 65 72 20 6e  65 65 64 73 20 61 20 73  |linker needs a s|
00002b30  63 72 61 70 20 64 69 72  65 63 74 6f 72 79 20 74  |crap directory t|
00002b40  6f 20 77 6f 72 6b 21 22  29 0d 01 69 0f 20 20 20  |o work!")..i.   |
00002b50  66 6f 75 6e 64 25 3d a3  0d 01 6a 08 20 20 20 cd  |found%=...j.   .|
00002b60  0d 01 6b 0e 20 20 20 3d  66 6f 75 6e 64 25 0d 01  |..k.   =found%..|
00002b70  6c 05 20 0d 01 6d 04 0d  01 6e 1c f4 20 3d 3d 3d  |l. ..m...n.. ===|
00002b80  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00002b90  3d 3d 3d 0d 01 6f 0d f4  20 34 2e 20 57 69 6d 70  |===..o.. 4. Wimp|
00002ba0  0d 01 70 1c f4 20 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |..p.. ==========|
00002bb0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 0d 01 71 04  |============..q.|
00002bc0  0d 01 72 0f f4 20 34 2e  31 20 4d 65 6e 75 73 0d  |..r.. 4.1 Menus.|
00002bd0  01 73 13 f4 20 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |.s.. ===========|
00002be0  3d 3d 0d 01 74 04 0d 01  75 1d dd 20 a4 57 69 6d  |==..t...u.. .Wim|
00002bf0  70 5f 4d 65 6e 75 43 72  65 61 74 65 28 6d 65 6e  |p_MenuCreate(men|
00002c00  75 24 29 0d 01 76 27 ea  20 6d 65 6e 75 25 2c 69  |u$)..v'. menu%,i|
00002c10  6e 64 65 78 25 2c 77 69  64 74 68 25 2c 6c 65 6e  |ndex%,width%,len|
00002c20  67 74 68 25 2c 6b 25 2c  73 25 0d 01 77 2e de 20  |gth%,k%,s%..w.. |
00002c30  6d 65 6e 75 25 20 32 38  2b a4 57 69 6d 70 5f 4d  |menu% 28+.Wimp_M|
00002c40  65 6e 75 4e 6f 4f 66 45  6e 74 72 69 65 73 28 6d  |enuNoOfEntries(m|
00002c50  65 6e 75 24 29 2a 32 34  0d 01 78 37 6d 65 6e 75  |enu$)*24..x7menu|
00002c60  25 3f 31 32 3d 37 20 20  20 3a 20 6d 65 6e 75 25  |%?12=7   : menu%|
00002c70  3f 31 33 3d 32 20 20 3a  20 6d 65 6e 75 25 3f 31  |?13=2  : menu%?1|
00002c80  34 3d 37 20 3a 6d 65 6e  75 25 3f 31 35 3d 30 0d  |4=7 :menu%?15=0.|
00002c90  01 79 2b 6d 65 6e 75 25  21 31 36 3d 31 34 30 20  |.y+menu%!16=140 |
00002ca0  3a 20 6d 65 6e 75 25 21  32 30 3d 34 34 20 3a 20  |: menu%!20=44 : |
00002cb0  6d 65 6e 75 25 21 32 34  3d 30 0d 01 7a 13 69 6e  |menu%!24=0..z.in|
00002cc0  64 65 78 25 3d 6d 65 6e  75 25 2b 32 38 0d 01 7b  |dex%=menu%+28..{|
00002cd0  20 24 6d 65 6e 75 25 3d  c0 6d 65 6e 75 24 2c a7  | $menu%=.menu$,.|
00002ce0  6d 65 6e 75 24 2c 22 5c  22 29 2d 31 29 0d 01 7c  |menu$,"\")-1)..||
00002cf0  23 77 69 64 74 68 25 3d  a9 28 c0 6d 65 6e 75 24  |#width%=.(.menu$|
00002d00  2c a7 6d 65 6e 75 24 2c  22 5c 22 29 2d 31 29 29  |,.menu$,"\")-1))|
00002d10  0d 01 7d 24 6d 65 6e 75  24 2b 3d 22 5c 22 20 3a  |..}$menu$+="\" :|
00002d20  20 4d 65 6e 75 5f 4e 6f  4f 66 45 6e 74 72 69 65  | Menu_NoOfEntrie|
00002d30  73 25 3d 30 0d 01 7e 10  c8 95 20 6d 65 6e 75 24  |s%=0..~... menu$|
00002d40  3c 3e 22 22 0d 01 7f 1f  6d 65 6e 75 24 3d c1 6d  |<>""....menu$=.m|
00002d50  65 6e 75 24 2c a7 6d 65  6e 75 24 2c 22 5c 22 29  |enu$,.menu$,"\")|
00002d60  2b 31 29 0d 01 80 0e c8  8e 20 6d 65 6e 75 24 20  |+1)...... menu$ |
00002d70  ca 0d 01 81 09 20 c9 20  22 22 0d 01 82 08 20 7f  |..... . "".... .|
00002d80  20 3a 0d 01 83 31 20 20  21 69 6e 64 65 78 25 3d  | :...1  !index%=|
00002d90  30 20 3a 20 69 6e 64 65  78 25 21 34 3d 2d 31 20  |0 : index%!4=-1 |
00002da0  3a 20 69 6e 64 65 78 25  21 38 3d 26 37 30 30 30  |: index%!8=&7000|
00002db0  30 32 31 0d 01 84 1b 20  20 6c 65 6e 67 74 68 25  |021....  length%|
00002dc0  3d a7 6d 65 6e 75 24 2c  22 5c 22 29 2d 31 0d 01  |=.menu$,"\")-1..|
00002dd0  85 1e 20 20 6b 25 3d a7  c0 6d 65 6e 75 24 2c 6c  |..  k%=..menu$,l|
00002de0  65 6e 67 74 68 25 29 2c  22 3e 22 29 0d 01 86 0d  |ength%),">")....|
00002df0  20 20 c8 8e 20 6b 25 20  ca 0d 01 87 0a 20 20 20  |  .. k% .....   |
00002e00  c9 20 30 0d 01 88 08 20  20 20 7f 0d 01 89 25 20  |. 0....   ....% |
00002e10  20 20 20 73 25 3d a0 28  c1 6d 65 6e 75 24 2c 6b  |   s%=.(.menu$,k|
00002e20  25 2b 31 2c 6c 65 6e 67  74 68 25 2d 6b 25 29 29  |%+1,length%-k%))|
00002e30  0d 01 8a 13 20 20 20 20  69 6e 64 65 78 25 21 34  |....    index%!4|
00002e40  3d 73 25 0d 01 8b 14 20  20 20 20 6c 65 6e 67 74  |=s%....    lengt|
00002e50  68 25 3d 6b 25 2d 31 0d  01 8c 07 20 20 cb 0d 01  |h%=k%-1....  ...|
00002e60  8d 22 20 20 24 28 69 6e  64 65 78 25 2b 31 32 29  |."  $(index%+12)|
00002e70  3d c0 6d 65 6e 75 24 2c  6c 65 6e 67 74 68 25 29  |=.menu$,length%)|
00002e80  0d 01 8e 27 20 20 e7 20  6c 65 6e 67 74 68 25 3e  |...'  . length%>|
00002e90  77 69 64 74 68 25 20 8c  20 77 69 64 74 68 25 3d  |width% . width%=|
00002ea0  6c 65 6e 67 74 68 25 0d  01 8f 10 20 20 69 6e 64  |length%....  ind|
00002eb0  65 78 25 2b 3d 32 34 0d  01 90 05 cb 0d 01 91 05  |ex%+=24.........|
00002ec0  ce 0d 01 92 1a 6d 65 6e  75 25 21 31 36 3d 31 36  |.....menu%!16=16|
00002ed0  2a 28 77 69 64 74 68 25  2b 31 29 0d 01 93 28 69  |*(width%+1)...(i|
00002ee0  6e 64 65 78 25 21 2d 32  34 3d 69 6e 64 65 78 25  |ndex%!-24=index%|
00002ef0  21 2d 32 34 20 84 20 26  38 30 20 3a 20 3d 6d 65  |!-24 . &80 : =me|
00002f00  6e 75 25 0d 01 94 05 3a  0d 01 95 22 dd 20 a4 57  |nu%....:...". .W|
00002f10  69 6d 70 5f 4d 65 6e 75  4e 6f 4f 66 45 6e 74 72  |imp_MenuNoOfEntr|
00002f20  69 65 73 28 6d 65 6e 75  24 29 0d 01 96 1a ea 20  |ies(menu$)..... |
00002f30  6e 25 20 2c 6a 25 20 3a  20 6e 25 3d 30 20 3a 20  |n% ,j% : n%=0 : |
00002f40  6a 25 3d 30 0d 01 97 05  f5 0d 01 98 17 6a 25 3d  |j%=0.........j%=|
00002f50  a7 6d 65 6e 75 24 2c 22  5c 22 2c 6a 25 2b 31 29  |.menu$,"\",j%+1)|
00002f60  0d 01 99 13 e7 20 6a 25  3c 3e 30 20 8c 20 6e 25  |..... j%<>0 . n%|
00002f70  2b 3d 31 0d 01 9a 0a fd  20 6a 25 3d 30 0d 01 9b  |+=1..... j%=0...|
00002f80  07 3d 6e 25 0d 01 9c 05  3a 0d 01 9d 1f dd 20 f2  |.=n%....:..... .|
00002f90  57 69 6d 70 5f 4d 65 6e  75 50 6f 70 55 70 42 61  |Wimp_MenuPopUpBa|
00002fa0  72 28 78 25 2c 79 25 29  0d 01 9e 0f ea 20 6e 25  |r(x%,y%)..... n%|
00002fb0  20 3a 20 6e 25 3d 30 0d  01 9f 2b c8 95 20 28 28  | : n%=0...+.. ((|
00002fc0  42 61 72 5f 4d 65 6e 75  25 21 28 32 38 2b 6e 25  |Bar_Menu%!(28+n%|
00002fd0  2a 32 34 29 29 80 25 31  30 30 30 30 30 30 30 29  |*24)).%10000000)|
00002fe0  3d 30 0d 01 a0 09 6e 25  2b 3d 31 0d 01 a1 05 ce  |=0....n%+=1.....|
00002ff0  0d 01 a2 32 c8 99 20 22  57 69 6d 70 5f 43 72 65  |...2.. "Wimp_Cre|
00003000  61 74 65 4d 65 6e 75 22  2c 2c 42 61 72 5f 4d 65  |ateMenu",,Bar_Me|
00003010  6e 75 25 2c 78 25 2d 36  34 2c 39 36 2b 6e 25 2a  |nu%,x%-64,96+n%*|
00003020  34 34 0d 01 a3 13 6d 65  6e 75 25 3d 42 61 72 5f  |44....menu%=Bar_|
00003030  4d 65 6e 75 25 0d 01 a4  05 e1 0d 01 a5 05 3a 0d  |Menu%.........:.|
00003040  01 a6 22 dd 20 f2 57 69  6d 70 5f 4d 65 6e 75 50  |..". .Wimp_MenuP|
00003050  6f 70 55 70 28 4d 65 6e  75 25 2c 78 25 2c 79 25  |opUp(Menu%,x%,y%|
00003060  29 0d 01 a7 0f 6d 65 6e  75 25 3d 4d 65 6e 75 25  |)....menu%=Menu%|
00003070  0d 01 a8 2b c8 99 20 22  57 69 6d 70 5f 43 72 65  |...+.. "Wimp_Cre|
00003080  61 74 65 4d 65 6e 75 22  2c 2c 6d 65 6e 75 25 2c  |ateMenu",,menu%,|
00003090  78 25 2d 36 34 2c 79 25  2b 32 30 0d 01 a9 05 e1  |x%-64,y%+20.....|
000030a0  0d 01 aa 05 3a 0d 01 ab  15 dd 20 f2 57 69 6d 70  |....:..... .Wimp|
000030b0  5f 4d 65 6e 75 43 6c 6f  73 65 0d 01 ac 1b c8 99  |_MenuClose......|
000030c0  20 22 57 69 6d 70 5f 43  72 65 61 74 65 4d 65 6e  | "Wimp_CreateMen|
000030d0  75 22 2c 2d 31 0d 01 ad  05 e1 0d 01 ae 05 3a 0d  |u",-1.........:.|
000030e0  01 af 29 dd 20 f2 57 69  6d 70 5f 4d 65 6e 75 47  |..). .Wimp_MenuG|
000030f0  6c 75 65 28 6d 65 6e 75  31 25 2c 69 74 65 6d 25  |lue(menu1%,item%|
00003100  2c 6d 65 6e 75 32 25 29  0d 01 b0 1e 6d 65 6e 75  |,menu2%)....menu|
00003110  31 25 21 28 38 2b 69 74  65 6d 25 2a 32 34 29 3d  |1%!(8+item%*24)=|
00003120  6d 65 6e 75 32 25 0d 01  b1 05 e1 0d 01 b2 04 0d  |menu2%..........|
00003130  01 b3 11 f4 20 34 2e 32  20 53 70 72 69 74 65 73  |.... 4.2 Sprites|
00003140  0d 01 b4 11 f4 20 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |..... ==========|
00003150  3d 0d 01 b5 04 0d 01 b6  21 dd 20 a4 57 69 6d 70  |=.......!. .Wimp|
00003160  5f 53 70 72 69 74 65 4c  6f 61 64 28 70 61 74 68  |_SpriteLoad(path|
00003170  6e 61 6d 65 24 29 0d 01  b7 14 ea 20 53 25 2c 54  |name$)..... S%,T|
00003180  25 2c 73 70 72 69 74 65  73 25 0d 01 b8 22 53 25  |%,sprites%..."S%|
00003190  3d 8e 28 70 61 74 68 6e  61 6d 65 24 29 3a 54 25  |=.(pathname$):T%|
000031a0  3d a2 23 53 25 2b 34 3a  d9 23 53 25 0d 01 b9 1c  |=.#S%+4:.#S%....|
000031b0  de 20 73 70 72 69 74 65  73 25 20 54 25 2c 73 70  |. sprites% T%,sp|
000031c0  6e 61 6d 65 25 20 31 32  0d 01 ba 1d 21 73 70 72  |name% 12....!spr|
000031d0  69 74 65 73 25 3d 54 25  3a 73 70 72 69 74 65 73  |ites%=T%:sprites|
000031e0  25 21 38 3d 30 0d 01 bb  21 c8 99 22 4f 53 5f 53  |%!8=0...!.."OS_S|
000031f0  70 72 69 74 65 4f 70 22  2c 26 31 30 39 2c 73 70  |priteOp",&109,sp|
00003200  72 69 74 65 73 25 0d 01  bc 2b c8 99 22 4f 53 5f  |rites%...+.."OS_|
00003210  53 70 72 69 74 65 4f 70  22 2c 26 31 30 41 2c 73  |SpriteOp",&10A,s|
00003220  70 72 69 74 65 73 25 2c  70 61 74 68 6e 61 6d 65  |prites%,pathname|
00003230  24 0d 01 bd 0d 3d 73 70  72 69 74 65 73 25 0d 01  |$....=sprites%..|
00003240  be 04 0d 01 bf 11 f4 20  34 2e 33 20 57 69 6e 64  |....... 4.3 Wind|
00003250  6f 77 73 0d 01 c0 11 f4  20 3d 3d 3d 3d 3d 3d 3d  |ows..... =======|
00003260  3d 3d 3d 3d 0d 01 c1 04  0d 01 c2 1f dd 20 a4 57  |====......... .W|
00003270  69 6d 70 5f 57 69 6e 64  6f 77 4c 6f 61 64 28 77  |imp_WindowLoad(w|
00003280  69 6e 64 6f 77 24 29 0d  01 c3 39 3d a4 57 69 6d  |indow$)...9=.Wim|
00003290  70 5f 57 69 6e 64 6f 77  4c 6f 61 64 46 72 6f 6d  |p_WindowLoadFrom|
000032a0  28 77 69 6e 64 6f 77 24  2c 22 3c 4f 62 65 79 24  |(window$,"<Obey$|
000032b0  44 69 72 3e 2e 54 65 6d  70 6c 61 74 65 73 22 29  |Dir>.Templates")|
000032c0  0d 01 c4 05 3a 0d 01 c5  2d dd 20 a4 57 69 6d 70  |....:...-. .Wimp|
000032d0  5f 57 69 6e 64 6f 77 4c  6f 61 64 46 72 6f 6d 28  |_WindowLoadFrom(|
000032e0  77 69 6e 64 6f 77 24 2c  74 65 6d 70 6c 61 74 65  |window$,template|
000032f0  24 29 0d 01 c6 08 ea 20  63 25 0d 01 c7 25 c8 99  |$)..... c%...%..|
00003300  20 22 57 69 6d 70 5f 4f  70 65 6e 54 65 6d 70 6c  | "Wimp_OpenTempl|
00003310  61 74 65 22 2c 2c 74 65  6d 70 6c 61 74 65 24 0d  |ate",,template$.|
00003320  01 c8 4b c8 99 20 22 57  69 6d 70 5f 4c 6f 61 64  |..K.. "Wimp_Load|
00003330  54 65 6d 70 6c 61 74 65  22 2c 2c 77 69 6d 70 25  |Template",,wimp%|
00003340  2c 69 63 6f 6e 73 25 2c  69 63 6f 6e 5f 6d 65 6d  |,icons%,icon_mem|
00003350  6f 72 79 25 2c 2c 77 69  6e 64 6f 77 24 2c 30 20  |ory%,,window$,0 |
00003360  b8 20 2c 2c 69 63 6f 6e  73 25 0d 01 c9 26 c8 99  |. ,,icons%...&..|
00003370  20 22 57 69 6d 70 5f 43  72 65 61 74 65 57 69 6e  | "Wimp_CreateWin|
00003380  64 6f 77 22 2c 2c 77 69  6d 70 25 20 b8 20 63 25  |dow",,wimp% . c%|
00003390  0d 01 ca 1b c8 99 20 22  57 69 6d 70 5f 43 6c 6f  |...... "Wimp_Clo|
000033a0  73 65 54 65 6d 70 6c 61  74 65 22 0d 01 cb 07 3d  |seTemplate"....=|
000033b0  63 25 0d 01 cc 05 3a 0d  01 cd 25 dd 20 f2 57 69  |c%....:...%. .Wi|
000033c0  6d 70 5f 57 69 6e 64 6f  77 42 72 69 6e 67 54 6f  |mp_WindowBringTo|
000033d0  54 6f 70 28 77 69 6e 64  6f 77 25 29 0d 01 ce 12  |Top(window%)....|
000033e0  21 77 69 6d 70 25 3d 77  69 6e 64 6f 77 25 0d 01  |!wimp%=window%..|
000033f0  cf 23 c8 99 20 22 57 69  6d 70 5f 47 65 74 57 69  |.#.. "Wimp_GetWi|
00003400  6e 64 6f 77 53 74 61 74  65 22 2c 2c 77 69 6d 70  |ndowState",,wimp|
00003410  25 0d 01 d0 0f 77 69 6d  70 25 21 32 38 3d 2d 31  |%....wimp%!28=-1|
00003420  0d 01 d1 1f c8 99 20 22  57 69 6d 70 5f 4f 70 65  |...... "Wimp_Ope|
00003430  6e 57 69 6e 64 6f 77 22  2c 2c 77 69 6d 70 25 0d  |nWindow",,wimp%.|
00003440  01 d2 05 e1 0d 01 d3 04  0d 01 d4 0f f4 20 34 2e  |............. 4.|
00003450  34 20 49 63 6f 6e 73 0d  01 d5 0f f4 20 3d 3d 3d  |4 Icons..... ===|
00003460  3d 3d 3d 3d 3d 3d 0d 01  d6 04 0d 01 d7 1c dd 20  |======......... |
00003470  a4 57 69 6d 70 5f 49 63  6f 6e 42 61 72 28 53 70  |.Wimp_IconBar(Sp|
00003480  72 69 74 65 24 29 0d 01  d8 0b ea 20 69 63 6f 6e  |rite$)..... icon|
00003490  25 0d 01 d9 0e 77 69 6d  70 25 21 30 3d 2d 31 0d  |%....wimp%!0=-1.|
000034a0  01 da 1d 77 69 6d 70 25  21 34 3d 30 20 20 20 20  |...wimp%!4=0    |
000034b0  20 3a 20 77 69 6d 70 25  21 38 3d 30 0d 01 db 25  | : wimp%!8=0...%|
000034c0  77 69 6d 70 25 21 31 32  3d 36 38 2b 31 36 20 20  |wimp%!12=68+16  |
000034d0  20 3a 20 77 69 6d 70 25  21 31 36 3d 36 38 2b 33  | : wimp%!16=68+3|
000034e0  32 0d 01 dc 12 77 69 6d  70 25 21 32 30 3d 26 33  |2....wimp%!20=&3|
000034f0  30 30 32 0d 01 dd 17 24  28 77 69 6d 70 25 2b 32  |002....$(wimp%+2|
00003500  34 29 3d 53 70 72 69 74  65 24 0d 01 de 27 c8 99  |4)=Sprite$...'..|
00003510  20 22 57 69 6d 70 5f 43  72 65 61 74 65 49 63 6f  | "Wimp_CreateIco|
00003520  6e 22 2c 2c 77 69 6d 70  25 20 b8 20 69 63 6f 6e  |n",,wimp% . icon|
00003530  25 0d 01 df 0a 3d 69 63  6f 6e 25 0d 01 e0 05 3a  |%....=icon%....:|
00003540  0d 01 e1 2c dd 20 f2 57  69 6d 70 5f 49 63 6f 6e  |...,. .Wimp_Icon|
00003550  50 75 74 54 65 78 74 28  77 69 6e 64 6f 77 25 2c  |PutText(window%,|
00003560  69 63 6f 6e 25 2c 74 65  78 74 24 29 0d 01 e2 23  |icon%,text$)...#|
00003570  77 69 6d 70 25 21 30 3d  77 69 6e 64 6f 77 25 20  |wimp%!0=window% |
00003580  3a 20 77 69 6d 70 25 21  34 3d 69 63 6f 6e 25 0d  |: wimp%!4=icon%.|
00003590  01 e3 21 c8 99 20 22 57  69 6d 70 5f 47 65 74 49  |..!.. "Wimp_GetI|
000035a0  63 6f 6e 53 74 61 74 65  22 2c 2c 77 69 6d 70 25  |conState",,wimp%|
000035b0  0d 01 e4 37 e7 20 28 28  77 69 6d 70 25 21 32 34  |...7. ((wimp%!24|
000035c0  29 20 80 20 26 31 30 30  29 3d 30 20 85 20 31 2c  |) . &100)=0 . 1,|
000035d0  22 49 63 6f 6e 20 69 73  6e 27 74 20 69 6e 64 69  |"Icon isn't indi|
000035e0  72 65 63 74 65 64 22 0d  01 e5 15 24 28 77 69 6d  |rected"....$(wim|
000035f0  70 25 21 32 38 29 3d 74  65 78 74 24 0d 01 e6 23  |p%!28)=text$...#|
00003600  77 69 6d 70 25 21 30 3d  77 69 6e 64 6f 77 25 20  |wimp%!0=window% |
00003610  3a 20 77 69 6d 70 25 21  34 3d 69 63 6f 6e 25 0d  |: wimp%!4=icon%.|
00003620  01 e7 1a 77 69 6d 70 25  21 38 3d 30 20 3a 20 77  |...wimp%!8=0 : w|
00003630  69 6d 70 25 21 31 32 3d  30 0d 01 e8 21 c8 99 20  |imp%!12=0...!.. |
00003640  22 57 69 6d 70 5f 53 65  74 49 63 6f 6e 53 74 61  |"Wimp_SetIconSta|
00003650  74 65 22 2c 2c 77 69 6d  70 25 0d 01 e9 05 e1 0d  |te",,wimp%......|
00003660  01 ea 05 3a 0d 01 eb 23  dd 20 a4 57 69 6d 70 5f  |...:...#. .Wimp_|
00003670  49 63 6f 6e 54 65 78 74  28 77 69 6e 64 6f 77 25  |IconText(window%|
00003680  2c 69 63 6f 6e 25 29 0d  01 ec 23 77 69 6d 70 25  |,icon%)...#wimp%|
00003690  21 30 3d 77 69 6e 64 6f  77 25 20 3a 20 77 69 6d  |!0=window% : wim|
000036a0  70 25 21 34 3d 69 63 6f  6e 25 0d 01 ed 21 c8 99  |p%!4=icon%...!..|
000036b0  20 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  | "Wimp_GetIconSt|
000036c0  61 74 65 22 2c 2c 77 69  6d 70 25 0d 01 ee 37 e7  |ate",,wimp%...7.|
000036d0  20 28 28 77 69 6d 70 25  21 32 34 29 20 80 20 26  | ((wimp%!24) . &|
000036e0  31 30 30 29 3d 30 20 85  20 31 2c 22 49 63 6f 6e  |100)=0 . 1,"Icon|
000036f0  20 69 73 6e 27 74 20 69  6e 64 69 72 65 63 74 65  | isn't indirecte|
00003700  64 22 0d 01 ef 10 3d 24  28 77 69 6d 70 25 21 32  |d"....=$(wimp%!2|
00003710  38 29 0d 01 f0 05 3a 0d  01 f1 25 dd 20 f2 57 69  |8)....:...%. .Wi|
00003720  6d 70 5f 49 63 6f 6e 53  65 6c 65 63 74 28 77 69  |mp_IconSelect(wi|
00003730  6e 64 6f 77 25 2c 69 63  6f 6e 25 29 0d 01 f2 23  |ndow%,icon%)...#|
00003740  77 69 6d 70 25 21 30 3d  77 69 6e 64 6f 77 25 20  |wimp%!0=window% |
00003750  3a 20 77 69 6d 70 25 21  34 3d 69 63 6f 6e 25 0d  |: wimp%!4=icon%.|
00003760  01 f3 21 c8 99 20 22 57  69 6d 70 5f 47 65 74 49  |..!.. "Wimp_GetI|
00003770  63 6f 6e 53 74 61 74 65  22 2c 2c 77 69 6d 70 25  |conState",,wimp%|
00003780  0d 01 f4 22 77 69 6d 70  25 21 38 3d 31 3c 3c 32  |..."wimp%!8=1<<2|
00003790  31 20 3a 20 77 69 6d 70  25 21 31 32 3d 31 3c 3c  |1 : wimp%!12=1<<|
000037a0  32 31 0d 01 f5 21 c8 99  20 22 57 69 6d 70 5f 53  |21...!.. "Wimp_S|
000037b0  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 77 69  |etIconState",,wi|
000037c0  6d 70 25 0d 01 f6 05 e1  0d 01 f7 05 3a 0d 01 f8  |mp%.........:...|
000037d0  2b dd 20 f2 57 69 6d 70  5f 49 63 6f 6e 43 61 72  |+. .Wimp_IconCar|
000037e0  65 74 28 77 69 6e 64 6f  77 25 2c 69 63 6f 6e 25  |et(window%,icon%|
000037f0  2c 63 68 61 72 73 25 29  0d 01 f9 38 c8 99 20 22  |,chars%)...8.. "|
00003800  57 69 6d 70 5f 53 65 74  43 61 72 65 74 50 6f 73  |Wimp_SetCaretPos|
00003810  69 74 69 6f 6e 22 2c 77  69 6e 64 6f 77 25 2c 69  |ition",window%,i|
00003820  63 6f 6e 25 2c 2c 2c 2d  31 2c 63 68 61 72 73 25  |con%,,,-1,chars%|
00003830  0d 01 fa 05 e1 0d 01 fb  04 0d 01 fc 17 f4 20 34  |.............. 4|
00003840  2e 35 20 4d 69 73 63 65  6c 6c 61 6e 65 6f 75 73  |.5 Miscellaneous|
00003850  0d 01 fd 17 f4 20 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |..... ==========|
00003860  3d 3d 3d 3d 3d 3d 3d 0d  01 fe 04 0d 01 ff 22 dd  |=======.......".|
00003870  20 f2 57 69 6d 70 5f 41  6c 65 72 74 28 74 69 74  | .Wimp_Alert(tit|
00003880  6c 65 24 2c 6d 65 73 73  61 67 65 24 29 0d 02 00  |le$,message$)...|
00003890  0d 77 69 6d 70 25 21 30  3d 30 0d 02 01 1a 24 28  |.wimp%!0=0....$(|
000038a0  77 69 6d 70 25 2b 34 29  3d 6d 65 73 73 61 67 65  |wimp%+4)=message|
000038b0  24 2b bd 30 0d 02 02 2b  c8 99 20 22 57 69 6d 70  |$+.0...+.. "Wimp|
000038c0  5f 52 65 70 6f 72 74 45  72 72 6f 72 22 2c 77 69  |_ReportError",wi|
000038d0  6d 70 25 2c 31 3c 3c 34  2c 74 69 74 6c 65 24 0d  |mp%,1<<4,title$.|
000038e0  02 03 05 e1 0d 02 04 04  0d 02 05 23 dd 20 a4 57  |...........#. .W|
000038f0  69 6d 70 5f 47 65 74 46  69 6c 65 46 72 6f 6d 50  |imp_GetFileFromP|
00003900  61 74 68 6e 61 6d 65 28  66 24 29 0d 02 06 11 c8  |athname(f$).....|
00003910  8e 20 a7 66 24 2c 22 2e  22 29 20 ca 0d 02 07 10  |. .f$,".") .....|
00003920  20 c9 20 30 20 20 20 20  3a 3d 66 24 0d 02 08 37  | . 0    :=f$...7|
00003930  20 7f 20 3a 3d a4 57 69  6d 70 5f 47 65 74 46 69  | . :=.Wimp_GetFi|
00003940  6c 65 46 72 6f 6d 50 61  74 68 6e 61 6d 65 28 c2  |leFromPathname(.|
00003950  66 24 2c a9 28 66 24 29  2d a7 66 24 2c 22 2e 22  |f$,.(f$)-.f$,"."|
00003960  29 29 29 0d 02 09 05 cb  0d 02 0a 04 0d 02 0b 26  |)))............&|
00003970  dd 20 a4 57 69 6d 70 5f  47 65 74 53 74 72 69 6e  |. .Wimp_GetStrin|
00003980  67 41 74 41 64 64 72 65  73 73 28 61 72 72 61 79  |gAtAddress(array|
00003990  25 29 0d 02 0c 0d ea 73  24 3a 73 24 3d 22 22 0d  |%).....s$:s$="".|
000039a0  02 0d 3c c8 95 28 3f 61  72 72 61 79 25 3c 3e 31  |..<..(?array%<>1|
000039b0  33 29 80 28 3f 61 72 72  61 79 25 3c 3e 30 29 3a  |3).(?array%<>0):|
000039c0  73 24 2b 3d bd 28 3f 61  72 72 61 79 25 29 3a 61  |s$+=.(?array%):a|
000039d0  72 72 61 79 25 2b 3d 31  3a ce 3a 0d 02 0e 07 3d  |rray%+=1:.:....=|
000039e0  73 24 0d 02 0f 04 0d 02  10 1d dd 20 a4 46 69 6c  |s$......... .Fil|
000039f0  65 5f 45 78 69 73 74 73  28 70 61 74 68 6e 61 6d  |e_Exists(pathnam|
00003a00  65 24 29 0d 02 11 0c ea  20 66 6f 75 6e 64 25 0d  |e$)..... found%.|
00003a10  02 12 27 c8 99 20 22 58  4f 53 5f 46 69 6c 65 22  |..'.. "XOS_File"|
00003a20  2c 31 33 2c 70 61 74 68  6e 61 6d 65 24 20 b8 20  |,13,pathname$ . |
00003a30  66 6f 75 6e 64 25 0d 02  13 0c 3d 2d 66 6f 75 6e  |found%....=-foun|
00003a40  64 25 0d 02 14 04 0d 02  15 05 3a 0d 02 16 4e f4  |d%........:...N.|
00003a50  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00003a60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003a90  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 02 17 0e f4 20 20  |---------.....  |
00003aa0  35 2e 20 53 41 56 45 0d  02 18 4e f4 20 2d 2d 2d  |5. SAVE...N. ---|
00003ab0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003af0  2d 2d 2d 2d 2d 0d 02 19  1e f4 20 3e 20 4c 69 62  |-----..... > Lib|
00003b00  72 61 72 79 3a 52 65 73  6f 75 72 63 65 73 2e 53  |rary:Resources.S|
00003b10  61 76 65 0d 02 1a 05 3a  0d 02 1b 1b dd 20 a4 57  |ave....:..... .W|
00003b20  69 6d 70 5f 50 6f 6c 6c  53 61 76 65 28 6d 61 73  |imp_PollSave(mas|
00003b30  6b 25 29 0d 02 1c 14 ea  20 64 72 61 67 5f 61 5f  |k%)..... drag_a_|
00003b40  73 70 72 69 74 65 25 0d  02 1d 28 20 c8 99 20 22  |sprite%...( .. "|
00003b50  57 69 6d 70 5f 50 6f 6c  6c 22 2c 6d 61 73 6b 25  |Wimp_Poll",mask%|
00003b60  2c 77 69 6d 70 25 20 b8  20 65 76 65 6e 74 25 0d  |,wimp% . event%.|
00003b70  02 1e 10 20 c8 8e 20 65  76 65 6e 74 25 20 ca 0d  |... .. event% ..|
00003b80  02 1f 09 20 20 c9 20 36  0d 02 20 1f 20 20 f4 2e  |...  . 6.. .  ..|
00003b90  2e 2e 43 6c 69 63 6b 20  6f 6e 20 4d 6f 75 73 65  |..Click on Mouse|
00003ba0  20 62 75 74 74 6f 6e 0d  02 21 3a 20 20 20 69 63  | button..!:   ic|
00003bb0  6f 6e 25 3d 77 69 6d 70  25 21 31 36 20 3a 20 77  |on%=wimp%!16 : w|
00003bc0  69 6e 64 6f 77 25 3d 77  69 6d 70 25 21 31 32 20  |indow%=wimp%!12 |
00003bd0  3a 20 62 75 74 74 6f 6e  25 3d 77 69 6d 70 25 21  |: button%=wimp%!|
00003be0  38 0d 02 22 20 20 20 20  e7 20 a4 44 65 66 69 6e  |8.."    . .Defin|
00003bf0  65 5f 53 61 76 65 28 77  69 6e 64 6f 77 25 29 20  |e_Save(window%) |
00003c00  8c 0d 02 23 14 20 20 20  20 20 20 c8 8e 20 69 63  |...#.      .. ic|
00003c10  6f 6e 25 20 ca 0d 02 24  2b 20 20 20 20 20 20 20  |on% ...$+       |
00003c20  c9 20 30 20 3a 20 f4 2e  2e 2e 44 72 61 67 20 20  |. 0 : ....Drag  |
00003c30  20 20 20 20 20 3a 20 65  76 65 6e 74 25 3d 2d 31  |     : event%=-1|
00003c40  0d 02 25 3f 20 20 20 20  20 20 20 20 e7 20 62 75  |..%?        . bu|
00003c50  74 74 6f 6e 25 20 80 20  26 35 30 20 8c 20 f2 57  |tton% . &50 . .W|
00003c60  69 6d 70 5f 50 6f 6c 6c  53 61 76 65 44 72 61 67  |imp_PollSaveDrag|
00003c70  28 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |(window%,icon%).|
00003c80  02 26 2b 20 20 20 20 20  20 20 c9 20 32 20 3a 20  |.&+       . 2 : |
00003c90  f4 2e 2e 2e 4f 4b 20 62  75 74 74 6f 6e 20 20 3a  |....OK button  :|
00003ca0  20 65 76 65 6e 74 25 3d  2d 31 0d 02 27 39 20 20  | event%=-1..'9  |
00003cb0  20 20 20 20 20 20 e7 20  62 75 74 74 6f 6e 25 20  |      . button% |
00003cc0  80 20 20 20 35 20 8c 20  f2 57 69 6d 70 5f 50 6f  |.   5 . .Wimp_Po|
00003cd0  6c 6c 53 61 76 65 46 69  6c 65 28 77 69 6e 64 6f  |llSaveFile(windo|
00003ce0  77 25 29 0d 02 28 0b 20  20 20 20 20 20 cb 0d 02  |w%)..(.      ...|
00003cf0  29 08 20 20 20 cd 0d 02  2a 08 20 20 c9 37 0d 02  |).   ...*.  .7..|
00003d00  2b 19 20 20 20 f4 2e 2e  2e 44 72 61 67 20 68 61  |+.   ....Drag ha|
00003d10  73 20 65 6e 64 65 64 0d  02 2c 2d 20 20 20 c8 99  |s ended..,-   ..|
00003d20  20 22 4f 53 5f 42 79 74  65 22 2c 31 36 31 2c 32  | "OS_Byte",161,2|
00003d30  38 20 b8 20 2c 2c 64 72  61 67 5f 61 5f 73 70 72  |8 . ,,drag_a_spr|
00003d40  69 74 65 25 0d 02 2d 2c  20 20 20 64 72 61 67 5f  |ite%..-,   drag_|
00003d50  61 5f 73 70 72 69 74 65  25 3d 28 64 72 61 67 5f  |a_sprite%=(drag_|
00003d60  61 5f 73 70 72 69 74 65  25 20 80 20 32 29 3d 32  |a_sprite% . 2)=2|
00003d70  0d 02 2e 2f 20 20 20 e7  20 64 72 61 67 5f 61 5f  |.../   . drag_a_|
00003d80  73 70 72 69 74 65 25 20  8c 20 c8 99 20 22 44 72  |sprite% . .. "Dr|
00003d90  61 67 41 53 70 72 69 74  65 5f 53 74 6f 70 22 0d  |agASprite_Stop".|
00003da0  02 2f 1e 20 20 20 e7 20  a4 44 65 66 69 6e 65 5f  |./.   . .Define_|
00003db0  53 61 76 65 28 73 61 76  65 25 29 20 8c 0d 02 30  |Save(save%) ...0|
00003dc0  13 20 20 20 20 20 20 65  76 65 6e 74 25 3d 2d 31  |.      event%=-1|
00003dd0  0d 02 31 1f 20 20 20 20  20 20 f2 57 69 6d 70 50  |..1.      .WimpP|
00003de0  6f 6c 6c 5f 53 61 76 65  4d 65 73 73 61 67 65 0d  |oll_SaveMessage.|
00003df0  02 32 08 20 20 20 cd 0d  02 33 08 20 20 c9 38 0d  |.2.   ...3.  .8.|
00003e00  02 34 32 20 20 20 77 69  6e 64 6f 77 25 3d 77 69  |.42   window%=wi|
00003e10  6d 70 25 21 30 3a 69 63  6f 6e 25 3d 77 69 6d 70  |mp%!0:icon%=wimp|
00003e20  25 21 34 3a 6b 65 79 25  3d 77 69 6d 70 25 21 32  |%!4:key%=wimp%!2|
00003e30  34 0d 02 35 20 20 20 20  e7 20 a4 44 65 66 69 6e  |4..5    . .Defin|
00003e40  65 5f 53 61 76 65 28 77  69 6e 64 6f 77 25 29 20  |e_Save(window%) |
00003e50  8c 0d 02 36 13 20 20 20  20 20 20 65 76 65 6e 74  |...6.      event|
00003e60  25 3d 2d 31 0d 02 37 25  20 20 20 20 20 20 f2 57  |%=-1..7%      .W|
00003e70  69 6d 70 5f 50 6f 6c 6c  53 61 76 65 46 69 6c 65  |imp_PollSaveFile|
00003e80  28 77 69 6e 64 6f 77 25  29 0d 02 38 08 20 20 20  |(window%)..8.   |
00003e90  cd 0d 02 39 0a 20 20 c9  20 31 32 0d 02 3a 15 20  |...9.  . 12..:. |
00003ea0  20 77 69 6e 64 6f 77 25  3d 77 69 6d 70 25 21 30  | window%=wimp%!0|
00003eb0  0d 02 3b 1f 20 20 e7 20  a4 44 65 66 69 6e 65 5f  |..;.  . .Define_|
00003ec0  53 61 76 65 28 77 69 6e  64 6f 77 25 29 20 8c 0d  |Save(window%) ..|
00003ed0  02 3c 26 20 20 20 66 69  6c 65 24 3d a4 57 69 6d  |.<&   file$=.Wim|
00003ee0  70 5f 49 63 6f 6e 54 65  78 74 28 77 69 6e 64 6f  |p_IconText(windo|
00003ef0  77 25 2c 31 29 0d 02 3d  37 20 20 20 c8 99 20 22  |w%,1)..=7   .. "|
00003f00  57 69 6d 70 5f 53 65 74  43 61 72 65 74 50 6f 73  |Wimp_SetCaretPos|
00003f10  69 74 69 6f 6e 22 2c 77  69 6e 64 6f 77 25 2c 31  |ition",window%,1|
00003f20  2c 2c 2c 2d 31 2c a9 66  69 6c 65 24 0d 02 3e 07  |,,,-1,.file$..>.|
00003f30  20 20 cd 0d 02 3f 0c 20  20 c9 31 37 2c 31 38 0d  |  ...?.  .17,18.|
00003f40  02 40 17 20 20 6d 65 73  73 61 67 65 25 3d 77 69  |.@.  message%=wi|
00003f50  6d 70 25 21 31 36 0d 02  41 15 20 20 20 20 c8 8e  |mp%!16..A.    ..|
00003f60  20 6d 65 73 73 61 67 65  25 20 ca 0d 02 42 26 20  | message% ...B& |
00003f70  20 20 20 20 c9 20 32 20  3a 20 f4 20 44 61 74 61  |    . 2 : . Data|
00003f80  20 53 61 76 65 20 61 63  6b 6e 6f 77 6c 65 64 67  | Save acknowledg|
00003f90  65 0d 02 43 14 20 20 20  20 20 20 20 65 76 65 6e  |e..C.       even|
00003fa0  74 25 3d 2d 31 0d 02 44  33 20 20 20 20 20 20 20  |t%=-1..D3       |
00003fb0  66 69 6c 65 24 3d a4 57  69 6d 70 5f 47 65 74 53  |file$=.Wimp_GetS|
00003fc0  74 72 69 6e 67 41 74 41  64 64 72 65 73 73 28 77  |tringAtAddress(w|
00003fd0  69 6d 70 25 2b 34 34 29  0d 02 45 24 20 20 20 20  |imp%+44)..E$    |
00003fe0  20 20 20 e7 20 66 69 6c  65 24 3c 3e 22 3c 57 69  |   . file$<>"<Wi|
00003ff0  6d 70 24 53 63 72 61 70  3e 22 20 8c 0d 02 46 2d  |mp$Scrap>" ...F-|
00004000  20 20 20 20 20 20 20 20  20 f2 57 69 6d 70 5f 49  |         .Wimp_I|
00004010  63 6f 6e 50 75 74 54 65  78 74 28 73 61 76 65 25  |conPutText(save%|
00004020  2c 31 2c 66 69 6c 65 24  29 0d 02 47 29 20 20 20  |,1,file$)..G)   |
00004030  20 20 20 20 20 20 f2 45  76 65 6e 74 5f 53 61 76  |      .Event_Sav|
00004040  65 46 69 6c 65 28 66 69  6c 65 24 2c 73 61 76 65  |eFile(file$,save|
00004050  25 29 0d 02 48 0c 20 20  20 20 20 20 20 cd 0d 02  |%)..H.       ...|
00004060  49 26 20 20 20 20 20 c9  20 34 20 3a 20 f4 20 44  |I&     . 4 : . D|
00004070  61 74 61 20 4c 6f 61 64  20 41 63 6b 6e 6f 77 6c  |ata Load Acknowl|
00004080  65 64 67 65 0d 02 4a 1a  20 20 20 20 20 c9 20 36  |edge..J.     . 6|
00004090  20 3a 20 f4 20 52 61 6d  20 46 65 74 63 68 0d 02  | : . Ram Fetch..|
000040a0  4b 09 20 20 20 20 cb 0d  02 4c 06 20 cb 0d 02 4d  |K.    ...L. ...M|
000040b0  0b 3d 65 76 65 6e 74 25  0d 02 4e 05 3a 0d 02 4f  |.=event%..N.:..O|
000040c0  21 dd 20 f2 57 69 6d 70  5f 50 6f 6c 6c 53 61 76  |!. .Wimp_PollSav|
000040d0  65 46 69 6c 65 28 77 69  6e 64 6f 77 25 29 0d 02  |eFile(window%)..|
000040e0  50 07 ea 78 24 0d 02 51  1c 20 f4 2e 2e 2e 52 65  |P..x$..Q. ....Re|
000040f0  61 64 20 74 65 78 74 20  69 6e 20 69 63 6f 6e 20  |ad text in icon |
00004100  31 0d 02 52 20 20 77 69  6d 70 25 21 30 3d 77 69  |1..R  wimp%!0=wi|
00004110  6e 64 6f 77 25 20 3a 20  77 69 6d 70 25 21 34 3d  |ndow% : wimp%!4=|
00004120  31 0d 02 53 22 20 c8 99  20 22 57 69 6d 70 5f 47  |1..S" .. "Wimp_G|
00004130  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 77 69  |etIconState",,wi|
00004140  6d 70 25 0d 02 54 38 20  e7 20 28 28 77 69 6d 70  |mp%..T8 . ((wimp|
00004150  25 21 32 34 29 20 80 20  26 31 30 30 29 3d 30 20  |%!24) . &100)=0 |
00004160  85 20 31 2c 22 49 63 6f  6e 20 69 73 6e 27 74 20  |. 1,"Icon isn't |
00004170  69 6e 64 69 72 65 63 74  65 64 22 0d 02 55 13 20  |indirected"..U. |
00004180  78 24 3d 24 28 77 69 6d  70 25 21 32 38 29 0d 02  |x$=$(wimp%!28)..|
00004190  56 12 20 c8 8e 20 a7 78  24 2c 22 2e 22 29 20 ca  |V. .. .x$,".") .|
000041a0  0d 02 57 0d 20 20 c9 20  30 20 20 20 3a 0d 02 58  |..W.  . 0   :..X|
000041b0  52 20 20 20 f2 57 69 6d  70 5f 41 6c 65 72 74 28  |R   .Wimp_Alert(|
000041c0  22 21 4c 69 62 72 61 72  79 22 2c 22 54 6f 20 73  |"!Library","To s|
000041d0  61 76 65 20 66 69 6c 65  2c 20 64 72 61 67 20 74  |ave file, drag t|
000041e0  68 65 20 69 63 6f 6e 20  74 6f 20 61 20 64 69 72  |he icon to a dir|
000041f0  65 63 74 6f 72 79 20 77  69 6e 64 6f 77 22 29 0d  |ectory window").|
00004200  02 59 24 20 20 7f 3a 20  f2 45 76 65 6e 74 5f 53  |.Y$  .: .Event_S|
00004210  61 76 65 46 69 6c 65 28  78 24 2c 77 69 6e 64 6f  |aveFile(x$,windo|
00004220  77 25 29 0d 02 5a 06 20  cb 0d 02 5b 1b 20 c8 99  |w%)..Z. ...[. ..|
00004230  22 57 69 6d 70 5f 43 72  65 61 74 65 4d 65 6e 75  |"Wimp_CreateMenu|
00004240  22 2c 2d 31 0d 02 5c 05  e1 0d 02 5d 05 3a 0d 02  |",-1..\....].:..|
00004250  5e 27 dd 20 f2 57 69 6d  70 5f 50 6f 6c 6c 53 61  |^'. .Wimp_PollSa|
00004260  76 65 44 72 61 67 28 77  69 6e 64 6f 77 25 2c 69  |veDrag(window%,i|
00004270  63 6f 6e 25 29 0d 02 5f  36 ea 20 78 25 2c 79 25  |con%).._6. x%,y%|
00004280  2c 77 78 25 2c 77 79 25  2c 77 58 25 2c 77 59 25  |,wx%,wy%,wX%,wY%|
00004290  2c 78 6f 66 66 25 2c 79  6f 66 66 25 2c 64 72 61  |,xoff%,yoff%,dra|
000042a0  67 5f 61 5f 73 70 72 69  74 65 25 0d 02 60 29 ea  |g_a_sprite%..`).|
000042b0  20 69 63 78 25 2c 69 63  79 25 2c 69 63 58 25 2c  | icx%,icy%,icX%,|
000042c0  69 63 59 25 2c 73 70 72  69 74 65 5f 70 6f 69 6e  |icY%,sprite_poin|
000042d0  74 65 72 25 0d 02 61 04  0d 02 62 35 20 20 21 77  |ter%..a...b5  !w|
000042e0  69 6d 70 25 3d 77 69 6e  64 6f 77 25 20 3a 20 c8  |imp%=window% : .|
000042f0  99 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |."Wimp_GetWindow|
00004300  53 74 61 74 65 22 2c 2c  77 69 6d 70 25 0d 02 63  |State",,wimp%..c|
00004310  3d 20 20 77 78 25 3d 77  69 6d 70 25 21 34 20 3a  |=  wx%=wimp%!4 :|
00004320  20 77 79 25 3d 77 69 6d  70 25 21 38 20 3a 20 77  | wy%=wimp%!8 : w|
00004330  58 25 3d 77 69 6d 70 25  21 31 32 20 3a 20 77 59  |X%=wimp%!12 : wY|
00004340  25 3d 77 69 6d 70 25 21  31 36 0d 02 64 25 20 20  |%=wimp%!16..d%  |
00004350  78 6f 66 66 25 3d 77 69  6d 70 25 21 32 30 20 3a  |xoff%=wimp%!20 :|
00004360  20 79 6f 66 66 25 3d 77  69 6d 70 25 21 32 34 0d  | yoff%=wimp%!24.|
00004370  02 65 21 20 20 78 25 3d  77 78 25 2d 78 6f 66 66  |.e!  x%=wx%-xoff|
00004380  25 20 3a 20 79 25 3d 77  59 25 2d 79 6f 66 66 25  |% : y%=wY%-yoff%|
00004390  0d 02 66 04 0d 02 67 33  20 20 77 69 6d 70 25 21  |..f...g3  wimp%!|
000043a0  34 3d 69 63 6f 6e 25 20  20 3a 20 c8 99 22 57 69  |4=icon%  : .."Wi|
000043b0  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
000043c0  2c 2c 77 69 6d 70 25 0d  02 68 22 20 20 69 63 78  |,,wimp%..h"  icx|
000043d0  25 3d 77 69 6d 70 25 21  38 20 3a 20 69 63 79 25  |%=wimp%!8 : icy%|
000043e0  3d 77 69 6d 70 25 21 31  32 0d 02 69 22 20 20 69  |=wimp%!12..i"  i|
000043f0  63 58 25 3d 77 69 6d 70  25 21 31 36 3a 20 69 63  |cX%=wimp%!16: ic|
00004400  59 25 3d 77 69 6d 70 25  21 32 30 0d 02 6a 04 0d  |Y%=wimp%!20..j..|
00004410  02 6b 2a c8 99 20 22 4f  53 5f 42 79 74 65 22 2c  |.k*.. "OS_Byte",|
00004420  31 36 31 2c 32 38 20 b8  20 2c 2c 64 72 61 67 5f  |161,28 . ,,drag_|
00004430  61 5f 73 70 72 69 74 65  25 0d 02 6c 29 64 72 61  |a_sprite%..l)dra|
00004440  67 5f 61 5f 73 70 72 69  74 65 25 3d 28 64 72 61  |g_a_sprite%=(dra|
00004450  67 5f 61 5f 73 70 72 69  74 65 25 20 80 20 32 29  |g_a_sprite% . 2)|
00004460  3d 32 0d 02 6d 04 0d 02  6e 17 c8 8e 20 64 72 61  |=2..m...n... dra|
00004470  67 5f 61 5f 73 70 72 69  74 65 25 20 ca 0d 02 6f  |g_a_sprite% ...o|
00004480  0a 20 c9 20 b9 20 3a 0d  02 70 1f 20 20 e7 20 28  |. . . :..p.  . (|
00004490  28 77 69 6d 70 25 21 32  34 29 20 80 20 26 31 30  |(wimp%!24) . &10|
000044a0  30 29 3d 30 20 8c 0d 02  71 1a 20 20 20 20 20 73  |0)=0 ...q.     s|
000044b0  70 72 69 74 65 5f 70 6f  69 6e 74 65 72 25 3d 31  |prite_pointer%=1|
000044c0  0d 02 72 1c 20 20 20 20  20 73 70 72 69 74 65 24  |..r.     sprite$|
000044d0  3d 24 28 77 69 6d 70 25  2b 32 38 29 0d 02 73 07  |=$(wimp%+28)..s.|
000044e0  20 20 cc 0d 02 74 21 20  20 20 20 20 73 70 72 69  |  ...t!     spri|
000044f0  74 65 5f 70 6f 69 6e 74  65 72 25 3d 77 69 6d 70  |te_pointer%=wimp|
00004500  25 21 33 32 0d 02 75 1c  20 20 20 20 20 73 70 72  |%!32..u.     spr|
00004510  69 74 65 24 3d 24 28 77  69 6d 70 25 21 32 38 29  |ite$=$(wimp%!28)|
00004520  0d 02 76 07 20 20 cd 0d  02 77 29 20 20 21 77 69  |..v.  ...w)  !wi|
00004530  6d 70 25 20 3d 77 78 25  2b 69 63 78 25 20 3a 20  |mp% =wx%+icx% : |
00004540  77 69 6d 70 25 21 34 3d  77 59 25 2b 69 63 79 25  |wimp%!4=wY%+icy%|
00004550  0d 02 78 2a 20 20 77 69  6d 70 25 21 38 3d 77 78  |..x*  wimp%!8=wx|
00004560  25 2b 69 63 58 25 20 3a  20 77 69 6d 70 25 21 31  |%+icX% : wimp%!1|
00004570  32 3d 77 59 25 2b 69 63  59 25 0d 02 79 43 20 20  |2=wY%+icY%..yC  |
00004580  c8 99 22 44 72 61 67 41  53 70 72 69 74 65 5f 53  |.."DragASprite_S|
00004590  74 61 72 74 22 2c 25 31  31 30 30 30 31 30 31 2c  |tart",%11000101,|
000045a0  73 70 72 69 74 65 5f 70  6f 69 6e 74 65 72 25 2c  |sprite_pointer%,|
000045b0  73 70 72 69 74 65 24 2c  77 69 6d 70 25 0d 02 7a  |sprite$,wimp%..z|
000045c0  06 20 7f 0d 02 7b 20 20  20 21 77 69 6d 70 25 3d  |. ...{   !wimp%=|
000045d0  77 69 6e 64 6f 77 25 20  3a 20 77 69 6d 70 25 21  |window% : wimp%!|
000045e0  34 3d 35 0d 02 7c 26 20  20 77 69 6d 70 25 21 38  |4=5..|&  wimp%!8|
000045f0  3d 78 25 2b 69 63 78 25  3a 77 69 6d 70 25 21 31  |=x%+icx%:wimp%!1|
00004600  32 3d 79 25 2b 69 63 79  25 0d 02 7d 27 20 20 77  |2=y%+icy%..}'  w|
00004610  69 6d 70 25 21 31 36 3d  78 25 2b 69 63 58 25 3a  |imp%!16=x%+icX%:|
00004620  77 69 6d 70 25 21 32 30  3d 79 25 2b 69 63 59 25  |wimp%!20=y%+icY%|
00004630  0d 02 7e 1b 20 20 77 69  6d 70 25 21 32 34 3d 30  |..~.  wimp%!24=0|
00004640  3a 77 69 6d 70 25 21 32  38 3d 30 0d 02 7f 2b 20  |:wimp%!28=0...+ |
00004650  20 77 69 6d 70 25 21 33  32 3d 26 37 46 46 46 46  | wimp%!32=&7FFFF|
00004660  46 46 46 3a 77 69 6d 70  25 21 33 36 3d 26 37 46  |FFF:wimp%!36=&7F|
00004670  46 46 46 46 46 46 0d 02  80 1d 20 20 c8 99 22 57  |FFFFFF....  .."W|
00004680  69 6d 70 5f 44 72 61 67  42 6f 78 22 2c 2c 77 69  |imp_DragBox",,wi|
00004690  6d 70 25 0d 02 81 05 cb  0d 02 82 12 20 73 61 76  |mp%......... sav|
000046a0  65 25 3d 77 69 6e 64 6f  77 25 0d 02 83 05 e1 0d  |e%=window%......|
000046b0  02 84 05 3a 0d 02 85 1b  dd 20 f2 57 69 6d 70 50  |...:..... .WimpP|
000046c0  6f 6c 6c 5f 53 61 76 65  4d 65 73 73 61 67 65 0d  |oll_SaveMessage.|
000046d0  02 86 1e ea 66 69 6c 65  24 2c 77 69 6e 64 6f 77  |....file$,window|
000046e0  25 2c 69 63 6f 6e 25 2c  78 25 2c 79 25 0d 02 87  |%,icon%,x%,y%...|
000046f0  1d 20 c8 99 20 22 57 69  6d 70 5f 43 72 65 61 74  |. .. "Wimp_Creat|
00004700  65 4d 65 6e 75 22 2c 2c  2d 31 0d 02 88 23 20 c8  |eMenu",,-1...# .|
00004710  99 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  |."Wimp_GetPointe|
00004720  72 49 6e 66 6f 22 2c 2c  77 69 6d 70 25 0d 02 89  |rInfo",,wimp%...|
00004730  3a 20 77 69 6e 64 6f 77  25 3d 77 69 6d 70 25 21  |: window%=wimp%!|
00004740  31 32 3a 69 63 6f 6e 25  3d 77 69 6d 70 25 21 31  |12:icon%=wimp%!1|
00004750  36 3a 78 25 3d 77 69 6d  70 25 21 30 3a 79 25 3d  |6:x%=wimp%!0:y%=|
00004760  77 69 6d 70 25 21 34 0d  02 8a 14 20 e7 20 77 69  |wimp%!4.... . wi|
00004770  6e 64 6f 77 25 3c 30 20  8c 20 e1 0d 02 8b 1e 20  |ndow%<0 . ..... |
00004780  77 69 6d 70 25 21 30 3d  73 61 76 65 25 20 3a 20  |wimp%!0=save% : |
00004790  77 69 6d 70 25 21 34 3d  31 0d 02 8c 22 20 c8 99  |wimp%!4=1..." ..|
000047a0  20 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  | "Wimp_GetIconSt|
000047b0  61 74 65 22 2c 2c 77 69  6d 70 25 0d 02 8d 38 20  |ate",,wimp%...8 |
000047c0  e7 20 28 28 77 69 6d 70  25 21 32 34 29 20 80 20  |. ((wimp%!24) . |
000047d0  26 31 30 30 29 3d 30 20  85 20 31 2c 22 49 63 6f  |&100)=0 . 1,"Ico|
000047e0  6e 20 69 73 6e 27 74 20  69 6e 64 69 72 65 63 74  |n isn't indirect|
000047f0  65 64 22 0d 02 8e 16 20  66 69 6c 65 24 3d 24 28  |ed".... file$=$(|
00004800  77 69 6d 70 25 21 32 38  29 0d 02 8f 2b 20 66 69  |wimp%!28)...+ fi|
00004810  6c 65 24 3d a4 57 69 6d  70 5f 47 65 74 46 69 6c  |le$=.Wimp_GetFil|
00004820  65 46 72 6f 6d 50 61 74  68 6e 61 6d 65 28 66 69  |eFromPathname(fi|
00004830  6c 65 24 29 0d 02 90 15  20 77 69 6d 70 25 21 32  |le$).... wimp%!2|
00004840  30 3d 77 69 6e 64 6f 77  25 0d 02 91 13 20 77 69  |0=window%.... wi|
00004850  6d 70 25 21 32 34 3d 69  63 6f 6e 25 0d 02 92 1c  |mp%!24=icon%....|
00004860  20 77 69 6d 70 25 21 32  38 3d 78 25 3a 77 69 6d  | wimp%!28=x%:wim|
00004870  70 25 21 33 32 3d 79 25  0d 02 93 11 20 77 69 6d  |p%!32=y%.... wim|
00004880  70 25 21 33 36 3d 32 35  36 0d 02 94 0f 20 77 69  |p%!36=256.... wi|
00004890  6d 70 25 21 30 3d 36 34  0d 02 95 0f 20 77 69 6d  |mp%!0=64.... wim|
000048a0  70 25 21 31 32 3d 30 0d  02 96 0f 20 77 69 6d 70  |p%!12=0.... wimp|
000048b0  25 21 31 36 3d 31 0d 02  97 0b 20 c8 8e 20 b9 20  |%!16=1.... .. . |
000048c0  ca 0d 02 98 2b 20 20 c9  20 a4 44 65 66 69 6e 65  |....+  . .Define|
000048d0  5f 53 61 76 65 28 73 61  76 65 25 29 20 3a 20 77  |_Save(save%) : w|
000048e0  69 6d 70 25 21 34 30 3d  26 46 46 46 0d 02 99 26  |imp%!40=&FFF...&|
000048f0  20 20 7f 20 3a 20 77 69  6d 70 25 21 34 30 3d a4  |  . : wimp%!40=.|
00004900  44 65 66 69 6e 65 5f 53  61 76 65 28 73 61 76 65  |Define_Save(save|
00004910  25 29 0d 02 9a 06 20 cb  0d 02 9b 19 20 24 28 77  |%).... ..... $(w|
00004920  69 6d 70 25 2b 34 34 29  3d 66 69 6c 65 24 2b bd  |imp%+44)=file$+.|
00004930  30 0d 02 9c 34 20 c8 99  22 57 69 6d 70 5f 53 65  |0...4 .."Wimp_Se|
00004940  6e 64 4d 65 73 73 61 67  65 22 2c 31 37 2c 77 69  |ndMessage",17,wi|
00004950  6d 70 25 2c 77 69 6d 70  25 21 32 30 2c 77 69 6d  |mp%,wimp%!20,wim|
00004960  70 25 21 32 34 0d 02 9d  05 e1 0d 02 9e 05 3a 0d  |p%!24.........:.|
00004970  02 9f 4d f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..M. -----------|
00004980  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000049b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 02 a0 18  |------------....|
000049c0  f4 20 36 2e 20 45 72 72  6f 72 20 70 72 6f 63 65  |. 6. Error proce|
000049d0  64 75 72 65 0d 02 a1 4d  f4 20 2d 2d 2d 2d 2d 2d  |dure...M. ------|
000049e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004a20  2d 0d 02 a2 04 0d 02 a3  0c dd 20 f2 45 72 72 6f  |-......... .Erro|
00004a30  72 0d 02 a4 09 ee 20 85  20 87 0d 02 a5 22 2a 53  |r..... . ...."*S|
00004a40  65 74 20 42 61 73 69 63  24 46 69 6c 65 20 3c 4c  |et Basic$File <L|
00004a50  69 6e 6b 4c 69 62 24 46  69 6c 65 3e 0d 02 a6 16  |inkLib$File>....|
00004a60  d7 20 22 45 64 69 74 3a  54 68 72 6f 77 62 61 63  |. "Edit:Throwbac|
00004a70  6b 22 0d 02 a7 05 e0 0d  02 a8 05 e1 0d 02 a9 05  |k"..............|
00004a80  3a 0d 02 aa 0d f4 20 43  6f 6e 76 65 72 74 0d 02  |:..... Convert..|
00004a90  ab 04 0d 02 ac 15 dd 20  f2 53 61 76 65 41 6e 64  |....... .SaveAnd|
00004aa0  43 6f 6e 76 65 72 74 0d  02 ad 13 de 20 76 61 72  |Convert..... var|
00004ab0  69 61 62 6c 65 25 20 35  31 32 0d 02 ae 07 ea 20  |iable% 512..... |
00004ac0  85 0d 02 af 13 f2 43 68  65 63 6b 57 69 6d 70 53  |......CheckWimpS|
00004ad0  63 72 61 70 0d 02 b0 11  f2 43 68 65 63 6b 50 72  |crap.....CheckPr|
00004ae0  65 6c 75 64 65 0d 02 b1  15 f2 43 68 65 63 6b 50  |elude.....CheckP|
00004af0  72 6f 67 72 61 6d 46 69  6c 65 0d 02 b2 19 f2 53  |rogramFile.....S|
00004b00  74 61 72 74 42 75 69 6c  64 69 6e 67 50 72 6f 67  |tartBuildingProg|
00004b10  72 61 6d 0d 02 b3 0f f2  41 64 64 50 72 65 6c 75  |ram.....AddPrelu|
00004b20  64 65 0d 02 b4 0f f2 41  64 64 50 72 6f 67 72 61  |de.....AddProgra|
00004b30  6d 0d 02 b5 0f f2 52 75  6e 50 72 6f 67 72 61 6d  |m.....RunProgram|
00004b40  0d 02 b6 07 f7 20 85 0d  02 b7 05 e1 0d 02 b8 04  |..... ..........|
00004b50  0d 02 b9 15 dd 20 f2 43  68 65 63 6b 57 69 6d 70  |..... .CheckWimp|
00004b60  53 63 72 61 70 0d 02 ba  30 c8 99 20 22 58 4f 53  |Scrap...0.. "XOS|
00004b70  5f 46 69 6c 65 22 2c 31  33 2c 22 3c 57 69 6d 70  |_File",13,"<Wimp|
00004b80  24 53 63 72 61 70 44 69  72 3e 22 20 20 b8 20 66  |$ScrapDir>"  . f|
00004b90  6f 75 6e 64 25 0d 02 bb  22 e7 20 66 6f 75 6e 64  |ound%...". found|
00004ba0  25 3c 3e 32 20 8c 20 f2  43 6f 6e 76 65 72 74 45  |%<>2 . .ConvertE|
00004bb0  72 72 6f 72 28 32 29 0d  02 bc 05 e1 0d 02 bd 04  |rror(2).........|
00004bc0  0d 02 be 13 dd 20 f2 43  68 65 63 6b 50 72 65 6c  |..... .CheckPrel|
00004bd0  75 64 65 0d 02 bf 40 c8  99 20 22 58 4f 53 5f 46  |ude...@.. "XOS_F|
00004be0  69 6c 65 22 2c 31 33 2c  22 3c 44 72 61 77 42 61  |ile",13,"<DrawBa|
00004bf0  73 69 63 24 4f 70 74 69  6f 6e 73 3e 22 20 20 b8  |sic$Options>"  .|
00004c00  20 66 6f 75 6e 64 25 2c  2c 2c 2c 70 72 65 6c 75  | found%,,,,prelu|
00004c10  64 65 25 0d 02 c0 22 e7  20 66 6f 75 6e 64 25 3c  |de%...". found%<|
00004c20  3e 31 20 8c 20 f2 43 6f  6e 76 65 72 74 45 72 72  |>1 . .ConvertErr|
00004c30  6f 72 28 33 29 0d 02 c1  05 e1 0d 02 c2 04 0d 02  |or(3)...........|
00004c40  c3 17 dd 20 f2 43 68 65  63 6b 50 72 6f 67 72 61  |... .CheckProgra|
00004c50  6d 46 69 6c 65 0d 02 c4  37 c8 99 20 22 58 4f 53  |mFile...7.. "XOS|
00004c60  5f 46 69 6c 65 22 2c 31  33 2c 44 42 61 73 69 63  |_File",13,DBasic|
00004c70  5f 46 69 6c 65 24 20 20  b8 20 66 6f 75 6e 64 25  |_File$  . found%|
00004c80  2c 2c 2c 2c 70 72 6f 67  72 61 6d 25 0d 02 c5 22  |,,,,program%..."|
00004c90  e7 20 66 6f 75 6e 64 25  3c 3e 31 20 8c 20 f2 43  |. found%<>1 . .C|
00004ca0  6f 6e 76 65 72 74 45 72  72 6f 72 28 34 29 0d 02  |onvertError(4)..|
00004cb0  c6 05 e1 0d 02 c7 04 0d  02 c8 1b dd 20 f2 53 74  |............ .St|
00004cc0  61 72 74 42 75 69 6c 64  69 6e 67 50 72 6f 67 72  |artBuildingProgr|
00004cd0  61 6d 0d 02 c9 22 20 de  20 66 69 6c 65 25 20 32  |am..." . file% 2|
00004ce0  35 36 2b 70 72 65 6c 75  64 65 25 2b 70 72 6f 67  |56+prelude%+prog|
00004cf0  72 61 6d 25 0d 02 ca 0f  20 70 74 72 25 3d 66 69  |ram%.... ptr%=fi|
00004d00  6c 65 25 0d 02 cb 41 20  f2 41 64 64 28 22 4f 4e  |le%...A .Add("ON|
00004d10  20 45 52 52 4f 52 20 4f  4e 20 45 52 52 4f 52 20  | ERROR ON ERROR |
00004d20  4f 46 46 20 3a 20 43 48  41 49 4e 20 22 2b 22 22  |OFF : CHAIN "+""|
00004d30  22 54 68 72 6f 77 62 61  63 6b 3a 45 72 72 6f 72  |"Throwback:Error|
00004d40  22 22 22 29 0d 02 cc 2b  20 f2 41 64 64 28 22 4c  |""")...+ .Add("L|
00004d50  49 42 52 41 52 59 20 22  2b 22 22 22 44 72 61 77  |IBRARY "+"""Draw|
00004d60  42 61 73 69 63 3a 55 74  69 6c 73 22 22 22 29 0d  |Basic:Utils""").|
00004d70  02 cd 1e 20 f2 41 64 64  28 22 48 49 4d 45 4d 20  |... .Add("HIMEM |
00004d80  3d 46 4e 46 72 65 65 53  6c 6f 74 22 29 0d 02 ce  |=FNFreeSlot")...|
00004d90  1d 20 f2 41 64 64 28 22  50 52 4f 43 42 65 67 69  |. .Add("PROCBegi|
00004da0  6e 44 72 61 77 69 6e 67  22 29 0d 02 cf 05 e1 0d  |nDrawing")......|
00004db0  02 d0 04 0d 02 d1 11 dd  20 f2 41 64 64 50 72 65  |........ .AddPre|
00004dc0  6c 75 64 65 0d 02 d2 2f  20 c8 99 20 22 4f 53 5f  |lude.../ .. "OS_|
00004dd0  46 69 6c 65 22 2c 31 32  2c 22 3c 44 72 61 77 42  |File",12,"<DrawB|
00004de0  61 73 69 63 24 4f 70 74  69 6f 6e 73 3e 22 2c 70  |asic$Options>",p|
00004df0  74 72 25 0d 02 d3 18 20  f2 54 6f 6b 65 6e 69 73  |tr%.... .Tokenis|
00004e00  65 28 70 72 65 6c 75 64  65 25 29 0d 02 d4 05 e1  |e(prelude%).....|
00004e10  0d 02 d5 04 0d 02 d6 12  dd 20 f2 41 64 64 50 72  |......... .AddPr|
00004e20  6f 67 72 61 6d 20 0d 02  d7 27 20 c8 99 20 22 4f  |ogram ...' .. "O|
00004e30  53 5f 46 69 6c 65 22 2c  31 32 2c 44 42 61 73 69  |S_File",12,DBasi|
00004e40  63 5f 46 69 6c 65 24 2c  70 74 72 25 20 0d 02 d8  |c_File$,ptr% ...|
00004e50  18 20 f2 54 6f 6b 65 6e  69 73 65 28 70 72 6f 67  |. .Tokenise(prog|
00004e60  72 61 6d 25 29 0d 02 d9  05 e1 0d 02 da 04 0d 02  |ram%)...........|
00004e70  db 11 dd 20 f2 52 75 6e  50 72 6f 67 72 61 6d 0d  |... .RunProgram.|
00004e80  02 dc 17 70 74 72 25 3f  30 3d 31 33 20 3a 20 70  |...ptr%?0=13 : p|
00004e90  74 72 25 2b 3d 31 0d 02  dd 2e ff 28 22 53 61 76  |tr%+=1.....("Sav|
00004ea0  65 20 3c 57 69 6d 70 24  53 63 72 61 70 3e 20 22  |e <Wimp$Scrap> "|
00004eb0  2b c3 7e 66 69 6c 65 25  2b 22 20 22 2b c3 7e 70  |+.~file%+" "+.~p|
00004ec0  74 72 25 29 0d 02 de 1f  2a 53 65 74 54 79 70 65  |tr%)....*SetType|
00004ed0  20 3c 57 69 6d 70 24 53  63 72 61 70 3e 20 42 61  | <Wimp$Scrap> Ba|
00004ee0  73 69 63 0d 02 df 1e ff  28 22 53 65 74 20 42 61  |sic.....("Set Ba|
00004ef0  73 69 63 24 46 69 6c 65  20 22 2b 66 69 6c 65 24  |sic$File "+file$|
00004f00  29 0d 02 e0 1d 2a 57 69  6d 70 54 61 73 6b 20 4c  |)....*WimpTask L|
00004f10  69 6e 6b 4c 69 62 3a 43  6f 6e 76 65 72 74 0d 02  |inkLib:Convert..|
00004f20  e1 1b 77 69 6d 70 25 21  30 3d 43 6f 6e 76 65 72  |..wimp%!0=Conver|
00004f30  74 5f 57 69 6e 64 6f 77  25 0d 02 e2 20 c8 99 20  |t_Window%... .. |
00004f40  22 57 69 6d 70 5f 43 6c  6f 73 65 57 69 6e 64 6f  |"Wimp_CloseWindo|
00004f50  77 22 2c 2c 77 69 6d 70  25 0d 02 e3 05 e1 0d 02  |w",,wimp%.......|
00004f60  e4 04 0d 02 e5 4f f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |.....O. --------|
00004f70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004fb0  2d 0d 02 e6 04 0d 02 e7  04 0d 02 e8 0e dd 20 f2  |-............. .|
00004fc0  41 64 64 28 78 24 29 0d  02 e9 1e 24 70 74 72 25  |Add(x$)....$ptr%|
00004fd0  3d 78 24 2b bd 31 33 20  3a 20 70 74 72 25 2b 3d  |=x$+.13 : ptr%+=|
00004fe0  a9 78 24 2b 31 0d 02 ea  05 e1 0d 02 eb 04 0d 02  |.x$+1...........|
00004ff0  ec 18 dd 20 f2 54 6f 6b  65 6e 69 73 65 28 6c 65  |... .Tokenise(le|
00005000  6e 67 74 68 25 29 0d 02  ed 0c 20 6c 69 6e 65 25  |ngth%).... line%|
00005010  3d 30 0d 02 ee 16 20 65  6e 64 25 3d 70 74 72 25  |=0.... end%=ptr%|
00005020  2b 6c 65 6e 67 74 68 25  0d 02 ef 11 20 c8 95 20  |+length%.... .. |
00005030  70 74 72 25 3c 65 6e 64  25 0d 02 f0 11 20 20 c8  |ptr%<end%....  .|
00005040  8e 20 70 74 72 25 3f 30  20 ca 0d 02 f1 24 20 20  |. ptr%?0 ....$  |
00005050  20 c9 20 31 30 2c 31 33  3a 20 6c 69 6e 65 25 2b  | . 10,13: line%+|
00005060  3d 31 20 3a 20 70 74 72  25 3f 30 3d 31 33 0d 02  |=1 : ptr%?0=13..|
00005070  f2 1a 20 20 20 c9 20 31  36 30 20 20 3a 20 70 74  |..   . 160  : pt|
00005080  72 25 3f 30 3d 26 46 32  0d 02 f3 1a 20 20 20 c9  |r%?0=&F2....   .|
00005090  20 31 38 37 20 20 3a 20  70 74 72 25 3f 30 3d 26  | 187  : ptr%?0=&|
000050a0  41 34 0d 02 f4 07 20 20  cb 0d 02 f5 0d 20 20 70  |A4....  .....  p|
000050b0  74 72 25 2b 3d 31 0d 02  f6 06 20 ce 0d 02 f7 05  |tr%+=1.... .....|
000050c0  e1 0d 02 f8 04 0d 02 f9  1b dd 20 f2 43 6f 6e 76  |.......... .Conv|
000050d0  65 72 74 45 72 72 6f 72  28 65 72 72 6f 72 25 29  |ertError(error%)|
000050e0  0d 02 fa 0a ee 20 85 20  87 20 0d 02 fb 0f c8 8e  |..... . . ......|
000050f0  20 65 72 72 6f 72 25 20  ca 0d 02 fc 26 20 20 20  | error% ....&   |
00005100  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0d  |               .|
00005120  02 fd 08 20 c9 20 30 0d  02 fe 2b 20 20 20 f1 20  |... . 0...+   . |
00005130  22 45 72 72 6f 72 20 69  6e 20 43 6f 6e 76 65 72  |"Error in Conver|
00005140  74 20 22 2b f6 24 3b 22  61 74 20 6c 69 6e 65 22  |t "+.$;"at line"|
00005150  3b 9e 0d 02 ff 08 20 c9  20 32 0d 03 00 3b 20 20  |;..... . 2...;  |
00005160  20 85 20 30 2c 20 22 21  4c 69 62 72 61 72 69 65  | . 0, "!Librarie|
00005170  73 20 72 65 71 75 69 72  65 73 20 61 20 73 63 72  |s requires a scr|
00005180  61 70 20 64 69 72 65 63  74 6f 72 79 20 74 6f 20  |ap directory to |
00005190  77 6f 72 6b 22 0d 03 01  08 20 c9 20 33 0d 03 02  |work".... . 3...|
000051a0  2c 20 20 20 85 20 30 2c  22 4e 6f 20 44 72 61 77  |,   . 0,"No Draw|
000051b0  4c 69 62 20 27 73 65 74  75 70 27 20 66 69 6c 65  |Lib 'setup' file|
000051c0  20 64 65 66 69 6e 65 64  22 0d 03 03 08 20 c9 20  | defined".... . |
000051d0  34 0d 03 04 24 20 20 20  85 20 30 2c 22 50 72 6f  |4...$   . 0,"Pro|
000051e0  67 72 61 6d 20 66 69 6c  65 20 6e 6f 74 20 66 6f  |gram file not fo|
000051f0  75 6e 64 21 22 0d 03 05  05 cb 0d 03 06 05 e0 0d  |und!"...........|
00005200  ff                                                |.|
00005201