diff --git a/content/blog/wy-60-repairs/bus_architecture.png b/content/blog/wy-60-repairs/bus_architecture.png new file mode 100644 index 0000000..30026d1 Binary files /dev/null and b/content/blog/wy-60-repairs/bus_architecture.png differ diff --git a/content/blog/wy-60-repairs/cold_joints_1.jpg b/content/blog/wy-60-repairs/cold_joints_1.jpg new file mode 100644 index 0000000..ddd0233 Binary files /dev/null and b/content/blog/wy-60-repairs/cold_joints_1.jpg differ diff --git a/content/blog/wy-60-repairs/cold_joints_2.jpg b/content/blog/wy-60-repairs/cold_joints_2.jpg new file mode 100644 index 0000000..186d1d8 Binary files /dev/null and b/content/blog/wy-60-repairs/cold_joints_2.jpg differ diff --git a/content/blog/wy-60-repairs/editing_post.jpg b/content/blog/wy-60-repairs/editing_post.jpg new file mode 100644 index 0000000..4124b09 Binary files /dev/null and b/content/blog/wy-60-repairs/editing_post.jpg differ diff --git a/content/blog/wy-60-repairs/socket_ram_chip.jpg b/content/blog/wy-60-repairs/socket_ram_chip.jpg new file mode 100644 index 0000000..5331183 Binary files /dev/null and b/content/blog/wy-60-repairs/socket_ram_chip.jpg differ diff --git a/content/blog/wy-60-repairs/the_setup.jpg b/content/blog/wy-60-repairs/the_setup.jpg new file mode 100644 index 0000000..5f12def Binary files /dev/null and b/content/blog/wy-60-repairs/the_setup.jpg differ diff --git a/content/blog/wy-60-repairs/wy-60-repairs.md b/content/blog/wy-60-repairs/wy-60-repairs.md index f54011e..516c4ab 100644 --- a/content/blog/wy-60-repairs/wy-60-repairs.md +++ b/content/blog/wy-60-repairs/wy-60-repairs.md @@ -1,7 +1,8 @@ --- title: Repairing a WY-60 Terminal date: 2025-04-28 -draft: true +tags: + - retro --- # Intro @@ -41,7 +42,6 @@ At this point we needed to test them out. And this is where I realized that, despite picking the unit with the least yellowing, mine didn't work. I saw the cursor, and a line for the status bar, but no characters in sight: -image here Thankfully, the scuffed one worked, so I was able to confirm that I could interact with it. However, the geometry was bad and there seemed @@ -59,20 +59,19 @@ This took a while, as I was still figuring out the best way to disassemble the unit. Testing it was initially challenging as it sits on the screen face as you take it apart. -Eventually, I got it back together. But we were clearly not done. +![image of a RAM chip sitting in a DIP socket](socket_ram_chip.jpg) -image here +Eventually, I got it back together. But to my dismay I was still greeted with a +blinking cursor and no status line. At this point, I needed to probe the system +while it was running to see if any chips were being silent. -At this point, I needed to probe the system while it was running -to see if any chips were being silent. +I eventually came up with this setup. It's not very safe, but I coped by +telling myself that I would only touch the system when it was off. That rule +didn't last long. Fortunately the low voltage digital stuff that I care about +was close to the table and far from the spooky high voltage near the top of the +board. -I eventually came up with this setup. It's not very safe, but -I coped by telling myself that I would only touch the system when it was off. -That rule didn't last long. Fortunately the low voltage digital stuff -that I care about was close to the table and far from the spooky high voltage near the -top of the board. - -image here +![Picture of a half-open terminal face down lying on top of some containers](the_setup.jpg) My next hunch was that something was wrong with the Attribute data pipeline. The attribute data is what determines if a character or line is large, blinking, @@ -80,30 +79,31 @@ reverse-color (block), or "blank". I thought that if the pin for "blank" was stu none of the characters would not load properly. The character attributes can either be stored alongside the character itself, or in a separate "Attribute RAM", which is read at the same time. -Image of functional block diagram, showing the attribute and character data pipelines. +![Functional block diagram, showing the attribute and character data pipelines](bus_architecture.png) + With my new test setup, I was able to find and probe pins from the underside of the board. One of the challenges here is that there are multiple busses, each with potentially multiple masters. Not only do you need to probe a data line, you also need to have a probe for whatever makes the chip "active", be it a chip select, or an `~OE` pin on a logic buffer nearby. -Image of the PCB schematic, showing the complex bus interconnect and 74-series chips. - I started from the font ram, then checked U20, which was the custom chip. I kept working backwards, but couldn't find anything that felt wrong. Things took a quick turn when I noticed this while setting up a probe: -Image of cold solder joints. +![Image of cold solder joints](cold_joints_1.jpg) Uh, guys? -Image of more cold joints on a different chip. +![Image of more cold joints on a different chip](cold_joints_2.jpg) + It can't possibly be this, right? U17 and U15 are part of character storage, and I did see the font RAM output non-zero, meaning it had to have rendered something! I quickly cleaned up the joints and powered it on. I couldn't see it -at first, but it worked. +at first, but it worked. Thankfully I found this before starting to replace other chips. + # Takeaway @@ -120,7 +120,7 @@ seemed "off" before going further. I would have noticed the character RAM eventually, if I finished my testing of the Attribute RAM. In this case it was easy to spot visually and so I didn't need to test it any further. -While I was working on this, my friend was using his unit to develop a USB +While I was working on this, my friend was using his unit to develop the USB keyboard adapter. His unit was slightly more yellow and has some centering issues, but otherwise is fully functional. By the time I had mine figured out, the firmware was mostly complete, so it was a quick flash away. I might blog @@ -128,7 +128,7 @@ about it some time, but the protocol is really simple. I'm typing this last portion in Vim on the terminal, using the VT100 mode. -( image of editing this post with the terminal ) +![Image of editing this post with the terminal](editing_post.jpg) # Next