Virtual H89 Computer MMS 77422 Network Interface
The virtual MMS 77422 Network device is a simulation of the network
application of the MMS 77422 board. It does not replicate the co-processor
or other features.
A separate but related component, HostFileBdos, is essentially a CP/Net server that
allows access to a native filesystem on the host computer, and
converts CP/M file I/O into native file I/O. HostFileBdos is designed to plug
directly into this device, but it can also be used to make
CP/Net servers for remote machines that could connect over true network
structures such as sockets.
The device is configured as follows:
- mms77422_clientid
- The CP/Net Client ID to be used by this H89. Default is 0x3f.
Must be between 0x01 and 0x3f (inclusive). Must be unique on "the network".
- mms77422_port
- The I/O base port for the device. Either "0x78" or "0x7c".
SW501 must be set accordingly.
- mms77422_intr
- The INT line to use for completion. Either "3", "4", or "5".
Existing MMS software expects INT5.
- mms77422_server##
- Specifies the type of server/communication device to attach
as server "##" (implied 2-digit hexadecimal). Should be a valid
class that implements NetworkServer, although it is only compared
to known values and so is not required to name an existing JAVA class.
Typically, at least one server will exist, namely HostFileBdos as server 00.
For example:
mms77422_server00 = HostFileBdos [args...]
See HostFileBdos for more information.
Also recognizes "Socket" to connect with remote instances of
HostFileBdos (or other CP/Net-compatible servers). For example:
mms77422_server03 = Socket host port
See CP/Net Socket Server for more information.
Host Protocol
The general command/response header used to communicate between the H89
and the 77422 is 7 bytes long, first byte is the code indicating the type of message,
followed by three 16-bit values (little-endian). Bit-0 of the message type
will be "1" for messages from the H89 to the 77422 (and network),
and will be "0" for messages from the 77422 to the H89.
Messages that are sent on the network (C1, B1) will have a local
response indicating the success of the send
(this is in addition to the remote node reply):
Send Status |
D6 |
x | error |
x | x |
x | x |
CP/Net messages sent to server. See CP/NET documentation
for the standard message format of "Msg..." and "Reply...".
The virtual 77422 sets "node ID".
CP/NET Msg |
C1 |
length |
server ID | node ID |
x | x |
Msg... |
|
|
CP/NET Reply |
C0 |
length |
x | x |
x | x |
Reply... |
|
Network Boot. Reply (if no error) has "length" bytes of "Code..." to
be loaded into memory at "address" and executed at the same address.
The server must examine the sender node's address and choose an
appropriate boot image. Typically, the server is given a designated
image for this node (out of scope of this document).
The virtual 77422 sets "node ID" and "0" length.
Network Boot |
B1 |
0 |
server ID | node ID |
x | x |
| |
Boot Reply |
B0 |
length |
x | error |
address |
Code... |
|
The following messages are handled entirely on the 77422 - no network is involved
and thus no "Send Status" is given.
Network Status |
D1 |
x | x |
x | x |
x | x |
| |
Status Reply |
D0 |
status | node ID |
x | x |
x | x |
Table... |
|
"node ID" is the network node ID programmed into the 77422 (jumpers).
"status" will have bit-4 set if network is active.
"Table..." is the 65-byte token-network table indicating peer nodes on the network.
First byte is a polling indicator, the next node to be polled. The remaining
64 bytes are node status for each possible node on the network. Each node byte's
high 4 bits indicate the type (if known):
type | meaning |
0 | offline (no node present) |
1 | unknown |
2 | in debugger |
3 | stand-alone printer server |
4 | CP/NOS (diskless) |
5 | (reserved) |
6 | (reserved) |
7 | file server |
8 | CP/NET |
9 | CP/M |
10 | MS-DOS |
11 | Concurrent DOS |
12 | (reserved) |
13 | network extension (e.g. router) |
14 | network extension (e.g. router) |
15 | network extension (e.g. router) |