Hello,
While working on QDOSClassic there were a few fixes discovered, so I thought it was about time I brought them over to the origianl JS ROM. These are mainly patches for large memory systems, but it also includes an improved Floating point output accuracy routine by Simon Goodwin.
The patcher is attached here as SuperBASIC program. It requires an original JS ROM file and outputs a patched ROM called "JSvB".
The resultant "JSvB" ROM has been tested on Qlay2 and QL2K with up to 8M memory, and on sqlay3 with "ramsize = 16000" .
There doesn't appear to be an option on sqlay3 to set the speed to be anything other than BBQL speed, so it currently takes 4 minutes 23 seconds to initialise the nearly 16M of RAM.
The patched ROM should support RAM sizes that go beyond the 24bit boundary, but there isn't any way to test that at the moment.
Note, I couldn't increase the sqlay3 (version 2024-08-26) ramsize beyond 16000 as the RAMTOP max appears to be fixed at fc0000 (16000K+128K). Access beyond fc0400 on sqlay3 causes a crash with a white screen.
Enjoy
JS ROM patches
- Mark Swift
- Bent Pin Expansion Port
- Posts: 81
- Joined: Fri Jul 18, 2014 9:13 am
- Location: Blackpool, Lancs, UK
- Contact:
- XorA
- Site Admin
- Posts: 1581
- Joined: Thu Jun 02, 2011 11:31 am
- Location: Shotts, North Lanarkshire, Scotland, UK
Re: JS ROM patches
Yes, I am working on that, I originally spent all the time making the MDV emulation work at the correct number of cycles per state, some code needs to move around now to allow it to run faster than 7MhzThere doesn't appear to be an option on sqlay3 to set the speed to be anything other than BBQL speed, so it currently takes 4 minutes 23 seconds to initialise the nearly 16M of RAM.
Ooops, its not supposed to do that, is meant to ignore writes and return 0 on reads above RAMTOP. Will look into that!Note, I couldn't increase the sqlay3 (version 2024-08-26) ramsize beyond 16000 as the RAMTOP max appears to be fixed at fc0000 (16000K+128K). Access beyond fc0400 on sqlay3 causes a crash with a white screen.
- Mark Swift
- Bent Pin Expansion Port
- Posts: 81
- Joined: Fri Jul 18, 2014 9:13 am
- Location: Blackpool, Lancs, UK
- Contact:
Re: JS ROM patches
Hi XorA
Sorry, if you were the first "1 downloader", comment out line 340 or download again.
I accidentally uploaded my debug version with some patches disabled the first time round.
The correct patcher should result in a VER$="JSvB"
What I should have said is that on sqlay3 if I set the RAMTOP to be $FC0400 with "ramsize = 16001", then the ROM appears to crash with a white screen during the memory test routine. Debugging with F12 shows no crash. Simply that the screen went white during the memory test.
Sorry, if you were the first "1 downloader", comment out line 340 or download again.
I accidentally uploaded my debug version with some patches disabled the first time round.
The correct patcher should result in a VER$="JSvB"
I should have explained better. It does return 0 on reads above RAMTOP.XorA wrote: Mon Aug 26, 2024 10:37 am Ooops, its not supposed to do that, is meant to ignore writes and return 0 on reads above RAMTOP. Will look into that!
What I should have said is that on sqlay3 if I set the RAMTOP to be $FC0400 with "ramsize = 16001", then the ROM appears to crash with a white screen during the memory test routine. Debugging with F12 shows no crash. Simply that the screen went white during the memory test.
Re: JS ROM patches
Nice work Mark!
I dont have the means to test beyond 16Mb, which I did briefly, but at least all seems fine.
I dont have the means to test beyond 16Mb, which I did briefly, but at least all seems fine.
Per
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
- janbredenbeek
- Super Gold Card
- Posts: 664
- Joined: Wed Jan 21, 2015 4:54 pm
- Location: Hilversum, The Netherlands
- Contact:
Re: JS ROM patches
One reason for not going beyond 16MB is the slave block table, which is referenced by word-sized indexes - hence the highest location it can address is 32767*512 = 16MB (well, just a little bit more as the first slave block is considered to be at the system variable's location so 16MB + $28000).Mark Swift wrote: Mon Aug 26, 2024 9:36 am The patched ROM should support RAM sizes that go beyond the 24bit boundary, but there isn't any way to test that at the moment.
(If you could guarantee that all operations on slave block numbers are treated as unsigned, you could theoretically address 32MB - but in practice this is nearly impossible since all the DD drivers have to be aware of this).
This is the reason why Minerva4Q68 limits the RAM to 16MB. Using the full 28MB of the Q68 might seem to work but leads to crashes sooner or later, as I've found out not so long ago (choosing shift-F1 or F2 got you 28MB instead of 128K because the keystroke got registered twice!).
- Mark Swift
- Bent Pin Expansion Port
- Posts: 81
- Joined: Fri Jul 18, 2014 9:13 am
- Location: Blackpool, Lancs, UK
- Contact:
Re: JS ROM patches
Hello,
An update to the JS ROM patcher...
I noticed that on sqlay3 the ROM is writable and RAM wraps around every 16K. So with values of "ramsize" close to 16K this caused the RAM integrity check to continue past the end of RAM and overwrite the ROM.
The following adds to the previous patcher and replaces the RAM integrity check with one that handles systems where RAM can wrap around and where the ROM area is writable.
It requires an original JS ROM file and outputs a patched ROM called "JSvC".
An update to the JS ROM patcher...
I noticed that on sqlay3 the ROM is writable and RAM wraps around every 16K. So with values of "ramsize" close to 16K this caused the RAM integrity check to continue past the end of RAM and overwrite the ROM.
The following adds to the previous patcher and replaces the RAM integrity check with one that handles systems where RAM can wrap around and where the ROM area is writable.
It requires an original JS ROM file and outputs a patched ROM called "JSvC".
...You're right, this would cause issues on systems bigger than 16MB. I remember limiting the size of the slave block tables on QDOS Classic in an attempt to get around this problem. But since none of the drivers used slave blocks it is difficult to know how successful that was.janbredenbeek wrote: Mon Aug 26, 2024 10:11 pm One reason for not going beyond 16MB is the slave block table...
- XorA
- Site Admin
- Posts: 1581
- Joined: Thu Jun 02, 2011 11:31 am
- Location: Shotts, North Lanarkshire, Scotland, UK
Re: JS ROM patches
Aaaagh, its really not supposed to be!I noticed that on sqlay3 the ROM is writable