To install this package on CP/M, download the ZIP file and unpack it. It will create a folder with the same name as the package, containing the files shown.

Download PMATE-3.21-fZ80.zip containing all files below.

README.TXT
----------

PMATE 3.21 fZ80 customization
18 Dec 2025

PMATE has been patched to not be a resource hog on MP/M.
The "instant command" list has also been modified to work
with WordStar arrow keys, which necessitated some keyboard
juggling.

RESOURCE HOG PATCHES:

PMATE is old and crude; it uses BIOS jump table routines
for conSt, conIn, and conOut, which works, but somehow
consumes CPU cycles on MP/M.

The solution here, in FZPATCH.*, is to cause PMATE to
eventually call DIRECT CONSOLE I/O E=0fd, which suspends
the program in a keyboard wait. See FZPATCH.ASM for
explanation. See below for the patching process.

INSTANT COMMAND CHANGES:

The keyboard arrow keys were defined to be WordStar 
compatible, as was common in it's heyday, and other programs
like SuperCalc2 share it. PMATE had other ideas, with
many keys conflicting.

The new configuration file, PM-CFG2.CFG, swaps keys
such the the arrow keys and the WordStar diamond (S, D,
left and right and E, X, up and down) are consitent.
To do this some traditional PMATE functions have moved.
See https://www.bleeve.me/fZ80/PMATE-cheat-sheet.html
for the new key mappings.

PATCHING PROCESS:

PMATE is simple and downright crude... patching is
done by modifying the binary (PM.COM etc), using the
version 3.21 patch file IOPATCH.ASM. The absolute 
addresses (compile, look at the .PRN) match the
distribution binary.

FZPATCH.* is a stripped down, then augmented, edit
of IOPATCH.ASM. It leaves some things unchanged.

PATCHING OVERVIEW:

To do the job right you need to patch CONPMATE.COM
so that you can create "customized" configuration
PMATEs from the command line. I do this as a
two-step process; apply patches to a working PMATE
binary, when those look good, apply the patches
to (a copy of) CONPMATE.COM, and use that to create
your user copies.


TESTING PATCHES:

This can be done in MP/M, obviously necessary to
fix the MP/M "hog" problem, but CONPMATE must be
modified in CP/M.

Start with a distribution 3.21 binary. I make
a copy called TEST.COM, patch and test that, then
apply to real files (see below).

Edit FZPATCH.ASM as needed, compile with MAC.COM.

DDT TEST.COM. Verify that RAM contains what's
shown in IOPATCH.PRN etc.

Load the assembled patch:

-IFZPATCH.HEX
-R
-
-g100

PMATE runs, reports some error, illegal file, etc.
Ignore and xk$$ to clear it. Test PMATE as required
for the change. If it looks OK execute xdtestx.com$$
to export a modified copy of the binary.

When that's all good proceed to fixing COMPMATE.


PATCHING CONPMATE:

PMATE's configuration with CONPMATE self-modifies
the running binary, in RAM, then saving a copy
to disk, so patches must be first applied to CONPMATE.
However patching CONPMATE requires the SAVE (memory
to disk) command not available in MP/M.

Make a copy of distribution CONPMATE.COM.

DDT CONPMATE.COM
-IFZPATCH.HEX
R
(prints out memory usage)
g0

A> SAVE 122 CONPMXX.COM

Now use that saved file CONPMXX to configure
PMATE in the usual way.
--------------------
Archive: PMATE-3.21-fZ80.zip Length Date Time Name --------- ---------- ----- ---- 31232 2024-12-31 16:00 PMATE-3.21-fZ80/CONPMATE.COM 6400 2024-12-31 16:00 PMATE-3.21-fZ80/FZPATCH.ASM 896 2024-12-31 16:00 PMATE-3.21-fZ80/FZPATCH.HEX 12672 2024-12-31 16:00 PMATE-3.21-fZ80/FZPATCH.PRN 384 2024-12-31 16:00 PMATE-3.21-fZ80/FZPATCH.SYM 22272 2024-12-31 16:00 PMATE-3.21-fZ80/PM24.COM 6784 2024-12-31 16:00 PMATE-3.21-fZ80/PM-CNF2.CNF 6656 2024-12-31 16:00 PMATE-3.21-fZ80/PM-FZ80.CNF 2960 2026-04-05 16:43 PMATE-3.21-fZ80/README.TXT --------- ------- 90256 9 files

Website contents, unless otherwise specified, © 2026 by Tom Jennings. Permission is granted for personal use with no renumeration. Corporations or any legal organization or their agents (employees or consultants or other relationships) expressly prohibited from using any material without written permission.