I summarize REX as: "An on-board software-controlled option rom library
and ram image library."
That's the shortest way I've found to say what it does, but that's not
the same as saying what it's good for or why you want one.
Because of the particular features and limitations of a M100, probably
the single most life-improving thing you can do to one is to have TS-DOS
in ROM.
That one thing addresses a few different pain points.
The biggest pain points of a M100 are:
- Battery-backed ram only storage. Very little storage, and easily
erased or corrupted, either by dead batteries or a software crash.
- The way in manages machine-language software. How they all want to run
in the same place in ram, yet the OS does not provide very much in the
way of automatically moving programs into and out of that spot, so
software is always clobbering other software, or you limit yourself to
just having a single machine language app installed, or you have to
figure out the arcane way to hack the binaries to relocate them to run
at different addresses side by side, or you have to keep double copies
of binaries so that the running copy can get clobbered and later
replaced from the ram file copy...
- The main rom provides no binary file transfer other than the cassette.
And no *convenient* file transfer even for text.
These things combine to make life kind of difficult. For instance you
want some better file transfer app, but since you have no binary file
transfer to begin with getting the file transfer app itself installed is
a pain. Then once it's installed, it consumes precious ram, and is
easily broken because of the way machine language apps are are run, and
the simplest way to address that is to have a 2nd physical copy in ram,
which uses up yet more of that precious 32k. etc.
Having any tpdd client at all installed in any form makes transferring
files a breeze, including binary files. This somewhat alleviates the
small ram problem because you can easily put files away and get them
back, as long as your tpdd software stays working.
Even better is having a full featured tpdd client like ts-dos instead of
teeny, and having it in rom instead of ram.
That alleviates all kinds of annoyances.
- It consumes almost no ram.
- It doesn't require a pain in the neck bootstrap/loader process to get
installed.
- It isn't subject to being clobbered and needing to be reinstalled
because of some other software writing over it or crashing.
- It isn't lost after a hard reset or dead batteries.
With TS-DOS in rom, you can pick up a totally dead machine, or totally
kill your machine with a hard reset on purpose, or suffer a total ram
corruption from buggy software, and with just "CALL 63012" you are up
and running again, connect to a computer and pull down files.
But even though this makes a lot of things a lot better, this still
needs a computer and serial cable. The tpdd client just makes it so that
you can effortlessly connect to a pc and move files back & forth, and
having it in rom just means you can effortlessly always have the tpdd
client regardless of crashes or dead batteries.
That still leaves a couple things that could be better:
- If you had a plain ts-dos option rom, it means you can't use any other
option rom because the single socket is occupied already by ts-dos.
- You still need a serial cable and pc (or a real tpdd drive or a
Backpack or PDDuino) to actually get the files from somewhere / put them
somewhere.
REX gives you ts-dos in rom just for starters. It gives you ts-dos in
rom which just that right there alleviates several things above, but also:
- all other options roms besides ts-dos
- full ram image backups
- all on-device self-contained with no computer or serial cable needed
(after initial loading)
- impervious to dead batteries or resets or crashes
And although you do need a computer to install option rom images onto
the rex one time, ts-dos in particular is pre-installed, so that single
most-needed one never needs even the initial one-time install from a
computer. Only all the other roms need to be loaded from a pc once. And
the loading process is easy, because REXMGR uses tpdd protocol
internally to pull the rom images from a pc. No bootstrapper/loader
procedure.
The other option roms give you mostly a few different office software
kits, ie spreadsheets and word processors, and a few other things like
there is a FORTH rom and an assembler/debugger/renumberer.
The ram image backups give you essentially more copies of 32k ram. It
helps a few different ways:
- you can physically hold more than 32k of apps or data.
- you can recover from a dead battery or reset or corrupted ram from
crashed software by restoring a ram image.
There are something like 30 or so available slots, and each slot can be
either an option rom or a ram image. That's a lot.
All without a computer. In the coffee shop, on the train etc, just
recover from dead zero in a few seconds. Just "Call 63012" and away you
go, all interactive app and menu driven after that.
So that is why you want a REX of any stripe, REX Classic, REX#, or REXCPM.
Now for REXCPM in particular....
Those particular advantages are something the REXCPM is less good for.
REXCPM does give you all of that, but only as long as the M100 internal
battery is not dead and the REXCPM and bus adapter board remain
installed in both sockets.
You can recover from software crashes that scramble the ram, and from
intentional hard resets that wipe all ram (ctrl-break-reset), but not
from dead batteries or switching off the memory power switch on the
bottom for more than a few minutes, or removing the device from the m100
for more than a few minutes.
If the M100 internal battery runs out, or you uninstall it for more than
a few minutes (you do get a pretty good grace period of several minutes,
maybe even over 10 minutes) then you have to reload the REXCPM from
scratch as you just experienced. If you had a REX Classic or REX#
instead of REXCPM, all you would have done is type "call 63012" and
you'd be all back up & running. No pc, no "37 easy steps". Done. And to
remember "call 63012" just write it on a sticker or label-maker on the
bottom. Put it on the underside of the option rom or battery cover if
you want to hide it but then you have to at least remember that it's there.
I did make a "UPS" for REXCPM that should keep it alive for a few years,
but it's pretty involved to build and ultimately hard to justify.
I don't pretend it's practical for most people, but it does work and exists.
https://github.com/bkw777/REXCPM_UPS
You have to buy the parts from digikey or mouser etc, order pcbs from
elecrow or oshpark etc, and then it's a pretty fiddly soldering job, and
it ends up costing as much or more than the rexcpm itself just to give
it a battery. And for all that, I think I only estimated 6 months per
cell x 4 cells = 2 years, but that's after the M100's own batteries run
out, and if you have fresh alkaline AA's and a charged internal battery,
the M100 itself can last anywhere from a few months to a year. So maybe
up to 3 years?
A better long-term solution would be a keeper. You remove the rexcpm and
plug it in to something with socket and a big battery. But that doesn't
help with one that's installed in a machine. You'd need to remove it
from the machine to put it in the keeper. Plus the molex sockets are no
longer made. There are a few around available still but this would be a
wasteful way to use one up instead of keeping them to repair machines.
Really, for the long term like over 5 years, it's probably more
practical to just let it die and reload it. With a convenient
bootstrapper and tpdd server on a pc, it only takes a few minutes to
reload a rexcpm from scratch. It's several steps that requires a cheat
sheet to follow, but none are very difficult or long. The hard part is
just deciphering the original directions to figure out what actually are
the steps you need to do.
So all in all, I'm not sure how necessary the ups is. It's probably more
practical to just do 2 things to live a happy life with a REXCPM:
1 - Keep it installed in a machine. And keep that machine charged.
(Unfortunately, you can't just lave the machine plugged in to the wall
24/7 for months, that will cook the internal battery.)
2 - Get good at reinstalling it. It's several steps, but it's possible
to write a little cheat sheet that is easier to follow than the full
original documentation. And none of the steps are very difficult or
long. You don't even need the cheat sheet after a few runs through.
If you aren't specifically wanting to run CP/M then I always say a REX#
is far more practical. REX# is an nvram device that acts like a rom.
Instead of ever needing to recover the REX, the REX is what recovers
your M100.
--
bkw
On 3/15/24 22:46, Will Senn wrote:
Wow, that was harder than I expected. I had to read through a ton of
stuff, but I finally managed to get Rex back on the menu and CPM with
the hotkey...Now, I am trying to remember why I got Rex in the first
place... seems like I was cramped with 32k (I doubt it, but the modern
in me feels it oughtta be so) and REX gives me a bunch of 32k segments
or something like that along with a manager that lets me put old roms
somewhere they can be run from (Defender comes to mind).
Hep! What's Rex really for? Somebody remind me. Also, what do I do with
CP/M that's cool?
Next up, after putting Rex and CP/M to work is to load up the assembly
stuff and write an assembly program. I'm off to reading was it "Inside
the M100"? I think that was the book that talked about the memory map
and functions provided by the firmware was it? Sheesh, so many years
have gone by since then.
I've been plowing through the 8085 stuff - can't wait to put it into
action on real metal (the sim's fine, but nothing is as satisfying as
making a real, physical device do stuff.
Oh, and a bit more stream of consciousness... if I have LaddieAlpha
working (mono on linux), do I still need DeskLink+, or put another way,
if I have DeskLink+, do I need LaddieAlpha, or are they doing basically
the same thing? I used dl until I installed the Rex, which talked about
laddie, but then in TEENY, it didn't seem to care which it was talking
to and CPM installed fine over laddie, whew, if you're confused by that
last bit, imagine a poor newb trying to reason it out...
Thanks,
Will
--
bkw