{File name: BootKernel.mc Last Edited: Jozef Furst, January 7, 1982 11:13 AM: loading KCtl with F000 Last Edited: Jim Frandeen, August 21, 1981 10:19 AM: changes for new assembler Last Edited: Jarvis, March 23, 1981 9:32 AM Description: Production Kernel, Author: Jarvis, Created: November 7, 1980 11:22 AM, Dennis Grundler: 2-Sep-84 15:42:50, add copyright notice. } { Copyright (C) 1980, 1981, 1982 by Xerox Corporation. All rights reserved.} SetTask[7]; StartAddress[KGo]; Set[IOPInMode, 1]; {IOP port input mode} Set[IOPAWMode, 3]; {IOP port alwaysWU mode} {the code at KGo runs only once can be overlaid, and therefore goes outside the kernel area} KGo: ClrIntErr, CANCELBR[$, 0F], RCnt ← 0F, c*, at[0FDE]; {reset the world} MCtl← 0, c*, at[0FDF]; KCtl← RCnt LRot12, c*, at[0FDD]; DCtl← 3, {this saves a couple of instructions in Phase0} c*, at[0FDC]; {display black, enable task} PCtl← 0, c*, at[0FDB]; EICtl← 0, c*, at[0FDA]; EOCtl← 0, c*, at[0FD9]; passTraps← 0, c*, at[0FD8]; Reserve[0, 0FD7]; { Phase0Protected (Protected.mc, IOPBoot.mc) resides in 0 - 00FF Phase0 (Phase0.mc, DiskBootDLion.mc, EtherBoot.mc) resides in 0100 - 0FDF The BootKernel resides in 0FE0 - 0FFF Part of the BootKernel that can be overlaid resides in 0FD8 - 0FDF } KEntry: uKSaveR← rK, c*; rK← RShift1 ~IOPStatus, c*; uIOPCtlSave← rK, c*; IOPCtl← IOPInMode, c*; {Enable IOP port} KRefresh: Refresh, c*; Refresh, c*; Refresh, c*; KLoop: Xbus← IOPStatus, XLDisp, c*; {IOPReq?, x.8 guaranteed 0} rK← rK+1, NibCarryBr, BRANCH[$, KCommand], c*; BRANCH[KLoop, KRefresh], c*; {here for kernel command from IOP} KCommand: Xbus← 0, XC2npcDisp, CANCELBR[$, 1], c*; KCommand1: BRANCH[$, KDisp, 1], c*; Xbus← 0, XC2npcDisp, GOTO[KCommand1], c*; KDisp: Noop, c1; Xbus← IOPIData, XDisp, c2; DISP2[KTable], c3; KTable: ExitKernel, c1, at[0C, 10, KTable]; rK← uKSaveR, c2; IOPCtl← uIOPCtlSave, GOTO[KEntry], c3; KRefCmd: Refresh, GOTO[KRefresh], {sneak in an extra refresh} c1, at[0D, 10, KTable]; KCmd2: GOTO[KCmd2], c*, at[0E, 10, KTable]; KCmd3: GOTO[KCmd3], c*, at[0F, 10, KTable];