Hi Wolfgang,
> I may have found a solution that allows newly patched Qliberated 
> programs to run on a Qx0 machine that is using Copyback mode and running 
> a new version of SMSQE.

Many thanks. I actually find your idea quite ingenious!

It seems not very likely that the root cause can ever be fixed. So your
workaround is far better than running the whole machine at roughly half
speed, just because the copyback cache can not be used.

I can not see any negative side effects. The patch does not cause any
problems on the non-Q40/Q60 platforms, so it offers a convenient way to
finally make QLiberated programs 68040/60 compatible.

> NB: I am sure that Qlib programs normally do NOT modify their own code 
> whilst running ("normally" means that they do not contain some new 
> external non-Qlib keyword that would so that).

Does your statement include the creation of new executable code? That
would have the same effect - I also see it in the overall category of
self-modifying code.

Other than self-modifying code, the cause might come from QLiberator
abusing the top three address bits, relying on the hardware *not* to
treat them as different addresses. A terribly dirty method.

So that QLiberated executables can work, the hardware must read or write
the same data for the up to eight different addresses represented by
variations of A31, A30, A29. The external DRAM of a Q40/Q60 will
partially do that, because of incomplete address decoding (luck that I
didn't have enough PLD pins). But the caches don't. They will use
different entries for different addresses, as they should.

All the best
Peter
_______________________________________________
QL-Users Mailing List

Reply via email to