From e5fe916aa4601b46bb347f71b1f486eb786d02da Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 11 Jan 1995 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1995-01-11 --- pc/devi82365.c | 36 +++++++++++++++++++++++++++++++----- pc/fns.h | 2 +- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/pc/devi82365.c b/pc/devi82365.c index 75ca1015b9bef47bf5e5b3d72dfbdec62c886645..3ac07f13dff3b2992645bb0bf1dba93e5ffdf38f 100644 --- a/pc/devi82365.c +++ b/pc/devi82365.c @@ -151,6 +151,7 @@ struct Slot uchar busy; /* cis info */ + uchar verstr[512]; /* version string */ uchar vpp1; uchar vpp2; uchar bit16; @@ -379,24 +380,24 @@ decrefp(Slot *pp) qunlock(pp->cp); } -int +char* pcmspecial(int dev) { Slot *pp; i82365reset(); if(dev >= nslot) - return -1; + return 0; pp = slot + dev; if(pp->special) - return -1; + return 0; increfp(pp); if(!pp->occupied){ decrefp(pp); - return -1; + return 0; } pp->special = 1; - return 0; + return pp->verstr; } void @@ -850,9 +851,11 @@ pcmio(int dev, ISAConf *isa) */ static void tcfig(Slot*, int); static void tentry(Slot*, int); +static void tvers1(Slot*, int); static void (*parse[256])(Slot*, int) = { +[0x15] tvers1, [0x1A] tcfig, [0x1B] tentry, }; @@ -1159,3 +1162,26 @@ tentry(Slot *pp, int ttype) } pp->configed++; } + +void +tvers1(Slot *pp, int ttype) +{ + uchar c, major, minor; + int i; + + USED(ttype); + if(readc(pp, &major) != 1) + return; + if(readc(pp, &minor) != 1) + return; + for(i = 0; i < sizeof(pp->verstr)-1; i++){ + if(readc(&c) != 1) + return; + if(c == 0) + c = '\n'; + if(c == 0xff) + break; + pp->verstr[i] = c; + } + pp->verstr[i] = 0; +} diff --git a/pc/fns.h b/pc/fns.h index 2e313d2c26e58d238d5f7b041ac807aacb5db497..4ecbc18b4c618df214e58617e36c1b763cfcf479 100644 --- a/pc/fns.h +++ b/pc/fns.h @@ -62,7 +62,7 @@ void outsl(int, void*, int); void pcicreset(void); int pcmio(int, ISAConf*); long pcmread(int, int, void*, long, ulong); -int pcmspecial(int); +char* pcmspecial(int); void pcmspecialclose(int); long pcmwrite(int, int, void*, long, ulong); void prflush(void);