Re: Fun things to do with an MC68EC020....
Posted: Sun Mar 12, 2017 6:37 pm
I'll be on the QL Forum chat this evening, if anyone wants to shoot the breeze/chat/commiserate/bounce thoughts around 

RIP Sir Clive Sinclair 1940 - 2021
https://theqlforum.com/
Should be completely working with 68020.Dave wrote:I am using the latest 1.98 Minerva image - I don't know how modded that is to accommodate the '020.
Especially the coprocessor was unnecessary, and not Sinclair-style in my opinion. The whole hardware could have become less complex, cheaper, and better signal quality, because the smaller size would have allowed a better PCB layout. ZX Spectrum with Interface 1 had shown how much simpler keyboard and RS232 interfaces could be.Dave wrote:Like Sinclair, I'm a firm believer in "do it in software" - if he had stayed closer to his roots with the QL it would be a much simpler machine.
As I said in a mail, it is possible to move the start of RAM to a higher address, but some old software will not work. Also, this requires patching of the OS to handle non-contiguous RAM. A bit more about this, below.Dave wrote: After discussions, the memory map is provisionally as follows (as of two days ago):
$000000 - $BFFFFF 3x 4MB banks - 12MB
$C00000 - $DFFFFF Flash
$E00000 - $FFFFFF Aliases of original QL map.
Screen: $20000..$27FFF on the QL bus, which appears to the CPU in this proposed system at $E20000..$E27FFF and $F20000..$F2FFFF, needs to appear at $020000..$027FFF. With clever mapping and decoding, the memory will be shadowed so reads are from 32-bit RAM and writes go to both 32-bit RAM and slower 8-bit RAM using four write cycles. This way, we'd get the maximum speed benefit while maintaining highest compatibility with code that expects the screen (and other IO) to be at a specific address.
I know, this does mean 12MB will be the RAM limit. That's still three times the Super Gold Card. It would also be a fair bit faster. We're only losing 3MB but gaining a large flash area and a huge compatibility bonus. Also, it's better to under-populate than overpopulate and not use - my original plan was to keep the QL space in the bottom MB and just have the simpler address decoder ignore the RAM there.
The big question is, what would one want them for? In face, address lines are not really of any big benefit, rather data bus lines are. THis would then offer the possibility of solving the next question.Here are some unanswered questions:
How might we expand the expansion bus to add the additional address lines? I know 64-pin DIN41612 will fit in the bottom rows of 96-pin connectors.
It is doable to an extent, the same way Aurora does it, using multiple aliases of the same RAM. Aurora has a 256k VRAM organized as 1024x1024 mode 4 pixels (and I am using this as the simpler example). When the original 32k of the screen is addressed, it actually accesses a 512x256 pixel area in the top lefthand corner. This is done by simple address line manipulation on the way from the CPU to RAM.How might we expand native QL video hardware capability and retain compatibility?
Not needed - in fact, it will be faster if the slave block system is suitably used by the driver. Although there is more RAM, it will likely test faster because access is so much faster. The slave block table will be bigger, but this does not impact speed negatively if correctly implemented, in fact the opposite. Reading slaved blocks from fast 32-bit RAM is still MUCH faster than from the original device.With more memory comes more slave blocks for mass storage devices. This can slow things down. Strategies for dealing?
Dave wrote: With more memory comes more slave blocks for mass storage devices. This can slow things down. Strategies for dealing?
But Dave would probably have to use the existing drivers! From Q68 experience, I can only warn about this issue.Nasta wrote: Not needed - in fact, it will be faster if the slave block system is suitably used by the driver. Although there is more RAM, it will likely test faster because access is so much faster. The slave block table will be bigger, but this does not impact speed negatively if correctly implemented, in fact the opposite. Reading slaved blocks from fast 32-bit RAM is still MUCH faster than from the original device.
Old drivers indeed do a linear search, which slows down with lots of memory if the block you want has not yet been loaded into slave blocks. According to the QPC manual special measures have been taken on that implementation of SMSQ/E to avoid this problem.Nasta wrote:TBH I don't exactly remember how slaving is used in the old drivers. I do remember that originally the slave block table was limited to 32k in Minerva due to a bug, but that was soon fixed (word index was used). I seem to recall there is some sort of linear search, initially? Is this what limits the first read, or does the driver attempt to buffer the whole file regardless of how much is actually read?