<< LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION>>               00000001
PTITLE = ("DISKED5         (C) HEWLETT-PACKARD CO., 1983")#,   <<07242>>00038000
INTEGER POINTER PCB=3;                                         <<07242>>00048100
DEFINE                                                         <<07242>>00048200
   PCB'SIZE        = PCB(1)#,                                  <<07242>>00048300
   MPEV'PCB'SIZE   = %25#;                                     <<07242>>00048400
   LOGICAL                                                     <<07434>>00062000
       CAP = CAPD,                                             <<07434>>00062100
       CAP1= CAPD+1,                                           <<07434>>00062200
       MODE;                                                   <<07434>>00062300
   DEFINE PM'CAP = CAP1.(9:1)#;                                <<07434>>00076000
INTEGER ARRAY FLAB(0:127);                                     <<06516>>00222000
DOUBLE ARRAY FLABDBL(*)=FLAB;                                  <<06516>>00223000
DOUBLE ARRAY EXTMAP(*) = FLABDBL(22);                          <<06516>>00224000
                                                               <<*8898>>00224010
<< For calling procedure CHECKDISC >>                          <<*8898>>00224020
LOGICAL                                                        <<*8898>>00224030
   STAT;                                                       <<*8898>>00224040
DEFINE                                                         <<*8898>>00224050
   OFFLINE = (9:1)#;                                           <<*8898>>00224060
$EDIT VOID=00264000                                            <<06516>>00226000
$INCLUDE INCLFLAB                                              <<06516>>00228000
   FCBEXTMAP    = %44;                                         <<06516>>00268000
$EDIT VOID=00274000                                            <<06516>>00270000
INTRINSIC DBINARY,DASCII,WHO,BINARY,ASCII,DEBUG,QUIT,TERMINATE;<<07242>>00292000
DOUBLE PROCEDURE ATTACHIO (DU,QMISC,DST,BUF,FUNC,CNT,P1,P2,FLAGS);      00312000
   VALUE DU,QMISC, DST, BUF, FUNC, CNT, P1, P2,FLAGS;          <<*8804>>00314000
   INTEGER DU,QMISC, DST, BUF, FUNC, CNT, P1, P2,FLAGS;        <<*8804>>00316000
$EDIT VOID=00317000                                            <<*8804>>00317000
   OPTION EXTERNAL;                                            <<*8804>>00318000
PROCEDURE VTABTOLDEV(TARGET,SOURCE,COUNT,MVTABX);              <<07243>>00344000
VALUE COUNT,MVTABX;                                            <<07243>>00346000
INTEGER COUNT,MVTABX;                                          <<07243>>00347000
DOUBLE ARRAY TARGET,SOURCE;                                    <<07243>>00348000
OPTION EXTERNAL;                                               <<07243>>00349000
                                                               <<07243>>00350000
INTEGER PROCEDURE GENMSG(SETNO,MSGNO,M,P1,P2,P3,P4,P5,         <<*7977>>00351000
         D,R,O,DST,C);                                         <<*7977>>00351010
   VALUE SETNO,MSGNO,M,P1,P2,P3,P4,P5,D,R,O,DST,C;             <<*7977>>00351020
   INTEGER SETNO,MSGNO,D,DST;                                  <<*7977>>00351030
   LOGICAL M,P1,P2,P3,P4,P5,R,O,C;                             <<*7977>>00351040
   OPTION EXTERNAL,VARIABLE;                                   <<*7977>>00351050
                                                               <<*8898>>00351060
PROCEDURE CHECKDISC (LDN, STAT);                               <<*8898>>00351070
   VALUE LDN;                                                  <<*8898>>00351080
   INTEGER LDN;                                                <<*8898>>00351090
   LOGICAL STAT;                                               <<*8898>>00351100
   OPTION PRIVILEGED, UNCALLABLE, EXTERNAL;                    <<*8898>>00351110
$PAGE "         *** DISKED2 *** "                              <<07977>>00352000
$EDIT VOID=00387000                                                     00387000
$PAGE "     LIO "                                              <<07434>>00406000
$PAGE "     DIO "                                              <<07434>>00452000
   TOS:=ATTACHIO(DDU,0,0,@DBUF,FUNC,SECSIZE,SECTN1,SECTN2,     <<*8804>>00472000
                 %4001);   << wait for I/O completion >>       <<*8804>>00472100
$PAGE "     CONTROLY "                                         <<07434>>00517000
$PAGE "   FILEOPEN "                                           <<07434>>00588000
$EDIT                                                          <<06516>>00605000
   << Obtain remote LDEV via FFILEINFO into the variable    >> <<06758>>00658300
   << DDU and the disk address of the file.  Check to insure>> <<06758>>00658310
   << that it a local  disk file (remote LDEV = 0 and the   >> <<06758>>00658400
   << disk address is not zero).                            >> <<06758>>00658500
   FFILEINFO(LFN,51,DDU,      << Obtain remote LDEV, if one.>> <<06758>>00658800
                 19,FLABADDR);<< Obtain file label address. >> <<06758>>00658900
   IF FLABADDR = 0D OR DDU <> 0 THEN                           <<06758>>00660400
$EDIT VOID=720000                                              <<07243>>00698000
   << Convert volume table indexes to LDEV's.               >> <<07243>>00700000
                                                               <<07243>>00704000
   VTABTOLDEV(EXTMAP,EXTMAP,FLNUMEXTS+1,FLMVTABX);             <<07243>>00706000
$PAGE  " READSECTOR "                                          <<07434>>00725000
      SECTA:=EXTMAP(EXT)+DOUBLE(SECTL MODD LOGICAL(FLEXTSIZE));<<06516>>00918000
$PAGE  " SETCHECKSUM "                                         <<07434>>00938000
$PAGE  " **************** OUTER BLOCK **************** "       <<07434>>00972000
   IF PCB'SIZE <> MPEV'PCB'SIZE THEN                           <<07242>>00982100
      BEGIN                                                    <<07242>>00982200
$EDIT VOID=00982300                                            <<*7977>>00982300
       GENMSG (2,1259);                                        <<*7977>>00982400
      TERMINATE;                                               <<07242>>00982500
      END;                                                     <<07242>>00982600
   CYADDR := @LOOP;    <<CONTINUATION ENTRY POINT>>            <<07434>>00996000
$EDIT VOID=01022000                                            <<07434>>01020000
$EDIT VOID=01038000                                            <<07434>>01032000
   TOS := SVAL;                                                <<07434>>01042000
   TOS := QVAL; SET (Q);                                       <<07434>>01045000
   IF PM'CAP THEN                                              <<07434>>01164100
      DEBUG                                                    <<07434>>01166000
   ELSE                                                        <<07434>>01166100
      BEGIN                                                    <<07434>>01166200
      LEN := MOVE MSG :=                                       <<07434>>01166300
      " ** Privileged mode required to enter DEBUG";           <<07434>>01166400
      PRINT(MSG',-LEN,0);                                      <<07434>>01166500
      GO LOOP;                                                 <<07434>>01166600
      END;                                                     <<07434>>01166700
   MOVE MSG := (CR,"DISKED5 allows to dump and/or ",           <<*8511>>01174000
   END;                                                        <<*8898>>01268000
                                                               <<*8898>>01269000
   << Check to see if disc is on-line >>                       <<*8898>>01269010
   CHECKDISC (LDEV, STAT);                                     <<*8898>>01269020
   IF STAT.OFFLINE THEN                                        <<*8898>>01269030
      BEGIN                                                    <<*8898>>01269040
      MOVE MSG := "DISC IS OFF-LINE",2;                        <<*8898>>01269050
      LEN := TOS-@MSG;                                         <<*8898>>01269060
      PRINT (MSG',-LEN,0);                                     <<*8898>>01269070
      GO ERROR;                                                <<*8898>>01269080
      END                                                      <<*8898>>01269090
   IF <> THEN QUIT(0);                                         <<07434>>01330000
