aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/instruction.ts
diff options
context:
space:
mode:
authorUri Shaked2020-09-02 13:29:54 +0300
committerUri Shaked2020-09-02 13:29:54 +0300
commit0d2405caf3b4c65a2d2b8a9555b1d929a9e44229 (patch)
tree9700e85beb642865457b3d65a60b1e5e4bc7df26 /src/cpu/instruction.ts
parent0.11.0 (diff)
downloadavr8js-0d2405caf3b4c65a2d2b8a9555b1d929a9e44229.tar.gz
avr8js-0d2405caf3b4c65a2d2b8a9555b1d929a9e44229.tar.bz2
avr8js-0d2405caf3b4c65a2d2b8a9555b1d929a9e44229.zip
fix(instruction): EICALL is broken
close #59
Diffstat (limited to '')
-rw-r--r--src/cpu/instruction.ts3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/cpu/instruction.ts b/src/cpu/instruction.ts
index 51bc3ab..e82b811 100644
--- a/src/cpu/instruction.ts
+++ b/src/cpu/instruction.ts
@@ -224,7 +224,8 @@ export function avrInstruction(cpu: ICPU) {
const eind = cpu.data[0x3c];
cpu.data[sp] = retAddr & 255;
cpu.data[sp - 1] = (retAddr >> 8) & 255;
- cpu.dataView.setUint16(93, sp - 2, true);
+ cpu.data[sp - 2] = (retAddr >> 16) & 255;
+ cpu.dataView.setUint16(93, sp - 3, true);
cpu.pc = ((eind << 16) | cpu.dataView.getUint16(30, true)) - 1;
cpu.cycles += 3;
} else if (opcode === 0x9419) {