2MODE7:LOMEM=TOP+452:PROCa:b$=FNc:ON
ERRORPROCd:b$=" "
310IFb$=" "ANDFNb=4THENb$="D"
320IFb$=" "ANDFNb=8THENb$="A"
330IFb$=" "ANDFNb=16THENb$="H"
335IFb$="A"THENPROCe
340IFb$="D"THENPROCf
350IFb$="H"THENPROCj
355ONERRORVDU3:PROCg("FX3"):CLOSE#0:IF
ERR=17THENPROCg("FX229,1"):GOTO410ELSEMO
DE7:REPORT:PRINT" at line ";ERL:PROCh:EN
D
360:DIMM% -1:IFHIMEM-M%<256THENPROCi("
There are less than 256 bytes of RAM fre
e. The program will run but you will kee
p receiving warnings about the shortage
of RAM.")
390:IFFNj("!Mesg")THENPROCkELSEPROCl
410REPEAT:PROCm:n%=FNo:IFn%=1THENPROCp
450IFn%=2THENPROCq
460IFn%=3THENPROCr
470IFn%=4THENPROCs
480IFn%=5THENPROCt
490IFn%=6THENPROCu
500UNTILn%=7::MODE7:PROCh:END
550
570DEFPROCv
580*FX4,1
590*FX225,200
600*FX226,210
610*FX227,220
620*FX202,48
630ENDPROC
640
660DEFPROCh
670*FX118
680*FX225,1
690*FX226,128
700*FX227,144
710*FX229
720*FX4
730ENDPROC
740
760DEFPROCa:ONERRORMODE7:REPORT:PRINT"
at line ";ERL:PROCh:END
770CLOSE#0:PROCv:PROCw:PROCx:PROCy:PRO
Cz:I%=4096:y%=25:v%=TRUE:aa%=TRUE:DIMp%
32,e% I%,a$(y%),a%(y%),b$(y%):o%=1:PROCK
:ENDPROC
910
930DEFFNS="SndMesC"
950DEFPROCe
960*MOUNT 0
970*DIR $
980ENDPROC
990
1010DEFPROCf
1020*DRIVE 0
1030*DIR $
1040ENDPROC
1050
1052DEFPROCj
1053*DIR :0.$
1054ENDPROC
1055
1070DEFPROCw:VDU23,1,0;0;0;0;
1080ENDPROC
1090
1110DEFPROCo:VDU23,1,1;0;0;0;
1120ENDPROC
1130
1150DEFPROCg($p%):LOCALX%,Y%:X%=p%MOD25
6:Y%=p%DIV256:CALL65527:ENDPROC
1200
1220DEFPROCx:r%=150:£%=147:i%=135:s%=13
1:ba%=131:ca%=132:da%=135:ea%=130:fa%=13
1:U%=135:ga%=131:ha%=135:ia%=135:ja%=135
:ka%=135:la%=135:ma%=135:na%=135:oa%=135
:ENDPROC
1420
1440DEFPROCy:LOCALpa%:VDU26,12
1460PRINTTAB(0,23);CHR$(r%);"¶|||||||||
||||||||||||||||||||||||||||¶";:VDU30,11
,30
1480PRINT" ";CHR$(r%);"¶/////
//%¶/////////////////¶";:PRINTCHR$(r%);"
¶///////////*//////// ";C
HR$(r%);"¶";:PRINTCHR$(r%);"¶";CHR$(£%);
"jk 74$5 j£`p`pj 0 0p0p`p ";CH
R$(r%);"¶";
1510PRINTCHR$(r%);"¶";CHR$(£%);"jk"!745
7 "kjjj$j!545=55j. ";CHR$(r%);"
¶";:PRINTCHR$(r%);"! "£"£" "!££!!!!"£ ";:FORpa%=1
TO19:PRINTCHR$(r%);"¶";SPC(36);CHR$(r%);
"¶";:NEXT
1580PRINTTAB(6,5);CHR$(£%-16);"8BS mess
aging system 2.00C":VDU28,2,23,37,7:ENDP
ROC
1590
1610DEFPROCz:IF?31784=r%THENENDPROC
1620PROCi("Sorry, this program uses dir
ect screen access and the screen RAM is
not at &7C00. If you have them, try disa
bling your shadow RAM and/or second proc
essor."):VDU26,12
1640PROCo:PROCh:END
1670
1690DEFPROCK:j%=TOP:qa%=j%+31:ra%=j%+16
4:sa%=j%+183:ta%=j%+201:ua%=j%+235:va%=j
%+294:wa%=j%+344:xa%=j%+394:ya%=j%+426:E
NDPROC
1820
1840DEFPROCb(T$):PROCA(T$,i%,TRUE):ENDP
ROC
1860
1880DEFPROCB(T$):PROCA(T$,i%,FALSE):END
PROC
1900
1930DEFPROCA(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)
1950UNTILT$="":ENDPROC
1970
1990DEFPROCi(m$):CLS:PROCb(m$):PRINT'CH
R$(i%);"Press SPACE to continue..."
2030REPEATUNTILGET=32:ENDPROC
2050
2070DEFPROCL(m$):CLS:PROCb(m$):PRINT'CH
R$(i%);"Press SPACE to return to BASIC"
2110REPEATUNTILGET=32:VDU26,12
2130PROCo:PROCh:END
2160
2180DEFFNc: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 progr
am."):PRINT
2220PROCb("When you have done this, pre
ss"+STRING$(7," ")+"A if it an ADFS disc
,"+STRING$(15," ")+"D if it is a DFS dis
c,"+STRING$(14," ")+"H if it is an HADFS
disk or"+STRING$(8," ")+"SPACE to use t
he current filing system."):PRINT:PROCb(
"If in doubt, just press SPACE."):REPEAT
2270b%=GET:n$=CHR$((b%AND223)-32*(b%=32
)):UNTILINSTR(" ADH",n$)<>0:=n$
2330DEFFNb:LOCALA%,Y%:=(USR(65498)AND25
5)
2390DEFPROCd:SOUND1,-10,52,5:ENDPROC
2410
2430DEFFNj(y$):LOCALa%:a%=OPENIN(y$):IF
a%<>0THENCLOSE#a%
2460=(a%<>0)
2490DEFPROCk:LOCALa%,za%,g%:CLS:PRINTCH
R$(i%);"Please wait...":a%=OPENIN("!Mesg
"):za%=BGET#a%:IFza%<>0THENPROCL("The !M
esg file on this disc is a version "+STR
$(za%)+" file. This program can only han
dle version 0 files.")
2550INPUT#a%,e$:INPUT#a%,d$:d$=FNl(d$):
J%=PTR#a%:INPUT#a%,g%:Aa%=PTR#a%:CLOSE#a
%:ENDPROC
2630
2650DEFFNl(i$):REPEAT:IFRIGHT$(i$,1)="
"THENi$=LEFT$(i$,LEN(i$)-1)
2670UNTILRIGHT$(i$,1)<>" ":=i$
2710DEFPROCl: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
2850DEFPROCC:CLS:PROCb("Please enter yo
ur three-character ID. If you don't know
it, it is shown in the top left hand co
rner of the menu."):PRINT'CHR$(i%);"ID:"
;CHR$(s%);:e$=FNi(FNe(3,3,e$)):PRINT'
2900PROCb("Please enter your name as yo
u wish it to appear in message headings.
Just enter a blank name if you wish to
remain anonymous."):PRINT'CHR$(s%);:d$=F
Ne(0,20,d$):ENDPROC
2940
2960DEFFNe(Ba%,Ca%,c$):LOCALDa%,Ea%,b%:
Da%=POS:Ea%=VPOS:PRINTLEFT$(c$+STRING$(C
a%,"."),Ca%);TAB(Da%+LEN(c$),Ea%);:REPEA
T:REPEAT
3030b%=GET:UNTILb%=13OR(b%>=32ANDb%<=12
7):IFb%=127ANDLEN(c$)>0THENVDU8,46,8:c$=
LEFT$(c$,LEN(c$)-1)
3060IFb%<>127ANDb%<>13ANDLEN(c$)<Ca%THE
NVDUb%:c$=c$+CHR$(b%)
3070UNTIL(b%=13ANDLEN(c$)>=Ba%):=c$
3110DEFFNi(o$):LOCALl$,Fa%,w%:l$="":IFo
$=""THEN=""
3140FORFa%=1TOLEN(o$):w%=ASC(MID$(o$,Fa
%,1)):IFw%>=ASC"a"ANDw%<=ASC"z"THENw%=w%
-32
3170l$=l$+CHR$(w%):NEXT:=l$
3220DEFFNo: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");
3250PRINTFNa("Quit the program","Q"):PR
OCb("Use the up and down cursor keys to
move the bar, or press the key shown aft
er the option you want. Press RETURN to
select the highlighted option."):PRINT
3280PROCB("If you select an option by m
istake, pressing ESCAPE will usually ret
urn you to this menu."):x%=o%:j$="NVPTRU
Q":PRINTTAB(1,o%-1);CHR$(ca%);CHR$157;CH
R$(da%):REPEAT:REPEAT
3350b%=GETAND223:UNTILINSTR(CHR$138+CHR
$139+CHR$13+j$,CHR$(b%))<>0:o%=INSTR(j$,
CHR$(b%)):IFo%=0THENo%=x%
3380IFb%=138ANDo%<LEN(j$)THENo%=o%+1
3390IFb%=139ANDo%>1THENo%=o%-1
3400IFo%<>x%THENPRINTTAB(1,x%-1);" ";C
HR$(ba%);TAB(1,o%-1);CHR$(ca%);CHR$157;C
HR$(da%):x%=o%
3410UNTILb%=13:=o%
3450DEFFNa(r$,j$)=" "+CHR$(ba%)+r$+ST
RING$(28-LEN(r$)," ")+j$+" "+CHR$156
3470DEFPROCp:LOCALg$,V%:CLS:IFFNf>=y%TH
ENPROCi("Sorry, there is a limit of "+ST
R$(y%)+" messages."):ENDPROC
3500PROCb("Please enter the 3-character
ID of the person who will receive the m
essage. Messages to individual members a
re private and will not be published. En
ter 999 to send a message to everyone or
CCC to send in a comment for publicatio
n.")
3510PRINT'CHR$(i%);"ID:";CHR$(s%);
3530g$=FNi(FNe(3,3,""))
3550PROCM:V%=(g$<>"CCC"):IFg$="999"THEN
s$="(all members)"ELSEs$=""
3580IFV%THENPROCn(CHR$(ea%)+"To: "+
CHR$(fa%)+g$+" "+s$,e%)
3590IFd$=""THENt$=""ELSEt$="("+d$+")"
3600PROCn(CHR$(ea%)+"From: "+CHR$(fa%
)+e$+" "+t$,e%-40*V%):PROCn(CHR$(ea%)+"S
ubject:"+CHR$(fa%),e%+40-40*V%):g$=FNm(1
0,1-V%,g$):PROCD(g$):ENDPROC
3650
3670DEFPROCD(a$):LOCALa%,g%:PRINTTAB(0,
0);CHR$(oa%);"Please wait, saving messag
e...";:a%=OPENUP("!Mesg"):PTR#a%=EXT#a%:
PRINT#a%,a$:BPUT#a%,0:PROCE(FNk+1,a%):PT
R#a%=J%:INPUT#a%,g%:PTR#a%=J%:PRINT#a%,g
%+1:CLOSE#a%:v%=TRUE:ENDPROC
3830
3850DEFFNk:!112=e%+I%+1:!114=e%:CALLta%
:!114=0:=(!112)-e%
3920DEFPROCE(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
4040DEFFNf:LOCALa%:IFNOTv%ANDNOTaa%THEN
=Ga%
4060a%=OPENIN("!Mesg"):PTR#a%=J%:INPUT#
a%,Ga%:CLOSE#a%:aa%=FALSE:=Ga%
4140DEFPROCn(p$,Ha%):LOCALl%:l%=Ha%?LEN
(p$):$Ha%=p$:Ha%?LEN(p$)=l%:ENDPROC
4190
4210DEFPROCM:!112=e%:!114=e%+I%+1:CALLx
a%:ENDPROC
4250
4270DEFFNm(f%,c%,a$):LOCALd%,F%,z%,t%,b
%:VDU22,7
4290d%=0:F%=0:z%=(I%DIV40)-25:t%=FALSE:
PROCc(a$,t%):PROCF(d%)
4340REPEAT:VDU31,f%,c%
4360REPEAT:b%=GET:UNTIL(b%>=32ANDb%<=12
7)OR(b%>=136ANDb%<=139)OR(b%>=200ANDb%<=
229)ORb%=13ORb%=27ORb%=20:IFb%=ASC"£"THE
Nb%=35ELSEIFb%=ASC"#"THENb%=95ELSEIFb%=A
SC"`"THENb%=96
4410IFb%>=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
4430IFb%=32ANDf%=40THENf%=39:b%=13
4440IFb%>=200ANDb%<=229THENIa%=FNq(b%,f
%,c%):f%=f%-Ia%:IFf%=40ANDNOT(d%=z%ANDc%
=23)THENf%=0:c%=c%+1:F%=-1
4450IFb%=127ANDf%>0THEN!112=e%+(c%+d%)*
40:?114=f%:CALLra%:!112=31744+c%*40:?114
=f%:CALLra%:f%=f%-1
4460IFb%=13THENIFNOT(d%=z%ANDc%=23)THEN
e%?((c%+1+d%)*40)=e%?((c%+d%)*40):f%=1:c
%=c%+1:F%=-1
4470IFb%=209THENt%=NOTt%:PROCc(a$,t%)
4480IFb%=219THENa$=FNr(a$):PROCc(a$,t%)
4490IFINSTR("QWASZXqwaszx",CHR$(b%))<>0
ANDt%THENPROCN(f%,c%,d%,b%)
4500IFb%=226THENPROCO(f%,c%,d%)
4510IFb%=227THENPROCP(c%,d%):F%=-1
4520IFb%=228THENPROCQ(c%,d%):F%=-1
4530IFb%=20THENPROCR(f%,c%,d%,z%):F%=-1
4540IFb%=136THENf%=f%-1
4550IFb%=137THENf%=f%+1
4560IFb%=138THENc%=c%+1
4570IFb%=139THENc%=c%-1
4580IFf%<0THENf%=39:c%=c%-1
4590IFf%>39THENf%=0:c%=c%+1
4600IFc%<0THENc%=0:d%=d%+(d%>0)
4610IFc%>23THENc%=23:d%=d%-(d%<z%)
4620IFF%<>d%THENPROCF(d%):F%=d%:PROCc(a
$,t%)
4630UNTILb%=27ANDNOTt%:PROCw:PROCy:=a$
4690DEFPROCO(f%,c%,d%):IFf%=39THENe%?(3
9+(c%+d%)*40)=32:?(31744+39+c%*40)=32:EN
DPROC
4700!112=e%+(c%+d%)*40:?114=f%:CALLsa%:
!112=31744+c%*40:?114=f%:CALLsa%:ENDPROC
4770
4790DEFPROCP(c%,d%):LOCALu%,O%:u%=FNk:I
Fu%>=I%-80THENPROCd:ENDPROC
4820IF(c%+d%)*40>u%THENENDPROC
4830!112=e%+(c%+d%-1)*40:!114=e%+(u%DIV
40)*40:CALLva%:FORO%=(c%+d%)*40TO39+(c%+
d%)*40:e%?O%=32:NEXT:ENDPROC
4900
4920DEFPROCQ(c%,d%):LOCALu%,O%:u%=FNk:I
F(c%+d%)*40>u%THENENDPROC
4950IFu%>=(c%+d%)*40ANDu%<=39+(c%+d%)*4
0THENFORO%=(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%DIV4
0)*40+40:e%?O%=32:NEXT:ENDPROC
5030
5050DEFPROCc(a$,t%):PRINTTAB(0,24);SPC(
39);TAB(0,24);CHR$(ma%);"Message to ";a$
;TAB(29,24);:IFt%THENPRINT"Pixel edit";E
LSEPRINTSPC(10);
5070ENDPROC
5080
5100DEFFNp(c%,d%):LOCALG%,S%:G%=40:REPE
AT: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
5160FORS%=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%
5240DEFPROCF(d%):!112=e%+d%*40:CALLya%:
ENDPROC
5270
5290DEFFNq(b%,f%,c%):LOCALB%:B%=-1:IFb%
>=200ANDb%<=208THENB%=b%-71
5320IFb%>=210ANDb%<=216THENB%=b%-65
5330IFb%>=217ANDb%<=218THENB%=b%-61
5340IFb%>=220ANDb%<=221THENB%=b%-67
5350IFb%>=222ANDb%<=223THENB%=b%-64
5360IFb%>=224ANDb%<=225THENB%=365-b%
5370IFB%<>-1THEN?(f%+c%*40+31744)=B%:e%
?(f%+(c%+d%)*40)=B%:=TRUE
5380=FALSE
5410DEFFNr(a$):PRINTTAB(0,24);SPC(39);T
AB(0,24);CHR$(na%);"Send this message to
:";CHR$(s%);:=FNi(FNe(3,3,a$))
5450DEFPROCN(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
5490IF(?K%ANDW%)=W%THENJa%=?K%AND(255-W
%)ELSEJa%=?K%ORW%
5500?K%=Ja%:?(31744+f%+c%*40)=Ja%:ENDPR
OC
5530
5550DEFPROCR(f%,c%,d%,z%):LOCALh%,c$:PR
OCw:PROCy:PRINTCHR$(i%);"Are you sure yo
u want to read in"'CHR$(i%);"a text file
?";CHR$(s%);:IFNOTFNdTHENVDU22,7:ENDPROC
5600PRINT':PROCb("Please insert the dis
c containing the text file into drive 0
and press SPACE...")
5630REPEATUNTILGET=32:h%=10:IFFNb=4THEN
PROCf:h%=7
5660IFFNb=8THENPROCe
5670IFFNb=16THENPROCj
5675PRINT:PRINTCHR$(i%);"Filename:";CHR
$(s%);:c$=FNe(0,h%,""):IFc$<>""THENPROCS
(f%,c%,d%,z%,c$)
5710PROCb("Please insert your submissio
n disc in drive 0 and press SPACE...")
5730REPEATUNTILGET=32:IFFNb=4THENPROCf
5750IFFNb=8THENPROCe
5760IFFNb=16THENPROCj
5765VDU22,7
5770ENDPROC
5780
5800DEFPROCS(f%,c%,d%,z%,c$):LOCALa%,f$
,l%,P%:a%=OPENIN(c$):IFa%=0THENPRINT':PR
OCb("The file "+c$+" is not present on t
his disc."):PRINT:ENDPROC
5830IFEOF#a%THENCLOSE#a%:ENDPROC
5840PRINT''CHR$(i%);"Please wait..."':R
EPEAT:f$="":REPEAT:l%=BGET#a%:IFl%=ASC"£
"THENl%=35ELSEIFl%=ASC"#"THENl%=95ELSEIF
l%=ASC"`"THENl%=96
5910IFl%>=33ANDl%<=126THENf$=f$+CHR$(l%
)
5920UNTILl%<33ORl%>126OREOF#a%:P%=-1:IF
f%+LEN(f$)<=39THENP%=f%:Ka%=c%:La%=d%:f%
=f%+LEN(f$)+1
5950IFP%=-1THENf%=1:c%=c%+1:j%=?(e%+(c%
-1+d%)*40):IFj%>=129ANDj%<=135THEN?(e%+(
c%+d%)*40)=j%
5960IFc%>23THENc%=23:d%=d%-(d%<z%)
5970IFP%=-1THENP%=f%:Ka%=c%:La%=d%:f%=f
%+LEN(f$)+1
5980$(e%+P%+(Ka%+La%)*40)=f$:?(e%+P%+(K
a%+La%)*40+LEN(f$))=32:IFl%=13ORl%=10THE
Nf%=1:c%=c%+1:j%=?(e%+(c%-1+d%)*40):IFj%
>=129ANDj%<=135THEN?(e%+(c%+d%)*40)=j%
6000UNTILEOF#a%:CLOSE#a%:ENDPROC
6030
6050DEFPROCG: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
6260DEFFNn(Oa%):LOCALk$:e%?128=13:k$="S
ubject:":IFINSTR($e%,k$)=0THENk$="Articl
e:"
6300IFINSTR($e%,k$)=0THEN="No subject?"
6310=MID$($e%,INSTR($e%,k$)+9,Oa%)
6340DEFPROCq:LOCALg%,H%,x%,m%,Z%,L%,Pa%
,`%,b%,T%:CLS:g%=FNf:IFg%=0THENPROCi("Th
ere are no messages on this disc."):ENDP
ROC
6380REPEAT:CLS:IFv%THENPROCb("Please wa
it, scanning messages..."):PROCG:v%=FALS
E
6410H%=1:x%=1:m%=1:Z%=-1:REPEAT:REPEAT:
IFm%=Z%THENx%=1:m%=1
6480CLS: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
6510L%=H%+13:IFL%>g%THENL%=g%
6520FORPa%=H%TOL%:PRINTFNa(a$(Pa%)+": "
+LEFT$(b$(Pa%),22)," ");:NEXT:`%=L%-H%+1
:Z%=`%+1:IFg%>14THENPRINTFNa("More messa
ges..."," ");:`%=`%+1
6570PRINTTAB(1,m%-1);CHR$(ca%);CHR$157;
CHR$(da%):REPEAT:REPEAT
6610b%=GETAND223:UNTILINSTR(CHR$138+CHR
$139+CHR$13+CHR$27+"PVED",CHR$(b%))<>0:I
Fb%=138ANDm%<`%THENm%=m%+1
6640IFb%=139ANDm%>1THENm%=m%-1
6650IFm%<>x%THENPRINTTAB(1,x%-1);" ";C
HR$(ba%);TAB(1,m%-1);CHR$(ca%);CHR$157;C
HR$(da%):x%=m%
6660UNTILINSTR(CHR$13+CHR$27+"PVED",CHR
$(b%))<>0:IFm%=Z%THENH%=H%+14:IFH%>g%THE
NH%=1
6680UNTILm%<Z%ORb%=27:T%=m%+H%-1:IFb%=1
3ORb%=ASC("V")THENPRINTTAB(0,16);SPC(35)
;TAB(0,16);CHR$(ia%);"Loading message, p
lease wait...";:h%=FNh(T%)
6710IFb%=13ORb%=ASC("V")THENVDU22,7,23;
8202;0;0;0;:PRINTTAB(0,24);FNs(T%,g%,a$)
;:?116=e%MOD256:?117=e%DIV256:L%=e%+FNt(
h%):?118=L%MOD256:?119=L%DIV256:CALLqa%:
PROCy
6720IFb%=ASC("P")THENPROCT(T%)
6730IFb%=ASC("D")THENv%=FNu(T%)
6740IFb%=ASC("E")THENv%=FNv(T%)
6750g%=FNf:UNTILv%ORb%=27ORg%=0:UNTILb%
=27ORg%=0:ENDPROC
6790
6810DEFFNh(q%):LOCALa%,k%,h%:a%=OPENIN(
"!Mesg"):PTR#a%=a%(q%):INPUT#a%,a$:k%=BG
ET#a%:h%=FNg(a%):CLOSE#a%:=h%
6910DEFFNg(a%):LOCALA%,X%,Y%:p%?0=a%:p%
!1=e%:p%!5=I%+1:A%=4:X%=p%MOD256:Y%=p%DI
V256:CALL65489:!112=e%-1:!114=e%+I%+1:CA
LLua%:!118=0:PTR#a%=PTR#a%-(I%-p%!5)+(!1
16-e%):=(!116-e%)
7070DEFFNs(q%,Qa%,a$)=CHR$(ha%)+"This i
s message "+STR$(q%)+" of "+STR$(Qa%)+",
to "+a$
7090DEFFNt(h%):IFh%<960THENh%=960
7100IF(h%MOD40)<>0THENh%=h%+(40-(h%MOD4
0))
7110=h%-960
7160DEFFNu(q%):PRINTTAB(0,16);SPC(35);T
AB(0,16);CHR$(ja%);"Delete this - are yo
u sure?";CHR$(s%);:IFNOTFNdTHEN=FALSE
7180PROCH(q%,FALSE):=TRUE
7220DEFPROCH(q%,Ra%):LOCALa%,a$:a%=OPEN
UP("!Mesg"):PTR#a%=a%(q%):INPUT#a%,a$:IF
Ra%THENBPUT#a%,128ELSEBPUT#a%,255
7270PTR#a%=J%:INPUT#a%,g%:PTR#a%=J%:PRI
NT#a%,g%-1:CLOSE#a%:ENDPROC
7330
7370DEFFNv(q%):LOCALh%,a$:PRINTTAB(0,16
);SPC(35);TAB(0,16);CHR$(la%);"Edit this
- are you sure?";CHR$(s%);:IFNOTFNdTHEN
=FALSE
7400PRINTTAB(0,16);SPC(35);TAB(0,16);CH
R$(ia%);"Loading message, please wait...
";:h%=FNh(q%):a$=FNm(1,4,a$(q%)):PROCD(a
$):PROCH(q%,TRUE):=TRUE
7500DEFFNd:LOCALb%:REPEAT
7530b%=GETAND223:UNTILb%=ASC("Y")ORb%=A
SC("N"):IFb%=ASC("Y")THENPRINT"Yes";:=TR
UE
7560PRINT"No";:=FALSE
7600DEFPROCT(q%):LOCALh%:PRINTTAB(0,16)
;SPC(35);TAB(0,16);CHR$(ka%);"Print this
- are you sure?";CHR$(s%);
7630IFNOTFNdTHENPROCg("FX229,1"):ENDPRO
C
7640PRINTTAB(0,16);SPC(35);TAB(0,16);CH
R$(ia%);"Loading message, please wait...
";:h%=FNh(q%):PRINTTAB(0,16);SPC(35);TAB
(0,16);CHR$(ka%);"Printing, please wait.
..";:PROCI(h%)
7690ENDPROC
7700
7720DEFPROCr:LOCALg%,R%:CLS:g%=FNf:IFg%
=0THENPROCi("There are no messages on th
is disc."):ENDPROC
7760PRINTCHR$(i%);"Are you sure you wan
t to print the"'CHR$(i%);"messages?";CHR
$(s%);
7780IFNOTFNdTHENPROCg("FX229,1"):ENDPRO
C
7790PRINT':IFv%THENPRINTCHR$(i%);"Pleas
e wait, scanning messages..."':PROCG:v%=
FALSE
7810PROCb("Please wait, printing - pres
s ESCAPE to stop..."):FORR%=1TOg%:PROCI(
FNh(R%)):NEXT
7860ENDPROC
7870
7890DEFPROCI(h%):LOCALR%,w%
7910FORR%=0TOh%-1:w%=e%?R%:IFw%>=32ANDw
%<=126THENVDUw%ELSEVDU32
7940IF(R%MOD40)=39ORR%=h%-1THENPRINT
7950NEXT:PRINT
7980ENDPROC
7990
8010DEFPROCt:LOCALu$,v$,a%:u$=e$:v$=d$:
PROCC:IFe$=u$ANDd$=v$THENENDPROC
8050a%=OPENUP("!Mesg"):PTR#a%=1:PRINT#a
%,e$:PRINT#a%,LEFT$(d$+STRING$(20," "),2
0):CLOSE#a%:ENDPROC
8110
8130DEFPROCs:LOCALg%,D%,E%,w$,x$,S%,a$,
k%,h%:CLS:PRINTCHR$(i%);"Are you sure yo
u want to tidy the"'CHR$(i%);"messages?"
;CHR$(s%);
8170IFNOTFNdTHENPROCg("FX229,1"):ENDPRO
C
8180*FX229,1
8190PRINT''CHR$(i%);"Please wait...";:v
%=TRUE:IFFNj("!MesgB")THENPROCg("Delete
!MesgB")
8220*Rename !Mesg !MesgB
8230D%=OPENIN("!MesgB"):E%=OPENOUT("!Me
sg"):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
8300FORS%=1TOg%:REPEAT:INPUT#D%,a$:k%=B
GET#D%:k%=(k%<>0):h%=FNg(D%):IFNOTk%THEN
PRINT#E%,a$:BPUT#E%,0:PROCE(h%+1,E%)
8360UNTILNOTk%:NEXT:CLOSE#D%:CLOSE#E%
8410ENDPROC
8420
8440DEFPROCu:LOCALg%,q$,a%,Q%,k%,Na%,h$
,Sa%:CLS:g%=FNf:IFg%=y%THENPROCi("Sorry,
there is a limit of "+STR$(y%)+" messag
es."):ENDPROC
8480*FX229
8490PRINTCHR$(i%);"Please wait..."':q$=
"":a%=OPENUP("!Mesg"):PTR#a%=Aa%:IFEOF#a
%THENPROCi("There are no messages on thi
s disc."):CLOSE#a%:ENDPROC
8540REPEAT:REPEAT:INPUT#a%,a$:Q%=PTR#a%
:k%=BGET#a%:k%=(k%=255):Na%=FNg(a%):h$=F
Nl(FNn(30)):Sa%=(PTR#a%=EXT#a%):UNTILk%O
RSa%:IFk%THENq$="more ":g%=FNw(a%,Q%,a$,
h$,g%)
8670UNTILSa%ORg%=y%:CLOSE#a%
8700IFg%=y%THENPROCb("There are now the
maximum "+STR$(y%)+" messages. Press SP
ACE to continue...")ELSEPROCb("There are
no "+q$+"deleted messages. Press SPACE
to continue...")
8710*FX21
8720REPEATUNTILGET=32:ENDPROC
8740
8760DEFFNw(a%,Q%,a$,h$,g%):LOCALTa%:PRO
CB("Undelete the message to "+a$+" with
subject '"+h$+"'?"):IFPOS>31THENPRINT
8790VDUs%
8800IFNOTFNdTHENPRINT':=g%
8810PRINT'
8830Ta%=PTR#a%:PTR#a%=Q%:BPUT#a%,0:PTR#
a%=J%:PRINT#a%,g%+1:PTR#a%=Ta%
8900v%=TRUE:=g%+1
8940DEFPROCm:DIMM% -1:IFHIMEM-M%>=256TH
ENENDPROC
8960IFHIMEM-M%>=128THENPROCi("There are
less than 256 bytes of RAM free. I reco
mmend quitting the program and restartin
g, as a crash may occur if RAM is exhaus
ted."):ENDPROC
8970PROCi("There are less than 128 byte
s of RAM free. You should quit the progr
am and restart it very soon, otherwise a
crash may occur due to lack of RAM."):E
NDPROC