home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / MODEMS / MODEM / PC-PSUIT.LBR / TELENET.GQN / TELENET.GEN
Text File  |  2000-06-30  |  5KB  |  163 lines

  1. label
  2.  
  3.     STOP;
  4.  
  5. const
  6.  
  7.   { Insert The Following: }
  8.  
  9.     ACCESS    : String[8]  = '***-****';  { Telenet local number }
  10.     TERMID    : String[2]  = '**';        { Terminal I.D. number }
  11.     NAMEID    : String[20] = '*******';   { User Name on Telenet }
  12.     PASSWORD  : String[20] = '********';  { Your secret password }
  13.  
  14.   { Smart Modem initialization string }
  15.  
  16.     SMINIT    : String[50] = 'ATQ0V1M1X0 S0=0 S2=3 S11=50';
  17.  
  18.   { Port locations for your computer }
  19.  
  20.     BAUDRP    = $00;                   { Baud rate port }
  21.     EXTDAT    = $04;                   { External modem data port }
  22.     EXTCTL    = $06;                   { External modem control port }
  23.  
  24.   { Masks for the status port }
  25.  
  26.     DAV       = $01;                   {Data available}
  27.     TBE       = $04;                   {Transmit buffer empty}
  28.     DCD       = $08;                   {Data Carrier Detect}
  29.  
  30.   { Define a carriage return }
  31.  
  32.     CR        = ^M;
  33.  
  34. type
  35.  
  36.     Str40     = String[40];
  37.  
  38. var
  39.  
  40.     BYTEIN    : Byte;
  41.     CHARIN    : Char;
  42.     ACODE     : String[3];
  43.     WORDIN    : String[80];
  44.  
  45. function In_Modem : byte;
  46.     begin
  47.         In_Modem := port[EXTDAT]
  48.     end;
  49.  
  50. procedure Out_Modem (Number : Str40);
  51.     var
  52.        J      : Byte;
  53.     begin
  54.        For J := 1 to length(Number) Do
  55.            begin
  56.                 repeat                             {Loop until      }
  57.                 until (TBE and port[EXTCTL]) <> 0; {Modem ready then}
  58.                 Port[EXTDAT] := ord(Number[J]);    {Output character}
  59.                 write(Number[J]);
  60.            end;
  61.            Delay(1000);                            {Pause 1 sec.}
  62.            BYTEIN := In_Modem;
  63.            writeln;
  64.     end;
  65.  
  66. procedure Initialize_Modem;
  67.     begin
  68.         port[EXTCTL] := $18;           {Reset SIO channel}
  69.         port[EXTCTL] := 4;             {SIO register 4}
  70.         port[EXTCTL] := $44;           {16x, 1 stop bit, no parity}
  71.         port[EXTCTL] := 1;             {SIO register 1}
  72.         port[EXTCTL] := $00;           {Waits, rx, tx disable}
  73.         port[EXTCTL] := 3;             {SIO register 3}
  74.         port[EXTCTL] := $0C1;          {8 bits/character, rx enable}
  75.         port[EXTCTL] := 5;             {SIO register 5}
  76.         port[EXTCTL] := $EA;           {DTR on, 8 bits/char, tx enable, RTS on}
  77.         port[BAUDRP] := 7;             {1200 baud}
  78.         delay(500);                    {Pause 500 ms}
  79.         Out_Modem ('AT' + CR);         {Send modem attention}
  80.         Out_Modem (SmInit + CR);       {Send SmartModem init string}
  81.     end;
  82.  
  83. procedure Read_Until (TRIGGER : Char);
  84.     begin
  85.         repeat
  86.             repeat
  87.             until (DAV and port[EXTCTL]) <> 0;
  88.             CHARIN := chr(port[EXTDAT]);
  89.         until CHARIN = TRIGGER;
  90.         writeln(CHARIN);
  91.         delay(1000)
  92.     end;
  93.  
  94. { *************************************************************************** }
  95. { *                            MAIN PROGRAM                                 * }
  96. { *************************************************************************** }
  97.  
  98. begin
  99.     for BYTEIN := 1 to 24 do writeln;
  100.     writeln('                                    TELENET');
  101.     writeln('                              Auto Log-On Program');
  102.     writeln('                            7/25/86 by: Joseph Fall');
  103.     delay(2000);
  104.     for BYTEIN := 1 to 24 do writeln;
  105.     if ParamCount = 0 then
  106.         begin
  107.             write('Enter Area Code please : ');
  108.             readln(ACODE);
  109.         end
  110.     else
  111.         ACODE := ParamStr(1);
  112.     writeln('Initializing SIO and Modem ...');
  113.     Initialize_Modem;
  114.     Out_Modem('ATDT' + ACCESS + CR);
  115.  
  116.   { This loop assumes pin 8 (DCD) is used.  Some modems don't support this }
  117.   { feature.  If not, insert your own routine or a sufficiently long delay }
  118.   { to insure you have a carrier.                                          }
  119.  
  120.     repeat
  121.         port[EXTCTL] := $10;                   { Reset status }
  122.     until (DCD and port[EXTCTL]) <> 0;         { Data Carrier Detected }
  123.  
  124.     writeln('Connected ... Attempting to Log On.');
  125.     delay(1000);
  126.     Out_Modem(CR + CR);
  127.     Read_Until('=');
  128.     Out_Modem(TERMID + CR);
  129.     Read_Until('@');
  130.     Out_Modem('C DIAL' + ACODE + '/12,' + NAMEID + CR);
  131.     Read_Until(' ');
  132.     Out_Modem(PASSWORD + CR);
  133.     writeln;
  134.     writeln('+++ WAIT for TELENET reply ... then tap ANY KEY +++');
  135.     repeat
  136.         repeat
  137.             if KeyPressed then goto STOP
  138.         until ((DAV and port[EXTCTL]) <> 0);
  139.         CHARIN := chr($7F and port[EXTDAT]);
  140.         write(CHARIN)
  141.     until KeyPressed;
  142. STOP:
  143.     writeln;
  144.     writeln('+++ Press "H" to hang up ... "C" to continue +++');
  145.     repeat
  146.         read(KBD, CHARIN)
  147.     until UpCase(CHARIN) in ['H','C'];
  148.     if UpCase(CHARIN) = 'H' then
  149.     begin
  150.         writeln;
  151.         writeln('Disconnecting ...');
  152.         port[EXTCTL] := 5;
  153.         port[EXTCTL] := $68;
  154.         delay(2000);
  155.         port[EXTCTL] := 5;
  156.         port[EXTCTL] := $EA;
  157.         Out_Modem('AT H' + CR);
  158.         Halt
  159.     end;
  160.     writeln;
  161.     writeln ('Completed ... return to terminal program now.');
  162. end.
  163.