8-Bit Software Online Conversion
                
             
        
        
    
8BS Messaging System. V 1.07 - Listing
    
      350:                                  
  360*FX119                             
  370MODE7                              
  380PROCa                              
  390PROCb                              
  400PROCc                              
  410:                                  
  440ONERRORPROCd:e$=" ":GOTO460        
  450e$=FNf                             
  460IFe$=" "ANDFNg=8THENe$="A"         
  470IFe$=" "ANDFNg<>8THENe$="D"        
  480IFe$="A"ORe$="a"THENPROCh("ADFS"):P
ROCh("MOUNT 0")                         
  490IFe$="D"ORe$="d"THENPROCh("DISC"):P
ROCh("DRIVE 0")                         
  500ONERRORIFERR=17THENPROCh("FX3,0"):P
ROCh("FX229,1"):GOTO560ELSEPROCh("FX3,0"
):VDU6:CLOSE#0:MODE7:REPORT:PRINT" at li
ne ";ERL:PROCh("KEY0 LIST "+STR$(ERL)+"|
M"):PROCh("FX21"):PROCh("FX138,0,128"):P
ROCi:END                                
  510IFFNj("!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."                                  
  520IFFNj("!Mess")THENPRINT'CHR$(128+k%
);"Press SPACE to continue...":PROCh("FX
21"):REPEATUNTILGET=32                  
  530IFNOTFNj("!Mesg")THENPROClELSEPROCm
                                        
  540IFn%<>0THENGOTO440                 
  550:                                  
  560REPEAT                             
  570o%=FNp                             
  580IFo%=1THENPROCq                    
  590IFo%=2THENPROCr                    
  600IFo%=3THENPROCs                    
  610IFo%=4THENPROCt                    
  620IFo%=5THENPROCu                    
  630IFo%=6THENPROCv                    
  640UNTILo%=7                          
  650MODE7                              
  660PROCi                              
  670END                                
  680:                                  
  690DEFPROCb                           
  700*FX225,3                           
  710*FX226,3                           
  720*FX227,3                           
  730*FX229,1                           
  740*FX4,1                             
  750ENDPROC                            
  760:                                  
  770DEFPROCi                           
  780*FX225,1                           
  790*FX226,128                         
  800*FX227,144                         
  810*FX229,0                           
  820*FX4,0                             
  830ENDPROC                            
  840:                                  
  850DEFPROCc                           
  860ONERRORMODE7:CLOSE#0:REPORT:PRINT" 
at line ";ERL:PROCi:END                 
  870w%=4096                            
  880x%=25                              
  890DIMy%(x%),z%(6),aa%256,ba%w%       
  900PROCca                             
  910PROCda                             
  920PROCea                             
  930ENDPROC                            
  940:                                  
  950DEFPROCa                           
  960VDU23,1,0;0;0;0;                   
  970ENDPROC                            
  980:                                  
  990DEFPROCfa                          
 1000VDU23,1,1;0;0;0;                   
 1010ENDPROC                            
 1020:                                  
 1030DEFFNS                             
 1040="SendMes"                         
 1050:                                  
 1060DEFPROCca                          
 1070ga%=6                              
 1080ha%=3                              
 1090ia%=3                              
 1100k%=7                               
 1110l%=7                               
 1120ja%=3                              
 1130ka%=7                              
 1140la%=4                              
 1150ma%=3                              
 1160na%=7                              
 1170oa%=7                              
 1180pa%=2                              
 1190qa%=3                              
 1200ra%=3                              
 1210sa%=7                              
 1220ta%=3                              
 1230ua%=7                              
 1240va%=7                              
 1250wa%=7                              
 1260xa%=3                              
 1270xa%=3                              
 1280xa%=3                              
 1290v%=7                               
 1300ya%=3                              
 1310za%=3                              
 1320ab%=7                              
 1330ENDPROC                            
 1340:                                  
 1350DEFPROCda                          
 1360LOCALbb%                           
 1370VDU26,12                           
 1380PRINT"           ";CHR$(144+ga%);"¶
///////%¶/////////////////¶";           
 1390PRINTCHR$(144+ga%);"¶///////////*//
//////                ";CHR$(144+ga%);"¶
";                                      
 1400PRINTCHR$(144+ga%);"¶";CHR$(144+ha%
);"jk  74$5  j£`p`pj 0 0p0p`p         ";
CHR$(144+ga%);"¶";                      
 1410PRINTCHR$(144+ga%);"¶";CHR$(144+ha%
);"jk"!7457  "kjjj$j!545=55j.         ";
CHR$(144+ga%);"¶";                      
 1420PRINTCHR$(144+ga%);"               
);""£  £ !£! "£"£" "!££!!!!"£         ";
CHR$(145);" ";                          
 1430FORbb%=1TO18                       
 1440PRINTCHR$(144+ga%);"¶";SPC(36);CHR$
(144+ga%);"¶";                          
 1450NEXT                               
 1460PRINTCHR$(144+ga%);"¶||||||||||||||
|||||||||||||||||||||||¶";              
 1470VDU28,2,22,37,5                    
 1480ENDPROC                            
 1490:                                  
 1500DEFPROCh($aa%)                     
 1510LOCALX%,Y%                         
 1520X%=aa%MOD256                       
 1530Y%=aa%DIV256                       
 1540CALL&FFF7                          
 1550ENDPROC                            
 1560:                                  
 1570DEFFNf                             
 1600PROCia                             
 1610PRINT'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."            
 1620PRINT'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."   
 1630=FNcb("AaDd ",FALSE)               
 1640:                                  
 1650DEFPROCm                           
 1660PROCdb                             
 1670IFn%=0THENENDPROC                  
 1680PRINT'CHR$(128+k%);"This program ca
n only handle"'CHR$(128+k%);"version 0 f
iles."                                  
 1690PRINT'CHR$(128+k%);"Press SPACE to 
continue..."                            
 1700*FX21                              
 1710REPEATUNTILGET=32                  
 1720ENDPROC                            
 1730:                                  
 1740DEFPROCia                          
 1750CLS                                
 1760PRINTTAB(7,0);CHR$(128+ia%);"Messag
ing system 1.07"                        
 1770ENDPROC                            
 1780:                                  
 1790DEFFNg                             
 1800LOCALA%,Y%                         
 1810A%=0                               
 1820Y%=0                               
 1830=(USR(&FFDA)AND&FF)                
 1840:                                  
 1850DEFFNj(eb$)                        
 1860LOCALfb%                           
 1870fb%=OPENIN(eb$)                    
 1880IFfb%=0THEN=FALSE                  
 1890CLOSE#fb%                          
 1900=TRUE                              
 1910:                                  
 1920DEFPROCl                           
 1930LOCALfb%,gb%                       
 1940PROCia                             
 1950PRINTTAB(0,2);CHR$(128+l%);"Please 
enter your three-digit user"'CHR$(128+l%
);"ID:";CHR$(128+ja%);                  
 1960hb$=FNib(FNja(3,3))                
 1970PRINT''CHR$(128+l%);"Please enter y
our name as you wish"'CHR$(128+l%);"it t
o appear in message headings:"'';:gb%=VP
OS                                      
 1980PRINT''CHR$(128+l%);"(just press RE
TURN if you wish to"'CHR$(128+l%);"remai
n anonymous)"                           
 1990PRINTTAB(0,gb%);CHR$(128+ja%);     
 2000jb$=FNja(0,20)                     
 2010fb%=OPENOUT("!Mesg")               
 2020BPUT#fb%,0:n%=0                    
 2030PRINT#fb%,hb$                      
 2040PRINT#fb%,LEFT$(jb$+STRING$(20," ")
,20)                                    
 2050kb%=PTR#fb%                        
 2060PRINT#fb%,0                        
 2070CLOSE#fb%                          
 2080ENDPROC                            
 2090:                                  
 2100DEFPROCdb                          
 2110LOCALfb%                           
 2120fb%=OPENIN("!Mesg")                
 2130n%=BGET#fb%                        
 2140IFn%<>0THENCLOSE#fb%:ENDPROC       
 2150INPUT#fb%,hb$                      
 2160INPUT#fb%,jb$                      
 2170REPEAT                             
 2180IFRIGHT$(jb$,1)=" "THENjb$=LEFT$(jb
$,LEN(jb$)-1)                           
 2190UNTILRIGHT$(jb$,1)<>" "            
 2200kb%=PTR#fb%                        
 2210CLOSE#fb%                          
 2220ENDPROC                            
 2230:                                  
 2240DEFFNib(lb$)                       
 2250LOCALmb$,nb%,ob%                   
 2260mb$=""                             
 2270FORnb%=1TOLEN(lb$)                 
 2280ob%=ASC(MID$(lb$,nb%,1))           
 2290IFob%>=ASC"a"ANDob%<=ASC"z"THENob%=
ob%-32                                  
 2300mb$=mb$+CHR$(ob%)                  
 2310NEXT                               
 2320=mb$                               
 2330:                                  
 2340DEFFNja(pb%,qb%)                   
 2350LOCALnb%,rb%,lb$,e%                
 2360nb%=POS                            
 2370rb%=VPOS                           
 2380lb$=""                             
 2390REPEAT                             
 2400REPEAT                             
 2410*FX21                              
 2420e%=GET                             
 2430UNTILe%=13OR(e%>=32ANDe%<=127)     
 2440IFe%=127ANDLEN(lb$)>0THENVDU127:lb$
=LEFT$(lb$,LEN(lb$)-1)                  
 2450IFe%<>127ANDe%<>13ANDLEN(lb$)<qb%TH
ENVDUe%:lb$=lb$+CHR$(e%)                
 2460UNTIL(e%=13ANDLEN(lb$)>=pb%)       
 2470=lb$                               
 2480:                                  
 2490DEFFNp                             
 2500LOCALsb%,e%                        
 2510PROCia                             
 2520PRINTTAB(3,2);CHR$(128+ka%);"Start 
a new message";TAB(32,2);"N"            
 2530PRINTTAB(3,3);CHR$(128+ka%);"View/e
dit/print messages";TAB(32,3);"V"       
 2540PRINTTAB(3,4);CHR$(128+ka%);"Print 
all the messages";TAB(32,4);"P"         
 2550PRINTTAB(3,5);CHR$(128+ka%);"Tidy t
he messages";TAB(32,5);"T"              
 2560PRINTTAB(3,6);CHR$(128+ka%);"Re-ent
er your user ID/name";TAB(32,6);"R"     
 2570PRINTTAB(3,7);CHR$(128+ka%);"Undele
te deleted messages";TAB(32,7);"U"      
 2580PRINTTAB(3,8);CHR$(128+ka%);"Quit t
o BASIC";TAB(32,8);"Q"                  
 2590PRINTTAB(0,10);CHR$(128+na%);"Use t
he cursor keys to move the bar";CHR$(128
+na%);"and press RETURN to select, or us
e"'CHR$(128+na%);"the appropriate key sh
ortcut."                                
 2600sb%=1                              
 2610PRINTTAB(1,sb%+1);CHR$(128+la%);CHR
$(157);CHR$(128+ma%);TAB(35,sb%+1);CHR$1
56;                                     
 2620REPEAT                             
 2630REPEAT                             
 2640*FX21                              
 2650e%=GET                             
 2660UNTILINSTR("NVPTRUQnvtruq"+CHR$(138
)+CHR$(139)+CHR$(13),CHR$(e%))>0        
 2670PRINTTAB(1,sb%+1);CHR$(128+ka%);"  
"                                       
 2680IFe%=138THENIFsb%<7THENsb%=sb%+1   
 2690IFe%=139THENIFsb%>1THENsb%=sb%-1   
 2700IFe%>=ASC"a"ANDe%<=ASC"z"THENe%=e%-
32                                      
 2710IFe%=ASC"N"THENsb%=1               
 2720IFe%=ASC"V"THENsb%=2               
 2730IFe%=ASC"P"THENsb%=3               
 2740IFe%=ASC"T"THENsb%=4               
 2750IFe%=ASC"R"THENsb%=5               
 2760IFe%=ASC"U"THENsb%=6               
 2770IFe%=ASC"Q"THENsb%=7               
 2780PRINTTAB(1,sb%+1);CHR$(128+la%);CHR
$(157);CHR$(128+ma%);TAB(35,sb%+1);CHR$1
56;                                     
 2790UNTILe%=13                         
 2800=sb%                               
 2810:                                  
 2820DEFPROCq                           
 2830LOCALnb%,rb%,tb$,ub%,vb$           
 2840PROCia                             
 2850fb%=OPENIN("!Mesg")                
 2860PTR#fb%=kb%                        
 2870INPUT#fb%,ub%                      
 2880CLOSE#fb%                          
 2890IFub%=x%THENPRINTCHR$(128+oa%);"Sor
ry - you already have ";x%'CHR$(128+oa%)
;"messages!"''CHR$(128+oa%);"Press SPACE
 to return to the menu..";:PROCh("FX21")
:REPEATUNTILGET=32:ENDPROC              
 2900PROCwb                             
 2910PRINTTAB(0,2);CHR$(128+oa%);"Please
 enter the user ID of the"'CHR$(128+oa%)
;"recipient:";CHR$(128+ja%);            
 2920nb%=POS                            
 2930rb%=VPOS                           
 2940PRINT''CHR$(128+oa%);"(Use 999 for 
all users and CCC for"'CHR$(128+oa%);"pr
ogram/article comments)"                
 2950PRINTTAB(nb%,rb%);                 
 2960*FX229,0                           
 2970tb$=FNib(FNja(3,3))                
 2980*FX229,1                           
 2990IFtb$="999"THENvb$=" (all members)"
ELSEvb$=""                              
 3000IFtb$<>"CCC"THENPROCxb(CHR$(128+pa%
)+"To:     "+CHR$(128+qa%)+tb$+vb$,ba%):
PROCxb(CHR$(128+pa%)+"Subject:"+CHR$(128
+qa%),ba%+80)                           
 3010IFtb$="CCC"THENPROCxb(CHR$(128+pa%)
+"Subject:"+CHR$(128+qa%),ba%+40)       
 3020PROCxb(CHR$(128+pa%)+"From:   "+CHR
$(128+qa%)+hb$,ba%+(40*ABS(tb$<>"CCC")))
                                        
 3030IFjb$<>""THENPROCxb("("+jb$+")",ba%
+(40*ABS(tb$<>"CCC"))+14)               
 3040tb$=FNyb(tb$,10,2+(tb$="CCC"))     
 3050PROCzb(tb$)                        
 3060PROCda                             
 3070ENDPROC                            
 3080:                                  
 3090DEFPROCxb(ac$,bc%)                 
 3100LOCALcc%                           
 3110FORcc%=bc%TObc%+LEN(ac$)-1         
 3120?cc%=ASC(MID$(ac$,cc%-bc%+1,1))    
 3130NEXT                               
 3140ENDPROC                            
 3150:                                  
 3160DEFPROCwb                          
 3170!&70=ba%                           
 3180!&72=ba%+w%+1                      
 3190CALLwb                             
 3200ENDPROC                            
 3210:                                  
 3220DEFFNyb(tb$,dc%,ec%)               
 3230LOCALe%,fc%,gc%                    
 3240VDU26,12                           
 3250hc%=0                              
 3260ic%=FALSE                          
 3270jc%=0                              
 3280kc%=FALSE                          
 3290PROClc(hc%)                        
 3300PROCmc(ic%)                        
 3310PROCfa                             
 3320REPEAT                             
 3330PRINTTAB(dc%,ec%);                 
 3340REPEAT                             
 3350*FX21                              
 3360IFjc%=0THENe%=GETELSEe%=BGET#jc%:kc
%=INKEY(-113)                           
 3370IFkc%ANDjc%>0THENCLOSE#jc%:jc%=0:kc
%=FALSE                                 
 3390UNTIL(e%>=3ANDe%<=13)ORe%=20ORe%=27
ORe%>=32                                
 3400fc%=INKEY(-1)                      
 3410gc%=INKEY(-2)                      
 3420IFjc%<>0THENIFEOF#jc%THENCLOSE#jc%:
jc%=0                                   
 3430IFjc%<>0ANDe%=10THENe%=13          
 3440IFNOTic%ANDe%>=3ANDe%<=12THENdc%=FN
nc(dc%,ec%,hc%,e%,fc%,gc%)              
 3450IFe%=20THENjc%=FNoc(tb$):PROCmc(ic%
)                                       
 3460IFe%=12ANDNOTfc%ANDNOTgc%THENic%=NO
Tic%:PROCa:PROCmc(ic%):PROCfa           
 3470IFNOTic%ANDe%=10ANDNOTfc%ANDgc%THEN
PROCa:PROCpc(ec%,hc%):VDU26,12:PROClc(hc
%):PROCmc(ic%):PROCfa                   
 3480IFNOTic%ANDe%=11ANDNOTfc%ANDgc%THEN
PROCa:PROCqc(ec%,hc%):VDU26,12:PROClc(hc
%):PROCmc(ic%):PROCfa                   
 3490IFNOTic%ANDe%=12ANDfc%ANDNOTgc%THEN
PROCa:tb$=FNrc(tb$):VDU26,12:PROClc(hc%)
:PROCmc(ic%):PROCfa                     
 3500IFNOTic%AND(e%>=32ANDe%<=126)THENVD
Ue%:ba%?FNsc(dc%,ec%,hc%)=e%:dc%=dc%+1  
 3510IFic%ANDINSTR("QWASZX",CHR$(e%AND&D
F))<>0THENba%?FNsc(dc%,ec%,hc%)=FNtc(ba%
?FNsc(dc%,ec%,hc%),e%AND&DF)            
 3520IFe%=127ANDdc%>0THENdc%=dc%-1:PROCu
c(dc%,ec%,hc%):PROCa:VDU31,0,ec%:PROCvc(
hc%+ec%):PROCfa                         
 3530IFe%=13THENdc%=0:ec%=ec%+1         
 3540IFe%=136THENdc%=dc%-1:IFfc%THENdc%=
0                                       
 3550IFe%=137THENdc%=dc%+1:IFfc%THENdc%=
39                                      
 3560IFe%=138THENec%=ec%+1:IFfc%THENec%=
ec%-1:PROCa:hc%=FNwc(hc%+12):PROClc(hc%)
:PROCmc(ic%):PROCfa                     
 3570IFe%=139THENec%=ec%-1:IFfc%THENec%=
ec%+1:PROCa:hc%=FNwc(hc%-12):PROClc(hc%)
:PROCmc(ic%):PROCfa                     
 3580IFdc%<0THENdc%=39:ec%=ec%-1        
 3590IFec%<0THENec%=0:IFhc%>0THENPROCa:h
c%=hc%-1:VDU28,0,23,39,0,30,11,26,30:PRO
Cvc(hc%):PROCmc(ic%):PROCfa             
 3600IFdc%>39ANDFNxc(ba%?FNsc(39,ec%,hc%
))AND(e%<136ORe%>139)THENPROCyc         
 3610IFdc%>39THENdc%=0:ec%=ec%+1        
 3620IFec%>23THENec%=23:IFhc%<(((w%-40)D
IV40)-23)THENPROCa:hc%=hc%+1:VDU28,0,23,
39,0,31,0,23,10,26,31,0,23:PROCvc(hc%+23
):PROCmc(ic%):PROCfa                    
 3630IF(e%=13OR(e%=32ANDdc%=0))ANDFNzc(b
a%?FNsc(0,ec%-1,hc%))THENad%=ba%?FNsc(0,
ec%-1,hc%):PRINTTAB(dc%,ec%);CHR$(ad%);:
ba%?FNsc(0,ec%,hc%)=ad%:dc%=dc%+1       
 3640UNTILe%=27                         
 3650IFjc%>0THENCLOSE#jc%               
 3660PROCa                              
 3670=tb$                               
 3680:                                  
 3690DEFPROCyc                          
 3700LOCAL                              
 3710IFFNsc(0,ec%+1,hc%)>=(w%-40)THENEND
PROC                                    
 3720bd$=""                             
 3730dc%=dc%-1                          
 3740sc%=FNsc(dc%,ec%,hc%)              
 3750REPEAT                             
 3760bd$=CHR$(ba%?sc%)+bd$              
 3770dc%=dc%-1                          
 3780sc%=sc%-1                          
 3790UNTILNOTFNxc(ba%?sc%)              
 3800PRINTTAB(dc%+1,ec%);               
 3810FORcd%=sc%+1TOFNsc(39,ec%,hc%)     
 3820ba%?cd%=32:VDU32                   
 3830NEXT                               
 3840ec%=ec%+1                          
 3850dc%=0                              
 3860IFFNzc(ba%?FNsc(0,ec%-1,hc%))THENad
%=ba%?FNsc(0,ec%-1,hc%):PRINTTAB(dc%,ec%
);CHR$(ad%);:ba%?FNsc(0,ec%,hc%)=ad%:dc%
=dc%+1                                  
 3870PRINTTAB(dc%,ec%);bd$;             
 3880dd%=FNsc(dc%,ec%,hc%)              
 3890FORed%=0TOLEN(bd$)-1               
 3900ba%?(ed%+dd%)=ASC(MID$(bd$,ed%+1,1)
)                                       
 3910NEXT                               
 3920dc%=dc%+LEN(bd$)                   
 3930ENDPROC                            
 3940:                                  
 3950DEFFNzc(ad%)                       
 3960=(ad%>=129ANDad%<=135)             
 3970:                                  
 3980DEFFNxc(ad%)                       
 3990=(ad%>=33ANDad%<=126)              
 4000:                                  
 4010DEFPROCpc(ec%,hc%)                 
 4020LOCALfd%,gd%                       
 4030fd%=FNhd                           
 4040IFfd%>=(((w%-40)DIV40)*40)THENPROCd
:ENDPROC                                
 4050IFFNsc(0,ec%,hc%)>fd%THENENDPROC   
 4060!&70=ba%+FNsc(0,ec%,hc%)-40        
 4070!&72=ba%+(fd%DIV40)*40             
 4080CALLpc                             
 4090FORgd%=FNsc(0,ec%,hc%)TOFNsc(39,ec%
,hc%)                                   
 4100ba%?gd%=32                         
 4110NEXT                               
 4120ENDPROC                            
 4130:                                  
 4140DEFPROCqc(ec%,hc%)                 
 4150LOCALfd%,gd%                       
 4160fd%=FNhd                           
 4170IFFNsc(0,ec%,hc%)>fd%THENENDPROC   
 4180IFfd%>=FNsc(0,ec%,hc%)ANDfd%<=FNsc(
39,ec%,hc%)THENFORgd%=FNsc(0,ec%,hc%)TOF
Nsc(39,ec%,hc%):ba%?gd%=32:NEXT:ENDPROC 
 4190!&70=ba%+FNsc(0,ec%,hc%)           
 4200!&72=ba%+(fd%DIV40)*40             
 4210CALLqc                             
 4220FORgd%=(fd%DIV40)*40TO(fd%DIV40)*40
+40                                     
 4230ba%?gd%=32                         
 4240NEXT                               
 4250ENDPROC                            
 4260:                                  
 4270DEFPROCd                           
 4280SOUND1,-10,101,5                   
 4290ENDPROC                            
 4300:                                  
 4310DEFPROCuc(dc%,ec%,hc%)             
 4320!&70=ba%+FNsc(0,ec%,hc%)           
 4330?&72=dc%+1                         
 4340CALLuc                             
 4350ENDPROC                            
 4360:                                  
 4370DEFPROCid(dc%,ec%,hc%)             
 4380IFdc%=39THENba%?FNsc(39,ec%,hc%)=32
:ENDPROC                                
 4390!&70=ba%+FNsc(0,ec%,hc%)           
 4400?&72=dc%                           
 4410CALLid                             
 4420ENDPROC                            
 4430:                                  
 4440DEFFNwc(hc%)                       
 4450IFhc%<0THENhc%=0                   
 4460IFhc%>(((w%-40)DIV40)-23)THENhc%=((
(w%-40)DIV40)-23)                       
 4470=hc%                               
 4480:                                  
 4490DEFFNnc(dc%,ec%,hc%,e%,fc%,gc%)    
 4500LOCALad%                           
 4510IFe%>=3ANDe%<=9ANDNOTfc%ANDNOTgc%TH
ENVDU126+e%:ba%?FNsc(dc%,ec%,hc%)=126+e%
:dc%=dc%+1                              
 4520IFe%>=3ANDe%<=9ANDfc%ANDNOTgc%THENV
DU142+e%:ba%?FNsc(dc%,ec%,hc%)=142+e%:dc
%=dc%+1                                 
 4530IFNOTfc%ANDgc%ANDe%=12THENPROCa:PRO
Cjd:VDU26,12:PROClc(hc%):PROCmc(ic%):PRO
Cfa                                     
 4540IFe%>=10ANDe%<=11ANDNOTfc%ANDNOTgc%
THENVDU126+e%:ba%?FNsc(dc%,ec%,hc%)=126+
e%:dc%=dc%+1                            
 4550IFe%>=10ANDe%<=11ANDfc%ANDNOTgc%THE
NVDU167-e%:ba%?FNsc(dc%,ec%,hc%)=167-e%:
dc%=dc%+1                               
 4560IFe%>=3ANDe%<=4ANDNOTfc%ANDgc%THENV
DU150+e%:ba%?FNsc(dc%,ec%,hc%)=150+e%:dc
%=dc%+1                                 
 4570IFe%>=5ANDe%<=6ANDNOTfc%ANDgc%THENV
DU153+e%:ba%?FNsc(dc%,ec%,hc%)=153+e%:dc
%=dc%+1                                 
 4580IFe%>=7ANDe%<=8ANDNOTfc%ANDgc%THENV
DU148-e%:ba%?FNsc(dc%,ec%,hc%)=148-e%:dc
%=dc%+1                                 
 4590IFe%=9ANDNOTfc%ANDgc%THENPROCid(dc%
,ec%,hc%):PROCa:VDU31,0,ec%:PROCvc(hc%+e
c%):PROCfa                              
 4600=dc%                               
 4610:                                  
 4620DEFPROCmc(ic%)                     
 4630IFNOTic%THENPRINTTAB(0,24);CHR$(128
+ra%);"Press CTRL";CHR$(129);"f9";CHR$(1
28+ra%);"for help...        ";ELSEPRINTT
AB(0,24);CHR$(128+ra%);"Press";CHR$(129)
;"f9";CHR$(128+ra%);"to exit pixel editi
ng...";                                 
 4640ENDPROC                            
 4650:                                  
 4660DEFFNoc(tb$)                       
 4670LOCALkd$,fb%                       
 4680PRINTTAB(0,24);CHR$(128+ra%);"Load 
text file - are you sure?";CHR$(128+ja%)
;                                       
 4690IFNOTFNldTHEN=0                    
 4700PRINTTAB(0,24);SPC(35);TAB(0,24);CH
R$(128+ra%);"Filename:";CHR$(128+ja%);  
 4710kd$=FNja(0,20)                     
 4720IFkd$=""THEN=0                     
 4750ONERRORPROCa:PROCd:PROCzb(tb$):PROC
da:GOTO500                              
 4760fb%=OPENIN(kd$)                    
 4770IFfb%=0THENPROCd                   
 4780=fb%                               
 4790:                                  
 4800DEFPROClc(hc%)                     
 4810PRINTTAB(0,0);                     
 4820!&70=ba%+FNsc(0,0,hc%)             
 4830!&72=ba%+FNsc(0,0,hc%)+960         
 4840CALLlc                             
 4850ENDPROC                            
 4860:                                  
 4870DEFPROCvc(hc%)                     
 4880!&70=ba%+FNsc(0,0,hc%)             
 4890CALLvc                             
 4900ENDPROC                            
 4910:                                  
 4920DEFFNsc(dc%,ec%,hc%)               
 4930=dc%+(ec%+hc%)*40                  
 4940:                                  
 4950DEFFNtc(ad%,e%)                    
 4960IFad%>128THENad%=ad%-128           
 4970ad%=ad%-32                         
 4980z%(1)=(ad%AND1)=1                  
 4990z%(2)=(ad%AND2)=2                  
 5000z%(3)=(ad%AND4)=4                  
 5010z%(4)=(ad%AND8)=8                  
 5020z%(5)=(ad%AND16)=16                
 5030z%(6)=(ad%AND64)=64                
 5040IFe%=ASC"Q"THENz%(1)=NOTz%(1)      
 5050IFe%=ASC"W"THENz%(2)=NOTz%(2)      
 5060IFe%=ASC"A"THENz%(3)=NOTz%(3)      
 5070IFe%=ASC"S"THENz%(4)=NOTz%(4)      
 5080IFe%=ASC"Z"THENz%(5)=NOTz%(5)      
 5090IFe%=ASC"X"THENz%(6)=NOTz%(6)      
 5100ad%=160+ABS(z%(1))+ABS(z%(2))*2+ABS
(z%(3))*4+ABS(z%(4))*8+ABS(z%(5))*16+ABS
(z%(6))*64                              
 5110VDUad%,8                           
 5120=ad%                               
 5130:                                  
 5140DEFPROCzb(tb$)                     
 5150LOCALfb%,ub%,A%,X%,Y%              
 5160VDU26                              
 5170PRINTTAB(0,24);CHR$(128+ya%);"Pleas
e wait, saving message...        ";     
 5180fb%=OPENUP("!Mesg")                
 5190PTR#fb%=kb%                        
 5200INPUT#fb%,ub%                      
 5210PTR#fb%=kb%                        
 5220PRINT#fb%,ub%+1                    
 5230PTR#fb%=EXT#fb%                    
 5240PRINT#fb%,tb$                      
 5250BPUT#fb%,0                         
 5260aa%?0=fb%                          
 5270aa%!1=ba%                          
 5280aa%!5=FNhd+1                       
 5290A%=2                               
 5300X%=aa%MOD256                       
 5310Y%=aa%DIV256                       
 5320CALL&FFD1                          
 5330BPUT#fb%,152                       
 5340CLOSE#fb%                          
 5350ENDPROC                            
 5360:                                  
 5370DEFFNhd                            
 5380!&70=ba%+w%+1                      
 5390!&72=ba%                           
 5400CALLhd                             
 5410!&72=0                             
 5420=(!&70)-ba%                        
 5430:                                  
 5440DEFPROCr                           
 5450LOCALfb%,ub%,md%,nd%,od%,hc%,e%,oa%
,tb$,ld%,pd%                            
 5460fb%=OPENUP("!Mesg")                
 5470PTR#fb%=kb%                        
 5480INPUT#fb%,ub%                      
 5490IFub%=0THENCLOSE#fb%:ENDPROC       
 5500PROCia                             
 5510PRINTTAB(0,2);CHR$(128+ab%);"Please
 wait, loading message..."              
 5520md%=1                              
 5530pd%=TRUE                           
 5540REPEAT                             
 5550IFNOTpd%THENVDU26:PRINTTAB(0,24);CH
R$(128+za%);"Please wait, loading messag
e...       ";                           
 5560pd%=FALSE                          
 5570REPEAT                             
 5580nd%=PTR#fb%                        
 5590INPUT#fb%,tb$                      
 5600od%=BGET#fb%                       
 5610PROCqd(fb%)                        
 5620UNTILod%=0                         
 5630y%(md%)=nd%                        
 5640VDU26,12                           
 5650hc%=0                              
 5660PROClc(hc%)                        
 5670PROCrd(tb$,md%,ub%)                
 5680REPEAT                             
 5690REPEAT                             
 5700*FX21                              
 5710e%=GET                             
 5720IFe%>=ASC"a"ANDe%<=ASC"z"THENe%=e%-
32                                      
 5730UNTIL(e%>=136ANDe%<=139)ORe%=27ORe%
=ASC"E"ORe%=ASC"D"ORe%=ASC"P"ORe%=3     
 5740fc%=INKEY(-1)                      
 5750IFe%=3THENPROCsd:VDU26,12:PROClc(hc
%):PROCrd(tb$,md%,ub%)                  
 5760oa%=FALSE                          
 5770IFe%=136ANDmd%>1THENmd%=md%-1:PTR#f
b%=y%(md%):oa%=TRUE                     
 5780IFe%=137ANDmd%<ub%THENmd%=md%+1:oa%
=TRUE                                   
 5790IFe%=139ANDNOTfc%ANDhc%>0THENhc%=hc
%-1:VDU28,0,23,39,0,30,11,26,30:PROCvc(h
c%)                                     
 5800IFe%=139ANDfc%THENhc%=FNwc(hc%-12):
VDU26,12:PROClc(hc%):PROCrd(tb$,md%,ub%)
                                        
 5810IFe%=138ANDNOTfc%ANDhc%<(((w%-40)DI
V40)-23)THENhc%=hc%+1:VDU28,0,23,39,0,31
,0,23,10,26,31,0,23:PROCvc(hc%+23)      
 5820IFe%=138ANDfc%THENhc%=FNwc(hc%+12):
VDU26,12:PROClc(hc%):PROCrd(tb$,md%,ub%)
                                        
 5830IFe%=ASC"D"THENPRINTTAB(0,24);CHR$(
128+xa%);"Are you sure you want to delet
e this? ";:ld%=FNld:PROCrd(tb$,md%,ub%):
IFNOTld%THENe%=-1                       
 5840IFe%=ASC"E"THENPRINTTAB(0,24);CHR$(
128+xa%);"Are you sure you want to edit 
this?  ";:ld%=FNld:PROCrd(tb$,md%,ub%):I
FNOTld%THENe%=-1                        
 5850IFe%=ASC"P"THENPRINTTAB(0,24);CHR$(
128+xa%);"Are you sure you want to print
 this?";:ld%=FNld:PROCrd(tb$,md%,ub%):IF
NOTld%THENe%=-1                         
 5860UNTILe%=27ORoa%ORe%=ASC"E"ORe%=ASC"
D"ORe%=ASC"P"                           
 5870UNTILe%=27ORe%=ASC"E"ORe%=ASC"D"ORe
%=ASC"P"                                
 5880IFe%=ASC"D"THENPTR#fb%=y%(md%):PROC
td(fb%)                                 
 5890IFe%=ASC"E"THENPTR#fb%=y%(md%):PROC
td(fb%):CLOSE#fb%:tb$=FNyb(tb$,0,4):PROC
zb(tb$)                                 
 5900IFe%=ASC"P"THENPROCud              
 5910IFe%<>ASC"E"THENCLOSE#fb%          
 5920PROCda                             
 5930ENDPROC                            
 5940:                                  
 5950DEFFNld                            
 5960LOCALe$                            
 5970REPEAT                             
 5980e$=CHR$(GETAND&DF)                 
 5990UNTILe$="Y"ORe$="N"                
 6000=(e$="Y")                          
 6010:                                  
 6020DEFPROCqd(fb%)                     
 6030LOCALA%,X%,Y%                      
 6040aa%?0=fb%                          
 6050aa%!1=ba%                          
 6060aa%!5=w%+1                         
 6070A%=4                               
 6080X%=aa%MOD256                       
 6090Y%=aa%DIV256                       
 6100CALL&FFD1                          
 6110!&70=ba%-1                         
 6120!&72=ba%+w%+1                      
 6130CALLvd                             
 6140!&76=0                             
 6150PTR#fb%=PTR#fb%-((w%-aa%!5)-(!&74-b
a%))                                    
 6160ENDPROC                            
 6170:                                  
 6180DEFPROCrd(wd$,xd%,yd%)             
 6190LOCALzd$                           
 6200IFxd%>9ANDyd%>9THENzd$=""ELSEzd$=" 
"                                       
 6210PRINTTAB(0,24);CHR$(128+ra%);"Messa
ge ";xd%;" of ";yd%;",";zd$;"to ";wd$;" 
-";CHR$(129);"f0";CHR$(128+ra%);"for hel
p ";                                    
 6220ENDPROC                            
 6230:                                  
 6240DEFPROCtd(fb%)                     
 6250LOCALub%,ae$                       
 6260INPUT#fb%,ae$                      
 6270BPUT#fb%,255                       
 6280PTR#fb%=kb%                        
 6290INPUT#fb%,ub%                      
 6300PTR#fb%=kb%                        
 6310PRINT#fb%,ub%-1                    
 6320ENDPROC                            
 6330:                                  
 6340DEFPROCs                           
 6350LOCALfb%,ub%,wd$,od%               
 6360PROCia                             
 6370fb%=OPENIN("!Mesg")                
 6380PTR#fb%=kb%                        
 6390INPUT#fb%,ub%                      
 6400IFub%=0THENCLOSE#fb%:PRINTTAB(0,2);
CHR$(128+ua%);"There are no messages to 
print."''CHR$(128+ua%);"Press SPACE to r
eturn to the menu.":PROCh("FX21"):REPEAT
UNTILGET=32:ENDPROC                     
 6410PRINTTAB(0,2);CHR$(128+ua%);"Are yo
u sure you want to print the"'CHR$(128+u
a%);"messages?";CHR$(128+ja%);:IFNOTFNld
THENCLOSE#fb%:ENDPROC                   
 6420PRINT"Yes"                         
 6430REPEAT                             
 6440INPUT#fb%,wd$                      
 6450od%=BGET#fb%                       
 6460PROCqd(fb%)                        
 6470IFod%=0THENPROCud                  
 6480UNTILEOF#fb%                       
 6490CLOSE#fb%                          
 6500ENDPROC                            
 6510:                                  
 6520DEFPROCud                          
 6530LOCALsc%,be%,ce%                   
 6540*FX3,10                            
 6550sc%=0                              
 6560FORbe%=0TO(FNhdDIV40)              
 6570be$=""                             
 6580FORce%=0TO39                       
 6590de%=ba%?sc%                        
 6600sc%=sc%+1                          
 6610IFde%>=32ANDde%<=126THENVDUde%ELSEV
DU32                                    
 6620NEXT                               
 6630PRINT                              
 6640NEXT                               
 6650PRINT                              
 6660*FX3                               
 6670ENDPROC                            
 6680:                                  
 6690DEFPROCt                           
 6700LOCALee%,fe%,ge$,ub%,wd$,od%,de%,n%
                                        
 6710PROCia                             
 6720PRINTTAB(0,2);CHR$(128+va%);"Are yo
u sure you want to tidy the"'CHR$(128+va
%);"messages?";CHR$(128+ja%);:IFNOTFNldT
HENENDPROC                              
 6730PRINT"Yes"                         
 6740PRINT'CHR$(128+va%);"Please wait, t
idying messages..."                     
 6750VDU21                              
 6760IFFNj("!MesgB")THENOSCLI"DELETE !Me
sgB"                                    
 6770*RENAME !Mesg !MesgB               
 6780ee%=OPENIN("!MesgB")               
 6790fe%=OPENOUT("!Mesg")               
 6800n%=BGET#ee%                        
 6810BPUT#fe%,n%                        
 6820INPUT#ee%,ge$                      
 6830PRINT#fe%,ge$                      
 6840INPUT#ee%,ge$                      
 6850PRINT#fe%,ge$                      
 6860INPUT#ee%,ub%                      
 6870PRINT#fe%,ub%                      
 6880IFEOF#ee%THENVDU6:CLOSE#ee%:CLOSE#f
e%:PROCh("DELETE !MesgB"):ENDPROC       
 6890REPEAT                             
 6900INPUT#ee%,wd$                      
 6910od%=BGET#ee%                       
 6920IFod%=0THENPRINT#fe%,wd$:BPUT#fe%,o
d%:REPEAT:de%=BGET#ee%:BPUT#fe%,de%:UNTI
Lde%=152ELSEREPEATUNTILBGET#ee%=152     
 6930UNTILEOF#ee%                       
 6940CLOSE#ee%                          
 6950CLOSE#fe%                          
 6960*DELETE !MesgB                     
 6970VDU6                               
 6980ENDPROC                            
 6990:                                  
 7000DEFPROCsd                          
 7010PROCda                             
 7020PROCia                             
 7030PRINTTAB(0,2);CHR$(128+sa%);"Use th
e cursor up and down keys to"'CHR$(128+s
a%);"scroll through the displayed"'CHR$(
128+sa%);"message. Use SHIFT to scroll"'
CHR$(128+sa%);"quickly."                
 7040PRINT'CHR$(128+sa%);"Use the cursor
 left and right keys"'CHR$(128+sa%);"to 
move between messages."                 
 7050PRINT'CHR$(128+sa%);"Press D to del
ete the current"'CHR$(128+sa%);"message,
 E to edit it or P to print";CHR$(128+sa
%);"it."                                
 7060PRINT'CHR$(128+sa%);"Press ESCAPE t
o return to the menu."                  
 7070PRINTTAB(0,16);CHR$(128+ta%);"Press
 ESCAPE to return to"'CHR$(128+ta%);"vie
wing...";                               
 7080*FX21                              
 7090REPEATUNTILGET=27                  
 7100ENDPROC                            
 7110:                                  
 7120DEFPROCjd                          
 7130LOCALe%                            
 7140PROCda                             
 7150PROCia                             
 7160PRINTTAB(0,2);CHR$(128+sa%);"Use th
e cursor keys to move around"'CHR$(128+s
a%);"the message. Use SHIFT to move more
";CHR$(128+sa%);"quickly. Use the keyboa
rd to enter"'CHR$(128+sa%);"text and DEL
ETE to delete"'CHR$(128+sa%);"characters
."                                      
 7170PRINT'CHR$(128+sa%);"Use";CHR$(129)
;"f0-f6";CHR$(128+sa%);"to set the text 
colour"                                 
 7180PRINTCHR$(128+sa%);"Use SHIFT";CHR$
(129);"f0-f6";CHR$(128+sa%);"to set the 
graphic"'CHR$(128+sa%);"colour"         
 7190PRINTCHR$(128+sa%);"Use";CHR$(129);
"f7/f8";CHR$(128+sa%);"for flashing/stea
dy"                                     
 7200PRINTCHR$(128+sa%);"Use SHIFT";CHR$
(129);"f7/f8";CHR$(128+sa%);"for coloure
d/black"'CHR$(128+sa%);"background"     
 7210PRINTTAB(0,16);CHR$(128+ta%);"Press
 CTRL";CHR$(129);"f9";CHR$(128+ta%);"for
 more help or"'CHR$(128+ta%);"press ESCA
PE to continue editing..";              
 7220REPEAT                             
 7230*FX21                              
 7240e%=GET                             
 7250UNTIL(e%=12ANDINKEY(-2))ORe%=27    
 7260IFe%=27THENENDPROC                 
 7270PROCia                             
 7280PRINTTAB(0,2);CHR$(128+sa%);"Use";C
HR$(129);"f9";CHR$(128+sa%);"to design a
 graphic block"                         
 7290PRINTCHR$(128+sa%);"Use CTRL";CHR$(
129);"f0/f1";CHR$(128+sa%);"to set conti
guous/"'CHR$(128+sa%);"separated graphic
s"                                      
 7300PRINTCHR$(128+sa%);"Use CTRL";CHR$(
129);"f2/f3";CHR$(128+sa%);"to hold/rele
ase"'CHR$(128+sa%);"graphics"           
 7310PRINTCHR$(128+sa%);"Use CTRL";CHR$(
129);"f4/f5";CHR$(128+sa%);"for double/s
ingle"'CHR$(128+sa%);"height"           
 7320PRINTCHR$(128+sa%);"Use SHIFT";CHR$
(129);"f9";CHR$(128+sa%);"to change the"
'CHR$(128+sa%);"recipient of the message
"                                       
 7330PRINTCHR$(128+sa%);"Use CTRL";CHR$(
129);"f6";CHR$(128+sa%);"to insert a spa
ce"                                     
 7340PRINTCHR$(128+sa%);"Use CTRL";CHR$(
129);"f7/f8";CHR$(128+sa%);"to insert/de
lete a"'CHR$(128+sa%);"line"            
 7350PRINTTAB(0,16);CHR$(128+ta%);"Press
 CTRL";CHR$(129);"f9";CHR$(128+ta%);"for
 more help or"'CHR$(128+ta%);"press ESCA
PE to continue editing..";              
 7360REPEAT                             
 7370*FX21                              
 7380e%=GET                             
 7390UNTIL(e%=12ANDINKEY(-2))ORe%=27    
 7400IFe%=27THENENDPROC                 
 7410PROCia                             
 7420PRINTTAB(0,2);CHR$(128+sa%);"Use CT
RL-T to read in an ASCII text";CHR$(128+
sa%);"file"                             
 7430PRINT'CHR$(128+sa%);"Press ESCAPE t
o finish editing"                       
 7440PRINTTAB(0,17);CHR$(128+ta%);"Press
 ESCAPE to continue editing..";         
 7450*FX21                              
 7460REPEATUNTILGET=27                  
 7470ENDPROC                            
 7480:                                  
 7490DEFPROCea                          
 7500DIMad%308                          
 7510PROCh("LOAD SendMC "+STR$÷ad%)     
 7520wb=ad%                             
 7530lc=ad%+&20                         
 7540hd=ad%+&41                         
 7550vc=ad%+&63                         
 7560vd=ad%+&70                         
 7570uc=ad%+&AB                         
 7580id=ad%+&BE                         
 7590pc=ad%+&D0                         
 7600qc=ad%+&102                        
 7610ENDPROC                            
 7620:                                  
 7630DEFPROCu                           
 7640LOCALfb%,he$,ie$                   
 7650PROCia                             
 7660PRINTTAB(0,2);CHR$(128+l%);"Your us
er ID is currently entered"'CHR$(128+l%)
;"as ";hb$                              
 7670PRINT'CHR$(128+l%);"Please enter yo
ur three-digit user"'CHR$(128+l%);"ID:";
CHR$(128+ja%);                          
 7680*FX229,0                           
 7690he$=FNib(FNja(3,3))                
 7700*FX229,1                           
 7710PRINT''CHR$(128+l%);"Your name is c
urrently entered as"'CHR$(128+l%);jb$   
 7720PRINT'CHR$(128+l%);"Please enter yo
ur name:"'CHR$(128+ja%);                
 7730*FX229,0                           
 7740ie$=FNja(0,20)                     
 7750*FX229,1                           
 7760hb$=he$                            
 7770jb$=ie$                            
 7780fb%=OPENUP("!Mesg")                
 7790PTR#fb%=0                          
 7800BPUT#fb%,0                         
 7810PRINT#fb%,hb$                      
 7820PRINT#fb%,LEFT$(jb$+STRING$(20," ")
,20)                                    
 7830CLOSE#fb%                          
 7840ENDPROC                            
 7850:                                  
 7860DEFFNrc(tb$)                       
 7870LOCALnb%,rb%                       
 7880PROCda                             
 7890PROCia                             
 7900PRINTTAB(0,2);CHR$(128+wa%);"This m
essage is currently going"'CHR$(128+wa%)
;"to ";tb$                              
 7910PRINT'CHR$(128+wa%);"Please enter t
he user ID of the"'CHR$(128+wa%);"recipi
ent:";CHR$(128+ja%);                    
 7920nb%=POS                            
 7930rb%=VPOS                           
 7940PRINT''CHR$(128+wa%);"(Use 999 for 
all users and CCC for"'CHR$(128+wa%);"pr
ogram comments)"                        
 7950PRINTTAB(nb%,rb%);                 
 7960=FNib(FNja(3,3))                   
 7970:                                  
 7980DEFPROCv                           
 7990LOCALfb%,ub%,wd$,od%,qb%           
 8000PROCia                             
 8010PRINTTAB(0,2);CHR$(128+v%);"Are you
 sure you want to undelete?"            
 8020IFNOTFNldTHENENDPROC               
 8030PRINT'CHR$(128+v%);"Please wait, un
deleting messages..."                   
 8040qb%=FALSE                          
 8050fb%=OPENUP("!Mesg")                
 8060PTR#fb%=kb%                        
 8070INPUT#fb%,ub%                      
 8080IFEOF#fb%THENCLOSE#fb%:ENDPROC     
 8090REPEAT                             
 8100INPUT#fb%,wd$                      
 8110od%=BGET#fb%                       
 8120IFNOTqb%ANDod%=255THENPTR#fb%=PTR#f
b%-1:BPUT#fb%,0:ub%=ub%+1               
 8130REPEATUNTILBGET#fb%=152            
 8140IFub%=x%ANDNOTEOF#fb%THENqb%=TRUE  
 8150UNTILEOF#fb%                       
 8160PTR#fb%=kb%                        
 8170PRINT#fb%,ub%                      
 8180CLOSE#fb%                          
 8190IFqb%THENPRINT'CHR$(128+v%);"Warnin
g - not all of the messages"'CHR$(128+v%
);"have been recovered."''CHR$(128+v%);"
Press SPACE to return to the menu..";:PR
OCh("FX21"):REPEATUNTILGET=32           
 8200ENDPROC                            
 8210:                                  
 8220DEFFNcb(je$,ke%)                   
 8230LOCALe$                            
 8240REPEAT                             
 8250*FX21                              
 8260IFke%THENe$=CHR$(GETAND&DF)ELSEe$=G
ET$                                     
 8270UNTILINSTR(je$,e$)<>0              
 8280=e$