\chapentry {Introduction}{1}{1}
\chapentry {Notation Conventions}{2}{2}
\secentry {Numbers}{2}{1}{2}
\secentry {Bit Fields}{2}{2}{2}
\chapentry {Overview of the K Architecture}{3}{3}
\secentry {History}{3}{1}{3}
\secentry {Board Set vs. Chip Set}{3}{2}{3}
\secentry {Processor Board}{3}{3}{3}
\secentry {Memory Board}{3}{4}{4}
\majorentry {Processor Board Hardware}{1}{5}
\chapentry {Timing}{4}{6}
\secentry {Clocks}{4}{1}{6}
\secentry {Pipeline}{4}{2}{7}
\subsecentry {Straight Line Execution}{4}{2}{1}{7}
\subsecentry {Unconditional Branches and Jumps}{4}{2}{2}{7}
\subsecentry {Conditional Branches and Jumps}{4}{2}{3}{7}
\subsecentry {Dispatches}{4}{2}{4}{8}
\subsecentry {Subroutine Calls}{4}{2}{5}{8}
\subsecentry {Subroutine Returns}{4}{2}{6}{8}
\secentry {Functional I/O}{4}{3}{8}
\subsecentry {Functional Destinations}{4}{3}{1}{9}
\subsubsecentry {VMA (with and without memory start)}{4}{3}{1}{1}{9}
\subsubsecentry {RAMs}{4}{3}{1}{2}{9}
\subsubsecentry {The OPEN-ACTIVE-RETURN Destination}{4}{3}{1}{3}{9}
\subsecentry {Functional Sources}{4}{3}{2}{10}
\chapentry {Instruction Set}{5}{11}
\secentry {Introduction}{5}{1}{11}
\secentry {Instruction Register (IR)}{5}{2}{11}
\secentry {Bit Fields}{5}{3}{11}
\subsecentry {Status Bit (Bit 63)}{5}{3}{1}{11}
\subsecentry {Instruction Trap Bit (Bit 62)}{5}{3}{2}{12}
\subsecentry {X-16 Bit (Bit 61)}{5}{3}{3}{12}
\subsecentry {Opcode (Bits 60 to 58)}{5}{3}{4}{12}
\subsecentry {Next PC (Bits 57 to 56)}{5}{3}{5}{12}
\subsecentry {Boxedness of ALU Output (Bits 55 to 54)}{5}{3}{6}{13}
\subsubsecentry {Register Destinations - Normal Mode}{5}{3}{6}{1}{13}
\subsubsecentry {Register Destinations - Reload Mode}{5}{3}{6}{2}{13}
\subsubsecentry {Memory System Destinations}{5}{3}{6}{3}{14}
\subsecentry {Data Type Check (Bits 53 to 51)}{5}{3}{7}{14}
\subsecentry {Call Hardware Operation (Bits 50 to 48)}{5}{3}{8}{15}
\subsecentry {Destination (Bits 47 to 41)}{5}{3}{9}{15}
\subsecentry {Global Frame Number (Bits 40 to 37)}{5}{3}{10}{15}
\subsecentry {Jump Condition (Bits 36 to 34)}{5}{3}{11}{16}
\subsecentry {Byte Width (Bits 33 to 32)}{5}{3}{12}{16}
\subsubsecentry {ALU Byte Instructions}{5}{3}{12}{1}{16}
\subsubsecentry {ALU Bit Instructions}{5}{3}{12}{2}{17}
\subsecentry {Right Source (Bits 31 to 25)}{5}{3}{13}{17}
\subsecentry {Left Source (Bits 24 to 19)}{5}{3}{14}{18}
\subsecentry {ALU Opcode (Bits 18 to 12, or 31 to 25)}{5}{3}{15}{18}
\subsecentry {ALU Shift Field (Bits 10 to 5)}{5}{3}{16}{18}
\subsecentry {ALU Mask Field (Bits 4 to 0)}{5}{3}{17}{18}
\subsecentry {Return Destination (Scattered)}{5}{3}{18}{18}
\secentry {Instructions}{5}{4}{19}
\subsecentry {ALU Instruction}{5}{4}{1}{19}
\subsecentry {32-Bit Immediate Instruction}{5}{4}{2}{19}
\subsecentry {Floating Point ALU Instruction}{5}{4}{3}{20}
\subsecentry {Floating Point Multiplier Instruction}{5}{4}{4}{20}
\subsecentry {Conditional Branch Instruction}{5}{4}{5}{20}
\subsecentry {Call-Z Instruction}{5}{4}{6}{21}
\subsecentry {Jump Instruction}{5}{4}{7}{21}
\subsecentry {Call Instruction}{5}{4}{8}{22}
\subsecentry {Call-Dispatch Instruction}{5}{4}{9}{22}
\chapentry {Program Counter}{6}{24}
\secentry {Introduction}{6}{1}{24}
\secentry {Relation of PC to Virtual Addresses}{6}{2}{24}
\secentry {Hardware}{6}{3}{24}
\subsecentry {PC Mux}{6}{3}{1}{24}
\subsecentry {PC Incrementer (PCINC)}{6}{3}{2}{25}
\subsecentry {Delayed PC Incrementer}{6}{3}{3}{25}
\subsecentry {Old PC Registers}{6}{3}{4}{25}
\chapentry {Register Memory}{7}{26}
\secentry {Register Frames}{7}{1}{26}
\secentry {Open, Active, and Return Frame Registers}{7}{2}{26}
\secentry {Global Registers}{7}{3}{26}
\secentry {Differences in Chip Set}{7}{4}{27}
\chapentry {Call Hardware}{8}{28}
\secentry {Organization}{8}{1}{28}
\secentry {Registers and Memory}{8}{2}{28}
\subsecentry {Call Stack}{8}{2}{1}{28}
\subsubsecentry {Call Stack Pointer (CSP)}{8}{2}{1}{1}{28}
\subsubsecentry {Call Stack Open RAM}{8}{2}{1}{2}{29}
\subsubsecentry {Call Stack Active RAM}{8}{2}{1}{3}{29}
\subsubsecentry {Call Stack Return Destination RAM}{8}{2}{1}{4}{29}
\subsubsecentry {Call Stack Global Frame Number RAM}{8}{2}{1}{5}{29}
\subsubsecentry {Call Stack Return PC RAM}{8}{2}{1}{6}{30}
\subsecentry {Free Frame Heap}{8}{2}{2}{30}
\subsubsecentry {Heap Pointer (HP)}{8}{2}{2}{1}{31}
\subsecentry {Open, Active, and Return}{8}{2}{3}{31}
\subsubsecentry {Open Frame Register (OF)}{8}{2}{3}{1}{31}
\subsubsecentry {Active Frame Register (AF)}{8}{2}{3}{2}{31}
\subsubsecentry {Return Frame Register (RF)}{8}{2}{3}{3}{32}
\secentry {Call Hardware Operations}{8}{3}{32}
\subsecentry {NO-OP}{8}{3}{1}{32}
\subsecentry {OPEN}{8}{3}{2}{33}
\subsecentry {CALL}{8}{3}{3}{33}
\subsecentry {OPEN-CALL}{8}{3}{4}{33}
\subsecentry {RETURN}{8}{3}{5}{34}
\subsubsecentry {RETURN (NORMAL)}{8}{3}{5}{1}{34}
\subsubsecentry {RETURN-NEW-OPEN}{8}{3}{5}{2}{35}
\subsubsecentry {RETURN-NEW-TAIL-OPEN}{8}{3}{5}{3}{35}
\subsecentry {TAIL-OPEN}{8}{3}{6}{35}
\subsecentry {TAIL-CALL}{8}{3}{7}{36}
\subsecentry {TAIL-OPEN-CALL}{8}{3}{8}{36}
\chapentry {Instruction Cache}{9}{37}
\secentry {Cache Hits}{9}{1}{37}
\secentry {Cache Misses}{9}{2}{37}
\chapentry {ALUs}{10}{39}
\chapentry {Datatype RAM}{11}{40}
\chapentry {ALU Opcodes}{12}{41}
\majorentry {Memory Board Hardware}{2}{45}
\chapentry {Memory Board}{13}{46}
\secentry {Overview}{13}{1}{46}
\secentry {Memory Control Register}{13}{2}{46}
\secentry {Memory Status Register}{13}{3}{47}
\secentry {Memory Board Hardware}{13}{4}{47}
\chapentry {Main Memory Access}{14}{49}
\secentry {Registers}{14}{1}{49}
\secentry {Reading a Word from Memory}{14}{2}{49}
\secentry {Writing a Word to Memory}{14}{3}{50}
\chapentry {Traps}{15}{52}
\secentry {The Commit Point}{15}{1}{52}
\secentry {Trap Entry}{15}{2}{52}
\secentry {Trap State Machine (TSM)}{15}{3}{52}
\secentry {Trap Entry Sequence}{15}{4}{53}
\secentry {Normal Trap Exits (Non-modifying)}{15}{5}{54}
\secentry {Modifying Trap Exits}{15}{6}{54}
\secentry {Diagnostic Trap Exits}{15}{7}{55}
\secentry {Trace Trapping}{15}{8}{56}
\secentry {Trap Vector Table}{15}{9}{56}
\chapentry {Transporter RAM}{16}{59}
\secentry {Introduction}{16}{1}{59}
\secentry {Input Lines}{16}{2}{59}
\secentry {Address Lines}{16}{3}{59}
\subsecentry {Boxedness (Bits 11 and 10)}{16}{3}{1}{59}
\subsecentry {Memory Cycle Type (Bits 9 and 8)}{16}{3}{2}{60}
\subsecentry {MCR Bits (Bits 7 and 6)}{16}{3}{3}{60}
\subsecentry {Data Type (Bits 5 to 0)}{16}{3}{4}{60}
\secentry {Output Lines}{16}{4}{60}
\subsecentry {Trappable Pointer}{16}{4}{1}{61}
\subsecentry {Trap if Old}{16}{4}{2}{61}
\subsecentry {Trap if New}{16}{4}{3}{61}
\subsecentry {Box Error}{16}{4}{4}{61}
\secentry {Trap Logic}{16}{5}{61}
\secentry {Contents of the Transporter RAM}{16}{6}{61}
\subsecentry {Read Operations}{16}{6}{1}{62}
\subsecentry {Write Operations}{16}{6}{2}{62}
\subsecentry {Patterns}{16}{6}{3}{63}
\secentry {Setting up the Transporter RAM}{16}{7}{63}
\chapentry {Garbage Collector (GC) RAM}{17}{65}
\chapentry {Spy Hardware}{18}{66}
\majorentry {Lisp Software}{3}{67}
\chapentry {Storage Conventions}{19}{68}
\secentry {Structure of Data Words}{19}{1}{68}
\secentry {Tables of Data Types}{19}{2}{68}
\subsecentry {Visible Data Types}{19}{2}{1}{69}
\subsecentry {Invisible Data Types}{19}{2}{2}{70}
\secentry {Numbers}{19}{3}{70}
\subsecentry {Fixnums}{19}{3}{1}{70}
\subsecentry {Bignums}{19}{3}{2}{70}
\subsecentry {Rationals}{19}{3}{3}{71}
\subsecentry {Complex}{19}{3}{4}{71}
\subsecentry {Short Floating Point}{19}{3}{5}{72}
\subsecentry {Single Precision Floating Point}{19}{3}{6}{72}
\subsecentry {Double Precision Floating Point}{19}{3}{7}{72}
\secentry {Unboxed Structures}{19}{4}{72}
\secentry {Characters}{19}{5}{73}
\secentry {Conses}{19}{6}{73}
\secentry {Arrays}{19}{7}{73}
\subsecentry {Array Element Types}{19}{7}{1}{74}
\subsubsecentry {ART-Q}{19}{7}{1}{1}{74}
\subsubsecentry {Bit array types}{19}{7}{1}{2}{75}
\subsubsecentry {Strings}{19}{7}{1}{3}{75}
\subsubsecentry {Floating point}{19}{7}{1}{4}{75}
\subsecentry {Format of Array Data}{19}{7}{2}{75}
\subsecentry {Simple Arrays}{19}{7}{3}{76}
\subsecentry {Hard Arrays}{19}{7}{4}{76}
\subsubsecentry {Extension Header Format}{19}{7}{4}{1}{77}
\subsubsecentry {Fill Pointer}{19}{7}{4}{2}{77}
\subsubsecentry {Displaced Arrays}{19}{7}{4}{3}{78}
\subsubsecentry {Leaders}{19}{7}{4}{4}{78}
\secentry {Compiled Functions}{19}{8}{78}
\subsecentry {Compiled Function Name}{19}{8}{1}{78}
\subsecentry {Compiled Function Entry Points}{19}{8}{2}{79}
\subsecentry {Compiled Function Local Refs}{19}{8}{3}{79}
\subsecentry {Compiled Function Refs}{19}{8}{4}{79}
\subsecentry {Compiled Function Length}{19}{8}{5}{79}
\subsecentry {Compiled Function Code Pointer}{19}{8}{6}{80}
\subsecentry {Instruction Back Pointer}{19}{8}{7}{80}
\subsecentry {Changes to Format}{19}{8}{8}{80}
\secentry {Symbols}{19}{9}{80}
\subsecentry {Symbol Header}{19}{9}{1}{81}
\subsecentry {Symbol Value}{19}{9}{2}{81}
\subsecentry {Symbol Function}{19}{9}{3}{81}
\subsubsecentry {Unbound}{19}{9}{3}{1}{81}
\subsubsecentry {Compiled Function}{19}{9}{3}{2}{81}
\subsubsecentry {Interpreted Function}{19}{9}{3}{3}{81}
\subsubsecentry {Compiled Macro}{19}{9}{3}{4}{81}
\subsubsecentry {Interpreted Macro}{19}{9}{3}{5}{82}
\subsecentry {Symbol Package}{19}{9}{4}{82}
\subsecentry {Symbol Property List}{19}{9}{5}{82}
\secentry {NIL}{19}{10}{82}
\secentry {T}{19}{11}{82}
\secentry {Defstruct Structure Instances}{19}{12}{82}
\secentry {Undocumented So Far}{19}{13}{83}
\chapentry {List of Registers and Signals}{Appendix \char 65}{84}
\chapentry {Functional I/O}{Appendix \char 66}{85}
\secentry {Table of Functional Sources}{\char 66}{1}{85}
\secentry {Table of Functional Destinations}{\char 66}{2}{86}
\secentry {Functional I/O Encodings}{\char 66}{3}{87}
\subsecentry {Processor Status Register}{\char 66}{3}{1}{87}
\subsecentry {Processor Control Register}{\char 66}{3}{2}{87}
\subsecentry {Memory Status Register}{\char 66}{3}{3}{87}
\subsecentry {Memory Control Register}{\char 66}{3}{4}{88}
\subsecentry {GC/Transporter RAM}{\char 66}{3}{5}{89}
\subsecentry {Trap Register}{\char 66}{3}{6}{89}
\subsecentry {Memory Map}{\char 66}{3}{7}{90}
\subsecentry {Call Hardware (Open/Active/Return)}{\char 66}{3}{8}{90}
\subsecentry {Call Hardware (Return PC, Return Destination)}{\char 66}{3}{9}{91}
\subsecentry {Call Hardware Pointers (CSP, HP)}{\char 66}{3}{10}{91}
