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