8-Bit Software Online Conversion
8BS Messaging System. Update - Listing
250:
260*FX119
270MODE7
280PROCa
290PROCb
300PROCc
310PROCd
320REPEAT
330e%=FNf
340IFe%=1THENPROCg
350IFe%=2THENPROCh
360IFe%=3THENPROCi
370IFe%=4THENPROCj
380IFe%=5THENPROCk
390UNTILe%=6
400MODE7
410PROCl
420END
430:
440DEFPROCb
450*FX225,3
460*FX226,3
470*FX227,3
480*FX229,1
490*FX4,1
500ENDPROC
510:
520DEFPROCl
530*FX225,1
540*FX226,128
550*FX227,144
560*FX229,0
570*FX4,0
580ENDPROC
590:
600DEFPROCc
610m%=4096
620n%=25
630DIMo%(n%),p%(6),q%256,r%m%
640ONERRORIFERR=17THENPROCs("FX229,1")
:GOTO320ELSEVDU6:CLOSE#0:MODE7:REPORT:PR
INT" at line ";ERL:PROCs("KEY0 LIST "+ST
R$(ERL)+"|M"):PROCs("FX21"):PROCs("FX138
,0,128"):PROCl:END
650PROCt
660PROCu
670PROCv
680ENDPROC
690:
700DEFPROCa
710VDU23,1,0;0;0;0;
720ENDPROC
730:
740DEFPROCw
750VDU23,1,1;0;0;0;
760ENDPROC
770:
780DEFFNS
790="SendMes"
800:
810DEFPROCt
820x%=6
830y%=3
840z%=3
850aa%=7
860ba%=7
870ca%=3
880da%=7
890ea%=4
900fa%=3
910ga%=7
920ha%=7
930ia%=2
940ja%=3
950ka%=3
960la%=7
970ma%=3
980na%=7
990oa%=7
1000pa%=3
1010qa%=3
1020k%=7
1030ra%=3
1040sa%=3
1050ta%=7
1060ENDPROC
1070:
1080DEFPROCu
1090LOCALua%
1100VDU26,12
1110PRINT" ";CHR$(144+x%);"¶/
//////%¶/////////////////¶";
1120PRINTCHR$(144+x%);"¶///////////*///
///// ";CHR$(144+x%);"¶";
1130PRINTCHR$(144+x%);"¶";CHR$(144+y%);
"jk 74$5 j£`p`pj 0 0p0p`p ";CH
R$(144+x%);"¶";
1140PRINTCHR$(144+x%);"¶";CHR$(144+y%);
"jk"!7457 "kjjj$j!545=55j. ";CH
R$(144+x%);"¶";
1150PRINTCHR$(144+x%);"
""£ £ !£! "£"£" "!££!!!!"£ ";CH
R$(145);" ";
1160FORua%=1TO18
1170PRINTCHR$(144+x%);"¶";SPC(36);CHR$(
144+x%);"¶";
1180NEXT
1190PRINTCHR$(144+x%);"¶|||||||||||||||
||||||||||||||||||||||¶";
1200VDU28,2,22,37,5
1210ENDPROC
1220:
1230DEFPROCs($q%)
1240LOCALX%,Y%
1250X%=q%MOD256
1260Y%=q%DIV256
1270CALL&FFF7
1280ENDPROC
1290:
1300DEFPROCd
1310REPEAT
1320CLS
1330PROCz
1340PRINTTAB(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..."
1350PRINT'CHR$(128+aa%);"The disc must
be in the drive at"'CHR$(128+aa%);"all t
imes when using this program."
1360*FX21
1370REPEATUNTILGET=32
1380IFFNva=8THENPROCs("MOUNT 0")ELSEPRO
Cs("DRIVE 0")
1390IFFNwa("!Mess")THENPRINT'CHR$(128+a
a%);"This disc has a !Mess file. You may
";CHR$(128+aa%);"wish to read the accomp
anying"'CHR$(128+aa%);"article before co
ntinuing."
1400IFFNwa("!Mess")THENPRINT'CHR$(128+a
a%);"Press SPACE to continue...":PROCs("
FX21"):REPEATUNTILGET=32
1410IFNOTFNwa("!Mesg")THENPROCbaELSEPRO
Cxa
1420UNTILya%=0
1430ENDPROC
1440:
1450DEFPROCxa
1460PROCza
1470IFya%=0THENENDPROC
1480PRINT'CHR$(128+aa%);"This program c
an only handle"'CHR$(128+aa%);"version 0
files."
1490PRINT'CHR$(128+aa%);"Press SPACE to
continue..."
1500*FX21
1510REPEATUNTILGET=32
1520ENDPROC
1530:
1540DEFPROCz
1550PRINTTAB(5,0);CHR$(128+z%);"8BS mes
saging system 1.00"
1560ENDPROC
1570:
1580DEFFNva
1590LOCALA%,Y%
1600A%=0
1610Y%=0
1620=(USR(&FFDA)AND&FF)
1630:
1640DEFFNwa(ab$)
1650LOCALbb%
1660bb%=OPENIN(ab$)
1670IFbb%=0THEN=FALSE
1680CLOSE#bb%
1690=TRUE
1700:
1710DEFPROCba
1720LOCALbb%,cb%
1730CLS
1740PROCz
1750PRINTTAB(0,2);CHR$(128+ba%);"Please
enter your three-digit user"'CHR$(128+b
a%);"ID:";CHR$(128+ca%);
1760db$=FNeb(FNca(3,3))
1770PRINT''CHR$(128+ba%);"Please enter
your name as you wish"'CHR$(128+ba%);"it
to appear in message headings:"'';:cb%=
VPOS
1780PRINT''CHR$(128+ba%);"(just press R
ETURN if you wish to"'CHR$(128+ba%);"rem
ain anonymous)"
1790PRINTTAB(0,cb%);CHR$(128+ca%);
1800fb$=FNca(0,20)
1810bb%=OPENOUT("!Mesg")
1820BPUT#bb%,0:ya%=0
1830PRINT#bb%,db$
1840PRINT#bb%,LEFT$(fb$+STRING$(20," ")
,20)
1850gb%=PTR#bb%
1860PRINT#bb%,0
1870CLOSE#bb%
1880ENDPROC
1890:
1900DEFPROCza
1910LOCALbb%
1920bb%=OPENIN("!Mesg")
1930ya%=BGET#bb%
1940IFya%<>0THENCLOSE#bb%:ENDPROC
1950INPUT#bb%,db$
1960INPUT#bb%,fb$
1970REPEAT
1980IFRIGHT$(fb$,1)=" "THENfb$=LEFT$(fb
$,LEN(fb$)-1)
1990UNTILRIGHT$(fb$,1)<>" "
2000gb%=PTR#bb%
2010CLOSE#bb%
2020ENDPROC
2030:
2040DEFFNeb(hb$)
2050LOCALib$,jb%,kb%
2060ib$=""
2070FORjb%=1TOLEN(hb$)
2080kb%=ASC(MID$(hb$,jb%,1))
2090IFkb%>=ASC("a")ANDkb%<=ASC("z")THEN
kb%=kb%-32
2100ib$=ib$+CHR$(kb%)
2110NEXT
2120=ib$
2130:
2140DEFFNca(lb%,mb%)
2150LOCALjb%,nb%,hb$,ob%
2160jb%=POS
2170nb%=VPOS
2180hb$=""
2190REPEAT
2200REPEAT
2210*FX21
2220ob%=GET
2230UNTILob%=13OR(ob%>=32ANDob%<=127)
2240IFob%=127ANDLEN(hb$)>0THENVDU127:hb
$=LEFT$(hb$,LEN(hb$)-1)
2250IFob%<>127ANDob%<>13ANDLEN(hb$)<mb%
THENVDUob%:hb$=hb$+CHR$(ob%)
2260UNTIL(ob%=13ANDLEN(hb$)>=lb%)
2270=hb$
2280:
2290DEFFNf
2300LOCALpb%,ob%
2310CLS
2320PROCz
2330PRINTTAB(3,2);CHR$(128+da%);"Start
a new message";TAB(32,2);"N"
2340PRINTTAB(3,3);CHR$(128+da%);"View/e
dit the messages";TAB(32,3);"V"
2350PRINTTAB(3,4);CHR$(128+da%);"Tidy t
he messages";TAB(32,4);"T"
2360PRINTTAB(3,5);CHR$(128+da%);"Re-ent
er your user ID/name";TAB(32,5);"R"
2370PRINTTAB(3,6);CHR$(128+da%);"Undele
te deleted messages";TAB(32,6);"U"
2380PRINTTAB(3,7);CHR$(128+da%);"Quit t
o BASIC";TAB(32,7);"Q"
2390PRINTTAB(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."
2400pb%=1
2410PRINTTAB(1,pb%+1);CHR$(128+ea%);CHR
$(157);CHR$(128+fa%);TAB(35,pb%+1);CHR$1
56;
2420REPEAT
2430REPEAT
2440*FX21
2450ob%=GET
2460UNTILINSTR("NVTRUQnvtruq"+CHR$(138)
+CHR$(139)+CHR$(13),CHR$(ob%))>0
2470PRINTTAB(1,pb%+1);CHR$(128+da%);"
"
2480IFob%=138THENIFpb%<6THENpb%=pb%+1
2490IFob%=139THENIFpb%>1THENpb%=pb%-1
2500IFob%>=ASC("a")ANDob%<=ASC("z")THEN
ob%=ob%-32
2510IFob%=ASC("N")THENpb%=1
2520IFob%=ASC("V")THENpb%=2
2530IFob%=ASC("T")THENpb%=3
2540IFob%=ASC("R")THENpb%=4
2550IFob%=ASC("U")THENpb%=5
2560IFob%=ASC("Q")THENpb%=6
2570PRINTTAB(1,pb%+1);CHR$(128+ea%);CHR
$(157);CHR$(128+fa%);TAB(35,pb%+1);CHR$1
56;
2580UNTILob%=13
2590=pb%
2600:
2610DEFPROCg
2620LOCALjb%,nb%,qb$,rb%,sb$
2630CLS
2640PROCz
2650bb%=OPENIN("!Mesg")
2660PTR#bb%=gb%
2670INPUT#bb%,rb%
2680CLOSE#bb%
2690IFrb%=n%THENPRINTCHR$(128+ha%);"Sor
ry - you already have ";n%'CHR$(128+ha%)
;"messages!"''CHR$(128+ha%);"Press SPACE
to return to the menu..";:PROCs("FX21")
:REPEATUNTILGET=32:ENDPROC
2700PROCtb
2710PRINTTAB(0,2);CHR$(128+ha%);"Please
enter the user ID of the"'CHR$(128+ha%)
;"recipient:";CHR$(128+ca%);
2720jb%=POS
2730nb%=VPOS
2740PRINT''CHR$(128+ha%);"(Use 999 for
all users and CCC for"'CHR$(128+ha%);"pr
ogram comments)"
2750PRINTTAB(jb%,nb%);
2760*FX229,0
2770qb$=FNeb(FNca(3,3))
2780*FX229,1
2790IFqb$="999"THENsb$=" (all members)"
ELSEsb$=""
2800IFqb$<>"CCC"THENPROCub(CHR$(128+ia%
)+"To: "+CHR$(128+ja%)+qb$+sb$,r%):P
ROCub(CHR$(128+ia%)+"Subject:"+CHR$(128+
ja%),r%+80)
2810IFqb$="CCC"THENPROCub(CHR$(128+ia%)
+"Program:"+CHR$(128+ja%),r%+40)
2820PROCub(CHR$(128+ia%)+"From: "+CHR
$(128+ja%)+db$,r%+(40*ABS(qb$<>"CCC")))
2830IFfb$<>""THENPROCub("("+fb$+")",r%+
(40*ABS(qb$<>"CCC"))+14)
2840qb$=FNvb(qb$,10,2+(qb$="CCC"))
2850PROCwb(qb$)
2860PROCu
2870ENDPROC
2880:
2890DEFPROCub(xb$,yb%)
2900LOCALzb%
2910FORzb%=yb%TOyb%+LEN(xb$)-1
2920?zb%=ASC(MID$(xb$,zb%-yb%+1,1))
2930NEXT
2940ENDPROC
2950:
2960DEFPROCtb
2970!&70=r%
2980!&72=r%+m%+1
2990CALLtb
3000ENDPROC
3010:
3020DEFFNvb(qb$,ac%,bc%)
3030LOCALob%,cc%,ob%,dc%,ec%
3040VDU26,12
3050cc%=0
3060fc%=FALSE
3070PROCgc(cc%)
3080PROChc(fc%)
3090PROCw
3100REPEAT
3110PRINTTAB(ac%,bc%);
3120REPEAT
3130*FX21
3140ob%=GET
3150UNTIL(ob%>=3ANDob%<=13)ORob%=27ORob
%>=32
3160dc%=INKEY(-1)
3170ec%=INKEY(-2)
3180IFNOTfc%ANDob%>=3ANDob%<=12THENac%=
FNic(ac%,bc%,cc%,ob%,dc%,ec%)
3190IFob%=12ANDNOTdc%ANDNOTec%THENfc%=N
OTfc%:PROCa:PROChc(fc%):PROCw
3200IFNOTfc%ANDob%=10ANDNOTdc%ANDec%THE
NPROCa:PROCjc(bc%,cc%):VDU26,12:PROCgc(c
c%):PROChc(fc%):PROCw
3210IFNOTfc%ANDob%=11ANDNOTdc%ANDec%THE
NPROCa:PROCkc(bc%,cc%):VDU26,12:PROCgc(c
c%):PROChc(fc%):PROCw
3220IFNOTfc%ANDob%=12ANDdc%ANDNOTec%THE
NPROCa:qb$=FNlc(qb$):VDU26,12:PROCgc(cc%
):PROChc(fc%):PROCw
3230IFNOTfc%AND(ob%>=32ANDob%<=126)THEN
VDUob%:r%?FNmc(ac%,bc%,cc%)=ob%:ac%=ac%+
1
3240IFfc%ANDINSTR("QWASZX",CHR$(ob%AND&
DF))<>0THENr%?FNmc(ac%,bc%,cc%)=FNnc(r%?
FNmc(ac%,bc%,cc%),ob%AND&DF)
3250IFob%=127ANDac%>0THENac%=ac%-1:PROC
oc(ac%,bc%,cc%):PROCa:VDU31,0,bc%:PROCpc
(cc%+bc%):PROCw
3260IFob%=13THENac%=0:bc%=bc%+1
3270IFob%=136THENac%=ac%-1:IFdc%THENac%
=0
3280IFob%=137THENac%=ac%+1:IFdc%THENac%
=39
3290IFob%=138THENbc%=bc%+1:IFdc%THENbc%
=bc%-1:PROCa:cc%=FNqc(cc%+12):PROCgc(cc%
):PROChc(fc%):PROCw
3300IFob%=139THENbc%=bc%-1:IFdc%THENbc%
=bc%+1:PROCa:cc%=FNqc(cc%-12):PROCgc(cc%
):PROChc(fc%):PROCw
3310IFac%<0THENac%=39:bc%=bc%-1
3320IFbc%<0THENbc%=0:IFcc%>0THENPROCa:c
c%=cc%-1:VDU28,0,23,39,0,30,11,26,30:PRO
Cpc(cc%):PROChc(fc%):PROCw
3330IFac%>39ANDFNrc(r%?FNmc(39,bc%,cc%)
)THENPROCsc
3340IFac%>39THENac%=0:bc%=bc%+1
3350IFbc%>23THENbc%=23:IFcc%<(((m%-40)D
IV40)-23)THENPROCa:cc%=cc%+1:VDU28,0,23,
39,0,31,0,23,10,26,31,0,23:PROCpc(cc%+23
):PROChc(fc%):PROCw
3360IF(ob%=13OR(ob%=32ANDac%=0))ANDFNtc
(r%?FNmc(0,bc%-1,cc%))THENuc%=r%?FNmc(0,
bc%-1,cc%):PRINTTAB(ac%,bc%);CHR$(uc%);:
r%?FNmc(0,bc%,cc%)=uc%:ac%=ac%+1
3370UNTILob%=27
3380PROCa
3390=qb$
3400:
3410DEFPROCsc
3420LOCAL
3430vc$=""
3440ac%=ac%-1
3450mc%=FNmc(ac%,bc%,cc%)
3460REPEAT
3470vc$=CHR$(r%?mc%)+vc$
3480ac%=ac%-1
3490mc%=mc%-1
3500UNTILNOTFNrc(r%?mc%)
3510PRINTTAB(ac%+1,bc%);
3520FORwc%=mc%+1TOFNmc(39,bc%,cc%)
3530r%?wc%=32:VDU32
3540NEXT
3550bc%=bc%+1
3560ac%=0
3580IFFNtc(r%?FNmc(0,bc%-1,cc%))THENuc%
=r%?FNmc(0,bc%-1,cc%):PRINTTAB(ac%,bc%);
CHR$(uc%);:r%?FNmc(0,bc%,cc%)=uc%:ac%=ac
%+1
3590PRINTTAB(ac%,bc%);vc$;
3600xc%=FNmc(ac%,bc%,cc%)
3610FORyc%=0TOLEN(vc$)-1
3620r%?(yc%+xc%)=ASC(MID$(vc$,yc%+1,1))
3630NEXT
3640ac%=ac%+LEN(vc$)
3650ENDPROC
3660:
3670DEFFNtc(uc%)
3680=(uc%>=129ANDuc%<=135)
3690:
3700DEFFNrc(uc%)
3710=(uc%>=33ANDuc%<=126)
3720:
3730DEFPROCjc(bc%,cc%)
3740LOCALzc%,ad%
3750zc%=FNbd
3760IFzc%>=(((m%-40)DIV40)*40)THENPROCc
d:ENDPROC
3770IFFNmc(0,bc%,cc%)>zc%THENENDPROC
3780!&70=r%+FNmc(0,bc%,cc%)-40
3790!&72=r%+(zc%DIV40)*40
3800CALLjc
3810FORad%=FNmc(0,bc%,cc%)TOFNmc(39,bc%
,cc%)
3820r%?ad%=32
3830NEXT
3840ENDPROC
3850:
3860DEFPROCkc(bc%,cc%)
3870LOCALzc%,ad%
3880zc%=FNbd
3890IFFNmc(0,bc%,cc%)>zc%THENENDPROC
3900IFzc%>=FNmc(0,bc%,cc%)ANDzc%<=FNmc(
39,bc%,cc%)THENFORad%=FNmc(0,bc%,cc%)TOF
Nmc(39,bc%,cc%):r%?ad%=32:NEXT:ENDPROC
3910!&70=r%+FNmc(0,bc%,cc%)
3920!&72=r%+(zc%DIV40)*40
3930CALLkc
3940FORad%=(zc%DIV40)*40TO(zc%DIV40)*40
+40
3950r%?ad%=32
3960NEXT
3970ENDPROC
3980:
3990DEFPROCcd
4000SOUND1,-10,101,5
4010ENDPROC
4020:
4030DEFPROCoc(ac%,bc%,cc%)
4040!&70=r%+FNmc(0,bc%,cc%)
4050?&72=ac%+1
4060CALLoc
4070ENDPROC
4080:
4090DEFPROCdd(ac%,bc%,cc%)
4100IFac%=39THENr%?FNmc(39,bc%,cc%)=32:
ENDPROC
4110!&70=r%+FNmc(0,bc%,cc%)
4120?&72=ac%
4130CALLdd
4140ENDPROC
4150:
4160DEFFNqc(cc%)
4170IFcc%<0THENcc%=0
4180IFcc%>(((m%-40)DIV40)-23)THENcc%=((
(m%-40)DIV40)-23)
4190=cc%
4200:
4210DEFFNic(ac%,bc%,cc%,ob%,dc%,ec%)
4220LOCALuc%
4230IFob%>=3ANDob%<=9ANDNOTdc%ANDNOTec%
THENVDU126+ob%:r%?FNmc(ac%,bc%,cc%)=126+
ob%:ac%=ac%+1
4240IFob%>=3ANDob%<=9ANDdc%ANDNOTec%THE
NVDU142+ob%:r%?FNmc(ac%,bc%,cc%)=142+ob%
:ac%=ac%+1
4250IFNOTdc%ANDec%ANDob%=12THENPROCa:PR
OCed:VDU26,12:PROCgc(cc%):PROChc(fc%):PR
OCw
4260IFob%>=10ANDob%<=11ANDNOTdc%ANDNOTe
c%THENVDU126+ob%:r%?FNmc(ac%,bc%,cc%)=12
6+ob%:ac%=ac%+1
4270IFob%>=10ANDob%<=11ANDdc%ANDNOTec%T
HENVDU167-ob%:r%?FNmc(ac%,bc%,cc%)=167-o
b%:ac%=ac%+1
4280IFob%>=3ANDob%<=4ANDNOTdc%ANDec%THE
NVDU150+ob%:r%?FNmc(ac%,bc%,cc%)=150+ob%
:ac%=ac%+1
4290IFob%>=5ANDob%<=6ANDNOTdc%ANDec%THE
NVDU153+ob%:r%?FNmc(ac%,bc%,cc%)=153+ob%
:ac%=ac%+1
4300IFob%>=7ANDob%<=8ANDNOTdc%ANDec%THE
NVDU148-ob%:r%?FNmc(ac%,bc%,cc%)=148-ob%
:ac%=ac%+1
4310IFob%=9ANDNOTdc%ANDec%THENPROCdd(ac
%,bc%,cc%):PROCa:VDU31,0,bc%:PROCpc(cc%+
bc%):PROCw
4320=ac%
4330:
4340DEFPROChc(fc%)
4350IFNOTfc%THENPRINTTAB(0,24);CHR$(128
+ka%);"Press CTRL";CHR$(129);"f9";CHR$(1
28+ka%);"for help... ";ELSEPRINTT
AB(0,24);CHR$(128+ka%);"Press";CHR$(129)
;"f9";CHR$(128+ka%);"to exit pixel editi
ng...";
4360ENDPROC
4370:
4380DEFPROCgc(cc%)
4390PRINTTAB(0,0);
4400!&70=r%+FNmc(0,0,cc%)
4410!&72=r%+FNmc(0,0,cc%)+960
4420CALLgc
4430ENDPROC
4440:
4450DEFPROCpc(cc%)
4460!&70=r%+FNmc(0,0,cc%)
4470CALLpc
4480ENDPROC
4490:
4500DEFFNmc(ac%,bc%,cc%)
4510=ac%+(bc%+cc%)*40
4520:
4530DEFFNnc(uc%,ob%)
4540IFuc%>128THENuc%=uc%-128
4550uc%=uc%-32
4560p%(1)=(uc%AND1)=1
4570p%(2)=(uc%AND2)=2
4580p%(3)=(uc%AND4)=4
4590p%(4)=(uc%AND8)=8
4600p%(5)=(uc%AND16)=16
4610p%(6)=(uc%AND64)=64
4620IFob%=ASC("Q")THENp%(1)=NOTp%(1)
4630IFob%=ASC("W")THENp%(2)=NOTp%(2)
4640IFob%=ASC("A")THENp%(3)=NOTp%(3)
4650IFob%=ASC("S")THENp%(4)=NOTp%(4)
4660IFob%=ASC("Z")THENp%(5)=NOTp%(5)
4670IFob%=ASC("X")THENp%(6)=NOTp%(6)
4680uc%=160+ABS(p%(1))+ABS(p%(2))*2+ABS
(p%(3))*4+ABS(p%(4))*8+ABS(p%(5))*16+ABS
(p%(6))*64
4690VDUuc%,8
4700=uc%
4710:
4720DEFPROCwb(qb$)
4730LOCALbb%,rb%,A%,X%,Y%
4740VDU26
4750PRINTTAB(0,24);CHR$(128+ra%);"Pleas
e wait, saving message... ";
4760bb%=OPENUP("!Mesg")
4770PTR#bb%=gb%
4780INPUT#bb%,rb%
4790PTR#bb%=gb%
4800PRINT#bb%,rb%+1
4810PTR#bb%=EXT#bb%
4820PRINT#bb%,qb$
4830BPUT#bb%,0
4840q%?0=bb%
4850q%!1=r%
4860q%!5=FNbd+1
4870A%=2
4880X%=q%MOD256
4890Y%=q%DIV256
4900CALL&FFD1
4910BPUT#bb%,152
4920CLOSE#bb%
4930ENDPROC
4940:
4950DEFFNbd
4960!&70=r%+m%+1
4970!&72=r%
4980CALLbd
4990!&72=0
5000=(!&70)-r%
5010:
5020DEFPROCh
5030LOCALbb%,rb%,fd%,gd%,hd%,cc%,ob%,ha
%,qb$,id%,jd%
5040bb%=OPENUP("!Mesg")
5050PTR#bb%=gb%
5060INPUT#bb%,rb%
5070IFrb%=0THENCLOSE#bb%:ENDPROC
5080CLS
5090PROCz
5100PRINTTAB(0,2);CHR$(128+ta%);"Please
wait, loading message..."
5110fd%=1
5120jd%=TRUE
5130REPEAT
5140IFNOTjd%THENVDU26:PRINTTAB(0,24);CH
R$(128+sa%);"Please wait, loading messag
e... ";
5150jd%=FALSE
5160REPEAT
5170gd%=PTR#bb%
5180INPUT#bb%,qb$
5190hd%=BGET#bb%
5200PROCkd(bb%)
5210UNTILhd%=0
5220o%(fd%)=gd%
5230VDU26,12
5240cc%=0
5250PROCgc(cc%)
5260PROCld(qb$,fd%,rb%)
5270REPEAT
5280REPEAT
5290*FX21
5300ob%=GET
5310IFob%>=ASC("a")ANDob%<=ASC("z")THEN
ob%=ob%-32
5320UNTIL(ob%>=136ANDob%<=139)ORob%=27O
Rob%=ASC("E")ORob%=ASC("D")ORob%=3
5330dc%=INKEY(-1)
5340IFob%=3THENPROCmd:VDU26,12:PROCgc(c
c%):PROCld(qb$,fd%,rb%)
5350ha%=FALSE
5360IFob%=136ANDfd%>1THENfd%=fd%-1:PTR#
bb%=o%(fd%):ha%=TRUE
5370IFob%=137ANDfd%<rb%THENfd%=fd%+1:ha
%=TRUE
5380IFob%=139ANDNOTdc%ANDcc%>0THENcc%=c
c%-1:VDU28,0,23,39,0,30,11,26,30:PROCpc(
cc%)
5390IFob%=139ANDdc%THENcc%=FNqc(cc%-12)
:VDU26,12:PROCgc(cc%):PROCld(qb$,fd%,rb%
)
5400IFob%=138ANDNOTdc%ANDcc%<(((m%-40)D
IV40)-23)THENcc%=cc%+1:VDU28,0,23,39,0,3
1,0,23,10,26,31,0,23:PROCpc(cc%+23)
5410IFob%=138ANDdc%THENcc%=FNqc(cc%+12)
:VDU26,12:PROCgc(cc%):PROCld(qb$,fd%,rb%
)
5420IFob%=ASC("D")THENPRINTTAB(0,24);CH
R$(128+pa%);"Are you sure you want to de
lete this?";:id%=FNid:PROCld(qb$,fd%,rb%
):IFNOTid%THENob%=-1
5430IFob%=ASC("E")THENPRINTTAB(0,24);CH
R$(128+qa%);"Are you sure you want to ed
it this? ";:id%=FNid:PROCld(qb$,fd%,rb%)
:IFNOTid%THENob%=-1
5440UNTILob%=27ORha%ORob%=ASC("E")ORob%
=ASC("D")
5450UNTILob%=27ORob%=ASC("E")ORob%=ASC(
"D")
5460IFob%=ASC("D")THENPTR#bb%=o%(fd%):P
ROCnd(bb%)
5470IFob%=ASC("E")THENPTR#bb%=o%(fd%):P
ROCnd(bb%):CLOSE#bb%:qb$=FNvb(qb$,0,4):P
ROCwb(qb$)
5480IFob%<>ASC("E")THENCLOSE#bb%
5490PROCu
5500ENDPROC
5510:
5520DEFFNid
5530LOCALob$
5540REPEAT
5550ob$=CHR$(GETAND&DF)
5560UNTILob$="Y"ORob$="N"
5570=(ob$="Y")
5580:
5590DEFPROCkd(bb%)
5600LOCALA%,X%,Y%
5610q%?0=bb%
5620q%!1=r%
5630q%!5=m%+1
5640A%=4
5650X%=q%MOD256
5660Y%=q%DIV256
5670CALL&FFD1
5680!&70=r%-1
5690!&72=r%+m%+1
5700CALLod
5710!&76=0
5720PTR#bb%=PTR#bb%-((m%-q%!5)-(!&74-r%
))
5730ENDPROC
5740:
5750DEFPROCld(pd$,qd%,rd%)
5760LOCALsd$
5770IFqd%>9ANDrd%>9THENsd$=""ELSEsd$="
"
5780PRINTTAB(0,24);CHR$(128+ka%);"Messa
ge ";qd%;" of ";rd%;",";sd$;"to ";pd$;"
-";CHR$(129);"f0";CHR$(128+ka%);"for hel
p ";
5790ENDPROC
5800:
5810DEFPROCnd(bb%)
5820LOCALrb%,td$
5830INPUT#bb%,td$
5840BPUT#bb%,255
5850PTR#bb%=gb%
5860INPUT#bb%,rb%
5870PTR#bb%=gb%
5880PRINT#bb%,rb%-1
5890ENDPROC
5900:
5910DEFPROCi
5920LOCALud%,vd%,wd$,rb%,pd$,hd%,xd%,ya
%
5930CLS
5940PROCz
5950PRINTTAB(0,2);CHR$(128+na%);"Are yo
u sure you want to tidy the"'CHR$(128+na
%);"messages?":IFNOTFNidTHENENDPROC
5960PRINT'CHR$(128+na%);"Please wait, t
idying messages..."
5970VDU21
5980IFFNwa("!MesgB")THEN*yd!zd
5990*RENAME !Mesg !MesgB
6000ud%=OPENIN("!MesgB")
6010vd%=OPENOUT("!Mesg")
6020ya%=BGET#ud%
6030BPUT#vd%,ya%
6040INPUT#ud%,wd$
6050PRINT#vd%,wd$
6060INPUT#ud%,wd$
6070PRINT#vd%,wd$
6080INPUT#ud%,rb%
6090PRINT#vd%,rb%
6100IFEOF#ud%THENVDU6:CLOSE#ud%:CLOSE#v
d%:PROCs("DELETE !MesgB"):ENDPROC
6110REPEAT
6120INPUT#ud%,pd$
6130hd%=BGET#ud%
6140IFhd%=0THENPRINT#vd%,pd$:BPUT#vd%,h
d%:REPEAT:xd%=BGET#ud%:BPUT#vd%,xd%:UNTI
Lxd%=152ELSEREPEATUNTILBGET#ud%=152
6150UNTILEOF#ud%
6160CLOSE#ud%
6170CLOSE#vd%
6180*DELETE !MesgB
6190VDU6
6200ENDPROC
6210:
6220DEFPROCmd
6230PROCu
6240PROCz
6250PRINTTAB(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."
6260PRINT'CHR$(128+la%);"Use the cursor
left and right keys"'CHR$(128+la%);"to
move between messages."
6270PRINT'CHR$(128+la%);"Press D to del
ete the current"'CHR$(128+la%);"message
and E to edit it."
6280PRINT'CHR$(128+la%);"Press ESCAPE t
o return to the menu."
6290PRINTTAB(0,16);CHR$(128+ma%);"Press
ESCAPE to return to"'CHR$(128+ma%);"vie
wing...";
6300*FX21
6310REPEATUNTILGET=27
6320ENDPROC
6330:
6340DEFPROCed
6350LOCALob%
6360PROCu
6370PROCz
6380PRINTTAB(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
."
6390PRINT'CHR$(128+la%);"Use";CHR$(129)
;"f0-f6";CHR$(128+la%);"to set the text
colour"
6400PRINTCHR$(128+la%);"Use SHIFT";CHR$
(129);"f0-f6";CHR$(128+la%);"to set the
graphic"'CHR$(128+la%);"colour"
6410PRINTCHR$(128+la%);"Use";CHR$(129);
"f7/f8";CHR$(128+la%);"for steady/flashi
ng"
6420PRINTCHR$(128+la%);"Use SHIFT";CHR$
(129);"f7/f8";CHR$(128+la%);"for coloure
d/black"'CHR$(128+la%);"background"
6430PRINTTAB(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..";
6440REPEAT
6450*FX21
6460ob%=GET
6470UNTIL(ob%=12ANDINKEY(-2))ORob%=27
6480IFob%=27THENENDPROC
6490CLS
6500PROCz
6510PRINTTAB(0,2);CHR$(128+la%);"Use";C
HR$(129);"f9";CHR$(128+la%);"to design a
graphic block"
6520PRINTCHR$(128+la%);"Use CTRL";CHR$(
129);"f0/f1";CHR$(128+la%);"to set conti
guous/"'CHR$(128+la%);"separated graphic
s"
6530PRINTCHR$(128+la%);"Use CTRL";CHR$(
129);"f2/f3";CHR$(128+la%);"to hold/rele
ase"'CHR$(128+la%);"graphics"
6540PRINTCHR$(128+la%);"Use CTRL";CHR$(
129);"f4/f5";CHR$(128+la%);"for double/s
ingle"'CHR$(128+la%);"height"
6550PRINTCHR$(128+la%);"Use SHIFT";CHR$
(129);"f9";CHR$(128+la%);"to change the"
'CHR$(128+la%);"recipient of the message
"
6560PRINTCHR$(128+la%);"Use CTRL";CHR$(
129);"f6";CHR$(128+la%);"to insert a spa
ce"
6570PRINTCHR$(128+la%);"Use CTRL";CHR$(
129);"f7/f8";CHR$(128+la%);"to insert/de
lete a"'CHR$(128+la%);"line"
6580PRINT'CHR$(128+la%);"Press ESCAPE t
o finish editing"
6590PRINTTAB(0,17);CHR$(128+ma%);"Press
ESCAPE to continue editing..";
6600*FX21
6610REPEATUNTILGET=27
6620ENDPROC
6630:
6640DEFPROCv
6650DIMuc%308
6660PROCs("LOAD SendMC "+STR$÷uc%)
6670tb=uc%
6680gc=uc%+&20
6690bd=uc%+&41
6700pc=uc%+&63
6710od=uc%+&70
6720oc=uc%+&AB
6730dd=uc%+&BE
6740jc=uc%+&D0
6750kc=uc%+&102
6760ENDPROC
6770:
6780DEFPROCj
6790LOCALbb%,ae$,be$
6800CLS
6810PROCz
6820PRINTTAB(0,2);CHR$(128+ba%);"Your u
ser ID is currently entered"'CHR$(128+ba
%);"as ";db$
6830PRINT'CHR$(128+ba%);"Please enter y
our three-digit user"'CHR$(128+ba%);"ID:
";CHR$(128+ca%);
6840*FX229,0
6850ae$=FNeb(FNca(3,3))
6860*FX229,1
6870PRINT''CHR$(128+ba%);"Your name is
currently entered as"'CHR$(128+ba%);fb$
6880PRINT'CHR$(128+ba%);"Please enter y
our name:"'CHR$(128+ca%);
6890*FX229,0
6900be$=FNca(0,20)
6910*FX229,1
6920db$=ae$
6930fb$=be$
6940bb%=OPENUP("!Mesg")
6950PTR#bb%=0
6960BPUT#bb%,0
6970PRINT#bb%,db$
6980PRINT#bb%,LEFT$(fb$+STRING$(20," ")
,20)
6990CLOSE#bb%
7000ENDPROC
7010:
7020DEFFNlc(qb$)
7030LOCALjb%,nb%
7040PROCu
7050PROCz
7060PRINTTAB(0,2);CHR$(128+oa%);"This m
essage is currently going"'CHR$(128+oa%)
;"to ";qb$
7070PRINT'CHR$(128+oa%);"Please enter t
he user ID of the"'CHR$(128+oa%);"recipi
ent:";CHR$(128+ca%);
7080jb%=POS
7090nb%=VPOS
7100PRINT''CHR$(128+oa%);"(Use 999 for
all users and CCC for"'CHR$(128+oa%);"pr
ogram comments)"
7110PRINTTAB(jb%,nb%);
7120=FNeb(FNca(3,3))
7130:
7140DEFPROCk
7150LOCALbb%,wd$,rb%,pd$,hd%,mb%,ya%
7160CLS
7170PROCz
7180PRINTTAB(0,2);CHR$(128+k%);"Are you
sure you want to undelete?"
7190IFNOTFNidTHENENDPROC
7200PRINT'CHR$(128+k%);"Please wait, un
deleting messages..."
7210mb%=FALSE
7220bb%=OPENUP("!Mesg")
7230ya%=BGET#bb%
7240INPUT#bb%,wd$
7250INPUT#bb%,wd$
7260INPUT#bb%,rb%
7270IFEOF#bb%THENCLOSE#bb%:ENDPROC
7280REPEAT
7290INPUT#bb%,pd$
7300hd%=BGET#bb%
7310IFNOTmb%THENIFhd%=255THENPTR#bb%=PT
R#bb%-1:BPUT#bb%,0:rb%=rb%+1
7320IFrb%=n%THENmb%=TRUE
7330REPEATUNTILBGET#bb%=152
7340UNTILEOF#bb%
7350PTR#bb%=gb%
7360PRINT#bb%,rb%
7370CLOSE#bb%
7380IFmb%THENPRINT'CHR$(128+k%);"Warnin
g - not all of the messages"'CHR$(128+k%
);"have been recovered."''CHR$(128+k%);"
Press SPACE to return to the menu..";:PR
OCs("FX21"):REPEATUNTILGET=32
7390ENDPROC