• Please review our updated Terms and Rules here

ZMC: A Dual-Pane File Manager for CP/M & Z80 (Optimized for 32-line terminals)

I know the SYSLIB, but as zmc source is C, I can use the simple algo that's somewhere on my disk.
Martin
 
I wish I knew more about Z88DK. It probably has a mechanism for ASM linkage which could enable leveraging of SYSLIB and the like.
 
Hi @horo, @shirsch, and @Svenska,

Your feedback and the tests on the Z80-MBC2 have been invaluable. I’ve noticed that the community is growing and that each of you has a unique 'blueprint' for what a modern CP/M tool should be.

I would like to invite you to be active collaborators on the official repository. Specifically:

@horo: Your work on CP/M 3 and terminal compatibility is critical. I’d love to have your improvements for <ESC> sequences integrated directly so all users benefit.

@shirsch: Your knowledge of the ZSystem and system-wide routines could help us make ZMC a truly 'universal' tool for professional environments.

@Svenska: Your eye for UI/UX (like the KC-Commander reference) is exactly what we need for the next visual refactor of the panels.

The goal is to stop the fragmentation of forks and build the definitive commander for the Z80. If you are interested, please send me a PR or your GitHub usernames, and I’ll add you to the project!
 
That's a very kind offer, but the Spanish comments and UI prompts make it difficult for me to navigate. I'm also somewhat clueless regarding the Z88DK environment.
 
I also strongly vote for English as the lingua franca of computer science. As I wrote above, it seems unnatural to me to work on a source text with English code and Spanish, Italian or German comments and UI side by side.
Thank you for your invitation to collaborate. I am on GitHub with the username "Ho-Ro": https://github.com/Ho-Ro
Martin

Date/Time works now (C: has time stamps, P: not):

1771014493044.png
 
Last edited:
Ok, next version is out on Volney's GitHub:
WHAT'S NEW IN V1.2 (The Ho-Ro Update)
CP/M 3 SUPPORT: Native display of file date and time stamps.
ALPHABETIC SORTING: Fast QSort implementation for quick navigation.
ATTRIBUTE MANAGEMENT: View Read-Only, System, and Backup flags.
OPTIMIZED ENGINE: Drastically improved file size calculation for CP/M 2.2.
MODULAR CORE: Separated into globals.c and operations.c for stability.
TECHNICAL TRANSLATION: Standardized English UI and code comments.
KEYMAP (Updated)

See below 60x16, 80x24 and 120x40 as example (these are from the yaze-ag z80 emulator running a real CP/M3).

Martin
zmc_60x16.png

zmc_80x24.png
zmc_120x40.png
 
The Linux 'midnight commander' supports keyboards without function keys by treating "Esc 1" as F1, "Esc 2" as F2, and so on. Modern laptops make the function keys borderline unusable ("does pressing F2 immediately suspend or not"), so I end up using it a lot.

Many older terminals did not have a full set of function keys, so something like this may be even more useful for CP/M.

Also, is there a plan to support other terminal standards? The ADM-3A seems to be fairly widely supported in applications, and the CP/M emulator in Fuzix provides VT52, for example.
 
I don't yet see a binary available with the new commits under releases
Latest devel drop:
Also, is there a plan to support other terminal standards? The ADM-3A seems to be fairly widely supported in applications, and the CP/M emulator in Fuzix provides VT52, for example.
Not yet, but I keep it in mind. Currently there are a lot of VT100 ESC sequences all over the code, so they must all be tranformed to function call like "setxy(X,Y)" etc. I've already started - there are e.g. "clrscr()", "set_invers()", "set_normal()", "show_cursor()" and "hide_cursor()". I would go for version 1.3.
Martin
 
Latest devel drop:

Not yet, but I keep it in mind. Currently there are a lot of VT100 ESC sequences all over the code, so they must all be tranformed to function call like "setxy(X,Y)" etc. I've already started - there are e.g. "clrscr()", "set_invers()", "set_normal()", "show_cursor()" and "hide_cursor()". I would go for version 1.3.
Martin
Is there no way to link the cross-assembled code against Microsoft or SLR libraries? All of these problems were solved years ago by the O.G. NZCOM folks. VLIB has low-level intrinsics that abstract everything neatly.

UPDATE: Just spent a bit of time perusing the Z88DK docs. Looks like some work was done towards integration of REL libraries, but it's marked as experimental. Since the full sources for all ZCPR/NZCOM libraries are available it might just be simpler to write C interfaces for them and create Z88 'native' libs (still trying to figure out if such a thing exists, but there's mention of it in the somewhat-incomplete docs).
 
Last edited:
There's nothing preventing us from compiling in a Z standard TCAP (typically less than 256 bytes) for those running vanilla CP/M. Build the binary with 'Z3ENV' at 103H, followed by a pointer to the built-in TCAP. That way it should work fine on both CP/M and Z3. I'm just trying to avoid a pile of wheel reinvention.
 
@shirsch - good point, please follow this path.
Until we ave a better solution I just "reinvented kind of a square wheel", have a look at the next dev drop, also in 8080 flavour.
Everything terminal specific (key handling, goto_xy, clr_scr, set_invers,...) is bundled in "vt100.c" and can be replaced by e.g. "adm3a.c" that could provide the same primitives.

FileCommander for CP/M by Heiko Poppe uses the number keys (0-9) instead of function keys ...
I already thought about using digits, I will check how it works with my command line interface.
 
Is the ZMC build using the 'classic' or 'new' library? I've been through the Wiki a couple of times and cannot find any discussion on how this choice is controlled. Is it done during build? Installation? Other? More to the point, I'm not sure where the 'cpm' target's CRT runtime source is located. I found a couple of .m4 files under newlib, but for whatever reason the classic counterpart is eluding me.

My first goal is to build a Z compatible binary with some smarts in the crt code to setup the environment and/or incorporate the ENV and TCAP descriptors directly into the application.
 
I wold like to invite all interested to participte in the active development even if you're afraid of the toolchain setup.
Setting up the z88dk toolchain can be a bit of a journey.

If you're working on Debian Linux or descendents it is straight forward:

git clone https://github.com/z88dk/z88dk.git
cd z88dk
sh make.sh

Then I call MAKEDEB.sh that uses the quick'n'dirty tool checkinstall to build a *.deb package from source code using the classical three-step ./configure; make; make install:

#!/bin/sh

Code:
# build a debian package for z88dk

export BUILD_SDCC=1

sudo checkinstall \
        --pkgversion=$(git describe --tags | sed s/^[[:alpha:]]*//) \
        --pkglicense="Clarified Artistic License" \
        --pkggroup=development \
        --backup=no \
        --install=no \
        --fstrans=no \
        --exclude=/root,/home

unset BUILD_SDCC

sudo chown -R horo:horo *

It took about 20 minutes on my quite fast laptop, but then you're done. The deb package can be installed and uninstalled cleanly on your system with:
sudo apt install ./z88dk*.deb

Martin
 
Back
Top