aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/cpu.ts
diff options
context:
space:
mode:
authorUri Shaked2021-09-07 00:42:42 +0300
committerUri Shaked2021-09-07 00:42:42 +0300
commit5bc85ec07ac00013de4681cb5d268e4567709be0 (patch)
tree7f0dace897c49e1352f974e844c40a8130537b95 /src/cpu/cpu.ts
parent0.17.0 (diff)
downloadavr8js-5bc85ec07ac00013de4681cb5d268e4567709be0.tar.gz
avr8js-5bc85ec07ac00013de4681cb5d268e4567709be0.tar.bz2
avr8js-5bc85ec07ac00013de4681cb5d268e4567709be0.zip
fix(gpio): CBI/SBI handling in writes to PIN register #103
fix #103
Diffstat (limited to 'src/cpu/cpu.ts')
-rw-r--r--src/cpu/cpu.ts8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/cpu/cpu.ts b/src/cpu/cpu.ts
index 096d9eb..de5b294 100644
--- a/src/cpu/cpu.ts
+++ b/src/cpu/cpu.ts
@@ -34,10 +34,10 @@ export interface ICPU {
cycles: number;
readData(addr: u16): u8;
- writeData(addr: u16, value: u8): void;
+ writeData(addr: u16, value: u8, mask?: u8): void;
}
-export type CPUMemoryHook = (value: u8, oldValue: u8, addr: u16) => boolean | void;
+export type CPUMemoryHook = (value: u8, oldValue: u8, addr: u16, mask: u8) => boolean | void;
export interface CPUMemoryHooks {
[key: number]: CPUMemoryHook;
}
@@ -102,10 +102,10 @@ export class CPU implements ICPU {
return this.data[addr];
}
- writeData(addr: number, value: number) {
+ writeData(addr: number, value: number, mask = 0xff) {
const hook = this.writeHooks[addr];
if (hook) {
- if (hook(value, this.data[addr], addr)) {
+ if (hook(value, this.data[addr], addr, mask)) {
return;
}
}