Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10 5/3/83; site intelca.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!mhuxl!ihnp4!zehntel!dual!amd!intelca!glen
From: glen@intelca.UUCP (Glen Shires)
Newsgroups: net.micro.apple
Subject: Re: hires_question
Message-ID: <376@intelca.UUCP>
Date: Thu, 16-Aug-84 16:29:38 EDT
Article-I.D.: intelca.376
Posted: Thu Aug 16 16:29:38 1984
Date-Received: Sun, 19-Aug-84 02:04:41 EDT
References: <494@bunker.UUCP>
Organization: Intel, Santa Clara, Ca.
Lines: 42

.
There is an interesting software hack that I invented that will do a
similar function for you.  It flips back and forth between the Apple ][(+) 
hi-res pages 0 and 1 exactly at the end of the video refresh scan.  This
then allows both page 0 and 1 to be displayed (pseudo)-simultaneously.

The big problem is that due to the way colors are generated (with the
bit-7 phase shift), blended colors tend to wash out so that the new colors
are only white-washed colors (more white-ish) versions of the normal
colors available.

Other problems are display flicker is noticeable (entire screen refresh
now takes twice as long) and software overhead can be substantial because
it must poll-wait until the exact end of screen.

Here's how it's done:
Apple ][ dual-ports memory between the CPU and display (cycles between
the two are interleaved).  If the CPU attempts to read from a memory
address that does not contain a device, the CPU ends up receiving
whatever garbage data happened to be floating on its data lines.
Because the display access was the last cycle to occur, these data lines
then retain the display data.  If a certain pattern is placed in display
memory only at a certain point in the display, software can wait until
this pattern is displayed by repeatedly reading non-existant locations
and comparing.  A simple polling loop is:

      LDA pattern
Wait  CMP $CFFF     ;no device is addressed at this location
      JNZ Wait

Once the pattern is found, then the software can flip the hi-res page
and do a little useful work before it comes back into the wait loop.
Note: place the display data pattern in the display several times in
a row (atleast four) to guarantee catching it with the compare.

 

-- 
^ ^    Glen Shires, Intel, Santa Clara, Ca.
O O     Usenet: {ucbvax!amd,pur-ee,hplabs}!intelca!glen
 >      ARPA:   "amd!intelca!glen"@BERKELEY
\-/    --- stay mellow