home.social
  1. The key switches I chose for the Datapoint 2200 keyboard required a plate so I made one up. Done as a PCB it’s not cheap but the Matt black finish works really well.

    The only issue is that it slightly obstructs a couple of capacitors 🙁

    I still need to source the hardware to properly mount it to the keyboard.

  2. Top row numbers can be shifted and keypad numbers can't. Both share an edge detector circuit and multiplexer 'line'. Top row key short to ground whereas keypad key have an SIO (or S10) signal. The keyboard logic board uses an analogue edge detector with 74121 pulse generator.

    On the Pico I'm handling this by driving the SIO line low. When a keypress is detected I drive it high. If the keypress is still detectable then it's a top row key. If not then keypad.

  3. I've now added some photos to the repository (link in previous toot). Not the best quality but there's now something to look at.

    Here's a couple of those for the Decoder PCB. There are more in the repository itself.

  4. I've just pushed a very long overdue update to my Datapoint 2200 repository.

    New stuff includes schematics for video, keyboard and keyboard logic.

    I've added a fair few LEDs to the processor PCB for most of the main registers, but I need to analyse which other signals deserve to have them.

    I also need to add some photos and PCB renders to the readme.

    github.com/Bread80/Datapoint22

  5. 2200: I have the memory cards designed and assembled but no memory chips. My plan is to add a 'backpack' board using modern parts.

    Each card uses 32x 512 bit shift memory chips. The best modern option is probably 512 bit FIFOs and tie the outputs back to the inputs to recirculate data.

    You can get 9-bit or 18-bit wide chips but every bit is read and written together. So you need a multiplexer on each bit to select new data or recirculate.

    🧵

  6. What's the main challenge in assembling old code on a modern(ish) assembler? The old assemblers only consider the first few letters of a mnemonic significant. The 8008 has an INC opcode. My assembler has an INCLUDE directive.

    (The old code doesn't use INCLUDE, but I need to import symbols from other files. The easy way is to write public symbols to a file in suitable format for an INCLUDE).

  7. I wrote a Z80 assembler a few years ago. Thankfully I subclassed out the Z80 specific stuff. I've been updating it for Datapoint mnemonics and syntax.

    I've also typed in the operating system listing from the Programmers Manual (46 pages. Nothing to a child of the 80s).

    I'm now working through the files to get them to assemble. Currently there's a circular reference to resolve (comment out on first build), a couple of directives to add and an opcode which doesn't officially exist.

  8. Now to get memory writes working in the Datapoint simulator. There's a /MEMORY_WRITE_READY input which needs to be driven. The circuit for this is on the keyboard decoder PCB.

    Unconnected to the rest of that board, except for a POR output. Not the first bit of circuit I've found spilled onto a different board.

    The circuit drives the /MEM_WRITE_READY line while the hardware bootloader reads data from tape. I can just glue it high for now.

  9. 'Clear the carry tiggle'.

    I think they meant to say 'toggle', although twice suggests it may be intentional.

    The documentation usually refers to 'flip-flops' as opposed to 'flags', or 'toggles'.