Arrange correct ROM image
POST
Initialise memory system
  ROM timings, width
Reset screen
Disable interrupts
Start timers
Size memory
  Set up table describing memory layout
  Set up video DMA
Time CPU







CONT / CONT_Break

  InitMEMC       (in: r1 = 0 -> Reset, 1 -> Break)
    Check for 7500 vs IOMD
    Program CPU, MEM and IO clocks
    Set ROM timings
    Set ROM width
    Set up VRAM refresh
    Set up peripheral timings
    Set up sound format
    Ensure MMU off and caches

  Set up VIDC

  Disable interrupts in IOC

  Start timer 0

  MemSize   (out: r0 = page size, r1 = memory size, r2 = MEMC CR)
    Set up RAM width
    Find memory - create a table of (addr,len) pairs (in first memory found)
    Find VRAM - if none take from first block
    Start filling in page zero (in first block)
    Set up video DMA registers
    Allocate L1PT, and some L2PT, and soft CAM
    Turn on MMU and caches

  TimeCPU   (out: r0 = peak RAM speed in kHz)

  Put in extra pages: cursor, system heap

  Start keyboard scanning

  If POR or FX 200
      Clear memory

  Check processor type

  Fill in processor vectors

  Read CMOS

  Fill in SWI dispatch table

  Wait for keyboard (up to two seconds)

  If (POR AND R/T/Del/Copy)
    Reset CMOS
    Goto Hard Reset

  IF (POR or CannotReset or SysHeapCorrupt or CAM map nonsense or Ctrl pressed)
    Clear the CAM
  
    Set it up
  
    InitDynamicAreas
  
    Create system dynamic areas
  
    InitVectors
  
    Clear SWI hash table
  
    Clear POR bit
  Else
    Do the soft reset stuff

  Re-initialise kernel

  If (hard reset)
    Init variables
    Initialise modules
    PostInit

  Set mode

  Print "RISC OS"

  Service_Reset

  Shut all files

  Beep if hard reset

  If numpad key down 
    reconfigure monitor, change mode
    print "monitor type reconfigured"

  Check shift
  
  Do boot

  Else check *

  Else enter language