M pc/l.s => pc/l.s +1 -1
@@ 504,7 504,7 @@ TEXT setlabel(SB), $0
/*
* Interrupt/exception handling.
* Each entry in the vector table calls either _strayintr or _strayintrx depending
- * on whether an error code has beemn automatically pushed onto the stack
+ * on whether an error code has been automatically pushed onto the stack
* (_strayintrx) or not, in which case a dummy entry must be pushed before retrieving
* the trap type from the vector table entry and placing it on the stack as part
* of the Ureg structure.
M port/devaudio.c => port/devaudio.c +12 -0
@@ 879,6 879,18 @@ audioclose(Chan *c)
case Qaudio:
if(c->flag & COPEN) {
qlock(&audio);
+ if (audio.amode == Awrite) {
+ /* flush out last partial buffer */
+ Buf *b = audio.filling;
+ if (b) {
+ audio.filling = 0;
+ memset(b->virt, 0, Bufsize-audio.curcount);
+ swab(b->virt);
+ putbuf(&audio.full, b);
+ }
+ if (!audio.active && audio.full.first)
+ pokeaudio();
+ }
audio.amode = Aclosed;
if(waserror()){
qunlock(&audio);
M port/proc.c => port/proc.c +1 -1
@@ 266,7 266,7 @@ found:
p->state = Scheding;
if(p->mp != MACHP(m->machno))
- p->movetime = m->ticks + HZ/2;
+ p->movetime = m->ticks + HZ/10;
p->mp = MACHP(m->machno);
return p;
}
M port/taslock.c => port/taslock.c +3 -0
@@ 111,6 111,9 @@ iunlock(Lock *l)
{
ulong sr;
+ if(l->key == 0)
+ print("iunlock: not locked: pc %uX\n", getcallerpc(l));
+
sr = l->sr;
l->pc = 0;
l->key = 0;