From 5fb1b09c0ef1912b96a9aa24e5a4e769a42b1e48 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 26 May 2001 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2001-05-26 --- bitsy/devuda1341.c | 28 ++++++++++++++++------------ bitsy/screen.h | 1 + port/devaudio.c | 3 +++ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/bitsy/devuda1341.c b/bitsy/devuda1341.c index 7e4a305d4ad39f56a782d3469d02c824ff9832c6..ea00beed9e05a664a628ce361823b1d366316769 100644 --- a/bitsy/devuda1341.c +++ b/bitsy/devuda1341.c @@ -99,7 +99,7 @@ enum Fmono = 1, Fin = 2, - Fout = 4, + Fout = 4, Aclosed = 0, Aread, @@ -115,10 +115,10 @@ enum Nvol, Bufsize = 4* 1024, /* 46 ms each */ - Nbuf = 10, /* 1.5 seconds total */ + Nbuf = 10, /* 1.5 seconds total */ Speed = 44100, - Ncmd = 50, /* max volume command words */ + Ncmd = 50, /* max volume command words */ }; enum { @@ -137,13 +137,13 @@ enum { /* Format */ enum { - LSB16 = 1 << 1, - LSB18 = 2 << 1, - LSB20 = 3 << 1, - MSB = 4 << 1, - MSB16 = 5 << 1, - MSB18 = 6 << 1, - MSB20 = 7 << 1, + LSB16 = 1 << 1, + LSB18 = 2 << 1, + LSB20 = 3 << 1, + MSB = 4 << 1, + MSB16 = 5 << 1, + MSB18 = 6 << 1, + MSB20 = 7 << 1, }; Dirtab @@ -1064,7 +1064,7 @@ audioclose(Chan *c) static long audioread(Chan *c, void *v, long n, vlong off) { - int liv, riv, lov, rov; + int liv, riv, lov, rov, nsendb, nbufs; long m, n0; char buf[300]; int j; @@ -1126,8 +1126,12 @@ audioread(Chan *c, void *v, long n, vlong off) return readstr(offset, p, n, buf); case Qspeed: + s = &audio.o; + nbufs = s->filling - s->current; + if (nbufs < 0) nbufs = Nbuf + nbufs; + nsendb = (nbufs - 1) * bufsize + s->current->nbytes; buf[0] = '\0'; - snprint(buf, sizeof(buf), "speed %d\ndmasize %d\n", rate, bufsize); + snprint(buf, sizeof(buf), "speed %d\ndmasize %d\nsendbytes %d\n", rate, bufsize, nsendb); return readstr(offset, p, n, buf); case Qvolume: diff --git a/bitsy/screen.h b/bitsy/screen.h index 7ae57fadeb00da4e6423b0cc37f6f9ac1337e889..62dbce09d84c1773a3fbcaee80d2b7ccdcb0d512 100644 --- a/bitsy/screen.h +++ b/bitsy/screen.h @@ -9,3 +9,4 @@ struct Cursorinfo { extern void blankscreen(int); extern void flushmemscreen(Rectangle); +extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*); diff --git a/port/devaudio.c b/port/devaudio.c index ac9a336f9273a8bcbaad6df2055f5bff1332c7fb..687a8018b7d3a2aece30307bd2e04fc444ed7ce8 100644 --- a/port/devaudio.c +++ b/port/devaudio.c @@ -144,6 +144,7 @@ sbcmd(int val) s = inb(blaster.wstatus); if((s & 0x80) == 0) { outb(blaster.write, val); + delay(1); return 0; } } @@ -189,7 +190,9 @@ mxcmd(int addr, int val) { outb(blaster.mixaddr, addr); + delay(1); outb(blaster.mixdata, val); + delay(1); return 1; }