Home » Archimedes archive » Acorn User » AU 1998-06 A.adf » Regulars » MikeC/!Organiser/Org
MikeC/!Organiser/Org
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 » Acorn User » AU 1998-06 A.adf » Regulars |
| Filename: | MikeC/!Organiser/Org |
| Read OK: | ✔ |
| File size: | 87DB bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10REM Personal Organiser AM-399C
20REM Version 1.0 By Mike Cook
30REM All rights reserved
40ON ERROR PROCerrorbox
50
60DIM taskid%4,intmess% 20:$taskid%="TASK"
70intmess%!0=1:intmess%!4=2:intmess%!8=3:intmess%!12=&502:intmess%!16=0
80SYS "Wimp_Initialise",300,!taskid%,"Organiser",intmess% TO version%,taskhand%
90DIM q% &600,qc% 80,temp% 512,buffers% 512,menu% 256,Mmenu% 512,cb% 18,qw% &300,qn% &300, Sw% &300, Ew% &300
100DIM Wn0% &700, Wn1% &500, Wn2% &500, Wn3% &500,RXw% 500, Wn%(3),wopen%(3)
110DIM SW0% 700,SW1% 512,SW2% 612, SW3% 512,tblock% 24, TypeM% 200, PayM% 200
120DIM Commenu% 512, Comenu% 256,RCW% 500, EsName% 556
130DIM IsName% 556, Wmenu% 512,Smenu% 256,Imenu% 256, TextWarn% 100, ww% 256
140DIM SPoint%(20,3),IX%(20,3),IY%(20,3),IX1%(20,3),IY1%(20,3)
150MaxRec%=100 : REM alter this to change the maximum number of records
160DIM Tel$(MaxRec%,5),Mem$(MaxRec%),ToDo$(MaxRec%),Shed$(MaxRec%,5),Spm%(MaxRec%)
170DIM Exp$(MaxRec%,5),Exp%(MaxRec%,2),Etype$(8),Epay$(4)
180SYS "Wimp_OpenTemplate",,"<ORG$Dir>.Templates"
190ON ERROR SYS "Wimp_CloseTemplate":PROCerrorbox
200SYS "Wimp_LoadTemplate",,q%,temp%,temp%+256,-1,"Info",0
210SYS "Wimp_CreateWindow",,q% TO info%
220SYS "Wimp_LoadTemplate",,q%,IsName%+4,IsName%+556,-1,"save_script",0
230SYS "Wimp_CreateWindow",,q% TO saveW%
240IsName%!0=saveW%:SaveIcon%=!(q%+88+20):Sname%=!(q%+88+20+32)
250SYS "Wimp_LoadTemplate",,q%,EsName%+4,EsName%+556,-1,"Export",0
260SYS "Wimp_CreateWindow",,q% TO exportW%
270EsName%!0=exportW%:Ename%=!(q%+88+20+32)
280SYS "Wimp_LoadTemplate",,RXw%+4,RCW%,RCW%+500,-1,"rx",0
290SYS "Wimp_CreateWindow",,RXw%+4 TO rx1W%
300RXw%!0=rx1W%
310
320SYS "Wimp_LoadTemplate",,Wn0%+4,SW0%,SW0%+700,-1,"Telephone",0
330Wn0%!28=-1
340FOR A%=0 TO 13
350SPoint%(A%,0)=!(Wn0%+4+88+20+32*A%)
360IX%(A%,0)=!(Wn0%+4+88+32*A%):IY%(A%,0)=!(Wn0%+4+88+4+32*A%)
370IX1%(A%,0)=!(Wn0%+4+88+8+32*A%):IY1%(A%,0)=!(Wn0%+4+88+12+32*A%)
380NEXT
390SYS "Wimp_CreateWindow",,Wn0%+4 TO telW%
400Wn0%!0=telW%:Wn0%!28=-1
410
420SYS "Wimp_LoadTemplate",,Wn1%+4,SW1%,SW1%+512,-1,"Memo",0
430Wn1%!28=-1
440FOR A%=0 TO 13
450SPoint%(A%,1)=!(Wn1%+4+88+20+32*A%)
460IX%(A%,1)=!(Wn1%+4+88+32*A%):IY%(A%,1)=!(Wn1%+4+88+4+32*A%)
470IX1%(A%,1)=!(Wn1%+4+88+8+32*A%):IY1%(A%,1)=!(Wn1%+4+88+12+32*A%)
480NEXT
490SYS "Wimp_CreateWindow",,Wn1%+4 TO memoW%
500Wn1%!0=memoW%:Wn1%!28=-1
510
520SYS "Wimp_LoadTemplate",,Wn2%+4,SW2%,SW2%+612,-1,"Expenses",0
530Wn2%!28=-1
540FOR A%=0 TO 17
550SPoint%(A%,2)=!(Wn2%+4+88+20+32*A%)
560IX%(A%,2)=!(Wn2%+4+88+32*A%):IY%(A%,2)=!(Wn2%+4+88+4+32*A%)
570IX1%(A%,2)=!(Wn2%+4+88+8+32*A%):IY1%(A%,2)=!(Wn2%+4+88+12+32*A%)
580NEXT
590SYS "Wimp_CreateWindow",,Wn2%+4 TO expW%
600Wn2%!0=expW%:Wn2%!28=-1
610
620SYS "Wimp_LoadTemplate",,Wn3%+4,SW3%,SW3%+512,-1,"Schedule",0
630Wn3%!28=-1
640FOR A%=0 TO 14
650SPoint%(A%,3)=!(Wn3%+4+88+20+32*A%)
660IX%(A%,3)=!(Wn3%+4+88+32*A%):IY%(A%,3)=!(Wn3%+4+88+4+32*A%)
670IX1%(A%,3)=!(Wn3%+4+88+8+32*A%):IY1%(A%,3)=!(Wn3%+4+88+12+32*A%)
680NEXT
690SYS "Wimp_CreateWindow",,Wn3%+4 TO shedW%
700Wn3%!0=shedW%:Wn3%!28=-1
710Wn%(0)=Wn0%:Wn%(1)=Wn1%:Wn%(2)=Wn2%:Wn%(3)=Wn3%
720
730SYS "Wimp_LoadTemplate",,q%,ww%,ww%+256,-1,"Warning",0
740q%!108=TextWarn%:q%!112=-1:q%!116=300
750XQ%=q%!8-q%!0:YQ%=q%!12-q%!4
760SYS "Wimp_CreateWindow",,q% TO warningW%
770SYS "Wimp_CloseTemplate"
780smpicon%=FNicon
790wopen%(0)=FALSE:wopen%(1)=FALSE:wopen%(2)=FALSE:wopen%(3)=FALSE:warnOn%=FALSE
800Stype$="0":Ntel%=1:Ctel%=1
810Nmem%=1:Cmem%=1
820Ntodo%=1:Ctodo%=1
830Nshed%=1:Cshed%=1
840Nexp%=1:Cexp%=1
850Memo%=TRUE:Rd%=FALSE:Rd1%=0:Rd2%=0
860RdUD%=FALSE:RX%=FALSE
870Export%=TRUE:PROC_PutName("Text")
880Export%=FALSE:PROC_PutName("Data")
890Abort%=FALSE
900PROCinit
910ON ERROR PROCerrorbox
920
930PROCsetupmenu
940
950REPEAT
960 SYS "Wimp_Poll",0,q% TO A%
970 CASE A% OF
980 WHEN 0:PROC_Null
990 WHEN 1:PROC_doWindow
1000 WHEN 2:SYS"OS_ReadModeVariable",-1,3 TO ,,Ncolours%: SYS "Wimp_OpenWindow",,q%
1010 WHEN 3:PROC_close
1020 WHEN 6:PROC_do_click(q%)
1030 WHEN 7:PROC_PutDown(q%)
1040 WHEN 8:PROC_KeyPress
1050 WHEN 9:PROC_SORT_Menu
1060 WHEN 17,18:PROCreceive(q%)
1070 ENDCASE
1080 UNTIL FALSE
1090
1100END
1110
1120DEF PROC_Null
1130LOCAL A%,B%,C%,D%,X%,Y%,but%
1140MOUSE A%,B%,C%
1150
1160IF RdUD% AND C%=0 THEN
1170IF Rd2%=0 THEN $SPoint%(0,Rd1%)="down" ELSE $SPoint%(1,Rd1%)="up"
1180SYS"Wimp_ForceRedraw",!Wn%(Rd1%),IX%(Rd2%,Rd1%),IY%(Rd2%,Rd1%),IX1%(Rd2%,Rd1%),IY1%(Rd2%,Rd1%)
1190RdUD%=FALSE
1200ENDIF
1210
1220IF RX% THEN
1230PROCrxINIT
1240PROCempty
1250REPEAT
1260MOUSE A%,B%,C%
1270UNTIL C%=0
1280SYS"Hourglass_Start",10
1290REPEAT
1300SYS"OS_SerialOp",4,256 TO ,B% ;C%
1310C%=C% AND &2
1320IF C%=0 THEN PROC_gath(B%)
1330MOUSE X%,Y%,but%
1340UNTIL but%<>0 OR B%=&F8 OR Abort%
1350IF B%=&F8 THEN PROCtidy
1360SYS"Hourglass_Off"
1370RX%=FALSE
1380SYS "Wimp_CloseWindow",,RXw%
1390ENDIF
1400ENDPROC
1410
1420DEF FN_spath(n$)
1430WHILE INSTR(n$,".")
1440n$=RIGHT$(n$,LEN(n$)-1)
1450ENDWHILE
1460IF LEN(n$)>10 THEN n$=RIGHT$(n$,10)
1470=n$
1480
1490DEF PROC_GetName
1500IF Export% THEN fn$=$Ename% ELSE fn$=$Sname%
1510ENDPROC
1520
1530DEF PROC_SORT_Menu
1540CASE IconMenu% OF
1550 WHEN 0: IF !q%=5 THEN PROCdie ELSE PROC_Open((!q%)-1)
1560 WHEN 1: CASE !q% OF
1570 WHEN 3: Mmenu%!100=1:Mmenu%!124=2
1580 WHEN 4: Mmenu%!100=0:Mmenu%!124=3
1590 WHEN 5: Mmenu%!148=1:Mmenu%!172=2
1600 WHEN 6: Mmenu%!148=0:Mmenu%!172=3
1610 WHEN 7: PROCdie
1620 ENDCASE
1630 WHEN 2: $SPoint%(13,2)=Etype$((!q%)+1)
1640 SYS"Wimp_ForceRedraw",!Wn%(2),IX%(13,2),IY%(13,2),IX1%(13,2),IY1%(13,2)
1650 Exp%(Cexp%,0)=(!q%)+1
1660 WHEN 3: $SPoint%(14,2)=Epay$((!q%)+1)
1670 SYS"Wimp_ForceRedraw",!Wn%(2),IX%(14,2),IY%(14,2),IX1%(14,2),IY1%(14,2)
1680 Exp%(Cexp%,1)=(!q%)+1
1690ENDCASE
1700ENDPROC
1710
1720DEF PROC_close
1730IF q%!0=warningW% THEN warnOn%=FALSE
1740IF q%!0=!Wn0% THEN wopen%(0)=FALSE:SYS"Wimp_GetWindowInfo",,Wn0%
1750IF q%!0=!Wn1% THEN wopen%(1)=FALSE:SYS"Wimp_GetWindowInfo",,Wn1%
1760IF q%!0=!Wn2% THEN wopen%(2)=FALSE:SYS"Wimp_GetWindowInfo",,Wn2%
1770IF q%!0=!Wn3% THEN wopen%(3)=FALSE:SYS"Wimp_GetWindowInfo",,Wn3%
1780SYS "Wimp_CloseWindow",,q%
1790ENDPROC
1800
1810DEF PROC_do_click(q%)
1820LOCAL A%,B%
1830i%=q%!16
1840CASE q%!12 OF
1850WHEN warningW%: q%!0=warningW% :PROC_close
1860WHEN saveW%: Export%=FALSE: PROC_DoSave(i%)
1870WHEN exportW%: Export%=TRUE: PROC_DoSave(i%)
1880WHEN -2: REM Look first at Icon Bar Click
1890 IF q%!16=smpicon% THEN
1900 IF q%!8=2 OR q%!8=4 THEN SYS"Wimp_CreateMenu",,menu%,q%!0-74,340:IconMenu%=0
1910 REM IF q%!8=4 THEN PROC_Open
1920 ENDIF
1930
1940 OTHERWISE
1950 IF q%!8=4 THEN PROC_WinClick(q%!12)
1960 A%=q%!0-96:B%=q%!4
1970 IF q%!8=2 THEN PROCsicon(q%!12):SYS"Wimp_CreateMenu",,Mmenu%,A%,B%:IconMenu%=1
1980ENDCASE
1990ENDPROC
2000
2010DEF PROCsicon(A%)
2020LOCAL T$,D$,te%
2030CASE A% OF
2040WHEN telW%: $SaveIcon%="file_05A":Stype$="05A":D$=TelFile$:PROCupT
2050WHEN memoW%: $SaveIcon%="file_05B":Stype$="05B":PROCupM
2060 IF Memo%=FALSE THEN D$=ToFile$ ELSE:D$=MemFile$
2070WHEN expW%: $SaveIcon%="file_05C":Stype$="05C":D$=ExpFile$:PROCupE
2080WHEN shedW%: $SaveIcon%="file_05D":Stype$="05D":D$=ShedFile$:PROCupS
2090ENDCASE
2100Export%=FALSE:PROC_PutName(D$):Export%=TRUE:PROC_PutName(D$+"T")
2110current%=FNwhat(A%)
2120ENDPROC
2130
2140DEF FNwhat(A%)
2150LOCAL B%
2160CASE A% OF
2170WHEN telW%: B%=0
2180WHEN memoW%: B%=1
2190WHEN expW%: B%=2
2200WHEN shedW%: B%=3
2210ENDCASE
2220=B%
2230
2240DEF PROC_WinClick(w%)
2250LOCAL A%,B%,Y%
2260Y%=q%!4
2270REM Do the action for a window click
2280CASE w% OF
2290WHEN telW%: CASE i% OF
2300 WHEN 1: PROCupT: PROCupTel(1): PROCpb(0,1)
2310 WHEN 0: PROCupT: PROCupTel(-1): PROCpb(0,0)
2320 WHEN 2: IF Ntel%<MaxRec% THEN PROCnewT
2330 PROCupT: PROCupTel(1) :PROCupTn
2340 WHEN 3: PROCcT
2350 WHEN 4: PROCupT:PROCTXtel
2360 WHEN 5: RX%=TRUE:PROCopenRX(0)
2370 ENDCASE
2380
2390WHEN memoW%:
2400 CASE i% OF
2410 WHEN 0: PROCupM: PROCmup(-1) : PROCupMbut(1): PROCpb(1,0)
2420 WHEN 1: PROCupM: PROCmup(1) : PROCupMbut(1): PROCpb(1,1)
2430 WHEN 2: PROCupM: PROCnewm(1) : PROCupMbut(0)
2440 WHEN 3: PROCcM
2450 WHEN 4: PROCupM
2460 IF Memo% THEN PROCTXmem ELSE PROCTXtodo
2470 WHEN 5: RX%=TRUE
2480 IF Memo% THEN PROCopenRX(2) ELSE PROCopenRX(3)
2490 WHEN 9,10: PROCupM : Memo%=NOT(Memo%): PROCnewm(0) : PROCupMbut(1)
2500 ENDCASE
2510WHEN expW%: PROC_Trans(expW%)
2520 PROCupE
2530 CASE i% OF
2540 WHEN 0: PROCupE:PROCupExp(-1):PROCpb(2,0)
2550 WHEN 1: PROCupE:PROCupExp(1): PROCpb(2,1)
2560 WHEN 2: IF Nexp%<MaxRec% THEN PROCnewE
2570 PROCupExp(0)
2580 WHEN 3: PROCcE
2590 WHEN 4: PROCupE:PROCTXexp
2600 WHEN 5: RX%=TRUE:PROCopenRX(5)
2610 WHEN 15: IconMenu%=FALSE:SYS"Wimp_CreateMenu",,Commenu%,IX1%(15,2)+xo%-10,Y%:IconMenu%=2
2620 WHEN 16: IconMenu%=FALSE:SYS"Wimp_CreateMenu",,Comenu%,IX1%(16,2)+xo%-10,Y%:IconMenu%=3
2630 WHEN 17: Exp%(Cexp%,2)=Exp%(Cexp%,2) EOR 1
2640 IF Exp%(Cexp%,2)=0 THEN $SPoint%(17,2)="no" ELSE $SPoint%(17,2)="yes"
2650 SYS"Wimp_ForceRedraw",!Wn%(2),IX%(17,2),IY%(17,2),IX1%(17,2),IY1%(17,2)
2660 ENDCASE
2670WHEN shedW%: PROCupS
2680 CASE i% OF
2690 WHEN 0: PROCupS: PROCupShed(-1): PROCpb(3,0)
2700 WHEN 1: PROCupS: PROCupShed(1): PROCpb(3,1)
2710 WHEN 2: PROCupS
2720 IF Nshed%<MaxRec% THEN PROCnewS
2730 PROCupShed(0)
2740 WHEN 3: PROCcShed
2750 WHEN 4: PROCupS:PROCTXshed
2760 WHEN 5: RX%=TRUE:PROCopenRX(1)
2770 WHEN 13: Spm%(Cshed%)=NOT(Spm%(Cshed%)):PROC_am
2780 WHEN 14: Spm%(Cshed%)=NOT(Spm%(Cshed%)):PROC_am
2790 ENDCASE
2800ENDCASE
2810ENDPROC
2820
2830DEF PROC_Open(A%)
2840currentW%=A%
2850REM OPEN UP WINDOW HERE
2860IF wopen%(currentW%) THEN
2870q%!0=!Wn%(currentW%)
2880SYS"Wimp_GetWindowState",,q%
2890 IF q%!28<>-1 THEN q%!28=-1: SYS "Wimp_OpenWindow",,q%
2900ELSE
2910SYS "Wimp_OpenWindow",,Wn%(currentW%)
2920wopen%(currentW%)=TRUE
2930ENDIF
2940ENDPROC
2950
2960DEFPROCsetupmenu
2970LOCAL m%
2980
2990$menu%="Organiser"
3000menu%?12=7
3010menu%?13=2
3020menu%?14=7
3030menu%?15=0
3040menu%!16=128
3050menu%!20=40
3060menu%!24=0
3070m%=menu%+28
3080m%!0=0
3090m%!4=info%
3100m%!8=(7<<24)OR %10001
3110$(m%+12)="Info"
3120
3130m%+=24
3140m%!0=0
3150m%!4=0
3160m%!8=(7<<24)OR %10001
3170$(m%+12)="Telephone"
3180
3190m%+=24
3200m%!0=0
3210m%!4=0
3220m%!8=(7<<24)OR %10001
3230$(m%+12)="Memo"
3240
3250m%+=24
3260m%!0=0
3270m%!4=0
3280m%!8=(7<<24)OR %10001
3290$(m%+12)="Expenses"
3300
3310m%+=24
3320m%!0=0
3330m%!4=0
3340m%!8=(7<<24)OR %10001
3350$(m%+12)="Schedule"
3360
3370m%+=24
3380m%!0=&80
3390m%!4=0
3400m%!8=(7<<24)OR %10001
3410$(m%+12)="Quit"
3420
3430$Mmenu%="Organiser"
3440Mmenu%?12=7
3450Mmenu%?13=2
3460Mmenu%?14=7
3470Mmenu%?15=0
3480Mmenu%!16=128
3490Mmenu%!20=40
3500Mmenu%!24=0
3510m%=Mmenu%+28
3520m%!0=0
3530m%!4=info%
3540m%!8=(7<<24)OR %10001
3550$(m%+12)="Info"
3560
3570m%+=24
3580m%!0=0
3590m%!4=saveW%
3600m%!8=(7<<24)OR %10001
3610$(m%+12)="Save"
3620
3630m%+=24
3640m%!0=2
3650m%!4=exportW%
3660m%!8=(7<<24)OR %10001
3670$(m%+12)="Export"
3680
3690m%+=24
3700m%!0=0
3710m%!4=0
3720m%!8=(7<<24)OR %10001
3730$(m%+12)="TX one"
3740
3750m%+=24
3760m%!0=3
3770m%!4=0
3780m%!8=(7<<24)OR %10001
3790$(m%+12)="TX all"
3800
3810m%+=24
3820m%!0=1
3830m%!4=0
3840m%!8=(7<<24)OR %10001
3850$(m%+12)="RX new"
3860
3870m%+=24
3880m%!0=2
3890m%!4=0
3900m%!8=(7<<24)OR %10001
3910$(m%+12)="RX merge"
3920
3930m%+=24
3940m%!0=&80
3950m%!4=0
3960m%!8=(7<<24)OR %10001
3970$(m%+12)="Quit"
3980
3990ENDPROC
4000
4010DEF PROC_DoSave(i%)
4020IF i%=0 THEN
4030 DragOn%=TRUE
4040 SYS "Wimp_GetPointerInfo",,q%
4050 IF Export% THEN PROCdragicon(q%!0,q%!4,exportW%,i%) ELSE PROCdragicon(q%!0,q%!4,saveW%,i%)
4060 ENDIF
4070 IF i%=2 THEN
4080 PROC_GetName
4090 IF INSTR(fn$,":") THEN PROC_Save ELSE PROC_setupW("Drag the Icon into a Directory")
4100 SYS "Wimp_CreateMenu",,-1
4110 ENDIF
4120ENDPROC
4130
4140DEF PROCreceive(q%)
4150LOCAL A%
4160A%=q%!16
4170CASE A% OF
4180WHEN 0:PROCdie
4190WHEN 2:IF q%!12=saveref% THEN
4200 secureF%=q%!36
4210 fn$=FNsget(q%+44):PROC_Save
4220 q%!12=saveref%:q%!16=3:q%!0=256:q%!40=&044
4230 q%!20=messh%:q%!24=messi%:q%!28=messx%:q%!32=messy%
4240 SYS "Wimp_SendMessage",17,q%,messh%,messi%
4250 ENDIF
4260
4270WHEN 3:n$=FNsget(q%+44)
4280 sendth%=q%!4:icontype%=q%!40
4290 myref%=q%!8
4300 IF ((q%!20=-2 AND q%!24=smpicon%) OR (q%!20=telW%)) AND icontype%=&5A THEN
4310 PROCloadT(n$)
4320 IF q%!20=-2 AND wopen%(0)=FALSE THEN PROC_Open(0): PROC_Dack
4330 Export%=FALSE:PROC_PutName(n$):Stype$="05A"
4340 Export%=TRUE:PROC_PutName(n$+"T"):TelFile$=n$
4350 ENDIF
4360
4370 IF ((q%!20=-2 AND q%!24=smpicon%) OR (q%!20=memoW%)) AND icontype%=&5B THEN
4380 PROCloadM(n$)
4390 IF q%!20=-2 AND wopen%(1)=FALSE THEN PROC_Open(1):PROC_Dack
4400 Export%=FALSE:PROC_PutName(n$):Stype$="05B"
4410 Export%=TRUE:PROC_PutName(n$+"T")
4420 IF Memo% THEN MemFile$=n$ ELSE ToFile$=n$
4430 ENDIF
4440
4450 IF ((q%!20=-2 AND q%!24=smpicon%) OR (q%!20=expW%)) AND icontype%=&5C THEN
4460 PROCloadE(n$)
4470 IF q%!20=-2 AND wopen%(2)=FALSE THEN PROC_Open(2):PROC_Dack
4480 Export%=FALSE:PROC_PutName(n$):Stype$="05C"
4490 Export%=TRUE:PROC_PutName(n$+"T"):ExpFile$=n$
4500 ENDIF
4510
4520 IF ((q%!20=-2 AND q%!24=smpicon%) OR (q%!20=shedW%)) AND icontype%=&5D THEN
4530 PROCloadS(n$)
4540 IF q%!20=-2 AND wopen%(3)=FALSE THEN PROC_Open(3):PROC_Dack
4550 Export%=FALSE:PROC_PutName(n$):Stype$="05D"
4560 Export%=TRUE:PROC_PutName(n$+"T"):ShedFile$=n$
4570 ENDIF
4580
4590WHEN &502: CASE TRUE OF
4600 WHEN q%!32=-2 AND q%!36=smpicon%:mes$="This is the Orginiser icon.|MTransfer data with your AM-399C"
4610 OTHERWISE:mes$=""
4620 ENDCASE
4630 IF mes$<>"" THEN
4640 q%!12=q%!8
4650 $(q%+20)=mes$+CHR$0
4660 q%!0=(20+LENmes$+4)AND NOT 3
4670 q%!16=&503
4680 SYS "Wimp_SendMessage",18,q%,q%!4
4690ENDCASE
4700ENDPROC
4710
4720DEF PROC_Dack
4730sendth%=q%!4
4740myref%=q%!8
4750SYS "Wimp_GetPointerInfo",,q%+8
4760q%!28=q%!8
4770q%!32=q%!12
4780q%!0=(44+LENn$+4)AND NOT 3
4790q%!12=myref%
4800q%!16=4
4810q%!36=-1
4820q%!40=&FF9
4830$(q%+44)=n$+CHR$0
4840SYS "Wimp_SendMessage",17,q%,sendth%
4850ENDIF
4860ENDPROC
4870
4880DEFFNicon
4890q%!0=-1
4900q%!4=0
4910q%!8=10 : REM Y DIRECTION
4920q%!12=70 : REM X DIRECTION
4930q%!16=96
4940q%!20=&2002
4950$(q%+24)="!Organiser"
4960SYS "Wimp_CreateIcon",,q% TO icon%
4970=icon%
4980
4990DEF PROC_setupW(t$)
5000!qw%=warningW%:qw%!4=200:qw%!8=200:qw%!12=200+XQ%:qw%!16=200+YQ%:qw%!20=0:qw%!24=0:qw%!28=-1
5010$TextWarn%=t$
5020TextWarn%?LEN(t$)=0
5030warnOn%=TRUE
5040SYS "Wimp_OpenWindow",,qw%
5050ENDPROC
5060
5070DEF PROCerrorbox
5080REM PROCdie
5090SYS "Wimp_DragBox",,-1
5100!buffers%=ERR:$(buffers%+4)=REPORT$+" at line "+STR$ERL+CHR$0
5110SYS "Wimp_ReportError",buffers%,1,"Organiser"
5120PROCdie
5130ENDPROC
5140
5150DEFPROCdie
5160SYS "Wimp_CloseDown",taskhand%,!taskid%
5170END
5180ENDPROC
5190
5200DEF PROCdragicon(mousex%,mousey%,handle%,icon%)
5210LOCAL bx%,by%,ix0%,iy0%,ix1%,iy1%
5220PROCgetw(handle%)
5230PROCgeti(handle%,icon%)
5240!q%=handle%:q%!4=5
5250q%!8=bx%+ix0%:q%!12=by%+iy0%:q%!16=bx%+ix1%:q%!20=by%+iy1%
5260q%!24=q%!8-mousex%:q%!28=q%!12-mousey%
5270SYS "Wimp_DragBox",,q%
5280SFLAG%=TRUE
5290ENDPROC
5300
5310DEF PROCgetw(handle%)
5320!q%=handle%:SYS "Wimp_GetWindowState",,q%:PROCinfo(q%+4)
5330ENDPROC
5340
5350DEF PROCgeti(h%,i%)
5360!q%=h%:q%!4=i%:SYS "Wimp_GetIconState",,q%
5370ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20
5380iflags%=q%!24:idata%=q%+28
5390ENDPROC
5400
5410DEF PROCinfo(p%)
5420LOCAL x0%,y0%
5430x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12
5440scx%=p%!16:scy%=p%!20:bhandle%=p%!24:flags%=p%!28
5450bx%=x0%-scx%:by%=y1%-scy%
5460ENDPROC
5470
5480DEF PROC_Save
5490LOCAL ch%,pp%
5500F%=OPENOUT(fn$)
5510CASE current% OF
5520WHEN 0: PROCsaveT:TelFile$=fn$
5530WHEN 1: PROCsaveM: IF Memo% THEN MemFile$=fn$ ELSE ToFile$=fn$
5540WHEN 2: PROCsaveE:ExpFile$=fn$
5550WHEN 3: PROCsaveS:ShedFile$=fn$
5560ENDCASE
5570CLOSE#F%
5580IF Export% THEN OSCLI("SETTYPE "+fn$+" fff") ELSE OSCLI("SETTYPE "+fn$+" "+Stype$)
5590PROC_PutName(fn$)
5600ENDPROC
5610
5620DEF PROC_PutName(p$)
5630IF Export% THEN $Ename%=p$ ELSE $Sname%=p$
5640ENDPROC
5650
5660DEF PROC_PutDown(q%)
5670IF DragOn% THEN
5680REM SYS "Wimp_GetPointerInfo",,q%
5690PROC_GetName
5700SYS "Wimp_GetPointerInfo",,q%
5710messh%=q%!12:messi%=q%!16:messx%=q%!0:messy%=q%!4
5720IF INSTR( fn$,":") THEN fn$=FN_spath(fn$)
5730$(q%+44)=fn$
5740?(q%+44+LEN(fn$))=0
5750q%!20=q%!12:q%!28=q%!0:q%!32=q%!4:q%!36=1024:q%!40=&044
5760q%!0=56:q%!12=0:q%!16=1
5770SYS "Wimp_SendMessage",17,q%,messh%,messi%
5780saveref%=q%!8
5790SYS "Wimp_CreateMenu",,-1
5800DragOn%=FALSE
5810ENDIF
5820ENDPROC
5830
5840DEF PROC_KeyPress
5850LOCAL C%,D%
5860IF q%!24=13 THEN
5870CASE q%!0 OF
5880WHEN saveW%: Export%=FALSE: PROC_DoSave(2)
5890WHEN exportW%: Export%=TRUE: PROC_DoSave(2)
5900WHEN telW% : PROCupT
5910 SYS"Wimp_GetCaretPosition",,tblock%
5920 SYS"Wimp_SetCaretPosition",-1,-1,0,0,-1,-1,0
5930 C%=tblock%!4
5940 C%+=1
5950 IF C%>13 THEN C%=8:D%=1 ELSE D%=0
5960 tblock%!4=C%
5970 SYS"Wimp_SetCaretPosition",telW%,C%,tblock%!8,IY%(C%,0)+6,tblock%!16,LEN(Tel$(Ctel%+D%,C%-8))
5980 IF Ctel%=Ntel% AND D%=1 AND Ntel%<MaxRec% THEN PROCnewT
5990 IF D%<>0 THEN PROCupTel(D%)
6000
6010WHEN memoW%: PROCupM
6020 IF Memo% THEN C%=Cmem%:D%=Nmem% ELSE C%=Ctodo%:D%=Ntodo%
6030 IF C%=D% THEN PROCnewm(1):PROCupMbut(0) ELSE PROCmup(1): PROCupMbut(1)
6040WHEN shedW%: PROCupS
6050 SYS"Wimp_GetCaretPosition",,tblock%
6060 C%=tblock%!4
6070 C%+=1
6080 IF C%>12 THEN C%=8:D%=1 ELSE D%=0
6090 tblock%!4=C%
6100 SYS"Wimp_SetCaretPosition",shedW%,C%,tblock%!8,IY%(C%,3)+6,tblock%!16,LEN(Shed$(Cshed%+D%,C%-8))
6110 IF Cshed%=Nshed% AND D%=1 AND Nshed%<MaxRec% THEN PROCnewS
6120 IF D%<>0 THEN PROCupShed(D%)
6130
6140WHEN expW%: PROCupE
6150 SYS"Wimp_GetCaretPosition",,tblock%
6160 C%=tblock%!4
6170 C%+=1
6180 IF C%>12 THEN C%=8:D%=1 ELSE D%=0
6190 SYS"Wimp_SetCaretPosition",expW%,C%,tblock%!8,IY%(C%,2)+6,tblock%!16,LEN(Exp$(Cexp%+D%,C%-8))
6200 IF Cexp%=Nexp% AND D%=1 AND Nexp%<MaxRec% THEN PROCnewE
6210 IF D%<>0 THEN PROCupExp(D%)
6220
6230OTHERWISE
6240VDU7
6250ENDCASE
6260ELSE
6270SYS"Wimp_ProcessKey",q%!24
6280ENDIF
6290ENDPROC
6300
6310DEF PROCupM
6320IF Memo% THEN Mem$(Cmem%)=FN_GetIcon(1,8) ELSE ToDo$(Ctodo%)=FN_GetIcon(1,8)
6330ENDPROC
6340
6350DEF PROCupT
6360Tel$(Ctel%,0)=FN_GetIcon(0,8)
6370Tel$(Ctel%,1)=FN_GetIcon(0,9)
6380Tel$(Ctel%,2)=FN_GetIcon(0,10)
6390Tel$(Ctel%,3)=FN_GetIcon(0,11)
6400Tel$(Ctel%,4)=FN_GetIcon(0,12)
6410Tel$(Ctel%,5)=FN_GetIcon(0,13)
6420ENDPROC
6430
6440DEF PROCupE
6450Exp$(Cexp%,0)=FN_GetIcon(2,8)
6460Exp$(Cexp%,1)=FN_GetIcon(2,9)
6470Exp$(Cexp%,2)=FN_GetIcon(2,10)
6480Exp$(Cexp%,3)=FN_GetIcon(2,11)
6490Exp$(Cexp%,4)=FN_GetIcon(2,12)
6500IF LEN(Exp$(Cexp%,0))<2 THEN Exp$(Cexp%,0)="0"+Exp$(Cexp%,0)
6510IF LEN(Exp$(Cexp%,1))<2 THEN Exp$(Cexp%,1)="0"+Exp$(Cexp%,1)
6520ENDPROC
6530
6540DEF PROCupS
6550LOCAL A%
6560FOR A%=0 TO 4
6570Shed$(Cshed%,A%)=FN_GetIcon(3,A%+8)
6580NEXT
6590IF LEN(Shed$(Cshed%,0))<2 THEN Shed$(Cshed%,0)="0"+Shed$(Cshed%,0)
6600IF LEN(Shed$(Cshed%,1))<2 THEN Shed$(Cshed%,1)="0"+Shed$(Cshed%,1)
6610A%=INSTR(Shed$(Cshed%,3),":")
6620IF LEN(Shed$(Cshed%,3))=3 AND A%=1 THENShed$(Cshed%,3)="00"+Shed$(Cshed%,3)
6630IF LEN(Shed$(Cshed%,3))=4 AND A%=2 THENShed$(Cshed%,3)="0"+Shed$(Cshed%,3)
6640IF LEN(Shed$(Cshed%,3)) = 5 THEN
6650A%=VAL(LEFT$(Shed$(Cshed%,3),2))
6660IF A%<12 AND Spm%(Cshed%)=TRUE THEN Shed$(Cshed%,3)=STR$(A%+12)+RIGHT$(Shed$(Cshed%,3),3)
6670IF A%>11 AND Spm%(Cshed%)=FALSE THEN Spm%(Cshed%)=TRUE
6680ENDIF
6690ENDPROC
6700
6710DEF PROCsaveT
6720LOCAL A%,B%
6730PROCupT
6740IF Export% THEN
6750PROCexportS("Organiser Telephone Numbers")
6760PROCexportS(CHR$(&A))
6770PROCexportS(CHR$(&A))
6780FOR A% = 1 TO Ntel%
6790FOR B% = 0 TO 5
6800IF B%=3 THEN PROCexportS("Tel. ")
6810IF B%=4 THEN PROCexportS("Fax ")
6820PROCexportS(Tel$(A%,B%))
6830PROCexportS(CHR$(&A))
6840NEXT
6850PROCexportS(CHR$(&A))
6860NEXT
6870ELSE
6880PRINT#F%,Ntel% :REM number of numbers
6890FOR A% = 1 TO Ntel%
6900FOR B% = 0 TO 5
6910PRINT#F%,Tel$(A%,B%)
6920NEXT:NEXT
6930ENDIF
6940ENDPROC
6950
6960DEF PROCsaveM
6970LOCAL A%,B%
6980PROCupM
6990IF Memo% THEN A%=Nmem% :B%=2 ELSE A%=Ntodo% :B%=3
7000IF Export% THEN
7010IF Memo% THEN PROCexportS("Organiser Memos") ELSE PROCexportS("Organiser To Do")
7020PROCexportS(CHR$(&A))
7030PROCexportS(CHR$(&A))
7040FOR B%=1 TO A%
7050IF Memo% THEN PROCexportS(Mem$(B%)) ELSE PROCexportS(ToDo$(B%))
7060PROCexportS(CHR$(&A)):PROCexportS(CHR$(&A))
7070NEXT
7080ELSE
7090BPUT#F%,B%
7100PRINT#F%,A% :REM number of numbers
7110FOR B% = 1 TO A%
7120IF Memo% THEN PRINT#F%,Mem$(B%) ELSE PRINT#F%,ToDo$(B%)
7130NEXT
7140ENDIF
7150ENDPROC
7160
7170DEF PROCsaveE
7180LOCAL A%,B%,r$
7190PROCupE
7200IF Export% THEN
7210PROCexportS("Organiser Expenses")
7220PROCexportS(CHR$(&A))
7230PROCexportS(CHR$(&A))
7240FOR A% = 1 TO Nexp%
7250PROCexportS(Exp$(A%,0)+"-"+Exp$(A%,1)+"-"+Exp$(A%,2))
7260PROCexportS(CHR$(&A))
7270PROCexportS(Etype$(Exp%(A%,0))+" - �"+Exp$(A%,4))
7280PROCexportS(CHR$(&A))
7290IF Exp%(A%,2) THEN r$=" reciept" ELSE r$=" no reciept"
7300PROCexportS("Payed by "+Epay$(Exp%(A%,1))+r$)
7310PROCexportS(CHR$(&A))
7320PROCexportS(Exp$(A%,3))
7330PROCexportS(CHR$(&A)):PROCexportS(CHR$(&A))
7340NEXT
7350ELSE
7360PRINT#F%,Nexp% :REM number of numbers
7370FOR A% = 1 TO Nexp%
7380FOR B% = 0 TO 4
7390PRINT#F%,Exp$(A%,B%)
7400NEXT
7410FOR B%=0 TO 2
7420PRINT#F%,Exp%(A%,B%)
7430NEXT:NEXT
7440ENDIF
7450ENDPROC
7460
7470
7480DEF PROCsaveS
7490LOCAL A%,B%,t$
7500PROCupS
7510IF Export% THEN
7520PROCexportS("Organiser Scheduler")
7530PROCexportS(CHR$(&A))
7540PROCexportS(CHR$(&A))
7550FOR A% = 1 TO Nshed%
7560IF Spm%(A%) THEN t$=" pm" ELSE t$=" am"
7570PROCexportS(Shed$(A%,0)+"-"+Shed$(A%,1)+"-"+Shed$(A%,2)+" "+Shed$(A%,3)+t$)
7580PROCexportS(CHR$(&A))
7590PROCexportS(Shed$(A%,4))
7600PROCexportS(CHR$(&A)):PROCexportS(CHR$(&A))
7610NEXT
7620ELSE
7630BPUT#F%,1
7640PRINT#F%,Nshed%
7650FOR A%=1 TO Nshed%
7660FOR B%=0 TO 4
7670PRINT#F%,Shed$(A%,B%)
7680NEXT
7690PRINT#F%,Spm%(A%)
7700NEXT
7710ENDIF
7720ENDPROC
7730
7740DEF PROCloadT(n$)
7750LOCAL A%,B%
7760F%=OPENIN(n$)
7770INPUT#F%,Ntel%
7780FOR A% = 1 TO Ntel%
7790FOR B% = 0 TO 5
7800INPUT#F%,Tel$(A%,B%)
7810NEXT:NEXT
7820CLOSE#F%
7830Ctel%=1
7840PROCupTel(0)
7850PROCupTot(0,STR$(Ntel%))
7860ENDPROC
7870
7880DEF PROCcT
7890LOCAL A%,B%
7900IF Ntel%<>1 THEN
7910FOR A%=Ctel% TO Ntel%-1
7920FOR B%=0 TO 5
7930Tel$(A%,B%)=Tel$(A%+1,B%)
7940NEXT:NEXT
7950Ntel%-=1
7960PROCupTel(0)
7970PROCupTot(0,STR$(Ntel%))
7980ELSE
7990VDU7
8000ENDIF
8010ENDPROC
8020
8030DEF PROCloadM(n$)
8040LOCAL A%,B%
8050PROCupM
8060Stype$="05B"
8070F%=OPENIN(n$)
8080B%=BGET#F%
8090IF B%=2 THEN Memo%=TRUE ELSE Memo%=FALSE
8100IF Memo% THEN INPUT#F%,Nmem% :B%=Nmem% ELSE INPUT#F%,Ntodo%: B%=Ntodo%
8110FOR A%=1 TO B%
8120IF Memo% THEN INPUT#F%,Mem$(A%) ELSE INPUT#F%,ToDo$(A%)
8130NEXT
8140CLOSE#F%
8150PROC_sput(1,7,STR$(B%))
8160PROC_sput(1,6,"1")
8170PROCupMbut(1)
8180ENDPROC
8190
8200DEF PROCcM
8210LOCAL A%,B%
8220IF Memo% THEN
8230 IF Nmem%<>1 THEN
8240 FOR A%=Cmem% TO Nmem%-1
8250 Mem$(A%)=Mem$(A%+1)
8260 NEXT
8270 Nmem%-=1
8280 PROC_sput(1,7,STR$(Nmem%))
8290 PROCupMbut(0)
8300 ELSE
8310 VDU7
8320 ENDIF
8330ELSE
8340 IF Ntodo%<>1 THEN
8350 FOR A%=Ctodo% TO Ntodo%-1
8360 ToDo$(A%)=ToDo$(A%+1)
8370 NEXT
8380 Ntodo%-=1
8390 PROC_sput(1,7,STR$(Ntodo%))
8400 PROCupMbut(0)
8410 ELSE
8420 VDU7
8430 ENDIF
8440ENDIF
8450ENDPROC
8460
8470DEF PROCloadE(n$)
8480LOCAL A%,B%
8490F%=OPENIN(n$)
8500INPUT#F%,Nexp%
8510FOR A%=1 TO Nexp%
8520FOR B%=0 TO 4
8530INPUT#F%,Exp$(A%,B%)
8540NEXT
8550FOR B%=0 TO 2
8560INPUT#F%,Exp%(A%,B%)
8570NEXT
8580NEXT
8590CLOSE#F%
8600PROCupTot(2,STR$(Nexp%))
8610Cexp%=1
8620PROCupExp(0)
8630ENDPROC
8640
8650DEF PROCcE
8660LOCAL A%,B%
8670IF Nexp%<>1 THEN
8680FOR A%=Cexp% TO Nexp%-1
8690FOR B%=0 TO 4
8700Exp$(A%,B%)=Exp$(A%+1,B%)
8710NEXT
8720FOR B%=0 TO 2
8730Exp%(A%,B%)=Exp%(A%+1,B%)
8740NEXT
8750Nexp%-=1
8760PROCupTot(2,STR$(Nexp%))
8770PROCupExp(0)
8780ELSE
8790VDU7
8800ENDIF
8810ENDPROC
8820
8830DEF PROCloadS(n$)
8840LOCAL A%,B%
8850F%=OPENIN(n$)
8860B%=BGET#F%
8870INPUT#F%,Nshed%
8880FOR A%=1 TO Nshed%
8890FOR B%=0 TO 4
8900INPUT#F%,Shed$(A%,B%)
8910NEXT
8920INPUT#F%,Spm%(A%)
8930NEXT
8940CLOSE#F%
8950PROCupTot(3,STR$(Nshed%))
8960Cshed%=1
8970PROCupShed(0)
8980ENDPROC
8990
9000DEF PROCcShed
9010LOCAL A%,B%
9020IF Nshed%<>1 THEN
9030FOR A%=Cshed% TO Nshed%-1
9040FOR B%=0 TO 4
9050Shed$(A%,B%)=Shed$(A%+1,B%)
9060NEXT
9070Spm%(A%)=Spm%(A%+1)
9080NEXT
9090Nshed%-=1
9100PROCupShed(0)
9110PROCupTot(3,STR$(Nshed%))
9120ELSE
9130VDU7
9140ENDIF
9150ENDPROC
9160
9170DEF PROCupTot(w%,v$)
9180PROC_sput(w%,7,v$)
9190SYS"Wimp_ForceRedraw",!Wn%(w%),IX%(7,w%),IY%(7,w%),IX1%(7,w%),IY1%(7,w%)
9200ENDPROC
9210
9220DEF PROCupTn
9230PROC_sput(0,7,STR$(Ntel%))
9240SYS"Wimp_ForceRedraw",!Wn%(0),IX%(7,0),IY%(7,0),IX1%(7,0),IY1%(7,0)
9250ENDPROC
9260
9270DEF PROCupTel(i%)
9280SYS"Wimp_GetCaretPosition",,tblock%
9290Ctel%+=i%
9300IF Ctel%>Ntel% THEN Ctel%=Ntel%
9310IF Ctel%<1 THEN Ctel%=1
9320FOR A%=0 TO 5
9330PROC_sput(0,A%+8,Tel$(Ctel%,A%))
9340IF tblock%!0=telW% AND tblock%!4=A%+8 THEN
9350SYS"Wimp_SetCaretPosition",telW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,LEN(Tel$(Ctel%,A%))
9360ENDIF
9370NEXT
9380PROC_sput(0,6,STR$(Ctel%))
9390ENDPROC
9400
9410DEF PROCupShed(i%)
9420SYS"Wimp_GetCaretPosition",,tblock%
9430Cshed%+=i%
9440IF Cshed%>Nshed% THEN Cshed%=Nshed%
9450IF Cshed%<1 THEN Cshed%=1
9460FOR A%=0 TO 4
9470PROC_sput(3,A%+8,Shed$(Cshed%,A%))
9480IF tblock%!0=shedW% AND tblock%!4=A%+8 THEN
9490SYS"Wimp_SetCaretPosition",shedW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,LEN(Shed$(Cshed%,A%))
9500ENDIF
9510NEXT
9520PROC_sput(3,6,STR$(Cshed%))
9530PROC_am
9540ENDPROC
9550
9560DEF PROCupExp(i%)
9570LOCAL A%
9580SYS"Wimp_GetCaretPosition",,tblock%
9590Cexp%+=i%
9600IF Cexp%>Nexp% THEN Cexp%=Nexp%
9610IF Cexp%<1 THEN Cexp%=1
9620FOR A%=0 TO 4
9630PROC_sput(2,A%+8,Exp$(Cexp%,A%))
9640IF tblock%!0=expW% AND tblock%!4=A%+8 THEN
9650SYS"Wimp_SetCaretPosition",expW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,LEN(Exp$(Cexp%,A%))
9660ENDIF
9670NEXT
9680PROC_sput(2,6,STR$(Cexp%))
9690IF Exp%(Cexp%,2) THEN $SPoint%(17,2)="yes" ELSE $SPoint%(17,2)="no"
9700$SPoint%(13,2)=Etype$(Exp%(Cexp%,0))
9710$SPoint%(14,2)=Epay$(Exp%(Cexp%,1))
9720SYS"Wimp_ForceRedraw",!Wn%(2),IX%(17,2),IY%(17,2),IX1%(17,2),IY1%(17,2)
9730SYS"Wimp_ForceRedraw",!Wn%(2),IX%(14,2),IY%(14,2),IX1%(14,2),IY1%(14,2)
9740SYS"Wimp_ForceRedraw",!Wn%(2),IX%(13,2),IY%(13,2),IX1%(13,2),IY1%(13,2)
9750ENDPROC
9760
9770DEF PROCupMbut(R%)
9780LOCAL L%
9790IF Memo% THEN
9800$SPoint%(9,1)="radioon"
9810$SPoint%(10,1)="radiooff"
9820IF R%=0 THEN Cmem%=Nmem%:PROCmup(0)
9830PROC_sput(1,8,Mem$(Cmem%))
9840L%=LEN(Mem$(Cmem%))
9850ELSE
9860$SPoint%(10,1)="radioon"
9870$SPoint%(9,1)="radiooff"
9880IF R%=0 THEN Ctodo%=Ntodo%:PROCmup(0)
9890PROC_sput(1,8,ToDo$(Ctodo%))
9900L%=LEN(ToDo$(Ctodo%))
9910ENDIF
9920SYS"Wimp_GetCaretPosition",,tblock%
9930IF tblock%!0=memoW% AND tblock%!4=8 THEN
9940SYS"Wimp_SetCaretPosition",memoW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,L%
9950ENDIF
9960SYS"Wimp_ForceRedraw",!Wn%(1),IX%(10,1),IY%(10,1),IX1%(10,1),IY1%(10,1)
9970SYS"Wimp_ForceRedraw",!Wn%(1),IX%(9,1),IY%(9,1),IX1%(9,1),IY1%(9,1)
9980REM SYS"Wimp_ForceRedraw",!Wn%(1),IX%(8,1),IY%(8,1),IX1%(8,1),IY1%(8,1)
9990ENDPROC
10000
10010DEFFNsget(x%)
10020LOCAL x$
10030WHILE ?x%>&1F x$+=CHR$(?x%):x%+=1:ENDWHILE
10040=x$
10050
10060DEFFNpg(n%,W%)
10070LOCAL A$
10080A$=FNsget(SPoint%(n%,W))
10090=VAL(A$)
10100
10110DEF FN_GetIcon(W%,In%)
10120LOCAL T%,A%,R$
10130R$=FNsget(SPoint%(In%,W%))
10140=R$
10150
10160DEF PROC_sput(W%,In%,X$)
10170LOCAL A%,x%
10180x%=SPoint%(In%,W%)
10190A%=1
10200IF LEN(X$)<>0 THEN
10210WHILE A%<>(LEN(X$)+1)
10220?x%=ASC(MID$(X$,A%,1))
10230x%+=1
10240A%+=1
10250ENDWHILE
10260ENDIF
10270?x%=0
10280SYS"Wimp_ForceRedraw",!Wn%(W%),IX%(In%,W%),IY%(In%,W%),IX1%(In%,W%),IY1%(In%,W%)
10290ENDPROC
10300
10310DEF PROCinit
10320LOCAL A%,B%
10330ToFile$="ToDo"
10340MemFile$="Memo"
10350TelFile$="Tel"
10360ExpFile$="Exp"
10370ShedFile$="Shed"
10380FOR A%=0 TO 5
10390Tel$(1,A%)=" "
10400NEXT
10410FOR A%=1 TO MaxRec%
10420Mem$(A%)=""
10430ToDo$(A%)=""
10440Spm%(A%)=FALSE
10450FOR B%=0 TO 4
10460Shed$(A%,B%)=""
10470NEXT
10480FOR B%=0 TO 2
10490Exp$(A%,B%)=""
10500Exp%(A%,B%)=1
10510NEXT
10520Exp$(A%,3)=""
10530NEXT
10540FOR A%=1 TO 4
10550READ Epay$(A%)
10560NEXT
10570PROCexpcat
10580PROCimset
10590DATA Cash,Cheque,Card,Other
10600ENDPROC
10610
10620DEF PROCexpcat
10630LOCAL A%,B%,F%
10640F%=OPENIN("<ORG$Dir>.ExpCat")
10650A%=1
10660REPEAT
10670Etype$(A%)=""
10680REPEAT
10690B%=BGET#F%
10700IF B%>&1F THEN Etype$(A%)=Etype$(A%)+CHR$(B%)
10710UNTIL B%<&20
10720A%+=1
10730UNTIL A%=9
10740CLOSE#F%
10750ENDPROC
10760
10770DEF PROCimset
10780LOCAL A%,B%
10790FOR A%=0 TO 7
10800$(TypeM%+(A%*25))=Etype$(A%+1)
10810NEXT
10820FOR A%=0 TO 3
10830$(PayM%+(A%*25))=Epay$(A%+1)
10840NEXT
10850$Commenu%="Type"
10860Commenu%?12=7
10870Commenu%?13=2
10880Commenu%?14=7
10890Commenu%?15=0
10900Commenu%!16=288
10910Commenu%!20=40
10920Commenu%!24=0
10930m%=Commenu%+28
10940
10950FOR A%=0 TO 7
10960m%!0=0
10970m%!4=0
10980m%!8=(7<<24)OR %100010001
10990m%!12=TypeM%+(A%*25)
11000m%!16=0
11010m%!20=25
11020m%+=24
11030NEXT
11040m%-=24
11050m%!0=&80
11060
11070$Comenu%="Payment"
11080Comenu%?12=7
11090Comenu%?13=2
11100Comenu%?14=7
11110Comenu%?15=0
11120Comenu%!16=288
11130Comenu%!20=40
11140Comenu%!24=0
11150m%=Comenu%+28
11160
11170FOR A%=0 TO 3
11180m%!0=0
11190m%!4=0
11200m%!8=(7<<24)OR %100010001
11210m%!12=PayM%+(A%*25)
11220m%!16=0
11230m%!20=25
11240m%+=24
11250NEXT
11260m%-=24
11270m%!0=&80
11280
11290ENDPROC
11300
11310DEF PROCnewT
11320LOCAL A%
11330Ntel%+=1:PROCupTot(0,STR$(Ntel%))
11340FOR A%=0 TO 5
11350Tel$(Ntel%,A%)=""
11360NEXT
11370ENDPROC
11380
11390DEF PROCnewS
11400LOCAL A%
11410Nshed%+=1:PROCupTot(3,STR$(Nshed%))
11420FOR A%=0 TO 4
11430Shed$(Nshed%,A%)=""
11440NEXT
11450Spm%(Nshed%)=Spm%(Nshed%-1)
11460ENDPROC
11470
11480DEF PROCnewE
11490LOCAL A%
11500Nexp%+=1:PROCupTot(2,STR$(Nexp%))
11510FOR A%=0 TO 4
11520Exp$(Nexp%,A%)=""
11530NEXT
11540Exp%(Nexp%,0)=Exp%(Nexp%-1,0)
11550Exp%(Nexp%,1)=Exp%(Nexp%-1,1)
11560Exp%(Nexp%,2)=Exp%(Nexp%-1,2)
11570ENDPROC
11580
11590DEF PROCmup(I%)
11600IF Memo% THEN
11610Cmem%+=I%
11620IF Cmem%>Nmem% THEN Cmem%=Nmem%
11630IF Cmem%<1 THEN Cmem%=1
11640PROC_sput(1,6,STR$(Cmem%))
11650ELSE
11660Ctodo%+=I%
11670IF Ctodo%>Ntodo% THEN Ctodo%=Ntodo%
11680IF Ctodo%<1 THEN Ctodo%=1
11690PROC_sput(1,6,STR$(Ctodo%))
11700ENDIF
11710ENDPROC
11720
11730DEF PROCnewm(I%)
11740IF Memo% THEN
11750Nmem%+=I%
11760IF Nmem%>MaxRec% THEN Nmem%=MaxRec%
11770IF Mmen%<MaxRec% AND I%>0 THEN Mem$(Nmem%)=""
11780IF Nmem%<1 THEN Nmem%=1
11790PROC_sput(1,7,STR$(Nmem%))
11800ELSE
11810Ntodo%+=I%
11820IF Ntodo%>MaxRec% THEN Ntodo%=MaxRec%
11830IF Ntodo%<MaxRec% AND I%>0 THEN ToDo$(Ntodo%)=""
11840IF Ntodo%<1 THEN Ntodo%=1
11850PROC_sput(1,7,STR$(Ntodo%))
11860ENDIF
11870ENDPROC
11880
11890DEF PROC_am
11900IF Spm%(Cshed%) THEN
11910$SPoint%(14,3)="radioon"
11920$SPoint%(13,3)="radiooff"
11930ELSE
11940$SPoint%(13,3)="radioon"
11950$SPoint%(14,3)="radiooff"
11960ENDIF
11970SYS"Wimp_ForceRedraw",!Wn%(3),IX%(14,3),IY%(14,3),IX1%(14,3),IY1%(14,3)
11980SYS"Wimp_ForceRedraw",!Wn%(3),IX%(13,3),IY%(13,3),IX1%(13,3),IY1%(13,3)
11990ENDPROC
12000
12010DEF PROC_Trans(wh%)
12020!q%=wh%
12030SYS "Wimp_GetWindowState",,q%
12040xo%=q%!4-q%!20+8:yo%=q%!16-q%!24-290
12050XO%=q%!4:YO%=q%!16
12060ENDPROC
12070
12080DEF PROCpb(w%,i%)
12090IF i%=0 THEN $SPoint%(0,w%)="pdown" ELSE $SPoint%(1,w%)="pup"
12100SYS"Wimp_ForceRedraw",!Wn%(w%),IX%(i%,w%),IY%(i%,w%),IX1%(i%,w%),IY1%(i%,w%)
12110RdUD%=TRUE
12120Rd1%=w%:Rd2%=i%
12130ENDPROC
12140
12150DEF PROCopenRX(a%)
12160LOCAL X%,Y%,B%,A%
12170MOUSE X%,Y%,B%
12180X%-=140:Y%-=90
12190RXw%!0=rx1W%:RXw%!4=X%:RXw%!8=Y%
12200RXw%!12=306+X%:RXw%!16=168+Y%:RXw%!20=0:RXw%!24=0:RXw%!28=-1
12210SYS "Wimp_OpenWindow",,RXw%
12220RXtype%=a%
12230CkB%=0
12240NbRX%=0:RXcount%=0:RXpram%=0
12250Y%=Mmenu%!148
12260CASE RXtype% OF
12270WHEN 0: IF Y%=1 THEN RXrecord%=1 ELSE RXrecord%=Ntel%+1
12280WHEN 1: IF Y%=1 THEN Cshed%=RXrecord%:RXrecord%=1 ELSE RXrecord%=Nshed%+1
12290WHEN 2: IF Y%=1 THEN RXrecord%=2 ELSE RXrecord%=Nmem%+1
12300WHEN 3: IF Y%=1 THEN RXrecord%=2 ELSE RXrecord%=Ntodo%+1
12310WHEN 5: IF Y%=1 THEN Cexp%=RXrecord%:RXrecord%=1 ELSE RXrecord%=Nexp%+1
12320ENDCASE
12330ENDPROC
12340
12350DEF PROCacCK(A%)
12360IF A%>&7F THEN A%=A% OR &FFFFFF00
12370CkB%=CkB%-A%
12380ENDPROC
12390
12400DEF PROCrxINIT
12410SYS"OS_SerialOp",0,&34,&FF00
12420SYS"OS_SerialOp",1,0
12430SYS"OS_SerialOp",5,12
12440SYS"OS_SerialOp",6,12
12450SYS"OS_Byte",2,2
12460Abort%=FALSE
12470CkB%=0
12480ENDPROC
12490
12500DEF PROC_gath(b%)
12510IF NbRX%<>0 THEN PROCacCK(b%)
12520NbRX%+=1
12530IF NbRX%=2 AND b%<>RXtype% THEN PROC_setupW("wrong type of data"):Abort%=TRUE:VDU7
12540IF NbRX%=3 THEN RXcount%=1
12550IF RXcount%<>0 THEN
12560b%=FNtransRX(b%)
12570CASE RXtype% OF
12580WHEN 0: IF b%<&F8 THEN
12590 IF RXcount%=1 THEN Tel$(RXrecord%,RXpram%)=CHR$(b%) ELSE Tel$(RXrecord%,RXpram%)=Tel$(RXrecord%,RXpram%)+CHR$(b%)
12600 RXcount%+=1
12610 ELSE
12620 PROCrxcont(b%)
12630 ENDIF
12640
12650WHEN 1: IF b%<&F8 THEN
12660 IF RXcount%=1 THEN Shed$(RXrecord%,RXpram%)=CHR$(b%) ELSE Shed$(RXrecord%,RXpram%)=Shed$(RXrecord%,RXpram%)+CHR$(b%)
12670 RXcount%+=1
12680 ELSE
12690 PROCrxcont(b%)
12700 ENDIF
12710
12720WHEN 2: IF b%<&F8 THEN
12730 IF RXcount%=1 THEN Mem$(RXrecord%)=CHR$(b%) ELSE Mem$(RXrecord%)=Mem$(RXrecord%)+CHR$(b%)
12740 RXcount%+=1
12750 ELSE
12760 PROCrxcont(b%)
12770 ENDIF
12780
12790WHEN 3: IF b%<&F8 THEN
12800 IF RXcount%=1 THEN ToDo$(RXrecord%)=CHR$(b%) ELSE ToDo$(RXrecord%)=ToDo$(RXrecord%)+CHR$(b%)
12810 RXcount%+=1
12820 ELSE
12830 PROCrxcont(b%)
12840 ENDIF
12850
12860WHEN 5: IF b%<&F8 THEN
12870 IF RXcount%=1 THEN Exp$(RXrecord%,RXpram%)=CHR$(b%) ELSE Exp$(RXrecord%,RXpram%)=Exp$(RXrecord%,RXpram%)+CHR$(b%)
12880 RXcount%+=1
12890 ELSE
12900 PROCrxcont(b%)
12910 ENDIF
12920
12930ENDCASE
12940ENDIF
12950ENDPROC
12960
12970DEF PROCrxcont(b%)
12980 IF b%=&FF THEN RXcount%=1:RXpram%+=1
12990 IF b%=&FE THEN RXpram%=0:RXrecord%+=1:RXcount%=1
13000 IF RXrecord%>MaxRec% THEN RXrecord%=MaxRec%:PROC_setupW("too much data")
13010ENDPROC
13020
13030DEF PROCtidy
13040LOCAL B%,C%,D%
13050B%=FNgetS
13060CkB%=CkB% AND &FF
13070IF B%<>CkB% THEN PROC_setupW("Check byte was "+STR$(B%)+" should be "+STR$(CkB%))
13080B%=FNgetS
13090IF B%<>&1A THEN PROC_setupW("Last byte 1A not correct")
13100IF Abort%=FALSE THEN
13110CASE RXtype% OF
13120WHEN 0: Ctel%=1:PROCupTel(0):Ntel%=RXrecord%-1:PROCupTot(0,STR$(Ntel%))
13130WHEN 1: Nshed%=RXrecord%-1:PROCupTot(3,STR$(Nshed%))
13140 FOR C%=Cshed% TO Nshed%
13150 D%=VAL(MID$(Shed$(C%,0),9,2))
13160 IF D%>12 THEN Spm%(C%)=TRUE ELSE Spm%(C%)=FALSE
13170 Shed$(C%,4)=Shed$(C%,1)
13180 Shed$(C%,3)=MID$(Shed$(C%,0),9,2)+":"+RIGHT$(Shed$(C%,0),2)
13190 Shed$(C%,2)=LEFT$(Shed$(C%,0),4)
13200 Shed$(C%,1)=MID$(Shed$(C%,0),5,2)
13210 Shed$(C%,0)=MID$(Shed$(C%,0),7,2)
13220 NEXT
13230 Cshed%=1
13240 PROCupShed(0)
13250WHEN 2: Cmem%=1:PROCmup(0):Nmem%=RXrecord%-1
13260 IF (Mmenu%!148)=1 THEN PROCcM ELSE PROCupTot(1,STR$(Nmem%))
13270WHEN 3: Ctodo%=1:PROCmup(0):Ntodo%=RXrecord%-1
13280 IF (Mmenu%!148)=1 THEN PROCcM ELSE PROCupTot(1,STR$(Ntodo%))
13290WHEN 5: Nexp%=RXrecord%-1:PROCupTot(2,STR$(Nexp%))
13300 FOR C%=Cexp% TO Nexp%
13310 IF Exp$(C%,4)="N" THEN Exp%(C%,2)=FALSE ELSE Exp%(C%,2)=TRUE
13320 Exp%(C%,0)=VAL(Exp$(C%,1))
13330 Exp%(C%,1)=VAL(Exp$(C%,3))
13340 Exp$(C%,3)=Exp$(C%,5)
13350 Exp$(C%,4)=Exp$(C%,2)
13360 Exp$(C%,2)=LEFT$(Exp$(C%,0),4)
13370 Exp$(C%,1)=MID$(Exp$(C%,0),5,2)
13380 Exp$(C%,0)=MID$(Exp$(C%,0),7,2)
13390 NEXT
13400 Cexp%=1
13410 PROCupExp(0)
13420ENDCASE
13430ENDIF
13440ENDPROC
13450
13460DEF FNgetS
13470LOCAL B%,C%
13480REPEAT
13490SYS"OS_SerialOp",4,256 TO ,B% ;C%
13500C%=C% AND &2
13510UNTIL C%=0
13520=B%
13530
13540DEF PROCempty
13550LOCAL B%,C%
13560REPEAT
13570SYS"OS_SerialOp",4,256 TO ,B% ;C%
13580C%=C% AND &2
13590UNTIL C%<>0
13600ENDPROC
13610
13620DEF PROCacCK(A%)
13630IF A%>&7F THEN A%=A% OR &FFFFFF00
13640CkB%=CkB%-A%
13650ENDPROC
13660
13670DEF PROCTXmem
13680LOCAL A%,B%,C%
13690PROCrxINIT
13700SYS"Hourglass_Start",10
13710PROCTXb(&50)
13720PROCTXb(2):PROCacCK(2)
13730C%=Cmem%
13740IF Mmenu%!100=0 THEN B%=Nmem% ELSE B%=Cmem%
13750FOR A%=C% TO B%
13760PROCTXs(Mem$(A%))
13770PROCTXb(&FE):PROCacCK(&FE)
13780NEXT
13790PROCfinishTX
13800ENDPROC
13810
13820DEF PROCTXtodo
13830LOCAL A%,B%,C%
13840PROCrxINIT
13850SYS"Hourglass_Start",10
13860PROCTXb(&50)
13870PROCTXb(3):PROCacCK(3)
13880C%=Ctodo%
13890IF Mmenu%!100=0 THEN B%=Ntodo% ELSE B%=Ctodo%
13900FOR A%=C% TO B%
13910PROCTXs(ToDo$(A%))
13920PROCTXb(&FE):PROCacCK(&FE)
13930NEXT
13940PROCfinishTX
13950ENDPROC
13960
13970DEF PROCTXtel
13980LOCAL A%,B%,C%,D%
13990PROCrxINIT
14000SYS"Hourglass_Start",10
14010PROCTXb(&50)
14020PROCTXb(0):PROCacCK(0)
14030C%=Ctel%
14040IF Mmenu%!100=0 THEN B%=Ntel% ELSE B%=Ctel%
14050FOR A%=C% TO B%
14060FOR D%=0 TO 5
14070PROCTXs(Tel$(A%,D%))
14080PROCTXb(&FF):PROCacCK(&FF)
14090NEXT
14100PROCTXb(&FE):PROCacCK(&FE)
14110NEXT
14120PROCfinishTX
14130ENDPROC
14140
14150DEF PROCTXexp
14160LOCAL A%,B%,C%,D%,t$
14170PROCrxINIT
14180SYS"Hourglass_Start",10
14190PROCTXb(&50)
14200PROCTXb(5):PROCacCK(5)
14210C%=Cexp%
14220IF Mmenu%!100=0 THEN B%=Nexp% ELSE B%=Cexp%
14230FOR A%=C% TO B%
14240PROCTXs(Exp$(A%,2)+Exp$(A%,1)+Exp$(A%,0)) :REM Date
14250PROCTXb(&FF):PROCacCK(&FF)
14260PROCTXs(STR$(Exp%(A%,0))) : REM Type
14270PROCTXb(&FF):PROCacCK(&FF)
14280PROCTXs(Exp$(A%,4)) : REM Ammount
14290PROCTXb(&FF):PROCacCK(&FF)
14300PROCTXs(STR$(Exp%(A%,1))) : REM Pay method
14310PROCTXb(&FF):PROCacCK(&FF)
14320IF Exp%(A%,2) THEN PROCTXs("Y") ELSE PROCTXs("N") : REM Reciept
14330PROCTXb(&FF):PROCacCK(&FF)
14340PROCTXs(Exp$(A%,3)) : REM Note
14350PROCTXb(&FE):PROCacCK(&FE)
14360NEXT
14370PROCfinishTX
14380ENDPROC
14390
14400DEF PROCTXshed
14410LOCAL A%,B%,C%,D%,t$
14420PROCrxINIT
14430SYS"Hourglass_Start",10
14440PROCTXb(&50)
14450PROCTXb(1):PROCacCK(1)
14460C%=Cshed%
14470IF Mmenu%!100=0 THEN B%=Nshed% ELSE B%=Cshed%
14480FOR A%=C% TO B%
14490IF LEN(Shed$(A%,3)) = 5 THEN t$=LEFT$(Shed$(A%,3),2)+RIGHT$(Shed$(A%,3),2) ELSE t$=FNmakeT(Shed$(A%,3))
14500PROCTXs(Shed$(A%,2)+Shed$(A%,1)+Shed$(A%,0)+t$)
14510PROCTXb(&FF):PROCacCK(&FF)
14520PROCTXs(Shed$(A%,4))
14530PROCTXb(&FE):PROCacCK(&FE)
14540NEXT
14550PROCfinishTX
14560ENDPROC
14570
14580DEF FNmakeT(a$)
14590LOCAL t$,L%,C%
14600t$=a$
14610C%=INSTR(a$,":")
14620L%=LEN(a$)
14630IF C%<>0 THEN
14640WHILE L%<5
14650a$="0"+a$
14660L%+=1
14670ENDWHILE
14680C%=INSTR(a$,":")
14690t$=LEFT$(a$,C%-1)+RIGHT$(a$,L%-C%)
14700ELSE
14710WHILE L%<4
14720t$="0"+t$
14730L%+=1
14740ENDWHILE
14750ENDIF
14760=t$
14770
14780DEF PROCfinishTX
14790IF Abort% THEN
14800PROC_setupW("Buffer overflow, hardware not connected"):VDU7
14810ELSE
14820PROCTXb(&F8):PROCacCK(&F8)
14830PROCTXb(CkB%)
14840PROCTXb(&1A)
14850ENDIF
14860SYS"Hourglass_Off"
14870ENDPROC
14880
14890
14900DEF PROCTXs(s$)
14910LOCAL A%,B%
14920FOR A%=1 TO LEN(s$)
14930B%=ASC(MID$(s$,A%,1))
14940B%=FNtransTX(B%)
14950PROCTXb(B%):PROCacCK(B%)
14960NEXT
14970ENDPROC
14980
14990DEF PROCTXb(b%)
15000LOCAL T%
15010IF NOT(Abort%) THEN
15020T%=TIME+50
15030REPEAT
15040SYS"OS_SerialOp",3,b% TO ;C%
15050C%=C% AND 2
15060UNTIL C%=0 OR TIME>T%
15070IF C%<>0 THEN Abort%=TRUE
15080ENDIF
15090ENDPROC
15100
15110DEF PROCexportS(s$)
15120LOCAL A%,C%
15130FOR A%=1 TO LEN(s$)
15140C%=ASC(MID$(s$,A%,1))
15150IF C%=172 THEN C%=&A
15160BPUT#F%,C%
15170NEXT
15180ENDPROC
15190
15200DEF FNtransTX(A%)
15210LOCAL B%
15220B%=A%
15230IF A%=172 THEN B%=&13
15240IF A%=&60 THEN B%=&26
15250IF A%=&7C THEN B%=&21
15260IF A%=&3A THEN B%=&21
15270IF A%>&60 AND A%<>172 THEN B%=A% AND &5F:A%=B%
15280IF A%<&30 THEN
15290CASE A% OF
15300WHEN &20 :B%=&20
15310WHEN &24 :B%=&27
15320WHEN &2F :B%=&24
15330WHEN &2E :B%=&29
15340WHEN &2D :B%=&28
15350WHEN &27 :B%=&22
15360OTHERWISE
15370B%=&25
15380ENDCASE
15390ENDIF
15400=B%
15410
15420DEF FNtransRX(A%)
15430LOCAL B%
15440B%=A%
15450IF A%<&30 THEN
15460CASE A% OF
15470WHEN &13: B%=172
15480WHEN &20: B%=&20
15490WHEN &21: B%=&3A
15500WHEN &22: B%=180
15510WHEN &23: B%=44
15520WHEN &24: B%=47
15530WHEN &25: B%=165
15540WHEN &26: B%=163
15550WHEN &27: B%=36
15560WHEN &28: B%=&2D
15570WHEN &29: B%=&2E
15580WHEN &2E: B%=&2B
15590OTHERWISE
15600B%=&3F
15610ENDCASE
15620ENDIF
15630=B%
15640
� Personal Organiser AM-399C
� Version 1.0 By Mike Cook
� All rights reserved
(� � �errorbox
2
<*� taskid%4,intmess% 20:$taskid%="TASK"
FIintmess%!0=1:intmess%!4=2:intmess%!8=3:intmess%!12=&502:intmess%!16=0
POș "Wimp_Initialise",300,!taskid%,"Organiser",intmess% � version%,taskhand%
Zm� q% &600,qc% 80,temp% 512,buffers% 512,menu% 256,Mmenu% 512,cb% 18,qw% &300,qn% &300, Sw% &300, Ew% &300
dK� Wn0% &700, Wn1% &500, Wn2% &500, Wn3% &500,RXw% 500, Wn%(3),wopen%(3)
nL� SW0% 700,SW1% 512,SW2% 612, SW3% 512,tblock% 24, TypeM% 200, PayM% 200
x5� Commenu% 512, Comenu% 256,RCW% 500, EsName% 556
�K� IsName% 556, Wmenu% 512,Smenu% 256,Imenu% 256, TextWarn% 100, ww% 256
�=� SPoint%(20,3),IX%(20,3),IY%(20,3),IX1%(20,3),IY1%(20,3)
�FMaxRec%=100 : � alter this to change the maximum number of records
�Q� Tel$(MaxRec%,5),Mem$(MaxRec%),ToDo$(MaxRec%),Shed$(MaxRec%,5),Spm%(MaxRec%)
�8� Exp$(MaxRec%,5),Exp%(MaxRec%,2),Etype$(8),Epay$(4)
�1ș "Wimp_OpenTemplate",,"<ORG$Dir>.Templates"
�)� � ș "Wimp_CloseTemplate":�errorbox
�:ș "Wimp_LoadTemplate",,q%,temp%,temp%+256,-1,"Info",0
�&ș "Wimp_CreateWindow",,q% � info%
�Gș "Wimp_LoadTemplate",,q%,IsName%+4,IsName%+556,-1,"save_script",0
�'ș "Wimp_CreateWindow",,q% � saveW%
�@IsName%!0=saveW%:SaveIcon%=!(q%+88+20):Sname%=!(q%+88+20+32)
�Bș "Wimp_LoadTemplate",,q%,EsName%+4,EsName%+556,-1,"Export",0
)ș "Wimp_CreateWindow",,q% � exportW%
,EsName%!0=exportW%:Ename%=!(q%+88+20+32)
:ș "Wimp_LoadTemplate",,RXw%+4,RCW%,RCW%+500,-1,"rx",0
"*ș "Wimp_CreateWindow",,RXw%+4 � rx1W%
,RXw%!0=rx1W%
6
@Aș "Wimp_LoadTemplate",,Wn0%+4,SW0%,SW0%+700,-1,"Telephone",0
JWn0%!28=-1
T� A%=0 � 13
^'SPoint%(A%,0)=!(Wn0%+4+88+20+32*A%)
h?IX%(A%,0)=!(Wn0%+4+88+32*A%):IY%(A%,0)=!(Wn0%+4+88+4+32*A%)
rDIX1%(A%,0)=!(Wn0%+4+88+8+32*A%):IY1%(A%,0)=!(Wn0%+4+88+12+32*A%)
|�
�*ș "Wimp_CreateWindow",,Wn0%+4 � telW%
�Wn0%!0=telW%:Wn0%!28=-1
�
�<ș "Wimp_LoadTemplate",,Wn1%+4,SW1%,SW1%+512,-1,"Memo",0
�Wn1%!28=-1
�� A%=0 � 13
�'SPoint%(A%,1)=!(Wn1%+4+88+20+32*A%)
�?IX%(A%,1)=!(Wn1%+4+88+32*A%):IY%(A%,1)=!(Wn1%+4+88+4+32*A%)
�DIX1%(A%,1)=!(Wn1%+4+88+8+32*A%):IY1%(A%,1)=!(Wn1%+4+88+12+32*A%)
��
�+ș "Wimp_CreateWindow",,Wn1%+4 � memoW%
�Wn1%!0=memoW%:Wn1%!28=-1
�
@ș "Wimp_LoadTemplate",,Wn2%+4,SW2%,SW2%+612,-1,"Expenses",0
Wn2%!28=-1
� A%=0 � 17
&'SPoint%(A%,2)=!(Wn2%+4+88+20+32*A%)
0?IX%(A%,2)=!(Wn2%+4+88+32*A%):IY%(A%,2)=!(Wn2%+4+88+4+32*A%)
:DIX1%(A%,2)=!(Wn2%+4+88+8+32*A%):IY1%(A%,2)=!(Wn2%+4+88+12+32*A%)
D�
N*ș "Wimp_CreateWindow",,Wn2%+4 � expW%
XWn2%!0=expW%:Wn2%!28=-1
b
l@ș "Wimp_LoadTemplate",,Wn3%+4,SW3%,SW3%+512,-1,"Schedule",0
vWn3%!28=-1
�� A%=0 � 14
�'SPoint%(A%,3)=!(Wn3%+4+88+20+32*A%)
�?IX%(A%,3)=!(Wn3%+4+88+32*A%):IY%(A%,3)=!(Wn3%+4+88+4+32*A%)
�DIX1%(A%,3)=!(Wn3%+4+88+8+32*A%):IY1%(A%,3)=!(Wn3%+4+88+12+32*A%)
��
�+ș "Wimp_CreateWindow",,Wn3%+4 � shedW%
�Wn3%!0=shedW%:Wn3%!28=-1
�3Wn%(0)=Wn0%:Wn%(1)=Wn1%:Wn%(2)=Wn2%:Wn%(3)=Wn3%
�
�9ș "Wimp_LoadTemplate",,q%,ww%,ww%+256,-1,"Warning",0
�)q%!108=TextWarn%:q%!112=-1:q%!116=300
� XQ%=q%!8-q%!0:YQ%=q%!12-q%!4
�*ș "Wimp_CreateWindow",,q% � warningW%
ș "Wimp_CloseTemplate"
smpicon%=�icon
=wopen%(0)=�:wopen%(1)=�:wopen%(2)=�:wopen%(3)=�:warnOn%=�
Stype$="0":Ntel%=1:Ctel%=1
*Nmem%=1:Cmem%=1
4Ntodo%=1:Ctodo%=1
>Nshed%=1:Cshed%=1
HNexp%=1:Cexp%=1
RMemo%=�:Rd%=�:Rd1%=0:Rd2%=0
\RdUD%=�:RX%=�
fExport%=�:�_PutName("Text")
pExport%=�:�_PutName("Data")
zAbort%=�
� �init
�� � �errorbox
�
��setupmenu
�
��
� ș "Wimp_Poll",0,q% � A%
�
Ȏ A% �
� � 0:�_Null
� � 1:�_doWindow
�O � 2:ș"OS_ReadModeVariable",-1,3 � ,,Ncolours%: ș "Wimp_OpenWindow",,q%
� � 3:�_close
� � 6:�_do_click(q%)
� 7:�_PutDown(q%)
� 8:�_KeyPress
� 9:�_SORT_Menu
$ � 17,18:�receive(q%)
. �
8 � �
B
L�
V
`� �_Null
j� A%,B%,C%,D%,X%,Y%,but%
tȗ A%,B%,C%
~
�� RdUD% � C%=0 �
�>� Rd2%=0 � $SPoint%(0,Rd1%)="down" � $SPoint%(1,Rd1%)="up"
�aș"Wimp_ForceRedraw",!Wn%(Rd1%),IX%(Rd2%,Rd1%),IY%(Rd2%,Rd1%),IX1%(Rd2%,Rd1%),IY1%(Rd2%,Rd1%)
�RdUD%=�
��
�
�� RX% �
��rxINIT
�
�empty
��
�ȗ A%,B%,C%
�
� C%=0
ș"Hourglass_Start",10
�
#ș"OS_SerialOp",4,256 � ,B% ;C%
C%=C% � &2
(� C%=0 � �_gath(B%)
2ȗ X%,Y%,but%
<� but%<>0 � B%=&F8 � Abort%
F� B%=&F8 � �tidy
Pș"Hourglass_Off"
Z RX%=�
dș "Wimp_CloseWindow",,RXw%
n�
x�
�
�� �_spath(n$)
�ȕ �n$,".")
�n$=�n$,�(n$)-1)
��
�� �(n$)>10 � n$=�n$,10)
�=n$
�
�� �_GetName
�)� Export% � fn$=$Ename% � fn$=$Sname%
��
�
�� �_SORT_Menu
Ȏ IconMenu% �
. � 0: � !q%=5 � �die � �_Open((!q%)-1)
� 1: Ȏ !q% �
"0 � 3: Mmenu%!100=1:Mmenu%!124=2
,0 � 4: Mmenu%!100=0:Mmenu%!124=3
60 � 5: Mmenu%!148=1:Mmenu%!172=2
@0 � 6: Mmenu%!148=0:Mmenu%!172=3
J � 7: �die
T �
^, � 2: $SPoint%(13,2)=Etype$((!q%)+1)
hW ș"Wimp_ForceRedraw",!Wn%(2),IX%(13,2),IY%(13,2),IX1%(13,2),IY1%(13,2)
r& Exp%(Cexp%,0)=(!q%)+1
|+ � 3: $SPoint%(14,2)=Epay$((!q%)+1)
�W ș"Wimp_ForceRedraw",!Wn%(2),IX%(14,2),IY%(14,2),IX1%(14,2),IY1%(14,2)
�& Exp%(Cexp%,1)=(!q%)+1
��
��
�
�
� �_close
� � q%!0=warningW% � warnOn%=�
�;� q%!0=!Wn0% � wopen%(0)=�:ș"Wimp_GetWindowInfo",,Wn0%
�;� q%!0=!Wn1% � wopen%(1)=�:ș"Wimp_GetWindowInfo",,Wn1%
�;� q%!0=!Wn2% � wopen%(2)=�:ș"Wimp_GetWindowInfo",,Wn2%
�;� q%!0=!Wn3% � wopen%(3)=�:ș"Wimp_GetWindowInfo",,Wn3%
�ș "Wimp_CloseWindow",,q%
��
� �_do_click(q%)
� A%,B%
&i%=q%!16
0Ȏ q%!12 �
:(� warningW%: q%!0=warningW% :�_close
D(� saveW%: Export%=�: �_DoSave(i%)
N)� exportW%: Export%=�: �_DoSave(i%)
X(� -2: � Look first at Icon Bar Click
b � q%!16=smpicon% �
lR � q%!8=2 � q%!8=4 � ș"Wimp_CreateMenu",,menu%,q%!0-74,340:IconMenu%=0
v& � IF q%!8=4 THEN PROC_Open
�
�
�
�
�. � q%!8=4 � �_WinClick(q%!12)
�$ A%=q%!0-96:B%=q%!4
�X � q%!8=2 � �sicon(q%!12):ș"Wimp_CreateMenu",,Mmenu%,A%,B%:IconMenu%=1
��
��
�
�� �sicon(A%)
�� T$,D$,te%
�Ȏ A% �
�A� telW%: $SaveIcon%="file_05A":Stype$="05A":D$=TelFile$:�upT
5� memoW%: $SaveIcon%="file_05B":Stype$="05B":�upM
5 � Memo%=� � D$=ToFile$ �:D$=MemFile$
A� expW%: $SaveIcon%="file_05C":Stype$="05C":D$=ExpFile$:�upE
B� shedW%: $SaveIcon%="file_05D":Stype$="05D":D$=ShedFile$:�upS
*�
47Export%=�:�_PutName(D$):Export%=�:�_PutName(D$+"T")
>current%=�what(A%)
H�
R
\� �what(A%)
f� B%
pȎ A% �
z� telW%: B%=0
�� memoW%: B%=1
�� expW%: B%=2
�� shedW%: B%=3
��
�=B%
�
�� �_WinClick(w%)
�� A%,B%,Y%
�Y%=q%!4
�&� Do the action for a window click
�Ȏ w% �
�� telW%: Ȏ i% �
�/ � 1: �upT: �upTel(1): �pb(0,1)
0 � 0: �upT: �upTel(-1): �pb(0,0)
- � 2: � Ntel%<MaxRec% � �newT
/ �upT: �upTel(1) :�upTn
$ � 3: �cT
.! � 4: �upT:�TXtel
8& � 5: RX%=�:�openRX(0)
B �
L
V
� memoW%:
` Ȏ i% �
j; � 0: �upM: �mup(-1) : �upMbut(1): �pb(1,0)
t; � 1: �upM: �mup(1) : �upMbut(1): �pb(1,1)
~2 � 2: �upM: �newm(1) : �upMbut(0)
� � 3: �cM
� � 4: �upM
�3 � Memo% � �TXmem � �TXtodo
� � 5: RX%=�
�: � Memo% � �openRX(2) � �openRX(3)
�B � 9,10: �upM : Memo%=�(Memo%): �newm(0) : �upMbut(1)
� �
�� expW%: �_Trans(expW%)
� �upE
� Ȏ i% �
�. � 0: �upE:�upExp(-1):�pb(2,0)
�. � 1: �upE:�upExp(1): �pb(2,1)
- � 2: � Nexp%<MaxRec% � �newE
" �upExp(0)
� 3: �cE
! � 4: �upE:�TXexp
(& � 5: RX%=�:�openRX(5)
2a � 15: IconMenu%=�:ș"Wimp_CreateMenu",,Commenu%,IX1%(15,2)+xo%-10,Y%:IconMenu%=2
<` � 16: IconMenu%=�:ș"Wimp_CreateMenu",,Comenu%,IX1%(16,2)+xo%-10,Y%:IconMenu%=3
F- � 17: Exp%(Cexp%,2)=Exp%(Cexp%,2) � 1
PO � Exp%(Cexp%,2)=0 � $SPoint%(17,2)="no" � $SPoint%(17,2)="yes"
ZW ș"Wimp_ForceRedraw",!Wn%(2),IX%(17,2),IY%(17,2),IX1%(17,2),IY1%(17,2)
d �
n� shedW%: �upS
x Ȏ i% �
�1 � 0: �upS: �upShed(-1): �pb(3,0)
�0 � 1: �upS: �upShed(1): �pb(3,1)
� � 2: �upS
�1 � Nshed%<MaxRec% � �newS
�# �upShed(0)
� � 3: �cShed
�" � 4: �upS:�TXshed
�& � 5: RX%=�:�openRX(1)
�8 � 13: Spm%(Cshed%)=�(Spm%(Cshed%)):�_am
�8 � 14: Spm%(Cshed%)=�(Spm%(Cshed%)):�_am
� �
��
��
� �_Open(A%)
currentW%=A%
"� OPEN UP WINDOW HERE
,� wopen%(currentW%) �
6q%!0=!Wn%(currentW%)
@ș"Wimp_GetWindowState",,q%
J6 � q%!28<>-1 � q%!28=-1: ș "Wimp_OpenWindow",,q%
T�
^(ș "Wimp_OpenWindow",,Wn%(currentW%)
hwopen%(currentW%)=�
r�
|�
�
���setupmenu
�� m%
�
�$menu%="Organiser"
�menu%?12=7
�menu%?13=2
�menu%?14=7
�menu%?15=0
�menu%!16=128
�menu%!20=40
�menu%!24=0
�m%=menu%+28
m%!0=0
m%!4=info%
m%!8=(7<<24)� %10001
&$(m%+12)="Info"
0
:
m%+=24
D
m%!0=0
N
m%!4=0
Xm%!8=(7<<24)� %10001
b$(m%+12)="Telephone"
l
v
m%+=24
�
m%!0=0
�
m%!4=0
�m%!8=(7<<24)� %10001
�$(m%+12)="Memo"
�
�
m%+=24
�
m%!0=0
�
m%!4=0
�m%!8=(7<<24)� %10001
�$(m%+12)="Expenses"
�
�
m%+=24
�
m%!0=0
m%!4=0
m%!8=(7<<24)� %10001
$(m%+12)="Schedule"
*
m%+=24
4m%!0=&80
>
m%!4=0
Hm%!8=(7<<24)� %10001
R$(m%+12)="Quit"
\
f$Mmenu%="Organiser"
pMmenu%?12=7
zMmenu%?13=2
�Mmenu%?14=7
�Mmenu%?15=0
�Mmenu%!16=128
�Mmenu%!20=40
�Mmenu%!24=0
�m%=Mmenu%+28
�
m%!0=0
�m%!4=info%
�m%!8=(7<<24)� %10001
�$(m%+12)="Info"
�
�
m%+=24
�
m%!0=0
m%!4=saveW%
m%!8=(7<<24)� %10001
$(m%+12)="Save"
$
.
m%+=24
8
m%!0=2
Bm%!4=exportW%
Lm%!8=(7<<24)� %10001
V$(m%+12)="Export"
`
j
m%+=24
t
m%!0=0
~
m%!4=0
�m%!8=(7<<24)� %10001
�$(m%+12)="TX one"
�
�
m%+=24
�
m%!0=3
�
m%!4=0
�m%!8=(7<<24)� %10001
�$(m%+12)="TX all"
�
�
m%+=24
�
m%!0=1
�
m%!4=0
m%!8=(7<<24)� %10001
$(m%+12)="RX new"
m%+=24
(
m%!0=2
2
m%!4=0
<m%!8=(7<<24)� %10001
F$(m%+12)="RX merge"
P
Z
m%+=24
dm%!0=&80
n
m%!4=0
xm%!8=(7<<24)� %10001
�$(m%+12)="Quit"
�
��
�
�� �_DoSave(i%)
�� i%=0 �
� DragOn%=�
�, ș "Wimp_GetPointerInfo",,q%
�] � Export% � �dragicon(q%!0,q%!4,exportW%,i%) � �dragicon(q%!0,q%!4,saveW%,i%)
� �
�
� i%=2 �
� �_GetName
�G � �fn$,":") � �_Save � �_setupW("Drag the Icon into a Directory")
ș "Wimp_CreateMenu",,-1
�
�
"
,� �receive(q%)
6� A%
@A%=q%!16
JȎ A% �
T� 0:�die
^� 2:� q%!12=saveref% �
h secureF%=q%!36
r% fn$=�sget(q%+44):�_Save
|8 q%!12=saveref%:q%!16=3:q%!0=256:q%!40=&044
�A q%!20=messh%:q%!24=messi%:q%!28=messx%:q%!32=messy%
�7 ș "Wimp_SendMessage",17,q%,messh%,messi%
� �
�
�� 3:n$=�sget(q%+44)
�' sendth%=q%!4:icontype%=q%!40
� myref%=q%!8
�M � ((q%!20=-2 � q%!24=smpicon%) � (q%!20=telW%)) � icontype%=&5A �
� �loadT(n$)
�8 � q%!20=-2 � wopen%(0)=� � �_Open(0): �_Dack
�0 Export%=�:�_PutName(n$):Stype$="05A"
�3 Export%=�:�_PutName(n$+"T"):TelFile$=n$
� �
N � ((q%!20=-2 � q%!24=smpicon%) � (q%!20=memoW%)) � icontype%=&5B �
�loadM(n$)
&7 � q%!20=-2 � wopen%(1)=� � �_Open(1):�_Dack
00 Export%=�:�_PutName(n$):Stype$="05B"
:' Export%=�:�_PutName(n$+"T")
D. � Memo% � MemFile$=n$ � ToFile$=n$
N �
X
bM � ((q%!20=-2 � q%!24=smpicon%) � (q%!20=expW%)) � icontype%=&5C �
l �loadE(n$)
v7 � q%!20=-2 � wopen%(2)=� � �_Open(2):�_Dack
�0 Export%=�:�_PutName(n$):Stype$="05C"
�3 Export%=�:�_PutName(n$+"T"):ExpFile$=n$
� �
�
�N � ((q%!20=-2 � q%!24=smpicon%) � (q%!20=shedW%)) � icontype%=&5D �
� �loadS(n$)
�7 � q%!20=-2 � wopen%(3)=� � �_Open(3):�_Dack
�0 Export%=�:�_PutName(n$):Stype$="05D"
�4 Export%=�:�_PutName(n$+"T"):ShedFile$=n$
� �
�
�� &502: Ȏ � �
�p � q%!32=-2 � q%!36=smpicon%:mes$="This is the Orginiser icon.|MTransfer data with your AM-399C"
:mes$=""
�
� mes$<>"" �
q%!12=q%!8
* $(q%+20)=mes$+�0
4 q%!0=(20+�mes$+4)� � 3
> q%!16=&503
H( ș "Wimp_SendMessage",18,q%,q%!4
R�
\�
f
p� �_Dack
zsendth%=q%!4
�myref%=q%!8
�"ș "Wimp_GetPointerInfo",,q%+8
�q%!28=q%!8
�q%!32=q%!12
�q%!0=(44+�n$+4)� � 3
�q%!12=myref%
�q%!16=4
�q%!36=-1
�q%!40=&FF9
�$(q%+44)=n$+�0
�'ș "Wimp_SendMessage",17,q%,sendth%
��
��
ݤicon
q%!0=-1
$
q%!4=0
.q%!8=10 : � Y DIRECTION
8q%!12=70 : � X DIRECTION
Bq%!16=96
Lq%!20=&2002
V$(q%+24)="!Organiser"
`$ș "Wimp_CreateIcon",,q% � icon%
j
=icon%
t
~� �_setupW(t$)
�`!qw%=warningW%:qw%!4=200:qw%!8=200:qw%!12=200+XQ%:qw%!16=200+YQ%:qw%!20=0:qw%!24=0:qw%!28=-1
�$TextWarn%=t$
�TextWarn%?�(t$)=0
�
warnOn%=�
�ș "Wimp_OpenWindow",,qw%
��
�
�� �errorbox
�
� PROCdie
�ș "Wimp_DragBox",,-1
�2!buffers%=�:$(buffers%+4)=�$+" at line "+Þ+�0
�0ș "Wimp_ReportError",buffers%,1,"Organiser"
�die
�
��die
(*ș "Wimp_CloseDown",taskhand%,!taskid%
2�
<�
F
P.� �dragicon(mousex%,mousey%,handle%,icon%)
Z!� bx%,by%,ix0%,iy0%,ix1%,iy1%
d�getw(handle%)
n�geti(handle%,icon%)
x!q%=handle%:q%!4=5
�>q%!8=bx%+ix0%:q%!12=by%+iy0%:q%!16=bx%+ix1%:q%!20=by%+iy1%
�*q%!24=q%!8-mousex%:q%!28=q%!12-mousey%
�ș "Wimp_DragBox",,q%
�SFLAG%=�
��
�
�� �getw(handle%)
�8!q%=handle%:ș "Wimp_GetWindowState",,q%:�info(q%+4)
��
�
�� �geti(h%,i%)
�-!q%=h%:q%!4=i%:ș "Wimp_GetIconState",,q%
�.ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20
iflags%=q%!24:idata%=q%+28
�
"� �info(p%)
,
� x0%,y0%
6'x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12
@5scx%=p%!16:scy%=p%!20:bhandle%=p%!24:flags%=p%!28
Jbx%=x0%-scx%:by%=y1%-scy%
T�
^
h� �_Save
r
� ch%,pp%
|
F%=�(fn$)
�Ȏ current% �
�� 0: �saveT:TelFile$=fn$
�5� 1: �saveM: � Memo% � MemFile$=fn$ � ToFile$=fn$
�� 2: �saveE:ExpFile$=fn$
�� 3: �saveS:ShedFile$=fn$
��
��#F%
�G� Export% � �("SETTYPE "+fn$+" fff") � �("SETTYPE "+fn$+" "+Stype$)
��_PutName(fn$)
��
�
�� �_PutName(p$)
�'� Export% � $Ename%=p$ � $Sname%=p$
�
� �_PutDown(q%)
&� DragOn% �
0#� SYS "Wimp_GetPointerInfo",,q%
:
�_GetName
D ș "Wimp_GetPointerInfo",,q%
N5messh%=q%!12:messi%=q%!16:messx%=q%!0:messy%=q%!4
X#� � fn$,":") � fn$=�_spath(fn$)
b$(q%+44)=fn$
l?(q%+44+�(fn$))=0
v;q%!20=q%!12:q%!28=q%!0:q%!32=q%!4:q%!36=1024:q%!40=&044
�q%!0=56:q%!12=0:q%!16=1
�-ș "Wimp_SendMessage",17,q%,messh%,messi%
�saveref%=q%!8
�ș "Wimp_CreateMenu",,-1
�
DragOn%=�
��
��
�
�� �_KeyPress
�� C%,D%
�� q%!24=13 �
�
Ȏ q%!0 �
�&� saveW%: Export%=�: �_DoSave(2)
'� exportW%: Export%=�: �_DoSave(2)
� telW% : �upT
3 ș"Wimp_GetCaretPosition",,tblock%
< ș"Wimp_SetCaretPosition",-1,-1,0,0,-1,-1,0
* C%=tblock%!4
4 C%+=1
>+ � C%>13 � C%=8:D%=1 � D%=0
H tblock%!4=C%
Rk ș"Wimp_SetCaretPosition",telW%,C%,tblock%!8,IY%(C%,0)+6,tblock%!16,�(Tel$(Ctel%+D%,C%-8))
\= � Ctel%=Ntel% � D%=1 � Ntel%<MaxRec% � �newT
f% � D%<>0 � �upTel(D%)
p
z� memoW%: �upM
�B � Memo% � C%=Cmem%:D%=Nmem% � C%=Ctodo%:D%=Ntodo%
�D � C%=D% � �newm(1):�upMbut(0) � �mup(1): �upMbut(1)
�� shedW%: �upS
�3 ș"Wimp_GetCaretPosition",,tblock%
� C%=tblock%!4
� C%+=1
�+ � C%>12 � C%=8:D%=1 � D%=0
� tblock%!4=C%
�n ș"Wimp_SetCaretPosition",shedW%,C%,tblock%!8,IY%(C%,3)+6,tblock%!16,�(Shed$(Cshed%+D%,C%-8))
�@ � Cshed%=Nshed% � D%=1 � Nshed%<MaxRec% � �newS
�& � D%<>0 � �upShed(D%)
�
�� expW%: �upE
3 ș"Wimp_GetCaretPosition",,tblock%
C%=tblock%!4
C%+=1
$+ � C%>12 � C%=8:D%=1 � D%=0
.k ș"Wimp_SetCaretPosition",expW%,C%,tblock%!8,IY%(C%,2)+6,tblock%!16,�(Exp$(Cexp%+D%,C%-8))
8= � Cexp%=Nexp% � D%=1 � Nexp%<MaxRec% � �newE
B% � D%<>0 � �upExp(D%)
L
V
`�7
j�
t�
~ș"Wimp_ProcessKey",q%!24
��
��
�
�
� �upM
�G� Memo% � Mem$(Cmem%)=�_GetIcon(1,8) � ToDo$(Ctodo%)=�_GetIcon(1,8)
��
�
�
� �upT
� Tel$(Ctel%,0)=�_GetIcon(0,8)
� Tel$(Ctel%,1)=�_GetIcon(0,9)
�!Tel$(Ctel%,2)=�_GetIcon(0,10)
�!Tel$(Ctel%,3)=�_GetIcon(0,11)
!Tel$(Ctel%,4)=�_GetIcon(0,12)
!Tel$(Ctel%,5)=�_GetIcon(0,13)
�
(
� �upE
2 Exp$(Cexp%,0)=�_GetIcon(2,8)
< Exp$(Cexp%,1)=�_GetIcon(2,9)
F!Exp$(Cexp%,2)=�_GetIcon(2,10)
P!Exp$(Cexp%,3)=�_GetIcon(2,11)
Z!Exp$(Cexp%,4)=�_GetIcon(2,12)
d:� �(Exp$(Cexp%,0))<2 � Exp$(Cexp%,0)="0"+Exp$(Cexp%,0)
n:� �(Exp$(Cexp%,1))<2 � Exp$(Cexp%,1)="0"+Exp$(Cexp%,1)
x�
�
�
� �upS
�� A%
�� A%=0 � 4
�&Shed$(Cshed%,A%)=�_GetIcon(3,A%+8)
��
�@� �(Shed$(Cshed%,0))<2 � Shed$(Cshed%,0)="0"+Shed$(Cshed%,0)
�@� �(Shed$(Cshed%,1))<2 � Shed$(Cshed%,1)="0"+Shed$(Cshed%,1)
�A%=�Shed$(Cshed%,3),":")
�G� �(Shed$(Cshed%,3))=3 � A%=1 �Shed$(Cshed%,3)="00"+Shed$(Cshed%,3)
�F� �(Shed$(Cshed%,3))=4 � A%=2 �Shed$(Cshed%,3)="0"+Shed$(Cshed%,3)
�� �(Shed$(Cshed%,3)) = 5 �
�A%=�(�Shed$(Cshed%,3),2))
K� A%<12 � Spm%(Cshed%)=� � Shed$(Cshed%,3)=�(A%+12)+�Shed$(Cshed%,3),3)
-� A%>11 � Spm%(Cshed%)=� � Spm%(Cshed%)=�
�
"�
,
6� �saveT
@� A%,B%
J�upT
T� Export% �
^+�exportS("Organiser Telephone Numbers")
h�exportS(�(&A))
r�exportS(�(&A))
|� A% = 1 � Ntel%
�� B% = 0 � 5
�� B%=3 � �exportS("Tel. ")
�� B%=4 � �exportS("Fax ")
��exportS(Tel$(A%,B%))
��exportS(�(&A))
��
��exportS(�(&A))
��
��
�$�#F%,Ntel% :� number of numbers
�� A% = 1 � Ntel%
�� B% = 0 � 5
��#F%,Tel$(A%,B%)
�:�
�
�
&
0� �saveM
:� A%,B%
D�upM
N.� Memo% � A%=Nmem% :B%=2 � A%=Ntodo% :B%=3
X� Export% �
bG� Memo% � �exportS("Organiser Memos") � �exportS("Organiser To Do")
l�exportS(�(&A))
v�exportS(�(&A))
�� B%=1 � A%
�6� Memo% � �exportS(Mem$(B%)) � �exportS(ToDo$(B%))
�#�exportS(�(&A)):�exportS(�(&A))
��
��
��#F%,B%
�!�#F%,A% :� number of numbers
�� B% = 1 � A%
�,� Memo% � �#F%,Mem$(B%) � �#F%,ToDo$(B%)
��
��
��
�
� �saveE
� A%,B%,r$
�upE
� Export% �
*"�exportS("Organiser Expenses")
4�exportS(�(&A))
>�exportS(�(&A))
H� A% = 1 � Nexp%
R6�exportS(Exp$(A%,0)+"-"+Exp$(A%,1)+"-"+Exp$(A%,2))
\�exportS(�(&A))
f2�exportS(Etype$(Exp%(A%,0))+" - �"+Exp$(A%,4))
p�exportS(�(&A))
z3� Exp%(A%,2) � r$=" reciept" � r$=" no reciept"
�.�exportS("Payed by "+Epay$(Exp%(A%,1))+r$)
��exportS(�(&A))
��exportS(Exp$(A%,3))
�#�exportS(�(&A)):�exportS(�(&A))
��
��
�$�#F%,Nexp% :� number of numbers
�� A% = 1 � Nexp%
�� B% = 0 � 4
��#F%,Exp$(A%,B%)
��
�� B%=0 � 2
��#F%,Exp%(A%,B%)
�:�
�
�
$
.
8� �saveS
B� A%,B%,t$
L�upS
V� Export% �
`#�exportS("Organiser Scheduler")
j�exportS(�(&A))
t�exportS(�(&A))
~� A% = 1 � Nshed%
�$� Spm%(A%) � t$=" pm" � t$=" am"
�M�exportS(Shed$(A%,0)+"-"+Shed$(A%,1)+"-"+Shed$(A%,2)+" "+Shed$(A%,3)+t$)
��exportS(�(&A))
��exportS(Shed$(A%,4))
�#�exportS(�(&A)):�exportS(�(&A))
��
��
�
�#F%,1
��#F%,Nshed%
�� A%=1 � Nshed%
�� B%=0 � 4
��#F%,Shed$(A%,B%)
�
�#F%,Spm%(A%)
�
�
(�
2
<� �loadT(n$)
F� A%,B%
PF%=�(n$)
Z�#F%,Ntel%
d� A% = 1 � Ntel%
n� B% = 0 � 5
x�#F%,Tel$(A%,B%)
��:�
��#F%
�Ctel%=1
�
�upTel(0)
��upTot(0,�(Ntel%))
��
�
� � �cT
�� A%,B%
�� Ntel%<>1 �
�� A%=Ctel% � Ntel%-1
�� B%=0 � 5
�Tel$(A%,B%)=Tel$(A%+1,B%)
�:�
Ntel%-=1
�upTel(0)
"�upTot(0,�(Ntel%))
,�
6�7
@�
J�
T
^� �loadM(n$)
h� A%,B%
r�upM
|Stype$="05B"
�F%=�(n$)
�B%=�#F%
�� B%=2 � Memo%=� � Memo%=�
�;� Memo% � �#F%,Nmem% :B%=Nmem% � �#F%,Ntodo%: B%=Ntodo%
�� A%=1 � B%
�,� Memo% � �#F%,Mem$(A%) � �#F%,ToDo$(A%)
��
��#F%
��_sput(1,7,�(B%))
��_sput(1,6,"1")
��upMbut(1)
��
�
� �cM
� A%,B%
� Memo% �
& � Nmem%<>1 �
0 � A%=Cmem% � Nmem%-1
: Mem$(A%)=Mem$(A%+1)
D �
N Nmem%-=1
X �_sput(1,7,�(Nmem%))
b �upMbut(0)
l �
v �7
� �
��
� � Ntodo%<>1 �
� � A%=Ctodo% � Ntodo%-1
� ToDo$(A%)=ToDo$(A%+1)
� �
� Ntodo%-=1
� �_sput(1,7,�(Ntodo%))
� �upMbut(0)
� �
� �7
� �
��
!�
!
!� �loadE(n$)
! � A%,B%
!*F%=�(n$)
!4�#F%,Nexp%
!>� A%=1 � Nexp%
!H� B%=0 � 4
!R�#F%,Exp$(A%,B%)
!\�
!f� B%=0 � 2
!p�#F%,Exp%(A%,B%)
!z�
!��
!��#F%
!��upTot(2,�(Nexp%))
!�Cexp%=1
!�
�upExp(0)
!��
!�
!� � �cE
!�� A%,B%
!�� Nexp%<>1 �
!�� A%=Cexp% � Nexp%-1
!�� B%=0 � 4
!�Exp$(A%,B%)=Exp$(A%+1,B%)
"�
"� B%=0 � 2
"Exp%(A%,B%)=Exp%(A%+1,B%)
"$�
".Nexp%-=1
"8�upTot(2,�(Nexp%))
"B
�upExp(0)
"L�
"V�7
"`�
"j�
"t
"~� �loadS(n$)
"�� A%,B%
"�F%=�(n$)
"�B%=�#F%
"��#F%,Nshed%
"�� A%=1 � Nshed%
"�� B%=0 � 4
"��#F%,Shed$(A%,B%)
"��
"��#F%,Spm%(A%)
"��
"��#F%
"��upTot(3,�(Nshed%))
# Cshed%=1
#
�upShed(0)
#�
#
#(� �cShed
#2� A%,B%
#<� Nshed%<>1 �
#F� A%=Cshed% � Nshed%-1
#P� B%=0 � 4
#ZShed$(A%,B%)=Shed$(A%+1,B%)
#d�
#nSpm%(A%)=Spm%(A%+1)
#x�
#�
Nshed%-=1
#��upShed(0)
#��upTot(3,�(Nshed%))
#��
#��7
#��
#��
#�
#�� �upTot(w%,v$)
#��_sput(w%,7,v$)
#�Kș"Wimp_ForceRedraw",!Wn%(w%),IX%(7,w%),IY%(7,w%),IX1%(7,w%),IY1%(7,w%)
#��
#�
$� �upTn
$�_sput(0,7,�(Ntel%))
$Fș"Wimp_ForceRedraw",!Wn%(0),IX%(7,0),IY%(7,0),IX1%(7,0),IY1%(7,0)
$"�
$,
$6� �upTel(i%)
$@&ș"Wimp_GetCaretPosition",,tblock%
$J
Ctel%+=i%
$T� Ctel%>Ntel% � Ctel%=Ntel%
$^� Ctel%<1 � Ctel%=1
$h� A%=0 � 5
$r!�_sput(0,A%+8,Tel$(Ctel%,A%))
$|(� tblock%!0=telW% � tblock%!4=A%+8 �
$�_ș"Wimp_SetCaretPosition",telW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,�(Tel$(Ctel%,A%))
$��
$��
$��_sput(0,6,�(Ctel%))
$��
$�
$�� �upShed(i%)
$�&ș"Wimp_GetCaretPosition",,tblock%
$�Cshed%+=i%
$�#� Cshed%>Nshed% � Cshed%=Nshed%
$�� Cshed%<1 � Cshed%=1
$�� A%=0 � 4
$�#�_sput(3,A%+8,Shed$(Cshed%,A%))
%)� tblock%!0=shedW% � tblock%!4=A%+8 �
%bș"Wimp_SetCaretPosition",shedW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,�(Shed$(Cshed%,A%))
%�
%&�
%0�_sput(3,6,�(Cshed%))
%:�_am
%D�
%N
%X� �upExp(i%)
%b� A%
%l&ș"Wimp_GetCaretPosition",,tblock%
%v
Cexp%+=i%
%�� Cexp%>Nexp% � Cexp%=Nexp%
%�� Cexp%<1 � Cexp%=1
%�� A%=0 � 4
%�!�_sput(2,A%+8,Exp$(Cexp%,A%))
%�(� tblock%!0=expW% � tblock%!4=A%+8 �
%�_ș"Wimp_SetCaretPosition",expW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,�(Exp$(Cexp%,A%))
%��
%��
%��_sput(2,6,�(Cexp%))
%�@� Exp%(Cexp%,2) � $SPoint%(17,2)="yes" � $SPoint%(17,2)="no"
%�($SPoint%(13,2)=Etype$(Exp%(Cexp%,0))
%�'$SPoint%(14,2)=Epay$(Exp%(Cexp%,1))
%�Jș"Wimp_ForceRedraw",!Wn%(2),IX%(17,2),IY%(17,2),IX1%(17,2),IY1%(17,2)
&Jș"Wimp_ForceRedraw",!Wn%(2),IX%(14,2),IY%(14,2),IX1%(14,2),IY1%(14,2)
&Jș"Wimp_ForceRedraw",!Wn%(2),IX%(13,2),IY%(13,2),IX1%(13,2),IY1%(13,2)
&�
&
&*� �upMbut(R%)
&4� L%
&>
� Memo% �
&H$SPoint%(9,1)="radioon"
&R$SPoint%(10,1)="radiooff"
&\ � R%=0 � Cmem%=Nmem%:�mup(0)
&f�_sput(1,8,Mem$(Cmem%))
&pL%=�(Mem$(Cmem%))
&z�
&�$SPoint%(10,1)="radioon"
&�$SPoint%(9,1)="radiooff"
&�"� R%=0 � Ctodo%=Ntodo%:�mup(0)
&��_sput(1,8,ToDo$(Ctodo%))
&�L%=�(ToDo$(Ctodo%))
&��
&�&ș"Wimp_GetCaretPosition",,tblock%
&�&� tblock%!0=memoW% � tblock%!4=8 �
&�Qș"Wimp_SetCaretPosition",memoW%,tblock%!4,tblock%!8,tblock%!12,tblock%!16,L%
&��
&�Jș"Wimp_ForceRedraw",!Wn%(1),IX%(10,1),IY%(10,1),IX1%(10,1),IY1%(10,1)
&�Fș"Wimp_ForceRedraw",!Wn%(1),IX%(9,1),IY%(9,1),IX1%(9,1),IY1%(9,1)
&�I� SYS"Wimp_ForceRedraw",!Wn%(1),IX%(8,1),IY%(8,1),IX1%(8,1),IY1%(8,1)
'�
'
'ݤsget(x%)
'$� x$
'.!ȕ ?x%>&1F x$+=�(?x%):x%+=1:�
'8=x$
'B
'Lݤpg(n%,W%)
'V� A$
'`A$=�sget(SPoint%(n%,W))
'j
=�(A$)
't
'~� �_GetIcon(W%,In%)
'�� T%,A%,R$
'�R$=�sget(SPoint%(In%,W%))
'�=R$
'�
'�� �_sput(W%,In%,X$)
'�� A%,x%
'�x%=SPoint%(In%,W%)
'�A%=1
'�� �(X$)<>0 �
'�ȕ A%<>(�(X$)+1)
'�?x%=�(�X$,A%,1))
'� x%+=1
( A%+=1
(
�
(�
( ?x%=0
((Sș"Wimp_ForceRedraw",!Wn%(W%),IX%(In%,W%),IY%(In%,W%),IX1%(In%,W%),IY1%(In%,W%)
(2�
(<
(F� �init
(P� A%,B%
(ZToFile$="ToDo"
(dMemFile$="Memo"
(nTelFile$="Tel"
(xExpFile$="Exp"
(�ShedFile$="Shed"
(�� A%=0 � 5
(�Tel$(1,A%)=" "
(��
(�� A%=1 � MaxRec%
(�Mem$(A%)=""
(�ToDo$(A%)=""
(�Spm%(A%)=�
(�� B%=0 � 4
(�Shed$(A%,B%)=""
(��
(�� B%=0 � 2
(�Exp$(A%,B%)=""
)Exp%(A%,B%)=1
)�
)Exp$(A%,3)=""
)"�
),� A%=1 � 4
)6� Epay$(A%)
)@�
)J�expcat
)T
�imset
)^� Cash,Cheque,Card,Other
)h�
)r
)|
� �expcat
)�� A%,B%,F%
)�F%=�("<ORG$Dir>.ExpCat")
)�A%=1
)��
)�Etype$(A%)=""
)��
)�B%=�#F%
)�*� B%>&1F � Etype$(A%)=Etype$(A%)+�(B%)
)�� B%<&20
)� A%+=1
)�
� A%=9
)��#F%
)��
*
*� �imset
*� A%,B%
*&� A%=0 � 7
*0"$(TypeM%+(A%*25))=Etype$(A%+1)
*:�
*D� A%=0 � 3
*N $(PayM%+(A%*25))=Epay$(A%+1)
*X�
*b$Commenu%="Type"
*lCommenu%?12=7
*vCommenu%?13=2
*�Commenu%?14=7
*�Commenu%?15=0
*�Commenu%!16=288
*�Commenu%!20=40
*�Commenu%!24=0
*�m%=Commenu%+28
*�
*�� A%=0 � 7
*�
m%!0=0
*�
m%!4=0
*�m%!8=(7<<24)� %100010001
*�m%!12=TypeM%+(A%*25)
*�m%!16=0
+m%!20=25
+
m%+=24
+�
+
m%-=24
+*m%!0=&80
+4
+>$Comenu%="Payment"
+HComenu%?12=7
+RComenu%?13=2
+\Comenu%?14=7
+fComenu%?15=0
+pComenu%!16=288
+zComenu%!20=40
+�Comenu%!24=0
+�m%=Comenu%+28
+�
+�� A%=0 � 3
+�
m%!0=0
+�
m%!4=0
+�m%!8=(7<<24)� %100010001
+�m%!12=PayM%+(A%*25)
+�m%!16=0
+�m%!20=25
+�
m%+=24
+��
+�
m%-=24
,m%!0=&80
,
,�
,$
,.� �newT
,8� A%
,BNtel%+=1:�upTot(0,�(Ntel%))
,L� A%=0 � 5
,VTel$(Ntel%,A%)=""
,`�
,j�
,t
,~� �newS
,�� A%
,�!Nshed%+=1:�upTot(3,�(Nshed%))
,�� A%=0 � 4
,�Shed$(Nshed%,A%)=""
,��
,�Spm%(Nshed%)=Spm%(Nshed%-1)
,��
,�
,�� �newE
,�� A%
,�Nexp%+=1:�upTot(2,�(Nexp%))
,�� A%=0 � 4
- Exp$(Nexp%,A%)=""
-
�
-!Exp%(Nexp%,0)=Exp%(Nexp%-1,0)
-!Exp%(Nexp%,1)=Exp%(Nexp%-1,1)
-(!Exp%(Nexp%,2)=Exp%(Nexp%-1,2)
-2�
-<
-F� �mup(I%)
-P
� Memo% �
-Z
Cmem%+=I%
-d� Cmem%>Nmem% � Cmem%=Nmem%
-n� Cmem%<1 � Cmem%=1
-x�_sput(1,6,�(Cmem%))
-��
-�Ctodo%+=I%
-�#� Ctodo%>Ntodo% � Ctodo%=Ntodo%
-�� Ctodo%<1 � Ctodo%=1
-��_sput(1,6,�(Ctodo%))
-��
-��
-�
-�� �newm(I%)
-�
� Memo% �
-�
Nmem%+=I%
-�#� Nmem%>MaxRec% � Nmem%=MaxRec%
-�+� Mmen%<MaxRec% � I%>0 � Mem$(Nmem%)=""
.� Nmem%<1 � Nmem%=1
.�_sput(1,7,�(Nmem%))
.�
."Ntodo%+=I%
.,%� Ntodo%>MaxRec% � Ntodo%=MaxRec%
.6.� Ntodo%<MaxRec% � I%>0 � ToDo$(Ntodo%)=""
.@� Ntodo%<1 � Ntodo%=1
.J�_sput(1,7,�(Ntodo%))
.T�
.^�
.h
.r
� �_am
.|� Spm%(Cshed%) �
.�$SPoint%(14,3)="radioon"
.�$SPoint%(13,3)="radiooff"
.��
.�$SPoint%(13,3)="radioon"
.�$SPoint%(14,3)="radiooff"
.��
.�Jș"Wimp_ForceRedraw",!Wn%(3),IX%(14,3),IY%(14,3),IX1%(14,3),IY1%(14,3)
.�Jș"Wimp_ForceRedraw",!Wn%(3),IX%(13,3),IY%(13,3),IX1%(13,3),IY1%(13,3)
.��
.�
.�� �_Trans(wh%)
.�!q%=wh%
.� ș "Wimp_GetWindowState",,q%
/(xo%=q%!4-q%!20+8:yo%=q%!16-q%!24-290
/XO%=q%!4:YO%=q%!16
/�
/&
/0� �pb(w%,i%)
/::� i%=0 � $SPoint%(0,w%)="pdown" � $SPoint%(1,w%)="pup"
/DOș"Wimp_ForceRedraw",!Wn%(w%),IX%(i%,w%),IY%(i%,w%),IX1%(i%,w%),IY1%(i%,w%)
/NRdUD%=�
/XRd1%=w%:Rd2%=i%
/b�
/l
/v� �openRX(a%)
/�� X%,Y%,B%,A%
/�ȗ X%,Y%,B%
/�X%-=140:Y%-=90
/�$RXw%!0=rx1W%:RXw%!4=X%:RXw%!8=Y%
/�@RXw%!12=306+X%:RXw%!16=168+Y%:RXw%!20=0:RXw%!24=0:RXw%!28=-1
/�ș "Wimp_OpenWindow",,RXw%
/�RXtype%=a%
/�
CkB%=0
/� NbRX%=0:RXcount%=0:RXpram%=0
/�Y%=Mmenu%!148
/�Ȏ RXtype% �
/�1� 0: � Y%=1 � RXrecord%=1 � RXrecord%=Ntel%+1
/�C� 1: � Y%=1 � Cshed%=RXrecord%:RXrecord%=1 � RXrecord%=Nshed%+1
01� 2: � Y%=1 � RXrecord%=2 � RXrecord%=Nmem%+1
02� 3: � Y%=1 � RXrecord%=2 � RXrecord%=Ntodo%+1
0A� 5: � Y%=1 � Cexp%=RXrecord%:RXrecord%=1 � RXrecord%=Nexp%+1
0 �
0*�
04
0>� �acCK(A%)
0H � A%>&7F � A%=A% � &FFFFFF00
0RCkB%=CkB%-A%
0\�
0f
0p
� �rxINIT
0zș"OS_SerialOp",0,&34,&FF00
0�ș"OS_SerialOp",1,0
0�ș"OS_SerialOp",5,12
0�ș"OS_SerialOp",6,12
0�ș"OS_Byte",2,2
0�Abort%=�
0�
CkB%=0
0��
0�
0�� �_gath(b%)
0�� NbRX%<>0 � �acCK(b%)
0�NbRX%+=1
0�H� NbRX%=2 � b%<>RXtype% � �_setupW("wrong type of data"):Abort%=�:�7
0�� NbRX%=3 � RXcount%=1
1� RXcount%<>0 �
1b%=�transRX(b%)
1Ȏ RXtype% �
1$� 0: � b%<&F8 �
1.p � RXcount%=1 � Tel$(RXrecord%,RXpram%)=�(b%) � Tel$(RXrecord%,RXpram%)=Tel$(RXrecord%,RXpram%)+�(b%)
18 RXcount%+=1
1B
�
1L �rxcont(b%)
1V
�
1`
1j� 1: � b%<&F8 �
1ts � RXcount%=1 � Shed$(RXrecord%,RXpram%)=�(b%) � Shed$(RXrecord%,RXpram%)=Shed$(RXrecord%,RXpram%)+�(b%)
1~ RXcount%+=1
1�
�
1� �rxcont(b%)
1�
�
1�
1�� 2: � b%<&F8 �
1�X � RXcount%=1 � Mem$(RXrecord%)=�(b%) � Mem$(RXrecord%)=Mem$(RXrecord%)+�(b%)
1� RXcount%+=1
1�
�
1� �rxcont(b%)
1�
�
1�
1�� 3: � b%<&F8 �
2 [ � RXcount%=1 � ToDo$(RXrecord%)=�(b%) � ToDo$(RXrecord%)=ToDo$(RXrecord%)+�(b%)
2
RXcount%+=1
2
�
2 �rxcont(b%)
2(
�
22
2<� 5: � b%<&F8 �
2Fp � RXcount%=1 � Exp$(RXrecord%,RXpram%)=�(b%) � Exp$(RXrecord%,RXpram%)=Exp$(RXrecord%,RXpram%)+�(b%)
2P RXcount%+=1
2Z
�
2d �rxcont(b%)
2n
�
2x
2��
2��
2��
2�
2�� �rxcont(b%)
2�, � b%=&FF � RXcount%=1:RXpram%+=1
2�8 � b%=&FE � RXpram%=0:RXrecord%+=1:RXcount%=1
2�M � RXrecord%>MaxRec% � RXrecord%=MaxRec%:�_setupW("too much data")
2��
2�
2�� �tidy
2�� B%,C%,D%
2�B%=�getS
3CkB%=CkB% � &FF
3H� B%<>CkB% � �_setupW("Check byte was "+�(B%)+" should be "+�(CkB%))
3B%=�getS
3"4� B%<>&1A � �_setupW("Last byte 1A not correct")
3,� Abort%=� �
36Ȏ RXtype% �
3@?� 0: Ctel%=1:�upTel(0):Ntel%=RXrecord%-1:�upTot(0,�(Ntel%))
3J/� 1: Nshed%=RXrecord%-1:�upTot(3,�(Nshed%))
3T � C%=Cshed% � Nshed%
3^# D%=�(�Shed$(C%,0),9,2))
3h- � D%>12 � Spm%(C%)=� � Spm%(C%)=�
3r# Shed$(C%,4)=Shed$(C%,1)
3|= Shed$(C%,3)=�Shed$(C%,0),9,2)+":"+�Shed$(C%,0),2)
3�' Shed$(C%,2)=�Shed$(C%,0),4)
3�) Shed$(C%,1)=�Shed$(C%,0),5,2)
3�) Shed$(C%,0)=�Shed$(C%,0),7,2)
3�
�
3� Cshed%=1
3� �upShed(0)
3�*� 2: Cmem%=1:�mup(0):Nmem%=RXrecord%-1
3�7 � (Mmenu%!148)=1 � �cM � �upTot(1,�(Nmem%))
3�,� 3: Ctodo%=1:�mup(0):Ntodo%=RXrecord%-1
3�8 � (Mmenu%!148)=1 � �cM � �upTot(1,�(Ntodo%))
3�-� 5: Nexp%=RXrecord%-1:�upTot(2,�(Nexp%))
3� � C%=Cexp% � Nexp%
3�: � Exp$(C%,4)="N" � Exp%(C%,2)=� � Exp%(C%,2)=�
4$ Exp%(C%,0)=�(Exp$(C%,1))
4$ Exp%(C%,1)=�(Exp$(C%,3))
4! Exp$(C%,3)=Exp$(C%,5)
4&! Exp$(C%,4)=Exp$(C%,2)
40% Exp$(C%,2)=�Exp$(C%,0),4)
4:' Exp$(C%,1)=�Exp$(C%,0),5,2)
4D' Exp$(C%,0)=�Exp$(C%,0),7,2)
4N
�
4X Cexp%=1
4b �upExp(0)
4l�
4v�
4��
4�
4�� �getS
4�� B%,C%
4��
4�#ș"OS_SerialOp",4,256 � ,B% ;C%
4�C%=C% � &2
4�
� C%=0
4�=B%
4�
4�� �empty
4�� B%,C%
4��
5#ș"OS_SerialOp",4,256 � ,B% ;C%
5C%=C% � &2
5� C%<>0
5 �
5*
54� �acCK(A%)
5> � A%>&7F � A%=A% � &FFFFFF00
5HCkB%=CkB%-A%
5R�
5\
5f� �TXmem
5p� A%,B%,C%
5z�rxINIT
5�ș"Hourglass_Start",10
5�
�TXb(&50)
5��TXb(2):�acCK(2)
5�C%=Cmem%
5�(� Mmenu%!100=0 � B%=Nmem% � B%=Cmem%
5�� A%=C% � B%
5��TXs(Mem$(A%))
5��TXb(&FE):�acCK(&FE)
5��
5�
�finishTX
5��
5�
5�
� �TXtodo
6� A%,B%,C%
6�rxINIT
6ș"Hourglass_Start",10
6$
�TXb(&50)
6.�TXb(3):�acCK(3)
68
C%=Ctodo%
6B*� Mmenu%!100=0 � B%=Ntodo% � B%=Ctodo%
6L� A%=C% � B%
6V�TXs(ToDo$(A%))
6`�TXb(&FE):�acCK(&FE)
6j�
6t
�finishTX
6~�
6�
6�� �TXtel
6�� A%,B%,C%,D%
6��rxINIT
6�ș"Hourglass_Start",10
6�
�TXb(&50)
6��TXb(0):�acCK(0)
6�C%=Ctel%
6�(� Mmenu%!100=0 � B%=Ntel% � B%=Ctel%
6�� A%=C% � B%
6�� D%=0 � 5
6��TXs(Tel$(A%,D%))
7 �TXb(&FF):�acCK(&FF)
7
�
7�TXb(&FE):�acCK(&FE)
7�
7(
�finishTX
72�
7<
7F� �TXexp
7P� A%,B%,C%,D%,t$
7Z�rxINIT
7dș"Hourglass_Start",10
7n
�TXb(&50)
7x�TXb(5):�acCK(5)
7�C%=Cexp%
7�(� Mmenu%!100=0 � B%=Nexp% � B%=Cexp%
7�� A%=C% � B%
7�2�TXs(Exp$(A%,2)+Exp$(A%,1)+Exp$(A%,0)) :� Date
7��TXb(&FF):�acCK(&FF)
7� �TXs(�(Exp%(A%,0))) : � Type
7��TXb(&FF):�acCK(&FF)
7�&�TXs(Exp$(A%,4)) : � Ammount
7��TXb(&FF):�acCK(&FF)
7�&�TXs(�(Exp%(A%,1))) : � Pay method
7��TXb(&FF):�acCK(&FF)
7�4� Exp%(A%,2) � �TXs("Y") � �TXs("N") : � Reciept
7��TXb(&FF):�acCK(&FF)
8#�TXs(Exp$(A%,3)) : � Note
8�TXb(&FE):�acCK(&FE)
8�
8"
�finishTX
8,�
86
8@
� �TXshed
8J� A%,B%,C%,D%,t$
8T�rxINIT
8^ș"Hourglass_Start",10
8h
�TXb(&50)
8r�TXb(1):�acCK(1)
8|
C%=Cshed%
8�*� Mmenu%!100=0 � B%=Nshed% � B%=Cshed%
8�� A%=C% � B%
8�V� �(Shed$(A%,3)) = 5 � t$=�Shed$(A%,3),2)+�Shed$(A%,3),2) � t$=�makeT(Shed$(A%,3))
8�0�TXs(Shed$(A%,2)+Shed$(A%,1)+Shed$(A%,0)+t$)
8��TXb(&FF):�acCK(&FF)
8��TXs(Shed$(A%,4))
8��TXb(&FE):�acCK(&FE)
8��
8�
�finishTX
8��
8�
8�� �makeT(a$)
8�� t$,L%,C%
9 t$=a$
9C%=�a$,":")
9L%=�(a$)
9&
� C%<>0 �
90ȕ L%<5
9:
a$="0"+a$
9D L%+=1
9N�
9XC%=�a$,":")
9bt$=�a$,C%-1)+�a$,L%-C%)
9l�
9vȕ L%<4
9�
t$="0"+t$
9� L%+=1
9��
9��
9�=t$
9�
9�� �finishTX
9�� Abort% �
9�:�_setupW("Buffer overflow, hardware not connected"):�7
9��
9��TXb(&F8):�acCK(&F8)
9��TXb(CkB%)
9�
�TXb(&1A)
:�
:ș"Hourglass_Off"
:�
:
:*
:4� �TXs(s$)
:>� A%,B%
:H� A%=1 � �(s$)
:RB%=�(�s$,A%,1))
:\B%=�transTX(B%)
:f�TXb(B%):�acCK(B%)
:p�
:z�
:�
:�� �TXb(b%)
:�� T%
:�� �(Abort%) �
:�T%=�+50
:��
:�ș"OS_SerialOp",3,b% � ;C%
:�
C%=C% � 2
:�� C%=0 � �>T%
:�� C%<>0 � Abort%=�
:��
:��
:�
;� �exportS(s$)
;� A%,C%
;� A%=1 � �(s$)
;$C%=�(�s$,A%,1))
;.� C%=172 � C%=&A
;8�#F%,C%
;B�
;L�
;V
;`� �transTX(A%)
;j� B%
;t B%=A%
;~� A%=172 � B%=&13
;�� A%=&60 � B%=&26
;�� A%=&7C � B%=&21
;�� A%=&3A � B%=&21
;�*� A%>&60 � A%<>172 � B%=A% � &5F:A%=B%
;�� A%<&30 �
;�Ȏ A% �
;�� &20 :B%=&20
;�� &24 :B%=&27
;�� &2F :B%=&24
;�� &2E :B%=&29
;�� &2D :B%=&28
;�� &27 :B%=&22
<