Subject: Atarisoft 128K multi-cart

From: "killroy732000" <[email-masked]>
Date: Sun, 13 Dec 2009 10:20:14 -0000

With Jons' recent progress on the 128K multi-cart it would be cool 
to build a ROM image for an Atarisoft multi-cart.
So I checked the Betori archive for titles & number of banks and came up with the list included below.

According to my calculations I get a whopping 28 banks (1 for menu, 27
for the atarisoft titles). So that won't fit as we have 16 banks in a
128K rom. 

To be honest, I'm quite suprised that a lot of the atarisoft
cartridges are 16K. Seeing the poor quality of the games I expected
them to be 8K (this especially goes for picnic paranoia, super storm,
shamus, etc).

Can someone confirm the number of banks?

I think these are the steps that are required:
1. Implement menu software for bank 0 including code to jump
   to start of game in corresponding bank.
2. Hack each rom image so that it switches to its "partner" bank.
   I think classic99 can be of great use there ;-)
3. concatenate the rom images to build a single 128K rom image.

Will be interesting to see if all games use the same instruction for switching banks.

I've put the atarisoft multi-cart rom image on my todo list :-)

Here is the list:

MULTI-CART 1 (16 banks)
0. Menu software   (1)
1. Centipede       (2)
2. Defender        (1)
3. Dig Dug         (2)
4. Donkey Kong     (2)
5. Jungle Hunt     (2)
6. Moon Patrol     (2)
7. Ms. Pacman      (2) 
8. Pac Man         (2)

MULTI-CART 2 (13 banks)
0. Menu software   (1)
1. Picnic Paranoia (2)
2. Pole Position   (2)
3. Protector II    (2)
4. Robotron 2084   (2)
5. Super Storm     (2)
6. Shamus          (2)

Cheers
Filip

---

From: "Tursi" <[email-masked]>
Date: Sun, 13 Dec 2009 05:32:01 -0500

> 3. concatenate the rom images to build a single 128K rom image.

I've already done menu software for Jon, so step 1 is finished. Although if 
someone wants to design a nice looking screen that would be nice -- today 
it's just a list with the alphabet used to selected a title (with up to 22 
items listed onscreen). I'd be pleased to integrate any such thing, but 
otherwise the menu software should be good to go.

Step 2 is a nice idea. Jon and I have been talking about using hardware to 
make it work (one 379 to select the game, and one for the game itself to 
switch banks). But you are right -- it would be pretty easy to find the bank 
switching code with Classic99 (as long as they don't have a lot of inline 
switches, and if they do, there are ways to deal with that too), then just 
hack it for their location in the ROM. It's not like a lot of new 16k titles 
will be coming that need to go on the multicart... we only have to build it 
once.

---

From: R Halter <[email-masked]>
Date: Sun, 13 Dec 2009 09:06:51 -0600

> for the atarisoft titles). So that won't fit as we have 16 banks in a

If the individual ROMs have code in common, maybe the more commonly-used 
code could be made into subroutines that would then be called by each 
individual program, thus reducing the size of each individual program. 
I.E.:  If they all (or if several of them) use the same code for, say, 
translating keypresses/joystick input into motion on the screen, you 
would pull that code from each program that uses it, make it a 
subroutine that could be accessed by any of the programs, and replace 
the original code in each program with a statement to call up that 
subroutine.  If you had enough common subroutines like that, you might 
be able to reduce each program's size enough to fit them all on a single 
128 multicart.

Or is that beyond the scope of what you're trying to do?

-- 
  I want to die peacefully in my sleep like my grandfather... not 
screaming and yelling like the passengers in his car.

---

From: "killroy732000" <[email-masked]>
Date: Sun, 13 Dec 2009 18:35:26 -0000

I'm not saying its impossible. But it's certainly a task I don't
want to tackle. 

1. Most likely multiple subcontractor companies developed for
   Atarisoft, so its not that likely there is much common code. 
2. Even if there would be shared code, you still have to find it.
   You could try a binary diff, but I doubt one would find
   useful code if they are located at different spots in 
   the rom image.
3. Even if you would find it, then the hard part comes:
   You have to hack, relocate the code and debug.
   
Then the big question is how much space you have gained.
I'd say you are faster by just rewriting the whole thing.

However, it would be worth checking what is in the second bank.
Might as well be that in some of the games the second bank is just
empty.

---

From: "killroy732000" <[email-masked]>
Date: Sun, 13 Dec 2009 18:45:34 -0000

<snip>
It would be pretty easy to find the bank switching code with Classic99 (as long as they don't have a lot of inline
switches, and if they do, there are ways to deal with that too), 
</snip>

Perhaps it would be good enough, if you have an option in the
classic99 debugger to halt on bank-switch.
Thinking about it more, you could define a "halt"
when writing to memory range >6000->7FFF
We talked about such possible debugger feature recently ;-)

---

From: "Tursi" <[email-masked]>
Date: Sun, 13 Dec 2009 15:22:36 -0500

> We talked about such possible debugger feature recently ;-)

In this case, you know there are only two likely switches, >6000 and >6002, 
so just set a breakpoint when either of those are written. I haven't seen 
any carts yet that use higher addresses to switch. (Even though, in their 
cases, it would work).

---

From: "hexbus" <[email-masked]>
Date: Mon, 14 Dec 2009 02:31:19 -0000

Yep... Tursi is quite a coder!!!!

The menu software he wrote will support up to a 128K EPROM on the cart board, so, in other words, you get 15 x 8K programs + the menu program.

We're bandying ways around to figure out how reset the 74LS379 (i.e. removing power from it's +5v pin) so we can reset the cart, else you come back in the same exact program you just finished.  (Tursi's been driving home the point that I should never assume that the power up state will be consistent on an IC that has no reset pin...) :)

Right now, the program works fine - I was able to put together four 128K EPROMs with every single 8K ROM ever built.  However, there's a few tweaks that are needed....

1) The aforementioned reset circuitry
2) For some reason, the text shows up green even though white is explicitly put white in the assembly.
3) Maybe an assembly coder (sometimes99) could snazz up the menu...  I'm quite fond of his demos and artistic ability, and I think Tursi is as well (he's the one who suggested it.)

Tursi's also drawn up the version that will handle 16K multi-roms.  Essentially, it's the same as a 16K cart (i.e. 74LS379 onboard only controls A13), but there's another 74LS379 behind the A3 TI line, which will trigger behind a inverter (7404).  This will allow the on-board 74LS379 to be bank switched like normal (16K), and you can then write to the >7000 range to bank switch the other 74LS379 (which will be hooked up to A14, A15, and A16) so that the 128K could be broken up to 16K "chunks" - or seven games + one menu program.  This can be done with the current cart board, but it's going to be messy. :)

Now... I do have a 74HCT534 coming in, and have some 27C040's (512MB), so theoretically we should be able to use 6 of the HCT534's pins to bank switch up to 512MB.  This isn't something I'm producing, but if I do build a working prototype, I'll release the PCB file.  Technically the HCT534 could bank switch up to 2MB (!?), but we would have to jump from the 27C040 to the 27C080, which is quite a bit of pin-count (32 vs. 42).  At least the 27C040, 27C020, and 27C010 are mostly pin compatible with their lower 28 pins to the socket that's already on the cart board.

Of course, the other alternative to this is to use BCD switches... but then you run into issue of having to reset the console again.

Jon

---

From: mark wills <[email-masked]>
Date: Mon, 14 Dec 2009 05:43:02 -0800 (PST)

I'll do some speech for the menu ;-)

Something like "OH YEAH BABY YOU LOOKIN FIIIIIIINE"

And when you select a program it will say "GROOVY BABY YEAH! VERY GROOVY!"

No?

Just a thought....

M

>
>From: hexbus <[email-masked]>
>To: [email-masked]
>Sent: Mon, 14 December, 2009 3:31:19
>Subject: [TI994A] Re: Atarisoft 128K multi-cart
>
> >
>
>
>
>
>  >
>>      
> 
>>--- In TI994A@yahoogroups. com, "Tursi" <yahoogroup@ ...> wrote:
>>>

---

From: Owen Brand <[email-masked]>
Date: Mon, 14 Dec 2009 09:01:34 -0500

If we can do it in Barry White's voice, inatead of Austin Powers's....  
"AAAWWW YEA BABY....  YOU KNOW WHAT BARRY LIKES..."

Owen Brand
**Oprysoft**
Opry99er.com

On Dec 14, 2009, at 8:43 AM, mark wills <[email-masked]>  
wrote:

> The menu software he wrote will support up to a 128K EPROM on the  
> cart board, so, in other words, you get 15 x 8K programs + the menu  
> program.
>
> We're bandying ways around to figure out how reset the 74LS379 (i.e.  
> removing power from it's +5v pin) so we can reset the cart, else you  
> come back in the same exact program you just finished. (Tursi's been  
> driving home the point that I should never assume that the power up  
> state will be consistent on an IC that has no reset pin...) :)
>
> Right now, the program works fine - I was able to put together four  
> 128K EPROMs with every single 8K ROM ever built. However, there's a  
> few tweaks that are needed....
>
> 3) Maybe an assembly coder (sometimes99) could snazz up the menu...  
> I'm quite fond of his demos and artistic ability, and I think Tursi  
> is as well (he's the one who suggested it.)
>
> Tursi's also drawn up the version that will handle 16K multi-roms.  
> Essentially, it's the same as a 16K cart (i.e. 74LS379 onboard only  
> controls A13), but there's another 74LS379 behind the A3 TI line,  
> which will trigger behind a inverter (7404).  This will allow the on- 
> board 74LS379 to be bank switched like normal (16K), and you can  
> then write to the >7000 range to bank switch the other 74LS379  
> (which will be hooked up to A14, A15, and A16) so that the 128K  
> could be broken up to 16K "chunks" - or seven games + one menu  
> program.  This can be done with the current cart board, but it's  
> going to be messy. :)
>
> Now... I do have a 74HCT534 coming in, and have some 27C040's  
> (512MB), so theoretically we should be able to use 6 of the HCT534's  
> pins to bank switch up to 512MB. This isn't something I'm producing,  
> but if I do build a working prototype, I'll release the PCB file.  
> Technically the HCT534 could bank switch up to 2MB (!?), but we  
> would have to jump from the 27C040 to the 27C080, which is quite a  
> bit of pin-count (32 vs. 42). At least the 27C040, 27C020, and  
> 27C010 are mostly pin compatible with their lower 28 pins to the  
> socket that's already on the cart board.
>
> Of course, the other alternative to this is to use BCD switches...  
> but then you run into issue of having to reset the console again.
>
> Jon
>
> then just

---

From: "sconner3uk" <[email-masked]>
Date: Mon, 14 Dec 2009 22:39:54 -0000

Er ... Jon ... some bad news ...

From what I can see on the datasheets, a 74HCT534 is NOT just a bigger '379. With the '379, the E* input prevents WE* from clocking the latches unless ROMG* is active. With the '534 you have an OE* input which just controls whether the latch outputs are active or high impedance; the device is going to latch on *every* WE* pulse - irrespective of whether the cartridge is being addressed or not. So I don't think a '534 is going to work, unless you OR together WE* with ROMG*. You could always use two '379s.

Stuart.

--- In [email-masked], "hexbus" <jon@...> wrote:
> --- In [email-masked], "Tursi" <yahoogroup@> wrote:
> >

---

From: "hexbus" <[email-masked]>
Date: Mon, 14 Dec 2009 22:53:20 -0000

Ah, crud. Oh well, they were only $5.

I could use two of the 379's... or there has to be something bigger.

Time for an Altera, Xilinx, or something along those lines, I guess.  I need to study my digital electronics theory so I can understand these things.  Good thing guys like Stuart and Tursi are around :)

Jon

--- In [email-masked], "sconner3uk" <ti99@...> wrote:
> --- In [email-masked], "hexbus" <jon@> wrote:
> >

---

From: "hexbus" <[email-masked]>
Date: Mon, 14 Dec 2009 23:00:26 -0000

There has to be something in this list...

http://en.wikipedia.org/wiki/List_of_7400_series_integrated_circuits

:)

--- In [email-masked], "hexbus" <jon@...> wrote:
> --- In [email-masked], "sconner3uk" <ti99@> wrote:
> >

---

From: "sconner3uk" <[email-masked]>
Date: Mon, 14 Dec 2009 23:08:34 -0000

Just putting forward an idea for a reset on the multicart. Will need a few more components - not sure if that is allowed in the 'design spec' or not.  ;-)

Will need a reset switch on the cart board - not a problem to fit it, but will need to drill a hole in the cartridge case. Resetting the console with FNCT-QUIT isn't going to work with this.

Use a 74HCT534, now Jon has got one to play with. Need pull down resistors on the latch outputs (use a 'single in line' resistor package). Need an OR gate to combine WE* and ROMG* to clock the latch *only* when writing to the ROM. Could implement the OR gate with two diodes rather than using an IC. Need a 74LS74 dual D-type bistable (only need one half): connect the reset switch between ground and the CLR* input (and to the cartridge RESET* pin). Pull the D input high. Connect the Q* output to the latch OE*. Connect the latch clock input to the D-type clock input as well.

So ... you press the reset switch to reset the D-type. This pulls the latch OE* input high to set the latch outputs high impedance. The pull down resistors then pull the latch outputs (which are connected to the ROM paging address lines) low to select ROM page 0. When you make the first write to the cartridge, this latches the address lines as normal, plus clocks the D-type to set Q* low thus setting the latch OE* input low to enable the latch outputs. The latch will remain enabled until you next press the reset switch.

Stuart.

---

From: mark wills <[email-masked]>
Date: Mon, 14 Dec 2009 21:06:48 -0800 (PST)

Yeah, atta boy! Once you're in to field programmble logic, you open up the way to GROM and GRAM simulation.

I would still like to see a cartridge with, say, 128K of FLASH, but split up between ROM and GROM. That would be really nice. I'd pay for a batch of those!

Mark

>Sent: Mon, 14 December, 2009 23:53:20
>>--- In TI994A@yahoogroups. com, "sconner3uk" <ti99@...> wrote:
>>>
>>> --- In TI994A@yahoogroups. com, "hexbus" <jon@> wrote:
>>> >
>>> > --- In TI994A@yahoogroups. com, "Tursi" <yahoogroup@ > wrote:
>>> > >

---

From: "kabldb" <[email-masked]>
Date: Wed, 16 Dec 2009 14:31:12 -0000

Flash ? Would that be 128 _Megabytes_ then ?

:-)

--- In [email-masked], mark wills <markrobertwills@...> wrote:
> >From: hexbus <jon@...>
> >>--- In TI994A@yahoogroups. com, "sconner3uk" <ti99@> wrote:
> >>>

---

From: mark wills <[email-masked]>
Date: Wed, 16 Dec 2009 20:37:03 -0800 (PST)

There are some smaller parts that work a bit like EEPROM, but aren't. Not sure about their access times though.

Also, a very nice 32K RAM chip - IS61C256AL (CMOS) with very low standby current requirements (as low as 150uW) and no circuitry required to select standby mode. When /CE is high, it's in standby. Perfect for a battery backed cartridge. You could have 4 pages of 8K that don't require an EPROM burner. The cartridges would be re-usable. You would 'program' them by simply loading an ED/AS OPT 3 or OPT 5!

This technique would require a CRU Based paging method however, since writes to the cartridge area would be perfectly legal, unless it is possible to trap writes to the console ROM from the cartridge port. In which case, that technique might be preferable.

See attached data sheets.

Mark

>
>From: kabldb <[email-masked]>
>Sent: Wed, 16 December, 2009 15:31:12
>>--- In TI994A@yahoogroups. com, mark wills <markrobertwills@ ...> wrote:
>>>
>>> >To: TI994A@yahoogroups. com

---

From: Insane Multitasker <[email-masked]>
Date: Wed, 16 Dec 2009 22:52:42 -0600

Atmel 29c040 is a nice flash EEPROM.  512K in 8k banks. 32-pin DIP.  This chip is used on the Geneve to provide on-board BOOT capability and a 360K "flashdisk". Might be worth looking into. 

To: [email-masked]
From: [email-masked]
Date: Wed, 16 Dec 2009 20:37:03 -0800
Subject: Re: [TI994A] Re: Atarisoft 128K multi-cart [1 Attachment]

[Attachment(s) from mark wills included below] 

Mark

:-)

> >>> > > will be coming that need to go on the multicart... we only have to build it 

Attachment(s) from mark wills 
1 of 1 File(s) 

attachments_17_12_2009.zip

_________________________________________________________________
Hotmail: Free, trusted and rich email service.
http://clk.atdmt.com/GBL/go/171222984/direct/01/