I found that my most recent demo release is not Minerva-ROM compatible. Because I have no intention to willingly deny Minerva users to run my demos, Im interested in looking into what causes the incompatibility. Luckily for me, the issue can be reproduced using Qemulator!
However, I lack the knowledge about how the QL OS (Minerva) runs. So far, I have `winged' it in JSROM, to put my own VBLANK vector in the designated spot; like this (Warning code follows:)
This is the way I install my own demosystem handler; by overwriting the user programmable auto vector for vblank
Code: Select all
initInterrupt
move.w #$4e71,initInterrupt ; make this run once, so the next time we run this it does rts
move.w #$2700,sr ; stop interrupts
move.l #vblRoutList,$2803c ; write our own vblank vector list in the designated user programmable auto vector
move.w #$2100,sr ; enable interrupts
rts
The interrupt thats being fired drops the PC to $6BC. Some research seems to lead to that this is cased by a level 2 interrupt being triggered (vectors defined at $68 ?).
It seems the Minerva code is less selfcontained than the JSROM....
If anyone has a quick fix, please chip in. Otherwise I'll just have to delve into the rabbit hole a bit further.
Kind regards,
Wietze