networking options

If you have feature requests, this is the place to post them. Please note your idea may already be something we have already discussed and decided against, or something we are working on privately, and we cannot be held responsible for any similarities in such instance. Whilst we cannot respond to every suggestion, your idea will be read and responded to where possible. Thank you for your input!
neutrino
Posts: 182
Joined: Wed Oct 19, 2022 5:26 pm

networking options

Post by neutrino »



On 3/3/2022 at 6:31 PM, Edmond D said:




While TCP/IP is a late 70s evolution and the web is a late 80s invention, there is probably a lot of interest in having these available on the X16. I'm not expecting a browser that rivals Chrome (or event Netscape in it's day  ?)



Better to make something that lean and trim which exploits the graphics that is native in the machine, which will be way faster. Of course this would require network sites that have a tag coding tailored for the X16, like the Quantum Link. Alternatives are "lynx" style text, or an actual Quantum Link client.

TLS would be good too..

Also RS-232 only specifies the electrical interface. The actual communication is asynchronous.

 

An alternative to RS-232 could be RS-485 so one can create ad-hoc networks without special cables etc.

 

Edmond D
Posts: 489
Joined: Thu Aug 19, 2021 1:42 am

networking options

Post by Edmond D »



On 10/19/2022 at 4:41 PM, neutrino said:




Also RS-232 only specifies the electrical interface. The actual communication is asynchronous.



 



An alternative to RS-232 could be RS-485 so one can create ad-hoc networks without special cables etc.



 



The RS 232 standard has had many revisions and bad implementations.

As for RS-485 I'm curious about the comment of "without special cables ect" as every implementation I've encountered in industrial control was unique cables for each system.

I've recently re-thought my ideas around X16 networking. I've got a great modern computer for that type of stuff; the x16 for me will be a modern 8 bit machine not trying to do everything that a modern computer does, or at least that's how I plan on using it.

neutrino
Posts: 182
Joined: Wed Oct 19, 2022 5:26 pm

networking options

Post by neutrino »


As for RS-232 it really sucks because it's single ended. And requires a huge voltage swing. Probably okay for 110 bit/s teleprinters though.. ?

By using a differential signaling like RS-485 or even RS-422. A lot better chance of a signal getting to the destination is accomplished. The lack of differential operation is one of the great disadvantages of x86-PC-serial ports. The other is the lack of DMA.

So by using a differential signal system, short cables and low data rate <100 kbit/s. The quality of cables will matter a lot less. And most homes don't contain loads that continuously generate a lot of dI/dt interference ie huge motors etc.

Networking for the X16 is useful to load software quickly, cross-compile setups, browsing messaging systems or hypertext manuals.

 

Edmond D
Posts: 489
Joined: Thu Aug 19, 2021 1:42 am

networking options

Post by Edmond D »



On 10/19/2022 at 7:27 PM, neutrino said:




Networking for the X16 is useful to load software quickly, cross-compile setups, browsing messaging systems or hypertext manuals.



Yes, but the design goals of the X16 are for a simple 8 bit machine, not a modern network node. Yes, these would make life easier, but aren't in the base X16 plans as far as I know. 

A PINE based browser would be possible, but a fully compliant HTML5 one would be a push in my opinion.

 


On 10/19/2022 at 7:27 PM, neutrino said:




As for RS-232 it really sucks because it's single ended. And requires a huge voltage swing. Probably okay for 110 bit/s teleprinters though



It works well enough and was/is widely used in the 8 bit days. Huge voltage swing? - not really unless one has a 3.3V mindset.    


On 10/19/2022 at 7:27 PM, neutrino said:




And most homes don't contain loads that continuously generate a lot of dI/dt interference ie huge motors etc



The home interference spectrum has a lot of wireless devices and EMI now compared to the 80's. Air conditioners and heating systems are also in play, some of those can really drive up interference. 



One the X16 is commercially available let's see what the market demands in terms of additional capabilities. 

neutrino
Posts: 182
Joined: Wed Oct 19, 2022 5:26 pm

networking options

Post by neutrino »


The simplest networking option is likely using an existing UART on the board and add a MAX232. This would enable most networking for the least price. Perhaps just pull the 5V pads to three jumper pins?

For multi-drop operation and/or long wires a RS-485 transceiver can be wired in parallel to let the user select (the chip is like 1$ and uses a small footprint). Possible use is hackathons, multi gaming and downloads from a PC.

RS-232 works well in many instances. But it is fundamentally flawed compared to any low voltage differential setup. I looked into low speed (< 100 kbit/s) communication for home automation and it can quickly be observed that low voltage differential is superior. The only reason for huge swing, single ended operation is of de facto standardization inertia.

 

voidstar
Posts: 497
Joined: Thu Apr 15, 2021 8:05 am

networking options

Post by voidstar »


Connecting classic systems to the modern internet won't be worthwhile - no performance to absorb all the extra pushed traffic or (performant) capability to interact with the graphics.   But forget all that, and forget the idea of a web browser.

 

I suppose what I'm thinking is something like what is shown below -- which requires an "all new" kind of BBS host, and "all new" kind of terminal software for the various vintage systems.   That sounds bad (i.e. won't ever be built), but humor me for a bit, because there may be a compromise between what already exist and what needs to be built....

 

image.thumb.png.ec13d4291e4b3ec4c1dcf9764b0b8d0d.png

 

The WiModem232 does the work of relaying the local serial IO over to TCP/IP - so you just type "ATDTimts.com:1234"  (or something like that)

Most of the vintage systems have some kind of VT100 compatible terminal available (i.e. can interpret those ANSI escape sequences).  But the "experience" is going to be inconsistent.

First, consider baud rate.   The baud is a function of several aspects: the serial IO hardware available, the MHz of the system, AND how efficiently the terminal software is written.   Collectively, all that translates into a max baud rate that that terminal software can support.  If you bump up the baud rate just a little bit, it might still kind-of work, but will start to drop characters here and there -- the dropping of characters is (generally) the terminal software not being able to keep up (increasing the MHz of the system might be enough to compensate, but of course at the risk of causing other issues).    At least, these were my observations on the PET 4016 and IBM PC 5150 with original serial card.   If the characters stop entirely, that's probably past the hardware limits (i.e. wrong baud rate).

 

Next, VT100: not all the terminal software interprets all the escape sequences consistently.  I don't have a specific example to refer to, other than in the PETTERM documentation I recall the author saying something to the effect of "not all VT100 commands are interpreted" (a similar statement is in Brutman mTCP telnet documentation - it may depend on the version, as the software may be incrementally adding more support over time: mTCP Telnet client for DOS (brutman.com) -- the Netris thing is neat)

 

Then the BBS software itself - most of them generally have to assume some kind of "text screen" resolution.  Some avoid "moving the cursor" and drawing things, being sensitive to connections that don't have 80x25 or 40x25, or just don't have the ability to draw on a screen (so we're going back to line printers...).   And some clients might not even support ASCII, or don't support lower case characters (think about that -- RIP password systems that require at least one lower case letter! haha).

 

Around 1988 or so, there was an alternative to ANSI called AVATAR.   As an example: with ANSI, you need about 7 full bytes to express a cursor movement.  I've forgotten the specifics, but something like:  ESC BRACKET CODE COL SEMICOLON ROW  ( <- [ M 34;54 ).  AVATAR used a shorter expression, to get that same information down to about 3 or 4 bytes.  In addition, AVATAR supports codes for "scrolling windows" - so you could have state info in a portion of the screen, and a "chat window" or "scrolling status window" in another portion (so in one short binary code, you could say "make a window this tall and wide starting at this x,y with foreground A and background B").  But supporting that windowing is asking a lot for whoever is implementing AVATAR - especially on a 64K or 32K RAM system.   But in general, when using an AVATAR supported BBS, it was roughly 2x as fast as ANSI (well, if color was involved).

 

When I wrote DestinyHunter for the 1MHz 6502-based PET, it was a struggle to get flicker free animation while using PETSCII -- parts of it had to be done in assembly.  So I can understand the challenges of writing a terminal program that buffers inputs, interprets escape sequences, and draws updates while polling for user inputs -- to then also add some game-state processing on top of that, it's rough (for a 1MHz 64KB system).  Asking people to write a NEW terminal software for a 1MHz isn't an easy thing to ask for (e.g. like more clients that support something like AVATAR -- I think QModem on the PC did).  You'd have to dust off a lot of old code, that's probably in assembler.   Like take PETTERM itself: the code (of just handling the serial IO traffic and interpret a few escape sequences) consumes about 4K RAM (it's on github).  But from that baseline, one could add support for new escape/code sequences - but not everyone is assembler savvy.  Having the "serial IO code" in C might help (or the groundwork of using inline-assembly to do the serial IO stuff) -- but the more "features" the terminal handles (like elaborate interpretation of escape/code sequences), that effectively slows down your baud rate (if you spend too much CPU time drawing stuff, you potentially start dropping characters in the serial IO buffers).

 

Around 1994-1996, we had some "graphical" BBS - using new protocols.  The concept was similar to ANSI or AVATAR, in that some sequence of binary was interpreted as a command to enter a certain graphics mode, draw some lines, fill this area with that color, etc.  On the initial connection, you just had to answer a question on if you supported whatever that protocol was (forget the names -- it was fairly short lived after Internet became affordable, and all the technical talent moved to web-browsers rather than any more fancy-terminal development -- but instead of using TheDraw to create the scenes of your BBS, you used a graphical paint-like editor and specified interactive objects like menus and such).  I ran a "graphical BBS" for only a few months, before accepting that the Internet was here to stay.

 

Anyhow, if we stick with existing VT100 terminals -  it seems a kind of "IMTS" could be made, a new kind of BBS host.  Most existing BBS host software (written for those old vintage systems) maintained a single connection -- some were advanced enough to handle multiple connections.   But this modern one would accept multiple connections, and ask "What resolution in your screen? "

I suppose a couple more questions could be asked, such as:

ABCDEFG

abcdefg

Do you see upper and lower case characters?   (I don't think there was ever a system that had lower-case only???)

Then clear and write to screen center "is this centered? -- if answer Yes, then they support VT100 and the screen size is correct.

 

From there, the "IMTS" would offer "experiences" based on the specified screen resolution, and the connected baud rate.  One experience could be coordinating a game of backgammon, across two different types of systems.   And to me, that's the main new-things this is offering beyond a telnet-connection and "classic BBS experience."    "IMTS" would focus on offering multi-player-heterogenous-systems experiences - and be another way for folks to make interesting use of vintage systems (or modern remakes).   

 

The modern telnet BBS's that are networked together to have multi-user chat rooms -- those are neat.  But I think it would be fun to have a dedicated host that acts as a kind of lobby and coordinates connections, to play some simple VT100 games (so it's not just resurrecting Lynx).  At some point, there is a threshold where a 1MHz 2400 baud client can't handle the traffic - so full MMO-style gameplay won't be practical.  It would need some "ground rules" where "this lobby requires 9600+ and accepting up to 4 clients" vs a lobby that is "1200+, 2 clients" (which the EBGS would determine and manage), and be "agile" such that clients could come and go casually (i.e. your game opponent might drop out for whatever reason -- but wait a few minutes, and maybe another suitable connection resumes it).   

 

But I also realize this is just terminal-experience stuff, and doesn't really exercise the capability of the connected 8-bit system (graphics or sound, unless a terminal program was built that did something like play audio in the background).   It would be an excuse to fire up the old vintage systems, it would be "something they are good for" but can also equally be used by a modern Pi or ESP32.  

 

 

 

 

TomXP411
Posts: 1785
Joined: Tue May 19, 2020 8:49 pm

networking options

Post by TomXP411 »



On 10/21/2022 at 3:29 PM, voidstar said:




Connecting classic systems to the modern internet won't be worthwhile - no performance to absorb all the extra pushed traffic or (performant) capability to interact with the graphics.   But forget all that, and forget the idea of a web browser.



 



I suppose what I'm thinking is something like what is shown below -- which requires an "all new" kind of BBS host, and "all new" kind of terminal software for the various vintage systems.   That sounds bad (i.e. won't ever be built), but humor me for a bit, because there may be a compromise between what already exist and what needs to be built....



 



image.thumb.png.ec13d4291e4b3ec4c1dcf9764b0b8d0d.png



 



The WiModem232 does the work of relaying the local serial IO over to TCP/IP - so you just type "ATDTimts.com:1234"  (or something like that)



Most of the vintage systems have some kind of VT100 compatible terminal available (i.e. can interpret those ANSI escape sequences).  But the "experience" is going to be inconsistent.



First, consider baud rate.   The baud is a function of several aspects: the serial IO hardware available, the MHz of the system, AND how efficiently the terminal software is written.   Collectively, all that translates into a max baud rate that that terminal software can support.  If you bump up the baud rate just a little bit, it might still kind-of work, but will start to drop characters here and there -- the dropping of characters is (generally) the terminal software not being able to keep up (increasing the MHz of the system might be enough to compensate, but of course at the risk of causing other issues).    At least, these were my observations on the PET 4016 and IBM PC 5150 with original serial card.   If the characters stop entirely, that's probably past the hardware limits (i.e. wrong baud rate).



 



Next, VT100: not all the terminal software interprets all the escape sequences consistently.  I don't have a specific example to refer to, other than in the PETTERM documentation I recall the author saying something to the effect of "not all VT100 commands are interpreted" (a similar statement is in Brutman mTCP telnet documentation - it may depend on the version, as the software may be incrementally adding more support over time: mTCP Telnet client for DOS (brutman.com) -- the Netris thing is neat)



 



Then the BBS software itself - most of them generally have to assume some kind of "text screen" resolution.  Some avoid "moving the cursor" and drawing things, being sensitive to connections that don't have 80x25 or 40x25, or just don't have the ability to draw on a screen (so we're going back to line printers...).   And some clients might not even support ASCII, or don't support lower case characters (think about that -- RIP password systems that require at least one lower case letter! haha).



 



Around 1988 or so, there was an alternative to ANSI called AVATAR.   As an example: with ANSI, you need about 7 full bytes to express a cursor movement.  I've forgotten the specifics, but something like:  ESC BRACKET CODE COL SEMICOLON ROW  ( <- [ M 34;54 ).  AVATAR used a shorter expression, to get that same information down to about 3 or 4 bytes.  In addition, AVATAR supports codes for "scrolling windows" - so you could have state info in a portion of the screen, and a "chat window" or "scrolling status window" in another portion (so in one short binary code, you could say "make a window this tall and wide starting at this x,y with foreground A and background B").  But supporting that windowing is asking a lot for whoever is implementing AVATAR - especially on a 64K or 32K RAM system.   But in general, when using an AVATAR supported BBS, it was roughly 2x as fast as ANSI (well, if color was involved).



 



When I wrote DestinyHunter for the 1MHz 6502-based PET, it was a struggle to get flicker free animation while using PETSCII -- parts of it had to be done in assembly.  So I can understand the challenges of writing a terminal program that buffers inputs, interprets escape sequences, and draws updates while polling for user inputs -- to then also add some game-state processing on top of that, it's rough (for a 1MHz 64KB system).  Asking people to write a NEW terminal software for a 1MHz isn't an easy thing to ask for (e.g. like more clients that support something like AVATAR -- I think QModem on the PC did).  You'd have to dust off a lot of old code, that's probably in assembler.   Like take PETTERM itself: the code (of just handling the serial IO traffic and interpret a few escape sequences) consumes about 4K RAM (it's on github).  But from that baseline, one could add support for new escape/code sequences - but not everyone is assembler savvy.  Having the "serial IO code" in C might help (or the groundwork of using inline-assembly to do the serial IO stuff) -- but the more "features" the terminal handles (like elaborate interpretation of escape/code sequences), that effectively slows down your baud rate (if you spend too much CPU time drawing stuff, you potentially start dropping characters in the serial IO buffers).



 



Around 1994-1996, we had some "graphical" BBS - using new protocols.  The concept was similar to ANSI or AVATAR, in that some sequence of binary was interpreted as a command to enter a certain graphics mode, draw some lines, fill this area with that color, etc.  On the initial connection, you just had to answer a question on if you supported whatever that protocol was (forget the names -- it was fairly short lived after Internet became affordable, and all the technical talent moved to web-browsers rather than any more fancy-terminal development -- but instead of using TheDraw to create the scenes of your BBS, you used a graphical paint-like editor and specified interactive objects like menus and such).  I ran a "graphical BBS" for only a few months, before accepting that the Internet was here to stay.



 



Anyhow, if we stick with existing VT100 terminals -  it seems a kind of "IMTS" could be made, a new kind of BBS host.  Most existing BBS host software (written for those old vintage systems) maintained a single connection -- some were advanced enough to handle multiple connections.   But this modern one would accept multiple connections, and ask "What resolution in your screen? "



I suppose a couple more questions could be asked, such as:



ABCDEFG

abcdefg

Do you see upper and lower case characters?   (I don't think there was ever a system that had lower-case only???)



Then clear and write to screen center "is this centered? -- if answer Yes, then they support VT100 and the screen size is correct.



 



From there, the "IMTS" would offer "experiences" based on the specified screen resolution, and the connected baud rate.  One experience could be coordinating a game of backgammon, across two different types of systems.   And to me, that's the main new-things this is offering beyond a telnet-connection and "classic BBS experience."    "IMTS" would focus on offering multi-player-heterogenous-systems experiences - and be another way for folks to make interesting use of vintage systems (or modern remakes).   



 



The modern telnet BBS's that are networked together to have multi-user chat rooms -- those are neat.  But I think it would be fun to have a dedicated host that acts as a kind of lobby and coordinates connections, to play some simple VT100 games (so it's not just resurrecting Lynx).  At some point, there is a threshold where a 1MHz 2400 baud client can't handle the traffic - so full MMO-style gameplay won't be practical.  It would need some "ground rules" where "this lobby requires 9600+ and accepting up to 4 clients" vs a lobby that is "1200+, 2 clients" (which the EBGS would determine and manage), and be "agile" such that clients could come and go casually (i.e. your game opponent might drop out for whatever reason -- but wait a few minutes, and maybe another suitable connection resumes it).   



 



But I also realize this is just terminal-experience stuff, and doesn't really exercise the capability of the connected 8-bit system (graphics or sound, unless a terminal program was built that did something like play audio in the background).   It would be an excuse to fire up the old vintage systems, it would be "something they are good for" but can also equally be used by a modern Pi or ESP32.  



 



I'm actually thinking of something simpler... basically a text based web browser that reads WAP pages from the server. 

When you hit a web site with a specific user-agent, the web site would divert you to the "Retro" version, which has the same basic functions, but packages everything up based on the screen's dimensions (40x25, 80x25, 80x50, etc.)

I figure the experience would be a lot like using Lynx on a UNIX system, but even more simplified, with simple 1-key shortcuts for actions, and a client-side text editor for entering messages. 

Graphical stuff might be nice, but there are just too many different 8-bit systems to ever create a uniform graphics standard for all of 8-bit kind.

 

 

 

neutrino
Posts: 182
Joined: Wed Oct 19, 2022 5:26 pm

networking options

Post by neutrino »


There are several standards that might be of interest to implement, besides the Quantum Link:

Teletext Level 2.5:

https://en.wikipedia.org/wiki/World_System_Teletext#Levels

      Provides the ability to define graphics.

 Digital Equipment Corporation VT330 provide monochrome ReGIS, Sixel and Tektronix 4010 graphics, and the VT340 adds color:

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

ANSI codes of course..

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

Cellphone Wireless Markup Language:

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

Digital Video Broadcast, MHEG-5:

https://en.wikipedia.org/wiki/MHEG-5

    "MHEG-5 is an object-based declarative programming language which can be used to describe a presentation of text, images and video."

I find ReGIS and Teletext level 2.5 the most interesting. But I might be wrong. ANSI lacks the capability to make say a plain round circle.

Otoh, to just do the message browsing, chat, file browsing and download. Not much more than ANSI is really needed and is also well known. Cursor goto X-Y, scroll windows and colors is perhaps the most critical functionality. For serial oriented sessions maybe Zmodem is needed while any IP packet oriented sessions can do GUI client with the file transfers completely in the background.

A good approach is to do the "define the message" and then let the client decide how to present it. Like in HTML (which really is a bastardization of SGML).

 

Wavicle
Posts: 285
Joined: Sun Feb 21, 2021 2:40 am

networking options

Post by Wavicle »


Computers got by with no built-in ethernet and pushing that functionality off to an expansion card until well into the 32-bit era. Still today the highest performance networking solutions come as PCIe expansion cards. It doesn't seem like an 8-bit computer needs to come ethernet ready out of the box.

neutrino
Posts: 182
Joined: Wed Oct 19, 2022 5:26 pm

networking options

Post by neutrino »


Well I missed quick and easy networking even in the 8-bit days. Just a few tens of kbit/s would been a saver.

The Macintosh SE's had networking builtin with a 230 kbit/s RS-422 port that implemented LocalTalk. Enabling ad-hoc networks on the fly with passive boxes. But anyway, any serial port with a decent speed can enable cheap networking.

 

Post Reply