+acadiel Posted July 5, 2011 Author Share Posted July 5, 2011 (edited) 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 July 5, 2011 by acadiel Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 5, 2011 Share Posted July 5, 2011 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) Quote Link to comment Share on other sites More sharing options...
+acadiel Posted July 5, 2011 Author Share Posted July 5, 2011 (edited) 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 July 5, 2011 by acadiel Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted July 6, 2011 Share Posted July 6, 2011 I'm waiting semi-patiently for the boards to show up from ExpressPCB. . .then the real fun will begin Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 6, 2011 Share Posted July 6, 2011 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. Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted July 10, 2011 Share Posted July 10, 2011 Here is some fun for the day, as I finally got a chance to finish assembly on the rest of the cards from the original batch made before we moved on to the design with the GAL instead of the 74LS379. . . 1 Quote Link to comment Share on other sites More sharing options...
John Doe Posted July 15, 2011 Share Posted July 15, 2011 (edited) Edited February 22, 2014 by Tony Knerr Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted July 16, 2011 Share Posted July 16, 2011 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. . . Quote Link to comment Share on other sites More sharing options...
John Doe Posted July 16, 2011 Share Posted July 16, 2011 (edited) Edited February 22, 2014 by Tony Knerr Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted July 22, 2011 Share Posted July 22, 2011 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. Quote Link to comment Share on other sites More sharing options...
marc.hull Posted July 22, 2011 Share Posted July 22, 2011 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. Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted July 23, 2011 Share Posted July 23, 2011 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. . . Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.