350 : 360 *FX119 370 MODE7 380 PROCa 390 PROCb 400 PROCc 410 : 440 ONERRORPROCd:e$=" ":GOTO460 450 e$=FNf 460 IFe$=" "ANDFNg=8THENe$="A" 470 IFe$=" "ANDFNg<>8THENe$="D" 480 IFe$="A"ORe$="a"THENPROCh("ADFS"):PROCh("MOUNT 0") 490 IFe$="D"ORe$="d"THENPROCh("DISC"):PROCh("DRIVE 0") 500 ONERRORIFERR=17THENPROCh("FX3,0"):PROCh("FX229,1"):GOTO560ELSEPROCh("FX3,0"):VDU6:CLOSE#0:MODE7:REPORT:PRINT" at line ";ERL:PROCh("KEY0 LIST "+STR$(ERL)+"|M"):PROCh("FX21"):PROCh("FX138,0,128"):PROCi:END 510 IFFNj("!Mess")THENPRINT'CHR$(128+k%);"This disc has a !Mess file. You may";CHR$(128+k%);"wish to read the accompanying"'CHR$(128+k%);"article before continuing." 520 IFFNj("!Mess")THENPRINT'CHR$(128+k%);"Press SPACE to continue...":PROCh("FX21"):REPEATUNTILGET=32 530 IFNOTFNj("!Mesg")THENPROClELSEPROCm 540 IFn%<>0THENGOTO440 550 : 560 REPEAT 570 o%=FNp 580 IFo%=1THENPROCq 590 IFo%=2THENPROCr 600 IFo%=3THENPROCs 610 IFo%=4THENPROCt 620 IFo%=5THENPROCu 630 IFo%=6THENPROCv 640 UNTILo%=7 650 MODE7 660 PROCi 670 END 680 : 690 DEFPROCb 700 *FX225,3 710 *FX226,3 720 *FX227,3 730 *FX229,1 740 *FX4,1 750 ENDPROC 760 : 770 DEFPROCi 780 *FX225,1 790 *FX226,128 800 *FX227,144 810 *FX229,0 820 *FX4,0 830 ENDPROC 840 : 850 DEFPROCc 860 ONERRORMODE7:CLOSE#0:REPORT:PRINT" at line ";ERL:PROCi:END 870 w%=4096 880 x%=25 890 DIMy%(x%),z%(6),aa%256,ba%w% 900 PROCca 910 PROCda 920 PROCea 930 ENDPROC 940 : 950 DEFPROCa 960 VDU23,1,0;0;0;0; 970 ENDPROC 980 : 990 DEFPROCfa 1000 VDU23,1,1;0;0;0; 1010 ENDPROC 1020 : 1030 DEFFNS 1040 ="SendMes" 1050 : 1060 DEFPROCca 1070 ga%=6 1080 ha%=3 1090 ia%=3 1100 k%=7 1110 l%=7 1120 ja%=3 1130 ka%=7 1140 la%=4 1150 ma%=3 1160 na%=7 1170 oa%=7 1180 pa%=2 1190 qa%=3 1200 ra%=3 1210 sa%=7 1220 ta%=3 1230 ua%=7 1240 va%=7 1250 wa%=7 1260 xa%=3 1270 xa%=3 1280 xa%=3 1290 v%=7 1300 ya%=3 1310 za%=3 1320 ab%=7 1330 ENDPROC 1340 : 1350 DEFPROCda 1360 LOCALbb% 1370 VDU26,12 1380 PRINT" ";CHR$(144+ga%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ"; 1390 PRINTCHR$(144+ga%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(144+ga%);"ÿ"; 1400 PRINTCHR$(144+ga%);"ÿ";CHR$(144+ha%);"êë ·Ž€µ ê£àðàðê ° °ð°ðàð   ";CHR$(144+ga%);"ÿ"; 1410 PRINTCHR$(144+ga%);"ÿ";CHR$(144+ha%);"ê뢡·Žµ· ¢ëêêê€ê¡µŽµœµµê® ";CHR$(144+ga%);"ÿ"; 1420 PRINTCHR$(144+ga%);"";CHR$(144+ha%);"¢£ £ ¡£¡ ¢£¢£¢ ¢¡££¡¡¡¡¢£   ";CHR$(145);" "; 1430 FORbb%=1TO18 1440 PRINTCHR$(144+ga%);"ÿ";SPC(36);CHR$(144+ga%);"ÿ"; 1450 NEXT 1460 PRINTCHR$(144+ga%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ"; 1470 VDU28,2,22,37,5 1480 ENDPROC 1490 : 1500 DEFPROCh($aa%) 1510 LOCALX%,Y% 1520 X%=aa%MOD256 1530 Y%=aa%DIV256 1540 CALL&FFF7 1550 ENDPROC 1560 : 1570 DEFFNf 1600 PROCia 1610 PRINT'CHR$(128+k%);"Please insert your submission disc"'CHR$(128+k%);"into drive 0. This disc must be in"'CHR$(128+k%);"the drive at all times when using"'CHR$(128+k%);"this program." 1620 PRINT'CHR$(128+k%);"Press A if this disc is in ADFS"'CHR$(128+k%);"format, D if it is in DFS format or";CHR$(128+k%);"SPACE to use the current format. If";CHR$(128+k%);"in doubt, press SPACE." 1630 =FNcb("AaDd ",FALSE) 1640 : 1650 DEFPROCm 1660 PROCdb 1670 IFn%=0THENENDPROC 1680 PRINT'CHR$(128+k%);"This program can only handle"'CHR$(128+k%);"version 0 files." 1690 PRINT'CHR$(128+k%);"Press SPACE to continue..." 1700 *FX21 1710 REPEATUNTILGET=32 1720 ENDPROC 1730 : 1740 DEFPROCia 1750 CLS 1760 PRINTTAB(7,0);CHR$(128+ia%);"Messaging system 1.07" 1770 ENDPROC 1780 : 1790 DEFFNg 1800 LOCALA%,Y% 1810 A%=0 1820 Y%=0 1830 =(USR(&FFDA)AND&FF) 1840 : 1850 DEFFNj(eb$) 1860 LOCALfb% 1870 fb%=OPENIN(eb$) 1880 IFfb%=0THEN=FALSE 1890 CLOSE#fb% 1900 =TRUE 1910 : 1920 DEFPROCl 1930 LOCALfb%,gb% 1940 PROCia 1950 PRINTTAB(0,2);CHR$(128+l%);"Please enter your three-digit user"'CHR$(128+l%);"ID:";CHR$(128+ja%); 1960 hb$=FNib(FNja(3,3)) 1970 PRINT''CHR$(128+l%);"Please enter your name as you wish"'CHR$(128+l%);"it to appear in message headings:"'';:gb%=VPOS 1980 PRINT''CHR$(128+l%);"(just press RETURN if you wish to"'CHR$(128+l%);"remain anonymous)" 1990 PRINTTAB(0,gb%);CHR$(128+ja%); 2000 jb$=FNja(0,20) 2010 fb%=OPENOUT("!Mesg") 2020 BPUT#fb%,0:n%=0 2030 PRINT#fb%,hb$ 2040 PRINT#fb%,LEFT$(jb$+STRING$(20," "),20) 2050 kb%=PTR#fb% 2060 PRINT#fb%,0 2070 CLOSE#fb% 2080 ENDPROC 2090 : 2100 DEFPROCdb 2110 LOCALfb% 2120 fb%=OPENIN("!Mesg") 2130 n%=BGET#fb% 2140 IFn%<>0THENCLOSE#fb%:ENDPROC 2150 INPUT#fb%,hb$ 2160 INPUT#fb%,jb$ 2170 REPEAT 2180 IFRIGHT$(jb$,1)=" "THENjb$=LEFT$(jb$,LEN(jb$)-1) 2190 UNTILRIGHT$(jb$,1)<>" " 2200 kb%=PTR#fb% 2210 CLOSE#fb% 2220 ENDPROC 2230 : 2240 DEFFNib(lb$) 2250 LOCALmb$,nb%,ob% 2260 mb$="" 2270 FORnb%=1TOLEN(lb$) 2280 ob%=ASC(MID$(lb$,nb%,1)) 2290 IFob%>=ASC"a"ANDob%<=ASC"z"THENob%=ob%-32 2300 mb$=mb$+CHR$(ob%) 2310 NEXT 2320 =mb$ 2330 : 2340 DEFFNja(pb%,qb%) 2350 LOCALnb%,rb%,lb$,e% 2360 nb%=POS 2370 rb%=VPOS 2380 lb$="" 2390 REPEAT 2400 REPEAT 2410 *FX21 2420 e%=GET 2430 UNTILe%=13OR(e%>=32ANDe%<=127) 2440 IFe%=127ANDLEN(lb$)>0THENVDU127:lb$=LEFT$(lb$,LEN(lb$)-1) 2450 IFe%<>127ANDe%<>13ANDLEN(lb$)=pb%) 2470 =lb$ 2480 : 2490 DEFFNp 2500 LOCALsb%,e% 2510 PROCia 2520 PRINTTAB(3,2);CHR$(128+ka%);"Start a new message";TAB(32,2);"N" 2530 PRINTTAB(3,3);CHR$(128+ka%);"View/edit/print messages";TAB(32,3);"V" 2540 PRINTTAB(3,4);CHR$(128+ka%);"Print all the messages";TAB(32,4);"P" 2550 PRINTTAB(3,5);CHR$(128+ka%);"Tidy the messages";TAB(32,5);"T" 2560 PRINTTAB(3,6);CHR$(128+ka%);"Re-enter your user ID/name";TAB(32,6);"R" 2570 PRINTTAB(3,7);CHR$(128+ka%);"Undelete deleted messages";TAB(32,7);"U" 2580 PRINTTAB(3,8);CHR$(128+ka%);"Quit to BASIC";TAB(32,8);"Q" 2590 PRINTTAB(0,10);CHR$(128+na%);"Use the cursor keys to move the bar";CHR$(128+na%);"and press RETURN to select, or use"'CHR$(128+na%);"the appropriate key shortcut." 2600 sb%=1 2610 PRINTTAB(1,sb%+1);CHR$(128+la%);CHR$(157);CHR$(128+ma%);TAB(35,sb%+1);CHR$156; 2620 REPEAT 2630 REPEAT 2640 *FX21 2650 e%=GET 2660 UNTILINSTR("NVPTRUQnvtruq"+CHR$(138)+CHR$(139)+CHR$(13),CHR$(e%))>0 2670 PRINTTAB(1,sb%+1);CHR$(128+ka%);" " 2680 IFe%=138THENIFsb%<7THENsb%=sb%+1 2690 IFe%=139THENIFsb%>1THENsb%=sb%-1 2700 IFe%>=ASC"a"ANDe%<=ASC"z"THENe%=e%-32 2710 IFe%=ASC"N"THENsb%=1 2720 IFe%=ASC"V"THENsb%=2 2730 IFe%=ASC"P"THENsb%=3 2740 IFe%=ASC"T"THENsb%=4 2750 IFe%=ASC"R"THENsb%=5 2760 IFe%=ASC"U"THENsb%=6 2770 IFe%=ASC"Q"THENsb%=7 2780 PRINTTAB(1,sb%+1);CHR$(128+la%);CHR$(157);CHR$(128+ma%);TAB(35,sb%+1);CHR$156; 2790 UNTILe%=13 2800 =sb% 2810 : 2820 DEFPROCq 2830 LOCALnb%,rb%,tb$,ub%,vb$ 2840 PROCia 2850 fb%=OPENIN("!Mesg") 2860 PTR#fb%=kb% 2870 INPUT#fb%,ub% 2880 CLOSE#fb% 2890 IFub%=x%THENPRINTCHR$(128+oa%);"Sorry - you already have ";x%'CHR$(128+oa%);"messages!"''CHR$(128+oa%);"Press SPACE to return to the menu..";:PROCh("FX21"):REPEATUNTILGET=32:ENDPROC 2900 PROCwb 2910 PRINTTAB(0,2);CHR$(128+oa%);"Please enter the user ID of the"'CHR$(128+oa%);"recipient:";CHR$(128+ja%); 2920 nb%=POS 2930 rb%=VPOS 2940 PRINT''CHR$(128+oa%);"(Use 999 for all users and CCC for"'CHR$(128+oa%);"program/article comments)" 2950 PRINTTAB(nb%,rb%); 2960 *FX229,0 2970 tb$=FNib(FNja(3,3)) 2980 *FX229,1 2990 IFtb$="999"THENvb$=" (all members)"ELSEvb$="" 3000 IFtb$<>"CCC"THENPROCxb(CHR$(128+pa%)+"To: "+CHR$(128+qa%)+tb$+vb$,ba%):PROCxb(CHR$(128+pa%)+"Subject:"+CHR$(128+qa%),ba%+80) 3010 IFtb$="CCC"THENPROCxb(CHR$(128+pa%)+"Subject:"+CHR$(128+qa%),ba%+40) 3020 PROCxb(CHR$(128+pa%)+"From: "+CHR$(128+qa%)+hb$,ba%+(40*ABS(tb$<>"CCC"))) 3030 IFjb$<>""THENPROCxb("("+jb$+")",ba%+(40*ABS(tb$<>"CCC"))+14) 3040 tb$=FNyb(tb$,10,2+(tb$="CCC")) 3050 PROCzb(tb$) 3060 PROCda 3070 ENDPROC 3080 : 3090 DEFPROCxb(ac$,bc%) 3100 LOCALcc% 3110 FORcc%=bc%TObc%+LEN(ac$)-1 3120 ?cc%=ASC(MID$(ac$,cc%-bc%+1,1)) 3130 NEXT 3140 ENDPROC 3150 : 3160 DEFPROCwb 3170 !&70=ba% 3180 !&72=ba%+w%+1 3190 CALLwb 3200 ENDPROC 3210 : 3220 DEFFNyb(tb$,dc%,ec%) 3230 LOCALe%,fc%,gc% 3240 VDU26,12 3250 hc%=0 3260 ic%=FALSE 3270 jc%=0 3280 kc%=FALSE 3290 PROClc(hc%) 3300 PROCmc(ic%) 3310 PROCfa 3320 REPEAT 3330 PRINTTAB(dc%,ec%); 3340 REPEAT 3350 *FX21 3360 IFjc%=0THENe%=GETELSEe%=BGET#jc%:kc%=INKEY(-113) 3370 IFkc%ANDjc%>0THENCLOSE#jc%:jc%=0:kc%=FALSE 3390 UNTIL(e%>=3ANDe%<=13)ORe%=20ORe%=27ORe%>=32 3400 fc%=INKEY(-1) 3410 gc%=INKEY(-2) 3420 IFjc%<>0THENIFEOF#jc%THENCLOSE#jc%:jc%=0 3430 IFjc%<>0ANDe%=10THENe%=13 3440 IFNOTic%ANDe%>=3ANDe%<=12THENdc%=FNnc(dc%,ec%,hc%,e%,fc%,gc%) 3450 IFe%=20THENjc%=FNoc(tb$):PROCmc(ic%) 3460 IFe%=12ANDNOTfc%ANDNOTgc%THENic%=NOTic%:PROCa:PROCmc(ic%):PROCfa 3470 IFNOTic%ANDe%=10ANDNOTfc%ANDgc%THENPROCa:PROCpc(ec%,hc%):VDU26,12:PROClc(hc%):PROCmc(ic%):PROCfa 3480 IFNOTic%ANDe%=11ANDNOTfc%ANDgc%THENPROCa:PROCqc(ec%,hc%):VDU26,12:PROClc(hc%):PROCmc(ic%):PROCfa 3490 IFNOTic%ANDe%=12ANDfc%ANDNOTgc%THENPROCa:tb$=FNrc(tb$):VDU26,12:PROClc(hc%):PROCmc(ic%):PROCfa 3500 IFNOTic%AND(e%>=32ANDe%<=126)THENVDUe%:ba%?FNsc(dc%,ec%,hc%)=e%:dc%=dc%+1 3510 IFic%ANDINSTR("QWASZX",CHR$(e%AND&DF))<>0THENba%?FNsc(dc%,ec%,hc%)=FNtc(ba%?FNsc(dc%,ec%,hc%),e%AND&DF) 3520 IFe%=127ANDdc%>0THENdc%=dc%-1:PROCuc(dc%,ec%,hc%):PROCa:VDU31,0,ec%:PROCvc(hc%+ec%):PROCfa 3530 IFe%=13THENdc%=0:ec%=ec%+1 3540 IFe%=136THENdc%=dc%-1:IFfc%THENdc%=0 3550 IFe%=137THENdc%=dc%+1:IFfc%THENdc%=39 3560 IFe%=138THENec%=ec%+1:IFfc%THENec%=ec%-1:PROCa:hc%=FNwc(hc%+12):PROClc(hc%):PROCmc(ic%):PROCfa 3570 IFe%=139THENec%=ec%-1:IFfc%THENec%=ec%+1:PROCa:hc%=FNwc(hc%-12):PROClc(hc%):PROCmc(ic%):PROCfa 3580 IFdc%<0THENdc%=39:ec%=ec%-1 3590 IFec%<0THENec%=0:IFhc%>0THENPROCa:hc%=hc%-1:VDU28,0,23,39,0,30,11,26,30:PROCvc(hc%):PROCmc(ic%):PROCfa 3600 IFdc%>39ANDFNxc(ba%?FNsc(39,ec%,hc%))AND(e%<136ORe%>139)THENPROCyc 3610 IFdc%>39THENdc%=0:ec%=ec%+1 3620 IFec%>23THENec%=23:IFhc%<(((w%-40)DIV40)-23)THENPROCa:hc%=hc%+1:VDU28,0,23,39,0,31,0,23,10,26,31,0,23:PROCvc(hc%+23):PROCmc(ic%):PROCfa 3630 IF(e%=13OR(e%=32ANDdc%=0))ANDFNzc(ba%?FNsc(0,ec%-1,hc%))THENad%=ba%?FNsc(0,ec%-1,hc%):PRINTTAB(dc%,ec%);CHR$(ad%);:ba%?FNsc(0,ec%,hc%)=ad%:dc%=dc%+1 3640 UNTILe%=27 3650 IFjc%>0THENCLOSE#jc% 3660 PROCa 3670 =tb$ 3680 : 3690 DEFPROCyc 3700 LOCAL 3710 IFFNsc(0,ec%+1,hc%)>=(w%-40)THENENDPROC 3720 bd$="" 3730 dc%=dc%-1 3740 sc%=FNsc(dc%,ec%,hc%) 3750 REPEAT 3760 bd$=CHR$(ba%?sc%)+bd$ 3770 dc%=dc%-1 3780 sc%=sc%-1 3790 UNTILNOTFNxc(ba%?sc%) 3800 PRINTTAB(dc%+1,ec%); 3810 FORcd%=sc%+1TOFNsc(39,ec%,hc%) 3820 ba%?cd%=32:VDU32 3830 NEXT 3840 ec%=ec%+1 3850 dc%=0 3860 IFFNzc(ba%?FNsc(0,ec%-1,hc%))THENad%=ba%?FNsc(0,ec%-1,hc%):PRINTTAB(dc%,ec%);CHR$(ad%);:ba%?FNsc(0,ec%,hc%)=ad%:dc%=dc%+1 3870 PRINTTAB(dc%,ec%);bd$; 3880 dd%=FNsc(dc%,ec%,hc%) 3890 FORed%=0TOLEN(bd$)-1 3900 ba%?(ed%+dd%)=ASC(MID$(bd$,ed%+1,1)) 3910 NEXT 3920 dc%=dc%+LEN(bd$) 3930 ENDPROC 3940 : 3950 DEFFNzc(ad%) 3960 =(ad%>=129ANDad%<=135) 3970 : 3980 DEFFNxc(ad%) 3990 =(ad%>=33ANDad%<=126) 4000 : 4010 DEFPROCpc(ec%,hc%) 4020 LOCALfd%,gd% 4030 fd%=FNhd 4040 IFfd%>=(((w%-40)DIV40)*40)THENPROCd:ENDPROC 4050 IFFNsc(0,ec%,hc%)>fd%THENENDPROC 4060 !&70=ba%+FNsc(0,ec%,hc%)-40 4070 !&72=ba%+(fd%DIV40)*40 4080 CALLpc 4090 FORgd%=FNsc(0,ec%,hc%)TOFNsc(39,ec%,hc%) 4100 ba%?gd%=32 4110 NEXT 4120 ENDPROC 4130 : 4140 DEFPROCqc(ec%,hc%) 4150 LOCALfd%,gd% 4160 fd%=FNhd 4170 IFFNsc(0,ec%,hc%)>fd%THENENDPROC 4180 IFfd%>=FNsc(0,ec%,hc%)ANDfd%<=FNsc(39,ec%,hc%)THENFORgd%=FNsc(0,ec%,hc%)TOFNsc(39,ec%,hc%):ba%?gd%=32:NEXT:ENDPROC 4190 !&70=ba%+FNsc(0,ec%,hc%) 4200 !&72=ba%+(fd%DIV40)*40 4210 CALLqc 4220 FORgd%=(fd%DIV40)*40TO(fd%DIV40)*40+40 4230 ba%?gd%=32 4240 NEXT 4250 ENDPROC 4260 : 4270 DEFPROCd 4280 SOUND1,-10,101,5 4290 ENDPROC 4300 : 4310 DEFPROCuc(dc%,ec%,hc%) 4320 !&70=ba%+FNsc(0,ec%,hc%) 4330 ?&72=dc%+1 4340 CALLuc 4350 ENDPROC 4360 : 4370 DEFPROCid(dc%,ec%,hc%) 4380 IFdc%=39THENba%?FNsc(39,ec%,hc%)=32:ENDPROC 4390 !&70=ba%+FNsc(0,ec%,hc%) 4400 ?&72=dc% 4410 CALLid 4420 ENDPROC 4430 : 4440 DEFFNwc(hc%) 4450 IFhc%<0THENhc%=0 4460 IFhc%>(((w%-40)DIV40)-23)THENhc%=(((w%-40)DIV40)-23) 4470 =hc% 4480 : 4490 DEFFNnc(dc%,ec%,hc%,e%,fc%,gc%) 4500 LOCALad% 4510 IFe%>=3ANDe%<=9ANDNOTfc%ANDNOTgc%THENVDU126+e%:ba%?FNsc(dc%,ec%,hc%)=126+e%:dc%=dc%+1 4520 IFe%>=3ANDe%<=9ANDfc%ANDNOTgc%THENVDU142+e%:ba%?FNsc(dc%,ec%,hc%)=142+e%:dc%=dc%+1 4530 IFNOTfc%ANDgc%ANDe%=12THENPROCa:PROCjd:VDU26,12:PROClc(hc%):PROCmc(ic%):PROCfa 4540 IFe%>=10ANDe%<=11ANDNOTfc%ANDNOTgc%THENVDU126+e%:ba%?FNsc(dc%,ec%,hc%)=126+e%:dc%=dc%+1 4550 IFe%>=10ANDe%<=11ANDfc%ANDNOTgc%THENVDU167-e%:ba%?FNsc(dc%,ec%,hc%)=167-e%:dc%=dc%+1 4560 IFe%>=3ANDe%<=4ANDNOTfc%ANDgc%THENVDU150+e%:ba%?FNsc(dc%,ec%,hc%)=150+e%:dc%=dc%+1 4570 IFe%>=5ANDe%<=6ANDNOTfc%ANDgc%THENVDU153+e%:ba%?FNsc(dc%,ec%,hc%)=153+e%:dc%=dc%+1 4580 IFe%>=7ANDe%<=8ANDNOTfc%ANDgc%THENVDU148-e%:ba%?FNsc(dc%,ec%,hc%)=148-e%:dc%=dc%+1 4590 IFe%=9ANDNOTfc%ANDgc%THENPROCid(dc%,ec%,hc%):PROCa:VDU31,0,ec%:PROCvc(hc%+ec%):PROCfa 4600 =dc% 4610 : 4620 DEFPROCmc(ic%) 4630 IFNOTic%THENPRINTTAB(0,24);CHR$(128+ra%);"Press CTRL";CHR$(129);"f9";CHR$(128+ra%);"for help... ";ELSEPRINTTAB(0,24);CHR$(128+ra%);"Press";CHR$(129);"f9";CHR$(128+ra%);"to exit pixel editing..."; 4640 ENDPROC 4650 : 4660 DEFFNoc(tb$) 4670 LOCALkd$,fb% 4680 PRINTTAB(0,24);CHR$(128+ra%);"Load text file - are you sure?";CHR$(128+ja%); 4690 IFNOTFNldTHEN=0 4700 PRINTTAB(0,24);SPC(35);TAB(0,24);CHR$(128+ra%);"Filename:";CHR$(128+ja%); 4710 kd$=FNja(0,20) 4720 IFkd$=""THEN=0 4750 ONERRORPROCa:PROCd:PROCzb(tb$):PROCda:GOTO500 4760 fb%=OPENIN(kd$) 4770 IFfb%=0THENPROCd 4780 =fb% 4790 : 4800 DEFPROClc(hc%) 4810 PRINTTAB(0,0); 4820 !&70=ba%+FNsc(0,0,hc%) 4830 !&72=ba%+FNsc(0,0,hc%)+960 4840 CALLlc 4850 ENDPROC 4860 : 4870 DEFPROCvc(hc%) 4880 !&70=ba%+FNsc(0,0,hc%) 4890 CALLvc 4900 ENDPROC 4910 : 4920 DEFFNsc(dc%,ec%,hc%) 4930 =dc%+(ec%+hc%)*40 4940 : 4950 DEFFNtc(ad%,e%) 4960 IFad%>128THENad%=ad%-128 4970 ad%=ad%-32 4980 z%(1)=(ad%AND1)=1 4990 z%(2)=(ad%AND2)=2 5000 z%(3)=(ad%AND4)=4 5010 z%(4)=(ad%AND8)=8 5020 z%(5)=(ad%AND16)=16 5030 z%(6)=(ad%AND64)=64 5040 IFe%=ASC"Q"THENz%(1)=NOTz%(1) 5050 IFe%=ASC"W"THENz%(2)=NOTz%(2) 5060 IFe%=ASC"A"THENz%(3)=NOTz%(3) 5070 IFe%=ASC"S"THENz%(4)=NOTz%(4) 5080 IFe%=ASC"Z"THENz%(5)=NOTz%(5) 5090 IFe%=ASC"X"THENz%(6)=NOTz%(6) 5100 ad%=160+ABS(z%(1))+ABS(z%(2))*2+ABS(z%(3))*4+ABS(z%(4))*8+ABS(z%(5))*16+ABS(z%(6))*64 5110 VDUad%,8 5120 =ad% 5130 : 5140 DEFPROCzb(tb$) 5150 LOCALfb%,ub%,A%,X%,Y% 5160 VDU26 5170 PRINTTAB(0,24);CHR$(128+ya%);"Please wait, saving message... "; 5180 fb%=OPENUP("!Mesg") 5190 PTR#fb%=kb% 5200 INPUT#fb%,ub% 5210 PTR#fb%=kb% 5220 PRINT#fb%,ub%+1 5230 PTR#fb%=EXT#fb% 5240 PRINT#fb%,tb$ 5250 BPUT#fb%,0 5260 aa%?0=fb% 5270 aa%!1=ba% 5280 aa%!5=FNhd+1 5290 A%=2 5300 X%=aa%MOD256 5310 Y%=aa%DIV256 5320 CALL&FFD1 5330 BPUT#fb%,152 5340 CLOSE#fb% 5350 ENDPROC 5360 : 5370 DEFFNhd 5380 !&70=ba%+w%+1 5390 !&72=ba% 5400 CALLhd 5410 !&72=0 5420 =(!&70)-ba% 5430 : 5440 DEFPROCr 5450 LOCALfb%,ub%,md%,nd%,od%,hc%,e%,oa%,tb$,ld%,pd% 5460 fb%=OPENUP("!Mesg") 5470 PTR#fb%=kb% 5480 INPUT#fb%,ub% 5490 IFub%=0THENCLOSE#fb%:ENDPROC 5500 PROCia 5510 PRINTTAB(0,2);CHR$(128+ab%);"Please wait, loading message..." 5520 md%=1 5530 pd%=TRUE 5540 REPEAT 5550 IFNOTpd%THENVDU26:PRINTTAB(0,24);CHR$(128+za%);"Please wait, loading message... "; 5560 pd%=FALSE 5570 REPEAT 5580 nd%=PTR#fb% 5590 INPUT#fb%,tb$ 5600 od%=BGET#fb% 5610 PROCqd(fb%) 5620 UNTILod%=0 5630 y%(md%)=nd% 5640 VDU26,12 5650 hc%=0 5660 PROClc(hc%) 5670 PROCrd(tb$,md%,ub%) 5680 REPEAT 5690 REPEAT 5700 *FX21 5710 e%=GET 5720 IFe%>=ASC"a"ANDe%<=ASC"z"THENe%=e%-32 5730 UNTIL(e%>=136ANDe%<=139)ORe%=27ORe%=ASC"E"ORe%=ASC"D"ORe%=ASC"P"ORe%=3 5740 fc%=INKEY(-1) 5750 IFe%=3THENPROCsd:VDU26,12:PROClc(hc%):PROCrd(tb$,md%,ub%) 5760 oa%=FALSE 5770 IFe%=136ANDmd%>1THENmd%=md%-1:PTR#fb%=y%(md%):oa%=TRUE 5780 IFe%=137ANDmd%0THENhc%=hc%-1:VDU28,0,23,39,0,30,11,26,30:PROCvc(hc%) 5800 IFe%=139ANDfc%THENhc%=FNwc(hc%-12):VDU26,12:PROClc(hc%):PROCrd(tb$,md%,ub%) 5810 IFe%=138ANDNOTfc%ANDhc%<(((w%-40)DIV40)-23)THENhc%=hc%+1:VDU28,0,23,39,0,31,0,23,10,26,31,0,23:PROCvc(hc%+23) 5820 IFe%=138ANDfc%THENhc%=FNwc(hc%+12):VDU26,12:PROClc(hc%):PROCrd(tb$,md%,ub%) 5830 IFe%=ASC"D"THENPRINTTAB(0,24);CHR$(128+xa%);"Are you sure you want to delete this? ";:ld%=FNld:PROCrd(tb$,md%,ub%):IFNOTld%THENe%=-1 5840 IFe%=ASC"E"THENPRINTTAB(0,24);CHR$(128+xa%);"Are you sure you want to edit this? ";:ld%=FNld:PROCrd(tb$,md%,ub%):IFNOTld%THENe%=-1 5850 IFe%=ASC"P"THENPRINTTAB(0,24);CHR$(128+xa%);"Are you sure you want to print this?";:ld%=FNld:PROCrd(tb$,md%,ub%):IFNOTld%THENe%=-1 5860 UNTILe%=27ORoa%ORe%=ASC"E"ORe%=ASC"D"ORe%=ASC"P" 5870 UNTILe%=27ORe%=ASC"E"ORe%=ASC"D"ORe%=ASC"P" 5880 IFe%=ASC"D"THENPTR#fb%=y%(md%):PROCtd(fb%) 5890 IFe%=ASC"E"THENPTR#fb%=y%(md%):PROCtd(fb%):CLOSE#fb%:tb$=FNyb(tb$,0,4):PROCzb(tb$) 5900 IFe%=ASC"P"THENPROCud 5910 IFe%<>ASC"E"THENCLOSE#fb% 5920 PROCda 5930 ENDPROC 5940 : 5950 DEFFNld 5960 LOCALe$ 5970 REPEAT 5980 e$=CHR$(GETAND&DF) 5990 UNTILe$="Y"ORe$="N" 6000 =(e$="Y") 6010 : 6020 DEFPROCqd(fb%) 6030 LOCALA%,X%,Y% 6040 aa%?0=fb% 6050 aa%!1=ba% 6060 aa%!5=w%+1 6070 A%=4 6080 X%=aa%MOD256 6090 Y%=aa%DIV256 6100 CALL&FFD1 6110 !&70=ba%-1 6120 !&72=ba%+w%+1 6130 CALLvd 6140 !&76=0 6150 PTR#fb%=PTR#fb%-((w%-aa%!5)-(!&74-ba%)) 6160 ENDPROC 6170 : 6180 DEFPROCrd(wd$,xd%,yd%) 6190 LOCALzd$ 6200 IFxd%>9ANDyd%>9THENzd$=""ELSEzd$=" " 6210 PRINTTAB(0,24);CHR$(128+ra%);"Message ";xd%;" of ";yd%;",";zd$;"to ";wd$;" -";CHR$(129);"f0";CHR$(128+ra%);"for help "; 6220 ENDPROC 6230 : 6240 DEFPROCtd(fb%) 6250 LOCALub%,ae$ 6260 INPUT#fb%,ae$ 6270 BPUT#fb%,255 6280 PTR#fb%=kb% 6290 INPUT#fb%,ub% 6300 PTR#fb%=kb% 6310 PRINT#fb%,ub%-1 6320 ENDPROC 6330 : 6340 DEFPROCs 6350 LOCALfb%,ub%,wd$,od% 6360 PROCia 6370 fb%=OPENIN("!Mesg") 6380 PTR#fb%=kb% 6390 INPUT#fb%,ub% 6400 IFub%=0THENCLOSE#fb%:PRINTTAB(0,2);CHR$(128+ua%);"There are no messages to print."''CHR$(128+ua%);"Press SPACE to return to the menu.":PROCh("FX21"):REPEATUNTILGET=32:ENDPROC 6410 PRINTTAB(0,2);CHR$(128+ua%);"Are you sure you want to print the"'CHR$(128+ua%);"messages?";CHR$(128+ja%);:IFNOTFNldTHENCLOSE#fb%:ENDPROC 6420 PRINT"Yes" 6430 REPEAT 6440 INPUT#fb%,wd$ 6450 od%=BGET#fb% 6460 PROCqd(fb%) 6470 IFod%=0THENPROCud 6480 UNTILEOF#fb% 6490 CLOSE#fb% 6500 ENDPROC 6510 : 6520 DEFPROCud 6530 LOCALsc%,be%,ce% 6540 *FX3,10 6550 sc%=0 6560 FORbe%=0TO(FNhdDIV40) 6570 be$="" 6580 FORce%=0TO39 6590 de%=ba%?sc% 6600 sc%=sc%+1 6610 IFde%>=32ANDde%<=126THENVDUde%ELSEVDU32 6620 NEXT 6630 PRINT 6640 NEXT 6650 PRINT 6660 *FX3 6670 ENDPROC 6680 : 6690 DEFPROCt 6700 LOCALee%,fe%,ge$,ub%,wd$,od%,de%,n% 6710 PROCia 6720 PRINTTAB(0,2);CHR$(128+va%);"Are you sure you want to tidy the"'CHR$(128+va%);"messages?";CHR$(128+ja%);:IFNOTFNldTHENENDPROC 6730 PRINT"Yes" 6740 PRINT'CHR$(128+va%);"Please wait, tidying messages..." 6750 VDU21 6760 IFFNj("!MesgB")THENOSCLI"DELETE !MesgB" 6770 *RENAME !Mesg !MesgB 6780 ee%=OPENIN("!MesgB") 6790 fe%=OPENOUT("!Mesg") 6800 n%=BGET#ee% 6810 BPUT#fe%,n% 6820 INPUT#ee%,ge$ 6830 PRINT#fe%,ge$ 6840 INPUT#ee%,ge$ 6850 PRINT#fe%,ge$ 6860 INPUT#ee%,ub% 6870 PRINT#fe%,ub% 6880 IFEOF#ee%THENVDU6:CLOSE#ee%:CLOSE#fe%:PROCh("DELETE !MesgB"):ENDPROC 6890 REPEAT 6900 INPUT#ee%,wd$ 6910 od%=BGET#ee% 6920 IFod%=0THENPRINT#fe%,wd$:BPUT#fe%,od%:REPEAT:de%=BGET#ee%:BPUT#fe%,de%:UNTILde%=152ELSEREPEATUNTILBGET#ee%=152 6930 UNTILEOF#ee% 6940 CLOSE#ee% 6950 CLOSE#fe% 6960 *DELETE !MesgB 6970 VDU6 6980 ENDPROC 6990 : 7000 DEFPROCsd 7010 PROCda 7020 PROCia 7030 PRINTTAB(0,2);CHR$(128+sa%);"Use the cursor up and down keys to"'CHR$(128+sa%);"scroll through the displayed"'CHR$(128+sa%);"message. Use SHIFT to scroll"'CHR$(128+sa%);"quickly." 7040 PRINT'CHR$(128+sa%);"Use the cursor left and right keys"'CHR$(128+sa%);"to move between messages." 7050 PRINT'CHR$(128+sa%);"Press D to delete the current"'CHR$(128+sa%);"message, E to edit it or P to print";CHR$(128+sa%);"it." 7060 PRINT'CHR$(128+sa%);"Press ESCAPE to return to the menu." 7070 PRINTTAB(0,16);CHR$(128+ta%);"Press ESCAPE to return to"'CHR$(128+ta%);"viewing..."; 7080 *FX21 7090 REPEATUNTILGET=27 7100 ENDPROC 7110 : 7120 DEFPROCjd 7130 LOCALe% 7140 PROCda 7150 PROCia 7160 PRINTTAB(0,2);CHR$(128+sa%);"Use the cursor keys to move around"'CHR$(128+sa%);"the message. Use SHIFT to move more";CHR$(128+sa%);"quickly. Use the keyboard to enter"'CHR$(128+sa%);"text and DELETE to delete"'CHR$(128+sa%);"characters." 7170 PRINT'CHR$(128+sa%);"Use";CHR$(129);"f0-f6";CHR$(128+sa%);"to set the text colour" 7180 PRINTCHR$(128+sa%);"Use SHIFT";CHR$(129);"f0-f6";CHR$(128+sa%);"to set the graphic"'CHR$(128+sa%);"colour" 7190 PRINTCHR$(128+sa%);"Use";CHR$(129);"f7/f8";CHR$(128+sa%);"for steady/flashing" 7200 PRINTCHR$(128+sa%);"Use SHIFT";CHR$(129);"f7/f8";CHR$(128+sa%);"for coloured/black"'CHR$(128+sa%);"background" 7210 PRINTTAB(0,16);CHR$(128+ta%);"Press CTRL";CHR$(129);"f9";CHR$(128+ta%);"for more help or"'CHR$(128+ta%);"press ESCAPE to continue editing.."; 7220 REPEAT 7230 *FX21 7240 e%=GET 7250 UNTIL(e%=12ANDINKEY(-2))ORe%=27 7260 IFe%=27THENENDPROC 7270 PROCia 7280 PRINTTAB(0,2);CHR$(128+sa%);"Use";CHR$(129);"f9";CHR$(128+sa%);"to design a graphic block" 7290 PRINTCHR$(128+sa%);"Use CTRL";CHR$(129);"f0/f1";CHR$(128+sa%);"to set contiguous/"'CHR$(128+sa%);"separated graphics" 7300 PRINTCHR$(128+sa%);"Use CTRL";CHR$(129);"f2/f3";CHR$(128+sa%);"to hold/release"'CHR$(128+sa%);"graphics" 7310 PRINTCHR$(128+sa%);"Use CTRL";CHR$(129);"f4/f5";CHR$(128+sa%);"for double/single"'CHR$(128+sa%);"height" 7320 PRINTCHR$(128+sa%);"Use SHIFT";CHR$(129);"f9";CHR$(128+sa%);"to change the"'CHR$(128+sa%);"recipient of the message" 7330 PRINTCHR$(128+sa%);"Use CTRL";CHR$(129);"f6";CHR$(128+sa%);"to insert a space" 7340 PRINTCHR$(128+sa%);"Use CTRL";CHR$(129);"f7/f8";CHR$(128+sa%);"to insert/delete a"'CHR$(128+sa%);"line" 7350 PRINTTAB(0,16);CHR$(128+ta%);"Press CTRL";CHR$(129);"f9";CHR$(128+ta%);"for more help or"'CHR$(128+ta%);"press ESCAPE to continue editing.."; 7360 REPEAT 7370 *FX21 7380 e%=GET 7390 UNTIL(e%=12ANDINKEY(-2))ORe%=27 7400 IFe%=27THENENDPROC 7410 PROCia 7420 PRINTTAB(0,2);CHR$(128+sa%);"Use CTRL-T to read in an ASCII text";CHR$(128+sa%);"file" 7430 PRINT'CHR$(128+sa%);"Press ESCAPE to finish editing" 7440 PRINTTAB(0,17);CHR$(128+ta%);"Press ESCAPE to continue editing.."; 7450 *FX21 7460 REPEATUNTILGET=27 7470 ENDPROC 7480 : 7490 DEFPROCea 7500 DIMad%308 7510 PROCh("LOAD SendMC "+STR$~ad%) 7520 wb=ad% 7530 lc=ad%+&20 7540 hd=ad%+&41 7550 vc=ad%+&63 7560 vd=ad%+&70 7570 uc=ad%+&AB 7580 id=ad%+&BE 7590 pc=ad%+&D0 7600 qc=ad%+&102 7610 ENDPROC 7620 : 7630 DEFPROCu 7640 LOCALfb%,he$,ie$ 7650 PROCia 7660 PRINTTAB(0,2);CHR$(128+l%);"Your user ID is currently entered"'CHR$(128+l%);"as ";hb$ 7670 PRINT'CHR$(128+l%);"Please enter your three-digit user"'CHR$(128+l%);"ID:";CHR$(128+ja%); 7680 *FX229,0 7690 he$=FNib(FNja(3,3)) 7700 *FX229,1 7710 PRINT''CHR$(128+l%);"Your name is currently entered as"'CHR$(128+l%);jb$ 7720 PRINT'CHR$(128+l%);"Please enter your name:"'CHR$(128+ja%); 7730 *FX229,0 7740 ie$=FNja(0,20) 7750 *FX229,1 7760 hb$=he$ 7770 jb$=ie$ 7780 fb%=OPENUP("!Mesg") 7790 PTR#fb%=0 7800 BPUT#fb%,0 7810 PRINT#fb%,hb$ 7820 PRINT#fb%,LEFT$(jb$+STRING$(20," "),20) 7830 CLOSE#fb% 7840 ENDPROC 7850 : 7860 DEFFNrc(tb$) 7870 LOCALnb%,rb% 7880 PROCda 7890 PROCia 7900 PRINTTAB(0,2);CHR$(128+wa%);"This message is currently going"'CHR$(128+wa%);"to ";tb$ 7910 PRINT'CHR$(128+wa%);"Please enter the user ID of the"'CHR$(128+wa%);"recipient:";CHR$(128+ja%); 7920 nb%=POS 7930 rb%=VPOS 7940 PRINT''CHR$(128+wa%);"(Use 999 for all users and CCC for"'CHR$(128+wa%);"program comments)" 7950 PRINTTAB(nb%,rb%); 7960 =FNib(FNja(3,3)) 7970 : 7980 DEFPROCv 7990 LOCALfb%,ub%,wd$,od%,qb% 8000 PROCia 8010 PRINTTAB(0,2);CHR$(128+v%);"Are you sure you want to undelete?" 8020 IFNOTFNldTHENENDPROC 8030 PRINT'CHR$(128+v%);"Please wait, undeleting messages..." 8040 qb%=FALSE 8050 fb%=OPENUP("!Mesg") 8060 PTR#fb%=kb% 8070 INPUT#fb%,ub% 8080 IFEOF#fb%THENCLOSE#fb%:ENDPROC 8090 REPEAT 8100 INPUT#fb%,wd$ 8110 od%=BGET#fb% 8120 IFNOTqb%ANDod%=255THENPTR#fb%=PTR#fb%-1:BPUT#fb%,0:ub%=ub%+1 8130 REPEATUNTILBGET#fb%=152 8140 IFub%=x%ANDNOTEOF#fb%THENqb%=TRUE 8150 UNTILEOF#fb% 8160 PTR#fb%=kb% 8170 PRINT#fb%,ub% 8180 CLOSE#fb% 8190 IFqb%THENPRINT'CHR$(128+v%);"Warning - not all of the messages"'CHR$(128+v%);"have been recovered."''CHR$(128+v%);"Press SPACE to return to the menu..";:PROCh("FX21"):REPEATUNTILGET=32 8200 ENDPROC 8210 : 8220 DEFFNcb(je$,ke%) 8230 LOCALe$ 8240 REPEAT 8250 *FX21 8260 IFke%THENe$=CHR$(GETAND&DF)ELSEe$=GET$ 8270 UNTILINSTR(je$,e$)<>0 8280 =e$