IRATA.ONLINE - PLATOTerm and MSX - Need Serial I/O routines.

By tschak909

Supporter (12)

tschak909's picture

19-09-2018, 04:40

This is an introduction for my project, IRATA.ONLINE, to the MSX community:

Hello, I'm Thom Cherryhomes, systems operator for IRATA.ONLINE, a unique on-line service for retro-computing enthusiasts.

The main website is here:

The code for the Z80 version of PLATOTerm (which includes the MSX port) is here:

It's based on PLATO, a legendary graphical time-sharing system with touch screen functionality that ran in its classic incarnation from 1962, until NovaNET shut down its last instance in 2015.

More info about it here:

As you can see there, PLATO was home to a huge number of innovations, many of which are overlooked in the greater history of computing.

I have taken a complete working PLATO installation, installed it within a supercomputer emulator (the computer being emulated, is a Control Data Cyber 170/865, which is a 60-bit supercomputer from the late 1970s), and have been tailoring it specifically for the retro-computing community.

To this end, I have also taken a terminal that I've written, called PLATOTerm, and have been steadily porting to every single available retro-computing platform that is at least capable of displaying bitmapped graphics 256 pixels across by 192 pixels vertical, and the net result is that clients are ready for, or are almost ready for the following systems:

* Atari 8-bit
* Commodore 64
* Commodore 128
* Apple ][
* TI 99/4A
* Sinclair ZX Spectrum (loadable directly from Spectranet!)
* Amstrad CPC464
* Atari ST
* TRS-80 Color Computer 3 (Thanks to Brett Gordon of FUZIX fame)
* FUZIX (Thanks to Alan Cox of Linux fame)
* Spectravideo SV-3x8
* Memotech MTX-512
* Tatung Einstein

And even more coming:
* Amiga
* IBM 5150 PC and PCjr
* TRS-80 Color Computer 2
* Anything that runs FUZIX (countless machines, Alan Cox of Linux fame is doing this port)
* Thomson MO5/TO7

There is also a port to WebAssembly, which will be the core for not only web users, but also Android and IOS devices, as well.

---- Of relevance to the MSX community

I have a port of PLATOTerm almost ready for MSX, all it needs is RS-232 routines. Anyone who can help, please ping me!

---- Why am I doing this?

It is my hope, that I can provide the space in which a community of many different retro-computing users can grow, all fo us communicating together, and since the system has its own built in programming language that is accessible to all users, it is my hope that we all can enjoy making new content, together.

...because you can't get a Commodore 64 onto Instagram, or a ZX Spectrum onto Facebook, but they can log onto this.

I leave you with a successful bring-up of PLATOTerm on MSX, launching through MSX-DOS. As soon as I have some usable serial i/o routines, the software will be complete enough to test. :)


Login or register to post comments

By xavirompe

Rookie (30)

xavirompe's picture

19-09-2018, 17:57

Hello Thom.

It's good to know about your project, I find it very interesting!

Currently I am developing a WIFI interface for MSX, it would be nice to be able to access your platform from my device, XSWIFI.

To make things easier I think the ideal would be to have a version with TCP connection, since I have seen on the web the possibility of connecting to IRATA.ONLINE:8005

There are several network devices for MSX, obsonet, denyonet, GR8Net, etc., most have implementations of UNAPI TCP / IP (thanks to Konamiman), here you can find the information necessary to implement the API:

I hope you find it useful!!


By tschak909

Supporter (12)

tschak909's picture

19-09-2018, 19:24


Yes, I want PLATOTerm to support all these different devices.

The problem is, I do not have any MSX hardware, and everything I need to do must be through emulation, so I have no way to test these things.

Adding support for these devices should be trivial, just adding code to src/io.c. If somebody wants to take that on, I can help.. or I can take a guess and implement the needed bits. but I will have no way to test them.

(and yes, z88dk can call assembler code)

Can somebody help?


By tschak909

Supporter (12)

tschak909's picture

19-09-2018, 19:25

and again, the code is here:



Enlighted (5020)

NYYRIKKI's picture

20-09-2018, 03:16

Earlier I did send this information already by personal email, but I post it here as well in case someone has something to add or has some more details to share...


Few years ago I ended up landing on PLATO Wiki-page and I was very impressed that such a system has existed in the past. I'm very glad to hear that you are recreating this experience for us!

Now about your question... While MSX it self is very well standardized the things like RS-232 or MIDI are those that tend to cause head ache for developers. The reason is that while these were pretty popular extensions to the machines unfortunately none of the implementations got so big success that it could be considered as "the interface" among users. There are not many MSX models that would have build in RS-232 on board and extension cartridges have used many different approaches to the same issue. Unfortunately most of the implementations are also without standard RS-232 ROM, so using ROM-routines is pretty much not possible approach. Most of the interfaces are based on i8251 or 16550A UART but I/O ports may differ from device to another.

The list of devices with standard implementation are listed here:

The list of devices can be found from here:

Now, how to get around this issue...

In the dark 90's there was quite popular terminal program for MSX called Erix... The terminal program it self was just ok, but the great thing was that it implemented "Erix fossil driver" interface to different RS-232 implementations that other programs can use as well. I would suggest that you would start by looking if the standard drivers can be used together with your program.

Documentation of the driver was a bit pain to find after all this time, but I finally found it here:

... unfortunately it is written in Dutch, but I think you should cope.

If the Erix fossil driver it self is no go, I think you can use anyway parts of it... The source of the driver can be found here: (look for "uart_drivers")

Originally it is designed to compile with Hisoft Devpack 2 assembler... Look ie. here:

If all these PMA-packet links cause you "WTF-effect", try ie.

I hope this will help you to solve your problem as your project is really cool!


Enlighted (5020)

NYYRIKKI's picture

20-09-2018, 04:08

Although I have not seen yet anything I must say that I have already quite a bold wish list: Smile

- TCP/IP support for UNAPI compatible MSX ethernet devices
- MSX2 support meaning hardware 2D acceleration & 512x212 resolution.
- SymbOS support... This is quite a hard one... SymbOS does not have RS-232 device support, but it has very friendly TCP/IP network daemon. The screen routines are not yet great, but implementing this one would automatically mean that the very same binary version would run on Amstrad CPC, MSX, PCW Joyce and Enterprise 64/128 !

I know that at least the last one is quite out of reach, but anyway... PLATO... It seems I don't ever need to go to college! I can just continue my hobby while spending time on advanced interactive learning courses while having nice time with my MSX! Can anyone think anything better?

By tschak909

Supporter (12)

tschak909's picture

20-09-2018, 08:16

If you can help, please snag the code. I am doing over 20 of these ports in parallel.


By Eugeny_Brychkov

Paladin (1010)

Eugeny_Brychkov's picture

20-09-2018, 12:26

Thomas, more I read about your project, more questions I have - instead of answers. Here's what I found out, according to internet and your statements.

  1. PLATO is dead. Its servers were shut down in 2015.
  2. Your reincarnation does not sound using old PLATO, thus it starts from scratch.
  3. Terminal is just a tiny piece of the PLATO - it is the content which rules. So far I see very limited content, most probably created by the people in your team.
  4. IRATA.ONLINE is very young project with web site registered @ 2018-03-24T03:16:35.0Z, and it seems you went public immediately.
  5. File src/io.c is literally empty (even for other platforms), I wonder which functional it carries out and how it compiles adding value to overall code. It also misses some vital calls like receive byte for other platforms claimed to be already implemented.

So questions are:

  1. What is the legal state of the project - for example, any agreements with owners of PLATO name?
  2. What is you strategy and tactics creating the content for your reincarnation of PLATO? Labor croud sourcing? How are you going to have and sustain consumers (users) on board? Having developers?
  3. Who is going to support the terminal software, and server infrastructure? Who pays for it?
  4. You must tell us more about the project itself, and about yorself.
    • You are working as DevOps in Ericsson NA in Cambridge, MA, and devote a lot of time to this project. If I would be Ericsson I would be nervous about my employee doing something big and time consuming like this - even in non-working time (when employee is expexted to rest and have fun after work) - unless Ericsson funds your project;
    • Why is registered in ON, CA instead of the location you reside in? Why registrant information is hidden through Whois?

And in general, before jumping into the project, it is good to hear a kind of "business plan" - what you see your project is in 5 years, and how you are going to achieve it. The more realistic it will sound, more developers and users you will have.

By tschak909

Supporter (12)

tschak909's picture

20-09-2018, 19:09

1. NOVANet was shut down in 2015, this is true.

2. Yes, it is actual PLATO. The excellent folks at CYBER1.ORG worked with the current copyright holders (VCampus) to produce a distribution that they initially made available to those who asked, and later publically on their own site, for those who wanted to run a PLATO installation. This is built from tapes of the last CYBIS installation that Control Data Systems sold to the FAA in 2004. I have explicitly acquired permission from CYBER1.ORG and VCampus to run my installation, and they only stipulated that I do not acquire profit from it. Which I am not.

3. There are over 16,000 lessons that were created by CERL, and Control Data over a 25 year period which are part of the system, they are in the Catalogs section.

4. I registered the website then, yes. But spent the previous year literally getting ready to do so.

5. io.c just needs to have get byte and put byte functionality added for their target platforms.

so for your questions:

1. was answered.
2. was partially answered, but in addition to the existing content, I am also trying to facilitate the development of an author community, by not only hosting demonstration meets and talking at vintage computing shows (I just did one for VCF Midwest in Chicago, previously VCF West in Mountain View, CA, and VCF East), but also hosting workshops showing how to develop new lessons in TUTOR.
3. I am entirely hosting this in my lab here in Denton, TX, on a server in my rack, using existing costs, and I currently administer the system.
4a. I am currently at Ericsson, yes, and currently am transitioning to another project, but i have some idle time in the mean time, so I am utilziing the idle cycles as efficiently as possible.
4b. IRATA.ONLINE was registered using google domains, whatever registrar they use. I did not specify anything other than defaults.

There is no business plan. This is a professional hobby, and my professional hobbies tend to be long term (I worked on LinuxMCE for 15 years, previously)


My MSX profile