
this directory contains the source
files of IPXCOPY.EXE. 
IPXCOPY.EXE can be made by calling

   wmake

The source has been created with WATCOM 10.6
C compiler. Most parts of the program should
be compatible with other compilers, but IPX.C
depends on the WATCOM extenstions to the
pragma keyword (inline assembly statements).

IPX.C must be compiled in the LARGE 16 BIT model.
The LARGE model, because assembler statements
assume LARGE pointers. The 16 Bit model,
because  DOS4GW does NOT support DPMI far calls
(ok, we probably could use PMODEW).

File CBREAK.C
Ctrl-C and Ctrl-Break are catched to prevent
DOS from leaving open socket numbers. 

File CRC32.C, CRC16.C
Useful function for calculating CRC-32/16.
Look into the source for description
and copyright infos.

File CMDLINE.C
Just for interpreting commandline args.

File MAIN.C
Calls to TPTX.C or TPRX.C, depending on
commandline args.

File TPTX.C and TPRX.C
Transmitter and Receiver. Both are implemented as 
state machines. The state machine is NOT created
with case statements. I used indirect function
calls, which should be a little bit faster.

The CRDIR.C package
Portable file access subroutines.

The following table gives some ideas of the
transfer algorithm. Messages (IPX-packets) are
written in normal text.


   Transmitter                Receiver
   -----------------------------------------------------------------
   Request (filesize)
                              [CHECK EXISTENCE]
                              Ack Request (overwrite?)
   - - - wait user - - - - - - - - - - wait user - - - - - - - - - -
   File Skip                  File Skip

   [OPEN FILE (READ)]
   File Start
                              [OPEN FILE (WRITE)]
                              Ack File Start
   - - - - - - - - - - - Begin Loop - - - - - - - - - - - - - - - - -
   [READ DATA]
   [CRC32]
      Block Start
                                 Ack Block Start
      Data
      Block End (crc)
                                 Missing Data/Ack Block End
                              [CRC32]
                              [WRITE DATA]
   - - - - - - - - - - - End Loop - - - - - - - - - - - - - - - - - -
   [CLOSE FILE]
   File End
                              [CLOSE FILE]
                              Ack File End


Oliver Kraus
E-Mail: kraus@lrs.e-technik.uni-erlangen.de
