home *** CD-ROM | disk | FTP | other *** search
- NMODEM 2.36 DOCUMENTATION
- -------------------------
-
- NMODEM is a file transfer protocol written in PASCAL and C++ 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 bytes was chosen for block size as it seems to be the optimum size for
- CPS and minimal impact 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 16-bit CRC error checking for a very high reliability of
- successful transfer in rough conditions with minimal transfer overhead.
-
- LEGAL STUFF
- -----------
-
- NMODEM is Copyright (c)1992 by L.B. Neal. All Rights Reserved.
-
- Anyone may distribute the NMODEM cheapware version as long it is unmodified,
- complete and any distribution fee is less than $5.00.
-
- -----------------------------------------------------------------------
- NOTE: The registered version of NMODEM may NOT be distributed excepting
- to SYSOPs of "NOT-for-Profit" BBS systems. See Caution.TXT.
- -----------------------------------------------------------------------
-
- 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 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 DirectVideo/FIFO/Sound/No Log 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: Registered users will be able to download the latest registered
- version from PYSMATIC BBS 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 #197
- Sunnyvale, CA 94086
-
- --------------------------------------------------------------------------
- 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 $30. 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 45k 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<cr> 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.
-
- 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. NMODEM.LOG is disabled with /L - NMODEM will NOT write to
- nmodem.log.
- *[registered versions]
-
-
- Examples:
-
- "cheapware" version:
-
- NMODEM S2 Myfile.zip { Send via COM2: myfile.zip }
- NMODEM S1 c:\uploads\Myfile.zip { Send via COM1: myfile.zip }
- NMODEM R2 c:\download\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 have 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.
- The CPSAve value includes all overhead and should be very close
- to the actual result.
-
- 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. NMODEM in PASCAL allows writing Runtime errors to the
- Nmodem.err file, so they will be added when they happen.
-
- 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 must 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 and QMODEM.
-
- 12. If you attempt to receive an existing file NMODEM will abort!
-
- 14. If NMODEM aborts during a receive operation the file will be deleted.
-
- 15. NMODEM has been tested with TELIX 3.15 and QMODEM 4.2 they seem to work
- fine. I also tested with GT-1550 and was unable to duplicate problems
- reported by some GT users.
-
- 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),
- OS/2, DR-DOS 6.0, PC-MOS 4.1, DOS-XM 6.2, Concurrent DOS-386 3.0 and
- MS-DOS 5.0.
-
- 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, Ron Pierce and
- Dave Halliday for their help with BETA testing of NMODEM.
-
- 21. A user recently reported that NMODEM would NOT work due to a problem
- with his floppy controller card. "Anything can cause problems".
-
- 22. I am happy to report that several users of NMODEM who regularly
- frequent PYSMATIC BBS have advised me that NMODEM is the fastest
- protocol they have used. NMODEM is designed to NOT require a high
- speed computer for fast thruput.
-
- 24. I can be contacted at:
-
- PYSMATIC BBS
- (415)969-4159
-
- Both in Sunnyvale, CA
-
-
- TECHNICAL NOTES
- ---------------
-
- 1. NMODEM does NOT use assembly language to improve transfer speed.
- Standard Pascal and C++ library routines are used for IO. Also, I do
- NOT use the several "COMM libraries" that I own since they use
- specialized assembly routines for speed.
-
- 2. The port initialization routines use some assembly features as
- provided by Pascal and C++ since the nature of the beast requires some
- of these methods.
-
- 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. Specific items are called in psuedo
- assembly, but are NOT related to the buffer efficiency but just
- the need to enter and exit the interrupt properly.
-
- 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 FALCON BBS, WILDCAT! BBS, FEATHERNET BBS, TMODEM,
- TELIX 3.15 and QMODEM 4.31 on XT, AT & 386 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.
-
- NOTE: Version 2.01+ has a completely rewritten modem interface which
- should resolve most problems!
-
- 7. As of version 1.20 the file lookahead scheme was removed since it was
- faulty and did NOT work when an error was encountered. I will try to
- come up with a new scheme that will work.
-
- 8. Version 1.30 fixes a bug introduced by me and considerable change in
- the main Send and Receive procedures.
-
- 9. Version 1.31 uses a new status screen scheme and improves on handling
- of NMODEM.ERR and NMODEM.LOG files.
-
- 10. Version 1.32 eliminates redundant ClearScreen.
-
- 11. Version 1.40 changes the modem interface hopefully for the better!
- NMODEM now uses Turbo Pascal 5.5, TPCRT from Turbo Power Software,
- and SYST55C2 from Eagle Performance Software! Each of these items
- increase the speed of NMODEM!
-
- 12. Version 1.41 introduces a 1 sec delay after setting up the UART to
- allow slow UARTS to process the information.
-
- 13. Version 1.50 introduces yet another major revision of the modem
- interface to try to improve reliabilty with various modems.
-
- 14. Version 1.60 eliminates the restiction on path names in the shareware
- package. I also optimized send and receive loops. NMODEM will now
- inform DOS of COM3: and COM4: while operating and restore the initial
- status on exit.
-
- 16. Version 1.61 introduces an option to disable the generation of the
- Nmodem.log file. This option works on registered versions only!
-
- 17. Version 1.62 adds these features:
-
- A. Added statusline that shows the various options.
-
- B. Optimized the status screen.
-
- C. Cleared full status screen on exit.
-
- 18. Version 1.63 addresses some code typo errors on my part and adds
- some code to handle interrupts better.
-
- 19. Version 1.64 tweaks the interrupt interface and reduces memory needs
- by 4k.
-
- 20. Version 1.65 will place date and time stamp in all NMODEM.LOG and
- NMODEM.ERR entries. Also reduced lines entered into NMODEM.LOG.
-
- 21. Version 1.66 corrects a goof in the new status window drawing
- scheme.
-
- 22. Version 2.00 is now compiled with Turbo C++ 1.01. It will soon be
- compiled with TopSpeed C++ 3.01 or Zortech C++ 3.0.
-
- 23. Version 2.01 uses a totally new modem interface scheme!
-
- 24. Version 2.02 corrects clearing status screen, adds beep option at
- end of transfer and improves CPS calculation. MNP "support" was
- removed since the scheme was basically faulty and did NOT really
- improve transfer speed, the CRC check will be made at all times.
-
- 25. Version 2.03 eliminates echo of keys hit to screen.
-
- 26. Version 2.04 will now delete aborted receive files.
-
- 27. Version 2.05 corrects flaw in the syncup routine to force
- a 60 second delay. Corrects exit flag routine and changes some
- #define statements to typedef.
-
- 28. Version 2.06 speeds up status window display.
-
- 29. Version 2.07 addresses an "ambiguous" return from fread()
- at END-OF-FILE with TC++.
-
- 30. Version 2.08 speeds up CRC calc routine. The code is NOT the best
- but I have yet to a figure a way to trick the compiler into making
- it faster. The tricks that cause Turbo Pascal to generate the good
- code are not recognized by TC++.
-
- The CRC calc is faster by using doubles for all floating point calcs.
- Seems TC++ does multiple conversions from float to double when
- using floats.
-
- NOTE: The large size of NMODEM.EXE is a result of TLINK NOT being
- very "smart" with C code! Adding floating point to get
- accurate CPS calculations brought in the whole world! In
- Turbo Pascal the penalty is about 2k. In TC++ the penalty
- is about 12K!
-
- Using NMODEM 2.0+ with a floppy drive will result in very
- poor transfer rates. This is because the fread() and fwrite()
- functions are very slow when addressing non-HD media.
-
- 31. Version 2.09 solves the display problem for the final short block in
- a transfer. A 80286 version is now supplied as NMODM286.EXE. This
- version will take advantage of improved CPU instructions.
-
- 32. Version 2.10 uses some TC++ features to improve speed one more
- time. Specific efforts are in the modem interrupt handler and
- the keyboard monitor.
-
- 33. Version 2.11 tuned the buffer interrupt one more time.
-
- 34. Version 2.12 restores the old mode of looking for keys pressed
- by the user. The BIOS system introduced in 2.10 may be causing
- some problems.
-
- 35. Version 2.14 addresses use with 9600 bps modems.
-
- 36. Version 2.16 and 2.17 were skipped. See readme.2.18.
-
- 37. Version 2.19 See readme 2.19.
-
- 38. Version 2.20 thru 2.29 were skipped.
-
- 39. Version 2.30 is once again PASCAL and faster! There were limitations
- in C++ and my knowledge that kept me from making basic improvements.
-
- 40. Version 2.31 Corrected subtle problem with SyncUp routine.
-
- 41. 2.32 skipped.
-
- 42. Version 2.33 Fined tuned handshaking.
-
- 43. 2.34 more tuning of the handshake.
-
- 44. 2.36 new compiler versions used. (See readme.236).
-