959 lines
24 KiB
ObjectPascal
959 lines
24 KiB
ObjectPascal
|
program init;
|
|||
|
|
|||
|
{$A+,B+,D-,E+,F+,I+,L+,N-,O+,R-,S+,V-}
|
|||
|
{$M 50000,0,90000} { Declared here suffices for all Units as well! }
|
|||
|
|
|||
|
uses
|
|||
|
crt,dos,
|
|||
|
myio,
|
|||
|
common;
|
|||
|
|
|||
|
{$I rec16e1.pas}
|
|||
|
|
|||
|
var
|
|||
|
systatf:file of systatrec;
|
|||
|
systat:systatrec;
|
|||
|
uf:file of userrec;
|
|||
|
u:userrec;
|
|||
|
sf:file of smalrec;
|
|||
|
sr:smalrec;
|
|||
|
bf:file of boardrec;
|
|||
|
br:boardrec;
|
|||
|
uff:file of ulrec;
|
|||
|
ufr:ulrec;
|
|||
|
xp:file of expro;
|
|||
|
xpr:expro;
|
|||
|
zf:file of zlogt;
|
|||
|
zfr:zlogt;
|
|||
|
mailfile:file of mailrec;
|
|||
|
mr:mailrec;
|
|||
|
lcallf:file of lcallers;
|
|||
|
lcall:lcallers;
|
|||
|
tfilf:file of gft;
|
|||
|
tfil:gft;
|
|||
|
verbf:file of verbrec;
|
|||
|
vr:verbrec;
|
|||
|
vdata:file of vdatar;
|
|||
|
vd:vdatar;
|
|||
|
smf:file of smr;
|
|||
|
sm:smr;
|
|||
|
msr:messagerec;
|
|||
|
ulff:file of ulfrec;
|
|||
|
ulffr:ulfrec;
|
|||
|
evf:file of eventrec;
|
|||
|
evr:eventrec;
|
|||
|
macrf:file of macrorec;
|
|||
|
macr:macrorec;
|
|||
|
|
|||
|
curdir:string;
|
|||
|
path:array[1..7] of string;
|
|||
|
found:boolean;
|
|||
|
dirinfo:searchrec;
|
|||
|
i,j,k:integer;
|
|||
|
c:char;
|
|||
|
|
|||
|
function yn:boolean;
|
|||
|
var c:char;
|
|||
|
b:boolean;
|
|||
|
begin
|
|||
|
repeat c:=upcase(readkey) until c in ['Y','N',^M];
|
|||
|
case c of 'Y':b:=TRUE; else b:=FALSE; end;
|
|||
|
write(syn(b));
|
|||
|
yn:=b;
|
|||
|
end;
|
|||
|
|
|||
|
function pynq(s:string):boolean;
|
|||
|
begin
|
|||
|
textcolor(4); write(s);
|
|||
|
textcolor(11); pynq:=yn;
|
|||
|
end;
|
|||
|
|
|||
|
procedure prt(s:string);
|
|||
|
begin
|
|||
|
textcolor(9); write(s);
|
|||
|
end;
|
|||
|
|
|||
|
procedure star(s:string);
|
|||
|
begin
|
|||
|
textcolor(9); write('<27> ');
|
|||
|
textcolor(11); writeln(s);
|
|||
|
end;
|
|||
|
|
|||
|
procedure ttl(s:string);
|
|||
|
begin
|
|||
|
writeln;
|
|||
|
textcolor(9); write('<27><>[');
|
|||
|
textbackground(1); textcolor(15);
|
|||
|
write(' '+s+' ');
|
|||
|
textbackground(0); textcolor(9);
|
|||
|
write(']');
|
|||
|
repeat write('<27>') until wherex=80;
|
|||
|
writeln;
|
|||
|
end;
|
|||
|
|
|||
|
procedure movefile(srcname,destpath:string);
|
|||
|
var buffer:array[1..16384] of byte;
|
|||
|
dfs,nrec:integer;
|
|||
|
src,dest:file;
|
|||
|
|
|||
|
procedure dodate;
|
|||
|
var r:registers;
|
|||
|
od,ot,ha:integer;
|
|||
|
begin
|
|||
|
srcname:=srcname+#0;
|
|||
|
destpath:=destpath+#0;
|
|||
|
with r do begin
|
|||
|
ax:=$3d00; ds:=seg(srcname[1]); dx:=ofs(srcname[1]); msdos(dos.registers(r));
|
|||
|
ha:=ax; bx:=ha; ax:=$5700; msdos(dos.registers(r));
|
|||
|
od:=dx; ot:=cx; bx:=ha; ax:=$3e00; msdos(dos.registers(r));
|
|||
|
ax:=$3d02; ds:=seg(destpath[1]); dx:=ofs(destpath[1]); msdos(dos.registers(r));
|
|||
|
ha:=ax; bx:=ha; ax:=$5701; cx:=ot; dx:=od; msdos(dos.registers(r));
|
|||
|
ax:=$3e00; bx:=ha; msdos(dos.registers(r));
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
begin
|
|||
|
star('Moving "'+srcname+'" to "'+destpath+'"');
|
|||
|
destpath:=destpath+srcname;
|
|||
|
assign(src,srcname);
|
|||
|
{$I-} reset(src,1); {$I+}
|
|||
|
if ioresult<>0 then begin
|
|||
|
writeln;
|
|||
|
star('"'+srcname+'": File not found.'^G^G);
|
|||
|
halt(1);
|
|||
|
end else begin
|
|||
|
dfs:=freek(exdrv(destpath));
|
|||
|
|
|||
|
{rcg11172000 don't have LONGfilesize()...}
|
|||
|
{if trunc(longfilesize(src)/1024.0)+1>=dfs then begin}
|
|||
|
if trunc(filesize(src)/1024.0)+1>=dfs then begin
|
|||
|
writeln;
|
|||
|
star('"'+srcname+'": Disk full.');
|
|||
|
halt(1);
|
|||
|
end else begin
|
|||
|
assign(dest,destpath); rewrite(dest,1);
|
|||
|
repeat
|
|||
|
blockread(src,buffer,16384,nrec);
|
|||
|
blockwrite(dest,buffer,nrec);
|
|||
|
until (nrec<16384);
|
|||
|
close(dest);
|
|||
|
close(src);
|
|||
|
dodate;
|
|||
|
erase(src);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure ffile(fn:string);
|
|||
|
begin
|
|||
|
findfirst(fn,anyfile,dirinfo);
|
|||
|
found:=(doserror=0);
|
|||
|
end;
|
|||
|
|
|||
|
procedure nfile;
|
|||
|
begin
|
|||
|
findnext(dirinfo);
|
|||
|
found:=(doserror=0);
|
|||
|
end;
|
|||
|
|
|||
|
procedure movefiles(srcname,destpath:string);
|
|||
|
begin
|
|||
|
ffile(srcname);
|
|||
|
while found do begin
|
|||
|
movefile(dirinfo.name,destpath);
|
|||
|
nfile;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
function make_path(s:string):boolean;
|
|||
|
begin
|
|||
|
while (copy(s,length(s),1)='\') do s:=copy(s,1,length(s)-1);
|
|||
|
make_path:=TRUE;
|
|||
|
{$I-} mkdir(fexpand(s)); {$I+}
|
|||
|
if (ioresult<>0) then begin
|
|||
|
writeln;
|
|||
|
star('Error creating directory "'+fexpand(s)+'"'^G^G);
|
|||
|
make_path:=FALSE;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_paths;
|
|||
|
var s:string;
|
|||
|
begin
|
|||
|
for i:=1 to 7 do begin
|
|||
|
while copy(path[i],length(path[i]),1)='\' do
|
|||
|
path[i]:=copy(path[i],1,length(path[i])-1);
|
|||
|
case i of 1:s:='GFILES'; 2:s:='MSGS'; 3:s:='MENUS'; 4:s:='TFILES';
|
|||
|
5:s:='AFILES'; 6:s:='TRAP'; 7:s:='TEMP'; end;
|
|||
|
star(s+' path ("'+fexpand(path[i])+'")');
|
|||
|
if (not make_path(path[i])) then halt(1);
|
|||
|
path[i]:=path[i]+'\';
|
|||
|
end;
|
|||
|
star('Creating EMAIL and GENERAL message paths');
|
|||
|
if (not make_path(path[2]+'EMAIL\')) then halt(1);
|
|||
|
if (not make_path(path[2]+'GENERAL\')) then halt(1);
|
|||
|
star('Creating SYSOP and MISC file paths');
|
|||
|
if (not make_path('DLS\')) then halt(1);
|
|||
|
if (not make_path('DLS\SYSOP')) then halt(1);
|
|||
|
if (not make_path('DLS\MISC')) then halt(1);
|
|||
|
star('Creating TEMP 1, 2, and 3 file paths');
|
|||
|
if (not make_path(path[7]+'1\')) then halt(1);
|
|||
|
if (not make_path(path[7]+'2\')) then halt(1);
|
|||
|
if (not make_path(path[7]+'3\')) then halt(1);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_status_dat;
|
|||
|
begin
|
|||
|
with systat do begin
|
|||
|
bbsname:='Telegard BBS';
|
|||
|
bbsphone:='000-000-0000';
|
|||
|
sysopfirst:='System';
|
|||
|
sysoplast:='Operator';
|
|||
|
boardpw:='';
|
|||
|
sysoppw:='SYSOP';
|
|||
|
bbspw:='MATRIX';
|
|||
|
closedsystem:=FALSE;
|
|||
|
matrix:=FALSE;
|
|||
|
alias:=TRUE;
|
|||
|
clearmsg:=TRUE;
|
|||
|
fone:=TRUE;
|
|||
|
multitask:=FALSE;
|
|||
|
bwindow:=TRUE;
|
|||
|
lock300:=FALSE;
|
|||
|
wantquote:=TRUE; {* /// *}
|
|||
|
mcimsg:=TRUE; {* /// *}
|
|||
|
special:=TRUE;
|
|||
|
localsec:=FALSE;
|
|||
|
localscreensec:=FALSE;
|
|||
|
autominlogon:=TRUE;
|
|||
|
bullinlogon:=TRUE;
|
|||
|
lcallinlogon:=TRUE;
|
|||
|
autochatopen:=TRUE;
|
|||
|
yourinfoinlogon:=TRUE;
|
|||
|
globaltrap:=FALSE;
|
|||
|
snowchecking:=FALSE;
|
|||
|
forcevoting:=FALSE;
|
|||
|
offhooklocallogon:=TRUE;
|
|||
|
|
|||
|
with hmsg do begin ltr:='A'; number:=-32766; ext:=1; end;
|
|||
|
{* A-32767.1 is the "Greetings from Telegard" message *}
|
|||
|
tfiledate:='04/21/89';
|
|||
|
lastdate:='04/21/89';
|
|||
|
users:=1;
|
|||
|
callernum:=0;
|
|||
|
activetoday:=0;
|
|||
|
callstoday:=0;
|
|||
|
msgposttoday:=0;
|
|||
|
emailtoday:=0;
|
|||
|
fbacktoday:=0;
|
|||
|
uptoday:=0;
|
|||
|
newuk:=0;
|
|||
|
newusertoday:=0;
|
|||
|
dntoday:=0;
|
|||
|
newdk:=0;
|
|||
|
gfilepath:=path[1];
|
|||
|
pmsgpath:=path[2]+'EMAIL\';
|
|||
|
menupath:=path[3];
|
|||
|
tfilepath:=path[4];
|
|||
|
afilepath:=path[5];
|
|||
|
trappath:=path[6];
|
|||
|
temppath:=path[7];
|
|||
|
lowtime:=0; hitime:=0;
|
|||
|
dllowtime:=0; dlhitime:=0;
|
|||
|
b300lowtime:=0; b300hitime:=0;
|
|||
|
b300dllowtime:=0; b300dlhitime:=0;
|
|||
|
app:=1;
|
|||
|
guestuser:=-1;
|
|||
|
timeoutbell:=2;
|
|||
|
timeout:=5;
|
|||
|
sysopcolor:=4; usercolor:=3;
|
|||
|
bsdelay:=20;
|
|||
|
tosysopdir:=0;
|
|||
|
comport:=1;
|
|||
|
maxbaud:=1200;
|
|||
|
init:='ATH0Q0V0E0M0X1S0=0S2=1S10=40&C1';
|
|||
|
hangup:='ATH';
|
|||
|
offhook:='ATH1';
|
|||
|
answer:='ATA';
|
|||
|
for i:=1 to 2 do
|
|||
|
for j:=0 to 4 do begin
|
|||
|
case i of
|
|||
|
1:case j of 0:k:=1; 1:k:=5; 2:k:=10; 3:k:=0; 4:k:=13; end;
|
|||
|
2:case j of 0:k:=0; 1:k:=15; 2:k:=16; 3:k:=0; 4:k:=17; end;
|
|||
|
end;
|
|||
|
resultcode[i][j]:=k;
|
|||
|
end;
|
|||
|
nocarrier:=3;
|
|||
|
nodialtone:=6;
|
|||
|
busy:=7;
|
|||
|
nocallinittime:=30;
|
|||
|
tries:=4;
|
|||
|
newsl:=20; newdsl:=20;
|
|||
|
newar:=[];
|
|||
|
newac:=[rpostan,rvoting];
|
|||
|
newfp:=0;
|
|||
|
autosl:=50; autodsl:=50;
|
|||
|
autoar:=[];
|
|||
|
autoac:=[];
|
|||
|
ansiq:='Display ANSI logon? ';
|
|||
|
engage:='@M^3The SysOp brings you into chat!';
|
|||
|
endchat:='^3The SysOp returns you to the BBS....@M';
|
|||
|
sysopin:='^3The SysOp is probably around!';
|
|||
|
sysopout:='^3The SysOp is NOT here, or doesn''t want to chat';
|
|||
|
note[1]:='Enter your Telegard NAME or USER NUMBER';
|
|||
|
note[2]:='* NEW USERS, enter "NEW" *';
|
|||
|
lprompt:='Logon : ';
|
|||
|
wait:='^3{-^9Please Wait^3-}';
|
|||
|
pause:='(* pause *)';
|
|||
|
msg1:='Enter message now. You have ^3@X^1 lines maximum.';
|
|||
|
msg2:='Enter ^3/S^1 to save. ^3/?^1 for a list of commands.';
|
|||
|
new1:='^7[^5@Y ^7- ^5@W msgs^7] ^4NewScan began.@M';
|
|||
|
new2:='^7[^5@Y ^7- ^5@W msgs^7] ^4NewScan complete.@M';
|
|||
|
read:='^3[^1@Y^3]@M^5[@U] ^4Read (1-@W,<CR>,T,Q,P,A,R,B,W,D) : ';
|
|||
|
auto1:='^5AutoMessage by: ';
|
|||
|
autom:='-';
|
|||
|
echoc:='X';
|
|||
|
|
|||
|
uldlratio:=TRUE;
|
|||
|
fileptratio:=FALSE;
|
|||
|
fileptcomp:=3;
|
|||
|
fileptcompbasesize:=10;
|
|||
|
|
|||
|
for i:=0 to 255 do begin
|
|||
|
case i of 0..9:k:=1; 10..19:k:=10; 20..29:k:=20; 30..39:k:=40;
|
|||
|
40..49:k:=50; 50..59:k:=80; 60..69:k:=90; 70..79:k:=100;
|
|||
|
80..89:k:=110; 90..99:k:=120; 100..199:k:=130;
|
|||
|
200..239:k:=150; 240..249:k:=200; 250:k:=250;
|
|||
|
251..255:k:=6000; end; timeallow[i]:=k;
|
|||
|
case i of 200..255:k:=20; 100..199:k:=15; 50..99:k:=10;
|
|||
|
30..49:k:=5; 20..29:k:=3; else k:=1; end; callallow[i]:=k;
|
|||
|
case i of 60..255:k:=5; 20..59:k:=3; else k:=2; end; dlratio[i]:=k;
|
|||
|
case i of 60..255:k:=10; 20..59:k:=5; else k:=2; end; dlkratio[i]:=k;
|
|||
|
postratio[i]:=100;
|
|||
|
end;
|
|||
|
|
|||
|
normpubpost:=11; anonpubpost:=100; anonpubread:=100;
|
|||
|
normprivpost:=11; anonprivpost:=100; anonprivread:=100;
|
|||
|
maxpubpost:=20; maxprivpost:=20;
|
|||
|
maxfback:=5; maxchat:=3;
|
|||
|
maxwaiting:=15; csmaxwaiting:=50;
|
|||
|
maxlines:=120; csmaxlines:=160;
|
|||
|
|
|||
|
sop:=255; csop:=250;
|
|||
|
msop:=199; fsop:=230;
|
|||
|
spw:=250; seepw:=255;
|
|||
|
nodlratio:=255; nopostratio:=200;
|
|||
|
nofilepts:=255; seeunval:=50;
|
|||
|
dlunval:=230; ulrefund:=100;
|
|||
|
|
|||
|
eventwarningtime:=60;
|
|||
|
filearccomment[1]:=bbsname+' '+bbsphone;
|
|||
|
filearccomment[2]:=''; filearccomment[3]:='';
|
|||
|
|
|||
|
for i:=1 to 5 do
|
|||
|
with filearcinfo[i] do
|
|||
|
case i of
|
|||
|
1:begin
|
|||
|
active:=TRUE;
|
|||
|
ext:='ZIP';
|
|||
|
listline:='/1';
|
|||
|
arcline:='PKZIP -aeb4 @F @I';
|
|||
|
unarcline:='PKUNZIP @F @I';
|
|||
|
testline:='PKUNZIP -t @F';
|
|||
|
cmtline:='PKZIP -z @F';
|
|||
|
succlevel:=0;
|
|||
|
end;
|
|||
|
2:begin
|
|||
|
active:=FALSE;
|
|||
|
ext:='ARC';
|
|||
|
listline:='/2';
|
|||
|
arcline:='PKPAK a @F @I';
|
|||
|
unarcline:='PKUNPAK @F @I';
|
|||
|
testline:='PKUNPAK -t @F';
|
|||
|
cmtline:='PKPAK x @F';
|
|||
|
succlevel:=0;
|
|||
|
end;
|
|||
|
3:begin
|
|||
|
active:=FALSE;
|
|||
|
ext:='PAK';
|
|||
|
listline:='/2';
|
|||
|
arcline:='PAK a @F @I';
|
|||
|
unarcline:='PAK e @F @I';
|
|||
|
testline:='';
|
|||
|
cmtline:='';
|
|||
|
succlevel:=-1;
|
|||
|
end;
|
|||
|
4:begin
|
|||
|
active:=FALSE;
|
|||
|
ext:='LZH';
|
|||
|
listline:='/4';
|
|||
|
arcline:='LHARC a @F @I';
|
|||
|
unarcline:='LHARC e @F @I';
|
|||
|
testline:='';
|
|||
|
cmtline:='';
|
|||
|
succlevel:=0;
|
|||
|
end;
|
|||
|
5:begin
|
|||
|
active:=FALSE;
|
|||
|
ext:='ZOO';
|
|||
|
listline:='/3';
|
|||
|
arcline:='ZOO aP: @F @I';
|
|||
|
unarcline:='ZOO x @F @I';
|
|||
|
testline:='ZOO xNd @F';
|
|||
|
cmtline:='ZOO cA @F';
|
|||
|
succlevel:=0;
|
|||
|
end;
|
|||
|
end;
|
|||
|
filearcinfo[6].ext:='';
|
|||
|
|
|||
|
minspaceforpost:=10;
|
|||
|
minspaceforupload:=100;
|
|||
|
postcredits:=0; {* not implemented *}
|
|||
|
ulvalreq:=0; {* not implemented *}
|
|||
|
moveline:='';
|
|||
|
backsysoplogs:=7;
|
|||
|
compressbases:=FALSE;
|
|||
|
|
|||
|
for i:=1 to 165 do res[i]:=0;
|
|||
|
end;
|
|||
|
assign(systatf,'status.dat');
|
|||
|
rewrite(systatf); write(systatf,systat); close(systatf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_user_lst;
|
|||
|
const dcols:clrs=((15,7,7,15,15,15,112,7,143,7),(15,3,1,11,9,14,31,4,140,10));
|
|||
|
begin
|
|||
|
with u do begin
|
|||
|
name:='SYSOP';
|
|||
|
realname:='System Operator';
|
|||
|
pw:='SYSOP';
|
|||
|
ph:='000-000-0000';
|
|||
|
bday:='00/00/00';
|
|||
|
firston:='04/21/89';
|
|||
|
laston:='04/21/89';
|
|||
|
street:='';
|
|||
|
citystate:='';
|
|||
|
zipcode:='';
|
|||
|
computer:='IBM Compatible';
|
|||
|
occupation:='';
|
|||
|
wherebbs:='';
|
|||
|
note:='Change these stats to yours.';
|
|||
|
lockedout:=FALSE;
|
|||
|
deleted:=FALSE;
|
|||
|
lockedfile:='';
|
|||
|
ac:=[onekey,wordwrap,pause,novice,ansi,color,
|
|||
|
smw, {* short message waiting, in SHORTMSG.DAT *}
|
|||
|
fnodlratio,fnopostratio,fnofilepts,fnodeletion];
|
|||
|
ar:=[]; for c:='A' to 'Z' do ar:=ar+[c];
|
|||
|
with qscan[1] do begin ltr:='A'; number:=-32767; ext:=1; end;
|
|||
|
for i:=2 to maxboards do qscan[i]:=qscan[1];
|
|||
|
for i:=1 to maxboards do qscn[i]:=TRUE;
|
|||
|
dlnscn:=[];
|
|||
|
for i:=0 to maxuboards do dlnscn:=dlnscn+[i];
|
|||
|
for i:=1 to 20 do vote[i]:=0;
|
|||
|
sex:='M';
|
|||
|
ttimeon:=0.0;
|
|||
|
uk:=0.0;
|
|||
|
dk:=0.0;
|
|||
|
uploads:=0;
|
|||
|
downloads:=0;
|
|||
|
loggedon:=0;
|
|||
|
tltoday:=600;
|
|||
|
msgpost:=0;
|
|||
|
emailsent:=0;
|
|||
|
feedback:=0;
|
|||
|
forusr:=0;
|
|||
|
filepoints:=0;
|
|||
|
waiting:=1; {* A-32767.1 -- "Greetings from Telegard" message *}
|
|||
|
linelen:=80;
|
|||
|
pagelen:=23; {* to make room for SysOp window when on.. *}
|
|||
|
ontoday:=0;
|
|||
|
illegal:=0;
|
|||
|
sl:=255;
|
|||
|
dsl:=255;
|
|||
|
cols:=dcols;
|
|||
|
lastmsg:=1;
|
|||
|
lastfil:=0;
|
|||
|
credit:=0.0;
|
|||
|
timebank:=0;
|
|||
|
for i:=1 to 5 do boardsysop[i]:=255;
|
|||
|
|
|||
|
trapactivity:=FALSE;
|
|||
|
trapseperate:=FALSE;
|
|||
|
|
|||
|
{* NEW STUFF *}
|
|||
|
|
|||
|
timebankadd:=0;
|
|||
|
mpointer:=-1;
|
|||
|
|
|||
|
{* NEW STUFF *ENDS* *}
|
|||
|
|
|||
|
for i:=1 to 70 do res[i]:=0;
|
|||
|
end;
|
|||
|
assign(uf,'user.lst');
|
|||
|
rewrite(uf);
|
|||
|
seek(uf,0); write(uf,u);
|
|||
|
seek(uf,1); write(uf,u);
|
|||
|
close(uf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_names_lst;
|
|||
|
begin
|
|||
|
with sr do begin
|
|||
|
name:='SYSOP';
|
|||
|
number:=1;
|
|||
|
end;
|
|||
|
assign(sf,'names.lst');
|
|||
|
rewrite(sf);
|
|||
|
seek(sf,0); write(sf,sr);
|
|||
|
seek(sf,1); write(sf,sr);
|
|||
|
close(sf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_macro_lst;
|
|||
|
var i:integer;
|
|||
|
begin
|
|||
|
with macr do
|
|||
|
for i:=1 to 4 do macro[i]:='';
|
|||
|
assign(macrf,'macro.lst');
|
|||
|
rewrite(macrf);
|
|||
|
seek(macrf,0); write(macrf,macr);
|
|||
|
close(macrf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_boards_dat;
|
|||
|
begin
|
|||
|
with br do begin
|
|||
|
name:='General Messages';
|
|||
|
filename:='GENERAL';
|
|||
|
msgpath:=path[2]+'GENERAL\';
|
|||
|
sl:=30;
|
|||
|
maxmsgs:=50;
|
|||
|
password:='';
|
|||
|
anonymous:=no;
|
|||
|
ar:='@';
|
|||
|
postsl:=30;
|
|||
|
end;
|
|||
|
assign(bf,'boards.dat');
|
|||
|
rewrite(bf);
|
|||
|
seek(bf,0); write(bf,br);
|
|||
|
close(bf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_uploads_dat;
|
|||
|
begin
|
|||
|
assign(uff,'uploads.dat');
|
|||
|
rewrite(uff);
|
|||
|
with ufr do begin
|
|||
|
name:='SysOp directory';
|
|||
|
filename:='SYSOP';
|
|||
|
dlpath:=curdir+'\DLS\SYSOP\';
|
|||
|
noratio:=FALSE;
|
|||
|
sl:=255;
|
|||
|
dsl:=255;
|
|||
|
namesl:=255;
|
|||
|
ar:='@';
|
|||
|
maxfiles:=999;
|
|||
|
agereq:=1;
|
|||
|
password:='';
|
|||
|
arctype:=1;
|
|||
|
cmttype:=1;
|
|||
|
unhidden:=FALSE;
|
|||
|
end;
|
|||
|
write(uff,ufr);
|
|||
|
with ufr do begin
|
|||
|
name:='Miscellaneous';
|
|||
|
filename:='MISC';
|
|||
|
dlpath:=curdir+'\DLS\MISC\';
|
|||
|
noratio:=FALSE;
|
|||
|
sl:=30;
|
|||
|
dsl:=30;
|
|||
|
namesl:=10;
|
|||
|
ar:='@';
|
|||
|
maxfiles:=999;
|
|||
|
agereq:=1;
|
|||
|
password:='';
|
|||
|
arctype:=1;
|
|||
|
cmttype:=1;
|
|||
|
unhidden:=TRUE;
|
|||
|
end;
|
|||
|
write(uff,ufr); close(uff);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_protocol_dat;
|
|||
|
begin
|
|||
|
assign(xp,'protocol.dat');
|
|||
|
rewrite(xp);
|
|||
|
for i:=1 to 11 do
|
|||
|
with xpr do begin
|
|||
|
rcmd:=''; scmd:='';
|
|||
|
rul:=FALSE; rdl:=FALSE;
|
|||
|
sl:=0; dsl:=0; ar:='@';
|
|||
|
xferok:=-1;
|
|||
|
if (i in [1..5]) then active:=TRUE else active:=FALSE;
|
|||
|
case i of
|
|||
|
1:begin descr:='Ascii'; key:='A'; ptype:=1; rul:=TRUE; end;
|
|||
|
2:begin descr:='Xmodem'; key:='X'; ptype:=2; end;
|
|||
|
3:begin descr:='Xmodem CRC'; key:='C'; ptype:=3; end;
|
|||
|
4:begin descr:='Ymodem'; key:='Y'; ptype:=4; end;
|
|||
|
5:begin descr:='Ymodem'; key:='Y'; ptype:=5; rul:=TRUE; end;
|
|||
|
6:begin
|
|||
|
descr:='Zmodem';
|
|||
|
key:='Z';
|
|||
|
ptype:=6;
|
|||
|
rcmd:='dsz port @2 speed @1 rz @3';
|
|||
|
scmd:='dsz port @2 speed @1 sz @3';
|
|||
|
xferok:=0;
|
|||
|
end;
|
|||
|
7:begin
|
|||
|
descr:='Zmodem';
|
|||
|
key:='Z';
|
|||
|
ptype:=7;
|
|||
|
rcmd:='dsz port @2 speed @1 rz';
|
|||
|
scmd:='dsz port @2 speed @1 @@4';
|
|||
|
xferok:=0;
|
|||
|
end;
|
|||
|
8:begin
|
|||
|
descr:='Zmodem '+#3#5+'Recovery';
|
|||
|
key:='Z';
|
|||
|
ptype:=8;
|
|||
|
rcmd:='dsz port @2 speed @1 -r rz @3';
|
|||
|
scmd:='---';
|
|||
|
xferok:=0;
|
|||
|
rdl:=TRUE;
|
|||
|
end;
|
|||
|
9:begin
|
|||
|
descr:='Lynx';
|
|||
|
key:='L';
|
|||
|
ptype:=6;
|
|||
|
rcmd:='lynx R /@1 /@2 @3';
|
|||
|
scmd:='lynx S /@1 /@2 @3';
|
|||
|
xferok:=0;
|
|||
|
end;
|
|||
|
10:begin
|
|||
|
descr:='Lynx';
|
|||
|
key:='L';
|
|||
|
ptype:=7;
|
|||
|
rcmd:='lynx R /@1 /@2';
|
|||
|
scmd:='lynx S /@1 /@2 @3';
|
|||
|
xferok:=0;
|
|||
|
end;
|
|||
|
11:begin
|
|||
|
descr:='Lynx '+#3#5+'Recovery';
|
|||
|
key:='L';
|
|||
|
ptype:=8;
|
|||
|
rcmd:='lynx R /@1 /@2';
|
|||
|
scmd:='---';
|
|||
|
xferok:=0;
|
|||
|
rdl:=TRUE;
|
|||
|
end;
|
|||
|
12:begin
|
|||
|
descr:='Jmodem';
|
|||
|
key:='J';
|
|||
|
ptype:=6;
|
|||
|
rcmd:='jmodem R@2 @3';
|
|||
|
scmd:='jmodem S@2 @3';
|
|||
|
xferok:=-1;
|
|||
|
end;
|
|||
|
13:begin
|
|||
|
descr:='Megalink';
|
|||
|
key:='M';
|
|||
|
ptype:=6;
|
|||
|
rcmd:='mlink PORT @2 SPEED @1 RM @3';
|
|||
|
scmd:='mlink PORT @2 SPEED @1 SM @3';
|
|||
|
xferok:=0;
|
|||
|
end;
|
|||
|
end;
|
|||
|
write(xp,xpr);
|
|||
|
end;
|
|||
|
close(xp);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_zlog_dat;
|
|||
|
begin
|
|||
|
with zfr do begin
|
|||
|
date:='04/21/89';
|
|||
|
active:=0;
|
|||
|
calls:=0;
|
|||
|
post:=0;
|
|||
|
email:=0;
|
|||
|
fback:=0;
|
|||
|
up:=0;
|
|||
|
end;
|
|||
|
assign(zf,'zlog.dat');
|
|||
|
rewrite(zf); write(zf,zfr);
|
|||
|
zfr.date:='';
|
|||
|
for i:=1 to 96 do write(zf,zfr);
|
|||
|
close(zf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_email_dat;
|
|||
|
begin
|
|||
|
with mr do begin
|
|||
|
title:='Greetings from Telegard';
|
|||
|
from:=1; destin:=1;
|
|||
|
with msg do begin ltr:='A'; number:=-32767; ext:=1; end;
|
|||
|
mage:=255;
|
|||
|
end;
|
|||
|
mr.date:=daynum(date);
|
|||
|
assign(mailfile,'email.dat');
|
|||
|
rewrite(mailfile); write(mailfile,mr); close(mailfile);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_events_dat;
|
|||
|
begin
|
|||
|
with evr do begin
|
|||
|
active:=FALSE;
|
|||
|
description:='A NEW Telegard Event';
|
|||
|
etype:='D';
|
|||
|
execdata:='event.bat';
|
|||
|
busytime:=5;
|
|||
|
exectime:=0;
|
|||
|
busyduring:=TRUE;
|
|||
|
duration:=1;
|
|||
|
execdays:=0;
|
|||
|
monthly:=FALSE;
|
|||
|
end;
|
|||
|
assign(evf,'events.dat');
|
|||
|
rewrite(evf); write(evf,evr); close(evf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_laston_dat;
|
|||
|
begin
|
|||
|
with lcall do begin
|
|||
|
callernum:=0;
|
|||
|
name:='Eric Oman';
|
|||
|
number:=1;
|
|||
|
citystate:='Grosse Pointe Woods, Michigan';
|
|||
|
end;
|
|||
|
assign(lcallf,'laston.dat');
|
|||
|
rewrite(lcallf); write(lcallf,lcall);
|
|||
|
lcall.callernum:=-1;
|
|||
|
for i:=1 to 9 do write(lcallf,lcall);
|
|||
|
close(lcallf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_gfiles_dat;
|
|||
|
begin
|
|||
|
assign(tfilf,'gfiles.dat');
|
|||
|
rewrite(tfilf);
|
|||
|
for i:=0 to 1 do begin
|
|||
|
with tfil do
|
|||
|
case i of
|
|||
|
0:begin
|
|||
|
num:=1; {* 1 entry total *}
|
|||
|
title:='';
|
|||
|
filen:='';
|
|||
|
ar:='@';
|
|||
|
gdate:='04/21/89';
|
|||
|
gdaten:=daynum(gdate);
|
|||
|
end;
|
|||
|
1:begin
|
|||
|
num:=0; {* SL level *}
|
|||
|
title:='Miscellaneous';
|
|||
|
filen:=#1#0#0#0#0#0;
|
|||
|
ar:='@';
|
|||
|
gdate:='04/21/89';
|
|||
|
gdaten:=daynum(gdate);
|
|||
|
end;
|
|||
|
end;
|
|||
|
write(tfilf,tfil);
|
|||
|
end;
|
|||
|
close(tfilf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_verbose_dat;
|
|||
|
begin
|
|||
|
with vr do
|
|||
|
for i:=1 to 4 do descr[i]:='';
|
|||
|
assign(verbf,'verbose.dat');
|
|||
|
rewrite(verbf); write(verbf,vr); close(verbf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_voting_dat;
|
|||
|
begin
|
|||
|
with vd do begin
|
|||
|
question:='<< No Question >>';
|
|||
|
numa:=0;
|
|||
|
for i:=0 to 9 do
|
|||
|
with answ[i] do begin
|
|||
|
if (i<>0) then ans:='Selection '+chr(i+48) else ans:='No Comment';
|
|||
|
numres:=0;
|
|||
|
end;
|
|||
|
end;
|
|||
|
assign(vdata,'voting.dat');
|
|||
|
rewrite(vdata);
|
|||
|
for i:=0 to 19 do write(vdata,vd);
|
|||
|
close(vdata);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_shortmsg_dat;
|
|||
|
begin
|
|||
|
with sm do begin
|
|||
|
msg:='Telegard files initialized on '+date+' '+time+'.';
|
|||
|
destin:=1;
|
|||
|
end;
|
|||
|
assign(smf,'shortmsg.dat');
|
|||
|
rewrite(smf); write(smf,sm); close(smf);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_mboard(s:string);
|
|||
|
var f:file;
|
|||
|
begin
|
|||
|
msr.message.number:=0;
|
|||
|
assign(f,s+'.BRD');
|
|||
|
rewrite(f,sizeof(messagerec)); blockwrite(f,msr,1); close(f);
|
|||
|
end;
|
|||
|
|
|||
|
procedure make_fboard(s:string);
|
|||
|
begin
|
|||
|
ulffr.blocks:=0;
|
|||
|
assign(ulff,s+'.DIR');
|
|||
|
rewrite(ulff); write(ulff,ulffr); close(ulff);
|
|||
|
end;
|
|||
|
|
|||
|
procedure dostuff;
|
|||
|
begin
|
|||
|
ttl('Creating Telegard directory paths');
|
|||
|
make_paths;
|
|||
|
ttl('Creating Telegard data files');
|
|||
|
make_status_dat;
|
|||
|
make_user_lst;
|
|||
|
make_names_lst;
|
|||
|
make_macro_lst;
|
|||
|
make_boards_dat;
|
|||
|
make_uploads_dat;
|
|||
|
make_protocol_dat;
|
|||
|
make_zlog_dat;
|
|||
|
make_email_dat;
|
|||
|
make_events_dat;
|
|||
|
make_laston_dat;
|
|||
|
make_gfiles_dat;
|
|||
|
make_verbose_dat;
|
|||
|
make_voting_dat;
|
|||
|
make_shortmsg_dat;
|
|||
|
make_mboard('general');
|
|||
|
make_fboard('sysop');
|
|||
|
make_fboard('misc');
|
|||
|
ttl('Moving data files into GFILES directory');
|
|||
|
movefile('user.lst',path[1]);
|
|||
|
movefile('names.lst',path[1]);
|
|||
|
movefile('macro.lst',path[1]);
|
|||
|
movefile('boards.dat',path[1]);
|
|||
|
movefile('email.dat',path[1]);
|
|||
|
movefile('events.dat',path[1]);
|
|||
|
movefile('gfiles.dat',path[1]);
|
|||
|
movefile('laston.dat',path[1]);
|
|||
|
movefile('protocol.dat',path[1]);
|
|||
|
movefile('shortmsg.dat',path[1]);
|
|||
|
movefile('uploads.dat',path[1]);
|
|||
|
movefile('verbose.dat',path[1]);
|
|||
|
movefile('voting.dat',path[1]);
|
|||
|
movefile('zlog.dat',path[1]);
|
|||
|
movefiles('*.BRD',path[1]);
|
|||
|
movefiles('*.DIR',path[1]);
|
|||
|
ttl('Moving miscellaneous text files into AFILES directory');
|
|||
|
movefiles('*.ANS',path[5]);
|
|||
|
movefiles('*.MSG',path[5]);
|
|||
|
movefiles('*.TUT',path[5]);
|
|||
|
movefile('computer.txt',path[5]);
|
|||
|
ttl('Moving message file into MSGS\EMAIL directory');
|
|||
|
movefile('a-32767.1',path[2]+'EMAIL\');
|
|||
|
ttl('Moving menu files into MENUS directory');
|
|||
|
movefiles('*.MNU',path[3]);
|
|||
|
end;
|
|||
|
|
|||
|
begin
|
|||
|
infield_out_fgrd:=11;
|
|||
|
infield_out_bkgd:=0;
|
|||
|
infield_inp_fgrd:=15;
|
|||
|
infield_inp_bkgd:=1;
|
|||
|
|
|||
|
clrscr;
|
|||
|
gotoxy(1,1); textbackground(1); textcolor(15);
|
|||
|
clreol; write(' Initialization Utility for Telegard version '+ver);
|
|||
|
textbackground(0); textcolor(7);
|
|||
|
window(1,2,80,25);
|
|||
|
writeln;
|
|||
|
assign(systatf,'status.dat');
|
|||
|
{$I-} reset(systatf); {$I+}
|
|||
|
if ioresult=0 then begin
|
|||
|
textcolor(28); write('WARNING!!');
|
|||
|
textcolor(14); writeln(' "STATUS.DAT" file already exists..');
|
|||
|
writeln('Telegard has already been initialized!');
|
|||
|
writeln('If you proceed, ALL DATA FILES WILL BE ERASED AND INITIALIZED!!!');
|
|||
|
writeln;
|
|||
|
if not pynq('Proceed? ') then halt(1);
|
|||
|
writeln;
|
|||
|
end;
|
|||
|
|
|||
|
getdir(0,curdir);
|
|||
|
path[1]:=curdir+'\GFILES\';
|
|||
|
path[2]:=curdir+'\MSGS\';
|
|||
|
path[3]:=curdir+'\MENUS\';
|
|||
|
path[4]:=curdir+'\TFILES\';
|
|||
|
path[5]:=curdir+'\AFILES\';
|
|||
|
path[6]:=curdir+'\TRAP\';
|
|||
|
path[7]:=curdir+'\TEMP\';
|
|||
|
|
|||
|
textcolor(14);
|
|||
|
writeln;
|
|||
|
writeln('You will now be prompted several times for names of directorys');
|
|||
|
writeln('that will be used by Telegard. Each directory will be created');
|
|||
|
writeln('and the appropriate files will be moved there-in.');
|
|||
|
writeln;
|
|||
|
writeln('GFILES pathname. This is the directory where the Telegard data');
|
|||
|
writeln('files and miscellaneous Telegard text files will be located.');
|
|||
|
writeln;
|
|||
|
prt('GFILES dirname: '); infielde(path[1],60); writeln; writeln;
|
|||
|
|
|||
|
textcolor(14);
|
|||
|
writeln('MSGS pathname. This directory should contain all the other message');
|
|||
|
writeln('directory paths used by Telegard, including private mail (EMAIL).');
|
|||
|
writeln('Located in these paths are the text of the Telegard messages.');
|
|||
|
writeln;
|
|||
|
prt('MSGS dirname: '); infielde(path[2],60); writeln; writeln;
|
|||
|
|
|||
|
textcolor(14);
|
|||
|
writeln('MENUS pathname. This is the directory where the Telegard menu');
|
|||
|
writeln('files will be located.');
|
|||
|
writeln;
|
|||
|
prt('MENUS dirname: '); infielde(path[3],60); writeln; writeln;
|
|||
|
|
|||
|
textcolor(14);
|
|||
|
writeln('TFILES pathname. This is the directory where the Telegard');
|
|||
|
writeln('"text file section" text files will be located in.');
|
|||
|
writeln;
|
|||
|
prt('TFILES dirname: '); infielde(path[4],60); writeln; writeln;
|
|||
|
|
|||
|
textcolor(14);
|
|||
|
writeln('AFILES pathname. This is the directory where the Telegard');
|
|||
|
writeln('menu help files, ANSI displays, etc. will be located.');
|
|||
|
writeln;
|
|||
|
prt('AFILES dirname: '); infielde(path[5],60); writeln; writeln;
|
|||
|
|
|||
|
textcolor(14);
|
|||
|
writeln('TRAP pathname. This is the directory where Telegard will');
|
|||
|
writeln('output all User Audit traps to. In the future, CHAT.MSG,');
|
|||
|
writeln('SYSOP*.LOG, FILE*.LOG, etc. will be stored here as well.');
|
|||
|
writeln;
|
|||
|
prt('TRAP dirname: '); infielde(path[6],60); writeln; writeln;
|
|||
|
|
|||
|
textcolor(14);
|
|||
|
writeln('TEMP pathname. Telegard uses this directory to convert between');
|
|||
|
writeln('archive formats, receive batch uploads, and allow users to');
|
|||
|
writeln('decompress archives to download single files, etc.');
|
|||
|
writeln;
|
|||
|
prt('TEMP dirname: '); infielde(path[7],60); writeln; writeln;
|
|||
|
|
|||
|
clrscr;
|
|||
|
|
|||
|
dostuff;
|
|||
|
|
|||
|
writeln;
|
|||
|
star('Telegard BBS installed and initialized successfully!');
|
|||
|
star('This program, "INIT.EXE", can now be deleted.');
|
|||
|
star('Thanks for trying Telegard!');
|
|||
|
end.
|