NMODEM DOCUMENTATION -------------------- NMODEM is a file transfer protocol written in Turbo Pascal 5.0 for the "IBM" family of computers. This protocol sends data in 2048k blocks. The last block will be the size of the final bytes in the file, thus the original file size will be retained. Each block has an overhead of 6 bytes. 2048 was chosen for block size as it seems to be the optimum size for CPS and minimal inpact on efficiency if an error should occur. It also happens to be the normal size of a Hard Drive sector, 2 times a Floppy sector and 1/2 of a oversize Hard drive sector thus improving disk read/write efficiency. NMODEM uses the 16-bit CRC error checking system for a very high reliability of successful transfer in rough conditions with minimal transfer overhead. LEGAL STUFF ----------- NMODEM is (c)Copyright 1990 by L.B. Neal. All Rights Reserved. Anyone may distribute NMODEM as long it is unmodified, complete and any distribution fee is less than $5.00. NMODEM is distributed as "cheapware". You may try this program to see if it is of value to you before registering. If you find the product to be of value you MUST pay a the registration fee or stop using the program. SYSOPS of non-profit BBS's may use NMODEM without registration. If you paid a fee for NMODEM to anyone but L. B. Neal you did NOT register NMODEM you paid for media and handling costs. Registration schedule is as follows: 1. Register NMODEM but w/o disk $ 5.00 2. Register NMODEM w/returned registered version - $10.00 * Has Dir/Path/DirectVideo options enabled. * Latest Version plus latest NMTERM program. * Misc items that will also fit on disk. 3. Update registered version by mail. $ 2.00 4. Update registered source by mail. $ 5.00 -------------------------------------------------------------------- NOTICE: Effective immediately registered users will be able to download the latest registered version from PYSMATIC or THE COMM CENTER for free!! I will need your user#, Password and which BBS you use to set up access! -------------------------------------------------------------------- NOTE: Items 2,3 & 4 include media, handling, postage and Tax! My mailing address is currently: L.B. Neal 370 Altair Way #103 Sunnyvale, CA 94086 If response is appropriate I will attempt a Two-Way version that will transfer files in both directions at the same time. -------------------------------------------------------------------------- NMODEM is provided AS-IS without warranty! I am NOT and will NOT be responsible for the use or misuse of this program. It is my belief that this program will function essentially as described in this document but I cannot test for every possible software/hardware configuration. If you use this program then you have agreed to the previous statements. -------------------------------------------------------------------------- The source code for NMODEM is available for $50. If you purchase the source you will be required to sign a Non-Disclosure agreement and will NOT be allowed to distribute any modified form of NMODEM or the source code. You will be able to utilize modified versions for your own use. This provision is for the protection of myself and other users and is NOT intended to prohibit individuals or organizations from adjusting the program for specific needs. Individuals or organizations wishing to incorporate NMODEM into a communications program should contact me directly for very nominal licensing fees. NOTE: Due to the low registration cost of NMODEM - Registration or purchase of the source does NOT in anyway require any support for the program by L.B. Neal. However, I will address problems reported in a prompt manner. USAGE NOTES ----------- 1. NMODEM assumes the comport called for is already initialized. Therefore using NMODEM directly from DOS will probably NOT work! 2. A minimum of 47k of free memory is needed to sucessfully operate. 3. COM1 thru COM4 are supported with 3 & 4 setup for the "unofficial" standard as used by Everex and other manufactures. 4. NMODEM will exit with a DOS error level of 1 if anything goes wrong. Otherwise the value will be 0. 5. Please report "in detail" any problems experienced in using the program. 6. Call NMODEM w/o parameters ie C:\>NMODEM or such to see the needed info for using. NMODEM needs: a. S for Send or R for Receive. b. port# (COM1 thru COM4) c. FileName to transfer. * optional drive and/or directory. [registered versions] d. If you add the /D behind the filename Directvideo will be used. * [registered versions] e. If you have a 16550 UART a /F behind the file name will enable the UART FIFO Buffer. * [registered versions] f. MNP is enabled with /M - NMODEM will NOT do CRC check! *[registered versions] NOTE: If you pass drive or directory to the unregistered version of NMODEM all except the filename will be stripped out of the string. Examples: "cheapware" version: NMODEM S2 Myfile.zip { Send via COM2: myfile.zip } NMODEM S1 Myfile.zip { Send via COM1: myfile.zip } NMODEM R2 Hisfile.zip { Recv via COM2: hisfile.zip } NMODEM R1 Hisfile.zip { Recv via COM1: hisfile.zip } Registered version: NMODEM S2 C:\UPLOADS\Myfile.zip /D { Send via COM2: myfile.zip } NMODEM S1 C:\UPLOADS\Myfile.zip /DF { Send via COM1: myfile.zip } NMODEM R2 C:\DOWNLOAD\Hisfile.zip /D { Recv via COM2: hisfile.zip } NMODEM R1 C:\DOWNLOAD\Hisfile.zip /F { Recv via COM1: hisfile.zip } NOTE: I have set up NMODEM to use the same basic parameter string as JMODEM to make it easier to install. If you have a JMODEM batch file just rename it and change JMODEM to NMODEM inside the batch file. Combined switches are just added behind a single '/'! 7. I have taken great care to try to make sure the CPS rate reported is accurate (Unlike many other protocol drivers!). Please advise if you find my efforts in vain. I recently performed stopwatch tests with large file transfers and the indicated CPS did infact match the size vs time. NOTE: The CPS calculation does NOT include receive file I/O time. It does include resend times if necessary. It is not unusual to see a low CPS for the first block depending on the interface timing. The receive IO is in the background and thus does NOT normally effect the actual CPS. 8. NMODEM will resend a block 6 times before aborting the effort. 9. This program plays no tricks and assumes the calling program is nice as well. Tricky programs will probably cause NMODEM to fail. 10. The file Nmodem.err will be generated if a runtime error occurs! NMODEM version and error # + error address will be give! This info will be what I need to address problems. Informative messages will also go to NMODEM.LOG. 11. NMODEM uses BIOS screenwrites for maximum compatability with DesqView and other Multi-Tasking situations. The registered version has an option for enabling DirectVideo. IF you use the BIOS method I suggest you investigate QCRT11.ZIP for much faster screenwrites! 12. I have provided NMR.BAT and NMS.BAT as sample batch files which are setup for parameters as passed by TELIX. 12. If you attempt to receive an existing file NMODEM will abort! 14. If NMODEM aborts during a receive operation the file will deleted. 15. NMODEM has been tested with TELIX 3.11 and QMODEM 4.1b they seem to work fine. 16. Remember TSR's can have strange side effects. If NMODEM fails please address any TSR's in your system as a possible cause of the problem. 17. NMODEM has been tested with MS-DOS 4.01 (later version or w/patch) and OS/2. 18. NMODEM will NOT work below 1200 Baud! 19. Computers which do NOT have DMA such as PCJr and some versions of the TANDY 1000 will NOT work with NMODEM. 20. Special thanks to Ted Chan, Dennis King and Ron Pierce for their help with BETA testing of NMODEM. 21. I can be contacted at: THE COMM CENTER (408)737-7245 PYSMATIC BBS (408)-992-0372 Both in Sunnyvale, CA TECHNICAL NOTES --------------- 1. NMODEM does NOT use assembly language to improve transfer speed. Standard Turbo Pascal library routines are used for IO. 2. The port intialization routines use some assembly. 3. An interrupt driven receive buffer is utilized to allow high speed transfer without dropping bytes. The buffer is NOT written in assembly language or inline. 4. Output is directly via the port and a buffer is not used. 5. The program is constructed to avoid Procedure and Function calls in the transfer routines for efficiency. All transfer variables are global to avoid stack manipulation overhead. 6. Great care has been taken to use only standard DOS and BIOS interface calls to avoid wierd side effects in using NMODEM. The program is being used under NBBS, TMODEM, TELIX 3.11 and QMODEM 4.1b on XT and AT class machines of various manufacture and working well. Some users have experienced problems with lockups, inability to synchup, etc. At this point I must suspect TSR type interference though it is possible I have overlooked a step in the interrupt interface. This aspect is under constant review to attempt to uncover any oversights on my part.