Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Accessing CP/M emulator serial ports on same system (Z80pack, Yaze-AG, Joyce)?

149 views
Skip to first unread message

Richard Deane

unread,
Sep 8, 2018, 4:45:42 AM9/8/18
to
I have been experimenting with several CP/M emulators and wish to find a way to access the emulator serial ports on the same host system, not attaching the emulator to a real external serial cable, i.e. be able to run teraterm serial connection(windows) or minicom (Linux or OSX) on host to the CP/M CON:, AUX: LPT etc.

I would also like to be able to run generic CP/M kermit (typically kerm411.com which uses IOBYTE under CP/M)) within the emulator to c-kermit running on a serial port on the host.

I am hoping that someone reading this group has made the journey before me and can share that experience.

My experience so far is as follows:

1) Z80pack 1.36 : It is documented how to attach the host software to the unix port e.g. for cpmsim using cpmsim.auxout. Although that seems to present AUXIN and AUXOUT separately
which isn't then accessible as one device from minicom for bidirectional access. I've not been able to make it work, never seeing data through minicom. Also as I understand it it is often additional SIO ports which are emulated out to the host and it doesn't seem as though common cpm devices con:, lpt:, aux: can be accessed from outside. I am guessing that there are points that I've missed or are not documented.

2) Yaze-AG - Only seems able to attach a CP/M device to a real physical serial device (e.g. USB FTDI cable). Would be nice if a virtual device could be created and accessed.

3) Joyce 2.2.12 - This emulates an Amstrad serial board and appears to present by default as /dev/ttys0 which exists by default on my Mac osx but not on my raspberry pi linux. I can't get that to work on osx or pi linux.

Are there any aspects of these ports on unix/linux which need additional configuration e.g. permissions? I would assume that if a user account can launch an app that the same user should be able to access a device that the app has hopefully attached to.

Richard

Udo Munk

unread,
Sep 8, 2018, 6:29:03 AM9/8/18
to
For z80pack cpmsim:

The auxin/auxout connections are named pipes, these are uni-directional, so one
needs two of them. You cannot connect with kermit, minicom and the like, but
with the included send/receive tools. The reason for this is historical, when I
implemented this the UNIX mainframes used in 1987 had no TCP/IP stack.
This was the only possible way to get software into the emulation, there were
no cpmtools etc.

Later I added additional TCP/IP ports to the system, 4 server port so that one
can run MP/M with multiple terminals and run a CP/NET server. Then there is
one client port for CP/NET clients. The ports are enabled with configuration
files in cpmsim/conf, remove the .example extension from the files to activate.

I also build a CP/M kermit that uses the SIO with the client TCP/IP connection,
which you will find in the z80pack repository. Run a UNIX ckermit that listens
on some local TCP/IP port and configure this port in conf/net_client.conf.
Then run CP/M kermit to talk to the UNIX kermit.

For z80pack altairsim:
These machine has 2 serial ports break out as UNIX domain sockets, the B port
of a MITS 2SIO and a SIO Rev. 1 for the ACR. For connecting to the ports use
minicom or netcat on the UNIX side:

minicom -D unix#/tmp/.z80pack/altairsim.sio2
netcat -U /tmp/.z80pack/altairsim.tape <arguments>

I still need to build a CP/M kermit that uses 2SIO port B sometime.

For z80pack cromemcosim:
It has two TCP/IP ports connected to TU-ART's, used for running Cromix
with multiple terminals. Machine tells you so on startup, there is no
configuration for this. You also could use netcat or kermit on the UNIX
side to connect.

For z80pack imsaisim:
No networking ports yet, the second channel of the SIO is blocked
by a parallel keyboard for the VIO display, machine needs another
one for communication at another port address.

This is the current implementation for 1.36 and 1.37, the one in
development has internal improvements only, like baud rate for
terminal SIO's, workarounds for Windows and such.

If you need any other communication ports for these machines, the
best way is to create an issue on GitHub, then it will be worked on
sometime.

Udo Munk

unread,
Sep 8, 2018, 6:52:08 AM9/8/18
to
Then for developers:

z80pack has a module in iodevices, that provides TCP/IP
sockets and UNIX domain sockets for the emulations. The
module uses connection structures that allow to configure
the connections from configuration files or menus or
make them pre-configured. All emulations other than
cpmsim make use of this, so there are enough implementation
examples how to use the networking module.

I don't mind if the module is used in some other emulation
for providing networked serial ports. The code is very
sound and well tested on Linux, OSX, BSD, Windows.

Richard Deane

unread,
Sep 8, 2018, 7:55:33 AM9/8/18
to
Udo, Thank you, your replies have been very informative for me, I shall go back to z80pack and learn more with your kermit implementation.
p.s. I look forward to v1.37 release, I have my esp32 pico ready to play with Imsai.
Richard
0 new messages