summary refs log tree commit diff
path: root/instructions/ROR.ts
blob: 60226c9c02b7f4836a48dbee31535a50a67f2e60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import type The65c02 from "../65c02.ts";

export default function (this: The65c02, mode: string) {
    if (mode == 'implicit') {
        const mem = this.regA.num();
        const result = (mem >> 1) | (this.carry ? 128 : 0);
        this.negative = (result & 256) != 0
        this.carry = (mem & 256) != 0
        this.regA.set(result & 0xFF);
        this.programCounter.increment()
    } else {
        const addr = this.getAddr(mode)
        this.io.address.set(addr);
        this.read()
        const mem = this.io.data.num();
        const result = (mem >> 1) | (this.carry ? 128 : 0);
        this.negative = (result & 256) != 0
        this.carry = (mem & 256) != 0
        this.io.data.set(result & 0xFF);
        this.write()
    }
}