Ymodem-G (Batch) Copyright ½ 1990 Zipline Software Section 1 -- Protocol Limitations Ymodem-G is one of the FASTEST protocols to date. It will out transfer Xmodem, Ymodem, Ymodem Batch, Kermit, Sliding Windows Xmodem, and even Zmodem. This alone makes it very useful. This protocol uses a 16-bit CRC to make sure that your data gets transferred correctly, but if an error should occur, the transfer ABORTS. Realistically, this protocol should only be used with modems that have error correction built-in (or used with a null modem). Section 2 -- Program Limitations Although the description of Ymodem-G does not force these limitations, my program does. Most of them you will never encounter, but for sake of completeness, I will try and discuss all the limitations. - Do not attempt to transfer more than 2,147,483,647 bytes at a time. (It is possible it can transfer double that, but I haven't tested it, and I'm planning on it. Anyone that wants to try it, let me know what the results are! At 19,200 baud, that will take a little more than 12.9 days!) - Ymodem-G automatically OVERWRITES any file that has the same name of the file you are receiving. - There is no check on the path that you give YMG, if it's really bad, it MIGHT bomb the computer. (Don't try for example, d/ling to the cartridge port!) - YMG requires approximately another 17K above the program size for its own use. Most of this space (16K) is used for the modem and disk buffers. Floppy drives systems need these big of buffers, and they aren't too terribly big, so I did not allow them to be changed. - This program is copyrighted and shareware. You may copy it, give it away, put it up for download on BBS's, etc. You may not sell it. AND, if you use this program for more than 3 weeks, send the author (ME), a small fee to keep producing quality software like this. My address is: Robert McKee 395 S. Duane #301 Glen Ellyn, IL 60137 Section 3 -- Running ymodem-g You may run YMG from inside any terminal that supports running external programs. It may also be run from the desktop, if your terminal does not support this function. When running YMG from the desktop, a box will appear asking you to input the parameters for YMG. Section 4 -- YMG Options YMG now requires that all options be preceded by a -. Also, most options should be followed by either a - or a +. Following an option a minus (-) sign will disable or turn off that option. Following an option with a plus (+) sign will enable or turn on that option. These are the options that YMG will accept: B - Will enable/disable a beep at the end of a transfer. H - Instead of +/-, this option requires you to have following it one of these 4 letters: N, S, H, or B. This option is for setting flow control. N - None; S - Software; H - Hardware; or B - Both. If this option is left out, flow control will not be changed. (It will use whatever you have set currently). K - Keep aborted files. If for some reason a transfer gets canceled, (like user aborting) you may still want as much as the file as you have received. This allows you to finish the download with any protocol that has a resume function (like Z-modem). EX: YMG -B+ -HH -K+ C:\ This will tell YMG to use hardware flow control, keep any aborted files, beep at the end of the transfer, and download all the files to C:\. YMG -B+ C:\ This will tell YMG to beep at the end of the transfer, and download to C:\. It will use the flow control that was being used before YMG started. YMG This wll use all the default options, and will download to the current directory. Section 5 -- Modification Log (AKA what I changed in this version) Version .25 -- 05/??/90 - First release -- Written in 100% assembler to be small and fast - No outputs really, just simple got block messages Version .50 -- 06/07/90 - Added disk buffering (4K) - Added new user interface - Batch Status - Total Files -- # of files sent - Total Bytes -- # of bytes sent - Avg Throughput -- CPS on whole transfer - Elapsed Time -- Elapsed time on whole transfer - File Status - File Name -- Name of file in transit - Total Bytes -- The total number of bytes in the file - Avg Throughput -- CPS on current file - Current Byte -- Total bytes in file received - Elapsed Time -- Elapsed time on current file only - Last Message -- Messages about transfer - Last Block - Size in Bytes -- The size of the last block sent - Block Type -- What was contained in the last block - Sent CRC's -- The CRC the sender gave us - Calculated CRC -- The CRC we calculated it should be Version .75 -- 06/19/90 - Fixed a minor bug when communicating with IBM systems that send the extra info in the header block. - Added File Progress added in both % and visual bar - Added File Time Estimate which give an approximate amount of time that the current file will take. - Now gives error messages in English instead of result codes. - Now allows a path to d/l to on the command line, and shows that path in the Batch File Path line. - More accurate CPS rates. Also, not quite as jumpy as before. (The former routine was only accurate when alot of bytes had been transfered). - Can now timeout if the sender stops sending too long. Previously would wait forever (or until UNDO was hit). - Optimized my code greatly...Should hopefully be fast enough for any baud rate. - All times are now in tenths of a second instead of seconds. - Now updates the screen every block *AND* during the block IF there is no data to get. - Now supports both color and monochrome monitors. Version 1.0 -- 06/20/90 - Added a modem buffer (8K) - Increased disk buffer to 8K - Disabled flow control completely by using my own buffer and raising the high water mark above the buffer length. So, now instead of a lock-up when the buffer overflows, you only get an error message of some sort. - Added Files Window to show the last few files you've already got including the one you've started to get as well. Version 1.01 -- 06/22/90 - Fixed minor bugs with reseting the modem buffer to the defaults when leaving YMG. - Renamed YMG.PRG to YMG.TTP so a command line can be entered from the desktop. Version 1.02 -- 06/28/90 - Increased the amount of time needed for a timeout from 1 second to 5 seconds. This should be long enough for any reason. Version 1.17 -- 07/18/90 - Added flow control options so YMG can use flow even if the terminal program that calls it doesn't. - Now reserves and protects its memory while running (It also releases it when it terminates). - Now uses BIOS calls for modem input. This should increase some compatibility. (This also slows down YMG, so floppy drives may/ may not work again!) - Optimized both speed and size alot. It's about as fast and small as it's going to get. (About 250 bytes smaller now!) Version 1.18 -- 07/30/90 - Changed the CRC routine. Instead of a pure calculation of the 16-bit CRC which was used prior to version 1.18, now YMG uses a simple table look-up (with a small formula). The CRC routine now takes approximately 70 cycles instead of 272. (about 4 times as fast). Unfortunately, this requires the 512-byte table to be added to the length of YMG. (Oh well!) - Fixed problem with YMG exitting with the character color being green if there was an error. - Fixed the screen wrap problem. YMG was assuming that the screen wrap was off, and if a program turned it on previous to calling YMG, the screen would appear completely messed up. Version 1.19 -- 07/31/90 - Minor changes made, basically just more speed and size optimization. About 200 bytes smaller in size, and just a few cycles taken out here and there. Changed all compares to zero to test, a few moves to quick moves, a few adds to quick adds, a few subs to quick subs, etc. Also combined a few multiple moves of word sized immediates to a few move of long sized immediates. Instead of logical shifting a data register to the left one, substitutions of adding the data reg. to itself. Version 1.25 -- 08/09/90 - Major overhaul of quite a few sections of YMG. I have completely redone how to pass options to YMG (this was done so that I can now implement more options on the command line, but still remain pretty much constant between revisions, also it looks alot better). New options added now are -B+, and -K-. Also, usage screen comes up if the parameters are not passed correctly. This should help people get used to the new way that YMG takes it's parameters. Quite a few more options are going to be added, of which a few are already in the help screen, so don't be alarmed if the options there do not work yet. I wantted to say thank you to these fine BBS's that have put up with me downloading 100+ files in testing this program: Software Syndicate (708)307-9915 14400HST ///Turbo BBS Graveyard BBS (708)250-0968 2400 FoReM ST Dragon's Egg II (708)695-8617 9600 HST ///Turbo BBS Code One (708)789-3610 2400 FoReM ST