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