Home » Archimedes archive » Archimedes World » AW-1994-07-Disc2.adf » Disk2Jul94 » !AWJuly94/Goodies/ADRBook/!ADRBook/!RunImage
!AWJuly94/Goodies/ADRBook/!ADRBook/!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-1994-07-Disc2.adf » Disk2Jul94 |
| Filename: | !AWJuly94/Goodies/ADRBook/!ADRBook/!RunImage |
| Read OK: | ✔ |
| File size: | DA0A bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10SYS "OS_GetEnv" TO env$
20IF INSTR(env$," -quit ") THEN
30fileload$=MID$(env$,INSTR(env$,CHR$(34),INSTR(env$,CHR$(34))+1)+1)
40ENDIF
50 PROCWimp_Start("ADRBook",1880,3862)
60 PROCUser_SetInitialData
70 PROCCreate_Windows
80 PROCCreate_Menus
90IF fileload$<>" " THEN
100PROCEvent_LoadFile(fileload$,"FBF")
110PROCWimp_IconPutText(Save_Window%,1,fileload$)
120ENDIF
130 PROCWimp_WaitForEvent
140 PROCWimp_CloseDown
150 END
160 :
170 DEF PROCUser_SetInitialData
180DOSAVE%=TRUE
190search%=FALSE
200SNUM%=-2
210SEARCH$=""
220SEARCH2$=""
230SEARCH3$=""
240ssel%=0
250DIM title% 256
260 psel%=1
270 pcur%=0
280 psurname%=TRUE
290 pothers%=TRUE
300 padd%=TRUE
310 ppostcode%=TRUE
320 parea%=TRUE
330 ptel%=TRUE
340 pnts%=TRUE
350DIM tone%(9,1)
360FORI%=0TO9:FORJ%=0TO1:READtone%(I%,J%):NEXT:NEXT
370DATA24063,26145,22288,25564,22288,26145,22288,26726,22979,25564
380DATA22979,26145,22979,26726,23482,25564,23482,26145,23482,26726
390 WIN$="NONE"
400 dim=300
410 DIM SURNAME$(dim)
420 DIM OTHERS$(dim)
430 DIM ADD1$(dim)
440 DIM ADD2$(dim)
450 DIM ADD3$(dim)
460 DIM POSTCODE$(dim)
470 DIM AREA$(dim)
480 DIM TEL$(dim)
490 DIM NTS$(dim)
500SURNAME$()=""
510OTHERS$()=""
520ADD1$()=""
530ADD2$()=""
540ADD3$()=""
550POSTCODE$()=""
560AREA$()=""
570TEL$()=""
580NTS$()=""
590 cur%=0
600 tot%=0
610SA%=FALSE
620UPDATE%=FALSE
630CD%=FALSE
640 ENDPROC
650 :
660 DEF PROCCreate_Windows
670 PROCWimp_SpritesLoad
680 Info_Window%=FNWimp_WindowLoad("Info")
690 Title_Window%=FNWimp_WindowLoad("Title")
700 Main_Window%=FNWimp_WindowLoad("Main")
710 Print_Window%=FNWimp_WindowLoad("Print")
720 Save_Window%=FNWimp_WindowLoad("Save")
730 Set_Window%=FNWimp_WindowLoad("Set")
740 Close_Window%=FNWimp_WindowLoad("Close")
750 Save2_Window%=FNWimp_WindowLoad("Save2")
760 Search2_Window%=FNWimp_WindowLoad("Search2")
770 Bar_Icon%=FNWimp_IconBar("!ADRBook")
780 PROCable
790 ENDPROC
800 :
810 DEF FNEvent_Save(window%)
820 CASE window% OF
830 WHEN Save_Window% :=TRUE
840 WHEN Save2_Window% :=TRUE
850 OTHERWISE :=FALSE
860 ENDCASE
870 :
880 DEF FNEvent_Sprites(window%)=sprites%
890 :
900 DEF PROCCreate_Menus
910 Save_Menu%=FNWimp_MenuCreate("Save\ADRBook>Save_Window%\Text>Save2_Window%")
920 Bar_Menu%=FNWimp_MenuCreate("ADRBook\Info>Info_Window%\Save>Save_Menu%\Quit")
930 Main_Menu%=FNWimp_MenuCreate("Main\Turn Back\Start\Back\Dial\Sort\Search Set\Delete\Add\Print\Forward\End\Save>Save_Menu%")
940 Title_Menu%=FNWimp_MenuCreate("Title\Close Book\Turn Over\Save>Save_Menu%")
950 Search2_Menu%=FNWimp_MenuCreate("Search\Search\Cancel")
960 PROCWimp_MenuDottedLine(Title_Menu%,1)
970 PROCWimp_MenuDottedLine(Title_Menu%,2)
980 PROCWimp_MenuDottedLine(Bar_Menu%,1)
990 PROCWimp_MenuDottedLine(Bar_Menu%,2)
1000 Print_Menu%=FNWimp_MenuCreate("Print\Turn Back\Print")
1010 PROCWimp_MenuDottedLine(Print_Menu%,1)
1020 Set_Menu%=FNWimp_MenuCreate("Search Set\Turn Back\Search")
1030 PROCWimp_MenuDottedLine(Main_Menu%,1)
1040 PROCWimp_MenuDottedLine(Main_Menu%,3)
1050 PROCWimp_MenuDottedLine(Main_Menu%,9)
1060 PROCWimp_MenuDottedLine(Main_Menu%,11)
1070 PROCmenuupdate
1080 ENDPROC
1090 :
1100 DEF FNEvent_Menu(window%)
1110 CASE window% OF
1120 WHEN Bar_Window% : =Bar_Menu%
1130 WHEN Main_Window%
1140IF search%=FALSE THEN
1150=Main_Menu%
1160ELSE
1170=Search2_Menu%
1180ENDIF
1190 WHEN Print_Window% : =Print_Menu%
1200 WHEN Title_Window% : =Title_Menu%
1210 WHEN Set_Window% : =Set_Menu%
1220 WHEN Search2_Window% : =Search2_Menu%
1230 OTHERWISE : =FALSE
1240 ENDCASE
1250 :
1260 DEF PROCEvent_WindowClose(window%,buttons%)
1270 CASE window% OF
1280 WHEN Title_Window%
1290WIN$="NONE"
1300 WHEN Main_Window%
1310PROCWimp_WindowBringToTop(Title_Window%)
1320WIN$="TITLE"
1330 WHEN Print_Window%
1340PROCWimp_WindowBringToTop(Main_Window%)
1350WIN$="MAIN"
1360 WHEN Set_Window%
1370PROCsearchcut
1380PROCWimp_WindowBringToTop(Main_Window%)
1390WIN$="MAIN"
1400
1410 ENDCASE
1420 ENDPROC
1430 :
1440 DEF PROCEvent_Draw(window%,x_origin%,y_origin%)
1450 CASE window% OF
1460 WHEN Info_Window% : PROCUser_DrawInfoWindow
1470 WHEN Title_Window% : PROCUser_DrawTitleWindow
1480 WHEN Main_Window% : PROCUser_DrawMainWindow
1490 WHEN Print_Window% : PROCUser_DrawPrintWindow
1500 WHEN Save_Window% : PROCUser_DrawSaveWindow
1510 ENDCASE
1520 ENDPROC
1530 :
1540 DEF PROCUser_DrawInfoWindow
1550 ENDPROC
1560 :
1570 DEF PROCUser_DrawTitleWindow
1580 ENDPROC
1590 :
1600 DEF PROCUser_DrawMainWindow
1610 SYS"Wimp_SetColour",11
1620 len=212/(tot%+1)
1630 pos=cur%*len
1640 RECTANGLE FILL (x_origin%+530)+pos,y_origin%-594,len,22
1650 ENDPROC
1660 :
1670 DEF PROCUser_DrawPrintWindow
1680 ENDPROC
1690 :
1700 DEF PROCUser_DrawSaveWindow
1710 ENDPROC
1720 :
1730 DEF PROCEvent_MouseClick(window%,icon%,button%,x%,y%)
1740 CASE window% OF
1750 WHEN Bar_Window% : PROCUser_MouseBar
1760 WHEN Info_Window% : PROCUser_MouseInfo( button%,icon%)
1770 WHEN Title_Window% : PROCUser_MouseTitle( button%,icon%)
1780 WHEN Main_Window% : PROCUser_MouseMain( button%,icon%)
1790 WHEN Print_Window% : PROCUser_MousePrint( button%,icon%)
1800 WHEN Set_Window% : PROCUser_MouseSearch( button%,icon%)
1810 WHEN Close_Window% : PROCUser_MouseClose( button%,icon%)
1820 WHEN Search2_Window% : PROCUser_MouseClose2( button%,icon%)
1830 ENDCASE
1840 ENDPROC
1850 :
1860 DEF PROCUser_MouseClose2( button%,icon%)
1870 IF icon%=3 THEN
1880 search%=FALSE
1890 PROCWimp_IconEnable(Main_Window%,21)
1900 PROCWimp_IconEnable(Main_Window%,22)
1910 PROCWimp_IconEnable(Main_Window%,23)
1920 PROCWimp_IconEnable(Main_Window%,24)
1930 PROCWimp_IconEnable(Main_Window%,25)
1940 PROCWimp_IconEnable(Main_Window%,26)
1950 PROCWimp_IconEnable(Main_Window%,27)
1960 PROCWimp_IconEnable(Main_Window%,28)
1970 PROCWimp_IconEnable(Main_Window%,29)
1980 PROCWimp_IconEnable(Main_Window%,30)
1990 PROCWimp_IconEnable(Main_Window%,33)
2000 PROCWimp_WindowClose(Search2_Window%)
2010 ENDIF
2020 IF icon%=2 AND ssel%=2 THEN
2030 IF SEARCH$=" " AND SEARCH2$=" " AND SEARCH3$=" " THEN
2040 PROCWimp_WindowErrorBox("!ADRBook","Please set search parameters")
2050 ELSE
2060 PROCsearch
2070 ENDIF
2080 ENDIF
2090
2100 IF icon%=2 AND ssel%<>2 THEN
2110 IF SEARCH$<>"" AND SEARCH2$<>"" AND SEARCH3$<>"" THEN
2120 PROCsearch
2130 ELSE
2140 PROCWimp_WindowErrorBox("!ADRBook","Please set search parameters")
2150 ENDIF
2160 ENDIF
2170 ENDPROC
2180 :
2190 DEF PROCUser_MouseClose( button%,icon%)
2200 IF icon%=1 THEN
2210SA%=TRUE
2220PROCunbox
2230PROCWimp_WindowClose(Close_Window%)
2240UPDATE%=FALSE
2250PROCWimp_WindowBringToTop(Save_Window%)
2260A$=FNWimp_IconText(Save_Window%,1)
2270PROCWimp_IconCaret(Save_Window%,1,LEN(A$))
2280ENDIF
2290 IF icon%=2 THEN
2300PROCunbox
2310UPDATE%=FALSE
2320PROCWimp_WindowClose(Close_Window%)
2330CD%=TRUE
2340ENDIF
2350 IF icon%=3 THEN
2360PROCunbox
2370PROCWimp_WindowClose(Close_Window%)
2380ENDIF
2390IF CD%=TRUE THEN PROCWimp_CloseDown
2400ENDPROC
2410 :
2420 DEF PROCUser_MouseBar
2430 IF WIN$="NONE" AND SA%=FALSE THEN PROCWimp_WindowBringToTop(Title_Window%):WIN$="TITLE"
2440 ENDPROC
2450 :
2460 DEF PROCUser_MouseSearch( button%,icon%)
2470 IF icon%=3 AND ssel%=2 THEN
2480 PROCsearchcut
2490 IF SEARCH$=" " AND SEARCH2$=" " AND SEARCH3$=" " THEN
2500 PROCWimp_WindowErrorBox("!ADRBook","Please set search parameters")
2510 ELSE
2520 PROCWimp_WindowClose(Set_Window%)
2530 PROCWimp_WindowBringToTop(Main_Window%)
2540 PROCWimp_WindowBringToTop(Search2_Window%)
2550 PROCWimp_IconDisable(Main_Window%,21)
2560 PROCWimp_IconDisable(Main_Window%,22)
2570 PROCWimp_IconDisable(Main_Window%,23)
2580 PROCWimp_IconDisable(Main_Window%,24)
2590 PROCWimp_IconDisable(Main_Window%,25)
2600 PROCWimp_IconDisable(Main_Window%,26)
2610 PROCWimp_IconDisable(Main_Window%,27)
2620 PROCWimp_IconDisable(Main_Window%,28)
2630 PROCWimp_IconDisable(Main_Window%,29)
2640 PROCWimp_IconDisable(Main_Window%,30)
2650 PROCWimp_IconDisable(Main_Window%,33)
2660 search%=TRUE
2670 PROCsearch
2680 ENDIF
2690 ENDIF
2700
2710 IF icon%=3 AND ssel%<>2 THEN
2720 PROCsearchcut
2730 IF SEARCH$<>"" AND SEARCH2$<>"" AND SEARCH3$<>"" THEN
2740 PROCWimp_WindowClose(Set_Window%)
2750 PROCWimp_WindowBringToTop(Main_Window%)
2760 PROCWimp_WindowBringToTop(Search2_Window%)
2770 PROCWimp_IconDisable(Main_Window%,21)
2780 PROCWimp_IconDisable(Main_Window%,22)
2790 PROCWimp_IconDisable(Main_Window%,23)
2800 PROCWimp_IconDisable(Main_Window%,24)
2810 PROCWimp_IconDisable(Main_Window%,25)
2820 PROCWimp_IconDisable(Main_Window%,26)
2830 PROCWimp_IconDisable(Main_Window%,27)
2840 PROCWimp_IconDisable(Main_Window%,28)
2850 PROCWimp_IconDisable(Main_Window%,29)
2860 PROCWimp_IconDisable(Main_Window%,30)
2870 PROCWimp_IconDisable(Main_Window%,33)
2880 search%=TRUE
2890 PROCsearch
2900 ELSE
2910 PROCWimp_WindowErrorBox("!ADRBook","Please set search parameters")
2920 ENDIF
2930 ENDIF
2940
2950 IF icon%=2 THEN
2960PROCsearchcut
2970PROCWimp_WindowClose(Set_Window%)
2980PROCWimp_WindowBringToTop(Main_Window%)
2990WIN$="MAIN"
3000PROCupdate
3010 ENDIF
3020 IF icon%=0 OR icon%=4 OR icon%=6 OR icon%=10 OR icon%=12 OR icon%=14 OR icon%=16 THEN
3030 IF icon%=0 AND ssel%<>0 THEN PROCunsearch:ssel%=0:PROCselsearch
3040 IF icon%=4 AND ssel%<>1 THEN PROCunsearch:ssel%=1:PROCselsearch
3050 IF icon%=6 AND ssel%<>2 THEN PROCunsearch:ssel%=2:PROCselsearch
3060 IF icon%=10 AND ssel%<>3 THEN PROCunsearch:ssel%=3:PROCselsearch
3070 IF icon%=12 AND ssel%<>4 THEN PROCunsearch:ssel%=4:PROCselsearch
3080 IF icon%=14 AND ssel%<>5 THEN PROCunsearch:ssel%=5:PROCselsearch
3090 IF icon%=16 AND ssel%<>6 THEN PROCunsearch:ssel%=6:PROCselsearch
3100 ENDIF
3110 ENDPROC
3120 :
3130 DEF PROCUser_MouseInfo( button%,icon%)
3140 ENDPROC
3150 :
3160 DEF PROCUser_MouseTitle( button%,icon%)
3170 IF icon%=6 THEN
3180PROCWimp_WindowClose(Title_Window%)
3190WIN$="NONE"
3200ENDIF
3210 IF icon%=7 THEN
3220PROCWimp_WindowClose(Title_Window%)
3230PROCWimp_WindowBringToTop(Main_Window%)
3240WIN$="MAIN"
3250PROCupdate
3260ENDIF
3270 ENDPROC
3280 :
3290 DEF PROCUser_MouseMain( button%,icon%)
3300 IF icon%=33 THEN
3310 IF tot%>1 THEN
3320 PROCread
3330 PROCsort
3340 PROCupdate
3350 ELSE
3360 PROCWimp_WindowAlert("!ADRBook","There is no point in sorting with this many records")
3370 ENDIF
3380UPDATE%=TRUE
3390 ENDIF
3400 IF icon%=25 THEN
3410PROCWimp_WindowClose(Main_Window%)
3420PROCWimp_WindowBringToTop(Set_Window%)
3430PROCselsearch
3440WIN$="SEARCH"
3450 ENDIF
3460 IF icon%=24 THEN PROCread:PROCtonedial(AREA$(cur%)+TEL$(cur%))
3470 IF icon%=26 AND cur%<tot% THEN
3480UPDATE%=TRUE
3490ANS%=FNWimp_WindowCancel("!ADRBook","Are you sure you want to delete this record ?")
3500IF ANS%=TRUE THEN
3510UPDATE%=TRUE
3520PROCread
3530PROCdelete
3540PROCupdate
3550ENDIF
3560ENDIF
3570 IF icon%=21 THEN
3580PROCWimp_WindowClose(Main_Window%)
3590PROCWimp_WindowBringToTop(Title_Window%)
3600WIN$="TITLE"
3610ENDIF
3620 IF icon%=28 AND tot%>0 THEN
3630UPDATE%=TRUE
3640PROCWimp_WindowClose(Main_Window%)
3650PROCopenprinter
3660PROCWimp_WindowBringToTop(Print_Window%)
3670PROCWimp_IconCaret(Print_Window%,12,LEN(FNWimp_IconText(Print_Window%,12)))
3680PROCupdatep
3690WIN$="PRINT"
3700ENDIF
3710 IF icon%=27 THEN
3720UPDATE%=TRUE
3730IF cur%=tot% THEN
3740IF FNWimp_IconText(Main_Window%,4)<>"" THEN
3750A%=icon%
3760PROCread
3770tot%+=1
3780cur%+=1
3790UPDATE%=TRUE
3800PROCupdate
3810ELSE
3820PROCWimp_WindowErrorBox("!ADRBook","Please enter a Surname then press ADD")
3830ENDIF
3840ELSE
3850PROCWimp_WindowErrorBox("!ADRBook","Please go to the blank record at the end of the file")
3860ENDIF
3870ENDIF
3880 IF icon%=23 AND cur%>0 THEN
3890UPDATE%=TRUE
3900PROCread
3910cur%-=1
3920PROCupdate
3930ENDIF
3940 IF icon%=29 AND cur%<tot% THEN
3950UPDATE%=TRUE
3960PROCread
3970cur%+=1
3980PROCupdate
3990ENDIF
4000 IF icon%=22 AND cur%>0 THEN
4010UPDATE%=TRUE
4020PROCread
4030cur%=0
4040PROCupdate
4050ENDIF
4060 IF icon%=30 AND cur%<tot% THEN
4070UPDATE%=TRUE
4080PROCread
4090cur%=tot%
4100PROCupdate
4110ENDIF
4120 ENDPROC
4130 :
4140 DEF PROCUser_MousePrint( button%,icon%)
4150
4160 IF icon%=21 THEN
4170psurname%=NOT psurname%
4180PROCsel(psurname%,icon%)
4190ENDIF
4200 IF icon%=22 THEN
4210pothers%=NOT pothers%
4220PROCsel(pothers%,icon%)
4230ENDIF
4240 IF icon%=23 THEN
4250padd%=NOT padd%
4260PROCsel(padd%,icon%)
4270ENDIF
4280 IF icon%=24 THEN
4290ppostcode%=NOT ppostcode%
4300PROCsel(ppostcode%,icon%)
4310ENDIF
4320 IF icon%=25 THEN
4330parea%=NOT parea%
4340PROCsel(parea%,icon%)
4350ENDIF
4360 IF icon%=26 THEN
4370ptel%=NOT ptel%
4380PROCsel(ptel%,icon%)
4390ENDIF
4400 IF icon%=27 THEN
4410pnts%=NOT pnts%
4420PROCsel(pnts%,icon%)
4430ENDIF
4440
4450
4460 IF icon%=17 AND DRIVER%=TRUE THEN
4470IF psurname%=TRUE OR pothers%=TRUE OR padd%=TRUE OR ppostcode%=TRUE OR parea%=TRUE OR ptel%=TRUE OR pnts%=TRUE THEN
4480PROCprint
4490ELSE
4500PROCWimp_WindowAlert("Error from !ADRBook","Please select at least one print data")
4510ENDIF
4520ENDIF
4530 IF icon%=10 THEN PROCWimp_WindowClose(Print_Window%):PROCWimp_WindowBringToTop(Main_Window%):WIN$="MAIN":PROCWimp_IconCaret(Main_Window%,4,LEN(FNWimp_IconText(Main_Window%,4)))
4540 IF icon%=30 AND pcur%>0 THEN pcur%-=1:PROCupdatep
4550 IF icon%=31 AND pcur%<tot%-1 THEN pcur%+=1:PROCupdatep
4560 IF icon%=7 OR icon%=13 OR icon%=16 OR icon%=33 THEN PROCWimp_SelectIcon(Print_Window%,icon%)
4570 IF icon%=7 AND psel%<>1 THEN
4580PROCWimp_IconCaret(Print_Window%,12,LEN(FNWimp_IconText(Print_Window%,12)))
4590PROCdalbe
4600psel%=1
4610PROCable
4620ENDIF
4630 IF icon%=13 AND psel%<>2 THEN
4640PROCWimp_IconCaret(Print_Window%,14,LEN(FNWimp_IconText(Print_Window%,14)))
4650PROCdalbe
4660psel%=2
4670PROCable
4680ENDIF
4690 IF icon%=16 AND psel%<>3 THEN
4700SYS "Wimp_SetCaretPosition",-1
4710PROCdalbe
4720psel%=3
4730PROCable
4740ENDIF
4750 IF icon%=33 AND psel%<>4 THEN
4760SYS "Wimp_SetCaretPosition",-1
4770PROCdalbe
4780psel%=4
4790PROCable
4800ENDIF
4810
4820 ENDPROC
4830 :
4840 DEF PROCEvent_KeyPress(window%,icon%,key%)
4850 CASE window% OF
4860 WHEN Main_Window% : PROCUser_KeyPressMain( icon%,key%)
4870 WHEN Print_Window% : PROCUser_KeyPressPrint( icon%,key%)
4880 ENDCASE
4890 ENDPROC
4900 :
4910 DEF PROCUser_KeyPressMain( icon%,key%)
4920IF key%=13 AND icon%<12 OR key%=398 AND icon%<12 THEN
4930a%=LEN(FNWimp_IconText(Main_Window%,icon%+1))
4940PROCWimp_IconCaret(Main_Window%,icon%+1,a%)
4950ENDIF
4960IF key%=13 AND icon%=12 OR key%=398 AND icon%=12 THEN
4970IF cur%=tot% THEN
4980PROCUser_MouseMain( 4,27)
4990ELSE
5000PROCUser_MouseMain( 4,29)
5010ENDIF
5020ENDIF
5030IF key%=399 AND icon%>4 THEN
5040a%=LEN(FNWimp_IconText(Main_Window%,icon%-1))
5050PROCWimp_IconCaret(Main_Window%,icon%-1,a%)
5060ENDIF
5070IF key%=399 AND icon%=4 THEN
5080a%=LEN(FNWimp_IconText(Main_Window%,12))
5090PROCWimp_IconCaret(Main_Window%,12,a%)
5100ENDIF
5110 ENDPROC
5120 :
5130 DEF PROCUser_KeyPressPrint( icon%,key%)
5140 ENDPROC
5150 :
5160 DEF PROCEvent_MenuChoice(menu%)
5170 CASE menu% OF
5180 WHEN Bar_Menu% : PROCUser_MenuChoiceBar
5190 WHEN Main_Menu% : PROCUser_MenuChoiceMain
5200 WHEN Title_Menu% : PROCUser_MenuChoiceTitle
5210 WHEN Print_Menu% : PROCUser_MenuChoicePrint
5220 WHEN Set_Menu% : PROCUser_MenuChoiceSet
5230 WHEN Search2_Menu% : PROCUser_MenuChoiceSearch2
5240 ENDCASE
5250 ENDPROC
5260 :
5270 DEF PROCUser_MenuChoiceBar
5280 CASE FNWimp_MenuChoice(0) OF
5290 WHEN 1 :
5300 WHEN 3 :IF UPDATE%=TRUE THEN
5310PROCWimp_IconPutText(Close_Window%,0,"This file has been modified")
5320PROCWimp_WindowBringToTop(Close_Window%)
5330PROCmousebox(Close_Window%)
5340ENDIF
5350IF UPDATE%=FALSE THEN finished%=TRUE
5360 ENDCASE
5370 ENDPROC
5380 :
5390 DEF PROCUser_MenuChoiceTitle
5400 CASE FNWimp_MenuChoice(0) OF
5410 WHEN 1 : PROCEvent_MouseClick(Title_Window%,6,4,0,0)
5420 WHEN 2 : PROCEvent_MouseClick(Title_Window%,7,4,0,0)
5430 ENDCASE
5440 ENDPROC
5450 :
5460 DEF PROCUser_MenuChoiceSearch2
5470 CASE FNWimp_MenuChoice(0) OF
5480 WHEN 1 : PROCEvent_MouseClick(Search2_Window%,2,4,0,0)
5490 WHEN 2 : PROCEvent_MouseClick(Search2_Window%,3,4,0,0)
5500 ENDCASE
5510 ENDPROC
5520 :
5530 DEF PROCUser_MenuChoicePrint
5540 CASE FNWimp_MenuChoice(0) OF
5550 WHEN 1 : PROCEvent_MouseClick(Print_Window%,10,4,0,0)
5560 WHEN 2 : PROCEvent_MouseClick(Print_Window%,17,4,0,0)
5570 ENDCASE
5580 ENDPROC :
5590 DEF PROCUser_MenuChoiceSet
5600 CASE FNWimp_MenuChoice(0) OF
5610 WHEN 1 : PROCEvent_MouseClick(Set_Window%,2,4,0,0)
5620 WHEN 2 : PROCEvent_MouseClick(Set_Window%,3,4,0,0)
5630 ENDCASE
5640 ENDPROC
5650 :
5660 DEF PROCUser_MenuChoiceMain
5670 CASE FNWimp_MenuChoice(0) OF
5680 WHEN 1 : PROCEvent_MouseClick(Main_Window%,21,4,0,0)
5690 WHEN 2 : PROCEvent_MouseClick(Main_Window%,22,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5700 WHEN 3 : PROCEvent_MouseClick(Main_Window%,23,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5710 WHEN 4 : PROCEvent_MouseClick(Main_Window%,24,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5720 WHEN 5 : PROCEvent_MouseClick(Main_Window%,33,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5730 WHEN 6 : PROCEvent_MouseClick(Main_Window%,25,4,0,0)
5740 WHEN 7 : PROCEvent_MouseClick(Main_Window%,26,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5750 WHEN 8 : PROCEvent_MouseClick(Main_Window%,27,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5760 WHEN 9 : PROCEvent_MouseClick(Main_Window%,28,4,0,0)
5770 WHEN 10 : PROCEvent_MouseClick(Main_Window%,29,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5780 WHEN 11 : PROCEvent_MouseClick(Main_Window%,30,4,0,0):PROCWimp_MenuAdjustOn(Main_Menu%)
5790 ENDCASE
5800 ENDPROC
5810 :
5820 DEF PROCEvent_LoadFile(file$,type$)
5830 IF type$="FBF" THEN
5840UPDATE%=FALSE
5850PROCWimp_IconPutText(Save_Window%,1,file$)
5860cur%=0
5870X%=OPENIN(file$)
5880INPUT #X%,tot%
5890FOR A=0 TO tot%
5900INPUT #X%,SURNAME$(A)
5910INPUT #X%,OTHERS$(A)
5920INPUT #X%,ADD1$(A)
5930INPUT #X%,ADD2$(A)
5940INPUT #X%,ADD3$(A)
5950INPUT #X%,POSTCODE$(A)
5960INPUT #X%,AREA$(A)
5970INPUT #X%,TEL$(A)
5980INPUT #X%,NTS$(A)
5990NEXTA
6000CLOSE #X%
6010IF WIN$<>"NONE" THEN
6020IF WIN$="MAIN" THEN PROCWimp_WindowClose(Main_Window%)
6030IF WIN$="PRINT" THEN PROCWimp_WindowClose(Print_Window%)
6040IF WIN$="SEARCH" THEN PROCWimp_WindowClose(Set_Window%)
6050ENDIF
6060IF WIN$<>"TITLE" THEN PROCWimp_WindowBringToTop(Title_Window%)
6070PROCmenuupdate
6080 ENDIF
6090 ENDPROC
6100 :
6110 DEF PROCEvent_SaveFile(file$,window%)
6120 CASE window% OF
6130 WHEN Save_Window% :
6140LOCAL ERROR
6150ON ERROR LOCAL PROCerror
6160IF DOSAVE%=TRUE THEN
6170 X%=OPENOUT(file$)
6180 PRINT #X%,tot%
6190 FOR A=0 TO tot%
6200 PRINT #X%,SURNAME$(A)
6210 PRINT #X%,OTHERS$(A)
6220 PRINT #X%,ADD1$(A)
6230 PRINT #X%,ADD2$(A)
6240 PRINT #X%,ADD3$(A)
6250 PRINT #X%,POSTCODE$(A)
6260 PRINT #X%,AREA$(A)
6270 PRINT #X%,TEL$(A)
6280 PRINT #X%,NTS$(A)
6290 NEXTA
6300 CLOSE #X%
6310 OSCLI("SETTYPE "+file$+" FBF")
6320 PROCWimp_MenuClose
6330 UPDATE%=FALSE
6340ENDIF
6350
6360 WHEN Save2_Window% :
6370LOCAL ERROR
6380ON ERROR LOCAL PROCerror
6390IF DOSAVE%=TRUE THEN
6400 PROCWimp_MenuClose
6410 IF WIN$="MAIN" THEN PROCread
6420 OSCLI("SPOOL "+file$)
6430 FOR A=0 TO tot%
6440 IF SURNAME$(A)<>"" THEN PRINT SURNAME$(A)+CHR$(10);
6450 IF OTHERS$(A)<>"" THEN PRINT OTHERS$(A)+CHR$(10);
6460 IF ADD1$(A)<>"" THEN PRINT ADD1$(A)+CHR$(10);
6470 IF ADD2$(A)<>"" THEN PRINT ADD2$(A)+CHR$(10);
6480 IF ADD3$(A)<>"" THEN PRINT ADD3$(A)+CHR$(10);
6490 IF POSTCODE$(A)<>"" THEN PRINT POSTCODE$(A)+CHR$(10);
6500 IF AREA$(A)<>"" THEN PRINT AREA$(A)+CHR$(10);
6510 IF TEL$(A)<>"" THEN PRINT TEL$(A)+CHR$(10);
6520 IF NTS$(A)<>"" THEN PRINT NTS$(A)+CHR$(10);
6530 PRINT CHR$(10);
6540 NEXT A
6550 OSCLI("SPOOL")
6560 OSCLI("SETTYPE "+file$+" FFF")
6570 VDU6
6580 IF file$="<Wimp$Scrap>" THEN
6590 PROCWimp_SendToEdit(file$)
6600 PROCWimp_IconPutText(Save2_Window%,1,ACE$)
6610 ENDIF
6620ENDIF
6630 ENDCASE
6640IF DOSAVE%=FALSE THEN DOSAVE%=TRUE
6650 ENDPROC
6660:
6670REM *******************************************************************
6680:
6690DEF PROCWimp_WindowAlert(title$,message$)
6700PROCWimp_WindowAlertBox(title$,message$,0)
6710ENDPROC
6720:
6730DEF PROCWimp_WindowAlertBox(title$,message$,button%)
6740LOCAL response%
6750$(wimp%+4)=message$
6760CASE button% OF
6770 WHEN 2 : response%=1
6780 WHEN 1 : response%=15
6790 WHEN 3 : response%=(1<<5)+16
6800 WHEN 4 : response%=(1<<6)+16
6810OTHERWISE : response%=16
6820ENDCASE
6830SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
6840ENDPROC
6850:
6860DEF FNWimp_WindowCancel(title$,message$)
6870$(wimp%+4)=message$
6880response%=23
6890SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
6900=response%-2
6910:
6920DEF PROCWimp_WindowErrorBox(title$,message$)
6930PROCWimp_WindowAlertBox(title$,message$,2)
6940ENDPROC
6950:
6960DEF FNWimp_WindowTitle(window%)
6970wimp%!0=window%
6980SYS "Wimp_GetWindInfo",,wimp%
6990IF ((wimp%!60)AND&100)=0 ERROR 1,"Title isn't indirected"
7000=$(wimp%!76)
7010:
7020DEF FNWimp_WindowLoad(window$)
7030=FNWimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
7040:
7050DEF FNWimp_WindowLoadFrom(window$,template$)
7060LOCAL c%,i%,n%,j%,sp$,sp2$
7070SYS "Wimp_OpenTemplate",,template$
7080SYS "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,-1,window$,0 TO ,,icons%
7090CASE sprites% OF
7100 WHEN 1 : wimp%!64=sprites%
7110 OTHERWISE : wimp%!64=FNEvent_Sprites(window%)
7120ENDCASE
7130SYS "Wimp_CreateWindow",,wimp% TO c%
7140SYS "Wimp_CloseTemplate"
7150SYS "Wimp_WhichIcon",c%,wimp%+40,1+2+(1<<8),2+(1<<8)
7160CASE wimp%!40 OF
7170 WHEN -1 :
7180 OTHERWISE : i%=40
7190 REPEAT
7200 wimp%!4=wimp%!i% : wimp%!0=c%
7210 SYS "Wimp_GetIconState",,wimp%
7220 sp$=FNWimp_GetStringAtAddress(wimp%!28)
7230 SYS "Wimp_DeleteIcon",,wimp%
7240 CASE sprites% OF
7250 WHEN 1 : wimp%!32=1
7260 OTHERWISE :
7270 SYS "OS_SpriteOp",&108,sprites% TO ,,,n%
7280 j%=0
7290 REPEAT : j%+=1
7300 SYS "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
7310 sp2$=FNWimp_GetStringAtAddress(pointer_block%)
7320 UNTIL j%=n% OR sp$=sp2$
7330 IF sp$=sp2$ THEN wimp%!32=sprites% ELSE wimp%!32=1
7340 ENDCASE
7350 wimp%!4=c%
7360 SYS "Wimp_CreateIcon",,wimp%+4 TO handle%
7370 i%+=4
7380 UNTIL (wimp%!i%)=-1
7390ENDCASE
7400=c%
7410:
7420DEF PROCWimp_WindowBringToTop(window%)
7430!wimp%=window%
7440SYS "Wimp_GetWindowState",,wimp%
7450wimp%!28=-1
7460SYS "Wimp_OpenWindow",,wimp%
7470ENDPROC
7480:
7490DEF PROCWimp_WindowClose(window%)
7500!wimp%=window%
7510SYS "Wimp_CloseWindow",,wimp%
7520ENDPROC
7530:
7540DEF PROCWimp_WindowForceDraw(window%)
7550CASE window% OF
7560 WHEN -1 : SYS "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
7570 OTHERWISE : SYS "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
7580ENDCASE
7590ENDPROC
7600:
7610DEF PROCWimp_WindowOpen(window%)
7620!wimp%=window%
7630SYS "Wimp_GetWindowState",,wimp%
7640SYS "Wimp_OpenWindow",,wimp%
7650ENDPROC
7660:
7670PROCWimp_WindowInterface
7680SYS"Wimp_BorderWindow",,wimp%
7690ENDPROC
7700:
7710REM *******************************************************************
7720:
7730DEF PROCWimp_IconUpdate(window%,icon%)
7740wimp%!0=window%
7750wimp%!4=icon%
7760wimp%!8=0
7770wimp%!12=0
7780SYS "Wimp_SetIconState",,wimp%
7790ENDPROC
7800:
7810DEF PROCWimp_SetIconSprite(window%,icon%,sprite$)
7820wimp%!0=window%
7830wimp%!4=icon%
7840SYS "Wimp_GetIconState",,wimp%
7850$wimp%!32="S"+sprite$
7860wimp%!0=window%
7870wimp%!8=0
7880wimp%!12=0
7890SYS "Wimp_SetIconState",,wimp%
7900ENDPROC
7910:
7920DEF FNWimp_IconBar(Sprite$)
7930LOCAL icon%
7940wimp%!0=-1
7950wimp%!4=0 : wimp%!8=0
7960wimp%!12=68 : wimp%!16=68
7970wimp%!20=&3002
7980$(wimp%+24)=Sprite$
7990SYS "Wimp_CreateIcon",,wimp% TO icon%
8000=icon%
8010:
8020DEF PROCWimp_IconCaret(window%,icon%,chars%)
8030SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
8040ENDPROC
8050:
8060DEF FNWimp_IconText(window%,icon%)
8070wimp%!0=window% : wimp%!4=icon%
8080SYS "Wimp_GetIconState",,wimp%
8090IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
8100=$(wimp%!28)
8110:
8120DEF FNWimp_IconValidation(window%,icon%)
8130wimp%!0=window% : wimp%!4=icon%
8140SYS "Wimp_GetIconState",,wimp%
8150IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
8160=$(wimp%!32)
8170:
8180DEF PROCWimp_IconDisable(window%,icon%)
8190wimp%!0=window% : wimp%!4=icon%
8200wimp%!8=1<<22 : wimp%!12=1<<22
8210SYS "Wimp_SetIconState",,wimp%
8220ENDPROC
8230:
8240DEF PROCWimp_IconEnable(window%,icon%)
8250wimp%!0=window% : wimp%!4=icon%
8260wimp%!8=0 : wimp%!12=1<<22
8270SYS "Wimp_SetIconState",,wimp%
8280ENDPROC
8290:
8300DEF FNWimp_IconPutSprite(window%,icon%,sprite$)
8310wimp%!0=window%:wimp%!4=icon%
8320SYS "Wimp_GetIconState",,wimp%
8330SYS "Wimp_DeleteIcon",,wimp%
8340wimp%!4=wimp%!8 : wimp%!8=wimp%!12 : wimp%!12=wimp%!16
8350wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$
8360SYS "Wimp_CreateIcon",,wimp% TO icon%
8370=icon%
8380:
8390DEF PROCWimp_IconPutText(window%,icon%,text$)
8400wimp%!0=window% : wimp%!4=icon%
8410SYS "Wimp_GetIconState",,wimp%
8420IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
8430$(wimp%!28)=text$
8440wimp%!0=window% : wimp%!4=icon%
8450wimp%!8=0 : wimp%!12=0
8460SYS "Wimp_SetIconState",,wimp%
8470ENDPROC
8480:
8490DEF PROCWimp_IconInterfaceStart
8500SYS"Wimp_BorderIcon",,wimp%
8510ENDPROC
8520:
8530DEF PROCWimp_IconInterfaceFinish
8540wimp%!8=0
8550SYS"Wimp_BorderIcon",,wimp%
8560ENDPROC
8570:
8580REM *******************************************************************
8590:
8600DEF PROCWimp_MenuAdjustOn(menu%)
8610SYS "Wimp_GetPointerInfo",,pointer_block%
8620IF ((pointer_block%!8)AND1)=1 THEN SYS "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4
8630ENDPROC
8640:
8650DEF FNWimp_MenuChoice(level%)
8660=(wimp%!(4*level%))+1
8670:
8680DEF FNWimp_MenuCreate(menu$)
8690IF menu$="Colours" THEN=FNWimp_MenuColours
8700LOCAL menu%,index%,width%,length%,k%,s%
8710DIM menu% 28+FNWimp_MenuNoOfEntries(menu$)*24
8720menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
8730menu%!16=140 : menu%!20=44 : menu%!24=0
8740index%=menu%+28
8750$menu%=LEFT$(menu$,INSTR(menu$,"\")-1)
8760width%=LEN(LEFT$(menu$,INSTR(menu$,"\")-1))
8770menu$+="\" : Menu_NoOfEntries%=0
8780WHILE menu$<>""
8790menu$=MID$(menu$,INSTR(menu$,"\")+1)
8800CASE menu$ OF
8810 WHEN ""
8820 OTHERWISE :
8830 !index%=0 : index%!4=-1 : index%!8=&7000021
8840 length%=INSTR(menu$,"\")-1
8850 k%=INSTR(LEFT$(menu$,length%),">")
8860 CASE k% OF
8870 WHEN 0
8880 OTHERWISE
8890 s%=EVAL(MID$(menu$,k%+1,length%-k%))
8900 index%!4=s%
8910 length%=k%-1
8920 ENDCASE
8930 $(index%+12)=LEFT$(menu$,length%)
8940 IF length%>width% THEN width%=length%
8950 index%+=24
8960ENDCASE
8970ENDWHILE
8980menu%!16=16*(width%+1)
8990index%!-24=index%!-24 OR &80 : =menu%
9000:
9010DEF FNWimp_MenuColours
9020=FNWimp_MenuCreateColours(" ")
9030:
9040DEF FNWimp_MenuCreateColours(title$)
9050LOCAL x$,men%,j%,i%
9060x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
9070men%=FNWimp_MenuCreate(x$)
9080FOR i%=0 TO 15
9090CASE TRUE OF
9100WHEN i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
9110OTHERWISE : j%=0
9120ENDCASE
9130men%?(39+i%*24)=i%*16+j%
9140PROCWimp_MenuCentre(men%,i%+1)
9150NEXT
9160=men%
9170:
9180DEF FNWimp_MenuNoOfEntries(menu$)
9190LOCAL n% ,j% : n%=0 : j%=0
9200REPEAT
9210j%=INSTR(menu$,"\",j%+1)
9220IF j%<>0 THEN n%+=1
9230UNTIL j%=0
9240=n%
9250:
9260DEF PROCWimp_MenuBackGroundColour(menu%,item%,colour%)
9270LOCAL fore%,i%
9280fore%=(menu%?(39+(item%-1)*24))MOD16
9290i%=((menu%?(39+(item%-1)*24))DIV16)MOD16
9300menu%?(39+(item%-1)*24)=fore%+16*colour%+i%
9310ENDPROC
9320:
9330DEF PROCWimp_MenuCentre(menu%,item%)
9340menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<3)
9350ENDPROC
9360:
9370DEF PROCWimp_MenuClose
9380SYS "Wimp_CreateMenu",-1
9390ENDPROC
9400:
9410DEF PROCWimp_MenuDisable(menu%,item%)
9420menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<22)
9430ENDPROC
9440:
9450DEF PROCWimp_MenuDottedLine(menu%,item%)
9460menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR2
9470ENDPROC
9480:
9490DEF PROCWimp_MenuEnable(menu%,item%)
9500PROCWimp_MenuDisable(menu%,item%)
9510menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)EOR(1<<22)
9520ENDPROC
9530:
9540DEF PROCWimp_MenuForegroundColour(menu%,item%,colour%)
9550menu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))DIV16)
9560ENDPROC
9570:
9580DEF PROCWimp_MenuGlue(menu1%,item%,menu2%)
9590menu1%!(8+item%*24)=menu2%
9600ENDPROC
9610:
9620DEF PROCWimp_MenuItem(menu%,item%,item$)
9630$(menu%+(40+(item%-1)*24))=LEFT$(item$,12)+CHR$0
9640ENDPROC
9650:
9660DEF PROCWimp_MenuMessage(menu%,item%)
9670menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR(1<<3)
9680ENDPROC
9690:
9700DEF PROCWimp_MenuPopUp(Menu%,x%,y%)
9710IF SA%=FALSE THEN
9720menu%=Menu%
9730SYS "Wimp_CreateMenu",,menu%,x%-64,y%+20
9740ENDIF
9750ENDPROC
9760:
9770DEF PROCWimp_MenuPopUpBar(x%,y%)
9780LOCAL n% : n%=0
9790WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
9800n%+=1
9810ENDWHILE
9820SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
9830menu%=Bar_Menu%
9840ENDPROC
9850:
9860DEF PROCWimp_MenuTick(menu%,item%)
9870menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR1
9880ENDPROC
9890:
9900DEF PROCWimp_MenuTitle(menu%,title$)
9910$menu%=LEFT$(title$,12)+CHR$0
9920ENDPROC
9930:
9940DEF PROCWimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%)
9950menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR4
9960menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR&100
9970menu%!(40+(item%-1)*24)=buffer%
9980menu%!(44+(item%-1)*24)=val%
9990menu%!(48+(item%-1)*24)=BufferLength%
10000ENDPROC
10010:
10020REM *******************************************************************
10030:
10040DEF PROCWimp_SelectIcon(window%,icon%)
10050wimp%!0=window%
10060wimp%!4=icon%
10070wimp%!8=%1000000000000000000000
10080wimp%!12=%1000000000000000000000
10090SYS&400CD,,wimp%
10100ENDPROC
10110:
10120DEF PROCWimp_UnselectIcon(window%,icon%)
10130wimp%!0=window%
10140wimp%!4=icon%
10150wimp%!8=0
10160wimp%!12=%1000000000000000000000
10170SYS&400CD,,wimp%
10180ENDPROC
10190:
10200DEF PROCWimp_SpritesLoad
10210PROCWimp_SpritesPathLoad("<Obey$Dir>.Sprites")
10220direct_sprites%=sprites%
10230ENDPROC
10240:
10250DEF PROCWimp_SpritesPathLoad(pathname$)
10260LOCALS%,T%
10270S%=OPENIN"<Obey$Dir>.Sprites":T%=EXT#S%+16:CLOSE#S%
10280DIMsprites%T%,spname%12
10290!sprites%=T%:sprites%!8=0
10300SYS"OS_SpriteOp",&109,sprites%
10310SYS"OS_SpriteOp",&10A,sprites%,pathname$
10320ENDPROC
10330:
10340REM *******************************************************************
10350:
10360DEF FNWimp_FileType(type%)
10370CASEtype%OF
10380WHEN&FFF:="Text"
10390WHEN&FFD:="Data"
10400WHEN&FFB:="Basic"
10410WHEN&FF9:="Sprite"
10420WHEN&FED:="Palette"
10430WHEN&FEC:="Template"
10440WHEN&AFF:="Draw"
10450WHEN&1000:="Folder"
10460WHEN&2000:="Application"
10470OTHERWISE=STR$~(type%)
10480ENDCASE
10490:
10500DEF FNWimp_GetFilePathName
10510=FNWimp_GetStringAtAddress(wimp%+44)
10520:
10530DEF FNWimp_FileLoad(pathname$)
10540LOCALS%,T%,file%
10550S%=OPENINpathname$
10560T%=EXT#S%+16
10570CLOSE#S%
10580DIMfile%T%
10590OSCLI("LOAD"+pathname$+""+STR$~file%)
10600=file%
10610;
10620DEF FNWimp_GetStringAtAddress(array%)
10630LOCALs$:s$=""
10640WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE:
10650=s$
10660:
10670DEF FNWimp_GetFileFromPathname(f$)
10680CASE INSTR(f$,".") OF
10690 WHEN 0 :=f$
10700 OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,".")))
10710ENDCASE
10720:
10730DEF PROCWimp_SendToEdit(file$)
10740LOCAL n%
10750wimp%!4=&6CC01C0C
10760wimp%!16=5
10770wimp%!36=0
10780wimp%!40=&FFF
10790$(wimp%+44)=file$+CHR$0
10800n%=LENfile$+45
10810IF n%MOD4 THEN !wimp%=4+(n%>>2)<<2 ELSE !wimp%=n%
10820SYS "Wimp_SendMessage",17,wimp%,0
10830ENDPROC
10840:
10850REM *******************************************************************
10860:
10870DEF PROCWimp_Start(TaskName$,wimp_memory%,icon%)
10880DIM wimp% wimp_memory%,icons% icon%
10890IF wimp_memory%<256 THEN wimp_memory%=256
10900icon_memory%=icons%+icon%
10910task$=TaskName$
10920indirect_sprites%=1 : direct_sprites%=1
10930PROCWimp_SetEventVariables
10940ON ERROR PROCWimp_Error:END
10950SYS"Wimp_Initialise",200,&4B534154,TaskName$ TO version%,task%
10960ENDPROC
10970:
10980DEF FNWimp_BASICParameters
10990 LOCAL com$,param$,I%
11000 SYS "OS_GetEnv" TO com$
11010 params$=""
11020 I%=INSTR(com$," -quit ")
11030 IF I% THEN params$=MID$(com$,INSTR(com$," ",I%+LEN" -quit ")+1)
11040=params$
11050:
11060DEF PROCWimp_SetEventVariables
11070DIM pointer_block% 20
11080interface%=FALSE
11090null%=1 :draw%=2 : pointer_leaving%=1<<4
11100pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7
11110key%=1<<8:menu%=1<<9:scroll%=1<<10
11120lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18)
11130recorder%=1<<18:acknowledge%=1<<19:window%=0
11140sprites%=1:version%=0:task%=0
11150Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0
11160x_origin%=0:y_origin%=0:SaveWindow%=-3
11170message_quit%=0:message_save%=2:message_load%=3
11180mouse_button%=2:save_event%=0
11190top_line%=0 : bottom_line%=0
11200ENDPROC
11210:
11220DEF PROCWimp_Error
11230LOCALX$,x%
11240ON ERROR OFF
11250x%=ERL
11260X$=REPORT$+"atline"+STR$(x%DIV10)
11270DIMErrorMsg%36
11280ErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x%
11290$(ErrorMsg%+24)="!RunImage"
11300SYS"Wimp_SendMessage",17,ErrorMsg%
11310PROCWimp_WindowAlert(task$,X$)
11320PROCWimp_CloseDown
11330ENDPROC
11340:
11350DEF PROCWimp_CloseDown
11360SYS"Wimp_CloseDown",task%,"TASK"
11370ENDPROC
11380:
11390DEF PROCWimp_Quit
11400finished%=TRUE
11410ENDPROC
11420:
11430DEF FNWimp_ReadVariable(Variable$)
11440LOCALlen%,result%,variable%
11450$wimp%=Variable$
11460SYS"OS_ReadVarVal",wimp%,wimp%+255,255,,3TO,,len%
11470wimp%?(len%+255)=13
11480=$(wimp%+255)
11490:
11500REM *******************************************************************
11510:
11520DEF PROCWimp_WaitForEvent
11530LOCAL mask%,event%
11540finished%=FALSE
11550mask%=%111000011001
11560REPEAT
11570 SYS"Wimp_Poll",mask%,wimp% TO event%
11580 CASE event% OF
11590 WHEN0 :
11600 WHEN1 : PROCWimp_PollDrawWindow
11610 WHEN2 : SYS "Wimp_OpenWindow",,wimp%
11620 WHEN3 : PROCWimp_PollCloseWindow
11630 WHEN4 :
11640 WHEN5 :
11650 WHEN6 : PROCWimp_PollMouseClick
11660 WHEN7 : PROCWimp_PollSaveMessage
11670 WHEN8 : PROCWimp_PollKeyPress
11680 WHEN9 : PROCEvent_MenuChoice(menu%)
11690 WHEN10:
11700 WHEN11:
11710 WHEN12:
11720 WHEN17,18: PROCWimp_PollMessages
11730 WHEN19:
11740 ENDCASE
11750UNTIL finished%
11760ENDPROC
11770:
11780DEF PROCWimp_PollDrawWindow
11790LOCAL more%
11800SYS"Wimp_RedrawWindow",,wimp%TOmore%
11810window%=wimp%!0
11820x_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24
11830WHILEmore%
11840 IF interface% THEN SYS"Wimp_BorderWindow",,wimp%
11850 PROCEvent_Draw(window%,x_origin%,y_origin%)
11860 SYS"Wimp_GetRectangle",,wimp%TOmore%
11870ENDWHILE
11880ENDPROC
11890:
11900DEF PROCWimp_PollCloseWindow
11910 SYS "Wimp_GetPointerInfo",,wimp%
11920 window%=wimp%!12 : buttons%=wimp%!8
11930IF search%=FALSE THEN
11940 PROCEvent_WindowClose(window%,buttons%)
11950 !wimp%=window% : SYS "Wimp_CloseWindow",,wimp%
11960ENDIF
11970ENDPROC
11980:
11990DEF PROCWimp_PollMouseClick
12000 button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
12010 CASE button% OF
12020 WHEN2 : PROCWimp_PollMenuPopUp
12030 OTHERWISE: CASE FNEvent_Save(window%) OF
12040 WHEN TRUE : PROCWimp_PollMouseSave
12050 WHEN FALSE: PROCWimp_PollEventMouseClick
12060 ENDCASE
12070 ENDCASE
12080ENDPROC
12090:
12100DEF PROCWimp_PollMenuPopUp
12110IF SA%=FALSE THEN
12120menu%=FNEvent_Menu(window%)
12130 CASE menu% OF
12140 WHEN FALSE:
12150 OTHERWISE :
12160 CASE window% OF
12170 WHEN -2 : n%=0
12180 WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
12190 n%+=1
12200 ENDWHILE
12210 SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*90
12220 OTHERWISE : SYS"Wimp_CreateMenu",,menu%,x%-64,y%+20
12230 ENDCASE
12240 ENDCASE
12250ENDIF
12260ENDPROC
12270:
12280DEF PROCWimp_PollMouseSave
12290 CASE icon% OF
12300 WHEN 0 : IF button% AND &50 THEN PROCWimp_PollDragBox(window%)
12310 WHEN 2 : IF button% AND 5 THEN PROCWimp_PollSaveFile(window%)
12320 ENDCASE
12330ENDPROC
12340:
12350DEF PROCWimp_PollEventMouseClick
12360 IF interface% THEN SYS"Wimp_BorderIcon",,wimp%
12370 PROCEvent_MouseClick(window%,icon%,button%,x%,y%)
12380 CASE interface% OF
12390 WHEN TRUE :
12400 wimp%!0=x%:wimp%!4=y% : wimp%!8=0
12410 wimp%!12=window% : wimp%!16=icon%
12420 SYS"Wimp_BorderIcon",,wimp%
12430 ENDCASE
12440ENDPROC
12450:
12460DEF PROCWimp_PollSaveFile(window%)
12470LOCALfile$
12480 wimp%!0=window% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
12490 file$=$(wimp%!28)
12500 CASE INSTR(file$,".") OF
12510 WHEN 0 :
12520IF key%=13 THEN
12530 $(wimp%+4)="To save, drag the icon to a directory window"
12540 SYS "Wimp_ReportError",wimp%,16,task$
12550ENDIF
12560 OTHERWISE:
12570 IF key%=13 THEN PROCEvent_SaveFile(file$,window%)
12580 ENDCASE
12590IF key%=13 THEN SYS"Wimp_CreateMenu",-1
12600IF SA%=TRUE THEN PROCWimp_CloseDown
12610ENDPROC
12620:
12630DEF PROCWimp_PollDragBox(window%)
12640LOCALx%,y%
12650 save%=window%
12660 !wimp%=window%
12670 SYS"Wimp_GetWindowState",,wimp%
12680 x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24
12690 wimp%!4=0
12700 SYS"Wimp_GetIconState",,wimp%
12710 !wimp%=window%
12720 wimp%!4=5
12730 wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12
12740 wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20
12750 wimp%!24=0:wimp%!28=0
12760 wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
12770 SYS"Wimp_DragBox",,wimp%
12780ENDPROC
12790:
12800DEF PROCWimp_PollKeyPress
12810 window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
12820 CASE FNEvent_Save(window%) OF
12830 WHEN TRUE : PROCWimp_PollSaveFile(window%)
12840 WHEN FALSE: PROCEvent_KeyPress(window%,icon%,key%)
12850 ENDCASE
12860ENDPROC
12870:
12880DEF PROCWimp_PollSaveMessage
12890LOCALfile$,window%,icon%,x%,y%
12900 SYS"Wimp_GetPointerInfo",,wimp%
12910 window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
12920 wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
12930 file$=$(wimp%!28)
12940 file$=FNWimp_GetFileFromPathname(file$)
12950ACE$=file$
12960 wimp%!20=window%
12970 wimp%!24=icon%
12980 wimp%!28=x%:wimp%!32=y%
12990 wimp%!36=length%
13000 wimp%!0=64
13010 wimp%!12=0
13020 wimp%!16=1
13030 wimp%!40=&FFF
13040 $(wimp%+44)=file$
13050 SYS"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
13060ENDPROC
13070:
13080DEF PROCWimp_PollMessages
13090LOCAL file$
13100file$=FNWimp_GetStringAtAddress(wimp%+44)
13110 CASE wimp%!16 OF
13120 WHEN 0 : finished%=TRUE
13130 WHEN 1 :
13140 WHEN 2 :
13150 REM PROCWimp_IconPutText(save%,1,file$)
13160 wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
13170 $(wimp%!28)=file$
13180 wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0
13190 SYS "Wimp_SetIconState",,wimp%
13200 REM PROCWimp_IconCaret(save%,1,LENfile$)
13210 SYS "Wimp_SetCaretPosition",save%,1,,,-1,LENfile$
13220 PROCEvent_SaveFile(file$,save%)
13230IF SA%=TRUE THEN PROCWimp_CloseDown
13240 WHEN 3
13250 type$=FNWimp_FileType(wimp%!40) : PROCEvent_LoadFile(file$,type$)
13260 WHEN 5 :
13270IF wimp%!40=&FBF AND event%=18 THEN
13280wimp%!12=wimp%!8
13290SYS"XWimp_SendMessage",17,wimp%,wimp%!20
13300file$=FNWimp_GetFilePathName
13310type$=FNWimp_FileType(&FBF)
13320PROCEvent_LoadFile(file$,type$)
13330ENDIF
13340 WHEN &502
13350hw%=wimp%!32
13360hi%=wimp%!36
13370IF hw%=-2 THEN PROCsendhelp(wimp%,"This is the !ADRBook icon.|MProgram written by Julian Samphire 1993.|MClick on icon to open the Address Book.|M")
13380CASE hw% OF
13390WHEN Save_Window%
13400IF hi%=0 THEN PROCsendhelp(wimp%,"Drag this icon onto a filer window to save the address data")
13410IF hi%=1 THEN PROCsendhelp(wimp%,"Enter the file name here that you want to save the address data as.")
13420IF hi%=2 THEN PROCsendhelp(wimp%,"Click here to save the address data.")
13430WHEN Save2_Window%
13440IF hi%=0 THEN PROCsendhelp(wimp%,"Drag this icon onto a filer window to save the text")
13450IF hi%=1 THEN PROCsendhelp(wimp%,"Enter the file name here that you want to save the text as.")
13460IF hi%=2 THEN PROCsendhelp(wimp%,"Click here to save the text.")
13470WHEN Info_Window%
13480IF hi%=0 OR hi%=1 OR hi%=2 OR hi%=3 OR hi%=4 OR hi%=5 OR hi%=6 OR hi%=7 OR hi%=8 OR hi%=9 THEN PROCsendhelp(wimp%,"Name : ADRBook|MPurpose : Store addresses and numbers|MAuthor : Julian Samphire|MVersion : 1.06 (11-Aug-93)")
13490WHEN Search2_Window%
13500IF hi%=2 THEN PROCsendhelp(wimp%,"Click here to search using search parameters.")
13510IF hi%=3 THEN PROCsendhelp(wimp%,"Click here to cancel search.")
13520WHEN Set_Window%
13530IF hi%=2 THEN PROCsendhelp(wimp%,"Click here to turn back the page.")
13540IF hi%=3 THEN PROCsendhelp(wimp%,"Click here to start searching using search papameters.")
13550IF hi%=0 THEN PROCsendhelp(wimp%,"Click here to hilight Surname.")
13560IF hi%=4 THEN PROCsendhelp(wimp%,"Click here to hilight Other Names.")
13570IF hi%=6 THEN PROCsendhelp(wimp%,"Click here to hilight Address.")
13580IF hi%=10 THEN PROCsendhelp(wimp%,"Click here to hilight Post Code.")
13590IF hi%=12 THEN PROCsendhelp(wimp%,"Click here to hilight Area Code.")
13600IF hi%=14 THEN PROCsendhelp(wimp%,"Click here to hilight Telephone Number.")
13610IF hi%=16 THEN PROCsendhelp(wimp%,"Click here to hilight Notes.")
13620IF hi%=1 THEN PROCsendhelp(wimp%,"Enter the surname here.")
13630IF hi%=5 THEN PROCsendhelp(wimp%,"Enter the other names here.")
13640IF hi%=7 THEN PROCsendhelp(wimp%,"Enter the address line 1 here.")
13650IF hi%=8 THEN PROCsendhelp(wimp%,"Enter the address line 2 here.")
13660IF hi%=9 THEN PROCsendhelp(wimp%,"Enter the address line 3 here.")
13670IF hi%=11 THEN PROCsendhelp(wimp%,"Enter the post code here.")
13680IF hi%=13 THEN PROCsendhelp(wimp%,"Enter the area code here.")
13690IF hi%=15 THEN PROCsendhelp(wimp%,"Enter the telephone number here.")
13700IF hi%=17 THEN PROCsendhelp(wimp%,"Enter the notes here.")
13710WHEN Main_Window%
13720IF hi%=4 THEN PROCsendhelp(wimp%,"Surname icon.|MEnter the persons Surname here.|M"+SURNAME$(cur%))
13730IF hi%=5 THEN PROCsendhelp(wimp%,"Others icon.|MEnter the persons Other names here.|M"+OTHERS$(cur%))
13740IF hi%=6 OR hi%=7 OR hi%=8 THEN PROCsendhelp(wimp%,"Address icons.|MEnter the persons Address here.|M"+ADD1$(cur%)+" "+ADD2$(cur%)+" "+ADD3$(cur%))
13750IF hi%=9 THEN PROCsendhelp(wimp%,"Post Code icon.|MEnter the persons Post Code here.|M"+POSTCODE$(cur%))
13760IF hi%=10 THEN PROCsendhelp(wimp%,"Area Code icon.|MEnter the persons Area Code here.|M"+AREA$(cur%))
13770IF hi%=11 THEN PROCsendhelp(wimp%,"Telephone Number icon.|MEnter the persons Telephone Number here.|M"+TEL$(cur%))
13780IF hi%=12 THEN PROCsendhelp(wimp%,"Notes icon.|MEnter the notes on the person here.|M"+NTS$(cur%))
13790IF hi%=21 THEN PROCsendhelp(wimp%,"Click here to turn back the page.")
13800IF hi%=22 THEN PROCsendhelp(wimp%,"Click here to go to the first record.")
13810IF hi%=23 THEN PROCsendhelp(wimp%,"Click here to go back a record.")
13820IF hi%=24 THEN PROCsendhelp(wimp%,"Click here to dial the number.")
13830IF hi%=33 THEN PROCsendhelp(wimp%,"Click here to sort the records.")
13840IF hi%=25 THEN PROCsendhelp(wimp%,"Click here to set the search criteria.")
13850IF hi%=26 THEN PROCsendhelp(wimp%,"Click here to delete the current record.")
13860IF hi%=27 THEN PROCsendhelp(wimp%,"Click here to add a record.")
13870IF hi%=28 THEN PROCsendhelp(wimp%,"Click here to go to the print page.")
13880IF hi%=29 THEN PROCsendhelp(wimp%,"Click here to go forward a record.")
13890IF hi%=30 THEN PROCsendhelp(wimp%,"Click here to go to the last record.")
13900IF hi%=19 OR hi%=20 THEN PROCsendhelp(wimp%,"This shows the ammount of records and current record.|MTotal records = "+STR$(tot%)+"|MCurrent record = "+STR$(cur%+1))
13910WHEN Title_Window%
13920IF hi%=2 OR hi%=3 OR hi%=4 OR hi%=5 OR hi%=8 THEN PROCsendhelp(wimp%,"Address Book|MBy Julian Samphire|M� Archimedes World 1993")
13930IF hi%=6 THEN PROCsendhelp(wimp%,"Click here to close the address book.")
13940IF hi%=7 THEN PROCsendhelp(wimp%,"Click here to turn over the page.")
13950WHEN Print_Window%
13960IF hi%=7 OR hi%=13 OR hi%=16 OR hi%=33 THEN PROCsendhelp(wimp%,"Click here for specified print range.")
13970IF hi%=28 OR hi%=29 THEN PROCsendhelp(wimp%,"This shows the current name of the person to be printed.|M"+SURNAME$(pcur%)+"|M"+OTHERS$(pcur%))
13980IF hi%=30 THEN PROCsendhelp(wimp%,"Click here to go to the previous person.")
13990IF hi%=31 THEN PROCsendhelp(wimp%,"Click here to go to the next person.")
14000IF hi%=10 THEN PROCsendhelp(wimp%,"Click here to turn back the page.")
14010IF hi%=17 THEN PROCsendhelp(wimp%,"Click here to print selected data.")
14020IF hi%=21 THEN PROCsendhelp(wimp%,"Click here to set Surname.")
14030IF hi%=22 THEN PROCsendhelp(wimp%,"Click here to set Other Names.")
14040IF hi%=23 THEN PROCsendhelp(wimp%,"Click here to set Address.")
14050IF hi%=24 THEN PROCsendhelp(wimp%,"Click here to set Post Code.")
14060IF hi%=25 THEN PROCsendhelp(wimp%,"Click here to set Area Code.")
14070IF hi%=26 THEN PROCsendhelp(wimp%,"Click here to set Telephone Number.")
14080IF hi%=27 THEN PROCsendhelp(wimp%,"Click here to set Notes.")
14090ENDCASE
14100 ENDCASE
14110ENDPROC
14120:
14130DEF FNWimp_GetStringAtAddress(array%)
14140LOCALs$:s$=""
14150WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE:
14160=s$
14170:
14180DEF FNWimp_GetFileFromPathname(f$)
14190CASE INSTR(f$,".") OF
14200 WHEN 0 :=f$
14210 OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,".")))
14220ENDCASE
14230:
14240DEF FNWimp_FileType(type%)
14250CASEtype%OF
14260WHEN&FFF:="Text"
14270WHEN&FFD:="Data"
14280WHEN&FFB:="Basic"
14290WHEN&FF9:="Sprite"
14300WHEN&FED:="Palette"
14310WHEN&FEC:="Template"
14320WHEN&AFF:="Draw"
14330WHEN&1000:="Folder"
14340WHEN&2000:="Application"
14350OTHERWISE=STR$~(type%)
14360ENDCASE
14370:
14380DEF PROCread
14390IF cur%<tot% OR icon%=27 THEN
14400SURNAME$(cur%)=FNWimp_IconText(Main_Window%,4)
14410SURNAME$(cur%)=FNChange(SURNAME$(cur%))
14420OTHERS$(cur%)=FNWimp_IconText(Main_Window%,5)
14430OTHERS$(cur%)=FNChange(OTHERS$(cur%))
14440ADD1$(cur%)=FNWimp_IconText(Main_Window%,6)
14450ADD2$(cur%)=FNWimp_IconText(Main_Window%,7)
14460ADD3$(cur%)=FNWimp_IconText(Main_Window%,8)
14470ADD1$(cur%)=FNChange(ADD1$(cur%))
14480ADD2$(cur%)=FNChange(ADD2$(cur%))
14490ADD3$(cur%)=FNChange(ADD3$(cur%))
14500POSTCODE$(cur%)=FNWimp_IconText(Main_Window%,9)
14510AREA$(cur%)=FNWimp_IconText(Main_Window%,10)
14520TEL$(cur%)=FNWimp_IconText(Main_Window%,11)
14530NTS$(cur%)=FNWimp_IconText(Main_Window%,12)
14540NTS$(cur%)=FNChange(NTS$(cur%))
14550ENDIF
14560ENDPROC
14570:
14580DEF PROCupdate
14590PROCmenuupdate
14600PROCWimp_IconUpdate(Main_Window%,20)
14610PROCWimp_IconPutText(Main_Window%,4,SURNAME$(cur%))
14620PROCWimp_IconPutText(Main_Window%,5,OTHERS$(cur%))
14630PROCWimp_IconPutText(Main_Window%,6,ADD1$(cur%))
14640PROCWimp_IconPutText(Main_Window%,7,ADD2$(cur%))
14650PROCWimp_IconPutText(Main_Window%,8,ADD3$(cur%))
14660PROCWimp_IconPutText(Main_Window%,9,POSTCODE$(cur%))
14670IF AREA$(cur%)="" THEN PROCWimp_IconPutText(Main_Window%,10,"") ELSE PROCWimp_IconPutText(Main_Window%,10,AREA$(cur%))
14680IF TEL$(cur%)="" THEN PROCWimp_IconPutText(Main_Window%,11,"") ELSE PROCWimp_IconPutText(Main_Window%,11,TEL$(cur%))
14690PROCWimp_IconPutText(Main_Window%,12,NTS$(cur%))
14700PROCWimp_IconCaret(Main_Window%,4,LEN(FNWimp_IconText(Main_Window%,4)))
14710ENDPROC
14720:
14730DEF PROCdelete
14740FOR A=cur% TO tot%
14750SURNAME$(A)=SURNAME$(A+1)
14760OTHERS$(A)=OTHERS$(A+1)
14770ADD1$(A)=ADD1$(A+1)
14780ADD2$(A)=ADD2$(A+1)
14790ADD3$(A)=ADD3$(A+1)
14800POSTCODE$(A)=POSTCODE$(A+1)
14810AREA$(A)=AREA$(A+1)
14820TEL$(A)=TEL$(A+1)
14830NTS$(A)=NTS$(A+1)
14840NEXTA
14850tot%-=1
14860ENDPROC
14870:
14880DEF PROCmenuupdate
14890IF tot%=0 THEN
14900PROCWimp_MenuDisable(Bar_Menu%,2)
14910PROCWimp_MenuDisable(Title_Menu%,3)
14920PROCWimp_MenuDisable(Main_Menu%,12)
14930ELSE
14940PROCWimp_MenuEnable(Bar_Menu%,2)
14950PROCWimp_MenuEnable(Title_Menu%,3)
14960PROCWimp_MenuEnable(Main_Menu%,12)
14970ENDIF
14980ENDPROC
14990:
15000DEFPROCtonedial(A$)
15010IFA$="" THEN ENDPROC
15020SYS"Hourglass_On"
15030VOICES2
15040VOICE1,"WaveSynth-Beep"
15050VOICE2,"WaveSynth-Beep"
15060LOCALI%
15070FORI%=1TOLENA$
15080PROCtone(ASCMID$(A$,I%))
15090PROCdelay(6)
15100NEXT
15110SYS"Hourglass_Smash"
15120ENDPROC
15130:
15140DEFPROCtone(I%)
15150I%-=48
15160IF I%<0 OR I%>9 THEN ENDPROC
15170SOUND 1,-15,tone%(I%,0),100
15180SOUND 2,-15,tone%(I%,1),100
15190PROCdelay(10)
15200SOUND 1,0,0,0
15210SOUND 2,0,0,0
15220ENDPROC
15230:
15240DEFPROCdelay(I%)
15250LOCALT%
15260T%=TIME
15270REPEATUNTILTIME>T%+I%
15280ENDPROC
15290:
15300DEF PROCupdatep
15310PROCWimp_IconPutText(Print_Window%,28,SURNAME$(pcur%))
15320PROCWimp_IconPutText(Print_Window%,29,OTHERS$(pcur%))
15330ENDPROC
15340:
15350DEF PROCable
15360IF psel%=1 THEN
15370PROCWimp_IconEnable(Print_Window%,6)
15380PROCWimp_IconEnable(Print_Window%,12)
15390PROCWimp_IconEnable(Print_Window%,9)
15400PROCWimp_IconEnable(Print_Window%,11)
15410ENDIF
15420IF psel%=2 THEN
15430PROCWimp_IconEnable(Print_Window%,8)
15440PROCWimp_IconEnable(Print_Window%,14)
15450ENDIF
15460IF psel%=3 THEN
15470PROCWimp_IconEnable(Print_Window%,15)
15480ENDIF
15490IF psel%=4 THEN
15500PROCWimp_IconEnable(Print_Window%,28)
15510PROCWimp_IconEnable(Print_Window%,29)
15520PROCWimp_IconEnable(Print_Window%,30)
15530PROCWimp_IconEnable(Print_Window%,31)
15540PROCWimp_IconEnable(Print_Window%,32)
15550ENDIF
15560ENDPROC
15570:
15580DEF PROCdalbe
15590IF psel%=1 THEN
15600PROCWimp_IconDisable(Print_Window%,6)
15610PROCWimp_IconDisable(Print_Window%,12)
15620PROCWimp_IconDisable(Print_Window%,9)
15630PROCWimp_IconDisable(Print_Window%,11)
15640ENDIF
15650IF psel%=2 THEN
15660PROCWimp_IconDisable(Print_Window%,8)
15670PROCWimp_IconDisable(Print_Window%,14)
15680ENDIF
15690IF psel%=3 THEN
15700PROCWimp_IconDisable(Print_Window%,15)
15710ENDIF
15720IF psel%=4 THEN
15730PROCWimp_IconDisable(Print_Window%,28)
15740PROCWimp_IconDisable(Print_Window%,29)
15750PROCWimp_IconDisable(Print_Window%,30)
15760PROCWimp_IconDisable(Print_Window%,31)
15770PROCWimp_IconDisable(Print_Window%,32)
15780ENDIF
15790ENDPROC
15800:
15810DEF FNgetstring(array%)
15820LOCAL path$,pointer%
15830path$=""
15840pointer%=array%
15850REPEAT
15860path$+=CHR$?pointer%
15870pointer%+=1
15880UNTIL ?pointer%=0 OR ?pointer%=13
15890=path$
15900:
15910DEFPROCopenprinter
15920SYS "XPDriver_Info" TO R0,R1,R2,R3,R4,R5,R6,R7
15930IF R1=0 AND R2=0 AND R3=0 AND R5=0 AND R6=0 AND R7=0 THEN
15940PROCWimp_IconPutText(Print_Window%,34,"No driver loaded")
15950DRIVER%=FALSE
15960ELSE
15970DRIVER%=TRUE
15980REM no printer ?
15990ENDIF
16000IF DRIVER%=TRUE THEN
16010printer$=FNgetstring(R4)
16020PROCWimp_IconPutText(Print_Window%,34,printer$)
16030ENDIF
16040ENDPROC
16050:
16060DEFPROCprint
16070:
16080printhand%=OPENOUT("PRINTER:$.Job1") : REM start a job !!!
16090$title%="Exchange file"
16100SYS &80145,printhand%,title%
16110BPUT#printhand%,13 : REM put head to left of paper to start!!!!
16120:
16130IF psel%=1 THEN
16140L$=FNWimp_IconText(Print_Window%,12)
16150R$=FNWimp_IconText(Print_Window%,11)
16160IF L$<=R$ THEN
16170FOR A=0 TO tot%-1
16180N$=LEFT$(SURNAME$(A),1)
16190IF N$>=L$ AND N$<=R$ THEN
16200IF psurname%=TRUE AND SURNAME$(A)<>"" THEN PROCprintline("Surname : "+SURNAME$(A)+CHR$(10))
16210IF pothers%=TRUE AND OTHERS$(A)<>"" THEN PROCprintline("Other names : "+OTHERS$(A)+CHR$(10))
16220IF padd%=TRUE THEN
16230IF ADD1$(A)<>"" THEN PROCprintline("Address : "+ADD1$(A)+CHR$(10))
16240IF ADD2$(A)<>"" THEN PROCprintline("Address : "+ADD2$(A)+CHR$(10))
16250IF ADD3$(A)<>"" THEN PROCprintline("Address : "+ADD3$(A)+CHR$(10))
16260ENDIF
16270IF ppostcode%=TRUE AND POSTCODE$(A)<>"" THEN PROCprintline("Post Code : "+POSTCODE$(A)+CHR$(10))
16280IF parea%=TRUE AND AREA$(A)<>"" THEN PROCprintline("Area : "+AREA$(A)+CHR$(10))
16290IF ptel%=TRUE AND TEL$(A)<>"" THEN PROCprintline("Telephone : "+TEL$(A)+CHR$(10))
16300IF pnts%=TRUE AND NTS$(A)<>"" THEN PROCprintline("Notes : "+NTS$(A)+CHR$(10))
16310PROCprintline(CHR$(10))
16320ENDIF
16330NEXTA
16340ENDIF
16350ENDIF
16360IF psel%=2 THEN
16370A$=FNWimp_IconText(Print_Window%,14)
16380FOR A=0 TO tot%-1
16390N$=LEFT$(SURNAME$(A),1)
16400IF A$=N$ THEN
16410IF psurname%=TRUE AND SURNAME$(A)<>"" THEN PROCprintline("Surname : "+SURNAME$(A)+CHR$(10))
16420IF pothers%=TRUE AND OTHERS$(A)<>"" THEN PROCprintline("Other names : "+OTHERS$(A)+CHR$(10))
16430IF padd%=TRUE THEN
16440IF ADD1$(A)<>"" THEN PROCprintline("Address : "+ADD1$(A)+CHR$(10))
16450IF ADD2$(A)<>"" THEN PROCprintline("Address : "+ADD2$(A)+CHR$(10))
16460IF ADD3$(A)<>"" THEN PROCprintline("Address : "+ADD3$(A)+CHR$(10))
16470ENDIF
16480IF ppostcode%=TRUE AND POSTCODE$(A)<>"" THEN PROCprintline("Post Code : "+POSTCODE$(A)+CHR$(10))
16490IF parea%=TRUE AND AREA$(A)<>"" THEN PROCprintline("Area : "+AREA$(A)+CHR$(10))
16500IF ptel%=TRUE AND TEL$(A)<>"" THEN PROCprintline("Telephone : "+TEL$(A)+CHR$(10))
16510IF pnts%=TRUE AND NTS$(A)<>"" THEN PROCprintline("Notes : "+NTS$(A)+CHR$(10))
16520PROCprintline(CHR$(10))
16530ENDIF
16540NEXTA
16550ENDIF
16560IF psel%=3 THEN
16570FOR A=0 TO tot%-1
16580IF psurname%=TRUE AND SURNAME$(A)<>"" THEN PROCprintline("Surname : "+SURNAME$(A)+CHR$(10))
16590IF pothers%=TRUE AND OTHERS$(A)<>"" THEN PROCprintline("Other names : "+OTHERS$(A)+CHR$(10))
16600IF padd%=TRUE THEN
16610IF ADD1$(A)<>"" THEN PROCprintline("Address : "+ADD1$(A)+CHR$(10))
16620IF ADD2$(A)<>"" THEN PROCprintline("Address : "+ADD2$(A)+CHR$(10))
16630IF ADD3$(A)<>"" THEN PROCprintline("Address : "+ADD3$(A)+CHR$(10))
16640ENDIF
16650IF ppostcode%=TRUE AND POSTCODE$(A)<>"" THEN PROCprintline("Post Code : "+POSTCODE$(A)+CHR$(10))
16660IF parea%=TRUE AND AREA$(A)<>"" THEN PROCprintline("Area : "+AREA$(A)+CHR$(10))
16670IF ptel%=TRUE AND TEL$(A)<>"" THEN PROCprintline("Telephone : "+TEL$(A)+CHR$(10))
16680IF pnts%=TRUE AND NTS$(A)<>"" THEN PROCprintline("Notes : "+NTS$(A)+CHR$(10))
16690PROCprintline(CHR$(10))
16700NEXTA
16710ENDIF
16720IF psel%=4 THEN
16730FOR A=0 TO tot%-1
16740IF SURNAME$(A)=SURNAME$(pcur%) THEN
16750IF psurname%=TRUE AND SURNAME$(A)<>"" THEN PROCprintline("Surname : "+SURNAME$(A)+CHR$(10))
16760IF pothers%=TRUE AND OTHERS$(A)<>"" THEN PROCprintline("Other names : "+OTHERS$(A)+CHR$(10))
16770IF padd%=TRUE THEN
16780IF ADD1$(A)<>"" THEN PROCprintline("Address : "+ADD1$(A)+CHR$(10))
16790IF ADD2$(A)<>"" THEN PROCprintline("Address : "+ADD2$(A)+CHR$(10))
16800IF ADD3$(A)<>"" THEN PROCprintline("Address : "+ADD3$(A)+CHR$(10))
16810ENDIF
16820IF ppostcode%=TRUE AND POSTCODE$(A)<>"" THEN PROCprintline("Post Code : "+POSTCODE$(A)+CHR$(10))
16830IF parea%=TRUE AND AREA$(A)<>"" THEN PROCprintline("Area : "+AREA$(A)+CHR$(10))
16840IF ptel%=TRUE AND TEL$(A)<>"" THEN PROCprintline("Telephone : "+TEL$(A)+CHR$(10))
16850IF pnts%=TRUE AND NTS$(A)<>"" THEN PROCprintline("Notes : "+NTS$(A)+CHR$(10))
16860PROCprintline(CHR$(10))
16870ENDIF
16880NEXTA
16890ENDIF
16900:
16910BPUT#printhand%,12 : REM do linefeed !!!!
16920SYS &80148,printhand%
16930CLOSE #printhand%
16940ENDPROC
16950:
16960DEFPROCprintline(line$)
16970FOR cco=1 TO LEN(line$)
16980byte=ASC(MID$(line$,cco,1))
16990BPUT#printhand%,byte
17000IF byte=10 OR byte=13 THEN BPUT#printhand%,13 : REM put head to left of paper
17010NEXT cco
17020ENDPROC
17030:
17040DEF PROCsel(ZZ,ic%)
17050IF ZZ THEN PROCWimp_SelectIcon(Print_Window%,ic%) ELSE PROCWimp_UnselectIcon(Print_Window%,ic%)
17060ENDPROC
17070:
17080DEFFNChange(wo$)
17090wo$=FNtoupper(wo$,1)
17100FOR cc=1 TO LEN(wo$)
17110IF MID$(wo$,cc,1)=" " OR MID$(wo$,cc,1)="-" OR MID$(wo$,cc,1)="." OR MID$(wo$,cc,1)="*" OR MID$(wo$,cc,1)="""" OR MID$(wo$,cc,1)="'" OR MID$(wo$,cc,1)="," THEN
17120wo$=FNtoupper(wo$,cc+1)
17130ELSE
17140wo$=FNtolower(wo$,cc+1)
17150ENDIF
17160NEXTcc
17170=wo$
17180:
17190DEFFNtoupper(word$,p)
17200IF MID$(word$,p,1)>="a" AND MID$(word$,p,1)<="z" THEN MID$(word$,p,1)=CHR$(ASC(MID$(word$,p,1))-(ASC("a")-ASC("A")))
17210=word$
17220:
17230DEFFNtolower(word$,p)
17240IF MID$(word$,p,1)>="A" AND MID$(word$,p,1)<="Z" THEN MID$(word$,p,1)=CHR$(ASC(MID$(word$,p,1))+(ASC("a")-ASC("A")))
17250=word$
17260:
17270DEF PROCunsearch
17280IF ssel%=0 THEN
17290PROCWimp_SetIconSprite(Set_Window%,0,";R1")
17300PROCWimp_IconDisable(Set_Window%,1)
17310ENDIF
17320IF ssel%=1 THEN
17330PROCWimp_SetIconSprite(Set_Window%,4,";R1")
17340PROCWimp_IconDisable(Set_Window%,5)
17350ENDIF
17360IF ssel%=2 THEN
17370PROCWimp_SetIconSprite(Set_Window%,6,";R1")
17380PROCWimp_IconDisable(Set_Window%,7)
17390PROCWimp_IconDisable(Set_Window%,8)
17400PROCWimp_IconDisable(Set_Window%,9)
17410ENDIF
17420IF ssel%=3 THEN
17430PROCWimp_SetIconSprite(Set_Window%,10,";R1")
17440PROCWimp_IconDisable(Set_Window%,11)
17450ENDIF
17460IF ssel%=4 THEN
17470PROCWimp_SetIconSprite(Set_Window%,12,";R1")
17480PROCWimp_IconDisable(Set_Window%,13)
17490ENDIF
17500IF ssel%=5 THEN
17510PROCWimp_SetIconSprite(Set_Window%,14,";R1")
17520PROCWimp_IconDisable(Set_Window%,15)
17530ENDIF
17540IF ssel%=6 THEN
17550PROCWimp_SetIconSprite(Set_Window%,16,";R1")
17560PROCWimp_IconDisable(Set_Window%,17)
17570ENDIF
17580ENDPROC
17590:
17600DEF PROCselsearch
17610IF ssel%=0 THEN
17620PROCWimp_SetIconSprite(Set_Window%,0,";R2")
17630PROCWimp_IconEnable(Set_Window%,1)
17640PROCWimp_IconCaret(Set_Window%,1,LEN(FNWimp_IconText(Set_Window%,1)))
17650ENDIF
17660IF ssel%=1 THEN
17670PROCWimp_SetIconSprite(Set_Window%,4,";R2")
17680PROCWimp_IconEnable(Set_Window%,5)
17690PROCWimp_IconCaret(Set_Window%,5,LEN(FNWimp_IconText(Set_Window%,5)))
17700ENDIF
17710IF ssel%=2 THEN
17720PROCWimp_SetIconSprite(Set_Window%,6,";R2")
17730PROCWimp_IconEnable(Set_Window%,7)
17740PROCWimp_IconEnable(Set_Window%,8)
17750PROCWimp_IconEnable(Set_Window%,9)
17760PROCWimp_IconCaret(Set_Window%,7,LEN(FNWimp_IconText(Set_Window%,7)))
17770ENDIF
17780IF ssel%=3 THEN
17790PROCWimp_SetIconSprite(Set_Window%,10,";R2")
17800PROCWimp_IconEnable(Set_Window%,11)
17810PROCWimp_IconCaret(Set_Window%,11,LEN(FNWimp_IconText(Set_Window%,11)))
17820ENDIF
17830IF ssel%=4 THEN
17840PROCWimp_SetIconSprite(Set_Window%,12,";R2")
17850PROCWimp_IconEnable(Set_Window%,13)
17860PROCWimp_IconCaret(Set_Window%,13,LEN(FNWimp_IconText(Set_Window%,13)))
17870ENDIF
17880IF ssel%=5 THEN
17890PROCWimp_SetIconSprite(Set_Window%,14,";R2")
17900PROCWimp_IconEnable(Set_Window%,15)
17910PROCWimp_IconCaret(Set_Window%,15,LEN(FNWimp_IconText(Set_Window%,15)))
17920ENDIF
17930IF ssel%=6 THEN
17940PROCWimp_SetIconSprite(Set_Window%,16,";R2")
17950PROCWimp_IconEnable(Set_Window%,17)
17960PROCWimp_IconCaret(Set_Window%,17,LEN(FNWimp_IconText(Set_Window%,17)))
17970ENDIF
17980ENDPROC
17990:
18000DEF PROCsearchcut
18010IF ssel%=0 THEN
18020SEARCH$=FNWimp_IconText(Set_Window%,1)
18030SEARCH2$=FNWimp_IconText(Set_Window%,1)
18040SEARCH3$=FNWimp_IconText(Set_Window%,1)
18050SEARCH$=FNChange(SEARCH$)
18060ENDIF
18070IF ssel%=1 THEN
18080SEARCH$=FNWimp_IconText(Set_Window%,5)
18090SEARCH2$=FNWimp_IconText(Set_Window%,5)
18100SEARCH3$=FNWimp_IconText(Set_Window%,5)
18110SEARCH$=FNChange(SEARCH$)
18120ENDIF
18130IF ssel%=2 THEN
18140SEARCH$=FNWimp_IconText(Set_Window%,7)
18150SEARCH2$=FNWimp_IconText(Set_Window%,8)
18160SEARCH3$=FNWimp_IconText(Set_Window%,9)
18170IF SEARCH$<>"" THEN SEARCH$=FNChange(SEARCH$) ELSE SEARCH$=" "
18180IF SEARCH2$<>"" THEN SEARCH2$=FNChange(SEARCH2$) ELSE SEARCH2$=" "
18190IF SEARCH3$<>"" THEN SEARCH3$=FNChange(SEARCH3$) ELSE SEARCH3$=" "
18200ENDIF
18210IF ssel%=3 THEN
18220SEARCH$=FNWimp_IconText(Set_Window%,11)
18230SEARCH2$=FNWimp_IconText(Set_Window%,11)
18240SEARCH3$=FNWimp_IconText(Set_Window%,11)
18250ENDIF
18260IF ssel%=4 THEN
18270SEARCH$=FNWimp_IconText(Set_Window%,13)
18280SEARCH2$=FNWimp_IconText(Set_Window%,13)
18290SEARCH3$=FNWimp_IconText(Set_Window%,13)
18300ENDIF
18310IF ssel%=5 THEN
18320SEARCH$=FNWimp_IconText(Set_Window%,15)
18330SEARCH2$=FNWimp_IconText(Set_Window%,15)
18340SEARCH3$=FNWimp_IconText(Set_Window%,15)
18350ENDIF
18360IF ssel%=6 THEN
18370SEARCH$=FNWimp_IconText(Set_Window%,17)
18380SEARCH2$=FNWimp_IconText(Set_Window%,17)
18390SEARCH3$=FNWimp_IconText(Set_Window%,17)
18400SEARCH$=FNChange(SEARCH$)
18410ENDIF
18420ENDPROC
18430:
18440DEF PROCsearch
18450DONE%=0
18460ST%=FALSE
18470IF SNUM%=-2 THEN SNUM%=cur%+1
18480LOOK$=""
18490LOOK2$=""
18500LOOK3$=""
18510WHILE LOOK$<>SEARCH$ AND LOOK2$<>SEARCH2$ AND LOOK3$<>SEARCH3$ AND SNUM%<=tot%+1 AND ST%=FALSE
18520LOOK$=""
18530LOOK2$=""
18540LOOK3$=""
18550IF ssel%=0 THEN
18560LOOK$=SURNAME$(SNUM%)
18570ENDIF
18580IF ssel%=1 THEN
18590LOOK$=OTHERS$(SNUM%)
18600ENDIF
18610IF ssel%=2 THEN
18620LOOK$=ADD1$(SNUM%)
18630LOOK2$=ADD2$(SNUM%)
18640LOOK3$=ADD3$(SNUM%)
18650ENDIF
18660IF ssel%=3 THEN
18670LOOK$=POSTCODE$(SNUM%)
18680ENDIF
18690IF ssel%=4 THEN
18700LOOK$=AREA$(SNUM%)
18710ENDIF
18720IF ssel%=5 THEN
18730LOOK$=TEL$(SNUM%)
18740ENDIF
18750IF ssel%=6 THEN
18760LOOK$=NTS$(SNUM%)
18770ENDIF
18780IF SNUM%>=tot% THEN
18790SNUM%=-1
18800DONE%+=1
18810ENDIF
18820SNUM%+=1
18830IF DONE%=2 THEN ST%=TRUE
18840PROCchop
18850ENDWHILE
18860IF ST%=FALSE THEN
18870PROCread
18880cur%=SNUM%-1
18890PROCupdate
18900ENDIF
18910ENDPROC
18920:
18930DEF PROCchop
18940LOOK$=LEFT$(LOOK$,LEN(SEARCH$))
18950LOOK2$=LEFT$(LOOK2$,LEN(SEARCH2$))
18960LOOK3$=LEFT$(LOOK3$,LEN(SEARCH3$))
18970ENDPROC
18980:
18990DEF PROCmousebox(w%)
19000wimp%!0=w%
19010SYS"Wimp_GetWindowOutline",,wimp%
19020MOUSE RECTANGLE wimp%!4+2,wimp%!8+2,wimp%!12-wimp%!4-4,wimp%!16-wimp%!8-4
19030ENDPROC
19040:
19050DEF PROCunbox
19060SYS "OS_ReadModeVariable",-1,11 TO ,,xpic
19070SYS "OS_ReadModeVariable",-1,12 TO ,,ypic
19080SYS "OS_ReadModeVariable",-1,4 TO ,,xfact
19090SYS "OS_ReadModeVariable",-1,5 TO ,,yfact
19100MOUSE RECTANGLE 0,0,xpic<<xfact,ypic<<yfact
19110ENDPROC
19120:
19130DEF PROCerror
19140IF ERR=67785 THEN
19150PROCWimp_WindowErrorBox("!ADRBook","Please write enable the disk")
19160CLOSE #X%
19170ELSE
19180DOSAVE%=FALSE
19190PROCWimp_WindowErrorBox("!ADRBook",REPORT$)
19200ENDIF
19210ENDPROC
19220:
19230DEF PROCsendhelp(wimp%,a$)
19240!wimp%=(LENa$+25) AND NOT3
19250wimp%!12=wimp%!8
19260!(wimp%+16)=&503
19270$(wimp%+20)=a$
19280?(wimp%+20+LENa$+1)=0
19290SYS "Wimp_SendMessage",17,wimp%,wimp%!4
19300ENDPROC
19310:
19320DEF PROCsort
19330FOR B=0 TO tot%
19340FOR A=0 TO tot%-2
19350IF SURNAME$(A)>SURNAME$(A+1) THEN
19360SWAP SURNAME$(A+1),SURNAME$(A)
19370SWAP OTHERS$(A+1),OTHERS$(A)
19380SWAP ADD1$(A+1),ADD1$(A)
19390SWAP ADD2$(A+1),ADD2$(A)
19400SWAP ADD3$(A+1),ADD3$(A)
19410SWAP POSTCODE$(A+1),POSTCODE$(A)
19420SWAP AREA$(A+1),AREA$(A)
19430SWAP TEL$(A+1),TEL$(A)
19440SWAP NTS$(A+1),NTS$(A)
19450ENDIF
19460NEXTA
19470NEXTB
19480ENDPROC
ș "OS_GetEnv" � env$
� �env$," -quit ") �
2fileload$=�env$,�env$,�(34),�env$,�(34))+1)+1)
(�
2? �Wimp_Start("ADRBook",1880,3862)
<3 �User_SetInitialData
F. �Create_Windows
P, �Create_Menus
Z� fileload$<>" " �
d$�Event_LoadFile(fileload$,"FBF")
n/�Wimp_IconPutText(Save_Window%,1,fileload$)
x�
�1 �Wimp_WaitForEvent
�. �Wimp_CloseDown
� �
� :
�! � �User_SetInitialData
�
DOSAVE%=�
�
search%=�
�SNUM%=-2
�SEARCH$=""
�SEARCH2$=""
�SEARCH3$=""
�ssel%=0
�� title% 256
psel%=1
pcur%=0
psurname%=�
" pothers%=�
, padd%=�
6 ppostcode%=�
@ parea%=�
J ptel%=�
T pnts%=�
^� tone%(9,1)
h%�I%=0�9:�J%=0�1:�tone%(I%,J%):�:�
r@�24063,26145,22288,25564,22288,26145,22288,26726,22979,25564
|@�22979,26145,22979,26726,23482,25564,23482,26145,23482,26726
� WIN$="NONE"
� dim=300
� � SURNAME$(dim)
� � OTHERS$(dim)
� � ADD1$(dim)
� � ADD2$(dim)
� � ADD3$(dim)
� � POSTCODE$(dim)
� � AREA$(dim)
� � TEL$(dim)
� � NTS$(dim)
�SURNAME$()=""
�OTHERS$()=""
ADD1$()=""
ADD2$()=""
ADD3$()=""
&POSTCODE$()=""
0AREA$()=""
:
TEL$()=""
D
NTS$()=""
N cur%=0
X tot%=0
b SA%=�
l
UPDATE%=�
v CD%=�
� �
� :
� � �Create_Windows
� �Wimp_SpritesLoad
�; Info_Window%=�Wimp_WindowLoad("Info")
�< Title_Window%=�Wimp_WindowLoad("Title")
�; Main_Window%=�Wimp_WindowLoad("Main")
�< Print_Window%=�Wimp_WindowLoad("Print")
�; Save_Window%=�Wimp_WindowLoad("Save")
�9 Set_Window%=�Wimp_WindowLoad("Set")
�; Close_Window%=�Wimp_WindowLoad("Close")
�; Save2_Window%=�Wimp_WindowLoad("Save2")
�= Search2_Window%=�Wimp_WindowLoad("Search2")
. Bar_Icon%=�Wimp_IconBar("!ADRBook")
�able
�
:
*" � �Event_Save(window%)
4 Ȏ window% �
>" � Save_Window% :=�
H# � Save2_Window% :=�
R :=�
\ �
f
:
p. � �Event_Sprites(window%)=sprites%
z :
� � �Create_Menus
�W Save_Menu%=�Wimp_MenuCreate("Save\ADRBook>Save_Window%\Text>Save2_Window%")
�Y Bar_Menu%=�Wimp_MenuCreate("ADRBook\Info>Info_Window%\Save>Save_Menu%\Quit")
�� Main_Menu%=�Wimp_MenuCreate("Main\Turn Back\Start\Back\Dial\Sort\Search Set\Delete\Add\Print\Forward\End\Save>Save_Menu%")
�V Title_Menu%=�Wimp_MenuCreate("Title\Close Book\Turn Over\Save>Save_Menu%")
�@ Search2_Menu%=�Wimp_MenuCreate("Search\Search\Cancel")
�. �Wimp_MenuDottedLine(Title_Menu%,1)
�. �Wimp_MenuDottedLine(Title_Menu%,2)
�, �Wimp_MenuDottedLine(Bar_Menu%,1)
�, �Wimp_MenuDottedLine(Bar_Menu%,2)
�A Print_Menu%=�Wimp_MenuCreate("Print\Turn Back\Print")
�. �Wimp_MenuDottedLine(Print_Menu%,1)
�G Set_Menu%=�Wimp_MenuCreate("Search Set\Turn Back\Search")
- �Wimp_MenuDottedLine(Main_Menu%,1)
- �Wimp_MenuDottedLine(Main_Menu%,3)
- �Wimp_MenuDottedLine(Main_Menu%,9)
$. �Wimp_MenuDottedLine(Main_Menu%,11)
. �menuupdate
8 �
B
:
L" � �Event_Menu(window%)
V Ȏ window% �
`. � Bar_Window% : =Bar_Menu%
j � Main_Window%
t� search%=� �
~=Main_Menu%
��
�=Search2_Menu%
��
�0 � Print_Window% : =Print_Menu%
�0 � Title_Window% : =Title_Menu%
�. � Set_Window% : =Set_Menu%
�2 � Search2_Window% : =Search2_Menu%
�! : =�
�
�
� :
�1 � �Event_WindowClose(window%,buttons%)
� Ȏ window% �
� Title_Window%
WIN$="NONE"
� Main_Window%
)�Wimp_WindowBringToTop(Title_Window%)
(WIN$="TITLE"
2 � Print_Window%
<(�Wimp_WindowBringToTop(Main_Window%)
FWIN$="MAIN"
P � Set_Window%
Z�searchcut
d(�Wimp_WindowBringToTop(Main_Window%)
nWIN$="MAIN"
x
� �
� �
� :
�5 � �Event_Draw(window%,x_origin%,y_origin%)
� Ȏ window% �
�8 � Info_Window% : �User_DrawInfoWindow
�9 � Title_Window% : �User_DrawTitleWindow
�8 � Main_Window% : �User_DrawMainWindow
�9 � Print_Window% : �User_DrawPrintWindow
�8 � Save_Window% : �User_DrawSaveWindow
� �
� �
� :
' � �User_DrawInfoWindow
�
:
"( � �User_DrawTitleWindow
, �
6 :
@' � �User_DrawMainWindow
J& ș"Wimp_SetColour",11
T! len=212/(tot%+1)
^ pos=cur%*len
h? ȓ Ȑ (x_origin%+530)+pos,y_origin%-594,len,22
r �
| :
�( � �User_DrawPrintWindow
� �
� :
�' � �User_DrawSaveWindow
� �
� :
�; � �Event_MouseClick(window%,icon%,button%,x%,y%)
� Ȏ window% �
�1 � Bar_Window% : �User_MouseBar
�B � Info_Window% : �User_MouseInfo( button%,icon%)
�C � Title_Window% : �User_MouseTitle( button%,icon%)
�B � Main_Window% : �User_MouseMain( button%,icon%)
�C � Print_Window% : �User_MousePrint( button%,icon%)
D � Set_Window% : �User_MouseSearch( button%,icon%)
C � Close_Window% : �User_MouseClose( button%,icon%)
D � Search2_Window% : �User_MouseClose2( button%,icon%)
& �
0 �
: :
D0 � �User_MouseClose2( button%,icon%)
N � icon%=3 �
X search%=�
b. �Wimp_IconEnable(Main_Window%,21)
l. �Wimp_IconEnable(Main_Window%,22)
v. �Wimp_IconEnable(Main_Window%,23)
�. �Wimp_IconEnable(Main_Window%,24)
�. �Wimp_IconEnable(Main_Window%,25)
�. �Wimp_IconEnable(Main_Window%,26)
�. �Wimp_IconEnable(Main_Window%,27)
�. �Wimp_IconEnable(Main_Window%,28)
�. �Wimp_IconEnable(Main_Window%,29)
�. �Wimp_IconEnable(Main_Window%,30)
�. �Wimp_IconEnable(Main_Window%,33)
�/ �Wimp_WindowClose(Search2_Window%)
� �
�" � icon%=2 � ssel%=2 �
�: � SEARCH$=" " � SEARCH2$=" " � SEARCH3$=" " �
�L �Wimp_WindowErrorBox("!ADRBook","Please set search parameters")
�
�search
�
�
*
4# � icon%=2 � ssel%<>2 �
>: � SEARCH$<>"" � SEARCH2$<>"" � SEARCH3$<>"" �
H �search
R �
\L �Wimp_WindowErrorBox("!ADRBook","Please set search parameters")
f �
p �
z �
� :
�/ � �User_MouseClose( button%,icon%)
� � icon%=1 �
� SA%=�
�
�unbox
�$�Wimp_WindowClose(Close_Window%)
�
UPDATE%=�
�(�Wimp_WindowBringToTop(Save_Window%)
�%A$=�Wimp_IconText(Save_Window%,1)
�)�Wimp_IconCaret(Save_Window%,1,�(A$))
��
� � icon%=2 �
�
�unbox
UPDATE%=�
$�Wimp_WindowClose(Close_Window%)
CD%=�
$�
. � icon%=3 �
8
�unbox
B$�Wimp_WindowClose(Close_Window%)
L�
V� CD%=� � �Wimp_CloseDown
`�
j :
t � �User_MouseBar
~W � WIN$="NONE" � SA%=� � �Wimp_WindowBringToTop(Title_Window%):WIN$="TITLE"
� �
� :
�0 � �User_MouseSearch( button%,icon%)
�" � icon%=3 � ssel%=2 �
� �searchcut
�: � SEARCH$=" " � SEARCH2$=" " � SEARCH3$=" " �
�L �Wimp_WindowErrorBox("!ADRBook","Please set search parameters")
� �
�+ �Wimp_WindowClose(Set_Window%)
�1 �Wimp_WindowBringToTop(Main_Window%)
�4 �Wimp_WindowBringToTop(Search2_Window%)
�/ �Wimp_IconDisable(Main_Window%,21)
/ �Wimp_IconDisable(Main_Window%,22)
/ �Wimp_IconDisable(Main_Window%,23)
/ �Wimp_IconDisable(Main_Window%,24)
/ �Wimp_IconDisable(Main_Window%,25)
(/ �Wimp_IconDisable(Main_Window%,26)
2/ �Wimp_IconDisable(Main_Window%,27)
</ �Wimp_IconDisable(Main_Window%,28)
F/ �Wimp_IconDisable(Main_Window%,29)
P/ �Wimp_IconDisable(Main_Window%,30)
Z/ �Wimp_IconDisable(Main_Window%,33)
d search%=�
n �search
x �
� �
�
�# � icon%=3 � ssel%<>2 �
� �searchcut
�: � SEARCH$<>"" � SEARCH2$<>"" � SEARCH3$<>"" �
�+ �Wimp_WindowClose(Set_Window%)
�1 �Wimp_WindowBringToTop(Main_Window%)
�4 �Wimp_WindowBringToTop(Search2_Window%)
�/ �Wimp_IconDisable(Main_Window%,21)
�/ �Wimp_IconDisable(Main_Window%,22)
�/ �Wimp_IconDisable(Main_Window%,23)
�/ �Wimp_IconDisable(Main_Window%,24)
�/ �Wimp_IconDisable(Main_Window%,25)
/ �Wimp_IconDisable(Main_Window%,26)
/ �Wimp_IconDisable(Main_Window%,27)
/ �Wimp_IconDisable(Main_Window%,28)
"/ �Wimp_IconDisable(Main_Window%,29)
,/ �Wimp_IconDisable(Main_Window%,30)
6/ �Wimp_IconDisable(Main_Window%,33)
@ search%=�
J �search
T �
^L �Wimp_WindowErrorBox("!ADRBook","Please set search parameters")
h �
r �
|
� � icon%=2 �
��searchcut
�"�Wimp_WindowClose(Set_Window%)
�(�Wimp_WindowBringToTop(Main_Window%)
�WIN$="MAIN"
��update
� �
�X � icon%=0 � icon%=4 � icon%=6 � icon%=10 � icon%=12 � icon%=14 � icon%=16 �
�@ � icon%=0 � ssel%<>0 � �unsearch:ssel%=0:�selsearch
�@ � icon%=4 � ssel%<>1 � �unsearch:ssel%=1:�selsearch
�@ � icon%=6 � ssel%<>2 � �unsearch:ssel%=2:�selsearch
�A � icon%=10 � ssel%<>3 � �unsearch:ssel%=3:�selsearch
�A � icon%=12 � ssel%<>4 � �unsearch:ssel%=4:�selsearch
A � icon%=14 � ssel%<>5 � �unsearch:ssel%=5:�selsearch
A � icon%=16 � ssel%<>6 � �unsearch:ssel%=6:�selsearch
�
& �
0 :
:. � �User_MouseInfo( button%,icon%)
D �
N :
X/ � �User_MouseTitle( button%,icon%)
b � icon%=6 �
l$�Wimp_WindowClose(Title_Window%)
vWIN$="NONE"
��
� � icon%=7 �
�$�Wimp_WindowClose(Title_Window%)
�(�Wimp_WindowBringToTop(Main_Window%)
�WIN$="MAIN"
��update
��
� �
� :
�. � �User_MouseMain( button%,icon%)
� � icon%=33 �
� � tot%>1 �
� �read
�sort
�update
�
` �Wimp_WindowAlert("!ADRBook","There is no point in sorting with this many records")
* �
4
UPDATE%=�
> �
H � icon%=25 �
R#�Wimp_WindowClose(Main_Window%)
\'�Wimp_WindowBringToTop(Set_Window%)
f�selsearch
pWIN$="SEARCH"
z �
�A � icon%=24 � �read:�tonedial(AREA$(cur%)+TEL$(cur%))
�% � icon%=26 � cur%<tot% �
�
UPDATE%=�
�WANS%=�Wimp_WindowCancel("!ADRBook","Are you sure you want to delete this record ?")
�� ANS%=� �
�
UPDATE%=�
� �read
��delete
��update
��
��
� � icon%=21 �
�#�Wimp_WindowClose(Main_Window%)
)�Wimp_WindowBringToTop(Title_Window%)
WIN$="TITLE"
�
$" � icon%=28 � tot%>0 �
.
UPDATE%=�
8#�Wimp_WindowClose(Main_Window%)
B�openprinter
L)�Wimp_WindowBringToTop(Print_Window%)
VI�Wimp_IconCaret(Print_Window%,12,�(�Wimp_IconText(Print_Window%,12)))
`�updatep
jWIN$="PRINT"
t�
~ � icon%=27 �
�
UPDATE%=�
�� cur%=tot% �
�*� �Wimp_IconText(Main_Window%,4)<>"" �
�A%=icon%
� �read
�tot%+=1
�cur%+=1
�
UPDATE%=�
��update
��
�L�Wimp_WindowErrorBox("!ADRBook","Please enter a Surname then press ADD")
��
�
[�Wimp_WindowErrorBox("!ADRBook","Please go to the blank record at the end of the file")
�
�
(" � icon%=23 � cur%>0 �
2
UPDATE%=�
< �read
Fcur%-=1
P�update
Z�
d% � icon%=29 � cur%<tot% �
n
UPDATE%=�
x �read
�cur%+=1
��update
��
�" � icon%=22 � cur%>0 �
�
UPDATE%=�
� �read
�
cur%=0
��update
��
�% � icon%=30 � cur%<tot% �
�
UPDATE%=�
� �read
�
cur%=tot%
�update
�
�
" :
,/ � �User_MousePrint( button%,icon%)
6
@ � icon%=21 �
Jpsurname%=� psurname%
T�sel(psurname%,icon%)
^�
h � icon%=22 �
rpothers%=� pothers%
|�sel(pothers%,icon%)
��
� � icon%=23 �
�padd%=� padd%
��sel(padd%,icon%)
��
� � icon%=24 �
�ppostcode%=� ppostcode%
��sel(ppostcode%,icon%)
��
� � icon%=25 �
�parea%=� parea%
��sel(parea%,icon%)
��
� icon%=26 �
ptel%=� ptel%
�sel(ptel%,icon%)
&�
0 � icon%=27 �
:pnts%=� pnts%
D�sel(pnts%,icon%)
N�
X
b
l% � icon%=17 � DRIVER%=� �
vX� psurname%=� � pothers%=� � padd%=� � ppostcode%=� � parea%=� � ptel%=� � pnts%=� �
�
�print
��
�T�Wimp_WindowAlert("Error from !ADRBook","Please select at least one print data")
��
��
�� � icon%=10 � �Wimp_WindowClose(Print_Window%):�Wimp_WindowBringToTop(Main_Window%):WIN$="MAIN":�Wimp_IconCaret(Main_Window%,4,�(�Wimp_IconText(Main_Window%,4)))
�5 � icon%=30 � pcur%>0 � pcur%-=1:�updatep
�: � icon%=31 � pcur%<tot%-1 � pcur%+=1:�updatep
�_ � icon%=7 � icon%=13 � icon%=16 � icon%=33 � �Wimp_SelectIcon(Print_Window%,icon%)
�# � icon%=7 � psel%<>1 �
�I�Wimp_IconCaret(Print_Window%,12,�(�Wimp_IconText(Print_Window%,12)))
�
�dalbe
�psel%=1
�able
�
$ � icon%=13 � psel%<>2 �
I�Wimp_IconCaret(Print_Window%,14,�(�Wimp_IconText(Print_Window%,14)))
*
�dalbe
4psel%=2
> �able
H�
R$ � icon%=16 � psel%<>3 �
\!ș "Wimp_SetCaretPosition",-1
f
�dalbe
ppsel%=3
z �able
��
�$ � icon%=33 � psel%<>4 �
�!ș "Wimp_SetCaretPosition",-1
�
�dalbe
�psel%=4
� �able
��
�
� �
� :
�0 � �Event_KeyPress(window%,icon%,key%)
� Ȏ window% �
�E � Main_Window% : �User_KeyPressMain( icon%,key%)
F � Print_Window% : �User_KeyPressPrint( icon%,key%)
�
�
$ :
.. � �User_KeyPressMain( icon%,key%)
80� key%=13 � icon%<12 � key%=398 � icon%<12 �
B.a%=�(�Wimp_IconText(Main_Window%,icon%+1))
L,�Wimp_IconCaret(Main_Window%,icon%+1,a%)
V�
`0� key%=13 � icon%=12 � key%=398 � icon%=12 �
j� cur%=tot% �
t�User_MouseMain( 4,27)
~�
��User_MouseMain( 4,29)
��
��
�� key%=399 � icon%>4 �
�.a%=�(�Wimp_IconText(Main_Window%,icon%-1))
�,�Wimp_IconCaret(Main_Window%,icon%-1,a%)
��
�� key%=399 � icon%=4 �
�)a%=�(�Wimp_IconText(Main_Window%,12))
�'�Wimp_IconCaret(Main_Window%,12,a%)
��
� �
:
/ � �User_KeyPressPrint( icon%,key%)
�
:
(% � �Event_MenuChoice(menu%)
2 Ȏ menu% �
<< � Bar_Menu% : �User_MenuChoiceBar
F= � Main_Menu% : �User_MenuChoiceMain
P> � Title_Menu% : �User_MenuChoiceTitle
Z> � Print_Menu% : �User_MenuChoicePrint
d< � Set_Menu% : �User_MenuChoiceSet
n@ � Search2_Menu% : �User_MenuChoiceSearch2
x
�
� �
� :
� � �User_MenuChoiceBar
�$ Ȏ �Wimp_MenuChoice(0) �
� � 1 :
� � 3 :� UPDATE%=� �
�D�Wimp_IconPutText(Close_Window%,0,"This file has been modified")
�)�Wimp_WindowBringToTop(Close_Window%)
��mousebox(Close_Window%)
��
�� UPDATE%=� � finished%=�
�
�
� �
:
" � �User_MenuChoiceTitle
$ Ȏ �Wimp_MenuChoice(0) �
"; � 1 : �Event_MouseClick(Title_Window%,6,4,0,0)
,; � 2 : �Event_MouseClick(Title_Window%,7,4,0,0)
6
�
@ �
J :
T$ � �User_MenuChoiceSearch2
^$ Ȏ �Wimp_MenuChoice(0) �
h= � 1 : �Event_MouseClick(Search2_Window%,2,4,0,0)
r= � 2 : �Event_MouseClick(Search2_Window%,3,4,0,0)
|
�
� �
� :
�" � �User_MenuChoicePrint
�$ Ȏ �Wimp_MenuChoice(0) �
�< � 1 : �Event_MouseClick(Print_Window%,10,4,0,0)
�< � 2 : �Event_MouseClick(Print_Window%,17,4,0,0)
�
�
� � :
� � �User_MenuChoiceSet
�$ Ȏ �Wimp_MenuChoice(0) �
�9 � 1 : �Event_MouseClick(Set_Window%,2,4,0,0)
�9 � 2 : �Event_MouseClick(Set_Window%,3,4,0,0)
�
�
�
:
! � �User_MenuChoiceMain
&$ Ȏ �Wimp_MenuChoice(0) �
0; � 1 : �Event_MouseClick(Main_Window%,21,4,0,0)
:Z � 2 : �Event_MouseClick(Main_Window%,22,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
DZ � 3 : �Event_MouseClick(Main_Window%,23,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
NZ � 4 : �Event_MouseClick(Main_Window%,24,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
XZ � 5 : �Event_MouseClick(Main_Window%,33,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
b; � 6 : �Event_MouseClick(Main_Window%,25,4,0,0)
lZ � 7 : �Event_MouseClick(Main_Window%,26,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
vZ � 8 : �Event_MouseClick(Main_Window%,27,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
�; � 9 : �Event_MouseClick(Main_Window%,28,4,0,0)
�[ � 10 : �Event_MouseClick(Main_Window%,29,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
�[ � 11 : �Event_MouseClick(Main_Window%,30,4,0,0):�Wimp_MenuAdjustOn(Main_Menu%)
�
�
� �
� :
�) � �Event_LoadFile(file$,type$)
� � type$="FBF" �
�
UPDATE%=�
�+�Wimp_IconPutText(Save_Window%,1,file$)
�
cur%=0
�X%=�(file$)
�� #X%,tot%
� A=0 � tot%
� #X%,SURNAME$(A)
� #X%,OTHERS$(A)
� #X%,ADD1$(A)
*� #X%,ADD2$(A)
4� #X%,ADD3$(A)
>� #X%,POSTCODE$(A)
H� #X%,AREA$(A)
R� #X%,TEL$(A)
\� #X%,NTS$(A)
f�A
p � #X%
z� WIN$<>"NONE" �
�3� WIN$="MAIN" � �Wimp_WindowClose(Main_Window%)
�5� WIN$="PRINT" � �Wimp_WindowClose(Print_Window%)
�4� WIN$="SEARCH" � �Wimp_WindowClose(Set_Window%)
��
�;� WIN$<>"TITLE" � �Wimp_WindowBringToTop(Title_Window%)
��menuupdate
� �
� �
� :
�+ � �Event_SaveFile(file$,window%)
� Ȏ window% �
�' � Save_Window% :
�� �
� � � �error
� DOSAVE%=� �
X%=�(file$)
$ � #X%,tot%
. � A=0 � tot%
8 � #X%,SURNAME$(A)
B � #X%,OTHERS$(A)
L � #X%,ADD1$(A)
V � #X%,ADD2$(A)
` � #X%,ADD3$(A)
j � #X%,POSTCODE$(A)
t � #X%,AREA$(A)
~ � #X%,TEL$(A)
� � #X%,NTS$(A)
� �A
� � #X%
� �("SETTYPE "+file$+" FBF")
� �Wimp_MenuClose
� UPDATE%=�
��
�
�& � Save2_Window% :
�� �
�� � � �error
�� DOSAVE%=� �
�Wimp_MenuClose
� WIN$="MAIN" � �read
�("SPOOL "+file$)
� A=0 � tot%
(0 � SURNAME$(A)<>"" � � SURNAME$(A)+�(10);
2. � OTHERS$(A)<>"" � � OTHERS$(A)+�(10);
<* � ADD1$(A)<>"" � � ADD1$(A)+�(10);
F* � ADD2$(A)<>"" � � ADD2$(A)+�(10);
P* � ADD3$(A)<>"" � � ADD3$(A)+�(10);
Z2 � POSTCODE$(A)<>"" � � POSTCODE$(A)+�(10);
d* � AREA$(A)<>"" � � AREA$(A)+�(10);
n( � TEL$(A)<>"" � � TEL$(A)+�(10);
x( � NTS$(A)<>"" � � NTS$(A)+�(10);
� � �(10);
� � A
� �("SPOOL")
� �("SETTYPE "+file$+" FFF")
� �6
� � file$="<Wimp$Scrap>" �
� �Wimp_SendToEdit(file$)
�/ �Wimp_IconPutText(Save2_Window%,1,ACE$)
� �
��
� �
�� DOSAVE%=� � DOSAVE%=�
� �
:
I� *******************************************************************
:
"(� �Wimp_WindowAlert(title$,message$)
,+�Wimp_WindowAlertBox(title$,message$,0)
6�
@:
J3� �Wimp_WindowAlertBox(title$,message$,button%)
T� response%
^$(wimp%+4)=message$
hȎ button% �
r � 2 : response%=1
| � 1 : response%=15
�! � 3 : response%=(1<<5)+16
�! � 4 : response%=(1<<6)+16
� : response%=16
��
�=ș "Wimp_ReportError",wimp%,response%,title$ � ,response%
��
�:
�)� �Wimp_WindowCancel(title$,message$)
�$(wimp%+4)=message$
�response%=23
�=ș "Wimp_ReportError",wimp%,response%,title$ � ,response%
�=response%-2
�:
+� �Wimp_WindowErrorBox(title$,message$)
+�Wimp_WindowAlertBox(title$,message$,2)
�
&:
0 � �Wimp_WindowTitle(window%)
:wimp%!0=window%
D ș "Wimp_GetWindInfo",,wimp%
N6� ((wimp%!60)�&100)=0 � 1,"Title isn't indirected"
X=$(wimp%!76)
b:
l� �Wimp_WindowLoad(window$)
v9=�Wimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
�:
�-� �Wimp_WindowLoadFrom(window$,template$)
�� c%,i%,n%,j%,sp$,sp2$
�%ș "Wimp_OpenTemplate",,template$
�Mș "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,-1,window$,0 � ,,icons%
�Ȏ sprites% �
� � 1 : wimp%!64=sprites%
�) : wimp%!64=�Event_Sprites(window%)
��
�&ș "Wimp_CreateWindow",,wimp% � c%
�ș "Wimp_CloseTemplate"
�7ș "Wimp_WhichIcon",c%,wimp%+40,1+2+(1<<8),2+(1<<8)
�Ȏ wimp%!40 �
� -1 :
: i%=40
�
$ wimp%!4=wimp%!i% : wimp%!0=c%
*$ ș "Wimp_GetIconState",,wimp%
4- sp$=�Wimp_GetStringAtAddress(wimp%!28)
>" ș "Wimp_DeleteIcon",,wimp%
H Ȏ sprites% �
R � 1 : wimp%!32=1
\ :
f/ ș "OS_SpriteOp",&108,sprites% � ,,,n%
p
j%=0
z � : j%+=1
�= ș "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
�7 sp2$=�Wimp_GetStringAtAddress(pointer_block%)
� � j%=n% � sp$=sp2$
�4 � sp$=sp2$ � wimp%!32=sprites% � wimp%!32=1
� �
� wimp%!4=c%
�. ș "Wimp_CreateIcon",,wimp%+4 � handle%
� i%+=4
� � (wimp%!i%)=-1
��
�=c%
�:
�%� �Wimp_WindowBringToTop(window%)
!wimp%=window%
#ș "Wimp_GetWindowState",,wimp%
wimp%!28=-1
$ș "Wimp_OpenWindow",,wimp%
.�
8:
B � �Wimp_WindowClose(window%)
L!wimp%=window%
V ș "Wimp_CloseWindow",,wimp%
`�
j:
t$� �Wimp_WindowForceDraw(window%)
~Ȏ window% �
�8 � -1 : ș "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
�9 : ș "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
��
��
�:
�� �Wimp_WindowOpen(window%)
�!wimp%=window%
�#ș "Wimp_GetWindowState",,wimp%
�ș "Wimp_OpenWindow",,wimp%
��
�:
��Wimp_WindowInterface
ș"Wimp_BorderWindow",,wimp%
�
:
I� *******************************************************************
(:
2%� �Wimp_IconUpdate(window%,icon%)
<wimp%!0=window%
Fwimp%!4=icon%
P
wimp%!8=0
Zwimp%!12=0
d!ș "Wimp_SetIconState",,wimp%
n�
x:
�0� �Wimp_SetIconSprite(window%,icon%,sprite$)
�wimp%!0=window%
�wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�$wimp%!32="S"+sprite$
�wimp%!0=window%
�
wimp%!8=0
�wimp%!12=0
�!ș "Wimp_SetIconState",,wimp%
��
�:
�� �Wimp_IconBar(Sprite$)
�� icon%
wimp%!0=-1
wimp%!4=0 : wimp%!8=0
wimp%!12=68 : wimp%!16=68
"wimp%!20=&3002
,$(wimp%+24)=Sprite$
6'ș "Wimp_CreateIcon",,wimp% � icon%
@
=icon%
J:
T+� �Wimp_IconCaret(window%,icon%,chars%)
^8ș "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
h�
r:
|#� �Wimp_IconText(window%,icon%)
�#wimp%!0=window% : wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
�=$(wimp%!28)
�:
�)� �Wimp_IconValidation(window%,icon%)
�#wimp%!0=window% : wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
�=$(wimp%!32)
�:
�&� �Wimp_IconDisable(window%,icon%)
�#wimp%!0=window% : wimp%!4=icon%
$wimp%!8=1<<22 : wimp%!12=1<<22
!ș "Wimp_SetIconState",,wimp%
�
&:
0%� �Wimp_IconEnable(window%,icon%)
:#wimp%!0=window% : wimp%!4=icon%
D$wimp%!8=0 : wimp%!12=1<<22
N!ș "Wimp_SetIconState",,wimp%
X�
b:
l0� �Wimp_IconPutSprite(window%,icon%,sprite$)
v!wimp%!0=window%:wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�ș "Wimp_DeleteIcon",,wimp%
�=wimp%!4=wimp%!8 : wimp%!8=wimp%!12 : wimp%!12=wimp%!16
�?wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$
�'ș "Wimp_CreateIcon",,wimp% � icon%
�
=icon%
�:
�,� �Wimp_IconPutText(window%,icon%,text$)
�#wimp%!0=window% : wimp%!4=icon%
�!ș "Wimp_GetIconState",,wimp%
�7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
�$(wimp%!28)=text$
�#wimp%!0=window% : wimp%!4=icon%
!wimp%!8=0 : wimp%!12=0
!!ș "Wimp_SetIconState",,wimp%
!�
! :
!*� �Wimp_IconInterfaceStart
!4ș"Wimp_BorderIcon",,wimp%
!>�
!H:
!R� �Wimp_IconInterfaceFinish
!\
wimp%!8=0
!fș"Wimp_BorderIcon",,wimp%
!p�
!z:
!�I� *******************************************************************
!�:
!�� �Wimp_MenuAdjustOn(menu%)
!�,ș "Wimp_GetPointerInfo",,pointer_block%
!�^� ((pointer_block%!8)�1)=1 � ș "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4
!��
!�:
!�� �Wimp_MenuChoice(level%)
!�=(wimp%!(4*level%))+1
!�:
!�� �Wimp_MenuCreate(menu$)
!�)� menu$="Colours" �=�Wimp_MenuColours
!�'� menu%,index%,width%,length%,k%,s%
".� menu% 28+�Wimp_MenuNoOfEntries(menu$)*24
"7menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
"+menu%!16=140 : menu%!20=44 : menu%!24=0
"$index%=menu%+28
". $menu%=�menu$,�menu$,"\")-1)
"8#width%=�(�menu$,�menu$,"\")-1))
"B$menu$+="\" : Menu_NoOfEntries%=0
"Lȕ menu$<>""
"Vmenu$=�menu$,�menu$,"\")+1)
"`Ȏ menu$ �
"j � ""
"t :
"~1 !index%=0 : index%!4=-1 : index%!8=&7000021
"� length%=�menu$,"\")-1
"� k%=��menu$,length%),">")
"�
Ȏ k% �
"�
� 0
"�
"�% s%=�(�menu$,k%+1,length%-k%))
"� index%!4=s%
"� length%=k%-1
"� �
"�" $(index%+12)=�menu$,length%)
"�' � length%>width% � width%=length%
"� index%+=24
# �
#
�
#menu%!16=16*(width%+1)
#(index%!-24=index%!-24 � &80 : =menu%
#(:
#2� �Wimp_MenuColours
#<!=�Wimp_MenuCreateColours(" ")
#F:
#P%� �Wimp_MenuCreateColours(title$)
#Z� x$,men%,j%,i%
#d6x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
#nmen%=�Wimp_MenuCreate(x$)
#x� i%=0 � 15
#�
Ȏ � �
#�(� i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
#� : j%=0
#��
#�men%?(39+i%*24)=i%*16+j%
#��Wimp_MenuCentre(men%,i%+1)
#��
#� =men%
#�:
#�"� �Wimp_MenuNoOfEntries(menu$)
#�� n% ,j% : n%=0 : j%=0
#��
#�j%=�menu$,"\",j%+1)
$� j%<>0 � n%+=1
$
� j%=0
$=n%
$":
$,5� �Wimp_MenuBackGroundColour(menu%,item%,colour%)
$6� fore%,i%
$@&fore%=(menu%?(39+(item%-1)*24))�16
$J(i%=((menu%?(39+(item%-1)*24))�16)�16
$T/menu%?(39+(item%-1)*24)=fore%+16*colour%+i%
$^�
$h:
$r#� �Wimp_MenuCentre(menu%,item%)
$|:menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<3)
$��
$�:
$�� �Wimp_MenuClose
$�ș "Wimp_CreateMenu",-1
$��
$�:
$�$� �Wimp_MenuDisable(menu%,item%)
$�;menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<22)
$��
$�:
$�'� �Wimp_MenuDottedLine(menu%,item%)
$�7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�2
$��
%:
%#� �Wimp_MenuEnable(menu%,item%)
%"�Wimp_MenuDisable(menu%,item%)
%&;menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<22)
%0�
%::
%D5� �Wimp_MenuForegroundColour(menu%,item%,colour%)
%NEmenu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))�16)
%X�
%b:
%l)� �Wimp_MenuGlue(menu1%,item%,menu2%)
%vmenu1%!(8+item%*24)=menu2%
%��
%�:
%�'� �Wimp_MenuItem(menu%,item%,item$)
%�,$(menu%+(40+(item%-1)*24))=�item$,12)+�0
%��
%�:
%�$� �Wimp_MenuMessage(menu%,item%)
%�<menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�(1<<3)
%��
%�:
%�"� �Wimp_MenuPopUp(Menu%,x%,y%)
%�
� SA%=� �
%�menu%=Menu%
&+ș "Wimp_CreateMenu",,menu%,x%-64,y%+20
&�
&�
& :
&*� �Wimp_MenuPopUpBar(x%,y%)
&4� n% : n%=0
&>+ȕ ((Bar_Menu%!(28+n%*24))�%10000000)=0
&H n%+=1
&R�
&\2ș "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
&fmenu%=Bar_Menu%
&p�
&z:
&�!� �Wimp_MenuTick(menu%,item%)
&�7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�1
&��
&�:
&�#� �Wimp_MenuTitle(menu%,title$)
&�$menu%=�title$,12)+�0
&��
&�:
&�=� �Wimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%)
&�7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�4
&�8menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�&100
&�#menu%!(40+(item%-1)*24)=buffer%
&� menu%!(44+(item%-1)*24)=val%
')menu%!(48+(item%-1)*24)=BufferLength%
'�
':
'$I� *******************************************************************
'.:
'8%� �Wimp_SelectIcon(window%,icon%)
'Bwimp%!0=window%
'Lwimp%!4=icon%
'V#wimp%!8=%1000000000000000000000
'`$wimp%!12=%1000000000000000000000
'jș&400CD,,wimp%
't�
'~:
'�'� �Wimp_UnselectIcon(window%,icon%)
'�wimp%!0=window%
'�wimp%!4=icon%
'�
wimp%!8=0
'�$wimp%!12=%1000000000000000000000
'�ș&400CD,,wimp%
'��
'�:
'�� �Wimp_SpritesLoad
'�/�Wimp_SpritesPathLoad("<Obey$Dir>.Sprites")
'�direct_sprites%=sprites%
'��
( :
(
&� �Wimp_SpritesPathLoad(pathname$)
(
�S%,T%
(,S%=�"<Obey$Dir>.Sprites":T%=�#S%+16:�#S%
((�sprites%T%,spname%12
(2!sprites%=T%:sprites%!8=0
(<!ș"OS_SpriteOp",&109,sprites%
(F+ș"OS_SpriteOp",&10A,sprites%,pathname$
(P�
(Z:
(dI� *******************************************************************
(n:
(x� �Wimp_FileType(type%)
(�Ȏtype%�
(��&FFF:="Text"
(��&FFD:="Data"
(��&FFB:="Basic"
(��&FF9:="Sprite"
(��&FED:="Palette"
(��&FEC:="Template"
(��&AFF:="Draw"
(��&1000:="Folder"
(��&2000:="Application"
(�=�~(type%)
(��
(�:
)� �Wimp_GetFilePathName
)'=�Wimp_GetStringAtAddress(wimp%+44)
):
)"� �Wimp_FileLoad(pathname$)
),�S%,T%,file%
)6S%=�pathname$
)@T%=�#S%+16
)J�#S%
)T�file%T%
)^"�("LOAD"+pathname$+""+�~file%)
)h
=file%
)r;
)|&� �Wimp_GetStringAtAddress(array%)
)�
�s$:s$=""
)�<ȕ(?array%<>13)�(?array%<>0):s$+=�(?array%):array%+=1:�:
)�=s$
)�:
)�#� �Wimp_GetFileFromPathname(f$)
)�Ȏ �f$,".") �
)� � 0 :=f$
)�7 :=�Wimp_GetFileFromPathname(�f$,�(f$)-�f$,".")))
)��
)�:
)�� �Wimp_SendToEdit(file$)
)�� n%
)�wimp%!4=&6CC01C0C
*wimp%!16=5
*wimp%!36=0
*wimp%!40=&FFF
*&$(wimp%+44)=file$+�0
*0n%=�file$+45
*:,� n%�4 � !wimp%=4+(n%>>2)<<2 � !wimp%=n%
*D$ș "Wimp_SendMessage",17,wimp%,0
*N�
*X:
*bI� *******************************************************************
*l:
*v/� �Wimp_Start(TaskName$,wimp_memory%,icon%)
*�%� wimp% wimp_memory%,icons% icon%
*�)� wimp_memory%<256 � wimp_memory%=256
*�icon_memory%=icons%+icon%
*�task$=TaskName$
*�+indirect_sprites%=1 : direct_sprites%=1
*��Wimp_SetEventVariables
*�� � �Wimp_Error:�
*�@ș"Wimp_Initialise",200,&4B534154,TaskName$ � version%,task%
*��
*�:
*�� �Wimp_BASICParameters
*� � com$,param$,I%
*� ș "OS_GetEnv" � com$
+ params$=""
+ I%=�com$," -quit ")
+5 � I% � params$=�com$,�com$," ",I%+�" -quit ")+1)
+ =params$
+*:
+4� �Wimp_SetEventVariables
+>� pointer_block% 20
+Hinterface%=�
+R.null%=1 :draw%=2 : pointer_leaving%=1<<4
+\1pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7
+f&key%=1<<8:menu%=1<<9:scroll%=1<<10
+p@lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18)
+z0recorder%=1<<18:acknowledge%=1<<19:window%=0
+�!sprites%=1:version%=0:task%=0
+�*Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0
+�*x_origin%=0:y_origin%=0:SaveWindow%=-3
+�3message_quit%=0:message_save%=2:message_load%=3
+�!mouse_button%=2:save_event%=0
+� top_line%=0 : bottom_line%=0
+��
+�:
+�� �Wimp_Error
+�
�X$,x%
+� � � �
+�x%=�
+�X$=�$+"atline"+�(x%�10)
,�ErrorMsg%36
,EErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x%
,$(ErrorMsg%+24)="!RunImage"
,$%ș"Wimp_SendMessage",17,ErrorMsg%
,.�Wimp_WindowAlert(task$,X$)
,8�Wimp_CloseDown
,B�
,L:
,V� �Wimp_CloseDown
,`#ș"Wimp_CloseDown",task%,"TASK"
,j�
,t:
,~� �Wimp_Quit
,�finished%=�
,��
,�:
,�#� �Wimp_ReadVariable(Variable$)
,��len%,result%,variable%
,�$wimp%=Variable$
,�3ș"OS_ReadVarVal",wimp%,wimp%+255,255,,3�,,len%
,�wimp%?(len%+255)=13
,�=$(wimp%+255)
,�:
,�I� *******************************************************************
,�:
- � �Wimp_WaitForEvent
-
� mask%,event%
-finished%=�
-mask%=%111000011001
-(�
-2' ș"Wimp_Poll",mask%,wimp% � event%
-< Ȏ event% �
-F
�0 :
-P �1 : �Wimp_PollDrawWindow
-Z& �2 : ș "Wimp_OpenWindow",,wimp%
-d �3 : �Wimp_PollCloseWindow
-n
�4 :
-x
�5 :
-� �6 : �Wimp_PollMouseClick
-� �7 : �Wimp_PollSaveMessage
-� �8 : �Wimp_PollKeyPress
-�# �9 : �Event_MenuChoice(menu%)
-�
�10:
-�
�11:
-�
�12:
-� �17,18: �Wimp_PollMessages
-�
�19:
-� �
-�� finished%
-��
-�:
.� �Wimp_PollDrawWindow
.� more%
.&ș"Wimp_RedrawWindow",,wimp%�more%
."window%=wimp%!0
.,Ax_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24
.6ȕmore%
.@0 � interface% � ș"Wimp_BorderWindow",,wimp%
.J- �Event_Draw(window%,x_origin%,y_origin%)
.T' ș"Wimp_GetRectangle",,wimp%�more%
.^�
.h�
.r:
.|� �Wimp_PollCloseWindow
.�% ș "Wimp_GetPointerInfo",,wimp%
.�) window%=wimp%!12 : buttons%=wimp%!8
.�� search%=� �
.�) �Event_WindowClose(window%,buttons%)
.�2 !wimp%=window% : ș "Wimp_CloseWindow",,wimp%
.��
.��
.�:
.�� �Wimp_PollMouseClick
.�J button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
.� Ȏ button% �
.�" �2 : �Wimp_PollMenuPopUp
.�# : Ȏ �Event_Save(window%) �
/, � � : �Wimp_PollMouseSave
/1 � �: �Wimp_PollEventMouseClick
/ �
/& �
/0�
/::
/D� �Wimp_PollMenuPopUp
/N
� SA%=� �
/Xmenu%=�Event_Menu(window%)
/b Ȏ menu% �
/l � �:
/v
:
/� Ȏ window% �
/� � -2 : n%=0
/�3 ȕ ((Bar_Menu%!(28+n%*24))�%10000000)=0
/� n%+=1
/�
�
/�: ș "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*90
/�4 : ș"Wimp_CreateMenu",,menu%,x%-64,y%+20
/�
�
/� �
/��
/��
/�:
/�� �Wimp_PollMouseSave
0 Ȏ icon% �
08 � 0 : � button% � &50 � �Wimp_PollDragBox(window%)
08 � 2 : � button% � 5 � �Wimp_PollSaveFile(window%)
0 �
0*�
04:
0>� �Wimp_PollEventMouseClick
0H. � interface% � ș"Wimp_BorderIcon",,wimp%
0R3 �Event_MouseClick(window%,icon%,button%,x%,y%)
0\ Ȏ interface% �
0f � � :
0p( wimp%!0=x%:wimp%!4=y% : wimp%!8=0
0z( wimp%!12=window% : wimp%!16=icon%
0�! ș"Wimp_BorderIcon",,wimp%
0� �
0��
0�:
0�!� �Wimp_PollSaveFile(window%)
0�
�file$
0�@ wimp%!0=window% : wimp%!4=1 : ș "Wimp_GetIconState",,wimp%
0� file$=$(wimp%!28)
0� Ȏ �file$,".") �
0�
� 0 :
0�� key%=13 �
0�@ $(wimp%+4)="To save, drag the icon to a directory window"
0�+ ș "Wimp_ReportError",wimp%,16,task$
1�
1 :
11 � key%=13 � �Event_SaveFile(file$,window%)
1$ �
1.&� key%=13 � ș"Wimp_CreateMenu",-1
18� SA%=� � �Wimp_CloseDown
1B�
1L:
1V � �Wimp_PollDragBox(window%)
1`
�x%,y%
1j save%=window%
1t !wimp%=window%
1~# ș"Wimp_GetWindowState",,wimp%
1�- x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24
1� wimp%!4=0
1�! ș"Wimp_GetIconState",,wimp%
1� !wimp%=window%
1� wimp%!4=5
1�, wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12
1�. wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20
1� wimp%!24=0:wimp%!28=0
1�* wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
1� ș"Wimp_DragBox",,wimp%
1��
1�:
2 � �Wimp_PollKeyPress
2
1 window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
2 Ȏ �Event_Save(window%) �
2( � � : �Wimp_PollSaveFile(window%)
2(/ � �: �Event_KeyPress(window%,icon%,key%)
22 �
2<�
2F:
2P� �Wimp_PollSaveMessage
2Z�file$,window%,icon%,x%,y%
2d# ș"Wimp_GetPointerInfo",,wimp%
2n: window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
2x> wimp%!0=save% : wimp%!4=1 : ș "Wimp_GetIconState",,wimp%
2� file$=$(wimp%!28)
2�+ file$=�Wimp_GetFileFromPathname(file$)
2�ACE$=file$
2� wimp%!20=window%
2� wimp%!24=icon%
2� wimp%!28=x%:wimp%!32=y%
2� wimp%!36=length%
2� wimp%!0=64
2� wimp%!12=0
2� wimp%!16=1
2� wimp%!40=&FFF
2� $(wimp%+44)=file$
2�4 ș"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
3�
3:
3� �Wimp_PollMessages
3"� file$
3,,file$=�Wimp_GetStringAtAddress(wimp%+44)
36 Ȏ wimp%!16 �
3@ � 0 : finished%=�
3J � 1 :
3T � 2 :
3^/ � PROCWimp_IconPutText(save%,1,file$)
3hC wimp%!0=save% : wimp%!4=1 : ș "Wimp_GetIconState",,wimp%
3r $(wimp%!28)=file$
3|< wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0
3�' ș "Wimp_SetIconState",,wimp%
3�0 � PROCWimp_IconCaret(save%,1,LENfile$)
3�8 ș "Wimp_SetCaretPosition",save%,1,,,-1,�file$
3�& �Event_SaveFile(file$,save%)
3�� SA%=� � �Wimp_CloseDown
3� � 3
3�G type$=�Wimp_FileType(wimp%!40) : �Event_LoadFile(file$,type$)
3� � 5 :
3�!� wimp%!40=&FBF � event%=18 �
3�wimp%!12=wimp%!8
3�+ș"XWimp_SendMessage",17,wimp%,wimp%!20
3�file$=�Wimp_GetFilePathName
3�type$=�Wimp_FileType(&FBF)
4 �Event_LoadFile(file$,type$)
4�
4 � &502
4&hw%=wimp%!32
40hi%=wimp%!36
4:�� hw%=-2 � �sendhelp(wimp%,"This is the !ADRBook icon.|MProgram written by Julian Samphire 1993.|MClick on icon to open the Address Book.|M")
4DȎ hw% �
4N� Save_Window%
4X\� hi%=0 � �sendhelp(wimp%,"Drag this icon onto a filer window to save the address data")
4bd� hi%=1 � �sendhelp(wimp%,"Enter the file name here that you want to save the address data as.")
4lE� hi%=2 � �sendhelp(wimp%,"Click here to save the address data.")
4v� Save2_Window%
4�T� hi%=0 � �sendhelp(wimp%,"Drag this icon onto a filer window to save the text")
4�\� hi%=1 � �sendhelp(wimp%,"Enter the file name here that you want to save the text as.")
4�=� hi%=2 � �sendhelp(wimp%,"Click here to save the text.")
4�� Info_Window%
4��� hi%=0 � hi%=1 � hi%=2 � hi%=3 � hi%=4 � hi%=5 � hi%=6 � hi%=7 � hi%=8 � hi%=9 � �sendhelp(wimp%,"Name : ADRBook|MPurpose : Store addresses and numbers|MAuthor : Julian Samphire|MVersion : 1.06 (11-Aug-93)")
4�� Search2_Window%
4�N� hi%=2 � �sendhelp(wimp%,"Click here to search using search parameters.")
4�=� hi%=3 � �sendhelp(wimp%,"Click here to cancel search.")
4�� Set_Window%
4�B� hi%=2 � �sendhelp(wimp%,"Click here to turn back the page.")
4�W� hi%=3 � �sendhelp(wimp%,"Click here to start searching using search papameters.")
4�?� hi%=0 � �sendhelp(wimp%,"Click here to hilight Surname.")
4�C� hi%=4 � �sendhelp(wimp%,"Click here to hilight Other Names.")
5?� hi%=6 � �sendhelp(wimp%,"Click here to hilight Address.")
5B� hi%=10 � �sendhelp(wimp%,"Click here to hilight Post Code.")
5B� hi%=12 � �sendhelp(wimp%,"Click here to hilight Area Code.")
5 I� hi%=14 � �sendhelp(wimp%,"Click here to hilight Telephone Number.")
5*>� hi%=16 � �sendhelp(wimp%,"Click here to hilight Notes.")
548� hi%=1 � �sendhelp(wimp%,"Enter the surname here.")
5><� hi%=5 � �sendhelp(wimp%,"Enter the other names here.")
5H?� hi%=7 � �sendhelp(wimp%,"Enter the address line 1 here.")
5R?� hi%=8 � �sendhelp(wimp%,"Enter the address line 2 here.")
5\?� hi%=9 � �sendhelp(wimp%,"Enter the address line 3 here.")
5f;� hi%=11 � �sendhelp(wimp%,"Enter the post code here.")
5p;� hi%=13 � �sendhelp(wimp%,"Enter the area code here.")
5zB� hi%=15 � �sendhelp(wimp%,"Enter the telephone number here.")
5�7� hi%=17 � �sendhelp(wimp%,"Enter the notes here.")
5�� Main_Window%
5�`� hi%=4 � �sendhelp(wimp%,"Surname icon.|MEnter the persons Surname here.|M"+SURNAME$(cur%))
5�b� hi%=5 � �sendhelp(wimp%,"Others icon.|MEnter the persons Other names here.|M"+OTHERS$(cur%))
5��� hi%=6 � hi%=7 � hi%=8 � �sendhelp(wimp%,"Address icons.|MEnter the persons Address here.|M"+ADD1$(cur%)+" "+ADD2$(cur%)+" "+ADD3$(cur%))
5�e� hi%=9 � �sendhelp(wimp%,"Post Code icon.|MEnter the persons Post Code here.|M"+POSTCODE$(cur%))
5�b� hi%=10 � �sendhelp(wimp%,"Area Code icon.|MEnter the persons Area Code here.|M"+AREA$(cur%))
5�o� hi%=11 � �sendhelp(wimp%,"Telephone Number icon.|MEnter the persons Telephone Number here.|M"+TEL$(cur%))
5�_� hi%=12 � �sendhelp(wimp%,"Notes icon.|MEnter the notes on the person here.|M"+NTS$(cur%))
5�C� hi%=21 � �sendhelp(wimp%,"Click here to turn back the page.")
5�G� hi%=22 � �sendhelp(wimp%,"Click here to go to the first record.")
5�A� hi%=23 � �sendhelp(wimp%,"Click here to go back a record.")
5�@� hi%=24 � �sendhelp(wimp%,"Click here to dial the number.")
6A� hi%=33 � �sendhelp(wimp%,"Click here to sort the records.")
6H� hi%=25 � �sendhelp(wimp%,"Click here to set the search criteria.")
6J� hi%=26 � �sendhelp(wimp%,"Click here to delete the current record.")
6$=� hi%=27 � �sendhelp(wimp%,"Click here to add a record.")
6.E� hi%=28 � �sendhelp(wimp%,"Click here to go to the print page.")
68D� hi%=29 � �sendhelp(wimp%,"Click here to go forward a record.")
6BF� hi%=30 � �sendhelp(wimp%,"Click here to go to the last record.")
6L�� hi%=19 � hi%=20 � �sendhelp(wimp%,"This shows the ammount of records and current record.|MTotal records = "+�(tot%)+"|MCurrent record = "+�(cur%+1))
6V� Title_Window%
6`z� hi%=2 � hi%=3 � hi%=4 � hi%=5 � hi%=8 � �sendhelp(wimp%,"Address Book|MBy Julian Samphire|M� Archimedes World 1993")
6jF� hi%=6 � �sendhelp(wimp%,"Click here to close the address book.")
6tB� hi%=7 � �sendhelp(wimp%,"Click here to turn over the page.")
6~� Print_Window%
6�a� hi%=7 � hi%=13 � hi%=16 � hi%=33 � �sendhelp(wimp%,"Click here for specified print range.")
6��� hi%=28 � hi%=29 � �sendhelp(wimp%,"This shows the current name of the person to be printed.|M"+SURNAME$(pcur%)+"|M"+OTHERS$(pcur%))
6�J� hi%=30 � �sendhelp(wimp%,"Click here to go to the previous person.")
6�F� hi%=31 � �sendhelp(wimp%,"Click here to go to the next person.")
6�C� hi%=10 � �sendhelp(wimp%,"Click here to turn back the page.")
6�D� hi%=17 � �sendhelp(wimp%,"Click here to print selected data.")
6�<� hi%=21 � �sendhelp(wimp%,"Click here to set Surname.")
6�@� hi%=22 � �sendhelp(wimp%,"Click here to set Other Names.")
6�<� hi%=23 � �sendhelp(wimp%,"Click here to set Address.")
6�>� hi%=24 � �sendhelp(wimp%,"Click here to set Post Code.")
6�>� hi%=25 � �sendhelp(wimp%,"Click here to set Area Code.")
6�E� hi%=26 � �sendhelp(wimp%,"Click here to set Telephone Number.")
7 :� hi%=27 � �sendhelp(wimp%,"Click here to set Notes.")
7
�
7 �
7�
7(:
72&� �Wimp_GetStringAtAddress(array%)
7<
�s$:s$=""
7F<ȕ(?array%<>13)�(?array%<>0):s$+=�(?array%):array%+=1:�:
7P=s$
7Z:
7d#� �Wimp_GetFileFromPathname(f$)
7nȎ �f$,".") �
7x � 0 :=f$
7�7 :=�Wimp_GetFileFromPathname(�f$,�(f$)-�f$,".")))
7��
7�:
7�� �Wimp_FileType(type%)
7�Ȏtype%�
7��&FFF:="Text"
7��&FFD:="Data"
7��&FFB:="Basic"
7��&FF9:="Sprite"
7��&FED:="Palette"
7��&FEC:="Template"
7��&AFF:="Draw"
7��&1000:="Folder"
8�&2000:="Application"
8=�~(type%)
8�
8":
8,� �read
86� cur%<tot% � icon%=27 �
8@1SURNAME$(cur%)=�Wimp_IconText(Main_Window%,4)
8J*SURNAME$(cur%)=�Change(SURNAME$(cur%))
8T0OTHERS$(cur%)=�Wimp_IconText(Main_Window%,5)
8^(OTHERS$(cur%)=�Change(OTHERS$(cur%))
8h.ADD1$(cur%)=�Wimp_IconText(Main_Window%,6)
8r.ADD2$(cur%)=�Wimp_IconText(Main_Window%,7)
8|.ADD3$(cur%)=�Wimp_IconText(Main_Window%,8)
8�$ADD1$(cur%)=�Change(ADD1$(cur%))
8�$ADD2$(cur%)=�Change(ADD2$(cur%))
8�$ADD3$(cur%)=�Change(ADD3$(cur%))
8�2POSTCODE$(cur%)=�Wimp_IconText(Main_Window%,9)
8�/AREA$(cur%)=�Wimp_IconText(Main_Window%,10)
8�.TEL$(cur%)=�Wimp_IconText(Main_Window%,11)
8�.NTS$(cur%)=�Wimp_IconText(Main_Window%,12)
8�"NTS$(cur%)=�Change(NTS$(cur%))
8��
8��
8�:
8�
� �update
8��menuupdate
9%�Wimp_IconUpdate(Main_Window%,20)
94�Wimp_IconPutText(Main_Window%,4,SURNAME$(cur%))
93�Wimp_IconPutText(Main_Window%,5,OTHERS$(cur%))
9&1�Wimp_IconPutText(Main_Window%,6,ADD1$(cur%))
901�Wimp_IconPutText(Main_Window%,7,ADD2$(cur%))
9:1�Wimp_IconPutText(Main_Window%,8,ADD3$(cur%))
9D5�Wimp_IconPutText(Main_Window%,9,POSTCODE$(cur%))
9Nm� AREA$(cur%)="" � �Wimp_IconPutText(Main_Window%,10,"") � �Wimp_IconPutText(Main_Window%,10,AREA$(cur%))
9Xk� TEL$(cur%)="" � �Wimp_IconPutText(Main_Window%,11,"") � �Wimp_IconPutText(Main_Window%,11,TEL$(cur%))
9b1�Wimp_IconPutText(Main_Window%,12,NTS$(cur%))
9lE�Wimp_IconCaret(Main_Window%,4,�(�Wimp_IconText(Main_Window%,4)))
9v�
9�:
9�
� �delete
9�� A=cur% � tot%
9�SURNAME$(A)=SURNAME$(A+1)
9�OTHERS$(A)=OTHERS$(A+1)
9�ADD1$(A)=ADD1$(A+1)
9�ADD2$(A)=ADD2$(A+1)
9�ADD3$(A)=ADD3$(A+1)
9�POSTCODE$(A)=POSTCODE$(A+1)
9�AREA$(A)=AREA$(A+1)
9�TEL$(A)=TEL$(A+1)
9�NTS$(A)=NTS$(A+1)
9��A
:tot%-=1
:�
::
: � �menuupdate
:*� tot%=0 �
:4"�Wimp_MenuDisable(Bar_Menu%,2)
:>$�Wimp_MenuDisable(Title_Menu%,3)
:H$�Wimp_MenuDisable(Main_Menu%,12)
:R�
:\!�Wimp_MenuEnable(Bar_Menu%,2)
:f#�Wimp_MenuEnable(Title_Menu%,3)
:p#�Wimp_MenuEnable(Main_Menu%,12)
:z�
:��
:�:
:���tonedial(A$)
:��A$="" � �
:�ș"Hourglass_On"
:�Ƞ2
:�ȡ1,"WaveSynth-Beep"
:�ȡ2,"WaveSynth-Beep"
:��I%
:�
�I%=1��A$
:��tone(��A$,I%))
:�
�delay(6)
:��
;ș"Hourglass_Smash"
;�
;:
;$��tone(I%)
;.
I%-=48
;8� I%<0 � I%>9 � �
;B� 1,-15,tone%(I%,0),100
;L� 2,-15,tone%(I%,1),100
;V�delay(10)
;`
� 1,0,0,0
;j
� 2,0,0,0
;t�
;~:
;���delay(I%)
;��T%
;�T%=�
;�
���>T%+I%
;��
;�:
;�� �updatep
;�7�Wimp_IconPutText(Print_Window%,28,SURNAME$(pcur%))
;�6�Wimp_IconPutText(Print_Window%,29,OTHERS$(pcur%))
;��
;�:
;�� �able
<