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
xerror
xx
xx

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 IDnode ID
xx
Msg...
   
CP/NET Reply
C0
length
xx
xx
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 IDnode ID
xx
   
Boot Reply
B0
length
xerror
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
xx
xx
xx
   
Status Reply
D0
statusnode ID
xx
xx
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):
typemeaning
0offline (no node present)
1unknown
2in debugger
3stand-alone printer server
4CP/NOS (diskless)
5(reserved)
6(reserved)
7file server
8CP/NET
9CP/M
10MS-DOS
11Concurrent DOS
12(reserved)
13network extension (e.g. router)
14network extension (e.g. router)
15network extension (e.g. router)