Sidetracked by 11GB of Model 100 documents

So, I haven’t had time to even get my Model 100 within 10 feet of a soldering iron to replace that suspect RAM chip. But, that doesn’t mean I haven’t been immersed in the ways of 8-bit computers. Eddie Edwards, on the Club 100 mailing list, posted an absolute treasure trove of Tandy Model 100 and related documents. Unfortunately, he ran into space and bandwidth restrictions with the various free cloud providers, so he couldn’t post it all. Turns out, he has 26 gigabytes!!! of documents – mostly book and magazine scans – that he wants to get archived for good.

The Internet Archive has done amazing work in preserving old computer books, magazines and software, and I figured that this material really belongs there. So, I’ve been working with Eddie to get his collection tagged and uploaded. So far, I have 63 items uploaded, representing something like half of what I’ve gotten from him so far, which is only 11 or so GB. I’m in the process of getting it all into a single collection. The Archive actually makes this a rather painful process, having to email links to their staff who are the only ones who can make a collection it seems.

But, there are some real gems, including this example in April 1984 Portable Computing Magazine of bar-coded BASIC programs. Look Mom – no more type-ins!

Anyway – check out the collection thus far: https://archive.org/details/tandy_books. Note that this is much more than just the material I uploaded, but the most recent 53 items are from this newly-found material.

Day 18 – Atari 400, SIO2SD, and Composite fail

RC2016/10 Day 18.

For some reason, October is the month where everything wants to be worked on. It’s been over a week since I’ve gotten some “retro time” so i decided to break out the Atari 400.

My Atari 400
Say what you will about it, but this picture won me $250 in Sophos’s retro week contest.

I’ve had this Atari 400 since I was probably about 8 years old. My dad had the first go at it with a soldering iron, taking it to 48k of RAM and adding that spectacular external 800 keyboard (in a hand-made case, no less). I did a quick-and-dirty composite video mod to this machine about 3 years ago so I could bring it to a retro gaming night, but the output was barely visible on the screen. So, this thing needs some love.

Shortly after “Brexit”, when the dollar gained nicely against the Euro, I purchased an SIO2SD and a stereo pokey mod from Lotharek. I also bought a second pokey chip from him, and he installed it in the stereo board for me automatically. Nice.

Stereo pokey mode
Am I the only one who calls this a Gumby mod?

For the SIO2SD, I went cheap and bought the bare board. I already have a chopped up SIO cable on the homebrew cassette interface that my dad built for the Atari. I can’t remember if we used the tape before getting the 810 disk drive, or if we just wanted to have the tape interface. I remember playing some educational games on tape and saving some BASIC type-ins to tape as well. Anyway, with this guy, I won’t need tapes anymore, so I can scrounge the SIO cable from it.

SIO2SD-bare_board
SIO2SD board before attaching the LCD module to the top header.

A few minutes of wire stripping (I love screw terminals) and I have an SIO2SD attached to my Atari. Time to play some games I haven’t played in over 25 years.

no_signal

Rats! Seems like the video signal from my composite mod is too crappy for this old LCD monitor to recognize. Time to break out the big guns.

No_signal_crt

Crud. No dice with the Magnavox CRT TV either. Guess either something’s come loose inside or my mod was even worse than I’d realized.

In any case, the Atari project will have to go back on hold until I can either redo the mod myself or install a video mod board. I’m really hoping that Bryan from AtariAge gets his Ultimate Atari Video board back into production. He’s re-working rev. D right now. If I have to wait much longer, I’ll probably just get a 7800 mod board from eBay and stuff it in as a stopgap.

Is it the SRAM or the decoder mux?

I didn’t get a chance to play with any hardware today, but I want to elaborate on the conclusion I came to previously. In my last post, after several diagnostics of the Tandy logic board, I concluded that the problem was a failed SRAM chip, specifically M6 – the “option” RAM. I still think this is the most likely culprit, but there is one other possibility: a bad decoder mux – M5 .

The Tandy 102 Technical Reference Manual describes the decoder circuit in great detail and provides the schematic. The decoder circuit uses a multiplexer (mux) to convert the top three bits of the address bus into individual chip enable signals. (Actually, the tech ref talks about generating eight enable signals for an earlier version of the 102 which used 4k SRAM chips.) I can see from the oscilloscope output that no chip enable signal is getting to the option RAM’s enable pin.

So, is the problem with the mux or the SRAM? Let’s list the clues:

  • M6 is getting proper power (Vcc = 5v)
  • M6 is properly connected to the address/data bus
  • M6 is never receiving a chip enable signal
  • All of the other SRAM chips are working properly
  • The M6 enable signal is high, but quieter than other SRAM’s enable lines
  • Attempting to read from M6 results in reading back the address lines

I find it unlikely that the mux (M5) would fail only on a single output pin and leave the others working (which they must be if the rest of the RAM works). Generally speaking, it’s more likely that a large-scale-integrated chip (like an SRAM) would fail versus a small-scale-integrated one like a mux.

Finally, there is the issue of the enable line noise. Here are the scope traces from before, with M6 above and M7 below:

Chip enable M6Chip enable M7

The enable line on the working chip shows a small amount of digital noise, where the presumably failed on does not. What could this mean? I’m not completely certain, but I expect that the noise is coming from within the inner workings of the SRAM and is bleeding into the enable line – not enough to affect the line, but present nonetheless. The non-working chip shows clean Vcc. No digital noise could be a sign that nothing is going on inside the chip.

So, that’s the reasoning behind my conclusion. Hopefully I’ll be able to break out the soldering iron soon and test my theory.

Tandy 102 RAM Exam

Here it is – taunting me!

Cold booted 24k
That horrible number: 21446 Bytes free.

The Tandy 102 (and the Tandy 100 which came before it), like most vintage 8-bit systems, have a very simple memory map:

Tandy 102 memory mapThe Intel 8085 (an 8080 derivative) has a 16-bit address space, meaning it can address up to 64k of physical memory space. The system ROM occupies the top (lowest-address) 32k of memory space and the SRAMs occupy the bottom (highest-address) space. The space in the middle, between 8000 and 9FFF, is a little bit special: it’s reserved for the “Option RAM”. When the Tandy 10o was originally introduced, it shipped with only 8k of RAM installed, but had sockets for up to 24k of additional RAM. When the 102 was later released, being an upgrade of the 100, it shipped with 24k installed and left a single space open for an additional 8k of RAM: the “Option” RAM.

Together all four 8k RAM chips provide the full 32k of RAM from address FFFF to 8000. (Note that all of these RAM address numbers are given in hexadecimal notation.) However, as the Tandy 100 OS and various other memory structures occupy some memory even on a freshly booted system, a 32k Tandy 100 will show 29314 bytes free. The sad 21446 in the bottom-right corner of my unit is the max free space on a 24k system, meaning that it has lost 8k of RAM – a full quarter of its precious memory.

Could there be something wrong with the way the OS is detecting the memory configuration? Let’s use BASIC to query the memory space where the RAM chips live, starting at the “top” of memory space:

Basic peeking

Right away, something isn’t right. What are the chances of two successive peeks at sequential addresses returning an incrementing series starting from zero? Lets keep poking. A quick BASIC program will read all addresses starting from 32768 (8000 hex):

10 FOR I = 1 to 8000
20 PRINT PEEK (32768 + I)
30 NEXT I

The results aren’t pretty:

Reading 8000

What in the world is going on?

The answer lies in the 80C85’s multiplexed data bus. The lower 8 bits (the least-significant bits) of the address bus are shared with the data bus. So, when accessing memory address 8000, the bottom 8 bits of the address bus are all zero. Then, after the address has been sent to the RAM chips and latched by the memory decoding circuit, the 80C05 reads the data lines; the RAM chip should have loaded an 8-bit data word onto these lines by now. However, if we have a faulty RAM chip, what’s left on the data bus is the lower byte of the address we read. Hence, as we increment the read address, the value we get from the PEEK also increments.

To confirm my suspicion, let’s try reading from a different RAM chip’s addresses:

Read A000

Random values – exactly what we would expect when reading from a random address inside a working RAM chip. So, what’s wrong?

There are several potential causes:

No power?

I pulled up the datasheet for the 8464 SRAM. Vcc is reading 5v and ground is continuous with a known ground point. Strike 1

Bad trace?

A member on the Club 100 mailing list said that it’s not uncommon for Tandy 100/102 logic boards to develop bad traces. I checked continuity on the address/data bus and found it continuous with working chips. Strike 2

Bad decoding circuit?

The Tandy 102 technical reference manuals (remember when you could get those?) lays out the memory decoding circuit.

Tandy memory decoder

A multiplexer is used to turn top three bits of the address bus into individual chip enable signals for the 4 RAM chips. With this circuit, even though all four chips are receiving the same address on the bus, only one of them is active at any time. So, if I probe the chip enable lines, I should be able to see the decoder circuit activating the right chip at the right time. Probing RAM chip M7 (the one we saw giving the expected random bytes earlier), we see the enable line periodically going low (this is a low-active line, meaning the chip is enabled when the line goes to ground).

Chip enable M7

However, when probing M6 (the option RAM) chip enable, the line never goes low.

Chip enable M6

In fact, we don’t even see the small amount of digital noise present on M7’s chip enable line. I was hoping to find a bad trace here, but checking from the decoder mulitplexer to the M6 chip enable line shows zero ohms: an intact trace.

So, faced with these facts I must conclude that I have a dead RAM chip. Luckily, 8k x 8 (8 thousand “words” by 8 bits) SRAM chips are still readily available. A quick check on ebay brings up a 3-pack for $10 with free shipping. If only we’d had RAM prices like that in the ’80s!

Retrochallenge 2016/10: The 8-bit hospital

Welcome to the 8-bit computer hospital.

The Patients

Patent number one is a 28-year-old 32kB Tandy 102 suffering from acute amnesia. Patent reports being in the middle of some casual BASIC coding when it suddenly crashed and erased the program. Upon cold-boot, it couldn’t remember anything from its upper 8k of RAM. In fact, the patient insists that it only ever had 24kB. When asked, under hypnosis, to recall anything from 8000 to 9FFF, it simply repeats the question.

The Tandy 102 has undergone oscilloscopic imaging to determine the extent of memory damage. It appears that chip M6 has failed, leaving the patient one quarter of its RAM dead.

Patient number two is a 33-year-old Atari 400. This Atari has previously received several elective procedures, including a RAM augmentation, an RF-ectomy, and a keyboard graft. Patient is here to correct a previous composite video surgery that left it with poor luminance. While on the operating table, patient has also elected to receive a stereo pokey implant.