8-Bit Software Online Conversion

8BS Messaging System. V 1.03 - Listing

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