Category : BBS Programs+Doors
Archive   : TG27.ZIP
Filename : TELEGARD.INC

 
Output of file : TELEGARD.INC contained in archive : TG27.ZIP
(*****************************************************************************)
(*> <*)
(*> Telegard Bulletin Board System <*)
(*> Copyright 1988-1991 by Martin Pollard. All rights reserved. <*)
(*> <*)
(*> Data Types and File Structures <*)
(*> <*)
(*****************************************************************************)

const
ver:string[15]='2.7'; { current version number }

maxboards=255; { msg bases, 0 - x }
maxuboards=255; { file bases, 0 - x }
maxprotocols=120; { xfer protocols, 1 - x }
maxevents=10; { scheduled events, 0 - x }
{ #0 is Nightly Events (if active) }
maxarcs=8; { archivers, 1 - x }
numvoteqs=20; { voting questions, 1 - x }
numvoteas=9; { voting question answers, 0 - x }
maxmenucmds=50; { menu commands, 1 - x }

(*---------------------------------------------------------------------------*)

type
acstring = string[20]; { Access Control System string }
acrq = '@'..'Z'; { AR flags }
clrs = array[FALSE..TRUE,0..9] of byte; { color records: }
{ [FALSE][x] = mono }
{ [TRUE][x] = color }
secrange = array[0..255] of integer; { security tables }
cpackdatetime = array[1..6] of byte; { packed date/time }
mzscanr = set of 0..maxboards; { msg base scan flags }
fzscanr = set of 0..maxuboards; { file base scan flags }
mhireadr =
array[0..maxboards] of cpackdatetime; { last msg read table }

(*****************************************************************************)
(* *)
(* The format of the packed date/time structure is as follows: *)
(* *)
(* Byte #1 | Byte #2 | Byte #3 *)
(* ===============|===============|=============== *)
(* 7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0 *)
(* `-----------' `-------------' `-----' `-------' *)
(* RESERVED Year Month Day *)
(* (8 bits) (4 bits) (5 bits) *)
(* *)
(* Byte #4 | Byte #5 | Byte #6 *)
(* ===============|===============|=============== *)
(* 7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0 *)
(* `-------' `---------' `---------' `-----------' *)
(* Hour Minute Second 1/100 Seconds *)
(* (5 bits) (6 bits) (6 bits) (7 bits) *)
(* *)
(*****************************************************************************)

uflags = { user AC flags }
(
rlogon, { L - Restricted to one call a day }
rchat, { C - Can't page the SysOp }
rvalidate, { V - Posts marked unvalidated }
ramsg, { A - Can't change the AutoMessage }
rpostan, { * - Can't post anonymously }
rpostpvt, { E - Can't post private }
rpostnet, { N - Can't post NetMail }
rpost, { P - Can't post at all }
rvoting, { K - Can't vote }
rmsg, { M - Force mail deletion }
rreserved, { RESERVED }
onekey, { onekey input mode }
avatar, { user has AVATAR }
pause, { pause }
novice, { user is at novice help level }
ansi, { user has ANSI }
color, { user has color }
alert, { alert SysOp when user logs on }
smw, { short-message waiting for user }
nomail, { user mail-box is closed }
fnodlratio, { 1 - No UL/DL ratio }
fnopostratio, { 2 - No post/call ratio }
fnofilepts, { 3 - No file points checking }
fnodeletion { 4 - Protection from deletion }
);

anontyp = { msg base anonymous types }
(
atno, { No anonymous posts allowed }
atyes, { Anonymous posts are allowed }
atforced, { ALL posts are forced anonymous }
atdearabby, { "Dear Abby" message base }
atanyname { User's can post as ANY name they want }
);

basetyp = { msg base types }
(
mlocal, { local messages }
mnetmail, { NetMail messages }
mechomail, { EchoMail messages }
mgroupmail { GroupMail messages }
);

posttyp = { msg base message types }
(
mpublic, { public messages only }
mprivate { private messages only }
);

(*---------------------------------------------------------------------------*)

msgindexstatr= { *.MIX status flags }
(
deleted, { is message deleted? }
unvalidated, { is message unvalidated? }
permanent { is message permanent? }
);

fidoattrib= { *.MIX Fido message attributes }
(
private, { private }
crash, { crash mail }
received, { received }
sent, { sent }
fattach, { file attached }
intransit, { in-transit }
orphan, { orphaned }
kill, { kill after sending }
local, { local message }
hold, { hold for pickup }
unused, { **UNUSED** }
freq, { file request }
rreq, { return receipt request }
receipt, { return receipt message }
areq, { audit request }
fureq { file update request }
);

fidoxattrib= { *.MIX Fido message attributes (extended) }
(
direct, { direct to recipient }
immediate, { immediate delivery }
delsent { delete when sent }
);

msgindexrec= { *.MIX : Message index records }
record
hdrptr:longint; { message header pointer }
isreplyto:integer; { reply-to message number (-1=none) }
isreplytoid:cpackdatetime; { packed date/time of replied message }
numreplies:integer; { number of replies to THIS message }
msgdate:cpackdatetime; { message date/time (packed) }
msgdowk:byte; { message day of week (0=Sun..6=Sat) }
attrib:set of fidoattrib; { Fido msg attributes (see above) }
xattrib:set of fidoxattrib; { extended Fido attribs (see above) }
flags:set of msgindexstatr; { status flags (see above) }
end;

fromtoinfo= { *.BRD from/to information }
record
anon:byte; { anonymous type (0=no, 1/2=yes, 3="Abby", }
{ 4="Problemed Person", 5=any name }
usernum:word; { user number (0=none) }
zone:word; { zone (0=none) }
net:word; { net (0=none) }
node:word; { node (0=none) }
point:word; { point (0=none) }
name:string[36]; { user name (all caps) if anon=3..5, }
{ otherwise null ('') }
real:string[36]; { user real name (all caps) }
alias:string[36]; { user alias (all caps) }
end;

mheaderrec= { *.BRD : Message header records }
record
msgptr:longint; { pointer to message text }
msglength:word; { length of message text }
cost:word; { cost to send message (NetMail only) }
fromi:fromtoinfo; { from user information }
toi:fromtoinfo; { to user information }
title:string[71]; { title of message }
datetime:string[19]; { Net/Echo/Group original msg date }
end;

(*---------------------------------------------------------------------------*)

filstat= { *.DIR status flags }
(
notval, { if file is not validated }
isrequest, { if file is offline }
resumelater { if file is resume-later }
);

ulfrec= { *.DIR : File records }
record
filename:string[12]; { filename }
description:string[60]; { file description }
filepoints:integer; { file points }
nacc:integer; { number DLs }
res1:byte; { RESERVED }
blocks:integer; { # 128 byte blks }
owner:integer; { ULer of file }
stowner:string[36]; { ULer's name }
date:string[8]; { date ULed }
daten:integer; { numeric date ULed }
{ (# days since 01/01/85) }
vpointer:longint; { pointer to verbose descr (-1=none) }
filestat:set of filstat; { file status }
res2:array[1..10] of byte; { RESERVED }
end;

(*---------------------------------------------------------------------------*)

mnuflags= { *.MNU status flags }
(
clrscrbefore, { C: clear screen before menu display }
dontcenter, { D: don't center the menu titles! }
nomenuprompt, { N: no menu prompt whatsoever? }
forcepause, { P: force a pause before menu display? }
autotime { T: is time displayed automatically? }
);

menurec= { *.MNU : Menu records }
record
menuname:array[1..3] of string[100]; { menu name }
directive:string[12]; { help file displayed }
tutorial:string[12]; { tutorial help file }
menuprompt:string[120]; { menu prompt }
acs:acstring; { access requirements }
password:string[15]; { password required }
fallback:string[8]; { fallback menu }
forcehelplevel:byte; { forced help level for menu }
gencols:byte; { generic menus: # of columns }
gcol:array[1..3] of byte; { generic menus: colors }
menuflags:set of mnuflags; { menu status variables }
end;

cmdflags= { *.MNU command status flags }
(
hidden, { H: is command ALWAYS hidden? }
unhidden { U: is command ALWAYS visible? }
);

commandrec= { *.MNU : Command records }
record
ldesc:string[70]; { long command description }
sdesc:string[35]; { short command description }
ckeys:string[14]; { command-execution keys }
acs:acstring; { access requirements }
cmdkeys:string[2]; { command keys: type of command }
mstring:string[50]; { MString: command data }
commandflags:set of cmdflags; { command status variables }
end;

(*---------------------------------------------------------------------------*)

zlogrec= { ZLOG.DAT : System log }
record
date:string[8]; { entry date }
userbaud:array[0..4] of integer; { new user logon BPS rates }
{ (300,1200,2400,4800,9600+) }
active:integer; { % activity }
calls:integer; { # of calls }
newusers:integer; { # of new users }
pubpost:integer; { # of public posts }
privpost:integer; { # of private posts }
netpost:integer; { # of NetMail posts }
criterr:integer; { # of critical errors }
uploads:integer; { # of uploads }
downloads:integer; { # of downloads }
uk:longint; { amount ULed in K }
dk:longint; { amount DLed in K }
end;

(*---------------------------------------------------------------------------*)

mbflags= { BOARDS.DAT status flags }
(
mbrealname, { real names are forced }
mbvisible, { visible to users w/o access }
mbfilter, { filter ANSI/8-bit ASCII }
mbstrip, { strip center/title codes }
mbaddtear, { add tear/origin lines }
mbtopstar, { Top Star base (GroupMail only) }
mbimmune, { immune to "twitting" }
mbinternet { special Internet (UUCP) handling }
);

boardrec= { BOARDS.DAT : Message base records }
record
name:string[40]; { message base description }
filename:string[8]; { BRD/MIX data filename }
msgpath:string[40]; { messages pathname }
password:string[20]; { base password }
acs:acstring; { access requirement }
postacs:acstring; { post access requirement }
maxmsgs:word; { max message count }
anonymous:anontyp; { anonymous type }
mbstat:set of mbflags; { message base status vars }
mbtype:basetyp; { message base type }
mbpost:posttyp; { message base posting type }
origin:string[50]; { origin line }
kludge_color:byte; { color of kludge line }
quote_color:byte; { color of quoted line }
tear_color:byte; { color of tear line }
origin_color:byte; { color of origin line }
zone:word; { network address }
net:word; { (zone:net/node.point) }
node:word;
point:word;
end;

(*---------------------------------------------------------------------------*)

confrec= { CONFRENC.DAT : Conference data }
record
conference:array['@'..'Z'] of
record
acs:acstring; { access requirement }
name:string[40]; { name of conference }
end;
end;

(*---------------------------------------------------------------------------*)

eventrec= { EVENTS.DAT : Scheduled event records }
record
active:boolean; { whether active }
description:string[30]; { event description (for logs) }
etype:char; { A:CS, C:hat, D:os call, E:xternal }
execdata:string[20]; { errorlevel if "E", commandline if "D" }
busytime:integer; { off-hook time before; 0 if none }
exectime:integer; { time of execution }
busyduring:boolean; { busy phone DURING event? }
duration:integer; { length of time event takes }
execdays:byte; { bitwise execution days, }
{ or day of month if monthly }
monthly:boolean; { monthly event? }
end;

(*---------------------------------------------------------------------------*)

tbflags= { GFILES.DAT status flags }
(
tbunhidden, { whether *VISIBLE* to users w/o access }
tbreserved1, { RESERVED FLAG #1 }
tbreserved2 { RESERVED FLAG #2 }
);

tfilerec= { GFILES.DAT : Text-file records }
record
title:string[40]; { title }
filen:string[12]; { filename }
gdate:string[8]; { date of Tfile / Tfile base }
gdaten:integer; { numeric date for fast calculation }
acs:acstring; { access requirement }
ulacs:acstring; { upload to base access requirement }
tbstat:set of tbflags; { text-file base status vars }
res:array[1..10] of byte; { RESERVED }
end;

(*---------------------------------------------------------------------------*)

lcallers= { LASTON.DAT : Last few callers records }
record
callernum:longint; { system caller number }
name:string[36]; { user name of caller }
number:integer; { user number of caller }
citystate:string[30]; { city/state of caller }
end;

(*---------------------------------------------------------------------------*)

macrorec= { MACROS.LST : Keyboard macro records }
record
macro:array[1..4] of string[240];
end;

(*---------------------------------------------------------------------------*)

modemflags= { MODEM.DAT status flags }
(
lockedport, { COM port locked at constant rate }
xonxoff, { XON/XOFF (software) flow control }
ctsrts { CTS/RTS (hardware) flow control }
);

modemrec= { MODEM.DAT : Modem configuration }
record
waitbaud:word; { wait bps }
comport:byte; { COM port number }
init:string[80]; { initialization string }
answer:string[40]; { answer string }
hangup:string[40]; { hangup string }
offhook:string[40]; { phone off-hook string }
nocallinittime:integer; { reinit modem after x mins of inactivity }
lockedportbaud:word; { bps rate to use when COM port locked }
flags:set of modemflags; { status flags (see above) }
nocarrier:byte; { NO CARRIER result code }
resultcode:array[1..2,0..7] { CONNECT result codes: }
of byte; { 300,1200,2400,4800,7200,9600,12000,14400 }
end;

(*---------------------------------------------------------------------------*)

smalrec= { NAMES.LST : Sorted names listing }
record
name:string[36]; { user name }
number:integer; { user number }
end;

(*---------------------------------------------------------------------------*)

netflags= { NETWORK.DAT status flags }
(
nstrip, { strip message codes? }
naddtear, { add tear/origin lines to Net/Group? }
nholduser, { hold all non-SysOp NetMail? }
nhold, { default NetMail to "hold"? }
ncrash, { default NetMail to "crash"? }
nkill { default NetMail to "kill/sent"? }
);

networkrec= { NETWORK.DAT : Network information }
record
zone:word; { network address }
net:word; { (zone:net/node.point) }
node:word;
point:word;
origin:string[50]; { origin line }
kludge_color:byte; { color of kludge line }
quote_color:byte; { color of quoted text }
tear_color:byte; { color of tear line }
origin_color:byte; { color of origin line }
flags:set of netflags; { status flags }
netpath:string[40]; { NetMail path }
echopath:string[40]; { EchoMail path }
grouppath:string[40]; { GroupMail path }
nodepath:string[40]; { nodelist path }
end;

(*---------------------------------------------------------------------------*)

nodeflags= { NODELIST.DAT status flags }
(
hub, { node is a net hub }
host, { node is a net host }
region, { node is region coord }
zone, { node is a zone coord }

cm, { runs continuous mail }
ores1, { reserved for Opus }
ores2, { reserved for Opus }
ores3, { reserved for Opus }
ores4, { reserved for Opus }
ores5, { reserved for Opus }
nores1, { reserved for non-Opus }
nores2, { reserved for non-Opus }
nores3, { reserved for non-Opus }
nores4, { reserved for non-Opus }
nores5, { reserved for non-Opus }
nores6 { reserved for non-Opus }
);

modemtypes= { NODELIST.DAT modem type flags }
(
hst, { node uses a USRobotics HST modem }
pep, { node uses a Telebit PEP modem }
v32, { node uses a V.32 modem }
v32b, { node uses a V.32bis modem }
h96 { node uses a Hayes Express96 modem }
);

nodedatarec= { NODELIST.DAT : Version 6 nodelist data }
record
net:integer; { net number }
node:integer; { node number }
cost:integer; { cost per minute to call }
name:array[0..33] of byte; { node name }
phone:array[0..39] of byte; { phone number }
city:array[0..29] of byte; { city and state }
password:array[0..7] of byte; { password }
realcost:integer; { phone company's charge }
hubnode:integer; { node # of this node's hub (0=none) }
rate:byte; { actual bps rate divided by 300 }
modem:set of modemtypes; { modem type codes }
flags:set of nodeflags; { set of flags }
res:array[1..2] of byte; { RESERVED }
end;

nodeindexrec= { NODELIST.IDX : Version 6 nodelist index }
record
node:integer; { node number }
net:integer; { net number }
end;

(*---------------------------------------------------------------------------*)

xbflags= { PROTOCOL.DAT status flags }
(
xbactive, { is protocol active? }
xbisbatch, { is batch definition? }
xbisresume, { is resume definition? }
xbxferokcode { does result code = xfer OK? }
);

protrec= { PROTOCOL.DAT : File transfer protocols }
record
xbstat:set of xbflags; { protocol flags }
ckeys:string[14]; { command keys }
descr:string[40]; { description }
acs:acstring; { access string }
templog:string[25]; { temp. log file }
uloadlog:string[25]; { permanent log files }
dloadlog:string[25];
ulcmd:string[78]; { UL/DL command lines }
dlcmd:string[78];
ulcode:array [1..6] of string[6]; { UL/DL codes }
dlcode:array [1..6] of string[6];
envcmd:string[60]; { environment setup cmd (B) }
dlflist:string[25]; { DL file lists (B) }
maxchrs:integer; { max chrs in cmdline }
logpf:integer; { pos in log file for data (B) }
logps:integer;
res:array[1..15] of byte; { RESERVED }
end;

(*---------------------------------------------------------------------------*)

smr= { SHORTMSG.DAT : One-line messages }
record
msg:string[160]; { message }
destin:integer; { destination user # (-1=deleted) }
end;

(*---------------------------------------------------------------------------*)

filearcinforec= { STATUS.DAT archive configuration records }
record
active:boolean; { whether this archive format is active }
ext:string[3]; { 3-char file extension }
listline:string[25]; { view archive cmdline ('' for internal) }
arcline:string[25]; { compression cmdline }
unarcline:string[25]; { de-compression cmdline }
testline:string[25]; { integrity test cmdline ('' for *None*) }
cmtline:string[25]; { comment cmdline ('' for *None*) }
succlevel:integer; { success ERRORLEVEL (-1=ignore results) }
end;

systatrec= { STATUS.DAT : System configuration }
record
gfilepath:string[79]; { GFILES path (data files) }
afilepath:string[79]; { AFILES path (text files) }
menupath:string[79]; { MENUS path (system menu files) }
trappath:string[79]; { LOGS path (trap/chat/log files) }
msgpath:string[79]; { MSGS path (msg base data files) }
tfilepath:string[79]; { TFILES path (Tfiles base files) }
temppath:string[79]; { TEMP path (temporary files) }

bbsname:string[80]; { BBS name }
bbsphone:string[12]; { BBS phone number }
sysopname:string[30]; { SysOp's full name or alias }
maxusers:integer; { max number of users system can have }
lowtime:integer; { SysOp begin minute (in minutes) }
hitime:integer; { SysOp end time }
dllowtime:integer; { normal downloading hours }
dlhitime:integer;
shuttlelog:boolean; { is Shuttle Logon active? }
lock300:boolean; { lock out 300 baud? }
sysoppw:string[20]; { SysOp PW }
newuserpw:string[20]; { newuser PW (or NULL if none) }
shuttlepw:string[20]; { Shuttle PW (if Shuttle active) }
b300lowtime:integer; { 300 baud calling hours }
b300hitime:integer;
b300dllowtime:integer; { 300 baud DL hours }
b300dlhitime:integer;
closedsystem:boolean; { DON'T allow new users? }
swapshell:boolean; { is swap shell function enabled? }
eventwarningtime:integer; { time before event warning }
tfiledate:string[8]; { last date text-files were inserted }
swapshelltype:byte; { swap shell type (0=disk,1=EMS) }

res1:array[1..23] of byte; { RESERVED SPACE #1 }

sop:acstring; { SysOp }
csop:acstring; { Co-SysOp }
msop:acstring; { Message SysOp }
fsop:acstring; { File SysOp }
spw:acstring; { SysOp PW at logon }
seepw:acstring; { see SysOp PWs remotely }
normpubpost:acstring; { post public messages }
normprivpost:acstring; { post private messages }
anonpubread:acstring; { see who posted public anon }
anonprivread:acstring; { see who posted private anon }
anonpubpost:acstring; { post anon public messages }
anonprivpost:acstring; { post anon private messages }
seeunval:acstring; { see unvalidated files }
dlunval:acstring; { DL unvalidated files }
nodlratio:acstring; { no UL/DL ratio }
nopostratio:acstring; { no post/call ratio }
nofilepts:acstring; { no file points checking }
ulvalreq:acstring; { uploads require validation by SysOp }
normnetpost:acstring; { post NetMail messages }

fsecmd:string[40]; { full screen editor command }

res2:array[1..38] of byte; { RESERVED SPACE #2 }

maxprivpost:byte; { max private posts per call }
maxnetpost:byte; { max NetMail posts per call }
maxpubpost:byte; { max public posts per call }
maxchat:byte; { max chat-pages per call }

res3:array[1..4] of byte; { RESERVED SPACE #3 }

maxlogontries:byte; { tries allowed for PW's at logon }
bsdelay:byte; { backspacing delay }
sysopcolor:byte; { SysOp color in chat mode }
usercolor:byte; { user color in chat mode }
minspaceforpost:integer; { minimum K drive space left to post }
minspaceforupload:integer; { minimum K drive space left to upload }
backsysoplogs:byte; { days to keep SYSOP##.LOG }
wfcblanktime:byte; { minutes after which to blank WFC menu }
linelen:byte; { default video line length }
pagelen:byte; { default video page length }

res4:array[1..18] of byte; { RESERVED SPACE #4 }

specialfx:boolean; { WFC menu "special effects" }
logonlogoff:boolean; { enable LOGON.BAT & LOGOFF.BAT? }
allowalias:boolean; { allow alias's? (handles) }
phonepw:boolean; { use phone number password in logon? }
localsec:boolean; { is local security ON? }
localscreensec:boolean; { is local screen-security ON? }
globaltrap:boolean; { trap ALL USER'S activity? }
autochatopen:boolean; { does chat buffer auto-open? }
autominlogon:boolean; { Auto-Message in logon? }
bullinlogon:boolean; { bulletins in logon? }
lcallinlogon:boolean; { "Last Few Callers" list in logon? }
yourinfoinlogon:boolean; { "Your Info" in logon? }
multitask:boolean; { is BBS multitasking? }
offhooklocallogon:boolean; { take phone off-hook for local logons? }
forcevoting:boolean; { is manditory logon voting active? }
compressbases:boolean; { "compress" file/message base numbers? }
searchdup:boolean; { search for dup. filenames when UL? }
slogtype:byte; { SysOp log type: File/Printer/Both }
stripclog:boolean; { strip colors from SysOp log output? }
newapp:integer; { user# to send new user application to }
guestuser:integer; { user# of guest user account }
timeoutbell:integer; { minutes before time-out bell }
timeout:integer; { minutes before timeout (logoff) }
usewfclogo:boolean; { whether to use WFC menu logo }
useems:boolean; { attempt to use EMS for overlay }
usebios:boolean; { use ROM BIOS for local video output }
cgasnow:boolean; { suppress snow on CGA systems }

res5:array[1..16] of byte; { RESERVED SPACE #5 }

filearcinfo:array[1..maxarcs]
of filearcinforec; { archive specs }
filearccomment:array[1..3]
of string[80]; { BBS comments for archives }

uldlratio:boolean; { are UL/DL ratios active? }
fileptratio:boolean; { is auto file-pt compensation active? }
fileptcomp:byte; { file point compensation ratio }
fileptcompbasesize:byte; { file point "base compensation size" }
ulrefund:byte; { percent time refund for ULs }
tosysopdir:byte; { "To SysOp" file base }
validateallfiles:boolean; { validate ALL FILES automatically? }
remdevice:string[10]; { remote output device (GATEx,COMx,etc) }
maxintemp:integer; { max K allowed in TEMP\3\ }
minresume:integer; { min K to allow resume-later }
maxdbatch:byte; { max files in DL batch queue }
maxubatch:byte; { max files in UL batch queue }
unlistfp:byte; { # of file points for unlisted DLs }

res6:array[1..21] of byte; { RESERVED SPACE #6 }

newcredit:longint; { newuser NetMail credit }
autocredit:longint; { auto-validation NetMail credit }
newsl:byte; { newuser SL }
newdsl:byte; { newuser DSL }
newar:set of acrq; { newuser AR }
newac:set of uflags; { newuser AC }
newfp:integer; { newuser file points }
autosl:byte; { auto-validation SL }
autodsl:byte; { auto-validation DSL }
autoar:set of acrq; { auto-validation AR }
autoac:set of uflags; { auto-validation AC }

allstartmenu:string[8]; { logon menu to start ALL users on }

res7:array[1..22] of byte; { RESERVED SPACE #7 }

batchfileext:string[3]; { batch filename extension }
bulletprefix:string[8]; { default bulletins filename prefix }

res8:array[1..15] of byte; { RESERVED SPACE #8 }

timeallow:secrange; { time allowance }
callallow:secrange; { call allowance }
dlratio:secrange; { # ULs/# DLs ratios }
dlkratio:secrange; { DLk/ULk ratios }
postratio:secrange; { post/call ratios }

lastdate:string[8]; { last system date }
curwindow:byte; { type of SysOp window currently in use }
istopwindow:boolean; { is SysOp window on top of screen? }
callernum:longint; { total number of callers }
numusers:integer; { number of users }
todayzlog:zlogrec; { TODAY's ZLOG record }
postcredits:integer; { file points/upload credit }
{ compensation for posts }
rebootforevent:boolean; { reboot before events? }
watchdogdoor:boolean; { WatchDog active in doors? }
windowon:boolean; { is SysOp window on? }
swappath:string[79]; { swap shell path }
arcpath:string[40]; { archive utility path }
protpath:string[40]; { protocol driver path }

res9:array[1..35] of byte; { RESERVED SPACE #9 }

versionid:word; { version (eg $0270 = v2.7) }
end;

(*---------------------------------------------------------------------------*)

fstringrec= { STRING.DAT : User-definable strings }
record
ansiq:string[80]; { "Do you want ANSI? " string }
note:array[1..2] of string[80]; { Logon notes (L #1-2) }
lprompt:string[80]; { Logon prompt (L #3) }
echoc:char; { Echo char for PWs }
sysopin:string[80]; { "SysOp In" (inside SysOp hours)}
sysopout:string[80]; { "SysOp Out" }
engage:string[80]; { "Engage Chat" }
endchat:string[80]; { "End Chat" }
wait:string[80]; { "SysOp Working" }
pause:string[80]; { "Pause" }
entermsg1:string[80]; { "Enter Message" line #1 }
entermsg2:string[80]; { "Enter Message" line #2 }
newscan1:string[80]; { "NewScan begin" }
newscan2:string[80]; { "NewScan done" }
scanmessage:string[80]; { Message scanning prompt }
automsgt:string[80]; { Auto-Message title }
autom:char; { Auto-Message border characters }

shelldos1:string[80]; { " >> SysOp shelling to DOS ..." }
shelldos2:string[80]; { " ... thank you for waiting." }
chatcall1:string[80]; { "Paging SysOp, please wait..." }
chatcall2:string[80]; { ">>><*><<<" }
guestline:string[80]; { "To be a guest ... " }
namenotfound:string[80]; { "Name NOT found in user list." }
bulletinline:string[80]; { Bulletin line }
thanxvote:string[80]; { "Thanks for voting" }

listline:string[80]; { "List files - P to pause" }
newline:string[80]; { "Search for new files -" }
searchline:string[80]; { "Search all dirs for file mask" }
findline1:string[80]; { "Search for descriptions... " }
findline2:string[80]; { "Enter the string to search for.." }
downloadline:string[80]; { "Download - " }
uploadline:string[80]; { "Upload - " }
viewline:string[80]; { "View interior files - " }
nofilepts:string[80]; { "Insufficient file points." }
unbalance:string[80]; { "Your UL/DL ratio is unbalanced" }

pninfo:string[80]; { "P to Pause, N for next dir" }
gfnline1:string[80]; { "[Enter]=All files" }
gfnline2:string[80]; { "File mask: " }
batchadd:string[80]; { "File added to batch queue." }

quotestr1:string[50]; { message quote header #1 }
quotestr2:string[50]; { message quote header #2 }

mtaskline:string[80]; { "System Under Multi-Tasking..." }
end;

(*---------------------------------------------------------------------------*)

fbflags= { UPLOADS.DAT status flags }
(
fbnoratio, { if active }
fbunhidden, { whether *VISIBLE* to users w/o access }
fbdirdlpath, { if *.DIR file stored in DLPATH }
fbreserved1, { RESERVED FLAG #1 }
fbusegifspecs, { whether to use GifSpecs }
fbreserved2 { RESERVED FLAG #2 }
);

ulrec= { UPLOADS.DAT : File base records }
record
name:string[40]; { area description }
filename:string[12]; { filename + ".DIR" }
dlpath:string[40]; { download path }
ulpath:string[40]; { upload path }
maxfiles:integer; { max files allowed (1-2000) }
password:string[20]; { password required }
arctype:byte; { wanted archive type (1..max,0=inactive) }
cmttype:byte; { wanted comment type (1..3,0=inactive) }
res1:array[1..2] of byte; { RESERVED SPACE #1 }
fbstat:set of fbflags; { file base status vars }
acs:acstring; { access requirements }
ulacs:acstring; { upload requirements }
nameacs:acstring; { see-names requirements }
res2:array[1..10] of byte; { RESERVED SPACE #2 }
end;

(*---------------------------------------------------------------------------*)

userflags= { USER.LST status flags }
(
lockedout, { if locked out }
udeleted, { if deleted }
trapactivity, { if trapping users activity }
trapseperate, { if trap to seperate TRAP file }
chatauto, { if auto chat trapping }
chatseperate, { if seperate chat file to trap to }
slogseperate, { if seperate SysOp log }
clsmsg, { if clear-screen before message }
avadjust { if AVATAR color adjust }
);

userrec= { USER.LST : User account records }
record

{ configuration information }

name:string[36]; { user name }
realname:string[36]; { real name }
street:string[30]; { mailing address }
citystate:string[30]; { city, state }
zipcode:string[10]; { zipcode }
ph:string[12]; { user phone # }
bday:string[8]; { user birthdate }
sex:char; { user sex }

pw:string[20]; { user password }
firston:string[8]; { firston date }
laston:string[8]; { laston date }

computer:string[30]; { type of computer }
occupation:string[40]; { occupation }
wherebbs:string[40]; { BBS reference }
note:string[39]; { SysOp note }

lockedfile:string[8]; { lockout msg to print }
cols:clrs; { user colors }
linelen:byte; { line length (# cols) }
pagelen:byte; { page length (# rows) }
mpointer:longint; { pointer to entry in MACRO.LST }
userstartmenu:string[8]; { menu to start user out on }

flags:set of userflags; { flags (see above) }

{ system access information }

sl:byte; { SL }
dsl:byte; { DSL }
ac:set of uflags; { user flags }
ar:set of acrq; { AR flags }

{ message system information }

lastmsg:byte; { last message base # }
pubpost:integer; { # public posts }
privpost:integer; { # private posts }
netpost:integer; { # NetMail posts }
forusr:integer; { forward mail to user # }
credit:longint; { NetMail points (credit) }
debit:longint; { NetMail points (debit) }
mhiread:mhireadr; { NewScan high message pointers }
mzscan:mzscanr; { NewScan message bases }
boardsysop:array[1..5] of byte; { msg board SysOp }

{ file system information }

lastfil:byte; { last file base # }
uploads:integer; { # of ULs }
downloads:integer; { # of DLs }
uk:longint; { amount ULed (kilobytes) }
dk:longint; { amount DLed (kilobytes) }
filepoints:integer; { # of file points }
flistopt:byte; { type of file list type to use }
fzscan:fzscanr; { NewScan file bases }

{ system usage information }

ttimeon:longint; { total mins spent on }
loggedon:integer; { # times logged on }
tltoday:integer; { # min left today }
ontoday:byte; { # times on today }
illegal:byte; { # illegal logon attempts }

{ miscellaneous information }

vote:array[1..20] of byte; { voting data }
timebank:integer; { # mins in Time Bank }
timebankadd:integer; { time added to timebank TODAY }
end;

(*---------------------------------------------------------------------------*)

verbrec= { VERBOSE.DAT : Verbose descriptions }
record
descr:array[1..4] of string[50];
end;

(*---------------------------------------------------------------------------*)

vdatar= { VOTING.DAT : Voting records }
record
question:string[79]; { voting question }
numa:integer; { number of user's who have answered }
answ:array[0..numvoteas] of
record
ans:string[40]; { answer description }
numres:integer; { # user's who picked this answer }
end;
end;



  3 Responses to “Category : BBS Programs+Doors
Archive   : TG27.ZIP
Filename : TELEGARD.INC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/