[comp.windows.news] NeWS on Apollo?

greg@CITI.UMICH.EDU (05/22/87)

From: greg@citi.umich.edu
To: bhagwan%voodoo%ssc-vax@beaver.cs.washington.edu
Cc: news-makers@brillig.umd.edu
Date: Thu 21 May EDT 1987 15:50

>
>
>
>Greg,
>	I noticed on one of your postings that you've ported NeWS to
>	color and bw Apollos. Are these ports available? Any info
>	appreciated.
>Thanks,

That is a good question. 

I am going to make some guesses, but alot of it will depend
on legal issues in regards to NeWS.

Source -- I could give out the Apollo specific code that I have
         written, and diffs to anything confidential in the 
         NeWS server, but this will be useless unless you have
         NeWS source. 

Binary -- I assume that if you have a Binary license, that I 
          could give you a binary copy, but this puts all the support
          on me, not to mention problems with operating system releases.

The version of NeWS I ported was Beta. I am waiting for 1.0 for alot
of reasons. I have not touched anything above the suggested porting 
level for NeWS, because I did not want to change everything when 1.0
was available.  The color port I did is horrible!!  It uses GPR. 
NeWS has this bias towards a packed pixel memory organization. Apollos
have a planar organization. All the code which does scaling and rotation
of canvasses works with a packed pixel organization. I did not want to
touch that code, so alot of conversion takes place from packed to planar
right before stuff gets drawn on the screen. Someone needs to take NeWS 1.0
and do a good port to a machine with a planar organization. To draw text 
for NeWS on a color display at the easy port level, you need to do a transparent
blit from main memory to the screen. To do this with GPR you need to set
all the right rops for each plane, and do an additive blit. This is 
super slow. Cacheing fonts into offscreen memory would help, but I don't
know if this will be enough, it may require going below GPR. I did not
want to attempt cacheing fonts until 1.0 became available.

The mono port I did is fairly reasonable. It will get better as Apollo 
fixes it C compiler. As of 9.5 I can't compile the core of the NeWS
interpreter with a -M560 flag, because it generates incorrect code,
not to mention that it takes over 40 minutes to compile and chews
up mega VM. The mono port also uses GPR. It basically just grabs a
pointer to the display memory, and treats it like a dumb frame buffer,
and uses all of the generic code supplied by SUN. This works fairly
well but with 1.0 I would like to go below GPR and write directly
to the mono graphics controller of a 3000. Apollo in its move towards
"open systems", has released all the specifics of its graphics controllers.
Its in the Domain Series 3000 Hardware Archecture Handbook. The 3000's 
mono controller has gate arrays which should speed blits and line drawing,
but currently do not get taken advantage of if you treat the display as
a dumb frame buffer. Also you have a huge amount of hidden display memory
to be taken advantage of, which would be great for cacheing 
canvasses. Allocating memory is a little slower on the Apollo, so 
you can notice a difference in menu pop up time versus a SUN 3/50.

I don't know how much time I will have a available to work on a new
port. It really doesn't fit my job description. I will be happy
to help anyone else out that is interested.


    -greg