Home » Archimedes archive » Archimedes World » AW-1994-02-Disc1.adf » Disk1Feb94 » !AWFeb94/Goodies/PocketM/!PocketM/!RunImage
!AWFeb94/Goodies/PocketM/!PocketM/!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-02-Disc1.adf » Disk1Feb94 |
| Filename: | !AWFeb94/Goodies/PocketM/!PocketM/!RunImage |
| Read OK: | ✔ |
| File size: | A707 bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10SYS "OS_GetEnv" TO env$
20IF INSTR(env$," -quit ") THEN
30fileload$=MID$(env$,INSTR(env$,CHR$(34),INSTR(env$,CHR$(34))+1)+1)
40ENDIF
50 PROCWimp_Start("PocketM",4990,3913)
60 PROCUser_SetInitialData
70 PROCCreate_Windows
80 PROCCreate_Menus
90IF fileload$<>" " THEN
100PROCEvent_LoadFile(fileload$,"file_faf")
110PROCWimp_IconPutText(Save_Window%,1,fileload$)
120ENDIF
130 PROCWimp_WaitForEvent
140 PROCWimp_CloseDown
150 END
160 :
170 DEF PROCUser_SetInitialData
180DOSAVE%=TRUE
190SA%=FALSE
200UPDATE%=FALSE
210CD%=FALSE
220PRT%=FALSE
230DIM title% 256
240PSEL%=1
250EE%=TRUE
260PASSALLOW%=FALSE
270PCOVER$="***************"
280correct%=FALSE
290PASS$="POO"
300MONEY%=0
310DD%=27
320MM%=04
330YY%=1993
340STATUS$="Save"
350COL%=TRUE
360POUNDVAL%=156
370DIM A%(15)
380total%=1
390cur%=1
400totpage%=0
410curpage%=0
420DIM AMMOUNT(999)
430DIM STATUS$(999)
440DIM DATE$(999)
450DIM WHO$(999)
460DIM CURTOT(999)
470DIM DD$(999)
480DIM MM$(999)
490DIM YY$(999)
500AMMOUNT()=0
510STATUS$()=""
520DATE$()=""
530WHO$()=""
540CURTOT()=0
550EDII%=FALSE
560 ENDPROC
570 :
580 DEF PROCCreate_Windows
590 PROCWimp_SpritesLoad
600 Info_Window%=FNWimp_WindowLoad("Info")
610 Entry_Window%=FNWimp_WindowLoad("Entry")
620 Main_Window%=FNWimp_WindowLoad("Main")
630 Delete_Window%=FNWimp_WindowLoad("Delete")
640 Options_Window%=FNWimp_WindowLoad("Options")
650 Save_Window%=FNWimp_WindowLoad("Save")
660 Password_Window%=FNWimp_WindowLoad("Password")
670 Save2_Window%=FNWimp_WindowLoad("Save2")
680 Print_Window%=FNWimp_WindowLoad("Print")
690 Close_Window%=FNWimp_WindowLoad("Close")
700 Bar_Icon%=FNWimp_IconBar("!PocketM")
710PROCWimp_IconPutText(Options_Window%,3,"")
720PROCresetentry
730 ENDPROC
740 :
750 DEF FNEvent_Save(window%)
760 CASE window% OF
770 WHEN Save_Window% :=TRUE
780 WHEN Save2_Window% : =TRUE
790 OTHERWISE :=FALSE
800 ENDCASE
810 :
820 DEF FNEvent_Sprites(window%)=sprites%
830 :
840 DEF PROCCreate_Menus
850 Save_Menu%=FNWimp_MenuCreate("Save\Pocket>Save_Window%\Text>Save2_Window%")
860 Bar_Menu%=FNWimp_MenuCreate("PocketM\Info>Info_Window%\Password>Options_Window%\Save>Save_Menu%\Clear Data\Quit")
870 Main_Menu%=FNWimp_MenuCreate("PocketM\Start\Back\Print\Add\Delete\Next\End")
880PROCWimp_MenuDisable(Bar_Menu%,3)
890PROCWimp_MenuDottedLine(Bar_Menu%,1)
900PROCWimp_MenuDottedLine(Bar_Menu%,3)
910PROCWimp_MenuDottedLine(Bar_Menu%,4)
920PROCWimp_MenuDottedLine(Main_Menu%,2)
930PROCWimp_MenuDottedLine(Main_Menu%,5)
940 ENDPROC
950 :
960 DEF FNEvent_Menu(window%)
970 CASE window% OF
980 WHEN Bar_Window% : =Bar_Menu%
990 WHEN Main_Window% : =Main_Menu%
1000 OTHERWISE : =FALSE
1010 ENDCASE
1020 :
1030 DEF PROCEvent_WindowClose(window%,buttons%)
1040 CASE window% OF
1050 WHEN Entry_Window% : PROCWimp_WindowBringToTop(Main_Window%)
1060 ENDCASE
1070 ENDPROC
1080 :
1090 DEF PROCEvent_Draw(window%,x_origin%,y_origin%)
1100 CASE window% OF
1110 WHEN Info_Window% : PROCUser_DrawInfoWindow
1120 ENDCASE
1130 ENDPROC
1140 :
1150 DEF PROCUser_DrawInfoWindow
1160 ENDPROC
1170 :
1180 DEF PROCEvent_MouseClick(window%,icon%,button%,x%,y%)
1190 CASE window% OF
1200 WHEN Bar_Window% : PROCUser_MouseBar
1210 WHEN Info_Window% : PROCUser_MouseInfo( button%,icon%)
1220 WHEN Entry_Window% : PROCUser_MouseEntry( button%,icon%)
1230 WHEN Main_Window% : PROCUser_MouseMain( button%,icon%)
1240 WHEN Delete_Window% : PROCUser_MouseDelete( button%,icon%)
1250 WHEN Options_Window% : PROCUser_MouseOptions( button%,icon%)
1260 WHEN Print_Window% : PROCUser_MousePrint( button%,icon%)
1270 WHEN Close_Window% : PROCUser_MouseClose( button%,icon%)
1280 ENDCASE
1290 ENDPROC
1300 :
1310 DEF PROCUser_MouseClose( button%,icon%)
1320 IF icon%=1 THEN
1330SA%=TRUE
1340PROCunbox
1350PROCWimp_WindowClose(Close_Window%)
1360UPDATE%=FALSE
1370PROCWimp_WindowBringToTop(Save_Window%)
1380A$=FNWimp_IconText(Save_Window%,1)
1390PROCWimp_IconCaret(Save_Window%,1,LEN(A$))
1400ENDIF
1410 IF icon%=2 THEN
1420PROCunbox
1430UPDATE%=FALSE
1440PROCWimp_WindowClose(Close_Window%)
1450CD%=TRUE
1460ENDIF
1470 IF icon%=3 THEN
1480PROCunbox
1490PROCWimp_WindowClose(Close_Window%)
1500ENDIF
1510IF CD%=TRUE THEN PROCWimp_CloseDown
1520ENDPROC
1530 DEF PROCUser_MouseBar
1540 PROCWimp_WindowBringToTop(Main_Window%)
1550 ENDPROC
1560 :
1570 DEF PROCUser_MousePrint( button%,icon%)
1580 IF icon%=5 THEN PROCpdsel:PSEL%=1:PROCpsel
1590 IF icon%=6 THEN PROCpdsel:PSEL%=2:PROCpsel
1600 IF icon%=7 THEN PROCpdsel:PSEL%=3:PROCpsel
1610 IF icon%=4 AND PRT%=TRUE THEN
1620 IF PSEL%=1 THEN
1630 PROCprint
1640 ENDIF
1650 IF PSEL%=2 THEN
1660 A=VAL(FNWimp_IconText(Print_Window%,8))
1670 IF (A-1)<(totpage%+1) AND (A-1)>-1 THEN
1680 PROCprint
1690 ENDIF
1700 ENDIF
1710 IF PSEL%=3 THEN
1720 A=VAL(FNWimp_IconText(Print_Window%,9))
1730 B=VAL(FNWimp_IconText(Print_Window%,11))
1740 IF (A-1)>-1 AND (B-1)<(total%-1) THEN
1750 PROCprint
1760 ENDIF
1770 ENDIF
1780 ENDIF
1790 ENDPROC
1800 :
1810 DEF PROCUser_MouseInfo( button%,icon%)
1820 ENDPROC
1830 :
1840 DEF PROCUser_MouseEntry( button%,icon%)
1850 IF icon%=7 AND STATUS$="Spend" THEN STATUS$="Save":PROCWimp_IconPutText(Entry_Window%,3,STATUS$):PROCWimp_IconEnable(Entry_Window%,16)
1860 IF icon%=8 AND STATUS$="Save" THEN
1870STATUS$="Spend"
1880PROCWimp_IconPutText(Entry_Window%,3,STATUS$)
1890PROCWimp_IconDisable(Entry_Window%,16)
1900PROCWimp_IconPutText(Entry_Window%,16,"")
1910A$=FNWimp_IconText(Entry_Window%,5)
1920PROCWimp_IconCaret(Entry_Window%,5,LEN(A$))
1930ENDIF
1940 IF icon%=18 THEN PROCWimp_WindowClose(Entry_Window%):PROCresetentry
1950 IF icon%=17 THEN
1960IF EE%=TRUE THEN
1970A$=FNWimp_IconText(Entry_Window%,5)
1980IF A$<>"" AND A$<>"." AND VAL(A$)<>0 THEN
1990PROCread
2000PROCinput
2010ENDIF
2020ELSE
2030A$=FNWimp_IconText(Entry_Window%,5)
2040IF A$<>"" AND A$<>"." AND VAL(A$)<>0 THEN
2050 AMMOUNT(AABB)=VAL(FNWimp_IconText(Entry_Window%,5))
2060 STATUS$(AABB)=STATUS$
2070 DATE$(AABB)=FNWimp_IconText(Entry_Window%,11)+"/"+FNWimp_IconText(Entry_Window%,12)+"/"+FNWimp_IconText(Entry_Window%,13)
2080 DD$(AABB)=FNWimp_IconText(Entry_Window%,11)
2090 MM$(AABB)=FNWimp_IconText(Entry_Window%,12)
2100 YY$(AABB)=FNWimp_IconText(Entry_Window%,13)
2110 WHO$(AABB)=FNWimp_IconText(Entry_Window%,16)
2120 UPDATE%=TRUE
2130 PROCrecalc
2140 PROCinput
2150ENDIF
2160ENDIF
2170IF total%>1 THEN PROCWimp_MenuEnable(Bar_Menu%,3)
2180REMPROCWimp_WindowClose(Entry_Window%)
2190PROCresetentry
2200PROCcutdate
2210PROCWimp_IconCaret(Entry_Window%,5,0)
2220ENDIF
2230 ENDPROC
2240 :
2250 DEF PROCUser_MouseMain( button%,icon%)
2260 IF icon%>70 AND icon%<85 THEN icon%-=70
2270 IF icon%>16 AND icon%<31 THEN icon%-=16
2280 IF icon%>31 AND icon%<46 THEN icon%-=31
2290 IF icon%>45 AND icon%<57 THEN icon%-=45
2300 IF icon%>85 AND icon%<100 THEN icon%-=85
2310 IF icon%>0 AND icon%<15 THEN
2320 A=(curpage%*14)+icon%
2330 IF A<total% AND A>0 THEN
2340 PROCWimp_WindowBringToTop(Entry_Window%)
2350 PROCWimp_IconPutText(Entry_Window%,5,STR$(AMMOUNT(A)))
2360 PROCWimp_IconCaret(Entry_Window%,5,LEN(STR$(AMMOUNT(A))))
2370 PROCWimp_IconCaret(Entry_Window%,5,LEN(STR$(AMMOUNT(A))))
2380 PROCWimp_IconPutText(Entry_Window%,3,STATUS$(A))
2390 UPDATE%=TRUE
2400 STATUS$=STATUS$(A)
2410 IF STATUS$(A)="Spend" THEN PROCWimp_IconDisable(Entry_Window%,16) ELSE PROCWimp_IconEnable(Entry_Window%,16)
2420 PROCWimp_IconPutText(Entry_Window%,11,DD$(A))
2430 PROCWimp_IconPutText(Entry_Window%,12,MM$(A))
2440 PROCWimp_IconPutText(Entry_Window%,13,YY$(A))
2450 PROCWimp_IconPutText(Entry_Window%,16,WHO$(A))
2460 EE%=FALSE
2470 AABB=A
2480 ENDIF
2490 ENDIF
2500 IF icon%=66 AND total%>1 THEN PROCopenprinter:PROCWimp_WindowBringToTop(Print_Window%):PROCpsel
2510 IF icon%=67 AND total%>1 THEN PROCWimp_WindowBringToTop(Delete_Window%):PROCWimp_IconCaret(Delete_Window%,3,0)
2520 IF icon%=15 THEN
2530PROCcutdate
2540EE%=TRUE
2550PROCWimp_WindowBringToTop(Entry_Window%)
2560 PROCWimp_IconPutText(Entry_Window%,5,"")
2570 PROCWimp_IconPutText(Entry_Window%,3,"Save")
2580 STATUS$="Save"
2590 PROCWimp_IconEnable(Entry_Window%,16)
2600PROCWimp_IconCaret(Entry_Window%,5,0)
2610ENDIF
2620 IF icon%=62 AND curpage%>0 THEN curpage%-=1:PROCinput
2630 IF icon%=61 AND curpage%<totpage% THEN curpage%+=1:PROCinput
2640 IF icon%=64 AND curpage%>0 THEN curpage%=0:PROCinput
2650 IF icon%=63 AND curpage%<totpage% THEN curpage%=totpage%:PROCinput
2660 ENDPROC
2670 :
2680 DEF PROCUser_MouseDelete( button%,icon%)
2690 IF icon%=4 THEN
2700NUM$=FNWimp_IconText(Delete_Window%,3)
2710IF NUM$<>"" AND VAL(NUM$)<total% AND VAL(NUM$)>0 THEN
2720do%=FNWimp_WindowCancel("Delete","Are you sure you want to delete number "+NUM$+" ?")
2730IF do%=FALSE THEN
2740PROCWimp_IconPutText(Delete_Window%,3,"")
2750PROCWimp_IconCaret(Delete_Window%,3,0)
2760REMPROCWimp_WindowClose(Delete_Window%)
2770ENDIF
2780
2790IF do%=TRUE THEN
2800IF VAL(NUM$)>0 AND VAL(NUM$)<total% THEN
2810UPDATE%=TRUE
2820cur%=VAL(NUM$)
2830IF cur%=total% THEN total%-=1
2840
2850IF cur%<total% THEN
2860FOR A=VAL(NUM$) TO total%
2870AMMOUNT(A)=AMMOUNT(A+1)
2880STATUS$(A)=STATUS$(A+1)
2890DATE$(A)=DATE$(A+1)
2900WHO$(A)=WHO$(A+1)
2910CURTOT(A)=CURTOT(A+1)
2920NEXT A
2930total%-=1
2940ENDIF
2950
2960IF (total%-1)/15<totpage% THEN
2970totpage%-=1
2980IF totpage%>curpage% THEN curpage%-=1
2990ENDIF
3000
3010PROCpage
3020PROCrecalc
3030PROCinput
3040ENDIF
3050PROCWimp_IconPutText(Delete_Window%,3,"")
3060PROCWimp_IconCaret(Delete_Window%,3,0)
3070REMPROCWimp_WindowClose(Delete_Window%)
3080IF total%=1 THEN PROCWimp_MenuDisable(Bar_Menu%,3)
3090ENDIF
3100ENDIF
3110ENDIF
3120 IF icon%=5 THEN PROCWimp_IconPutText(Delete_Window%,3,""):PROCWimp_WindowClose(Delete_Window%)
3130 ENDPROC
3140 :
3150 DEF PROCUser_MouseOptions( button%,icon%)
3160 IF icon%=2 AND PASSALLOW%=TRUE THEN PROCWimp_IconPutText(Options_Window%,3,PASS$):WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:WAIT:PROCWimp_IconPutText(Options_Window%,3,LEFT$(PCOVER$,LEN(PASS$)))
3170PROCWimp_IconPutText(Password_Window%,3,"")
3180 ENDPROC
3190 :
3200 DEF PROCEvent_KeyPress(window%,icon%,key%)
3210 CASE window% OF
3220 WHEN Entry_Window% : PROCUser_KeyPressEntry( icon%,key%)
3230 WHEN Delete_Window% : PROCUser_KeyPressDelete( icon%,key%)
3240 WHEN Password_Window% : PROCUser_KeyPressPassword( icon%,key%)
3250 WHEN Options_Window% : PROCUser_KeyPressOptions( icon%,key%)
3260 ENDCASE
3270 ENDPROC
3280 :
3290 DEF PROCUser_KeyPressEntry( icon%,key%)
3300 IF key%=13 AND icon%=5 THEN PROCWimp_IconCaret(Entry_Window%,11,LEN(FNWimp_IconText(Entry_Window%,11)))
3310 IF key%=13 AND icon%=11 THEN PROCWimp_IconCaret(Entry_Window%,12,LEN(FNWimp_IconText(Entry_Window%,12)))
3320 IF key%=13 AND icon%=12 THEN PROCWimp_IconCaret(Entry_Window%,13,LEN(FNWimp_IconText(Entry_Window%,13)))
3330 IF key%=13 AND icon%=13 AND STATUS$="Save" THEN PROCWimp_IconCaret(Entry_Window%,16,LEN(FNWimp_IconText(Entry_Window%,16)))
3340 IF key%=13 AND icon%=13 AND STATUS$="Spend" THEN PROCUser_MouseEntry( 4,17)
3350 IF key%=13 AND icon%=16 THEN PROCUser_MouseEntry( 4,17)
3360 ENDPROC
3370 :
3380 DEF PROCUser_KeyPressDelete( icon%,key%)
3390 ENDPROC
3400 :
3410 DEF PROCUser_KeyPressPassword( icon%,key%)
3420 NEWPASS$=""
3430 IF key%=13 THEN
3440NEWPASS$=FNWimp_IconText(Password_Window%,2)
3450PROCcheckpassword
3460ENDIF
3470 ENDPROC
3480 :
3490 DEF PROCUser_KeyPressOptions( icon%,key%)
3500 IF key%=13 THEN
3510 POUNDVAL%=VAL(FNWimp_IconText(Options_Window%,3))
3520 ENDIF
3530 ENDPROC
3540 :
3550 DEF PROCEvent_MenuChoice(menu%)
3560 CASE menu% OF
3570 WHEN Bar_Menu% : PROCUser_MenuChoiceBar
3580 WHEN Main_Menu% : PROCUser_MenuChoiceMain
3590 ENDCASE
3600 ENDPROC
3610:
3620 DEF PROCUser_MenuChoiceMain
3630 CASE FNWimp_MenuChoice(0) OF
3640 WHEN 1 : PROCUser_MouseMain( 4,64)
3650 WHEN 2 : PROCUser_MouseMain( 4,62)
3660 WHEN 3 : PROCUser_MouseMain( 4,66)
3670 WHEN 4 : PROCUser_MouseMain( 4,15)
3680 WHEN 5 : PROCUser_MouseMain( 4,67)
3690 WHEN 6 : PROCUser_MouseMain( 4,61)
3700 WHEN 7 : PROCUser_MouseMain( 4,63)
3710 PROCWimp_MenuAdjustOn(Main_Menu%)
3720 ENDCASE
3730 ENDPROC
3740 :
3750 DEF PROCUser_MenuChoiceBar
3760 CASE FNWimp_MenuChoice(0) OF
3770 WHEN 1 :
3780 WHEN 2 :
3790 WHEN 4
3800ANS%=FNWimp_WindowCancel("!PocketM","Are you sure you want to clear the data?")
3810IF ANS%=TRUE THEN
3820PROCWimp_IconPutText(Save_Window%,1,"PocketData")
3830PROCWimp_IconPutText(Save2_Window%,1,"PocketText")
3840AMMOUNT()=0
3850STATUS$()=""
3860DATE$()=""
3870WHO$()=""
3880CURTOT()=0
3890PROCclearmain
3900total%=1
3910cur%=1
3920totpage%=0
3930curpage%=0
3940UPDATE%=FALSE
3950PROCWimp_MenuDisable(Bar_Menu%,3)
3960ENDIF
3970 WHEN 5
3980IF UPDATE%=TRUE THEN
3990PROCWimp_IconPutText(Close_Window%,0,"This file has been modified")
4000PROCWimp_WindowBringToTop(Close_Window%)
4010PROCmousebox(Close_Window%)
4020ENDIF
4030IF UPDATE%=FALSE THEN finished%=TRUE
4040 ENDCASE
4050 PROCWimp_MenuAdjustOn(Bar_Menu%)
4060 ENDPROC
4070 :
4080 DEF PROCEvent_LoadFile(file$,type$)
4090haa$=file$
4100PROCWimp_IconPutText(Options_Window%,3,"")
4110PASS$=""
4120file2$=file$
4130X%=OPENIN(file$)
4140INPUT #X%,LONG
4150INPUT #X%,VCN%
4160IF LONG<>0 THEN
4170VCN%=VCN%/2
4180LONG=LONG/VCN%
4190FOR AB=1 TO LONG
4200INPUT #X%,A%(AB)
4210A%(AB)=A%(AB) EOR VCN%
4220NEXT AB
4230FOR AB=1 TO LONG
4240A%(AB)=A%(AB)/VCN%
4250PASS$=PASS$+CHR$(A%(AB))
4260NEXT AB
4270CLOSE #X%
4280PROCWimp_IconPutText(Password_Window%,2,"")
4290PROCWimp_WindowBringToTop(Password_Window%)
4300PROCmousebox(Password_Window%)
4310PROCWimp_IconCaret(Password_Window%,2,0)
4320ELSE
4330CLOSE #X%
4340PROCparttwo
4350ENDIF
4360ENDPROC
4370
4380DEF PROCparttwo
4390IF LONG=0 OR correct%=TRUE THEN
4400X%=OPENIN(file2$)
4410INPUT #X%,LONG
4420INPUT #X%,VCN%
4430VCN%=VCN%/2
4440IF LONG<>0 THEN
4450FOR AB=1 TO LONG/VCN%
4460INPUT #X%,A%(AB)
4470NEXT AB
4480ENDIF
4490REM \/\/\/\/\/\/\/ Put load in here \/\/\/\/\/\/\/\/
4500INPUT #X%,total%
4510INPUT #X%,totpage%
4520FOR A=0 TO total%-1
4530INPUT #X%,AMMOUNT(A)
4540INPUT #X%,STATUS$(A)
4550INPUT #X%,DATE$(A)
4560INPUT #X%,WHO$(A)
4570INPUT #X%,CURTOT(A)
4580INPUT #X%,DD$(A)
4590INPUT #X%,MM$(A)
4600INPUT #X%,YY$(A)
4610NEXTA
4620UPDATE%=FALSE
4630PROCWimp_WindowBringToTop(Main_Window%)
4640PROCinput
4650CLOSE #X%
4660ENDIF
4670IF total%>1 THEN PROCWimp_MenuEnable(Bar_Menu%,3)
4680IF correct%=TRUE THEN PROCWimp_WindowClose(Password_Window%):correct%=FALSE
4690ENDPROC
4700 :
4710 DEF PROCEvent_SaveFile(file$,window%)
4720IF window%=Save_Window% THEN
4730LOCAL ERROR
4740ON ERROR LOCAL PROCerror
4750IF DOSAVE%=TRUE THEN
4760SETPASS1$=FNWimp_IconText(Save_Window%,4)
4770SETPASS2$=FNWimp_IconText(Save_Window%,5)
4780IF SETPASS1$<>SETPASS2$ THEN PROCWimp_WindowAlert("Password Protection","The two passwords are not the same. File not saved.")
4790IF SETPASS1$=SETPASS2$ THEN
4800IF SETPASS1$<>"" THEN
4810VCN%=INT(RND(1000000))+1
4820X%=OPENOUT(file$)
4830FOR AB=1 TO LEN(SETPASS1$)
4840A%(AB)=ASC(MID$(SETPASS1$,AB,1))
4850NEXT AB
4860PRINT #X%,LEN(SETPASS1$)*VCN%
4870PRINT #X%,VCN%*2
4880PASS$=SETPASS1$
4890PROCWimp_IconPutText(Options_Window%,3,LEFT$(PCOVER$,LEN(PASS$)))
4900FOR AB=1 TO LEN(SETPASS1$)
4910A%(AB)=A%(AB)*VCN%
4920PRINT #X%,A%(AB) EOR VCN%
4930NEXT AB
4940ELSE
4950X%=OPENOUT(file$)
4960PRINT #X%,0
4970PRINT #X%,0
4980ENDIF
4990REM \/\/\/\/\/\/\/\/\/ Put Save in here \/\/\/\/\/\/\/
5000PRINT #X%,total%
5010PRINT #X%,totpage%
5020FOR A=0 TO total%-1
5030PRINT #X%,AMMOUNT(A)
5040PRINT #X%,STATUS$(A)
5050PRINT #X%,DATE$(A)
5060PRINT #X%,WHO$(A)
5070PRINT #X%,CURTOT(A)
5080PRINT #X%,DD$(A)
5090PRINT #X%,MM$(A)
5100PRINT #X%,YY$(A)
5110NEXTA
5120UPDATE%=FALSE
5130CLOSE #X%
5140OSCLI("SETTYPE ")+file$+" FAF"
5150PROCWimp_MenuClose
5160REM PROCWimp_IconPutText(Save_Window%,4,"")
5170REM PROCWimp_IconPutText(Save_Window%,5,"")
5180ENDIF
5190ENDIF
5200ENDIF
5210IF window%=Save2_Window% THEN
5220LOCAL ERROR
5230ON ERROR LOCAL PROCerror
5240IF DOSAVE%=TRUE THEN
5250VDU21
5260OSCLI("SPOOL "+file$)
5270PRINT"+---+-----------+-----+----------+--------------------+-----------+";:PRINTCHR$(10);
5280PRINT"|Num| Ammount |State| Date | Who gave it to you | TOTAL |";:PRINTCHR$(10);
5290PRINT"+---+-----------+-----+----------+--------------------+-----------+";:PRINTCHR$(10);
5300FOR A=1 TO total%-1
5310A$=STR$(A)
5320AA=LEN(A$)
5330S$=FNspc(3-AA)
5340B$=STR$(AMMOUNT(A))
5350B$=FNzero(B$)
5360BB=LEN(B$)
5370SS$=FNspc(11-BB)
5380IF STATUS$(A)="Spend" THEN C$="Spend"
5390IF STATUS$(A)="Save" THEN C$="Save "
5400CC=LEN(DATE$(A))
5410SSS$=FNspc(10-CC)
5420DD=LEN(WHO$(A))
5430SSSS$=FNspc(20-DD)
5440E$=STR$(CURTOT(A))
5450E$=FNzero(E$)
5460EE=LEN(E$)
5470SSSSS$=FNspc(11-EE)
5480PRINT"|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|";:PRINTCHR$(10);
5490NEXTA
5500PRINT"+---+-----------+-----+----------+--------------------+-----------+";:PRINTCHR$(10);
5510OSCLI("SPOOL")
5520OSCLI("SETTYPE "+file$+" FFF")
5530VDU6
5540IF file$="<Wimp$Scrap>" THEN
5550PROCWimp_SendToEdit(file$)
5560PROCWimp_IconPutText(Save2_Window%,1,ACE$)
5570ENDIF
5580ENDIF
5590ENDIF
5600VDU6
5610IF DOSAVE%=FALSE THEN DOSAVE%=TRUE
5620ENDPROC
5630 :
5640 DEF PROCcutdate
5650 DD%=VAL(MID$(TIME$,5,2))
5660 MM$=MID$(TIME$,8,3)
5670 IF MM$="Jan" THEN MM%=1
5680 IF MM$="Feb" THEN MM%=2
5690 IF MM$="Mar" THEN MM%=3
5700 IF MM$="Apr" THEN MM%=4
5710 IF MM$="May" THEN MM%=5
5720 IF MM$="Jun" THEN MM%=6
5730 IF MM$="Jul" THEN MM%=7
5740 IF MM$="Aug" THEN MM%=8
5750 IF MM$="Sep" THEN MM%=9
5760 IF MM$="Oct" THEN MM%=10
5770 IF MM$="Nov" THEN MM%=11
5780 IF MM$="Dec" THEN MM%=12
5790 YY%=VAL(MID$(TIME$,12,4))
5800PROCWimp_IconPutText(Entry_Window%,11,STR$(DD%))
5810PROCWimp_IconPutText(Entry_Window%,12,STR$(MM%))
5820PROCWimp_IconPutText(Entry_Window%,13,STR$(YY%))
5830 ENDPROC
5840 :
5850 DEF PROCcheckpassword
5860 IF PASS$=NEWPASS$ THEN
5870correct%=TRUE
5880PASSALLOW%=TRUE
5890PROCparttwo
5900PROCWimp_IconPutText(Options_Window%,3,LEFT$(PCOVER$,LEN(PASS$)))
5910PROCWimp_IconPutText(Save_Window%,4,PASS$)
5920PROCWimp_IconPutText(Save_Window%,5,PASS$)
5930PROCWimp_IconPutText(Save_Window%,1,haa$)
5940ELSE
5950PASSALLOW%=FALSE
5960PROCWimp_WindowClose(Password_Window%):PROCWimp_WindowAlert("Password Protection","The file has not been loaded due to incorrect password entry.")
5970correct%=FALSE
5980ENDIF
5990SYS"OS_ReadModeVariable",-1,11 TO ,,Xpic
6000SYS"OS_ReadModeVariable",-1,12 TO ,,Ypic
6010SYS"OS_ReadModeVariable",-1,4 TO ,,Xfact
6020SYS"OS_ReadModeVariable",-1,5 TO ,,Yfact
6030MOUSE RECTANGLE 0,0,Xpic<<Xfact,Ypic<<Yfact
6040 ENDPROC
6050 :
6060DEF PROCmousebox(w%)
6070wimp%!0=w%
6080SYS"Wimp_GetWindowOutline",,wimp%
6090MOUSE RECTANGLE wimp%!4+2,wimp%!8+2,wimp%!12-wimp%!4-4,wimp%!16-wimp%!8-4
6100ENDPROC
6110 :
6120DEF PROCresetentry
6130PROCWimp_IconPutText(Entry_Window%,5,"")
6140PROCWimp_IconPutText(Entry_Window%,3,STATUS$)
6150PROCWimp_IconPutText(Entry_Window%,16,"")
6160ENDPROC
6170 :
6180 DEF PROCread
6190 UPDATE%=TRUE
6200 AMMOUNT(total%)=VAL(FNWimp_IconText(Entry_Window%,5))
6210 STATUS$(total%)=STATUS$
6220 DATE$(total%)=FNWimp_IconText(Entry_Window%,11)+"/"+FNWimp_IconText(Entry_Window%,12)+"/"+FNWimp_IconText(Entry_Window%,13)
6230 DD$(total%)=FNWimp_IconText(Entry_Window%,11)
6240 MM$(total%)=FNWimp_IconText(Entry_Window%,12)
6250 YY$(total%)=FNWimp_IconText(Entry_Window%,13)
6260 WHO$(total%)=FNWimp_IconText(Entry_Window%,16)
6270 IF STATUS$(total%)="Save" THEN CURTOT(total%)=CURTOT(total%-1)+AMMOUNT(total%)
6280 IF STATUS$(total%)="Spend" THEN CURTOT(total%)=CURTOT(total%-1)-AMMOUNT(total%)
6290 total%+=1
6300 cur%=total%
6310 PROCpage
6320 ENDPROC
6330
6340 DEF PROCinput
6350 PROCWimp_IconPutText(Main_Window%,69,STR$(curpage%+1))
6360 PROCWimp_IconPutText(Main_Window%,65,STR$(totpage%+1))
6370 B=curpage%*14
6380 FOR A=1 TO 14
6390IF AMMOUNT(A+B)<>0 THEN
6400 PROCWimp_IconPutText(Main_Window%,A+70,STR$(A+B))
6410b$=STR$(AMMOUNT(A+B))
6420b$=FNcut(b$)
6430a$=FNzero(b$)
6440 PROCWimp_IconPutText(Main_Window%,A,a$)
6450 PROCWimp_IconPutText(Main_Window%,A+16,STATUS$(A+B))
6460 PROCWimp_IconPutText(Main_Window%,A+31,DATE$(A+B))
6470 PROCWimp_IconPutText(Main_Window%,A+45,WHO$(A+B))
6480b$=STR$(CURTOT(A+B))
6490b$=FNcut(b$)
6500a$=FNzero(b$)
6510 PROCWimp_IconPutText(Main_Window%,A+85,a$)
6520ELSE
6530PROCWimp_IconPutText(Main_Window%,A+70,"")
6540 PROCWimp_IconPutText(Main_Window%,A,"")
6550 PROCWimp_IconPutText(Main_Window%,A+16,"")
6560 PROCWimp_IconPutText(Main_Window%,A+31,"")
6570 PROCWimp_IconPutText(Main_Window%,A+45,"")
6580 PROCWimp_IconPutText(Main_Window%,A+85,"")
6590ENDIF
6600 NEXTA
6610 ENDPROC
6620
6630 DEF PROCclearmain
6640 FOR A=1 TO 14
6650 PROCWimp_IconPutText(Main_Window%,A+70,"")
6660 PROCWimp_IconPutText(Main_Window%,A,"")
6670 PROCWimp_IconPutText(Main_Window%,A+16,"")
6680 PROCWimp_IconPutText(Main_Window%,A+31,"")
6690 PROCWimp_IconPutText(Main_Window%,A+45,"")
6700 PROCWimp_IconPutText(Main_Window%,A+85,"")
6710 NEXTA
6720 PROCWimp_IconPutText(Main_Window%,69,"1")
6730 PROCWimp_IconPutText(Main_Window%,65,"1")
6740 ENDPROC
6750 :
6760 DEF PROCpage
6770 curpage%=INT((cur%-1)/15)
6780 IF curpage%>totpage% THEN totpage%=curpage%
6790 ENDPROC
6800 :
6810 DEF PROCrecalc
6820 FOR A=1 TO total%
6830 IF STATUS$(A)="Save" THEN CURTOT(A)=CURTOT(A-1)+AMMOUNT(A)
6840 IF STATUS$(A)="Spend" THEN CURTOT(A)=CURTOT(A-1)-AMMOUNT(A)
6850 NEXTA
6860 ENDPROC
6870:
6880REM ********************************************************************
6890:
6900DEF PROCWimp_WindowAlert(title$,message$)
6910PROCWimp_WindowAlertBox(title$,message$,0)
6920ENDPROC
6930:
6940DEF PROCWimp_WindowAlertBox(title$,message$,button%)
6950LOCAL response%
6960$(wimp%+4)=message$
6970CASE button% OF
6980 WHEN 2 : response%=1
6990 WHEN 1 : response%=15
7000 WHEN 3 : response%=(1<<5)+16
7010 WHEN 4 : response%=(1<<6)+16
7020OTHERWISE : response%=16
7030ENDCASE
7040SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
7050ENDPROC
7060:
7070DEF FNWimp_WindowCancel(title$,message$)
7080$(wimp%+4)=message$
7090response%=23
7100SYS "Wimp_ReportError",wimp%,response%,title$ TO ,response%
7110=response%-2
7120:
7130DEF PROCWimp_WindowErrorBox(title$,message$)
7140PROCWimp_WindowAlertBox(title$,message$,2)
7150ENDPROC
7160:
7170DEF FNWimp_WindowTitle(window%)
7180wimp%!0=window%
7190SYS "Wimp_GetWindInfo",,wimp%
7200IF ((wimp%!60)AND&100)=0 ERROR 1,"Title isn't indirected"
7210=$(wimp%!76)
7220:
7230DEF FNWimp_WindowLoad(window$)
7240=FNWimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
7250:
7260DEF FNWimp_WindowLoadFrom(window$,template$)
7270LOCAL c%,i%,n%,j%,sp$,sp2$
7280SYS "Wimp_OpenTemplate",,template$
7290SYS "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,-1,window$,0 TO ,,icons%
7300CASE sprites% OF
7310 WHEN 1 : wimp%!64=sprites%
7320 OTHERWISE : wimp%!64=FNEvent_Sprites(window%)
7330ENDCASE
7340SYS "Wimp_CreateWindow",,wimp% TO c%
7350SYS "Wimp_CloseTemplate"
7360SYS "Wimp_WhichIcon",c%,wimp%+40,1+2+(1<<8),2+(1<<8)
7370CASE wimp%!40 OF
7380 WHEN -1 :
7390 OTHERWISE : i%=40
7400 REPEAT
7410 wimp%!4=wimp%!i% : wimp%!0=c%
7420 SYS "Wimp_GetIconState",,wimp%
7430 sp$=FNWimp_GetStringAtAddress(wimp%!28)
7440 SYS "Wimp_DeleteIcon",,wimp%
7450 CASE sprites% OF
7460 WHEN 1 : wimp%!32=1
7470 OTHERWISE :
7480 SYS "OS_SpriteOp",&108,sprites% TO ,,,n%
7490 j%=0
7500 REPEAT : j%+=1
7510 SYS "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
7520 sp2$=FNWimp_GetStringAtAddress(pointer_block%)
7530 UNTIL j%=n% OR sp$=sp2$
7540 IF sp$=sp2$ THEN wimp%!32=sprites% ELSE wimp%!32=1
7550 ENDCASE
7560 wimp%!4=c%
7570 SYS "Wimp_CreateIcon",,wimp%+4 TO handle%
7580 i%+=4
7590 UNTIL (wimp%!i%)=-1
7600ENDCASE
7610=c%
7620:
7630DEF PROCWimp_WindowBringToTop(window%)
7640!wimp%=window%
7650SYS "Wimp_GetWindowState",,wimp%
7660wimp%!28=-1
7670SYS "Wimp_OpenWindow",,wimp%
7680ENDPROC
7690:
7700DEF PROCWimp_WindowClose(window%)
7710!wimp%=window%
7720SYS "Wimp_CloseWindow",,wimp%
7730ENDPROC
7740:
7750DEF PROCWimp_WindowForceDraw(window%)
7760CASE window% OF
7770 WHEN -1 : SYS "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
7780 OTHERWISE : SYS "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
7790ENDCASE
7800ENDPROC
7810:
7820DEF PROCWimp_WindowOpen(window%)
7830!wimp%=window%
7840SYS "Wimp_GetWindowState",,wimp%
7850SYS "Wimp_OpenWindow",,wimp%
7860ENDPROC
7870:
7880PROCWimp_WindowInterface
7890SYS"Wimp_BorderWindow",,wimp%
7900ENDPROC
7910:
7920REM ********************************************************************
7930:
7940DEF PROCWimp_SetIconSprite(window%,icon%,sprite$)
7950wimp%!0=window%
7960wimp%!4=icon%
7970SYS "Wimp_GetIconState",,wimp%
7980$wimp%!32="S"+sprite$
7990wimp%!0=window%
8000wimp%!8=0
8010wimp%!12=0
8020SYS "Wimp_SetIconState",,wimp%
8030ENDPROC
8040:
8050DEF FNWimp_IconBar(Sprite$)
8060LOCAL icon%
8070wimp%!0=-1
8080wimp%!4=0 : wimp%!8=0
8090wimp%!12=88 : wimp%!16=74
8100wimp%!20=&3002
8110$(wimp%+24)=Sprite$
8120SYS "Wimp_CreateIcon",,wimp% TO icon%
8130=icon%
8140:
8150DEF PROCWimp_IconCaret(window%,icon%,chars%)
8160SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
8170ENDPROC
8180:
8190DEF FNWimp_IconText(window%,icon%)
8200wimp%!0=window% : wimp%!4=icon%
8210SYS "Wimp_GetIconState",,wimp%
8220IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
8230=$(wimp%!28)
8240:
8250DEF FNWimp_IconValidation(window%,icon%)
8260wimp%!0=window% : wimp%!4=icon%
8270SYS "Wimp_GetIconState",,wimp%
8280IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
8290=$(wimp%!32)
8300:
8310DEF PROCWimp_IconDisable(window%,icon%)
8320wimp%!0=window% : wimp%!4=icon%
8330wimp%!8=1<<22 : wimp%!12=1<<22
8340SYS "Wimp_SetIconState",,wimp%
8350ENDPROC
8360:
8370DEF PROCWimp_IconEnable(window%,icon%)
8380wimp%!0=window% : wimp%!4=icon%
8390wimp%!8=0 : wimp%!12=1<<22
8400SYS "Wimp_SetIconState",,wimp%
8410ENDPROC
8420:
8430DEF FNWimp_IconPutSprite(window%,icon%,sprite$)
8440wimp%!0=window%:wimp%!4=icon%
8450SYS "Wimp_GetIconState",,wimp%
8460SYS "Wimp_DeleteIcon",,wimp%
8470wimp%!4=wimp%!8 : wimp%!8=wimp%!12 : wimp%!12=wimp%!16
8480wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$
8490SYS "Wimp_CreateIcon",,wimp% TO icon%
8500=icon%
8510:
8520DEF PROCWimp_IconPutText(window%,icon%,text$)
8530wimp%!0=window% : wimp%!4=icon%
8540SYS "Wimp_GetIconState",,wimp%
8550IF ((wimp%!24) AND &100)=0 ERROR 1,"Icon isn't indirected"
8560$(wimp%!28)=text$
8570wimp%!0=window% : wimp%!4=icon%
8580wimp%!8=0 : wimp%!12=0
8590SYS "Wimp_SetIconState",,wimp%
8600ENDPROC
8610:
8620DEF PROCWimp_IconInterfaceStart
8630SYS"Wimp_BorderIcon",,wimp%
8640ENDPROC
8650:
8660DEF PROCWimp_IconInterfaceFinish
8670wimp%!8=0
8680SYS"Wimp_BorderIcon",,wimp%
8690ENDPROC
8700:
8710REM ********************************************************************
8720:
8730DEF PROCWimp_MenuAdjustOn(menu%)
8740SYS "Wimp_GetPointerInfo",,pointer_block%
8750IF ((pointer_block%!8)AND1)=1 THEN SYS "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4
8760ENDPROC
8770:
8780DEF FNWimp_MenuChoice(level%)
8790=(wimp%!(4*level%))+1
8800:
8810DEF FNWimp_MenuCreate(menu$)
8820IF menu$="Colours" THEN=FNWimp_MenuColours
8830LOCAL menu%,index%,width%,length%,k%,s%
8840DIM menu% 28+FNWimp_MenuNoOfEntries(menu$)*24
8850menu%?12=7 : menu%?13=2 : menu%?14=7 :menu%?15=0
8860menu%!16=140 : menu%!20=44 : menu%!24=0
8870index%=menu%+28
8880$menu%=LEFT$(menu$,INSTR(menu$,"\")-1)
8890width%=LEN(LEFT$(menu$,INSTR(menu$,"\")-1))
8900menu$+="\" : Menu_NoOfEntries%=0
8910WHILE menu$<>""
8920menu$=MID$(menu$,INSTR(menu$,"\")+1)
8930CASE menu$ OF
8940 WHEN ""
8950 OTHERWISE :
8960 !index%=0 : index%!4=-1 : index%!8=&7000021
8970 length%=INSTR(menu$,"\")-1
8980 k%=INSTR(LEFT$(menu$,length%),">")
8990 CASE k% OF
9000 WHEN 0
9010 OTHERWISE
9020 s%=EVAL(MID$(menu$,k%+1,length%-k%))
9030 index%!4=s%
9040 length%=k%-1
9050 ENDCASE
9060 $(index%+12)=LEFT$(menu$,length%)
9070 IF length%>width% THEN width%=length%
9080 index%+=24
9090ENDCASE
9100ENDWHILE
9110menu%!16=16*(width%+1)
9120index%!-24=index%!-24 OR &80 : =menu%
9130:
9140DEF FNWimp_MenuColours
9150=FNWimp_MenuCreateColours(" ")
9160:
9170DEF FNWimp_MenuCreateColours(title$)
9180LOCAL x$,men%,j%,i%
9190x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
9200men%=FNWimp_MenuCreate(x$)
9210FOR i%=0 TO 15
9220CASE TRUE OF
9230WHEN i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
9240OTHERWISE : j%=0
9250ENDCASE
9260men%?(39+i%*24)=i%*16+j%
9270PROCWimp_MenuCentre(men%,i%+1)
9280NEXT
9290=men%
9300:
9310DEF FNWimp_MenuNoOfEntries(menu$)
9320LOCAL n% ,j% : n%=0 : j%=0
9330REPEAT
9340j%=INSTR(menu$,"\",j%+1)
9350IF j%<>0 THEN n%+=1
9360UNTIL j%=0
9370=n%
9380:
9390DEF PROCWimp_MenuBackGroundColour(menu%,item%,colour%)
9400LOCAL fore%,i%
9410fore%=(menu%?(39+(item%-1)*24))MOD16
9420i%=((menu%?(39+(item%-1)*24))DIV16)MOD16
9430menu%?(39+(item%-1)*24)=fore%+16*colour%+i%
9440ENDPROC
9450:
9460DEF PROCWimp_IconBackGroundColour(window%,icon%,colour%)
9470LOCAL fore%,i%
9480fore%=(window%?(39+(icon%-1)*24))MOD16
9490i%=((window%?(39+(icon%-1)*24))DIV16)MOD16
9500window%?(39+(icon%-1)*24)=fore%+16*colour%+i%
9510ENDPROC
9520:
9530DEF PROCWimp_MenuCentre(menu%,item%)
9540menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<3)
9550ENDPROC
9560:
9570DEF PROCWimp_MenuClose
9580SYS "Wimp_CreateMenu",-1
9590ENDPROC
9600:
9610DEF PROCWimp_MenuDisable(menu%,item%)
9620menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR(1<<22)
9630ENDPROC
9640:
9650DEF PROCWimp_MenuDottedLine(menu%,item%)
9660menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR2
9670ENDPROC
9680:
9690DEF PROCWimp_MenuEnable(menu%,item%)
9700PROCWimp_MenuDisable(menu%,item%)
9710menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)EOR(1<<22)
9720ENDPROC
9730:
9740DEF PROCWimp_MenuForegroundColour(menu%,item%,colour%)
9750menu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))DIV16)
9760ENDPROC
9770:
9780DEF PROCWimp_MenuGlue(menu1%,item%,menu2%)
9790menu1%!(8+item%*24)=menu2%
9800ENDPROC
9810:
9820DEF PROCWimp_MenuItem(menu%,item%,item$)
9830$(menu%+(40+(item%-1)*24))=LEFT$(item$,12)+CHR$0
9840ENDPROC
9850:
9860DEF PROCWimp_MenuMessage(menu%,item%)
9870menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR(1<<3)
9880ENDPROC
9890:
9900DEF PROCWimp_MenuPopUp(Menu%,x%,y%)
9910IF SA%=FALSE THEN
9920menu%=Menu%
9930SYS "Wimp_CreateMenu",,menu%,x%-64,y%+20
9940ENDIF
9950ENDPROC
9960:
9970DEF PROCWimp_MenuPopUpBar(x%,y%)
9980LOCAL n% : n%=0
9990WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
10000n%+=1
10010ENDWHILE
10020SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
10030menu%=Bar_Menu%
10040ENDPROC
10050:
10060DEF PROCWimp_MenuTick(menu%,item%)
10070menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))EOR1
10080ENDPROC
10090:
10100DEF PROCWimp_MenuTitle(menu%,title$)
10110$menu%=LEFT$(title$,12)+CHR$0
10120ENDPROC
10130:
10140DEF PROCWimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%)
10150menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))OR4
10160menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)OR&100
10170menu%!(40+(item%-1)*24)=buffer%
10180menu%!(44+(item%-1)*24)=val%
10190menu%!(48+(item%-1)*24)=BufferLength%
10200ENDPROC
10210:
10220REM ********************************************************************
10230:
10240DEF PROCWimp_SelectIcon(window%,icon%)
10250wimp%!0=window%
10260wimp%!4=icon%
10270wimp%!8=%1000000000000000000000
10280wimp%!12=%1000000000000000000000
10290SYS&400CD,,wimp%
10300ENDPROC
10310:
10320DEF PROCWimp_UnselectIcon(window%,icon%)
10330wimp%!0=window%
10340wimp%!4=icon%
10350wimp%!8=0
10360wimp%!12=%1000000000000000000000
10370SYS&400CD,,wimp%
10380ENDPROC
10390:
10400DEF PROCWimp_SpritesLoad
10410PROCWimp_SpritesPathLoad("<Obey$Dir>.Sprites")
10420direct_sprites%=sprites%
10430ENDPROC
10440:
10450DEF PROCWimp_SpritesPathLoad(pathname$)
10460LOCALS%,T%
10470S%=OPENIN"<Obey$Dir>.Sprites":T%=EXT#S%+16:CLOSE#S%
10480DIMsprites%T%,spname%12
10490!sprites%=T%:sprites%!8=0
10500SYS"OS_SpriteOp",&109,sprites%
10510SYS"OS_SpriteOp",&10A,sprites%,pathname$
10520ENDPROC
10530:
10540REM ********************************************************************
10550:
10560DEF FNWimp_FileType(type%)
10570CASEtype%OF
10580WHEN&FFF:="Text"
10590WHEN&FFD:="Data"
10600WHEN&FFB:="Basic"
10610WHEN&FF9:="Sprite"
10620WHEN&FED:="Palette"
10630WHEN&FEC:="Template"
10640WHEN&AFF:="Draw"
10650WHEN&1000:="Folder"
10660WHEN&2000:="Application"
10670OTHERWISE=STR$~(type%)
10680ENDCASE
10690:
10700DEF FNWimp_GetFilePathName
10710=FNWimp_GetStringAtAddress(wimp%+44)
10720:
10730DEF FNWimp_FileLoad(pathname$)
10740LOCALS%,T%,file%
10750S%=OPENINpathname$
10760T%=EXT#S%+16
10770CLOSE#S%
10780DIMfile%T%
10790OSCLI("LOAD"+pathname$+""+STR$~file%)
10800=file%
10810;
10820DEF FNWimp_GetStringAtAddress(array%)
10830LOCALs$:s$=""
10840WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE:
10850=s$
10860:
10870DEF FNWimp_GetFileFromPathname(f$)
10880CASE INSTR(f$,".") OF
10890 WHEN 0 :=f$
10900 OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,".")))
10910ENDCASE
10920:
10930DEF PROCWimp_SendToEdit(file$)
10940LOCAL n%
10950wimp%!4=&6CC01C0C
10960wimp%!16=5
10970wimp%!36=0
10980wimp%!40=&FFF
10990$(wimp%+44)=file$+CHR$0
11000n%=LENfile$+45
11010IF n%MOD4 THEN !wimp%=4+(n%>>2)<<2 ELSE !wimp%=n%
11020SYS "Wimp_SendMessage",17,wimp%,0
11030ENDPROC
11040:
11050REM ********************************************************************
11060:
11070DEF PROCWimp_Start(TaskName$,wimp_memory%,icon%)
11080DIM wimp% wimp_memory%,icons% icon%
11090IF wimp_memory%<256 THEN wimp_memory%=256
11100icon_memory%=icons%+icon%
11110task$=TaskName$
11120indirect_sprites%=1 : direct_sprites%=1
11130PROCWimp_SetEventVariables
11140ON ERROR PROCWimp_Error:END
11150SYS"Wimp_Initialise",200,&4B534154,TaskName$ TO version%,task%
11160ENDPROC
11170:
11180DEF FNWimp_BASICParameters
11190 LOCAL com$,param$,I%
11200 SYS "OS_GetEnv" TO com$
11210 params$=""
11220 I%=INSTR(com$," -quit ")
11230 IF I% THEN params$=MID$(com$,INSTR(com$," ",I%+LEN" -quit ")+1)
11240=params$
11250:
11260DEF PROCWimp_SetEventVariables
11270DIM pointer_block% 20
11280interface%=FALSE
11290null%=1 :draw%=2 : pointer_leaving%=1<<4
11300pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7
11310key%=1<<8:menu%=1<<9:scroll%=1<<10
11320lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18)
11330recorder%=1<<18:acknowledge%=1<<19:window%=0
11340sprites%=1:version%=0:task%=0
11350Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0
11360x_origin%=0:y_origin%=0:SaveWindow%=-3
11370message_quit%=0:message_save%=2:message_load%=3
11380mouse_button%=2:save_event%=0
11390top_line%=0 : bottom_line%=0
11400ENDPROC
11410:
11420DEF PROCWimp_Error
11430LOCALX$,x%
11440ON ERROR OFF
11450x%=ERL
11460X$=REPORT$+"atline"+STR$(x%DIV10)
11470DIMErrorMsg%36
11480ErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x%
11490$(ErrorMsg%+24)="!RunImage"
11500SYS"Wimp_SendMessage",17,ErrorMsg%
11510PROCWimp_WindowAlert(task$,X$)
11520PROCWimp_CloseDown
11530ENDPROC
11540:
11550DEF PROCWimp_CloseDown
11560SYS"Wimp_CloseDown",task%,"TASK"
11570ENDPROC
11580:
11590DEF PROCWimp_Quit
11600finished%=TRUE
11610ENDPROC
11620:
11630DEF FNWimp_ReadVariable(Variable$)
11640LOCALlen%,result%,variable%
11650$wimp%=Variable$
11660SYS"OS_ReadVarVal",wimp%,wimp%+255,255,,3TO,,len%
11670wimp%?(len%+255)=13
11680=$(wimp%+255)
11690:
11700REM ********************************************************************
11710:
11720DEF PROCWimp_WaitForEvent
11730LOCAL mask%,event%
11740finished%=FALSE
11750mask%=%111000011001
11760REPEAT
11770 SYS"Wimp_Poll",mask%,wimp% TO event%
11780 CASE event% OF
11790 WHEN0 :
11800 WHEN1 : PROCWimp_PollDrawWindow
11810 WHEN2 : SYS "Wimp_OpenWindow",,wimp%
11820 WHEN3 : PROCWimp_PollCloseWindow
11830 WHEN4 :
11840 WHEN5 :
11850 WHEN6 : PROCWimp_PollMouseClick
11860 WHEN7 : PROCWimp_PollSaveMessage
11870 WHEN8 : PROCWimp_PollKeyPress
11880 WHEN9 : PROCEvent_MenuChoice(menu%)
11890 WHEN10:
11900 WHEN11:
11910 WHEN12:
11920 WHEN17,18: PROCWimp_PollMessages
11930 WHEN19:
11940 ENDCASE
11950UNTIL finished%
11960ENDPROC
11970:
11980DEF PROCWimp_PollDrawWindow
11990LOCAL more%
12000SYS"Wimp_RedrawWindow",,wimp%TOmore%
12010window%=wimp%!0
12020x_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24
12030WHILEmore%
12040 IF interface% THEN SYS"Wimp_BorderWindow",,wimp%
12050 PROCEvent_Draw(window%,x_origin%,y_origin%)
12060 SYS"Wimp_GetRectangle",,wimp%TOmore%
12070ENDWHILE
12080ENDPROC
12090:
12100DEF PROCWimp_PollCloseWindow
12110 SYS "Wimp_GetPointerInfo",,wimp%
12120 window%=wimp%!12 : buttons%=wimp%!8
12130 PROCEvent_WindowClose(window%,buttons%)
12140 !wimp%=window% : SYS "Wimp_CloseWindow",,wimp%
12150ENDPROC
12160:
12170DEF PROCWimp_PollMouseClick
12180 button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
12190 CASE button% OF
12200 WHEN2 : PROCWimp_PollMenuPopUp
12210 OTHERWISE: CASE FNEvent_Save(window%) OF
12220 WHEN TRUE : PROCWimp_PollMouseSave
12230 WHEN FALSE: PROCWimp_PollEventMouseClick
12240 ENDCASE
12250 ENDCASE
12260ENDPROC
12270:
12280DEF PROCWimp_PollMenuPopUp
12290IF SA%=FALSE THEN
12300menu%=FNEvent_Menu(window%)
12310 CASE menu% OF
12320 WHEN FALSE:
12330 OTHERWISE :
12340 CASE window% OF
12350 WHEN -2 : n%=0
12360 WHILE ((Bar_Menu%!(28+n%*24))AND%10000000)=0
12370 n%+=1
12380 ENDWHILE
12390 SYS "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*73
12400 OTHERWISE : SYS"Wimp_CreateMenu",,menu%,x%-64,y%+20
12410 ENDCASE
12420 ENDCASE
12430ENDIF
12440ENDPROC
12450:
12460DEF PROCWimp_PollMouseSave
12470 CASE icon% OF
12480 WHEN 0 : IF button% AND &50 THEN PROCWimp_PollDragBox(window%)
12490 WHEN 2 : IF button% AND 5 THEN PROCWimp_PollSaveFile(window%)
12500 ENDCASE
12510ENDPROC
12520:
12530DEF PROCWimp_PollEventMouseClick
12540 IF interface% THEN SYS"Wimp_BorderIcon",,wimp%
12550 PROCEvent_MouseClick(window%,icon%,button%,x%,y%)
12560 CASE interface% OF
12570 WHEN TRUE :
12580 wimp%!0=x%:wimp%!4=y% : wimp%!8=0
12590 wimp%!12=window% : wimp%!16=icon%
12600 SYS"Wimp_BorderIcon",,wimp%
12610 ENDCASE
12620ENDPROC
12630:
12640DEF PROCWimp_PollSaveFile(window%)
12650LOCALfile$
12660 wimp%!0=window% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
12670 file$=$(wimp%!28)
12680 CASE INSTR(file$,".") OF
12690 WHEN 0 :
12700IF key%=13 THEN
12710 $(wimp%+4)="To save, drag the icon to a directory window"
12720 SYS "Wimp_ReportError",wimp%,16,task$
12730ENDIF
12740 OTHERWISE:
12750 IF key%=13 THEN PROCEvent_SaveFile(file$,window%)
12760 ENDCASE
12770IF key%=13 THEN SYS"Wimp_CreateMenu",-1
12780IF SA%=TRUE THEN PROCWimp_CloseDown
12790ENDPROC
12800:
12810DEF PROCWimp_PollDragBox(window%)
12820LOCALx%,y%
12830 save%=window%
12840 !wimp%=window%
12850 SYS"Wimp_GetWindowState",,wimp%
12860 x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24
12870 wimp%!4=0
12880 SYS"Wimp_GetIconState",,wimp%
12890 !wimp%=window%
12900 wimp%!4=5
12910 wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12
12920 wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20
12930 wimp%!24=0:wimp%!28=0
12940 wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
12950 SYS"Wimp_DragBox",,wimp%
12960ENDPROC
12970:
12980DEF PROCWimp_PollKeyPress
12990 window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
13000 CASE FNEvent_Save(window%) OF
13010 WHEN TRUE : PROCWimp_PollSaveFile(window%)
13020 WHEN FALSE: PROCEvent_KeyPress(window%,icon%,key%)
13030 ENDCASE
13040ENDPROC
13050:
13060DEF PROCWimp_PollSaveMessage
13070LOCALfile$,window%,icon%,x%,y%
13080 SYS"Wimp_GetPointerInfo",,wimp%
13090 window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
13100 wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
13110 file$=$(wimp%!28)
13120 file$=FNWimp_GetFileFromPathname(file$)
13130ACE$=file$
13140 wimp%!20=window%
13150 wimp%!24=icon%
13160 wimp%!28=x%:wimp%!32=y%
13170 wimp%!36=length%
13180 wimp%!0=64
13190 wimp%!12=0
13200 wimp%!16=1
13210 wimp%!40=&FFF
13220 $(wimp%+44)=file$
13230 SYS"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
13240ENDPROC
13250:
13260DEF PROCWimp_PollMessages
13270LOCAL file$
13280file$=FNWimp_GetStringAtAddress(wimp%+44)
13290 CASE wimp%!16 OF
13300 WHEN 0 : finished%=TRUE
13310 WHEN 1 :
13320 WHEN 2 :
13330 REM PROCWimp_IconPutText(save%,1,file$)
13340 wimp%!0=save% : wimp%!4=1 : SYS "Wimp_GetIconState",,wimp%
13350 $(wimp%!28)=file$
13360 wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0
13370 SYS "Wimp_SetIconState",,wimp%
13380 REM PROCWimp_IconCaret(save%,1,LENfile$)
13390 SYS "Wimp_SetCaretPosition",save%,1,,,-1,LENfile$
13400 PROCEvent_SaveFile(file$,save%)
13410 IF SA%=TRUE THEN PROCWimp_CloseDown
13420 WHEN 3
13430 type$=FNWimp_FileType(wimp%!40) : PROCEvent_LoadFile(file$,type$)
13440 WHEN 5 :
13450IF wimp%!40=&FAF AND event%=18 THEN
13460wimp%!12=wimp%!8
13470SYS"XWimp_SendMessage",17,wimp%,wimp%!20
13480file$=FNWimp_GetFilePathName
13490type$=FNWimp_FileType(&FAF)
13500PROCEvent_LoadFile(file$,type$)
13510ENDIF
13520 ENDCASE
13530ENDPROC
13540:
13550DEF FNWimp_GetStringAtAddress(array%)
13560LOCALs$:s$=""
13570WHILE(?array%<>13)AND(?array%<>0):s$+=CHR$(?array%):array%+=1:ENDWHILE:
13580=s$
13590:
13600DEF FNWimp_GetFileFromPathname(f$)
13610CASE INSTR(f$,".") OF
13620 WHEN 0 :=f$
13630 OTHERWISE :=FNWimp_GetFileFromPathname(RIGHT$(f$,LEN(f$)-INSTR(f$,".")))
13640ENDCASE
13650:
13660DEF FNWimp_FileType(type%)
13670CASEtype%OF
13680WHEN&FFF:="Text"
13690WHEN&FFD:="Data"
13700WHEN&FFB:="Basic"
13710WHEN&FF9:="Sprite"
13720WHEN&FED:="Palette"
13730WHEN&FEC:="Template"
13740WHEN&AFF:="Draw"
13750WHEN&1000:="Folder"
13760WHEN&2000:="Application"
13770OTHERWISE=STR$~(type%)
13780ENDCASE
13790:
13800DEFFNcut(A$)
13810Ab=INSTR(A$,".")
13820IF Ab<>0 THEN B$=LEFT$(A$,Ab+2) ELSE B$=A$
13830=B$
13840:
13850DEFPROCpdsel
13860IF PSEL%=2 THEN
13870PROCWimp_IconDisable(Print_Window%,8)
13880ENDIF
13890IF PSEL%=3 THEN
13900PROCWimp_IconDisable(Print_Window%,9)
13910PROCWimp_IconDisable(Print_Window%,11)
13920ENDIF
13930ENDPROC
13940:
13950DEFPROCpsel
13960IF PSEL%=1 THEN
13970PROCWimp_SelectIcon(Print_Window%,5)
13980ENDIF
13990IF PSEL%=2 THEN
14000PROCWimp_SelectIcon(Print_Window%,6)
14010PROCWimp_IconEnable(Print_Window%,8)
14020PROCWimp_IconCaret(Print_Window%,8,LEN(FNWimp_IconText(Print_Window%,8)))
14030ENDIF
14040IF PSEL%=3 THEN
14050PROCWimp_SelectIcon(Print_Window%,7)
14060PROCWimp_IconEnable(Print_Window%,9)
14070PROCWimp_IconEnable(Print_Window%,11)
14080PROCWimp_IconCaret(Print_Window%,9,LEN(FNWimp_IconText(Print_Window%,9)))
14090ENDIF
14100ENDPROC
14110:
14120DEF FNgetstring(array%)
14130LOCAL path$,pointer%
14140path$=""
14150pointer%=array%
14160REPEAT
14170path$+=CHR$?pointer%
14180pointer%+=1
14190UNTIL ?pointer%=0 OR ?pointer%=13
14200=path$
14210:
14220DEFPROCopenprinter
14230SYS "XPDriver_Info" TO R0,R1,R2,R3,R4,R5,R6,R7
14240IF R1=0 AND R2=0 AND R3=0 AND R5=0 AND R6=0 AND R7=0 THEN
14250PROCWimp_IconPutText(Print_Window%,3,"No driver loaded")
14260PRT%=FALSE
14270ELSE
14280printer$=FNgetstring(R4)
14290PROCWimp_IconPutText(Print_Window%,3,printer$)
14300PRT%=TRUE
14310ENDIF
14320ENDPROC
14330:
14340DEFPROCprint
14350:
14360printhand%=OPENOUT("PRINTER:$.Job1") : REM start a job !!!
14370$title%="Cheat file"
14380SYS &80145,printhand%,title%
14390BPUT#printhand%,13 : REM put head to left of paper to start!!!!
14400:
14410IF PSEL%=1 THEN
14420PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
14430PROCprintline("|Num| Ammount |State| Date | Who gave it to you | TOTAL |"+CHR$(10))
14440PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
14450FOR A=1 TO total%-1
14460IF AMMOUNT(A)<>0 THEN
14470A$=STR$(A)
14480AA=LEN(A$)
14490S$=FNspc(3-AA)
14500B$=STR$(AMMOUNT(A))
14510B$=FNzero(B$)
14520BB=LEN(B$)
14530SS$=FNspc(11-BB)
14540IF STATUS$(A)="Spend" THEN C$="Spend"
14550IF STATUS$(A)="Save" THEN C$="Save "
14560CC=LEN(DATE$(A))
14570SSS$=FNspc(10-CC)
14580DD=LEN(WHO$(A))
14590SSSS$=FNspc(20-DD)
14600E$=STR$(CURTOT(A))
14610E$=FNzero(E$)
14620EE=LEN(E$)
14630SSSSS$=FNspc(11-EE)
14640PROCprintline("|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|"+CHR$(10))
14650ENDIF
14660NEXTA
14670PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
14680ENDIF
14690
14700IF PSEL%=2 THEN
14710PA=VAL(FNWimp_IconText(Print_Window%,8))
14720PB=(PA-1)*14
14730PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
14740PROCprintline("|Num| Ammount |State| Date | Who gave it to you | TOTAL |"+CHR$(10))
14750PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
14760FOR A=(1+PB) TO (14+PB)
14770IF AMMOUNT(A)<>0 THEN
14780A$=STR$(A)
14790AA=LEN(A$)
14800S$=FNspc(3-AA)
14810B$=STR$(AMMOUNT(A))
14820B$=FNzero(B$)
14830BB=LEN(B$)
14840SS$=FNspc(11-BB)
14850IF STATUS$(A)="Spend" THEN C$="Spend"
14860IF STATUS$(A)="Save" THEN C$="Save "
14870CC=LEN(DATE$(A))
14880SSS$=FNspc(10-CC)
14890DD=LEN(WHO$(A))
14900SSSS$=FNspc(20-DD)
14910E$=STR$(CURTOT(A))
14920E$=FNzero(E$)
14930EE=LEN(E$)
14940SSSSS$=FNspc(11-EE)
14950PROCprintline("|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|"+CHR$(10))
14960ENDIF
14970NEXTA
14980PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
14990ENDIF
15000
15010IF PSEL%=3 THEN
15020A=VAL(FNWimp_IconText(Print_Window%,9))
15030B=VAL(FNWimp_IconText(Print_Window%,11))
15040PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
15050PROCprintline("|Num| Ammount |State| Date | Who gave it to you | TOTAL |"+CHR$(10))
15060PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
15070FOR A=A TO B
15080IF AMMOUNT(A)<>0 THEN
15090A$=STR$(A)
15100AA=LEN(A$)
15110S$=FNspc(3-AA)
15120B$=STR$(AMMOUNT(A))
15130B$=FNzero(B$)
15140BB=LEN(B$)
15150SS$=FNspc(11-BB)
15160IF STATUS$(A)="Spend" THEN C$="Spend"
15170IF STATUS$(A)="Save" THEN C$="Save "
15180CC=LEN(DATE$(A))
15190SSS$=FNspc(10-CC)
15200DD=LEN(WHO$(A))
15210SSSS$=FNspc(20-DD)
15220E$=STR$(CURTOT(A))
15230E$=FNzero(E$)
15240EE=LEN(E$)
15250SSSSS$=FNspc(11-EE)
15260PROCprintline("|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|"+CHR$(10))
15270ENDIF
15280NEXTA
15290PROCprintline("+---+-----------+-----+----------+--------------------+-----------+"+CHR$(10))
15300ENDIF
15310:
15320BPUT#printhand%,12 : REM do linefeed !!!!
15330SYS &80148,printhand%
15340CLOSE #printhand%
15350ENDPROC
15360:
15370DEFPROCprintline(line$)
15380FOR cco=1 TO LEN(line$)
15390byte=ASC(MID$(line$,cco,1))
15400BPUT#printhand%,byte
15410IF byte=10 OR byte=13 THEN BPUT#printhand%,13 : REM put head to left of paper
15420NEXT cco
15430ENDPROC
15440:
15450DEFFNspc(num)
15460IF num>0 THEN
15470LOCAL f
15480SP$=""
15490FOR f=1 TO num:SP$+=" ":NEXTf
15500ELSE
15510SP$=""
15520ENDIF
15530=SP$
15540:
15550DEFFNzero(numbs$)
15560LOCAL B
15570B=INSTR(numbs$,".")
15580IF LEN(numbs$)-1=B AND B<>0 THEN numbs$=numbs$+"0"
15590IF B=0 THEN numbs$=numbs$+".00"
15600=numbs$
15610:
15620DEF PROCerror
15630IF ERR=67785 THEN
15640PROCWimp_WindowErrorBox("!ADRBook","Please write enable the disk")
15650CLOSE #X%
15660ELSE
15670DOSAVE%=FALSE
15680PROCWimp_WindowErrorBox("!ADRBook",REPORT$)
15690ENDIF
15700ENDPROC
15710:
15720DEF PROCunbox
15730SYS "OS_ReadModeVariable",-1,11 TO ,,xpic
15740SYS "OS_ReadModeVariable",-1,12 TO ,,ypic
15750SYS "OS_ReadModeVariable",-1,4 TO ,,xfact
15760SYS "OS_ReadModeVariable",-1,5 TO ,,yfact
15770MOUSE RECTANGLE 0,0,xpic<<xfact,ypic<<yfact
15780ENDPROC
ș "OS_GetEnv" � env$
� �env$," -quit ") �
2fileload$=�env$,�env$,�(34),�env$,�(34))+1)+1)
(�
2? �Wimp_Start("PocketM",4990,3913)
<3 �User_SetInitialData
F. �Create_Windows
P, �Create_Menus
Z� fileload$<>" " �
d)�Event_LoadFile(fileload$,"file_faf")
n/�Wimp_IconPutText(Save_Window%,1,fileload$)
x�
�1 �Wimp_WaitForEvent
�. �Wimp_CloseDown
� �
� :
�! � �User_SetInitialData
�
DOSAVE%=�
� SA%=�
�
UPDATE%=�
� CD%=�
�
PRT%=�
�� title% 256
�PSEL%=1
� EE%=�
PASSALLOW%=�
PCOVER$="***************"
correct%=�
"PASS$="POO"
,MONEY%=0
6
DD%=27
@
MM%=04
JYY%=1993
TSTATUS$="Save"
^
COL%=�
hPOUNDVAL%=156
r� A%(15)
|total%=1
�
cur%=1
�totpage%=0
�curpage%=0
�� AMMOUNT(999)
�� STATUS$(999)
�� DATE$(999)
�� WHO$(999)
�� CURTOT(999)
�� DD$(999)
�� MM$(999)
�� YY$(999)
�AMMOUNT()=0
�STATUS$()=""
DATE$()=""
WHO$()=""
CURTOT()=0
&EDII%=�
0 �
: :
D � �Create_Windows
N �Wimp_SpritesLoad
X; Info_Window%=�Wimp_WindowLoad("Info")
b< Entry_Window%=�Wimp_WindowLoad("Entry")
l; Main_Window%=�Wimp_WindowLoad("Main")
v= Delete_Window%=�Wimp_WindowLoad("Delete")
�> Options_Window%=�Wimp_WindowLoad("Options")
�; Save_Window%=�Wimp_WindowLoad("Save")
�? Password_Window%=�Wimp_WindowLoad("Password")
�< Save2_Window%=�Wimp_WindowLoad("Save2")
�< Print_Window%=�Wimp_WindowLoad("Print")
�< Close_Window%=�Wimp_WindowLoad("Close")
�. Bar_Icon%=�Wimp_IconBar("!PocketM")
�+�Wimp_IconPutText(Options_Window%,3,"")
��resetentry
� �
�
:
�" � �Event_Save(window%)
� Ȏ window% �
" � Save_Window% :=�
$ � Save2_Window% : =�
:=�
�
*
:
4. � �Event_Sprites(window%)=sprites%
> :
H � �Create_Menus
RV Save_Menu%=�Wimp_MenuCreate("Save\Pocket>Save_Window%\Text>Save2_Window%")
\} Bar_Menu%=�Wimp_MenuCreate("PocketM\Info>Info_Window%\Password>Options_Window%\Save>Save_Menu%\Clear Data\Quit")
fW Main_Menu%=�Wimp_MenuCreate("PocketM\Start\Back\Print\Add\Delete\Next\End")
p"�Wimp_MenuDisable(Bar_Menu%,3)
z%�Wimp_MenuDottedLine(Bar_Menu%,1)
�%�Wimp_MenuDottedLine(Bar_Menu%,3)
�%�Wimp_MenuDottedLine(Bar_Menu%,4)
�&�Wimp_MenuDottedLine(Main_Menu%,2)
�&�Wimp_MenuDottedLine(Main_Menu%,5)
� �
�
:
�" � �Event_Menu(window%)
� Ȏ window% �
�. � Bar_Window% : =Bar_Menu%
�/ � Main_Window% : =Main_Menu%
�! : =�
�
�
� :
1 � �Event_WindowClose(window%,buttons%)
Ȏ window% �
A � Entry_Window% : �Wimp_WindowBringToTop(Main_Window%)
$ �
. �
8 :
B5 � �Event_Draw(window%,x_origin%,y_origin%)
L Ȏ window% �
V8 � Info_Window% : �User_DrawInfoWindow
` �
j �
t :
~' � �User_DrawInfoWindow
� �
� :
�; � �Event_MouseClick(window%,icon%,button%,x%,y%)
� Ȏ window% �
�1 � Bar_Window% : �User_MouseBar
�B � Info_Window% : �User_MouseInfo( button%,icon%)
�C � Entry_Window% : �User_MouseEntry( button%,icon%)
�B � Main_Window% : �User_MouseMain( button%,icon%)
�D � Delete_Window% : �User_MouseDelete( button%,icon%)
�E � Options_Window% : �User_MouseOptions( button%,icon%)
�C � Print_Window% : �User_MousePrint( button%,icon%)
�C � Close_Window% : �User_MouseClose( button%,icon%)
�
�
:
/ � �User_MouseClose( button%,icon%)
( � icon%=1 �
2 SA%=�
<
�unbox
F$�Wimp_WindowClose(Close_Window%)
P
UPDATE%=�
Z(�Wimp_WindowBringToTop(Save_Window%)
d%A$=�Wimp_IconText(Save_Window%,1)
n)�Wimp_IconCaret(Save_Window%,1,�(A$))
x�
� � icon%=2 �
�
�unbox
�
UPDATE%=�
�$�Wimp_WindowClose(Close_Window%)
� CD%=�
��
� � icon%=3 �
�
�unbox
�$�Wimp_WindowClose(Close_Window%)
��
�� CD%=� � �Wimp_CloseDown
��
� � �User_MouseBar
1 �Wimp_WindowBringToTop(Main_Window%)
�
:
"/ � �User_MousePrint( button%,icon%)
,- � icon%=5 � �pdsel:PSEL%=1:�psel
6- � icon%=6 � �pdsel:PSEL%=2:�psel
@- � icon%=7 � �pdsel:PSEL%=3:�psel
J! � icon%=4 � PRT%=� �
T � PSEL%=1 �
^ �print
h �
r � PSEL%=2 �
|1 A=�(�Wimp_IconText(Print_Window%,8))
�. � (A-1)<(totpage%+1) � (A-1)>-1 �
� �print
� �
� �
� � PSEL%=3 �
�1 A=�(�Wimp_IconText(Print_Window%,9))
�2 B=�(�Wimp_IconText(Print_Window%,11))
�, � (A-1)>-1 � (B-1)<(total%-1) �
� �print
� �
� �
� �
� �
:
. � �User_MouseInfo( button%,icon%)
�
& :
0/ � �User_MouseEntry( button%,icon%)
:� � icon%=7 � STATUS$="Spend" � STATUS$="Save":�Wimp_IconPutText(Entry_Window%,3,STATUS$):�Wimp_IconEnable(Entry_Window%,16)
D) � icon%=8 � STATUS$="Save" �
NSTATUS$="Spend"
X.�Wimp_IconPutText(Entry_Window%,3,STATUS$)
b'�Wimp_IconDisable(Entry_Window%,16)
l*�Wimp_IconPutText(Entry_Window%,16,"")
v&A$=�Wimp_IconText(Entry_Window%,5)
�*�Wimp_IconCaret(Entry_Window%,5,�(A$))
��
�F � icon%=18 � �Wimp_WindowClose(Entry_Window%):�resetentry
� � icon%=17 �
�
� EE%=� �
�&A$=�Wimp_IconText(Entry_Window%,5)
�#� A$<>"" � A$<>"." � �(A$)<>0 �
� �read
�
�input
��
��
�&A$=�Wimp_IconText(Entry_Window%,5)
�#� A$<>"" � A$<>"." � �(A$)<>0 �
; AMMOUNT(AABB)=�(�Wimp_IconText(Entry_Window%,5))
STATUS$(AABB)=STATUS$
� DATE$(AABB)=�Wimp_IconText(Entry_Window%,11)+"/"+�Wimp_IconText(Entry_Window%,12)+"/"+�Wimp_IconText(Entry_Window%,13)
5 DD$(AABB)=�Wimp_IconText(Entry_Window%,11)
*5 MM$(AABB)=�Wimp_IconText(Entry_Window%,12)
45 YY$(AABB)=�Wimp_IconText(Entry_Window%,13)
>6 WHO$(AABB)=�Wimp_IconText(Entry_Window%,16)
H UPDATE%=�
R �recalc
\ �input
f�
p�
z.� total%>1 � �Wimp_MenuEnable(Bar_Menu%,3)
�(�PROCWimp_WindowClose(Entry_Window%)
��resetentry
��cutdate
�&�Wimp_IconCaret(Entry_Window%,5,0)
��
� �
� :
�. � �User_MouseMain( button%,icon%)
�. � icon%>70 � icon%<85 � icon%-=70
�. � icon%>16 � icon%<31 � icon%-=16
�. � icon%>31 � icon%<46 � icon%-=31
�. � icon%>45 � icon%<57 � icon%-=45
�/ � icon%>85 � icon%<100 � icon%-=85
# � icon%>0 � icon%<15 �
" A=(curpage%*14)+icon%
� A<total% � A>0 �
$2 �Wimp_WindowBringToTop(Entry_Window%)
.= �Wimp_IconPutText(Entry_Window%,5,�(AMMOUNT(A)))
8> �Wimp_IconCaret(Entry_Window%,5,�(�(AMMOUNT(A))))
B> �Wimp_IconCaret(Entry_Window%,5,�(�(AMMOUNT(A))))
L: �Wimp_IconPutText(Entry_Window%,3,STATUS$(A))
V UPDATE%=�
` STATUS$=STATUS$(A)
jl � STATUS$(A)="Spend" � �Wimp_IconDisable(Entry_Window%,16) � �Wimp_IconEnable(Entry_Window%,16)
t7 �Wimp_IconPutText(Entry_Window%,11,DD$(A))
~7 �Wimp_IconPutText(Entry_Window%,12,MM$(A))
�7 �Wimp_IconPutText(Entry_Window%,13,YY$(A))
�8 �Wimp_IconPutText(Entry_Window%,16,WHO$(A))
� EE%=�
� AABB=A
� �
� �
�] � icon%=66 � total%>1 � �openprinter:�Wimp_WindowBringToTop(Print_Window%):�psel
�o � icon%=67 � total%>1 � �Wimp_WindowBringToTop(Delete_Window%):�Wimp_IconCaret(Delete_Window%,3,0)
� � icon%=15 �
��cutdate
� EE%=�
�)�Wimp_WindowBringToTop(Entry_Window%)
2 �Wimp_IconPutText(Entry_Window%,5,"")
6 �Wimp_IconPutText(Entry_Window%,3,"Save")
STATUS$="Save"
/ �Wimp_IconEnable(Entry_Window%,16)
(&�Wimp_IconCaret(Entry_Window%,5,0)
2�
<9 � icon%=62 � curpage%>0 � curpage%-=1:�input
F@ � icon%=61 � curpage%<totpage% � curpage%+=1:�input
P8 � icon%=64 � curpage%>0 � curpage%=0:�input
ZF � icon%=63 � curpage%<totpage% � curpage%=totpage%:�input
d �
n :
x0 � �User_MouseDelete( button%,icon%)
� � icon%=4 �
�)NUM$=�Wimp_IconText(Delete_Window%,3)
�-� NUM$<>"" � �(NUM$)<total% � �(NUM$)>0 �
�Xdo%=�Wimp_WindowCancel("Delete","Are you sure you want to delete number "+NUM$+" ?")
�
� do%=� �
�*�Wimp_IconPutText(Delete_Window%,3,"")
�'�Wimp_IconCaret(Delete_Window%,3,0)
�)�PROCWimp_WindowClose(Delete_Window%)
��
�
�
� do%=� �
�"� �(NUM$)>0 � �(NUM$)<total% �
�
UPDATE%=�
cur%=�(NUM$)
� cur%=total% � total%-=1
"� cur%<total% �
,� A=�(NUM$) � total%
6AMMOUNT(A)=AMMOUNT(A+1)
@STATUS$(A)=STATUS$(A+1)
JDATE$(A)=DATE$(A+1)
TWHO$(A)=WHO$(A+1)
^CURTOT(A)=CURTOT(A+1)
h� A
r
total%-=1
|�
�
�� (total%-1)/15<totpage% �
�totpage%-=1
�%� totpage%>curpage% � curpage%-=1
��
�
� �page
��recalc
�
�input
��
�*�Wimp_IconPutText(Delete_Window%,3,"")
�'�Wimp_IconCaret(Delete_Window%,3,0)
�)�PROCWimp_WindowClose(Delete_Window%)
/� total%=1 � �Wimp_MenuDisable(Bar_Menu%,3)
�
�
&�
0a � icon%=5 � �Wimp_IconPutText(Delete_Window%,3,""):�Wimp_WindowClose(Delete_Window%)
: �
D :
N1 � �User_MouseOptions( button%,icon%)
X� � icon%=2 � PASSALLOW%=� � �Wimp_IconPutText(Options_Window%,3,PASS$):Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:Ȗ:�Wimp_IconPutText(Options_Window%,3,�PCOVER$,�(PASS$)))
b,�Wimp_IconPutText(Password_Window%,3,"")
l �
v :
�0 � �Event_KeyPress(window%,icon%,key%)
� Ȏ window% �
�F � Entry_Window% : �User_KeyPressEntry( icon%,key%)
�G � Delete_Window% : �User_KeyPressDelete( icon%,key%)
�I � Password_Window% : �User_KeyPressPassword( icon%,key%)
�H � Options_Window% : �User_KeyPressOptions( icon%,key%)
� �
� �
� :
�/ � �User_KeyPressEntry( icon%,key%)
�h � key%=13 � icon%=5 � �Wimp_IconCaret(Entry_Window%,11,�(�Wimp_IconText(Entry_Window%,11)))
�i � key%=13 � icon%=11 � �Wimp_IconCaret(Entry_Window%,12,�(�Wimp_IconText(Entry_Window%,12)))
�i � key%=13 � icon%=12 � �Wimp_IconCaret(Entry_Window%,13,�(�Wimp_IconText(Entry_Window%,13)))
z � key%=13 � icon%=13 � STATUS$="Save" � �Wimp_IconCaret(Entry_Window%,16,�(�Wimp_IconText(Entry_Window%,16)))
M � key%=13 � icon%=13 � STATUS$="Spend" � �User_MouseEntry( 4,17)
; � key%=13 � icon%=16 � �User_MouseEntry( 4,17)
�
* :
40 � �User_KeyPressDelete( icon%,key%)
> �
H :
R2 � �User_KeyPressPassword( icon%,key%)
\ NEWPASS$=""
f � key%=13 �
p/NEWPASS$=�Wimp_IconText(Password_Window%,2)
z�checkpassword
��
� �
� :
�1 � �User_KeyPressOptions( icon%,key%)
� � key%=13 �
�; POUNDVAL%=�(�Wimp_IconText(Options_Window%,3))
� �
� �
� :
�% � �Event_MenuChoice(menu%)
� Ȏ menu% �
�< � Bar_Menu% : �User_MenuChoiceBar
�= � Main_Menu% : �User_MenuChoiceMain
�
�
:
$" � �User_MenuChoiceMain
.$ Ȏ �Wimp_MenuChoice(0) �
8) � 1 : �User_MouseMain( 4,64)
B) � 2 : �User_MouseMain( 4,62)
L) � 3 : �User_MouseMain( 4,66)
V) � 4 : �User_MouseMain( 4,15)
`) � 5 : �User_MouseMain( 4,67)
j) � 6 : �User_MouseMain( 4,61)
t) � 7 : �User_MouseMain( 4,63)
~+ �Wimp_MenuAdjustOn(Main_Menu%)
� �
� �
� :
� � �User_MenuChoiceBar
�$ Ȏ �Wimp_MenuChoice(0) �
� � 1 :
� � 2 :
� � 4
�RANS%=�Wimp_WindowCancel("!PocketM","Are you sure you want to clear the data?")
�� ANS%=� �
�2�Wimp_IconPutText(Save_Window%,1,"PocketData")
�3�Wimp_IconPutText(Save2_Window%,1,"PocketText")
AMMOUNT()=0
STATUS$()=""
DATE$()=""
WHO$()=""
(CURTOT()=0
2�clearmain
<total%=1
F
cur%=1
Ptotpage%=0
Zcurpage%=0
d
UPDATE%=�
n"�Wimp_MenuDisable(Bar_Menu%,3)
x�
� � 5
�� UPDATE%=� �
�D�Wimp_IconPutText(Close_Window%,0,"This file has been modified")
�)�Wimp_WindowBringToTop(Close_Window%)
��mousebox(Close_Window%)
��
�� UPDATE%=� � finished%=�
�
�
�) �Wimp_MenuAdjustOn(Bar_Menu%)
� �
� :
�) � �Event_LoadFile(file$,type$)
�haa$=file$
+�Wimp_IconPutText(Options_Window%,3,"")
PASS$=""
file2$=file$
"X%=�(file$)
,� #X%,LONG
6� #X%,VCN%
@� LONG<>0 �
JVCN%=VCN%/2
TLONG=LONG/VCN%
^� AB=1 � LONG
h� #X%,A%(AB)
rA%(AB)=A%(AB) � VCN%
|� AB
�� AB=1 � LONG
�A%(AB)=A%(AB)/VCN%
�PASS$=PASS$+�(A%(AB))
�� AB
� � #X%
�,�Wimp_IconPutText(Password_Window%,2,"")
�,�Wimp_WindowBringToTop(Password_Window%)
��mousebox(Password_Window%)
�)�Wimp_IconCaret(Password_Window%,2,0)
��
� � #X%
��parttwo
��
�
� �parttwo
&� LONG=0 � correct%=� �
0X%=�(file2$)
:� #X%,LONG
D� #X%,VCN%
NVCN%=VCN%/2
X� LONG<>0 �
b� AB=1 � LONG/VCN%
l� #X%,A%(AB)
v� AB
��
�6� \/\/\/\/\/\/\/ Put load in here \/\/\/\/\/\/\/\/
�� #X%,total%
�� #X%,totpage%
�� A=0 � total%-1
�� #X%,AMMOUNT(A)
�� #X%,STATUS$(A)
�� #X%,DATE$(A)
�� #X%,WHO$(A)
�� #X%,CURTOT(A)
�� #X%,DD$(A)
�� #X%,MM$(A)
�� #X%,YY$(A)
�A
UPDATE%=�
(�Wimp_WindowBringToTop(Main_Window%)
�input
* � #X%
4�
>.� total%>1 � �Wimp_MenuEnable(Bar_Menu%,3)
HA� correct%=� � �Wimp_WindowClose(Password_Window%):correct%=�
R�
\ :
f+ � �Event_SaveFile(file$,window%)
p� window%=Save_Window% �
z� �
�� � � �error
�� DOSAVE%=� �
�,SETPASS1$=�Wimp_IconText(Save_Window%,4)
�,SETPASS2$=�Wimp_IconText(Save_Window%,5)
�{� SETPASS1$<>SETPASS2$ � �Wimp_WindowAlert("Password Protection","The two passwords are not the same. File not saved.")
�� SETPASS1$=SETPASS2$ �
�� SETPASS1$<>"" �
�VCN%=�(�(1000000))+1
�X%=�(file$)
�� AB=1 � �(SETPASS1$)
�A%(AB)=�(�SETPASS1$,AB,1))
�� AB
�� #X%,�(SETPASS1$)*VCN%
� #X%,VCN%*2
PASS$=SETPASS1$
;�Wimp_IconPutText(Options_Window%,3,�PCOVER$,�(PASS$)))
$� AB=1 � �(SETPASS1$)
.A%(AB)=A%(AB)*VCN%
8� #X%,A%(AB) � VCN%
B� AB
L�
VX%=�(file$)
`� #X%,0
j� #X%,0
t�
~8� \/\/\/\/\/\/\/\/\/ Put Save in here \/\/\/\/\/\/\/
�� #X%,total%
�� #X%,totpage%
�� A=0 � total%-1
�� #X%,AMMOUNT(A)
�� #X%,STATUS$(A)
�� #X%,DATE$(A)
�� #X%,WHO$(A)
�� #X%,CURTOT(A)
�� #X%,DD$(A)
�� #X%,MM$(A)
�� #X%,YY$(A)
��A
UPDATE%=�
� #X%
�("SETTYPE ")+file$+" FAF"
�Wimp_MenuClose
(-� PROCWimp_IconPutText(Save_Window%,4,"")
2-� PROCWimp_IconPutText(Save_Window%,5,"")
<�
F�
P�
Z� window%=Save2_Window% �
d� �
n� � � �error
x� DOSAVE%=� �
��21
��("SPOOL "+file$)
�S�"+---+-----------+-----+----------+--------------------+-----------+";:�(10);
�S�"|Num| Ammount |State| Date | Who gave it to you | TOTAL |";:�(10);
�S�"+---+-----------+-----+----------+--------------------+-----------+";:�(10);
�� A=1 � total%-1
�A$=�(A)
�AA=�(A$)
�S$=�spc(3-AA)
�B$=�(AMMOUNT(A))
�B$=�zero(B$)
�BB=�(B$)
�SS$=�spc(11-BB)
%� STATUS$(A)="Spend" � C$="Spend"
$� STATUS$(A)="Save" � C$="Save "
CC=�(DATE$(A))
"SSS$=�spc(10-CC)
,DD=�(WHO$(A))
6SSSS$=�spc(20-DD)
@E$=�(CURTOT(A))
JE$=�zero(E$)
TEE=�(E$)
^SSSSS$=�spc(11-EE)
h_�"|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|";:�(10);
r�A
|S�"+---+-----------+-----+----------+--------------------+-----------+";:�(10);
��("SPOOL")
��("SETTYPE "+file$+" FFF")
��6
�� file$="<Wimp$Scrap>" �
��Wimp_SendToEdit(file$)
�+�Wimp_IconPutText(Save2_Window%,1,ACE$)
��
��
��
��6
�� DOSAVE%=� � DOSAVE%=�
��
� :
� �cutdate
DD%=�(��$,5,2))
MM$=��$,8,3)
& � MM$="Jan" � MM%=1
0 � MM$="Feb" � MM%=2
: � MM$="Mar" � MM%=3
D � MM$="Apr" � MM%=4
N � MM$="May" � MM%=5
X � MM$="Jun" � MM%=6
b � MM$="Jul" � MM%=7
l � MM$="Aug" � MM%=8
v � MM$="Sep" � MM%=9
� � MM$="Oct" � MM%=10
� � MM$="Nov" � MM%=11
� � MM$="Dec" � MM%=12
� YY%=�(��$,12,4))
�.�Wimp_IconPutText(Entry_Window%,11,�(DD%))
�.�Wimp_IconPutText(Entry_Window%,12,�(MM%))
�.�Wimp_IconPutText(Entry_Window%,13,�(YY%))
� �
� :
� � �checkpassword
� � PASS$=NEWPASS$ �
�correct%=�
�PASSALLOW%=�
�parttwo
;�Wimp_IconPutText(Options_Window%,3,�PCOVER$,�(PASS$)))
+�Wimp_IconPutText(Save_Window%,4,PASS$)
+�Wimp_IconPutText(Save_Window%,5,PASS$)
**�Wimp_IconPutText(Save_Window%,1,haa$)
4�
>PASSALLOW%=�
H��Wimp_WindowClose(Password_Window%):�Wimp_WindowAlert("Password Protection","The file has not been loaded due to incorrect password entry.")
Rcorrect%=�
\�
f*ș"OS_ReadModeVariable",-1,11 � ,,Xpic
p*ș"OS_ReadModeVariable",-1,12 � ,,Ypic
z*ș"OS_ReadModeVariable",-1,4 � ,,Xfact
�*ș"OS_ReadModeVariable",-1,5 � ,,Yfact
�%ȗ ȓ 0,0,Xpic<<Xfact,Ypic<<Yfact
� �
� :
�� �mousebox(w%)
�wimp%!0=w%
�$ș"Wimp_GetWindowOutline",,wimp%
�Cȗ ȓ wimp%!4+2,wimp%!8+2,wimp%!12-wimp%!4-4,wimp%!16-wimp%!8-4
��
� :
�� �resetentry
�)�Wimp_IconPutText(Entry_Window%,5,"")
�.�Wimp_IconPutText(Entry_Window%,3,STATUS$)
*�Wimp_IconPutText(Entry_Window%,16,"")
�
:
$ � �read
. UPDATE%=�
8= AMMOUNT(total%)=�(�Wimp_IconText(Entry_Window%,5))
B" STATUS$(total%)=STATUS$
L� DATE$(total%)=�Wimp_IconText(Entry_Window%,11)+"/"+�Wimp_IconText(Entry_Window%,12)+"/"+�Wimp_IconText(Entry_Window%,13)
V7 DD$(total%)=�Wimp_IconText(Entry_Window%,11)
`7 MM$(total%)=�Wimp_IconText(Entry_Window%,12)
j7 YY$(total%)=�Wimp_IconText(Entry_Window%,13)
t8 WHO$(total%)=�Wimp_IconText(Entry_Window%,16)
~U � STATUS$(total%)="Save" � CURTOT(total%)=CURTOT(total%-1)+AMMOUNT(total%)
�V � STATUS$(total%)="Spend" � CURTOT(total%)=CURTOT(total%-1)-AMMOUNT(total%)
� total%+=1
� cur%=total%
� �page
� �
�
� � �input
�; �Wimp_IconPutText(Main_Window%,69,�(curpage%+1))
�; �Wimp_IconPutText(Main_Window%,65,�(totpage%+1))
� B=curpage%*14
� � A=1 � 14
�� AMMOUNT(A+B)<>0 �
6 �Wimp_IconPutText(Main_Window%,A+70,�(A+B))
b$=�(AMMOUNT(A+B))
b$=�cut(b$)
a$=�zero(b$)
(/ �Wimp_IconPutText(Main_Window%,A,a$)
2< �Wimp_IconPutText(Main_Window%,A+16,STATUS$(A+B))
<: �Wimp_IconPutText(Main_Window%,A+31,DATE$(A+B))
F9 �Wimp_IconPutText(Main_Window%,A+45,WHO$(A+B))
Pb$=�(CURTOT(A+B))
Zb$=�cut(b$)
da$=�zero(b$)
n2 �Wimp_IconPutText(Main_Window%,A+85,a$)
x�
�+�Wimp_IconPutText(Main_Window%,A+70,"")
�/ �Wimp_IconPutText(Main_Window%,A,"")
�2 �Wimp_IconPutText(Main_Window%,A+16,"")
�2 �Wimp_IconPutText(Main_Window%,A+31,"")
�2 �Wimp_IconPutText(Main_Window%,A+45,"")
�2 �Wimp_IconPutText(Main_Window%,A+85,"")
��
�
�A
� �
�
� � �clearmain
� � A=1 � 14
�2 �Wimp_IconPutText(Main_Window%,A+70,"")
/ �Wimp_IconPutText(Main_Window%,A,"")
2 �Wimp_IconPutText(Main_Window%,A+16,"")
2 �Wimp_IconPutText(Main_Window%,A+31,"")
"2 �Wimp_IconPutText(Main_Window%,A+45,"")
,2 �Wimp_IconPutText(Main_Window%,A+85,"")
6
�A
@1 �Wimp_IconPutText(Main_Window%,69,"1")
J1 �Wimp_IconPutText(Main_Window%,65,"1")
T �
^ :
h � �page
r" curpage%=�((cur%-1)/15)
|2 � curpage%>totpage% � totpage%=curpage%
� �
� :
� � �recalc
� � A=1 � total%
�A � STATUS$(A)="Save" � CURTOT(A)=CURTOT(A-1)+AMMOUNT(A)
�B � STATUS$(A)="Spend" � CURTOT(A)=CURTOT(A-1)-AMMOUNT(A)
�
�A
� �
�:
�J� ********************************************************************
�:
�(� �Wimp_WindowAlert(title$,message$)
�+�Wimp_WindowAlertBox(title$,message$,0)
�
:
3� �Wimp_WindowAlertBox(title$,message$,button%)
&� response%
0$(wimp%+4)=message$
:Ȏ button% �
D � 2 : response%=1
N � 1 : response%=15
X! � 3 : response%=(1<<5)+16
b! � 4 : response%=(1<<6)+16
l : response%=16
v�
�=ș "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_GetWindInfo",,wimp%
6� ((wimp%!60)�&100)=0 � 1,"Title isn't indirected"
*=$(wimp%!76)
4:
>� �Wimp_WindowLoad(window$)
H9=�Wimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
R:
\-� �Wimp_WindowLoadFrom(window$,template$)
f� c%,i%,n%,j%,sp$,sp2$
p%È™ "Wimp_OpenTemplate",,template$
zMș "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
. :
8/ ș "OS_SpriteOp",&108,sprites% � ,,,n%
B
j%=0
L � : j%+=1
V= È™ "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
`7 sp2$=�Wimp_GetStringAtAddress(pointer_block%)
j � j%=n% � sp$=sp2$
t4 � sp$=sp2$ � wimp%!32=sprites% � wimp%!32=1
~ �
� wimp%!4=c%
�. ș "Wimp_CreateIcon",,wimp%+4 � handle%
� i%+=4
� � (wimp%!i%)=-1
��
�=c%
�:
�%� �Wimp_WindowBringToTop(window%)
�!wimp%=window%
�#ș "Wimp_GetWindowState",,wimp%
�wimp%!28=-1
�ș "Wimp_OpenWindow",,wimp%
�
:
� �Wimp_WindowClose(window%)
!wimp%=window%
( È™ "Wimp_CloseWindow",,wimp%
2�
<:
F$� �Wimp_WindowForceDraw(window%)
PȎ window% �
Z8 � -1 : ș "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
d9 : È™ "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
n�
x�
�:
�� �Wimp_WindowOpen(window%)
�!wimp%=window%
�#ș "Wimp_GetWindowState",,wimp%
�ș "Wimp_OpenWindow",,wimp%
��
�:
��Wimp_WindowInterface
� ș"Wimp_BorderWindow",,wimp%
��
�:
�J� ********************************************************************
�:
0� �Wimp_SetIconSprite(window%,icon%,sprite$)
wimp%!0=window%
wimp%!4=icon%
"!È™ "Wimp_GetIconState",,wimp%
,$wimp%!32="S"+sprite$
6wimp%!0=window%
@
wimp%!8=0
Jwimp%!12=0
T!È™ "Wimp_SetIconState",,wimp%
^�
h:
r� �Wimp_IconBar(Sprite$)
|� icon%
�wimp%!0=-1
�wimp%!4=0 : wimp%!8=0
�wimp%!12=88 : wimp%!16=74
�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%
!È™ "Wimp_GetIconState",,wimp%
7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
&=$(wimp%!28)
0:
:)� �Wimp_IconValidation(window%,icon%)
D#wimp%!0=window% : wimp%!4=icon%
N!È™ "Wimp_GetIconState",,wimp%
X7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
b=$(wimp%!32)
l:
v&� �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%
!È™ "Wimp_DeleteIcon",,wimp%
!=wimp%!4=wimp%!8 : wimp%!8=wimp%!12 : wimp%!12=wimp%!16
! ?wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$
!*'ș "Wimp_CreateIcon",,wimp% � icon%
!4
=icon%
!>:
!H,� �Wimp_IconPutText(window%,icon%,text$)
!R#wimp%!0=window% : wimp%!4=icon%
!\!È™ "Wimp_GetIconState",,wimp%
!f7� ((wimp%!24) � &100)=0 � 1,"Icon isn't indirected"
!p$(wimp%!28)=text$
!z#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%
!��
!�:
"J� ********************************************************************
":
"� �Wimp_MenuAdjustOn(menu%)
"$,È™ "Wimp_GetPointerInfo",,pointer_block%
".^� ((pointer_block%!8)�1)=1 � ș "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4
"8�
"B:
"L� �Wimp_MenuChoice(level%)
"V=(wimp%!(4*level%))+1
"`:
"j� �Wimp_MenuCreate(menu$)
"t)� 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
#
length%=�menu$,"\")-1
# k%=��menu$,length%),">")
#
Ȏ k% �
#(
� 0
#2
#<% s%=�(�menu$,k%+1,length%-k%))
#F index%!4=s%
#P length%=k%-1
#Z �
#d" $(index%+12)=�menu$,length%)
#n' � length%>width% � width%=length%
#x 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
$
Ȏ � �
$(� i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
$ : j%=0
$"�
$,men%?(39+i%*24)=i%*16+j%
$6�Wimp_MenuCentre(men%,i%+1)
$@�
$J =men%
$T:
$^"� �Wimp_MenuNoOfEntries(menu$)
$h� n% ,j% : n%=0 : j%=0
$r�
$|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%
$��
$�:
$�7� �Wimp_IconBackGroundColour(window%,icon%,colour%)
$�� fore%,i%
%(fore%=(window%?(39+(icon%-1)*24))�16
%*i%=((window%?(39+(icon%-1)*24))�16)�16
%1window%?(39+(icon%-1)*24)=fore%+16*colour%+i%
%&�
%0:
%:#� �Wimp_MenuCentre(menu%,item%)
%D:menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�(1<<3)
%N�
%X:
%b� �Wimp_MenuClose
%lÈ™ "Wimp_CreateMenu",-1
%v�
%�:
%�$� �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)
& �
&*:
&4)� �Wimp_MenuGlue(menu1%,item%,menu2%)
&>menu1%!(8+item%*24)=menu2%
&H�
&R:
&\'� �Wimp_MenuItem(menu%,item%,item$)
&f,$(menu%+(40+(item%-1)*24))=�item$,12)+�0
&p�
&z:
&�$� �Wimp_MenuMessage(menu%,item%)
&�<menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�(1<<3)
&��
&�:
&�"� �Wimp_MenuPopUp(Menu%,x%,y%)
&�
� SA%=� �
&�menu%=Menu%
&�+ș "Wimp_CreateMenu",,menu%,x%-64,y%+20
&��
&��
&�:
&�� �Wimp_MenuPopUpBar(x%,y%)
&�� 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%
'8�
'B:
'L!� �Wimp_MenuTick(menu%,item%)
'V7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�1
'`�
'j:
't#� �Wimp_MenuTitle(menu%,title$)
'~$menu%=�title$,12)+�0
'��
'�:
'�=� �Wimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%)
'�7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))�4
'�8menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)�&100
'�#menu%!(40+(item%-1)*24)=buffer%
'� menu%!(44+(item%-1)*24)=val%
'�)menu%!(48+(item%-1)*24)=BufferLength%
'��
'�:
'�J� ********************************************************************
'�:
( %� �Wimp_SelectIcon(window%,icon%)
(
wimp%!0=window%
(wimp%!4=icon%
(#wimp%!8=%1000000000000000000000
(($wimp%!12=%1000000000000000000000
(2È™&400CD,,wimp%
(<�
(F:
(P'� �Wimp_UnselectIcon(window%,icon%)
(Zwimp%!0=window%
(dwimp%!4=icon%
(n
wimp%!8=0
(x$wimp%!12=%1000000000000000000000
(�ș&400CD,,wimp%
(��
(�:
(�� �Wimp_SpritesLoad
(�/�Wimp_SpritesPathLoad("<Obey$Dir>.Sprites")
(�direct_sprites%=sprites%
(��
(�:
(�&� �Wimp_SpritesPathLoad(pathname$)
(�
�S%,T%
(�,S%=�"<Obey$Dir>.Sprites":T%=�#S%+16:�#S%
(��sprites%T%,spname%12
(�!sprites%=T%:sprites%!8=0
)!È™"OS_SpriteOp",&109,sprites%
)+È™"OS_SpriteOp",&10A,sprites%,pathname$
)�
)":
),J� ********************************************************************
)6:
)@� �Wimp_FileType(type%)
)JȎtype%�
)T�&FFF:="Text"
)^�&FFD:="Data"
)h�&FFB:="Basic"
)r�&FF9:="Sprite"
)|�&FED:="Palette"
)��&FEC:="Template"
)��&AFF:="Draw"
)��&1000:="Folder"
)��&2000:="Application"
)�=�~(type%)
)��
)�:
)�� �Wimp_GetFilePathName
)�'=�Wimp_GetStringAtAddress(wimp%+44)
)�:
)�� �Wimp_FileLoad(pathname$)
)��S%,T%,file%
)�S%=�pathname$
*T%=�#S%+16
*�#S%
*�file%T%
*&"�("LOAD"+pathname$+""+�~file%)
*0
=file%
*:;
*D&� �Wimp_GetStringAtAddress(array%)
*N
�s$:s$=""
*X<ȕ(?array%<>13)�(?array%<>0):s$+=�(?array%):array%+=1:�:
*b=s$
*l:
*v#� �Wimp_GetFileFromPathname(f$)
*�Ȏ �f$,".") �
*� � 0 :=f$
*�7 :=�Wimp_GetFileFromPathname(�f$,�(f$)-�f$,".")))
*��
*�:
*�� �Wimp_SendToEdit(file$)
*�� n%
*�wimp%!4=&6CC01C0C
*�wimp%!16=5
*�wimp%!36=0
*�wimp%!40=&FFF
*�$(wimp%+44)=file$+�0
*�n%=�file$+45
+,� n%�4 � !wimp%=4+(n%>>2)<<2 � !wimp%=n%
+$È™ "Wimp_SendMessage",17,wimp%,0
+�
+ :
+*J� ********************************************************************
+4:
+>/� �Wimp_Start(TaskName$,wimp_memory%,icon%)
+H%� wimp% wimp_memory%,icons% icon%
+R)� wimp_memory%<256 � wimp_memory%=256
+\icon_memory%=icons%+icon%
+ftask$=TaskName$
+p+indirect_sprites%=1 : direct_sprites%=1
+z�Wimp_SetEventVariables
+�� � �Wimp_Error:�
+�@ș"Wimp_Initialise",200,&4B534154,TaskName$ � version%,task%
+��
+�:
+�� �Wimp_BASICParameters
+� � com$,param$,I%
+� ș "OS_GetEnv" � com$
+� params$=""
+� I%=�com$," -quit ")
+�5 � I% � params$=�com$,�com$," ",I%+�" -quit ")+1)
+�=params$
+�:
+�� �Wimp_SetEventVariables
,� pointer_block% 20
,interface%=�
,.null%=1 :draw%=2 : pointer_leaving%=1<<4
,$1pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7
,.&key%=1<<8:menu%=1<<9:scroll%=1<<10
,8@lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18)
,B0recorder%=1<<18:acknowledge%=1<<19:window%=0
,L!sprites%=1:version%=0:task%=0
,V*Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0
,`*x_origin%=0:y_origin%=0:SaveWindow%=-3
,j3message_quit%=0:message_save%=2:message_load%=3
,t!mouse_button%=2:save_event%=0
,~ top_line%=0 : bottom_line%=0
,��
,�:
,�� �Wimp_Error
,�
�X$,x%
,� � � �
,�x%=�
,�X$=�$+"atline"+�(x%�10)
,��ErrorMsg%36
,�EErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x%
,�$(ErrorMsg%+24)="!RunImage"
,�%ș"Wimp_SendMessage",17,ErrorMsg%
,��Wimp_WindowAlert(task$,X$)
- �Wimp_CloseDown
-
�
-:
-� �Wimp_CloseDown
-(#È™"Wimp_CloseDown",task%,"TASK"
-2�
-<:
-F� �Wimp_Quit
-Pfinished%=�
-Z�
-d:
-n#� �Wimp_ReadVariable(Variable$)
-x�len%,result%,variable%
-�$wimp%=Variable$
-�3ș"OS_ReadVarVal",wimp%,wimp%+255,255,,3�,,len%
-�wimp%?(len%+255)=13
-�=$(wimp%+255)
-�:
-�J� ********************************************************************
-�:
-�� �Wimp_WaitForEvent
-�� mask%,event%
-�finished%=�
-�mask%=%111000011001
-��
-�' ș"Wimp_Poll",mask%,wimp% � event%
. Ȏ event% �
.
�0 :
. �1 : �Wimp_PollDrawWindow
."& �2 : ș "Wimp_OpenWindow",,wimp%
., �3 : �Wimp_PollCloseWindow
.6
�4 :
.@
�5 :
.J �6 : �Wimp_PollMouseClick
.T �7 : �Wimp_PollSaveMessage
.^ �8 : �Wimp_PollKeyPress
.h# �9 : �Event_MenuChoice(menu%)
.r
�10:
.|
�11:
.�
�12:
.� �17,18: �Wimp_PollMessages
.�
�19:
.� �
.�� finished%
.��
.�:
.�� �Wimp_PollDrawWindow
.�� more%
.�&ș"Wimp_RedrawWindow",,wimp%�more%
.�window%=wimp%!0
.�Ax_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24
.�ȕmore%
/0 � interface% � ș"Wimp_BorderWindow",,wimp%
/- �Event_Draw(window%,x_origin%,y_origin%)
/' ș"Wimp_GetRectangle",,wimp%�more%
/&�
/0�
/::
/D� �Wimp_PollCloseWindow
/N% È™ "Wimp_GetPointerInfo",,wimp%
/X) window%=wimp%!12 : buttons%=wimp%!8
/b) �Event_WindowClose(window%,buttons%)
/l2 !wimp%=window% : È™ "Wimp_CloseWindow",,wimp%
/v�
/�:
/�� �Wimp_PollMouseClick
/�J button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
/� Ȏ button% �
/�" �2 : �Wimp_PollMenuPopUp
/�# : Ȏ �Event_Save(window%) �
/�, � � : �Wimp_PollMouseSave
/�1 � �: �Wimp_PollEventMouseClick
/� �
/� �
/��
/�:
/�� �Wimp_PollMenuPopUp
0
� SA%=� �
0menu%=�Event_Menu(window%)
0 Ȏ menu% �
0 � �:
0*
:
04 Ȏ window% �
0> � -2 : n%=0
0H3 ȕ ((Bar_Menu%!(28+n%*24))�%10000000)=0
0R n%+=1
0\
�
0f: È™ "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*73
0p4 : È™"Wimp_CreateMenu",,menu%,x%-64,y%+20
0z
�
0� �
0��
0��
0�:
0�� �Wimp_PollMouseSave
0� Ȏ icon% �
0�8 � 0 : � button% � &50 � �Wimp_PollDragBox(window%)
0�8 � 2 : � button% � 5 � �Wimp_PollSaveFile(window%)
0� �
0��
0�:
0�� �Wimp_PollEventMouseClick
0�. � interface% � ș"Wimp_BorderIcon",,wimp%
13 �Event_MouseClick(window%,icon%,button%,x%,y%)
1 Ȏ interface% �
1 � � :
1$( wimp%!0=x%:wimp%!4=y% : wimp%!8=0
1.( wimp%!12=window% : wimp%!16=icon%
18! È™"Wimp_BorderIcon",,wimp%
1B �
1L�
1V:
1`!� �Wimp_PollSaveFile(window%)
1j
�file$
1t@ wimp%!0=window% : wimp%!4=1 : È™ "Wimp_GetIconState",,wimp%
1~ file$=$(wimp%!28)
1� Ȏ �file$,".") �
1�
� 0 :
1�� key%=13 �
1�@ $(wimp%+4)="To save, drag the icon to a directory window"
1�+ ș "Wimp_ReportError",wimp%,16,task$
1��
1� :
1�1 � key%=13 � �Event_SaveFile(file$,window%)
1� �
1�&� key%=13 � ș"Wimp_CreateMenu",-1
1�� SA%=� � �Wimp_CloseDown
1��
2 :
2
� �Wimp_PollDragBox(window%)
2
�x%,y%
2 save%=window%
2( !wimp%=window%
22# È™"Wimp_GetWindowState",,wimp%
2<- x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24
2F wimp%!4=0
2P! È™"Wimp_GetIconState",,wimp%
2Z !wimp%=window%
2d wimp%!4=5
2n, wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12
2x. wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20
2� wimp%!24=0:wimp%!28=0
2�* wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
2� ș"Wimp_DragBox",,wimp%
2��
2�:
2�� �Wimp_PollKeyPress
2�1 window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
2� Ȏ �Event_Save(window%) �
2�( � � : �Wimp_PollSaveFile(window%)
2�/ � �: �Event_KeyPress(window%,icon%,key%)
2� �
2��
2�:
3� �Wimp_PollSaveMessage
3�file$,window%,icon%,x%,y%
3# È™"Wimp_GetPointerInfo",,wimp%
3": window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
3,> wimp%!0=save% : wimp%!4=1 : È™ "Wimp_GetIconState",,wimp%
36 file$=$(wimp%!28)
3@+ file$=�Wimp_GetFileFromPathname(file$)
3JACE$=file$
3T wimp%!20=window%
3^ wimp%!24=icon%
3h wimp%!28=x%:wimp%!32=y%
3r wimp%!36=length%
3| wimp%!0=64
3� wimp%!12=0
3� wimp%!16=1
3� wimp%!40=&FFF
3� $(wimp%+44)=file$
3�4 ș"Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
3��
3�:
3�� �Wimp_PollMessages
3�� file$
3�,file$=�Wimp_GetStringAtAddress(wimp%+44)
3� Ȏ wimp%!16 �
3� � 0 : finished%=�
3� � 1 :
4 � 2 :
4/ � PROCWimp_IconPutText(save%,1,file$)
4C wimp%!0=save% : wimp%!4=1 : È™ "Wimp_GetIconState",,wimp%
4& $(wimp%!28)=file$
40< wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0
4:' È™ "Wimp_SetIconState",,wimp%
4D0 � PROCWimp_IconCaret(save%,1,LENfile$)
4N8 ș "Wimp_SetCaretPosition",save%,1,,,-1,�file$
4X& �Event_SaveFile(file$,save%)
4b# � SA%=� � �Wimp_CloseDown
4l � 3
4vG type$=�Wimp_FileType(wimp%!40) : �Event_LoadFile(file$,type$)
4� � 5 :
4�!� wimp%!40=&FAF � event%=18 �
4�wimp%!12=wimp%!8
4�+ș"XWimp_SendMessage",17,wimp%,wimp%!20
4�file$=�Wimp_GetFilePathName
4�type$=�Wimp_FileType(&FAF)
4� �Event_LoadFile(file$,type$)
4��
4� �
4��
4�:
4�&� �Wimp_GetStringAtAddress(array%)
4�
�s$:s$=""
5<ȕ(?array%<>13)�(?array%<>0):s$+=�(?array%):array%+=1:�:
5=s$
5:
5 #� �Wimp_GetFileFromPathname(f$)
5*Ȏ �f$,".") �
54 � 0 :=f$
5>7 :=�Wimp_GetFileFromPathname(�f$,�(f$)-�f$,".")))
5H�
5R:
5\� �Wimp_FileType(type%)
5fȎtype%�
5p�&FFF:="Text"
5z�&FFD:="Data"
5��&FFB:="Basic"
5��&FF9:="Sprite"
5��&FED:="Palette"
5��&FEC:="Template"
5��&AFF:="Draw"
5��&1000:="Folder"
5��&2000:="Application"
5�=�~(type%)
5��
5�:
5�
ݤcut(A$)
5�Ab=�A$,".")
5�"� Ab<>0 � B$=�A$,Ab+2) � B$=A$
6=B$
6:
6��pdsel
6$� PSEL%=2 �
6.&�Wimp_IconDisable(Print_Window%,8)
68�
6B� PSEL%=3 �
6L&�Wimp_IconDisable(Print_Window%,9)
6V'�Wimp_IconDisable(Print_Window%,11)
6`�
6j�
6t:
6~
��psel
6�� PSEL%=1 �
6�%�Wimp_SelectIcon(Print_Window%,5)
6��
6�� PSEL%=2 �
6�%�Wimp_SelectIcon(Print_Window%,6)
6�%�Wimp_IconEnable(Print_Window%,8)
6�G�Wimp_IconCaret(Print_Window%,8,�(�Wimp_IconText(Print_Window%,8)))
6��
6�� PSEL%=3 �
6�%�Wimp_SelectIcon(Print_Window%,7)
6�%�Wimp_IconEnable(Print_Window%,9)
6�&�Wimp_IconEnable(Print_Window%,11)
7 G�Wimp_IconCaret(Print_Window%,9,�(�Wimp_IconText(Print_Window%,9)))
7
�
7�
7:
7(� �getstring(array%)
72� path$,pointer%
7<path$=""
7Fpointer%=array%
7P�
7Zpath$+=�?pointer%
7dpointer%+=1
7n � ?pointer%=0 � ?pointer%=13
7x
=path$
7�:
7���openprinter
7�0ș "XPDriver_Info" � R0,R1,R2,R3,R4,R5,R6,R7
7�/� R1=0 � R2=0 � R3=0 � R5=0 � R6=0 � R7=0 �
7�9�Wimp_IconPutText(Print_Window%,3,"No driver loaded")
7�
PRT%=�
7��
7�printer$=�getstring(R4)
7�/�Wimp_IconPutText(Print_Window%,3,printer$)
7�
PRT%=�
7��
7��
7�:
8��print
8:
86printhand%=�("PRINTER:$.Job1") : � start a job !!!
8"$title%="Cheat file"
8,È™ &80145,printhand%,title%
86>�#printhand%,13 : � put head to left of paper to start!!!!
8@:
8J� PSEL%=1 �
8T[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
8^[�printline("|Num| Ammount |State| Date | Who gave it to you | TOTAL |"+�(10))
8h[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
8r� A=1 � total%-1
8|� AMMOUNT(A)<>0 �
8�A$=�(A)
8�AA=�(A$)
8�S$=�spc(3-AA)
8�B$=�(AMMOUNT(A))
8�B$=�zero(B$)
8�BB=�(B$)
8�SS$=�spc(11-BB)
8�%� STATUS$(A)="Spend" � C$="Spend"
8�$� STATUS$(A)="Save" � C$="Save "
8�CC=�(DATE$(A))
8�SSS$=�spc(10-CC)
8�DD=�(WHO$(A))
8�SSSS$=�spc(20-DD)
9E$=�(CURTOT(A))
9E$=�zero(E$)
9EE=�(E$)
9&SSSSS$=�spc(11-EE)
90g�printline("|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|"+�(10))
9:�
9D�A
9N[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
9X�
9b
9l� PSEL%=2 �
9v)PA=�(�Wimp_IconText(Print_Window%,8))
9�PB=(PA-1)*14
9�[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
9�[�printline("|Num| Ammount |State| Date | Who gave it to you | TOTAL |"+�(10))
9�[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
9�� A=(1+PB) � (14+PB)
9�� AMMOUNT(A)<>0 �
9�A$=�(A)
9�AA=�(A$)
9�S$=�spc(3-AA)
9�B$=�(AMMOUNT(A))
9�B$=�zero(B$)
9�BB=�(B$)
9�SS$=�spc(11-BB)
:%� STATUS$(A)="Spend" � C$="Spend"
:$� STATUS$(A)="Save" � C$="Save "
:CC=�(DATE$(A))
: SSS$=�spc(10-CC)
:*DD=�(WHO$(A))
:4SSSS$=�spc(20-DD)
:>E$=�(CURTOT(A))
:HE$=�zero(E$)
:REE=�(E$)
:\SSSSS$=�spc(11-EE)
:fg�printline("|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|"+�(10))
:p�
:z�A
:�[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
:��
:�
:�� PSEL%=3 �
:�(A=�(�Wimp_IconText(Print_Window%,9))
:�)B=�(�Wimp_IconText(Print_Window%,11))
:�[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
:�[�printline("|Num| Ammount |State| Date | Who gave it to you | TOTAL |"+�(10))
:�[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
:�
� A=A � B
:�� AMMOUNT(A)<>0 �
:�A$=�(A)
:�AA=�(A$)
;S$=�spc(3-AA)
;B$=�(AMMOUNT(A))
;B$=�zero(B$)
;$BB=�(B$)
;.SS$=�spc(11-BB)
;8%� STATUS$(A)="Spend" � C$="Spend"
;B$� STATUS$(A)="Save" � C$="Save "
;LCC=�(DATE$(A))
;VSSS$=�spc(10-CC)
;`DD=�(WHO$(A))
;jSSSS$=�spc(20-DD)
;tE$=�(CURTOT(A))
;~E$=�zero(E$)
;�EE=�(E$)
;�SSSSS$=�spc(11-EE)
;�g�printline("|"+A$+S$+"|"+B$+SS$+"|"+C$+"|"+DATE$(A)+SSS$+"|"+WHO$(A)+SSSS$+"|"+E$+SSSSS$+"|"+�(10))
;��
;��A
;�[�printline("+---+-----------+-----+----------+--------------------+-----------+"+�(10))
;��
;�:
;�(�#printhand%,12 : � do linefeed !!!!
;�ș &80148,printhand%
;�� #printhand%
;��
<