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