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