This commit is contained in:
Ryan C. Gordon 2000-11-19 10:49:44 +00:00
parent 8aa894321a
commit b9ddaf6f0e
16 changed files with 268 additions and 102 deletions

View File

@ -8,6 +8,24 @@
the RTL changes to 1.0.2 ... the RTL changes to 1.0.2 ...
* Updated Makefile to be more sane. Compiles just programs (not units), * Updated Makefile to be more sane. Compiles just programs (not units),
doesn't smartlink on debug builds, etc... doesn't smartlink on debug builds, etc...
* Success in getting DOS->Unix path conversion in the RTL. Submitting
patch to FreePascal maintainers...
* Patches to init.pas to remove DOSification.
* Fixed (hah) Y2K bugs in multiple copies of daynum().
* Initial reaction from FreePascal maintainers is not good; started
converting DOSisms manually in the Telegard codebase...
* Why can't I get GDB to recognize debug symbols in most of my code? Grr.
* Removed remaining stubs from init.pas...this required hacking some
data structures...I'm not sure how this worked in the DOS version in this
state, but I'm pretty certain I've just destroyed compatibility. Oh well.
If the Y2K bug I found is any indication, no one's using the DOS version
anymore to be upset about this.
* Fixed init.pas bug in make_paths()...last dir (SWAP) was not created.
* No longer prints a caps() version of path in initp.pas's show_initfile().
* Added NormVideo() call to end of init.pas and bbs.pas...
* What the hell is "Project Coyote?" This is so clearly an ancient revision
of the source, that was probably half-hacked when I got it.
* More stubs, more filename lowercasing.
2000-11-17 Ryan C. Gordon <icculus@lokigames.com> 2000-11-17 Ryan C. Gordon <icculus@lokigames.com>

View File

@ -14,7 +14,7 @@ cpu=686
debug=true debug=true
# want to see more verbose compiles? Set this to "true". # want to see more verbose compiles? Set this to "true".
verbose=true verbose=false
# You probably don't need to touch this one. This is the location of # You probably don't need to touch this one. This is the location of
# your copy of PPC386, if it's not in the path. # your copy of PPC386, if it's not in the path.
@ -24,22 +24,6 @@ PPC386=ppc386
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# don't touch anything below this line. # don't touch anything below this line.
# This are the names of the produced binaries.
MAINEXE=bbs
MINITERMEXE=miniterm
INITEXE=init
TPAGEEXE=tpage
IFLEXE=ifl
FINDITEXE=findit
T2TEXE=t2t
OBLITEXE=oblit
MTESTEXE=mtest
BBEXE=bb
CBBSEXE=cbbs
MABSEXE=mabs
COCONFIGEXE=coconfig
SPDATEEXE=spdate
ifeq ($(strip $(verbose)),true) ifeq ($(strip $(verbose)),true)
PPC386FLAGS += -vwnh PPC386FLAGS += -vwnh
endif endif
@ -47,11 +31,11 @@ endif
ifeq ($(strip $(debug)),true) ifeq ($(strip $(debug)),true)
BUILDDIR := $(cpu)/Debug BUILDDIR := $(cpu)/Debug
PPC386FLAGS += -g # include debug symbols. PPC386FLAGS += -g # include debug symbols.
PPC386FLAGS += -gc # generate checks for pointers. #PPC386FLAGS += -gc # generate checks for pointers.
PPC386FLAGS += -Ct # generate stack-checking code. #PPC386FLAGS += -Ct # generate stack-checking code.
PPC386FLAGS += -Cr # generate range-checking code. #PPC386FLAGS += -Cr # generate range-checking code.
PPC386FLAGS += -Co # generate overflow-checking code. #PPC386FLAGS += -Co # generate overflow-checking code.
PPC386FLAGS += -Ci # generate I/O-checking code. #PPC386FLAGS += -Ci # generate I/O-checking code.
else else
BUILDDIR := $(cpu)/Release BUILDDIR := $(cpu)/Release
PPC386FLAGS += -Xs # strip the binary. PPC386FLAGS += -Xs # strip the binary.
@ -73,7 +57,7 @@ else
endif endif
endif endif
# Borland TP7.0 compatibility flag. # Rebuild all units needed.
PPC386FLAGS += -B PPC386FLAGS += -B
# Borland TP7.0 compatibility flag. # Borland TP7.0 compatibility flag.
@ -86,10 +70,10 @@ PPC386FLAGS += -Sg
#PPC386FLAGS += -Sm #PPC386FLAGS += -Sm
# Assembly statements are Intel-like (instead of AT&T-like). # Assembly statements are Intel-like (instead of AT&T-like).
PPC386FLAGS += -Rintel #PPC386FLAGS += -Rintel
# Output target Linux. !!! FIXME: Want win32 compiles? # Output target Linux. !!! FIXME: Want win32 compiles?
PPC386FLAGS += -TLINUX #PPC386FLAGS += -TLINUX
# Pipe output to assembler, rather than to temp file. This is a little faster. # Pipe output to assembler, rather than to temp file. This is a little faster.
#PPC386FLAGS += -P #PPC386FLAGS += -P
@ -97,6 +81,22 @@ PPC386FLAGS += -TLINUX
# Write bins to this directory... # Write bins to this directory...
PPC386FLAGS += -FE$(BUILDDIR) PPC386FLAGS += -FE$(BUILDDIR)
# This are the names of the produced binaries.
MAINEXE=$(BUILDDIR)/bbs
MINITERMEXE=$(BUILDDIR)/miniterm
INITEXE=$(BUILDDIR)/init
TPAGEEXE=$(BUILDDIR)/tpage
IFLEXE=$(BUILDDIR)/ifl
FINDITEXE=$(BUILDDIR)/findit
T2TEXE=$(BUILDDIR)/t2t
OBLITEXE=$(BUILDDIR)/oblit
MTESTEXE=$(BUILDDIR)/mtest
BBEXE=$(BUILDDIR)/bb
CBBSEXE=$(BUILDDIR)/cbbs
MABSEXE=$(BUILDDIR)/mabs
COCONFIGEXE=$(BUILDDIR)/coconfig
SPDATEEXE=$(BUILDDIR)/spdate
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build rules...don't touch this, either. # Build rules...don't touch this, either.
@ -108,49 +108,49 @@ $(BUILDDIR)/%.o : %.pas
$(PPC386) $(PPC386FLAGS) $< $(PPC386) $(PPC386FLAGS) $<
all: $(BUILDDIR) $(MAINEXE) $(MINITERMEXE) $(INITEXE) $(TPAGEEXE) $(IFLEXE) \ all: $(BUILDDIR) $(MAINEXE) $(MINITERMEXE) $(INITEXE) $(TPAGEEXE) $(IFLEXE) \
$(FINDITEXE) $(T2TEXE) $(OBLITEXE) $(MTESTEXE) $(BBEXE) $(CBBSEXE) \ $(FINDITEXE) $(OBLITEXE) $(MTESTEXE) $(BBEXE) $(CBBSEXE) \
$(MABSEXE) $(COCONFIGEXE) $(SPDATEEXE) $(MABSEXE) $(COCONFIGEXE) $(SPDATEEXE) $(T2TEXE)
$(MAINEXE) : $(BUILDDIR) $(OBJS) bbs.pas $(MAINEXE) : $(BUILDDIR) bbs.pas
$(PPC386) $(PPC386FLAGS) bbs.pas $(PPC386) $(PPC386FLAGS) bbs.pas
$(MINITERMEXE) : $(BUILDDIR) $(OBJS) miniterm.pas $(MINITERMEXE) : $(BUILDDIR) miniterm.pas
$(PPC386) $(PPC386FLAGS) miniterm.pas $(PPC386) $(PPC386FLAGS) miniterm.pas
$(INITEXE) : $(BUILDDIR) $(OBJS) init.pas $(INITEXE) : $(BUILDDIR) init.pas
$(PPC386) $(PPC386FLAGS) init.pas $(PPC386) $(PPC386FLAGS) init.pas
$(TPAGEEXE) : $(BUILDDIR) $(OBJS) tpage.pas $(TPAGEEXE) : $(BUILDDIR) tpage.pas
$(PPC386) $(PPC386FLAGS) tpage.pas $(PPC386) $(PPC386FLAGS) tpage.pas
$(IFLEXE) : $(BUILDDIR) $(OBJS) ifl.pas $(IFLEXE) : $(BUILDDIR) ifl.pas
$(PPC386) $(PPC386FLAGS) ifl.pas $(PPC386) $(PPC386FLAGS) ifl.pas
$(FINDITEXE) : $(BUILDDIR) $(OBJS) findit.pas $(FINDITEXE) : $(BUILDDIR) findit.pas
$(PPC386) $(PPC386FLAGS) findit.pas $(PPC386) $(PPC386FLAGS) findit.pas
$(T2TEXE) : $(BUILDDIR) $(OBJS) t2t.pas $(T2TEXE) : $(BUILDDIR) t2t.pas
$(PPC386) $(PPC386FLAGS) t2t.pas $(PPC386) $(PPC386FLAGS) t2t.pas
$(OBLITEXE) : $(BUILDDIR) $(OBJS) t2t.pas $(OBLITEXE) : $(BUILDDIR) oblit.pas
$(PPC386) $(PPC386FLAGS) t2t.pas $(PPC386) $(PPC386FLAGS) oblit.pas
$(MTESTEXE) : $(BUILDDIR) $(OBJS) mtest.pas $(MTESTEXE) : $(BUILDDIR) mtest.pas
$(PPC386) $(PPC386FLAGS) mtest.pas $(PPC386) $(PPC386FLAGS) mtest.pas
$(BBEXE) : $(BUILDDIR) $(OBJS) bb.pas $(BBEXE) : $(BUILDDIR) bb.pas
$(PPC386) $(PPC386FLAGS) bb.pas $(PPC386) $(PPC386FLAGS) bb.pas
$(CBBSEXE) : $(BUILDDIR) $(OBJS) cbbs.pas $(CBBSEXE) : $(BUILDDIR) cbbs.pas
$(PPC386) $(PPC386FLAGS) cbbs.pas $(PPC386) $(PPC386FLAGS) cbbs.pas
$(MABSEXE) : $(BUILDDIR) $(OBJS) mabs.pas $(MABSEXE) : $(BUILDDIR) mabs.pas
$(PPC386) $(PPC386FLAGS) mabs.pas $(PPC386) $(PPC386FLAGS) mabs.pas
$(COCONFIGEXE) : $(BUILDDIR) $(OBJS) coconfig.pas $(COCONFIGEXE) : $(BUILDDIR) coconfig.pas
$(PPC386) $(PPC386FLAGS) coconfig.pas $(PPC386) $(PPC386FLAGS) coconfig.pas
$(SPDATEEXE) : $(BUILDDIR) $(OBJS) spdate.pas $(SPDATEEXE) : $(BUILDDIR) spdate.pas
$(PPC386) $(PPC386FLAGS) spdate.pas $(PPC386) $(PPC386FLAGS) spdate.pas
$(BUILDDIR): $(cpu) $(BUILDDIR): $(cpu)

View File

@ -73,7 +73,14 @@ begin
t:=0; t:=0;
m:=value(copy(dt,1,2)); m:=value(copy(dt,1,2));
d:=value(copy(dt,4,2)); d:=value(copy(dt,4,2));
{rcg11182000 hahahaha...a Y2K bug. :) }
y:=value(copy(dt,7,2))+1900; y:=value(copy(dt,7,2))+1900;
{rcg11182000 added this conditional. }
if (y < 1977) then { Ugh...this is so bad. }
y := y + 100;
for c:=1985 to y-1 do for c:=1985 to y-1 do
if leapyear(c) then t:=t+366 else t:=t+365; if leapyear(c) then t:=t+366 else t:=t+365;
t:=t+daycount(m,y)+(d-1); t:=t+daycount(m,y)+(d-1);

View File

@ -1205,7 +1205,14 @@ begin
t:=0; t:=0;
m:=value(copy(dt,1,2)); m:=value(copy(dt,1,2));
d:=value(copy(dt,4,2)); d:=value(copy(dt,4,2));
{rcg11182000 hahahaha...a Y2K bug. :) }
y:=value(copy(dt,7,2))+1900; y:=value(copy(dt,7,2))+1900;
{rcg11182000 added this conditional. }
if (y < 1977) then { Ugh...this is so bad. }
y := y + 100;
for c:=1985 to y-1 do for c:=1985 to y-1 do
if (leapyear(c)) then inc(t,366) else inc(t,365); if (leapyear(c)) then inc(t,366) else inc(t,365);
t:=t+daycount(m,y)+(d-1); t:=t+daycount(m,y)+(d-1);
@ -2725,15 +2732,20 @@ var s:string;
i,j:integer; i,j:integer;
abort,next:boolean; abort,next:boolean;
begin begin
fn:=allcaps(fn); s:=fn; {rcg11182000 moved this allcaps into the first IF, for case-sensitive fs.}
if (copy(fn,length(fn)-3,4)='.ANS') then begin {fn:=allcaps(fn); s:=fn;}
if (exist(copy(fn,1,length(fn)-4)+'.AN1')) then {if (copy(fn,length(fn)-3,4)='.ANS') then begin}
{rcg11182000 lowercased rest of extentions.}
s:=fn;
if (allcaps(copy(fn,length(fn)-3,4))='.ANS') then begin
if (exist(copy(fn,1,length(fn)-4)+'.an1')) then
repeat repeat
i:=random(10); i:=random(10);
if (i=0) then if (i=0) then
fn:=copy(fn,1,length(fn)-4)+'.ANS' fn:=copy(fn,1,length(fn)-4)+'.ans'
else else
fn:=copy(fn,1,length(fn)-4)+'.AN'+cstr(i); fn:=copy(fn,1,length(fn)-4)+'.an'+cstr(i);
until (exist(fn)); until (exist(fn));
getdate(year,month,day,dayofweek); getdate(year,month,day,dayofweek);
@ -2750,7 +2762,9 @@ begin
nofile:=TRUE; nofile:=TRUE;
fn:=sqoutsp(fn); fn:=sqoutsp(fn);
if (fn='') then exit; if (fn='') then exit;
if (pos('\',fn)<>0) then j:=1 {rcg11182000 dosism.}
{if (pos('\',fn)<>0) then j:=1}
if (pos('/',fn)<>0) then j:=1
else begin else begin
j:=2; j:=2;
fsplit(fexpand(fn),ps,ns,es); fsplit(fexpand(fn),ps,ns,es);
@ -2759,7 +2773,9 @@ begin
end; end;
for i:=1 to j do begin for i:=1 to j do begin
ffn:=fn; ffn:=fn;
if ((pos('\',fn)=0) and (pos(':',fn)=0)) then {rcg11182000 dosism.}
{if ((pos('\',fn)=0) and (pos(':',fn)=0)) then}
if ((pos('/',fn)=0) and (pos(':',fn)=0)) then
case i of case i of
1:ffn:=systat.afilepath+ffn; 1:ffn:=systat.afilepath+ffn;
2:ffn:=systat.gfilepath+ffn; 2:ffn:=systat.gfilepath+ffn;

View File

@ -192,7 +192,14 @@ begin
t:=0; t:=0;
m:=value(copy(dt,1,2)); m:=value(copy(dt,1,2));
d:=value(copy(dt,4,2)); d:=value(copy(dt,4,2));
{rcg11182000 hahahaha...a Y2K bug. :) }
y:=value(copy(dt,7,2))+1900; y:=value(copy(dt,7,2))+1900;
{rcg11182000 added this conditional. }
if (y < 1977) then { Ugh...this is so bad. }
y := y + 100;
for c:=1985 to y-1 do for c:=1985 to y-1 do
if leapyear(c) then t:=t+366 else t:=t+365; if leapyear(c) then t:=t+366 else t:=t+365;
t:=t+daycount(m,y)+(d-1); t:=t+daycount(m,y)+(d-1);

View File

@ -217,7 +217,14 @@ begin
t:=0; t:=0;
m:=value(copy(dt,1,2)); m:=value(copy(dt,1,2));
d:=value(copy(dt,4,2)); d:=value(copy(dt,4,2));
{rcg11182000 hahahaha...a Y2K bug. :) }
y:=value(copy(dt,7,2))+1900; y:=value(copy(dt,7,2))+1900;
{rcg11182000 added this conditional. }
if (y < 1977) then { Ugh...this is so bad. }
y := y + 100;
for c:=1985 to y-1 do for c:=1985 to y-1 do
if leapyear(c) then t:=t+366 else t:=t+365; if leapyear(c) then t:=t+366 else t:=t+365;
t:=t+daycount(m,y)+(d-1); t:=t+daycount(m,y)+(d-1);

View File

@ -202,7 +202,14 @@ begin
t:=0; t:=0;
m:=value(copy(dt,1,2)); m:=value(copy(dt,1,2));
d:=value(copy(dt,4,2)); d:=value(copy(dt,4,2));
{rcg11182000 hahahaha...a Y2K bug. :) }
y:=value(copy(dt,7,2))+1900; y:=value(copy(dt,7,2))+1900;
{rcg11182000 added this conditional. }
if (y < 1977) then { Ugh...this is so bad. }
y := y + 100;
for c:=1985 to y-1 do for c:=1985 to y-1 do
if leapyear(c) then t:=t+366 else t:=t+365; if leapyear(c) then t:=t+366 else t:=t+365;
t:=t+daycount(m,y)+(d-1); t:=t+daycount(m,y)+(d-1);

View File

@ -155,10 +155,11 @@ begin
else else
ulffopen1:=FALSE; ulffopen1:=FALSE;
loaduboard(fileboard); loaduboard(fileboard);
{rcg11182000 lowercased these ".DIR" strings...}
if (fbdirdlpath in memuboard.fbstat) then if (fbdirdlpath in memuboard.fbstat) then
assign(ulff,memuboard.dlpath+memuboard.filename+'.DIR') assign(ulff,memuboard.dlpath+memuboard.filename+'.dir')
else else
assign(ulff,systat.gfilepath+memuboard.filename+'.DIR'); assign(ulff,systat.gfilepath+memuboard.filename+'.dir');
{$I-} reset(ulff); {$I+} {$I-} reset(ulff); {$I+}
if (ioresult<>0) then begin if (ioresult<>0) then begin
rewrite(ulff); rewrite(ulff);

View File

@ -535,7 +535,8 @@ begin
dd(abort,next,'Archive format ....... :','"'+s+'"',(arctype<>0)); dd(abort,next,'Archive format ....... :','"'+s+'"',(arctype<>0));
if (fso) then begin if (fso) then begin
nl; nl;
dd(abort,next,'Filename ...... :','"'+filename+'.DIR"',TRUE); {rcg11182000 lowercased this ".DIR" strings...}
dd(abort,next,'Filename ...... :','"'+filename+'.dir"',TRUE);
dd(abort,next,'DL file path .. :','"'+dlpath+'"',TRUE); dd(abort,next,'DL file path .. :','"'+dlpath+'"',TRUE);
end; end;
end; end;

114
init.pas
View File

@ -109,8 +109,12 @@ end;
function exdrv(s:astr):byte; function exdrv(s:astr):byte;
begin begin
{rcg11172000 always 'C' under Linux...}
{
s:=fexpand(s); s:=fexpand(s);
exdrv:=ord(s[1])-64; exdrv:=ord(s[1])-64;
}
exdrv := 3;
end; end;
function leapyear(yr:integer):boolean; function leapyear(yr:integer):boolean;
@ -152,7 +156,14 @@ begin
t:=0; t:=0;
m:=value(copy(dt,1,2)); m:=value(copy(dt,1,2));
d:=value(copy(dt,4,2)); d:=value(copy(dt,4,2));
{rcg11182000 hahahaha...a Y2K bug. :) }
y:=value(copy(dt,7,2))+1900; y:=value(copy(dt,7,2))+1900;
{rcg11182000 added this conditional. }
if (y < 1977) then { Ugh...this is so bad. }
y := y + 100;
for c:=1985 to y-1 do for c:=1985 to y-1 do
if (leapyear(c)) then inc(t,366) else inc(t,365); if (leapyear(c)) then inc(t,366) else inc(t,365);
t:=t+daycount(m,y)+(d-1); t:=t+daycount(m,y)+(d-1);
@ -227,6 +238,9 @@ begin
assign(src,srcname); assign(src,srcname);
{$I-} reset(src,1); {$I+} {$I-} reset(src,1); {$I+}
if (ioresult<>0) then begin ok:=FALSE; exit; end; if (ioresult<>0) then begin ok:=FALSE; exit; end;
{rcg11172000 why bother checking total disk space in a modern OS?}
{
dfs:=freek(exdrv(destname)); dfs:=freek(exdrv(destname));
fs:=trunc(filesize(src)/1024.0)+1; fs:=trunc(filesize(src)/1024.0)+1;
if (fs>=dfs) then begin if (fs>=dfs) then begin
@ -234,6 +248,8 @@ begin
nospace:=TRUE; ok:=FALSE; nospace:=TRUE; ok:=FALSE;
exit; exit;
end else begin end else begin
}
assign(dest,destname); assign(dest,destname);
{$I-} rewrite(dest,1); {$I+} {$I-} rewrite(dest,1); {$I+}
if (ioresult<>0) then begin ok:=FALSE; exit; end; if (ioresult<>0) then begin ok:=FALSE; exit; end;
@ -244,7 +260,9 @@ begin
close(dest); close(src); close(dest); close(src);
dodate; dodate;
erase(src); erase(src);
end;
{rcg11172000 why bother checking total disk space in a modern OS?}
{end;}
end; end;
procedure ffile(fn:string); procedure ffile(fn:string);
@ -287,7 +305,9 @@ end;
function make_path(s:string):boolean; function make_path(s:string):boolean;
begin begin
while (copy(s,length(s),1)='\') do s:=copy(s,1,length(s)-1); {rcg11182000 dosism.}
{while (copy(s,length(s),1)='\') do s:=copy(s,1,length(s)-1);}
while (copy(s,length(s),1)='/') do s:=copy(s,1,length(s)-1);
make_path:=TRUE; make_path:=TRUE;
{$I-} mkdir(fexpand(s)); {$I+} {$I-} mkdir(fexpand(s)); {$I+}
if (ioresult<>0) then begin if (ioresult<>0) then begin
@ -300,19 +320,30 @@ end;
procedure make_paths; procedure make_paths;
var s:string; var s:string;
begin begin
for i:=1 to 7 do begin
while copy(path[i],length(path[i]),1)='\' do {rcg11182000 1 to 7? Swap path is excluded...}
{for i:=1 to 7 do begin}
for i:=1 to 8 do begin
{rcg11182000 dosism.}
{while copy(path[i],length(path[i]),1)='\' do}
while copy(path[i],length(path[i]),1)='/' do
path[i]:=copy(path[i],1,length(path[i])-1); 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'; case i of 1:s:='GFILES'; 2:s:='MSGS'; 3:s:='MENUS'; 4:s:='TFILES';
5:s:='AFILES'; 6:s:='TRAP'; 7:s:='TEMP'; 8:s:='SWAP'; end; 5:s:='AFILES'; 6:s:='TRAP'; 7:s:='TEMP'; 8:s:='SWAP'; end;
star(s+' path ("'+fexpand(path[i])+'")'); star(s+' path ("'+fexpand(path[i])+'")');
if (not make_path(path[i])) then halt(1); if (not make_path(path[i])) then halt(1);
path[i]:=path[i]+'\'; {rcg11182000 dosism.}
{path[i]:=path[i]+'\';}
path[i]:=path[i]+'/';
end; end;
(* star('Creating EMAIL and GENERAL message paths'); (* star('Creating EMAIL and GENERAL message paths');
if (not make_path(path[2]+'EMAIL\')) then halt(1); if (not make_path(path[2]+'EMAIL\')) then halt(1);
if (not make_path(path[2]+'GENERAL\')) then halt(1);*) if (not make_path(path[2]+'GENERAL\')) then halt(1);*)
star('Creating SYSOP and MISC file paths'); star('Creating SYSOP and MISC file paths');
{rcg11182000 dosisms.}
{
if (not make_path('DLS\')) then halt(1); if (not make_path('DLS\')) then halt(1);
if (not make_path('DLS\SYSOP')) then halt(1); if (not make_path('DLS\SYSOP')) then halt(1);
if (not make_path('DLS\MISC')) then halt(1); if (not make_path('DLS\MISC')) then halt(1);
@ -320,6 +351,14 @@ begin
if (not make_path(path[7]+'1\')) then halt(1); 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]+'2\')) then halt(1);
if (not make_path(path[7]+'3\')) then halt(1); if (not make_path(path[7]+'3\')) then halt(1);
}
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; end;
procedure make_status_dat; procedure make_status_dat;
@ -557,6 +596,7 @@ begin
swappath:=path[8]; swappath:=path[8];
for i:=1 to 119 do res[i]:=0; for i:=1 to 119 do res[i]:=0;
end; end;
assign(systatf,'status.dat'); assign(systatf,'status.dat');
rewrite(systatf); write(systatf,systat); close(systatf); rewrite(systatf); write(systatf,systat); close(systatf);
end; end;
@ -810,7 +850,9 @@ begin
with ufr do begin with ufr do begin
name:='SysOp directory'; name:='SysOp directory';
filename:='SYSOP'; filename:='SYSOP';
dlpath:=curdir+'\DLS\SYSOP\'; {rcg11182000 dosisms}
{dlpath:=curdir+'\DLS\SYSOP\';}
dlpath:=curdir+'/DLS/SYSOP/';
ulpath:=dlpath; ulpath:=dlpath;
maxfiles:=2000; maxfiles:=2000;
password:=''; password:='';
@ -828,7 +870,9 @@ begin
with ufr do begin with ufr do begin
name:='Miscellaneous'; name:='Miscellaneous';
filename:='MISC'; filename:='MISC';
dlpath:=curdir+'\DLS\MISC\'; {rcg11182000 dosisms}
{dlpath:=curdir+'\DLS\MISC\';}
dlpath:=curdir+'/DLS/MISC/';
ulpath:=dlpath; ulpath:=dlpath;
maxfiles:=2000; maxfiles:=2000;
password:=''; password:='';
@ -883,8 +927,6 @@ procedure savemhead1(var brdf:file; mhead:mheaderrec);
end; end;
begin begin
{rcg11172000 this is fooked.}
{
with mhead do begin with mhead do begin
blockwrite(brdf,signature,4); blockwrite(brdf,signature,4);
blockwrite(brdf,msgptr,4); blockwrite(brdf,msgptr,4);
@ -895,9 +937,6 @@ begin
outftinfo(toi); outftinfo(toi);
blockwritestr(brdf,originsite); blockwritestr(brdf,originsite);
end; end;
}
writeln('STUB: init.pas; savemhead1()...');
end; end;
procedure make_email_brd; procedure make_email_brd;
@ -945,12 +984,8 @@ begin
for i:=1 to 6 do msgdate[i]:=pdt[i]; for i:=1 to 6 do msgdate[i]:=pdt[i];
msgdowk:=0; msgdowk:=0;
{rcg11172000 fooked.}
{
for i:=1 to 6 do lastdate[i]:=pdt[i]; for i:=1 to 6 do lastdate[i]:=pdt[i];
lastdowk:=0; lastdowk:=0;
}
writeln('STUB: init.pas; make_email_brd()...');
isreplyto:=65535; isreplyto:=65535;
numreplys:=0; numreplys:=0;
@ -961,12 +996,8 @@ begin
with mheader do begin with mheader do begin
signature:=$ABCD0123; signature:=$ABCD0123;
msgptr:=4; msgptr:=4;
{rcg11172000 fooked.}
{
for i:=1 to 6 do isreplyto_iddate[i]:=0; for i:=1 to 6 do isreplyto_iddate[i]:=0;
isreplyto_idrand:=0; isreplyto_idrand:=0;
}
writeln('STUB: init.pas; make_email_brd()...');
title:='Greetings, new Telegard SysOp!!'; title:='Greetings, new Telegard SysOp!!';
with fromi do begin with fromi do begin
anon:=0; anon:=0;
@ -983,10 +1014,7 @@ begin
alias:='SysOp'; alias:='SysOp';
end; end;
{rcg11172000 fooked.} originsite:='';
{originsite:='';}
writeln('STUB: init.pas; make_email_brd()...');
end; end;
savemhead1(brdf,mheader); savemhead1(brdf,mheader);
close(brdf); close(brdf);
@ -1124,17 +1152,14 @@ begin
mixr.hdrptr:=0; for i:=0 to 99 do blockwrite(mixf,mixr,1); mixr.hdrptr:=0; for i:=0 to 99 do blockwrite(mixf,mixr,1);
close(mixf); close(mixf);
{rcg11172000 fooked.}
{
assign(tref,s+'.tre'); rewrite(tref,sizeof(mtreerec)); close(tref); assign(tref,s+'.tre'); rewrite(tref,sizeof(mtreerec)); close(tref);
}
writeln('STUB: init.pas; make_mboard()...');
end; end;
procedure make_fboard(s:string); procedure make_fboard(s:string);
begin begin
ulffr.blocks:=0; ulffr.blocks:=0;
assign(ulff,s+'.DIR'); {rcg11182000 lowercased this ".DIR" strings...}
assign(ulff,s+'.dir');
rewrite(ulff); write(ulff,ulffr); close(ulff); rewrite(ulff); write(ulff,ulffr); close(ulff);
end; end;
@ -1182,7 +1207,8 @@ begin
movefile1('verbose.dat',path[1]); movefile1('verbose.dat',path[1]);
movefile1('voting.dat',path[1]); movefile1('voting.dat',path[1]);
movefile1('zlog.dat',path[1]); movefile1('zlog.dat',path[1]);
movefiles('*.DIR',path[1]); {rcg11182000 lowercased this ".DIR" string...}
movefiles('*.dir',path[1]);
ttl('Moving message files into MSGS directory'); ttl('Moving message files into MSGS directory');
movefile1('email.brd',path[2]); movefile1('email.brd',path[2]);
@ -1191,21 +1217,23 @@ begin
movefile1('general.mix',path[2]); movefile1('general.mix',path[2]);
movefile1('general.tre',path[2]); movefile1('general.tre',path[2]);
{rcg11182000 Made ANS MSG CFG and MNU lowercase...}
ttl('Moving ANSI text files into AFILES directory'); ttl('Moving ANSI text files into AFILES directory');
movefiles('*.ANS',path[5]); movefiles('*.ans',path[5]);
ttl('Moving normal text files into AFILES directory'); ttl('Moving normal text files into AFILES directory');
movefiles('*.MSG',path[5]); movefiles('*.msg',path[5]);
movefile1('computer.txt',path[5]); movefile1('computer.txt',path[5]);
ttl('Moving color configuration files into AFILES directory'); ttl('Moving color configuration files into AFILES directory');
movefiles('*.CFG',path[5]); movefiles('*.cfg',path[5]);
(* ttl('Moving message file into MSGS\EMAIL directory'); (* ttl('Moving message file into MSGS\EMAIL directory');
movefile1('a-32767.1',path[2]+'EMAIL\');*) movefile1('a-32767.1',path[2]+'EMAIL\');*)
ttl('Moving menu files into MENUS directory'); ttl('Moving menu files into MENUS directory');
movefiles('*.MNU',path[3]); movefiles('*.mnu',path[3]);
end; end;
begin begin
@ -1234,6 +1262,8 @@ begin
end; end;
getdir(0,curdir); getdir(0,curdir);
{rcg11182000 dosisms.}
{
path[1]:=curdir+'\GFILES\'; path[1]:=curdir+'\GFILES\';
path[2]:=curdir+'\MSGS\'; path[2]:=curdir+'\MSGS\';
path[3]:=curdir+'\MENUS\'; path[3]:=curdir+'\MENUS\';
@ -1242,6 +1272,15 @@ begin
path[6]:=curdir+'\TRAP\'; path[6]:=curdir+'\TRAP\';
path[7]:=curdir+'\TEMP\'; path[7]:=curdir+'\TEMP\';
path[8]:=curdir+'\SWAP\'; path[8]:=curdir+'\SWAP\';
}
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/';
path[8]:=curdir+'/SWAP/';
textcolor(14); textcolor(14);
writeln; writeln;
@ -1306,6 +1345,11 @@ begin
writeln; writeln;
star('Telegard BBS installed and initialized successfully!'); star('Telegard BBS installed and initialized successfully!');
star('This program, "INIT.EXE", can now be deleted.'); {rcg11172000 DOSism.}
{star('This program, "INIT.EXE", can now be deleted.');}
star('This program, "init", can now be deleted.');
star('Thanks for trying Telegard!'); star('Thanks for trying Telegard!');
{rcg11182000 added NormVideo.}
NormVideo;
end. end.

View File

@ -193,7 +193,10 @@ var filv:text;
gotoxy(6,11); gotoxy(6,11);
if (copy(s,length(s),1)<>'!') then s:=systat.gfilepath+s if (copy(s,length(s),1)<>'!') then s:=systat.gfilepath+s
else s:=copy(s,1,length(s)-1); else s:=copy(s,1,length(s)-1);
write(caps(s));
{rcg11182000 this caps call is confusing with a case-sensitive filesystem.}
{write(caps(s));}
write(s);
textbackground(1); textbackground(1);
showmem; showmem;
errs:=FALSE; npatch:=FALSE; errs:=FALSE; npatch:=FALSE;
@ -209,12 +212,17 @@ var filv:text;
procedure wmsgs(s:astr); procedure wmsgs(s:astr);
var x,y:integer; var x,y:integer;
begin begin
{rcg1118 this doesn't work without savescreen() and such in common.pas...}
{
x:=wherex; y:=wherey; x:=wherex; y:=wherey;
if (not openedyet) then openwmsgs; if (not openedyet) then openwmsgs;
textbackground(1); textcolor(15); textbackground(1); textcolor(15);
window(8,16,73,22); window(8,16,73,22);
gotoxy(sx,sy); writeln(s); sx:=wherex; sy:=wherey; gotoxy(sx,sy); writeln(s); sx:=wherex; sy:=wherey;
window(1,1,80,25); gotoxy(x,y); window(1,1,80,25); gotoxy(x,y);
}
writeln('STUB: initp.pas; wmsgs(''' + s + ''')...');
end; end;
procedure inmsgs(sh:astr; var s:astr; len:integer); procedure inmsgs(sh:astr; var s:astr; len:integer);
@ -232,7 +240,9 @@ var filv:text;
function existdir(fn:astr):boolean; function existdir(fn:astr):boolean;
var srec:searchrec; var srec:searchrec;
begin begin
while (fn[length(fn)]='\') do fn:=copy(fn,1,length(fn)-1); {rcg11182000 dosism.}
{while (fn[length(fn)]='\') do fn:=copy(fn,1,length(fn)-1);}
while (fn[length(fn)]='/') do fn:=copy(fn,1,length(fn)-1);
findfirst(fexpand(sqoutsp(fn)),anyfile,srec); findfirst(fexpand(sqoutsp(fn)),anyfile,srec);
existdir:=(doserror=0) and (srec.attr and directory=directory); existdir:=(doserror=0) and (srec.attr and directory=directory);
end; end;
@ -276,7 +286,9 @@ var filv:text;
if (s=s2) or (s2='') then abend('Illegal pathname error') if (s=s2) or (s2='') then abend('Illegal pathname error')
else begin else begin
if (s2<>'') then if (s2<>'') then
if (copy(s2,length(s2),1)<>'\') then s2:=s2+'\'; {rcg11182000 dosism}
{if (copy(s2,length(s2),1)<>'\') then s2:=s2+'\';}
if (copy(s2,length(s2),1)<>'/') then s2:=s2+'/';
if (existdir(s2)) then if (existdir(s2)) then
case i of case i of
1:gfilepath:=s2; 2:msgpath:=s2; 1:gfilepath:=s2; 2:msgpath:=s2;
@ -327,8 +339,12 @@ begin
end; end;
*) *)
if (exist(start_dir+'\critical.err')) then begin {rcg11182000 DOSism.}
assign(filv,start_dir+'\critical.err'); erase(filv); {if (exist(start_dir+'\critical.err')) then begin }
{ assign(filv,start_dir+'\critical.err'); erase(filv);}
if (exist(start_dir+'/critical.err')) then begin
assign(filv,start_dir+'/critical.err'); erase(filv);
wmsgs('*** Critical error during last BBS execution! ***'); wmsgs('*** Critical error during last BBS execution! ***');
wmsgs('[>>> Updating STATUS.DAT <<<]'); wmsgs('[>>> Updating STATUS.DAT <<<]');
inc(systat.todayzlog.criterr); inc(systat.todayzlog.criterr);

View File

@ -182,6 +182,7 @@ TYPE
mimassmail, { is it private, mass mail? } mimassmail, { is it private, mass mail? }
miscanned); { is message scanned for FidoNet? } miscanned); { is message scanned for FidoNet? }
{rcg11182000 spliced from V20 headers...}
msgindexrec= { *.MIX : Message index records } msgindexrec= { *.MIX : Message index records }
record record
messagenum:word; { message number, tonum in EMAIL.MIX } messagenum:word; { message number, tonum in EMAIL.MIX }
@ -191,6 +192,8 @@ TYPE
msgdate:cpackdatetime; { message date/time (packed) } msgdate:cpackdatetime; { message date/time (packed) }
msgdowk:byte; { message day-of-week (0=Sun ...) } msgdowk:byte; { message day-of-week (0=Sun ...) }
msgindexstat:set of msgindexstatr; { status flags } msgindexstat:set of msgindexstatr; { status flags }
lastdate:array[1..6] of byte; { update: date/time }
lastdowk:byte; { update: day-of-week }
isreplyto:word; { reply this message is to (-1=None) } isreplyto:word; { reply this message is to (-1=None) }
numreplys:word; { number of replies to THIS message } numreplys:word; { number of replies to THIS message }
end; end;
@ -204,15 +207,19 @@ TYPE
alias:string[36]; { user alias } alias:string[36]; { user alias }
end; end;
{rcg11182000 cannibalized from the v20 type...}
mheaderrec= { *.BRD : Message header records } mheaderrec= { *.BRD : Message header records }
record record
signature:longint; { header signature - $FFFFFFFF } signature:longint; { header signature - $FFFFFFFF }
msgptr:longint; { pointer to message text } msgptr:longint; { pointer to message text }
isreplyto_iddate:array[1..6] of byte; { isreplyto id date - for NetMail }
isreplyto_idrand:word; { isreplyto id randomid }
msglength:longint; { length of message text } msglength:longint; { length of message text }
fromi:fromtoinfo; { from information } fromi:fromtoinfo; { from information }
toi:fromtoinfo; { to information } toi:fromtoinfo; { to information }
title:string[60]; { title of message } title:string[60]; { title of message }
origindate:string[19]; { Echo/Group original msg date } origindate:string[19]; { Echo/Group original msg date }
originsite:string[60]; { site of *original* origin }
end; end;
zlogrec= { ZLOG.DAT : System log } zlogrec= { ZLOG.DAT : System log }
@ -712,3 +719,18 @@ TYPE
res:array[1..1978] of byte; { RESERVED } res:array[1..1978] of byte; { RESERVED }
end; end;
{rcg11182000 added by me.}
V20_mtreerec= { *.TRE : Message reply-tree records }
record
messagerunning, { message number, running }
messagenum:word; { actual message number in *.MIX }
ilevel:byte; { indent level - for replys }
isreplyto, { reply this message is to (-1=None) }
numreplys:word; { number of replys to THIS message }
msgdate:array[1..6] of byte; { message id date }
msgdowk:byte; { message day-of-week }
end;
mtreerec = V20_mtreerec; { *.TRE }
{rcg11182000 end adds.}

View File

@ -191,11 +191,12 @@ var i1,ii,culb,i2:integer;
procedure getdirspec(var s:string); procedure getdirspec(var s:string);
begin begin
{rcg11182000 lowercased these ".DIR" strings...}
with memuboard do with memuboard do
if (fbdirdlpath in fbstat) then if (fbdirdlpath in fbstat) then
s:=fexpand(dlpath+filename+'.DIR') s:=fexpand(dlpath+filename+'.dir')
else else
s:=fexpand(systat.gfilepath+filename+'.DIR'); s:=fexpand(systat.gfilepath+filename+'.dir');
end; end;
procedure dlbem; procedure dlbem;
@ -537,7 +538,8 @@ NNN:File base name :Arc/Cmt-type:P-Index:Password
readuboard:=-1; loaduboard(ii); readuboard:=-1; loaduboard(ii);
if (fbdirdlpath in memuboard.fbstat) then s0:=memuboard.dlpath if (fbdirdlpath in memuboard.fbstat) then s0:=memuboard.dlpath
else s0:=systat.gfilepath; else s0:=systat.gfilepath;
s0:=s0+memuboard.filename+'.DIR'; {rcg11182000 lowercased this ".DIR" string...}
s0:=s0+memuboard.filename+'.dir';
nl; sprint('File base: '+#3#5+memuboard.name); nl; sprint('File base: '+#3#5+memuboard.name);
if pynq('Delete this? ') then begin if pynq('Delete this? ') then begin
sysoplog('* Deleted file base: '+memuboard.name); sysoplog('* Deleted file base: '+memuboard.name);

19
t2t.pas
View File

@ -143,7 +143,14 @@ begin
t:=0; t:=0;
m:=value(copy(dt,1,2)); m:=value(copy(dt,1,2));
d:=value(copy(dt,4,2)); d:=value(copy(dt,4,2));
{rcg11182000 hahahaha...a Y2K bug. :) }
y:=value(copy(dt,7,2))+1900; y:=value(copy(dt,7,2))+1900;
{rcg11182000 added this conditional. }
if (y < 1977) then { Ugh...this is so bad. }
y := y + 100;
for c:=1985 to y-1 do for c:=1985 to y-1 do
if leapyear(c) then t:=t+366 else t:=t+365; if leapyear(c) then t:=t+366 else t:=t+365;
t:=t+daycount(m,y)+(d-1); t:=t+daycount(m,y)+(d-1);
@ -664,15 +671,17 @@ begin
end; end;
seek(tag_ulf,i); write(tag_ulf,tag_ub); seek(tag_ulf,i); write(tag_ulf,tag_ub);
{rcg11182000 lowercased this ".DIR" string...}
with ub do with ub do
assign(ulff,tgpath+filename+'.DIR'); assign(ulff,tgpath+filename+'.dir');
{$I-} reset(ulff); {$I+} {$I-} reset(ulff); {$I+}
if (ioresult=0) then begin if (ioresult=0) then begin
seek(ulff,0); read(ulff,ulffr); seek(ulff,0); read(ulff,ulffr);
siz:=ulffr.blocks; siz:=ulffr.blocks;
if (siz>filesize(ulff)-1) then siz:=filesize(ulff)-1; if (siz>filesize(ulff)-1) then siz:=filesize(ulff)-1;
assign(tag_ulff,tag_ub.dlpath+tag_ub.filename+'.DIR'); {rcg11182000 lowercased this ".DIR" string...}
assign(tag_ulff,tag_ub.dlpath+tag_ub.filename+'.dir');
clreol; clreol;
star(' (record #'+cstr(i)+' of '+cstr(filesize(ulf)-1)+ star(' (record #'+cstr(i)+' of '+cstr(filesize(ulf)-1)+
') -- "'+ub.filename+'.dir"'); ') -- "'+ub.filename+'.dir"');
@ -980,13 +989,15 @@ begin
for j:=1 to 6 do ub.res[j]:=0; for j:=1 to 6 do ub.res[j]:=0;
end; end;
seek(ulf,i); write(ulf,ub); seek(ulf,i); write(ulf,ub);
{rcg11182000 lowercased this ".DIR" string...}
with tag_ub do with tag_ub do
assign(tag_ulff,dlpath+filename+'.DIR'); assign(tag_ulff,dlpath+filename+'.dir');
{$I-} reset(tag_ulff); {$I+} {$I-} reset(tag_ulff); {$I+}
if (ioresult=0) then begin if (ioresult=0) then begin
siz:=filesize(tag_ulff)-1; siz:=filesize(tag_ulff)-1;
assign(ulff,tgpath+tag_ub.filename+'.DIR'); {rcg11182000 lowercased this ".DIR" string...}
assign(ulff,tgpath+tag_ub.filename+'.dir');
star(' (record #'+cstr(i)+' of '+cstr(filesize(tag_ulf)-1)+ star(' (record #'+cstr(i)+' of '+cstr(filesize(tag_ulf)-1)+
') -- "'+tag_ub.filename+'.dir"'); gotoxy(1,wherey-1); ') -- "'+tag_ub.filename+'.dir"'); gotoxy(1,wherey-1);
writeln; writeln;

View File

@ -360,8 +360,10 @@ begin
exit; exit;
end; end;
disable_interrupts; disable_interrupts;
}
rx_chars:=0; rx_in:=1; rx_out:=1; rx_chars:=0; rx_in:=1; rx_out:=1;
enable_interrupts; {
enable_interrupts;
} }
end; end;
@ -377,8 +379,12 @@ begin
exit; exit;
end; end;
disable_interrupts; disable_interrupts;
}
tx_chars:=0; tx_in:=1; tx_out:=1; tx_chars:=0; tx_in:=1; tx_out:=1;
enable_interrupts;
{
enable_interrupts;
} }
end; end;

View File

@ -401,6 +401,7 @@ var u:userrec;
begin begin
if ((modemr.init<>'') and (answerbaud=0) and (not localioonly)) then begin if ((modemr.init<>'') and (answerbaud=0) and (not localioonly)) then begin
gotoxy(1,24); tc(12); clreol; write('Initializing modem...'); gotoxy(1,24); tc(12); clreol; write('Initializing modem...');
if (not keypressed) then begin if (not keypressed) then begin
c:=#0; s:=''; done:=FALSE; try:=0; c:=#0; s:=''; done:=FALSE; try:=0;
rl:=timer; rl:=timer;
@ -426,7 +427,7 @@ var u:userrec;
if (try>10) then done:=TRUE; if (try>10) then done:=TRUE;
until ((done) or (keypressed)); until ((done) or (keypressed));
end; end;
while (keypressed) do isc:=readkey; while (keypressed) do begin isc:=readkey; writeln(ord(isc)); end;
delay(100); com_flush_rx; delay(100); com_flush_rx;
rl1:=timer; repeat c:=ccinkey1 until (abs(timer-rl1)>0.1); rl1:=timer; repeat c:=ccinkey1 until (abs(timer-rl1)>0.1);