RC2014 Ethernet Support

916 views
Skip to first unread message

Augusto Baffa

unread,
Sep 10, 2022, 6:01:24 PM9/10/22
to RC2014-Z80

Hi, 

 I've been reading many threads about bring ethernet support for RC2014 (and Fuzix or CP/Net, MP/M Server etc...) but it seems like it's still an open problem.

 Maybe the best solutions are using Wiznet MT011, 5300, 830MJ or  RTL8019 but all solutions sounds like they are "on going" experimental projects.

Is there a stable or reliable card that may be used with RomWBW or a non-custom solution?

Some projects I've found:

Best,
Augusto Baffa

Tadeusz Pycio

unread,
Sep 10, 2022, 6:11:06 PM9/10/22
to RC2014-Z80
As far as I know, the MT101 has been successfully used to build CP/NET networks. I use an Arcnet controller in my solution.

Alan Cox

unread,
Sep 10, 2022, 6:11:49 PM9/10/22
to rc201...@googlegroups.com
On Sat, 10 Sept 2022 at 23:01, Augusto Baffa <augb...@gmail.com> wrote:
>
>
> Hi,
>
> I've been reading many threads about bring ethernet support for RC2014 (and Fuzix or CP/Net, MP/M Server etc...) but it seems like it's still an open problem.
>
> Maybe the best solutions are using Wiznet MT011, 5300, 830MJ or RTL8019 but all solutions sounds like they are "on going" experimental projects.

Most folks seem to be using the Z180 boards - an SC126 with the wiznet
spi adapter and a line from reset to the wiznet doesn't need any extra
hardware and is cheap. The bigger problem though is that the internet
today is built on encryption and it would take most of the RC2014
hardware a few weeks to do the key exchange 8)

Alan

Wayne Warthen

unread,
Sep 10, 2022, 6:31:50 PM9/10/22
to RC2014-Z80
A complete set of CP/NET client tools is included in the the RomWBW dev branch for use with MT011.  These tools are simply a redistribution of the tools created for MT011 by Douglas Miller.  Both CP/NET 1.2 and 3.0 clients are provided.  By default, these tools are included in user area 4 of hard disk slices for all relevant OSes.  There is no quick start documentation for this, but you can refer to the GitHub repository from Douglas Miller at https://github.com/durgadas311/cpnet-z80 for more information.  Douglas includes a Java implementation of CP/NOS that can be used for the server side.

Any way you slice it, putting together network support for a Z80 system is non-trivial.  I suspect that is why you don't see more examples of it.  However, it can be done with existing hardware and software.  If you want to try the RomWBW client software, I am happy to answer questions.  It worked for me 100% once I worked through all of the setup.

Thanks,

Wayne

Douglas Miller

unread,
Sep 10, 2022, 8:58:49 PM9/10/22
to RC2014-Z80
As others have already noted, there is a MT011 wizNET (W5500 chip) card and we have software to support it for CP/NET. This uses TCP/IP Socket connections as the transport for CP/NET messages. Jay Cotton also has made some "traditional" (Unix-like) Ethernet tools that support the MT011.

If you're looking to build your own, and are looking at WizNET products, I would strongly recommend nothing older than the W5500 chip. There are significant limitations on those earlier chips, and require more complex Z80 software to drive them. The Featherwing WizNET adapter used in the MT011 has one known problem - the RESET line is not connected and so you cannot reset the hardware without a power-cycle or using the "software reset" command. There are other W5500 modules that do have RESET connected (the Wiz850io https://www.wiznet.io/product-item/wiz850io/ is one I used on the Heath H8).

Note that the MT011 is a "somewhat generic" SPI adapter, we have added an FRAM chip and it supports SDCard as well. It can be used as a starting point for other devices that communicate with the host via SPI.

The only issue with the MT011 might be dependency (limitation) on CPU clock speed. I use mine on a Z180 running at 18.432MHz. I don't think you can run much faster than that without special selection of parts and/or redesign.

Mark T

unread,
Sep 12, 2022, 3:58:43 PM9/12/22
to RC2014-Z80
For the MT011 there are two different contributors to the clock speed limit.

Address decoding delays can possibly require an Extra NOP between write and read, or between reads. I was limited with what was available at the time but 74ALS10 seemed to be enough to allow 20MHz operation without extra NOPs added. Its likely that 74ACT10 would be better, as would replacing the ‘688/682 with 74ACT521 or replace the ‘138 with 74ACT138. Even replacing only one of these in the address decoding might be enough to increase clock frequency.

The other possible issue is propogation delay of the 74LS165 and setup time of the 74LS595. These might degrade the timing of the spi clock relative to data input and output. 74AHCT595 might be best choice as it is driving the RC2014 bus so should probably avoid ACT. For the ‘165 maybe ALS, ACT or AHCT 165 if they can be sourced.

If 74AHC165 is available it might be better to power from 3.3v and remove the 74AHC02 level converter, but not sure if 74AHC even exists.

It might be possible to improve clock timing by tuning the delay in clock to the shift registers to optimize timing for the SPI clock relative to input and output data.

If anyone wants to try a redesign I can release the eagle design files, under some copyleft license, but it might be just as easy to recreate from the schematic in kicad or easyeda. 

I can also provide the gerbers for the previous module using micro sd sockets and a pmod interface if anyone is interested. That version might be better to try different variants of wiznet modules.

Alan Cox

unread,
Sep 12, 2022, 5:07:36 PM9/12/22
to rc201...@googlegroups.com
> If you're looking to build your own, and are looking at WizNET products, I would strongly recommend nothing older than the W5500 chip. There are significant limitations on those earlier chips, and require more complex Z80 software to drive them.

For an SPI chip the 5500 is definitely the best (and usually
cheapest). You can pick up a cheap SPI one with voltage generators etc
and hook it straight to the Z180 CSIO bus and control lines on the
SC126 and similar and the speed is quite decent. No need for any extra
boards at all.

For the Z80 I prefer to use the W5300 as it is cleaner and faster
(it's got an 8 or 16bit bus interface so needs little more than a
carrier card and some voltage fudging with a Z80 CPU), but it is much
pricier although I think possibly cheaper than building an MT011.

For the MT011 just like running the usual 5v Arduino adapter native
over CSIO you can just hook it up to the system reset line on the SCC
systems. I had *real* trouble on the traditional RC2014 parts as the
5500 seems to need a fairly clean reset. That can be fudged with a PIO
line or similar, or just a tiny bit of PCB with a reset controller.

Code for the 5100-5500 over SPI (except 5300) is almost identical -
different offsets/constants and some very nice improvements in the
5500 particularly when reading/writing data packets.

Alan

Lanea Lucy Schwarz

unread,
Dec 9, 2022, 5:47:59 PM12/9/22
to RC2014-Z80
what about with serial?

Lanea Lucy Schwarz

unread,
Dec 9, 2022, 5:48:30 PM12/9/22
to RC2014-Z80
so what would be the minimal hardware required now?

Douglas Miller

unread,
Dec 9, 2022, 5:53:37 PM12/9/22
to RC2014-Z80
I use the MT011 board for WixNET on my RC2014. It is an SPI interface, and is what the cpnet-z80 software supports. I add an (SPI connected) FRAM chip there, to keep the ethernet setup in non-volatile RAM, although you can build a version without that - which means you have to initialize the WizNET every time you power up.

For serial, it really depends on what serial ports you have on the RC2014. We have several different serial ports that are currently supported by cpnet-z80, and usually adding more is pretty simple. This works best if the serial port has full hardware handshake, which port B on the Z180 does not have.

Lanea Lucy Schwarz

unread,
Dec 9, 2022, 8:55:36 PM12/9/22
to RC2014-Z80
So w5500 with spi interface is the minimum configuration with networking. Thx

The serial part was actually meant to Wayne and implementing it into RomWBW, because I only saw mentioning wiznet stuff in his code

Douglas Miller

unread,
Dec 10, 2022, 3:36:42 PM12/10/22
to RC2014-Z80
For interfacing to Ethernet TCP/IP the W5500 is a good choice. That chip interfaces using SPI, and the MT011 is my preference for SPI. It is possible to interface a W5500 to a Z180 directly, but it has issues. The MT011 is designed for the "Featherwing" module, which uses the W5500 chip. There are other "WizNET" modules that also use the W5500, but they are not direct-plugins for the MT011.

On Friday, December 9, 2022 at 7:55:36 PM UTC-6 lane...@gmail.com wrote:
So w5500 with spi interface is the minimum configuration with networking. Thx
...

Lanea Lucy Schwarz

unread,
Dec 12, 2022, 7:49:08 AM12/12/22
to RC2014-Z80
Is there a place to buy a mt011 ready assembled or at least as a complete kit?
Thx

Tadeusz Pycio

unread,
Dec 12, 2022, 8:11:09 AM12/12/22
to RC2014-Z80
Hi Douglas,
Would SPI speeds up to 5MHz be sufficient to support the W5500 in your CP/Net application? I have revisited the design of the SPI module on the TP3465 which are lying in my drawer. I was thinking SD only, but nothing is stopping me from adding flash and Wiznet in there too.

Douglas Miller

unread,
Dec 12, 2022, 8:13:22 AM12/12/22
to RC2014-Z80
I've never seen anyplace that stocks these boards or provides kits. I got my PCB from Jay Cotton who had extras. In fact, he also gifted me a spare PCB which I could pass along for the cost of shipping. I can provide you with list of parts I used to build mine, and photos and other help. Jay also can help.

Douglas Miller

unread,
Dec 12, 2022, 8:16:45 AM12/12/22
to RC2014-Z80
The CP/NET code currently assumes the SPI runs at the CPU speed or faster (Z80 block I/O instructions are used as well as back-to-back IN/OUT instructions). The shift registers on the MT011 run off the CPU clock, so there is no overhead for software.

Alan Cox

unread,
Dec 12, 2022, 8:51:10 AM12/12/22
to rc201...@googlegroups.com
On Mon, 12 Dec 2022 at 13:11, Tadeusz Pycio <ta...@wp.pl> wrote:
>
> Hi Douglas,
> Would SPI speeds up to 5MHz be sufficient to support the W5500 in your CP/Net application? I have revisited the design of the SPI module on the TP3465 which are lying in my drawer. I was thinking SD only, but nothing is stopping me from adding flash and Wiznet in there too.

CP/Net is an unwindowed synchronous protocol. Everything that matters
is the latency so having a relatively slow SPI interface doesn't make
that much difference (and a serial interface will often outperform
ethernet as a result).

Douglas Miller

unread,
Dec 12, 2022, 9:03:03 AM12/12/22
to RC2014-Z80
I've found the opposite to be true. The CP/NET messages are transmitted over Ethernet very quickly, and the thing you're left with is the host transfer speed to/from the WizNET. Even serial at 115200 baud is quite a bit slower than WizNET (as implemented) for CP/NET.

Lanea Lucy Schwarz

unread,
Dec 12, 2022, 1:04:58 PM12/12/22
to RC2014-Z80
@wayne, what's about cp/net implementation of Douglas with serial instead of mt011 in RomWBW?

Wayne Warthen

unread,
Dec 12, 2022, 2:03:27 PM12/12/22
to RC2014-Z80
The MT011-based CP/NET client code for RomWBW was created by Douglas -- I am just "redistributing" his work.  😀  I am not sure what it would take to create a serial version.

-Wayne

Douglas Miller

unread,
Dec 12, 2022, 2:18:31 PM12/12/22
to RC2014-Z80
I thought Jay Cotton did some work on a RomWBW version of CP/NET, in the https://github.com/durgadas311/cpnet-z80 repository. I believe this is the "rc-siob" target HBA. If the "B" port on your hardware has handshake lines connected, then I think that will work. If you need (don't want to build yourself), I can build this for you and post a tarball.

Lanea Lucy Schwarz

unread,
Dec 12, 2022, 4:20:07 PM12/12/22
to RC2014-Z80
There is already a serial version. But I would be really cool, if it could be interested together with hbios

Lanea Lucy Schwarz

unread,
Dec 12, 2022, 4:23:38 PM12/12/22
to RC2014-Z80
After the missing files got added, I should be able to compile them myself. Only need to see, how to squeeze them into them RomWBW ROM, because I don't have any data storage yet. But that's the reason, why I want cp/net get to work 

Wayne Warthen

unread,
Dec 12, 2022, 6:42:51 PM12/12/22
to RC2014-Z80
On Monday, December 12, 2022 at 11:18:31 AM UTC-8 Douglas Miller wrote:
I thought Jay Cotton did some work on a RomWBW version of CP/NET, in the https://github.com/durgadas311/cpnet-z80 repository. I believe this is the "rc-siob" target HBA. If the "B" port on your hardware has handshake lines connected, then I think that will work. If you need (don't want to build yourself), I can build this for you and post a tarball.

I forgot about this.  In theory, as long as your hardware has a second serial port and that port has working flow control, this should work.  It will be pretty sluggish because: 1) it is serial, and 2) has the overhead of RomWBW HBIOS.

-Wayne 

Wayne Warthen

unread,
Dec 12, 2022, 6:52:14 PM12/12/22
to RC2014-Z80
On Monday, December 12, 2022 at 1:20:07 PM UTC-8 lane...@gmail.com wrote:
There is already a serial version. But I would be really cool, if it could be interested together with hbios

Hmmm... depends on what you mean by integrated.  It is already integrated in the sense that the rc-siob HBA uses the RomWBW HBIOS API for access to the serial port.  So, whatever serial port hardware you have on your system, it should "just work".  If by integrated you mean including the client files in the RomWBW distribution, that has not been done.  However, there is nothing more to it than copying the required files over to your boot disk and using the right commands to load the client.

-Wayne

Bill Shen

unread,
Dec 13, 2022, 8:53:39 AM12/13/22
to RC2014-Z80
RomWBW support of CP/NET via serial ports caught my attention.  I added a quad serial board to my K80 which already has a KIO with 2 SIO.  Rebuilt RomWBW with UART4 enabled and set appropriate serial clock for 22MHz CPU.  Picture shows what I got.  QuadSer is working because the console is UART0 of QuadSer, so now I have six serial ports.  QuadSer is based on OX16C954 which is a very capable serial device with 128-byte FIFO on all four transmitter and receivers.  Datasheet says with 60MHz clock it can run 15Mbps, so with 22MHz clock it potentially can do 5Mbps.  The standard 921600bps is probably more realistic.  It may be interesting to run CP/NET with this setup.
  Bill
K80+QuadSer_ROMWBW.jpg

Douglas Miller

unread,
Dec 13, 2022, 9:13:39 AM12/13/22
to RC2014-Z80
Wayne, I don't recall whether I gave you a full CP/NET distro, but I do recall providing a "network boot" command extension for the MT011/WizNET. Did you also put the CP/NET distro files in one of your filesystems?
 

Lanea Lucy Schwarz

unread,
Dec 13, 2022, 11:13:13 AM12/13/22
to RC2014-Z80
I only saw some code for wiznet, but not for siob. Maybe it would be interesting to create a ROM disk that is speciali for netboot/cp/net. So the romdisk would only have minimal things that are needed for cp/m to start and then load cp/net.

This would really help me, because other then RAM and ROM I don't have any storage on my rc2014 yet. And serial is one of the minimum required hardware, so every working machine has this and would be able to have in conjunction with a modern PC and the right software be able to have permanent data storage.

Lanea Lucy Schwarz

unread,
Dec 13, 2022, 12:23:24 PM12/13/22
to RC2014-Z80
I just had the idea of a hbios hba driver. That would be great for multiple connections if this is possible 

Douglas Miller schrieb am Montag, 12. Dezember 2022 um 20:18:31 UTC+1:

Douglas Miller

unread,
Dec 13, 2022, 12:42:10 PM12/13/22
to RC2014-Z80
This depends on what you mean by multiple connections. The CpnetSerialServer code will actually work as a proxy for connections to other servers - but over TCP/IP sockets. The current HBA=rc-siob code uses whatever serial port RomWBW has designated "B". The code could probably be easily changed to pass whatever value is needed to RomWBW to select an alternate serial port. CP/NET clients typically have a single network link (ethernet, serial, whatever), but access to multiple servers is already there, provided there is a route to the server. CpnetSerialServer provides that ability to contact multiple servers (over sockets) using a single serial link.

Once you build cpnet-z80 for NIC=ser-dri HBA=rc-siob you should have all that you need. For a minimal startup, you'll need to download CPNBOOT.COM to your RomWBW system (under CP/M 2.2), and then configure CpnetSerialServer to provide netboot capability for the NDOS.SPR and SNIOS.SPR (in addition to the rest of the configuration required to run the server on your PC). In addition, you setup a "drive" on the server that contains all the CP/NET utilities (and any other ones you want). Then, when you run CPNBOOT you will specify the mapping of drive A: to the server drive with the utilities (which must include CCP.SPR). This should get you running with a minimum of downloading to the system. We can go into the procedure in more depth.

Wayne Warthen

unread,
Dec 13, 2022, 6:40:19 PM12/13/22
to RC2014-Z80
On Tuesday, December 13, 2022 at 5:53:39 AM UTC-8 Bill Shen wrote:
RomWBW support of CP/NET via serial ports caught my attention.  I added a quad serial board to my K80 which already has a KIO with 2 SIO.  Rebuilt RomWBW with UART4 enabled and set appropriate serial clock for 22MHz CPU.  Picture shows what I got.  QuadSer is working because the console is UART0 of QuadSer, so now I have six serial ports.  QuadSer is based on OX16C954 which is a very capable serial device with 128-byte FIFO on all four transmitter and receivers.  Datasheet says with 60MHz clock it can run 15Mbps, so with 22MHz clock it potentially can do 5Mbps.  The standard 921600bps is probably more realistic.  It may be interesting to run CP/NET with this setup.

Yes, the OX16C954 would be an excellent device for a serial interface for CP/NET.  It's deep FIFO and hardware flow control should allow it to go pretty fast, especially on a system with a fast CPU clock.  I wouldn't expect it to be as fast or as reliable as the MT011 with WizNet, but it would be as good as it gets for a serial interface.

-Wayne

Wayne Warthen

unread,
Dec 13, 2022, 6:54:05 PM12/13/22
to RC2014-Z80
On Tuesday, December 13, 2022 at 6:13:39 AM UTC-8 Douglas Miller wrote:
Wayne, I don't recall whether I gave you a full CP/NET distro, but I do recall providing a "network boot" command extension for the MT011/WizNET. Did you also put the CP/NET distro files in one of your filesystems?

Hi Douglas,

I believe you gave me a full distro (for WizNET only).

User area 5 in the current RomWBW disk images (dev branch) has all of the CP/NET client files.  I pulled out my RC2014 Z180 system yesterday and confirmed I have no trouble booting RomWBW normally (CP/M 2.2 or CP/M 3), loading CP/NET (CPNETLDR), and mapping drives to the server (running CpnetSocketServer).  This is all via the MT011 WizNET.  Essentially, you just copy all of the files from user area 5 to user area 0 to "enhance" your default CP/M with CP/NET.

You also provided me with a binary that allows RomWBW to boot CP/NET directly from the server.  This is built into the RomWBW ROM.  You just select option 'N' at the bootloader.  This will work fine on a "diskless" RomWBW system.  Obviously, the server must be configured and hosting the right network boot binary (defboot.sys).  This boots your CP/M adaptation that does not have some of the normal RomWBW stuff, but works fine.  I think it is specific to a Z180 running an MT011.

There is also a CPNBOOT.COM file in the distribution you provided.  I have not gotten that to work though.  On the server, I get a message that snios.spr is missing, but it is definitely there and in the right place.  I have not tried to track this down further.

Thanks,

Wayne

Wayne Warthen

unread,
Dec 13, 2022, 7:03:11 PM12/13/22
to RC2014-Z80
On Tuesday, December 13, 2022 at 9:23:24 AM UTC-8 lane...@gmail.com wrote:
I just had the idea of a hbios hba driver. That would be great for multiple connections if this is possible 

Yes, this idea came up when Douglas implemented the existing RC2014 support.  I think something like this is a good idea, but is not going to happen quickly.  It really would not address multiple connections directly.  I see that Douglas has already answered that though.

Thanks,

Wayne 

Wayne Warthen

unread,
Dec 13, 2022, 7:10:13 PM12/13/22
to RC2014-Z80
On Tuesday, December 13, 2022 at 3:54:05 PM UTC-8 Wayne Warthen wrote:
There is also a CPNBOOT.COM file in the distribution you provided.  I have not gotten that to work though.  On the server, I get a message that snios.spr is missing, but it is definitely there and in the right place.  I have not tried to track this down further.

Douglas,

Here is what I see on CpnetSocketServer when I try to launch CPNBOOT.  It looks like there is some extraneous character in the filename:

CpnetSocketServer v1.3
Using config in cpnet00.rc
Server 00 Listening on 192.168.1.3 port 31100 debug false
Connection from 192.168.1.201 (31100)
Remote 192.168.1.201 is f0
Creating HostFileBdos 00 device with root dir /home/wayne/cpnet/root
java.io.FileNotFoundException: /home/wayne/NetBoot/snios�.spr (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at NetBootLdr.loadSpr(NetBootLdr.java:149)
        at NetBootLdr.<init>(NetBootLdr.java:84)
        at NetworkBoot.doStart(NetworkBoot.java:127)
        at CpnetSocketServer$CpnetSocketServerConnection.startBoot(CpnetSocketServer.java:422)
        at CpnetSocketServer$CpnetSocketServerConnection.processMsg(CpnetSocketServer.java:449)
        at CpnetSocketServer$CpnetSocketServerConnection.run(CpnetSocketServer.java:522)
        at java.lang.Thread.run(Thread.java:745)
Disconnected from 192.168.1.201 (f0)

Any ideas?

-Wayne

Alan Cox

unread,
Dec 13, 2022, 8:07:39 PM12/13/22
to rc201...@googlegroups.com
> I forgot about this. In theory, as long as your hardware has a second serial port and that port has working flow control, this should work. It will be pretty sluggish because: 1) it is serial, and 2) has the overhead of RomWBW HBIOS.

Much of that ought to be mitigatable. If ROMWBW had a set of entry
points that matched the SNIOS itself then the serial driver (if used)
can in turn optionally have a private implementation of
SENDMSG/RECEIVEMSG so could avoid a lot of the overhead and be able to
poll in a loop.

Alan

Wayne Warthen

unread,
Dec 13, 2022, 9:25:09 PM12/13/22
to RC2014-Z80
Agree.  That is basically the idea of having a generic "RomWBW HBIOS" HBA.  In fact, it would just
be an API that generally matches the SNIOS API, so the SNIOS module would be a simple
proxy into the RomWBW "network device" API.

Thanks,

Wayne 

Lanea Lucy Schwarz

unread,
Dec 14, 2022, 10:31:45 AM12/14/22
to RC2014-Z80
That sounds great. Do you have some more specific documentation to get this working?

Lanea Lucy Schwarz

unread,
Dec 14, 2022, 10:35:02 AM12/14/22
to RC2014-Z80
Is the n option only in dev or in master too?

Douglas Miller

unread,
Dec 14, 2022, 12:15:30 PM12/14/22
to RC2014-Z80
I hope this is documented in https://github.com/durgadas311/cpnet-z80, but I'm not sure it is as coherent as it should be. The server docs are in the 'doc' subdirectory, along with the CP/NET manual. The CPNBOOT "help" file is:

///1CPNBOOT

Syntax:

CPNBOOT {sid} {maps...} {tag}

Explanation:

The CPNBOOT command loads and starts CP/NET on an existing CP/M
system, using files from the designated server. It must be linked to a
SNIOS configured for the network hardware in use on the system.

By default, it maps drive A: to the server drive A:. The server drive
A: must have CCP.SPR in order for the boot to succeed. It also maps
LST: to List #0 by default. If maps are given, the defaults are not
used. Note, drive A: must contain CCP.SPR and if not mapped, local
drive A: must have CCP.SPR on it before booting.

Maps are the simple form (no server ID) of expressions used for
NETWORK.

Example:

A>CPNBOOT
MinZ ASCI1 Network Loader

BIOS F600 0A00
BDOS E800 0E00
SNIOS SPR E500 0300
NDOS SPR D900 0C00

54K TPA

A>

Lanea Lucy Schwarz

unread,
Dec 14, 2022, 12:53:28 PM12/14/22
to RC2014-Z80
And where I can find cpnboot? Because it doesn't compiled, or at least it isn't in bldg/ser-dri/rc-siob/bin/cpnet12

And I have another problem. When I start the cpnet serial server with cpnet_console in the config, I get invalid class in attachment. Both for StdioSerial and TelnetSerial.
Because I only have one USB to ttl converter at the time, because I don't find my other's, I would need this.

Tadeusz Pycio

unread,
Dec 14, 2022, 1:27:29 PM12/14/22
to RC2014-Z80
I hope this is documented in https://github.com/durgadas311/cpnet-z80, but I'm not sure it is as coherent as it should be. The server docs are in the 'doc' subdirectory, along with the CP/NET manual.

I believe that the documentation there is complete enough to enable me to build all the CP/Net compnents on a completely different solution that I used in my project. :-)

Douglas Miller

unread,
Dec 14, 2022, 2:14:58 PM12/14/22
to RC2014-Z80
I see that I have not made CPNBOOT.COM a universal build target. Looks like it currently is only built for The MinZ computer and the MT011/WizNET config. I can't think of any reason it won't work for rc-siob, if you edit/create src/rc-siob/makevars and add "XCPN2 += cpnboot.com".

As far as the invalid class error, I'd need to see the message to be sure. But I believe you are wanting to use a physical serial port (or USB "tty") and so you need to install JSerialComm as described in the CpnetSerialServer manual. There is an example (Linux) script showing how to invoke the server with the additional JSerialComm JAR.

The cpnet_console option will complicate things a bit, in that I added that as an experiment to see if I could really run CP/NET on a system with nothing more than a single serial port. Note that the default configuration of "rc-siob" is to use the "B" port for CP/NET, which is not going to work with the cpnet_console option. I have not looked at Jay's implementation in detail, so not sure how easy it would be to make it work in the environment where both console and CP/NET traffic use the same port. There were some tricks needed to keep the console traffic separate from CP/NET.

Wayne Warthen

unread,
Dec 14, 2022, 4:18:23 PM12/14/22
to RC2014-Z80
On Wednesday, December 14, 2022 at 7:35:02 AM UTC-8 lane...@gmail.com wrote:
Is the n option only in dev or in master too?

Only in dev.  In case you haven't seen it, note that there is a full build of the latest dev branch code maintained on the releases page.  It is called the Development Snapshot.

-Wayne 

Douglas Miller

unread,
Dec 14, 2022, 5:40:16 PM12/14/22
to RC2014-Z80
Wayne discovered a bug in CPNBOOT, and I just fixed that. I've updated tarballs. I also did a build of rc-siob (still using SIO B for CP/NET) which includes CPNBOOT.COM. I don't plan on committing that change until I have confirmation that it works (added file src/rc-siob/makevars). If I pull my RC2014 out of storage sometime soon, I'll test it out myself.



Wayne Warthen

unread,
Dec 14, 2022, 7:08:00 PM12/14/22
to RC2014-Z80
Super fast work on this Douglas!

I have updated the CP/NET files in the RomWBW distribution (dev branch and Development Snapshot) with the new MT011 files provided by Douglas.  The new CPNBOOT.COM is working great for me (MT011).  I previously said that the CP/NET files are found in user area 5 on the RomWBW disk images.  I was mistaken.  They are actually in user area 4.

I have not tested or incorporated the serial interface (rc-siob).  I plan to do this, but I am headed out of town for 10 days starting tomorrow morning, so I won't be able to get to that for a couple weeks.  If anyone else gets a chance to test the rc-siob stuff, please let me know.

Thanks,

Wayne

Lanea Lucy Schwarz

unread,
Dec 15, 2022, 8:39:53 PM12/15/22
to RC2014-Z80
The class error comes from the cpnet_console option, not from missing jserialcomm or so. I don't have a second USB mini cable for a second USB ttl converter at the moment so I only have one serial port. That's why I want to use the console passthrough in your cpnet implementation.
Because of the rc-siob hba uses the b port: I think it should be relative easy to change this to the first char device of hbios, if I understand how it works right. I need to see. But without the java cpnet implementation serial passthrough not working, this would be useless, so first this need to work.

Lanea Lucy Schwarz

unread,
Dec 15, 2022, 8:40:28 PM12/15/22
to RC2014-Z80
Thx

Douglas Miller

unread,
Dec 15, 2022, 8:57:20 PM12/15/22
to RC2014-Z80
I'll need to see your config file and the actual error message (JAVA stack trace). The single serial port option may work just fine, that's just not an environment I tested.

Lanea Lucy Schwarz

unread,
Dec 16, 2022, 8:35:38 AM12/16/22
to RC2014-Z80
There is no stack trace, only the error message "invalid class in attachment: StdioSerial"

Lanea Lucy Schwarz

unread,
Dec 16, 2022, 8:38:30 AM12/16/22
to RC2014-Z80
there is my config and a screenshot

Douglas Miller schrieb am Freitag, 16. Dezember 2022 um 02:57:20 UTC+1:
config
Bildschirmfoto von 2022-12-16 14-37-54.png

Douglas Miller

unread,
Dec 16, 2022, 9:09:41 AM12/16/22
to RC2014-Z80
After reviewing this whole console option, I see that StdioSerial is not a standard part of the server - most likely because it is so difficult to get working. I'm not sure why I documented it, I need to remove that. I had added it in a special build for my "minimal system" project, but it was so problematic that I abandoned it. I would recommend getting TelnetSerial to work.

For getting TelnetSerial to work, I may need to see the error you are getting for that. But, from your config file I have a couple suggestions. A) trying a higher port number, just to be sure your system does not restrict port numbers below, say, 3000. B) The use of "127.0.0.1" may be a problem, too. I notice that on my system the "localhost" name resolves to "127.0.1.1" which also resolves to the hostname of my system. I've had success using the real IP address of my system (e.g. 192.168.0.5) both places or using "localhost" in the config file and the name returned by 'hostname' on the telnet command. (but that could just be some anomaly of my network setup).

If you are still having trouble getting TelnetSerial to work, post the error/stack-trace here.

Lanea Lucy Schwarz

unread,
Dec 16, 2022, 4:59:39 PM12/16/22
to RC2014-Z80
TelnetSerial gives the same error, just with TelnetSerial at the end, instead of StdioSerial 

Douglas Miller

unread,
Dec 16, 2022, 5:38:44 PM12/16/22
to RC2014-Z80
I dug up a USB-RS232 dongle and was able to reproduce this. There was a subtle bug in the order of initialization that was causing an NPE when TelnetSerial started (it was actually listening on the port, and might have even been semi-functional). Not sure when I introduced that, but it is fixed now. The exception handling in the attachment routine could be more robust (NPE is different than Class Not Found, etc), but I'll need to identify specific exceptions that might occur - gets messy.

Fix has been pushed to the cpnet-z80 repo.

Thanks.

Douglas Miller

unread,
Dec 17, 2022, 7:16:29 AM12/17/22
to RC2014-Z80
It looks like this bug was being hidden by the use of the "modem" option for TelnetSerial, which all my config files for the "minimal CP/M system" used. The "modem" option causes feedback via CTS, DSR, DCD of the telnet connection status, which avoids doing some things in the constructor for TelnetSerial (and thus avoided the NPE). You may want to use "modem" (and probably "nodtr") in your config anyway.
Reply all
Reply to author
Forward
0 new messages