|
 |
The Memotech MTX Series |
 |
The Memotech Node
Ring Network

The Memotech
Node system
was designed as a simple peer-to-peer network. The Node ROM
cartridge contains a small ROM which supports simple networking
between basic MTX computers fitted with the ROM pack and the
RS232 interface board. For the
simplest of operations, no additional software or hardware
(other than connecting cables) is required, however, the system
also supports the addition of FDX CP/M systems to the ring. A
small setup program, ncpm.com, was
available for use with FDX systems. Martin Allcorn has studied
and disassembled the program and created some notes on it as
well as generating the disassembly listing provided below
Decoding ncpm.com
Technical Note contributed by Martin Allcorn
NCPM.COM is the CP/M setup program for
the Memotech Node ring networking system, using RS232 as the
transport medium. The same program is also called via a
different entry point, by USER QUIT
which is present in the SDX ROM.
There is a fundamental issue with using
Node under CP/M, and that is overlapping memory requirements.
The Node ROM when running on a discless system uses high memory
from F000 to F880 or so. Basic then uses FA52 to FFFF for the
system variables and the Z80 processor stack. With further
memory below FA52 used by the sound system.
CP/M on the other hand, also reserves the
4k F000 to FFFF for the Hardware drivers, disc buffer and the
BIOS vectors. The 2 cannot coexist in their usual state. So,
what ncpm does is reserve 4k further
down the memory at E000 to EFFF for the CP/M system hardware
drivers and the disc buffer that leaves F000 to F880(ish) free
for the Node ROM. The area above F880 is then shared between the
system variables than Node needs, and the BIOS vectors. The need
to reserve the to 8K of memory under CP/M means that the 59K
system as used by the single disc systems (both the SDX and the
FDX single) cannot be used. The 54K system as supplied with FDX
CP/M is suitable.
When ncpm is
called from the CP/M prompt, the program is loaded and run at
address 0100 just like any other CP/M program. Once running it
skips over the USER QUIT entry point and begins to setup the
system. It then performs the following steps.
-
Check to see if the E000 CP/M
drivers are already loaded
-
If not, check to see if the CP/M
build is the 54K system. (or a custom system with even less
memory.) The program aborts via CP/M warm boot vector if the
CP/M system size is too big. The CP/M drivers are then
copied into place in the E000 to EFFF area. Any custom or
non UK keyboard tables are copied over and the BIOS pointers
all updated to point to the new code.
-
At this point the Node support code
is initialised and a check made to see if the Node ROM is
present. If the ROM is missing the program aborts via the
warm boot vector.
-
The CP/M command tail is read for a
station name, if this is fine the NODE interrupts are set
up, either way the program then exits via warm boot.
-
On exit either Node is running and
awaiting interrupts, or CPM is reloaded without interrupts.
In other words, to run NODE on CP/M
requires both the 54K system and the Node ROM.
When called from USER QUIT
the same binary image is used, but loaded at 8000. The reason
for loading so high in memory turned out to be the need to
accommodate FDXB users on the FDX. USER QUIT doesn’t actually
make any sense for the SDX.
In order to run on SDX this would require
: ·
-
SDX and the Node ROM being
plugged in, by default they both use the same left hand
connector.
-
The SDX would have to have both an 80
column board and a 54K CP/M system disc, which SDX can’t
boot off
However, for FDXB on the FDX, none of
this is an issue, it is possible that leaving USER QUIT in the
SDX ROM unmodified was an oversight.
Because USER QUIT
is loading from the basic environment, the setup sequence is
different from CP/M
-
Check to see if there is a 54K (or
smaller) system on the disc and whether the ROM is present
if either is missing report an error and return to the
“Ready” prompt.
-
If all is OK, check to see if Node is
active. If it is, deactivate all of the interrupts, load in
the interrupt handler etc., and re-enable the Node
interrupt. If Node wasn’t active reset the CTC as CP/M runs
without interrupts, this allows USER QUIT
to function when Node is inactive.
-
Because FDXB runs in a basic like
environment, the E000 drivers are then loaded and CP/M upper
memory configured, the remainder of memory is set up for
CP/M and with Node, then the screen cleared and the warm
boot called.
Additional notes:
The Node ROM sets up an interrupt table a
FFF8 for the DART. Which is likely why there are 16 bytes
allocated for interrupt jump tables by BASIC even though BASIC
only programs the CTC and that uses FFF0 to FFF7 only.
The CP/M side setup assumes that only
@FDX01 and @FDX02 are the only valid disc systems.
The USER QUIT
code assumes two type 3 dives are fitted to the FDX
4K of the 6K that makes up
ncpm.com is the FDX high memory drivers
re-compiled for E000
ncpm only sets
up the environment, the Node ROM is still required to operate.
 |
Martin's original Word document Also contains the
disassembled program listing |
|