home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / pibterm / pibt41s1.arc / INITMODE.MOD < prev    next >
Text File  |  1988-01-05  |  6KB  |  166 lines

  1. (*----------------------------------------------------------------------*)
  2. (*               Initialize_Modem --- Initialize Modem                  *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. PROCEDURE Initialize_Modem;
  6.  
  7. (*----------------------------------------------------------------------*)
  8. (*                                                                      *)
  9. (*     Procedure:  Initialize_Modem                                     *)
  10. (*                                                                      *)
  11. (*     Purpose:    Initializes Modem                                    *)
  12. (*                                                                      *)
  13. (*     Calling Sequence:                                                *)
  14. (*                                                                      *)
  15. (*        Initialize_Modem;                                             *)
  16. (*                                                                      *)
  17. (*     Calls:                                                           *)
  18. (*                                                                      *)
  19. (*        Modem_Connected                                               *)
  20. (*                                                                      *)
  21. (*----------------------------------------------------------------------*)
  22.  
  23. VAR
  24.    Done_Flag : BOOLEAN;
  25.    F         : TEXT;
  26.    Ch        : CHAR;
  27.    Do_Init   : BOOLEAN;
  28.  
  29. (*----------------------------------------------------------------------*)
  30. (*               Modem_Connected --- Check if modem connected           *)
  31. (*----------------------------------------------------------------------*)
  32.  
  33. FUNCTION Modem_Connected : BOOLEAN;
  34.  
  35. VAR
  36.    Start_Time: LONGINT;
  37.    Timed_Out : BOOLEAN;
  38.  
  39. BEGIN (* Modem_Connected *)
  40.                                    (* Turn on OUT2, DTR, and RTS *)
  41.  
  42.    Port[UART_MCR + Async_Base] := $0B;
  43.  
  44.                                    (* Clear pending async errors   *)
  45.    Async_Clear_Errors;
  46.                                    (* Wait for DSR using Busy Wait *)
  47.    Start_Time := TimeOfDay;
  48.    Timed_Out  := FALSE;
  49.  
  50.    IF Async_Do_DSR THEN
  51.       BEGIN
  52.          WHILE ( NOT Timed_Out )  AND
  53.                ( ( Port[UART_MSR + Async_Base] AND $20 ) = 0 ) DO
  54.             Timed_Out := ( TimeDiff( Start_Time , TimeOfDay ) > 2 );
  55.          IF Timed_Out THEN
  56.             IF Attended_Mode THEN
  57.                BEGIN
  58.                   Async_Do_DSR := YesNo('*** Data set ready doesn''t work, turn ' +
  59.                                         'it off (Y/N) ? ');
  60.                   WRITELN;
  61.                   Timed_Out := Async_Do_DSR;
  62.                END
  63.             ELSE
  64.                WRITELN('*** Data set ready turned off.');
  65.       END;
  66.                                    (* Wait for CTS using Busy Wait *)
  67.    Start_Time := TimeOfDay;
  68.  
  69.    IF Async_Do_CTS THEN
  70.       BEGIN
  71.          WHILE ( NOT Timed_Out )  AND
  72.                ( ( Port[UART_MSR + Async_Base] AND $10 ) = 0 ) DO
  73.             Timed_Out := ( TimeDiff( Start_Time , TimeOfDay ) > 2 );
  74.          IF Timed_Out THEN
  75.             IF Attended_Mode THEN
  76.                BEGIN
  77.                   Async_Do_CTS := YesNo('*** Clear to send doesn''t work, turn ' +
  78.                                         'it off (Y/N) ? ');
  79.                   WRITELN;
  80.                   Timed_Out := Async_Do_CTS;
  81.                END
  82.             ELSE
  83.                WRITELN('*** Clear to send turned off.');
  84.       END;
  85.  
  86.                                    (* Wait for Transmit Hold Register Empty (THRE) *)
  87.    Start_Time := TimeOfDay;
  88.  
  89.    WHILE ( NOT Timed_Out ) AND
  90.          ( ( Port[UART_LSR + Async_Base] AND $20 ) = 0 ) DO
  91.       Timed_Out := ( TimeDiff( Start_Time , TimeOfDay ) > 2 );
  92.  
  93.                                    (* If we looped through, modem probably *)
  94.                                    (* not connected.                       *)
  95.  
  96.    Modem_Connected := ( NOT Timed_Out );
  97.  
  98. END   (* Modem_Connected *);
  99.  
  100. (*----------------------------------------------------------------------*)
  101.  
  102. BEGIN (* Initialize_Modem *)
  103.                                    (* Ensure correct setting of carrier *)
  104.                                    (* detect status variables           *)
  105.  
  106.    Current_Carrier_Status := Async_Carrier_Detect;
  107.    New_Carrier_Status     := Current_Carrier_Status;
  108.  
  109.                                    (* Check status of hardware lines *)
  110.    IF ( NOT Modem_Connected ) THEN
  111.       BEGIN
  112.          IF ( NOT Hard_Wired ) THEN
  113.             BEGIN
  114.                WRITELN('*** Modem appears to be turned off.');
  115.                WRITELN('*** Please turn it on and then hit any key to continue.');
  116.             END
  117.          ELSE
  118.             BEGIN
  119.                WRITELN('*** Hard-wired connection may be bad.');
  120.                WRITELN('*** You may want to turn off CTS and DSR checking.');
  121.                WRITELN('*** Hit any key to continue.');
  122.             END;
  123.          IF Attended_Mode THEN
  124.             BEGIN
  125.                Read_Kbd( Ch );
  126.                IF ( Ch = CHR( ESC ) ) AND PibTerm_KeyPressed THEN
  127.                   Read_Kbd( Ch );
  128.             END
  129.          ELSE
  130.             WRITELN('*** Continuing anyway because of unattended mode.');
  131.       END;
  132.                                    (* Issue modem initialization string *)
  133.  
  134.    IF ( Modem_Init <> '' ) AND ( NOT Hard_Wired ) THEN
  135.       BEGIN
  136.  
  137.          IF Async_Carrier_Detect THEN
  138.             BEGIN
  139.                WRITE('*** Session appears to be already in progress.');
  140.                IF Attended_Mode THEN
  141.                   BEGIN
  142.                      Do_Init := YesNo('*** Send modem initialization anyway (Y/N) ? ');
  143.                      WRITELN;
  144.                   END
  145.                ELSE
  146.                   BEGIN
  147.                      WRITELN('*** Modem initialization not performed.');
  148.                      Do_Init := FALSE;
  149.                   END;
  150.             END
  151.          ELSE
  152.             Do_Init := TRUE;
  153.  
  154.          IF Do_Init THEN
  155.             BEGIN
  156.                WRITELN;
  157.                WRITELN('Modem initialization: ',Write_Ctrls( Modem_Init ) );
  158.                Send_Modem_Command( Modem_Init );
  159.                DELAY( One_Second_Delay );
  160.                Async_Purge_Buffer;
  161.             END;
  162.  
  163.       END;
  164.  
  165. END   (* Initialize_Modem *);
  166.