10 REM*Basic 20 REMCHAIN"$.!Boot" 25 *Exec 30 *Fx119 40 MODE7:LOMEM=TOP+452:PROCa:b$=FNc:ONERRORPROCd:b$=" " 340 IFb$=" "ANDFNb=4THENb$="D" 350 IFb$=" "ANDFNb=8THENb$="A" 360 IFb$=" "ANDFNb=16THENb$="H" 365 IFb$="A"THENPROCe 370 IFb$="D"THENPROCf 380 IFb$="H"THENPROCj 385 ONERRORVDU3:PROCg("FX3"):CLOSE#0:IFERR=17THENPROCg("FX229,1"):PROCXELSEMODE7:REPORT:PRINT" at line ";ERL:PROCh:END 390 DIMM% -1:IFHIMEM-M%<256THENPROCi("There are less than 256 bytes of RAM free. The program will run but you will keep receiving warnings about the shortage of RAM.") 420 IFFNj("!Mesg")THENPROCkELSEPROCl 440 PROCm 460 REPEAT:PROCn:o%=FNp:IFo%=1THENPROCq 490 IFo%=2THENPROCr 500 IFo%=3THENPROCs 510 IFo%=4THENPROCt 520 IFo%=5THENPROCu 530 UNTILo%=6:MODE7:PROCh:END 580 DEFPROCv 610 *FX229,1 610 *FX4,1 620 *FX225,200 630 *FX226,210 640 *FX227,220 650 *FX202,48 660 ENDPROC 670 DEFPROCh 700 *FX202,32 700 *FX118 710 *FX225,1 720 *FX226,128 730 *FX227,144 740 *FX229 750 *FX4 760 ENDPROC 770 DEFPROCa:ONERRORMODE7:REPORT:PRINT" at line ";ERL:PROCh:END 800 CLOSE#0:PROCv:PROCw:PROCx:PROCy:PROCz:J%=4080:l%=25:DIMn% 32,f% J%,a$(l%-1),b$(l%-1),a%(l%-1):r%=1:PROCH:ENDPROC 930 DEFFNS="SendMes" 970 DEFPROCe 980 *ADFS 980 OSCLI"MOUNT "+STR$K% 1000 *DIR $ 1000 ENDPROC 1010 DEFPROCf 1040 *DISC 1040 OSCLI"DRIVE "+STR$K% 1060 *DIR $ 1060 ENDPROC 1070 DEFPROCj 1074 *HADFS 1074 OSCLI"DIR :"+STR$K%+".$":ENDPROC 1078 DEFPROCw:VDU23,1,0;0;0;0; 1100 ENDPROC 1110 DEFPROCp:VDU23,1,1;0;0;0; 1140 ENDPROC 1150 DEFPROCg($n%):LOCALX%,Y%:X%=n%MOD256:Y%=n%DIV256:CALL65527:ENDPROC 1220 DEFPROCx:t%=150:W%=147:s%=135:u%=131:aa%=131:Z%=132:_%=135:ba%=130:ca%=131:R%=135:`%=131:da%=135:ea%=135:fa%=135:ga%=135:ha%=135:ia%=135:ja%=135:ka%=135:ENDPROC 1440 DEFPROCy:LOCALla%:VDU26,12 1480 PRINTTAB(0,23);CHR$(t%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ";:VDU30,11,30 1500 PRINT" ";CHR$(t%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ";:PRINTCHR$(t%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(t%);"ÿ";:PRINTCHR$(t%);"ÿ";CHR$(W%);"¶£´ ·é¨è° ¶© °à¤ôà à ° °à    ";CHR$(t%);"ÿ"; 1530 PRINTCHR$(t%);"ÿ";CHR$(W%);"¶£´¡·éêê  ²éêê꡵êèêàîê ½¡ ";CHR$(t%);"ÿ";:PRINTCHR$(t%);"";CHR$(W%);"¢£ £¡¢ ¡ ¢¡ ¡¢ ¢ ¡¡ £¢ ¢¡   ":FORla%=1TO19:PRINTCHR$(t%);"ÿ";SPC(36);CHR$(t%);"ÿ";:NEXT:PRINTTAB(7,5);CHR$(W%-16);"8BS messaging system 2.16":VDU28,2,23,37,7 1600 ENDPROC 1610 DEFPROCz:IF?31784=t%THENENDPROC 1640 PROCi("Sorry, this program uses direct screen access and the screen RAM is not at &7C00. If you have them, try disabling your shadow RAM and/or second processor."):VDU26,12 1660 PROCp:PROCh:END 1690 DEFPROCH:i%=TOP:ma%=i%+31:na%=i%+164:oa%=i%+183:pa%=i%+201:qa%=i%+235:ra%=i%+294:sa%=i%+344:ta%=i%+394:ua%=i%+426:ENDPROC 1840 DEFPROCb(T$):PROCA(T$,s%,TRUE):ENDPROC 1880 DEFPROCB(T$):PROCA(T$,s%,FALSE):ENDPROC 1920 DEFPROCA(T$,C%,N%):REPEAT:IFLEN(T$)<36THENPRINTCHR$(C%);T$;SPC((35-LEN(T$))*-N%);:T$=""ELSEA%=INSTR(T$," ",37):A%=A%+(A%=0)*-36:REPEAT:A%=A%-1:UNTILMID$(T$,A%,1)=" ":PRINTCHR$(C%);LEFT$(T$,A%-1);SPC(36-A%);:T$=MID$(T$,A%+1) 1970 UNTILT$="":ENDPROC 1990 DEFPROCi(m$):CLS:PROCb(m$):PRINT'CHR$(s%);"Press SPACE to continue..." 2050 *FX21 2050 REPEATUNTILGET=32:ENDPROC 2070 DEFPROCC(m$):CLS:PROCb(m$):PRINT'CHR$(s%);"Press SPACE to return to BASIC" 2130 *FX21 2130 REPEATUNTILGET=32:VDU26,12 2150 PROCp:PROCh:END 2180 DEFFNc:LOCALb%,n$:CLS:PROCb("Please insert your submission disc in drive 0. This disc should remain in the drive at all times when you are using this program."):PRINT 2200 PROCb("When you have done this, press"+STRING$(7," ")+"A if it an ADFS disc,"+STRING$(15," ")+"D if it is a DFS disc,"+STRING$(14," ")+"H if it is an HADFS disk or"+STRING$(8," ")+"SPACE to use the current filing system."):PRINT:PROCb("If in doubt, just press SPACE.") 2220 PRINT:PROCb("To select another drive enter that drive number."):K%=0:REPEAT*FX21 2230 b%=GET:IFb%>=48ANDb%<=53K%=b%-48:PRINTTAB(10,1);K% 2250 n$=CHR$((b%AND223)-32*(b%=32)):UNTILINSTR(" ADH",n$)<>0:=n$ 2350 DEFFNb:LOCALA%,Y%:A%=0:Y%=0:=(USR(65498)AND255) 2410 DEFPROCd:SOUND1,-10,52,5:ENDPROC 2430 DEFFNj(v$):LOCALd%:d%=OPENIN(v$):IFd%<>0THENCLOSE#d% 2480 =(d%<>0) 2510 DEFPROCk:LOCALd%,va%:CLS:PRINTCHR$(s%);"Please wait, scanning messages...":d%=OPENIN("!Mesg"):va%=BGET#d%:IFva%<>1THENPROCC("The !Mesg file on this disc is a version "+STR$(va%)+" file. This program can only handle version 1 files.") 2570 INPUT#d%,e$:INPUT#d%,d$:d$=FNi(d$):l%=(EXT#d%-256)/4096:IF((EXT#d%-256)MOD4096)<>0ORl%<5ORl%>25THENPROCC("The !Mesg file is an unacceptable size.") 2605 CLOSE#d%:ENDPROC 2620 DEFFNi(g$):LOCALi%:i%=ASC(RIGHT$(g$,1)):REPEAT:IFi%<33ORi%>126THENg$=LEFT$(g$,LEN(g$)-1) 2700 i%=ASC(RIGHT$(g$,1)):UNTIL(i%>=33ANDi%<=126)ORg$="":=g$ 2740 DEFPROCI:REPEAT:PRINT':PROCb("How many messages do you wish to have room for in the message file?"):PRINT'CHR$(s%);"Messages (5-25):";CHR$(u%);:l%=VAL(FNd(1,2,"")):UNTILl%>=5ANDl%<=25:ENDPROC 2740 DEFPROCl:LOCALd%,wa%:e$="":d$="":PROCD:PROCI:PRINT''CHR$(s%);"Please wait...":d%=OPENOUT("!Mesg"):BPUT#d%,1:PRINT#d%,e$:PRINT#d%,LEFT$(d$+STRING$(20," "),20):FORwa%=0TOl%-1:PTR#d%=256+wa%*4096:PRINT#d%,"XXX":BPUT#d%,1:NEXT:PTR#d%=256+l%*4096:CLOSE#d%:ENDPROC 2910 DEFPROCD:LOCALk$:CLS:PROCb("Please enter your three-character ID. If you don't know it, it is shown in the top left hand corner of the menu."):PRINT:PRINT'CHR$(s%);"ID:";CHR$(u%);:e$=FNg(FNd(3,3,e$)):PRINT' 2940 PROCb("Please enter your name as you wish it to appear in message headings. Just enter a blank name if you wish to remain anonymous."):PRINT'CHR$(u%);:d$=FNd(0,20,d$) 2950 CLS:PROCb("Would you like the messaging system to be installed on your submissions disc so that it can be loaded by pressing Shift+Break."):PRINT:PROCb("Would you like this (Y/N) : "):REPEATk$=GET$:UNTILINSTR("YyNn",k$) 2965 IFINSTR("Yy",k$)PROCg("Save !Boot "+STR$~PAGE+" "+STR$~(TOP+451)):PROCg("Opt 4,3") 2970 CLS:ENDPROC 2980 DEFFNd(xa%,ya%,c$):LOCALza%,Aa%,a%:za%=POS:Aa%=VPOS:PRINTLEFT$(c$+STRING$(ya%,"."),ya%);TAB(za%+LEN(c$),Aa%);:REPEAT:REPEAT 3110 *FX21 3110 a%=GET:UNTILa%=13OR(a%>=32ANDa%<=127):IFa%=127ANDLEN(c$)>0THENVDU8,46,8:c$=LEFT$(c$,LEN(c$)-1) 3140 IFa%<>127ANDa%<>13ANDLEN(c$)=xa%):=c$ 3190 DEFFNg(o$):LOCALl$,Ba%,y%:l$="":IFo$=""THEN="" 3220 FORBa%=1TOLEN(o$):y%=ASC(MID$(o$,Ba%,1)):IFy%>=ASC"a"ANDy%<=ASC"z"THENy%=y%-32 3250 l$=l$+CHR$(y%):NEXT:=l$ 3300 DEFFNp:LOCALv%,h$,a%:CLS:PRINTFNa("Start a new message","N");FNa("View/edit/print messages","V");FNa("Print all the messages","P");FNa("Re-enter your user ID/name","R");FNa("Undelete deleted messages","U");:PRINTFNa("Quit the program","Q") 3340 PROCb("Use the up and down cursor keys to move the bar, or press the key shown after the option you want. Press RETURN to select the highlighted option."):PRINT 3360 PROCB("If you select an option by mistake, pressing ESCAPE will usually return you to this menu."):v%=r%:h$="NVPRUQ":PRINTTAB(1,r%-1);CHR$(Z%);CHR$157;CHR$(_%):REPEAT:REPEAT 3430 *FX21 3430 a%=GETAND223:IFINKEY-1ANDa%=27THENv%=LEN(h$):a%=13 3450 UNTILINSTR(CHR$138+CHR$139+CHR$13+h$,CHR$(a%))<>0:r%=INSTR(h$,CHR$(a%)):IFr%=0THENr%=v% 3470 IFa%=138ANDr%1THENr%=r%-1 3490 IFr%<>v%THENPRINTTAB(1,v%-1);" ";CHR$(aa%);TAB(1,r%-1);CHR$(Z%);CHR$157;CHR$(_%):v%=r% 3500 UNTILa%=13:=r% 3540 DEFFNa(q$,h$)=" "+CHR$(aa%)+q$+STRING$(28-LEN(q$)," ")+h$+" "+CHR$156 3560 DEFPROCq:LOCALi$,S%:CLS:IFk%>=l%THENPROCi("Sorry, there is a limit of "+STR$(l%)+" messages."):ENDPROC 3590 PROCb("Please enter the 3-character ID of the person who will receive the message. Messages to individual members are private and will not be published. Enter 999 to send a message to everyone or CCC to send in a comment for publication.") 3600 PRINT'CHR$(s%);"ID:";CHR$(u%); 3620 *FX229 3620 i$=FNg(FNd(3,3,"")) 3640 *FX229,1 3640 PROCJ:S%=(i$<>"CCC"):IFi$="999"THENr$="(all members)"ELSEr$="" 3670 IFS%THENPROCo(CHR$(ba%)+"To: "+CHR$(ca%)+i$+" "+r$,f%) 3680 IFd$=""THENs$=""ELSEs$="("+d$+")" 3690 PROCo(CHR$(ba%)+"From: "+CHR$(ca%)+e$+" "+s$,f%-40*S%):PROCo(CHR$(ba%)+"Subject:"+CHR$(ca%),f%+40-40*S%):i$=FNk(10,1-S%,i$):PROCE(i$,FNn):k%=k%+1:ENDPROC 3750 DEFPROCE(a$,j%):LOCALd%:PRINTTAB(0,0);CHR$(ka%);"Please wait, saving message...";:d%=OPENUP("!Mesg"):PTR#d%=256+j%*4096:PRINT#d%,a$:BPUT#d%,0:PROCK(FNh+1,d%):CLOSE#d%:a$(j%)=a$:b$(j%)=FNl(30):a%(j%)=0:ENDPROC 3900 DEFFNn:LOCALT%,m%:T%=-1:FORm%=0TOl%-1:IFa%(m%)=255THENT%=m% 3970 IFa%(m%)=1THENT%=m%:m%=l% 3980 NEXT:IFT%=-1THENPROCi("An attempt was made to add a new message when no space was free"):PROCg("FX125") 4000 =T% 4030 DEFFNh:!112=f%+J%+1:!114=f%:CALLpa%:!114=0:=(!112)-f% 4100 DEFPROCK(h%,d%):LOCALA%,X%,Y%:n%?0=d%:n%!1=f%:n%!5=h%:A%=2:X%=n%MOD256:Y%=n%DIV256:CALL65489:BPUT#d%,152:ENDPROC 4200 DEFPROCo(p$,Ca%):LOCALq%:q%=Ca%?LEN(p$):$Ca%=p$:Ca%?LEN(p$)=q%:ENDPROC 4270 DEFPROCJ:!112=f%:!114=f%+J%+1:CALLta%:ENDPROC 4330 DEFFNk(g%,c%,a$):LOCALe%,E%,B%,w%,a%:VDU22,7 4370 e%=0:E%=0:B%=(J%DIV40)-25:w%=FALSE:PROCc(a$,w%):PROCF(e%) 4420 *FX21 4420 REPEAT:VDU31,g%,c% 4440 REPEAT:a%=GET:UNTIL(a%>=32ANDa%<=127)OR(a%>=136ANDa%<=139)OR(a%>=200ANDa%<=229)ORa%=13ORa%=27ORa%=20:IFa%=ASC"£"THENa%=35ELSEIFa%=ASC"#"THENa%=95ELSEIFa%=ASC"_"THENa%=96 4490 IFa%>=32ANDa%<=126ANDNOTw%THEN?(g%+c%*40+31744)=a%:f%?(g%+(c%+e%)*40)=a%:g%=g%+1:IFg%=40ANDNOT(e%=B%ANDc%=23)ANDa%<>32THENg%=FNo(c%,e%):c%=c%+1:E%=-1 4510 IFa%=32ANDg%=40THENg%=39:a%=13 4520 IFa%>=200ANDa%<=229THENDa%=FNq(a%,g%,c%):g%=g%-Da%:IFg%=40ANDNOT(e%=B%ANDc%=23)THENg%=0:c%=c%+1:E%=-1 4530 IFa%=127ANDg%>0THEN!112=f%+(c%+e%)*40:?114=g%:CALLna%:!112=31744+c%*40:?114=g%:CALLna%:g%=g%-1 4540 IFa%=13THENIFNOT(e%=B%ANDc%=23)THENf%?((c%+1+e%)*40)=f%?((c%+e%)*40):g%=1:c%=c%+1:E%=-1 4550 IFa%=209THENw%=NOTw%:PROCc(a$,w%) 4560 IFa%=219THENa$=FNr(a$):PROCc(a$,w%) 4570 IFINSTR("QWASZXqwaszx",CHR$(a%))<>0ANDw%THENPROCL(g%,c%,e%,a%) 4580 IFa%=226THENPROCM(g%,c%,e%) 4590 IFa%=227THENPROCN(c%,e%):E%=-1 4600 IFa%=228THENPROCO(c%,e%):E%=-1 4610 IFa%=20THENPROCP(g%,c%,e%,B%):E%=-1 4620 IFa%=136THENg%=g%-1 4630 IFa%=137THENg%=g%+1 4640 IFa%=138THENc%=c%+1 4650 IFa%=139THENc%=c%-1 4660 IFg%<0THENg%=39:c%=c%-1 4670 IFg%>39THENg%=0:c%=c%+1 4680 IFc%<0THENc%=0:e%=e%+(e%>0) 4690 IFc%>23THENc%=23:e%=e%-(e%e%THENPROCF(e%):E%=e%:PROCc(a$,w%) 4710 UNTILa%=27ANDNOTw%:PROCw:PROCy:=a$ 4770 DEFPROCM(g%,c%,e%):IFg%=39THENf%?(39+(c%+e%)*40)=32:?(31744+39+c%*40)=32:ENDPROC 4780 !112=f%+(c%+e%)*40:?114=g%:CALLoa%:!112=31744+c%*40:?114=g%:CALLoa%:ENDPROC 4850 DEFPROCN(c%,e%):LOCALx%,L%:x%=FNh:IFx%>=J%-80THENPROCd:ENDPROC 4900 IF(c%+e%)*40>x%THENENDPROC 4910 !112=f%+(c%+e%-1)*40:!114=f%+(x%DIV40)*40:CALLra%:FORL%=(c%+e%)*40TO39+(c%+e%)*40:f%?L%=32:NEXT:ENDPROC 4980 DEFPROCO(c%,e%):LOCALx%,L%:x%=FNh:IF(c%+e%)*40>x%THENENDPROC 5030 IFx%>=(c%+e%)*40ANDx%<=39+(c%+e%)*40THENFORL%=(c%+e%)*40TO39+(c%+e%)*40:f%?L%=32:NEXT:ENDPROC 5040 !112=f%+(c%+e%)*40:!114=f%+(x%DIV40)*40:CALLsa%:FORL%=(x%DIV40)*40TO(x%DIV40)*40+40:f%?L%=32:NEXT:ENDPROC 5110 DEFPROCc(a$,w%):PRINTTAB(0,24);SPC(39);TAB(0,24);CHR$(ia%);"Message to ";a$;TAB(29,24);:IFw%THENPRINT"Pixel edit";ELSEPRINTSPC(10); 5150 ENDPROC 5160 DEFFNo(c%,e%):LOCALF%,Ea%:F%=40:REPEAT:F%=F%-1:UNTILf%?(F%+(c%+e%)*40)=32ORF%=0:IFf%?(F%+(c%+e%)*40)<>32THENf%?((c%+1+e%)*40)=f%?((c%+e%)*40):=1 5240 FOREa%=F%+1TO39:f%?(Ea%-F%+(c%+1+e%)*40)=f%?(Ea%+(c%+e%)*40):f%?(Ea%+(c%+e%)*40)=32:NEXT:f%?((c%+1+e%)*40)=f%?((c%+e%)*40):=40-F% 5320 DEFPROCF(e%):!112=f%+e%*40:CALLua%:ENDPROC 5350 DEFFNq(a%,g%,c%):LOCALD%:D%=-1:IFa%>=200ANDa%<=208THEND%=a%-71 5400 IFa%>=210ANDa%<=216THEND%=a%-65 5410 IFa%>=217ANDa%<=218THEND%=a%-61 5420 IFa%>=220ANDa%<=221THEND%=a%-67 5430 IFa%>=222ANDa%<=223THEND%=a%-64 5440 IFa%>=224ANDa%<=225THEND%=365-a% 5450 IFD%<>-1THEN?(g%+c%*40+31744)=D%:f%?(g%+(c%+e%)*40)=D%:=TRUE 5460 =FALSE 5490 DEFFNr(a$):PRINTTAB(0,24);SPC(39);TAB(0,24);CHR$(ja%);"Send this message to:";CHR$(u%);:=FNg(FNd(3,3,a$)) 5530 DEFPROCL(g%,c%,e%,a%):LOCALU%,G%,Fa%:U%=2^((INSTR("QWASZ X",CHR$(a%AND223)))-1):G%=f%+g%+(c%+e%)*40:IF(?G%AND160)<>160THEN?G%=?G%OR160 5570 IF(?G%ANDU%)=U%THENFa%=?G%AND(255-U%)ELSEFa%=?G%ORU% 5580 ?G%=Fa%:?(31744+g%+c%*40)=Fa%:ENDPROC 5610 DEFPROCP(g%,c%,e%,B%):LOCALh%,c$:PROCw:PROCy:PRINTCHR$(s%);"Are you sure you want to read in"'CHR$(s%);"a text file?";CHR$(u%);:IFNOTFNeTHENVDU22,7:ENDPROC 5680 PRINT':PROCb("Please insert the disc containing the text file into drive "+STR$K%+" and press SPACE...") 5710 *FX21 5710 REPEATUNTILGET=32:h%=10:IFFNb=4THENPROCf:h%=7 5740 IFFNb=8THENPROCe 5750 IFFNb=16THENPROCj 5755 PRINT:PRINTCHR$(s%);"Filename:";CHR$(u%);:c$=FNd(0,h%,""):IFc$<>""THENPROCQ(g%,c%,e%,B%,c$) 5790 PROCb("Please insert your submission disc in drive "+STR$K%+" and press SPACE...") 5810 *FX21 5810 REPEATUNTILGET=32:IFFNb=4THENPROCf 5830 IFFNb=8THENPROCe 5840 IFFNb=16THENPROCj 5845 VDU22,7 5850 ENDPROC 5860 DEFPROCQ(g%,c%,e%,B%,c$):LOCALd%,f$,q%,O%:d%=OPENIN(c$):IFd%=0THENPRINT':PROCb("Sorry, the file "+c$+" is not present on this disc."):PRINT:ENDPROC 5910 IFEOF#d%THENCLOSE#d%:ENDPROC 5920 PRINT''CHR$(s%);"Please wait..."':REPEAT:f$="":REPEAT:q%=BGET#d%:IFq%=ASC"£"THENq%=35ELSEIFq%=ASC"#"THENq%=95ELSEIFq%=ASC"_"THENq%=96 5990 IFq%>=33ANDq%<=126THENf$=f$+CHR$(q%) 6000 UNTILq%<33ORq%>126OREOF#d%:O%=-1:IFg%+LEN(f$)<=39THENO%=g%:Ga%=c%:Ha%=e%:g%=g%+LEN(f$)+1 6030 IFO%=-1THENg%=1:c%=c%+1:i%=?(f%+(c%-1+e%)*40):IFi%>=129ANDi%<=135THEN?(f%+(c%+e%)*40)=i% 6040 IFc%>23THENc%=23:e%=e%-(e%=129ANDi%<=135THEN?(f%+(c%+e%)*40)=i% 6080 UNTILEOF#d%:CLOSE#d%:ENDPROC 6110 DEFPROCm:LOCALd%,m%,a$,Ia%:d%=OPENIN("!Mesg"):FORm%=0TOl%-1:PTR#d%=256+m%*4096:INPUT#d%,a$:a%(m%)=BGET#d%:IFa%(m%)<>1THENIa%=FNm(d%,FALSE):b$(m%)=FNl(30):a$(m%)=a$ 6200 NEXT:CLOSE#d%:k%=FNs:ENDPROC 6240 DEFFNs:LOCALk%,m%:k%=0:FORm%=0TOl%-1:IFa%(m%)=0THENk%=k%+1 6300 NEXT:=k% 6340 DEFFNl(Ja%):LOCALj$:f%?128=13:j$="Subject:":IFINSTR($f%,j$)=0THENj$="Article:" 6380 IFINSTR($f%,j$)=0THEN="No subject?" 6390 =FNi(MID$($f%,INSTR($f%,j$)+9,Ja%)) 6420 DEFPROCr:LOCALz%,v%,p%,V%,H%,Ka%,P%,a%,La%,Q%:CLS:IFk%=0THENPROCi("Sorry, there are no messages to view."):ENDPROC 6450 z%=1:v%=1:p%=1:V%=-1:REPEAT:REPEAT:PROCR:IFp%=V%THENv%=1:p%=1 6530 CLS:PRINTTAB(0,16);CHR$(R%);"Use:";CHR$(`%);"V";CHR$(R%);"iew,";CHR$(`%);"E";CHR$(R%);"dit,";CHR$(`%);"P";CHR$(R%);"rint,";CHR$(`%);"D";CHR$(R%);"elete";:VDU30 6560 IFz%>k%THENz%=1 6570 H%=z%+13:IFH%>k%THENH%=k% 6580 FORKa%=z%TOH%:PRINTFNa(a$(n%?Ka%)+": "+LEFT$(b$(n%?Ka%),22)," ");:NEXT:P%=H%-z%+1:V%=P%+1:IFk%>14THENPRINTFNa("More messages..."," ");:P%=P%+1 6630 IFp%>P%THENp%=P% 6640 PRINTTAB(1,p%-1);CHR$(Z%);CHR$157;CHR$(_%):REPEAT:REPEAT 6680 *FX21 6680 a%=GETAND223:UNTILINSTR(CHR$138+CHR$139+CHR$13+CHR$27+"PVED",CHR$(a%))<>0:IFa%=138ANDp%1THENp%=p%-1 6720 IFp%<>v%THENPRINTTAB(1,v%-1);" ";CHR$(aa%);TAB(1,p%-1);CHR$(Z%);CHR$157;CHR$(_%):v%=p% 6730 UNTILINSTR(CHR$13+CHR$27+"PVED",CHR$(a%))<>0:IFp%=V%THENz%=z%+14:IFz%>k%THENz%=1 6750 UNTILp%0THENh%=h%+(40-(h%MOD40)) 7290 =h%-960 7320 DEFPROCT(j%):PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(fa%);"Delete this - are you sure?";CHR$(u%);:IFNOTFNeTHENENDPROC 7340 PROCV(j%):ENDPROC 7360 DEFPROCV(j%):LOCALd%:d%=OPENUP("!Mesg"):PTR#d%=256+j%*4096+5:BPUT#d%,255:CLOSE#d%:a%(j%)=255:k%=k%-1:ENDPROC 7460 DEFPROCU(j%):LOCALh%,a$:PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ha%);"Edit this - are you sure?";CHR$(u%);:IFNOTFNeTHENENDPROC 7510 PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ea%);"Loading message, please wait...";:h%=FNf(j%):a$=FNk(1,4,a$(j%)):PROCE(a$,j%):ENDPROC 7580 DEFFNe:LOCALa%:REPEAT 7630 *FX21 7630 a%=GETAND223:UNTILa%=ASC("Y")ORa%=ASC("N"):IFa%=ASC("Y")THENPRINT"Yes";:=TRUE 7660 PRINT"No";:=FALSE 7700 DEFPROCS(j%):LOCALh%:PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ga%);"Print this - are you sure?";CHR$(u%); 7730 *FX229 7730 IFNOTFNeTHENPROCg("FX229,1"):ENDPROC 7740 PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ea%);"Loading message, please wait...";:h%=FNf(j%):PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ga%);"Printing, please wait...";:PROCG(h%) 7790 *FX229,1 7790 ENDPROC 7800 DEFPROCs:LOCALI%:CLS:IFk%=0THENPROCi("Sorry, there are no messages to print."):ENDPROC 7850 PRINTCHR$(s%);"Are you sure you want to print the"'CHR$(s%);"messages?";CHR$(u%); 7870 *FX229 7870 IFNOTFNeTHENPROCg("FX229,1"):ENDPROC 7880 PRINT':PROCb("Please wait, printing - press ESCAPE to stop..."):FORI%=0TOl%-1:IFa%(I%)=0THENPROCG(FNf(I%)) 7920 NEXT 7940 *FX229,1 7940 ENDPROC 7950 DEFPROCG(h%):LOCALI%,y% 7990 *FX3,10 7990 FORI%=0TOh%-1:y%=f%?I%:IFy%>=32ANDy%<=126THENVDUy%ELSEVDU32 8020 IF(I%MOD40)=39ORI%=h%-1THENPRINT 8030 NEXT:PRINT 8060 *FX3 8060 ENDPROC 8070 DEFPROCt:LOCALt$,u$,d%:t$=e$:u$=d$:PROCD:IFe$=t$ANDd$=u$THENENDPROC 8130 d%=OPENUP("!Mesg"):PTR#d%=1:PRINT#d%,e$:PRINT#d%,LEFT$(d$+STRING$(20," "),20):CLOSE#d%:ENDPROC 8190 DEFPROCu:LOCALOa%,Pa%:CLS 8240 *FX229 8240 Oa%=FALSE:FORPa%=0TOl%-1:IFa%(Pa%)=255THENOa%=TRUE:PROCW(Pa%) 8270 NEXT 8290 *FX229,1 8290 IFNOTOa%THENPROCi("Sorry, there are no messages to undelete.") 8300 ENDPROC 8310 DEFPROCW(j%):LOCALd%:PROCB("Undelete the message to "+a$(j%)+" with subject '"+b$(j%)+"'?"):IFPOS>31THENPRINT 8360 VDUu% 8370 IFNOTFNeTHENPRINT':ENDPROC 8380 PRINT' 8400 *FX229,1 8400 d%=OPENUP("!Mesg"):PTR#d%=256+j%*4096+5:BPUT#d%,0:CLOSE#d% 8450 *FX229 8450 a%(j%)=0:k%=k%+1:ENDPROC 8480 DEFPROCn:DIMM% -1:IFHIMEM-M%>=256THENENDPROC 8520 IFHIMEM-M%>=128THENPROCi("There are less than 256 bytes of RAM free. I recommend quitting the program and restarting, as a crash may occur if RAM is exhausted."):ENDPROC 8530 PROCi("There are less than 128 bytes of RAM free. You should quit the program and restart it very soon, otherwise a crash may occur due to lack of RAM."):ENDPROC