Search
197 results for “bread80”
-
After far too mush hassle the printer port is now routed.
Amstrad schematics claim it's a 36-way connector, even in a 6128. It's not. It's 34! That gives an off-by-one numbering error on the rear pins. And there's few discrepancies between schematics and PCBs, largely over which pins are grounded. I've copied from an actual machine.
I've also tightened up the gaps between traces for joystick and printer. They're slow signals and I'd prefer board space for other things.
-
On the #CPCZERO project I've been debating whether to finish designing all the video and interrupt circuitry or whether to do a board as-is with connectors to add video on a daughter board later. The latter potentially needs less board revisions but would add a lot of time while I get the remaining design finished. So I'm going with the first option and starting board layout.
The other unknown is how much space I'll need. But I know things are going to be tight.
1/2
-
Adding the keyboard input routines to the emulator took a bit more work. Mostly trying to find the correct routines in #FreePascal (KeyPressed and ReadKey). (Read and Readln are both buffered - they read a line and only return when the user hits enter).
-
I want the command line compiler to be able to generate interactive console apps which can run in it's built in emulator.
The first step is to be able to hook the emulator to create 'breakpoints'. Here it's hooking the CP/M BDOS address, reading register values from the emulator, and overwriting the opcode (read by the emulator) with a RETurn.
Opting for a CP/M style API will give me some CP/M support already in the compiler.
-
I'm nearly finished with sub-range types in the #quiche compiler. Most of the work has been around range checking when assigning to a sub-range, and hundreds of tests against edge cases. The only tests now failing are a couple to do with function arguments and return values.
Range checks work when passing a literal or a variable, but this test shows a fail when passing the result of a expression.
-
Sub-ranges feel like quite an obscure feature of a language. But in Pascal they're an essential part of arrays
array ['a'..'z'] of Integer
So I'm filling out their implementation before I continue with arrays. The next step is the assignment validation when range checking is on. -
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.
-
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.
-
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.
-
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.
-
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.
-
Moving on to the shift and shift lock keys. If a top row number is pressed the logic board can just flip a single bit to convert to the relevant symbol. For the symbols in the same ASCII block (&30 to $3f) : and ; can be treated the same, but for < to ? the bit needs to be flipped in shift is not active. There are similar issues for symbols after Z and z.
1/n
-
...except that I only just noticed the signal names for the lower letters and numbers are swapped. Or maybe the names just have their bit ordering reversed?
And after some tweaking of the software timings for the scanner I have every multiplexed key working correctly.
The secret to doing this in software seems to be to continuously scan, then sleep briefly once a keypress have been registered. The hardware debounce is too quick for the usual 50/60Hz scan.
-
I wired up a connector so I can use a Pico + breadboard to test the keyboard. At the moment I only have the wires driving and reading the multiplexers connected.
-
…and assembly is complete. The original looks like it would have been deliciously clicky so I’ve chosen suitable keyswitches. However they’re only 3-pin so really need a plate to hold them properly in place.
The keycaps are standard modern layout so don’t have the correct legends. But they do look good enough to eat.
I still need to source correct bulbs for the lamp holders next to the ‘system’ keys on the right hand side.
-
Resistors, ceramics and sockets done. I think that’s enough for today. I need to dig out the big camera to do this shot justice.
And yes, I did make sure every cap faces the same way, and rework to ensure they’re immaculately aligned. This board deserves nothing less.
-
The #Datapoint2200 keyboard PCBs have arrived and they look fantastic. Somehow larger than I expected, and very imposing.
#datapoint #ttlcomputer #vintagecomputer #retroconputer #mechanicalkeyboard
-
The #Datapoint2200 keyboard PCBs have arrived and they look fantastic. Somehow larger than I expected, and very imposing.
#datapoint #ttlcomputer #vintagecomputer #retroconputer #mechanicalkeyboard
-
The #Datapoint2200 keyboard PCBs have arrived and they look fantastic. Somehow larger than I expected, and very imposing.
#datapoint #ttlcomputer #vintagecomputer #retroconputer #mechanicalkeyboard
-
The #Datapoint2200 keyboard PCBs have arrived and they look fantastic. Somehow larger than I expected, and very imposing.
#datapoint #ttlcomputer #vintagecomputer #retroconputer #mechanicalkeyboard
-
The #Datapoint2200 keyboard PCBs have arrived and they look fantastic. Somehow larger than I expected, and very imposing.
#datapoint #ttlcomputer #vintagecomputer #retroconputer #mechanicalkeyboard
-
With the RAM sorted I’m moving onto the 6845 CRTC. One fly in the ointment here: it’s I/O cycle maxes out at 1MHz. I’m running the 6502 at 2MHz. I think the easiest solution is probably to slow the CPU to 1MHz when accessing the 6845 but that will mean a few changes to the sequencer.
I note this is the solution used by the BBC Micro (which also uses a 2MHz 6502 and 6845).
-
Old school DRAMs have a lot of timing requirements. I’ve been validating output from the #CPCZERO sequencer prototype against them - and everything checks out 🙂
Comments in my notes are where the timings depend on other components, such as the multiplexers.
-
Before I got sidetracked into the type system I was working to get the command line compiler fully up and running.
The sticking point was command line arguments. I tried using #FreePascal's built in parser but it didn't have the flexibility I needed. I've now written something which does and I can now set the platform and deployment options.
#quiche #quichelang #compiler #pascal #z80
1/n
-
#CPC464 #keyboard revision 2. Test fitting a few keys. The key change was to update the keybed position to get it better centred. And it’s now looking bang on.
(Keys are upside down because they’re pulled straight from the rev 1, and without sockets soldered I’m mounting them in the solder holes for accuracy. (Although I’ve just realised they’re fully located by the mounting lugs :shrug:))
-
Adding some branding inspired by the original. I don't have a font I'm entirely happy with - those squared off capitals are very distinctive - but this certainly adds some gravitas to the board.
-
The #Datapoint2200 keyboard has four indicator lamps. I could easily slap in an LED but want to try and retain that incandescent bulb look. I've tracked down a suitable bulb holder which is commonly available and affordable. But I've added an LED footprint as a backup. I've made the resistors common to both the LED and the bulb so they can also regulate the bulb brightness if desired.
-
I’m debating options to replace the mirrored L-shaped enter key on the #Datapoint2200 keyboard.
1. Use a wider enter key. This eats into the gap to the number pad.
2. A vertical enter key. This leaves a pleasingly quirky gap to the shift key.
3. As 2 but with a wider shift - except the caps I have don’t include a 1.5u shift. And there’s nothing suitably ambiguous in that size.You might gather I prefer option 2 but I’m open to persuasion.
-
I've been wondering about the lack of cursor keys on the #Datapoint2200 keyboard. Clearly this is software dependent. I've been flicking through the Programmers Manual to see how the source editor handles it.
The Keyboard and Display buttons are read via a status register. These are used as cursor up and down but they wrap at screen top and bottom. Given that the editor reads from one tape and writes to the other as soon as it scrolls of the top of the screen that probably makes sense.
1/n
-
Polishing off the second revision of the #Amstrad #CPC464 #MechanicalKeyboard
* Key bed repositioned by a few fractions of a millimetre.
* Diode footprint tweaked for easier hand soldering.
* Moved a couple of diodes which were uncomfortably close the connectors.
* Patched up all the traces affected by the above.I still have a couple of minor items on the todo list but this is very close to being ready for the fab.