Вы находитесь на странице: 1из 22

PROGRAM TSTPAR * * (c) 1984-89 Kevin G. Rhoads and The High Voltage Research Laboratory, L.E.E.S.

* (Laboratory for Electronic and Electromagnetic Systems), * Department of Electrical Engineering and Computer Science, * Massachusetts Institute of Technology * $SEGMENT TSTPAR $CHAREQU CHARACTER PROGNM*18,MAINLN*54,CRKEY*12,CRLINE*72,PFNFOO*18 CHARACTER DATE*10,TITLE(3)*77,LABEL*77,POLAR*2,CRLF*2,ANSWER*4 CHARACTER ELCTRD(2)*15,PLRITY(2)*1,NOTES*16,HAPS(32)*8 CHARACTER*22 FRMTYP(-2:20),PADS*3,PSTATS(0:4)*36,PSTAT(0:4)*36 CHARACTER*20 FRAME,FRAME2,FLNM,DFRAME,TMP(5),CRHO(4) CHARACTER*17 PTMP(5),PRHO(4),PDENS CHARACTER*6 VOLUME(-1:7) CHARACTER*1 CARR(1024),CT(77,3),CL(77),TC,TCALGN(2),NOTES1(16),NCRUDQ CHARACTER*1 CR,LF,TAB,FF,FORM,SPACE,ASCOPA(8192),ASCOP0(8192),MGFRMN(2) REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW,RARR(256) REAL*4 YMUL(10),Y0(10),RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG REAL*4 CHGVLT,TINCR,WFMS(0:1023,-10:11),WFMA(0:1023),CHRGV REAL*4 WFM0ZR,WFM1ZR,TMP0ZR,TMP1ZR,W0MAX,W0MIN,W1MAX,W1MIN,RANGE0,RANGE1 REAL*4 WFM0(0:1023),PWFM0(0:1023),WFM1(0:1023),PWFM1(0:1023),TIME(0:1023) REAL*4 WFM2(0:1023),PWFM2(0:1023),WFM3(0:1023),PWFM3(0:1023) REAL*4 WFM4(0:1023),PWFM4(0:1023),WFM5(0:1023),PWFM5(0:1023) REAL*4 WFM6(0:1023),PWFM6(0:1023),WFM7(0:1023),PWFM7(0:1023) REAL*4 WFM8(0:1023),PWFM8(0:1023),WFM9(0:1023),PWFM9(0:1023) REAL*4 DATA(3,1024),D256L(3,1024),D128L(3,512),D75L(3,300),D64L(3,256) REAL*4 PR256L(3,256,4),PR128L(3,128,4),PR75L(3,75,4),PR64L(3,64,4) REAL*4 PR50L(3,50,4),D50L(3,200),D500(500,40),D250(250,80),D125(125,160) REAL*4 PLOT1K(1024,2,10),PLT512(512,2,20),PLT256(256,2,40),D128(128,160) REAL*4 RLOT1K(1024,2,8),RLT512(512,2,16),RLT256(256,2,32) REAL*4 R500(16384),D170(170,120),D20480(20480) REAL*4 TLASER,BASVAL,BASLOG INTEGER*4 XLIM,YLIM,LAST4(4)*2,PROFIL(0:16383)*2,CUMUL(0:16383),IGNORE INTEGER*4 IXLEN,IYLEN,IIXLEN,IIYLEN,IXNUM,IYNUM,SENBAS,SENDAT,RUNNUM,SHOTN O INTEGER*4 ZLEN,ZMARK,ZPOINT,ALEN,AMARK,APOINT,PICPAG,GRPHPG,GRPAGE INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,LABOOK,AFMTYP,IAPS(32) INTEGER*4 IARR(256),BARR(1024)*1,HEADRE,TYPFRM,FLUID(2)*2,AUX(256)*1 INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR,APS(0:7) INTEGER*4 APMAIN,AP2,AP3,AP4,AP5,AP6,APZR,APMX,LENS(32),LNS(0:7) INTEGER*4 LNMAIN,LN2,LN3,LN4,LN5,LN6,LNZR,LNMX,NDRIVE,NFRAME INTEGER*4 UNITNO,LENRQX,IOADDR,LEVEL,OLEVEL,WFMNO,SAQQQQ(2048) INTEGER*4 ERROR,RECLEN,FREC,IPNTS,VOLTN,ANUMN,S0QQQQ(2048),ASCOPN INTEGER*4 OTHERW,SCRCHW,LLCTRD,RLCTRD,BLCTRD,TLCTRD,LASTXX INTEGER*4 IJS(3),IJ2S(3),BUF(3),ASNTAB,SQRTAB INTEGER*2 ASC,SCAN,KBF1,KBF2,ERR,IASC,ISCAN,IKBF1,IKBF2,IERR,IMAX0,IMAXO INTEGER*2 ASCAN(7000),SCNQLN,TRACKS(3,0:255),CHNLS(0:511),CHLS(0:511) INTEGER*2 TYPS(32),THEX0,LENXS(32),LENYS(32),R(11),FNRNSN(32) INTEGER*2 CHLAST,CHNULL,CHNORM,CHFLAG,CHSUPP,PCOLOR,ACOLOR INTEGER*2 TAGS(80,4),FRAMTG(80),TYPTAG(80),WHERTG(80),NPNTAG(80) INTEGER*2 PRPNTS,NOPNTS,WFM0DX,WFM1DX,TENCPI,SXTNCP INTEGER*2 INDXB,INDXE,INDYB,INDYE,VCTRLN,HCTRLN,VCNTRL,HCNTRL INTEGER*2 POINTY(4,2,256),POINTB(8,256),POINTX(4,2,512),POINTA(8,512) INTEGER*2 LINEY(256),LINEX(512),YREGS(0:3),XREGS(0:3),PROGX(10,4) INTEGER*2 PROGY(10,4),PROGNX(512,4),PROGNY(256,4) INTEGER*2 PATH1X,PATH1Y,PATH2X,PATH2Y,PATH3X,PATH3Y,KI,KJ,PATH6X,PATH6Y INTEGER*2 PATH(2,6),PATH4X,PATH4Y,PATH5X,PATH5Y,IXBEG,IYBEG,IXEND,IYEND INTEGER*2 TYP(3),ICHS(3),B1,B2

INTEGER*1 LOGICAL*4 LOGICAL*4 LOGICAL*4 LOGICAL*4 LOGICAL*2 LOGICAL*2 UTMEN

WHSCAN,SDKLFD,SCOPEA(8192),SCOPE0(8192),DTCB,DTCBA(50) DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,SKIP1L,NOISE DOSCAN,NOT14,KILLIT,GTFM,REPEAT,NOGLCH,NGTIME,COOL,INTRPS DIDIT,EOT,NOREAD,DOUBLE,ONOFF,DBQQ,AUTFRM,MODE2D,PICTUR HEXIT,DATACQ,QWERTY,NRMASK,DOCR ABORT,ESCAPE,INTRPT,RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS LINESY,ZVALID,ZZCORR,AVALID,AACORR,ISOU,MAXO,MAX00,DONE,AUTMED,A

LOGICAL*2 OPENEV(-1:7),CATHV2,FRCV2N,FRCV2F,IPRTSC,DOPRNT,NRMFX0 LOGICAL*2 TEK468,TK7854,TK7D20,CONDNS,RDNG1,WRTNG0,TASCII,BINARY,NTRPLT LOGICAL*2 FNDERR,ERRORS(3),DOSTAK,DOMEM,IFLOAT,HELP,DOALL,RUNING,BUSDUN LOGICAL*2 MGLR,MGUD,MGOTHR,MGOK,BLCTOK,TLCTOK,PTHDUN,CNVDBG,ISTEST LOGICAL*1 FLAG77(0:24),ISGONG,ISIT,CBLNRM,CBLINV,DISK,END,PARAM,FUBAR 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 (TITLE(1),CT(1,1)),(LABEL,CL(1)),(NOTES,NOTES1(1)) EQUIVALENCE (RARR(1),IARR(1),BARR(1),CARR(1)),(PSTAT(0),PSTATS(0)) EQUIVALENCE (ASC,IASC),(SCAN,ISCAN),(KBF1,IKBF1),(KBF2,IKBF2),(ERR,IERR) EQUIVALENCE (TCALGN(1),IASC),(TCALGN(2),TC),(CHNLS(0),CHLS(0)) EQUIVALENCE (DTCB,DTCBA(1)),(WFMS(0,11),WFMA(0)) EQUIVALENCE (SAQQQQ(1),SCOPEA(1)),(S0QQQQ(1),SCOPE0(1)) EQUIVALENCE (TIME(0),WFMS(0,0)),(WFM0(0),WFMS(0,1)),(WFM1(0),WFMS(0,2)) EQUIVALENCE (PWFM0(0),WFMS(0,-1)),(PWFM1(0),WFMS(0,-2)) EQUIVALENCE (WFM2(0),WFMS(0,3)),(WFM3(0),WFMS(0,4)) EQUIVALENCE (PWFM2(0),WFMS(0,-3)),(PWFM3(0),WFMS(0,-4)) EQUIVALENCE (WFM4(0),WFMS(0,5)),(WFM5(0),WFMS(0,6)) EQUIVALENCE (PWFM4(0),WFMS(0,-5)),(PWFM5(0),WFMS(0,-6)) EQUIVALENCE (WFM6(0),WFMS(0,7)),(WFM7(0),WFMS(0,8)) EQUIVALENCE (PWFM6(0),WFMS(0,-7)),(PWFM7(0),WFMS(0,-8)) EQUIVALENCE (WFM8(0),WFMS(0,9)),(WFM9(0),WFMS(0,10)) EQUIVALENCE (PWFM8(0),WFMS(0,-9)),(PWFM9(0),WFMS(0,-10)) EQUIVALENCE (R500(1),D256L(1,1),D128L(1,1),D75L(1,1),D64L(1,1),D50L(1,1)) EQUIVALENCE (R500(1),PR256L(1,1,1),PR128L(1,1,1),PR75L(1,1,1),PR64L(1,1,1) ,PR50L(1,1,1)) EQUIVALENCE (DATA(1,1),PLOT1K(1,1,1),PLT512(1,1,1),PLT256(1,1,1),D170(1,1) ) EQUIVALENCE (DATA(1,1),D500(1,1),D250(1,1),D125(1,1),D128(1,1),D20480(1)) EQUIVALENCE (R500(1),RLOT1K(1,1,1),RLT512(1,1,1),RLT256(1,1,1)) EQUIVALENCE (TAGS(1,1),FRAMTG(1)),(TAGS(1,2),TYPTAG(1)),(TAGS(1,3),WHERTG( 1)) EQUIVALENCE (TAGS(1,4),NPNTAG(1)),(MAXO,IMAXO),(MAX00,IMAX0) EQUIVALENCE (POINTY(1,1,1),POINTB(1,1)),(POINTX(1,1,1),POINTA(1,1)) EQUIVALENCE (VCNTRL,VCTRLN),(HCNTRL,HCTRLN) EQUIVALENCE (PATH(1,1),PATH1X),(PATH(2,1),PATH1Y) EQUIVALENCE (PATH(1,2),PATH2X),(PATH(2,2),PATH2Y) EQUIVALENCE (PATH(1,3),PATH3X),(PATH(2,3),PATH3Y) EQUIVALENCE (PATH(1,4),PATH4X),(PATH(2,4),PATH4Y) EQUIVALENCE (PATH(1,5),PATH5X),(PATH(2,5),PATH5Y) EQUIVALENCE (PATH(1,6),PATH6X),(PATH(2,6),PATH6Y) COMMON /NAMEPR/PROGNM,MAINLN,/STRBES/ISOU,/IPPENC/SKIP1L,NOISE COMMON /GNORF9/CRKEY,CRLINE,DOCR,/BLKCNV/MAGNIF,LLHILO,CONTRS,BRIGHT,BASLO G COMMON /BLKLIM/XLIM,YLIM,/GEWRTN/REPEAT,NMAG,CNTRS,BRGHT,BASVAL COMMON /NTRVN/ ABORT,ESCAPE,INTRPT,/KEYGET/IASC,ISCAN,IKBF1,IKBF2,IERR COMMON /SHFSTA/RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS,/CONVGR/R COMMON /OMASCN/SCNQLN,ASCAN,/PARSCN/CHLS,TRACKS,LSTCHL,LSTTRK,THEX0 COMMON /PARLS4/LAST4,/PARAUT/GTFM,/OMADIT/DOSCAN,/PARB14/NOT14,KILLIT COMMON /OMANOW/CHGVLT,TLASER,POLAR,/PARCUM/IGNORE,PROFIL,CUMUL

COMMON /OMAPAR/IXNUM,IYNUM,INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,FRAME,QWERTY, IA128,SENBAS,SENDAT COMMON /OMAPR2/IIXLEN,IIYLEN,IXLEN,IYLEN,IA256,IA512,/OMALBL/DONE COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/FRAMNG/LENFR,LENTR,NTR COMMON /PARZQX/DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,DIDIT,EOT,NO READ,ONOFF, & DBQQ,FLAG77,ISGONG,ISIT,PADS,NCRUDQ,/MSKNRM/NRMASK,/FX0NRM/NRMFX0 COMMON /PSTAMS/PSTAT,/TWOPAR/PICPAG,GRPHPG,/OMAFHG/ WHSCAN,SDKLFD COMMON /PSYNCH/LINESY,/PARAFM/AUTFRM,/PARMX/IMAXO,IMAX0 COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR COMMON /OMABFR/APS,LNS,/OMADSK/NDRIVE,NFRAME,/SMOOTH/AUTMED,AUTMEN COMMON /ZEROS/ZVALID,ZLEN,ZMARK,ZPOINT,ZZCORR,/VOLSTA/OPENEV,VOLUME COMMON /AMPLS/AVALID,ALEN,AMARK,APOINT,AACORR,AFMTYP,/DEBUGC/CNVDBG COMMON /TIMES/GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,/BEGADR/LASTXX COMMON /ASCGAR/DATE,TITLE,LABEL,/LBBKRF/NOTES,LABOOK COMMON /LECTRD/ELCTRD,PLRITY,/CTMPRH/TMP,CRHO,/PTMPRH/PTMP,PRHO,PDENS COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW COMMON /XFRAME/TYPFRM,FRMTYP,/OMAHED/HEADRE,IARR COMMON /OMACNT/IAPS,HAPS,LENS/OMATYP/TYPS,LENXS,LENYS,FNRNSN COMMON /PQQXXR/UNITNO,LENRQX,IOADDR,PFNFOO,/PARCBL/CBLNRM,CBLINV COMMON /OMASAT/CATHV2,FRCV2N,FRCV2F,CHLAST,CHNULL,CHNORM,CHFLAG,CHSUPP COMMON /INDICS/DOSTAK,DOMEM,IFLOAT,LEVEL,OLEVEL,HELP,DOALL,RUNING COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHRGV,TINCR, 1FREC,RECLEN,TENCPI,SXTNCP,/INT488/BUSDUN,/WFMFOO/OTHERW,SCRCHW COMMON /WFMRNG/W0MAX,W0MIN,W1MAX,W1MIN,RANGE0,RANGE1,WFM0ZR,WFM1ZR,TMP0ZR, TMP1ZR COMMON /PNTS/PRPNTS,NOPNTS,/WFMS/WFMS,/FOO/ANSWER,/CARLF/CRLF COMMON /CONCHR/CR,LF,TAB,FF,/SCNPR/IPRTSC,DOPRNT,/I2EBUF/B1,B2 COMMON /SCTYPE/TEK468,TK7854,TK7D20,/PRNTMD/CONDNS,/COLORS/PCOLOR,ACOLOR COMMON /DTCBC/DTCBA,/FOO5/VOLTN,RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG COMMON /I/SCOPEA,/WFM0SV/SCOPE0,/WFMFMT/TASCII,BINARY,NTRPLT COMMON /ASCVAR/ASCOPA,ASCOP0,/ASCNDX/ASCOPN,/ASYNCH/RDNG1,WRTNG0 COMMON /ERRORS/FNDERR,ERRORS,/FOO6/ANUM,/YSCALE/YMUL,Y0 COMMON /WFMTAG/TAGS,/WFMOUT/DATA,/PARPLZ/R500,/I2ENML/LOWCUT,IHICUT COMMON /MGFORM/LINEX,LINEY,POINTY,POINTX,IXBEG,IYBEG,IXEND,IYEND COMMON /MGSTAT/YREGS,XREGS,PROGX,PROGY,PROGNX,PROGNY,KI,KJ,INDXB,INDXE,IND YB,INDYE COMMON /MGFRAM/MGFRMN,MGLR,MGUD,MGOTHR,MGOK,/MGPATH/PATH,PTHDUN COMMON /FETURE/LLCTRD,RLCTRD,BLCTRD,TLCTRD,VCNTRL,HCNTRL,BLCTOK,TLCTOK COMMON /KIASMN/ICHS,BUF,TYP,IJS,IJ2S,/TST/ISTEST,/CNVTBL/ASNTAB,SQRTAB SAVE /GNORF9/,/BLKCNV/,/NAMEPR/,/GEWRTN/,/KEYGET/,/SHFSTA/,/NTRVN/ SAVE /PARLS4/,/OMADIT/,/PARB14/,/OMANOW/,/PARAUT/,/OMASCN/,/PARSCN/ SAVE /OMAPAR/,/OMAPR2/,/FILES/,/PARCUM/,/TWOPAR/,/PARMX/,/OMACNT/ SAVE /PARZQX/,/STRBES/,/IPPENC/,/FRAMNG/,/OMAFHG/,/PSYNCH/,/UNITS/ SAVE /LBBKRF/,/LECTRD/,/ASCGAR/,/TIMES/,/ZEROS/,/PARAFM/,/OMATYP/ SAVE /CTMPRH/,/PTMPRH/,/RWNUM/,/OMAHED/,/XFRAME/,/AMPLS/,/OMABFR/ SAVE /OMADSK/,/CONVGR/,/PQQXXR/,/PARCBL/,/SMOOTH/,/VOLSTA/,/OMASAT/ SAVE /WFMFMT/,/I/,/WFM0SV/,/ASYNCH/,/ASCVAR/,/ASCNDX/,/DTCBS/,/I2EBUF/ SAVE /INDICS/,/SCNPR/,/WFMS/,/PNTS/,/WFMRNG/,/GARBAG/,/FOO/,/CARLF/ SAVE /CONCHR/,/SCTYPE/,/PRNTMD/,/FOO6/,/FOO5/,/YSCALE/,/ERRORS/ SAVE /MGPATH/,/I2ENML/,/MGFORM/,/MGSTAT/,/FETURE/,/MGFRAM/,/KIASMN/ SAVE /INT488/,/WFMFOO/,/PARPLZ/,/WFMOUT/,/WFMTAG/,/MSKNRM/,/FX0NRM/ SAVE /DEBUGC/,/TST/,/CNVTBL/,/BEGADR/ EXTERNAL CLTST,BDTST,QQCALC,CLCINT,NSTMSK,NSTFX0 SAVE * NRMASK = .FALSE. CALL NSTMSK(NRMASK) NRMFX0 = .TRUE. CALL NSTFX0(NRMFX0)

* CALL CLTST * SYSCALL 43 = EXIT, FSCALL PASSES REGISTERS D0-D7, A0-A6; IARR IS USED * AS PLACEHOLDER FOR THESE ARG'S; EXIT TAKES NO ARGS CALL FSCALL(43,IARR(1),IARR(2),IARR(3),IARR(4),IARR(5),IARR(6),IARR(7) & ,IARR(8),IARR(12),IARR(13),IARR(14),IARR(15),IARR(16),IARR(17) & ,IARR(18)) END *---------------------------------------------------------------------BLOCK DATA BDTST $SEGMENT TSTPAR CHARACTER PROGNM*18,MAINLN*54,CRKEY*12,CRLINE*72,PFNFOO*18 CHARACTER DATE*10,TITLE(3)*77,LABEL*77,POLAR*2,CRLF*2,ANSWER*4 CHARACTER ELCTRD(2)*15,PLRITY(2)*1,NOTES*16,HAPS(32)*8 CHARACTER*22 FRMTYP(-2:20),PADS*3,PSTATS(0:4)*36,PSTAT(0:4)*36 CHARACTER*20 FRAME,FRAME2,FLNM,DFRAME,TMP(5),CRHO(4) CHARACTER*17 PTMP(5),PRHO(4),PDENS CHARACTER*6 VOLUME(-1:7) CHARACTER*1 CARR(1024),CT(77,3),CL(77),TC,TCALGN(2),NOTES1(16),NCRUDQ CHARACTER*1 CR,LF,TAB,FF,FORM,SPACE,ASCOPA(8192),ASCOP0(8192),MGFRMN(2) REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW,RARR(256) REAL*4 YMUL(10),Y0(10),RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG REAL*4 CHGVLT,TINCR,WFMS(0:1023,-10:11),WFMA(0:1023),CHRGV REAL*4 WFM0ZR,WFM1ZR,TMP0ZR,TMP1ZR,W0MAX,W0MIN,W1MAX,W1MIN,RANGE0,RANGE1 REAL*4 WFM0(0:1023),PWFM0(0:1023),WFM1(0:1023),PWFM1(0:1023),TIME(0:1023) REAL*4 WFM2(0:1023),PWFM2(0:1023),WFM3(0:1023),PWFM3(0:1023) REAL*4 WFM4(0:1023),PWFM4(0:1023),WFM5(0:1023),PWFM5(0:1023) REAL*4 WFM6(0:1023),PWFM6(0:1023),WFM7(0:1023),PWFM7(0:1023) REAL*4 WFM8(0:1023),PWFM8(0:1023),WFM9(0:1023),PWFM9(0:1023) REAL*4 DATA(3,1024),D256L(3,1024),D128L(3,512),D75L(3,300),D64L(3,256) REAL*4 PR256L(3,256,4),PR128L(3,128,4),PR75L(3,75,4),PR64L(3,64,4) REAL*4 PR50L(3,50,4),D50L(3,200),D500(500,40),D250(250,80),D125(125,160) REAL*4 PLOT1K(1024,2,10),PLT512(512,2,20),PLT256(256,2,40),D128(128,160) REAL*4 RLOT1K(1024,2,8),RLT512(512,2,16),RLT256(256,2,32) REAL*4 R500(16384),D170(170,120),D20480(20480) REAL*4 TLASER,BASVAL,BASLOG INTEGER*4 XLIM,YLIM,LAST4(4)*2,PROFIL(0:16383)*2,CUMUL(0:16383),IGNORE INTEGER*4 IXLEN,IYLEN,IIXLEN,IIYLEN,IXNUM,IYNUM,SENBAS,SENDAT,RUNNUM,SHOTN O INTEGER*4 ZLEN,ZMARK,ZPOINT,ALEN,AMARK,APOINT,PICPAG,GRPHPG,GRPAGE INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,LABOOK,AFMTYP,IAPS(32) INTEGER*4 IARR(256),BARR(1024)*1,HEADRE,TYPFRM,FLUID(2)*2,AUX(256)*1 INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR,APS(0:7) INTEGER*4 APMAIN,AP2,AP3,AP4,AP5,AP6,APZR,APMX,LENS(32),LNS(0:7) INTEGER*4 LNMAIN,LN2,LN3,LN4,LN5,LN6,LNZR,LNMX,NDRIVE,NFRAME INTEGER*4 UNITNO,LENRQX,IOADDR,LEVEL,OLEVEL,WFMNO,SAQQQQ(2048) INTEGER*4 ERROR,RECLEN,FREC,IPNTS,VOLTN,ANUMN,S0QQQQ(2048),ASCOPN INTEGER*4 OTHERW,SCRCHW,LLCTRD,RLCTRD,BLCTRD,TLCTRD,ASNTAB,SQRTAB,LASTXX INTEGER*2 ASC,SCAN,KBF1,KBF2,ERR,IASC,ISCAN,IKBF1,IKBF2,IERR,IMAX0,IMAXO INTEGER*2 ASCAN(7000),SCNQLN,TRACKS(3,0:255),CHNLS(0:511),CHLS(0:511) INTEGER*2 TYPS(32),THEX0,LENXS(32),LENYS(32),R(11),FNRNSN(32) INTEGER*2 TAGS(80,4),FRAMTG(80),TYPTAG(80),WHERTG(80),NPNTAG(80) INTEGER*2 CHLAST,CHNULL,CHNORM,CHFLAG,CHSUPP,PCOLOR,ACOLOR INTEGER*2 PRPNTS,NOPNTS,WFM0DX,WFM1DX,TENCPI,SXTNCP INTEGER*2 INDXB,INDXE,INDYB,INDYE,VCTRLN,HCTRLN,VCNTRL,HCNTRL INTEGER*2 POINTY(4,2,256),POINTB(8,256),POINTX(4,2,512),POINTA(8,512) INTEGER*2 LINEY(256),LINEX(512),YREGS(0:3),XREGS(0:3),PROGX(10,4) INTEGER*2 PROGY(10,4),PROGNX(512,4),PROGNY(256,4) INTEGER*2 PATH1X,PATH1Y,PATH2X,PATH2Y,PATH3X,PATH3Y,KI,KJ,PATH6X,PATH6Y INTEGER*2 PATH(2,6),PATH4X,PATH4Y,PATH5X,PATH5Y,IXBEG,IYBEG,IXEND,IYEND

INTEGER*1 LOGICAL*4 LOGICAL*4 LOGICAL*4 LOGICAL*4 LOGICAL*2 LOGICAL*2 UTMEN

WHSCAN,SDKLFD,SCOPEA(8192),SCOPE0(8192),DTCB,DTCBA(50) DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,SKIP1L,NOISE DOSCAN,NOT14,KILLIT,GTFM,REPEAT,NOGLCH,NGTIME,COOL,INTRPS DIDIT,EOT,NOREAD,DOUBLE,ONOFF,DBQQ,AUTFRM,MODE2D,PICTUR HEXIT,DATACQ,QWERTY,NRMASK,DOCR ABORT,ESCAPE,INTRPT,RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS LINESY,ZVALID,ZZCORR,AVALID,AACORR,ISOU,MAXO,MAX00,DONE,AUTMED,A

LOGICAL*2 OPENEV(-1:7),CATHV2,FRCV2N,FRCV2F,IPRTSC,DOPRNT,BUSDUN,ISTEST LOGICAL*2 TEK468,TK7854,TK7D20,CONDNS,RDNG1,WRTNG0,TASCII,BINARY,NTRPLT LOGICAL*2 FNDERR,ERRORS(3),DOSTAK,DOMEM,IFLOAT,HELP,DOALL,RUNING LOGICAL*2 MGLR,MGUD,MGOTHR,MGOK,BLCTOK,TLCTOK,PTHDUN,NRMFX0,CNVDBG LOGICAL*1 FLAG77(0:24),ISGONG,ISIT,CBLNRM,CBLINV,DISK,END,PARAM,FUBAR 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 (TITLE(1),CT(1,1)),(LABEL,CL(1)),(NOTES,NOTES1(1)) EQUIVALENCE (RARR(1),IARR(1),BARR(1),CARR(1)),(PSTAT(0),PSTATS(0)) EQUIVALENCE (ASC,IASC),(SCAN,ISCAN),(KBF1,IKBF1),(KBF2,IKBF2),(ERR,IERR) EQUIVALENCE (TCALGN(1),IASC),(TCALGN(2),TC),(CHNLS(0),CHLS(0)) EQUIVALENCE (DTCB,DTCBA(1)),(WFMS(0,11),WFMA(0)) EQUIVALENCE (SAQQQQ(1),SCOPEA(1)),(S0QQQQ(1),SCOPE0(1)) EQUIVALENCE (TIME(0),WFMS(0,0)),(WFM0(0),WFMS(0,1)),(WFM1(0),WFMS(0,2)) EQUIVALENCE (PWFM0(0),WFMS(0,-1)),(PWFM1(0),WFMS(0,-2)) EQUIVALENCE (WFM2(0),WFMS(0,3)),(WFM3(0),WFMS(0,4)) EQUIVALENCE (PWFM2(0),WFMS(0,-3)),(PWFM3(0),WFMS(0,-4)) EQUIVALENCE (WFM4(0),WFMS(0,5)),(WFM5(0),WFMS(0,6)) EQUIVALENCE (PWFM4(0),WFMS(0,-5)),(PWFM5(0),WFMS(0,-6)) EQUIVALENCE (WFM6(0),WFMS(0,7)),(WFM7(0),WFMS(0,8)) EQUIVALENCE (PWFM6(0),WFMS(0,-7)),(PWFM7(0),WFMS(0,-8)) EQUIVALENCE (WFM8(0),WFMS(0,9)),(WFM9(0),WFMS(0,10)) EQUIVALENCE (PWFM8(0),WFMS(0,-9)),(PWFM9(0),WFMS(0,-10)) EQUIVALENCE (R500(1),D256L(1,1),D128L(1,1),D75L(1,1),D64L(1,1),D50L(1,1)) EQUIVALENCE (R500(1),PR256L(1,1,1),PR128L(1,1,1),PR75L(1,1,1),PR64L(1,1,1) ,PR50L(1,1,1)) EQUIVALENCE (DATA(1,1),PLOT1K(1,1,1),PLT512(1,1,1),PLT256(1,1,1),D170(1,1) ) EQUIVALENCE (DATA(1,1),D500(1,1),D250(1,1),D125(1,1),D128(1,1),D20480(1)) EQUIVALENCE (R500(1),RLOT1K(1,1,1),RLT512(1,1,1),RLT256(1,1,1)) EQUIVALENCE (TAGS(1,1),FRAMTG(1)),(TAGS(1,2),TYPTAG(1)),(TAGS(1,3),WHERTG( 1)) EQUIVALENCE (TAGS(1,4),NPNTAG(1)),(VCNTRL,VCTRLN),(HCNTRL,HCTRLN) EQUIVALENCE (MAXO,IMAXO),(MAX00,IMAX0) EQUIVALENCE (POINTY(1,1,1),POINTB(1,1)),(POINTX(1,1,1),POINTA(1,1)) EQUIVALENCE (PATH(1,1),PATH1X),(PATH(2,1),PATH1Y) EQUIVALENCE (PATH(1,2),PATH2X),(PATH(2,2),PATH2Y) EQUIVALENCE (PATH(1,3),PATH3X),(PATH(2,3),PATH3Y) EQUIVALENCE (PATH(1,4),PATH4X),(PATH(2,4),PATH4Y) EQUIVALENCE (PATH(1,5),PATH5X),(PATH(2,5),PATH5Y) EQUIVALENCE (PATH(1,6),PATH6X),(PATH(2,6),PATH6Y) COMMON /NAMEPR/PROGNM,MAINLN,/STRBES/ISOU,/IPPENC/SKIP1L,NOISE COMMON /GNORF9/CRKEY,CRLINE,DOCR,/BLKCNV/MAGNIF,LLHILO,CONTRS,BRIGHT,BASLO G COMMON /BLKLIM/XLIM,YLIM,/GEWRTN/REPEAT,NMAG,CNTRS,BRGHT,BASVAL COMMON /NTRVN/ ABORT,ESCAPE,INTRPT,/KEYGET/IASC,ISCAN,IKBF1,IKBF2,IERR COMMON /SHFSTA/RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS,/CONVGR/R COMMON /OMASCN/SCNQLN,ASCAN,/PARSCN/CHLS,TRACKS,LSTCHL,LSTTRK,THEX0 COMMON /PARLS4/LAST4,/PARAUT/GTFM,/OMADIT/DOSCAN,/PARB14/NOT14,KILLIT COMMON /OMANOW/CHGVLT,TLASER,POLAR,/PARCUM/IGNORE,PROFIL,CUMUL

COMMON /OMAPAR/IXNUM,IYNUM,INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,FRAME,QWERTY, IA128,SENBAS,SENDAT COMMON /OMAPR2/IIXLEN,IIYLEN,IXLEN,IYLEN,IA256,IA512,/OMALBL/DONE COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/FRAMNG/LENFR,LENTR,NTR COMMON /PARZQX/DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,DIDIT,EOT,NO READ,ONOFF, & DBQQ,FLAG77,ISGONG,ISIT,PADS,NCRUDQ,/INT488/BUSDUN,/MSKNRM/NRMASK COMMON /PSTAMS/PSTAT,/TWOPAR/PICPAG,GRPHPG,/OMAFHG/ WHSCAN,SDKLFD COMMON /PSYNCH/LINESY,/PARAFM/AUTFRM,/PARMX/IMAXO,IMAX0 COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR COMMON /OMABFR/APS,LNS,/OMADSK/NDRIVE,NFRAME,/SMOOTH/AUTMED,AUTMEN COMMON /ZEROS/ZVALID,ZLEN,ZMARK,ZPOINT,ZZCORR,/VOLSTA/OPENEV,VOLUME COMMON /AMPLS/AVALID,ALEN,AMARK,APOINT,AACORR,AFMTYP,/FX0NRM/NRMFX0 COMMON /TIMES/GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,/DEBUGC/CNVDBG COMMON /ASCGAR/DATE,TITLE,LABEL,/LBBKRF/NOTES,LABOOK,/BEGADR/LASTXX COMMON /LECTRD/ELCTRD,PLRITY,/CTMPRH/TMP,CRHO,/PTMPRH/PTMP,PRHO,PDENS COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW COMMON /XFRAME/TYPFRM,FRMTYP,/OMAHED/HEADRE,IARR COMMON /OMACNT/IAPS,HAPS,LENS/OMATYP/TYPS,LENXS,LENYS,FNRNSN COMMON /PQQXXR/UNITNO,LENRQX,IOADDR,PFNFOO,/PARCBL/CBLNRM,CBLINV COMMON /OMASAT/CATHV2,FRCV2N,FRCV2F,CHLAST,CHNULL,CHNORM,CHFLAG,CHSUPP COMMON /INDICS/DOSTAK,DOMEM,IFLOAT,LEVEL,OLEVEL,HELP,DOALL,RUNING COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHRGV,TINCR, 1FREC,RECLEN,TENCPI,SXTNCP,/WFMFOO/OTHERW,SCRCHW,/TST/ISTEST COMMON /WFMRNG/W0MAX,W0MIN,W1MAX,W1MIN,RANGE0,RANGE1,WFM0ZR,WFM1ZR,TMP0ZR, TMP1ZR COMMON /PNTS/PRPNTS,NOPNTS,/WFMS/WFMS,/FOO/ANSWER,/CARLF/CRLF COMMON /CONCHR/CR,LF,TAB,FF,/SCNPR/IPRTSC,DOPRNT,/CNVTBL/ASNTAB,SQRTAB COMMON /SCTYPE/TEK468,TK7854,TK7D20,/PRNTMD/CONDNS,/COLORS/PCOLOR,ACOLOR COMMON /DTCBC/DTCBA,/FOO5/VOLTN,RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG COMMON /I/SCOPEA,/WFM0SV/SCOPE0,/WFMFMT/TASCII,BINARY,NTRPLT COMMON /ASCVAR/ASCOPA,ASCOP0,/ASCNDX/ASCOPN,/ASYNCH/RDNG1,WRTNG0 COMMON /ERRORS/FNDERR,ERRORS,/FOO6/ANUM,/YSCALE/YMUL,Y0 COMMON /WFMOUT/DATA,/PARPLZ/R500,/WFMTAG/TAGS,/I2ENML/LOWCUT,IHICUT COMMON /MGFORM/LINEX,LINEY,POINTY,POINTX,IXBEG,IYBEG,IXEND,IYEND COMMON /MGSTAT/YREGS,XREGS,PROGX,PROGY,PROGNX,PROGNY,KI,KJ,INDXB,INDXE,IND YB,INDYE COMMON /MGFRAM/MGFRMN,MGLR,MGUD,MGOTHR,MGOK,/MGPATH/PATH,PTHDUN COMMON /FETURE/LLCTRD,RLCTRD,BLCTRD,TLCTRD,VCNTRL,HCNTRL,BLCTOK,TLCTOK SAVE /GNORF9/,/BLKCNV/,/NAMEPR/,/GEWRTN/,/KEYGET/,/SHFSTA/,/NTRVN/ SAVE /PARLS4/,/OMADIT/,/PARB14/,/OMANOW/,/PARAUT/,/OMASCN/,/PARSCN/ SAVE /OMAPAR/,/OMAPR2/,/FILES/,/PARCUM/,/TWOPAR/,/PARMX/,/OMACNT/ SAVE /PARZQX/,/STRBES/,/IPPENC/,/FRAMNG/,/OMAFHG/,/PSYNCH/,/UNITS/ SAVE /LBBKRF/,/LECTRD/,/ASCGAR/,/TIMES/,/ZEROS/,/PARAFM/,/OMATYP/ SAVE /CTMPRH/,/PTMPRH/,/RWNUM/,/OMAHED/,/XFRAME/,/AMPLS/,/OMABFR/ SAVE /OMADSK/,/CONVGR/,/PQQXXR/,/PARCBL/,/SMOOTH/,/VOLSTA/,/OMASAT/ SAVE /WFMFMT/,/I/,/WFM0SV/,/ASYNCH/,/ASCVAR/,/ASCNDX/,/DTCBS/ SAVE /INDICS/,/SCNPR/,/WFMS/,/PNTS/,/WFMRNG/,/GARBAG/,/FOO/,/CARLF/ SAVE /CONCHR/,/SCTYPE/,/PRNTMD/,/FOO6/,/FOO5/,/YSCALE/,/ERRORS/ SAVE /INT488/,/WFMFOO/,/PARPLZ/,/WFMOUT/,/WFMTAG/,/MSKNRM/,/FX0NRM/ SAVE /MGPATH/,/I2ENML/,/MGFORM/,/MGSTAT/,/FETURE/,/MGFRAM/,/DEBUGC/ SAVE /TST/ EXTERNAL CLTST SAVE * DATA PROGNM/'CLTST'/,MAINLN/'Kerr Image Analysis System '/ DATA DOCR/.TRUE./,CRKEY/'cOPYrIGHT@@@'/,DONE/.FALSE./ DATA CRLINE/'1984,85 Kevin G. Rhoads & High Voltage Research Lab @ MIT.'/ DATA DOSCAN/.TRUE./,MAGNIF/17/,NMAG/17/,REPEAT/.FALSE./ DATA CONTRS/0.0/,BRIGHT/0.0/,CNTRS/0.0/,BRGHT/0.0/

DATA XLIM/0/,YLIM/0/,NDRIVE/-1/,NFRAME/0/ DATA LAST4(1)/510/,LAST4(2)/$1208/,LAST4(3)/511/,LAST4(4)/$1600/ DATA GTFM/.FALSE./,NOT14/.FALSE./,KILLIT/.TRUE./ DATA CHGVLT/0.0/,TLASER/0.0/,POLAR/' '/,BASVAL/1.0/,BASLOG/0.0/ DATA IXNUM/250/,IYNUM/128/,INTRPS/.TRUE./,MODE2D/.FALSE./,PICTUR/.TRUE./ DATA HEXIT/.FALSE./,DATACQ/.FALSE./,SENBAS/$0F80544/,SENDAT/$0F80540/ DATA IIXLEN/250/,IXLEN/250/,IIYLEN/128/,IYLEN/128/,IA256/0/,IA512/0/ DATA RUNNUM/-1/,SHOTNO/0/,DFRAME/'RXXS00.DAT '/,FRAME/'OMAFRAME.TST '/, & FRAME2/'OMAFRAME.TST '/ DATA FLAG77/25*.FALSE./,ISGONG/.FALSE./,ISIT/.FALSE./ DATA DBYET/.FALSE./,DBY2/.FALSE./,SNOW/.FALSE./,UTHEN/.TRUE./,PADS/' '/ DATA SKIP1L/.TRUE./,NOISE/.TRUE./,AUTMED/.FALSE./,AUTMEN/.FALSE./ DATA SCNQLN/2381/,MAXO/.TRUE./,MAX00/.FALSE./,R(11)/1/ DATA (ASCAN(I),I=1,24) & /$6000,$4000,$2000,$3002,0,$1201,1,$1200,2,$1200,3,$1200, & 4,$1200,5,$1200,6,$1200,7,$1200,8,$1200,9,$1200/ DATA LSTTRK/169/,LSTCHL/511/,PICPAG/1/,GRPHPG/0/ DATA PSTATS(0)/'Connected; Powered Up; RUNNING SCAN'/, & PSTATS(1)/'Connected; Powered Up; IDLEING'/, & PSTATS(2)/'Connected; NOT Powered Up '/, & PSTATS(3)/'Connected; NOT Powered Up '/, & PSTATS(4)/'NOT CONNECTED - connect BLUE cable'/ DATA LENFR/32000/,LENTR/250/,NTR/128/,WHSCAN/4/ DATA ABORT,ESCAPE,INTRPT/3*.FALSE./ DATA IASC,ISCAN,IKBF1,IKBF2,IERR /4*0,-1/ DATA RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS /8*.FALSE./ DATA LINESY/.FALSE./,AUTFRM/.TRUE./ DATA SCRN0/12/,CNSL0/11/,KPD/5/,PR/7/,BUSA/36/,BUSB/6/,BUSC/16/,BUSD/26/,F ILE/10/,GR/14/ DATA IGNORE/110/,ZVALID/.FALSE./,ZZCORR/.FALSE./,TITLE/3*' '/,LABEL/' '/ DATA NOTES/' '/,LABOOK/0/,ELCTRD/2*' '/,PLRITY/2*' '/,TMP/5*' '/,CRHO/4*' '/ DATA PTMP/5*' '/,PRHO/4*' '/,PDENS/' '/ DATA WCHGV/0.0/,TL/0.0/,DENS/0.0/,TEMP/5*0.0/,RHO/4*0.0/,FLOW/0.0/,FLUID/2 *0/ DATA FRMTYP/' *** UNINITIALIZED ***','Zero Correction Data' & ,'RAW Data no Zero corr','Zero Corrected Data','Simulated data', & 'Normalized, no Zero corr','Zero Corr. & Normalized','RAW Normalization D ata' & ,' UNKNOWN/NONSTANDARD','ZRC Normalization Data ','ZRC-Normed & Zero Corr ' & ,'|E| from RAW data','|E| from ZRC data','|E| from NORMed data' & ,'|E| from ZRC&NORM data','|E| fm ZRC&ZRC-NORM','? |E| from ??' & ,'RHO from RAW data','RHO from ZRC data','RHO from NORMed data' & ,'RHO from ZRC&NORM data','RHO fm ZRC&ZRC-NORM','? RHO from ??'/ DATA TYPFRM/0/,TYPS/32*-2/,LENXS/32*0/,LENYS/32*0/,FNRNSN/32*0/ DATA AVALID/.FALSE./,AACORR/.FALSE./,CBLNRM/.FALSE./,CBLINV/.TRUE./ DATA CATHV2/.FALSE./,FRCV2N/.FALSE./,FRCV2F/.FALSE./,IPRTSC/.FALSE./ DATA DOPRNT/.FALSE./,TEK468/.FALSE./,TK7854/.TRUE./,TK7D20/.FALSE./ DATA TASCII/.TRUE./,BINARY/.FALSE./,NTRPLT/.FALSE./,RDNG1/.FALSE./,WRTNG0/ .FALSE./ DATA PRPNTS/0/,NOPNTS/0/,BUSDUN/.FALSE./,OTHERW/1/,SCRCHW/9/ DATA TAGS/320*0/,LOWCUT/16383/,IHICUT/0/,PTHDUN/.FALSE./,KI/0/,KJ/0/ DATA IXBEG/0/,IYBEG/0/,IXEND/0/,IYEND/0/,MGFRMN/' ',' '/,MGLR/.FALSE./ DATA INDXB/0/,INDXE/0/,INDYB/0/,INDYE/0/,MGUD/.FALSE./,MGOTHR/.FALSE./ DATA MGOK/.FALSE./,LLCTRD/-1/,RLCTRD/-1/,BLCTRD/-1/,TLCTRD/-1/ DATA VCNTRL/-1/,HCNTRL/-1/,BLCTOK/.FALSE./,TLCTOK/.FALSE./ DATA NRMFX0/.FALSE./,NRMASK/.FALSE./,CNVDBG/.FALSE./,ISTEST/.FALSE./ DATA ASNTBL/0/,SQRTAB/0/,LASTXX/0/ END

*---------------------------------------------------------------------SUBROUTINE TSTPR2(A128,A256,A512) $SEGMENT TSTPAR CHARACTER POLAR*2,PROGNM*18,MAINLN*54,PFNFOO*18,CRKEY*12,CRLINE*72 CHARACTER*36 PSTATS(0:4),PSTAT(0:4),FRMTYP(-2:20)*22 CHARACTER*20 FRAME,FRAME2,FLNM,DFRAME,FILNAM*24,CRUD*3 CHARACTER TC*1,PADS*3,TCALGN(2)*1,NCRUDQ*1,INPUTS*20,INP2*20 CHARACTER*8 SRHEX,SSPHEX,LOOPPT,DBHEX,LOOP2H,HEXARR(10) CHARACTER*8 HEXOF,RESULT,INPUT,FLAG,DATAHX,HX128,HX256,HX512 REAL*4 BASLOG,CHGVLT,TLASER,DTIME*8,SET*8,TIME*8 INTEGER*4 IXLEN,IYLEN,IIXLEN,IIYLEN,IXNUM,IYNUM,HEADER,RUNNUM,SHOTNO INTEGER*4 DATA12,DATA22,DATA13,DATA23,PARARG,MILLIS,FRAMES INTEGER*4 A512(0:131071),IA128,IA256,IA512,NFRAME,NDRIVE INTEGER*4 SENBAS,FPEEK,ISTACK,BST,AST,TIME4,DATA,SENDAT,FLPEEK,INTOF,KADDR ,BLKDS INTEGER*4 GETIVC,GETSSP,HERE,GETBAK,GETBK2,DEFKKK,TYPFRM,AFMTYP INTEGER*4 ADDRDB,DBADDR,DEREF,REENTR,PAREAD,PARE0D,PARE1D,PARE2D,KKK INTEGER*4 PASCRL,PACTLX,PAKPDX,PACOMM,LLENFR,LLENTR,NNTR INTEGER*4 APMAIN,AP2,AP3,AP4,AP5,AP6,APZR,APMX,ZLEN,ZMARK,ZPOINT,APS(0:7) INTEGER*4 LNMAIN,LN2,LN3,LN4,LN5,LN6,LNZR,LNMX,ALEN,AMARK,APOINT,LNS(0:7) INTEGER*4 UNITNO,LENRQX,IOADDR,NTR,LENFR,LENTR INTEGER*4 PARIAD,PARI0D,PARI1D,PARI2D INTEGER*4 IARR(256),HEADRE INTEGER*2 ASC,SCAN,KBF1,KBF2,ERR,IFOO,MASK,I2AND2,L2NOT,MASK2,SMASK INTEGER*2 DATA1,DATA2,FWPEEK,DATAS(2),MASK3,MS,NARG,CMASK,FNRNSN(32) INTEGER*2 IASC,ISCAN,IKBF1,IKBF2,IERR,ISR,OSR,GETSR,A256(0:262144) INTEGER*2 LENXS(32),LENYS(32),TYPS(32) INTEGER*1 WHSCAN,SDKLFD,A128(0:524288) LOGICAL*4 SKIP1L,FILEXS,NOT14,KILLIT,AUTFRM,DIDIT,EOT,NOREAD,DOUBLE,ONOFF LOGICAL*4 DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,DBQQ LOGICAL*4 ISDBON,DBISON,DATACQ,NOISE,MODE2D,PICTUR,HEXIT,QWERTY,INTRPS LOGICAL*4 ISOPEN,FLURB,R2D,DOCR LOGICAL*2 RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS,LINESY,ABORT,ESCAPE,INTRPT LOGICAL*2 ZVALID,ZZCORR,AVALID,AACORR,ISOU,AUTMED,AUTMEN,BUSDUN LOGICAL*1 FLAG77(0:24),ISGONG,ISIT,ISGOIN,WASOFF,ISG0IN,CBLNRM,CBLINV 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 (DATA,DATA1,DATAS(1)),(DATA2,DATAS(2)) EQUIVALENCE (ASC,IASC),(SCAN,ISCAN),(KBF1,IKBF1),(KBF2,IKBF2),(ERR,IERR) EQUIVALENCE (TCALGN(1),ASC),(TCALGN(2),TC),(LENTR,LLENTR),(LENFR,LLENFR) EQUIVALENCE (PSTAT(0),PSTATS(0)),(NTR,NNTR) COMMON /OMAHED/HEADRE,IARR,/INT488/BUSDUN COMMON /OMATYP/TYPS,LENXS,LENYS,FNRNSN,/PARCBL/CBLNRM,CBLINV COMMON /PSYNCH/LINESY,/PARAFM/AUTFRM,/IPPENC/SKIP1L,NOISE,/OMADIT/DOSCAN COMMON /OMABFR/APS,LNS,/OMADSK/NDRIVE,NFRAME,/SMOOTH/AUTMED,AUTMEN COMMON /ZEROS/ZVALID,ZLEN,ZMARK,ZPOINT,ZZCORR,/PARB14/NOT14,KILLIT COMMON /AMPLS/AVALID,ALEN,AMARK,APOINT,AACORR,AFMTYP,/XFRAME/TYPFRM,FRMTYP COMMON /NAMEPR/PROGNM,MAINLN,/NTRVN/ABORT,ESCAPE,INTRPT,/STRBES/ISOU COMMON /PARDBG/LOOPPT,LOOP2H,LOOP,LOOP2,/KEYGET/IASC,ISCAN,IKBF1,IKBF2,IER R COMMON /PARZQX/DBYET,DBY2,FOO,PAROMA,PAR0MA,PAR1MA,SNOW,UTHEN,DIDIT,EOT,NO READ,ONOFF, & DBQQ,FLAG77,ISGONG,ISIT,PADS,NCRUDQ COMMON /OMAPAR/IXNUM,IYNUM,INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,FRAME,QWERTY, IA128,SENBAS,SENDAT COMMON /OMAPR2/IIXLEN,IIYLEN,IXLEN,IYLEN,IA256,IA512 COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/OMANOW/CHGVLT,TLASER,POLAR COMMON /BLKCNV/MAGNIF,LLHILO,CONTRS,BRIGHT,BASLOG/OMAFHG/WHSCAN,SDKLFD

COMMON /SHFSTA/RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS COMMON /FRAMNG/LLENFR,LLENTR,NNTR,/PSTAMS/PSTAT COMMON /PQQXXR/UNITNO,LENRQX,IOADDR,PFNFOO,/GNORF9/CRKEY,CRLINE,DOCR SAVE /OMAPAR/,/OMAPR2/,/FILES/,/OMANOW/,/OMAFHG/,/SHFSTA/,/PSTAMS/,/FRAMNG / SAVE /OMADIT/,/PARB14/,/IPPENC/,/ZEROS/,/XFRAME/,/AMPLS/,/OMABFR/ SAVE /NAMEPR/,/PARZQX/,/PARDBG/,/STRBES/,/NTRVN/,/KEYGET/,/PARCBL/ SAVE /PSYNCH/,/PARAFM/,/OMADSK/,/PQQXXR/,/SMOOTH/,/INT488/,/GNORF9/ SAVE EXTERNAL GETSR,GETIVC,SETIVC,SUPERM,USERM,GETSSP,RSTSSP,JUMPTO,BDTST EXTERNAL DBADDR,DEBUGX,DEREF,SPOKE,WSPOKE,SLPOKE,SWPOKE,DTIME,ISGOIN,ISG0I N EXTERNAL PASCRL,PACTLX,PAKPDX,PACOMM,BLKDS,FSREA8,FSREA7,FSREA6,TRPSOF EXTERNAL FPEEK,ISTACK,HEXOF,I2AND2,WPOKE,LPOKE,FWPEEK,MILLIS,KADDR,FRAMES DATA IJKLI/0/ * WASOFF = .FALSE. INTRPS = .TRUE. IRCNUM = 1 DEFKKK = 0 GOTO 9982 9980 CONTINUE PROGNM = 'TSTPAR' CALL CRCLS 9982 CONTINUE IA128 = KADDR(A128) IIA128 = IA128 IA256 = KADDR(A256) IA512 = KADDR(A512) IF (IA128.NE.IA256.OR.IA128.NE.IA512.OR.IA256.NE.IA512) THEN HX128 = HEXOF(IA128) HX256 = HEXOF(IA256) HX512 = HEXOF(IA512) PRINT *,' 128: ',HX128,' ',IA128 PRINT *,' 256: ',HX256,' ',IA256 PRINT *,' 512: ',HX512,' ',IA512 I = MENU(2,0,3) IF (I.EQ.2) THEN IA128 = IA256 IA512 = IA256 ELSEIF (I.EQ.3) THEN IA128 = IA512 IA256 = IA512 ELSE IA512 = IA128 IA256 = IA128 ENDIF IIA128 = IA128 ENDIF LLENTR = IXLEN NNTR = IYNUM ADDRDB = DBADDR() DBHEX = HEXOF(ADDRDB) LOOP = GETBAK() LOOP2 = REENTR() LOOPPT = HEXOF(LOOP) LOOP2H = HEXOF(LOOP2) ISR = GETSR() OSR = ISR ISOU = .FALSE.

* * *

5510

5517

5512

5513

ONOFF = .TRUE. MASK = $3FFF MASK2 = $C000 MASK3 = $0C00 SMASK = $0003 CMASK = $0004 BST = ISTACK() NOREAD = .TRUE. DOUBLE = .TRUE. PAROMA = .FALSE. PAR0MA = .FALSE. PAR1MA = .FALSE. CRUD = ' ' PADS = ' !!' DBYET = .FALSE. QWERTY = .FALSE. CALL CRCLS LOOP = GETBAK() LOOP2 = REENTR() FOO = .FALSE. ISR = GETSR() DBYET = .FALSE. DBY2 = .TRUE. OSR = ISR CONTINUE NUMARG = NARG() IF (NUMARG.GT.1) THEN I = PARARG(A128,WASOFF) WHSCAN = 4 IF (I.EQ.911) THEN GOTO 911 ELSEIF (I.EQ.2.OR.NUMARG.GT.3) THEN QWERTY = .TRUE. NOISE = .TRUE. GOTO 2 ENDIF ELSEIF (NUMARG.LT.0) THEN CALL RESCRN ENDIF CALL XYGOTO(0,12) CALL PARSTA(ISTAT) PRINT *,' PAR STATUS INDICATOR = ',ISTAT,' ',PSTAT(ISTAT) IF (ISTAT.EQ.2) THEN WASOFF = .TRUE. PRINT *,' INTERFACE BOX IS OFF - please turn it on.' CALL WAIT(0.05) CALL ISNTRP IF (ABORT.OR.ESCAPE.OR.INTRPT) THEN ESCAPE = .TRUE. GOTO 5519 ENDIF CALL PARSTQ(ISTAT) IF (ISTAT.GT.2) GOTO 5517 IF (ISTAT.EQ.2) GOTO 5512 IF (ISTAT.NE.0) GOTO 5510 ELSEIF (ISTAT.EQ.3) THEN WASOFF = .TRUE. PRINT *,' PAR CONTROLLER IS OFF - please turn it on.' CALL WAIT(0.05) CALL ISNTRP

IF (ABORT.OR.ESCAPE.OR.INTRPT) THEN ESCAPE = .TRUE. GOTO 5519 ENDIF CALL PARSTQ(ISTAT) IF (ISTAT.GT.3) GOTO 5517 IF (ISTAT.EQ.3) GOTO 5513 IF (ISTAT.NE.0) GOTO 5510 ELSEIF (ISTAT.EQ.4) THEN PRINT *,' Waiting for PAR CABLE connect.' 5511 CALL WAIT(0.05) CALL ISNTRP IF (ABORT.OR.ESCAPE.OR.INTRPT) THEN ESCAPE = .TRUE. GOTO 5519 ENDIF CALL PARSTQ(ISTAT) IF (ISTAT.GT.4) GOTO 5517 IF (ISTAT.EQ.4) GOTO 5511 IF (ISTAT.NE.0) GOTO 5510 ELSE CALL ISNTRP ENDIF 5519 CONTINUE IF (NUMARG.EQ.1) THEN I = PARARG(A128,WASOFF) WHSCAN = 4 IF (I.EQ.911) THEN GOTO 911 ELSEIF (I.EQ.2) THEN QWERTY = .TRUE. NOISE = .TRUE. GOTO 2 ENDIF * ELSE * PRINT *,'IEEE-488 (GPIB) BUS SETUP? (Y/n)' * I = MENU(1,0,1) ENDIF IF (ABORT) STOP * IF (I.EQ.1) THEN * BUSDUN = .FALSE. * CALL INTSCO * CALL HELLO * CALL INITLB * ENDIF IF (.NOT.(ESCAPE.OR.INTRPT.OR.WASOFF)) THEN CALL CRCLS PRINT *,'TESTING FOR SCAN PATTERN ... ' CALL FRAMLN(A128,LENFR,LENTR,NTR) PRINT *,' PIXELS/FRAME = ',LENFR PRINT *,' PIXELS/TRACK = ',LENTR PRINT *,' TRACKS/FRAME = ',NTR IF (NTR.EQ.1.AND.LENTR.EQ.511) THEN PRINT *,' That appears to be PAR power on defaults, ' PRINT *,' LOADING DEFAULT SCAN PATTERN' CALL REQRWV IYLEN = 128 IXLEN = 250 WHSCAN = 4 CALL PARR2D

ELSE IXLEN = LENTR IYLEN = NTR CALL WAIT(1.5) ENDIF ENDIF IF ((WASOFF.OR.(LENTR*NTR).LT.1000).AND..NOT.ESCAPE) THEN CALL CRCLS PRINT *,' LOADING DEFAULT SCAN PATTERN' CALL WAIT(0.1) CALL PARSTQ(ISTAT) CALL WAIT(0.1) CALL REQRWV WHSCAN = 4 IYLEN = 128 IXLEN = 250 ENDIF CALL ISNTRP IXNUM = IXLEN IIYLEN = IYLEN IYNUM = IYLEN WHSCAN = 4 IF (IXLEN.EQ.500.AND.IYLEN.EQ.170) WHSCAN = 1 IF (IXLEN.EQ.250.AND.IYLEN.EQ.170) WHSCAN = 2 IF (IXLEN.EQ.493.AND.IYLEN.EQ.2) WHSCAN = 3 LENTR = IXLEN NTR = IYLEN LENFR = IXLEN*IYLEN IF (NUMARG.EQ.0) THEN ASC = $85 SCAN = $85 GOTO 911 ENDIF I = FPEEK(SENBAS) J = FPEEK(SENBAS+1) MS = MILLIS() DATA1 = FWPEEK(SENDAT) DATA2 = FWPEEK(SENDAT+2) I2 = FPEEK(SENBAS) J2 = FPEEK(SENBAS+1) K = (I*65536 + J)*256 + I2*65536 + J2 DATAHX = HEXOF(DATA) RESULT = HEXOF(K) K = IAND(K,$62626262) FLAG = HEXOF(K) DIDIT = FLAG(1:4).EQ.'2202' .OR. FLAG(5:8).EQ.'2202' .OR. & FLAG(1:4).EQ.'2000' .OR. FLAG(5:8).EQ.'2000' CALL ISNTRP IF (DIDIT) THEN IF (PAROMA) THEN IF (CBLINV) THEN IFOO = PARI2D() ELSE IFOO = PARE2D() ENDIF ELSEIF (PAR1MA) THEN IF (CBLINV) THEN IFOO = PARI1D() ELSE IFOO = PARE1D()

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

* * * * * * * *

ENDIF ELSEIF (PAR0MA) THEN IF (CBLINV) THEN IFOO = PARI0D() ELSE IFOO = PARE0D() ENDIF ELSEIF (NOREAD) THEN IF (CBLINV) IFOO = L2NOT(DATA1) * ELSE * CALL GETPAR(IFOO,1) * ENDIF * ENDIF MS = MILLIS() IF (MS.LT.0) MS = L2NOT(MS) 2 CONTINUE PROGNM = 'TSTPAR' LOOP2 = REENTR() OSR = ISR ISR = GETSR() SNOW = ISR.GE.$2000 UTHEN = OSR.LT.$2000 IF (NOISE.AND.QWERTY) UTHEN = SNOW DBISON = ISDBON() .AND. NOISE IF ((SNOW.AND.UTHEN).OR.(DBYET.AND.(.NOT.DBY2)).OR.DBISON) THEN WRITE (11,'(A)',ERR=1111) ' (System Error Trapping is ON / Running in SUPERVISOR mode) ' WRITE (11,'(A,A,A,A)',ERR=1111) ' PAR/OMA interface STATUS display: GB $',LOOPPT,' RE $',LOOP2H DBYET = .TRUE. DBY2 = .TRUE. NOISE = .FALSE. ELSEIF ((.NOT.(SNOW.OR.UTHEN)).OR.(DBY2.AND.(.NOT.DBYET))) THEN WRITE (11,'(A)',ERR=1111) ' (System Error Trapping is OFF / Running in USER mode ) ' WRITE (11,'(A)',ERR=1111) ' PAR/OMA interface STATUS display ' DBY2 = .FALSE. DBYET = .FALSE. NOISE = .TRUE. ENDIF CALL LEDSOF CALL GOTOXY(0,0) IJKLI = 0 IF (DATA2.NE.DEFKKK) THEN IF (SNOW) CALL WPOKE(SENDAT+2,DEFKKK) IF (.NOT.SNOW) CALL WSPOKE(SENDAT+2,DEFKKK) ENDIF * IF (DATACQ) THEN MAINLN = 'Kerr Image Analysis System ' CRLINE = '1984-89 Kevin G. Rhoads & High Voltage Research Lab @ MIT.' * ELSE * MAINLN = 'PAR/OMA interface + programming TEST PROGRAM .' * ENDIF 1 CONTINUE LOOP = GETBAK() CALL LEDSOF QWERTY = .FALSE. I = FPEEK(SENBAS) J = FPEEK(SENBAS+1) MS = MILLIS()

'

' D

IF (MS.LT.0) MS = L2NOT(MS) DATA1 = FWPEEK(SENDAT) DATA2 = FWPEEK(SENDAT+2) I2 = FPEEK(SENBAS) J2 = FPEEK(SENBAS+1) K = (I*65536 + J)*256 + I2*65536 + J2 RESULT = HEXOF(K) DATAHX = HEXOF(DATA) DBQQ = ISDBON() IF (DBQQ) THEN CALL BUSERN ENDIF IF (ONOFF) THEN ISIT = ISG0IN() ELSE ISIT = DIDIT ENDIF DIDIT = ISIT IF (.NOT.DIDIT) THEN JJFO = I2AND2(IFOO,MASK2) JFO = JJFO FLAG = HEXOF(JFO) PRINT *,'DATA: $',DATAHX(1:4),' ',DATAHX(5:8),' HS44-> ',RESULT(1:4), 45-> ', 1 RESULT(5:8),' FLAG -> ',FLAG(1:2),PADS,' ',MS,PADS,' ',ISIT ELSE IFO = I2AND2(IFOO,MASK) JJFO = I2AND2(IFOO,MASK2) JFO = JJFO INPUT = HEXOF(IFO) FLAG = HEXOF(JFO) IF (FLAG(1:1).EQ.'F') THEN CRUD = '<==' ELSE CRUD = ' ' ENDIF PRINT *,'DATA: $',DATAHX(1:4),' ',DATAHX(5:8),' HS44-> ',RESULT(1:4), 45-> ', 1 RESULT(5:8),' FLAG/IN ->',FLAG(1:1),INPUT(5:8),' ',MS,PADS,' ',ISIT,CRU ENDIF IKLI = IJKLI IJKLI = IJKLI + 1 IF (IJKLI.GE.23) THEN GOTO 2 ENDIF IF (FLAG77(IJKLI)) THEN CALL GOTOXY(75,IJKLI) PRINT *,' ' FLAG77(IJKLI) = .FALSE. CALL GOTOXY(0,IKLI) ENDIF K = IAND(K,$62626262) FLAG = HEXOF(K) DIDIT = FLAG(1:4).EQ.'2202' .OR. FLAG(5:8).EQ.'2202' .OR. & FLAG(1:4).EQ.'2000' .OR. FLAG(5:8).EQ.'2000' IFOO = DATA1 IF (CBLINV) IFOO = L2NOT(IFOO) IF (DIDIT) THEN IF (PAROMA) THEN

* * * *

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

IF (CBLINV) THEN IFOO = PARI2D() ELSE IFOO = PARE2D() ENDIF ELSEIF (PAR1MA) THEN IF (CBLINV) THEN IFOO = PARI1D() ELSE IFOO = PARE1D() ENDIF ELSEIF (PAR0MA) THEN IF (CBLINV) THEN IFOO = PARI0D() ELSE IFOO = PARE0D() ENDIF ELSEIF (NOREAD) THEN IF (CBLINV) IFOO = L2NOT(DATA1) ELSE CALL GETPAR(IFOO,1) ENDIF ENDIF MS = MILLIS() ERR = -1 CALL GETKEY(ASC,SCAN,KBF1,KBF2,ERR) CALL SHIFTS IF (WHSCAN.EQ.1) THEN IXLEN = 500 IYNUM = 170 MODE2D = .TRUE. ELSEIF (WHSCAN.EQ.2) THEN IXLEN = 250 IYNUM = 170 MODE2D = .TRUE. ELSE MODE2D = (NNTR.NE.1) .OR. (IYLEN.NE.1) ENDIF IIXLEN = IXLEN IXNUM = IXLEN IYLEN = IYNUM IF (ERR.EQ.0.AND.ASC.EQ.3) GOTO 9999 IF (ERR.EQ.0.AND.ASC.EQ.5) THEN CALL CLOPPU CALL OPEPPU ENDIF IA128 = IIA128 IF (ERR.NE.0) GOTO 1 911 CONTINUE PROGNM = 'TSTPAR' IF (SCRL) THEN I = PASCRL(A128,IJKLI) SCRL = .FALSE. IXLEN = LLENTR IYLEN = NNTR MODE2D = NNTR.GT.1 IF (I.EQ.9999) GOTO 9999 IF (I.EQ.911) GOTO 911 IF (I.EQ.2) THEN QWERTY = .TRUE.

* * *

NOISE = .TRUE. GOTO 2 ENDIF GOTO 1 ELSEIF (SCAN.GE.133) THEN I = PAKPDX(A128,IJKLI) IXLEN = LLENTR IYLEN = NNTR MODE2D = NNTR.GT.1 IF (I.EQ.9999) GOTO 9999 IF (I.EQ.911) GOTO 911 IF (I.EQ.2) THEN QWERTY = .TRUE. NOISE = .TRUE. GOTO 2 ENDIF GOTO 1 ELSEIF (ASC.EQ.24.OR.(ASC.EQ.0.AND.SCAN.EQ.$2D)) THEN I = PACTLX(A128,IJKLI) IXLEN = LLENTR IYLEN = NNTR MODE2D = NNTR.GT.1 IF (I.EQ.9999) GOTO 9999 IF (I.EQ.911) GOTO 911 IF (I.EQ.2) THEN QWERTY = .TRUE. NOISE = .TRUE. GOTO 2 ENDIF GOTO 1 ELSEIF (ASC.EQ.5.OR.(ASC.EQ.0.AND.SCAN.EQ.$12)) THEN I = PACTLE(A128,IJKLI) IXLEN = LLENTR IYLEN = NNTR MODE2D = NNTR.GT.1 IF (I.EQ.9999) GOTO 9999 IF (I.EQ.911) GOTO 911 IF (I.EQ.2) THEN QWERTY = .TRUE. NOISE = .TRUE. GOTO 2 ENDIF GOTO 2 ELSEIF (TC.EQ.'?') THEN CALL PARHLP QWERTY = .TRUE. NOISE = .TRUE. GOTO 2 ELSEIF (ERR.EQ.0.AND.ASC.EQ.15) THEN FLAG77(IKLI) = .TRUE. ONOFF = .FALSE. CALL GOTOXY(75,IKLI) PRINT *,'o' IF (IJKLI.GE.23) GOTO 2 GOTO 1 ELSEIF (TC.EQ.'!') THEN CALL INTSCO CALL HELLO ELSEIF (ASC.EQ.0.AND.SCAN.EQ.$18) THEN FLAG77(IKLI) = .TRUE.

ONOFF = .TRUE. CALL GOTOXY(75,IKLI) PRINT *,'O' IF (IJKLI.GE.23) GOTO 2 GOTO 1 ELSEIF (ASC.EQ.0.AND.SCAN.EQ.$14) THEN FLAG77(IKLI) = .TRUE. CALL TOGGLP CALL GOTOXY(75,IKLI) PRINT *,'T' IF (IJKLI.GE.23) GOTO 2 GOTO 1 ELSEIF (ASC.EQ.0.AND.(SCAN.GE.123.AND.SCAN.LE.129)) THEN CALL RSTPAR CALL CRCLS MODE2D = .FALSE. 7753 CONTINUE IKNM = SCAN-119+48 IF (.NOT.(LSH.OR.RSH.OR.CTRL)) THEN FILNAM = 'HSCAN'//CHAR(IKNM)//'.PAR' FLNM = 'HSCAN'//CHAR(IKNM)//'.OUT' ELSE FILNAM = 'SCAN'//CHAR(IKNM)//'.PAR' FLNM = 'SCAN'//CHAR(IKNM)//'.OUT' ENDIF CALL PRESCN CALL LODPAR(FILNAM) IF (LENRQX.GT.0) GOTO 7755 CALL LODPAR(FLNM) IF (LENRQX.GT.0) GOTO 7755 PRINT *,' Just where ARE the scans stored?? ' CALL WAIT(2.0) GOTO 2 7755 CONTINUE WHSCAN = 4 IXLEN = IXNUM IYLEN = IYNUM IF ((IXLEN.LE.0.OR.IYLEN.LE.0).AND.AUTFRM) THEN PRINT *,' DETERMINING FRAME DIMENSIONS ... ' CALL FRAMLN(A128,LENFR,LENTR,NTR) IXLEN = LENTR IYLEN = NTR MODE2D = (NTR.GT.1) PRINT *,' PIXELS/FRAME = ',LENFR PRINT *,' PIXELS/TRACK = ',LENTR PRINT *,' TRACKS/FRAME = ',NTR ENDIF IXNUM = IXLEN IYNUM = IYLEN MODE2D = NTR.GT.1 IIXLEN = IXLEN IIYLEN = IYLEN QWERTY = .TRUE. NOISE = .TRUE. IJKLI = 2 GOTO 2 ELSEIF (ASC.EQ.0.AND.SCAN.EQ.$2E) THEN GOTO 9999 * ELSEIF (ASC.EQ.0.AND.SCAN.EQ.$1E) THEN * FLAG77(IKLI) = .TRUE.

* * * * * * * * * * * * * * * * 9867 * * * * * * * * * * EN * 9876 * * * * * * * * * * * * * * * * * * * * * * * * 9877 * * * * * * * *

IF (SNOW) CALL WPOKE(SENDAT,0) IF (.NOT.SNOW) CALL WSPOKE(SENDAT,0) CALL TOGGLA CALL GOTOXY(75,IKLI) PRINT *,'A' IF (IJKLI.GE.23) GOTO 2 GOTO 1 ELSEIF (ASC.EQ.0.AND.SCAN.EQ.$30) THEN FLAG77(IKLI) = .TRUE. CALL TOGGLB CALL GOTOXY(75,IKLI) PRINT *,'B' IF (IJKLI.GE.23) GOTO 2 GOTO 1 ELSEIF (ASC.EQ.16) THEN PRINT *,'INPUT? ' CALL GOTOXY(8,IJKLI) READ (*,'(A)',ERR=9867) INPUTS DEFKKK = INTOF(INPUTS) CALL GOTOXY(8,IJKLI) PRINT *,' ',DEFKKK,' .' IF (SNOW) CALL WPOKE(SENDAT+2,DEFKKK) IF (.NOT.SNOW) CALL WSPOKE(SENDAT+2,DEFKKK) IJKLI = IJKLI + 1 IF (IJKLI.GE.24) GOTO 2 ELSEIF (TC.EQ.'w'.OR.TC.EQ.'W'.OR.TC.EQ.'P'.OR.TC.EQ.'p'.OR.TC.EQ.'$') TH PRINT *,'INPUT? ' CALL GOTOXY(8,IJKLI) READ (*,'(A)',ERR=9876) INPUTS IF (TC.EQ.'$') THEN INP2 = '$'//INPUTS INPUTS = INP2 ENDIF KKK = INTOF(INPUTS) CALL GOTOXY(8,IJKLI) PRINT *,' ',KKK,' KKK = KKK*65537 IF (SNOW) CALL WPOKE(SENDAT+2,KKK) IF (.NOT.SNOW) THEN IF (RSH.OR.LSH) THEN CALL SWPOKE(SENDAT+2,KKK) ELSE CALL WSPOKE(SENDAT+2,KKK) ENDIF ELSE CALL WPOKE(SENDAT+2,KKK) ENDIF IJKLI = IJKLI + 1 IF (IJKLI.GE.24) GOTO 2 ELSEIF (TC.EQ.'R'.OR.TC.EQ.'r') THEN PRINT *,'INPUT? ' CALL GOTOXY(8,IJKLI) READ (*,'(A)',ERR=9877) INPUTS KKK = INTOF(INPUTS) CALL GOTOXY(8,IJKLI) PRINT *,' ',KKK,' KKK = KKK*65537 IF (.NOT.SNOW) THEN IF (RSH.OR.LSH) THEN

.'

.'

* * * * * * * * *

CALL SWPOKE(SENDAT,KKK) ELSE CALL WSPOKE(SENDAT,KKK) ENDIF ELSE

CALL WPOKE(SENDAT,KKK) ENDIF IJKLI = IJKLI + 1 IF (IJKLI.GE.24) GOTO 2 ELSEIF (ASC.EQ.0.AND.(SCAN.GE.84.AND.SCAN.LE.113)) THEN IIKK = FRAMES(A128,A256,A512) IF (IIKK.EQ.911) GOTO 911 GOTO 2 ELSEIF (SCAN.EQ.$37.AND.SCRL) THEN IZ = ZPOINT IA = IA256 CALL SETPG0 CALL LEDSET(4) CALL CRCLS NOISE = .TRUE. QWERTY = .TRUE. PRINT *,' ' PRINT *,'ALIGNMENT MODE - will display current picture until' PRINT *,' another LASER FLASH is detected, then the new picture will' PRINT *,' be displayed. SEQUENCING is indicated by the KEYPAD LEDs' PRINT *,' ' PRINT *,'TYPE Ctrl C to EXIT this mode (may need to fire laser)' PRINT *,' ' CALL LEDUP 5544 CALL PARSTA(ISTAT) PRINT *,' PAR STATUS INDICATOR = ',ISTAT,' ',PSTAT(ISTAT) IF (ISTAT.EQ.1) THEN CALL PARR2D GOTO 5544 ENDIF IF (ISTAT.GE.2) THEN IF (ISTAT.EQ.4) PRINT *,'After connecting cable - turn ON par powe r.' CALL PAUSE(' Type return when things are ready.') IF (ABORT) GOTO 9999 IF (ESCAPE.OR.INTRPT) GOTO 2 CALL LODPAR('HSCAN128') IXLEN = 250 IYLEN = 128 MAGNIF = 17 PRINT *,'HAVE LOADED DEFAULT 2D MODE SCAN ...' ELSE PRINT *,'DETERMINING PICTURE FRAME SIZE ...' CALL FRAMLN(A128,LENFR,LENTR,NTR) II = LENFR PRINT *,' PIXELS PER FRAME = ',LENFR PRINT *,' PIXELS PER TRACK = ',LENTR IXLEN = LENTR IYLEN = NTR PRINT *,' TRACKS PER FRAME = ',IYLEN CALL WAIT(1.8) 5566 CONTINUE IF (NTR.EQ.1) THEN PRINT *,'NOT CURRENTLY RUNNING WITH 2D SCAN PATTERN ...' CALL LODPAR('HSCAN128')

5555

WHSCAN = 1 MAGNIF = 17 IXLEN = 250 IYLEN = 128 PRINT *,'HAVE LOADED DEFAULT 2D MODE SCAN ...' ENDIF IXNUM = IXLEN IYNUM = IYLEN IIYLEN = IYLEN LENFR = IXLEN*IYLEN ENDIF ILEN = LENFR PRINT *,'CLEARING PICTURE MEMORY BUFFER ...' LENGTH = 262244 CALL LEDRST CALL LEDUP CALL ZAPIT(A128,LENGTH) PRINT *,' HAVE CLEARED MEMORY BUFFER, ABOUT TO READ FRAME ...' PRINT *,' FLASH LASER AFTER KEYPAD LEDS ARE ON' FLURB = .FALSE. CALL LEDUP CALL ISNTRP IF (ABORT.OR.ESCAPE.OR.INTRPT.OR.FLURB) THEN CALL LEDSON CALL SETPG0 CALL GRCLS GOTO 2 ENDIF LENGTH = 524288 CALL LSRMES CALL FXREAD(A128,LENGTH) PRINT *,' HAVE READ FRAME, PROCESSING FOR DISPLAY, LENGTH = ',LENGTH CALL LEDUP IF (ZVALID.AND.ZZCORR) CALL PARZRO(IA,IZ,ILEN) IF (AVALID.AND.AACORR) CALL PARMAX(IA,IMX,ILEN) IIXLEN = IXLEN IIYLEN = IYLEN CALL NORML2(A128(0),IIXLEN,IIYLEN) MAGNIF = 17 IIKK = BLKDS(A128(0),IIXLEN,IIYLEN) IF (IIKK.EQ.911) GOTO 911 CALL LEDUP IF (ERR.EQ.0) THEN FLURB = ASC.EQ.3 .OR. ((LSH.OR.RSH).AND.SCAN.EQ.121) FLURB = FLURB .OR. (SCRL.AND.RSH.AND.SCAN.EQ.$4F) ENDIF CALL LEDSET(5) LENGTH = 262244 CALL ZAPIT(A128,LENGTH) CONTINUE CALL LEDUP CALL ISNTRP IF (ABORT.OR.ESCAPE.OR.INTRPT.OR.FLURB) THEN CALL LEDSON CALL SETPG0 CALL GRCLS GOTO 2 ENDIF LENGTH = 524288 CALL LSRMES

CALL FXREAD(A128,LENGTH) CALL LEDUP IF (ZVALID.AND.ZZCORR) CALL PARZRO(IA,IZ,ILEN) IF (AVALID.AND.AACORR) CALL PARMAX(IA,IMX,ILEN) CALL USESWP IIXLEN = IXLEN IIYLEN = IYLEN CALL NORML2(A128(0),IIXLEN,IIYLEN) MAGNIF = 17 IIKK = BLKDS(A128(0),IIXLEN,IIYLEN) IF (IIKK.EQ.911) GOTO 911 CALL LEDUP CALL DSPSWP IF (ERR.EQ.0) THEN FLURB = ASC.EQ.3 .OR. ((LSH.OR.RSH).AND.SCAN.EQ.121) FLURB = FLURB .OR. (SCRL.AND.RSH.AND.SCAN.EQ.$4F) ENDIF CALL LEDSET(5) LENGTH = 262244 CALL ZAPIT(A128,LENGTH) GOTO 5555 ELSEIF (ASC.EQ.17) THEN FLAG77(IKLI) = .TRUE. NOT14 = .FALSE. CALL GOTOXY(76,IKLI) PRINT *,'n14' IF (IJKLI.GE.23) GOTO 2 GOTO 1 ELSEIF (ASC.EQ.0.AND.SCAN.EQ.$10) THEN FLAG77(IKLI) = .TRUE. NOT14 = .TRUE. CALL GOTOXY(75,IKLI) PRINT *,'14' IF (IJKLI.GE.23) GOTO 2 GOTO 1 ELSE I = PACOMM(A128,IJKLI) IF (I.EQ.9999) GOTO 9999 IF (I.EQ.911) GOTO 911 IF (I.EQ.2) THEN QWERTY = .TRUE. NOISE = .TRUE. GOTO 2 ENDIF GOTO 1 ENDIF OSR = ISR ISR = GETSR() SNOW = ISR.GE.$2000 IF (QWERTY.AND.NOISE) UTHEN = SNOW IF (QWERTY) THEN DBYET = SNOW DBY2 = .NOT.DBYET QWERTY = .FALSE. GOTO 2 ENDIF GOTO 1 9999 CALL LEDSON CALL PARSTQ(ISTAT) IF (ISTAT.EQ.0) CALL PARSTO

IF (ISTAT.LT.2.OR.ISTAT.GT.3) THEN PRINT *,' .' CALL BEEP PRINT *,' PLEASE MAKE CERTAIN THAT THE PAR CONTROLLER IS TURNED OFF .' PRINT *,' PLEASE MAKE CERTAIN THAT THE PAR CONTROLLER IS TURNED OFF .' PRINT *,' .' ENDIF CALL BEEP CALL CLOPPU CALL LEDSOF CALL NUMLOF CALL CAPLON CALL SETPG0 CALL OPESYS CALL USERM CALL NUMLOF CALL CAPLON CALL CCNSL0 * SYSCALL 43 = EXIT, FSCALL PASSES REGISTERS D0-D7, A0-A6; IARR IS USED * AS PLACEHOLDER FOR THESE ARG'S; EXIT TAKES NO ARGS CALL FSCALL(43,IARR(1),IARR(2),IARR(3),IARR(4),IARR(5),IARR(6),IARR(7) & ,IARR(8),IARR(12),IARR(13),IARR(14),IARR(15),IARR(16),IARR(17) & ,IARR(18)) 8121 CONTINUE CALL LEDSON PRINT *,' OPEN ERROR FOR FILE: ',FRAME CALL BEEP CALL PAUSE(' ') CALL LEDSOF GOTO 2 8122 CONTINUE CALL LEDSON PRINT *,' CLOSE ERROR FOR FILE: ',FRAME CALL BEEP CALL PAUSE(' ') CALL LEDSOF GOTO 2 7898 FORMAT (I8,' BYTES REPORTED BY ASM SUBROUTINE.') 9878 FORMAT (BN,I8.0) 1111 CONTINUE DO 1112 I=11,14 CLOSE (UNIT=I,ERR=1112) 1112 CONTINUE CALL OPESCR GOTO 2 CALL CALCQT END

Вам также может понравиться