Jump to content
IGNORED

MESS and Multi GROM port


RobertLM78

Recommended Posts

  • 2 months later...

Does MESS RPK format support GROMs in multiple bases/banks (whatever it's called)? Has anyone made an RPK version of the Gazoo's Extended Basic 2.7 cartridge?

An excellent question. I've faffed around with trying to make one, but I haven't spent as much time as I'd like to on it, and Gazoo's XB has me thinking about it again too :).

Link to comment
Share on other sites

Does MESS RPK format support GROMs in multiple bases/banks (whatever it's called)? Has anyone made an RPK version of the Gazoo's Extended Basic 2.7 cartridge?

 

If you start with option "-gromport multi" (or select this in QMC2) you get a 4-cartridge expander based on GROM base switching. You can also use the HSGPL emulation for a 16-bank GROM emulation. If a single cartridge wants to use multiple GROM banks we would have to add a new cartridge type.

Link to comment
Share on other sites

Michael, the ÜberGROM does support multiple GROM bases (up to 15 of them) in a single cartridge. They can be mix-and-match divided amongst the GROM bases, with a hard limit of 120K of GROM per cartridge. It also supports up to 512K of bank-switched ROM in the >6000 space, using non-inverted bank switching (74LS378 does the switching). There are now cartridge images for four different cartridges out there that use this functionality (and I have physical examples of each of them in my possession).

 

The XB 2.7 cartridge mentioned above uses all of the available space in the module. . .

Edited by Ksarul
Link to comment
Share on other sites

Ok then, new cartridge type. I did not follow the "ÜberGROM" discussion too closely some months ago. This looks like an extension of the existing 379i cartridge type.

 

What I did not understand is the CPU memory start address. All cartridges only have a ROM space of 6000-7FFF, so what does it mean to specify A000 or other locations?

Link to comment
Share on other sites

Perhaps the layout.xml file could look like this?

<?xml version="1.0" encoding="utf-8"?>
<romset version="1.0" listname="xb27suite">
   <resources>
      <rom id="gromimage" file="g9800.bin"/>
      <rom id="grom2image" file="g9804.bin"/>
      <rom id="grom3image" file="g9808.bin"/>
      <rom id="grom4image" file="g980C.bin"/>
      <rom id="romimage" file="backwards512kROM.bin"/>
   </resources>
   <configuration>
       <pcb type="paged379i">
          <socket id="grom_socket" uses="gromimage"/>
          <socket id="grom2_socket" uses="grom2image"/>
          <socket id="grom3_socket" uses="grom3image"/>
          <socket id="grom4_socket" uses="grom4image"/>
          <socket id="rom_socket" uses="romimage"/>
       </pcb>
   </configuration>
</romset>
Link to comment
Share on other sites

It also supports up to 512K of bank-switched ROM in the >6000 space, using non-inverted bank switching (74LS378 does the switching). There are now cartridge images for four different cartridges out there that use this functionality (and I have physical examples of each of them in my possession).

 

 

Do you think it might be possible to get 4A DOS to work out of the cart? Obtaining the CHARA1 file from the cart does not seem to be an issue as it was done in the XB 2.7s cart. Naturally it would have to access DSK1. for it's BAT files.

 

Down the road I'd like to commission a cart with 4A DOS, the HDX DSR loader, DSK2PC, PAL as well as a few others like the 80 column BA-Writer. I have no clue if Multiplan is even possible

Link to comment
Share on other sites

 

Do you think it might be possible to get 4A DOS to work out of the cart? Obtaining the CHARA1 file from the cart does not seem to be an issue as it was done in the XB 2.7s cart. Naturally it would have to access DSK1. for it's BAT files.

 

Down the road I'd like to commission a cart with 4A DOS, the HDX DSR loader, DSK2PC, PAL as well as a few others like the 80 column BA-Writer. I have no clue if Multiplan is even possible

That's a neat idea. The only thing is 4A DOS's limitations - although for a 'standard' RI setup with floppy drives it is still quite useful :).

  • Like 1
Link to comment
Share on other sites

My question still is what is meant by "CPU Addr" and "Start Addr". The cartridge port does not have those addresses, so what happens when I write to 6004 to select Centipede?

 

 

 
Bank Number Eprom Addr  Write to    CPU Addr Start Addr Contents
----------- ----------  --------    -------- ---------- --------
 
1           >0000       >6000                           GAMES menu program  
2           >2000       >6002       >A000    >A000      Paddleball
3           >4000       >6004       >A000    >A056      Centipede
4           >6000       >6006       >C000    >E02E      Dig Dug
5           >8000       >6008       >E000               Dig Dug
6           >A000       >600A       >A000    >A072      Defender
...
Link to comment
Share on other sites

That's a neat idea. The only thing is 4A DOS's limitations - although for a 'standard' RI setup with floppy drives it is still quite useful :).

 

Exactly. I run two different profiles, with the HDX I've been using a modified version of KWIKLOAD, although lately XB 2.7S seems to be staying in the slot and I've been using that carts copy of DM2K .

 

Now when it comes to using the HxC or floppy, I much prefer 4A DOS. I can swap disks or press a button for the next virtual drive, then run the batch file for that diskette, do a directory, or just run the program. Since it runs in unison with the E/A, it's always been the easiest way to run E/A 3 programs. 4A/DOS also exploits the 80 column mode of the F18A which is always a plus.

 

Back in the 80's 4A/DOS was my menu loader of choice. All I had to do was keep a copy of the batch file and the CHARA1 on the individual disks. Now days if a cart could be made, only the batch file would be necessary.

  • Like 1
Link to comment
Share on other sites

 

My question still is what is meant by "CPU Addr" and "Start Addr". The cartridge port does not have those addresses, so what happens when I write to 6004 to select Centipede?

 
Bank Number Eprom Addr  Write to    CPU Addr Start Addr Contents
----------- ----------  --------    -------- ---------- --------
 
1           >0000       >6000                           GAMES menu program  
2           >2000       >6002       >A000    >A000      Paddleball
3           >4000       >6004       >A000    >A056      Centipede
4           >6000       >6006       >C000    >E02E      Dig Dug
5           >8000       >6008       >E000               Dig Dug
6           >A000       >600A       >A000    >A072      Defender
...

 

Writing to >6004 maps the the eprom contents from >4000 to >5FFF into the cartridge port's memory from >6000 to >7FFF. At this point, the memory from >6000 to 7FFF is copied to addresses >A000 to >BFFF and then the address >A056 is branched to to execute the program Centipede.

 

Gazoo

Link to comment
Share on other sites

How is the copy done? Is it done automagically by the hardware, or is there a copy program inside that is invoked on selection? This is important for me in order to add the cartridge type to MESS.

 

All copies happen in software, no DMA or anything like that exists (or is possible on the 4A by my current understanding, anyway.)

 

The 512k ROM side is just an extension of the old 379 scheme (except that the bank select lines are no longer inverted, that is, hitting >6000 activates the first 8k on the ROM, not the last one).

 

The GROM side is much more complicated, depending on how much of it you wish to emulate. At a minimum, there is 120k of GROM space divided into 8k pages, and a mapping/configuration space in EEPROM that stores which page appears where to the console. At a maximum, it also has the ability to rewrite its own flash, 12k of RAM, 4k of EEPROM, a UART, 4 ADCs, 6 GPIO and an independent counter, all mappable to TI GROM space. The manual should be in the UberGROM thread, but I can provide if you can't find it.

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

How is the copy done? Is it done automagically by the hardware, or is there a copy program inside that is invoked on selection? This is important for me in order to add the cartridge type to MESS.

 

The start address is irrelevant with respect to emulation. This is just information for Gazoo's ROM to RAM loader.

Link to comment
Share on other sites

 

All copies happen in software, no DMA or anything like that exists (or is possible on the 4A by my current understanding, anyway.)

 

You're right - when I think a bit longer about it, a DMA to other memory locations is not possible. We have a READY line, but we do not have enough address lines in the cartridge port.

 

I was just a bit confused by the specification of the ÜberGROM. It looks as if I just need to write a value to 60xx, and the contents appear at the given location.

  • Like 1
Link to comment
Share on other sites

 

You're right - when I think a bit longer about it, a DMA to other memory locations is not possible. We have a READY line, but we do not have enough address lines in the cartridge port.

 

It's worse than that, actually. READY only waits the CPU, it does not stop the CPU from driving the bus. (So, for instance, the address lines are still being driven. If they were not, you could not use the READY line to slow down operation for slower memories, which is what it's for.) We actually have a line on the CPU called HOLD which pauses the 9900 and makes it release the bus so that DMA or other processors can use it -- but this line is hard wired on the 4A, so we can't use it.

  • Like 1
Link to comment
Share on other sites

 

It's worse than that, actually. READY only waits the CPU, it does not stop the CPU from driving the bus. (So, for instance, the address lines are still being driven. If they were not, you could not use the READY line to slow down operation for slower memories, which is what it's for.) We actually have a line on the CPU called HOLD which pauses the 9900 and makes it release the bus so that DMA or other processors can use it -- but this line is hard wired on the 4A, so we can't use it.

 

That is what I understood. On the 6502 buss all lines are "tri-stated" to allow other devices to drive address and data. All of the chips act this way: VIA, CIA, VIC chips, SID, etc. DMA over the tri-stated buses is how the RAM Expansion Unit was able to move blocks of memory in an out of the system with just a simple command. I rather liked playing around with the REU's DMA function and always thought it a shame we could not do the same on the 4A.

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