home *** CD-ROM | disk | FTP | other *** search
- { PICS2K.INC - Pascal Integrated Communications System Overlays}
- { 6/10/87 Version 1.6 Copyright 1987 by Les Archambault}
-
- overlay procedure login;
- var
- continue,abort: boolean;
- key: StrName;
-
- procedure get_new_user(var continue: boolean);
- var
- i: integer;
- begin
- continue := FALSE;
- Writeln(USR);
- Writeln(USR, 'Name not found.');
- list('A');
- Writeln(USR);
- continue := ask('Are you a new user');
- if continue
- then with user_rec do
- begin
- get_case;
- get_nulls;
- st:=prompt('From what STATE [2 letter abbrev.] are you calling',len_st,'ES');
- cy := prompt('What CITY', len_ad, 'EL');
- ph:=prompt('Your phone number [###-###-####] ',len_ph,'EL');
- ad:=prompt('What computer do you use',len_ad,'EL');
- Writeln(USR);
- Writeln(USR, 'You are ', fn, ' ', ln, ' from ', cy, ', ', st, '.');
- writeln(usr, 'phone number ',ph);
- writeln(usr,ad,' computer.');
- Writeln(USR);
- continue := ask('Is that correct');
- if continue
- then
- begin
- get_new_password;
- used := 0;
- if fn = 'SYSOP'
- then access := 255
- else access := uval_acc;
- limit := uval_time;
- if fn='SYSOP' then conf_flags:=254 else conf_flags := 0;
- columns := def_chars;
- lines := def_lines;
- for i := 0 to 5 do
- laston[i] := 0;
- time_today := 0;
- flags:=0;
- time_total := 0;
- lasthi := 0;
- upload := 0;
- download := 0;
-
- key := pad(ln, len_ln) + pad(fn, len_fn);
- AddRec(DatF, user_loc, user_rec);
- AddKey(IdxF, user_loc, key);
- log(9, '');
- list('I');
- pause
- end
- end
- end;
-
- procedure init_user;
- var
- str: StrTAD;
- begin
- temp_hi_lmr:=0;
- if local_online
- then log(2, 'Local')
- else log(2, intstr(rate, 3) + ' bps');
- Seek(logr_file, 0);
- Read(logr_file, logr_rec);
- logr_rec.user := succ(logr_rec.user); {caller number}
- if logr_rec.user=maxint then logr_rec.user:=1; {reset }
- Seek(logr_file, 0);
- Write(logr_file, logr_rec);
- GetTAD(login_t);
- if (login_t[3] <> user_rec.laston[3]) or
- (login_t[4] <> user_rec.laston[4]) or
- (login_t[5] <> user_rec.laston[5]) then user_rec.time_today := 0;
- if user_rec.access < 10 { Hang up on twit }
- then remote_online := FALSE
- else
- show_user_stats;
- end;
-
- begin { login }
- abort:=false;
- Writeln(USR, version);
- Writeln(USR, ver_date);
- repeat until (not BRK) or (not online);
- if (not macro_in_progress) and (online) then list('W');
- repeat
- if macro_in_progress then
- begin
- user_rec.fn:='SYSOP'; user_rec.ln:='';
- end
- else
- get_name(user_rec.fn, user_rec.ln,'C');
- timeout := sleepy_time; { increase input timeout }
- key := pad(user_rec.ln, len_ln) + pad(user_rec.fn, len_fn);
- FindKey(IdxF, user_loc, key);
- if OK
- then
- begin
- GetRec(DatF, user_loc, user_rec);
- if macro_in_progress then
- begin
- valid_pw:=true;
- mode:=sysop_mode;
- end
- else
- begin
- Get_old_password(' Password',valid_pw);
- if not valid_pw then list('P');
- end;
- continue := TRUE;
- end
- else
- begin
- if diskfree(homdrv,homusr)>maxfree_logs then
- begin
- get_new_user(continue);
- if continue then valid_pw:=true;
- end
- else
- begin
- valid_pw:=false;
- writeln(usr);
- writeln(usr,'Name not found. Not enough disk space for new callers.');
- writeln(usr,' Please call back soon.');
- writeln(usr);
- delay(5000);
- continue:=false;
- remote_online:=false;
- mdhangup;
- abort:=true;
- end;
- end;
- until (not online) or continue or abort;
- in_use := valid_pw;
- connected := continue;
- if online and in_use
- then init_user;
- end;
-
- overlay procedure cold_start;
- var
- i,try,errcnt : integer;
- SysmThis, SysmLast: SysmPtr;
- sysm_text: text;
- t:tad_array;
-
- Procedure build_sysm;
- { Build SYSMSG.BB# file }
- var i:integer;
- goof,error:boolean;
- work:string[255];
- dummy:char;
- begin
- goof:=false;
- errcnt:=0;
- {$I-} Close(sysm_file) {$I+}; { Shouldn't erase an open file }
- i := IOresult; { Ignore any errors }
- Rewrite(sysm_file);
- Assign(sysm_text, sysm_name + '.TXT');
- {$I-} Reset(sysm_text) {$I+};
- if IOresult = 0
- then
- begin
- Write(' Creating ', sysm_name, ext);
- while (not eof(sysm_text)) and (errcnt<50) do
- begin
- {$I-} readln(sysm_text,work); {$I+}
- error:=(ioresult<>0);
- if length(work)>79 then
- begin
- sysm_rec:=copy(work,1,79);
- writeln;
- writeln;
- writeln('Line too long, truncating.');
- writeln;
- goof:=true;
- end
- else sysm_rec:=work;
- if not error then write(sysm_file,sysm_rec);
- if error then
- begin
- writeln;
- writeln;
- writeln('Error reading text line. No CR,LF ? ');
- goof:=true;
- errcnt:=succ(errcnt);
- end;
- end; {while not eof text file}
- Close(sysm_text);
- Close(sysm_file);
- Reset(sysm_file);
- if goof or error then
- begin
- writeln;
- writeln(sysm_name,'TXT problem may result in parts of SYSMSG.BB# not being complete.');
- writeln;
- writeln(' Lines in text file should not be longer than 79 characters');
- writeln(' or have high bits set (soft CRs) by the editor you use.');
- writeln;
- delay(10000);
- end;
- end {ioresult=0}
- else
- begin
- Writeln;
- Write('System message text file ', sysm_name,'TXT not found.');
- end;
- Writeln;
- end;
-
- begin {cold start}
- debug:=false;
- cold := TRUE;
- lps := (Mhz/4.0)*1250.0; {adjust for machine speed}
- for i:=0 to 5 do global_date[i]:=0; { preset for no clock vers}
- mult_cmds :=false; {no multiple commands}
- cmd_queue :='';
- chat_ok := def_chat_ok;
- clock := true; {unless turned off}
- hour_count :=0.0;
- macro_in_progress := false;
- gettad(t);
- macro_done := t[3];
- val_acc := def_val_acc;
- uval_acc := def_uval_acc;
- val_time := def_val_time;
- uval_time := def_uval_time;
- chatstart := def_chatstart;
- chatend := def_chatend;
- unv_days := def_unv_days;
- val_days := def_val_days;
- unr_days := def_unr_days;
- rea_days := def_rea_days;
- max_tries := def_max_tries;
- restrict300 := def_restrict300;
- start_restrict300 := def_start_restrict300;
- end_restrict300 := def_end_restrict300;
- auto_macro := def_auto_macro;
- auto_macro_start := def_auto_macro_start;
- max_msg_lines := def_max_msg_lines;
- restrict_public := def_restrict_public;
- limit_lines :=def_limit_lines;
- up_down_ratio :=def_up_down_ratio;
- sleepy_time :=def_sleepy_time;
- maxfree_uplds :=def_maxfree_uplds;
- maxfree_logs :=def_maxfree_logs;
- maxfree_mslimit :=def_maxfree_mslimit;
- maxfree_lines :=def_maxfree_lines;
- maxfree_abs :=def_maxfree_abs;
- extra_time_sw :=def_extra_time;
- extra_time_start :=def_extra_time_start;
- extra_time_stop :=def_extra_time_stop;
- extra_time_val :=def_extra_time_val;
- time_adjust :=def_time_adjust;
-
- macro := Deflt_macro;
-
- audit_on := FALSE;
- delay_down := FALSE;
- in_library := FALSE; { Start in non-library mode }
- in_arc := FALSE;
-
- SysmBase := nil; { Initialize pointers}
- SectBase := nil;
- AreaBase := nil;
- MesgBase := nil;
- DirBase := nil;
- LibBase := nil;
- Artbase := nil;
- ArcBase := nil;
- UsrOutPtr := addr(putchar); { Initialize output driver }
- HomDrv := BDOS(getdrive); { Assume system files are }
- HomUsr := BDOS(getseluser, $FF); { in the startup area }
- AudDrv := Homdrv; { default setting}
- AudUsr := HomUsr;
- BDOS(13); { Reset disks}
- setsect(homdrv,homusr); { Return to proper drive, user}
- Assign(sysm_file, sysm_name + ext);
- Assign(summ_file, summ_name + ext);
- Assign(mesg_file, mesg_name + ext);
- Assign(logr_file, logr_name + ext);
- Assign(stat_file, stat_name + ext);
- Assign(nwin_file, nwin_name + ext);
- Try:=0;
- {$I-} Reset(sysm_file) {$I+}; { Try to open system message file }
- if IOresult <> 0
- then
- begin
- Write('Cannot open ', sysm_name + ext, '.');
- build_sysm;
- try:=succ(try);
- end;
- {$I-} read(sysm_file, sysm_rec) {$I+}; { Try to read file }
- if IOresult <> 0
- then
- begin
- OK:=false;
- if try=0 then
- begin
- write('Cannot read ',sysm_name +ext,'.');
- build_sysm;
- seek(sysm_file,0);
- {$I-} read(sysm_file,sysm_rec); {$I+}
- OK:=(IOresult=0);
- end;
- if not OK then
- begin
- Writeln;
- Writeln('Cannot create ', sysm_name + ext, '.');
- Writeln('Unable to continue.');
- halt;
- end;
- end;
- i := 0;
- while not EOF(sysm_file) do
- begin
- if sysm_rec[1] = ':'
- then
- begin
- new(SysmThis);
- if SysmBase = nil
- then SysmBase := SysmThis
- else SysmLast^.next := SysmThis;
- SysmLast := SysmThis;
- SysmLast^.key := sysm_rec[2];
- SysmLast^.loc := i;
- SysmLast^.next := nil
- end;
- read(sysm_file, sysm_rec);
- i := succ(i)
- end;
- RcvDrv := 0; { Default to A0: for uploads }
- RcvUsr := 0;
- Read_section_file;
- if auto_macro and (t[2]<auto_macro_start) then macro_done:=t[3]-1;
- end;
-
- {end of PICS2K.INC }