Thursday, January 28, 2021

ATARI 600XL and 800XL


A few months ago, I got an Atari 600XL. I remember the Atari XL from my high school days. I did not have one, but some of my friends did. It could be seen in computer stores around Lisbon (but not as frequently as the Sinclair/Timex machines, or the Commodores).
 

Good Looking Atari 600XL

Once it arrived I had to solve some problems before figuring out if it was working.

The first problem was powering it up, as it came without a power brick. This is easily solvable as Atari XLs only need 5V, so an old USB cable can be re-purposed by soldering a male DIN-7 at one end.
The pin-out is straightforward, one side has three 5V pins the other three ground pins, the middle bottom pin connects to the shield.

To be absolutely sure that the pin-out is not reversed, I recommend opening the machine and checking continuity with ground.

The second challenge was getting video out. Unlike the European PAL version, the NTSC version of the Atari 600XL does not have composite video output, only RF. I can feed RF to my modern TV, but it is unreliable and dangerous as it can only sync when scanning for all channels. This takes time, and if there is something wrong with the machine I cannot quickly unplug it to prevent further damage.

So, I build this simple circuit with one transistor, I connected the circuit to the RF modulator inputs using alligator clips. (I later found that the simpler 100uF capacitor mod, as often done in the ZX Spectrum, also works).

OK, It powered up, but I got a red screen. It seems to be broken, as it should boot up to a blue screen with the word "Ready" and the Basic cursor. The good news is that I am getting a video signal, this means that the custom chips in the video circuit are probably fine.
Looking online for possible causes for the problem, I found that it is either a RAM, ROM, or CPU problem (including auxiliary discrete logic).

I verified that all chips have the correct 5V power and ground, so it is not a power problem.

Time to look for broken chips. Now, all the chips in my Atari are socketed. Including the discrete logic. This makes it easy to swap out chips to find a broken one.

Since I don't have another Atari available, I decided to test the logic chips first. I needed to order a couple chips that I didn't already had in my parts bin. This is cheap to do, and the chips are so common that I may be able to reuse them in other projects.

I also happened to have a couple of compatible RAM chips that I had salvaged from a very old broken SCSI disk. The 600XL's 16k of ram is split between two 4-bit by 16k chips. I swapped the RAM and saw no difference.

Then I swapped out the logic chips one by one, and again, nothing changed. I also read the Basic ROM with an EPROM reader/programmer and the contents matched a dump of the ROM I obtained online. To double check, I burned the dump into a compatible 27256 EEPROM, but I still got the same behavior when swapping it out.

At this point, the problem is either with the custom chips, with a passive component, or with a trace in the motherboard. Most likely, it is a custom chip, probably the MMU, or the CPU.

The MMU can be replaced by a programmable 16V8 GAL, but I did not have any. The CPU, is a custom version of the 6502. I tried replacing it by a normal 6502, but it didn't work. (It shouldn't anyway).

Custom chips for old computers are usually quite expensive compared to the price of untested machines. Instead of buying rare chips one by one until finding the problem I decided it would make
more sense to wait and try to find another untested Atari. So I did.

Atari 800XL. The case is the same width as the 600XL's, but it is deeper. This particular 800XL has a mechanical keyboard instead of the membrane most commonly found.  It is a little yellowed on the right side.


It took a while to find one cheap enough. It was a 800XL that differs from the 600XL in that it is physically larger, has 64K instead of 16K, and composite video output. The new machine booted to Basic, but was flaky, crashing frequently. When I ran the ROM diagnostics (BYE command in Basic) it failed the RAM test. So, one or more RAM chips are bad. Otherwise, the machine is good enough to be used to test the 600XL custom chips.

The correct procedure is to test the chips of the bad machine in the good one, one at a time. Otherwise we cannot detect when more than one chip is bad. This also reduces the risk of frying a good chip in a bad board.

After some quick swapping I found the problem to be with Sally, the CPU. This is one of the cheapest custom chips, and I ordered a replacement.

Now it was time to fix the 800XL. Its RAM consists of eight 1-bit by 64K RAM chips.  I picked one from my parts bin (I have 16 of these that I salvaged from an Amstrad PC1512 128KB expansion) and swapped it with each of the 800XL chips, running the RAM test at every step.  After the third swap, the test run to completion: I had found the bad chip. To be sure that the rest of the RAM was fine, I let the test run for a couple hours.

My original plan when I bought the 600XL was to upgrade it to 64K, turning it effectively into a 800XL in a smaller, better looking case. There are various versions of the 16K to 64K mod. Basically, they all consist of replacing the two 4-bit by 16k RAM chips with two pin-compatible 4-bit by 64k chips, and wiring some extra address lines.

Atari 600XL 16K to 64K Ram upgrade.

I also wanted to add a permanent video connector to the 600XL. The NTSC version board is ready to support video out, but the components are not installed. So, the first step was to remove the RF channel switch from the board, since it occupies the place for the DIN video out connector. I replaced the switch with a wire permanently selecting one of the channels (I forgot which one). Then, I drilled a hole in the case for the connector. Finally, I added all the missing components, including the DIN connector.

For reference, the missing components are:
5 Pin Din Connector
R124, R137, 75 OHM Resistor
R128 6.2k OHM Resistor
R129, R131, R132 1k OHM Resistor
R130 2.2k OHM Resistor
R133 3.3k OHM Resistor
R134 10k OHM Resistor
R135 240 OHM Resistor
R136 100 OHM resistor
R138 3k OHM Resistor
R139 4.7k OHM Resistor
C111 3.9pf Capacitor
C112 .001mf Capacitor
C113 100pf Capacitor
L12 Ferrite Coil
Q7,Q8,Q9 Transistor (2N3904)


View of the board before the video-out mod. Note that the RF-channel switch occupies the place of the DIN connector. We can also see the missing components marked on the silk screen, on the left of the modulator, with through holes still filled with solder.





View of the board after installing all missing components for the video-out circuit. I took this opportunity to replace all electrolytic capacitors. 



View of the new hole for the video-out connector.

Now the two 64k 8-bit Atari are working great!
 
References:



No comments:

Post a Comment