Advertisement
Guest User

Untitled

a guest
Oct 17th, 2015
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.79 KB | None | 0 0
  1. void falling_edge(Core* core) {
  2.     sample_interrupts(core);
  3.  
  4.     auto code = core.internal.code;
  5.     auto time = core.internal.time;
  6.  
  7.     actions[code][time][1](core);
  8. }
  9.  
  10. void sample_interrupts(Core* core) {
  11.     if (core.internal.nmi_latch < core.external.nmi) {
  12.         core.internal.nmi = 1;
  13.     }
  14.  
  15.     core.internal.nmi_latch = core.external.nmi;
  16.     core.internal.irq = core.external.irq & !core.internal.p.i;
  17.     core.internal.res = core.external.res;
  18.  
  19.     core.internal.interrupt = ( core.internal.irq | core.internal.res | core.internal.nmi );
  20. }
  21.  
  22. void resp_code(Core* core) {
  23.     core.internal.code = core.external.data;
  24.     core.internal.time = 0;
  25.  
  26.     if (core.internal.interrupt) {
  27.         core.internal.code = 0; // mask instruction register to $00 (BRK)
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement