Programs for file transfering for CP/M 2.2

1,753 views
Skip to first unread message

Sergei Kovalenko

unread,
Jan 15, 2022, 2:02:22 PM1/15/22
to rc201...@googlegroups.com
Hi All,

I have a plain CP/M 2.2 configuration (no RomWBW).
While I am struggling with DOWNLOAD.COM, I am curious what other options are available to send a file from a computer to the RC2014 board?
Please advise, and if possible, please provide related links.

Thank you in advance!

Sergei

Spencer Owen

unread,
Jan 15, 2022, 2:07:49 PM1/15/22
to rc201...@googlegroups.com
Hi Sergei,

There is an UPLOAD . COM program to do that. I just using my mobile phone at the moment, but I'll send you a link to it tomorrow when im back at my computer.

Cheers

Spencer 

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/PH0PR07MB90625CCE1474795F7B7D28A3FC559%40PH0PR07MB9062.namprd07.prod.outlook.com.

Pellatonian

unread,
Jan 16, 2022, 8:16:38 AM1/16/22
to RC2014-Z80
I use PCPUT.COM / PCGET.COM on RC2014 Pro and also the Mini with CP/M enhancement. It implements XMODEM. Very reliable at 115200 over the USB serial port. Works OK too over my home LAN or WiFi, though there are very occasional glitches due, I think, to LAN contention. Faster on the USB serial connection.

I always use a BIOS with serial interrupts turned off. Not sure if it would work on a system using interrupts.

Spencer Owen

unread,
Jan 16, 2022, 10:21:44 AM1/16/22
to rc201...@googlegroups.com
Hi Sergei,

I've moved UPLOAD . COM on to GitHub so that it's easier for people (including me!) to find.

This works the same as DOWNLOAD . COM but opposite.  So it will take a file on your RC2014 and convert it in to a pkg file on the screen (you can copy & paste this in to Notepad, or set your terminal software to create a file).  This pkg file can be easily restored to your RC2014 directly from there, or ese there is then an online unpackaging utility here https://rc2014.co.uk/fileunpackage/

Hope that helps, but let us know if you have any other questions

Cheers

Spencer

Sergei Kovalenko

unread,
Jan 16, 2022, 1:08:22 PM1/16/22
to rc201...@googlegroups.com
Thank you for your advice!

Do I need a SIO/2 Serial Module or PCPUT.COM / PCGET.COM work with a Standard Serial I/O board as well? 

Pellatonian

unread,
Jan 16, 2022, 3:03:49 PM1/16/22
to RC2014-Z80
I use a version of PCGET/PCPUT on the RC2014 PRO which uses an SIO/2 board at addresses 080h and 082h.  On the RC2014 Mini it uses the inbuilt Motorola ACIA at address 080h. Both talk directly to the serial chips so I'm not sure they would work if interrupts were enabled for the serial device.

If either match your system I could send a zip file with the programs.

rwd...@gmail.com

unread,
Jan 17, 2022, 1:57:11 PM1/17/22
to RC2014-Z80
Can you publish the source for these?
Apart from a desire to use it on standard RC2014 ACIA & SIO/2, I would like to get it to work with Bill's QuadSer (https://www.retrobrewcomputers.org/doku.php?id=builderpages:plasmo:quadserplcc)
Cheers
Richard

Pellatonian

unread,
Jan 17, 2022, 2:50:01 PM1/17/22
to RC2014-Z80

Probably the best thing is to point at the original, which was made by Mike Douglas from XMODEM developed by Ward Christensen.  My copies had been further butchered over the last 5 years to the extent that I had forgotten that the original version had been written for the Altair 2SIO board. It should be pretty easy to modify. After a look around I rediscovered the originals here:


Please note that the program is sensitive to the speed of the CPU since it uses wait loops to implement timeout checking. It is unlikely to play nicely with a BIOS which does interrupt-driven serial I/O.

Another very similar program was developed by Wayne Warthen to run under RomWBW and CP/M called XM.COM. As I remember it, it does run under RomWBW with interrupts, since RomWBW provides an orderly means for a user program to control the I/O mode of the serial devices. It can be found on his Github:

Bernard Oates

unread,
Jan 17, 2022, 4:56:10 PM1/17/22
to RC2014-Z80
Just released Zmodem for CP/M 2.2 and CP/M 3 based on zmtx-zmrx source code

Receive and transmit programs with wildcard expansion

Includes full C source code at github repo below

https://github.com/codesmythe/zmtx-zmrx

rwd...@gmail.com

unread,
Feb 9, 2022, 4:43:08 PM2/9/22
to RC2014-Z80
Okay, what's the secret of getting ZMRC to work?

I run up zmrx under cp/m, and I have tried send via zmodem from teraterm and zoc under Windows, and Minicom send file  with zmodem  under Linux and zmrx just sits there dormant.

Tested on zzrcc system with romwbw, cpm3 at 115200 8N1

Can you please give a working example? None of the doc seems to mention the PC side, and that is obviously critical.

Cheers
Richard

Wayne Warthen

unread,
Feb 9, 2022, 6:39:27 PM2/9/22
to RC2014-Z80
On Wednesday, February 9, 2022 at 1:43:08 PM UTC-8 rwd...@gmail.com wrote:
Okay, what's the secret of getting ZMRC to work?

I run up zmrx under cp/m, and I have tried send via zmodem from teraterm and zoc under Windows, and Minicom send file  with zmodem  under Linux and zmrx just sits there dormant.

Tested on zzrcc system with romwbw, cpm3 at 115200 8N1

Can you please give a working example? None of the doc seems to mention the PC side, and that is obviously critical.

Well, let me start by saying that zmrx and zmtx have not had significant testing under RomWBW yet. 

The specific test I ran was under RomWBW CP/M 3.  My serial port was a Z180 built-in ASCI port set to 38400 baud.  On the PC side, I used Tera Term under Windows.  I issued the command "zmrx" on the CP/M side, then I went to Tera Term and used it's ZModem transfer to select and send a single file.  This worked without incident.

Were you using the built-in Z280 serial port?  I would definitely suggest lowering the baud rate to see if it works.  zmrx is using CP/M character I/O which means that there is a lot of overhead and the interrupt handler may not be able to keep up at 115200 baud.  I would start with 9600 baud.

I am going to try my zzrcc in a little while and will post back my results shortly.

Thanks,

Wayne

Wayne Warthen

unread,
Feb 9, 2022, 6:57:55 PM2/9/22
to RC2014-Z80
On Wednesday, February 9, 2022 at 3:39:27 PM UTC-8 Wayne Warthen wrote:
On Wednesday, February 9, 2022 at 1:43:08 PM UTC-8 rwd...@gmail.com wrote:
Okay, what's the secret of getting ZMRC to work?
I am going to try my zzrcc in a little while and will post back my results shortly.

OK, kind of what I expected.  zmrx does not work on my zzrcc at the default 115200 baud using the built-in Z280 serial port.  It seems to do nothing at all.  I lowered the baud rate to 9600 using the RomWBW MODE command and then it worked fine.

The zzrcc does not (normally) support hardware flow control on it's built-in serial port, so it is very easy to overrun the serial input buffer.

Thanks,

Wayne 

Bill Shen

unread,
Feb 9, 2022, 8:07:23 PM2/9/22
to RC2014-Z80
Wayne,
ZZRCC does have hardware handshake, but you may recall that the overhead of mode 3 interrupt is such that XM file transfer at 115200 was laborious.  I found it necessary to lower the serial baud to 57600 with "i 0 18" command which then transfer file faster than 115200.  I tried again on my ZZRCC just now and verify XM file transfer with handshake is faster at 57600 than 115200.  I can't get ZMRX to work on ZZRCC even at 9600 with or without handshake.  It would transfer about 4K bytes and then hang.
  Bill

Wayne Warthen

unread,
Feb 9, 2022, 8:49:03 PM2/9/22
to RC2014-Z80
On Wednesday, February 9, 2022 at 5:07:23 PM UTC-8 Bill Shen wrote:
ZZRCC does have hardware handshake, but you may recall that the overhead of mode 3 interrupt is such that XM file transfer at 115200 was laborious.  I found it necessary to lower the serial baud to 57600 with "i 0 18" command which then transfer file faster than 115200.  I tried again on my ZZRCC just now and verify XM file transfer with handshake is faster at 57600 than 115200.  I can't get ZMRX to work on ZZRCC even at 9600 with or without handshake.  It would transfer about 4K bytes and then hang.

Sorry Bill.  I deal with a lot of different systems and my memory is marginal.

When I initially tried 115200 baud, I had hardware flow control disabled on Tera Term and, of course, the transfer attempts completely failed.  However, I just tried it again with hardware flow control enabled at 15200 baud.  I actually had no trouble receiving multiple files.  It looked like there might have been some packet retries toward the end of the transfers, but it completed without error.

Perhaps zmrx works better depending on the PC side software.  I don't know what you were using Bill, but probably a Linux program.

Thanks,

Wayne

Bill Shen

unread,
Feb 9, 2022, 9:22:48 PM2/9/22
to RC2014-Z80
Wayne,
I'm amazed you can even remember all the various hardware & software ROMWBW options!

I'm glad to hear you are able to run ZMRX at 115200.  I'm using an old Windows Vista machine as my lab computer with TeraTerm as ther terminal emulator.  Maybe Zmodem needs more throughput than the old Windows Vista machine can provide.  I'll try a more modern Windows 10 laptop.
  Bill

Phillip Stevens

unread,
Feb 10, 2022, 5:58:58 AM2/10/22
to RC2014-Z80
Rob wrote:
Just released Zmodem for CP/M 2.2 and CP/M 3 based on zmtx-zmrx source code

Receive and transmit programs with wildcard expansion
Includes full C source code at github repo below
https://github.com/codesmythe/zmtx-zmrx

Thanks Rob.

Since I note that you're using z88dk to build these programs I was intrigued to try them out.

I've built a version for Z80 and have tested it / them on CP/M-IDE.
I've also built a version for 8085 and have tested it / them on the equivalent CP/M-IDE for 8085.

The Z80 build uses a SIO/2 serial at 115200 8n2, and the 8085 build uses the ACIA serial also at 115200 8n2.

The PC side is Linux moserial 3.0.12, which supports both xmodem, and zmodem.
moserial does not implement the xmodem or zmodem protocols directly. It relies on the standard rz and sz utilities to send and receive data.

I've found that the timeouts are set really long, compared to the XMODEM alternative (which I normally use).
Which means that the ZMRX transfer takes a long time to start up, or perhaps there's a back-off happening.
And throughput is substantially lower than XMODEM too. 

For example the ZMRX speed (calculated on the PC side) seems to be about 2900 bits/s for large transfers.
I guess that the throughput is partially because of the complexity of zmodem vs the xmodem protocol, and partially because of the C code vs assembly performance difference.
Perhaps some tuning would help here.

The ZMTX performance is much better though, and seems to run much like line rate.

One thing I wonder about is a debug output generated by ZMRX.
Not sure where it is coming from, or what it means.

A>zmrx

**B0100000027fed4


A>


Anyway. Great to see these working straight out of the box.

Cheers, Phillip

Wayne Warthen

unread,
Feb 10, 2022, 12:01:57 PM2/10/22
to RC2014-Z80
On Thursday, February 10, 2022 at 2:58:58 AM UTC-8 Phillip Stevens wrote:
I've found that the timeouts are set really long, compared to the XMODEM alternative (which I normally use).
Which means that the ZMRX transfer takes a long time to start up, or perhaps there's a back-off happening.
And throughput is substantially lower than XMODEM too. 

When I use ZModem via Tera Term on the PC-side, a ZMRX transfer starts immediately after selecting the files.  I'm not quite sure what the difference is, but there certainly seems to be some variation in the way these protocols are implemented.
 
One thing I wonder about is a debug output generated by ZMRX.
Not sure where it is coming from, or what it means.

A>zmrx

**B0100000027fed4


A>

That is not actually debug output.  It is from the protocol and is normal startup.  I don't know offhand why it does this.  Might be an initial NAK to help kick off the protocol if the other side is ready to start.

-Wayne

Rob Gowin

unread,
Feb 10, 2022, 12:23:35 PM2/10/22
to RC2014-Z80
On Thursday, February 10, 2022 at 4:58:58 AM UTC-6 Phillip Stevens wrote:
Someone wrote:
Just released Zmodem for CP/M 2.2 and CP/M 3 based on zmtx-zmrx source code

Receive and transmit programs with wildcard expansion
Includes full C source code at github repo below
https://github.com/codesmythe/zmtx-zmrx

Thanks Rob.

Since I note that you're using z88dk to build these programs I was intrigued to try them out.

I've built a version for Z80 and have tested it / them on CP/M-IDE.
I've also built a version for 8085 and have tested it / them on the equivalent CP/M-IDE for 8085.

The Z80 build uses a SIO/2 serial at 115200 8n2, and the 8085 build uses the ACIA serial also at 115200 8n2.

The PC side is Linux moserial 3.0.12, which supports both xmodem, and zmodem.
moserial does not implement the xmodem or zmodem protocols directly. It relies on the standard rz and sz utilities to send and receive data.
 
Thanks everyone for taking ZMTX/ZMRX out for a spin. And thanks Wayne for including it in (dev) ROMWBW in its youthful state. :-)
 
I've found that the timeouts are set really long, compared to the XMODEM alternative (which I normally use).
Which means that the ZMRX transfer takes a long time to start up, or perhaps there's a back-off happening.
And throughput is substantially lower than XMODEM too. 

For example the ZMRX speed (calculated on the PC side) seems to be about 2900 bits/s for large transfers.
I guess that the throughput is partially because of the complexity of zmodem vs the xmodem protocol, and partially because of the C code vs assembly performance difference.
Perhaps some tuning would help here.

The ZMTX performance is much better though, and seems to run much like line rate.

I’ve done this initial port of the code to CP/M. While I think the basic functionality is there and working, it is true that the performance could be better. As Wayne mentioned, it does all character I/O via the CP/M BIOS (as opposed to direct UART access), which is probably the slowest way to do things. And I have not put any effort into improving/optimizing the code for better throughput. I hope to do that a some point, but have other projects higher in the queue, so it could be a while.

On the long time to start the transfer, I do think there is backoff happening as the PC side ZMODEM sends it first packet full blast (often 32K bytes) and the CP/M side says "Uncle!" and tells the sender to back off. If you have access to the PC-side sz command line (not all terminal programs allow this), you can play with the ''--windowsize" parameter to reduce the window size to something like 8192. This can improve throughput, but not always. Another sz parameter to play with is "--framelen" (say 1024) which makes the sender wait for an ACK per packet and makes the protocol more XMODEM 1K-like. The real answer though is to rework the ZMRX C code.
 
One thing I wonder about is a debug output generated by ZMRX.
Not sure where it is coming from, or what it means.

A>zmrx

**B0100000027fed4


A>


ZM*X defaults to using the console port for transfers. (You can use -x 1 to do transfers via the AUX port on CP/M 3.) So this string is the header of the first ZMODEM protocol frame of the transfer via the console port. Some terminal programs can be configured to recognize this string and start the transfer automatically. For example, for Tera Term if you edit your TERATERM.INI [1][2] and set

ZmodemAuto=on
ZmodemRcvCommand=a:zmrx

then Tera Term can start the transfer by itself (popping up file dialogs as needed). You’ll need to set the path to zmrx to the proper value for your system.
 
Anyway. Great to see these working straight out of the box.

Cheers, Phillip

Thanks. Anyone feel free to contribute to the code or report issues over at https://github.com/codesmythe/zmtx-zmrx.

-- Rob


[Note that I did not post the release announced that Phillip quoted (i.e., I’m not xag…@yahoo).]

Richard Deane

unread,
Feb 10, 2022, 12:42:16 PM2/10/22
to rc201...@googlegroups.com
ZOC (terminal package under windows. also with a Mac implementation) starts up the zmodem dialog under Windows immediately after ZMRX is started on CP/M,  that means the usage is quite simple.

Richard

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+...@googlegroups.com.

Bill Shen

unread,
Feb 10, 2022, 7:34:17 PM2/10/22
to RC2014-Z80
F20BD704-5C2B-4367-B7E2-49C790363684.jpegI tried ZMRX again on my windows10 laptop using TeraTerm.  I’m able to transfer at 115200, but I see lots of retries slowing down effective rate to few hundred bytes/second.  Retries is strange because ZZRCC is directly plugged into the laptop’s USB port as shown in the picture below.  Well, at least I can do file transfer, I may need to find a suitable serial baud to minimize retries.
  Bill

Wayne Warthen

unread,
Feb 11, 2022, 11:51:39 AM2/11/22
to RC2014-Z80
On Thursday, February 10, 2022 at 4:34:17 PM UTC-8 Bill Shen wrote:
I tried ZMRX again on my windows10 laptop using TeraTerm.  I’m able to transfer at 115200, but I see lots of retries slowing down effective rate to few hundred bytes/second.  Retries is strange because ZZRCC is directly plugged into the laptop’s USB port as shown in the picture below.  Well, at least I can do file transfer, I may need to find a suitable serial baud to minimize retries.

Yeah, I was also seeing retries at 115200 baud.  The Z280 built-in serial port has virtually no FIFO at all.  At 115200 baud, the interrupt handler itself is probably right on the verge of being too slow to keep up.

Thanks,

Wayne 

ladislau szilagyi

unread,
Feb 12, 2022, 3:32:31 AM2/12/22
to RC2014-Z80
Hi all,

Here is how I copy files (text & binaries) from my laptop to the RC2014.

The framework is based on the Grant Searle's DOWNLOAD, with some modifications that bring limitations but also advantages.

First of all, the limitations: I can only handle files up to (roughly) 50KB on any RC2014, and up to 512KB on RC2014's provided with the 512RAM+512ROM memory board.

Now, the advantages: for serial speed, I use always 115200, and I do not need to set any delay.

It works very fast because on RC2014 the characters are received without using the BIOS, are stored to memory, and only after receiving all of them, the disk file is written.

The use scenario:

On my laptop, on Windows, I installed Udo Munk's Z80SIM (via CygWin).

I open CP/M on Z80SIM (the "source").

Here, I use FILE2TXT.COM to convert several CP/M files to a "download" hex format file.

FILE2TXT accepts as parameter the name of a text file containing the list of files to be processed.

Example: list.txt contains the list of the files to be converted, e.g.:

        file1.com
        file2.h

FILE2TXT builds a file named "download.txt", containing, as text:

        file1.com
        :01AA00......>1035        (to be copy/pasted on the target)
        file2.h
        :2031.....>20AF                (to be copy/pasted on the target)

(for each file, the contents begin with a ':', then continues with the file's bytes, in hexa, and ends with '>' followed by a byte count an a checksum)

Then, I open TeraTerm, connect the RC2014 and start CP/M (the "destination")

Here, I use MYDW.COM:

        >mydw file1.com
                <copy & paste from download.txt the appropriate part>
        OK
        >mydw file2.h
                <copy & paste from download.txt the appropriate part>
        OK
        >

Byte count & checksum is verified (but I must confess that I never received such error messages...).

See https://github.com/Laci1953/RC2014-CPM/tree/main/DOWNLOAD for the source files of FILE2TXT & MYDW .

Ladislau

Bill Shen

unread,
Feb 12, 2022, 10:05:48 AM2/12/22
to RC2014-Z80
Normally I use arj.exe in Windows to compress multiple files into one binary image, use XMODEM to transfer the image to CP/M, and then use unarj.com to decompress.  XMODEM is fast and without file size limit.  I think I'll stick with XMODEM for now.
  Bill

ladislau szilagyi

unread,
Feb 14, 2022, 8:28:31 AM2/14/22
to RC2014-Z80
Hi all,

I improved the performance of MYDW.COM; for the RC2014's provided with SC108, I can now download files up to 114 KB.

That's a +64KB compared to the last version. On SC108, I use now also the second 64KB RAM bank to store the incoming characters. 

The download speed is not affected: it took 25 secs to download a 114KB file.

Therefore, FILE2TXT + MYDW can handle download of files:
- up to 50KB on any RC2014
- up to 114KB on SC108 RC2014
- up to 512KB on 512RAM SC2014  

The serials supported: ACIA,SIO, KIO.

Ladislau

ladislau szilagyi

unread,
Feb 15, 2022, 9:11:22 AM2/15/22
to RC2014-Z80
Hi Bill,
I do the same using ZIP (in WINDOWS) and UNZIP.COM (from Tony's https://github.com/agn453/UNZIP-CPM-Z80 ), but using MYDW. 
Just a curiosity, how many seconds / 100KB with XMODEM?
Ladislau


Pe sâmbătă, 12 februarie 2022, la 17:05:48 UTC+2, Bill Shen a scris:

Bill Shen

unread,
Feb 15, 2022, 10:45:16 AM2/15/22
to RC2014-Z80
XMODEM file transfer rate varies depending on CP/M BIOS implementation, handshake, CPU clock, and  serial baud. 

For ZZRCC (Z280, ROMWBW, 14.7MHz, 57600 serial, hardware handshake), it took 46 seconds to transfer 148K file, about 3.2KB/S.

For ZRC (Z80, ROMWBW, 14.7MHz, 115200 serial, hardware handshake), it took 41 seconds to transfer 148K file, about 3.7KB/S

For Simple80 (Z80, simple CP/M BIOS, 7.37Mhz, 115200 serial, no handshake), it took 22 seconds to transfer 148K file, about 6.7KB/S

Using higher CPU clock and no handshake, the XMODEM transfer can get to 8KB/S range with 115200 serial.  The disk write time becomes the limiting factor.
  Bill

ladislau szilagyi

unread,
Feb 15, 2022, 12:10:50 PM2/15/22
to RC2014-Z80
Ok Bill, I obtained a comparable performance (21 seconds for 100 KB) for a Z80 at 7.37 MHz ,  although I transfer 2 chars for each byte...
Ladislau

Phillip Stevens

unread,
Feb 16, 2022, 12:57:43 AM2/16/22
to RC2014-Z80
Interesting set of comparisons. I can sense an opportunity for shark jumping.
Soooo... some more figures for CP/M file transfer speed using XMODEM.

<sharkjump>

I've used a 1 MB (1,048,576 bytes) random data file as a basis, so that my hand timings can be fairly accurate.

What I find interesting is that despite the extra registers and instructions available on the Z80, there is no substantial performance difference between the 8085 and the Z80. I guess it should not be a surprise, as CP/M and XMODEM were written for 8080 so the hardware advantages of the Z80 are not fully utilised.

PC side is  Moserial 3.0.12
CP/M side is XMODEM 2.7

Serial settings of 115200baud 8n2 - hardware handshake.

CPU clock is 7.37MHz for both 8085 and Z80.

CP/M-IDE Z80-SIO2 - 1MB random data - send to PC - 246 seconds - 4.2kByte/s
CP/M-IDE Z80-SIO2 - 1MB random data - receive from PC - 294 seconds - 3.6kByte/s

CP/M-IDE 8085-ACIA - 1MB random data - send to PC - 247 seconds - 4.2kByte/s
CP/M-IDE 8085-ACIA - 1MB random data - receive from PC - 287 seconds - 3.6kByte/s

</sharkjump>

ladislau szilagyi

unread,
Feb 16, 2022, 1:34:26 AM2/16/22
to RC2014-Z80
Just a note: with MYDW, for a serial set at 115200 baud 8n1, my numbers (21 secs) were measured while sending 200KB chars to receive 100KB bytes  (hexa format of the file was sent via the serial, 2 chars per each byte).

So, while the "result" speed is 4.76 Kbyte /s (100 / 21), the serial speed was double : 9.52 Kbyte / s (200 / 21) ... that's roughly 115200  baud (some small time was spent copying the file to the CF).

That's because I just keep looping reading 2 chars from the serial & storing a byte to (low + up) 64KB RAM, and only after receiving all of them, I go writing to disk...

This means also that XMODEM degrades at (roughly) 50% the serial speed... normal, because of the protocol.

Interesting study, thanks Bill & Phillip !

Ladislau
 

Bill Shen

unread,
Feb 16, 2022, 8:51:15 AM2/16/22
to RC2014-Z80
That reminds me I do have a 8085 CP/M design running at 7.37MHz, G8PP+8085.  It has been a while so I struggled a bit to get it up and running.  It does have CP/M and XMODEM installed.  I couldn't get XMODEM receive to work, but I am able to send file to PC.  This is the send speed:

CP/M - G8PP - P8085AH-2 - 1MB data send to PC - 150 seconds - 6.7KB/S

  Bill
G8PP_8085.jpg

Bill Shen

unread,
Feb 16, 2022, 9:45:43 AM2/16/22
to RC2014-Z80
It is possible to run Z80 to 29.5MHz.  I know that because I've successfully built a dozen ZRCC v1.3.  It it fast Z80 using fast DOM disk so here is XMODEM transfer rate:
CP/M2.2, ZRCCv1.3, Z80, 29.5MHz,1MB data send to PC, 115 seconds, 8.8KB/S
CP/M2.2, ZRCCv1.3, Z80, 29.5MHz, 1MB received from PC, 129 seconds, 7.8KB/S

ZRCC v1.3 uses a DOM (disk-on-module) for storage.  I have no dedicated DOM writer so I have to load CP/M files serially.  Done it for dozen and dozen of DOM, so much so I have a TeraTerm macro file for it.  So I think there is a related "shark jumping" exercise that's closer to the intent of the original poster's question and is a question asked by many beginners in different ways:  How to load CP/M files SERIALLY into a blank disk?  The follow up "shark jumping" question is "How fast can CP/M system files serially loaded into a blank disk".
  Bill

Bill Shen

unread,
Feb 16, 2022, 10:29:46 AM2/16/22
to RC2014-Z80
Ladislau,
Most Z80 monitor (include the monitor in ROMWBW) have an Intel file loader which reads in Intel Hex in ASCII, store it in RAM and does it quickly at 115200 similar to your MYDW except Intel hex format has additional header and checksum overhead.  So the data transfer rate of the Intel file loader is slightly lower than your MYDW.  However, intel hex format defines record type for memory larger than 64K, so if the Z80 system has large RAM used for RAM disk (like ROMWBW) and an extended Intel hex format loader that can load data into the RAM disk, then it is possible to preload the RAM disk with files and directory at rate comparable to MYDW.  The content of the RAM disk can be copied to non volatile mass storage once booted into CP/M.  This was my approach with my first CP/M machine, a 68000 running CP/M68K with 8 meg RAMdisk.
  Bill

Alan Cox

unread,
Feb 16, 2022, 11:27:28 AM2/16/22
to rc201...@googlegroups.com
For the Z180 systems you can also use SPI. A bus pirate or similar on the PC end and the SC126 CSIO lets you do pretty fast SPI for 8bit sized files. It would be an interesting exercise to write a fake SD card for it. There's also a set of stuff for running CP/NET over WizNET ethernet module wired to the CSIO SPI and the reset line.

I mostly just use the emulators 8)

Alan

Phillip Stevens

unread,
Feb 17, 2022, 9:19:41 AM2/17/22
to RC2014-Z80
Someone wrote:
Just released Zmodem for CP/M 2.2 and CP/M 3 based on zmtx-zmrx source code

Receive and transmit programs with wildcard expansion
Includes full C source code at github repo below
https://github.com/codesmythe/zmtx-zmrx

Since I note that you're using z88dk to build these programs I was intrigued to try them out.

I've built a version for Z80 and have tested it / them on CP/M-IDE.
I've also built a version for 8085 and have tested it / them on the equivalent CP/M-IDE for 8085

Rob,
I've since added some simple stubs to z88dk CP/M time support for 8085, and for CP/M 2.2.
So I updated the PR to just add a 8085 make file, and to make a few tweaks to printing (as z88dk classic library is a bit particular about format conversion).
Cheers, Phillip 
Reply all
Reply to author
Forward
0 new messages