home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / ckc072.zip / ck9ker.dif < prev    next >
Text File  |  1991-10-03  |  46KB  |  1,670 lines

  1. CK9KER.DIF
  2.  
  3. This file consists of context diffs of the C-Kermit 4E(070) system-dependent
  4. files, showing the changes that were made for OS9 support.  These changes
  5. probably will be added to mainline C-Kermit in the next release.  A formfeed
  6. separates the diff listing for each file, with the filename shown in the
  7. listing.
  8.  
  9. *** ckcdeb.h.orig
  10. --- ckcdeb.h
  11. **************
  12. *** 1,4
  13.   /*  C K C D E B . H  */
  14.   /*
  15.    For release 4E of C-Kermit, July 87.  Incorporates changes from Phil Julian 
  16.    and Jack Rouse of SAS Institute for DG, Apollo, and Amiga support, and from
  17. --- 1,6 -----
  18.   /*  C K C D E B . H  */
  19. + /* Bob Larson (blarson@ecla.usc.edu): add osk support.
  20. + */
  21.   /*
  22.    For release 4E of C-Kermit, July 87.  Incorporates changes from Phil Julian 
  23.    and Jack Rouse of SAS Institute for DG, Apollo, and Amiga support, and from
  24. **************
  25. *** 89,95
  26.   typedef int void;
  27.   #endif
  28.   
  29. ! /* Line delimiter for text files */
  30.   
  31.   /*
  32.    If the system uses a single character for text file line delimitation,
  33. --- 91,99 -----
  34.   typedef int void;
  35.   #endif
  36.   
  37. ! #ifdef OSK
  38. ! typedef int void;
  39. ! #endif
  40.   
  41.   /* Line delimiter for text files */
  42.   
  43. **************
  44. *** 91,96
  45.   
  46.   /* Line delimiter for text files */
  47.   
  48.   /*
  49.    If the system uses a single character for text file line delimitation,
  50.    define NLCHAR to the value of that character.  For text files, that
  51. --- 95,102 -----
  52.   typedef int void;
  53.   #endif
  54.   
  55. + /* Line delimiter for text files */
  56.   /*
  57.    If the system uses a single character for text file line delimitation,
  58.    define NLCHAR to the value of that character.  For text files, that
  59. **************
  60. *** 99,104
  61.   */
  62.   #ifdef MAC                              /* Macintosh */
  63.   #define NLCHAR 015
  64.   #else                                   /* All Unix-like systems */
  65.   #define NLCHAR 012
  66.   #endif
  67. --- 105,113 -----
  68.   */
  69.   #ifdef MAC                              /* Macintosh */
  70.   #define NLCHAR 015
  71. + #else
  72. + #ifdef OSK                /* os9/68k */
  73. + #define NLCHAR 015
  74.   #else                                   /* All Unix-like systems */
  75.   #define NLCHAR 012
  76.   #endif
  77. **************
  78. *** 102,107
  79.   #else                                   /* All Unix-like systems */
  80.   #define NLCHAR 012
  81.   #endif
  82.   /*
  83.    At this point, if there's a system that uses ordinary CRLF line
  84.    delimitation AND the C compiler actually returns both the CR and
  85. --- 111,117 -----
  86.   #else                                   /* All Unix-like systems */
  87.   #define NLCHAR 012
  88.   #endif
  89. + #endif
  90.   /*
  91.    At this point, if there's a system that uses ordinary CRLF line
  92.    delimitation AND the C compiler actually returns both the CR and
  93. **************
  94. *** 117,122
  95.   #ifdef datageneral
  96.   #define CTTNAM "@output"
  97.   #else
  98.   #define CTTNAM "/dev/tty"
  99.   #endif
  100.   #endif
  101. --- 127,136 -----
  102.   #ifdef datageneral
  103.   #define CTTNAM "@output"
  104.   #else
  105. + #ifdef OSK
  106. + extern char myttystr[];        /* initialized in sysinit */
  107. + #define CTTNAM myttystr
  108. + #else
  109.   #define CTTNAM "/dev/tty"
  110.   #endif
  111.   #endif
  112. **************
  113. *** 120,125
  114.   #define CTTNAM "/dev/tty"
  115.   #endif
  116.   #endif
  117.   
  118.   /* Some special includes for VAX/VMS */
  119.   
  120. --- 134,140 -----
  121.   #define CTTNAM "/dev/tty"
  122.   #endif
  123.   #endif
  124. + #endif
  125.   
  126.   /* Some special includes for VAX/VMS */
  127.   
  128. **************
  129. *** 157,159
  130.   #define FWRITE 0x10
  131.   #endif
  132.   
  133. --- 172,179 -----
  134.   #define FWRITE 0x10
  135.   #endif
  136.   
  137. + /* special hack for os9/68k */
  138. + #ifdef OSK
  139. + #define SIGARB    5342        /* arbitrary user signal */
  140. + #define SIGALRM 5343        /* and another */
  141. + #endif
  142.  
  143. *** ckcmai.c.orig
  144. --- ckcmai.c
  145. **************
  146. *** 111,116
  147.   \n\0";
  148.   #endif
  149.   #endif
  150.   char *srvtxt = "\r\n\
  151.   C-Kermit server starting.  Return to your local machine by typing\r\n\
  152.   its escape sequence for closing the connection, and issue further\r\n\
  153. --- 111,124 -----
  154.   \n\0";
  155.   #endif
  156.   #endif
  157. + #ifdef OSK
  158. + char *srvtxt = "\r\l\
  159. + C-Kermit server starting.  Return to your local machine by typing\r\l\
  160. + its escape sequence for closing the connection, and issue further\r\l\
  161. + commands from there.  To shut down the C-Kermit server, issue the\r\l\
  162. + FINISH or BYE command and then reconnect.\r\l\
  163. + \l\0";
  164. + #else
  165.   char *srvtxt = "\r\n\
  166.   C-Kermit server starting.  Return to your local machine by typing\r\n\
  167.   its escape sequence for closing the connection, and issue further\r\n\
  168. **************
  169. *** 117,122
  170.   commands from there.  To shut down the C-Kermit server, issue the\r\n\
  171.   FINISH or BYE command and then reconnect.\n\
  172.   \r\n\0";
  173.   
  174.   /* Declarations for Send-Init Parameters */
  175.   
  176. --- 125,131 -----
  177.   commands from there.  To shut down the C-Kermit server, issue the\r\n\
  178.   FINISH or BYE command and then reconnect.\n\
  179.   \r\n\0";
  180. + #endif
  181.   
  182.   /* Declarations for Send-Init Parameters */
  183.   
  184. **************
  185. *** 236,243
  186.       fncnv  = 1,                         /* Flag for file name conversion */
  187.       binary = 0,                         /* Flag for binary file */
  188.       savmod = 0,                         /* Saved file mode */
  189. !     cmask  = 0177;            /* Connect byte mask */
  190. !     fmask  = 0377;            /* File byte mask */
  191.       warn   = 0,                         /* Flag for file warning */
  192.       quiet  = 0,                         /* Be quiet during file transfer */
  193.       local  = 0,                         /* Flag for external tty vs stdout */
  194. --- 245,252 -----
  195.       fncnv  = 1,                         /* Flag for file name conversion */
  196.       binary = 0,                         /* Flag for binary file */
  197.       savmod = 0,                         /* Saved file mode */
  198. !     cmask  = 0177,            /* Connect byte mask */
  199. !     fmask  = 0377,            /* File byte mask */
  200.       warn   = 0,                         /* Flag for file warning */
  201.       quiet  = 0,                         /* Be quiet during file transfer */
  202.       local  = 0,                         /* Flag for external tty vs stdout */
  203.  
  204. *** ckucmd.c.orig
  205. --- ckucmd.c
  206. **************
  207. *** 1,4
  208. ! char *cmdv = "Unix cmd package V2(022), 27 Jan 88";
  209.    
  210.   /*  C K U C M D  --  Interactive command package for Unix  */
  211.   
  212. --- 1,4 -----
  213. ! char *cmdv = "Unix cmd package V2(022+blarson) 14 Feb 88";
  214.    
  215.   /*  C K U C M D  --  Interactive command package for Unix  */
  216.   
  217. **************
  218. *** 3,9
  219.   /*  C K U C M D  --  Interactive command package for Unix  */
  220.   
  221.   /*
  222. !  V2 adds support for Data General and Apollo Aegis.
  223.   */
  224.   /*
  225.    Modelled after the DECSYSTEM-20 command parser (the COMND JSYS)
  226. --- 3,9 -----
  227.   /*  C K U C M D  --  Interactive command package for Unix  */
  228.   
  229.   /*
  230. !  OSK os9/68k support added by blarson@ecla.usc.edu
  231.   */
  232.   /*
  233.    V2 adds support for Data General and Apollo Aegis.
  234. **************
  235. *** 6,11
  236.    V2 adds support for Data General and Apollo Aegis.
  237.   */
  238.   /*
  239.    Modelled after the DECSYSTEM-20 command parser (the COMND JSYS)
  240.    
  241.    Features:
  242. --- 6,14 -----
  243.    OSK os9/68k support added by blarson@ecla.usc.edu
  244.   */
  245.   /*
  246. +  V2 adds support for Data General and Apollo Aegis.
  247. + */
  248. + /*
  249.    Modelled after the DECSYSTEM-20 command parser (the COMND JSYS)
  250.    
  251.    Features:
  252. **************
  253. *** 70,75
  254.   #include "ckucmd.h"                     /* Command parsing definitions */
  255.   #include "ckcdeb.h"                     /* Formats for debug() */
  256.    
  257.   /* Local variables */
  258.    
  259.   int psetf = 0,                          /* Flag that prompt has been set */
  260. --- 73,82 -----
  261.   #include "ckucmd.h"                     /* Command parsing definitions */
  262.   #include "ckcdeb.h"                     /* Formats for debug() */
  263.    
  264. + #ifdef OSK
  265. + #define cc ccount            /* osk compiler bug */
  266. + #endif
  267.   /* Local variables */
  268.    
  269.   int psetf = 0,                          /* Flag that prompt has been set */
  270. **************
  271. *** 127,132
  272.    
  273.   prompt() {
  274.       if (psetf == 0) cmsetp(dfprom);     /* If no prompt set, set default. */
  275.       printf("\r%s",cmprom);              /* Print the prompt. */
  276.   }
  277.    
  278. --- 134,142 -----
  279.    
  280.   prompt() {
  281.       if (psetf == 0) cmsetp(dfprom);     /* If no prompt set, set default. */
  282. + #ifdef OSK
  283. +     fputs(cmprom, stdout);        /* Print the prompt. */
  284. + #else
  285.       printf("\r%s",cmprom);              /* Print the prompt. */
  286.   #endif
  287.   }
  288. **************
  289. *** 128,133
  290.   prompt() {
  291.       if (psetf == 0) cmsetp(dfprom);     /* If no prompt set, set default. */
  292.       printf("\r%s",cmprom);              /* Print the prompt. */
  293.   }
  294.    
  295.    
  296. --- 138,144 -----
  297.       fputs(cmprom, stdout);        /* Print the prompt. */
  298.   #else
  299.       printf("\r%s",cmprom);              /* Print the prompt. */
  300. + #endif
  301.   }
  302.    
  303.    
  304. **************
  305. *** 913,918
  306.   #ifdef datageneral
  307.                   putchar(FF);
  308.   #else
  309.                   system("clear");        /* and clear the screen. */
  310.   #endif
  311.   #endif
  312. --- 924,932 -----
  313.   #ifdef datageneral
  314.                   putchar(FF);
  315.   #else
  316. + #ifdef OSK
  317. +         putchar(FF);
  318. + #else
  319.                   system("clear");        /* and clear the screen. */
  320.   #endif
  321.   #endif
  322. **************
  323. *** 917,922
  324.   #endif
  325.   #endif
  326.   #endif
  327.               }
  328.    
  329.               if (c == HT) c = SP;        /* Substitute space for tab. */
  330. --- 931,937 -----
  331.   #endif
  332.   #endif
  333.   #endif
  334. + #endif
  335.               }
  336.    
  337.               if (c == HT) c = SP;        /* Substitute space for tab. */
  338. **************
  339. *** 942,947
  340.               if (c == NL || c == CR) {   /* CR, LF */
  341.                   *bp = NUL;              /* End the string */
  342.                   if (echof) {            /* If echoing, */
  343.                       putchar(c);         /* echo the typein */
  344.   #ifdef apollo
  345.                       if (c == CR) putchar(NL);
  346. --- 957,965 -----
  347.               if (c == NL || c == CR) {   /* CR, LF */
  348.                   *bp = NUL;              /* End the string */
  349.                   if (echof) {            /* If echoing, */
  350. + #ifdef OSK
  351. +             if (c == NL) putchar(CR);
  352. + #endif
  353.                       putchar(c);         /* echo the typein */
  354.   #ifdef apollo
  355.                       if (c == CR) putchar(NL);
  356.  
  357. *** ckudia.c.orig
  358. --- ckudia.c
  359. **************
  360. *** 1,4
  361. ! char *dialv = "Dial Command, V2.0(009) 24 Jan 88";
  362.   
  363.   /*  C K U D I A  --  Dialing program for connection to remote system */
  364.   
  365. --- 1,4 -----
  366. ! char *dialv = "Dial Command, V2.0(009)+blarson 21 Feb 88";
  367.   
  368.   /*  C K U D I A  --  Dialing program for connection to remote system */
  369.   
  370. **************
  371. *** 2,7
  372.   
  373.   /*  C K U D I A  --  Dialing program for connection to remote system */
  374.   
  375.   /*
  376.    Author: Herm Fischer (HFISCHER@USC-ECLB)
  377.    Contributed to Columbia University for inclusion in C-Kermit.
  378. --- 2,8 -----
  379.   
  380.   /*  C K U D I A  --  Dialing program for connection to remote system */
  381.   
  382. + /* Os9/68k support by Bob Larson (Blarson@ecla.usc.edu) */
  383.   /*
  384.    Author: Herm Fischer (HFISCHER@USC-ECLB)
  385.    Contributed to Columbia University for inclusion in C-Kermit.
  386. **************
  387. *** 73,78
  388.    *    16-Mar-87    Support for the ATT7300 UNIX PC internal modem was
  389.    *            added.
  390.    *                            -- Richard E. Hill
  391.    */
  392.   
  393.   /*
  394. --- 74,81 -----
  395.    *    16-Mar-87    Support for the ATT7300 UNIX PC internal modem was
  396.    *            added.
  397.    *                            -- Richard E. Hill
  398. +  *    21-Feb-88    Os9/68k and microcom modem support.
  399. +  *                            -- Bob Larson
  400.    */
  401.   
  402.   /*
  403. **************
  404. *** 172,177
  405.   #define        n_VENTEL    11
  406.   #define         n_CONCORD       12
  407.   #define        n_ATT7300    13    /* added for PC7300 */
  408.   
  409.   /*
  410.    * Declare modem "variant" numbers for any of the above for which it is
  411. --- 175,181 -----
  412.   #define        n_VENTEL    11
  413.   #define         n_CONCORD       12
  414.   #define        n_ATT7300    13    /* added for PC7300 */
  415. + #define        n_MICROCOM    14
  416.   
  417.   /*
  418.    * Declare modem "variant" numbers for any of the above for which it is
  419. **************
  420. *** 201,207
  421.       200,        /* wake_rate */
  422.       "",            /* wake_prompt */
  423.       "",            /* dmode_str */
  424. !     "",            /* dmode_prompt */
  425.       "\016D '%s'\r",    /* dial_str */
  426.       200            /* dial_rate */
  427.       };
  428. --- 205,211 -----
  429.       200,        /* wake_rate */
  430.       "",            /* wake_prompt */
  431.       "",            /* dmode_str */
  432. !     NULL,        /* dmode_prompt */
  433.       "\016D '%s'\r",    /* dial_str */
  434.       200            /* dial_rate */
  435.       };
  436. **************
  437. *** 216,222
  438.       0,            /* wake_rate */
  439.       "",            /* wake_prompt */
  440.       "",            /* dmode_str */
  441. !     "",            /* dmode_prompt */
  442.       "%s",        /* dial_str */
  443.       0            /* dial_rate */
  444.       };
  445. --- 220,226 -----
  446.       0,            /* wake_rate */
  447.       "",            /* wake_prompt */
  448.       "",            /* dmode_str */
  449. !     NULL,        /* dmode_prompt */
  450.       "%s",        /* dial_str */
  451.       0            /* dial_rate */
  452.       };
  453. **************
  454. *** 241,247
  455.       0,            /* wake_rate */
  456.       "",            /* wake_prompt */
  457.       "",            /* dmode_str */
  458. !     "",            /* dmode_prompt */
  459.       "%s#",        /* dial_str */
  460.       0            /* dial_rate */
  461.       };
  462. --- 245,251 -----
  463.       0,            /* wake_rate */
  464.       "",            /* wake_prompt */
  465.       "",            /* dmode_str */
  466. !     NULL,        /* dmode_prompt */
  467.       "%s#",        /* dial_str */
  468.       0            /* dial_rate */
  469.       };
  470. **************
  471. *** 266,272
  472.       0,            /* wake_rate */
  473.       "",            /* wake_prompt */
  474.       "",            /* dmode_str */
  475. !     "",            /* dmode_prompt */
  476.       "%s!",        /* dial_str */
  477.       0            /* dial_rate */
  478.       };
  479. --- 270,276 -----
  480.       0,            /* wake_rate */
  481.       "",            /* wake_prompt */
  482.       "",            /* dmode_str */
  483. !     NULL,        /* dmode_prompt */
  484.       "%s!",        /* dial_str */
  485.       0            /* dial_rate */
  486.       };
  487. **************
  488. *** 296,302
  489.       0,            /* wake_rate */
  490.       "",            /* wake_prompt */
  491.       "",            /* dmode_str */
  492. !     "",            /* dmode_prompt */
  493.       "AT D %s\r",    /* dial_str */
  494.       0            /* dial_rate */
  495.       };
  496. --- 300,306 -----
  497.       0,            /* wake_rate */
  498.       "",            /* wake_prompt */
  499.       "",            /* dmode_str */
  500. !     NULL,        /* dmode_prompt */
  501.       "AT D %s\r",    /* dial_str */
  502.       0            /* dial_rate */
  503.       };
  504. **************
  505. *** 341,347
  506.       0,            /* wake_rate */
  507.       "",            /* wake_prompt */
  508.       "",            /* dmode_str */
  509. !     "",            /* dmode_prompt */
  510.       "%s\r",        /* dial_str */
  511.       0            /* dial_rate */
  512.       };
  513. --- 345,351 -----
  514.       0,            /* wake_rate */
  515.       "",            /* wake_prompt */
  516.       "",            /* dmode_str */
  517. !     NULL,        /* dmode_prompt */
  518.       "%s\r",        /* dial_str */
  519.       0            /* dial_rate */
  520.       };
  521. **************
  522. *** 356,362
  523.       0,            /* wake_rate */
  524.       "OK\r",        /* wake_prompt */
  525.       "",            /* dmode_str */
  526. !     "",            /* dmode_prompt */
  527.       "ATTD%s\r",        /* dial_str */
  528.       0            /* dial_rate */
  529.       };
  530. --- 360,366 -----
  531.       0,            /* wake_rate */
  532.       "OK\r",        /* wake_prompt */
  533.       "",            /* dmode_str */
  534. !     NULL,        /* dmode_prompt */
  535.       "ATTD%s\r",        /* dial_str */
  536.       0            /* dial_rate */
  537.       };
  538. **************
  539. *** 371,377
  540.       300,        /* wake_rate */
  541.       "$",        /* wake_prompt */
  542.       "",            /* dmode_str */
  543. !     "",            /* dmode_prompt */
  544.       "<K%s\r>",        /* dial_str */
  545.       0            /* dial_rate */
  546.       };
  547. --- 375,381 -----
  548.       300,        /* wake_rate */
  549.       "$",        /* wake_prompt */
  550.       "",            /* dmode_str */
  551. !     NULL,        /* dmode_prompt */
  552.       "<K%s\r>",        /* dial_str */
  553.       0            /* dial_rate */
  554.       };
  555. **************
  556. *** 386,392
  557.       20,            /* wake_rate */
  558.       "CDS >",        /* wake_prompt */
  559.       "",            /* dmode_str */
  560. !     "",            /* dmode_prompt */
  561.       "<D M%s\r>",    /* dial_str */
  562.       0            /* dial_rate */
  563.       };
  564. --- 390,396 -----
  565.       20,            /* wake_rate */
  566.       "CDS >",        /* wake_prompt */
  567.       "",            /* dmode_str */
  568. !     NULL,        /* dmode_prompt */
  569.       "<D M%s\r>",    /* dial_str */
  570.       0            /* dial_rate */
  571.       };
  572. **************
  573. *** 401,407
  574.       0,            /* wake_rate */
  575.       "",            /* wake_prompt */
  576.       "",            /* dmode_str */
  577. !     "",            /* dmode_prompt */
  578.       "%s\r",        /* dial_str */
  579.       0            /* dial_rate */
  580.       };
  581. --- 405,411 -----
  582.       0,            /* wake_rate */
  583.       "",            /* wake_prompt */
  584.       "",            /* dmode_str */
  585. !     NULL,        /* dmode_prompt */
  586.       "%s\r",        /* dial_str */
  587.       0            /* dial_rate */
  588.       };
  589. **************
  590. *** 405,410
  591.       "%s\r",        /* dial_str */
  592.       0            /* dial_rate */
  593.       };
  594.   
  595.   /*
  596.    * Declare table for converting modem numbers to information pointers.
  597. --- 409,430 -----
  598.       "%s\r",        /* dial_str */
  599.       0            /* dial_rate */
  600.       };
  601. + static
  602. + MDMINF MICROCOM =    /* information for "Microcom" modems in native mode */
  603. +             /* (long answer only) */
  604. +     {
  605. +     35,            /* dial_time */
  606. +     ",!@",        /* pause_chars (! and @ arn't pure pauses) */
  607. +     3,            /* pause_time */
  608. +     "\r",        /* wake_str */
  609. +     100,        /* wake_rate */
  610. +     "!",        /* wake_prompt */
  611. +     "",            /* dmode_str */
  612. +     NULL,        /* dmode_prompt */
  613. +     "d%s\r",        /* dial_str */
  614. +     0            /* dial_rate */
  615. +     };
  616.   
  617.   /*
  618.    * Declare table for converting modem numbers to information pointers.
  619. **************
  620. *** 431,437
  621.       &USROBOT,
  622.       &VENTEL,
  623.       &CONCORD,
  624. !     &ATT7300
  625.       };
  626.   
  627.   /*
  628. --- 451,458 -----
  629.       &USROBOT,
  630.       &VENTEL,
  631.       &CONCORD,
  632. !     &ATT7300,
  633. !     &MICROCOM,
  634.       };
  635.   
  636.   /*
  637. **************
  638. *** 451,456
  639.       "direct",        0,        0,
  640.       "gendatacomm",    n_GDC,        0,
  641.       "hayes",        n_HAYES,    0,
  642.       "penril",        n_PENRIL,    0,
  643.       "racalvadic",    n_RACAL,    0,
  644.       "unknown",        n_UNKNOWN,    0,
  645. --- 472,478 -----
  646.       "direct",        0,        0,
  647.       "gendatacomm",    n_GDC,        0,
  648.       "hayes",        n_HAYES,    0,
  649. +     "microcom",        n_MICROCOM,    0,
  650.       "penril",        n_PENRIL,    0,
  651.       "racalvadic",    n_RACAL,    0,
  652.       "unknown",        n_UNKNOWN,    0,
  653. **************
  654. *** 607,615
  655.               break;
  656.               }
  657.   
  658. !      printf("Dialing thru %s, speed %d, number %s.\r\n",ttname,speed,telnbr);
  659. !      printf("The timeout for completing the call is %d seconds.\r\n",waitct);
  660. !      printf("Type the interrupt character to cancel the dialing.\r\n");
  661.   
  662.   /* Hang up the modem (in case it wasn't "on hook") */
  663.   
  664. --- 629,637 -----
  665.               break;
  666.               }
  667.   
  668. !        printf("Dialing thru %s, speed %d, number %s.\n",ttname,speed,telnbr);
  669. !        printf("The timeout for completing the call is %d seconds.\n",waitct);
  670. !        printf("Type the interrupt character to cancel the dialing.\n");
  671.   
  672.   /* Hang up the modem (in case it wasn't "on hook") */
  673.   
  674. **************
  675. *** 616,622
  676.       if ( tthang() < 0 ) {
  677.           printf("Sorry, Can't hang up tty line\n");
  678.           return(-2);
  679. !         }
  680.   
  681.   /* Condition console terminal and communication line */        
  682.                   /* place line into "clocal" dialing state */
  683. --- 638,644 -----
  684.       if ( tthang() < 0 ) {
  685.           printf("Sorry, Can't hang up tty line\n");
  686.           return(-2);
  687. !     }
  688.   
  689.   /* Condition console terminal and communication line */        
  690.                   /* place line into "clocal" dialing state */
  691. **************
  692. *** 634,640
  693.       alarm ( 0 );            /* disable timeouts */
  694.       if ( n1 = setjmp(sjbuf) )    /* failure while handling failure */
  695.           {
  696. !         printf ( "%s failure while handling failure.\r\n", F_reason[n1] );
  697.           }
  698.       else                /* first (i.e., non-nested) failure */
  699.           {
  700. --- 656,662 -----
  701.       alarm ( 0 );            /* disable timeouts */
  702.       if ( n1 = setjmp(sjbuf) )    /* failure while handling failure */
  703.           {
  704. !         printf ( "%s failure while handling failure.\n", F_reason[n1] );
  705.           }
  706.       else                /* first (i.e., non-nested) failure */
  707.           {
  708. **************
  709. *** 648,654
  710.           {
  711.           case F_time:        /* timed out */
  712.           {
  713. !         printf ( "No connection made within the allotted time.\r\n" );
  714.           break;
  715.           }
  716.           case F_int:            /* dialing interrupted */
  717. --- 670,676 -----
  718.           {
  719.           case F_time:        /* timed out */
  720.           {
  721. !         printf ( "No connection made within the allotted time.\n" );
  722.           break;
  723.           }
  724.           case F_int:            /* dialing interrupted */
  725. **************
  726. *** 653,659
  727.           }
  728.           case F_int:            /* dialing interrupted */
  729.           {
  730. !         printf ( "Dialing interrupted.\r\n" );
  731.           break;
  732.           }
  733.           case F_modem:        /* modem detected a failure */
  734. --- 675,681 -----
  735.           }
  736.           case F_int:            /* dialing interrupted */
  737.           {
  738. !         printf ( "Dialing interrupted.\n" );
  739.           break;
  740.           }
  741.           case F_modem:        /* modem detected a failure */
  742. **************
  743. *** 662,668
  744.           for ( pc=lbuf; *pc; pc++ )
  745.               if ( isprint(*pc) )
  746.               putchar(*pc);    /* display printable reason */ 
  747. !         printf ( "\").\r\n" );
  748.           break;
  749.           }
  750.           case F_minit:        /* cannot initialize modem */
  751. --- 684,690 -----
  752.           for ( pc=lbuf; *pc; pc++ )
  753.               if ( isprint(*pc) )
  754.               putchar(*pc);    /* display printable reason */ 
  755. !         printf ( "\").\n" );
  756.           break;
  757.           }
  758.           case F_minit:        /* cannot initialize modem */
  759. **************
  760. *** 667,673
  761.           }
  762.           case F_minit:        /* cannot initialize modem */
  763.           {
  764. !         printf ( "Cannot initialize modem.\r\n" );
  765.           break;
  766.           }
  767.           }
  768. --- 689,695 -----
  769.           }
  770.           case F_minit:        /* cannot initialize modem */
  771.           {
  772. !         printf ( "Cannot initialize modem.\n" );
  773.           break;
  774.           }
  775.           }
  776. **************
  777. *** 714,721
  778.               }
  779.               status = IGNORE;
  780.               break;
  781. !             case '\n':
  782. !             case '\r':
  783.               status = 0;
  784.               break;
  785.               case '0':            /* numeric result code */
  786. --- 736,743 -----
  787.               }
  788.               status = IGNORE;
  789.               break;
  790. !             case LF:
  791. !             case CR:
  792.               status = 0;
  793.               break;
  794.               case '0':            /* numeric result code */
  795. **************
  796. *** 748,753
  797.                       /* interdigit waits for tone dial */
  798.   /* ...dial, cont'd */
  799.   
  800.       default:            /* place modem into command mode */
  801.       ttolSlow(pmdminf->wake_str, pmdminf->wake_rate);
  802.       waitFor(pmdminf->wake_prompt);
  803. --- 770,796 -----
  804.                       /* interdigit waits for tone dial */
  805.   /* ...dial, cont'd */
  806.   
  807. +     case n_MICROCOM:
  808. +         {
  809. +         jmp_buf savejmp;
  810. +         alarm(0);
  811. +         memcpy((char *)savejmp, (char *)sjbuf, sizeof savejmp);
  812. +         if(setjmp(sjbuf)) {
  813. +             /* try the autobaud sequence */
  814. +         memcpy((char *)sjbuf, (char *)savejmp, sizeof savejmp);
  815. +         alarm(5);
  816. +             ttolSlow("44445", MICROCOM.wake_rate);
  817. +         waitFor(MICROCOM.wake_str);
  818. +         } else {
  819. +         alarm(2);
  820. +         ttolSlow(MICROCOM.wake_str, MICROCOM.wake_rate);
  821. +             waitFor(MICROCOM.wake_str);
  822. +         alarm(0);
  823. +         memcpy((char *)sjbuf, (char *)savejmp, sizeof savejmp);
  824. +         }
  825. +     }
  826. +     break;
  827. +     
  828.       default:            /* place modem into command mode */
  829.       ttolSlow(pmdminf->wake_str, pmdminf->wake_rate);
  830.       waitFor(pmdminf->wake_prompt);
  831. **************
  832. *** 800,806
  833.       while (status == 0) {
  834.         switch (augmdmtyp) {
  835.       default:
  836. !         for (n=0; n < LBUFL; n++) {    /* accumulate response */
  837.           lbuf[n] = (ttinc(0) & 0177); 
  838.           if ( lbuf[n] == '\r' || lbuf[n] == '\n' ) break;
  839.           }
  840. --- 843,849 -----
  841.       while (status == 0) {
  842.         switch (augmdmtyp) {
  843.       default:
  844. !         for (n=0; n < LBUFL-1; n++) {    /* accumulate response */
  845.           lbuf[n] = (ttinc(0) & 0177); 
  846.           if ( lbuf[n] == CR || lbuf[n] == LF ) break;
  847.           }
  848. **************
  849. *** 802,808
  850.       default:
  851.           for (n=0; n < LBUFL; n++) {    /* accumulate response */
  852.           lbuf[n] = (ttinc(0) & 0177); 
  853. !         if ( lbuf[n] == '\r' || lbuf[n] == '\n' ) break;
  854.           }
  855.           lbuf[n] = '\0';        /* terminate response from modem */
  856.           if (n) {            /* if one or more characters present */
  857. --- 845,851 -----
  858.       default:
  859.           for (n=0; n < LBUFL-1; n++) {    /* accumulate response */
  860.           lbuf[n] = (ttinc(0) & 0177); 
  861. !         if ( lbuf[n] == CR || lbuf[n] == LF ) break;
  862.           }
  863.           lbuf[n] = '\0';        /* terminate response from modem */
  864.           if (n) {            /* if one or more characters present */
  865. **************
  866. *** 867,872
  867.               if (didWeGet(lbuf,"BUSY")) status = FAILED;
  868.               if (didWeGet(lbuf,"CALL FAILED")) status = FAILED;
  869.               break;
  870.           }
  871.           }
  872.           break;
  873. --- 910,924 -----
  874.               if (didWeGet(lbuf,"BUSY")) status = FAILED;
  875.               if (didWeGet(lbuf,"CALL FAILED")) status = FAILED;
  876.               break;
  877. +           case n_MICROCOM:
  878. +             /* "RINGBACK" means phone line ringing, continue */
  879. +             if (didWeGet(lbuf,"NO CONNECT")) status = FAILED;
  880. +             if (didWeGet(lbuf,"CONNECT")) status = CONNECTED;
  881. +             if (didWeGet(lbuf,"BUSY")) status = FAILED;
  882. +             if (didWeGet(lbuf,"NO DIALTONE")) status = FAILED;
  883. +             if (didWeGet(lbuf,"COMMAND ERROR")) status = FAILED;
  884. +             if (didWeGet(lbuf,"IN USE")) status = FAILED;
  885. +             break;
  886.           }
  887.           }
  888.           break;
  889. **************
  890. *** 900,905
  891.       ttpkt(speed,CONNECT,parity);    /* cancel dialing state ioctl */
  892.       reset ();                /* reset alarms, etc. */
  893.       if ( ! quiet )
  894. !     printf ( "Call completed.\07\r\n" );
  895.       return ( 0 );            /* return, and presumably connect */
  896.   }
  897. --- 952,957 -----
  898.       ttpkt(speed,CONNECT,parity);    /* cancel dialing state ioctl */
  899.       reset ();                /* reset alarms, etc. */
  900.       if ( ! quiet )
  901. !     printf ( "Call completed.\07\n" );
  902.       return ( 0 );            /* return, and presumably connect */
  903.   }
  904.  
  905. *** ckuscr.c.orig
  906. --- ckuscr.c
  907. **************
  908. *** 1,4
  909. ! char *loginv = "Script Command, V2.0(007) 3 Aug 87";
  910.   
  911.   /*  C K U S C R  --  Login script for logging onto remote system */
  912.   
  913. --- 1,4 -----
  914. ! char *loginv = "Script Command, V2.0(007)+blarson 15 Feb 88";
  915.   
  916.   /*  C K U S C R  --  Login script for logging onto remote system */
  917.   
  918. **************
  919. *** 2,7
  920.   
  921.   /*  C K U S C R  --  Login script for logging onto remote system */
  922.   
  923.   /*
  924.    This module should work under all versions of Unix.  It calls externally
  925.    defined system-depended functions for i/o.
  926. --- 2,8 -----
  927.   
  928.   /*  C K U S C R  --  Login script for logging onto remote system */
  929.   
  930. + /* os9/68k support by Bob Larson (Blarson@ecla.usc.edu) */
  931.   /*
  932.    This module should work under all versions of Unix.  It calls externally
  933.    defined system-depended functions for i/o.
  934. **************
  935. *** 80,87
  936.   
  937.       if (*s == '~') {        /* escape character */
  938.           switch (c = *(++s) ) {
  939. !         case 'n':    seq_buf[i++] = '\n'; break;
  940. !         case 'r':    seq_buf[i++] = '\r'; break;
  941.           case 't':    seq_buf[i++] = '\t'; break;
  942.           case 'b':    seq_buf[i++] = '\b'; break;
  943.           case 'q':    seq_buf[i++] = '?';  break;
  944. --- 81,88 -----
  945.   
  946.       if (*s == '~') {        /* escape character */
  947.           switch (c = *(++s) ) {
  948. !         case 'n':    seq_buf[i++] = LF; break;
  949. !         case 'r':    seq_buf[i++] = CR; break;
  950.           case 't':    seq_buf[i++] = '\t'; break;
  951.           case 'b':    seq_buf[i++] = '\b'; break;
  952.           case 'q':    seq_buf[i++] = '?';  break;
  953. **************
  954. *** 248,254
  955.           return(-2);
  956.           }
  957.           if (!quiet)
  958. !       printf("Executing script thru %s, speed %d.\r\n",ttname,speed);
  959.       *seq_buf=0;
  960.       for (e=s; *e; e++) strcat(seq_buf, chstr(*e) );
  961.       if (!quiet) printf("Script string: %s\r\n",seq_buf);
  962. --- 249,255 -----
  963.           return(-2);
  964.           }
  965.           if (!quiet)
  966. !       printf("Executing script thru %s, speed %d.\n",ttname,speed);
  967.       *seq_buf=0;
  968.       for (e=s; *e; e++) strcat(seq_buf, chstr(*e) );
  969.       if (!quiet) printf("Script string: %s\n",seq_buf);
  970. **************
  971. *** 251,257
  972.         printf("Executing script thru %s, speed %d.\r\n",ttname,speed);
  973.       *seq_buf=0;
  974.       for (e=s; *e; e++) strcat(seq_buf, chstr(*e) );
  975. !     if (!quiet) printf("Script string: %s\r\n",seq_buf);
  976.       tlog(F110,"Script string: ",seq_buf, 0l);
  977.   
  978.   /* Condition console terminal and communication line */        
  979. --- 252,258 -----
  980.         printf("Executing script thru %s, speed %d.\n",ttname,speed);
  981.       *seq_buf=0;
  982.       for (e=s; *e; e++) strcat(seq_buf, chstr(*e) );
  983. !     if (!quiet) printf("Script string: %s\n",seq_buf);
  984.       tlog(F110,"Script string: ",seq_buf, 0l);
  985.   
  986.   /* Condition console terminal and communication line */        
  987. **************
  988. *** 297,303
  989.       if (*s) if (outSeq()) goto failRet; /* If any */
  990.       }
  991.       signal(SIGALRM,saveAlm);
  992. !     if (!quiet) printf("Script successful.\r\n");
  993.       tlog(F100,"Script successful.","",0l);
  994.       return(0);
  995.   
  996. --- 298,304 -----
  997.       if (*s) if (outSeq()) goto failRet; /* If any */
  998.       }
  999.       signal(SIGALRM,saveAlm);
  1000. !     if (!quiet) printf("Script successful.\n");
  1001.       tlog(F100,"Script successful.","",0l);
  1002.       return(0);
  1003.   
  1004. **************
  1005. *** 303,309
  1006.   
  1007.   failRet:
  1008.       signal(SIGALRM,saveAlm);
  1009. !     printf("Sorry, script failed\r\n");
  1010.       tlog(F100,"Script failed","",0l);
  1011.       return(-2);
  1012.   }
  1013. --- 304,310 -----
  1014.   
  1015.   failRet:
  1016.       signal(SIGALRM,saveAlm);
  1017. !     printf("Sorry, script failed\n");
  1018.       tlog(F100,"Script failed","",0l);
  1019.       return(-2);
  1020.   }
  1021.  
  1022. *** ckuusr.h.orig
  1023. --- ckuusr.h
  1024. **************
  1025. *** 19,24
  1026.   #ifndef AMIGA
  1027.   #ifndef vax11c
  1028.   #ifndef datageneral
  1029.   #include <pwd.h>
  1030.   #endif
  1031.   #endif
  1032. --- 19,25 -----
  1033.   #ifndef AMIGA
  1034.   #ifndef vax11c
  1035.   #ifndef datageneral
  1036. + #ifndef OSK
  1037.   #include <pwd.h>
  1038.   #endif
  1039.   #endif
  1040. **************
  1041. *** 20,25
  1042.   #ifndef vax11c
  1043.   #ifndef datageneral
  1044.   #include <pwd.h>
  1045.   #endif
  1046.   #endif
  1047.   #endif
  1048. --- 21,27 -----
  1049.   #ifndef datageneral
  1050.   #ifndef OSK
  1051.   #include <pwd.h>
  1052. + #endif
  1053.   #endif
  1054.   #endif
  1055.   #endif
  1056.  
  1057. *** ckuusr.c.orig
  1058. --- ckuusr.c
  1059. **************
  1060. *** 1,4
  1061. ! char *userv = "User Interface 4E(059), 29 Jan 88";
  1062.    
  1063.   /*  C K U U S R --  "User Interface" for Unix Kermit (Part 1)  */
  1064.    
  1065. --- 1,4 -----
  1066. ! char *userv = "User Interface 4E(059+blarson), 14 Feb 88";
  1067.    
  1068.   /*  C K U U S R --  "User Interface" for Unix Kermit (Part 1)  */
  1069.    
  1070. **************
  1071. *** 3,9
  1072.   /*  C K U U S R --  "User Interface" for Unix Kermit (Part 1)  */
  1073.    
  1074.   /*
  1075. !  4E, support for Apollo Aegis, Data General added, July 87.
  1076.   */
  1077.   /*
  1078.    Author: Frank da Cruz (SY.FDC@CU20B),
  1079. --- 3,9 -----
  1080.   /*  C K U U S R --  "User Interface" for Unix Kermit (Part 1)  */
  1081.    
  1082.   /*
  1083. !  blarson, support for os9/68k (OSK) added
  1084.   */
  1085.   /*
  1086.    4E, support for Apollo Aegis, Data General added, July 87.
  1087. **************
  1088. *** 6,11
  1089.    4E, support for Apollo Aegis, Data General added, July 87.
  1090.   */
  1091.   /*
  1092.    Author: Frank da Cruz (SY.FDC@CU20B),
  1093.    Columbia University Center for Computing Activities, January 1985.
  1094.    Copyright (C) 1985, Trustees of Columbia University in the City of New York.
  1095. --- 6,14 -----
  1096.    blarson, support for os9/68k (OSK) added
  1097.   */
  1098.   /*
  1099. +  4E, support for Apollo Aegis, Data General added, July 87.
  1100. + */
  1101. + /*
  1102.    Author: Frank da Cruz (SY.FDC@CU20B),
  1103.    Columbia University Center for Computing Activities, January 1985.
  1104.    Copyright (C) 1985, Trustees of Columbia University in the City of New York.
  1105. **************
  1106. *** 237,243
  1107.       z = nfils = 0;            /* Initialize file counter, flag */
  1108.       cmlist = xargv+1;            /* Remember this pointer */
  1109.       while (--xargc > 0) {        /* Traverse the list */    
  1110. !     *xargv++;
  1111.       if (**xargv == '-') {        /* Check for sending stdin */
  1112.           if (strcmp(*xargv,"-") != 0) break;
  1113.           z++;
  1114. --- 240,246 -----
  1115.       z = nfils = 0;            /* Initialize file counter, flag */
  1116.       cmlist = xargv+1;            /* Remember this pointer */
  1117.       while (--xargc > 0) {        /* Traverse the list */    
  1118. !     xargv++;
  1119.       if (**xargv == '-') {        /* Check for sending stdin */
  1120.           if (strcmp(*xargv,"-") != 0) break;
  1121.           z++;
  1122. **************
  1123. *** 244,250
  1124.           }
  1125.       nfils++;            /* Bump file counter */
  1126.       }
  1127. !     xargc++, *xargv--;            /* Adjust argv/argc */
  1128.       if (nfils < 1) fatal("missing filename for -s");
  1129.       if (z > 1) fatal("-s: too many -'s");
  1130.       if (z == 1) {
  1131. --- 247,253 -----
  1132.           }
  1133.       nfils++;            /* Bump file counter */
  1134.       }
  1135. !     xargc++, xargv--;            /* Adjust argv/argc */
  1136.       if (nfils < 1) fatal("missing filename for -s");
  1137.       if (z > 1) fatal("-s: too many -'s");
  1138.       if (z == 1) {
  1139. **************
  1140. *** 265,271
  1141.   case 'g':                /* get */
  1142.       if (action) fatal("conflicting actions");
  1143.       if (*(xp+1)) fatal("invalid argument bundling after -g");
  1144. !     *xargv++, xargc--;
  1145.       if ((xargc == 0) || (**xargv == '-'))
  1146.           fatal("missing filename for -g");
  1147.       cmarg = *xargv;
  1148. --- 268,274 -----
  1149.   case 'g':                /* get */
  1150.       if (action) fatal("conflicting actions");
  1151.       if (*(xp+1)) fatal("invalid argument bundling after -g");
  1152. !     xargv++, xargc--;
  1153.       if ((xargc == 0) || (**xargv == '-'))
  1154.           fatal("missing filename for -g");
  1155.       cmarg = *xargv;
  1156. **************
  1157. *** 286,292
  1158.    
  1159.   case 'a':                /* "as" */
  1160.       if (*(xp+1)) fatal("invalid argument bundling after -a");
  1161. !     *xargv++, xargc--;
  1162.       if ((xargc < 1) || (**xargv == '-'))
  1163.           fatal("missing name in -a");
  1164.       cmarg2 = *xargv;
  1165. --- 289,295 -----
  1166.    
  1167.   case 'a':                /* "as" */
  1168.       if (*(xp+1)) fatal("invalid argument bundling after -a");
  1169. !     xargv++, xargc--;
  1170.       if ((xargc < 1) || (**xargv == '-'))
  1171.           fatal("missing name in -a");
  1172.       cmarg2 = *xargv;
  1173. **************
  1174. *** 294,300
  1175.    
  1176.   case 'l':                /* set line */
  1177.       if (*(xp+1)) fatal("invalid argument bundling after -l");
  1178. !     *xargv++, xargc--;
  1179.       if ((xargc < 1) || (**xargv == '-'))
  1180.           fatal("communication line device name missing");
  1181.       strcpy(ttname,*xargv);
  1182. --- 297,303 -----
  1183.    
  1184.   case 'l':                /* set line */
  1185.       if (*(xp+1)) fatal("invalid argument bundling after -l");
  1186. !     xargv++, xargc--;
  1187.       if ((xargc < 1) || (**xargv == '-'))
  1188.           fatal("communication line device name missing");
  1189.       strcpy(ttname,*xargv);
  1190. **************
  1191. *** 306,312
  1192.    
  1193.   case 'b':                       /* set baud */
  1194.       if (*(xp+1)) fatal("invalid argument bundling");
  1195. !     *xargv++, xargc--;
  1196.       if ((xargc < 1) || (**xargv == '-'))
  1197.           fatal("missing baud");
  1198.       z = atoi(*xargv);            /* Convert to number */
  1199. --- 309,315 -----
  1200.    
  1201.   case 'b':                       /* set baud */
  1202.       if (*(xp+1)) fatal("invalid argument bundling");
  1203. !     xargv++, xargc--;
  1204.       if ((xargc < 1) || (**xargv == '-'))
  1205.           fatal("missing baud");
  1206.       z = atoi(*xargv);            /* Convert to number */
  1207. **************
  1208. *** 316,322
  1209.    
  1210.   case 'e':                /* Extended packet length */
  1211.       if (*(xp+1)) fatal("invalid argument bundling");
  1212. !     *xargv++, xargc--;
  1213.       if ((xargc < 1) || (**xargv == '-'))
  1214.           fatal("missing length");
  1215.       z = atoi(*xargv);            /* Convert to number */
  1216. --- 319,325 -----
  1217.    
  1218.   case 'e':                /* Extended packet length */
  1219.       if (*(xp+1)) fatal("invalid argument bundling");
  1220. !     xargv++, xargc--;
  1221.       if ((xargc < 1) || (**xargv == '-'))
  1222.           fatal("missing length");
  1223.       z = atoi(*xargv);            /* Convert to number */
  1224. **************
  1225. *** 349,355
  1226.    
  1227.   case 'p':                /* set parity */
  1228.       if (*(xp+1)) fatal("invalid argument bundling");
  1229. !     *xargv++, xargc--;
  1230.       if ((xargc < 1) || (**xargv == '-'))
  1231.           fatal("missing parity");
  1232.       switch(x = **xargv) {
  1233. --- 352,358 -----
  1234.    
  1235.   case 'p':                /* set parity */
  1236.       if (*(xp+1)) fatal("invalid argument bundling");
  1237. !     xargv++, xargc--;
  1238.       if ((xargc < 1) || (**xargv == '-'))
  1239.           fatal("missing parity");
  1240.       switch(x = **xargv) {
  1241. **************
  1242. *** 381,386
  1243.   /* Misc */
  1244.    
  1245.   fatal(msg) char *msg; {            /* Fatal error message */
  1246.       fprintf(stderr,"\r\nFatal: %s\n",msg);
  1247.       tlog(F110,"Fatal:",msg,0l);
  1248.       doexit(BAD_EXIT);            /* Exit indicating failure */
  1249. --- 384,392 -----
  1250.   /* Misc */
  1251.    
  1252.   fatal(msg) char *msg; {            /* Fatal error message */
  1253. + #ifdef OSK
  1254. +     fprintf(stderr,"\nFatal: %s\n",msg);
  1255. + #else
  1256.       fprintf(stderr,"\r\nFatal: %s\n",msg);
  1257.   #endif
  1258.       tlog(F110,"Fatal:",msg,0l);
  1259. **************
  1260. *** 382,387
  1261.    
  1262.   fatal(msg) char *msg; {            /* Fatal error message */
  1263.       fprintf(stderr,"\r\nFatal: %s\n",msg);
  1264.       tlog(F110,"Fatal:",msg,0l);
  1265.       doexit(BAD_EXIT);            /* Exit indicating failure */
  1266.   }
  1267. --- 388,394 -----
  1268.       fprintf(stderr,"\nFatal: %s\n",msg);
  1269.   #else
  1270.       fprintf(stderr,"\r\nFatal: %s\n",msg);
  1271. + #endif
  1272.       tlog(F110,"Fatal:",msg,0l);
  1273.       doexit(BAD_EXIT);            /* Exit indicating failure */
  1274.   }
  1275. **************
  1276. *** 388,393
  1277.    
  1278.    
  1279.   ermsg(msg) char *msg; {            /* Print error message */
  1280.       if (!quiet) fprintf(stderr,"\r\n%s - %s\n",cmerrp,msg);
  1281.       tlog(F110,"Error -",msg,0l);
  1282.   }
  1283. --- 395,403 -----
  1284.    
  1285.    
  1286.   ermsg(msg) char *msg; {            /* Print error message */
  1287. + #ifdef OSK
  1288. +     if (!quiet) fprintf(stderr,"\n%s - %s\n",cmerrp,msg);
  1289. + #else
  1290.       if (!quiet) fprintf(stderr,"\r\n%s - %s\n",cmerrp,msg);
  1291.   #endif
  1292.       tlog(F110,"Error -",msg,0l);
  1293. **************
  1294. *** 389,394
  1295.    
  1296.   ermsg(msg) char *msg; {            /* Print error message */
  1297.       if (!quiet) fprintf(stderr,"\r\n%s - %s\n",cmerrp,msg);
  1298.       tlog(F110,"Error -",msg,0l);
  1299.   }
  1300.   
  1301. --- 399,405 -----
  1302.       if (!quiet) fprintf(stderr,"\n%s - %s\n",cmerrp,msg);
  1303.   #else
  1304.       if (!quiet) fprintf(stderr,"\r\n%s - %s\n",cmerrp,msg);
  1305. + #endif
  1306.       tlog(F110,"Error -",msg,0l);
  1307.   }
  1308.   
  1309. **************
  1310. *** 732,737
  1311.       switch (cx) {
  1312.    
  1313.   case -4:                /* EOF */
  1314.       if (!quiet && !backgrd) printf("\r\n");
  1315.       doexit(GOOD_EXIT);
  1316.   case -3:                /* Null command */
  1317. --- 743,751 -----
  1318.       switch (cx) {
  1319.    
  1320.   case -4:                /* EOF */
  1321. + #ifdef OSK
  1322. +     if (!quiet && !backgrd) printf("\n");
  1323. + #else
  1324.       if (!quiet && !backgrd) printf("\r\n");
  1325.   #endif
  1326.       doexit(GOOD_EXIT);
  1327. **************
  1328. *** 733,738
  1329.    
  1330.   case -4:                /* EOF */
  1331.       if (!quiet && !backgrd) printf("\r\n");
  1332.       doexit(GOOD_EXIT);
  1333.   case -3:                /* Null command */
  1334.       return(0);
  1335. --- 747,753 -----
  1336.       if (!quiet && !backgrd) printf("\n");
  1337.   #else
  1338.       if (!quiet && !backgrd) printf("\r\n");
  1339. + #endif
  1340.       doexit(GOOD_EXIT);
  1341.   case -3:                /* Null command */
  1342.       return(0);
  1343. **************
  1344. *** 899,905
  1345.   debug(F110,"take-get 2nd line",line,0);
  1346.           stripq(line);
  1347.           for (x = strlen(line);
  1348. !               x > 0 && (line[x-1] == '\n' || line[x-1] == '\r');
  1349.            x--)
  1350.           line[x-1] = '\0';
  1351.           cmarg = line;
  1352. --- 914,920 -----
  1353.   debug(F110,"take-get 2nd line",line,0);
  1354.           stripq(line);
  1355.           for (x = strlen(line);
  1356. !               x > 0 && (line[x-1] == LF || line[x-1] == CR);
  1357.            x--)
  1358.           line[x-1] = '\0';
  1359.           cmarg = line;
  1360. **************
  1361. *** 907,913
  1362.               fatal("take file ends prematurely in 'get'");
  1363.           stripq(cmdbuf);
  1364.           for (x = strlen(cmdbuf);
  1365. !               x > 0 && (cmdbuf[x-1] == '\n' || cmdbuf[x-1] == '\r');
  1366.            x--)
  1367.           cmdbuf[x-1] = '\0';
  1368.           if (*cmdbuf == NUL) cmarg2 = line; else cmarg2 = cmdbuf;
  1369. --- 922,928 -----
  1370.               fatal("take file ends prematurely in 'get'");
  1371.           stripq(cmdbuf);
  1372.           for (x = strlen(cmdbuf);
  1373. !               x > 0 && (cmdbuf[x-1] == LF || cmdbuf[x-1] == CR);
  1374.            x--)
  1375.           cmdbuf[x-1] = '\0';
  1376.           if (*cmdbuf == NUL) cmarg2 = line; else cmarg2 = cmdbuf;
  1377. **************
  1378. *** 1077,1082
  1379.       else                /* Otherwise, */
  1380.           system(s);            /* Best for aos/vs?? */
  1381.    
  1382.   #else                    /* All Unix systems... */
  1383.   #ifdef apollo
  1384.       if ((pid = vfork()) == 0) {        /* Make child quickly */
  1385. --- 1092,1100 -----
  1386.       else                /* Otherwise, */
  1387.           system(s);            /* Best for aos/vs?? */
  1388.    
  1389. + #else
  1390. + #ifdef OSK
  1391. +     system(s);                /* for now, do better later */
  1392.   #else                    /* All Unix systems... */
  1393.   #ifdef apollo
  1394.       if ((pid = vfork()) == 0) {        /* Make child quickly */
  1395. **************
  1396. *** 1084,1090
  1397.   
  1398.           if ((shpath = getenv("SHELL")) == NULL) shpath = "/com/sh";
  1399.   #else
  1400. !  
  1401.       if ((pid = fork()) == 0) {        /* Make child */
  1402.       char *shpath, *shname, *shptr;    /* For finding desired shell */
  1403.       struct passwd *p;
  1404. --- 1102,1108 -----
  1405.   
  1406.           if ((shpath = getenv("SHELL")) == NULL) shpath = "/com/sh";
  1407.   #else
  1408.       if ((pid = fork()) == 0) {        /* Make child */
  1409.       char *shpath, *shname, *shptr;    /* For finding desired shell */
  1410.       struct passwd *p;
  1411. **************
  1412. *** 1127,1132
  1413.       signal(SIGINT,istat);        /* Restore interrupts */
  1414.       signal(SIGQUIT,qstat);
  1415.       }
  1416.   #endif
  1417.   #endif
  1418.   #endif
  1419. --- 1145,1151 -----
  1420.       signal(SIGINT,istat);        /* Restore interrupts */
  1421.       signal(SIGQUIT,qstat);
  1422.       }
  1423. + #endif
  1424.   #endif
  1425.   #endif
  1426.   #endif
  1427.  
  1428. *** ckuus2.c.orig
  1429. --- ckuus2.c
  1430. **************
  1431. *** 1,5
  1432.   /*  C K U U S 2  --  "User Interface" STRINGS module for Unix Kermit  */
  1433.    
  1434.   /*
  1435.    Author: Frank da Cruz (SY.FDC@CU20B),
  1436.    Columbia University Center for Computing Activities, January 1985.
  1437. --- 1,6 -----
  1438.   /*  C K U U S 2  --  "User Interface" STRINGS module for Unix Kermit  */
  1439.    
  1440. + /* os9/68k support by Bob Larson (blarson@ecla.usc.edu) */
  1441.   /*
  1442.    Author: Frank da Cruz (SY.FDC@CU20B),
  1443.    Columbia University Center for Computing Activities, January 1985.
  1444. **************
  1445. *** 266,272
  1446.   case XXREM:
  1447.       if ((y = cmkey(remcmd,nrmt,"Remote command","")) == -2) return(y);
  1448.       if (y == -1) return(y);
  1449. !     if (x = (cmcfm()) < 0) return(x);
  1450.       return(dohrmt(y));
  1451.    
  1452.   case XXSEN:
  1453. --- 267,273 -----
  1454.   case XXREM:
  1455.       if ((y = cmkey(remcmd,nrmt,"Remote command","")) == -2) return(y);
  1456.       if (y == -1) return(y);
  1457. !     if ((x = cmcfm()) < 0) return(x);
  1458.       return(dohrmt(y));
  1459.    
  1460.   case XXSEN:
  1461. **************
  1462. *** 278,284
  1463.   case XXSET:
  1464.       if ((y = cmkey(prmtab,nprm,"Parameter","")) == -2) return(y);
  1465.       if (y == -2) return(y);
  1466. !     if (x = (cmcfm()) < 0) return(x);
  1467.       return(dohset(y));
  1468.    
  1469.   case XXSHE:
  1470. --- 279,285 -----
  1471.   case XXSET:
  1472.       if ((y = cmkey(prmtab,nprm,"Parameter","")) == -2) return(y);
  1473.       if (y == -2) return(y);
  1474. !     if ((x = cmcfm()) < 0) return(x);
  1475.       return(dohset(y));
  1476.    
  1477.   case XXSHE:
  1478. **************
  1479. *** 323,329
  1480.   themselves contain 'take' commands, up to a reasonable depth of nesting."));
  1481.    
  1482.   default:
  1483. !     if (x = (cmcfm()) < 0) return(x);
  1484.       printf("Not available yet - %s\n",cmdbuf);
  1485.       break;
  1486.       }
  1487. --- 324,330 -----
  1488.   themselves contain 'take' commands, up to a reasonable depth of nesting."));
  1489.    
  1490.   default:
  1491. !     if ((x = cmcfm()) < 0) return(x);
  1492.       printf("Not available yet - %s\n",cmdbuf);
  1493.       break;
  1494.       }
  1495. **************
  1496. *** 342,348
  1497.    
  1498.   hmsga(s) char *s[]; {            /* Same function, but for arrays */
  1499.       int x, i;
  1500. !     if ( x = (cmcfm()) < 0) return(x);
  1501.       for ( i = 0; *s[i] ; i++ ) fputs(s[i], stdout);
  1502.       fputc( '\n', stdout);
  1503.       return(0);
  1504. --- 343,349 -----
  1505.    
  1506.   hmsga(s) char *s[]; {            /* Same function, but for arrays */
  1507.       int x, i;
  1508. !     if (( x = cmcfm()) < 0) return(x);
  1509.       for ( i = 0; *s[i] ; i++ ) fputs(s[i], stdout);
  1510.   #ifndef OSK
  1511.       fputc( '\n', stdout);
  1512. **************
  1513. *** 344,349
  1514.       int x, i;
  1515.       if ( x = (cmcfm()) < 0) return(x);
  1516.       for ( i = 0; *s[i] ; i++ ) fputs(s[i], stdout);
  1517.       fputc( '\n', stdout);
  1518.       return(0);
  1519.   }
  1520. --- 345,351 -----
  1521.       int x, i;
  1522.       if (( x = cmcfm()) < 0) return(x);
  1523.       for ( i = 0; *s[i] ; i++ ) fputs(s[i], stdout);
  1524. + #ifndef OSK
  1525.       fputc( '\n', stdout);
  1526.   #else
  1527.       putc('\n', stdout);
  1528. **************
  1529. *** 345,350
  1530.       if ( x = (cmcfm()) < 0) return(x);
  1531.       for ( i = 0; *s[i] ; i++ ) fputs(s[i], stdout);
  1532.       fputc( '\n', stdout);
  1533.       return(0);
  1534.   }
  1535.   
  1536. --- 347,355 -----
  1537.       for ( i = 0; *s[i] ; i++ ) fputs(s[i], stdout);
  1538.   #ifndef OSK
  1539.       fputc( '\n', stdout);
  1540. + #else
  1541. +     putc('\n', stdout);
  1542. + #endif
  1543.       return(0);
  1544.   }
  1545.   
  1546. **************
  1547. *** 537,543
  1548.   about the specified user."));
  1549.    
  1550.   default:
  1551. !     if (x = (cmcfm()) < 0) return(x);
  1552.       printf("%s","not working yet - %s\n",cmdbuf);
  1553.       return(-2);
  1554.       }
  1555. --- 542,548 -----
  1556.   about the specified user."));
  1557.    
  1558.   default:
  1559. !     if ((x = cmcfm()) < 0) return(x);
  1560.       printf("%s","not working yet - %s\n",cmdbuf);
  1561.       return(-2);
  1562.       }
  1563.  
  1564. *** ckuus3.c.orig
  1565. --- ckuus3.c
  1566. **************
  1567. *** 1,5
  1568.   /*  C K U U S 3 --  "User Interface" for Unix Kermit, part 3  */
  1569.    
  1570.   /*
  1571.    Author: Frank da Cruz (SY.FDC@CU20B),
  1572.    Columbia University Center for Computing Activities, January 1985.
  1573. --- 1,6 -----
  1574.   /*  C K U U S 3 --  "User Interface" for Unix Kermit, part 3  */
  1575.    
  1576. + /* Os9/68k support by Bob Larson (Blarson@ecla.usc.edu) */
  1577.   /*
  1578.    Author: Frank da Cruz (SY.FDC@CU20B),
  1579.    Columbia University Center for Computing Activities, January 1985.
  1580. **************
  1581. *** 238,244
  1582.   case XYFILE:
  1583.       if ((y = cmkey(filtab,nfilp,"File parameter","")) < 0) return(y);
  1584.       switch (y) {
  1585. -     int z;
  1586.       case XYFILD:            /* Display */
  1587.           y = seton(&z);
  1588.           if (y < 0) return(y);
  1589. --- 239,244 -----
  1590.   case XYFILE:
  1591.       if ((y = cmkey(filtab,nfilp,"File parameter","")) < 0) return(y);
  1592.       switch (y) {
  1593.       case XYFILD:            /* Display */
  1594.           y = seton(&z);
  1595.           if (y < 0) return(y);
  1596. **************
  1597. *** 409,415
  1598.       lp = line;
  1599.       sprintf(lp,"Baud rate for %s",ttname);
  1600.       if ((y = cmnum(line,"",10,&x)) < 0) return(y);
  1601. !     if (y = (cmcfm()) < 0) return(y);
  1602.       y = chkspd(x);
  1603.       if (y < 0) 
  1604.           printf("?Unsupported line speed - %d\n",x);
  1605. --- 409,415 -----
  1606.       lp = line;
  1607.       sprintf(lp,"Baud rate for %s",ttname);
  1608.       if ((y = cmnum(line,"",10,&x)) < 0) return(y);
  1609. !     if ((y = cmcfm()) < 0) return(y);
  1610.       y = chkspd(x);
  1611.       if (y < 0) 
  1612.           printf("?Unsupported line speed - %d\n",x);
  1613. **************
  1614. *** 546,552
  1615.               fatal("take file ends prematurely in 'remote cwd'");
  1616.           debug(F110," pswd from take file",s2,0);
  1617.           for (x = strlen(sbuf);
  1618. !               x > 0 && (sbuf[x-1] == '\n' || sbuf[x-1] == '\r');
  1619.            x--)
  1620.           sbuf[x-1] = '\0';
  1621.    
  1622. --- 546,552 -----
  1623.               fatal("take file ends prematurely in 'remote cwd'");
  1624.           debug(F110," pswd from take file",s2,0);
  1625.           for (x = strlen(sbuf);
  1626. !               x > 0 && (sbuf[x-1] == NL || sbuf[x-1] == CR);
  1627.            x--)
  1628.           sbuf[x-1] = '\0';
  1629.    
  1630. **************
  1631. *** 589,595
  1632.       return(sstate = setgen('D',s,"",""));
  1633.    
  1634.   case XZHLP:                /* Help */
  1635. !     if (x = (cmcfm()) < 0) return(x);
  1636.       sstate = setgen('H',"","","");
  1637.       return(0);
  1638.    
  1639. --- 589,595 -----
  1640.       return(sstate = setgen('D',s,"",""));
  1641.    
  1642.   case XZHLP:                /* Help */
  1643. !     if ((x = cmcfm()) < 0) return(x);
  1644.       sstate = setgen('H',"","","");
  1645.       return(0);
  1646.    
  1647. **************
  1648. *** 616,622
  1649.       return(sstate = setgen('W',s,"",""));
  1650.    
  1651.   default:
  1652. !     if (x = (cmcfm()) < 0) return(x);
  1653.       printf("not working yet - %s\n",cmdbuf);
  1654.       return(-2);
  1655.       }
  1656. --- 616,622 -----
  1657.       return(sstate = setgen('W',s,"",""));
  1658.    
  1659.   default:
  1660. !     if ((x = cmcfm()) < 0) return(x);
  1661.       printf("not working yet - %s\n",cmdbuf);
  1662.       return(-2);
  1663.       }
  1664.  
  1665. (END OF CK9KER.DIF)
  1666.