ASMB,R,L,C,Q
*     NAME:   MC..
*     SOURCE: 92067-18218 
*     RELOC:  92067-16185 
*     PGMR:   N.J.S.
* 
*  ***************************************************************
*  * (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.       *
*  ***************************************************************
* 
* 
      NAM MC..,8 92067-16185 REV.1903 790402
      ENT MC..
      EXT .ENTR,DCMC,LUTRU,SESSN
      SUP 
* 
* 
*  MOUNT CARTRIDGE ACTION ROUTINE FOR 
*  RTE FILE MANAGER   (FMGR)
* 
*  ENTERED ON COMMAND:
* 
*  MC,LU[,P/G[,SIZE[,ID[,#DIR TRACKS[,LABEL]]]]]
* 
*    WHERE
* 
*  LU    - + OR - LOGICAL UNIT NUMBER OF DISC TO BE MOUNTED 
*  P/G   - P INDICATES DISC IS TO BE MOUNTED AS PRIVATE, G AS GROUP 
*  SIZE  - # TRACKS NEEDED ON THE ALLOCATED DISC.  DEFAULT WILL BE TO 
*          FIRST AVAILABLE DISC IN DISC POOL
*  ID    - 6-CHAR ASCII IDENTIFIER
*  # DIR TRACKS - # DIRECTORY TRACKS   MADE NEGATIVE WHEN SENT TO DCMC
*  LABEL - CRN TO BE ASSIGNED TO THE DISC IN THE CASE WHERE THERE 
*          IS NO VALID DIRECTORY ENTRY ON THE LAST TRACK
* 
* 
*  MC.. EXTRACTS PARAMETERS FROM PARSE LIST AND CALLS 
*  SUBROUTINE DCMC. TO PERFORM THE MOUNT. 
* 
* 
N     NOP 
LIS   NOP 
ER    NOP 
MC..  NOP 
      JSB .ENTR 
      DEF N 
      CLA           CLEAR 
      STA P/G        PARAMETERS 
      STA SIZE        TO BE 
      STA ID           PASSED TO
      STA ID+1          DCMC. 
      STA ID+2
      STA DIRTK 
      STA LABEL 
* 
*  + OR - LU
* 
      LDA N,I       GET # OF PARAMETERS IN PARSE LIST 
      SZA,RSS       IF THERE WEREN'T ANY
      JMP EX50        EXIT NOT ENOUGH PARAMETERS
      CMA,INA       MAKE NEGATIVE 
      STA N          TO USE AS A COUNTER
      LDB LIS 
      LDA B,I       GET LU FROM PARSE LIST   (FLAG WORD)
      SZA,RSS       IF NOT SPECIFIED
      JMP EX50        EXIT NOT ENOUGH PARAMETERS
      CPA .3        CAN'T BE ASCII
      JMP EX56        IT IS, SO BAD PARAMETER EXIT
      INB 
      LDA B,I       GET LU
      SZA,RSS       IF A ZERO 
      JMP EX56        EXIT BAD PARAMETER
      SSA           IF ALREADY POSITIVE, SKIP 
      CMA,INA        OTHERWISE MAKE LU POSITIVE 
      STA LU          AND SAVE FOR LUTRU CALL 
      CMA,INA       MAKE NEGATIVE FOR 
      STA DISID      DCMC CALL
      ADA .63       DISC LU PASSED IN CAN'T 
      SSA            BE 64 OR LARGER
      JMP EX56        IT IS, SO BAD PARAMETER EXIT
      STB TMP       REMEMBER B = POINTER IN LIS 
* 
      JSB SESSN     SEE IF CALLER IS
      DEF *+2        UNDER SESSION CONTROL
      DEF XEQT
      SEZ           IN SESSION? 
      JMP MT.1      NO - SKIP 'IN SST' TEST 
* 
      JSB LUTRU     MAKE SURE THAT FOR SESSION USERS
      DEF *+2        THIS LU IS IN THE SST
      DEF LU
      SSA           IN SESSION BUT NOT IN SST?
      JMP EX43      YEP - NOT IN SST ERROR
MT.1  ISZ N         MORE PARAMETERS 
      RSS            PASSED 
      JMP CALL      NO - GO CALL DCMC 
* 
*  PRIVATE/GROUP INDICATOR
* 
      LDB TMP       GET B BACK AGAIN
      ADB .3
      LDA B,I       GET PRIV/GROUP INDICATOR  (FLAG WORD) 
      CPA .1        CAN'T BE NUMBERIC 
      JMP EX56        IT IS, SO EXIT BAD PARAMETER
      INB 
      LDA B,I       GET VALUE PASSED IN 
      SZA           IF DEFAULT, USE P 
      CPA P         IF PRIVATE SET TO 0 
      JMP PG2 
      CPA G         IF GROUP SET TO 1 
      JMP PG1 
      JMP EX56      ELSE ERROR BAD PARAMETER
PG1   ISZ P/G       SET P G TO 1
PG2   ISZ N         MORE PARAMETERS 
      RSS            PASSED?
      JMP CALL      NO - GO CALL DCMC 
* 
*  SIZE 
* 
      ADB .3
      LDA B,I       GET SIZE IN TRACKS   (FLAG WORD)
      CPA .3        CAN'T BE ASCII
      JMP EX56        EXIT BAD PARAMETER
      INB 
      LDA B,I       GET VALUE FOR SIZE IN TRACKS
      SSA           CAN'T BE NEGATIVE 
      JMP EX56        BAD PARAMETER EXIT
      STA SIZE
      ISZ N         MORE PARAMETERS 
      RSS            PASSED?
      JMP CALL      NO - GO CALL DCMC 
* 
*  6-CHAR ASCII LABEL 
* 
      ADB .3
      LDA B,I       GET LABEL  (FLAG WORD)
      CPA .1        CAN'T BE NUMBERIC 
      JMP EX53        EXIT BAD PARAMETER
      INB 
      LDA B,I       FIRST TWO CHARACTERS OF ASCII IDENTIFIER
      STA ID
      INB 
      LDA B,I       3RD AND 4TH CHARACTERS OF ASCII IDENTIFIER
      STA ID+1
      INB 
      LDA B,I       5TH AND 6TH CHARACTERS OF ASCII IDENTIFIER
      STA ID+2
      ISZ N         MORE PARAMETERS 
      RSS            PASSED?
      JMP CALL      NO - GO CALL DCMC 
* 
*  # DIRECTORY TRACKS 
* 
      INB 
      LDA B,I       GET NUMBER OF DIR TRACKS  (FLAG WORD
      CPA .3        CAN'T BE ASCII
      JMP EX56        EXIT BAD PARAMETER
      INB 
      LDA B,I       NUMBER OF DIRECTORY TRACKS
      SSA           CAN'T BE NEGATIVE 
      JMP EX56        EXIT BAD PARAMETER
      CMA,INA       MAKE NEGATIVE 
      STA DIRTK      TO SEND TO DCMC
      ISZ N         MORE PARAMETERS 
      RSS            PASSED?
      JMP CALL      NO - GO CALL DCMC 
* 
*  CRN
* 
      ADB .4
      LDA B,I       GET LABEL - CRN  (FLAG WORD)
      SSA           MAKE SURE A NEGATIVE VALUE ISN'T SUPPLIED 
      JMP EX56      NEGATIVE  -  BAD PARAMETER ERROR
      STA LABEL 
* 
* 
CALL  JSB DCMC      CALL DCMC. TO MOUNT THE DISC. 
      DEF RTN 
      DEF ER,I
      DEF CODE      MOUNT = 1 
      DEF DISID     -LU 
      DEF P/G       P = 0  OR  G = 1
      DEF SIZE      DISC SIZE IN TRACKS 
      DEF ID        6-CHAR ASCII LABEL
      DEF DIRTK     # DIRECTORY TRACKS
      DEF LABEL     CRN 
RTN   EQU * 
      JMP EXIT
* 
EX43  LDA .43       LU NOT IN SST 
      RSS 
EX50  LDA .50       NOT ENOUGH PARAMETERS 
      RSS 
EX53  LDA .53       ILLEGAL LABEL 
      RSS 
EX56  LDA .56       BAD PARAMETER 
      STA ER,I
EXIT  JMP MC..,I
* 
* 
B     EQU 1 
XEQT  EQU 1717B 
CODE  OCT 1         MOUNT CODE FOR DCMC 
.1    OCT 1 
.3    OCT 3 
.4    OCT 4 
.43   DEC 43
.50   DEC 50
.53   DEC 53
.56   DEC 56
.63   DEC 63
G     OCT 43440 
P     OCT 50040 
DISID NOP 
P/G   NOP 
SIZE  NOP 
ID    BSS 3 
DIRTK NOP 
LABEL NOP 
LU    NOP 
TMP   NOP 
* 
      END 
                                                                                                                                                            