Home » RBC Forums » General Discussion » xmodem-1K, ymodem, or zmodem (improved data transfer programs for CP/M)
xmodem-1K, ymodem, or zmodem [message #8911] |
Wed, 28 July 2021 07:23  |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
Hi
One of the first programs often ported to a new RBC system is xmodem usually right after the debugger and CP/M-2.2. I have been using xmodem 5.0 for many years and while it works great at what it does the decision to use 128 byte packets rather hobbles it due to a lot of overhead. Also it does not support automatic file names or start up or many other advanced features. Kermit is an improvement but still pretty slow compared to the more advanced file transfer protocol programs.
I recall using xmodem-1K, ymodem, and zmodem on the IBM PC clones many years ago and they are much faster and more capable than the original xmodem. Are any of these available for CP/M-80 2.2? I've seen there is a terminal program for CP/M which supports zmodem (ZMP) but I think I am looking for something the other way around. Normally I use minicom on a Linux notebook as a terminal to the Z80 MBC and xmodem as the file transfer tool.
Has anyone used ZMP? https://github.com/mecparts/zmp can it be used as just a file transfer program?
Like to hear people's thoughts and wisdom on this subject. I am hoping there is some great but unnoticed file transfer program available
Thanks, Andrew Lynch
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: xmodem, ymodem, zmodem [message #9025 is a reply to message #9024] |
Fri, 20 August 2021 06:26   |
jayindallas
Messages: 110 Registered: June 2021
|
Senior Member |
|
|
These three names X/Y/Zmodem invoke memories of the CP/M+Modem experiences of the 80s.
This sequence equate into the cringe of getting a remote connection to a computer I fixed up for my parents, so I could transfer a file to their system. Their system had 8" drives, mine were 5.25" drives, so it was better if I could send the files to their computer before I arrived to install it.
With X-modem and a one-phoneline household at the remote end, I had to spend 30 minutes to an hour telling them the keyboard sequence they'd have to type once they hungup the phone and activated the modem for my call... plus all the trial and error of their keystrokes and the many attempts to start-over. It was so nearly impossible that I paid to put a second phoneline in their house for the modem, so I could live-chat them through the process. I liked X-Modem in general, but these particular transfers still haunt me. 
Y-modem was nice improvement. The walkthrough time seems like it dropped to 15 to 5 minutes. In comparison to X-Modem it seemed like the ultimate improvement... at the time.
Z-Modem was THE REAL great improvement, I just had to tell them to turn the modem on and I could handle most everything on my end of the call.
I don't remember much about the modem commands I had to talk them through, back in the day, my memory of them are all about the time it took to get my parents to enter the necessary commands on their side of the connection.
Glad that doesn't need to happen anymore.
[Updated on: Fri, 20 August 2021 06:44] Report message to a moderator
|
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9028 is a reply to message #9027] |
Sat, 21 August 2021 12:36   |
 |
Wayne W
Messages: 385 Registered: October 2015 Location: Fallbrook, California, US...
|
Senior Member |
|
|
Hi Phil,
I was ultimately successful. Initially, I found that I could do XModem send or receive and YModem send or receive. I could, as did you, do ZModem send. When I tried ZModem receive, I got "Subpkt too long" errors (see first screenshot). After some head scratching, I found that Tera Term has a ZModem parameter called "ZmodemWinSize". It was set to 32767 in the default configuration. I changed this to 4096, and ZModem receive began to work. This setting applies to the remote side of the connection. See the second screenshot.
Oh, I should mention that the ZmodemWinSize setting in Tera Term is found in the .INI file that Tera Term uses to save settings. It is not found anywhere in the user interface itself, so you need to edit the .INI file directly.
The obvious conclusion from all this is that modern implementations of ZModem assume a larger working buffer on the other side than is reasonably available on an 8-bit system. This was an interesting challenge.
Anyway, hope this is helpful. ZMP appears to be a truly worthwhile application.
Thanks for working on this!
-Wayne


|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9029 is a reply to message #9028] |
Sat, 21 August 2021 18:15   |
b1ackmai1er
Messages: 396 Registered: November 2017
|
Senior Member |
|
|
Thanks Wayne!
I had tried these settings on my machine
ZmodemDataLen=128
ZmodemWinSize=4096
which improved but did not resolve the issue.
I tried swapping the CIO order but that is giving me some weirdness, so it looks like an issue with my machine/configuration.
Did you want submit ass an app or as a build package for romwbw?
Thanks for your help.
[Updated on: Sat, 21 August 2021 18:15] Report message to a moderator
|
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9031 is a reply to message #9030] |
Sat, 21 August 2021 20:04   |
 |
Wayne W
Messages: 385 Registered: October 2015 Location: Fallbrook, California, US...
|
Senior Member |
|
|
plasmo wrote on Sat, 21 August 2021 19:04I, too, need help.
extract mecparts.lbr with LU310.com to drive A
I modified ZmodemWinSize=4096
My hardware is ZRC with 14.7MHz clock running a version of ROMWBW that loads ROM & RAM contents to 2meg DRAM. The serial port is emulated 68B50.
When run ZMP, I get:
Initializing port ...
Unable to initialize port A
Hi Bill,
I think the ZRC has just a single serial port, right? ZMP requires that the communication port be different from the console port. It looks like Phil has implemented the ZMP serial driver so that communication port A is actually the second serial port in the system. Port B would be third serial port. So, I suspect the initialization error is simply that there is no serial port there.
@Phil: It looks like ZMP has some concept for choosing the communication port, but I was unable to figure it out. Do you know how to choose ZMP port B, etc.?
Thanks,
Wayne
|
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9033 is a reply to message #9032] |
Sun, 22 August 2021 03:46   |
b1ackmai1er
Messages: 396 Registered: November 2017
|
Senior Member |
|
|
This is the original Ron Murray zmp15 with the romwbw overlay that supports port switching.
This does not work for me either. overlay may be slightly different to original one I posted.
Regards Phil.
Edit:removed - still had debug code in it. will reupload later.
[Updated on: Sun, 22 August 2021 04:22] Report message to a moderator
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9034 is a reply to message #9029] |
Sun, 22 August 2021 07:01   |
 |
Wayne W
Messages: 385 Registered: October 2015 Location: Fallbrook, California, US...
|
Senior Member |
|
|
b1ackmai1er wrote on Sat, 21 August 2021 18:15I had tried these settings on my machine
ZmodemDataLen=128
ZmodemWinSize=4096
which improved but did not resolve the issue.
I tried swapping the CIO order but that is giving me some weirdness, so it looks like an issue with my machine/configuration.
Hmmm... that's disappointing. I think you said you are using your USB-FIFO interface. I am going to try some other systems with different serial hardware and see if anything changes for me. I was using my Mark IV system for testing. The console was on the first ASCI port. I used John Coffman's 4 port serial board for the communication port. I hacked the proper port value into the overlay to achieve this.
b1ackmai1er wrote on Sat, 21 August 2021 18:15Did you want submit ass an app or as a build package for romwbw?
I think I would prefer to have a build package. Similar to the way that XM is built. If I understand correctly, it will requite Hi-Tech C, right? That will will require some work because it probably means adding some files to the Tools/zx/cpm/... directories.
Before submitting a pull request, could you describe what is needed?
Thanks,
Wayne
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9035 is a reply to message #9032] |
Sun, 22 August 2021 07:08   |
 |
Wayne W
Messages: 385 Registered: October 2015 Location: Fallbrook, California, US...
|
Senior Member |
|
|
b1ackmai1er wrote on Sun, 22 August 2021 02:06The version of zmodem I have attached is https://github.com/mecparts/zmp which is re-implementation of zmp based on the last available code release of Ron Murray's zmp.
One of the changes in this reimplemetation is that it does not support multiple ports. i.e. it only supports console and one comm. port.
Ah, OK, that explains it. I saw the setport routine in the overlay, but no way to use it and it did not seem to be getting invoked. It was confusing.
b1ackmai1er wrote on Sun, 22 August 2021 02:06The driver still supports ability to switch ports (Two comm. ports - A & B) and can be used with the original zmp but both versions do require a separate comms. port for the transfer, separate to the console.
OK. It is odd that the functionality was dropped. I think it is important to have such functionality. However, I am worried about losing the latest updates in the code. I don't suppose the serial port switching could be crafted back into the lastest? Also, I think there is a bit more complication to this. The console is not guaranteed to be on HBIOS unit Char 0. ZMP should use the current console unit for the console (which I think it should automatically) and then allow using any other port for communications. This means comparing the requested port with the current console unit and disallowing the use of the console unit. I can do this if you like.[/quote]
This is great work. Thanks Phil.
-Wayne
|
|
|
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9039 is a reply to message #9037] |
Sun, 22 August 2021 11:56   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
Wayne W wrote on Sun, 22 August 2021 08:13b1ackmai1er wrote on Sun, 22 August 2021 02:06
So you need two serial ports for this to work.
This is really testing my memory, but I thought I saw that there was a variant of ZMP that was specifically intended for "dial in" operation. This would mean that it would be launched from and use the console port. It would not require the second serial port.
Have you seen such a thing? I may go looking for it later. I assumed it used the same overlay structure, so would be easy to adapt your current work.
Thanks,
Wayne
ZRC only has one serial port so I'm interested in the version of ZMP that use the console to transfer files. Since there are RC2014 users running ROMWBW with Z80, 68B50 and 512KRAM_ROM boards, ZMP that uses console is of interest to the RC2014 community. Having said that, I also have Z80+SIO+512KRAM_ROM setup to try out ZMP.
Bill
|
|
|
|
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9191 is a reply to message #9040] |
Tue, 12 October 2021 04:13   |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
agn453 wrote on Mon, 23 August 2021 01:37Wayne W wrote on Mon, 23 August 2021 00:13b1ackmai1er wrote on Sun, 22 August 2021 02:06
So you need two serial ports for this to work.
This is really testing my memory, but I thought I saw that there was a variant of ZMP that was specifically intended for "dial in" operation.
Wayne,
My ancient memory was sparked...
The remote version of Ron Murray's Z-Modem was called RZMP - and it required BYE support.
You can find it on the Walnut Creek CD for CP/M - look for rzmp16.lbr
Tony
Hi
Has anyone tried RZMP on CP/M? If so, how did it work? Here is a link for the library file
http://www.retroarchive.org/cpm/cdrom/JSAGE/ZNODE3/MODEM/RZM P16.LBR
Thanks, Andrew Lynch
|
|
|
Re: xmodem-1K, ymodem, or zmodem [message #9192 is a reply to message #8912] |
Tue, 12 October 2021 04:27  |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
edzard wrote on Wed, 28 July 2021 11:11Hello Andrew,
There is a program called FIFOPIPE. It's developed by William Sowerbutts.
I never used it (but want too, when I get my Z80 up-and-running).
Don't know if it works standalone of in conjunction with his USB FIFO board.
https:// www.retrobrewcomputers.org/doku.php?id=boards:ecb:usb-fifo:s tart
Best regards,
Edzard
Hi
Has anyone used this USB FIFO board? What was the transfer speed given all the other constraints of the system such as software, hardware, etc.? The wiki says it is an 8 bit clean path and ignores UART settings. Does anyone know what are the actual transfer speeds? I presume it is much faster than 9600 bps.
I am wondering if this board or something similar to it should be ported to the Z80 MBC system and if it would be better than existing solutions.
Thanks, Andrew Lynch
|
|
|
Current Time: Mon Mar 24 21:32:59 PDT 2025
Total time taken to generate the page: 0.04006 seconds
|