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