Jump to content
IGNORED

Lynx Eproms, what to do with missing A11?


razor1000

Recommended Posts

I just acquired a Lynx Prototype Eprom cart:

http://cgi.ebay.com/ws/eBayISAPI.dll?ViewI...item=1383405478and looking at the tech docs I think I'm going to have some trouble.

 

I've been looking at 512kB PLCC EEproms on eBay, so I thought I could use those and just flip the uppermost address line and fit two 256kB ROMs in one eprom.

 

Unfortunately address line 11 is not used on the retail carts. Why? What a dumb thing to do!

 

Instead of doing the addressing linearly, (A0, A1, A2-A18) they use an eight bit shift register and a counter. (A12-A19 for shift register, A0-A10 for counter) The counter lines increment depending on how big the ROM is: 9 bits for 128kB, 10 for 256kB, 11 for 512kB.

 

Does that mean they just F out every xx8xxh address? Maybe this is good for padding, but wouldn't that waste like 4kB?

 

Couldn't I just shift the shift registers down an address on the eeprom(so the system thinks it's using A12, but it's using A11 on the eeprom) and that way free up the upper two address lines on the eeprom to toggle between roms?

 

This is very, very confusing. I wish they would've just used linear addressing.

 

Thanks!

Link to comment
Share on other sites

Hey buddy,

 

thanks for bidding on it, you are incorrect about your assumption. First of all you can't use PLCC EPROM's, you need DIP EPROM's.

 

What I presume you are trying to do is make a Lynx multicart, you can do this by bending address pin 18 on a 27C040 up and use a 1K pulldown resistor to GND and a switch to +5V. All you need to do is make a 256K image out of 2 128K images and you're done. You can even make a 4 game cart if you use 2 switches and a 27C080 and repeat this for address line 19.

 

Hope that helps.

-R

Link to comment
Share on other sites

Hey McGrail,

 

it isn't very easy because of the size of the games, that's why there is no Atari 7800 multicart. The biggest pin compatible chip would be a 27C080 (512KB) which would hold 4 games, in my opinion that isn't enough.

 

Now, you could go ahead and design a rather large board that would chip select a bank of 27C080's but that falls into the price category "WAY TOOO MUCH" but it could be done. Besides, some games use battery backed up RAM etc. which would be a royal pain in the ass to reproduce on top of making a multicart.

 

Still, anything is possible if someone is willing to pay the price and invest the time.

Link to comment
Share on other sites

Hey buddy,

 

thanks for bidding on it, you are incorrect about your assumption. First of all you can't use PLCC EPROM's, you need DIP EPROM's.

 

I beg to differ. The pinouts are the same. All you need is a little converter. You can buy one from:http://www.batronix.com/electronic/e-shop.shtml

 

Look for

PLCC32-DIP32 Adapter WA032127 (for PLCC32 Eproms e.g. 27c010 till 27c080)

 

It's $15 + shipping (from Germany, ick), or you can make one out of a 32-pin PLCC socket and a 32-pin DIP socket. I'm in the process of doing that right now. I found a place locally that sells AM29F040Bs for $3 a pop.

 

You're off on your Megabit - Kilobyte ratio. 27c040 is a 4 Megabit, which is 512kB. It *should* hold two 256kB roms.

 

It sounds like you've burned eproms for this before. Did you have to do anything other than strip the Handy header? (.LNX to .LYX)

 

I'm going to go pop a rom image into my burner right now and dissassemble it to see what's going on with the A11 range. If it's just zero'd or F'd out I will presume I could skip over that pin and shift the other address lines down 3. (A9 and A10 aren't used in a 256kB ROM)

Link to comment
Share on other sites

I know the pinout is the same but the form factor isn't and of course you can convert a PLCC to a DIP but like you said, it costs money. I know, I wasn't paying too much attention about the sizes I was typing rather quickly, sorry I am tired.

 

I have messed about with some ROM's for educational purposes to test these EPROM carts. You need to strip off the first 64 bytes of data, the emu's use this header for name + size purposes, etc. !

 

I still don't have a clue what you are talking about when you say that certain address lines aren't used, mind you I haven't closely analyzed the binaries enough to be sure but the data looks linear to me.

Link to comment
Share on other sites

I think I figured it out. I believe the pinout I was looking at was from the Lynx side, instead of the cart side. So it noted that A11 was not connected, but it has 20 address lines, so I would guess they just shift them up one since the shift register is A12-A19, and there is no A19 on these eeproms!

 

I took a look at a hex dump of Centipede, and although there were several zero'd out spots, there was nothing to verify my hypothesis.

 

Thanks all!

 

BTW, anyone have a list of all the 128kB carts?

 

Also, as for the multi-cart idea, couldn't you set up a counter that would control the top few address lines and have the counter count pulses from one of the unused lines? (Audio-in? *Supposedly* it can be used for addressing) Then write a little menu proggie that pulses that address line.

Link to comment
Share on other sites

I just thought of adding my experiences here about this matter.

 

The lower 11 bits of the cart address space come from a counter.

 

There are 3 different games out in the Lynx-market. Most old games

use only 9 bits of this counter (512 bytes/block). All the new games

use 10 bits (1024 bytes/block) and two or three games use all 11 bits

(2048 bytes/block).

 

All the other address bits are directly accessible through a 8-bit parallell

port.

 

So in order to create a cart that can run any types of games without

wasting a lot of ROM-space you need DIP-switches. The idea is that

when a DIP-switch is closed you are actively using it for addressing the

ROM, when it is open the address pin is driven high by a resistor.

 

Lynx A8 ----o o--x--- A8 ROM

Lynx A9 ----o o--x--- A9 ROM

Lynx A10 ----o o--x--- A10 ROM

 

(Solder a 10k resistor from x to +5V)

 

If you have a 1Mbyte ROM and you want to burn two 256k games and

four 128k games on it you can access the games by flipping the 3 switches.

 

game 1 (256k) SW10=on SW9=on SW8=on

game 2 (256k) SW10=on SW9=off SW8=on

game 3 (128k) SW10=off SW9=on SW8=on

game 4 (128k) SW10=off SW9=on SW8=off

game 5 (128k) SW10=off SW9=off SW8=on

game 6 (128k) SW10=off SW9=off SW8=off

 

So you don't need any special logic gates to make maximum use of your

eeprom cart.

 

What you need to do is to shuffle the sectors to the EPROM correctly before

burning. I have done this with simple scripts in Unix.

 

Basically to mix two games with 512 bytes/sector together so that the selection with

SW8 works you need to interleave them like:

 

tail --bytes=131072 $1 > game1

split -b 512 game1 x1

tail --bytes=131072 $2 > game2

split -b 512 game2 x2

 

cp x1aa yaa

cat x2aa >> yaa

cat x1ab >> yaa

cat x2ab >> yaa

...

 

If you try to burn even more games then the interleaving gets even more complicated...

 

To keep the interleaving simple you can also connect the cart to the eprom by connecting

the dip-switches to the highest arress lines on the EPROM.

 

--

Happy gaming,

 

Karri

Link to comment
Share on other sites

  • 2 weeks later...
To keep the interleaving simple you can also connect the cart to the eprom by connecting  

the dip-switches to the highest arress lines on the EPROM.

 

Wow. All of that is exactly what I was talking about. But I think I'll just go with switching the high address lines. I think that will make it simple enough.

 

CPUWIZ:

I've been trying to burn eproms for use with this prototype adapter, but I'm not having much luck. I don't have any 27c040s yet, just 010s and 020s. I've only tried one ROM so far, but it hasn't worked.

 

What kind of eproms did you use with it? And what games did you try?

Link to comment
Share on other sites

Hi again,

 

I might help with troubleshooting your EEPROM-stuff.

 

Matthias Domin has written a small application called Cartshow. It can be found on his website.

 

What you need to do is:

Open your Lynx and solder pins 31 and 33 together on the cart-connector.

These pins are always connected when you have inserted a cart.

 

Now you can boot your console using any cart with a bootloader (SIMIS, Championship Rally).

 

Download Matthias Cartshow-application.

 

Remove the bootloader cart and insert your EEPROM cart. The Lynx won't reboot as it cannot sense the cart removal anymore.

 

Now you can browse through every block in the EEPROM cart to see that your switches work the way you have designed them to work.

 

A good diagnostic burn to EEPROM is to erase the whole EEPROM and burn integers like this:

 

(int addr) data

1 - fffe

2 - fffd

4 - fffb

8 - fff7

10 - ffef

...

In bytes this would be:

FF FF

FF FE

FF FD

FF FF

FF FB

FF FF

FF FF

FF FF

FF F7

 

If you now read the memory location 0 it should contain ffff. If it contains anything else then you know that some address lines are not connected properly as the data will be mirrored into the address 0 as well. Usually this is because a bad solder somewhere. You can now use Cartshow to read the data at every addressline. This procedure verifies both the data and the addresslines of the entire memory space.

 

I am also doing a lot of hobby-carts and usually I have some opens or shorts in my prototypes. With this technique it is easy to pinpoint where the flaw is.

 

--

Happy bug-hunting,

 

Karri

Link to comment
Share on other sites

That's a great resource! Thanks for the tip!

 

Unfortunately my problems are on an even more basic level.

 

I could look at the cart's contents, but I'm not even sure what I'd be looking for.

 

I'm sure I'm burning the ROMs incorrectly. Here's what I do:

 

1. download the ROM (from Atariage, of course :P )

2. use uCon64 to strip off the 64byte Handy header (lnx to lyx)

3. copy the ROM to a floppy and sneaker it to my eprom machine

4. load the file up and burn it as binary

 

things I think may be going wrong:

1. uCon64 may be borking my ROM files. The file sizes seem correct,

though, 131,072byes for 128Kb files.

2. are .lyx files HEX or BIN? I've been burning them binary

3. I just burn the rom linearly, from 00000h to 1FFFFh (I'm starting with

128Kb ROMs)

 

HELP!

Link to comment
Share on other sites

The size of the ROM is not important. The block size is what matters.

 

If you try to use only 128k images (with 512 bytes/sector) without interleaving then you have to connect the addresses like this:

 

Lynx - EPROM

A0 - A0

A1 - A1

A2 - A2

A3 - A3

A4 - A4

A5 - A5

A6 - A6

A7 - A7

A8 - A8

A12 - A9

A13 - A10

A14 - A11

A15 - A12

A16 - A13

A17 - A14

A18 - A15

A19 - A16

 

Now we get to the complicated part. What if you want to burn a 256k game?

Then you need to connect

A9 - A9

A12 - A10

...

 

Or what about a 512k game?

A9 - A9

A10 - A10

A12 - A11

A13 - A12

...

 

I wonder how you have connected you EPROM? Every pin has to be connected correctly for a burn to succeed.

 

This is one reason why Lynx carts are tricky to make.

 

Burning stuff for Lynx is definitely not trivial.

 

--

Keep learning,

 

Karri

Link to comment
Share on other sites

The size of the ROM is not important. The block size is what matters.

 

If you try to use only 128k images (with 512 bytes/sector) without interleaving then you have to connect the addresses like this:

 

Lynx - EPROM

A0 - A0

A1 - A1

A2 - A2

A3 - A3

A4 - A4

A5 - A5

A6 - A6

A7 - A7

A8 - A8

A12 - A9

A13 - A10

A14 - A11

A15 - A12

A16 - A13

A17 - A14

A18 - A15

A19 - A16

 

Now we get to the complicated part. What if you want to burn a 256k game?

Then you need to connect

A9 - A9

A12 - A10

...

 

Or what about a 512k game?

A9 - A9

A10 - A10

A12 - A11

A13 - A12

...

 

I wonder how you have connected you EPROM? Every pin has to be connected correctly for a burn to succeed.

 

This is one reason why Lynx carts are tricky to make.

 

Burning stuff for Lynx is definitely not trivial.

 

--

Keep learning,

 

Karri

 

Keep learning ? The EPROM board he has is designed to take 27c020 straight without any hooplas of cross-connecting address line.

 

I bet I know what the problem is, he is trying to use the Centipede ROM which is broken !

 

Use something like Marlboro Go and you will see it works.

 

Have fun !

-R

Link to comment
Share on other sites

I bet I know what the problem is, he is trying to use the Centipede ROM which is broken !

Doh! Of course I picked the broken one! I tried Robotron also, but I was messing with the buffer sizes on my eprom burner and I'm sure I screwed it up.

 

I also just realized I took my Lynx model 1 apart to make it easier to install eproms in the zif socket, and I never checked to see if it still worked okay with a retail cart. You would never know I test for a living, would you?!?

 

Anyways, I'll give Marlboro a shot.

 

That is exactly what I did, what EPROM's are you using ? I think I used 27c020 from Texas Instruments (200ns).

I used AMD eproms. 27c010s and 27c020s.

 

 

Anybody know another app that will strip the Handy header? I still wonder if that may be the problem. It is a beta release, after all.

 

CPUWIZ, I take it you used UCON64 to strip the .lnx header? If so, what version did you use?

Link to comment
Share on other sites

Uhm, I read your posts and they are accurate, what I meant was even if he interleaved the Centipede ROM image it wouldn't work on a real Lynx. At least it doesn't on mine so I call it a broken ROM even though it works in an emulator.

 

:)

Link to comment
Share on other sites

Then you just have a bad ROM image. Or perhaps there has been different production runs with different images.

 

I just interleaved Centipede and Robotron while I read this forum and burnt them on a 1024 bytes/block cart. Both applications turned out to be 512 bytes/block applications. And both applications run just fine on a real Lynx II.

 

Most applications that work in Handy also work on the real thing. I know that there are exceptions to this rule. Interrupt initialisations and some Lynx I screen initialisation problems are the things that behave differently on Handy and the real thing.

 

Lynx I is also more picky about what to run. I don't have a Lynx I nearby so I cannot test the cart on a Lynx I.

 

--

Regards,

 

Karri

Link to comment
Share on other sites

I just interleaved Centipede and Robotron while I read this forum and burnt them on a 1024 bytes/block cart. Both applications turned out to be 512 bytes/block applications. And both applications run just fine on a real Lynx II.

 

Well I got the Lynx Diag cart to work (finally!), still no luck with Robotron though. I am using a Lynx I, though.

 

Sounds like Centipede and Robotron need to have the images hacked a little to get them to work linearly.

 

I've only got three 27c020s, so it takes a while to test 256Kb ROMs. I'm still working on my 27F040 writer. My burner is old-school and won't do EEPROMs.

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...