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