164 int dx, dy, dy2, dx1, dx2, errterm1, errterm2;
165 int i, s1, s2, lnum, lcnt, next, *st =
NULL;
167 unsigned char left, right, cbuf;
168 union {
unsigned short color2;
unsigned char c[2]; }
c;
180 rgen1 =
pc.
base + (long) lnum*next;
183 outpw(0x3ce,
c.color2 & 0xff00);
187 for (i = 0; i < num; i += 2) {
202 if (x2 >= x1) { dx1 = -dx1; s1 = -1; }
203 if (x4 >= x3) { dx2 = -dx2; s2 = 1; }
204 errterm1 = errterm2 = 0;
210 left = (0xff >> (x2 & 7));
211 right = ~(0xff >> (x3 & 7));
212 dx = (x3 >> 3) - (x2 >> 3) - 1;
213 if (dx < 0) { left &= right; dx = 0; right = 0; }
214 rgen = rgen0 + (x2 >> 3);
228 while (errterm1 > 0 && x1 != x2) {
232 while (errterm2 > 0 && x3 != x4) {
240 left = (0xff >> (x2 & 7));
241 right = ~(0xff >> (x3 & 7));
242 dx = (x3 >> 3) - (x2 >> 3) - 1;
243 if (dx < 0) { left &= right; dx = 0; right = 0; }
244 rgen = rgen0 + (x2 >> 3);
245 cbuf = st[lcnt++ & 7];
255 *rgen = cbuf & right;
260 while (errterm1 > 0 && x1 != x2) {
264 while (errterm2 > 0 && x3 != x4) {