280 : 290 *FX119 300 MODE7 310 PROCa 320 PROCb 330 PROCc 340 PROCd 350 REPEAT 360 e%=FNf 370 IFe%=1THENPROCg 380 IFe%=2THENPROCh 390 IFe%=3THENPROCi 400 IFe%=4THENPROCj 410 IFe%=5THENPROCk 420 UNTILe%=6 430 MODE7 440 PROCl 450 END 460 : 470 DEFPROCb 480 *FX225,3 490 *FX226,3 500 *FX227,3 510 *FX229,1 520 *FX4,1 530 ENDPROC 540 : 550 DEFPROCl 560 *FX225,1 570 *FX226,128 580 *FX227,144 590 *FX229,0 600 *FX4,0 610 ENDPROC 620 : 630 DEFPROCc 640 m%=4096 650 n%=25 660 DIMo%(n%),p%(6),q%256,r%m% 670 ONERRORIFERR=17THENPROCs("FX229,1"):GOTO350ELSEVDU6:CLOSE#0:MODE7:REPORT:PRINT" at line ";ERL:PROCs("KEY0 LIST "+STR$(ERL)+"|M"):PROCs("FX21"):PROCs("FX138,0,128"):PROCl:END 680 PROCt 690 PROCu 700 PROCv 710 ENDPROC 720 : 730 DEFPROCa 740 VDU23,1,0;0;0;0; 750 ENDPROC 760 : 770 DEFPROCw 780 VDU23,1,1;0;0;0; 790 ENDPROC 800 : 810 DEFFNS 820 ="SendMes" 830 : 840 DEFPROCt 850 x%=6 860 y%=3 870 z%=3 880 aa%=7 890 ba%=7 900 ca%=3 910 da%=7 920 ea%=4 930 fa%=3 940 ga%=7 950 ha%=7 960 ia%=2 970 ja%=3 980 ka%=3 990 la%=7 1000 ma%=3 1010 na%=7 1020 oa%=7 1030 pa%=3 1040 qa%=3 1050 k%=7 1060 ra%=3 1070 sa%=3 1080 ta%=7 1090 ENDPROC 1100 : 1110 DEFPROCu 1120 LOCALua% 1130 VDU26,12 1140 PRINT" ";CHR$(144+x%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ"; 1150 PRINTCHR$(144+x%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(144+x%);"ÿ"; 1160 PRINTCHR$(144+x%);"ÿ";CHR$(144+y%);"êë ·Ž€µ ê£àðàðê ° °ð°ðàð   ";CHR$(144+x%);"ÿ"; 1170 PRINTCHR$(144+x%);"ÿ";CHR$(144+y%);"ê뢡·Žµ· ¢ëêêê€ê¡µŽµœµµê® ";CHR$(144+x%);"ÿ"; 1180 PRINTCHR$(144+x%);"";CHR$(144+y%);"¢£ £ ¡£¡ ¢£¢£¢ ¢¡££¡¡¡¡¢£   ";CHR$(145);" "; 1190 FORua%=1TO18 1200 PRINTCHR$(144+x%);"ÿ";SPC(36);CHR$(144+x%);"ÿ"; 1210 NEXT 1220 PRINTCHR$(144+x%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ"; 1230 VDU28,2,22,37,5 1240 ENDPROC 1250 : 1260 DEFPROCs($q%) 1270 LOCALX%,Y% 1280 X%=q%MOD256 1290 Y%=q%DIV256 1300 CALL&FFF7 1310 ENDPROC 1320 : 1330 DEFPROCd 1340 REPEAT 1350 CLS 1360 PROCz 1370 PRINTTAB(0,2);CHR$(128+aa%);"Please insert your 8BS submissions"'CHR$(128+aa%);"disc into drive 0 and press SPACE"'CHR$(128+aa%);"when you are ready..." 1380 PRINT'CHR$(128+aa%);"The disc must be in the drive at"'CHR$(128+aa%);"all times when using this program." 1390 *FX21 1400 REPEATUNTILGET=32 1410 IFFNva=8THENPROCs("MOUNT 0")ELSEPROCs("DRIVE 0") 1420 IFFNwa("!Mess")THENPRINT'CHR$(128+aa%);"This disc has a !Mess file. You may";CHR$(128+aa%);"wish to read the accompanying"'CHR$(128+aa%);"article before continuing." 1430 IFFNwa("!Mess")THENPRINT'CHR$(128+aa%);"Press SPACE to continue...":PROCs("FX21"):REPEATUNTILGET=32 1440 IFNOTFNwa("!Mesg")THENPROCbaELSEPROCxa 1450 UNTILya%=0 1460 ENDPROC 1470 : 1480 DEFPROCxa 1490 PROCza 1500 IFya%=0THENENDPROC 1510 PRINT'CHR$(128+aa%);"This program can only handle"'CHR$(128+aa%);"version 0 files." 1520 PRINT'CHR$(128+aa%);"Press SPACE to continue..." 1530 *FX21 1540 REPEATUNTILGET=32 1550 ENDPROC 1560 : 1570 DEFPROCz 1580 PRINTTAB(5,0);CHR$(128+z%);"8BS messaging system 1.03" 1590 ENDPROC 1600 : 1610 DEFFNva 1620 LOCALA%,Y% 1630 A%=0 1640 Y%=0 1650 =(USR(&FFDA)AND&FF) 1660 : 1670 DEFFNwa(ab$) 1680 LOCALbb% 1690 bb%=OPENIN(ab$) 1700 IFbb%=0THEN=FALSE 1710 CLOSE#bb% 1720 =TRUE 1730 : 1740 DEFPROCba 1750 LOCALbb%,cb% 1760 CLS 1770 PROCz 1780 PRINTTAB(0,2);CHR$(128+ba%);"Please enter your three-digit user"'CHR$(128+ba%);"ID:";CHR$(128+ca%); 1790 db$=FNeb(FNca(3,3)) 1800 PRINT''CHR$(128+ba%);"Please enter your name as you wish"'CHR$(128+ba%);"it to appear in message headings:"'';:cb%=VPOS 1810 PRINT''CHR$(128+ba%);"(just press RETURN if you wish to"'CHR$(128+ba%);"remain anonymous)" 1820 PRINTTAB(0,cb%);CHR$(128+ca%); 1830 fb$=FNca(0,20) 1840 bb%=OPENOUT("!Mesg") 1850 BPUT#bb%,0:ya%=0 1860 PRINT#bb%,db$ 1870 PRINT#bb%,LEFT$(fb$+STRING$(20," "),20) 1880 gb%=PTR#bb% 1890 PRINT#bb%,0 1900 CLOSE#bb% 1910 ENDPROC 1920 : 1930 DEFPROCza 1940 LOCALbb% 1950 bb%=OPENIN("!Mesg") 1960 ya%=BGET#bb% 1970 IFya%<>0THENCLOSE#bb%:ENDPROC 1980 INPUT#bb%,db$ 1990 INPUT#bb%,fb$ 2000 REPEAT 2010 IFRIGHT$(fb$,1)=" "THENfb$=LEFT$(fb$,LEN(fb$)-1) 2020 UNTILRIGHT$(fb$,1)<>" " 2030 gb%=PTR#bb% 2040 CLOSE#bb% 2050 ENDPROC 2060 : 2070 DEFFNeb(hb$) 2080 LOCALib$,jb%,kb% 2090 ib$="" 2100 FORjb%=1TOLEN(hb$) 2110 kb%=ASC(MID$(hb$,jb%,1)) 2120 IFkb%>=ASC("a")ANDkb%<=ASC("z")THENkb%=kb%-32 2130 ib$=ib$+CHR$(kb%) 2140 NEXT 2150 =ib$ 2160 : 2170 DEFFNca(lb%,mb%) 2180 LOCALjb%,nb%,hb$,ob% 2190 jb%=POS 2200 nb%=VPOS 2210 hb$="" 2220 REPEAT 2230 REPEAT 2240 *FX21 2250 ob%=GET 2260 UNTILob%=13OR(ob%>=32ANDob%<=127) 2270 IFob%=127ANDLEN(hb$)>0THENVDU127:hb$=LEFT$(hb$,LEN(hb$)-1) 2280 IFob%<>127ANDob%<>13ANDLEN(hb$)=lb%) 2300 =hb$ 2310 : 2320 DEFFNf 2330 LOCALpb%,ob% 2340 CLS 2350 PROCz 2360 PRINTTAB(3,2);CHR$(128+da%);"Start a new message";TAB(32,2);"N" 2370 PRINTTAB(3,3);CHR$(128+da%);"View/edit the messages";TAB(32,3);"V" 2380 PRINTTAB(3,4);CHR$(128+da%);"Tidy the messages";TAB(32,4);"T" 2390 PRINTTAB(3,5);CHR$(128+da%);"Re-enter your user ID/name";TAB(32,5);"R" 2400 PRINTTAB(3,6);CHR$(128+da%);"Undelete deleted messages";TAB(32,6);"U" 2410 PRINTTAB(3,7);CHR$(128+da%);"Quit to BASIC";TAB(32,7);"Q" 2420 PRINTTAB(0,9);CHR$(128+ga%);"Use the cursor keys to move the bar";CHR$(128+ga%);"and press RETURN to select, or use"'CHR$(128+ga%);"the appropriate key shortcut." 2430 pb%=1 2440 PRINTTAB(1,pb%+1);CHR$(128+ea%);CHR$(157);CHR$(128+fa%);TAB(35,pb%+1);CHR$156; 2450 REPEAT 2460 REPEAT 2470 *FX21 2480 ob%=GET 2490 UNTILINSTR("NVTRUQnvtruq"+CHR$(138)+CHR$(139)+CHR$(13),CHR$(ob%))>0 2500 PRINTTAB(1,pb%+1);CHR$(128+da%);" " 2510 IFob%=138THENIFpb%<6THENpb%=pb%+1 2520 IFob%=139THENIFpb%>1THENpb%=pb%-1 2530 IFob%>=ASC("a")ANDob%<=ASC("z")THENob%=ob%-32 2540 IFob%=ASC("N")THENpb%=1 2550 IFob%=ASC("V")THENpb%=2 2560 IFob%=ASC("T")THENpb%=3 2570 IFob%=ASC("R")THENpb%=4 2580 IFob%=ASC("U")THENpb%=5 2590 IFob%=ASC("Q")THENpb%=6 2600 PRINTTAB(1,pb%+1);CHR$(128+ea%);CHR$(157);CHR$(128+fa%);TAB(35,pb%+1);CHR$156; 2610 UNTILob%=13 2620 =pb% 2630 : 2640 DEFPROCg 2650 LOCALjb%,nb%,qb$,rb%,sb$ 2660 CLS 2670 PROCz 2680 bb%=OPENIN("!Mesg") 2690 PTR#bb%=gb% 2700 INPUT#bb%,rb% 2710 CLOSE#bb% 2720 IFrb%=n%THENPRINTCHR$(128+ha%);"Sorry - you already have ";n%'CHR$(128+ha%);"messages!"''CHR$(128+ha%);"Press SPACE to return to the menu..";:PROCs("FX21"):REPEATUNTILGET=32:ENDPROC 2730 PROCtb 2740 PRINTTAB(0,2);CHR$(128+ha%);"Please enter the user ID of the"'CHR$(128+ha%);"recipient:";CHR$(128+ca%); 2750 jb%=POS 2760 nb%=VPOS 2770 PRINT''CHR$(128+ha%);"(Use 999 for all users and CCC for"'CHR$(128+ha%);"program comments)" 2780 PRINTTAB(jb%,nb%); 2790 *FX229,0 2800 qb$=FNeb(FNca(3,3)) 2810 *FX229,1 2820 IFqb$="999"THENsb$=" (all members)"ELSEsb$="" 2830 IFqb$<>"CCC"THENPROCub(CHR$(128+ia%)+"To: "+CHR$(128+ja%)+qb$+sb$,r%):PROCub(CHR$(128+ia%)+"Subject:"+CHR$(128+ja%),r%+80) 2840 IFqb$="CCC"THENPROCub(CHR$(128+ia%)+"Program:"+CHR$(128+ja%),r%+40) 2850 PROCub(CHR$(128+ia%)+"From: "+CHR$(128+ja%)+db$,r%+(40*ABS(qb$<>"CCC"))) 2860 IFfb$<>""THENPROCub("("+fb$+")",r%+(40*ABS(qb$<>"CCC"))+14) 2870 qb$=FNvb(qb$,10,2+(qb$="CCC")) 2880 PROCwb(qb$) 2890 PROCu 2900 ENDPROC 2910 : 2920 DEFPROCub(xb$,yb%) 2930 LOCALzb% 2940 FORzb%=yb%TOyb%+LEN(xb$)-1 2950 ?zb%=ASC(MID$(xb$,zb%-yb%+1,1)) 2960 NEXT 2970 ENDPROC 2980 : 2990 DEFPROCtb 3000 !&70=r% 3010 !&72=r%+m%+1 3020 CALLtb 3030 ENDPROC 3040 : 3050 DEFFNvb(qb$,ac%,bc%) 3060 LOCALob%,cc%,dc% 3070 VDU26,12 3080 ec%=0 3090 fc%=FALSE 3100 PROCgc(ec%) 3110 PROChc(fc%) 3120 PROCw 3130 REPEAT 3140 PRINTTAB(ac%,bc%); 3150 REPEAT 3160 *FX21 3170 ob%=GET 3180 UNTIL(ob%>=3ANDob%<=13)ORob%=27ORob%>=32 3190 cc%=INKEY(-1) 3200 dc%=INKEY(-2) 3210 IFNOTfc%ANDob%>=3ANDob%<=12THENac%=FNic(ac%,bc%,ec%,ob%,cc%,dc%) 3220 IFob%=12ANDNOTcc%ANDNOTdc%THENfc%=NOTfc%:PROCa:PROChc(fc%):PROCw 3230 IFNOTfc%ANDob%=10ANDNOTcc%ANDdc%THENPROCa:PROCjc(bc%,ec%):VDU26,12:PROCgc(ec%):PROChc(fc%):PROCw 3240 IFNOTfc%ANDob%=11ANDNOTcc%ANDdc%THENPROCa:PROCkc(bc%,ec%):VDU26,12:PROCgc(ec%):PROChc(fc%):PROCw 3250 IFNOTfc%ANDob%=12ANDcc%ANDNOTdc%THENPROCa:qb$=FNlc(qb$):VDU26,12:PROCgc(ec%):PROChc(fc%):PROCw 3260 IFNOTfc%AND(ob%>=32ANDob%<=126)THENVDUob%:r%?FNmc(ac%,bc%,ec%)=ob%:ac%=ac%+1 3270 IFfc%ANDINSTR("QWASZX",CHR$(ob%AND&DF))<>0THENr%?FNmc(ac%,bc%,ec%)=FNnc(r%?FNmc(ac%,bc%,ec%),ob%AND&DF) 3280 IFob%=127ANDac%>0THENac%=ac%-1:PROCoc(ac%,bc%,ec%):PROCa:VDU31,0,bc%:PROCpc(ec%+bc%):PROCw 3290 IFob%=13THENac%=0:bc%=bc%+1 3300 IFob%=136THENac%=ac%-1:IFcc%THENac%=0 3310 IFob%=137THENac%=ac%+1:IFcc%THENac%=39 3320 IFob%=138THENbc%=bc%+1:IFcc%THENbc%=bc%-1:PROCa:ec%=FNqc(ec%+12):PROCgc(ec%):PROChc(fc%):PROCw 3330 IFob%=139THENbc%=bc%-1:IFcc%THENbc%=bc%+1:PROCa:ec%=FNqc(ec%-12):PROCgc(ec%):PROChc(fc%):PROCw 3340 IFac%<0THENac%=39:bc%=bc%-1 3350 IFbc%<0THENbc%=0:IFec%>0THENPROCa:ec%=ec%-1:VDU28,0,23,39,0,30,11,26,30:PROCpc(ec%):PROChc(fc%):PROCw 3360 IFac%>39ANDFNrc(r%?FNmc(39,bc%,ec%))THENPROCsc 3370 IFac%>39THENac%=0:bc%=bc%+1 3380 IFbc%>23THENbc%=23:IFec%<(((m%-40)DIV40)-23)THENPROCa:ec%=ec%+1:VDU28,0,23,39,0,31,0,23,10,26,31,0,23:PROCpc(ec%+23):PROChc(fc%):PROCw 3390 IF(ob%=13OR(ob%=32ANDac%=0))ANDFNtc(r%?FNmc(0,bc%-1,ec%))THENuc%=r%?FNmc(0,bc%-1,ec%):PRINTTAB(ac%,bc%);CHR$(uc%);:r%?FNmc(0,bc%,ec%)=uc%:ac%=ac%+1 3400 UNTILob%=27 3410 PROCa 3420 =qb$ 3430 : 3440 DEFPROCsc 3450 LOCAL 3460 IFFNmc(0,bc%+1,ec%)>=(m%-40)THENENDPROC 3470 vc$="" 3480 ac%=ac%-1 3490 mc%=FNmc(ac%,bc%,ec%) 3500 REPEAT 3510 vc$=CHR$(r%?mc%)+vc$ 3520 ac%=ac%-1 3530 mc%=mc%-1 3540 UNTILNOTFNrc(r%?mc%) 3550 PRINTTAB(ac%+1,bc%); 3560 FORwc%=mc%+1TOFNmc(39,bc%,ec%) 3570 r%?wc%=32:VDU32 3580 NEXT 3590 bc%=bc%+1 3600 ac%=0 3610 IFFNtc(r%?FNmc(0,bc%-1,ec%))THENuc%=r%?FNmc(0,bc%-1,ec%):PRINTTAB(ac%,bc%);CHR$(uc%);:r%?FNmc(0,bc%,ec%)=uc%:ac%=ac%+1 3620 PRINTTAB(ac%,bc%);vc$; 3630 xc%=FNmc(ac%,bc%,ec%) 3640 FORyc%=0TOLEN(vc$)-1 3650 r%?(yc%+xc%)=ASC(MID$(vc$,yc%+1,1)) 3660 NEXT 3670 ac%=ac%+LEN(vc$) 3680 ENDPROC 3690 : 3700 DEFFNtc(uc%) 3710 =(uc%>=129ANDuc%<=135) 3720 : 3730 DEFFNrc(uc%) 3740 =(uc%>=33ANDuc%<=126) 3750 : 3760 DEFPROCjc(bc%,ec%) 3770 LOCALzc%,ad% 3780 zc%=FNbd 3790 IFzc%>=(((m%-40)DIV40)*40)THENPROCcd:ENDPROC 3800 IFFNmc(0,bc%,ec%)>zc%THENENDPROC 3810 !&70=r%+FNmc(0,bc%,ec%)-40 3820 !&72=r%+(zc%DIV40)*40 3830 CALLjc 3840 FORad%=FNmc(0,bc%,ec%)TOFNmc(39,bc%,ec%) 3850 r%?ad%=32 3860 NEXT 3870 ENDPROC 3880 : 3890 DEFPROCkc(bc%,ec%) 3900 LOCALzc%,ad% 3910 zc%=FNbd 3920 IFFNmc(0,bc%,ec%)>zc%THENENDPROC 3930 IFzc%>=FNmc(0,bc%,ec%)ANDzc%<=FNmc(39,bc%,ec%)THENFORad%=FNmc(0,bc%,ec%)TOFNmc(39,bc%,ec%):r%?ad%=32:NEXT:ENDPROC 3940 !&70=r%+FNmc(0,bc%,ec%) 3950 !&72=r%+(zc%DIV40)*40 3960 CALLkc 3970 FORad%=(zc%DIV40)*40TO(zc%DIV40)*40+40 3980 r%?ad%=32 3990 NEXT 4000 ENDPROC 4010 : 4020 DEFPROCcd 4030 SOUND1,-10,101,5 4040 ENDPROC 4050 : 4060 DEFPROCoc(ac%,bc%,ec%) 4070 !&70=r%+FNmc(0,bc%,ec%) 4080 ?&72=ac%+1 4090 CALLoc 4100 ENDPROC 4110 : 4120 DEFPROCdd(ac%,bc%,ec%) 4130 IFac%=39THENr%?FNmc(39,bc%,ec%)=32:ENDPROC 4140 !&70=r%+FNmc(0,bc%,ec%) 4150 ?&72=ac% 4160 CALLdd 4170 ENDPROC 4180 : 4190 DEFFNqc(ec%) 4200 IFec%<0THENec%=0 4210 IFec%>(((m%-40)DIV40)-23)THENec%=(((m%-40)DIV40)-23) 4220 =ec% 4230 : 4240 DEFFNic(ac%,bc%,ec%,ob%,cc%,dc%) 4250 LOCALuc% 4260 IFob%>=3ANDob%<=9ANDNOTcc%ANDNOTdc%THENVDU126+ob%:r%?FNmc(ac%,bc%,ec%)=126+ob%:ac%=ac%+1 4270 IFob%>=3ANDob%<=9ANDcc%ANDNOTdc%THENVDU142+ob%:r%?FNmc(ac%,bc%,ec%)=142+ob%:ac%=ac%+1 4280 IFNOTcc%ANDdc%ANDob%=12THENPROCa:PROCed:VDU26,12:PROCgc(ec%):PROChc(fc%):PROCw 4290 IFob%>=10ANDob%<=11ANDNOTcc%ANDNOTdc%THENVDU126+ob%:r%?FNmc(ac%,bc%,ec%)=126+ob%:ac%=ac%+1 4300 IFob%>=10ANDob%<=11ANDcc%ANDNOTdc%THENVDU167-ob%:r%?FNmc(ac%,bc%,ec%)=167-ob%:ac%=ac%+1 4310 IFob%>=3ANDob%<=4ANDNOTcc%ANDdc%THENVDU150+ob%:r%?FNmc(ac%,bc%,ec%)=150+ob%:ac%=ac%+1 4320 IFob%>=5ANDob%<=6ANDNOTcc%ANDdc%THENVDU153+ob%:r%?FNmc(ac%,bc%,ec%)=153+ob%:ac%=ac%+1 4330 IFob%>=7ANDob%<=8ANDNOTcc%ANDdc%THENVDU148-ob%:r%?FNmc(ac%,bc%,ec%)=148-ob%:ac%=ac%+1 4340 IFob%=9ANDNOTcc%ANDdc%THENPROCdd(ac%,bc%,ec%):PROCa:VDU31,0,bc%:PROCpc(ec%+bc%):PROCw 4350 =ac% 4360 : 4370 DEFPROChc(fc%) 4380 IFNOTfc%THENPRINTTAB(0,24);CHR$(128+ka%);"Press CTRL";CHR$(129);"f9";CHR$(128+ka%);"for help... ";ELSEPRINTTAB(0,24);CHR$(128+ka%);"Press";CHR$(129);"f9";CHR$(128+ka%);"to exit pixel editing..."; 4390 ENDPROC 4400 : 4410 DEFPROCgc(ec%) 4420 PRINTTAB(0,0); 4430 !&70=r%+FNmc(0,0,ec%) 4440 !&72=r%+FNmc(0,0,ec%)+960 4450 CALLgc 4460 ENDPROC 4470 : 4480 DEFPROCpc(ec%) 4490 !&70=r%+FNmc(0,0,ec%) 4500 CALLpc 4510 ENDPROC 4520 : 4530 DEFFNmc(ac%,bc%,ec%) 4540 =ac%+(bc%+ec%)*40 4550 : 4560 DEFFNnc(uc%,ob%) 4570 IFuc%>128THENuc%=uc%-128 4580 uc%=uc%-32 4590 p%(1)=(uc%AND1)=1 4600 p%(2)=(uc%AND2)=2 4610 p%(3)=(uc%AND4)=4 4620 p%(4)=(uc%AND8)=8 4630 p%(5)=(uc%AND16)=16 4640 p%(6)=(uc%AND64)=64 4650 IFob%=ASC("Q")THENp%(1)=NOTp%(1) 4660 IFob%=ASC("W")THENp%(2)=NOTp%(2) 4670 IFob%=ASC("A")THENp%(3)=NOTp%(3) 4680 IFob%=ASC("S")THENp%(4)=NOTp%(4) 4690 IFob%=ASC("Z")THENp%(5)=NOTp%(5) 4700 IFob%=ASC("X")THENp%(6)=NOTp%(6) 4710 uc%=160+ABS(p%(1))+ABS(p%(2))*2+ABS(p%(3))*4+ABS(p%(4))*8+ABS(p%(5))*16+ABS(p%(6))*64 4720 VDUuc%,8 4730 =uc% 4740 : 4750 DEFPROCwb(qb$) 4760 LOCALbb%,rb%,A%,X%,Y% 4770 VDU26 4780 PRINTTAB(0,24);CHR$(128+ra%);"Please wait, saving message... "; 4790 bb%=OPENUP("!Mesg") 4800 PTR#bb%=gb% 4810 INPUT#bb%,rb% 4820 PTR#bb%=gb% 4830 PRINT#bb%,rb%+1 4840 PTR#bb%=EXT#bb% 4850 PRINT#bb%,qb$ 4860 BPUT#bb%,0 4870 q%?0=bb% 4880 q%!1=r% 4890 q%!5=FNbd+1 4900 A%=2 4910 X%=q%MOD256 4920 Y%=q%DIV256 4930 CALL&FFD1 4940 BPUT#bb%,152 4950 CLOSE#bb% 4960 ENDPROC 4970 : 4980 DEFFNbd 4990 !&70=r%+m%+1 5000 !&72=r% 5010 CALLbd 5020 !&72=0 5030 =(!&70)-r% 5040 : 5050 DEFPROCh 5060 LOCALbb%,rb%,fd%,gd%,hd%,ec%,ob%,ha%,qb$,id%,jd% 5070 bb%=OPENUP("!Mesg") 5080 PTR#bb%=gb% 5090 INPUT#bb%,rb% 5100 IFrb%=0THENCLOSE#bb%:ENDPROC 5110 CLS 5120 PROCz 5130 PRINTTAB(0,2);CHR$(128+ta%);"Please wait, loading message..." 5140 fd%=1 5150 jd%=TRUE 5160 REPEAT 5170 IFNOTjd%THENVDU26:PRINTTAB(0,24);CHR$(128+sa%);"Please wait, loading message... "; 5180 jd%=FALSE 5190 REPEAT 5200 gd%=PTR#bb% 5210 INPUT#bb%,qb$ 5220 hd%=BGET#bb% 5230 PROCkd(bb%) 5240 UNTILhd%=0 5250 o%(fd%)=gd% 5260 VDU26,12 5270 ec%=0 5280 PROCgc(ec%) 5290 PROCld(qb$,fd%,rb%) 5300 REPEAT 5310 REPEAT 5320 *FX21 5330 ob%=GET 5340 IFob%>=ASC("a")ANDob%<=ASC("z")THENob%=ob%-32 5350 UNTIL(ob%>=136ANDob%<=139)ORob%=27ORob%=ASC("E")ORob%=ASC("D")ORob%=3 5360 cc%=INKEY(-1) 5370 IFob%=3THENPROCmd:VDU26,12:PROCgc(ec%):PROCld(qb$,fd%,rb%) 5380 ha%=FALSE 5390 IFob%=136ANDfd%>1THENfd%=fd%-1:PTR#bb%=o%(fd%):ha%=TRUE 5400 IFob%=137ANDfd%0THENec%=ec%-1:VDU28,0,23,39,0,30,11,26,30:PROCpc(ec%) 5420 IFob%=139ANDcc%THENec%=FNqc(ec%-12):VDU26,12:PROCgc(ec%):PROCld(qb$,fd%,rb%) 5430 IFob%=138ANDNOTcc%ANDec%<(((m%-40)DIV40)-23)THENec%=ec%+1:VDU28,0,23,39,0,31,0,23,10,26,31,0,23:PROCpc(ec%+23) 5440 IFob%=138ANDcc%THENec%=FNqc(ec%+12):VDU26,12:PROCgc(ec%):PROCld(qb$,fd%,rb%) 5450 IFob%=ASC("D")THENPRINTTAB(0,24);CHR$(128+pa%);"Are you sure you want to delete this?";:id%=FNid:PROCld(qb$,fd%,rb%):IFNOTid%THENob%=-1 5460 IFob%=ASC("E")THENPRINTTAB(0,24);CHR$(128+qa%);"Are you sure you want to edit this? ";:id%=FNid:PROCld(qb$,fd%,rb%):IFNOTid%THENob%=-1 5470 UNTILob%=27ORha%ORob%=ASC("E")ORob%=ASC("D") 5480 UNTILob%=27ORob%=ASC("E")ORob%=ASC("D") 5490 IFob%=ASC("D")THENPTR#bb%=o%(fd%):PROCnd(bb%) 5500 IFob%=ASC("E")THENPTR#bb%=o%(fd%):PROCnd(bb%):CLOSE#bb%:qb$=FNvb(qb$,0,4):PROCwb(qb$) 5510 IFob%<>ASC("E")THENCLOSE#bb% 5520 PROCu 5530 ENDPROC 5540 : 5550 DEFFNid 5560 LOCALob$ 5570 REPEAT 5580 ob$=CHR$(GETAND&DF) 5590 UNTILob$="Y"ORob$="N" 5600 =(ob$="Y") 5610 : 5620 DEFPROCkd(bb%) 5630 LOCALA%,X%,Y% 5640 q%?0=bb% 5650 q%!1=r% 5660 q%!5=m%+1 5670 A%=4 5680 X%=q%MOD256 5690 Y%=q%DIV256 5700 CALL&FFD1 5710 !&70=r%-1 5720 !&72=r%+m%+1 5730 CALLod 5740 !&76=0 5750 PTR#bb%=PTR#bb%-((m%-q%!5)-(!&74-r%)) 5760 ENDPROC 5770 : 5780 DEFPROCld(pd$,qd%,rd%) 5790 LOCALsd$ 5800 IFqd%>9ANDrd%>9THENsd$=""ELSEsd$=" " 5810 PRINTTAB(0,24);CHR$(128+ka%);"Message ";qd%;" of ";rd%;",";sd$;"to ";pd$;" -";CHR$(129);"f0";CHR$(128+ka%);"for help "; 5820 ENDPROC 5830 : 5840 DEFPROCnd(bb%) 5850 LOCALrb%,td$ 5860 INPUT#bb%,td$ 5870 BPUT#bb%,255 5880 PTR#bb%=gb% 5890 INPUT#bb%,rb% 5900 PTR#bb%=gb% 5910 PRINT#bb%,rb%-1 5920 ENDPROC 5930 : 5940 DEFPROCi 5950 LOCALud%,vd%,wd$,rb%,pd$,hd%,xd%,ya% 5960 CLS 5970 PROCz 5980 PRINTTAB(0,2);CHR$(128+na%);"Are you sure you want to tidy the"'CHR$(128+na%);"messages?":IFNOTFNidTHENENDPROC 5990 PRINT'CHR$(128+na%);"Please wait, tidying messages..." 6000 VDU21 6010 IFFNwa("!MesgB")THEN*yd!zd 6020 *RENAME !Mesg !MesgB 6030 ud%=OPENIN("!MesgB") 6040 vd%=OPENOUT("!Mesg") 6050 ya%=BGET#ud% 6060 BPUT#vd%,ya% 6070 INPUT#ud%,wd$ 6080 PRINT#vd%,wd$ 6090 INPUT#ud%,wd$ 6100 PRINT#vd%,wd$ 6110 INPUT#ud%,rb% 6120 PRINT#vd%,rb% 6130 IFEOF#ud%THENVDU6:CLOSE#ud%:CLOSE#vd%:PROCs("DELETE !MesgB"):ENDPROC 6140 REPEAT 6150 INPUT#ud%,pd$ 6160 hd%=BGET#ud% 6170 IFhd%=0THENPRINT#vd%,pd$:BPUT#vd%,hd%:REPEAT:xd%=BGET#ud%:BPUT#vd%,xd%:UNTILxd%=152ELSEREPEATUNTILBGET#ud%=152 6180 UNTILEOF#ud% 6190 CLOSE#ud% 6200 CLOSE#vd% 6210 *DELETE !MesgB 6220 VDU6 6230 ENDPROC 6240 : 6250 DEFPROCmd 6260 PROCu 6270 PROCz 6280 PRINTTAB(0,2);CHR$(128+la%);"Use the cursor up and down keys to"'CHR$(128+la%);"scroll through the displayed"'CHR$(128+la%);"message. Use SHIFT to scroll"'CHR$(128+la%);"quickly." 6290 PRINT'CHR$(128+la%);"Use the cursor left and right keys"'CHR$(128+la%);"to move between messages." 6300 PRINT'CHR$(128+la%);"Press D to delete the current"'CHR$(128+la%);"message and E to edit it." 6310 PRINT'CHR$(128+la%);"Press ESCAPE to return to the menu." 6320 PRINTTAB(0,16);CHR$(128+ma%);"Press ESCAPE to return to"'CHR$(128+ma%);"viewing..."; 6330 *FX21 6340 REPEATUNTILGET=27 6350 ENDPROC 6360 : 6370 DEFPROCed 6380 LOCALob% 6390 PROCu 6400 PROCz 6410 PRINTTAB(0,2);CHR$(128+la%);"Use the cursor keys to move around"'CHR$(128+la%);"the message. Use SHIFT to move more";CHR$(128+la%);"quickly. Use the keyboard to enter"'CHR$(128+la%);"text and DELETE to delete"'CHR$(128+la%);"characters." 6420 PRINT'CHR$(128+la%);"Use";CHR$(129);"f0-f6";CHR$(128+la%);"to set the text colour" 6430 PRINTCHR$(128+la%);"Use SHIFT";CHR$(129);"f0-f6";CHR$(128+la%);"to set the graphic"'CHR$(128+la%);"colour" 6440 PRINTCHR$(128+la%);"Use";CHR$(129);"f7/f8";CHR$(128+la%);"for steady/flashing" 6450 PRINTCHR$(128+la%);"Use SHIFT";CHR$(129);"f7/f8";CHR$(128+la%);"for coloured/black"'CHR$(128+la%);"background" 6460 PRINTTAB(0,16);CHR$(128+ma%);"Press CTRL";CHR$(129);"f9";CHR$(128+ma%);"for more help or"'CHR$(128+ma%);"press ESCAPE to continue editing.."; 6470 REPEAT 6480 *FX21 6490 ob%=GET 6500 UNTIL(ob%=12ANDINKEY(-2))ORob%=27 6510 IFob%=27THENENDPROC 6520 CLS 6530 PROCz 6540 PRINTTAB(0,2);CHR$(128+la%);"Use";CHR$(129);"f9";CHR$(128+la%);"to design a graphic block" 6550 PRINTCHR$(128+la%);"Use CTRL";CHR$(129);"f0/f1";CHR$(128+la%);"to set contiguous/"'CHR$(128+la%);"separated graphics" 6560 PRINTCHR$(128+la%);"Use CTRL";CHR$(129);"f2/f3";CHR$(128+la%);"to hold/release"'CHR$(128+la%);"graphics" 6570 PRINTCHR$(128+la%);"Use CTRL";CHR$(129);"f4/f5";CHR$(128+la%);"for double/single"'CHR$(128+la%);"height" 6580 PRINTCHR$(128+la%);"Use SHIFT";CHR$(129);"f9";CHR$(128+la%);"to change the"'CHR$(128+la%);"recipient of the message" 6590 PRINTCHR$(128+la%);"Use CTRL";CHR$(129);"f6";CHR$(128+la%);"to insert a space" 6600 PRINTCHR$(128+la%);"Use CTRL";CHR$(129);"f7/f8";CHR$(128+la%);"to insert/delete a"'CHR$(128+la%);"line" 6610 PRINT'CHR$(128+la%);"Press ESCAPE to finish editing" 6620 PRINTTAB(0,17);CHR$(128+ma%);"Press ESCAPE to continue editing.."; 6630 *FX21 6640 REPEATUNTILGET=27 6650 ENDPROC 6660 : 6670 DEFPROCv 6680 DIMuc%308 6690 PROCs("LOAD SendMC "+STR$~uc%) 6700 tb=uc% 6710 gc=uc%+&20 6720 bd=uc%+&41 6730 pc=uc%+&63 6740 od=uc%+&70 6750 oc=uc%+&AB 6760 dd=uc%+&BE 6770 jc=uc%+&D0 6780 kc=uc%+&102 6790 ENDPROC 6800 : 6810 DEFPROCj 6820 LOCALbb%,ae$,be$ 6830 CLS 6840 PROCz 6850 PRINTTAB(0,2);CHR$(128+ba%);"Your user ID is currently entered"'CHR$(128+ba%);"as ";db$ 6860 PRINT'CHR$(128+ba%);"Please enter your three-digit user"'CHR$(128+ba%);"ID:";CHR$(128+ca%); 6870 *FX229,0 6880 ae$=FNeb(FNca(3,3)) 6890 *FX229,1 6900 PRINT''CHR$(128+ba%);"Your name is currently entered as"'CHR$(128+ba%);fb$ 6910 PRINT'CHR$(128+ba%);"Please enter your name:"'CHR$(128+ca%); 6920 *FX229,0 6930 be$=FNca(0,20) 6940 *FX229,1 6950 db$=ae$ 6960 fb$=be$ 6970 bb%=OPENUP("!Mesg") 6980 PTR#bb%=0 6990 BPUT#bb%,0 7000 PRINT#bb%,db$ 7010 PRINT#bb%,LEFT$(fb$+STRING$(20," "),20) 7020 CLOSE#bb% 7030 ENDPROC 7040 : 7050 DEFFNlc(qb$) 7060 LOCALjb%,nb% 7070 PROCu 7080 PROCz 7090 PRINTTAB(0,2);CHR$(128+oa%);"This message is currently going"'CHR$(128+oa%);"to ";qb$ 7100 PRINT'CHR$(128+oa%);"Please enter the user ID of the"'CHR$(128+oa%);"recipient:";CHR$(128+ca%); 7110 jb%=POS 7120 nb%=VPOS 7130 PRINT''CHR$(128+oa%);"(Use 999 for all users and CCC for"'CHR$(128+oa%);"program comments)" 7140 PRINTTAB(jb%,nb%); 7150 =FNeb(FNca(3,3)) 7160 : 7170 DEFPROCk 7180 LOCALbb%,rb%,pd$,hd%,mb% 7190 CLS 7200 PROCz 7210 PRINTTAB(0,2);CHR$(128+k%);"Are you sure you want to undelete?" 7220 IFNOTFNidTHENENDPROC 7230 PRINT'CHR$(128+k%);"Please wait, undeleting messages..." 7240 mb%=FALSE 7250 bb%=OPENUP("!Mesg") 7260 PTR#bb%=gb% 7270 INPUT#bb%,rb% 7280 IFEOF#bb%THENCLOSE#bb%:ENDPROC 7290 REPEAT 7300 INPUT#bb%,pd$ 7310 hd%=BGET#bb% 7320 IFNOTmb%ANDhd%=255THENPTR#bb%=PTR#bb%-1:BPUT#bb%,0:rb%=rb%+1 7330 REPEATUNTILBGET#bb%=152 7340 IFrb%=n%ANDNOTEOF#bb%THENmb%=TRUE 7350 UNTILEOF#bb% 7360 PTR#bb%=gb% 7370 PRINT#bb%,rb% 7380 CLOSE#bb% 7390 IFmb%THENPRINT'CHR$(128+k%);"Warning - not all of the messages"'CHR$(128+k%);"have been recovered."''CHR$(128+k%);"Press SPACE to return to the menu..";:PROCs("FX21"):REPEATUNTILGET=32 7400 ENDPROC