summary refs log tree commit diff
path: root/instructions/BRK.ts
diff options
context:
space:
mode:
Diffstat (limited to 'instructions/BRK.ts')
-rw-r--r--instructions/BRK.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/instructions/BRK.ts b/instructions/BRK.ts
new file mode 100644
index 0000000..99e4072
--- /dev/null
+++ b/instructions/BRK.ts
@@ -0,0 +1,22 @@
+import type The65c02 from "../65c02.ts";
+
+export default function (this: The65c02, mode: string) {
+    switch (mode) {
+        case 'implied':
+            this.io.interruptRequest.HI()
+            //TODO: push shit onto stack
+            this.io.data.set(this.programCounter.num() & 0x00FF)
+            this.io.address.set(0xFFFF)
+            this.write()
+            this.io.data.set(this.programCounter.num() & 0xFF00)
+            this.io.address.set(0xFFFE)
+            this.write()
+            this.BRK = true
+            this.programCounter.increment();
+            this.programCounter.increment();
+            break;
+    
+        default:
+            throw 'wha';
+    }
+}
\ No newline at end of file