--- ne2000.c.old Tue May 25 00:38:03 2004 +++ ne2000.c Tue May 25 00:51:37 2004 @@ -271,6 +271,25 @@ ne2000_update_irq(s); } } + /* this is a workaround for a bug in Minix 2.0.4net */ + else if (val & E8390_TRANS) { + printf("NE2000: I quote thy Bochs: tx start, dev in reset\n"); + /* this printf above is just to annoy the user endlessly. ** + ** feel free to remove it if you must. */ + s->isr &= ~ENISR_RESET; + /* test specific case: zero length transfert ** + ** not sure if it is needed */ + if ((val & (E8390_RREAD | E8390_RWRITE)) && + s->rcnt == 0) { + s->isr |= ENISR_RDC; + ne2000_update_irq(s); + } + qemu_send_packet(s->nd, s->mem + (s->tpsr << 8), s->tcnt); + /* signal end of transfert */ + s->tsr = ENTSR_PTX; + s->isr |= ENISR_TX; + ne2000_update_irq(s); + } } else { page = s->cmd >> 6; offset = addr | (page << 4);