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