{"abstract":"rti restores the saved flag into pc and the saved pc into I.","category":"Instruction set emulation","checks":7,"contract":"Input [pc, i, steps] with steps [irq, nmi, instr]. Each step: an NMI 0->1 edge (the line starts low) is taken first; otherwise a high IRQ line is taken when the I flag is 0; otherwise the instruction runs (nop/cli/sei advance pc by 1, rti pops I then pc if the stack is non-empty). Taking an interrupt pushes pc then I, sets I=1 and jumps to 0x9000 (NMI) or 0x8000 (IRQ). The NMI edge detector samples the line every step. Return [event, pc, I] per step.","evaluation_group":"w2-instruction-set-emulation-interrupt-entry","failed_approach":"Popping from the bottom of the stack breaks nested interrupts.","family":"w2-instruction-set-emulation-interrupt-entry-return-pop-order","id":"FA-89586","implementations":{"attempt":{"sha256":"11cfa9d6daf05fc0cc4d59e4af7e2b530e06c2bd8e6dea9d32d451cf492e7796","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    pc, i, steps = args\n    stack = []\n    nprev = 0\n    log = []\n    for irq, nmi, ins in steps:\n        if nprev == 0 and nmi == 1:\n            stack += [pc, i]\n            i = 1\n            pc = 0x9000\n            ev = 'nmi'\n        elif irq == 1 and i == 0:\n            stack += [pc, i]\n            i = 1\n            pc = 0x8000\n            ev = 'irq'\n        elif ins == 'rti' and stack:\n            i = stack.pop(0)\n            pc = stack.pop(0)\n            ev = 'rti'\n        else:\n            if ins == 'cli': i = 0\n            elif ins == 'sei': i = 1\n            pc += 1\n            ev = ins\n        nprev = nmi\n        log.append([ev, pc, i])\n    return log\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [769, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 769, 0], ['rti', 770, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [770, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 770, 0], ['rti', 771, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [771, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 771, 0], ['rti', 772, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0], ['nop', 262, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [772, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 772, 0], ['rti', 773, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0], ['nop', 1284, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['nop', 36869, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0], ['nop', 262, 0], ['nop', 263, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [773, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 773, 0], ['rti', 774, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0], ['nop', 1284, 0], ['nop', 1285, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['nop', 36869, 1], ['nop', 36870, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"5c0d94910e7ac511a1ccfc7152623c759b692f9663cf39cec271ec1cb1590323","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    pc, i, steps = args\n    stack = []\n    nprev = 0\n    log = []\n    for irq, nmi, ins in steps:\n        if nprev == 0 and nmi == 1:\n            stack += [pc, i]\n            i = 1\n            pc = 0x9000\n            ev = 'nmi'\n        elif irq == 1 and i == 0:\n            stack += [pc, i]\n            i = 1\n            pc = 0x8000\n            ev = 'irq'\n        elif ins == 'rti' and stack:\n            pc = stack.pop()\n            i = stack.pop()\n            ev = 'rti'\n        else:\n            if ins == 'cli': i = 0\n            elif ins == 'sei': i = 1\n            pc += 1\n            ev = ins\n        nprev = nmi\n        log.append([ev, pc, i])\n    return log\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [769, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 769, 0], ['rti', 770, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [770, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 770, 0], ['rti', 771, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [771, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 771, 0], ['rti', 772, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0], ['nop', 262, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [772, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 772, 0], ['rti', 773, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0], ['nop', 1284, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['nop', 36869, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0], ['nop', 262, 0], ['nop', 263, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [773, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 773, 0], ['rti', 774, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0], ['nop', 1284, 0], ['nop', 1285, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['nop', 36869, 1], ['nop', 36870, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"1c63fbf08b3079cca219c8a221e3b6cdbb348c954b4258b62c21afa1c9460be5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    pc, i, steps = args\n    stack = []\n    nprev = 0\n    log = []\n    for irq, nmi, ins in steps:\n        if nprev == 0 and nmi == 1:\n            stack += [pc, i]\n            i = 1\n            pc = 0x9000\n            ev = 'nmi'\n        elif irq == 1 and i == 0:\n            stack += [pc, i]\n            i = 1\n            pc = 0x8000\n            ev = 'irq'\n        elif ins == 'rti' and stack:\n            i = stack.pop()\n            pc = stack.pop()\n            ev = 'rti'\n        else:\n            if ins == 'cli': i = 0\n            elif ins == 'sei': i = 1\n            pc += 1\n            ev = ins\n        nprev = nmi\n        log.append([ev, pc, i])\n    return log\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [769, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 769, 0], ['rti', 770, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [770, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 770, 0], ['rti', 771, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [771, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 771, 0], ['rti', 772, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0], ['nop', 262, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [772, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 772, 0], ['rti', 773, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0], ['nop', 1284, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['nop', 36869, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])], [('masked irq waits for cli', [256, 1, [[1, 0, 'nop'], [1, 0, 'cli'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['nop', 257, 1], ['cli', 258, 0], ['irq', 32768, 1], ['rti', 258, 0], ['nop', 259, 0], ['nop', 260, 0], ['nop', 261, 0], ['nop', 262, 0], ['nop', 263, 0]]), ('nmi is edge triggered', [512, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'nop'], [0, 1, 'nop']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 512, 1], ['nop', 513, 1], ['nmi', 36864, 1]]), ('nmi wins over irq', [773, 0, [[1, 1, 'nop'], [1, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['rti', 773, 0], ['rti', 774, 0]]), ('irq handler masks nested irq', [1024, 0, [[1, 0, 'nop'], [1, 0, 'nop'], [1, 0, 'nop'], [0, 0, 'rti'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nop', 32770, 1], ['rti', 1024, 0], ['nop', 1025, 0]]), ('nmi nested inside irq', [1280, 0, [[1, 0, 'nop'], [0, 0, 'nop'], [0, 1, 'nop'], [0, 1, 'rti'], [0, 0, 'rti'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop'], [0, 0, 'nop']]], [['irq', 32768, 1], ['nop', 32769, 1], ['nmi', 36864, 1], ['rti', 32769, 1], ['rti', 1280, 0], ['nop', 1281, 0], ['nop', 1282, 0], ['nop', 1283, 0], ['nop', 1284, 0], ['nop', 1285, 0]]), ('nmi held across entry', [1536, 1, [[0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 1, 'nop'], [0, 0, 'rti']]], [['nmi', 36864, 1], ['nop', 36865, 1], ['nop', 36866, 1], ['nop', 36867, 1], ['nop', 36868, 1], ['nop', 36869, 1], ['nop', 36870, 1], ['rti', 1536, 1]]), ('sei then irq', [1792, 0, [[0, 0, 'sei'], [1, 0, 'nop'], [0, 0, 'cli'], [1, 0, 'nop']]], [['sei', 1793, 1], ['nop', 1794, 1], ['cli', 1795, 0], ['irq', 32768, 1]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model of one emulator rule; the instruction semantics are a stipulated contract inspired by common ISAs and are not a claim of cycle-exact or architectural conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-instruction-set-emulation-interrupt-entry-return-pop-order","generated_at":"2026-09-29T14:51:18.740051+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Interrupt controllers in CPU emulators must separate edge- and level-triggered sources, masking and nesting to reproduce handler timing.","repair":"Pop I first, then pc, since pc was pushed first.","root_cause":"The pops do not mirror the push order.","sha256":"0f27aa38880799b8686fdfbf70af59e8c69864f82a437f345bbf589a7ca15cf8","title":"Return from interrupt pops pc before flags · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.581,"exit_code":1,"observations":[{"actual":[["nop",257,1],["cli",258,0],["irq",32768,1],["rti",0,258],["nop",1,258]],"check":"masked irq waits for cli","expected":[["nop",257,1],["cli",258,0],["irq",32768,1],["rti",258,0],["nop",259,0]],"passed":false},{"actual":[["nmi",36864,1],["nop",36865,1],["rti",1,512],["nop",2,512],["nmi",36864,1]],"check":"nmi is edge triggered","expected":[["nmi",36864,1],["nop",36865,1],["rti",512,1],["nop",513,1],["nmi",36864,1]],"passed":false},{"actual":[["nmi",36864,1],["nop",36865,1],["rti",0,769],["rti",1,769]],"check":"nmi wins over irq","expected":[["nmi",36864,1],["nop",36865,1],["rti",769,0],["rti",770,0]],"passed":false},{"actual":[["irq",32768,1],["nop",32769,1],["nop",32770,1],["rti",0,1024],["nop",1,1024]],"check":"irq handler masks nested irq","expected":[["irq",32768,1],["nop",32769,1],["nop",32770,1],["rti",1024,0],["nop",1025,0]],"passed":false},{"actual":[["irq",32768,1],["nop",32769,1],["nmi",36864,1],["rti",0,1280],["rti",1,32769],["nop",2,32769]],"check":"nmi nested inside irq","expected":[["irq",32768,1],["nop",32769,1],["nmi",36864,1],["rti",32769,1],["rti",1280,0],["nop",1281,0]],"passed":false},{"actual":[["nmi",36864,1],["nop",36865,1],["nop",36866,1],["rti",1,1536]],"check":"nmi held across entry","expected":[["nmi",36864,1],["nop",36865,1],["nop",36866,1],["rti",1536,1]],"passed":false},{"actual":[["sei",1793,1],["nop",1794,1],["cli",1795,0],["irq",32768,1]],"check":"sei then irq","expected":[["sei",1793,1],["nop",1794,1],["cli",1795,0],["irq",32768,1]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"masked irq waits for cli\", \"actual\": [[\"nop\", 257, 1], [\"cli\", 258, 0], [\"irq\", 32768, 1], [\"rti\", 0, 258], [\"nop\", 1, 258]], \"expected\": [[\"nop\", 257, 1], [\"cli\", 258, 0], [\"irq\", 32768, 1], [\"rti\", 258, 0], [\"nop\", 259, 0]], \"passed\": false}, {\"check\": \"nmi is edge triggered\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 1, 512], [\"nop\", 2, 512], [\"nmi\", 36864, 1]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 512, 1], [\"nop\", 513, 1], [\"nmi\", 36864, 1]], \"passed\": false}, {\"check\": \"nmi wins over irq\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 0, 769], [\"rti\", 1, 769]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 769, 0], [\"rti\", 770, 0]], \"passed\": false}, {\"check\": \"irq handler masks nested irq\", \"actual\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nop\", 32770, 1], [\"rti\", 0, 1024], [\"nop\", 1, 1024]], \"expected\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nop\", 32770, 1], [\"rti\", 1024, 0], [\"nop\", 1025, 0]], \"passed\": false}, {\"check\": \"nmi nested inside irq\", \"actual\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nmi\", 36864, 1], [\"rti\", 0, 1280], [\"rti\", 1, 32769], [\"nop\", 2, 32769]], \"expected\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nmi\", 36864, 1], [\"rti\", 32769, 1], [\"rti\", 1280, 0], [\"nop\", 1281, 0]], \"passed\": false}, {\"check\": \"nmi held across entry\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"nop\", 36866, 1], [\"rti\", 1, 1536]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"nop\", 36866, 1], [\"rti\", 1536, 1]], \"passed\": false}, {\"check\": \"sei then irq\", \"actual\": [[\"sei\", 1793, 1], [\"nop\", 1794, 1], [\"cli\", 1795, 0], [\"irq\", 32768, 1]], \"expected\": [[\"sei\", 1793, 1], [\"nop\", 1794, 1], [\"cli\", 1795, 0], [\"irq\", 32768, 1]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.21,"exit_code":1,"observations":[{"actual":[["nop",257,1],["cli",258,0],["irq",32768,1],["rti",0,258],["nop",1,258]],"check":"masked irq waits for cli","expected":[["nop",257,1],["cli",258,0],["irq",32768,1],["rti",258,0],["nop",259,0]],"passed":false},{"actual":[["nmi",36864,1],["nop",36865,1],["rti",1,512],["nop",2,512],["nmi",36864,1]],"check":"nmi is edge triggered","expected":[["nmi",36864,1],["nop",36865,1],["rti",512,1],["nop",513,1],["nmi",36864,1]],"passed":false},{"actual":[["nmi",36864,1],["nop",36865,1],["rti",0,769],["rti",1,769]],"check":"nmi wins over irq","expected":[["nmi",36864,1],["nop",36865,1],["rti",769,0],["rti",770,0]],"passed":false},{"actual":[["irq",32768,1],["nop",32769,1],["nop",32770,1],["rti",0,1024],["nop",1,1024]],"check":"irq handler masks nested irq","expected":[["irq",32768,1],["nop",32769,1],["nop",32770,1],["rti",1024,0],["nop",1025,0]],"passed":false},{"actual":[["irq",32768,1],["nop",32769,1],["nmi",36864,1],["rti",1,32769],["rti",0,1280],["nop",1,1280]],"check":"nmi nested inside irq","expected":[["irq",32768,1],["nop",32769,1],["nmi",36864,1],["rti",32769,1],["rti",1280,0],["nop",1281,0]],"passed":false},{"actual":[["nmi",36864,1],["nop",36865,1],["nop",36866,1],["rti",1,1536]],"check":"nmi held across entry","expected":[["nmi",36864,1],["nop",36865,1],["nop",36866,1],["rti",1536,1]],"passed":false},{"actual":[["sei",1793,1],["nop",1794,1],["cli",1795,0],["irq",32768,1]],"check":"sei then irq","expected":[["sei",1793,1],["nop",1794,1],["cli",1795,0],["irq",32768,1]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"masked irq waits for cli\", \"actual\": [[\"nop\", 257, 1], [\"cli\", 258, 0], [\"irq\", 32768, 1], [\"rti\", 0, 258], [\"nop\", 1, 258]], \"expected\": [[\"nop\", 257, 1], [\"cli\", 258, 0], [\"irq\", 32768, 1], [\"rti\", 258, 0], [\"nop\", 259, 0]], \"passed\": false}, {\"check\": \"nmi is edge triggered\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 1, 512], [\"nop\", 2, 512], [\"nmi\", 36864, 1]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 512, 1], [\"nop\", 513, 1], [\"nmi\", 36864, 1]], \"passed\": false}, {\"check\": \"nmi wins over irq\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 0, 769], [\"rti\", 1, 769]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 769, 0], [\"rti\", 770, 0]], \"passed\": false}, {\"check\": \"irq handler masks nested irq\", \"actual\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nop\", 32770, 1], [\"rti\", 0, 1024], [\"nop\", 1, 1024]], \"expected\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nop\", 32770, 1], [\"rti\", 1024, 0], [\"nop\", 1025, 0]], \"passed\": false}, {\"check\": \"nmi nested inside irq\", \"actual\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nmi\", 36864, 1], [\"rti\", 1, 32769], [\"rti\", 0, 1280], [\"nop\", 1, 1280]], \"expected\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nmi\", 36864, 1], [\"rti\", 32769, 1], [\"rti\", 1280, 0], [\"nop\", 1281, 0]], \"passed\": false}, {\"check\": \"nmi held across entry\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"nop\", 36866, 1], [\"rti\", 1, 1536]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"nop\", 36866, 1], [\"rti\", 1536, 1]], \"passed\": false}, {\"check\": \"sei then irq\", \"actual\": [[\"sei\", 1793, 1], [\"nop\", 1794, 1], [\"cli\", 1795, 0], [\"irq\", 32768, 1]], \"expected\": [[\"sei\", 1793, 1], [\"nop\", 1794, 1], [\"cli\", 1795, 0], [\"irq\", 32768, 1]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.78,"exit_code":0,"observations":[{"actual":[["nop",257,1],["cli",258,0],["irq",32768,1],["rti",258,0],["nop",259,0]],"check":"masked irq waits for cli","expected":[["nop",257,1],["cli",258,0],["irq",32768,1],["rti",258,0],["nop",259,0]],"passed":true},{"actual":[["nmi",36864,1],["nop",36865,1],["rti",512,1],["nop",513,1],["nmi",36864,1]],"check":"nmi is edge triggered","expected":[["nmi",36864,1],["nop",36865,1],["rti",512,1],["nop",513,1],["nmi",36864,1]],"passed":true},{"actual":[["nmi",36864,1],["nop",36865,1],["rti",769,0],["rti",770,0]],"check":"nmi wins over irq","expected":[["nmi",36864,1],["nop",36865,1],["rti",769,0],["rti",770,0]],"passed":true},{"actual":[["irq",32768,1],["nop",32769,1],["nop",32770,1],["rti",1024,0],["nop",1025,0]],"check":"irq handler masks nested irq","expected":[["irq",32768,1],["nop",32769,1],["nop",32770,1],["rti",1024,0],["nop",1025,0]],"passed":true},{"actual":[["irq",32768,1],["nop",32769,1],["nmi",36864,1],["rti",32769,1],["rti",1280,0],["nop",1281,0]],"check":"nmi nested inside irq","expected":[["irq",32768,1],["nop",32769,1],["nmi",36864,1],["rti",32769,1],["rti",1280,0],["nop",1281,0]],"passed":true},{"actual":[["nmi",36864,1],["nop",36865,1],["nop",36866,1],["rti",1536,1]],"check":"nmi held across entry","expected":[["nmi",36864,1],["nop",36865,1],["nop",36866,1],["rti",1536,1]],"passed":true},{"actual":[["sei",1793,1],["nop",1794,1],["cli",1795,0],["irq",32768,1]],"check":"sei then irq","expected":[["sei",1793,1],["nop",1794,1],["cli",1795,0],["irq",32768,1]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"masked irq waits for cli\", \"actual\": [[\"nop\", 257, 1], [\"cli\", 258, 0], [\"irq\", 32768, 1], [\"rti\", 258, 0], [\"nop\", 259, 0]], \"expected\": [[\"nop\", 257, 1], [\"cli\", 258, 0], [\"irq\", 32768, 1], [\"rti\", 258, 0], [\"nop\", 259, 0]], \"passed\": true}, {\"check\": \"nmi is edge triggered\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 512, 1], [\"nop\", 513, 1], [\"nmi\", 36864, 1]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 512, 1], [\"nop\", 513, 1], [\"nmi\", 36864, 1]], \"passed\": true}, {\"check\": \"nmi wins over irq\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 769, 0], [\"rti\", 770, 0]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"rti\", 769, 0], [\"rti\", 770, 0]], \"passed\": true}, {\"check\": \"irq handler masks nested irq\", \"actual\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nop\", 32770, 1], [\"rti\", 1024, 0], [\"nop\", 1025, 0]], \"expected\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nop\", 32770, 1], [\"rti\", 1024, 0], [\"nop\", 1025, 0]], \"passed\": true}, {\"check\": \"nmi nested inside irq\", \"actual\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nmi\", 36864, 1], [\"rti\", 32769, 1], [\"rti\", 1280, 0], [\"nop\", 1281, 0]], \"expected\": [[\"irq\", 32768, 1], [\"nop\", 32769, 1], [\"nmi\", 36864, 1], [\"rti\", 32769, 1], [\"rti\", 1280, 0], [\"nop\", 1281, 0]], \"passed\": true}, {\"check\": \"nmi held across entry\", \"actual\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"nop\", 36866, 1], [\"rti\", 1536, 1]], \"expected\": [[\"nmi\", 36864, 1], [\"nop\", 36865, 1], [\"nop\", 36866, 1], [\"rti\", 1536, 1]], \"passed\": true}, {\"check\": \"sei then irq\", \"actual\": [[\"sei\", 1793, 1], [\"nop\", 1794, 1], [\"cli\", 1795, 0], [\"irq\", 32768, 1]], \"expected\": [[\"sei\", 1793, 1], [\"nop\", 1794, 1], [\"cli\", 1795, 0], [\"irq\", 32768, 1]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}