ASMB,R,L,C,Q
*     NAME:   RC..
*     SOURCE: 92067-18219 
*     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 RC..,8 92067-16185 REV.1903 790314
      ENT RC..
      EXT .ENTR,DCMC,FM.ER,CNUMD,SESSN,NAM..
      SUP 
* 
* 
*  REMOVE CARTRIDGE ROUTINE FOR RTE 
*  FILE MANAGER   (FMGR)
* 
*  ENTERED ON COMMAND:
* 
*  DC,CARTRIDGE,RR
* 
*    WHERE
* 
*  CARTRIDGE - +CRN OR -LU OF DISC TO BE DISMOUNTED 
*  RR        - IF SPECIFIED MEANS RELEASE DISC RESOURCE BY TAKING 
*              OUT OF SYSTEM CL, SCB, AND RELEASING TO DISC POOL
*              IF A POOL DISC.  IF NOT SPECIFIED, SIMPLY MARK 
*              DISC IN DISCS MOUNTED LIST INACTIVE. 
* 
* 
*  DC.. EXTRACTS PARAMETERS FROM PARSE LIST AND CALLS 
*  SUBROUTINE DCMC TO PERFORM THE DISMOUNT. 
* 
* 
* 
N     NOP 
LIS   NOP 
ER    NOP 
RC..  NOP 
      JSB .ENTR 
      DEF N 
      CLA           CLEAR OUT OPTIONAL PARAMETER
      STA RR        IN CASE ITS NOT SPECIFIED 
      LDA N,I       GET NUMBER OF PARAMETERS IN LIST
      SZA,RSS       IF NONE WERE SPECIFIED, EXIT
      JMP EX50       NOT ENOUGH PARAMETERS ERROR
      CMA,INA       MAKE NEGATIVE AND 
      STA N          USE AS A COUNTER 
* 
      JSB SESSN     SEE IF WE'RE UNDER SESSION CONTROL
      DEF *+2 
      DEF XEQT
* 
      LDB LIS 
      INB 
      LDA B,I       GET CARTRIDGE FROM PARSE LIST 
      SZA,RSS       IF NONE SPECIFIED 
      JMP EX56       EXIT NOT ENOUGH PARAMETERS ERROR 
      STA DISID 
* 
      SEZ,RSS       IF UNDER SESSION GO SEE IF
      JMP PARM2      ANOTHER PARAMETER WAS PASSED 
      LDA ASCRR     WE'RE NOT UNDER SESSION CONTROL 
      STA RR          WANT TO FORCE AN RR WHETHER IT WAS SPECIFIED
      JMP CALL         OR NOT.  DC,CRN SHOULD REMOVE DISC FROM SYSTEM 
* 
PARM2 ISZ N         INCREMENT COUNTER 
      RSS           STILL ANOTHER PARAMETER 
      JMP CALL      NO MORE PARAMETERS - CALL DCMC
      ADB .4
      LDA B,I       GET SECOND PARAMETER
      CPA ASCRR     ASCRR?? 
      STA RR        YES - SAVE "RR" IN 2ND PARAMETER
* 
CALL  JSB DCMC      CALL DCMC TO DISMOUNT THE DISC
      DEF RTN 
      DEF ER,I
      DEF CODE
      DEF DISID 
      DEF RR
RTN   EQU * 
      JMP EXIT
* 
EX50  LDA .50       NOT ENOUGH PARAMETERS 
      RSS 
EX56  LDA .56       BAD PARAMETER 
      STA ER,I
* 
EXIT  STA CRN       SAVE CRN AND LU 
      STB LU         RETURNED FROM DCMC 
      LDA ER,I
      SZA           ERROR RETURNED? 
      JMP EX        YES 
* 
      LDA CRN       STUFF CRN AND BLANKS
      STA MESS+6     INTO THE MESSAGE 
      DLD BLANK 
      DST MESS+4
* 
      JSB NAM..     IF CRN IS A LEGAL ASCII FILE
      DEF *+2        NAME THEN DON'T CONVERT IT 
      DEF CRN 
      SZA,RSS       2 ASCII CHARACTERS? 
      JMP GETLN     YES - SKIP CONVERSION 
* 
      JSB CNUMD     CONVERT CRN TO ASCII
      DEF *+3 
      DEF CRN 
      DEF MESS+4
* 
GETLN LDA .23       SET MESSAGE LENGTH TO 23 IF NOT 
      LDB LU         RETURNED TO POOL, OTHERWISE
      SSB             SET MESSAGE LENGTH TO 27
      LDA .27 
      LDB RR        SEE IF THIS WAS AN OPTION TO
      CPB ASCRR      RELEASE RESOURCES
      RSS 
      LDA .16 
      STA LNGTH 
* 
      CPB ASCRR     GET DIRECTION AGAIN 
      RSS 
      JMP INAMS     JUST INACTIVATED THE DISC SO SAY SO 
      LDB LU        GET LU AGAIN
      RBL           POSITION TO SYSTEM/SESSION INDICATOR
      SSB 
      JMP SYSMG     REMOVED FROM SYSTEM 
      LDA SESN      REMOVED FROM SESSION - PUT
      STA MESS+20    SESSION INTO MESSAGE 
      DLD SESN+1
      DST MESS+21 
      JMP MSG       GO SEND MESSAGE 
* 
SYSMG LDA SYST      PUT SYSTEM INTO MESSGE
      STA MESS+20 
      DLD SYST+1
      DST MESS+21 
      JMP MSG 
* 
INAMS DLD INACT     STUFF INACTIVE INTO MESSAGE 
      DST MESS+11 
      DLD INACT+2 
      DST MESS+13 
      LDA INACT+4 
      STA MESS+15 
* 
MSG   LDA LU        GET WORD WITH LU
      AND B377      MASK TO LOWER BYTE
      STA LU
      JSB CNUMD     CONVERT LU TO ASCII 
      DEF *+3 
      DEF LU
      DEF ARRY
      DLD ARRY+1    PUT 4 CHARACTERS OF 
      DST MESS+9     LU INTO MESSAGE
* 
      JSB FM.ER 
      DEF *+4 
      DEF ZERO
      DEF MESS
      DEF LNGTH 
EX    JMP RC..,I
* 
* 
B     EQU 1 
A     EQU 0 
XEQT  EQU 1717B 
CODE  OCT 2 
DISID NOP 
RR    NOP 
ZERO  NOP 
LU    NOP 
LNGTH NOP 
ARRY  BSS 3 
.1    DEC 1 
.4    DEC 4 
.8    DEC 8 
.16   DEC 16
.23   DEC 23
.27   DEC 27
.50   DEC 50
.56   DEC 56
B377  OCT 377 
* 
*  CRN AND BLANK MUST STAY TOGETHER LIKE THIS 
CRN   NOP           ---\
BLANK ASC 2,        ---/
* 
* 
ASCRR ASC 1,RR
MESS  ASC 27,DISC CRN        LU     DISMOUNTED FROM S        (POOL) 
SYST  ASC 3,YSTEM 
SESN  ASC 3,ESSION
INACT ASC 5, INACTIVE 
* 
      END 
                                                                        