Original Pong did not have any code or even a microprocessor
falstad.com
falstad.com
It uses sixty four NAND gates, twelve NE555 timers, two dozen diodes and some analog parts.
It's about the most basic version of the game. They later published a sound effects board and an on-screen scoring board that uses a couple of dozen more chips.
This! It's very empowering and one of the things that drew me to tech/computers. Being able to understand things helped me realize the potential of what is possible with computers/computing technology.
I majored in EE in undergrad and didn't really appreciate my EE education until I got older (I was more interested in software).
The coolest part was our professors never told us we had to use logic (and then cycle through the pieces faster than the eye could see) to get the 5x7 led display to work for non-symmetric letters. They let us figure that out on our own. I was sitting in history class not paying attention when it came to me. I drew out the circuit I wanted and couldn't wait to get to electronics class to try it out.
Later on digital circuits, we got to design basic CPUs, with optional breadboard implementation, but no one bothered to go that far for optional stuff.
Of course, in the mid 80's that was a pedagogical tool to lead us toward register machines and von Neumann architectures, but there were still some old-skool EE hackers around who built things like guidance systems for the Navy which were hybrid analogue/digital "computers" totally without CPUs or code. Today we have FPGAs and high level tools for building ASIC, but cheap microprocessors effectively swept aside an entire approach.
Maybe we missed something. Many small and well constrained problems in IoT type applications might better be served by hard-configured solutions. They would use less power, be immune to malicious network hacking, not need 'firmware' updates,
They have the added security feature of oily fingerprints containing unique DNA imprinted on them. It's customary in functioning democracies to not sequence fingerprints on a ballot paper, but theoretically it could be done.
If you use the voting machines to keep a running tally of votes cast so results are available immediately after polls close, you have already gotten a large benefit from them.
However, to ensure the (most warranted!) concern of the electorate that the votes are not being tampered with, the machine should also print a receipt to the voter after his/her vote is cast, in a human-readable format, which is then deposited in an urn much like today.
So - you get instant results, and if the result is challenged, you can audit the actual ballots rather than just doing a code audit and hoping the numbers haven't been tampered with in some undetectable way.
Boards full of TTL are a fascinating engineering exercise, but there aren't many applications where they're a better solution.
It's also tempting to cheat and solve some of the sub-problems with monostables and analog timers. As soon as you do that you're introducing potential issues caused by temperature drift, component tolerances, and component ageing.
A fully clocked solution is always more reliable, but often that means a higher component count and cost.
FPGAs have real applications, but they're still harder to develop than code.
When I was a student one of the tutors said "We'll all be doing this in software soon" - and he was right.
We as EE engineers learned to test our creations. We are however slowly pushed to a SW process world where there are modules and integration tests and at the end, testing is just pingponged between EE and System and nobody do the testing.
That's the only one I don't quite understand. All your other points are definitely great objections.
Are you saying that a clocked system consistently uses less power than a stateful but quiescently 'static' circuit? I can imagine there's a reason, but it goes counter to my experience that the faster you clock a microprocessor the more power it consumes; therefore at zero clock rate a purely data-driven system should consume the least power. What am I missing?
1. Discrete logic chips tend to be built in substantially larger process nodes (microns vs nanometers) that are less efficient. This means higher leakage current and more static power.
2. Discrete logic has to drive traces on a PCB, which have substantially higher capacitance (C) and therefore use more power getting across a board.
3. Discrete logic operates at higher voltages. Contrast 5V TTL vs. 1V core voltage inside a processor. Power is proportional to the voltage squared.
4. A microprocessor running even at low speed can replace a massive number of discrete logic chips, so for simple solutions F is low. If you're doing something very simple and interrupt-driven, F can be in the tens-hundreds of kHz.
Consequently, there's a whole lot more of both static and dynamic power with discrete logic than with a uC.
There are ways to make a microcontroller use less power, by making it hard-sleep when nothing is happening, but you don't get that without extra work.
That will introduce practical problems, though. If you want your design on the best tech possible, that costs serious money that you may not be able to afford, especially if you don’t want an enormous number of circuits. Your 10,000 transistor design may fit a million or more times on a top-of-the-line die.
You are still going to use a very old and obsolete process, compared to the microcontroller.
As a rule of thumb, every generation of lithography that has made transistors smaller and more efficient, has also roughly doubled the NRE costs. As you move down the feature size slope, you get all kinds of useful properties, but the tradeoff is that you have to manufacture more of any given design for it to be able to make any economic sense. To the point where you can get an amazing chip that has an arm core, storage and memory in a single package that costs pennies (well, not right now it doesn't, but it did in the past and will again) and uses almost no power, so long as you can use the exact same device that is also shipped in the millions for other things too.
- They have to use significantly higher voltages and consider higher currents, than really need to work.
For example, typical logic output of universal TTL logic, considers connect to it more than 10 inputs, each of them drain some current.
And also, universal logic i/o MUST tolerate some differences in power supply voltages and interference on real circuits.
But if you don't need to communicate to outside of chip, you could make things much more optimized, make customized outputs, considering for only as much drain as really exists in scheme; make internal highly stabilized power supply and very powerful power distribution network.
For first CPUs this was not talked, they just considered as very expensive logic chip, but ~ from 80186, hard to say exactly date, appears division: some outputs become high power, others stay "normal", low power.
And in commodity cpus, in Pentium appear two voltages - one for core and other for interface circuits.
Well, you might still need flaws to be fixed in the device, but now flaws in the device can never be corrected.
- Perform such an update
- Sign off that they performed the update _correctly_
If you need an air-gapped system, it's still much easier to set it up so it can update from a USB flash drive and log "I did the update correctly" back to the drive.
Of course the cost of doing the above is one reason we don't do everything in hardware. If you have the money you could implement everything people do with computers in hardware, no software - I don't even want to think about the cost.
One including a datatype mismatch, that was also a bug in the specification.
My god how I wish that were true.
If a pregnancy test can run doom. It can run state level surveillance.
Always good to remain mindful that what we assume is 'progress' in one direction may not be progress overall, and that allowing backtracking to older interpretations is actually a more mature scientific stance.
I just recall you had to slow down everything considerably to make it human-viewable.
My biggest problem was that I hadn’t yet learned to pick minimum viable projects that would still result in a good grade.
(short clip when they had finished)
https://www.youtube.com/watch?v=9Td0P9Mqu68
A recreation of that modification:
https://www.aussiearcade.com/topic/86532-smaller-paddles-big...
It has powerful memory safety features, but that's not what I'd call "high level".
Added to the fact that D language designers try to make programming D similar to programming Python and D is by default has GC, it'll make it easier for those coming from application software developer background to program embedded system with D.
[1]Add ability to import modules to ImportC:
https://dlang.org/changelog/2.099.0.html#__import
[2]Great Programming with ImportC:
There are also some neat mixed-signal parts from Dialog [1] - no MCU but interesting analogue and digital blocks all the same.
[0] - https://www.infineon.com/cms/en/product/microcontroller/32-b...
[1] - https://www.dialog-semiconductor.com/products/greenpak
Pretty cool though, you can write VGA drivers with it apparently!
Recent product announcements from Intel and AMD show no sign of slowing down. Sure it's not the 'double performance in 1-2 generations' of the olden days, but it's definitely not stalled either.
If the gates path reaches its end, we can still go back to clock. It won’t be easy or cheap to solve all the clock problems, but if it’s better than the alternative someone will do it (like how fracking only became viable as a means of drilling oil once the cheap, easy to get oil was somewhat depleted)
https://hothardware.com/news/amd-computex-taipei-2022-keynot...
So when I met Al, I mentioned that I found the schematics fascinating, and had some questions. He was happy to walk me through the whole thing! After that, he told me all kinds of great stories about the different versions of pong that they built, including color support, the home version, and PAL support.
My trouble was understanding how to flow something through a series of relays, and implementing "AND" and "OR" logic with a relay series.
if(AC && Temp > 160) { run both fans } if(AC || Temp > 160 { run both fans at reduced speed }
Now, the AC is already a relay, but you can just do 'and' and 'or' together without a extra set of diodes.
Anyway, falstad, I love your CircuitJS. I wish I could drag items around though, as for me the hardest part of making sense of things is having a good clean layout.
Random question to readers: does anyone know of a tool to generate the very nice wiring diagrams you'll see in bently and other automotive manuals? I imagine they were originally by hand but later were done with a CAD tool. Just wondering if there are any good open source options.
CircuitJS fails there because I want to create objects, like a 4 pin relay, that has pinouts numbered (87, 87a, 30, etc get reused a lot!) and have colored cables (because they're colored in real life!).
Anyway love this
Does Fritzing get close to what you're after?
It can create stuff like this:
http://troybaverstock.com/wp-content/uploads/2019/04/arduino...
Ideally you'd be able to mark each wire with an indication of color(s) and diameter so the diagram could be printed in black and white (example[0]). I assume that could be done with labels, but on the scale of a vehicle that could get real tedious real fast.
When I need a pretty diagram I typically use either Dia or Libreoffice Draw. Neither is perfectly suited to vehicle wiring, but they get the job done. (Edit: also no simulation, which both of the tools mentioned upthread seem capable of.)
The wiring diagram I am working on is actually for my 900, for which the original fans are bulks, tend to break, and are a NLA. I've exhausted my spares and so now I am going a different route.
But yes, these are exactly the diagrams I am talking about.
Having a computerized version of this would be awesome, actual colors, inlining some information or having 'hyperlinking' around. A lot of the density in these diagrams is to simply fit them on two pages. But, at the same time, it'd be cool to have a picture of say, the solenoid with arrows pointing to the particular pins or replacing the numbers with labels, or say, selecting a relay and having an 'active' path so you could easily see how things flow around without finger tracing it over 3 pages.
What year is your 900? I haven't heard of this fan issue yet, but there are a lot of really specific SAAB things that I'm sure I'll encounter if I can keep this car going long enough.
What I'd really like would be to select a wire and have it highlight the wire and every connection; that'd make continuity tests a lot easier to confirm. I'm sure places like Haynes have some great software in-house they can use to make their diagrams.
Even with the 80's CIS stuff I have experience so... happy to help. The pre 86 calipers are trash though, if you are east coast i have a whole set of 88 front knuckles you might be able to swap over (Not sure if it'll work with your axles).
Anyway, I have a good network of saab people offline so parts and things I can usually wrangle up. Last year we did a saab underground railroad and shipped an 1968 96 transmission 700 miles for free over a few months of people visiting people
I'll have to see where I get on the caliper rebuild. The surviving local SAAB shop has been a great resource, and they've offered some good used pistons if I end up needing them. I'm in the midwest and I get the sense that SAAB never had as big of a presence around here; mine was an IDS car so it was purchased directly from the factory. Most of them including mine have suffered heavy rust damage by now, so there aren't many left.
The best trick I have for old caliper rebuilds is to pop the piston out with compressed air. You can do it with a bike pump and some tubes or anything you can figure out how to supply air to the brake line inlet. This will act like you are pressing the pedal, sort of.
What's an IDS Car?
Also for rust... I honestly mostly ignore it. These cars are unibody construction. You'll have to seriously be rusty to have enough structural problems. I am the king of wire wheel and por-15. I have only replaced a few sections on my cars, mostly floorboards and lower A arm areas.
For what it's worth, I have gotten by with the humble harbor freight welding setup, flux core. It doesn't look pretty but it gets metal welded. I did both of my floor pans this way, and it's... well it's fine. It's not beautiful but it does work. Copious seem sealer helps along as well.
I'd also lightly hone the inside of the calipers if you can, if there's pitting that you can feel rubbing your finger along the inner wall.
I haven't rebuild a pre 86 caliper in a long time, but there should be some good resources on the forums.
I'd mostly focus on getting on the saab facebook group. I am not on facebook, but it is a treasure trove for asking questions. Unfortunately the forums are mostly relegated to historical information now as people have transitioned to single sign on social media. There's also saabnet which is invaluable.
As for popularity, you're quite right. Saab seems most popular in new england. With it's relative wealth, weather and proximity to the outdoors, I think that was a natural fit, unfortunately that means that we lack the arizona rust free cars of yesteryear, there weren't many saabs out there to begin with.
Anyway... I can probably write forever on saab, but I have just recieved parts in the mail from the saab heritage museum and am going to try out the fitment!
I'll send you an email. I could (evidently) talk about SAAB for weeks.
Haven't used it personally...but it looks nice.
http://adamulation.blogspot.com
Unfortunately it hasn't been maintained for a while, which is a shame because I don't think any other program does this. MAME/MESS only simulates machines with CPUs.
https://github.com/mamedev/mame/blob/master/src/mame/machine...
MAME also simulated hardware (connect this resistor to that transistor etc). This is all hardware and no CPU.
That's gonna be interesting.
Lotta fun to learn how circuits work and make some basic projects :)
I found it via https://news.ycombinator.com/item?id=17200163 "... an insanely clever masterpiece of digital design. ... It’s mindbendingly brilliant."
All games were pong like graphics quality.
While I never implemented any of them, it was an interesting source of knowledge while learning electronics.
https://www.pong-story.com/gi.htm
> General Instrument Microelectronics, also known as General Instruments (GI), was well known for designing Large Scale Integragion (LSI) chips. In 1975, GI had a revolutionar idea: the design of a low-cost chip playing several Ball & Paddle games, and available to any manufacturer.
[snip]
> GI's first video game chip was the AY-3-8500. It played six games: four Ball & Paddle variants and two target shooting games, which all had variable difficulty settings changed using switches. In addition, a seventh undocumented game could be played when none of the previous six was selected: Handicap, a football/hockey variant where the player on the right has a third paddle. Very few systems played this game. Interestingly, two versions of the AY-3-8500 exist: the early one with dashed central line (about twice larger) and solid horizontal boundaries.
GI expanded its lineup of single-game chips but, by the 1980s, it looks like the whole concept was dead.
Never saw it in person, but so the story goes....
Since I grew up in post-golden age of arcade, I don't really know which game that was - but I presume it was one of the Nolan Bushnell creations from vague recollection.
Edit: It was Spacerace. From Wikipedia:
>The engineering and prototyping for Asteroid was done by Alcorn. The game is encoded entirely in discrete electronic components, like Atari's earlier games, and unlike later computer-based arcade games; the graphics are all simple line elements with the exception of the spacecraft, which are generated based on diodes on the circuit board arranged in the shape of half of a ship to represent the shape they create [..] That half ship is mirrored on the screen, similar to the diode array in Computer Space, which generated eight directions of a rotating ship with a mirrored four images.
And nearly all "Big" computers before era of mini-computers, also does not have MICROprocessors, their CPU consists of whole board of chips or even more than one board.
Imagine, one of the first commercial computers with MICROprocessor chip, was microVAX II, appears nearly decade later than 8086.
It is crazy though to imagine supercomputers implemented without microchips, not to mention vacuum tubes, hell, wood and brass.
- MICROprocessor, ideally is a one semiconductor die, which integrates all cpu parts.
Unfortunately, now silicon approaching limits, so to make things cost effective, have to do compromises, use chiplets, imposers, but this is very far from universal components on board.
That's really amazing.
That's enormously cool, I do use the falstad circuit simulator, but I've never thought I could add a separate frame with JavaScript for I/O.
Neither were most of IBM's processors.
Shit, I just remembered that PGP in its early days was considered a "munition" and also not exportable. whoops, sorry for the de-rail.
https://en.wikipedia.org/wiki/Timeline_of_arcade_video_game_...
For a description see https://www.masswerk.at/rc2017/04/02.html
Syzygy Engineering (Bushnell and Dabney) soon became Atari, but still entertained links to Nutting Associates with Atari titles appearing under the Nutting Associates brand, as well. (E.g., Pong was Computer Space Ball in the somewhat fancier NA version.)
The game is also seen in the movie Soylent Green (1973) as one of the "furniture" in a rich man's apartment.
Most of the early arcade games, like Space Race (much like its later, better remembered revival Chicken Run), Gotcha, etc., are seriously overshadowed by Pong.
Regarding Computer Space, I once made a simulator for the PDP-1 (the machines that ran Spacewar), so it can be played in a browser (emulating a PDP-1). I have never seen the original in person, so there's no guarantee for this being faithful down to the tinier details. Anyways: https://www.masswerk.at/icss/