add images to wy-60 post, and post it.
Some checks failed
Build Blog / Build (push) Failing after 8m5s
Some checks failed
Build Blog / Build (push) Failing after 8m5s
This commit is contained in:
parent
d884ce1fac
commit
394de3ceaa
3
.gitattributes
vendored
3
.gitattributes
vendored
|
@ -1,2 +1,5 @@
|
|||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.woff2 filter=lfs diff=lfs merge=lfs -text
|
||||
content/**/*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
content/**/*.png filter=lfs diff=lfs merge=lfs -text
|
||||
content/**/*.gif filter=lfs diff=lfs merge=lfs -text
|
||||
|
|
1
.prettierignore
Normal file
1
.prettierignore
Normal file
|
@ -0,0 +1 @@
|
|||
_includes/
|
|
@ -8,89 +8,93 @@
|
|||
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: var(--color-fg); /* base05 */
|
||||
background: var(--color-black);
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
font-size: 1em;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
color: var(--color-fg); /* base05 */
|
||||
background: var(--color-black);
|
||||
font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
|
||||
font-size: 1em;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
|
||||
color: inherit;
|
||||
text-shadow: none;
|
||||
background: var(--color-black-bright); /* base02 */
|
||||
pre[class*="language-"]::-moz-selection,
|
||||
pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection,
|
||||
code[class*="language-"] ::-moz-selection {
|
||||
color: inherit;
|
||||
text-shadow: none;
|
||||
background: var(--color-black-bright); /* base02 */
|
||||
}
|
||||
|
||||
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection, code[class*="language-"] ::selection {
|
||||
color: inherit;
|
||||
text-shadow: none;
|
||||
background: var(--color-black-bright); /* base02 */
|
||||
pre[class*="language-"]::selection,
|
||||
pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection,
|
||||
code[class*="language-"] ::selection {
|
||||
color: inherit;
|
||||
text-shadow: none;
|
||||
background: var(--color-black-bright); /* base02 */
|
||||
}
|
||||
|
||||
@media print {
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
padding: 1em;
|
||||
margin: 0.5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:not(pre) > code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: #{{base00-hex}}; /* base00 */
|
||||
background: var(--color-bg); /* base00 */
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre) > code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
white-space: normal;
|
||||
padding: 0.1em;
|
||||
border-radius: 0.3em;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.cdata {
|
||||
color: #{{base03-hex}}; /* base03 */
|
||||
color: var(--color-white); /* base03 */
|
||||
}
|
||||
|
||||
.token.entity,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #{{base04-hex}}; /* base04 */
|
||||
background: #{{base01-hex}}; /* base01 */
|
||||
color: var(--color-white-bright); /* base04 */
|
||||
background: var(--color-black); /* base01 */
|
||||
}
|
||||
|
||||
.token.punctuation {
|
||||
color: #{{base05-hex}}; /* base05 */
|
||||
color: var(--color-fg); /* base05 */
|
||||
}
|
||||
|
||||
.token.variable,
|
||||
.token.tag,
|
||||
.token.operator,
|
||||
.token.deleted {
|
||||
color: var(--color-blue); /* base08 */
|
||||
color: var(--color-blue-bright); /* base08 */
|
||||
}
|
||||
|
||||
.token.property,
|
||||
|
@ -98,12 +102,12 @@ pre[class*="language-"] {
|
|||
.token.boolean,
|
||||
.token.constant,
|
||||
.token.url {
|
||||
color: var(--color-red); /* base09 */
|
||||
color: var(--color-red); /* base09 */
|
||||
}
|
||||
|
||||
.token.class-name,
|
||||
.token.bold {
|
||||
color: var(--color-yellow); /* base0A */
|
||||
color: var(--color-yellow); /* base0A */
|
||||
}
|
||||
|
||||
.token.string,
|
||||
|
@ -111,17 +115,17 @@ pre[class*="language-"] {
|
|||
.token.attr-value,
|
||||
.token.inserted,
|
||||
.token.atrule {
|
||||
color: var(--color-cyan); /* base0B */
|
||||
color: var(--color-cyan); /* base0B */
|
||||
}
|
||||
|
||||
.token.regex,
|
||||
.token.important {
|
||||
color: var(--color-cyan-bright); /* base0C */
|
||||
color: var(--color-cyan-bright); /* base0C */
|
||||
}
|
||||
|
||||
.token.function,
|
||||
.token.attr-name {
|
||||
color: var(--color-magenta); /* base0D */
|
||||
color: var(--color-magenta); /* base0D */
|
||||
}
|
||||
|
||||
.token.keyword,
|
||||
|
@ -129,26 +133,25 @@ pre[class*="language-"] {
|
|||
.token.italic,
|
||||
.token.char,
|
||||
.token.builtin {
|
||||
color: var(--color-green); /* base0E */
|
||||
color: var(--color-green); /* base0E */
|
||||
}
|
||||
|
||||
.token.doctype {
|
||||
color: var(--color-magenta-bright); /* base0F */
|
||||
color: var(--color-magenta-bright); /* base0F */
|
||||
}
|
||||
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 823 KiB After Width: | Height: | Size: 131 B |
Binary file not shown.
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 131 B |
BIN
content/blog/wy-60-repairs/bus_architecture.png
(Stored with Git LFS)
Normal file
BIN
content/blog/wy-60-repairs/bus_architecture.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/blog/wy-60-repairs/cold_joints_1.jpg
(Stored with Git LFS)
Normal file
BIN
content/blog/wy-60-repairs/cold_joints_1.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/blog/wy-60-repairs/cold_joints_2.jpg
(Stored with Git LFS)
Normal file
BIN
content/blog/wy-60-repairs/cold_joints_2.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/blog/wy-60-repairs/editing_post.jpg
(Stored with Git LFS)
Normal file
BIN
content/blog/wy-60-repairs/editing_post.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/blog/wy-60-repairs/socket_ram_chip.jpg
(Stored with Git LFS)
Normal file
BIN
content/blog/wy-60-repairs/socket_ram_chip.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/blog/wy-60-repairs/the_setup.jpg
(Stored with Git LFS)
Normal file
BIN
content/blog/wy-60-repairs/the_setup.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
|
@ -1,7 +1,8 @@
|
|||
---
|
||||
title: Repairing a WY-60 Terminal
|
||||
date: 2025-04-28
|
||||
draft: true
|
||||
tags:
|
||||
- retro
|
||||
---
|
||||
|
||||
# Intro
|
||||
|
@ -41,8 +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
|
||||
to be some shaking in the text, meaning a power supply wasn't being stable
|
||||
|
@ -59,20 +58,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 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
|
||||

|
||||
|
||||
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 +78,28 @@ 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.
|
||||

|
||||
|
||||
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.
|
||||

|
||||
|
||||
Uh, guys?
|
||||
|
||||
Image of more cold joints on a different chip.
|
||||

|
||||
|
||||
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 +116,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 +124,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 )
|
||||

|
||||
|
||||
# Next
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 130 B |
|
@ -27,10 +27,10 @@ export default async function (eleventyConfig) {
|
|||
|
||||
// App plugins
|
||||
eleventyConfig.addPreprocessor("drafts", "*", (data, _content) => {
|
||||
if(data.draft && process.env.ELEVENTY_RUN_MODE === "build") {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if (data.draft && process.env.ELEVENTY_RUN_MODE === "build") {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
// eleventyConfig.addPlugin(pluginFonts);
|
||||
// Official plugins
|
||||
let mkFeed = function (type, path) {
|
||||
|
|
Loading…
Reference in a new issue