Home » Archimedes archive » Archimedes World » AW-1991-11.adf » November91 » !AWNov91/Goodies/Exchange/!Exchange/SourceCode/!RunImage
!AWNov91/Goodies/Exchange/!Exchange/SourceCode/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1991-11.adf » November91 |
Filename: | !AWNov91/Goodies/Exchange/!Exchange/SourceCode/!RunImage |
Read OK: | ✔ |
File size: | 40D4 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >!RunImage 20REM 30REM A Public Domain Utility By Mark Bright. 40: 50Version$="0.82 (17-May-91)" 60 70DIM Block% 1024*4 :REM General purpose WIMP workspace! 80 90PROC_Initialise_WIMP_System 100PROC_Initialise_Templates 110PROC_Initialise_Program_Variables 120PROC_CreateIconBarMenu 130: 140ON ERROR PROC_Wimp_Error 150PROC_Load 160: 170PROC_SetIconText(07,Info%,Version$,23) 180: 190: 200REM ******************************************************************************************************** 210REM All RISCOS/WIMP Specific Proceedures First, !Exchange Proc'S after.... Makes for a better skeleton prog! 220REM ******************************************************************************************************** 230 240REPEAT 250 SYS "Wimp_Poll",Mask%,Block% TO A% 260 SYS "Wimp_PollPointer",A%,,My_id% 270 CASE A% OF 280 WHEN 1 : PROC_RedrawWindow 290 WHEN 2 : SYS "Wimp_OpenWindow",,Block% : REM allows auto Drag 300 WHEN 3 : IF Block%!0<>Main% THEN 310 SYS "Wimp_CloseWindow",,Block% 320 ELSE 330 REM If Main is closed, then close preview aswell! 340 SYS "Wimp_CloseWindow",,Block% 350 Block%!0=Found% 360 SYS "Wimp_CloseWindow",,Block% 370 ENDIF 380 WHEN 6 : PROC_Mouse_Click 390 WHEN 8 : PROC_ProcessKey(Block%!24) 400 WHEN 9 : PROC_MenuSelection 410 WHEN 16,17,18 : PROC_DecodeMessage(Block%!16) 420 ENDCASE 430UNTIL FALSE 440: 450REM ***************************************** 460REM This is the WIMP Error handling routine ! 470REM ***************************************** 480DEF PROC_Wimp_Error 490 LOCAL Error$ 500 SYS "OS_Byte",3,0 510 SYS "Wimp_DragBox",,-1 520 IF IBlock%!8<>0 THEN IBlock%!8=0 : SYS "Wimp_BorderIcon",,IBlock% 530 !Block%=ERR 540 Error$ = REPORT$ 550 IF ERR<>2001 THEN Error$ += " (internal error code "+STR$ERL+"). OK To Continue, CANCEL To Abort." 560 $(Block%+4)=Error$ + CHR$0 570 SYS "Wimp_ReportError",Block%,%001 - (2*(ERR<>2001)),MyTaskName$ TO ,Result% 580 IF Result%=2 THEN PROC_CloseDown 590ENDPROC 600: 610REM ************************************ 620REM Mouse 'Click' Whilst Over Menu Item. 630REM ************************************ 640DEF PROC_MenuSelection 650 CASE Block%!0 OF 660 WHEN 0 : PROC_OpenSubMenu(Info%) 670 WHEN 1 : PROC_CloseDown : REM <Select> on "quit" causes shutdown 680 ENDCASE 690ENDPROC 700: 710REM ******************************** 720REM Mouse Button Status Has Changed. 730REM ******************************** 740DEF PROC_Mouse_Click 750LOCAL MouseX%,MouseY%,Button%,Window%,Icon% 760 MouseX%=Block%!00 : REM Block%!00 = Mouse X (Screen Co-ordinates) 770 MouseY%=Block%!04 : REM Block%!04 = Mouse Y (Screen Co-ordinates) 780 Button%=Block%!08 : REM Block%!08 = Buttons 790 Window%=Block%!12 : REM Block%!12 = Window Handle (BackGround = -1, IconBar = -2) 800 Icon% =Block%!16 : REM Block%!16 = Icon Handle ( Work Area BackGround = -1) 810 : 820 REM Temporary block for use with Interface 830 IBlock%=Block%+2048:FOR Loop%=0 TO 32 STEP4:IBlock%!Loop%=Block%!Loop%:NEXT 840 : 850 IF Window%=IconBar% AND Icon%=IconBarIconHandle% THEN 860 CASE Button% OF 870 WHEN %100 : PROC_OpenMainWindow 880 WHEN %001 : PROC_OpenMainWindow 890 WHEN %010 : SYS "Wimp_CreateMenu",,IconBarMenu%,Block%!0-96,(40*2)+96 900 ENDCASE 910 ENDIF 920 930 IF Window%=Main% AND Button%<>%010 THEN 940 CASE Icon% OF 950 WHEN Print% : SYS "Wimp_BorderIcon",,IBlock% 960 PROC_PrintOut 970 IBlock%!8=0:SYS "Wimp_BorderIcon",,IBlock% 980 ENDCASE 990 ENDIF 1000ENDPROC 1010: 1020: 1030REM ******************************************************************* 1040REM When a key is pressed, Check if it concerns me. If not, Pass it on! 1050REM ******************************************************************* 1060DEF PROC_ProcessKey(KeyPressed) 1070 LOCAL Icon%,Index%,Window% 1080 Window%=Block%!0 1090 Icon%=Block%!4 1100 Index%=Block%!20 1110 CASE KeyPressed OF 1120 1130 WHEN &180 : SYS "Wimp_BorderIcon",,Block% 1140 PROC_PrintOut 1150 Block%!18=0:SYS "Wimp_BorderIcon",,Block% 1160 REM <Print> 1170 1180 WHEN &0D : PROC_Search 1190 REM <Return> 1200 1210 OTHERWISE SYS "Wimp_ProcessKey",Block%!24 1220 1230 ENDCASE 1240ENDPROC 1250: 1260REM ****************************** 1270REM Set which icon the caret is in 1280REM ****************************** 1290DEF PROC_SetCaretPosition(Icon%,Index%) 1300 IconLength%=LEN(FN_ReadIconText(Main%,Icon%)) 1310 IF Index%>IconLength% THEN Index%=IconLength% 1320 SYS "Wimp_SetCaretPosition",Main%,Icon%,,,-1,Index% 1330ENDPROC 1340: 1350REM ******************************* 1360REM Redraw the specifiied icon (v2) 1370REM ******************************* 1380DEF PROC_Redraw(Window%,Icon%) 1390 Block%!0=Window% 1400 Block%!4=Icon% 1410 Block%!8=0 1420 Block%!12=0 1430 SYS "Wimp_SetIconState",,Block% 1440ENDPROC 1450: 1460REM *************************************************************** 1470REM When a message is received, Control is passed to here for decoding 1480REM *************************************************************** 1490DEF PROC_DecodeMessage(Request%) 1500 CASE Request% OF 1510 WHEN 0 : PROC_CloseDown 1520 WHEN &502 : SYS "Wimp_SendInformation",,Block% 1530 WHEN &400C1 : PROC_SetUpPalette 1540 WHEN &400C2 : IF FN_ReadString(Block%+28)=MyTaskName$ AND Block%!4<> My_id% THEN 1550 REM Another !Exchange is trying to start up, so I am sodding off! 1560 PROC_CloseDown 1570 ENDIF 1580 ENDCASE 1590ENDPROC 1600: 1610REM ************************************************************************** 1620REM Read in how many colours are available, and set up my two colours to suit! 1630REM ************************************************************************** 1640DEF PROC_SetUpPalette 1650 SYS "OS_ReadModeVariable",-1,3 TO ,,NoOfColours% 1660 CASE NoOfColours% OF 1670 WHEN 1,3,15 : BaseColour%=7 : TownColour%=3 1680 WHEN 63 : BaseColour%=64 : TownColour%=42 1690 ENDCASE 1700ENDPROC 1710: 1720REM *********************************************************** 1730REM All WIMP Programs should be able to shut themselves down!!! 1740REM *********************************************************** 1750DEF PROC_CloseDown 1760 SYS "Wimp_GetPointerInfo",,Block% 1770 SYS "Wimp_CloseDown",My_id%,&4B534154 1780 SYS "Wimp_ReleaseInterface",My_id% 1790 SYS "OS_Exit" 1800ENDPROC 1810: 1820REM ******************************************************************* 1830REM This writes over the text in the Icon, and it should not be done!!! 1840REM Only Works With Indirected Text Strings! 1850REM ******************************************************************* 1860DEF PROC_SetIconText(IconHandle%,WindowHandle%,Text$,MaxLength%) 1870 LOCAL Pointer% 1880 Block%!0=WindowHandle% 1890 Block%!4=IconHandle% 1900 SYS "Wimp_GetIconState",,Block% 1910 IF (Block%!24 AND (1<<8))<>0 THEN 1920 Pointer%=Block%!28 1930 ELSE 1940 Pointer%=Block%+28 1950 ENDIF 1960 IF LENText$>MaxLength% THEN 1970 Block%!0=2001 1980 Error$ = "Illegal attempt to extend Icon text string! (Internal error "+STR$(ERL)+"." 1990 Error$ = Error$ + STR$(LEN(Text$)) + "/" + STR$(MaxLength%) + ".)" + CHR$0 2000 $(Block%+4)=Error$ 2010 SYS "Wimp_ReportError",Block%,%10001,MyTaskName$ TO ,Result% 2020 IF Result%=1 THEN PROC_CloseDown 2030 ELSE 2040 $Pointer%=Text$ 2050 ENDIF 2060ENDPROC 2070: 2080REM ************************************************************* 2090REM This takes a Sprite and makes it into an Icon For the IconBar 2100REM ************************************************************* 2110DEF FN_CreateIconBarIcon 2120 LOCAL Icon% 2130 Block%!0=-1 2140 Block%!4=0 2150 Block%!8=0 2160 Block%!12=84 2170 Block%!16=80 2180 Block%!20=%10000000000010 2190 $(Block%+24)="!Exchange" 2200 SYS "Wimp_CreateIcon",,Block% TO Icon% 2210=Icon% 2220: 2230REM ********************************************* 2240REM Read Info for Window Main, and then open it ! 2250REM ********************************************* 2260DEF PROC_OpenMainWindow 2270 !Block%=Main% 2280 SYS "Wimp_GetWindowState",,Block% 2290 SYS "Wimp_OpenWindow",,Block% 2300 PROC_SetCaretPosition(Data%,0) 2310ENDPROC 2320: 2330REM ********************************************************************** 2340REM This reads the text from the writable Icon specified in the parameters 2350REM and if Pad%=TRUE then pads out the result to 32 characters! 2360REM ********************************************************************** 2370DEF FN_ReadIconText(WindowHandle%,IconHandle%) 2380 LOCAL Result$ 2390 Block%!1024=WindowHandle% 2400 Block%!1028=IconHandle% 2410 SYS "Wimp_GetIconState",,Block%+1024 2420 IF (Block%!1048 AND (1<<8))<>0 THEN 2430 Result$=$(Block%!1052) 2440 ELSE 2450 Result$=$(Block%+1052) 2460 ENDIF 2470=Result$ 2480: 2490REM ***************************************************** 2500REM Read a string from a pointer, using a zero-terminator 2510REM ***************************************************** 2520DEF FN_ReadString(Pointer%) 2530 LOCAL String$ 2540 WHILE ?Pointer%<>0 2550 String$+=CHR$?Pointer% 2560 Pointer%+=1 2570 ENDWHILE 2580=String$ 2590: 2600REM *************************************** 2610REM Allows a menu to be opened as a window. 2620REM *************************************** 2630DEF PROC_OpenSubMenu(Window%) 2640 SYS "Wimp_GetPointerInfo",,Block% 2650 SYS "Wimp_CreateMenu",,Window%,Block%!0-64,Block%!4+48 2660ENDPROC 2670: 2680REM *************************************************** 2690REM Writes a string into memory with a zero terminator. 2700REM Uses : NONE 2710REM *************************************************** 2720DEF PROC_WriteString(Pointer%,Text$) 2730LOCAL Loop% 2740 FOR Loop%=1 TO LEN(Text$) 2750 Loop%?(Pointer%-1)=ASC(MID$(Text$,Loop%,1)) 2760 NEXT 2770 Loop%?(Pointer%-1)=0 2780ENDPROC 2790: 2800REM ******************************************************** 2810REM Start Up program as a task with name "Font Printout Test" 2820REM ******************************************************** 2830DEF PROC_Initialise_WIMP_System 2840 MyTaskName$="Exchange Locator" 2850 SYS "Wimp_Initialise",200,&4B534154,MyTaskName$ TO ver%,My_id% 2860 Mask%=0 2870 SYS "Wimp_ClaimInterface",My_id% 2880ENDPROC 2890: 2900DEF PROC_Initialise_Templates 2910 maxws%=&900 : DIM ws% maxws% : curws%=ws% 2920 SYS"Wimp_OpenTemplate",,"<Exchange$Dir>.Resources.Templates" 2930 SYS"Wimp_LoadTemplate",,Block%,ws%,ws%+maxws%,-1,"info",0 TO ,,curws% 2940 SYS"Wimp_CreateWindow",,Block% TO Info% 2950 SYS"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Found",0 TO ,,curws% 2960 SYS"Wimp_CreateWindow",,Block% TO Found% 2970 SYS"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Main",0 TO ,,curws% 2980 SYS"Wimp_CreateWindow",,Block% TO Main% 2990 SYS"Wimp_CloseTemplate" 3000ENDPROC 3010: 3020REM ************************************** 3030REM The name sort of says it all really!!! 3040REM ************************************** 3050DEF PROC_CreateIconBarMenu 3060 LOCAL m% 3070 DIM IconBarMenu% 28+3*24 3080 $IconBarMenu%="Exchange" 3090 IconBarMenu%?12=7 : IconBarMenu%?13=2 : IconBarMenu%?14=7 : IconBarMenu%?15=0 3100 IconBarMenu%!16=8*13 3110 IconBarMenu%!20=40 : IconBarMenu%!24=0 3120 m%=IconBarMenu%+28 3130: 3140 m%!0=&0 3150 m%!4=Info% :REM name from template open. 3160 m%!8=(7<<24) OR %10001 3170 $(m%+12)="Info" 3180 m%=m%+24 3190 : 3200 m%!0=&80 3210 m%!4=0 3220 m%!8=(7<<24)OR %10001 3230 $(m%+12)="Quit" 3240 IconBarIconHandle%=FN_CreateIconBarIcon 3250ENDPROC 3260: 3270DEF PROC_Initialise_Program_Variables 3280 REM Give names to some of the icons etc. to make the program more readable 3290 BackGround%= -1 : IconBar%= -2 3300 Data%=1 : Print%=2 3310 MaxToDisplay%=FN_ReadSystemVariable("MaxToDisplay") 3320 PROC_SetUpPalette 3330 IF MaxToDisplay%>999 MaxToDisplay%=999 3340 IF MaxToDisplay%<10 MaxToDisplay%=10 3350 DIM FoundArray%(MaxToDisplay%) 3360 RequiredLength%=44 3370 Height%=400 3380ENDPROC 3390: 3400DEF PROC_Load 3410 SYS"Hourglass_On" 3420 X%=OPENIN"<Exchange$Dir>.Resources.Telephone" 3430 DIM Line$(7200):N%=0 3440 REM &406C4="Hourglass_Percentage" - This Repeat/Until loop optimised for speed! 3450 REPEAT:Line$(N%)=GET$#X%:N%+=1:SYS &406C4,N% DIV 72:UNTIL EOF#X% 3460 CLOSE#X% 3470 SYS"Hourglass_Off" 3480 LastEntry%=N%-2 3490 Temp$=Line$(LastEntry%+1)+" ("+STR$(LastEntry%)+" Entries)." 3500 Update$=STRING$((48-LEN(Temp$))/2," ")+Temp$ 3510ENDPROC 3520: 3530DEF PROC_Search 3540 Search$=FN_ReadIconText(Main%,Data%) 3550 IF Search$="" THEN Search$="0" ELSE Search$=FN_ForceToLower(Search$) 3560 LOCAL Count% 3570 NumberFound%=-1 3580 SYS"Hourglass_On" 3590 REPEAT 3600 IF INSTR(Line$(Count%),Search$) THEN 3610 NumberFound%+=1 3620 FoundArray%(NumberFound%)=Count% 3630 ENDIF 3640 Count%+=1 3650 UNTIL Count%=LastEntry% OR NumberFound%=MaxToDisplay%-1 3660 SYS"Hourglass_Off" 3670 PROC_FoundWindow 3680ENDPROC 3690: 3700DEF PROC_FoundWindow 3710 !Block%=Found% 3720 SYS "Wimp_GetWindowState",,Block% 3730 PROC_UpdateFound 3740 SYS "Wimp_OpenWindow",,Block% 3750ENDPROC 3760: 3770DEF PROC_UpdateFound 3780 IF Height%<>(1+NumberFound%)*40+20 THEN 3790 Height%=(4+NumberFound%)*40+20 3800 PROC_SetPreviewSize(Height%) 3810 Block%!0=Found% 3820 SYS "Wimp_GetWindowInfo",,Block% 3830 SYS "Wimp_CloseWindow",,Block% 3840 SYS "Wimp_OpenWindow",,Block% 3850 ELSE 3860 SYS "Wimp_ForceRedraw",Found%,0,-Height%,800,0 3870 ENDIF 3880ENDPROC 3890: 3900DEF PROC_SetPreviewSize(Y%) 3910 Block%!1024=0 3920 Block%!1028=-Y% 3930 Block%!1032=936 3940 Block%!1036=0 3950 SYS "Wimp_SetExtent",Found%,Block%+1024 3960ENDPROC 3970: 3980DEF PROC_RedrawWindow 3990 SYS "Wimp_RedrawWindow",,Block% TO More% 4000 WHILE More% 4010 IF Block%!0=Found% THEN PROC_RedrawFound(Block%!4-Block%!20,Block%!16-Block%!24) 4020 SYS "Wimp_BorderWindow",,Block% 4030 SYS "Wimp_GetRectangle",,Block% TO More% 4040 ENDWHILE 4050ENDPROC 4060: 4070DEF PROC_RedrawFound(X%,Y%) 4080 LOCAL Loop% 4090 MOVE X%,Y% 4100 Y%-=58 : X%+=25 : V%=(Block%!32)-40 : W%=(Block%!40)+40 : S%=Block%!24 : REM V%=GrafCliMinY W%=GrafClipMaxY S%=Scroll_Y 4110 Format%=LEN(STR$(NumberFound%+1)) 4120 IF NumberFound%<>-1 THEN 4130 FirstChar%=(Y%-W%)/40 : IF FirstChar%<0 THEN FirstChar%=0 4140 LastChar%=FirstChar%+((W%-V%)/40) 4150 IF LastChar%>NumberFound% THEN LastChar%=NumberFound% 4160 Y%-=40*FirstChar% 4170 IF FirstChar%<=NumberFound% THEN 4180 FOR Loop%=FirstChar% TO LastChar% 4190 MOVE X%,Y% 4200 PRINT FN_Format(TRUE,RIGHT$(" "+STR$(Loop%+1),Format%)+Line$(FoundArray%(Loop%))) 4210 Y%-=40 4220 NEXT 4230 ENDIF 4240 MOVE X%,Y%-40 4250 PRINT Update$ 4260 ELSE 4270 MOVE X%+50,Y% 4280 PRINT "Sorry '";Search$;"' is not on record." 4290 PRINT Update$ 4300 ENDIF 4310ENDPROC 4320: 4330DEF PROC_PrintOut 4340 IF FN_Printer_NotOnLine THEN ENDPROC 4350 SYS "Hourglass_On" 4360 SYS "OS_Byte",3,10 :REM SCREEN OFF, PRINTER ON. 4370 : 4380 IF NumberFound%<>0 THEN 4390 PRINT "Searching For '";Search$;"'......" 4400 FOR Loop%=1 TO NumberFound% 4410 PRINT FN_Format(FALSE,RIGHT$(" "+STR$(Loop%),Format%)+Line$(FoundArray%(Loop%-1))) 4420 NEXT 4430 PRINT 4440 PRINT Update$ 4450 PRINT 4460 ELSE 4470 VDU 7 4480 ENDIF 4490 : 4500 SYS "OS_Byte",3,00 :REM SCREEN ON, PRINTER OFF. 4510 SYS "Hourglass_Off" 4520ENDPROC 4530: 4540DEF FN_Printer_NotOnLine 4550 SYS "Hourglass_On" 4560 REPEAT 4570 PrinterOnLine=TRUE : What%=0 4580 Now%=TIME 4590 Before%=ADVAL(-4) 4600 VDU 2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3 4610 Now%=TIME : REPEAT UNTIL TIME>Now%+100 4620 After%=ADVAL(-4) 4630 IF Before%<>After% THEN 4640 SYS "Hourglass_Off" 4650 PrinterOnLine=FALSE 4660 $Block%="The Printer is not responding, please check that it has paper, it is switched on and is on-line. Try again?"+CHR$(0) 4670 SYS "Wimp_ReportError",Block%,%10011,MyTaskName$ TO ,What% 4680 SYS "Hourglass_On" 4690 ENDIF 4700 UNTIL PrinterOnLine OR (NOT PrinterOnLine AND What%=2) 4710 SYS "Hourglass_Off" 4720 IF What%=2 THEN =TRUE 4730=FALSE 4740: 4750DEF PROC_SetCaretPosition(Icon%,Index%) 4760 IconLength%=LEN(FN_ReadIconText(Main%,Icon%,FALSE)) 4770 IF Index%>IconLength% THEN Index%=IconLength% 4780 SYS "Wimp_SetCaretPosition",Main%,Icon%,,,-1,Index% 4790ENDPROC 4800: 4810REM This routine has been optimised for speed, hence the general unreadability! 4820DEF FN_Format(Flag%,T$) 4830 LOCAL L%,AL%,SL%,C$,N$ 4840 AL%=LEN(T$) : SL%=51-AL%+Format% 4850 ZeroPos%=INSTR(T$,CHR$(0)) 4860 FOR L%=ZeroPos% TO LEN(T$) 4870 C$=MID$(T$,L%,1) : N$=MID$(T$,L%+1,1) 4880 IF (C$=" "ORC$="."ORC$=","ORASC(C$)=0ORASC(C$)=1)AND(N$>="a"ANDN$<="z")THENMID$(T$,L%+1,1)=CHR$(ASC(N$) EOR 32) 4890 NEXT 4900 TextPart$=RIGHT$(T$,LEN(T$)-ZeroPos%) 4910 OnePosition%=INSTR(TextPart$,CHR$1) 4920 IF OnePosition% AND Flag%THEN 4930 Exchange$=LEFT$(TextPart$,OnePosition%-1) 4940 Location$=CHR$18+CHR$0+CHR$(TownColour%)+MID$(TextPart$,OnePosition%+1)+CHR$18+CHR$(0)+CHR$(BaseColour%) 4950 TextPart$=Exchange$+" "+Location$ 4960 ELSE 4970 Exchange$=LEFT$(TextPart$,OnePosition%-1) 4980 Location$=MID$(TextPart$,OnePosition%+1) 4990 TextPart$=Exchange$+" "+Location$ 5000 ENDIF 5010=LEFT$(T$,Format%)+STRING$(4-Format%," ")+TextPart$+STRING$(SL%," ")+MID$(T$,Format%+1,ZeroPos%-Format%-1) 5020: 5030DEF FN_ForceToLower(Text$) 5040 LOCAL Temp$,Loop% 5050 FOR Loop%=1 TO LEN Text$ 5060 Temp$=Temp$+(CHR$(ASC(MID$(Text$,Loop%,1)) OR 32)) 5070 NEXT 5080=Temp$ 5090: 5100DEF FN_ReadSystemVariable(VariableName$) 5110 FOR Loop%=100 TO 150 STEP 4 : Block%!Loop%=0 : NEXT 5120 SYS "OS_ReadVarVal",VariableName$,Block%+100,50,0,3 5130=EVAL(FN_ReadString(Block%+100))
� >!RunImage � -� A Public Domain Utility By Mark Bright. (: 2Version$="0.82 (17-May-91)" < F7� Block% 1024*4 :� General purpose WIMP workspace! P Z�_Initialise_WIMP_System d�_Initialise_Templates n"�_Initialise_Program_Variables x�_CreateIconBarMenu �: �� � �_Wimp_Error � �_Load �: �'�_SetIconText(07,Info%,Version$,23) �: �: �n� ******************************************************************************************************** �n� All RISCOS/WIMP Specific Proceedures First, !Exchange Proc'S after.... Makes for a better skeleton prog! �n� ******************************************************************************************************** � �� �' ș "Wimp_Poll",Mask%,Block% � A% ' ș "Wimp_PollPointer",A%,,My_id% Ȏ A% � � 1 : �_RedrawWindow "C � 2 : ș "Wimp_OpenWindow",,Block% : � allows auto Drag ,# � 3 : � Block%!0<>Main% � 63 ș "Wimp_CloseWindow",,Block% @ � JE � If Main is closed, then close preview aswell! T3 ș "Wimp_CloseWindow",,Block% ^% Block%!0=Found% h3 ș "Wimp_CloseWindow",,Block% r � | � 6 : �_Mouse_Click �' � 8 : �_ProcessKey(Block%!24) � � 9 : �_MenuSelection �1 � 16,17,18 : �_DecodeMessage(Block%!16) � � �� � �: �/� ***************************************** �/� This is the WIMP Error handling routine ! �/� ***************************************** �� �_Wimp_Error � � Error$ � ș "OS_Byte",3,0 � ș "Wimp_DragBox",,-1 C � IBlock%!8<>0 � IBlock%!8=0 : ș "Wimp_BorderIcon",,IBlock% !Block%=� Error$ = �$ &^ � �<>2001 � Error$ += " (internal error code "+Þ+"). OK To Continue, CANCEL To Abort." 0 $(Block%+4)=Error$ + �0 :O ș "Wimp_ReportError",Block%,%001 - (2*(�<>2001)),MyTaskName$ � ,Result% D � Result%=2 � �_CloseDown N� X: b*� ************************************ l*� Mouse 'Click' Whilst Over Menu Item. v*� ************************************ �� �_MenuSelection � Ȏ Block%!0 � �$ � 0 : �_OpenSubMenu(Info%) �B � 1 : �_CloseDown : � <Select> on "quit" causes shutdown � � �� �: �&� ******************************** �&� Mouse Button Status Has Changed. �&� ******************************** �� �_Mouse_Click �+� 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) * : 4. � Temporary block for use with Interface >H IBlock%=Block%+2048:� Loop%=0 � 32 �4:IBlock%!Loop%=Block%!Loop%:� H : R6 � Window%=IconBar% � Icon%=IconBarIconHandle% � \ Ȏ Button% � f& � %100 : �_OpenMainWindow p& � %001 : �_OpenMainWindow zN � %010 : ș "Wimp_CreateMenu",,IconBarMenu%,Block%!0-96,(40*2)+96 � � � � � �( � Window%=Main% � Button%<>%010 � � Ȏ Icon% � �5 � Print% : ș "Wimp_BorderIcon",,IBlock% �% �_PrintOut �D IBlock%!8=0:ș "Wimp_BorderIcon",,IBlock% � � � � �� �: �: I� ******************************************************************* I� When a key is pressed, Check if it concerns me. If not, Pass it on! I� ******************************************************************* $� �_ProcessKey(KeyPressed) . � Icon%,Index%,Window% 8 Window%=Block%!0 B Icon%=Block%!4 L Index%=Block%!20 V Ȏ KeyPressed � ` j/ � &180 : ș "Wimp_BorderIcon",,Block% t �_PrintOut ~> Block%!18=0:ș "Wimp_BorderIcon",,Block% � � <Print> � � � &0D : �_Search � � <Return> � �* ș "Wimp_ProcessKey",Block%!24 � � � �� �: �$� ****************************** �$� Set which icon the caret is in $� ****************************** &� �_SetCaretPosition(Icon%,Index%) 1 IconLength%=�(�_ReadIconText(Main%,Icon%)) 0 � Index%>IconLength% � Index%=IconLength% (9 ș "Wimp_SetCaretPosition",Main%,Icon%,,,-1,Index% 2� <: F%� ******************************* P%� Redraw the specifiied icon (v2) Z%� ******************************* d� �_Redraw(Window%,Icon%) n Block%!0=Window% x 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 �6 � &502 : ș "Wimp_SendInformation",,Block% �# � &400C1 : �_SetUpPalette P � &400C2 : � �_ReadString(Block%+28)=MyTaskName$ � Block%!4<> My_id% � Z � Another !Exchange is trying to start up, so I am sodding off! & �_CloseDown " � , � 6� @: JP� ************************************************************************** TP� Read in how many colours are available, and set up my two colours to suit! ^P� ************************************************************************** h� �_SetUpPalette r5 ș "OS_ReadModeVariable",-1,3 � ,,NoOfColours% | Ȏ NoOfColours% � �3 � 1,3,15 : BaseColour%=7 : TownColour%=3 �0 � 63 : BaseColour%=64 : TownColour%=42 � � �� �: �A� *********************************************************** �A� All WIMP Programs should be able to shut themselves down!!! �A� *********************************************************** �� �_CloseDown �' ș "Wimp_GetPointerInfo",,Block% �+ ș "Wimp_CloseDown",My_id%,&4B534154 �( ș "Wimp_ReleaseInterface",My_id% � ș "OS_Exit" � : I� ******************************************************************* &I� This writes over the text in the Icon, and it should not be done!!! 0.� Only Works With Indirected Text Strings! :I� ******************************************************************* D?� �_SetIconText(IconHandle%,WindowHandle%,Text$,MaxLength%) N � Pointer% X Block%!0=WindowHandle% b Block%!4=IconHandle% l% ș "Wimp_GetIconState",,Block% v" � (Block%!24 � (1<<8))<>0 � � Pointer%=Block%!28 � � � Pointer%=Block%+28 � � � � �Text$>MaxLength% � � Block%!0=2001 �Z Error$ = "Illegal attempt to extend Icon text string! (Internal error "+�(�)+"." �I Error$ = Error$ + �(�(Text$)) + "/" + �(MaxLength%) + ".)" + �0 � $(Block%+4)=Error$ �D ș "Wimp_ReportError",Block%,%10001,MyTaskName$ � ,Result% �# � Result%=1 � �_CloseDown � � � $Pointer%=Text$ � � : C� ************************************************************* *C� This takes a Sprite and makes it into an Icon For the IconBar 4C� ************************************************************* >� �_CreateIconBarIcon H � Icon% R Block%!0=-1 \ Block%!4=0 f Block%!8=0 p Block%!12=84 z Block%!16=80 � Block%!20=%10000000000010 � $(Block%+24)="!Exchange" �+ ș "Wimp_CreateIcon",,Block% � Icon% � =Icon% �: �3� ********************************************* �3� Read Info for Window Main, and then open it ! �3� ********************************************* �� �_OpenMainWindow � !Block%=Main% �' ș "Wimp_GetWindowState",,Block% �# ș "Wimp_OpenWindow",,Block% �" �_SetCaretPosition(Data%,0) � : L� ********************************************************************** $L� This reads the text from the writable Icon specified in the parameters .A� and if Pad%=TRUE then pads out the result to 32 characters! 8L� ********************************************************************** B/� �_ReadIconText(WindowHandle%,IconHandle%) L � Result$ V Block%!1024=WindowHandle% ` Block%!1028=IconHandle% j* ș "Wimp_GetIconState",,Block%+1024 t$ � (Block%!1048 � (1<<8))<>0 � ~ Result$=$(Block%!1052) � � � Result$=$(Block%+1052) � � �=Result$ �: �;� ***************************************************** �;� Read a string from a pointer, using a zero-terminator �;� ***************************************************** �� �_ReadString(Pointer%) � � String$ � ȕ ?Pointer%<>0 � String$+=�?Pointer% Pointer%+=1 � =String$ : (-� *************************************** 2-� Allows a menu to be opened as a window. <-� *************************************** F� �_OpenSubMenu(Window%) P' ș "Wimp_GetPointerInfo",,Block% Z< ș "Wimp_CreateMenu",,Window%,Block%!0-64,Block%!4+48 d� n: x9� *************************************************** �9� Writes a string into memory with a zero terminator. �� Uses : NONE �9� *************************************************** �#� �_WriteString(Pointer%,Text$) �� Loop% � � Loop%=1 � �(Text$) �/ Loop%?(Pointer%-1)=�(�Text$,Loop%,1)) � � � Loop%?(Pointer%-1)=0 �� �: �>� ******************************************************** �?� Start Up program as a task with name "Font Printout Test" >� ******************************************************** � �_Initialise_WIMP_System % MyTaskName$="Exchange Locator" "C ș "Wimp_Initialise",200,&4B534154,MyTaskName$ � ver%,My_id% , Mask%=0 6& ș "Wimp_ClaimInterface",My_id% @� J: T� �_Initialise_Templates ^. maxws%=&900 : � ws% maxws% : curws%=ws% hB ș"Wimp_OpenTemplate",,"<Exchange$Dir>.Resources.Templates" rJ ș"Wimp_LoadTemplate",,Block%,ws%,ws%+maxws%,-1,"info",0 � ,,curws% |, ș"Wimp_CreateWindow",,Block% � Info% �N ș"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Found",0 � ,,curws% �- ș"Wimp_CreateWindow",,Block% � Found% �M ș"Wimp_LoadTemplate",,Block%,curws%,ws%+maxws%,-1,"Main",0 � ,,curws% �, ș"Wimp_CreateWindow",,Block% � Main% � ș"Wimp_CloseTemplate" �� �: �,� ************************************** �,� The name sort of says it all really!!! �,� ************************************** �� �_CreateIconBarMenu � � m% � � IconBarMenu% 28+3*24 $IconBarMenu%="Exchange" T IconBarMenu%?12=7 : IconBarMenu%?13=2 : IconBarMenu%?14=7 : IconBarMenu%?15=0 IconBarMenu%!16=8*13 &- IconBarMenu%!20=40 : IconBarMenu%!24=0 0 m%=IconBarMenu%+28 :: D m%!0=&0 N0 m%!4=Info% :� name from template open. X m%!8=(7<<24) � %10001 b $(m%+12)="Info" l m%=m%+24 v : � m%!0=&80 � m%!4=0 � m%!8=(7<<24)� %10001 � $(m%+12)="Quit" �- IconBarIconHandle%=�_CreateIconBarIcon �� �: �$� �_Initialise_Program_Variables �O � Give names to some of the icons etc. to make the program more readable �% BackGround%= -1 : IconBar%= -2 � Data%=1 : Print%=2 �9 MaxToDisplay%=�_ReadSystemVariable("MaxToDisplay") � �_SetUpPalette , � MaxToDisplay%>999 MaxToDisplay%=999 - � MaxToDisplay%<10 MaxToDisplay%=10 # � FoundArray%(MaxToDisplay%) RequiredLength%=44 * Height%=400 4� >: H� �_Load R ș"Hourglass_On" \/ X%=�"<Exchange$Dir>.Resources.Telephone" f � Line$(7200):N%=0 pT � &406C4="Hourglass_Percentage" - This Repeat/Until loop optimised for speed! z6 �:Line$(N%)=�#X%:N%+=1:ș &406C4,N% � 72:� �#X% � �#X% � ș"Hourglass_Off" � LastEntry%=N%-2 �A Temp$=Line$(LastEntry%+1)+" ("+�(LastEntry%)+" Entries)." �* Update$=�(48-�(Temp$))/2," ")+Temp$ �� �: �� �_Search �* Search$=�_ReadIconText(Main%,Data%) �C � Search$="" � Search$="0" � Search$=�_ForceToLower(Search$) � � Count% � NumberFound%=-1 � ș"Hourglass_On" � % � �Line$(Count%),Search$) � NumberFound%+=1 $- FoundArray%(NumberFound%)=Count% . � 8 Count%+=1 B9 � Count%=LastEntry% � NumberFound%=MaxToDisplay%-1 L ș"Hourglass_Off" V �_FoundWindow `� j: t� �_FoundWindow ~ !Block%=Found% �' ș "Wimp_GetWindowState",,Block% � �_UpdateFound �# ș "Wimp_OpenWindow",,Block% �� �: �� �_UpdateFound �* � Height%<>(1+NumberFound%)*40+20 � �( Height%=(4+NumberFound%)*40+20 �# �_SetPreviewSize(Height%) � Block%!0=Found% �) ș "Wimp_GetWindowInfo",,Block% �' ș "Wimp_CloseWindow",,Block% & ș "Wimp_OpenWindow",,Block% � 7 ș "Wimp_ForceRedraw",Found%,0,-Height%,800,0 � (� 2: <� �_SetPreviewSize(Y%) F Block%!1024=0 P Block%!1028=-Y% Z Block%!1032=936 d Block%!1036=0 n- ș "Wimp_SetExtent",Found%,Block%+1024 x� �: �� �_RedrawWindow �- ș "Wimp_RedrawWindow",,Block% � More% � ȕ More% �S � Block%!0=Found% � �_RedrawFound(Block%!4-Block%!20,Block%!16-Block%!24) �( ș "Wimp_BorderWindow",,Block% �0 ș "Wimp_GetRectangle",,Block% � More% � � �� �: �� �_RedrawFound(X%,Y%) � � Loop% � � X%,Y% | Y%-=58 : X%+=25 : V%=(Block%!32)-40 : W%=(Block%!40)+40 : S%=Block%!24 : � V%=GrafCliMinY W%=GrafClipMaxY S%=Scroll_Y # Format%=�(�(NumberFound%+1)) � NumberFound%<>-1 � "? FirstChar%=(Y%-W%)/40 : � FirstChar%<0 � FirstChar%=0 ,+ LastChar%=FirstChar%+((W%-V%)/40) 6; � LastChar%>NumberFound% � LastChar%=NumberFound% @ Y%-=40*FirstChar% J& � FirstChar%<=NumberFound% � T+ � Loop%=FirstChar% � LastChar% ^ � X%,Y% hQ � �_Format(�,�" "+�(Loop%+1),Format%)+Line$(FoundArray%(Loop%))) r Y%-=40 | � � � � � X%,Y%-40 � � Update$ � � � � X%+50,Y% �3 � "Sorry '";Search$;"' is not on record." � � Update$ � � �� �: �� �_PrintOut � � �_Printer_NotOnLine � � � ș "Hourglass_On" < ș "OS_Byte",3,10 :� SCREEN OFF, PRINTER ON. : � NumberFound%<>0 � &/ � "Searching For '";Search$;"'......" 0" � Loop%=1 � NumberFound% :N � �_Format(�,�" "+�(Loop%),Format%)+Line$(FoundArray%(Loop%-1))) D � N � X � Update$ b � l � v � 7 � � � : �< ș "OS_Byte",3,00 :� SCREEN ON, PRINTER OFF. � ș "Hourglass_Off" �� �: �� �_Printer_NotOnLine � ș "Hourglass_On" � � �# PrinterOnLine=� : What%=0 � 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=� 4� $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% H ș "Hourglass_On" R � \4 � PrinterOnLine � (� PrinterOnLine � What%=2) f ș "Hourglass_Off" p � What%=2 � =� z=� �: �&� �_SetCaretPosition(Icon%,Index%) �3 IconLength%=�(�_ReadIconText(Main%,Icon%,�)) �0 � Index%>IconLength% � Index%=IconLength% �9 ș "Wimp_SetCaretPosition",Main%,Icon%,,,-1,Index% �� �: �Q� This routine has been optimised for speed, hence the general unreadability! �� �_Format(Flag%,T$) � � L%,AL%,SL%,C$,N$ �% AL%=�(T$) : SL%=51-AL%+Format% � ZeroPos%=�T$,�(0)) � � L%=ZeroPos% � �(T$) ' C$=�T$,L%,1) : N$=�T$,L%+1,1) ^ � (C$=" "�C$="."�C$=","��(C$)=0��(C$)=1)�(N$>="a"�N$<="z")��T$,L%+1,1)=�(�(N$) � 32) � $$ TextPart$=�T$,�(T$)-ZeroPos%) ." OnePosition%=�TextPart$,�1) 8 � OnePosition% � Flag%� B. Exchange$=�TextPart$,OnePosition%-1) L\ Location$=�18+�0+�(TownColour%)+�TextPart$,OnePosition%+1)+�18+�(0)+�(BaseColour%) V- TextPart$=Exchange$+" "+Location$ ` � j. Exchange$=�TextPart$,OnePosition%-1) t. Location$=�TextPart$,OnePosition%+1) ~- TextPart$=Exchange$+" "+Location$ � � �W=�T$,Format%)+�4-Format%," ")+TextPart$+�SL%," ")+�T$,Format%+1,ZeroPos%-Format%-1) �: �� �_ForceToLower(Text$) � � Temp$,Loop% � � Loop%=1 � � Text$ �2 Temp$=Temp$+(�(�(�Text$,Loop%,1)) � 32)) � � � =Temp$ �: �)� �_ReadSystemVariable(VariableName$) �1 � Loop%=100 � 150 � 4 : Block%!Loop%=0 : � 9 ș "OS_ReadVarVal",VariableName$,Block%+100,50,0,3 =�(�_ReadString(Block%+100)) �
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 1f 56 65 72 73 69 |t...(.:..2.Versi| 00000050 6f 6e 24 3d 22 30 2e 38 32 20 28 31 37 2d 4d 61 |on$="0.82 (17-Ma| 00000060 79 2d 39 31 29 22 0d 00 3c 04 0d 00 46 37 de 20 |y-91)"..<...F7. | 00000070 42 6c 6f 63 6b 25 20 31 30 32 34 2a 34 20 20 3a |Block% 1024*4 :| 00000080 f4 20 47 65 6e 65 72 61 6c 20 70 75 72 70 6f 73 |. General purpos| 00000090 65 20 57 49 4d 50 20 77 6f 72 6b 73 70 61 63 65 |e WIMP workspace| 000000a0 21 0d 00 50 04 0d 00 5a 1c f2 5f 49 6e 69 74 69 |!..P...Z.._Initi| 000000b0 61 6c 69 73 65 5f 57 49 4d 50 5f 53 79 73 74 65 |alise_WIMP_Syste| 000000c0 6d 0d 00 64 1a f2 5f 49 6e 69 74 69 61 6c 69 73 |m..d.._Initialis| 000000d0 65 5f 54 65 6d 70 6c 61 74 65 73 0d 00 6e 22 f2 |e_Templates..n".| 000000e0 5f 49 6e 69 74 69 61 6c 69 73 65 5f 50 72 6f 67 |_Initialise_Prog| 000000f0 72 61 6d 5f 56 61 72 69 61 62 6c 65 73 0d 00 78 |ram_Variables..x| 00000100 17 f2 5f 43 72 65 61 74 65 49 63 6f 6e 42 61 72 |.._CreateIconBar| 00000110 4d 65 6e 75 0d 00 82 05 3a 0d 00 8c 14 ee 20 85 |Menu....:..... .| 00000120 20 f2 5f 57 69 6d 70 5f 45 72 72 6f 72 0d 00 96 | ._Wimp_Error...| 00000130 0a f2 5f 4c 6f 61 64 0d 00 a0 05 3a 0d 00 aa 27 |.._Load....:...'| 00000140 f2 5f 53 65 74 49 63 6f 6e 54 65 78 74 28 30 37 |._SetIconText(07| 00000150 2c 49 6e 66 6f 25 2c 56 65 72 73 69 6f 6e 24 2c |,Info%,Version$,| 00000160 32 33 29 0d 00 b4 05 3a 0d 00 be 05 3a 0d 00 c8 |23)....:....:...| 00000170 6e f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |n. *************| 00000180 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000001d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 00 d2 6e f4 |***********...n.| 000001e0 20 41 6c 6c 20 52 49 53 43 4f 53 2f 57 49 4d 50 | All RISCOS/WIMP| 000001f0 20 53 70 65 63 69 66 69 63 20 50 72 6f 63 65 65 | Specific Procee| 00000200 64 75 72 65 73 20 46 69 72 73 74 2c 20 21 45 78 |dures First, !Ex| 00000210 63 68 61 6e 67 65 20 50 72 6f 63 27 53 20 61 66 |change Proc'S af| 00000220 74 65 72 2e 2e 2e 2e 20 4d 61 6b 65 73 20 66 6f |ter.... Makes fo| 00000230 72 20 61 20 62 65 74 74 65 72 20 73 6b 65 6c 65 |r a better skele| 00000240 74 6f 6e 20 70 72 6f 67 21 0d 00 dc 6e f4 20 2a |ton prog!...n. *| 00000250 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000002b0 2a 2a 2a 2a 2a 2a 2a 0d 00 e6 04 0d 00 f0 05 f5 |*******.........| 000002c0 0d 00 fa 27 20 20 20 c8 99 20 22 57 69 6d 70 5f |...' .. "Wimp_| 000002d0 50 6f 6c 6c 22 2c 4d 61 73 6b 25 2c 42 6c 6f 63 |Poll",Mask%,Bloc| 000002e0 6b 25 20 b8 20 41 25 0d 01 04 27 20 20 20 c8 99 |k% . A%...' ..| 000002f0 20 22 57 69 6d 70 5f 50 6f 6c 6c 50 6f 69 6e 74 | "Wimp_PollPoint| 00000300 65 72 22 2c 41 25 2c 2c 4d 79 5f 69 64 25 0d 01 |er",A%,,My_id%..| 00000310 0e 0e 20 20 20 c8 8e 20 41 25 20 ca 0d 01 18 1e |.. .. A% .....| 00000320 20 20 20 20 20 20 c9 20 31 20 3a 20 f2 5f 52 65 | . 1 : ._Re| 00000330 64 72 61 77 57 69 6e 64 6f 77 0d 01 22 43 20 20 |drawWindow.."C | 00000340 20 20 20 20 c9 20 32 20 3a 20 c8 99 20 22 57 69 | . 2 : .. "Wi| 00000350 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c |mp_OpenWindow",,| 00000360 42 6c 6f 63 6b 25 20 20 20 3a 20 f4 20 61 6c 6c |Block% : . all| 00000370 6f 77 73 20 61 75 74 6f 20 44 72 61 67 0d 01 2c |ows auto Drag..,| 00000380 23 20 20 20 20 20 20 c9 20 33 20 3a 20 e7 20 42 |# . 3 : . B| 00000390 6c 6f 63 6b 25 21 30 3c 3e 4d 61 69 6e 25 20 8c |lock%!0<>Main% .| 000003a0 0d 01 36 33 20 20 20 20 20 20 20 20 20 20 20 20 |..63 | 000003b0 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 43 | .. "Wimp_C| 000003c0 6c 6f 73 65 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f |loseWindow",,Blo| 000003d0 63 6b 25 0d 01 40 14 20 20 20 20 20 20 20 20 20 |ck%..@. | 000003e0 20 20 20 20 20 20 cc 0d 01 4a 45 20 20 20 20 20 | ...JE | 000003f0 20 20 20 20 20 20 20 20 20 20 20 20 20 f4 20 49 | . I| 00000400 66 20 4d 61 69 6e 20 69 73 20 63 6c 6f 73 65 64 |f Main is closed| 00000410 2c 20 74 68 65 6e 20 63 6c 6f 73 65 20 70 72 65 |, then close pre| 00000420 76 69 65 77 20 61 73 77 65 6c 6c 21 0d 01 54 33 |view aswell!..T3| 00000430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000440 20 20 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 | .. "Wimp_Close| 00000450 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b 25 0d |Window",,Block%.| 00000460 01 5e 25 20 20 20 20 20 20 20 20 20 20 20 20 20 |.^% | 00000470 20 20 20 20 20 42 6c 6f 63 6b 25 21 30 3d 46 6f | Block%!0=Fo| 00000480 75 6e 64 25 0d 01 68 33 20 20 20 20 20 20 20 20 |und%..h3 | 00000490 20 20 20 20 20 20 20 20 20 20 c8 99 20 22 57 69 | .. "Wi| 000004a0 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 22 2c |mp_CloseWindow",| 000004b0 2c 42 6c 6f 63 6b 25 0d 01 72 14 20 20 20 20 20 |,Block%..r. | 000004c0 20 20 20 20 20 20 20 20 20 20 cd 0d 01 7c 1d 20 | ...|. | 000004d0 20 20 20 20 20 c9 20 36 20 3a 20 f2 5f 4d 6f 75 | . 6 : ._Mou| 000004e0 73 65 5f 43 6c 69 63 6b 0d 01 86 27 20 20 20 20 |se_Click...' | 000004f0 20 20 c9 20 38 20 3a 20 f2 5f 50 72 6f 63 65 73 | . 8 : ._Proces| 00000500 73 4b 65 79 28 42 6c 6f 63 6b 25 21 32 34 29 0d |sKey(Block%!24).| 00000510 01 90 1f 20 20 20 20 20 20 c9 20 39 20 3a 20 f2 |... . 9 : .| 00000520 5f 4d 65 6e 75 53 65 6c 65 63 74 69 6f 6e 0d 01 |_MenuSelection..| 00000530 9a 31 20 20 20 20 20 20 c9 20 31 36 2c 31 37 2c |.1 . 16,17,| 00000540 31 38 20 3a 20 f2 5f 44 65 63 6f 64 65 4d 65 73 |18 : ._DecodeMes| 00000550 73 61 67 65 28 42 6c 6f 63 6b 25 21 31 36 29 0d |sage(Block%!16).| 00000560 01 a4 08 20 20 20 cb 0d 01 ae 07 fd 20 a3 0d 01 |... ...... ...| 00000570 b8 05 3a 0d 01 c2 2f f4 20 2a 2a 2a 2a 2a 2a 2a |..:.../. *******| 00000580 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000005a0 2a 2a 0d 01 cc 2f f4 20 54 68 69 73 20 69 73 20 |**.../. This is | 000005b0 74 68 65 20 57 49 4d 50 20 45 72 72 6f 72 20 68 |the WIMP Error h| 000005c0 61 6e 64 6c 69 6e 67 20 72 6f 75 74 69 6e 65 20 |andling routine | 000005d0 21 0d 01 d6 2f f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a |!.../. *********| 000005e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000600 0d 01 e0 12 dd 20 f2 5f 57 69 6d 70 5f 45 72 72 |..... ._Wimp_Err| 00000610 6f 72 0d 01 ea 0f 20 20 20 ea 20 45 72 72 6f 72 |or.... . Error| 00000620 24 0d 01 f4 17 20 20 20 c8 99 20 22 4f 53 5f 42 |$.... .. "OS_B| 00000630 79 74 65 22 2c 33 2c 30 0d 01 fe 1c 20 20 20 c8 |yte",3,0.... .| 00000640 99 20 22 57 69 6d 70 5f 44 72 61 67 42 6f 78 22 |. "Wimp_DragBox"| 00000650 2c 2c 2d 31 0d 02 08 43 20 20 20 e7 20 49 42 6c |,,-1...C . IBl| 00000660 6f 63 6b 25 21 38 3c 3e 30 20 8c 20 49 42 6c 6f |ock%!8<>0 . IBlo| 00000670 63 6b 25 21 38 3d 30 20 3a 20 c8 99 20 22 57 69 |ck%!8=0 : .. "Wi| 00000680 6d 70 5f 42 6f 72 64 65 72 49 63 6f 6e 22 2c 2c |mp_BorderIcon",,| 00000690 49 42 6c 6f 63 6b 25 0d 02 12 10 20 20 20 21 42 |IBlock%.... !B| 000006a0 6c 6f 63 6b 25 3d 9f 0d 02 1c 12 20 20 20 45 72 |lock%=..... Er| 000006b0 72 6f 72 24 20 3d 20 f6 24 0d 02 26 5e 20 20 20 |ror$ = .$..&^ | 000006c0 e7 20 9f 3c 3e 32 30 30 31 20 8c 20 45 72 72 6f |. .<>2001 . Erro| 000006d0 72 24 20 2b 3d 20 22 20 28 69 6e 74 65 72 6e 61 |r$ += " (interna| 000006e0 6c 20 65 72 72 6f 72 20 63 6f 64 65 20 22 2b c3 |l error code "+.| 000006f0 9e 2b 22 29 2e 20 4f 4b 20 54 6f 20 43 6f 6e 74 |.+"). OK To Cont| 00000700 69 6e 75 65 2c 20 43 41 4e 43 45 4c 20 54 6f 20 |inue, CANCEL To | 00000710 41 62 6f 72 74 2e 22 0d 02 30 1e 20 20 20 24 28 |Abort."..0. $(| 00000720 42 6c 6f 63 6b 25 2b 34 29 3d 45 72 72 6f 72 24 |Block%+4)=Error$| 00000730 20 2b 20 bd 30 0d 02 3a 4f 20 20 20 c8 99 20 22 | + .0..:O .. "| 00000740 57 69 6d 70 5f 52 65 70 6f 72 74 45 72 72 6f 72 |Wimp_ReportError| 00000750 22 2c 42 6c 6f 63 6b 25 2c 25 30 30 31 20 2d 20 |",Block%,%001 - | 00000760 28 32 2a 28 9f 3c 3e 32 30 30 31 29 29 2c 4d 79 |(2*(.<>2001)),My| 00000770 54 61 73 6b 4e 61 6d 65 24 20 b8 20 2c 52 65 73 |TaskName$ . ,Res| 00000780 75 6c 74 25 0d 02 44 20 20 20 20 e7 20 52 65 73 |ult%..D . Res| 00000790 75 6c 74 25 3d 32 20 8c 20 f2 5f 43 6c 6f 73 65 |ult%=2 . ._Close| 000007a0 44 6f 77 6e 0d 02 4e 05 e1 0d 02 58 05 3a 0d 02 |Down..N....X.:..| 000007b0 62 2a f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |b*. ************| 000007c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 000007d0 2a 2a 2a 2a 2a 2a 2a 2a 0d 02 6c 2a f4 20 4d 6f |********..l*. Mo| 000007e0 75 73 65 20 27 43 6c 69 63 6b 27 20 57 68 69 6c |use 'Click' Whil| 000007f0 73 74 20 4f 76 65 72 20 4d 65 6e 75 20 49 74 65 |st Over Menu Ite| 00000800 6d 2e 0d 02 76 2a f4 20 2a 2a 2a 2a 2a 2a 2a 2a |m...v*. ********| 00000810 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00000820 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 02 80 15 |************....| 00000830 dd 20 f2 5f 4d 65 6e 75 53 65 6c 65 63 74 69 6f |. ._MenuSelectio| 00000840 6e 0d 02 8a 14 20 20 20 c8 8e 20 42 6c 6f 63 6b |n.... .. Block| 00000850 25 21 30 20 ca 0d 02 94 24 20 20 20 20 20 20 c9 |%!0 ....$ .| 00000860 20 30 20 3a 20 f2 5f 4f 70 65 6e 53 75 62 4d 65 | 0 : ._OpenSubMe| 00000870 6e 75 28 49 6e 66 6f 25 29 0d 02 9e 42 20 20 20 |nu(Info%)...B | 00000880 20 20 20 c9 20 31 20 3a 20 f2 5f 43 6c 6f 73 65 | . 1 : ._Close| 00000890 44 6f 77 6e 20 3a 20 f4 20 3c 53 65 6c 65 63 74 |Down : . <Select| 000008a0 3e 20 6f 6e 20 22 71 75 69 74 22 20 63 61 75 73 |> on "quit" caus| 000008b0 65 73 20 73 68 75 74 64 6f 77 6e 0d 02 a8 08 20 |es shutdown.... | 000008c0 20 20 cb 0d 02 b2 05 e1 0d 02 bc 05 3a 0d 02 c6 | ..........:...| 000008d0 26 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |&. *************| 000008e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 000008f0 2a 2a 2a 0d 02 d0 26 f4 20 4d 6f 75 73 65 20 42 |***...&. Mouse B| 00000900 75 74 74 6f 6e 20 53 74 61 74 75 73 20 48 61 73 |utton Status Has| 00000910 20 43 68 61 6e 67 65 64 2e 0d 02 da 26 f4 20 2a | Changed....&. *| 00000920 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00000930 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d |***************.| 00000940 02 e4 13 dd 20 f2 5f 4d 6f 75 73 65 5f 43 6c 69 |.... ._Mouse_Cli| 00000950 63 6b 0d 02 ee 2b ea 20 4d 6f 75 73 65 58 25 2c |ck...+. MouseX%,| 00000960 4d 6f 75 73 65 59 25 2c 42 75 74 74 6f 6e 25 2c |MouseY%,Button%,| 00000970 57 69 6e 64 6f 77 25 2c 49 63 6f 6e 25 0d 02 f8 |Window%,Icon%...| 00000980 46 20 20 20 4d 6f 75 73 65 58 25 3d 42 6c 6f 63 |F MouseX%=Bloc| 00000990 6b 25 21 30 30 20 3a 20 f4 20 42 6c 6f 63 6b 25 |k%!00 : . Block%| 000009a0 21 30 30 20 3d 20 4d 6f 75 73 65 20 58 20 28 53 |!00 = Mouse X (S| 000009b0 63 72 65 65 6e 20 43 6f 2d 6f 72 64 69 6e 61 74 |creen Co-ordinat| 000009c0 65 73 29 0d 03 02 46 20 20 20 4d 6f 75 73 65 59 |es)...F MouseY| 000009d0 25 3d 42 6c 6f 63 6b 25 21 30 34 20 3a 20 f4 20 |%=Block%!04 : . | 000009e0 42 6c 6f 63 6b 25 21 30 34 20 3d 20 4d 6f 75 73 |Block%!04 = Mous| 000009f0 65 20 59 20 28 53 63 72 65 65 6e 20 43 6f 2d 6f |e Y (Screen Co-o| 00000a00 72 64 69 6e 61 74 65 73 29 0d 03 0c 30 20 20 20 |rdinates)...0 | 00000a10 42 75 74 74 6f 6e 25 3d 42 6c 6f 63 6b 25 21 30 |Button%=Block%!0| 00000a20 38 20 3a 20 f4 20 42 6c 6f 63 6b 25 21 30 38 20 |8 : . Block%!08 | 00000a30 3d 20 42 75 74 74 6f 6e 73 0d 03 16 56 20 20 20 |= Buttons...V | 00000a40 57 69 6e 64 6f 77 25 3d 42 6c 6f 63 6b 25 21 31 |Window%=Block%!1| 00000a50 32 20 3a 20 f4 20 42 6c 6f 63 6b 25 21 31 32 20 |2 : . Block%!12 | 00000a60 3d 20 57 69 6e 64 6f 77 20 48 61 6e 64 6c 65 20 |= Window Handle | 00000a70 28 42 61 63 6b 47 72 6f 75 6e 64 20 3d 20 2d 31 |(BackGround = -1| 00000a80 2c 20 49 63 6f 6e 42 61 72 20 3d 20 2d 32 29 0d |, IconBar = -2).| 00000a90 03 20 51 20 20 20 49 63 6f 6e 25 20 20 3d 42 6c |. Q Icon% =Bl| 00000aa0 6f 63 6b 25 21 31 36 20 3a 20 f4 20 42 6c 6f 63 |ock%!16 : . Bloc| 00000ab0 6b 25 21 31 36 20 3d 20 49 63 6f 6e 20 48 61 6e |k%!16 = Icon Han| 00000ac0 64 6c 65 20 28 20 57 6f 72 6b 20 41 72 65 61 20 |dle ( Work Area | 00000ad0 42 61 63 6b 47 72 6f 75 6e 64 20 3d 20 2d 31 29 |BackGround = -1)| 00000ae0 0d 03 2a 07 20 20 3a 0d 03 34 2e 20 20 f4 20 54 |..*. :..4. . T| 00000af0 65 6d 70 6f 72 61 72 79 20 62 6c 6f 63 6b 20 66 |emporary block f| 00000b00 6f 72 20 75 73 65 20 77 69 74 68 20 49 6e 74 65 |or use with Inte| 00000b10 72 66 61 63 65 0d 03 3e 48 20 20 49 42 6c 6f 63 |rface..>H IBloc| 00000b20 6b 25 3d 42 6c 6f 63 6b 25 2b 32 30 34 38 3a e3 |k%=Block%+2048:.| 00000b30 20 4c 6f 6f 70 25 3d 30 20 b8 20 33 32 20 88 34 | Loop%=0 . 32 .4| 00000b40 3a 49 42 6c 6f 63 6b 25 21 4c 6f 6f 70 25 3d 42 |:IBlock%!Loop%=B| 00000b50 6c 6f 63 6b 25 21 4c 6f 6f 70 25 3a ed 0d 03 48 |lock%!Loop%:...H| 00000b60 07 20 20 3a 0d 03 52 36 20 20 20 e7 20 57 69 6e |. :..R6 . Win| 00000b70 64 6f 77 25 3d 49 63 6f 6e 42 61 72 25 20 80 20 |dow%=IconBar% . | 00000b80 49 63 6f 6e 25 3d 49 63 6f 6e 42 61 72 49 63 6f |Icon%=IconBarIco| 00000b90 6e 48 61 6e 64 6c 65 25 20 8c 0d 03 5c 16 20 20 |nHandle% ...\. | 00000ba0 20 20 20 20 c8 8e 20 42 75 74 74 6f 6e 25 20 ca | .. Button% .| 00000bb0 0d 03 66 26 20 20 20 20 20 20 20 20 20 c9 20 25 |..f& . %| 00000bc0 31 30 30 20 3a 20 f2 5f 4f 70 65 6e 4d 61 69 6e |100 : ._OpenMain| 00000bd0 57 69 6e 64 6f 77 0d 03 70 26 20 20 20 20 20 20 |Window..p& | 00000be0 20 20 20 c9 20 25 30 30 31 20 3a 20 f2 5f 4f 70 | . %001 : ._Op| 00000bf0 65 6e 4d 61 69 6e 57 69 6e 64 6f 77 0d 03 7a 4e |enMainWindow..zN| 00000c00 20 20 20 20 20 20 20 20 20 c9 20 25 30 31 30 20 | . %010 | 00000c10 3a 20 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 |: .. "Wimp_Creat| 00000c20 65 4d 65 6e 75 22 2c 2c 49 63 6f 6e 42 61 72 4d |eMenu",,IconBarM| 00000c30 65 6e 75 25 2c 42 6c 6f 63 6b 25 21 30 2d 39 36 |enu%,Block%!0-96| 00000c40 2c 28 34 30 2a 32 29 2b 39 36 0d 03 84 0b 20 20 |,(40*2)+96.... | 00000c50 20 20 20 20 cb 0d 03 8e 08 20 20 20 cd 0d 03 98 | ..... ....| 00000c60 04 0d 03 a2 28 20 20 20 e7 20 57 69 6e 64 6f 77 |....( . Window| 00000c70 25 3d 4d 61 69 6e 25 20 80 20 42 75 74 74 6f 6e |%=Main% . Button| 00000c80 25 3c 3e 25 30 31 30 20 8c 0d 03 ac 14 20 20 20 |%<>%010 ..... | 00000c90 20 20 20 c8 8e 20 49 63 6f 6e 25 20 ca 0d 03 b6 | .. Icon% ....| 00000ca0 35 20 20 20 20 20 20 20 20 20 c9 20 50 72 69 6e |5 . Prin| 00000cb0 74 25 20 3a 20 c8 99 20 22 57 69 6d 70 5f 42 6f |t% : .. "Wimp_Bo| 00000cc0 72 64 65 72 49 63 6f 6e 22 2c 2c 49 42 6c 6f 63 |rderIcon",,IBloc| 00000cd0 6b 25 0d 03 c0 25 20 20 20 20 20 20 20 20 20 20 |k%...% | 00000ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 f2 5f 50 | ._P| 00000cf0 72 69 6e 74 4f 75 74 0d 03 ca 44 20 20 20 20 20 |rintOut...D | 00000d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000d10 20 20 49 42 6c 6f 63 6b 25 21 38 3d 30 3a c8 99 | IBlock%!8=0:..| 00000d20 20 22 57 69 6d 70 5f 42 6f 72 64 65 72 49 63 6f | "Wimp_BorderIco| 00000d30 6e 22 2c 2c 49 42 6c 6f 63 6b 25 0d 03 d4 0b 20 |n",,IBlock%.... | 00000d40 20 20 20 20 20 cb 0d 03 de 08 20 20 20 cd 0d 03 | ..... ...| 00000d50 e8 05 e1 0d 03 f2 05 3a 0d 03 fc 05 3a 0d 04 06 |.......:....:...| 00000d60 49 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |I. *************| 00000d70 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000da0 2a 2a 2a 2a 2a 2a 0d 04 10 49 f4 20 57 68 65 6e |******...I. When| 00000db0 20 61 20 6b 65 79 20 69 73 20 70 72 65 73 73 65 | a key is presse| 00000dc0 64 2c 20 43 68 65 63 6b 20 69 66 20 69 74 20 63 |d, Check if it c| 00000dd0 6f 6e 63 65 72 6e 73 20 6d 65 2e 20 49 66 20 6e |oncerns me. If n| 00000de0 6f 74 2c 20 50 61 73 73 20 69 74 20 6f 6e 21 0d |ot, Pass it on!.| 00000df0 04 1a 49 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |..I. ***********| 00000e00 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000e30 2a 2a 2a 2a 2a 2a 2a 2a 0d 04 24 1e dd 20 f2 5f |********..$.. ._| 00000e40 50 72 6f 63 65 73 73 4b 65 79 28 4b 65 79 50 72 |ProcessKey(KeyPr| 00000e50 65 73 73 65 64 29 0d 04 2e 1d 20 20 20 ea 20 49 |essed).... . I| 00000e60 63 6f 6e 25 2c 49 6e 64 65 78 25 2c 57 69 6e 64 |con%,Index%,Wind| 00000e70 6f 77 25 0d 04 38 17 20 20 20 57 69 6e 64 6f 77 |ow%..8. Window| 00000e80 25 3d 42 6c 6f 63 6b 25 21 30 0d 04 42 15 20 20 |%=Block%!0..B. | 00000e90 20 49 63 6f 6e 25 3d 42 6c 6f 63 6b 25 21 34 0d | Icon%=Block%!4.| 00000ea0 04 4c 17 20 20 20 49 6e 64 65 78 25 3d 42 6c 6f |.L. Index%=Blo| 00000eb0 63 6b 25 21 32 30 0d 04 56 16 20 20 20 c8 8e 20 |ck%!20..V. .. | 00000ec0 4b 65 79 50 72 65 73 73 65 64 20 ca 0d 04 60 04 |KeyPressed ...`.| 00000ed0 0d 04 6a 2f 20 20 20 20 20 20 c9 20 26 31 38 30 |..j/ . &180| 00000ee0 20 3a 20 c8 99 20 22 57 69 6d 70 5f 42 6f 72 64 | : .. "Wimp_Bord| 00000ef0 65 72 49 63 6f 6e 22 2c 2c 42 6c 6f 63 6b 25 0d |erIcon",,Block%.| 00000f00 04 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.t | 00000f10 20 20 20 20 20 f2 5f 50 72 69 6e 74 4f 75 74 0d | ._PrintOut.| 00000f20 04 7e 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 |.~> | 00000f30 20 20 20 20 20 42 6c 6f 63 6b 25 21 31 38 3d 30 | Block%!18=0| 00000f40 3a c8 99 20 22 57 69 6d 70 5f 42 6f 72 64 65 72 |:.. "Wimp_Border| 00000f50 49 63 6f 6e 22 2c 2c 42 6c 6f 63 6b 25 0d 04 88 |Icon",,Block%...| 00000f60 13 20 20 20 20 20 20 f4 20 3c 50 72 69 6e 74 3e |. . <Print>| 00000f70 0d 04 92 04 0d 04 9c 1b 20 20 20 20 20 20 c9 20 |........ . | 00000f80 26 30 44 20 20 3a 20 f2 5f 53 65 61 72 63 68 0d |&0D : ._Search.| 00000f90 04 a6 14 20 20 20 20 20 20 f4 20 3c 52 65 74 75 |... . <Retu| 00000fa0 72 6e 3e 0d 04 b0 04 0d 04 ba 2a 20 20 20 20 20 |rn>.......* | 00000fb0 20 7f 20 c8 99 20 22 57 69 6d 70 5f 50 72 6f 63 | . .. "Wimp_Proc| 00000fc0 65 73 73 4b 65 79 22 2c 42 6c 6f 63 6b 25 21 32 |essKey",Block%!2| 00000fd0 34 0d 04 c4 04 0d 04 ce 08 20 20 20 cb 0d 04 d8 |4........ ....| 00000fe0 05 e1 0d 04 e2 05 3a 0d 04 ec 24 f4 20 2a 2a 2a |......:...$. ***| 00000ff0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00001000 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 04 f6 24 f4 |***********...$.| 00001010 20 53 65 74 20 77 68 69 63 68 20 69 63 6f 6e 20 | Set which icon | 00001020 74 68 65 20 63 61 72 65 74 20 69 73 20 69 6e 0d |the caret is in.| 00001030 05 00 24 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |..$. ***********| 00001040 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00001050 2a 2a 2a 0d 05 0a 26 dd 20 f2 5f 53 65 74 43 61 |***...&. ._SetCa| 00001060 72 65 74 50 6f 73 69 74 69 6f 6e 28 49 63 6f 6e |retPosition(Icon| 00001070 25 2c 49 6e 64 65 78 25 29 0d 05 14 31 20 20 20 |%,Index%)...1 | 00001080 49 63 6f 6e 4c 65 6e 67 74 68 25 3d a9 28 a4 5f |IconLength%=.(._| 00001090 52 65 61 64 49 63 6f 6e 54 65 78 74 28 4d 61 69 |ReadIconText(Mai| 000010a0 6e 25 2c 49 63 6f 6e 25 29 29 0d 05 1e 30 20 20 |n%,Icon%))...0 | 000010b0 20 e7 20 49 6e 64 65 78 25 3e 49 63 6f 6e 4c 65 | . Index%>IconLe| 000010c0 6e 67 74 68 25 20 8c 20 49 6e 64 65 78 25 3d 49 |ngth% . Index%=I| 000010d0 63 6f 6e 4c 65 6e 67 74 68 25 0d 05 28 39 20 20 |conLength%..(9 | 000010e0 20 c8 99 20 22 57 69 6d 70 5f 53 65 74 43 61 72 | .. "Wimp_SetCar| 000010f0 65 74 50 6f 73 69 74 69 6f 6e 22 2c 4d 61 69 6e |etPosition",Main| 00001100 25 2c 49 63 6f 6e 25 2c 2c 2c 2d 31 2c 49 6e 64 |%,Icon%,,,-1,Ind| 00001110 65 78 25 0d 05 32 05 e1 0d 05 3c 05 3a 0d 05 46 |ex%..2....<.:..F| 00001120 25 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |%. *************| 00001130 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00001140 2a 2a 0d 05 50 25 f4 20 52 65 64 72 61 77 20 74 |**..P%. Redraw t| 00001150 68 65 20 73 70 65 63 69 66 69 69 65 64 20 69 63 |he specifiied ic| 00001160 6f 6e 20 28 76 32 29 0d 05 5a 25 f4 20 2a 2a 2a |on (v2)..Z%. ***| 00001170 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00001180 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 05 64 1d |************..d.| 00001190 dd 20 f2 5f 52 65 64 72 61 77 28 57 69 6e 64 6f |. ._Redraw(Windo| 000011a0 77 25 2c 49 63 6f 6e 25 29 0d 05 6e 17 20 20 20 |w%,Icon%)..n. | 000011b0 42 6c 6f 63 6b 25 21 30 3d 57 69 6e 64 6f 77 25 |Block%!0=Window%| 000011c0 0d 05 78 15 20 20 20 42 6c 6f 63 6b 25 21 34 3d |..x. Block%!4=| 000011d0 49 63 6f 6e 25 0d 05 82 11 20 20 20 42 6c 6f 63 |Icon%.... Bloc| 000011e0 6b 25 21 38 3d 30 0d 05 8c 12 20 20 20 42 6c 6f |k%!8=0.... Blo| 000011f0 63 6b 25 21 31 32 3d 30 0d 05 96 25 20 20 20 c8 |ck%!12=0...% .| 00001200 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 |. "Wimp_SetIconS| 00001210 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 25 0d 05 a0 |tate",,Block%...| 00001220 05 e1 0d 05 aa 05 3a 0d 05 b4 45 f4 20 2a 2a 2a |......:...E. ***| 00001230 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001260 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 05 be 48 |************...H| 00001270 f4 20 57 68 65 6e 20 61 20 6d 65 73 73 61 67 65 |. When a message| 00001280 20 69 73 20 72 65 63 65 69 76 65 64 2c 20 43 6f | is received, Co| 00001290 6e 74 72 6f 6c 20 69 73 20 70 61 73 73 65 64 20 |ntrol is passed | 000012a0 74 6f 20 68 65 72 65 20 66 6f 72 20 64 65 63 6f |to here for deco| 000012b0 64 69 6e 67 0d 05 c8 45 f4 20 2a 2a 2a 2a 2a 2a |ding...E. ******| 000012c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000012f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 05 d2 1f dd 20 f2 |*********..... .| 00001300 5f 44 65 63 6f 64 65 4d 65 73 73 61 67 65 28 52 |_DecodeMessage(R| 00001310 65 71 75 65 73 74 25 29 0d 05 dc 14 20 20 20 c8 |equest%).... .| 00001320 8e 20 52 65 71 75 65 73 74 25 20 ca 0d 05 e6 20 |. Request% .... | 00001330 20 20 20 20 20 20 c9 20 30 20 20 20 20 20 20 3a | . 0 :| 00001340 20 f2 5f 43 6c 6f 73 65 44 6f 77 6e 0d 05 f0 36 | ._CloseDown...6| 00001350 20 20 20 20 20 20 c9 20 26 35 30 32 20 20 20 3a | . &502 :| 00001360 20 c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 49 6e | .. "Wimp_SendIn| 00001370 66 6f 72 6d 61 74 69 6f 6e 22 2c 2c 42 6c 6f 63 |formation",,Bloc| 00001380 6b 25 0d 05 fa 23 20 20 20 20 20 20 c9 20 26 34 |k%...# . &4| 00001390 30 30 43 31 20 3a 20 f2 5f 53 65 74 55 70 50 61 |00C1 : ._SetUpPa| 000013a0 6c 65 74 74 65 0d 06 04 50 20 20 20 20 20 20 c9 |lette...P .| 000013b0 20 26 34 30 30 43 32 20 3a 20 e7 20 a4 5f 52 65 | &400C2 : . ._Re| 000013c0 61 64 53 74 72 69 6e 67 28 42 6c 6f 63 6b 25 2b |adString(Block%+| 000013d0 32 38 29 3d 4d 79 54 61 73 6b 4e 61 6d 65 24 20 |28)=MyTaskName$ | 000013e0 80 20 42 6c 6f 63 6b 25 21 34 3c 3e 20 4d 79 5f |. Block%!4<> My_| 000013f0 69 64 25 20 8c 0d 06 0e 5a 20 20 20 20 20 20 20 |id% ....Z | 00001400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001410 f4 20 41 6e 6f 74 68 65 72 20 21 45 78 63 68 61 |. Another !Excha| 00001420 6e 67 65 20 69 73 20 74 72 79 69 6e 67 20 74 6f |nge is trying to| 00001430 20 73 74 61 72 74 20 75 70 2c 20 73 6f 20 49 20 | start up, so I | 00001440 61 6d 20 73 6f 64 64 69 6e 67 20 6f 66 66 21 0d |am sodding off!.| 00001450 06 18 26 20 20 20 20 20 20 20 20 20 20 20 20 20 |..& | 00001460 20 20 20 20 20 20 20 20 20 20 f2 5f 43 6c 6f 73 | ._Clos| 00001470 65 44 6f 77 6e 0d 06 22 19 20 20 20 20 20 20 20 |eDown..". | 00001480 20 20 20 20 20 20 20 20 20 20 20 20 20 cd 0d 06 | ...| 00001490 2c 08 20 20 20 cb 0d 06 36 05 e1 0d 06 40 05 3a |,. ...6....@.:| 000014a0 0d 06 4a 50 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |..JP. **********| 000014b0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000014f0 0d 06 54 50 f4 20 52 65 61 64 20 69 6e 20 68 6f |..TP. Read in ho| 00001500 77 20 6d 61 6e 79 20 63 6f 6c 6f 75 72 73 20 61 |w many colours a| 00001510 72 65 20 61 76 61 69 6c 61 62 6c 65 2c 20 61 6e |re available, an| 00001520 64 20 73 65 74 20 75 70 20 6d 79 20 74 77 6f 20 |d set up my two | 00001530 63 6f 6c 6f 75 72 73 20 74 6f 20 73 75 69 74 21 |colours to suit!| 00001540 0d 06 5e 50 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |..^P. **********| 00001550 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001590 0d 06 68 14 dd 20 f2 5f 53 65 74 55 70 50 61 6c |..h.. ._SetUpPal| 000015a0 65 74 74 65 0d 06 72 35 20 20 20 c8 99 20 22 4f |ette..r5 .. "O| 000015b0 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 62 |S_ReadModeVariab| 000015c0 6c 65 22 2c 2d 31 2c 33 20 b8 20 2c 2c 4e 6f 4f |le",-1,3 . ,,NoO| 000015d0 66 43 6f 6c 6f 75 72 73 25 0d 06 7c 18 20 20 20 |fColours%..|. | 000015e0 c8 8e 20 4e 6f 4f 66 43 6f 6c 6f 75 72 73 25 20 |.. NoOfColours% | 000015f0 ca 0d 06 86 33 20 20 20 20 20 20 c9 20 31 2c 33 |....3 . 1,3| 00001600 2c 31 35 20 20 3a 20 42 61 73 65 43 6f 6c 6f 75 |,15 : BaseColou| 00001610 72 25 3d 37 20 3a 20 54 6f 77 6e 43 6f 6c 6f 75 |r%=7 : TownColou| 00001620 72 25 3d 33 0d 06 90 30 20 20 20 20 20 20 c9 20 |r%=3...0 . | 00001630 36 33 20 3a 20 42 61 73 65 43 6f 6c 6f 75 72 25 |63 : BaseColour%| 00001640 3d 36 34 20 3a 20 54 6f 77 6e 43 6f 6c 6f 75 72 |=64 : TownColour| 00001650 25 3d 34 32 0d 06 9a 08 20 20 20 cb 0d 06 a4 05 |%=42.... .....| 00001660 e1 0d 06 ae 05 3a 0d 06 b8 41 f4 20 2a 2a 2a 2a |.....:...A. ****| 00001670 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000016a0 2a 2a 2a 2a 2a 2a 2a 0d 06 c2 41 f4 20 41 6c 6c |*******...A. All| 000016b0 20 57 49 4d 50 20 50 72 6f 67 72 61 6d 73 20 73 | WIMP Programs s| 000016c0 68 6f 75 6c 64 20 62 65 20 61 62 6c 65 20 74 6f |hould be able to| 000016d0 20 73 68 75 74 20 74 68 65 6d 73 65 6c 76 65 73 | shut themselves| 000016e0 20 64 6f 77 6e 21 21 21 0d 06 cc 41 f4 20 2a 2a | down!!!...A. **| 000016f0 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 0d 06 d6 11 dd 20 f2 |*********..... .| 00001730 5f 43 6c 6f 73 65 44 6f 77 6e 0d 06 e0 27 20 20 |_CloseDown...' | 00001740 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 | .. "Wimp_GetPoi| 00001750 6e 74 65 72 49 6e 66 6f 22 2c 2c 42 6c 6f 63 6b |nterInfo",,Block| 00001760 25 0d 06 ea 2b 20 20 20 c8 99 20 22 57 69 6d 70 |%...+ .. "Wimp| 00001770 5f 43 6c 6f 73 65 44 6f 77 6e 22 2c 4d 79 5f 69 |_CloseDown",My_i| 00001780 64 25 2c 26 34 42 35 33 34 31 35 34 0d 06 f4 28 |d%,&4B534154...(| 00001790 20 20 20 c8 99 20 22 57 69 6d 70 5f 52 65 6c 65 | .. "Wimp_Rele| 000017a0 61 73 65 49 6e 74 65 72 66 61 63 65 22 2c 4d 79 |aseInterface",My| 000017b0 5f 69 64 25 0d 06 fe 13 20 20 20 c8 99 20 22 4f |_id%.... .. "O| 000017c0 53 5f 45 78 69 74 22 0d 07 08 05 e1 0d 07 12 05 |S_Exit".........| 000017d0 3a 0d 07 1c 49 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a |:...I. *********| 000017e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001810 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 07 26 49 f4 20 |**********..&I. | 00001820 54 68 69 73 20 77 72 69 74 65 73 20 6f 76 65 72 |This writes over| 00001830 20 74 68 65 20 74 65 78 74 20 69 6e 20 74 68 65 | the text in the| 00001840 20 49 63 6f 6e 2c 20 61 6e 64 20 69 74 20 73 68 | Icon, and it sh| 00001850 6f 75 6c 64 20 6e 6f 74 20 62 65 20 64 6f 6e 65 |ould not be done| 00001860 21 21 21 0d 07 30 2e f4 20 4f 6e 6c 79 20 57 6f |!!!..0.. Only Wo| 00001870 72 6b 73 20 57 69 74 68 20 49 6e 64 69 72 65 63 |rks With Indirec| 00001880 74 65 64 20 54 65 78 74 20 53 74 72 69 6e 67 73 |ted Text Strings| 00001890 21 0d 07 3a 49 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a |!..:I. *********| 000018a0 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 2a 0d 07 44 3f dd 20 |**********..D?. | 000018e0 f2 5f 53 65 74 49 63 6f 6e 54 65 78 74 28 49 63 |._SetIconText(Ic| 000018f0 6f 6e 48 61 6e 64 6c 65 25 2c 57 69 6e 64 6f 77 |onHandle%,Window| 00001900 48 61 6e 64 6c 65 25 2c 54 65 78 74 24 2c 4d 61 |Handle%,Text$,Ma| 00001910 78 4c 65 6e 67 74 68 25 29 0d 07 4e 11 20 20 20 |xLength%)..N. | 00001920 ea 20 50 6f 69 6e 74 65 72 25 0d 07 58 1d 20 20 |. Pointer%..X. | 00001930 20 42 6c 6f 63 6b 25 21 30 3d 57 69 6e 64 6f 77 | Block%!0=Window| 00001940 48 61 6e 64 6c 65 25 0d 07 62 1b 20 20 20 42 6c |Handle%..b. Bl| 00001950 6f 63 6b 25 21 34 3d 49 63 6f 6e 48 61 6e 64 6c |ock%!4=IconHandl| 00001960 65 25 0d 07 6c 25 20 20 20 c8 99 20 22 57 69 6d |e%..l% .. "Wim| 00001970 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_GetIconState",| 00001980 2c 42 6c 6f 63 6b 25 0d 07 76 22 20 20 20 e7 20 |,Block%..v" . | 00001990 28 42 6c 6f 63 6b 25 21 32 34 20 80 20 28 31 3c |(Block%!24 . (1<| 000019a0 3c 38 29 29 3c 3e 30 20 8c 0d 07 80 1c 20 20 20 |<8))<>0 ..... | 000019b0 20 20 20 50 6f 69 6e 74 65 72 25 3d 42 6c 6f 63 | Pointer%=Bloc| 000019c0 6b 25 21 32 38 0d 07 8a 08 20 20 20 cc 0d 07 94 |k%!28.... ....| 000019d0 1c 20 20 20 20 20 20 50 6f 69 6e 74 65 72 25 3d |. Pointer%=| 000019e0 42 6c 6f 63 6b 25 2b 32 38 0d 07 9e 08 20 20 20 |Block%+28.... | 000019f0 cd 0d 07 a8 1c 20 20 20 e7 20 a9 54 65 78 74 24 |..... . .Text$| 00001a00 3e 4d 61 78 4c 65 6e 67 74 68 25 20 8c 0d 07 b2 |>MaxLength% ....| 00001a10 17 20 20 20 20 20 20 42 6c 6f 63 6b 25 21 30 3d |. Block%!0=| 00001a20 32 30 30 31 0d 07 bc 5a 20 20 20 20 20 20 45 72 |2001...Z Er| 00001a30 72 6f 72 24 20 3d 20 22 49 6c 6c 65 67 61 6c 20 |ror$ = "Illegal | 00001a40 61 74 74 65 6d 70 74 20 74 6f 20 65 78 74 65 6e |attempt to exten| 00001a50 64 20 49 63 6f 6e 20 74 65 78 74 20 73 74 72 69 |d Icon text stri| 00001a60 6e 67 21 20 28 49 6e 74 65 72 6e 61 6c 20 65 72 |ng! (Internal er| 00001a70 72 6f 72 20 22 2b c3 28 9e 29 2b 22 2e 22 0d 07 |ror "+.(.)+"."..| 00001a80 c6 49 20 20 20 20 20 20 45 72 72 6f 72 24 20 3d |.I Error$ =| 00001a90 20 45 72 72 6f 72 24 20 2b 20 c3 28 a9 28 54 65 | Error$ + .(.(Te| 00001aa0 78 74 24 29 29 20 2b 20 22 2f 22 20 2b 20 c3 28 |xt$)) + "/" + .(| 00001ab0 4d 61 78 4c 65 6e 67 74 68 25 29 20 2b 20 22 2e |MaxLength%) + ".| 00001ac0 29 22 20 2b 20 bd 30 0d 07 d0 1c 20 20 20 20 20 |)" + .0.... | 00001ad0 20 24 28 42 6c 6f 63 6b 25 2b 34 29 3d 45 72 72 | $(Block%+4)=Err| 00001ae0 6f 72 24 0d 07 da 44 20 20 20 20 20 20 c8 99 20 |or$...D .. | 00001af0 22 57 69 6d 70 5f 52 65 70 6f 72 74 45 72 72 6f |"Wimp_ReportErro| 00001b00 72 22 2c 42 6c 6f 63 6b 25 2c 25 31 30 30 30 31 |r",Block%,%10001| 00001b10 2c 4d 79 54 61 73 6b 4e 61 6d 65 24 20 b8 20 2c |,MyTaskName$ . ,| 00001b20 52 65 73 75 6c 74 25 0d 07 e4 23 20 20 20 20 20 |Result%...# | 00001b30 20 e7 20 52 65 73 75 6c 74 25 3d 31 20 8c 20 f2 | . Result%=1 . .| 00001b40 5f 43 6c 6f 73 65 44 6f 77 6e 0d 07 ee 08 20 20 |_CloseDown.... | 00001b50 20 cc 0d 07 f8 19 20 20 20 20 20 20 24 50 6f 69 | ..... $Poi| 00001b60 6e 74 65 72 25 3d 54 65 78 74 24 0d 08 02 08 20 |nter%=Text$.... | 00001b70 20 20 cd 0d 08 0c 05 e1 0d 08 16 05 3a 0d 08 20 | ..........:.. | 00001b80 43 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |C. *************| 00001b90 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001bc0 0d 08 2a 43 f4 20 54 68 69 73 20 74 61 6b 65 73 |..*C. This takes| 00001bd0 20 61 20 53 70 72 69 74 65 20 61 6e 64 20 6d 61 | a Sprite and ma| 00001be0 6b 65 73 20 69 74 20 69 6e 74 6f 20 61 6e 20 49 |kes it into an I| 00001bf0 63 6f 6e 20 46 6f 72 20 74 68 65 20 49 63 6f 6e |con For the Icon| 00001c00 42 61 72 0d 08 34 43 f4 20 2a 2a 2a 2a 2a 2a 2a |Bar..4C. *******| 00001c10 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001c40 2a 2a 2a 2a 2a 2a 0d 08 3e 19 dd 20 a4 5f 43 72 |******..>.. ._Cr| 00001c50 65 61 74 65 49 63 6f 6e 42 61 72 49 63 6f 6e 0d |eateIconBarIcon.| 00001c60 08 48 0e 20 20 20 ea 20 49 63 6f 6e 25 0d 08 52 |.H. . Icon%..R| 00001c70 12 20 20 20 42 6c 6f 63 6b 25 21 30 3d 2d 31 0d |. Block%!0=-1.| 00001c80 08 5c 11 20 20 20 42 6c 6f 63 6b 25 21 34 3d 30 |.\. Block%!4=0| 00001c90 0d 08 66 11 20 20 20 42 6c 6f 63 6b 25 21 38 3d |..f. Block%!8=| 00001ca0 30 0d 08 70 13 20 20 20 42 6c 6f 63 6b 25 21 31 |0..p. Block%!1| 00001cb0 32 3d 38 34 0d 08 7a 13 20 20 20 42 6c 6f 63 6b |2=84..z. Block| 00001cc0 25 21 31 36 3d 38 30 0d 08 84 20 20 20 20 42 6c |%!16=80... Bl| 00001cd0 6f 63 6b 25 21 32 30 3d 25 31 30 30 30 30 30 30 |ock%!20=%1000000| 00001ce0 30 30 30 30 30 31 30 0d 08 8e 1f 20 20 20 24 28 |0000010.... $(| 00001cf0 42 6c 6f 63 6b 25 2b 32 34 29 3d 22 21 45 78 63 |Block%+24)="!Exc| 00001d00 68 61 6e 67 65 22 0d 08 98 2b 20 20 20 c8 99 20 |hange"...+ .. | 00001d10 22 57 69 6d 70 5f 43 72 65 61 74 65 49 63 6f 6e |"Wimp_CreateIcon| 00001d20 22 2c 2c 42 6c 6f 63 6b 25 20 b8 20 49 63 6f 6e |",,Block% . Icon| 00001d30 25 0d 08 a2 0a 3d 49 63 6f 6e 25 0d 08 ac 05 3a |%....=Icon%....:| 00001d40 0d 08 b6 33 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |...3. **********| 00001d50 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001d70 2a 2a 2a 0d 08 c0 33 f4 20 52 65 61 64 20 49 6e |***...3. Read In| 00001d80 66 6f 20 66 6f 72 20 57 69 6e 64 6f 77 20 4d 61 |fo for Window Ma| 00001d90 69 6e 2c 20 61 6e 64 20 74 68 65 6e 20 6f 70 65 |in, and then ope| 00001da0 6e 20 69 74 20 21 0d 08 ca 33 f4 20 2a 2a 2a 2a |n it !...3. ****| 00001db0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001dd0 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 08 d4 16 dd 20 f2 |*********..... .| 00001de0 5f 4f 70 65 6e 4d 61 69 6e 57 69 6e 64 6f 77 0d |_OpenMainWindow.| 00001df0 08 de 14 20 20 20 21 42 6c 6f 63 6b 25 3d 4d 61 |... !Block%=Ma| 00001e00 69 6e 25 0d 08 e8 27 20 20 20 c8 99 20 22 57 69 |in%...' .. "Wi| 00001e10 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 |mp_GetWindowStat| 00001e20 65 22 2c 2c 42 6c 6f 63 6b 25 0d 08 f2 23 20 20 |e",,Block%...# | 00001e30 20 c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 | .. "Wimp_OpenWi| 00001e40 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b 25 0d 08 fc |ndow",,Block%...| 00001e50 22 20 20 20 f2 5f 53 65 74 43 61 72 65 74 50 6f |" ._SetCaretPo| 00001e60 73 69 74 69 6f 6e 28 44 61 74 61 25 2c 30 29 0d |sition(Data%,0).| 00001e70 09 06 05 e1 0d 09 10 05 3a 0d 09 1a 4c f4 20 2a |........:...L. *| 00001e80 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001ec0 2a 2a 2a 2a 2a 0d 09 24 4c f4 20 54 68 69 73 20 |*****..$L. This | 00001ed0 72 65 61 64 73 20 74 68 65 20 74 65 78 74 20 66 |reads the text f| 00001ee0 72 6f 6d 20 74 68 65 20 77 72 69 74 61 62 6c 65 |rom the writable| 00001ef0 20 49 63 6f 6e 20 73 70 65 63 69 66 69 65 64 20 | Icon specified | 00001f00 69 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 |in the parameter| 00001f10 73 0d 09 2e 41 f4 20 61 6e 64 20 69 66 20 50 61 |s...A. and if Pa| 00001f20 64 25 3d 54 52 55 45 20 74 68 65 6e 20 70 61 64 |d%=TRUE then pad| 00001f30 73 20 6f 75 74 20 74 68 65 20 72 65 73 75 6c 74 |s out the result| 00001f40 20 74 6f 20 33 32 20 63 68 61 72 61 63 74 65 72 | to 32 character| 00001f50 73 21 0d 09 38 4c f4 20 2a 2a 2a 2a 2a 2a 2a 2a |s!..8L. ********| 00001f60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001f90 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 09 |**************..| 00001fa0 42 2f dd 20 a4 5f 52 65 61 64 49 63 6f 6e 54 65 |B/. ._ReadIconTe| 00001fb0 78 74 28 57 69 6e 64 6f 77 48 61 6e 64 6c 65 25 |xt(WindowHandle%| 00001fc0 2c 49 63 6f 6e 48 61 6e 64 6c 65 25 29 0d 09 4c |,IconHandle%)..L| 00001fd0 10 20 20 20 ea 20 52 65 73 75 6c 74 24 0d 09 56 |. . Result$..V| 00001fe0 20 20 20 20 42 6c 6f 63 6b 25 21 31 30 32 34 3d | Block%!1024=| 00001ff0 57 69 6e 64 6f 77 48 61 6e 64 6c 65 25 0d 09 60 |WindowHandle%..`| 00002000 1e 20 20 20 42 6c 6f 63 6b 25 21 31 30 32 38 3d |. Block%!1028=| 00002010 49 63 6f 6e 48 61 6e 64 6c 65 25 0d 09 6a 2a 20 |IconHandle%..j* | 00002020 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 | .. "Wimp_GetIc| 00002030 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 25 |onState",,Block%| 00002040 2b 31 30 32 34 0d 09 74 24 20 20 20 e7 20 28 42 |+1024..t$ . (B| 00002050 6c 6f 63 6b 25 21 31 30 34 38 20 80 20 28 31 3c |lock%!1048 . (1<| 00002060 3c 38 29 29 3c 3e 30 20 8c 0d 09 7e 20 20 20 20 |<8))<>0 ...~ | 00002070 20 20 20 52 65 73 75 6c 74 24 3d 24 28 42 6c 6f | Result$=$(Blo| 00002080 63 6b 25 21 31 30 35 32 29 0d 09 88 08 20 20 20 |ck%!1052).... | 00002090 cc 0d 09 92 20 20 20 20 20 20 20 52 65 73 75 6c |.... Resul| 000020a0 74 24 3d 24 28 42 6c 6f 63 6b 25 2b 31 30 35 32 |t$=$(Block%+1052| 000020b0 29 0d 09 9c 08 20 20 20 cd 0d 09 a6 0c 3d 52 65 |).... .....=Re| 000020c0 73 75 6c 74 24 0d 09 b0 05 3a 0d 09 ba 3b f4 20 |sult$....:...;. | 000020d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002100 2a 2a 2a 2a 2a 0d 09 c4 3b f4 20 52 65 61 64 20 |*****...;. Read | 00002110 61 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 61 20 |a string from a | 00002120 70 6f 69 6e 74 65 72 2c 20 75 73 69 6e 67 20 61 |pointer, using a| 00002130 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 6f 72 | zero-terminator| 00002140 0d 09 ce 3b f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |...;. **********| 00002150 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002170 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 09 d8 1c dd |***********.....| 00002180 20 a4 5f 52 65 61 64 53 74 72 69 6e 67 28 50 6f | ._ReadString(Po| 00002190 69 6e 74 65 72 25 29 0d 09 e2 10 20 20 20 ea 20 |inter%).... . | 000021a0 53 74 72 69 6e 67 24 0d 09 ec 16 20 20 20 c8 95 |String$.... ..| 000021b0 20 3f 50 6f 69 6e 74 65 72 25 3c 3e 30 0d 09 f6 | ?Pointer%<>0...| 000021c0 1d 20 20 20 20 20 20 53 74 72 69 6e 67 24 2b 3d |. String$+=| 000021d0 bd 3f 50 6f 69 6e 74 65 72 25 0d 0a 00 15 20 20 |.?Pointer%.... | 000021e0 20 20 20 20 50 6f 69 6e 74 65 72 25 2b 3d 31 0d | Pointer%+=1.| 000021f0 0a 0a 08 20 20 20 ce 0d 0a 14 0c 3d 53 74 72 69 |... .....=Stri| 00002200 6e 67 24 0d 0a 1e 05 3a 0d 0a 28 2d f4 20 2a 2a |ng$....:..(-. **| 00002210 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002230 2a 2a 2a 2a 2a 0d 0a 32 2d f4 20 41 6c 6c 6f 77 |*****..2-. Allow| 00002240 73 20 61 20 6d 65 6e 75 20 74 6f 20 62 65 20 6f |s a menu to be o| 00002250 70 65 6e 65 64 20 61 73 20 61 20 77 69 6e 64 6f |pened as a windo| 00002260 77 2e 0d 0a 3c 2d f4 20 2a 2a 2a 2a 2a 2a 2a 2a |w...<-. ********| 00002270 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00002280 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d |***************.| 00002290 0a 46 1c dd 20 f2 5f 4f 70 65 6e 53 75 62 4d 65 |.F.. ._OpenSubMe| 000022a0 6e 75 28 57 69 6e 64 6f 77 25 29 0d 0a 50 27 20 |nu(Window%)..P' | 000022b0 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 6f | .. "Wimp_GetPo| 000022c0 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 42 6c 6f 63 |interInfo",,Bloc| 000022d0 6b 25 0d 0a 5a 3c 20 20 20 c8 99 20 22 57 69 6d |k%..Z< .. "Wim| 000022e0 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 57 |p_CreateMenu",,W| 000022f0 69 6e 64 6f 77 25 2c 42 6c 6f 63 6b 25 21 30 2d |indow%,Block%!0-| 00002300 36 34 2c 42 6c 6f 63 6b 25 21 34 2b 34 38 0d 0a |64,Block%!4+48..| 00002310 64 05 e1 0d 0a 6e 05 3a 0d 0a 78 39 f4 20 2a 2a |d....n.:..x9. **| 00002320 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002350 2a 0d 0a 82 39 f4 20 57 72 69 74 65 73 20 61 20 |*...9. Writes a | 00002360 73 74 72 69 6e 67 20 69 6e 74 6f 20 6d 65 6d 6f |string into memo| 00002370 72 79 20 77 69 74 68 20 61 20 7a 65 72 6f 20 74 |ry with a zero t| 00002380 65 72 6d 69 6e 61 74 6f 72 2e 0d 0a 8c 11 f4 20 |erminator...... | 00002390 55 73 65 73 20 3a 20 4e 4f 4e 45 0d 0a 96 39 f4 |Uses : NONE...9.| 000023a0 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ***************| 000023b0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000023d0 2a 2a 2a 2a 0d 0a a0 23 dd 20 f2 5f 57 72 69 74 |****...#. ._Writ| 000023e0 65 53 74 72 69 6e 67 28 50 6f 69 6e 74 65 72 25 |eString(Pointer%| 000023f0 2c 54 65 78 74 24 29 0d 0a aa 0b ea 20 4c 6f 6f |,Text$)..... Loo| 00002400 70 25 0d 0a b4 1b 20 20 20 e3 20 4c 6f 6f 70 25 |p%.... . Loop%| 00002410 3d 31 20 b8 20 a9 28 54 65 78 74 24 29 0d 0a be |=1 . .(Text$)...| 00002420 2f 20 20 20 20 20 20 4c 6f 6f 70 25 3f 28 50 6f |/ Loop%?(Po| 00002430 69 6e 74 65 72 25 2d 31 29 3d 97 28 c1 54 65 78 |inter%-1)=.(.Tex| 00002440 74 24 2c 4c 6f 6f 70 25 2c 31 29 29 0d 0a c8 08 |t$,Loop%,1))....| 00002450 20 20 20 ed 0d 0a d2 1b 20 20 20 4c 6f 6f 70 25 | ..... Loop%| 00002460 3f 28 50 6f 69 6e 74 65 72 25 2d 31 29 3d 30 0d |?(Pointer%-1)=0.| 00002470 0a dc 05 e1 0d 0a e6 05 3a 0d 0a f0 3e f4 20 2a |........:...>. *| 00002480 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000024b0 2a 2a 2a 2a 2a 2a 2a 0d 0a fa 3f f4 20 53 74 61 |*******...?. Sta| 000024c0 72 74 20 55 70 20 70 72 6f 67 72 61 6d 20 61 73 |rt Up program as| 000024d0 20 61 20 74 61 73 6b 20 77 69 74 68 20 6e 61 6d | a task with nam| 000024e0 65 20 22 46 6f 6e 74 20 50 72 69 6e 74 6f 75 74 |e "Font Printout| 000024f0 20 54 65 73 74 22 0d 0b 04 3e f4 20 2a 2a 2a 2a | Test"...>. ****| 00002500 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002530 2a 2a 2a 2a 0d 0b 0e 1e dd 20 f2 5f 49 6e 69 74 |****..... ._Init| 00002540 69 61 6c 69 73 65 5f 57 49 4d 50 5f 53 79 73 74 |ialise_WIMP_Syst| 00002550 65 6d 0d 0b 18 25 20 20 20 4d 79 54 61 73 6b 4e |em...% MyTaskN| 00002560 61 6d 65 24 3d 22 45 78 63 68 61 6e 67 65 20 4c |ame$="Exchange L| 00002570 6f 63 61 74 6f 72 22 0d 0b 22 43 20 20 20 c8 99 |ocator".."C ..| 00002580 20 22 57 69 6d 70 5f 49 6e 69 74 69 61 6c 69 73 | "Wimp_Initialis| 00002590 65 22 2c 32 30 30 2c 26 34 42 35 33 34 31 35 34 |e",200,&4B534154| 000025a0 2c 4d 79 54 61 73 6b 4e 61 6d 65 24 20 b8 20 76 |,MyTaskName$ . v| 000025b0 65 72 25 2c 4d 79 5f 69 64 25 0d 0b 2c 0e 20 20 |er%,My_id%..,. | 000025c0 20 4d 61 73 6b 25 3d 30 0d 0b 36 26 20 20 20 c8 | Mask%=0..6& .| 000025d0 99 20 22 57 69 6d 70 5f 43 6c 61 69 6d 49 6e 74 |. "Wimp_ClaimInt| 000025e0 65 72 66 61 63 65 22 2c 4d 79 5f 69 64 25 0d 0b |erface",My_id%..| 000025f0 40 05 e1 0d 0b 4a 05 3a 0d 0b 54 1c dd 20 f2 5f |@....J.:..T.. ._| 00002600 49 6e 69 74 69 61 6c 69 73 65 5f 54 65 6d 70 6c |Initialise_Templ| 00002610 61 74 65 73 0d 0b 5e 2e 20 20 20 6d 61 78 77 73 |ates..^. maxws| 00002620 25 3d 26 39 30 30 20 3a 20 de 20 77 73 25 20 6d |%=&900 : . ws% m| 00002630 61 78 77 73 25 20 3a 20 63 75 72 77 73 25 3d 77 |axws% : curws%=w| 00002640 73 25 0d 0b 68 42 20 20 20 c8 99 22 57 69 6d 70 |s%..hB .."Wimp| 00002650 5f 4f 70 65 6e 54 65 6d 70 6c 61 74 65 22 2c 2c |_OpenTemplate",,| 00002660 22 3c 45 78 63 68 61 6e 67 65 24 44 69 72 3e 2e |"<Exchange$Dir>.| 00002670 52 65 73 6f 75 72 63 65 73 2e 54 65 6d 70 6c 61 |Resources.Templa| 00002680 74 65 73 22 0d 0b 72 4a 20 20 20 c8 99 22 57 69 |tes"..rJ .."Wi| 00002690 6d 70 5f 4c 6f 61 64 54 65 6d 70 6c 61 74 65 22 |mp_LoadTemplate"| 000026a0 2c 2c 42 6c 6f 63 6b 25 2c 77 73 25 2c 77 73 25 |,,Block%,ws%,ws%| 000026b0 2b 6d 61 78 77 73 25 2c 2d 31 2c 22 69 6e 66 6f |+maxws%,-1,"info| 000026c0 22 2c 30 20 b8 20 2c 2c 63 75 72 77 73 25 0d 0b |",0 . ,,curws%..| 000026d0 7c 2c 20 20 20 c8 99 22 57 69 6d 70 5f 43 72 65 ||, .."Wimp_Cre| 000026e0 61 74 65 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 |ateWindow",,Bloc| 000026f0 6b 25 20 b8 20 49 6e 66 6f 25 0d 0b 86 4e 20 20 |k% . Info%...N | 00002700 20 c8 99 22 57 69 6d 70 5f 4c 6f 61 64 54 65 6d | .."Wimp_LoadTem| 00002710 70 6c 61 74 65 22 2c 2c 42 6c 6f 63 6b 25 2c 63 |plate",,Block%,c| 00002720 75 72 77 73 25 2c 77 73 25 2b 6d 61 78 77 73 25 |urws%,ws%+maxws%| 00002730 2c 2d 31 2c 22 46 6f 75 6e 64 22 2c 30 20 b8 20 |,-1,"Found",0 . | 00002740 2c 2c 63 75 72 77 73 25 0d 0b 90 2d 20 20 20 c8 |,,curws%...- .| 00002750 99 22 57 69 6d 70 5f 43 72 65 61 74 65 57 69 6e |."Wimp_CreateWin| 00002760 64 6f 77 22 2c 2c 42 6c 6f 63 6b 25 20 b8 20 46 |dow",,Block% . F| 00002770 6f 75 6e 64 25 0d 0b 9a 4d 20 20 20 c8 99 22 57 |ound%...M .."W| 00002780 69 6d 70 5f 4c 6f 61 64 54 65 6d 70 6c 61 74 65 |imp_LoadTemplate| 00002790 22 2c 2c 42 6c 6f 63 6b 25 2c 63 75 72 77 73 25 |",,Block%,curws%| 000027a0 2c 77 73 25 2b 6d 61 78 77 73 25 2c 2d 31 2c 22 |,ws%+maxws%,-1,"| 000027b0 4d 61 69 6e 22 2c 30 20 b8 20 2c 2c 63 75 72 77 |Main",0 . ,,curw| 000027c0 73 25 0d 0b a4 2c 20 20 20 c8 99 22 57 69 6d 70 |s%..., .."Wimp| 000027d0 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 2c 2c |_CreateWindow",,| 000027e0 42 6c 6f 63 6b 25 20 b8 20 4d 61 69 6e 25 0d 0b |Block% . Main%..| 000027f0 ae 1d 20 20 20 c8 99 22 57 69 6d 70 5f 43 6c 6f |.. .."Wimp_Clo| 00002800 73 65 54 65 6d 70 6c 61 74 65 22 0d 0b b8 05 e1 |seTemplate".....| 00002810 0d 0b c2 05 3a 0d 0b cc 2c f4 20 2a 2a 2a 2a 2a |....:...,. *****| 00002820 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002840 2a 0d 0b d6 2c f4 20 54 68 65 20 6e 61 6d 65 20 |*...,. The name | 00002850 73 6f 72 74 20 6f 66 20 73 61 79 73 20 69 74 20 |sort of says it | 00002860 61 6c 6c 20 72 65 61 6c 6c 79 21 21 21 0d 0b e0 |all really!!!...| 00002870 2c f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |,. *************| 00002880 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00002890 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0b ea 19 dd 20 f2 |*********..... .| 000028a0 5f 43 72 65 61 74 65 49 63 6f 6e 42 61 72 4d 65 |_CreateIconBarMe| 000028b0 6e 75 0d 0b f4 0b 20 20 20 ea 20 6d 25 0d 0b fe |nu.... . m%...| 000028c0 1d 20 20 20 de 20 49 63 6f 6e 42 61 72 4d 65 6e |. . IconBarMen| 000028d0 75 25 20 32 38 2b 33 2a 32 34 0d 0c 08 1f 20 20 |u% 28+3*24.... | 000028e0 20 24 49 63 6f 6e 42 61 72 4d 65 6e 75 25 3d 22 | $IconBarMenu%="| 000028f0 45 78 63 68 61 6e 67 65 22 0d 0c 12 54 20 20 20 |Exchange"...T | 00002900 49 63 6f 6e 42 61 72 4d 65 6e 75 25 3f 31 32 3d |IconBarMenu%?12=| 00002910 37 20 3a 20 49 63 6f 6e 42 61 72 4d 65 6e 75 25 |7 : IconBarMenu%| 00002920 3f 31 33 3d 32 20 3a 20 49 63 6f 6e 42 61 72 4d |?13=2 : IconBarM| 00002930 65 6e 75 25 3f 31 34 3d 37 20 3a 20 49 63 6f 6e |enu%?14=7 : Icon| 00002940 42 61 72 4d 65 6e 75 25 3f 31 35 3d 30 0d 0c 1c |BarMenu%?15=0...| 00002950 1b 20 20 20 49 63 6f 6e 42 61 72 4d 65 6e 75 25 |. IconBarMenu%| 00002960 21 31 36 3d 38 2a 31 33 0d 0c 26 2d 20 20 20 49 |!16=8*13..&- I| 00002970 63 6f 6e 42 61 72 4d 65 6e 75 25 21 32 30 3d 34 |conBarMenu%!20=4| 00002980 30 20 3a 20 49 63 6f 6e 42 61 72 4d 65 6e 75 25 |0 : IconBarMenu%| 00002990 21 32 34 3d 30 0d 0c 30 19 20 20 20 6d 25 3d 49 |!24=0..0. m%=I| 000029a0 63 6f 6e 42 61 72 4d 65 6e 75 25 2b 32 38 0d 0c |conBarMenu%+28..| 000029b0 3a 05 3a 0d 0c 44 0e 20 20 20 6d 25 21 30 3d 26 |:.:..D. m%!0=&| 000029c0 30 0d 0c 4e 30 20 20 20 6d 25 21 34 3d 49 6e 66 |0..N0 m%!4=Inf| 000029d0 6f 25 20 20 20 20 3a f4 20 6e 61 6d 65 20 66 72 |o% :. name fr| 000029e0 6f 6d 20 74 65 6d 70 6c 61 74 65 20 6f 70 65 6e |om template open| 000029f0 2e 0d 0c 58 1c 20 20 20 6d 25 21 38 3d 28 37 3c |...X. m%!8=(7<| 00002a00 3c 32 34 29 20 84 20 25 31 30 30 30 31 0d 0c 62 |<24) . %10001..b| 00002a10 16 20 20 20 24 28 6d 25 2b 31 32 29 3d 22 49 6e |. $(m%+12)="In| 00002a20 66 6f 22 0d 0c 6c 0f 20 20 20 6d 25 3d 6d 25 2b |fo"..l. m%=m%+| 00002a30 32 34 0d 0c 76 08 20 20 20 3a 0d 0c 80 0f 20 20 |24..v. :.... | 00002a40 20 6d 25 21 30 3d 26 38 30 0d 0c 8a 0d 20 20 20 | m%!0=&80.... | 00002a50 6d 25 21 34 3d 30 0d 0c 94 1b 20 20 20 6d 25 21 |m%!4=0.... m%!| 00002a60 38 3d 28 37 3c 3c 32 34 29 84 20 25 31 30 30 30 |8=(7<<24). %1000| 00002a70 31 0d 0c 9e 16 20 20 20 24 28 6d 25 2b 31 32 29 |1.... $(m%+12)| 00002a80 3d 22 51 75 69 74 22 0d 0c a8 2d 20 20 20 49 63 |="Quit"...- Ic| 00002a90 6f 6e 42 61 72 49 63 6f 6e 48 61 6e 64 6c 65 25 |onBarIconHandle%| 00002aa0 3d a4 5f 43 72 65 61 74 65 49 63 6f 6e 42 61 72 |=._CreateIconBar| 00002ab0 49 63 6f 6e 0d 0c b2 05 e1 0d 0c bc 05 3a 0d 0c |Icon.........:..| 00002ac0 c6 24 dd 20 f2 5f 49 6e 69 74 69 61 6c 69 73 65 |.$. ._Initialise| 00002ad0 5f 50 72 6f 67 72 61 6d 5f 56 61 72 69 61 62 6c |_Program_Variabl| 00002ae0 65 73 0d 0c d0 4f 20 20 20 f4 20 47 69 76 65 20 |es...O . Give | 00002af0 6e 61 6d 65 73 20 74 6f 20 73 6f 6d 65 20 6f 66 |names to some of| 00002b00 20 74 68 65 20 69 63 6f 6e 73 20 65 74 63 2e 20 | the icons etc. | 00002b10 74 6f 20 6d 61 6b 65 20 74 68 65 20 70 72 6f 67 |to make the prog| 00002b20 72 61 6d 20 6d 6f 72 65 20 72 65 61 64 61 62 6c |ram more readabl| 00002b30 65 0d 0c da 25 20 20 20 42 61 63 6b 47 72 6f 75 |e...% BackGrou| 00002b40 6e 64 25 3d 20 2d 31 20 3a 20 49 63 6f 6e 42 61 |nd%= -1 : IconBa| 00002b50 72 25 3d 20 2d 32 0d 0c e4 19 20 20 20 44 61 74 |r%= -2.... Dat| 00002b60 61 25 3d 31 20 3a 20 50 72 69 6e 74 25 3d 32 0d |a%=1 : Print%=2.| 00002b70 0c ee 39 20 20 20 4d 61 78 54 6f 44 69 73 70 6c |..9 MaxToDispl| 00002b80 61 79 25 3d a4 5f 52 65 61 64 53 79 73 74 65 6d |ay%=._ReadSystem| 00002b90 56 61 72 69 61 62 6c 65 28 22 4d 61 78 54 6f 44 |Variable("MaxToD| 00002ba0 69 73 70 6c 61 79 22 29 0d 0c f8 15 20 20 20 f2 |isplay").... .| 00002bb0 5f 53 65 74 55 70 50 61 6c 65 74 74 65 0d 0d 02 |_SetUpPalette...| 00002bc0 2c 20 20 20 e7 20 4d 61 78 54 6f 44 69 73 70 6c |, . MaxToDispl| 00002bd0 61 79 25 3e 39 39 39 20 4d 61 78 54 6f 44 69 73 |ay%>999 MaxToDis| 00002be0 70 6c 61 79 25 3d 39 39 39 0d 0d 0c 2d 20 20 20 |play%=999...- | 00002bf0 e7 20 4d 61 78 54 6f 44 69 73 70 6c 61 79 25 3c |. MaxToDisplay%<| 00002c00 31 30 20 20 20 20 4d 61 78 54 6f 44 69 73 70 6c |10 MaxToDispl| 00002c10 61 79 25 3d 31 30 0d 0d 16 23 20 20 20 de 20 46 |ay%=10...# . F| 00002c20 6f 75 6e 64 41 72 72 61 79 25 28 4d 61 78 54 6f |oundArray%(MaxTo| 00002c30 44 69 73 70 6c 61 79 25 29 0d 0d 20 19 20 20 20 |Display%).. . | 00002c40 52 65 71 75 69 72 65 64 4c 65 6e 67 74 68 25 3d |RequiredLength%=| 00002c50 34 34 0d 0d 2a 12 20 20 20 48 65 69 67 68 74 25 |44..*. Height%| 00002c60 3d 34 30 30 0d 0d 34 05 e1 0d 0d 3e 05 3a 0d 0d |=400..4....>.:..| 00002c70 48 0c dd 20 f2 5f 4c 6f 61 64 0d 0d 52 17 20 20 |H.. ._Load..R. | 00002c80 20 c8 99 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e | .."Hourglass_On| 00002c90 22 0d 0d 5c 2f 20 20 20 58 25 3d 8e 22 3c 45 78 |"..\/ X%=."<Ex| 00002ca0 63 68 61 6e 67 65 24 44 69 72 3e 2e 52 65 73 6f |change$Dir>.Reso| 00002cb0 75 72 63 65 73 2e 54 65 6c 65 70 68 6f 6e 65 22 |urces.Telephone"| 00002cc0 0d 0d 66 19 20 20 20 de 20 4c 69 6e 65 24 28 37 |..f. . Line$(7| 00002cd0 32 30 30 29 3a 4e 25 3d 30 0d 0d 70 54 20 20 20 |200):N%=0..pT | 00002ce0 f4 20 26 34 30 36 43 34 3d 22 48 6f 75 72 67 6c |. &406C4="Hourgl| 00002cf0 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 22 20 |ass_Percentage" | 00002d00 2d 20 54 68 69 73 20 52 65 70 65 61 74 2f 55 6e |- This Repeat/Un| 00002d10 74 69 6c 20 6c 6f 6f 70 20 6f 70 74 69 6d 69 73 |til loop optimis| 00002d20 65 64 20 66 6f 72 20 73 70 65 65 64 21 0d 0d 7a |ed for speed!..z| 00002d30 36 20 20 20 f5 3a 4c 69 6e 65 24 28 4e 25 29 3d |6 .:Line$(N%)=| 00002d40 be 23 58 25 3a 4e 25 2b 3d 31 3a c8 99 20 26 34 |.#X%:N%+=1:.. &4| 00002d50 30 36 43 34 2c 4e 25 20 81 20 37 32 3a fd 20 c5 |06C4,N% . 72:. .| 00002d60 23 58 25 0d 0d 84 0b 20 20 20 d9 23 58 25 0d 0d |#X%.... .#X%..| 00002d70 8e 18 20 20 20 c8 99 22 48 6f 75 72 67 6c 61 73 |.. .."Hourglas| 00002d80 73 5f 4f 66 66 22 0d 0d 98 16 20 20 20 4c 61 73 |s_Off".... Las| 00002d90 74 45 6e 74 72 79 25 3d 4e 25 2d 32 0d 0d a2 41 |tEntry%=N%-2...A| 00002da0 20 20 20 54 65 6d 70 24 3d 4c 69 6e 65 24 28 4c | Temp$=Line$(L| 00002db0 61 73 74 45 6e 74 72 79 25 2b 31 29 2b 22 20 20 |astEntry%+1)+" | 00002dc0 28 22 2b c3 28 4c 61 73 74 45 6e 74 72 79 25 29 |("+.(LastEntry%)| 00002dd0 2b 22 20 45 6e 74 72 69 65 73 29 2e 22 0d 0d ac |+" Entries)."...| 00002de0 2a 20 20 20 55 70 64 61 74 65 24 3d c4 28 34 38 |* Update$=.(48| 00002df0 2d a9 28 54 65 6d 70 24 29 29 2f 32 2c 22 20 22 |-.(Temp$))/2," "| 00002e00 29 2b 54 65 6d 70 24 0d 0d b6 05 e1 0d 0d c0 05 |)+Temp$.........| 00002e10 3a 0d 0d ca 0e dd 20 f2 5f 53 65 61 72 63 68 0d |:..... ._Search.| 00002e20 0d d4 2a 20 20 20 53 65 61 72 63 68 24 3d a4 5f |..* Search$=._| 00002e30 52 65 61 64 49 63 6f 6e 54 65 78 74 28 4d 61 69 |ReadIconText(Mai| 00002e40 6e 25 2c 44 61 74 61 25 29 0d 0d de 43 20 20 20 |n%,Data%)...C | 00002e50 e7 20 53 65 61 72 63 68 24 3d 22 22 20 8c 20 53 |. Search$="" . S| 00002e60 65 61 72 63 68 24 3d 22 30 22 20 8b 20 53 65 61 |earch$="0" . Sea| 00002e70 72 63 68 24 3d a4 5f 46 6f 72 63 65 54 6f 4c 6f |rch$=._ForceToLo| 00002e80 77 65 72 28 53 65 61 72 63 68 24 29 0d 0d e8 0f |wer(Search$)....| 00002e90 20 20 20 ea 20 43 6f 75 6e 74 25 0d 0d f2 16 20 | . Count%.... | 00002ea0 20 20 4e 75 6d 62 65 72 46 6f 75 6e 64 25 3d 2d | NumberFound%=-| 00002eb0 31 0d 0d fc 17 20 20 20 c8 99 22 48 6f 75 72 67 |1.... .."Hourg| 00002ec0 6c 61 73 73 5f 4f 6e 22 0d 0e 06 08 20 20 20 f5 |lass_On".... .| 00002ed0 0d 0e 10 25 20 20 20 20 20 20 e7 20 a7 4c 69 6e |...% . .Lin| 00002ee0 65 24 28 43 6f 75 6e 74 25 29 2c 53 65 61 72 63 |e$(Count%),Searc| 00002ef0 68 24 29 20 8c 0d 0e 1a 1c 20 20 20 20 20 20 20 |h$) ..... | 00002f00 20 20 4e 75 6d 62 65 72 46 6f 75 6e 64 25 2b 3d | NumberFound%+=| 00002f10 31 0d 0e 24 2d 20 20 20 20 20 20 20 20 20 46 6f |1..$- Fo| 00002f20 75 6e 64 41 72 72 61 79 25 28 4e 75 6d 62 65 72 |undArray%(Number| 00002f30 46 6f 75 6e 64 25 29 3d 43 6f 75 6e 74 25 0d 0e |Found%)=Count%..| 00002f40 2e 0b 20 20 20 20 20 20 cd 0d 0e 38 13 20 20 20 |.. ...8. | 00002f50 20 20 20 43 6f 75 6e 74 25 2b 3d 31 0d 0e 42 39 | Count%+=1..B9| 00002f60 20 20 20 fd 20 43 6f 75 6e 74 25 3d 4c 61 73 74 | . Count%=Last| 00002f70 45 6e 74 72 79 25 20 84 20 4e 75 6d 62 65 72 46 |Entry% . NumberF| 00002f80 6f 75 6e 64 25 3d 4d 61 78 54 6f 44 69 73 70 6c |ound%=MaxToDispl| 00002f90 61 79 25 2d 31 0d 0e 4c 18 20 20 20 c8 99 22 48 |ay%-1..L. .."H| 00002fa0 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 0e 56 |ourglass_Off"..V| 00002fb0 14 20 20 20 f2 5f 46 6f 75 6e 64 57 69 6e 64 6f |. ._FoundWindo| 00002fc0 77 0d 0e 60 05 e1 0d 0e 6a 05 3a 0d 0e 74 13 dd |w..`....j.:..t..| 00002fd0 20 f2 5f 46 6f 75 6e 64 57 69 6e 64 6f 77 0d 0e | ._FoundWindow..| 00002fe0 7e 15 20 20 20 21 42 6c 6f 63 6b 25 3d 46 6f 75 |~. !Block%=Fou| 00002ff0 6e 64 25 0d 0e 88 27 20 20 20 c8 99 20 22 57 69 |nd%...' .. "Wi| 00003000 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 |mp_GetWindowStat| 00003010 65 22 2c 2c 42 6c 6f 63 6b 25 0d 0e 92 14 20 20 |e",,Block%.... | 00003020 20 f2 5f 55 70 64 61 74 65 46 6f 75 6e 64 0d 0e | ._UpdateFound..| 00003030 9c 23 20 20 20 c8 99 20 22 57 69 6d 70 5f 4f 70 |.# .. "Wimp_Op| 00003040 65 6e 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b |enWindow",,Block| 00003050 25 0d 0e a6 05 e1 0d 0e b0 05 3a 0d 0e ba 13 dd |%.........:.....| 00003060 20 f2 5f 55 70 64 61 74 65 46 6f 75 6e 64 0d 0e | ._UpdateFound..| 00003070 c4 2a 20 20 20 e7 20 48 65 69 67 68 74 25 3c 3e |.* . Height%<>| 00003080 28 31 2b 4e 75 6d 62 65 72 46 6f 75 6e 64 25 29 |(1+NumberFound%)| 00003090 2a 34 30 2b 32 30 20 8c 0d 0e ce 28 20 20 20 20 |*40+20 ....( | 000030a0 20 20 48 65 69 67 68 74 25 3d 28 34 2b 4e 75 6d | Height%=(4+Num| 000030b0 62 65 72 46 6f 75 6e 64 25 29 2a 34 30 2b 32 30 |berFound%)*40+20| 000030c0 0d 0e d8 23 20 20 20 20 20 20 f2 5f 53 65 74 50 |...# ._SetP| 000030d0 72 65 76 69 65 77 53 69 7a 65 28 48 65 69 67 68 |reviewSize(Heigh| 000030e0 74 25 29 0d 0e e2 19 20 20 20 20 20 20 42 6c 6f |t%).... Blo| 000030f0 63 6b 25 21 30 3d 46 6f 75 6e 64 25 0d 0e ec 29 |ck%!0=Found%...)| 00003100 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 47 | .. "Wimp_G| 00003110 65 74 57 69 6e 64 6f 77 49 6e 66 6f 22 2c 2c 42 |etWindowInfo",,B| 00003120 6c 6f 63 6b 25 0d 0e f6 27 20 20 20 20 20 20 c8 |lock%...' .| 00003130 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 6e |. "Wimp_CloseWin| 00003140 64 6f 77 22 2c 2c 42 6c 6f 63 6b 25 0d 0f 00 26 |dow",,Block%...&| 00003150 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 4f | .. "Wimp_O| 00003160 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 |penWindow",,Bloc| 00003170 6b 25 0d 0f 0a 08 20 20 20 cc 0d 0f 14 37 20 20 |k%.... ....7 | 00003180 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 46 6f 72 | .. "Wimp_For| 00003190 63 65 52 65 64 72 61 77 22 2c 46 6f 75 6e 64 25 |ceRedraw",Found%| 000031a0 2c 30 2c 2d 48 65 69 67 68 74 25 2c 38 30 30 2c |,0,-Height%,800,| 000031b0 30 0d 0f 1e 08 20 20 20 cd 0d 0f 28 05 e1 0d 0f |0.... ...(....| 000031c0 32 05 3a 0d 0f 3c 1a dd 20 f2 5f 53 65 74 50 72 |2.:..<.. ._SetPr| 000031d0 65 76 69 65 77 53 69 7a 65 28 59 25 29 0d 0f 46 |eviewSize(Y%)..F| 000031e0 14 20 20 20 42 6c 6f 63 6b 25 21 31 30 32 34 3d |. Block%!1024=| 000031f0 30 0d 0f 50 16 20 20 20 42 6c 6f 63 6b 25 21 31 |0..P. Block%!1| 00003200 30 32 38 3d 2d 59 25 0d 0f 5a 16 20 20 20 42 6c |028=-Y%..Z. Bl| 00003210 6f 63 6b 25 21 31 30 33 32 3d 39 33 36 0d 0f 64 |ock%!1032=936..d| 00003220 14 20 20 20 42 6c 6f 63 6b 25 21 31 30 33 36 3d |. Block%!1036=| 00003230 30 0d 0f 6e 2d 20 20 20 c8 99 20 22 57 69 6d 70 |0..n- .. "Wimp| 00003240 5f 53 65 74 45 78 74 65 6e 74 22 2c 46 6f 75 6e |_SetExtent",Foun| 00003250 64 25 2c 42 6c 6f 63 6b 25 2b 31 30 32 34 0d 0f |d%,Block%+1024..| 00003260 78 05 e1 0d 0f 82 05 3a 0d 0f 8c 14 dd 20 f2 5f |x......:..... ._| 00003270 52 65 64 72 61 77 57 69 6e 64 6f 77 0d 0f 96 2d |RedrawWindow...-| 00003280 20 20 20 c8 99 20 22 57 69 6d 70 5f 52 65 64 72 | .. "Wimp_Redr| 00003290 61 77 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b |awWindow",,Block| 000032a0 25 20 b8 20 4d 6f 72 65 25 0d 0f a0 0f 20 20 20 |% . More%.... | 000032b0 c8 95 20 4d 6f 72 65 25 0d 0f aa 53 20 20 20 20 |.. More%...S | 000032c0 20 20 e7 20 42 6c 6f 63 6b 25 21 30 3d 46 6f 75 | . Block%!0=Fou| 000032d0 6e 64 25 20 8c 20 f2 5f 52 65 64 72 61 77 46 6f |nd% . ._RedrawFo| 000032e0 75 6e 64 28 42 6c 6f 63 6b 25 21 34 2d 42 6c 6f |und(Block%!4-Blo| 000032f0 63 6b 25 21 32 30 2c 42 6c 6f 63 6b 25 21 31 36 |ck%!20,Block%!16| 00003300 2d 42 6c 6f 63 6b 25 21 32 34 29 0d 0f b4 28 20 |-Block%!24)...( | 00003310 20 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 42 6f | .. "Wimp_Bo| 00003320 72 64 65 72 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f |rderWindow",,Blo| 00003330 63 6b 25 0d 0f be 30 20 20 20 20 20 20 c8 99 20 |ck%...0 .. | 00003340 22 57 69 6d 70 5f 47 65 74 52 65 63 74 61 6e 67 |"Wimp_GetRectang| 00003350 6c 65 22 2c 2c 42 6c 6f 63 6b 25 20 b8 20 4d 6f |le",,Block% . Mo| 00003360 72 65 25 0d 0f c8 08 20 20 20 ce 0d 0f d2 05 e1 |re%.... ......| 00003370 0d 0f dc 05 3a 0d 0f e6 1a dd 20 f2 5f 52 65 64 |....:..... ._Red| 00003380 72 61 77 46 6f 75 6e 64 28 58 25 2c 59 25 29 0d |rawFound(X%,Y%).| 00003390 0f f0 0e 20 20 20 ea 20 4c 6f 6f 70 25 0d 0f fa |... . Loop%...| 000033a0 0e 20 20 20 ec 20 58 25 2c 59 25 0d 10 04 7c 20 |. . X%,Y%...| | 000033b0 20 20 59 25 2d 3d 35 38 20 3a 20 58 25 2b 3d 32 | Y%-=58 : X%+=2| 000033c0 35 20 3a 20 56 25 3d 28 42 6c 6f 63 6b 25 21 33 |5 : V%=(Block%!3| 000033d0 32 29 2d 34 30 20 3a 20 57 25 3d 28 42 6c 6f 63 |2)-40 : W%=(Bloc| 000033e0 6b 25 21 34 30 29 2b 34 30 20 3a 20 53 25 3d 42 |k%!40)+40 : S%=B| 000033f0 6c 6f 63 6b 25 21 32 34 20 3a 20 f4 20 56 25 3d |lock%!24 : . V%=| 00003400 47 72 61 66 43 6c 69 4d 69 6e 59 20 57 25 3d 47 |GrafCliMinY W%=G| 00003410 72 61 66 43 6c 69 70 4d 61 78 59 20 53 25 3d 53 |rafClipMaxY S%=S| 00003420 63 72 6f 6c 6c 5f 59 0d 10 0e 23 20 20 20 46 6f |croll_Y...# Fo| 00003430 72 6d 61 74 25 3d a9 28 c3 28 4e 75 6d 62 65 72 |rmat%=.(.(Number| 00003440 46 6f 75 6e 64 25 2b 31 29 29 0d 10 18 1b 20 20 |Found%+1)).... | 00003450 20 e7 20 4e 75 6d 62 65 72 46 6f 75 6e 64 25 3c | . NumberFound%<| 00003460 3e 2d 31 20 8c 0d 10 22 3f 20 20 20 20 20 20 46 |>-1 ..."? F| 00003470 69 72 73 74 43 68 61 72 25 3d 28 59 25 2d 57 25 |irstChar%=(Y%-W%| 00003480 29 2f 34 30 20 3a 20 e7 20 46 69 72 73 74 43 68 |)/40 : . FirstCh| 00003490 61 72 25 3c 30 20 8c 20 46 69 72 73 74 43 68 61 |ar%<0 . FirstCha| 000034a0 72 25 3d 30 0d 10 2c 2b 20 20 20 20 20 20 4c 61 |r%=0..,+ La| 000034b0 73 74 43 68 61 72 25 3d 46 69 72 73 74 43 68 61 |stChar%=FirstCha| 000034c0 72 25 2b 28 28 57 25 2d 56 25 29 2f 34 30 29 0d |r%+((W%-V%)/40).| 000034d0 10 36 3b 20 20 20 20 20 20 e7 20 4c 61 73 74 43 |.6; . LastC| 000034e0 68 61 72 25 3e 4e 75 6d 62 65 72 46 6f 75 6e 64 |har%>NumberFound| 000034f0 25 20 8c 20 4c 61 73 74 43 68 61 72 25 3d 4e 75 |% . LastChar%=Nu| 00003500 6d 62 65 72 46 6f 75 6e 64 25 0d 10 40 1b 20 20 |mberFound%..@. | 00003510 20 20 20 20 59 25 2d 3d 34 30 2a 46 69 72 73 74 | Y%-=40*First| 00003520 43 68 61 72 25 0d 10 4a 26 20 20 20 20 20 20 e7 |Char%..J& .| 00003530 20 46 69 72 73 74 43 68 61 72 25 3c 3d 4e 75 6d | FirstChar%<=Num| 00003540 62 65 72 46 6f 75 6e 64 25 20 8c 0d 10 54 2b 20 |berFound% ...T+ | 00003550 20 20 20 20 20 20 20 20 e3 20 4c 6f 6f 70 25 3d | . Loop%=| 00003560 46 69 72 73 74 43 68 61 72 25 20 b8 20 4c 61 73 |FirstChar% . Las| 00003570 74 43 68 61 72 25 0d 10 5e 17 20 20 20 20 20 20 |tChar%..^. | 00003580 20 20 20 20 20 20 ec 20 58 25 2c 59 25 0d 10 68 | . X%,Y%..h| 00003590 51 20 20 20 20 20 20 20 20 20 20 20 20 f1 20 a4 |Q . .| 000035a0 5f 46 6f 72 6d 61 74 28 b9 2c c2 22 20 20 22 2b |_Format(.,." "+| 000035b0 c3 28 4c 6f 6f 70 25 2b 31 29 2c 46 6f 72 6d 61 |.(Loop%+1),Forma| 000035c0 74 25 29 2b 4c 69 6e 65 24 28 46 6f 75 6e 64 41 |t%)+Line$(FoundA| 000035d0 72 72 61 79 25 28 4c 6f 6f 70 25 29 29 29 0d 10 |rray%(Loop%)))..| 000035e0 72 16 20 20 20 20 20 20 20 20 20 20 20 20 59 25 |r. Y%| 000035f0 2d 3d 34 30 0d 10 7c 0e 20 20 20 20 20 20 20 20 |-=40..|. | 00003600 20 ed 0d 10 86 0b 20 20 20 20 20 20 cd 0d 10 90 | ..... ....| 00003610 14 20 20 20 20 20 20 ec 20 58 25 2c 59 25 2d 34 |. . X%,Y%-4| 00003620 30 0d 10 9a 13 20 20 20 20 20 20 f1 20 55 70 64 |0.... . Upd| 00003630 61 74 65 24 0d 10 a4 08 20 20 20 cc 0d 10 ae 14 |ate$.... .....| 00003640 20 20 20 20 20 20 ec 20 58 25 2b 35 30 2c 59 25 | . X%+50,Y%| 00003650 0d 10 b8 33 20 20 20 20 20 20 f1 20 22 53 6f 72 |...3 . "Sor| 00003660 72 79 20 27 22 3b 53 65 61 72 63 68 24 3b 22 27 |ry '";Search$;"'| 00003670 20 69 73 20 6e 6f 74 20 6f 6e 20 72 65 63 6f 72 | is not on recor| 00003680 64 2e 22 0d 10 c2 13 20 20 20 20 20 20 f1 20 55 |d.".... . U| 00003690 70 64 61 74 65 24 0d 10 cc 08 20 20 20 cd 0d 10 |pdate$.... ...| 000036a0 d6 05 e1 0d 10 e0 05 3a 0d 10 ea 10 dd 20 f2 5f |.......:..... ._| 000036b0 50 72 69 6e 74 4f 75 74 0d 10 f4 20 20 20 20 e7 |PrintOut... .| 000036c0 20 a4 5f 50 72 69 6e 74 65 72 5f 4e 6f 74 4f 6e | ._Printer_NotOn| 000036d0 4c 69 6e 65 20 8c 20 e1 0d 10 fe 18 20 20 20 c8 |Line . ..... .| 000036e0 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 |. "Hourglass_On"| 000036f0 0d 11 08 3c 20 20 20 c8 99 20 22 4f 53 5f 42 79 |...< .. "OS_By| 00003700 74 65 22 2c 33 2c 31 30 20 20 20 20 20 20 20 20 |te",3,10 | 00003710 20 20 3a f4 20 53 43 52 45 45 4e 20 4f 46 46 2c | :. SCREEN OFF,| 00003720 20 50 52 49 4e 54 45 52 20 4f 4e 2e 0d 11 12 08 | PRINTER ON.....| 00003730 20 20 20 3a 0d 11 1c 1a 20 20 20 e7 20 4e 75 6d | :.... . Num| 00003740 62 65 72 46 6f 75 6e 64 25 3c 3e 30 20 8c 0d 11 |berFound%<>0 ...| 00003750 26 2f 20 20 20 20 20 20 f1 20 22 53 65 61 72 63 |&/ . "Searc| 00003760 68 69 6e 67 20 46 6f 72 20 27 22 3b 53 65 61 72 |hing For '";Sear| 00003770 63 68 24 3b 22 27 2e 2e 2e 2e 2e 2e 22 0d 11 30 |ch$;"'......"..0| 00003780 22 20 20 20 20 20 20 e3 20 4c 6f 6f 70 25 3d 31 |" . Loop%=1| 00003790 20 b8 20 4e 75 6d 62 65 72 46 6f 75 6e 64 25 0d | . NumberFound%.| 000037a0 11 3a 4e 20 20 20 20 20 20 20 20 20 f1 20 a4 5f |.:N . ._| 000037b0 46 6f 72 6d 61 74 28 a3 2c c2 22 20 20 22 2b c3 |Format(.,." "+.| 000037c0 28 4c 6f 6f 70 25 29 2c 46 6f 72 6d 61 74 25 29 |(Loop%),Format%)| 000037d0 2b 4c 69 6e 65 24 28 46 6f 75 6e 64 41 72 72 61 |+Line$(FoundArra| 000037e0 79 25 28 4c 6f 6f 70 25 2d 31 29 29 29 0d 11 44 |y%(Loop%-1)))..D| 000037f0 0b 20 20 20 20 20 20 ed 0d 11 4e 0b 20 20 20 20 |. ...N. | 00003800 20 20 f1 0d 11 58 13 20 20 20 20 20 20 f1 20 55 | ...X. . U| 00003810 70 64 61 74 65 24 0d 11 62 0b 20 20 20 20 20 20 |pdate$..b. | 00003820 f1 0d 11 6c 08 20 20 20 cc 0d 11 76 0d 20 20 20 |...l. ...v. | 00003830 20 20 20 ef 20 37 0d 11 80 08 20 20 20 cd 0d 11 | . 7.... ...| 00003840 8a 08 20 20 20 3a 0d 11 94 3c 20 20 20 c8 99 20 |.. :...< .. | 00003850 22 4f 53 5f 42 79 74 65 22 2c 33 2c 30 30 20 20 |"OS_Byte",3,00 | 00003860 20 20 20 20 20 20 20 20 3a f4 20 53 43 52 45 45 | :. SCREE| 00003870 4e 20 4f 4e 2c 20 50 52 49 4e 54 45 52 20 4f 46 |N ON, PRINTER OF| 00003880 46 2e 0d 11 9e 19 20 20 20 c8 99 20 22 48 6f 75 |F..... .. "Hou| 00003890 72 67 6c 61 73 73 5f 4f 66 66 22 0d 11 a8 05 e1 |rglass_Off".....| 000038a0 0d 11 b2 05 3a 0d 11 bc 19 dd 20 a4 5f 50 72 69 |....:..... ._Pri| 000038b0 6e 74 65 72 5f 4e 6f 74 4f 6e 4c 69 6e 65 0d 11 |nter_NotOnLine..| 000038c0 c6 18 20 20 20 c8 99 20 22 48 6f 75 72 67 6c 61 |.. .. "Hourgla| 000038d0 73 73 5f 4f 6e 22 0d 11 d0 08 20 20 20 f5 0d 11 |ss_On".... ...| 000038e0 da 23 20 20 20 20 20 20 50 72 69 6e 74 65 72 4f |.# PrinterO| 000038f0 6e 4c 69 6e 65 3d b9 20 3a 20 57 68 61 74 25 3d |nLine=. : What%=| 00003900 30 0d 11 e4 10 20 20 20 20 20 20 4e 6f 77 25 3d |0.... Now%=| 00003910 91 0d 11 ee 17 20 20 20 20 20 20 42 65 66 6f 72 |..... Befor| 00003920 65 25 3d 96 28 2d 34 29 0d 11 f8 2f 20 20 20 20 |e%=.(-4).../ | 00003930 20 20 ef 20 32 2c 31 2c 30 2c 31 2c 30 2c 31 2c | . 2,1,0,1,0,1,| 00003940 30 2c 31 2c 30 2c 31 2c 30 2c 31 2c 30 2c 31 2c |0,1,0,1,0,1,0,1,| 00003950 30 2c 31 2c 30 2c 33 0d 12 02 21 20 20 20 20 20 |0,1,0,3...! | 00003960 20 4e 6f 77 25 3d 91 20 3a 20 f5 20 fd 20 91 3e | Now%=. : . . .>| 00003970 4e 6f 77 25 2b 31 30 30 0d 12 0c 16 20 20 20 20 |Now%+100.... | 00003980 20 20 41 66 74 65 72 25 3d 96 28 2d 34 29 0d 12 | After%=.(-4)..| 00003990 16 1d 20 20 20 20 20 20 e7 20 42 65 66 6f 72 65 |.. . Before| 000039a0 25 3c 3e 41 66 74 65 72 25 20 8c 0d 12 20 1f 20 |%<>After% ... . | 000039b0 20 20 20 20 20 20 20 20 c8 99 20 22 48 6f 75 72 | .. "Hour| 000039c0 67 6c 61 73 73 5f 4f 66 66 22 0d 12 2a 1c 20 20 |glass_Off"..*. | 000039d0 20 20 20 20 20 20 20 50 72 69 6e 74 65 72 4f 6e | PrinterOn| 000039e0 4c 69 6e 65 3d a3 0d 12 34 87 20 20 20 20 20 20 |Line=...4. | 000039f0 20 20 20 24 42 6c 6f 63 6b 25 3d 22 54 68 65 20 | $Block%="The | 00003a00 50 72 69 6e 74 65 72 20 69 73 20 6e 6f 74 20 72 |Printer is not r| 00003a10 65 73 70 6f 6e 64 69 6e 67 2c 20 70 6c 65 61 73 |esponding, pleas| 00003a20 65 20 63 68 65 63 6b 20 74 68 61 74 20 69 74 20 |e check that it | 00003a30 68 61 73 20 70 61 70 65 72 2c 20 69 74 20 69 73 |has paper, it is| 00003a40 20 73 77 69 74 63 68 65 64 20 6f 6e 20 61 6e 64 | switched on and| 00003a50 20 69 73 20 6f 6e 2d 6c 69 6e 65 2e 20 54 72 79 | is on-line. Try| 00003a60 20 61 67 61 69 6e 3f 22 2b bd 28 30 29 0d 12 3e | again?"+.(0)..>| 00003a70 45 20 20 20 20 20 20 20 20 20 c8 99 20 22 57 69 |E .. "Wi| 00003a80 6d 70 5f 52 65 70 6f 72 74 45 72 72 6f 72 22 2c |mp_ReportError",| 00003a90 42 6c 6f 63 6b 25 2c 25 31 30 30 31 31 2c 4d 79 |Block%,%10011,My| 00003aa0 54 61 73 6b 4e 61 6d 65 24 20 b8 20 2c 57 68 61 |TaskName$ . ,Wha| 00003ab0 74 25 0d 12 48 1e 20 20 20 20 20 20 20 20 20 c8 |t%..H. .| 00003ac0 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 |. "Hourglass_On"| 00003ad0 0d 12 52 0b 20 20 20 20 20 20 cd 0d 12 5c 34 20 |..R. ...\4 | 00003ae0 20 20 fd 20 50 72 69 6e 74 65 72 4f 6e 4c 69 6e | . PrinterOnLin| 00003af0 65 20 84 20 28 ac 20 50 72 69 6e 74 65 72 4f 6e |e . (. PrinterOn| 00003b00 4c 69 6e 65 20 80 20 57 68 61 74 25 3d 32 29 0d |Line . What%=2).| 00003b10 12 66 19 20 20 20 c8 99 20 22 48 6f 75 72 67 6c |.f. .. "Hourgl| 00003b20 61 73 73 5f 4f 66 66 22 0d 12 70 15 20 20 20 e7 |ass_Off"..p. .| 00003b30 20 57 68 61 74 25 3d 32 20 8c 20 3d b9 0d 12 7a | What%=2 . =...z| 00003b40 06 3d a3 0d 12 84 05 3a 0d 12 8e 26 dd 20 f2 5f |.=.....:...&. ._| 00003b50 53 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f 6e |SetCaretPosition| 00003b60 28 49 63 6f 6e 25 2c 49 6e 64 65 78 25 29 0d 12 |(Icon%,Index%)..| 00003b70 98 33 20 20 20 49 63 6f 6e 4c 65 6e 67 74 68 25 |.3 IconLength%| 00003b80 3d a9 28 a4 5f 52 65 61 64 49 63 6f 6e 54 65 78 |=.(._ReadIconTex| 00003b90 74 28 4d 61 69 6e 25 2c 49 63 6f 6e 25 2c a3 29 |t(Main%,Icon%,.)| 00003ba0 29 0d 12 a2 30 20 20 20 e7 20 49 6e 64 65 78 25 |)...0 . Index%| 00003bb0 3e 49 63 6f 6e 4c 65 6e 67 74 68 25 20 8c 20 49 |>IconLength% . I| 00003bc0 6e 64 65 78 25 3d 49 63 6f 6e 4c 65 6e 67 74 68 |ndex%=IconLength| 00003bd0 25 0d 12 ac 39 20 20 20 c8 99 20 22 57 69 6d 70 |%...9 .. "Wimp| 00003be0 5f 53 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f |_SetCaretPositio| 00003bf0 6e 22 2c 4d 61 69 6e 25 2c 49 63 6f 6e 25 2c 2c |n",Main%,Icon%,,| 00003c00 2c 2d 31 2c 49 6e 64 65 78 25 0d 12 b6 05 e1 0d |,-1,Index%......| 00003c10 12 c0 05 3a 0d 12 ca 51 f4 20 54 68 69 73 20 72 |...:...Q. This r| 00003c20 6f 75 74 69 6e 65 20 68 61 73 20 62 65 65 6e 20 |outine has been | 00003c30 6f 70 74 69 6d 69 73 65 64 20 66 6f 72 20 73 70 |optimised for sp| 00003c40 65 65 64 2c 20 68 65 6e 63 65 20 74 68 65 20 67 |eed, hence the g| 00003c50 65 6e 65 72 61 6c 20 75 6e 72 65 61 64 61 62 69 |eneral unreadabi| 00003c60 6c 69 74 79 21 0d 12 d4 18 dd 20 a4 5f 46 6f 72 |lity!..... ._For| 00003c70 6d 61 74 28 46 6c 61 67 25 2c 54 24 29 0d 12 de |mat(Flag%,T$)...| 00003c80 19 20 20 20 ea 20 4c 25 2c 41 4c 25 2c 53 4c 25 |. . L%,AL%,SL%| 00003c90 2c 43 24 2c 4e 24 0d 12 e8 25 20 20 20 41 4c 25 |,C$,N$...% AL%| 00003ca0 3d a9 28 54 24 29 20 3a 20 53 4c 25 3d 35 31 2d |=.(T$) : SL%=51-| 00003cb0 41 4c 25 2b 46 6f 72 6d 61 74 25 0d 12 f2 19 20 |AL%+Format%.... | 00003cc0 20 20 5a 65 72 6f 50 6f 73 25 3d a7 54 24 2c bd | ZeroPos%=.T$,.| 00003cd0 28 30 29 29 0d 12 fc 1c 20 20 20 e3 20 4c 25 3d |(0)).... . L%=| 00003ce0 5a 65 72 6f 50 6f 73 25 20 b8 20 a9 28 54 24 29 |ZeroPos% . .(T$)| 00003cf0 0d 13 06 27 20 20 20 20 20 20 43 24 3d c1 54 24 |...' C$=.T$| 00003d00 2c 4c 25 2c 31 29 20 3a 20 4e 24 3d c1 54 24 2c |,L%,1) : N$=.T$,| 00003d10 4c 25 2b 31 2c 31 29 0d 13 10 5e 20 20 20 20 20 |L%+1,1)...^ | 00003d20 20 e7 20 28 43 24 3d 22 20 22 84 43 24 3d 22 2e | . (C$=" ".C$=".| 00003d30 22 84 43 24 3d 22 2c 22 84 97 28 43 24 29 3d 30 |".C$=","..(C$)=0| 00003d40 84 97 28 43 24 29 3d 31 29 80 28 4e 24 3e 3d 22 |..(C$)=1).(N$>="| 00003d50 61 22 80 4e 24 3c 3d 22 7a 22 29 8c c1 54 24 2c |a".N$<="z")..T$,| 00003d60 4c 25 2b 31 2c 31 29 3d bd 28 97 28 4e 24 29 20 |L%+1,1)=.(.(N$) | 00003d70 82 20 33 32 29 0d 13 1a 08 20 20 20 ed 0d 13 24 |. 32).... ...$| 00003d80 24 20 20 20 54 65 78 74 50 61 72 74 24 3d c2 54 |$ TextPart$=.T| 00003d90 24 2c a9 28 54 24 29 2d 5a 65 72 6f 50 6f 73 25 |$,.(T$)-ZeroPos%| 00003da0 29 0d 13 2e 22 20 20 20 4f 6e 65 50 6f 73 69 74 |)..." OnePosit| 00003db0 69 6f 6e 25 3d a7 54 65 78 74 50 61 72 74 24 2c |ion%=.TextPart$,| 00003dc0 bd 31 29 0d 13 38 1e 20 20 20 e7 20 4f 6e 65 50 |.1)..8. . OneP| 00003dd0 6f 73 69 74 69 6f 6e 25 20 80 20 46 6c 61 67 25 |osition% . Flag%| 00003de0 8c 0d 13 42 2e 20 20 20 20 20 20 45 78 63 68 61 |...B. Excha| 00003df0 6e 67 65 24 3d c0 54 65 78 74 50 61 72 74 24 2c |nge$=.TextPart$,| 00003e00 4f 6e 65 50 6f 73 69 74 69 6f 6e 25 2d 31 29 0d |OnePosition%-1).| 00003e10 13 4c 5c 20 20 20 20 20 20 4c 6f 63 61 74 69 6f |.L\ Locatio| 00003e20 6e 24 3d bd 31 38 2b bd 30 2b bd 28 54 6f 77 6e |n$=.18+.0+.(Town| 00003e30 43 6f 6c 6f 75 72 25 29 2b c1 54 65 78 74 50 61 |Colour%)+.TextPa| 00003e40 72 74 24 2c 4f 6e 65 50 6f 73 69 74 69 6f 6e 25 |rt$,OnePosition%| 00003e50 2b 31 29 2b bd 31 38 2b bd 28 30 29 2b bd 28 42 |+1)+.18+.(0)+.(B| 00003e60 61 73 65 43 6f 6c 6f 75 72 25 29 0d 13 56 2d 20 |aseColour%)..V- | 00003e70 20 20 20 20 20 54 65 78 74 50 61 72 74 24 3d 45 | TextPart$=E| 00003e80 78 63 68 61 6e 67 65 24 2b 22 20 20 20 22 2b 4c |xchange$+" "+L| 00003e90 6f 63 61 74 69 6f 6e 24 0d 13 60 08 20 20 20 cc |ocation$..`. .| 00003ea0 0d 13 6a 2e 20 20 20 20 20 20 45 78 63 68 61 6e |..j. Exchan| 00003eb0 67 65 24 3d c0 54 65 78 74 50 61 72 74 24 2c 4f |ge$=.TextPart$,O| 00003ec0 6e 65 50 6f 73 69 74 69 6f 6e 25 2d 31 29 0d 13 |nePosition%-1)..| 00003ed0 74 2e 20 20 20 20 20 20 4c 6f 63 61 74 69 6f 6e |t. Location| 00003ee0 24 3d c1 54 65 78 74 50 61 72 74 24 2c 4f 6e 65 |$=.TextPart$,One| 00003ef0 50 6f 73 69 74 69 6f 6e 25 2b 31 29 0d 13 7e 2d |Position%+1)..~-| 00003f00 20 20 20 20 20 20 54 65 78 74 50 61 72 74 24 3d | TextPart$=| 00003f10 45 78 63 68 61 6e 67 65 24 2b 22 20 20 20 22 2b |Exchange$+" "+| 00003f20 4c 6f 63 61 74 69 6f 6e 24 0d 13 88 08 20 20 20 |Location$.... | 00003f30 cd 0d 13 92 57 3d c0 54 24 2c 46 6f 72 6d 61 74 |....W=.T$,Format| 00003f40 25 29 2b c4 34 2d 46 6f 72 6d 61 74 25 2c 22 20 |%)+.4-Format%," | 00003f50 22 29 2b 54 65 78 74 50 61 72 74 24 2b c4 53 4c |")+TextPart$+.SL| 00003f60 25 2c 22 20 22 29 2b c1 54 24 2c 46 6f 72 6d 61 |%," ")+.T$,Forma| 00003f70 74 25 2b 31 2c 5a 65 72 6f 50 6f 73 25 2d 46 6f |t%+1,ZeroPos%-Fo| 00003f80 72 6d 61 74 25 2d 31 29 0d 13 9c 05 3a 0d 13 a6 |rmat%-1)....:...| 00003f90 1b dd 20 a4 5f 46 6f 72 63 65 54 6f 4c 6f 77 65 |.. ._ForceToLowe| 00003fa0 72 28 54 65 78 74 24 29 0d 13 b0 14 20 20 20 ea |r(Text$).... .| 00003fb0 20 54 65 6d 70 24 2c 4c 6f 6f 70 25 0d 13 ba 1a | Temp$,Loop%....| 00003fc0 20 20 20 e3 20 4c 6f 6f 70 25 3d 31 20 b8 20 a9 | . Loop%=1 . .| 00003fd0 20 54 65 78 74 24 0d 13 c4 32 20 20 20 20 20 20 | Text$...2 | 00003fe0 54 65 6d 70 24 3d 54 65 6d 70 24 2b 28 bd 28 97 |Temp$=Temp$+(.(.| 00003ff0 28 c1 54 65 78 74 24 2c 4c 6f 6f 70 25 2c 31 29 |(.Text$,Loop%,1)| 00004000 29 20 84 20 33 32 29 29 0d 13 ce 08 20 20 20 ed |) . 32)).... .| 00004010 0d 13 d8 0a 3d 54 65 6d 70 24 0d 13 e2 05 3a 0d |....=Temp$....:.| 00004020 13 ec 29 dd 20 a4 5f 52 65 61 64 53 79 73 74 65 |..). ._ReadSyste| 00004030 6d 56 61 72 69 61 62 6c 65 28 56 61 72 69 61 62 |mVariable(Variab| 00004040 6c 65 4e 61 6d 65 24 29 0d 13 f6 31 20 20 20 e3 |leName$)...1 .| 00004050 20 4c 6f 6f 70 25 3d 31 30 30 20 b8 20 31 35 30 | Loop%=100 . 150| 00004060 20 88 20 34 20 3a 20 42 6c 6f 63 6b 25 21 4c 6f | . 4 : Block%!Lo| 00004070 6f 70 25 3d 30 20 3a 20 ed 0d 14 00 39 20 20 20 |op%=0 : ....9 | 00004080 c8 99 20 22 4f 53 5f 52 65 61 64 56 61 72 56 61 |.. "OS_ReadVarVa| 00004090 6c 22 2c 56 61 72 69 61 62 6c 65 4e 61 6d 65 24 |l",VariableName$| 000040a0 2c 42 6c 6f 63 6b 25 2b 31 30 30 2c 35 30 2c 30 |,Block%+100,50,0| 000040b0 2c 33 0d 14 0a 20 3d a0 28 a4 5f 52 65 61 64 53 |,3... =.(._ReadS| 000040c0 74 72 69 6e 67 28 42 6c 6f 63 6b 25 2b 31 30 30 |tring(Block%+100| 000040d0 29 29 0d ff |))..| 000040d4