mk79 wrote:The ROM version relocates one time less than the LRESPR version, but as that relocates 2 times you still got one relocation left SMSQ/E (so far) never runs from ROM.
Are you sure? I have not used recent SMSQ/E much, but I seem to remember a speed difference between running SMSQ/E from ROM and DRAM on the Q40 at versions 2.9x. ROM on Q40/Q60 is mirrored at two locations by hardware, so having two start addresses does not necessarily mean relocation.
mk79 wrote:SMSQ/E also has an area for internal variables within the lower 64k, though I think it's constant once booting has finished.
Yes, but it does not spread over the whole 64K, not even 48K, at least on the Q68.
mk79 wrote:The ROM version relocates one time less than the LRESPR version, but as that relocates 2 times you still got one relocation left SMSQ/E (so far) never runs from ROM.
Are you sure? I have not used recent SMSQ/E much, but I seem to remember a speed difference between running SMSQ/E from ROM and DRAM on the Q40 at versions 2.9x. ROM on Q40/Q60 is mirrored at two locations by hardware, so having two start addresses does not necessarily mean relocation.
Never had access to a Q40, but reading the source code I don't see how it could not relocate. You can check where the modules end up using a simple program:
This can't work because the high ROM addresses are interpreted as negative numbers by BASIC.
Anyway, $93C already points into nirvana for SMSQ/E 2.98, so it would not make sense trying to iterate further.
(And current versions don't fit into ROM).
I don't know if following information may help, but I remember when I tried roming smsq/e on my q40 I found that recent smsq/e versions don't work when romed while they start correctly when lrespred.
This happens whatever the rom size used or high/low parts.
Last version working in rom i found is 3.17. 3.30/3.31 dont work.
I didn't try other version between 3.17 and 3.30.
Alain
Peter wrote:This can't work because the high ROM addresses are interpreted as negative numbers by BASIC.
Doesn't matter, when transformed back into a 32-bit int address the bits look the same.
Not therefore. It mattered because the program stopped with error on high addresses.
Hmm, cannot reproduce, "PRINT PEEK_L($F0000000)" doesn't throw any error here. Perhaps the rogue address was odd?
But with the correct list start, I actually saw RAM addresses.
So if not even Q40/Q60 SMSQ/E runs in ROM, it seems save to say that SMSQ/E always loads itself to RAM.
Yes. And the init code that walks the linked list printed by the BASIC program hasn't changed since at least 1997, which is the oldest version I have at hand at the moment. It's certainly possible to create a version that uses the modules already in ROM, but much of the loader code would have to change for this.
HAOUI wrote:I don't know if following information may help, but I remember when I tried roming smsq/e on my q40 I found that recent smsq/e versions don't work when romed while they start correctly when lrespred.
This happens whatever the rom size used or high/low parts.
Last version working in rom i found is 3.17. 3.30/3.31 dont work.
I didn't try other version between 3.17 and 3.30.
Alain
I guess hardly anybody has modified their Q40 to have ROMs large enough to fit the latest versions, so most people won't notice. Although, seeing that they are copied from ROM to RAM anyway they could be stored compressed and decompressed on the fly to fit again. That's probably not even that difficult to do, I think, but then again, you also don't gain much except avoiding the double boot.