FTN4,Q,C PROGRAM DISK(3,90),92067-16348 REV.2026 800502 C***************************************************************** C* * C* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * C* RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * C* REPRODUCED OR TRANSLATED TO ANOTHER PROGRAMMING LANGUAGE * C* WITHOUT THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD * C* COMPANY. * C* * C***************************************************************** C C NAME: DISK C SOURCE: 92067-18348 C RELOC: PART OF 92067-12003 C PGMR: J.S.W C C DIMENSION IXBUF(8209),IHDR(247),IREG(2), X IBUF(8192),ITX32(161),ISUBC(5), X ICMD(10),IPBUF(10),ITASK(3) C C EQUIVALENCE (IBUF(1),IXBUF(17)), X (REG,IA,IREG),(IB,IREG(2)), X (ITX32,IHDR(77)), X (ISUBC(1),IHDR(239)), X (LU2,IHDR(244)), X (LSAVEN,IHDR(245)) C C COMMON IXBUF,IHDR,ICMD DATA ITASK/2HTA,2HSK,2H? / C C GET S REGISTER, FIND OUT IF DVR05 OR DVR00 AND FIX EQT1 C ISR=0 CALL BOOTC(ISR) IF(ISR.EQ.-1) GO TO 40 MTSC=IAND(ISR,7700B)/100B IF(MTSC.NEQ.0) CALL FXTBL(8,MTSC) C ITSC=IAND(ISR,77B) IF(ITSC.NEQ.0) CALL FXTBL(1,ITSC) C CALL EXEC(2,1,36HDISK BACK UP UTILITY REV.2026 800502,-36) C C CALL LISIO ITBG=IXGET(1674B) CALL CNUMO(ITBG,IBUF) CALL EXEC(2,1,18HSEL. CODE OF TBG=_,-18) CALL EXEC(2,1,IBUF,-6) C C C GET S.C. FOR DVR32,DVA32 C 20 CALL EXEC(2,1,34HENTER SELECT CODE FOR DVR32,DVA32:,-34) C CALL EXEC(1,401B,ICMD,-20) CALL ABREG(IA,IB) IF(ICMD(1).EQ.2H/E.OR.ICMD.EQ.2HEN.OR.ICMD.EQ.2HEX) GO TO 40 LEN=IB IPTR=1 CALL ASCOC(ICMD,IPTR,LEN,ISC1) CALL ASCOC(ICMD,IPTR,LEN,ISC2) IF(ISC1.LT.77B.AND.ISC2.LT.77B) GO TO 30 C CALL EXEC(2,1,17HERROR- S.C. GT 77,-17) GO TO 20 C 30 IF(ISC1.LE.-1.OR.ISC2.LE.-1) GO TO 999 C C LU 5 FOR 13037 DISCS C LU 4 FOR HPIB DISCS C IF(ISC1.NEQ.0) CALL FXTBL(5,ISC1) IF(ISC2.NEQ.0) CALL FXTBL(4,ISC2) C C C 40 MTLU=8 ITTY=1 ICMD(1)=2H ICMD(2)=2H ICMD(3)=2H CALL EXEC(2,ITTY,ITASK,-5) REG=EXEC(1,ITTY+400B,ICMD,-10) LEN=IB IF(ICMD(1).EQ.2HIO) CALL IOCON IF(ICMD(1).EQ.2HCO) CALL COPY IF(ICMD(1).EQ.2HRE) GO TO 70 IF(ICMD(1).EQ.2HRW) GO TO 100 IF(ICMD(1).EQ.2HAB) STOP IF(ICMD(1).EQ.2HFF.OR.ICMD(1).EQ.2HBF) GO TO 200 IF(ICMD(1).NEQ.2HIO.AND.ICMD(1).NEQ.2HCO.AND.ICMD(1).NEQ.2HRE) X GO TO 50 GO TO 40 50 CALL EXEC(2,ITTY,19HVALID COMMANDS ARE:,-19) CALL EXEC(2,ITTY,20HIO,CO,RE,RW,FF,BF,EN,-20) GO TO 40 C 70 CONTINUE CALL RESTR(IPBUF,LEN) GO TO 40 C C C CHECK MT STATUS C 100 CALL MTOK(MTLU,IER) IF(IER.NEQ.0) GO TO 40 C C REWIND MT C 105 CALL EXEC( 3,MTLU+400B) GO TO 40 C C C FORWARD SPACE C 200 CALL MTOK(MTLU,IER) IF(IER.EQ.0) GO TO 250 GO TO 40 C C 250 IPTR=1 IF(NAMR(IPBUF,ICMD,LEN,IPTR))40,252 252 NFILE=1 IF(NAMR(IPBUF,ICMD,LEN,IPTR)) 255,251 251 IF(IAND(IPBUF(4),3).EQ.1) NFILE=IPBUF 255 CALL EXEC(2,ITTY,31HFORWARD/BACKWARD N FILE(S): N=_,-31) CALL CNUMD(NFILE,IHDR) CALL EXEC(2,ITTY,IHDR,-6) DO 260 I=1,NFILE IF(ICMD(1).EQ.2HFF) CALL EXEC(3,MTLU+1300B) IF(ICMD(1).EQ.2HBF) CALL EXEC(3,MTLU+1400B) C C GET STATUS C CALL ABREG(ISTAT1,IB) 260 CONTINUE C C D WRITE(1,9999) ISTAT1 D9999 FORMAT("STAT=",@8) C C IF COMMAND IS BF, CHECK IF BOT IS DETECTED C IF NOT DO A BF AND FR TO PUT THE TAPE IN FRONT OF EOF C IF(IAND(ISTAT1,100B).EQ.100B) GO TO 40 IF(ICMD(1).EQ.2HFF) GO TO 40 C C BACKSPACE FILE, THEN FORWORD SPACE RECORD C CALL EXEC(3,MTLU+1400B) C C IF BOT NO FR C CALL ABREG(ISTAT1,IB) D WRITE(1,9999)ISTAT1 IF(IAND(ISTAT1,100B).EQ.100B) GO TO 40 CALL EXEC(3,MTLU+300B) GO TO 40 C C 999 CALL EXEC(2,1,17HINVALID SEL. CODE,-17) GO TO 20 END END$ ASMB,R,L NAM DISKB,7 92067-18348 REV.2001 791018 EXT .ENTR,$LIBR,$LIBX ENT BOOTC * * A EQU 0 B EQU 1 DRT EQU 1652B * SREG NOP BOOTC NOP JSB .ENTR DEF SREG * CCA INIT SREG TO -1 STA SREG,I ISZ FLAG IF FLAG IS NOT -1 JMP BOOTC,I NOT FIRST TIME, RETURN JSB $LIBR NOP CLF 0 TURN INTERRUPT OFF * LDA DRT,I CLB,INB SET LU 1 TO EQT 1 IOR B STA DRT,I * LIA 1 GET S REGISTER SZA,RSS IF ZERO JMP OUT GET OUT AND .7777 MASK OUT TBG S.C. STA SREG,I AND B77 MASK OUT CONSOLE S.C. STA CONSO LDA CN1 ADA CONSO STA CN1 LDA CN2 ADA CONSO STA CN2 LDA CN3 ADA CONSO STA CN3 LDA CN4 ADA CONSO STA CN4 LDA CN5 ADA CONSO STA CN5 LDA MRSET CN1 CLF 0 CN2 OTA 0 CN3 SFS 0 JMP OUT DVR05 LDA DRT,I GET DRT AND .3700 MASK OUT EQT# OF LU 1 ADA D3 SET LU 1 TO EQT 3 STA DRT,I RESET LU 1 LDA 1650B GET EQT ADDRESS ADA D30 MAKE EQT3 ADDRESS STA 1675B OUT CLA OTA 1 LDA C120K CN4 OTA 0,C CN5 STC 0,C JSB $LIBX DEF BOOTC * * D30 DEC 30 .7777 OCT 7777 FLAG DEC -1 CONSO NOP B77 OCT 77 MRSET OCT 150077 .3700 OCT 3700 C120K OCT 120001 D3 OCT 3 .1777 OCT 177700 LU DEC 1 * NAME: ASCOC * SOURCE: 92060-18348 * RELOC: 92060-16348 * PGMR: S.P.K. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * * *************************************************************** * ENT ASCOC ROUTINE TO CONVERT ASCII TO DEC OR OCTAL EXT .ENTR * ICHAR NOP IPTR NOP LEN NOP NUMB NOP * * ASCOC NOP JSB .ENTR DEF ICHAR * LDA D7 GET RADIX STA RADIX START CLA STA VAL LDA ICHAR STA INAM CCA STA NUMB,I SET NUMB TO -1 FOR ERROR LOOP LDA IPTR,I GET POINTER CMA,INA LEN > IPTR? ADA LEN,I SSA JMP ASCOC,I YES ERROR RETURN LDA IPTR,I CLB CLE,ERA SEZ INB SZB,RSS ADA N1 ADA INAM LDA A,I STA CWORD SZB ALF,ALF AND .377 CPA SPACE JMP IGNOR CPA COMMA JMP FINI CNVRT ADA .N60 CONVERT CMA,SSA,INA,RSS NEGATIVE NUMBER? JMP ERR YES,ERROR ADA RADIX CMA,SSA,INA,RSS INTEGER? JMP ERR NO,ERROR ADA RADIX BACK TO ORIGINAL NUMBER LDB RADIX CMB CLO ADA VAL ADD EXISTING VALUE TO THE NEW INTEGER 10 TIMES ISZ B JMP *-2 SOC IF OVERFLOW, ERROR JMP ERR STA VAL IGNOR ISZ IPTR,I LDA IPTR,I CMA,INA LEN-IPTR ADA LEN,I <0 ? SSA,RSS JMP LOOP JMP DONE LEN AUTO SEEK TO SPARE C 2. SEEK TO SPARE TRACK C 3. ADDRESS RECORD WITH SPARE TRACK ADDRESS C 4. INIT SPARE WITH DATA BUFFER FROM TAPE AND SETTING S, P BITS C ACCORDINGLY C MSK=0 SECTR=0 CALL XFMSK(LU,IDVID,MSK,IER) C CALL MXGTA (LU,IDVID,STRAK,SECTR,SCYL,SHED,SECT2,ISUBC) CALL XSEEK (LU,IDVID,SCYL,SHED,SECTR,S1,S2,IER) C