; main.seg public fromsys public term1 public termin2 public return public off public ae.run on nocar goto term1 if un<1 goto main ready "e:mail":r1=msg(un) if r1=0 print "You have no E-mail.":goto j0 if flag(32) print p$"E"n$;:else print "%>"; print " You have "r1" piece";:if r1>1 print "s"; print " of mail." j0 ready "e:gmail":r2=msg(un) if r2=0 print "You have no system mail.":goto no.sys if flag(32) print p$"E"n$;:else print "%>"; print " You have "r2" piece";:if r2>1 print "s"; print " of system mail." no.sys if flag(3)=0 goto chk.pae open #1,"h:nu.data":input #1,x,a:close open #1,"f:u."+str$(un):position #1,5,13:input #1,gh:close if flag(31)=0 goto yesvote open #1,"b:bank":position #1,6,un:input #1,z z=z-3000:if z<0 z=0 position #1,6,un:print #1,z:close print "You have not been voting; 3,000 credits deducted from your bank!" yesvote if (gha) gh=x-1 if (a-gh) print "There are "o$;a-gh;n$" new access requests.":flag(31)=1 chk.pae if flag(20)=0 goto chk.done open #1,"h:ae.data":input #1,x,a:close open #1,"f:u."+str$(un):position #1,5,6:input #1,gh:close if (gha) gh=x-1 if (a-gh) print "There are "o$;a-gh;n$" new PAE access requests." chk.done if flag(1)=0 goto not.valid:else if byte(0)=0 ww=666 if (r1<1) and (r2<1) goto main print \"Read mail now? ([Y],N): ";:gosub get.key if i$="N" print "No":goto main print "Yes":push main:a$="rd.mail":goto link.msg not.valid open #1,"f:u."+str$(un):position #1,5,1:input #1,b:close:x=6-b if x<1 y=un:print chr$(7)\"You have exceeded your logon limit." if x<1 gosub deluser:no=1:link "a:logon.seg","start" print ' You have 'x' calls left before this account is automatically deleted.' if byte(0) link "a:aerequest.seg","chk.vote" main if bo=0 a=random(6)-1:if a<0 a=0 if bo=0 open #1,"b:lines":position #1,95,a:input #1,i$,i$:close:print\i$ if clock(2) print \"["(clock(2)-clock(1))/60":";:i$=str$((clock(2)-clock(1)) mod 60):if len(i$)<2 i$="0"+i$ if not clock(2) i$=chr$(13)+"[00:00" print i$" Command ]->";:push main if (byte(0)=0) and (ww=666) i$="?":ww=0:goto main2 main1 gosub get.key main2 if pg tone ((un*2),(un*2),100) if info(5) poke 34,0 if (pdl(0)=0) info(4)=0:pg=0:poke 34,4 if flag(10) gosub wr.com if i$="B" print "Board #1...":bb=1:a$="bulletins":goto link.msg if i$="Q" print "Quickscan":a$="bulletins":bb=1:goto link.msg if i$="?" print "Menu"\:goto menu if i$="D" print "Define settings...":goto display if i$="$" pop:print "System files...":link "a:files.seg" if i$="T" goto term.opt if i$="E" or i$="Y" goto show.stat if i$="R" print "Read E-mail...":a$="rd.mail":goto link.msg if i$="O" print "Other systems...":pop:link "a:obbs.seg" if (i$="*") and (info(5)) pop:print "System":link "a:system.seg" if (i$="*") and (peek(-16287)>127) pop:print "System":link "a:system.seg" if flag(1)=0 goto main1 if i$="P" goto setpass if i$="F" print "Feedback...":goto feedback if i$="C" print "Chat!":goto chat if i$="S" print "Send E-mail":a$="sd.mail":goto link.msg if i$="G" print "General files...":pop:link "a:gf.seg" if i$="U" print "Userlist...":pop:link "a:ulist.seg" if i$="#" print "Borderlines...":goto blines if i$="+" print "Auto msg...":pop:link "a:auto.seg" if i$="%" print "The wall...":pop:link "a:wall.seg" if i$="&" print "Online games/utils...":pop:link "a:games.seg" if i$="V" print "Voting section...":pop:link "a:vote.seg" if i$="X" pop:goto pae.run goto main1 menu if flag(1)=0 f$="b:menu0":goto show.file if flag(32) setint(1):copy "b:ps.menu1":setint(""):print n$;:return f$="b:menu1":goto show.file ae.run ae=1:goto term1 term.opt ae=0:print "Ready to bolt? (Y/[N]): ";:gosub get.key if i$<>"Y" print "No":return:else pop:print "Yes" termin2 on nocar clear tm=clock(2)/60:fx=clock(1)/60:fs=clock(1) mod 60:if fx<0 fx=0 print \"Later, "a4$"."\"You were caller #"cn$", and you "; fy=tm-fx:if (fy<1) or (fy>99) fy=0 print "gained "fy" time credits." print "You were on-line for "fx" minutes, "; print fs" seconds." setint(1):copy "b:logoff":setint("") off term1 if (fx<1) and (fs<1) tm=clock(2)/60:fx=clock(1)/60:fs=clock(1) mod 60 if fx<0 fx=0 close:log "b:" if ae=0 modem(1) if a1$="" goto term4 if un=0 goto term3 term2 open #1,"users":nibble(2)=nibble(2)+1 byte(0)=byte(0)+1:byte(3)=lr mod 256 byte(4)=lr/256:when$="x":position #1,64,un print #1,a1$,a2$\a3$:position #1,64,un,30 write #1,ram,34:close term3 if info(5)=0 ct=ct+1:c2=c2+1 if c2>9999 c2=0:c1=c1+1 kill "data":create "data" open #1,"data":print #1,c1,c2,ct,ct$,date$ print #1,nu,mn,wm\a4$:close if m1 ready "e:mail":kill #msg(un):msg(un)=0:update if m2 ready "e:gmail":kill #msg(un):msg(un)=0:update if un<1 goto guest open #1,"f:u."+str$(un):position #1,5,2:input #1,a if (a>9500) or (flag(4)) a=9500:fy=0 position #1,5,2:print #1,a+fy position #1,5,1:input #1,a:position #1,5,1:print #1,a+1 position #1,5,0:input #1,mo position #1,5,5:print #1,byte(5) position #1,5,10:input #1,a if a>100 a=100-a:else a=0 position #1,5,10:print #1,a close guest log "b:" open #1,"call.log":position #1,80,0:input #1,a:a=a+1:if a=100 a=1 position #1,80,0:print #1,a:position #1,80,a a$=a4$+chr$(32,24):print #1,left$(a$,24); print #1,"|";:if len(ba$)<9 print #1," "ba$"|";:else print #1,ba$"|"; if flag(2) and (fx>99) print #1,"Unlim";:goto unlim1 if fx>99 print #1,"--:--";:goto unlim1 if fx<10 print #1,"0"; if fx<1 print #1,"0:";:else print #1,fx":"; if fs<10 print #1,"0"; print #1,fs; unlim1 print #1,"|"date$"|"time$"|"; x=0:if flag(1) x=1 if flag(3) x=2 if flag(4) x=3 if info(5) x=99 if x<10 print #1," "; print #1,x"|"lc$:close term4 open #1,"data3" if info(5)=0 position #1,80,1:print #1,time$ position #1,80,2:input #1,gf\f$ if un if gf99) d1$=d1$+"Unlim":goto unlim2 if (fx>99) or ((fs=0) and (fx=0)) d1$=d1$+"--:--":goto unlim2 if fx<10 d1$=d1$+"0" if fx<1 d1$=d1$+"0:":else d1$=d1$+str$(fx)+":" if fs<10 d1$=d1$+"0" d1$=d1$+str$(fs) unlim2 kill f$:create f$:open #1,f$:print #1,d1$\d2$\d3$\d4$\d5$:close wait.tran if flag(10) open #1,"l:com.log":append #1:print #1,"`":close:gosub wr.com1 if ae poke -28672,99:use "b:xboot" link "a:logon.seg" ********************************************** open #1,"weather.txt":input #1,i$\a$:close if i$="N/A" goto link.start x$=left$(i$,8):i$=mid$(i$,10) if len(i$)<>11 i$="0"+i$ if right$(time$,2)<>right$(i$,2) goto wait2 if (x$<>date$) or (a$<>"Weather") goto wait2 a=val(left$(i$,2)):if a=12 a=1 x$="":if len(time$)<>11 x$="0" b=val(left$(x$+time$,2)) if (b>4) and (a<4) goto wait2 if (b>10) and (a<10) goto wait2 link "a:logon.seg" ********************************************** wait2 on nocar clear clock(2)=0 ; Dial the board use "b:xcall",0,6 if peek(255)<>1 link "a:logon.seg" on nocar goto link.start get.wait get i$:if i$<>">" goto get.wait edit(0):f$="b:weather.txt" kill f$:create f$:open #1,f$ print #1,date$" "time$\"Weather" clear key:print gw1 get i$:if i$<>">" goto gw1 print "FP WA":clear key get.in get i$:print #1,i$; if i$<>">" goto get.in close:modem(1) link.start link "a:logon.seg" * open #1,"b:wait.data":a=mark(1):close * if a link "a:logon.seg" i$=left$(time$,2)+"."+mid$(time$,4,2)+"."+mid$(time$,7,4)+"M" create "b:temp":open #1,"b:temp" print #1,date$" "i$:close poke -28672,98:use "b:xboot" chat if (ch>3) or (pdl(0)=0) print \"[ SysOp Unavailable ]":return print \"Reason?":input @3 ">"i$:if len(i$)>79 print \"Too long!":goto chat if len(i$)<2 print \"Chat request ignored":return i$=i$+chr$(32,79):i$=left$(i$,79) home:print #3,i$\chr$(45,80);:poke 34,6 print \"Paging: ";:gosub chat1 print "Continue...":info(4)=1:ch=ch+1:pg=1:return show.stat print sc$"[ Your Status ]"\ print "Name: "a4$;:if nb$ print " ["nb$"]"; print \"From: "a3$ print "Phone # "ph$ print "User # "un print "Last on: "lc$ print \"Last caller: "lu$ print \"You are caller: "cn$ print " Today's calls: "ct\ print "Logon time: "cm$ if not clock(2) print "You have unlimited time on-line."\ if clock(2) print "Total time this call: "clock(2)/60 if clock(2) print chr$(32,11)"Time left: "(clock(2)-clock(1))/60" minutes."\ open #1,"b:data2":z=0:for x=0 to 34:a$="" if flag(x) position #1,32,x:input #1,a$ if a$ setint(1):print a$:setint(""):z=1:if key(1) x=34 next:close:if z=0 print "[ Unvalidated ]" f$="f:u."+str$(un):tt=un:if flag(4)=0 goto st.again per.stats clear key print \"Personal stats for user #";:d=len(str$(nu)):gosub get.keys a=val(i$):if (a<1) or (a>nu) return f$="f:u."+str$(a):tt=a st.again open #1,f$:x=mark(1):close if x print \"Account doesn't exist.":return print:open #1,f$:open #2,"b:stat.list" for a=0 to rn:position #1,5,a:position #2,36,a input #1,x:input #2,a$ i$="#":if a<10 i$=i$+"0" i$=i$+str$(a)+"] "+a$ i$=i$+chr$(46,35):i$=left$(i$,35) x$=i$:i$=str$(x):gosub comma setint(1):print x$;i$:setint("") if key(1) print "%> Aborted <%":a=rn next:close #1:close #2 if (peek(-16287)<127) and (info(5)=0) and (flag(4)=0) return cha.sta print \"Edit any personal records? ";:gosub get.key if i$<>"Y" print "No":return print "Yes":print "Notify via system mail? ";:gosub get.key an=1:if i$<>"Y" print "No":an=0:goto cha.sta1 edit(0):ready "e:gmail" if info(6)<29 print \"Mail bit-map full!":return gosub date1 print #msg(tt),un:print #6,"Letter From -%>Shooting Star" print #6,"Date Mailed -%>"i$\ print #6,a4$" changed the following personal stats for your account:"\ cha.sta1 print \"Enter: 1) Edit, 2) Erase? "; gosub get.key:a=val(i$) if i$="?" print "List":goto st.again if (a<1) or (a>2) print "Quit":goto cha.sta3 print a\:if a=2 goto cha.sta2 print "Change stat #";:d=2:gosub get.keys if i$="" print "Quit":goto cha.sta1 x=val(i$):if (x<1) or (x>rn) goto cha.sta1 print \"To: ";:d=4:gosub get.keys if i$="" print "Quit":goto cha.sta1 a=val(i$):if (a<-950) or (a>9500) goto cha.sta1 open #1,f$:position #1,5,x:input #1,b position #1,5,x:print #1,a:close if an print #6,"Personal stat #"x" changed from "b" to "a goto cha.sta1 cha.sta2 print "Erase current user file? ";:gosub get.key if i$<>"Y" print "No":goto cha.sta1 print "Yes":kill f$:create f$:open #1,f$:for a=0 to rn position #1,5,a:print #1,0:next:close if an print #6,"All stats erased." goto cha.sta1 cha.sta3 if an=0 goto per.stats copy #8,#6 print #msg(tt),chr$(4);chr$(0);:msg(tt)=msg(tt)+1:update goto per.stats feedback gosub editor:if edit(2)=0 return h$=" -%> Feedback from a User <%-" d=1:a$="wr.letter" gosub link.msg:return ; Borderlines ; modified for ACOS on 03/25/87 bl.list f$="b:lines":open #1,f$:for a=0 to 5:position #1,95,a input #1,i$,a$:if flag(3) print "Poster: "i$ setint(1):print (a+1)"] "a$\:setint(""):if key(1) a=5:print "%> Aborted <%" next:close:return blines push blines print \"Edit which? (1-5,T,Q,?): "; get1 gosub get.key:a=val(i$):if i$="Q" print "Quit...":pop:return if a goto get2 if i$="?" print "List"\:goto bl.list if i$<>"T" print chr$(7);:goto get1 print "Toggle on/off"\\"Borderlines now ";:if bo=0 bo=1:print "OFF":return bo=0:print "ON":return get2 if (a<1) or (a>7) print chr$(7);:goto get1 if (a=6) and (flag(4)=0) print \\"Sorry, that's a SysOp borderline.":return print \\"Enter new border #"a\">";:i$="" input @3 i$:if (len(i$)<3) or (len(i$)>76) print \"Invalid input.":return ;get3 ; a=key(0):if a=0 goto get3 ; a$=chr$(a):print a$; ; i$=i$+a$:if (len(i$)<>76) and (a$<>chr$(13)) goto get3 ; if len(i$)<3 print \"Invalid input.":return ; i$=i$+chr$(14) open #1,"b:lines":position #1,95,(a-1):print #1,a4$,i$:close return ; set display characteristics display print \"[1) Video width now = "edit(3)+1 print "[2) Back-space mode = "; a=nibble(0)/4:if a=1 print "non-"; if a=0 print "Unknown":else print "destruct" print "[3) Nulls sent @ LF = "info(3) print "[4) Page pause mode = "; if flag(35) print "ON":else print "OFF" print "[5) Show phone numb = "; if mid$(ph$,4,1)=" " print "YES":else print "NO" print "[6) Twirling cursor = ";:if flag(33) print "ON":else print "OFF" print "[7) ProTERM Special = ";:if flag(32) print "ON":else print "OFF" print "[Q)uit"\ display2 print "Select: "; display3 gosub get.key if i$="Q" or i$=chr$(13) print "Quit":return if i$="2" goto backspace if i$="5" goto phone if i$="3" goto nulls if i$="4" goto paging if i$="6" goto twirling if i$="7" goto media if i$="?" print "List":goto display if i$<>"1" goto display3 video print "Set Video Width" print \"New width ("; print width(1),width(2),width(3),width(4); print ")? ";:d=2:gosub get.keys2 if i$="" goto display2 a=val(i$):for x=1 to 4 if a=width(x) nibble(0)=nibble(0)/4*4+(x-1):edit(3)=a-1 next:goto display backspace print "Set Cursor Characteristics" print \"123456" chr$(8,3):a=0 print \"How many numbers do you see"\ print "3 shows a fucked backspace" print "6 shows a non-destructable backspace" print \"How many (3 or 6)? ";:gosub get.key print i$:if i$=chr$(13) goto display if i$="6" a=1 if i$="3" a=2 nibble(0)=(nibble(0) mod 4)+(a*4) edit(4)=a:goto display nulls print "Set nulls to (0-127): "; d=3:gosub get.keys if i$<>"" info(3)=val(i$) goto display2 phone ph$=left$(ph$,3)+"-"+mid$(ph$,5) print "Show phone number in userlist? ";:gosub get.key if i$<>"Y" print "No":goto display ph$=left$(ph$,3)+" "+mid$(ph$,5):print "Yes":goto display paging print "Pause after page now "; if flag(35) print "OFF":flag(35)=0:goto display2 if flag(35)=0 print "ON":flag(35)=1 goto display2 twirling print "Twirling cursor now "; if flag(33) print "OFF":flag(33)=0:goto display2 if flag(33)=0 print "ON":flag(33)=1 goto display2 media print "ProTERM Special now "; if flag(32) print "OFF":flag(32)=0:p$="":o$="":n$="":goto display2 if flag(32)=0 print "ON":flag(32)=1:p$=chr$(16):o$=chr$(15):n$=chr$(14) goto display2 setpass print "Change your password":echo="X" input @2 \"Enter your current password: "i$:echo="":if i$="" return i$=left$(i$+" ",8):if i$<>pa$ print \"Incorrect!":return print \"Your password may be 4-8 chars long" echo="X":input @2 \"Enter your new password: "i$ if i$="" echo="":return input @2 "Please type it in again: "a$ echo="":a=len(i$) if a$<>i$ print \"Passwords do not match":return if (a<4) or (a>8) print \"Password must be 4-8 chars":return pa$=left$(i$+" ",8):print \"New Password Accepted":return ; bulletins / e-mail bulletins if len(i$)<2 goto link.msg a=val(mid$(i$,2)):if a bb=a link.msg link "a:msg.seg",a$ return on nocar goto term1 return ; *** sub - routines *** ; enter a message editor print \"Enter message now, "edit(3)" col, 4k bytes max "; print ".s = save|.h = help|'done' to edit msg." edit(0):edit(1):return ; show a disk file show.file setint(1):print \s$\:open #1,f$:if mark(1) close #1:return showfl2 copy (20) #1 if eof(1) or key(1) setint(""):close #1:return if flag(35)=0 goto showfl2 print "Press [RETURN] ";:get i$:if i$=chr$(13) print " "; print chr$(8,16);chr$(32,16);chr$(8,16); if i$=" " setint(""):close #1:return setint(1):goto showfl2 deluser if y=1 print "Looks like fun! Account saved.":return print "Deleting account #"y open #1,"b:users":position #1,64,y print #1,""\d3$:close #1 kill "f:u."+str$(y) kill "f:r."+str$(y) kill "f:b."+str$(y) return pae.run if flag(20)=0 goto ae.apply print \\"Entering PAE ProDOS" link "a:pae.pdos.main" ae.apply if info(2)=1 print \\"PAE only available at 1200/2400 baud.":goto main print \\"You don't have PAE access."\"Do you wish to apply? ";:gosub get.key if i$<>"Y" print "No":goto main print "Yes":link "a:aerequest.seg" chat1 x=3:if flag(32) x=0 for a=1 to 250 step 5 b=peek(-16384):if b>127 a=250 if b=129 get i$:next:return print #x,t$;chr$(a,2);chr$(50); b=peek(-16384):if b>127 a=250 if b=129 get i$ next:return fromsys on nocar goto term1 if info(0) print ^ goto main set.time clear key input "Enter new time limit: "gf:if gf<1 return clock(2)=gf*60:gf=22+len(str$(gf)) print chr$(8,gf);chr$(32,gf);chr$(8,gf); return wr.com open #1,"l:com.log":append #1:print #1,i$:close:return wr.com1 open #1,"l:com.log":open #2,"b:com.log":append #2 wr.com2 input #1,i$:if i$="`" print #2,chr$(8)".":close #1:close #2:return print #2,i$",";:goto wr.com2 date1 q=val(left$(date$,2)):q1=val(mid$(date$,4,2)):q2=val(right$(date$,2)) m$="000031059090120151181212243273304334":if q>1 q3=val(mid$(m$,q*3-2,3)) q1=q1+q3:m$="46012456":q1=q1+val(mid$(m$,8-(94-q2),1)):q1=q1 mod 7 m$="BobMonTueWedThuFriSat":if q1>1 td$=mid$(m$,q1*3-2,3):else td$="Sun" ml$="085534469788":q3=0:for q4=1 to q-1:q3=q3+val(mid$(ml$,q4,1):next mt$="FebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember" if q>1 m$=mid$(mt$,q3+1,val(mid$(ml$,q4+1,1))):else m$="January" min$=mid$(time$,4,2):if len(time$)>8 t1$=time$:goto date2 if val(left$(time$,2))<12 t1$=left$(time$,2)+":"+min$+"AM":goto date2 q4=val(left$(time$,2)):t1$=str$(12-(24-q4))+":"+min$+"PM" date2 i$=td$+", "+m$+" "+mid$(date$,4,2)+" "+t1$ return comma if len(i$)<4 return if len(i$)<5 gf=1:else gf=2 i$=left$(i$,gf)+","+right$(i$,3):return get.keys if d<1 i$="":return x$="":gi=0 keys1 gosub get.key:if (gf=13) print " "chr$(8):return print i$;:x$=x$+i$ keys2 gi=99:gosub get.key if (gf<>8) and (gf<>127) goto keys3 print " "chr$(8,2)" "chr$(8,2); if len(x$)=1 goto get.keys x$=left$(x$,(len(x$)-1)):goto keys2 keys3 if gf=13 i$=x$:gi=0:print " "chr$(8):return print i$;:x$=x$+i$:if len(x$)=d i$=x$:gi=0:print " "chr$(8):return goto keys2 get.key ww=0:wx=0 get.key1 gf=clock(2) if (gf<>0) and (clock(1)>gf) print \\"[ Time Limit Exceeded ]":pop:goto term1 if peek(-16286)>127 gosub set.time gf=peek(-16384):if (gf=129) or (gf=150) get i$:print chr$(8);:return gf=key(0):if (gf>96) and (gf<123) gf=gf-32 if (gf>31) or (gf=13) i$=chr$(gf):return if gf and (gi=99) i$=chr$(gf):return ww=ww+1:if flag(33)=0 goto get.key2 wx=wx+1:if wx>16 wx=1 print mid$("!/-\!/-\!\-/!\-/",wx,1);chr$(8); get.key2 if ww=2000 print chr$(7,2); if ww=4000 pop:goto term1 if (info(0)=0) and (info(5)=0) and (eu<>1) pop:goto term1 goto get.key1