8-Bit Software Online Conversion

8BS Messaging System - Listing

10REM >SendMes 20REM by Steven Flintham 30REM 40REM Version 0.93 50REM 60REM Thursday 20th May 1993 70REM Friday 21st May 1993 80REM Saturday 22nd May 1993 90REM Sunday 23rd May 1993 100REM Wednesday 26th May 1993 110REM Friday 28th May 1993 120REM Saturday 29th May 1993 130REM Monday 31st May 1993 140REM Tuesday 1st June 1993 150REM Saturday 5th June 1993 160REM Monday 14th June 1993 170REM Saturday 19th June 1993 180REM Monday 28th June 1993 190REM Wednesday 30th June 1993 200REM Thursday 1st July 1993 210: 220*FX119 230MODE 7 240PROCa 250PROCb 260PROCc 270PROCd 280REPEAT 290e%=FNf 300IF e%=1 THEN PROCg 310IF e%=2 THEN PROCh 320IF e%=3 THEN PROCi 330IF e%=4 THEN PROCj 340IF e%=5 THEN PROCk 350UNTIL e%=6 360MODE 7 370PROCl 380END 390: 400DEF PROCb 410*FX225,3 420*FX226,3 430*FX227,3 440*FX229,1 450*FX4,1 460ENDPROC 470: 480DEF PROCl 490*FX225,1 500*FX226,128 510*FX227,144 520*FX229,0 530*FX4,0 540ENDPROC 550: 560DEF PROCc 570m%=4096 580n%=25 590DIM o%(n%), p%(6), q% 256, r% m% 600ON ERROR VDU 6:MODE 7:REPORT:PRINT " at line ";ERL:CLOSE #0:PROCs("KEY0 LIS T "+STR$(ERL)+"|M"):PROCs("FX21"):PROCs( "FX138,0,128"):PROCl:END 610PROCt 620PROCu 630PROCv 640ENDPROC 650: 660DEF PROCa 670VDU 23,1,0;0;0;0; 680ENDPROC 690: 700DEF PROCw 710VDU 23,1,1;0;0;0; 720ENDPROC 730: 740DEF FNS 750="SendMes" 760: 770DEF PROCt 780x%=6 790y%=3 800z%=3 810aa%=7 820ba%=7 830ca%=3 840da%=7 850ea%=4 860fa%=3 870ga%=7 880ha%=7 890ia%=2 900ja%=3 910ka%=3 920la%=7 930ma%=3 940na%=7 950oa%=7 960pa%=3 970qa%=3 980k%=7 990ra%=3 1000sa%=3 1010ta%=7 1020ENDPROC 1030: 1040DEF PROCu 1050LOCAL ua% 1060VDU 26,12 1070PRINT " ";CHR$(144+x%);"¶ ///////%¶/////////////////¶"; 1080PRINT CHR$(144+x%);"¶///////////*// ////// ";CHR$(144+x%);"¶" ; 1090PRINT CHR$(144+x%);"¶";CHR$(144+y%) ;"jk 5 $5 j£`p`pj 0 0p0p`p ";C HR$(144+x%);"¶"; 1100PRINT CHR$(144+x%);"¶";CHR$(144+y%) ;"jk"!7557 "kjjj$j!545=55j. ";C HR$(144+x%);"¶"; 1110PRINT CHR$(144+x%);" ;""£ £!!£! "£"£" "!££!!!!"£ ";C HR$(145);" "; 1120FOR ua%=1 TO 18 1130PRINT CHR$(144+x%);"¶";SPC(36);CHR$ (144+x%);"¶"; 1140NEXT 1150PRINT CHR$(144+x%);"¶|||||||||||||| |||||||||||||||||||||||¶"; 1160VDU 28,2,22,37,5 1170ENDPROC 1180: 1190DEF PROCs($q%) 1200LOCAL X%,Y% 1210X%=q% MOD 256 1220Y%=q% DIV 256 1230CALL &FFF7 1240ENDPROC 1250: 1260DEF PROCd 1270CLS 1280PROCz("8BS messaging system") 1290PRINTTAB(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..." 1300PRINT'CHR$(128+aa%);"The disc must be in the drive at"'CHR$(128+aa%);"all t imes when using this program." 1310*FX21 1320REPEAT UNTIL GET=32 1330IF FNva=8 THEN PROCs("MOUNT 0") ELS E PROCs("DRIVE 0") 1340IF NOT FNwa("!Mess") THEN PROCba EL SE PROCxa 1350ENDPROC 1360: 1370DEF PROCz(z$) 1380PRINTTAB(17-LEN(z$)/2,0);CHR$(128+z %);z$ 1390ENDPROC 1400: 1410DEF FNva 1420LOCAL A%,Y% 1430A%=0 1440Y%=0 1450=(USR(&FFDA) AND &FF) 1460: 1470DEF FNwa(ya$) 1480LOCAL za% 1490za%=OPENIN(ya$) 1500IF za%=0 THEN =FALSE 1510CLOSE #za% 1520=TRUE 1530: 1540DEF PROCba 1550LOCAL za% 1560CLS 1570PROCz("8BS messaging system") 1580PRINTTAB(0,2);CHR$(128+ba%);"Please enter your three-digit user"'CHR$(128+b a%);"ID:";CHR$(128+ca%); 1590ab$=FNbb(FNca(3,3)) 1600za%=OPENOUT("!Mess") 1610PRINT #za%,ab$ 1620cb%=PTR #za% 1630PRINT #za%,0 1640CLOSE #za% 1650ENDPROC 1660: 1670DEF PROCxa 1680LOCAL za% 1690za%=OPENIN("!Mess") 1700INPUT #za%,ab$ 1710cb%=PTR #za% 1720CLOSE #za% 1730ENDPROC 1740: 1750DEF FNbb(db$) 1760LOCAL eb$,fb%,gb% 1770eb$="" 1780FOR fb%=1 TO LEN(db$) 1790gb%=ASC(MID$(db$,fb%,1)) 1800IF gb%>=ASC("a") AND gb%<=ASC("z") THEN gb%=gb%-32 1810eb$=eb$+CHR$(gb%) 1820NEXT 1830=eb$ 1840: 1850DEF FNca(hb%,ib%) 1860LOCAL fb%,jb%,db$,kb% 1870fb%=POS 1880jb%=VPOS 1890db$="" 1900REPEAT 1910REPEAT 1920*FX21 1930kb%=GET 1940UNTIL kb%=13 OR (kb%>=32 AND kb%<=1 27) 1950IF kb%=127 AND LEN(db$)>0 THEN VDU 127:db$=LEFT$(db$,LEN(db$)-1) 1960IF kb%<>127 AND kb%<>13 AND LEN(db$ )<ib% THEN VDU kb%:db$=db$+CHR$(kb%) 1970UNTIL (kb%=13 AND LEN(db$)>=hb%) 1980=db$ 1990: 2000DEF FNf 2010LOCAL lb%,kb% 2020CLS 2030PROCz("8BS messaging system") 2040PRINTTAB(3,2);CHR$(128+da%);"Start a new message";TAB(32,2);"N" 2050PRINTTAB(3,3);CHR$(128+da%);"View/e dit the messages";TAB(32,3);"V" 2060PRINTTAB(3,4);CHR$(128+da%);"Tidy t he messages";TAB(32,4);"T" 2070PRINTTAB(3,5);CHR$(128+da%);"Re-ent er your user ID";TAB(32,5);"R" 2080PRINTTAB(3,6);CHR$(128+da%);"Undele te deleted messages";TAB(32,6);"U" 2090PRINTTAB(3,7);CHR$(128+da%);"Quit t o BASIC";TAB(32,7);"Q" 2100PRINTTAB(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" 2110lb%=1 2120PRINTTAB(1,lb%+1);CHR$(128+ea%);CHR $(157);CHR$(128+fa%);TAB(35,lb%+1);CHR$1 56; 2130REPEAT 2140REPEAT 2150*FX21 2160kb%=GET 2170UNTIL INSTR("NVTRUQnvtruq"+CHR$(138 )+CHR$(139)+CHR$(13),CHR$(kb%))>0 2180PRINTTAB(1,lb%+1);CHR$(128+da%);" " 2190IF kb%=138 THEN IF lb%<6 THEN lb%=l b%+1 2200IF kb%=139 THEN IF lb%>1 THEN lb%=l b%-1 2210IF kb%>=ASC("a") AND kb%<=ASC("z") THEN kb%=kb%-32 2220IF kb%=ASC("N") THEN lb%=1 2230IF kb%=ASC("V") THEN lb%=2 2240IF kb%=ASC("T") THEN lb%=3 2250IF kb%=ASC("R") THEN lb%=4 2260IF kb%=ASC("U") THEN lb%=5 2270IF kb%=ASC("Q") THEN lb%=6 2280PRINTTAB(1,lb%+1);CHR$(128+ea%);CHR $(157);CHR$(128+fa%);TAB(35,lb%+1);CHR$1 56; 2290UNTIL kb%=13 2300=lb% 2310: 2320DEF PROCg 2330LOCAL fb%,jb%,mb$,nb%,ob$ 2340CLS 2350PROCz("8BS messaging system") 2360za%=OPENIN("!Mess") 2370PTR #za%=cb% 2380INPUT #za%,nb% 2390CLOSE #za% 2400IF nb%=n% THEN PRINT CHR$(128+ha%); "Sorry - you already have ";n%'CHR$(128+ ha%);"messages!"''CHR$(128+ha%);"Press S PACE to return to the menu..";:PROCs("FX 21"):REPEAT UNTIL GET=32:ENDPROC 2410PROCpb 2420PRINTTAB(0,2);CHR$(128+ha%);"Please enter the user ID of the"'CHR$(128+ha%) ;"recipient:";CHR$(128+ca%); 2430fb%=POS 2440jb%=VPOS 2450PRINT''CHR$(128+ha%);"(Use 999 for all users and CCC for"'CHR$(128+ha%);"pr ogram comments)" 2460PRINTTAB(fb%,jb%); 2470mb$=FNbb(FNca(3,3)) 2480IF mb$="999" THEN ob$=" (all member s)" ELSE ob$="" 2490IF mb$<>"CCC" THEN PROCqb(CHR$(128+ ia%)+"To: "+CHR$(128+ja%)+mb$+ob$,r% ):PROCqb(CHR$(128+ia%)+"Subject:"+CHR$(1 28+ja%),r%+80) 2500IF mb$="CCC" THEN PROCqb(CHR$(128+i a%)+"Program:"+CHR$(128+ja%),r%+40) 2510PROCqb(CHR$(128+ia%)+"From: "+CHR $(128+ja%)+ab$,r%+(40*ABS(mb$<>"CCC"))) 2520mb$=FNrb(mb$,10,2+(mb$="CCC")) 2530PROCsb(mb$) 2540PROCu 2550ENDPROC 2560: 2570DEF PROCqb(tb$,ub%) 2580LOCAL vb% 2590FOR vb%=ub% TO ub%+LEN(tb$)-1 2600?vb%=ASC(MID$(tb$,vb%-ub%+1,1)) 2610NEXT 2620ENDPROC 2630: 2640DEF PROCpb 2650!&70=r% 2660!&72=r%+m%+1 2670CALL pb 2680ENDPROC 2690: 2700DEF FNrb(mb$,wb%,xb%) 2710LOCAL kb%,yb%,kb%,zb%,ac%:REM MORE 2720VDU 26,12 2730yb%=0 2740bc%=FALSE 2750PROCcc(yb%) 2760PROCdc(bc%) 2770PROCw 2780REPEAT 2790PRINTTAB(wb%,xb%); 2800REPEAT 2810*FX21 2820kb%=GET 2830UNTIL (kb%>=3 AND kb%<=13) OR kb%=2 7 OR kb%>=32 2840zb%=INKEY(-1) 2850ac%=INKEY(-2) 2860IF NOT bc% AND kb%>=3 AND kb%<=12 T HEN wb%=FNec(wb%,xb%,yb%,kb%) 2870IF kb%=12 AND NOT zb% AND NOT ac% T HEN bc%=NOT bc%:PROCa:PROCdc(bc%):PROCw 2880IF NOT bc% AND kb%=12 AND zb% AND N OT ac% THEN PROCa:mb$=FNfc(mb$):VDU 26,1 2:PROCcc(yb%):PROCdc(bc%):PROCw 2890IF NOT bc% AND (kb%>=32 AND kb%<=12 6) THEN VDU kb%:r%?FNgc(wb%,xb%,yb%)=kb% :wb%=wb%+1 2900IF bc% AND INSTR("QWASZX",CHR$(kb% AND &DF))<>0 THEN r%?FNgc(wb%,xb%,yb%)=F Nhc(r%?FNgc(wb%,xb%,yb%),kb% AND &DF) 2910IF kb%=127 AND wb%>0 THEN wb%=wb%-1 :PROCic(wb%,xb%,yb%):PROCa:VDU 31,0,xb%: PROCjc(yb%+xb%):PROCw 2920IF kb%=13 THEN wb%=0:xb%=xb%+1 2930IF kb%=136 THEN wb%=wb%-1:IF zb% TH EN wb%=0 2940IF kb%=137 THEN wb%=wb%+1:IF zb% TH EN wb%=39 2950IF kb%=138 THEN xb%=xb%+1:IF zb% TH EN xb%=xb%-1:PROCa:yb%=FNkc(yb%+12):PROC cc(yb%):PROCdc(bc%):PROCw 2960IF kb%=139 THEN xb%=xb%-1:IF zb% TH EN xb%=xb%+1:PROCa:yb%=FNkc(yb%-12):PROC cc(yb%):PROCdc(bc%):PROCw 2970IF wb%<0 THEN wb%=39:xb%=xb%-1 2980IF xb%<0 THEN xb%=0:IF yb%>0 THEN P ROCa:yb%=yb%-1:VDU 28,0,23,39,0,30,11,26 ,30:PROCjc(yb%):PROCdc(bc%):PROCw 2990IF wb%>39 THEN wb%=0:xb%=xb%+1 3000IF xb%>23 THEN xb%=23:IF yb%<(((m%- 40) DIV 40)-23) THEN PROCa:yb%=yb%+1:VDU 28,0,23,39,0,31,0,23,10,26,31,0,23:PROC jc(yb%+23):PROCdc(bc%):PROCw 3010UNTIL kb%=27 3020PROCa 3030=mb$ 3040: 3050DEF PROCic(wb%,xb%,yb%) 3060!&70=r%+FNgc(0,xb%,yb%) 3070?&72=wb%+1 3080CALL ic 3090ENDPROC 3100: 3110DEF PROClc(wb%,xb%,yb%) 3120IF wb%=39 THEN r%?FNgc(39,xb%,yb%)= 32:ENDPROC 3130!&70=r%+FNgc(0,xb%,yb%) 3140?&72=wb% 3150CALL lc 3160ENDPROC 3170: 3180DEF FNkc(yb%) 3190IF yb%<0 THEN yb%=0 3200IF yb%>(((m%-40) DIV 40)-23) THEN y b%=(((m%-40) DIV 40)-23) 3210=yb% 3220: 3230DEF FNec(wb%,xb%,yb%,kb%) 3240LOCAL mc% 3250IF kb%>=3 AND kb%<=9 AND NOT zb% AN D NOT ac% THEN VDU 126+kb%:r%?FNgc(wb%,x b%,yb%)=126+kb%:wb%=wb%+1 3260IF kb%>=3 AND kb%<=9 AND zb% AND NO T ac% THEN VDU 142+kb%:r%?FNgc(wb%,xb%,y b%)=142+kb%:wb%=wb%+1 3270IF NOT zb% AND ac% AND kb%=12 THEN PROCa:PROCnc:VDU 26,12:PROCcc(yb%):PROCd c(bc%):PROCw 3280IF kb%>=10 AND kb%<=11 AND NOT zb% AND NOT ac% THEN VDU 126+kb%:r%?FNgc(wb% ,xb%,yb%)=126+kb%:wb%=wb%+1 3290IF kb%>=10 AND kb%<=11 AND zb% AND NOT ac% THEN VDU 167-kb%:r%?FNgc(wb%,xb% ,yb%)=167-kb%:wb%=wb%+1 3300IF kb%>=3 AND kb%<=4 AND NOT zb% AN D ac% THEN VDU 150+kb%:r%?FNgc(wb%,xb%,y b%)=150+kb%:wb%=wb%+1 3310IF kb%>=5 AND kb%<=6 AND NOT zb% AN D ac% THEN VDU 153+kb%:r%?FNgc(wb%,xb%,y b%)=153+kb%:wb%=wb%+1 3320IF kb%>=7 AND kb%<=8 AND NOT zb% AN D ac% THEN VDU 148-kb%:r%?FNgc(wb%,xb%,y b%)=148-kb%:wb%=wb%+1 3330IF kb%=9 AND NOT zb% AND ac% THEN P ROClc(wb%,xb%,yb%):PROCa:VDU 31,0,xb%:PR OCjc(yb%+xb%):PROCw 3340=wb% 3350: 3360DEF PROCdc(bc%) 3370IF NOT bc% THEN PRINTTAB(0,24);CHR$ (128+ka%);"Press CTRL";CHR$(129);"f9";CH R$(128+ka%);"for help... "; ELSE PRINTTAB(0,24);CHR$(128+ka%);"Press";CHR $(129);"f9";CHR$(128+ka%);"to exit pixel editing..."; 3380ENDPROC 3390: 3400DEF PROCcc(yb%) 3410PRINTTAB(0,0); 3420!&70=r%+FNgc(0,0,yb%) 3430!&72=r%+FNgc(0,0,yb%)+960 3440CALL cc 3450ENDPROC 3460: 3470DEF PROCjc(yb%) 3480!&70=r%+FNgc(0,0,yb%) 3490CALL jc 3500ENDPROC 3510: 3520DEF FNgc(wb%,xb%,yb%) 3530=wb%+(xb%+yb%)*40 3540: 3550DEF FNhc(mc%,kb%) 3560IF mc%>128 THEN mc%=mc%-128 3570mc%=mc%-32 3580p%(1)=(mc% AND 1)=1 3590p%(2)=(mc% AND 2)=2 3600p%(3)=(mc% AND 4)=4 3610p%(4)=(mc% AND 8)=8 3620p%(5)=(mc% AND 16)=16 3630p%(6)=(mc% AND 64)=64 3640IF kb%=ASC("Q") THEN p%(1)=NOT p%(1 ) 3650IF kb%=ASC("W") THEN p%(2)=NOT p%(2 ) 3660IF kb%=ASC("A") THEN p%(3)=NOT p%(3 ) 3670IF kb%=ASC("S") THEN p%(4)=NOT p%(4 ) 3680IF kb%=ASC("Z") THEN p%(5)=NOT p%(5 ) 3690IF kb%=ASC("X") THEN p%(6)=NOT p%(6 ) 3700mc%=160+ABS(p%(1))+ABS(p%(2))*2+ABS (p%(3))*4+ABS(p%(4))*8+ABS(p%(5))*16+ABS (p%(6))*64 3710VDU mc%,8 3720=mc% 3730: 3740DEF PROCsb(mb$) 3750LOCAL za%,nb%,A%,X%,Y% 3760VDU 26 3770PRINTTAB(0,24);CHR$(128+ra%);"Pleas e wait, saving message... "; 3780za%=OPENUP("!Mess") 3790PTR #za%=cb% 3800INPUT #za%,nb% 3810PTR #za%=cb% 3820PRINT #za%,nb%+1 3830PTR #za%=EXT #za% 3840PRINT #za%,mb$ 3850BPUT #za%,0 3860q%?0=za% 3870q%!1=r% 3880q%!5=FNoc+1 3890A%=2 3900X%=q% MOD 256 3910Y%=q% DIV 256 3920CALL &FFD1 3930BPUT #za%,152 3940CLOSE #za% 3950ENDPROC 3960: 3970DEF FNoc 3980!&70=r%+m%+1 3990!&72=r% 4000CALL oc 4010!&72=0 4020=(!&70)-r% 4030: 4040DEF PROCh 4050LOCAL za%,nb%,pc%,qc%,rc%,yb%,kb%,h a%,mb$,sc%,tc% 4060za%=OPENUP("!Mess") 4070PTR #za%=cb% 4080INPUT #za%,nb% 4090IF nb%=0 THEN CLOSE #za%:ENDPROC 4100CLS 4110PROCz("8BS messaging system") 4120PRINTTAB(0,2);CHR$(128+ta%);"Please wait, loading message..." 4130pc%=1 4140tc%=TRUE 4150REPEAT 4160IF NOT tc% THEN VDU 26:PRINTTAB(0,2 4);CHR$(128+sa%);"Please wait, loading m essage... "; 4170tc%=FALSE 4180REPEAT 4190qc%=PTR #za% 4200INPUT #za%,mb$ 4210rc%=BGET #za% 4220PROCuc(za%) 4230UNTIL rc%=0 4240o%(pc%)=qc% 4250VDU 26,12 4260yb%=0 4270PROCcc(yb%) 4280PROCvc(mb$,pc%,nb%) 4290REPEAT 4300REPEAT 4310*FX21 4320kb%=GET 4330IF kb%>=ASC("a") AND kb%<=ASC("z") THEN kb%=kb%-32 4340UNTIL (kb%>=136 AND kb%<=139) OR kb %=27 OR kb%=ASC("E") OR kb%=ASC("D") OR kb%=3 4350zb%=INKEY(-1) 4360IF kb%=3 THEN PROCwc:VDU 26,12:PROC cc(yb%):PROCvc(mb$,pc%,nb%) 4370ha%=FALSE 4380IF kb%=136 AND pc%>1 THEN pc%=pc%-1 :PTR #za%=o%(pc%):ha%=TRUE 4390IF kb%=137 AND pc%<nb% THEN pc%=pc% +1:ha%=TRUE 4400IF kb%=139 AND NOT zb% AND yb%>0 TH EN yb%=yb%-1:VDU 28,0,23,39,0,30,11,26,3 0:PROCjc(yb%) 4410IF kb%=139 AND zb% THEN yb%=FNkc(yb %-12):VDU 26,12:PROCcc(yb%):PROCvc(mb$,p c%,nb%) 4420IF kb%=138 AND NOT zb% AND yb%<(((m %-40) DIV 40)-23) THEN yb%=yb%+1:VDU 28, 0,23,39,0,31,0,23,10,26,31,0,23:PROCjc(y b%+23) 4430IF kb%=138 AND zb% THEN yb%=FNkc(yb %+12):VDU 26,12:PROCcc(yb%):PROCvc(mb$,p c%,nb%) 4440IF kb%=ASC("D") THEN PRINTTAB(0,24) ;CHR$(128+pa%);"Are you sure you want to delete this?";:sc%=FNsc:PROCvc(mb$,pc%, nb%):IF NOT sc% THEN kb%=-1 4450IF kb%=ASC("E") THEN PRINTTAB(0,24) ;CHR$(128+qa%);"Are you sure you want to edit this? ";:sc%=FNsc:PROCvc(mb$,pc%,n b%):IF NOT sc% THEN kb%=-1 4460UNTIL kb%=27 OR ha% OR kb%=ASC("E") OR kb%=ASC("D") 4470UNTIL kb%=27 OR kb%=ASC("E") OR kb% =ASC("D") 4480IF kb%=ASC("D") THEN PTR #za%=o%(pc %):PROCxc(za%) 4490IF kb%=ASC("E") THEN PTR #za%=o%(pc %):PROCxc(za%):CLOSE #za%:mb$=FNrb(mb$,0 ,4):PROCsb(mb$) 4500IF kb%<>ASC("E") THEN CLOSE #za% 4510PROCu 4520ENDPROC 4530: 4540DEF FNsc 4550LOCAL kb$ 4560REPEAT 4570kb$=CHR$(GET AND &DF) 4580UNTIL kb$="Y" OR kb$="N" 4590=(kb$="Y") 4600: 4610DEF PROCuc(za%) 4620LOCAL A%,X%,Y% 4630q%?0=za% 4640q%!1=r% 4650q%!5=m%+1 4660A%=4 4670X%=q% MOD 256 4680Y%=q% DIV 256 4690CALL &FFD1 4700!&70=r%-1 4710!&72=r%+m%+1 4720CALL yc 4730!&76=0 4740PTR #za%=PTR #za%-((m%-q%!5)-(!&74- r%)) 4750ENDPROC 4760: 4770DEF PROCvc(zc$,ad%,bd%) 4780LOCAL cd$ 4790IF ad%>9 AND bd%>9 THEN cd$="" ELSE cd$=" " 4800PRINTTAB(0,24);CHR$(128+ka%);"Messa ge ";ad%;" of ";bd%;",";cd$;"to ";zc$;" -";CHR$(129);"f0";CHR$(128+ka%);"for hel p "; 4810ENDPROC 4820: 4830DEF PROCxc(za%) 4840LOCAL nb%,dd$ 4850INPUT #za%,dd$ 4860BPUT #za%,255 4870PTR #za%=cb% 4880INPUT #za%,nb% 4890PTR #za%=cb% 4900PRINT #za%,nb%-1 4910ENDPROC 4920: 4930DEF PROCi 4940LOCAL ed%,fd%,gd$,nb%,zc$,rc%,hd% 4950CLS 4960PROCz("8BS messaging system") 4970PRINTTAB(0,2);CHR$(128+na%);"Please wait, tidying messages..." 4980VDU 21 4990IF FNwa("!MessB") THEN *id !jd 5000*RENAME !Mess !MessB 5010ed%=OPENIN("!MessB") 5020fd%=OPENOUT("!Mess") 5030INPUT #ed%,gd$ 5040PRINT #fd%,gd$ 5050INPUT #ed%,nb% 5060PRINT #fd%,nb% 5070IF EOF #ed% THEN VDU 6:CLOSE #ed%:C LOSE #fd%:PROCs("DELETE !MessB"):ENDPROC 5080REPEAT 5090INPUT #ed%,zc$ 5100rc%=BGET #ed% 5110IF rc%=0 THEN PRINT #fd%,zc$:BPUT # fd%,rc%:REPEAT:hd%=BGET #ed%:BPUT #fd%,h d%:UNTIL hd%=152 ELSE REPEAT UNTIL BGET #ed%=152 5120UNTIL EOF #ed% 5130CLOSE #ed% 5140CLOSE #fd% 5150*DELETE !MessB 5160VDU 6 5170ENDPROC 5180: 5190DEF PROCwc 5200PROCu 5210PROCz("8BS messaging system") 5220PRINTTAB(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." 5230PRINT'CHR$(128+la%);"Use the cursor left and right keys"'CHR$(128+la%);"to move between messages." 5240PRINT'CHR$(128+la%);"Press D to del ete the current"'CHR$(128+la%);"message and E to edit it." 5250PRINT'CHR$(128+la%);"Press ESCAPE t o return to the menu." 5260PRINTTAB(0,16);CHR$(128+ma%);"Press ESCAPE to return to"'CHR$(128+ma%);"vie wing..."; 5270*FX21 5280REPEAT UNTIL GET=27 5290ENDPROC 5300: 5310DEF PROCnc 5320LOCAL kb% 5330PROCu 5340PROCz("8BS messaging system") 5350PRINTTAB(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 ." 5360PRINT'CHR$(128+la%);"Use";CHR$(129) ;"f0-f6";CHR$(128+la%);"to set the text colour" 5370PRINT CHR$(128+la%);"Use SHIFT";CHR $(129);"f0-f6";CHR$(128+la%);"to set the graphic"'CHR$(128+la%);"colour" 5380PRINT CHR$(128+la%);"Use";CHR$(129) ;"f7/f8";CHR$(128+la%);"for steady/flash ing" 5390PRINT CHR$(128+la%);"Use SHIFT";CHR $(129);"f7/f8";CHR$(128+la%);"for colour ed/black"'CHR$(128+la%);"background" 5400PRINTTAB(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.."; 5410REPEAT 5420*FX21 5430kb%=GET 5440UNTIL (kb%=12 AND INKEY(-2)) OR kb% =27 5450IF kb%=27 THEN ENDPROC 5460CLS 5470PROCz("8BS messaging system") 5480PRINTTAB(0,2);CHR$(128+la%);"Use";C HR$(129);"f9";CHR$(128+la%);"to design a graphic block" 5490PRINT CHR$(128+la%);"Use CTRL";CHR$ (129);"f0/f1";CHR$(128+la%);"to set cont iguous/"'CHR$(128+la%);"separated graphi cs" 5500PRINT CHR$(128+la%);"Use CTRL";CHR$ (129);"f2/f3";CHR$(128+la%);"to hold/rel ease"'CHR$(128+la%);"graphics" 5510PRINT CHR$(128+la%);"Use CTRL";CHR$ (129);"f4/f5";CHR$(128+la%);"for double/ single"'CHR$(128+la%);"height" 5520PRINT CHR$(128+la%);"Use SHIFT";CHR $(129);"f9";CHR$(128+la%);"to change the "'CHR$(128+la%);"recipient of the messag e" 5530PRINT CHR$(128+la%);"Use CTRL";CHR$ (129);"f6";CHR$(128+la%);"to insert a sp ace" 5540PRINT'CHR$(128+la%);"Press ESCAPE t o finish editing" 5550PRINTTAB(0,17);CHR$(128+ma%);"Press ESCAPE to continue editing.."; 5560*FX21 5570REPEAT UNTIL GET=27 5580ENDPROC 5590: 5600DEF PROCv 5610DIM mc% 208 5620PROCs("LOAD SendAss "+STR$÷mc%) 5630pb=mc% 5640cc=mc%+&20 5650oc=mc%+&41 5660jc=mc%+&63 5670yc=mc%+&70 5680ic=mc%+&AB 5690lc=mc%+&BE 5700ENDPROC 5710: 5720DEF PROCj 5730LOCAL za% 5740CLS 5750PROCz("8BS messaging system") 5760PRINTTAB(0,2);CHR$(128+ba%);"Your u ser ID is currently entered"'CHR$(128+ba %);"as ";ab$ 5770PRINT'CHR$(128+ba%);"Please enter y our three-digit user"'CHR$(128+ba%);"ID: ";CHR$(128+ca%); 5780ab$=FNbb(FNca(3,3)) 5790za%=OPENUP("!Mess") 5800PTR #za%=0 5810PRINT #za%,ab$ 5820CLOSE #za% 5830ENDPROC 5840: 5850DEF FNfc(mb$) 5860LOCAL fb%,jb% 5870PROCu 5880PROCz("8BS messaging system") 5890PRINTTAB(0,2);CHR$(128+oa%);"This m essage is currently going"'CHR$(128+oa%) ;"to ";mb$ 5900PRINT'CHR$(128+oa%);"Please enter t he user ID of the"'CHR$(128+oa%);"recipi ent:";CHR$(128+ca%); 5910fb%=POS 5920jb%=VPOS 5930PRINT''CHR$(128+oa%);"(Use 999 for all users and CCC for"'CHR$(128+oa%);"pr ogram comments)" 5940PRINTTAB(fb%,jb%); 5950=FNbb(FNca(3,3)) 5960: 5970DEF PROCk 5980LOCAL za%,gd$,nb%,zc$,rc%,ib% 5990CLS 6000PROCz("8BS messaging system") 6010PRINTTAB(0,2);CHR$(128+k%);"Are you sure you want to undelete?" 6020IF NOT FNsc THEN ENDPROC 6030PRINT'CHR$(128+k%);"Please wait..." 6040ib%=FALSE 6050za%=OPENUP("!Mess") 6060INPUT #za%,gd$ 6070INPUT #za%,nb% 6080IF EOF #za% THEN CLOSE #za%:ENDPROC 6090REPEAT 6100INPUT #za%,zc$ 6110rc%=BGET #za% 6120IF NOT ib% THEN IF rc%=255 THEN PTR #za%=PTR #za%-1:BPUT #za%,0:nb%=nb%+1 6130IF nb%=n% THEN ib%=TRUE 6140REPEAT UNTIL BGET #za%=152 6150UNTIL EOF #za% 6160PTR #za%=cb% 6170PRINT #za%,nb% 6180CLOSE #za% 6190IF ib% THEN PRINT'CHR$(128+k%);"War ning - not all of the messages"'CHR$(128 +k%);"have been recovered."''CHR$(128+k% );"Press SPACE to return to the menu.."; :PROCs("FX21"):REPEAT UNTIL GET=32 6200ENDPROC