This page is a mirror of Tepples' nesdev forum mirror (URL TBD).
Last updated on Oct-18-2019 Download

Hardware 2A03 Programming

Hardware 2A03 Programming
by on (#42005)
I keep running into these really simple clarifications that I don't find answers for anywhere else. Someone here always seems to know what's up.

I'm trying to get a better handle on programming a 2A03 from scratch. I like to understand everything completely before I start changing things.

From what I understand, as soon as a 2A03 turns on or gets reset, it tries to grab a 16-bit memory location from address 0xFFFC. So I should see 0xFFFC followed by 0xFFFD on the address pins as it tries to read in the data.

If I keep the data pins held low during those two cycles, the 2A03 will read 0x0000 and try to jump to that location in the ROM. I should see 0x0000 on the address pins on the next clock cycle.

From that point the chip is ready for legitimate program code. As long as I don't trigger any interrupts or use jump/brk instructions, the value on the address pins should increase by one for each cycle.

Am I correct so far?

by on (#42007)
I am under the impression that the CPU will save something on the stack first when getting reseted (as it does when being interrupted by IRQ or NMI).

by on (#42009)
BCC, BCS, BEQ, BNE, BVC, BVS, RTS, RTI etc... will also change the program flow. As to the low-level stuff, I don't know.