Jump to content
IGNORED

512K cart board (PLCC) - Troubleshooting


acadiel

Recommended Posts

Well, what I was thinking is just daisy chaining Multicart as a workaround just to make sure the banking is working properly for testing the new board (until you get time to recode).

 

You start by scanning all banks starting at >601E (I think) and working your way down to >6000. A simple change to the source, and I can tell the power up Multicart to include another Multicart at the bottom of that first "128K segment" (instead of ignoring it) as the last menu item on the show up on Multicart. The second Multicart would simply scan the next 128K range, and have a Multicart at the bottom for the third one, and so on. :)

 

I would have have to change the >AA71 header on subsequent MultiCart programs so that they show up, and just change the range (starting at >601E and below, >603E, >605E, and >607E).

 

First 128K segment:

>6000 Multicart (modified header so shows up, points to Multicart at >603E)

>6002

....

>601C

>601E Multicart (power up bank)

 

Second 128K segment:

>6020 Multicart (modified header, points to Multicart at >605E)

>6022

....

>603C

>603E Multicart (modified to scan this 128K range, >603E to >6020)

 

Third 128K segment:

>6040 Multicart (modified header, points to Multicart at >607E)

>6042

....

>605C

>605E Multicart (modified to scan this 128K range, >605E to >6040)

 

Fourth 128K segment:

>6060 Multicart (modified header, points back to Multicart at >601E)

>6062

....

>607C

>607E Multicart (modified to scan this 128K range, >607E to >6060)

 

Thoughts?

Edited by acadiel
Link to comment
Share on other sites

The "128k" isn't the limitation in the menu program, it's the number of lines on the screen. (And that's a pretty weak limitation, I know :) ). In order for this to work, you'd need to have a different binary in each "segment" that scans a different range. BUT, you can certainly try. With a hex editor, you should be able to make versions that scan different areas of the chip. The range is entirely up to you, doesn't have to be 128k blocks, though I guess being consistent makes it easy.

 

The >AA71, as you already noted, needs to be changed to make it show up. However, you have to change this in several places for proper behaviour - the menu uses this magic value to find itself no matter what bank on the ROM it's in. If it can't find itself it will crash since it switches away to read the other banks, and needs to be able to switch back.

 

So, I /think/ these are the changes needed:

 

Offset/Original/New/Reason

 

--Multicart tag

0000 / AA71 / AAxx / 'xx' being the tag you want to use for this menu, recommend not using 00-03, or 3F, stick to higher values

0A2C / AA71 / AAxx / same 'xx' as above - this is the code that searches for the multicart

0AEE / AA71 / AAxx / same 'xx' as above - this is the code that builds the menu (skip this multicart menu)

 

--Lowest bank switch value - minus two (so original is >6000 - 2 = >5FFE)

0A38 / 5FFE / 60xx / Lowest bank switch value to scan minus 2 (multicart search function)

0BAC / 5FFE / 60xx / Lowest bank switch value to scan minus 2 (menu building function)

 

--Highest bank switch value - use exact value (this is the 'HIGHEST' equate in the code)

0A24 / 6020 / 60xx / Highest bank switch value to scan (multicart search function)

0AE0 / 6020 / 60xx / Highest bank switch value to scan (menu building function)

Link to comment
Share on other sites

The "128k" isn't the limitation in the menu program, it's the number of lines on the screen. (And that's a pretty weak limitation, I know :) ). In order for this to work, you'd need to have a different binary in each "segment" that scans a different range. BUT, you can certainly try. With a hex editor, you should be able to make versions that scan different areas of the chip. The range is entirely up to you, doesn't have to be 128k blocks, though I guess being consistent makes it easy.

 

The >AA71, as you already noted, needs to be changed to make it show up. However, you have to change this in several places for proper behaviour - the menu uses this magic value to find itself no matter what bank on the ROM it's in. If it can't find itself it will crash since it switches away to read the other banks, and needs to be able to switch back.

 

So, I /think/ these are the changes needed:

 

Offset/Original/New/Reason

 

--Multicart tag

0000 / AA71 / AAxx / 'xx' being the tag you want to use for this menu, recommend not using 00-03, or 3F, stick to higher values

0A2C / AA71 / AAxx / same 'xx' as above - this is the code that searches for the multicart

0AEE / AA71 / AAxx / same 'xx' as above - this is the code that builds the menu (skip this multicart menu)

 

--Lowest bank switch value - minus two (so original is >6000 - 2 = >5FFE)

0A38 / 5FFE / 60xx / Lowest bank switch value to scan minus 2 (multicart search function)

0BAC / 5FFE / 60xx / Lowest bank switch value to scan minus 2 (menu building function)

 

--Highest bank switch value - use exact value (this is the 'HIGHEST' equate in the code)

0A24 / 6020 / 60xx / Highest bank switch value to scan (multicart search function)

0AE0 / 6020 / 60xx / Highest bank switch value to scan (menu building function)

 

Yep, 128K (and the current layout) keeps things nice, neat, and on one page for each "Multicart" :) No new coding needed! <g>

 

I'll make the changes you noted above and give it a try and see how it works with the 512K flash once I get the new board in, get the GAL programmed, etc.

 

The only thing I'm scratching my head over - 5FFE? (It's probably right in front of me, but I'm kind of stumped about the -2). :)

 

Edit: Can Classic99 bank switch 512K yet? I can just put the modified code in there before I get the board to make sure it works like I want...

Edited by acadiel
Link to comment
Share on other sites

The only thing I'm scratching my head over - 5FFE? (It's probably right in front of me, but I'm kind of stumped about the -2). :)

 

Because the bottom of the loop does the DECT before it checks whether it's done, that's all. I guess it could have checked first, just a habit since dec/jne is the usual sequence when you count down to zero. Here it doesn't make a lot of difference. :)

 

Edit: Can Classic99 bank switch 512K yet? I can just put the modified code in there before I get the board to make sure it works like I want...

 

Umm... my copy can. I don't know if the released one can. I've promised a release in the next day or two to revert the color palette for Sometimes, and add a caps-lock configuration for Mark, so it'll be in that for sure.

Link to comment
Share on other sites

These work fine Tony--the ROM banks provide 4 128K bankable spaces using a pair of switches that connect to the upper left corner of the board. If you only plan on using it as a 128K board, the switches aren't needed. Each 128K is banked in increments of 8K by the 74LS379. A properly coded Atmel works fine in the GROM space. Tursi coded an experimental one for me to verify operation there as well. This board works as designed now--though I probably won't produce more of this variant. The improved version that I should be getting from ExpressPCB later this coming week will eliminate the switches and work with 128K, 256K, or 512K chips in the ROM space. Matthew Hagerty did a nice 6-line version of the '379 in a GAL that also gives a guaranteed initialization state (something the '379 doesn't do). The improved version incorporates one of those instead of the '379. The Atmel side adds a few more bells and whistles, but doesn't really change the basic operation of the board.

 

I'm not sure what I'll do with these in the end--I may use them as a test bed to see if I can get TI Calc or Winfried Winkler's XB3 running from them. . .

Link to comment
Share on other sites

Here's the first assembled copy of the newest board revision for you. I still have to burn a GAL and one of the ROMs for it--and this one uses a different set of pins for communications, so the current version of the ATMEL code won't work with it. Tursi has other commitments ar the moment, so that change won't show up until late fall at the earliest.

post-27541-0-84418100-1311359706_thumb.jpg

Link to comment
Share on other sites

Here's the first assembled copy of the newest board revision for you. I still have to burn a GAL and one of the ROMs for it--and this one uses a different set of pins for communications, so the current version of the ATMEL code won't work with it. Tursi has other commitments ar the moment, so that change won't show up until late fall at the earliest.

 

That's nice looking Jim. But where is the blender and toaster oven ;-). In all seriousness you are an artist my friend and generous with your talent !

 

Thank you.

Link to comment
Share on other sites

Actually, you could probably use the ADC and serial lines to control and monitor a blender or the toaster oven, Marc. You'd just have to write the code for it. . . LOL

 

Thanks for the props--and I'll probably take a stab at your "abandoned project" too. . .

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