Jump to content
IGNORED

Help needed with an Atari 400 OS ROM replacement


Klyde

Recommended Posts

 

Hello guys,

 

I am an Atari fan and collector of 8-bit computers and consoles. I live in France, and some of you already know me as I am a member of The Atari Owner's Club https://atari-owner.com/club/

 

I own several 600/800XL and 65/130XE machines, Atari STE and STF, TI 99, MSX, Oric, Amstrad... well, you name it, plus obscure French computers you probably never heard of...

I also sell an Atari 2600 SECAM RGB video mod, among other things, on my website: http://klydes-korner.site/

 

I try to refurbish and maintain them all, and I have for that all the equipment needed: soldering station with hot air, bench power supply, multi-meter, oscilloscope, logic probe (but no logic analyser), RAM tester, EPROM programmer, etc. though my knowledge in electronics is somewhat limited when it comes to read schematics.

 

Today I need the help of some experts in electronics, with an Atari 400 PAL machine I bought as spares or repair 2 month ago. The CPU, POKEY and one of the OS ROM chip (CO15199) were missing.

I have replaced the missing CPU and POKEY with known good spares I had.


By testing the other chips, I found out the ANTIC was bad, as well as one RAM chip. I replaced them too. All the other chips, including 74xx logic chips were tested ok.

The power supply is ok, and the various voltages +5V, -5V, +12V, are present across the board.

I also have installed a UAV (thank you TBA, it works like a charm).

 

y8pP5pH.jpg

The Atari 400 main board

 

About the missing CO15199 OS ROM, I couldn't find a spare one (not a surprise) except at Best-Electronics, but I can't (and dont want) to buy from them, as they won't let me buy only one $8.00 chip, plus it would cost me a lot more in shipping fees.

So I wanted to try to "emulate" the CO15199. I read somewhere (maybe here?) it was a kind of 2532 ROM chip, so I programmed a 27C32 EPROM with the correct dump image (rev. A PAL ROM file), and I built an adapter with a strip board, since the 27C32 is not just a drop-in chip.

 

NESrrwl.png

 

SFyuDse.jpg

The adapter board I made - The 74LS04 was here for signal testing purposes


But I am facing an "oddity" with the real CO15199 I can't sort out: it has two CS pins (a CS# and a CS pin), whereas the 27C32 only has one CS# pin.

I know what a CS# signal is, and what "active LOW" and "active HIGH" signal means, but I can't figure out how both CS# and CS do work together (if they do?).


According to the schematics:

 

CkMOrdM.jpg

Atari 400/800 Field Service Manual p.43


CO15199 ROM "E" (A104):

CS# is connected to pin 9 of a 74LS42 (which is an output pin).

CS is connected to pin 6 of a 74LS138 (which is an input pin).

 

DAqVKFP.png

 

I am ok with the CS# pin but, what is the purpose of the CS pin?

 

- My first thought: CS# and CS are tied together internally with an inverter: the 74LS42 "drives" the CO15199 with the CS# signal, the CO15199 invert the signal internally to "drive" the 74LS138. But I tried to do some testing of this theory on a breadboard and on the Atari 400 itself (hence the 74LS04 on my adapter board), but had no good results.

 

- Second thought (most likely?): CS# and CS are both needed, CS# has to be LOW and CS has to be HIGH at the same time to select the ROM chip.

 

- Third thought (unlikely?) : CS# and CS are not related, but the signals can be emulated somehow.

 

- Fourth thought (unlikely?): CS# and CS are not related, should be considered as two independent signals and can't be emulated.

 

The only result I have so far is the Red Screen of Death.

 

Is it possible to emulate the CO15199 with a 27C32 or other EPROM? Or am I loosing my time trying? Did one of you do it already? What do you think?

 

If it is not possible to replace it with a 27C32, do some of you plan to place a joint order to Best-Electronics in a near future and would be ok to order a CO15199 on my behalf and send it to France?

 

Thank you for reading me.

Edited by Klyde
Link to comment
Share on other sites

If anyone can help then please do, Klyde is a really great guy and on the level. We were both hoping to get a 400 around the same time but mine fell through and his arrived a bit worse off then he had been told..

 

Paul..

  • Like 1
Link to comment
Share on other sites

1 hour ago, Klyde said:

So I wanted to try to "emulate" the CO15199. I read somewhere (maybe here?) it was a kind of 2532 ROM chip, so I programmed a 27C32 EPROM with the correct dump image (rev. A PAL ROM file), and I built an adapter with a strip board, since the 27C32 is not just a drop-in chip.

The CS signals are always inputs, the different active input levels are used to determine which ROM is active in a multi-ROM environment.

The original chip is a mask ROM, the 2 chip selects can be customized as either active high(CS) or active low(/CS) during manufacture. While using the same pinout as the 2332 mask ROM the 2532 EPROM has fixed values for the 2 chip selects, one active high and the other active low.

 

When replacing a mask 2332 ROM with a 2532 EPROM the different active input levels for the chip select signals need to be taken into consideration, often one signal will need to be inverted, then you are changing to a 2732 which has a different pinout.

 

@slx mentioned the RAM/ROM upgrade board by tf_hh as an option, there are also adapters available for what you have been attempting that also allow inverting the CS signals, unfortunately I don't know of a european company that sells them.

http://store.go4retro.com/23xx-adapter/

 

 

Link to comment
Share on other sites

6 hours ago, Klyde said:

CO15199 ROM "E" (A104):

CS# is connected to pin 9 of a 74LS42 (which is an output pin).

CS is connected to pin 6 of a 74LS138 (which is an input pin).

CS# connects to the /S7 output of the LS42, which decodes the 6502's 64K address space into 8 blocks of 8K each using A15, A14, and A13. /S7 is the highest block, addresses $E000 to $FFFF. But the OS ROMs are only 4K each so they need another address line to select one or the other, A12. When you include that signal, you decode the block $E000 to $EFFF, which is why they call A104 the E ROM. So CS connects to A12.

 

You can replace the ROM chip with an EPROM if you add an OR gate between /S7 + A12 and the /CS input of the EPROM.

  • Like 1
Link to comment
Share on other sites

16 hours ago, Klyde said:

Second thought (most likely?): CS# and CS are both needed, CS# has to be LOW and CS has to be HIGH at the same time to select the ROM chip.

They are both needed but they both have to be low to select the ROM. They are both inputs to the ROM chip. The LS138 is not involved in ROM selection, it just happens that A12 goes there too.

Link to comment
Share on other sites

12 hours ago, ClausB said:

CS# connects to the /S7 output of the LS42, which decodes the 6502's 64K address space into 8 blocks of 8K each using A15, A14, and A13. /S7 is the highest block, addresses $E000 to $FFFF. But the OS ROMs are only 4K each so they need another address line to select one or the other, A12. When you include that signal, you decode the block $E000 to $EFFF, which is why they call A104 the E ROM. So CS connects to A12.

 

You can replace the ROM chip with an EPROM if you add an OR gate between /S7 + A12 and the /CS input of the EPROM.

Thank you ClausB, this is clear! I didn't take A12 into account. I definitely need to learn how CPU address spaces and memory address decoding work!

If you have any ressource or books to point me, don't hesitate, I only have a basic understanding of all that.

 

Correct me if I am wrong, but I should end up with something like this?

And I keep /OE grounded (always enabled), right?

 

I1kaLnS.png

 

Link to comment
Share on other sites

1 hour ago, Klyde said:

Correct me if I am wrong, but I should end up with something like this?

Oh, I forgot about /OE. It acts just like another /CS, so you don't need the OR gate after all! Just connect /S7 to /CE and A12 to /OE.

 

Edit: it would be simpler to leave pin 20 connected to /S7, and it would work, but the EPROM would draw more current that way, since it would become active internally whenever A12 is low, about half the time. Putting /S7 on pin 18 only activates it one eighth of the time.

Edited by ClausB
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...