There have been a number of confusing statements about licences, core software and patches for the Q60. I do not know whether they confused you, they certainly confused me.
 
A licence is not a restriction - it is a permission. The SMSQ/E licence gives explicit permission to software developers to do a lot of things that they could not do before. The only effect on "end-users" should be more, better quality, support (and still free). If you are a software developer, all you have to do is ask.
 
SMSQ/E is delivered as a number of modules. The difference between SMSQ/E modules and Windows modules, for example, is that Windows modules are selected and linked together (using the registry) for the hardware configuration on installation (about an hour), whereas SMSQ/E modules are selected and linked together using "soft" linkage blocks in a few seconds every time you boot the system. Admittedly, Windows is more complicated - if you were to include all the core functionality of Windows into SMSQ-E you would need to wait a few seconds more for it to boot.
 
The modular structure of SMSQ/E is historical rather than logical. There are some small modules such as the hardware initialisation module that are completely hardware environment dependent. There are some large modules that are completely hardware independent, such as the SBasic interpreter. Most of the modules, however, have a set of machine independent core routines with hardware dependent routines and data definitions. In principle, only one version of SMSQ/E needs to be delivered which has all the different modules for all machines with only the "right" modules being selected for the configuration. In practice, the number of different versions bundled together is limited.
 
To change the behaviour of part of the system, all that a developer / supplier needs to do is to
 
replace the module concerned by a new version
add a new module to the end of the operating system "package".
 
These extensions may
modify the core functions (subject to licence conditions)
add new core functions (subject to licence conditions)
add new luxuries (it would be nice for QL users if you complied with the licence conditions) 
 
When QLCF contributed towards the development costs of the 16 bit colour drivers for the Q40, it would have been much simpler and cheaper to have resticted the colour drivers to Q40 colours only. What was actually developed was a frameword for colour capability from 1 bit to 24 bit with drivers specifically produced for monochrome, QL 2 bit and 3 bit colours and any 15/16 bit fixed colour scheme.
The sources were then passed to developers for the Aurora and QPC to develop drivers specifically for their systems.
 
The intention was to ensure that modified core functions and new core functions remained as compatible as possible with older versions and across the new versions. This is the purpose of the licence. All SMSQ/E developers are building on the back of work done by others. If they make a significant contribution to the core functions, they may be justified in asking for royalties for their contribution, but that does not justify their refusing to share their work with other developers - the principle is open source not "everyone for himself". The licence conditions are designed to favour this type of co-operative development.
 
The effect of the licence conditions can be seen more easily if we sort the sheep from the goats in the patched Q60 version of SMSQ/E story. Someone somewhere is confusing two totally separate issues.
 
The first issue was a bug in the Q40 hardware initialisation module (not in the SMSQ memory manager (software) as stated in this list, but in the initialisation of the MC68040 MMU (Memory Management Unit - hardware) ). This was a one bit error in a 1046 byte SMSQ module. A genuine bug which meant that some Q40s (depending on the brand of memory module fitted) sometimes ran more slowly than usual because the caches were disabled. This never happened on my Q40 and it was the sort of error where you could look at the code a hundred times and not spot it.
 
This affected only the Q40 specific version of SMSQ/E and so there was no impact on other machines. It was fixed in Version 2.99, but the modification was provisionally made to the V2.98 shipped by Peter Graf.
 
The second issue was the reduced instruction set for the MC68060. The MC68060 cannot execute all the MC680x0 instruction set and if you try to run MC680x0 programs on the MC68060, they quite often crash terminally (reset button time).
 
For most modules, replacing the deleted instructions by alternative code sequences has no real impact on performance on any machine, so this was done. However, a critical instruction in the QL colour mode drivers is no longer supported by the MC68060.
 
The general solution is to provide an "illegal instruction" trap to process the exceptions generated when the 68060 came across an instruction that it did not recognise. This is rather slow, but it ensures that the Q60 can also execute any program that uses the full MC680x0 instruction set.
 
A module incorporating this solution can be added-on, does not require any modification to SMSQ/E and provides a slower QL colour mode than the ideal, but still a lot faster than other machines.
 
The specific solution is to re-write the QL colour mode driver to eliminate all "MOVEP" instructions. I had started this work before passing the partially modified MC68060 routines over to Peter Graf.  The modified code works on earlier processors, but is not as fast. It is, therefore, necessary to provide separate MC68060 and MC680x0 versions of the GD2 QL mode drivers, even though they are >99% the same.
 
One of the registrar's jobs is to ensure that the modifications are properly recorded. In this case, he would have to ensure that the lower performance MC68060 version did not crawl through into the "standard" versions. Naturally, other suppliers of MC68060 based machine could use this version because it is in the "open source". The Q60 developers would, however, be quite justified in asking for 1% of the price they paid for the Q40 version of the GD2 QL driver - 1% of nothing is not too much to ask for, is it?
 
Tony Tebby
 
 

Reply via email to