Compare commits

...

4 Commits

Author SHA1 Message Date
Thomas Quinot 4f4002ef8f First post on TI resto
continuous-integration/drone/push Build is passing Details
4 weeks ago
Thomas Quinot 690f4c08eb Add figure plugin 4 weeks ago
Thomas Quinot 2dd49045bc Apply overline after rendering for compatibility with jekyll-figure 4 weeks ago
Thomas Quinot 97ccb41f25 Support overline markup 4 weeks ago

@ -33,3 +33,5 @@ gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
gem "jekyll-openmoji", "~> 0.1.6"
gem "jekyll-figure", "~> 0.2.0"

@ -54,6 +54,7 @@ GEM
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-figure (0.2.0)
jekyll-openmoji (0.1.6)
html-pipeline (~> 2.14)
html-pipeline-negarmoji (~> 0.1.6)
@ -110,6 +111,7 @@ DEPENDENCIES
http_parser.rb (~> 0.6.0)
jekyll (~> 4.3.2)
jekyll-feed (~> 0.12)
jekyll-figure (~> 0.2.0)
jekyll-openmoji (~> 0.1.6)
minima (~> 2.5)
tzinfo (>= 1, < 3)

@ -31,6 +31,7 @@ theme: minima
plugins:
- jekyll-feed
- jekyll-openmoji
- jekyll-figure
# Exclude from processing.
# The following items will not be processed, by default.

@ -0,0 +1,15 @@
module Jekyll
class OverlineFilter
def self.apply_overline(content)
content.gsub(/~([^~]+)~/, '<span class="overline">\1</span>')
end
end
Hooks.register [:documents, :pages], :post_render do |item|
if item.output_ext == ".html"
item.output = OverlineFilter.apply_overline(item.output)
end
end
end
puts "✅ Overline plugin loaded!"

@ -0,0 +1,93 @@
---
layout: post
title: "Restoring the TI 99/4A"
date: 2025-03-23 12:00:00 +0200
comments: true
categories:
---
My father purchased that console in 1982. I was 5 at the time, and it was my very first contact with a computer.
We used it for 5 years, till we got an Amstrad PC1512 in 1987.
It has been non-working for a number of years, and today I'd like to bring it back to a working condition, if only to show my kids
what the "computer experience" was like back in the twentieth century.
## What do we have in our hands?
The machine is a European (PAL) model (6 pin DIN component video output, which we used with a PHA2037 RVB modulator).
Model PHC004A (silver console), serial R030174 / 44 83 RCI.
When I opened it up, I first noticed that the VDP was missing! My father mentioned a former colleague opening up the machine at
some point... So I started with getting a replacement 9929 from eBay.
When connecting the machine to a TV and powering up, I get the typical black screen and continuous tone symptom, which is
consistent with the failure mode I remember from years back when I had last tried to use it.
## First tests
### Visual inspection
The motherboard shows no obvious sign of damage such as corrosion or swollen electrolytics caps.
### Voltages
* the voltages provided by the mains transformer look good
* the DC voltages at the output of the power supply board look good
### Clock signaks
The four 12V clock signals at the TMS9900 look OKish. They are not super clean, with significant ringing in particular
in the negative region, but the frequency and the phase relationships look right.
The four TTL clock signals at the TMS9904 also look about right.
{% figure caption:"12V clocks" %}
![12V clocks](assets/TI-resto/DS1Z_QuickPrint3-12V-clocks.png)
{% endfigure %}
{% figure caption:"TTL clocks" %}
![TTL clocks](assets/TI-resto/DS1Z_QuickPrint4-TTL-clocks.png)
{% endfigure %}
The VDP clocks look OK:
{% figure caption:"VDP XTAL2" %}
![TMS9929 XTAL2 (40)](assets/TI-resto/DS1Z_QuickPrint5-VDP-XTAL2.png)
{% endfigure %}
{% figure caption:"VDP XTAL1" %}
![TMS9929 XTAL1 (39)](assets/TI-resto/DS1Z_QuickPrint6-VDP-XTAL1.png)
{% endfigure %}
_No CPUCLK on pin 38 as this is an EU console with a VDP9929 VDP: pin 38 is the R-Y video component._
GROMCLK taken on pin 37 the VDP loops OK:
{% figure caption:"VDP GROMCLK output" %}
![TMS9929 GROMCLK (37)](assets/TI-resto/DS1Z_QuickPrint7-VDP-GROMCLK.png)
{% endfigure %}
### CPU signals
* :thumbsup: ~RESET~ seems to be high as expected
* :thumbsdown: A0 and A1 appear to be rippling at odd voltage levels somewhere between logic 0 and 1
{% figure caption:"TMS9900 address bus A0" %}
![TMS9900 A0](assets/TI-resto/DS1Z_QuickPrint9-CPU-A0.png)
{% endfigure %}
{% figure caption:"TMS9900 address bus A1" %}
![TMS9900 A1](assets/TI-resto/DS1Z_QuickPrint10-CPU-A1.png)
{% endfigure %}
* :thumbsdown: ~MEMEN~ seems to be stuck high, I'd expect it to go down regularly as memory cycles are executed
{% figure caption:"TMS9900 ~MEMEN~" %}
![TMS9900 MEMEN](assets/TI-resto/DS1Z_QuickPrint11-CPU-MEMEN.png)
{% endfigure %}
## Conclusion of first tests
At this stage of investigation, it looks like the CPU is not working as expected.
From there I see three possible next steps:
* I'm wondering if the clock signals might be too much out of spec to allow correct operation (in which case
I'd need to first sort these out)
* Could a faulty cap in the CPU's vicinity account for the symptom?
* I'm disinclined to do a full recap in the dark without a positive indication that that's the problem -- visually the caps look
all right, and those from the power supply side appear to be in a good enough state that all voltages look right
* ~MEMEN~ stuck high and A0/A1 at weird level (or high-Z) make me suspect a nonfunctional TMS9900

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -0,0 +1,14 @@
---
# Custom stylesheet
---
@import "minima";
.overline {
text-decoration: overline;
}
figcaption {
font-style: italic;
}
Loading…
Cancel
Save