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
* 
      NAM .PRAM,7 24998-1X061 REV.2001 750701 
      ENT .PRAM 
*         ******************************************************
*         * .PRAM - PROCESS AND SET PARAMETER VALUES AND/OR    *
*         *        ADDRESSES IN THE PROCEDURE PARAMETER LINKG. *
*         *                                                    *
*         *   LINKAGE:                                         *
*         *        JSB .PRAM                                   *
*         *        (CODE WORDS)                                *
*         *        1ST PARAMETER ADDRESS OR VALUE(REAL=2WORDS) *
*         *        2ND PARAMETER ADDRESS OR VALUE(REAL=2WORDS) *
*         *        :       :         :          :              *
*         *        LAST PARAMETER ADDRESS OR VALUE             *
*         *                                                    *
*         *        CODE WORDS:                                 *
*         *                                                    *
*         *        1ST: UPPER 6 BITS CONTAINS NO. OF PARAMTRS. *
*         *             LOWER 10 BITS CONTAIN FLAGS FOR EACH OF*
*         *             1ST 5 PARAMETERS IN PAIRS OF BITS.     *
*         *              UPPER=1, PARAMETER IS BY VALUE.       *
*         *              LOWER=1, PARAMETER VALUE IS REAL.     *
*         *                                                    *
*         *             IF UPPER BIT=0, THE LINKAGE CONTAINS   *
*         *              THE PARAMETER ADDRESS(IGNORE LOWER).  *
*         *                                                    *
*         *              IF UPPER BIT=1,THE LINKAGE CONTAINS   *
*         *              THE PARAMETER VALUE.                  *
*         *                                                    *
*         *             IF BOTH BITS=1, THE VALUE IS REAL AND  *
*         *              THE VALUE WILL NEED 2 WORDS IN THE    *
*         *              LINKAGE.                              *
*         *                                                    *
*         *        SUBSEQUENT CODE WORDS:                      *
*         *             CONTAIN 8 PAIRS OF BITS FOR 8 PARAMETRS*
*         *                                                    *
*         *        MAXIMUM OF 7 CODE WORDS(52 PARAMETERS).     *
*         ******************************************************
.PRAM NOP           ENTRY TO .PRAM HERE 
      LDA *-1 PICK UP ENTRY ADDRESS + 1 
      STA ADDRA     SET LOC'N OF 1ST CODE WORD
      INA 
      STA ADDRL     SET LOC'N OF 1ST PARAMETER ADDRES 
*                   OR VALUE(TO BE BUMPED ACCORDING 
*                   TO NO. OF PARAMETERS, +1 FOR 5
*                   PARAMETERS, 1 NORE FOR EACH SUB-
*                   SEQUENT MULTIPLE OF 8.).
      ADA M3        GET ADDRESSOF PARAM, COUNT
      LDB A,I       GET PROCEDURE'S RETURN
      ADB BIT15       ADDRESS AND MAKE IT 
      STB A,I            INDIRECT.
      ELB,CLE,ERB   NOW REMOVE THE INDIRECT BIT.
      INB 
      STB ADDRP     SET PICKUP LOC'N OF ACTUAL PAR- 
*                   AMETER ADDRESSES(IN .PROC LINKG)
*         * GET NUMBER OF PARAMETERS FROM 1ST CODE WORD. *
      LDA ADDRA,I   GET 1ST CODE WORD FROM LINKAGE
      ALF,RAL 
      RAL           ROTATE PARAM COUNT TO LOWER 6 BIT 
      AND M77       NOW A REG. = PARAMETER COUNT
      SZA,RSS       ARE THERE ANY PARAMETERS? 
      JMP ADDRL,I   NO, EXIT THE .PRAM ROUTINE HERE.. 
      STA CNTR      SAVE PARAMETER COUNT
      ADA M6        START SKIP OF ADDRL PAST ALL CODE 
      SSA             WORDS..  IS IT PAST THEM? 
      JMP PRM10     YES, GO TO PARAMETER MOVE/SETUP 
      ISZ ADDRL     NO, BUMP ADDRL BY 1 
      ADA M8        REDUCE A BY 8(1 SET OF CODE WORDS 
      JMP *-4       GO BACK TO TEST AGAIN.. 
*         * PLACE  INITIAL CODE WORD INTO A REG. AND POSITION IT *
*         * INITIALIZE CODE COUNTER(CODES) AND PARAMETER COUN-   *
*         *  TER(CNTR).                                          *
PRM10 LDA ADDRA,I   GET INITIAL CODE WORD 
      ALF,RAL       ROTATE CODE PAIRS TO INITIAL PON
      LDB M5
      STB CODES     SET CODE COUNTER FOR 5 PAIRS
      LDB CNTR      GET PARAMETER COUNTER 
      CMB,INB 
      STB CNTR      COMPLEMENT IT FOR COUNTING
*         * PROCESS PARAMETER ADDRESS OR VALUE ACCORDING TO CODE WRD
PRM15 LDB ADDRP,I   PICK UP PARAMETER ADDRESS 
      RBL,CLE,SLB,ERB   IF IT'S DIRET, SKIP NEXT INST 
      LDB B,I       IF IT'S INDIRECT GET THE DIRECT 
*         *    PARAMETER ADDRESS NOW IN B REG.  * 
      RAL,RAL       REPOSITION CODE PAIR
      SLA,RSS       IS CURRENT PARAMETER A VALUE? 
      JMP PRM25     NO, IT'S AN ADDRESS...
      STB T         ADDRESS OF VALUE TO T 
      LDB T,I       GET THE VALUE.. 
      SSA,RSS       IS THE VALUE REAL?
      JMP PRM25     NO, IT'S AN INTEGER 
      STB ADDRL,I   STORE 1ST PART OF REAL VLUE 
      ISZ ADDRL     BUMP LINKAGE ADDRESS
      ISZ T         BUMP ADDRESS OF VALUE 
      LDB T,I       GET 2ND PART OF RAEL VALUE. 
PRM25 STB ADDRL,I   STORE IT IN THE LINKAGE 
      ISZ ADDRL BUMP .PRAM LINKAGE ADDRESS
      ISZ ADDRP     BUMP PARAM LOC'N IN PROCED LINK.
      ISZ CNTR      IS FINAL PARAMETER PROCESSED? 
      RSS           NO, SKIP TO CONTINUE
      JMP ADDRL,I   YES,  EXIT FROM .PRAM HERE....
      ISZ CODES     LAST PAIR IN CODE WORD OUT? 
      JMP PRM15      NO, GO BACK AND CONTINUE.. 
      LDA M8        YES, GET -8 FOR RESETTING 
      STA CODES     RESET CODES FOR 8 PAIRS 
      ISZ ADDRA     BUMP CODE WORD POINTER
      LDA ADDRA,I   GET CURRENT CODE WORD 
      RAR           POSITION IT FOR PROCESSING
      JMP PRM15     GO BACK AND CONTINUE  CHECKING..
*         *   DATA AND TEMPORARY AREA  *
ADDRA NOP           LOC'N OF CODE WORD IN .PRAM LINK
ADDRL NOP           LOC'N OF PARAM ADDR IN .PRAM LINK 
ADDRP NOP           LOC'N OF ACTUAL PARAMETER ADDR. 
CODES NOP           CODE COUNTER FOR CODE PAIRS IN
*                   CODE WORD...
CNTR  NOP           PARAMETER COUNTER(# OF PROC.PARAM 
T     NOP           TEMPORARY FOR VALUE LOCATIONS 
BIT15 OCT 100000
M3    DEC -3
M5    DEC -5
M6    DEC -6
M8    DEC -8
M77   OCT 77
A     EQU 0 
B     EQU 1 
      END 
* 
* 
                                                                  