Added another Olivetti workaround to the AT keyboard controller code (the rewrite that works just fine even on the Olivetti M240 without any hacks, can't come soon enough!), fixes #1861.

This commit is contained in:
OBattler
2021-11-30 17:05:06 +01:00
parent 82c2522f42
commit eaf7032e63

View File

@@ -679,17 +679,21 @@ add_to_kbc_queue_front(atkbd_t *dev, uint8_t val, uint8_t channel, uint8_t stat_
if (channel == 2) { if (channel == 2) {
if (dev->mem[0] & 0x02) if (dev->mem[0] & 0x02)
picint(0x1000); picint(0x1000);
dev->last_irq = 0x1000; if (kbc_ven != KBC_VEN_OLIVETTI)
dev->last_irq = 0x1000;
} else { } else {
if (dev->mem[0] & 0x01) if (dev->mem[0] & 0x01)
picint(2); picint(2);
dev->last_irq = 2; if (kbc_ven != KBC_VEN_OLIVETTI)
dev->last_irq = 2;
} }
dev->out = val; dev->out = val;
if (channel == 2) if (channel == 2)
dev->status = (dev->status & ~STAT_IFULL) | (STAT_OFULL | STAT_MFULL) | stat_hi; dev->status = (dev->status & ~STAT_IFULL) | (STAT_OFULL | STAT_MFULL) | stat_hi;
else else
dev->status = (dev->status & ~(STAT_IFULL | STAT_MFULL)) | STAT_OFULL | stat_hi; dev->status = (dev->status & ~(STAT_IFULL | STAT_MFULL)) | STAT_OFULL | stat_hi;
if (kbc_ven == KBC_VEN_OLIVETTI)
dev->last_irq = 0x0000;
} }