mstdn.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A general-purpose Mastodon server with a 500 character limit. All languages are welcome.

Administered by:

Server stats:

5.1K
active users

#Datapoint2200

0 posts0 participants0 posts today
Bread80<p>Top row numbers can be shifted and keypad numbers can&#39;t. Both share an edge detector circuit and multiplexer &#39;line&#39;. 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.</p><p>On the Pico I&#39;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&#39;s a top row key. If not then keypad.</p><p><a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> <a href="https://mstdn.social/tags/Datapoint" class="mention hashtag" rel="tag">#<span>Datapoint</span></a> <a href="https://mstdn.social/tags/keyboard" class="mention hashtag" rel="tag">#<span>keyboard</span></a></p>
Bread80<p>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 (&amp;30 to $3f) : and ; can be treated the same, but for &lt; to ? the bit needs to be flipped in shift is not active. There are similar issues for symbols after Z and z.</p><p>1/n </p><p><a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> <a href="https://mstdn.social/tags/keyboard" class="mention hashtag" rel="tag">#<span>keyboard</span></a></p>
Bread80<p>...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?</p><p>And after some tweaking of the software timings for the scanner I have every multiplexed key working correctly.</p><p>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.</p><p><a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>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.</p><p><a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>…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.</p><p>The keycaps are standard modern layout so don’t have the correct legends. But they do look good enough to eat.</p><p>I still need to source correct bulbs for the lamp holders next to the ‘system’ keys on the right hand side.</p><p><a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> <a href="https://mstdn.social/tags/MechanicalKeyboard" class="mention hashtag" rel="tag">#<span>MechanicalKeyboard</span></a></p>
Bread80<p>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.</p><p>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.</p><p><a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>The <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> keyboard PCBs have arrived and they look fantastic. Somehow larger than I expected, and very imposing.</p><p><a href="https://mstdn.social/tags/datapoint" class="mention hashtag" rel="tag">#<span>datapoint</span></a> <a href="https://mstdn.social/tags/ttlcomputer" class="mention hashtag" rel="tag">#<span>ttlcomputer</span></a> <a href="https://mstdn.social/tags/vintagecomputer" class="mention hashtag" rel="tag">#<span>vintagecomputer</span></a> <a href="https://mstdn.social/tags/retroconputer" class="mention hashtag" rel="tag">#<span>retroconputer</span></a> <a href="https://mstdn.social/tags/mechanicalkeyboard" class="mention hashtag" rel="tag">#<span>mechanicalkeyboard</span></a></p>
retrocompmx<p>El 10 de junio de 1970 se presenta la Datapoint 2200, una "terminal programable" es el "proto-PC" que, con su conjunto de instrucciones, inspiró directamente la arquitectura x86 de Intel. Un gigante olvidado. <a href="https://mastodon.social/tags/retrocomputingmx" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>retrocomputingmx</span></a> <a href="https://mastodon.social/tags/datapoint2200" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>datapoint2200</span></a> <a href="https://mastodon.social/tags/historiapc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>historiapc</span></a> <a href="https://mastodon.social/tags/1970s" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>1970s</span></a> <a href="https://mastodon.social/tags/protopc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>protopc</span></a></p><p><a href="https://retrocomputingmx.com/7kwo" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">retrocomputingmx.com/7kwo</span><span class="invisible"></span></a></p>
Bread80<p>Adding some branding inspired by the original. I don&#39;t have a font I&#39;m entirely happy with - those squared off capitals are very distinctive - but this certainly adds some gravitas to the board.</p><p><a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>The <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> keyboard has four indicator lamps. I could easily slap in an LED but want to try and retain that incandescent bulb look. I&#39;ve tracked down a suitable bulb holder which is commonly available and affordable. But I&#39;ve added an LED footprint as a backup. I&#39;ve made the resistors common to both the LED and the bulb so they can also regulate the bulb brightness if desired.</p>
Bread80<p>I’m debating options to replace the mirrored L-shaped enter key on the <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> keyboard.</p><p>1. Use a wider enter key. This eats into the gap to the number pad.<br />2. A vertical enter key. This leaves a pleasingly quirky gap to the shift key.<br />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.</p><p>You might gather I prefer option 2 but I’m open to persuasion.</p>
Bread80<p>I&#39;ve been wondering about the lack of cursor keys on the <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> keyboard. Clearly this is software dependent. I&#39;ve been flicking through the Programmers Manual to see how the source editor handles it.</p><p>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.</p><p>1/n</p>
Bread80<p>I&#39;ve been wondering what the &#39;SP&#39; on the SP/0 key does on the <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> keyboard. Then I realised that the keyboard logic board returns ASCII so the secret will be in the schematics. And for most keys the logic just twiddles a single bit. So top row number keys convert to the one bit different ASCII characters.</p><p>And what does &#39;0&#39; convert to? SPACE!! So SHIFT-0 returns a space character. I&#39;m wondering if any other keyboards had this quirk?</p>
Bread80<p>I needed to destress this week so I&#39;ve been doing PCB layout for the <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> keyboard but upgraded to cherry style keyswitches.</p><p>The design uses two resistors and a capacitor to debounce most keys. On the original these are sited next to the switches but there&#39;s no space for that with modern switches.</p><p>I&#39;ve moved them to a row behind the keys, and aligned each with the center of the switch, which feels like a homage to the levers on mechanical typewriters.</p>
Bread80<p>I&#39;ve now added some photos to the repository (link in previous toot). Not the best quality but there&#39;s now something to look at.</p><p>Here&#39;s a couple of those for the Decoder PCB. There are more in the repository itself.</p><p><a href="https://mstdn.social/tags/Datapoint" class="mention hashtag" rel="tag">#<span>Datapoint</span></a> <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>I&#39;ve just pushed a very long overdue update to my Datapoint 2200 repository.</p><p>New stuff includes schematics for video, keyboard and keyboard logic.</p><p>I&#39;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.</p><p>I also need to add some photos and PCB renders to the readme.</p><p><a href="https://github.com/Bread80/Datapoint2200" target="_blank" rel="nofollow noopener" translate="no"><span class="invisible">https://</span><span class="ellipsis">github.com/Bread80/Datapoint22</span><span class="invisible">00</span></a></p><p><a href="https://mstdn.social/tags/Datapoint" class="mention hashtag" rel="tag">#<span>Datapoint</span></a> <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>What&#39;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.</p><p>(The old code doesn&#39;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).</p><p><a href="https://mstdn.social/tags/Datapoint" class="mention hashtag" rel="tag">#<span>Datapoint</span></a> <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> <a href="https://mstdn.social/tags/I8008" class="mention hashtag" rel="tag">#<span>I8008</span></a> <a href="https://mstdn.social/tags/Intel8008" class="mention hashtag" rel="tag">#<span>Intel8008</span></a></p>
Bread80<p>Now to get memory writes working in the Datapoint simulator. There&#39;s a /MEMORY_WRITE_READY input which needs to be driven. The circuit for this is on the keyboard decoder PCB.</p><p>Unconnected to the rest of that board, except for a POR output. Not the first bit of circuit I&#39;ve found spilled onto a different board.</p><p>The circuit drives the /MEM_WRITE_READY line while the hardware bootloader reads data from tape. I can just glue it high for now.</p><p><a href="https://mstdn.social/tags/Datapoint" class="mention hashtag" rel="tag">#<span>Datapoint</span></a> <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>&#39;Clear the carry tiggle&#39;.</p><p>I think they meant to say &#39;toggle&#39;, although twice suggests it may be intentional.</p><p>The documentation usually refers to &#39;flip-flops&#39; as opposed to &#39;flags&#39;, or &#39;toggles&#39;.</p><p><a href="https://mstdn.social/tags/Datapoint" class="mention hashtag" rel="tag">#<span>Datapoint</span></a> <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a></p>
Bread80<p>I&#39;m spending the afternoon running through the <a href="https://mstdn.social/tags/Datapoint2200" class="mention hashtag" rel="tag">#<span>Datapoint2200</span></a> instruction set in the simulator to test everything.</p><p>So far, loads working, as are all the ALU operations, including the two shifts.</p><p>I&#39;ve done my first ever use of the stack (with CALL and RETurn) which checks out okay.</p><p>Pretty much the only thing left to test is writes to memory. I&#39;m fairly sure there&#39;s still a bug in the simulator code due to time when I&#39;m clocking the memory bits. Should be a simple fix.</p><p><a href="https://mstdn.social/tags/Datapoint" class="mention hashtag" rel="tag">#<span>Datapoint</span></a></p>