Porting PLATOTERM to the VIC-20
Posted: Wed Sep 25, 2019 8:56 am
Hello, everyone.
I'm Thom Cherryhomes, from IRATA.ONLINE.
I have been working on a massive project for the last two years: a retro-computing on-line service for every retro-computer imaginable, based on the legendary PLATO system, and to facilitate access to it, I have written a portable terminal implementation and have ported it to close to two dozen different retro-computing systems. I would like to do the same for the VIC-20, and it might just be possible, with some tricks, and I need some help from the VIC-20 demo-scene community to try and make this possible.
Main website: http://www.irata.online/
and if you'd like a historical background on the huge impact of PLATO, read here: https://en.wikipedia.org/wiki/PLATO_(computer_system)
I present here, two demos, showing both what it's like to use the system, and a demo of 13 separate systems logging onto IRATA.ONLINE and participating in a conference:
https://www.youtube.com/watch?v=rmRMXSdsF-8
https://www.youtube.com/watch?v=J9f8Vy9g7yM
-----------------
The technical ask, and for comparison, I will give the Commodore 64:
PLATO terminals natively have a display resolution of 512x512, and can plot pixels at any point, including alphanumeric characters.
To display this on the C64's bitmap display, I do two things:
(1) scale the input of lines/dots/block fills to match 320x192 (slightly better ratio than 200, for the reason below)
(2) produce a font (for the C64, it's 5x6), so that it fits proportionally with the scaled output.
I also have routines which dynamically squeeze downloaded character set data into a user character set area, down from 8x16 to the target 5x6 font using a combination of simple scaling, or a box convolution filter (depending on the number of set to unset pixels in the glyph)
Looking at the data sheet for the VIC-I I see a max horizontal bitmap size of 192 pixels, and it is also possible to do 192 rows. and setting these values into the registers, I can see that this does indeed work. This would give just barely the minimum amount of pixels needed to synthesize a PLATO display, with a 3x6 font.
HOWEVER, as I do understand it, this falls short of the # of required double-height characters needed to display the full bitmap.
Could the VIA be used to trigger a character set change to plot the remaining bitmap data?
If someone could help me write the needed routines (if possible), I can do the needed bring-up on the VIC-20.
The current code for PLATOTERM is here:
http://github.com/tschak909/platoterm64
-Thom
I'm Thom Cherryhomes, from IRATA.ONLINE.
I have been working on a massive project for the last two years: a retro-computing on-line service for every retro-computer imaginable, based on the legendary PLATO system, and to facilitate access to it, I have written a portable terminal implementation and have ported it to close to two dozen different retro-computing systems. I would like to do the same for the VIC-20, and it might just be possible, with some tricks, and I need some help from the VIC-20 demo-scene community to try and make this possible.
Main website: http://www.irata.online/
and if you'd like a historical background on the huge impact of PLATO, read here: https://en.wikipedia.org/wiki/PLATO_(computer_system)
I present here, two demos, showing both what it's like to use the system, and a demo of 13 separate systems logging onto IRATA.ONLINE and participating in a conference:
https://www.youtube.com/watch?v=rmRMXSdsF-8
https://www.youtube.com/watch?v=J9f8Vy9g7yM
-----------------
The technical ask, and for comparison, I will give the Commodore 64:
PLATO terminals natively have a display resolution of 512x512, and can plot pixels at any point, including alphanumeric characters.
To display this on the C64's bitmap display, I do two things:
(1) scale the input of lines/dots/block fills to match 320x192 (slightly better ratio than 200, for the reason below)
(2) produce a font (for the C64, it's 5x6), so that it fits proportionally with the scaled output.
I also have routines which dynamically squeeze downloaded character set data into a user character set area, down from 8x16 to the target 5x6 font using a combination of simple scaling, or a box convolution filter (depending on the number of set to unset pixels in the glyph)
Looking at the data sheet for the VIC-I I see a max horizontal bitmap size of 192 pixels, and it is also possible to do 192 rows. and setting these values into the registers, I can see that this does indeed work. This would give just barely the minimum amount of pixels needed to synthesize a PLATO display, with a 3x6 font.
HOWEVER, as I do understand it, this falls short of the # of required double-height characters needed to display the full bitmap.
Could the VIA be used to trigger a character set change to plot the remaining bitmap data?
If someone could help me write the needed routines (if possible), I can do the needed bring-up on the VIC-20.
The current code for PLATOTERM is here:
http://github.com/tschak909/platoterm64
-Thom