8 ms·
The Apple-1's shift-register memory
- kens 5y agoAuthor here if anyone has shift register questions :-)
- bingaling 5y agoYou preempted a question about the lineage from/comparison with acoustic delay lines in footnote 2. Thanks for the posts :-)
- spchampion2 5y agoI would love a bit of explanation about why the shift register ICs were spread out so far on the circuit board. Your diagram [1] shows two sets right next to each other with a third set on practically the opposite side of the board. It would almost seem easier to have them all right next to each other so they could cleanly shift. Why the separation? 1 - https://static.righto.com/images/apple-shift-reg/board-labeled-w600.jpg https://static.righto.com/images/apple-shift-reg/board-label...
- kens 5y agoOh good, a non-geopolitical question :-) I think there are a few reasons why the shift registers aren't all next to each other. First, there are 6 shift registers (6 bits), but they interact with two 4-bit multiplexers. So you have blocks of three chips to position. Also, the top bit of the shift register is modified for the cursor, so additional chips are required for that shift register. So it's not as easy as putting the shift registers together, since there are other chips involved. But why are they at opposite sides of the board? I think that is because the shift registers are very simple chips as far as connections, just 6 pins in use. So it is a lot easier to put them at the edges than a chip that has 16 pins in use, since there are only a few lines to route. Note that the large vertical gap between rows of ICs so there is room for all the horizontal wiring. So I think the board had more capacity for horizontal wiring than vertical wiring. As a result, related circuitry is in the same row. E.g. the display stuff is in the same row (mostly), the CPU, peripheral adapter, and RAM are in the same row, and so forth. I think the video circuitry is in the top row so they can put the output connector at the back. I'm sure there are more constraints on routing this board that I can only guess at. Even from a quick look, there seem to be a lot of factors.
- stormbrew 5y agoI saw a photo of this board elsewhere today and I'm also just fascinated by the routing, which seems so completely different from everything else I've seen, even from the era. Were they just trying to make a board where everything, including all traces, components, and connectors, were all on one side? And then they wanted test points on literally every bus line? Seems like something must have motivated it.
- kens 5y agoI'm not sure about your interpretation. It's a double-sided PCB. I think the vias are what you're calling test points. It looks fairly standard to me.
- stormbrew 5y agoHm, fair enough. It's the staggered and widely separated rows that are strange to me. The photo I saw before was at an angle and I didn't see that some of those spots went 'nowhere'. Looking again at the top down photo/diagram linked above I do see that they're vias now.
- Taniwha 5y agoRemember, no PCB CAD tools, it was likely laid out by hand - double sized with red/blue tape - the engineer had to work from a (probably) hand drawn schematic and keep all the layout in his head
- bajsejohannes 5y agoFirst of all, thanks for all your blog posts. It's really interesting to see and understand actual die shots, not just understand it "in theory". Secondly, how was the shift register actually used? Since every bit pushed in will result in one pushed out, wouldn't that force the input to be pushed in at the same rate as the output and thus the shift register just adds a delay? Or does it happen in two rounds, like so? 1. shift the screen data in and discard output 2. shift the screen data out at a different speed (presumably faster) while shifting in dummy data Or is there a third option I haven't thought about?
- boomlinde 5y agoYou feed the output of the shift register back into its input. Only when you want to change the display do you break this loop to feed your new character data into it.
- bajsejohannes 5y agoAh! I didn't think of that option. So the shift register keeps rotating regularly each frame and by timing it correctly, you can change specific bits.
- Taniwha 5y agoIt's worth realising that shift registers for displays were a kind of obvious thing at the time - our mainframe had operator consoles that used mercury delay lines for this ....
- kens 5y agoWas that the IBM 2260 display station? It used sonic delay lines, a 50-foot coil of nickel wire. Torsional pulses were sent into the wire, and it could hold 11,008 bits.
- deleted 5y ago[deleted]
- mepian 5y ago"Access was denied Error code 1020" Is the site blocking Russian IPs? I managed to open it with VPN.
- kens 5y agoYes, accesses from Russia are currently blocked.
- mepian 5y agoWhat is the point of this block?
- flatiron 5y agoBecause you personally invaded Ukraine /s
- mepian 5y agoThe majority of this article's audience in Russia is unlikely to support both this war and Putin's entire rule. The IT workers are the most westernized part of Russia's society.
- kevin_thibedeau 5y agoMotivate a disaffected populace to topple their dictator.
- oh_sigh 5y agoI was unhappy when my dictator trampled my rights, destroyed all the freedoms we used to have, and launched an unprovoked war against a neighbor. But boy, when I can't read an article on a 50 year old shift register memory, NOW is the time for action!
- kevin_thibedeau 5y ago
- russellbeattie 5y agoA previous article posted a week or so ago from the same blog finally flipped the understanding switch in my head and I now understand how long addressable RGB LED strips work. It's a similar shift-register principle in action. Each LED light along a wire reads a serial data line and extracts a certain number of bytes depending on the type of RGB LED it is, then passes the rest of the data on untouched before resetting to read mode again after a certain amount of time (the refresh rate). So, if you want to update the 5th LED color, you need to fill the pipe with the data for the first four LEDs which simply keep them the same color, and then the new data for the fifth LED at the end. I thought that was very cool.