Rich Mellor wrote: > On Mon, 26 Feb 2007 20:18:05 -0000, omega <[EMAIL PROTECTED]> wrote: > >>Thank you guys for suggestions. Especially George, Daniele, Dilwyn, Tony >>and others. >> >>I need to work on the routines with your hints and test the results. I >>am sorry for lack of response, simply out of time. Derek and Robert: I >>know the example code in advanced QL user guide. I just want to use >>plain standard QL.
That is for which the code was written - see extracts of QLAUG below. Note that the QLAUG code is actually written as BASIC extensions! I must say, I have not actually tested the code, but it seems fairly reasonable as to what it's doing. > If it would appear to be impossible with JS,JM,MG >>roms, I'll switch to Minerva. > > Hi Jan, > > The code in the advanced QL user guide does allow you to use the dual > screen mode on a standard QL. By entering supervisor mode, the system > variables are no longer accessible and the space (32768 bytes?) at $28000 > can be used as the second screen. However, you have no access to TRAP > calls (if I recall correctly) - it has been a long long time since I > looked at this. Quoting a bit from QLAUG: ``On the QL, there are two different areas of memory which can be used to generate the screen display...The second screen is located 32K bytes of RAM above the first. Unfortunately, the system variables...are actually inside of screen 1! ``However, all is not lost. There is still the possibility of using most of screen 1 (apart from the 5k allocated to system variables). To do this, screen 0 alone can be used to display the top fifth[1] of the screen. Screen 1 is then flipped into the display under interrupt control every frame... ``...Manager trap MT.ALCHP is then called to reserve memory in the common heap area. This is so no other allocations in the common heap area will overwrite screen 1... ``The Interrupt service routine...screen 1 can only be switched in after the system variables have passed...The timing for this period is done in software using DBRA D0,* which puts the 68008 into an internal timing loop...'' [1] sic Errm, 5k/32k = 1/7-1/6! 1/5 = 6.4k! A comment is made that the timing loop is affected by a high priority interrupt, so screen 1 switching is disabled if MDV or SER are being used. _______________________________________________ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
