Computers Overview
Commodore PET
Sinclair ZX80
Sinclair ZX81
BBC Micro
Sinclair Spectrum
Memotech MTX
    About
    Library
        Adverts
        Memotech
        Miscellaneous
        Program Code
        Reviews
        Technical

            Component Data

            Data Books
            Data Sheets
            Design Guides
            Tutorials

            MTX Specific

            Firmware
            Tech Notes
    Manuals
    Options
    Photos
    Projects
    Repairs
    Software
    Tools
    User Groups
    Video Wall
Memotech CP/M
Atari ST
Commodore Amiga
PDAs
DEC 3000 AXP
OpenVMS
Raspberry Pi

 

 
 
 

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

 

 

mailto: Webmaster

 Terms & Conditions