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 <