Arcanis-Will
-
Content Count
41 -
Joined
-
Last visited
Posts posted by Arcanis-Will
-
-
Looks good and you seem to be on the right path. You've already identified an non-obvious issue which is the fact that you can't just plug in the adapter since the Atari pinout is non-standard.
Also (if it was not already obvious to you), from looking at the schematic I see that the DB-9 adapter gets its power from the serial port on either RTS or DTR so your program will need to assert one of those control lines then wait a short time before attempting to talk to the adapter. I looked at the Atari schematic and it seems like you should use port 1. If you have a multimeter and you are using that DB-9 connector with the built-in screw terminals then you see either +10 or -8 volts on the control lines. it would be really easy to debug your initialization step and confirm that you have the +10 volts working on the right pin. If things don't seem to work you could go back and recheck that.
The 850 Operator's Manual has a lot of good information. I assume you will be using the Concurrent I/O mode? Seems like it is the only mode that fits the needs of realtime send & receive but it has the limitation that you can't do other peripheral access while it is active. So you should be sure to have a polling function that does not leave the Atari in concurrent mode permanently. My first attempt would be to write a polling subroutine that enables concurrent mode, gets an update, then disables it again before returning. This way it won't block you from saving your program to disk and/or loading data files, printing, etc.
Oh and the 850 that I have is also very brittle. The edge of the case had snapped off but luckily it was pushed inside so I still had it. I was able to superglue mine as well.
Good luck! Looks like fun!
-
You mentioned the steep learning curve. I wanted to point out a few potential pitfalls that you might overlook. Going with a prepackaged solution does have the benefit that you do not have to debug the very low-level protocol which is non-trivial. Now, you didn't say what your background is or what kind of equipment you have at hand.
The arduino solution would be cool, but cooler still would be one that has the atari doing the lifting. From what I know of the protocol it should be possible.
Possible yes - realistic and acheivable? Maybe, maybe not, depending on skill and experience doing similar. Do you want to spend your time debugging the protocol or writing the higher level application? If you like the idea of this then go for it. I have made my preference above which is to go with the microcontroller approach.
In my opinion using an offboard processor is following in the Atari model where you are creating a smart peripheral. So that's a matter of your choice.
I think I am going to purchase the serial port adapter, 4 port hub, power injector, and one temperature sensor. I will then try to create a proof of concept project and see where it goes from there.
http://www.hobby-boards.com/store/products/1%252dWire-Serial-Adaptor.html
http://www.hobby-boards.com/store/products/4-Channel-Hub.html
http://www.hobby-boards.com/store/products/Universal-AC-Adaptor.html
http://www.hobby-boards.com/store/products/Temperature.html
I found a schematic of a serial adapter here:
http://datasheets.maximintegrated.com/en/ds/DS9097U-DS9097U-S09.pdf
There will be a steep learning curve to get my coding skills to where they need to be for this project. It should make for a fun, father / son project.

Edit: I was too hasty and missed that the serial adapter has an interface chip inside it. So you can drive it at 9600 or 19200 from the Atari 850. Also the 850 has 4 serial ports so you could treat that as a hub (with multiple serial adapters though).
You don't really need a hub unless you are managing a lot of sensors. Interfacing to a small number of sensors, you can just daisy chain them similar to Atari SIO. I would instead of buying the hub, add another sensor or two. Or save money and just delete the hub.
-
Quick Update:
I have received my order of Labelle 106 and it worked extremely well to lubricate the cartridge doors.
For the Atari 800, the pivot mechanism is all plastic-on-plastic and my system's plastic is quite hard and brittle so there was a lot of friction. I applied the Labelle 106 to the plastic hinges and worked it in. The door opens very smoothly now. I will still go back and grease the release latch the next time I take apart the chassis.
For the Atari 400, the pivot is plastic pins into the metal brackets. Since I had it disassembled at the time, I greased the door pins, the release latch, and also the power interlock rod that slides in the metal shield. All was very sticky before and the power interlock did not work well. Now it seems like brand new. Works like a charm.
Several days have passed and it is not gumming up or melting the plastic yet, which is a good sign. So far this is a great product.
-
2
-
-
To expand on what ProWizard said - I found something else that can cause the black screen (if you can follow this hopefully it will make sense). Your symptom could be caused indirectly by a good GTIA which is affected by a failed chip select coming from either U2 (Address Decoder), or U3 (MMU).
It took me several hours of troubleshooting to determine that at the times that my dead 800XL works, all the signals from the GTIA are great, but when it fails, the GTIA is not getting accessed and the waveforms are not coming out. Probing the CS line on the GTIA yields garbage, not pulses. So that comes from U2 which is apparently fed garbage from U3. However other parts of U3 feed good pulses to the ROM chips. So in my case I think I have a damaged MMU.
If you have access to an oscilloscope you can identify the necessary signals using the SAMS Computer Facts Technical Service Manual.
This will let you determine if you see good pulses going to the RAM demux chips (U26, U27), to the ROM chips (U4, U5), and to the GTIA.
Also since you have a black screen you can look at the SAMS guide page 26/27/28 - the wide schematic - and see the sample waveforms at certain pins.
if you have a scope, check the signals. If not, try swapping GTIA, MMU, and Address Decoder (U7, U3, U2).
-
You can test most of your soldering by probing the continuity across all 8 chips. Because the majority of the pins are common (I think all but Data In & Data Out), you should have continuity across all of them.
Look up the schematic for the board, or even simpler, look at the datasheet for the memory. Then identify all the common lines which is basically everything except the two data pins.
A quick example - pin 3 is /WE. If the memory is marked U9 - U16, then put 1 test lead on pin 3 of U9. You should have a solid connection to U10 pin 3, U11, pin 3, and so on.
This will verify socket / PCB trace connections and will tell you that all sockets are attached to the PCB. If you find that one doesn't then you need to touch up that pin. If none are reachable from the first socket then it might be the first socket with the issue.
Also, the schematic specifically calls for HM6864-2P, not 4164. I am not familiar with the difference between the 4164 and the 4864. Are they compatible?
ps - I would do this with power off to avoid accidental shorts to 5v or GND.
-
Just some off the cuff ideas...
If it's really the 1-wire protocol as used in the Dallas semiconductor products, then the interface is straightforward. You may have already thought of this. If it were me, I would use an Arduino Uno or something similar as a separate processor to do all the complex timing and interfacing with the sensors. It can also pre-format / parse / validate the data before sending on only good data in a plain-text or some kind of simple message format to the Atari over a serial data link (like SIO).
Advantages for using the Arduino:
- Already-written and tested libraries for 1-wire, basically everything is done for you, lots of examples available, very simple.
- Highly programmable - pretty decent IDE given what it is.
- You can build the entire thing on its own and have it print the data to the debug serial port which will show up on your PC. This makes it easy to debug your parsing.
- Much faster processor for performing 1-wire interface and data validation
- Very easy to interface the Arduino's 5V level serial port (hardware UART) directly to the Atari's SIO port.
- Cheap - I just bought one for $17.95 (+shipping) from Amazon.
- Great learning project.
- Modular - you can debug the sensor interface and get that working independently of the GUI programming on the Atari.
Disadvantages (potential at least):
- How well do you know C and/or C++?
- Somewhat more complex project because you now have an intermediate message protocol to invent. But it can be simple.
- You need to figure out how to read/write data to the SIO port - what would this Arduino look like? An 850 interface?
- Or would it instead need to connect to a joystick port and bring associated complexities.
-
Did you double and triple check that you have the right parts and the right speed? Also that they are all oriented correctly?
-
Solved!
After some 2 hours more troubleshooting I found that I had a bad Pokey (A101).
First I tried the Star Raiders cart - no improvement.
Then I remembered I had an extra OS Module from the pile of stuff I bought, so I swapped all three ROM from the module to the 400 motherboard, one at a time - still no improvement.
Then I decided to pull the only other large component on the board and try running the computer without it - so I pulled the Pokey off and voila! I got a working display just like that. So the computer will boot to Memo Pad (or Star Raiders) without Pokey.
After I found that out, I replaced the dead Pokey with another pulled off my dead 800XL board, and it powers up! Finally! All keys on the keyboard work too. What a relief!
I just finished putting it all back together.
As a side note, I took the time to lube up the 400's door mechanisms. Earlier this week I had ordered some Labelle 106 plastic-safe grease. It came in today and so I used it to grease up the 400's door mechanism, and the release latch where it rubs on the shield, and also the power interlock rod which had been sticking in the shield. The door and interlock work amazingly well now! It's really cool.
-
1
-
-
I'd be concentrating on the CPU, Antic, OS Rom and the Ram.
If you have a game cart like Asteroids or Star Raiders, give it a go.
I suppose already you've tried for key presses and get no clicks.
If you have the means to burn/flash a diagnostic cartridge then it can be helpful also.
CPU boards - there are 2 versions at least. Earlier machines used mainstream 6502, later ones have the 6502C "Sally" version which requires less supporting logic chips.
Yes, no key click sounds either. I've tried 2 different CPU cards and 4 RAM cards with no change so I am looking more towards motherboard and ROMs. I do not have any means to burn a cartridge for diagnostics. However, I just realized that even though I did try the cartridge slot (which did not work), it was actually done while using the MS Basic hidden inside Star Raiders which is not at all the same. I will go back and reverify with a real Star Raiders cart, which I have recently acquired.
Thanks.
-
I am attempting to troubleshoot a dead Atari 400 using the flowchart on page 5-4 of the Atari 400/800 Field Service Manual. It's the sequence called "400 Power-Up Catastrophic Failures and Basic Operations Black / Grey Screen".
My symptom is exactly that - a blank / black screen on powerup.
I have followed the sequence and found the following:
-- Is there -5V... YES
-- Is there +12V... YES
-- Check the CPU Board for Clock Circuit - YES *
-- All testpoints listed in table 5-1 had signal patterns at the indicated frequencies - except for the first 2 entries in the table. I could not figure out where pins 21 and 22 of J101 were. I could not identify J101. Therefore skipped those two measurements. If anyone knows where those testpoints are please let me know.
-- Chip Reset Voltages:
Is there +5V on A302 pin 36 - YES
and on A303 pin 30 - NO - it's not 5V - it is a fluctuating value around 1.5 to 2V. Seeing this apparent failure, I retested it using another CPU card that was tested good, and have the same result - not +5V.
EDIT: Looking at the actual CPU board schematic, it appears the flowchart is wrong - the reset line for A303 is pin 40, not pin 30. Pin 30 is a data line which would explain the fluctuating values. It looks like I am unstuck - I will have to go back and confirm on the right pin but I already packed up all my stuff for the night.
The next step after that would be to replace the GTIA but I was told this board was tested and had a good GTIA so I will go on to the next step which is apparently to replace a bunch of chips on the motherboard (chips that I don't have). Will have to resume this tomorrow.
Also, just to confirm the reset back at the source, I probed the output of the reset circuit on the motherboard and it is outputting 5V (A111 pin 15).
-
I'm not completely sure I understand what you are describing by hard wired. To me, hard wired means no connector - both ends soldered - but you mention that the other end does have a header. Do you mean that it's not a ribbon cable and is instead a set of separate wires going to the header? The female header at the end of my ribbon cable was very well stuck onto the pin header and it took a lot of careful prying. Plus you have to be sure that the end of the header is raised enough to clear the edge of the shield or PCB - there was something that otherwise interfered with the header coming straight off.
If you had a picture it would be easier to visualize. Are you referring to something like this? I can't find any other references online at the moment. If that is what yours is like, the header (at top of pic) will indeed come off the pins but you have to ease it off carefully.
To your other question, I don't know how to judge the vintage but maybe someone else will.
-
Here is a summary of what I found when fixing the 10 or 11 "broken" (non-working) keys on my Atari 800. Not in any particular order. Hopefully this will help others.
- The root cause for all broken keys was that the solder pad(s) for those keys had been lifted off the underlying PCB. Appears some kind of force was applied to the key and/or they were mounted in a way that allowed pressure on the keys to push the solder pads away from the PCB. This popped the pads free which in turn broke continuity at just about every pad. Some pads made intermittent contact. The effect was that every pad made a break in the circuit which prevents the key and all others after it from working.
- The keys themselves were fine. The mechanical mechanisms worked. This was verified by using a multimeter to test each key directly. Probe right at the contact points for that key where it is soldered to the PCB.
- You may not be able to see the breaks. You will need to use a pencil or test probe to push on each key's solder points. There are 2 leads from each key that will stuck up slightly at the PCB and you can push on the sharp end of the lead to see if it moves. If the key's lead wiggles at all, then your solder pad is loose / broken and you need to jumper it with wire for best fix.
- The fix was to solder wire from the nearby working neighbor keys (as per the circuit diagram) which thus restored continuity.
- You will need to carefully remove as much of the foam mess as you can without further damaging the traces. You cannot test continuity across the PCB without removing the foam at least off each solder joint.
- Check continuity from the connector at the end of the ribbon cable down onto the PCB connection. This rules out the ribbon cable.
- Use the Atari key scan matrix diagram to figure out which pins on the ribbon cable connect to which keys.
- The diagram tells you which ribbon cable pin goes to which key, so visually follow the trace from the incoming PCB pad of the ribbon cable up across the board to the first key. Check that path with a meter. Then check from that key to the next (as per diagram and / or the circuit traces themselves).
- Simply touching up / resoldering each pad will not repair a problem where the pad is actually lifted and disconnected from the traces. You need to add your own wiring to make contact to - and across - the lifted pad so that what was once an isolated key is now part of the chain again.
- I jumpered across the non-functional pads and soldered at each point, effectively making my own traces to replace the many damaged ones on the board.
- It is not high-current - I used some spare wire-wrap wire that I had from some long time ago project.
- After resoldering everything, I used a printout of the scan matrix and checkmarked each and every connection as I retested them with a meter. You want to verify that the incoming ribbon cable pad at the PCB has continuity up through each key that it is supposed to interact with.
- Reading glasses helped a lot.
-
3
-
Don't risk damage to your case. Use a grease designed for plastic:
Agreed. It has enough damage accumulated already.
-
Something I've noticed about 800 doors is that the older ones with the metal shielding plate on the door always seem to have no problem opening and swinging on their own. It's counter intuitive, but the newer 800's with no metal shielding on the door always seem to bind and you have to open the door manually. The springs are the same, but the door material and/or tolerances must be different. My guess is the older 800's had harder case plastic resulting in stiffer and more repeatable dimensions. This results in less binding and the simple springs are adequate to open the door under spring power. The newer plastic being less hard is more prone to warping (we're only talking a few thousands here) and the same spring can't overcome the added resistance. Just a theory, but it never fails that newer 800's need help and old ones don't.
My 800 is also an older one with a metal shield on the door. It had decayed foam and the shield was loose. Boy was that a pain to clean it up and remove the old tape strips from the door and the shield. The decayed foam was easy to clean off, but the pieces of tape were still firmly cemented in place.
So I ordered the Labelle 106 and will post a report once it comes in.
-
I used standard household (3 in 1) oil.
it worked quite well
I have used a generic household oil on a model once and it did not end up well. The plastic got gummy and welded together, so I am a bit cautious when it comes to oils.
I had thought of sewing machine (or hair clipper) oil, since it is very thin and won't gum up over time, and I assume it won't attack plastic or else it would be bad for modern sewing machines and clippers which have so much plastic.
edit: I see the Labelle 106 is recommended for model trains so that's all I need to see. Will have to get some.
-
My apologies if this has been covered somewhere but I've done a few searches and read through the restoration thread and have not found anything.
The cartridge cover on my 800 doesn't open very well. When I release the latch, the door does not really move on its own. I can see that it could move but there is enough friction that it does not. I don't need it to spring open like a catapult, but I would like it to be smoother and free of binding.
What success stories do people have? Are there non-damaging methods to lubricate the pivot points so I can reduce friction? Some oils can attack plastic. I would not want to risk softening the door or any surrounding areas.
-
Thanks for the tip, but I already tried that before -along reformatting the SD card and downloading the ATR files from different sources- but nothing helped.
I began trying with XEX files, but as soon as I activate support in config.h for XEX files, the serial output stops working so that didn't work either.
where can I download .PRO images from? I may have to try those.
You are probably already aware but I thought it worth checking. The Arduino serial port used for SIO might conflict with the debug port depending on which board you have. Which Arduino are you using?
-
Bill Wilkinson did develop DOS XE for Atari. I found that in the Atari 8 Bit FAQ. Though thats not where I read the details on DOS 3. What the %^&* book was I reading!?! This is going to bug me all weekend.
Excerpt from: http://www.faqs.org/faqs/atari-8-bit/faq/section-64.html
"Before its release, DOS XE was widely known as "ADOS." It was developed by Bill Wilkinson for Atari. The DOS XE disk is labeled: DOS XE Master Diskette (DX5090)."
I have not seen anything for DOS 3 yet, but in the book Inside Atari DOS, Bill Wilkinson from OSS describes how they created DOS 2.0S for Atari.
-
Does the screw look tampered with?
I'm not sure I can answer that. It resembles most of the other carts that I have. There is no protection over the screw, and it is fairly straightforward to unscrew it.
Is it an 800 or an 800xl?
It is an 800, not XL, so without any cart it will go to the memo pad, not BASIC.
-
I also wanted to have a disk access LED so I made a small change to the code to make it flash the Uno's onboard LED when processing a command.
It's only giving a light flicker however...
After a lot of puzzling "why isn't this working as I expect!!!???" I had the realization that one cannot use the onboard LED connected to pin 13 as a "disk access" light. Because it is also (drumroll) the SPI clock driving the SD card!
That explains a lot doesn't it? The intermittent flicker is the SPI read/write to the SD card. Avoid using that pin for other duties. I am looking at using an offboard LED on another output pin instead. Much better behavior!
-
1
-
-
I got a box of assorted stuff from Craigslist and one of the cartridges was Star Raiders. But when I turn on the 800 system with that cart installed, it doesn't boot Star Raiders. Instead it displays a BASIC prompt as follows:
ATARI MICROSOFT BASIC II V2.0
© 1982 MICROSOFT
>
Is this an Atari manufacturing error or is it the result of a previous owner swapping cases?
-
Puzzled, I ended up reinstalling pristine versions of both SIO2Arduino and SDFat. I also removed the LCD.
When using another SD program to list the files, I get the full list of ATR files, no problem.
As soon as I upload SIO2ARDUINO, it lists to the serial port only a few files out of what's available in the SD card. Has anyone else experienced something similar? cheers
I have not noticed but I have only 10 or 15 files on my SD card. I will do some experimenting.
Do you know how I can accomplish the "disk swap" needed for a multiple-disk game? There are some I would like to play where it has side A, side B, side C and I don't know how to do it without wiring an LCD (I don't have one yet). I am using the one-button Sdrive menu right now with a Reset button so it resets back to the autorun image.
-
" but at least it’s a flying game where refueling doesn’t consist of shooting a fuel tanker, unlike pretty much every other game with fuel I’ve reviewed so far."
AWESOME comment! Love it! Now back to enjoying your reviews...
-
The memory came today but as was foreshadowed, it did not fix the problem. Still same problem as before. Oh well.
I did a "push check" on each IC - making sure they were all solid.
Interesting result - pushing on U17 made the system work better for a short time. Immediately after pushing on U17 I had 2 successful boots before it failed again. U17 is labeled 1100008-01 which is the GTIA.
Separate Note - the chip that originally had a bent pin was U22 - C012294-19 which is Pokey. I had found either pin 20 or 21 was bent under the IC and not making contact. I have since straightened it and made sure it is seated OK. That would be /K2 or /K3 as per schematic. That would cause issues with Keyboard scan. This could not have passed initial burn in that way. Must have been replaced by an owner, and done poorly.
In summary, I should start next with trying to swap these 2:
U17 - since physical motion affects its behavior.
U22 - since the prior owner was running it with one pin open-circuit for who knows how long.
Is there any commonality with the 400? I have a dead 400 I could rob. Looks like I could steal both of them (depending on whether I have a GTIA or CTIA) - A101 / Pokey is on the motherboard, and A301 is the CTIA/GTIA on the CPU board.

My Atari 800 Keyboard Repair
in Atari 8-Bit Computers
Posted
I think that I used a cleaner called Goo-Gone to help soften and dissolve the foam. Use it somewhat sparingly. You can then use alcohol to wipe off the goo-gone and residue.