Decimal Mode: Difference between revisions
(Inherited from 6502 category) |
(→References: lbid) |
||
Line 36: | Line 36: | ||
# Labiak, William. Appendix C, page 357 conversion table: https://archive.org/details/Programming_the_65816/page/n367 | # Labiak, William. Appendix C, page 357 conversion table: https://archive.org/details/Programming_the_65816/page/n367 | ||
# [[Eyes & Lichty]] page 262, https://archive.org/details/0893037893ProgrammingThe65816/page/262 | # [[Eyes & Lichty]] page 262, https://archive.org/details/0893037893ProgrammingThe65816/page/262 | ||
# https://archive.org/details/0893037893ProgrammingThe65816/page/44 | # lbid, page 44: https://archive.org/details/0893037893ProgrammingThe65816/page/44 | ||
# Pickens, John. NMOS 6502 Opcodes. http://www.6502.org/tutorials/6502opcodes.html#DFLAG | # Pickens, John. NMOS 6502 Opcodes. http://www.6502.org/tutorials/6502opcodes.html#DFLAG | ||
Revision as of 00:27, 5 August 2024
Decimal mode is one of the SNES CPU's processor flags. It is bit 3 of the status register. Toggling it on/off will only affect the instructions ADC and SBC. To toggle decimal mode on/off, use SED (Set decimal mode) and CLD (clear decimal mode)
On the 65c816, it is cleared on reset.[2] BRK clears it as well.
The negative, overflow, and zero flags are invalid in decimal mode.[3]
Processes
Let's just assume A is 8-bit and holds the value #$00. When one is doing ADC #$0C for example, the following steps will take place.
- Take the parameter after ADC
- Convert it to Decimal
- Add the conversion to A (execute ADC)
- If A turns out to have a hexadecimal number after the addition, convert it it to a decimal number again.
In this case, #$0C gets converted to 12. Since $0C equals to 12, doing ADC #$12 would give you the same result.
Same story with SBC, except SBC subtracts of course.
Example usage of ADC:
LDA #$09 ;A = $09 CLC ;Clear carry flag ADC #$02 ;A = $11
The decimal mode has been documented more thoroughly in Ersanio's ASM tutorial V2.1.
See Also
References
- Labiak, William. Appendix C, page 357 conversion table: https://archive.org/details/Programming_the_65816/page/n367
- Eyes & Lichty page 262, https://archive.org/details/0893037893ProgrammingThe65816/page/262
- lbid, page 44: https://archive.org/details/0893037893ProgrammingThe65816/page/44
- Pickens, John. NMOS 6502 Opcodes. http://www.6502.org/tutorials/6502opcodes.html#DFLAG