From 788c43963bdb98f2daa31144b45434ed4f748346 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Mon, 7 Dec 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-12-07 --- gnot/u.h | 1 + pc/u.h | 1 + port/devbit.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ power/u.h | 1 + ss/u.h | 1 + 5 files changed, 55 insertions(+) diff --git a/gnot/u.h b/gnot/u.h index c6367e3fd7f95de2125bbd3732eed57e8a5d14ae..59f98d28fdd3c7f1e3aafecb214ffc8d631a78d0 100644 --- a/gnot/u.h +++ b/gnot/u.h @@ -1,5 +1,6 @@ typedef unsigned short ushort; typedef unsigned char uchar; +typedef signed char schar; typedef unsigned long ulong; typedef long vlong; typedef union Length Length; diff --git a/pc/u.h b/pc/u.h index c6367e3fd7f95de2125bbd3732eed57e8a5d14ae..59f98d28fdd3c7f1e3aafecb214ffc8d631a78d0 100644 --- a/pc/u.h +++ b/pc/u.h @@ -1,5 +1,6 @@ typedef unsigned short ushort; typedef unsigned char uchar; +typedef signed char schar; typedef unsigned long ulong; typedef long vlong; typedef union Length Length; diff --git a/port/devbit.c b/port/devbit.c index 87f5825ece858df137ceb7b267e11e2d1544d3ca..4a24b4b62b32211839aa20b3fecaea615cf8068c 100644 --- a/port/devbit.c +++ b/port/devbit.c @@ -980,6 +980,57 @@ bitwrite(Chan *c, void *va, long n, ulong offset) p += 73; break; + case 'e': + /* + * polysegment + * + * 'e' 1 + * id 2 + * pt 8 + * value 1 + * code 2 + * n 2 + * pts 2*n + */ + if(m < 16) + error(Ebadblt); + l = BGSHORT(p+14); + if(m < 16+2*l) + error(Ebadblt); + v = BGSHORT(p+1); + if(v<0 || v>=bit.nmap || (dst=bit.map[v])==0) + error(Ebadbitmap); + off = 0; + fc = BGSHORT(p+12) & 0xF; + if(v == 0){ + if(flipping) + fc = flipD[fc]; + off = 1; + } + pt1.x = BGLONG(p+3); + pt1.y = BGLONG(p+7); + t = p[11]; + if(off && !isoff){ + cursoroff(1); + isoff = 1; + } + p += 16; + m -= 16; + while(l > 0){ + pt2.x = pt1.x + (schar)p[0]; + pt2.y = pt1.y + (schar)p[1]; + gsegment(dst, pt1, pt2, t, fc); + if(dst->base < endscreen){ + mbbpt(pt1); + mbbpt(pt2); + } + pt1 = pt2; + p += 2; + m -= 2; + l--; + } + break; + case 'f': /* * free diff --git a/power/u.h b/power/u.h index e73f66c7aa18b0d670b3e8a7c9cda8e66a208e89..3a2341d26a2acc39c47cec77704815a65852c034 100644 --- a/power/u.h +++ b/power/u.h @@ -1,5 +1,6 @@ typedef unsigned short ushort; typedef unsigned char uchar; +typedef signed char schar; typedef unsigned long ulong; typedef long vlong; typedef union Length Length; diff --git a/ss/u.h b/ss/u.h index e4fcd0cd2db6f2b46e07210a968b7898e83c2476..edb76330f603dab56562d4ce1ce564f1da94a305 100644 --- a/ss/u.h +++ b/ss/u.h @@ -1,6 +1,7 @@ typedef unsigned int uint; typedef unsigned short ushort; typedef unsigned char uchar; +typedef signed char schar; typedef unsigned long ulong; typedef long vlong; typedef union Length Length;