That's the problem with only optimizing snippets. Depending on how "bad" is defined the instruction is allowed or not. In case of PC relative it's only valid as a source, true.
pjw wrote:tcat,
It would be really great if you could write up your findings, either as articles for publication or in one or more of the Wiki's - preferably both.
Keep QL-ing!
Per
Hi Per,Simon,All,
My quest is not right at its end yet. I will be replacing R/W head on one of the MDs, and setting it for lower speed. Then doing further tests.
You may follow other MD related threads at H/W section.
When I have enough confidence about my findings, I will share.
P.S. Currently looking for 2 more R/W heads to fix remaining units I have here.
From some old Minerva "updates_doc" I happen to have on my hard disk:
MD.SELEC $164 Select microdrive unit
D1 drive number 1..8 ???
A3 $18020 preserved
D0/D2 destroyed
Call this in supervisor mode, with interrupts disabled, to select which of the microdrive units is to be started up. (N.B. D1.W should be 1..8).
A delay of about half a second after this call should be sufficient to ensure that the drive is up to speed.
MD.DESEL $166 Deselect microdrives
A3 $18020 preserved
D0/D1/D2 destroyed
Call this in supervisor mode, with interrupts disabled, to stop microdrives.
NB: All Minerva extended vectors need to be called with an offset of $4000!
I see, having said that, can I make these absolute addresses, $4000 relative for the `jsr $4000(a2) call'?
To make the calling code easier, while supporting most ROMs incl. `Minerva'.
I see, having said that, can I make these absolute addresses, $4000 relative for the `jsr $4000(a2) call'?
To make the calling code easier, while supporting most ROMs incl. `Minerva'.
No these addresses have to be called directly after checking the QDOS version.
I don't know the addresses of the MG ROM (v1.13) off hand but there are disassemblies around where you can find them (you should mask off the dot as it is replaced by the country code, e.g. 1G13 for German MG ROM).
If the version is not one of these (and >1.13) it's probably Minerva, and then you can call them via the vector address (with offset $4000).