Trailing-Edge
-
PDP-10 Archives
-
decuslib20-06
-
decus/20-153/dpsub.mac
There are 7 other files named dpsub.mac in the archive. Click here to see a list.
TITLE DPSUB FOR RPGLIB %1
SUBTTL DOUBLE-PRECISION INTEGER SUBTRACTION PETE WILSON/ALB/CAM/RBC
;USED TO BE
;COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MA.
;BUT CONVERTED TO RPGII VERSION, 24-NOV-75, BOB CURRIER
HISEG
;CALLING SEQUENCE:
; MOVE 16,<Z AC,OPERAND B>
; PUSHJ 17,SUB.12/SUB.21/SUB.22
;ENTER WITH FIRST OPERAND (OPERAND A) IN ACCUMULATOR SPECIFIED BY AC-FIELD OF PARAMETER
;SECOND OPERAND (OPERAND B) IS ACCESSED VIA AC 16 (WHERE THE UUO IS).
; IF DOUBLE-PRECISION:
; 0(16) GETS HIGH-ORDER WORD, 1(16) REFERENCES LOW HALF.
; IF SINGLE-PRECISION:
; 0(16) REFERENCES SINGLE WORD.
;EXIT WITH TWO-WORD RESULT IN AC'S SPECIFIED BY AC-FIELD OF PARAMETER
ENTRY SUB.12 ;SUB TWO WORDS IN MEMORY TO ONE WORD IN AC 1.
ENTRY SUB.21 ;SUB ONE WORD IN MEMORY TO TWO WORDS IN AC'S 0 AND 1.
ENTRY SUB.22 ;SUB TWO WORDS IN MEMORY TO TWO WORDS IN AC'S 0 AND 1.
RS=11 ;RESULT AC POINTER
TA=13 ;TEMPORARY
TB=14 ;TEMPORARY
TC=15 ;TEMPORARY
PA=16 ;POINTER TO OPERAND B.
PP=17 ;PUSH-DOWN POINTER.
SUB.21: SKIPGE 0(PA) ;SUB SINGLE TO DOUBLE, CHECK SIGN OF LOW B OPERAND.
TDZA TC,TC ;MAKE SIGN OF HIGH-ORDER B OPERAND AGREE
SETO TC, ; WITH LOW-ORDER SIGN.
SOJA PA,SUBXX ;THEN ADJUST POINTER AND ENTER MAIN LINE.
SUB.12: LDB RS,[POINT 4,PA,12] ;GET INPUT AC
MOVE TA,0(RS) ;GET OPERAND
MULI TA,1 ;CREATE DOUBLE-PRECISION
SETCM TC,0(PA) ;GET HI-PART OF OTHER OPERAND
JRST SUBXX1
SUB.22: SETCM TC,0(PA) ;SUB DOUBLE TO DOUBLE, GET HIGH-ORDER B WORD.
SUBXX: LDB RS,[POINT 4,PA,12] ;GET OPERAND AC
MOVE TA,0(RS) ;GET OPERAND
MOVE TB,1(RS)
SUBXX1: JFCL 17,.+1 ;CLEAR ARITHMETIC FLAGS.
PUSHJ PP,CHECK ;BE SURE SIGNS AGREE
SUB TB,1(PA) ;SUB LOW-ORDER WORDS.
JCRY1 CARRYS ;IF A CARRY OCCURRED, GO ADJUST HIGH-ORDER WORD.
SUBXX2: ADD TA,TC ;SUB TWO HIGH-ORDER WORDS.
PUSHJ PP,CHECK ;BE SURE SIGNS AGREE
MOVEM TA,0(RS) ;STASH HI-PART
MOVEM TB,1(RS) ;STASH LOW PART
POPJ PP, ;RETURN
CHECK: TLNE TA,1B18 ;MAKE SIGN OF LOW-ORDER PART
TLOA TB,1B18 ; AGREE WITH SIGN OF
TLZ TB,1B18 ; HIGH-ORDER RESULT.
POPJ PP,
;COME HERE ON CARRY GENERATED IN ADDITION OF LOW-ORDER WORDS.
CARRYS: AOJ TA, ;ADD CARRY TO HIGH-ORDER HALF.
PUSHJ PP,CHECK ;THEN GO CHECK FOR SIGN CHANGE IN HIGH HALF.
JRST SUBXX2 ;AND GO ADD HIGH-ORDER WORDS.
END