Contents -------- - Smodem protocol overview - Multiplexed Serial Link Protocol (MSLP) - Command line options - Error levels - Error messages - Keyboard - Menu options Smodem protocol overview ------------------------ Smodem is a new generation file transfer protocol. Unlike older protocols, like Zmodem, it has a separate low level multiplexed transfer layer (MSLP) and a high level file transfer layer. This new design simplifies protocol design and will give a maximum efficiency of as high as 99,5%. Multiplexing has made it possible to send one or more files in one continuous stream without any breaks between files. This will boost multiple file transfers dramatically. Multiplexing has also made it possible to add a full screen ANSI-BBS terminal emulator with a local full featured line editor and colored back scroll buffer of unlimited size to Smodem. Locally buffered terminal emulation allows you to chat during full speed bidirectional file transfers. The protocol has a symmetrical nature. You can connect Smodem with itself by looping transmitted characters back to the receiver. There is no reason to limit transfers in one direction. Smodem will transfer files in both directions at the same time without noticeable performance loss. Smodem detects DESQview and DPMI (Windows, OS/2) and will free all unused processor capacity to the host system. Smodem is *totally* written in the C language and compiled with Microsoft Visual C++ v1.0 compiler using full optimizations for the i286 CPU. It needs over 200KB free memory to function properly and more if you want to shell from Smodem. There is no magical multitasking to continue file transfer if you drop to DOS! Multiplexed Serial Link Protocol (MSLP) --------------------------------------- MSLP has the capability to manage 32 independent channels simultaneously. Every single channel uses a traditional two phase ack/nak type subprotocol. Maximum efficiency is achieved by using multiple parallel channels simultaneously to keep the transmitter busy. Maximum packet size floats between 16 to 1024 bytes. Transfer errors will reduce packet size depending on error frequency. One important detail is, that MSLP needs to resend only failed packets. The transmitter window size (total size of transmitted packets which have not been acknowledged) can be limited to get faster response. The packet frame contains one byte for channel number and two bytes for a 16-bit CCITT(ITU)-CRC. (Same algorithm, which is used in error correcting modems.) Acknowledgements and enquiries will be included in the packet frame when needed. Packet separators contain two bytes. If those two bytes are found in transferred data, one byte is inserted for capsulation. The possibility to find those separator bytes in random data is so small, that it will not affect protocol efficiency like old style one byte separators do. Maximum efficiency in one-direction error free transfers will be: max packetsize 1024 --------------------------- = -------- = 0.9951 = 99.5% max packetsize + frame size 1024 + 5 If packet size is limited to 256 bytes, the efficiency will be 98.1% and still better than original Zmodem! If the data link can not transfer some special characters, then the traditional character encapsulation mode could be activated. This mode encapsulates selected character codes, which inflicts performance about 0.4% + additional 0.4% for every selected code. If the data link is limited to 7 data bits, then a special bit collection mode could be activated. The highest bits for every seven bytes are collected to one byte. This collection inflicts performance about 12.4% and doubles character encapsulation possibility. Maximum transfer line correction mode of MSLP uses five characters to transmit four characters using only printable 7-bit ASCII codes. This mode should work on almost every non transparent transmission line. Maximum correction mode inflicts performance 20%. It should be used only for test purposes, if default settings do not work, or, if limitations of transfer line are unknown or too complex to handle with separate adjustments. Command line options -------------------- /- Disables MSLP initialization messages. This option prevents user information to scroll out from screen in some situations. See also /l and /L options. /+ Displays transfer statistics screen. You can add this option for your convenience. Without this option you can still open statistics screen with F2 key. /0 Special option (rs-port close). Try this if program hangs when you exit from Smodem. /1 Special option (16550 buffer). Try this if protocol hangs or you get receiving errors with 16550 type uart. /@:setupfile (Pro version only) Reads setup parameters from specified file. If your parameters doesn't fit to the command line limits (128 characters) you can use smodem environment setting to expand this limit or you can use external file with this option. /a:addr Uses special uart chip address (100..3ff). You need this parameter if you are not using one of the standard communication ports COM1-COM4. See also /p: and /i: options. /A:file (Pro version only) Selects ASCII capture file name. Normally terminal screen is captured in binary format for colored backscroll. This option enables capturing to file, which you can read using a standard ASCII browser. /b Uses black and white colors. This is normally detected automatically. Use this when you use monocrome display with color adaptor. See also /B option. /B Forces to use colors. This is normally detected automatically. Use this when you use computer with color monitor to control computer with black and white video adapter. /c Disables carrier detection. You need this option if you are dialing out from terminal mode (/t) or if your modem does not inform carrier status properly. Some modems drop the carrier signal occasionally. Use this option if you get erraneous "Carrier lost" messages. /C Enables maximum corrections for a non transparent transfer line. This option is only for test purposes. Use it only if you have problems to initiate file transfer or transfer hangs. If this option removes your problem, then it is possible to configure Smodem to work properly. See also /I, /I:, /O, /O:, /h and /H options. /d Downloads subsequent files and selects default download path. After /d parameter you can enter download directory paths or file names or a list of them with at (@) sign. You have to use this option for file names only when you need to force received filename different than original filename and limit the number of received files. Only first download directory is used to store downloaded files but every directory is scanned for duplicates before accepting new files. See also /U, /u, /f, /o, /j, /w, /R, /N, /x and /X options. /D Download startup with download trigger string ^XSMODEM^Y. This option allows user to start uploading manually if the BBS software can not request files automatically from the user. It is also possible to activate upload selection in terminal program with this alternate trigger string. Default trigger string is ^XSMODEM^X. ^X is ASCII character 18h and the alternate character ^Y is 19h. See also /F, /U, /u and /d options. /e:sec Exits after inactivity (0..600 sec) when all file transfers done. This option is useful in BBS environment to stop chatting when file transfer is done and user is not chatting any more. There is a fixed delay of 120 seconds at the beginning of transfer to allow user to select files to upload. See also /E: and /T: options. /E:sec Exits after delay (0..600 sec) when all file transfers done. This option is useful in BBS environment to stop chatting when file transfer is done. There is a fixed delay of 120 seconds at the beginning of transfer to allow user to select files to upload. See also /e: and /T: options. /f (Pro version only) Frees up/download path restrictions. If you specify this option, then user from other end of connection can download from and upload into any directory in your computer. Use with care! You have to use this option if you want to select separate download directory from download dialog. /F Removes control codes from startup trigger string. Some transmission lines can not handle ^X and ^Y codes, which are used in trigger string of Smodem. With this option no control codes are sent to the line. It is also necessary to add /C or /O: option to prevent sending of ^X codes in transmitted data. See also /D, /C and /O: options. /g Disables default terminal log file. Default name is smodem.$$$. Log is used for coloured back scroll buffer. This log is not in ASCII format. You can not read it with editor. See also /g: and /G options. /g:file Selects terminal log file name. This option changes default log file name SMODEM.$$$. You can also specify different drive or directory for the log file. See also /G and /g options. /G Removes terminal log file after use. Normally log file is saved for later use. With this option log file will be removed after use. See also /g and /g: options. /h Disables rts/cts flow control. Normally rts/cts handshakes are used to control modem buffering. Use this option if your modem does not support this kind of action. See also /H and /n options. /H Enables xon/xoff flow control. Use this option only if your modem does not support rts/cts handshakes because it reduces maximum transfer speed. See also /h option. /i:irq Uses special uart chip irq (2..15). You need this parameter if your communication port irq is changed from default setting or you are using special uart chip address. See also /p: and /a: options. /I:hex[-hex]|S|X (Pro version only) Encapsulates specified input characters. You can enter only one character code or a range on codes. There are two special codes available. Code S will use a 7-bit transmission line and code X will use maximum encapsulation mode. See also /O: and /C options. /j Disables auto download. This option prevents downloads totally. It should be used in BBS systems which do not support bidirectional file transfers when downloading from BBS system. See also /r option. /J (Group chat version only) Adds user name into transfer log. This option is useful when creating special doors for user supported file transfers. All transfers can be logged into same log file with the user name. /k Disables wild cards. This option can be used in BBS systems to prevent users from downloading files from upload directory without specifying full filename. See also /j option. /l:lines Selects number of rows (20-50) from bottom of the screen. If your BBS system displays user information at the top of the screen, then you can reserve part of the screen from this information. See also /L: option. /L:lines Selects number of rows (20-50) from top of the screen. If your BBS system displays user information at the bottom of the screen, then you can reserve part of the screen from this information. See also /l: option. /m Disables error messages. In BBS system there is no need to show error messages locally. This option hides them. See also /q and /q: options. /M:file (Pro version only) Enables message file display. This option is useful when you build a host system using Smodem. Smodem displays the contents of specified file to the remote user. You can create a new message file before Smodem is started and during external command execution. See also /S: and /@: options. /n Disables slow RTS handshakes from disk operations. This option may give slightly better performance or it can ruin the whole thing depending on your hardware performance. Some modems need this option to work properly. See also /h option. /N (Group chat version only) Disables "Press enter to join group chat." prompt. This option is available only in the Group chat version for PCBoard. /o Allows to overwrite files. Without this option you can not download files which already exists on your disk. You can still resume aborted downloads. See also /j and /w options. /O:hex[-hex]|S|X (Pro version only) Encapsulates specified output characters. You can enter only one character code or a range on codes. There are two special codes available: Code S will use 7-bit transmission line and code X will use maximum encapsulation mode. See also /I:, /C and /F options. /p:port Selects com port number (1..4). This setting is mandatory. Without this or corresponding setting, you will only get internal help information. See also /a: and /i: options. /P:prompt Displays user defined prompt. With this option you can enter 1-39 characters long prompt to your local line editor. /q Quiets alarm bell. This option prevents you to hear warning message beeps and yelling noise. You can change the quiet status from menu. See also /q: and /m options. /q:hh-hh (Pro version only) Disables alarm bell at specified hours. This option lets you to hear warning message beeps and yelling noise during selected time range. You can still change the quiet status from menu. See also /q and /m options. /r Enables auto upload. If you specify this option, then user from other end of connection can download files from your computer. See also /f option. /R Allows to renumber files. Normally existing files are overwritten or transfer is aborted. When this option is enabled, new files are renumbered to prevent conflicts. For example file ABC.DEF is renamed to ABC.DE0 and next ABC.DEF is renamed to ABC.DE1. See also /R option. /s:speed Changes dte baud rate (50..115200) using 8,N,1 configuration. If this parameter is omitted, then baud rate and line parameters are reserved on their current values. /S:file (Pro version only) Enables external command shell. This option is useful when you build a host system using Smodem. External command shell is a program or batch file, which interpretes commands entered by the remote user. See also /M: and /@: options. /t (Pro version only) Enables terminal mode. In this mode Smodem does not send initialization strings until it receives one. You may need ansi.sys or some replacement for full ANSI support. /T:min (Pro Version only) Exits after selected time. Normally users can stay unlimited time in transfer protocol. This option limits this time. See also /T option. /T (Pro Version only) Disables time limit while transferring. Normally time limit is checked during file transfers. This option allows to transfer longer than time limit but still prevents to stay chatting after such transfer. /u Uploads subsequent files and selects default upload path(s). After /u parameter you can enter upload directory paths or file names or a list of them with 'at' (@) sign. You can enter as many upload directories as you need. All upload directories will be scanned when uploading a file without pathname. See also /U, /d, /f, /k and /y options. /U Requests subsequent files and selects download path(s). After /U parameter you can enter download directory names, file names or list of directory or file names with at (@) sign. You have to use this option only for requesting files for download. Only first download directory is used to store downloaded files but every directory is scanned for duplicates before accepting new files. See also /d, /u, /f, /o, /j, /w, /R, /N, /x and /X options. /v:mode Changes default packet and transmitting window size. Possible values are T(iny), S(mall), C(ompact), M(edium), L(arge) and H(uge) (default). Larger values will give slightly better throughput. Smaller values will give much faster terminal response. /V Disables virtual screen memory when used in DESQview. This option has meaning only when used in DESQview environment. In some cases there are problems to update display properly. If you can not change virtual display settings from DESQview, then you have to use this option to correct the problem. /w Disables resumed downloads. Normally file transfer will continue if it has broken in some reason. This option can be used in BBS systems to prevent users to resume uploads in some reason. See also /x option. /W[:init] (Pro version only) Wait for carrier and drop dtr at exit. This option is useful when you build a host system using Smodem. Using additional init string you can dial out (ATDT) or enable autoanswer (ATS0=1). /x Removes aborted downloads. This option can be used in BBS system which does not support resumed uploading. See also /w and /X options. /X Enables aborted download entries to transfer log file. This option is added to get more specified information about file transfers. Normally, when upload is aborted, the BBS system will not be informed to remove aborted file. See also /x, /w and /z: options. /y Removes successfully uploaded files. This option can be used in some special situations to keep upload directory automatically clean. /z:file Enables file transfer log file. Created log file is DSZLOG compatible. File transfer information is appended to the end of this file. If there is no /z: parameter, then DSZLOG environment string will be used. See also /X option. Error messges ------------- Can not open file transfer log file: nnn Transfer log is not available for some reason. Check path and directory rights. Carrier lost. Carrier signal dropped from modem. Use /c option to disable carrier check. CTS signal is not ready. Modem is not ready for communication. Use /h to disable CTS. Download aborted Remote station can not receive file for some reason. Download request denied Attempt to download files when it is not allowed. Duplicate file ignored Same file has already queued for upload. Error initializing rs-port. Specified rs-port does not exist. Try /a and /i options to correct. Fatal internal error Internal protocol check error. File already exist Uploaded file already exists and is not allowed to overwrite. File already transferred Uploaded file has already been transferred. File not found: nnn Up-/download list file not found. Check path and command syntax. File open error Can not open file for some reason. File read error Disk read error while sending file. File size error File size has changed unexpectedly during transfer. File write error Disk write error while receiving file. Incompatible program version. Remote station has a different program version. Invalid parameter: nnn Specified option value is out of range. Check available range. Initialization cancelled. User interrupted initialization phase. Initialization interrupted. Remote station interrupted initialization phase. MSLP data link error. Protocol has lost synchronisation and terminated. MSLP data link failure. Excessive errors in transmit line detected. Try /C option for maximum transmit line corrections. MSLP data link interrupted. Remote station interrupted link. MSLP data link terminated. Link terminated by remote station. MSLP data link time-out. Remote station stopped responding. Waiting for MSLP termination... cancelled User interrupted termination phase. Waiting for MSLP termination... time-out Remote station stopped responding at termination phase. Out of memory. Not enough conventional memory to initialize protocol. Requested file not found Requested file does not exist or wild cards have been disabled. This test release is not valid! New version is available and this version is not supported. New versions are available from many sites. Too many files to transfer Out of memory to queue more files to transfer. Unknown option: nnn Used option is unknown. Check available options. Upload aborted Remote station can not send file for some reason. Upload request denied Attempt to upload files when it is not allowed. Error levels ------------ Available error leves are: 0 transfer completed 1 download error 2 upload error 3 upload & download error 4 (or greater) initialization error Keyboard -------- Use esc to hide popup windows and dialogs. Use cursor keys to edit your entry or to move back scroll window position. You can open menu by pressing Alt+letter or F10. Menu options ------------ File/About Shows information about program version. File/Tools Opens file manager window. File/Download Displays download selection dialog. File/Upload Displays upload selection dialog. File/Edit Batch Displays selected files. File/Yell Sends calling noise to other end of connect. File/Erase Log Erases backscroll buffer file contents. File/DOS Shell Drops to dos temporarily. File/Exit Aborts all file transfers and terminates protocol. Set/Packet size Selects one of the possible packet/window sizes. Set/Exit when done Terminates protocol after file transfer if checked. Set/Command mode Enabled or disables external command processing. Set/Quiet Quiets alarm sounds if checked. Set/Clear screen Clears terminal screen. View/Statistics Displays transfer statistics. View/Log File Displays back scroll buffer.