Jump to content
IGNORED

1008 K Axlon Compatible Board w/Base RAM and no soldering


reifsnyderb

Recommended Posts

Hello,

 

I have a couple Atari 800's that I'd like to upgrade.  But I really don't want to modify them or even solder to them unless it's to make a repair.  About 2 months ago I started studying the 3 Atari 800 RAM slots and how they are all interconnected.  As a programmer I realized that with /s0 through /s5 and with a0 through a13 that it's quite possible to determine the how a14 and a15 are set.  With this information a lot can be done.  (I am working on some other things, too.)  The way the Atari routes the select lines through to the different boards also allows for some other options, as well.  (These connections don't have to be select lines.)  All of this can be done without soldering.  For memory, all that's needed is an extra board in the first RAM slot that passes /s0 and /s1 to the second RAM slot.  I've combined /s0 and /s1 into one signal as there's no reason to use more select lines between boards than absolutely necessary.  On this board, Axlon Banks can be set without any shadowing in lower memory.  The AS6C1008 chip handles the 32k of RAM normally sellected by /s0, /s1, /s4, and /s5.  The AS6C8008 handles the memory normally selected by /s2 and /s3...which includes 62 additional 16k memory banks if CFFF is set.

 

Today I got in my first batch of prototype boards to make an Axlon Compatible using only 74LSxxx chips and some SRAM.  While I had a little troubleshooting to do and had to make a couple slight changes, it works!  So, I've already made the changes to the KiCAD files for another order.  (I'll probably have JLCPCB put some of the capacitors and resistors on for me with this order, as well.)  So, anyhow, here it is:

 

cards.thumb.JPG.2445d4120d520e990d7ce9645b845b47.JPG

 

 

cards_installed_1.thumb.JPG.81c2d9b49b383be3edb66ef0b6bf3f1c.JPG

 

cards_installed_2.thumb.JPG.d93df3357e398b01a85fa981c25a0e62.JPG

 

simple_checker.thumb.JPG.780c2601048c3df10b6ee7698f0fcfe6.JPG

 

spartados_mem.thumb.JPG.527e2e5b0eacca31e86163bcb516eb92.JPG

  • Like 9
Link to comment
Share on other sites

Neato. Simcheck shows 32KB base memory, is it actually 48K, but 16KB occupied by a cartridge or maybe a hardware bug? Do you still need one more RAM module to fill $8000 through $BFFF? Or even up to 52K CFFF, but then that introduces potential for conflict with the axlon banking register...

 

MEM /X also showing TOP $7FFF (32767) in your screenshots.

 

Edit: I see now rereading you indicated the board only handles 32K of the memory map so that makes sense. I hope the last 16KB can still be made up with a module in the remaining empty slots. Also you mentioned 62 banks, but sparta indicates 63 banks. Sparta consumes one bank for disk i/o buffers and such, so that's why it says 63 banks/62 free.

 

But help me understand as I think through this. :)

If the board really has a total of 1024KB, that means that 16KB would need to be fixed mapped to $0000 through $3FFF, and $4000 through 7FFF base RAM would be "bank 0" but indeed there would only really be 62 more banks available. If SpartaDOS X or other ramdisks think there are 63, then there must be 1 unusable bank or shadowed due to the base 16K from $0000 to $3FFF?

Link to comment
Share on other sites

34 minutes ago, Nezgar said:

Neato. Simcheck shows 32KB base memory, is it actually 48K, but 16KB occupied by a cartridge or maybe a hardware bug? Do you still need one more RAM module to fill $8000 through $BFFF? Or even up to 52K CFFF, but then that introduces potential for conflict with the axlon banking register...

 

MEM /X also showing TOP $7FFF (32767) in your screenshots.

 

Edit: I see now rereading you indicated the board only handles 32K of the memory map so that makes sense. I hope the last 16KB can still be made up with a module in the remaining empty slots. Also you mentioned 62 banks, but sparta indicates 63 banks. Sparta consumes one bank for disk i/o buffers and such, so that's why it says 63 banks/62 free.

 

But help me understand as I think through this. :)

If the board really has a total of 1024KB, that means that 16KB would need to be fixed mapped to $0000 through $3FFF, and $4000 through 7FFF base RAM would be "bank 0" but indeed there would only really be 62 more banks available. If SpartaDOS X or other ramdisks think there are 63, then there must be 1 unusable bank or shadowed due to the base 16K from $0000 to $3FFF?

The board has 48k base memory.  The upper 16k, from $8000 to $BFFF, is most likely "obscured" by the Side3 cartridge I have installed.  If a BASIC cartridge is installed, the free RAM is almost 38k.  No more RAM modules are required.  I also tested the board with M.U.L.E. and M.U.L.E. plays just fine.  (Let's not talk about the lousy game I just quit playing, though.....)  As a test, I tried running M.U.L.E. with two Atari 16k RAM cards and it wouldn't run.  M.U.L.E. will only run with 48k.

 

I am not too sure as how to read the SpartaDOS mem command.  But $7FFF would make sense with the Side3 Cartridge installed.  I believe the Side3 cartridge takes up both the right and left cartridge slots for the upper 16k.

 

The memory on this board maps as follows:

 

$0000-$3FFF is handled by the 128k AS6C1008 SRAM chip.

$4000-$7FFF is handled by the 1024k AS6C8008 SRAM chip.  This chip also handles all of the Axlon banks as the banking region is at $4000-$7FFF.

$8000-$BFFF is handled by the 128k AS6C1008 SRAM chip.  As this location is also used by the cartridges, 8k or all 16k of this region will not be available if a cartridge is installed.

 

I said it has 62 banks because the first Axlon bank could be considered part of the 48k of base memory.  But, I guess it depends upon how you want to count the banks.  So, I suppose it's 63.  ?

 

I was thinking about making the board with 52k of base memory but there is the conflict with CFFF.  (Since A6 through A15 are used for addressing as per Axlon's standard CFC0 through CFFF all map to the same register.  I think Axlon did this to save chips.  On this board I was able to do this with 2 chips and 1/6 of a 74LS04 inverter chip.)  Since I've read that Axlon and 52k of RAM cause incompatibilities, I figured it didn't make sense to add the extra 4k.  But, looking at the memory map, it looks like adding one more chip (74LS138) would allow for the addressing of C000 through CFFF.

 

I've attached a memory map I use for the Atari as it has what I think of as the most important mapping information on one page.

 

Atari Hardware Map.pdf

 

I hope my explanation clears everything up.

 

Best Regards,

 

Brian

 

 

 

  • Like 1
Link to comment
Share on other sites

Thanks for the detailed clarification @reifsnyderb, much appreciated and much more coherent than my previous thoughts. :)

 

With 32K provided by the 128k AS6C1008 SRAM chip ($0000-$3FFF & $8000-$BFFF) I guess technically 96KB of that chip goes unused.

 

Then the 1024KB from the AS6C8008 SRAM provides 64 16KB banks at $4000-$7FFF, of which 1 would be considered the "base" RAM, plus 63 "extended" banks.

 

so 32KB + 1024KB technically in hardware, or from the software perspective seen as 48KB of "base memory" plus 1008KB from 63 additional 16 KB banks, for 1056KB total. Got it!

 

So I guess future ideas for consideration would be:

  • a 52K mode, but this would have to disable Axlon banking.
  • The $CFFF register supports up to 256 banks, so you could technically add 3 more MB for a 4MB max -- SpartaDOS X does support this. :)
Link to comment
Share on other sites

7 hours ago, Nezgar said:

Thanks for the detailed clarification @reifsnyderb, much appreciated and much more coherent than my previous thoughts. :)

 

With 32K provided by the 128k AS6C1008 SRAM chip ($0000-$3FFF & $8000-$BFFF) I guess technically 96KB of that chip goes unused.

 

Then the 1024KB from the AS6C8008 SRAM provides 64 16KB banks at $4000-$7FFF, of which 1 would be considered the "base" RAM, plus 63 "extended" banks.

 

so 32KB + 1024KB technically in hardware, or from the software perspective seen as 48KB of "base memory" plus 1008KB from 63 additional 16 KB banks, for 1056KB total. Got it!

 

So I guess future ideas for consideration would be:

  • a 52K mode, but this would have to disable Axlon banking.
  • The $CFFF register supports up to 256 banks, so you could technically add 3 more MB for a 4MB max -- SpartaDOS X does support this. :)

96k of the AS6C1008 SRAM does go unused.  I figured it was a small price to pay to use all of the AS6C8008 SRAM chip.  Without the AS6C1008, I'd have to waste half of the AS6C8008 unless I made banks 0 and 2 redundant with the main memory.  I've heard that was done but I don't care for that solution.

 

Yeah, maybe it should be referred to as a 1056kb board...or something like that.

 

I've seen it posted that 52k can also cause some other problems.  I've never tried experimenting with 52k.  Disabling Axlon banking could be done by adding a jumper on the board.  But the 800 would have to be opened up to change settings.  It's not difficult but it would be inconvenient.

 

Is there a need or desire for all 256 banks and 4MB of Axlon RAM?  A bigger board would be possible but I kept the width to slightly under 100mm so as to avoid an extra $35 charge due to having a large board.  Adding extra SRAM chips would require a wider board.

Link to comment
Share on other sites

4 hours ago, TGB1718 said:

Bitd, I made a 4K cartridge that plugged into the Left slot, was fine for most things, but some

games wouldn't run with 52K there, there were no other mods on this 800.

 

So if allowing 52K mode, as @Nezgar suggests you would need a way to turn it off.

I just searched for and found your post.  That's pretty cool and a great idea for that right cartridge slot.  It's too bad the motherboard had to be modified, though, or else I'd make such a cartridge myself.  I'd guess you had to disconnect /S4 and connect /S6 to the right cartridge slot.

 

Edit:  Thinking some more about this, I think that this could be done by disconnecting /S4 from the right cartridge slot, connecting /S6 to pin 12 of the right cartridge slot, then using A12 as the chip select for the SRAM chip on the cartridge.  When /S6 is low and A12 is low the right cartridge SRAM would be active.

 

 

 

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

2 hours ago, gilsaluki said:

Interested.

I'll get parts for extras.  

 

I am also looking into a version for the 400.  (It would require soldering a few wires to the 400, though.   ?   The 400 doesn't have /S4 and /S5 going to the RAM card.  I think RD4 and RD5 need added as well.)

 

Best Regards,

 

Brian

 

Link to comment
Share on other sites

1 hour ago, ClausB said:

You could pull S6 from the OS board without modifying the motherboard.

True.  But then I'd have to make a jumper that is soldered to the OS board and I'd rather not have to modify Atari equipment, if possible.

 

The easiest thing for me to do, really, that wouldn't require any modifications to any Atari equipment would be to make a board for the 3rd slot.  My Axlon Compatible board has a couple lines I haven't mentioned.  On Pad N there is a line that goes through an inverter to a quad and gate.  This line is normally held held low so the input at the quad and gate is held high.  The end result being that setting Pad N line high would enable the AS6C1008 SRAM chip.  Pad R has the output of both A14 AND A15.  I have new boards (not shown) for the first RAM slot that have jumpers that can be used to pass the pins I just mentioned to the 3rd board.  So, if a third board is made with some decoder circuitry then it could be set such that if both A14 and A15 are set high and the address range is between C000 and CFFF a signal would be sent to the Axlon Compatible board enabling the AS6C1008...and thereby add that 4k of RAM.  To do this I only need to add a jumper to the Axlon compatible board that would disable the banking.

 

I really added that capability in the event I'd want to play around with the /EXSEL line on the 3rd RAM slot...and be able to turn an 800 into a 62k machine.  I would need to add a jumper to disable the Axlon banking, though.

Edited by reifsnyderb
Link to comment
Share on other sites

1 hour ago, ClausB said:

Unfortunately you can't fully decode A14 from the available signals on the slots when a cart is inserted because RS4 or RS5 will stay high. You need S6 and S7.

Well, you just sent me scrambling to look at the blueprints.  You are right and I didn't factor cartridges into the logic.  So, it looks like 52k wouldn't work if cartridges are involved.  After studying the problem, the logic works fine for anything from the 48k boundary and down.  It will work fine for above the 48k boundary as long as a cartridge isn't used.  Add in a cartridge and there are problems as, for example, if /S5 is set on the input side of the Atari 800's OR gate but, because of RD5, the output of the OR gate will stay high.  If a cartridge were to try to write to itself, for some reason $CFFF could be affected as well.  But since this doesn't happen the card will work fine.  Since you don't try to read from $CFFF there isn't a problem there, either.  I suspect the same problem existed on the original Axlon boards but wasn't a problem for the reason I just laid out.

 

Thanks for pointing this out before I had to figure it out the hard way.

 

On the bright side, I can simplify the board a little more.

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

2 hours ago, ClausB said:

Unfortunately you can't fully decode A14 from the available signals on the slots when a cart is inserted because RS4 or RS5 will stay high. You need S6 and S7.

For some reason I was thinking Mosaic boards got away without disassembly.  I just read through the Mosaic manual and found out they had a connector to go into the socket at Z101.  That would allow for proper decoding.  Since I am working on a no-solder and no disassembly solution for the 800, I'll stick with Axlon then.  A lot is still possible.

Link to comment
Share on other sites

Since 52k isn't possible, I simplified the Axlon board and was able to remove the chip from the slot 1 jumper board.  Both /S0 and /S1 are now using a separate line to the Axlon board so as to eliminate the 74LS00 from the jumper board.  The simulations show the slight logic change required to remove the 74LS00 from the jumper board works fine.  The bypass capacitors have been changed to 0603's and I'll have them installed when the boards are made. 

 

An Atari 400 version will require lines for /S4 and S5 to be connected to the motherboard.  The edge connector pins will also require a small amount of change for /S0 through /S3.  I want to make up an Atari 400 version of this board then I'll order a batch.  

 

rendering.thumb.JPG.8ae5bb2380707b0eeb58f74873e22bf8.JPG

 

jumper_board.thumb.JPG.37dce85b3e6f4a7617c53a3b1b1f9139.JPG

Link to comment
Share on other sites

13 minutes ago, _The Doctor__ said:

52K isn't possible? even if it were made switchable?

Well, it's possible but it would require that a wire be soldered to either the motherboard or the OS Board and connected to the Axlon Compatible board.  Since the goal is to be able to upgrade an Atari 800 without tearing the computer apart and soldering anything to the board I decided not to add 52k support.  Quite frankly, I'd love to have 52k as well as Axlon.  But between the cartridge problem ClausB pointed out and the incompatibility problem between Axlon and 52k due to Axlon's use of $CFC0 - $CFFF it's probably not a good idea to add it.  I figure that having 1056k is better than an extra 4k with compatibility and cartridge problems.  I'll wait a day to order.  If someone comes up with a good argument as to how to reasonably support 52k without all the problems I am all for it.

 

I was also thinking about using that /EXSEL pin on slot 3 to get 62k.  But, once again, if a cartridge is inserted the logic fails.    

 

Edit to add:  I suppose if somebody wants to tear their 800 apart and solder the extra jumper it could be an option...

Edited by reifsnyderb
Link to comment
Share on other sites

Here's a board that should, theoretically, work on a 400.  The edge connector has /S0, /S1, /S2, and /S3 connected as per the Atari 400 pinout.  /S4 and /S5 have to be connected via J2.  I used the instructions from tfhh's 48/52k RAM card for the edge connector pinout of RD4 and RD5.  (Two wires need to be soldered on the underside of the board for RD4 and RD5.)  Two resistors (R4 and R5 added) and a couple OR gates (already on the board as U41) were used to duplicate the Atari 800 circuitry for RD4 and RD5.  Once I get these boards in I'll test on my Atari 400.

 

726032902_1056400Board.thumb.png.8ca028f3389de5fbb805beb0c232f7fb.png

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