Step by step, huh?
You asked for it...
The first thing that happens when the CPU is powered on:
-Map bank $00 to CPU logic address $E000-FFFF, which is MPR 7 (Map register).
-Since the CPU is in reset state, the CPU jumps to the address in the RESET entry of the interrupt vector table. This is located at $FFFE-FFFF.
-The most common RESET vector jump address is $E000. In this little scenario, the CPU jumps to $E000.
-The first instruction is disable interrupts (SEI), usually followed by a NOP (no operation, but wait 2 cycles)
-Then map in the system work ram bank $F8 to $2000-3FFF, MPR 1. Ram needs to be here since the STACK is hard coded to address $2100-21FF and is needed for interrupt calls and subroutine calling, not to mention indirect addressing via a set of registers located in RAM known as ZeroPage.
-Once Ram is mapped, you initialize it to all 00's (don't want any left over garbage in there).
-next to do is initialize the SP register (stack pointer) to #$FF, which is the first entry slot
-Mapped in the hardware bank $FF to address $0000-1FFFF (MPR 0). This bank, you access the video processor,video encoder, sound registers, interrupt controller, and I/O
-you probably want to turn off the display now, but you don't have to do this right away.
-next you start mapping in other banks of program code/data into the rest of the address range (MPR slots).
-initialize the audio registers from the hardware bank, and then jump into initializing the game/program code
There is no BIOS on the system or checksum or such. The only difference between the US and JP consoles is that there is a pin that's held high on one system and low on another. US games check this pin (which is part of the I/O port) to test which system the code is booting up on. If the wrong system, then no go. Japanese software doesn't bother to check this pin and is why you can play JP hucards on a US system with a pin converter.