/** Initializes the cpu. */ public void boot() { stackSegment.setStartAddress(Definitions.STACK_START_ADDRESS); workingStackSegment.setStartAddress(Definitions.STACK_START_ADDRESS); localSegment.setEnabledRange( Definitions.STACK_START_ADDRESS, Definitions.STACK_END_ADDRESS, true); argSegment.setEnabledRange( Definitions.STACK_START_ADDRESS, Definitions.STACK_END_ADDRESS, true); thisSegment.setEnabledRange(Definitions.HEAP_START_ADDRESS, Definitions.HEAP_END_ADDRESS, true); thatSegment.setEnabledRange( Definitions.HEAP_START_ADDRESS, Definitions.SCREEN_END_ADDRESS, true); staticSegment.setStartAddress(Definitions.VAR_START_ADDRESS); staticSegment.setEnabledRange( Definitions.VAR_START_ADDRESS, Definitions.VAR_END_ADDRESS - 1, true); setSP(Definitions.STACK_START_ADDRESS); stackFrames.clear(); if (builtInFunctionsRunner != null) { builtInFunctionsRunner.killAllRunningBuiltInFunctions(); } }