Chapter 32 A microprogrammed implementation of EULER on IBM System/360 Model 30 389
Fig. 7. Microprogram for the operators AND, OR, and THEN.
do a function branch on the symbol and of a group of microprogram routines which perform the necessary operations for the program byte read. These routines also take care of dynamic type testing and stack pointer manipulations. The routines are equivalent to the routines described in the definition of the string language for EULER [Wirth and Weber, 1966a and 1966b].
Figure 7 shows, as an example, the microprogram to interpret the program string symbols and (internal representation X'52'1), or X'50' and then X'53'. These operators test if the highest entry in the stack is a value of type logical. The logical operators in EULER work in the FORTRAN sense, not in the ALGOL sense: if after the evaluation of the first operand the result is determined (false for and, true for or), then the second operand is not evaluated but skipped over. If an and operator finds the value false, then a branch occurs to the program address given in the two trailer bytes. If an and finds the value true, then it deletes this value from the stack and proceeds to the next symbol in the program string (to evaluate the second operand of and). Similarly if an or operator finds the value true, then a branch occurs to the program address given in the two trailer bytes. If an or finds the value false, then it deletes this value from the stack and proceeds to the next symbol in the program string. The then operator is a conditional branch code: it deletes the logical value from the stack. If this value was false, then a branch is taken to the program address given in the two trailer bytes. If this value was true, then the next symbol in the program string is executed.
The pointer to the symbol in the program string (the instruction counter) is located in the functionally associated pair of registers I and J in the Model 30. The pointer to the left-most byte of the highest entry in the stack (the stack pointer) is located in the two registers U and V in the Model 30.
In the following the individual steps in this microprogram are explained in more detail.
1
X 'nn' represents the hexadecimal number composed of the digits n (n=0, . . . , 9, A, . . . , F).