ASMB,R,L,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 "MXMNI" MAXIMUM AND MINIMUM WITH INTEGER ARGUMENTS
      NAM MXMNI,7 24998-1X109 REV.2001 750701 
      ENT AMAX0,MAX0,AMIN0,MIN0 
      EXT FLOAT 
      SPC 2 
* 
*     CALLING SEQUENCES: X1,X2,...XN ARE INTEGERS.
*     JSB AMAX0     JSB MAX0        JSB AMIN0     JSB MIN0
*     DEF *+(N+1)   DEF *+(N+1)      DEF *+(N+1)  DEF *+(N+1) 
*     DEF X1        DEF X1          DEF X1        DEF X1
*     .   .         .   .           .   .         .   . 
*     .   .         .   .           .   .         .   . 
*     .   .         .   .           .   .         .   . 
*     DEF XN        DEF XN          DEF XN        DEF XN
*     (REAL RESULT  (INTEGER RESULT  (REAL RESULT (INTEGER RESULT 
*      IN A AND B)  IN A)            IN A AND B)  IN A) 
      SPC 2 
AMAX0 NOP           REAL MAX OF INTEGER ARGS. 
      LDB *-1 
      CCA,CLE       SET INDICATORS
      JMP SETFG 
MAX0  NOP           INTEGER MAX OF INTEGER ARGS.
      LDB *-1 
      CCA,CCE       SET INDICATORS
      JMP SETFG 
AMIN0 NOP           REAL MIN OF INTEGER ARGS. 
      LDB *-1 
      CLA,CCE       SET INDICATORS
      JMP SETFG 
MIN0  NOP           INTEGER MIN OF INTEGER ARGS.
      LDB *-1 
      CLA,CLE       SET INDICATORS
SETFG STB CALAD     SET RETURN ADDRESS
      LDB SSA       OCTAL INSTRUCTION : SSA 
*                                    USED FOR AMIN0 AND MIN0
*                                    USED FOR AMAX0 AND MAX0
      STB SKFLG 
      SZA 
      ISZ SKFLG 
      SEZ,RSS 
      CMA 
      STA TPFLG     =-1FOR INTEGER,0 FOR REAL 
      LDA CALAD     = ADDRESS OF (DEF *+N+1) = *
      CMA,INA       = -*
      ADA CALAD,I   = -* + * + N + 1 = N + 1
      ADA =D-1      A = N 
      CMA,INA 
      STA N         = - N 
      INA 
      SSA           N < 2 ? 
      JMP ARGOK     NO. PROCESS LIST. 
      LDA ADZRO     YES.
      STA ANS       SET THE RESULT TO ZERO
      LDA CALAD 
      LDB 0,I 
      STB CALAD     SET RETURN ADDRESS
      JMP EXIT       AND EXIT 
ARGOK ISZ CALAD     CALAD POINTS TO X1
      LDA CALAD,I 
      STA ANS       ANS = ADDRESS OF CURRENT ANSWER 
      LDA 0,I       CONVERT ANS TO
      ADA LWEST     16 BIT POS. INTEGER 
      STA SAVE      AND SAVE. 
      ISZ CALAD 
      ISZ N         DONE ?
      JMP TESTM     NO. 
EXIT  LDA ANS,I     YES. STORE RESULT 
      ISZ TPFLG 
      JSB FLOAT     CONVERT TO REAL IF TPFLG = 0
      JMP CALAD,I 
CALAD NOP 
ZERO  DEC 0 
TESTM LDB CALAD,I   B = ADDRESS OF ARG. 
      LDA 1,I       A = ARG 
      ADA LWEST     MAKE POSITIVE 
      CLE           USE E-REG AS SIGN BIT 
      CMA,INA       NEGATE NEW NO.
      ADA SAVE      ADD TO OLD
      CME           MAKE E LOOK LIKE SIGN 
      ERA           ROTATE E INTO SIGN POSITION 
SKFLG NOP           SKIP FLAG FOR MIN OR MAX. 
      JMP ARGOK+6   CURRENT ARGUMENT OK.
      JMP ARGOK+1   NEW ANSWER
ANS   NOP           ADDRESS OF ANSWER 
N     NOP           NUMBER ARGUMENTS
TPFLG NOP           TYPE OF RESULT:0,-1=REAL,INT
ADZRO DEF ZERO      USED FOR ERROR CONDITION : N < 2
SSA   SSA 
SAVE  NOP 
LWEST OCT 100000
      END 
* 
                                                                                                  