diff options
| -rw-r--r-- | appl/cmd/limbo/limbo.y | 4 | ||||
| -rw-r--r-- | appl/cmd/limbo/types.b | 2 | ||||
| -rw-r--r-- | dis/limbo.dis | bin | 343678 -> 343687 bytes | |||
| -rw-r--r-- | emu/port/win-x11a.c | 38 | ||||
| -rw-r--r-- | limbo/limbo.y | 4 | ||||
| -rw-r--r-- | limbo/types.c | 4 | ||||
| -rw-r--r-- | module/draw.m | 2 | ||||
| -rw-r--r-- | utils/8l/l.h | 12 |
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 Binary files differindex b4e3acac..d6e949ed 100644 --- a/dis/limbo.dis +++ b/dis/limbo.dis 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]; |
