On Tue, 21 Aug 2007 19:39:50 +0200, Palenicek Jan <[EMAIL PROTECTED]> wrote:
> Hi Nasta, Thanks for great info. > Thanks, thinking more about it, I should still address my time critical > routines into this slow-ULA memory rather than to expanded memory, > because slow memory is equally slow on all QLs, is it? Not if there is a GC or SGC. Then the memory is only slowed down when writing to it, because the GC/SGC actually maps a 'shadow' memory area to the same place. The way it works is that when data is written to those addresses, it is written both to the RAM driven by the ULA and the appropriate area of GC/SGC RAM. The slowest one dictates the speed, so that's the ULA. When data is read, it is only read from the fast GC/SGC RAM at the same address. This way code is executed (very) much faster from those addresses, but the ULA also gets a copy of all the data taht needs to be displayed on the screen. >> logic must have been a really tight squeeze because it would have been >> very easy to add a screen 2 and 3... > > And that would be really great to have more than two screens, no > blinking Flash bit...etc. It is actually possible to add screen 2/3 switching with external logic. The ULA has two memory CAS signals, one for each bank of 64k. It also has a signal that is activated when the ULA is doing screen refresh. Screen refresh is always done in the bank selected by the CAS0 signal, if external logic activates the CAS1 signal instead, the ULA will address the top 64k of the built-in memory to do screen refreshes. > Ok, I have discovered interesting ULA behavior. I cannot change screen > mode earlier than on the ~5th line of the screen. ULA simply ignores > status of the port. Do you know why? I have never seen this, it is possible that the fram interrupt routine forces data into the control port, so your data gets overwritten. N. _______________________________________________ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm