| } | } | ||||
| function LDA(cpu){ | function LDA(cpu){ | ||||
| let pmode = [0xA9, 0xA5, 0xB5, null, 0xAD, 0xBD, 0xB9, 0xA1, 0xB1].indexOf(cpu.__op); | |||||
| if (ProcessOp(cpu, pmode) === true){ | |||||
| cpu.__op = -1; | |||||
| cpu.__AR = cpu.__opv; | |||||
| cpu.Z = (cpu.__AR === 0); | |||||
| cpu.N = (cpu.__AR >= 0x80); | |||||
| } | |||||
| } | } | ||||
| function LDX(cpu){ | function LDX(cpu){ | ||||
| } | } | ||||
| function ALU(cpu, m, b){ | function ALU(cpu, m, b){ | ||||
| let v = 0; | |||||
| switch(m){ | switch(m){ | ||||
| case 0: // Addition | case 0: // Addition | ||||
| cpu.__AR = (cpu.__AR + b) + ((cpu.C === 1) ? 1 : 0); | cpu.__AR = (cpu.__AR + b) + ((cpu.C === 1) ? 1 : 0); | ||||
| cpu.C = (v >= 256); | |||||
| //cpu.C = (this.__AR >= 256); | |||||
| break; | break; | ||||
| case 1: // Subtraction | case 1: // Subtraction | ||||
| cpu.__AR = (cpu.__AR - b) - ((cpu.C === 0) ? 1 : 0); | |||||
| cpu.C = (v >= 0); | |||||
| cpu.__AR = (cpu.__AR - b) - ((cpu.C === 0) ? 1 : 0); | |||||
| //cpu.C = (this.__AR >= 0); | |||||
| cpu.__AR += (cpu.__AR < 0) ? 256 : 0; | |||||
| break; | break; | ||||
| } | |||||
| cpu.__AR &= 0xFF; | |||||
| cpu.V = (BITM.isOn(cpu.__AR, 7) === BITM.isOn(b, 7)) && (BITM.val(v, 7) !== BITM.val(cpu.__AR, 7)); | |||||
| } | |||||
| cpu.V = (BITM.isOn(cpu.__AR, 7) === BITM.isOn(b, 7)) && (BITM.val(cpu.__AR, 7) !== BITM.val(cpu.__AR, 7)); | |||||
| cpu.C = (m === 0) ? (this.__AR >= 256) : (cpu.V === 0); | |||||
| cpu.N = BITM.val(cpu.__AR, 7); | cpu.N = BITM.val(cpu.__AR, 7); | ||||
| cpu.__AR &= 0xFF; | |||||
| cpu.Z = (cpu.__AR === 0); | cpu.Z = (cpu.__AR === 0); | ||||
| return cpu.__AR; | return cpu.__AR; | ||||
| } | } |