320 : 330 *FX119 340 MODE7 350 PROCa 360 PROCb 370 PROCc 380 : 410 ONERRORPROCd:e$=" ":GOTO430 420 e$=FNf 430 IFe$=" "ANDFNg=8THENe$="A" 440 IFe$=" "ANDFNg<>8THENe$="D" 450 IFe$="A"ORe$="a"THENPROCh("ADFS"):PROCh("MOUNT 0") 460 IFe$="D"ORe$="d"THENPROCh("DISC"):PROCh("DRIVE 0") 470 ONERRORIFERR=17THENPROCh("FX229,1"):GOTO530ELSEVDU6:CLOSE#0:MODE7:REPORT:PRINT" at line ";ERL:PROCh("KEY0 LIST "+STR$(ERL)+"|M"):PROCh("FX21"):PROCh("FX138,0,128"):PROCi:END 480 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." 490 IFFNj("!Mess")THENPRINT'CHR$(128+k%);"Press SPACE to continue...":PROCh("FX21"):REPEATUNTILGET=32 500 IFNOTFNj("!Mesg")THENPROClELSEPROCm 510 IFn%<>0THENGOTO410 520 : 530 REPEAT 540 o%=FNp 550 IFo%=1THENPROCq 560 IFo%=2THENPROCr 570 IFo%=3THENPROCs 580 IFo%=4THENPROCt 590 IFo%=5THENPROCu 600 UNTILo%=6 610 MODE7 620 PROCi 630 END 640 : 650 DEFPROCb 660 *FX225,3 670 *FX226,3 680 *FX227,3 690 *FX229,1 700 *FX4,1 710 ENDPROC 720 : 730 DEFPROCi 740 *FX225,1 750 *FX226,128 760 *FX227,144 770 *FX229,0 780 *FX4,0 790 ENDPROC 800 : 810 DEFPROCc 820 ONERRORMODE7:CLOSE#0:REPORT:PRINT" at line ";ERL:PROCi:END 830 v%=4096 840 w%=25 850 DIMx%(w%),y%(6),z%256,aa%v% 860 PROCba 870 PROCca 880 PROCda 890 ENDPROC 900 : 910 DEFPROCa 920 VDU23,1,0;0;0;0; 930 ENDPROC 940 : 950 DEFPROCea 960 VDU23,1,1;0;0;0; 970 ENDPROC 980 : 990 DEFFNS 1000 ="SendMes" 1010 : 1020 DEFPROCba 1030 fa%=6 1040 ga%=3 1050 ha%=3 1060 k%=7 1070 l%=7 1080 ia%=3 1090 ja%=7 1100 ka%=4 1110 la%=3 1120 ma%=7 1130 na%=7 1140 oa%=2 1150 pa%=3 1160 qa%=3 1170 ra%=7 1180 sa%=3 1190 ta%=7 1200 ua%=7 1210 va%=3 1220 wa%=3 1230 u%=7 1240 xa%=3 1250 ya%=3 1260 za%=7 1270 ENDPROC 1280 : 1290 DEFPROCca 1300 LOCALab% 1310 VDU26,12 1320 PRINT" ";CHR$(144+fa%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ"; 1330 PRINTCHR$(144+fa%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(144+fa%);"ÿ"; 1340 PRINTCHR$(144+fa%);"ÿ";CHR$(144+ga%);"êë ·Ž€µ ê£àðàðê ° °ð°ðàð   ";CHR$(144+fa%);"ÿ"; 1350 PRINTCHR$(144+fa%);"ÿ";CHR$(144+ga%);"ê뢡·Žµ· ¢ëêêê€ê¡µŽµœµµê® ";CHR$(144+fa%);"ÿ"; 1360 PRINTCHR$(144+fa%);"";CHR$(144+ga%);"¢£ £ ¡£¡ ¢£¢£¢ ¢¡££¡¡¡¡¢£   ";CHR$(145);" "; 1370 FORab%=1TO18 1380 PRINTCHR$(144+fa%);"ÿ";SPC(36);CHR$(144+fa%);"ÿ"; 1390 NEXT 1400 PRINTCHR$(144+fa%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ"; 1410 VDU28,2,22,37,5 1420 ENDPROC 1430 : 1440 DEFPROCh($z%) 1450 LOCALX%,Y% 1460 X%=z%MOD256 1470 Y%=z%DIV256 1480 CALL&FFF7 1490 ENDPROC 1500 : 1510 DEFFNf 1540 PROCha 1550 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." 1560 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." 1570 =FNbb("AaDd ",FALSE) 1580 : 1590 DEFPROCm 1600 PROCcb 1610 IFn%=0THENENDPROC 1620 PRINT'CHR$(128+k%);"This program can only handle"'CHR$(128+k%);"version 0 files." 1630 PRINT'CHR$(128+k%);"Press SPACE to continue..." 1640 *FX21 1650 REPEATUNTILGET=32 1660 ENDPROC 1670 : 1680 DEFPROCha 1690 PRINTTAB(7,0);CHR$(128+ha%);"Messaging system 1.05" 1700 ENDPROC 1710 : 1720 DEFFNg 1730 LOCALA%,Y% 1740 A%=0 1750 Y%=0 1760 =(USR(&FFDA)AND&FF) 1770 : 1780 DEFFNj(db$) 1790 LOCALeb% 1800 eb%=OPENIN(db$) 1810 IFeb%=0THEN=FALSE 1820 CLOSE#eb% 1830 =TRUE 1840 : 1850 DEFPROCl 1860 LOCALeb%,fb% 1870 CLS 1880 PROCha 1890 PRINTTAB(0,2);CHR$(128+l%);"Please enter your three-digit user"'CHR$(128+l%);"ID:";CHR$(128+ia%); 1900 gb$=FNhb(FNia(3,3)) 1910 PRINT''CHR$(128+l%);"Please enter your name as you wish"'CHR$(128+l%);"it to appear in message headings:"'';:fb%=VPOS 1920 PRINT''CHR$(128+l%);"(just press RETURN if you wish to"'CHR$(128+l%);"remain anonymous)" 1930 PRINTTAB(0,fb%);CHR$(128+ia%); 1940 ib$=FNia(0,20) 1950 eb%=OPENOUT("!Mesg") 1960 BPUT#eb%,0:n%=0 1970 PRINT#eb%,gb$ 1980 PRINT#eb%,LEFT$(ib$+STRING$(20," "),20) 1990 jb%=PTR#eb% 2000 PRINT#eb%,0 2010 CLOSE#eb% 2020 ENDPROC 2030 : 2040 DEFPROCcb 2050 LOCALeb% 2060 eb%=OPENIN("!Mesg") 2070 n%=BGET#eb% 2080 IFn%<>0THENCLOSE#eb%:ENDPROC 2090 INPUT#eb%,gb$ 2100 INPUT#eb%,ib$ 2110 REPEAT 2120 IFRIGHT$(ib$,1)=" "THENib$=LEFT$(ib$,LEN(ib$)-1) 2130 UNTILRIGHT$(ib$,1)<>" " 2140 jb%=PTR#eb% 2150 CLOSE#eb% 2160 ENDPROC 2170 : 2180 DEFFNhb(kb$) 2190 LOCALlb$,mb%,nb% 2200 lb$="" 2210 FORmb%=1TOLEN(kb$) 2220 nb%=ASC(MID$(kb$,mb%,1)) 2230 IFnb%>=ASC("a")ANDnb%<=ASC("z")THENnb%=nb%-32 2240 lb$=lb$+CHR$(nb%) 2250 NEXT 2260 =lb$ 2270 : 2280 DEFFNia(ob%,pb%) 2290 LOCALmb%,qb%,kb$,e% 2300 mb%=POS 2310 qb%=VPOS 2320 kb$="" 2330 REPEAT 2340 REPEAT 2350 *FX21 2360 e%=GET 2370 UNTILe%=13OR(e%>=32ANDe%<=127) 2380 IFe%=127ANDLEN(kb$)>0THENVDU127:kb$=LEFT$(kb$,LEN(kb$)-1) 2390 IFe%<>127ANDe%<>13ANDLEN(kb$)=ob%) 2410 =kb$ 2420 : 2430 DEFFNp 2440 LOCALrb%,e% 2450 CLS 2460 PROCha 2470 PRINTTAB(3,2);CHR$(128+ja%);"Start a new message";TAB(32,2);"N" 2480 PRINTTAB(3,3);CHR$(128+ja%);"View/edit the messages";TAB(32,3);"V" 2490 PRINTTAB(3,4);CHR$(128+ja%);"Tidy the messages";TAB(32,4);"T" 2500 PRINTTAB(3,5);CHR$(128+ja%);"Re-enter your user ID/name";TAB(32,5);"R" 2510 PRINTTAB(3,6);CHR$(128+ja%);"Undelete deleted messages";TAB(32,6);"U" 2520 PRINTTAB(3,7);CHR$(128+ja%);"Quit to BASIC";TAB(32,7);"Q" 2530 PRINTTAB(0,9);CHR$(128+ma%);"Use the cursor keys to move the bar";CHR$(128+ma%);"and press RETURN to select, or use"'CHR$(128+ma%);"the appropriate key shortcut." 2540 rb%=1 2550 PRINTTAB(1,rb%+1);CHR$(128+ka%);CHR$(157);CHR$(128+la%);TAB(35,rb%+1);CHR$156; 2560 REPEAT 2570 REPEAT 2580 *FX21 2590 e%=GET 2600 UNTILINSTR("NVTRUQnvtruq"+CHR$(138)+CHR$(139)+CHR$(13),CHR$(e%))>0 2610 PRINTTAB(1,rb%+1);CHR$(128+ja%);" " 2620 IFe%=138THENIFrb%<6THENrb%=rb%+1 2630 IFe%=139THENIFrb%>1THENrb%=rb%-1 2640 IFe%>=ASC("a")ANDe%<=ASC("z")THENe%=e%-32 2650 IFe%=ASC("N")THENrb%=1 2660 IFe%=ASC("V")THENrb%=2 2670 IFe%=ASC("T")THENrb%=3 2680 IFe%=ASC("R")THENrb%=4 2690 IFe%=ASC("U")THENrb%=5 2700 IFe%=ASC("Q")THENrb%=6 2710 PRINTTAB(1,rb%+1);CHR$(128+ka%);CHR$(157);CHR$(128+la%);TAB(35,rb%+1);CHR$156; 2720 UNTILe%=13 2730 =rb% 2740 : 2750 DEFPROCq 2760 LOCALmb%,qb%,sb$,tb%,ub$ 2770 CLS 2780 PROCha 2790 eb%=OPENIN("!Mesg") 2800 PTR#eb%=jb% 2810 INPUT#eb%,tb% 2820 CLOSE#eb% 2830 IFtb%=w%THENPRINTCHR$(128+na%);"Sorry - you already have ";w%'CHR$(128+na%);"messages!"''CHR$(128+na%);"Press SPACE to return to the menu..";:PROCh("FX21"):REPEATUNTILGET=32:ENDPROC 2840 PROCvb 2850 PRINTTAB(0,2);CHR$(128+na%);"Please enter the user ID of the"'CHR$(128+na%);"recipient:";CHR$(128+ia%); 2860 mb%=POS 2870 qb%=VPOS 2880 PRINT''CHR$(128+na%);"(Use 999 for all users and CCC for"'CHR$(128+na%);"program comments)" 2890 PRINTTAB(mb%,qb%); 2900 *FX229,0 2910 sb$=FNhb(FNia(3,3)) 2920 *FX229,1 2930 IFsb$="999"THENub$=" (all members)"ELSEub$="" 2940 IFsb$<>"CCC"THENPROCwb(CHR$(128+oa%)+"To: "+CHR$(128+pa%)+sb$+ub$,aa%):PROCwb(CHR$(128+oa%)+"Subject:"+CHR$(128+pa%),aa%+80) 2950 IFsb$="CCC"THENPROCwb(CHR$(128+oa%)+"Program:"+CHR$(128+pa%),aa%+40) 2960 PROCwb(CHR$(128+oa%)+"From: "+CHR$(128+pa%)+gb$,aa%+(40*ABS(sb$<>"CCC"))) 2970 IFib$<>""THENPROCwb("("+ib$+")",aa%+(40*ABS(sb$<>"CCC"))+14) 2980 sb$=FNxb(sb$,10,2+(sb$="CCC")) 2990 PROCyb(sb$) 3000 PROCca 3010 ENDPROC 3020 : 3030 DEFPROCwb(zb$,ac%) 3040 LOCALbc% 3050 FORbc%=ac%TOac%+LEN(zb$)-1 3060 ?bc%=ASC(MID$(zb$,bc%-ac%+1,1)) 3070 NEXT 3080 ENDPROC 3090 : 3100 DEFPROCvb 3110 !&70=aa% 3120 !&72=aa%+v%+1 3130 CALLvb 3140 ENDPROC 3150 : 3160 DEFFNxb(sb$,cc%,dc%) 3170 LOCALe%,ec%,fc% 3180 VDU26,12 3190 gc%=0 3200 hc%=FALSE 3210 ic%=0 3220 jc%=FALSE 3230 PROCkc(gc%) 3240 PROClc(hc%) 3250 PROCea 3260 REPEAT 3270 PRINTTAB(cc%,dc%); 3280 REPEAT 3290 *FX21 3300 IFic%=0THENe%=GETELSEe%=BGET#ic%:jc%=INKEY(-113) 3310 IFjc%ANDic%>0THENCLOSE#ic%:ic%=0:jc%=FALSE 3330 UNTIL(e%>=3ANDe%<=13)ORe%=20ORe%=27ORe%>=32 3340 ec%=INKEY(-1) 3350 fc%=INKEY(-2) 3360 IFic%<>0THENIFEOF#ic%THENCLOSE#ic%:ic%=0 3370 IFic%<>0ANDe%=10THENe%=13 3380 IFNOThc%ANDe%>=3ANDe%<=12THENcc%=FNmc(cc%,dc%,gc%,e%,ec%,fc%) 3390 IFe%=20THENic%=FNnc(sb$):PROClc(hc%) 3400 IFe%=12ANDNOTec%ANDNOTfc%THENhc%=NOThc%:PROCa:PROClc(hc%):PROCea 3410 IFNOThc%ANDe%=10ANDNOTec%ANDfc%THENPROCa:PROCoc(dc%,gc%):VDU26,12:PROCkc(gc%):PROClc(hc%):PROCea 3420 IFNOThc%ANDe%=11ANDNOTec%ANDfc%THENPROCa:PROCpc(dc%,gc%):VDU26,12:PROCkc(gc%):PROClc(hc%):PROCea 3430 IFNOThc%ANDe%=12ANDec%ANDNOTfc%THENPROCa:sb$=FNqc(sb$):VDU26,12:PROCkc(gc%):PROClc(hc%):PROCea 3440 IFNOThc%AND(e%>=32ANDe%<=126)THENVDUe%:aa%?FNrc(cc%,dc%,gc%)=e%:cc%=cc%+1 3450 IFhc%ANDINSTR("QWASZX",CHR$(e%AND&DF))<>0THENaa%?FNrc(cc%,dc%,gc%)=FNsc(aa%?FNrc(cc%,dc%,gc%),e%AND&DF) 3460 IFe%=127ANDcc%>0THENcc%=cc%-1:PROCtc(cc%,dc%,gc%):PROCa:VDU31,0,dc%:PROCuc(gc%+dc%):PROCea 3470 IFe%=13THENcc%=0:dc%=dc%+1 3480 IFe%=136THENcc%=cc%-1:IFec%THENcc%=0 3490 IFe%=137THENcc%=cc%+1:IFec%THENcc%=39 3500 IFe%=138THENdc%=dc%+1:IFec%THENdc%=dc%-1:PROCa:gc%=FNvc(gc%+12):PROCkc(gc%):PROClc(hc%):PROCea 3510 IFe%=139THENdc%=dc%-1:IFec%THENdc%=dc%+1:PROCa:gc%=FNvc(gc%-12):PROCkc(gc%):PROClc(hc%):PROCea 3520 IFcc%<0THENcc%=39:dc%=dc%-1 3530 IFdc%<0THENdc%=0:IFgc%>0THENPROCa:gc%=gc%-1:VDU28,0,23,39,0,30,11,26,30:PROCuc(gc%):PROClc(hc%):PROCea 3540 IFcc%>39ANDFNwc(aa%?FNrc(39,dc%,gc%))THENPROCxc 3550 IFcc%>39THENcc%=0:dc%=dc%+1 3560 IFdc%>23THENdc%=23:IFgc%<(((v%-40)DIV40)-23)THENPROCa:gc%=gc%+1:VDU28,0,23,39,0,31,0,23,10,26,31,0,23:PROCuc(gc%+23):PROClc(hc%):PROCea 3570 IF(e%=13OR(e%=32ANDcc%=0))ANDFNyc(aa%?FNrc(0,dc%-1,gc%))THENzc%=aa%?FNrc(0,dc%-1,gc%):PRINTTAB(cc%,dc%);CHR$(zc%);:aa%?FNrc(0,dc%,gc%)=zc%:cc%=cc%+1 3580 UNTILe%=27 3590 IFic%>0THENCLOSE#ic% 3600 PROCa 3610 =sb$ 3620 : 3630 DEFPROCxc 3640 LOCAL 3650 IFFNrc(0,dc%+1,gc%)>=(v%-40)THENENDPROC 3660 ad$="" 3670 cc%=cc%-1 3680 rc%=FNrc(cc%,dc%,gc%) 3690 REPEAT 3700 ad$=CHR$(aa%?rc%)+ad$ 3710 cc%=cc%-1 3720 rc%=rc%-1 3730 UNTILNOTFNwc(aa%?rc%) 3740 PRINTTAB(cc%+1,dc%); 3750 FORbd%=rc%+1TOFNrc(39,dc%,gc%) 3760 aa%?bd%=32:VDU32 3770 NEXT 3780 dc%=dc%+1 3790 cc%=0 3800 IFFNyc(aa%?FNrc(0,dc%-1,gc%))THENzc%=aa%?FNrc(0,dc%-1,gc%):PRINTTAB(cc%,dc%);CHR$(zc%);:aa%?FNrc(0,dc%,gc%)=zc%:cc%=cc%+1 3810 PRINTTAB(cc%,dc%);ad$; 3820 cd%=FNrc(cc%,dc%,gc%) 3830 FORdd%=0TOLEN(ad$)-1 3840 aa%?(dd%+cd%)=ASC(MID$(ad$,dd%+1,1)) 3850 NEXT 3860 cc%=cc%+LEN(ad$) 3870 ENDPROC 3880 : 3890 DEFFNyc(zc%) 3900 =(zc%>=129ANDzc%<=135) 3910 : 3920 DEFFNwc(zc%) 3930 =(zc%>=33ANDzc%<=126) 3940 : 3950 DEFPROCoc(dc%,gc%) 3960 LOCALed%,fd% 3970 ed%=FNgd 3980 IFed%>=(((v%-40)DIV40)*40)THENPROCd:ENDPROC 3990 IFFNrc(0,dc%,gc%)>ed%THENENDPROC 4000 !&70=aa%+FNrc(0,dc%,gc%)-40 4010 !&72=aa%+(ed%DIV40)*40 4020 CALLoc 4030 FORfd%=FNrc(0,dc%,gc%)TOFNrc(39,dc%,gc%) 4040 aa%?fd%=32 4050 NEXT 4060 ENDPROC 4070 : 4080 DEFPROCpc(dc%,gc%) 4090 LOCALed%,fd% 4100 ed%=FNgd 4110 IFFNrc(0,dc%,gc%)>ed%THENENDPROC 4120 IFed%>=FNrc(0,dc%,gc%)ANDed%<=FNrc(39,dc%,gc%)THENFORfd%=FNrc(0,dc%,gc%)TOFNrc(39,dc%,gc%):aa%?fd%=32:NEXT:ENDPROC 4130 !&70=aa%+FNrc(0,dc%,gc%) 4140 !&72=aa%+(ed%DIV40)*40 4150 CALLpc 4160 FORfd%=(ed%DIV40)*40TO(ed%DIV40)*40+40 4170 aa%?fd%=32 4180 NEXT 4190 ENDPROC 4200 : 4210 DEFPROCd 4220 SOUND1,-10,101,5 4230 ENDPROC 4240 : 4250 DEFPROCtc(cc%,dc%,gc%) 4260 !&70=aa%+FNrc(0,dc%,gc%) 4270 ?&72=cc%+1 4280 CALLtc 4290 ENDPROC 4300 : 4310 DEFPROChd(cc%,dc%,gc%) 4320 IFcc%=39THENaa%?FNrc(39,dc%,gc%)=32:ENDPROC 4330 !&70=aa%+FNrc(0,dc%,gc%) 4340 ?&72=cc% 4350 CALLhd 4360 ENDPROC 4370 : 4380 DEFFNvc(gc%) 4390 IFgc%<0THENgc%=0 4400 IFgc%>(((v%-40)DIV40)-23)THENgc%=(((v%-40)DIV40)-23) 4410 =gc% 4420 : 4430 DEFFNmc(cc%,dc%,gc%,e%,ec%,fc%) 4440 LOCALzc% 4450 IFe%>=3ANDe%<=9ANDNOTec%ANDNOTfc%THENVDU126+e%:aa%?FNrc(cc%,dc%,gc%)=126+e%:cc%=cc%+1 4460 IFe%>=3ANDe%<=9ANDec%ANDNOTfc%THENVDU142+e%:aa%?FNrc(cc%,dc%,gc%)=142+e%:cc%=cc%+1 4470 IFNOTec%ANDfc%ANDe%=12THENPROCa:PROCid:VDU26,12:PROCkc(gc%):PROClc(hc%):PROCea 4480 IFe%>=10ANDe%<=11ANDNOTec%ANDNOTfc%THENVDU126+e%:aa%?FNrc(cc%,dc%,gc%)=126+e%:cc%=cc%+1 4490 IFe%>=10ANDe%<=11ANDec%ANDNOTfc%THENVDU167-e%:aa%?FNrc(cc%,dc%,gc%)=167-e%:cc%=cc%+1 4500 IFe%>=3ANDe%<=4ANDNOTec%ANDfc%THENVDU150+e%:aa%?FNrc(cc%,dc%,gc%)=150+e%:cc%=cc%+1 4510 IFe%>=5ANDe%<=6ANDNOTec%ANDfc%THENVDU153+e%:aa%?FNrc(cc%,dc%,gc%)=153+e%:cc%=cc%+1 4520 IFe%>=7ANDe%<=8ANDNOTec%ANDfc%THENVDU148-e%:aa%?FNrc(cc%,dc%,gc%)=148-e%:cc%=cc%+1 4530 IFe%=9ANDNOTec%ANDfc%THENPROChd(cc%,dc%,gc%):PROCa:VDU31,0,dc%:PROCuc(gc%+dc%):PROCea 4540 =cc% 4550 : 4560 DEFPROClc(hc%) 4570 IFNOThc%THENPRINTTAB(0,24);CHR$(128+qa%);"Press CTRL";CHR$(129);"f9";CHR$(128+qa%);"for help... ";ELSEPRINTTAB(0,24);CHR$(128+qa%);"Press";CHR$(129);"f9";CHR$(128+qa%);"to exit pixel editing..."; 4580 ENDPROC 4590 : 4600 DEFFNnc(sb$) 4610 LOCALjd$,eb% 4620 PRINTTAB(0,24);CHR$(128+qa%);"Load text file - are you sure?";CHR$(128+ia%); 4630 IFNOTFNkdTHEN=0 4640 PRINTTAB(0,24);SPC(35);TAB(0,24);CHR$(128+qa%);"Filename:";CHR$(128+ia%); 4650 jd$=FNia(0,20) 4660 IFjd$=""THEN=0 4690 ONERRORPROCa:PROCd:PROCyb(sb$):PROCca:GOTO470 4700 eb%=OPENIN(jd$) 4710 IFeb%=0THENPROCd 4720 =eb% 4730 : 4740 DEFPROCkc(gc%) 4750 PRINTTAB(0,0); 4760 !&70=aa%+FNrc(0,0,gc%) 4770 !&72=aa%+FNrc(0,0,gc%)+960 4780 CALLkc 4790 ENDPROC 4800 : 4810 DEFPROCuc(gc%) 4820 !&70=aa%+FNrc(0,0,gc%) 4830 CALLuc 4840 ENDPROC 4850 : 4860 DEFFNrc(cc%,dc%,gc%) 4870 =cc%+(dc%+gc%)*40 4880 : 4890 DEFFNsc(zc%,e%) 4900 IFzc%>128THENzc%=zc%-128 4910 zc%=zc%-32 4920 y%(1)=(zc%AND1)=1 4930 y%(2)=(zc%AND2)=2 4940 y%(3)=(zc%AND4)=4 4950 y%(4)=(zc%AND8)=8 4960 y%(5)=(zc%AND16)=16 4970 y%(6)=(zc%AND64)=64 4980 IFe%=ASC("Q")THENy%(1)=NOTy%(1) 4990 IFe%=ASC("W")THENy%(2)=NOTy%(2) 5000 IFe%=ASC("A")THENy%(3)=NOTy%(3) 5010 IFe%=ASC("S")THENy%(4)=NOTy%(4) 5020 IFe%=ASC("Z")THENy%(5)=NOTy%(5) 5030 IFe%=ASC("X")THENy%(6)=NOTy%(6) 5040 zc%=160+ABS(y%(1))+ABS(y%(2))*2+ABS(y%(3))*4+ABS(y%(4))*8+ABS(y%(5))*16+ABS(y%(6))*64 5050 VDUzc%,8 5060 =zc% 5070 : 5080 DEFPROCyb(sb$) 5090 LOCALeb%,tb%,A%,X%,Y% 5100 VDU26 5110 PRINTTAB(0,24);CHR$(128+xa%);"Please wait, saving message... "; 5120 eb%=OPENUP("!Mesg") 5130 PTR#eb%=jb% 5140 INPUT#eb%,tb% 5150 PTR#eb%=jb% 5160 PRINT#eb%,tb%+1 5170 PTR#eb%=EXT#eb% 5180 PRINT#eb%,sb$ 5190 BPUT#eb%,0 5200 z%?0=eb% 5210 z%!1=aa% 5220 z%!5=FNgd+1 5230 A%=2 5240 X%=z%MOD256 5250 Y%=z%DIV256 5260 CALL&FFD1 5270 BPUT#eb%,152 5280 CLOSE#eb% 5290 ENDPROC 5300 : 5310 DEFFNgd 5320 !&70=aa%+v%+1 5330 !&72=aa% 5340 CALLgd 5350 !&72=0 5360 =(!&70)-aa% 5370 : 5380 DEFPROCr 5390 LOCALeb%,tb%,ld%,md%,nd%,gc%,e%,na%,sb$,kd%,od% 5400 eb%=OPENUP("!Mesg") 5410 PTR#eb%=jb% 5420 INPUT#eb%,tb% 5430 IFtb%=0THENCLOSE#eb%:ENDPROC 5440 CLS 5450 PROCha 5460 PRINTTAB(0,2);CHR$(128+za%);"Please wait, loading message..." 5470 ld%=1 5480 od%=TRUE 5490 REPEAT 5500 IFNOTod%THENVDU26:PRINTTAB(0,24);CHR$(128+ya%);"Please wait, loading message... "; 5510 od%=FALSE 5520 REPEAT 5530 md%=PTR#eb% 5540 INPUT#eb%,sb$ 5550 nd%=BGET#eb% 5560 PROCpd(eb%) 5570 UNTILnd%=0 5580 x%(ld%)=md% 5590 VDU26,12 5600 gc%=0 5610 PROCkc(gc%) 5620 PROCqd(sb$,ld%,tb%) 5630 REPEAT 5640 REPEAT 5650 *FX21 5660 e%=GET 5670 IFe%>=ASC("a")ANDe%<=ASC("z")THENe%=e%-32 5680 UNTIL(e%>=136ANDe%<=139)ORe%=27ORe%=ASC("E")ORe%=ASC("D")ORe%=3 5690 ec%=INKEY(-1) 5700 IFe%=3THENPROCrd:VDU26,12:PROCkc(gc%):PROCqd(sb$,ld%,tb%) 5710 na%=FALSE 5720 IFe%=136ANDld%>1THENld%=ld%-1:PTR#eb%=x%(ld%):na%=TRUE 5730 IFe%=137ANDld%0THENgc%=gc%-1:VDU28,0,23,39,0,30,11,26,30:PROCuc(gc%) 5750 IFe%=139ANDec%THENgc%=FNvc(gc%-12):VDU26,12:PROCkc(gc%):PROCqd(sb$,ld%,tb%) 5760 IFe%=138ANDNOTec%ANDgc%<(((v%-40)DIV40)-23)THENgc%=gc%+1:VDU28,0,23,39,0,31,0,23,10,26,31,0,23:PROCuc(gc%+23) 5770 IFe%=138ANDec%THENgc%=FNvc(gc%+12):VDU26,12:PROCkc(gc%):PROCqd(sb$,ld%,tb%) 5780 IFe%=ASC("D")THENPRINTTAB(0,24);CHR$(128+va%);"Are you sure you want to delete this? ";:kd%=FNkd:PROCqd(sb$,ld%,tb%):IFNOTkd%THENe%=-1 5790 IFe%=ASC("E")THENPRINTTAB(0,24);CHR$(128+wa%);"Are you sure you want to edit this? ";:kd%=FNkd:PROCqd(sb$,ld%,tb%):IFNOTkd%THENe%=-1 5800 UNTILe%=27ORna%ORe%=ASC("E")ORe%=ASC("D") 5810 UNTILe%=27ORe%=ASC("E")ORe%=ASC("D") 5820 IFe%=ASC("D")THENPTR#eb%=x%(ld%):PROCsd(eb%) 5830 IFe%=ASC("E")THENPTR#eb%=x%(ld%):PROCsd(eb%):CLOSE#eb%:sb$=FNxb(sb$,0,4):PROCyb(sb$) 5840 IFe%<>ASC("E")THENCLOSE#eb% 5850 PROCca 5860 ENDPROC 5870 : 5880 DEFFNkd 5890 LOCALe$ 5900 REPEAT 5910 e$=CHR$(GETAND&DF) 5920 UNTILe$="Y"ORe$="N" 5930 =(e$="Y") 5940 : 5950 DEFPROCpd(eb%) 5960 LOCALA%,X%,Y% 5970 z%?0=eb% 5980 z%!1=aa% 5990 z%!5=v%+1 6000 A%=4 6010 X%=z%MOD256 6020 Y%=z%DIV256 6030 CALL&FFD1 6040 !&70=aa%-1 6050 !&72=aa%+v%+1 6060 CALLtd 6070 !&76=0 6080 PTR#eb%=PTR#eb%-((v%-z%!5)-(!&74-aa%)) 6090 ENDPROC 6100 : 6110 DEFPROCqd(ud$,vd%,wd%) 6120 LOCALxd$ 6130 IFvd%>9ANDwd%>9THENxd$=""ELSExd$=" " 6140 PRINTTAB(0,24);CHR$(128+qa%);"Message ";vd%;" of ";wd%;",";xd$;"to ";ud$;" -";CHR$(129);"f0";CHR$(128+qa%);"for help "; 6150 ENDPROC 6160 : 6170 DEFPROCsd(eb%) 6180 LOCALtb%,yd$ 6190 INPUT#eb%,yd$ 6200 BPUT#eb%,255 6210 PTR#eb%=jb% 6220 INPUT#eb%,tb% 6230 PTR#eb%=jb% 6240 PRINT#eb%,tb%-1 6250 ENDPROC 6260 : 6270 DEFPROCs 6280 LOCALzd%,ae%,be$,tb%,ud$,nd%,ce%,n% 6290 CLS 6300 PROCha 6310 PRINTTAB(0,2);CHR$(128+ta%);"Are you sure you want to tidy the"'CHR$(128+ta%);"messages?":IFNOTFNkdTHENENDPROC 6320 PRINT'CHR$(128+ta%);"Please wait, tidying messages..." 6330 VDU21 6340 IFFNj("!MesgB")THENOSCLI"DELETE !MesgB" 6350 *RENAME !Mesg !MesgB 6360 zd%=OPENIN("!MesgB") 6370 ae%=OPENOUT("!Mesg") 6380 n%=BGET#zd% 6390 BPUT#ae%,n% 6400 INPUT#zd%,be$ 6410 PRINT#ae%,be$ 6420 INPUT#zd%,be$ 6430 PRINT#ae%,be$ 6440 INPUT#zd%,tb% 6450 PRINT#ae%,tb% 6460 IFEOF#zd%THENVDU6:CLOSE#zd%:CLOSE#ae%:PROCh("DELETE !MesgB"):ENDPROC 6470 REPEAT 6480 INPUT#zd%,ud$ 6490 nd%=BGET#zd% 6500 IFnd%=0THENPRINT#ae%,ud$:BPUT#ae%,nd%:REPEAT:ce%=BGET#zd%:BPUT#ae%,ce%:UNTILce%=152ELSEREPEATUNTILBGET#zd%=152 6510 UNTILEOF#zd% 6520 CLOSE#zd% 6530 CLOSE#ae% 6540 *DELETE !MesgB 6550 VDU6 6560 ENDPROC 6570 : 6580 DEFPROCrd 6590 PROCca 6600 PROCha 6610 PRINTTAB(0,2);CHR$(128+ra%);"Use the cursor up and down keys to"'CHR$(128+ra%);"scroll through the displayed"'CHR$(128+ra%);"message. Use SHIFT to scroll"'CHR$(128+ra%);"quickly." 6620 PRINT'CHR$(128+ra%);"Use the cursor left and right keys"'CHR$(128+ra%);"to move between messages." 6630 PRINT'CHR$(128+ra%);"Press D to delete the current"'CHR$(128+ra%);"message and E to edit it." 6640 PRINT'CHR$(128+ra%);"Press ESCAPE to return to the menu." 6650 PRINTTAB(0,16);CHR$(128+sa%);"Press ESCAPE to return to"'CHR$(128+sa%);"viewing..."; 6660 *FX21 6670 REPEATUNTILGET=27 6680 ENDPROC 6690 : 6700 DEFPROCid 6710 LOCALe% 6720 PROCca 6730 PROCha 6740 PRINTTAB(0,2);CHR$(128+ra%);"Use the cursor keys to move around"'CHR$(128+ra%);"the message. Use SHIFT to move more";CHR$(128+ra%);"quickly. Use the keyboard to enter"'CHR$(128+ra%);"text and DELETE to delete"'CHR$(128+ra%);"characters." 6750 PRINT'CHR$(128+ra%);"Use";CHR$(129);"f0-f6";CHR$(128+ra%);"to set the text colour" 6760 PRINTCHR$(128+ra%);"Use SHIFT";CHR$(129);"f0-f6";CHR$(128+ra%);"to set the graphic"'CHR$(128+ra%);"colour" 6770 PRINTCHR$(128+ra%);"Use";CHR$(129);"f7/f8";CHR$(128+ra%);"for steady/flashing" 6780 PRINTCHR$(128+ra%);"Use SHIFT";CHR$(129);"f7/f8";CHR$(128+ra%);"for coloured/black"'CHR$(128+ra%);"background" 6790 PRINTTAB(0,16);CHR$(128+sa%);"Press CTRL";CHR$(129);"f9";CHR$(128+sa%);"for more help or"'CHR$(128+sa%);"press ESCAPE to continue editing.."; 6800 REPEAT 6810 *FX21 6820 e%=GET 6830 UNTIL(e%=12ANDINKEY(-2))ORe%=27 6840 IFe%=27THENENDPROC 6850 CLS 6860 PROCha 6870 PRINTTAB(0,2);CHR$(128+ra%);"Use";CHR$(129);"f9";CHR$(128+ra%);"to design a graphic block" 6880 PRINTCHR$(128+ra%);"Use CTRL";CHR$(129);"f0/f1";CHR$(128+ra%);"to set contiguous/"'CHR$(128+ra%);"separated graphics" 6890 PRINTCHR$(128+ra%);"Use CTRL";CHR$(129);"f2/f3";CHR$(128+ra%);"to hold/release"'CHR$(128+ra%);"graphics" 6900 PRINTCHR$(128+ra%);"Use CTRL";CHR$(129);"f4/f5";CHR$(128+ra%);"for double/single"'CHR$(128+ra%);"height" 6910 PRINTCHR$(128+ra%);"Use SHIFT";CHR$(129);"f9";CHR$(128+ra%);"to change the"'CHR$(128+ra%);"recipient of the message" 6920 PRINTCHR$(128+ra%);"Use CTRL";CHR$(129);"f6";CHR$(128+ra%);"to insert a space" 6930 PRINTCHR$(128+ra%);"Use CTRL";CHR$(129);"f7/f8";CHR$(128+ra%);"to insert/delete a"'CHR$(128+ra%);"line" 6950 PRINT'CHR$(128+ra%);"Press ESCAPE to finish editing" 6960 PRINTTAB(0,17);CHR$(128+sa%);"Press ESCAPE to continue editing.."; 6970 *FX21 6980 REPEATUNTILGET=27 6990 ENDPROC 7000 : 7010 DEFPROCda 7020 DIMzc%308 7030 PROCh("LOAD SendMC "+STR$~zc%) 7040 vb=zc% 7050 kc=zc%+&20 7060 gd=zc%+&41 7070 uc=zc%+&63 7080 td=zc%+&70 7090 tc=zc%+&AB 7100 hd=zc%+&BE 7110 oc=zc%+&D0 7120 pc=zc%+&102 7130 ENDPROC 7140 : 7150 DEFPROCt 7160 LOCALeb%,de$,ee$ 7170 CLS 7180 PROCha 7190 PRINTTAB(0,2);CHR$(128+l%);"Your user ID is currently entered"'CHR$(128+l%);"as ";gb$ 7200 PRINT'CHR$(128+l%);"Please enter your three-digit user"'CHR$(128+l%);"ID:";CHR$(128+ia%); 7210 *FX229,0 7220 de$=FNhb(FNia(3,3)) 7230 *FX229,1 7240 PRINT''CHR$(128+l%);"Your name is currently entered as"'CHR$(128+l%);ib$ 7250 PRINT'CHR$(128+l%);"Please enter your name:"'CHR$(128+ia%); 7260 *FX229,0 7270 ee$=FNia(0,20) 7280 *FX229,1 7290 gb$=de$ 7300 ib$=ee$ 7310 eb%=OPENUP("!Mesg") 7320 PTR#eb%=0 7330 BPUT#eb%,0 7340 PRINT#eb%,gb$ 7350 PRINT#eb%,LEFT$(ib$+STRING$(20," "),20) 7360 CLOSE#eb% 7370 ENDPROC 7380 : 7390 DEFFNqc(sb$) 7400 LOCALmb%,qb% 7410 PROCca 7420 PROCha 7430 PRINTTAB(0,2);CHR$(128+ua%);"This message is currently going"'CHR$(128+ua%);"to ";sb$ 7440 PRINT'CHR$(128+ua%);"Please enter the user ID of the"'CHR$(128+ua%);"recipient:";CHR$(128+ia%); 7450 mb%=POS 7460 qb%=VPOS 7470 PRINT''CHR$(128+ua%);"(Use 999 for all users and CCC for"'CHR$(128+ua%);"program comments)" 7480 PRINTTAB(mb%,qb%); 7490 =FNhb(FNia(3,3)) 7500 : 7510 DEFPROCu 7520 LOCALeb%,tb%,ud$,nd%,pb% 7530 CLS 7540 PROCha 7550 PRINTTAB(0,2);CHR$(128+u%);"Are you sure you want to undelete?" 7560 IFNOTFNkdTHENENDPROC 7570 PRINT'CHR$(128+u%);"Please wait, undeleting messages..." 7580 pb%=FALSE 7590 eb%=OPENUP("!Mesg") 7600 PTR#eb%=jb% 7610 INPUT#eb%,tb% 7620 IFEOF#eb%THENCLOSE#eb%:ENDPROC 7630 REPEAT 7640 INPUT#eb%,ud$ 7650 nd%=BGET#eb% 7660 IFNOTpb%ANDnd%=255THENPTR#eb%=PTR#eb%-1:BPUT#eb%,0:tb%=tb%+1 7670 REPEATUNTILBGET#eb%=152 7680 IFtb%=w%ANDNOTEOF#eb%THENpb%=TRUE 7690 UNTILEOF#eb% 7700 PTR#eb%=jb% 7710 PRINT#eb%,tb% 7720 CLOSE#eb% 7730 IFpb%THENPRINT'CHR$(128+u%);"Warning - not all of the messages"'CHR$(128+u%);"have been recovered."''CHR$(128+u%);"Press SPACE to return to the menu..";:PROCh("FX21"):REPEATUNTILGET=32 7740 ENDPROC 7750 : 7760 DEFFNbb(fe$,ge%) 7770 LOCALe$ 7780 REPEAT 7790 *FX21 7800 IFge%THENe$=CHR$(GETAND&DF)ELSEe$=GET$ 7810 UNTILINSTR(fe$,e$)<>0 7820 =e$