-
Notifications
You must be signed in to change notification settings - Fork 1
/
prg.msg bases.bas
224 lines (224 loc) · 16.8 KB
/
prg.msg bases.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
!--------------------------------------------------
!- Wednesday, May 17, 2017 12:20:56 AM
!- Import of :
!- c:\src\zelch128next\prg.msg bases.prg
!- Unknown Machine
!--------------------------------------------------
30000 SYS15625:REM ============= MESSAGE BASE MODULE V3.0 ========== 08/13/92 =
30010 ON(W1-100)GOTO30500,33000,34000,37000,38000,39000,40000,41000,42000,43000,44000,45000:GOTO940
30050 OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.mbases"+MB$(3):RETURN
30070 OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.mdata"+MB$(4):RETURN
30099 REM*>>>>>>>>>MISC ROUTINES<<<<<<<<*
30100 RECORD#2,Y:FORI=1TO6:SYS8222:NEXTI:O$=I$:SYS8222:C$=I$:FORI=8TO10:SYS8222:NEXTI
30150 E=0:IFI$=""ORI$="*"THEN30300:ELSEIFVAL(I$)THENIFINSTR(";"+I$+";",";"+MID$(STR$(ID),2)+";")THEN30300
30200 E=1:X=0:DO:X=X+1:Y=ASC(MID$(I$,X,1))-192:IFY>1ANDY<26THENIFMID$(U$(9),Y,1)="1"THENE=0
30250 LOOPUNTILX>=LEN(I$)ORE=0
30300 IFMID$(C$,ASC(U$(5))-192,1)<>"1"THENE=1:RETURN:ELSERETURN
30350 O$="{ct k}{black}No message base selected.":GOTO4
30400 MB$(1)="(none)":MB$(2)="?":MB$(4)=MB$(3):MB$(5)=MB$(3):MB$(7)="$":MB$(9)="":FORI=1TO13:MB(I)=0:NEXTI:RETURN
30499 REM*>>>>>>>>SELECT MBASE OC<<<<<<<*
30500 GOSUB990:IFSY(4)>0ANDSY(4)<27THENW0$=CHR$(SY(4)+192):ELSEIFSY$<>"*"THENW0$=SY$:ELSEO$=T$(57):GOSUB4:X=12:GOSUB16:IFI$=""THEN920:ELSEW0$=I$
30550 GOSUB31000:IFE>0THENO$=T$(58):GOSUB4:GOTO920:ELSEO$=O$(10)+":MB"+W0$:GOSUB7:GOTO940
30999 REM----SELECTABASE-----
31000 E=0:IFLEFT$(W0$,1)="/"ORW0$=""THENMB$(3)="":MB$(6)="MESSAGE BASES":GOSUB30400:W0$=MID$(W0$,2)
31050 IFW0$=""THEN31650:ELSEW9=D(1,0):W9$=MID$(STR$(D(1,1)),2):OPEN1,W9,15
31100 W0=0:DO:W0=W0+1:W5$=MID$(W0$,W0,1):IFW5$="/"THEN31600
31150 W5=ASC(W5$)-192:IFW5>0ANDW5<27THEN31200:ELSEW5=VAL(MID$(W0$,W0)):IFW5<1ORW5>26ORVAL(W5$)=0THEN31600:ELSEW0=W0+1:W5$=CHR$(W5+192):IFW5>9THENW0=W0+1
31200 GOSUB30050:RECORD#2,W5:FORI=1TO14:SYS8222:VT$(I)=I$:VT(I)=VAL(I$):NEXTI:W1$=LEFT$(VT$(6),1):VT$(6)=MID$(VT$(6),2)
31250 C$=VT$(7):I$=VT$(10):GOSUB30150:IFE>0THEN31600
31300 IFW1$="{sh @}"THENMB$(7)=W1$:EXIT:ELSECLOSE2:IFW1$<>"$"THEN31450
31350 OPEN2,W9,2,W9$+":sys.mbases"+MB$(3)+W5$:INPUT#1,E:IFE>0THEN31600
31400 MB$(3)=MB$(3)+W5$:MB$(6)=VT$(6):GOSUB30400:GOTO31600
31450 W6$=LEFT$(VT$(6),LEN(VT$(6))-1):OPEN2,W9,2,W9$+":sys.mbases"+W6$:INPUT#1,E:IFE>0THEN31600:ELSEW2$=RIGHT$(VT$(6),1):W2=ASC(W2$)-192
31500 IFW2<1ORW2>27THENE=1:GOTO31600:ELSERECORD#2,W2
31550 FORI=1TO14:SYS8222:VT$(I)=I$:VT(I)=VAL(I$):NEXTI:A$=LEFT$(VT$(6),1):VT$(6)=MID$(VT$(6),2):IFA$<>"{sh @}"ORVT$(6)="^"ORVAL(VT$(7))=0THENE=1:ELSEMB$(7)="@"
31600 CLOSE2:LOOPUNTILW0>=LEN(W0$)ORE>0ORMB$(7)<>"$":CLOSE2:CLOSE1
31650 IFE>0THENRETURN:ELSEIFMB$(7)="$"THEN31800
31700 MB(1)=W5:MB$(1)=VT$(6):MB$(2)=W5$:MB$(4)=MB$(3):MB$(5)=MB$(4)+W5$:O(24)=ASC(VT$(14))-192:IFMB$(7)="@"THENMB$(4)=W6$:MB$(5)=MB$(4)+W2$
31750 D(7,0)=VT(1):D(7,1)=VT(2):MB(2)=VT(3):MB(5)=0:MB(6)=0:MB(7)=ABS(INSTR("NY",VT$(11))-1):O(22)=VT(12):O(23)=VT(13):PL(0)=VT(9)
31800 IFMB$(5)>""THENO$=T$(56):GOSUB4:F$="sys.sig "+MB$(5):U=VT(1):D=VT(2):GOSUB26
31850 IFMB$(7)="$"THEN30350:ELSED(7,0)=VT(1):D(7,1)=VT(2):MB(2)=VT(3):MB(5)=0:MB(6)=0:MB(7)=ABS(INSTR("NY",VT$(11))-1):O(22)=VT(12):O(23)=VT(13)
31900 IFINSTR(";"+VT$(8)+";",";"+MID$(STR$(ID),2)+";")ORMID$(U$(8),4,1)="1"THENMB$(9)="{sh @}":ELSEMB$(9)=""
31950 FORI=0TO50:MN$(I)="":MR(I)=0:NEXTI:X=0:Y=0:GOSUB30070:W7=(ASC(RIGHT$(MB$(5),1))-193)*51:RECORD#2,W7+51:INPUT#2,MB(3),MB(4):IFMB(3)=0THENCLOSE2:GOTO32100
32000 FORI=1TOMB(3):RECORD#2,W7+I:INPUT#2,MN$(I),MR(I):Y=Y+MR(I):IFLEFT$(MN$(I),1)>"8"THENW3$="19"+MN$(I):ELSEW3$="20"+MN$(I)
32010 IFW3$>U$(6)THENX=X+1
32050 NEXTI:CLOSE2:IFX>0THENO$=T$(96):GOSUB4
32100 O$=T$(97):MB(5)=0:I$=W1$:X=INSTR(O$,"ies"):IFY=1ANDX>0THENMID$(O$,X,3)="y{ct x*2}":GOSUB4:RETURN:ELSEGOSUB4:RETURN
32999 REM*>>>>>>>>LISTABASE OC<<<<<<<<<<*
33000 W7$="":IFSY(4)>0THENW7$="{sh @}"
33050 W1=0:GOSUB760:IFI>0ANDI<27THENW1=I-1:IFVAL(SY$)THENW7$="{sh @}"
33100 W9=26:GOSUB760:IFI>W1ANDI<27THENW9=I
33150 GOSUB30050:O$=R$:GOSUB9:DO:W1=W1+1:Y=W1:GOSUB30100:W1$=O$:IFLEFT$(W1$,1)="@"THENFORI=11TO15:SYS8222:NEXTI:W1$=I$
33200 O$="{ct c}":A$=CHR$(W1+192):IFW7$="{sh @}"THENA$=RIGHT$(STR$(W1),2)
33250 IFETHEN33400:ELSEO$="{black}"+A$+") ":IFMID$(U$(10),W1,1)<>"1"THENO$=O$+"x":ELSEO$=O$+" "
33300 IFW1=MB(1)THENO$=O$+"<"+MID$(W1$,2)+">":ELSEO$=O$+" "+MID$(W1$,2)+" "
33350 IFLEFT$(W1$,1)="$"THENO$=O$+"{white}[DIR]"
33400 GOSUB4:GOSUB8:LOOPUNTILW1=W9ORA$=" ":CLOSE2:IFA$=" "THEN920:ELSE940
33999 REM*>>>>>>>>>READAMSG OC<<<<<<<<<<*
34000 MB(12)=1:GOSUB760:IFMB$(7)="$"THENGOSUB30350:GOTO920:ELSEIFMB(3)=0THEN920:ELSEIFIANDI<=MB(3)THENMB(5)=I:GOTO34200
34050 IFSY$<>"+"THEN34100:ELSEMB(5)=MB(5)+1:IFMB(5)>MB(3)THENO$=T$(59):GOSUB4:MB(5)=MB(3):GOTO920:ELSE34200
34100 IFSY$<>"-"THEN34150:ELSEMB(5)=MB(5)-1:IFMB(5)<1THENO$=T$(59):GOSUB4:MB(5)=1:GOTO920:ELSE34200
34150 IFSY$<>"*"THEN920:ELSEO$=T$(60):GOSUB4:GOSUB10:IFI<1ORI>MB(3)THEN920:ELSEMB(5)=I
34200 GOSUB35000:GOTO940
34299 REM*>>>>>>>>READAMSG MISC<<<<<<<<<*
34300 O$=VT$(1):I$=VT$(2):IFLEFT$(VT$(1),1)<>"{sh @}"ORMB$(9)="{sh @}"THENRETURN:ELSEO$="*ANONYMOUS*":I$=" 0":RETURN
34320 W1$="":IFO(24)=14ORMID$(O$(25),ASC(U$(5))-192,1)<>"1"THENRETURN:ELSEIFO(24)=1THENW1$="{sh @}":RETURN
34330 O$="{ct k}{black}"+A$+" anonymously (y/n)? {ct c}":GOSUB4:C$="YN"+R$:GOSUB28:IFI=1THENW1$="{sh @}":RETURN:ELSERETURN
34350 C$="NJAMQ":SYS8210:IFPEEK(215)=1THEN27:ELSERETURN
34400 GOSUB30070:RECORD#2,((Y-1)*51)+X:PRINT#2,W1$+R$+STR$(W1):CLOSE2:RETURN
34450 GOSUB30070:RECORD#2,((Y-1)*51)+51:PRINT#2,STR$(W1)+R$+STR$(W2):CLOSE2:RETURN
34499 REM------JMP CMD-------
34500 O$=T$(99):GOSUB4:GOSUB10:Y=I-1:IFI$<>R$ANDVAL(I$)=0THEN35050:ELSEIFI<1ORI>SY(7)THEN34520
34510 MB(9)=0:I=0:O$=T$(100):GOSUB4:MB(6)=Y:GOTO35450
34520 I=0:MB(11)=0:Y=MR(MB(5)):IFMB(6)THENMB(6)=MB(6)-1:GOTO35450:ELSE35050
34549 REM-----MAIL CMD-------
34550 CLOSE2:GOSUB34300:A=VT(1):IFSY$(4)<>""THEN34570
34560 IFA=ID ORUI$(A)="^"THEN34520:ELSEO$="{ct k}{black}Send mail to "+O$+" (y/n)? {ct c}":GOSUB4:C$="YN":GOSUB28:IFI=1THENGOSUB8120:GOTO34520:ELSE34520
34570 O$="{ct k}{black}Network mail to "+O$+" (y/n)? {ct c}":GOSUB4:C$="NY":GOSUB28:IFI=1THEN34520
34580 U=D(5,0):D=D(5,1):GOSUB400:X=0:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.network":IFLEFT$(VT$(1),1)="{sh @}"THENVT$(1)=MID$(VT$(1),2)
34590 DO:X=X+1:RECORD#2,X:FORI=1TO3:SYS8222:NEXT:LOOPUNTILMID$(I$,2)=SY$(4)ORX>26:IFX>26THENO$=T$(98):GOSUB4:CLOSE2:GOTO34520:ELSESYS8222:F$="net."+MID$(I$,2)
34595 RECORD#2,27:FORI=1TO3:SYS8222:NEXTI:CLOSE2:O$(5)=SY$(4)+R$+MID$(I$,2)+R$+"1"+VT$(1)+R$+U$(1)+R$+STR$(ID)+R$+O$(3):GOSUB8125:GOTO34520
34599 REM------EDIT MSG------
34600 CLOSE2:F$="msg."+MB$(5)+STR$(MB(5)):U=D(7,0):D=D(7,1):O(12)=2:O(10)=MB(6):O(11)=0:GOSUB8330:IFMB(6)=0ANDMR(MB(5))=0THENO(12)=1
34610 E=0:IFO(11)THENO(11)=0:ELSEGOSUB1000
34620 IFMB(6)=0THEN35050:ELSE34520
34649 REM-----KILL MSG-------
34650 U=D(7,0):D=D(7,1):F$="msg."+MB$(5)+STR$(MB(5)):IFMB(6)>0THEN34670:ELSEO$=T$(64):GOSUB4:C$="YN":GOSUB28:IFI=2THEN35050
34660 O$=T$(103):GOSUB4:OPEN1,U,15,"s"+MID$(STR$(D),2)+":"+F$:CLOSE1:MN$(MB(5))="0":MR(MB(5))=0:W1$="0":W1=0:Y=ASC(RIGHT$(MB$(5),1))-192:X=MB(5):GOTO34400
34670 O$=T$(102):GOSUB4:C$="YN":GOSUB28:IFI=2THEN35450:ELSEO$=T$(103):GOSUB4:CLOSE2:X=0
34680 OPEN1,U,15,"s"+MID$(STR$(D),2)+":sys.work":OPEN2,U,2,MID$(STR$(D),2)+":"+F$+",s,r":OPEN3,U,3,MID$(STR$(D),2)+":sys.work,s,w":INPUT#1,E:IFE>0THEN34748
34690 IFX=MB(6)THENSYS8213:IFPEEK(253)THEN34720
34700 IFX>0THENPRINT#3,CHR$(1)
34710 GOSUB31:X=X+1:IFPEEK(253)=0THEN34690
34720 CLOSE2:CLOSE3:INPUT#1,E:IFE>0THEN34748
34730 PRINT#1,"s"+MID$(STR$(D),2)+":"+F$:PRINT#1,"r"+MID$(STR$(D),2)+":"+F$+"=sys.work":CLOSE1
34740 Y=ASC(RIGHT$(MB$(5),1))-192:X=MB(5):W1=MR(X)-1:MR(X)=W1:W1$=MN$(X):SY(7)=W1:MB(6)=MB(6)-1:GOSUB34400:GOTO35450
34748 O$="Disk error, please wait...{ct c}":GOSUB4:CLOSE2:CLOSE3:PRINT#1,"s"+MID$(STR$(D),2)+":sys.work":PRINT#1,"v"+MID$(STR$(D),2):CLOSE1:GOTO35450
34749 REM------GRAB TEXT-----
34750 CLOSE2:CLOSE1:IFW9>49THENO$="{ct k}{black}The quote buffer is full!!{pound}w2{pound}":GOSUB4:GOTO34520
34760 F$="msg."+MB$(5)+STR$(MB(5)):O(12)=2:O(10)=MB(6):U=D(7,0):D=D(7,1):GOSUB8330:IFO(11)THEN34520:ELSEO$="{ct k}{black}":GOSUB4:GOTO34800
34770 IFW9>0THENO$="{ct k}{black}"+MID$(STR$(W9),2)+" quoted lines.{ct c}":GOSUB4
34780 O$="{ct k}{black}L)ist, G)rab, D)one, R)eview: {white}{ct c}":GOSUB4:C$="LGRD":GOSUB28:O$=R$:GOSUB9:ONIGOTO34800,34900,34850
34790 O$="{black}Quoted text added to reply.{pound}w2{pound}":GOSUB4:GOTO34520
34800 X=0:DO:X=X+1:GOSUB1130:O$=TT$(X):GOSUB4:GOSUB8:IFA$="{pound}"THENDO:GOSUB8:LOOPUNTILA$<>"{home}"ANDA$<>""
34810 LOOPUNTILA$=" "ORX>=L:GOTO34770
34850 IFW9>0THENO$="{black}Text quoted thus far:{white}{ct k}":GOSUB4:ELSE34770
34860 X=0:DO:X=X+1:O$=GB$(X):GOSUB4:GOSUB8:IFA$="{pound}"THENDO:GOSUB8:LOOPUNTILA$<>"{home}"ANDA$<>""
34870 LOOPUNTILA$=" "ORX>=W9:GOTO34770
34900 O$="{black}Quote from line: {white}{ct c}":GOSUB4:GOSUB10:IFI<1ORI>LTHEN34770:ELSEA=I
34910 O$="{black} Quote to line: {white}{ct c}":GOSUB4:GOSUB10:IFI<A ORI>LTHEN34770
34920 X=(A-I)+1:IFW9+X>49THENO$="{ct k}{black}Only"+STR$(50-W9)+" quote lines remaining.":GOSUB4:GOTO34770
34930 FORX=ATOI:W9=W9+1:IFLEFT$(TT$(X),1)=">"THENGB$(W9)=TT$(X):ELSEGB$(W9)=">"+TT$(X)
34940 TT$(X)="<already quoted>":NEXTX:GOTO34770
34999 REM*>>>>>>>READAMSG ROUTINE<<<<<<<*
35000 SY(7)=MR(MB(5)):W9=0:IFVAL(MN$(MB(5)))=0THENO$=T$(61):GOSUB4:RETURN
35050 MB(6)=0:MB(9)=VAL(MID$(U$(8),8,1)):O$="{ct k}{clear}{yellow}Message #"+MID$(STR$(MB(5)),2):GOSUB4
35100 CLOSE2:OPEN2,D(7,0),2,MID$(STR$(D(7,1)),2)+":msg."+MB$(5)+STR$(MB(5))+",s,r"
35150 FORI=1TO5:SYS8222:VT$(I)=I$:NEXTI:VT(1)=VAL(VT$(2)):VT$(6)=VT$(4):SY$(4)=MID$(I$,INSTR(I$,"{f4}")+1):GOSUB34300
35200 O$="{yellow}Posted by: {white}"+O$+"{yellow} (ID#{white}"+I$+"{yellow}){ct k}Date/Time: {white}"+VT$(3)+"{ct k}{yellow} Subject: {white}"+VT$(4):SY$=VT$(3):IFVT$(5)<>"{white}{f4}"THENO$=O$+"{ct k}{yellow} Source: {white}"+MID$(VT$(5),2)
35250 O$=O$+"{ct k}{white}":GOSUB4:GOSUB34350:CLOSE2:A$="Continue":IFSY(7)=0THEN36000
35300 MB(6)=0:MB(11)=0:IFMB(9)=1THEN35450
35350 O$="{ct k}{black}{ct n}"+STR$(SY(7))+" Replies":IFSY(7)=1THENMID$(O$,LEN(O$)-2,3)="y "
35400 GOSUB4:A$="Replies":GOTO36000
35450 A$="{ct k}{clear}":IFMB(9)=1THENA$="{ct k}":IFMB(12)=0ANDMB(6)<SY(7)THENMB(11)=1:O$=T$(98):GOSUB4
35500 IFMB(6)>0ANDI=6THEN35650
35550 CLOSE2:OPEN2,D(7,0),2,MID$(STR$(D(7,1)),2)+":msg."+MB$(5)+STR$(MB(5))+",s,r":SYS8213
35600 IFMB(6)>0THENFORI=1TOMB(6):SYS8213:NEXTI
35650 IFMB(6)>=SY(7)THEN36400
35700 SYS8222:IFLEFT$(I$,1)>"8"THENI$="19"+I$:ELSEI$="20"+I$
35710 IFI$<=U$(6)ANDMB(11)THENSYS8213:MB(6)=MB(6)+1:GOTO35650
35750 FORI=1TO3:SYS8222:VT$(I)=I$:NEXTI:SYS8222:VT$(5)=I$:VT(1)=VAL(VT$(2)):SY$(4)=MID$(I$,INSTR(I$,"{f4}")+1)
35800 GOSUB34300:O$=A$+"{yellow}Message #"+MID$(STR$(MB(5)),2)+", Reply"+STR$(MB(6)+1)+"/"+MID$(STR$(SY(7)),2):GOSUB4
35850 GOSUB34300:O$="{yellow} Sent by:{white} "+O$+"{yellow} (ID#{white}"+I$+"{yellow}){ct k}Date/Time: {white}"+VT$(3):IFVT$(5)<>"{white}{f4}"THENO$=O$+"{ct k}{yellow} Source: {white}"+MID$(VT$(5),2)
35900 O$=O$+"{ct k}":GOSUB4:GOSUB34350
35950 O$="{black}":GOSUB4:IFPEEK(2859)THENI=INSTR(C$,CHR$(PEEK(2859))):GOTO36250
35970 A$="Continue":MB(11)=0:Y=MB(6):MB(6)=MB(6)+1:IFMB(9)=1ANDMB(6)<SY(7)THENA$="{ct k}":GOTO35650:ELSE36000
35999 REM------PROMPT--------
36000 C$="":O$=CHR$(14)+"{black}{reverse off}J)ump, G)rab, A)gain, M)ail,":IFMB$(9)="{sh @}"ORVT(1)=IDTHENO$=O$+" K)ill,{f7}E)dit, ":C$="KE"
36050 IFC$=""THENO$=O$+"{f7}"
36100 IFSY(7)ANDMB(12)ANDMB(6)=0THENO$=O$+"N)ew, "
36150 O$=O$+"Q)uit, (RETURN="+A$+"): {ct c}":C$="NJAMQ"+R$+"G"+C$
36200 GOSUB4:GOSUB28
36250 IFI=6ANDSY(7)=0THEN36400
36300 IFMB(6)=0ANDSY(7)>0THENIF(I=1)OR(MB(12)=0ANDI=6)THENO$=T$(98):GOSUB4:MB(11)=1:GOTO35450
36350 ONIGOTO35450,34500,34520,34550,36400,35450,34750,34650,34600:CLOSE2:RETURN
36399 REM------REPLY---------
36400 CLOSE2:O$="{ct k}{black}R)eply,":IFMB(12)=0THENO$=O$+" Q)uit,"
36450 O$=O$+" or (RETURN): {white}{ct c}":GOSUB4:C$="QR"+R$:GOSUB28
36500 IFI=1THENMB(12)=1
36550 IFI<>2THENRETURN
36600 O$=T$(101):GOSUB4:A$="Reply":GOSUB34320
36650 GOSUB400:O$(5)=O$(2)+R$+W1$+U$(1)+R$+STR$(ID)+R$+O$(3):SY$(4)="msg."+MB$(5)+STR$(MB(5)):F$="":IFMB(7)=0THENF$=SY$(4)
36700 IFW9>0THENL=W9+1:FORI=1TOW9:TT$(I)=GB$(I):GB$(I)="":NEXTI:O(9)=1:W9=0
36750 U=D(7,0):D=D(7,1):O(12)=0:GOSUB1000:IFO(11)=1ORL=1THENRETURN
36800 IFMB(7)=0THEN36950:ELSEA$=MID$(STR$(D(5,1)),2)
36850 OPEN1,D(5,0),15:OPEN2,D(5,0),2,A$+":net.msg bases,s,w":INPUT#1,E:IFETHENCLOSE2:OPEN2,D(5,0),2,A$+":net.msg bases,s,a":PRINT#2,"{ct a}"
36900 PRINT#2,MB$(2)+R$+"1"+R$+SY$+R$+O$(5)+R$+"{white}{f4}":FORI=1TOL-1:PRINT#2,TT$(I):NEXTI:CLOSE2:CLOSE1:F$=SY$(4):GOSUB1210
36950 X=MB(5):Y=ASC(RIGHT$(MB$(5),1))-192:MN$(X)=O$(2):MR(X)=MR(X)+1:W1$=MN$(X):W1=MR(X):U(2)=U(2)+O(23):GOSUB34400:U(4)=U(4)+1:RETURN
36999 REM*>>>>>>>>READ NEW MSGS<<<<<<<<<*
37000 IFMB$(7)="$"THENGOSUB30350:GOTO920
37050 MB(12)=0:IFMB(3)=0THEN940:ELSEMB(13)=1:GOSUB37500:GOTO940
37500 IFLEFT$(MN$(MB(13)),1)>"8"THENW3$="19"+MN$(MB(13)):ELSEW3$="20"+MN$(MB(13))
37510 IFW3$>U$(6)THENMB(5)=MB(13):GOSUB35000
37550 MB(13)=MB(13)+1:IFMB(13)>MB(3)ORMB(12)=1THENMB(13)=MB(3):RETURN
37600 GOTO37500
37999 REM*>>>>>>>GLOBAL NEW MSGS<<<<<<<<*
38000 IFMB$(7)="$"THENGOSUB30350:GOTO920
38100 MB(8)=26:GOSUB760:IFI>MB(1)ANDI<27THENMB(8)=I
38200 MB(10)=MB(1):MB(12)=0:MB(13)=1:GOSUB37500:GOTO38600
38300 IFMB$(3)=""ANDMID$(U$(10),MB(10),1)<>"1"THEN38600
38400 W0$=CHR$(MB(10)+192):GOSUB31000:IFE=0ANDMB$(7)<>"$"THENMB(13)=1:GOSUB37500
38600 MB(10)=MB(10)+1:IFMB(10)>MB(8)THEN940
38700 IFMB(12)=1THEN920
38800 GOTO38300
38999 REM*>>>>>>>>POST A MESSAGE<<<<<<<<*
39000 IFMB$(7)="$"THENGOSUB30350:GOTO920:ELSEIFPL(0)=0THEN39150
39050 W9=0:W1=0:W2=0:DO:W9=W9+1:IFPL$(W9)=MB$(5)THENW2=W9:IFPL(W9)>=PL(0)THENW1=W9
39100 LOOPUNTILW9>25ORPL$(W9)=""ORW2>0:IF(W9>25ANDPL$(W9)<>"")ORW1>0THENO$=T$(87):GOSUB4:GOTO920
39150 O$=T$(62):GOSUB4:X=20:GOSUB15:W3$=I$:IFI$=""THEN920
39200 IFPL(0)>0THENPL$(W9)=MB$(5):PL(W9)=PL(W9)+1:
39250 D2=MB(4):IFMB(3)=0THEN39350:ELSEFORI=1TOMB(3):IFVAL(MN$(I))=0THEND2=I
39300 NEXTI
39350 U=D(7,0):D=D(7,1):A$="Post":GOSUB34320:GOSUB400:SY$(4)="msg."+MB$(5)+STR$(D2):F$="":IFMB(7)=0THENF$=SY$(4)
39400 O$(5)=W1$+U$(1)+R$+STR$(ID)+R$+O$(3)+R$+W3$:O(12)=1:GOSUB1000:IFO(11)=1ORL=1THEN920
39450 IFMB(7)=0THEN39600:ELSEU0=D(5,0):D0=D(5,1):OPEN1,U0,15
39500 OPEN2,U0,2,MID$(STR$(D0),2)+":net.msg bases,s,w":INPUT#1,E:IFE>0THENCLOSE1:OPEN2,U0,2,MID$(STR$(D0),2)+":net.msg bases,s,a":PRINT#1,"{ct a}"
39550 PRINT#2,MB$(2)+R$+"0"+R$+O$(3)+R$+O$(5)+R$+"{white}{f4}":FORI=1TOL-1:PRINT#2,TT$(I):NEXTI:CLOSE2:CLOSE1:F$=SY$(4):GOSUB1210
39600 IFD2<>MB(4)THENX=D2:GOTO39750
39650 X=MB(4):MB(4)=MB(4)+1:IFMB(4)>MB(2)THENMB(4)=1:MB(3)=MB(2)
39700 MB(3)=MB(3)+1:IFMB(3)>MB(2)THENMB(3)=MB(2)
39750 MR(X)=0:MN$(X)=O$(2):Y=ASC(RIGHT$(MB$(5),1))-192:W1$=MN$(X):W1=MR(X):GOSUB34400:W1=MB(3):W2=MB(4):GOSUB34450:U(4)=U(4)+1:U(2)=U(2)+O(22):GOTO940
39999 REM*>>>>>>>>>SCAN MESSAGES<<<<<<<<*
40000 IFMB$(7)="$"THENGOSUB30350:GOTO920
40050 GOSUB760:IFMB(3)=0THEN940
40100 IFIANDI<=MB(3)THENMB(5)=I:GOTO40200
40150 O$=T$(63):GOSUB4:GOSUB10:IFI=0ORI>MB(3)THEN940:ELSEMB(5)=I
40200 MB(12)=0:GOSUB40400:DO:GOSUB40500:MB(5)=MB(5)+1:LOOPUNTILMB(5)>MB(3)ORMB(12)=1:GOTO940
40400 O$="{white}{ct k}## Replies Posted by {f7}Date Time Subject":GOSUB4:RETURN
40500 IFVAL(MN$(MB(5)))=0THENRETURN
40550 OPEN2,D(7,0),2,MID$(STR$(D(7,1)),2)+":msg."+MB$(5)+STR$(MB(5))+",s,r":FORI=1TO4:SYS8222:VT$(I)=I$:NEXTI:CLOSE2:GOSUB34300:A=MB(5):A$=STR$(MB(5))
40600 O$="{black}"+RIGHT$(A$,2)+" "+RIGHT$(STR$(MR(A)),2)+" "+O$+" ("+MID$(I$,2)+")":O$=LEFT$(O$+SP$,39)+"{f7}"+VT$(3)+" "+VT$(4):GOSUB4
40650 GOSUB8:IFA$=" "THENMB(12)=1:RETURN:ELSERETURN
40999 REM*>>>>>>>>CHECK SUBOP<<<<<<<<<<<*
41000 IFMB$(9)="{sh @}"THEN940:ELSE920
41999 REM*>>>>>>>>>>EDIT INTRO<<<<<<<<<<*
42000 IFMB$(3)=""THEN920
42050 F$="sys.sig "+MB$(5):O(12)=1:O(10)=0:U=D(7,0):D=D(7,1):GOSUB8330:O(8)=50:GOSUB1010:GOTO940
42999 REM*>>>>>>>>>>JOIN/DROP<<<<<<<<<<<*
43000 IFMB$(7)="$"ORMB$(3)<>""THENGOSUB30350:GOTO920
43050 MID$(U$(10),MB(1),1)=RIGHT$(STR$(ABS(VAL(MID$(U$(10),MB(1),1))-1)),1)
43100 O$="{ct k}"+MB$(1)+" has been "+MID$("droppedjoined ",VAL(MID$(U$(10),MB(1),1))*7+1,7):GOSUB4:GOTO940
43999 REM*>>>>>>SCAN NEW MESSAGES<<<<<<<*
44000 IFMB$(7)="$"THENGOSUB30350:GOTO920
44050 GOSUB760:IFMB(3)=0THEN940
44100 IFIANDI<=MB(3)THENMB(13)=I:GOTO40200
44150 O$=T$(63):GOSUB4:GOSUB10:IFI=0ORI>MB(3)THEN940:ELSEMB(13)=I
44200 MB(12)=0:GOSUB40400
44250 IFLEFT$(MN$(MB(13)),1)>"8"THENW3$="19"+MN$(MB(13)):ELSEW3$="20"+MN$(MB(13))
44260 IFW3$>U$(6)THENMB(5)=MB(13):GOSUB40500
44300 MB(13)=MB(13)+1:IFMB(13)>MB(3)ORMB(12)=1THENMB(13)=MB(3):GOTO940
44350 GOTO44250
44999 REM*>>>>>TOGGLE MSG READ MODE<<<<<*
45000 MID$(U$(8),8,1)=RIGHT$(STR$(ABS(VAL(MID$(U$(8),8,1))-1)),1):A$="Non-":IFMID$(U$(8),8,1)="1"THENA$=""
45050 O$="{ct k}{black}You're now in "+A$+"continuous read mode":GOSUB4:GOTO940
55555 A=PEEK(186):SCRATCH"prg.msg bases",U(A):DSAVE"prg.msg bases",U(A):STOP