2 MODE7:LOMEM=TOP+452:PROCa:b$=FNc:ONERRORPROCd:b$=" " 310 IFb$=" "ANDFNb=4THENb$="D" 320 IFb$=" "ANDFNb=8THENb$="A" 330 IFb$=" "ANDFNb=16THENb$="H" 335 IFb$="A"THENPROCe 340 IFb$="D"THENPROCf 350 IFb$="H"THENPROCj 355 ONERRORVDU3:PROCg("FX3"):CLOSE#0:IFERR=17THENPROCg("FX229,1"):GOTO410ELSEMODE7:REPORT:PRINT" at line ";ERL:PROCh:END 360 :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.") 390 :IFFNj("!Mesg")THENPROCkELSEPROCl 410 REPEAT:PROCm:n%=FNo:IFn%=1THENPROCp 450 IFn%=2THENPROCq 460 IFn%=3THENPROCr 470 IFn%=4THENPROCs 480 IFn%=5THENPROCt 490 IFn%=6THENPROCu 500 UNTILn%=7::MODE7:PROCh:END 550 570 DEFPROCv 580 *FX229,1 580 *FX4,1 590 *FX225,200 600 *FX226,210 610 *FX227,220 620 *FX202,48 630 ENDPROC 640 660 DEFPROCh 670 *FX202,32 670 *FX118 680 *FX225,1 690 *FX226,128 700 *FX227,144 710 *FX229 720 *FX4 730 ENDPROC 740 760 DEFPROCa:ONERRORMODE7:REPORT:PRINT" at line ";ERL:PROCh:END 770 CLOSE#0:PROCv:PROCw:PROCx:PROCy:PROCz:I%=4096:y%=25:v%=TRUE:aa%=TRUE:DIMp% 32,e% I%,a$(y%),a%(y%),b$(y%):o%=1:PROCK:ENDPROC 910 950 DEFPROCe 960 *ADFS 960 *MOUNT 0 970 *DIR $ 980 ENDPROC 990 1010 DEFPROCf 1020 *DISC 1020 *DRIVE 0 1030 *DIR $ 1040 ENDPROC 1050 1052 DEFPROCj 1053 *HADFS 1053 *DIR :0.$ 1054 ENDPROC 1055 1070 DEFPROCw:VDU23,1,0;0;0;0; 1080 ENDPROC 1090 1110 DEFPROCo:VDU23,1,1;0;0;0; 1120 ENDPROC 1130 1150 DEFPROCg($p%):LOCALX%,Y%:X%=p%MOD256:Y%=p%DIV256:CALL65527:ENDPROC 1200 1220 DEFPROCx:r%=150:`%=147:i%=135:s%=131:ba%=131:ca%=132:da%=135:ea%=130:fa%=131:U%=135:ga%=131:ha%=135:ia%=135:ja%=135:ka%=135:la%=135:ma%=135:na%=135:oa%=135:ENDPROC 1420 1440 DEFPROCy:LOCALpa%:VDU26,12 1460 PRINTTAB(0,23);CHR$(r%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ";:VDU30,11,30 1480 PRINT" ";CHR$(r%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ";:PRINTCHR$(r%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(r%);"ÿ";:PRINTCHR$(r%);"ÿ";CHR$(`%);"¶£´ ·é¨è° ¶© °à¤ôà à ° °à    ";CHR$(r%);"ÿ"; 1510 PRINTCHR$(r%);"ÿ";CHR$(`%);"¶£´¡·éêê  ²éêê꡵êèêàîê ½¡ ";CHR$(r%);"ÿ";:PRINTCHR$(r%);"";CHR$(`%);"¢£ £¡¢ ¡ ¢¡ ¡¢ ¢ ¡¡ £¢ ¢¡   ":FORpa%=1TO19:PRINTCHR$(r%);"ÿ";SPC(36);CHR$(r%);"ÿ";:NEXT 1580 PRINTTAB(6,5);CHR$(`%-16);"8BS messaging system 2.00C":VDU28,2,23,37,7:ENDPROC 1590 1610 DEFPROCz:IF?31784=r%THENENDPROC 1620 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 1640 PROCo:PROCh:END 1670 1690 DEFPROCK:j%=TOP:qa%=j%+31:ra%=j%+164:sa%=j%+183:ta%=j%+201:ua%=j%+235:va%=j%+294:wa%=j%+344:xa%=j%+394:ya%=j%+426:ENDPROC 1820 1840 DEFPROCb(T$):PROCA(T$,i%,TRUE):ENDPROC 1860 1880 DEFPROCB(T$):PROCA(T$,i%,FALSE):ENDPROC 1900 1930 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) 1950 UNTILT$="":ENDPROC 1970 1990 DEFPROCi(m$):CLS:PROCb(m$):PRINT'CHR$(i%);"Press SPACE to continue..." 2030 *FX21 2030 REPEATUNTILGET=32:ENDPROC 2050 2070 DEFPROCL(m$):CLS:PROCb(m$):PRINT'CHR$(i%);"Press SPACE to return to BASIC" 2110 *FX21 2110 REPEATUNTILGET=32:VDU26,12 2130 PROCo:PROCh:END 2160 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 2220 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."):REPEAT 2270 *FX21 2270 b%=GET:n$=CHR$((b%AND223)-32*(b%=32)):UNTILINSTR(" ADH",n$)<>0:=n$ 2330 DEFFNb:LOCALA%,Y%:=(USR(65498)AND255) 2390 DEFPROCd:SOUND1,-10,52,5:ENDPROC 2410 2430 DEFFNj(y$):LOCALa%:a%=OPENIN(y$):IFa%<>0THENCLOSE#a% 2460 =(a%<>0) 2490 DEFPROCk:LOCALa%,za%,g%:CLS:PRINTCHR$(i%);"Please wait...":a%=OPENIN("!Mesg"):za%=BGET#a%:IFza%<>0THENPROCL("The !Mesg file on this disc is a version "+STR$(za%)+" file. This program can only handle version 0 files.") 2550 INPUT#a%,e$:INPUT#a%,d$:d$=FNl(d$):J%=PTR#a%:INPUT#a%,g%:Aa%=PTR#a%:CLOSE#a%:ENDPROC 2630 2650 DEFFNl(i$):REPEAT:IFRIGHT$(i$,1)=" "THENi$=LEFT$(i$,LEN(i$)-1) 2670 UNTILRIGHT$(i$,1)<>" ":=i$ 2710 DEFPROCl:LOCALa%:e$="":d$="":PROCC:a%=OPENOUT("!Mesg"):BPUT#a%,0:PRINT#a%,e$:PRINT#a%,LEFT$(d$+STRING$(20," "),20):J%=PTR#a%:PRINT#a%,0:Aa%=PTR#a%:CLOSE#a%:ENDPROC 2830 2850 DEFPROCC: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'CHR$(i%);"ID:";CHR$(s%);:e$=FNi(FNe(3,3,e$)):PRINT' 2900 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$(s%);:d$=FNe(0,20,d$):ENDPROC 2940 2960 DEFFNe(Ba%,Ca%,c$):LOCALDa%,Ea%,b%:Da%=POS:Ea%=VPOS:PRINTLEFT$(c$+STRING$(Ca%,"."),Ca%);TAB(Da%+LEN(c$),Ea%);:REPEAT:REPEAT 3030 *FX21 3030 b%=GET:UNTILb%=13OR(b%>=32ANDb%<=127):IFb%=127ANDLEN(c$)>0THENVDU8,46,8:c$=LEFT$(c$,LEN(c$)-1) 3060 IFb%<>127ANDb%<>13ANDLEN(c$)=Ba%):=c$ 3110 DEFFNi(o$):LOCALl$,Fa%,w%:l$="":IFo$=""THEN="" 3140 FORFa%=1TOLEN(o$):w%=ASC(MID$(o$,Fa%,1)):IFw%>=ASC"a"ANDw%<=ASC"z"THENw%=w%-32 3170 l$=l$+CHR$(w%):NEXT:=l$ 3220 DEFFNo:LOCALx%,j$,b%:CLS:PRINTFNa("Start a new message","N");FNa("View/edit/print messages","V");FNa("Print all the messages","P");FNa("Tidy the messages","T");FNa("Re-enter your user ID/name","R");FNa("Undelete deleted messages","U"); 3250 PRINTFNa("Quit the program","Q"):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 3280 PROCB("If you select an option by mistake, pressing ESCAPE will usually return you to this menu."):x%=o%:j$="NVPTRUQ":PRINTTAB(1,o%-1);CHR$(ca%);CHR$157;CHR$(da%):REPEAT:REPEAT 3350 *FX21 3350 b%=GETAND223:UNTILINSTR(CHR$138+CHR$139+CHR$13+j$,CHR$(b%))<>0:o%=INSTR(j$,CHR$(b%)):IFo%=0THENo%=x% 3380 IFb%=138ANDo%1THENo%=o%-1 3400 IFo%<>x%THENPRINTTAB(1,x%-1);" ";CHR$(ba%);TAB(1,o%-1);CHR$(ca%);CHR$157;CHR$(da%):x%=o% 3410 UNTILb%=13:=o% 3450 DEFFNa(r$,j$)=" "+CHR$(ba%)+r$+STRING$(28-LEN(r$)," ")+j$+" "+CHR$156 3470 DEFPROCp:LOCALg$,V%:CLS:IFFNf>=y%THENPROCi("Sorry, there is a limit of "+STR$(y%)+" messages."):ENDPROC 3500 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.") 3510 PRINT'CHR$(i%);"ID:";CHR$(s%); 3530 *FX229 3530 g$=FNi(FNe(3,3,"")) 3550 *FX229,1 3550 PROCM:V%=(g$<>"CCC"):IFg$="999"THENs$="(all members)"ELSEs$="" 3580 IFV%THENPROCn(CHR$(ea%)+"To: "+CHR$(fa%)+g$+" "+s$,e%) 3590 IFd$=""THENt$=""ELSEt$="("+d$+")" 3600 PROCn(CHR$(ea%)+"From: "+CHR$(fa%)+e$+" "+t$,e%-40*V%):PROCn(CHR$(ea%)+"Subject:"+CHR$(fa%),e%+40-40*V%):g$=FNm(10,1-V%,g$):PROCD(g$):ENDPROC 3650 3670 DEFPROCD(a$):LOCALa%,g%:PRINTTAB(0,0);CHR$(oa%);"Please wait, saving message...";:a%=OPENUP("!Mesg"):PTR#a%=EXT#a%:PRINT#a%,a$:BPUT#a%,0:PROCE(FNk+1,a%):PTR#a%=J%:INPUT#a%,g%:PTR#a%=J%:PRINT#a%,g%+1:CLOSE#a%:v%=TRUE:ENDPROC 3830 3850 DEFFNk:!112=e%+I%+1:!114=e%:CALLta%:!114=0:=(!112)-e% 3920 DEFPROCE(h%,a%):LOCALA%,X%,Y%:p%?0=a%:p%!1=e%:p%!5=h%:A%=2:X%=p%MOD256:Y%=p%DIV256:CALL65489:BPUT#a%,152:ENDPROC 4020 4040 DEFFNf:LOCALa%:IFNOTv%ANDNOTaa%THEN=Ga% 4060 a%=OPENIN("!Mesg"):PTR#a%=J%:INPUT#a%,Ga%:CLOSE#a%:aa%=FALSE:=Ga% 4140 DEFPROCn(p$,Ha%):LOCALl%:l%=Ha%?LEN(p$):$Ha%=p$:Ha%?LEN(p$)=l%:ENDPROC 4190 4210 DEFPROCM:!112=e%:!114=e%+I%+1:CALLxa%:ENDPROC 4250 4270 DEFFNm(f%,c%,a$):LOCALd%,F%,z%,t%,b%:VDU22,7 4290 d%=0:F%=0:z%=(I%DIV40)-25:t%=FALSE:PROCc(a$,t%):PROCF(d%) 4340 *FX21 4340 REPEAT:VDU31,f%,c% 4360 REPEAT:b%=GET:UNTIL(b%>=32ANDb%<=127)OR(b%>=136ANDb%<=139)OR(b%>=200ANDb%<=229)ORb%=13ORb%=27ORb%=20:IFb%=ASC"£"THENb%=35ELSEIFb%=ASC"#"THENb%=95ELSEIFb%=ASC"_"THENb%=96 4410 IFb%>=32ANDb%<=126ANDNOTt%THEN?(f%+c%*40+31744)=b%:e%?(f%+(c%+d%)*40)=b%:f%=f%+1:IFf%=40ANDNOT(d%=z%ANDc%=23)ANDb%<>32THENf%=FNp(c%,d%):c%=c%+1:F%=-1 4430 IFb%=32ANDf%=40THENf%=39:b%=13 4440 IFb%>=200ANDb%<=229THENIa%=FNq(b%,f%,c%):f%=f%-Ia%:IFf%=40ANDNOT(d%=z%ANDc%=23)THENf%=0:c%=c%+1:F%=-1 4450 IFb%=127ANDf%>0THEN!112=e%+(c%+d%)*40:?114=f%:CALLra%:!112=31744+c%*40:?114=f%:CALLra%:f%=f%-1 4460 IFb%=13THENIFNOT(d%=z%ANDc%=23)THENe%?((c%+1+d%)*40)=e%?((c%+d%)*40):f%=1:c%=c%+1:F%=-1 4470 IFb%=209THENt%=NOTt%:PROCc(a$,t%) 4480 IFb%=219THENa$=FNr(a$):PROCc(a$,t%) 4490 IFINSTR("QWASZXqwaszx",CHR$(b%))<>0ANDt%THENPROCN(f%,c%,d%,b%) 4500 IFb%=226THENPROCO(f%,c%,d%) 4510 IFb%=227THENPROCP(c%,d%):F%=-1 4520 IFb%=228THENPROCQ(c%,d%):F%=-1 4530 IFb%=20THENPROCR(f%,c%,d%,z%):F%=-1 4540 IFb%=136THENf%=f%-1 4550 IFb%=137THENf%=f%+1 4560 IFb%=138THENc%=c%+1 4570 IFb%=139THENc%=c%-1 4580 IFf%<0THENf%=39:c%=c%-1 4590 IFf%>39THENf%=0:c%=c%+1 4600 IFc%<0THENc%=0:d%=d%+(d%>0) 4610 IFc%>23THENc%=23:d%=d%-(d%d%THENPROCF(d%):F%=d%:PROCc(a$,t%) 4630 UNTILb%=27ANDNOTt%:PROCw:PROCy:=a$ 4690 DEFPROCO(f%,c%,d%):IFf%=39THENe%?(39+(c%+d%)*40)=32:?(31744+39+c%*40)=32:ENDPROC 4700 !112=e%+(c%+d%)*40:?114=f%:CALLsa%:!112=31744+c%*40:?114=f%:CALLsa%:ENDPROC 4770 4790 DEFPROCP(c%,d%):LOCALu%,O%:u%=FNk:IFu%>=I%-80THENPROCd:ENDPROC 4820 IF(c%+d%)*40>u%THENENDPROC 4830 !112=e%+(c%+d%-1)*40:!114=e%+(u%DIV40)*40:CALLva%:FORO%=(c%+d%)*40TO39+(c%+d%)*40:e%?O%=32:NEXT:ENDPROC 4900 4920 DEFPROCQ(c%,d%):LOCALu%,O%:u%=FNk:IF(c%+d%)*40>u%THENENDPROC 4950 IFu%>=(c%+d%)*40ANDu%<=39+(c%+d%)*40THENFORO%=(c%+d%)*40TO39+(c%+d%)*40:e%?O%=32:NEXT:ENDPROC 4960 !112=e%+(c%+d%)*40:!114=e%+(u%DIV40)*40:CALLwa%:FORO%=(u%DIV40)*40TO(u%DIV40)*40+40:e%?O%=32:NEXT:ENDPROC 5030 5050 DEFPROCc(a$,t%):PRINTTAB(0,24);SPC(39);TAB(0,24);CHR$(ma%);"Message to ";a$;TAB(29,24);:IFt%THENPRINT"Pixel edit";ELSEPRINTSPC(10); 5070 ENDPROC 5080 5100 DEFFNp(c%,d%):LOCALG%,S%:G%=40:REPEAT:G%=G%-1:UNTILe%?(G%+(c%+d%)*40)=32ORG%=0:IFe%?(G%+(c%+d%)*40)<>32THENe%?((c%+1+d%)*40)=e%?((c%+d%)*40):=1 5160 FORS%=G%+1TO39:e%?(S%-G%+(c%+1+d%)*40)=e%?(S%+(c%+d%)*40):e%?(S%+(c%+d%)*40)=32:NEXT:e%?((c%+1+d%)*40)=e%?((c%+d%)*40):=40-G% 5240 DEFPROCF(d%):!112=e%+d%*40:CALLya%:ENDPROC 5270 5290 DEFFNq(b%,f%,c%):LOCALB%:B%=-1:IFb%>=200ANDb%<=208THENB%=b%-71 5320 IFb%>=210ANDb%<=216THENB%=b%-65 5330 IFb%>=217ANDb%<=218THENB%=b%-61 5340 IFb%>=220ANDb%<=221THENB%=b%-67 5350 IFb%>=222ANDb%<=223THENB%=b%-64 5360 IFb%>=224ANDb%<=225THENB%=365-b% 5370 IFB%<>-1THEN?(f%+c%*40+31744)=B%:e%?(f%+(c%+d%)*40)=B%:=TRUE 5380 =FALSE 5410 DEFFNr(a$):PRINTTAB(0,24);SPC(39);TAB(0,24);CHR$(na%);"Send this message to:";CHR$(s%);:=FNi(FNe(3,3,a$)) 5450 DEFPROCN(f%,c%,d%,b%):LOCALW%,K%,Ja%:W%=2^((INSTR("QWASZ X",CHR$(b%AND223)))-1):K%=e%+f%+(c%+d%)*40:IF(?K%AND160)<>160THEN?K%=?K%OR160 5490 IF(?K%ANDW%)=W%THENJa%=?K%AND(255-W%)ELSEJa%=?K%ORW% 5500 ?K%=Ja%:?(31744+f%+c%*40)=Ja%:ENDPROC 5530 5550 DEFPROCR(f%,c%,d%,z%):LOCALh%,c$:PROCw:PROCy:PRINTCHR$(i%);"Are you sure you want to read in"'CHR$(i%);"a text file?";CHR$(s%);:IFNOTFNdTHENVDU22,7:ENDPROC 5600 PRINT':PROCb("Please insert the disc containing the text file into drive 0 and press SPACE...") 5630 *FX21 5630 REPEATUNTILGET=32:h%=10:IFFNb=4THENPROCf:h%=7 5660 IFFNb=8THENPROCe 5670 IFFNb=16THENPROCj 5675 PRINT:PRINTCHR$(i%);"Filename:";CHR$(s%);:c$=FNe(0,h%,""):IFc$<>""THENPROCS(f%,c%,d%,z%,c$) 5710 PROCb("Please insert your submission disc in drive 0 and press SPACE...") 5730 *FX21 5730 REPEATUNTILGET=32:IFFNb=4THENPROCf 5750 IFFNb=8THENPROCe 5760 IFFNb=16THENPROCj 5765 VDU22,7 5770 ENDPROC 5780 5800 DEFPROCS(f%,c%,d%,z%,c$):LOCALa%,f$,l%,P%:a%=OPENIN(c$):IFa%=0THENPRINT':PROCb("The file "+c$+" is not present on this disc."):PRINT:ENDPROC 5830 IFEOF#a%THENCLOSE#a%:ENDPROC 5840 PRINT''CHR$(i%);"Please wait..."':REPEAT:f$="":REPEAT:l%=BGET#a%:IFl%=ASC"£"THENl%=35ELSEIFl%=ASC"#"THENl%=95ELSEIFl%=ASC"_"THENl%=96 5910 IFl%>=33ANDl%<=126THENf$=f$+CHR$(l%) 5920 UNTILl%<33ORl%>126OREOF#a%:P%=-1:IFf%+LEN(f$)<=39THENP%=f%:Ka%=c%:La%=d%:f%=f%+LEN(f$)+1 5950 IFP%=-1THENf%=1:c%=c%+1:j%=?(e%+(c%-1+d%)*40):IFj%>=129ANDj%<=135THEN?(e%+(c%+d%)*40)=j% 5960 IFc%>23THENc%=23:d%=d%-(d%=129ANDj%<=135THEN?(e%+(c%+d%)*40)=j% 6000 UNTILEOF#a%:CLOSE#a%:ENDPROC 6030 6050 DEFPROCG:LOCALa%,g%,Ma%,Q%,k%,h$,Na%,a$:a%=OPENIN("!Mesg"):PTR#a%=J%:INPUT#a%,g%:PTR#a%=Aa%:FORMa%=1TOg%:REPEAT:Q%=PTR#a%:INPUT#a%,a$:k%=BGET#a%:k%=(k%<>0):Na%=FNg(a%):h$=FNn(22):UNTILNOTk%:a$(Ma%)=a$:a%(Ma%)=Q%:b$(Ma%)=h$:NEXT:CLOSE#a%:ENDPROC 6240 6260 DEFFNn(Oa%):LOCALk$:e%?128=13:k$="Subject:":IFINSTR($e%,k$)=0THENk$="Article:" 6300 IFINSTR($e%,k$)=0THEN="No subject?" 6310 =MID$($e%,INSTR($e%,k$)+9,Oa%) 6340 DEFPROCq:LOCALg%,H%,x%,m%,Z%,L%,Pa%,_%,b%,T%:CLS:g%=FNf:IFg%=0THENPROCi("There are no messages on this disc."):ENDPROC 6380 REPEAT:CLS:IFv%THENPROCb("Please wait, scanning messages..."):PROCG:v%=FALSE 6410 H%=1:x%=1:m%=1:Z%=-1:REPEAT:REPEAT:IFm%=Z%THENx%=1:m%=1 6480 CLS:PRINTTAB(0,16);CHR$(U%);"Use:";CHR$(ga%);"V";CHR$(U%);"iew,";CHR$(ga%);"E";CHR$(U%);"dit,";CHR$(ga%);"P";CHR$(U%);"rint,";CHR$(ga%);"D";CHR$(U%);"elete";:VDU30 6510 L%=H%+13:IFL%>g%THENL%=g% 6520 FORPa%=H%TOL%:PRINTFNa(a$(Pa%)+": "+LEFT$(b$(Pa%),22)," ");:NEXT:_%=L%-H%+1:Z%=_%+1:IFg%>14THENPRINTFNa("More messages..."," ");:_%=_%+1 6570 PRINTTAB(1,m%-1);CHR$(ca%);CHR$157;CHR$(da%):REPEAT:REPEAT 6610 *FX21 6610 b%=GETAND223:UNTILINSTR(CHR$138+CHR$139+CHR$13+CHR$27+"PVED",CHR$(b%))<>0:IFb%=138ANDm%<_%THENm%=m%+1 6640 IFb%=139ANDm%>1THENm%=m%-1 6650 IFm%<>x%THENPRINTTAB(1,x%-1);" ";CHR$(ba%);TAB(1,m%-1);CHR$(ca%);CHR$157;CHR$(da%):x%=m% 6660 UNTILINSTR(CHR$13+CHR$27+"PVED",CHR$(b%))<>0:IFm%=Z%THENH%=H%+14:IFH%>g%THENH%=1 6680 UNTILm%0THENh%=h%+(40-(h%MOD40)) 7110 =h%-960 7160 DEFFNu(q%):PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ja%);"Delete this - are you sure?";CHR$(s%);:IFNOTFNdTHEN=FALSE 7180 PROCH(q%,FALSE):=TRUE 7220 DEFPROCH(q%,Ra%):LOCALa%,a$:a%=OPENUP("!Mesg"):PTR#a%=a%(q%):INPUT#a%,a$:IFRa%THENBPUT#a%,128ELSEBPUT#a%,255 7270 PTR#a%=J%:INPUT#a%,g%:PTR#a%=J%:PRINT#a%,g%-1:CLOSE#a%:ENDPROC 7330 7370 DEFFNv(q%):LOCALh%,a$:PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(la%);"Edit this - are you sure?";CHR$(s%);:IFNOTFNdTHEN=FALSE 7400 PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ia%);"Loading message, please wait...";:h%=FNh(q%):a$=FNm(1,4,a$(q%)):PROCD(a$):PROCH(q%,TRUE):=TRUE 7500 DEFFNd:LOCALb%:REPEAT 7530 *FX21 7530 b%=GETAND223:UNTILb%=ASC("Y")ORb%=ASC("N"):IFb%=ASC("Y")THENPRINT"Yes";:=TRUE 7560 PRINT"No";:=FALSE 7600 DEFPROCT(q%):LOCALh%:PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ka%);"Print this - are you sure?";CHR$(s%); 7630 *FX229 7630 IFNOTFNdTHENPROCg("FX229,1"):ENDPROC 7640 PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ia%);"Loading message, please wait...";:h%=FNh(q%):PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ka%);"Printing, please wait...";:PROCI(h%) 7690 *FX229,1 7690 ENDPROC 7700 7720 DEFPROCr:LOCALg%,R%:CLS:g%=FNf:IFg%=0THENPROCi("There are no messages on this disc."):ENDPROC 7760 PRINTCHR$(i%);"Are you sure you want to print the"'CHR$(i%);"messages?";CHR$(s%); 7780 *FX229 7780 IFNOTFNdTHENPROCg("FX229,1"):ENDPROC 7790 PRINT':IFv%THENPRINTCHR$(i%);"Please wait, scanning messages..."':PROCG:v%=FALSE 7810 PROCb("Please wait, printing - press ESCAPE to stop..."):FORR%=1TOg%:PROCI(FNh(R%)):NEXT 7860 *FX229,1 7860 ENDPROC 7870 7890 DEFPROCI(h%):LOCALR%,w% 7910 *FX3,10 7910 FORR%=0TOh%-1:w%=e%?R%:IFw%>=32ANDw%<=126THENVDUw%ELSEVDU32 7940 IF(R%MOD40)=39ORR%=h%-1THENPRINT 7950 NEXT:PRINT 7980 *FX3 7980 ENDPROC 7990 8010 DEFPROCt:LOCALu$,v$,a%:u$=e$:v$=d$:PROCC:IFe$=u$ANDd$=v$THENENDPROC 8050 a%=OPENUP("!Mesg"):PTR#a%=1:PRINT#a%,e$:PRINT#a%,LEFT$(d$+STRING$(20," "),20):CLOSE#a%:ENDPROC 8110 8130 DEFPROCs:LOCALg%,D%,E%,w$,x$,S%,a$,k%,h%:CLS:PRINTCHR$(i%);"Are you sure you want to tidy the"'CHR$(i%);"messages?";CHR$(s%); 8170 *FX229 8170 IFNOTFNdTHENPROCg("FX229,1"):ENDPROC 8180 *FX229,1 8190 PRINT''CHR$(i%);"Please wait...";:v%=TRUE:IFFNj("!MesgB")THENPROCg("Delete !MesgB") 8220 *Rename !Mesg !MesgB 8230 D%=OPENIN("!MesgB"):E%=OPENOUT("!Mesg"):BPUT#E%,BGET#D%:INPUT#D%,w$:PRINT#E%,w$:INPUT#D%,x$:PRINT#E%,x$:INPUT#D%,g%:PRINT#E%,g%:IFg%=0THENCLOSE#D%:CLOSE#E%:PROCg("Delete !MesgB"):ENDPROC 8300 FORS%=1TOg%:REPEAT:INPUT#D%,a$:k%=BGET#D%:k%=(k%<>0):h%=FNg(D%):IFNOTk%THENPRINT#E%,a$:BPUT#E%,0:PROCE(h%+1,E%) 8360 UNTILNOTk%:NEXT:CLOSE#D%:CLOSE#E% 8410 *Delete !MesgB 8410 ENDPROC 8420 8440 DEFPROCu:LOCALg%,q$,a%,Q%,k%,Na%,h$,Sa%:CLS:g%=FNf:IFg%=y%THENPROCi("Sorry, there is a limit of "+STR$(y%)+" messages."):ENDPROC 8480 *FX229 8490 PRINTCHR$(i%);"Please wait..."':q$="":a%=OPENUP("!Mesg"):PTR#a%=Aa%:IFEOF#a%THENPROCi("There are no messages on this disc."):CLOSE#a%:ENDPROC 8540 REPEAT:REPEAT:INPUT#a%,a$:Q%=PTR#a%:k%=BGET#a%:k%=(k%=255):Na%=FNg(a%):h$=FNl(FNn(30)):Sa%=(PTR#a%=EXT#a%):UNTILk%ORSa%:IFk%THENq$="more ":g%=FNw(a%,Q%,a$,h$,g%) 8670 UNTILSa%ORg%=y%:CLOSE#a% 8700 *FX229,1 8700 IFg%=y%THENPROCb("There are now the maximum "+STR$(y%)+" messages. Press SPACE to continue...")ELSEPROCb("There are no "+q$+"deleted messages. Press SPACE to continue...") 8710 *FX21 8720 REPEATUNTILGET=32:ENDPROC 8740 8760 DEFFNw(a%,Q%,a$,h$,g%):LOCALTa%:PROCB("Undelete the message to "+a$+" with subject '"+h$+"'?"):IFPOS>31THENPRINT 8790 VDUs% 8800 IFNOTFNdTHENPRINT':=g% 8810 PRINT' 8830 *FX229,1 8830 Ta%=PTR#a%:PTR#a%=Q%:BPUT#a%,0:PTR#a%=J%:PRINT#a%,g%+1:PTR#a%=Ta% 8900 *FX229 8900 v%=TRUE:=g%+1 8940 DEFPROCm:DIMM% -1:IFHIMEM-M%>=256THENENDPROC 8960 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 8970 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