Eloraams Blog

Redbus Technical

So, I just had the first sign of life from Control:


This time around, it’s not a mockup. It’s running a short 6502 assembly program that initializes the Redbus, sends the text to the display, and updates the cursor position.

Now for the gory technical details. This is for the people who actually know what an assembler is and want to do something with it. If you’re not one of those, don’t worry! You won’t need to know this to use the computer blocks in-game.

The Redbus controller is really simple. It opens a 256 byte memory window starting at 0x200, which is mapped directly into Redbus address space. There’s also a single byte at 0x300 which determines which device (of the 256 possible devices) to connect to.

The screen interface currently works like this: Byte 0 - The screen row to select for the memory window. Byte 1 - Cursor horizontal Byte 2 - Cursor vertical Byte 3 - Cursor off/on/blink Byte 16-55 - The characters on the currently selected display line.

The display is 40x25 monochrome text cells.

That’s what’s working right this second.

There are a few things I’m going to change before this becomes final. The controller byte is likely moving to 0x400, so that the memory window at 0x300 can be accessed by external Redbus devices. This will allow almost effortless networking between devices on the same line. Also, it’s likely that register 0xFF on the Redbus will have special meaning - I’m currently thinking that writing to it will be the interrupt request signal, and reading from it will be a presence detect method.

Also, the display block is going to get a bunch more registers for handling its built-in keyboard.