EIS(3) Xinu Programmer's Manual EIS(3) NAME EIS - extended instruction set for the LSI-11/2 SYNOPSIS jsr pc,times2 jsr pc,over2 jsr pc,shift2 jsr pc,cshft2 DESCRIPTION Library _e_i_s._a contains assembly language routines to simu- late LSI-11 multiply, divide, arithmetic shift, and arith- metic shift combined instructions. Normally, an assembly language listing should be filtered through the programs _s_u_b_M_U_L, _s_u_b_D_I_V, _s_u_b_A_S_H, and _s_u_b_A_S_H_C to replace any of the extended instructions with the proper calling sequence. The resulting assembly language program must be loaded with this library, which contains the routines called. These routines do _n_o_t use the C calling conventions. The multiply routine is called by: mfps -(sp) / push psw mov A,-(sp) / push multiplier mov R,-(sp) / push multiplicand jsr pc,times2 / call mul simulation routine mov (sp)+,R / save low word of product mov (sp)+,R+1 / save high word of product mtps (sp)+ / put in new psw where the instruction being mimicked is "mul A,R" and R is an even-numbered register (if R is odd, change the "mov (sp)+,R" to "tst (sp)+" and the "mov (sp)+,R+1" to "mov (sp)+,R"). The division routine is called by: mfps -(sp) / push psw mov A,-(sp) / push divisor mov R,-(sp) / push high word of dividend mov R+1,-(sp) / push low word of dividend jsr pc,over2 / call div simulation routine mov (sp)+,R+1 / save remainder mov (sp)+,R / save quotient tst (sp)+ / reset stack pointer mtps (sp)+ / put in new psw where the instruction being mimicked is "div A,R". The arithmetic shift routine is called by: mfps -(sp) / get psw mov A,-(sp) / push shift count onto the stack mov r0,-(sp) / push number to be shifted onto the stack jsr pc,shift2 / call the simulation routine mov (sp)+,r0 / save the result tst (sp)+ / reset stack pointer Version 6b Printed 1/12/87 1 EIS(3) Xinu Programmer's Manual EIS(3) mtps (sp)+ / put in new psw where the instruction being mimicked is "ash A,R". The arithmetic shift combined routine is called by: mfps -(sp) / get psw mov A,-(sp) / push shift count onto the stack mov r0,-(sp) / push high word onto the stack mov r1,-(sp) / push low word onto the stack jsr pc,shift2 / call the simulation routine mov (sp)+,r1 / save the low word mov (sp)+,r0 / save the high word tst (sp)+ / reset stack pointer mtps (sp)+ / put in the new psw where the instruction being mimicked is "ashc A,R". FILES {Xinu-directory}/lib/libeis.a {Xinu-directory}/bin/subMUL {Xinu-directory}/bin/subDIV {Xinu-directory}/bin/subASH {Xinu-directory}/bin/subASHC SEE ALSO cc11(1), subEIS(1) DIAGNOSTICS The condition codes are correctly set by the above calling sequence. Version 6b Printed 1/12/87 2