Jump to content

Writing a PLATO terminal for IRATA.ONLINE for 64/128?

Recommended Posts

Hello, I'm the systems operator for http://www.irata.online/an on-line service for retro-computing enthusiasts.

As part of this service, it is possible to write terminals for this service, due to the unique protocol used.

I have attached a definition of the protocol used on port 8005 of this service, and there is example source code on the website (the pterm source), which can be used as a reference.

As I am currently working on the Android version of this terminal, I wanted to see if anyone else was interested in implementing a portal to a truly unique system and piece of preserved history?



Edited by tschak909
Link to comment
Share on other sites

Do I correctly understand that you're interested in writing (also) a PLATO terminal for the ’64 or ’128?

I'm curious if a limited-capability terminal on a ’64 would really be usable for playing most of the games on PLATO … ? but seems like you're definitely more the expert than I …


In particular: remapping from ( 512 × 512 px = 64 × 32 ch ) to ( 320 × 200 px = 40 × 25 ch ) or ( 640 × 200 px = 80 × 25 ch ) in a non-disruptive way.


It looks like, per your text file, the A][ version centered a 192×256px screen and expects its own special 4×6px custom character sets? That would certainly work “passably” on a VIC-II, as long as the 4×6 fonts exist — and with some weird color artefacts across 8×8px cell boundaries, of course.


On the other hand, it seems like the VDC on the ’128 should handle 512×512 @ 16×8 just fine — definitely as 640×512, with margins blanked on each row, although it wouldn't surprise me if some fudging with the VDC registers wouldn't allow for directly mapping exactly 512×512, albeit with not-precisely-square pixels.


I've played around a bit with (including submitting the odd patch to) Linux PTerm, I'd be interested in lending a hand if possible.

Link to comment
Share on other sites

I am in the middle of finishing the Android terminal, so I am very familiar with the protocol, and can definitely help anyone who wants to write PLATO terminals. This is why I am reaching out.


It should be possible to write a decent one in C using cc65, for the C64 version, the display would need to be scaled similarly to the ATARI PLATO cartridge, while yes, it looks like the 8563 in the 128 can handle a 512x512 display with some reprogramming (similar tricks are used in the original IBM PC PLATO terminal to reprogram the 6845).


I will try to help out with all the protocol particulars, as I know them exceptionally well, but I am not familiar with the different connection options that are available for a C64 or C128, and those need to be ironed out.


I am reaching out to other communities (apple2, amiga, etc.) in a similar fashion.


Here's an example from the ATARI PLATO cartridge, it runs at 320x192 in the scaled mode, and because it is mode F, it is monochrome:





Link to comment
Share on other sites

A GitHUB repository has been created @


http://github.com/tschak909/platoterm128.git Since brfennpocock has offered to start messing about with doing 8563 experiments, I've created a repository, and started writing a C version of the PLATO protocol decoder. This part should translate _VERY_ well to other platforms, as it is just plain jane C with no special tricks.



Link to comment
Share on other sites

I've just checked in the first pass of a PLATO protocol decode into the above repository.


Basically, byte goes in, and it gets fanned out to where it needs to go, calling external functions when needed to draw points, lines, plot text.


The major part missing from this version of the protocol decode is the custom character set load, because this needs to be worked out.


A PLATO character is 8x16, and there are 64 characters in each set, with two sets used for custom characters, 128 characters, meaning about 16K used for character data, so with the C64, characters will have to be scaled down, for example, and this needs to be hashed out, before a meaningful character set load routine can be made.


But, for now, anyone interested can see the major workings of the protocol. I would really like to get input and help from knowledgeable C64/C128 coders. It would be great to have a workable PLATO terminal, like on the Atari.



Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Can somebody with a Commodore 64, and a user port modem running at 2400bps (wifi or otherwise), try to run this program and see if the output freezes after typing a few characters?




(there are two builds in there, one for userport modems, and another for swlink/turbo232 cartridges. I know the latter does not work properly.)



Link to comment
Share on other sites

There is a known problem between the graphics code and the serial routines. I've been working with the cc65 people to try and resolve it. It's causing the program to freeze (due to the graphics code switching out kernal code to write to the graphics display, but the NMI's for the serial routines are still active...)





Link to comment
Share on other sites

  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...