updated.
This commit is contained in:
parent
d325f98376
commit
5278e8b0b4
54
CHANGELOG
54
CHANGELOG
|
@ -1,3 +1,57 @@
|
||||||
|
2000-12-17 Ryan C. Gordon <icculus@lokigames.com>
|
||||||
|
* More CPU burnage: put a delay() call in the loop that prompts for
|
||||||
|
local login (yes, no, fast). This is starting to annoy me.
|
||||||
|
* Implemented sysop1() in common.pas ... since we can't check the value
|
||||||
|
of scroll lock, it now checks the existance of a file (GFILES/sysop.in).
|
||||||
|
An external program/script can set this, since we aren't in a single
|
||||||
|
tasked DOS anymore, and it shouldn't be repeated disk accesses, since
|
||||||
|
Linux should just keep the directory entry cached.
|
||||||
|
* Put initial work in place for myio.pas's savescreen() and friends. This
|
||||||
|
is probably FreePascal (and Unix?) specific code, though.
|
||||||
|
* Started fucking with socket interface. Gave up. :)
|
||||||
|
|
||||||
|
2000-12-13 Ryan C. Gordon <icculus@lokigames.com>
|
||||||
|
* Put delay(10) call in the wait for modem initialization response, to
|
||||||
|
reduce CPU burn.
|
||||||
|
* Put delay() call in getkey() (common.pas) to stop CPU chowing.
|
||||||
|
* Added check to verify that the terminal is exactly 80 chars wide and
|
||||||
|
at least 25 chars high. (mainline of bbs.pas)
|
||||||
|
|
||||||
|
2000-11-30 Ryan C. Gordon <icculus@lokigames.com>
|
||||||
|
* Put delay() call in the telegard logo animation loop on the wfc menu.
|
||||||
|
Now the logo updates a little less than three times a second, and doesn't
|
||||||
|
starve the CPU.
|
||||||
|
* Changed Makefile temporarily to only build bbs and init.
|
||||||
|
|
||||||
|
2000-11-27 Ryan C. Gordon <icculus@lokigames.com>
|
||||||
|
* More Y2K crud. This is a slow, slow process.
|
||||||
|
* mail0.pas's initbrd() was looking for capital filenames. Fixed.
|
||||||
|
|
||||||
|
2000-11-26 Ryan C. Gordon <icculus@lokigames.com>
|
||||||
|
* Changed dosansi() in common.pas to just call write() instead of a
|
||||||
|
DOS int21h service. This allows the menus that are stored in .ANS
|
||||||
|
files to show up on the local side, albeit incorrectly at this point.
|
||||||
|
* Went on a Y2K rampage. Looked for places that used two-digit years, and
|
||||||
|
started making them use 4 digits. This allowed me to remove some prior
|
||||||
|
hacks, and make the system more robust in general. It will probably
|
||||||
|
introduce a few bugs where the system is less obviously expecting a two
|
||||||
|
digit year. We'll see. Some of the more obvious places where a two-digit
|
||||||
|
year might pass through now have checks that halt() if there's a problem.
|
||||||
|
* Changed all the INT21h-based versions of date() and time(). Have I
|
||||||
|
mentioned yet that I'm astounded by the amount of cut-and-pasting in
|
||||||
|
this codebase? I don't understand why they bothered to have a "common"
|
||||||
|
unit if so much common code was just duplicated all over the place.
|
||||||
|
* Added rcgpanic() to common.pas. Made some of the programs reference this
|
||||||
|
unit if they weren't already. The checks for two-digit year strings call
|
||||||
|
rcgpanic in case of trouble...this gives me a unified place to set a
|
||||||
|
break point and backtrace in gdb...
|
||||||
|
* init.pas filled in the init user record's birthday with a hardcoded
|
||||||
|
'00/00/00'. logon2.pas checks for this to see if it's a new record.
|
||||||
|
Fixed in both places. Changed cuser.pas's cstuff::doage() to accept and
|
||||||
|
understand 4-digit years.
|
||||||
|
* sysop3.pas showuserinfo::shi1() had an output that spilled past the 80
|
||||||
|
char line limit once it was printing 4-digit years. Fixed.
|
||||||
|
|
||||||
2000-11-24 Ryan C. Gordon <icculus@lokigames.com>
|
2000-11-24 Ryan C. Gordon <icculus@lokigames.com>
|
||||||
* Aha! I think I stumbled upon the keypressed() problem. Looks like a
|
* Aha! I think I stumbled upon the keypressed() problem. Looks like a
|
||||||
piece of the overlay code was still in there and causing problems.
|
piece of the overlay code was still in there and causing problems.
|
||||||
|
|
17
Makefile
17
Makefile
|
@ -31,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.
|
||||||
|
@ -70,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
|
||||||
|
@ -107,7 +107,8 @@ SPDATEEXE=$(BUILDDIR)/spdate
|
||||||
$(BUILDDIR)/%.o : %.pas
|
$(BUILDDIR)/%.o : %.pas
|
||||||
$(PPC386) $(PPC386FLAGS) $<
|
$(PPC386) $(PPC386FLAGS) $<
|
||||||
|
|
||||||
all: $(BUILDDIR) $(MAINEXE) $(MINITERMEXE) $(INITEXE) $(TPAGEEXE) $(IFLEXE) \
|
all: $(BUILDDIR) $(MAINEXE) $(INITEXE) #\
|
||||||
|
$(MINITERMEXE) $(TPAGEEXE) $(IFLEXE) \
|
||||||
$(FINDITEXE) $(OBLITEXE) $(MTESTEXE) $(BBEXE) $(CBBSEXE) \
|
$(FINDITEXE) $(OBLITEXE) $(MTESTEXE) $(BBEXE) $(CBBSEXE) \
|
||||||
$(MABSEXE) $(COCONFIGEXE) $(SPDATEEXE) $(T2TEXE)
|
$(MABSEXE) $(COCONFIGEXE) $(SPDATEEXE) $(T2TEXE)
|
||||||
|
|
||||||
|
|
13
TODO
13
TODO
|
@ -1,6 +1,15 @@
|
||||||
- grep -i "DOS" *
|
- grep -i "DOS" *
|
||||||
- rm sources ; cvs remove sources ; cvs commit -m "not needed" sources
|
|
||||||
- cvs add TODO ; cvs commit -m "initial add." TODO
|
|
||||||
- Look for calls to bslash() and isul().
|
- Look for calls to bslash() and isul().
|
||||||
- Looks for DOSisms in ifl.pas.
|
- Looks for DOSisms in ifl.pas.
|
||||||
|
- Look at rec25.pas, and check for filename storage of only 8 bytes in the
|
||||||
|
various records. Make it a full 255-character string at least.
|
||||||
|
- Looks like we've got some record clash. Hunt it out.
|
||||||
|
- Mail crashes. Record problems?
|
||||||
|
- ANSI code issues with write()
|
||||||
|
- Savescreen(), etc.
|
||||||
|
- wfc broken in xterm.
|
||||||
|
- More y2k shit
|
||||||
|
- modem/telnet support.
|
||||||
|
|
||||||
|
// end of TODO ...
|
||||||
|
|
||||||
|
|
20
bb.pas
20
bb.pas
|
@ -5,7 +5,7 @@ program BatchBackup;
|
||||||
|
|
||||||
uses
|
uses
|
||||||
crt,dos,
|
crt,dos,
|
||||||
myio;
|
myio, common;
|
||||||
|
|
||||||
{$I func.pas}
|
{$I func.pas}
|
||||||
|
|
||||||
|
@ -52,6 +52,8 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function sdat(dt:datetime):string;
|
function sdat(dt:datetime):string;
|
||||||
|
{rcg11272000 my add.}
|
||||||
|
var yearstr:string;
|
||||||
|
|
||||||
function tch(i:integer):string;
|
function tch(i:integer):string;
|
||||||
var s:string;
|
var s:string;
|
||||||
|
@ -63,15 +65,25 @@ function sdat(dt:datetime):string;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
with dt do
|
with dt do begin
|
||||||
sdat:=tch(month)+'/'+tch(day)+'/'+tch(year-1900)+' '+tch(hour)+':'+tch(min)+':'+tch(sec);
|
{rcg11272000 y2k stuff.}
|
||||||
|
{sdat:=tch(month)+'/'+tch(day)+'/'+tch(year-1900)+' '+tch(hour)+':'+tch(min)+':'+tch(sec);}
|
||||||
|
str(year,yearstr);
|
||||||
|
sdat:=tch(month)+'/'+tch(day)+'/'+yearstr+' '+tch(hour)+':'+tch(min)+':'+tch(sec);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure unsdat(s:string; var dt:datetime);
|
procedure unsdat(s:string; var dt:datetime);
|
||||||
var x:integer;
|
var x:integer;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
{rcg11272000 my add...}
|
||||||
|
if (length(s) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||||||
|
|
||||||
with dt do begin
|
with dt do begin
|
||||||
val(copy(s,7,2),year,x); inc(year,1900);
|
{rcg11272000 Y2K-proofing.}
|
||||||
|
{val(copy(s,7,2),year,x); inc(year,1900);}
|
||||||
|
val(copy(s,7,4),year,x);
|
||||||
val(copy(s,1,2),month,x);
|
val(copy(s,1,2),month,x);
|
||||||
val(copy(s,4,2),day,x);
|
val(copy(s,4,2),day,x);
|
||||||
val(copy(s,10,2),hour,x);
|
val(copy(s,10,2),hour,x);
|
||||||
|
|
19
bbs.pas
19
bbs.pas
|
@ -212,6 +212,25 @@ Begin
|
||||||
close(systatf);
|
close(systatf);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{rcg12132000 added checks. Friggin' Xterms... :) }
|
||||||
|
if (ScreenWidth <> 80) then
|
||||||
|
begin
|
||||||
|
writeln;
|
||||||
|
writeln('Your terminal needs to be exactly 80 characters wide to run the BBS.');
|
||||||
|
writeln(' If this is a window, please resize it.');
|
||||||
|
halt(254);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ((ScreenHeight < 25) or (ScreenHeight > 50)) then
|
||||||
|
begin
|
||||||
|
writeln;
|
||||||
|
writeln('Your terminal must be between 25 and 50 characters high to run the BBS.');
|
||||||
|
writeln(' If this is a window, please resize it.');
|
||||||
|
halt(254);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{rcg11172000 No overlay on Linux.}
|
{rcg11172000 No overlay on Linux.}
|
||||||
{
|
{
|
||||||
ovrinit('bbs.OVR');
|
ovrinit('bbs.OVR');
|
||||||
|
|
53
cbbs.pas
53
cbbs.pas
|
@ -1,4 +1,4 @@
|
||||||
uses dos;
|
uses dos, common;
|
||||||
|
|
||||||
var f:text;
|
var f:text;
|
||||||
|
|
||||||
|
@ -28,6 +28,9 @@ begin
|
||||||
if s='' then value:=0;
|
if s='' then value:=0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||||||
|
{ below is a working implementation.}
|
||||||
|
{
|
||||||
function time:string;
|
function time:string;
|
||||||
var r:registers;
|
var r:registers;
|
||||||
h,m,s:string[4];
|
h,m,s:string[4];
|
||||||
|
@ -36,7 +39,20 @@ begin
|
||||||
str(r.cx shr 8,h); str(r.cx mod 256,m); str(r.dx shr 8,s);
|
str(r.cx shr 8,h); str(r.cx mod 256,m); str(r.dx shr 8,s);
|
||||||
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||||||
end;
|
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:string;
|
function date:string;
|
||||||
var r:registers;
|
var r:registers;
|
||||||
m,d,y:string[4];
|
m,d,y:string[4];
|
||||||
|
@ -45,6 +61,26 @@ begin
|
||||||
str(r.dx shr 8,m);
|
str(r.dx shr 8,m);
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
||||||
end;
|
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;
|
function leapyear(yr:integer):boolean;
|
||||||
begin
|
begin
|
||||||
|
@ -75,11 +111,14 @@ begin
|
||||||
d:=value(copy(dt,4,2));
|
d:=value(copy(dt,4,2));
|
||||||
|
|
||||||
{rcg11182000 hahahaha...a Y2K bug. :) }
|
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||||||
y:=value(copy(dt,7,2))+1900;
|
{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;}
|
||||||
|
|
||||||
{rcg11182000 added this conditional. }
|
{rcg11272000 my adds...}
|
||||||
if (y < 1977) then { Ugh...this is so bad. }
|
if (length(dt) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||||||
y := y + 100;
|
y:=value(copy(dt,7,4));
|
||||||
|
{rcg11272000 end my adds...}
|
||||||
|
|
||||||
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;
|
||||||
|
@ -102,7 +141,9 @@ begin
|
||||||
2:x:='Thu';
|
2:x:='Thu';
|
||||||
end;
|
end;
|
||||||
y:=mon[value(copy(date,1,2))];
|
y:=mon[value(copy(date,1,2))];
|
||||||
x:=x+' '+y+' '+copy(date,4,2)+', '+cstr(1900+value(copy(date,7,2)));
|
{rcg11272000 Y2K-proofing.}
|
||||||
|
{x:=x+' '+y+' '+copy(date,4,2)+', '+cstr(1900+value(copy(date,7,2)));}
|
||||||
|
x:=x+' '+y+' '+copy(date,4,2)+', '+cstr(value(copy(date,7,4)));
|
||||||
y:=time; i:=value(copy(y,1,2));
|
y:=time; i:=value(copy(y,1,2));
|
||||||
if i>11 then ap:='pm' else ap:='am';
|
if i>11 then ap:='pm' else ap:='am';
|
||||||
if i>12 then i:=i-12;
|
if i>12 then i:=i-12;
|
||||||
|
|
102
common.pas
102
common.pas
|
@ -19,6 +19,13 @@ type f_initexecswap = function(p:pointer; s:string):boolean;
|
||||||
f_execwithswap = function(p,c:string):word;
|
f_execwithswap = function(p,c:string):word;
|
||||||
p_shutdownexecswap = procedure;
|
p_shutdownexecswap = procedure;
|
||||||
|
|
||||||
|
|
||||||
|
{rcg12012000 my adds.}
|
||||||
|
var ansibuf:string;
|
||||||
|
const ansiset:set of char=['0'..'9','A'..'D','[',';','?','H', 'J','K','m','h'];
|
||||||
|
{rcg12012000 my adds end.}
|
||||||
|
|
||||||
|
|
||||||
var initexecswap2:f_initexecswap;
|
var initexecswap2:f_initexecswap;
|
||||||
execwithswap2:f_execwithswap;
|
execwithswap2:f_execwithswap;
|
||||||
shutdownexecswap2:p_shutdownexecswap;
|
shutdownexecswap2:p_shutdownexecswap;
|
||||||
|
@ -253,6 +260,10 @@ var
|
||||||
hiubatchv:integer;
|
hiubatchv:integer;
|
||||||
|
|
||||||
|
|
||||||
|
{rcg11272000 added by me.}
|
||||||
|
procedure rcgpanic(s:string);
|
||||||
|
|
||||||
|
|
||||||
function lenn(s:string):integer;
|
function lenn(s:string):integer;
|
||||||
function lennmci(s:string):integer;
|
function lennmci(s:string):integer;
|
||||||
procedure loaduboard(i:integer);
|
procedure loaduboard(i:integer);
|
||||||
|
@ -515,6 +526,18 @@ procedure com_set_speed(speed:word); begin tmpcom.com_set_speed(speed); end;
|
||||||
var cfilter:cfilterrec;
|
var cfilter:cfilterrec;
|
||||||
cfiltertype,cfilternum,cfiltercount:integer;
|
cfiltertype,cfilternum,cfiltercount:integer;
|
||||||
|
|
||||||
|
|
||||||
|
{rcg11272000 added by me.}
|
||||||
|
procedure rcgpanic(s:string);
|
||||||
|
begin
|
||||||
|
NormVideo;
|
||||||
|
clrscr;
|
||||||
|
writeln('PANIC: ' + s + ' ...');
|
||||||
|
writeln(' ... halting ...');
|
||||||
|
halt(69);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure shelldos(bat:boolean; cl:string; var rcode:integer);
|
procedure shelldos(bat:boolean; cl:string; var rcode:integer);
|
||||||
var t:text;
|
var t:text;
|
||||||
s:string;
|
s:string;
|
||||||
|
@ -1053,8 +1076,7 @@ begin
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
begin
|
begin
|
||||||
writeln('STUB: common.pas; sysop1()...');
|
sysop1 := exist(systat.gfilepath+'sysop.in');
|
||||||
sysop1 := FALSE;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1130,13 +1152,22 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function date:string;
|
function date:string;
|
||||||
var r:registers;
|
var
|
||||||
y,m,d:string[3];
|
{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;
|
yy,mm,dd,dow:word;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
getdate(yy,mm,dd,dow);
|
getdate(yy,mm,dd,dow);
|
||||||
str(yy-1900,y); str(mm,m); str(dd,d);
|
{rcg11272000 Y2K-proofing.}
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
{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;
|
end;
|
||||||
|
|
||||||
function value(s:string):longint;
|
function value(s:string):longint;
|
||||||
|
@ -1167,12 +1198,16 @@ end;
|
||||||
function ageuser(bday:string):integer;
|
function ageuser(bday:string):integer;
|
||||||
var i:integer;
|
var i:integer;
|
||||||
begin
|
begin
|
||||||
i:=value(copy(date,7,2))-value(copy(bday,7,2));
|
|
||||||
|
|
||||||
{rcg11242000 Y2K hack.}
|
{rcg11272000 my add...}
|
||||||
i := i + 100;
|
if (length(bday) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN BIRTHDAY DATE!');
|
||||||
|
|
||||||
if (daynum(copy(bday,1,6)+copy(date,7,2))>daynum(date)) then dec(i);
|
{rcg11272000 y2k issues...}
|
||||||
|
{i:=value(copy(date,7,2))-value(copy(bday,7,2));}
|
||||||
|
{if (daynum(copy(bday,1,6)+copy(date,7,2))>daynum(date)) then dec(i);}
|
||||||
|
|
||||||
|
i:=value(copy(date,7,4))-value(copy(bday,7,4));
|
||||||
|
if (daynum(copy(bday,1,6)+copy(date,7,4))>daynum(date)) then dec(i);
|
||||||
ageuser:=i;
|
ageuser:=i;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1222,13 +1257,15 @@ 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. :) }
|
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||||||
y:=value(copy(dt,7,2))+1900;
|
{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;}
|
||||||
|
|
||||||
{rcg11182000 added this conditional. }
|
{rcg11272000 my adds...}
|
||||||
if (y < 1977) then { Ugh...this is so bad. }
|
if (length(dt) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||||||
y := y + 100;
|
y:=value(copy(dt,7,4));
|
||||||
|
{rcg11272000 end my adds...}
|
||||||
|
|
||||||
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);
|
||||||
|
@ -1483,6 +1520,8 @@ end;
|
||||||
*)
|
*)
|
||||||
|
|
||||||
procedure dosansi(c:char);
|
procedure dosansi(c:char);
|
||||||
|
{rcg11262000 DOSism.}
|
||||||
|
{
|
||||||
var r:registers;
|
var r:registers;
|
||||||
begin
|
begin
|
||||||
with r do begin
|
with r do begin
|
||||||
|
@ -1490,6 +1529,31 @@ begin
|
||||||
msdos(r);
|
msdos(r);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
}
|
||||||
|
|
||||||
|
{rcg12012000 must buffer ANSI sequences for bug in FreePascal.}
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
{ there's something in the buffer and it can be safely dumped? }
|
||||||
|
if ((ansibuf[0] <> #0) and (not (c in ansiset))) then
|
||||||
|
begin
|
||||||
|
write(ansibuf); { dump to crt driver. }
|
||||||
|
ansibuf[0] := #0; { reset buffer. }
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ((ansibuf[0] <> #0) or (c = #27)) then { add to or start the buffer? }
|
||||||
|
begin
|
||||||
|
inc(ansibuf[0]);
|
||||||
|
ansibuf[ord(ansibuf[0])] := c;
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
write(c); { no need to buffer at this time; just write to crt... }
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure lpromptc(c:char);
|
procedure lpromptc(c:char);
|
||||||
var ss:string;
|
var ss:string;
|
||||||
|
@ -1944,6 +2008,9 @@ begin
|
||||||
5:begin sound(3400); delay(55); end;
|
5:begin sound(3400); delay(55); end;
|
||||||
end;
|
end;
|
||||||
aphase:=aphase mod 5+1;
|
aphase:=aphase mod 5+1;
|
||||||
|
{rcg12132000 else added by me to stop CPU chowing.}
|
||||||
|
end else begin
|
||||||
|
delay(10);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if (ch) then c:=chinkey else c:=inkey;
|
if (ch) then c:=chinkey else c:=inkey;
|
||||||
|
@ -2850,10 +2917,15 @@ function verline(i:integer):string;
|
||||||
var s:string;
|
var s:string;
|
||||||
begin
|
begin
|
||||||
case i of
|
case i of
|
||||||
|
{rcg11252000 changed.}
|
||||||
|
{
|
||||||
1:begin
|
1:begin
|
||||||
s:='Project Coyote 0.14 Alpha ';
|
s:='Project Coyote 0.14 Alpha ';
|
||||||
end;
|
end;
|
||||||
2:s:='Complied By Robert Merritt on 11-19-92';
|
2:s:='Complied By Robert Merritt on 11-19-92';
|
||||||
|
}
|
||||||
|
1:s:='Penguin Telegard 0.0.1';
|
||||||
|
2:s:='Send complaints to Ryan C. Gordon <icculus@lokigames.com>';
|
||||||
end;
|
end;
|
||||||
verline:=s;
|
verline:=s;
|
||||||
end;
|
end;
|
||||||
|
|
|
@ -292,7 +292,9 @@ end;
|
||||||
procedure chatfile(b:boolean);
|
procedure chatfile(b:boolean);
|
||||||
var bf:file of byte;
|
var bf:file of byte;
|
||||||
s:string[91];
|
s:string[91];
|
||||||
|
trimmedfile:string;
|
||||||
cr:boolean;
|
cr:boolean;
|
||||||
|
i, j: integer;
|
||||||
begin
|
begin
|
||||||
s:='chat';
|
s:='chat';
|
||||||
if (thisuser.chatseperate) then s:=s+cstr(usernum);
|
if (thisuser.chatseperate) then s:=s+cstr(usernum);
|
||||||
|
|
48
conv17a.pas
48
conv17a.pas
|
@ -147,6 +147,9 @@ begin
|
||||||
tch:=i;
|
tch:=i;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||||||
|
{ below is a working implementation.}
|
||||||
|
{
|
||||||
function time:astr;
|
function time:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
h,m,s:string[4];
|
h,m,s:string[4];
|
||||||
|
@ -155,7 +158,20 @@ begin
|
||||||
str(reg.cx shr 8,h); str(reg.cx mod 256,m); str(reg.dx shr 8,s);
|
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);
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||||||
end;
|
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;
|
function date:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
m,d,y:string[4];
|
m,d,y:string[4];
|
||||||
|
@ -164,6 +180,27 @@ begin
|
||||||
str(reg.dx shr 8,m);
|
str(reg.dx shr 8,m);
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
||||||
end;
|
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;
|
function leapyear(yr:integer):boolean;
|
||||||
begin
|
begin
|
||||||
|
@ -194,11 +231,14 @@ begin
|
||||||
d:=value(copy(dt,4,2));
|
d:=value(copy(dt,4,2));
|
||||||
|
|
||||||
{rcg11182000 hahahaha...a Y2K bug. :) }
|
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||||||
y:=value(copy(dt,7,2))+1900;
|
{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;}
|
||||||
|
|
||||||
{rcg11182000 added this conditional. }
|
{rcg11272000 my adds...}
|
||||||
if (y < 1977) then { Ugh...this is so bad. }
|
if (length(dt) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||||||
y := y + 100;
|
y:=value(copy(dt,7,4));
|
||||||
|
{rcg11272000 end my adds...}
|
||||||
|
|
||||||
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;
|
||||||
|
|
47
conv17a9.pas
47
conv17a9.pas
|
@ -172,6 +172,9 @@ begin
|
||||||
tch:=i;
|
tch:=i;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||||||
|
{ below is a working implementation.}
|
||||||
|
{
|
||||||
function time:astr;
|
function time:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
h,m,s:string[4];
|
h,m,s:string[4];
|
||||||
|
@ -180,7 +183,20 @@ begin
|
||||||
str(reg.cx shr 8,h); str(reg.cx mod 256,m); str(reg.dx shr 8,s);
|
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);
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||||||
end;
|
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;
|
function date:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
m,d,y:string[4];
|
m,d,y:string[4];
|
||||||
|
@ -189,6 +205,26 @@ begin
|
||||||
str(reg.dx shr 8,m);
|
str(reg.dx shr 8,m);
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
||||||
end;
|
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;
|
function leapyear(yr:integer):boolean;
|
||||||
begin
|
begin
|
||||||
|
@ -219,11 +255,14 @@ begin
|
||||||
d:=value(copy(dt,4,2));
|
d:=value(copy(dt,4,2));
|
||||||
|
|
||||||
{rcg11182000 hahahaha...a Y2K bug. :) }
|
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||||||
y:=value(copy(dt,7,2))+1900;
|
{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;}
|
||||||
|
|
||||||
{rcg11182000 added this conditional. }
|
{rcg11272000 my adds...}
|
||||||
if (y < 1977) then { Ugh...this is so bad. }
|
if (length(dt) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||||||
y := y + 100;
|
y:=value(copy(dt,7,4));
|
||||||
|
{rcg11272000 end my adds...}
|
||||||
|
|
||||||
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;
|
||||||
|
|
48
conv18a.pas
48
conv18a.pas
|
@ -157,6 +157,9 @@ begin
|
||||||
tch:=i;
|
tch:=i;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||||||
|
{ below is a working implementation.}
|
||||||
|
{
|
||||||
function time:astr;
|
function time:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
h,m,s:string[4];
|
h,m,s:string[4];
|
||||||
|
@ -165,7 +168,20 @@ begin
|
||||||
str(reg.cx shr 8,h); str(reg.cx mod 256,m); str(reg.dx shr 8,s);
|
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);
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||||||
end;
|
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;
|
function date:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
m,d,y:string[4];
|
m,d,y:string[4];
|
||||||
|
@ -174,6 +190,27 @@ begin
|
||||||
str(reg.dx shr 8,m);
|
str(reg.dx shr 8,m);
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
||||||
end;
|
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;
|
function leapyear(yr:integer):boolean;
|
||||||
begin
|
begin
|
||||||
|
@ -204,11 +241,14 @@ begin
|
||||||
d:=value(copy(dt,4,2));
|
d:=value(copy(dt,4,2));
|
||||||
|
|
||||||
{rcg11182000 hahahaha...a Y2K bug. :) }
|
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||||||
y:=value(copy(dt,7,2))+1900;
|
{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;}
|
||||||
|
|
||||||
{rcg11182000 added this conditional. }
|
{rcg11272000 my adds...}
|
||||||
if (y < 1977) then { Ugh...this is so bad. }
|
if (length(dt) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||||||
y := y + 100;
|
y:=value(copy(dt,7,4));
|
||||||
|
{rcg11272000 end my adds...}
|
||||||
|
|
||||||
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;
|
||||||
|
|
16
cuser.pas
16
cuser.pas
|
@ -84,16 +84,28 @@ var done,done1:boolean;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if (how=3) then prompt('Enter date of birth (mm/dd/yy) : ')
|
{rcg11272000 y2k stuff.}
|
||||||
|
{if (how=3) then prompt('Enter date of birth (mm/dd/yy) : ')}
|
||||||
|
|
||||||
|
if (how=3) then prompt('Enter date of birth (mm/dd/yyyy) : ')
|
||||||
else begin
|
else begin
|
||||||
sprint('^301^5=January ^304^5=April ^307^5=July ^310^5=October');
|
sprint('^301^5=January ^304^5=April ^307^5=July ^310^5=October');
|
||||||
sprint('^302^5=February ^305^5=May ^308^5=August ^311^5=November');
|
sprint('^302^5=February ^305^5=May ^308^5=August ^311^5=November');
|
||||||
sprint('^303^5=March ^306^5=June ^309^5=September ^312^5=December');
|
sprint('^303^5=March ^306^5=June ^309^5=September ^312^5=December');
|
||||||
nl;
|
nl;
|
||||||
prt('Enter your date of birth (mm/dd/yy) : ');
|
{rcg11272000 y2k stuff.}
|
||||||
|
{prt('Enter your date of birth (mm/dd/yy) : ');}
|
||||||
|
prt('Enter your date of birth (mm/dd/yyyy) : ');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{rcg11272000 y2k stuff.}
|
||||||
|
{
|
||||||
cl(3); input(s,8);
|
cl(3); input(s,8);
|
||||||
if ((length(s)=8) and (s[3]='/') and (s[6]='/')) then
|
if ((length(s)=8) and (s[3]='/') and (s[6]='/')) then
|
||||||
|
}
|
||||||
|
|
||||||
|
cl(3); input(s,10);
|
||||||
|
if ((length(s)=10) and (s[3]='/') and (s[6]='/')) then
|
||||||
if (numsok(s)) then
|
if (numsok(s)) then
|
||||||
if (ageuser(s)<3) then
|
if (ageuser(s)<3) then
|
||||||
sprint(#3#7+'Isn''t '+cstr(ageuser(s))+' years old a little YOUNG???')
|
sprint(#3#7+'Isn''t '+cstr(ageuser(s))+' years old a little YOUNG???')
|
||||||
|
|
|
@ -51,8 +51,13 @@ begin
|
||||||
unpacktime(dirinfo.time,dt);
|
unpacktime(dirinfo.time,dt);
|
||||||
with dt do begin
|
with dt do begin
|
||||||
if hour<13 then pm:='a' else begin pm:='p'; hour:=hour-12; end;
|
if hour<13 then pm:='a' else begin pm:='p'; hour:=hour-12; end;
|
||||||
|
{rcg11272000 Y2K-proofing.}
|
||||||
|
{
|
||||||
s:=s+' '+mrn(cstr(month),2)+'-'+ti(day)+'-'+ti(year-1900)+
|
s:=s+' '+mrn(cstr(month),2)+'-'+ti(day)+'-'+ti(year-1900)+
|
||||||
' '+mrn(cstr(hour),2)+':'+ti(min)+pm;
|
' '+mrn(cstr(hour),2)+':'+ti(min)+pm;
|
||||||
|
}
|
||||||
|
s:=s+' '+mrn(cstr(month),2)+'-'+ti(day)+'-'+cstr(year)+
|
||||||
|
' '+mrn(cstr(hour),2)+':'+ti(min)+pm;
|
||||||
end;
|
end;
|
||||||
info:=s;
|
info:=s;
|
||||||
end;
|
end;
|
||||||
|
|
52
init.pas
52
init.pas
|
@ -158,11 +158,13 @@ begin
|
||||||
d:=value(copy(dt,4,2));
|
d:=value(copy(dt,4,2));
|
||||||
|
|
||||||
{rcg11182000 hahahaha...a Y2K bug. :) }
|
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||||||
y:=value(copy(dt,7,2))+1900;
|
{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;}
|
||||||
|
|
||||||
{rcg11182000 added this conditional. }
|
{rcg11272000 my adds...}
|
||||||
if (y < 1977) then { Ugh...this is so bad. }
|
y:=value(copy(dt,7,4));
|
||||||
y := y + 100;
|
{rcg11272000 end my adds...}
|
||||||
|
|
||||||
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);
|
||||||
|
@ -187,14 +189,23 @@ begin
|
||||||
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function date:astr;
|
function date:string;
|
||||||
var r:registers;
|
var
|
||||||
y,m,d:string[3];
|
{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;
|
yy,mm,dd,dow:word;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
getdate(yy,mm,dd,dow);
|
getdate(yy,mm,dd,dow);
|
||||||
str(yy-1900,y); str(mm,m); str(dd,d);
|
{rcg11272000 Y2K-proofing.}
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
{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;
|
end;
|
||||||
|
|
||||||
procedure ttl(s:string);
|
procedure ttl(s:string);
|
||||||
|
@ -717,7 +728,11 @@ begin
|
||||||
realname:='System Operator';
|
realname:='System Operator';
|
||||||
pw:='SYSOP';
|
pw:='SYSOP';
|
||||||
ph:='000-000-0000';
|
ph:='000-000-0000';
|
||||||
bday:='00/00/00';
|
|
||||||
|
{rcg11272000 y2k stuff.}
|
||||||
|
{bday:='00/00/00';}
|
||||||
|
bday:='00/00/0000';
|
||||||
|
|
||||||
firston:=date;
|
firston:=date;
|
||||||
laston:=date;
|
laston:=date;
|
||||||
street:='';
|
street:='';
|
||||||
|
@ -957,6 +972,9 @@ begin
|
||||||
|
|
||||||
assign(brdf,'email.brd');
|
assign(brdf,'email.brd');
|
||||||
rewrite(brdf,1);
|
rewrite(brdf,1);
|
||||||
|
|
||||||
|
{rcg12152000 changed for sanity...}
|
||||||
|
{
|
||||||
lng:=$FC020010; blockwrite(brdf,lng,4);
|
lng:=$FC020010; blockwrite(brdf,lng,4);
|
||||||
lng:=$DCBA0123; blockwrite(brdf,lng,4);
|
lng:=$DCBA0123; blockwrite(brdf,lng,4);
|
||||||
blockwrite(brdf,lsize,4);
|
blockwrite(brdf,lsize,4);
|
||||||
|
@ -967,6 +985,20 @@ begin
|
||||||
blockwrite(brdf,s[0],1);
|
blockwrite(brdf,s[0],1);
|
||||||
blockwrite(brdf,s[1],ord(s[0]));
|
blockwrite(brdf,s[1],ord(s[0]));
|
||||||
end;
|
end;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
lng:=$FC020010; blockwrite(brdf,lng,sizeof (lng));
|
||||||
|
lng:=$DCBA0123; blockwrite(brdf,lng,sizeof (lng));
|
||||||
|
blockwrite(brdf,lsize,sizeof (lsize));
|
||||||
|
|
||||||
|
while (not eof(t)) do begin
|
||||||
|
readln(t,s);
|
||||||
|
bb:=$FF; blockwrite(brdf,bb,sizeof (bb));
|
||||||
|
blockwrite(brdf,s[0],1);
|
||||||
|
blockwrite(brdf,s[1],ord(s[0]));
|
||||||
|
end;
|
||||||
|
}
|
||||||
close(t);
|
close(t);
|
||||||
erase(t);
|
erase(t);
|
||||||
|
|
||||||
|
|
15
logon2.pas
15
logon2.pas
|
@ -77,15 +77,20 @@ var ul:text;
|
||||||
function checkbday:boolean;
|
function checkbday:boolean;
|
||||||
var i,j:integer;
|
var i,j:integer;
|
||||||
begin
|
begin
|
||||||
i:=85;
|
{rcg11282000 Y2K stuff.}
|
||||||
|
{i:=85;}
|
||||||
|
i := 1985;
|
||||||
repeat
|
repeat
|
||||||
j:=daynum(copy(thisuser.bday,1,6)+tch(cstr(i)));
|
{rcg11282000 y2k stuff.}
|
||||||
|
{j:=daynum(copy(thisuser.bday,1,6)+tch(cstr(i)));}
|
||||||
|
j:=daynum(copy(thisuser.bday,1,6)+cstr(i));
|
||||||
if (daynum(date)>=j) and (daynum(thisuser.laston)<j) then begin
|
if (daynum(date)>=j) and (daynum(thisuser.laston)<j) then begin
|
||||||
checkbday:=TRUE;
|
checkbday:=TRUE;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
inc(i);
|
inc(i);
|
||||||
until (i>value(copy(date,7,2)));
|
{until (i>value(copy(date,7,2)));}
|
||||||
|
until (i>value(copy(date,7,4)));
|
||||||
checkbday:=FALSE;
|
checkbday:=FALSE;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -247,7 +252,9 @@ begin
|
||||||
if (not wasguestuser) then
|
if (not wasguestuser) then
|
||||||
begin
|
begin
|
||||||
if (thisuser.flistopt=0) then thisuser.flistopt:=1;
|
if (thisuser.flistopt=0) then thisuser.flistopt:=1;
|
||||||
if (thisuser.bday='00/00/00') then begin
|
{rcg11272000 y2k stuff.}
|
||||||
|
{if (thisuser.bday='00/00/00') then begin}
|
||||||
|
if (thisuser.bday='00/00/0000') then begin
|
||||||
print('Updating system records ...');
|
print('Updating system records ...');
|
||||||
cstuff(2,1,thisuser);
|
cstuff(2,1,thisuser);
|
||||||
nl;
|
nl;
|
||||||
|
|
17
mail0.pas
17
mail0.pas
|
@ -219,13 +219,20 @@ begin
|
||||||
closebrd;
|
closebrd;
|
||||||
|
|
||||||
bread:=x;
|
bread:=x;
|
||||||
if (x=-1) then fn:='EMAIL' else begin
|
{rcg11272000 filename case.}
|
||||||
|
{if (x=-1) then fn:='EMAIL' else begin}
|
||||||
|
if (x=-1) then fn:='email' else begin
|
||||||
loadboard(x);
|
loadboard(x);
|
||||||
fn:=memboard.filename;
|
fn:=memboard.filename;
|
||||||
end;
|
end;
|
||||||
fn:=allcaps(fn);
|
|
||||||
|
{rcg11272000 filename case.}
|
||||||
|
{fn:=allcaps(fn);}
|
||||||
brdfnopen:=fn;
|
brdfnopen:=fn;
|
||||||
assign(mixf,systat.msgpath+fn+'.MIX');
|
|
||||||
|
{rcg11272000 filename case.}
|
||||||
|
{assign(mixf,systat.msgpath+fn+'.MIX');}
|
||||||
|
assign(mixf,systat.msgpath+fn+'.mix');
|
||||||
{$I-} reset(mixf,sizeof(mixr)); {$I+}
|
{$I-} reset(mixf,sizeof(mixr)); {$I+}
|
||||||
if (ioresult<>0) then begin
|
if (ioresult<>0) then begin
|
||||||
rewrite(mixf,sizeof(mixr));
|
rewrite(mixf,sizeof(mixr));
|
||||||
|
@ -243,7 +250,9 @@ begin
|
||||||
blockwrite(mixf,mintab[0],100);
|
blockwrite(mixf,mintab[0],100);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
assign(brdf,systat.msgpath+fn+'.BRD');
|
{rcg11272000 filename case.}
|
||||||
|
{assign(brdf,systat.msgpath+fn+'.BRD');}
|
||||||
|
assign(brdf,systat.msgpath+fn+'.brd');
|
||||||
{$I-} reset(brdf,1); {$I+}
|
{$I-} reset(brdf,1); {$I+}
|
||||||
if (ioresult<>0) then rewrite(brdf,1);
|
if (ioresult<>0) then rewrite(brdf,1);
|
||||||
|
|
||||||
|
|
48
myio.pas
48
myio.pas
|
@ -406,29 +406,35 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure savescreen(var wind:windowrec; TLX,TLY,BRX,BRY:integer);
|
procedure savescreen(var wind:windowrec; TLX,TLY,BRX,BRY:integer);
|
||||||
{rcg11172000 this only flies under DOS.}
|
|
||||||
{
|
|
||||||
var x,y,i:integer;
|
var x,y,i:integer;
|
||||||
|
{rcg12152000 my add.}
|
||||||
|
arraypos : integer;
|
||||||
begin
|
begin
|
||||||
checkvidseg;
|
checkvidseg;
|
||||||
|
|
||||||
|
{ !!! uhoh...problems in xterms? }
|
||||||
|
|
||||||
wind[4000]:=TLX; wind[4001]:=TLY;
|
wind[4000]:=TLX; wind[4001]:=TLY;
|
||||||
wind[4002]:=BRX; wind[4003]:=BRY;
|
wind[4002]:=BRX; wind[4003]:=BRY;
|
||||||
|
|
||||||
|
|
||||||
i:=0;
|
i:=0;
|
||||||
for y:=TLY to BRY do
|
for y:=TLY to BRY do
|
||||||
for x:=TLX to BRX do begin
|
for x:=TLX to BRX do begin
|
||||||
|
{rcg11172000 this only flies under DOS.}
|
||||||
|
{
|
||||||
inline($FA);
|
inline($FA);
|
||||||
wind[i]:=mem[vidseg:(160*(y-1)+2*(x-1))];
|
wind[i]:=mem[vidseg:(160*(y-1)+2*(x-1))];
|
||||||
wind[i+1]:=mem[vidseg:(160*(y-1)+2*(x-1))+1];
|
wind[i+1]:=mem[vidseg:(160*(y-1)+2*(x-1))+1];
|
||||||
inline($FB);
|
inline($FB);
|
||||||
|
}
|
||||||
|
{ !!! this might be FreePascal/Linux-specific...}
|
||||||
|
arraypos := ((y * ScreenWidth) + x);
|
||||||
|
wind[i] := byte(ConsoleBuf^[arraypos].ch);
|
||||||
|
wind[i+1] := ConsoleBuf^[arraypos].attr;
|
||||||
inc(i,2);
|
inc(i,2);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
}
|
|
||||||
begin
|
|
||||||
writeln('STUB: myio.pas; savescreen()...');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure setwindow(var wind:windowrec; TLX,TLY,BRX,BRY,tcolr,bcolr,boxtype:integer);
|
procedure setwindow(var wind:windowrec; TLX,TLY,BRX,BRY,tcolr,bcolr,boxtype:integer);
|
||||||
{rcg11172000 unused variable.}
|
{rcg11172000 unused variable.}
|
||||||
|
@ -442,9 +448,9 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure removewindow(wind:windowrec);
|
procedure removewindow(wind:windowrec);
|
||||||
{rcg11172000 this only flies under DOS.}
|
|
||||||
{
|
|
||||||
var TLX,TLY,BRX,BRY,x,y,i:integer;
|
var TLX,TLY,BRX,BRY,x,y,i:integer;
|
||||||
|
{rcg12152000 my add.}
|
||||||
|
arraypos : integer;
|
||||||
begin
|
begin
|
||||||
checkvidseg;
|
checkvidseg;
|
||||||
|
|
||||||
|
@ -457,17 +463,20 @@ begin
|
||||||
i:=0;
|
i:=0;
|
||||||
for y:=TLY to BRY do
|
for y:=TLY to BRY do
|
||||||
for x:=TLX to BRX do begin
|
for x:=TLX to BRX do begin
|
||||||
|
{rcg11172000 this only flies under DOS.}
|
||||||
|
{
|
||||||
inline($FA);
|
inline($FA);
|
||||||
mem[vidseg:(160*(y-1)+2*(x-1))]:=wind[i];
|
mem[vidseg:(160*(y-1)+2*(x-1))]:=wind[i];
|
||||||
mem[vidseg:(160*(y-1)+2*(x-1))+1]:=wind[i+1];
|
mem[vidseg:(160*(y-1)+2*(x-1))+1]:=wind[i+1];
|
||||||
inline($FB);
|
inline($FB);
|
||||||
|
}
|
||||||
|
{ !!! this might be FreePascal/Linux-specific...}
|
||||||
|
arraypos := ((y * ScreenWidth) + x);
|
||||||
|
ConsoleBuf^[arraypos].ch := char(wind[i]);
|
||||||
|
ConsoleBuf^[arraypos].attr := wind[i+1];
|
||||||
inc(i,2);
|
inc(i,2);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
}
|
|
||||||
begin
|
|
||||||
writeln('STUB: myio.pas; removewindow()...');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure removewindow1(wind:windowrec);
|
procedure removewindow1(wind:windowrec);
|
||||||
var oldx1,oldy1,oldx2,oldy2,sx,sy,sz:byte;
|
var oldx1,oldy1,oldx2,oldy2,sx,sy,sz:byte;
|
||||||
|
@ -483,9 +492,9 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure movewindow(wind:windowrec; TLX,TLY:integer);
|
procedure movewindow(wind:windowrec; TLX,TLY:integer);
|
||||||
{rcg11172000 this only flies under DOS.}
|
|
||||||
{
|
|
||||||
var BRX,BRY,x,y,i:integer;
|
var BRX,BRY,x,y,i:integer;
|
||||||
|
{rcg12152000 my add.}
|
||||||
|
arraypos : integer;
|
||||||
begin
|
begin
|
||||||
checkvidseg;
|
checkvidseg;
|
||||||
|
|
||||||
|
@ -498,16 +507,19 @@ begin
|
||||||
i:=0;
|
i:=0;
|
||||||
for y:=TLY to BRY do
|
for y:=TLY to BRY do
|
||||||
for x:=TLX to BRX do begin
|
for x:=TLX to BRX do begin
|
||||||
|
{rcg11172000 this only flies under DOS.}
|
||||||
|
{
|
||||||
inline($FA);
|
inline($FA);
|
||||||
mem[vidseg:(160*(y-1)+2*(x-1))]:=wind[i];
|
mem[vidseg:(160*(y-1)+2*(x-1))]:=wind[i];
|
||||||
mem[vidseg:(160*(y-1)+2*(x-1))+1]:=wind[i+1];
|
mem[vidseg:(160*(y-1)+2*(x-1))+1]:=wind[i+1];
|
||||||
inline($FB);
|
inline($FB);
|
||||||
|
}
|
||||||
|
{ !!! this might be FreePascal/Linux-specific...}
|
||||||
|
arraypos := ((y * ScreenWidth) + x);
|
||||||
|
wind[i] := byte(ConsoleBuf^[arraypos].ch);
|
||||||
|
wind[i+1] := ConsoleBuf^[arraypos].attr;
|
||||||
inc(i,2);
|
inc(i,2);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
}
|
|
||||||
begin
|
|
||||||
writeln('STUB: myio.pas; movewindow()...');
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
28
rec25.pas
28
rec25.pas
|
@ -83,10 +83,14 @@ TYPE
|
||||||
realname:string[36]; { real name }
|
realname:string[36]; { real name }
|
||||||
pw:string[20]; { user password }
|
pw:string[20]; { user password }
|
||||||
ph:string[12]; { user phone # }
|
ph:string[12]; { user phone # }
|
||||||
bday:string[8]; { user birthdate }
|
{rcg11272000 Y2K limitations.}
|
||||||
firston:string[8]; { firston date }
|
(*bday:string[8]; { user birthdate }*)
|
||||||
|
(*firston:string[8]; { firston date }*)
|
||||||
|
(*laston:string[8]; { laston date }*)
|
||||||
|
bday:string[10]; { user birthdate }
|
||||||
|
firston:string[10]; { firston date }
|
||||||
x1xs :array[1..2] of byte;
|
x1xs :array[1..2] of byte;
|
||||||
laston:string[8]; { laston date }
|
laston:string[10]; { laston date }
|
||||||
x2xs :array[1..2] of byte;
|
x2xs :array[1..2] of byte;
|
||||||
street:string[30]; { mailing address }
|
street:string[30]; { mailing address }
|
||||||
citystate:string[30]; { city, state }
|
citystate:string[30]; { city, state }
|
||||||
|
@ -224,7 +228,9 @@ TYPE
|
||||||
|
|
||||||
zlogrec= { ZLOG.DAT : System log }
|
zlogrec= { ZLOG.DAT : System log }
|
||||||
record
|
record
|
||||||
date:string[8];
|
{rcg11272000 Y2K bullshite.}
|
||||||
|
{date:string[8];}
|
||||||
|
date:string[10];
|
||||||
userbaud:array[0..4] of integer;
|
userbaud:array[0..4] of integer;
|
||||||
active,calls,newusers,pubpost,privpost,fback,criterr:integer;
|
active,calls,newusers,pubpost,privpost,fback,criterr:integer;
|
||||||
uploads,downloads:integer;
|
uploads,downloads:integer;
|
||||||
|
@ -341,7 +347,9 @@ TYPE
|
||||||
closedsystem:boolean; { DON'T allow new users? }
|
closedsystem:boolean; { DON'T allow new users? }
|
||||||
swapshell:boolean; { is swap shell function enabled? }
|
swapshell:boolean; { is swap shell function enabled? }
|
||||||
eventwarningtime:integer; { time before event warning }
|
eventwarningtime:integer; { time before event warning }
|
||||||
tfiledate:string[8]; { last date text-files were inserted }
|
{rcg11272000 y2k stuff.}
|
||||||
|
(*tfiledate:string[8]; { last date text-files were inserted }*)
|
||||||
|
tfiledate:string[10]; { last date text-files were inserted }
|
||||||
lastmsgid:longint; { last-used message ID (sequential) }
|
lastmsgid:longint; { last-used message ID (sequential) }
|
||||||
res1:array[1..20] of byte; { RESERVED SPACE #1 }
|
res1:array[1..20] of byte; { RESERVED SPACE #1 }
|
||||||
|
|
||||||
|
@ -452,7 +460,9 @@ TYPE
|
||||||
dlkratio, { DLk/ULk ratios }
|
dlkratio, { DLk/ULk ratios }
|
||||||
postratio:secrange; { post/call ratios }
|
postratio:secrange; { post/call ratios }
|
||||||
|
|
||||||
lastdate:string[8]; { last system date }
|
{rcg11272000 y2k stuff.}
|
||||||
|
(*lastdate:string[8]; { last system date }*)
|
||||||
|
lastdate:string[10]; { last system date }
|
||||||
curwindow:byte; { type of SysOp window currently in use }
|
curwindow:byte; { type of SysOp window currently in use }
|
||||||
istopwindow:boolean; { is SysOp window on top of screen? }
|
istopwindow:boolean; { is SysOp window on top of screen? }
|
||||||
callernum:longint; { total number of callers }
|
callernum:longint; { total number of callers }
|
||||||
|
@ -479,7 +489,9 @@ TYPE
|
||||||
record
|
record
|
||||||
title:string[40]; { title }
|
title:string[40]; { title }
|
||||||
filen:string[12]; { filename }
|
filen:string[12]; { filename }
|
||||||
gdate:string[8]; { date of Tfile / Tfile base }
|
{rcg11272000 Y2K shit.}
|
||||||
|
(*gdate:string[8]; { date of Tfile / Tfile base }*)
|
||||||
|
gdate:string[10]; { date of Tfile / Tfile base }
|
||||||
gdaten:integer; { numeric date for fast calculation }
|
gdaten:integer; { numeric date for fast calculation }
|
||||||
acs, { access requirement }
|
acs, { access requirement }
|
||||||
ulacs:acstring; { upload to base access requirement }
|
ulacs:acstring; { upload to base access requirement }
|
||||||
|
@ -590,6 +602,8 @@ TYPE
|
||||||
blocks:integer; { # 128 byte blks }
|
blocks:integer; { # 128 byte blks }
|
||||||
owner:integer; { ULer of file }
|
owner:integer; { ULer of file }
|
||||||
stowner:string[36]; { ULer's name }
|
stowner:string[36]; { ULer's name }
|
||||||
|
{rcg11272000 y2k stuff.}
|
||||||
|
(*date:string[8]; { Date ULed }*)
|
||||||
date:string[8]; { Date ULed }
|
date:string[8]; { Date ULed }
|
||||||
daten:integer; { Numeric date ULed }
|
daten:integer; { Numeric date ULed }
|
||||||
vpointer:longint; { Pointer to verbose descr, -1 if none }
|
vpointer:longint; { Pointer to verbose descr, -1 if none }
|
||||||
|
|
|
@ -113,7 +113,9 @@ var ii:array[1..12] of astr;
|
||||||
#3#3+sex+cstr(ageuser(bday))+' ('+bday+')';
|
#3#3+sex+cstr(ageuser(bday))+' ('+bday+')';
|
||||||
5:ii[5]:='City / State :'+#3#3+mln(citystate,30)+#3#1+' Zip-code:'+#3#3+zipcode;
|
5:ii[5]:='City / State :'+#3#3+mln(citystate,30)+#3#1+' Zip-code:'+#3#3+zipcode;
|
||||||
6:ii[6]:='Computer type:'+#3#3+mln(computer,30)+#3#1+' Phone # :'+#3#3+ph;
|
6:ii[6]:='Computer type:'+#3#3+mln(computer,30)+#3#1+' Phone # :'+#3#3+ph;
|
||||||
7:ii[7]:='SysOp note :'+#3#3+mln(note,35)+#3#1+'Last/1st:'+#3#3+laston+' ('+firston+')';
|
{rcg11272000 didn't fit on an 8-char line once the years were 4-digit.}
|
||||||
|
{7:ii[7]:='SysOp note :'+#3#3+mln(note,35)+#3#1+'Last/1st:'+#3#3+laston+' ('+firston+')';}
|
||||||
|
7:ii[7]:='SysOp note :'+#3#3+mln(note,35)+#3#1+'Last/1st:'+#3#3+laston+' '+firston;
|
||||||
8:begin
|
8:begin
|
||||||
ii[8]:='Occupation :'+#3#3+mln(occupation,35)+#3#1+'Lockfile:';
|
ii[8]:='Occupation :'+#3#3+mln(occupation,35)+#3#1+'Lockfile:';
|
||||||
if lockedout then ii[8]:=ii[8]+#3#7+lockedfile+'.MSG' else
|
if lockedout then ii[8]:=ii[8]+#3#7+lockedfile+'.MSG' else
|
||||||
|
|
49
t2t.pas
49
t2t.pas
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
uses
|
uses
|
||||||
crt,dos,
|
crt,dos,
|
||||||
myio;
|
myio, common;
|
||||||
|
|
||||||
{$I tagr24d.pas}
|
{$I tagr24d.pas}
|
||||||
{$I rec18a.pas}
|
{$I rec18a.pas}
|
||||||
|
@ -103,6 +103,9 @@ begin
|
||||||
tch:=i;
|
tch:=i;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||||||
|
{ below is a working implementation.}
|
||||||
|
{
|
||||||
function time:astr;
|
function time:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
h,m,s:string[4];
|
h,m,s:string[4];
|
||||||
|
@ -111,7 +114,20 @@ begin
|
||||||
str(reg.cx shr 8,h); str(reg.cx mod 256,m); str(reg.dx shr 8,s);
|
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);
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||||||
end;
|
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;
|
function date:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
m,d,y:string[4];
|
m,d,y:string[4];
|
||||||
|
@ -120,6 +136,26 @@ begin
|
||||||
str(reg.dx shr 8,m);
|
str(reg.dx shr 8,m);
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
||||||
end;
|
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;
|
function leapyear(yr:integer):boolean;
|
||||||
begin
|
begin
|
||||||
|
@ -150,11 +186,14 @@ begin
|
||||||
d:=value(copy(dt,4,2));
|
d:=value(copy(dt,4,2));
|
||||||
|
|
||||||
{rcg11182000 hahahaha...a Y2K bug. :) }
|
{rcg11182000 hahahaha...a Y2K bug. :) }
|
||||||
y:=value(copy(dt,7,2))+1900;
|
{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;}
|
||||||
|
|
||||||
{rcg11182000 added this conditional. }
|
{rcg11272000 my adds...}
|
||||||
if (y < 1977) then { Ugh...this is so bad. }
|
if (length(dt) < 10) then rcgpanic('WHOA! TWO DIGIT YEAR IN DATE!');
|
||||||
y := y + 100;
|
y:=value(copy(dt,7,4));
|
||||||
|
{rcg11272000 end my adds...}
|
||||||
|
|
||||||
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;
|
||||||
|
|
36
ta2z.pas
36
ta2z.pas
|
@ -52,6 +52,9 @@ begin
|
||||||
tch:=i;
|
tch:=i;
|
||||||
end;
|
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;
|
function date:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
m,d,y:string[4];
|
m,d,y:string[4];
|
||||||
|
@ -60,7 +63,30 @@ begin
|
||||||
str(reg.dx shr 8,m);
|
str(reg.dx shr 8,m);
|
||||||
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
||||||
end;
|
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;
|
||||||
|
|
||||||
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
||||||
|
{ below is a working implementation.}
|
||||||
|
{
|
||||||
function time:astr;
|
function time:astr;
|
||||||
var reg:registers;
|
var reg:registers;
|
||||||
h,m,s:string[4];
|
h,m,s:string[4];
|
||||||
|
@ -69,6 +95,16 @@ begin
|
||||||
str(reg.cx shr 8,h); str(reg.cx mod 256,m); str(reg.dx shr 8,s);
|
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);
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
||||||
end;
|
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;
|
||||||
|
|
||||||
function value(I:astr):integer;
|
function value(I:astr):integer;
|
||||||
var n,n1:integer;
|
var n,n1:integer;
|
||||||
|
|
32
tmpcom.pas
32
tmpcom.pas
|
@ -741,6 +741,29 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
{
|
||||||
|
primary_sockh = Socket(AF_INET, SOCK_STREAM, PF_INET);
|
||||||
|
if (primary_sockh = -1) then
|
||||||
|
begin
|
||||||
|
writeln;
|
||||||
|
writeln('WHOA! Socket() returned -1!');
|
||||||
|
writeln(' Aborting...');
|
||||||
|
halt(2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (Bind(primary_sockh,
|
||||||
|
|
||||||
|
if (Listen(primary_sockh, 0) = FALSE) then
|
||||||
|
begin
|
||||||
|
writeln;
|
||||||
|
writeln('WHOA! Socket() returned -1!');
|
||||||
|
writeln(' Aborting...');
|
||||||
|
halt(2);
|
||||||
|
end;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -781,25 +804,22 @@ begin
|
||||||
setintvec(intnum,old_vector);
|
setintvec(intnum,old_vector);
|
||||||
end;
|
end;
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
{if (sockh <> -1) then Shutdown(sockh, 2);}
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ This procedure is called when the program exits for any reason. It
|
{ This procedure is called when the program exits for any reason. It
|
||||||
deinstalls the interrupt driver.}
|
deinstalls the interrupt driver.}
|
||||||
{$F+} procedure exit_procedure; {$F-}
|
{$F+} procedure exit_procedure; {$F-}
|
||||||
begin
|
begin
|
||||||
{rcg11172000 not needed under Linux.}
|
|
||||||
{
|
|
||||||
com_deinstall;
|
com_deinstall;
|
||||||
exitproc:=exit_save;
|
exitproc:=exit_save;
|
||||||
}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ This installs the exit procedure. }
|
{ This installs the exit procedure. }
|
||||||
begin
|
begin
|
||||||
{rcg11172000 not needed under Linux.}
|
|
||||||
{
|
|
||||||
exit_save:=exitproc;
|
exit_save:=exitproc;
|
||||||
exitproc:=@exit_procedure;
|
exitproc:=@exit_procedure;
|
||||||
}
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
11
wfcmenu.pas
11
wfcmenu.pas
|
@ -417,6 +417,8 @@ var u:userrec;
|
||||||
|
|
||||||
rl1:=timer;
|
rl1:=timer;
|
||||||
repeat
|
repeat
|
||||||
|
{rcg12012000 delay added to stop CPU chowing...}
|
||||||
|
delay(10);
|
||||||
if (recom1(c)) then begin
|
if (recom1(c)) then begin
|
||||||
if (c in ['0',^M]) then done:=TRUE;
|
if (c in ['0',^M]) then done:=TRUE;
|
||||||
if (c in [#32..#255]) then wr(2,c);
|
if (c in [#32..#255]) then wr(2,c);
|
||||||
|
@ -427,7 +429,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 begin isc:=readkey; writeln(ord(isc)); end;
|
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);
|
||||||
|
|
||||||
|
@ -717,6 +719,11 @@ begin
|
||||||
|
|
||||||
if ((systat.specialfx) and (not blankmenunow) and
|
if ((systat.specialfx) and (not blankmenunow) and
|
||||||
(sysopon) and (systat.usewfclogo)) then begin
|
(sysopon) and (systat.usewfclogo)) then begin
|
||||||
|
|
||||||
|
{rcg11302000 added delay() so the stupid Telegard animation}
|
||||||
|
{doesn't eat all the processor time...}
|
||||||
|
delay(10);
|
||||||
|
|
||||||
inc(duh);
|
inc(duh);
|
||||||
if (duh=30) then begin
|
if (duh=30) then begin
|
||||||
duh:=0; inc(txt); if (txt>5) then txt:=0;
|
duh:=0; inc(txt); if (txt>5) then txt:=0;
|
||||||
|
@ -945,7 +952,7 @@ begin
|
||||||
cwrite(#3#3+'Log on? ('+#3#11+'Y'+#3#3+'/'+#3#11+'N'+
|
cwrite(#3#3+'Log on? ('+#3#11+'Y'+#3#3+'/'+#3#11+'N'+
|
||||||
#3#3+'-'+#3#11+'F'+#3#3+'ast) : ');
|
#3#3+'-'+#3#11+'F'+#3#3+'ast) : ');
|
||||||
rl2:=timer;
|
rl2:=timer;
|
||||||
while (not keypressed) and (abs(timer-rl2)<30.0) do;
|
while (not keypressed) and (abs(timer-rl2)<30.0) do delay(10);
|
||||||
if (keypressed) then c:=readkey else c:='N';
|
if (keypressed) then c:=readkey else c:='N';
|
||||||
c:=upcase(c); writeln(c);
|
c:=upcase(c); writeln(c);
|
||||||
case c of
|
case c of
|
||||||
|
|
Loading…
Reference in New Issue