summary refs log tree commit diff
path: root/65c02.ts
diff options
context:
space:
mode:
authorWlodekM <[email protected]>2025-03-31 19:48:02 +0300
committerWlodekM <[email protected]>2025-03-31 19:48:02 +0300
commit0f6d349f9b8d22b3f8d972c5ff19ffb276629bdb (patch)
tree9a6dab53476bcc8b24d2f9fd0653667674f177a1 /65c02.ts
parentcccb99226d3951fd9dfe1c4cf1c43126a1309d51 (diff)
bitfield
Diffstat (limited to '65c02.ts')
-rw-r--r--65c02.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/65c02.ts b/65c02.ts
new file mode 100644
index 0000000..a7660b4
--- /dev/null
+++ b/65c02.ts
@@ -0,0 +1,31 @@
+class BitField {
+    bits: boolean[];
+    flip(bit: number) {
+        this.bits[bit] = !this.bits[bit];
+    }
+    setBit(bit: number, value: boolean) {
+        this.bits[bit] = value;
+    }
+    set(value: number) {
+        for (let bit = 0; bit < this.bits.length; bit++) {
+            const mask: number = 1 << bit;
+            this.setBit(bit, (value & mask) != 0)
+        }
+    }
+    num(): number {
+        let number = 0;
+        for (let bit = 0; bit < this.bits.length; bit++) {
+            const mask: number = 1 << bit;
+            if (this.bits[bit])
+                number |= mask;
+        }
+        return number;
+    }
+    constructor (len: number) {
+        this.bits = new Array(len).fill(false);
+    }
+}
+
+export default class The65c02 {
+    data: BitField = new BitField(8)
+}
\ No newline at end of file