Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void falling_edge(Core* core) {
- sample_interrupts(core);
- auto code = core.internal.code;
- auto time = core.internal.time;
- actions[code][time][1](core);
- }
- void sample_interrupts(Core* core) {
- if (core.internal.nmi_latch < core.external.nmi) {
- core.internal.nmi = 1;
- }
- core.internal.nmi_latch = core.external.nmi;
- core.internal.irq = core.external.irq & !core.internal.p.i;
- core.internal.res = core.external.res;
- core.internal.interrupt = ( core.internal.irq | core.internal.res | core.internal.nmi );
- }
- void resp_code(Core* core) {
- core.internal.code = core.external.data;
- core.internal.time = 0;
- if (core.internal.interrupt) {
- core.internal.code = 0; // mask instruction register to $00 (BRK)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement