Jump to content
IGNORED

32K DB Cart?


Mr Robot

Recommended Posts

Because of upcoming changes to the atari800 emulator 5200 cart emulation I was looking at src/cartridge_info.c and noticed that type 5 is "32K DB cart" I scanned my collection and didn't find a single cart with that type, it's a really low numbered cart type so must have been added a long time ago.

 

Does anyone have any info on what type of cart this was, why it was added to atari800 and if any images of it exist?

 

Link to comment
Share on other sites

32k diagnostic boot cartridge maybe... of course it could always be some other as well...

then again with the way people name things at will today... so let's get serious and silly...

32k dual boot, dual board, dual binary, dual b.s., double boot, double board, double binary, double b.s.

 

in any event, nobody went through the trouble of coding and naming stuff that doesn't or never existed... so why would anyone be looking to remove it, sounds kind weird to consider doing so.

Edited by _The Doctor__
Link to comment
Share on other sites

I went back to the source code and tracked all the way back to v0.8.7 which is the earliest version of the source we have (~1995) and it uses a different way of loading carts back then but the usage doc says...

-db      Loads the following DB Super Cartridge
         (Private 32K Cartridge Format - not for general use)

usage1 says...

-db <filename> "db 16/32 superduper cart"

 

so I'm a bit wiser, but not a lot.

 

Link to comment
Share on other sites

I found mention of an Atari 8bit "Super Duper" here http://pokeysoft.no/games/atari/a8alpha.htm but the link to the file is a 404

 

The file is in Thunderdome, it's a sector editor by Bob McMillan and PD.

 

It's also here (on side B) http://www.page6.org/pd_lib/special/pd_ds079.htm

 

Doesn't appear to have anything to do with carts so it's just a duplicate name

Link to comment
Share on other sites

From the Atari800 ".CAR" file format description document:

 

+---------------------------------------------------------------------------+
| Type 5: DB 32 KB cartridge                                                |
+---------------------------------------------------------------------------+

 A 32 KB bank-switched cartridge. There are 4 banks. Bank 3 is mapped to
 $A000-$BFFF. Bank in $8000-$9FFF is selected by an access to $D500-$D5FF.
 Two lowest bits of address select bank 0, 1, 2 or 3.

 

 

  • Like 2
Link to comment
Share on other sites

Sounds no different to:

 

+---------------------------------------------------------------------------+
| Type 12: XEGS 32 KB cartridge                                             |
+---------------------------------------------------------------------------+

 This bank-switched cartridge occupies 16 KB of address space between $8000
 and $BFFF. The cartridge memory is divided into 4 banks, 8 KB each.
 Bank 3 (the last one) is always mapped to $A000-$BFFF. Two lowest bits of
 a byte written to $D500-$D5FF select the bank mapped to $8000-$9FFF.

 

Link to comment
Share on other sites

True, but does the 5200 cartridge see the $D5xx range?

Couldn't find anything conclusive, e.g. https://atariage.com/forums/topic/78692-5200-memory-map/

 

[Edit] a subtle difference between the two models, the XEGS is a write to the $D5xx range but the DB is 'access' which in reality would be a read as there is no read/write line on the 5200 cart bus. 

 

Edited by Wrathchild
Link to comment
Share on other sites

Even if that's the case, with additional components in a cart to decode the bank why not.

to continue the silly name game- Decoded Bank 32k cartridge.

 

It's just another case of stuff forgotten over the years... I wouldn't erase it... or it will be gone forever. It'll be remembered or rediscovered like so many other things. It may serve to jostle something loose in a returning mind.

Edited by _The Doctor__
Link to comment
Share on other sites

On 6/5/2020 at 8:12 PM, MrFish said:

Two lowest bits of address select bank 0, 1, 2 or 3.

 

4 hours ago, Wrathchild said:

Two lowest bits of
 a byte written to $D500-$D5FF select the bank mapped to $8000-$9FFF.

This is different. Type 12 seems to select banks with the value written to any address on D5 ($00 to $d500 bank 0, $01 to $d500 bank 1 etc.), while type 5 seems to select banks with any value written to specific addresses ($d5x0 bank 0, $d5x1 bank 1 and so on).

  • Like 3
Link to comment
Share on other sites

Yep some differences for sure...

 

-Type 5: DB 32 KB cartridge-Dave

A 32 KB bank-switched cartridge. There are 4 banks. Bank 3 is mapped to

$A000-$BFFF. Bank in $8000-$9FFF is selected by an access to $D500-$D5FF.

Two lowest bits of address select bank 0, 1, 2 or 3.

 

- Type 12: XEGS 32 KB cartridge -Atari

This bank-switched cartridge occupies 16 KB of address space between $8000

and $BFFF. The cartridge memory is divided into 4 banks, 8 KB each.

Bank 3 (the last one) is always mapped to $A000-$BFFF. Two lowest bits of

a byte written to $D500-$D5FF select the bank mapped to $8000-$9FFF.

The initially selected bank is random, although it seems that 0 gets chosen

the most often. Atari800 always selects bank 0 initially.

xegssupercart1.thumb.jpg.c8dc4beb03d0175bf6f0ed3b204aea4c.jpg

xegssupercart2.thumb.jpg.e116a44201bb3ff7fe8449cb8f151e13.jpg

Edited by _The Doctor__
Link to comment
Share on other sites

OK So "DB" Stands for "Dave Bennett" (Used to be bennett@halcyon.com). It looks like he added support for his own custom cart. He added the code to support OSS Supercarts to Atari800 in v0.1.4, while he was at it he added DB Supercarts. Here's the original supercart code.

 

Do any of the oldies here know Dave?

#include "atari.h"
#include "cpu.h"

#define FALSE 0
#define TRUE 1

extern UBYTE *cart_image;
extern int cart_type;

int SuperCart_PutByte (UWORD addr, UBYTE byte)
{
  switch (cart_type)
    {
    case OSS_SUPERCART :
      switch (addr & 0xff0f)
	{
	case 0xd500 :
	  if (cart_image)
	    memcpy (memory+0xa000, cart_image, 0x1000);
	  break;
	case 0xd504 :
	  if (cart_image)
	    memcpy (memory+0xa000, cart_image+0x1000, 0x1000);
	  break;
	case 0xd503 :
	case 0xd507 :
	  if (cart_image)
	    memcpy (memory+0xa000, cart_image+0x2000, 0x1000);
	  break;
	}
      break;
    case DB_SUPERCART :
      switch (addr & 0xff07)
	{
	case 0xd500 :
	  if (cart_image)
	    memcpy (memory+0x8000, cart_image, 0x2000);
	  break;
	case 0xd501 :
	  if (cart_image)
	    memcpy (memory+0x8000, cart_image+0x2000, 0x2000);
	  break;
	case 0xd506 :
	  if (cart_image)
	    memcpy (memory+0x8000, cart_image+0x4000, 0x2000);
	  break;
	}
      break;
    default :
      break;
    }

  return FALSE;
}

 

  • Like 1
Link to comment
Share on other sites

  • 3 years later...
On 6/6/2020 at 3:57 PM, Mr Robot said:

OK So "DB" Stands for "Dave Bennett" (Used to be bennett@halcyon.com). It looks like he added support for his own custom cart. He added the code to support OSS Supercarts to Atari800 in v0.1.4, while he was at it he added DB Supercarts. Here's the original supercart code.

were you finally able to get an example of that .car ? 😅

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