ASMB,L,R,C * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAME: PART OF MATH LIBRARY * SOURCE: 24998-18XXX SEE NAM FOR LAST THREE DIGITS * RELOC: PART OF 24998-12001 * PGMR: BG & JTS * HED ".MXMN" - TRIPLE PRECISION MAX & MIN. NAM .MXMN,7 24998-1X059 REV.2001 781021 * ENT .MAX1,.MIN1 EXT .CFER,.TSUB,.4ZRO * B EQU 1 * * .MXMN TAKE THE MAX OR MIN OF A LIST OF TRIPLE PRECISION NUMBERS. * * CALLING SEQUENCE: * * JSB .MAX1 OR .MIN1 * DEF *+N+2 * DEF * DEF * . . * . . * DEF * * * IF N=0, ZERO IS RETURNED. IF N=1, THE ARGUMENT IS RETURNED. SPC 2 * INITIALIZE... SET MIN VS. MAX, CHECK # PARAMS * .MAX1 NOP LDA .MAX1 COPY ENTRY PT STA .MIN1 LDB SSBRS SET TEST TO "SSB,RSS" JMP MXMN1 .MIN1 NOP LDA .MIN1 SET TEST TO "SSB" LDB SSB MXMN1 STB TEST CMA -*-1 IN "DEF *+N+2" ADA .MIN1,I (-*-1)+(*+N+2) = N+1 LDB .MIN1,I SET RETURN ADDR STB .MAX1 ISZ .MIN1 LDB .MIN1,I SET RESULT ADDR STB RESLT ISZ .MIN1 CMA,INA -N-1 CCE,INA,SZA,RSS N=0 ? (E=1) JMP ZERO YES STA N LDA .MIN1,I SET CURRENT MIN/MAX = ARG 1 STA CMM LDA .MIN1 SET UP INDEX TO PARAM LIST RAL,ERA (SET SIGN TO INDIRECT) STA NEXT JMP MXMN5 SKP * LOOK THRU LIST FOR NEW MIN/MAX * MXMN2 ISZ NEXT ADDR NEXT ARG LDA CMM,I IF SIGNS DIFFER, DON'T SUBTRACT LDB NEXT,I XOR B SSA JMP MXMN4 DIFFER, USE (NEXT) AS COMPARE VALUE JSB .TSUB SAME, TAKE (THIS ARG) = (CURRENT MIN/MAX) DEF DIFF NEXT DEF *-* INDIRECT THRU PARAM LIST CMM DEF *-* ADDR CURRENT MIN/MAX SOS UNDERFLOW ? (OFL CAN'T HAPPEN) JMP MXMN3 NO. JSB .CFER YES. SCALE NUMBERS & DO AGAIN. DEF DIFF DEF NEXT,I JSB .CFER DEF TEMP DEF CMM,I LDA DIFF+3 ADA =D112 BUMP EXP BY 56. STA DIFF+3 LDA TEMP+3 ADA =D112 STA TEMP+3 JSB .TSUB DEF DIFF DEF DIFF DEF TEMP MXMN3 LDB DIFF TEST DIFFERENCE MXMN4 LDA NEXT ADDR POSSIBLE NEW MIN/MAX TEST ABS *-* MIN: SSB MAX: SSB,RSS STA CMM IF NEW MIN/MAX MXMN5 ISZ N MORE ? JMP MXMN2 YES. LDA CMM RESULT ADDR * * COPY RESULT * MXMN6 STA SRC JSB .CFER COPY RESULT RESLT DEF *-* TO RESULT SRC DEF *-* JMP .MAX1,I EXIT ZERO LDA ZEROP ZERO RESULT, COPY IT JMP MXMN6 SKP * LOCALS & CONSTANTS * N BSS 1 -(# PARAMS LEFT) - 1 DIFF BSS 4 DIFFERENCE OF COMPARED NUMBERS TEMP BSS 4 FOR USE ON UNDERFLOW. SSB SSB FOR PLUGGING MIN SSBRS SSB,RSS FOR PLUGGING MAX ZEROP DEF .4ZRO+0 END