Home » Archimedes archive » Acorn User » AU 1994-04.adf » !StarInfo_StarInfo » Bright/!Cassette/!RunImage

Bright/!Cassette/!RunImage

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

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

Tape/disk: Home » Archimedes archive » Acorn User » AU 1994-04.adf » !StarInfo_StarInfo
Filename: Bright/!Cassette/!RunImage
Read OK:
File size: C960 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!RunImage
   20REM
   30REM A Public Domain Utility By Mark Bright.
   40:
   50REM TRACE PROC
   60REM TRACE TO "ADFS::4.$.!Scrap.ScrapDir.TRACETEXT"
   70:
   80Version$="1.23 (20-Sep-93)"
   90:
  100LIBRARY "<Cassette$Dir>.Resources.Library"
  110
  120DIM Block% 1024*4  :REM General purpose WIMP workspace!
  130:
  140PROC_Initialise_WIMP_System
  150:
  160PROC_SetIconText(15,Info%,Version$)
  170PROC_SetIconText(4,Save%,"BoffBright")
  180:
  190ON ERROR PROC_Wimp_Error
  200PROC_Initialise_Program_Variables
  210:
  220PROC_LoadFileIfRequired
  230:
  240ON ERROR PROC_Wimp_Error
  250:
  260REM ********************************************************************************************************
  270REM All RISCOS/WIMP Specific Proceedures First, !Cassette Proc'S after.... Makes for a better skeleton prog!
  280REM ********************************************************************************************************
  290
  300REPEAT
  310   SYS "Wimp_Poll",Mask%,Block% TO A%
  320   CASE A% OF
  330      WHEN 2 : SYS "Wimp_OpenWindow",,Block%   : REM allows auto Drag
  340      WHEN 3 : SYS "Wimp_CloseWindow",,Block%  : REM allows auto Close
  350      WHEN 6 : PROC_ButtonPressed
  360      WHEN 7 : PROC_DragBoxEnd(FN_ReadIconText(Save%,4,FALSE))
  370      WHEN 8 : PROC_ProcessKey(Block%!24)
  380      WHEN 9 : PROC_MenuSelection
  390      WHEN 17,18 : PROC_DecodeMessage(Block%!16)
  400   ENDCASE
  410UNTIL FALSE
  420:
  430REM *****************************************
  440REM This is the WIMP Error handling routine !
  450REM *****************************************
  460DEF PROC_Wimp_Error
  470   LOCAL Error$
  480   SYS "OS_Byte",3,0
  490   SYS "Wimp_DragBox",,-1
  500   !Block%=ERR
  510   Error$ = REPORT$
  520   IF ERR<>2001 THEN Error$ += " (internal error code "+STR$ERL+"). OK To Continue, CANCEL To Abort."
  530   $(Block%+4)=Error$ + CHR$0
  540   SYS "Wimp_ReportError",Block%,%001 - (2*(ERR<>2001)),MyTaskName$ TO ,Result%
  550   IF Result%=2 THEN PROC_CloseDown
  560ENDPROC
  570:
  580REM ************************************
  590REM Mouse 'Click' Whilst Over Menu Item.
  600REM ************************************
  610DEF PROC_MenuSelection
  620   IF MenuActive% = IconBarMenu% THEN
  630      CASE Block%!0 OF
  640         WHEN 0 : PROC_OpenSubMenu(Info%) : IconBarMenuActive%=FALSE
  650         WHEN 1 : PROC_OpenSubMenu(Options%) : IconBarMenuActive%=FALSE
  660         WHEN 2 : PROC_CloseDown : REM <Select> on "quit" causes shutdown
  670      ENDCASE
  680   ENDIF
  690
  700   IF MenuActive% = MainWinMenu% THEN
  710      CASE Block%!0 OF
  720         WHEN 0 : PROC_OpenSubMenu(Info%) : MainWindowMenuActive%=FALSE
  730         WHEN 1 : PROC_OpenSubMenu(Save%) : MainWindowMenuActive%=FALSE
  740         WHEN 2 : PROC_FormatIconText
  750         WHEN 3 : PROC_OpenSubMenu(Options%) : MainWindowMenuActive%=FALSE
  760         WHEN 4 : PROC_WipeIconText
  770      ENDCASE
  780   ENDIF
  790
  800   SYS "Wimp_GetPointerInfo",,Block%
  810   IF (Block%!8 AND 1) THEN
  820      IF MenuActive% = IconBarMenu% THEN SYS "Wimp_CreateMenu",,menu%
  830      IF MenuActive% = MainWinMenu% THEN SYS "Wimp_CreateMenu",,MainMenu%
  840   ENDIF
  850ENDPROC
  860:
  870REM ********************************
  880REM Mouse Button Status Has Changed.
  890REM ********************************
  900DEF PROC_ButtonPressed
  910LOCAL MouseX%,MouseY%,Button%,Window%,Icon%
  920   MouseX%=Block%!00 : REM Block%!00 = Mouse X (Screen Co-ordinates)
  930   MouseY%=Block%!04 : REM Block%!04 = Mouse Y (Screen Co-ordinates)
  940   Button%=Block%!08 : REM Block%!08 = Buttons
  950   Window%=Block%!12 : REM Block%!12 = Window Handle (BackGround = -1, IconBar = -2)
  960   Icon%  =Block%!16 : REM Block%!16 = Icon Handle ( Work Area BackGround = -1)
  970
  980   IF Window%=Options% AND Icon%=OptionsOKF% THEN
  990      PROC_ButtonPress(Options%, OptionsOKF%, OptionsOKL%, OptionsOKD%)
 1000      PROC_StoreUserData
 1010   ENDIF
 1020
 1030   IF Window%=IconBar% AND Icon%=IconBarIconHandle% THEN
 1040      CASE Button% OF
 1050         WHEN %001 : PROC_OpenMainWindow(FALSE)
 1060         WHEN %100 : PROC_OpenMainWindow(TRUE)
 1070         WHEN %010 : PROC_SetUpIconBarMenu
 1080      ENDCASE
 1090   ENDIF
 1100
 1110   IF Button%<> %010 AND Window%=Main% AND Icon%=PrintF% THEN
 1120      PROC_ButtonPress(Main%, PrintF%, PrintL%, PrintD%)
 1130      PROC_PrintOut
 1140   ENDIF
 1150
 1160   IF Button%=%010 AND Window%=Main% THEN
 1170      Temp$=FN_InventSaveName
 1180      PROC_CreateMainWindowMenu(MouseX%,MouseY%,Icon%)
 1190   ENDIF
 1200
 1210   IF Window%=Save% AND Icon%=SaveIcon%  THEN PROC_DragSave
 1220   IF Window%=Save% AND Icon%=SaveOKF%   THEN
 1230      PROC_ButtonPress(Save%, SaveOKF%, SaveOKL%, SaveOKD%)
 1240      PROC_SaveTo(FN_ReadIconText(Save%,4,FALSE))
 1250   ENDIF
 1260
 1270   IF Button%<> %010 AND Window%=Options% THEN
 1280      CASE Icon% OF
 1290         WHEN  0,1,5 : PROC_SetIconText(45,Main%,PDriver$(FN_ReadESGSelected(Options%,9)+1))
 1300      ENDCASE
 1310      PROC_Redraw(Main%,45)
 1320   ENDIF
 1330ENDPROC
 1340:
 1350REM *************************************************************************************************
 1360REM Determine if a new name is required, if so generate an intelligent name based on cassette number.
 1370REM *************************************************************************************************
 1380DEF FN_InventSaveName
 1390   Prefix$="Cass_"
 1400   Temp$=FN_ReadIconText(Save%,4,FALSE) : Temp2$=Prefix$+FN_ReadIconText(Main%,TapeNumber%,FALSE)
 1410   IF RIGHT$(Temp$,10)="BoffBright" OR OldName$<>Temp2$ THEN
 1420      NewSaveName$=FN_ConvertSoftToHardSpaces(Temp2$)
 1430      IF LEN(Temp$)>LEN(Temp2$) THEN
 1440         Pointer%=LEN(Temp$)
 1450         WHILE MID$(Temp$,Pointer%,1)<>"." AND Pointer%>0:Pointer%-=1:ENDWHILE
 1460         PROC_SetIconText(4,Save%,LEFT$(Temp$,Pointer%)+NewSaveName$)
 1470      ELSE
 1480         PROC_SetIconText(4,Save%,NewSaveName$)
 1490      ENDIF
 1500      OldName$=Temp2$
 1510   ENDIF
 1520=Temp2$
 1530:
 1540REM *******************************************************************************************************
 1550REM Change all occurances of <SPACE> in the tape number to <ALT-SPACE> to stop the filer throwing a wobbly.
 1560REM *******************************************************************************************************
 1570DEF FN_ConvertSoftToHardSpaces(Name$)
 1580   Pointer%=LEN(Name$)
 1590   REPEAT
 1600      Char$=MID$(Name$,Pointer%,1)
 1610      IF Char$=" " THEN
 1620         Char$="�"
 1630         MID$(Name$,Pointer%,1)=Char$
 1640      ENDIF
 1650      Pointer%-=1
 1660   UNTIL Pointer%=1
 1670=Name$
 1680:
 1690********************************
 1700REM 'Press' a button in a window
 1710********************************
 1720DEF PROC_ButtonPress(Window%, Front%, Light%, Dark%)
 1730   LOCAL TimeNow%
 1740   PROC_SetIconColour(Window%, Light%, 4)
 1750   PROC_SetIconColour(Window%, Dark%, 0)
 1760   PROC_SetIconColour(Window%, Front%, 14)
 1770   TimeNow% = TIME
 1780   REPEAT
 1790   UNTIL TIME > TimeNow%+25
 1800   PROC_SetIconColour(Window%, Light%, 0)
 1810   PROC_SetIconColour(Window%, Dark%, 4)
 1820   PROC_SetIconColour(Window%, Front%, 1)
 1830ENDPROC
 1840:
 1850********************************************
 1860REM Change the colour of an icon in a window
 1870********************************************
 1880DEF PROC_SetIconColour(Window%, Icon%, Colour%)
 1890   Block%!0  = Window%
 1900   Block%!4  = Icon%
 1910   Block%!8  = Colour% << 28
 1920   Block%!12 = %1111 << 28
 1930   SYS "Wimp_SetIconState",, Block%
 1940ENDPROC
 1950:
 1960REM *******************************************************************
 1970REM When a key is pressed, Check if it concerns me. If not, Pass it on!
 1980REM *******************************************************************
 1990DEF PROC_ProcessKey(KeyPressed)
 2000   LOCAL Icon%,Index%,Window%
 2010   Window%=Block%!0
 2020   Icon%=Block%!4
 2030   Index%=Block%!20
 2040   CASE KeyPressed OF
 2050
 2060      WHEN &180 : PROC_ButtonPress(Main%, PrintF%, PrintL%, PrintD%)
 2070                  PROC_PrintOut
 2080      REM <Print>
 2090
 2100      WHEN &18A
 2110      REM <Tab>
 2120                  IF Icon%<38 THEN
 2130                     PROC_SetCaretPosition(Icon%-((Icon% MOD 2)=0)+((Icon% MOD 2)=1),Index%)
 2140                  ENDIF
 2150
 2160      WHEN &0D
 2170      REM <Return>
 2180                  IF Window%=Main% THEN PROC_MoveDownAnEntry
 2190                  IF Window%=Save% THEN
 2200                     PROC_ButtonPress(Save%, SaveOKF%, SaveOKL%, SaveOKD%)
 2210                     PROC_SaveTo(FN_ReadIconText(Save%,4,FALSE))
 2220                  ENDIF
 2230
 2240      WHEN &1E
 2250      REM <Home>
 2260                  PROC_SetCaretPosition((Icon% MOD 2),0)
 2270
 2280      WHEN &18F
 2290      REM <Cursor Up>
 2300                  IF Window% = Main% THEN PROC_MoveUpAnEntry
 2310
 2320      WHEN &18E
 2330      REM <Cursor Down>
 2340                  IF Window% = Main% THEN PROC_MoveDownAnEntry
 2350
 2360      WHEN &199
 2370      REM <Shift><f9>
 2380                  IF Window% = Main% THEN PROC_WipeIconText
 2390
 2400      WHEN &1CA
 2410      REM <f10>
 2420                  PROC_SwapCase(Main%,Icon%,Index%)
 2430
 2440      WHEN &1CB
 2450      REM <f11> - Delete to end of line
 2460                  Text$=LEFT$(FN_ReadIconText(Main%,Icon%,FALSE),Index%)
 2470                  PROC_SetIconText(Icon%,Main%,Text$)
 2480                  PROC_Redraw(Main%,Icon%)
 2490
 2500      OTHERWISE SYS "Wimp_ProcessKey",Block%!24
 2510
 2520   ENDCASE
 2530ENDPROC
 2540:
 2550REM ******************************
 2560REM Set which icon the caret is in
 2570REM ******************************
 2580DEF PROC_SetCaretPosition(Icon%,Index%)
 2590   IconLength%=LEN(FN_ReadIconText(Main%,Icon%,FALSE))
 2600   IF Index%>IconLength% THEN Index%=IconLength%
 2610   SYS "Wimp_SetCaretPosition",Main%,Icon%,,,-1,Index%
 2620ENDPROC
 2630:
 2640REM *******************************
 2650REM Redraw the specifiied icon (v2)
 2660REM *******************************
 2670DEF PROC_Redraw(Window%,Icon%)
 2680   Block%!0=Window%
 2690   Block%!4=Icon%
 2700   Block%!8=0
 2710   Block%!12=0
 2720   SYS "Wimp_SetIconState",,Block%
 2730ENDPROC
 2740:
 2750REM ***************************************************************
 2760REM When a message is received, Control is passed to here for decoding
 2770REM ***************************************************************
 2780DEF PROC_DecodeMessage(Request%)
 2790   CASE Request% OF
 2800      WHEN 0      : PROC_CloseDown
 2810      WHEN 1      : Block%!0=(48+LEN("<Wimp$Scrap> "))AND NOT 3
 2820                    Block%!12=Block%!8
 2830                    Block%!16=2
 2840                    $(Block%+44)="<Wimp$Scrap>"
 2850                    SaveRef%=Block%!12
 2860                    SYS "Wimp_SendMessage",17,Block%,Block%!4
 2870      WHEN 2      : PROC_HandleMessage_DataSaveAck
 2880      WHEN 3      : PROC_FileDroppedOnMe
 2890      WHEN 5      : PROC_DataOpen
 2900      WHEN 10     : PROC_DeskTopSave
 2910      WHEN 14     : PROC_LowPowerWarning
 2920      WHEN &502   : PROC_GiveHelp(Block%!32,Block%!36,Block%!20,Block%!24)
 2930      WHEN &400C2 : IF FN_ReadString(Block%+28)=MyTaskName$ AND Block%!4<> My_id% THEN
 2940                       REM Another !Cassette is trying to start up, I am going to bugger off!
 2950                       PROC_CloseDown
 2960                    ENDIF
 2970      WHEN &400CC : Block%!00 = 48
 2980                    Block%!12 = Block%!8
 2990                    Block%!16 = &400CC
 3000                    $(Block%+28) = "cassete"         :REM Sprite name "ic_csvtext" etc.
 3010                    $(Block%+36) = FN_InventSaveName :REM Name to call iconised icon.
 3020                    SYS "Wimp_SendMessage",17,Block%,Block%!4
 3030   ENDCASE
 3040ENDPROC
 3050:
 3060REM ********************************************************
 3070REM Start Up program as a task with name "Cassette Designer"
 3080REM And put icon on the Icon bar
 3090REM ********************************************************
 3100DEF PROC_Initialise_WIMP_System
 3110   LOCAL WimpVersion$
 3120 
 3130   MyTaskName$="Cassette Designer"
 3140 
 3150   WimpVersion$=FN_ConvertSystemToString("Cassette$WimpVersion")
 3160
 3170   IF (WimpVersion$="300") THEN
 3180      REM Set up list of messages that I want to receive:
 3190      Block%!0=0        : REM Quit
 3200      Block%!4=1        : REM DataSave
 3210      Block%!8=2        : REM DataSaveAck
 3220      Block%!12=3       : REM DataLoad
 3230      Block%!16=5       : REM DataOpen
 3240      Block%!20=10      : REM DeskTopSave
 3250      Block%!24=14      : REM ShutDown    (Portable only. Power low warning message)
 3260      Block%!28=&502    : REM Interactive help request
 3270      Block%!32=&400C2  : REM Task Initialise
 3280      Block%!36=&400CC  : REM Iconize
 3290      Block%!40=0       : REM Terminate
 3300      SYS "Wimp_Initialise",300,&4B534154,MyTaskName$,Block% TO Version,My_id%
 3310   ELSE
 3320      SYS "Wimp_Initialise",200,&4B534154,MyTaskName$ TO Version,My_id%
 3330   ENDIF
 3340   IconBarIconHandle%=FN_CreateIconBarIcon
 3350   PROC_Initialise_Sprites
 3360   PROC_Initialise_Templates
 3370   Mask%=%1100000110001    : REM Mask Out codes for Gain/Lose Caret, Pointer Enter/Leave Window & Null Event
 3380ENDPROC
 3390:
 3400REM ***********************************************************
 3410REM All WIMP Programs should be able to shut themselves down!!!
 3420REM ***********************************************************
 3430DEF PROC_CloseDown
 3440   SYS "Wimp_CloseDown",My_id%,&4B534154
 3450   SYS "OS_Exit"
 3460ENDPROC
 3470:
 3480REM ****************************************************************
 3490REM Opens up the template file, Fondles it, and then creates Windows
 3500REM ****************************************************************
 3510DEF PROC_Initialise_Templates
 3520   maxws%=&A00 : DIM ws% maxws% : curws%=ws%
 3530   SYS"Wimp_OpenTemplate",,"<Cassette$Dir>.Resources.Templates"
 3540   SYS"Wimp_LoadTemplate",,Block%,ws%,ws%+maxws%,-1,"info",0 TO ,,curws%
 3550   SYS"Wimp_CreateWindow",,Block% TO Info%
 3560   SYS"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"save",0 TO ,,curws%
 3570   SYS"Wimp_CreateWindow",,Block% TO Save%
 3580   SYS"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Main",0 TO ,,curws%
 3590   SYS"Wimp_CreateWindow",,Block% TO Main%
 3600   SYS"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Print_Opt",0 TO ,,curws%
 3610   Block%!64 = SpriteArea%
 3620   SYS"Wimp_CreateWindow",,Block% TO Options%
 3630   SYS"Wimp_CloseTemplate"
 3640ENDPROC
 3650:
 3660REM *******************************************************************
 3670REM This writes over the text in the Icon, and it should not be done!!!
 3680REM Only Works With Indirected Text Strings!
 3690REM *******************************************************************
 3700DEF PROC_SetIconText(IconHandle%,WindowHandle%,Text$)
 3710   LOCAL Pointer%
 3720   Block%!100=WindowHandle%
 3730   Block%!104=IconHandle%
 3740   SYS "Wimp_GetIconState",,Block%+100
 3750   IF (Block%!124 AND (1<<8))<>0 THEN
 3760      Pointer%=Block%!128
 3770   ELSE
 3780      Pointer%=Block%+128
 3790   ENDIF
 3800   $Pointer%=Text$
 3810ENDPROC
 3820:
 3830REM **************************************
 3840REM The name sort of says it all really!!!
 3850REM **************************************
 3860DEF PROC_SetUpIconBarMenu
 3870   LOCAL m%
 3880   MenuActive% = IconBarMenu%
 3890   DIM menu% 28+3*24
 3900   $menu%="Cassette"
 3910   menu%?12=7
 3920   menu%?13=2
 3930   menu%?14=7
 3940   menu%?15=0
 3950   menu%!16=128
 3960   menu%!20=40
 3970   menu%!24=0
 3980   m%=menu%+28
 3990   m%!0=&0
 4000   m%!4=Info%    :REM name from template open.
 4010   m%!8=(7<<24) OR %10001
 4020   $(m%+12)="Info"
 4030   m%=m%+24
 4040   m%!0=&0
 4050   m%!4=Options%
 4060   m%!8=(7<<24) OR %10001
 4070   $(m%+12)="Options"
 4080   m%=m%+24
 4090   m%!0=&80
 4100   m%!4=0
 4110   m%!8=(7<<24)OR %10001
 4120   $(m%+12)="Quit"
 4130   SYS"Wimp_CreateMenu",,menu%,Block%!0-64,215
 4140ENDPROC
 4150:
 4160REM *************************************************************
 4170REM This takes a Sprite and makes it into an Icon For the IconBar
 4180REM *************************************************************
 4190DEF FN_CreateIconBarIcon
 4200   LOCAL Icon%
 4210   Block%!0=-1
 4220   Block%!4=0
 4230   Block%!8=0
 4240   Block%!12=68
 4250   Block%!16=68
 4260   Block%!20=%10000000000010
 4270   $(Block%+24)="!Cassette"
 4280   SYS "Wimp_CreateIcon",,Block% TO Icon%
 4290=Icon%
 4300:
 4310REM *********************************************
 4320REM Read Info for Window Main, and then open it !
 4330REM *********************************************
 4340DEF PROC_OpenMainWindow(WipeTemplateIconText%)
 4350   IF WipeTemplateIconText% AND New% AND NOT StartWithLoad THEN PROC_WipeIconText
 4360   !Block%=Main%
 4370   SYS "Wimp_GetWindowState",,Block%
 4380   SYS "Wimp_OpenWindow",,Block%
 4390   New%=FALSE
 4400   PROC_SetCaretPosition(0,0)
 4410ENDPROC
 4420:
 4430REM **********************************************************************
 4440REM This reads the text from the writable Icon specified in the parameters
 4450REM and if Pad%=TRUE then pads out the result to 32 characters!
 4460REM **********************************************************************
 4470DEF FN_ReadIconText(WindowHandle%,IconHandle%,Pad%)
 4480   LOCAL Result$
 4490   Block%!100=WindowHandle%
 4500   Block%!104=IconHandle%
 4510   SYS "Wimp_GetIconState",,Block%+100
 4520   IF (Block%!124 AND (1<<8))<>0 THEN
 4530      Result$=$(Block%!128)
 4540   ELSE
 4550      Result$=$(Block%+128)
 4560   ENDIF
 4570   IF Pad% THEN =LEFT$(Result$+STRING$(32," "),32)
 4580=Result$
 4590:
 4600REM *****************************************
 4610REM Wipe the text from all the writable icons
 4620REM *****************************************
 4630DEF PROC_WipeIconText
 4640   IconText$=""
 4650   FOR Loop%=0 TO 37
 4660      PROC_SetIconText(Loop%,Main%,IconText$)
 4670      PROC_Redraw(Main%,Loop%)
 4680   NEXT
 4690   PROC_SetIconText(TapeNumber%,Main%,TapeNumber$)
 4700   PROC_Redraw(Main%,TapeNumber%)
 4710ENDPROC
 4720:
 4730REM **************************************
 4740REM The name sort of says it all really!!!
 4750REM *************************************
 4760DEF PROC_CreateMainWindowMenu(X%,Y%,Icon%)
 4770   LOCAL m%,Flags%,Pointer%,Sel%,IconFlag%,Item$
 4780   MenuActive% = MainWinMenu%
 4790   DIM MainMenu% 29+7*24
 4800   $MainMenu%="Main"
 4810   MainMenu%?12=7
 4820   MainMenu%?13=2
 4830   MainMenu%?14=7
 4840   MainMenu%?15=0
 4850   MainMenu%!16=16*16
 4860   MainMenu%!20=40
 4870   MainMenu%!24=0
 4880   m%=MainMenu%+28
 4890   REPEAT
 4900      READ Flags%,Pointer%,Sel%,IconFlag%,Item$
 4910      m%!0=Flags%                                 :REM Menu Flags
 4920      m%!4=Pointer%                               :REM Pointer to Sub-Menu (-1 If None)
 4930      m%!8=IconFlag% OR (Sel%<<22) OR (7<<24)     :REM Menu Icon Flags
 4940      $(m%+12)=Item$                              :REM Item Name (12 Bytes Max.)
 4950      m%=m%+24
 4960   UNTIL Flags%=&80
 4970   :
 4980   RESTORE +0
 4990   DATA &00,Info%,   0,%10001,"Info"
 5000   DATA &00,Save%,   0,%10001,"Save data"
 5010   DATA &00,-1,      0,%10001,"Format text"
 5020   DATA &00,Options%,0,%10001,"Options"
 5030   DATA &80,-1,      0,%10001,"Wipe all"
 5040   :
 5050   SYS "Wimp_CreateMenu",,MainMenu%,X%-64,Y%
 5060ENDPROC
 5070:
 5080REM ******************************************************************************
 5090REM Control Comes To Here When The User Has Dragged The Save Icon And Released It.
 5100REM ******************************************************************************
 5110DEF PROC_DragBoxEnd(LeafName$)
 5120   Pointer%=LENLeafName$
 5130   WHILE Pointer%>0 AND MID$(LeafName$,Pointer%,1)<>"."
 5140      Pointer%-=1
 5150   ENDWHILE
 5160   IF DragASprite_Active% THEN SYS "DragASprite_Stop"
 5170   LeafName$=MID$(LeafName$,Pointer%+1)
 5180   SYS "Wimp_GetPointerInfo",,Block%
 5190   SenderWindow%=Block%!12
 5200   SenderIcon%=Block%!16
 5210   Block%!20=SenderWindow%
 5220   Block%!24=SenderIcon%
 5230   Block%!28=Block%!0
 5240   Block%!32=Block%!4
 5250   Block%!0=44+LENLeafName$
 5260   Block%!0+=4-(Block%!0 MOD 4)
 5270   Block%!4=0
 5280   Block%!8=0
 5290   Block%!12=0
 5300   Block%!16=1 : REM Message_DataSave
 5310   Block%!36=0 : REM Length of proposed save
 5320   Block%!40=&B0F
 5330   $(Block%+44)=LeafName$+CHR$0
 5340   IF NOT ((SenderWindow%=Save%) OR (SenderWindow%=Main%) OR (SenderWindow%=IconBar% AND SenderIcon%=IconBarIconHandle%)) THEN
 5350      SYS "Wimp_SendMessage",17,Block%,SenderWindow%,SenderIcon%
 5360   ENDIF
 5370ENDPROC
 5380:
 5390REM ******************************************************
 5400REM A Data Save Acknowlegement Message Has Been Received!
 5410REM ******************************************************
 5420DEF PROC_HandleMessage_DataSaveAck
 5430   LOCAL PathName$,Pointer%
 5440   Pointer%=Block%+44
 5450   REPEAT
 5460      PathName$+=CHR$?Pointer%
 5470      Pointer%+=1
 5480   UNTIL ?Pointer%=0
 5490   PROC_SaveTo(PathName$)
 5500   Block%!0=40+LENPathName$+4
 5510   Block%!0+=4-(Block%!0 MOD 4)
 5520   Block%!16=3 : REM Message_DataLoad
 5530   Block%!36=0
 5540   Block%!40=&B0F
 5550   $(Block%+44)=PathName$+CHR$(0)
 5560   SYS "Wimp_SendMessage",18,Block%,SenderWindow%,SenderIcon%
 5570ENDPROC
 5580:
 5590REM ************************************************
 5600REM A File has been double clicked on, do I want it?
 5610REM ************************************************
 5620DEF PROC_DataOpen
 5630LOCAL File$
 5640   IF Block%!40=&B0F THEN
 5650      File$=FN_ReadString(Block%+44)
 5660      Block%!12=Block%!8
 5670      Block%!16=4
 5680      SYS "Wimp_SendMessage",17,Block%,Block%!4
 5690      PROC_DoActualLoadThing(File$)
 5700   ENDIF
 5710ENDPROC
 5720:
 5730REM *****************************************************
 5740REM Read a string from a pointer, using a zero-terminator
 5750REM *****************************************************
 5760DEF FN_ReadString(Pointer%)
 5770   LOCAL String$
 5780   WHILE ?Pointer%<>0
 5790      String$+=CHR$?Pointer%
 5800      Pointer%+=1
 5810   ENDWHILE
 5820=String$
 5830:
 5840REM ************************************************************************
 5850REM This Bit Does The Actual Saving Of The Data When Requested By The Filer.
 5860REM ************************************************************************
 5870DEF PROC_SaveTo(PathName$)
 5880   Pointer%=LENPathName$
 5890   WHILE Pointer%>1 AND MID$(PathName$,Pointer%,1)<>"."
 5900      Pointer%-=1
 5910   ENDWHILE
 5920   IF Pointer%=1 THEN ERROR 2001,"To save, drag the icon to a directory viewer."
 5930   SYS "Wimp_CreateMenu",,-1
 5940   SaveFile%=OPENOUT(PathName$)
 5950   REM Open Out A File And Print Out All the information!
 5960   FOR Loop%=0 TO 37
 5970      PRINT #SaveFile%,FN_ReadIconText(Main%,Loop%,FALSE)
 5980   NEXT
 5990   PRINT #SaveFile%,FN_ReadIconText(Main%,TapeNumber%,FALSE)
 6000   REM Then Close the file again
 6010   CLOSE #SaveFile%
 6020   OSCLI "SetType "+PathName$+" B0F"
 6030   REM Overwrite SaveWindow Text With Full Pathname For Future Saves!
 6040   PROC_SetIconText(4,Save%,PathName$)
 6050ENDPROC
 6060:
 6070REM *********************************************************
 6080REM This Handles The Dragging Of THe Outline Of The Save Box.
 6090REM *********************************************************
 6100DEF PROC_DragSave
 6110   LOCAL flags%,byte%
 6120   DragASprite_Active% = FALSE
 6130   SYS "XOS_SWINumberFromString",,"DragASprite_&00" TO ;flags%
 6140   SYS "OS_Byte",161,28 TO ,,byte%
 6150   IF (flags% AND 1)=0 AND (byte% AND 2)=2 THEN DragASprite_Active% = TRUE
 6160   !Block%=Save%
 6170   SYS "Wimp_GetWindowState",,Block%
 6180   OffsetX%=Block%!4-Block%!20
 6190   OffsetY%=Block%!16-Block%!24
 6200   Block%!0=Save%
 6210   Block%!4=0
 6220   SYS "Wimp_GetIconState",,Block%
 6230   !Block%=Save%
 6240   Block%!4=5
 6250   Block%!8=Block%!8+OffsetX%
 6260   Block%!12=Block%!12+OffsetY%
 6270   Block%!16=Block%!16+OffsetX%
 6280   Block%!20=Block%!20+OffsetY%
 6290   Block%!24=0
 6300   Block%!28=0
 6310   Block%!32=&7FFFFFFF
 6320   Block%!36=&7FFFFFFF
 6330   IF DragASprite_Active% THEN
 6340      SYS "DragASprite_Start",197,1,"file_b0f",Block%+8,Block%+24
 6350   ELSE
 6360      SYS "Wimp_DragBox",,Block%
 6370   ENDIF
 6380ENDPROC
 6390:
 6400REM **********************************************************
 6410REM When A File Is Dropped Onto My Icon Bar Icon, I Come Here!
 6420REM **********************************************************
 6430DEF PROC_FileDroppedOnMe
 6440   IF Block%!40 =&B0F THEN
 6450      SaveName$=$(Block%+44)
 6460      Block%!12=Block%!8
 6470      Block%!16=4
 6480      SYS "Wimp_SendMessage",17,Block%,Block%!4
 6490      PROC_DoActualLoadThing(SaveName$)
 6500   ENDIF
 6510ENDPROC
 6520:
 6530REM *******************************************************************************
 6540REM Control Comes Here When A Valid File Type Has Been Dropped Onto My Application.
 6550REM *******************************************************************************
 6560DEF PROC_LoadData(FileName$)
 6570   LoadFile%=OPENIN(FileName$)
 6580   FOR LoadLoop%=0 TO 37
 6590      INPUT# LoadFile%,TempText$
 6600      PROC_SetIconText(LoadLoop%,Main%,TempText$)
 6610      PROC_Redraw(Main%,LoadLoop%)
 6620   NEXT
 6630   INPUT# LoadFile%,TempText$
 6640   PROC_SetIconText(TapeNumber%,Main%,TempText$)
 6650   PROC_Redraw(Main%,TapeNumber%)
 6660   CLOSE #LoadFile%
 6670ENDPROC
 6680:
 6690REM *********************************************************************
 6700REM Reads State Of Icons in Window Stated and Returns The First Selected
 6710REM Icon In The Give Exclusive Selection Group. (-1 = None Selected)
 6720REM ********************************************************************
 6730DEF FN_ReadESGSelected(WindowHandle%,Esg%)
 6740   LOCAL Mask%,Pattern%
 6750   Mask%   = (1<<21)+(31<<16)       : REM Bit 21 and Bits 16-20
 6760   Pattern%= (1<<21)+(Esg%<<16)     : REM Selected and ESG X
 6770   SYS "Wimp_WhichIcon",WindowHandle%,Block%+200,Mask%,Pattern%
 6780=Block%!200
 6790:
 6800:
 6810REM ***************************************************************************************************
 6820REM ALTHOUGH A LOT OF THE ABOVE CODE IS STILL VERY SPECIFIC TO THIS PROGRAM, IT CAN BE EASILY ADAPTED
 6830REM ALL CODE BELOW THIS LINE IS UNLIKELY TO BE OF MUCH USE TO ANY OTHER APPLICATION
 6840REM ***************************************************************************************************
 6850:
 6860:
 6870REM *********************************************
 6880REM Swaps the case of of the specified character.
 6890REM *********************************************
 6900DEF PROC_SwapCase(Window%,Icon%,Index%)
 6910   IF Index%<LEN(FN_ReadIconText(Main%,Icon%,FALSE)) THEN
 6920      IconText$=FN_ReadIconText(Main%,Icon%,FALSE)
 6930      C%=ASC(MID$(IconText$,Index%+1,1)) AND &DF
 6940      IF C%>=&41 AND C%<=&5A THEN
 6950         C$=CHR$(ASC(MID$(IconText$,Index%+1,1)) EOR &20)
 6960         MID$(IconText$,Index%+1,1)=C$
 6970         PROC_SetIconText(Icon%,Window%,IconText$)
 6980         PROC_Redraw(Main%,Icon%)
 6990      ENDIF
 7000      PROC_SetCaretPosition(Icon%,Index%+1)
 7010   ENDIF
 7020ENDPROC
 7030:
 7040REM **************************************************
 7050REM Move Caret Down To The Next Entry, With Wrap-round
 7060REM **************************************************
 7070DEF PROC_MoveDownAnEntry
 7080   IF Icon%<22 OR (Icon%>23 AND Icon%<26) THEN PROC_SetCaretPosition(Icon%+2,Index%)
 7090   IF Icon%=22 OR Icon%=23 THEN PROC_SetCaretPosition(Icon%+6,Index%)
 7100   IF Icon%>27 AND Icon%<36 THEN PROC_SetCaretPosition(Icon%+2,Index%)
 7110   IF Icon%=36 OR Icon%=37 THEN PROC_SetCaretPosition(Icon%-36,Index%)
 7120ENDPROC
 7130:
 7140REM ********************************************
 7150REM Move Caret Up To Next Entry, With Wrap-round
 7160REM ********************************************
 7170DEF PROC_MoveUpAnEntry
 7180   IF (Icon%<24 AND Icon%>1) OR (Icon%<38 AND Icon%>29) THEN PROC_SetCaretPosition(Icon%-2,Index%)
 7190   IF Icon%=28 OR Icon%=29 THEN PROC_SetCaretPosition(Icon%-6,Index%)
 7200   IF Icon%=26 OR Icon%=27 THEN PROC_SetCaretPosition(Icon%-2,Index%)
 7210   IF Icon%=00 OR Icon%=01 THEN PROC_SetCaretPosition(Icon%+36,Index%)
 7220ENDPROC
 7230:
 7240REM **********************************************************
 7250REM Printout the contents of the writable icons!!!
 7260REM **********************************************************
 7270DEF PROC_PrintOut
 7280   CASE FN_ReadESGSelected(Options%,9) OF
 7290      WHEN 0 : PROC_PrintTextMode(NlqON$)
 7300      WHEN 1 : PROC_PrintTextMode(NlqOFF$)
 7310      WHEN 5 : PROC_PrintGraphicsMode
 7320      OTHERWISE ERROR 2001, "Please select a printout mode from the options window and try again"
 7330   ENDCASE
 7340ENDPROC
 7350:
 7360REM *****************************************************
 7370REM Print out the label in text mode (non Risc OS)
 7380REM Parameter is an optional control string (ie NLQ etc.)
 7390REM *****************************************************
 7400DEF PROC_PrintTextMode(Prelog$)
 7410   LOCAL L%
 7420   IF FN_Printer_NotOnLine THEN ENDPROC
 7430   SYS "Hourglass_On"
 7440   :
 7450   SYS "OS_Byte",3,10          :REM SCREEN OFF, PRINTER ON.
 7460   PROC_SendData(Prelog$)      :REM Set NLQ Mode
 7470   VDU 27,15                   :REM Condensed print ON
 7480   :
 7490   PRINT "  ";FN_ReadIconText(Main%,24,TRUE);"| ";FN_ReadIconText(Main%,26,FALSE)
 7500   PRINT "  ";FN_RightJustify(25,31);" | ";FN_RightJustify(27,31)
 7510   PRINT LongEqual$
 7520   FOR L%=0 TO 23 STEP 2
 7530      PRINT "  ";FN_ReadIconText(Main%,L%,TRUE);"| ";FN_ReadIconText(Main%,L%+1,FALSE)
 7540   NEXT
 7550   PRINT LongEqual$
 7560   PRINT "A: ";FN_ReadIconText(Main%,24,FALSE);" - ";FN_ReadIconText(Main%,25,FALSE);FN_EndOfLineLessFive;FN_ReadIconText(Main%,TapeNumber%,FALSE)
 7570   PRINT "B: ";FN_ReadIconText(Main%,26,FALSE);" - ";FN_ReadIconText(Main%,27,FALSE)
 7580   PRINT LongEqual$
 7590   FOR L%=28 TO 36 STEP 2
 7600      PRINT "  ";FN_ReadIconText(Main%,L%,TRUE);"| ";FN_ReadIconText(Main%,L%+1,FALSE)
 7610   NEXT
 7620   PRINT LongMinus$
 7630   :
 7640   FOR L%=0 TO VAL(FormLength$)
 7650      PRINT :REM short Form Feed
 7660   NEXT
 7670   :
 7680   SYS "OS_Byte",3,00          :REM SCREEN ON, PRINTER OFF.
 7690   SYS "Hourglass_Off"
 7700ENDPROC
 7710:
 7720REM **********************************************************
 7730REM Function to check if printer is on line,
 7740REM If printer is not online TRUE is returned, otherwise FALSE
 7750REM **********************************************************
 7760DEF FN_Printer_NotOnLine
 7770   SYS "Hourglass_On"
 7780   REPEAT
 7790      PrinterOnLine=TRUE : What%=0
 7800      Now%=TIME
 7810      Before%=ADVAL(-4)
 7820      VDU 2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3
 7830      Now%=TIME : REPEAT UNTIL TIME>Now%+100
 7840      After%=ADVAL(-4)
 7850      IF Before%<>After% THEN
 7860         SYS "Hourglass_Off"
 7870         PrinterOnLine=FALSE
 7880         $Block%="The Printer is not responding, please check that it has paper, it is switched on and is on-line. Try again?"+CHR$(0)
 7890         SYS "Wimp_ReportError",Block%,%10011,MyTaskName$ TO ,What%
 7900         SYS "Hourglass_On"
 7910      ENDIF
 7920   UNTIL PrinterOnLine OR (NOT PrinterOnLine AND What%=2)
 7930   SYS "Hourglass_Off"
 7940   IF What%=2 THEN =TRUE
 7950=FALSE
 7960:
 7970REM ******************************************************************
 7980REM Prints contents of Icon(Icon%) right justified in a field of Chars
 7990REM ******************************************************************
 8000DEF FN_RightJustify(Icon%,Char%)
 8010   Text$=FN_ReadIconText(Main%,Icon%,FALSE)
 8020=STRING$(Char%-LEN(Text$)," ")+Text$
 8030:
 8040REM *******************************************************
 8050REM Tabs to the end of the line except for five characters.
 8060REM *******************************************************
 8070DEF FN_EndOfLineLessFive
 8080Length%=LEN(FN_ReadIconText(Main%,TapeNumber%,FALSE))
 8090IF Length%=5 THEN TotLen%=63 ELSE TotLen%=63
 8100Ans$=STRING$(TotLen%-LEN("  A: "+FN_ReadIconText(Main%,24,FALSE)+" - "+FN_ReadIconText(Main%,25,FALSE))," ")
 8110=Ans$
 8120:
 8130REM **********************************************************************
 8140REM This is purely for program variables and is nothing to do with Risc_OS
 8150REM **********************************************************************
 8160DEF PROC_Initialise_Program_Variables
 8170   REM Variables to do with RiscOS PDriver InterFace
 8180   DIM Box% 16 : DIM Box2% 16
 8190   DIM Matrix% 16
 8200   ScaleX%=1 : ScaleY%=1   :REM For Future Expansion?
 8210   Matrix%!04=0    : Matrix%!00=2^16*ScaleX%
 8220   Matrix%!08=0    : Matrix%!12=2^16*ScaleY%
 8230   DIM Origin% 8
 8240:
 8250   DragASprite_Active% = FALSE
 8260   IconBarMenu%    = 0
 8270   MainWinMenu%    = 1
 8280   TapeNumber%     = 53
 8290   LongEqual$      = STRING$(68,"=")
 8300   LongMinus$      = STRING$(68,"-")
 8310   New%            = TRUE
 8320   NLQ%            = TRUE
 8330   NlqON$          = "27,120,1"
 8340   NlqOFF$         = "27,120,0"
 8350   PrintFile$      = "PrintOut"
 8360   LatestVer%      = 2             : REM Version Number Of Config File. Change If File Is Made Incompatable.....
 8370   OldName$        = ""
 8380:
 8390   REM Give names to some of the icons etc. to make the program more readable
 8400   BackGround%= -1 : IconBar%= -2 : PrintF%=49 : PrintL%=47 : PrintD%=48
 8410   OptionsOKF%= 28 : OptionsOKL%=26 : OptionsOKD%=27 : SaveIcon%= 0 : SaveOKF%=11 : SaveOKL%=9 : SaveOKD% = 10
 8420   TopSetSideONEStart%=00 : TopSetSideONEEnd%=22 : TopSetSideTWOStart%=01 : TopSetSideTWOEnd%=23
 8430   BtmSetSideONEStart%=28 : BtmSetSideONEEnd%=36 : BtmSetSideTWOStart%=29 : BtmSetSideTWOEnd%=37
 8440   TitleSideONE%=24 : TitleSideTWO%=26
 8450   ArtistSideONE%=25 : ArtistSideTWO%=27
 8460   NumberOfLines%=56 : Format%=66
 8470   DIM PDriver$(6)
 8480   PDriver$(0)="Null:" : PDriver$(1)="NLQ Printer"
 8490   PDriver$(2)="Draft Printer" : PDriver$(6)="RiscOS Driver"
 8500   PROC_ReadUserData
 8510:
 8520   REM Get SWI Numbers for font calls to speed up bottleneck in code
 8530   SYS "OS_SWINumberFromString",,"Font_FindFont" TO Find%
 8540   SYS "OS_SWINumberFromString",,"Font_LoseFont" TO Lose%
 8550   SYS "OS_SWINumberFromString",,"Font_SetFont" TO Set%
 8560   SYS "OS_SWINumberFromString",,"Font_Paint" TO Paint%
 8570:
 8580   DeskTopSave$="Run "+FN_ConvertSystemToString("Cassette$Dir")+CHR$(&0A)
 8590   BaseFont$=FN_ConvertSystemToString("Cassette$BaseFont")
 8600   BoldFont$=FN_ConvertSystemToString("Cassette$BoldFont")
 8610   TapeNumber$=FN_ConvertSystemToString("Tape$Prefix")
 8620   IF LEN(TapeNumber$)>2 THEN
 8630      Clipped$=LEFT$(TapeNumber$,2)
 8640      !Block%=9090
 8650      Error$="Tape$Prefix is set to longer than 2 characters. OK to clip to "+Clipped$+" Cancel to abort program"
 8660      $(Block%+4)=Error$ + CHR$0
 8670      SYS "Wimp_ReportError",Block%,%011,MyTaskName$ TO ,Result%
 8680      IF Result%=2 THEN PROC_CloseDown
 8690      TapeNumber$=Clipped$+" 00"
 8700   ELSE
 8710      TapeNumber$=TapeNumber$+" 00"
 8720   ENDIF
 8730ENDPROC
 8740:
 8750REM *************************************************
 8760REM If variable does not exist, return a NULL string.
 8770REM *************************************************
 8780DEF FN_ConvertSystemToString(Variable$)
 8790   LOCAL Loop%,Flag%,Answer$
 8800   FOR Loop%=100 TO 150 STEP 4 : Block%!Loop%=0 : NEXT
 8810   SYS "XOS_ReadVarVal",Variable$,Block%+100,50,0,3 TO ;Flag%
 8820   IF (Flag% AND 1) THEN Answer$="" ELSE Answer$=FN_ReadString(Block%+100)
 8830=Answer$
 8840:
 8850REM *****************************************************************************
 8860REM Store User Configurable Settings In Config File Within !Cassette Application.
 8870REM *****************************************************************************
 8880DEF PROC_StoreUserData
 8890   DataFile%=OPENOUT"<Cassette$Dir>.Resources.Config"
 8900   BPUT #DataFile%,LatestVer%
 8910   PRINT #DataFile%,FN_ReadIconText(Options%,12,FALSE)
 8920   PRINT #DataFile%,FN_ReadIconText(Options%,16,FALSE)
 8930   PRINT #DataFile%,FN_ReadIconText(Options%,20,FALSE)
 8940   PRINT #DataFile%,FN_ReadESGSelected(Options%,9)
 8950   CLOSE #DataFile%
 8960   SYS "Wimp_CreateMenu",,-1
 8970ENDPROC
 8980:
 8990REM ****************************************************************************
 9000REM Read User Configurable Settings In Config File Within !Cassette Application.
 9010REM ****************************************************************************
 9020DEF PROC_ReadUserData
 9030   DataFile%=OPENIN"<Cassette$Dir>.Resources.Config"
 9040   IF DataFile%=0 THEN ENDPROC
 9050   Ver%=BGET#DataFile%
 9060   INPUT #DataFile%,NlqON$
 9070   INPUT #DataFile%,NlqOFF$
 9080   INPUT #DataFile%,FormLength$
 9090   INPUT #DataFile%,SelectedPrinterIcon
 9100   CLOSE #DataFile%
 9110   IF Ver%<LatestVer% THEN ERROR 1000,"Incompatible Configuration File."
 9120   IF SelectedPrinterIcon=15 THEN SelectedPrinterIcon=5 : REM Fudge for template change - Stu
 9130   PROC_SetIconText(20,Options%,FormLength$)
 9140   PROC_Redraw(Options%,20)
 9150   PROC_SetIconText(12,Options%,NlqON$)
 9160   PROC_Redraw(Options%,12)
 9170   PROC_SetIconText(16,Options%,NlqOFF$)
 9180   PROC_Redraw(Options%,16)
 9190   PROC_SetIconText(45,Main%,PDriver$(SelectedPrinterIcon+1))
 9200   PROC_Redraw(Main%,45)
 9210   PROC_SelectIcon(Options%,0,SelectedPrinterIcon=0)
 9220   PROC_SelectIcon(Options%,1,SelectedPrinterIcon=1)
 9230   PROC_SelectIcon(Options%,5,SelectedPrinterIcon=5)
 9240ENDPROC
 9250:
 9260DEF PROC_SelectIcon(Window%,Icon%,Flag%)
 9270   Block%!0=Window%
 9280   Block%!4=Icon%
 9290   Block%!8=(-1*Flag%)<<21
 9300   Block%!12=1<<21
 9310   SYS "Wimp_SetIconState",,Block%
 9320ENDPROC
 9330:
 9340REM ****************************************************************************************
 9350REM This Takes A 'Numeric' String, Breaks it Down, And Sends The Value To The Output Device.
 9360REM ****************************************************************************************
 9370DEF PROC_SendData(Data$)
 9380   LOCAL Finish%,Count%
 9390   Count%=0 : Finish%=LEN(Data$)
 9400   Data$=Data$+"," : REM This is cheating...See WHILE Condition!!!!!!
 9410   REPEAT
 9420      Sub$=""
 9430      Pointer%=1
 9440      WHILE MID$(Data$,Pointer%,1)<>","
 9450         Sub$=Sub$+MID$(Data$,Pointer%,1)
 9460         Pointer%+=1
 9470      ENDWHILE
 9480      Data$=MID$(Data$,Pointer%+1)
 9490      PRINT CHR$(VAL(Sub$));
 9500      Count%=Count%+LEN(Sub$)+1
 9510   UNTIL Count%>=Finish%
 9520ENDPROC
 9530:
 9540***************************************************************************************************
 9550REM If The Program Was Started By Double Clicking On A &B0F File Then Load The File And Display It.
 9560***************************************************************************************************
 9570DEF PROC_LoadFileIfRequired
 9580   SYS "OS_GetEnv" TO Command$
 9590   I%=INSTR(Command$," -Load ")
 9600   IF I% THEN
 9610      I%+=LEN" -Load "
 9620      WHILE MID$(Command$,I%,1)=" ":I%+=1:ENDWHILE
 9630      FileName$=MID$(Command$,I%)
 9640      FileName$=LEFT$(FileName$,INSTR(FileName$+" "," ")-1)
 9650      IF FileName$<>"" THEN StartWithLoad=TRUE : PROC_DoActualLoadThing(FileName$)
 9660   ELSE
 9670      StartWithLoad=FALSE
 9680   ENDIF
 9690ENDPROC
 9700:
 9710***************************************************************************************************
 9720REM Sets The Save Name In The Save Icon To The Full Pathname Of The Loaded File, And Then Loads It.
 9730***************************************************************************************************
 9740DEF PROC_DoActualLoadThing(FileName$)
 9750   PROC_SetIconText(4,Save%,FileName$)
 9760   PROC_LoadData(FileName$)
 9770   PROC_OpenMainWindow(FALSE)
 9780ENDPROC
 9790:
 9800****************************************************************
 9810REM Initialises User Sprite Area, and Loads sprite file into it.
 9820REM Load sprite file appropriate to current mode via extn.
 9830****************************************************************
 9840DEF PROC_Initialise_Sprites
 9850   LOCAL yeigfactor%,ext$,fhandle%
 9860   :
 9870   IF Version>=300 THEN
 9880      SYS "OS_ReadModeVariable",-1,5 TO ,,yeigfactor%              : REM Read the current mode ratio
 9890      ext$ = "2"+STR$(1<<yeigfactor%)                              : REM Translate ratio into a file name extension
 9900      fhandle%=OPENIN("<Cassette$Dir>.Resources.Sprites"+ext$)     : REM Attempt to locate a file of that name
 9910      IF fhandle%=0 THEN
 9920         ext$=""
 9930         fhandle%=OPENIN"<Cassette$Dir>.Resources.Sprites"
 9940      ENDIF                                                        : REM If not present locate default sprites
 9950      IF fhandle%=0 THEN ERROR 0,"Unable to locate default sprite file for !Cassette"
 9960      FileLength%=4+(EXT#fhandle%)                                 : REM Get the length of the sprites file
 9970      CLOSE #fhandle%
 9980   ENDIF
 9990   ext$=""
10000   :
10010   DIM SpriteArea% FileLength%                                  : REM Create the user sprite area
10020   SpriteArea%!0  = FileLength%                                 : REM and load the sprites into it.
10030   SpriteArea%!4  =  0
10040   SpriteArea%!8  = 16
10050   SpriteArea%!12 = 16
10060   SYS "OS_SpriteOp",&10A,SpriteArea%,"<Cassette$Dir>.Resources.Sprites"+ext$
10070ENDPROC
10080:
10090*******************************************
10100REM Communicate with RiscOS Printer Driver.
10110*******************************************
10120DEF PROC_PrintGraphicsMode
10130   REM Check For Presence Of PrinterDriver Modules
10140   SYS "XOS_SWINumberFromString",,"PDriver_Info" TO ;Flag%
10150   IF Flag% AND 1 THEN ERROR 2001,"No Printer Driver, Please Load and Try Again"
10160   :
10170   REM If RiscOS 3.x Machine, Modules are always in ROM, but need to be initialised
10180   REM by the !Printers application before printing can begin.
10190   SYS "XPDriver_Info" TO ;Flag%
10200   IF Flag% AND 1 THEN ERROR 2001,"Use !Printers to select your required printer driver and try again"
10210   :
10220   REM Check if the font manager will support Kerning
10230   SYS "XOS_SWINumberFromString",,"Font_ScanString" TO Flag%
10240   IF Flag% AND 1 THEN NewFontManager%=FALSE ELSE NewFontManager%=TRUE
10250:
10260   LOCAL PrintFile%,OldJob%
10270   LOCAL White%, PageToPrint%
10280   White%=&FFFFFF00 : E%=0 : Usage%=0
10290   REM Create storage space for clipped flags during printing.
10300   ClippedArray%=ClippedArray% : IF ClippedArray%=0 THEN DIM ClippedArray% 40
10310   FOR Temp%=0 TO 40 STEP4 : ClippedArray%!Temp%=0 : NEXT
10320   :
10330   REM Open Destination file and set up local error handler that will close it again on error
10340   PrintFile%=OPENOUT"printer:"
10350   LOCAL ERROR
10360   ON ERROR LOCAL : RESTORE ERROR : Err$=In$+"-"+STR$(In%)+" : "+REPORT$+"-"+STR$(ERL) : CLOSE #PrintFile% : ERROR ERL,Err$
10370:
10380   REM Start up a print job for this file, remembering the handle of any previous print job, then set up local error handler
10390   SYS "PDriver_SelectJob",PrintFile%,"Boffin Print Job" TO OldJob%
10400   SYS "Hourglass_On"
10410   LOCAL ERROR
10420   ON ERROR LOCAL : RESTORE ERROR : In%=ERL : In$=REPORT$ : SYS "Hourglass_Off" : SYS "PDriver_AbortJob",PrintFile% : SYS "PDriver_SelectJob",OldJob% : ERROR In%,In$
10430:
10440   REM Start print loop
10450   PROC_GetDocumentSize(Box%)
10460   PROC_FitToPage(Height%,Width%)
10470:
10480   REM Set Up To Print Just One Rectangle
10490   SYS "PDriver_GiveRectangle",,Box%,Matrix%,Origin%,White%
10500:
10510   REM Start printing.
10520   SYS "PDriver_DrawPage",1,Box2%,0,0 TO CopiesLeft%
10530   WHILE CopiesLeft%
10540      PROC_Mini_WIMP_Poll
10550      PROC_DrawInlay(Box2%)
10560      SYS "PDriver_GetRectangle",,Box% TO CopiesLeft%
10570   ENDWHILE
10580:
10590   REM Printing Complete, Terminate this print job
10600   SYS "PDriver_EndJob",PrintFile%
10610:
10620   REM Return to the first of our local error handlers
10630   RESTORE ERROR
10640:
10650   REM And Then go back to whatever print job was active (if any) on entry to this PROC.
10660   SYS "Hourglass_Off"
10670   SYS "PDriver_SelectJob",OldJob%
10680:
10690   REM Go back to the callers error handler
10700   RESTORE ERROR
10710:
10720   REM Close the destination file
10730   CLOSE #PrintFile%
10740:
10750ENDPROC
10760:
10770DEF PROC_GetDocumentSize(Box%)
10780   Height%=725      : Width%=725
10790   X1%=0  :  X2%=Width%/2  : X3%=Width%
10800   Y1%=0  :  Y2%=163       : Y3%=Y2%+92 : Y4%=Height%-70 : Y5%=Height%
10810   Box%!0=0         : Box%!4=0
10820   Box%!8=Width%+20 : Box%!12=Height%+20 : REM To Allow For Rounding Errors In Conversion Routines.
10830ENDPROC
10840:
10850DEF PROC_FitToPage(Height%,Width%)
10860   LOCAL Left%,Bottom%,Right%,Top%
10870   REM Returns values in Millipoints, Height% & Width% are in OS Units. 1 OS Unit = 400 Millipoints
10880   SYS "PDriver_PageSize" TO ,,,Left%,Bottom%,Right%,Top%
10890   OriginX%=((Right%+Left%)-(Width%*400))/2 : OriginY%=Top%-(Height%*400)
10900   Origin%!0=OriginX% : Origin%!4=OriginY%
10910ENDPROC
10920:
10930DEF PROC_DrawInlay(Co_ordinateBlock%)
10940   SYS Find%,,BaseFont$,09*16,12*16,0,0 TO BaseFontHandle%
10950   SYS Find%,,BoldFont$,10*16,13*16,0,0 TO BoldFontHandle%
10960:
10970   PROC_FontPaint("",FN_ReadIconText(Main%,24,FALSE),X1%+10,Y4%+40,24)
10980   PROC_FontPaint("",FN_ReadIconText(Main%,25,FALSE),X1%+10,Y4%+05,25)
10990   PROC_FontPaint("",FN_ReadIconText(Main%,26,FALSE),X2%+10,Y4%+40,26)
11000   PROC_FontPaint("",FN_ReadIconText(Main%,27,FALSE),X2%+10,Y4%+05,27)
11010:
11020   Separation=(Y4%-Y3%)/12
11030   SpaceStartY=Y3% + Separation
11040   Track%=22
11050   SYS "ColourTrans_SetGCOL",&D0D0D000,,,0,0
11060   PROC_Mini_WIMP_Poll
11070   WHILE SpaceStartY <= Y4%
11080      IF SpaceStartY < Y4%-10 THEN MOVE X1%,SpaceStartY :DRAW X3%,SpaceStartY
11090      Text$=FN_ReadIconText(Main%,Track%,FALSE)
11100      PROC_FontPaint("",Text$,X1%+10,SpaceStartY-25,Track%)
11110      Text$=FN_ReadIconText(Main%,Track%+1,FALSE)
11120      PROC_FontPaint("",Text$,X2%+10,SpaceStartY-25,Track%+1)
11130      SpaceStartY+=Separation
11140      Track%-=2
11150   ENDWHILE
11160:
11170   SpineLine1$=FN_ReadIconText(Main%,24,FALSE)+" - "+FN_ReadIconText(Main%,25,FALSE)
11180   SpineLine2$=FN_ReadIconText(Main%,26,FALSE)+" - "+FN_ReadIconText(Main%,27,FALSE)
11190   PROC_FontPaint("Bold",SpineLine1$,X1%+10,Y2%+55,24)
11200   PROC_FontPaint("Bold",SpineLine2$,X1%+10,Y2%+15,26)
11210   PROC_PrintTapeNumber
11220:
11230   Separation=(Y2%-Y1%)/5
11240   SpaceStartY=Y1% + Separation
11250   Track%=36
11260   PROC_Mini_WIMP_Poll
11270   WHILE SpaceStartY <= Y2%
11280      IF SpaceStartY < Y2%-10 MOVE X1%,SpaceStartY :DRAW X3%,SpaceStartY
11290      Text$=FN_ReadIconText(Main%,Track%,FALSE)
11300      PROC_FontPaint("",Text$,X1%+10,SpaceStartY-25,Track%)
11310      Text$=FN_ReadIconText(Main%,Track%+1,FALSE)
11320      PROC_FontPaint("",Text$,X2%+10,SpaceStartY-25,Track%+1)
11330      SpaceStartY+=Separation
11340      Track%-=2
11350   ENDWHILE
11360:
11370   SYS "ColourTrans_SetGCOL",&00000000,,,0,0
11380   RECTANGLE X1%,Y1%,X3%,Y5%
11390   RECTANGLE X1%,Y2%,X3%,Y3%-Y2%
11400   MOVE X2%,Y1% : DRAW X2%,Y2%
11410   MOVE X2%,Y3% : DRAW X2%,Y4%
11420   MOVE X1%,Y4% : DRAW X3%,Y4%
11430:
11440   SYS Lose%,BaseFontHandle%
11450   SYS Lose%,BoldFontHandle%
11460ENDPROC
11470:
11480*****************************************************************
11490REM Select required Font and colour, then print Message$ at X%,Y%
11500*****************************************************************
11510DEF PROC_FontPaint(PostFix$,Message$,X%,Y%,Icon%)
11520   LOCAL FontHandle%
11530   IF Message$="" THEN ENDPROC
11540   REM Dont Waste Time Messing about if nothing to print!
11550   IF PostFix$="" THEN
11560      SYS Set%,BaseFontHandle%
11570      Text$=FN_TrimToFit(Message$,48,Icon%)
11580   ELSE
11590      SYS Set%,BoldFontHandle%
11600      Text$=FN_TrimToFit(Message$,87,Icon%)
11610   ENDIF
11620   SYS "ColourTrans_SetFontColours",0,&FFFFFF00,&00000000
11630   :
11640   SYS Paint%,,Text$,&210,X%,Y%
11650ENDPROC
11660:
11670REM *****************************************************************************
11680REM Prints the tape number in a smaller point size at a fixed place on the inlay.
11690REM *****************************************************************************
11700DEF PROC_PrintTapeNumber
11710   LOCAL Text$,FontHandle%
11720   SYS Find%,,BaseFont$,6*16,8*16,0,0 TO FontHandle%
11730   SYS "ColourTrans_SetFontColours",0,&FFFFFF00,&00000000
11740   :
11750   Text$=FN_ReadIconText(Main%,TapeNumber%,TRUE)
11760   SYS Paint%,,Text$,&10,X3%-70,Y2%+75
11770   :
11780   SYS Lose%,FontHandle%
11790ENDPROC
11800:
11810REM *****************************************************************************************
11820REM Check the printed length of the text against the size in pixels, and shorten if required.
11830REM Uses : FN_WarnAboutClipping
11840REM *****************************************************************************************
11850DEF FN_TrimToFit(Text$,mm,Icon%)
11860   LOCAL NumberOfPrintableCharacters%
11870   Continue%=TRUE
11880   XLength%=(mm/25.4)*72000
11890   IF NewFontManager% THEN
11900      SYS "Font_ScanString",0,Text$,&100380,XLength%,15000,,,LEN(Text$) TO ,,,,,,,NumberOfPrintableCharacters%
11910   ELSE
11920      SYS "Font_StringWidth",,Text$,XLength%,15000,-1,LEN(Text$) TO ,,,,NumberOfPrintableCharacters%
11930   ENDIF
11940   TextToPrint$=LEFT$(Text$,NumberOfPrintableCharacters%)
11950   IF NumberOfPrintableCharacters%<LEN(Text$) AND ClippedArray%?Icon%=0 THEN
11960      Continue%=FN_WarnAboutClipping(Text$,TextToPrint$)
11970      ClippedArray%?Icon%=1
11980   ENDIF
11990   IF Continue%=FALSE THEN ERROR 2001,"Aborting Printout. OK to Continue"
12000=TextToPrint$
12010:
12020REM ************************************************************************************
12030REM If Clipping will occour, then display Warning message and allow user option to abort.
12040REM Uses: NONE
12050REM ************************************************************************************
12060DEF FN_WarnAboutClipping(IconText$,TextToPrint$)
12070   LOCAL Error$
12080   !Block%=0
12090   Error$ ="This Text - '"+IconText$+"' Does not fit. Clipping to '"+TextToPrint$+"'  OK To Continue, CANCEL To Abort."
12100   $(Block%+4)=Error$ + CHR$0
12110   SYS "Wimp_ReportError",Block%,%10011,MyTaskName$ TO ,Result%
12120   IF Result%=2 THEN Continue%=FALSE ELSE Continue%=TRUE
12130   SYS "Wimp_ReportError",Block%,1<<6,MyTaskName$
12140=Continue%
12150
12160DEF PROC_OpenSubMenu(Window%)
12170   SYS "Wimp_GetPointerInfo",,Block%
12180   SYS "Wimp_CreateMenu",,Window%,Block%!0-64,Block%!4+48
12190ENDPROC
12200:
12210REM **********************************************************************
12220REM Sets the case of all the writable icons to ensure a consistant format.
12230REM **********************************************************************
12240DEF PROC_FormatIconText
12250   LOCAL Loop%
12260   FOR Loop%=TopSetSideONEStart% TO TopSetSideTWOEnd% STEP 2
12270      PROC_SetIconText(Loop%,Main%,FN_CEW(Loop%))
12280      PROC_SetIconText(Loop%+1,Main%,FN_CEW(Loop%+1))
12290      PROC_Redraw(Main%,Loop%)
12300      PROC_Redraw(Main%,Loop%+1)
12310   NEXT
12320   FOR Loop%=BtmSetSideONEStart% TO BtmSetSideTWOEnd% STEP 2
12330      PROC_SetIconText(Loop%,Main%,FN_CEW(Loop%))
12340      PROC_SetIconText(Loop%+1,Main%,FN_CEW(Loop%+1))
12350      PROC_Redraw(Main%,Loop%)
12360      PROC_Redraw(Main%,Loop%+1)
12370   NEXT
12380   PROC_SetIconText(TitleSideONE%,Main%,FN_Icon_FTU(TitleSideONE%))
12390   PROC_SetIconText(TitleSideTWO%,Main%,FN_Icon_FTU(TitleSideTWO%))
12400   PROC_SetIconText(ArtistSideONE%,Main%,FN_Icon_FTU(ArtistSideONE%))
12410   PROC_SetIconText(ArtistSideTWO%,Main%,FN_Icon_FTU(ArtistSideTWO%))
12420   FOR Loop%= TitleSideONE% TO ArtistSideTWO%
12430      PROC_Redraw(Main%,Loop%)
12440   NEXT
12450ENDPROC
12460:
12470REM *************************************************
12480REM Function to Capitalise Each Word in a given Icon.
12490REM *************************************************
12500DEF FN_CEW(Icon%)
12510   LOCAL IconText$, Index%, End%, C%
12520   IconText$=FN_ReadIconText(Main%,Icon%,FALSE)
12530   REM If icon is empty, abandon format
12540   IF IconText$="" THEN =IconText$
12550   Index%=1 : End%=LEN(IconText$)
12560   REM Get 1st character
12570   WHILE Index%<=End%
12580      MID$(IconText$,Index%,1)=FN_Char_FTU(Icon%,Index%)
12590      Index%+=1
12600      C$=MID$(IconText$,Index%,1)
12610      REM Loop until end of word (or end of string)
12620      WHILE C$<>" " AND Index%<=End%
12630         MID$(IconText$,Index%,1)=FN_Char_FTL(Icon%,Index%)
12640         Index%+=1
12650         C$=MID$(IconText$,Index%,1)
12660      ENDWHILE
12670      REM Loop until next word found (Or end of string)
12680      WHILE C$=" " AND Index%<=End%
12690         Index%+=1
12700         C$=MID$(IconText$,Index%,1)
12710      ENDWHILE
12720      PRINTIndex%,End%
12730   ENDWHILE
12740=IconText$
12750:
12760REM *********************************************************
12770REM Function to Force all text in a given icon to UPPER CASE.
12780REM *********************************************************
12790DEF FN_Icon_FTU(Icon%)
12800   LOCAL IconText$
12810   IconText$=FN_ReadIconText(Main%,Icon%,FALSE)
12820   Index%=1 : End%=LEN(IconText$)
12830   WHILE Index%<=End%
12840      MID$(IconText$,Index%,1)=FN_Char_FTU(Icon%,Index%)
12850      Index%+=1
12860      C$=MID$(IconText$,Index%,1)
12870   ENDWHILE
12880=IconText$
12890:
12900REM *********************************************************
12910REM Function to Force all text in a given icon to LOWER CASE.
12920REM *********************************************************
12930DEF FN_Icon_FTL(Icon%)
12940   LOCAL IconText$
12950   IconText$=FN_ReadIconText(Main%,Icon%,FALSE)
12960   Index%=1 : End%=LEN(IconText$)
12970   WHILE Index%<=End%
12980      MID$(IconText$,Index%,1)=FN_Char_FTL(Icon%,Index%)
12990      Index%+=1
13000      C$=MID$(IconText$,Index%,1)
13010   ENDWHILE
13020:
13030REM **************************************************
13040REM Function to Force a given character to UPPER CASE.
13050REM **************************************************
13060DEF FN_Char_FTU(Icon%,Index%)
13070   LOCAL Temp$
13080   Temp$=MID$(IconText$,Index%,1)
13090   IF Temp$>="a" AND Temp$<="z" THEN Temp$=CHR$(ASC(Temp$) AND &DF)
13100=Temp$
13110:
13120REM **************************************************
13130REM Function to Force a given character to LOWER CASE.
13140REM **************************************************
13150DEF FN_Char_FTL(Icon%,Index%)
13160   LOCAL Temp$
13170   Temp$=MID$(IconText$,Index%,1)
13180   IF Temp$>="A" AND Temp$<="Z" THEN Temp$=CHR$(ASC(Temp$) OR &20)
13190=Temp$
13200:
13210REM ***************************************************************************************************************************
13220REM This message is unique to the Portable. It occures when the battery is too low for continued usage. It is a second stage
13230REM warning, the first stage invites the user to shut down the machine safely, but if this is not done then this stage two
13240REM message is sent out. If you are aware of the status of your file then you should prompt the user to save any modified
13250REM or unsaved files in your normal closedown manner. If you cannot do this, or the user does not respond (EG Machine is
13260REM unattended) then the application should save the data into the scrap directory by themselves.
13270REM **************************************************************************************************************************
13280DEF PROC_LowPowerWarning
13290   LOCAL SaveName$,Pointer%,LeafName$,MyScrapDir$
13300   MyScrapDir$=FN_ConvertSystemToString("Wimp$ScrapDir")
13310   IF MyScrapDir$="" THEN
13320      MyScrapDir$=FN_ConvertSystemToString("Wimp$Scrap")
13330      IF MyScrapDir$="" THEN ENDPROC
13340      Pointer%=LEN(MyScrapDir$)
13350      WHILE Pointer%>1 AND MID$(MyScrapDir$,Pointer%,1)<>"."
13360            Pointer%-=1
13370      ENDWHILE
13380      IF Pointer%=1 THEN ENDPROC
13390      MyScrapDir$=LEFT$(MyScrapDir$,(Pointer%-1))
13400   ENDIF
13410   MyScrapDir$=MyScrapDir$+".Cassette"
13420   OSCLI"CDir "+MyScrapDir$
13430   PROC_SaveTo(MyScrapDir$+"."+FN_InventSaveName)
13440ENDPROC
13450:
13460REM *******************************************************************
13470REM The filer is saving a desktop !Boot file, add my RUN command to it.
13480REM *******************************************************************
13490DEF PROC_DeskTopSave
13500   BPUT#(Block%!20),DeskTopSave$
13510ENDPROC
13520:
13530REM *******************************************************************************
13540REM Mini-WIMP POLL "routine" to allow printing to be a bit more in the background!.
13550REM *******************************************************************************
13560DEF PROC_Mini_WIMP_Poll
13570   SYS "PDriver_SelectJob",0
13580   SYS "Hourglass_Off"
13590   SYS "Wimp_Poll",0,Block% TO A%
13600   CASE A% OF
13610      WHEN 2 : SYS "Wimp_OpenWindow",,Block%   : REM allows auto Drag
13620      WHEN 3 : SYS "Wimp_CloseWindow",,Block%  : REM allows auto Close
13630      WHEN 17,18 : PROC_DecodeMessage(Block%!16)
13640   ENDCASE
13650   SYS "Hourglass_On"
13660   SYS "PDriver_SelectJob",PrintFile%
13670ENDPROC

� >!RunImage
�
-� A Public Domain Utility By Mark Bright.
(:
2� TRACE PROC
<4� TRACE TO "ADFS::4.$.!Scrap.ScrapDir.TRACETEXT"
F:
PVersion$="1.23 (20-Sep-93)"
Z:
d)ț "<Cassette$Dir>.Resources.Library"
n
x7� Block% 1024*4  :� General purpose WIMP workspace!
�:
��_Initialise_WIMP_System
�:
�$�_SetIconText(15,Info%,Version$)
�'�_SetIconText(4,Save%,"BoffBright")
�:
�� � �_Wimp_Error
�"�_Initialise_Program_Variables
�:
��_LoadFileIfRequired
�:
�� � �_Wimp_Error
�:
n� ********************************************************************************************************
n� All RISCOS/WIMP Specific Proceedures First, !Cassette Proc'S after.... Makes for a better skeleton prog!
n� ********************************************************************************************************
"
,�
6'   ș "Wimp_Poll",Mask%,Block% � A%
@   Ȏ A% �
JC      � 2 : ș "Wimp_OpenWindow",,Block%   : � allows auto Drag
TD      � 3 : ș "Wimp_CloseWindow",,Block%  : � allows auto Close
^      � 6 : �_ButtonPressed
h7      � 7 : �_DragBoxEnd(�_ReadIconText(Save%,4,�))
r'      � 8 : �_ProcessKey(Block%!24)
|      � 9 : �_MenuSelection
�.      � 17,18 : �_DecodeMessage(Block%!16)
�   �
�� �
�:
�/� *****************************************
�/� This is the WIMP Error handling routine !
�/� *****************************************
�� �_Wimp_Error
�   � Error$
�   ș "OS_Byte",3,0
�   ș "Wimp_DragBox",,-1
�   !Block%=�
�   Error$ = �$
^   � �<>2001 � Error$ += " (internal error code "+Þ+"). OK To Continue, CANCEL To Abort."
   $(Block%+4)=Error$ + �0
O   ș "Wimp_ReportError",Block%,%001 - (2*(�<>2001)),MyTaskName$ � ,Result%
&    � Result%=2 � �_CloseDown
0�
::
D*� ************************************
N*� Mouse 'Click' Whilst Over Menu Item.
X*� ************************************
b� �_MenuSelection
l%   � MenuActive% = IconBarMenu% �
v      Ȏ Block%!0 �
�>         � 0 : �_OpenSubMenu(Info%) : IconBarMenuActive%=�
�A         � 1 : �_OpenSubMenu(Options%) : IconBarMenuActive%=�
�E         � 2 : �_CloseDown : � <Select> on "quit" causes shutdown
�      �
�   �
�
�%   � MenuActive% = MainWinMenu% �
�      Ȏ Block%!0 �
�A         � 0 : �_OpenSubMenu(Info%) : MainWindowMenuActive%=�
�A         � 1 : �_OpenSubMenu(Save%) : MainWindowMenuActive%=�
�#         � 2 : �_FormatIconText
�D         � 3 : �_OpenSubMenu(Options%) : MainWindowMenuActive%=�
�!         � 4 : �_WipeIconText
      �
   �

 '   ș "Wimp_GetPointerInfo",,Block%
*   � (Block%!8 � 1) �
4D      � MenuActive% = IconBarMenu% � ș "Wimp_CreateMenu",,menu%
>H      � MenuActive% = MainWinMenu% � ș "Wimp_CreateMenu",,MainMenu%
H   �
R�
\:
f&� ********************************
p&� Mouse Button Status Has Changed.
z&� ********************************
�� �_ButtonPressed
�+� MouseX%,MouseY%,Button%,Window%,Icon%
�F   MouseX%=Block%!00 : � Block%!00 = Mouse X (Screen Co-ordinates)
�F   MouseY%=Block%!04 : � Block%!04 = Mouse Y (Screen Co-ordinates)
�0   Button%=Block%!08 : � Block%!08 = Buttons
�V   Window%=Block%!12 : � Block%!12 = Window Handle (BackGround = -1, IconBar = -2)
�Q   Icon%  =Block%!16 : � Block%!16 = Icon Handle ( Work Area BackGround = -1)
�
�/   � Window%=Options% � Icon%=OptionsOKF% �
�H      �_ButtonPress(Options%, OptionsOKF%, OptionsOKL%, OptionsOKD%)
�      �_StoreUserData
�   �
�
6   � Window%=IconBar% � Icon%=IconBarIconHandle% �
      Ȏ Button% �
)         � %001 : �_OpenMainWindow(�)
$)         � %100 : �_OpenMainWindow(�)
.(         � %010 : �_SetUpIconBarMenu
8      �
B   �
L
V9   � Button%<> %010 � Window%=Main% � Icon%=PrintF% �
`9      �_ButtonPress(Main%, PrintF%, PrintL%, PrintD%)
j      �_PrintOut
t   �
~
�'   � Button%=%010 � Window%=Main% �
�       Temp$=�_InventSaveName
�7      �_CreateMainWindowMenu(MouseX%,MouseY%,Icon%)
�   �
�
�6   � Window%=Save% � Icon%=SaveIcon%  � �_DragSave
�+   � Window%=Save% � Icon%=SaveOKF%   �
�<      �_ButtonPress(Save%, SaveOKF%, SaveOKL%, SaveOKD%)
�-      �_SaveTo(�_ReadIconText(Save%,4,�))
�   �
�
�,   � Button%<> %010 � Window%=Options% �
      Ȏ Icon% �

Y         �  0,1,5 : �_SetIconText(45,Main%,PDriver$(�_ReadESGSelected(Options%,9)+1))
      �
      �_Redraw(Main%,45)
(   �
2�
<:
Fg� *************************************************************************************************
Pg� Determine if a new name is required, if so generate an intelligent name based on cassette number.
Zg� *************************************************************************************************
d� �_InventSaveName
n   Prefix$="Cass_"
x[   Temp$=�_ReadIconText(Save%,4,�) : Temp2$=Prefix$+�_ReadIconText(Main%,TapeNumber%,�)
�5   � �Temp$,10)="BoffBright" � OldName$<>Temp2$ �
�8      NewSaveName$=�_ConvertSoftToHardSpaces(Temp2$)
�       � �(Temp$)>�(Temp2$) �
�         Pointer%=�(Temp$)
�B         ȕ �Temp$,Pointer%,1)<>"." � Pointer%>0:Pointer%-=1:�
�A         �_SetIconText(4,Save%,�Temp$,Pointer%)+NewSaveName$)
�      �
�0         �_SetIconText(4,Save%,NewSaveName$)
�      �
�      OldName$=Temp2$
�   �
�=Temp2$
�:
m� *******************************************************************************************************
m� Change all occurances of <SPACE> in the tape number to <ALT-SPACE> to stop the filer throwing a wobbly.
m� *******************************************************************************************************
"&� �_ConvertSoftToHardSpaces(Name$)
,   Pointer%=�(Name$)
6   �
@"      Char$=�Name$,Pointer%,1)
J      � Char$=" " �
T         Char$="�"
^%         �Name$,Pointer%,1)=Char$
h      �
r      Pointer%-=1
|   � Pointer%=1
�
=Name$
�:
�$********************************
�"� 'Press' a button in a window
�$********************************
�3� �_ButtonPress(Window%, Front%, Light%, Dark%)
�   � TimeNow%
�*   �_SetIconColour(Window%, Light%, 4)
�)   �_SetIconColour(Window%, Dark%, 0)
�+   �_SetIconColour(Window%, Front%, 14)
�   TimeNow% = �
�   �
�   � � > TimeNow%+25
*   �_SetIconColour(Window%, Light%, 0)
)   �_SetIconColour(Window%, Dark%, 4)
*   �_SetIconColour(Window%, Front%, 1)
&�
0:
:0********************************************
D.� Change the colour of an icon in a window
N0********************************************
X.� �_SetIconColour(Window%, Icon%, Colour%)
b   Block%!0  = Window%
l   Block%!4  = Icon%
v    Block%!8  = Colour% << 28
�   Block%!12 = %1111 << 28
�&   ș "Wimp_SetIconState",, Block%
��
�:
�I� *******************************************************************
�I� When a key is pressed, Check if it concerns me. If not, Pass it on!
�I� *******************************************************************
�� �_ProcessKey(KeyPressed)
�   � Icon%,Index%,Window%
�   Window%=Block%!0
�   Icon%=Block%!4
�   Index%=Block%!20
�   Ȏ KeyPressed �

B      � &180 : �_ButtonPress(Main%, PrintF%, PrintL%, PrintD%)
                   �_PrintOut
       � <Print>
*
4      � &18A
>      � <Tab>
H"                  � Icon%<38 �
RY                     �_SetCaretPosition(Icon%-((Icon% � 2)=0)+((Icon% � 2)=1),Index%)
\                  �
f
p      � &0D
z      � <Return>
�9                  � Window%=Main% � �_MoveDownAnEntry
�'                  � Window%=Save% �
�K                     �_ButtonPress(Save%, SaveOKF%, SaveOKL%, SaveOKD%)
�<                     �_SaveTo(�_ReadIconText(Save%,4,�))
�                  �
�
�      � &1E
�      � <Home>
�7                  �_SetCaretPosition((Icon% � 2),0)
�
�      � &18F
�      � <Cursor Up>
�9                  � Window% = Main% � �_MoveUpAnEntry
	
	      � &18E
	      � <Cursor Down>
	$;                  � Window% = Main% � �_MoveDownAnEntry
	.
	8      � &199
	B      � <Shift><f9>
	L8                  � Window% = Main% � �_WipeIconText
	V
	`      � &1CA
	j      � <f10>
	t4                  �_SwapCase(Main%,Icon%,Index%)
	~
	�      � &1CB
	�)      � <f11> - Delete to end of line
	�B                  Text$=��_ReadIconText(Main%,Icon%,�),Index%)
	�6                  �_SetIconText(Icon%,Main%,Text$)
	�+                  �_Redraw(Main%,Icon%)
	�
	�*       ș "Wimp_ProcessKey",Block%!24
	�
	�   �
	��
	�:
	�$� ******************************
$� Set which icon the caret is in

$� ******************************
&� �_SetCaretPosition(Icon%,Index%)
3   IconLength%=�(�_ReadIconText(Main%,Icon%,�))
(0   � Index%>IconLength% � Index%=IconLength%
29   ș "Wimp_SetCaretPosition",Main%,Icon%,,,-1,Index%
<�
F:
P%� *******************************
Z%� Redraw the specifiied icon (v2)
d%� *******************************
n� �_Redraw(Window%,Icon%)
x   Block%!0=Window%
�   Block%!4=Icon%
�   Block%!8=0
�   Block%!12=0
�%   ș "Wimp_SetIconState",,Block%
��
�:
�E� ***************************************************************
�H� When a message is received, Control is passed to here for decoding
�E� ***************************************************************
�� �_DecodeMessage(Request%)
�   Ȏ Request% �
�       � 0      : �_CloseDown
�:      � 1      : Block%!0=(48+�("<Wimp$Scrap> "))� � 3
*                    Block%!12=Block%!8
#                    Block%!16=2
3                    $(Block%+44)="<Wimp$Scrap>"
"*                    SaveRef%=Block%!12
,@                    ș "Wimp_SendMessage",17,Block%,Block%!4
60      � 2      : �_HandleMessage_DataSaveAck
@&      � 3      : �_FileDroppedOnMe
J      � 5      : �_DataOpen
T"      � 10     : �_DeskTopSave
^&      � 14     : �_LowPowerWarning
hH      � &502   : �_GiveHelp(Block%!32,Block%!36,Block%!20,Block%!24)
rP      � &400C2 : � �_ReadString(Block%+28)=MyTaskName$ � Block%!4<> My_id% �
|_                       � Another !Cassette is trying to start up, I am going to bugger off!
�&                       �_CloseDown
�                    �
�#      � &400CC : Block%!00 = 48
�,                    Block%!12 = Block%!8
�*                    Block%!16 = &400CC
�Y                    $(Block%+28) = "cassete"         :� Sprite name "ic_csvtext" etc.
�V                    $(Block%+36) = �_InventSaveName :� Name to call iconised icon.
�@                    ș "Wimp_SendMessage",17,Block%,Block%!4
�   �
��
�:
�>� ********************************************************
�>� Start Up program as a task with name "Cassette Designer"
"� And put icon on the Icon bar
>� ********************************************************
� �_Initialise_WIMP_System
&   � WimpVersion$
0 
:&   MyTaskName$="Cassette Designer"
D 
NC   WimpVersion$=�_ConvertSystemToString("Cassette$WimpVersion")
X
b   � (WimpVersion$="300") �
l;      � Set up list of messages that I want to receive:
v$      Block%!0=0        : � Quit
�(      Block%!4=1        : � DataSave
�+      Block%!8=2        : � DataSaveAck
�(      Block%!12=3       : � DataLoad
�(      Block%!16=5       : � DataOpen
�+      Block%!20=10      : � DeskTopSave
�V      Block%!24=14      : � ShutDown    (Portable only. Power low warning message)
�8      Block%!28=&502    : � Interactive help request
�/      Block%!32=&400C2  : � Task Initialise
�'      Block%!36=&400CC  : � Iconize
�)      Block%!40=0       : � Terminate
�P      ș "Wimp_Initialise",300,&4B534154,MyTaskName$,Block% � Version,My_id%
�   �
�I      ș "Wimp_Initialise",200,&4B534154,MyTaskName$ � Version,My_id%

   �

-   IconBarIconHandle%=�_CreateIconBarIcon

   �_Initialise_Sprites

    �_Initialise_Templates

*n   Mask%=%1100000110001    : � Mask Out codes for Gain/Lose Caret, Pointer Enter/Leave Window & Null Event

4�

>:

HA� ***********************************************************

RA� All WIMP Programs should be able to shut themselves down!!!

\A� ***********************************************************

f� �_CloseDown

p+   ș "Wimp_CloseDown",My_id%,&4B534154

z   ș "OS_Exit"

��

�:

�F� ****************************************************************

�F� Opens up the template file, Fondles it, and then creates Windows

�F� ****************************************************************

�� �_Initialise_Templates

�.   maxws%=&A00 : � ws% maxws% : curws%=ws%

�B   ș"Wimp_OpenTemplate",,"<Cassette$Dir>.Resources.Templates"

�J   ș"Wimp_LoadTemplate",,Block%,ws%,ws%+maxws%,-1,"info",0 � ,,curws%

�,   ș"Wimp_CreateWindow",,Block% � Info%

�M   ș"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"save",0 � ,,curws%

�,   ș"Wimp_CreateWindow",,Block% � Save%

�M   ș"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Main",0 � ,,curws%
,   ș"Wimp_CreateWindow",,Block% � Main%
R   ș"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Print_Opt",0 � ,,curws%
   Block%!64 = SpriteArea%
$/   ș"Wimp_CreateWindow",,Block% � Options%
.   ș"Wimp_CloseTemplate"
8�
B:
LI� *******************************************************************
VI� This writes over the text in the Icon, and it should not be done!!!
`.� Only Works With Indirected Text Strings!
jI� *******************************************************************
t4� �_SetIconText(IconHandle%,WindowHandle%,Text$)
~   � Pointer%
�   Block%!100=WindowHandle%
�   Block%!104=IconHandle%
�)   ș "Wimp_GetIconState",,Block%+100
�#   � (Block%!124 � (1<<8))<>0 �
�      Pointer%=Block%!128
�   �
�      Pointer%=Block%+128
�   �
�   $Pointer%=Text$
��
�:
�,� **************************************
,� The name sort of says it all really!!!

,� **************************************
� �_SetUpIconBarMenu
   � m%
(!   MenuActive% = IconBarMenu%
2   � menu% 28+3*24
<   $menu%="Cassette"
F   menu%?12=7
P   menu%?13=2
Z   menu%?14=7
d   menu%?15=0
n   menu%!16=128
x   menu%!20=40
�   menu%!24=0
�   m%=menu%+28
�   m%!0=&0
�0   m%!4=Info%    :� name from template open.
�   m%!8=(7<<24) � %10001
�   $(m%+12)="Info"
�   m%=m%+24
�   m%!0=&0
�   m%!4=Options%
�   m%!8=(7<<24) � %10001
�   $(m%+12)="Options"
�   m%=m%+24
�   m%!0=&80

   m%!4=0
   m%!8=(7<<24)� %10001
   $(m%+12)="Quit"
"1   ș"Wimp_CreateMenu",,menu%,Block%!0-64,215
,�
6:
@C� *************************************************************
JC� This takes a Sprite and makes it into an Icon For the IconBar
TC� *************************************************************
^� �_CreateIconBarIcon
h   � Icon%
r   Block%!0=-1
|   Block%!4=0
�   Block%!8=0
�   Block%!12=68
�   Block%!16=68
�    Block%!20=%10000000000010
�   $(Block%+24)="!Cassette"
�+   ș "Wimp_CreateIcon",,Block% � Icon%
�
=Icon%
�:
�3� *********************************************
�3� Read Info for Window Main, and then open it !
�3� *********************************************
�-� �_OpenMainWindow(WipeTemplateIconText%)
�H   � WipeTemplateIconText% � New% � � StartWithLoad � �_WipeIconText
   !Block%=Main%
'   ș "Wimp_GetWindowState",,Block%
#   ș "Wimp_OpenWindow",,Block%
&
   New%=�
0   �_SetCaretPosition(0,0)
:�
D:
NL� **********************************************************************
XL� This reads the text from the writable Icon specified in the parameters
bA� and if Pad%=TRUE then pads out the result to 32 characters!
lL� **********************************************************************
v4� �_ReadIconText(WindowHandle%,IconHandle%,Pad%)
�   � Result$
�   Block%!100=WindowHandle%
�   Block%!104=IconHandle%
�)   ș "Wimp_GetIconState",,Block%+100
�#   � (Block%!124 � (1<<8))<>0 �
�      Result$=$(Block%!128)
�   �
�      Result$=$(Block%+128)
�   �
�&   � Pad% � =�Result$+�32," "),32)
�=Result$
�:
�/� *****************************************
/� Wipe the text from all the writable icons
/� *****************************************
� �_WipeIconText
    IconText$=""
*   � Loop%=0 � 37
4.      �_SetIconText(Loop%,Main%,IconText$)
>      �_Redraw(Main%,Loop%)
H   �
R3   �_SetIconText(TapeNumber%,Main%,TapeNumber$)
\"   �_Redraw(Main%,TapeNumber%)
f�
p:
z,� **************************************
�,� The name sort of says it all really!!!
�+� *************************************
�)� �_CreateMainWindowMenu(X%,Y%,Icon%)
�0   � m%,Flags%,Pointer%,Sel%,IconFlag%,Item$
�!   MenuActive% = MainWinMenu%
�   � MainMenu% 29+7*24
�   $MainMenu%="Main"
�   MainMenu%?12=7
�   MainMenu%?13=2
�   MainMenu%?14=7
�   MainMenu%?15=0
�   MainMenu%!16=16*16
�   MainMenu%!20=40
   MainMenu%!24=0
   m%=MainMenu%+28
   �
$0      � Flags%,Pointer%,Sel%,IconFlag%,Item$
.C      m%!0=Flags%                                 :� Menu Flags
8Y      m%!4=Pointer%                               :� Pointer to Sub-Menu (-1 If None)
BF      m%!8=IconFlag% � (Sel%<<22) � (7<<24)     :� Menu Icon Flags
LR      $(m%+12)=Item$                              :� Item Name (12 Bytes Max.)
V      m%=m%+24
`   � Flags%=&80
j   :
t   � +0
~%   � &00,Info%,   0,%10001,"Info"
�*   � &00,Save%,   0,%10001,"Save data"
�,   � &00,-1,      0,%10001,"Format text"
�(   � &00,Options%,0,%10001,"Options"
�)   � &80,-1,      0,%10001,"Wipe all"
�   :
�/   ș "Wimp_CreateMenu",,MainMenu%,X%-64,Y%
��
�:
�T� ******************************************************************************
�T� Control Comes To Here When The User Has Dragged The Save Icon And Released It.
�T� ******************************************************************************
�� �_DragBoxEnd(LeafName$)
   Pointer%=�LeafName$

2   ȕ Pointer%>0 � �LeafName$,Pointer%,1)<>"."
      Pointer%-=1
   �
(4   � DragASprite_Active% � ș "DragASprite_Stop"
2'   LeafName$=�LeafName$,Pointer%+1)
<'   ș "Wimp_GetPointerInfo",,Block%
F   SenderWindow%=Block%!12
P   SenderIcon%=Block%!16
Z   Block%!20=SenderWindow%
d   Block%!24=SenderIcon%
n   Block%!28=Block%!0
x   Block%!32=Block%!4
�   Block%!0=44+�LeafName$
�!   Block%!0+=4-(Block%!0 � 4)
�   Block%!4=0
�   Block%!8=0
�   Block%!12=0
�'   Block%!16=1 : � Message_DataSave
�.   Block%!36=0 : � Length of proposed save
�   Block%!40=&B0F
�    $(Block%+44)=LeafName$+�0
�x   � � ((SenderWindow%=Save%) � (SenderWindow%=Main%) � (SenderWindow%=IconBar% � SenderIcon%=IconBarIconHandle%)) �
�C      ș "Wimp_SendMessage",17,Block%,SenderWindow%,SenderIcon%
�   �
��
:
<� ******************************************************
;� A Data Save Acknowlegement Message Has Been Received!
"<� ******************************************************
,!� �_HandleMessage_DataSaveAck
6   � PathName$,Pointer%
@   Pointer%=Block%+44
J   �
T      PathName$+=�?Pointer%
^      Pointer%+=1
h   � ?Pointer%=0
r   �_SaveTo(PathName$)
|   Block%!0=40+�PathName$+4
�!   Block%!0+=4-(Block%!0 � 4)
�'   Block%!16=3 : � Message_DataLoad
�   Block%!36=0
�   Block%!40=&B0F
�"   $(Block%+44)=PathName$+�(0)
�@   ș "Wimp_SendMessage",18,Block%,SenderWindow%,SenderIcon%
��
�:
�6� ************************************************
�6� A File has been double clicked on, do I want it?
�6� ************************************************
�� �_DataOpen
�� File$
   � Block%!40=&B0F �
'      File$=�_ReadString(Block%+44)
      Block%!12=Block%!8
&      Block%!16=4
02      ș "Wimp_SendMessage",17,Block%,Block%!4
:$      �_DoActualLoadThing(File$)
D   �
N�
X:
b;� *****************************************************
l;� Read a string from a pointer, using a zero-terminator
v;� *****************************************************
�� �_ReadString(Pointer%)
�   � String$
�   ȕ ?Pointer%<>0
�      String$+=�?Pointer%
�      Pointer%+=1
�   �
�=String$
�:
�N� ************************************************************************
�N� This Bit Does The Actual Saving Of The Data When Requested By The Filer.
�N� ************************************************************************
�� �_SaveTo(PathName$)
�   Pointer%=�PathName$
2   ȕ Pointer%>1 � �PathName$,Pointer%,1)<>"."
      Pointer%-=1
   �
 L   � Pointer%=1 � � 2001,"To save, drag the icon to a directory viewer."
*   ș "Wimp_CreateMenu",,-1
4   SaveFile%=�(PathName$)
>;   � Open Out A File And Print Out All the information!
H   � Loop%=0 � 37
R4      � #SaveFile%,�_ReadIconText(Main%,Loop%,�)
\   �
f7   � #SaveFile%,�_ReadIconText(Main%,TapeNumber%,�)
p"   � Then Close the file again
z   � #SaveFile%
�$   � "SetType "+PathName$+" B0F"
�G   � Overwrite SaveWindow Text With Full Pathname For Future Saves!
�'   �_SetIconText(4,Save%,PathName$)
��
�:
�?� *********************************************************
�?� This Handles The Dragging Of THe Outline Of The Save Box.
�?� *********************************************************
�� �_DragSave
�   � flags%,byte%
�   DragASprite_Active% = �
�@   ș "XOS_SWINumberFromString",,"DragASprite_&00" � ;flags%
�$   ș "OS_Byte",161,28 � ,,byte%
A   � (flags% � 1)=0 � (byte% � 2)=2 � DragASprite_Active% = �
   !Block%=Save%
'   ș "Wimp_GetWindowState",,Block%
$"   OffsetX%=Block%!4-Block%!20
.#   OffsetY%=Block%!16-Block%!24
8   Block%!0=Save%
B   Block%!4=0
L%   ș "Wimp_GetIconState",,Block%
V   !Block%=Save%
`   Block%!4=5
j!   Block%!8=Block%!8+OffsetX%
t#   Block%!12=Block%!12+OffsetY%
~#   Block%!16=Block%!16+OffsetX%
�#   Block%!20=Block%!20+OffsetY%
�   Block%!24=0
�   Block%!28=0
�   Block%!32=&7FFFFFFF
�   Block%!36=&7FFFFFFF
�   � DragASprite_Active% �
�D      ș "DragASprite_Start",197,1,"file_b0f",Block%+8,Block%+24
�   �
�#      ș "Wimp_DragBox",,Block%
�   �
��
�:
@� **********************************************************

@� When A File Is Dropped Onto My Icon Bar Icon, I Come Here!
@� **********************************************************
� �_FileDroppedOnMe
(   � Block%!40 =&B0F �
2       SaveName$=$(Block%+44)
<      Block%!12=Block%!8
F      Block%!16=4
P2      ș "Wimp_SendMessage",17,Block%,Block%!4
Z(      �_DoActualLoadThing(SaveName$)
d   �
n�
x:
�U� *******************************************************************************
�U� Control Comes Here When A Valid File Type Has Been Dropped Onto My Application.
�U� *******************************************************************************
�� �_LoadData(FileName$)
�   LoadFile%=�(FileName$)
�   � LoadLoop%=0 � 37
�       �# LoadFile%,TempText$
�2      �_SetIconText(LoadLoop%,Main%,TempText$)
�#      �_Redraw(Main%,LoadLoop%)
�   �
�   �# LoadFile%,TempText$
�1   �_SetIconText(TapeNumber%,Main%,TempText$)
�"   �_Redraw(Main%,TapeNumber%)
   � #LoadFile%
�
:
"K� *********************************************************************
,J� Reads State Of Icons in Window Stated and Returns The First Selected
6F� Icon In The Give Exclusive Selection Group. (-1 = None Selected)
@J� ********************************************************************
J+� �_ReadESGSelected(WindowHandle%,Esg%)
T   � Mask%,Pattern%
^A   Mask%   = (1<<21)+(31<<16)       : � Bit 21 and Bits 16-20
h>   Pattern%= (1<<21)+(Esg%<<16)     : � Selected and ESG X
rB   ș "Wimp_WhichIcon",WindowHandle%,Block%+200,Mask%,Pattern%
|=Block%!200
�:
�:
�i� ***************************************************************************************************
�g� ALTHOUGH A LOT OF THE ABOVE CODE IS STILL VERY SPECIFIC TO THIS PROGRAM, IT CAN BE EASILY ADAPTED
�U� ALL CODE BELOW THIS LINE IS UNLIKELY TO BE OF MUCH USE TO ANY OTHER APPLICATION
�i� ***************************************************************************************************
�:
�:
�3� *********************************************
�3� Swaps the case of of the specified character.
�3� *********************************************
�&� �_SwapCase(Window%,Icon%,Index%)
�2   � Index%<�(�_ReadIconText(Main%,Icon%,�)) �
1      IconText$=�_ReadIconText(Main%,Icon%,�)
,      C%=�(�IconText$,Index%+1,1)) � &DF
      � C%>=&41 � C%<=&5A �
&2         C$=�(�(�IconText$,Index%+1,1)) � &20)
0&         �IconText$,Index%+1,1)=C$
:3         �_SetIconText(Icon%,Window%,IconText$)
D"         �_Redraw(Main%,Icon%)
N      �
X,      �_SetCaretPosition(Icon%,Index%+1)
b   �
l�
v:
�8� **************************************************
�8� Move Caret Down To The Next Entry, With Wrap-round
�8� **************************************************
�� �_MoveDownAnEntry
�N   � Icon%<22 � (Icon%>23 � Icon%<26) � �_SetCaretPosition(Icon%+2,Index%)
�A   � Icon%=22 � Icon%=23 � �_SetCaretPosition(Icon%+6,Index%)
�A   � Icon%>27 � Icon%<36 � �_SetCaretPosition(Icon%+2,Index%)
�B   � Icon%=36 � Icon%=37 � �_SetCaretPosition(Icon%-36,Index%)
��
�:
�2� ********************************************
�2� Move Caret Up To Next Entry, With Wrap-round
�2� ********************************************
� �_MoveUpAnEntry
Z   � (Icon%<24 � Icon%>1) � (Icon%<38 � Icon%>29) � �_SetCaretPosition(Icon%-2,Index%)
A   � Icon%=28 � Icon%=29 � �_SetCaretPosition(Icon%-6,Index%)
 A   � Icon%=26 � Icon%=27 � �_SetCaretPosition(Icon%-2,Index%)
*B   � Icon%=00 � Icon%=01 � �_SetCaretPosition(Icon%+36,Index%)
4�
>:
H@� **********************************************************
R4� Printout the contents of the writable icons!!!
\@� **********************************************************
f� �_PrintOut
p)   Ȏ �_ReadESGSelected(Options%,9) �
z'      � 0 : �_PrintTextMode(NlqON$)
�(      � 1 : �_PrintTextMode(NlqOFF$)
�#      � 5 : �_PrintGraphicsMode
�Y       � 2001, "Please select a printout mode from the options window and try again"
�   �
��
�:
�;� *****************************************************
�4� Print out the label in text mode (non Risc OS)
�;� Parameter is an optional control string (ie NLQ etc.)
�;� *****************************************************
�� �_PrintTextMode(Prelog$)
�   � L%
�    � �_Printer_NotOnLine � �
   ș "Hourglass_On"
   :
<   ș "OS_Byte",3,10          :� SCREEN OFF, PRINTER ON.
$/   �_SendData(Prelog$)      :� Set NLQ Mode
.6   � 27,15                   :� Condensed print ON
8   :
BH   � "  ";�_ReadIconText(Main%,24,�);"| ";�_ReadIconText(Main%,26,�)
L?   � "  ";�_RightJustify(25,31);" | ";�_RightJustify(27,31)
V   � LongEqual$
`   � L%=0 � 23 � 2
jM      � "  ";�_ReadIconText(Main%,L%,�);"| ";�_ReadIconText(Main%,L%+1,�)
t   �
~   � LongEqual$
��   � "A: ";�_ReadIconText(Main%,24,�);" - ";�_ReadIconText(Main%,25,�);�_EndOfLineLessFive;�_ReadIconText(Main%,TapeNumber%,�)
�J   � "B: ";�_ReadIconText(Main%,26,�);" - ";�_ReadIconText(Main%,27,�)
�   � LongEqual$
�   � L%=28 � 36 � 2
�M      � "  ";�_ReadIconText(Main%,L%,�);"| ";�_ReadIconText(Main%,L%+1,�)
�   �
�   � LongMinus$
�   :
�   � L%=0 � �(FormLength$)
�      � :� short Form Feed
�   �
�   :
<   ș "OS_Byte",3,00          :� SCREEN ON, PRINTER OFF.

   ș "Hourglass_Off"
�
:
(@� **********************************************************
2.� Function to check if printer is on line,
<@� If printer is not online TRUE is returned, otherwise FALSE
F@� **********************************************************
P� �_Printer_NotOnLine
Z   ș "Hourglass_On"
d   �
n#      PrinterOnLine=� : What%=0
x      Now%=�
�      Before%=�(-4)
�/      � 2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3
�!      Now%=� : � � �>Now%+100
�      After%=�(-4)
�      � Before%<>After% �
�         ș "Hourglass_Off"
�         PrinterOnLine=�
ȇ         $Block%="The Printer is not responding, please check that it has paper, it is switched on and is on-line. Try again?"+�(0)
�E         ș "Wimp_ReportError",Block%,%10011,MyTaskName$ � ,What%
�         ș "Hourglass_On"
�      �
�4   � PrinterOnLine � (� PrinterOnLine � What%=2)
�   ș "Hourglass_Off"
   � What%=2 � =�
=�
:
"H� ******************************************************************
,H� Prints contents of Icon(Icon%) right justified in a field of Chars
6H� ******************************************************************
@!� �_RightJustify(Icon%,Char%)
J*   Text$=�_ReadIconText(Main%,Icon%,�)
T=�Char%-�(Text$)," ")+Text$
^:
h=� *******************************************************
r=� Tabs to the end of the line except for five characters.
|=� *******************************************************
�� �_EndOfLineLessFive
�2Length%=�(�_ReadIconText(Main%,TapeNumber%,�))
�)� Length%=5 � TotLen%=63 � TotLen%=63
�]Ans$=�TotLen%-�("  A: "+�_ReadIconText(Main%,24,�)+" - "+�_ReadIconText(Main%,25,�))," ")
�	=Ans$
�:
�L� **********************************************************************
�L� This is purely for program variables and is nothing to do with Risc_OS
�L� **********************************************************************
�$� �_Initialise_Program_Variables
�6   � Variables to do with RiscOS PDriver InterFace
�   � Box% 16 : � Box2% 16
�   � Matrix% 16
 7   ScaleX%=1 : ScaleY%=1   :� For Future Expansion?
 0   Matrix%!04=0    : Matrix%!00=2^16*ScaleX%
 0   Matrix%!08=0    : Matrix%!12=2^16*ScaleY%
 &   � Origin% 8
 0:
 :   DragASprite_Active% = �
 D   IconBarMenu%    = 0
 N   MainWinMenu%    = 1
 X   TapeNumber%     = 53
 b!   LongEqual$      = �68,"=")
 l!   LongMinus$      = �68,"-")
 v   New%            = �
 �   NLQ%            = �
 �#   NlqON$          = "27,120,1"
 �#   NlqOFF$         = "27,120,0"
 �#   PrintFile$      = "PrintOut"
 �r   LatestVer%      = 2             : � Version Number Of Config File. Change If File Is Made Incompatable.....
 �   OldName$        = ""
 �:
 �O   � Give names to some of the icons etc. to make the program more readable
 �L   BackGround%= -1 : IconBar%= -2 : PrintF%=49 : PrintL%=47 : PrintD%=48
 �r   OptionsOKF%= 28 : OptionsOKL%=26 : OptionsOKD%=27 : SaveIcon%= 0 : SaveOKF%=11 : SaveOKL%=9 : SaveOKD% = 10
 �d   TopSetSideONEStart%=00 : TopSetSideONEEnd%=22 : TopSetSideTWOStart%=01 : TopSetSideTWOEnd%=23
 �d   BtmSetSideONEStart%=28 : BtmSetSideONEEnd%=36 : BtmSetSideTWOStart%=29 : BtmSetSideTWOEnd%=37
 �*   TitleSideONE%=24 : TitleSideTWO%=26
!,   ArtistSideONE%=25 : ArtistSideTWO%=27
!%   NumberOfLines%=56 : Format%=66
!   � PDriver$(6)
! 6   PDriver$(0)="Null:" : PDriver$(1)="NLQ Printer"
!*@   PDriver$(2)="Draft Printer" : PDriver$(6)="RiscOS Driver"
!4   �_ReadUserData
!>:
!HF   � Get SWI Numbers for font calls to speed up bottleneck in code
!R;   ș "OS_SWINumberFromString",,"Font_FindFont" � Find%
!\;   ș "OS_SWINumberFromString",,"Font_LoseFont" � Lose%
!f9   ș "OS_SWINumberFromString",,"Font_SetFont" � Set%
!p9   ș "OS_SWINumberFromString",,"Font_Paint" � Paint%
!z:
!�I   DeskTopSave$="Run "+�_ConvertSystemToString("Cassette$Dir")+�(&0A)
!�=   BaseFont$=�_ConvertSystemToString("Cassette$BaseFont")
!�=   BoldFont$=�_ConvertSystemToString("Cassette$BoldFont")
!�9   TapeNumber$=�_ConvertSystemToString("Tape$Prefix")
!�   � �(TapeNumber$)>2 �
!�"      Clipped$=�TapeNumber$,2)
!�      !Block%=9090
!�u      Error$="Tape$Prefix is set to longer than 2 characters. OK to clip to "+Clipped$+" Cancel to abort program"
!�!      $(Block%+4)=Error$ + �0
!�B      ș "Wimp_ReportError",Block%,%011,MyTaskName$ � ,Result%
!�#      � Result%=2 � �_CloseDown
!�$      TapeNumber$=Clipped$+" 00"
!�   �
"'      TapeNumber$=TapeNumber$+" 00"
"   �
"�
"$:
".7� *************************************************
"87� If variable does not exist, return a NULL string.
"B7� *************************************************
"L(� �_ConvertSystemToString(Variable$)
"V   � Loop%,Flag%,Answer$
"`1   � Loop%=100 � 150 � 4 : Block%!Loop%=0 : �
"j?   ș "XOS_ReadVarVal",Variable$,Block%+100,50,0,3 � ;Flag%
"tD   � (Flag% � 1) � Answer$="" � Answer$=�_ReadString(Block%+100)
"~=Answer$
"�:
"�S� *****************************************************************************
"�S� Store User Configurable Settings In Config File Within !Cassette Application.
"�S� *****************************************************************************
"�� �_StoreUserData
"�3   DataFile%=�"<Cassette$Dir>.Resources.Config"
"�   � #DataFile%,LatestVer%
"�1   � #DataFile%,�_ReadIconText(Options%,12,�)
"�1   � #DataFile%,�_ReadIconText(Options%,16,�)
"�1   � #DataFile%,�_ReadIconText(Options%,20,�)
"�1   � #DataFile%,�_ReadESGSelected(Options%,9)
"�   � #DataFile%
#   ș "Wimp_CreateMenu",,-1
#
�
#:
#R� ****************************************************************************
#(R� Read User Configurable Settings In Config File Within !Cassette Application.
#2R� ****************************************************************************
#<� �_ReadUserData
#F3   DataFile%=�"<Cassette$Dir>.Resources.Config"
#P   � DataFile%=0 � �
#Z   Ver%=�#DataFile%
#d   � #DataFile%,NlqON$
#n   � #DataFile%,NlqOFF$
#x   � #DataFile%,FormLength$
#�'   � #DataFile%,SelectedPrinterIcon
#�   � #DataFile%
#�D   � Ver%<LatestVer% � � 1000,"Incompatible Configuration File."
#�[   � SelectedPrinterIcon=15 � SelectedPrinterIcon=5 : � Fudge for template change - Stu
#�-   �_SetIconText(20,Options%,FormLength$)
#�   �_Redraw(Options%,20)
#�(   �_SetIconText(12,Options%,NlqON$)
#�   �_Redraw(Options%,12)
#�)   �_SetIconText(16,Options%,NlqOFF$)
#�   �_Redraw(Options%,16)
#�>   �_SetIconText(45,Main%,PDriver$(SelectedPrinterIcon+1))
#�   �_Redraw(Main%,45)
#�5   �_SelectIcon(Options%,0,SelectedPrinterIcon=0)
$5   �_SelectIcon(Options%,1,SelectedPrinterIcon=1)
$5   �_SelectIcon(Options%,5,SelectedPrinterIcon=5)
$�
$":
$,'� �_SelectIcon(Window%,Icon%,Flag%)
$6   Block%!0=Window%
$@   Block%!4=Icon%
$J   Block%!8=(-1*Flag%)<<21
$T   Block%!12=1<<21
$^%   ș "Wimp_SetIconState",,Block%
$h�
$r:
$|^� ****************************************************************************************
$�^� This Takes A 'Numeric' String, Breaks it Down, And Sends The Value To The Output Device.
$�^� ****************************************************************************************
$�� �_SendData(Data$)
$�   � Finish%,Count%
$�"   Count%=0 : Finish%=�(Data$)
$�G   Data$=Data$+"," : � This is cheating...See WHILE Condition!!!!!!
$�   �
$�      Sub$=""
$�      Pointer%=1
$�$      ȕ �Data$,Pointer%,1)<>","
$�)         Sub$=Sub$+�Data$,Pointer%,1)
$�         Pointer%+=1
$�      �
%"      Data$=�Data$,Pointer%+1)
%      � �(�(Sub$));
%!      Count%=Count%+�(Sub$)+1
%&   � Count%>=Finish%
%0�
%::
%Dg***************************************************************************************************
%Ne� If The Program Was Started By Double Clicking On A &B0F File Then Load The File And Display It.
%Xg***************************************************************************************************
%b� �_LoadFileIfRequired
%l    ș "OS_GetEnv" � Command$
%v   I%=�Command$," -Load ")
%�
   � I% �
%�      I%+=�" -Load "
%�(      ȕ �Command$,I%,1)=" ":I%+=1:�
%�!      FileName$=�Command$,I%)
%�5      FileName$=�FileName$,�FileName$+" "," ")-1)
%�L      � FileName$<>"" � StartWithLoad=� : �_DoActualLoadThing(FileName$)
%�   �
%�      StartWithLoad=�
%�   �
%��
%�:
%�g***************************************************************************************************
%�e� Sets The Save Name In The Save Icon To The Full Pathname Of The Loaded File, And Then Loads It.
&g***************************************************************************************************
&$� �_DoActualLoadThing(FileName$)
&'   �_SetIconText(4,Save%,FileName$)
&    �_LoadData(FileName$)
&*   �_OpenMainWindow(�)
&4�
&>:
&HD****************************************************************
&RB� Initialises User Sprite Area, and Loads sprite file into it.
&\<� Load sprite file appropriate to current mode via extn.
&fD****************************************************************
&p� �_Initialise_Sprites
&z"   � yeigfactor%,ext$,fhandle%
&�   :
&�   � Version>=300 �
&�d      ș "OS_ReadModeVariable",-1,5 � ,,yeigfactor%              : � Read the current mode ratio
&�r      ext$ = "2"+�(1<<yeigfactor%)                              : � Translate ratio into a file name extension
&�k      fhandle%=�("<Cassette$Dir>.Resources.Sprites"+ext$)     : � Attempt to locate a file of that name
&�      � fhandle%=0 �
&�         ext$=""
&�9         fhandle%=�"<Cassette$Dir>.Resources.Sprites"
&�l      �                                                        : � If not present locate default sprites
&�Q      � fhandle%=0 � � 0,"Unable to locate default sprite file for !Cassette"
&�k      FileLength%=4+(�#fhandle%)                                 : � Get the length of the sprites file
&�      � #fhandle%
&�   �
'   ext$=""
'   :
'a   � SpriteArea% FileLength%                                  : � Create the user sprite area
'$e   SpriteArea%!0  = FileLength%                                 : � and load the sprites into it.
'.   SpriteArea%!4  =  0
'8   SpriteArea%!8  = 16
'B   SpriteArea%!12 = 16
'LP   ș "OS_SpriteOp",&10A,SpriteArea%,"<Cassette$Dir>.Resources.Sprites"+ext$
'V�
'`:
'j/*******************************************
't-� Communicate with RiscOS Printer Driver.
'~/*******************************************
'�� �_PrintGraphicsMode
'�4   � Check For Presence Of PrinterDriver Modules
'�<   ș "XOS_SWINumberFromString",,"PDriver_Info" � ;Flag%
'�J   � Flag% � 1 � � 2001,"No Printer Driver, Please Load and Try Again"
'�   :
'�U   � If RiscOS 3.x Machine, Modules are always in ROM, but need to be initialised
'�@   � by the !Printers application before printing can begin.
'�"   ș "XPDriver_Info" � ;Flag%
'�`   � Flag% � 1 � � 2001,"Use !Printers to select your required printer driver and try again"
'�   :
'�7   � Check if the font manager will support Kerning
'�>   ș "XOS_SWINumberFromString",,"Font_ScanString" � Flag%
(:   � Flag% � 1 � NewFontManager%=� � NewFontManager%=�
(
:
(   � PrintFile%,OldJob%
(   � White%, PageToPrint%
(()   White%=&FFFFFF00 : E%=0 : Usage%=0
(2@   � Create storage space for clipped flags during printing.
(<K   ClippedArray%=ClippedArray% : � ClippedArray%=0 � � ClippedArray% 40
(F4   � Temp%=0 � 40 �4 : ClippedArray%!Temp%=0 : �
(P   :
(Z_   � Open Destination file and set up local error handler that will close it again on error
(d   PrintFile%=�"printer:"
(n
   � �
(xU   � � � : � � : Err$=In$+"-"+�(In%)+" : "+�$+"-"+�(�) : � #PrintFile% : � �,Err$
(�:
(�~   � Start up a print job for this file, remembering the handle of any previous print job, then set up local error handler
(�E   ș "PDriver_SelectJob",PrintFile%,"Boffin Print Job" � OldJob%
(�   ș "Hourglass_On"
(�
   � �
(��   � � � : � � : In%=� : In$=�$ : ș "Hourglass_Off" : ș "PDriver_AbortJob",PrintFile% : ș "PDriver_SelectJob",OldJob% : � In%,In$
(�:
(�   � Start print loop
(�   �_GetDocumentSize(Box%)
(�"   �_FitToPage(Height%,Width%)
(�:
(�+   � Set Up To Print Just One Rectangle
(�>   ș "PDriver_GiveRectangle",,Box%,Matrix%,Origin%,White%
):
)   � Start printing.
)6   ș "PDriver_DrawPage",1,Box2%,0,0 � CopiesLeft%
)"   ȕ CopiesLeft%
),      �_Mini_WIMP_Poll
)6      �_DrawInlay(Box2%)
)@7      ș "PDriver_GetRectangle",,Box% � CopiesLeft%
)J   �
)T:
)^4   � Printing Complete, Terminate this print job
)h%   ș "PDriver_EndJob",PrintFile%
)r:
)|8   � Return to the first of our local error handlers
)�
   � �
)�:
)�Z   � And Then go back to whatever print job was active (if any) on entry to this PROC.
)�   ș "Hourglass_Off"
)�%   ș "PDriver_SelectJob",OldJob%
)�:
)�-   � Go back to the callers error handler
)�
   � �
)�:
)�#   � Close the destination file
)�   � #PrintFile%
)�:
)��
*:
*� �_GetDocumentSize(Box%)
*$   Height%=725      : Width%=725
*&+   X1%=0  :  X2%=Width%/2  : X3%=Width%
*0J   Y1%=0  :  Y2%=163       : Y3%=Y2%+92 : Y4%=Height%-70 : Y5%=Height%
*:"   Box%!0=0         : Box%!4=0
*De   Box%!8=Width%+20 : Box%!12=Height%+20 : � To Allow For Rounding Errors In Conversion Routines.
*N�
*X:
*b!� �_FitToPage(Height%,Width%)
*l"   � Left%,Bottom%,Right%,Top%
*ve   � Returns values in Millipoints, Height% & Width% are in OS Units. 1 OS Unit = 400 Millipoints
*�;   ș "PDriver_PageSize" � ,,,Left%,Bottom%,Right%,Top%
*�M   OriginX%=((Right%+Left%)-(Width%*400))/2 : OriginY%=Top%-(Height%*400)
*�.   Origin%!0=OriginX% : Origin%!4=OriginY%
*��
*�:
*�$� �_DrawInlay(Co_ordinateBlock%)
*�<   ș Find%,,BaseFont$,09*16,12*16,0,0 � BaseFontHandle%
*�<   ș Find%,,BoldFont$,10*16,13*16,0,0 � BoldFontHandle%
*�:
*�B   �_FontPaint("",�_ReadIconText(Main%,24,�),X1%+10,Y4%+40,24)
*�B   �_FontPaint("",�_ReadIconText(Main%,25,�),X1%+10,Y4%+05,25)
*�B   �_FontPaint("",�_ReadIconText(Main%,26,�),X2%+10,Y4%+40,26)
*�B   �_FontPaint("",�_ReadIconText(Main%,27,�),X2%+10,Y4%+05,27)
+:
+   Separation=(Y4%-Y3%)/12
+#   SpaceStartY=Y3% + Separation
+    Track%=22
+*/   ș "ColourTrans_SetGCOL",&D0D0D000,,,0,0
+4   �_Mini_WIMP_Poll
+>   ȕ SpaceStartY <= Y4%
+HG      � SpaceStartY < Y4%-10 � � X1%,SpaceStartY :� X3%,SpaceStartY
+R.      Text$=�_ReadIconText(Main%,Track%,�)
+\<      �_FontPaint("",Text$,X1%+10,SpaceStartY-25,Track%)
+f0      Text$=�_ReadIconText(Main%,Track%+1,�)
+p>      �_FontPaint("",Text$,X2%+10,SpaceStartY-25,Track%+1)
+z!      SpaceStartY+=Separation
+�      Track%-=2
+�   �
+�:
+�N   SpineLine1$=�_ReadIconText(Main%,24,�)+" - "+�_ReadIconText(Main%,25,�)
+�N   SpineLine2$=�_ReadIconText(Main%,26,�)+" - "+�_ReadIconText(Main%,27,�)
+�7   �_FontPaint("Bold",SpineLine1$,X1%+10,Y2%+55,24)
+�7   �_FontPaint("Bold",SpineLine2$,X1%+10,Y2%+15,26)
+�   �_PrintTapeNumber
+�:
+�   Separation=(Y2%-Y1%)/5
+�#   SpaceStartY=Y1% + Separation
+�   Track%=36
+�   �_Mini_WIMP_Poll
,   ȕ SpaceStartY <= Y2%
,E      � SpaceStartY < Y2%-10 � X1%,SpaceStartY :� X3%,SpaceStartY
,.      Text$=�_ReadIconText(Main%,Track%,�)
,$<      �_FontPaint("",Text$,X1%+10,SpaceStartY-25,Track%)
,.0      Text$=�_ReadIconText(Main%,Track%+1,�)
,8>      �_FontPaint("",Text$,X2%+10,SpaceStartY-25,Track%+1)
,B!      SpaceStartY+=Separation
,L      Track%-=2
,V   �
,`:
,j/   ș "ColourTrans_SetGCOL",&00000000,,,0,0
,t   ȓ X1%,Y1%,X3%,Y5%
,~   ȓ X1%,Y2%,X3%,Y3%-Y2%
,�   � X2%,Y1% : � X2%,Y2%
,�   � X2%,Y3% : � X2%,Y4%
,�   � X1%,Y4% : � X3%,Y4%
,�:
,�   ș Lose%,BaseFontHandle%
,�   ș Lose%,BoldFontHandle%
,��
,�:
,�E*****************************************************************
,�C� Select required Font and colour, then print Message$ at X%,Y%
,�E*****************************************************************
,�0� �_FontPaint(PostFix$,Message$,X%,Y%,Icon%)
-   � FontHandle%
-
   � Message$="" � �
-;   � Dont Waste Time Messing about if nothing to print!
-   � PostFix$="" �
-(!      ș Set%,BaseFontHandle%
-2.      Text$=�_TrimToFit(Message$,48,Icon%)
-<   �
-F!      ș Set%,BoldFontHandle%
-P.      Text$=�_TrimToFit(Message$,87,Icon%)
-Z   �
-d<   ș "ColourTrans_SetFontColours",0,&FFFFFF00,&00000000
-n   :
-x"   ș Paint%,,Text$,&210,X%,Y%
-��
-�:
-�S� *****************************************************************************
-�S� Prints the tape number in a smaller point size at a fixed place on the inlay.
-�S� *****************************************************************************
-�� �_PrintTapeNumber
-�   � Text$,FontHandle%
-�6   ș Find%,,BaseFont$,6*16,8*16,0,0 � FontHandle%
-�<   ș "ColourTrans_SetFontColours",0,&FFFFFF00,&00000000
-�   :
-�0   Text$=�_ReadIconText(Main%,TapeNumber%,�)
-�)   ș Paint%,,Text$,&10,X3%-70,Y2%+75
-�   :
.   ș Lose%,FontHandle%
.�
.:
."_� *****************************************************************************************
.,_� Check the printed length of the text against the size in pixels, and shorten if required.
.6!� Uses : FN_WarnAboutClipping
.@_� *****************************************************************************************
.J!� �_TrimToFit(Text$,mm,Icon%)
.T%   � NumberOfPrintableCharacters%
.^   Continue%=�
.h   XLength%=(mm/25.4)*72000
.r   � NewFontManager% �
.|n      ș "Font_ScanString",0,Text$,&100380,XLength%,15000,,,�(Text$) � ,,,,,,,NumberOfPrintableCharacters%
.�   �
.�d      ș "Font_StringWidth",,Text$,XLength%,15000,-1,�(Text$) � ,,,,NumberOfPrintableCharacters%
.�   �
.�8   TextToPrint$=�Text$,NumberOfPrintableCharacters%)
.�H   � NumberOfPrintableCharacters%<�(Text$) � ClippedArray%?Icon%=0 �
.�;      Continue%=�_WarnAboutClipping(Text$,TextToPrint$)
.�      ClippedArray%?Icon%=1
.�   �
.�A   � Continue%=� � � 2001,"Aborting Printout. OK to Continue"
.�=TextToPrint$
.�:
.�Z� ************************************************************************************
.�[� If Clipping will occour, then display Warning message and allow user option to abort.
/� Uses: NONE
/Z� ************************************************************************************
/1� �_WarnAboutClipping(IconText$,TextToPrint$)
/&   � Error$
/0   !Block%=0
/:{   Error$ ="This Text - '"+IconText$+"' Does not fit. Clipping to '"+TextToPrint$+"'  OK To Continue, CANCEL To Abort."
/D   $(Block%+4)=Error$ + �0
/NA   ș "Wimp_ReportError",Block%,%10011,MyTaskName$ � ,Result%
/X.   � Result%=2 � Continue%=� � Continue%=�
/b4   ș "Wimp_ReportError",Block%,1<<6,MyTaskName$
/l=Continue%
/v
/�� �_OpenSubMenu(Window%)
/�'   ș "Wimp_GetPointerInfo",,Block%
/�<   ș "Wimp_CreateMenu",,Window%,Block%!0-64,Block%!4+48
/��
/�:
/�L� **********************************************************************
/�L� Sets the case of all the writable icons to ensure a consistant format.
/�L� **********************************************************************
/�� �_FormatIconText
/�   � Loop%
/�:   � Loop%=TopSetSideONEStart% � TopSetSideTWOEnd% � 2
/�1      �_SetIconText(Loop%,Main%,�_CEW(Loop%))
/�5      �_SetIconText(Loop%+1,Main%,�_CEW(Loop%+1))
0      �_Redraw(Main%,Loop%)
0!      �_Redraw(Main%,Loop%+1)
0   �
0 :   � Loop%=BtmSetSideONEStart% � BtmSetSideTWOEnd% � 2
0*1      �_SetIconText(Loop%,Main%,�_CEW(Loop%))
045      �_SetIconText(Loop%+1,Main%,�_CEW(Loop%+1))
0>      �_Redraw(Main%,Loop%)
0H!      �_Redraw(Main%,Loop%+1)
0R   �
0\C   �_SetIconText(TitleSideONE%,Main%,�_Icon_FTU(TitleSideONE%))
0fC   �_SetIconText(TitleSideTWO%,Main%,�_Icon_FTU(TitleSideTWO%))
0pE   �_SetIconText(ArtistSideONE%,Main%,�_Icon_FTU(ArtistSideONE%))
0zE   �_SetIconText(ArtistSideTWO%,Main%,�_Icon_FTU(ArtistSideTWO%))
0�.   � Loop%= TitleSideONE% � ArtistSideTWO%
0�      �_Redraw(Main%,Loop%)
0�   �
0��
0�:
0�7� *************************************************
0�7� Function to Capitalise Each Word in a given Icon.
0�7� *************************************************
0�� �_CEW(Icon%)
0�$   � IconText$, Index%, End%, C%
0�.   IconText$=�_ReadIconText(Main%,Icon%,�)
0�)   � If icon is empty, abandon format
0�"   � IconText$="" � =IconText$
1#   Index%=1 : End%=�(IconText$)
1   � Get 1st character
1   ȕ Index%<=End%
1$7      �IconText$,Index%,1)=�_Char_FTU(Icon%,Index%)
1.      Index%+=1
18!      C$=�IconText$,Index%,1)
1B5      � Loop until end of word (or end of string)
1L#      ȕ C$<>" " � Index%<=End%
1V:         �IconText$,Index%,1)=�_Char_FTL(Icon%,Index%)
1`         Index%+=1
1j$         C$=�IconText$,Index%,1)
1t      �
1~9      � Loop until next word found (Or end of string)
1�"      ȕ C$=" " � Index%<=End%
1�         Index%+=1
1�$         C$=�IconText$,Index%,1)
1�      �
1�      �Index%,End%
1�   �
1�=IconText$
1�:
1�?� *********************************************************
1�?� Function to Force all text in a given icon to UPPER CASE.
1�?� *********************************************************
1�� �_Icon_FTU(Icon%)
2   � IconText$
2
.   IconText$=�_ReadIconText(Main%,Icon%,�)
2#   Index%=1 : End%=�(IconText$)
2   ȕ Index%<=End%
2(7      �IconText$,Index%,1)=�_Char_FTU(Icon%,Index%)
22      Index%+=1
2<!      C$=�IconText$,Index%,1)
2F   �
2P=IconText$
2Z:
2d?� *********************************************************
2n?� Function to Force all text in a given icon to LOWER CASE.
2x?� *********************************************************
2�� �_Icon_FTL(Icon%)
2�   � IconText$
2�.   IconText$=�_ReadIconText(Main%,Icon%,�)
2�#   Index%=1 : End%=�(IconText$)
2�   ȕ Index%<=End%
2�7      �IconText$,Index%,1)=�_Char_FTL(Icon%,Index%)
2�      Index%+=1
2�!      C$=�IconText$,Index%,1)
2�   �
2�:
2�8� **************************************************
2�8� Function to Force a given character to UPPER CASE.
2�8� **************************************************
3� �_Char_FTU(Icon%,Index%)
3   � Temp$
3!   Temp$=�IconText$,Index%,1)
3":   � Temp$>="a" � Temp$<="z" � Temp$=�(�(Temp$) � &DF)
3,
=Temp$
36:
3@8� **************************************************
3J8� Function to Force a given character to LOWER CASE.
3T8� **************************************************
3^� �_Char_FTL(Icon%,Index%)
3h   � Temp$
3r!   Temp$=�IconText$,Index%,1)
3|:   � Temp$>="A" � Temp$<="Z" � Temp$=�(�(Temp$) � &20)
3�
=Temp$
3�:
3��� ***************************************************************************************************************************
3�~� This message is unique to the Portable. It occures when the battery is too low for continued usage. It is a second stage
3�|� warning, the first stage invites the user to shut down the machine safely, but if this is not done then this stage two
3�{� message is sent out. If you are aware of the status of your file then you should prompt the user to save any modified
3�z� or unsaved files in your normal closedown manner. If you cannot do this, or the user does not respond (EG Machine is
3�c� unattended) then the application should save the data into the scrap directory by themselves.
3ր� **************************************************************************************************************************
3�� �_LowPowerWarning
3�1   � SaveName$,Pointer%,LeafName$,MyScrapDir$
3�;   MyScrapDir$=�_ConvertSystemToString("Wimp$ScrapDir")
3�   � MyScrapDir$="" �
4;      MyScrapDir$=�_ConvertSystemToString("Wimp$Scrap")
4      � MyScrapDir$="" � �
4!      Pointer%=�(MyScrapDir$)
4&7      ȕ Pointer%>1 � �MyScrapDir$,Pointer%,1)<>"."
40            Pointer%-=1
4:      �
4D      � Pointer%=1 � �
4N0      MyScrapDir$=�MyScrapDir$,(Pointer%-1))
4X   �
4b*   MyScrapDir$=MyScrapDir$+".Cassette"
4l   �"CDir "+MyScrapDir$
4v1   �_SaveTo(MyScrapDir$+"."+�_InventSaveName)
4��
4�:
4�I� *******************************************************************
4�I� The filer is saving a desktop !Boot file, add my RUN command to it.
4�I� *******************************************************************
4�� �_DeskTopSave
4�!   �#(Block%!20),DeskTopSave$
4��
4�:
4�U� *******************************************************************************
4�U� Mini-WIMP POLL "routine" to allow printing to be a bit more in the background!.
4�U� *******************************************************************************
4�� �_Mini_WIMP_Poll
5   ș "PDriver_SelectJob",0
5   ș "Hourglass_Off"
5#   ș "Wimp_Poll",0,Block% � A%
5    Ȏ A% �
5*C      � 2 : ș "Wimp_OpenWindow",,Block%   : � allows auto Drag
54D      � 3 : ș "Wimp_CloseWindow",,Block%  : � allows auto Close
5>.      � 17,18 : �_DecodeMessage(Block%!16)
5H   �
5R   ș "Hourglass_On"
5\(   ș "PDriver_SelectJob",PrintFile%
5f�
�
00000000  0d 00 0a 10 f4 20 3e 21  52 75 6e 49 6d 61 67 65  |..... >!RunImage|
00000010  0d 00 14 05 f4 0d 00 1e  2d f4 20 41 20 50 75 62  |........-. A Pub|
00000020  6c 69 63 20 44 6f 6d 61  69 6e 20 55 74 69 6c 69  |lic Domain Utili|
00000030  74 79 20 42 79 20 4d 61  72 6b 20 42 72 69 67 68  |ty By Mark Brigh|
00000040  74 2e 0d 00 28 05 3a 0d  00 32 10 f4 20 54 52 41  |t...(.:..2.. TRA|
00000050  43 45 20 50 52 4f 43 0d  00 3c 34 f4 20 54 52 41  |CE PROC..<4. TRA|
00000060  43 45 20 54 4f 20 22 41  44 46 53 3a 3a 34 2e 24  |CE TO "ADFS::4.$|
00000070  2e 21 53 63 72 61 70 2e  53 63 72 61 70 44 69 72  |.!Scrap.ScrapDir|
00000080  2e 54 52 41 43 45 54 45  58 54 22 0d 00 46 05 3a  |.TRACETEXT"..F.:|
00000090  0d 00 50 1f 56 65 72 73  69 6f 6e 24 3d 22 31 2e  |..P.Version$="1.|
000000a0  32 33 20 28 32 30 2d 53  65 70 2d 39 33 29 22 0d  |23 (20-Sep-93)".|
000000b0  00 5a 05 3a 0d 00 64 29  c8 9b 20 22 3c 43 61 73  |.Z.:..d).. "<Cas|
000000c0  73 65 74 74 65 24 44 69  72 3e 2e 52 65 73 6f 75  |sette$Dir>.Resou|
000000d0  72 63 65 73 2e 4c 69 62  72 61 72 79 22 0d 00 6e  |rces.Library"..n|
000000e0  04 0d 00 78 37 de 20 42  6c 6f 63 6b 25 20 31 30  |...x7. Block% 10|
000000f0  32 34 2a 34 20 20 3a f4  20 47 65 6e 65 72 61 6c  |24*4  :. General|
00000100  20 70 75 72 70 6f 73 65  20 57 49 4d 50 20 77 6f  | purpose WIMP wo|
00000110  72 6b 73 70 61 63 65 21  0d 00 82 05 3a 0d 00 8c  |rkspace!....:...|
00000120  1c f2 5f 49 6e 69 74 69  61 6c 69 73 65 5f 57 49  |.._Initialise_WI|
00000130  4d 50 5f 53 79 73 74 65  6d 0d 00 96 05 3a 0d 00  |MP_System....:..|
00000140  a0 24 f2 5f 53 65 74 49  63 6f 6e 54 65 78 74 28  |.$._SetIconText(|
00000150  31 35 2c 49 6e 66 6f 25  2c 56 65 72 73 69 6f 6e  |15,Info%,Version|
00000160  24 29 0d 00 aa 27 f2 5f  53 65 74 49 63 6f 6e 54  |$)...'._SetIconT|
00000170  65 78 74 28 34 2c 53 61  76 65 25 2c 22 42 6f 66  |ext(4,Save%,"Bof|
00000180  66 42 72 69 67 68 74 22  29 0d 00 b4 05 3a 0d 00  |fBright")....:..|
00000190  be 14 ee 20 85 20 f2 5f  57 69 6d 70 5f 45 72 72  |... . ._Wimp_Err|
000001a0  6f 72 0d 00 c8 22 f2 5f  49 6e 69 74 69 61 6c 69  |or..."._Initiali|
000001b0  73 65 5f 50 72 6f 67 72  61 6d 5f 56 61 72 69 61  |se_Program_Varia|
000001c0  62 6c 65 73 0d 00 d2 05  3a 0d 00 dc 18 f2 5f 4c  |bles....:....._L|
000001d0  6f 61 64 46 69 6c 65 49  66 52 65 71 75 69 72 65  |oadFileIfRequire|
000001e0  64 0d 00 e6 05 3a 0d 00  f0 14 ee 20 85 20 f2 5f  |d....:..... . ._|
000001f0  57 69 6d 70 5f 45 72 72  6f 72 0d 00 fa 05 3a 0d  |Wimp_Error....:.|
00000200  01 04 6e f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..n. ***********|
00000210  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000260  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 01 0e  |*************...|
00000270  6e f4 20 41 6c 6c 20 52  49 53 43 4f 53 2f 57 49  |n. All RISCOS/WI|
00000280  4d 50 20 53 70 65 63 69  66 69 63 20 50 72 6f 63  |MP Specific Proc|
00000290  65 65 64 75 72 65 73 20  46 69 72 73 74 2c 20 21  |eedures First, !|
000002a0  43 61 73 73 65 74 74 65  20 50 72 6f 63 27 53 20  |Cassette Proc'S |
000002b0  61 66 74 65 72 2e 2e 2e  2e 20 4d 61 6b 65 73 20  |after.... Makes |
000002c0  66 6f 72 20 61 20 62 65  74 74 65 72 20 73 6b 65  |for a better ske|
000002d0  6c 65 74 6f 6e 20 70 72  6f 67 21 0d 01 18 6e f4  |leton prog!...n.|
000002e0  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ***************|
000002f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000340  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 01 22 04 0d 01 2c  |*********.."...,|
00000350  05 f5 0d 01 36 27 20 20  20 c8 99 20 22 57 69 6d  |....6'   .. "Wim|
00000360  70 5f 50 6f 6c 6c 22 2c  4d 61 73 6b 25 2c 42 6c  |p_Poll",Mask%,Bl|
00000370  6f 63 6b 25 20 b8 20 41  25 0d 01 40 0e 20 20 20  |ock% . A%..@.   |
00000380  c8 8e 20 41 25 20 ca 0d  01 4a 43 20 20 20 20 20  |.. A% ...JC     |
00000390  20 c9 20 32 20 3a 20 c8  99 20 22 57 69 6d 70 5f  | . 2 : .. "Wimp_|
000003a0  4f 70 65 6e 57 69 6e 64  6f 77 22 2c 2c 42 6c 6f  |OpenWindow",,Blo|
000003b0  63 6b 25 20 20 20 3a 20  f4 20 61 6c 6c 6f 77 73  |ck%   : . allows|
000003c0  20 61 75 74 6f 20 44 72  61 67 0d 01 54 44 20 20  | auto Drag..TD  |
000003d0  20 20 20 20 c9 20 33 20  3a 20 c8 99 20 22 57 69  |    . 3 : .. "Wi|
000003e0  6d 70 5f 43 6c 6f 73 65  57 69 6e 64 6f 77 22 2c  |mp_CloseWindow",|
000003f0  2c 42 6c 6f 63 6b 25 20  20 3a 20 f4 20 61 6c 6c  |,Block%  : . all|
00000400  6f 77 73 20 61 75 74 6f  20 43 6c 6f 73 65 0d 01  |ows auto Close..|
00000410  5e 1f 20 20 20 20 20 20  c9 20 36 20 3a 20 f2 5f  |^.      . 6 : ._|
00000420  42 75 74 74 6f 6e 50 72  65 73 73 65 64 0d 01 68  |ButtonPressed..h|
00000430  37 20 20 20 20 20 20 c9  20 37 20 3a 20 f2 5f 44  |7      . 7 : ._D|
00000440  72 61 67 42 6f 78 45 6e  64 28 a4 5f 52 65 61 64  |ragBoxEnd(._Read|
00000450  49 63 6f 6e 54 65 78 74  28 53 61 76 65 25 2c 34  |IconText(Save%,4|
00000460  2c a3 29 29 0d 01 72 27  20 20 20 20 20 20 c9 20  |,.))..r'      . |
00000470  38 20 3a 20 f2 5f 50 72  6f 63 65 73 73 4b 65 79  |8 : ._ProcessKey|
00000480  28 42 6c 6f 63 6b 25 21  32 34 29 0d 01 7c 1f 20  |(Block%!24)..|. |
00000490  20 20 20 20 20 c9 20 39  20 3a 20 f2 5f 4d 65 6e  |     . 9 : ._Men|
000004a0  75 53 65 6c 65 63 74 69  6f 6e 0d 01 86 2e 20 20  |uSelection....  |
000004b0  20 20 20 20 c9 20 31 37  2c 31 38 20 3a 20 f2 5f  |    . 17,18 : ._|
000004c0  44 65 63 6f 64 65 4d 65  73 73 61 67 65 28 42 6c  |DecodeMessage(Bl|
000004d0  6f 63 6b 25 21 31 36 29  0d 01 90 08 20 20 20 cb  |ock%!16)....   .|
000004e0  0d 01 9a 07 fd 20 a3 0d  01 a4 05 3a 0d 01 ae 2f  |..... .....:.../|
000004f0  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
00000500  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000510  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 01 b8 2f f4  |***********.../.|
00000520  20 54 68 69 73 20 69 73  20 74 68 65 20 57 49 4d  | This is the WIM|
00000530  50 20 45 72 72 6f 72 20  68 61 6e 64 6c 69 6e 67  |P Error handling|
00000540  20 72 6f 75 74 69 6e 65  20 21 0d 01 c2 2f f4 20  | routine !.../. |
00000550  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000570  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 01 cc 12 dd 20 f2  |*********..... .|
00000580  5f 57 69 6d 70 5f 45 72  72 6f 72 0d 01 d6 0f 20  |_Wimp_Error.... |
00000590  20 20 ea 20 45 72 72 6f  72 24 0d 01 e0 17 20 20  |  . Error$....  |
000005a0  20 c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 33 2c  | .. "OS_Byte",3,|
000005b0  30 0d 01 ea 1c 20 20 20  c8 99 20 22 57 69 6d 70  |0....   .. "Wimp|
000005c0  5f 44 72 61 67 42 6f 78  22 2c 2c 2d 31 0d 01 f4  |_DragBox",,-1...|
000005d0  10 20 20 20 21 42 6c 6f  63 6b 25 3d 9f 0d 01 fe  |.   !Block%=....|
000005e0  12 20 20 20 45 72 72 6f  72 24 20 3d 20 f6 24 0d  |.   Error$ = .$.|
000005f0  02 08 5e 20 20 20 e7 20  9f 3c 3e 32 30 30 31 20  |..^   . .<>2001 |
00000600  8c 20 45 72 72 6f 72 24  20 2b 3d 20 22 20 28 69  |. Error$ += " (i|
00000610  6e 74 65 72 6e 61 6c 20  65 72 72 6f 72 20 63 6f  |nternal error co|
00000620  64 65 20 22 2b c3 9e 2b  22 29 2e 20 4f 4b 20 54  |de "+..+"). OK T|
00000630  6f 20 43 6f 6e 74 69 6e  75 65 2c 20 43 41 4e 43  |o Continue, CANC|
00000640  45 4c 20 54 6f 20 41 62  6f 72 74 2e 22 0d 02 12  |EL To Abort."...|
00000650  1e 20 20 20 24 28 42 6c  6f 63 6b 25 2b 34 29 3d  |.   $(Block%+4)=|
00000660  45 72 72 6f 72 24 20 2b  20 bd 30 0d 02 1c 4f 20  |Error$ + .0...O |
00000670  20 20 c8 99 20 22 57 69  6d 70 5f 52 65 70 6f 72  |  .. "Wimp_Repor|
00000680  74 45 72 72 6f 72 22 2c  42 6c 6f 63 6b 25 2c 25  |tError",Block%,%|
00000690  30 30 31 20 2d 20 28 32  2a 28 9f 3c 3e 32 30 30  |001 - (2*(.<>200|
000006a0  31 29 29 2c 4d 79 54 61  73 6b 4e 61 6d 65 24 20  |1)),MyTaskName$ |
000006b0  b8 20 2c 52 65 73 75 6c  74 25 0d 02 26 20 20 20  |. ,Result%..&   |
000006c0  20 e7 20 52 65 73 75 6c  74 25 3d 32 20 8c 20 f2  | . Result%=2 . .|
000006d0  5f 43 6c 6f 73 65 44 6f  77 6e 0d 02 30 05 e1 0d  |_CloseDown..0...|
000006e0  02 3a 05 3a 0d 02 44 2a  f4 20 2a 2a 2a 2a 2a 2a  |.:.:..D*. ******|
000006f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000700  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 02  |**************..|
00000710  4e 2a f4 20 4d 6f 75 73  65 20 27 43 6c 69 63 6b  |N*. Mouse 'Click|
00000720  27 20 57 68 69 6c 73 74  20 4f 76 65 72 20 4d 65  |' Whilst Over Me|
00000730  6e 75 20 49 74 65 6d 2e  0d 02 58 2a f4 20 2a 2a  |nu Item...X*. **|
00000740  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000760  2a 2a 0d 02 62 15 dd 20  f2 5f 4d 65 6e 75 53 65  |**..b.. ._MenuSe|
00000770  6c 65 63 74 69 6f 6e 0d  02 6c 25 20 20 20 e7 20  |lection..l%   . |
00000780  4d 65 6e 75 41 63 74 69  76 65 25 20 3d 20 49 63  |MenuActive% = Ic|
00000790  6f 6e 42 61 72 4d 65 6e  75 25 20 8c 0d 02 76 17  |onBarMenu% ...v.|
000007a0  20 20 20 20 20 20 c8 8e  20 42 6c 6f 63 6b 25 21  |      .. Block%!|
000007b0  30 20 ca 0d 02 80 3e 20  20 20 20 20 20 20 20 20  |0 ....>         |
000007c0  c9 20 30 20 3a 20 f2 5f  4f 70 65 6e 53 75 62 4d  |. 0 : ._OpenSubM|
000007d0  65 6e 75 28 49 6e 66 6f  25 29 20 3a 20 49 63 6f  |enu(Info%) : Ico|
000007e0  6e 42 61 72 4d 65 6e 75  41 63 74 69 76 65 25 3d  |nBarMenuActive%=|
000007f0  a3 0d 02 8a 41 20 20 20  20 20 20 20 20 20 c9 20  |....A         . |
00000800  31 20 3a 20 f2 5f 4f 70  65 6e 53 75 62 4d 65 6e  |1 : ._OpenSubMen|
00000810  75 28 4f 70 74 69 6f 6e  73 25 29 20 3a 20 49 63  |u(Options%) : Ic|
00000820  6f 6e 42 61 72 4d 65 6e  75 41 63 74 69 76 65 25  |onBarMenuActive%|
00000830  3d a3 0d 02 94 45 20 20  20 20 20 20 20 20 20 c9  |=....E         .|
00000840  20 32 20 3a 20 f2 5f 43  6c 6f 73 65 44 6f 77 6e  | 2 : ._CloseDown|
00000850  20 3a 20 f4 20 3c 53 65  6c 65 63 74 3e 20 6f 6e  | : . <Select> on|
00000860  20 22 71 75 69 74 22 20  63 61 75 73 65 73 20 73  | "quit" causes s|
00000870  68 75 74 64 6f 77 6e 0d  02 9e 0b 20 20 20 20 20  |hutdown....     |
00000880  20 cb 0d 02 a8 08 20 20  20 cd 0d 02 b2 04 0d 02  | .....   .......|
00000890  bc 25 20 20 20 e7 20 4d  65 6e 75 41 63 74 69 76  |.%   . MenuActiv|
000008a0  65 25 20 3d 20 4d 61 69  6e 57 69 6e 4d 65 6e 75  |e% = MainWinMenu|
000008b0  25 20 8c 0d 02 c6 17 20  20 20 20 20 20 c8 8e 20  |% .....      .. |
000008c0  42 6c 6f 63 6b 25 21 30  20 ca 0d 02 d0 41 20 20  |Block%!0 ....A  |
000008d0  20 20 20 20 20 20 20 c9  20 30 20 3a 20 f2 5f 4f  |       . 0 : ._O|
000008e0  70 65 6e 53 75 62 4d 65  6e 75 28 49 6e 66 6f 25  |penSubMenu(Info%|
000008f0  29 20 3a 20 4d 61 69 6e  57 69 6e 64 6f 77 4d 65  |) : MainWindowMe|
00000900  6e 75 41 63 74 69 76 65  25 3d a3 0d 02 da 41 20  |nuActive%=....A |
00000910  20 20 20 20 20 20 20 20  c9 20 31 20 3a 20 f2 5f  |        . 1 : ._|
00000920  4f 70 65 6e 53 75 62 4d  65 6e 75 28 53 61 76 65  |OpenSubMenu(Save|
00000930  25 29 20 3a 20 4d 61 69  6e 57 69 6e 64 6f 77 4d  |%) : MainWindowM|
00000940  65 6e 75 41 63 74 69 76  65 25 3d a3 0d 02 e4 23  |enuActive%=....#|
00000950  20 20 20 20 20 20 20 20  20 c9 20 32 20 3a 20 f2  |         . 2 : .|
00000960  5f 46 6f 72 6d 61 74 49  63 6f 6e 54 65 78 74 0d  |_FormatIconText.|
00000970  02 ee 44 20 20 20 20 20  20 20 20 20 c9 20 33 20  |..D         . 3 |
00000980  3a 20 f2 5f 4f 70 65 6e  53 75 62 4d 65 6e 75 28  |: ._OpenSubMenu(|
00000990  4f 70 74 69 6f 6e 73 25  29 20 3a 20 4d 61 69 6e  |Options%) : Main|
000009a0  57 69 6e 64 6f 77 4d 65  6e 75 41 63 74 69 76 65  |WindowMenuActive|
000009b0  25 3d a3 0d 02 f8 21 20  20 20 20 20 20 20 20 20  |%=....!         |
000009c0  c9 20 34 20 3a 20 f2 5f  57 69 70 65 49 63 6f 6e  |. 4 : ._WipeIcon|
000009d0  54 65 78 74 0d 03 02 0b  20 20 20 20 20 20 cb 0d  |Text....      ..|
000009e0  03 0c 08 20 20 20 cd 0d  03 16 04 0d 03 20 27 20  |...   ....... ' |
000009f0  20 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 50 6f  |  .. "Wimp_GetPo|
00000a00  69 6e 74 65 72 49 6e 66  6f 22 2c 2c 42 6c 6f 63  |interInfo",,Bloc|
00000a10  6b 25 0d 03 2a 19 20 20  20 e7 20 28 42 6c 6f 63  |k%..*.   . (Bloc|
00000a20  6b 25 21 38 20 80 20 31  29 20 8c 0d 03 34 44 20  |k%!8 . 1) ...4D |
00000a30  20 20 20 20 20 e7 20 4d  65 6e 75 41 63 74 69 76  |     . MenuActiv|
00000a40  65 25 20 3d 20 49 63 6f  6e 42 61 72 4d 65 6e 75  |e% = IconBarMenu|
00000a50  25 20 8c 20 c8 99 20 22  57 69 6d 70 5f 43 72 65  |% . .. "Wimp_Cre|
00000a60  61 74 65 4d 65 6e 75 22  2c 2c 6d 65 6e 75 25 0d  |ateMenu",,menu%.|
00000a70  03 3e 48 20 20 20 20 20  20 e7 20 4d 65 6e 75 41  |.>H      . MenuA|
00000a80  63 74 69 76 65 25 20 3d  20 4d 61 69 6e 57 69 6e  |ctive% = MainWin|
00000a90  4d 65 6e 75 25 20 8c 20  c8 99 20 22 57 69 6d 70  |Menu% . .. "Wimp|
00000aa0  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2c 4d 61  |_CreateMenu",,Ma|
00000ab0  69 6e 4d 65 6e 75 25 0d  03 48 08 20 20 20 cd 0d  |inMenu%..H.   ..|
00000ac0  03 52 05 e1 0d 03 5c 05  3a 0d 03 66 26 f4 20 2a  |.R....\.:..f&. *|
00000ad0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000ae0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00000af0  03 70 26 f4 20 4d 6f 75  73 65 20 42 75 74 74 6f  |.p&. Mouse Butto|
00000b00  6e 20 53 74 61 74 75 73  20 48 61 73 20 43 68 61  |n Status Has Cha|
00000b10  6e 67 65 64 2e 0d 03 7a  26 f4 20 2a 2a 2a 2a 2a  |nged...z&. *****|
00000b20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00000b30  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 03 84 15 dd  |***********.....|
00000b40  20 f2 5f 42 75 74 74 6f  6e 50 72 65 73 73 65 64  | ._ButtonPressed|
00000b50  0d 03 8e 2b ea 20 4d 6f  75 73 65 58 25 2c 4d 6f  |...+. MouseX%,Mo|
00000b60  75 73 65 59 25 2c 42 75  74 74 6f 6e 25 2c 57 69  |useY%,Button%,Wi|
00000b70  6e 64 6f 77 25 2c 49 63  6f 6e 25 0d 03 98 46 20  |ndow%,Icon%...F |
00000b80  20 20 4d 6f 75 73 65 58  25 3d 42 6c 6f 63 6b 25  |  MouseX%=Block%|
00000b90  21 30 30 20 3a 20 f4 20  42 6c 6f 63 6b 25 21 30  |!00 : . Block%!0|
00000ba0  30 20 3d 20 4d 6f 75 73  65 20 58 20 28 53 63 72  |0 = Mouse X (Scr|
00000bb0  65 65 6e 20 43 6f 2d 6f  72 64 69 6e 61 74 65 73  |een Co-ordinates|
00000bc0  29 0d 03 a2 46 20 20 20  4d 6f 75 73 65 59 25 3d  |)...F   MouseY%=|
00000bd0  42 6c 6f 63 6b 25 21 30  34 20 3a 20 f4 20 42 6c  |Block%!04 : . Bl|
00000be0  6f 63 6b 25 21 30 34 20  3d 20 4d 6f 75 73 65 20  |ock%!04 = Mouse |
00000bf0  59 20 28 53 63 72 65 65  6e 20 43 6f 2d 6f 72 64  |Y (Screen Co-ord|
00000c00  69 6e 61 74 65 73 29 0d  03 ac 30 20 20 20 42 75  |inates)...0   Bu|
00000c10  74 74 6f 6e 25 3d 42 6c  6f 63 6b 25 21 30 38 20  |tton%=Block%!08 |
00000c20  3a 20 f4 20 42 6c 6f 63  6b 25 21 30 38 20 3d 20  |: . Block%!08 = |
00000c30  42 75 74 74 6f 6e 73 0d  03 b6 56 20 20 20 57 69  |Buttons...V   Wi|
00000c40  6e 64 6f 77 25 3d 42 6c  6f 63 6b 25 21 31 32 20  |ndow%=Block%!12 |
00000c50  3a 20 f4 20 42 6c 6f 63  6b 25 21 31 32 20 3d 20  |: . Block%!12 = |
00000c60  57 69 6e 64 6f 77 20 48  61 6e 64 6c 65 20 28 42  |Window Handle (B|
00000c70  61 63 6b 47 72 6f 75 6e  64 20 3d 20 2d 31 2c 20  |ackGround = -1, |
00000c80  49 63 6f 6e 42 61 72 20  3d 20 2d 32 29 0d 03 c0  |IconBar = -2)...|
00000c90  51 20 20 20 49 63 6f 6e  25 20 20 3d 42 6c 6f 63  |Q   Icon%  =Bloc|
00000ca0  6b 25 21 31 36 20 3a 20  f4 20 42 6c 6f 63 6b 25  |k%!16 : . Block%|
00000cb0  21 31 36 20 3d 20 49 63  6f 6e 20 48 61 6e 64 6c  |!16 = Icon Handl|
00000cc0  65 20 28 20 57 6f 72 6b  20 41 72 65 61 20 42 61  |e ( Work Area Ba|
00000cd0  63 6b 47 72 6f 75 6e 64  20 3d 20 2d 31 29 0d 03  |ckGround = -1)..|
00000ce0  ca 04 0d 03 d4 2f 20 20  20 e7 20 57 69 6e 64 6f  |...../   . Windo|
00000cf0  77 25 3d 4f 70 74 69 6f  6e 73 25 20 80 20 49 63  |w%=Options% . Ic|
00000d00  6f 6e 25 3d 4f 70 74 69  6f 6e 73 4f 4b 46 25 20  |on%=OptionsOKF% |
00000d10  8c 0d 03 de 48 20 20 20  20 20 20 f2 5f 42 75 74  |....H      ._But|
00000d20  74 6f 6e 50 72 65 73 73  28 4f 70 74 69 6f 6e 73  |tonPress(Options|
00000d30  25 2c 20 4f 70 74 69 6f  6e 73 4f 4b 46 25 2c 20  |%, OptionsOKF%, |
00000d40  4f 70 74 69 6f 6e 73 4f  4b 4c 25 2c 20 4f 70 74  |OptionsOKL%, Opt|
00000d50  69 6f 6e 73 4f 4b 44 25  29 0d 03 e8 19 20 20 20  |ionsOKD%)....   |
00000d60  20 20 20 f2 5f 53 74 6f  72 65 55 73 65 72 44 61  |   ._StoreUserDa|
00000d70  74 61 0d 03 f2 08 20 20  20 cd 0d 03 fc 04 0d 04  |ta....   .......|
00000d80  06 36 20 20 20 e7 20 57  69 6e 64 6f 77 25 3d 49  |.6   . Window%=I|
00000d90  63 6f 6e 42 61 72 25 20  80 20 49 63 6f 6e 25 3d  |conBar% . Icon%=|
00000da0  49 63 6f 6e 42 61 72 49  63 6f 6e 48 61 6e 64 6c  |IconBarIconHandl|
00000db0  65 25 20 8c 0d 04 10 16  20 20 20 20 20 20 c8 8e  |e% .....      ..|
00000dc0  20 42 75 74 74 6f 6e 25  20 ca 0d 04 1a 29 20 20  | Button% ....)  |
00000dd0  20 20 20 20 20 20 20 c9  20 25 30 30 31 20 3a 20  |       . %001 : |
00000de0  f2 5f 4f 70 65 6e 4d 61  69 6e 57 69 6e 64 6f 77  |._OpenMainWindow|
00000df0  28 a3 29 0d 04 24 29 20  20 20 20 20 20 20 20 20  |(.)..$)         |
00000e00  c9 20 25 31 30 30 20 3a  20 f2 5f 4f 70 65 6e 4d  |. %100 : ._OpenM|
00000e10  61 69 6e 57 69 6e 64 6f  77 28 b9 29 0d 04 2e 28  |ainWindow(.)...(|
00000e20  20 20 20 20 20 20 20 20  20 c9 20 25 30 31 30 20  |         . %010 |
00000e30  3a 20 f2 5f 53 65 74 55  70 49 63 6f 6e 42 61 72  |: ._SetUpIconBar|
00000e40  4d 65 6e 75 0d 04 38 0b  20 20 20 20 20 20 cb 0d  |Menu..8.      ..|
00000e50  04 42 08 20 20 20 cd 0d  04 4c 04 0d 04 56 39 20  |.B.   ...L...V9 |
00000e60  20 20 e7 20 42 75 74 74  6f 6e 25 3c 3e 20 25 30  |  . Button%<> %0|
00000e70  31 30 20 80 20 57 69 6e  64 6f 77 25 3d 4d 61 69  |10 . Window%=Mai|
00000e80  6e 25 20 80 20 49 63 6f  6e 25 3d 50 72 69 6e 74  |n% . Icon%=Print|
00000e90  46 25 20 8c 0d 04 60 39  20 20 20 20 20 20 f2 5f  |F% ...`9      ._|
00000ea0  42 75 74 74 6f 6e 50 72  65 73 73 28 4d 61 69 6e  |ButtonPress(Main|
00000eb0  25 2c 20 50 72 69 6e 74  46 25 2c 20 50 72 69 6e  |%, PrintF%, Prin|
00000ec0  74 4c 25 2c 20 50 72 69  6e 74 44 25 29 0d 04 6a  |tL%, PrintD%)..j|
00000ed0  14 20 20 20 20 20 20 f2  5f 50 72 69 6e 74 4f 75  |.      ._PrintOu|
00000ee0  74 0d 04 74 08 20 20 20  cd 0d 04 7e 04 0d 04 88  |t..t.   ...~....|
00000ef0  27 20 20 20 e7 20 42 75  74 74 6f 6e 25 3d 25 30  |'   . Button%=%0|
00000f00  31 30 20 80 20 57 69 6e  64 6f 77 25 3d 4d 61 69  |10 . Window%=Mai|
00000f10  6e 25 20 8c 0d 04 92 20  20 20 20 20 20 20 54 65  |n% ....       Te|
00000f20  6d 70 24 3d a4 5f 49 6e  76 65 6e 74 53 61 76 65  |mp$=._InventSave|
00000f30  4e 61 6d 65 0d 04 9c 37  20 20 20 20 20 20 f2 5f  |Name...7      ._|
00000f40  43 72 65 61 74 65 4d 61  69 6e 57 69 6e 64 6f 77  |CreateMainWindow|
00000f50  4d 65 6e 75 28 4d 6f 75  73 65 58 25 2c 4d 6f 75  |Menu(MouseX%,Mou|
00000f60  73 65 59 25 2c 49 63 6f  6e 25 29 0d 04 a6 08 20  |seY%,Icon%).... |
00000f70  20 20 cd 0d 04 b0 04 0d  04 ba 36 20 20 20 e7 20  |  ........6   . |
00000f80  57 69 6e 64 6f 77 25 3d  53 61 76 65 25 20 80 20  |Window%=Save% . |
00000f90  49 63 6f 6e 25 3d 53 61  76 65 49 63 6f 6e 25 20  |Icon%=SaveIcon% |
00000fa0  20 8c 20 f2 5f 44 72 61  67 53 61 76 65 0d 04 c4  | . ._DragSave...|
00000fb0  2b 20 20 20 e7 20 57 69  6e 64 6f 77 25 3d 53 61  |+   . Window%=Sa|
00000fc0  76 65 25 20 80 20 49 63  6f 6e 25 3d 53 61 76 65  |ve% . Icon%=Save|
00000fd0  4f 4b 46 25 20 20 20 8c  0d 04 ce 3c 20 20 20 20  |OKF%   ....<    |
00000fe0  20 20 f2 5f 42 75 74 74  6f 6e 50 72 65 73 73 28  |  ._ButtonPress(|
00000ff0  53 61 76 65 25 2c 20 53  61 76 65 4f 4b 46 25 2c  |Save%, SaveOKF%,|
00001000  20 53 61 76 65 4f 4b 4c  25 2c 20 53 61 76 65 4f  | SaveOKL%, SaveO|
00001010  4b 44 25 29 0d 04 d8 2d  20 20 20 20 20 20 f2 5f  |KD%)...-      ._|
00001020  53 61 76 65 54 6f 28 a4  5f 52 65 61 64 49 63 6f  |SaveTo(._ReadIco|
00001030  6e 54 65 78 74 28 53 61  76 65 25 2c 34 2c a3 29  |nText(Save%,4,.)|
00001040  29 0d 04 e2 08 20 20 20  cd 0d 04 ec 04 0d 04 f6  |)....   ........|
00001050  2c 20 20 20 e7 20 42 75  74 74 6f 6e 25 3c 3e 20  |,   . Button%<> |
00001060  25 30 31 30 20 80 20 57  69 6e 64 6f 77 25 3d 4f  |%010 . Window%=O|
00001070  70 74 69 6f 6e 73 25 20  8c 0d 05 00 14 20 20 20  |ptions% .....   |
00001080  20 20 20 c8 8e 20 49 63  6f 6e 25 20 ca 0d 05 0a  |   .. Icon% ....|
00001090  59 20 20 20 20 20 20 20  20 20 c9 20 20 30 2c 31  |Y         .  0,1|
000010a0  2c 35 20 3a 20 f2 5f 53  65 74 49 63 6f 6e 54 65  |,5 : ._SetIconTe|
000010b0  78 74 28 34 35 2c 4d 61  69 6e 25 2c 50 44 72 69  |xt(45,Main%,PDri|
000010c0  76 65 72 24 28 a4 5f 52  65 61 64 45 53 47 53 65  |ver$(._ReadESGSe|
000010d0  6c 65 63 74 65 64 28 4f  70 74 69 6f 6e 73 25 2c  |lected(Options%,|
000010e0  39 29 2b 31 29 29 0d 05  14 0b 20 20 20 20 20 20  |9)+1))....      |
000010f0  cb 0d 05 1e 1c 20 20 20  20 20 20 f2 5f 52 65 64  |.....      ._Red|
00001100  72 61 77 28 4d 61 69 6e  25 2c 34 35 29 0d 05 28  |raw(Main%,45)..(|
00001110  08 20 20 20 cd 0d 05 32  05 e1 0d 05 3c 05 3a 0d  |.   ...2....<.:.|
00001120  05 46 67 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.Fg. ***********|
00001130  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001180  2a 2a 2a 2a 2a 2a 0d 05  50 67 f4 20 44 65 74 65  |******..Pg. Dete|
00001190  72 6d 69 6e 65 20 69 66  20 61 20 6e 65 77 20 6e  |rmine if a new n|
000011a0  61 6d 65 20 69 73 20 72  65 71 75 69 72 65 64 2c  |ame is required,|
000011b0  20 69 66 20 73 6f 20 67  65 6e 65 72 61 74 65 20  | if so generate |
000011c0  61 6e 20 69 6e 74 65 6c  6c 69 67 65 6e 74 20 6e  |an intelligent n|
000011d0  61 6d 65 20 62 61 73 65  64 20 6f 6e 20 63 61 73  |ame based on cas|
000011e0  73 65 74 74 65 20 6e 75  6d 62 65 72 2e 0d 05 5a  |sette number...Z|
000011f0  67 f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |g. *************|
00001200  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001250  2a 2a 2a 2a 0d 05 64 16  dd 20 a4 5f 49 6e 76 65  |****..d.. ._Inve|
00001260  6e 74 53 61 76 65 4e 61  6d 65 0d 05 6e 16 20 20  |ntSaveName..n.  |
00001270  20 50 72 65 66 69 78 24  3d 22 43 61 73 73 5f 22  | Prefix$="Cass_"|
00001280  0d 05 78 5b 20 20 20 54  65 6d 70 24 3d a4 5f 52  |..x[   Temp$=._R|
00001290  65 61 64 49 63 6f 6e 54  65 78 74 28 53 61 76 65  |eadIconText(Save|
000012a0  25 2c 34 2c a3 29 20 3a  20 54 65 6d 70 32 24 3d  |%,4,.) : Temp2$=|
000012b0  50 72 65 66 69 78 24 2b  a4 5f 52 65 61 64 49 63  |Prefix$+._ReadIc|
000012c0  6f 6e 54 65 78 74 28 4d  61 69 6e 25 2c 54 61 70  |onText(Main%,Tap|
000012d0  65 4e 75 6d 62 65 72 25  2c a3 29 0d 05 82 35 20  |eNumber%,.)...5 |
000012e0  20 20 e7 20 c2 54 65 6d  70 24 2c 31 30 29 3d 22  |  . .Temp$,10)="|
000012f0  42 6f 66 66 42 72 69 67  68 74 22 20 84 20 4f 6c  |BoffBright" . Ol|
00001300  64 4e 61 6d 65 24 3c 3e  54 65 6d 70 32 24 20 8c  |dName$<>Temp2$ .|
00001310  0d 05 8c 38 20 20 20 20  20 20 4e 65 77 53 61 76  |...8      NewSav|
00001320  65 4e 61 6d 65 24 3d a4  5f 43 6f 6e 76 65 72 74  |eName$=._Convert|
00001330  53 6f 66 74 54 6f 48 61  72 64 53 70 61 63 65 73  |SoftToHardSpaces|
00001340  28 54 65 6d 70 32 24 29  0d 05 96 20 20 20 20 20  |(Temp2$)...     |
00001350  20 20 e7 20 a9 28 54 65  6d 70 24 29 3e a9 28 54  |  . .(Temp$)>.(T|
00001360  65 6d 70 32 24 29 20 8c  0d 05 a0 1e 20 20 20 20  |emp2$) .....    |
00001370  20 20 20 20 20 50 6f 69  6e 74 65 72 25 3d a9 28  |     Pointer%=.(|
00001380  54 65 6d 70 24 29 0d 05  aa 42 20 20 20 20 20 20  |Temp$)...B      |
00001390  20 20 20 c8 95 20 c1 54  65 6d 70 24 2c 50 6f 69  |   .. .Temp$,Poi|
000013a0  6e 74 65 72 25 2c 31 29  3c 3e 22 2e 22 20 80 20  |nter%,1)<>"." . |
000013b0  50 6f 69 6e 74 65 72 25  3e 30 3a 50 6f 69 6e 74  |Pointer%>0:Point|
000013c0  65 72 25 2d 3d 31 3a ce  0d 05 b4 41 20 20 20 20  |er%-=1:....A    |
000013d0  20 20 20 20 20 f2 5f 53  65 74 49 63 6f 6e 54 65  |     ._SetIconTe|
000013e0  78 74 28 34 2c 53 61 76  65 25 2c c0 54 65 6d 70  |xt(4,Save%,.Temp|
000013f0  24 2c 50 6f 69 6e 74 65  72 25 29 2b 4e 65 77 53  |$,Pointer%)+NewS|
00001400  61 76 65 4e 61 6d 65 24  29 0d 05 be 0b 20 20 20  |aveName$)....   |
00001410  20 20 20 cc 0d 05 c8 30  20 20 20 20 20 20 20 20  |   ....0        |
00001420  20 f2 5f 53 65 74 49 63  6f 6e 54 65 78 74 28 34  | ._SetIconText(4|
00001430  2c 53 61 76 65 25 2c 4e  65 77 53 61 76 65 4e 61  |,Save%,NewSaveNa|
00001440  6d 65 24 29 0d 05 d2 0b  20 20 20 20 20 20 cd 0d  |me$)....      ..|
00001450  05 dc 19 20 20 20 20 20  20 4f 6c 64 4e 61 6d 65  |...      OldName|
00001460  24 3d 54 65 6d 70 32 24  0d 05 e6 08 20 20 20 cd  |$=Temp2$....   .|
00001470  0d 05 f0 0b 3d 54 65 6d  70 32 24 0d 05 fa 05 3a  |....=Temp2$....:|
00001480  0d 06 04 6d f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |...m. **********|
00001490  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000014e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 06 0e  |*************...|
000014f0  6d f4 20 43 68 61 6e 67  65 20 61 6c 6c 20 6f 63  |m. Change all oc|
00001500  63 75 72 61 6e 63 65 73  20 6f 66 20 3c 53 50 41  |curances of <SPA|
00001510  43 45 3e 20 69 6e 20 74  68 65 20 74 61 70 65 20  |CE> in the tape |
00001520  6e 75 6d 62 65 72 20 74  6f 20 3c 41 4c 54 2d 53  |number to <ALT-S|
00001530  50 41 43 45 3e 20 74 6f  20 73 74 6f 70 20 74 68  |PACE> to stop th|
00001540  65 20 66 69 6c 65 72 20  74 68 72 6f 77 69 6e 67  |e filer throwing|
00001550  20 61 20 77 6f 62 62 6c  79 2e 0d 06 18 6d f4 20  | a wobbly....m. |
00001560  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000015c0  2a 2a 2a 2a 2a 2a 2a 0d  06 22 26 dd 20 a4 5f 43  |*******.."&. ._C|
000015d0  6f 6e 76 65 72 74 53 6f  66 74 54 6f 48 61 72 64  |onvertSoftToHard|
000015e0  53 70 61 63 65 73 28 4e  61 6d 65 24 29 0d 06 2c  |Spaces(Name$)..,|
000015f0  18 20 20 20 50 6f 69 6e  74 65 72 25 3d a9 28 4e  |.   Pointer%=.(N|
00001600  61 6d 65 24 29 0d 06 36  08 20 20 20 f5 0d 06 40  |ame$)..6.   ...@|
00001610  22 20 20 20 20 20 20 43  68 61 72 24 3d c1 4e 61  |"      Char$=.Na|
00001620  6d 65 24 2c 50 6f 69 6e  74 65 72 25 2c 31 29 0d  |me$,Pointer%,1).|
00001630  06 4a 17 20 20 20 20 20  20 e7 20 43 68 61 72 24  |.J.      . Char$|
00001640  3d 22 20 22 20 8c 0d 06  54 16 20 20 20 20 20 20  |=" " ...T.      |
00001650  20 20 20 43 68 61 72 24  3d 22 a0 22 0d 06 5e 25  |   Char$="."..^%|
00001660  20 20 20 20 20 20 20 20  20 c1 4e 61 6d 65 24 2c  |         .Name$,|
00001670  50 6f 69 6e 74 65 72 25  2c 31 29 3d 43 68 61 72  |Pointer%,1)=Char|
00001680  24 0d 06 68 0b 20 20 20  20 20 20 cd 0d 06 72 15  |$..h.      ...r.|
00001690  20 20 20 20 20 20 50 6f  69 6e 74 65 72 25 2d 3d  |      Pointer%-=|
000016a0  31 0d 06 7c 13 20 20 20  fd 20 50 6f 69 6e 74 65  |1..|.   . Pointe|
000016b0  72 25 3d 31 0d 06 86 0a  3d 4e 61 6d 65 24 0d 06  |r%=1....=Name$..|
000016c0  90 05 3a 0d 06 9a 24 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..:...$*********|
000016d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000016e0  2a 2a 2a 2a 2a 2a 2a 0d  06 a4 22 f4 20 27 50 72  |*******...". 'Pr|
000016f0  65 73 73 27 20 61 20 62  75 74 74 6f 6e 20 69 6e  |ess' a button in|
00001700  20 61 20 77 69 6e 64 6f  77 0d 06 ae 24 2a 2a 2a  | a window...$***|
00001710  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00001720  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 06 b8  |*************...|
00001730  33 dd 20 f2 5f 42 75 74  74 6f 6e 50 72 65 73 73  |3. ._ButtonPress|
00001740  28 57 69 6e 64 6f 77 25  2c 20 46 72 6f 6e 74 25  |(Window%, Front%|
00001750  2c 20 4c 69 67 68 74 25  2c 20 44 61 72 6b 25 29  |, Light%, Dark%)|
00001760  0d 06 c2 11 20 20 20 ea  20 54 69 6d 65 4e 6f 77  |....   . TimeNow|
00001770  25 0d 06 cc 2a 20 20 20  f2 5f 53 65 74 49 63 6f  |%...*   ._SetIco|
00001780  6e 43 6f 6c 6f 75 72 28  57 69 6e 64 6f 77 25 2c  |nColour(Window%,|
00001790  20 4c 69 67 68 74 25 2c  20 34 29 0d 06 d6 29 20  | Light%, 4)...) |
000017a0  20 20 f2 5f 53 65 74 49  63 6f 6e 43 6f 6c 6f 75  |  ._SetIconColou|
000017b0  72 28 57 69 6e 64 6f 77  25 2c 20 44 61 72 6b 25  |r(Window%, Dark%|
000017c0  2c 20 30 29 0d 06 e0 2b  20 20 20 f2 5f 53 65 74  |, 0)...+   ._Set|
000017d0  49 63 6f 6e 43 6f 6c 6f  75 72 28 57 69 6e 64 6f  |IconColour(Windo|
000017e0  77 25 2c 20 46 72 6f 6e  74 25 2c 20 31 34 29 0d  |w%, Front%, 14).|
000017f0  06 ea 13 20 20 20 54 69  6d 65 4e 6f 77 25 20 3d  |...   TimeNow% =|
00001800  20 91 0d 06 f4 08 20 20  20 f5 0d 06 fe 18 20 20  | .....   .....  |
00001810  20 fd 20 91 20 3e 20 54  69 6d 65 4e 6f 77 25 2b  | . . > TimeNow%+|
00001820  32 35 0d 07 08 2a 20 20  20 f2 5f 53 65 74 49 63  |25...*   ._SetIc|
00001830  6f 6e 43 6f 6c 6f 75 72  28 57 69 6e 64 6f 77 25  |onColour(Window%|
00001840  2c 20 4c 69 67 68 74 25  2c 20 30 29 0d 07 12 29  |, Light%, 0)...)|
00001850  20 20 20 f2 5f 53 65 74  49 63 6f 6e 43 6f 6c 6f  |   ._SetIconColo|
00001860  75 72 28 57 69 6e 64 6f  77 25 2c 20 44 61 72 6b  |ur(Window%, Dark|
00001870  25 2c 20 34 29 0d 07 1c  2a 20 20 20 f2 5f 53 65  |%, 4)...*   ._Se|
00001880  74 49 63 6f 6e 43 6f 6c  6f 75 72 28 57 69 6e 64  |tIconColour(Wind|
00001890  6f 77 25 2c 20 46 72 6f  6e 74 25 2c 20 31 29 0d  |ow%, Front%, 1).|
000018a0  07 26 05 e1 0d 07 30 05  3a 0d 07 3a 30 2a 2a 2a  |.&....0.:..:0***|
000018b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000018d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 07 44 2e f4 20 43  |*********..D.. C|
000018e0  68 61 6e 67 65 20 74 68  65 20 63 6f 6c 6f 75 72  |hange the colour|
000018f0  20 6f 66 20 61 6e 20 69  63 6f 6e 20 69 6e 20 61  | of an icon in a|
00001900  20 77 69 6e 64 6f 77 0d  07 4e 30 2a 2a 2a 2a 2a  | window..N0*****|
00001910  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001930  2a 2a 2a 2a 2a 2a 2a 0d  07 58 2e dd 20 f2 5f 53  |*******..X.. ._S|
00001940  65 74 49 63 6f 6e 43 6f  6c 6f 75 72 28 57 69 6e  |etIconColour(Win|
00001950  64 6f 77 25 2c 20 49 63  6f 6e 25 2c 20 43 6f 6c  |dow%, Icon%, Col|
00001960  6f 75 72 25 29 0d 07 62  1a 20 20 20 42 6c 6f 63  |our%)..b.   Bloc|
00001970  6b 25 21 30 20 20 3d 20  57 69 6e 64 6f 77 25 0d  |k%!0  = Window%.|
00001980  07 6c 18 20 20 20 42 6c  6f 63 6b 25 21 34 20 20  |.l.   Block%!4  |
00001990  3d 20 49 63 6f 6e 25 0d  07 76 20 20 20 20 42 6c  |= Icon%..v    Bl|
000019a0  6f 63 6b 25 21 38 20 20  3d 20 43 6f 6c 6f 75 72  |ock%!8  = Colour|
000019b0  25 20 3c 3c 20 32 38 0d  07 80 1e 20 20 20 42 6c  |% << 28....   Bl|
000019c0  6f 63 6b 25 21 31 32 20  3d 20 25 31 31 31 31 20  |ock%!12 = %1111 |
000019d0  3c 3c 20 32 38 0d 07 8a  26 20 20 20 c8 99 20 22  |<< 28...&   .. "|
000019e0  57 69 6d 70 5f 53 65 74  49 63 6f 6e 53 74 61 74  |Wimp_SetIconStat|
000019f0  65 22 2c 2c 20 42 6c 6f  63 6b 25 0d 07 94 05 e1  |e",, Block%.....|
00001a00  0d 07 9e 05 3a 0d 07 a8  49 f4 20 2a 2a 2a 2a 2a  |....:...I. *****|
00001a10  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001a40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 07  |**************..|
00001a50  b2 49 f4 20 57 68 65 6e  20 61 20 6b 65 79 20 69  |.I. When a key i|
00001a60  73 20 70 72 65 73 73 65  64 2c 20 43 68 65 63 6b  |s pressed, Check|
00001a70  20 69 66 20 69 74 20 63  6f 6e 63 65 72 6e 73 20  | if it concerns |
00001a80  6d 65 2e 20 49 66 20 6e  6f 74 2c 20 50 61 73 73  |me. If not, Pass|
00001a90  20 69 74 20 6f 6e 21 0d  07 bc 49 f4 20 2a 2a 2a  | it on!...I. ***|
00001aa0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00001ae0  0d 07 c6 1e dd 20 f2 5f  50 72 6f 63 65 73 73 4b  |..... ._ProcessK|
00001af0  65 79 28 4b 65 79 50 72  65 73 73 65 64 29 0d 07  |ey(KeyPressed)..|
00001b00  d0 1d 20 20 20 ea 20 49  63 6f 6e 25 2c 49 6e 64  |..   . Icon%,Ind|
00001b10  65 78 25 2c 57 69 6e 64  6f 77 25 0d 07 da 17 20  |ex%,Window%.... |
00001b20  20 20 57 69 6e 64 6f 77  25 3d 42 6c 6f 63 6b 25  |  Window%=Block%|
00001b30  21 30 0d 07 e4 15 20 20  20 49 63 6f 6e 25 3d 42  |!0....   Icon%=B|
00001b40  6c 6f 63 6b 25 21 34 0d  07 ee 17 20 20 20 49 6e  |lock%!4....   In|
00001b50  64 65 78 25 3d 42 6c 6f  63 6b 25 21 32 30 0d 07  |dex%=Block%!20..|
00001b60  f8 16 20 20 20 c8 8e 20  4b 65 79 50 72 65 73 73  |..   .. KeyPress|
00001b70  65 64 20 ca 0d 08 02 04  0d 08 0c 42 20 20 20 20  |ed ........B    |
00001b80  20 20 c9 20 26 31 38 30  20 3a 20 f2 5f 42 75 74  |  . &180 : ._But|
00001b90  74 6f 6e 50 72 65 73 73  28 4d 61 69 6e 25 2c 20  |tonPress(Main%, |
00001ba0  50 72 69 6e 74 46 25 2c  20 50 72 69 6e 74 4c 25  |PrintF%, PrintL%|
00001bb0  2c 20 50 72 69 6e 74 44  25 29 0d 08 16 20 20 20  |, PrintD%)...   |
00001bc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001bd0  f2 5f 50 72 69 6e 74 4f  75 74 0d 08 20 13 20 20  |._PrintOut.. .  |
00001be0  20 20 20 20 f4 20 3c 50  72 69 6e 74 3e 0d 08 2a  |    . <Print>..*|
00001bf0  04 0d 08 34 10 20 20 20  20 20 20 c9 20 26 31 38  |...4.      . &18|
00001c00  41 0d 08 3e 11 20 20 20  20 20 20 f4 20 3c 54 61  |A..>.      . <Ta|
00001c10  62 3e 0d 08 48 22 20 20  20 20 20 20 20 20 20 20  |b>..H"          |
00001c20  20 20 20 20 20 20 20 20  e7 20 49 63 6f 6e 25 3c  |        . Icon%<|
00001c30  33 38 20 8c 0d 08 52 59  20 20 20 20 20 20 20 20  |38 ...RY        |
00001c40  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 5f 53  |             ._S|
00001c50  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 28  |etCaretPosition(|
00001c60  49 63 6f 6e 25 2d 28 28  49 63 6f 6e 25 20 83 20  |Icon%-((Icon% . |
00001c70  32 29 3d 30 29 2b 28 28  49 63 6f 6e 25 20 83 20  |2)=0)+((Icon% . |
00001c80  32 29 3d 31 29 2c 49 6e  64 65 78 25 29 0d 08 5c  |2)=1),Index%)..\|
00001c90  17 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00001ca0  20 20 20 cd 0d 08 66 04  0d 08 70 0f 20 20 20 20  |   ...f...p.    |
00001cb0  20 20 c9 20 26 30 44 0d  08 7a 14 20 20 20 20 20  |  . &0D..z.     |
00001cc0  20 f4 20 3c 52 65 74 75  72 6e 3e 0d 08 84 39 20  | . <Return>...9 |
00001cd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001ce0  20 e7 20 57 69 6e 64 6f  77 25 3d 4d 61 69 6e 25  | . Window%=Main%|
00001cf0  20 8c 20 f2 5f 4d 6f 76  65 44 6f 77 6e 41 6e 45  | . ._MoveDownAnE|
00001d00  6e 74 72 79 0d 08 8e 27  20 20 20 20 20 20 20 20  |ntry...'        |
00001d10  20 20 20 20 20 20 20 20  20 20 e7 20 57 69 6e 64  |          . Wind|
00001d20  6f 77 25 3d 53 61 76 65  25 20 8c 0d 08 98 4b 20  |ow%=Save% ....K |
00001d30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001d40  20 20 20 20 f2 5f 42 75  74 74 6f 6e 50 72 65 73  |    ._ButtonPres|
00001d50  73 28 53 61 76 65 25 2c  20 53 61 76 65 4f 4b 46  |s(Save%, SaveOKF|
00001d60  25 2c 20 53 61 76 65 4f  4b 4c 25 2c 20 53 61 76  |%, SaveOKL%, Sav|
00001d70  65 4f 4b 44 25 29 0d 08  a2 3c 20 20 20 20 20 20  |eOKD%)...<      |
00001d80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
00001d90  5f 53 61 76 65 54 6f 28  a4 5f 52 65 61 64 49 63  |_SaveTo(._ReadIc|
00001da0  6f 6e 54 65 78 74 28 53  61 76 65 25 2c 34 2c a3  |onText(Save%,4,.|
00001db0  29 29 0d 08 ac 17 20 20  20 20 20 20 20 20 20 20  |))....          |
00001dc0  20 20 20 20 20 20 20 20  cd 0d 08 b6 04 0d 08 c0  |        ........|
00001dd0  0f 20 20 20 20 20 20 c9  20 26 31 45 0d 08 ca 12  |.      . &1E....|
00001de0  20 20 20 20 20 20 f4 20  3c 48 6f 6d 65 3e 0d 08  |      . <Home>..|
00001df0  d4 37 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.7              |
00001e00  20 20 20 20 f2 5f 53 65  74 43 61 72 65 74 50 6f  |    ._SetCaretPo|
00001e10  73 69 74 69 6f 6e 28 28  49 63 6f 6e 25 20 83 20  |sition((Icon% . |
00001e20  32 29 2c 30 29 0d 08 de  04 0d 08 e8 10 20 20 20  |2),0)........   |
00001e30  20 20 20 c9 20 26 31 38  46 0d 08 f2 17 20 20 20  |   . &18F....   |
00001e40  20 20 20 f4 20 3c 43 75  72 73 6f 72 20 55 70 3e  |   . <Cursor Up>|
00001e50  0d 08 fc 39 20 20 20 20  20 20 20 20 20 20 20 20  |...9            |
00001e60  20 20 20 20 20 20 e7 20  57 69 6e 64 6f 77 25 20  |      . Window% |
00001e70  3d 20 4d 61 69 6e 25 20  8c 20 f2 5f 4d 6f 76 65  |= Main% . ._Move|
00001e80  55 70 41 6e 45 6e 74 72  79 0d 09 06 04 0d 09 10  |UpAnEntry.......|
00001e90  10 20 20 20 20 20 20 c9  20 26 31 38 45 0d 09 1a  |.      . &18E...|
00001ea0  19 20 20 20 20 20 20 f4  20 3c 43 75 72 73 6f 72  |.      . <Cursor|
00001eb0  20 44 6f 77 6e 3e 0d 09  24 3b 20 20 20 20 20 20  | Down>..$;      |
00001ec0  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 57 69  |            . Wi|
00001ed0  6e 64 6f 77 25 20 3d 20  4d 61 69 6e 25 20 8c 20  |ndow% = Main% . |
00001ee0  f2 5f 4d 6f 76 65 44 6f  77 6e 41 6e 45 6e 74 72  |._MoveDownAnEntr|
00001ef0  79 0d 09 2e 04 0d 09 38  10 20 20 20 20 20 20 c9  |y......8.      .|
00001f00  20 26 31 39 39 0d 09 42  17 20 20 20 20 20 20 f4  | &199..B.      .|
00001f10  20 3c 53 68 69 66 74 3e  3c 66 39 3e 0d 09 4c 38  | <Shift><f9>..L8|
00001f20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001f30  20 20 e7 20 57 69 6e 64  6f 77 25 20 3d 20 4d 61  |  . Window% = Ma|
00001f40  69 6e 25 20 8c 20 f2 5f  57 69 70 65 49 63 6f 6e  |in% . ._WipeIcon|
00001f50  54 65 78 74 0d 09 56 04  0d 09 60 10 20 20 20 20  |Text..V...`.    |
00001f60  20 20 c9 20 26 31 43 41  0d 09 6a 11 20 20 20 20  |  . &1CA..j.    |
00001f70  20 20 f4 20 3c 66 31 30  3e 0d 09 74 34 20 20 20  |  . <f10>..t4   |
00001f80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
00001f90  5f 53 77 61 70 43 61 73  65 28 4d 61 69 6e 25 2c  |_SwapCase(Main%,|
00001fa0  49 63 6f 6e 25 2c 49 6e  64 65 78 25 29 0d 09 7e  |Icon%,Index%)..~|
00001fb0  04 0d 09 88 10 20 20 20  20 20 20 c9 20 26 31 43  |.....      . &1C|
00001fc0  42 0d 09 92 29 20 20 20  20 20 20 f4 20 3c 66 31  |B...)      . <f1|
00001fd0  31 3e 20 2d 20 44 65 6c  65 74 65 20 74 6f 20 65  |1> - Delete to e|
00001fe0  6e 64 20 6f 66 20 6c 69  6e 65 0d 09 9c 42 20 20  |nd of line...B  |
00001ff0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002000  54 65 78 74 24 3d c0 a4  5f 52 65 61 64 49 63 6f  |Text$=.._ReadIco|
00002010  6e 54 65 78 74 28 4d 61  69 6e 25 2c 49 63 6f 6e  |nText(Main%,Icon|
00002020  25 2c a3 29 2c 49 6e 64  65 78 25 29 0d 09 a6 36  |%,.),Index%)...6|
00002030  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002040  20 20 f2 5f 53 65 74 49  63 6f 6e 54 65 78 74 28  |  ._SetIconText(|
00002050  49 63 6f 6e 25 2c 4d 61  69 6e 25 2c 54 65 78 74  |Icon%,Main%,Text|
00002060  24 29 0d 09 b0 2b 20 20  20 20 20 20 20 20 20 20  |$)...+          |
00002070  20 20 20 20 20 20 20 20  f2 5f 52 65 64 72 61 77  |        ._Redraw|
00002080  28 4d 61 69 6e 25 2c 49  63 6f 6e 25 29 0d 09 ba  |(Main%,Icon%)...|
00002090  04 0d 09 c4 2a 20 20 20  20 20 20 7f 20 c8 99 20  |....*      . .. |
000020a0  22 57 69 6d 70 5f 50 72  6f 63 65 73 73 4b 65 79  |"Wimp_ProcessKey|
000020b0  22 2c 42 6c 6f 63 6b 25  21 32 34 0d 09 ce 04 0d  |",Block%!24.....|
000020c0  09 d8 08 20 20 20 cb 0d  09 e2 05 e1 0d 09 ec 05  |...   ..........|
000020d0  3a 0d 09 f6 24 f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |:...$. *********|
000020e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
000020f0  2a 2a 2a 2a 2a 0d 0a 00  24 f4 20 53 65 74 20 77  |*****...$. Set w|
00002100  68 69 63 68 20 69 63 6f  6e 20 74 68 65 20 63 61  |hich icon the ca|
00002110  72 65 74 20 69 73 20 69  6e 0d 0a 0a 24 f4 20 2a  |ret is in...$. *|
00002120  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00002130  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 0a 14  |*************...|
00002140  26 dd 20 f2 5f 53 65 74  43 61 72 65 74 50 6f 73  |&. ._SetCaretPos|
00002150  69 74 69 6f 6e 28 49 63  6f 6e 25 2c 49 6e 64 65  |ition(Icon%,Inde|
00002160  78 25 29 0d 0a 1e 33 20  20 20 49 63 6f 6e 4c 65  |x%)...3   IconLe|
00002170  6e 67 74 68 25 3d a9 28  a4 5f 52 65 61 64 49 63  |ngth%=.(._ReadIc|
00002180  6f 6e 54 65 78 74 28 4d  61 69 6e 25 2c 49 63 6f  |onText(Main%,Ico|
00002190  6e 25 2c a3 29 29 0d 0a  28 30 20 20 20 e7 20 49  |n%,.))..(0   . I|
000021a0  6e 64 65 78 25 3e 49 63  6f 6e 4c 65 6e 67 74 68  |ndex%>IconLength|
000021b0  25 20 8c 20 49 6e 64 65  78 25 3d 49 63 6f 6e 4c  |% . Index%=IconL|
000021c0  65 6e 67 74 68 25 0d 0a  32 39 20 20 20 c8 99 20  |ength%..29   .. |
000021d0  22 57 69 6d 70 5f 53 65  74 43 61 72 65 74 50 6f  |"Wimp_SetCaretPo|
000021e0  73 69 74 69 6f 6e 22 2c  4d 61 69 6e 25 2c 49 63  |sition",Main%,Ic|
000021f0  6f 6e 25 2c 2c 2c 2d 31  2c 49 6e 64 65 78 25 0d  |on%,,,-1,Index%.|
00002200  0a 3c 05 e1 0d 0a 46 05  3a 0d 0a 50 25 f4 20 2a  |.<....F.:..P%. *|
00002210  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00002220  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 0a  |**************..|
00002230  5a 25 f4 20 52 65 64 72  61 77 20 74 68 65 20 73  |Z%. Redraw the s|
00002240  70 65 63 69 66 69 69 65  64 20 69 63 6f 6e 20 28  |pecifiied icon (|
00002250  76 32 29 0d 0a 64 25 f4  20 2a 2a 2a 2a 2a 2a 2a  |v2)..d%. *******|
00002260  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00002270  2a 2a 2a 2a 2a 2a 2a 2a  0d 0a 6e 1d dd 20 f2 5f  |********..n.. ._|
00002280  52 65 64 72 61 77 28 57  69 6e 64 6f 77 25 2c 49  |Redraw(Window%,I|
00002290  63 6f 6e 25 29 0d 0a 78  17 20 20 20 42 6c 6f 63  |con%)..x.   Bloc|
000022a0  6b 25 21 30 3d 57 69 6e  64 6f 77 25 0d 0a 82 15  |k%!0=Window%....|
000022b0  20 20 20 42 6c 6f 63 6b  25 21 34 3d 49 63 6f 6e  |   Block%!4=Icon|
000022c0  25 0d 0a 8c 11 20 20 20  42 6c 6f 63 6b 25 21 38  |%....   Block%!8|
000022d0  3d 30 0d 0a 96 12 20 20  20 42 6c 6f 63 6b 25 21  |=0....   Block%!|
000022e0  31 32 3d 30 0d 0a a0 25  20 20 20 c8 99 20 22 57  |12=0...%   .. "W|
000022f0  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
00002300  22 2c 2c 42 6c 6f 63 6b  25 0d 0a aa 05 e1 0d 0a  |",,Block%.......|
00002310  b4 05 3a 0d 0a be 45 f4  20 2a 2a 2a 2a 2a 2a 2a  |..:...E. *******|
00002320  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00002350  2a 2a 2a 2a 2a 2a 2a 2a  0d 0a c8 48 f4 20 57 68  |********...H. Wh|
00002360  65 6e 20 61 20 6d 65 73  73 61 67 65 20 69 73 20  |en a message is |
00002370  72 65 63 65 69 76 65 64  2c 20 43 6f 6e 74 72 6f  |received, Contro|
00002380  6c 20 69 73 20 70 61 73  73 65 64 20 74 6f 20 68  |l is passed to h|
00002390  65 72 65 20 66 6f 72 20  64 65 63 6f 64 69 6e 67  |ere for decoding|
000023a0  0d 0a d2 45 f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |...E. **********|
000023b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000023e0  2a 2a 2a 2a 2a 0d 0a dc  1f dd 20 f2 5f 44 65 63  |*****..... ._Dec|
000023f0  6f 64 65 4d 65 73 73 61  67 65 28 52 65 71 75 65  |odeMessage(Reque|
00002400  73 74 25 29 0d 0a e6 14  20 20 20 c8 8e 20 52 65  |st%)....   .. Re|
00002410  71 75 65 73 74 25 20 ca  0d 0a f0 20 20 20 20 20  |quest% ....     |
00002420  20 20 c9 20 30 20 20 20  20 20 20 3a 20 f2 5f 43  |  . 0      : ._C|
00002430  6c 6f 73 65 44 6f 77 6e  0d 0a fa 3a 20 20 20 20  |loseDown...:    |
00002440  20 20 c9 20 31 20 20 20  20 20 20 3a 20 42 6c 6f  |  . 1      : Blo|
00002450  63 6b 25 21 30 3d 28 34  38 2b a9 28 22 3c 57 69  |ck%!0=(48+.("<Wi|
00002460  6d 70 24 53 63 72 61 70  3e 20 22 29 29 80 20 ac  |mp$Scrap> ")). .|
00002470  20 33 0d 0b 04 2a 20 20  20 20 20 20 20 20 20 20  | 3...*          |
00002480  20 20 20 20 20 20 20 20  20 20 42 6c 6f 63 6b 25  |          Block%|
00002490  21 31 32 3d 42 6c 6f 63  6b 25 21 38 0d 0b 0e 23  |!12=Block%!8...#|
000024a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000024b0  20 20 20 20 42 6c 6f 63  6b 25 21 31 36 3d 32 0d  |    Block%!16=2.|
000024c0  0b 18 33 20 20 20 20 20  20 20 20 20 20 20 20 20  |..3             |
000024d0  20 20 20 20 20 20 20 24  28 42 6c 6f 63 6b 25 2b  |       $(Block%+|
000024e0  34 34 29 3d 22 3c 57 69  6d 70 24 53 63 72 61 70  |44)="<Wimp$Scrap|
000024f0  3e 22 0d 0b 22 2a 20 20  20 20 20 20 20 20 20 20  |>".."*          |
00002500  20 20 20 20 20 20 20 20  20 20 53 61 76 65 52 65  |          SaveRe|
00002510  66 25 3d 42 6c 6f 63 6b  25 21 31 32 0d 0b 2c 40  |f%=Block%!12..,@|
00002520  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002530  20 20 20 20 c8 99 20 22  57 69 6d 70 5f 53 65 6e  |    .. "Wimp_Sen|
00002540  64 4d 65 73 73 61 67 65  22 2c 31 37 2c 42 6c 6f  |dMessage",17,Blo|
00002550  63 6b 25 2c 42 6c 6f 63  6b 25 21 34 0d 0b 36 30  |ck%,Block%!4..60|
00002560  20 20 20 20 20 20 c9 20  32 20 20 20 20 20 20 3a  |      . 2      :|
00002570  20 f2 5f 48 61 6e 64 6c  65 4d 65 73 73 61 67 65  | ._HandleMessage|
00002580  5f 44 61 74 61 53 61 76  65 41 63 6b 0d 0b 40 26  |_DataSaveAck..@&|
00002590  20 20 20 20 20 20 c9 20  33 20 20 20 20 20 20 3a  |      . 3      :|
000025a0  20 f2 5f 46 69 6c 65 44  72 6f 70 70 65 64 4f 6e  | ._FileDroppedOn|
000025b0  4d 65 0d 0b 4a 1f 20 20  20 20 20 20 c9 20 35 20  |Me..J.      . 5 |
000025c0  20 20 20 20 20 3a 20 f2  5f 44 61 74 61 4f 70 65  |     : ._DataOpe|
000025d0  6e 0d 0b 54 22 20 20 20  20 20 20 c9 20 31 30 20  |n..T"      . 10 |
000025e0  20 20 20 20 3a 20 f2 5f  44 65 73 6b 54 6f 70 53  |    : ._DeskTopS|
000025f0  61 76 65 0d 0b 5e 26 20  20 20 20 20 20 c9 20 31  |ave..^&      . 1|
00002600  34 20 20 20 20 20 3a 20  f2 5f 4c 6f 77 50 6f 77  |4     : ._LowPow|
00002610  65 72 57 61 72 6e 69 6e  67 0d 0b 68 48 20 20 20  |erWarning..hH   |
00002620  20 20 20 c9 20 26 35 30  32 20 20 20 3a 20 f2 5f  |   . &502   : ._|
00002630  47 69 76 65 48 65 6c 70  28 42 6c 6f 63 6b 25 21  |GiveHelp(Block%!|
00002640  33 32 2c 42 6c 6f 63 6b  25 21 33 36 2c 42 6c 6f  |32,Block%!36,Blo|
00002650  63 6b 25 21 32 30 2c 42  6c 6f 63 6b 25 21 32 34  |ck%!20,Block%!24|
00002660  29 0d 0b 72 50 20 20 20  20 20 20 c9 20 26 34 30  |)..rP      . &40|
00002670  30 43 32 20 3a 20 e7 20  a4 5f 52 65 61 64 53 74  |0C2 : . ._ReadSt|
00002680  72 69 6e 67 28 42 6c 6f  63 6b 25 2b 32 38 29 3d  |ring(Block%+28)=|
00002690  4d 79 54 61 73 6b 4e 61  6d 65 24 20 80 20 42 6c  |MyTaskName$ . Bl|
000026a0  6f 63 6b 25 21 34 3c 3e  20 4d 79 5f 69 64 25 20  |ock%!4<> My_id% |
000026b0  8c 0d 0b 7c 5f 20 20 20  20 20 20 20 20 20 20 20  |...|_           |
000026c0  20 20 20 20 20 20 20 20  20 20 20 20 f4 20 41 6e  |            . An|
000026d0  6f 74 68 65 72 20 21 43  61 73 73 65 74 74 65 20  |other !Cassette |
000026e0  69 73 20 74 72 79 69 6e  67 20 74 6f 20 73 74 61  |is trying to sta|
000026f0  72 74 20 75 70 2c 20 49  20 61 6d 20 67 6f 69 6e  |rt up, I am goin|
00002700  67 20 74 6f 20 62 75 67  67 65 72 20 6f 66 66 21  |g to bugger off!|
00002710  0d 0b 86 26 20 20 20 20  20 20 20 20 20 20 20 20  |...&            |
00002720  20 20 20 20 20 20 20 20  20 20 20 f2 5f 43 6c 6f  |           ._Clo|
00002730  73 65 44 6f 77 6e 0d 0b  90 19 20 20 20 20 20 20  |seDown....      |
00002740  20 20 20 20 20 20 20 20  20 20 20 20 20 20 cd 0d  |              ..|
00002750  0b 9a 23 20 20 20 20 20  20 c9 20 26 34 30 30 43  |..#      . &400C|
00002760  43 20 3a 20 42 6c 6f 63  6b 25 21 30 30 20 3d 20  |C : Block%!00 = |
00002770  34 38 0d 0b a4 2c 20 20  20 20 20 20 20 20 20 20  |48...,          |
00002780  20 20 20 20 20 20 20 20  20 20 42 6c 6f 63 6b 25  |          Block%|
00002790  21 31 32 20 3d 20 42 6c  6f 63 6b 25 21 38 0d 0b  |!12 = Block%!8..|
000027a0  ae 2a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.*              |
000027b0  20 20 20 20 20 20 42 6c  6f 63 6b 25 21 31 36 20  |      Block%!16 |
000027c0  3d 20 26 34 30 30 43 43  0d 0b b8 59 20 20 20 20  |= &400CC...Y    |
000027d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000027e0  24 28 42 6c 6f 63 6b 25  2b 32 38 29 20 3d 20 22  |$(Block%+28) = "|
000027f0  63 61 73 73 65 74 65 22  20 20 20 20 20 20 20 20  |cassete"        |
00002800  20 3a f4 20 53 70 72 69  74 65 20 6e 61 6d 65 20  | :. Sprite name |
00002810  22 69 63 5f 63 73 76 74  65 78 74 22 20 65 74 63  |"ic_csvtext" etc|
00002820  2e 0d 0b c2 56 20 20 20  20 20 20 20 20 20 20 20  |....V           |
00002830  20 20 20 20 20 20 20 20  20 24 28 42 6c 6f 63 6b  |         $(Block|
00002840  25 2b 33 36 29 20 3d 20  a4 5f 49 6e 76 65 6e 74  |%+36) = ._Invent|
00002850  53 61 76 65 4e 61 6d 65  20 3a f4 20 4e 61 6d 65  |SaveName :. Name|
00002860  20 74 6f 20 63 61 6c 6c  20 69 63 6f 6e 69 73 65  | to call iconise|
00002870  64 20 69 63 6f 6e 2e 0d  0b cc 40 20 20 20 20 20  |d icon....@     |
00002880  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 c8  |               .|
00002890  99 20 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |. "Wimp_SendMess|
000028a0  61 67 65 22 2c 31 37 2c  42 6c 6f 63 6b 25 2c 42  |age",17,Block%,B|
000028b0  6c 6f 63 6b 25 21 34 0d  0b d6 08 20 20 20 cb 0d  |lock%!4....   ..|
000028c0  0b e0 05 e1 0d 0b ea 05  3a 0d 0b f4 3e f4 20 2a  |........:...>. *|
000028d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00002900  2a 2a 2a 2a 2a 2a 2a 0d  0b fe 3e f4 20 53 74 61  |*******...>. Sta|
00002910  72 74 20 55 70 20 70 72  6f 67 72 61 6d 20 61 73  |rt Up program as|
00002920  20 61 20 74 61 73 6b 20  77 69 74 68 20 6e 61 6d  | a task with nam|
00002930  65 20 22 43 61 73 73 65  74 74 65 20 44 65 73 69  |e "Cassette Desi|
00002940  67 6e 65 72 22 0d 0c 08  22 f4 20 41 6e 64 20 70  |gner"...". And p|
00002950  75 74 20 69 63 6f 6e 20  6f 6e 20 74 68 65 20 49  |ut icon on the I|
00002960  63 6f 6e 20 62 61 72 0d  0c 12 3e f4 20 2a 2a 2a  |con bar...>. ***|
00002970  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000029a0  2a 2a 2a 2a 2a 0d 0c 1c  1e dd 20 f2 5f 49 6e 69  |*****..... ._Ini|
000029b0  74 69 61 6c 69 73 65 5f  57 49 4d 50 5f 53 79 73  |tialise_WIMP_Sys|
000029c0  74 65 6d 0d 0c 26 15 20  20 20 ea 20 57 69 6d 70  |tem..&.   . Wimp|
000029d0  56 65 72 73 69 6f 6e 24  0d 0c 30 05 20 0d 0c 3a  |Version$..0. ..:|
000029e0  26 20 20 20 4d 79 54 61  73 6b 4e 61 6d 65 24 3d  |&   MyTaskName$=|
000029f0  22 43 61 73 73 65 74 74  65 20 44 65 73 69 67 6e  |"Cassette Design|
00002a00  65 72 22 0d 0c 44 05 20  0d 0c 4e 43 20 20 20 57  |er"..D. ..NC   W|
00002a10  69 6d 70 56 65 72 73 69  6f 6e 24 3d a4 5f 43 6f  |impVersion$=._Co|
00002a20  6e 76 65 72 74 53 79 73  74 65 6d 54 6f 53 74 72  |nvertSystemToStr|
00002a30  69 6e 67 28 22 43 61 73  73 65 74 74 65 24 57 69  |ing("Cassette$Wi|
00002a40  6d 70 56 65 72 73 69 6f  6e 22 29 0d 0c 58 04 0d  |mpVersion")..X..|
00002a50  0c 62 1f 20 20 20 e7 20  28 57 69 6d 70 56 65 72  |.b.   . (WimpVer|
00002a60  73 69 6f 6e 24 3d 22 33  30 30 22 29 20 8c 0d 0c  |sion$="300") ...|
00002a70  6c 3b 20 20 20 20 20 20  f4 20 53 65 74 20 75 70  |l;      . Set up|
00002a80  20 6c 69 73 74 20 6f 66  20 6d 65 73 73 61 67 65  | list of message|
00002a90  73 20 74 68 61 74 20 49  20 77 61 6e 74 20 74 6f  |s that I want to|
00002aa0  20 72 65 63 65 69 76 65  3a 0d 0c 76 24 20 20 20  | receive:..v$   |
00002ab0  20 20 20 42 6c 6f 63 6b  25 21 30 3d 30 20 20 20  |   Block%!0=0   |
00002ac0  20 20 20 20 20 3a 20 f4  20 51 75 69 74 0d 0c 80  |     : . Quit...|
00002ad0  28 20 20 20 20 20 20 42  6c 6f 63 6b 25 21 34 3d  |(      Block%!4=|
00002ae0  31 20 20 20 20 20 20 20  20 3a 20 f4 20 44 61 74  |1        : . Dat|
00002af0  61 53 61 76 65 0d 0c 8a  2b 20 20 20 20 20 20 42  |aSave...+      B|
00002b00  6c 6f 63 6b 25 21 38 3d  32 20 20 20 20 20 20 20  |lock%!8=2       |
00002b10  20 3a 20 f4 20 44 61 74  61 53 61 76 65 41 63 6b  | : . DataSaveAck|
00002b20  0d 0c 94 28 20 20 20 20  20 20 42 6c 6f 63 6b 25  |...(      Block%|
00002b30  21 31 32 3d 33 20 20 20  20 20 20 20 3a 20 f4 20  |!12=3       : . |
00002b40  44 61 74 61 4c 6f 61 64  0d 0c 9e 28 20 20 20 20  |DataLoad...(    |
00002b50  20 20 42 6c 6f 63 6b 25  21 31 36 3d 35 20 20 20  |  Block%!16=5   |
00002b60  20 20 20 20 3a 20 f4 20  44 61 74 61 4f 70 65 6e  |    : . DataOpen|
00002b70  0d 0c a8 2b 20 20 20 20  20 20 42 6c 6f 63 6b 25  |...+      Block%|
00002b80  21 32 30 3d 31 30 20 20  20 20 20 20 3a 20 f4 20  |!20=10      : . |
00002b90  44 65 73 6b 54 6f 70 53  61 76 65 0d 0c b2 56 20  |DeskTopSave...V |
00002ba0  20 20 20 20 20 42 6c 6f  63 6b 25 21 32 34 3d 31  |     Block%!24=1|
00002bb0  34 20 20 20 20 20 20 3a  20 f4 20 53 68 75 74 44  |4      : . ShutD|
00002bc0  6f 77 6e 20 20 20 20 28  50 6f 72 74 61 62 6c 65  |own    (Portable|
00002bd0  20 6f 6e 6c 79 2e 20 50  6f 77 65 72 20 6c 6f 77  | only. Power low|
00002be0  20 77 61 72 6e 69 6e 67  20 6d 65 73 73 61 67 65  | warning message|
00002bf0  29 0d 0c bc 38 20 20 20  20 20 20 42 6c 6f 63 6b  |)...8      Block|
00002c00  25 21 32 38 3d 26 35 30  32 20 20 20 20 3a 20 f4  |%!28=&502    : .|
00002c10  20 49 6e 74 65 72 61 63  74 69 76 65 20 68 65 6c  | Interactive hel|
00002c20  70 20 72 65 71 75 65 73  74 0d 0c c6 2f 20 20 20  |p request.../   |
00002c30  20 20 20 42 6c 6f 63 6b  25 21 33 32 3d 26 34 30  |   Block%!32=&40|
00002c40  30 43 32 20 20 3a 20 f4  20 54 61 73 6b 20 49 6e  |0C2  : . Task In|
00002c50  69 74 69 61 6c 69 73 65  0d 0c d0 27 20 20 20 20  |itialise...'    |
00002c60  20 20 42 6c 6f 63 6b 25  21 33 36 3d 26 34 30 30  |  Block%!36=&400|
00002c70  43 43 20 20 3a 20 f4 20  49 63 6f 6e 69 7a 65 0d  |CC  : . Iconize.|
00002c80  0c da 29 20 20 20 20 20  20 42 6c 6f 63 6b 25 21  |..)      Block%!|
00002c90  34 30 3d 30 20 20 20 20  20 20 20 3a 20 f4 20 54  |40=0       : . T|
00002ca0  65 72 6d 69 6e 61 74 65  0d 0c e4 50 20 20 20 20  |erminate...P    |
00002cb0  20 20 c8 99 20 22 57 69  6d 70 5f 49 6e 69 74 69  |  .. "Wimp_Initi|
00002cc0  61 6c 69 73 65 22 2c 33  30 30 2c 26 34 42 35 33  |alise",300,&4B53|
00002cd0  34 31 35 34 2c 4d 79 54  61 73 6b 4e 61 6d 65 24  |4154,MyTaskName$|
00002ce0  2c 42 6c 6f 63 6b 25 20  b8 20 56 65 72 73 69 6f  |,Block% . Versio|
00002cf0  6e 2c 4d 79 5f 69 64 25  0d 0c ee 08 20 20 20 cc  |n,My_id%....   .|
00002d00  0d 0c f8 49 20 20 20 20  20 20 c8 99 20 22 57 69  |...I      .. "Wi|
00002d10  6d 70 5f 49 6e 69 74 69  61 6c 69 73 65 22 2c 32  |mp_Initialise",2|
00002d20  30 30 2c 26 34 42 35 33  34 31 35 34 2c 4d 79 54  |00,&4B534154,MyT|
00002d30  61 73 6b 4e 61 6d 65 24  20 b8 20 56 65 72 73 69  |askName$ . Versi|
00002d40  6f 6e 2c 4d 79 5f 69 64  25 0d 0d 02 08 20 20 20  |on,My_id%....   |
00002d50  cd 0d 0d 0c 2d 20 20 20  49 63 6f 6e 42 61 72 49  |....-   IconBarI|
00002d60  63 6f 6e 48 61 6e 64 6c  65 25 3d a4 5f 43 72 65  |conHandle%=._Cre|
00002d70  61 74 65 49 63 6f 6e 42  61 72 49 63 6f 6e 0d 0d  |ateIconBarIcon..|
00002d80  16 1b 20 20 20 f2 5f 49  6e 69 74 69 61 6c 69 73  |..   ._Initialis|
00002d90  65 5f 53 70 72 69 74 65  73 0d 0d 20 1d 20 20 20  |e_Sprites.. .   |
00002da0  f2 5f 49 6e 69 74 69 61  6c 69 73 65 5f 54 65 6d  |._Initialise_Tem|
00002db0  70 6c 61 74 65 73 0d 0d  2a 6e 20 20 20 4d 61 73  |plates..*n   Mas|
00002dc0  6b 25 3d 25 31 31 30 30  30 30 30 31 31 30 30 30  |k%=%110000011000|
00002dd0  31 20 20 20 20 3a 20 f4  20 4d 61 73 6b 20 4f 75  |1    : . Mask Ou|
00002de0  74 20 63 6f 64 65 73 20  66 6f 72 20 47 61 69 6e  |t codes for Gain|
00002df0  2f 4c 6f 73 65 20 43 61  72 65 74 2c 20 50 6f 69  |/Lose Caret, Poi|
00002e00  6e 74 65 72 20 45 6e 74  65 72 2f 4c 65 61 76 65  |nter Enter/Leave|
00002e10  20 57 69 6e 64 6f 77 20  26 20 4e 75 6c 6c 20 45  | Window & Null E|
00002e20  76 65 6e 74 0d 0d 34 05  e1 0d 0d 3e 05 3a 0d 0d  |vent..4....>.:..|
00002e30  48 41 f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |HA. ************|
00002e40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00002e60  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00002e70  0d 52 41 f4 20 41 6c 6c  20 57 49 4d 50 20 50 72  |.RA. All WIMP Pr|
00002e80  6f 67 72 61 6d 73 20 73  68 6f 75 6c 64 20 62 65  |ograms should be|
00002e90  20 61 62 6c 65 20 74 6f  20 73 68 75 74 20 74 68  | able to shut th|
00002ea0  65 6d 73 65 6c 76 65 73  20 64 6f 77 6e 21 21 21  |emselves down!!!|
00002eb0  0d 0d 5c 41 f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..\A. **********|
00002ec0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00002ef0  2a 0d 0d 66 11 dd 20 f2  5f 43 6c 6f 73 65 44 6f  |*..f.. ._CloseDo|
00002f00  77 6e 0d 0d 70 2b 20 20  20 c8 99 20 22 57 69 6d  |wn..p+   .. "Wim|
00002f10  70 5f 43 6c 6f 73 65 44  6f 77 6e 22 2c 4d 79 5f  |p_CloseDown",My_|
00002f20  69 64 25 2c 26 34 42 35  33 34 31 35 34 0d 0d 7a  |id%,&4B534154..z|
00002f30  13 20 20 20 c8 99 20 22  4f 53 5f 45 78 69 74 22  |.   .. "OS_Exit"|
00002f40  0d 0d 84 05 e1 0d 0d 8e  05 3a 0d 0d 98 46 f4 20  |.........:...F. |
00002f50  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00002f90  0d 0d a2 46 f4 20 4f 70  65 6e 73 20 75 70 20 74  |...F. Opens up t|
00002fa0  68 65 20 74 65 6d 70 6c  61 74 65 20 66 69 6c 65  |he template file|
00002fb0  2c 20 46 6f 6e 64 6c 65  73 20 69 74 2c 20 61 6e  |, Fondles it, an|
00002fc0  64 20 74 68 65 6e 20 63  72 65 61 74 65 73 20 57  |d then creates W|
00002fd0  69 6e 64 6f 77 73 0d 0d  ac 46 f4 20 2a 2a 2a 2a  |indows...F. ****|
00002fe0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00003010  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 0d b6 1c  |************....|
00003020  dd 20 f2 5f 49 6e 69 74  69 61 6c 69 73 65 5f 54  |. ._Initialise_T|
00003030  65 6d 70 6c 61 74 65 73  0d 0d c0 2e 20 20 20 6d  |emplates....   m|
00003040  61 78 77 73 25 3d 26 41  30 30 20 3a 20 de 20 77  |axws%=&A00 : . w|
00003050  73 25 20 6d 61 78 77 73  25 20 3a 20 63 75 72 77  |s% maxws% : curw|
00003060  73 25 3d 77 73 25 0d 0d  ca 42 20 20 20 c8 99 22  |s%=ws%...B   .."|
00003070  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
00003080  65 22 2c 2c 22 3c 43 61  73 73 65 74 74 65 24 44  |e",,"<Cassette$D|
00003090  69 72 3e 2e 52 65 73 6f  75 72 63 65 73 2e 54 65  |ir>.Resources.Te|
000030a0  6d 70 6c 61 74 65 73 22  0d 0d d4 4a 20 20 20 c8  |mplates"...J   .|
000030b0  99 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  |."Wimp_LoadTempl|
000030c0  61 74 65 22 2c 2c 42 6c  6f 63 6b 25 2c 77 73 25  |ate",,Block%,ws%|
000030d0  2c 77 73 25 2b 6d 61 78  77 73 25 2c 2d 31 2c 22  |,ws%+maxws%,-1,"|
000030e0  69 6e 66 6f 22 2c 30 20  b8 20 2c 2c 63 75 72 77  |info",0 . ,,curw|
000030f0  73 25 0d 0d de 2c 20 20  20 c8 99 22 57 69 6d 70  |s%...,   .."Wimp|
00003100  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 22 2c 2c  |_CreateWindow",,|
00003110  42 6c 6f 63 6b 25 20 b8  20 49 6e 66 6f 25 0d 0d  |Block% . Info%..|
00003120  e8 4d 20 20 20 c8 99 22  57 69 6d 70 5f 4c 6f 61  |.M   .."Wimp_Loa|
00003130  64 54 65 6d 70 6c 61 74  65 22 2c 2c 42 6c 6f 63  |dTemplate",,Bloc|
00003140  6b 25 2c 63 75 72 77 73  25 2c 77 73 25 2b 6d 61  |k%,curws%,ws%+ma|
00003150  78 77 73 25 2c 2d 31 2c  22 73 61 76 65 22 2c 30  |xws%,-1,"save",0|
00003160  20 b8 20 2c 2c 63 75 72  77 73 25 0d 0d f2 2c 20  | . ,,curws%..., |
00003170  20 20 c8 99 22 57 69 6d  70 5f 43 72 65 61 74 65  |  .."Wimp_Create|
00003180  57 69 6e 64 6f 77 22 2c  2c 42 6c 6f 63 6b 25 20  |Window",,Block% |
00003190  b8 20 53 61 76 65 25 0d  0d fc 4d 20 20 20 c8 99  |. Save%...M   ..|
000031a0  22 57 69 6d 70 5f 4c 6f  61 64 54 65 6d 70 6c 61  |"Wimp_LoadTempla|
000031b0  74 65 22 2c 2c 42 6c 6f  63 6b 25 2c 63 75 72 77  |te",,Block%,curw|
000031c0  73 25 2c 77 73 25 2b 6d  61 78 77 73 25 2c 2d 31  |s%,ws%+maxws%,-1|
000031d0  2c 22 4d 61 69 6e 22 2c  30 20 b8 20 2c 2c 63 75  |,"Main",0 . ,,cu|
000031e0  72 77 73 25 0d 0e 06 2c  20 20 20 c8 99 22 57 69  |rws%...,   .."Wi|
000031f0  6d 70 5f 43 72 65 61 74  65 57 69 6e 64 6f 77 22  |mp_CreateWindow"|
00003200  2c 2c 42 6c 6f 63 6b 25  20 b8 20 4d 61 69 6e 25  |,,Block% . Main%|
00003210  0d 0e 10 52 20 20 20 c8  99 22 57 69 6d 70 5f 4c  |...R   .."Wimp_L|
00003220  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 2c 42 6c  |oadTemplate",,Bl|
00003230  6f 63 6b 25 2c 63 75 72  77 73 25 2c 77 73 25 2b  |ock%,curws%,ws%+|
00003240  6d 61 78 77 73 25 2c 2d  31 2c 22 50 72 69 6e 74  |maxws%,-1,"Print|
00003250  5f 4f 70 74 22 2c 30 20  b8 20 2c 2c 63 75 72 77  |_Opt",0 . ,,curw|
00003260  73 25 0d 0e 1a 1e 20 20  20 42 6c 6f 63 6b 25 21  |s%....   Block%!|
00003270  36 34 20 3d 20 53 70 72  69 74 65 41 72 65 61 25  |64 = SpriteArea%|
00003280  0d 0e 24 2f 20 20 20 c8  99 22 57 69 6d 70 5f 43  |..$/   .."Wimp_C|
00003290  72 65 61 74 65 57 69 6e  64 6f 77 22 2c 2c 42 6c  |reateWindow",,Bl|
000032a0  6f 63 6b 25 20 b8 20 4f  70 74 69 6f 6e 73 25 0d  |ock% . Options%.|
000032b0  0e 2e 1d 20 20 20 c8 99  22 57 69 6d 70 5f 43 6c  |...   .."Wimp_Cl|
000032c0  6f 73 65 54 65 6d 70 6c  61 74 65 22 0d 0e 38 05  |oseTemplate"..8.|
000032d0  e1 0d 0e 42 05 3a 0d 0e  4c 49 f4 20 2a 2a 2a 2a  |...B.:..LI. ****|
000032e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00003310  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00003320  0e 56 49 f4 20 54 68 69  73 20 77 72 69 74 65 73  |.VI. This writes|
00003330  20 6f 76 65 72 20 74 68  65 20 74 65 78 74 20 69  | over the text i|
00003340  6e 20 74 68 65 20 49 63  6f 6e 2c 20 61 6e 64 20  |n the Icon, and |
00003350  69 74 20 73 68 6f 75 6c  64 20 6e 6f 74 20 62 65  |it should not be|
00003360  20 64 6f 6e 65 21 21 21  0d 0e 60 2e f4 20 4f 6e  | done!!!..`.. On|
00003370  6c 79 20 57 6f 72 6b 73  20 57 69 74 68 20 49 6e  |ly Works With In|
00003380  64 69 72 65 63 74 65 64  20 54 65 78 74 20 53 74  |directed Text St|
00003390  72 69 6e 67 73 21 0d 0e  6a 49 f4 20 2a 2a 2a 2a  |rings!..jI. ****|
000033a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000033d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
000033e0  0e 74 34 dd 20 f2 5f 53  65 74 49 63 6f 6e 54 65  |.t4. ._SetIconTe|
000033f0  78 74 28 49 63 6f 6e 48  61 6e 64 6c 65 25 2c 57  |xt(IconHandle%,W|
00003400  69 6e 64 6f 77 48 61 6e  64 6c 65 25 2c 54 65 78  |indowHandle%,Tex|
00003410  74 24 29 0d 0e 7e 11 20  20 20 ea 20 50 6f 69 6e  |t$)..~.   . Poin|
00003420  74 65 72 25 0d 0e 88 1f  20 20 20 42 6c 6f 63 6b  |ter%....   Block|
00003430  25 21 31 30 30 3d 57 69  6e 64 6f 77 48 61 6e 64  |%!100=WindowHand|
00003440  6c 65 25 0d 0e 92 1d 20  20 20 42 6c 6f 63 6b 25  |le%....   Block%|
00003450  21 31 30 34 3d 49 63 6f  6e 48 61 6e 64 6c 65 25  |!104=IconHandle%|
00003460  0d 0e 9c 29 20 20 20 c8  99 20 22 57 69 6d 70 5f  |...)   .. "Wimp_|
00003470  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 42  |GetIconState",,B|
00003480  6c 6f 63 6b 25 2b 31 30  30 0d 0e a6 23 20 20 20  |lock%+100...#   |
00003490  e7 20 28 42 6c 6f 63 6b  25 21 31 32 34 20 80 20  |. (Block%!124 . |
000034a0  28 31 3c 3c 38 29 29 3c  3e 30 20 8c 0d 0e b0 1d  |(1<<8))<>0 .....|
000034b0  20 20 20 20 20 20 50 6f  69 6e 74 65 72 25 3d 42  |      Pointer%=B|
000034c0  6c 6f 63 6b 25 21 31 32  38 0d 0e ba 08 20 20 20  |lock%!128....   |
000034d0  cc 0d 0e c4 1d 20 20 20  20 20 20 50 6f 69 6e 74  |.....      Point|
000034e0  65 72 25 3d 42 6c 6f 63  6b 25 2b 31 32 38 0d 0e  |er%=Block%+128..|
000034f0  ce 08 20 20 20 cd 0d 0e  d8 16 20 20 20 24 50 6f  |..   .....   $Po|
00003500  69 6e 74 65 72 25 3d 54  65 78 74 24 0d 0e e2 05  |inter%=Text$....|
00003510  e1 0d 0e ec 05 3a 0d 0e  f6 2c f4 20 2a 2a 2a 2a  |.....:...,. ****|
00003520  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00003540  2a 2a 0d 0f 00 2c f4 20  54 68 65 20 6e 61 6d 65  |**...,. The name|
00003550  20 73 6f 72 74 20 6f 66  20 73 61 79 73 20 69 74  | sort of says it|
00003560  20 61 6c 6c 20 72 65 61  6c 6c 79 21 21 21 0d 0f  | all really!!!..|
00003570  0a 2c f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.,. ************|
00003580  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00003590  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 0f 14 18 dd 20  |**********..... |
000035a0  f2 5f 53 65 74 55 70 49  63 6f 6e 42 61 72 4d 65  |._SetUpIconBarMe|
000035b0  6e 75 0d 0f 1e 0b 20 20  20 ea 20 6d 25 0d 0f 28  |nu....   . m%..(|
000035c0  21 20 20 20 4d 65 6e 75  41 63 74 69 76 65 25 20  |!   MenuActive% |
000035d0  3d 20 49 63 6f 6e 42 61  72 4d 65 6e 75 25 0d 0f  |= IconBarMenu%..|
000035e0  32 16 20 20 20 de 20 6d  65 6e 75 25 20 32 38 2b  |2.   . menu% 28+|
000035f0  33 2a 32 34 0d 0f 3c 18  20 20 20 24 6d 65 6e 75  |3*24..<.   $menu|
00003600  25 3d 22 43 61 73 73 65  74 74 65 22 0d 0f 46 11  |%="Cassette"..F.|
00003610  20 20 20 6d 65 6e 75 25  3f 31 32 3d 37 0d 0f 50  |   menu%?12=7..P|
00003620  11 20 20 20 6d 65 6e 75  25 3f 31 33 3d 32 0d 0f  |.   menu%?13=2..|
00003630  5a 11 20 20 20 6d 65 6e  75 25 3f 31 34 3d 37 0d  |Z.   menu%?14=7.|
00003640  0f 64 11 20 20 20 6d 65  6e 75 25 3f 31 35 3d 30  |.d.   menu%?15=0|
00003650  0d 0f 6e 13 20 20 20 6d  65 6e 75 25 21 31 36 3d  |..n.   menu%!16=|
00003660  31 32 38 0d 0f 78 12 20  20 20 6d 65 6e 75 25 21  |128..x.   menu%!|
00003670  32 30 3d 34 30 0d 0f 82  11 20 20 20 6d 65 6e 75  |20=40....   menu|
00003680  25 21 32 34 3d 30 0d 0f  8c 12 20 20 20 6d 25 3d  |%!24=0....   m%=|
00003690  6d 65 6e 75 25 2b 32 38  0d 0f 96 0e 20 20 20 6d  |menu%+28....   m|
000036a0  25 21 30 3d 26 30 0d 0f  a0 30 20 20 20 6d 25 21  |%!0=&0...0   m%!|
000036b0  34 3d 49 6e 66 6f 25 20  20 20 20 3a f4 20 6e 61  |4=Info%    :. na|
000036c0  6d 65 20 66 72 6f 6d 20  74 65 6d 70 6c 61 74 65  |me from template|
000036d0  20 6f 70 65 6e 2e 0d 0f  aa 1c 20 20 20 6d 25 21  | open.....   m%!|
000036e0  38 3d 28 37 3c 3c 32 34  29 20 84 20 25 31 30 30  |8=(7<<24) . %100|
000036f0  30 31 0d 0f b4 16 20 20  20 24 28 6d 25 2b 31 32  |01....   $(m%+12|
00003700  29 3d 22 49 6e 66 6f 22  0d 0f be 0f 20 20 20 6d  |)="Info"....   m|
00003710  25 3d 6d 25 2b 32 34 0d  0f c8 0e 20 20 20 6d 25  |%=m%+24....   m%|
00003720  21 30 3d 26 30 0d 0f d2  14 20 20 20 6d 25 21 34  |!0=&0....   m%!4|
00003730  3d 4f 70 74 69 6f 6e 73  25 0d 0f dc 1c 20 20 20  |=Options%....   |
00003740  6d 25 21 38 3d 28 37 3c  3c 32 34 29 20 84 20 25  |m%!8=(7<<24) . %|
00003750  31 30 30 30 31 0d 0f e6  19 20 20 20 24 28 6d 25  |10001....   $(m%|
00003760  2b 31 32 29 3d 22 4f 70  74 69 6f 6e 73 22 0d 0f  |+12)="Options"..|
00003770  f0 0f 20 20 20 6d 25 3d  6d 25 2b 32 34 0d 0f fa  |..   m%=m%+24...|
00003780  0f 20 20 20 6d 25 21 30  3d 26 38 30 0d 10 04 0d  |.   m%!0=&80....|
00003790  20 20 20 6d 25 21 34 3d  30 0d 10 0e 1b 20 20 20  |   m%!4=0....   |
000037a0  6d 25 21 38 3d 28 37 3c  3c 32 34 29 84 20 25 31  |m%!8=(7<<24). %1|
000037b0  30 30 30 31 0d 10 18 16  20 20 20 24 28 6d 25 2b  |0001....   $(m%+|
000037c0  31 32 29 3d 22 51 75 69  74 22 0d 10 22 31 20 20  |12)="Quit".."1  |
000037d0  20 c8 99 22 57 69 6d 70  5f 43 72 65 61 74 65 4d  | .."Wimp_CreateM|
000037e0  65 6e 75 22 2c 2c 6d 65  6e 75 25 2c 42 6c 6f 63  |enu",,menu%,Bloc|
000037f0  6b 25 21 30 2d 36 34 2c  32 31 35 0d 10 2c 05 e1  |k%!0-64,215..,..|
00003800  0d 10 36 05 3a 0d 10 40  43 f4 20 2a 2a 2a 2a 2a  |..6.:..@C. *****|
00003810  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00003840  2a 2a 2a 2a 2a 2a 2a 2a  0d 10 4a 43 f4 20 54 68  |********..JC. Th|
00003850  69 73 20 74 61 6b 65 73  20 61 20 53 70 72 69 74  |is takes a Sprit|
00003860  65 20 61 6e 64 20 6d 61  6b 65 73 20 69 74 20 69  |e and makes it i|
00003870  6e 74 6f 20 61 6e 20 49  63 6f 6e 20 46 6f 72 20  |nto an Icon For |
00003880  74 68 65 20 49 63 6f 6e  42 61 72 0d 10 54 43 f4  |the IconBar..TC.|
00003890  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ***************|
000038a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000038c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 10  |**************..|
000038d0  5e 19 dd 20 a4 5f 43 72  65 61 74 65 49 63 6f 6e  |^.. ._CreateIcon|
000038e0  42 61 72 49 63 6f 6e 0d  10 68 0e 20 20 20 ea 20  |BarIcon..h.   . |
000038f0  49 63 6f 6e 25 0d 10 72  12 20 20 20 42 6c 6f 63  |Icon%..r.   Bloc|
00003900  6b 25 21 30 3d 2d 31 0d  10 7c 11 20 20 20 42 6c  |k%!0=-1..|.   Bl|
00003910  6f 63 6b 25 21 34 3d 30  0d 10 86 11 20 20 20 42  |ock%!4=0....   B|
00003920  6c 6f 63 6b 25 21 38 3d  30 0d 10 90 13 20 20 20  |lock%!8=0....   |
00003930  42 6c 6f 63 6b 25 21 31  32 3d 36 38 0d 10 9a 13  |Block%!12=68....|
00003940  20 20 20 42 6c 6f 63 6b  25 21 31 36 3d 36 38 0d  |   Block%!16=68.|
00003950  10 a4 20 20 20 20 42 6c  6f 63 6b 25 21 32 30 3d  |..    Block%!20=|
00003960  25 31 30 30 30 30 30 30  30 30 30 30 30 31 30 0d  |%10000000000010.|
00003970  10 ae 1f 20 20 20 24 28  42 6c 6f 63 6b 25 2b 32  |...   $(Block%+2|
00003980  34 29 3d 22 21 43 61 73  73 65 74 74 65 22 0d 10  |4)="!Cassette"..|
00003990  b8 2b 20 20 20 c8 99 20  22 57 69 6d 70 5f 43 72  |.+   .. "Wimp_Cr|
000039a0  65 61 74 65 49 63 6f 6e  22 2c 2c 42 6c 6f 63 6b  |eateIcon",,Block|
000039b0  25 20 b8 20 49 63 6f 6e  25 0d 10 c2 0a 3d 49 63  |% . Icon%....=Ic|
000039c0  6f 6e 25 0d 10 cc 05 3a  0d 10 d6 33 f4 20 2a 2a  |on%....:...3. **|
000039d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000039f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 10 e0 33 f4  |***********...3.|
00003a00  20 52 65 61 64 20 49 6e  66 6f 20 66 6f 72 20 57  | Read Info for W|
00003a10  69 6e 64 6f 77 20 4d 61  69 6e 2c 20 61 6e 64 20  |indow Main, and |
00003a20  74 68 65 6e 20 6f 70 65  6e 20 69 74 20 21 0d 10  |then open it !..|
00003a30  ea 33 f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.3. ************|
00003a40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00003a60  2a 0d 10 f4 2d dd 20 f2  5f 4f 70 65 6e 4d 61 69  |*...-. ._OpenMai|
00003a70  6e 57 69 6e 64 6f 77 28  57 69 70 65 54 65 6d 70  |nWindow(WipeTemp|
00003a80  6c 61 74 65 49 63 6f 6e  54 65 78 74 25 29 0d 10  |lateIconText%)..|
00003a90  fe 48 20 20 20 e7 20 57  69 70 65 54 65 6d 70 6c  |.H   . WipeTempl|
00003aa0  61 74 65 49 63 6f 6e 54  65 78 74 25 20 80 20 4e  |ateIconText% . N|
00003ab0  65 77 25 20 80 20 ac 20  53 74 61 72 74 57 69 74  |ew% . . StartWit|
00003ac0  68 4c 6f 61 64 20 8c 20  f2 5f 57 69 70 65 49 63  |hLoad . ._WipeIc|
00003ad0  6f 6e 54 65 78 74 0d 11  08 14 20 20 20 21 42 6c  |onText....   !Bl|
00003ae0  6f 63 6b 25 3d 4d 61 69  6e 25 0d 11 12 27 20 20  |ock%=Main%...'  |
00003af0  20 c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  | .. "Wimp_GetWin|
00003b00  64 6f 77 53 74 61 74 65  22 2c 2c 42 6c 6f 63 6b  |dowState",,Block|
00003b10  25 0d 11 1c 23 20 20 20  c8 99 20 22 57 69 6d 70  |%...#   .. "Wimp|
00003b20  5f 4f 70 65 6e 57 69 6e  64 6f 77 22 2c 2c 42 6c  |_OpenWindow",,Bl|
00003b30  6f 63 6b 25 0d 11 26 0d  20 20 20 4e 65 77 25 3d  |ock%..&.   New%=|
00003b40  a3 0d 11 30 1e 20 20 20  f2 5f 53 65 74 43 61 72  |...0.   ._SetCar|
00003b50  65 74 50 6f 73 69 74 69  6f 6e 28 30 2c 30 29 0d  |etPosition(0,0).|
00003b60  11 3a 05 e1 0d 11 44 05  3a 0d 11 4e 4c f4 20 2a  |.:....D.:..NL. *|
00003b70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00003bb0  2a 2a 2a 2a 2a 0d 11 58  4c f4 20 54 68 69 73 20  |*****..XL. This |
00003bc0  72 65 61 64 73 20 74 68  65 20 74 65 78 74 20 66  |reads the text f|
00003bd0  72 6f 6d 20 74 68 65 20  77 72 69 74 61 62 6c 65  |rom the writable|
00003be0  20 49 63 6f 6e 20 73 70  65 63 69 66 69 65 64 20  | Icon specified |
00003bf0  69 6e 20 74 68 65 20 70  61 72 61 6d 65 74 65 72  |in the parameter|
00003c00  73 0d 11 62 41 f4 20 61  6e 64 20 69 66 20 50 61  |s..bA. and if Pa|
00003c10  64 25 3d 54 52 55 45 20  74 68 65 6e 20 70 61 64  |d%=TRUE then pad|
00003c20  73 20 6f 75 74 20 74 68  65 20 72 65 73 75 6c 74  |s out the result|
00003c30  20 74 6f 20 33 32 20 63  68 61 72 61 63 74 65 72  | to 32 character|
00003c40  73 21 0d 11 6c 4c f4 20  2a 2a 2a 2a 2a 2a 2a 2a  |s!..lL. ********|
00003c50  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00003c80  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 11  |**************..|
00003c90  76 34 dd 20 a4 5f 52 65  61 64 49 63 6f 6e 54 65  |v4. ._ReadIconTe|
00003ca0  78 74 28 57 69 6e 64 6f  77 48 61 6e 64 6c 65 25  |xt(WindowHandle%|
00003cb0  2c 49 63 6f 6e 48 61 6e  64 6c 65 25 2c 50 61 64  |,IconHandle%,Pad|
00003cc0  25 29 0d 11 80 10 20 20  20 ea 20 52 65 73 75 6c  |%)....   . Resul|
00003cd0  74 24 0d 11 8a 1f 20 20  20 42 6c 6f 63 6b 25 21  |t$....   Block%!|
00003ce0  31 30 30 3d 57 69 6e 64  6f 77 48 61 6e 64 6c 65  |100=WindowHandle|
00003cf0  25 0d 11 94 1d 20 20 20  42 6c 6f 63 6b 25 21 31  |%....   Block%!1|
00003d00  30 34 3d 49 63 6f 6e 48  61 6e 64 6c 65 25 0d 11  |04=IconHandle%..|
00003d10  9e 29 20 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |.)   .. "Wimp_Ge|
00003d20  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 42 6c 6f  |tIconState",,Blo|
00003d30  63 6b 25 2b 31 30 30 0d  11 a8 23 20 20 20 e7 20  |ck%+100...#   . |
00003d40  28 42 6c 6f 63 6b 25 21  31 32 34 20 80 20 28 31  |(Block%!124 . (1|
00003d50  3c 3c 38 29 29 3c 3e 30  20 8c 0d 11 b2 1f 20 20  |<<8))<>0 .....  |
00003d60  20 20 20 20 52 65 73 75  6c 74 24 3d 24 28 42 6c  |    Result$=$(Bl|
00003d70  6f 63 6b 25 21 31 32 38  29 0d 11 bc 08 20 20 20  |ock%!128)....   |
00003d80  cc 0d 11 c6 1f 20 20 20  20 20 20 52 65 73 75 6c  |.....      Resul|
00003d90  74 24 3d 24 28 42 6c 6f  63 6b 25 2b 31 32 38 29  |t$=$(Block%+128)|
00003da0  0d 11 d0 08 20 20 20 cd  0d 11 da 26 20 20 20 e7  |....   ....&   .|
00003db0  20 50 61 64 25 20 8c 20  3d c0 52 65 73 75 6c 74  | Pad% . =.Result|
00003dc0  24 2b c4 33 32 2c 22 20  22 29 2c 33 32 29 0d 11  |$+.32," "),32)..|
00003dd0  e4 0c 3d 52 65 73 75 6c  74 24 0d 11 ee 05 3a 0d  |..=Result$....:.|
00003de0  11 f8 2f f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |../. ***********|
00003df0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00003e00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 12  |**************..|
00003e10  02 2f f4 20 57 69 70 65  20 74 68 65 20 74 65 78  |./. Wipe the tex|
00003e20  74 20 66 72 6f 6d 20 61  6c 6c 20 74 68 65 20 77  |t from all the w|
00003e30  72 69 74 61 62 6c 65 20  69 63 6f 6e 73 0d 12 0c  |ritable icons...|
00003e40  2f f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |/. *************|
00003e50  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00003e60  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 12 16 14  |************....|
00003e70  dd 20 f2 5f 57 69 70 65  49 63 6f 6e 54 65 78 74  |. ._WipeIconText|
00003e80  0d 12 20 13 20 20 20 49  63 6f 6e 54 65 78 74 24  |.. .   IconText$|
00003e90  3d 22 22 0d 12 2a 15 20  20 20 e3 20 4c 6f 6f 70  |=""..*.   . Loop|
00003ea0  25 3d 30 20 b8 20 33 37  0d 12 34 2e 20 20 20 20  |%=0 . 37..4.    |
00003eb0  20 20 f2 5f 53 65 74 49  63 6f 6e 54 65 78 74 28  |  ._SetIconText(|
00003ec0  4c 6f 6f 70 25 2c 4d 61  69 6e 25 2c 49 63 6f 6e  |Loop%,Main%,Icon|
00003ed0  54 65 78 74 24 29 0d 12  3e 1f 20 20 20 20 20 20  |Text$)..>.      |
00003ee0  f2 5f 52 65 64 72 61 77  28 4d 61 69 6e 25 2c 4c  |._Redraw(Main%,L|
00003ef0  6f 6f 70 25 29 0d 12 48  08 20 20 20 ed 0d 12 52  |oop%)..H.   ...R|
00003f00  33 20 20 20 f2 5f 53 65  74 49 63 6f 6e 54 65 78  |3   ._SetIconTex|
00003f10  74 28 54 61 70 65 4e 75  6d 62 65 72 25 2c 4d 61  |t(TapeNumber%,Ma|
00003f20  69 6e 25 2c 54 61 70 65  4e 75 6d 62 65 72 24 29  |in%,TapeNumber$)|
00003f30  0d 12 5c 22 20 20 20 f2  5f 52 65 64 72 61 77 28  |..\"   ._Redraw(|
00003f40  4d 61 69 6e 25 2c 54 61  70 65 4e 75 6d 62 65 72  |Main%,TapeNumber|
00003f50  25 29 0d 12 66 05 e1 0d  12 70 05 3a 0d 12 7a 2c  |%)..f....p.:..z,|
00003f60  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
00003f70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00003f80  2a 2a 2a 2a 2a 2a 2a 2a  0d 12 84 2c f4 20 54 68  |********...,. Th|
00003f90  65 20 6e 61 6d 65 20 73  6f 72 74 20 6f 66 20 73  |e name sort of s|
00003fa0  61 79 73 20 69 74 20 61  6c 6c 20 72 65 61 6c 6c  |ays it all reall|
00003fb0  79 21 21 21 0d 12 8e 2b  f4 20 2a 2a 2a 2a 2a 2a  |y!!!...+. ******|
00003fc0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00003fd0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00003fe0  12 98 29 dd 20 f2 5f 43  72 65 61 74 65 4d 61 69  |..). ._CreateMai|
00003ff0  6e 57 69 6e 64 6f 77 4d  65 6e 75 28 58 25 2c 59  |nWindowMenu(X%,Y|
00004000  25 2c 49 63 6f 6e 25 29  0d 12 a2 30 20 20 20 ea  |%,Icon%)...0   .|
00004010  20 6d 25 2c 46 6c 61 67  73 25 2c 50 6f 69 6e 74  | m%,Flags%,Point|
00004020  65 72 25 2c 53 65 6c 25  2c 49 63 6f 6e 46 6c 61  |er%,Sel%,IconFla|
00004030  67 25 2c 49 74 65 6d 24  0d 12 ac 21 20 20 20 4d  |g%,Item$...!   M|
00004040  65 6e 75 41 63 74 69 76  65 25 20 3d 20 4d 61 69  |enuActive% = Mai|
00004050  6e 57 69 6e 4d 65 6e 75  25 0d 12 b6 1a 20 20 20  |nWinMenu%....   |
00004060  de 20 4d 61 69 6e 4d 65  6e 75 25 20 32 39 2b 37  |. MainMenu% 29+7|
00004070  2a 32 34 0d 12 c0 18 20  20 20 24 4d 61 69 6e 4d  |*24....   $MainM|
00004080  65 6e 75 25 3d 22 4d 61  69 6e 22 0d 12 ca 15 20  |enu%="Main".... |
00004090  20 20 4d 61 69 6e 4d 65  6e 75 25 3f 31 32 3d 37  |  MainMenu%?12=7|
000040a0  0d 12 d4 15 20 20 20 4d  61 69 6e 4d 65 6e 75 25  |....   MainMenu%|
000040b0  3f 31 33 3d 32 0d 12 de  15 20 20 20 4d 61 69 6e  |?13=2....   Main|
000040c0  4d 65 6e 75 25 3f 31 34  3d 37 0d 12 e8 15 20 20  |Menu%?14=7....  |
000040d0  20 4d 61 69 6e 4d 65 6e  75 25 3f 31 35 3d 30 0d  | MainMenu%?15=0.|
000040e0  12 f2 19 20 20 20 4d 61  69 6e 4d 65 6e 75 25 21  |...   MainMenu%!|
000040f0  31 36 3d 31 36 2a 31 36  0d 12 fc 16 20 20 20 4d  |16=16*16....   M|
00004100  61 69 6e 4d 65 6e 75 25  21 32 30 3d 34 30 0d 13  |ainMenu%!20=40..|
00004110  06 15 20 20 20 4d 61 69  6e 4d 65 6e 75 25 21 32  |..   MainMenu%!2|
00004120  34 3d 30 0d 13 10 16 20  20 20 6d 25 3d 4d 61 69  |4=0....   m%=Mai|
00004130  6e 4d 65 6e 75 25 2b 32  38 0d 13 1a 08 20 20 20  |nMenu%+28....   |
00004140  f5 0d 13 24 30 20 20 20  20 20 20 f3 20 46 6c 61  |...$0      . Fla|
00004150  67 73 25 2c 50 6f 69 6e  74 65 72 25 2c 53 65 6c  |gs%,Pointer%,Sel|
00004160  25 2c 49 63 6f 6e 46 6c  61 67 25 2c 49 74 65 6d  |%,IconFlag%,Item|
00004170  24 0d 13 2e 43 20 20 20  20 20 20 6d 25 21 30 3d  |$...C      m%!0=|
00004180  46 6c 61 67 73 25 20 20  20 20 20 20 20 20 20 20  |Flags%          |
00004190  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000041a0  20 20 20 20 20 20 20 3a  f4 20 4d 65 6e 75 20 46  |       :. Menu F|
000041b0  6c 61 67 73 0d 13 38 59  20 20 20 20 20 20 6d 25  |lags..8Y      m%|
000041c0  21 34 3d 50 6f 69 6e 74  65 72 25 20 20 20 20 20  |!4=Pointer%     |
000041d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000041e0  20 20 20 20 20 20 20 20  20 20 3a f4 20 50 6f 69  |          :. Poi|
000041f0  6e 74 65 72 20 74 6f 20  53 75 62 2d 4d 65 6e 75  |nter to Sub-Menu|
00004200  20 28 2d 31 20 49 66 20  4e 6f 6e 65 29 0d 13 42  | (-1 If None)..B|
00004210  46 20 20 20 20 20 20 6d  25 21 38 3d 49 63 6f 6e  |F      m%!8=Icon|
00004220  46 6c 61 67 25 20 84 20  28 53 65 6c 25 3c 3c 32  |Flag% . (Sel%<<2|
00004230  32 29 20 84 20 28 37 3c  3c 32 34 29 20 20 20 20  |2) . (7<<24)    |
00004240  20 3a f4 20 4d 65 6e 75  20 49 63 6f 6e 20 46 6c  | :. Menu Icon Fl|
00004250  61 67 73 0d 13 4c 52 20  20 20 20 20 20 24 28 6d  |ags..LR      $(m|
00004260  25 2b 31 32 29 3d 49 74  65 6d 24 20 20 20 20 20  |%+12)=Item$     |
00004270  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004280  20 20 20 20 20 20 20 20  20 3a f4 20 49 74 65 6d  |         :. Item|
00004290  20 4e 61 6d 65 20 28 31  32 20 42 79 74 65 73 20  | Name (12 Bytes |
000042a0  4d 61 78 2e 29 0d 13 56  12 20 20 20 20 20 20 6d  |Max.)..V.      m|
000042b0  25 3d 6d 25 2b 32 34 0d  13 60 13 20 20 20 fd 20  |%=m%+24..`.   . |
000042c0  46 6c 61 67 73 25 3d 26  38 30 0d 13 6a 08 20 20  |Flags%=&80..j.  |
000042d0  20 3a 0d 13 74 0b 20 20  20 f7 20 2b 30 0d 13 7e  | :..t.   . +0..~|
000042e0  25 20 20 20 dc 20 26 30  30 2c 49 6e 66 6f 25 2c  |%   . &00,Info%,|
000042f0  20 20 20 30 2c 25 31 30  30 30 31 2c 22 49 6e 66  |   0,%10001,"Inf|
00004300  6f 22 0d 13 88 2a 20 20  20 dc 20 26 30 30 2c 53  |o"...*   . &00,S|
00004310  61 76 65 25 2c 20 20 20  30 2c 25 31 30 30 30 31  |ave%,   0,%10001|
00004320  2c 22 53 61 76 65 20 64  61 74 61 22 0d 13 92 2c  |,"Save data"...,|
00004330  20 20 20 dc 20 26 30 30  2c 2d 31 2c 20 20 20 20  |   . &00,-1,    |
00004340  20 20 30 2c 25 31 30 30  30 31 2c 22 46 6f 72 6d  |  0,%10001,"Form|
00004350  61 74 20 74 65 78 74 22  0d 13 9c 28 20 20 20 dc  |at text"...(   .|
00004360  20 26 30 30 2c 4f 70 74  69 6f 6e 73 25 2c 30 2c  | &00,Options%,0,|
00004370  25 31 30 30 30 31 2c 22  4f 70 74 69 6f 6e 73 22  |%10001,"Options"|
00004380  0d 13 a6 29 20 20 20 dc  20 26 38 30 2c 2d 31 2c  |...)   . &80,-1,|
00004390  20 20 20 20 20 20 30 2c  25 31 30 30 30 31 2c 22  |      0,%10001,"|
000043a0  57 69 70 65 20 61 6c 6c  22 0d 13 b0 08 20 20 20  |Wipe all"....   |
000043b0  3a 0d 13 ba 2f 20 20 20  c8 99 20 22 57 69 6d 70  |:.../   .. "Wimp|
000043c0  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2c 4d 61  |_CreateMenu",,Ma|
000043d0  69 6e 4d 65 6e 75 25 2c  58 25 2d 36 34 2c 59 25  |inMenu%,X%-64,Y%|
000043e0  0d 13 c4 05 e1 0d 13 ce  05 3a 0d 13 d8 54 f4 20  |.........:...T. |
000043f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004430  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 13  |**************..|
00004440  e2 54 f4 20 43 6f 6e 74  72 6f 6c 20 43 6f 6d 65  |.T. Control Come|
00004450  73 20 54 6f 20 48 65 72  65 20 57 68 65 6e 20 54  |s To Here When T|
00004460  68 65 20 55 73 65 72 20  48 61 73 20 44 72 61 67  |he User Has Drag|
00004470  67 65 64 20 54 68 65 20  53 61 76 65 20 49 63 6f  |ged The Save Ico|
00004480  6e 20 41 6e 64 20 52 65  6c 65 61 73 65 64 20 49  |n And Released I|
00004490  74 2e 0d 13 ec 54 f4 20  2a 2a 2a 2a 2a 2a 2a 2a  |t....T. ********|
000044a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000044e0  2a 2a 2a 2a 2a 2a 0d 13  f6 1d dd 20 f2 5f 44 72  |******..... ._Dr|
000044f0  61 67 42 6f 78 45 6e 64  28 4c 65 61 66 4e 61 6d  |agBoxEnd(LeafNam|
00004500  65 24 29 0d 14 00 1a 20  20 20 50 6f 69 6e 74 65  |e$)....   Pointe|
00004510  72 25 3d a9 4c 65 61 66  4e 61 6d 65 24 0d 14 0a  |r%=.LeafName$...|
00004520  32 20 20 20 c8 95 20 50  6f 69 6e 74 65 72 25 3e  |2   .. Pointer%>|
00004530  30 20 80 20 c1 4c 65 61  66 4e 61 6d 65 24 2c 50  |0 . .LeafName$,P|
00004540  6f 69 6e 74 65 72 25 2c  31 29 3c 3e 22 2e 22 0d  |ointer%,1)<>".".|
00004550  14 14 15 20 20 20 20 20  20 50 6f 69 6e 74 65 72  |...      Pointer|
00004560  25 2d 3d 31 0d 14 1e 08  20 20 20 ce 0d 14 28 34  |%-=1....   ...(4|
00004570  20 20 20 e7 20 44 72 61  67 41 53 70 72 69 74 65  |   . DragASprite|
00004580  5f 41 63 74 69 76 65 25  20 8c 20 c8 99 20 22 44  |_Active% . .. "D|
00004590  72 61 67 41 53 70 72 69  74 65 5f 53 74 6f 70 22  |ragASprite_Stop"|
000045a0  0d 14 32 27 20 20 20 4c  65 61 66 4e 61 6d 65 24  |..2'   LeafName$|
000045b0  3d c1 4c 65 61 66 4e 61  6d 65 24 2c 50 6f 69 6e  |=.LeafName$,Poin|
000045c0  74 65 72 25 2b 31 29 0d  14 3c 27 20 20 20 c8 99  |ter%+1)..<'   ..|
000045d0  20 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  | "Wimp_GetPointe|
000045e0  72 49 6e 66 6f 22 2c 2c  42 6c 6f 63 6b 25 0d 14  |rInfo",,Block%..|
000045f0  46 1e 20 20 20 53 65 6e  64 65 72 57 69 6e 64 6f  |F.   SenderWindo|
00004600  77 25 3d 42 6c 6f 63 6b  25 21 31 32 0d 14 50 1c  |w%=Block%!12..P.|
00004610  20 20 20 53 65 6e 64 65  72 49 63 6f 6e 25 3d 42  |   SenderIcon%=B|
00004620  6c 6f 63 6b 25 21 31 36  0d 14 5a 1e 20 20 20 42  |lock%!16..Z.   B|
00004630  6c 6f 63 6b 25 21 32 30  3d 53 65 6e 64 65 72 57  |lock%!20=SenderW|
00004640  69 6e 64 6f 77 25 0d 14  64 1c 20 20 20 42 6c 6f  |indow%..d.   Blo|
00004650  63 6b 25 21 32 34 3d 53  65 6e 64 65 72 49 63 6f  |ck%!24=SenderIco|
00004660  6e 25 0d 14 6e 19 20 20  20 42 6c 6f 63 6b 25 21  |n%..n.   Block%!|
00004670  32 38 3d 42 6c 6f 63 6b  25 21 30 0d 14 78 19 20  |28=Block%!0..x. |
00004680  20 20 42 6c 6f 63 6b 25  21 33 32 3d 42 6c 6f 63  |  Block%!32=Bloc|
00004690  6b 25 21 34 0d 14 82 1d  20 20 20 42 6c 6f 63 6b  |k%!4....   Block|
000046a0  25 21 30 3d 34 34 2b a9  4c 65 61 66 4e 61 6d 65  |%!0=44+.LeafName|
000046b0  24 0d 14 8c 21 20 20 20  42 6c 6f 63 6b 25 21 30  |$...!   Block%!0|
000046c0  2b 3d 34 2d 28 42 6c 6f  63 6b 25 21 30 20 83 20  |+=4-(Block%!0 . |
000046d0  34 29 0d 14 96 11 20 20  20 42 6c 6f 63 6b 25 21  |4)....   Block%!|
000046e0  34 3d 30 0d 14 a0 11 20  20 20 42 6c 6f 63 6b 25  |4=0....   Block%|
000046f0  21 38 3d 30 0d 14 aa 12  20 20 20 42 6c 6f 63 6b  |!8=0....   Block|
00004700  25 21 31 32 3d 30 0d 14  b4 27 20 20 20 42 6c 6f  |%!12=0...'   Blo|
00004710  63 6b 25 21 31 36 3d 31  20 3a 20 f4 20 4d 65 73  |ck%!16=1 : . Mes|
00004720  73 61 67 65 5f 44 61 74  61 53 61 76 65 0d 14 be  |sage_DataSave...|
00004730  2e 20 20 20 42 6c 6f 63  6b 25 21 33 36 3d 30 20  |.   Block%!36=0 |
00004740  3a 20 f4 20 4c 65 6e 67  74 68 20 6f 66 20 70 72  |: . Length of pr|
00004750  6f 70 6f 73 65 64 20 73  61 76 65 0d 14 c8 15 20  |oposed save.... |
00004760  20 20 42 6c 6f 63 6b 25  21 34 30 3d 26 42 30 46  |  Block%!40=&B0F|
00004770  0d 14 d2 20 20 20 20 24  28 42 6c 6f 63 6b 25 2b  |...    $(Block%+|
00004780  34 34 29 3d 4c 65 61 66  4e 61 6d 65 24 2b bd 30  |44)=LeafName$+.0|
00004790  0d 14 dc 78 20 20 20 e7  20 ac 20 28 28 53 65 6e  |...x   . . ((Sen|
000047a0  64 65 72 57 69 6e 64 6f  77 25 3d 53 61 76 65 25  |derWindow%=Save%|
000047b0  29 20 84 20 28 53 65 6e  64 65 72 57 69 6e 64 6f  |) . (SenderWindo|
000047c0  77 25 3d 4d 61 69 6e 25  29 20 84 20 28 53 65 6e  |w%=Main%) . (Sen|
000047d0  64 65 72 57 69 6e 64 6f  77 25 3d 49 63 6f 6e 42  |derWindow%=IconB|
000047e0  61 72 25 20 80 20 53 65  6e 64 65 72 49 63 6f 6e  |ar% . SenderIcon|
000047f0  25 3d 49 63 6f 6e 42 61  72 49 63 6f 6e 48 61 6e  |%=IconBarIconHan|
00004800  64 6c 65 25 29 29 20 8c  0d 14 e6 43 20 20 20 20  |dle%)) ....C    |
00004810  20 20 c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |  .. "Wimp_SendM|
00004820  65 73 73 61 67 65 22 2c  31 37 2c 42 6c 6f 63 6b  |essage",17,Block|
00004830  25 2c 53 65 6e 64 65 72  57 69 6e 64 6f 77 25 2c  |%,SenderWindow%,|
00004840  53 65 6e 64 65 72 49 63  6f 6e 25 0d 14 f0 08 20  |SenderIcon%.... |
00004850  20 20 cd 0d 14 fa 05 e1  0d 15 04 05 3a 0d 15 0e  |  ..........:...|
00004860  3c f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |<. *************|
00004870  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004890  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 15 18 3b f4 20 41  |*********...;. A|
000048a0  20 44 61 74 61 20 53 61  76 65 20 41 63 6b 6e 6f  | Data Save Ackno|
000048b0  77 6c 65 67 65 6d 65 6e  74 20 4d 65 73 73 61 67  |wlegement Messag|
000048c0  65 20 48 61 73 20 42 65  65 6e 20 52 65 63 65 69  |e Has Been Recei|
000048d0  76 65 64 21 0d 15 22 3c  f4 20 2a 2a 2a 2a 2a 2a  |ved!.."<. ******|
000048e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004910  0d 15 2c 21 dd 20 f2 5f  48 61 6e 64 6c 65 4d 65  |..,!. ._HandleMe|
00004920  73 73 61 67 65 5f 44 61  74 61 53 61 76 65 41 63  |ssage_DataSaveAc|
00004930  6b 0d 15 36 1b 20 20 20  ea 20 50 61 74 68 4e 61  |k..6.   . PathNa|
00004940  6d 65 24 2c 50 6f 69 6e  74 65 72 25 0d 15 40 19  |me$,Pointer%..@.|
00004950  20 20 20 50 6f 69 6e 74  65 72 25 3d 42 6c 6f 63  |   Pointer%=Bloc|
00004960  6b 25 2b 34 34 0d 15 4a  08 20 20 20 f5 0d 15 54  |k%+44..J.   ...T|
00004970  1f 20 20 20 20 20 20 50  61 74 68 4e 61 6d 65 24  |.      PathName$|
00004980  2b 3d bd 3f 50 6f 69 6e  74 65 72 25 0d 15 5e 15  |+=.?Pointer%..^.|
00004990  20 20 20 20 20 20 50 6f  69 6e 74 65 72 25 2b 3d  |      Pointer%+=|
000049a0  31 0d 15 68 14 20 20 20  fd 20 3f 50 6f 69 6e 74  |1..h.   . ?Point|
000049b0  65 72 25 3d 30 0d 15 72  1a 20 20 20 f2 5f 53 61  |er%=0..r.   ._Sa|
000049c0  76 65 54 6f 28 50 61 74  68 4e 61 6d 65 24 29 0d  |veTo(PathName$).|
000049d0  15 7c 1f 20 20 20 42 6c  6f 63 6b 25 21 30 3d 34  |.|.   Block%!0=4|
000049e0  30 2b a9 50 61 74 68 4e  61 6d 65 24 2b 34 0d 15  |0+.PathName$+4..|
000049f0  86 21 20 20 20 42 6c 6f  63 6b 25 21 30 2b 3d 34  |.!   Block%!0+=4|
00004a00  2d 28 42 6c 6f 63 6b 25  21 30 20 83 20 34 29 0d  |-(Block%!0 . 4).|
00004a10  15 90 27 20 20 20 42 6c  6f 63 6b 25 21 31 36 3d  |..'   Block%!16=|
00004a20  33 20 3a 20 f4 20 4d 65  73 73 61 67 65 5f 44 61  |3 : . Message_Da|
00004a30  74 61 4c 6f 61 64 0d 15  9a 12 20 20 20 42 6c 6f  |taLoad....   Blo|
00004a40  63 6b 25 21 33 36 3d 30  0d 15 a4 15 20 20 20 42  |ck%!36=0....   B|
00004a50  6c 6f 63 6b 25 21 34 30  3d 26 42 30 46 0d 15 ae  |lock%!40=&B0F...|
00004a60  22 20 20 20 24 28 42 6c  6f 63 6b 25 2b 34 34 29  |"   $(Block%+44)|
00004a70  3d 50 61 74 68 4e 61 6d  65 24 2b bd 28 30 29 0d  |=PathName$+.(0).|
00004a80  15 b8 40 20 20 20 c8 99  20 22 57 69 6d 70 5f 53  |..@   .. "Wimp_S|
00004a90  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 38 2c 42  |endMessage",18,B|
00004aa0  6c 6f 63 6b 25 2c 53 65  6e 64 65 72 57 69 6e 64  |lock%,SenderWind|
00004ab0  6f 77 25 2c 53 65 6e 64  65 72 49 63 6f 6e 25 0d  |ow%,SenderIcon%.|
00004ac0  15 c2 05 e1 0d 15 cc 05  3a 0d 15 d6 36 f4 20 2a  |........:...6. *|
00004ad0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004af0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00004b00  15 e0 36 f4 20 41 20 46  69 6c 65 20 68 61 73 20  |..6. A File has |
00004b10  62 65 65 6e 20 64 6f 75  62 6c 65 20 63 6c 69 63  |been double clic|
00004b20  6b 65 64 20 6f 6e 2c 20  64 6f 20 49 20 77 61 6e  |ked on, do I wan|
00004b30  74 20 69 74 3f 0d 15 ea  36 f4 20 2a 2a 2a 2a 2a  |t it?...6. *****|
00004b40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004b60  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 15 f4 10 dd  |***********.....|
00004b70  20 f2 5f 44 61 74 61 4f  70 65 6e 0d 15 fe 0b ea  | ._DataOpen.....|
00004b80  20 46 69 6c 65 24 0d 16  08 19 20 20 20 e7 20 42  | File$....   . B|
00004b90  6c 6f 63 6b 25 21 34 30  3d 26 42 30 46 20 8c 0d  |lock%!40=&B0F ..|
00004ba0  16 12 27 20 20 20 20 20  20 46 69 6c 65 24 3d a4  |..'      File$=.|
00004bb0  5f 52 65 61 64 53 74 72  69 6e 67 28 42 6c 6f 63  |_ReadString(Bloc|
00004bc0  6b 25 2b 34 34 29 0d 16  1c 1c 20 20 20 20 20 20  |k%+44)....      |
00004bd0  42 6c 6f 63 6b 25 21 31  32 3d 42 6c 6f 63 6b 25  |Block%!12=Block%|
00004be0  21 38 0d 16 26 15 20 20  20 20 20 20 42 6c 6f 63  |!8..&.      Bloc|
00004bf0  6b 25 21 31 36 3d 34 0d  16 30 32 20 20 20 20 20  |k%!16=4..02     |
00004c00  20 c8 99 20 22 57 69 6d  70 5f 53 65 6e 64 4d 65  | .. "Wimp_SendMe|
00004c10  73 73 61 67 65 22 2c 31  37 2c 42 6c 6f 63 6b 25  |ssage",17,Block%|
00004c20  2c 42 6c 6f 63 6b 25 21  34 0d 16 3a 24 20 20 20  |,Block%!4..:$   |
00004c30  20 20 20 f2 5f 44 6f 41  63 74 75 61 6c 4c 6f 61  |   ._DoActualLoa|
00004c40  64 54 68 69 6e 67 28 46  69 6c 65 24 29 0d 16 44  |dThing(File$)..D|
00004c50  08 20 20 20 cd 0d 16 4e  05 e1 0d 16 58 05 3a 0d  |.   ...N....X.:.|
00004c60  16 62 3b f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.b;. ***********|
00004c70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004c90  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 16 6c 3b f4 20  |**********..l;. |
00004ca0  52 65 61 64 20 61 20 73  74 72 69 6e 67 20 66 72  |Read a string fr|
00004cb0  6f 6d 20 61 20 70 6f 69  6e 74 65 72 2c 20 75 73  |om a pointer, us|
00004cc0  69 6e 67 20 61 20 7a 65  72 6f 2d 74 65 72 6d 69  |ing a zero-termi|
00004cd0  6e 61 74 6f 72 0d 16 76  3b f4 20 2a 2a 2a 2a 2a  |nator..v;. *****|
00004ce0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004d10  0d 16 80 1c dd 20 a4 5f  52 65 61 64 53 74 72 69  |..... ._ReadStri|
00004d20  6e 67 28 50 6f 69 6e 74  65 72 25 29 0d 16 8a 10  |ng(Pointer%)....|
00004d30  20 20 20 ea 20 53 74 72  69 6e 67 24 0d 16 94 16  |   . String$....|
00004d40  20 20 20 c8 95 20 3f 50  6f 69 6e 74 65 72 25 3c  |   .. ?Pointer%<|
00004d50  3e 30 0d 16 9e 1d 20 20  20 20 20 20 53 74 72 69  |>0....      Stri|
00004d60  6e 67 24 2b 3d bd 3f 50  6f 69 6e 74 65 72 25 0d  |ng$+=.?Pointer%.|
00004d70  16 a8 15 20 20 20 20 20  20 50 6f 69 6e 74 65 72  |...      Pointer|
00004d80  25 2b 3d 31 0d 16 b2 08  20 20 20 ce 0d 16 bc 0c  |%+=1....   .....|
00004d90  3d 53 74 72 69 6e 67 24  0d 16 c6 05 3a 0d 16 d0  |=String$....:...|
00004da0  4e f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |N. *************|
00004db0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004de0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 16 da 4e f4  |***********...N.|
00004df0  20 54 68 69 73 20 42 69  74 20 44 6f 65 73 20 54  | This Bit Does T|
00004e00  68 65 20 41 63 74 75 61  6c 20 53 61 76 69 6e 67  |he Actual Saving|
00004e10  20 4f 66 20 54 68 65 20  44 61 74 61 20 57 68 65  | Of The Data Whe|
00004e20  6e 20 52 65 71 75 65 73  74 65 64 20 42 79 20 54  |n Requested By T|
00004e30  68 65 20 46 69 6c 65 72  2e 0d 16 e4 4e f4 20 2a  |he Filer....N. *|
00004e40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00004e80  2a 2a 2a 2a 2a 2a 2a 0d  16 ee 19 dd 20 f2 5f 53  |*******..... ._S|
00004e90  61 76 65 54 6f 28 50 61  74 68 4e 61 6d 65 24 29  |aveTo(PathName$)|
00004ea0  0d 16 f8 1a 20 20 20 50  6f 69 6e 74 65 72 25 3d  |....   Pointer%=|
00004eb0  a9 50 61 74 68 4e 61 6d  65 24 0d 17 02 32 20 20  |.PathName$...2  |
00004ec0  20 c8 95 20 50 6f 69 6e  74 65 72 25 3e 31 20 80  | .. Pointer%>1 .|
00004ed0  20 c1 50 61 74 68 4e 61  6d 65 24 2c 50 6f 69 6e  | .PathName$,Poin|
00004ee0  74 65 72 25 2c 31 29 3c  3e 22 2e 22 0d 17 0c 15  |ter%,1)<>"."....|
00004ef0  20 20 20 20 20 20 50 6f  69 6e 74 65 72 25 2d 3d  |      Pointer%-=|
00004f00  31 0d 17 16 08 20 20 20  ce 0d 17 20 4c 20 20 20  |1....   ... L   |
00004f10  e7 20 50 6f 69 6e 74 65  72 25 3d 31 20 8c 20 85  |. Pointer%=1 . .|
00004f20  20 32 30 30 31 2c 22 54  6f 20 73 61 76 65 2c 20  | 2001,"To save, |
00004f30  64 72 61 67 20 74 68 65  20 69 63 6f 6e 20 74 6f  |drag the icon to|
00004f40  20 61 20 64 69 72 65 63  74 6f 72 79 20 76 69 65  | a directory vie|
00004f50  77 65 72 2e 22 0d 17 2a  1f 20 20 20 c8 99 20 22  |wer."..*.   .. "|
00004f60  57 69 6d 70 5f 43 72 65  61 74 65 4d 65 6e 75 22  |Wimp_CreateMenu"|
00004f70  2c 2c 2d 31 0d 17 34 1d  20 20 20 53 61 76 65 46  |,,-1..4.   SaveF|
00004f80  69 6c 65 25 3d ae 28 50  61 74 68 4e 61 6d 65 24  |ile%=.(PathName$|
00004f90  29 0d 17 3e 3b 20 20 20  f4 20 4f 70 65 6e 20 4f  |)..>;   . Open O|
00004fa0  75 74 20 41 20 46 69 6c  65 20 41 6e 64 20 50 72  |ut A File And Pr|
00004fb0  69 6e 74 20 4f 75 74 20  41 6c 6c 20 74 68 65 20  |int Out All the |
00004fc0  69 6e 66 6f 72 6d 61 74  69 6f 6e 21 0d 17 48 15  |information!..H.|
00004fd0  20 20 20 e3 20 4c 6f 6f  70 25 3d 30 20 b8 20 33  |   . Loop%=0 . 3|
00004fe0  37 0d 17 52 34 20 20 20  20 20 20 f1 20 23 53 61  |7..R4      . #Sa|
00004ff0  76 65 46 69 6c 65 25 2c  a4 5f 52 65 61 64 49 63  |veFile%,._ReadIc|
00005000  6f 6e 54 65 78 74 28 4d  61 69 6e 25 2c 4c 6f 6f  |onText(Main%,Loo|
00005010  70 25 2c a3 29 0d 17 5c  08 20 20 20 ed 0d 17 66  |p%,.)..\.   ...f|
00005020  37 20 20 20 f1 20 23 53  61 76 65 46 69 6c 65 25  |7   . #SaveFile%|
00005030  2c a4 5f 52 65 61 64 49  63 6f 6e 54 65 78 74 28  |,._ReadIconText(|
00005040  4d 61 69 6e 25 2c 54 61  70 65 4e 75 6d 62 65 72  |Main%,TapeNumber|
00005050  25 2c a3 29 0d 17 70 22  20 20 20 f4 20 54 68 65  |%,.)..p"   . The|
00005060  6e 20 43 6c 6f 73 65 20  74 68 65 20 66 69 6c 65  |n Close the file|
00005070  20 61 67 61 69 6e 0d 17  7a 13 20 20 20 d9 20 23  | again..z.   . #|
00005080  53 61 76 65 46 69 6c 65  25 0d 17 84 24 20 20 20  |SaveFile%...$   |
00005090  ff 20 22 53 65 74 54 79  70 65 20 22 2b 50 61 74  |. "SetType "+Pat|
000050a0  68 4e 61 6d 65 24 2b 22  20 42 30 46 22 0d 17 8e  |hName$+" B0F"...|
000050b0  47 20 20 20 f4 20 4f 76  65 72 77 72 69 74 65 20  |G   . Overwrite |
000050c0  53 61 76 65 57 69 6e 64  6f 77 20 54 65 78 74 20  |SaveWindow Text |
000050d0  57 69 74 68 20 46 75 6c  6c 20 50 61 74 68 6e 61  |With Full Pathna|
000050e0  6d 65 20 46 6f 72 20 46  75 74 75 72 65 20 53 61  |me For Future Sa|
000050f0  76 65 73 21 0d 17 98 27  20 20 20 f2 5f 53 65 74  |ves!...'   ._Set|
00005100  49 63 6f 6e 54 65 78 74  28 34 2c 53 61 76 65 25  |IconText(4,Save%|
00005110  2c 50 61 74 68 4e 61 6d  65 24 29 0d 17 a2 05 e1  |,PathName$).....|
00005120  0d 17 ac 05 3a 0d 17 b6  3f f4 20 2a 2a 2a 2a 2a  |....:...?. *****|
00005130  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005160  2a 2a 2a 2a 0d 17 c0 3f  f4 20 54 68 69 73 20 48  |****...?. This H|
00005170  61 6e 64 6c 65 73 20 54  68 65 20 44 72 61 67 67  |andles The Dragg|
00005180  69 6e 67 20 4f 66 20 54  48 65 20 4f 75 74 6c 69  |ing Of THe Outli|
00005190  6e 65 20 4f 66 20 54 68  65 20 53 61 76 65 20 42  |ne Of The Save B|
000051a0  6f 78 2e 0d 17 ca 3f f4  20 2a 2a 2a 2a 2a 2a 2a  |ox....?. *******|
000051b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000051e0  2a 2a 0d 17 d4 10 dd 20  f2 5f 44 72 61 67 53 61  |**..... ._DragSa|
000051f0  76 65 0d 17 de 15 20 20  20 ea 20 66 6c 61 67 73  |ve....   . flags|
00005200  25 2c 62 79 74 65 25 0d  17 e8 1e 20 20 20 44 72  |%,byte%....   Dr|
00005210  61 67 41 53 70 72 69 74  65 5f 41 63 74 69 76 65  |agASprite_Active|
00005220  25 20 3d 20 a3 0d 17 f2  40 20 20 20 c8 99 20 22  |% = ....@   .. "|
00005230  58 4f 53 5f 53 57 49 4e  75 6d 62 65 72 46 72 6f  |XOS_SWINumberFro|
00005240  6d 53 74 72 69 6e 67 22  2c 2c 22 44 72 61 67 41  |mString",,"DragA|
00005250  53 70 72 69 74 65 5f 26  30 30 22 20 b8 20 3b 66  |Sprite_&00" . ;f|
00005260  6c 61 67 73 25 0d 17 fc  24 20 20 20 c8 99 20 22  |lags%...$   .. "|
00005270  4f 53 5f 42 79 74 65 22  2c 31 36 31 2c 32 38 20  |OS_Byte",161,28 |
00005280  b8 20 2c 2c 62 79 74 65  25 0d 18 06 41 20 20 20  |. ,,byte%...A   |
00005290  e7 20 28 66 6c 61 67 73  25 20 80 20 31 29 3d 30  |. (flags% . 1)=0|
000052a0  20 80 20 28 62 79 74 65  25 20 80 20 32 29 3d 32  | . (byte% . 2)=2|
000052b0  20 8c 20 44 72 61 67 41  53 70 72 69 74 65 5f 41  | . DragASprite_A|
000052c0  63 74 69 76 65 25 20 3d  20 b9 0d 18 10 14 20 20  |ctive% = .....  |
000052d0  20 21 42 6c 6f 63 6b 25  3d 53 61 76 65 25 0d 18  | !Block%=Save%..|
000052e0  1a 27 20 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |.'   .. "Wimp_Ge|
000052f0  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 42  |tWindowState",,B|
00005300  6c 6f 63 6b 25 0d 18 24  22 20 20 20 4f 66 66 73  |lock%..$"   Offs|
00005310  65 74 58 25 3d 42 6c 6f  63 6b 25 21 34 2d 42 6c  |etX%=Block%!4-Bl|
00005320  6f 63 6b 25 21 32 30 0d  18 2e 23 20 20 20 4f 66  |ock%!20...#   Of|
00005330  66 73 65 74 59 25 3d 42  6c 6f 63 6b 25 21 31 36  |fsetY%=Block%!16|
00005340  2d 42 6c 6f 63 6b 25 21  32 34 0d 18 38 15 20 20  |-Block%!24..8.  |
00005350  20 42 6c 6f 63 6b 25 21  30 3d 53 61 76 65 25 0d  | Block%!0=Save%.|
00005360  18 42 11 20 20 20 42 6c  6f 63 6b 25 21 34 3d 30  |.B.   Block%!4=0|
00005370  0d 18 4c 25 20 20 20 c8  99 20 22 57 69 6d 70 5f  |..L%   .. "Wimp_|
00005380  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 42  |GetIconState",,B|
00005390  6c 6f 63 6b 25 0d 18 56  14 20 20 20 21 42 6c 6f  |lock%..V.   !Blo|
000053a0  63 6b 25 3d 53 61 76 65  25 0d 18 60 11 20 20 20  |ck%=Save%..`.   |
000053b0  42 6c 6f 63 6b 25 21 34  3d 35 0d 18 6a 21 20 20  |Block%!4=5..j!  |
000053c0  20 42 6c 6f 63 6b 25 21  38 3d 42 6c 6f 63 6b 25  | Block%!8=Block%|
000053d0  21 38 2b 4f 66 66 73 65  74 58 25 0d 18 74 23 20  |!8+OffsetX%..t# |
000053e0  20 20 42 6c 6f 63 6b 25  21 31 32 3d 42 6c 6f 63  |  Block%!12=Bloc|
000053f0  6b 25 21 31 32 2b 4f 66  66 73 65 74 59 25 0d 18  |k%!12+OffsetY%..|
00005400  7e 23 20 20 20 42 6c 6f  63 6b 25 21 31 36 3d 42  |~#   Block%!16=B|
00005410  6c 6f 63 6b 25 21 31 36  2b 4f 66 66 73 65 74 58  |lock%!16+OffsetX|
00005420  25 0d 18 88 23 20 20 20  42 6c 6f 63 6b 25 21 32  |%...#   Block%!2|
00005430  30 3d 42 6c 6f 63 6b 25  21 32 30 2b 4f 66 66 73  |0=Block%!20+Offs|
00005440  65 74 59 25 0d 18 92 12  20 20 20 42 6c 6f 63 6b  |etY%....   Block|
00005450  25 21 32 34 3d 30 0d 18  9c 12 20 20 20 42 6c 6f  |%!24=0....   Blo|
00005460  63 6b 25 21 32 38 3d 30  0d 18 a6 1a 20 20 20 42  |ck%!28=0....   B|
00005470  6c 6f 63 6b 25 21 33 32  3d 26 37 46 46 46 46 46  |lock%!32=&7FFFFF|
00005480  46 46 0d 18 b0 1a 20 20  20 42 6c 6f 63 6b 25 21  |FF....   Block%!|
00005490  33 36 3d 26 37 46 46 46  46 46 46 46 0d 18 ba 1e  |36=&7FFFFFFF....|
000054a0  20 20 20 e7 20 44 72 61  67 41 53 70 72 69 74 65  |   . DragASprite|
000054b0  5f 41 63 74 69 76 65 25  20 8c 0d 18 c4 44 20 20  |_Active% ....D  |
000054c0  20 20 20 20 c8 99 20 22  44 72 61 67 41 53 70 72  |    .. "DragASpr|
000054d0  69 74 65 5f 53 74 61 72  74 22 2c 31 39 37 2c 31  |ite_Start",197,1|
000054e0  2c 22 66 69 6c 65 5f 62  30 66 22 2c 42 6c 6f 63  |,"file_b0f",Bloc|
000054f0  6b 25 2b 38 2c 42 6c 6f  63 6b 25 2b 32 34 0d 18  |k%+8,Block%+24..|
00005500  ce 08 20 20 20 cc 0d 18  d8 23 20 20 20 20 20 20  |..   ....#      |
00005510  c8 99 20 22 57 69 6d 70  5f 44 72 61 67 42 6f 78  |.. "Wimp_DragBox|
00005520  22 2c 2c 42 6c 6f 63 6b  25 0d 18 e2 08 20 20 20  |",,Block%....   |
00005530  cd 0d 18 ec 05 e1 0d 18  f6 05 3a 0d 19 00 40 f4  |..........:...@.|
00005540  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ***************|
00005550  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005570  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 19 0a 40 f4  |***********...@.|
00005580  20 57 68 65 6e 20 41 20  46 69 6c 65 20 49 73 20  | When A File Is |
00005590  44 72 6f 70 70 65 64 20  4f 6e 74 6f 20 4d 79 20  |Dropped Onto My |
000055a0  49 63 6f 6e 20 42 61 72  20 49 63 6f 6e 2c 20 49  |Icon Bar Icon, I|
000055b0  20 43 6f 6d 65 20 48 65  72 65 21 0d 19 14 40 f4  | Come Here!...@.|
000055c0  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ***************|
000055d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000055f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 19 1e 17 dd  |***********.....|
00005600  20 f2 5f 46 69 6c 65 44  72 6f 70 70 65 64 4f 6e  | ._FileDroppedOn|
00005610  4d 65 0d 19 28 1a 20 20  20 e7 20 42 6c 6f 63 6b  |Me..(.   . Block|
00005620  25 21 34 30 20 3d 26 42  30 46 20 8c 0d 19 32 20  |%!40 =&B0F ...2 |
00005630  20 20 20 20 20 20 53 61  76 65 4e 61 6d 65 24 3d  |      SaveName$=|
00005640  24 28 42 6c 6f 63 6b 25  2b 34 34 29 0d 19 3c 1c  |$(Block%+44)..<.|
00005650  20 20 20 20 20 20 42 6c  6f 63 6b 25 21 31 32 3d  |      Block%!12=|
00005660  42 6c 6f 63 6b 25 21 38  0d 19 46 15 20 20 20 20  |Block%!8..F.    |
00005670  20 20 42 6c 6f 63 6b 25  21 31 36 3d 34 0d 19 50  |  Block%!16=4..P|
00005680  32 20 20 20 20 20 20 c8  99 20 22 57 69 6d 70 5f  |2      .. "Wimp_|
00005690  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 31 37 2c  |SendMessage",17,|
000056a0  42 6c 6f 63 6b 25 2c 42  6c 6f 63 6b 25 21 34 0d  |Block%,Block%!4.|
000056b0  19 5a 28 20 20 20 20 20  20 f2 5f 44 6f 41 63 74  |.Z(      ._DoAct|
000056c0  75 61 6c 4c 6f 61 64 54  68 69 6e 67 28 53 61 76  |ualLoadThing(Sav|
000056d0  65 4e 61 6d 65 24 29 0d  19 64 08 20 20 20 cd 0d  |eName$)..d.   ..|
000056e0  19 6e 05 e1 0d 19 78 05  3a 0d 19 82 55 f4 20 2a  |.n....x.:...U. *|
000056f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005730  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 19  |**************..|
00005740  8c 55 f4 20 43 6f 6e 74  72 6f 6c 20 43 6f 6d 65  |.U. Control Come|
00005750  73 20 48 65 72 65 20 57  68 65 6e 20 41 20 56 61  |s Here When A Va|
00005760  6c 69 64 20 46 69 6c 65  20 54 79 70 65 20 48 61  |lid File Type Ha|
00005770  73 20 42 65 65 6e 20 44  72 6f 70 70 65 64 20 4f  |s Been Dropped O|
00005780  6e 74 6f 20 4d 79 20 41  70 70 6c 69 63 61 74 69  |nto My Applicati|
00005790  6f 6e 2e 0d 19 96 55 f4  20 2a 2a 2a 2a 2a 2a 2a  |on....U. *******|
000057a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000057e0  2a 2a 2a 2a 2a 2a 2a 2a  0d 19 a0 1b dd 20 f2 5f  |********..... ._|
000057f0  4c 6f 61 64 44 61 74 61  28 46 69 6c 65 4e 61 6d  |LoadData(FileNam|
00005800  65 24 29 0d 19 aa 1d 20  20 20 4c 6f 61 64 46 69  |e$)....   LoadFi|
00005810  6c 65 25 3d 8e 28 46 69  6c 65 4e 61 6d 65 24 29  |le%=.(FileName$)|
00005820  0d 19 b4 19 20 20 20 e3  20 4c 6f 61 64 4c 6f 6f  |....   . LoadLoo|
00005830  70 25 3d 30 20 b8 20 33  37 0d 19 be 20 20 20 20  |p%=0 . 37...    |
00005840  20 20 20 e8 23 20 4c 6f  61 64 46 69 6c 65 25 2c  |   .# LoadFile%,|
00005850  54 65 6d 70 54 65 78 74  24 0d 19 c8 32 20 20 20  |TempText$...2   |
00005860  20 20 20 f2 5f 53 65 74  49 63 6f 6e 54 65 78 74  |   ._SetIconText|
00005870  28 4c 6f 61 64 4c 6f 6f  70 25 2c 4d 61 69 6e 25  |(LoadLoop%,Main%|
00005880  2c 54 65 6d 70 54 65 78  74 24 29 0d 19 d2 23 20  |,TempText$)...# |
00005890  20 20 20 20 20 f2 5f 52  65 64 72 61 77 28 4d 61  |     ._Redraw(Ma|
000058a0  69 6e 25 2c 4c 6f 61 64  4c 6f 6f 70 25 29 0d 19  |in%,LoadLoop%)..|
000058b0  dc 08 20 20 20 ed 0d 19  e6 1d 20 20 20 e8 23 20  |..   .....   .# |
000058c0  4c 6f 61 64 46 69 6c 65  25 2c 54 65 6d 70 54 65  |LoadFile%,TempTe|
000058d0  78 74 24 0d 19 f0 31 20  20 20 f2 5f 53 65 74 49  |xt$...1   ._SetI|
000058e0  63 6f 6e 54 65 78 74 28  54 61 70 65 4e 75 6d 62  |conText(TapeNumb|
000058f0  65 72 25 2c 4d 61 69 6e  25 2c 54 65 6d 70 54 65  |er%,Main%,TempTe|
00005900  78 74 24 29 0d 19 fa 22  20 20 20 f2 5f 52 65 64  |xt$)..."   ._Red|
00005910  72 61 77 28 4d 61 69 6e  25 2c 54 61 70 65 4e 75  |raw(Main%,TapeNu|
00005920  6d 62 65 72 25 29 0d 1a  04 13 20 20 20 d9 20 23  |mber%)....   . #|
00005930  4c 6f 61 64 46 69 6c 65  25 0d 1a 0e 05 e1 0d 1a  |LoadFile%.......|
00005940  18 05 3a 0d 1a 22 4b f4  20 2a 2a 2a 2a 2a 2a 2a  |..:.."K. *******|
00005950  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005980  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 1a  |**************..|
00005990  2c 4a f4 20 52 65 61 64  73 20 53 74 61 74 65 20  |,J. Reads State |
000059a0  4f 66 20 49 63 6f 6e 73  20 69 6e 20 57 69 6e 64  |Of Icons in Wind|
000059b0  6f 77 20 53 74 61 74 65  64 20 61 6e 64 20 52 65  |ow Stated and Re|
000059c0  74 75 72 6e 73 20 54 68  65 20 46 69 72 73 74 20  |turns The First |
000059d0  53 65 6c 65 63 74 65 64  0d 1a 36 46 f4 20 49 63  |Selected..6F. Ic|
000059e0  6f 6e 20 49 6e 20 54 68  65 20 47 69 76 65 20 45  |on In The Give E|
000059f0  78 63 6c 75 73 69 76 65  20 53 65 6c 65 63 74 69  |xclusive Selecti|
00005a00  6f 6e 20 47 72 6f 75 70  2e 20 28 2d 31 20 3d 20  |on Group. (-1 = |
00005a10  4e 6f 6e 65 20 53 65 6c  65 63 74 65 64 29 0d 1a  |None Selected)..|
00005a20  40 4a f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |@J. ************|
00005a30  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005a60  2a 2a 2a 2a 2a 2a 2a 2a  0d 1a 4a 2b dd 20 a4 5f  |********..J+. ._|
00005a70  52 65 61 64 45 53 47 53  65 6c 65 63 74 65 64 28  |ReadESGSelected(|
00005a80  57 69 6e 64 6f 77 48 61  6e 64 6c 65 25 2c 45 73  |WindowHandle%,Es|
00005a90  67 25 29 0d 1a 54 17 20  20 20 ea 20 4d 61 73 6b  |g%)..T.   . Mask|
00005aa0  25 2c 50 61 74 74 65 72  6e 25 0d 1a 5e 41 20 20  |%,Pattern%..^A  |
00005ab0  20 4d 61 73 6b 25 20 20  20 3d 20 28 31 3c 3c 32  | Mask%   = (1<<2|
00005ac0  31 29 2b 28 33 31 3c 3c  31 36 29 20 20 20 20 20  |1)+(31<<16)     |
00005ad0  20 20 3a 20 f4 20 42 69  74 20 32 31 20 61 6e 64  |  : . Bit 21 and|
00005ae0  20 42 69 74 73 20 31 36  2d 32 30 0d 1a 68 3e 20  | Bits 16-20..h> |
00005af0  20 20 50 61 74 74 65 72  6e 25 3d 20 28 31 3c 3c  |  Pattern%= (1<<|
00005b00  32 31 29 2b 28 45 73 67  25 3c 3c 31 36 29 20 20  |21)+(Esg%<<16)  |
00005b10  20 20 20 3a 20 f4 20 53  65 6c 65 63 74 65 64 20  |   : . Selected |
00005b20  61 6e 64 20 45 53 47 20  58 0d 1a 72 42 20 20 20  |and ESG X..rB   |
00005b30  c8 99 20 22 57 69 6d 70  5f 57 68 69 63 68 49 63  |.. "Wimp_WhichIc|
00005b40  6f 6e 22 2c 57 69 6e 64  6f 77 48 61 6e 64 6c 65  |on",WindowHandle|
00005b50  25 2c 42 6c 6f 63 6b 25  2b 32 30 30 2c 4d 61 73  |%,Block%+200,Mas|
00005b60  6b 25 2c 50 61 74 74 65  72 6e 25 0d 1a 7c 0f 3d  |k%,Pattern%..|.=|
00005b70  42 6c 6f 63 6b 25 21 32  30 30 0d 1a 86 05 3a 0d  |Block%!200....:.|
00005b80  1a 90 05 3a 0d 1a 9a 69  f4 20 2a 2a 2a 2a 2a 2a  |...:...i. ******|
00005b90  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005be0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 1a a4  |*************...|
00005bf0  67 f4 20 41 4c 54 48 4f  55 47 48 20 41 20 4c 4f  |g. ALTHOUGH A LO|
00005c00  54 20 4f 46 20 54 48 45  20 41 42 4f 56 45 20 43  |T OF THE ABOVE C|
00005c10  4f 44 45 20 49 53 20 53  54 49 4c 4c 20 56 45 52  |ODE IS STILL VER|
00005c20  59 20 53 50 45 43 49 46  49 43 20 54 4f 20 54 48  |Y SPECIFIC TO TH|
00005c30  49 53 20 50 52 4f 47 52  41 4d 2c 20 49 54 20 43  |IS PROGRAM, IT C|
00005c40  41 4e 20 42 45 20 45 41  53 49 4c 59 20 41 44 41  |AN BE EASILY ADA|
00005c50  50 54 45 44 0d 1a ae 55  f4 20 41 4c 4c 20 43 4f  |PTED...U. ALL CO|
00005c60  44 45 20 42 45 4c 4f 57  20 54 48 49 53 20 4c 49  |DE BELOW THIS LI|
00005c70  4e 45 20 49 53 20 55 4e  4c 49 4b 45 4c 59 20 54  |NE IS UNLIKELY T|
00005c80  4f 20 42 45 20 4f 46 20  4d 55 43 48 20 55 53 45  |O BE OF MUCH USE|
00005c90  20 54 4f 20 41 4e 59 20  4f 54 48 45 52 20 41 50  | TO ANY OTHER AP|
00005ca0  50 4c 49 43 41 54 49 4f  4e 0d 1a b8 69 f4 20 2a  |PLICATION...i. *|
00005cb0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005d10  2a 2a 0d 1a c2 05 3a 0d  1a cc 05 3a 0d 1a d6 33  |**....:....:...3|
00005d20  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
00005d30  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
00005d40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
00005d50  1a e0 33 f4 20 53 77 61  70 73 20 74 68 65 20 63  |..3. Swaps the c|
00005d60  61 73 65 20 6f 66 20 6f  66 20 74 68 65 20 73 70  |ase of of the sp|
00005d70  65 63 69 66 69 65 64 20  63 68 61 72 61 63 74 65  |ecified characte|
00005d80  72 2e 0d 1a ea 33 f4 20  2a 2a 2a 2a 2a 2a 2a 2a  |r....3. ********|
00005d90  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005db0  2a 2a 2a 2a 2a 0d 1a f4  26 dd 20 f2 5f 53 77 61  |*****...&. ._Swa|
00005dc0  70 43 61 73 65 28 57 69  6e 64 6f 77 25 2c 49 63  |pCase(Window%,Ic|
00005dd0  6f 6e 25 2c 49 6e 64 65  78 25 29 0d 1a fe 32 20  |on%,Index%)...2 |
00005de0  20 20 e7 20 49 6e 64 65  78 25 3c a9 28 a4 5f 52  |  . Index%<.(._R|
00005df0  65 61 64 49 63 6f 6e 54  65 78 74 28 4d 61 69 6e  |eadIconText(Main|
00005e00  25 2c 49 63 6f 6e 25 2c  a3 29 29 20 8c 0d 1b 08  |%,Icon%,.)) ....|
00005e10  31 20 20 20 20 20 20 49  63 6f 6e 54 65 78 74 24  |1      IconText$|
00005e20  3d a4 5f 52 65 61 64 49  63 6f 6e 54 65 78 74 28  |=._ReadIconText(|
00005e30  4d 61 69 6e 25 2c 49 63  6f 6e 25 2c a3 29 0d 1b  |Main%,Icon%,.)..|
00005e40  12 2c 20 20 20 20 20 20  43 25 3d 97 28 c1 49 63  |.,      C%=.(.Ic|
00005e50  6f 6e 54 65 78 74 24 2c  49 6e 64 65 78 25 2b 31  |onText$,Index%+1|
00005e60  2c 31 29 29 20 80 20 26  44 46 0d 1b 1c 1f 20 20  |,1)) . &DF....  |
00005e70  20 20 20 20 e7 20 43 25  3e 3d 26 34 31 20 80 20  |    . C%>=&41 . |
00005e80  43 25 3c 3d 26 35 41 20  8c 0d 1b 26 32 20 20 20  |C%<=&5A ...&2   |
00005e90  20 20 20 20 20 20 43 24  3d bd 28 97 28 c1 49 63  |      C$=.(.(.Ic|
00005ea0  6f 6e 54 65 78 74 24 2c  49 6e 64 65 78 25 2b 31  |onText$,Index%+1|
00005eb0  2c 31 29 29 20 82 20 26  32 30 29 0d 1b 30 26 20  |,1)) . &20)..0& |
00005ec0  20 20 20 20 20 20 20 20  c1 49 63 6f 6e 54 65 78  |        .IconTex|
00005ed0  74 24 2c 49 6e 64 65 78  25 2b 31 2c 31 29 3d 43  |t$,Index%+1,1)=C|
00005ee0  24 0d 1b 3a 33 20 20 20  20 20 20 20 20 20 f2 5f  |$..:3         ._|
00005ef0  53 65 74 49 63 6f 6e 54  65 78 74 28 49 63 6f 6e  |SetIconText(Icon|
00005f00  25 2c 57 69 6e 64 6f 77  25 2c 49 63 6f 6e 54 65  |%,Window%,IconTe|
00005f10  78 74 24 29 0d 1b 44 22  20 20 20 20 20 20 20 20  |xt$)..D"        |
00005f20  20 f2 5f 52 65 64 72 61  77 28 4d 61 69 6e 25 2c  | ._Redraw(Main%,|
00005f30  49 63 6f 6e 25 29 0d 1b  4e 0b 20 20 20 20 20 20  |Icon%)..N.      |
00005f40  cd 0d 1b 58 2c 20 20 20  20 20 20 f2 5f 53 65 74  |...X,      ._Set|
00005f50  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 28 49 63  |CaretPosition(Ic|
00005f60  6f 6e 25 2c 49 6e 64 65  78 25 2b 31 29 0d 1b 62  |on%,Index%+1)..b|
00005f70  08 20 20 20 cd 0d 1b 6c  05 e1 0d 1b 76 05 3a 0d  |.   ...l....v.:.|
00005f80  1b 80 38 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..8. ***********|
00005f90  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00005fb0  2a 2a 2a 2a 2a 2a 2a 0d  1b 8a 38 f4 20 4d 6f 76  |*******...8. Mov|
00005fc0  65 20 43 61 72 65 74 20  44 6f 77 6e 20 54 6f 20  |e Caret Down To |
00005fd0  54 68 65 20 4e 65 78 74  20 45 6e 74 72 79 2c 20  |The Next Entry, |
00005fe0  57 69 74 68 20 57 72 61  70 2d 72 6f 75 6e 64 0d  |With Wrap-round.|
00005ff0  1b 94 38 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..8. ***********|
00006000  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006020  2a 2a 2a 2a 2a 2a 2a 0d  1b 9e 17 dd 20 f2 5f 4d  |*******..... ._M|
00006030  6f 76 65 44 6f 77 6e 41  6e 45 6e 74 72 79 0d 1b  |oveDownAnEntry..|
00006040  a8 4e 20 20 20 e7 20 49  63 6f 6e 25 3c 32 32 20  |.N   . Icon%<22 |
00006050  84 20 28 49 63 6f 6e 25  3e 32 33 20 80 20 49 63  |. (Icon%>23 . Ic|
00006060  6f 6e 25 3c 32 36 29 20  8c 20 f2 5f 53 65 74 43  |on%<26) . ._SetC|
00006070  61 72 65 74 50 6f 73 69  74 69 6f 6e 28 49 63 6f  |aretPosition(Ico|
00006080  6e 25 2b 32 2c 49 6e 64  65 78 25 29 0d 1b b2 41  |n%+2,Index%)...A|
00006090  20 20 20 e7 20 49 63 6f  6e 25 3d 32 32 20 84 20  |   . Icon%=22 . |
000060a0  49 63 6f 6e 25 3d 32 33  20 8c 20 f2 5f 53 65 74  |Icon%=23 . ._Set|
000060b0  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 28 49 63  |CaretPosition(Ic|
000060c0  6f 6e 25 2b 36 2c 49 6e  64 65 78 25 29 0d 1b bc  |on%+6,Index%)...|
000060d0  41 20 20 20 e7 20 49 63  6f 6e 25 3e 32 37 20 80  |A   . Icon%>27 .|
000060e0  20 49 63 6f 6e 25 3c 33  36 20 8c 20 f2 5f 53 65  | Icon%<36 . ._Se|
000060f0  74 43 61 72 65 74 50 6f  73 69 74 69 6f 6e 28 49  |tCaretPosition(I|
00006100  63 6f 6e 25 2b 32 2c 49  6e 64 65 78 25 29 0d 1b  |con%+2,Index%)..|
00006110  c6 42 20 20 20 e7 20 49  63 6f 6e 25 3d 33 36 20  |.B   . Icon%=36 |
00006120  84 20 49 63 6f 6e 25 3d  33 37 20 8c 20 f2 5f 53  |. Icon%=37 . ._S|
00006130  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 28  |etCaretPosition(|
00006140  49 63 6f 6e 25 2d 33 36  2c 49 6e 64 65 78 25 29  |Icon%-36,Index%)|
00006150  0d 1b d0 05 e1 0d 1b da  05 3a 0d 1b e4 32 f4 20  |.........:...2. |
00006160  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006180  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 1b ee 32  |************...2|
00006190  f4 20 4d 6f 76 65 20 43  61 72 65 74 20 55 70 20  |. Move Caret Up |
000061a0  54 6f 20 4e 65 78 74 20  45 6e 74 72 79 2c 20 57  |To Next Entry, W|
000061b0  69 74 68 20 57 72 61 70  2d 72 6f 75 6e 64 0d 1b  |ith Wrap-round..|
000061c0  f8 32 f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.2. ************|
000061d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000061f0  0d 1c 02 15 dd 20 f2 5f  4d 6f 76 65 55 70 41 6e  |..... ._MoveUpAn|
00006200  45 6e 74 72 79 0d 1c 0c  5a 20 20 20 e7 20 28 49  |Entry...Z   . (I|
00006210  63 6f 6e 25 3c 32 34 20  80 20 49 63 6f 6e 25 3e  |con%<24 . Icon%>|
00006220  31 29 20 84 20 28 49 63  6f 6e 25 3c 33 38 20 80  |1) . (Icon%<38 .|
00006230  20 49 63 6f 6e 25 3e 32  39 29 20 8c 20 f2 5f 53  | Icon%>29) . ._S|
00006240  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 28  |etCaretPosition(|
00006250  49 63 6f 6e 25 2d 32 2c  49 6e 64 65 78 25 29 0d  |Icon%-2,Index%).|
00006260  1c 16 41 20 20 20 e7 20  49 63 6f 6e 25 3d 32 38  |..A   . Icon%=28|
00006270  20 84 20 49 63 6f 6e 25  3d 32 39 20 8c 20 f2 5f  | . Icon%=29 . ._|
00006280  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
00006290  28 49 63 6f 6e 25 2d 36  2c 49 6e 64 65 78 25 29  |(Icon%-6,Index%)|
000062a0  0d 1c 20 41 20 20 20 e7  20 49 63 6f 6e 25 3d 32  |.. A   . Icon%=2|
000062b0  36 20 84 20 49 63 6f 6e  25 3d 32 37 20 8c 20 f2  |6 . Icon%=27 . .|
000062c0  5f 53 65 74 43 61 72 65  74 50 6f 73 69 74 69 6f  |_SetCaretPositio|
000062d0  6e 28 49 63 6f 6e 25 2d  32 2c 49 6e 64 65 78 25  |n(Icon%-2,Index%|
000062e0  29 0d 1c 2a 42 20 20 20  e7 20 49 63 6f 6e 25 3d  |)..*B   . Icon%=|
000062f0  30 30 20 84 20 49 63 6f  6e 25 3d 30 31 20 8c 20  |00 . Icon%=01 . |
00006300  f2 5f 53 65 74 43 61 72  65 74 50 6f 73 69 74 69  |._SetCaretPositi|
00006310  6f 6e 28 49 63 6f 6e 25  2b 33 36 2c 49 6e 64 65  |on(Icon%+36,Inde|
00006320  78 25 29 0d 1c 34 05 e1  0d 1c 3e 05 3a 0d 1c 48  |x%)..4....>.:..H|
00006330  40 f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |@. *************|
00006340  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006360  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 1c 52  |*************..R|
00006370  34 f4 20 50 72 69 6e 74  6f 75 74 20 74 68 65 20  |4. Printout the |
00006380  63 6f 6e 74 65 6e 74 73  20 6f 66 20 74 68 65 20  |contents of the |
00006390  77 72 69 74 61 62 6c 65  20 69 63 6f 6e 73 21 21  |writable icons!!|
000063a0  21 0d 1c 5c 40 f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |!..\@. *********|
000063b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000063e0  2a 0d 1c 66 10 dd 20 f2  5f 50 72 69 6e 74 4f 75  |*..f.. ._PrintOu|
000063f0  74 0d 1c 70 29 20 20 20  c8 8e 20 a4 5f 52 65 61  |t..p)   .. ._Rea|
00006400  64 45 53 47 53 65 6c 65  63 74 65 64 28 4f 70 74  |dESGSelected(Opt|
00006410  69 6f 6e 73 25 2c 39 29  20 ca 0d 1c 7a 27 20 20  |ions%,9) ...z'  |
00006420  20 20 20 20 c9 20 30 20  3a 20 f2 5f 50 72 69 6e  |    . 0 : ._Prin|
00006430  74 54 65 78 74 4d 6f 64  65 28 4e 6c 71 4f 4e 24  |tTextMode(NlqON$|
00006440  29 0d 1c 84 28 20 20 20  20 20 20 c9 20 31 20 3a  |)...(      . 1 :|
00006450  20 f2 5f 50 72 69 6e 74  54 65 78 74 4d 6f 64 65  | ._PrintTextMode|
00006460  28 4e 6c 71 4f 46 46 24  29 0d 1c 8e 23 20 20 20  |(NlqOFF$)...#   |
00006470  20 20 20 c9 20 35 20 3a  20 f2 5f 50 72 69 6e 74  |   . 5 : ._Print|
00006480  47 72 61 70 68 69 63 73  4d 6f 64 65 0d 1c 98 59  |GraphicsMode...Y|
00006490  20 20 20 20 20 20 7f 20  85 20 32 30 30 31 2c 20  |      . . 2001, |
000064a0  22 50 6c 65 61 73 65 20  73 65 6c 65 63 74 20 61  |"Please select a|
000064b0  20 70 72 69 6e 74 6f 75  74 20 6d 6f 64 65 20 66  | printout mode f|
000064c0  72 6f 6d 20 74 68 65 20  6f 70 74 69 6f 6e 73 20  |rom the options |
000064d0  77 69 6e 64 6f 77 20 61  6e 64 20 74 72 79 20 61  |window and try a|
000064e0  67 61 69 6e 22 0d 1c a2  08 20 20 20 cb 0d 1c ac  |gain"....   ....|
000064f0  05 e1 0d 1c b6 05 3a 0d  1c c0 3b f4 20 2a 2a 2a  |......:...;. ***|
00006500  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006530  2a 2a 0d 1c ca 34 f4 20  50 72 69 6e 74 20 6f 75  |**...4. Print ou|
00006540  74 20 74 68 65 20 6c 61  62 65 6c 20 69 6e 20 74  |t the label in t|
00006550  65 78 74 20 6d 6f 64 65  20 28 6e 6f 6e 20 52 69  |ext mode (non Ri|
00006560  73 63 20 4f 53 29 0d 1c  d4 3b f4 20 50 61 72 61  |sc OS)...;. Para|
00006570  6d 65 74 65 72 20 69 73  20 61 6e 20 6f 70 74 69  |meter is an opti|
00006580  6f 6e 61 6c 20 63 6f 6e  74 72 6f 6c 20 73 74 72  |onal control str|
00006590  69 6e 67 20 28 69 65 20  4e 4c 51 20 65 74 63 2e  |ing (ie NLQ etc.|
000065a0  29 0d 1c de 3b f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |)...;. *********|
000065b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000065d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 1c e8 1e  |************....|
000065e0  dd 20 f2 5f 50 72 69 6e  74 54 65 78 74 4d 6f 64  |. ._PrintTextMod|
000065f0  65 28 50 72 65 6c 6f 67  24 29 0d 1c f2 0b 20 20  |e(Prelog$)....  |
00006600  20 ea 20 4c 25 0d 1c fc  20 20 20 20 e7 20 a4 5f  | . L%...    . ._|
00006610  50 72 69 6e 74 65 72 5f  4e 6f 74 4f 6e 4c 69 6e  |Printer_NotOnLin|
00006620  65 20 8c 20 e1 0d 1d 06  18 20 20 20 c8 99 20 22  |e . .....   .. "|
00006630  48 6f 75 72 67 6c 61 73  73 5f 4f 6e 22 0d 1d 10  |Hourglass_On"...|
00006640  08 20 20 20 3a 0d 1d 1a  3c 20 20 20 c8 99 20 22  |.   :...<   .. "|
00006650  4f 53 5f 42 79 74 65 22  2c 33 2c 31 30 20 20 20  |OS_Byte",3,10   |
00006660  20 20 20 20 20 20 20 3a  f4 20 53 43 52 45 45 4e  |       :. SCREEN|
00006670  20 4f 46 46 2c 20 50 52  49 4e 54 45 52 20 4f 4e  | OFF, PRINTER ON|
00006680  2e 0d 1d 24 2f 20 20 20  f2 5f 53 65 6e 64 44 61  |...$/   ._SendDa|
00006690  74 61 28 50 72 65 6c 6f  67 24 29 20 20 20 20 20  |ta(Prelog$)     |
000066a0  20 3a f4 20 53 65 74 20  4e 4c 51 20 4d 6f 64 65  | :. Set NLQ Mode|
000066b0  0d 1d 2e 36 20 20 20 ef  20 32 37 2c 31 35 20 20  |...6   . 27,15  |
000066c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000066d0  20 3a f4 20 43 6f 6e 64  65 6e 73 65 64 20 70 72  | :. Condensed pr|
000066e0  69 6e 74 20 4f 4e 0d 1d  38 08 20 20 20 3a 0d 1d  |int ON..8.   :..|
000066f0  42 48 20 20 20 f1 20 22  20 20 22 3b a4 5f 52 65  |BH   . "  ";._Re|
00006700  61 64 49 63 6f 6e 54 65  78 74 28 4d 61 69 6e 25  |adIconText(Main%|
00006710  2c 32 34 2c b9 29 3b 22  7c 20 22 3b a4 5f 52 65  |,24,.);"| ";._Re|
00006720  61 64 49 63 6f 6e 54 65  78 74 28 4d 61 69 6e 25  |adIconText(Main%|
00006730  2c 32 36 2c a3 29 0d 1d  4c 3f 20 20 20 f1 20 22  |,26,.)..L?   . "|
00006740  20 20 22 3b a4 5f 52 69  67 68 74 4a 75 73 74 69  |  ";._RightJusti|
00006750  66 79 28 32 35 2c 33 31  29 3b 22 20 7c 20 22 3b  |fy(25,31);" | ";|
00006760  a4 5f 52 69 67 68 74 4a  75 73 74 69 66 79 28 32  |._RightJustify(2|
00006770  37 2c 33 31 29 0d 1d 56  13 20 20 20 f1 20 4c 6f  |7,31)..V.   . Lo|
00006780  6e 67 45 71 75 61 6c 24  0d 1d 60 16 20 20 20 e3  |ngEqual$..`.   .|
00006790  20 4c 25 3d 30 20 b8 20  32 33 20 88 20 32 0d 1d  | L%=0 . 23 . 2..|
000067a0  6a 4d 20 20 20 20 20 20  f1 20 22 20 20 22 3b a4  |jM      . "  ";.|
000067b0  5f 52 65 61 64 49 63 6f  6e 54 65 78 74 28 4d 61  |_ReadIconText(Ma|
000067c0  69 6e 25 2c 4c 25 2c b9  29 3b 22 7c 20 22 3b a4  |in%,L%,.);"| ";.|
000067d0  5f 52 65 61 64 49 63 6f  6e 54 65 78 74 28 4d 61  |_ReadIconText(Ma|
000067e0  69 6e 25 2c 4c 25 2b 31  2c a3 29 0d 1d 74 08 20  |in%,L%+1,.)..t. |
000067f0  20 20 ed 0d 1d 7e 13 20  20 20 f1 20 4c 6f 6e 67  |  ...~.   . Long|
00006800  45 71 75 61 6c 24 0d 1d  88 82 20 20 20 f1 20 22  |Equal$....   . "|
00006810  41 3a 20 22 3b a4 5f 52  65 61 64 49 63 6f 6e 54  |A: ";._ReadIconT|
00006820  65 78 74 28 4d 61 69 6e  25 2c 32 34 2c a3 29 3b  |ext(Main%,24,.);|
00006830  22 20 2d 20 22 3b a4 5f  52 65 61 64 49 63 6f 6e  |" - ";._ReadIcon|
00006840  54 65 78 74 28 4d 61 69  6e 25 2c 32 35 2c a3 29  |Text(Main%,25,.)|
00006850  3b a4 5f 45 6e 64 4f 66  4c 69 6e 65 4c 65 73 73  |;._EndOfLineLess|
00006860  46 69 76 65 3b a4 5f 52  65 61 64 49 63 6f 6e 54  |Five;._ReadIconT|
00006870  65 78 74 28 4d 61 69 6e  25 2c 54 61 70 65 4e 75  |ext(Main%,TapeNu|
00006880  6d 62 65 72 25 2c a3 29  0d 1d 92 4a 20 20 20 f1  |mber%,.)...J   .|
00006890  20 22 42 3a 20 22 3b a4  5f 52 65 61 64 49 63 6f  | "B: ";._ReadIco|
000068a0  6e 54 65 78 74 28 4d 61  69 6e 25 2c 32 36 2c a3  |nText(Main%,26,.|
000068b0  29 3b 22 20 2d 20 22 3b  a4 5f 52 65 61 64 49 63  |);" - ";._ReadIc|
000068c0  6f 6e 54 65 78 74 28 4d  61 69 6e 25 2c 32 37 2c  |onText(Main%,27,|
000068d0  a3 29 0d 1d 9c 13 20 20  20 f1 20 4c 6f 6e 67 45  |.)....   . LongE|
000068e0  71 75 61 6c 24 0d 1d a6  17 20 20 20 e3 20 4c 25  |qual$....   . L%|
000068f0  3d 32 38 20 b8 20 33 36  20 88 20 32 0d 1d b0 4d  |=28 . 36 . 2...M|
00006900  20 20 20 20 20 20 f1 20  22 20 20 22 3b a4 5f 52  |      . "  ";._R|
00006910  65 61 64 49 63 6f 6e 54  65 78 74 28 4d 61 69 6e  |eadIconText(Main|
00006920  25 2c 4c 25 2c b9 29 3b  22 7c 20 22 3b a4 5f 52  |%,L%,.);"| ";._R|
00006930  65 61 64 49 63 6f 6e 54  65 78 74 28 4d 61 69 6e  |eadIconText(Main|
00006940  25 2c 4c 25 2b 31 2c a3  29 0d 1d ba 08 20 20 20  |%,L%+1,.)....   |
00006950  ed 0d 1d c4 13 20 20 20  f1 20 4c 6f 6e 67 4d 69  |.....   . LongMi|
00006960  6e 75 73 24 0d 1d ce 08  20 20 20 3a 0d 1d d8 1e  |nus$....   :....|
00006970  20 20 20 e3 20 4c 25 3d  30 20 b8 20 bb 28 46 6f  |   . L%=0 . .(Fo|
00006980  72 6d 4c 65 6e 67 74 68  24 29 0d 1d e2 1e 20 20  |rmLength$)....  |
00006990  20 20 20 20 f1 20 3a f4  20 73 68 6f 72 74 20 46  |    . :. short F|
000069a0  6f 72 6d 20 46 65 65 64  0d 1d ec 08 20 20 20 ed  |orm Feed....   .|
000069b0  0d 1d f6 08 20 20 20 3a  0d 1e 00 3c 20 20 20 c8  |....   :...<   .|
000069c0  99 20 22 4f 53 5f 42 79  74 65 22 2c 33 2c 30 30  |. "OS_Byte",3,00|
000069d0  20 20 20 20 20 20 20 20  20 20 3a f4 20 53 43 52  |          :. SCR|
000069e0  45 45 4e 20 4f 4e 2c 20  50 52 49 4e 54 45 52 20  |EEN ON, PRINTER |
000069f0  4f 46 46 2e 0d 1e 0a 19  20 20 20 c8 99 20 22 48  |OFF.....   .. "H|
00006a00  6f 75 72 67 6c 61 73 73  5f 4f 66 66 22 0d 1e 14  |ourglass_Off"...|
00006a10  05 e1 0d 1e 1e 05 3a 0d  1e 28 40 f4 20 2a 2a 2a  |......:..(@. ***|
00006a20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006a50  2a 2a 2a 2a 2a 2a 2a 0d  1e 32 2e f4 20 46 75 6e  |*******..2.. Fun|
00006a60  63 74 69 6f 6e 20 74 6f  20 63 68 65 63 6b 20 69  |ction to check i|
00006a70  66 20 70 72 69 6e 74 65  72 20 69 73 20 6f 6e 20  |f printer is on |
00006a80  6c 69 6e 65 2c 0d 1e 3c  40 f4 20 49 66 20 70 72  |line,..<@. If pr|
00006a90  69 6e 74 65 72 20 69 73  20 6e 6f 74 20 6f 6e 6c  |inter is not onl|
00006aa0  69 6e 65 20 54 52 55 45  20 69 73 20 72 65 74 75  |ine TRUE is retu|
00006ab0  72 6e 65 64 2c 20 6f 74  68 65 72 77 69 73 65 20  |rned, otherwise |
00006ac0  46 41 4c 53 45 0d 1e 46  40 f4 20 2a 2a 2a 2a 2a  |FALSE..F@. *****|
00006ad0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006b00  2a 2a 2a 2a 2a 0d 1e 50  19 dd 20 a4 5f 50 72 69  |*****..P.. ._Pri|
00006b10  6e 74 65 72 5f 4e 6f 74  4f 6e 4c 69 6e 65 0d 1e  |nter_NotOnLine..|
00006b20  5a 18 20 20 20 c8 99 20  22 48 6f 75 72 67 6c 61  |Z.   .. "Hourgla|
00006b30  73 73 5f 4f 6e 22 0d 1e  64 08 20 20 20 f5 0d 1e  |ss_On"..d.   ...|
00006b40  6e 23 20 20 20 20 20 20  50 72 69 6e 74 65 72 4f  |n#      PrinterO|
00006b50  6e 4c 69 6e 65 3d b9 20  3a 20 57 68 61 74 25 3d  |nLine=. : What%=|
00006b60  30 0d 1e 78 10 20 20 20  20 20 20 4e 6f 77 25 3d  |0..x.      Now%=|
00006b70  91 0d 1e 82 17 20 20 20  20 20 20 42 65 66 6f 72  |.....      Befor|
00006b80  65 25 3d 96 28 2d 34 29  0d 1e 8c 2f 20 20 20 20  |e%=.(-4).../    |
00006b90  20 20 ef 20 32 2c 31 2c  30 2c 31 2c 30 2c 31 2c  |  . 2,1,0,1,0,1,|
00006ba0  30 2c 31 2c 30 2c 31 2c  30 2c 31 2c 30 2c 31 2c  |0,1,0,1,0,1,0,1,|
00006bb0  30 2c 31 2c 30 2c 33 0d  1e 96 21 20 20 20 20 20  |0,1,0,3...!     |
00006bc0  20 4e 6f 77 25 3d 91 20  3a 20 f5 20 fd 20 91 3e  | Now%=. : . . .>|
00006bd0  4e 6f 77 25 2b 31 30 30  0d 1e a0 16 20 20 20 20  |Now%+100....    |
00006be0  20 20 41 66 74 65 72 25  3d 96 28 2d 34 29 0d 1e  |  After%=.(-4)..|
00006bf0  aa 1d 20 20 20 20 20 20  e7 20 42 65 66 6f 72 65  |..      . Before|
00006c00  25 3c 3e 41 66 74 65 72  25 20 8c 0d 1e b4 1f 20  |%<>After% ..... |
00006c10  20 20 20 20 20 20 20 20  c8 99 20 22 48 6f 75 72  |        .. "Hour|
00006c20  67 6c 61 73 73 5f 4f 66  66 22 0d 1e be 1c 20 20  |glass_Off"....  |
00006c30  20 20 20 20 20 20 20 50  72 69 6e 74 65 72 4f 6e  |       PrinterOn|
00006c40  4c 69 6e 65 3d a3 0d 1e  c8 87 20 20 20 20 20 20  |Line=.....      |
00006c50  20 20 20 24 42 6c 6f 63  6b 25 3d 22 54 68 65 20  |   $Block%="The |
00006c60  50 72 69 6e 74 65 72 20  69 73 20 6e 6f 74 20 72  |Printer is not r|
00006c70  65 73 70 6f 6e 64 69 6e  67 2c 20 70 6c 65 61 73  |esponding, pleas|
00006c80  65 20 63 68 65 63 6b 20  74 68 61 74 20 69 74 20  |e check that it |
00006c90  68 61 73 20 70 61 70 65  72 2c 20 69 74 20 69 73  |has paper, it is|
00006ca0  20 73 77 69 74 63 68 65  64 20 6f 6e 20 61 6e 64  | switched on and|
00006cb0  20 69 73 20 6f 6e 2d 6c  69 6e 65 2e 20 54 72 79  | is on-line. Try|
00006cc0  20 61 67 61 69 6e 3f 22  2b bd 28 30 29 0d 1e d2  | again?"+.(0)...|
00006cd0  45 20 20 20 20 20 20 20  20 20 c8 99 20 22 57 69  |E         .. "Wi|
00006ce0  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
00006cf0  42 6c 6f 63 6b 25 2c 25  31 30 30 31 31 2c 4d 79  |Block%,%10011,My|
00006d00  54 61 73 6b 4e 61 6d 65  24 20 b8 20 2c 57 68 61  |TaskName$ . ,Wha|
00006d10  74 25 0d 1e dc 1e 20 20  20 20 20 20 20 20 20 c8  |t%....         .|
00006d20  99 20 22 48 6f 75 72 67  6c 61 73 73 5f 4f 6e 22  |. "Hourglass_On"|
00006d30  0d 1e e6 0b 20 20 20 20  20 20 cd 0d 1e f0 34 20  |....      ....4 |
00006d40  20 20 fd 20 50 72 69 6e  74 65 72 4f 6e 4c 69 6e  |  . PrinterOnLin|
00006d50  65 20 84 20 28 ac 20 50  72 69 6e 74 65 72 4f 6e  |e . (. PrinterOn|
00006d60  4c 69 6e 65 20 80 20 57  68 61 74 25 3d 32 29 0d  |Line . What%=2).|
00006d70  1e fa 19 20 20 20 c8 99  20 22 48 6f 75 72 67 6c  |...   .. "Hourgl|
00006d80  61 73 73 5f 4f 66 66 22  0d 1f 04 15 20 20 20 e7  |ass_Off"....   .|
00006d90  20 57 68 61 74 25 3d 32  20 8c 20 3d b9 0d 1f 0e  | What%=2 . =....|
00006da0  06 3d a3 0d 1f 18 05 3a  0d 1f 22 48 f4 20 2a 2a  |.=.....:.."H. **|
00006db0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006df0  0d 1f 2c 48 f4 20 50 72  69 6e 74 73 20 63 6f 6e  |..,H. Prints con|
00006e00  74 65 6e 74 73 20 6f 66  20 49 63 6f 6e 28 49 63  |tents of Icon(Ic|
00006e10  6f 6e 25 29 20 72 69 67  68 74 20 6a 75 73 74 69  |on%) right justi|
00006e20  66 69 65 64 20 69 6e 20  61 20 66 69 65 6c 64 20  |fied in a field |
00006e30  6f 66 20 43 68 61 72 73  0d 1f 36 48 f4 20 2a 2a  |of Chars..6H. **|
00006e40  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006e80  0d 1f 40 21 dd 20 a4 5f  52 69 67 68 74 4a 75 73  |..@!. ._RightJus|
00006e90  74 69 66 79 28 49 63 6f  6e 25 2c 43 68 61 72 25  |tify(Icon%,Char%|
00006ea0  29 0d 1f 4a 2a 20 20 20  54 65 78 74 24 3d a4 5f  |)..J*   Text$=._|
00006eb0  52 65 61 64 49 63 6f 6e  54 65 78 74 28 4d 61 69  |ReadIconText(Mai|
00006ec0  6e 25 2c 49 63 6f 6e 25  2c a3 29 0d 1f 54 1f 3d  |n%,Icon%,.)..T.=|
00006ed0  c4 43 68 61 72 25 2d a9  28 54 65 78 74 24 29 2c  |.Char%-.(Text$),|
00006ee0  22 20 22 29 2b 54 65 78  74 24 0d 1f 5e 05 3a 0d  |" ")+Text$..^.:.|
00006ef0  1f 68 3d f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.h=. ***********|
00006f00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006f20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 1f 72 3d  |************..r=|
00006f30  f4 20 54 61 62 73 20 74  6f 20 74 68 65 20 65 6e  |. Tabs to the en|
00006f40  64 20 6f 66 20 74 68 65  20 6c 69 6e 65 20 65 78  |d of the line ex|
00006f50  63 65 70 74 20 66 6f 72  20 66 69 76 65 20 63 68  |cept for five ch|
00006f60  61 72 61 63 74 65 72 73  2e 0d 1f 7c 3d f4 20 2a  |aracters...|=. *|
00006f70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00006fa0  2a 2a 2a 2a 2a 2a 0d 1f  86 19 dd 20 a4 5f 45 6e  |******..... ._En|
00006fb0  64 4f 66 4c 69 6e 65 4c  65 73 73 46 69 76 65 0d  |dOfLineLessFive.|
00006fc0  1f 90 32 4c 65 6e 67 74  68 25 3d a9 28 a4 5f 52  |..2Length%=.(._R|
00006fd0  65 61 64 49 63 6f 6e 54  65 78 74 28 4d 61 69 6e  |eadIconText(Main|
00006fe0  25 2c 54 61 70 65 4e 75  6d 62 65 72 25 2c a3 29  |%,TapeNumber%,.)|
00006ff0  29 0d 1f 9a 29 e7 20 4c  65 6e 67 74 68 25 3d 35  |)...). Length%=5|
00007000  20 8c 20 54 6f 74 4c 65  6e 25 3d 36 33 20 8b 20  | . TotLen%=63 . |
00007010  54 6f 74 4c 65 6e 25 3d  36 33 0d 1f a4 5d 41 6e  |TotLen%=63...]An|
00007020  73 24 3d c4 54 6f 74 4c  65 6e 25 2d a9 28 22 20  |s$=.TotLen%-.(" |
00007030  20 41 3a 20 22 2b a4 5f  52 65 61 64 49 63 6f 6e  | A: "+._ReadIcon|
00007040  54 65 78 74 28 4d 61 69  6e 25 2c 32 34 2c a3 29  |Text(Main%,24,.)|
00007050  2b 22 20 2d 20 22 2b a4  5f 52 65 61 64 49 63 6f  |+" - "+._ReadIco|
00007060  6e 54 65 78 74 28 4d 61  69 6e 25 2c 32 35 2c a3  |nText(Main%,25,.|
00007070  29 29 2c 22 20 22 29 0d  1f ae 09 3d 41 6e 73 24  |))," ")....=Ans$|
00007080  0d 1f b8 05 3a 0d 1f c2  4c f4 20 2a 2a 2a 2a 2a  |....:...L. *****|
00007090  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000070d0  2a 0d 1f cc 4c f4 20 54  68 69 73 20 69 73 20 70  |*...L. This is p|
000070e0  75 72 65 6c 79 20 66 6f  72 20 70 72 6f 67 72 61  |urely for progra|
000070f0  6d 20 76 61 72 69 61 62  6c 65 73 20 61 6e 64 20  |m variables and |
00007100  69 73 20 6e 6f 74 68 69  6e 67 20 74 6f 20 64 6f  |is nothing to do|
00007110  20 77 69 74 68 20 52 69  73 63 5f 4f 53 0d 1f d6  | with Risc_OS...|
00007120  4c f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |L. *************|
00007130  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00007160  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 1f e0 24 dd 20 f2  |*********...$. .|
00007170  5f 49 6e 69 74 69 61 6c  69 73 65 5f 50 72 6f 67  |_Initialise_Prog|
00007180  72 61 6d 5f 56 61 72 69  61 62 6c 65 73 0d 1f ea  |ram_Variables...|
00007190  36 20 20 20 f4 20 56 61  72 69 61 62 6c 65 73 20  |6   . Variables |
000071a0  74 6f 20 64 6f 20 77 69  74 68 20 52 69 73 63 4f  |to do with RiscO|
000071b0  53 20 50 44 72 69 76 65  72 20 49 6e 74 65 72 46  |S PDriver InterF|
000071c0  61 63 65 0d 1f f4 1d 20  20 20 de 20 42 6f 78 25  |ace....   . Box%|
000071d0  20 31 36 20 3a 20 de 20  42 6f 78 32 25 20 31 36  | 16 : . Box2% 16|
000071e0  0d 1f fe 13 20 20 20 de  20 4d 61 74 72 69 78 25  |....   . Matrix%|
000071f0  20 31 36 0d 20 08 37 20  20 20 53 63 61 6c 65 58  | 16. .7   ScaleX|
00007200  25 3d 31 20 3a 20 53 63  61 6c 65 59 25 3d 31 20  |%=1 : ScaleY%=1 |
00007210  20 20 3a f4 20 46 6f 72  20 46 75 74 75 72 65 20  |  :. For Future |
00007220  45 78 70 61 6e 73 69 6f  6e 3f 0d 20 12 30 20 20  |Expansion?. .0  |
00007230  20 4d 61 74 72 69 78 25  21 30 34 3d 30 20 20 20  | Matrix%!04=0   |
00007240  20 3a 20 4d 61 74 72 69  78 25 21 30 30 3d 32 5e  | : Matrix%!00=2^|
00007250  31 36 2a 53 63 61 6c 65  58 25 0d 20 1c 30 20 20  |16*ScaleX%. .0  |
00007260  20 4d 61 74 72 69 78 25  21 30 38 3d 30 20 20 20  | Matrix%!08=0   |
00007270  20 3a 20 4d 61 74 72 69  78 25 21 31 32 3d 32 5e  | : Matrix%!12=2^|
00007280  31 36 2a 53 63 61 6c 65  59 25 0d 20 26 12 20 20  |16*ScaleY%. &.  |
00007290  20 de 20 4f 72 69 67 69  6e 25 20 38 0d 20 30 05  | . Origin% 8. 0.|
000072a0  3a 0d 20 3a 1e 20 20 20  44 72 61 67 41 53 70 72  |:. :.   DragASpr|
000072b0  69 74 65 5f 41 63 74 69  76 65 25 20 3d 20 a3 0d  |ite_Active% = ..|
000072c0  20 44 1a 20 20 20 49 63  6f 6e 42 61 72 4d 65 6e  | D.   IconBarMen|
000072d0  75 25 20 20 20 20 3d 20  30 0d 20 4e 1a 20 20 20  |u%    = 0. N.   |
000072e0  4d 61 69 6e 57 69 6e 4d  65 6e 75 25 20 20 20 20  |MainWinMenu%    |
000072f0  3d 20 31 0d 20 58 1b 20  20 20 54 61 70 65 4e 75  |= 1. X.   TapeNu|
00007300  6d 62 65 72 25 20 20 20  20 20 3d 20 35 33 0d 20  |mber%     = 53. |
00007310  62 21 20 20 20 4c 6f 6e  67 45 71 75 61 6c 24 20  |b!   LongEqual$ |
00007320  20 20 20 20 20 3d 20 c4  36 38 2c 22 3d 22 29 0d  |     = .68,"=").|
00007330  20 6c 21 20 20 20 4c 6f  6e 67 4d 69 6e 75 73 24  | l!   LongMinus$|
00007340  20 20 20 20 20 20 3d 20  c4 36 38 2c 22 2d 22 29  |      = .68,"-")|
00007350  0d 20 76 1a 20 20 20 4e  65 77 25 20 20 20 20 20  |. v.   New%     |
00007360  20 20 20 20 20 20 20 3d  20 b9 0d 20 80 1a 20 20  |       = .. ..  |
00007370  20 4e 4c 51 25 20 20 20  20 20 20 20 20 20 20 20  | NLQ%           |
00007380  20 3d 20 b9 0d 20 8a 23  20 20 20 4e 6c 71 4f 4e  | = .. .#   NlqON|
00007390  24 20 20 20 20 20 20 20  20 20 20 3d 20 22 32 37  |$          = "27|
000073a0  2c 31 32 30 2c 31 22 0d  20 94 23 20 20 20 4e 6c  |,120,1". .#   Nl|
000073b0  71 4f 46 46 24 20 20 20  20 20 20 20 20 20 3d 20  |qOFF$         = |
000073c0  22 32 37 2c 31 32 30 2c  30 22 0d 20 9e 23 20 20  |"27,120,0". .#  |
000073d0  20 50 72 69 6e 74 46 69  6c 65 24 20 20 20 20 20  | PrintFile$     |
000073e0  20 3d 20 22 50 72 69 6e  74 4f 75 74 22 0d 20 a8  | = "PrintOut". .|
000073f0  72 20 20 20 4c 61 74 65  73 74 56 65 72 25 20 20  |r   LatestVer%  |
00007400  20 20 20 20 3d 20 32 20  20 20 20 20 20 20 20 20  |    = 2         |
00007410  20 20 20 20 3a 20 f4 20  56 65 72 73 69 6f 6e 20  |    : . Version |
00007420  4e 75 6d 62 65 72 20 4f  66 20 43 6f 6e 66 69 67  |Number Of Config|
00007430  20 46 69 6c 65 2e 20 43  68 61 6e 67 65 20 49 66  | File. Change If|
00007440  20 46 69 6c 65 20 49 73  20 4d 61 64 65 20 49 6e  | File Is Made In|
00007450  63 6f 6d 70 61 74 61 62  6c 65 2e 2e 2e 2e 2e 0d  |compatable......|
00007460  20 b2 1b 20 20 20 4f 6c  64 4e 61 6d 65 24 20 20  | ..   OldName$  |
00007470  20 20 20 20 20 20 3d 20  22 22 0d 20 bc 05 3a 0d  |      = "". ..:.|
00007480  20 c6 4f 20 20 20 f4 20  47 69 76 65 20 6e 61 6d  | .O   . Give nam|
00007490  65 73 20 74 6f 20 73 6f  6d 65 20 6f 66 20 74 68  |es to some of th|
000074a0  65 20 69 63 6f 6e 73 20  65 74 63 2e 20 74 6f 20  |e icons etc. to |
000074b0  6d 61 6b 65 20 74 68 65  20 70 72 6f 67 72 61 6d  |make the program|
000074c0  20 6d 6f 72 65 20 72 65  61 64 61 62 6c 65 0d 20  | more readable. |
000074d0  d0 4c 20 20 20 42 61 63  6b 47 72 6f 75 6e 64 25  |.L   BackGround%|
000074e0  3d 20 2d 31 20 3a 20 49  63 6f 6e 42 61 72 25 3d  |= -1 : IconBar%=|
000074f0  20 2d 32 20 3a 20 50 72  69 6e 74 46 25 3d 34 39  | -2 : PrintF%=49|
00007500  20 3a 20 50 72 69 6e 74  4c 25 3d 34 37 20 3a 20  | : PrintL%=47 : |
00007510  50 72 69 6e 74 44 25 3d  34 38 0d 20 da 72 20 20  |PrintD%=48. .r  |
00007520  20 4f 70 74 69 6f 6e 73  4f 4b 46 25 3d 20 32 38  | OptionsOKF%= 28|
00007530  20 3a 20 4f 70 74 69 6f  6e 73 4f 4b 4c 25 3d 32  | : OptionsOKL%=2|
00007540  36 20 3a 20 4f 70 74 69  6f 6e 73 4f 4b 44 25 3d  |6 : OptionsOKD%=|
00007550  32 37 20 3a 20 53 61 76  65 49 63 6f 6e 25 3d 20  |27 : SaveIcon%= |
00007560  30 20 3a 20 53 61 76 65  4f 4b 46 25 3d 31 31 20  |0 : SaveOKF%=11 |
00007570  3a 20 53 61 76 65 4f 4b  4c 25 3d 39 20 3a 20 53  |: SaveOKL%=9 : S|
00007580  61 76 65 4f 4b 44 25 20  3d 20 31 30 0d 20 e4 64  |aveOKD% = 10. .d|
00007590  20 20 20 54 6f 70 53 65  74 53 69 64 65 4f 4e 45  |   TopSetSideONE|
000075a0  53 74 61 72 74 25 3d 30  30 20 3a 20 54 6f 70 53  |Start%=00 : TopS|
000075b0  65 74 53 69 64 65 4f 4e  45 45 6e 64 25 3d 32 32  |etSideONEEnd%=22|
000075c0  20 3a 20 54 6f 70 53 65  74 53 69 64 65 54 57 4f  | : TopSetSideTWO|
000075d0  53 74 61 72 74 25 3d 30  31 20 3a 20 54 6f 70 53  |Start%=01 : TopS|
000075e0  65 74 53 69 64 65 54 57  4f 45 6e 64 25 3d 32 33  |etSideTWOEnd%=23|
000075f0  0d 20 ee 64 20 20 20 42  74 6d 53 65 74 53 69 64  |. .d   BtmSetSid|
00007600  65 4f 4e 45 53 74 61 72  74 25 3d 32 38 20 3a 20  |eONEStart%=28 : |
00007610  42 74 6d 53 65 74 53 69  64 65 4f 4e 45 45 6e 64  |BtmSetSideONEEnd|
00007620  25 3d 33 36 20 3a 20 42  74 6d 53 65 74 53 69 64  |%=36 : BtmSetSid|
00007630  65 54 57 4f 53 74 61 72  74 25 3d 32 39 20 3a 20  |eTWOStart%=29 : |
00007640  42 74 6d 53 65 74 53 69  64 65 54 57 4f 45 6e 64  |BtmSetSideTWOEnd|
00007650  25 3d 33 37 0d 20 f8 2a  20 20 20 54 69 74 6c 65  |%=37. .*   Title|
00007660  53 69 64 65 4f 4e 45 25  3d 32 34 20 3a 20 54 69  |SideONE%=24 : Ti|
00007670  74 6c 65 53 69 64 65 54  57 4f 25 3d 32 36 0d 21  |tleSideTWO%=26.!|
00007680  02 2c 20 20 20 41 72 74  69 73 74 53 69 64 65 4f  |.,   ArtistSideO|
00007690  4e 45 25 3d 32 35 20 3a  20 41 72 74 69 73 74 53  |NE%=25 : ArtistS|
000076a0  69 64 65 54 57 4f 25 3d  32 37 0d 21 0c 25 20 20  |ideTWO%=27.!.%  |
000076b0  20 4e 75 6d 62 65 72 4f  66 4c 69 6e 65 73 25 3d  | NumberOfLines%=|
000076c0  35 36 20 3a 20 46 6f 72  6d 61 74 25 3d 36 36 0d  |56 : Format%=66.|
000076d0  21 16 14 20 20 20 de 20  50 44 72 69 76 65 72 24  |!..   . PDriver$|
000076e0  28 36 29 0d 21 20 36 20  20 20 50 44 72 69 76 65  |(6).! 6   PDrive|
000076f0  72 24 28 30 29 3d 22 4e  75 6c 6c 3a 22 20 3a 20  |r$(0)="Null:" : |
00007700  50 44 72 69 76 65 72 24  28 31 29 3d 22 4e 4c 51  |PDriver$(1)="NLQ|
00007710  20 50 72 69 6e 74 65 72  22 0d 21 2a 40 20 20 20  | Printer".!*@   |
00007720  50 44 72 69 76 65 72 24  28 32 29 3d 22 44 72 61  |PDriver$(2)="Dra|
00007730  66 74 20 50 72 69 6e 74  65 72 22 20 3a 20 50 44  |ft Printer" : PD|
00007740  72 69 76 65 72 24 28 36  29 3d 22 52 69 73 63 4f  |river$(6)="RiscO|
00007750  53 20 44 72 69 76 65 72  22 0d 21 34 15 20 20 20  |S Driver".!4.   |
00007760  f2 5f 52 65 61 64 55 73  65 72 44 61 74 61 0d 21  |._ReadUserData.!|
00007770  3e 05 3a 0d 21 48 46 20  20 20 f4 20 47 65 74 20  |>.:.!HF   . Get |
00007780  53 57 49 20 4e 75 6d 62  65 72 73 20 66 6f 72 20  |SWI Numbers for |
00007790  66 6f 6e 74 20 63 61 6c  6c 73 20 74 6f 20 73 70  |font calls to sp|
000077a0  65 65 64 20 75 70 20 62  6f 74 74 6c 65 6e 65 63  |eed up bottlenec|
000077b0  6b 20 69 6e 20 63 6f 64  65 0d 21 52 3b 20 20 20  |k in code.!R;   |
000077c0  c8 99 20 22 4f 53 5f 53  57 49 4e 75 6d 62 65 72  |.. "OS_SWINumber|
000077d0  46 72 6f 6d 53 74 72 69  6e 67 22 2c 2c 22 46 6f  |FromString",,"Fo|
000077e0  6e 74 5f 46 69 6e 64 46  6f 6e 74 22 20 b8 20 46  |nt_FindFont" . F|
000077f0  69 6e 64 25 0d 21 5c 3b  20 20 20 c8 99 20 22 4f  |ind%.!\;   .. "O|
00007800  53 5f 53 57 49 4e 75 6d  62 65 72 46 72 6f 6d 53  |S_SWINumberFromS|
00007810  74 72 69 6e 67 22 2c 2c  22 46 6f 6e 74 5f 4c 6f  |tring",,"Font_Lo|
00007820  73 65 46 6f 6e 74 22 20  b8 20 4c 6f 73 65 25 0d  |seFont" . Lose%.|
00007830  21 66 39 20 20 20 c8 99  20 22 4f 53 5f 53 57 49  |!f9   .. "OS_SWI|
00007840  4e 75 6d 62 65 72 46 72  6f 6d 53 74 72 69 6e 67  |NumberFromString|
00007850  22 2c 2c 22 46 6f 6e 74  5f 53 65 74 46 6f 6e 74  |",,"Font_SetFont|
00007860  22 20 b8 20 53 65 74 25  0d 21 70 39 20 20 20 c8  |" . Set%.!p9   .|
00007870  99 20 22 4f 53 5f 53 57  49 4e 75 6d 62 65 72 46  |. "OS_SWINumberF|
00007880  72 6f 6d 53 74 72 69 6e  67 22 2c 2c 22 46 6f 6e  |romString",,"Fon|
00007890  74 5f 50 61 69 6e 74 22  20 b8 20 50 61 69 6e 74  |t_Paint" . Paint|
000078a0  25 0d 21 7a 05 3a 0d 21  84 49 20 20 20 44 65 73  |%.!z.:.!.I   Des|
000078b0  6b 54 6f 70 53 61 76 65  24 3d 22 52 75 6e 20 22  |kTopSave$="Run "|
000078c0  2b a4 5f 43 6f 6e 76 65  72 74 53 79 73 74 65 6d  |+._ConvertSystem|
000078d0  54 6f 53 74 72 69 6e 67  28 22 43 61 73 73 65 74  |ToString("Casset|
000078e0  74 65 24 44 69 72 22 29  2b bd 28 26 30 41 29 0d  |te$Dir")+.(&0A).|
000078f0  21 8e 3d 20 20 20 42 61  73 65 46 6f 6e 74 24 3d  |!.=   BaseFont$=|
00007900  a4 5f 43 6f 6e 76 65 72  74 53 79 73 74 65 6d 54  |._ConvertSystemT|
00007910  6f 53 74 72 69 6e 67 28  22 43 61 73 73 65 74 74  |oString("Cassett|
00007920  65 24 42 61 73 65 46 6f  6e 74 22 29 0d 21 98 3d  |e$BaseFont").!.=|
00007930  20 20 20 42 6f 6c 64 46  6f 6e 74 24 3d a4 5f 43  |   BoldFont$=._C|
00007940  6f 6e 76 65 72 74 53 79  73 74 65 6d 54 6f 53 74  |onvertSystemToSt|
00007950  72 69 6e 67 28 22 43 61  73 73 65 74 74 65 24 42  |ring("Cassette$B|
00007960  6f 6c 64 46 6f 6e 74 22  29 0d 21 a2 39 20 20 20  |oldFont").!.9   |
00007970  54 61 70 65 4e 75 6d 62  65 72 24 3d a4 5f 43 6f  |TapeNumber$=._Co|
00007980  6e 76 65 72 74 53 79 73  74 65 6d 54 6f 53 74 72  |nvertSystemToStr|
00007990  69 6e 67 28 22 54 61 70  65 24 50 72 65 66 69 78  |ing("Tape$Prefix|
000079a0  22 29 0d 21 ac 1b 20 20  20 e7 20 a9 28 54 61 70  |").!..   . .(Tap|
000079b0  65 4e 75 6d 62 65 72 24  29 3e 32 20 8c 0d 21 b6  |eNumber$)>2 ..!.|
000079c0  22 20 20 20 20 20 20 43  6c 69 70 70 65 64 24 3d  |"      Clipped$=|
000079d0  c0 54 61 70 65 4e 75 6d  62 65 72 24 2c 32 29 0d  |.TapeNumber$,2).|
000079e0  21 c0 16 20 20 20 20 20  20 21 42 6c 6f 63 6b 25  |!..      !Block%|
000079f0  3d 39 30 39 30 0d 21 ca  75 20 20 20 20 20 20 45  |=9090.!.u      E|
00007a00  72 72 6f 72 24 3d 22 54  61 70 65 24 50 72 65 66  |rror$="Tape$Pref|
00007a10  69 78 20 69 73 20 73 65  74 20 74 6f 20 6c 6f 6e  |ix is set to lon|
00007a20  67 65 72 20 74 68 61 6e  20 32 20 63 68 61 72 61  |ger than 2 chara|
00007a30  63 74 65 72 73 2e 20 4f  4b 20 74 6f 20 63 6c 69  |cters. OK to cli|
00007a40  70 20 74 6f 20 22 2b 43  6c 69 70 70 65 64 24 2b  |p to "+Clipped$+|
00007a50  22 20 43 61 6e 63 65 6c  20 74 6f 20 61 62 6f 72  |" Cancel to abor|
00007a60  74 20 70 72 6f 67 72 61  6d 22 0d 21 d4 21 20 20  |t program".!.!  |
00007a70  20 20 20 20 24 28 42 6c  6f 63 6b 25 2b 34 29 3d  |    $(Block%+4)=|
00007a80  45 72 72 6f 72 24 20 2b  20 bd 30 0d 21 de 42 20  |Error$ + .0.!.B |
00007a90  20 20 20 20 20 c8 99 20  22 57 69 6d 70 5f 52 65  |     .. "Wimp_Re|
00007aa0  70 6f 72 74 45 72 72 6f  72 22 2c 42 6c 6f 63 6b  |portError",Block|
00007ab0  25 2c 25 30 31 31 2c 4d  79 54 61 73 6b 4e 61 6d  |%,%011,MyTaskNam|
00007ac0  65 24 20 b8 20 2c 52 65  73 75 6c 74 25 0d 21 e8  |e$ . ,Result%.!.|
00007ad0  23 20 20 20 20 20 20 e7  20 52 65 73 75 6c 74 25  |#      . Result%|
00007ae0  3d 32 20 8c 20 f2 5f 43  6c 6f 73 65 44 6f 77 6e  |=2 . ._CloseDown|
00007af0  0d 21 f2 24 20 20 20 20  20 20 54 61 70 65 4e 75  |.!.$      TapeNu|
00007b00  6d 62 65 72 24 3d 43 6c  69 70 70 65 64 24 2b 22  |mber$=Clipped$+"|
00007b10  20 30 30 22 0d 21 fc 08  20 20 20 cc 0d 22 06 27  | 00".!..   ..".'|
00007b20  20 20 20 20 20 20 54 61  70 65 4e 75 6d 62 65 72  |      TapeNumber|
00007b30  24 3d 54 61 70 65 4e 75  6d 62 65 72 24 2b 22 20  |$=TapeNumber$+" |
00007b40  30 30 22 0d 22 10 08 20  20 20 cd 0d 22 1a 05 e1  |00"."..   .."...|
00007b50  0d 22 24 05 3a 0d 22 2e  37 f4 20 2a 2a 2a 2a 2a  |."$.:.".7. *****|
00007b60  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00007b80  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 22 38 37  |************."87|
00007b90  f4 20 49 66 20 76 61 72  69 61 62 6c 65 20 64 6f  |. If variable do|
00007ba0  65 73 20 6e 6f 74 20 65  78 69 73 74 2c 20 72 65  |es not exist, re|
00007bb0  74 75 72 6e 20 61 20 4e  55 4c 4c 20 73 74 72 69  |turn a NULL stri|
00007bc0  6e 67 2e 0d 22 42 37 f4  20 2a 2a 2a 2a 2a 2a 2a  |ng.."B7. *******|
00007bd0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00007bf0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 22 4c 28 dd 20  |**********."L(. |
00007c00  a4 5f 43 6f 6e 76 65 72  74 53 79 73 74 65 6d 54  |._ConvertSystemT|
00007c10  6f 53 74 72 69 6e 67 28  56 61 72 69 61 62 6c 65  |oString(Variable|
00007c20  24 29 0d 22 56 1c 20 20  20 ea 20 4c 6f 6f 70 25  |$)."V.   . Loop%|
00007c30  2c 46 6c 61 67 25 2c 41  6e 73 77 65 72 24 0d 22  |,Flag%,Answer$."|
00007c40  60 31 20 20 20 e3 20 4c  6f 6f 70 25 3d 31 30 30  |`1   . Loop%=100|
00007c50  20 b8 20 31 35 30 20 88  20 34 20 3a 20 42 6c 6f  | . 150 . 4 : Blo|
00007c60  63 6b 25 21 4c 6f 6f 70  25 3d 30 20 3a 20 ed 0d  |ck%!Loop%=0 : ..|
00007c70  22 6a 3f 20 20 20 c8 99  20 22 58 4f 53 5f 52 65  |"j?   .. "XOS_Re|
00007c80  61 64 56 61 72 56 61 6c  22 2c 56 61 72 69 61 62  |adVarVal",Variab|
00007c90  6c 65 24 2c 42 6c 6f 63  6b 25 2b 31 30 30 2c 35  |le$,Block%+100,5|
00007ca0  30 2c 30 2c 33 20 b8 20  3b 46 6c 61 67 25 0d 22  |0,0,3 . ;Flag%."|
00007cb0  74 44 20 20 20 e7 20 28  46 6c 61 67 25 20 80 20  |tD   . (Flag% . |
00007cc0  31 29 20 8c 20 41 6e 73  77 65 72 24 3d 22 22 20  |1) . Answer$="" |
00007cd0  8b 20 41 6e 73 77 65 72  24 3d a4 5f 52 65 61 64  |. Answer$=._Read|
00007ce0  53 74 72 69 6e 67 28 42  6c 6f 63 6b 25 2b 31 30  |String(Block%+10|
00007cf0  30 29 0d 22 7e 0c 3d 41  6e 73 77 65 72 24 0d 22  |0)."~.=Answer$."|
00007d00  88 05 3a 0d 22 92 53 f4  20 2a 2a 2a 2a 2a 2a 2a  |..:.".S. *******|
00007d10  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00007d50  2a 2a 2a 2a 2a 2a 0d 22  9c 53 f4 20 53 74 6f 72  |******.".S. Stor|
00007d60  65 20 55 73 65 72 20 43  6f 6e 66 69 67 75 72 61  |e User Configura|
00007d70  62 6c 65 20 53 65 74 74  69 6e 67 73 20 49 6e 20  |ble Settings In |
00007d80  43 6f 6e 66 69 67 20 46  69 6c 65 20 57 69 74 68  |Config File With|
00007d90  69 6e 20 21 43 61 73 73  65 74 74 65 20 41 70 70  |in !Cassette App|
00007da0  6c 69 63 61 74 69 6f 6e  2e 0d 22 a6 53 f4 20 2a  |lication..".S. *|
00007db0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00007df0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 22 b0 15  |************."..|
00007e00  dd 20 f2 5f 53 74 6f 72  65 55 73 65 72 44 61 74  |. ._StoreUserDat|
00007e10  61 0d 22 ba 33 20 20 20  44 61 74 61 46 69 6c 65  |a.".3   DataFile|
00007e20  25 3d ae 22 3c 43 61 73  73 65 74 74 65 24 44 69  |%=."<Cassette$Di|
00007e30  72 3e 2e 52 65 73 6f 75  72 63 65 73 2e 43 6f 6e  |r>.Resources.Con|
00007e40  66 69 67 22 0d 22 c4 1e  20 20 20 d5 20 23 44 61  |fig"."..   . #Da|
00007e50  74 61 46 69 6c 65 25 2c  4c 61 74 65 73 74 56 65  |taFile%,LatestVe|
00007e60  72 25 0d 22 ce 31 20 20  20 f1 20 23 44 61 74 61  |r%.".1   . #Data|
00007e70  46 69 6c 65 25 2c a4 5f  52 65 61 64 49 63 6f 6e  |File%,._ReadIcon|
00007e80  54 65 78 74 28 4f 70 74  69 6f 6e 73 25 2c 31 32  |Text(Options%,12|
00007e90  2c a3 29 0d 22 d8 31 20  20 20 f1 20 23 44 61 74  |,.).".1   . #Dat|
00007ea0  61 46 69 6c 65 25 2c a4  5f 52 65 61 64 49 63 6f  |aFile%,._ReadIco|
00007eb0  6e 54 65 78 74 28 4f 70  74 69 6f 6e 73 25 2c 31  |nText(Options%,1|
00007ec0  36 2c a3 29 0d 22 e2 31  20 20 20 f1 20 23 44 61  |6,.).".1   . #Da|
00007ed0  74 61 46 69 6c 65 25 2c  a4 5f 52 65 61 64 49 63  |taFile%,._ReadIc|
00007ee0  6f 6e 54 65 78 74 28 4f  70 74 69 6f 6e 73 25 2c  |onText(Options%,|
00007ef0  32 30 2c a3 29 0d 22 ec  31 20 20 20 f1 20 23 44  |20,.).".1   . #D|
00007f00  61 74 61 46 69 6c 65 25  2c a4 5f 52 65 61 64 45  |ataFile%,._ReadE|
00007f10  53 47 53 65 6c 65 63 74  65 64 28 4f 70 74 69 6f  |SGSelected(Optio|
00007f20  6e 73 25 2c 39 29 0d 22  f6 13 20 20 20 d9 20 23  |ns%,9)."..   . #|
00007f30  44 61 74 61 46 69 6c 65  25 0d 23 00 1f 20 20 20  |DataFile%.#..   |
00007f40  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 4d  |.. "Wimp_CreateM|
00007f50  65 6e 75 22 2c 2c 2d 31  0d 23 0a 05 e1 0d 23 14  |enu",,-1.#....#.|
00007f60  05 3a 0d 23 1e 52 f4 20  2a 2a 2a 2a 2a 2a 2a 2a  |.:.#.R. ********|
00007f70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00007fb0  2a 2a 2a 2a 0d 23 28 52  f4 20 52 65 61 64 20 55  |****.#(R. Read U|
00007fc0  73 65 72 20 43 6f 6e 66  69 67 75 72 61 62 6c 65  |ser Configurable|
00007fd0  20 53 65 74 74 69 6e 67  73 20 49 6e 20 43 6f 6e  | Settings In Con|
00007fe0  66 69 67 20 46 69 6c 65  20 57 69 74 68 69 6e 20  |fig File Within |
00007ff0  21 43 61 73 73 65 74 74  65 20 41 70 70 6c 69 63  |!Cassette Applic|
00008000  61 74 69 6f 6e 2e 0d 23  32 52 f4 20 2a 2a 2a 2a  |ation..#2R. ****|
00008010  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008050  2a 2a 2a 2a 2a 2a 2a 2a  0d 23 3c 14 dd 20 f2 5f  |********.#<.. ._|
00008060  52 65 61 64 55 73 65 72  44 61 74 61 0d 23 46 33  |ReadUserData.#F3|
00008070  20 20 20 44 61 74 61 46  69 6c 65 25 3d 8e 22 3c  |   DataFile%=."<|
00008080  43 61 73 73 65 74 74 65  24 44 69 72 3e 2e 52 65  |Cassette$Dir>.Re|
00008090  73 6f 75 72 63 65 73 2e  43 6f 6e 66 69 67 22 0d  |sources.Config".|
000080a0  23 50 18 20 20 20 e7 20  44 61 74 61 46 69 6c 65  |#P.   . DataFile|
000080b0  25 3d 30 20 8c 20 e1 0d  23 5a 17 20 20 20 56 65  |%=0 . ..#Z.   Ve|
000080c0  72 25 3d 9a 23 44 61 74  61 46 69 6c 65 25 0d 23  |r%=.#DataFile%.#|
000080d0  64 1a 20 20 20 e8 20 23  44 61 74 61 46 69 6c 65  |d.   . #DataFile|
000080e0  25 2c 4e 6c 71 4f 4e 24  0d 23 6e 1b 20 20 20 e8  |%,NlqON$.#n.   .|
000080f0  20 23 44 61 74 61 46 69  6c 65 25 2c 4e 6c 71 4f  | #DataFile%,NlqO|
00008100  46 46 24 0d 23 78 1f 20  20 20 e8 20 23 44 61 74  |FF$.#x.   . #Dat|
00008110  61 46 69 6c 65 25 2c 46  6f 72 6d 4c 65 6e 67 74  |aFile%,FormLengt|
00008120  68 24 0d 23 82 27 20 20  20 e8 20 23 44 61 74 61  |h$.#.'   . #Data|
00008130  46 69 6c 65 25 2c 53 65  6c 65 63 74 65 64 50 72  |File%,SelectedPr|
00008140  69 6e 74 65 72 49 63 6f  6e 0d 23 8c 13 20 20 20  |interIcon.#..   |
00008150  d9 20 23 44 61 74 61 46  69 6c 65 25 0d 23 96 44  |. #DataFile%.#.D|
00008160  20 20 20 e7 20 56 65 72  25 3c 4c 61 74 65 73 74  |   . Ver%<Latest|
00008170  56 65 72 25 20 8c 20 85  20 31 30 30 30 2c 22 49  |Ver% . . 1000,"I|
00008180  6e 63 6f 6d 70 61 74 69  62 6c 65 20 43 6f 6e 66  |ncompatible Conf|
00008190  69 67 75 72 61 74 69 6f  6e 20 46 69 6c 65 2e 22  |iguration File."|
000081a0  0d 23 a0 5b 20 20 20 e7  20 53 65 6c 65 63 74 65  |.#.[   . Selecte|
000081b0  64 50 72 69 6e 74 65 72  49 63 6f 6e 3d 31 35 20  |dPrinterIcon=15 |
000081c0  8c 20 53 65 6c 65 63 74  65 64 50 72 69 6e 74 65  |. SelectedPrinte|
000081d0  72 49 63 6f 6e 3d 35 20  3a 20 f4 20 46 75 64 67  |rIcon=5 : . Fudg|
000081e0  65 20 66 6f 72 20 74 65  6d 70 6c 61 74 65 20 63  |e for template c|
000081f0  68 61 6e 67 65 20 2d 20  53 74 75 0d 23 aa 2d 20  |hange - Stu.#.- |
00008200  20 20 f2 5f 53 65 74 49  63 6f 6e 54 65 78 74 28  |  ._SetIconText(|
00008210  32 30 2c 4f 70 74 69 6f  6e 73 25 2c 46 6f 72 6d  |20,Options%,Form|
00008220  4c 65 6e 67 74 68 24 29  0d 23 b4 1c 20 20 20 f2  |Length$).#..   .|
00008230  5f 52 65 64 72 61 77 28  4f 70 74 69 6f 6e 73 25  |_Redraw(Options%|
00008240  2c 32 30 29 0d 23 be 28  20 20 20 f2 5f 53 65 74  |,20).#.(   ._Set|
00008250  49 63 6f 6e 54 65 78 74  28 31 32 2c 4f 70 74 69  |IconText(12,Opti|
00008260  6f 6e 73 25 2c 4e 6c 71  4f 4e 24 29 0d 23 c8 1c  |ons%,NlqON$).#..|
00008270  20 20 20 f2 5f 52 65 64  72 61 77 28 4f 70 74 69  |   ._Redraw(Opti|
00008280  6f 6e 73 25 2c 31 32 29  0d 23 d2 29 20 20 20 f2  |ons%,12).#.)   .|
00008290  5f 53 65 74 49 63 6f 6e  54 65 78 74 28 31 36 2c  |_SetIconText(16,|
000082a0  4f 70 74 69 6f 6e 73 25  2c 4e 6c 71 4f 46 46 24  |Options%,NlqOFF$|
000082b0  29 0d 23 dc 1c 20 20 20  f2 5f 52 65 64 72 61 77  |).#..   ._Redraw|
000082c0  28 4f 70 74 69 6f 6e 73  25 2c 31 36 29 0d 23 e6  |(Options%,16).#.|
000082d0  3e 20 20 20 f2 5f 53 65  74 49 63 6f 6e 54 65 78  |>   ._SetIconTex|
000082e0  74 28 34 35 2c 4d 61 69  6e 25 2c 50 44 72 69 76  |t(45,Main%,PDriv|
000082f0  65 72 24 28 53 65 6c 65  63 74 65 64 50 72 69 6e  |er$(SelectedPrin|
00008300  74 65 72 49 63 6f 6e 2b  31 29 29 0d 23 f0 19 20  |terIcon+1)).#.. |
00008310  20 20 f2 5f 52 65 64 72  61 77 28 4d 61 69 6e 25  |  ._Redraw(Main%|
00008320  2c 34 35 29 0d 23 fa 35  20 20 20 f2 5f 53 65 6c  |,45).#.5   ._Sel|
00008330  65 63 74 49 63 6f 6e 28  4f 70 74 69 6f 6e 73 25  |ectIcon(Options%|
00008340  2c 30 2c 53 65 6c 65 63  74 65 64 50 72 69 6e 74  |,0,SelectedPrint|
00008350  65 72 49 63 6f 6e 3d 30  29 0d 24 04 35 20 20 20  |erIcon=0).$.5   |
00008360  f2 5f 53 65 6c 65 63 74  49 63 6f 6e 28 4f 70 74  |._SelectIcon(Opt|
00008370  69 6f 6e 73 25 2c 31 2c  53 65 6c 65 63 74 65 64  |ions%,1,Selected|
00008380  50 72 69 6e 74 65 72 49  63 6f 6e 3d 31 29 0d 24  |PrinterIcon=1).$|
00008390  0e 35 20 20 20 f2 5f 53  65 6c 65 63 74 49 63 6f  |.5   ._SelectIco|
000083a0  6e 28 4f 70 74 69 6f 6e  73 25 2c 35 2c 53 65 6c  |n(Options%,5,Sel|
000083b0  65 63 74 65 64 50 72 69  6e 74 65 72 49 63 6f 6e  |ectedPrinterIcon|
000083c0  3d 35 29 0d 24 18 05 e1  0d 24 22 05 3a 0d 24 2c  |=5).$....$".:.$,|
000083d0  27 dd 20 f2 5f 53 65 6c  65 63 74 49 63 6f 6e 28  |'. ._SelectIcon(|
000083e0  57 69 6e 64 6f 77 25 2c  49 63 6f 6e 25 2c 46 6c  |Window%,Icon%,Fl|
000083f0  61 67 25 29 0d 24 36 17  20 20 20 42 6c 6f 63 6b  |ag%).$6.   Block|
00008400  25 21 30 3d 57 69 6e 64  6f 77 25 0d 24 40 15 20  |%!0=Window%.$@. |
00008410  20 20 42 6c 6f 63 6b 25  21 34 3d 49 63 6f 6e 25  |  Block%!4=Icon%|
00008420  0d 24 4a 1e 20 20 20 42  6c 6f 63 6b 25 21 38 3d  |.$J.   Block%!8=|
00008430  28 2d 31 2a 46 6c 61 67  25 29 3c 3c 32 31 0d 24  |(-1*Flag%)<<21.$|
00008440  54 16 20 20 20 42 6c 6f  63 6b 25 21 31 32 3d 31  |T.   Block%!12=1|
00008450  3c 3c 32 31 0d 24 5e 25  20 20 20 c8 99 20 22 57  |<<21.$^%   .. "W|
00008460  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
00008470  22 2c 2c 42 6c 6f 63 6b  25 0d 24 68 05 e1 0d 24  |",,Block%.$h...$|
00008480  72 05 3a 0d 24 7c 5e f4  20 2a 2a 2a 2a 2a 2a 2a  |r.:.$|^. *******|
00008490  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000084e0  2a 0d 24 86 5e f4 20 54  68 69 73 20 54 61 6b 65  |*.$.^. This Take|
000084f0  73 20 41 20 27 4e 75 6d  65 72 69 63 27 20 53 74  |s A 'Numeric' St|
00008500  72 69 6e 67 2c 20 42 72  65 61 6b 73 20 69 74 20  |ring, Breaks it |
00008510  44 6f 77 6e 2c 20 41 6e  64 20 53 65 6e 64 73 20  |Down, And Sends |
00008520  54 68 65 20 56 61 6c 75  65 20 54 6f 20 54 68 65  |The Value To The|
00008530  20 4f 75 74 70 75 74 20  44 65 76 69 63 65 2e 0d  | Output Device..|
00008540  24 90 5e f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |$.^. ***********|
00008550  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008590  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 24 9a  |*************.$.|
000085a0  17 dd 20 f2 5f 53 65 6e  64 44 61 74 61 28 44 61  |.. ._SendData(Da|
000085b0  74 61 24 29 0d 24 a4 17  20 20 20 ea 20 46 69 6e  |ta$).$..   . Fin|
000085c0  69 73 68 25 2c 43 6f 75  6e 74 25 0d 24 ae 22 20  |ish%,Count%.$." |
000085d0  20 20 43 6f 75 6e 74 25  3d 30 20 3a 20 46 69 6e  |  Count%=0 : Fin|
000085e0  69 73 68 25 3d a9 28 44  61 74 61 24 29 0d 24 b8  |ish%=.(Data$).$.|
000085f0  47 20 20 20 44 61 74 61  24 3d 44 61 74 61 24 2b  |G   Data$=Data$+|
00008600  22 2c 22 20 3a 20 f4 20  54 68 69 73 20 69 73 20  |"," : . This is |
00008610  63 68 65 61 74 69 6e 67  2e 2e 2e 53 65 65 20 57  |cheating...See W|
00008620  48 49 4c 45 20 43 6f 6e  64 69 74 69 6f 6e 21 21  |HILE Condition!!|
00008630  21 21 21 21 0d 24 c2 08  20 20 20 f5 0d 24 cc 11  |!!!!.$..   ..$..|
00008640  20 20 20 20 20 20 53 75  62 24 3d 22 22 0d 24 d6  |      Sub$="".$.|
00008650  14 20 20 20 20 20 20 50  6f 69 6e 74 65 72 25 3d  |.      Pointer%=|
00008660  31 0d 24 e0 24 20 20 20  20 20 20 c8 95 20 c1 44  |1.$.$      .. .D|
00008670  61 74 61 24 2c 50 6f 69  6e 74 65 72 25 2c 31 29  |ata$,Pointer%,1)|
00008680  3c 3e 22 2c 22 0d 24 ea  29 20 20 20 20 20 20 20  |<>",".$.)       |
00008690  20 20 53 75 62 24 3d 53  75 62 24 2b c1 44 61 74  |  Sub$=Sub$+.Dat|
000086a0  61 24 2c 50 6f 69 6e 74  65 72 25 2c 31 29 0d 24  |a$,Pointer%,1).$|
000086b0  f4 18 20 20 20 20 20 20  20 20 20 50 6f 69 6e 74  |..         Point|
000086c0  65 72 25 2b 3d 31 0d 24  fe 0b 20 20 20 20 20 20  |er%+=1.$..      |
000086d0  ce 0d 25 08 22 20 20 20  20 20 20 44 61 74 61 24  |..%."      Data$|
000086e0  3d c1 44 61 74 61 24 2c  50 6f 69 6e 74 65 72 25  |=.Data$,Pointer%|
000086f0  2b 31 29 0d 25 12 17 20  20 20 20 20 20 f1 20 bd  |+1).%..      . .|
00008700  28 bb 28 53 75 62 24 29  29 3b 0d 25 1c 21 20 20  |(.(Sub$));.%.!  |
00008710  20 20 20 20 43 6f 75 6e  74 25 3d 43 6f 75 6e 74  |    Count%=Count|
00008720  25 2b a9 28 53 75 62 24  29 2b 31 0d 25 26 18 20  |%+.(Sub$)+1.%&. |
00008730  20 20 fd 20 43 6f 75 6e  74 25 3e 3d 46 69 6e 69  |  . Count%>=Fini|
00008740  73 68 25 0d 25 30 05 e1  0d 25 3a 05 3a 0d 25 44  |sh%.%0...%:.:.%D|
00008750  67 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |g***************|
00008760  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000087b0  2a 2a 2a 2a 0d 25 4e 65  f4 20 49 66 20 54 68 65  |****.%Ne. If The|
000087c0  20 50 72 6f 67 72 61 6d  20 57 61 73 20 53 74 61  | Program Was Sta|
000087d0  72 74 65 64 20 42 79 20  44 6f 75 62 6c 65 20 43  |rted By Double C|
000087e0  6c 69 63 6b 69 6e 67 20  4f 6e 20 41 20 26 42 30  |licking On A &B0|
000087f0  46 20 46 69 6c 65 20 54  68 65 6e 20 4c 6f 61 64  |F File Then Load|
00008800  20 54 68 65 20 46 69 6c  65 20 41 6e 64 20 44 69  | The File And Di|
00008810  73 70 6c 61 79 20 49 74  2e 0d 25 58 67 2a 2a 2a  |splay It..%Xg***|
00008820  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008880  0d 25 62 1a dd 20 f2 5f  4c 6f 61 64 46 69 6c 65  |.%b.. ._LoadFile|
00008890  49 66 52 65 71 75 69 72  65 64 0d 25 6c 20 20 20  |IfRequired.%l   |
000088a0  20 c8 99 20 22 4f 53 5f  47 65 74 45 6e 76 22 20  | .. "OS_GetEnv" |
000088b0  b8 20 43 6f 6d 6d 61 6e  64 24 0d 25 76 1e 20 20  |. Command$.%v.  |
000088c0  20 49 25 3d a7 43 6f 6d  6d 61 6e 64 24 2c 22 20  | I%=.Command$," |
000088d0  2d 4c 6f 61 64 20 22 29  0d 25 80 0d 20 20 20 e7  |-Load ").%..   .|
000088e0  20 49 25 20 8c 0d 25 8a  18 20 20 20 20 20 20 49  | I% ..%..      I|
000088f0  25 2b 3d a9 22 20 2d 4c  6f 61 64 20 22 0d 25 94  |%+=." -Load ".%.|
00008900  28 20 20 20 20 20 20 c8  95 20 c1 43 6f 6d 6d 61  |(      .. .Comma|
00008910  6e 64 24 2c 49 25 2c 31  29 3d 22 20 22 3a 49 25  |nd$,I%,1)=" ":I%|
00008920  2b 3d 31 3a ce 0d 25 9e  21 20 20 20 20 20 20 46  |+=1:..%.!      F|
00008930  69 6c 65 4e 61 6d 65 24  3d c1 43 6f 6d 6d 61 6e  |ileName$=.Comman|
00008940  64 24 2c 49 25 29 0d 25  a8 35 20 20 20 20 20 20  |d$,I%).%.5      |
00008950  46 69 6c 65 4e 61 6d 65  24 3d c0 46 69 6c 65 4e  |FileName$=.FileN|
00008960  61 6d 65 24 2c a7 46 69  6c 65 4e 61 6d 65 24 2b  |ame$,.FileName$+|
00008970  22 20 22 2c 22 20 22 29  2d 31 29 0d 25 b2 4c 20  |" "," ")-1).%.L |
00008980  20 20 20 20 20 e7 20 46  69 6c 65 4e 61 6d 65 24  |     . FileName$|
00008990  3c 3e 22 22 20 8c 20 53  74 61 72 74 57 69 74 68  |<>"" . StartWith|
000089a0  4c 6f 61 64 3d b9 20 3a  20 f2 5f 44 6f 41 63 74  |Load=. : ._DoAct|
000089b0  75 61 6c 4c 6f 61 64 54  68 69 6e 67 28 46 69 6c  |ualLoadThing(Fil|
000089c0  65 4e 61 6d 65 24 29 0d  25 bc 08 20 20 20 cc 0d  |eName$).%..   ..|
000089d0  25 c6 19 20 20 20 20 20  20 53 74 61 72 74 57 69  |%..      StartWi|
000089e0  74 68 4c 6f 61 64 3d a3  0d 25 d0 08 20 20 20 cd  |thLoad=..%..   .|
000089f0  0d 25 da 05 e1 0d 25 e4  05 3a 0d 25 ee 67 2a 2a  |.%....%..:.%.g**|
00008a00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008a60  2a 0d 25 f8 65 f4 20 53  65 74 73 20 54 68 65 20  |*.%.e. Sets The |
00008a70  53 61 76 65 20 4e 61 6d  65 20 49 6e 20 54 68 65  |Save Name In The|
00008a80  20 53 61 76 65 20 49 63  6f 6e 20 54 6f 20 54 68  | Save Icon To Th|
00008a90  65 20 46 75 6c 6c 20 50  61 74 68 6e 61 6d 65 20  |e Full Pathname |
00008aa0  4f 66 20 54 68 65 20 4c  6f 61 64 65 64 20 46 69  |Of The Loaded Fi|
00008ab0  6c 65 2c 20 41 6e 64 20  54 68 65 6e 20 4c 6f 61  |le, And Then Loa|
00008ac0  64 73 20 49 74 2e 0d 26  02 67 2a 2a 2a 2a 2a 2a  |ds It..&.g******|
00008ad0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008b20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 26 0c  |*************.&.|
00008b30  24 dd 20 f2 5f 44 6f 41  63 74 75 61 6c 4c 6f 61  |$. ._DoActualLoa|
00008b40  64 54 68 69 6e 67 28 46  69 6c 65 4e 61 6d 65 24  |dThing(FileName$|
00008b50  29 0d 26 16 27 20 20 20  f2 5f 53 65 74 49 63 6f  |).&.'   ._SetIco|
00008b60  6e 54 65 78 74 28 34 2c  53 61 76 65 25 2c 46 69  |nText(4,Save%,Fi|
00008b70  6c 65 4e 61 6d 65 24 29  0d 26 20 1c 20 20 20 f2  |leName$).& .   .|
00008b80  5f 4c 6f 61 64 44 61 74  61 28 46 69 6c 65 4e 61  |_LoadData(FileNa|
00008b90  6d 65 24 29 0d 26 2a 1a  20 20 20 f2 5f 4f 70 65  |me$).&*.   ._Ope|
00008ba0  6e 4d 61 69 6e 57 69 6e  64 6f 77 28 a3 29 0d 26  |nMainWindow(.).&|
00008bb0  34 05 e1 0d 26 3e 05 3a  0d 26 48 44 2a 2a 2a 2a  |4...&>.:.&HD****|
00008bc0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008bf0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 26 52 42  |************.&RB|
00008c00  f4 20 49 6e 69 74 69 61  6c 69 73 65 73 20 55 73  |. Initialises Us|
00008c10  65 72 20 53 70 72 69 74  65 20 41 72 65 61 2c 20  |er Sprite Area, |
00008c20  61 6e 64 20 4c 6f 61 64  73 20 73 70 72 69 74 65  |and Loads sprite|
00008c30  20 66 69 6c 65 20 69 6e  74 6f 20 69 74 2e 0d 26  | file into it..&|
00008c40  5c 3c f4 20 4c 6f 61 64  20 73 70 72 69 74 65 20  |\<. Load sprite |
00008c50  66 69 6c 65 20 61 70 70  72 6f 70 72 69 61 74 65  |file appropriate|
00008c60  20 74 6f 20 63 75 72 72  65 6e 74 20 6d 6f 64 65  | to current mode|
00008c70  20 76 69 61 20 65 78 74  6e 2e 0d 26 66 44 2a 2a  | via extn..&fD**|
00008c80  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00008cb0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 26  |**************.&|
00008cc0  70 1a dd 20 f2 5f 49 6e  69 74 69 61 6c 69 73 65  |p.. ._Initialise|
00008cd0  5f 53 70 72 69 74 65 73  0d 26 7a 22 20 20 20 ea  |_Sprites.&z"   .|
00008ce0  20 79 65 69 67 66 61 63  74 6f 72 25 2c 65 78 74  | yeigfactor%,ext|
00008cf0  24 2c 66 68 61 6e 64 6c  65 25 0d 26 84 08 20 20  |$,fhandle%.&..  |
00008d00  20 3a 0d 26 8e 17 20 20  20 e7 20 56 65 72 73 69  | :.&..   . Versi|
00008d10  6f 6e 3e 3d 33 30 30 20  8c 0d 26 98 64 20 20 20  |on>=300 ..&.d   |
00008d20  20 20 20 c8 99 20 22 4f  53 5f 52 65 61 64 4d 6f  |   .. "OS_ReadMo|
00008d30  64 65 56 61 72 69 61 62  6c 65 22 2c 2d 31 2c 35  |deVariable",-1,5|
00008d40  20 b8 20 2c 2c 79 65 69  67 66 61 63 74 6f 72 25  | . ,,yeigfactor%|
00008d50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
00008d60  f4 20 52 65 61 64 20 74  68 65 20 63 75 72 72 65  |. Read the curre|
00008d70  6e 74 20 6d 6f 64 65 20  72 61 74 69 6f 0d 26 a2  |nt mode ratio.&.|
00008d80  72 20 20 20 20 20 20 65  78 74 24 20 3d 20 22 32  |r      ext$ = "2|
00008d90  22 2b c3 28 31 3c 3c 79  65 69 67 66 61 63 74 6f  |"+.(1<<yeigfacto|
00008da0  72 25 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |r%)             |
00008db0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00008dc0  20 3a 20 f4 20 54 72 61  6e 73 6c 61 74 65 20 72  | : . Translate r|
00008dd0  61 74 69 6f 20 69 6e 74  6f 20 61 20 66 69 6c 65  |atio into a file|
00008de0  20 6e 61 6d 65 20 65 78  74 65 6e 73 69 6f 6e 0d  | name extension.|
00008df0  26 ac 6b 20 20 20 20 20  20 66 68 61 6e 64 6c 65  |&.k      fhandle|
00008e00  25 3d 8e 28 22 3c 43 61  73 73 65 74 74 65 24 44  |%=.("<Cassette$D|
00008e10  69 72 3e 2e 52 65 73 6f  75 72 63 65 73 2e 53 70  |ir>.Resources.Sp|
00008e20  72 69 74 65 73 22 2b 65  78 74 24 29 20 20 20 20  |rites"+ext$)    |
00008e30  20 3a 20 f4 20 41 74 74  65 6d 70 74 20 74 6f 20  | : . Attempt to |
00008e40  6c 6f 63 61 74 65 20 61  20 66 69 6c 65 20 6f 66  |locate a file of|
00008e50  20 74 68 61 74 20 6e 61  6d 65 0d 26 b6 18 20 20  | that name.&..  |
00008e60  20 20 20 20 e7 20 66 68  61 6e 64 6c 65 25 3d 30  |    . fhandle%=0|
00008e70  20 8c 0d 26 c0 14 20 20  20 20 20 20 20 20 20 65  | ..&..         e|
00008e80  78 74 24 3d 22 22 0d 26  ca 39 20 20 20 20 20 20  |xt$="".&.9      |
00008e90  20 20 20 66 68 61 6e 64  6c 65 25 3d 8e 22 3c 43  |   fhandle%=."<C|
00008ea0  61 73 73 65 74 74 65 24  44 69 72 3e 2e 52 65 73  |assette$Dir>.Res|
00008eb0  6f 75 72 63 65 73 2e 53  70 72 69 74 65 73 22 0d  |ources.Sprites".|
00008ec0  26 d4 6c 20 20 20 20 20  20 cd 20 20 20 20 20 20  |&.l      .      |
00008ed0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00008f00  20 20 3a 20 f4 20 49 66  20 6e 6f 74 20 70 72 65  |  : . If not pre|
00008f10  73 65 6e 74 20 6c 6f 63  61 74 65 20 64 65 66 61  |sent locate defa|
00008f20  75 6c 74 20 73 70 72 69  74 65 73 0d 26 de 51 20  |ult sprites.&.Q |
00008f30  20 20 20 20 20 e7 20 66  68 61 6e 64 6c 65 25 3d  |     . fhandle%=|
00008f40  30 20 8c 20 85 20 30 2c  22 55 6e 61 62 6c 65 20  |0 . . 0,"Unable |
00008f50  74 6f 20 6c 6f 63 61 74  65 20 64 65 66 61 75 6c  |to locate defaul|
00008f60  74 20 73 70 72 69 74 65  20 66 69 6c 65 20 66 6f  |t sprite file fo|
00008f70  72 20 21 43 61 73 73 65  74 74 65 22 0d 26 e8 6b  |r !Cassette".&.k|
00008f80  20 20 20 20 20 20 46 69  6c 65 4c 65 6e 67 74 68  |      FileLength|
00008f90  25 3d 34 2b 28 a2 23 66  68 61 6e 64 6c 65 25 29  |%=4+(.#fhandle%)|
00008fa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00008fc0  20 3a 20 f4 20 47 65 74  20 74 68 65 20 6c 65 6e  | : . Get the len|
00008fd0  67 74 68 20 6f 66 20 74  68 65 20 73 70 72 69 74  |gth of the sprit|
00008fe0  65 73 20 66 69 6c 65 0d  26 f2 15 20 20 20 20 20  |es file.&..     |
00008ff0  20 d9 20 23 66 68 61 6e  64 6c 65 25 0d 26 fc 08  | . #fhandle%.&..|
00009000  20 20 20 cd 0d 27 06 0e  20 20 20 65 78 74 24 3d  |   ..'..   ext$=|
00009010  22 22 0d 27 10 08 20 20  20 3a 0d 27 1a 61 20 20  |"".'..   :.'.a  |
00009020  20 de 20 53 70 72 69 74  65 41 72 65 61 25 20 46  | . SpriteArea% F|
00009030  69 6c 65 4c 65 6e 67 74  68 25 20 20 20 20 20 20  |ileLength%      |
00009040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009050  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 f4 20  |            : . |
00009060  43 72 65 61 74 65 20 74  68 65 20 75 73 65 72 20  |Create the user |
00009070  73 70 72 69 74 65 20 61  72 65 61 0d 27 24 65 20  |sprite area.'$e |
00009080  20 20 53 70 72 69 74 65  41 72 65 61 25 21 30 20  |  SpriteArea%!0 |
00009090  20 3d 20 46 69 6c 65 4c  65 6e 67 74 68 25 20 20  | = FileLength%  |
000090a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000090b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3a  |               :|
000090c0  20 f4 20 61 6e 64 20 6c  6f 61 64 20 74 68 65 20  | . and load the |
000090d0  73 70 72 69 74 65 73 20  69 6e 74 6f 20 69 74 2e  |sprites into it.|
000090e0  0d 27 2e 1a 20 20 20 53  70 72 69 74 65 41 72 65  |.'..   SpriteAre|
000090f0  61 25 21 34 20 20 3d 20  20 30 0d 27 38 1a 20 20  |a%!4  =  0.'8.  |
00009100  20 53 70 72 69 74 65 41  72 65 61 25 21 38 20 20  | SpriteArea%!8  |
00009110  3d 20 31 36 0d 27 42 1a  20 20 20 53 70 72 69 74  |= 16.'B.   Sprit|
00009120  65 41 72 65 61 25 21 31  32 20 3d 20 31 36 0d 27  |eArea%!12 = 16.'|
00009130  4c 50 20 20 20 c8 99 20  22 4f 53 5f 53 70 72 69  |LP   .. "OS_Spri|
00009140  74 65 4f 70 22 2c 26 31  30 41 2c 53 70 72 69 74  |teOp",&10A,Sprit|
00009150  65 41 72 65 61 25 2c 22  3c 43 61 73 73 65 74 74  |eArea%,"<Cassett|
00009160  65 24 44 69 72 3e 2e 52  65 73 6f 75 72 63 65 73  |e$Dir>.Resources|
00009170  2e 53 70 72 69 74 65 73  22 2b 65 78 74 24 0d 27  |.Sprites"+ext$.'|
00009180  56 05 e1 0d 27 60 05 3a  0d 27 6a 2f 2a 2a 2a 2a  |V...'`.:.'j/****|
00009190  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000091b0  2a 2a 2a 2a 2a 2a 2a 0d  27 74 2d f4 20 43 6f 6d  |*******.'t-. Com|
000091c0  6d 75 6e 69 63 61 74 65  20 77 69 74 68 20 52 69  |municate with Ri|
000091d0  73 63 4f 53 20 50 72 69  6e 74 65 72 20 44 72 69  |scOS Printer Dri|
000091e0  76 65 72 2e 0d 27 7e 2f  2a 2a 2a 2a 2a 2a 2a 2a  |ver..'~/********|
000091f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00009210  2a 2a 2a 0d 27 88 19 dd  20 f2 5f 50 72 69 6e 74  |***.'... ._Print|
00009220  47 72 61 70 68 69 63 73  4d 6f 64 65 0d 27 92 34  |GraphicsMode.'.4|
00009230  20 20 20 f4 20 43 68 65  63 6b 20 46 6f 72 20 50  |   . Check For P|
00009240  72 65 73 65 6e 63 65 20  4f 66 20 50 72 69 6e 74  |resence Of Print|
00009250  65 72 44 72 69 76 65 72  20 4d 6f 64 75 6c 65 73  |erDriver Modules|
00009260  0d 27 9c 3c 20 20 20 c8  99 20 22 58 4f 53 5f 53  |.'.<   .. "XOS_S|
00009270  57 49 4e 75 6d 62 65 72  46 72 6f 6d 53 74 72 69  |WINumberFromStri|
00009280  6e 67 22 2c 2c 22 50 44  72 69 76 65 72 5f 49 6e  |ng",,"PDriver_In|
00009290  66 6f 22 20 b8 20 3b 46  6c 61 67 25 0d 27 a6 4a  |fo" . ;Flag%.'.J|
000092a0  20 20 20 e7 20 46 6c 61  67 25 20 80 20 31 20 8c  |   . Flag% . 1 .|
000092b0  20 85 20 32 30 30 31 2c  22 4e 6f 20 50 72 69 6e  | . 2001,"No Prin|
000092c0  74 65 72 20 44 72 69 76  65 72 2c 20 50 6c 65 61  |ter Driver, Plea|
000092d0  73 65 20 4c 6f 61 64 20  61 6e 64 20 54 72 79 20  |se Load and Try |
000092e0  41 67 61 69 6e 22 0d 27  b0 08 20 20 20 3a 0d 27  |Again".'..   :.'|
000092f0  ba 55 20 20 20 f4 20 49  66 20 52 69 73 63 4f 53  |.U   . If RiscOS|
00009300  20 33 2e 78 20 4d 61 63  68 69 6e 65 2c 20 4d 6f  | 3.x Machine, Mo|
00009310  64 75 6c 65 73 20 61 72  65 20 61 6c 77 61 79 73  |dules are always|
00009320  20 69 6e 20 52 4f 4d 2c  20 62 75 74 20 6e 65 65  | in ROM, but nee|
00009330  64 20 74 6f 20 62 65 20  69 6e 69 74 69 61 6c 69  |d to be initiali|
00009340  73 65 64 0d 27 c4 40 20  20 20 f4 20 62 79 20 74  |sed.'.@   . by t|
00009350  68 65 20 21 50 72 69 6e  74 65 72 73 20 61 70 70  |he !Printers app|
00009360  6c 69 63 61 74 69 6f 6e  20 62 65 66 6f 72 65 20  |lication before |
00009370  70 72 69 6e 74 69 6e 67  20 63 61 6e 20 62 65 67  |printing can beg|
00009380  69 6e 2e 0d 27 ce 22 20  20 20 c8 99 20 22 58 50  |in..'."   .. "XP|
00009390  44 72 69 76 65 72 5f 49  6e 66 6f 22 20 b8 20 3b  |Driver_Info" . ;|
000093a0  46 6c 61 67 25 0d 27 d8  60 20 20 20 e7 20 46 6c  |Flag%.'.`   . Fl|
000093b0  61 67 25 20 80 20 31 20  8c 20 85 20 32 30 30 31  |ag% . 1 . . 2001|
000093c0  2c 22 55 73 65 20 21 50  72 69 6e 74 65 72 73 20  |,"Use !Printers |
000093d0  74 6f 20 73 65 6c 65 63  74 20 79 6f 75 72 20 72  |to select your r|
000093e0  65 71 75 69 72 65 64 20  70 72 69 6e 74 65 72 20  |equired printer |
000093f0  64 72 69 76 65 72 20 61  6e 64 20 74 72 79 20 61  |driver and try a|
00009400  67 61 69 6e 22 0d 27 e2  08 20 20 20 3a 0d 27 ec  |gain".'..   :.'.|
00009410  37 20 20 20 f4 20 43 68  65 63 6b 20 69 66 20 74  |7   . Check if t|
00009420  68 65 20 66 6f 6e 74 20  6d 61 6e 61 67 65 72 20  |he font manager |
00009430  77 69 6c 6c 20 73 75 70  70 6f 72 74 20 4b 65 72  |will support Ker|
00009440  6e 69 6e 67 0d 27 f6 3e  20 20 20 c8 99 20 22 58  |ning.'.>   .. "X|
00009450  4f 53 5f 53 57 49 4e 75  6d 62 65 72 46 72 6f 6d  |OS_SWINumberFrom|
00009460  53 74 72 69 6e 67 22 2c  2c 22 46 6f 6e 74 5f 53  |String",,"Font_S|
00009470  63 61 6e 53 74 72 69 6e  67 22 20 b8 20 46 6c 61  |canString" . Fla|
00009480  67 25 0d 28 00 3a 20 20  20 e7 20 46 6c 61 67 25  |g%.(.:   . Flag%|
00009490  20 80 20 31 20 8c 20 4e  65 77 46 6f 6e 74 4d 61  | . 1 . NewFontMa|
000094a0  6e 61 67 65 72 25 3d a3  20 8b 20 4e 65 77 46 6f  |nager%=. . NewFo|
000094b0  6e 74 4d 61 6e 61 67 65  72 25 3d b9 0d 28 0a 05  |ntManager%=..(..|
000094c0  3a 0d 28 14 1b 20 20 20  ea 20 50 72 69 6e 74 46  |:.(..   . PrintF|
000094d0  69 6c 65 25 2c 4f 6c 64  4a 6f 62 25 0d 28 1e 1d  |ile%,OldJob%.(..|
000094e0  20 20 20 ea 20 57 68 69  74 65 25 2c 20 50 61 67  |   . White%, Pag|
000094f0  65 54 6f 50 72 69 6e 74  25 0d 28 28 29 20 20 20  |eToPrint%.(()   |
00009500  57 68 69 74 65 25 3d 26  46 46 46 46 46 46 30 30  |White%=&FFFFFF00|
00009510  20 3a 20 45 25 3d 30 20  3a 20 55 73 61 67 65 25  | : E%=0 : Usage%|
00009520  3d 30 0d 28 32 40 20 20  20 f4 20 43 72 65 61 74  |=0.(2@   . Creat|
00009530  65 20 73 74 6f 72 61 67  65 20 73 70 61 63 65 20  |e storage space |
00009540  66 6f 72 20 63 6c 69 70  70 65 64 20 66 6c 61 67  |for clipped flag|
00009550  73 20 64 75 72 69 6e 67  20 70 72 69 6e 74 69 6e  |s during printin|
00009560  67 2e 0d 28 3c 4b 20 20  20 43 6c 69 70 70 65 64  |g..(<K   Clipped|
00009570  41 72 72 61 79 25 3d 43  6c 69 70 70 65 64 41 72  |Array%=ClippedAr|
00009580  72 61 79 25 20 3a 20 e7  20 43 6c 69 70 70 65 64  |ray% : . Clipped|
00009590  41 72 72 61 79 25 3d 30  20 8c 20 de 20 43 6c 69  |Array%=0 . . Cli|
000095a0  70 70 65 64 41 72 72 61  79 25 20 34 30 0d 28 46  |ppedArray% 40.(F|
000095b0  34 20 20 20 e3 20 54 65  6d 70 25 3d 30 20 b8 20  |4   . Temp%=0 . |
000095c0  34 30 20 88 34 20 3a 20  43 6c 69 70 70 65 64 41  |40 .4 : ClippedA|
000095d0  72 72 61 79 25 21 54 65  6d 70 25 3d 30 20 3a 20  |rray%!Temp%=0 : |
000095e0  ed 0d 28 50 08 20 20 20  3a 0d 28 5a 5f 20 20 20  |..(P.   :.(Z_   |
000095f0  f4 20 4f 70 65 6e 20 44  65 73 74 69 6e 61 74 69  |. Open Destinati|
00009600  6f 6e 20 66 69 6c 65 20  61 6e 64 20 73 65 74 20  |on file and set |
00009610  75 70 20 6c 6f 63 61 6c  20 65 72 72 6f 72 20 68  |up local error h|
00009620  61 6e 64 6c 65 72 20 74  68 61 74 20 77 69 6c 6c  |andler that will|
00009630  20 63 6c 6f 73 65 20 69  74 20 61 67 61 69 6e 20  | close it again |
00009640  6f 6e 20 65 72 72 6f 72  0d 28 64 1d 20 20 20 50  |on error.(d.   P|
00009650  72 69 6e 74 46 69 6c 65  25 3d ae 22 70 72 69 6e  |rintFile%=."prin|
00009660  74 65 72 3a 22 0d 28 6e  0a 20 20 20 ea 20 85 0d  |ter:".(n.   . ..|
00009670  28 78 55 20 20 20 ee 20  85 20 ea 20 3a 20 f7 20  |(xU   . . . : . |
00009680  85 20 3a 20 45 72 72 24  3d 49 6e 24 2b 22 2d 22  |. : Err$=In$+"-"|
00009690  2b c3 28 49 6e 25 29 2b  22 20 3a 20 22 2b f6 24  |+.(In%)+" : "+.$|
000096a0  2b 22 2d 22 2b c3 28 9e  29 20 3a 20 d9 20 23 50  |+"-"+.(.) : . #P|
000096b0  72 69 6e 74 46 69 6c 65  25 20 3a 20 85 20 9e 2c  |rintFile% : . .,|
000096c0  45 72 72 24 0d 28 82 05  3a 0d 28 8c 7e 20 20 20  |Err$.(..:.(.~   |
000096d0  f4 20 53 74 61 72 74 20  75 70 20 61 20 70 72 69  |. Start up a pri|
000096e0  6e 74 20 6a 6f 62 20 66  6f 72 20 74 68 69 73 20  |nt job for this |
000096f0  66 69 6c 65 2c 20 72 65  6d 65 6d 62 65 72 69 6e  |file, rememberin|
00009700  67 20 74 68 65 20 68 61  6e 64 6c 65 20 6f 66 20  |g the handle of |
00009710  61 6e 79 20 70 72 65 76  69 6f 75 73 20 70 72 69  |any previous pri|
00009720  6e 74 20 6a 6f 62 2c 20  74 68 65 6e 20 73 65 74  |nt job, then set|
00009730  20 75 70 20 6c 6f 63 61  6c 20 65 72 72 6f 72 20  | up local error |
00009740  68 61 6e 64 6c 65 72 0d  28 96 45 20 20 20 c8 99  |handler.(.E   ..|
00009750  20 22 50 44 72 69 76 65  72 5f 53 65 6c 65 63 74  | "PDriver_Select|
00009760  4a 6f 62 22 2c 50 72 69  6e 74 46 69 6c 65 25 2c  |Job",PrintFile%,|
00009770  22 42 6f 66 66 69 6e 20  50 72 69 6e 74 20 4a 6f  |"Boffin Print Jo|
00009780  62 22 20 b8 20 4f 6c 64  4a 6f 62 25 0d 28 a0 18  |b" . OldJob%.(..|
00009790  20 20 20 c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |   .. "Hourglass|
000097a0  5f 4f 6e 22 0d 28 aa 0a  20 20 20 ea 20 85 0d 28  |_On".(..   . ..(|
000097b0  b4 88 20 20 20 ee 20 85  20 ea 20 3a 20 f7 20 85  |..   . . . : . .|
000097c0  20 3a 20 49 6e 25 3d 9e  20 3a 20 49 6e 24 3d f6  | : In%=. : In$=.|
000097d0  24 20 3a 20 c8 99 20 22  48 6f 75 72 67 6c 61 73  |$ : .. "Hourglas|
000097e0  73 5f 4f 66 66 22 20 3a  20 c8 99 20 22 50 44 72  |s_Off" : .. "PDr|
000097f0  69 76 65 72 5f 41 62 6f  72 74 4a 6f 62 22 2c 50  |iver_AbortJob",P|
00009800  72 69 6e 74 46 69 6c 65  25 20 3a 20 c8 99 20 22  |rintFile% : .. "|
00009810  50 44 72 69 76 65 72 5f  53 65 6c 65 63 74 4a 6f  |PDriver_SelectJo|
00009820  62 22 2c 4f 6c 64 4a 6f  62 25 20 3a 20 85 20 49  |b",OldJob% : . I|
00009830  6e 25 2c 49 6e 24 0d 28  be 05 3a 0d 28 c8 19 20  |n%,In$.(..:.(.. |
00009840  20 20 f4 20 53 74 61 72  74 20 70 72 69 6e 74 20  |  . Start print |
00009850  6c 6f 6f 70 0d 28 d2 1e  20 20 20 f2 5f 47 65 74  |loop.(..   ._Get|
00009860  44 6f 63 75 6d 65 6e 74  53 69 7a 65 28 42 6f 78  |DocumentSize(Box|
00009870  25 29 0d 28 dc 22 20 20  20 f2 5f 46 69 74 54 6f  |%).(."   ._FitTo|
00009880  50 61 67 65 28 48 65 69  67 68 74 25 2c 57 69 64  |Page(Height%,Wid|
00009890  74 68 25 29 0d 28 e6 05  3a 0d 28 f0 2b 20 20 20  |th%).(..:.(.+   |
000098a0  f4 20 53 65 74 20 55 70  20 54 6f 20 50 72 69 6e  |. Set Up To Prin|
000098b0  74 20 4a 75 73 74 20 4f  6e 65 20 52 65 63 74 61  |t Just One Recta|
000098c0  6e 67 6c 65 0d 28 fa 3e  20 20 20 c8 99 20 22 50  |ngle.(.>   .. "P|
000098d0  44 72 69 76 65 72 5f 47  69 76 65 52 65 63 74 61  |Driver_GiveRecta|
000098e0  6e 67 6c 65 22 2c 2c 42  6f 78 25 2c 4d 61 74 72  |ngle",,Box%,Matr|
000098f0  69 78 25 2c 4f 72 69 67  69 6e 25 2c 57 68 69 74  |ix%,Origin%,Whit|
00009900  65 25 0d 29 04 05 3a 0d  29 0e 18 20 20 20 f4 20  |e%.)..:.)..   . |
00009910  53 74 61 72 74 20 70 72  69 6e 74 69 6e 67 2e 0d  |Start printing..|
00009920  29 18 36 20 20 20 c8 99  20 22 50 44 72 69 76 65  |).6   .. "PDrive|
00009930  72 5f 44 72 61 77 50 61  67 65 22 2c 31 2c 42 6f  |r_DrawPage",1,Bo|
00009940  78 32 25 2c 30 2c 30 20  b8 20 43 6f 70 69 65 73  |x2%,0,0 . Copies|
00009950  4c 65 66 74 25 0d 29 22  15 20 20 20 c8 95 20 43  |Left%.)".   .. C|
00009960  6f 70 69 65 73 4c 65 66  74 25 0d 29 2c 1a 20 20  |opiesLeft%.),.  |
00009970  20 20 20 20 f2 5f 4d 69  6e 69 5f 57 49 4d 50 5f  |    ._Mini_WIMP_|
00009980  50 6f 6c 6c 0d 29 36 1c  20 20 20 20 20 20 f2 5f  |Poll.)6.      ._|
00009990  44 72 61 77 49 6e 6c 61  79 28 42 6f 78 32 25 29  |DrawInlay(Box2%)|
000099a0  0d 29 40 37 20 20 20 20  20 20 c8 99 20 22 50 44  |.)@7      .. "PD|
000099b0  72 69 76 65 72 5f 47 65  74 52 65 63 74 61 6e 67  |river_GetRectang|
000099c0  6c 65 22 2c 2c 42 6f 78  25 20 b8 20 43 6f 70 69  |le",,Box% . Copi|
000099d0  65 73 4c 65 66 74 25 0d  29 4a 08 20 20 20 ce 0d  |esLeft%.)J.   ..|
000099e0  29 54 05 3a 0d 29 5e 34  20 20 20 f4 20 50 72 69  |)T.:.)^4   . Pri|
000099f0  6e 74 69 6e 67 20 43 6f  6d 70 6c 65 74 65 2c 20  |nting Complete, |
00009a00  54 65 72 6d 69 6e 61 74  65 20 74 68 69 73 20 70  |Terminate this p|
00009a10  72 69 6e 74 20 6a 6f 62  0d 29 68 25 20 20 20 c8  |rint job.)h%   .|
00009a20  99 20 22 50 44 72 69 76  65 72 5f 45 6e 64 4a 6f  |. "PDriver_EndJo|
00009a30  62 22 2c 50 72 69 6e 74  46 69 6c 65 25 0d 29 72  |b",PrintFile%.)r|
00009a40  05 3a 0d 29 7c 38 20 20  20 f4 20 52 65 74 75 72  |.:.)|8   . Retur|
00009a50  6e 20 74 6f 20 74 68 65  20 66 69 72 73 74 20 6f  |n to the first o|
00009a60  66 20 6f 75 72 20 6c 6f  63 61 6c 20 65 72 72 6f  |f our local erro|
00009a70  72 20 68 61 6e 64 6c 65  72 73 0d 29 86 0a 20 20  |r handlers.)..  |
00009a80  20 f7 20 85 0d 29 90 05  3a 0d 29 9a 5a 20 20 20  | . ..)..:.).Z   |
00009a90  f4 20 41 6e 64 20 54 68  65 6e 20 67 6f 20 62 61  |. And Then go ba|
00009aa0  63 6b 20 74 6f 20 77 68  61 74 65 76 65 72 20 70  |ck to whatever p|
00009ab0  72 69 6e 74 20 6a 6f 62  20 77 61 73 20 61 63 74  |rint job was act|
00009ac0  69 76 65 20 28 69 66 20  61 6e 79 29 20 6f 6e 20  |ive (if any) on |
00009ad0  65 6e 74 72 79 20 74 6f  20 74 68 69 73 20 50 52  |entry to this PR|
00009ae0  4f 43 2e 0d 29 a4 19 20  20 20 c8 99 20 22 48 6f  |OC..)..   .. "Ho|
00009af0  75 72 67 6c 61 73 73 5f  4f 66 66 22 0d 29 ae 25  |urglass_Off".).%|
00009b00  20 20 20 c8 99 20 22 50  44 72 69 76 65 72 5f 53  |   .. "PDriver_S|
00009b10  65 6c 65 63 74 4a 6f 62  22 2c 4f 6c 64 4a 6f 62  |electJob",OldJob|
00009b20  25 0d 29 b8 05 3a 0d 29  c2 2d 20 20 20 f4 20 47  |%.)..:.).-   . G|
00009b30  6f 20 62 61 63 6b 20 74  6f 20 74 68 65 20 63 61  |o back to the ca|
00009b40  6c 6c 65 72 73 20 65 72  72 6f 72 20 68 61 6e 64  |llers error hand|
00009b50  6c 65 72 0d 29 cc 0a 20  20 20 f7 20 85 0d 29 d6  |ler.)..   . ..).|
00009b60  05 3a 0d 29 e0 23 20 20  20 f4 20 43 6c 6f 73 65  |.:.).#   . Close|
00009b70  20 74 68 65 20 64 65 73  74 69 6e 61 74 69 6f 6e  | the destination|
00009b80  20 66 69 6c 65 0d 29 ea  14 20 20 20 d9 20 23 50  | file.)..   . #P|
00009b90  72 69 6e 74 46 69 6c 65  25 0d 29 f4 05 3a 0d 29  |rintFile%.)..:.)|
00009ba0  fe 05 e1 0d 2a 08 05 3a  0d 2a 12 1d dd 20 f2 5f  |....*..:.*... ._|
00009bb0  47 65 74 44 6f 63 75 6d  65 6e 74 53 69 7a 65 28  |GetDocumentSize(|
00009bc0  42 6f 78 25 29 0d 2a 1c  24 20 20 20 48 65 69 67  |Box%).*.$   Heig|
00009bd0  68 74 25 3d 37 32 35 20  20 20 20 20 20 3a 20 57  |ht%=725      : W|
00009be0  69 64 74 68 25 3d 37 32  35 0d 2a 26 2b 20 20 20  |idth%=725.*&+   |
00009bf0  58 31 25 3d 30 20 20 3a  20 20 58 32 25 3d 57 69  |X1%=0  :  X2%=Wi|
00009c00  64 74 68 25 2f 32 20 20  3a 20 58 33 25 3d 57 69  |dth%/2  : X3%=Wi|
00009c10  64 74 68 25 0d 2a 30 4a  20 20 20 59 31 25 3d 30  |dth%.*0J   Y1%=0|
00009c20  20 20 3a 20 20 59 32 25  3d 31 36 33 20 20 20 20  |  :  Y2%=163    |
00009c30  20 20 20 3a 20 59 33 25  3d 59 32 25 2b 39 32 20  |   : Y3%=Y2%+92 |
00009c40  3a 20 59 34 25 3d 48 65  69 67 68 74 25 2d 37 30  |: Y4%=Height%-70|
00009c50  20 3a 20 59 35 25 3d 48  65 69 67 68 74 25 0d 2a  | : Y5%=Height%.*|
00009c60  3a 22 20 20 20 42 6f 78  25 21 30 3d 30 20 20 20  |:"   Box%!0=0   |
00009c70  20 20 20 20 20 20 3a 20  42 6f 78 25 21 34 3d 30  |      : Box%!4=0|
00009c80  0d 2a 44 65 20 20 20 42  6f 78 25 21 38 3d 57 69  |.*De   Box%!8=Wi|
00009c90  64 74 68 25 2b 32 30 20  3a 20 42 6f 78 25 21 31  |dth%+20 : Box%!1|
00009ca0  32 3d 48 65 69 67 68 74  25 2b 32 30 20 3a 20 f4  |2=Height%+20 : .|
00009cb0  20 54 6f 20 41 6c 6c 6f  77 20 46 6f 72 20 52 6f  | To Allow For Ro|
00009cc0  75 6e 64 69 6e 67 20 45  72 72 6f 72 73 20 49 6e  |unding Errors In|
00009cd0  20 43 6f 6e 76 65 72 73  69 6f 6e 20 52 6f 75 74  | Conversion Rout|
00009ce0  69 6e 65 73 2e 0d 2a 4e  05 e1 0d 2a 58 05 3a 0d  |ines..*N...*X.:.|
00009cf0  2a 62 21 dd 20 f2 5f 46  69 74 54 6f 50 61 67 65  |*b!. ._FitToPage|
00009d00  28 48 65 69 67 68 74 25  2c 57 69 64 74 68 25 29  |(Height%,Width%)|
00009d10  0d 2a 6c 22 20 20 20 ea  20 4c 65 66 74 25 2c 42  |.*l"   . Left%,B|
00009d20  6f 74 74 6f 6d 25 2c 52  69 67 68 74 25 2c 54 6f  |ottom%,Right%,To|
00009d30  70 25 0d 2a 76 65 20 20  20 f4 20 52 65 74 75 72  |p%.*ve   . Retur|
00009d40  6e 73 20 76 61 6c 75 65  73 20 69 6e 20 4d 69 6c  |ns values in Mil|
00009d50  6c 69 70 6f 69 6e 74 73  2c 20 48 65 69 67 68 74  |lipoints, Height|
00009d60  25 20 26 20 57 69 64 74  68 25 20 61 72 65 20 69  |% & Width% are i|
00009d70  6e 20 4f 53 20 55 6e 69  74 73 2e 20 31 20 4f 53  |n OS Units. 1 OS|
00009d80  20 55 6e 69 74 20 3d 20  34 30 30 20 4d 69 6c 6c  | Unit = 400 Mill|
00009d90  69 70 6f 69 6e 74 73 0d  2a 80 3b 20 20 20 c8 99  |ipoints.*.;   ..|
00009da0  20 22 50 44 72 69 76 65  72 5f 50 61 67 65 53 69  | "PDriver_PageSi|
00009db0  7a 65 22 20 b8 20 2c 2c  2c 4c 65 66 74 25 2c 42  |ze" . ,,,Left%,B|
00009dc0  6f 74 74 6f 6d 25 2c 52  69 67 68 74 25 2c 54 6f  |ottom%,Right%,To|
00009dd0  70 25 0d 2a 8a 4d 20 20  20 4f 72 69 67 69 6e 58  |p%.*.M   OriginX|
00009de0  25 3d 28 28 52 69 67 68  74 25 2b 4c 65 66 74 25  |%=((Right%+Left%|
00009df0  29 2d 28 57 69 64 74 68  25 2a 34 30 30 29 29 2f  |)-(Width%*400))/|
00009e00  32 20 3a 20 4f 72 69 67  69 6e 59 25 3d 54 6f 70  |2 : OriginY%=Top|
00009e10  25 2d 28 48 65 69 67 68  74 25 2a 34 30 30 29 0d  |%-(Height%*400).|
00009e20  2a 94 2e 20 20 20 4f 72  69 67 69 6e 25 21 30 3d  |*..   Origin%!0=|
00009e30  4f 72 69 67 69 6e 58 25  20 3a 20 4f 72 69 67 69  |OriginX% : Origi|
00009e40  6e 25 21 34 3d 4f 72 69  67 69 6e 59 25 0d 2a 9e  |n%!4=OriginY%.*.|
00009e50  05 e1 0d 2a a8 05 3a 0d  2a b2 24 dd 20 f2 5f 44  |...*..:.*.$. ._D|
00009e60  72 61 77 49 6e 6c 61 79  28 43 6f 5f 6f 72 64 69  |rawInlay(Co_ordi|
00009e70  6e 61 74 65 42 6c 6f 63  6b 25 29 0d 2a bc 3c 20  |nateBlock%).*.< |
00009e80  20 20 c8 99 20 46 69 6e  64 25 2c 2c 42 61 73 65  |  .. Find%,,Base|
00009e90  46 6f 6e 74 24 2c 30 39  2a 31 36 2c 31 32 2a 31  |Font$,09*16,12*1|
00009ea0  36 2c 30 2c 30 20 b8 20  42 61 73 65 46 6f 6e 74  |6,0,0 . BaseFont|
00009eb0  48 61 6e 64 6c 65 25 0d  2a c6 3c 20 20 20 c8 99  |Handle%.*.<   ..|
00009ec0  20 46 69 6e 64 25 2c 2c  42 6f 6c 64 46 6f 6e 74  | Find%,,BoldFont|
00009ed0  24 2c 31 30 2a 31 36 2c  31 33 2a 31 36 2c 30 2c  |$,10*16,13*16,0,|
00009ee0  30 20 b8 20 42 6f 6c 64  46 6f 6e 74 48 61 6e 64  |0 . BoldFontHand|
00009ef0  6c 65 25 0d 2a d0 05 3a  0d 2a da 42 20 20 20 f2  |le%.*..:.*.B   .|
00009f00  5f 46 6f 6e 74 50 61 69  6e 74 28 22 22 2c a4 5f  |_FontPaint("",._|
00009f10  52 65 61 64 49 63 6f 6e  54 65 78 74 28 4d 61 69  |ReadIconText(Mai|
00009f20  6e 25 2c 32 34 2c a3 29  2c 58 31 25 2b 31 30 2c  |n%,24,.),X1%+10,|
00009f30  59 34 25 2b 34 30 2c 32  34 29 0d 2a e4 42 20 20  |Y4%+40,24).*.B  |
00009f40  20 f2 5f 46 6f 6e 74 50  61 69 6e 74 28 22 22 2c  | ._FontPaint("",|
00009f50  a4 5f 52 65 61 64 49 63  6f 6e 54 65 78 74 28 4d  |._ReadIconText(M|
00009f60  61 69 6e 25 2c 32 35 2c  a3 29 2c 58 31 25 2b 31  |ain%,25,.),X1%+1|
00009f70  30 2c 59 34 25 2b 30 35  2c 32 35 29 0d 2a ee 42  |0,Y4%+05,25).*.B|
00009f80  20 20 20 f2 5f 46 6f 6e  74 50 61 69 6e 74 28 22  |   ._FontPaint("|
00009f90  22 2c a4 5f 52 65 61 64  49 63 6f 6e 54 65 78 74  |",._ReadIconText|
00009fa0  28 4d 61 69 6e 25 2c 32  36 2c a3 29 2c 58 32 25  |(Main%,26,.),X2%|
00009fb0  2b 31 30 2c 59 34 25 2b  34 30 2c 32 36 29 0d 2a  |+10,Y4%+40,26).*|
00009fc0  f8 42 20 20 20 f2 5f 46  6f 6e 74 50 61 69 6e 74  |.B   ._FontPaint|
00009fd0  28 22 22 2c a4 5f 52 65  61 64 49 63 6f 6e 54 65  |("",._ReadIconTe|
00009fe0  78 74 28 4d 61 69 6e 25  2c 32 37 2c a3 29 2c 58  |xt(Main%,27,.),X|
00009ff0  32 25 2b 31 30 2c 59 34  25 2b 30 35 2c 32 37 29  |2%+10,Y4%+05,27)|
0000a000  0d 2b 02 05 3a 0d 2b 0c  1e 20 20 20 53 65 70 61  |.+..:.+..   Sepa|
0000a010  72 61 74 69 6f 6e 3d 28  59 34 25 2d 59 33 25 29  |ration=(Y4%-Y3%)|
0000a020  2f 31 32 0d 2b 16 23 20  20 20 53 70 61 63 65 53  |/12.+.#   SpaceS|
0000a030  74 61 72 74 59 3d 59 33  25 20 2b 20 53 65 70 61  |tartY=Y3% + Sepa|
0000a040  72 61 74 69 6f 6e 0d 2b  20 10 20 20 20 54 72 61  |ration.+ .   Tra|
0000a050  63 6b 25 3d 32 32 0d 2b  2a 2f 20 20 20 c8 99 20  |ck%=22.+*/   .. |
0000a060  22 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 53 65 74  |"ColourTrans_Set|
0000a070  47 43 4f 4c 22 2c 26 44  30 44 30 44 30 30 30 2c  |GCOL",&D0D0D000,|
0000a080  2c 2c 30 2c 30 0d 2b 34  17 20 20 20 f2 5f 4d 69  |,,0,0.+4.   ._Mi|
0000a090  6e 69 5f 57 49 4d 50 5f  50 6f 6c 6c 0d 2b 3e 1c  |ni_WIMP_Poll.+>.|
0000a0a0  20 20 20 c8 95 20 53 70  61 63 65 53 74 61 72 74  |   .. SpaceStart|
0000a0b0  59 20 3c 3d 20 59 34 25  0d 2b 48 47 20 20 20 20  |Y <= Y4%.+HG    |
0000a0c0  20 20 e7 20 53 70 61 63  65 53 74 61 72 74 59 20  |  . SpaceStartY |
0000a0d0  3c 20 59 34 25 2d 31 30  20 8c 20 ec 20 58 31 25  |< Y4%-10 . . X1%|
0000a0e0  2c 53 70 61 63 65 53 74  61 72 74 59 20 3a df 20  |,SpaceStartY :. |
0000a0f0  58 33 25 2c 53 70 61 63  65 53 74 61 72 74 59 0d  |X3%,SpaceStartY.|
0000a100  2b 52 2e 20 20 20 20 20  20 54 65 78 74 24 3d a4  |+R.      Text$=.|
0000a110  5f 52 65 61 64 49 63 6f  6e 54 65 78 74 28 4d 61  |_ReadIconText(Ma|
0000a120  69 6e 25 2c 54 72 61 63  6b 25 2c a3 29 0d 2b 5c  |in%,Track%,.).+\|
0000a130  3c 20 20 20 20 20 20 f2  5f 46 6f 6e 74 50 61 69  |<      ._FontPai|
0000a140  6e 74 28 22 22 2c 54 65  78 74 24 2c 58 31 25 2b  |nt("",Text$,X1%+|
0000a150  31 30 2c 53 70 61 63 65  53 74 61 72 74 59 2d 32  |10,SpaceStartY-2|
0000a160  35 2c 54 72 61 63 6b 25  29 0d 2b 66 30 20 20 20  |5,Track%).+f0   |
0000a170  20 20 20 54 65 78 74 24  3d a4 5f 52 65 61 64 49  |   Text$=._ReadI|
0000a180  63 6f 6e 54 65 78 74 28  4d 61 69 6e 25 2c 54 72  |conText(Main%,Tr|
0000a190  61 63 6b 25 2b 31 2c a3  29 0d 2b 70 3e 20 20 20  |ack%+1,.).+p>   |
0000a1a0  20 20 20 f2 5f 46 6f 6e  74 50 61 69 6e 74 28 22  |   ._FontPaint("|
0000a1b0  22 2c 54 65 78 74 24 2c  58 32 25 2b 31 30 2c 53  |",Text$,X2%+10,S|
0000a1c0  70 61 63 65 53 74 61 72  74 59 2d 32 35 2c 54 72  |paceStartY-25,Tr|
0000a1d0  61 63 6b 25 2b 31 29 0d  2b 7a 21 20 20 20 20 20  |ack%+1).+z!     |
0000a1e0  20 53 70 61 63 65 53 74  61 72 74 59 2b 3d 53 65  | SpaceStartY+=Se|
0000a1f0  70 61 72 61 74 69 6f 6e  0d 2b 84 13 20 20 20 20  |paration.+..    |
0000a200  20 20 54 72 61 63 6b 25  2d 3d 32 0d 2b 8e 08 20  |  Track%-=2.+.. |
0000a210  20 20 ce 0d 2b 98 05 3a  0d 2b a2 4e 20 20 20 53  |  ..+..:.+.N   S|
0000a220  70 69 6e 65 4c 69 6e 65  31 24 3d a4 5f 52 65 61  |pineLine1$=._Rea|
0000a230  64 49 63 6f 6e 54 65 78  74 28 4d 61 69 6e 25 2c  |dIconText(Main%,|
0000a240  32 34 2c a3 29 2b 22 20  2d 20 22 2b a4 5f 52 65  |24,.)+" - "+._Re|
0000a250  61 64 49 63 6f 6e 54 65  78 74 28 4d 61 69 6e 25  |adIconText(Main%|
0000a260  2c 32 35 2c a3 29 0d 2b  ac 4e 20 20 20 53 70 69  |,25,.).+.N   Spi|
0000a270  6e 65 4c 69 6e 65 32 24  3d a4 5f 52 65 61 64 49  |neLine2$=._ReadI|
0000a280  63 6f 6e 54 65 78 74 28  4d 61 69 6e 25 2c 32 36  |conText(Main%,26|
0000a290  2c a3 29 2b 22 20 2d 20  22 2b a4 5f 52 65 61 64  |,.)+" - "+._Read|
0000a2a0  49 63 6f 6e 54 65 78 74  28 4d 61 69 6e 25 2c 32  |IconText(Main%,2|
0000a2b0  37 2c a3 29 0d 2b b6 37  20 20 20 f2 5f 46 6f 6e  |7,.).+.7   ._Fon|
0000a2c0  74 50 61 69 6e 74 28 22  42 6f 6c 64 22 2c 53 70  |tPaint("Bold",Sp|
0000a2d0  69 6e 65 4c 69 6e 65 31  24 2c 58 31 25 2b 31 30  |ineLine1$,X1%+10|
0000a2e0  2c 59 32 25 2b 35 35 2c  32 34 29 0d 2b c0 37 20  |,Y2%+55,24).+.7 |
0000a2f0  20 20 f2 5f 46 6f 6e 74  50 61 69 6e 74 28 22 42  |  ._FontPaint("B|
0000a300  6f 6c 64 22 2c 53 70 69  6e 65 4c 69 6e 65 32 24  |old",SpineLine2$|
0000a310  2c 58 31 25 2b 31 30 2c  59 32 25 2b 31 35 2c 32  |,X1%+10,Y2%+15,2|
0000a320  36 29 0d 2b ca 18 20 20  20 f2 5f 50 72 69 6e 74  |6).+..   ._Print|
0000a330  54 61 70 65 4e 75 6d 62  65 72 0d 2b d4 05 3a 0d  |TapeNumber.+..:.|
0000a340  2b de 1d 20 20 20 53 65  70 61 72 61 74 69 6f 6e  |+..   Separation|
0000a350  3d 28 59 32 25 2d 59 31  25 29 2f 35 0d 2b e8 23  |=(Y2%-Y1%)/5.+.#|
0000a360  20 20 20 53 70 61 63 65  53 74 61 72 74 59 3d 59  |   SpaceStartY=Y|
0000a370  31 25 20 2b 20 53 65 70  61 72 61 74 69 6f 6e 0d  |1% + Separation.|
0000a380  2b f2 10 20 20 20 54 72  61 63 6b 25 3d 33 36 0d  |+..   Track%=36.|
0000a390  2b fc 17 20 20 20 f2 5f  4d 69 6e 69 5f 57 49 4d  |+..   ._Mini_WIM|
0000a3a0  50 5f 50 6f 6c 6c 0d 2c  06 1c 20 20 20 c8 95 20  |P_Poll.,..   .. |
0000a3b0  53 70 61 63 65 53 74 61  72 74 59 20 3c 3d 20 59  |SpaceStartY <= Y|
0000a3c0  32 25 0d 2c 10 45 20 20  20 20 20 20 e7 20 53 70  |2%.,.E      . Sp|
0000a3d0  61 63 65 53 74 61 72 74  59 20 3c 20 59 32 25 2d  |aceStartY < Y2%-|
0000a3e0  31 30 20 ec 20 58 31 25  2c 53 70 61 63 65 53 74  |10 . X1%,SpaceSt|
0000a3f0  61 72 74 59 20 3a df 20  58 33 25 2c 53 70 61 63  |artY :. X3%,Spac|
0000a400  65 53 74 61 72 74 59 0d  2c 1a 2e 20 20 20 20 20  |eStartY.,..     |
0000a410  20 54 65 78 74 24 3d a4  5f 52 65 61 64 49 63 6f  | Text$=._ReadIco|
0000a420  6e 54 65 78 74 28 4d 61  69 6e 25 2c 54 72 61 63  |nText(Main%,Trac|
0000a430  6b 25 2c a3 29 0d 2c 24  3c 20 20 20 20 20 20 f2  |k%,.).,$<      .|
0000a440  5f 46 6f 6e 74 50 61 69  6e 74 28 22 22 2c 54 65  |_FontPaint("",Te|
0000a450  78 74 24 2c 58 31 25 2b  31 30 2c 53 70 61 63 65  |xt$,X1%+10,Space|
0000a460  53 74 61 72 74 59 2d 32  35 2c 54 72 61 63 6b 25  |StartY-25,Track%|
0000a470  29 0d 2c 2e 30 20 20 20  20 20 20 54 65 78 74 24  |).,.0      Text$|
0000a480  3d a4 5f 52 65 61 64 49  63 6f 6e 54 65 78 74 28  |=._ReadIconText(|
0000a490  4d 61 69 6e 25 2c 54 72  61 63 6b 25 2b 31 2c a3  |Main%,Track%+1,.|
0000a4a0  29 0d 2c 38 3e 20 20 20  20 20 20 f2 5f 46 6f 6e  |).,8>      ._Fon|
0000a4b0  74 50 61 69 6e 74 28 22  22 2c 54 65 78 74 24 2c  |tPaint("",Text$,|
0000a4c0  58 32 25 2b 31 30 2c 53  70 61 63 65 53 74 61 72  |X2%+10,SpaceStar|
0000a4d0  74 59 2d 32 35 2c 54 72  61 63 6b 25 2b 31 29 0d  |tY-25,Track%+1).|
0000a4e0  2c 42 21 20 20 20 20 20  20 53 70 61 63 65 53 74  |,B!      SpaceSt|
0000a4f0  61 72 74 59 2b 3d 53 65  70 61 72 61 74 69 6f 6e  |artY+=Separation|
0000a500  0d 2c 4c 13 20 20 20 20  20 20 54 72 61 63 6b 25  |.,L.      Track%|
0000a510  2d 3d 32 0d 2c 56 08 20  20 20 ce 0d 2c 60 05 3a  |-=2.,V.   ..,`.:|
0000a520  0d 2c 6a 2f 20 20 20 c8  99 20 22 43 6f 6c 6f 75  |.,j/   .. "Colou|
0000a530  72 54 72 61 6e 73 5f 53  65 74 47 43 4f 4c 22 2c  |rTrans_SetGCOL",|
0000a540  26 30 30 30 30 30 30 30  30 2c 2c 2c 30 2c 30 0d  |&00000000,,,0,0.|
0000a550  2c 74 19 20 20 20 c8 93  20 58 31 25 2c 59 31 25  |,t.   .. X1%,Y1%|
0000a560  2c 58 33 25 2c 59 35 25  0d 2c 7e 1d 20 20 20 c8  |,X3%,Y5%.,~.   .|
0000a570  93 20 58 31 25 2c 59 32  25 2c 58 33 25 2c 59 33  |. X1%,Y2%,X3%,Y3|
0000a580  25 2d 59 32 25 0d 2c 88  1c 20 20 20 ec 20 58 32  |%-Y2%.,..   . X2|
0000a590  25 2c 59 31 25 20 3a 20  df 20 58 32 25 2c 59 32  |%,Y1% : . X2%,Y2|
0000a5a0  25 0d 2c 92 1c 20 20 20  ec 20 58 32 25 2c 59 33  |%.,..   . X2%,Y3|
0000a5b0  25 20 3a 20 df 20 58 32  25 2c 59 34 25 0d 2c 9c  |% : . X2%,Y4%.,.|
0000a5c0  1c 20 20 20 ec 20 58 31  25 2c 59 34 25 20 3a 20  |.   . X1%,Y4% : |
0000a5d0  df 20 58 33 25 2c 59 34  25 0d 2c a6 05 3a 0d 2c  |. X3%,Y4%.,..:.,|
0000a5e0  b0 1f 20 20 20 c8 99 20  4c 6f 73 65 25 2c 42 61  |..   .. Lose%,Ba|
0000a5f0  73 65 46 6f 6e 74 48 61  6e 64 6c 65 25 0d 2c ba  |seFontHandle%.,.|
0000a600  1f 20 20 20 c8 99 20 4c  6f 73 65 25 2c 42 6f 6c  |.   .. Lose%,Bol|
0000a610  64 46 6f 6e 74 48 61 6e  64 6c 65 25 0d 2c c4 05  |dFontHandle%.,..|
0000a620  e1 0d 2c ce 05 3a 0d 2c  d8 45 2a 2a 2a 2a 2a 2a  |..,..:.,.E******|
0000a630  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000a660  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 2c e2 43 f4  |***********.,.C.|
0000a670  20 53 65 6c 65 63 74 20  72 65 71 75 69 72 65 64  | Select required|
0000a680  20 46 6f 6e 74 20 61 6e  64 20 63 6f 6c 6f 75 72  | Font and colour|
0000a690  2c 20 74 68 65 6e 20 70  72 69 6e 74 20 4d 65 73  |, then print Mes|
0000a6a0  73 61 67 65 24 20 61 74  20 58 25 2c 59 25 0d 2c  |sage$ at X%,Y%.,|
0000a6b0  ec 45 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.E**************|
0000a6c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000a6f0  2a 2a 2a 0d 2c f6 30 dd  20 f2 5f 46 6f 6e 74 50  |***.,.0. ._FontP|
0000a700  61 69 6e 74 28 50 6f 73  74 46 69 78 24 2c 4d 65  |aint(PostFix$,Me|
0000a710  73 73 61 67 65 24 2c 58  25 2c 59 25 2c 49 63 6f  |ssage$,X%,Y%,Ico|
0000a720  6e 25 29 0d 2d 00 14 20  20 20 ea 20 46 6f 6e 74  |n%).-..   . Font|
0000a730  48 61 6e 64 6c 65 25 0d  2d 0a 18 20 20 20 e7 20  |Handle%.-..   . |
0000a740  4d 65 73 73 61 67 65 24  3d 22 22 20 8c 20 e1 0d  |Message$="" . ..|
0000a750  2d 14 3b 20 20 20 f4 20  44 6f 6e 74 20 57 61 73  |-.;   . Dont Was|
0000a760  74 65 20 54 69 6d 65 20  4d 65 73 73 69 6e 67 20  |te Time Messing |
0000a770  61 62 6f 75 74 20 69 66  20 6e 6f 74 68 69 6e 67  |about if nothing|
0000a780  20 74 6f 20 70 72 69 6e  74 21 0d 2d 1e 16 20 20  | to print!.-..  |
0000a790  20 e7 20 50 6f 73 74 46  69 78 24 3d 22 22 20 8c  | . PostFix$="" .|
0000a7a0  0d 2d 28 21 20 20 20 20  20 20 c8 99 20 53 65 74  |.-(!      .. Set|
0000a7b0  25 2c 42 61 73 65 46 6f  6e 74 48 61 6e 64 6c 65  |%,BaseFontHandle|
0000a7c0  25 0d 2d 32 2e 20 20 20  20 20 20 54 65 78 74 24  |%.-2.      Text$|
0000a7d0  3d a4 5f 54 72 69 6d 54  6f 46 69 74 28 4d 65 73  |=._TrimToFit(Mes|
0000a7e0  73 61 67 65 24 2c 34 38  2c 49 63 6f 6e 25 29 0d  |sage$,48,Icon%).|
0000a7f0  2d 3c 08 20 20 20 cc 0d  2d 46 21 20 20 20 20 20  |-<.   ..-F!     |
0000a800  20 c8 99 20 53 65 74 25  2c 42 6f 6c 64 46 6f 6e  | .. Set%,BoldFon|
0000a810  74 48 61 6e 64 6c 65 25  0d 2d 50 2e 20 20 20 20  |tHandle%.-P.    |
0000a820  20 20 54 65 78 74 24 3d  a4 5f 54 72 69 6d 54 6f  |  Text$=._TrimTo|
0000a830  46 69 74 28 4d 65 73 73  61 67 65 24 2c 38 37 2c  |Fit(Message$,87,|
0000a840  49 63 6f 6e 25 29 0d 2d  5a 08 20 20 20 cd 0d 2d  |Icon%).-Z.   ..-|
0000a850  64 3c 20 20 20 c8 99 20  22 43 6f 6c 6f 75 72 54  |d<   .. "ColourT|
0000a860  72 61 6e 73 5f 53 65 74  46 6f 6e 74 43 6f 6c 6f  |rans_SetFontColo|
0000a870  75 72 73 22 2c 30 2c 26  46 46 46 46 46 46 30 30  |urs",0,&FFFFFF00|
0000a880  2c 26 30 30 30 30 30 30  30 30 0d 2d 6e 08 20 20  |,&00000000.-n.  |
0000a890  20 3a 0d 2d 78 22 20 20  20 c8 99 20 50 61 69 6e  | :.-x"   .. Pain|
0000a8a0  74 25 2c 2c 54 65 78 74  24 2c 26 32 31 30 2c 58  |t%,,Text$,&210,X|
0000a8b0  25 2c 59 25 0d 2d 82 05  e1 0d 2d 8c 05 3a 0d 2d  |%,Y%.-....-..:.-|
0000a8c0  96 53 f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.S. ************|
0000a8d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000a910  2a 0d 2d a0 53 f4 20 50  72 69 6e 74 73 20 74 68  |*.-.S. Prints th|
0000a920  65 20 74 61 70 65 20 6e  75 6d 62 65 72 20 69 6e  |e tape number in|
0000a930  20 61 20 73 6d 61 6c 6c  65 72 20 70 6f 69 6e 74  | a smaller point|
0000a940  20 73 69 7a 65 20 61 74  20 61 20 66 69 78 65 64  | size at a fixed|
0000a950  20 70 6c 61 63 65 20 6f  6e 20 74 68 65 20 69 6e  | place on the in|
0000a960  6c 61 79 2e 0d 2d aa 53  f4 20 2a 2a 2a 2a 2a 2a  |lay..-.S. ******|
0000a970  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000a9b0  2a 2a 2a 2a 2a 2a 2a 0d  2d b4 17 dd 20 f2 5f 50  |*******.-... ._P|
0000a9c0  72 69 6e 74 54 61 70 65  4e 75 6d 62 65 72 0d 2d  |rintTapeNumber.-|
0000a9d0  be 1a 20 20 20 ea 20 54  65 78 74 24 2c 46 6f 6e  |..   . Text$,Fon|
0000a9e0  74 48 61 6e 64 6c 65 25  0d 2d c8 36 20 20 20 c8  |tHandle%.-.6   .|
0000a9f0  99 20 46 69 6e 64 25 2c  2c 42 61 73 65 46 6f 6e  |. Find%,,BaseFon|
0000aa00  74 24 2c 36 2a 31 36 2c  38 2a 31 36 2c 30 2c 30  |t$,6*16,8*16,0,0|
0000aa10  20 b8 20 46 6f 6e 74 48  61 6e 64 6c 65 25 0d 2d  | . FontHandle%.-|
0000aa20  d2 3c 20 20 20 c8 99 20  22 43 6f 6c 6f 75 72 54  |.<   .. "ColourT|
0000aa30  72 61 6e 73 5f 53 65 74  46 6f 6e 74 43 6f 6c 6f  |rans_SetFontColo|
0000aa40  75 72 73 22 2c 30 2c 26  46 46 46 46 46 46 30 30  |urs",0,&FFFFFF00|
0000aa50  2c 26 30 30 30 30 30 30  30 30 0d 2d dc 08 20 20  |,&00000000.-..  |
0000aa60  20 3a 0d 2d e6 30 20 20  20 54 65 78 74 24 3d a4  | :.-.0   Text$=.|
0000aa70  5f 52 65 61 64 49 63 6f  6e 54 65 78 74 28 4d 61  |_ReadIconText(Ma|
0000aa80  69 6e 25 2c 54 61 70 65  4e 75 6d 62 65 72 25 2c  |in%,TapeNumber%,|
0000aa90  b9 29 0d 2d f0 29 20 20  20 c8 99 20 50 61 69 6e  |.).-.)   .. Pain|
0000aaa0  74 25 2c 2c 54 65 78 74  24 2c 26 31 30 2c 58 33  |t%,,Text$,&10,X3|
0000aab0  25 2d 37 30 2c 59 32 25  2b 37 35 0d 2d fa 08 20  |%-70,Y2%+75.-.. |
0000aac0  20 20 3a 0d 2e 04 1b 20  20 20 c8 99 20 4c 6f 73  |  :....   .. Los|
0000aad0  65 25 2c 46 6f 6e 74 48  61 6e 64 6c 65 25 0d 2e  |e%,FontHandle%..|
0000aae0  0e 05 e1 0d 2e 18 05 3a  0d 2e 22 5f f4 20 2a 2a  |.......:.."_. **|
0000aaf0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000ab40  2a 2a 2a 2a 2a 2a 2a 0d  2e 2c 5f f4 20 43 68 65  |*******..,_. Che|
0000ab50  63 6b 20 74 68 65 20 70  72 69 6e 74 65 64 20 6c  |ck the printed l|
0000ab60  65 6e 67 74 68 20 6f 66  20 74 68 65 20 74 65 78  |ength of the tex|
0000ab70  74 20 61 67 61 69 6e 73  74 20 74 68 65 20 73 69  |t against the si|
0000ab80  7a 65 20 69 6e 20 70 69  78 65 6c 73 2c 20 61 6e  |ze in pixels, an|
0000ab90  64 20 73 68 6f 72 74 65  6e 20 69 66 20 72 65 71  |d shorten if req|
0000aba0  75 69 72 65 64 2e 0d 2e  36 21 f4 20 55 73 65 73  |uired...6!. Uses|
0000abb0  20 3a 20 46 4e 5f 57 61  72 6e 41 62 6f 75 74 43  | : FN_WarnAboutC|
0000abc0  6c 69 70 70 69 6e 67 0d  2e 40 5f f4 20 2a 2a 2a  |lipping..@_. ***|
0000abd0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000ac20  2a 2a 2a 2a 2a 2a 0d 2e  4a 21 dd 20 a4 5f 54 72  |******..J!. ._Tr|
0000ac30  69 6d 54 6f 46 69 74 28  54 65 78 74 24 2c 6d 6d  |imToFit(Text$,mm|
0000ac40  2c 49 63 6f 6e 25 29 0d  2e 54 25 20 20 20 ea 20  |,Icon%)..T%   . |
0000ac50  4e 75 6d 62 65 72 4f 66  50 72 69 6e 74 61 62 6c  |NumberOfPrintabl|
0000ac60  65 43 68 61 72 61 63 74  65 72 73 25 0d 2e 5e 12  |eCharacters%..^.|
0000ac70  20 20 20 43 6f 6e 74 69  6e 75 65 25 3d b9 0d 2e  |   Continue%=...|
0000ac80  68 1f 20 20 20 58 4c 65  6e 67 74 68 25 3d 28 6d  |h.   XLength%=(m|
0000ac90  6d 2f 32 35 2e 34 29 2a  37 32 30 30 30 0d 2e 72  |m/25.4)*72000..r|
0000aca0  1a 20 20 20 e7 20 4e 65  77 46 6f 6e 74 4d 61 6e  |.   . NewFontMan|
0000acb0  61 67 65 72 25 20 8c 0d  2e 7c 6e 20 20 20 20 20  |ager% ...|n     |
0000acc0  20 c8 99 20 22 46 6f 6e  74 5f 53 63 61 6e 53 74  | .. "Font_ScanSt|
0000acd0  72 69 6e 67 22 2c 30 2c  54 65 78 74 24 2c 26 31  |ring",0,Text$,&1|
0000ace0  30 30 33 38 30 2c 58 4c  65 6e 67 74 68 25 2c 31  |00380,XLength%,1|
0000acf0  35 30 30 30 2c 2c 2c a9  28 54 65 78 74 24 29 20  |5000,,,.(Text$) |
0000ad00  b8 20 2c 2c 2c 2c 2c 2c  2c 4e 75 6d 62 65 72 4f  |. ,,,,,,,NumberO|
0000ad10  66 50 72 69 6e 74 61 62  6c 65 43 68 61 72 61 63  |fPrintableCharac|
0000ad20  74 65 72 73 25 0d 2e 86  08 20 20 20 cc 0d 2e 90  |ters%....   ....|
0000ad30  64 20 20 20 20 20 20 c8  99 20 22 46 6f 6e 74 5f  |d      .. "Font_|
0000ad40  53 74 72 69 6e 67 57 69  64 74 68 22 2c 2c 54 65  |StringWidth",,Te|
0000ad50  78 74 24 2c 58 4c 65 6e  67 74 68 25 2c 31 35 30  |xt$,XLength%,150|
0000ad60  30 30 2c 2d 31 2c a9 28  54 65 78 74 24 29 20 b8  |00,-1,.(Text$) .|
0000ad70  20 2c 2c 2c 2c 4e 75 6d  62 65 72 4f 66 50 72 69  | ,,,,NumberOfPri|
0000ad80  6e 74 61 62 6c 65 43 68  61 72 61 63 74 65 72 73  |ntableCharacters|
0000ad90  25 0d 2e 9a 08 20 20 20  cd 0d 2e a4 38 20 20 20  |%....   ....8   |
0000ada0  54 65 78 74 54 6f 50 72  69 6e 74 24 3d c0 54 65  |TextToPrint$=.Te|
0000adb0  78 74 24 2c 4e 75 6d 62  65 72 4f 66 50 72 69 6e  |xt$,NumberOfPrin|
0000adc0  74 61 62 6c 65 43 68 61  72 61 63 74 65 72 73 25  |tableCharacters%|
0000add0  29 0d 2e ae 48 20 20 20  e7 20 4e 75 6d 62 65 72  |)...H   . Number|
0000ade0  4f 66 50 72 69 6e 74 61  62 6c 65 43 68 61 72 61  |OfPrintableChara|
0000adf0  63 74 65 72 73 25 3c a9  28 54 65 78 74 24 29 20  |cters%<.(Text$) |
0000ae00  80 20 43 6c 69 70 70 65  64 41 72 72 61 79 25 3f  |. ClippedArray%?|
0000ae10  49 63 6f 6e 25 3d 30 20  8c 0d 2e b8 3b 20 20 20  |Icon%=0 ....;   |
0000ae20  20 20 20 43 6f 6e 74 69  6e 75 65 25 3d a4 5f 57  |   Continue%=._W|
0000ae30  61 72 6e 41 62 6f 75 74  43 6c 69 70 70 69 6e 67  |arnAboutClipping|
0000ae40  28 54 65 78 74 24 2c 54  65 78 74 54 6f 50 72 69  |(Text$,TextToPri|
0000ae50  6e 74 24 29 0d 2e c2 1f  20 20 20 20 20 20 43 6c  |nt$)....      Cl|
0000ae60  69 70 70 65 64 41 72 72  61 79 25 3f 49 63 6f 6e  |ippedArray%?Icon|
0000ae70  25 3d 31 0d 2e cc 08 20  20 20 cd 0d 2e d6 41 20  |%=1....   ....A |
0000ae80  20 20 e7 20 43 6f 6e 74  69 6e 75 65 25 3d a3 20  |  . Continue%=. |
0000ae90  8c 20 85 20 32 30 30 31  2c 22 41 62 6f 72 74 69  |. . 2001,"Aborti|
0000aea0  6e 67 20 50 72 69 6e 74  6f 75 74 2e 20 4f 4b 20  |ng Printout. OK |
0000aeb0  74 6f 20 43 6f 6e 74 69  6e 75 65 22 0d 2e e0 11  |to Continue"....|
0000aec0  3d 54 65 78 74 54 6f 50  72 69 6e 74 24 0d 2e ea  |=TextToPrint$...|
0000aed0  05 3a 0d 2e f4 5a f4 20  2a 2a 2a 2a 2a 2a 2a 2a  |.:...Z. ********|
0000aee0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000af20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 2e fe 5b  |************...[|
0000af30  f4 20 49 66 20 43 6c 69  70 70 69 6e 67 20 77 69  |. If Clipping wi|
0000af40  6c 6c 20 6f 63 63 6f 75  72 2c 20 74 68 65 6e 20  |ll occour, then |
0000af50  64 69 73 70 6c 61 79 20  57 61 72 6e 69 6e 67 20  |display Warning |
0000af60  6d 65 73 73 61 67 65 20  61 6e 64 20 61 6c 6c 6f  |message and allo|
0000af70  77 20 75 73 65 72 20 6f  70 74 69 6f 6e 20 74 6f  |w user option to|
0000af80  20 61 62 6f 72 74 2e 0d  2f 08 10 f4 20 55 73 65  | abort../... Use|
0000af90  73 3a 20 4e 4f 4e 45 0d  2f 12 5a f4 20 2a 2a 2a  |s: NONE./.Z. ***|
0000afa0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000aff0  2a 0d 2f 1c 31 dd 20 a4  5f 57 61 72 6e 41 62 6f  |*./.1. ._WarnAbo|
0000b000  75 74 43 6c 69 70 70 69  6e 67 28 49 63 6f 6e 54  |utClipping(IconT|
0000b010  65 78 74 24 2c 54 65 78  74 54 6f 50 72 69 6e 74  |ext$,TextToPrint|
0000b020  24 29 0d 2f 26 0f 20 20  20 ea 20 45 72 72 6f 72  |$)./&.   . Error|
0000b030  24 0d 2f 30 10 20 20 20  21 42 6c 6f 63 6b 25 3d  |$./0.   !Block%=|
0000b040  30 0d 2f 3a 7b 20 20 20  45 72 72 6f 72 24 20 3d  |0./:{   Error$ =|
0000b050  22 54 68 69 73 20 54 65  78 74 20 2d 20 27 22 2b  |"This Text - '"+|
0000b060  49 63 6f 6e 54 65 78 74  24 2b 22 27 20 44 6f 65  |IconText$+"' Doe|
0000b070  73 20 6e 6f 74 20 66 69  74 2e 20 43 6c 69 70 70  |s not fit. Clipp|
0000b080  69 6e 67 20 74 6f 20 27  22 2b 54 65 78 74 54 6f  |ing to '"+TextTo|
0000b090  50 72 69 6e 74 24 2b 22  27 20 20 4f 4b 20 54 6f  |Print$+"'  OK To|
0000b0a0  20 43 6f 6e 74 69 6e 75  65 2c 20 43 41 4e 43 45  | Continue, CANCE|
0000b0b0  4c 20 54 6f 20 41 62 6f  72 74 2e 22 0d 2f 44 1e  |L To Abort."./D.|
0000b0c0  20 20 20 24 28 42 6c 6f  63 6b 25 2b 34 29 3d 45  |   $(Block%+4)=E|
0000b0d0  72 72 6f 72 24 20 2b 20  bd 30 0d 2f 4e 41 20 20  |rror$ + .0./NA  |
0000b0e0  20 c8 99 20 22 57 69 6d  70 5f 52 65 70 6f 72 74  | .. "Wimp_Report|
0000b0f0  45 72 72 6f 72 22 2c 42  6c 6f 63 6b 25 2c 25 31  |Error",Block%,%1|
0000b100  30 30 31 31 2c 4d 79 54  61 73 6b 4e 61 6d 65 24  |0011,MyTaskName$|
0000b110  20 b8 20 2c 52 65 73 75  6c 74 25 0d 2f 58 2e 20  | . ,Result%./X. |
0000b120  20 20 e7 20 52 65 73 75  6c 74 25 3d 32 20 8c 20  |  . Result%=2 . |
0000b130  43 6f 6e 74 69 6e 75 65  25 3d a3 20 8b 20 43 6f  |Continue%=. . Co|
0000b140  6e 74 69 6e 75 65 25 3d  b9 0d 2f 62 34 20 20 20  |ntinue%=../b4   |
0000b150  c8 99 20 22 57 69 6d 70  5f 52 65 70 6f 72 74 45  |.. "Wimp_ReportE|
0000b160  72 72 6f 72 22 2c 42 6c  6f 63 6b 25 2c 31 3c 3c  |rror",Block%,1<<|
0000b170  36 2c 4d 79 54 61 73 6b  4e 61 6d 65 24 0d 2f 6c  |6,MyTaskName$./l|
0000b180  0e 3d 43 6f 6e 74 69 6e  75 65 25 0d 2f 76 04 0d  |.=Continue%./v..|
0000b190  2f 80 1c dd 20 f2 5f 4f  70 65 6e 53 75 62 4d 65  |/... ._OpenSubMe|
0000b1a0  6e 75 28 57 69 6e 64 6f  77 25 29 0d 2f 8a 27 20  |nu(Window%)./.' |
0000b1b0  20 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 50 6f  |  .. "Wimp_GetPo|
0000b1c0  69 6e 74 65 72 49 6e 66  6f 22 2c 2c 42 6c 6f 63  |interInfo",,Bloc|
0000b1d0  6b 25 0d 2f 94 3c 20 20  20 c8 99 20 22 57 69 6d  |k%./.<   .. "Wim|
0000b1e0  70 5f 43 72 65 61 74 65  4d 65 6e 75 22 2c 2c 57  |p_CreateMenu",,W|
0000b1f0  69 6e 64 6f 77 25 2c 42  6c 6f 63 6b 25 21 30 2d  |indow%,Block%!0-|
0000b200  36 34 2c 42 6c 6f 63 6b  25 21 34 2b 34 38 0d 2f  |64,Block%!4+48./|
0000b210  9e 05 e1 0d 2f a8 05 3a  0d 2f b2 4c f4 20 2a 2a  |..../..:./.L. **|
0000b220  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000b260  2a 2a 2a 2a 0d 2f bc 4c  f4 20 53 65 74 73 20 74  |****./.L. Sets t|
0000b270  68 65 20 63 61 73 65 20  6f 66 20 61 6c 6c 20 74  |he case of all t|
0000b280  68 65 20 77 72 69 74 61  62 6c 65 20 69 63 6f 6e  |he writable icon|
0000b290  73 20 74 6f 20 65 6e 73  75 72 65 20 61 20 63 6f  |s to ensure a co|
0000b2a0  6e 73 69 73 74 61 6e 74  20 66 6f 72 6d 61 74 2e  |nsistant format.|
0000b2b0  0d 2f c6 4c f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |./.L. **********|
0000b2c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000b2f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 2f d0 16  |************./..|
0000b300  dd 20 f2 5f 46 6f 72 6d  61 74 49 63 6f 6e 54 65  |. ._FormatIconTe|
0000b310  78 74 0d 2f da 0e 20 20  20 ea 20 4c 6f 6f 70 25  |xt./..   . Loop%|
0000b320  0d 2f e4 3a 20 20 20 e3  20 4c 6f 6f 70 25 3d 54  |./.:   . Loop%=T|
0000b330  6f 70 53 65 74 53 69 64  65 4f 4e 45 53 74 61 72  |opSetSideONEStar|
0000b340  74 25 20 b8 20 54 6f 70  53 65 74 53 69 64 65 54  |t% . TopSetSideT|
0000b350  57 4f 45 6e 64 25 20 88  20 32 0d 2f ee 31 20 20  |WOEnd% . 2./.1  |
0000b360  20 20 20 20 f2 5f 53 65  74 49 63 6f 6e 54 65 78  |    ._SetIconTex|
0000b370  74 28 4c 6f 6f 70 25 2c  4d 61 69 6e 25 2c a4 5f  |t(Loop%,Main%,._|
0000b380  43 45 57 28 4c 6f 6f 70  25 29 29 0d 2f f8 35 20  |CEW(Loop%))./.5 |
0000b390  20 20 20 20 20 f2 5f 53  65 74 49 63 6f 6e 54 65  |     ._SetIconTe|
0000b3a0  78 74 28 4c 6f 6f 70 25  2b 31 2c 4d 61 69 6e 25  |xt(Loop%+1,Main%|
0000b3b0  2c a4 5f 43 45 57 28 4c  6f 6f 70 25 2b 31 29 29  |,._CEW(Loop%+1))|
0000b3c0  0d 30 02 1f 20 20 20 20  20 20 f2 5f 52 65 64 72  |.0..      ._Redr|
0000b3d0  61 77 28 4d 61 69 6e 25  2c 4c 6f 6f 70 25 29 0d  |aw(Main%,Loop%).|
0000b3e0  30 0c 21 20 20 20 20 20  20 f2 5f 52 65 64 72 61  |0.!      ._Redra|
0000b3f0  77 28 4d 61 69 6e 25 2c  4c 6f 6f 70 25 2b 31 29  |w(Main%,Loop%+1)|
0000b400  0d 30 16 08 20 20 20 ed  0d 30 20 3a 20 20 20 e3  |.0..   ..0 :   .|
0000b410  20 4c 6f 6f 70 25 3d 42  74 6d 53 65 74 53 69 64  | Loop%=BtmSetSid|
0000b420  65 4f 4e 45 53 74 61 72  74 25 20 b8 20 42 74 6d  |eONEStart% . Btm|
0000b430  53 65 74 53 69 64 65 54  57 4f 45 6e 64 25 20 88  |SetSideTWOEnd% .|
0000b440  20 32 0d 30 2a 31 20 20  20 20 20 20 f2 5f 53 65  | 2.0*1      ._Se|
0000b450  74 49 63 6f 6e 54 65 78  74 28 4c 6f 6f 70 25 2c  |tIconText(Loop%,|
0000b460  4d 61 69 6e 25 2c a4 5f  43 45 57 28 4c 6f 6f 70  |Main%,._CEW(Loop|
0000b470  25 29 29 0d 30 34 35 20  20 20 20 20 20 f2 5f 53  |%)).045      ._S|
0000b480  65 74 49 63 6f 6e 54 65  78 74 28 4c 6f 6f 70 25  |etIconText(Loop%|
0000b490  2b 31 2c 4d 61 69 6e 25  2c a4 5f 43 45 57 28 4c  |+1,Main%,._CEW(L|
0000b4a0  6f 6f 70 25 2b 31 29 29  0d 30 3e 1f 20 20 20 20  |oop%+1)).0>.    |
0000b4b0  20 20 f2 5f 52 65 64 72  61 77 28 4d 61 69 6e 25  |  ._Redraw(Main%|
0000b4c0  2c 4c 6f 6f 70 25 29 0d  30 48 21 20 20 20 20 20  |,Loop%).0H!     |
0000b4d0  20 f2 5f 52 65 64 72 61  77 28 4d 61 69 6e 25 2c  | ._Redraw(Main%,|
0000b4e0  4c 6f 6f 70 25 2b 31 29  0d 30 52 08 20 20 20 ed  |Loop%+1).0R.   .|
0000b4f0  0d 30 5c 43 20 20 20 f2  5f 53 65 74 49 63 6f 6e  |.0\C   ._SetIcon|
0000b500  54 65 78 74 28 54 69 74  6c 65 53 69 64 65 4f 4e  |Text(TitleSideON|
0000b510  45 25 2c 4d 61 69 6e 25  2c a4 5f 49 63 6f 6e 5f  |E%,Main%,._Icon_|
0000b520  46 54 55 28 54 69 74 6c  65 53 69 64 65 4f 4e 45  |FTU(TitleSideONE|
0000b530  25 29 29 0d 30 66 43 20  20 20 f2 5f 53 65 74 49  |%)).0fC   ._SetI|
0000b540  63 6f 6e 54 65 78 74 28  54 69 74 6c 65 53 69 64  |conText(TitleSid|
0000b550  65 54 57 4f 25 2c 4d 61  69 6e 25 2c a4 5f 49 63  |eTWO%,Main%,._Ic|
0000b560  6f 6e 5f 46 54 55 28 54  69 74 6c 65 53 69 64 65  |on_FTU(TitleSide|
0000b570  54 57 4f 25 29 29 0d 30  70 45 20 20 20 f2 5f 53  |TWO%)).0pE   ._S|
0000b580  65 74 49 63 6f 6e 54 65  78 74 28 41 72 74 69 73  |etIconText(Artis|
0000b590  74 53 69 64 65 4f 4e 45  25 2c 4d 61 69 6e 25 2c  |tSideONE%,Main%,|
0000b5a0  a4 5f 49 63 6f 6e 5f 46  54 55 28 41 72 74 69 73  |._Icon_FTU(Artis|
0000b5b0  74 53 69 64 65 4f 4e 45  25 29 29 0d 30 7a 45 20  |tSideONE%)).0zE |
0000b5c0  20 20 f2 5f 53 65 74 49  63 6f 6e 54 65 78 74 28  |  ._SetIconText(|
0000b5d0  41 72 74 69 73 74 53 69  64 65 54 57 4f 25 2c 4d  |ArtistSideTWO%,M|
0000b5e0  61 69 6e 25 2c a4 5f 49  63 6f 6e 5f 46 54 55 28  |ain%,._Icon_FTU(|
0000b5f0  41 72 74 69 73 74 53 69  64 65 54 57 4f 25 29 29  |ArtistSideTWO%))|
0000b600  0d 30 84 2e 20 20 20 e3  20 4c 6f 6f 70 25 3d 20  |.0..   . Loop%= |
0000b610  54 69 74 6c 65 53 69 64  65 4f 4e 45 25 20 b8 20  |TitleSideONE% . |
0000b620  41 72 74 69 73 74 53 69  64 65 54 57 4f 25 0d 30  |ArtistSideTWO%.0|
0000b630  8e 1f 20 20 20 20 20 20  f2 5f 52 65 64 72 61 77  |..      ._Redraw|
0000b640  28 4d 61 69 6e 25 2c 4c  6f 6f 70 25 29 0d 30 98  |(Main%,Loop%).0.|
0000b650  08 20 20 20 ed 0d 30 a2  05 e1 0d 30 ac 05 3a 0d  |.   ..0....0..:.|
0000b660  30 b6 37 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |0.7. ***********|
0000b670  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000b690  2a 2a 2a 2a 2a 2a 0d 30  c0 37 f4 20 46 75 6e 63  |******.0.7. Func|
0000b6a0  74 69 6f 6e 20 74 6f 20  43 61 70 69 74 61 6c 69  |tion to Capitali|
0000b6b0  73 65 20 45 61 63 68 20  57 6f 72 64 20 69 6e 20  |se Each Word in |
0000b6c0  61 20 67 69 76 65 6e 20  49 63 6f 6e 2e 0d 30 ca  |a given Icon..0.|
0000b6d0  37 f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |7. *************|
0000b6e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000b700  2a 2a 2a 2a 0d 30 d4 12  dd 20 a4 5f 43 45 57 28  |****.0... ._CEW(|
0000b710  49 63 6f 6e 25 29 0d 30  de 24 20 20 20 ea 20 49  |Icon%).0.$   . I|
0000b720  63 6f 6e 54 65 78 74 24  2c 20 49 6e 64 65 78 25  |conText$, Index%|
0000b730  2c 20 45 6e 64 25 2c 20  43 25 0d 30 e8 2e 20 20  |, End%, C%.0..  |
0000b740  20 49 63 6f 6e 54 65 78  74 24 3d a4 5f 52 65 61  | IconText$=._Rea|
0000b750  64 49 63 6f 6e 54 65 78  74 28 4d 61 69 6e 25 2c  |dIconText(Main%,|
0000b760  49 63 6f 6e 25 2c a3 29  0d 30 f2 29 20 20 20 f4  |Icon%,.).0.)   .|
0000b770  20 49 66 20 69 63 6f 6e  20 69 73 20 65 6d 70 74  | If icon is empt|
0000b780  79 2c 20 61 62 61 6e 64  6f 6e 20 66 6f 72 6d 61  |y, abandon forma|
0000b790  74 0d 30 fc 22 20 20 20  e7 20 49 63 6f 6e 54 65  |t.0."   . IconTe|
0000b7a0  78 74 24 3d 22 22 20 8c  20 3d 49 63 6f 6e 54 65  |xt$="" . =IconTe|
0000b7b0  78 74 24 0d 31 06 23 20  20 20 49 6e 64 65 78 25  |xt$.1.#   Index%|
0000b7c0  3d 31 20 3a 20 45 6e 64  25 3d a9 28 49 63 6f 6e  |=1 : End%=.(Icon|
0000b7d0  54 65 78 74 24 29 0d 31  10 1a 20 20 20 f4 20 47  |Text$).1..   . G|
0000b7e0  65 74 20 31 73 74 20 63  68 61 72 61 63 74 65 72  |et 1st character|
0000b7f0  0d 31 1a 16 20 20 20 c8  95 20 49 6e 64 65 78 25  |.1..   .. Index%|
0000b800  3c 3d 45 6e 64 25 0d 31  24 37 20 20 20 20 20 20  |<=End%.1$7      |
0000b810  c1 49 63 6f 6e 54 65 78  74 24 2c 49 6e 64 65 78  |.IconText$,Index|
0000b820  25 2c 31 29 3d a4 5f 43  68 61 72 5f 46 54 55 28  |%,1)=._Char_FTU(|
0000b830  49 63 6f 6e 25 2c 49 6e  64 65 78 25 29 0d 31 2e  |Icon%,Index%).1.|
0000b840  13 20 20 20 20 20 20 49  6e 64 65 78 25 2b 3d 31  |.      Index%+=1|
0000b850  0d 31 38 21 20 20 20 20  20 20 43 24 3d c1 49 63  |.18!      C$=.Ic|
0000b860  6f 6e 54 65 78 74 24 2c  49 6e 64 65 78 25 2c 31  |onText$,Index%,1|
0000b870  29 0d 31 42 35 20 20 20  20 20 20 f4 20 4c 6f 6f  |).1B5      . Loo|
0000b880  70 20 75 6e 74 69 6c 20  65 6e 64 20 6f 66 20 77  |p until end of w|
0000b890  6f 72 64 20 28 6f 72 20  65 6e 64 20 6f 66 20 73  |ord (or end of s|
0000b8a0  74 72 69 6e 67 29 0d 31  4c 23 20 20 20 20 20 20  |tring).1L#      |
0000b8b0  c8 95 20 43 24 3c 3e 22  20 22 20 80 20 49 6e 64  |.. C$<>" " . Ind|
0000b8c0  65 78 25 3c 3d 45 6e 64  25 0d 31 56 3a 20 20 20  |ex%<=End%.1V:   |
0000b8d0  20 20 20 20 20 20 c1 49  63 6f 6e 54 65 78 74 24  |      .IconText$|
0000b8e0  2c 49 6e 64 65 78 25 2c  31 29 3d a4 5f 43 68 61  |,Index%,1)=._Cha|
0000b8f0  72 5f 46 54 4c 28 49 63  6f 6e 25 2c 49 6e 64 65  |r_FTL(Icon%,Inde|
0000b900  78 25 29 0d 31 60 16 20  20 20 20 20 20 20 20 20  |x%).1`.         |
0000b910  49 6e 64 65 78 25 2b 3d  31 0d 31 6a 24 20 20 20  |Index%+=1.1j$   |
0000b920  20 20 20 20 20 20 43 24  3d c1 49 63 6f 6e 54 65  |      C$=.IconTe|
0000b930  78 74 24 2c 49 6e 64 65  78 25 2c 31 29 0d 31 74  |xt$,Index%,1).1t|
0000b940  0b 20 20 20 20 20 20 ce  0d 31 7e 39 20 20 20 20  |.      ..1~9    |
0000b950  20 20 f4 20 4c 6f 6f 70  20 75 6e 74 69 6c 20 6e  |  . Loop until n|
0000b960  65 78 74 20 77 6f 72 64  20 66 6f 75 6e 64 20 28  |ext word found (|
0000b970  4f 72 20 65 6e 64 20 6f  66 20 73 74 72 69 6e 67  |Or end of string|
0000b980  29 0d 31 88 22 20 20 20  20 20 20 c8 95 20 43 24  |).1."      .. C$|
0000b990  3d 22 20 22 20 80 20 49  6e 64 65 78 25 3c 3d 45  |=" " . Index%<=E|
0000b9a0  6e 64 25 0d 31 92 16 20  20 20 20 20 20 20 20 20  |nd%.1..         |
0000b9b0  49 6e 64 65 78 25 2b 3d  31 0d 31 9c 24 20 20 20  |Index%+=1.1.$   |
0000b9c0  20 20 20 20 20 20 43 24  3d c1 49 63 6f 6e 54 65  |      C$=.IconTe|
0000b9d0  78 74 24 2c 49 6e 64 65  78 25 2c 31 29 0d 31 a6  |xt$,Index%,1).1.|
0000b9e0  0b 20 20 20 20 20 20 ce  0d 31 b0 16 20 20 20 20  |.      ..1..    |
0000b9f0  20 20 f1 49 6e 64 65 78  25 2c 45 6e 64 25 0d 31  |  .Index%,End%.1|
0000ba00  ba 08 20 20 20 ce 0d 31  c4 0e 3d 49 63 6f 6e 54  |..   ..1..=IconT|
0000ba10  65 78 74 24 0d 31 ce 05  3a 0d 31 d8 3f f4 20 2a  |ext$.1..:.1.?. *|
0000ba20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000ba50  2a 2a 2a 2a 2a 2a 2a 2a  0d 31 e2 3f f4 20 46 75  |********.1.?. Fu|
0000ba60  6e 63 74 69 6f 6e 20 74  6f 20 46 6f 72 63 65 20  |nction to Force |
0000ba70  61 6c 6c 20 74 65 78 74  20 69 6e 20 61 20 67 69  |all text in a gi|
0000ba80  76 65 6e 20 69 63 6f 6e  20 74 6f 20 55 50 50 45  |ven icon to UPPE|
0000ba90  52 20 43 41 53 45 2e 0d  31 ec 3f f4 20 2a 2a 2a  |R CASE..1.?. ***|
0000baa0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000bad0  2a 2a 2a 2a 2a 2a 0d 31  f6 17 dd 20 a4 5f 49 63  |******.1... ._Ic|
0000bae0  6f 6e 5f 46 54 55 28 49  63 6f 6e 25 29 0d 32 00  |on_FTU(Icon%).2.|
0000baf0  12 20 20 20 ea 20 49 63  6f 6e 54 65 78 74 24 0d  |.   . IconText$.|
0000bb00  32 0a 2e 20 20 20 49 63  6f 6e 54 65 78 74 24 3d  |2..   IconText$=|
0000bb10  a4 5f 52 65 61 64 49 63  6f 6e 54 65 78 74 28 4d  |._ReadIconText(M|
0000bb20  61 69 6e 25 2c 49 63 6f  6e 25 2c a3 29 0d 32 14  |ain%,Icon%,.).2.|
0000bb30  23 20 20 20 49 6e 64 65  78 25 3d 31 20 3a 20 45  |#   Index%=1 : E|
0000bb40  6e 64 25 3d a9 28 49 63  6f 6e 54 65 78 74 24 29  |nd%=.(IconText$)|
0000bb50  0d 32 1e 16 20 20 20 c8  95 20 49 6e 64 65 78 25  |.2..   .. Index%|
0000bb60  3c 3d 45 6e 64 25 0d 32  28 37 20 20 20 20 20 20  |<=End%.2(7      |
0000bb70  c1 49 63 6f 6e 54 65 78  74 24 2c 49 6e 64 65 78  |.IconText$,Index|
0000bb80  25 2c 31 29 3d a4 5f 43  68 61 72 5f 46 54 55 28  |%,1)=._Char_FTU(|
0000bb90  49 63 6f 6e 25 2c 49 6e  64 65 78 25 29 0d 32 32  |Icon%,Index%).22|
0000bba0  13 20 20 20 20 20 20 49  6e 64 65 78 25 2b 3d 31  |.      Index%+=1|
0000bbb0  0d 32 3c 21 20 20 20 20  20 20 43 24 3d c1 49 63  |.2<!      C$=.Ic|
0000bbc0  6f 6e 54 65 78 74 24 2c  49 6e 64 65 78 25 2c 31  |onText$,Index%,1|
0000bbd0  29 0d 32 46 08 20 20 20  ce 0d 32 50 0e 3d 49 63  |).2F.   ..2P.=Ic|
0000bbe0  6f 6e 54 65 78 74 24 0d  32 5a 05 3a 0d 32 64 3f  |onText$.2Z.:.2d?|
0000bbf0  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
0000bc00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000bc20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0d 32 6e 3f f4  |***********.2n?.|
0000bc30  20 46 75 6e 63 74 69 6f  6e 20 74 6f 20 46 6f 72  | Function to For|
0000bc40  63 65 20 61 6c 6c 20 74  65 78 74 20 69 6e 20 61  |ce all text in a|
0000bc50  20 67 69 76 65 6e 20 69  63 6f 6e 20 74 6f 20 4c  | given icon to L|
0000bc60  4f 57 45 52 20 43 41 53  45 2e 0d 32 78 3f f4 20  |OWER CASE..2x?. |
0000bc70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000bca0  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 32 82 17 dd 20 a4  |*********.2... .|
0000bcb0  5f 49 63 6f 6e 5f 46 54  4c 28 49 63 6f 6e 25 29  |_Icon_FTL(Icon%)|
0000bcc0  0d 32 8c 12 20 20 20 ea  20 49 63 6f 6e 54 65 78  |.2..   . IconTex|
0000bcd0  74 24 0d 32 96 2e 20 20  20 49 63 6f 6e 54 65 78  |t$.2..   IconTex|
0000bce0  74 24 3d a4 5f 52 65 61  64 49 63 6f 6e 54 65 78  |t$=._ReadIconTex|
0000bcf0  74 28 4d 61 69 6e 25 2c  49 63 6f 6e 25 2c a3 29  |t(Main%,Icon%,.)|
0000bd00  0d 32 a0 23 20 20 20 49  6e 64 65 78 25 3d 31 20  |.2.#   Index%=1 |
0000bd10  3a 20 45 6e 64 25 3d a9  28 49 63 6f 6e 54 65 78  |: End%=.(IconTex|
0000bd20  74 24 29 0d 32 aa 16 20  20 20 c8 95 20 49 6e 64  |t$).2..   .. Ind|
0000bd30  65 78 25 3c 3d 45 6e 64  25 0d 32 b4 37 20 20 20  |ex%<=End%.2.7   |
0000bd40  20 20 20 c1 49 63 6f 6e  54 65 78 74 24 2c 49 6e  |   .IconText$,In|
0000bd50  64 65 78 25 2c 31 29 3d  a4 5f 43 68 61 72 5f 46  |dex%,1)=._Char_F|
0000bd60  54 4c 28 49 63 6f 6e 25  2c 49 6e 64 65 78 25 29  |TL(Icon%,Index%)|
0000bd70  0d 32 be 13 20 20 20 20  20 20 49 6e 64 65 78 25  |.2..      Index%|
0000bd80  2b 3d 31 0d 32 c8 21 20  20 20 20 20 20 43 24 3d  |+=1.2.!      C$=|
0000bd90  c1 49 63 6f 6e 54 65 78  74 24 2c 49 6e 64 65 78  |.IconText$,Index|
0000bda0  25 2c 31 29 0d 32 d2 08  20 20 20 ce 0d 32 dc 05  |%,1).2..   ..2..|
0000bdb0  3a 0d 32 e6 38 f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |:.2.8. *********|
0000bdc0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000bde0  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 32 f0 38 f4 20 46  |*********.2.8. F|
0000bdf0  75 6e 63 74 69 6f 6e 20  74 6f 20 46 6f 72 63 65  |unction to Force|
0000be00  20 61 20 67 69 76 65 6e  20 63 68 61 72 61 63 74  | a given charact|
0000be10  65 72 20 74 6f 20 55 50  50 45 52 20 43 41 53 45  |er to UPPER CASE|
0000be20  2e 0d 32 fa 38 f4 20 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..2.8. *********|
0000be30  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000be50  2a 2a 2a 2a 2a 2a 2a 2a  2a 0d 33 04 1e dd 20 a4  |*********.3... .|
0000be60  5f 43 68 61 72 5f 46 54  55 28 49 63 6f 6e 25 2c  |_Char_FTU(Icon%,|
0000be70  49 6e 64 65 78 25 29 0d  33 0e 0e 20 20 20 ea 20  |Index%).3..   . |
0000be80  54 65 6d 70 24 0d 33 18  21 20 20 20 54 65 6d 70  |Temp$.3.!   Temp|
0000be90  24 3d c1 49 63 6f 6e 54  65 78 74 24 2c 49 6e 64  |$=.IconText$,Ind|
0000bea0  65 78 25 2c 31 29 0d 33  22 3a 20 20 20 e7 20 54  |ex%,1).3":   . T|
0000beb0  65 6d 70 24 3e 3d 22 61  22 20 80 20 54 65 6d 70  |emp$>="a" . Temp|
0000bec0  24 3c 3d 22 7a 22 20 8c  20 54 65 6d 70 24 3d bd  |$<="z" . Temp$=.|
0000bed0  28 97 28 54 65 6d 70 24  29 20 80 20 26 44 46 29  |(.(Temp$) . &DF)|
0000bee0  0d 33 2c 0a 3d 54 65 6d  70 24 0d 33 36 05 3a 0d  |.3,.=Temp$.36.:.|
0000bef0  33 40 38 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |3@8. ***********|
0000bf00  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000bf20  2a 2a 2a 2a 2a 2a 2a 0d  33 4a 38 f4 20 46 75 6e  |*******.3J8. Fun|
0000bf30  63 74 69 6f 6e 20 74 6f  20 46 6f 72 63 65 20 61  |ction to Force a|
0000bf40  20 67 69 76 65 6e 20 63  68 61 72 61 63 74 65 72  | given character|
0000bf50  20 74 6f 20 4c 4f 57 45  52 20 43 41 53 45 2e 0d  | to LOWER CASE..|
0000bf60  33 54 38 f4 20 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |3T8. ***********|
0000bf70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000bf90  2a 2a 2a 2a 2a 2a 2a 0d  33 5e 1e dd 20 a4 5f 43  |*******.3^.. ._C|
0000bfa0  68 61 72 5f 46 54 4c 28  49 63 6f 6e 25 2c 49 6e  |har_FTL(Icon%,In|
0000bfb0  64 65 78 25 29 0d 33 68  0e 20 20 20 ea 20 54 65  |dex%).3h.   . Te|
0000bfc0  6d 70 24 0d 33 72 21 20  20 20 54 65 6d 70 24 3d  |mp$.3r!   Temp$=|
0000bfd0  c1 49 63 6f 6e 54 65 78  74 24 2c 49 6e 64 65 78  |.IconText$,Index|
0000bfe0  25 2c 31 29 0d 33 7c 3a  20 20 20 e7 20 54 65 6d  |%,1).3|:   . Tem|
0000bff0  70 24 3e 3d 22 41 22 20  80 20 54 65 6d 70 24 3c  |p$>="A" . Temp$<|
0000c000  3d 22 5a 22 20 8c 20 54  65 6d 70 24 3d bd 28 97  |="Z" . Temp$=.(.|
0000c010  28 54 65 6d 70 24 29 20  84 20 26 32 30 29 0d 33  |(Temp$) . &20).3|
0000c020  86 0a 3d 54 65 6d 70 24  0d 33 90 05 3a 0d 33 9a  |..=Temp$.3..:.3.|
0000c030  81 f4 20 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.. *************|
0000c040  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000c0a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 33  |**************.3|
0000c0b0  a4 7e f4 20 54 68 69 73  20 6d 65 73 73 61 67 65  |.~. This message|
0000c0c0  20 69 73 20 75 6e 69 71  75 65 20 74 6f 20 74 68  | is unique to th|
0000c0d0  65 20 50 6f 72 74 61 62  6c 65 2e 20 49 74 20 6f  |e Portable. It o|
0000c0e0  63 63 75 72 65 73 20 77  68 65 6e 20 74 68 65 20  |ccures when the |
0000c0f0  62 61 74 74 65 72 79 20  69 73 20 74 6f 6f 20 6c  |battery is too l|
0000c100  6f 77 20 66 6f 72 20 63  6f 6e 74 69 6e 75 65 64  |ow for continued|
0000c110  20 75 73 61 67 65 2e 20  49 74 20 69 73 20 61 20  | usage. It is a |
0000c120  73 65 63 6f 6e 64 20 73  74 61 67 65 0d 33 ae 7c  |second stage.3.||
0000c130  f4 20 77 61 72 6e 69 6e  67 2c 20 74 68 65 20 66  |. warning, the f|
0000c140  69 72 73 74 20 73 74 61  67 65 20 69 6e 76 69 74  |irst stage invit|
0000c150  65 73 20 74 68 65 20 75  73 65 72 20 74 6f 20 73  |es the user to s|
0000c160  68 75 74 20 64 6f 77 6e  20 74 68 65 20 6d 61 63  |hut down the mac|
0000c170  68 69 6e 65 20 73 61 66  65 6c 79 2c 20 62 75 74  |hine safely, but|
0000c180  20 69 66 20 74 68 69 73  20 69 73 20 6e 6f 74 20  | if this is not |
0000c190  64 6f 6e 65 20 74 68 65  6e 20 74 68 69 73 20 73  |done then this s|
0000c1a0  74 61 67 65 20 74 77 6f  0d 33 b8 7b f4 20 6d 65  |tage two.3.{. me|
0000c1b0  73 73 61 67 65 20 69 73  20 73 65 6e 74 20 6f 75  |ssage is sent ou|
0000c1c0  74 2e 20 49 66 20 79 6f  75 20 61 72 65 20 61 77  |t. If you are aw|
0000c1d0  61 72 65 20 6f 66 20 74  68 65 20 73 74 61 74 75  |are of the statu|
0000c1e0  73 20 6f 66 20 79 6f 75  72 20 66 69 6c 65 20 74  |s of your file t|
0000c1f0  68 65 6e 20 79 6f 75 20  73 68 6f 75 6c 64 20 70  |hen you should p|
0000c200  72 6f 6d 70 74 20 74 68  65 20 75 73 65 72 20 74  |rompt the user t|
0000c210  6f 20 73 61 76 65 20 61  6e 79 20 6d 6f 64 69 66  |o save any modif|
0000c220  69 65 64 0d 33 c2 7a f4  20 6f 72 20 75 6e 73 61  |ied.3.z. or unsa|
0000c230  76 65 64 20 66 69 6c 65  73 20 69 6e 20 79 6f 75  |ved files in you|
0000c240  72 20 6e 6f 72 6d 61 6c  20 63 6c 6f 73 65 64 6f  |r normal closedo|
0000c250  77 6e 20 6d 61 6e 6e 65  72 2e 20 49 66 20 79 6f  |wn manner. If yo|
0000c260  75 20 63 61 6e 6e 6f 74  20 64 6f 20 74 68 69 73  |u cannot do this|
0000c270  2c 20 6f 72 20 74 68 65  20 75 73 65 72 20 64 6f  |, or the user do|
0000c280  65 73 20 6e 6f 74 20 72  65 73 70 6f 6e 64 20 28  |es not respond (|
0000c290  45 47 20 4d 61 63 68 69  6e 65 20 69 73 0d 33 cc  |EG Machine is.3.|
0000c2a0  63 f4 20 75 6e 61 74 74  65 6e 64 65 64 29 20 74  |c. unattended) t|
0000c2b0  68 65 6e 20 74 68 65 20  61 70 70 6c 69 63 61 74  |hen the applicat|
0000c2c0  69 6f 6e 20 73 68 6f 75  6c 64 20 73 61 76 65 20  |ion should save |
0000c2d0  74 68 65 20 64 61 74 61  20 69 6e 74 6f 20 74 68  |the data into th|
0000c2e0  65 20 73 63 72 61 70 20  64 69 72 65 63 74 6f 72  |e scrap director|
0000c2f0  79 20 62 79 20 74 68 65  6d 73 65 6c 76 65 73 2e  |y by themselves.|
0000c300  0d 33 d6 80 f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.3... **********|
0000c310  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000c380  0d 33 e0 17 dd 20 f2 5f  4c 6f 77 50 6f 77 65 72  |.3... ._LowPower|
0000c390  57 61 72 6e 69 6e 67 0d  33 ea 31 20 20 20 ea 20  |Warning.3.1   . |
0000c3a0  53 61 76 65 4e 61 6d 65  24 2c 50 6f 69 6e 74 65  |SaveName$,Pointe|
0000c3b0  72 25 2c 4c 65 61 66 4e  61 6d 65 24 2c 4d 79 53  |r%,LeafName$,MyS|
0000c3c0  63 72 61 70 44 69 72 24  0d 33 f4 3b 20 20 20 4d  |crapDir$.3.;   M|
0000c3d0  79 53 63 72 61 70 44 69  72 24 3d a4 5f 43 6f 6e  |yScrapDir$=._Con|
0000c3e0  76 65 72 74 53 79 73 74  65 6d 54 6f 53 74 72 69  |vertSystemToStri|
0000c3f0  6e 67 28 22 57 69 6d 70  24 53 63 72 61 70 44 69  |ng("Wimp$ScrapDi|
0000c400  72 22 29 0d 33 fe 19 20  20 20 e7 20 4d 79 53 63  |r").3..   . MySc|
0000c410  72 61 70 44 69 72 24 3d  22 22 20 8c 0d 34 08 3b  |rapDir$="" ..4.;|
0000c420  20 20 20 20 20 20 4d 79  53 63 72 61 70 44 69 72  |      MyScrapDir|
0000c430  24 3d a4 5f 43 6f 6e 76  65 72 74 53 79 73 74 65  |$=._ConvertSyste|
0000c440  6d 54 6f 53 74 72 69 6e  67 28 22 57 69 6d 70 24  |mToString("Wimp$|
0000c450  53 63 72 61 70 22 29 0d  34 12 1e 20 20 20 20 20  |Scrap").4..     |
0000c460  20 e7 20 4d 79 53 63 72  61 70 44 69 72 24 3d 22  | . MyScrapDir$="|
0000c470  22 20 8c 20 e1 0d 34 1c  21 20 20 20 20 20 20 50  |" . ..4.!      P|
0000c480  6f 69 6e 74 65 72 25 3d  a9 28 4d 79 53 63 72 61  |ointer%=.(MyScra|
0000c490  70 44 69 72 24 29 0d 34  26 37 20 20 20 20 20 20  |pDir$).4&7      |
0000c4a0  c8 95 20 50 6f 69 6e 74  65 72 25 3e 31 20 80 20  |.. Pointer%>1 . |
0000c4b0  c1 4d 79 53 63 72 61 70  44 69 72 24 2c 50 6f 69  |.MyScrapDir$,Poi|
0000c4c0  6e 74 65 72 25 2c 31 29  3c 3e 22 2e 22 0d 34 30  |nter%,1)<>".".40|
0000c4d0  1b 20 20 20 20 20 20 20  20 20 20 20 20 50 6f 69  |.            Poi|
0000c4e0  6e 74 65 72 25 2d 3d 31  0d 34 3a 0b 20 20 20 20  |nter%-=1.4:.    |
0000c4f0  20 20 ce 0d 34 44 1a 20  20 20 20 20 20 e7 20 50  |  ..4D.      . P|
0000c500  6f 69 6e 74 65 72 25 3d  31 20 8c 20 e1 0d 34 4e  |ointer%=1 . ..4N|
0000c510  30 20 20 20 20 20 20 4d  79 53 63 72 61 70 44 69  |0      MyScrapDi|
0000c520  72 24 3d c0 4d 79 53 63  72 61 70 44 69 72 24 2c  |r$=.MyScrapDir$,|
0000c530  28 50 6f 69 6e 74 65 72  25 2d 31 29 29 0d 34 58  |(Pointer%-1)).4X|
0000c540  08 20 20 20 cd 0d 34 62  2a 20 20 20 4d 79 53 63  |.   ..4b*   MySc|
0000c550  72 61 70 44 69 72 24 3d  4d 79 53 63 72 61 70 44  |rapDir$=MyScrapD|
0000c560  69 72 24 2b 22 2e 43 61  73 73 65 74 74 65 22 0d  |ir$+".Cassette".|
0000c570  34 6c 1b 20 20 20 ff 22  43 44 69 72 20 22 2b 4d  |4l.   ."CDir "+M|
0000c580  79 53 63 72 61 70 44 69  72 24 0d 34 76 31 20 20  |yScrapDir$.4v1  |
0000c590  20 f2 5f 53 61 76 65 54  6f 28 4d 79 53 63 72 61  | ._SaveTo(MyScra|
0000c5a0  70 44 69 72 24 2b 22 2e  22 2b a4 5f 49 6e 76 65  |pDir$+"."+._Inve|
0000c5b0  6e 74 53 61 76 65 4e 61  6d 65 29 0d 34 80 05 e1  |ntSaveName).4...|
0000c5c0  0d 34 8a 05 3a 0d 34 94  49 f4 20 2a 2a 2a 2a 2a  |.4..:.4.I. *****|
0000c5d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000c600  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 0d 34  |**************.4|
0000c610  9e 49 f4 20 54 68 65 20  66 69 6c 65 72 20 69 73  |.I. The filer is|
0000c620  20 73 61 76 69 6e 67 20  61 20 64 65 73 6b 74 6f  | saving a deskto|
0000c630  70 20 21 42 6f 6f 74 20  66 69 6c 65 2c 20 61 64  |p !Boot file, ad|
0000c640  64 20 6d 79 20 52 55 4e  20 63 6f 6d 6d 61 6e 64  |d my RUN command|
0000c650  20 74 6f 20 69 74 2e 0d  34 a8 49 f4 20 2a 2a 2a  | to it..4.I. ***|
0000c660  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000c6a0  0d 34 b2 13 dd 20 f2 5f  44 65 73 6b 54 6f 70 53  |.4... ._DeskTopS|
0000c6b0  61 76 65 0d 34 bc 21 20  20 20 d5 23 28 42 6c 6f  |ave.4.!   .#(Blo|
0000c6c0  63 6b 25 21 32 30 29 2c  44 65 73 6b 54 6f 70 53  |ck%!20),DeskTopS|
0000c6d0  61 76 65 24 0d 34 c6 05  e1 0d 34 d0 05 3a 0d 34  |ave$.4....4..:.4|
0000c6e0  da 55 f4 20 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.U. ************|
0000c6f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000c730  2a 2a 2a 0d 34 e4 55 f4  20 4d 69 6e 69 2d 57 49  |***.4.U. Mini-WI|
0000c740  4d 50 20 50 4f 4c 4c 20  22 72 6f 75 74 69 6e 65  |MP POLL "routine|
0000c750  22 20 74 6f 20 61 6c 6c  6f 77 20 70 72 69 6e 74  |" to allow print|
0000c760  69 6e 67 20 74 6f 20 62  65 20 61 20 62 69 74 20  |ing to be a bit |
0000c770  6d 6f 72 65 20 69 6e 20  74 68 65 20 62 61 63 6b  |more in the back|
0000c780  67 72 6f 75 6e 64 21 2e  0d 34 ee 55 f4 20 2a 2a  |ground!..4.U. **|
0000c790  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
0000c7d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0d 34 f8  |*************.4.|
0000c7e0  16 dd 20 f2 5f 4d 69 6e  69 5f 57 49 4d 50 5f 50  |.. ._Mini_WIMP_P|
0000c7f0  6f 6c 6c 0d 35 02 1f 20  20 20 c8 99 20 22 50 44  |oll.5..   .. "PD|
0000c800  72 69 76 65 72 5f 53 65  6c 65 63 74 4a 6f 62 22  |river_SelectJob"|
0000c810  2c 30 0d 35 0c 19 20 20  20 c8 99 20 22 48 6f 75  |,0.5..   .. "Hou|
0000c820  72 67 6c 61 73 73 5f 4f  66 66 22 0d 35 16 23 20  |rglass_Off".5.# |
0000c830  20 20 c8 99 20 22 57 69  6d 70 5f 50 6f 6c 6c 22  |  .. "Wimp_Poll"|
0000c840  2c 30 2c 42 6c 6f 63 6b  25 20 b8 20 41 25 0d 35  |,0,Block% . A%.5|
0000c850  20 0e 20 20 20 c8 8e 20  41 25 20 ca 0d 35 2a 43  | .   .. A% ..5*C|
0000c860  20 20 20 20 20 20 c9 20  32 20 3a 20 c8 99 20 22  |      . 2 : .. "|
0000c870  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
0000c880  2c 2c 42 6c 6f 63 6b 25  20 20 20 3a 20 f4 20 61  |,,Block%   : . a|
0000c890  6c 6c 6f 77 73 20 61 75  74 6f 20 44 72 61 67 0d  |llows auto Drag.|
0000c8a0  35 34 44 20 20 20 20 20  20 c9 20 33 20 3a 20 c8  |54D      . 3 : .|
0000c8b0  99 20 22 57 69 6d 70 5f  43 6c 6f 73 65 57 69 6e  |. "Wimp_CloseWin|
0000c8c0  64 6f 77 22 2c 2c 42 6c  6f 63 6b 25 20 20 3a 20  |dow",,Block%  : |
0000c8d0  f4 20 61 6c 6c 6f 77 73  20 61 75 74 6f 20 43 6c  |. allows auto Cl|
0000c8e0  6f 73 65 0d 35 3e 2e 20  20 20 20 20 20 c9 20 31  |ose.5>.      . 1|
0000c8f0  37 2c 31 38 20 3a 20 f2  5f 44 65 63 6f 64 65 4d  |7,18 : ._DecodeM|
0000c900  65 73 73 61 67 65 28 42  6c 6f 63 6b 25 21 31 36  |essage(Block%!16|
0000c910  29 0d 35 48 08 20 20 20  cb 0d 35 52 18 20 20 20  |).5H.   ..5R.   |
0000c920  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |.. "Hourglass_On|
0000c930  22 0d 35 5c 28 20 20 20  c8 99 20 22 50 44 72 69  |".5\(   .. "PDri|
0000c940  76 65 72 5f 53 65 6c 65  63 74 4a 6f 62 22 2c 50  |ver_SelectJob",P|
0000c950  72 69 6e 74 46 69 6c 65  25 0d 35 66 05 e1 0d ff  |rintFile%.5f....|
0000c960