whw@doc.ic.ac.uk (Victor Wu) (04/15/87)
Hello folks, I've recently bought a Wyse-700 monitor for my AT-clone and trying to port the bitblter for the X windowing system (from Brown University) to run on it. However, I found it is very difficult to work with this particular monitor. The reason being that when it is at its highest resolution (ie. 1280 X 800 pixels black and white), the frame buffer is divided into two banks of memory. One for the even scanlines and the other for the odd scanlines. Both of them occupy the same address space A0000H to AFFFFH. To be able to read from or write to either one banks of memory, one have to write to a control port at address 3DF. This makes the bitblt routines very clumsy and tedious and very inefficent. I wonder is anyone out there have any experience with this monitor or any solution to the problem. Thank you very much indeed in advance for your kind attention and help. Victor WU Department of Computing, Imperial College of Science & Technology, 180, Queen's Gate, London SW7 2BZ, England.
david@sun.uucp (David DiGiacomo) (04/16/87)
In article <425@ivax.doc.ic.ac.uk> whw@doc.ic.ac.uk (Victor Wu) writes: > I've recently bought a Wyse-700 monitor for my AT-clone and trying to >port the bitblter for the X windowing system (from Brown University) to run on >it. However, I found it is very difficult to work with this particular >monitor. The reason being that when it is at its highest resolution (ie. 1280 >X 800 pixels black and white), the frame buffer is divided into two banks of >memory. One for the even scanlines and the other for the odd scanlines. I haven't looked at the Brown code lately (and it's hard to find it when you haven't told me which version of X you're using or which device it was written for!), but in general it's easy to handle this by blt-ing the odd and even lines separately. Create dummy bitmap structures for the source and destination bitmap operands with the bytes-per-scan-line values doubled. (Think of this as creating new bitmaps with all the original even lines on the left side and the original odd lines on the right side.) Now you can perform most bitblts by calling the regular bitblt function twice with slightly munged dx, dy, w, h, sx, sy operands (swapping the frame buffer bank in between). There is one pathological case where the source and destination bitmaps are both areas on the frame buffer and the LSBs of the source and destination y coordinates differ (e.g. dy is even and sy is odd). This has be done with a temporary memory bitmap (which only has to be half the size of the bitblt area). -- David DiGiacomo, Sun Microsystems, Mt. View, CA sun!david david@sun.com