ASMB,R,L,C
      HED (FMP) CRDC: DISMOUNT DISC CARTRIDGE 
*     NAME:   CRDC
*     SOURCE: 92071-18166 
*     RELOC:  92071-16166 
*     PGMR:   E.D.B.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  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 CRDC,7 92071-1X166 REV.2041 800702
* 
      ENT CRDC
* 
      EXT CLD.R, .P1, .P2, .P3, .P7, .R1
      EXT .ENTR 
      SUP 
      SKP 
* 
*     DESCRIPTION 
* 
*      THIS ROUTINE DISMOUNTS A CARTRIDGE FROM THE RTE-L SYSTEM.
* 
*      FORTRAN CALLING SEQUENCE:
* 
*      CALL CRDC(ICR) 
* 
*      WHERE: 
* 
*      ICR    IS A CARTRIDGE IDENTIFIER (+CRN / - LU) OF
*             THE CARTRIDGE TO BE DISMOUNTED
* 
*      POSSIBLE ERRORS: 
* 
*      -10   NOT ENOUGH PARAMETERS
*       38   ATTEMPT TO REMOVE ACTIVE TYPE 6 OR SWAP FILE 
       SKP
* 
*      ENTRY
* 
CRDC  NOP 
      CLA 
      STA ICR 
      LDA CRDC
      STA DRDC
      JMP DRDC+1
* 
ICR   NOP 
* 
DRDC  NOP 
      JSB .ENTR 
      DEF ICR 
* 
      LDA ICR 
      SZA,RSS       IF NOT ENOUGH PARAMETERS, 
      JMP ER10       THEN TAKE ERROR EXIT 
      SKP 
* 
*     PROCESS REQUEST 
* 
      LDA ICR,I     FETCH CARTRIDGE IDENTIFIER
      SZA,RSS       IF ZERO,
      JMP ER32       THEN TAKE ERROR EXIT 
* 
      STA .P2       SAVE CRN FOR D.RTR
* 
      LDA .3        SET FUNCTION CODE 
      STA .P1         FOR DISC LOCK 
* 
      JSB CLD.R     CALL D.RTR
* 
      LDA .R1       FETCH ERROR CODE
      CPA N103      IF CORRUPT DIRECTORY, 
      JMP DCIT       THEN ALLOW DISMOUNT
* 
      CPA N99       IF READ/WRITE ERROR,
      JMP DCIT       THEN ALLOW DISMOUNT
* 
      CPA N1        IF DISC ERROR,
      JMP DCIT       THEN ALLOW DISMOUNT
* 
      SZA           IF ANY OTHER ERROR
      JMP EREX       THEN TAKE ERROR EXIT 
* 
*     DISC IS LOCKED SO NO OPEN FILES EXIST 
*     SET UP DISMOUNT CALL TO DIRECTORY MANAGER 
* 
DCIT  LDA .7        SET FUNCTION CODE 
      STA .P1         FOR DIRECTORY MODIFICATION
* 
      CLB           SET P3=0 & SUBFUNCTION P7 
      STB .P3        =0 FOR DISMOUNT
* 
      STB .P7       SUBFUNCTION = 0 FOR DISMOUNT
* 
      JSB CLD.R     CALL D.RTR
* 
      LDA .R1       FETCH ERROR CODE
      SZA,RSS       IF NO ERROR,
      JMP EREX
* 
      STA ERR       SAVE ERROR FOR RETURN 
* 
      LDA .5        SET FUNCTION CODE 
      STA .P1        FOR DISC UNLOCK
* 
      JSB CLD.R     CALL D.RTR
* 
      LDA ERR       GET ERROR AGAIN 
      JMP EREX       AND EXIT 
      SKP 
* 
*     EXIT
* 
ER10  LDA N10       NOT ENOUGH PARAMETERS 
      JMP EREX
* 
ER32  LDA N32       CARTRIDGE NOT FOUND 
* 
EREX  JMP DRDC,I    RETURN (WITH ERROR CODE IN A-REG) 
      SKP 
* 
*     STORAGE AREA
* 
.3    DEC 3 
.5    DEC 5 
.7    DEC 7 
* 
N103  DEC -103
N99   DEC -99 
N32   DEC -32 
N10   DEC -10 
N1    DEC -1
* 
ERR   NOP 
* 
A     EQU 0 
B     EQU 1 
* 
END   EQU * 
* 
      END 
                