1720 lines
53 KiB
ObjectPascal
1720 lines
53 KiB
ObjectPascal
{$A+,B+,E+,F+,I+,L+,N-,O+,R-,S+,V-}
|
||
{$M 50000,0,1024}
|
||
|
||
uses crt,dos,
|
||
myio;
|
||
|
||
const
|
||
needconv = 'S23568CD';
|
||
standard_conversion = TRUE;
|
||
|
||
{$I rcc17a.pas}
|
||
{$I rec18a.pas}
|
||
|
||
var
|
||
a,b,lastss,mp,gp,sp:astr;
|
||
h,i,j,k,savx,savy:integer;
|
||
c:char;
|
||
aw:boolean; { author working }
|
||
back:boolean; { converting BACK TO PREVIOUS VERSION ! .. }
|
||
found:boolean;
|
||
dirinfo:searchrec;
|
||
ptsforisrequest,ptsfornotval:integer;
|
||
wind:windowrec;
|
||
didit:boolean;
|
||
needs:longint;
|
||
|
||
artable:astr;
|
||
|
||
{ systatf17a4:file of systatrec17a4;}
|
||
{ systat17a4:systatrec17a4;}
|
||
systatf1:file of systatrec1;
|
||
systat1:systatrec1;
|
||
systatf0:file of systatrec;
|
||
systat0:systatrec;
|
||
systatf:file of systatrec;
|
||
systat:systatrec;
|
||
|
||
modemrf:file of modemrec;
|
||
modemr:modemrec;
|
||
fstringf:file of fstringrec;
|
||
fstring:fstringrec;
|
||
|
||
sf1:file of smalrec1;
|
||
sr1:smalrec1;
|
||
sf:file of smalrec;
|
||
sr:smalrec;
|
||
|
||
uf1:file of userrec1;
|
||
user1:userrec1; {**}
|
||
uf0:file of userrec;
|
||
user0:userrec;
|
||
uf:file of userrec;
|
||
user:userrec; {**}
|
||
|
||
bf1:file of boardrec1;
|
||
brd1:boardrec1;
|
||
{ bf17a5:file of boardrec17a5;}
|
||
{ brd17a5:boardrec17a5;}
|
||
bf:file of boardrec;
|
||
brd:boardrec;
|
||
|
||
mailfile1:file of mailrec1;
|
||
mail1:mailrec1; {**}
|
||
mailfile:file of mailrec;
|
||
mail:mailrec; {**}
|
||
|
||
ulf1:file of ulrec1;
|
||
ubrd1:ulrec1;
|
||
{ ulf17a2:file of ulrec17a2;}
|
||
{ ubrd17a2:ulrec17a2;}
|
||
ulf0:file of ulrec;
|
||
ubrd0:ulrec;
|
||
ulf:file of ulrec;
|
||
ubrd:ulrec;
|
||
|
||
ulff1:file of ulfrec1;
|
||
uld1:ulfrec1;
|
||
ulff:file of ulfrec;
|
||
uld:ulfrec;
|
||
|
||
{ slf1:file of slr1;
|
||
seclev1:array[0..255] of slr1;
|
||
slf:file of seclevrec;
|
||
seclev:seclevrec;}
|
||
|
||
gfilef1:file of gft1; {**}
|
||
gfile1:gft1; {**}
|
||
gfilef:file of tfilerec;{**}
|
||
gfile:tfilerec; {**}
|
||
|
||
smf1:file of smr1;
|
||
sm1:smr1;
|
||
smf:file of smr;
|
||
sm:smr;
|
||
|
||
ztf1:file of zlogt1; {**}
|
||
zt1:zlogt1; {**}
|
||
ztf:file of zlogrec; {**}
|
||
zt:zlogrec; {**}
|
||
|
||
vdf1:file of vdatar1; {**}
|
||
vd1:vdatar1; {**}
|
||
vdf:file of vdatar; {**}
|
||
vd:vdatar; {**}
|
||
|
||
macrf:file of macrorec;
|
||
macr:macrorec;
|
||
|
||
xp1:file of protrec1;
|
||
xpr1:protrec1;
|
||
xp0:file of protrec;
|
||
xpr0:protrec;
|
||
xp:file of protrec;
|
||
xpr:protrec;
|
||
|
||
mbasef1:file of messagerec1;
|
||
mbase1:messagerec1;
|
||
mbasef:file of messagerec;
|
||
mbase:messagerec;
|
||
|
||
ff:file;
|
||
|
||
{**} (* NOT defined globally in COMMON.PAS .... *)
|
||
|
||
function value(I:astr):integer;
|
||
var n,n1:integer;
|
||
begin
|
||
val(i,n,n1);
|
||
if n1<>0 then begin
|
||
i:=copy(i,1,n1-1);
|
||
val(i,n,n1)
|
||
end;
|
||
value:=n;
|
||
if i='' then value:=0;
|
||
end;
|
||
|
||
function cstrl(li:longint):astr;
|
||
var c:astr;
|
||
begin
|
||
str(li,c);
|
||
cstrl:=c;
|
||
end;
|
||
|
||
function cstr(i:integer):astr;
|
||
var c:astr;
|
||
begin
|
||
str(i,c);
|
||
cstr:=c;
|
||
end;
|
||
|
||
|
||
|
||
function tch(i:astr):astr;
|
||
begin
|
||
if length(i)>2 then i:=copy(i,length(i)-1,2) else
|
||
if length(i)=1 then i:='0'+i;
|
||
tch:=i;
|
||
end;
|
||
|
||
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||
{ below is a working implementation.}
|
||
{
|
||
function time:astr;
|
||
var reg:registers;
|
||
h,m,s:string[4];
|
||
begin
|
||
reg.ax:=$2c00; intr($21,Dos.Registers(reg));
|
||
str(reg.cx shr 8,h); str(reg.cx mod 256,m); str(reg.dx shr 8,s);
|
||
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||
end;
|
||
}
|
||
|
||
function time:string;
|
||
var h,m,s:string[3];
|
||
hh,mm,ss,ss100:word;
|
||
begin
|
||
gettime(hh,mm,ss,ss100);
|
||
str(hh,h); str(mm,m); str(ss,s);
|
||
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||
end;
|
||
|
||
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||
{ below is a working implementation, Y2K fixes included.}
|
||
{
|
||
function date:astr;
|
||
var reg:registers;
|
||
m,d,y:string[4];
|
||
begin
|
||
reg.ax:=$2a00; msdos(Dos.Registers(reg)); str(reg.cx,y); str(reg.dx mod 256,d);
|
||
str(reg.dx shr 8,m);
|
||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
||
end;
|
||
}
|
||
|
||
function date:string;
|
||
var
|
||
{rcg11272000 unused variable.}
|
||
{r:registers;}
|
||
|
||
{rcg11272000 Y2K-proofing.}
|
||
{y,m,d:string[3];}
|
||
m,d:string[3];
|
||
y:string[5];
|
||
yy,mm,dd,dow:word;
|
||
|
||
begin
|
||
getdate(yy,mm,dd,dow);
|
||
{rcg11272000 Y2K-proofing.}
|
||
{str(yy-1900,y); str(mm,m); str(dd,d);}
|
||
str(yy,y); str(mm,m); str(dd,d);
|
||
date:=tch(m)+'/'+tch(d)+'/'+y;
|
||
end;
|
||
|
||
|
||
function leapyear(yr:integer):boolean;
|
||
begin
|
||
leapyear:=(yr mod 4=0) and ((yr mod 100<>0) or (yr mod 400=0));
|
||
end;
|
||
|
||
function days(mo,yr:integer):integer;
|
||
var d:integer;
|
||
begin
|
||
d:=value(copy('312831303130313130313031',1+(mo-1)*2,2));
|
||
if (mo=2) and leapyear(yr) then d:=d+1;
|
||
days:=d;
|
||
end;
|
||
|
||
function daycount(mo,yr:integer):integer;
|
||
var m,t:integer;
|
||
begin
|
||
t:=0;
|
||
for m:=1 to (mo-1) do t:=t+days(m,yr);
|
||
daycount:=t;
|
||
end;
|
||
|
||
function daynum(dt:astr):integer;
|
||
var d,m,y,t,c:integer;
|
||
begin
|
||
t:=0;
|
||
m:=value(copy(dt,1,2));
|
||
d:=value(copy(dt,4,2));
|
||
|
||
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||
{rcg11272000 Let's make sure the values coming in here are four }
|
||
{digits in the first place, which should save us some hacks elsewhere...}
|
||
{y:=value(copy(dt,7,2))+1900;}
|
||
|
||
{rcg11272000 my adds...}
|
||
if (length(dt) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||
y:=value(copy(dt,7,4));
|
||
{rcg11272000 end my adds...}
|
||
|
||
for c:=1985 to y-1 do
|
||
if leapyear(c) then t:=t+366 else t:=t+365;
|
||
t:=t+daycount(m,y)+(d-1);
|
||
daynum:=t;
|
||
if y<1985 then daynum:=0;
|
||
end;
|
||
|
||
|
||
function freek(d:integer):longint; (* See disk space *)
|
||
{var r:registers;}
|
||
begin
|
||
freek:=diskfree(d) div 1024;
|
||
{ r.ax:=$3600;
|
||
r.dx:=d;
|
||
msdos(dos.registers(r));
|
||
freek:=trunc(1.0*r.bx*r.ax*r.cx/1024.0);}
|
||
end;
|
||
|
||
procedure tc(i:integer);
|
||
begin
|
||
textcolor(i);
|
||
end;
|
||
|
||
procedure star(s:astr);
|
||
begin
|
||
tc(9); write('<27> ');
|
||
tc(11); writeln(s);
|
||
end;
|
||
|
||
function exdrv(s:astr):byte;
|
||
begin
|
||
{rcg11242000 point at root drive always. Ugh.}
|
||
{
|
||
s:=fexpand(s);
|
||
exdrv:=ord(s[1])-64;
|
||
}
|
||
exdrv:=3;
|
||
end;
|
||
|
||
procedure movefile(srcname,destpath:string);
|
||
var buffer:array[1..16384] of byte;
|
||
dfs,nrec:integer;
|
||
src,dest:file;
|
||
dd,dn,de:string;
|
||
|
||
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
|
||
fsplit(srcname,dd,dn,de);
|
||
destpath:=destpath+dn+de;
|
||
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 smovefile(srcname,destpath:string);
|
||
begin
|
||
star('Moving "'+srcname+'" to "'+destpath+'"');
|
||
movefile(srcname,destpath);
|
||
end;
|
||
|
||
procedure ffile(fn:astr);
|
||
begin
|
||
findfirst(fn,anyfile,dirinfo);
|
||
found:=(doserror=0);
|
||
end;
|
||
|
||
procedure nfile;
|
||
var r:registers;
|
||
begin
|
||
findnext(dirinfo);
|
||
found:=(doserror=0);
|
||
end;
|
||
|
||
function allcaps(s:astr):astr; (* returns a COMPLETELY capitalized string *)
|
||
var i:integer;
|
||
begin
|
||
for i:=1 to length(s) do
|
||
s[i]:=upcase(s[i]);
|
||
allcaps:=s;
|
||
end;
|
||
|
||
procedure cursoron;
|
||
var reg:registers;
|
||
begin
|
||
with reg do begin
|
||
ch:=07; cl:=08; ah:=1;
|
||
intr($10,reg);
|
||
end;
|
||
end;
|
||
|
||
procedure cursoroff;
|
||
var reg:registers;
|
||
begin
|
||
with reg do begin
|
||
ch:=09; cl:=00; ah:=1;
|
||
intr($10,reg);
|
||
end;
|
||
end;
|
||
|
||
procedure prt(s:string);
|
||
begin
|
||
textcolor(9); write(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 ee(s:astr);
|
||
begin
|
||
clrscr;
|
||
writeln;
|
||
tc(4); writeln('ERROR:');
|
||
writeln;
|
||
tc(15); write(' '+s);
|
||
writeln;
|
||
writeln;
|
||
tc(9); write('Hit any key to exit : ');
|
||
repeat until keypressed;
|
||
c:=readkey;
|
||
removewindow(wind); gotoxy(savx,savy);
|
||
halt(1);
|
||
end;
|
||
|
||
procedure ss(s:astr);
|
||
begin
|
||
lastss:=allcaps(s);
|
||
star('Searching for "'+lastss+'"');
|
||
end;
|
||
|
||
procedure cantopen;
|
||
begin
|
||
ee('Unable to open "'+lastss+'"');
|
||
end;
|
||
|
||
function needc(c:char):boolean;
|
||
begin
|
||
if pos(c,needconv)<>0 then needc:=TRUE else needc:=FALSE;
|
||
end;
|
||
|
||
procedure fvers;
|
||
var i:integer;
|
||
begin
|
||
needs:=0;
|
||
|
||
writeln;
|
||
ss('status.dat');
|
||
assign(systatf1,'status.dat');
|
||
{$I-} reset(systatf1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(systatf1,systat1); {$I+}
|
||
if (ioresult<>0) then begin
|
||
close(systatf1);
|
||
assign(systatf,'status.dat');
|
||
reset(systatf);
|
||
{$I-} read(systatf,systat); {$I+}
|
||
gp:=systat.gfilepath;
|
||
mp:=systat.menupath;
|
||
close(systatf);
|
||
end else begin
|
||
gp:=systat1.gfilepath;
|
||
mp:=systat1.menupath;
|
||
close(systatf1);
|
||
end;
|
||
inc(needs,sizeof(systatrec));
|
||
|
||
if needc('1') then begin
|
||
ss('names.lst');
|
||
assign(sf1,gp+'names.lst');
|
||
{$I-} reset(sf1); {$I+}
|
||
if (ioresult<>0) then begin
|
||
assign(systatf,'status.dat');
|
||
reset(systatf);
|
||
{$I-} read(systatf,systat); {$I+}
|
||
gp:=systat.gfilepath;
|
||
mp:=systat.menupath;
|
||
close(systatf);
|
||
assign(sf1,gp+'names.lst');
|
||
{$I-} reset(sf1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
end;
|
||
{$I-} read(sf1,sr1); {$I+}
|
||
inc(needs,sizeof(smalrec)*filesize(sf1));
|
||
close(sf1);
|
||
end;
|
||
|
||
if needc('2') then begin
|
||
ss('user.lst');
|
||
assign(uf1,gp+'user.lst');
|
||
{$I-} reset(uf1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(uf1,user1); {$I+}
|
||
inc(needs,sizeof(userrec)*filesize(uf1));
|
||
close(uf1);
|
||
end;
|
||
|
||
if needc('3') then begin
|
||
ss('boards.dat');
|
||
assign(bf1,gp+'boards.dat');
|
||
{$I-} reset(bf1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(bf1,brd1); {$I+}
|
||
inc(needs,sizeof(boardrec)*filesize(bf1));
|
||
close(bf1);
|
||
end;
|
||
|
||
if needc('4') then begin
|
||
ss('email.dat');
|
||
assign(mailfile1,gp+'email.dat');
|
||
{$I-} reset(mailfile1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(mailfile1,mail1); {$I+}
|
||
inc(needs,sizeof(mailrec)*filesize(mailfile1));
|
||
close(mailfile1);
|
||
end;
|
||
|
||
if needc('5') then begin
|
||
ss('gfiles.dat');
|
||
assign(gfilef1,gp+'gfiles.dat');
|
||
{$I-} reset(gfilef1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(gfilef1,gfile1); {$I+}
|
||
inc(needs,sizeof(tfilerec)*filesize(gfilef1));
|
||
close(gfilef1);
|
||
end;
|
||
|
||
if needc('6') then begin
|
||
ss('protocol.dat');
|
||
assign(xp1,gp+'protocol.dat');
|
||
{$I-} reset(xp1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
inc(needs,sizeof(protrec)*filesize(xp1));
|
||
close(xp1);
|
||
end;
|
||
|
||
if needc('7') then begin
|
||
ss('shortmsg.dat');
|
||
assign(smf1,gp+'shortmsg.dat');
|
||
{$I-} reset(smf1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(smf1,sm1); {$I+}
|
||
inc(needs,sizeof(smalrec)*filesize(smf1));
|
||
close(smf1);
|
||
end;
|
||
|
||
if needc('8') then begin
|
||
ss('uploads.dat');
|
||
assign(ulf1,gp+'uploads.dat');
|
||
{$I-} reset(ulf1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(ulf1,ubrd1); {$I+}
|
||
inc(needs,sizeof(ulrec)*filesize(ulf1));
|
||
close(ulf1);
|
||
end;
|
||
|
||
if needc('9') then begin
|
||
ss('voting.dat');
|
||
assign(vdf1,gp+'voting.dat');
|
||
{$I-} reset(vdf1); {$I+}
|
||
inc(needs,sizeof(vdatar)*filesize(vdf1));
|
||
if (ioresult=0) then close(vdf1);
|
||
end;
|
||
|
||
if needc('A') then begin
|
||
ss('zlog.dat');
|
||
assign(ztf1,gp+'zlog.dat');
|
||
{$I-} reset(ztf1); {$I+}
|
||
if (ioresult<>0) then cantopen;
|
||
{$I-} read(ztf1,zt1); {$I+}
|
||
inc(needs,sizeof(zlogrec)*filesize(ztf1));
|
||
close(ztf1);
|
||
end;
|
||
|
||
if needc('B') then begin
|
||
ss('*.dir');
|
||
ffile(gp+'*.dir');
|
||
while (found) do begin
|
||
assign(ulff1,fexpand(gp+dirinfo.name));
|
||
{$I-} reset(ulff1); {$I+}
|
||
inc(needs,sizeof(ulfrec)*filesize(ulff1));
|
||
close(ulff1);
|
||
nfile;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function barconv(c:char):char;
|
||
var s:astr;
|
||
begin
|
||
if (pos(c,artable)<>0) then s:=copy('ABCDEFG',pos(c,artable),1) else s:='@';
|
||
barconv:=s[1];
|
||
end;
|
||
|
||
function arconv(c:char):char;
|
||
begin
|
||
if (c in ['A'..'G']) then
|
||
if (length(artable)>=ord(c)-64) and (artable[ord(c)-64] in ['@'..'Z']) then
|
||
arconv:=artable[ord(c)-64]
|
||
else arconv:='@'
|
||
else arconv:='@';
|
||
end;
|
||
|
||
|
||
{rcg11172000 had to change this to get it compiling under Free Pascal...}
|
||
{function substall(src,old,new:astr):astr;}
|
||
function substall(src,old,_new:astr):astr;
|
||
var p:integer;
|
||
begin
|
||
p:=1;
|
||
while (p>0) do begin
|
||
p:=pos(old,src);
|
||
if (p>0) then begin
|
||
insert(_new,src,p+length(old));
|
||
delete(src,p,length(old));
|
||
end;
|
||
end;
|
||
substall:=src;
|
||
end;
|
||
|
||
procedure bconvert(xx:integer);
|
||
var i,j,k:integer;
|
||
s:astr;
|
||
b:boolean;
|
||
begin
|
||
case xx of
|
||
(*
|
||
6:begin
|
||
ttl('BACKWARD Converting "PROTOCOL.DAT');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('protocol.dat');
|
||
if (not found) then star('PROTOCOL.DAT not found.')
|
||
else begin
|
||
|
||
assign(xp,'protocol.old'); rewrite(xp); close(xp); erase(xp);
|
||
assign(xp,'protocol.tcp'); rewrite(xp); close(xp); erase(xp);
|
||
assign(xp,'protocol.dat'); reset(xp);
|
||
assign(xp1,'protocol.tcp'); rewrite(xp1);
|
||
|
||
for i:=0 to filesize(xp)-1 do begin
|
||
seek(xp,i); read(xp,xpr);
|
||
star(' (record #'+cstr(i)+' of '+cstr(filesize(xp)-1)+')'); gotoxy(1,wherey-1);
|
||
|
||
with xpr1 do begin
|
||
active:=(xbactive in xpr.xbstat);
|
||
isbatch:=(xbisbatch in xpr.xbstat);
|
||
isresume:=(xbisresume in xpr.xbstat);
|
||
xferokcode:=(xbxferokcode in xpr.xbstat);
|
||
ckeys:=xpr.ckeys;
|
||
descr:=xpr.descr;
|
||
minbaud:=xpr.minbaud;
|
||
maxbaud:=19200; maxbaud:=maxbaud*2;
|
||
sl:=xpr.sl;
|
||
dsl:=xpr.dsl;
|
||
ar:=xpr.ar;
|
||
templog:=xpr.templog;
|
||
uloadlog:=xpr.uloadlog;
|
||
dloadlog:=xpr.dloadlog;
|
||
ulcmd:=xpr.ulcmd;
|
||
dlcmd:=xpr.dlcmd;
|
||
for j:=1 to 6 do begin
|
||
ulcode[j]:=xpr.ulcode[j];
|
||
dlcode[j]:=xpr.dlcode[j];
|
||
end;
|
||
envcmd:=xpr.envcmd;
|
||
dlflist:=xpr.dlflist;
|
||
maxchrs:=xpr.maxchrs;
|
||
logpf:=xpr.logpf;
|
||
logps:=xpr.logps;
|
||
end;
|
||
|
||
seek(xp1,i); write(xp1,xpr1);
|
||
end;
|
||
close(xp);
|
||
close(xp1);
|
||
rename(xp,'protocol.old');
|
||
rename(xp1,'protocol.dat');
|
||
writeln;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
*)
|
||
12:begin
|
||
ttl('-<2D><<3C>--BACKWARD--<2D><<3C>- Converting "*.BRD" message base info files');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('*.brd');
|
||
if not found then star('No *.BRD files present.')
|
||
else begin
|
||
repeat
|
||
s:=dirinfo.name;
|
||
|
||
assign(mbasef,copy(s,1,length(s)-3)+'old'); rewrite(mbasef);
|
||
close(mbasef); erase(mbasef);
|
||
|
||
assign(mbasef,copy(s,1,length(s)-3)+'tcp'); rewrite(mbasef);
|
||
close(mbasef); erase(mbasef);
|
||
|
||
assign(mbasef,s); reset(mbasef);
|
||
|
||
assign(mbasef1,copy(s,1,length(s)-3)+'tcp'); rewrite(mbasef1);
|
||
|
||
star('Converting "'+s+'" ('+cstr(filesize(mbasef)-1)+' messages)');
|
||
|
||
for i:=0 to filesize(mbasef)-1 do begin
|
||
seek(mbasef,i); read(mbasef,mbase);
|
||
with mbase do begin
|
||
mbase1.title:=title;
|
||
if (validated in messagestat) then mbase1.messagestat:=validated1;
|
||
if (unvalidated in messagestat) then mbase1.messagestat:=unvalidated1;
|
||
if (deleted in messagestat) then mbase1.messagestat:=deleted1;
|
||
mbase1.message.ltr:=message.ltr;
|
||
mbase1.message.number:=message.number;
|
||
mbase1.message.ext:=message.ext;
|
||
mbase1.owner:=owner;
|
||
mbase1.date:=mbase1.date;
|
||
mbase1.mage:=255;
|
||
end;
|
||
write(mbasef1,mbase1);
|
||
end;
|
||
|
||
close(mbasef1);
|
||
close(mbasef);
|
||
rename(mbasef1,copy(s,1,length(s)-3)+'obr');
|
||
|
||
nfile;
|
||
until (not found);
|
||
ffile('*.obr');
|
||
while (found) do begin
|
||
s:=dirinfo.name;
|
||
assign(mbasef1,copy(s,1,length(s)-3)+'brd');
|
||
rename(mbasef1,copy(s,1,length(s)-3)+'old');
|
||
assign(mbasef,s); rename(mbasef,copy(s,1,length(s)-3)+'brd');
|
||
nfile;
|
||
end;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure fconvert(xx:integer);
|
||
const dcols:clrs=((15,7,7,15,15,15,112,7,143,7),(15,3,1,11,9,14,31,4,140,10));
|
||
var i,j,k:integer;
|
||
b:boolean;
|
||
s,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15:astr;
|
||
c:char;
|
||
mf,mf1:text;
|
||
sepmsgs,nocopy,bla,b1,b2:boolean;
|
||
f:file;
|
||
mary:array[0..200] of messagerec;
|
||
curdir:astr;
|
||
newpath:array[1..3] of astr;
|
||
fff:file;
|
||
menuline:array[1..13] of string[255];
|
||
uu:uflags1;
|
||
numread:word;
|
||
|
||
procedure make_paths;
|
||
var s:string;
|
||
i,j:integer;
|
||
begin
|
||
for i:=1 to 3 do begin
|
||
{rcg11242000 Dosism.}
|
||
{while copy(newpath[i],length(newpath[i]),1)='\' do}
|
||
while copy(newpath[i],length(newpath[i]),1)='/' do
|
||
newpath[i]:=copy(newpath[i],1,length(newpath[i])-1);
|
||
case i of 1:s:='AFILES'; 2:s:='TRAP'; 3:s:='TEMP'; end;
|
||
star(s+' path ("'+fexpand(newpath[i])+'")');
|
||
{$I-} mkdir(fexpand(newpath[i])); {$I+}
|
||
if (ioresult<>0) then begin
|
||
writeln;
|
||
star('Error creating directory "'+fexpand(newpath[i])+'"');
|
||
halt(1);
|
||
end;
|
||
if (i=3) then
|
||
for j:=1 to 3 do begin
|
||
{rcg11242000 DOSism.}
|
||
(*{$I-} mkdir(fexpand(newpath[i]+'\'+cstr(j))); {$I+}*)
|
||
{$I-} mkdir(fexpand(newpath[i]+'/'+cstr(j))); {$I+}
|
||
if (ioresult<>0) then begin
|
||
writeln;
|
||
{rcg11242000 DOSism.}
|
||
{star('Error creating directory "'+fexpand(newpath[i]+'\'+cstr(j))+'"');}
|
||
star('Error creating directory "'+fexpand(newpath[i]+'/'+cstr(j))+'"');
|
||
halt(1);
|
||
end;
|
||
end;
|
||
{rcg11242000 DOSism.}
|
||
{newpath[i]:=newpath[i]+'\';}
|
||
newpath[i]:=newpath[i]+'/';
|
||
end;
|
||
end;
|
||
|
||
function sacs(b:byte):string;
|
||
begin
|
||
if (b>0) then sacs:='s'+cstr(b) else sacs:='';
|
||
end;
|
||
|
||
begin
|
||
case xx of
|
||
0:begin
|
||
ttl('Converting "STATUS.DAT"');
|
||
ffile('status.dat');
|
||
if (not found) then star('STATUS.DAT not found.')
|
||
else begin
|
||
|
||
assign(systatf1,'status.old'); rewrite(systatf1); close(systatf1); erase(systatf1);
|
||
assign(systatf1,'status.tcp'); rewrite(systatf1); close(systatf1); erase(systatf1);
|
||
|
||
assign(systatf,'status.tcp'); rewrite(systatf);
|
||
assign(systatf1,'status.dat');
|
||
|
||
reset(systatf1); read(systatf1,systat1);
|
||
|
||
if (standard_conversion) then { default settings for STANDARDs }
|
||
with systat1 do begin
|
||
arq9600rate:=9600;
|
||
allstartmenu:='MAIN';
|
||
wfcblanktime:=0;
|
||
validateallfiles:=FALSE;
|
||
maxintemp:=500;
|
||
slogtype:=0;
|
||
stripclog:=FALSE;
|
||
noforcerate:=FALSE;
|
||
rebootforevent:=TRUE;
|
||
minresume:=100;
|
||
windowon:=TRUE;
|
||
curwindow:=1;
|
||
end;
|
||
|
||
with systat1 do begin
|
||
systat.gfilepath:=gfilepath;
|
||
systat.afilepath:=afilepath;
|
||
systat.menupath:=menupath;
|
||
systat.trappath:=trappath;
|
||
systat.pmsgpath:=pmsgpath;
|
||
systat.tfilepath:=tfilepath;
|
||
systat.temppath:=temppath;
|
||
|
||
systat.bbsname:=bbsname;
|
||
systat.bbsphone:=bbsphone;
|
||
systat.sysopname:=sysopfirst+' '+sysoplast;
|
||
{**} systat.maxusers:=500;
|
||
systat.lowtime:=lowtime;
|
||
systat.hitime:=hitime;
|
||
systat.dllowtime:=dllowtime;
|
||
systat.dlhitime:=dlhitime;
|
||
systat.shuttlelog:=matrix;
|
||
systat.lock300:=lock300;
|
||
systat.sysoppw:=sysoppw;
|
||
systat.newuserpw:=boardpw;
|
||
systat.shuttlepw:=bbspw;
|
||
systat.b300lowtime:=b300lowtime;
|
||
systat.b300hitime:=b300hitime;
|
||
systat.b300dllowtime:=b300dllowtime;
|
||
systat.b300dlhitime:=b300dlhitime;
|
||
systat.closedsystem:=closedsystem;
|
||
systat.snowchecking:=snowchecking;
|
||
systat.eventwarningtime:=eventwarningtime;
|
||
systat.tfiledate:=tfiledate;
|
||
systat.hmsg.ltr:=hmsg.ltr;
|
||
systat.hmsg.number:=hmsg.number;
|
||
systat.hmsg.ext:=hmsg.ext;
|
||
for j:=1 to 20 do systat.res[j]:=0;
|
||
|
||
systat.sop:=sacs(sop);
|
||
systat.csop:=sacs(csop);
|
||
systat.msop:=sacs(msop);
|
||
systat.fsop:=sacs(fsop);
|
||
systat.spw:=sacs(spw);
|
||
systat.seepw:=sacs(seepw);
|
||
systat.normpubpost:=sacs(normpubpost);
|
||
systat.normprivpost:=sacs(normprivpost);
|
||
systat.anonpubread:=sacs(anonpubread);
|
||
systat.anonprivread:=sacs(anonprivread);
|
||
systat.anonpubpost:=sacs(anonpubpost);
|
||
systat.anonprivpost:=sacs(anonprivpost);
|
||
systat.seeunval:=sacs(seeunval);
|
||
systat.dlunval:=sacs(dlunval);
|
||
systat.nodlratio:=sacs(nodlratio);
|
||
systat.nopostratio:=sacs(nopostratio);
|
||
systat.nofilepts:=sacs(nofilepts);
|
||
systat.ulvalreq:=sacs(ulvalreq);
|
||
for j:=1 to 100 do systat.res2[j]:=0;
|
||
|
||
systat.maxprivpost:=maxprivpost;
|
||
systat.maxfback:=maxfback;
|
||
systat.maxpubpost:=maxpubpost;
|
||
systat.maxchat:=maxchat;
|
||
systat.maxwaiting:=maxwaiting;
|
||
systat.csmaxwaiting:=csmaxwaiting;
|
||
systat.maxlines:=maxlines;
|
||
systat.csmaxlines:=csmaxlines;
|
||
systat.maxlogontries:=tries;
|
||
systat.bsdelay:=bsdelay;
|
||
systat.sysopcolor:=sysopcolor;
|
||
systat.usercolor:=usercolor;
|
||
systat.minspaceforpost:=minspaceforpost;
|
||
systat.minspaceforupload:=minspaceforupload;
|
||
systat.backsysoplogs:=backsysoplogs;
|
||
systat.wfcblanktime:=wfcblanktime;
|
||
for j:=1 to 20 do systat.res3[j]:=0;
|
||
|
||
systat.specialfx:=special;
|
||
systat.clearmsg:=clearmsg;
|
||
systat.allowalias:=alias;
|
||
systat.phonepw:=fone;
|
||
systat.localsec:=localsec;
|
||
systat.localscreensec:=localscreensec;
|
||
systat.globaltrap:=globaltrap;
|
||
systat.autochatopen:=autochatopen;
|
||
systat.autominlogon:=autominlogon;
|
||
systat.bullinlogon:=bullinlogon;
|
||
systat.lcallinlogon:=lcallinlogon;
|
||
systat.yourinfoinlogon:=yourinfoinlogon;
|
||
systat.multitask:=multitask;
|
||
systat.offhooklocallogon:=offhooklocallogon;
|
||
systat.forcevoting:=forcevoting;
|
||
systat.compressbases:=compressbases;
|
||
systat.searchdup:=searchdup;
|
||
systat.slogtype:=slogtype;
|
||
systat.stripclog:=stripclog;
|
||
systat.newapp:=app;
|
||
systat.guestuser:=guestuser;
|
||
systat.timeoutbell:=timeoutbell;
|
||
systat.timeout:=timeout;
|
||
for j:=1 to 20 do systat.res4[j]:=0;
|
||
|
||
for j:=1 to maxarcs1 do begin
|
||
systat.filearcinfo[j].active:=filearcinfo[j].active;
|
||
systat.filearcinfo[j].ext:=filearcinfo[j].ext;
|
||
systat.filearcinfo[j].listline:=filearcinfo[j].listline;
|
||
systat.filearcinfo[j].arcline:=filearcinfo[j].arcline;
|
||
systat.filearcinfo[j].unarcline:=filearcinfo[j].unarcline;
|
||
systat.filearcinfo[j].testline:=filearcinfo[j].testline;
|
||
systat.filearcinfo[j].cmtline:=filearcinfo[j].cmtline;
|
||
systat.filearcinfo[j].succlevel:=filearcinfo[j].succlevel;
|
||
end;
|
||
systat.filearcinfo[7].ext:='';
|
||
systat.filearcinfo[8].ext:='';
|
||
for j:=1 to 3 do systat.filearccomment[j]:=filearccomment[j];
|
||
systat.uldlratio:=uldlratio;
|
||
systat.fileptratio:=fileptratio;
|
||
systat.fileptcomp:=fileptcomp;
|
||
systat.fileptcompbasesize:=fileptcompbasesize;
|
||
systat.ulrefund:=ulrefund;
|
||
systat.tosysopdir:=tosysopdir;
|
||
systat.validateallfiles:=validateallfiles;
|
||
systat.remdevice:=remdevice;
|
||
systat.maxintemp:=maxintemp;
|
||
systat.minresume:=minresume;
|
||
{**} systat.maxdbatch:=30;
|
||
{**} systat.maxubatch:=30;
|
||
for j:=1 to 30 do systat.res5[j]:=0;
|
||
|
||
systat.newsl:=newsl;
|
||
systat.newdsl:=newdsl;
|
||
systat.newar:=[];
|
||
for c:='A' to 'Z' do
|
||
if (c in newar) then systat.newar:=systat.newar+[c];
|
||
systat.newac:=[];
|
||
if (rlogon1 in newac) then systat.newac:=systat.newac+[rlogon];
|
||
if (rchat1 in newac) then systat.newac:=systat.newac+[rchat];
|
||
if (rvalidate1 in newac) then systat.newac:=systat.newac+[rvalidate];
|
||
if (rbackspace1 in newac) then systat.newac:=systat.newac+[rbackspace];
|
||
if (ramsg1 in newac) then systat.newac:=systat.newac+[ramsg];
|
||
if (rpostan1 in newac) then systat.newac:=systat.newac+[rpostan];
|
||
if (rpost1 in newac) then systat.newac:=systat.newac+[rpost];
|
||
if (remail1 in newac) then systat.newac:=systat.newac+[remail];
|
||
if (rvoting1 in newac) then systat.newac:=systat.newac+[rvoting];
|
||
if (rmsg1 in newac) then systat.newac:=systat.newac+[rmsg];
|
||
if (fnodlratio1 in newac) then systat.newac:=systat.newac+[fnodlratio];
|
||
if (fnopostratio1 in newac) then systat.newac:=systat.newac+[fnopostratio];
|
||
if (fnofilepts1 in newac) then systat.newac:=systat.newac+[fnofilepts];
|
||
if (fnodeletion1 in newac) then systat.newac:=systat.newac+[fnodeletion];
|
||
systat.newfp:=newfp;
|
||
systat.autosl:=autosl;
|
||
systat.autodsl:=autodsl;
|
||
systat.autoar:=[];
|
||
for c:='A' to 'Z' do
|
||
if (c in autoar) then systat.autoar:=systat.autoar+[c];
|
||
systat.autoac:=[];
|
||
if (rlogon1 in autoac) then systat.autoac:=systat.autoac+[rlogon];
|
||
if (rchat1 in autoac) then systat.autoac:=systat.autoac+[rchat];
|
||
if (rvalidate1 in autoac) then systat.autoac:=systat.autoac+[rvalidate];
|
||
if (rbackspace1 in autoac) then systat.autoac:=systat.autoac+[rbackspace];
|
||
if (ramsg1 in autoac) then systat.autoac:=systat.autoac+[ramsg];
|
||
if (rpostan1 in autoac) then systat.autoac:=systat.autoac+[rpostan];
|
||
if (rpost1 in autoac) then systat.autoac:=systat.autoac+[rpost];
|
||
if (remail1 in autoac) then systat.autoac:=systat.autoac+[remail];
|
||
if (rvoting1 in autoac) then systat.autoac:=systat.autoac+[rvoting];
|
||
if (rmsg1 in autoac) then systat.autoac:=systat.autoac+[rmsg];
|
||
if (fnodlratio1 in autoac) then systat.autoac:=systat.autoac+[fnodlratio];
|
||
if (fnopostratio1 in autoac) then systat.autoac:=systat.autoac+[fnopostratio];
|
||
if (fnofilepts1 in autoac) then systat.autoac:=systat.autoac+[fnofilepts];
|
||
if (fnodeletion1 in autoac) then systat.autoac:=systat.autoac+[fnodeletion];
|
||
|
||
systat.allstartmenu:=allstartmenu;
|
||
for j:=1 to 50 do systat.res6[j]:=0;
|
||
|
||
for j:=0 to 255 do systat.timeallow[j]:=timeallow[j];
|
||
for j:=0 to 255 do systat.callallow[j]:=callallow[j];
|
||
for j:=0 to 255 do systat.dlratio[j]:=dlratio[j];
|
||
for j:=0 to 255 do systat.dlkratio[j]:=dlkratio[j];
|
||
for j:=0 to 255 do systat.postratio[j]:=postratio[j];
|
||
|
||
systat.lastdate:=lastdate;
|
||
systat.curwindow:=1;
|
||
systat.istopwindow:=istopwindow;
|
||
systat.callernum:=callernum;
|
||
systat.numusers:=users;
|
||
|
||
systat.todayzlog.date:=lastdate;
|
||
for j:=0 to 4 do systat.todayzlog.userbaud[j]:=userbaud[j];
|
||
systat.todayzlog.active:=activetoday;
|
||
systat.todayzlog.calls:=callstoday;
|
||
systat.todayzlog.newusers:=newusertoday;
|
||
systat.todayzlog.pubpost:=msgposttoday;
|
||
systat.todayzlog.privpost:=emailtoday;
|
||
systat.todayzlog.fback:=fbacktoday;
|
||
systat.todayzlog.criterr:=criterr;
|
||
systat.todayzlog.uploads:=uptoday;
|
||
systat.todayzlog.downloads:=dntoday;
|
||
systat.todayzlog.uk:=newuk;
|
||
systat.todayzlog.dk:=newdk;
|
||
|
||
{**} systat.postcredits:=0;
|
||
{**} systat.rebootforevent:=TRUE;
|
||
{**} systat.watchdogdoor:=TRUE;
|
||
for j:=1 to 200 do res[j]:=0;
|
||
|
||
end;
|
||
|
||
seek(systatf,0); write(systatf,systat);
|
||
|
||
star('Done.');
|
||
writeln;
|
||
ttl('Generating "MODEM.DAT" *from* "STATUS.DAT"');
|
||
|
||
assign(modemrf,systat.gfilepath+'modem.dat');
|
||
rewrite(modemrf);
|
||
with systat1 do begin
|
||
modemr.waitbaud:=maxbaud;
|
||
modemr.comport:=comport;
|
||
modemr.init:=init;
|
||
modemr.answer:=answer;
|
||
modemr.hangup:=hangup;
|
||
modemr.offhook:=offhook;
|
||
modemr.nocallinittime:=nocallinittime;
|
||
modemr.arq9600rate:=arq9600rate;
|
||
modemr.noforcerate:=noforcerate;
|
||
modemr.nocarrier:=nocarrier;
|
||
modemr.nodialtone:=nodialtone;
|
||
modemr.busy:=busy;
|
||
for i:=1 to 2 do
|
||
for j:=0 to 4 do modemr.resultcode[i][j]:=resultcode[i][j];
|
||
modemr.ctschecking:=TRUE;
|
||
modemr.dsrchecking:=TRUE;
|
||
modemr.usexonxoff:=FALSE;
|
||
modemr.hardwired:=FALSE;
|
||
end;
|
||
write(modemrf,modemr);
|
||
close(modemrf);
|
||
|
||
star('Done.');
|
||
writeln;
|
||
ttl('Generating "STRING.DAT" *from* "STATUS.DAT"');
|
||
|
||
assign(fstringf,systat.gfilepath+'string.dat');
|
||
rewrite(fstringf);
|
||
with systat1 do begin
|
||
fstring.ansiq:=ansiq;
|
||
for j:=1 to 2 do fstring.note[j]:=note[j];
|
||
fstring.lprompt:=lprompt;
|
||
fstring.echoc:=echoc;
|
||
fstring.sysopin:=sysopin;
|
||
fstring.sysopout:=sysopout;
|
||
fstring.engage:=engage;
|
||
fstring.endchat:=endchat;
|
||
fstring.wait:=wait;
|
||
fstring.pause:=pause;
|
||
fstring.entermsg1:=msg1;
|
||
fstring.entermsg2:=msg2;
|
||
fstring.newscan1:=new1;
|
||
fstring.newscan2:=new2;
|
||
fstring.scanmessage:=read;
|
||
fstring.automsgt:=auto1;
|
||
fstring.autom:=autom;
|
||
|
||
fstring.shelldos1:=#3#5+'>> '+systat.sysopname+' has Shelled to dos, please wait ...';
|
||
fstring.shelldos2:=#3#5+'>> Thank you for waiting';
|
||
fstring.chatcall1:=#3#0+'Paging '+systat.sysopname+' for chat, please wait.....';
|
||
fstring.chatcall2:=#3#7+' >>'+#3#5+'<'+#3#8+'*'+#3#5+'>'+#3#7+'<<';
|
||
fstring.guestline:='Enter "GUEST" as your user name to be a guest user on the system.';
|
||
fstring.namenotfound:=#3#5+'That name is'+#3#8+' NOT'+#3#5+' found in the user list.';
|
||
fstring.bulletinline:=#3#4+'Enter Bulletin Selection (XX,?,Q=Quit) : ';
|
||
fstring.thanxvote:=#3#3+'Thanks for taking the time to vote!';
|
||
|
||
fstring.listline:='List files - P to Pause';
|
||
fstring.newline:='Search for new files -';
|
||
fstring.searchline:='Search all directories for a file mask -';
|
||
fstring.findline1:='Search descriptions and filenames for keyword -';
|
||
fstring.findline2:='Enter the string to search for:';
|
||
fstring.downloadline:='Download - You have @P file points.';
|
||
fstring.uploadline:='Upload - @Kk free on this drive';
|
||
fstring.viewline:='View archive interior files -@MP to Pause, N for Next file';
|
||
fstring.nofilepts:=#3#8+'Access denied: '+#3#5+'Insufficient file points to download.';
|
||
fstring.unbalance:=#3#8+'Access denied: '+#3#5+'Your upload/download ratio is out of balance:';
|
||
|
||
fstring.pninfo:='P to Pause, N for next directory';
|
||
fstring.gfnline1:='[Enter]=All files';
|
||
fstring.gfnline2:=#3#4+'File mask: ';
|
||
fstring.batchadd:='File added to batch queue.';
|
||
end;
|
||
write(fstringf,fstring);
|
||
close(fstringf);
|
||
|
||
star('Done.');
|
||
writeln;
|
||
|
||
close(systatf);
|
||
close(systatf1);
|
||
rename(systatf1,'status.old');
|
||
rename(systatf,'status.dat');
|
||
|
||
writeln;
|
||
end;
|
||
end;
|
||
2:begin
|
||
ttl('PATCHING "USER.LST" - No conversion necessary');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('user.lst');
|
||
if not found then star('USER.LST not found.')
|
||
else begin
|
||
assign(uf0,'user.old'); rewrite(uf0); close(uf0); erase(uf0);
|
||
assign(uf0,'user.lst'); rename(uf0,'user.old'); reset(uf0);
|
||
assign(uf1,'user.old'); reset(uf1);
|
||
assign(uf,'user.lst'); rewrite(uf);
|
||
|
||
for i:=0 to filesize(uf0)-1 do begin
|
||
seek(uf0,i); read(uf0,user0);
|
||
seek(uf1,i); read(uf1,user1);
|
||
star(' (record #'+cstr(i)+' of '+cstr(filesize(uf0)-1)+')'); gotoxy(1,wherey-1);
|
||
user:=user0;
|
||
|
||
user.ttimeon:=round(user1.ttimeon);
|
||
user.uk:=round(user1.uk);
|
||
user.dk:=round(user1.dk);
|
||
user.credit:=round(user1.credit);
|
||
|
||
user.chatauto:=FALSE;
|
||
user.chatseperate:=FALSE;
|
||
|
||
seek(uf,i); write(uf,user);
|
||
end;
|
||
close(uf0);
|
||
close(uf);
|
||
writeln;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
3:begin
|
||
ttl('Converting "BOARDS.DAT');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('boards.dat');
|
||
if (not found) then star('BOARDS.DAT not found.')
|
||
else begin
|
||
assign(bf1,'boards.old'); rewrite(bf1); close(bf1); erase(bf1);
|
||
assign(bf1,'boards.tcp'); rewrite(bf1); close(bf1); erase(bf1);
|
||
assign(bf1,'boards.dat'); reset(bf1);
|
||
assign(bf,'boards.tcp'); rewrite(bf);
|
||
|
||
for i:=0 to filesize(bf1)-1 do begin
|
||
seek(bf1,i); read(bf1,brd1);
|
||
star(' (record #'+cstr(i)+' of '+cstr(filesize(bf1)-1)+')'); gotoxy(1,wherey-1);
|
||
|
||
with brd1 do begin
|
||
brd.name:=name;
|
||
brd.filename:=filename;
|
||
brd.msgpath:=msgpath;
|
||
brd.acs:='';
|
||
if (sl<>0) then brd.acs:=brd.acs+'s'+cstr(sl);
|
||
if (ar in ['A'..'Z']) then brd.acs:=brd.acs+'f'+ar;
|
||
brd.postacs:='';
|
||
if (postsl<>0) then brd.postacs:=brd.postacs+'s'+cstr(postsl);
|
||
brd.mciacs:='';
|
||
brd.maxmsgs:=maxmsgs;
|
||
if (anonymous=yes1) then brd.anonymous:=yes else
|
||
if (anonymous=no1) then brd.anonymous:=no else
|
||
if (anonymous=forced1) then brd.anonymous:=forced else
|
||
if (anonymous=dearabby1) then brd.anonymous:=dearabby;
|
||
brd.password:=password;
|
||
brd.mbstat:=[];
|
||
brd.permindx:=i;
|
||
brd.mbdepth:=0;
|
||
for j:=1 to 4 do brd.res[j]:=0;
|
||
end;
|
||
|
||
seek(bf,i); write(bf,brd);
|
||
end;
|
||
close(bf1);
|
||
close(bf);
|
||
rename(bf1,'boards.old');
|
||
rename(bf,'boards.dat');
|
||
writeln;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
5:begin
|
||
ttl('Converting "GFILES.DAT');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('gfiles.dat');
|
||
if (not found) then star('GFILES.DAT not found.')
|
||
else begin
|
||
|
||
assign(gfilef1,'gfiles.old'); rewrite(gfilef1); close(gfilef1); erase(gfilef1);
|
||
assign(gfilef1,'gfiles.tcp'); rewrite(gfilef1); close(gfilef1); erase(gfilef1);
|
||
assign(gfilef1,'gfiles.dat'); reset(gfilef1);
|
||
assign(gfilef,'gfiles.tcp'); rewrite(gfilef);
|
||
|
||
for i:=0 to filesize(gfilef1)-1 do begin
|
||
seek(gfilef1,i); read(gfilef1,gfile1);
|
||
star(' (record #'+cstr(i)+' of '+cstr(filesize(gfilef1)-1)+')'); gotoxy(1,wherey-1);
|
||
|
||
if (i=0) then gfile.gdaten:=gfile1.num
|
||
else
|
||
with gfile do begin
|
||
title:=gfile1.title;
|
||
filen:=gfile1.filen;
|
||
gdate:=gfile1.gdate;
|
||
gdaten:=gfile1.gdaten;
|
||
acs:='';
|
||
if (gfile1.num>0) then acs:=acs+'s'+cstr(gfile1.num);
|
||
if (gfile1.ar in ['A'..'Z']) then acs:=acs+'f'+gfile1.ar;
|
||
if (filen=#1#0#0#0#0#0) then ulacs:='%' else ulacs:='';
|
||
tbstat:=[];
|
||
permindx:=i;
|
||
tbdepth:=0;
|
||
for j:=1 to 4 do res[j]:=0;
|
||
end;
|
||
|
||
seek(gfilef,i); write(gfilef,gfile);
|
||
end;
|
||
close(gfilef1);
|
||
close(gfilef);
|
||
rename(gfilef1,'gfiles.old');
|
||
rename(gfilef,'gfiles.dat');
|
||
writeln;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
6:begin
|
||
ttl('Converting "PROTOCOL.DAT');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('protocol.dat');
|
||
if (not found) then star('PROTOCOL.DAT not found.')
|
||
else begin
|
||
assign(xp1,'protocol.old'); rewrite(xp1); close(xp1); erase(xp1);
|
||
assign(xp1,'protocol.tcp'); rewrite(xp1); close(xp1); erase(xp1);
|
||
assign(xp1,'protocol.dat'); reset(xp1);
|
||
assign(xp,'protocol.tcp'); rewrite(xp);
|
||
|
||
for i:=0 to filesize(xp1)-1 do begin
|
||
seek(xp1,i); read(xp1,xpr1);
|
||
star(' (record #'+cstr(i)+' of '+cstr(filesize(xp1)-1)+')'); gotoxy(1,wherey-1);
|
||
|
||
with xpr1 do begin
|
||
xpr.xbstat:=[];
|
||
if (active) then xpr.xbstat:=xpr.xbstat+[xbactive];
|
||
if (isbatch) then xpr.xbstat:=xpr.xbstat+[xbisbatch];
|
||
if (isresume) then xpr.xbstat:=xpr.xbstat+[xbisresume];
|
||
if (xferokcode) then xpr.xbstat:=xpr.xbstat+[xbxferokcode];
|
||
xpr.ckeys:=ckeys;
|
||
xpr.descr:=descr;
|
||
xpr.acs:='';
|
||
if (sl>0) then xpr.acs:=xpr.acs+'s'+cstr(sl);
|
||
if (dsl>0) then xpr.acs:=xpr.acs+'d'+cstr(dsl);
|
||
if (ar in ['A'..'Z']) then xpr.acs:=xpr.acs+'f'+ar;
|
||
(* if ((minbaud<>300) or (maxbaud<>38400)) then begin
|
||
if (minbaud<>300) then xpr.acs:=xpr.acs+'b'+cstr(minbaud div 100);
|
||
if (maxbaud<>38400) then xpr.acs:=xpr.acs+'!b'+cstr(maxbaud div 100);
|
||
end;*)
|
||
xpr.templog:=templog;
|
||
xpr.uloadlog:=uloadlog;
|
||
xpr.dloadlog:=dloadlog;
|
||
(* MUST PUT DSZ PARAMS IN HERE ..... vvv *)
|
||
if (ulcmd='XMODEM') then xpr.ulcmd:='dsz port %P speed %B rx %F' else
|
||
if (ulcmd='XMODEM-CRC') then xpr.ulcmd:='dsz port %P speed %B rc %F' else
|
||
if (ulcmd='YMODEM') then begin
|
||
if (isbatch) then
|
||
xpr.ulcmd:='dsz port %P speed %B rb -k'
|
||
else
|
||
xpr.ulcmd:='dsz port %P speed %B rb -k %F';
|
||
end else
|
||
xpr.ulcmd:=ulcmd;
|
||
if (dlcmd='XMODEM') then xpr.dlcmd:='dsz port %P speed %B sx %F' else
|
||
if (dlcmd='XMODEM-CRC') then xpr.dlcmd:='dsz port %P speed %B sx %F' else
|
||
if (dlcmd='YMODEM') then begin
|
||
if (isbatch) then
|
||
xpr.dlcmd:='dsz port %P speed %B sb @%L'
|
||
else
|
||
xpr.dlcmd:='dsz port %P speed %B sb %F';
|
||
end else
|
||
xpr.dlcmd:=dlcmd;
|
||
for j:=1 to 6 do begin
|
||
xpr.ulcode[j]:=ulcode[j];
|
||
xpr.dlcode[j]:=dlcode[j];
|
||
end;
|
||
xpr.envcmd:=envcmd;
|
||
xpr.dlflist:=dlflist;
|
||
xpr.maxchrs:=maxchrs;
|
||
xpr.logpf:=logpf;
|
||
xpr.logps:=logps;
|
||
xpr.permindx:=i;
|
||
for j:=1 to 11 do xpr.res[j]:=0;
|
||
end;
|
||
|
||
seek(xp,i); write(xp,xpr);
|
||
end;
|
||
|
||
close(xp1);
|
||
close(xp);
|
||
rename(xp1,'protocol.old');
|
||
rename(xp,'protocol.dat');
|
||
writeln;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
8:begin
|
||
ttl('Converting "UPLOADS.DAT');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('uploads.dat');
|
||
if (not found) then star('UPLOADS.DAT not found.')
|
||
else begin
|
||
|
||
assign(ulf1,'uploads.old'); rewrite(ulf1); close(ulf1); erase(ulf1);
|
||
assign(ulf1,'uploads.tcp'); rewrite(ulf1); close(ulf1); erase(ulf1);
|
||
assign(ulf1,'uploads.dat'); reset(ulf1);
|
||
assign(ulf,'uploads.tcp'); rewrite(ulf);
|
||
|
||
for i:=0 to filesize(ulf1)-1 do begin
|
||
seek(ulf1,i); read(ulf1,ubrd1);
|
||
star(' (record #'+cstr(i)+' of '+cstr(filesize(ulf1)-1)+')'); gotoxy(1,wherey-1);
|
||
|
||
with ubrd1 do begin
|
||
ubrd.name:=name;
|
||
ubrd.filename:=filename;
|
||
ubrd.dlpath:=dlpath;
|
||
ubrd.ulpath:=dlpath;
|
||
ubrd.maxfiles:=maxfiles;
|
||
if (ubrd.maxfiles>2000) then ubrd.maxfiles:=2000;
|
||
ubrd.password:=password;
|
||
ubrd.arctype:=arctype;
|
||
ubrd.cmttype:=cmttype;
|
||
ubrd.fbdepth:=0;
|
||
ubrd.fbstat:=[];
|
||
if (noratio) then ubrd.fbstat:=ubrd.fbstat+[fbnoratio];
|
||
if (unhidden) then ubrd.fbstat:=ubrd.fbstat+[fbunhidden];
|
||
ubrd.acs:='';
|
||
if (sl>0) then ubrd.acs:=ubrd.acs+'s'+cstr(sl);
|
||
if (dsl>0) then ubrd.acs:=ubrd.acs+'d'+cstr(dsl);
|
||
if (ar in ['A'..'Z']) then ubrd.acs:=ubrd.acs+'f'+ar;
|
||
if (agereq>1) then ubrd.acs:=ubrd.acs+'a'+cstr(agereq);
|
||
ubrd.ulacs:='';
|
||
ubrd.nameacs:='';
|
||
if (namesl>0) then
|
||
ubrd.nameacs:=ubrd.nameacs+'s'+cstr(namesl);
|
||
ubrd.permindx:=i;
|
||
for j:=1 to 6 do ubrd.res[j]:=0;
|
||
end;
|
||
|
||
seek(ulf,i); write(ulf,ubrd);
|
||
end;
|
||
close(ulf1);
|
||
close(ulf);
|
||
rename(ulf1,'uploads.old');
|
||
rename(ulf,'uploads.dat');
|
||
writeln;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
12:begin
|
||
ttl('Converting "*.BRD" message base info files');
|
||
chdir(copy(gp,1,length(gp)-1));
|
||
ffile('*.brd');
|
||
if not found then star('No *.BRD files present.')
|
||
else begin
|
||
repeat
|
||
s:=dirinfo.name;
|
||
|
||
assign(mbasef1,copy(s,1,length(s)-3)+'old'); rewrite(mbasef1);
|
||
close(mbasef1); erase(mbasef1);
|
||
|
||
assign(mbasef1,copy(s,1,length(s)-3)+'tcp'); rewrite(mbasef1);
|
||
close(mbasef1); erase(mbasef1);
|
||
|
||
assign(mbasef1,s); reset(mbasef1);
|
||
|
||
assign(mbasef,copy(s,1,length(s)-3)+'tcp'); rewrite(mbasef);
|
||
|
||
star('Converting "'+s+'" ('+cstr(filesize(mbasef1)-1)+' messages)');
|
||
|
||
for i:=0 to filesize(mbasef1)-1 do begin
|
||
seek(mbasef1,i); read(mbasef1,mbase1);
|
||
with mbase1 do begin
|
||
mbase.title:=title;
|
||
if (messagestat=validated1) then mbase.messagestat:=[validated];
|
||
if (messagestat=unvalidated1) then mbase.messagestat:=[unvalidated];
|
||
if (messagestat=deleted1) then mbase.messagestat:=[deleted];
|
||
mbase.message.ltr:=message.ltr;
|
||
mbase.message.number:=message.number;
|
||
mbase.message.ext:=message.ext;
|
||
mbase.owner:=owner;
|
||
mbase.date:=mbase1.date;
|
||
mbase.nacc:=0;
|
||
end;
|
||
write(mbasef,mbase);
|
||
end;
|
||
|
||
close(mbasef);
|
||
close(mbasef1);
|
||
rename(mbasef,copy(s,1,length(s)-3)+'obr');
|
||
|
||
nfile;
|
||
until (not found);
|
||
ffile('*.obr');
|
||
while (found) do begin
|
||
s:=dirinfo.name;
|
||
assign(mbasef1,copy(s,1,length(s)-3)+'brd');
|
||
rename(mbasef1,copy(s,1,length(s)-3)+'old');
|
||
assign(mbasef,s); rename(mbasef,copy(s,1,length(s)-3)+'brd');
|
||
nfile;
|
||
end;
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
13:begin
|
||
ttl('Converting "*.MNU" menu files');
|
||
chdir(copy(mp,1,length(mp)-1));
|
||
ffile('*.mnu');
|
||
if not found then star('No *.MNU files present.')
|
||
else begin
|
||
repeat
|
||
|
||
{ Converts MNU --> TCP, and only upon successful conversion of
|
||
ALL MNU files does "CO" rename all MNU --> OLD,
|
||
and TCP --> MNU }
|
||
|
||
s:=dirinfo.name;
|
||
assign(mf1,copy(s,1,length(s)-3)+'OLD'); rewrite(mf1); close(mf1);
|
||
erase(mf1);
|
||
|
||
assign(mf1,copy(s,1,length(s)-3)+'TCP'); rewrite(mf1); close(mf1);
|
||
erase(mf1);
|
||
|
||
if (ioresult<>0) then star('Error renaming "'+s+'" - Nothing done.')
|
||
else begin
|
||
assign(mf1,s); {$I-} reset(mf1); {$I+}
|
||
assign(mf,copy(s,1,length(s)-3)+'TCP'); {$I-} rewrite(mf); {$I+}
|
||
|
||
star('Converting "'+s+'"');
|
||
|
||
for i:=1 to 13 do readln(mf1,menuline[i]);
|
||
|
||
writeln(mf,menuline[1]);
|
||
writeln(mf,'');
|
||
writeln(mf,'');
|
||
writeln(mf,menuline[2]);
|
||
writeln(mf,menuline[3]);
|
||
writeln(mf,menuline[4]);
|
||
|
||
b1:=(pos('D',menuline[13])<>0);
|
||
s1:='';
|
||
if (value(menuline[5])>0) then
|
||
if (b1) then s1:=s1+'d'+menuline[5]
|
||
else s1:=s1+'s'+menuline[5];
|
||
if (menuline[6][1] in ['A'..'Z']) then s1:=s1+'f'+menuline[6][1];
|
||
writeln(mf,s1);
|
||
|
||
writeln(mf,menuline[7]);
|
||
writeln(mf,menuline[8]);
|
||
|
||
s1:='0';
|
||
if (pos('H',menuline[13])<>0) then s1:='2';
|
||
writeln(mf,s1);
|
||
|
||
writeln(mf,menuline[9]);
|
||
writeln(mf,menuline[10]);
|
||
writeln(mf,menuline[11]);
|
||
writeln(mf,menuline[12]);
|
||
s1:=menuline[13];
|
||
if (pos('D',s1)<>0) then delete(s1,pos('D',s1),1);
|
||
if (pos('H',s1)<>0) then delete(s1,pos('H',s1),1);
|
||
writeln(mf,s1);
|
||
|
||
repeat
|
||
nocopy:=FALSE;
|
||
|
||
for i:=1 to 8 do readln(mf1,menuline[i]);
|
||
|
||
if (not nocopy) then begin
|
||
writeln(mf,menuline[1]);
|
||
writeln(mf,menuline[2]);
|
||
writeln(mf,menuline[3]);
|
||
|
||
b1:=(pos('D',menuline[8])<>0);
|
||
b2:=(pos('C',menuline[8])<>0);
|
||
s1:='';
|
||
if (value(menuline[4])>0) then
|
||
if (b1) then s1:=s1+'d'+menuline[4]
|
||
else s1:=s1+'s'+menuline[4];
|
||
if ((b2) and (value(menuline[4])>0) and
|
||
(menuline[5][1] in ['A'..'Z'])) then s1:=s1+'|';
|
||
if (menuline[5][1] in ['A'..'Z']) then s1:=s1+'f'+menuline[5][1];
|
||
writeln(mf,s1);
|
||
|
||
writeln(mf,menuline[6]);
|
||
writeln(mf,menuline[7]);
|
||
s1:=menuline[8];
|
||
if (pos('C',s1)<>0) then delete(s1,pos('C',s1),1);
|
||
if (pos('D',s1)<>0) then delete(s1,pos('D',s1),1);
|
||
if (pos('H',s1)<>0) then delete(s1,pos('H',s1),1)
|
||
else s1:=s1+'U';
|
||
writeln(mf,s1);
|
||
end;
|
||
until (eof(mf1));
|
||
|
||
close(mf);
|
||
close(mf1);
|
||
end;
|
||
nfile;
|
||
until (not found);
|
||
|
||
ffile('*.TCP');
|
||
repeat
|
||
s:=dirinfo.name;
|
||
assign(mf1,copy(s,1,length(s)-3)+'MNU');
|
||
rename(mf1,copy(s,1,length(s)-3)+'OLD');
|
||
assign(mf,s);
|
||
rename(mf,copy(s,1,length(s)-3)+'MNU');
|
||
nfile;
|
||
until (not found);
|
||
|
||
end;
|
||
chdir(sp);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure convert(xx:integer);
|
||
var s:astr;
|
||
i,j,k:integer;
|
||
c:char;
|
||
begin
|
||
case xx of
|
||
0 :c:='S';
|
||
1..9 :c:=chr(xx+48);
|
||
10..20:c:=chr(xx+55);
|
||
end;
|
||
if (needc(c)) then
|
||
if (back) then bconvert(xx) else fconvert(xx);
|
||
end;
|
||
|
||
begin
|
||
if (standard_conversion) then ver:=s_ver;
|
||
|
||
infield_out_fgrd:=15;
|
||
infield_out_bkgd:=1;
|
||
infield_inp_fgrd:=0;
|
||
infield_inp_bkgd:=7;
|
||
|
||
getdir(0,sp);
|
||
aw:=FALSE;
|
||
didit:=FALSE;
|
||
if paramcount>0 then if allcaps(paramstr(1))='C' then aw:=TRUE;
|
||
savx:=wherex; savy:=wherey;
|
||
setwindow(wind,1,1,80,25,7,0,0);
|
||
clrscr;
|
||
textbackground(1); textcolor(15); clreol;
|
||
write(' Telegard Conversion for '+ver1+' <10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+ver);
|
||
textbackground(0);
|
||
window(1,2,80,25); clrscr;
|
||
tc(14);
|
||
writeln;
|
||
writeln('This program is provided to add/modify/create files used by Telegard to');
|
||
writeln('make it 100% functional under the '+ver+' environment. This file MUST');
|
||
writeln('be ran in the directory in which STATUS.DAT is found, and STATUS.DAT MUST');
|
||
writeln('be in '+ver1+' format!!! If STATUS.DAT is not in the current directory,');
|
||
writeln('or if you have already ran this program (STATUS.DAT has already been');
|
||
writeln('converted), this program will abort.');
|
||
writeln;
|
||
tc(9); write('Hit any key to continue (<ESC> to abort NOW) : ');
|
||
repeat until keypressed;
|
||
c:=readkey;
|
||
if (c=#27) then ee('ABORTED CONVERSION');
|
||
|
||
repeat
|
||
clrscr;
|
||
fvers;
|
||
|
||
if (not aw) then begin
|
||
writeln;
|
||
star('WARNING! This conversion program needs APPROXIMATELY');
|
||
star(cstrl(needs)+' bytes free on your main BBS drive!!!!!!!!');
|
||
writeln;
|
||
star('You currently have '+cstrl(freek(0)*1024)+' bytes left on the current drive.');
|
||
writeln;
|
||
star('If you DO NOT have enough space left, your drive will probably');
|
||
star('explode, and your house will burn to the ground. If you are');
|
||
star('skeptical of this, feel free to call Garfield, SysOp of Electric');
|
||
star('Eye ][ BBS (313/776-8928), who can tell you how bad HIS messed up');
|
||
star('when he converted from 1.6d3 --> 1.6e1 with only 500k!');
|
||
writeln;
|
||
if (not l_pynq('Proceed? ')) then ee('Aborted conversion');
|
||
end;
|
||
|
||
clrscr;
|
||
writeln;
|
||
if aw then begin
|
||
for i:=0 to 13 do begin
|
||
if (i>=1) and (i<=9) then c:=chr(i+48) else
|
||
if (i=0) then c:='S' else
|
||
if (i>=10) then c:=chr(i+55);
|
||
if needc(c) then begin
|
||
tc(9); write('['+cstr(i)+'] ');
|
||
if i<10 then write(' ');
|
||
tc(11);
|
||
case i of
|
||
0:write('(S)tatus.dat');
|
||
1:write('names.lst');
|
||
2:write('user.lst');
|
||
3:write('boards.dat');
|
||
4:write('email.dat');
|
||
5:write('gfiles.dat');
|
||
6:write('protocol.dat');
|
||
7:write('shortmsg.dat');
|
||
8:write('uploads.dat');
|
||
9:write('voting.dat');
|
||
10:write('zlog.dat');
|
||
11:write(gp+'*.dir');
|
||
12:write(gp+'*.brd');
|
||
13:write(mp+'*.mnu');
|
||
end;
|
||
writeln;
|
||
end;
|
||
end;
|
||
writeln;
|
||
tc(14); write('Enter # to convert, [A]ll or [Q]uit :');
|
||
tc(9); readln(a); a:=allcaps(a);
|
||
|
||
j:=value(a);
|
||
end else
|
||
a:='A';
|
||
|
||
if (j=0) then
|
||
if (copy(a,1,1)='S') then j:=0 else j:=-1;
|
||
|
||
if (copy(a,1,1)<>'Q') or ((j>=0) and (j<=13)) then begin
|
||
writeln;
|
||
if aw then begin
|
||
tc(14); write('[1]Convert to '+ver+' - [2]Convert back to '+ver1+' : ');
|
||
tc(9); readln(b); b:=allcaps(b);
|
||
h:=value(b);
|
||
end else
|
||
h:=1;
|
||
|
||
if (h in [1,2]) then begin
|
||
clrscr; tc(15);
|
||
back:=FALSE;
|
||
if h=2 then back:=TRUE;
|
||
if back then begin
|
||
tc(31);
|
||
writeln('Convert '+ver+' <10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+ver1);
|
||
end else
|
||
writeln('Convert '+ver1+' <10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+ver);
|
||
writeln;
|
||
tc(4); write('WARNING: ');
|
||
tc(12);
|
||
if back then writeln('If files are not in version '+ver+' format,') else
|
||
writeln('If files are NOT in version '+ver1+' format,');
|
||
writeln('the data will be COMPLETELY LOST *FOREVER*!!');
|
||
writeln;
|
||
writeln;
|
||
tc(14); writeln('ARE YOU ABSOLUTELY SURE?');
|
||
writeln('(Enter "YES" in ALL CAPS, without quotes, if you are...)');
|
||
write(':');
|
||
readln(b);
|
||
|
||
if b='YES' then begin
|
||
clrscr;
|
||
|
||
if copy(a,1,1)<>'A' then convert(j)
|
||
else begin
|
||
for i:=0 to 13 do convert(i);
|
||
{ ttl('Moving new files into their directories');
|
||
smovefile('protocol.dat',systat.gfilepath);
|
||
smovefile('sysfunc.ans',systat.afilepath);}
|
||
end;
|
||
didit:=TRUE;
|
||
end;
|
||
end;
|
||
end;
|
||
if (not aw) then a:='Q';
|
||
until copy(a,1,1)='Q';
|
||
|
||
writeln;
|
||
star('Press any key...'); c:=readkey;
|
||
clrscr;
|
||
removewindow(wind);
|
||
|
||
if didit then begin
|
||
setwindow(wind,20,11,59,17,9,1,1);
|
||
clrscr; tc(15);
|
||
gotoxy(4,3);
|
||
write('Thank you for choosing Telegard!');
|
||
CursorOff; delay(1500); CursorOn;
|
||
removewindow(wind);
|
||
end;
|
||
gotoxy(savx,savy);
|
||
chdir(sp);
|
||
end.
|