C PROGRAM PHEADER.FT C ------------------- C C C SUBROUTINE PHEADER(IBUF,IOUTSPOOL) C C C P LEMKIN C NIH C BETHESDA, MD C C C FEB 26, 1977 C FEB 14, 1977 C FEB 10, 1977 C FEB 9, 1977 C FEB 8, 1977 C C C PURPOSE C ------- C THE PHEADER PROCEDURE IS CALLED BY BGETPUT TO C PRINT THE HEADER INFO OF A DATA FILE WHERE C THE HEADER IS IN IB. DIMENSION IB(256),ICS(3) EQUIVALENCE(ICS(1),CS) C C C Logical Data file format C ------------------------ C C A BMON2 data file consists of a file header followed by C BMON2 data where the data format is described in the header. C C ------------------------------------------ C | Header | Variable length data segment | C ------------------------------------------ C 1 block n blocks C C The header contains the following information: C C Header C word C number field and function C ------ ------------------- C 1 (a) Data file space mode (7 to 15 decimal) - 1 word C BM=7, MASK REG=10, QMT=11, BOUNDARY=12, GALSCAN=13, C STATE=15, BINARY MASK=16, PROC10 VARIABLE SIZE C IMAGE=17, PDP10 TRANSFORM DATA=18, LINE DRAWING=19. C 2 (b) File length in blocks (0 means variable) - 1 word C 3:4 (c) Number of data (0 means variable) - 2 words C 5 (d) Number of words/datum (a fraction C expressed by the numerator in the left 6-bit byte, C and the denominator in the right 6-bit byte - 1 word. C 6 (e) Data file submode number - 1 word. C 1 = BM 8-bit packed (1 image) C 2 = BM 16-bit packed (2 images) C 3 = Mask register C 4 = Quantimet function computers C 5 = Boundary 10-bit, vector C 6 = Boundary 10-bit, no vector C 7 = Boundary 8-bit, vector C 8 = Boundary 8-bit, no vector C 9 = Galvanometer scanner 8-bit raster C 10 = Galvanometer scanner 10-bit raster C 11 = Galvanometer scanner 8-bit mask driven C 12 = Galvanometer scanner 12-bit mask driven C 13 = State C 14 = Binary mask image C 15 = PROC10 variable size image (see (r)) C 16 = PROC10 36-bit data transform. C 17 = Line drawing. C 7 (f) Data length - 1 word (0=8-bit, 1=10-bit, C 2=12 bit data, 3=16-bit, 4=1-bit) C 8 (g) Information type - 1 word (0=z data, 1=xy data, C 2=xyz data (not used), 3=(x(e),x(x)) C mask reg. data, 4=QMT function comp. C data, 5=bin. mask, 6=36bit PDP10 words) C 9 (h) Data packing mode - 1 word (0 means packed 8-bit, C 1 means unpacked in 12-bit words). C 10 (i) OS/8 date word when file created - 1 word C month - bits 0:3 C day - bits 4:8 C year (0 to 7) - bits 9:11. C 11 (j) Horizontal window coordinate before scan - 1 word C 12 (k) Vertical window coordinate before scan - 1 word C 13:16 (l) File name and extension (6-bit Ascii) - 4 words C 17:52 (m) 72 character Comment (6-bit Ascii) with zero C last character - 36 words C 53:76 (n) 12-tuple double precision CURRENT position state C vector, see MDPDATA[7:8,1:12] in COMMON - 24 words C 77 (o) gray value used for filling masks (8-bits lsb C default is 255) - 1 word C 78 (p) Class key (0 if not used), 1 to 12 if used. C 79:80 (q) Time of day in two words packed 4A6. C 81 (r) Size of image for submode 15 as (2**n)-1 C 82 (s) Axiomat Lens magnification as number C (eg 100==>100X) C 83:85 (t) Microns/pixel conversion factor as PDP8e floating C point number. C 86:88 (u) Zoom value (0.80x to 3.20x) as PDP8e floating C point number. C 89:90 (v) Horizontal size, vertical size of F&S C 91:92 (w) LCS (Xlcs,Ylcs). C ; C C [0] DO IT FOR THE TTY AND POSSIBLY THE 'LPT' DEVICE DO 1999 I=1,256 K=IBUF S INC \IBUF# 1999 IB(I)=K C IDEV=1 LSNUM=1+IOUTSPOOL C DO 2000 INDEX=1,LSNUM C C C C [1] PRINT [L, E, I, Q] C [1.1] FILE NAME IS IN [13:16] IN 3A2,A2 FORMAT C C [1.2] [E], KSUBTYPE PRINT AS ASCII TABLE ENTRY I=((IB(6)-1)*4)-1 S TAD \I S TAD PTNAME S DCA 11 S TAD I 11 S DCA \ICS S TAD I 11 S DCA \ICS# S TAD I 11 S DCA \I ICS(3)=I C C [1.3] CVS THE DATE I=IB(10) S TAD \I /GET YEAR S AND (7 S DCA \IYEAR C S TAD \I S RTL;RTL; RAL /GET MONTH S AND (17 S DCA \IMONTH C S TAD \I /GET DAY S RAR; RTR S AND (37 S DCA \IDAY C C [1.4] NOTE: HH:MM IS IN IB[79:80] IN 2A2 FORMAT C C [1.5] PRINT IT WRITE(IDEV,101)(IB(I),I=13,16),CS,IMONTH,IDAY,IYEAR, 1(IB(I),I=79,80) 101 FORMAT(' FILE: ',3A2,'.',A2,', DATA TYPE: ',A6 1,', ',I2,'/',I2,'/7',I1,', TIME: ',A2,':',A2) C C C C [2] PRINT [M] WRITE(IDEV,102)(IB(I),I=17,52) 102 FORMAT(' COMMENT:',/,' ',36A2) C C C [3] PRINT CLASS KEY # [P] WRITE(IDEV,103)IB(78) 103 FORMAT(' CLASS KEY#: ',I5) C C C [4] PRINT [S,U,T] C [4.1] GET LENS# LENS=IB(82) C C [4.2] GET ZOOM ,U DO 450 I=1,3 IM1=I-1 450 ICS(I)=IB(IM1+86) ZOOM=CS C C [4.3] GET U/PIXEL DO 451 I=1,3 IM1=I-1 451 ICS(I)=IB(IM1+83) PUC=CS C C [4.4] PRINT IT WRITE(IDEV,104)LENS,ZOOM,PUC 104 FORMAT(' LENS:',I3,'X, ZOOM:',F5.2,'X, ',F7.3, 1' MICRONS/PIXEL') C C C [5] PRINT F&S [J,K,V] HSIZE=IB(89) VSIZE=IB(90) AREA=HSIZE*VSIZE WRITE(IDEV,105)(IB(I),I=11,12),(IB(I),I=89,90),AREA 105 FORMAT(' F&S[HP,VP,HS,VS]=[',I3,',',I4,',',I4,',',I4, 1'], AREA=',F7.0,' PIXELS') C C C [6] PRINT STEPPING MOTOR VALUES [N], 53:76 DO 660 MTRNUM=1,8 C C C [6.1] DO THE EIGHT MOTORS DO 699 IZ=1,2 C COPY CURREN K=(MTRNUM-1)*2+(IZ-1) 699 ICS(IZ)=IB(53+K) C C C [6.2] CONVERT ICS TO FC C CONVERT TO NUMBER FORMAT CALL DPCVRT(ICS,FC,-1) PRINTMODE='MICRON' C GOTO(601,602,603,604,605,606,607,607),MTRNUM C C [6.3] DEFINE THE VALUE AND PRINT NAME. C WAVELENGTH IN NANOMETERS 601 PMODE=' NM. ' GOTO 609 C C NEUTRAL DENSITY IN O.D. 602 PMODE=' O.D. ' GOTO 609 C C ZOOM 603 FC=ZOOM PMODE=' X ' GOTO 609 C C FOCUS 604 FC=FC*0.200 PMODE=PRINTMODE GOTO 609 C C Y 605 FC=FC*0.506 PMODE=PRINTMODE GOTO 609 C C X 606 FC=FC*0.509 PMODE=PRINTMODE GOTO 609 C C T1 AND T2 607 PMODE='/0:255' FC=FC/16.0 C C C [6.4] PRINT A MOTORS POSITION C LOOKUP THE MOTOR NAME S \609, CLA CMA S TAD \MTRNUM S TAD PMNAME /POINTER TO MNAME ARRAY S DCA 7 S TAD I 7 S DCA \IX1 IX2=9-MTRNUM WRITE(IDEV,650)IX2,IX1,FC,PMODE 650 FORMAT(' [',I2,':',A2,']=',F10.3,' ',A6) C 660 CONTINUE C C C 2000 IDEV=3 RETURN C *******PARAMETERS******* S PMNAME, MNAMES S CPAGE 20 S MNAMES, TEXT /WVNDZOFOY X T1T2/ S PTNAME, TNAME S CPAGE 104 S TNAME, TEXT /BM-IMG/ S TEXT /BM-DAT/ S TEXT /MSKREG/ S TEXT /QMT / S TEXT /GRFPEN/ S TEXT /GRFPEN/ S TEXT /GRFPEN/ S TEXT /GRFPEN/ S TEXT /GALSCN/ S TEXT /GALSCN/ S TEXT /GALSCN/ S TEXT /GALSCN/ S TEXT /STATE / S TEXT /BINMSK/ S TEXT /VARIMG/ S TEXT /XFORM / S TEXT /LINDWG/ END