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

Reply via email to