Discussion:
[hercules-os380] Re: BBS
kerravon86@yahoo.com.au [hercules-os380]
2018-07-31 15:41:26 UTC
Permalink
And I think there is a new principle of not
having to code for all the hardware myself.
The emulator can handle that and my OS
only needs to handle a simpler version of
the hardware that doesn't change.

One day there may be a reason to
reinstate the older physical hardware.

And in the case of MVS/380 it actually
dictates new hardware that needs to be
made.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-07-31 15:59:18 UTC
Permalink
One unusual thing with serial ports as sockets
is that at hardware definition time you need to
decide whether this modem (serial port) is going
to be used in BBS mode, accepting incoming
connections, or whether it will be used to make
outgoing connections, and for the outgoing
connections you need to specify one
destination in advance.

On traditional hardware you would dial a
number to choose different destinations.
Maybe an upgraded version of that concept
is required. Have Bochs etc emulate not just
a serial port, but a modem, but not an
ordinary modem, a modem that accepts
"dialing" a URL and port number instead of
a phone number.

I'm not sure if there is a similar trick to make
a serial port function both as incoming and
outgoing.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-07-31 16:38:31 UTC
Permalink
Post by ***@yahoo.com.au [hercules-os380]
One unusual thing with serial ports as sockets
is that at hardware definition time you need to
decide whether this modem (serial port) is going
to be used in BBS mode, accepting incoming
connections, or whether it will be used to make
outgoing connections,
Turns out that this is in fact original modem behavior:

https://en.wikipedia.org/wiki/Hayes_command_set

"The modems operated in either "originate" or "answer" modes".


So I'm returning to a time before my time.

Note that I can define two COM ports in Bochs,
one for a BBS and one for outbound calls.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-07-31 17:27:02 UTC
Permalink
another could have used a signal pin
And maybe there should be a pin to say whether
data should be translated from EBCDIC to ASCII?

BFN. Paul.
ikj1234i@yahoo.com [hercules-os380]
2018-08-03 21:11:14 UTC
Permalink
Both Hercules and MVS 3.8 support serial ports.


However since MVS was almost always viewed as the "center of the universe",
the support for ASYNC (start-stop) serial ports was limited to incoming-only, and
TSO is the only app (that we have) that services incoming terminal connections,
where they appear as incoming dial-up type lines. The application (TCAM in this
case) opens a DCB whose DDNAME refers to a line in JCL such as


//ddname DD UNIT=68A


which in turn refers to a line in the Hercules conf file such as



068A 2703 lport=32003 dial=IN lnctl=tele2 uctrans=yes term=tty skip=88C9DF
Post by ***@yahoo.com.au [hercules-os380]
One unusual thing with serial ports as sockets
is that at hardware definition time you need to
decide whether this modem (serial port) is going
to be used in BBS mode, accepting incoming
connections, or whether it will be used to make
outgoing connections,
Same in Hercules, it's set using dial=IN (or OUT).


In the IBM 2703 for outgoing mode, there is a DIAL CCW command that
contains the destination digits to be dialled. In actual use this required the
2703 auto-call feature to be enabled for the line; the 2703 port would
connect to a modem (Western Electric data set type 103 or 202) in tandem
with an auto calling unit (Western Electric data aux. set type 801C). This stuff
all preceded the Hayes modems by a couple decades or so.
Post by ***@yahoo.com.au [hercules-os380]
and for the outgoing
connections you need to specify one
destination in advance.
Exactly the same in Hercules - the digits to be dialled are interpreted as

an IP address/port to connect to. AFAIK it's only used in bisync, that is,
there are no MVS3.8 hosted apps that act as async terminals placing
outgoing connections. Take a look at commadpt_initiate_userdial()
in commadpt.c....
kerravon86@yahoo.com.au [hercules-os380]
2018-08-04 15:30:33 UTC
Permalink
Post by ***@yahoo.com [hercules-os380]
Both Hercules and MVS 3.8 support serial ports.
068A 2703 lport=32003 dial=IN lnctl=tele2 uctrans=yes term=tty skip=88C9DF
Thanks for that. I started going through the
process of what would be required to write
BBS software for MVS and PDOS/370 with
this new technique, but I realized that if I
am writing from scratch it would probably
be better to make use of the socket
services provided by Jason Winter, so that
I can poll the incoming connection and
don't have a problem of the channel needing
to be bidirectional (maybe I have that
issue wrong).

I could do the same thing on Bochs/qemu
for PDOS/386 if I was familiar with the source
code. Otherwise I will use the serial port
emulation which comes ready-made on
both Bochs and qemu.

It would be great if we were to run our own
network on MVS et al as our replacement for
Yahoo.

I'll think about it some more.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-08-06 20:25:55 UTC
Permalink
(possible double-post due to Yahoo)
Post by ***@yahoo.com.au [hercules-os380]
Post by ***@yahoo.com [hercules-os380]
Both Hercules and MVS 3.8 support serial ports.
068A 2703 lport=32003 dial=IN lnctl=tele2 uctrans=yes term=tty skip=88C9DF
I'll think about it some more.
The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code.

I realized that this attraction also applies
to Hercules, where most Hercules versions
do not support Jason Winter sockets, but
do support the 2703.

I think it would be cool to be able to network
our Hercules instances, and allow zmodem
file transfers over the 2703.

I can envisage a problem with the read CCW
becoming blocked, waiting for data, and the
other side would need to send some data to
unblock it. So we would need a protocol
where there are spurious "enters" sent so that
the other end can look at the time and
realize that it has been blocked for a long
time and should consider resetting itself?

I'm not familiar with how to design a good
BBS system. Actually I don't need a BBS,
the focus is instead on a protocol to
connect, identify and exchange data
automatically. A BBS is secondary to that.

I also think the data exchange should be
designed to work on all of serial ports,
2703 and sockets.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-08-06 21:43:46 UTC
Permalink
"The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code."

Yes, BUT...

What client are you going to use to connect to that socket?

You will need a TCP client (i.e. something you're going to have to write)
to connect to that socket.

Joe
Post by ***@yahoo.com.au [hercules-os380]
(possible double-post due to Yahoo)
Post by ***@yahoo.com.au [hercules-os380]
Post by ***@yahoo.com [hercules-os380]
Both Hercules and MVS 3.8 support serial ports.
068A 2703 lport=32003 dial=IN lnctl=tele2 uctrans=yes term=tty
skip=88C9DF
Post by ***@yahoo.com.au [hercules-os380]
I'll think about it some more.
The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code.
I realized that this attraction also applies
to Hercules, where most Hercules versions
do not support Jason Winter sockets, but
do support the 2703.
I think it would be cool to be able to network
our Hercules instances, and allow zmodem
file transfers over the 2703.
I can envisage a problem with the read CCW
becoming blocked, waiting for data, and the
other side would need to send some data to
unblock it. So we would need a protocol
where there are spurious "enters" sent so that
the other end can look at the time and
realize that it has been blocked for a long
time and should consider resetting itself?
I'm not familiar with how to design a good
BBS system. Actually I don't need a BBS,
the focus is instead on a protocol to
connect, identify and exchange data
automatically. A BBS is secondary to that.
I also think the data exchange should be
designed to work on all of serial ports,
2703 and sockets.
BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-08-07 16:18:18 UTC
Permalink
Post by Joe Monk ***@gmail.com [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code.
What client are you going to use to connect to that socket?
You will need a TCP client (i.e. something you're
going to have to write) to connect to that socket.
Bochs et al support having a serial port appear
as a client socket.

I do need to write some comms software to
connect to the BBS, as well as the BBS
software.

In both cases this will be fairly minimal code,
mainly giving the user the option of sending
or receiving files via zmodem. I already have
the zmodem software which I wrote decades
ago when I was still a Fidonet node.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-08-08 03:16:15 UTC
Permalink
"Bochs et al support having a serial port appear
as a client socket"

Doesn't work that way AFAIK. A client would be like telnet connecting to
the port that is being advertised by the server.

For instance, telnetting to port 3270 to connect to Hercules. telnet is the
client and Hercules is the server on port 3270.

Likewise if the serial port wants on Bochs wants to connect to Hercules, it
would need to auto-telnet to port 3270.

You on the other hand need middleware to send/receive from the modem
(ASCII) and convert to/from EBCDIC and send/receive to Hercules.

So, the modem and Hercules will be servers, and your middleware will be the
client for both connections.

Joe
Post by ***@yahoo.com.au [hercules-os380]
Post by Joe Monk ***@gmail.com [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code.
What client are you going to use to connect to that socket?
You will need a TCP client (i.e. something you're
going to have to write) to connect to that socket.
Bochs et al support having a serial port appear
as a client socket.
I do need to write some comms software to
connect to the BBS, as well as the BBS
software.
In both cases this will be fairly minimal code,
mainly giving the user the option of sending
or receiving files via zmodem. I already have
the zmodem software which I wrote decades
ago when I was still a Fidonet node.
BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-08-08 08:10:42 UTC
Permalink
Post by Joe Monk ***@gmail.com [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
Bochs et al support having a serial port appear
as a client socket
Doesn't work that way AFAIK. A client would be like
telnet connecting to the port that is being advertised
by the server.
Yes, that's right. I would have Bochs define
perhaps COM2 as hercules-bbs.com 2703 socket-client

to go and connect to the Hercules BBS which
is listening on port 2703.

Communication across the link would be in ASCII,
with Hercules converting from ASCII to EBCDIC.

BFN. Paul.
ikj1234i@yahoo.com [hercules-os380]
2018-08-08 14:06:15 UTC
Permalink
Post by Joe Monk ***@gmail.com [hercules-os380]
For instance, telnetting to port 3270 to connect to Hercules.
telnet is the client and Hercules is
the server on port 3270.
Haven't played with bochs but in this case the role of the TCP client would be played by bochs. The application running inside the emulation provided by bochs would see an ordinary serial port. At connection or startup time the bochs emulator would issue the proper connect() call to place the TCP connection.
Post by Joe Monk ***@gmail.com [hercules-os380]
You on the other hand need middleware to send/receive
from the modem (ASCII) and convert to/from EBCDIC
and send/receive to Hercules.
In 2703 async mode the ASCII/EBCDIC conversion is done natively by TCAM in MVS. Why would "middleware" need to perform character translation?
Post by Joe Monk ***@gmail.com [hercules-os380]
How do you propose to connect two servers? >
Bochs is a server, the 2703 on Hercules is a server...
Bochs serial emulation can run in either socket-client or socket-server mode. In this case client mode would be used. As mentioned this particular combo hasn't been tested but should work (without middleware) if all pieces behave properly...



Max
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-08-08 22:47:31 UTC
Permalink
max, what you're not remembering is that bochs is a hardware emulator just
like Hercules and running a guest os. so what Paul is trying to do is
connect emulated os to emulated os via emulated hardware.

Joe
Post by ***@yahoo.com [hercules-os380]
Post by Joe Monk ***@gmail.com [hercules-os380]
For instance, telnetting to port 3270 to connect to Hercules.
telnet is the client and Hercules is
the server on port 3270.
Haven't played with bochs but in this case the role of the TCP client
would be played by bochs. The application running inside the emulation
provided by bochs would see an ordinary serial port. At connection or
startup time the bochs emulator would issue the proper connect() call to
place the TCP connection.
Post by Joe Monk ***@gmail.com [hercules-os380]
You on the other hand need middleware to send/receive
from the modem (ASCII) and convert to/from EBCDIC
and send/receive to Hercules.
In 2703 async mode the ASCII/EBCDIC conversion is done natively by TCAM in
MVS. Why would "middleware" need to perform character translation?
Post by Joe Monk ***@gmail.com [hercules-os380]
How do you propose to connect two servers?
Bochs is a server, the 2703 on Hercules is a server...
Bochs serial emulation can run in either socket-client or socket-server
mode. In this case client mode would be used. As mentioned this
particular combo hasn't been tested but should work (without middleware) if
all pieces behave properly...
Max
julialday@yahoo.com [hercules-os380]
2018-08-10 11:49:09 UTC
Permalink
Why do you think emulated os to emulated os would be a problem? One os is defined to have its serial port defined as a client socket and the other defined as a server socket.

Paul
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-08-10 17:26:13 UTC
Permalink
Yes, and what is underneath those?

You're running TWO hardware emulators (Bochs and Hercules) which have to
talk to ONE IP stack underlying those TWO emulators...

See the problem? Simply defining one side as 'client' and one side as
'server' doesn't mitigate.

Joe
Post by ***@yahoo.com [hercules-os380]
Why do you think emulated os to emulated os would be a problem? One os is
defined to have its serial port defined as a client socket and the other
defined as a server socket.
Paul
julialday@yahoo.com [hercules-os380]
2018-08-10 23:25:43 UTC
Permalink
The hercules and bochs emulaters are running on two different machines each with their own tcpip stacks

Paul
ikj1234i@yahoo.com [hercules-os380]
2018-08-10 18:33:52 UTC
Permalink
From the POV of the host's TCP/IP stack this case is no different than (say) the following cases:

- using a web browser to connect to a web server process running on the same (local) host via the HTTP or HTTPS ports

- using the 'telnet' client to connect to hercules (acting as a TCP server on some port on the local machine).


In both of those cases you have two separate apps making use of the one TCP/IP stack, with no conflicts...



Max
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-08-11 11:43:22 UTC
Permalink
I agree from the POV of the HOST's stack :

But we're not taking about the HOST's stack. We're talking about a DOS
hardware emulator running a homegrown OS with its own TCPIP stack and
handling on top of the HOST.

Joe
Post by ***@yahoo.com [hercules-os380]
From the POV of the host's TCP/IP stack this case is no different than
- using a web browser to connect to a web server process running on the
same (local) host via the HTTP or HTTPS ports
- using the 'telnet' client to connect to hercules (acting as a TCP server
on some port on the local machine).
In both of those cases you have two separate apps making use of the one
TCP/IP stack, with no conflicts...
Max
julialday@yahoo.com [hercules-os380]
2018-08-11 14:35:29 UTC
Permalink
The homegrown pdos386 does not have its own tcpip stack, it has a serial port

Paul

kerravon86@yahoo.com.au [hercules-os380]
2018-08-08 02:13:15 UTC
Permalink
(possible double-post due to Yahoo)
Post by Joe Monk ***@gmail.com [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code.
What client are you going to use to connect to that socket?
You will need a TCP client (i.e. something you're
going to have to write) to connect to that socket.
Bochs et al support having a serial port appear
as a client socket.

I do need to write some comms software to
connect to the BBS, as well as the BBS
software.

In both cases this will be fairly minimal code,
mainly giving the user the option of sending
or receiving files via zmodem. I already have
the zmodem software which I wrote decades
ago when I was still a Fidonet node.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-08-06 19:09:01 UTC
Permalink
Post by ***@yahoo.com.au [hercules-os380]
Post by ***@yahoo.com [hercules-os380]
Both Hercules and MVS 3.8 support serial ports.
068A 2703 lport=32003 dial=IN lnctl=tele2 uctrans=yes term=tty skip=88C9DF
I'll think about it some more.
The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code.

I realized that this attraction also applies
to Hercules, where most Hercules versions
do not support Jason Winter sockets, but
do support the 2703.

I think it would be cool to be able to network
our Hercules instances, and allow zmodem
file transfers over the 2703.

I can envisage a problem with the read CCW
becoming blocked, waiting for data, and the
other side would need to send some data to
unblock it. So we would need a protocol
where there are spurious "enters" sent so that
the other end can look at the time and
realize that it has been blocked for a long
time and should consider resetting itself?

I'm not familiar with how to design a good
BBS system. Actually I don't need a BBS,
the focus is instead on a protocol to
connect, identify and exchange data
automatically. A BBS is secondary to that.

I also think the data exchange should be
designed to work on all of serial ports,
2703 and sockets.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-08-07 03:50:31 UTC
Permalink
How do you propose to connect two servers?

Bochs is a server, the 2703 on Hercules is a server...

Joe
Post by ***@yahoo.com [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
Post by ***@yahoo.com [hercules-os380]
Both Hercules and MVS 3.8 support serial ports.
068A 2703 lport=32003 dial=IN lnctl=tele2 uctrans=yes term=tty
skip=88C9DF
Post by ***@yahoo.com.au [hercules-os380]
I'll think about it some more.
The attraction of the serial port on the PC
is that Bochs, qemu and Virtualbox all
support translating a serial port into a
socket without me needing to change the
source code.
I realized that this attraction also applies
to Hercules, where most Hercules versions
do not support Jason Winter sockets, but
do support the 2703.
I think it would be cool to be able to network
our Hercules instances, and allow zmodem
file transfers over the 2703.
I can envisage a problem with the read CCW
becoming blocked, waiting for data, and the
other side would need to send some data to
unblock it. So we would need a protocol
where there are spurious "enters" sent so that
the other end can look at the time and
realize that it has been blocked for a long
time and should consider resetting itself?
I'm not familiar with how to design a good
BBS system. Actually I don't need a BBS,
the focus is instead on a protocol to
connect, identify and exchange data
automatically. A BBS is secondary to that.
I also think the data exchange should be
designed to work on all of serial ports,
2703 and sockets.
BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-08-07 16:13:01 UTC
Permalink
Post by Joe Monk ***@gmail.com [hercules-os380]
How do you propose to connect two servers?
Bochs is a server, the 2703 on Hercules is a server...
Each node in the network, regardless of Bochs
or Hercules, would be configured to either be
a socket server or be a socket client, depending
on whether it will accept calls or make calls.

In addition, on both Bochs and Hercules I could
define one serial line for running as a BBS and
one for running as an end node.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-08-08 02:14:22 UTC
Permalink
(possible double-post due to Yahoo)
Post by Joe Monk ***@gmail.com [hercules-os380]
How do you propose to connect two servers?
Bochs is a server, the 2703 on Hercules is a server...
Each node in the network, regardless of Bochs
or Hercules, would be configured to either be
a socket server or be a socket client, depending
on whether it will accept calls or make calls.

In addition, on both Bochs and Hercules I could
define one serial line for running as a BBS and
one for running as an end node.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-07-31 18:27:39 UTC
Permalink
I'm thinking of starting a new network,
similar to Fidonet, but based on UUCP
instead.
Also with no hierarchy that can kick someone
out of the network. Instead, when there is a
personality clash in a newsgroup, the
newsgroup splits, and individual members
have to decide which side of the split they
wish to be on.

I guess each group needs a modifier so that
a member can choose to read messages
from both sides of the split.

So HERCULES-380:SPLIT1 and
HERCULES-380:SPLIT2.

Just because someone is claiming to be
the moderator of SPLIT1, he has no control
over SPLIT2, and there is no ability for him
to file a complaint against participants in
SPLIT2. All he can do is manage who is
allowed to participate or carry SPLIT1, to
the degree that anyone is willing to
cooperate with him.

Finally a decent Fidonet.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-08-05 20:22:22 UTC
Permalink
Newsgroups are transferred based on NNTP, the
network news transfer protocol. So in order to do
newsgroups, you will need NNTP reader.
UUCP is a program for copying files system to system.
I believe that for people who have slow and
non-permanent internet connections, a node
would bundle up news messages for another
node, and compress them, and transfer them
via uucp, similar to how Fidonet did it.

I'm only really familiar with Fidonet though.

BFN. Paul.
Loading...