AudioPCI and GUS.
This commit is contained in:
@@ -306,7 +306,9 @@ es1371_reset(void *p)
|
|||||||
es1371_t *dev = (es1371_t *) p;
|
es1371_t *dev = (es1371_t *) p;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
#ifdef OLD_NMI_BEHAVIOR
|
||||||
nmi = 0;
|
nmi = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Interrupt/Chip Select Control Register, Address 00H
|
/* Interrupt/Chip Select Control Register, Address 00H
|
||||||
Addressable as byte, word, longword */
|
Addressable as byte, word, longword */
|
||||||
@@ -1240,7 +1242,7 @@ capture_event(es1371_t *dev, int type, int rw, uint16_t port)
|
|||||||
dev->legacy_ctrl &= ~LEGACY_EVENT_TYPE_RW;
|
dev->legacy_ctrl &= ~LEGACY_EVENT_TYPE_RW;
|
||||||
dev->legacy_ctrl |= ((port << LEGACY_EVENT_ADDR_SHIFT) & LEGACY_EVENT_ADDR_MASK);
|
dev->legacy_ctrl |= ((port << LEGACY_EVENT_ADDR_SHIFT) & LEGACY_EVENT_ADDR_MASK);
|
||||||
dev->legacy_ctrl &= ~LEGACY_INT;
|
dev->legacy_ctrl &= ~LEGACY_INT;
|
||||||
nmi = 1;
|
nmi_raise();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -452,11 +452,15 @@ writegus(uint16_t addr, uint8_t val, void *p)
|
|||||||
gus->irqstatus &= ~8;
|
gus->irqstatus &= ~8;
|
||||||
if (!(val & 0x20)) {
|
if (!(val & 0x20)) {
|
||||||
gus->ad_status &= ~0x18;
|
gus->ad_status &= ~0x18;
|
||||||
|
#ifdef OLD_NMI_BEHAVIOR
|
||||||
nmi = 0;
|
nmi = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (!(val & 0x02)) {
|
if (!(val & 0x02)) {
|
||||||
gus->ad_status &= ~0x01;
|
gus->ad_status &= ~0x01;
|
||||||
|
#ifdef OLD_NMI_BEHAVIOR
|
||||||
nmi = 0;
|
nmi = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
gus->tctrl = val;
|
gus->tctrl = val;
|
||||||
gus->sb_ctrl = val;
|
gus->sb_ctrl = val;
|
||||||
@@ -492,7 +496,7 @@ writegus(uint16_t addr, uint8_t val, void *p)
|
|||||||
gus->ad_status |= 0x01;
|
gus->ad_status |= 0x01;
|
||||||
if (gus->sb_ctrl & 0x02) {
|
if (gus->sb_ctrl & 0x02) {
|
||||||
if (gus->sb_nmi)
|
if (gus->sb_nmi)
|
||||||
nmi = 1;
|
nmi_raise();
|
||||||
else if (gus->irq != -1)
|
else if (gus->irq != -1)
|
||||||
picint(1 << gus->irq);
|
picint(1 << gus->irq);
|
||||||
}
|
}
|
||||||
@@ -568,7 +572,7 @@ writegus(uint16_t addr, uint8_t val, void *p)
|
|||||||
gus->ad_status |= 0x08;
|
gus->ad_status |= 0x08;
|
||||||
if (gus->sb_ctrl & 0x20) {
|
if (gus->sb_ctrl & 0x20) {
|
||||||
if (gus->sb_nmi)
|
if (gus->sb_nmi)
|
||||||
nmi = 1;
|
nmi_raise();
|
||||||
else if (gus->irq != -1)
|
else if (gus->irq != -1)
|
||||||
picint(1 << gus->irq);
|
picint(1 << gus->irq);
|
||||||
}
|
}
|
||||||
@@ -580,7 +584,7 @@ writegus(uint16_t addr, uint8_t val, void *p)
|
|||||||
gus->ad_status |= 0x10;
|
gus->ad_status |= 0x10;
|
||||||
if (gus->sb_ctrl & 0x20) {
|
if (gus->sb_ctrl & 0x20) {
|
||||||
if (gus->sb_nmi)
|
if (gus->sb_nmi)
|
||||||
nmi = 1;
|
nmi_raise();
|
||||||
else if (gus->irq != -1)
|
else if (gus->irq != -1)
|
||||||
picint(1 << gus->irq);
|
picint(1 << gus->irq);
|
||||||
}
|
}
|
||||||
@@ -832,7 +836,9 @@ readgus(uint16_t addr, void *p)
|
|||||||
|
|
||||||
case 0x209:
|
case 0x209:
|
||||||
gus->ad_status &= ~0x01;
|
gus->ad_status &= ~0x01;
|
||||||
|
#ifdef OLD_NMI_BEHAVIOR
|
||||||
nmi = 0;
|
nmi = 0;
|
||||||
|
#endif
|
||||||
/*FALLTHROUGH*/
|
/*FALLTHROUGH*/
|
||||||
case 0x389:
|
case 0x389:
|
||||||
val = gus->ad_data;
|
val = gus->ad_data;
|
||||||
|
Reference in New Issue
Block a user