8-Bit Software Online Conversion

8BS Messaging System. V 1.05 - Listing

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