home *** CD-ROM | disk | FTP | other *** search
-
- {********** dial.inc **********}
- { auto dial reoutines }
-
- procedure call;
- {auto dial}
- label calloop;
- var
- ch,ch1: char;
- temp2: data;
- temp4, line2: ldata;
-
- function SubString(mainstring: data2; startNo, endNo: integer): dataa;
- var
- len: integer;
- begin
- len:= endNo - startNo;
- if len < 1 then len:= 0;
- SubString:= copy(mainstring, startNo, len + 1);
- end; {SubString}
-
- procedure Phone_Directory;
-
- var
- show_directory: boolean;
- position: integer;
- local: char;
- temp: string[95];
-
- begin
- if slowbaud then set_hiBaud;
- slowbaud:= false;
- logline:= '';
- show_directory:= false;
- { phone:= }
- if length(line)<2 then begin {line may already have value}
- show_directory:= true;
- writeln;
- writeln(' Phone Directory');
- writeln('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-');
- end
- else begin
- delete(line,1,1);
- eraseOK:= false;
- end;
-
- for I:= 1 to phone_list do begin
- temp:=phone[I];
- if temp[25]= '@' then begin
- temp:= SubString(phone[I], 26, length(phone[I]));
- position:= pos('/',temp);
- if position<1 then position:= 0;
- logline:= SubString(temp, position+1, length(temp));
- temp:= SubString(phone[I], 1, 24 + position);
- end;
- if show_directory then begin
- writeln(temp);
- if I = 6 then writeln;
- end;
- end;
- if show_directory then begin
- if phone_list> 3 then writeln('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-');
- writeln;
- write('letter, number / <RET> for menue: ');
- readln(line);
- end;
-
- if length(line)>0 then begin
- line[1]:= upCase(line[1]);
- if line[1] in ['A'..Chr(phone_list + 64)] then
- line:= copy(phone[ord(line[1])-$40],25,95) {get phone number}
- else if line[1] in [Chr(phone_list + 65)..'Z'] then line:= '';
- if length(line)>0 then begin
- if eraseOK then clrScr;
- if line[1]= '@' then begin
- autolog:= true;
- delete(line,1,1);
- position:= pos('/',line);
- if position<1 then position:= 0;
- logline:= SubString(line, position+1, length(line));
- line:= SubString(line, 1, position-1);
- end
- else autolog:= false;
- if line[1]= '~' then begin
- delete(line,1,1);
- slowbaud:= true;
- end;
- if slowbaud and not hiBaud then slowbaud:= false
- else if slowbaud then set_loBaud;
- end
- end;
- end; {Phone_Directory}
-
- begin {call}
- temp2:= 'Y'; line2:= '';
- write('CALL ');
- if length(phone_buffer)>0 then write('(', phone_buffer, ' previous)');
- writeln;
- Phone_Directory;
- if length(line)>0 then begin
- if line[1]= ' ' then line:= phone_buffer
- else phone_buffer:= line;
- delay(300);
- CALLOOP:
- writeln('dialing ',line);
- ch:= CR;
- go_Dial(line);
- while ch in [CR, LF] do begin
- if modem_in_ready then ch:= getMod;
- if keyPressed then begin
- ch1:= chr(bdos(1));
- modem_out(' ');
- end;
- end;
- if carrier then delay(500);
- if carrier then terminal_mode
- else begin
- temp1:= getMod;
- if upCase(temp2)= 'Y' then begin
- write('Try again (Y/[N]/R)? ');
- temp2:= upCase(chr(bdos(1)));
- writeln;
- if length(temp2)= 0 then temp2:= 'N';
- end;
- case temp2[1] of
- 'Y': goto calloop;
- 'R': begin
- time;
- if X<> ^X then goto calloop;
- end;
- end;
- end;
- end;
- if not carrier then begin
- if slowbaud then set_hiBaud;
- eraseOK:= true;
- end
- else eraseOK:= false;
- modem_out(^@); {any chr to hang up if dialing}
- end; {call}
-