summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--appl/cmd/limbo/limbo.y4
-rw-r--r--appl/cmd/limbo/types.b2
-rw-r--r--dis/limbo.disbin343678 -> 343687 bytes
-rw-r--r--emu/port/win-x11a.c38
-rw-r--r--limbo/limbo.y4
-rw-r--r--limbo/types.c4
-rw-r--r--module/draw.m2
-rw-r--r--utils/8l/l.h12
8 files changed, 52 insertions, 14 deletions
diff --git a/appl/cmd/limbo/limbo.y b/appl/cmd/limbo/limbo.y
index 2f7d3ba8..4eb4af8a 100644
--- a/appl/cmd/limbo/limbo.y
+++ b/appl/cmd/limbo/limbo.y
@@ -655,13 +655,13 @@ ftype : nids ':' type
{
$$ = mkids($1.src, enter("junk", 0), $3, nil);
$$.store = Darg;
- yyerror("illegal argument declaraion");
+ yyerror("illegal argument declaration");
}
| idterms ':' adtk
{
$$ = mkids($1.src, enter("junk", 0), $3, nil);
$$.store = Darg;
- yyerror("illegal argument declaraion");
+ yyerror("illegal argument declaration");
}
;
diff --git a/appl/cmd/limbo/types.b b/appl/cmd/limbo/types.b
index 6b1802e5..2ee207b3 100644
--- a/appl/cmd/limbo/types.b
+++ b/appl/cmd/limbo/types.b
@@ -1775,7 +1775,7 @@ cycfield(base: ref Type, id: ref Decl)
+id.sym.name+" of "+stypeconv(base));
id.cycerr = byte 1;
}else if(arc & ArcCyc){
- if((arc & ArcArray) && id.cyc == byte 0 && !(arc & ArcPolycyc)){
+ if((arc & ArcArray) && oldcycles && id.cyc == byte 0 && !(arc & ArcPolycyc)){
if(id.cycerr == byte 0)
error(base.src.start, "illegal circular reference to type "+typeconv(id.ty)
+" in field "+id.sym.name+" of "+stypeconv(base));
diff --git a/dis/limbo.dis b/dis/limbo.dis
index b4e3acac..d6e949ed 100644
--- a/dis/limbo.dis
+++ b/dis/limbo.dis
Binary files differ
diff --git a/emu/port/win-x11a.c b/emu/port/win-x11a.c
index 4fdd295a..3670b260 100644
--- a/emu/port/win-x11a.c
+++ b/emu/port/win-x11a.c
@@ -313,6 +313,33 @@ copy32to32(Rectangle r)
}
static void
+copy16to16(Rectangle r)
+{
+ int dx, width;
+ u16int *dp, *wp, *edp, *lp;
+
+ width = Dx(r);
+ dx = Xsize - width;
+ dp = (u16int*)(gscreendata + ((r.min.y * Xsize) + r.min.x) * 2);
+ wp = (u16int*)(xscreendata + ((r.min.y * Xsize) + r.min.x) * 2);
+ edp = (u16int*)(gscreendata + ((r.max.y * Xsize) + r.max.x) * 2);
+
+ /* The pixel format should be the same as the underlying X display (see
+ the xtruevisual function) unless a different channel format is
+ explicitly specified on the command line, so just copy the pixel data
+ without any processing. */
+
+ while(dp < edp) {
+ lp = dp + width;
+ while(dp < lp){
+ *wp++ = *dp++;
+ }
+ dp += dx;
+ wp += dx;
+ }
+}
+
+static void
copy8to32(Rectangle r)
{
int dx, width;
@@ -435,6 +462,17 @@ flushmemscreen(Rectangle r)
case 32:
copy32to32(r);
break;
+ case 16:
+ switch(xscreendepth){
+ case 16:
+ copy16to16(r);
+ break;
+ default:
+ fprint(2, "emu: bad display depth %d chan %s xscreendepth %d\n", displaydepth,
+ chantostr(chanbuf, displaychan), xscreendepth);
+ cleanexit(0);
+ }
+ break;
case 8:
switch(xscreendepth){
case 24:
diff --git a/limbo/limbo.y b/limbo/limbo.y
index a6ccab90..f869f01c 100644
--- a/limbo/limbo.y
+++ b/limbo/limbo.y
@@ -582,13 +582,13 @@ ftype : nids ':' type
{
$$ = mkids(&$1->src, enter("junk", 0), $3, nil);
$$->store = Darg;
- yyerror("illegal argument declaraion");
+ yyerror("illegal argument declaration");
}
| idterms ':' adtk
{
$$ = mkids(&$1->src, enter("junk", 0), $3, nil);
$$->store = Darg;
- yyerror("illegal argument declaraion");
+ yyerror("illegal argument declaration");
}
;
diff --git a/limbo/types.c b/limbo/types.c
index 6d231115..c8105d5a 100644
--- a/limbo/types.c
+++ b/limbo/types.c
@@ -2024,7 +2024,7 @@ cycfield(Type *base, Decl *id)
id->sym->name, base);
id->cycerr = 1;
}else if(arc & ArcCyc){
- if((arc & ArcArray) && id->cyc == 0 && !(arc & ArcPolycyc)){
+ if((arc & ArcArray) && oldcycles && id->cyc == 0 && !(arc & ArcPolycyc)){
if(id->cycerr == 0)
error(base->src.start, "illegal circular reference to type %T in field %s of %t",
id->ty, id->sym->name, base);
@@ -3466,7 +3466,7 @@ expandtype(Type *t, Type *instt, Decl *adtt, Tpair **tp)
if(t == nil)
return nil;
-if(debug['w']) print("expandtype %d %lux %T\n", t->kind, (ulong)t, t);
+if(debug['w']) print("expandtype %d %#p %T\n", t->kind, t, t);
if(!toccurs(t, tp))
return t;
if(debug['w']) print("\texpanding\n");
diff --git a/module/draw.m b/module/draw.m
index 730e62ac..a9dabd8f 100644
--- a/module/draw.m
+++ b/module/draw.m
@@ -91,7 +91,7 @@ Draw: module
RGB15: con Chans(((CIgnore<<4)|1)<<24 | ((CRed<<4)|5)<<16 | ((CGreen<<4)|5)<<8 | ((CBlue<<4)|5));
RGB16: con Chans(((CRed<<4)|5)<<16 | ((CGreen<<4)|6)<<8 | ((CBlue<<4)|5));
RGB24: con Chans(((CRed<<4)|8)<<16 | ((CGreen<<4)|8)<<8 | ((CBlue<<4)|8));
- RGBA32: con Chans((((CRed<<4)|8)<<16 | ((CGreen<<4)|8)<<8 | ((CBlue<<4)|8))<<8 | ((CAlpha<<4)|8));
+ RGBA32: con Chans((((CRed<<4)|8)<<24 | ((CGreen<<4)|8)<<16 | ((CBlue<<4)|8))<<8 | ((CAlpha<<4)|8));
ARGB32: con Chans(((CAlpha<<4)|8)<<24 | ((CRed<<4)|8)<<16 | ((CGreen<<4)|8)<<8 | ((CBlue<<4)|8)); # stupid VGAs
XRGB32: con Chans(((CIgnore<<4)|8)<<24 | ((CRed<<4)|8)<<16 | ((CGreen<<4)|8)<<8 | ((CBlue<<4)|8)); # stupid VGAs
diff --git a/utils/8l/l.h b/utils/8l/l.h
index da151014..85964bc3 100644
--- a/utils/8l/l.h
+++ b/utils/8l/l.h
@@ -195,7 +195,7 @@ EXTERN union
uchar obuf[MAXIO]; /* output buffer */
uchar ibuf[MAXIO]; /* input buffer */
} u;
- char dbuf[1];
+ char dbuf[2*MAXIO];
} buf;
#define cbuf u.obuf
@@ -236,8 +236,8 @@ EXTERN char debug[128];
EXTERN char literal[32];
EXTERN Prog* etextp;
EXTERN Prog* firstp;
-EXTERN char fnuxi8[8];
-EXTERN char fnuxi4[4];
+EXTERN uchar fnuxi8[8];
+EXTERN uchar fnuxi4[4];
EXTERN Sym* hash[NHASH];
EXTERN Sym* histfrog[MAXHIST];
EXTERN int histfrogp;
@@ -247,9 +247,9 @@ EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
EXTERN char* hunk;
-EXTERN char inuxi1[1];
-EXTERN char inuxi2[2];
-EXTERN char inuxi4[4];
+EXTERN uchar inuxi1[1];
+EXTERN uchar inuxi2[2];
+EXTERN uchar inuxi4[4];
EXTERN char ycover[Ymax*Ymax];
EXTERN uchar* andptr;
EXTERN uchar and[30];