I *believe* I need it in non-inverted format to program into a AT49F040 512K chip for the UberCart. I tired the snakec.bin image, but nada happened.
Sometimes did a good job explaining what inverted versus non-inverted means -- for an 8k program the inverted versus non-inverted image would be 100% identical. The question is WHERE on that 512k chip are you storing the program, are you using a menu program, and what's the startup bank on your cartridge?
To be more clear, the above questions are the questions you need to answer to yourself when you make a cartridge with more than 8k available (whether you are using more than that or not). The TI can only ever see 8k at a time -- the analogy (and origin of the term "paging memory", which unfortunately we aren't using, we use "banking", but it is the same thing) -- is a book. You can only see the page that you currently have open. The book itself has many more pages (and so much more information or story), but you can't see the other pages unless you turn the current one.
In the case of the TI - the cartridge port can see one 8k page at a time. It turns the pages by writing to the cartridge ROM -- since it's ROM you can't actually change it that way, but the hardware sees the "erroneous" write and interprets it as a request to turn the page. The page it turns to is dependent on the exact address written -- certain bits from the address are captured and stored as the new page number. On "inverted" boards the bits are flipped from 1 to 0, and 0 to 1... on "non-inverted" boards they are not. This is the "379" and "378" - they are fully named 74LS379 and 74LS378 (they are the smaller chip on the board).
This is where "non-inverted" versus "inverted" comes in - a concept that we really only have because of the original way Extended BASIC ROMs were distributed. (Otherwise we'd probably only ever have built "non-inverted".
). "non-inverted" would be how we read books in the Western world. When we ask for page 1, the book is opened to what we would consider the first page. "Inverted", however, starts at the back of the book, so when we ask for page 1, it opens the book "backwards" and starts at the LAST page.
Note that this causes an important distinction: with the "non-inverted" layout, page '1' is predictable, you always know exactly where it is relative to the beginning of the ROM. But with "inverted" layout, the "last" page depends on how big the EPROM is. A 16k EPROM only has 2 pages. A 512k EPROM has 64 pages. So on an inverted cartridge, if you have a program that uses pages 1 and 2, you need to be more careful about where they end up in the final image than on a non-inverted cartridge, where you don't really need to know how big the EPROM will be.
The third question was 'startup bank'. The hardware that we use for remembering the current page (or bank) is very old electronics design, and one of the things it does NOT have is a guaranteed startup state -- it can start with any random value, in theory. In practice we've found over hundreds of samples that almost all of them either start up with all '1's or all '0's, meaning that they start up selecting either the first or the last page of the EPROM. (We don't need to worry about whether it's inverted in the startup case).
The only way to know the startup bank is to try it. I released a test program for it, but you can just as easily burn a different program into each bank and see which one starts up. It's important to run a few power cycles to make sure it's consistent (soft reset, and even a hardware reset button, will not affect the page selection chip).
Once you have those three questions understood, you can build your ROM. Put whatever you want to start up in the startup bank (be it menu or program), and that should work.
If an 8k program is the ONLY program you are storing, just copy it to itself repeatedly till you have 512k (which would be 64 copies!!) Then it is guaranteed to be in the startup bank!
But more reasonably you probably want to make a big multicart with lots of ROMs, just drop the multicart menu I wrote at the first and last bank (covers most of the cases) and you can throw every 8k ROM you find in the middle.