is both the count and a number shifted with its most significant one in the bit 15 position. Design an RTM system to normalize a word.
CONDITIONAL EXECUTE EXTENDED RTM
KEYWORDS: Extended RTM, conditional execution, if-then-else, IF, closed subroutine, open subroutine
PROBLEM STATEMENT
Design an Extended RTM/ERTM which behaves similarly to the Algol" if B then S-true else S-false", and Fortran "IF" statements. The control is to sense the condition of a Boolean input, B, and depending on whether the input is true or false, evoke either the S-true or S-false control parts. A block diagram of the desired ERTM is shown in Figure CE-1.
DESIGN CONSIDERATIONS
There are several possible structures for such an ERTM depending on the operations being initiated. These operations could be: a single register transfer operation as given in a K(evoke); a closed subroutine (subroutine) which would be called and produce a return as in a K(subroutine call); an open subroutine (macro) which would be called and produce an exit; and a transfer of control flow as in a K(branch).
SOLUTION 1
Before presenting a general solution, we illustrate the simple case in which the operation is a K(evoke), i.e. Kce(B=> evoke-if-true else evoke-if-false). The structure could be realized as shown in Figure CE-2. Namely, there are two K(evoke)'s, a K(branch; 2-way), and a K(serial merge).
SOLUTION 2
A general solution is required to handle all cases stated in the above problem. Assuming such a module is to be specially fabricated and the module is to be statically switched to handle the various cases, two separate switches for specifying the true and false operations are required. Figure CE-3 shows the structure of a Kce which has those capabilities.
The implementation consists of four basic parts: the Kbranch makes the decision (if part); the true part then carries out the appropriate call if the Boolean is true; the false (else) part carries out the call if the Boolean is false; the merge brings the true and false parts together at completion. The false part is similar to the true part, except that it has an additional switch position which allows the false part to be bypassed, permitting the statement: B=>operation-if- true. A three-position manual switch selects the type of output required for the true part (then case), giving a standard evoke operation (from the Kevoke), a subroutine call (from the Ksubroutine), or a call to a macro (direct). The three gangs. (or decks) of the three-position switch operate in parallel; that is, when the switch position is moved (shown in position 1) all decks are switched. The first gang selects the controlling input type; the second gang routes the output of the appropriate call control to the output (evoke-operation, subroutine call, or macro entry); and the third gang routes the exit signal back to the activate-next output when a macro is' used. The false (else) part fourth position is used as a bypass when only a true (then) part is used.
With these capabilities a K(conditional execute) can be used to activate any subprocess including the trivial subprocess consisting of a single K(evoke).
87