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