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 / ENTERPRS / CPM / TERMS / ZMP-SRC.LZH / ZMODEM.H < prev    next >
Text File  |  2000-06-30  |  9KB  |  256 lines

  1. /*
  2.  *   Z M O D E M . H     Manifest constants for ZMODEM
  3.  *    application to application file transfer protocol
  4.  *    05-23-87  Chuck Forsberg Omen Technology Inc
  5.  *    12-10-87  Modified by HM for cpm
  6.  */
  7.  
  8. /* Leave most of this file alone. If your system can buffer incoming
  9.  * characters, and/or can receive data during disk i/o, and/or send
  10.  * a break signal, you can try changing the ZRINIT bit masks.
  11.  * <rjm>
  12.  */
  13.  
  14. #ifdef   EXTERN
  15. #undef   EXTERN
  16. #endif
  17.  
  18. #ifndef ZM
  19. #define  EXTERN    extern
  20. #else
  21. #define  EXTERN
  22. #endif
  23.  
  24. /********************* zmodem defines ***************************************/
  25.  
  26. #define     ZPAD        '*'    /* 052 Padding character begins frames */
  27. #define     ZDLE        030    /* Ctrl-X Zmodem escape - `ala BISYNC DLE */
  28. #define     ZDLEE       (ZDLE^0100)    /* Escaped ZDLE as transmitted */
  29. #define     ZBIN        'A'    /* Binary frame indicator */
  30. #define     ZHEX        'B'    /* HEX frame indicator */
  31. #define     ZBIN32      'C'    /* Binary frame with 32 bit FCS */
  32.  
  33. /* Frame types (see array "frametypes" in zm.c) */
  34.  
  35. #define     ZRQINIT       0    /* Request receive init */
  36. #define     ZRINIT       1    /* Receive init */
  37. #define     ZSINIT      2    /* Send init sequence (optional) */
  38. #define     ZACK        3        /* ACK to above */
  39. #define     ZFILE       4        /* File name from sender */
  40. #define     ZSKIP       5        /* To sender: skip this file */
  41. #define     ZNAK        6        /* Last packet was garbled */
  42. #define     ZABORT      7    /* Abort batch transfers */
  43. #define     ZFIN        8        /* Finish session */
  44. #define     ZRPOS       9        /* Resume data trans at this position */
  45. #define     ZDATA       10    /* Data packet(s) follow */
  46. #define     ZEOF        11        /* End of file */
  47. #define     ZFERR       12    /* Fatal Read or Write error Detected */
  48. #define     ZCRC        13        /* Request for file CRC and response */
  49. #define     ZCHALLENGE  14    /* Receiver's Challenge */
  50. #define     ZCOMPL      15    /* Request is complete */
  51. #define     ZCAN        16      /* Other end canned session with CAN*5 */
  52. #define     ZFREECNT    17    /* Request for free bytes on filesystem */
  53. #define     ZCOMMAND    18    /* Command from sending program */
  54. #define     ZSTDERR     19    /* Output to standard error, data follows */
  55.  
  56. /* ZDLE sequences */
  57.  
  58. #define     ZCRCE       'h'    /* CRC next, frame ends, header packet follows */
  59. #define     ZCRCG       'i'    /* CRC next, frame continues nonstop */
  60. #define     ZCRCQ       'j'    /* CRC next, frame continues, ZACK expected */
  61. #define     ZCRCW       'k'    /* CRC next, ZACK expected, end of frame */
  62. #define     ZRUB0       'l'    /* Translate to rubout 0177 */
  63. #define     ZRUB1       'm'    /* Translate to rubout 0377 */
  64.  
  65. /* zdlread return values (internal) */
  66. /* -1 is general error, -2 is timeout */
  67.  
  68. #define     GOTOR       0400
  69. #define     GOTCRCE     (ZCRCE|GOTOR)    /* ZDLE-ZCRCE received */
  70. #define     GOTCRCG     (ZCRCG|GOTOR)    /* ZDLE-ZCRCG received */
  71. #define     GOTCRCQ     (ZCRCQ|GOTOR)    /* ZDLE-ZCRCQ received */
  72. #define     GOTCRCW     (ZCRCW|GOTOR)    /* ZDLE-ZCRCW received */
  73. #define     GOTCAN       (GOTOR|030)    /* CAN*5 seen */
  74.  
  75. /* Byte positions within header array */
  76. #define     ZF0          3    /* First flags byte */
  77. #define     ZF1          2
  78. #define     ZF2          1
  79. #define     ZF3          0
  80. #define     ZP0          0    /* Low order 8 bits of position */
  81. #define     ZP1          1
  82. #define     ZP2          2
  83. #define     ZP3          3    /* High order 8 bits of file position */
  84.  
  85. /* Bit Masks for ZRINIT flags byte ZF0 */
  86. /* Change to suit your system. These are initially set for the simplest */
  87. /* possible case. Set to 0 to disable, set to values in () to enable */
  88.  
  89. #define     CANFDX       0    /* Rx can send and receive true FDX  (01) */
  90. #define     CANOVIO       0    /* Rx can receive data during disk I/O (02) */
  91. #define     CANBRK       0    /* Rx can send a break signal (04) */
  92. #define     CANCRY       010    /* Receiver can decrypt */
  93. #define     CANLZW       020    /* Receiver can uncompress */
  94. #define     CANFC32       040    /* Receiver can use 32 bit Frame Check */
  95. #define     ESCCTL      0100    /* Receiver expects ctl chars to be escaped */
  96. #define     ESC8        0200    /* Receiver expects 8th bit to be escaped */
  97.  
  98. /* Parameters for ZSINIT frame */
  99.  
  100. #define     ZATTNLEN    32    /* Max length of attention string */
  101.  
  102. /* Bit Masks for ZSINIT flags byte ZF0 */
  103.  
  104. #define     TESCCTL     0100    /* Transmitter expects ctl chars to be escaped */
  105. #define     TESC8       0200    /* Transmitter expects 8th bit to be escaped */
  106.  
  107. /* Parameters for ZFILE frame */
  108. /* Conversion options one of these in ZF0 */
  109.  
  110. #define     ZCBIN          1    /* Binary transfer - inhibit conversion */
  111. #define     ZCNL          2    /* Convert NL to local end of line convention */
  112. #define     ZCRESUM       3    /* Resume interrupted file transfer */
  113.  
  114. /* Management include options, one of these ored in ZF1 */
  115.  
  116. #define     ZMSKNOLOC    0200    /* Skip file if not present at rx */
  117.  
  118. /* Management options, one of these ored in ZF1 */
  119.  
  120. #define     ZMMASK       037    /* Mask for the choices below */
  121. #define     ZMNEWL       1    /* Transfer if source newer or longer */
  122. #define     ZMCRC          2    /* Transfer if different file CRC or length */
  123. #define     ZMAPND       3    /* Append contents to existing file (if any) */
  124. #define     ZMCLOB       4    /* Replace existing file */
  125. #define     ZMNEW          5    /* Transfer if source newer */
  126.  
  127.     /* Number 5 is alive ... */
  128.  
  129. #define     ZMDIFF       6    /* Transfer if dates or lengths different */
  130. #define     ZMPROT       7    /* Protect destination file */
  131.  
  132. /* Transport options, one of these in ZF2 */
  133.  
  134. #define     ZTLZW          1    /* Lempel-Ziv compression */
  135. #define     ZTCRYPT       2    /* Encryption */
  136. #define     ZTRLE          3    /* Run Length encoding */
  137.  
  138. /* Extended options for ZF3, bit encoded */
  139.  
  140. #define     ZXSPARS       64    /* Encoding for sparse file operations */
  141.  
  142. /* Parameters for ZCOMMAND frame ZF0 (otherwise 0) */
  143.  
  144. #define     ZCACK1       1    /* Acknowledge, then do command */
  145.  
  146. long rclhdr();
  147.  
  148. #define     INTRATIME   50    /* intra-packet wait time */
  149.  
  150. /******************** globals used for zmodem functions *********************/
  151.  
  152. EXTERN struct stat Fs;
  153. EXTERN long Lrxpos;        /* Receiver's last reported offset */
  154. EXTERN int Errors;
  155. EXTERN int Lastrx;
  156. EXTERN int Firstsec;
  157. EXTERN int Eofseen;        /* indicates cpm eof (^Z) has been received */
  158. EXTERN int Fd;
  159. EXTERN int Wcsmask
  160. #ifdef ZM
  161. =0377
  162. #endif
  163. ;
  164. EXTERN int Verbose
  165. #ifdef ZM
  166. =0
  167. #endif
  168. ;
  169. EXTERN int Quiet              /* overrides logic that would otherwise set verbose */
  170. #ifdef ZM
  171. =0
  172. #endif
  173. ;
  174. EXTERN int Nflag             /* Don't really transfer files */
  175. #ifdef ZM
  176. =0
  177. #endif
  178. ;
  179. EXTERN int Rxbinary           /* receive all files in bin mode */
  180. #ifdef ZM
  181. = FALSE
  182. #endif
  183. ;
  184. EXTERN int Rxascii            /* receive files in ascii (translate) mode */
  185. #ifdef ZM
  186. = FALSE
  187. #endif
  188. ;
  189. EXTERN char *Cpmbuf;             /* buffer bytes for writing to disk */
  190. EXTERN unsigned Cpbufsize;       /* size of Cpmbuf */
  191. EXTERN unsigned Cpindex          /* index for Cpmbuf */
  192. #ifdef ZM
  193. =0
  194. #endif
  195. ;
  196. EXTERN char *Secbuf;       /* sector buffer receiving */
  197. EXTERN char Zconv;           /* ZMODEM file conversion request */
  198. EXTERN char Zmanag;           /* ZMODEM file management request */
  199. EXTERN char Ztrans;           /* ZMODEM file transport request */
  200. EXTERN int Zctlesc;           /* Encode control characters */
  201. EXTERN int Rxtimeout           /* Tenths of seconds to wait for something */
  202. #ifdef ZM
  203. = 100
  204. #endif
  205. ;
  206. EXTERN int Rxframeind;        /* ZBIN ZBIN32, or ZHEX type of frame received */
  207. EXTERN int Rxtype;        /* Type of header received */
  208. EXTERN int Rxcount;        /* Count of data bytes received */
  209. EXTERN char Rxhdr[4];        /* Received header */
  210. EXTERN char Txhdr[4];        /* Transmitted header */
  211. EXTERN long Rxpos;        /* Received file position */
  212. EXTERN long Txpos;        /* Transmitted file position */
  213. EXTERN int Txfcs32;        /* TRUE means send binary frames with 32 bit FCS */
  214. EXTERN int Crc32t;        /* Display flag indicating 32 bit CRC being sent */
  215. EXTERN int Crc32;        /* Display flag indicating 32 bit CRC being received */
  216. EXTERN int Znulls;        /* Number of nulls to send at beginning of ZDATA hdr */
  217. EXTERN char Attn[ZATTNLEN+1];    /* Attention string rx sends to tx on err */
  218. EXTERN int Baudrate;
  219. char *ttime();
  220.  
  221. #define  FRTYPES     21       /* Total number of frame types in this array */
  222.                              /*  not including psuedo negative entries */
  223. #define  FTOFFSET    3
  224. EXTERN char *frametypes[]
  225. #ifdef ZM
  226.  = {
  227.     "Carrier Lost",        /* -3 */
  228.     "TIMEOUT",        /* -2 */
  229.     "ERROR",        /* -1 */
  230.     "ZRQINIT",
  231.     "ZRINIT",
  232.     "ZSINIT",
  233.     "ZACK",
  234.     "ZFILE",
  235.     "ZSKIP",
  236.     "ZNAK",
  237.     "ZABORT",
  238.     "ZFIN",
  239.     "ZRPOS",
  240.     "ZDATA",
  241.     "ZEOF",
  242.     "ZFERR",
  243.     "ZCRC",
  244.     "ZCHALLENGE",
  245.     "ZCOMPL",
  246.     "ZCAN",
  247.     "ZFREECNT",
  248.     "ZCOMMAND",
  249.     "ZSTDERR",
  250.     "xxxxx"
  251. }
  252. #endif
  253. ;
  254.  
  255. /******************* End of ZMODEM.H ****************************************/
  256.