Program for transferring files to/from CP/M device

594 views
Skip to first unread message

Gary Hammond

unread,
Jun 16, 2026, 4:42:41 AMJun 16
to RC2014-Z80
I have created an application for transferring files to and from my PC to a CP/M device. I have tested so far with an RC2014 computer with a hodge podge of cards, an SC131 Elite and a dual port eZT-RCB under Windows 11 and Linux Mint. It *should* work for Mac but has not been tested.

The program manages the dual ports of the eZT-RCB nicely allowing for easy copying backwards and forwards which is the main reason I created the app in the first place. No more having to juggle between 2 open TeraTerm windows.

Feature list is:
  • Browse host and remote (CP/M) file listings side by side, with a draggable splitter.
  • Transfer single or multiple files in both directions over X-Modem.
  • Manage files on both sides from a right-click context menu: rename, delete, and view/edit (host) or view (remote).
  • Built-in non-modal serial terminal for issuing CP/M commands.
  • Separate terminal and transport serial ports (which may be the same physical port).
  • Configurable serial parameters and CP/M commands via Serial and General config dialogs, saved/loaded as JSON.
  • Remembers and auto-reloads the last-used configuration on startup, and persists each window's size and position between runs.
  • Material Design theme that follows the host OS light/dark mode.
  • Multi-language user interface (12 languages, selectable from Config > Language): English, Spanish, French, German, Italian, Dutch, Polish, Greek, Mandarin, Cantonese, Korean — and Pirate.


Enjoy!

Ed Silky

unread,
Jun 16, 2026, 12:24:47 PMJun 16
to rc201...@googlegroups.com
Sounds interesting, I'll try it out.
-Ed

--
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, visit https://groups.google.com/d/msgid/rc2014-z80/64a4f1d4-ad76-4fe1-837b-c436e59f7c2cn%40googlegroups.com.

Wayne Warthen

unread,
Jun 18, 2026, 1:15:17 PMJun 18
to RC2014-Z80
Hi Gary,

Working pretty well for me.  I am using a RomWBW CP/M system and configured it to use the RomWBW XM app for transferring files.  I was able to manage directories on both sides including deleting files.  Transferring and viewing files also worked fine.  Easy to transfer multiple files!  Just a couple nits:
  • Attempting to transfer a file to CP/M when the file already exists is not handled gracefully.
  • Attempting to transfer a file with a name that exceeds the CP/M 8.3 constraints is not handled gracefully.
In both cases, the transfer eventually fails rather than detecting a filename issue.

Thanks, Wayne

Gary Hammond

unread,
Jun 19, 2026, 2:12:12 AMJun 19
to RC2014-Z80
Hi Wayne,
Thanks for testing!
I have fixed the nits (v2.10.0):
- You get the standard overwrite/skip/cancel with option to apply to all future conflicts when transferring files.
- When transferring from host to remote, filenames not meeting CP/M 8.3 naming are prompted to be renamed or cancel the transfer.
Also added some extra features such as drag and drop, file transfer history, filters and sorting on the file lists.
Personally it's the multi-file transfer that makes it worth using for me.
I wonder if a 'sync' feature would be useful i.e., sync all files from host to remote (restore) and remote to host (backup). This would be an exact copy of the CP/M disk in a folder on the host. This is what I am mainly using it for except manually copying the files. 
Cheers,
Gary

Wayne Warthen

unread,
Jun 19, 2026, 7:07:54 PMJun 19
to RC2014-Z80
Hi Gary,

Your updates worked nicely.  I agree that the ability to "batch" transfer files is very useful.

Thank you for a very nice tool!

-Wayne

Gary Hammond

unread,
Jun 20, 2026, 11:43:58 PMJun 20
to RC2014-Z80
I have updated the program with some bug fixes and enhancements. 
New feature in 2.12.0 is backup and restore which mirrors a remote disk to the host (backup) or a directory on the host to the remote disk (restore). This is a destructive process in either direction as it is mirroring (exact copy) as opposed to syncing. This is a 1 button press to copy the contents to/from a remote disk.
There is some improved handling in the terminal for backspaces. Control characters can be sent using the caret symbol and character i.e., ^C for Control-C.
General UI/UX tidy up. Trying to be consistent with cancel on the left, OK/Apply on the right.

Gary Hammond

unread,
Jun 23, 2026, 3:51:10 AMJun 23
to RC2014-Z80
I have updated the program to include XMODEM 1K transfers, added serial port timeout configuration and fixed a number of small issues.
Version is now 2.13.0.

Gary Hammond

unread,
Jun 27, 2026, 6:13:06 AMJun 27
to RC2014-Z80
Added a check on connect, to load the remote files window with the current drive that is active when the app connects to the remote computer.
Added the option to run a boot script on connect if the app doesn't see the CPM drive prompt. The script is in the general config. How to use it is in the manual (help > manual). An example config that uses the boot script is RC2014_mini.json.
Version is now 2.16.0
(For those that may have cloned the repo, there is a ton of refactoring of the requirements, workflows, code and tests)

Richard Deane

unread,
Jun 27, 2026, 7:07:25 AMJun 27
to rc201...@googlegroups.com
It isn't clear whether it requires two serial ports or whether it can work on systems with just one. Please can you clarify.
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.
Message has been deleted

Gary Hammond

unread,
Jun 27, 2026, 4:27:07 PMJun 27
to RC2014-Z80
The app works with both single and dual port computers. To use on a single port computer, set both comm ports in Serial > Config to the same comm port. This is how the app recognises the difference between a single port and dual port computer.

There is a manual in (Help > Manual) that should be able to answer questions like this. If you find that the manual doesn't cover your question, let me know.

Richard Deane

unread,
Jun 27, 2026, 5:44:40 PMJun 27
to rc201...@googlegroups.com
thank you. I shall try it with my sc131
Richard

Gary Hammond

unread,
Jul 6, 2026, 9:37:31 PMJul 6
to RC2014-Z80
Another update...now at 2.25.0
The terminal window has been completely re-vamped. It is now a fully interactive terminal with VT100/VT52/ADM-3a emulation, font selection, up to 10 programmable macro's, copy/paste etc. 
There are also lot's of minor usability tweaks.

Phil Pin

unread,
Jul 7, 2026, 9:41:06 AM (14 days ago) Jul 7
to RC2014-Z80
I just tried the latest version. This is excellent for CP/M.  Thanks, Phil A

Gary Hammond

unread,
Jul 7, 2026, 5:16:34 PM (13 days ago) Jul 7
to RC2014-Z80
Thanks Phil.

There is a newer version 2.26.4 which has no new features but is a collection of niggling bug fixes and minor UI fixups. If you had a slower Z80 based machine, there was a bug around getting a 'drive not found' error after transferring files which has been fixed.
I now have 5 of my RomWBW based CP/M machines hooked up for the integration testing so it found some differences around timing between the slow Z80 hardware, the faster Z180 hardware, and the eZ80 based hardware. It takes around 50 minutes now to do a full hardware in the loop test run, but is good at finding issues.
Also my version of RomWBW was back in the 3.0 days so am slowly upgrading my hardware. I think I will leave at least one system on the old ROM for backward compatibility testing.

r4r...@gmail.com

unread,
Jul 8, 2026, 6:20:03 AM (13 days ago) Jul 8
to RC2014-Z80
Hi,  

Will the program work from a Windows 11 PC through the TeraTerm console to an Altair 8800c computer?  



Does the program work with the AltairZ80Sim.exe?  

I would need a Windows.exe version of the program.  I do not have compilers etc. on my PC.  



.

Gary Hammond

unread,
Jul 9, 2026, 5:37:10 AM (12 days ago) Jul 9
to RC2014-Z80
Hi,
The program will work on Windows 11, but does not use the TeraTerm console. It has it's own built in console for basic troubleshooting and interaction with the remote computer. You can use either TeraTerm OR CPM_FM but not both at the same time.
I don't have an Altair8800c so cannot test the app with one. There is no reason the app shouldn't work if you can already communicate with the Altair using TeraTerm.
The app isn't designed to work directly with Sims, unless the sim has a way of using a virtual com port.
I have put a zipped Windows exe on the github page in the package/ folder. https://github.com/turbo-gecko/CPM_FM/tree/main/package
Cheers,
Gary

Richard Deane

unread,
Jul 10, 2026, 9:28:18 AM (11 days ago) Jul 10
to rc201...@googlegroups.com
Trying to build CPM-FM from github of yesterday on Linux Fedora 44 looks as though it builds ok but when I run it from console I see : rwdeane@UNKNOWN:~/CPM_FM/dist$ ./cpm-fm
Illegal instruction        (core dumped) ./cpm-fm.
If I run as graphic it doesn't and I see no error message.
Fedora has Python 3.14

The machine is an HP N40L Microserver with  AMD64 processor and instruction set.

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.

Richard Deane

unread,
Jul 10, 2026, 11:09:46 AM (11 days ago) Jul 10
to rc201...@googlegroups.com
Re CPM-FM ;

I have identified a number of problems on Linux builds:
=============== fedora 44 =========================
Fedora 44 on AMD64 (N40L microserver)
Trying to build CPM-FM from github of yesterday on Linux Fedora 44 looks as though it builds ok but when I run it from console I see : rwdeane@UNKNOWN:~/CPM_FM/dist$ ./cpm-fm
Illegal instruction        (core dumped) ./cpm-fm.
If I run as graphic it doesn't and I see no error message.
Fedora has Python 3.14

============== linux mint ==========================
has python in virtual environments so it needs these commands to prepare python:
sudo apt install python3-venv -y
python3 -m venv .venv (running it in the CPM-FM git folder)
source .venv/bin/activate
pip install --upgrade pip
pip install -e .\[build\]
python build_dist.py

(.venv) rwdeane@ThinkCentre-M710q:~/CPM_FM/dist\$ ./cpm-fm  
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.  
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.  
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: linuxfb, xcb, minimalegl, vkkhrdisplay, wayland-brcm, wayland-egl, wayland, offscreen, minimal, eglfs, vnc.

Aborted (core dumped)
================ WSL Ubuntu ==========================
Prepare the Virtual environment as above
python build_dist.py

(.venv) rwdeane@Carouge:~/CPM_FM/dist\$ ls  
cpm-fm  
(.venv) rwdeane@Carouge:~/CPM_FM/dist\$ ./cpm-fm  
Failed to create wl_display (No such file or directory)  
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.  
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.  
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.  
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: linuxfb, xcb, eglfs, minimalegl, vnc, vkkhrdisplay, minimal, wayland-brcm, wayland-egl, wayland, offscreen.

Aborted (core dumped)
====================================================

Cheers 
Richard


On Thu, 9 Jul 2026 at 10:37, Gary Hammond <gfha...@gmail.com> wrote:

Gary Hammond

unread,
Jul 10, 2026, 4:25:08 PM (10 days ago) Jul 10
to RC2014-Z80

Richard Deane

unread,
Jul 10, 2026, 4:26:30 PM (10 days ago) Jul 10
to rc201...@googlegroups.com
Bad form to reply to my own email but I have resolved two problems:

1) To build cpm-fm on Linux Mint I needed to install libxcb-cursor-0 and do the python virtual environment setup. It launches to the graphic start screen with Host & Remote windows.

2) To build and run on Windows 11 WSL (Ubuntu) I had to update WSL to get what CoPilot described as WSLg.  The already built program then worked in graphics mode - Note: very small on my high res 4G screen, I expect it will need some font tweaking.

I have not found a way to resolve the build on Fedora 44, but I ensured that the libxcb stuff was installed and it still fails with the bad opcode

Richard

Richard Deane

unread,
Jul 10, 2026, 4:27:17 PM (10 days ago) Jul 10
to rc201...@googlegroups.com
crossed with my reply to my own , solved WSL & Linux Mint
still investigating Fedora a bit more

On Fri, 10 Jul 2026 at 21:25, Gary Hammond <gfha...@gmail.com> wrote:
--
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.

Gary Hammond

unread,
Jul 10, 2026, 4:32:28 PM (10 days ago) Jul 10
to RC2014-Z80
That's good to know. If you are having issues like this, then others are likely to as well.
Do I need to update the documentation/ReadMe or perhaps take the build instructions out of the ReadMe and put them into their own document?


Richard Deane

unread,
Jul 10, 2026, 6:13:22 PM (10 days ago) Jul 10
to rc201...@googlegroups.com
I think a simple highlighted section in the readme for prerequisites and the sequence of instructions for a clean simple build would be the best way to go. All the stuff about workflows, testing etc is esoteric (we assume you've fully tested it and it "Just Works" :) . Now that you have a windows binary it avoids us doing a windows build. We need something simple for Linux, either a simple build process or perhaps a prebuilt appimage.
I've not attempted an rpi arm64 build yet. I guess it should work. I should blow the dust off my rpi500+ and give it a go (it's Debian 13 Trixie)

I guess you may need to do font sizing tweaks to make the cpm-fm window large enough on high res screens. A lot of apps have that problem perhaps using SDL1.2 and need shim for SDL2 or 3 - I guess QT may have similar issues, or perhaps a build flag?

Let me know if there is some testing you need me to do.

Cheers
Richard


Gary Hammond

unread,
Jul 10, 2026, 6:42:54 PM (10 days ago) Jul 10
to RC2014-Z80
I will put a quick-start section at the top of the readme. I should probably move the developer stuff out of the readme and put it in its own file.
I use a widescreen with 3440x1440 resolution and have not had issues on any of the 3 PC's (Windows/Mint/DGX). They all seem to render fine. Whilst not a high resolution screen like 4K, the fonts in the app are scaled the same as other apps.
BTW, in the meantime I have tested the app and build process on Linux Mint 22.3 on AMD64 and DGX (Specialised distro of Ubuntu for the DGX Spark) on ARM64 and they build and run ok. Just have to watch out for the dialup group permissions which prevents connection ;)
I don't have a RedHat based distro available to try on. 

Thanks for testing

Gary Hammond

unread,
Jul 10, 2026, 7:13:43 PM (10 days ago) Jul 10
to RC2014-Z80
I have tidied up the ReadMe. Was a bit too heavy for casual users.

Richard Deane

unread,
Jul 11, 2026, 5:08:53 AM (10 days ago) Jul 11
to rc201...@googlegroups.com
AI (CoPIlot suggested that the Fedora invalid opcode problem might relate to Fedora specific packages optimised for more modern hardware than my old N40L server. I shall install Fedora on a more modern processor and rerun the test.

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.

Richard Deane

unread,
Jul 11, 2026, 5:41:15 AM (10 days ago) Jul 11
to rc201...@googlegroups.com
Builds and runs to SC131 fine from an RPI 500+ (Debian Trixie ARM64)
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.

Gary Hammond

unread,
Jul 11, 2026, 6:24:53 AM (10 days ago) Jul 11
to RC2014-Z80
That is cool!

Gary Hammond

unread,
Jul 11, 2026, 6:39:42 AM (10 days ago) Jul 11
to RC2014-Z80
I am stopping for now with 2.37.1 which has some fixes as per the issues list, and new user area functionality, i.e., you can transfer files to and from different user areas on the disk and disk images.
One caveat is that your remote transfer command(s) must be a system file, or it will only work for user area 0. Drawback is that if you make the remote transfer commands system files, they will no longer show up with a DIR command. You can still see them with STAT *.*.
To make a file a system file use STAT <FILENAME> $SYS. It can then be seen from all user areas.

Richard Deane

unread,
Jul 11, 2026, 7:17:05 AM (10 days ago) Jul 11
to rc201...@googlegroups.com

I have successfully built and launched cpm-fm under Fedora 44 on a much newer CPU hardware and that was fine, no invalid opcode error.  I used a Lenovo ThinkCentre desktop.

However the drop down serial config list shows a top to bottom of screen list of all /dev/ttyS00-31, and a fraction of a few pixels of the needed /dev/ttyUSB0 device - I couldn't see enough to identify it, but I could just click on it to select it.
The display was 1920*1080 (not my high def screen)

Should ports like /dev/ttySSnn be excluded , leaving things like ttyUSB0 and ttyAMA0 etc in a much less cluttered list?

I can't actually test through /dev/ttyUSB0 due to "permission denied error" but that's probably outside the scope of your code, so I will continue to resolve that.

Cheers
Richard


On Sat, 11 Jul 2026 at 00:13, Gary Hammond <gfha...@gmail.com> wrote:
--
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.

Richard Deane

unread,
Jul 11, 2026, 9:34:53 AM (10 days ago) Jul 11
to rc201...@googlegroups.com
On Fedora 44, adding my account to the dialup group allowed me to connect to my sc131 ok.
 
I note that in the GUI there is more white space above and below the text of a list box entry than typical, and this for example makes the list of serial /dev/tty* much deeper than the screen. Reducing that extra white space may also look better the GUI, just a little could make a big difference across the whole GUI.

Richard

Richard Deane

unread,
Jul 11, 2026, 9:40:09 AM (10 days ago) Jul 11
to rc201...@googlegroups.com
The small font on the high res screen is only under WSL Ubuntu under Windows11, the Windows 11 cpm-fm.exe is fine.
Richard



On Sat, 11 Jul 2026 at 00:13, Gary Hammond <gfha...@gmail.com> wrote:
--
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.

Richard Deane

unread,
Jul 11, 2026, 1:03:58 PM (9 days ago) Jul 11
to rc201...@googlegroups.com
Cured the wsl sizing problem (small windows, small font on 4K display) by running these commands before running the program:
export QT_ENABLE_HIGHDPI_SCALING=1
export QT_SCALE_FACTOR_ROUNDING_POLICY=PassThrough
export QT_SCALE_FACTOR=1.75

Richard

Gary Hammond

unread,
Jul 11, 2026, 4:27:14 PM (9 days ago) Jul 11
to RC2014-Z80
You need to be a member of the dialup group. Its a common gotcha when trying to use serial ports under Linux. Add your user to the dialup group and that should fix it.

sudo usermod -aG dialout <username>

Thanks for all your testing with Linux.
The long list of serial ports is an issue. I think Linux has no way of knowing which rear serial ports are active so lists the lot, whereas it is able to figure out active USB serial ports. Maybe the solution is to add an option to only list active USB serial in Linux, but not sure if that is possible. Will take a look.

Glad to see you got the resolution issue sorted and that Fedora seems to be working as well. Now all I need is someone with a Mac to build and run it.
Cheers,
Gary

Richard Deane

unread,
Jul 11, 2026, 4:35:09 PM (9 days ago) Jul 11
to rc201...@googlegroups.com
CoPilot suggested coding a filter to drop out  /dev/ttySn and  /dev/ttySnn and /dev/ttyprintk. I would recommend a note in the doc if you did that  so someone could adjust the filter if they need any of those ports (e.g. to link to a linux port to z80pack or yaze-ag)

Cheers
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.

Gary Hammond

unread,
Jul 11, 2026, 6:48:41 PM (9 days ago) Jul 11
to RC2014-Z80
I have done a fix for the drop down list issue (issue #12) and merged it to the mainline as 3.37.2. You should only see active USB ports now under Linux, however there is a ckecbox (off by default) that allows you to see all ports in case you have a real serial port. Take it for a spin and see if it meets your needs.
A positive side effect of this fix is that for Windows users, the com ports are now ordered.
Cheers,
Gary

Gary Hammond

unread,
Jul 11, 2026, 6:49:38 PM (9 days ago) Jul 11
to RC2014-Z80
That should be 2.37.2 not 3.37.2


Richard Deane

unread,
Jul 12, 2026, 1:20:16 PM (8 days ago) Jul 12
to rc201...@googlegroups.com
Thank you, looking good. Fixes the long port list on Fedora.

On Sat, 11 Jul 2026 at 23:49, Gary Hammond <gfha...@gmail.com> wrote:
That should be 2.37.2 not 3.37.2


--
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.
Reply all
Reply to author
Forward
0 new messages