| @@ -136,7 +136,7 @@ function ASL(cpu){ | |||
| if (cpu.__ophold === 0){ | |||
| cpu.__opv = (mode === 9) ? cpu.__AR : cpu.__opv; | |||
| cpu.C = BITM.val(cpu.__opv, 7); | |||
| cpu.__opv = cpu.__opv << 1; | |||
| cpu.__opv = (cpu.__opv << 1) & 0xFF; | |||
| cpu.__ophold = 1; | |||
| } else { | |||
| if (mode === 9){ | |||
| @@ -496,11 +496,51 @@ function REGISTER(cpu){ | |||
| } | |||
| function ROL(cpu){ | |||
| let pmode = [null, 0x26, 0x36, null, 0x2E, 0x3E, null, null, null, 0x2A].indexOf(cpu.__op); | |||
| if (cpu.__ophold === 1){pmode = -1;} | |||
| if (cpu.__ophold === 1 || ProcessOp(cpu, pmode) === true){ | |||
| if (cpu.__ophold === 0){ | |||
| let v = cpu.C; | |||
| cpu.__opv = (mode === 9) ? cpu.__AR : cpu.__opv; | |||
| cpu.C = BITM.val(cpu.__opv, 7); | |||
| cpu.__opv = ((cpu.__opv << 1) + v) & 0xFF; | |||
| cpu.__ophold = 1; | |||
| } else { | |||
| if (mode === 9){ | |||
| cpu.__AR = cpu.__opv; | |||
| } else { | |||
| cpu.__mem.byte = cpu.__opv; | |||
| } | |||
| cpu.Z = (this.__opv === 0); | |||
| cpu.N = BITM.val(this.__opv, 7); | |||
| cpu.__op = -1; | |||
| cpu.__ophold = 0; | |||
| } | |||
| } | |||
| } | |||
| function ROR(cpu){ | |||
| let pmode = [null, 0x66, 0x76, null, 0x6E, 0x7E, null, null, null, 0x6A].indexOf(cpu.__op); | |||
| if (cpu.__ophold === 1){pmode = -1;} | |||
| if (cpu.__ophold === 1 || ProcessOp(cpu, pmode) === true){ | |||
| if (cpu.__ophold === 0){ | |||
| let v = cpu.C; | |||
| cpu.__opv = (mode === 9) ? cpu.__AR : cpu.__opv; | |||
| cpu.C = BITM.val(cpu.__opv, 0); | |||
| cpu.__opv = ((cpu.__opv >> 1) + (v * 0x80)) & 0xFF; | |||
| cpu.__ophold = 1; | |||
| } else { | |||
| if (mode === 9){ | |||
| cpu.__AR = cpu.__opv; | |||
| } else { | |||
| cpu.__mem.byte = cpu.__opv; | |||
| } | |||
| cpu.Z = (this.__opv === 0); | |||
| cpu.N = BITM.val(this.__opv, 7); | |||
| cpu.__op = -1; | |||
| cpu.__ophold = 0; | |||
| } | |||
| } | |||
| } | |||
| function RTI(cpu){ | |||