You are on page 1of 20

******************************************************************************* * SOURCE CODE and DOCUMENTATION COPYRIGHT (C) 1987 KEVIN G.

RHOADS AND THE * * HIGH VOLTAGE RESEARCH LAB., L.E.E.S, Massachusetts Institute of Technology * ******************************************************************************* ******************************************************************************* * * * This file is part of the DATAACQ.LIB library, other components are in files:* * INITOMA.FOR, GLABEL.FOR, LABELS.FOR, STAMP.FOR, TSTSUB.FOR, ETSTSUB.FOR, * * KTSTSUB.FOR, CTSTSUB.FOR, MTSTSUB.FOR, FRAMOP.FOR, AFROP.ASM and * * MORFROP.ASM. These routines build upon the routines in SCOPEBUS.LIB, which * * contains the low level interfacing to the IEEE-488 bus, the SENSOR I/O board* * and the PAR/OMA. This library should always be linked prior to SCOPEBUS, * * GRAPHICS, UTILS and ASMUTILS. The routines in DATAACQ.LIB are high level * * interface routines, frame operations & frame i/o, PAR programming and * * command & operator interface routines. * *-----------------------------------------------------------------------------* $SEGMENT FRAMES *compiler is directed to place object code in segment FRAMES * *-----------------------------------------------------------------------------* $CHAREQU *compiler is directed NOT to barf on CHARACTER and numeric data types mixed in* *same COMMON BLOCK or EQUIVALENCE * ******************************************************************************* * LIST OF ENTRY POINTS: * * * *SEGMENT FRAMES * * INTEGER*4 FUNCTION FRAMES(A128,A256,A512) * *-----------------------------------------------------------------------------* * SUBROUTINE OMASVO(FNAME,RUN,SHOT,DRIVE) * *-----------------------------------------------------------------------------* * SUBROUTINE PROFRM * ******************************************************************************* *---------------------------------------------------------------------INTEGER*4 FUNCTION FRAMES(A128,A256,A512) CHARACTER PROGNM*18,MAINLN*54,PADS*3,NCRUDQ*1,POLAR*2,TC*1,TCALGN(2)*1 CHARACTER*22 FRMTYP(-2:20) CHARACTER*20 FRAME,FRAME2,FLNM,DFRAME,FILNAM*24,FNAME CHARACTER*8 HEXOF,DATAHX,DBHEX,HAPS(32) REAL CHGVLT,TLASER INTEGER*4 CMAGF,XART,YART,XOP,YOP,XLOC,YLOC,ARRADR,PRPNTS,NOPNTS INTEGER*4 IXLEN,IYLEN,IIXLEN,IIYLEN,IXNUM,IYNUM,LENFR,LENTR,NTR INTEGER*4 TYPFRM,HEADER,RUNNUM,SHOTNO,BLKDS4,BLKDS1,BLKDSP,IJ INTEGER*4 ZLEN,ZMARK,ZPOINT,ALEN,AMARK,APOINT,AFMTYP,A512(0:131072) INTEGER*4 APMAIN,AP1,AP2,AP3,AP4,AP5,APZR,APMX,NDRIVE,NFRAME INTEGER*4 LNMAIN,LN1,LN2,LN3,LN4,LN5,LNZR,LNMX INTEGER*4 APS(0:7),LNS(0:7),IAPS(32),LENS(32) INTEGER*4 SENBAS,DATA,SENDAT INTEGER*2 IFOO,I2AND2,L2NOT,ISR,OSR,GETSR,LENXS(32),FNRNSN(32) INTEGER*2 DATA1,DATA2,DATAS(2),MS,A256(0:131072),LENYS(32) INTEGER*2 ASC,SCAN,KBF1,KBF2,ERR,IASC,ISCAN,IKBF1,IKBF2,IERR,TYPS(32) INTEGER*2 DEFBUF INTEGER*1 A128(0:131072) LOGICAL*4 DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,BIGGER LOGICAL*4 INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,QWERTY,NOISE,SKIP1L LOGICAL*4 DIDIT,EOT,NOREAD,DOUBLE,ONOFF,DBQQ,DOSCAN,GTFM,AUTFRM LOGICAL*2 RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS,LINESY,BUFGUD(32) LOGICAL*2 ABORT,ESCAPE,INTRPT,ISOU,ZVALID,ZZCORR,AVALID,AACORR LOGICAL*2 AUTMED,AUTMEN,BUFUSE(32),AUTSCO LOGICAL*1 FLAG77(0:24),ISGONG,ISIT,CBLNRM,CBLINV EQUIVALENCE (DATA,DATA1,DATAS(1)),(DATA2,DATAS(2))

EQUIVALENCE (ASC,IASC),(SCAN,ISCAN),(KBF1,IKBF1),(KBF2,IKBF2),(ERR,IERR) EQUIVALENCE (TCALGN(1),IASC),(TCALGN(2),TC) EQUIVALENCE (APS(0),APMAIN),(APS(1),AP1),(APS(2),AP2),(APS(3),AP3) EQUIVALENCE (APS(4),AP4),(APS(5),AP5),(APS(6),APZR),(APS(7),APMX) EQUIVALENCE (LNS(0),LNMAIN),(LNS(1),LN1),(LNS(2),LN2),(LNS(3),LN3) EQUIVALENCE (LNS(4),LN4),(LNS(5),LN5),(LNS(6),LNZR),(LNS(7),LNMX) COMMON /BLKPRM/CMAGF,XART,YART,XOP,YOP,XLOC,YLOC,ARRADR COMMON /OMABFR/APS,LNS,/OMACNT/IAPS,HAPS,LENS,/OMATYP/TYPS,LENXS,LENYS,FNR NSN COMMON /KEYGET/IASC,ISCAN,IKBF1,IKBF2,IERR,/OMABFL/BUFGUD,BUFUSE COMMON /SHFSTA/RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS,/OMADSK/NDRIVE,NFRAME COMMON /OMAPAR/IXNUM,IYNUM,INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,FRAME,QWERTY, IA128,SENBAS,SENDAT COMMON /OMAPR2/IIXLEN,IIYLEN,IXLEN,IYLEN,IA256,IA512,/SMOOTH/AUTMED,AUTMEN COMMON /PSYNCH/LINESY,/PARAFM/AUTFRM,/PARAUT/GTFM,/FRAMNG/LENFR,LENTR,NTR COMMON /BLKCNV/MAGNIF,LLHILO,CONTRS,BRIGHT,/OMANOW/CHGVLT,TLASER,POLAR COMMON /IPPENC/SKIP1L,NOISE,/OMADIT/DOSCAN,/STRBES/ISOU,/BUFDEF/DEFBUF COMMON /PARZQX/DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,DIDIT,EOT,NO READ,ONOFF, & DBQQ,FLAG77,ISGONG,ISIT,PADS,NCRUDQ,/PNTS/PRPNTS,NOPNTS COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/NTRVN/ABORT,ESCAPE,INTRPT COMMON /ZEROS/ZVALID,ZLEN,ZMARK,ZPOINT,ZZCORR,/PARCBL/CBLNRM,CBLINV COMMON /AMPLS/AVALID,ALEN,AMARK,APOINT,AACORR,AFMTYP COMMON /XFRAME/TYPFRM,FRMTYP,/NAMEPR/PROGNM,MAINLN,/SCOAUT/AUTSCO SAVE /NTRVN/,/KEYGET/,/SHFSTA/,/IPPENC/,/AMPLS/,/PARCBL/,/OMADSK/ SAVE /OMAPAR/,/OMAPR2/,/PARZQX/,/FILES/,/STRBES/,/BLKCNV/,/PNTS/ SAVE /OMADIT/,/OMANOW/,/PSYNCH/,/PARAFM/,/PARAUT/,/ZEROS/,/XFRAME/ SAVE /BLKPRM/,/OMABFR/,/OMACNT/,/OMATYP/,/OMABFL/,/SMOOTH/,/BUFDEF/ SAVE /SCOAUT/ SAVE INDEX EXTERNAL GETSR,HEXOF,I2AND2,IMED3 SAVE DATA INDEX/0/ BIGGER = SCAN.GT.93 PROGNM = 'DATACQ' III = 0 IZ = ZPOINT IMX = APOINT IA = IA256 IA1 = AP1 IA2 = AP2 IA3 = AP3 IA4 = AP4 IA5 = AP5 ARRADR = IA IF (.NOT.BUFUSE(2)) IA2 = 0 IF (.NOT.BUFUSE(3)) IA4 = 0 IF (.NOT.BUFUSE(8)) IA3 = 0 IF (.NOT.BUFUSE(9)) IA5 = 0 TYPFRM = 6 ISR = GETSR() SNOW = ISR.GE.$2000 3456 CONTINUE IF (IXLEN.GT.500) THEN PRINT *,'FRAMES: IXLEN = ',IXLEN,' SET TO 500 ' PRINT *,'MODE2D = ',MODE2D IXLEN = 500 CALL PAUSE(' ') ENDIF IF (IXLEN.LE.0) THEN

IXLEN = LENTR ENDIF IF (IXNUM.LE.0) THEN IXNUM = LENTR ENDIF IIXLEN = IXLEN IF (IYLEN.LE.1) THEN IYLEN = NTR ENDIF IF (IYNUM.LE.1) THEN IYNUM = NTR ENDIF IIYLEN = IYLEN MODE2D = NTR.GT.1 LENGTH = IXLEN*IYLEN*2 IF (LENGTH.EQ.0) THEN CALL CRCLS PRINT *,' FRAME SIZE IS NON-SENSICAL - REMEASURING ' IYNUM = 0 IXNUM = 0 IYLEN = 0 IXLEN = 0 JI = 0 ASC = 0 SCAN = 361 IJ = PACONT(A128,JI) GOTO 3456 ENDIF IF (LENGTH.GT.170000) LENGTH = 170000 IF (ZZCORR.AND.AACORR.AND.BUFUSE(9)) THEN LLL = LENGTH CALL IICOPY(IA4,IA5,LLL) TYPS(9) = TYPS(3) LENXS(9) = LENXS(3) LENYS(9) = LENYS(3) FNRNSN(9) = FNRNSN(3) FNRNSN(3) = 0 ENDIF IF ((AACORR.OR.ZZCORR).AND.BUFUSE(8)) THEN LLL = LENGTH CALL IICOPY(IA2,IA3,LLL) TYPS(8) = TYPS(2) LENXS(8) = LENXS(2) LENYS(8) = LENYS(2) FNRNSN(8) = FNRNSN(2) FNRNSN(2) = 0 ENDIF IF (BUFUSE(7).OR.(BUFGUD(7).AND.BUFGUD(8))) THEN LLL = LENGTH IF (INDEX.NE.0.AND.INDEX.NE.1024) INDEX = 0 IJ = IA + INDEX CALL IICOPY(IJ,IA1,LLL) TYPS(7) = TYPS(1) LENXS(7) = LENXS(1) LENYS(7) = LENYS(1) FNRNSN(7) = FNRNSN(1) ENDIF FNRNSN(1) = 0 DEFBUF = 1 INDEX = 0

IF ((SCAN.EQ.84.OR.SCAN.EQ.94.OR.SCAN.EQ.104).OR. & (SCAN.EQ.85.OR.SCAN.EQ.95.OR.SCAN.EQ.105)) THEN * TAREA CALL CRCLS CALL LEDSET(5) 8001 PRINT *,'ASYNCH TST READ: How many points? (0=MAX / -number=abort)' READ (*,9878,ERR=8001) LENGTH IF (LENGTH.LT.0) GOTO 2 LENGTH = LENGTH*4 IF (LENGTH.LE.0.OR.LENGTH.GT.524288) LENGTH = 524288 PRINT *,'CLEARING ... ' CALL LEDUP CALL ZAPIT(A512,LENGTH) PRINT *,'READING ... ' CALL LEDUP IF (MOD(SCAN,2).EQ.0) THEN IF (BIGGER.AND.CBLINV) THEN CALL TARNID(A512,LENGTH) ELSEIF (CBLINV) THEN CALL TAREID(A512,LENGTH) ELSEIF (BIGGER) THEN CALL TARNSD(A512,LENGTH) ELSE CALL TAREAD(A512,LENGTH) ENDIF ELSE IF (BIGGER.AND.CBLINV) THEN CALL RARNID(IA512,LENGTH) ELSEIF (CBLINV) THEN CALL RAREID(IA512,LENGTH) ELSEIF (BIGGER) THEN CALL RARNSD(IA512,LENGTH) ELSE CALL RAREAD(IA512,LENGTH) ENDIF ENDIF WRITE (11,7898) LENGTH TYPS(1) = 6 * IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP III = BLKDS4(A512,IIXLEN,IIYLEN) WRITE (11,7898) LENGTH * ENDIF * IF (HEXIT) CALL AHEX2(A512,1,LENGTH) QWERTY = .TRUE. ELSEIF ((SCAN.EQ.86.OR.SCAN.EQ.96.OR.SCAN.EQ.106).OR. & (SCAN.EQ.87.OR.SCAN.EQ.97.OR.SCAN.EQ.107)) THEN * TSREA CALL CRCLS CALL LEDSET(5) 8003 PRINT *,'SYNCH TST READ: How many points? (0=MAX / -number=abort)' READ (*,9878,ERR=8003) LENGTH IF (LENGTH.LT.0) GOTO 2 LENGTH = LENGTH*4 IF (LENGTH.LE.0.OR.LENGTH.GT.524288) LENGTH = 524288 PRINT *,'CLEARING ... ' CALL LEDUP CALL ZAPIT(A512,524288)

PRINT *,'READING ... ' CALL LEDUP IF (MOD(SCAN,2).EQ.0) THEN IF (BIGGER.AND.CBLINV) THEN CALL TSRNID(A512,LENGTH) ELSEIF (CBLINV) THEN CALL TSREID(A512,LENGTH) ELSEIF (BIGGER) THEN CALL TSRNSD(A512,LENGTH) ELSE CALL TSREAD(A512,LENGTH) ENDIF ELSE IF (BIGGER.AND.CBLINV) THEN CALL RSRNID(IA512,LENGTH) ELSEIF (CBLINV) THEN CALL RSREID(IA512,LENGTH) ELSEIF (BIGGER) THEN CALL RSRNSD(IA512,LENGTH) ELSE CALL RSREAD(IA512,LENGTH) ENDIF ENDIF WRITE (11,7898) LENGTH TYPS(1) = 6 LENXS(1) = LENTR LENYS(1) = NTR IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP III = BLKDS4(A512,IIXLEN,IIYLEN) WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL AHEX2(A512,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.88.OR.SCAN.EQ.98.OR.SCAN.EQ.108) THEN * FAREA CALL CRCLS CALL LEDSET(6) 8005 PRINT *,'FAREA?: How many data bytes? (0 = MAX / -number = abort)' READ (*,9878,ERR=8005) LENGTH IF (LENGTH.LT.0) GOTO 2 PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) THEN GOTO 2 ELSEIF (I.LE.5) THEN LENGTH = LENGTH*2 ENDIF IF (LENGTH.LE.0.OR.LENGTH.GT.524288) LENGTH = 524288 PRINT *,'READING ... ' CALL LEDUP IF (BIGGER.AND.CBLINV) THEN IF (I.LE.5) THEN CALL FARNID(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FARNI6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FARNI7(A128,LENGTH)

ELSEIF (I.EQ.8) THEN CALL FARNI8(A128,LENGTH) ENDIF ELSEIF (CBLINV) THEN IF (I.LE.5) THEN CALL FAREID(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FAREI6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FAREI7(A128,LENGTH) ELSEIF (I.EQ.8) THEN CALL FAREI8(A128,LENGTH) ENDIF ELSEIF (BIGGER) THEN IF (I.LE.5) THEN CALL FARNSD(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FARNS6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FARNS7(A128,LENGTH) ELSEIF (I.EQ.8) THEN CALL FARNS8(A128,LENGTH) ENDIF ELSE IF (I.LE.5) THEN CALL FAREAD(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FAREA6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FAREA7(A128,LENGTH) ELSEIF (I.EQ.8) THEN CALL FAREA8(A128,LENGTH) ENDIF ENDIF WRITE (11,7898) LENGTH TYPS(1) = 6 IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128,IIXLEN,IIYLEN) ELSE III = BLKDS1(A128,IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL AHEX2(A128,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.89.OR.SCAN.EQ.99.OR.SCAN.EQ.109) THEN * IAREA CALL CRCLS CALL LEDSET(6) 8006 PRINT *,'IAREA?: How many data bytes? (0 = MAX / -number = abort)' READ (*,9878,ERR=8006) LENGTH LENGTH = LENGTH*4 PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) THEN GOTO 2

ELSEIF (I.LE.5) THEN LENGTH = LENGTH*2 ENDIF IF (LENGTH.LE.0.OR.LENGTH.GT.524288) LENGTH = 524288 PRINT *,'READING ... ' CALL LEDUP IF (BIGGER.AND.CBLINV) THEN IF (I.LE.5) THEN CALL IARNID(IA128,LENGTH) ELSEIF (I.EQ.6) THEN CALL IARNI6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL IARNI7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL IARNI8(IA128,LENGTH) ENDIF ELSEIF (CBLINV) THEN IF (I.LE.5) THEN CALL IAREID(IA128,LENGTH) ELSEIF (I.EQ.6) THEN CALL IAREI6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL IAREI7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL IAREI8(IA128,LENGTH) ENDIF ELSEIF (BIGGER) THEN IF (I.LE.5) THEN CALL IARNSD(IA128,LENGTH) ELSEIF (I.EQ.6) THEN CALL IARNS6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL IARNS7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL IARNS8(IA128,LENGTH) ENDIF ELSE IF (I.LE.5) THEN CALL IAREAD(IA128,LENGTH) ELSEIF (I.EQ.6) THEN CALL IAREA6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL IAREA7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL IAREA8(IA128,LENGTH) ENDIF ENDIF TYPS(1) = 6 WRITE (11,7898) LENGTH IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128,IIXLEN,IIYLEN) ELSE III = BLKDS1(A128,IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF

IF (HEXIT) CALL ZHEX2(IA128,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.90.OR.SCAN.EQ.100.OR.SCAN.EQ.110) THEN * FSREA CALL CRCLS CALL LEDSET(6) LENGTH = IXLEN*IYLEN*2 + 1024 LENGTH = MAX(LENGTH,14024) 8007 PRINT *,'FSREA?: Number of data bytes = ',LENGTH IF (GTFM) THEN I = 3 GTFM = .FALSE. ELSE PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) GOTO 2 ENDIF IF (I.EQ.9) GOTO 2 PRINT *,'READING ... ' CALL LEDUP IF (BIGGER.AND.CBLINV) THEN IF (I.LE.5) THEN CALL FSRNID(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FSRNI6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FSRNI7(A128,LENGTH) ELSEIF (I.EQ.8) THEN CALL FSRNI8(A128,LENGTH) ENDIF ELSEIF (CBLINV) THEN IF (I.LE.5) THEN CALL FSREID(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FSREI6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FSREI7(A128,LENGTH) ELSEIF (I.EQ.8) THEN CALL FSREI8(A128,LENGTH) ENDIF ELSEIF (BIGGER) THEN IF (I.LE.5) THEN CALL FSRNSD(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FSRNS6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FSRNS7(A128,LENGTH) ELSEIF (I.EQ.8) THEN CALL FSRNS8(A128,LENGTH) ENDIF ELSE IF (I.LE.5) THEN CALL FSREAD(A128,LENGTH) ELSEIF (I.EQ.6) THEN CALL FSREA6(A128,LENGTH) ELSEIF (I.EQ.7) THEN CALL FSREA7(A128,LENGTH) ELSEIF (I.EQ.8) THEN CALL FSREA8(A128,LENGTH) ENDIF

ENDIF WRITE (11,7898) LENGTH II = (LENGTH/4)*4 II = MAX0(II,131000) TYPFRM = 0 IF (DATACQ) THEN CALL CRCLS PRINT *,SAVEMS CALL OMASVO(FNAME,-1,-1,-2) PRINT *,' using file ',FNAME CALL IST0FM(IA128,LENTR,NTR,0,NFRAME,NDRIVE) ENDIF LENXS(1) = LENTR LENYS(1) = NTR CALL PROFRM TYPS(1) = TYPFRM IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128,IIXLEN,IIYLEN) ELSE III = BLKDS1(A128,IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL AHEX2(A128,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.91.OR.SCAN.EQ.101.OR.SCAN.EQ.111) THEN * ISREA CALL CRCLS CALL LEDSET(6) LENGTH = IXLEN*IYLEN*2 + 1024 LENGTH = MAX(LENGTH,14024) 8008 PRINT *,'ISREA?: Number of data bytes = ',LENGTH IF (GTFM) THEN I = 3 GTFM = .FALSE. ELSE PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) GOTO 2 ENDIF IF (I.EQ.9) GOTO 2 PRINT *,'READING ... ' CALL LEDUP IF (BIGGER.AND.CBLINV) THEN IF (I.LE.5) THEN CALL ISRNID(IA128,LENGTH) ELSEIF (I.EQ.6) THEN CALL ISRNI6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL ISRNI7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL ISRNI8(IA128,LENGTH) ENDIF ELSEIF (CBLINV) THEN IF (I.LE.5) THEN CALL ISREID(IA128,LENGTH)

ELSEIF (I.EQ.6) THEN CALL ISREI6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL ISREI7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL ISREI8(IA128,LENGTH) ENDIF ELSEIF (BIGGER) THEN IF (I.LE.5) THEN CALL ISRNSD(IA128,LENGTH) ELSEIF (I.EQ.6) THEN CALL ISRNS6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL ISRNS7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL ISRNS8(IA128,LENGTH) ENDIF ELSE IF (I.LE.5) THEN CALL ISREAD(IA128,LENGTH) ELSEIF (I.EQ.6) THEN CALL ISREA6(IA128,LENGTH) ELSEIF (I.EQ.7) THEN CALL ISREA7(IA128,LENGTH) ELSEIF (I.EQ.8) THEN CALL ISREA8(IA128,LENGTH) ENDIF ENDIF WRITE (11,7898) LENGTH II = (LENGTH/4)*4 II = MAX0(II,131000) TYPFRM = 0 IF (DATACQ) THEN CALL CRCLS PRINT *,SAVEMS CALL OMASVO(FNAME,-1,-1,-2) PRINT *,' using file ',FNAME CALL IST0FM(IA128,LENTR,NTR,0,NFRAME,NDRIVE) ENDIF LENXS(1) = LENTR LENYS(1) = NTR CALL PROFRM TYPS(1) = TYPFRM IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128,IIXLEN,IIYLEN) ELSE III = BLKDS1(A128,IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL ZHEX2(IA128,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.92.OR.SCAN.EQ.102) THEN * FXREA CALL CRCLS CALL LEDSET(6)

8009

* * * * * * * * * * * *

LENGTH = IXLEN*IYLEN*2 + 1024 LENGTH = MAX(LENGTH,14024) PRINT *,'FXREA?: Number of data bytes <= ',LENGTH IF (GTFM) THEN I = 3 GTFM = .FALSE. ELSE PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) GOTO 2 ENDIF IF (DATACQ) THEN INDEX = 1024 LENGTH = LENGTH - 1024 CALL GLABEL(CHGVLT,TLASER,POLAR) II = HEADER(CHGVLT,TLASER,POLAR) J = IA128 CALL STAMP(II,J) OPEN (UNIT=10,FILE=DFRAME,FORM='BINARY',STATUS='NEW',ERR=8121) FRAME = DFRAME ELSE INDEX = 0 OPEN (UNIT=10,FILE=FRAME,FORM='BINARY',STATUS='NEW',ERR=8121) ENDIF PRINT *,'READING ... ' CALL LEDUP CALL LSRMES IF (CBLINV.AND.BIGGER) THEN IF (I.LE.5) THEN CALL FXRNID(A128(INDEX),LENGTH) ELSEIF (I.EQ.6) THEN CALL FXRNI6(A128(INDEX),LENGTH) ELSEIF (I.EQ.7) THEN CALL FXRNI7(A128(INDEX),LENGTH) ELSEIF (I.EQ.8) THEN CALL FXRNI8(A128(INDEX),LENGTH) ENDIF ELSEIF (CBLINV) THEN IF (I.LE.5) THEN CALL FXREID(A128(INDEX),LENGTH) ELSEIF (I.EQ.6) THEN CALL FXREI6(A128(INDEX),LENGTH) ELSEIF (I.EQ.7) THEN CALL FXREI7(A128(INDEX),LENGTH) ELSEIF (I.EQ.8) THEN CALL FXREI8(A128(INDEX),LENGTH) ENDIF ELSEIF (BIGGER) THEN IF (I.LE.5) THEN CALL FXRNSD(A128(INDEX),LENGTH) ELSEIF (I.EQ.6) THEN CALL FXRNS6(A128(INDEX),LENGTH) ELSEIF (I.EQ.7) THEN CALL FXRNS7(A128(INDEX),LENGTH) ELSEIF (I.EQ.8) THEN CALL FXRNS8(A128(INDEX),LENGTH) ENDIF ELSE IF (I.LE.5) THEN CALL FXREAD(A128(INDEX),LENGTH)

ELSEIF (I.EQ.6) THEN CALL FXREA6(A128(INDEX),LENGTH) ELSEIF (I.EQ.7) THEN CALL FXREA7(A128(INDEX),LENGTH) ELSEIF (I.EQ.8) THEN CALL FXREA8(A128(INDEX),LENGTH) ENDIF ENDIF WRITE (11,7898) LENGTH II = (LENGTH/4)*4 II = MAX0(II,131000) TYPFRM = 0 IF (DATACQ) THEN CALL CRCLS PRINT *,SAVEMS CALL OMASVO(FNAME,-1,-1,-2) PRINT *,' using file ',FNAME CALL IST0FM(IA128,LENTR,NTR,0,NFRAME,NDRIVE) ENDIF LENXS(1) = LENTR LENYS(1) = NTR CALL PROFRM TYPS(1) = TYPFRM * IF (DATACQ) THEN * LENGTH = LENGTH + 1024 * CALL WRITE(A128,10,LENGTH,IERRO) * IF (IERRO.NE.0) PRINT *,'FILE I/O ERROR STATUS = ',IERRO * ENDIF IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128(INDEX),IIXLEN,IIYLEN) ELSE III = BLKDS1(A128(INDEX),IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL AHEX2(A128,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.93.OR.SCAN.EQ.103) THEN * IXREA CALL CRCLS CALL LEDSET(6) LENGTH = IXLEN*IYLEN*2 + 1024 LENGTH = MAX(LENGTH,14024) 8010 PRINT *,'IXREA?: Number of data bytes = ',LENGTH IF (GTFM) THEN I = 3 GTFM = .FALSE. ELSE PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) GOTO 2 ENDIF * IF (DATACQ) THEN * IBUF = IA128 + 1024 * LENGTH = LENGTH - 1024 * CALL GLABEL(CHGVLT,TLASER,POLAR)

* * * * * * * * *

II = HEADER(CHGVLT,TLASER,POLAR) J = IA128 CALL STAMP(II,J) INDEX = 1024 OPEN (UNIT=10,FILE=DFRAME,FORM='BINARY',STATUS='NEW',ERR=8121) FRAME = DFRAME ELSE IBUF = IA128 INDEX = 0 OPEN (UNIT=10,FILE=FRAME,FORM='BINARY',STATUS='NEW',ERR=8121) ENDIF PRINT *,'READING ... ' CALL LEDUP CALL LSRMES IF (CBLINV.AND.BIGGER) THEN IF (I.LE.5) THEN CALL IXRNID(IBUF,LENGTH) ELSEIF (I.EQ.6) THEN CALL IXRNI6(IBUF,LENGTH) ELSEIF (I.EQ.7) THEN CALL IXRNI7(IBUF,LENGTH) ELSEIF (I.EQ.8) THEN CALL IXRNI8(IBUF,LENGTH) ENDIF ELSEIF (CBLINV) THEN IF (I.LE.5) THEN CALL IXREID(IBUF,LENGTH) ELSEIF (I.EQ.6) THEN CALL IXREI6(IBUF,LENGTH) ELSEIF (I.EQ.7) THEN CALL IXREI7(IBUF,LENGTH) ELSEIF (I.EQ.8) THEN CALL IXREI8(IBUF,LENGTH) ENDIF ELSEIF (BIGGER) THEN IF (I.LE.5) THEN CALL IXRNSD(IBUF,LENGTH) ELSEIF (I.EQ.6) THEN CALL IXRNS6(IBUF,LENGTH) ELSEIF (I.EQ.7) THEN CALL IXRNS7(IBUF,LENGTH) ELSEIF (I.EQ.8) THEN CALL IXRNS8(IBUF,LENGTH) ENDIF ELSE IF (I.LE.5) THEN CALL IXREAD(IBUF,LENGTH) ELSEIF (I.EQ.6) THEN CALL IXREA6(IBUF,LENGTH) ELSEIF (I.EQ.7) THEN CALL IXREA7(IBUF,LENGTH) ELSEIF (I.EQ.8) THEN CALL IXREA8(IBUF,LENGTH) ENDIF ENDIF WRITE (11,7898) LENGTH II = (LENGTH/4)*4 II = MAX0(II,131000) TYPFRM = 0 IF (DATACQ) THEN

CALL CRCLS PRINT *,SAVEMS CALL OMASVO(FNAME,-1,-1,-2) PRINT *,' using file ',FNAME CALL IST0FM(IA128,LENTR,NTR,0,NFRAME,NDRIVE) ENDIF LENXS(1) = LENTR LENYS(1) = NTR CALL PROFRM TYPS(1) = TYPFRM * IF (DATACQ) THEN * LENGTH = LENGTH + 1024 * CALL WRITE(A128,10,LENGTH,IERRO) * IF (IERRO.NE.0) PRINT *,'FILE I/O ERROR STATUS = ',IERRO * ENDIF IF (PICTUR.OR.(.NOT.HEXIT)) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128(INDEX),IIXLEN,IIYLEN) ELSE III = BLKDS1(A128(INDEX),IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL ZHEX2(IA128,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.112) THEN * FXRNS CALL CRCLS CALL LEDSET(6) LENGTH = 524288 8029 PRINT *,'FXRNS?: Number of data bytes = ',LENGTH PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) GOTO 2 ILEN = LENGTH IBUF = IA128 + 1024 IF (.NOT.DATACQ) THEN INDEX = 0 * OPEN (UNIT=10,FILE=FRAME,FORM='BINARY',STATUS='NEW',ERR=8121) J = IA128 IBUF = IA128 * ELSE * INDEX = 1023 * LENGTH = LENGTH - 1024 * CALL GLABEL(CHGVLT,TLASER,POLAR) * II = HEADER(CHGVLT,TLASER,POLAR) * J = IA128 * CALL STAMP(II,J) * OPEN (UNIT=10,FILE=DFRAME,FORM='BINARY',STATUS='NEW',ERR=8121) ENDIF PRINT *,'READING ... ' CALL LEDUP CALL LSRMES IF (CBLINV) THEN IF (I.LE.5) THEN CALL FXRNID(A128(INDEX),LENGTH) ELSEIF (I.EQ.6) THEN

CALL FXRNI6(A128(INDEX),LENGTH) ELSEIF (I.EQ.7) THEN CALL FXRNI7(A128(INDEX),LENGTH) ELSEIF (I.EQ.8) THEN CALL FXRNI8(A128(INDEX),LENGTH) ENDIF ELSEIF (I.LE.5) THEN CALL FXRNSD(A128(INDEX),LENGTH) ELSEIF (I.EQ.6) THEN CALL FXRNS6(A128(INDEX),LENGTH) ELSEIF (I.EQ.7) THEN CALL FXRNS7(A128(INDEX),LENGTH) ELSEIF (I.EQ.8) THEN CALL FXRNS8(A128(INDEX),LENGTH) ENDIF PRINT *,' READ ',LENGTH,' BYTES ' WRITE (11,7898) LENGTH II = (LENGTH/4)*4 II = MAX0(II,131000) TYPFRM = 0 * IF (DATACQ) THEN CALL CRCLS PRINT *,SAVEMS CALL OMASVO(FNAME,-1,-1,-2) PRINT *,' using file ',FNAME CALL IST0FM(IA128,LENTR,NTR,0,NFRAME,NDRIVE) * ENDIF LENXS(1) = LENTR LENYS(1) = NTR CALL PROFRM TYPS(1) = TYPFRM * IF (DATACQ) LENGTH = LENGTH + 1024 * CALL WRITE(A128,10,LENGTH,IERRO) * PRINT *,'FILE I/O ERROR STATUS = ',IERRO * IF (IERRO.NE.0) CALL PAUSE(' ') * CLOSE (10,STATUS='KEEP',ERR=8122) IF (PICTUR) THEN MAGNIF = 17 CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128(INDEX),IIXLEN,IIYLEN) ELSE III = BLKDS1(A128(INDEX),IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL AHEX2(A128,1,LENGTH) QWERTY = .TRUE. ELSEIF (SCAN.EQ.113) THEN * IXRNS CALL CRCLS CALL LEDSET(6) LENGTH = 524288 8030 PRINT *,'IXRNS?: Number of data bytes = ',LENGTH PRINT *,'WHICH? (0..5)=word, 8=byte, 7=7 bit, 6=6 bit, 9=Abort ' I = MENU(0,0,9) IF (I.EQ.9) GOTO 2 ILEN = LENGTH * IF (DATACQ) THEN

* * * * * * * * * * *

IBUF = IA128 + 1024 INDEX = 1023 LENGTH = LENGTH - 1024 CALL GLABEL(CHGVLT,TLASER,POLAR) II = HEADER(CHGVLT,TLASER,POLAR) J = IA128 CALL STAMP(II,J) OPEN (UNIT=10,FILE=DFRAME,FORM='BINARY',STATUS='NEW',ERR=8121) ELSE IBUF = IA128 INDEX = 0 OPEN (UNIT=10,FILE=FRAME,FORM='BINARY',STATUS='NEW',ERR=8121) ENDIF PRINT *,'READING ... ' CALL LEDUP CALL LSRMES IF (CBLINV) THEN IF (I.LE.5) THEN CALL IXRNID(IBUF,LENGTH) ELSEIF (I.EQ.6) THEN CALL IXRNI6(IBUF,LENGTH) ELSEIF (I.EQ.7) THEN CALL IXRNI7(IBUF,LENGTH) ELSEIF (I.EQ.8) THEN CALL IXRNI8(IBUF,LENGTH) ENDIF ELSEIF (I.LE.5) THEN CALL IXRNSD(IBUF,LENGTH) ELSEIF (I.EQ.6) THEN CALL IXRNS6(IBUF,LENGTH) ELSEIF (I.EQ.7) THEN CALL IXRNS7(IBUF,LENGTH) ELSEIF (I.EQ.8) THEN CALL IXRNS8(IBUF,LENGTH) ENDIF PRINT *,' READ ',LENGTH,' BYTES ' WRITE (11,7898) LENGTH II = (LENGTH/4)*4 II = MAX0(II,131000) TYPFRM = 0 IF (DATACQ) THEN CALL CRCLS PRINT *,SAVEMS CALL OMASVO(FNAME,-1,-1,-2) PRINT *,' using file ',FNAME CALL IST0FM(IA128,LENTR,NTR,0,NFRAME,NDRIVE) ENDIF LENXS(1) = LENTR LENYS(1) = NTR CALL PROFRM TYPS(1) = TYPFRM IF (DATACQ) THEN LENGTH = LENGTH + 1024 CALL WRITE(A128,10,LENGTH,IERRO) IF (IERRO.NE.0) PRINT *,'FILE I/O ERROR STATUS = ',IERRO ENDIF IF (IERRO.NE.0) CALL PAUSE(' ') CLOSE (10,STATUS='KEEP',ERR=8122) IF (PICTUR) THEN MAGNIF = 17

** * * * *

CALL BEFBLK(IIXLEN,IIYLEN) CALL LEDUP IF (I.LE.5) THEN III = BLKDSP(A128(INDEX),IIXLEN,IIYLEN) ELSE III = BLKDS1(A128(INDEX),IIXLEN,IIYLEN) ENDIF WRITE (11,7898) LENGTH ENDIF * IF (HEXIT) CALL AHEX2(A128,1,LENGTH) QWERTY = .TRUE. ENDIF IF (III.EQ.911) GOTO 911 2 CONTINUE QWERTY = .TRUE. NOISE = .TRUE. FRAMES = 2 GOTO 1001 1 FRAMES = 0 1001 CONTINUE CALL CHKSUP ERR = -1 ASC = 0 SCAN = 0 RETURN 911 CONTINUE FRAMES = 911 CALL CHKSUP RETURN 9999 CONTINUE FRAMES = 9999 RETURN 8121 CONTINUE PRINT *,' OPEN ERROR FOR FILE: ',FRAME CALL PAUSE(' ') GOTO 2 8122 CONTINUE PRINT *,' CLOSE ERROR FOR FILE: ',FRAME CALL PAUSE(' ') GOTO 2 7898 FORMAT (I8,' BYTES REPORTED BY ASM SUBROUTINE.') 9878 FORMAT (BN,I8.0) END *---------------------------------------------------------------------SUBROUTINE OMASVO(FNAME,RUN,SHOT,DRIVE) CHARACTER*20 FNAME,DFRAME,FNAME2 INTEGER*4 SHOT,RUN,DRIVE,RUNNUM,SHOTNO,NFRAME,NDRIVE LOGICAL*4 EXISTS LOGICAL*2 ABORT,ESCAPE,INTRPT COMMON /NTRVN/ABORT,ESCAPE,INTRPT COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/OMADSK/NDRIVE,NFRAME IF (RUN.GE.0) RUNNUM = RUN IF (SHOT.GE.0) SHOTNO = SHOT IF (DRIVE.GE.-1) NDRIVE = DRIVE CLOSE (UNIT=10,ERR=8999) 8999 CONTINUE IF (RUNNUM.LE.0) THEN RUNNUM = 0 SHOTNO = NFRAME ELSE

IF (SHOTNO.LE.0.OR.SHOTNO.GT.999) SHOTNO = 1 NFRAME = RUNNUM*1000 + SHOTNO ENDIF IF (NDRIVE.LT.0.OR.NDRIVE.GT.7) NDRIVE = -1 IRUN = RUNNUM ISHOT = SHOTNO IF (NDRIVE.NE.-1) THEN WRITE (FNAME2,8001,ERR=9001) NDRIVE 9001 CONTINUE INQUIRE (FILE=FNAME2,EXIST=EXISTS) IF (.NOT.EXISTS) NDRIVE = -1 ENDIF IDR = NDRIVE CALL OMAFNM(FNAME,IRUN,ISHOT,IDR) INQUIRE (FILE=FNAME,EXIST=EXISTS) IF (EXISTS) WRITE (11,*,ERR=9002) FNAME,'ALREADY EXISTS - OVERWRITING! ' 9002 OPEN (UNIT=10,FILE=FNAME,STATUS='NEW',FORM='BINARY',ERR=9003,IOSTAT=IOS) REWIND (UNIT=10,IOSTAT=IOS,ERR=9004) RUNNUM = IRUN NDRIVE = IDR SHOTNO = ISHOT DFRAME = FNAME RETURN 8001 FORMAT(I1,':DIR.DIR') 9003 CONTINUE CALL CRCLS PRINT *,' ' PRINT *,'ERROR OPENING FILE ',FNAME GOTO 9300 9004 CONTINUE CALL CRCLS PRINT *,' ' PRINT *,'ERROR REWINDING FILE ',FNAME 9300 CONTINUE PRINT *,' IOSTAT = ',IOS PRINT *,' PLEASE ENTER DRIVE, RUN, & SHOT NUMBERS: ' PRINT *,' ' IDR = NDRIVE PRINT *,' Drive specifier is ',NDRIVE,' NEW value? (8=SAME)' IDR = MENU(0,-1,8) IF (ABORT.OR.ESCAPE.OR.INTRPT) RETURN IF (IDR.NE.8) NDRIVE = IDR CALL XYGOTO(0,8) IRUN = RUNNUM PRINT *,' RUN number is ',IRUN,' New value? (1 .. 999, invalid=same)' READ (*,'(BN,I8)',ERR=9301) IRUN 9301 IF (IRUN.GT.0.AND.IRUN.LE.999) RUNNUM = IRUN CALL XYGOTO(0,8) ISHOT = SHOTNO PRINT *,' SHOT number is ',ISHOT,' New value? (1 .. 999, invalid=same)' READ (*,'(BN,I8)',ERR=9302) ISHOT 9302 IF (ISHOT.GT.0.AND.ISHOT.LE.999) SHOTNO = ISHOT GOTO 8999 END *---------------------------------------------------------------------SUBROUTINE PROFRM CHARACTER*8 HAPS(32) * CHARACTER*22 ZEROMS,AMPLMS,SAVEMS,SAV3MS,FRMTYP(-2:20),SMTHMS CHARACTER*22 SAVEMS,SAV3MS,FRMTYP(-2:20),SMTHMS,SNTHMS INTEGER*4 IXLEN,IYLEN,IIXLEN,IIYLEN,IXNUM,IYNUM,LENFR,LENTR,NTR,TYPFRM

INTEGER*4 ZLEN,ZMARK,ZPOINT,ALEN,AMARK,APOINT,APSCR1,APSCR2,APSCR3,II INTEGER*4 APMAIN,AP1,AP2,AP3,AP4,AP5,APZR,APMX,AFMTYP,SCRMRK,APS(0:7) INTEGER*4 LNMAIN,LN1,LN2,LN3,LN4,LN5,LNZR,LNMX,LNS(0:7),IAPS(32),LENS(32) INTEGER*2 TYPS(32),LENXS(32),LENYS(32),DEFBUF,FNRNSN(32) LOGICAL*2 ZZCORR,AVALID,AACORR,ZVALID,BUFGUD(32),BUFUSE(32),AUTMED,AUTMEN LOGICAL*2 AUTSCO,TEK468,TK7854,TK7D20 EQUIVALENCE (APS(0),APMAIN),(APS(1),AP1),(APS(2),AP2),(APS(3),AP3) EQUIVALENCE (APS(4),AP4),(APS(5),AP5),(APS(6),APZR),(APS(7),APMX) EQUIVALENCE (LNS(0),LNMAIN),(LNS(1),LN1),(LNS(2),LN2),(LNS(3),LN3) EQUIVALENCE (LNS(4),LN4),(LNS(5),LN5),(LNS(6),LNZR),(LNS(7),LNMX) EQUIVALENCE (IA,IAPS(1)),(IA2,IAPS(2)),(IA4,IAPS(3)),(IZ,IZR,IAPS(4)) EQUIVALENCE (IMX,IAPS(5)),(IT,IAPS(6)),(IA1,IAPS(7)),(IA3,IAPS(8)) EQUIVALENCE (IA5,IAPS(9)),(ISC1,IAPS(10)),(ISC2,IAPS(11)),(ISC3,IAPS(12)) COMMON /OMAPR2/IIXLEN,IIYLEN,IXLEN,IYLEN,IA256,IA512,/BUFDEF/DEFBUF COMMON /OMABFR/APS,LNS,/OMACNT/IAPS,HAPS,LENS,/OMATYP/TYPS,LENXS,LENYS,FNR NSN COMMON /ZEROS/ZVALID,ZLEN,ZMARK,ZPOINT,ZZCORR,/OMABFL/BUFGUD,BUFUSE COMMON /OMASCR/SCRMRK,APSCR1,APSCR2,APSCR3,/SMOOTH/AUTMED,AUTMEN COMMON /AMPLS/AVALID,ALEN,AMARK,APOINT,AACORR,AFMTYP/FRAMNG/LENFR,LENTR,NT R COMMON /XFRAME/TYPFRM,FRMTYP,/SCOAUT/AUTSCO,/SCTYPE/TEK468,TK7854,TK7D20 SAVE /OMABFR/,/OMACNT/,/OMATYP/,/ZEROS/,/OMASCR/,/AMPLS/,/OMABFL/ SAVE /SMOOTH/,/OMAPR2/,/FRAMNG/,/BUFDEF/,/XFRAME/,/SCOAUT/,/SCTYPE/ EXTERNAL IICOPY,OMAZRO,OMAMXC,IMED3 SAVE DATA INDEX/0/,ZEROMS/'Doing Zero Correct'/,AMPLMS/'Normalizing '/ DATA SAVEMS/'Saving RAW data frame '/,SAV3MS/'Saving ZRC data frame'/ DATA SMTHMS/'Auto Median Smoothing'/,SNTHMS/'Auto Mean Smoothing'/ IZ = ZPOINT IMX = APOINT IA = IA256 IA1 = AP1 IA2 = AP2 IA3 = AP3 IA4 = AP4 IA5 = AP5 LENGTH = IXLEN*IYLEN*2 IF (LENGTH.GT.170000) LENGTH = 170000 IF (AUTMED) THEN IF (AACORR.AND.BUFUSE(3)) THEN PRINT *,SAVEMS II = LENGTH CALL IICOPY(IA,IA4,II) TYPS(3) = 0 LENXS(3) = LENXS(1) LENYS(3) = LENYS(1) ELSEIF (BUFUSE(2)) THEN PRINT *,SAVEMS II = LENGTH CALL IICOPY(IA,IA2,II) TYPS(2) = 0 LENXS(2) = LENXS(1) LENYS(2) = LENYS(1) ENDIF IXL = IXLEN IYL = IYLEN PRINT *,SMTHMS CALL IMED3(IA256,IXL,IYL) IF (AUTMEN) THEN PRINT *,SNTHMS

CALL IMEN3(IA256,IXL,IYL) ENDIF ENDIF IF (ZZCORR) THEN IF (AACORR.AND.BUFUSE(3).AND.(.NOT.AUTMED)) THEN PRINT *,SAVEMS II = LENGTH CALL IICOPY(IA,IA4,II) TYPS(3) = 0 LENXS(3) = LENXS(1) LENYS(3) = LENYS(1) ELSEIF (BUFUSE(2).AND.(.NOT.AUTMED)) THEN PRINT *,SAVEMS II = LENGTH CALL IICOPY(IA,IA2,II) TYPS(2) = 0 LENXS(2) = LENXS(1) LENYS(2) = LENYS(1) ENDIF IF (ZVALID) THEN PRINT *,ZEROMS TYPFRM = 0 TYPS(1) = 0 II = LENGTH CALL PARZRC ENDIF ENDIF IF (AACORR) THEN IF (BUFUSE(3).AND.BUFUSE(2).AND.(.NOT.AUTMED)) THEN PRINT *,SAV3MS II = LENGTH CALL IICOPY(IA,IA2,II) TYPS(2) = TYPFRM LENXS(2) = LENXS(1) LENYS(2) = LENYS(1) ENDIF IF (AVALID) THEN PRINT *,AMPLMS II = LENGTH CALL PARMXC ENDIF ENDIF IF (AUTSCO.AND.(TEK468.OR.TK7854.OR.TK7D20)) THEN CALL DOSCOP CALL CRUNCH ENDIF RETURN END

You might also like