8-Bit Software Online Conversion
8BS Messaging System. V 1.05 - Listing
320:
330*FX119
340MODE7
350PROCa
360PROCb
370PROCc
380:
410ONERRORPROCd:e$=" ":GOTO430
420e$=FNf
430IFe$=" "ANDFNg=8THENe$="A"
440IFe$=" "ANDFNg<>8THENe$="D"
450IFe$="A"ORe$="a"THENPROCh("ADFS"):P
ROCh("MOUNT 0")
460IFe$="D"ORe$="d"THENPROCh("DISC"):P
ROCh("DRIVE 0")
470ONERRORIFERR=17THENPROCh("FX229,1")
:GOTO530ELSEVDU6:CLOSE#0:MODE7:REPORT:PR
INT" at line ";ERL:PROCh("KEY0 LIST "+ST
R$(ERL)+"|M"):PROCh("FX21"):PROCh("FX138
,0,128"):PROCi:END
480IFFNj("!Mess")THENPRINT'CHR$(128+k%
);"This disc has a !Mess file. You may";
CHR$(128+k%);"wish to read the accompany
ing"'CHR$(128+k%);"article before contin
uing."
490IFFNj("!Mess")THENPRINT'CHR$(128+k%
);"Press SPACE to continue...":PROCh("FX
21"):REPEATUNTILGET=32
500IFNOTFNj("!Mesg")THENPROClELSEPROCm
510IFn%<>0THENGOTO410
520:
530REPEAT
540o%=FNp
550IFo%=1THENPROCq
560IFo%=2THENPROCr
570IFo%=3THENPROCs
580IFo%=4THENPROCt
590IFo%=5THENPROCu
600UNTILo%=6
610MODE7
620PROCi
630END
640:
650DEFPROCb
660*FX225,3
670*FX226,3
680*FX227,3
690*FX229,1
700*FX4,1
710ENDPROC
720:
730DEFPROCi
740*FX225,1
750*FX226,128
760*FX227,144
770*FX229,0
780*FX4,0
790ENDPROC
800:
810DEFPROCc
820ONERRORMODE7:CLOSE#0:REPORT:PRINT"
at line ";ERL:PROCi:END
830v%=4096
840w%=25
850DIMx%(w%),y%(6),z%256,aa%v%
860PROCba
870PROCca
880PROCda
890ENDPROC
900:
910DEFPROCa
920VDU23,1,0;0;0;0;
930ENDPROC
940:
950DEFPROCea
960VDU23,1,1;0;0;0;
970ENDPROC
980:
990DEFFNS
1000="SendMes"
1010:
1020DEFPROCba
1030fa%=6
1040ga%=3
1050ha%=3
1060k%=7
1070l%=7
1080ia%=3
1090ja%=7
1100ka%=4
1110la%=3
1120ma%=7
1130na%=7
1140oa%=2
1150pa%=3
1160qa%=3
1170ra%=7
1180sa%=3
1190ta%=7
1200ua%=7
1210va%=3
1220wa%=3
1230u%=7
1240xa%=3
1250ya%=3
1260za%=7
1270ENDPROC
1280:
1290DEFPROCca
1300LOCALab%
1310VDU26,12
1320PRINT" ";CHR$(144+fa%);"¶
///////%¶/////////////////¶";
1330PRINTCHR$(144+fa%);"¶///////////*//
////// ";CHR$(144+fa%);"¶
";
1340PRINTCHR$(144+fa%);"¶";CHR$(144+ga%
);"jk 74$5 j£`p`pj 0 0p0p`p ";
CHR$(144+fa%);"¶";
1350PRINTCHR$(144+fa%);"¶";CHR$(144+ga%
);"jk"!7457 "kjjj$j!545=55j. ";
CHR$(144+fa%);"¶";
1360PRINTCHR$(144+fa%);"
);""£ £ !£! "£"£" "!££!!!!"£ ";
CHR$(145);" ";
1370FORab%=1TO18
1380PRINTCHR$(144+fa%);"¶";SPC(36);CHR$
(144+fa%);"¶";
1390NEXT
1400PRINTCHR$(144+fa%);"¶||||||||||||||
|||||||||||||||||||||||¶";
1410VDU28,2,22,37,5
1420ENDPROC
1430:
1440DEFPROCh($z%)
1450LOCALX%,Y%
1460X%=z%MOD256
1470Y%=z%DIV256
1480CALL&FFF7
1490ENDPROC
1500:
1510DEFFNf
1540PROCha
1550PRINT'CHR$(128+k%);"Please insert y
our submission disc"'CHR$(128+k%);"into
drive 0. This disc must be in"'CHR$(128+
k%);"the drive at all times when using"'
CHR$(128+k%);"this program."
1560PRINT'CHR$(128+k%);"Press A if this
disc is in ADFS"'CHR$(128+k%);"format,
D if it is in DFS format or";CHR$(128+k%
);"SPACE to use the current format. If";
CHR$(128+k%);"in doubt, press SPACE."
1570=FNbb("AaDd ",FALSE)
1580:
1590DEFPROCm
1600PROCcb
1610IFn%=0THENENDPROC
1620PRINT'CHR$(128+k%);"This program ca
n only handle"'CHR$(128+k%);"version 0 f
iles."
1630PRINT'CHR$(128+k%);"Press SPACE to
continue..."
1640*FX21
1650REPEATUNTILGET=32
1660ENDPROC
1670:
1680DEFPROCha
1690PRINTTAB(7,0);CHR$(128+ha%);"Messag
ing system 1.05"
1700ENDPROC
1710:
1720DEFFNg
1730LOCALA%,Y%
1740A%=0
1750Y%=0
1760=(USR(&FFDA)AND&FF)
1770:
1780DEFFNj(db$)
1790LOCALeb%
1800eb%=OPENIN(db$)
1810IFeb%=0THEN=FALSE
1820CLOSE#eb%
1830=TRUE
1840:
1850DEFPROCl
1860LOCALeb%,fb%
1870CLS
1880PROCha
1890PRINTTAB(0,2);CHR$(128+l%);"Please
enter your three-digit user"'CHR$(128+l%
);"ID:";CHR$(128+ia%);
1900gb$=FNhb(FNia(3,3))
1910PRINT''CHR$(128+l%);"Please enter y
our name as you wish"'CHR$(128+l%);"it t
o appear in message headings:"'';:fb%=VP
OS
1920PRINT''CHR$(128+l%);"(just press RE
TURN if you wish to"'CHR$(128+l%);"remai
n anonymous)"
1930PRINTTAB(0,fb%);CHR$(128+ia%);
1940ib$=FNia(0,20)
1950eb%=OPENOUT("!Mesg")
1960BPUT#eb%,0:n%=0
1970PRINT#eb%,gb$
1980PRINT#eb%,LEFT$(ib$+STRING$(20," ")
,20)
1990jb%=PTR#eb%
2000PRINT#eb%,0
2010CLOSE#eb%
2020ENDPROC
2030:
2040DEFPROCcb
2050LOCALeb%
2060eb%=OPENIN("!Mesg")
2070n%=BGET#eb%
2080IFn%<>0THENCLOSE#eb%:ENDPROC
2090INPUT#eb%,gb$
2100INPUT#eb%,ib$
2110REPEAT
2120IFRIGHT$(ib$,1)=" "THENib$=LEFT$(ib
$,LEN(ib$)-1)
2130UNTILRIGHT$(ib$,1)<>" "
2140jb%=PTR#eb%
2150CLOSE#eb%
2160ENDPROC
2170:
2180DEFFNhb(kb$)
2190LOCALlb$,mb%,nb%
2200lb$=""
2210FORmb%=1TOLEN(kb$)
2220nb%=ASC(MID$(kb$,mb%,1))
2230IFnb%>=ASC("a")ANDnb%<=ASC("z")THEN
nb%=nb%-32
2240lb$=lb$+CHR$(nb%)
2250NEXT
2260=lb$
2270:
2280DEFFNia(ob%,pb%)
2290LOCALmb%,qb%,kb$,e%
2300mb%=POS
2310qb%=VPOS
2320kb$=""
2330REPEAT
2340REPEAT
2350*FX21
2360e%=GET
2370UNTILe%=13OR(e%>=32ANDe%<=127)
2380IFe%=127ANDLEN(kb$)>0THENVDU127:kb$
=LEFT$(kb$,LEN(kb$)-1)
2390IFe%<>127ANDe%<>13ANDLEN(kb$)<pb%TH
ENVDUe%:kb$=kb$+CHR$(e%)
2400UNTIL(e%=13ANDLEN(kb$)>=ob%)
2410=kb$
2420:
2430DEFFNp
2440LOCALrb%,e%
2450CLS
2460PROCha
2470PRINTTAB(3,2);CHR$(128+ja%);"Start
a new message";TAB(32,2);"N"
2480PRINTTAB(3,3);CHR$(128+ja%);"View/e
dit the messages";TAB(32,3);"V"
2490PRINTTAB(3,4);CHR$(128+ja%);"Tidy t
he messages";TAB(32,4);"T"
2500PRINTTAB(3,5);CHR$(128+ja%);"Re-ent
er your user ID/name";TAB(32,5);"R"
2510PRINTTAB(3,6);CHR$(128+ja%);"Undele
te deleted messages";TAB(32,6);"U"
2520PRINTTAB(3,7);CHR$(128+ja%);"Quit t
o BASIC";TAB(32,7);"Q"
2530PRINTTAB(0,9);CHR$(128+ma%);"Use th
e cursor keys to move the bar";CHR$(128+
ma%);"and press RETURN to select, or use
"'CHR$(128+ma%);"the appropriate key sho
rtcut."
2540rb%=1
2550PRINTTAB(1,rb%+1);CHR$(128+ka%);CHR
$(157);CHR$(128+la%);TAB(35,rb%+1);CHR$1
56;
2560REPEAT
2570REPEAT
2580*FX21
2590e%=GET
2600UNTILINSTR("NVTRUQnvtruq"+CHR$(138)
+CHR$(139)+CHR$(13),CHR$(e%))>0
2610PRINTTAB(1,rb%+1);CHR$(128+ja%);"
"
2620IFe%=138THENIFrb%<6THENrb%=rb%+1
2630IFe%=139THENIFrb%>1THENrb%=rb%-1
2640IFe%>=ASC("a")ANDe%<=ASC("z")THENe%
=e%-32
2650IFe%=ASC("N")THENrb%=1
2660IFe%=ASC("V")THENrb%=2
2670IFe%=ASC("T")THENrb%=3
2680IFe%=ASC("R")THENrb%=4
2690IFe%=ASC("U")THENrb%=5
2700IFe%=ASC("Q")THENrb%=6
2710PRINTTAB(1,rb%+1);CHR$(128+ka%);CHR
$(157);CHR$(128+la%);TAB(35,rb%+1);CHR$1
56;
2720UNTILe%=13
2730=rb%
2740:
2750DEFPROCq
2760LOCALmb%,qb%,sb$,tb%,ub$
2770CLS
2780PROCha
2790eb%=OPENIN("!Mesg")
2800PTR#eb%=jb%
2810INPUT#eb%,tb%
2820CLOSE#eb%
2830IFtb%=w%THENPRINTCHR$(128+na%);"Sor
ry - you already have ";w%'CHR$(128+na%)
;"messages!"''CHR$(128+na%);"Press SPACE
to return to the menu..";:PROCh("FX21")
:REPEATUNTILGET=32:ENDPROC
2840PROCvb
2850PRINTTAB(0,2);CHR$(128+na%);"Please
enter the user ID of the"'CHR$(128+na%)
;"recipient:";CHR$(128+ia%);
2860mb%=POS
2870qb%=VPOS
2880PRINT''CHR$(128+na%);"(Use 999 for
all users and CCC for"'CHR$(128+na%);"pr
ogram comments)"
2890PRINTTAB(mb%,qb%);
2900*FX229,0
2910sb$=FNhb(FNia(3,3))
2920*FX229,1
2930IFsb$="999"THENub$=" (all members)"
ELSEub$=""
2940IFsb$<>"CCC"THENPROCwb(CHR$(128+oa%
)+"To: "+CHR$(128+pa%)+sb$+ub$,aa%):
PROCwb(CHR$(128+oa%)+"Subject:"+CHR$(128
+pa%),aa%+80)
2950IFsb$="CCC"THENPROCwb(CHR$(128+oa%)
+"Program:"+CHR$(128+pa%),aa%+40)
2960PROCwb(CHR$(128+oa%)+"From: "+CHR
$(128+pa%)+gb$,aa%+(40*ABS(sb$<>"CCC")))
2970IFib$<>""THENPROCwb("("+ib$+")",aa%
+(40*ABS(sb$<>"CCC"))+14)
2980sb$=FNxb(sb$,10,2+(sb$="CCC"))
2990PROCyb(sb$)
3000PROCca
3010ENDPROC
3020:
3030DEFPROCwb(zb$,ac%)
3040LOCALbc%
3050FORbc%=ac%TOac%+LEN(zb$)-1
3060?bc%=ASC(MID$(zb$,bc%-ac%+1,1))
3070NEXT
3080ENDPROC
3090:
3100DEFPROCvb
3110!&70=aa%
3120!&72=aa%+v%+1
3130CALLvb
3140ENDPROC
3150:
3160DEFFNxb(sb$,cc%,dc%)
3170LOCALe%,ec%,fc%
3180VDU26,12
3190gc%=0
3200hc%=FALSE
3210ic%=0
3220jc%=FALSE
3230PROCkc(gc%)
3240PROClc(hc%)
3250PROCea
3260REPEAT
3270PRINTTAB(cc%,dc%);
3280REPEAT
3290*FX21
3300IFic%=0THENe%=GETELSEe%=BGET#ic%:jc
%=INKEY(-113)
3310IFjc%ANDic%>0THENCLOSE#ic%:ic%=0:jc
%=FALSE
3330UNTIL(e%>=3ANDe%<=13)ORe%=20ORe%=27
ORe%>=32
3340ec%=INKEY(-1)
3350fc%=INKEY(-2)
3360IFic%<>0THENIFEOF#ic%THENCLOSE#ic%:
ic%=0
3370IFic%<>0ANDe%=10THENe%=13
3380IFNOThc%ANDe%>=3ANDe%<=12THENcc%=FN
mc(cc%,dc%,gc%,e%,ec%,fc%)
3390IFe%=20THENic%=FNnc(sb$):PROClc(hc%
)
3400IFe%=12ANDNOTec%ANDNOTfc%THENhc%=NO
Thc%:PROCa:PROClc(hc%):PROCea
3410IFNOThc%ANDe%=10ANDNOTec%ANDfc%THEN
PROCa:PROCoc(dc%,gc%):VDU26,12:PROCkc(gc
%):PROClc(hc%):PROCea
3420IFNOThc%ANDe%=11ANDNOTec%ANDfc%THEN
PROCa:PROCpc(dc%,gc%):VDU26,12:PROCkc(gc
%):PROClc(hc%):PROCea
3430IFNOThc%ANDe%=12ANDec%ANDNOTfc%THEN
PROCa:sb$=FNqc(sb$):VDU26,12:PROCkc(gc%)
:PROClc(hc%):PROCea
3440IFNOThc%AND(e%>=32ANDe%<=126)THENVD
Ue%:aa%?FNrc(cc%,dc%,gc%)=e%:cc%=cc%+1
3450IFhc%ANDINSTR("QWASZX",CHR$(e%AND&D
F))<>0THENaa%?FNrc(cc%,dc%,gc%)=FNsc(aa%
?FNrc(cc%,dc%,gc%),e%AND&DF)
3460IFe%=127ANDcc%>0THENcc%=cc%-1:PROCt
c(cc%,dc%,gc%):PROCa:VDU31,0,dc%:PROCuc(
gc%+dc%):PROCea
3470IFe%=13THENcc%=0:dc%=dc%+1
3480IFe%=136THENcc%=cc%-1:IFec%THENcc%=
0
3490IFe%=137THENcc%=cc%+1:IFec%THENcc%=
39
3500IFe%=138THENdc%=dc%+1:IFec%THENdc%=
dc%-1:PROCa:gc%=FNvc(gc%+12):PROCkc(gc%)
:PROClc(hc%):PROCea
3510IFe%=139THENdc%=dc%-1:IFec%THENdc%=
dc%+1:PROCa:gc%=FNvc(gc%-12):PROCkc(gc%)
:PROClc(hc%):PROCea
3520IFcc%<0THENcc%=39:dc%=dc%-1
3530IFdc%<0THENdc%=0:IFgc%>0THENPROCa:g
c%=gc%-1:VDU28,0,23,39,0,30,11,26,30:PRO
Cuc(gc%):PROClc(hc%):PROCea
3540IFcc%>39ANDFNwc(aa%?FNrc(39,dc%,gc%
))THENPROCxc
3550IFcc%>39THENcc%=0:dc%=dc%+1
3560IFdc%>23THENdc%=23:IFgc%<(((v%-40)D
IV40)-23)THENPROCa:gc%=gc%+1:VDU28,0,23,
39,0,31,0,23,10,26,31,0,23:PROCuc(gc%+23
):PROClc(hc%):PROCea
3570IF(e%=13OR(e%=32ANDcc%=0))ANDFNyc(a
a%?FNrc(0,dc%-1,gc%))THENzc%=aa%?FNrc(0,
dc%-1,gc%):PRINTTAB(cc%,dc%);CHR$(zc%);:
aa%?FNrc(0,dc%,gc%)=zc%:cc%=cc%+1
3580UNTILe%=27
3590IFic%>0THENCLOSE#ic%
3600PROCa
3610=sb$
3620:
3630DEFPROCxc
3640LOCAL
3650IFFNrc(0,dc%+1,gc%)>=(v%-40)THENEND
PROC
3660ad$=""
3670cc%=cc%-1
3680rc%=FNrc(cc%,dc%,gc%)
3690REPEAT
3700ad$=CHR$(aa%?rc%)+ad$
3710cc%=cc%-1
3720rc%=rc%-1
3730UNTILNOTFNwc(aa%?rc%)
3740PRINTTAB(cc%+1,dc%);
3750FORbd%=rc%+1TOFNrc(39,dc%,gc%)
3760aa%?bd%=32:VDU32
3770NEXT
3780dc%=dc%+1
3790cc%=0
3800IFFNyc(aa%?FNrc(0,dc%-1,gc%))THENzc
%=aa%?FNrc(0,dc%-1,gc%):PRINTTAB(cc%,dc%
);CHR$(zc%);:aa%?FNrc(0,dc%,gc%)=zc%:cc%
=cc%+1
3810PRINTTAB(cc%,dc%);ad$;
3820cd%=FNrc(cc%,dc%,gc%)
3830FORdd%=0TOLEN(ad$)-1
3840aa%?(dd%+cd%)=ASC(MID$(ad$,dd%+1,1)
)
3850NEXT
3860cc%=cc%+LEN(ad$)
3870ENDPROC
3880:
3890DEFFNyc(zc%)
3900=(zc%>=129ANDzc%<=135)
3910:
3920DEFFNwc(zc%)
3930=(zc%>=33ANDzc%<=126)
3940:
3950DEFPROCoc(dc%,gc%)
3960LOCALed%,fd%
3970ed%=FNgd
3980IFed%>=(((v%-40)DIV40)*40)THENPROCd
:ENDPROC
3990IFFNrc(0,dc%,gc%)>ed%THENENDPROC
4000!&70=aa%+FNrc(0,dc%,gc%)-40
4010!&72=aa%+(ed%DIV40)*40
4020CALLoc
4030FORfd%=FNrc(0,dc%,gc%)TOFNrc(39,dc%
,gc%)
4040aa%?fd%=32
4050NEXT
4060ENDPROC
4070:
4080DEFPROCpc(dc%,gc%)
4090LOCALed%,fd%
4100ed%=FNgd
4110IFFNrc(0,dc%,gc%)>ed%THENENDPROC
4120IFed%>=FNrc(0,dc%,gc%)ANDed%<=FNrc(
39,dc%,gc%)THENFORfd%=FNrc(0,dc%,gc%)TOF
Nrc(39,dc%,gc%):aa%?fd%=32:NEXT:ENDPROC
4130!&70=aa%+FNrc(0,dc%,gc%)
4140!&72=aa%+(ed%DIV40)*40
4150CALLpc
4160FORfd%=(ed%DIV40)*40TO(ed%DIV40)*40
+40
4170aa%?fd%=32
4180NEXT
4190ENDPROC
4200:
4210DEFPROCd
4220SOUND1,-10,101,5
4230ENDPROC
4240:
4250DEFPROCtc(cc%,dc%,gc%)
4260!&70=aa%+FNrc(0,dc%,gc%)
4270?&72=cc%+1
4280CALLtc
4290ENDPROC
4300:
4310DEFPROChd(cc%,dc%,gc%)
4320IFcc%=39THENaa%?FNrc(39,dc%,gc%)=32
:ENDPROC
4330!&70=aa%+FNrc(0,dc%,gc%)
4340?&72=cc%
4350CALLhd
4360ENDPROC
4370:
4380DEFFNvc(gc%)
4390IFgc%<0THENgc%=0
4400IFgc%>(((v%-40)DIV40)-23)THENgc%=((
(v%-40)DIV40)-23)
4410=gc%
4420:
4430DEFFNmc(cc%,dc%,gc%,e%,ec%,fc%)
4440LOCALzc%
4450IFe%>=3ANDe%<=9ANDNOTec%ANDNOTfc%TH
ENVDU126+e%:aa%?FNrc(cc%,dc%,gc%)=126+e%
:cc%=cc%+1
4460IFe%>=3ANDe%<=9ANDec%ANDNOTfc%THENV
DU142+e%:aa%?FNrc(cc%,dc%,gc%)=142+e%:cc
%=cc%+1
4470IFNOTec%ANDfc%ANDe%=12THENPROCa:PRO
Cid:VDU26,12:PROCkc(gc%):PROClc(hc%):PRO
Cea
4480IFe%>=10ANDe%<=11ANDNOTec%ANDNOTfc%
THENVDU126+e%:aa%?FNrc(cc%,dc%,gc%)=126+
e%:cc%=cc%+1
4490IFe%>=10ANDe%<=11ANDec%ANDNOTfc%THE
NVDU167-e%:aa%?FNrc(cc%,dc%,gc%)=167-e%:
cc%=cc%+1
4500IFe%>=3ANDe%<=4ANDNOTec%ANDfc%THENV
DU150+e%:aa%?FNrc(cc%,dc%,gc%)=150+e%:cc
%=cc%+1
4510IFe%>=5ANDe%<=6ANDNOTec%ANDfc%THENV
DU153+e%:aa%?FNrc(cc%,dc%,gc%)=153+e%:cc
%=cc%+1
4520IFe%>=7ANDe%<=8ANDNOTec%ANDfc%THENV
DU148-e%:aa%?FNrc(cc%,dc%,gc%)=148-e%:cc
%=cc%+1
4530IFe%=9ANDNOTec%ANDfc%THENPROChd(cc%
,dc%,gc%):PROCa:VDU31,0,dc%:PROCuc(gc%+d
c%):PROCea
4540=cc%
4550:
4560DEFPROClc(hc%)
4570IFNOThc%THENPRINTTAB(0,24);CHR$(128
+qa%);"Press CTRL";CHR$(129);"f9";CHR$(1
28+qa%);"for help... ";ELSEPRINTT
AB(0,24);CHR$(128+qa%);"Press";CHR$(129)
;"f9";CHR$(128+qa%);"to exit pixel editi
ng...";
4580ENDPROC
4590:
4600DEFFNnc(sb$)
4610LOCALjd$,eb%
4620PRINTTAB(0,24);CHR$(128+qa%);"Load
text file - are you sure?";CHR$(128+ia%)
;
4630IFNOTFNkdTHEN=0
4640PRINTTAB(0,24);SPC(35);TAB(0,24);CH
R$(128+qa%);"Filename:";CHR$(128+ia%);
4650jd$=FNia(0,20)
4660IFjd$=""THEN=0
4690ONERRORPROCa:PROCd:PROCyb(sb$):PROC
ca:GOTO470
4700eb%=OPENIN(jd$)
4710IFeb%=0THENPROCd
4720=eb%
4730:
4740DEFPROCkc(gc%)
4750PRINTTAB(0,0);
4760!&70=aa%+FNrc(0,0,gc%)
4770!&72=aa%+FNrc(0,0,gc%)+960
4780CALLkc
4790ENDPROC
4800:
4810DEFPROCuc(gc%)
4820!&70=aa%+FNrc(0,0,gc%)
4830CALLuc
4840ENDPROC
4850:
4860DEFFNrc(cc%,dc%,gc%)
4870=cc%+(dc%+gc%)*40
4880:
4890DEFFNsc(zc%,e%)
4900IFzc%>128THENzc%=zc%-128
4910zc%=zc%-32
4920y%(1)=(zc%AND1)=1
4930y%(2)=(zc%AND2)=2
4940y%(3)=(zc%AND4)=4
4950y%(4)=(zc%AND8)=8
4960y%(5)=(zc%AND16)=16
4970y%(6)=(zc%AND64)=64
4980IFe%=ASC("Q")THENy%(1)=NOTy%(1)
4990IFe%=ASC("W")THENy%(2)=NOTy%(2)
5000IFe%=ASC("A")THENy%(3)=NOTy%(3)
5010IFe%=ASC("S")THENy%(4)=NOTy%(4)
5020IFe%=ASC("Z")THENy%(5)=NOTy%(5)
5030IFe%=ASC("X")THENy%(6)=NOTy%(6)
5040zc%=160+ABS(y%(1))+ABS(y%(2))*2+ABS
(y%(3))*4+ABS(y%(4))*8+ABS(y%(5))*16+ABS
(y%(6))*64
5050VDUzc%,8
5060=zc%
5070:
5080DEFPROCyb(sb$)
5090LOCALeb%,tb%,A%,X%,Y%
5100VDU26
5110PRINTTAB(0,24);CHR$(128+xa%);"Pleas
e wait, saving message... ";
5120eb%=OPENUP("!Mesg")
5130PTR#eb%=jb%
5140INPUT#eb%,tb%
5150PTR#eb%=jb%
5160PRINT#eb%,tb%+1
5170PTR#eb%=EXT#eb%
5180PRINT#eb%,sb$
5190BPUT#eb%,0
5200z%?0=eb%
5210z%!1=aa%
5220z%!5=FNgd+1
5230A%=2
5240X%=z%MOD256
5250Y%=z%DIV256
5260CALL&FFD1
5270BPUT#eb%,152
5280CLOSE#eb%
5290ENDPROC
5300:
5310DEFFNgd
5320!&70=aa%+v%+1
5330!&72=aa%
5340CALLgd
5350!&72=0
5360=(!&70)-aa%
5370:
5380DEFPROCr
5390LOCALeb%,tb%,ld%,md%,nd%,gc%,e%,na%
,sb$,kd%,od%
5400eb%=OPENUP("!Mesg")
5410PTR#eb%=jb%
5420INPUT#eb%,tb%
5430IFtb%=0THENCLOSE#eb%:ENDPROC
5440CLS
5450PROCha
5460PRINTTAB(0,2);CHR$(128+za%);"Please
wait, loading message..."
5470ld%=1
5480od%=TRUE
5490REPEAT
5500IFNOTod%THENVDU26:PRINTTAB(0,24);CH
R$(128+ya%);"Please wait, loading messag
e... ";
5510od%=FALSE
5520REPEAT
5530md%=PTR#eb%
5540INPUT#eb%,sb$
5550nd%=BGET#eb%
5560PROCpd(eb%)
5570UNTILnd%=0
5580x%(ld%)=md%
5590VDU26,12
5600gc%=0
5610PROCkc(gc%)
5620PROCqd(sb$,ld%,tb%)
5630REPEAT
5640REPEAT
5650*FX21
5660e%=GET
5670IFe%>=ASC("a")ANDe%<=ASC("z")THENe%
=e%-32
5680UNTIL(e%>=136ANDe%<=139)ORe%=27ORe%
=ASC("E")ORe%=ASC("D")ORe%=3
5690ec%=INKEY(-1)
5700IFe%=3THENPROCrd:VDU26,12:PROCkc(gc
%):PROCqd(sb$,ld%,tb%)
5710na%=FALSE
5720IFe%=136ANDld%>1THENld%=ld%-1:PTR#e
b%=x%(ld%):na%=TRUE
5730IFe%=137ANDld%<tb%THENld%=ld%+1:na%
=TRUE
5740IFe%=139ANDNOTec%ANDgc%>0THENgc%=gc
%-1:VDU28,0,23,39,0,30,11,26,30:PROCuc(g
c%)
5750IFe%=139ANDec%THENgc%=FNvc(gc%-12):
VDU26,12:PROCkc(gc%):PROCqd(sb$,ld%,tb%)
5760IFe%=138ANDNOTec%ANDgc%<(((v%-40)DI
V40)-23)THENgc%=gc%+1:VDU28,0,23,39,0,31
,0,23,10,26,31,0,23:PROCuc(gc%+23)
5770IFe%=138ANDec%THENgc%=FNvc(gc%+12):
VDU26,12:PROCkc(gc%):PROCqd(sb$,ld%,tb%)
5780IFe%=ASC("D")THENPRINTTAB(0,24);CHR
$(128+va%);"Are you sure you want to del
ete this? ";:kd%=FNkd:PROCqd(sb$,ld%,tb%
):IFNOTkd%THENe%=-1
5790IFe%=ASC("E")THENPRINTTAB(0,24);CHR
$(128+wa%);"Are you sure you want to edi
t this? ";:kd%=FNkd:PROCqd(sb$,ld%,tb%)
:IFNOTkd%THENe%=-1
5800UNTILe%=27ORna%ORe%=ASC("E")ORe%=AS
C("D")
5810UNTILe%=27ORe%=ASC("E")ORe%=ASC("D"
)
5820IFe%=ASC("D")THENPTR#eb%=x%(ld%):PR
OCsd(eb%)
5830IFe%=ASC("E")THENPTR#eb%=x%(ld%):PR
OCsd(eb%):CLOSE#eb%:sb$=FNxb(sb$,0,4):PR
OCyb(sb$)
5840IFe%<>ASC("E")THENCLOSE#eb%
5850PROCca
5860ENDPROC
5870:
5880DEFFNkd
5890LOCALe$
5900REPEAT
5910e$=CHR$(GETAND&DF)
5920UNTILe$="Y"ORe$="N"
5930=(e$="Y")
5940:
5950DEFPROCpd(eb%)
5960LOCALA%,X%,Y%
5970z%?0=eb%
5980z%!1=aa%
5990z%!5=v%+1
6000A%=4
6010X%=z%MOD256
6020Y%=z%DIV256
6030CALL&FFD1
6040!&70=aa%-1
6050!&72=aa%+v%+1
6060CALLtd
6070!&76=0
6080PTR#eb%=PTR#eb%-((v%-z%!5)-(!&74-aa
%))
6090ENDPROC
6100:
6110DEFPROCqd(ud$,vd%,wd%)
6120LOCALxd$
6130IFvd%>9ANDwd%>9THENxd$=""ELSExd$="
"
6140PRINTTAB(0,24);CHR$(128+qa%);"Messa
ge ";vd%;" of ";wd%;",";xd$;"to ";ud$;"
-";CHR$(129);"f0";CHR$(128+qa%);"for hel
p ";
6150ENDPROC
6160:
6170DEFPROCsd(eb%)
6180LOCALtb%,yd$
6190INPUT#eb%,yd$
6200BPUT#eb%,255
6210PTR#eb%=jb%
6220INPUT#eb%,tb%
6230PTR#eb%=jb%
6240PRINT#eb%,tb%-1
6250ENDPROC
6260:
6270DEFPROCs
6280LOCALzd%,ae%,be$,tb%,ud$,nd%,ce%,n%
6290CLS
6300PROCha
6310PRINTTAB(0,2);CHR$(128+ta%);"Are yo
u sure you want to tidy the"'CHR$(128+ta
%);"messages?":IFNOTFNkdTHENENDPROC
6320PRINT'CHR$(128+ta%);"Please wait, t
idying messages..."
6330VDU21
6340IFFNj("!MesgB")THENOSCLI"DELETE !Me
sgB"
6350*RENAME !Mesg !MesgB
6360zd%=OPENIN("!MesgB")
6370ae%=OPENOUT("!Mesg")
6380n%=BGET#zd%
6390BPUT#ae%,n%
6400INPUT#zd%,be$
6410PRINT#ae%,be$
6420INPUT#zd%,be$
6430PRINT#ae%,be$
6440INPUT#zd%,tb%
6450PRINT#ae%,tb%
6460IFEOF#zd%THENVDU6:CLOSE#zd%:CLOSE#a
e%:PROCh("DELETE !MesgB"):ENDPROC
6470REPEAT
6480INPUT#zd%,ud$
6490nd%=BGET#zd%
6500IFnd%=0THENPRINT#ae%,ud$:BPUT#ae%,n
d%:REPEAT:ce%=BGET#zd%:BPUT#ae%,ce%:UNTI
Lce%=152ELSEREPEATUNTILBGET#zd%=152
6510UNTILEOF#zd%
6520CLOSE#zd%
6530CLOSE#ae%
6540*DELETE !MesgB
6550VDU6
6560ENDPROC
6570:
6580DEFPROCrd
6590PROCca
6600PROCha
6610PRINTTAB(0,2);CHR$(128+ra%);"Use th
e cursor up and down keys to"'CHR$(128+r
a%);"scroll through the displayed"'CHR$(
128+ra%);"message. Use SHIFT to scroll"'
CHR$(128+ra%);"quickly."
6620PRINT'CHR$(128+ra%);"Use the cursor
left and right keys"'CHR$(128+ra%);"to
move between messages."
6630PRINT'CHR$(128+ra%);"Press D to del
ete the current"'CHR$(128+ra%);"message
and E to edit it."
6640PRINT'CHR$(128+ra%);"Press ESCAPE t
o return to the menu."
6650PRINTTAB(0,16);CHR$(128+sa%);"Press
ESCAPE to return to"'CHR$(128+sa%);"vie
wing...";
6660*FX21
6670REPEATUNTILGET=27
6680ENDPROC
6690:
6700DEFPROCid
6710LOCALe%
6720PROCca
6730PROCha
6740PRINTTAB(0,2);CHR$(128+ra%);"Use th
e cursor keys to move around"'CHR$(128+r
a%);"the message. Use SHIFT to move more
";CHR$(128+ra%);"quickly. Use the keyboa
rd to enter"'CHR$(128+ra%);"text and DEL
ETE to delete"'CHR$(128+ra%);"characters
."
6750PRINT'CHR$(128+ra%);"Use";CHR$(129)
;"f0-f6";CHR$(128+ra%);"to set the text
colour"
6760PRINTCHR$(128+ra%);"Use SHIFT";CHR$
(129);"f0-f6";CHR$(128+ra%);"to set the
graphic"'CHR$(128+ra%);"colour"
6770PRINTCHR$(128+ra%);"Use";CHR$(129);
"f7/f8";CHR$(128+ra%);"for steady/flashi
ng"
6780PRINTCHR$(128+ra%);"Use SHIFT";CHR$
(129);"f7/f8";CHR$(128+ra%);"for coloure
d/black"'CHR$(128+ra%);"background"
6790PRINTTAB(0,16);CHR$(128+sa%);"Press
CTRL";CHR$(129);"f9";CHR$(128+sa%);"for
more help or"'CHR$(128+sa%);"press ESCA
PE to continue editing..";
6800REPEAT
6810*FX21
6820e%=GET
6830UNTIL(e%=12ANDINKEY(-2))ORe%=27
6840IFe%=27THENENDPROC
6850CLS
6860PROCha
6870PRINTTAB(0,2);CHR$(128+ra%);"Use";C
HR$(129);"f9";CHR$(128+ra%);"to design a
graphic block"
6880PRINTCHR$(128+ra%);"Use CTRL";CHR$(
129);"f0/f1";CHR$(128+ra%);"to set conti
guous/"'CHR$(128+ra%);"separated graphic
s"
6890PRINTCHR$(128+ra%);"Use CTRL";CHR$(
129);"f2/f3";CHR$(128+ra%);"to hold/rele
ase"'CHR$(128+ra%);"graphics"
6900PRINTCHR$(128+ra%);"Use CTRL";CHR$(
129);"f4/f5";CHR$(128+ra%);"for double/s
ingle"'CHR$(128+ra%);"height"
6910PRINTCHR$(128+ra%);"Use SHIFT";CHR$
(129);"f9";CHR$(128+ra%);"to change the"
'CHR$(128+ra%);"recipient of the message
"
6920PRINTCHR$(128+ra%);"Use CTRL";CHR$(
129);"f6";CHR$(128+ra%);"to insert a spa
ce"
6930PRINTCHR$(128+ra%);"Use CTRL";CHR$(
129);"f7/f8";CHR$(128+ra%);"to insert/de
lete a"'CHR$(128+ra%);"line"
6950PRINT'CHR$(128+ra%);"Press ESCAPE t
o finish editing"
6960PRINTTAB(0,17);CHR$(128+sa%);"Press
ESCAPE to continue editing..";
6970*FX21
6980REPEATUNTILGET=27
6990ENDPROC
7000:
7010DEFPROCda
7020DIMzc%308
7030PROCh("LOAD SendMC "+STR$÷zc%)
7040vb=zc%
7050kc=zc%+&20
7060gd=zc%+&41
7070uc=zc%+&63
7080td=zc%+&70
7090tc=zc%+&AB
7100hd=zc%+&BE
7110oc=zc%+&D0
7120pc=zc%+&102
7130ENDPROC
7140:
7150DEFPROCt
7160LOCALeb%,de$,ee$
7170CLS
7180PROCha
7190PRINTTAB(0,2);CHR$(128+l%);"Your us
er ID is currently entered"'CHR$(128+l%)
;"as ";gb$
7200PRINT'CHR$(128+l%);"Please enter yo
ur three-digit user"'CHR$(128+l%);"ID:";
CHR$(128+ia%);
7210*FX229,0
7220de$=FNhb(FNia(3,3))
7230*FX229,1
7240PRINT''CHR$(128+l%);"Your name is c
urrently entered as"'CHR$(128+l%);ib$
7250PRINT'CHR$(128+l%);"Please enter yo
ur name:"'CHR$(128+ia%);
7260*FX229,0
7270ee$=FNia(0,20)
7280*FX229,1
7290gb$=de$
7300ib$=ee$
7310eb%=OPENUP("!Mesg")
7320PTR#eb%=0
7330BPUT#eb%,0
7340PRINT#eb%,gb$
7350PRINT#eb%,LEFT$(ib$+STRING$(20," ")
,20)
7360CLOSE#eb%
7370ENDPROC
7380:
7390DEFFNqc(sb$)
7400LOCALmb%,qb%
7410PROCca
7420PROCha
7430PRINTTAB(0,2);CHR$(128+ua%);"This m
essage is currently going"'CHR$(128+ua%)
;"to ";sb$
7440PRINT'CHR$(128+ua%);"Please enter t
he user ID of the"'CHR$(128+ua%);"recipi
ent:";CHR$(128+ia%);
7450mb%=POS
7460qb%=VPOS
7470PRINT''CHR$(128+ua%);"(Use 999 for
all users and CCC for"'CHR$(128+ua%);"pr
ogram comments)"
7480PRINTTAB(mb%,qb%);
7490=FNhb(FNia(3,3))
7500:
7510DEFPROCu
7520LOCALeb%,tb%,ud$,nd%,pb%
7530CLS
7540PROCha
7550PRINTTAB(0,2);CHR$(128+u%);"Are you
sure you want to undelete?"
7560IFNOTFNkdTHENENDPROC
7570PRINT'CHR$(128+u%);"Please wait, un
deleting messages..."
7580pb%=FALSE
7590eb%=OPENUP("!Mesg")
7600PTR#eb%=jb%
7610INPUT#eb%,tb%
7620IFEOF#eb%THENCLOSE#eb%:ENDPROC
7630REPEAT
7640INPUT#eb%,ud$
7650nd%=BGET#eb%
7660IFNOTpb%ANDnd%=255THENPTR#eb%=PTR#e
b%-1:BPUT#eb%,0:tb%=tb%+1
7670REPEATUNTILBGET#eb%=152
7680IFtb%=w%ANDNOTEOF#eb%THENpb%=TRUE
7690UNTILEOF#eb%
7700PTR#eb%=jb%
7710PRINT#eb%,tb%
7720CLOSE#eb%
7730IFpb%THENPRINT'CHR$(128+u%);"Warnin
g - not all of the messages"'CHR$(128+u%
);"have been recovered."''CHR$(128+u%);"
Press SPACE to return to the menu..";:PR
OCh("FX21"):REPEATUNTILGET=32
7740ENDPROC
7750:
7760DEFFNbb(fe$,ge%)
7770LOCALe$
7780REPEAT
7790*FX21
7800IFge%THENe$=CHR$(GETAND&DF)ELSEe$=G
ET$
7810UNTILINSTR(fe$,e$)<>0
7820=e$