[comp.sys.amiga] Denise/Paula/Agnus/Gary/Portia

protcoop@leibniz.uucp (08/03/89)

Something has been on my mind for the last while and I want to bring it
to the net community to see if my theory is plausible.  Let us *suppose*
that the Amiga 3000 did not use Commodore's custom chips but used some
'off the line' parts by other companies, for example the TI 34000 (?)
blitter.  Let us further suppose that all of the system software looks
the same to the programmer, i.e. all of the function calls are the same.
Would it not be possible for current software to work on both the new
hardware and the old hardware?  The way I see it is that in my programs
I have to open libraries to call routines.  If I am on the current Amiga
then the library I get is one that supports that machine.  If I am on
the new Amiga 3000, then the library that gets opened is one that
supports the new hardware.  The programmer (at least in 'C') need never
know what hardware is being used.  Is this the way it would work?
If not, why not?
------------------------------------------------------------------------------------------------
Alan W. McKay  |  My opinions are mine, yours are yours. |  Eat Food  |
NEPEAN, Ont.   |  I in no way pretend to represent the   |     and    |
613-763-8980   |  the options of my employer.  So there. |   LIVE !!  |

esker@abaa.uucp (Lawrence Esker) (08/04/89)

In article <1388@bnr-fos.UUCP> protcoop@leibniz.uucp () writes:
>                                                     ...Let us *suppose*
>that the Amiga 3000 did not use Commodore's custom chips but used some
>'off the line' parts by other companies, for example the TI 34000 (?)
>blitter.  Let us further suppose that all of the system software looks
>the same to the programmer, i.e. all of the function calls are the same.
>Would it not be possible for current software to work on both the new
>hardware and the old hardware?  The way I see it is that in my programs
>I have to open libraries to call routines.  If I am on the current Amiga
>then the library I get is one that supports that machine.  If I am on
>the new Amiga 3000, then the library that gets opened is one that
>supports the new hardware...

In the land of dragons, unicorns and faeries, you are absolutely correct
in your assumptions.  From what I've seen in the Amiga and from Comodore
in the last 4 years, what you suggest is why Comodore stresses the proper
use of library routines, etc.  But, a big but, there are alot of developers
out there who, for whatever reasons, beleive they can get squeeze better
performance out of the machine by doing things their own way.  Look at how
much software breaks when there have been operating system changes.  EVERY
ONE OF THESE FAILURES IS DUE TO VIOLATING AMIGA "RULES", imho.

In the land of schedules, costs, and profits, what you say is not conceivable.
In my years of experience, the more that is changed, the longer things will
take, the more money is lost, and the more bugs will be introduced.  I would
say that changing the hardware foundation is the extreme of change.  Did I
mention that even gremlins exist in the land of dragons.

By the way, you touched on THE reason the Amiga is superior to all other
computer systems on the market, including UNIX and VAX machines.  The common
programmers interface that operates every feature of the machine in a
unilateral and upward compatible means.  All this despite the "braindamaged"
BCPL and AmigaDOS that other threads on this net are shoving down our throats.

Yes, BCPL and AmigaDOS do not integrate well with the rest of the system, but
this is the land of reality.  Besides, I am sure there are people where BCPL
and TripOS originated that beleive C, Exec and Intuition do not integrate well
with AmigaDOS.  (Oh well, I'm rambling on.  Time to shut up.)

>Alan W. McKay  |  My opinions are mine, yours are yours. |  Eat Food  |
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> Devon, take heed.
-- 
---------- Lawrence W. Esker ----------  Modern Amish: Thou shalt not need any
\  *        *             *  *******  /  computer that is not IBM compatible.
 \  *        *     *     *  *        /   
  \  *        *   * *   *  *****    / Sr. Hardware/ASIC Design Engineer
   \  *        * *   * *  *        /  Allen-Bradley Communications Div.
    \  *******  *     *  *******  /   Phone:  (313)668-2500  (313)973-8561
     -----------------------------    Compuserve: ?????-????
UseNet Smart: esker@abaa.uucp  or  abaa!esker@itivax.iti.org
UseNet Other: __!uunet!mimsy!rutgers!citi!itivax!abaa!esker
Nothing left to do but :-) ;-) ;-D

wendell@medsys.UUCP (bbs amiga user) (08/05/89)

Good idea, and I'd say it would almost work... Most productivity software
would work the way you've outlined it I assume. The only things that would
break in large numbers are commercial games. (Seems that way with everything
else: HD's, 010/020's, more ram...). A LOT of the game programmers skip
right by the standard AmigaDos library calls, and address the disk drives,
custom chips, etc.. directly thru their registers. Plug in a different
blitter, and the registers will be totally different. All Non-Standard
code would probably die.... Too bad, the Amiga's shared library scheme
is the best I've seen on any micro. American, Canadian, etc... productivity
programmers agree, and use the standard library calls. It's the European
game programmers that kick out the Operating System first thing. shame...

--
Wendell Dingus
UUCP: uunet!medsys!wendell

riley@batcomputer.tn.cornell.edu (Daniel S. Riley) (08/06/89)

In article <713@neptune.UUCP> esker@neptune.UUCP (Lawrence Esker) writes:
>In article <1388@bnr-fos.UUCP> protcoop@leibniz.uucp () writes:
>>that the Amiga 3000 did not use Commodore's custom chips but used some
>>'off the line' parts by other companies, for example the TI 34000 (?)
>>blitter.  Let us further suppose that all of the system software looks
>>the same to the programmer, i.e. all of the function calls are the same.
>>Would it not be possible for current software to work on both the new
>>hardware and the old hardware?

>In the land of dragons, unicorns and faeries, you are absolutely correct
>in your assumptions.  From what I've seen in the Amiga and from Comodore
>in the last 4 years, what you suggest is why Comodore stresses the proper
>use of library routines, etc.  But, a big but, there are alot of developers
>out there who, for whatever reasons, beleive they can get squeeze better
>performance out of the machine by doing things their own way.  Look at how
>much software breaks when there have been operating system changes.  EVERY
>ONE OF THESE FAILURES IS DUE TO VIOLATING AMIGA "RULES", imho.

Not every feature of the machine is available in a hardware independent
fashion.  Sometimes, a programmer really needs to build a custom COPPER
list, or directly manipulate the blitter registers.  There are *legal* 
system supported ways to do these things which are manifestly not hardware
independent, and which would break if an "Amiga" were built with
off-the-shelf parts instead of the custom ICs.  Clearly it's better to
use the system supplied routines whenever possible, but it just isn't
always possible, and not just for games.  Your typical spreadsheet or
wordprocessor should work on such an "Amiga", but some high-performance
graphics applications certainly wouldn't without some rewriting.  This
should become less common as more powerful CPUs become more common, since
the blitter has a much smaller speed advantage over a '20 or '30 with a
fast clock (as long as the manipulations can be done in 32-bit ram, and are
complex enough to justify copying in and out of chip ram).

>By the way, you touched on THE reason the Amiga is superior to all other
>computer systems on the market, including UNIX and VAX machines.  The common
>programmers interface that operates every feature of the machine in a
>unilateral and upward compatible means.

Both Unix and VMS have standard programmer interfaces.  They couldn't work
otherwise--especially UNIX, which runs on a wide variety of very different
architectures (where VMS only runs on variations on the same basic VAX).
In fact, VMS and UNIX are better because memory protection forces you to
use the standard interface--you can't twiddle the bits in the hardware
registers without shifting to a priveleged processor mode.

-Dan Riley (riley@tcgould.tn.cornell.edu, cornell!batcomputer!riley)
-Wilson Lab, Cornell U.

bear@bucsb.UUCP (Blair M. Burtan) (08/09/89)

>list, or directly manipulate the blitter registers.  There are *legal* 
>system supported ways to do these things which are manifestly not hardware
>independent, and which would break if an "Amiga" were built with
>off-the-shelf parts instead of the custom ICs.  Clearly it's better to
 ^^^^^^^^^^^^^^^^^^
>use the system supplied routines whenever possible, but it just isn't
>always possible, and not just for games.  Your typical spreadsheet or
>wordprocessor should work on such an "Amiga", but some high-performance
>graphics applications certainly wouldn't without some rewriting.  This
>should become less common as more powerful CPUs become more common, since
>the blitter has a much smaller speed advantage over a '20 or '30 with a
>fast clock (as long as the manipulations can be done in 32-bit ram, and are
>complex enough to justify copying in and out of chip ram).

Think about this.  The original IBM-PC was and can be built with
off the shelf parts.  All one need do is buy a bare board and copy the
ROMS on to blank EPROMs.  The result, every fly-by-night computer
company is making PC clones.  It's easy, it's cheap, and obviously
profitable.  You can't do that with an Amiga.  Not only would you
have to raid CBM manufacturing facilities for PCB and the custom chips,
but you'd have to find someone to copy PALs for you.  And you'd
have to find DB-23 connectors (Blech!!).  Basically, CBM created
a monopoly for themselves.  Thus, they can do whatever they want
to the machine.  They don't have to keep improving themselves just
to stay ahead of the competition because there is none.

                              definitely IMHO,

                                                Bear




-- 
------------------------ Signature Version 0.2 ------------------------------
Disclaimer:
I'm the one you're mother wants you to marry.

Blair "Bear" Burtan, Boston University's Resident Amiga Expert
which isn't saying much.

bear@bucsb.edu   bear@bucsf.edu   bear@buengf.edu
bear@bu-pub.edu  enge05c@buacca.edu
-----------------------------------------------------------------------------

rtczegledi@crocus.waterloo.edu (Richard Czegledi) (08/09/89)

Hey.... Idea.  Since it is generaly un-economical to create a double
buffered display for scrolling multi-bitplaned screens to eliminate the
annoying flicker, why not try to reduce the flicker somewhat.

I think that most of the flicker is due to the delay while an entire
bitplane is blitted up and might possibly be resolved by scrolling the
display in 2 or 3 horizontal sections (reduce the time that one bitplane
is disjointed from it's corresponding pixels in another plane).  Flicker
would probably still be there, but atleast it wouldn't be as great, or 
dominate the entire screen.

just a thought.

jms@tardis.Tymnet.COM (Joe Smith) (08/12/89)

In article <15769@watdragon.waterloo.edu> rtczegledi@crocus.waterloo.edu (Richard Czegledi) writes:
>Hey.... Idea.  Since it is generaly un-economical to create a double
>buffered display for scrolling multi-bitplaned screens to eliminate the
>annoying flicker, why not try to reduce the flicker somewhat.

I take it you mean "color smear", as opposed to "interlace flicker".

<I think that most of the flicker is due to the delay while an entire
<bitplane is blitted up and might possibly be resolved by scrolling the
<display in 2 or 3 horizontal sections (reduce the time that one bitplane
<is disjointed from it's corresponding pixels in another plane).  Flicker
<would probably still be there, but atleast it wouldn't be as great, or 
<dominate the entire screen.

Here's an idea on how to do it.  (The following describes a 640x200 16-color
screen.)  Instead of allocating 4 independent bitmaps, allocate one big
array.  Define the first bitmap to be the start of the array, the 2nd to be
start+40, the 3rd as start+80, and the 4th as start+120.  Then set the
modulo for each one as 120 (making it looks sort-of like a super-bit-map).
You could draw onto the array as if it were 4 independent 640x200 bitmaps.
If you could convince the graphics library that you want the array to be
treated as if it were a screen with a single 2560x200 bitplane, the color
smear would go away.  The blitter would move all the bits of all the
"planes" of the first line before it moved the second line, etc.  It would
look better than the current case, where all the bits of the entire first
plane gets moved before any of the bits in the second plane.

But the current blitter only goes up to 1024 bits.  Until you get the ECS,
you'll have to use some tricks to get the blit accomplished.

Or is this idea too crazy to be of use?  :-)
-- 
Joe Smith (408)922-6220 | SMTP: JMS@F74.TYMNET.COM or jms@tymix.tymnet.com
McDonnell Douglas FSCO  | UUCP: ...!{ames,pyramid}!oliveb!tymix!tardis!jms
PO Box 49019, MS-D21    | PDP-10 support: My car's license plate is "POPJ P,"
San Jose, CA 95161-9019 | narrator.device: "I didn't say that, my Amiga did!"

cmcmanis%pepper@Sun.COM (Chuck McManis) (08/15/89)

In article <506@tardis.Tymnet.COM> jms@tardis.Tymnet.COM (Joe Smith) writes:
[Interesting idea edited out (see the reference)]
>But the current blitter only goes up to 1024 bits.  Until you get the ECS,
>you'll have to use some tricks to get the blit accomplished.
>Or is this idea too crazy to be of use?  :-)

Actually it looks like a pretty neat idea, you can try it on current 
technology screens by using a low res 250 X 200 screen (1000 X 200
bitmap) Make the viewport think it is a 5 plane screen tho so that you
can check it with full DMA contention.


--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.
"A most excellent barbarian ... Genghis Kahn!"

farren@well.UUCP (Mike Farren) (08/17/89)

The problem with the proposed scheme is that it wins you little over
the current scheme.  Blitting images is not done on a line by line
basis - if it were, the blit might be a little cleaner, but would be
one hell of a lot slower, as the overhead involved in setting up the
blitter for each line transfer would be immense.  Making CHIP RAM out
of 60ns chips and doubling the blitter's transfer rate would help a lot
more...  at a price.
-- 
Mike Farren 				     farren@well.sf.ca.usa

jms@tardis.Tymnet.COM (Joe Smith) (08/18/89)

In article <13167@well.UUCP> farren@well.UUCP (Mike Farren) writes:
>The problem with the proposed scheme is that it wins you little over
>the current scheme.  Blitting images is not done on a line by line
>basis - if it were, the blit might be a little cleaner, but would be
>one hell of a lot slower, as the overhead involved in setting up the
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>blitter for each line transfer would be immense.

No, it wouldn't, because the blitter hardware is capable of doing it.
Take a look at the Hardware Reference Manual (or get Tom Rokicki's BlitLab
from Fish Disk #84).  You can tell the blitter how many bytes are on a line,
and you tell the blitter how many bytes it should skip over to get to the
next line.  Setting the "modulo" register to zero means that the bits for
the second line immediately follows the first line.  The graphics.library
and the blitter fully support this - that's how SuperBitMaps work.

For instance, when showing only a 640x200 section of an 800x200 bitmap,
the blitter is told to process 80 bytes per line and skip 20 bytes to get
to the start of the next line.  (Actually it's 40 words and 10 words since
the blitter processes 16 bits at a time.)

There are all sorts of neat tricks that you can pull by lying to the
graphics.library.  For instance, I've heard that the 3D picture player that
comes with the Haitex 3D goggles does not read two independent 320x200
pictures from the IFF file, but instead reads a double-wide 640x200 lo-res
image.  By giving the appropriate offsets and modulos to the graphics.library
and telling it to display a 320x400 interlaced picture, the left and right
halves of the double-wide image will be displayed on consecutive frames.
-- 
Joe Smith (408)922-6220 | SMTP: JMS@F74.TYMNET.COM or jms@tymix.tymnet.com
McDonnell Douglas FSCO  | UUCP: ...!{ames,pyramid}!oliveb!tymix!tardis!jms
PO Box 49019, MS-D21    | PDP-10 support: My car's license plate is "POPJ P,"
San Jose, CA 95161-9019 | narrator.device: "I didn't say that, my Amiga did!"

shadow@pawl.rpi.edu (Deven T. Corzine) (08/18/89)

On 16 Aug 89 18:09:26 GMT, farren@well.UUCP (Mike Farren) said:

Mike> The problem with the proposed scheme is that it wins you little
Mike> over the current scheme.  Blitting images is not done on a line
Mike> by line basis - if it were, the blit might be a little cleaner,
Mike> but would be one hell of a lot slower, as the overhead involved
Mike> in setting up the blitter for each line transfer would be
Mike> immense.  Making CHIP RAM out of 60ns chips and doubling the
Mike> blitter's transfer rate would help a lot more...  at a price.

Huh?  The proposed scheme sounds like it would work beautifully.  The
whole point of the matter was that the problem was multiple bitplanes
being disjoint with respect to specific lines...  One bitplane the
text of a line is on the new line while the other(s) are on the old
line...

The proposed scheme was to make one large bitplane (as far as the
blitter is concerned) and manipulating the Copper to display the
bitplanes, resetting the address for each line.  This way you get this
sort of layout:

         <---------- layout in memory --------->

        +---------+---------+---------+---------+
        |         |         |         |         |
        |         |         |         |         |
        |         |         |         |         |
        +---------+---------+---------+---------+

         <--bp0--> <--bp1--> <--bp2--> <--bp3-->

At the beginning of each scan line, the display address would be reset
by a Copper interrupt to the next scanline in the bitplane.  Given a
screen, resolution x by y, number of bitplanes n=3, length of a
scanline in bytes len, and starting address addr, organized as in the
above figure.  Starting scanline addresses would look as follows:

        Bitplane        Scanline        Address
        --------        --------        -------
        0               0               addr
        1               0               addr+len
        2               0               addr+2*len
        0               1               addr+3*len
        1               1               addr+4*len
        2               1               addr+5*len
        .               .               .
        .               .               .
        bp              line            addr+(bp+line*n)*len
                  number of bitplanes=3 --------------^

The copper would interrept the processor at every scanline to reload
the address registers, as the address of the next scanline would
otherwise point to what is actually the same scanline in the next
bitplane.

Now, to scroll, the blitter is told to scroll a region starting at addr,
len*3 bytes wide and y lines long vertically by the height of a line
of text.  It doesn't matter to the blitter that the region is not
displayed as a single bitplane.  If the size of that region is too
large for the blitter to handle at once, split it into several
requests.  Regardless, the blitter will scroll the region(s) smoothly,
without disjoint text.  Which was the idea behind the whole thing in
the first place...

I hope this makes things clearer for someone.

Deven
--
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2214 12th Street, Troy, NY 12180       Phone:  (518) 271-0750
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.

jms@tardis.Tymnet.COM (Joe Smith) (08/20/89)

In article <SHADOW.89Aug18060254@pawl.rpi.edu> shadow@pawl.rpi.edu (Deven T. Corzine) writes:
>The proposed scheme was to make one large bitplane (as far as the
>blitter is concerned) and manipulating the Copper to display the
>bitplanes, resetting the address for each line.

Actually, my idea doesn't need to bother the Copper at all.  Just set BPL1MOD
and BPL2MOD (registers 108 and 10A).

>         <---------- layout in memory --------->
>        +---------+---------+---------+---------+
>        |         |         |         |         |
>        |         |         |         |         |
>        +---------+---------+---------+---------+
>         <--bp0--> <--bp1--> <--bp2--> <--bp3-->

That's a good diagram.  The Blitter can handle this format if BLT[A-D]MOD
are set (registers 060 thru 066).  Again, no Copper hacking is required.

>Now, to scroll, the blitter is told to scroll a region starting at addr,
>len*3 bytes wide and y lines long vertically by the height of a line
>of text.  It doesn't matter to the blitter that the region is not
>displayed as a single bitplane.

Right.  The only problem, as I mentioned, is that the current Agnus has
a limitation of 1024 bits for the total width.  However the new 1-meg
Agnus is supposed to respond to requests for 32K bit wide blits.
-- 
Joe Smith (408)922-6220 | SMTP: JMS@F74.TYMNET.COM or jms@tymix.tymnet.com
McDonnell Douglas FSCO  | UUCP: ...!{ames,pyramid}!oliveb!tymix!tardis!jms
PO Box 49019, MS-D21    | PDP-10 support: My car's license plate is "POPJ P,"
San Jose, CA 95161-9019 | narrator.device: "I didn't say that, my Amiga did!"

shadow@pawl.rpi.edu (Deven T. Corzine) (08/20/89)

Deven> The proposed scheme was to make one large bitplane (as far as
Deven> the blitter is concerned) and manipulating the Copper to
Deven> display the bitplanes, resetting the address for each line.

On 19 Aug 89 21:49:22 GMT, jms@tardis.Tymnet.COM (Joe Smith) said:
Joe> Summary: No need to use the copper

Joe> Actually, my idea doesn't need to bother the Copper at all.  Just
Joe> set BPL1MOD and BPL2MOD (registers 108 and 10A).

Okay, I stand corrected.  [still, I had the right idea...]  :-)

Deven>         <---------- layout in memory --------->
Deven>        +---------+---------+---------+---------+
Deven>        |         |         |         |         |
Deven>        |         |         |         |         |
Deven>        +---------+---------+---------+---------+
Deven>         <--bp0--> <--bp1--> <--bp2--> <--bp3-->

Joe> That's a good diagram.

Gee, thanks!  :-)

Joe> The Blitter can handle this format if BLT[A-D]MOD are set
Joe> (registers 060 thru 066).  Again, no Copper hacking is required.

On the other hand, if you *want* to do copper hacking, [:-)] you could
use a scheme suggested earlier by someone to scroll by manipulating
the addresses the copper displays from...  Can you say FAST scrolling,
boys and girls?  [it requires only register shuffling, not memory
copying]

Of course, that would only really work as a screen, and might be hard
to get it to cooperate with Intuition, but it would scroll quickly and
smoothly...

Deven> Now, to scroll, the blitter is told to scroll a region starting
Deven> at addr, len*3 bytes wide and y lines long vertically by the
Deven> height of a line of text.  It doesn't matter to the blitter
Deven> that the region is not displayed as a single bitplane.

Joe> Right.  The only problem, as I mentioned, is that the current
Joe> Agnus has a limitation of 1024 bits for the total width.  However
Joe> the new 1-meg Agnus is supposed to respond to requests for 32K
Joe> bit wide blits.

1024 bits not being enough for 2 hires bitplaces.  *sigh*  It's a nice
idea, anyhow.  You could do 3 lores bitplanes this way, but it's tough
to do 80 columns that way...

Deven
--
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2214 12th Street, Troy, NY 12180       Phone:  (518) 271-0750
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.

wayneck@tekig5.PEN.TEK.COM (Wayne Knapp) (08/22/89)

In article <522@tardis.Tymnet.COM>, jms@tardis.Tymnet.COM (Joe Smith) writes:
: In article <SHADOW.89Aug18060254@pawl.rpi.edu> shadow@pawl.rpi.edu (Deven T. Corzine) writes:
: Actually, my idea doesn't need to bother the Copper at all.  Just set BPL1MOD
: and BPL2MOD (registers 108 and 10A).
: 
: >         <---------- layout in memory --------->
: >        +---------+---------+---------+---------+
: >        |         |         |         |         |
: >        |         |         |         |         |
: >        +---------+---------+---------+---------+
: >         <--bp0--> <--bp1--> <--bp2--> <--bp3-->
: 
: That's a good diagram.  The Blitter can handle this format if BLT[A-D]MOD
: are set (registers 060 thru 066).  Again, no Copper hacking is required.
: 
: >Now, to scroll, the blitter is told to scroll a region starting at addr,
: >len*3 bytes wide and y lines long vertically by the height of a line
: >of text.  It doesn't matter to the blitter that the region is not
: >displayed as a single bitplane.
: 
: Right.  The only problem, as I mentioned, is that the current Agnus has
: a limitation of 1024 bits for the total width.  However the new 1-meg
: Agnus is supposed to respond to requests for 32K bit wide blits.


Except that that blitter is just way too slow to do smooth scrolling,
except for maybe low-res 4 bitplane stuff.  High-res 4 bitplane, 
requires over 100ms even just to clear the memory, a simple one
source blit. 
                                    Wayne Knapp

cmcmanis%pepper@Sun.COM (Chuck McManis) (08/23/89)

			NEW LAYOUT OF BITPLANES
              Addr   <---------- layout in memory --------->
             0x0000  +---------+---------+---------+---------+
             0x0140  |         |         |         |         |
              ...    |         |         |         |         |
             0xF9FF  +---------+---------+---------+---------+
                      <--bp0--> <--bp1--> <--bp2--> <--bp3-->

	Figure 1. Deven's drawing. (Addresses Assume 640 X 200 X 4 screen)

			TRADITIONAL LAYOUT OF BITPLANES
			Addr	<- layout ->
			0x0000  +----------+
			0x0050  |          |
			 ...    |          |<--bp0--> 
			0x3E80  +----------+
			0x3F00  |          |
			 ...    |          |<--bp1--> 
			0x7D00  +----------+
			0x7D80  |          |
			 ...    |          |<--bp2--> 
			0xBB80  +----------+
			0xBC00  |          |
			 ...    |          |<--bp3--> 
			0xF9FF  +----------+
         
	Figure 2. My Drawing (Addresses still assume a 640 X 200 screen)

In article <4705@tekig5.PEN.TEK.COM> (Wayne Knapp) writes:
> Except that that blitter is just way too slow to do smooth scrolling,
> except for maybe low-res 4 bitplane stuff.  High-res 4 bitplane, 
> requires over 100ms even just to clear the memory, a simple one
> source blit. 
>                                    Wayne Knapp

Wayne you overlooked what was being said. Would someone with a 1M Agnus
*please* code this up. I'd do it, but I don't have such a beast yet. 

The key is that the "new" way of laying out the bitmaps can scroll the
entire screen with all four bitplanes with a *single* blit. And while 
the blit will not complete in a single frame time, the absolute worst
side effect you would see would be *one line* of pixels that were the
wrong color. Contrast that to the current situation where *every* pixel
on the screen can be the wrong color because of one blit is finished 
and the next is setting up. 

As Deven mentioned the only problem is that Amiga's with the old Agnus
can't take advantage of this technique because their blitters can't do
the big blit necessary.

--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.
"A most excellent barbarian ... Genghis Kahn!"