*
* $Id: mmpy.inc,v 1.1.1.1 1996/02/15 17:48:05 mclareni Exp $
*
* $Log: mmpy.inc,v $
* Revision 1.1.1.1  1996/02/15 17:48:05  mclareni
* Kernlib
*
*
*
* mmpy.inc
*
*CALL     BASIC
*CALL     SCL
*CALL     SCA
*CALL     MPY
 MMNA     SET       1
 MMNS     SET       2
 MMPA     SET       3
 MMPS     SET       4
 MMPY     SET       5
 MAIN     MACRO     TYPE,FCN,M,N,IX,JX,JY,IZ,J
          SETYPE    TYPE
          IFEQ      FCN,MMNA,3
 SIGNX    MICRO     1,,*-*
 SIGNZ    MICRO     1,,*+*
 VERB     MICRO     1,,*MMNA*
          IFEQ      FCN,MMNS,3
 SIGNX    MICRO     1,,*-*
 SIGNZ    MICRO     1,,*-*
 VERB     MICRO     1,,*MMNS*
          IFEQ      FCN,MMPA,3
 SIGNX    MICRO     1,,*+*
 SIGNZ    MICRO     1,,*+*
 VERB     MICRO     1,,*MMPA*
          IFEQ      FCN,MMPS,3
 SIGNX    MICRO     1,,*+*
 SIGNZ    MICRO     1,,*-*
 VERB     MICRO     1,,*MMPS*
          IFEQ      FCN,MMPY,3
 SIGNX    MICRO     1,,*+*
 SIGNZ    MICRO     1,,*0*
 VERB     MICRO     1,,*MMPY*
 NAME     MICRO     1,,*"P"_"VERB"*
          HEADER    "NAME",SAVEA0
 TEMP2    BSS       2                   WORKING STORE
          EXIT      "NAME"              (M,N,X,X12,X21,Y,Y2,Z,Z2)
          PROLOG    M,N,IX,JX,JY,IZ,J
*                                       X1=(X), X2=(Y), A0=(Z)
          "P"MMPY   "SIGNX",M,N,IX,JX,JY,"SIGNZ",A0,IZ,TEMP2,J
          EPILOG
          ENDM
 PROLOG   MACRO     MM,NN,IX,JX,JY,IZ,ONE X1=(X),X2=(Y),A0=(Z)
          BSS       0                   X1=(M)    A1=((M))
 +        S_ONE     1         0                             ONE=1
          SA2       X1        1         X2=M      A2=(M)
          SA3       A1+ONE    2         X3=(N)    A3=((N))
 +        SX6       A0        3         X6=OLD A0
          SA4       A3+ONE    4 X6      X4=(X)    A4=((X))
          SA6       SAVEA0    5         SAVEA0=OLD A0
*                             6
*                             7
 +        SA5       A4+ONE    8 X2      X5=(X12)  A5=((X12))
          S_MM      X2        9 X3                          MM=M
          SA1       A5+ONE   10         X1=(X21)  A1=((X21))
          SA3       X3       11 X4      X3=N      A3=(N)
 +        SA2       A1+ONE   12         X2=(Y)    A2=((Y))
          BX0       X4       13         X0=(X)
*                            14 X0
          LE        MM,B0,EXIT  X5      IF M.LE.0 GO TO EXIT
 +        SA4       A2+ONE   16         X4=(Y2)   A4=((Y2))
*                            17 X1
*                            18 X3
          IX6       X5-X0    19 X2      X6=(X12)-(X)=JX
          SA5       A4+ONE   20 X6      X5=(Z)    A5=((Z))
          IX7       X1-X0    21         X7=(X21)-(X)=IX
 +        SA1       A5+ONE   22 X7      X1=(Z2)   A1=((Z2))
          S_JX      X6       23 X4                          JX=(X12)-(X)
          S_NN      X3       24                             NN=N
          IX6       X4-X2    25         X6=(Y2)-(Y)=JY
 +        S_IX      X7       26 X6                          IX=(X21)-(X)
*                            27 X5
          LE        NN,B0,EXIT          IF N.LE.0 GO TO EXIT
          S_JY      X6       29 X1                          JY=(Y2)-(Y)
 +        IX7       X1-X5    30         X7=(Z2)-(Z)=IZ
          BX1       X0       31 X7      X1=(X)
          S_IZ      X7       32 X1                          IZ=(Z2)-(Z)
          SA0       X5       33                   A0=(Z)
 PROLOG   ENDM