home *** CD-ROM | disk | FTP | other *** search
-
- *SUMOFP - SUMS OF PRODUCTS
- *
- * SUMOFP PRODUCTS-LIST
- *
- * PRODUCTS-LIST:=P-LIST,END-ITEM
- * P-LIST:=PRODUCT-ITEM,P-LIST|PRODUCT-ITEM
- * PRODUCT-ITEM:=(OPR,P1,P2,INCR)|##
- * P1:=MULTIPLIER
- * P2:=MULTIPLICAND (TO THE T REGISTER)
- * (IF P2 IS BLANK, USE THE LAST P2)
- * OPR:=+|-|++
- * + IS LOAD T AND ACCUMULATE
- * ++ IS LOAD T AND ACCUMULATE (WITH MOVE)
- * - IS LOAD T AND SUBTRACT FROM AC
- * ##:=CONTINUATION ITEM (NEXT STMT WILL CONTINUE)
-
- SUMOFP $MACRO A1,A2,A3,A4,A5,A6,A7,A8
- $VAR T,F
- $ASG '$$FSOP' TO F.S
- $ASG 0 TO F.SV
- $ASG '$$LSOP' TO T.S
- $IF T.SV=0
- ZAC
- $ENDIF
- $IF A1.L#=0
- $SOP :A1:
- $ENDIF
- $IF A2.L#=0
- $SOP :A2:
- $ENDIF
- $IF A3.L#=0
- $SOP :A3:
- $ENDIF
- $IF A4.L#=0
- $SOP :A4:
- $ENDIF
- $IF A5.L#=0
- $SOP :A5:
- $ENDIF
- $IF A6.L#=0
- $SOP :A6:
- $ENDIF
- $IF A7.L#=0
- $SOP :A7:
- $ENDIF
- $IF A8.L#=0
- $RSOP :A8:
- $ENDIF
- $IF F.SV=0
- $SOP +
- $ASG 0 TO T.SV
- $ENDIF
- $END
-
- $RSOP $MACRO A,B
- $SOP :A:
- $IF B.L#=0
- $RSOP :B:
- $ENDIF
- $END
-
- $SOP $MACRO AA,B,C
- $VAR T,A,F
- $ASG '$$FSOP' TO F.S
- $ASG '##' TO T.S
- $IF (AA.SV#=T.SV)&(F.SV=0)
- $ASG '$$LSOP' TO A.S
- $IF A.SV=0
- $IF C.SA&$UNDF
- CALL LTK$ LOAD
- REF LTK$
- DATA :C: :C:
- $ELSE
- LT :C: LOAD :C:
- $ENDIF
- $ELSE
- $IF C.L#=0
- $ASG '+' TO T.S
- $IF T.SV=A.SV
- $IF C.SA&$UNDF
- APAC ADD P TO AC
- CALL LTK$ LOAD
- REF LTK$
- DATA :C: :C:
- $ELSE
- LTA :C: LOAD :C: AND ADD P TO AC
- $ENDIF
- $ENDIF
- $ASG '++' TO T.S
- $IF T.SV=A.SV
- $IF C.SA&$UNDF
- APAC ADD P TO AC
- CALL LTK$ LOAD
- REF LTK$
- DATA :C: :C:
- $ELSE
- LTD :C: LOAD :C:, ADD P TO AC, :C:->:C:+1
- $ENDIF
- $ENDIF
- $ASG '-' TO T.S
- $IF T.SV=A.SV
- $IF C.SA&$UNDF
- SPAC SUB P FROM AC
- CALL LTK$ LOAD
- REF LTK$
- DATA :C: :C:
- $ELSE
- SPAC SUB P FROM AC
- LT :C: LOAD :C:
- $ENDIF
- $ENDIF
- $ELSE
- $ASG '+' TO T.S
- $IF T.SV=A.SV
- APAC ADD P TO AC
- $ENDIF
- $ASG '++' TO T.S
- $IF T.SV=A.SV
- APAC ADD P TO AC
- $ENDIF
- $ASG '-' TO T.S
- $IF T.SV=A.SV
- SPAC SUB P FROM AC
- $ENDIF
- $ENDIF
- $ENDIF
- $IF B.L#=0
- $IF B.SA&$UNDF
- MPYK :B: MLTPLY CONST :B:
- $ELSE
- MPY :B: MLTPLY :B:
- $ENDIF
- $ENDIF
- $ASG AA.SV TO A.SV
- $ELSE
- $ASG 1 TO F.SV
- $ENDIF
- $END