Well, not a lot But that never was a target for the Magnetic Adventures - They wouldn't run on an unexpanded machine anyhow. The code is also relatively generous using unrolled loops for the copying for speed (after all, every single picture that is displayed in the adventures means saving and restoring the buffers)
Double buffering?
Re: Double buffering?
ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
Re: Double buffering?
Hi chains,
Nice to see you working the QL . As far as my research goes, the vectors to deal with interrupts are pointing to addresses in ROM, which has a generic interrupt handler. This in turn also has hardcoded addresses, to for example the pointer location of the vblank interrupt handing. For JS this lies in the $28000 range, and for the Minerva ROM I believe it lies in the $38000 range. As such, since its hardcoded; you can either disable all interrupts and use the memory, and live without programmable interrupts (well, programmable vblank anyway); or isolate the memory needed for the interrupt (well vblank ), and work around the limitation.
In the case of Minerva the memory location does not collide with the 2nd screen buffer.
I chose to use the vblank interrupt as my demosystem handler, so I worked around the memory limitation thing.
Hope this helps. I'm cool to share the approach, similarly both Minerva and JsRom can this way be supported I believe by 'just' writing the interrupt handler vector to both jsrom and Minerva locations .
Long story summarized, you can trash the whole os and just use only the vblank vector pointer, and have your 2nd screen buffer (bar a few pixels ).
Kind regards
Wietze
Nice to see you working the QL . As far as my research goes, the vectors to deal with interrupts are pointing to addresses in ROM, which has a generic interrupt handler. This in turn also has hardcoded addresses, to for example the pointer location of the vblank interrupt handing. For JS this lies in the $28000 range, and for the Minerva ROM I believe it lies in the $38000 range. As such, since its hardcoded; you can either disable all interrupts and use the memory, and live without programmable interrupts (well, programmable vblank anyway); or isolate the memory needed for the interrupt (well vblank ), and work around the limitation.
In the case of Minerva the memory location does not collide with the 2nd screen buffer.
I chose to use the vblank interrupt as my demosystem handler, so I worked around the memory limitation thing.
Hope this helps. I'm cool to share the approach, similarly both Minerva and JsRom can this way be supported I believe by 'just' writing the interrupt handler vector to both jsrom and Minerva locations .
Long story summarized, you can trash the whole os and just use only the vblank vector pointer, and have your 2nd screen buffer (bar a few pixels ).
Kind regards
Wietze