ASMB,R,L,C HED (FMP) CRMC: MOUNT DISC CARTRIDGE * NAME: CRMC * SOURCE: 92071-18183 * RELOC: 92071-16183 * 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 CRMC,7 92071-1X183 REV.2041 800806 * ENT CRMC * EXT CLD.R, .P1, .P2, .P3, .P4, .P7, .R1 EXT EXEC, .ENTR SUP SKP * * DESCRIPTION * * THIS ROUTINE MOUNTS A DISC CARTRIDGE TO AN RTE-L SYSTEM * * CALLING SEQUENCE: * * CALL CRMC(LU,LSTRK) * * WHERE: * * LU IS THE +/- LOGICAL UNIT NUMBER OF THE DISC CARTRIDGE * TO BE MOUNTED. MUST BE IN RANGE 1 - 64. * * LSTRK IS THE LAST TRACK TO BE AVAILABLE TO FMP (OPTIONAL) * MUST BE IN RANGE 0 - 1023. * * POSSIBLE ERRORS: * * 0 NO ERROR * -10 NOT ENOUGH PARAMETERS * -18 ILLEGAL LU * 33 DISC HAS MORE THAN 1024 TRACKS * 56 BAD PARAMETER SKP * * ENTRY * CRMC NOP LDA DZERO STA LU STA LSTRK LDA CRMC STA DRMC JMP DRMC+1 * LU DEF ZERO LSTRK DEF ZERO * DRMC NOP MOUNT CARTRIDGE ENTRY POINT JSB .ENTR DEF LU * LDA LU IF NOT ENOUGH CPA DZERO PARAMETERS, JMP ER10 THEN TAKE ERROR EXIT * * PROCESS REQUEST * LDA LU,I FETCH CARTRIDGE IDENTIFIER SSA,RSS IF CARTRIDGE ID POSITIVE, CMA,INA THEN NEGATE * SSA,RSS IF NOT NEGATIVE, JMP ER18 THEN TAKE ERROR EXIT * STA B SAVE FOR TEST ADB .63 TEST UPPER LIMIT SSB IF NOT LESS THAN 64, JMP ER18 THEN TAKE ERROR EXIT * STA LU SAVE LU FOR D.RTR * CMA,INA MAKE LU POSITIVE IOR B10K SET Z-BIT STA ZLU AND SAVE FOR EXEC * JSB EXEC GET STATUS ON LU DEF *+7 TO DETERMINE DRIVER TYPE DEF NAB15 (100015B) DEF ZLU DEF DVT6 CONTAINS DEVICE TYPE DEF IFT6 DEF BUF DEF .7 JMP ER18 IF LU IS UNDEFINED, EXIT * LDA DVT6 GET DEVICE STATUS WORD ALF,ALF POSITION DEVICE TYPE IN LOW BITS AND B77 AND ISOLATE * ADA NB30 CHECK IF DISC SSA IF LESS THAN 30B, JMP ER18 THEN TAKE ERROR EXIT (NOT DISC) * ADA N8 CHECK IF DISC SSA,RSS IF GREATER THAN 37B, JMP ER18 THEN TAKE ERROR EXIT (NOT DISC) * * DETERMINE LAST AVAILABLE TRACK * LDB TRACK GET NUMBER OF TRACKS ADB N1 AND SUBTRACT 1 FOR LAST TRACK ADRS * LDA LSTRK,I GET PASSED LAST TRACK SZA,RSS IF NOT SUPPLIED (OR ZERO), JMP LAST USE MAX LAST TRACK * SSA IF NEGATIVE, JMP ER56 THEN TAKE ERROR EXIT * CMA,INA SUBTRACT ADB A FROM MAX SSB IF PASSED VALUE GREATER THAN MAX JMP ER56 THEN TAKE ERROR EXIT * LDB LSTRK,I ELSE USE PASSED VALUE * LAST LDA N1024 CHECK NUMBER OF TRACKS > 1024 ADA B SSA,RSS IF MORE THAN 1024 TRACKS, JMP ER33 THEN TAKE ERROR EXIT SKP * * SET UP DIRECTORY MANAGER CALL TO MOUNT AND LOCK * LDA .7 P1=7 STA .P1 * LDA LU P2=-LU STA .P2 * CMA,INA P2=+LU STA .P3 * STB .P4 P4=LAST TRACK * LDA N2 P7=MOUNT REQUEST STA .P7 * JSB CLD.R CALL D.RTR * LDA .R1 GET ERROR RETURN CODE SZA IF ANY ERRORS, JMP EREX THEN TAKE ERROR EXIT * * CALL D.RTR TO UNLOCK AND VALIDATE DISC * LDA .5 REQUEST UNLOCK (NOTE, DISC LU SET STA .P1 IN PREVIOUS CALL) * JSB CLD.R CALL FOR UNLOCK * LDA .R1 GET ERROR FOR RETURN JMP EREX AND EXIT SKP * * EXIT * ER10 LDA N10 NOT ENOUGH PARAMETERS JMP EREX * ER18 LDA N18 ILLEGAL LU JMP EREX * ER33 LDA .33 TOO MANY TRACKS ON DISC JMP EREX * ER56 LDA .56 ILLEGAL PARAMETER * EREX JMP DRMC,I SKP * * STORAGE AREA * ZERO NOP * N1024 DEC -1024 N18 DEC -18 N10 DEC -10 N8 DEC -8 N2 DEC -2 N1 DEC -1 * .5 DEC 5 .7 DEC 7 .33 DEC 33 .56 DEC 56 .63 DEC 63 * NB30 OCT -30 * B77 OCT 77 B10K OCT 10000 * NAB15 OCT 100015 * DZERO DEF ZERO * ZLU NOP +LU WITH Z-BIT SET DVT6 NOP DEVICE STATUS WORD IFT6 NOP INTERFACE STATUS WORD * BUF NOP - BUFFER FOR STATUS REQUEST NOP ! NOP ! NOP ! NOP ! TRACK NOP ! NUMBER OF TRACKS NOP - * A EQU 0 B EQU 1 * END EQU * * END