home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d9xx / d995 / xprkermit.lha / XprKermit / source.lha / ckxker.h < prev    next >
C/C++ Source or Header  |  1993-03-27  |  7KB  |  183 lines

  1. #ifndef CKXKER_H
  2.  
  3. #define CKXKER_H    1
  4.  
  5. /*
  6.  * The basic definitions for the XPR version of C Kermit 5A(188)
  7.  */
  8.  
  9. /*
  10.  *  The XPR I/O structure
  11.  */
  12. struct XPR_IO {
  13.                   char  *xpr_filename;      /* File name(s)             */
  14.                   long (*xpr_fopen)();      /* Open file                */
  15.                   long (*xpr_fclose)();     /* Close file               */
  16.                   long (*xpr_fread)();      /* Get char from file       */
  17.                   long (*xpr_fwrite)();     /* Put string to file       */
  18.                   long (*xpr_sread)();      /* Get char from serial     */
  19.                   long (*xpr_swrite)();     /* Put string to serial     */
  20.                   long (*xpr_sflush)();     /* Flush serial input buffer*/
  21.                   long (*xpr_update)();     /* Print stuff              */
  22.                   long (*xpr_chkabort)();   /* Check for abort          */
  23.                   long (*xpr_chkmisc)();    /* Check misc. stuff        */
  24.                   long (*xpr_gets)();       /* Get string interactively */
  25.                   long (*xpr_setserial)();  /* Set and Get serial info  */
  26.                   long (*xpr_ffirst)();     /* Find first file name     */
  27.                   long (*xpr_fnext)();      /* Find next file name      */
  28.                   long (*xpr_finfo)();      /* Return file info         */
  29.                   long (*xpr_fseek)();      /* Seek in a file           */
  30.                   long   xpr_extension;     /* Number of extensions     */
  31.                   void  *xpr_data;          /* Initialized by Setup.    */
  32.                   long (*xpr_options)();    /* Multiple XPR options.    */
  33.                   long (*xpr_unlink)();     /* Delete a file.           */
  34.                   long (*xpr_squery)();     /* Query serial device      */
  35.                   long (*xpr_getptr)();     /* Get various host ptrs    */
  36.               };
  37. /*
  38. *   Number of defined extensions
  39. */
  40. #define XPR_EXTENSION 4L
  41.  
  42. /*
  43.  *   Flags returned by XProtocolSetup()
  44.  */
  45. #define XPRS_FAILURE    0x00000000L
  46. #define XPRS_SUCCESS    0x00000001L
  47. #define XPRS_NORECREQ   0x00000002L
  48. #define XPRS_NOSNDREQ   0x00000004L
  49. #define XPRS_HOSTMON    0x00000008L
  50. #define XPRS_USERMON    0x00000010L
  51. #define XPRS_HOSTNOWAIT 0x00000020L
  52. /*
  53.  *   The update structure
  54.  */
  55. struct XPR_UPDATE {     long  xpru_updatemask;
  56.                         char *xpru_protocol;
  57.                         char *xpru_filename;
  58.                         long  xpru_filesize;
  59.                         char *xpru_msg;
  60.                         char *xpru_errormsg;
  61.                         long  xpru_blocks;
  62.                         long  xpru_blocksize;
  63.                         long  xpru_bytes;
  64.                         long  xpru_errors;
  65.                         long  xpru_timeouts;
  66.                         long  xpru_packettype;
  67.                         long  xpru_packetdelay;
  68.                         long  xpru_chardelay;
  69.                         char *xpru_blockcheck;
  70.                         char *xpru_expecttime;
  71.                         char *xpru_elapsedtime;
  72.                         long  xpru_datarate;
  73.                         long  xpru_reserved1;
  74.                         long  xpru_reserved2;
  75.                         long  xpru_reserved3;
  76.                         long  xpru_reserved4;
  77.                         long  xpru_reserved5;
  78.                    };
  79. /*
  80. *   The possible bit values for the xpru_updatemask are:
  81. */
  82. #define XPRU_PROTOCOL           0x00000001L
  83. #define XPRU_FILENAME           0x00000002L
  84. #define XPRU_FILESIZE           0x00000004L
  85. #define XPRU_MSG                0x00000008L
  86. #define XPRU_ERRORMSG           0x00000010L
  87. #define XPRU_BLOCKS             0x00000020L
  88. #define XPRU_BLOCKSIZE          0x00000040L
  89. #define XPRU_BYTES              0x00000080L
  90. #define XPRU_ERRORS             0x00000100L
  91. #define XPRU_TIMEOUTS           0x00000200L
  92. #define XPRU_PACKETTYPE         0x00000400L
  93. #define XPRU_PACKETDELAY        0x00000800L
  94. #define XPRU_CHARDELAY          0x00001000L
  95. #define XPRU_BLOCKCHECK         0x00002000L
  96. #define XPRU_EXPECTTIME         0x00004000L
  97. #define XPRU_ELAPSEDTIME        0x00008000L
  98. #define XPRU_DATARATE           0x00010000L
  99. /*
  100.  *   The xpro_option structure
  101.  */
  102. struct xpr_option {
  103.    char *xpro_description;      /* description of the option                  */
  104.    long  xpro_type;             /* type of option                             */
  105.    char *xpro_value;            /* pointer to a buffer with the current value */
  106.    long  xpro_length;           /* buffer size                                */
  107. };
  108. /*
  109.  *   Valid values for xpro_type are:
  110.  */
  111. #define XPRO_BOOLEAN 1L         /* xpro_value is "yes", "no", "on" or "off"   */
  112. #define XPRO_LONG    2L         /* xpro_value is string representing a number */
  113. #define XPRO_STRING  3L         /* xpro_value is a string                     */
  114. #define XPRO_HEADER  4L         /* xpro_value is ignored                      */
  115. #define XPRO_COMMAND 5L         /* xpro_value is ignored                      */
  116. #define XPRO_COMMPAR 6L         /* xpro_value contains command parameters     */
  117.  
  118. /* xprkermit.c */
  119. long XProtocolSend(struct XPR_IO *IO);
  120. long XProtocolReceive(struct XPR_IO *IO);
  121. long XProtocolSetup(struct XPR_IO *IO);
  122. int SetupFromString(struct XPR_IO *IO, char *s);
  123. long XProtocolCleanup(struct XPR_IO *IO);
  124. int XPRParity(struct XPR_IO *IO);
  125. void XPRLong(struct XPR_IO *IO, long i);
  126. void ioerr(struct XPR_IO *IO, char *msg);
  127.  
  128. #pragma regcall(SetupFromString(a0, a1))
  129. #pragma regcall(XPRParity(a0))
  130. #pragma regcall(XPRLong(a0, d0))
  131. #pragma regcall(ioerr(a0,a1))
  132.  
  133. /*
  134.  * The structure for XProtocolBase.  Now we need to know about this.
  135.  */
  136.  
  137. #include <exec/libraries.h>
  138.  
  139. struct XProtocolBase {
  140.     struct Library xp_Lib;
  141.     unsigned long xp_SegList;
  142. };
  143. /*
  144.  * Pragmas for the user-callable functions.  No more stubs for me!
  145.  */
  146.  
  147. #pragma amicall(XProtocolBase, 0x1e, XProtocolCleanup(a0))
  148. #pragma amicall(XProtocolBase, 0x24, XProtocolSetup(a0))
  149. #pragma amicall(XProtocolBase, 0x2a, XProtocolSend(a0))
  150. #pragma amicall(XProtocolBase, 0x30, XProtocolReceive(a0))
  151.  
  152. /*
  153.  * Prototypes for the callbacks.  We can't use amicall pragmas, sigh.
  154.  */
  155.  
  156. long calla(long (*f)(), void *);
  157. long calld(long (*f)(), long);
  158. long callda(long (*f)(), long, void *);
  159. long callaa(long (*f)(), void *, void *);
  160. long callad(long (*f)(), void *, long);
  161. long calladd(long (*f)(), void *, long, long);
  162. long calldaa(long (*f)(), long, void *, void *);
  163. long calladda(long (*f)(), void *, long, long, void *);
  164.  
  165. /*
  166.  * Timer support routines
  167.  */
  168.  
  169. #include <exec/types.h>
  170. #include <devices/timer.h>
  171.  
  172. void DeleteTimer(struct timerequest *);
  173. struct timerequest *CreateTimer(ULONG);
  174. void WaitForTimer(struct timerequest *, struct timeval *);
  175. LONG MyDelay(struct timeval *, LONG);
  176.  
  177. #pragma regcall(DeleteTimer(a0))
  178. #pragma regcall(CreateTimer(d0))
  179. #pragma regcall(WaitForTimer(a0,a1))
  180. #pragma regcall(MyDelay(a0,d0))
  181.  
  182. #endif
  183.