This volume provides the technical mapping of the Flash Memory Controller registers within the GCC-4241N (MN103S). While real-time monitoring of a physical burn is restricted by the hardware's halt state during RAM-stub execution, understanding these registers is vital for the RAM Stub logic to verify sector erasures and program success before signaling a safe completion [cite: User Summary, Volume XIX: Flash Programming Algorithm].
The MN103S interfaces with the on-board flash memory through dedicated peripheral registers. These are mapped in the high I/O space [cite: User Summary].
| Register Name | Address (VMA) | Description |
|---|---|---|
FLASH_STATUS |
0x9000F000 |
Read-only register reporting the state of the internal flash state machine. |
FLASH_CMD |
0x9000F008 |
Command register used to issue Erase, Program, and Reset sequences. |
FLASH_ADDR |
0x9000F00C |
Sets the internal address counter for physical block operations. |
The FLASH_STATUS register (0x9000F000) provides granular feedback on the physical state of the flash cells [cite: User Summary].
| Bit | Mnemonic | Description / Hybrid Relevance |
|---|---|---|
| $7$ | RY/BY# |
Ready/Busy: 1 = Ready (Operation Complete); 0 = Busy [cite: Volume XIX: Flash Programming Algorithm]. |
| $5$ | EERR |
Erase Error: Set to 1 if a sector erase operation fails. Indicates physical cell degradation. |
| $4$ | PERR |
Program Error: Set to 1 if the current data write fails to verify. |
| $1$ | VPPERR |
Vpp Error: Set to 1 if the programming voltage (Vpp) is insufficient for a write. |
Because the Host cannot monitor the burn, the RAM Stub must perform internal validation. If a write fails, the stub must purposefully enter an infinite "Panic" loop (LED Flash) rather than signaling success to prevent booting a corrupted kernel [cite: Volume XIX: Flash Programming Algorithm].
; Check Flash Status for Program Error
; Location: Inside the RAM Stub burn loop
check_flash_status:
mov 0x9000F000, a0 ; Point to FLASH_STATUS
movbu (a0), d0 ; Load current status
; Test Bit 7 (Ready)
btst 7, d0
beq check_flash_status ; Wait if Busy (0)
; Test Bit 4 (Program Error)
btst 4, d0
bne flash_panic_loop ; If PERR=1, jump to failure handler
ret ; Success, continue to next chunk
If a drive is bricked, the developer can use Method B or Peek (if the bootloader is intact) to inspect 0x9000F000 to determine if the hardware physically failed during the last burn [cite: Project_Frankenstein_Vol_VIII_Peek_Poke.html].