mattgodbolt/jsbeeb

ROMs can't write to their own SWRAM bank?

lurkio opened this issue · 13 comments

The MRM-E00 DFS uses its own SWRAM bank as workspace and leaves PAGE at &E00 in a standard Model B.

But in JSBeeb PAGE is set at &1700, presumably because the MRM-E00 DFS ROM isn't able to write to its own SWRAM bank for some reason and has to claim workspace from User RAM..?:

https://bbc.godbolt.org/?autoboot&disc=https://dl.dropboxusercontent.com/s/gfdgvtj0qmi7ifr/E00test.ssd

Hi... jsbeeb doesn't do anything special or clever. I don't know what MRM does, or why it doesn't interact with jsbeeb in the same way as a real beeb. What is MRM?

write to its own SWRAM bank

Which SWRAM bank? jsbeeb makes up a sort of nasty hack for sideways ram to make Exile run in enhanced mode, but I don't know if there's something I'm not doing right.

I think MRM is just the name of the company that released the DFS back in the day.

write to its own SWRAM bank

Which SWRAM bank?

Whichever SWRAM bank the MRM-E00 DFS happens to be loaded into. (The MRM-E00 DFS ROM code doesn't take up all the space in its own SWRAM bank: half the bank is used for DFS workspace.)

(This all works properly in BeebEm, once you've made the SWRAM bank writable via one of the menu options in BeebEm.)

So - this is a ROM that expects to be in RAM? A DFS that needs to be in SWRAM and then uses RAM in its bank instead of bumping PAGE ?

All jsbeeb's swram banks are RAM and are writeable (else you wouldn't be able to load into it.

What's the output of your test disc on BeebEm?

Screenshot from 2021-03-12 13-58-52
jsbeeb output ^

You need to go to the Hardware menu in BeebEm and make the SWRAM slot writable.

I don't have BeebEm; can you please post what you're seeing in BeebEm?

mainly I want to see if it loads into ROM 01 and ROM 00 as it does on jsbeeb

Screenshot 2021-03-12 at 20 03 46

(I alredy had a load of ROMS installed in higher slots in my BeebEm config, including another version of ARM!)

Got it; thanks. I'm stumped I'm afraid! I don't know what I might not be emulating to cause it to use PAGE memory.

You have a different DFS in ROM 14 too, so I wonder if there's an interaction on jsbeeb of it having two DFS 0.90s?

That could be it!

Screenshot 2021-03-12 at 20 08 49

Fantastic! Glad you worked it out: I must admit to being somewhat clueless in anything other than lowish level hardware stuff, and playing Exile 😀

To add some info on the MRM 0E00 DFS, it's an 8K ROM that came on a carrier board with 2K RAM. The RAM was mapped into the upper 8K of the 16K bank. So the lower 8K is ROM, and the upper 8K is RAM (not fully decoded so is mirrored). It should work in sideways RAM but that is not how it was intended to be used.