Jump to content
  • entries
    62
  • comments
    464
  • views
    86,881

EconoBanking


supercat

1,387 views

Introducing 0840 EconoBanking

 

I've just built a cart using a new low-cost 8K banking scheme. Unlike other 8K designs which either require a programmable logic device or multiple logic chips, this design uses one 16-pin DIP, a 2.2K resistor, and a 100pF cap (and an EPROM of course). The one limitation is that code must be written to use the new banking method--it's not F8-compatible. Writing games to be easily-adaptable to both formats, however, should not be difficult. Any address $0800-$0FFF (or $2800-$2FFF, $4800-$4FFF, etc.) will trigger a switch to the bank specified on A6. Use $0800 to switch one way, and $0FFF to switch the other.

	74x153 or 74x253
.		  +---------+
.  Gnd-----|/G1   VDD|-----VCC
.  VCSA12--|B	 /G2|-----Gnd
.  Gnd-----|1C3	 A|-----A11
.  Gnd-----|1C2   2C3|--.
.  VCC-----|1C1   2C2|--+
.  VCC-----|1C0   2C1|--|--A6
.  /CS-----|1Y	2C0|--+----+--EA12
.  Gnd-----|VSS	2Y|----R--+--C--Gnd
.		  +---------+

I justed tested an 8K version of Hack'Em on this cart and it works great. Asteroids, however, is flaky. That game makes some bogus memory accesses around $48xx-$4FFF. Such accesses are harmless in an F8 cart, but trigger bankswitching on this one. Still, if a game is written to avoid stray memory accesses, it should be easy to adapt it to either F8 or 0840 banking.

 

Additional Notes

 

Care should be exercised when using "BIT abs" or "NOP abs" to skip over a two-byte instruction, since those instructions will perform a memory read. For example, using a NOP to skip over "LDA #$08" will cause a read of $08A9, triggering a switch to bank zero. These hazards may be mitigated by ensuring that any code that might trigger a bankswitch is already in the bank that would be selected. For example, any code which skips over an LDA instruction should be in bank zero.

 

If portability to F8 carts isn't a concern, games that need to access a lot of ROM data within the kernel may switch banks at minimal cost. A switch to bank 0 or 1 may be combined with any TIA access. Additionally, an access to memory $0080-$00BF may be combined with a switch to bank 0, and an access to $00C0-$00FF may be combined with a switch to bank 1. For example:

; A copy of this routine should be present, at the same address, in both banks.
 sta $0800+WSYNC; Wait for sync and switch to bank 0
 lda PF0data,x ; Fetches from bank 0
 sta $0840+PF0 ; Stores it and switches to bank 1 (4 cycles)
 lda PF1data,x ; Fetches from bank 1
 sta PF1	  ; Just store to PF1 (three cycles)--still in bank 1

 

Not sure there's going to be a lot of need for this sort of trick, but 0840 banking does allow it.

20 Comments


Recommended Comments

I'm a long way from being able to read your diagram, but the part about a lower cost 8k bankswitching technique is pretty interesting.

 

So if I understand correctly, you can generally convert an F8 binary to 0840 by replacing LDA $1FF7 with LDA $0FFF and LDA $1FF6 with LDA $0800. Is that about right?

Link to comment
Is this extendable to 16K, 32K, etc.?

 

Expansion beyond 8K would require adding another chip, or else a transistor and two resistors. At that rate, one may as well use a PLD.

Link to comment

Did you already get some feedback from Al wether he's interested? We could adopt Star Fire to this, so everybody would have to pay less for it! :ponder:

Link to comment

Did you already get some feedback from Al wether he's interested? We could adopt Star Fire to this, so everybody would have to pay less for it! :ponder:

Sounds like I good idea, depending on how much cheaper the cart would get. There are quite some 8K games in the store.

 

BTW: Is Crazy Balloon really just 4K? Or why does it cost more than other 4K games?

Link to comment
BTW: Is Crazy Balloon really just 4K? Or why does it cost more than other 4K games?

 

The answers are "Yes" and "For the Patch Contest".

Link to comment

The answers are "Yes" and "For the Patch Contest".

Have the patches been made yet? I have to wonder because I haven't heard of anyone getting one. If they are ready, I've got a qualifying score on videotape. :ponder:
Link to comment

Did you already get some feedback from Al whether he's interested? We could adopt Star Fire to this, so everybody would have to pay less for it! :ponder:

If the price of an 8K cart goes down, will there be any remaining niche for 4K homebrews, or will they go the way of 2K games?

Link to comment

If the price of an 8K cart goes down, will there be any remaining niche for 4K homebrews, or will they go the way of 2K games?

Probably not. Although bankswitching gives more space it also significantly increases the complexity (versus the simple 2K/4K addressing space). There's also the challenge of squeezing everything into the more limitted memory space, just like there's interest in the 1K compos. 2K was more a cost & complexity issue. There's no real reason to stop at 2K for homebrews.

 

What will be interesting is whether any of the alternate hotspot bankswitching methods catch on. The traditional 1FFx hotspots made sense because they could be included in a mask ROM for little cost, but it means a PLD needs to be connected to all 13 address lines. (The NES homebrewers are worse, often requiring complex mappers instead of something which could be handled with a PLD.)

 

But I'm really excited about 4A50's magic writes - real RAM access on the 2600. Reads & writes from the same address & full read/modify/write capabilities.

Link to comment

Did you already get some feedback from Al wether he's interested? We could adopt Star Fire to this, so everybody would have to pay less for it! :ponder:

I'd also be interested in adapting Go Fish! to this. :lol:

Link to comment

Really cool design :ponder:

 

I think that homebrews have needed this treatment for a while. F8 requires 13 inputs and this only requires 3, so there is some beauty in the simplicity here.

 

If you design a board for this, my only suggestion is to ground out pins 1, 27 and 28, so one could use whatever chip (of 2764 - 27512) happened to be readily available instead of always needing 2764's. Plus, grounding would only require the first 8k of a chip to be programmed, so depending on the EPROM programmer software, one may not even need a different binary for different chips.

Link to comment
If you design a board for this, my only suggestion is to ground out pins 1, 27 and 28, so one could use whatever chip (of 2764 - 27512) happened to be readily available instead of always needing 2764's.

 

Did you mean 1, 26, and 27? Pin 28 is VDD; I can't imagine wanting to ground that.

 

My plan would be to strap pin 1, 26, and 27 high. Some EPROM data sheets seem to want pins 1 and 27 to be at VDD for normal operation; making all three of those pins high would allow the cart to read the code out of the last 8K of any size EPROM (I could strap 26 low, but that might be more confusing than simply strapping them all high).

Link to comment
If you design a board for this, my only suggestion is to ground out pins 1, 27 and 28, so one could use whatever chip (of 2764 - 27512) happened to be readily available instead of always needing 2764's.

 

Did you mean 1, 26, and 27? Pin 28 is VDD; I can't imagine wanting to ground that.

Yeah, I meant what you said :ponder:

 

I thought I should bring it up because I have about 1000 EPROMs and probably half of them are 27256. I have surprisingly few 2764's. Not that I am ever going to make that many carts, but still...

Link to comment
I thought I should bring it up because I have about 1000 EPROMs and probably half of them are 27256. I have surprisingly few 2764's. Not that I am ever going to make that many carts, but still...

 

Yeah, but the 27C256 doesn't mind if those pins are high--it'll use the upper 8K but it's perfectly happy doing so. The specs for some 27x64's and 27x128's seem to want some of those pins high, so making them high would seem to allow maximum versatility.

Link to comment
I thought I should bring it up because I have about 1000 EPROMs and probably half of them are 27256. I have surprisingly few 2764's. Not that I am ever going to make that many carts, but still...

 

Yeah, but the 27C256 doesn't mind if those pins are high--it'll use the upper 8K but it's perfectly happy doing so. The specs for some 27x64's and 27x128's seem to want some of those pins high, so making them high would seem to allow maximum versatility.

I didn't realize that tying those pins low would cause problems with the smaller chips. I suggested it because the EPROM software I've used will program just the first 8k of a 32k EPROM if you load an 8k binary. But tying them high isn't a big deal - you'd just need to manually create a new binary. You could just concatenate 4 images of the binary together but a better way would be to put in 24k of $FF before the actual image, since most burner software will skip right over that part and just burn the last 8k, allowing for faster programming.

Link to comment

I'm a long way from being able to read your diagram

 

Good thing I am not. :D;)

 

BS153.jpg

 

Although I did screw up the cap and resistor labeling, I had some un-connected parts in the schematic. :)

 

Not only are they cheaper, but will last a lot longer than the traditional boards, because of the gold edge connector. ;)

Link to comment

Just from a totally un-technical point of view, how much $ will this make 8K titles cheaper? Will they come down to the price of 4Ks?

Link to comment
Guest
Add a comment...

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