diff --git a/chip-z80/nodenames.js b/chip-z80/nodenames.js index 2dfdbc8..7981949 100644 --- a/chip-z80/nodenames.js +++ b/chip-z80/nodenames.js @@ -21,7 +21,11 @@ ab15: 20, _reset: 21, _wait: 22, _int: 23, +int: 23, +_irq: 23, +irq: 23, _nmi: 24, +nmi: 24, _busrq: 25, _m1: 26, _rd: 27, diff --git a/chip-z80/support.js b/chip-z80/support.js index b5a2666..f8859dd 100644 --- a/chip-z80/support.js +++ b/chip-z80/support.js @@ -110,7 +110,14 @@ var state = 0; var last_rd_done = 1; function handleBusRead(){ - if(!isNodeHigh(nodenames['_rd'])){ + if(!isNodeHigh(nodenames['_m1']) && !isNodeHigh(nodenames['_iorq'])) { + // Interrupt acknownledge cycle, force 0xFF onto the bus + // In IM0 this is seen as RST 0x38 + // In IM1 this is ignored + // In IM2 this is used as the low byte of the vector + // TODO: ideally this "vector" would be a configurable parameter + writeDataBus(0xff); + } else if(!isNodeHigh(nodenames['_rd'])){ var a = readAddressBus(); var d = eval(readTriggers[a]); if(d == undefined)