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