From f4d01f06552c1590353b20cd73512961f4a7c9f0 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Mon, 17 Aug 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-08-17 --- port/sysfile.c | 7 +++++-- ss/main.c | 2 ++ ss/screen.c | 39 ++++++++++++++++++++++++--------------- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/port/sysfile.c b/port/sysfile.c index 46dd443a12ae3e2c047800d3b905df7e6b7c4670..099502b6edcff9c5abc2d0f2035959369e37b9b7 100644 --- a/port/sysfile.c +++ b/port/sysfile.c @@ -165,6 +165,11 @@ fdclose(int fd, int flag) lock(f); c = f->fd[fd]; + if(c == 0){ + /* can happen for users with shared fd tables */ + unlock(f); + return; + } if(flag){ if(c==0 || !(c->flag&flag)){ unlock(f); @@ -177,8 +182,6 @@ fdclose(int fd, int flag) f->maxfd = i; unlock(f); - if(c == 0) - panic("fdclose"); close(c); } diff --git a/ss/main.c b/ss/main.c index 9bfd1ed278c5a830909f9811645ed92b1eb11f58..037984abb832a98ceecb9f2a3702b1eb4a1200cb 100644 --- a/ss/main.c +++ b/ss/main.c @@ -141,6 +141,8 @@ init0(void) print("frame buffer id %lux %s\n", conf.monitor, fbstr); print("NKLUDGE %d\n", NKLUDGE); +mapdump(); + u->slash = (*devtab[0].attach)(0); u->dot = clone(u->slash, 0); diff --git a/ss/screen.c b/ss/screen.c index 8171ad867d6f3fd33a93af5a1ba2613f5c30bf23..2f96b11045c82921e67108829e3c2e16b7fbe4c5 100644 --- a/ss/screen.c +++ b/ss/screen.c @@ -27,13 +27,13 @@ void (*kprofp)(ulong); typedef struct DAC DAC; struct DAC { - uchar addr; /* DAC address register */ + uchar addr; /* address register */ uchar pad0[3]; - uchar color; /* DAC color palette */ + uchar color; /* color palette */ uchar pad1[3]; - uchar cntrl; /* DAC control register */ + uchar cntrl; /* control register */ uchar pad2[3]; - uchar ovrl; /* DAC overlay palette */ + uchar ovrl; /* overlay palette */ uchar pad3[3]; }*dac; @@ -90,6 +90,14 @@ screeninit(char *str) out.bwid = defont0.info[' '].width; dac = (DAC*)(kmappa(FRAMEBUF+s->dacaddr, PTENOCACHE|PTEIO)->va); if(gscreen.ldepth == 3){ + dac->addr = 4; + dac->cntrl = 0xFF; /* enable all planes */ + dac->addr = 5; + dac->cntrl = 0x00; /* no blinking */ + dac->addr = 6; + dac->cntrl = 0x43; /* enable palette ram and display */ + dac->addr = 7; + dac->cntrl = 0x00; /* no tests */ havecol = 0; if(havecol) { /* @@ -108,17 +116,6 @@ screeninit(char *str) setcolor(85, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA); setcolor(170, 0x55555555, 0x55555555, 0x55555555); } else { -/* - dac->addr = 4; - dac->cntrl = 0xFF; - dac->addr = 5; - dac->cntrl = 0x00; - dac->addr = 6; - dac->cntrl = 0x40; - dac->addr = 7; - dac->cntrl = 0x00; -*/ - dac->addr = 0; for(i=255; i>=0; i--){ dac->color = i; @@ -129,6 +126,18 @@ screeninit(char *str) } } +mapdump(void) +{ + dac->addr = 4; + print("cntrl4 %.2ux\n", dac->cntrl); + dac->addr = 5; + print("cntrl5 %.2ux\n", dac->cntrl); + dac->addr = 6; + print("cntrl6 %.2ux\n", dac->cntrl); + dac->addr = 7; + print("cntrl7 %.2ux\n", dac->cntrl); +} + void screenputnl(void) {