8-Bit Software Online Conversion

8BS Messaging System. V 1.06 - Listing

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