The last thing to do at this stage of Blue August's development (before moving on to building a video card) is to finish the I/O module by wiring up the ACIA and attaching a serial port.
Previously I've made a couple of half-hearted tries at getting this working without much success. There were just too many variables... are my ACIAs bad? Do I have the COM port on my old thinkpad enabled? Do I have the right kind of serial cable? Is everything wired up right? etc. This week it was finally time to really concentrate on getting the ACIA working.
Well, let me start by being critical of Ben Eater. I generally an a fan of Ben, and don't have much patience with the negative view of his videos expressed by some of our regulars. This particular time, though, I think he really let us down. Here's a screencap of my schematic for the RS232 interface. I made this in KiCAD while following along with Ben's short series of videos where he adds a serial port to his breadboard 6502. If you check Ben's own schematic on his website, it's pretty similar. I bet Garth will immediately spot the problem...
Attachment:
Screen Shot 2023-11-30 at 2.59.41 PM.png [ 82.31 KiB | Viewed 2562 times ]
Fortunately, I recently read this very useful thread:
viewtopic.php?f=12&t=7790 and remembered this important quote from the Primer:
Quote:
The 6551 ACIA (UART) will not send data if CTS is not true, and it won't receive if DCD is not true. This doesn't mean you absolutely have to use CTS and DCD. If you only want a two- or three-wire interface with no hardware handshaking, then ground these UART inputs so the 6551 will run.
Well a 2 wire + GND interface is exactly what Ben is building in this video. He even mentions leaving those pins unconnected while he's configuring the ACIA. His build seems to work with those pins floating... don't ask me why. Anyway, I grounded those pins.
It still didn't work. I checked the thinkpad's bios. Yup, the serial port was disabled. *sigh* Eventually, I became pretty confident that everything was wired up according to the schematic, that the thinkpad was configured correctly, and yet Blue August *still* was not receiving anything. So I hooked up the scope probes to the two serial lines. It's hard to get an analogue scope to produce useful information on signals that don't repeat, but I was able to get it dialed in to a setting where I could see that the thinkpad was indeed sending data (I just held down a key on the thinkpad and let it repeat). The thing was, the line that thinkpad was trasmitting on was pin 2, which is connected to the *output* of the MAX232. I unwrapped those wires, switched the connection from pin 2 over to R1 instead of T1 and boom, suddenly it works.
Attachment:
20231130_145053.jpg [ 3.8 MiB | Viewed 2562 times ]
Well I'm happy about that. But, I want to solve the mystery. Why did I need to switch those pins? Looking at this site:
https://web.archive.org/web/20170913121 ... tinfo.html it appears that pin 2 is in fact the input pin in a serial port. Why does Ben's work? Does he have a through cable instead of a cross-over cable?
Oh well, whatever. Here are a couple more pictures, one showing the whole field of battle, and the other one zoomed in on my little serial header.
Attachment:
20231130_145035.jpg [ 3.61 MiB | Viewed 2562 times ]
Attachment:
20231130_144946.jpg [ 4.66 MiB | Viewed 2562 times ]