chore: Document instruction execution implementations
This commit is contained in:
		| @@ -522,6 +522,7 @@ impl Instruction { | |||||||
|                     cycles |                     cycles | ||||||
|                 } |                 } | ||||||
|                 MATHTarget::ImmediateByte(n) => { |                 MATHTarget::ImmediateByte(n) => { | ||||||
|  |                     // ADC A, n | Add immediate byte plus the carry flag to A | ||||||
|                     let mut flags: Flags = cpu.register(Register::Flag).into(); |                     let mut flags: Flags = cpu.register(Register::Flag).into(); | ||||||
|                     let value = n + (flags.c as u8); |                     let value = n + (flags.c as u8); | ||||||
|                     let sum = Self::add_u8s(cpu.register(Register::A), value, &mut flags); |                     let sum = Self::add_u8s(cpu.register(Register::A), value, &mut flags); | ||||||
| @@ -565,6 +566,7 @@ impl Instruction { | |||||||
|                     cycles |                     cycles | ||||||
|                 } |                 } | ||||||
|                 MATHTarget::ImmediateByte(n) => { |                 MATHTarget::ImmediateByte(n) => { | ||||||
|  |                     // SUB n | Subtract the immediate byte from register A, then store in A | ||||||
|                     let mut flags: Flags = cpu.register(Register::Flag).into(); |                     let mut flags: Flags = cpu.register(Register::Flag).into(); | ||||||
|                     let diff = Self::sub_u8s(cpu.register(Register::A), n, &mut flags); |                     let diff = Self::sub_u8s(cpu.register(Register::A), n, &mut flags); | ||||||
|  |  | ||||||
| @@ -609,6 +611,8 @@ impl Instruction { | |||||||
|                     cycles |                     cycles | ||||||
|                 } |                 } | ||||||
|                 MATHTarget::ImmediateByte(n) => { |                 MATHTarget::ImmediateByte(n) => { | ||||||
|  |                     // SBC A, n | Subtract the value from immediate byte from A, add the carry flag and then store in A | ||||||
|  |                     // FIXME: The Fixme aboe applies to this variant as well | ||||||
|                     let mut flags: Flags = cpu.register(Register::Flag).into(); |                     let mut flags: Flags = cpu.register(Register::Flag).into(); | ||||||
|                     let value = n + (flags.c as u8); |                     let value = n + (flags.c as u8); | ||||||
|                     let diff = Self::sub_u8s(cpu.register(Register::A), value, &mut flags); |                     let diff = Self::sub_u8s(cpu.register(Register::A), value, &mut flags); | ||||||
| @@ -657,6 +661,7 @@ impl Instruction { | |||||||
|                     cycles |                     cycles | ||||||
|                 } |                 } | ||||||
|                 MATHTarget::ImmediateByte(n) => { |                 MATHTarget::ImmediateByte(n) => { | ||||||
|  |                     // AND n | Bitwise AND immediate byte and register A, sotre in register A | ||||||
|                     let mut flags: Flags = cpu.register(Register::Flag).into(); |                     let mut flags: Flags = cpu.register(Register::Flag).into(); | ||||||
|                     let result = cpu.register(Register::A) & n; |                     let result = cpu.register(Register::A) & n; | ||||||
|  |  | ||||||
| @@ -709,6 +714,7 @@ impl Instruction { | |||||||
|                     cycles |                     cycles | ||||||
|                 } |                 } | ||||||
|                 MATHTarget::ImmediateByte(n) => { |                 MATHTarget::ImmediateByte(n) => { | ||||||
|  |                     // XOR n | Bitwise XOR immediate byte and register A, store in register A | ||||||
|                     let mut flags: Flags = cpu.register(Register::Flag).into(); |                     let mut flags: Flags = cpu.register(Register::Flag).into(); | ||||||
|                     let result = cpu.register(Register::A) ^ n; |                     let result = cpu.register(Register::A) ^ n; | ||||||
|  |  | ||||||
| @@ -761,6 +767,7 @@ impl Instruction { | |||||||
|                     cycles |                     cycles | ||||||
|                 } |                 } | ||||||
|                 MATHTarget::ImmediateByte(n) => { |                 MATHTarget::ImmediateByte(n) => { | ||||||
|  |                     // OR n | Bitwise OR on immediate byte n and register A, store in register A | ||||||
|                     let mut flags: Flags = cpu.register(Register::Flag).into(); |                     let mut flags: Flags = cpu.register(Register::Flag).into(); | ||||||
|                     let result = cpu.register(Register::A) | n; |                     let result = cpu.register(Register::A) | n; | ||||||
|  |  | ||||||
| @@ -806,6 +813,7 @@ impl Instruction { | |||||||
|                     cycles |                     cycles | ||||||
|                 } |                 } | ||||||
|                 MATHTarget::ImmediateByte(n) => { |                 MATHTarget::ImmediateByte(n) => { | ||||||
|  |                     // CP n | Same behaviour as SUB, except the result is not stored, | ||||||
|                     let mut flags: Flags = cpu.register(Register::Flag).into(); |                     let mut flags: Flags = cpu.register(Register::Flag).into(); | ||||||
|                     let _ = Self::sub_u8s(cpu.register(Register::A), n, &mut flags); |                     let _ = Self::sub_u8s(cpu.register(Register::A), n, &mut flags); | ||||||
|  |  | ||||||
| @@ -1050,6 +1058,7 @@ impl Instruction { | |||||||
|                 cpu.set_register_pair(RegisterPair::SP, sp_value); |                 cpu.set_register_pair(RegisterPair::SP, sp_value); | ||||||
|                 Cycles(16) |                 Cycles(16) | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             _ => unimplemented!(), |             _ => unimplemented!(), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user