Home » Archimedes archive » Archimedes World » AW-1994-06-Disc1.adf » Disk1Jun94 » !AWJune94/Goodies/Trickster/!Trickster/!RunImage
!AWJune94/Goodies/Trickster/!Trickster/!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-06-Disc1.adf » Disk1Jun94 |
| Filename: | !AWJune94/Goodies/Trickster/!Trickster/!RunImage |
| Read OK: | ✔ |
| File size: | C9F1 bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10fileload$=" "
20SYS "OS_GetEnv" TO env$
30IF INSTR(env$," -quit ") THEN
40fileload$=MID$(env$,INSTR(env$,CHR$(34),INSTR(env$,CHR$(34))+1)+1)
50ENDIF
60REM OpSys%=0
70REM SYS "OS_Byte",129,0,&FF TO OpSys%
80REM IF OpSys%=&A1 THEN OSCLI"ERROR Trickster will not work with RISC OS 2. Sorry!!":END
90SYS "OS_GetEnv" TO env$
100IF INSTR(env$," -quit ") THEN
110fileload$=MID$(env$,INSTR(env$,CHR$(34),INSTR(env$,CHR$(34))+1)+1)
120ENDIF
130SYS &00000006,129,0,&FF TO ,os_version%
140CASE os_version% OF
150WHEN &A3,&A4
160dragicons%=TRUE
170OTHERWISE
180dragicons%=FALSE
190ENDCASE
200 PROCWimp_Start("Trickster",3000,2537)
210 PROCUser_SetInitialData
220 PROCCreate_Windows
230 PROCCreate_Menus
240IF fileload$<>" " THEN
250PROCEvent_LoadFile(fileload$,"ACE")
260PROCWimp_IconPutText(Save_Window%,1,fileload$)
270ENDIF
280
290 PROCWimp_WaitForEvent
300 PROCWimp_CloseDown
310 END
320 :
330 DEF PROCUser_SetInitialData
340 DOSAVE%=TRUE
350 Z=0
360 PCHEAT%=TRUE
370 PMODULE%=TRUE
380 TYPE%=TRUE
390 STA%=FALSE
400 DRIVER%=FALSE
410 DIM title% 256
420 SNUM%=-2
430 num=0
440 AAA%=FALSE
450 pos%=0
460 WI$="NONE"
470 SCO%=0
480 dim=200
490 DIM pos%(dim)
500 DIM hacker$(dim,25)
510 DIM name$(dim)
520 DIM info$(dim,7)
530 DIM hack$(dim)
540 DIM hack%(dim)
550 hack%()=FALSE
560 hack$()=""
570 name$()=""
580 info$()=""
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 Save_Window%=FNWimp_WindowLoad("Save")
700 Close_Window%=FNWimp_WindowLoad("Close")
710 Save2_Window%=FNWimp_WindowLoad("Save2")
720 Main_Window%=FNWimp_WindowLoad("Main")
730 Tools_Window%=FNWimp_WindowLoad("Tools")
740 Title_Window%=FNWimp_WindowLoad("Title")
750 Bot_Window%=FNWimp_WindowLoad("Bot")
760 Hacker_Window%=FNWimp_WindowLoad("Hacker")
770 Bar_Icon%=FNWimp_IconBar("!Trickster")
780 ENDPROC
790 :
800 DEF FNEvent_Save(window%)
810 CASE window% OF
820 WHEN Save_Window% :=TRUE
830 WHEN Save2_Window% :=TRUE
840 OTHERWISE :=FALSE
850 ENDCASE
860 =FALSE
870 :
880 DEF FNEvent_Sprites(window%)=sprites%
890 :
900 DEF PROCCreate_Menus
910 save%=FNWimp_MenuCreate("Save\Tricks>Save_Window%\Text>Save2_Window%")
920 menu$="Trickster\Info>Info_Window%\Save>save%\Quit"
930 Bar_Menu%=FNWimp_MenuCreate(menu$)
940 PROCWimp_MenuDisable(Bar_Menu%,2)
950 ENDPROC
960 :
970 DEF FNEvent_Menu(window%)
980 CASE window% OF
990 WHEN Bar_Window% : =Bar_Menu%
1000 WHEN Main_Window%,Tools_Window%,Bot_Window% : =Bar_Menu%
1010 WHEN Title_Window% : =Bar_Menu%
1020 OTHERWISE : =FALSE
1030 ENDCASE
1040 =FALSE
1050 :
1060 DEF PROCEvent_WindowClose(window%,buttons%)
1070 CASE window% OF
1080 WHEN Main_Window%
1090 PROCread
1100 PROCWimp_WindowClose(Bot_Window%)
1110 PROCWimp_WindowClose(Tools_Window%)
1120 WI$="TITLE"
1130 PROCWimp_WindowBringToTop(Title_Window%)
1140 WHEN Title_Window%
1150 WI$="NONE"
1160 ENDCASE
1170 ENDPROC
1180 :
1190 DEF PROCEvent_Draw(window%,x_origin%,y_origin%)
1200 CASE window% OF
1210 WHEN Info_Window% : PROCUser_DrawInfoWindow
1220 WHEN Save_Window% : PROCUser_DrawSaveWindow
1230 WHEN Close_Window% : PROCUser_DrawCloseWindow
1240 WHEN Save2_Window% : PROCUser_DrawSave2Window
1250 WHEN Main_Window% : PROCUser_DrawMainWindow
1260 WHEN Tools_Window% : PROCUser_DrawToolsWindow
1270 WHEN Title_Window% : PROCUser_DrawTitleWindow
1280 WHEN Bot_Window% : PROCUser_DrawBotWindow
1290 WHEN Hacker_Window% : PROCUser_DrawHackerWindow
1300 ENDCASE
1310 ENDPROC
1320 :
1330 DEF PROCUser_DrawInfoWindow
1340 ENDPROC
1350 :
1360 DEF PROCUser_DrawHackerWindow
1370 MOVE x_origin%-7,y_origin%-48
1380 PRINT LEFT$(hacker$(cur%,0),LEN(hacker$(cur%,0))-6)
1390 MOVE x_origin%-7,y_origin%-140
1400 PRINT MID$(hacker$(cur%,1),12,LEN(hacker$(cur%,1))-8)
1410 MOVE x_origin%-7,y_origin%-232
1420 PRINT MID$(hacker$(cur%,2),6,LEN(hacker$(cur%,2)))
1430 FOR A=0 TO pos%(cur%)-4
1440 MOVE x_origin%-7,(y_origin%-324)-(A*32)
1450 PRINT hacker$(cur%,A+3)
1460 NEXTA
1470 ENDPROC
1480 :
1490 DEF PROCUser_DrawSaveWindow
1500 ENDPROC
1510 :
1520 DEF PROCUser_DrawCloseWindow
1530 ENDPROC
1540 :
1550 DEF PROCUser_DrawSave2Window
1560 ENDPROC
1570 :
1580 DEF PROCUser_DrawMainWindow
1590 ENDPROC
1600 :
1610 DEF PROCUser_DrawToolsWindow
1620 ENDPROC
1630 :
1640 DEF PROCUser_DrawTitleWindow
1650 ENDPROC
1660 :
1670 DEF PROCUser_DrawBotWindow
1680 SYS"Wimp_SetColour",1
1690 RECTANGLE FILL (x_origin%+102),y_origin%-702,458,30
1700 SYS"Wimp_SetColour",11
1710 len=458/(tot%+1)
1720 poss=cur%*len
1730 RECTANGLE FILL (x_origin%+102)+poss,y_origin%-702,len,30
1740 ENDPROC
1750 :
1760 DEF PROCEvent_MouseClick(window%,icon%,button%,x%,y%)
1770 CASE window% OF
1780 WHEN Bar_Window% : PROCUser_MouseBar
1790 WHEN Info_Window% : PROCUser_MouseInfo( button%,icon%)
1800 WHEN Close_Window% : PROCUser_MouseClose( button%,icon%)
1810 WHEN Main_Window% : PROCUser_MouseMain( button%,icon%)
1820 WHEN Tools_Window% : PROCUser_MouseTools( button%,icon%)
1830 WHEN Title_Window% : PROCUser_MouseTitle( button%,icon%)
1840 WHEN Bot_Window% : PROCUser_MouseBot( button%,icon%)
1850 ENDCASE
1860 ENDPROC
1870 :
1880 DEF PROCUser_MouseBar
1890 IF WI$="MAIN" AND SA%=FALSE THEN PROCWimp_WindowBringToTop(Main_Window%):PROCWimp_WindowBringToTop(Main_Window%)
1900 IF WI$="TITLE" AND SA%=FALSE THEN PROCWimp_WindowBringToTop(Title_Window%)
1910 IF WI$="NONE" AND SA%=FALSE THEN PROCWimp_WindowBringToTop(Title_Window%):WI$="TITLE"
1920 ENDPROC
1930 :
1940 DEF PROCUser_MouseInfo( button%,icon%)
1950 ENDPROC
1960 :
1970 DEF PROCUser_MouseClose( button%,icon%)
1980 IF icon%=1 THEN
1990SA%=TRUE
2000PROCunbox
2010PROCWimp_WindowClose(Close_Window%)
2020UPDATE%=FALSE
2030PROCWimp_WindowBringToTop(Save_Window%)
2040A$=FNWimp_IconText(Save_Window%,1)
2050PROCWimp_IconCaret(Save_Window%,1,LEN(A$))
2060ENDIF
2070 IF icon%=2 THEN
2080PROCunbox
2090UPDATE%=FALSE
2100PROCWimp_WindowClose(Close_Window%)
2110CD%=TRUE
2120ENDIF
2130 IF icon%=3 THEN
2140PROCunbox
2150PROCWimp_WindowClose(Close_Window%)
2160ENDIF
2170IF CD%=TRUE THEN PROCWimp_CloseDown
2180 ENDPROC
2190 :
2200 DEF PROCUser_MouseMain( button%,icon%)
2210 ENDPROC
2220 :
2230 DEF PROCUser_MouseTools( button%,icon%)
2240 IF icon%=4 THEN
2250 UPDATE%=TRUE
2260 PROCread
2270 PROCsort
2280 PROCupdate
2290 ENDIF
2300 IF icon%=3 THEN
2310 check%=FNWimp_WindowCancel("!Trickster","Are you sure you want to delete this record ?")
2320 IF check%=TRUE THEN
2330 UPDATE%=TRUE
2340 FOR A=cur% TO tot%
2350 name$(A)=name$(A+1)
2360 FOR B=0 TO 7
2370 info$(A,B)=info$(A+1,B)
2380 NEXTB
2390 hack$(A)=hack$(A+1)
2400 hack%(A)=hack%(A+1)
2410 FOR B=0 TO 25
2420 hacker$(A,B)=hacker$(A+1,B)
2430 NEXTB
2440 pos%(A)=pos%(A+1)
2450 NEXTA
2460 tot%-=1
2470PROCWimp_IconPutText(Main_Window%,6,"")
2480FOR A=10 TO 17
2490PROCWimp_IconPutText(Main_Window%,A,"")
2500NEXTA
2510PROCWimp_IconPutText(Bot_Window%,4,"")
2520 PROCupdate
2530 IF cur%=tot% THEN
2540PROCWimp_IconEnable(Tools_Window%,2)
2550PROCWimp_IconDisable(Tools_Window%,8)
2560PROCWimp_IconDisable(Tools_Window%,9)
2570PROCWimp_IconDisable(Tools_Window%,3)
2580ENDIF
2590IF tot%<2 THEN PROCWimp_IconDisable(Tools_Window%,4)
2600IF tot%=0 THEN
2610 PROCWimp_IconDisable(Bot_Window%,12)
2620 PROCWimp_IconDisable(Bot_Window%,15)
2630 PROCWimp_IconDisable(Bot_Window%,18)
2640 PROCWimp_MenuDisable(Bar_Menu%,2)
2650ENDIF
2660 ENDIF
2670 ENDIF
2680 IF (icon%=8 AND button%=4) OR (icon%=11 AND button%=1 AND cur%<tot%) THEN
2690 UPDATE%=TRUE
2700PROCread
2710cur%+=1
2720PROCupdate
2730 IF cur%=tot% THEN
2740PROCWimp_IconEnable(Tools_Window%,2)
2750PROCWimp_IconDisable(Tools_Window%,8)
2760PROCWimp_IconDisable(Tools_Window%,9)
2770PROCWimp_IconDisable(Tools_Window%,3)
2780ENDIF
2790PROCWimp_IconEnable(Tools_Window%,10)
2800PROCWimp_IconEnable(Tools_Window%,11)
2810 ENDIF
2820 IF (icon%=9 AND button%=4) OR (icon%=10 AND button%=1) THEN
2830 UPDATE%=TRUE
2840PROCread
2850cur%=tot%
2860PROCupdate
2870 IF cur%=tot% THEN
2880PROCWimp_IconEnable(Tools_Window%,2)
2890PROCWimp_IconDisable(Tools_Window%,8)
2900PROCWimp_IconDisable(Tools_Window%,9)
2910PROCWimp_IconDisable(Tools_Window%,3)
2920ENDIF
2930PROCWimp_IconEnable(Tools_Window%,10)
2940PROCWimp_IconEnable(Tools_Window%,11)
2950 ENDIF
2960 IF (icon%=11 AND button%=4) OR (icon%=8 AND button%=1 AND cur%>0) THEN
2970 UPDATE%=TRUE
2980 PROCWimp_IconDisable(Tools_Window%,2)
2990 PROCWimp_IconEnable(Tools_Window%,8)
3000 PROCWimp_IconEnable(Tools_Window%,9)
3010 PROCWimp_IconEnable(Tools_Window%,3)
3020 IF cur%=tot% THEN
3030 PROCWimp_IconPutText(Main_Window%,6,"")
3040 FOR A=10 TO 17
3050 PROCWimp_IconPutText(Main_Window%,A,"")
3060 NEXTA
3070 PROCWimp_IconPutText(Bot_Window%,4,"")
3080 hack%(cur%)=FALSE
3090 ENDIF
3100 PROCread
3110 cur%-=1
3120 IF cur%=0 THEN
3130PROCWimp_IconDisable(Tools_Window%,10)
3140PROCWimp_IconDisable(Tools_Window%,11)
3150ENDIF
3160 PROCupdate
3170 ENDIF
3180 IF (icon%=10 AND button%=4) OR (icon%=9 AND button%=1) THEN
3190 UPDATE%=TRUE
3200 PROCWimp_IconDisable(Tools_Window%,2)
3210 PROCWimp_IconEnable(Tools_Window%,8)
3220 PROCWimp_IconEnable(Tools_Window%,9)
3230 PROCWimp_IconEnable(Tools_Window%,3)
3240 IF cur%=tot% THEN
3250 PROCWimp_IconPutText(Main_Window%,6,"")
3260 FOR A=10 TO 17
3270 PROCWimp_IconPutText(Main_Window%,A,"")
3280 NEXTA
3290 PROCWimp_IconPutText(Bot_Window%,4,"")
3300 hack%(cur%)=FALSE
3310 ENDIF
3320 PROCread
3330 cur%=0
3340 IF cur%=0 THEN
3350 PROCWimp_IconDisable(Tools_Window%,10)
3360 PROCWimp_IconDisable(Tools_Window%,11)
3370 ENDIF
3380
3390 PROCupdate
3400
3410 ENDIF
3420 IF icon%=2 THEN
3430 UPDATE%=TRUE
3440 IF FNWimp_IconText(Main_Window%,6)<>"" THEN
3450 PROCread
3460 tot%+=1
3470 cur%+=1
3480 IF tot%>0 THEN PROCWimp_MenuEnable(Bar_Menu%,2)
3490 IF tot%>1 THEN PROCWimp_IconEnable(Tools_Window%,4)
3500 PROCWimp_IconEnable(Tools_Window%,10)
3510 PROCWimp_IconEnable(Tools_Window%,11)
3520 IF DRIVER%=TRUE THEN PROCWimp_IconEnable(Bot_Window%,12)
3530 PROCWimp_IconEnable(Bot_Window%,15)
3540 PROCWimp_IconEnable(Bot_Window%,18)
3550 PROCupdate
3560 ELSE
3570 PROCWimp_WindowErrorBox("Trickster","Please enter some text into the game name icon and press 'ADD'.")
3580 ENDIF
3590 ENDIF
3600 IF icon%=5 THEN
3610 PROCWimp_SelectIcon(Tools_Window%,5)
3620 IF SCO%=-192 THEN PROCWimp_UnselectIcon(Tools_Window%,6)
3630 IF SCO%=-384 THEN PROCWimp_UnselectIcon(Tools_Window%,7)
3640 IF SCO%=-576 THEN PROCWimp_UnselectIcon(Tools_Window%,12)
3650 SCO%=0
3660 PROCscroll
3670 ENDIF
3680 IF icon%=6 THEN
3690 PROCWimp_SelectIcon(Tools_Window%,6)
3700 IF SCO%=0 THEN PROCWimp_UnselectIcon(Tools_Window%,5)
3710 IF SCO%=-384 THEN PROCWimp_UnselectIcon(Tools_Window%,7)
3720 IF SCO%=-576 THEN PROCWimp_UnselectIcon(Tools_Window%,12)
3730 SCO%=-192
3740 PROCscroll
3750 ENDIF
3760 IF icon%=7 THEN
3770 PROCWimp_SelectIcon(Tools_Window%,7)
3780 IF SCO%=-192 THEN PROCWimp_UnselectIcon(Tools_Window%,6)
3790 IF SCO%=0 THEN PROCWimp_UnselectIcon(Tools_Window%,5)
3800 IF SCO%=-576 THEN PROCWimp_UnselectIcon(Tools_Window%,12)
3810 SCO%=-384
3820 PROCscroll
3830 ENDIF
3840 IF icon%=12 THEN
3850 PROCWimp_SelectIcon(Tools_Window%,12)
3860 IF SCO%=-192 THEN PROCWimp_UnselectIcon(Tools_Window%,6)
3870 IF SCO%=0 THEN PROCWimp_UnselectIcon(Tools_Window%,5)
3880 IF SCO%=-384 THEN PROCWimp_UnselectIcon(Tools_Window%,7)
3890 SCO%=-576
3900 PROCscroll
3910 ENDIF
3920 IF icon%=8 OR icon%=9 OR icon%=10 OR icon%=11 THEN
3930IF FNisopen(Hacker_Window%) THEN
3940IF hack%(cur%)=TRUE THEN
3950PROCwinsiz
3960PROCWimp_WindowBringToTop(Hacker_Window%)
3970PROCWimp_WindowForceDraw(Hacker_Window%)
3980ENDIF
3990ELSE
4000PROCWimp_WindowClose(Hacker_Window%)
4010ENDIF
4020ENDIF
4030 ENDPROC
4040 :
4050 DEF PROCUser_MouseTitle( button%,icon%)
4060 IF icon%=8 OR icon%=9 THEN PROCWimp_WindowClose(Title_Window%)
4070 IF icon%=8 THEN WI$="NONE"
4080 IF icon%=9 THEN WI$="MAIN":PROCWimp_WindowBringToTop(Main_Window%):PROCWimp_WindowBringToTop(Main_Window%):PROCupdate
4090 ENDPROC
4100 :
4110 DEF PROCUser_MouseBot( button%,icon%)
4120 LOCAL ERROR
4130 ON ERROR LOCAL PROCerror:ENDPROC
4140IF icon%=34 THEN
4150PCHEAT% = NOT PCHEAT%
4160IF PCHEAT%=FALSE AND PMODULE%=FALSE THEN PCHEAT%=TRUE
4170IF PCHEAT%=TRUE THEN PROCWimp_SelectIcon(Bot_Window%,34) ELSE PROCWimp_UnselectIcon(Bot_Window%,34)
4180ENDIF
4190IF icon%=35 THEN
4200PMODULE% = NOT PMODULE%
4210IF PMODULE%=FALSE AND PCHEAT%=FALSE THEN PMODULE%=TRUE
4220IF PMODULE%=TRUE THEN PROCWimp_SelectIcon(Bot_Window%,35) ELSE PROCWimp_UnselectIcon(Bot_Window%,35)
4230ENDIF
4240 IF icon%=38 THEN OSCLI("Filer_OpenDir <Trickster$Dir>.TrickMods")
4250 IF icon%=12 THEN PROCprint
4260 IF icon%=23 THEN PROCWimp_SelectIcon(Bot_Window%,23):TYPE%=TRUE
4270 IF icon%=24 THEN PROCWimp_SelectIcon(Bot_Window%,24):TYPE%=FALSE
4280 IF icon%=15 THEN
4290 IF FNWimp_IconText(Bot_Window%,18)<>"" THEN
4300 PROCsearch
4310 ELSE
4320 PROCWimp_WindowErrorBox("!Trickster","Please enter a search string")
4330 ENDIF
4340 ENDIF
4350 IF icon%=39 THEN
4360 VDU21
4370 OSCLI ("RMLOAD "+hack$(cur%))
4380 VDU6
4390 ENDIF
4400 IF icon%=20 THEN
4410PROCwinsiz
4420PROCWimp_WindowBringToTop(Hacker_Window%)
4430ENDIF
4440 IF icon%=6 OR icon%=8 OR icon%=10 OR icon%=37 THEN
4450PROCread
4460PROCWimp_WindowClose(Bot_Window%)
4470PROCWimp_WindowClose(Tools_Window%)
4480PROCWimp_WindowClose(Main_Window%)
4490WI$="TITLE"
4500PROCWimp_WindowBringToTop(Title_Window%)
4510ENDIF
4520 IF icon%=5 OR icon%=2 AND hack$(cur%)<>"" THEN
4530 UPDATE%=TRUE
4540 hack%(cur%)=NOT hack%(cur%)
4550 IF hack%(cur%)=TRUE THEN
4560PROCWimp_SelectIcon(Bot_Window%,5)
4570PROCWimp_IconEnable(Bot_Window%,4)
4580PROCWimp_IconEnable(Bot_Window%,39)
4590PROCWimp_IconEnable(Bot_Window%,20)
4600ELSE
4610PROCWimp_UnselectIcon(Bot_Window%,5)
4620PROCWimp_IconDisable(Bot_Window%,4)
4630PROCWimp_IconDisable(Bot_Window%,39)
4640PROCWimp_IconDisable(Bot_Window%,20)
4650ENDIF
4660 ENDIF
4670 ENDPROC
4680 :
4690 DEF PROCEvent_KeyPress(window%,icon%,key%)
4700 CASE window% OF
4710 WHEN Main_Window% : PROCUser_KeyPressMain( icon%,key%)
4720 WHEN Bot_Window% : PROCUser_KeyPressBot( icon%,key%)
4730 ENDCASE
4740 ENDPROC
4750 :
4760 DEF PROCUser_KeyPressMain( icon%,key%)
4770 REM PROCWimp_WindowAlert("Main","Key pressed="+STR$key%+"icon="+STR$icon%)
4780 IF icon%=17 AND key%=13 AND cur%=tot% THEN PROCUser_MouseTools(4,2)
4790 IF icon%=17 AND key%=13 AND cur%<tot% THEN PROCUser_MouseTools(4,8)
4800 IF icon%=6 AND (key%=13 OR key%=398) THEN PROCWimp_IconCaret(Main_Window%,10,LEN(FNWimp_IconText(Main_Window%,10)))
4810 IF icon%=6 AND key%=399 THEN PROCWimp_IconCaret(Main_Window%,17,LEN(FNWimp_IconText(Main_Window%,17)))
4820 ENDPROC
4830 :
4840 DEF PROCUser_KeyPressBot( icon%,key%)
4850 ENDPROC
4860 :
4870 DEF PROCEvent_MenuChoice(menu%)
4880 CASE menu% OF
4890 WHEN Bar_Menu% : PROCUser_MenuChoiceBar
4900 ENDCASE
4910 ENDPROC
4920 :
4930 DEF PROCUser_MenuChoiceBar
4940 CASE FNWimp_MenuChoice(0) OF
4950 WHEN 1 :
4960 WHEN 3
4970IF UPDATE%=TRUE THEN
4980PROCWimp_IconPutText(Close_Window%,0,"This file has been modified")
4990PROCWimp_WindowBringToTop(Close_Window%)
5000PROCmousebox(Close_Window%)
5010ENDIF
5020IF UPDATE%=FALSE THEN finished%=TRUE
5030 ENDCASE
5040 ENDPROC
5050 :
5060 DEF PROCEvent_LoadFile(file$,type$)
5070 LOCAL ERROR
5080 ON ERROR LOCAL PROCerror:ENDPROC
5090IF type$="BBD" THEN
5100PROCWimp_WindowAlert("!Trickster","Can not accept 'CheatData' files, please convert using !Pad>Trick")
5110ENDIF
5120IF type$="ACE" THEN
5130IF UPDATE%=TRUE THEN
5140check%=FNWimp_WindowCancel("!Trickster","The current file has been modified, are you sure you want to load a new one ?")
5150IF check%=TRUE THEN UPDATE%=FALSE
5160ENDIF
5170IF UPDATE%=FALSE THEN
5180UPDATE%=FALSE
5190PROCWimp_IconPutText(Save_Window%,1,file$)
5200X%=OPENIN(file$)
5210IF X%<>0 THEN
5220INPUT #X%,tot%
5230FOR A=0 TO tot%
5240INPUT #X%,pos%(A)
5250FOR B=0 TO 25
5260INPUT #X%,hacker$(A,B)
5270NEXTB
5280INPUT #X%,name$(A)
5290FOR B=0 TO 7
5300INPUT #X%,info$(A,B)
5310NEXTB
5320INPUT #X%,hack$(A)
5330INPUT #X%,hack%(A)
5340ENDIF
5350NEXTA
5360CLOSE#X%
5370cur%=0
5380PROCWimp_IconDisable(Tools_Window%,10)
5390PROCWimp_IconDisable(Tools_Window%,11)
5400IF cur%<tot% THEN
5410PROCWimp_IconEnable(Tools_Window%,9)
5420PROCWimp_IconEnable(Tools_Window%,8)
5430PROCWimp_IconEnable(Tools_Window%,3)
5440PROCWimp_IconDisable(Tools_Window%,2)
5450ENDIF
5460IF tot%>0 THEN
5470PROCWimp_MenuEnable(Bar_Menu%,2)
5480ENDIF
5490IF tot%=0 THEN
5500PROCWimp_MenuDisable(Bar_Menu%,2)
5510PROCWimp_IconDisable(Tools_Window%,8)
5520PROCWimp_IconDisable(Tools_Window%,9)
5530PROCWimp_IconDisable(Tools_Window%,3)
5540PROCWimp_IconEnable(Tools_Window%,2)
5550ENDIF
5560IF tot%<2 THEN
5570 PROCWimp_IconDisable(Tools_Window%,4)
5580 PROCWimp_IconDisable(Bot_Window%,12)
5590 PROCWimp_IconDisable(Bot_Window%,15)
5600 PROCWimp_IconDisable(Bot_Window%,18)
5610ENDIF
5620IF tot%>1 THEN
5630 PROCWimp_IconEnable(Tools_Window%,4)
5640 IF DRIVER%=TRUE THEN PROCWimp_IconEnable(Bot_Window%,12)
5650 PROCWimp_IconEnable(Bot_Window%,15)
5660 PROCWimp_IconEnable(Bot_Window%,18)
5670ENDIF
5680PROCWimp_WindowBringToTop(Title_Window%)
5690PROCWimp_WindowClose(Hacker_Window%)
5700PROCWimp_WindowClose(Bot_Window%)
5710PROCWimp_WindowClose(Tools_Window%)
5720PROCWimp_WindowClose(Main_Window%)
5730PROCupdate
5740ENDIF
5750ENDIF
5760 SYS"Wimp_GetPointerInfo",,wimp%
5770 IF wimp%!16=3 AND wimp%!12=Bot_Window% THEN
5780 IF type$="FFA" THEN
5790REM LOCAL ERROR
5800REM ON ERROR LOCAL PROCerror2:ENDPROC
5810X%=OPENIN(file$)
5820IF X%<>0 THEN
5830CLOSE#X%
5840SYS"Hourglass_On"
5850 UPDATE%=TRUE
5860PROCcheckmodule(file$)
5870pos%(cur%)=pos%
5880IF DOSAVE%=TRUE THEN
5890IF LEFT$(hacker$(cur%,pos%(cur%)-1),1)<>CHR$(160) THEN
5900PROCcutlong(hacker$(cur%,pos%(cur%)-1),pos%-1)
5910pos%(cur%)=pos%(cur%)+(B%)
5920ENDIF
5930IF FNisopen(Hacker_Window%) THEN
5940PROCwinsiz
5950PROCWimp_WindowBringToTop(Hacker_Window%)
5960PROCWimp_WindowForceDraw(Hacker_Window%)
5970ENDIF
5980pos%=0
5990hack%(cur%)=TRUE
6000PROCWimp_IconEnable(Bot_Window%,4)
6010PROCWimp_SelectIcon(Bot_Window%,5)
6020PROCWimp_IconEnable(Bot_Window%,39)
6030PROCWimp_IconEnable(Bot_Window%,20)
6040PROCWimp_IconEnable(Bot_Window%,5)
6050REM hack$(cur%)=file$
6060a$=FNWimp_GetFileFromPathname(file$)
6070AA%=FNnacheck(file$)
6080IF AA%=TRUE THEN hack$(cur%)="<Trickster$Dir>.TrickMods."+FNWimp_GetFileFromPathname(file$) ELSE hack$(cur%)=file$
6090PROCWimp_IconPutText(Bot_Window%,4,FNWimp_GetFileFromPathname(hack$(cur%)))
6100ENDIF
6110SYS"Hourglass_Smash"
6120ENDIF
6130ENDIF
6140 ENDIF
6150 ENDPROC
6160 :
6170 DEF PROCEvent_SaveFile(file$,window%)
6180 LOCAL ERROR
6190 ON ERROR LOCAL PROCerror:ENDPROC
6200 CASE window% OF
6210 WHEN Save_Window%
6220X%=OPENIN(file$)
6230IF X%<>0 THEN
6240check%=FNWimp_WindowCancel("!Trickster","This file already exists, overwrite ?")
6250IF check%=TRUE THEN X%=0
6260CLOSE#X%
6270ENDIF
6280IF X%=0 THEN
6290IF DOSAVE%=TRUE THEN
6300 IF cur%=tot% THEN
6310 PROCWimp_IconPutText(Main_Window%,6,"")
6320 FOR A=10 TO 17
6330 PROCWimp_IconPutText(Main_Window%,A,"")
6340 NEXTA
6350 PROCWimp_IconPutText(Bot_Window%,4,"")
6360 hack%(cur%)=FALSE
6370 ENDIF
6380PROCread
6390X%=OPENOUT(file$)
6400IF X%<>0 THEN
6410PRINT #X%,tot%
6420FOR A=0 TO tot%
6430PRINT #X%,pos%(A)
6440FOR B=0 TO 25
6450PRINT #X%,hacker$(A,B)
6460NEXTB
6470PRINT #X%,name$(A)
6480FOR B=0 TO 7
6490PRINT #X%,info$(A,B)
6500NEXTB
6510PRINT #X%,hack$(A)
6520PRINT #X%,hack%(A)
6530NEXTA
6540ENDIF
6550CLOSE#X%
6560OSCLI ("SETTYPE "+file$+" ACE")
6570PROCWimp_MenuClose
6580ENDIF
6590UPDATE%=FALSE
6600ENDIF
6610 WHEN Save2_Window%
6620X%=OPENIN(file$)
6630IF X%<>0 THEN
6640check%=FNWimp_WindowCancel("!Trickster","This file already exists, overwrite ?")
6650IF check%=TRUE THEN X%=0:CLOSE#X%
6660ENDIF
6670IF X%=0 THEN
6680LOCAL ERROR
6690ON ERROR LOCAL PROCerror
6700IF DOSAVE%=TRUE THEN
6710 PROCWimp_MenuClose
6720 OSCLI("SPOOL "+file$)
6730FOR DD=0 TO tot%-1
6740 PRINT"Game Name - "+name$(DD)+CHR$(10);
6750 PRINTCHR$(10);
6760 PRINT"Tricks and Tactics"+CHR$(10);
6770 FOR A=0 TO 7
6780 IF info$(DD,A)<>"" THEN PRINTinfo$(DD,A)+CHR$(10);
6790 NEXTA
6800PRINTCHR$(10);
6810 IF hack%(DD)=TRUE THEN
6820 PRINT"Cheat Name - "+LEFT$(hacker$(DD,0),LEN(hacker$(DD,0))-6)+CHR$(10);
6830 PRINTCHR$(10);
6840 PRINT"Author of Cheat - "+MID$(hacker$(DD,1),12,LEN(hacker$(DD,1))-8)+CHR$(10);
6850 PRINTCHR$(10);
6860 PRINT"Cheated with - "+MID$(hacker$(DD,2),6,LEN(hacker$(DD,2)))+CHR$(10);
6870 PRINTCHR$(10);
6880 PRINT"Keys"+CHR$(10);
6890 FOR A=0 TO pos%(DD)-4
6900 IF ASC(LEFT$(hacker$(DD,A+3)))=160 THEN LEFT$(hacker$(DD,A+3))=" "
6910 IF ASC(LEFT$(hacker$(DD,A+3)))=&0d THEN LEFT$(hacker$(DD,A+3))=" "
6920 PRINThacker$(DD,A+3)+CHR$(10);
6930 NEXTA
6940PRINTCHR$(10);
6950 ENDIF
6960NEXTDD
6970ENDIF
6980 OSCLI("SPOOL")
6990 OSCLI("SETTYPE "+file$+" FFF")
7000 VDU6
7010 IF file$="<Wimp$Scrap>" THEN PROCWimp_SendToEdit(file$)
7020 ENDIF
7030 ENDCASE
7040IF DOSAVE%=FALSE THEN DOSAVE%=TRUE
7050 ENDPROC
7060:
7070REM *****************************************************************
7080:
7090DEF PROCWimp_WindowTitlePutText(window%,title$)
7100wimp%!0 = window%
7110SYS &000400CC,,wimp%
7120po% = !(wimp%+76)
7130$po% = title$+CHR$0
7140ENDPROC
7150:
7160DEF PROCWimp_WindowAlert(title$,message$)
7170PROCWimp_WindowAlertBox(title$,message$,0)
7180ENDPROC
7190:
7200DEF PROCWimp_WindowAlertBox(title$,message$,button%)
7210LOCAL response%
7220$(wimp%+4)=message$
7230CASE button% OF
7240 WHEN 2 : response%=1
7250 WHEN 1 : response%=15
7260 WHEN 3 : response%=(1<<5)+16
7270 WHEN 4 : response%=(1<<6)+16
7280OTHERWISE : response%=16
7290ENDCASE
7300SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
7310ENDPROC
7320:
7330DEF FNWimp_WindowCancel(title$,message$)
7340$(wimp%+4)=message$
7350response%=23
7360SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
7370=response%-2
7380:
7390DEF PROCWimp_WindowErrorBox(title$,message$)
7400PROCWimp_WindowAlertBox(title$,message$,2)
7410ENDPROC
7420:
7430DEF FNWimp_WindowTitle(window%)
7440wimp%!0=window%
7450SYS "Wimp_GetWindowInfo",,wimp%
7460IF ((wimp%!60)AND&100)=0 ERROR 1,"Title isn't indirected"
7470=$(wimp%!76)
7480:
7490DEF FNWimp_WindowLoad(window$)
7500=FNWimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
7510:
7520DEF FNWimp_WindowLoadFrom(window$,template$)
7530LOCAL c%,i%,n%,j%,sp$,sp2$
7540SYS "Wimp_OpenTemplate",,template$
7550SYS "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,-1,window$,0 TO ,,icons%
7560CASE sprites% OF
7570 WHEN 1 : wimp%!64=sprites%
7580 OTHERWISE : wimp%!64=FNEvent_Sprites(window%)
7590ENDCASE
7600SYS "Wimp_CreateWindow",,wimp% TO c%
7610SYS "Wimp_CloseTemplate"
7620SYS "Wimp_WhichIcon",c%,wimp%+40,1+2+(1<<8),2+(1<<8)
7630CASE wimp%!40 OF
7640 WHEN -1 :
7650 OTHERWISE : i%=40
7660 REPEAT
7670 wimp%!4=wimp%!i% : wimp%!0=c%
7680 SYS "Wimp_GetIconState",,wimp%
7690 sp$=FNWimp_GetStringAtAddress(wimp%!28)
7700 SYS "Wimp_DeleteIcon",,wimp%
7710 CASE sprites% OF
7720 WHEN 1 : wimp%!32=1
7730 OTHERWISE :
7740 SYS "OS_SpriteOp",&108,sprites% TO ,,,n%
7750 j%=0
7760 REPEAT : j%+=1
7770 SYS "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
7780 sp2$=FNWimp_GetStringAtAddress(pointer_block%)
7790 UNTIL j%=n% OR sp$=sp2$
7800 IF sp$=sp2$ THEN wimp%!32=sprites% ELSE wimp%!32=1
7810 ENDCASE
7820 wimp%!4=c%
7830 SYS "Wimp_CreateIcon",,wimp%+4 TO handle%
7840 i%+=4
7850 UNTIL (wimp%!i%)=-1
7860ENDCASE
7870=c%
7880:
7890DEF PROCWimp_WindowOpen(window%)
7900!wimp%=window%
7910SYS "Wimp_GetWindowState",,wimp%
7920PROCbotopen
7930SYS "Wimp_OpenWindow",,wimp%
7940ENDPROC
7950:
7960DEF PROCWimp_WindowBringToTop(window%)
7970!wimp%=window%
7980SYS "Wimp_GetWindowState",,wimp%
7990wimp%!28=-1
8000PROCbotopen
8010SYS "Wimp_OpenWindow",,wimp%
8020ENDPROC
8030:
8040DEF PROCWimp_WindowClose(window%)
8050!wimp%=window%
8060SYS "Wimp_CloseWindow",,wimp%
8070ENDPROC
8080:
8090DEF PROCWimp_WindowForceDraw(window%)
8100CASE window% OF
8110 WHEN -1 : SYS "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
8120 OTHERWISE : SYS "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
8130ENDCASE
8140ENDPROC
8150:
8160PROCWimp_WindowInterface
8170SYS"Wimp_BorderWindow",,wimp%
8180ENDPROC
8190:
8200REM *****************************************************************
8210:
8220DEF PROCWimp_IconUpdate(window%,icon%)
8230wimp%!0=window%
8240wimp%!4=icon%
8250wimp%!8=0
8260wimp%!12=0
8270SYS "Wimp_SetIconState",,wimp%
8280ENDPROC
8290:
8300DEF PROCWimp_SetBar(win%,dragicon%,sizeicon%,range%,number%)
8310IF number%<0 THEN number%=0
8320IF number%>range% THEN number%=range%
8330wimp%!0=win%
8340wimp%!4=sizeicon%
8350SYS "Wimp_GetIconState",,wimp%
8360sizeminx%=wimp%!8
8370sizeminy%=wimp%!12
8380sizemaxx%=wimp%!16
8390sizemaxy%=wimp%!20
8400newx%=sizeminx%+(number%/(range%/(sizemaxx%-sizeminx%)))
8410IF newx%<>oldworkx% THEN
8420wimp%!0=win%
8430wimp%!4=dragicon%
8440SYS "Wimp_GetIconState",,wimp%
8450wimp%!16=newx%
8460wimp%!0=win%
8470wimp%!4=dragicon%
8480SYS "Wimp_DeleteIcon",,wimp%
8490wimp%!4=win%
8500SYS "Wimp_CreateIcon",,wimp%+4
8510newwimp%=wimp%+4
8520IF oldworkx%<newx% THEN
8530newwimp%!4=sizeminx%
8540ELSE
8550newwimp%!4=newx%
8560ENDIF
8570newwimp%!8=sizeminy%
8580IF oldworkx%<newx% THEN
8590newwimp%!12=newx%
8600ELSE
8610newwimp%!12=sizemaxx%
8620ENDIF
8630newwimp%!16=sizemaxy%
8640SYS "Wimp_UpdateWindow",,newwimp% TO flag
8650WHILE flag
8660SYS "Wimp_GetRectangle",,newwimp% TO flag
8670ENDWHILE
8680oldworkx%=newx%
8690ENDIF
8700ENDPROC
8710:
8720DEF FNWimp_IconGetBarValue(win%,dragicon%,sizeicon%,range%)
8730wimp%!0=win%
8740wimp%!4=sizeicon%
8750SYS "Wimp_GetIconState",,wimp%
8760sizeminx%=wimp%!8
8770sizemaxx%=wimp%!16
8780wimp%!0=win%
8790wimp%!4=dragicon%
8800SYS "Wimp_GetIconState",,wimp%
8810=(range%/(sizemaxx%-sizeminx%))*(wimp%!16-wimp%!8)
8820:
8830DEF PROCWimp_IconDragSliderIcon(win%,dragicon%,sizeicon%)
8840wimp%!0=win%
8850wimp%!4=sizeicon%
8860SYS "Wimp_GetIconState",,wimp%
8870sminx%=wimp%!8
8880sminy%=wimp%!12
8890smaxx%=wimp%!16
8900smaxy%=wimp%!20
8910SYS "Wimp_GetPointerInfo",,wimp%
8920mx%=wimp%!0
8930wimp%!0=win%
8940SYS "Wimp_GetWindowInfo",,wimp%
8950calcx%=(mx%-(wimp%!4-wimp%!20))+wimp%!44
8960iconminx%=sminx%+(wimp%!4-wimp%!20)
8970iconmaxx%=iconminx%+(smaxx%-sminx%)
8980iconminy%=sminy%+(wimp%!16-wimp%!24)
8990iconmaxy%=iconminy%+(smaxy%-sminy%)-4
9000wimp%!0=win%
9010wimp%!4=7
9020wimp%!8=iconminx%
9030wimp%!12=iconminy%
9040wimp%!16=iconmaxx%
9050wimp%!20=iconmaxy%
9060wimp%!24=wimp%!8
9070wimp%!28=wimp%!12
9080wimp%!32=wimp%!16
9090wimp%!36=wimp%!20
9100SYS "Wimp_DragBox",,wimp%
9110slidewindow%=win%
9120slideicon%=dragicon%
9130slidesize%=sizeicon%
9140wimp%!0=win%
9150wimp%!4=dragicon%
9160SYS "Wimp_GetIconState",,wimp%
9170oldworkx%=wimp%!16
9180ENDPROC
9190:
9200DEF PROCWimp_IconDoSlide(win%,dragicon%,sizeicon%,const%,range%)
9210wimp%!0=win%
9220wimp%!4=sizeicon%
9230SYS "Wimp_GetIconState",,wimp%
9240sizeminx%=wimp%!8
9250sizeminy%=wimp%!12
9260sizemaxx%=wimp%!16
9270sizemaxy%=wimp%!20
9280SYS "Wimp_GetPointerInfo",,wimp%
9290mx%=wimp%!0
9300wimp%!0=win%
9310SYS "Wimp_GetWindowInfo",,wimp%
9320minx%=wimp%!4
9330scrx%=wimp%!20
9340newx%=mx%+(scrx%-minx%)
9350IF newx%<>oldworkx% THEN
9360wimp%!0=win%
9370wimp%!4=dragicon%
9380SYS "Wimp_GetIconState",,wimp%
9390wimp%!16=newx%
9400wimp%!0=win%
9410wimp%!4=dragicon%
9420SYS "Wimp_DeleteIcon",,wimp%
9430wimp%!4=win%
9440SYS "Wimp_CreateIcon",,wimp%+4
9450newwimp%=wimp%+4
9460IF oldworkx%<newx% THEN
9470newwimp%!4=sizeminx%
9480ELSE
9490newwimp%!4=newx%
9500ENDIF
9510newwimp%!8=sizeminy%
9520IF oldworkx%<newx% THEN
9530newwimp%!12=newx%
9540ELSE
9550newwimp%!12=sizemaxx%
9560ENDIF
9570newwimp%!16=sizemaxy%
9580SYS "Wimp_UpdateWindow",,newwimp% TO flag
9590WHILE flag
9600SYS "Wimp_GetRectangle",,newwimp% TO flag
9610ENDWHILE
9620IF const% THEN
9630size%=sizemaxx%-sizeminx%
9640ppos%=(oldworkx%-sizeminx%)
9650number%=(range%/size%)*ppos%
9660:
9670CASE slideicon% OF
9680WHEN 2
9690REMPROCiconputtext(main%,3,STR$(number%)+"%")
9700ENDCASE
9710ENDIF
9720ENDIF
9730oldworkx%=newx%
9740rrange%=range%
9750ENDPROC
9760:
9770DEF PROCWimp_SetIconSprite(window%,icon%,sprite$)
9780wimp%!0=window%
9790wimp%!4=icon%
9800SYS "Wimp_GetIconState",,wimp%
9810$wimp%!32="S"+sprite$
9820wimp%!0=window%
9830wimp%!8=0
9840wimp%!12=0
9850SYS "Wimp_SetIconState",,wimp%
9860ENDPROC
9870:
9880DEF FNWimp_IconBar(Sprite$)
9890LOCAL icon%
9900wimp%!0=-1
9910wimp%!4=0 : wimp%!8=0
9920wimp%!12=88 : wimp%!16=72
9930wimp%!20=&3002
9940$(wimp%+24)=Sprite$
9950SYS "Wimp_CreateIcon",,wimp% TO icon%
9960=icon%
9970:
9980DEF PROCWimp_IconCaret(window%,icon%,chars%)
9990SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
10000ENDPROC
10010:
10020DEF FNWimp_IconText(window%,icon%)
10030wimp%!0=window% : wimp%!4=icon%
10040SYS "Wimp_GetIconState",,wimp%
10050IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
10060=$(wimp%!28)
10070:
10080DEF FNWimp_IconValidation(window%,icon%)
10090wimp%!0=window% : wimp%!4=icon%
10100SYS "Wimp_GetIconState",,wimp%
10110IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
10120=$(wimp%!32)
10130:
10140DEF PROCWimp_IconDisable(window%,icon%)
10150wimp%!0=window% : wimp%!4=icon%
10160wimp%!8=1<<22 : wimp%!12=1<<22
10170SYS "Wimp_SetIconState",,wimp%
10180ENDPROC
10190:
10200DEF PROCWimp_IconEnable(window%,icon%)
10210wimp%!0=window% : wimp%!4=icon%
10220wimp%!8=0 : wimp%!12=1<<22
10230SYS "Wimp_SetIconState",,wimp%
10240ENDPROC
10250:
10260DEF FNWimp_IconPutSprite(window%,icon%,sprite$)
10270wimp%!0=window%:wimp%!4=icon%
10280SYS "Wimp_GetIconState",,wimp%
10290SYS "Wimp_DeleteIcon",,wimp%
10300wimp%!4=wimp%!8 : wimp%!8=wimp%!12 : wimp%!12=wimp%!16
10310wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$
10320SYS "Wimp_CreateIcon",,wimp% TO icon%
10330=icon%
10340:
10350DEF PROCWimp_IconPutText(window%,icon%,text$)
10360wimp%!0=window% : wimp%!4=icon%
10370SYS "Wimp_GetIconState",,wimp%
10380IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
10390$(wimp%!28)=text$
10400wimp%!0=window% : wimp%!4=icon%
10410wimp%!8=0 : wimp%!12=0
10420SYS "Wimp_SetIconState",,wimp%
10430ENDPROC
10440:
10450DEF PROCWimp_IconInterfaceStart
10460SYS"Wimp_BorderIcon",,wimp%
10470ENDPROC
10480:
10490DEF PROCWimp_IconInterfaceFinish
10500wimp%!8=0
10510SYS"Wimp_BorderIcon",,wimp%
10520ENDPROC
10530:
10540REM *****************************************************************
10550:
10560DEF PROCWimp_MenuAdjustOn(menu%)
10570SYS "Wimp_GetPointerInfo",,pointer_block%
10580IF ((pointer_block%!8)AND1)=1 THEN SYS "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4
10590ENDPROC
10600:
10610DEF FNWimp_MenuChoice(level%)
10620=(wimp%!(4*level%))+1
10630:
10640DEF FNWimp_MenuCreate(menu$)
10650IF menu$="Colours" THEN =FNWimp_MenuColours
10660LOCAL menu%,index%,width%,length%,k%,s%
10670DIM menu% 28+FNWimp_MenuNoOfEntries(menu$)*24
10680menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
10690menu%!16=140 : menu%!20=44 : menu%!24=0
10700index%=menu%+28
10710$menu%=LEFT$(menu$,INSTR(menu$,"\")-1)
10720width%=LEN(LEFT$(menu$,INSTR(menu$,"\")-1))
10730menu$+="\" : Menu_NoOfEntries%=0
10740WHILE menu$<>""
10750menu$=MID$(menu$,INSTR(menu$,"\")+1)
10760CASE menu$ OF
10770 WHEN ""
10780 OTHERWISE :
10790 !index%=0 : index%!4=-1 : index%!8=&7000021
10800 length%=INSTR(menu$,"\")-1
10810 k%=INSTR(LEFT$(menu$,length%),">")
10820 CASE k% OF
10830 WHEN 0
10840 OTHERWISE
10850 s%=EVAL(MID$(menu$,k%+1,length%-k%))
10860 index%!4=s%
10870 length%=k%-1
10880 ENDCASE
10890 $(index%+12)=LEFT$(menu$,length%)
10900 IF length%>width% THEN width%=length%
10910 index%+=24
10920ENDCASE
10930ENDWHILE
10940menu%!16=16*(width%+1)
10950index%!-24=index%!-24 OR &80 : =menu%
10960=FALSE
10970:
10980DEF FNWimp_MenuColours
10990=FNWimp_MenuCreateColours(" ")
11000:
11010DEF FNWimp_MenuCreateColours(title$)
11020LOCAL x$,men%,j%,i%
11030x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
11040men%=FNWimp_MenuCreate(x$)
11050FOR i%=0 TO 15
11060CASE TRUE OF
11070WHEN i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
11080OTHERWISE : j%=0
11090ENDCASE
11100men%?(39+i%*24)=i%*16+j%
11110PROCWimp_MenuCentre(men%,i%+1)
11120NEXT
11130=men%
11140:
11150DEF FNWimp_MenuNoOfEntries(menu$)
11160LOCAL n% ,j% : n%=0 : j%=0
11170REPEAT
11180j%=INSTR(menu$,"\",j%+1)
11190IF j%<>0 THEN n%+=1
11200UNTIL j%=0
11210=n%
11220:
11230DEF PROCWimp_MenuBackGroundColour(menu%,item%,colour%)
11240LOCAL fore%,i%
11250fore%=(menu%?(39+(item%-1)*24))MOD16
11260i%=((menu%?(39+(item%-1)*24))DIV16)MOD16
11270menu%?(39+(item%-1)*24)=fore%+16*colour%+i%
11280ENDPROC
11290:
11300DEF PROCWimp_MenuCentre(menu%,item%)
11310menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<3)
11320ENDPROC
11330:
11340DEF PROCWimp_MenuClose
11350SYS "Wimp_CreateMenu",-1
11360ENDPROC
11370:
11380DEF PROCWimp_MenuDisable(menu%,item%)
11390menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<22)
11400ENDPROC
11410:
11420DEF PROCWimp_MenuDottedLine(menu%,item%)
11430menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR2
11440ENDPROC
11450:
11460DEF PROCWimp_MenuEnable(menu%,item%)
11470PROCWimp_MenuDisable(menu%,item%)
11480menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)EOR(1<<22)
11490ENDPROC
11500:
11510DEF PROCWimp_MenuForegroundColour(menu%,item%,colour%)
11520menu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))DIV16)
11530ENDPROC
11540:
11550DEF PROCWimp_MenuGlue(menu1%,item%,menu2%)
11560menu1%!(8+item%*24)=menu2%
11570ENDPROC
11580:
11590DEF PROCWimp_MenuItem(menu%,item%,item$)
11600$(menu%+(40+(item%-1)*24))=LEFT$(item$,12)+CHR$0
11610ENDPROC
11620:
11630DEF PROCWimp_MenuMessage(menu%,item%)
11640menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR(1<<3)
11650ENDPROC
11660:
11670DEF PROCWimp_MenuPopUp(Menu%,x%,y%)
11680IF SA%=FALSE THEN
11690menu%=Menu%
11700SYS "Wimp_CreateMenu",,menu%,x%-64,y%+20
11710ENDIF
11720ENDPROC
11730:
11740DEF PROCWimp_MenuPopUpBar(x%,y%)
11750LOCAL n% : n%=0
11760WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
11770n%+=1
11780ENDWHILE
11790SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
11800menu%=Bar_Menu%
11810ENDPROC
11820:
11830DEF PROCWimp_MenuTick(menu%,item%)
11840menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR1
11850ENDPROC
11860:
11870DEF PROCWimp_MenuTitle(menu%,title$)
11880$menu%=LEFT$(title$,12)+CHR$0
11890ENDPROC
11900:
11910DEF PROCWimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%)
11920menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR4
11930menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR&100
11940menu%!(40+(item%-1)*24)=buffer%
11950menu%!(44+(item%-1)*24)=val%
11960menu%!(48+(item%-1)*24)=BufferLength%
11970ENDPROC
11980:
11990REM *****************************************************************
12000:
12010DEF PROCWimp_SelectIcon(window%,icon%)
12020wimp%!0=window%
12030wimp%!4=icon%
12040wimp%!8=%1000000000000000000000
12050wimp%!12=%1000000000000000000000
12060SYS&400CD,,wimp%
12070ENDPROC
12080:
12090DEF PROCWimp_UnselectIcon(window%,icon%)
12100wimp%!0=window%
12110wimp%!4=icon%
12120wimp%!8=0
12130wimp%!12=%1000000000000000000000
12140SYS&400CD,,wimp%
12150ENDPROC
12160:
12170DEF PROCWimp_SpritesLoad
12180SYS"OS_ReadModeVariable",-1,5 TO ,,YEIG%
12190IF YEIG%<2 THEN SPR$="Sprites" ELSE SPR$="Sprites"
12200PROCWimp_SpritesPathLoad("<Obey$Dir>."+SPR$)
12210direct_sprites%=sprites%
12220ENDPROC
12230:
12240DEF PROCWimp_SpritesPathLoad(pathname$)
12250LOCALS%,T%
12260A$="<Obey$Dir>."+SPR$
12270S%=OPENIN A$:T%=EXT#S%+16:CLOSE#S%
12280DIMsprites%T%,spname%12
12290!sprites%=T%:sprites%!8=0
12300SYS"OS_SpriteOp",&109,sprites%
12310SYS"OS_SpriteOp",&10A,sprites%,pathname$
12320ENDPROC
12330:
12340REM *****************************************************************
12350:
12360DEF FNWimp_GetFilePathName
12370=FNWimp_GetStringAtAddress(wimp%+44)
12380:
12390DEF FNWimp_FileLoad(pathname$)
12400LOCALS%,T%,file%
12410S%=OPENINpathname$
12420T%=EXT#S%+16
12430CLOSE#S%
12440DIMfile%T%
12450OSCLI("LOAD"+pathname$+""+STR$~file%)
12460=file%
12470:
12480DEF PROCWimp_SendToEdit(file$)
12490LOCAL n%
12500wimp%!4=&6CC01C0C
12510wimp%!16=5
12520wimp%!36=0
12530wimp%!40=&FFF
12540$(wimp%+44)=file$+CHR$0
12550n%=LENfile$+45
12560IF n%MOD4 THEN !wimp%=4+(n%>>2)<<2 ELSE !wimp%=n%
12570SYS "Wimp_SendMessage",17,wimp%,0
12580ENDPROC
12590:
12600REM *****************************************************************
12610:
12620DEF PROCWimp_Start(TaskName$,wimp_memory%,icon%)
12630DIM wimp% wimp_memory%,icons% icon%
12640IF wimp_memory%<256 THEN wimp_memory%=256
12650icon_memory%=icons%+icon%
12660task$=TaskName$
12670indirect_sprites%=1 : direct_sprites%=1
12680PROCWimp_SetEventVariables
12690ON ERROR PROCWimp_Error:END
12700SYS"Wimp_Initialise",200,&4B534154,TaskName$ TO version%,task%
12710ENDPROC
12720:
12730DEF FNWimp_BASICParameters
12740 LOCAL com$,param$,I%
12750 SYS "OS_GetEnv" TO com$
12760 params$=""
12770 I%=INSTR(com$," -quit ")
12780 IF I% THEN params$=MID$(com$,INSTR(com$," ",I%+LEN" -quit ")+1)
12790=params$
12800:
12810DEF PROCWimp_SetEventVariables
12820DIM pointer_block% 20
12830interface%=FALSE
12840null%=1 :draw%=2 : pointer_leaving%=1<<4
12850pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7
12860key%=1<<8:menu%=1<<9:scroll%=1<<10
12870lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18)
12880recorder%=1<<18:acknowledge%=1<<19:window%=0
12890sprites%=1:version%=0:task%=0
12900Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0
12910x_origin%=0:y_origin%=0:SaveWindow%=-3
12920message_quit%=0:message_save%=2:message_load%=3
12930mouse_button%=2:save_event%=0
12940top_line%=0 : bottom_line%=0
12950:
12960REM Dont mess about with below (or use them !) they are used in
12970REM the drag bar routines.
12980slidewindow%=-1
12990slideicon%=-1
13000slidesize%=-1
13010oldworkx%=-1
13020rrange%=-1
13030sizemaxx%=-1
13040sizeminx%=-1
13050ENDPROC
13060:
13070DEF PROCWimp_Error
13080LOCALX$,x%
13090ON ERROR OFF
13100x%=ERL
13110X$=REPORT$+"atline"+STR$(x%DIV10)
13120DIMErrorMsg%36
13130ErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x%
13140$(ErrorMsg%+24)="!RunImage"
13150SYS"Wimp_SendMessage",17,ErrorMsg%
13160PROCWimp_WindowAlert(task$,X$)
13170PROCWimp_CloseDown
13180ENDPROC
13190:
13200DEF PROCWimp_CloseDown
13210SYS"Wimp_CloseDown",task%,"TASK"
13220ENDPROC
13230:
13240DEF PROCWimp_Quit
13250finished%=TRUE
13260ENDPROC
13270:
13280DEF FNWimp_ReadVariable(Variable$)
13290LOCALlen%,result%,variable%
13300$wimp%=Variable$
13310SYS"OS_ReadVarVal",wimp%,wimp%+255,255,,3TO,,len%
13320wimp%?(len%+255)=13
13330=$(wimp%+255)
13340:
13350REM *****************************************************************
13360:
13370DEF PROCWimp_WaitForEvent
13380LOCAL mask%,event%
13390finished%=FALSE
13400mask%=%111000011001
13410REPEAT
13420 SYS"Wimp_Poll",mask%,wimp% TO event%
13430 CASE event% OF
13440 WHEN0
13450 WHEN1 : PROCWimp_PollDrawWindow
13460 WHEN2
13470PROCbotopen
13480SYS "Wimp_OpenWindow",,wimp%
13490 WHEN3 : PROCWimp_PollCloseWindow
13500 WHEN4 :
13510 WHEN5 :
13520 WHEN6 : PROCWimp_PollMouseClick
13530 WHEN7 : PROCWimp_PollSaveMessage
13540 WHEN8 : PROCWimp_PollKeyPress
13550 WHEN9 : PROCEvent_MenuChoice(menu%)
13560 WHEN10:
13570 WHEN11:
13580 WHEN12:
13590 WHEN17,18: PROCWimp_PollMessages
13600 WHEN19:
13610 ENDCASE
13620UNTIL finished%
13630ENDPROC
13640:
13650DEF PROCWimp_PollDrawWindow
13660LOCAL more%
13670SYS"Wimp_RedrawWindow",,wimp%TOmore%
13680window%=wimp%!0
13690x_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24
13700WHILEmore%
13710 IF interface% THEN SYS"Wimp_BorderWindow",,wimp%
13720 PROCEvent_Draw(window%,x_origin%,y_origin%)
13730 SYS"Wimp_GetRectangle",,wimp%TOmore%
13740ENDWHILE
13750ENDPROC
13760:
13770DEF PROCWimp_PollCloseWindow
13780 SYS "Wimp_GetPointerInfo",,wimp%
13790 window%=wimp%!12 : buttons%=wimp%!8
13800 PROCEvent_WindowClose(window%,buttons%)
13810 !wimp%=window% : SYS "Wimp_CloseWindow",,wimp%
13820ENDPROC
13830:
13840DEF PROCWimp_PollMouseClick
13850 button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
13860 CASE button% OF
13870 WHEN2 : PROCWimp_PollMenuPopUp
13880 OTHERWISE: CASE FNEvent_Save(window%) OF
13890 WHEN TRUE : PROCWimp_PollMouseSave
13900 WHEN FALSE: PROCWimp_PollEventMouseClick
13910 ENDCASE
13920 ENDCASE
13930ENDPROC
13940:
13950DEF PROCWimp_PollMenuPopUp
13960IF SA%=FALSE THEN
13970menu%=FNEvent_Menu(window%)
13980 CASE menu% OF
13990 WHEN FALSE:
14000 OTHERWISE :
14010 CASE window% OF
14020 WHEN -2 : n%=0
14030 WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
14040 n%+=1
14050 ENDWHILE
14060 SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*66
14070 OTHERWISE : SYS"Wimp_CreateMenu",,menu%,x%-64,y%+20
14080 ENDCASE
14090 ENDCASE
14100ENDIF
14110ENDPROC
14120:
14130DEF PROCWimp_PollMouseSave
14140 CASE icon% OF
14150 WHEN 3 : IF button% AND &50 THEN PROCWimp_PollDragBox(window%)
14160 WHEN 2 : IF button% AND 5 THEN PROCWimp_PollSaveFile(window%)
14170 ENDCASE
14180ENDPROC
14190:
14200DEF PROCWimp_PollEventMouseClick
14210 IF interface% THEN SYS"Wimp_BorderIcon",,wimp%
14220 PROCEvent_MouseClick(window%,icon%,button%,x%,y%)
14230 CASE interface% OF
14240 WHEN TRUE :
14250 wimp%!0=x%:wimp%!4=y% : wimp%!8=0
14260 wimp%!12=window% : wimp%!16=icon%
14270 SYS"Wimp_BorderIcon",,wimp%
14280 ENDCASE
14290ENDPROC
14300:
14310DEF PROCWimp_PollSaveFile(window%)
14320LOCALfile$
14330 wimp%!0=window% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
14340 file$=$(wimp%!28)
14350 CASE INSTR(file$,".") OF
14360 WHEN 0 :
14370IF key%=13 THEN
14380 $(wimp%+4)="To save, drag the icon to a directory window"
14390 SYS "Wimp_ReportError",wimp%,16,task$
14400ENDIF
14410 OTHERWISE:
14420PROCEvent_SaveFile(file$,window%)
14430PROCWimp_MenuClose
14440 ENDCASE
14450IF key%=13 THEN SYS"Wimp_CreateMenu",-1
14460IF SA%=TRUE THEN PROCWimp_CloseDown
14470ENDPROC
14480:
14490DEF PROCWimp_PollDragBox(window%)
14500LOCALx%,y%
14510IF window%=Save_Window% THEN
14520sn$="file_ace2"
14530ELSE
14540sn$="text2"
14550ENDIF
14560 save%=window%
14570 !wimp%=window%
14580 SYS"Wimp_GetWindowState",,wimp%
14590 x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24
14600 wimp%!4=3
14610 SYS"Wimp_GetIconState",,wimp%
14620 !wimp%=window%
14630 wimp%!4=5
14640 wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12
14650 wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20
14660 wimp%!24=0:wimp%!28=0
14670 wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
14680IF sn$="" THEN
14690SYS&000400D0,,wimp%
14700ELSE
14710IF dragicons% THEN
14720SYS &00042400,%11000101,sprites%,sn$,wimp%+8
14730ELSE
14740SYS&000400D0,,wimp%
14750ENDIF
14760ENDIF
14770PROCunbox
14780ENDPROC
14790:
14800DEF PROCWimp_PollKeyPress
14810 window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
14820 CASE FNEvent_Save(window%) OF
14830 WHEN TRUE : PROCWimp_PollSaveFile(window%)
14840 WHEN FALSE: PROCEvent_KeyPress(window%,icon%,key%)
14850 ENDCASE
14860ENDPROC
14870:
14880DEF PROCWimp_PollSaveMessage
14890LOCALfile$,window%,icon%,x%,y%
14900 SYS"Wimp_GetPointerInfo",,wimp%
14910 window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
14920 wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
14930 file$=$(wimp%!28)
14940 file$=FNWimp_GetFileFromPathname(file$)
14950ACE$=file$
14960 wimp%!20=window%
14970 wimp%!24=icon%
14980 wimp%!28=x%:wimp%!32=y%
14990 wimp%!36=length%
15000 wimp%!0=64
15010 wimp%!12=0
15020 wimp%!16=1
15030 wimp%!40=&FFF
15040 $(wimp%+44)=file$
15050 SYS"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
15060ENDPROC
15070:
15080DEF PROCWimp_PollMessages
15090AA%=wimp%!16
15100AB%=wimp%!40
15110AC%=wimp%!12
15120AD%=wimp%!8
15130AE%=wimp%!20
15140PROCopenprinter
15150LOCAL file$
15160file$=FNWimp_GetStringAtAddress(wimp%+44)
15170 CASE AA% OF
15180 WHEN 0 : finished%=TRUE
15190 WHEN 1 :
15200 WHEN 2 :
15210 wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
15220 $(wimp%!28)=file$
15230 wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0
15240 SYS "Wimp_SetIconState",,wimp%
15250 REM PROCWimp_IconCaret(save%,1,LENfile$)
15260 SYS "Wimp_SetCaretPosition",save%,1,,,-1,LENfile$
15270 PROCWimp_MenuClose
15280 PROCEvent_SaveFile(file$,save%)
15290 IF SA%=TRUE THEN PROCWimp_CloseDown
15300 WHEN 3
15310 type$=FNWimp_FileType(wimp%!40)
15320 PROCEvent_LoadFile(file$,type$)
15330 WHEN &400C1
15340 IF FNisopen(Main_Window%) THEN PROCWimp_WindowOpen(Main_Window%)
15350 WHEN 5
15360wimp%!40=AB%
15370wimp%!12=AC%
15380wimp%!8=AD%
15390wimp%!20=AE%
15400 IF wimp%!40=&ACE AND event%=18 THEN
15410 wimp%!12=wimp%!8
15420 SYS"XWimp_SendMessage",17,wimp%,wimp%!20
15430 file$=FNWimp_GetFilePathName
15440 type$=FNWimp_FileType(&ACE)
15450 PROCEvent_LoadFile(file$,type$)
15460 ENDIF
15470 ENDCASE
15480ENDPROC
15490:
15500DEF FNWimp_GetStringAtAddress(array%)
15510LOCALs$:s$=""
15520WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE:
15530=s$
15540:
15550DEF FNWimp_GetFileFromPathname(f$)
15560CASE INSTR(f$,".") OF
15570 WHEN 0 :=f$
15580 OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,".")))
15590ENDCASE
15600=FALSE
15610:
15620DEF FNWimp_FileType(type%)
15630CASEtype%OF
15640WHEN&FFF:="Text"
15650WHEN&FFD:="Data"
15660WHEN&FFB:="Basic"
15670WHEN&FF9:="Sprite"
15680WHEN&FED:="Palette"
15690WHEN&FEC:="Template"
15700WHEN&AFF:="Draw"
15710WHEN&1000:="Folder"
15720WHEN&2000:="Application"
15730OTHERWISE:=STR$~(type%)
15740ENDCASE
15750=FALSE
15760:
15770DEF PROCbotopen
15780IF wimp%!0=Main_Window% THEN
15790mainminx%=wimp%!4
15800mainminy%=wimp%!8
15810mainmaxx%=wimp%!12
15820mainmaxy%=wimp%!16
15830mainscrollx%=wimp%!20
15840mainscrolly%=wimp%!24
15850
15860backhand%=wimp%!28
15870wimp%!0=Tools_Window%
15880SYS &400cb,,wimp%
15890wimp%!0=Tools_Window%
15900wimp%!4=mainminx%-78
15910wimp%!8=mainminy%
15920wimp%!12=mainmaxx%+wimp%!4
15930wimp%!16=mainmaxy%
15940wimp%!28=backhand%
15950SYS &400C5,,wimp%
15960
15970wimp%!0=Bot_Window%
15980SYS &400cb,,wimp%
15990wimp%!0=Bot_Window%
16000wimp%!4=mainminx%+6
16010wimp%!8=mainminy%+10
16020wimp%!12=mainmaxx%+wimp%!4
16030wimp%!16=mainmaxy%-718
16040wimp%!24=SCO%
16050wimp%!28=Tools_Window%
16060SYS &400C5,,wimp%
16070
16080wimp%!0=Main_Window%
16090wimp%!4=mainminx%
16100wimp%!8=mainminy%
16110wimp%!12=mainmaxx%
16120wimp%!16=mainmaxy%
16130wimp%!20=mainscrollx%
16140wimp%!24=mainscrolly%
16150wimp%!28=Bot_Window%
16160ENDIF
16170ENDPROC
16180:
16190DEF PROCscroll
16200wimp%!0=Bot_Window%
16210SYS &400CB,,wimp%
16220wimp%!24=SCO%
16230SYS &400C5,,wimp%
16240ENDPROC
16250:
16260DEF FNisopen(win%)
16270wimp%!0=win%
16280SYS "Wimp_GetWindowState",,wimp%
16290winflags%=wimp%!32
16300IF (winflags% AND %10000000000000000) = 65536 THEN
16310=TRUE
16320ELSE
16330=FALSE
16340ENDIF
16350=FALSE
16360:
16370DEF PROCread
16380name$(cur%)=FNWimp_IconText(Main_Window%,6)
16390IF cur%=tot% THEN PROCWimp_IconPutText(Main_Window%,6,"")
16400FOR A=10 TO 17
16410info$(cur%,A-10)=FNWimp_IconText(Main_Window%,A)
16420IF cur%=tot% AND info$(cur%,A-10)<>"" THEN PROCWimp_IconPutText(Main_Window%,A,"")
16430NEXTA
16440IF cur%=tot% AND hack$(cur%)<>"" THEN PROCWimp_IconPutText(Bot_Window%,4,"")
16450ENDPROC
16460:
16470DEF PROCupdate
16480PROCWimp_IconPutText(Bot_Window%,32,"Record Number - "+STR$(cur%+1)+" of "+STR$(tot%+1))
16490PROCWimp_IconUpdate(Bot_Window%,33)
16500PROCWimp_IconPutText(Main_Window%,6,name$(cur%))
16510FOR A=10 TO 17
16520PROCWimp_IconPutText(Main_Window%,A,info$(cur%,A-10))
16530NEXTA
16540IF hack$(cur%)="" THEN PROCWimp_IconDisable(Bot_Window%,5) ELSE PROCWimp_IconEnable(Bot_Window%,5)
16550IF hack%(cur%)=TRUE THEN
16560PROCWimp_SelectIcon(Bot_Window%,5)
16570PROCWimp_IconEnable(Bot_Window%,4)
16580PROCWimp_IconEnable(Bot_Window%,39)
16590PROCWimp_IconEnable(Bot_Window%,20)
16600ELSE
16610PROCWimp_UnselectIcon(Bot_Window%,5)
16620PROCWimp_IconDisable(Bot_Window%,4)
16630PROCWimp_IconDisable(Bot_Window%,39)
16640PROCWimp_IconDisable(Bot_Window%,20)
16650IF FNisopen(Hacker_Window%) AND hack%(cur%)=FALSE THEN PROCWimp_WindowClose(Hacker_Window%)
16660ENDIF
16670PROCWimp_IconPutText(Bot_Window%,4,FNWimp_GetFileFromPathname(hack$(cur%)))
16680IF FNisopen(Main_Window%) THEN PROCWimp_IconCaret(Main_Window%,6,LEN(FNWimp_IconText(Main_Window%,6)))
16690ENDPROC
16700:
16710DEF PROCcheckmodule(path$)
16720LOCAL ERROR
16730ON ERROR LOCAL PROCerror:ENDPROC
16740progend%=HIMEM+1
16750X%=OPENIN(path$)
16760length%=EXT#X%
16770CLOSE #X%
16780IF length%>FNcheckfreespace THEN
16790ERROR 0,"SORRY NO ROOM TO LOAD MODULE"
16800ELSE
16810SYS "Wimp_SlotSize",progend%+length%,-1
16820OSCLI("LOAD "+path$+" "+STR$~(progend%))
16830IF INSTR(FNWimp_MyGetStringAtAddress(progend%+(progend%!16)),"Cheat")>0 THEN
16840titlestring$=MID$(FNWimp_MyGetStringAtAddress(progend%+(progend%!20)),1,15)
16850found=FALSE
16860position=-1
16870FOR smeg%=progend%+(progend%!20)+4 TO progend%+length%
16880IF NOT found THEN
16890paf=TRUE
16900position=smeg%
16910FOR smeg2%=1 TO LEN(titlestring$)
16920 IF ?(smeg%+smeg2%)=ASC(MID$(titlestring$,smeg2%,1)) AND paf THEN
16930 found=TRUE
16940 ELSE
16950 found=FALSE
16960 paf=FALSE
16970 ENDIF
16980NEXT smeg2%
16990ENDIF
17000NEXT smeg%
17010IF found THEN
17020position+=1
17030finish=FALSE
17040str$=""
17050REPEAT
17060a=?(position)
17070IF a=&0d THEN
17080IF ASC(LEFT$(str$,1))<>-1 THEN
17090hacker$(cur%,pos%)=str$
17100pos%+=1
17110ENDIF
17120str$=""
17130position+=1
17140ELSE
17150IF a<>0 THEN str$+=CHR$(a)
17160ENDIF
17170position+=1
17180UNTILa=0
17190ENDIF
17200ELSE
17210ERROR 0,"THIS IS NOT A CHEATMOD"
17220ENDIF
17230SYS "Wimp_SlotSize",(256*1024),-1
17240ENDIF
17250ENDPROC
17260:
17270DEFFNcheckfreespace
17280SYS"Wimp_SlotSize",-1,-1 TO ,,freepool
17290=freepool
17300:
17310DEF FNWimp_MyGetStringAtAddress(array%)
17320LOCALs$:s$=""
17330WHILE(?array%<>13)AND(?array%<>0)AND(?array%<>9)AND(?array%<>&A0):s$+=CHR$(?array%):array%+=1:ENDWHILE:
17340=s$
17350:
17360DEF PROCerror
17370VDU6
17380IF ERR=67785 THEN PROCWimp_WindowErrorBox("!Trickster","Please write enable the disk"):CLOSE #X%:ENDPROC
17390IF ERR=214 THEN PROCWimp_WindowErrorBox("!Trickster","File "+hack$(cur%)+" can not be found"):ENDPROC
17400IF ERR=15 THEN PROCWimp_WindowErrorBox("!Trickster","Sorry I can not load this file (old file format)."):ENDPROC
17410IF ERR=168 THEN
17420PROCWimp_WindowErrorBox("!Trickster","Can't create "+file$+" as it already exists as a directory")
17430ENDPROC
17440ENDIF
17450PROCWimp_WindowErrorBox("!Trickster",REPORT$+": ERR :- "+STR$(ERR)+": ERL :- "+STR$(ERL)):DOSAVE%=FALSE
17460ENDPROC
17470:
17480DEF PROCerror2
17490PROCWimp_WindowErrorBox("!Trickster","Sorry I can not load this file (old file format)."):CLOSE #X%:DOSAVE%=FALSE:ENDPROC
17500:
17510DEF PROCwinsiz
17520wimp%!0=Hacker_Window%
17530SYS &400CC,,wimp%
17540y_origin%=-16+wimp%!16-wimp%!24
17550A%=(y_origin%-324)-((pos%(cur%)-1)*32)
17560A%+=40
17570wimp%!0=wimp%!44
17580wimp%!4=A%+(wimp%!24-wimp%!16)
17590wimp%!8=wimp%!52
17600wimp%!12=wimp%!56
17610SYS &400D7,Hacker_Window%,wimp%
17620ENDPROC
17630:
17640PROCcutlong(hacker$(20,10),10)
17650DEF PROCcutlong(v$,p%)
17660A$=v$
17670A%=LEN(v$)
17680B%=A%DIV47
17690C%=A%-(B%*47)
17700FOR A=0 TO B%
17710hacker$(cur%,p%+A)=MID$(A$,((A)*48),47)
17720NEXTA
17730hacker$(cur%,p%+A)=""
17740ENDPROC
17750:
17760DEF PROCsort
17770SYS"Hourglass_On"
17780FOR B=0 TO tot%-1
17790SYS"Hourglass_Percentage",(B/(tot%-1))*100
17800FOR A=0 TO tot%-2
17810IF name$(A)>name$(A+1) THEN
17820SWAP name$(A+1),name$(A)
17830FOR C=0 TO 7
17840SWAP info$(A+1,C),info$(A,C)
17850NEXT C
17860SWAP hack$(A+1),hack$(A)
17870SWAP hack%(A+1),hack%(A)
17880FOR C=0 TO 25
17890SWAP hacker$(A+1,C),hacker$(A,C)
17900NEXT C
17910SWAP pos%(A+1),pos%(A)
17920ENDIF
17930NEXTA
17940NEXTB
17950SYS"Hourglass_Smash"
17960ENDPROC
17970:
17980DEF PROCsearch
17990ST%=FALSE
18000found=FALSE
18010DONE%=0
18020A$=FNtolower(FNWimp_IconText(Bot_Window%,18))
18030C=LEN(A$)
18040cuv=FALSE
18050B$=""
18060IF SNUM%=-2 THEN SNUM%=cur%+1
18070WHILE B$<>A$ AND SNUM%<tot%+1 AND ST%=FALSE AND found=FALSE
18080B$=FNtolower(LEFT$(name$(SNUM%),C))
18090IF SNUM%>=tot% THEN
18100SNUM%=-1
18110DONE%+=1
18120ENDIF
18130SNUM%+=1
18140IF DONE%=2 THEN ST%=TRUE
18150ENDWHILE
18160IF ST%=FALSE THEN
18170PROCread
18180cur%=SNUM%-1
18190PROCupdate
18200IF cur%=0 THEN
18210PROCWimp_IconDisable(Tools_Window%,10)
18220PROCWimp_IconDisable(Tools_Window%,11)
18230PROCWimp_IconDisable(Tools_Window%,2)
18240PROCWimp_IconEnable(Tools_Window%,8)
18250PROCWimp_IconEnable(Tools_Window%,9)
18260PROCWimp_IconEnable(Tools_Window%,3)
18270ENDIF
18280IF cur%>0 AND cur%<tot% THEN
18290PROCWimp_IconEnable(Tools_Window%,8)
18300PROCWimp_IconEnable(Tools_Window%,9)
18310PROCWimp_IconEnable(Tools_Window%,10)
18320PROCWimp_IconEnable(Tools_Window%,11)
18330PROCWimp_IconEnable(Tools_Window%,3)
18340PROCWimp_IconDisable(Tools_Window%,2)
18350ENDIF
18360IF cur%=tot% THEN
18370PROCWimp_IconEnable(Tools_Window%,2)
18380PROCWimp_IconEnable(Tools_Window%,3)
18390PROCWimp_IconEnable(Tools_Window%,8)
18400PROCWimp_IconEnable(Tools_Window%,9)
18410PROCWimp_IconEnable(Tools_Window%,10)
18420PROCWimp_IconEnable(Tools_Window%,11)
18430ENDIF
18440ENDIF
18450IF ST%=TRUE THEN PROCWimp_WindowErrorBox("!Trickster","No match can be found with the name '"+FNWimp_IconText(Bot_Window%,18)+"'")
18460ENDPROC
18470:
18480DEFFNtolower(Q$)
18490FOR B=1 TO LEN(Q$)
18500IF MID$(Q$,B,1)>="A" AND MID$(Q$,B,1)<="Z" THEN
18510MID$(Q$,B,1)=CHR$(ASC(MID$(Q$,B,1))+(ASC("a")-ASC("A")))
18520ENDIF
18530NEXT B
18540=Q$
18550:
18560DEF FNgetstring(array%)
18570LOCAL path$,pointer%
18580path$=""
18590pointer%=array%
18600REPEAT
18610path$+=CHR$?pointer%
18620pointer%+=1
18630UNTIL ?pointer%=0 OR ?pointer%=13
18640=path$
18650:
18660DEFPROCopenprinter
18670SYS "XPDriver_Info" TO R0,R1,R2,R3,R4,R5,R6,R7
18680IF R1=0 AND R2=0 AND R3=0 AND R5=0 AND R6=0 AND R7=0 THEN
18690PROCWimp_IconPutText(Bot_Window%,13,"No driver loaded")
18700DRIVER%=FALSE
18710IF STA%=TRUE THEN PROCWimp_IconDisable(Bot_Window%,12):STA%=FALSE
18720ELSE
18730DRIVER%=TRUE
18740ENDIF
18750IF DRIVER%=TRUE THEN
18760printer$=FNgetstring(R4)
18770PROCWimp_IconPutText(Bot_Window%,13,printer$)
18780IF STA%=FALSE AND tot%>1 THEN PROCWimp_IconEnable(Bot_Window%,12):STA%=TRUE
18790ENDIF
18800ENDPROC
18810:
18820DEFPROCprint
18830:
18840printhand%=OPENOUT("PRINTER:$.Job1") : REM start a job !!!
18850$title%="Trickster file"
18860SYS &80145,printhand%,title%
18870BPUT#printhand%,13 : REM put head to left of paper to start!!!!
18880:
18890IF TYPE%=TRUE THEN
18900IF PCHEAT%=TRUE THEN
18910 PROCprintline("Game Name - "+name$(cur%)+CHR$(10))
18920 PROCprintline(CHR$(10))
18930 PROCprintline("Tricks and Tactics"+CHR$(10))
18940 FOR A=0 TO 7
18950 IF info$(cur%,A)<>"" THEN PROCprintline(info$(cur%,A)+CHR$(10))
18960 NEXTA
18970PROCprintline(CHR$(10))
18980ENDIF
18990IF PMODULE%=TRUE THEN
19000 IF hack%(cur%)=TRUE THEN
19010 PROCprintline("Cheat Name - "+LEFT$(hacker$(cur%,0),LEN(hacker$(cur%,0))-6)+CHR$(10))
19020 PROCprintline(CHR$(10))
19030 PROCprintline("Author of Cheat - "+MID$(hacker$(cur%,1),12,LEN(hacker$(cur%,1))-8)+CHR$(10))
19040 PROCprintline(CHR$(10))
19050 PROCprintline("Cheated with - "+MID$(hacker$(cur%,2),6,LEN(hacker$(cur%,2)))+CHR$(10))
19060 PROCprintline(CHR$(10))
19070 PROCprintline("Keys"+CHR$(10))
19080 FOR A=0 TO pos%(cur%)-4
19090 IF ASC(LEFT$(hacker$(cur%,A+3)))=160 THEN LEFT$(hacker$(cur%,A+3))=" "
19100 PROCprintline(hacker$(cur%,A+3)+CHR$(10))
19110 NEXTA
19120 PROCprintline(CHR$(10))
19130 ENDIF
19140ENDIF
19150ENDIF
19160IF TYPE%=FALSE THEN
19170FOR DD=0 TO tot%-1
19180IF PCHEAT%=TRUE THEN
19190 PROCprintline("Game Name - "+name$(DD)+CHR$(10))
19200 PROCprintline(CHR$(10))
19210 PROCprintline("Tricks and Tactics"+CHR$(10))
19220 FOR A=0 TO 7
19230 IF info$(DD,A)<>"" THEN PROCprintline(info$(DD,A)+CHR$(10))
19240 NEXTA
19250PROCprintline(CHR$(10))
19260ENDIF
19270IF PMODULE%=TRUE THEN
19280 IF hack%(DD)=TRUE THEN
19290 PROCprintline("Cheat Name - "+LEFT$(hacker$(DD,0),LEN(hacker$(DD,0))-6)+CHR$(10))
19300 PROCprintline(CHR$(10))
19310 PROCprintline("Author of Cheat - "+MID$(hacker$(DD,1),12,LEN(hacker$(DD,1))-8)+CHR$(10))
19320 PROCprintline(CHR$(10))
19330 PROCprintline("Cheated with - "+MID$(hacker$(DD,2),6,LEN(hacker$(DD,2)))+CHR$(10))
19340 PROCprintline(CHR$(10))
19350 PROCprintline("Keys"+CHR$(10))
19360 FOR A=0 TO pos%(DD)-4
19370 IF ASC(LEFT$(hacker$(DD,A+3)))=160 THEN LEFT$(hacker$(DD,A+3))=" "
19380 PROCprintline(hacker$(DD,A+3)+CHR$(10))
19390 NEXTA
19400PROCprintline(CHR$(10))
19410 ENDIF
19420ENDIF
19430NEXTDD
19440ENDIF
19450:
19460BPUT#printhand%,12 : REM do linefeed !!!!
19470SYS &80148,printhand%
19480CLOSE #printhand%
19490ENDPROC
19500:
19510DEFPROCprintline(line$)
19520FOR cco=1 TO LEN(line$)
19530byte=ASC(MID$(line$,cco,1))
19540BPUT#printhand%,byte
19550IF byte=10 OR byte=13 THEN BPUT#printhand%,13 : REM put head to left of paper
19560NEXT cco
19570ENDPROC
19580:
19590DEF PROCmousebox(w%)
19600wimp%!0=w%
19610SYS"Wimp_GetWindowOutline",,wimp%
19620MOUSE RECTANGLE wimp%!4+2,wimp%!8+2,wimp%!12-wimp%!4-4,wimp%!16-wimp%!8-4
19630ENDPROC
19640:
19650DEF PROCunbox
19660SYS "OS_ReadModeVariable",-1,11 TO ,,xpic
19670SYS "OS_ReadModeVariable",-1,12 TO ,,ypic
19680SYS "OS_ReadModeVariable",-1,4 TO ,,xfact
19690SYS "OS_ReadModeVariable",-1,5 TO ,,yfact
19700MOUSE RECTANGLE 0,0,xpic<<xfact,ypic<<yfact
19710ENDPROC
19720:
19730DEF FNnacheck(A$)
19740IF INSTR(A$,"TrickMods")<>0 THEN
19750=TRUE
19760ELSE
19770=FALSE
19780ENDIF
19790=FALSE
fileload$=" "
ș "OS_GetEnv" � env$
� �env$," -quit ") �
(2fileload$=�env$,�env$,�(34),�env$,�(34))+1)+1)
2�
<� OpSys%=0
F'� SYS "OS_Byte",129,0,&FF TO OpSys%
PY� IF OpSys%=&A1 THEN OSCLI"ERROR Trickster will not work with RISC OS 2. Sorry!!":END
Zș "OS_GetEnv" � env$
d� �env$," -quit ") �
n2fileload$=�env$,�env$,�(34),�env$,�(34))+1)+1)
x�
�)ș &00000006,129,0,&FF � ,os_version%
�Ȏ os_version% �
�
� &A3,&A4
�dragicons%=�
�
�dragicons%=�
��
�A �Wimp_Start("Trickster",3000,2537)
�3 �User_SetInitialData
�. �Create_Windows
�, �Create_Menus
�� fileload$<>" " �
�$�Event_LoadFile(fileload$,"ACE")
/�Wimp_IconPutText(Save_Window%,1,fileload$)
�
"1 �Wimp_WaitForEvent
,. �Wimp_CloseDown
6 �
@ :
J! � �User_SetInitialData
T DOSAVE%=�
^ Z=0
h PCHEAT%=�
r PMODULE%=�
| TYPE%=�
� STA%=�
� DRIVER%=�
� � title% 256
� SNUM%=-2
� num=0
� AAA%=�
� pos%=0
� WI$="NONE"
� SCO%=0
� dim=200
� � pos%(dim)
� � hacker$(dim,25)
� � name$(dim)
� info$(dim,7)
� hack$(dim)
� hack%(dim)
& hack%()=�
0 hack$()=""
: name$()=""
D info$()=""
N cur%=0
X tot%=0
b SA%=�
l
UPDATE%=�
v CD%=�
� �
� :
� � �Create_Windows
� �Wimp_SpritesLoad
�; Info_Window%=�Wimp_WindowLoad("Info")
�; Save_Window%=�Wimp_WindowLoad("Save")
�< Close_Window%=�Wimp_WindowLoad("Close")
�< Save2_Window%=�Wimp_WindowLoad("Save2")
�; Main_Window%=�Wimp_WindowLoad("Main")
�< Tools_Window%=�Wimp_WindowLoad("Tools")
�< Title_Window%=�Wimp_WindowLoad("Title")
�: Bot_Window%=�Wimp_WindowLoad("Bot")
�= Hacker_Window%=�Wimp_WindowLoad("Hacker")
0 Bar_Icon%=�Wimp_IconBar("!Trickster")
�
:
" � �Event_Save(window%)
* Ȏ window% �
4" � Save_Window% :=�
># � Save2_Window% :=�
H :=�
R
�
\ =�
f
:
p. � �Event_Sprites(window%)=sprites%
z :
� � �Create_Menus
�R save%=�Wimp_MenuCreate("Save\Tricks>Save_Window%\Text>Save2_Window%")
�@ menu$="Trickster\Info>Info_Window%\Save>save%\Quit"
�. Bar_Menu%=�Wimp_MenuCreate(menu$)
�+ �Wimp_MenuDisable(Bar_Menu%,2)
� �
�
:
�" � �Event_Menu(window%)
� Ȏ window% �
�. � Bar_Window% : =Bar_Menu%
�B � Main_Window%,Tools_Window%,Bot_Window% : =Bar_Menu%
�. � Title_Window% : =Bar_Menu%
�! : =�
�
=�
:
$1 � �Event_WindowClose(window%,buttons%)
. Ȏ window% �
8 � Main_Window%
B �read
L) �Wimp_WindowClose(Bot_Window%)
V+ �Wimp_WindowClose(Tools_Window%)
` WI$="TITLE"
j0 �Wimp_WindowBringToTop(Title_Window%)
t � Title_Window%
~ WI$="NONE"
� �
� �
� :
�5 � �Event_Draw(window%,x_origin%,y_origin%)
� Ȏ window% �
�8 � Info_Window% : �User_DrawInfoWindow
�8 � Save_Window% : �User_DrawSaveWindow
�9 � Close_Window% : �User_DrawCloseWindow
�9 � Save2_Window% : �User_DrawSave2Window
�8 � Main_Window% : �User_DrawMainWindow
�9 � Tools_Window% : �User_DrawToolsWindow
�9 � Title_Window% : �User_DrawTitleWindow
7 � Bot_Window% : �User_DrawBotWindow
: � Hacker_Window% : �User_DrawHackerWindow
�
�
( :
2' � �User_DrawInfoWindow
< �
F :
P) � �User_DrawHackerWindow
Z+ � x_origin%-7,y_origin%-48
d9 � �hacker$(cur%,0),�(hacker$(cur%,0))-6)
n, � x_origin%-7,y_origin%-140
x< � �hacker$(cur%,1),12,�(hacker$(cur%,1))-8)
�, � x_origin%-7,y_origin%-232
�9 � �hacker$(cur%,2),6,�(hacker$(cur%,2)))
�% � A=0 � pos%(cur%)-4
�5 � x_origin%-7,(y_origin%-324)-(A*32)
�$ � hacker$(cur%,A+3)
� �A
� �
� :
�' � �User_DrawSaveWindow
� �
� :
�( � �User_DrawCloseWindow
� �
:
( � �User_DrawSave2Window
�
" :
,' � �User_DrawMainWindow
6 �
@ :
J( � �User_DrawToolsWindow
T �
^ :
h( � �User_DrawTitleWindow
r �
| :
�& � �User_DrawBotWindow
�% ș"Wimp_SetColour",1
�; ȓ Ȑ (x_origin%+102),y_origin%-702,458,30
�& ș"Wimp_SetColour",11
�! len=458/(tot%+1)
� poss=cur%*len
�@ ȓ Ȑ (x_origin%+102)+poss,y_origin%-702,len,30
� �
� :
�; � �Event_MouseClick(window%,icon%,button%,x%,y%)
� Ȏ window% �
�1 � Bar_Window% : �User_MouseBar
�B � Info_Window% : �User_MouseInfo( button%,icon%)
C � Close_Window% : �User_MouseClose( button%,icon%)
B � Main_Window% : �User_MouseMain( button%,icon%)
C � Tools_Window% : �User_MouseTools( button%,icon%)
&C � Title_Window% : �User_MouseTitle( button%,icon%)
0A � Bot_Window% : �User_MouseBot( button%,icon%)
: �
D �
N :
X � �User_MouseBar
bm � WI$="MAIN" � SA%=� � �Wimp_WindowBringToTop(Main_Window%):�Wimp_WindowBringToTop(Main_Window%)
lJ � WI$="TITLE" � SA%=� � �Wimp_WindowBringToTop(Title_Window%)
vU � WI$="NONE" � SA%=� � �Wimp_WindowBringToTop(Title_Window%):WI$="TITLE"
� �
� :
�. � �User_MouseInfo( button%,icon%)
� �
� :
�/ � �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%=�
4$�Wimp_WindowClose(Close_Window%)
> CD%=�
H�
R � icon%=3 �
\
�unbox
f$�Wimp_WindowClose(Close_Window%)
p�
z� CD%=� � �Wimp_CloseDown
� �
� :
�. � �User_MouseMain( button%,icon%)
� �
� :
�/ � �User_MouseTools( button%,icon%)
� � icon%=4 �
� UPDATE%=�
� �read
� �sort
� �update
� �
� � icon%=3 �
d check%=�Wimp_WindowCancel("!Trickster","Are you sure you want to delete this record ?")
� check%=� �
UPDATE%=�
$ � A=cur% � tot%
. name$(A)=name$(A+1)
8 � B=0 � 7
B$ info$(A,B)=info$(A+1,B)
L �B
V hack$(A)=hack$(A+1)
` hack%(A)=hack%(A+1)
j � B=0 � 25
t( hacker$(A,B)=hacker$(A+1,B)
~ �B
� pos%(A)=pos%(A+1)
� �A
� tot%-=1
�(�Wimp_IconPutText(Main_Window%,6,"")
�� A=10 � 17
�(�Wimp_IconPutText(Main_Window%,A,"")
��A
�'�Wimp_IconPutText(Bot_Window%,4,"")
� �update
� � cur%=tot% �
�%�Wimp_IconEnable(Tools_Window%,2)
�&�Wimp_IconDisable(Tools_Window%,8)
&�Wimp_IconDisable(Tools_Window%,9)
&�Wimp_IconDisable(Tools_Window%,3)
�
1� tot%<2 � �Wimp_IconDisable(Tools_Window%,4)
(� tot%=0 �
2. �Wimp_IconDisable(Bot_Window%,12)
<. �Wimp_IconDisable(Bot_Window%,15)
F. �Wimp_IconDisable(Bot_Window%,18)
P+ �Wimp_MenuDisable(Bar_Menu%,2)
Z�
d �
n �
xK � (icon%=8 � button%=4) � (icon%=11 � button%=1 � cur%<tot%) �
� UPDATE%=�
� �read
�cur%+=1
��update
� � cur%=tot% �
�%�Wimp_IconEnable(Tools_Window%,2)
�&�Wimp_IconDisable(Tools_Window%,8)
�&�Wimp_IconDisable(Tools_Window%,9)
�&�Wimp_IconDisable(Tools_Window%,3)
��
�&�Wimp_IconEnable(Tools_Window%,10)
�&�Wimp_IconEnable(Tools_Window%,11)
� �
? � (icon%=9 � button%=4) � (icon%=10 � button%=1) �
UPDATE%=�
�read
"
cur%=tot%
,�update
6 � cur%=tot% �
@%�Wimp_IconEnable(Tools_Window%,2)
J&�Wimp_IconDisable(Tools_Window%,8)
T&�Wimp_IconDisable(Tools_Window%,9)
^&�Wimp_IconDisable(Tools_Window%,3)
h�
r&�Wimp_IconEnable(Tools_Window%,10)
|&�Wimp_IconEnable(Tools_Window%,11)
� �
�H � (icon%=11 � button%=4) � (icon%=8 � button%=1 � cur%>0) �
� UPDATE%=�
�/ �Wimp_IconDisable(Tools_Window%,2)
�. �Wimp_IconEnable(Tools_Window%,8)
�. �Wimp_IconEnable(Tools_Window%,9)
�. �Wimp_IconEnable(Tools_Window%,3)
� � cur%=tot% �
�1 �Wimp_IconPutText(Main_Window%,6,"")
� � A=10 � 17
�1 �Wimp_IconPutText(Main_Window%,A,"")
� �A
�0 �Wimp_IconPutText(Bot_Window%,4,"")
hack%(cur%)=�
�
�read
& cur%-=1
0 � cur%=0 �
:'�Wimp_IconDisable(Tools_Window%,10)
D'�Wimp_IconDisable(Tools_Window%,11)
N�
X �update
b �
l? � (icon%=10 � button%=4) � (icon%=9 � button%=1) �
v UPDATE%=�
�/ �Wimp_IconDisable(Tools_Window%,2)
�. �Wimp_IconEnable(Tools_Window%,8)
�. �Wimp_IconEnable(Tools_Window%,9)
�. �Wimp_IconEnable(Tools_Window%,3)
� � cur%=tot% �
�1 �Wimp_IconPutText(Main_Window%,6,"")
� � A=10 � 17
�1 �Wimp_IconPutText(Main_Window%,A,"")
� �A
�0 �Wimp_IconPutText(Bot_Window%,4,"")
� hack%(cur%)=�
� �
� �read
cur%=0
� cur%=0 �
0 �Wimp_IconDisable(Tools_Window%,10)
0 �Wimp_IconDisable(Tools_Window%,11)
* �
4
> �update
H
R �
\ � icon%=2 �
f UPDATE%=�
p3 � �Wimp_IconText(Main_Window%,6)<>"" �
z �read
� tot%+=1
� cur%+=1
�5 � tot%>0 � �Wimp_MenuEnable(Bar_Menu%,2)
�9 � tot%>1 � �Wimp_IconEnable(Tools_Window%,4)
�/ �Wimp_IconEnable(Tools_Window%,10)
�/ �Wimp_IconEnable(Tools_Window%,11)
�; � DRIVER%=� � �Wimp_IconEnable(Bot_Window%,12)
�- �Wimp_IconEnable(Bot_Window%,15)
�- �Wimp_IconEnable(Bot_Window%,18)
� �update
� �
�p �Wimp_WindowErrorBox("Trickster","Please enter some text into the game name icon and press 'ADD'.")
� �
�
� icon%=5 �
. �Wimp_SelectIcon(Tools_Window%,5)
$> � SCO%=-192 � �Wimp_UnselectIcon(Tools_Window%,6)
.> � SCO%=-384 � �Wimp_UnselectIcon(Tools_Window%,7)
8? � SCO%=-576 � �Wimp_UnselectIcon(Tools_Window%,12)
B SCO%=0
L �scroll
V �
` � icon%=6 �
j. �Wimp_SelectIcon(Tools_Window%,6)
t; � SCO%=0 � �Wimp_UnselectIcon(Tools_Window%,5)
~> � SCO%=-384 � �Wimp_UnselectIcon(Tools_Window%,7)
�? � SCO%=-576 � �Wimp_UnselectIcon(Tools_Window%,12)
� SCO%=-192
� �scroll
� �
� � icon%=7 �
�. �Wimp_SelectIcon(Tools_Window%,7)
�> � SCO%=-192 � �Wimp_UnselectIcon(Tools_Window%,6)
�; � SCO%=0 � �Wimp_UnselectIcon(Tools_Window%,5)
�? � SCO%=-576 � �Wimp_UnselectIcon(Tools_Window%,12)
� SCO%=-384
� �scroll
� �
� icon%=12 �
/ �Wimp_SelectIcon(Tools_Window%,12)
> � SCO%=-192 � �Wimp_UnselectIcon(Tools_Window%,6)
; � SCO%=0 � �Wimp_UnselectIcon(Tools_Window%,5)
(> � SCO%=-384 � �Wimp_UnselectIcon(Tools_Window%,7)
2 SCO%=-576
< �scroll
F �
P8 � icon%=8 � icon%=9 � icon%=10 � icon%=11 �
Z� �isopen(Hacker_Window%) �
d� hack%(cur%)=� �
n�winsiz
x*�Wimp_WindowBringToTop(Hacker_Window%)
�)�Wimp_WindowForceDraw(Hacker_Window%)
��
��
�%�Wimp_WindowClose(Hacker_Window%)
��
��
� �
� :
�/ � �User_MouseTitle( button%,icon%)
�C � icon%=8 � icon%=9 � �Wimp_WindowClose(Title_Window%)
�# � icon%=8 � WI$="NONE"
�u � icon%=9 � WI$="MAIN":�Wimp_WindowBringToTop(Main_Window%):�Wimp_WindowBringToTop(Main_Window%):�update
� �
:
- � �User_MouseBot( button%,icon%)
� �
" � � � �error:�
,� icon%=34 �
6PCHEAT% = � PCHEAT%
@(� PCHEAT%=� � PMODULE%=� � PCHEAT%=�
JW� PCHEAT%=� � �Wimp_SelectIcon(Bot_Window%,34) � �Wimp_UnselectIcon(Bot_Window%,34)
T�
^� icon%=35 �
hPMODULE% = � PMODULE%
r)� PMODULE%=� � PCHEAT%=� � PMODULE%=�
|X� PMODULE%=� � �Wimp_SelectIcon(Bot_Window%,35) � �Wimp_UnselectIcon(Bot_Window%,35)
��
�F � icon%=38 � �("Filer_OpenDir <Trickster$Dir>.TrickMods")
� � icon%=12 � �print
�B � icon%=23 � �Wimp_SelectIcon(Bot_Window%,23):TYPE%=�
�B � icon%=24 � �Wimp_SelectIcon(Bot_Window%,24):TYPE%=�
� � icon%=15 �
�3 � �Wimp_IconText(Bot_Window%,18)<>"" �
� �search
� �
�N �Wimp_WindowErrorBox("!Trickster","Please enter a search string")
� �
� �
� � icon%=39 �
�21
& � ("RMLOAD "+hack$(cur%))
�6
& �
0 � icon%=20 �
:�winsiz
D*�Wimp_WindowBringToTop(Hacker_Window%)
N�
X8 � icon%=6 � icon%=8 � icon%=10 � icon%=37 �
b �read
l"�Wimp_WindowClose(Bot_Window%)
v$�Wimp_WindowClose(Tools_Window%)
�#�Wimp_WindowClose(Main_Window%)
�WI$="TITLE"
�)�Wimp_WindowBringToTop(Title_Window%)
��
�4 � icon%=5 � icon%=2 � hack$(cur%)<>"" �
� UPDATE%=�
�& hack%(cur%)=� hack%(cur%)
� � hack%(cur%)=� �
�#�Wimp_SelectIcon(Bot_Window%,5)
�#�Wimp_IconEnable(Bot_Window%,4)
�$�Wimp_IconEnable(Bot_Window%,39)
�$�Wimp_IconEnable(Bot_Window%,20)
��
%�Wimp_UnselectIcon(Bot_Window%,5)
$�Wimp_IconDisable(Bot_Window%,4)
%�Wimp_IconDisable(Bot_Window%,39)
%�Wimp_IconDisable(Bot_Window%,20)
*�
4 �
> �
H :
R0 � �Event_KeyPress(window%,icon%,key%)
\ Ȏ window% �
fE � Main_Window% : �User_KeyPressMain( icon%,key%)
pD � Bot_Window% : �User_KeyPressBot( icon%,key%)
z �
� �
� :
�. � �User_KeyPressMain( icon%,key%)
�U � PROCWimp_WindowAlert("Main","Key pressed="+STR$key%+"icon="+STR$icon%)
�E � icon%=17 � key%=13 � cur%=tot% � �User_MouseTools(4,2)
�E � icon%=17 � key%=13 � cur%<tot% � �User_MouseTools(4,8)
�s � icon%=6 � (key%=13 � key%=398) � �Wimp_IconCaret(Main_Window%,10,�(�Wimp_IconText(Main_Window%,10)))
�g � icon%=6 � key%=399 � �Wimp_IconCaret(Main_Window%,17,�(�Wimp_IconText(Main_Window%,17)))
� �
� :
�- � �User_KeyPressBot( icon%,key%)
� �
� :
% � �Event_MenuChoice(menu%)
Ȏ menu% �
< � Bar_Menu% : �User_MenuChoiceBar
$
�
. �
8 :
B � �User_MenuChoiceBar
L$ Ȏ �Wimp_MenuChoice(0) �
V � 1 :
` � 3
j� UPDATE%=� �
tD�Wimp_IconPutText(Close_Window%,0,"This file has been modified")
~)�Wimp_WindowBringToTop(Close_Window%)
��mousebox(Close_Window%)
��
�� UPDATE%=� � finished%=�
�
�
� �
� :
�) � �Event_LoadFile(file$,type$)
� � �
� � � � �error:�
�� type$="BBD" �
�g�Wimp_WindowAlert("!Trickster","Can not accept 'CheatData' files, please convert using !Pad>Trick")
��
� type$="ACE" �
� UPDATE%=� �
{check%=�Wimp_WindowCancel("!Trickster","The current file has been modified, are you sure you want to load a new one ?")
� check%=� � UPDATE%=�
(�
2� UPDATE%=� �
<
UPDATE%=�
F+�Wimp_IconPutText(Save_Window%,1,file$)
PX%=�(file$)
Z
� X%<>0 �
d� #X%,tot%
n� A=0 � tot%
x� #X%,pos%(A)
�� B=0 � 25
�� #X%,hacker$(A,B)
��B
�� #X%,name$(A)
�
� B=0 � 7
�� #X%,info$(A,B)
��B
�� #X%,hack$(A)
�� #X%,hack%(A)
��
��A
��#X%
�
cur%=0
'�Wimp_IconDisable(Tools_Window%,10)
'�Wimp_IconDisable(Tools_Window%,11)
� cur%<tot% �
"%�Wimp_IconEnable(Tools_Window%,9)
,%�Wimp_IconEnable(Tools_Window%,8)
6%�Wimp_IconEnable(Tools_Window%,3)
@&�Wimp_IconDisable(Tools_Window%,2)
J�
T� tot%>0 �
^!�Wimp_MenuEnable(Bar_Menu%,2)
h�
r� tot%=0 �
|"�Wimp_MenuDisable(Bar_Menu%,2)
�&�Wimp_IconDisable(Tools_Window%,8)
�&�Wimp_IconDisable(Tools_Window%,9)
�&�Wimp_IconDisable(Tools_Window%,3)
�%�Wimp_IconEnable(Tools_Window%,2)
��
�� tot%<2 �
�/ �Wimp_IconDisable(Tools_Window%,4)
�. �Wimp_IconDisable(Bot_Window%,12)
�. �Wimp_IconDisable(Bot_Window%,15)
�. �Wimp_IconDisable(Bot_Window%,18)
��
�� tot%>1 �
�. �Wimp_IconEnable(Tools_Window%,4)
; � DRIVER%=� � �Wimp_IconEnable(Bot_Window%,12)
- �Wimp_IconEnable(Bot_Window%,15)
- �Wimp_IconEnable(Bot_Window%,18)
&�
0)�Wimp_WindowBringToTop(Title_Window%)
:%�Wimp_WindowClose(Hacker_Window%)
D"�Wimp_WindowClose(Bot_Window%)
N$�Wimp_WindowClose(Tools_Window%)
X#�Wimp_WindowClose(Main_Window%)
b�update
l�
v�
�) ș"Wimp_GetPointerInfo",,wimp%
�0 � wimp%!16=3 � wimp%!12=Bot_Window% �
� � type$="FFA" �
�� LOCAL ERROR
�'� ON ERROR LOCAL PROCerror2:ENDPROC
�X%=�(file$)
�
� X%<>0 �
��#X%
�ș"Hourglass_On"
� UPDATE%=�
��checkmodule(file$)
�pos%(cur%)=pos%
�� DOSAVE%=� �
.� �hacker$(cur%,pos%(cur%)-1),1)<>�(160) �
/�cutlong(hacker$(cur%,pos%(cur%)-1),pos%-1)
pos%(cur%)=pos%(cur%)+(B%)
�
*� �isopen(Hacker_Window%) �
4�winsiz
>*�Wimp_WindowBringToTop(Hacker_Window%)
H)�Wimp_WindowForceDraw(Hacker_Window%)
R�
\
pos%=0
fhack%(cur%)=�
p#�Wimp_IconEnable(Bot_Window%,4)
z#�Wimp_SelectIcon(Bot_Window%,5)
�$�Wimp_IconEnable(Bot_Window%,39)
�$�Wimp_IconEnable(Bot_Window%,20)
�#�Wimp_IconEnable(Bot_Window%,5)
�� hack$(cur%)=file$
�'a$=�Wimp_GetFileFromPathname(file$)
�AA%=�nacheck(file$)
�k� AA%=� � hack$(cur%)="<Trickster$Dir>.TrickMods."+�Wimp_GetFileFromPathname(file$) � hack$(cur%)=file$
�K�Wimp_IconPutText(Bot_Window%,4,�Wimp_GetFileFromPathname(hack$(cur%)))
��
�ș"Hourglass_Smash"
��
��
� �
�
:
+ � �Event_SaveFile(file$,window%)
$ � �
. � � � �error:�
8 Ȏ window% �
B � Save_Window%
LX%=�(file$)
V
� X%<>0 �
`Scheck%=�Wimp_WindowCancel("!Trickster","This file already exists, overwrite ?")
j� check%=� � X%=0
t�#X%
~�
�� X%=0 �
�� DOSAVE%=� �
� � cur%=tot% �
�1 �Wimp_IconPutText(Main_Window%,6,"")
� � A=10 � 17
�1 �Wimp_IconPutText(Main_Window%,A,"")
� �A
�0 �Wimp_IconPutText(Bot_Window%,4,"")
� hack%(cur%)=�
� �
� �read
�X%=�(file$)
� X%<>0 �
� #X%,tot%
� A=0 � tot%
� #X%,pos%(A)
(� B=0 � 25
2� #X%,hacker$(A,B)
<�B
F� #X%,name$(A)
P
� B=0 � 7
Z� #X%,info$(A,B)
d�B
n� #X%,hack$(A)
x� #X%,hack%(A)
��A
��
��#X%
�� ("SETTYPE "+file$+" ACE")
��Wimp_MenuClose
��
�
UPDATE%=�
��
� � Save2_Window%
�X%=�(file$)
�
� X%<>0 �
�Scheck%=�Wimp_WindowCancel("!Trickster","This file already exists, overwrite ?")
�� check%=� � X%=0:�#X%
�
� X%=0 �
� �
"� � � �error
,� DOSAVE%=� �
6 �Wimp_MenuClose
@ �("SPOOL "+file$)
J� DD=0 � tot%-1
T& �"Game Name - "+name$(DD)+�(10);
^
�(10);
h" �"Tricks and Tactics"+�(10);
r � A=0 � 7
|/ � info$(DD,A)<>"" � �info$(DD,A)+�(10);
� �A
��(10);
� � hack%(DD)=� �
�B �"Cheat Name - "+�hacker$(DD,0),�(hacker$(DD,0))-6)+�(10);
� �(10);
�J �"Author of Cheat - "+�hacker$(DD,1),12,�(hacker$(DD,1))-8)+�(10);
� �(10);
�D �"Cheated with - "+�hacker$(DD,2),6,�(hacker$(DD,2)))+�(10);
� �(10);
� �"Keys"+�(10);
� � A=0 � pos%(DD)-4
�: � �(�hacker$(DD,A+3)))=160 � �hacker$(DD,A+3))=" "
�: � �(�hacker$(DD,A+3)))=&0d � �hacker$(DD,A+3))=" "
�hacker$(DD,A+3)+�(10);
�A
�(10);
& �
0�DD
:�
D �("SPOOL")
N �("SETTYPE "+file$+" FFF")
X �6
b6 � file$="<Wimp$Scrap>" � �Wimp_SendToEdit(file$)
l �
v �
�� DOSAVE%=� � DOSAVE%=�
� �
�:
�G� *****************************************************************
�:
�.� �Wimp_WindowTitlePutText(window%,title$)
�wimp%!0 = window%
�ș &000400CC,,wimp%
�po% = !(wimp%+76)
�$po% = title$+�0
��
�:
�(� �Wimp_WindowAlert(title$,message$)
+�Wimp_WindowAlertBox(title$,message$,0)
�
:
3� �Wimp_WindowAlertBox(title$,message$,button%)
*� response%
4$(wimp%+4)=message$
>Ȏ button% �
H � 2 : response%=1
R � 1 : response%=15
\! � 3 : response%=(1<<5)+16
f! � 4 : response%=(1<<6)+16
p : response%=16
z�
�=ș "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)
��
�:
� �Wimp_WindowTitle(window%)
wimp%!0=window%
"ș "Wimp_GetWindowInfo",,wimp%
$6� ((wimp%!60)�&100)=0 � 1,"Title isn't indirected"
.=$(wimp%!76)
8:
B� �Wimp_WindowLoad(window$)
L9=�Wimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
V:
`-� �Wimp_WindowLoadFrom(window$,template$)
j� c%,i%,n%,j%,sp$,sp2$
t%ș "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%
- sp$=�Wimp_GetStringAtAddress(wimp%!28)
" ș "Wimp_DeleteIcon",,wimp%
Ȏ sprites% �
( � 1 : wimp%!32=1
2 :
</ ș "OS_SpriteOp",&108,sprites% � ,,,n%
F
j%=0
P � : j%+=1
Z= ș "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
d7 sp2$=�Wimp_GetStringAtAddress(pointer_block%)
n � j%=n% � sp$=sp2$
x4 � sp$=sp2$ � wimp%!32=sprites% � wimp%!32=1
� �
� wimp%!4=c%
�. ș "Wimp_CreateIcon",,wimp%+4 � handle%
� i%+=4
� � (wimp%!i%)=-1
��
�=c%
�:
�� �Wimp_WindowOpen(window%)
�!wimp%=window%
�#ș "Wimp_GetWindowState",,wimp%
��botopen
�ș "Wimp_OpenWindow",,wimp%
�
:
%� �Wimp_WindowBringToTop(window%)
"!wimp%=window%
,#ș "Wimp_GetWindowState",,wimp%
6wimp%!28=-1
@�botopen
Jș "Wimp_OpenWindow",,wimp%
T�
^:
h � �Wimp_WindowClose(window%)
r!wimp%=window%
| ș "Wimp_CloseWindow",,wimp%
��
�:
�$� �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_WindowInterface
� ș"Wimp_BorderWindow",,wimp%
��
�:
G� *****************************************************************
:
%� �Wimp_IconUpdate(window%,icon%)
&wimp%!0=window%
0wimp%!4=icon%
:
wimp%!8=0
Dwimp%!12=0
N!ș "Wimp_SetIconState",,wimp%
X�
b:
l;� �Wimp_SetBar(win%,dragicon%,sizeicon%,range%,number%)
v� number%<0 � number%=0
�%� number%>range% � number%=range%
�wimp%!0=win%
�wimp%!4=sizeicon%
�!ș "Wimp_GetIconState",,wimp%
�sizeminx%=wimp%!8
�sizeminy%=wimp%!12
�sizemaxx%=wimp%!16
�sizemaxy%=wimp%!20
�<newx%=sizeminx%+(number%/(range%/(sizemaxx%-sizeminx%)))
�� newx%<>oldworkx% �
�wimp%!0=win%
�wimp%!4=dragicon%
�!ș "Wimp_GetIconState",,wimp%
!wimp%!16=newx%
!wimp%!0=win%
!wimp%!4=dragicon%
! ș "Wimp_DeleteIcon",,wimp%
!*wimp%!4=win%
!4!ș "Wimp_CreateIcon",,wimp%+4
!>newwimp%=wimp%+4
!H� oldworkx%<newx% �
!Rnewwimp%!4=sizeminx%
!\�
!fnewwimp%!4=newx%
!p�
!znewwimp%!8=sizeminy%
!�� oldworkx%<newx% �
!�newwimp%!12=newx%
!��
!�newwimp%!12=sizemaxx%
!��
!�newwimp%!16=sizemaxy%
!�+ș "Wimp_UpdateWindow",,newwimp% � flag
!�ȕ flag
!�+ș "Wimp_GetRectangle",,newwimp% � flag
!��
!�oldworkx%=newx%
!��
!��
":
"<� �Wimp_IconGetBarValue(win%,dragicon%,sizeicon%,range%)
"wimp%!0=win%
"$wimp%!4=sizeicon%
".!ș "Wimp_GetIconState",,wimp%
"8sizeminx%=wimp%!8
"Bsizemaxx%=wimp%!16
"Lwimp%!0=win%
"Vwimp%!4=dragicon%
"`!ș "Wimp_GetIconState",,wimp%
"j6=(range%/(sizemaxx%-sizeminx%))*(wimp%!16-wimp%!8)
"t:
"~8� �Wimp_IconDragSliderIcon(win%,dragicon%,sizeicon%)
"�wimp%!0=win%
"�wimp%!4=sizeicon%
"�!ș "Wimp_GetIconState",,wimp%
"�sminx%=wimp%!8
"�sminy%=wimp%!12
"�smaxx%=wimp%!16
"�smaxy%=wimp%!20
"�#ș "Wimp_GetPointerInfo",,wimp%
"�mx%=wimp%!0
"�wimp%!0=win%
"�"ș "Wimp_GetWindowInfo",,wimp%
"�,calcx%=(mx%-(wimp%!4-wimp%!20))+wimp%!44
# 'iconminx%=sminx%+(wimp%!4-wimp%!20)
#
'iconmaxx%=iconminx%+(smaxx%-sminx%)
#(iconminy%=sminy%+(wimp%!16-wimp%!24)
#)iconmaxy%=iconminy%+(smaxy%-sminy%)-4
#(wimp%!0=win%
#2
wimp%!4=7
#<wimp%!8=iconminx%
#Fwimp%!12=iconminy%
#Pwimp%!16=iconmaxx%
#Zwimp%!20=iconmaxy%
#dwimp%!24=wimp%!8
#nwimp%!28=wimp%!12
#xwimp%!32=wimp%!16
#�wimp%!36=wimp%!20
#�ș "Wimp_DragBox",,wimp%
#�slidewindow%=win%
#�slideicon%=dragicon%
#�slidesize%=sizeicon%
#�wimp%!0=win%
#�wimp%!4=dragicon%
#�!ș "Wimp_GetIconState",,wimp%
#�oldworkx%=wimp%!16
#��
#�:
#�?� �Wimp_IconDoSlide(win%,dragicon%,sizeicon%,const%,range%)
#�wimp%!0=win%
$wimp%!4=sizeicon%
$!ș "Wimp_GetIconState",,wimp%
$sizeminx%=wimp%!8
$"sizeminy%=wimp%!12
$,sizemaxx%=wimp%!16
$6sizemaxy%=wimp%!20
$@#ș "Wimp_GetPointerInfo",,wimp%
$Jmx%=wimp%!0
$Twimp%!0=win%
$^"ș "Wimp_GetWindowInfo",,wimp%
$hminx%=wimp%!4
$rscrx%=wimp%!20
$|newx%=mx%+(scrx%-minx%)
$�� newx%<>oldworkx% �
$�wimp%!0=win%
$�wimp%!4=dragicon%
$�!ș "Wimp_GetIconState",,wimp%
$�wimp%!16=newx%
$�wimp%!0=win%
$�wimp%!4=dragicon%
$�ș "Wimp_DeleteIcon",,wimp%
$�wimp%!4=win%
$�!ș "Wimp_CreateIcon",,wimp%+4
$�newwimp%=wimp%+4
$�� oldworkx%<newx% �
$�newwimp%!4=sizeminx%
%�
%newwimp%!4=newx%
%�
%&newwimp%!8=sizeminy%
%0� oldworkx%<newx% �
%:newwimp%!12=newx%
%D�
%Nnewwimp%!12=sizemaxx%
%X�
%bnewwimp%!16=sizemaxy%
%l+ș "Wimp_UpdateWindow",,newwimp% � flag
%vȕ flag
%�+ș "Wimp_GetRectangle",,newwimp% � flag
%��
%�� const% �
%�size%=sizemaxx%-sizeminx%
%�ppos%=(oldworkx%-sizeminx%)
%� number%=(range%/size%)*ppos%
%�:
%�Ȏ slideicon% �
%�� 2
%�/�PROCiconputtext(main%,3,STR$(number%)+"%")
%��
%��
%��
&oldworkx%=newx%
&rrange%=range%
&�
& :
&*0� �Wimp_SetIconSprite(window%,icon%,sprite$)
&4wimp%!0=window%
&>wimp%!4=icon%
&H!ș "Wimp_GetIconState",,wimp%
&R$wimp%!32="S"+sprite$
&\wimp%!0=window%
&f
wimp%!8=0
&pwimp%!12=0
&z!ș "Wimp_SetIconState",,wimp%
&��
&�:
&�� �Wimp_IconBar(Sprite$)
&�� icon%
&�wimp%!0=-1
&�wimp%!4=0 : wimp%!8=0
&�wimp%!12=88 : wimp%!16=72
&�wimp%!20=&3002
&�$(wimp%+24)=Sprite$
&�'ș "Wimp_CreateIcon",,wimp% � icon%
&�
=icon%
&�:
&�+� �Wimp_IconCaret(window%,icon%,chars%)
'8ș "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
'�
':
'$#� �Wimp_IconText(window%,icon%)
'.#wimp%!0=window% : wimp%!4=icon%
'8!ș "Wimp_GetIconState",,wimp%
'B7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
'L=$(wimp%!28)
'V:
'`)� �Wimp_IconValidation(window%,icon%)
'j#wimp%!0=window% : wimp%!4=icon%
't!ș "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%
'��
'�:
'�%� �Wimp_IconEnable(window%,icon%)
'�#wimp%!0=window% : wimp%!4=icon%
'�$wimp%!8=0 : wimp%!12=1<<22
'�!ș "Wimp_SetIconState",,wimp%
( �
(
:
(0� �Wimp_IconPutSprite(window%,icon%,sprite$)
(!wimp%!0=window%:wimp%!4=icon%
((!ș "Wimp_GetIconState",,wimp%
(2ș "Wimp_DeleteIcon",,wimp%
(<=wimp%!4=wimp%!8 : wimp%!8=wimp%!12 : wimp%!12=wimp%!16
(F?wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$
(P'ș "Wimp_CreateIcon",,wimp% � icon%
(Z
=icon%
(d:
(n,� �Wimp_IconPutText(window%,icon%,text$)
(x#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
(�ș"Wimp_BorderIcon",,wimp%
(��
(�:
(�� �Wimp_IconInterfaceFinish
)
wimp%!8=0
)ș"Wimp_BorderIcon",,wimp%
)�
)":
),G� *****************************************************************
)6:
)@� �Wimp_MenuAdjustOn(menu%)
)J,ș "Wimp_GetPointerInfo",,pointer_block%
)T^� ((pointer_block%!8)�1)=1 � ș "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4
)^�
)h:
)r� �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)
)�#width%=�(�menu$,�menu$,"\")-1))
)�$menu$+="\" : Menu_NoOfEntries%=0
)�ȕ menu$<>""
)�menu$=�menu$,�menu$,"\")+1)
*Ȏ menu$ �
* � ""
* :
*&1 !index%=0 : index%!4=-1 : index%!8=&7000021
*0 length%=�menu$,"\")-1
*: k%=��menu$,length%),">")
*D
Ȏ k% �
*N
� 0
*X
*b% s%=�(�menu$,k%+1,length%-k%))
*l index%!4=s%
*v length%=k%-1
*� �
*�" $(index%+12)=�menu$,length%)
*�' � length%>width% � width%=length%
*� index%+=24
*��
*��
*�menu%!16=16*(width%+1)
*�(index%!-24=index%!-24 � &80 : =menu%
*�=�
*�:
*�� �Wimp_MenuColours
*�!=�Wimp_MenuCreateColours(" ")
*�:
+%� �Wimp_MenuCreateColours(title$)
+� x$,men%,j%,i%
+6x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
+ men%=�Wimp_MenuCreate(x$)
+*� i%=0 � 15
+4
Ȏ � �
+>(� i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
+H : j%=0
+R�
+\men%?(39+i%*24)=i%*16+j%
+f�Wimp_MenuCentre(men%,i%+1)
+p�
+z =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%)
+�� fore%,i%
+�&fore%=(menu%?(39+(item%-1)*24))�16
+�(i%=((menu%?(39+(item%-1)*24))�16)�16
,/menu%?(39+(item%-1)*24)=fore%+16*colour%+i%
,�
,:
,$#� �Wimp_MenuCentre(menu%,item%)
,.:menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<3)
,8�
,B:
,L� �Wimp_MenuClose
,Vș "Wimp_CreateMenu",-1
,`�
,j:
,t$� �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)
,��
,�:
,�5� �Wimp_MenuForegroundColour(menu%,item%,colour%)
- Emenu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))�16)
-
�
-:
-)� �Wimp_MenuGlue(menu1%,item%,menu2%)
-(menu1%!(8+item%*24)=menu2%
-2�
-<:
-F'� �Wimp_MenuItem(menu%,item%,item$)
-P,$(menu%+(40+(item%-1)*24))=�item$,12)+�0
-Z�
-d:
-n$� �Wimp_MenuMessage(menu%,item%)
-x<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%)
-�� n% : n%=0
-�+ȕ ((Bar_Menu%!(28+n%*24))�%10000000)=0
-� n%+=1
.�
.2ș "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
.menu%=Bar_Menu%
."�
.,:
.6!� �Wimp_MenuTick(menu%,item%)
.@7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�1
.J�
.T:
.^#� �Wimp_MenuTitle(menu%,title$)
.h$menu%=�title$,12)+�0
.r�
.|:
.�=� �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%
.��
.�:
.�G� *****************************************************************
.�:
.�%� �Wimp_SelectIcon(window%,icon%)
.�wimp%!0=window%
.�wimp%!4=icon%
/#wimp%!8=%1000000000000000000000
/$wimp%!12=%1000000000000000000000
/ș&400CD,,wimp%
/&�
/0:
/:'� �Wimp_UnselectIcon(window%,icon%)
/Dwimp%!0=window%
/Nwimp%!4=icon%
/X
wimp%!8=0
/b$wimp%!12=%1000000000000000000000
/lș&400CD,,wimp%
/v�
/�:
/�� �Wimp_SpritesLoad
/�*ș"OS_ReadModeVariable",-1,5 � ,,YEIG%
/�/� YEIG%<2 � SPR$="Sprites" � SPR$="Sprites"
/�-�Wimp_SpritesPathLoad("<Obey$Dir>."+SPR$)
/�direct_sprites%=sprites%
/��
/�:
/�&� �Wimp_SpritesPathLoad(pathname$)
/�
�S%,T%
/�A$="<Obey$Dir>."+SPR$
/�S%=� A$:T%=�#S%+16:�#S%
/��sprites%T%,spname%12
0!sprites%=T%:sprites%!8=0
0!ș"OS_SpriteOp",&109,sprites%
0+ș"OS_SpriteOp",&10A,sprites%,pathname$
0 �
0*:
04G� *****************************************************************
0>:
0H� �Wimp_GetFilePathName
0R'=�Wimp_GetStringAtAddress(wimp%+44)
0\:
0f� �Wimp_FileLoad(pathname$)
0p�S%,T%,file%
0zS%=�pathname$
0�T%=�#S%+16
0��#S%
0��file%T%
0�"�("LOAD"+pathname$+""+�~file%)
0�
=file%
0�:
0�� �Wimp_SendToEdit(file$)
0�� n%
0�wimp%!4=&6CC01C0C
0�wimp%!16=5
0�wimp%!36=0
0�wimp%!40=&FFF
0�$(wimp%+44)=file$+�0
1n%=�file$+45
1,� n%�4 � !wimp%=4+(n%>>2)<<2 � !wimp%=n%
1$ș "Wimp_SendMessage",17,wimp%,0
1$�
1.:
18G� *****************************************************************
1B:
1L/� �Wimp_Start(TaskName$,wimp_memory%,icon%)
1V%� wimp% wimp_memory%,icons% icon%
1`)� wimp_memory%<256 � wimp_memory%=256
1jicon_memory%=icons%+icon%
1ttask$=TaskName$
1~+indirect_sprites%=1 : direct_sprites%=1
1��Wimp_SetEventVariables
1�� � �Wimp_Error:�
1�@ș"Wimp_Initialise",200,&4B534154,TaskName$ � version%,task%
1��
1�:
1�� �Wimp_BASICParameters
1� � com$,param$,I%
1� ș "OS_GetEnv" � com$
1� params$=""
1� I%=�com$," -quit ")
1�5 � I% � params$=�com$,�com$," ",I%+�" -quit ")+1)
1�=params$
2 :
2
� �Wimp_SetEventVariables
2� pointer_block% 20
2interface%=�
2(.null%=1 :draw%=2 : pointer_leaving%=1<<4
221pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7
2<&key%=1<<8:menu%=1<<9:scroll%=1<<10
2F@lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18)
2P0recorder%=1<<18:acknowledge%=1<<19:window%=0
2Z!sprites%=1:version%=0:task%=0
2d*Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0
2n*x_origin%=0:y_origin%=0:SaveWindow%=-3
2x3message_quit%=0:message_save%=2:message_load%=3
2�!mouse_button%=2:save_event%=0
2� top_line%=0 : bottom_line%=0
2�:
2�A� Dont mess about with below (or use them !) they are used in
2�� the drag bar routines.
2�slidewindow%=-1
2�slideicon%=-1
2�slidesize%=-1
2�oldworkx%=-1
2�rrange%=-1
2�sizemaxx%=-1
2�sizeminx%=-1
2��
3:
3� �Wimp_Error
3
�X$,x%
3" � � �
3,x%=�
36X$=�$+"atline"+�(x%�10)
3@�ErrorMsg%36
3JEErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x%
3T$(ErrorMsg%+24)="!RunImage"
3^%ș"Wimp_SendMessage",17,ErrorMsg%
3h�Wimp_WindowAlert(task$,X$)
3r�Wimp_CloseDown
3|�
3�:
3�� �Wimp_CloseDown
3�#ș"Wimp_CloseDown",task%,"TASK"
3��
3�:
3�� �Wimp_Quit
3�finished%=�
3��
3�:
3�#� �Wimp_ReadVariable(Variable$)
3��len%,result%,variable%
3�$wimp%=Variable$
3�3ș"OS_ReadVarVal",wimp%,wimp%+255,255,,3�,,len%
4wimp%?(len%+255)=13
4=$(wimp%+255)
4:
4&G� *****************************************************************
40:
4:� �Wimp_WaitForEvent
4D� mask%,event%
4Nfinished%=�
4Xmask%=%111000011001
4b�
4l' ș"Wimp_Poll",mask%,wimp% � event%
4v Ȏ event% �
4� �0
4� �1 : �Wimp_PollDrawWindow
4� �2
4��botopen
4�ș "Wimp_OpenWindow",,wimp%
4� �3 : �Wimp_PollCloseWindow
4�
�4 :
4�
�5 :
4� �6 : �Wimp_PollMouseClick
4� �7 : �Wimp_PollSaveMessage
4� �8 : �Wimp_PollKeyPress
4�# �9 : �Event_MenuChoice(menu%)
4�
�10:
5
�11:
5
�12:
5 �17,18: �Wimp_PollMessages
5
�19:
5* �
54� finished%
5>�
5H:
5R� �Wimp_PollDrawWindow
5\� more%
5f&ș"Wimp_RedrawWindow",,wimp%�more%
5pwindow%=wimp%!0
5zAx_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24
5�ȕmore%
5�0 � interface% � ș"Wimp_BorderWindow",,wimp%
5�- �Event_Draw(window%,x_origin%,y_origin%)
5�' ș"Wimp_GetRectangle",,wimp%�more%
5��
5��
5�:
5�� �Wimp_PollCloseWindow
5�% ș "Wimp_GetPointerInfo",,wimp%
5�) window%=wimp%!12 : buttons%=wimp%!8
5�) �Event_WindowClose(window%,buttons%)
5�2 !wimp%=window% : ș "Wimp_CloseWindow",,wimp%
5��
6:
6� �Wimp_PollMouseClick
6J button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
6$ Ȏ button% �
6." �2 : �Wimp_PollMenuPopUp
68# : Ȏ �Event_Save(window%) �
6B, � � : �Wimp_PollMouseSave
6L1 � �: �Wimp_PollEventMouseClick
6V �
6` �
6j�
6t:
6~� �Wimp_PollMenuPopUp
6�
� SA%=� �
6�menu%=�Event_Menu(window%)
6� Ȏ menu% �
6� � �:
6�
:
6� Ȏ window% �
6� � -2 : n%=0
6�3 ȕ ((Bar_Menu%!(28+n%*24))�%10000000)=0
6� n%+=1
6�
�
6�: ș "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*66
6�4 : ș"Wimp_CreateMenu",,menu%,x%-64,y%+20
7
�
7
�
7�
7�
7(:
72� �Wimp_PollMouseSave
7< Ȏ icon% �
7F8 � 3 : � button% � &50 � �Wimp_PollDragBox(window%)
7P8 � 2 : � button% � 5 � �Wimp_PollSaveFile(window%)
7Z �
7d�
7n:
7x� �Wimp_PollEventMouseClick
7�. � interface% � ș"Wimp_BorderIcon",,wimp%
7�3 �Event_MouseClick(window%,icon%,button%,x%,y%)
7� Ȏ interface% �
7� � � :
7�( wimp%!0=x%:wimp%!4=y% : wimp%!8=0
7�( wimp%!12=window% : wimp%!16=icon%
7�! ș"Wimp_BorderIcon",,wimp%
7� �
7��
7�:
7�!� �Wimp_PollSaveFile(window%)
7�
�file$
7�@ wimp%!0=window% : wimp%!4=1 : ș "Wimp_GetIconState",,wimp%
8 file$=$(wimp%!28)
8 Ȏ �file$,".") �
8
� 0 :
8"� key%=13 �
8,@ $(wimp%+4)="To save, drag the icon to a directory window"
86+ ș "Wimp_ReportError",wimp%,16,task$
8@�
8J :
8T"�Event_SaveFile(file$,window%)
8^�Wimp_MenuClose
8h �
8r&� key%=13 � ș"Wimp_CreateMenu",-1
8|� SA%=� � �Wimp_CloseDown
8��
8�:
8� � �Wimp_PollDragBox(window%)
8�
�x%,y%
8�� window%=Save_Window% �
8�sn$="file_ace2"
8��
8�sn$="text2"
8��
8� save%=window%
8� !wimp%=window%
8�# ș"Wimp_GetWindowState",,wimp%
8�- x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24
9 wimp%!4=3
9! ș"Wimp_GetIconState",,wimp%
9 !wimp%=window%
9& wimp%!4=5
90, wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12
9:. wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20
9D wimp%!24=0:wimp%!28=0
9N* wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
9X� sn$="" �
9bș&000400D0,,wimp%
9l�
9v� dragicons% �
9�/ș &00042400,%11000101,sprites%,sn$,wimp%+8
9��
9�ș&000400D0,,wimp%
9��
9��
9�
�unbox
9��
9�:
9�� �Wimp_PollKeyPress
9�1 window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
9� Ȏ �Event_Save(window%) �
9�( � � : �Wimp_PollSaveFile(window%)
9�/ � �: �Event_KeyPress(window%,icon%,key%)
: �
:�
::
: � �Wimp_PollSaveMessage
:*�file$,window%,icon%,x%,y%
:4# ș"Wimp_GetPointerInfo",,wimp%
:>: window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
:H> wimp%!0=save% : wimp%!4=1 : ș "Wimp_GetIconState",,wimp%
:R file$=$(wimp%!28)
:\+ file$=�Wimp_GetFileFromPathname(file$)
:fACE$=file$
:p wimp%!20=window%
:z wimp%!24=icon%
:� wimp%!28=x%:wimp%!32=y%
:� wimp%!36=length%
:� wimp%!0=64
:� wimp%!12=0
:� wimp%!16=1
:� wimp%!40=&FFF
:� $(wimp%+44)=file$
:�4 ș"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
:��
:�:
:�� �Wimp_PollMessages
:�AA%=wimp%!16
:�AB%=wimp%!40
;AC%=wimp%!12
;AD%=wimp%!8
;AE%=wimp%!20
;$�openprinter
;.� file$
;8,file$=�Wimp_GetStringAtAddress(wimp%+44)
;B Ȏ AA% �
;L � 0 : finished%=�
;V � 1 :
;` � 2 :
;jC wimp%!0=save% : wimp%!4=1 : ș "Wimp_GetIconState",,wimp%
;t $(wimp%!28)=file$
;~< wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0
;�' ș "Wimp_SetIconState",,wimp%
;�0 � PROCWimp_IconCaret(save%,1,LENfile$)
;�8 ș "Wimp_SetCaretPosition",save%,1,,,-1,�file$
;� �Wimp_MenuClose
;�& �Event_SaveFile(file$,save%)
;�# � SA%=� � �Wimp_CloseDown
;� � 3
;�( type$=�Wimp_FileType(wimp%!40)
;�& �Event_LoadFile(file$,type$)
;� � &400C1
;�B � �isopen(Main_Window%) � �Wimp_WindowOpen(Main_Window%)
;� � 5
<