Fig. 20. Microinstruction formats for K(PCS).
Subroutine Call and Subroutine Return
Two remaining instructions exist for calling a subroutine and specifying the return from a subroutine. A subroutine call has the effect of transferring the control (i.e., setting the Program Counter) to the address of the first instruction of a subroutine. At the completion of the subroutine an instruction, return, is given which returns control back to the instruction following the original subroutine call. Subroutine return is encoded 376v8. Up to 16 subroutines can be called and the return addresses are placed in a subroutine stack which is attached to the Program Counter.
Note that there is an instruction, which corresponds to each of the hardwired operators: evoke, conditional (and unconditional) branch and subroutine call. Using these instruction formats, the instructions cannot be freely allocated to any memory locations, but instead, are fixed for sequential interpretation. There is no physical instruction for a ((serial merge); each occurrence corresponds to an address in the microprogram memory. Also, K(parallel merge) is impossible since there is but one Program Counter for purely sequential control flow.
THE STRUCTURE AND BEHAVIOR OF THE K(PCS)
Figures 21 and 22 show the structure and behavior of the K(PCS). Basically it has the following memories:
PC<8:0>\Program Counter - the instruction address pointer which selects the next instruction to be interpreted (selects 1 of 512 words)