ASMB
  HED  RTE-III/IV PARTITION SIZE RETREIVE SUBROUTINE
      NAM PRTSZ,7 . 92903-16001 REV.1805 780112 
* 
*     SOURCE 92903-18046
* 
      SPC 2 
**************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
* RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
* PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
* OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
**************************************************************
      SPC 2 
*     DATE:   22/APR/77 
*     NAME:   PRTSZ 
*     SOURCE: &PRTSZ
*     RELOC:  %PRTSZ
*     PGMR: DANIEL POT     HPG
*     REV: 12/JAN/78  MOD FOR RTE-IV  FG
  SPC 2 
*     **************************************
*     * THIS SUBROUTINE RETURNS THE SIZES  *
*     * OF THE TEN BIGGEST PARTITIONS USED *
*     * BY THE CURRENTLY RUNNING SYSTEM.   *
*     * IT RETURN ALSO THE NUMBER OF PART. *
*     **************************************
   SPC 2
*     CALLING SEQUENCE: 
* 
*        DIMENSION IBUF(10) 
*        INTEGER PRTSZ
*           ..
* 
*        NBPART = PRTSZ(IBUF) 
* 
*           IBUF(10) = THE LARGEST PARTITION SIZE OF THE SYSTEM.
* 
*           IF NOT RET-III OR RTE-IV  RETURN ZERO FOR # OF PRT
*           AND PRT SIZE. 
  SPC 2 
      ENT PRTSZ 
      EXT .ENTR 
      SUP 
      EXT $MATA,$OPSY,$MNP
  SPC 2 
TEMP  NOP 
NBPRT NOP           TOTAL NUMBER OF PARTITION 
LASTD NOP           NINTH ADRESS OF OUTPUT BUFFER 
LLSTD NOP           TENTH ADRESS OF OUTPUT BUFFER 
PONTR NOP           POINTER OF THE OUTPUT BUFFER
CONT  NOP           LOOP COUNTER
MATPT NOP           $MATA POINTER 
  SPC 1 
ADBUF NOP 
PRTSZ NOP 
      JSB .ENTR 
      DEF ADBUF     RETURN BUFFER ADRESS
* 
      LDA ADBUF 
      ADA =D8 
      STA LASTD     INITIALISES LASTD 
      INA 
      STA LLSTD     IMNITIALISES LLSTD
      LDA =D-10 
      STA CONT
      CLA 
      STA NBPRT     INIT NUMBER OF PARTITION
      LDB ADBUF 
      STA 1,I 
      INB 
      ISZ CONT
      JMP *-3       CLEARS OUTPUT BUFFER
* 
* 
* 
      LDB $OPSY     GET SYSTEM NUMBER 
      CPB =D-9      RTE-IV ?
      JMP RTE4      YES.
      CPB =D-1      RTE-III ? 
      RSS           YES 
      JMP EXIT      RETURN, ERROR !!
* 
      LDB $MATA     RTE-III, GET THE MAT ADDRESS
      ADB =D-1
      LDA 1,I       GET THE NUMBER OF MAT ENTRY 
      LDB =D6       RTE-III MAT ENTRY LENGTH
      JMP PRTS3 
* 
RTE4  LDA $MNP      RTE-IV, GET THE NUMBER OF MAT ENTRY 
      LDB =D7       RTE-IV MAT ENTRY LENGTH 
* 
PRTS3 STA NBPRT 
      STB TEMP      SAVE MAT ENTRY LENGTH 
      CMA,INA 
      STA CONT      NUMBER OF PARTITIONS
* 
      LDB $MATA 
LOOP  STB MATPT 
      XLA 1,I 
      SSA 
      JMP NEXT
      ADB =D4 
      XLA 1,I 
      AND =B1777
      INA 
      STA ADBUF,I 
      JSB TRI 
      LDB MATPT 
NEXT  ADB TEMP      GO TO NEXT ENTRY
      ISZ CONT
      JMP LOOP
EXIT  LDA NBPRT     RECALL NUMBER OF PARTITION
      JMP PRTSZ,I 
  SPC 2 
TRI   NOP 
      LDA ADBUF     GET FIRST OUTPUT BUFFER ADRESS
      STA PONTR     INITIALISES POINTER 
TRI1  DLD PONTR,I   GET FIRST AND SECOND PARTITION SIZE 
      CMA,INA       CALCULATES: -(PARTITION SIZE) 
      ADA 1         CALCULATES PRT#2-PRT#1
      SZA,RSS 
      JMP TRI2
      SSA,RSS       PARTITIONS SIZES MUST BE REVERSED 
      JMP TRI2      RIGHT ORDER: CONTINUE 
      SWP 
      LDB PONTR,I 
      DST PONTR,I 
      LDA PONTR 
      CPA ADBUF 
      JMP TRI2
      CCA 
      ADA PONTR 
      STA PONTR     RESTORE PREVIOUS OUTPUT BUFFER ADRESS WORD
      JMP TRI1      RE-BEGIN THE CLASSING OPERATION 
TRI2  ISZ PONTR 
      LDA PONTR     GET OUTPUT BUFFER ADRESS
      CPA LLSTD     COMPARE TO LAST OUTPUT BUFFER ADRESS WORD 
      JMP TRI,I     CLASSING OPERATION IS FINISHED
      JMP TRI1      CONTINUE CLASSING OPEARTION 
      END PRTSZ 
                                                                                                                    