Previous 199869 Revisions Next

r32252 Sunday 21st September, 2014 at 12:02:49 UTC by smf
8250 write protect 0x40 in line status register, this bit is used to track whether diserial is running and will call us back. mpz80 writes 0 to this bit and waits for it to be set again, it used to work because loopback was HLE'd. The 8250 datasheet says that transmission in loopback goes through the shift registers, the way the old code worked wouldn't test any send/receive functionality of the chip at all. It's unknown whether clearing this bit would cause the chip to start shifting, the datasheet says you shouldn't write to the register at all & it's reserved for testing the chip in the factory.
[src/emu/machine]ins8250.c

trunk/src/emu/machine/ins8250.c
r32251r32252
313313           bits 5 - 0, you could cause an interrupt if the appropriate IER bit
314314           is set.
315315         */
316         m_regs.lsr = data;
316         m_regs.lsr = (m_regs.lsr & 0x40) | (data & ~0x40);
317317
318318         tmp = 0;
319319         tmp |= ( m_regs.lsr & 0x01 ) ? COM_INT_PENDING_RECEIVED_DATA_AVAILABLE : 0;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team