ASMB,R,L,C
      HED 'DBRST' ROUTINE OF 'DBUS' 
      NAM DBRST,3 92063-16005 REV.1840 780717 
* 
* 
**************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL RIGHTS    *
* RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
* PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
* OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
**************************************************************
* 
* 
*     LISTING:   92063-19005
*     SOURCE:    92063-18005
*     RELOC:     92063-16005
* 
* 
************************************************************* 
* 
*                                                                  *
*                                                                  *
********************************************************************
*                                                                  *
*                                                                  *
*     DBRST ROUTINE OF DBUS                                        *
*                                                                  *
*         TURN ON SEQUENCE:                                        *
*             :RU,DBRST,CONSOLE LU,MAG TAPE LU                     *
*                                                                  *
*               WHERE DEFAULTS ARE: CONSOLE=LU 1                   *
*                                   MAG TAPE=LU 8                  *
*                                                                  *
*         OUTPUT:                                                  *
*                   NO ERROR - 1) SPECIFIED ROOT FILE AND DATA     *
*                                 BASE RESTORED FROM MAGNETIC TAPE *
*                              2) COMPLETION MESSAGE WRITTEN TO    *
*                                 SYSTEM CONSOLE                   *
*                                                                  *
*                   ERROR    - ERROR NUMBER WRITTEN TO SYSTEM      *
*                              CONSOLE                             *
*                                                                  *
*                                                                  *
*         FUNCTION:                                                *
*                   'DBRST' PROMPTS THE USER FOR INFORMATION       *
*                   ABOUT THE ROOT FILE AND DATA BASE TO           *
*                   RESTORE.  IF THE INFORMATION AND TAPE ARE      *
*                   VALID THE ROOT FILE AND DATA BASE ARE          *
*                   RESTORED TO DISC, SECTOR BY SECTOR, FROM       *
*                                                                  *
********************************************************************
*                                                                  *
*                                                                  *
      ENT DBRST 
      EXT EXEC,PHIMV,PHIMC,PHICM,CMPCT
      EXT PURGE,CLOSE,FMERR,CREAT,WRITF,DBSPC,RMPAR 
      SPC 3 
      SUP PRESS 
********************************************************************
*                                                                  *
*     EQUATES                                                      *
*                                                                  *
********************************************************************
A     EQU 0         A REGISTER
B     EQU 1         B REGISTER
H8BT  OCT 377 
D2    DEC 2 
D10   DEC 10
D11   DEC 11
RCODE DEC 1         READ CODE = 1 
WCODE EQU D2        WRITE CODE = 2
L8BT  OCT 177400
MD3   DEC -3
D3    DEC 3 
D4    DEC 4 
QCODE DEC 6 
D6    EQU QCODE 
ERRML DEC 7         LENGTH OF ERROR MESSAGE 
H8BTA OCT 17
DSCWD EQU WCODE 
DBNML DEC 8         NAME MSG LENGTH 
      SKP 
************************************************************************
*                                                                  *   *
*     RUN TABLE FOR IMAGE-DBMS                                     *   *
*                                                                  *   *
*         THE RUN TABLE IS COMPRISED OF THE FOLLOWING SECTIONS:    *   *
*                                                                  *   *
*              1) DATA BASE CONTROL BLOCK                          *   *
*              2) ITEM TABLE                                       *   *
*              3) DATA SET TABLE                                   *   *
*                                                                  *   *
*         THESE SECTIONS APPEAR IN THE ORDER DESCRIBED.            *   *
*         DETAILS OF EACH SECTION FOLLOW.                          *   *
*                                                                  *   *
************************************************************************
*****                                                          *********
*                                                                  *   *
*     DATA BASE CONTROL BLOCK                                      *   *
*                                                                  *   *
*****                                                          *********
DBLNG DEC 55        DATA BASE CONTROL BLOCK LENGTH
DBZ   DEC 0 
DBSTA EQU D3
DBSCD EQU D4        DATA BASE SECURITY CODE(FMP ) 
DBICT DEC 5         DATA BASE ITEM COUNT
DBSCT EQU D6        DATA BASE DATA SET COUNT
DBITB DEC 7         ADDRESS OF ITEM TABLE 
DBSTB DEC 8         ADDRESS OF DATA SET TABLE 
DBLMD DEC 9         DATA BASE ACCESS LEVEL AND MODE 
DBLVL EQU DBZ+9     1ST BYTE: ACCESS LEVEL GRANTED BY 'DBOPN' 
DBMOD EQU DBZ+9     2ND BYTE: MODE GRANTED BY 'DBOPN' 
DBILV EQU D10       DATA BASE ITEM LEVEL WORDS - 3 WORDS/LEVEL
DBOCT EQU DBZ+10    DATA SET OPEN COUNT 
*****                                                          *********
*                                                                  *   *
*     ITEM TABLE - ONE FIVE-WORD ENTRY PER ITEM                    *   *
*                                                                  *   *
*****                                                          *****
ITLNG EQU DBZ+5     ITEM ENTRY LENGTH 
ITNME EQU DBZ       ITEM NAME(LEFT JUSTIFIED) 
ITRWL EQU DBZ+3     ITEM READ/WRITE MINIMUM ACCESS LEVEL
ITRDL EQU DBZ+3     1ST BYTE: MINIMUM ACCESS LEVEL TO READ ITEM 
ITWRL EQU DBZ+3     2ND BYTE: MINIMUM ACCESS LEVEL TO WRITE ITEM
ITTDN EQU DBZ+4     ITEM TYPE AND DATASET NUMBER
ITTYP EQU DBZ+4     1ST BYTE: ITEM TYPE 
ITDSN EQU DBZ+4     2ND BYTE: ITEM DATASET NUMBER 
*****                                                          *********
*                                                                  *   *
*     DATA SET TABLE - COMPRISED OF THE FOLLOWING SECTIONS IN      *   *
*                      THE ORDER PRESENTED:                        *   *
*                                                                  *   *
*                        1) DATA SET CONTROL BLOCK                 *   *
*                        2) RECORD DEFINITION TABLE                *   *
*                        3) MASTER PATH TABLE, DETAIL PATH TABLE,  *   *
*                           OR NO PATH TABLE                       *   *
*                                                                  *   *
*****                                                          *********
*                                                                  *   *
*                                                                  *   *
***** DATA SET CONTROL BLOCK                                   *****
*                                                                  *   *
*                                                                  *   *
DSLNG DEC 16        DATA SET CONTROL BLOCK LENGTH 
DSTYP EQU DBZ       DATA SET TYPE 
DSMDL EQU DBZ+1     DATA SET MEDIA RECORD LENGTH
DSENL EQU DBZ+2     DATA SET LOGICAL RECORD LENGTH
DSFPC EQU DBZ+3     DATA SET FIELDS/ENTRY AND PATHS/ENTRY 
DSFCT EQU DBZ+3     1ST BYTE: FIELDS/ENTRY
DSPCT EQU DBZ+3     2ND BYTE: PATHS/ENTRY 
DSCPN EQU DBZ+4     DATA SET SRCH FIELD NO. AND PATH NO. OF CURR. CHAIN 
DSCCT EQU DBZ+4     1ST BYTE: FIELD NUMBER OF SRCH ITEM(0 IF DETAIL)
DSPAN EQU DBZ+4     2ND BYTE: PATH NUMBER OF CURRENT CHAIN
DSPAT EQU DBZ+5     ADDRESS OF PATH TABLE 
DSFRC EQU DBZ+6     FREE CHAIN COUNT(DETAIL)/FREE RECORD COUNT(MASTER)
DSFRH EQU DBZ+7     0 OR RECORD NO.OF 1ST FREE RECORD IN CHAIN
DSRCN EQU DBZ+8     LAST ACCESSED RECORD NUMBER 
DSPAL EQU DBZ+9     0 OR PATH LENGTH OF CURRENT CHAIN 
DSCHF EQU DBZ+10    0 OR RECORD NUMBER OF CURRENT CHAIN FOOT
DSFWN DEC 11        0 OR NEXT RECORD NUMBER IN CHAIN
DSNME DEC 12        DATA SET NAME(LEFT JUSTIFIED) 
DSCAP DEC 15        CAPACITY(MAXIMUM NUMBER OF RECORDS) 
*                                                                  *   *
*                                                                  *   *
***** RECORD DEFINITION TABLE - ONE ONE-WORD ENTRY PER FIELD   *********
*                                                                  *   *
*                                                                  *   *
RDLNG EQU DBZ+1     RECORD DEFINITION TABLE ENTRY LENGTH
RDINF EQU DBZ       ITEM NUMBER OF FIELD,ITEM LENGTH AND ACCESSABILITY
RDITN EQU DBZ       1ST BYTE: ITEM NUMBER OF FIELD
RDILA EQU DBZ       2ND BYTE: ITEM LENGTH AND R/W ACCESSABILITY 
RDITL EQU DBZ       1ST 6 BITS: ITEM LENGTH 
RDWRA EQU DBZ       7TH BIT: ITEM WRITE ACCESSABILITY 
RDRDA EQU DBZ       8TH BIT: ITEM READ ACCESSABILITY
*                                                                  *
*                                                                  *
***** PATH TABLE(MASTER) - ONE TWO-WORD ENTRY PER PATH         *****
*                                                                  *
*                                                                  *   *
PTMLG EQU DBZ+2     MASTER PATH TABLE ENTRY LENGTH
PTMSD EQU DBZ            DETAIL DATASET SRCH ITEM NO. AND DATA SET NO.
PTMSN EQU DBZ            1ST BYTE: DETAIL DATA SET SEARCH ITEM NUMBER 
PTMDN EQU DBZ            2ND BYTE: DETAIL DATA SET NUMBER 
PTMPS EQU DBZ+1          DETAIL DATA SET PATH NUMBER AND SCRATCH
PTMPN EQU DBZ+1          1ST BYTE: DETAIL DATA SET PATH NUMBER
PTMSC EQU DBZ+1          2ND BYTE: SCRATCH
*                                                                  *   *
*                                                                  *   *
***** PATH TABLE(DETAIL) - ONE TWO-WORD ENTRY PER PATH         *********
*                                                                  *   *
*                                                                  *   *
PTDLG EQU DBZ+2     DETAIL PATH TABLE ENTRY LENGTH
PTDSM EQU DBZ       SEARCH FIELD NO. IN DETAIL AND MASTER DATA SET NO.
PTDSF EQU DBZ       1ST BYTE: SEARCH FIELD NUMBER IN DETAIL 
PTDMN EQU DBZ       2ND BYTE: MASTER DATA SET NUMBER
PTDPS EQU DBZ+1     MASTER DATA SET PATH NUMBER AND SCRATCH 
PTDPN EQU DBZ+1     1ST BYTE: MASTER DATA SET PATH NUMBER 
PTDSC EQU DBZ+1     2ND BYTE: SCRATCH 
      SKP 
********************************************************************
*                                                                  *
*     VERIFY THAT THE LOGICAL UNIT IS VALID AND READ THE           *
*     TAPE HEADER                                                  *
*                                                                  *
********************************************************************
DBRST NOP 
      JSB RMPAR 
      DEF *+2 
      DEF CONSL 
* 
      JSB DBSPC 
      DEF *+4 
      DEF PNAME 
      DEF FWAM
      DEF LWAM
* 
      LDA MT
      SZA,RSS 
      LDA D8
      STA MT
      CMA,INA 
      ADA D63 
      SSA           VALID LOG. UNIT NO. ? 
      JSB ER1       NO
      LDA CONSL 
      SZA,RSS 
      CLA,INA 
      IOR B400
      STA TECWD     SET LU CONTROL WORD 
      LDA MT
      STA TPCNW     BUILD TAPE CONTROL WORD 
      JSB IACVT     CONVERT LOGICAL UNIT TO ASCII 
      LDA CELL
      STA LUNIT     SAVE ASCII LOGICAL UNIT 
      LDA TPCNW     BUILD TAPE REWIND CONTROL WORD
      IOR RWMSK 
      STA RWCNW 
      LDA TPCNW     BUILD TAPE DYMAMIC CONTROL WORD 
      IOR DYMSK 
      STA DYCNW 
      LDA TPCNW     BUILD TAPE BACKSPACE CONTROL WORD 
      IOR BSMSK 
      STA BSCNW 
      ISZ TSEQ
      LDA D9        LENGTH OF RCD TO READ 
      LDB AHDR      READ BUFFER 
      JSB TAPER     READ TAPE HDR 
      LDA AHDR      ADDR OF TAPE BUFFER 
      LDB D6        LENGTH OF TAPE HDR ID 
      STB CMPCT 
      LDB ATPHD     ADDR OF TAPE ID 
      JSB PHICM     VALID HDR 
      JSB ER2       NO
      SPC 3 
********************************************************************
*                                                                  *
*     PROMPT USER FOR DATA BASE NAME, SECURITY CODE, AND LEVEL     *
*     15 WORD.  CHECK SECURITY CODE AND LEVEL 15 WORD.             *
*                                                                  *
********************************************************************
      JSB BLNKB     BLANK RESPONSE BUFFER 
      LDA ADBNM     GET DATA BASE NAME
      LDB DBNML 
      JSB TERMW 
      JSB TERMR 
      LDA ADBSM     GET DATA BASE SECUTITY CODE 
      LDB DBSML 
      JSB TERMW 
      JSB TERMR 
      LDA ASCDE 
      STA ATSCD 
      LDA A,I 
      ALF,ALF 
      AND H8BTA 
      STA SCODE 
      LDA ASCDE,I 
      JSB COMP
      JMP GLVLW 
      ISZ ATSCD 
      LDA ATSCD,I 
      ALF,ALF 
      JSB COMP
      JMP GLVLW 
      LDA ATSCD,I 
      JSB COMP
      JMP GLVLW 
      ISZ ATSCD 
      LDA ATSCD,I 
      ALF,ALF 
      JSB COMP
      JMP GLVLW 
GLVLW EQU * 
      LDA ADBLM     GET DATA BASE LEVEL WORD
      LDB DBLML 
      JSB TERMW 
      JSB TERMR 
* 
      LDA LWAM      IS
      CMA,INA         THERE 
      ADA FWAM          ENOUGH
      ADA RTSIZ           ROOM
      SSA,RSS               FOR ROOT FILE?
      JMP ER7       NO! 
      LDA SC        GET ROOT FILE SECURITY CODE 
      CMA,INA 
      CPA SCODE     GOOD SECURITY CODE ?
      RSS           YES 
      JSB ER3       NO
      CMA,INA 
      STA SCOD      SET UP FILE SECURITY CODE 
      LDA RTSIZ     READ
      LDB FWAM        ROOT
      JSB TAPER         FILE INTO FREE SPACE
      LDA AROOT     GET LEVEL WORD 15 ADDR
      ADA DBLNG 
      ADA MD3 
      LDB A,I       GET 1ST WORD OF LEVEL 15
      CPB BLNKD     ANY LEVEL WORDS ? 
      JMP ROOTW     NO
      LDB D3        LEVEL WORD LENGTH 
      STB CMPCT 
      LDB ALEVL     ADDR OF USER SUPPLIED LEVEL WORD
      JSB PHICM     GOOD LEVEL WORD ? 
      JSB ER4       NO
      SPC 3 
      SKP 
********************************************************************
*                                                                  *
*     CREATE ROOT FILE
*                                                                  *
********************************************************************
ROOTW EQU * 
      LDA D3
      STA PHIMC 
      LDA ANAME 
      LDB TNAM
      JSB PHIMV 
      LDA D11       SET UP
      STA TYPE        FILE TYPE 
      CLB 
      LDA RTSIZ 
      STA LEN       SET UP WRITE LENGTH 
      DIV D128
      INA 
      STA SIZE      SET UP ROOT FILE SIZE 
      LDA CRNO
      STA CR        SET UP CARTRIDGE NUMBER 
      LDA ANAME     ADDR OF ROOT FILE NAME
      JSB FCRET     CREATE ROOT FILE
      LDA FWAM      GET 
      ADA DBSCT       DATA SET
      LDA A,I           COUNT 
      CMA,INA       SET UP INDEX
      STA DINX
      LDA FWAM      ADDRESS OF ROOT FILE
      JSB FILWR     RESTORE ROOT FILE 
RNXPN EQU * 
      LDA D10       RECORD LENGTH 
      LDB AHDR      READ BUFFER 
      JSB TAPER     READ FILE HDR 
      JSB TSTAT     CHECK TAPE I/O STATUS 
      LDA STATS 
      AND MASK5     END OF TAPE ? 
      SZA,RSS 
      JMP GO
      JSB EOT       END OF TAPE 
      JMP RNXPN 
GO    EQU * 
      LDA D4        COMPARE LENGTH
      STA CMPCT 
      LDA APNHD     ADDR OF DATA HDR ID 
      LDB AHDR      ADDR OF FILE HDR
      JSB PHICM     VALID HDR ? 
      JSB ER2       NO
      LDB AHDR      GET 
      ADB D7          CARTRIDGE 
      LDA B,I           NUMBER
      STA CR              AND 
      INB                   FILE LENGTH 
      LDA B,I                 AND 
      STA FLGTH                 RECORD LENGTH 
      INB 
      LDA B,I 
      STA RLGTH 
      STA LEN       SET UP FOR RECORD WRITE 
      MPY FLGTH     COMPUTE FILE
      DIV D128        SIZE
      INA 
      STA SIZE
      LDA D3        MOVE LENGTH 
      STA PHIMC 
      LDA AHDR      ADDRESS OF DATA 
      ADA D4          SET NAME
      LDB ANAME     ADDR OF NAME BUFFER 
      JSB PHIMV     MOVE PACK NO. NAME
      LDA D2        SET UP
      STA TYPE        FILE TYPE 
      LDA ANAME     ADDR OF DATA SET NAME 
      JSB FCRET     CREATE DATA SET FILE
* 
      LDA FLGTH     SET UP
      CMA,INA         NO. OF
NXBLK STA FINX          RECORDS/FILE
ONEOT LDA D1300     LENGTH OF RCD TO READ 
      LDB FWAM      READ BUFFER 
      JSB TAPER     READ DATA BLOCK FROM TAPE 
      JSB TSTAT     CHECK TAPE I/O STATUS 
      LDA STATS 
      AND MASK5     END OF TAPE ? 
      SZA,RSS 
      JMP FWD 
      JSB EOT       END OF TAPE 
      JMP ONEOT     TRY AGAIN 
FWD   EQU * 
      CLB           COMPUTE 
      LDA D1300       NUMBER
      DIV RLGTH         OF RECORD/TAPE BLOCK
      STA R/BLK 
      CMA,INA       SET 
      STA RINX        UP RECORD INDEX 
      CMA,INA 
      ADA FINX
      SSA           SHORT BLOCK?
      JMP SHTBL     NO! 
      LDA FINX      YES 
      STA RINX
      CMA,INA 
      STA R/BLK 
SHTBL LDA FWAM
NXREC STA TEMP
      JSB FILWR     WRITE RECORD TO DISC
      LDA TEMP      INCREMENT 
      ADA RLGTH       BUFFER POINTER
      ISZ RINX      DONE WITH THIS TAPE RECORD? 
      JMP NXREC     NO! 
      LDA FINX      YES!
      ADA R/BLK     DONE
      SSA             WITH THIS DATA SET FILE?
      JMP NXBLK     YES!
      ISZ DINX      DONE WITH ALL DATA SETS?
      JMP RNXPN     NO! 
* 
      SPC 3 
* 
*** 
***  CHANGE REV 1840
* 
*  CLOSE FINAL DATA SET'S DCB.
* 
      JSB CLOSE 
       DEF *+2
       DEF DCB
* 
*** 
*** 
********************************************************************
*                                                                  *
*     WRITE TERMINATION MESSAGE AND RETURN TO SYSTEM               *
*                                                                  *
********************************************************************
      JSB EXEC      TAPE REWIND EXEC
      DEF *+3 
      DEF RWIND 
      DEF RWCNW 
      LDA TSEQ
      JSB IACVT     CONVERT TAPE SEQ NO. TO ASCII 
      LDA CELL
      STA ASQ       INSERT TAPE SEQ NO. 
      LDA RM2 
      LDB D7
      JSB TERMW     DISPLAY EOT MESSAGE 
      LDA AENDM     ADDR OF END MSG 
      LDB ENDML     END MSG LENGTH
      JSB TERMW     WRITE END MSG 
      JMP EXIT
      SKP 
                                                                                                            