ASMB,R,L,C
*     NAME:   PRMAP 
*     SOURCE: 92070-18112 
*     RELOC:  92070-16112 
*     PGMR:   D.J.W.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  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.       *
*  ***************************************************************
* 
* 
      NAM PRMAP,7  92070-1X112  REV.1941  800308
* 
* 
*  PRMAP SETS THE CURRENT MEMORY BOUNDS INTO THE MEMORY MAP 
*  AND PRINTS THE MAP IF THIS OPTION WAS SELECTED.  A CHECK IS
*  MADE FOR LOCAL COMMON ALLOCATION AND ON THE FIRST ALLOCATION 
*  THE MODULE 'COM' AND ITS BOUNDS ARE PRINTED. 
*  THE MEMORY MAP CONTAINS THE MODULE NAME, ITS LOW MAIN ADDRESS, 
*  HIGH MAIN ADDRESS, LOW BASE PAGE ADDRESS, AND THE COMMENT FROM 
*  THE NAM RECORD.  AT THE END OF THE MAIN OR SEGMENT PLUS ALL THE
*  DESIRED SUBROUTINES THE NEW LOW MAIN AND LOW BASE PAGE IS PRINTED. 
*  THIS THEN SHOWS WHERE THE MODULES RESIDE, THE BASE PAGE REQUIRED 
*  FOR EACH MODULE, AND THE CURRENT PAGE LINK AREAS.
* 
*  FOR EXAMPLE: 
* 
* 
* 
* TES00  51510   51520   377    XXXXX-XXXXX  790312 
*        51521           377
* 
* 
*  CALLING SEQUENCE:  JSB PRMAP 
* 
*  ON RETURN:         A AND B REGS DESTROYED
* 
* 
*  CHANGE 3/8/80
*  IT WAS NOTED THAT THE HIGH BOUND ON LOCAL COMMON WAS 
*  ACTUALLY BEING PRINTED WITH THE HIGH + 1 VALUE.  SO  
*  THE HIGH ON COMMON EQUALLED THE LOW BOUND ON THE 
*  FOLLOWING MODULE.  THIS TENDED TO WORRY A FEW PEOPLE 
*  WHEN THEY SAW IT AND SO WAS CHANGED TO PRINT INSTEAD 
*  THE ACTUAL HIGH COMMON VALUE.
* 
* 
      ENT PRMAP,SUMAP 
      EXT .MVW,.DFER,AB.RT,BPR.L,CAD.L,CBP.L
      EXT CPL.L,COM.L,CNUMO,DRKEY,FMPER,L.BUF 
      EXT LNAMR,NM2.L,NM3.L,PGL.L,PL.ST,TH1.L 
      EXT TH2.L 
* 
A     EQU 0 
B     EQU 1 
* 
N1    DEC -1
PRMAP NOP 
      LDA PL.ST     GET LIST/NO LIST FLAG 
      SLA,RSS       IF NO LISTING 
      JMP PRMAP,I   THEN RETURN 
* 
*  CHECK FOR A LOCAL COMMON ALLOCATION
* 
      LDA COM.L     SIZE OF LOCAL COMMON
      SZA,RSS 
      JMP NOCOM     NO COMMON ALLOCATED 
      ISZ COMIN     YES COMMON, FIRST ALLOCATION ?
      JMP NOCOM     NO
      JSB .DFER     YES, FIRST AND LOCAL
      DEF L.BUF     MOVE COMMON NAME INTO MEMORY MAP
      DEF COM 
      JSB CNUMO     SET LOWER BOUND ON COMMON 
      DEF *+3 
      DEF CAD.L     RELOCATION BASE ADDRESS 
      DEF L.BUF+3 
      LDA CAD.L 
      ADA COM.L 
      ADA N1         THIS IS THE 3/8/80 FIX 
      STA VALUE      HIGH ADDRESS ON COMMON 
      JSB CNUMO     SET UPPER BOUND INTO MESSAGE
      DEF *+3 
      DEF VALUE 
      DEF L.BUF+7 
      LDA BLANK 
      STA L.BUF+6   ALSO SET WORD INBETWEEN TO BLANKS 
      LDA ALBUF     AND OUTPUT  THE MESSAGE 
      LDB P20 
      JSB DRKEY     TO THE LIST DEVICE
* 
NOCOM LDA NM2.L     MOVE NAME INTO MEMORY MAP 
      INA 
      LDB ALBUF 
      JSB .MVW
      DEF P3
      NOP 
      LDA L.BUF+2   BLANK OUT THE SIXTH CHARACTER 
      AND M7400 
      IOR BLNK2 
      STA L.BUF+2 
      LDA NM3.L     MOVE NAMR COMMENT INTO MEMORY MAP 
      INA 
      LDB ALB14 
      JSB .MVW
      DEF NM3.L,I    LENGTH OF COMMENT FIELD
      NOP 
      JSB CNUMO     CONVERT LOW MAIN ADDRESS
      DEF *+3 
      DEF TH1.L+0   PROGRAM LOWER BOUND 
      DEF L.BUF+3 
      JSB CNUMO     CONVERT LOW BASE PAGE ADDRESS 
      DEF *+3 
      DEF BPR.L+0   BASE PAGE LOWER BOUND 
      DEF L.BUF+10
      LDA CPL.L     DETERMINE HIGH MAIN VALUE 
      SZA,RSS        IS CURRENT PAGE LINKING ALLOWED ?
      JMP NCPL      NO
      CCB 
      ADB PGL.L     GET PROGRAM LENGTH FROM NAM RECORD
      SSB 
      JMP NCPL      NO CURRENT PAGE LINKS OR PGL.L NO GOOD
      ADB TH1.L     AND PROGRAM LENGTH TO LOWER BOUND 
      STB VALUE     SET HIGH MAIN VALUE 
      JMP OUTPT     OUTPUT THE LINE 
NCPL  CCA           NO CURRENT LINKS OR PGL.L NO GOOD 
      ADA TH2.L     HIGH MAIN IS TH2.L - 1
      STA VALUE     SET NEW HIGH MAIN 
OUTPT JSB CNUMO     CONVERT  TO OCTAL IN MAP
      DEF *+3 
      DEF VALUE 
      DEF L.BUF+7 
      LDA BLANK     BLANK THE UNSET WORD
      STA L.BUF+13
      STA L.BUF+6 
      LDB NM3.L,I   GET LENGTH OF COMMENT 
      ADB P14       PLUS LENGTH OF MODULE NAME
      BLS           CONVER TO NUMBER OF CHARACTERS
      LDA ALBUF     MESS2 = ADDR MEMORY MAP 
      JSB DRKEY     PRINT: MODULE   PROG BOUND    BP BOUND
      SSA,RSS       FMP ERROR ? 
      JMP PRMAP,I   RETURN
      JSB FMPER     YES, FMP ERROR
      DEF LNAMR+0   OUTPUT MESSAGE
      JMP AB.RT     AND GOT TO ABORT
* 
ALB14 DEF L.BUF+14
BLNK2 OCT 40
M7400 OCT 77400 
P3    DEC 3 
VALUE BSS 1 
P14   DEC 14
P26   DEC 26
BLANK ASC 3,
COMIN DEC -1
COM   ASC 3,COM 
P20   DEC 20
* 
*  PRINT UPPER BOUNDS ON PROGRAM, BASE PAGE 
* 
* 
SUMAP NOP 
      LDA PL.ST     ARE WE LISTING ?
      SLA,RSS 
      JMP SUMAP,I   NO LIST SO GET OUT OF HERE
      JSB CNUMO     CONVERT TO OCTAL
      DEF *+3 
      DEF CBP.L     THE HIGH BASE PAGE + 1
      DEF L.BUF+10
      JSB .DFER     BLANK OUT PROGRAM NAME
ALBUF DEF L.BUF+0 
      DEF BLANK 
      JSB .DFER     AND BLANK OUT HIGH MAIN 
      DEF L.BUF+6 
      DEF BLANK 
      LDA BLANK 
      STA B,I       SET FINAL BLANK 
      JSB CNUMO     CONVERT NEW LOW MAIN
      DEF *+3 
      DEF TH2.L+0 
      DEF L.BUF+3 
      LDA ALBUF     MESSAGE ADDRESS 
      LDB P26       AND LENGTH
      JSB DRKEY     OUTPUT TO USER
      JMP SUMAP,I   AND RETURN
      END 
                                                                                                                                  