⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zmsrc.doc

📁 这个程序是用于通讯的
💻 DOC
字号:





                           ZMODEM SOURCE CODE DOCUMENTATION

          Introduction

               The Zmodem source code that makes up TXZM originated as a
          project to add all the common protocols to the MCOMM Async
          Library.  Due to other responsibilities, I have had to put the
          project on hold but have completed enough of it to be useful. 
          The code is 100% functional and very efficient.  The
          documentation leaves a lot to be desired -- this is it.  The
          present code is fairly easy to use in spite of the impression you
          may get when you look at the TXZM.C source file.  The following
          documentation in conjunction with the source code will enable you
          to use the code as long as you know something about what you are
          doing.  

          Restrictions

               The code and libraries for the SERIAL and VIDEO functions in
          the registered version of MCOMM may not be distributed in whole
          or in part.  This includes all the COMM_?.LIB libraries and all
          source code that pertains to the serial I/O or video functions. 
          End user programs developed using those libraries, however, may
          be distributed and are completely royalty free.

               The ZMODEM code that makes up TXZM and is part of the
          registered version of MCOMM (zmdos.c, zfunc.asm, batch.c, and
          xyzgen.c) also MAY NOT be distributed, nor any libraries
          distributed that were created with those source codes other than
          the small model library that is in the shareware version of
          MCOMM.  You may use the code in any non-competing software
          product without royalty.  You may use any of the non-ZMODEM
          specific functions (ZMODEM specific functions are those contained
          in zmdos.c and zfunc.asm) that are part of the TXZM demo without
          royalty for any end user programs developed.  You MAY NOT
          distribute ANY of the TXZM demo other than as provided in the
          shareware versions and then only with all accompanying files that
          make up the shareware product.  Specifically prohibited is use of
          this ZMODEM source code, in whole or in part, to enhance a
          competitor's communications library (this includes DOOR libraries
          and communication libraries developed for other languages or
          operating systems).  As long as you stick with end user
          applications that are not specifically and primarily a protocol
          driver, you are not required to pay any royalties.  Fully
          developed terminal programs such as Procomm, Telix, Crosstalk,
          etc. are not primarily protocol drivers and therefore are NOT
          considered competing products.  Neither are BBS systems, mail
          doors (not mail door libraries), or similar products considered
          competing products with TXZM.






          Disclaimer

               In regard to the MCOMM Async Library, the ZMODEM code that
          makes up TXZM is provided as a demo -- not as a integral part of
          the product.  If you can use it, it is there.  If you can't, I
          will attempt to answer any reasonable questions but due to the
          complexity of the code, the lack of precise documentation I have
          been able to develop, and the wide range of skill levels of
          programmers, I cannot provide unlimited support.  This limited
          documentation and the TXZM source code is all you get.  It is up
          to you to figure out what to do with it.  This does not apply to
          the serial library itself -- only the zmodem code.  

          How it Works 

               TXZM.C is a shell for the real zmodem driver code.  This
          module does nothing more than provide a means of generating the
          list of file names to be transferred and handling messages from
          the low level zmodem code.  It's complex appearance is due to the
          added functions not normally considered part of zmodem itself
          such as the ability to create and recurs subdirectories, the
          terminal mode, shell to DOS, DesqView and DoorWay support, etc. 
          Another factor in its apparent complexity is the elaborate (at
          least more elaborate than usual) means of displaying file
          transfer status combined with an attempt to keep from linking in
          the floating point system for calculations that really could use
          floating point math.  

               This implementation of zmodem requires you set some initial
          flags and variables such as current baud rate, what to do in the
          event of a file name collision when receiving, etc., and then
          call either ZSendFile or ZRecvFile.  From then on the low level
          code takes over.  Your application then must handle (or ignore)
          messages generated by the low level code.  This messages are
          directed to a function you must have in your program called ZMsg. 
          Messages are generated at the end of every file and block, when
          errors occur, when zmodem headers are sent or received, when a
          name clash occurs, when the code is setting waiting for
          characters or the transmit buffer to empty, etc.  The low level
          code itself puts NOTHING on the screen.  That is the function of
          ZMsg.  ZMsg also can do special handling in the event of name
          collisions and during initialization of a file transfer.  When
          ZMsg is called a number of global variables are available and are
          used to determine status and display messages.  For specifics,
          refer to TXZM.C and ZMDOS.H.  (Functions in TXZM.C except 'main'
          appear in alphabetic order).

               The low level zmodem code was developed using Chuck
          Forsberg's Zmodem documentation and by referring to his public
          domain zmodem source code for Unix.  It is not a simple "port" of
          his code, however.  I used the documentation and the source to
          extract the logic of what was going on and completely rewrote
          most of it.  This version has no goto's, is very streamlined and
          straight forward, uses tables, block I/O, and a little assembler






          to speed things up, and has several enhancements.  There are both
          ASM and C versions of three of the key functions.  Both the ASM
          and C versions are identical functionally.  They are the function
          to receive a block (ZRecvPacket), the function to send a block
          (ZTxBlock), and the function to receive a character with zmodem
          processing (ZRxChar).  To use the C version, define NO_ASM on the
          command line when compiling ZMDOS.C (this requires you have the
          source which comes with the registered version of MCOMM).  If you
          are a C programmer and want to see what the ASM is doing, you can
          look at the C version in ZMDOS.C.  The C version of the code is
          only capable of running at around 80000 baud on an 8 MHz 286
          whereas the assembler version will run at 110000 baud.  The
          assembler version is what is in the MCOMM shareware demo.

               The TXZM demo will compile with MSC, Borland or Turbo C, and
          Zortech C.  The 3 assemblerized functions will assemble with
          either MASM or TASM.  All code can be generated for any memory
          model, except the ASM will not work with a Borland C or TC HUGE
          model program.  They do funny stuff with the DS register in their
          HUGE model and I didn't want to work around it.  To compile the
          shareware demo:

               Borland or Turbo C

                    tcc
                    bcc txzm.c xyzgen.c zcmplr.c zmlib_s.lib comm_s.lib

               Microsoft C or Quick C

                    qcl
                    cl txzm.c xyzgen.c zcmplr.c /link zmlib_s comm_s

               Zortech C

                    ztc -b txzm.c xyzgen.c zcmplr.c zmlib_s.lib comm_s.lib

               If you use either Borland's or Zortech's compilers be sure
          and run the conversion batch file documented elsewhere in the
          MCOMM async package to convert the comm_s.lib to work with your
          compiler.  As distributed, before conversion, comm_s.lib is for
          MSC or QC.


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -