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