/COPYRIGHT 1969, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. /MULT /DESCRIPTION:THIS SUBROUTINE FORMS A 36-BIT SIGNED / PRODUCT FROM A 18-BIT SIGNED MULTIPLIER / AND MULTIPLICAND. NEGATIVE NUMBERS / ARE REPRESENTED IN 2'S COMPLEMENT NOTATION. / /CALLING SEQUENCE:LAC MULTIPLIER / JMS MULT / LAC MULTIPLICAND / NEXT INSTR  /RETURN IS MADE HERE / / /RESULTS:C(AC) = LOW-ORDER PROD,C(%MHIGH) = HIGH-ORDER PROD MULT 0 DZM %MHIGH /CLEAR BUILDER WORD. SNA  /TEST FOR ZERO IN MULTIPLIER. JMP %SMPZ /YES...EXIT. DAC %SMP1 XCT* MULT /FETCH MULTIPLICAND. DAC %SMP2 XOR %SMP1 /EXCLUSIVE OR TO GET SIGN DAC %MPSIN /OF PRODUCT AND SAVE IT. / /NOW TEST BOTH MULTIPLIER AND MULTIPLICAND. IF EITHER IS /NEGATIVE TAKE ITS 2'S COMPLEMENT / LAC %SMP1 /MULTIPLIER. SPA  /IS MULTIPLIER POSITIVE? JMS %SMNEG /NEGATE ROUTINE. DAC %SMP1 LAC %SMP2 /MULTIPLICAND SPA  /IS MULTIPLICAND POSITIVE? JMS %SMNEG /NO...NEGATE. DAC %SMP2 LAW -22 /LOOP FOR SERIES OF ADDS DAC %SMP3 CLL /PERFORM ADDITION LOOP. / %SMP4 LAC %SMP1 /MULTIPLIER. RAR  /SHIFT BIT 17 INTO LINK AND BUILD DAC %SMP1 /THE LOW-ORDER PRODUCT AT THE SAME LAC %MHIGH /TIME. IF THE LINK SZL!CLL  /IS ON FROM THE MULTIPLIER SHIFT TAD %SMP2 /ADD THE MULTIPLICAND TO ITSELF. RAR  /PUT THE RIGHTMOST BIT INTO THE LINK DAC %MHIGH ISZ %SMP3 /IS LOOP FINISHED? JMP %SMP4 /NO...LOOP AGAIN. LAC %SMP1 /PUT LAST BIT INTO LOW PROD. RAR DAC %SMP1 / /NOW THE HIGH ORDER PRODUCT IS IN %SMP5 AND /THE LOW ORDER PRODUCT IN IN THE (AC) AND %SMP1 / LAC %MPSIN /GET SIGN SMA  /SKIP IF PRODUCT POSITIVE JMP %SMPZ-1 LAC %SMP1 /NEGATE PRODUCT JMS %SMNEG DAC %SMP1 LAC %MHIGH SPL!CLL!CMA TAD (1 DAC %MHIGH LAC %SMP1 %SMPZ ISZ MULT /RETURN JMP* MULT %SMP1 0 %MHIGH 0 %MPSIN 0 %SMP2 0 %SMP3 0 %SMNEG 0 CMA!CLL TAD (1 JMP* %SMNEG .EOT *U*3