ASMB,R,L,C
      HED FD.CK 
*     NAME:   FD.CK 
*     SOURCE: 92067-18151 
*     RELOC:  92067-16125 
*     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 FD.CK,7 92067-16125 REV.1940 790802 
      ENT FD.CK 
      EXT XLUEX, .ENTR, NAM.. 
      SUP 
* 
* 
*  FD.CK     READS THE CARTRIDGE SPECIFICATION ENTRY FROM THE 
*            FILE DIRECTORY ON A DISC LU AND CHECKS TO SEE IF 
*            THERE IS A REASONABLE FILE SYSTEM
* 
* 
*  CALLING SEQUENCE 
* 
*            JSB FD.CK
*            DEF *+3
*            DEF DS.LU      WHERE DS.LU IS THE LU# OF THE DISC AND
* (OPTIONAL) DEF LTR        LTR IS THE TRACK ON DS.LU TO BE CHECKED 
*         RETURN
* 
*               OR
* 
*            CALL FD.CK(DS.LU,LTR)
* 
*         IF LAST TRACK IS NOT SPECIFIED, THE LAST PHYSICAL TRACK ON
*         DS.LU (OBTAINED FROM AN IMPOSSIBLE WRITE) IS USED.
* 
* 
*         RETURNS FALSE (A=0) IF A FILE SYSTEM EXISTS ON THE DISC 
*         RETURNS TRUE  (A=1) IF THERE IS NOT A FILE SYSTEM OR IF 
*            LAST TRACK SPECIFIED WAS OUT OF RANGE.  ALSO RETURNS 
*            FALSE IF EXEC READ ON THE LU IS REJECTED 
* 
*         B-REG CONTAINS THE CRN IF THERE IS A FILE SYSTEM
* 
* 
* 
DSLU  NOP 
LTR   DEF N1  
FD.CK NOP 
      JSB .ENTR 
      DEF DSLU
* 
      LDA DSLU,I    GET LU #
      CCE           SET SIGN BIT ON LU FOR
      RAL,ERA        EXTENDED EXEC CONTROL WORD 
      STA CONWD     SAVE 1ST WORD OF CONTROL WORD 
      LDA PRC       GET PRIVILEDGED BITS
      STA CONWD+1    AND USE AS SECOND HALF OF CONTROL WORD 
* 
      LDA DSLU,I    GET LU# PASSED IN 
      CLE 
      CPA .2        CHECKING LU2? 
      CCE,RSS       YES - SET E AND GO TO SYSDS TO SET LTR
      CPA .3        CHECKING LU3? 
      JMP SYSDS     YES - E=0 AND GO TO SYSDS TO SET LTR
* 
      JSB XLUEX     DO AN IMPOSSIBLE READ 
      DEF *+7        ON DSLU TO GET THE 
      DEF RDNAB       NUMBER OF TRACKS ON THE DISC
      DEF CONWD 
      DEF BUF 
      DEF .1
      DEF N1
      DEF ZERO
      JMP FDCK0 
      ADB N1        SUBTRACT 1 DISC'S PHYSICAL SIZE 
      LDA LTR,I     GET LAST TRACK PARAMETER
      SSA           WAS ONE SPECIFIED?
      LDA B         NO - SO JUST USE LAST PHYSICAL TRACK
      CMB,INB       MAKE SURE THAT LAST TRACK SPECIFIED 
      ADB A          IS NOT LARGER THAN LAST
      CMB,INB         PHYSICAL TRACK ON DISC. 
      SSB           LAST TRACK SPECIFIED > LAST PHYSICAL TRACK? 
      JMP FDCK0     YES - RETURN NO VALID FILE SYSTEM 
      STA LTR       NO - OK SO SAVE LAST TRACK
* 
READ  JSB XLUEX     CALL EXEC TO READ 16-WORD CARTRIDGE 
      DEF *+7        SPECIFICATION ENTRY FROM THE LAST
      DEF RDNAB       TRACK, SECTOR 0 ON DSLU 
      DEF CONWD 
ABUF  DEF BUF 
      DEF .16 
      DEF LTR 
      DEF ZERO
      JMP FDCK0 
* 
      LDA BUF       GET 1ST WORD OF SPECIF ENTRY
      RAL,CLE,ERA   SPECIF FLAG INTO E-REG
      SEZ,RSS 
      JMP FDCK0     IF FLAG WASN'T SET THEN NOT A VALID FILE SYSTEM 
      STA BUF       PUT BASK 1ST WORD LESS SIGN BIT 
      JSB NAM..     LEGAL FMGR NAME?
      DEF *+2 
      DEF BUF 
      SZA           LEGAL?
      JMP FDCK0     NO
      LDA BUF+3     IF CRN IS NEGATIVE
      SSA            THEN NOT A LEGAL 
      JMP FDCK0       FILE SYSTEM 
      LDA BUF+8     NUMBER TRACKS IN DIRECTORY
      CMA,INA        (MADE POSITIVE) PLUS LOWEST DIRECTORY
      ADA BUF+7       TRACK LESS ONE MUST BE
      ADA N1           SAME AS LAST TRACK 
      CPA LTR 
      RSS           ITS OK
      JMP FDCK0     NOT A VALID FILE SYSTEM 
      LDA BUF+5     NEXT SECTOR CAN'T 
      CMA,INA         BE LARGER THAN #SECTORS 
      ADA BUF+6       PER TRACK 
      SSA,RSS 
      CLA,RSS       THERE IS A FILE SYSTEM SO RETURN A=0
FDCK0 LDA .1        NO FILE SYSTEM SO RETURN A=1
      LDB DEFN1     RESET OPTIONAL LAST 
      STB LTR        TRACK PARAMETER TO DEF TO ZERO 
      LDB BUF+3     RETURN THIS DISC'S CRN
      JMP FD.CK,I   RETURN
* 
* 
SYSDS CLB,SEZ,RSS   LU 3? 
      ADB TATLG     YES  E=0 SO MUST BE LU 3
      ADB TATSD     LU 2 : LTR = C(TATSD) - 1 
      SEZ,RSS       LU 3 : LTR = - C(TATSD) - C(TATLG) - 1
      CMB,INB 
      ADB N1
      STB LTR       SAVE LAST TRACK FOR EXEC CALL 
      ADA PRC       ADD PRIVILEDGED BITS TO LU
      STA DSLU       AND SAVE FOR EXEC READ 
      JMP READ
* 
* 
* 
BUF   BSS 16
CONWD BSS 2 
* 
N1    DEC -1
RDNAB OCT 100001
ZERO  NOP 
.1    DEC 1 
.2    DEC 2 
.3    DEC 3 
.16   DEC 16
DEFN1 DEF ZERO
* 
TATLG EQU 1755B 
TATSD EQU 1756B 
A     EQU 0 
B     EQU 1 
      UNL 
PRC   OCT 74000 
      LST 
* 
      END 
                          