SysOp Mail Dashboard – Mail Utility v4.0

Author: Little John
———————————————————————————————

; Mail Utility seg
; by Little John
; 9/23/88

on nocar goto no.car

print \;
main
 print \"Mail Utility program... Enter Command : "chr$(8);:gosub getkey2:print i$;
 if i$="?" print chr$(8)"Menu":gosub help
 if i$="Q" print "uit":goto quit
 if i$="S" print "can users":gosub scan.usrs
 if i$="R" print "ead someone's mail":gosub read.1.pers 
 if i$="A" print "ead all mail":gosub read.all
 if i$="P" print "rint all mail":gosub print.all
 if i$="M" print "ake file post":gosub file.pst
 if i$="T" print "urn file --> mail":gosub file.mail
 goto main

help
 setint(1):print ' ____________________________
| |
| Mail Util V4.0 |
| Seg by : Little John |
| |
| [Q] Quit to system menu |
| [S] Scan users |
| [R] Read a persons mail |
| [A] Read all new mail |
| [P] Print all mail |
| [M] Make file post |
| [T] Turn a file into mail |
|____________________________|':setint(""):return

read.all
 print \"Scanning user# ";
 for x=1 to nu
 nu$=str$(x)
 print x;:print chr$(8,len(nu$));
 if not msg(x) then next:else ready #msg(x):q9=x:gosub read.1:x=q9:print \"Scanning user# ";:next
 return

read.1.pers
 ready "g:mail"
 print \"Enter user# of person's mail you want to read : ";
 input @2 i$:i=val(i$)
 if not msg(i) print \"That user has no mail":return
 gosub rd.user
 ready #msg(i)
read.1
 if ii$="P" x=5:else x=0
 input #7,i$:d=val(i$)
 if i$="" then ma=1:return
read.2
 print #x,"-<=>-!-<=>-!-<=>-!-<=>-!-<=>-!-<=>-!-<=>-"\
 setint(2):copy #7,#x
 print #x,\">-=-<+>-=-<+>-=-<+>-=-<+>-=-<+>-=-<+>-=-<"
 setint(""):if key(2) goto read.1
read.3
 if qs=4 goto read.1
 print \"[E]dit [K]ill [R]eread [F]orward [C]ontinue"
 print "[M]ake Bulletin [P]rint [W]rite as a file [Q]uit"
 print "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
 print "Your choice? [def=C] : "chr$(8);:gosub getkey2:print i$;
 if (i$=chr$(13)) or (i$="C") then goto read.1
 if i$="R" print "eread":rewind:x=0:goto read.2
 if i$="F" print "orward mail":goto forward
 if i$="E" print "dit mail":goto edit
 if i$="K" print "ill mail":kill #msg(i):update:print \"Mail killed...":return
 if i$="M" print "ake it a post":goto bul.make
 if i$="P" print "rint mail":goto print
 if i$="W" print "rite as a file":goto wrt.msg
 if i$="Q" print "uit":return
 goto read.3

edit
 input @2 \"Edit: Are you positive (y/N) : " i$
 if left$(i$,1)<>"Y" return
 edit(0):input #msg(i),a$
 copy #6,#8:edit(1):if not edit(2) return
 x=msg(a):kill #msg(a):print #msg(i),a$
 copy #8,#6:msg(a)=x:update:return

forward
 print \"Forward letter"
 a=d:gosub mail.who
 if d=0 then d=a:return
 rewind:s=7
 input @3 "Subject: "sb$:if sb$="" sb$="For your information"
 h$=" This is a forwarded letter from another user "
 r$=".letter forwarded":gosub snd.bulk
 d=a:return

mail.who
 input @2 \"To who: [Alias], [User #], [Return] : " i$
 clear #10:if i$="" then d=0:return
 gosub mail.wh2:print #10,d\0:return

mail.wh2
 if val(left$(i$,1)) goto snd.num
 d$=i$:if (d$="SYSOP") or (d$=sys$) then d=1:return
 if not instr(" ",i$) goto snd.usr2
 open #1,"b:users":d=1

snd.user
 position #1,128,d
 input #1,a$,b$\c$
 if (a$+" "+b=d$) or (a$+b$=d$) close:return
 if d<nu then d=d+1:goto snd.user
 close:d=0
 print \d$" is not a user":return
snd.usr2
 print \"That user does not exist"
 d=0:return

snd.num
 d=val(i$)
 if (d<1) or d>nu) goto snd.usr2
 move ram,58 to ram2:open #1,"b:users"
 position #1,128,d:input #1,a$,b$\c$
 position #1,128,d,70:read #1,ram,58
 close:move ram2,58 to ram
 if a$="" goto snd.usr2
 print \"Send to "c$", last on "when$;
 input @2 " (Y/n) : " i$
 if left(i$,1)="N" then d=0
 return

snd.bulk
 print \edit(2)" characters written"
 print "Hold..";:mark(10)=0
snd.blk2
 input #10,d:if d=0 print r$:return
 gosub wr.ltr:print ".";:if s=7 rewind
 goto snd.blk2

wr.ltr
 ready "g:mail"
 if info(6)<29 print \"Mail bit-map full":return
wr.ltr2
 print #msg(d),un:if h$<>"" print #6,h$\
 print #6,"[Subj]: "sb$
 print #6,"[From]: "a3$" (#"un")"
 print #6,"[Date]: "date$" "time$\
 copy #s,#6:print #msg(d),chr$(4);chr$(0);
 msg(d)=1:update:return

scan.usrs
 kill "g:people.mail":create "g:people.mail"
 open #1,"g:people.mail"
 print #1,"Usr# User Name:"
 close #1
 ready "g:mail"
 print \"Scanning user# ";
 for x=1 to nu
 nu$=str$(x)
 print x;:print chr$(8,len(nu$));
 if not msg(x) then next:else gosub scan.2:next
 print \:copy "g:people.mail":return
scan.2
 open #1,"b:users"
 position #1,128,x
 input #1,x$,x$\n9$\x$,x$
 close #1
 nt$=right$(" "+nu$,4)
 open #1,"g:people.mail"
 append #1
 print #1,nt$" "n9$
 close #1
 return

bul.make
 input @2 \"Post this mail on board #" i$:zx=val(i$)
 edit(0):input #msg(i),a$\b$\c$:copy #6,#8
 x=msg(a):bb=zx:gosub idinf
 h$=n9$+"'s mail":sb$=" "+a3$+" #"+str$(un):d$=" People on this board"
 zx=msg(0)+1:gosub wr.ltr4
 print \"The mail is now the "bn$" board.":return

wr.ltr4
 print #msg(zx),h$\d$\sb$
 print #6,"[Date]: "date$" at "time$
 print #6,a$\b$\c$:copy #8,#6
 msg(zx)=1:update:return

idinf
 if bb=0 then bf$="":bl=0:return
 me=0:bl=bb:open #1,"b:data2"
 mark(1)=1120:input #1,ab
 if bb>ab close:bf$="":bl=0:return
 position #1,128,bb+8
 input #1,bn$\bf$\b3,b4\bs,bs$\mb,kl,kb
 close:if bf$="" then bl=0:return
 ready bf$:nn=nb
 return

print
 ii$="P":goto read.1.pers
print.all
 ii$="P":qs=4:gosub read.all:qs=0:return

file.show
 setint(""):copy f$:return

quit
 link "a:system.seg"

no.car
 link "a:main.seg","term1"

rd.user
 open #1,"b:users"
 position #1,128,i
 input #1,x$,x$\n9$\x$,x$
 close #1:ur=i:return

getkey2
 zy=0
get22
 if (clock(2)<>0) and (clock(1)>clock(2)) print\"Time Limit Exceeded":goto no.car
 zz=peek(-16384)
 if (zz=129) or (zz=150) get i$:return
 zz=key(0):if (zz>96) and (zz<123) zz=zz-32
 if zz<>0 i$=chr$(zz):return
 goto get22

file.pst
 input @3 \"This goes to whom : " d$:d$=" "+d$
 h$="":input @3 \"Subject of file post : " sb$
 clear #8:input @3 \"Filename : " i$:copy i$,#8
 print \edit(2)" bytes in file":edit(1)
 input @2 \"Post this file on board #" i$:zx=val(i$)
 x=msg(a):bb=zx:gosub idinf
 h$=sb$:sb$=" "+a3$+" (#"+str$(un)+")"
 zx=msg(0)+1:gosub wr.ltr4
 print \"The file is now the "bn$" board.":return

wrt.msg
 input @2 \"Filename (to write) : " i$
 if i$="" goto read.3
 create i$:open #1,i$:append #1
 copy #msg(a),#1:close
 print \"It's now a file on that drive specifier"
 goto read.3

file.mail
 input @2 \"Filename to send : "j$:if j$="Q" return
 edit(0):copy j$,#8
 gosub mail.who:input @3 \"Reason for this mail : "d$
 sb$="One of the Sysop's files"
 s=8:gosub wr.ltr:print \"The mail has been sent to user #"d:return