6,020 karma · joined April 25, 2011
Making 8-bit dev tools since 2016: https://8bitworkshop.com/
( This is one of the few ways to transfer data to a vintage computer without additional hardware, at least until devices started showing up without a headphone jack :^P )
I added a similar feature to my 8bitworkshop IDE that lets you upload your own C/asm programs to your Apple ][ via cassette port: http://8bitworkshop.com/v3.2.0/?platform=apple2
Pretty sure there were a few text adventures written with it too. The non-flashing cursor and glacially slow text output is a sure tell: https://archive.org/details/RamboFirstBloodPartII4amCrack
(edit: another article from the same source about the P-Machine and Bowles: https://www.filfre.net/2012/03/pascal-and-the-p-machine/)
var exports = {};
function require(modname) {
if (modname == 'jquery') return $;
else if (modname.startsWith('.')) return exports;
else { console.log("Unknown require()", modname); return exports; }
}
(Of course you've gotta <include> the modules ahead of time -- I actually use this for http://8bitworkshop.com/)https://www.propublica.org/article/after-budget-cuts-the-irs...
Essentially, the CPU executes each line of video, jumping to the start of each line of cells. The video system latches each byte onto a shift register and displays it.
But the CPU is tricked -- NOPs are forced onto its data bus right before it decodes the instruction. So it merrily marches along fetching successive bytes for the video subsystem, without interpreting them.
That is, until a certain bit of the character code is seen, then the CPU is allowed to execute the instruction and terminate the scanline (usually HALT on the ZX). This process repeats over and over for each scanline.
As a result, it's pretty tricky to program animations. There's not much CPU time left for anything while a frame is being displayed.
BTW, I've never had performance problems with HTML Canvas, and I use setTimeout(), not requestAnimationFrame. The only thing I do every frame is putImageData() on a retained Uint32Array buffer. Maybe you could use the Chrome Performance devtools to figure out what is going on.