home *** CD-ROM | disk | FTP | other *** search
- { Donated by Warren Smith, Feb 1982 }
-
- Program Terminal;
-
- Var
- Modem_Mode : byte; { must be used to hold modem's mode }
- I : integer;
- Number : string;
- Xoff : boolean;
- ESC_Char,
- Answer : char;
-
- { ** Found in CRT.PAS ** }
- External Procedure ScreenClr;
-
- External Function ConIn : char;
-
- External Procedure ConOut (Out_Char : char);
-
- External Function KeyPressed : boolean;
-
- External Function Get_Console : char;
-
- External Procedure GotoXY (X, Y : integer);
-
- { ** Found in UTILITY.PAS ** }
- External Function Upper (In_Char : char) : char;
-
- { ** Found in either DCMODEM.PAS or ACOUSTIC.PAS ** }
- External Procedure Init_Modem;
-
- External Procedure Set_Modem (Modebyte : byte);
-
- External Procedure Go_Onhook (Var Modem_Mode : byte);
-
- External Procedure Go_Offhook (Var Modem_Mode : byte);
-
- External Procedure Set_Ans_Mode (Var Modem_Mode : byte);
-
- External Procedure Set_Org_Mode (Var Modem_Mode : byte);
-
- External Procedure Set_110bps (Var Modem_Mode : byte);
-
- External Procedure Set_300bps (Var Modem_Mode : byte);
-
- External Procedure Enable_Xmit (Var Modem_Mode : byte);
-
- External Procedure Disable_Xmit (Var Modem_Mode : byte);
-
- External Function Carrier_Present : boolean;
-
- External Function Ringing : boolean;
-
- External Function Modem_Char_Rdy : boolean;
-
- External Function Modem_In : char;
-
- External Function Modem_Out (OutChar : char) : boolean;
-
- External Procedure Delay; { delay's for 10 millisecond }
-
- External Procedure Dial_a_Number (Var Modem_Mode : byte; Number : string);
-
- Procedure Dumb;
-
- Var
- Terminator, In_Char, In_Mod,
- Control_Char, Dummy_Char : char;
- Half_Duplex, Dummy_Boolean,
- Test_Line : boolean;
-
- begin { Dumb }
- In_Char := chr(0);
- Terminator := chr(26);
-
- Half_Duplex := TRUE;
- Test_Line := FALSE;
-
- While In_Char <> Terminator do
- begin
- If KeyPressed then
- begin
- In_Char := ConIn;
- If In_Char = chr(13) then { carriage return }
- In_Char := chr(19); { control-S used by X-off protocols }
- If In_Char = ESC_char then
- begin
- Control_Char := Get_Console;
- Dummy_Char := Get_Console;
- Case Control_Char of
- 'A' : begin { Toggle between Full and Half Duplex }
- Half_Duplex := not Half_Duplex;
- If Half_Duplex then
- Writeln ('Half_Duplex')
- else
- Writeln ('Full Duplex')
- end;
- 'B' : In_Char := Terminator; { Terminates session }
- 'C' : Test_Line := not Test_Line; { Causes display of control }
- { characters coming in on }
- { the modem. }
- else
- end
- end
- else
- If Modem_Out (In_Char) then
- begin
- If Half_Duplex then
- ConOut (In_Char)
- end
- else
- begin
- Writeln ('Carrier Lost');
- In_Char := Terminator
- end
- end;
-
- If Modem_Char_Rdy then
- begin
- In_Mod := Modem_In;
- If Test_Line then
- If (In_Mod >= ' ') AND (In_Mod <= '~') then
- ConOut (In_Mod)
- else
- begin
- WriteHex (Output, In_Mod, 1); { This routine outputs in hex }
- Writeln
- end
- else
- ConOut (In_Mod)
- end;
-
- If not Carrier_Present then
- begin
- Writeln ('Carrier Lost');
- In_Char := Terminator
- end
- end
- end; { Dumb }
-
- begin { Main }
-
- ESC_Char := chr(01); { Used by escape sequences, you may want to }
- { change it to the ASCII ESC character }
-
- ScreenClr;
-
- Write('Will you be using X-Off (carriage return = cntl-S) (Y or N)? ');
- Read (Answer);
- Writeln;
- Xoff := Upper(Answer)='Y';
-
- Modem_Mode := 0;
-
- Init_Modem;
-
- Write ('Number Please - ');
- Readln (Number);
-
- Writeln ('Dialing');
-
- Dial_a_Number (Modem_Mode, Number);
-
- Set_300bps (Modem_Mode);
-
- Set_Org_Mode (Modem_Mode);
-
- Enable_Xmit (Modem_Mode);
-
- I := 0; { Set up for 20 second timeout }
- While (I < 2000) AND (not Carrier_Present) do
- begin
- Delay;
- I := I + 1
- end;
-
- If Carrier_Present then
- begin
- Writeln ('Connection made');
- Dumb
- end
- else
- Writeln ('No carrier found, check number - ', Number);
-
- Go_Onhook (Modem_Mode);
-
- Writeln ('Hanging Up');
-
- Writeln ('Program terminated')
-
- end.
-