Trailing-Edge
-
PDP-10 Archives
-
integ_tools_tops20_v7_30-apr-86_dumper
-
tools/dumper2/bigdumper.for
There are 2 other files named bigdumper.for in the archive. Click here to see a list.
PROGRAM DUMPER
C
C A program to read files from a DEC-10 BACKUP format
C magtape or from a DEC-20 DUMPER format magtape.
C
C COMLINE -- Command line from user
C COMLEN -- Length of command line
C STATUS -- Status code from I/O routines
C
IMPLICIT COMPLEX (A-Z)
C
INCLUDE 'DMPCOM.FOR/NOLIST'
C
CHARACTER*255 COMLINE
INTEGER*2 COMLEN
INTEGER*4 STATUS
C
C External addresses that are needed
C
EXTERNAL DMPINIT,DMPKEY
C
C Goodies for Control-C interrupt handling
C
INTEGER*4 SYS$ASSIGN,SYS$QIOW,SYS$DASSGN
EXTERNAL IO$_SETMODE,IO$M_CTRLCAST
EXTERNAL DUMPER_NOCTLC,DUMPER_ABORT,INTHAND
INTEGER*4 IOFUNC
C
C Wake up America! DUMPER is here...
C
TYPE 10
10 FORMAT(' BIGDUMPER Version 1.2A (32767 byte lines maximum)',/,
2 ' For help, type HELP.')
C
C Init for Control-C Interrupt handling
C
STATUS = SYS$ASSIGN('TT',TERCHAN,,)
IF (.NOT.STATUS) THEN
CALL ERRORM(%LOC(DUMPER_NOCTLC))
ABFLAG = .FALSE.
ELSE
ABFLAG = .TRUE.
ENDIF
IOFUNC = %LOC(IO$_SETMODE)+%LOC(IO$M_CTRLCAST)
C
C Now enter the main loop. Essentially, it inputs
C a command line, dispatches to the appropriate
C part of the program that handles the action desired.
C
DONE = .FALSE.
BLKTYP = NONE
EOFSEEN = .TRUE.
DO WHILE (.NOT.DONE)
IF (ABFLAG) THEN
STATUS = SYS$QIOW(,%VAL(TERCHAN),%VAL(IOFUNC),,,,
1 INTHAND,,,,,)
IF (.NOT.STATUS) THEN
CALL ERRORM(%LOC(DUMPER_NOCTLC))
CALL ERRORM(STATUS)
ENDIF
ABFLAG = .FALSE.
ENDIF
SIGN = 0
GOVALUE = 0
CALL LIB$GET_INPUT(COMLINE,'BIGDUMPER> ',COMLEN)
CALL STR$UPCASE(COMLINE(1:COMLEN),COMLINE(1:COMLEN))
CALL COMMAND(COMLINE(1:COMLEN),DMPINIT,DMPKEY,STATUS)
IF (.NOT.STATUS) TYPE 110
110 FORMAT(' For help, type HELP')
IF (ABFLAG) CALL ERRORM(%LOC(DUMPER_ABORT))
ENDDO
END
SUBROUTINE INTHAND
C
C This will set the flags so that the DUMPER program will come
C to a stop (a restartable one, by the way...). Normally called
C as a result of the user typing Control-C.
C
INCLUDE 'DMPCOM.FOR/NOLIST'
C
GOVALUE = 0
ABFLAG = .TRUE.
RETURN
END
BLOCK DATA
C
C Common block initialization for DUMPER
C
INCLUDE 'DMPCOM.FOR'
DATA SIGN,SKIPNO,DONE,GOVALUE,CHANNEL,DEVLEN,GOTDEV
1 /0,0,.FALSE.,0,0,0,.FALSE./
DATA EOFSEEN,FILEOK,IOMODE/.FALSE.,.FALSE.,ASCII/
DATA DEVNAME/' '/
INCLUDE 'DMPRES.FOR'
DATA RESCNT/1/
END