SUB A, r8/d8 command to set flag C
hcoderLee opened this issue · 1 comments
hcoderLee commented
According to the GBCPUman: C - Set if no borrow.
In my opinion, the code should be:
self.reg.set_flag(Flag::C, a >= n);
when the value of register A is greater then the number n, a-n
is not borrowed. But in the project, the code is:
self.reg.set_flag(C, u16::from(a) < u16::from(n));
Which I couldn't understand.
mohanson commented
The substract in i8080/z80 is 'unintuitive' behaviour, See https://retrocomputing.stackexchange.com/questions/12558/the-behavior-of-the-auxiliary-carry-flag-in-subtraction-on-intel-8080