************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 6 COMMON //NX,NY,NZ,IXMIN,IYMIN,IZMIN,IXMAX,IYMAX,IZMAX 7 DIMENSION NXYZ(3),MXYZ(3),NXYZST(3) 8 CHARACTER*80 TITLE 9 DIMENSION IXYZMIN(3),IXYZMAX(3),OUT(9998) 10 DIMENSION LABELS(20,10),CELL(6) 11 COMPLEX CLINE(4999),COUT(4999) 12 CHARACTER*50 INFILE,OUTFILE,FILENAME 13 CHARACTER*40 FNAME,ASTRING 14 CHARACTER*1 BLINE(2400),OUTSTRING(2400),HSTRING(16),BOXFLAG 15 INTEGER*2 ILINE(1200),H,K,L,N 16 LOGICAL EFLG 17 EQUIVALENCE (NX,NXYZ), (ALINE,CLINE), (OUT,COUT), (BLINE,ILINE) 18 EQUIVALENCE (IXYZMIN, IXMIN), (IXYZMAX, IXMAX) 19 CHARACTER*12 AQDATE, AQTIME ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 6 CHARACTER*80 TITLE 7 CHARACTER*50 INFILE,OUTFILE,FILENAME 8 CHARACTER*40 FNAME,ASTRING 9 CHARACTER*1 BLINE(2400),OUTSTRING(1200),HSTRING(16),BOXFLAG 10 INTEGER*2 ILINE(1200),H,K,L,N 11 EQUIVALENCE (BLINE,ILINE) 12 LOGICAL EFLG 13 CHARACTER*12 AQDATE, AQTIME ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 22 REAL*4 LAMBDA,DISTANCE,PHI_START,PHI_END ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 16 INTEGER*4 ICCOUNTS(2) 17 EQUIVALENCE (ICCOUNTS,BLINE(25)) 18 INTEGER*4 EXPTIME 19 EQUIVALENCE (EXPTIME,BLINE(33)) 20 REAL*4 LAMBDA,DISTANCE,PHI_START,PHI_END ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 25 R64K=256*256 ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 23 CHARACTER*12 IPSYSTEM 24 EQUIVALENCE (IPSYSTEM,BLINE(125)) 25 R64K=256*256 ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 29 DATA NXYZST/3*0/, CNV/57.29578/ 30 31 c DO 2 I=1,16 32 c2 WRITE(6,*)I,' ',HSTRING(I) 33 ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 29 ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 36 . PROGRAM Version 920704'/' To print image: LPR MARXER8.TMP') 37 5 WRITE(6,1100) ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 32 . PROGRAM Version 950107'/' To print image: LPR MARXER.PS') 33 5 WRITE(6,1100) ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 44 OPEN (UNIT=2,FILE=INFILE,STATUS='OLD') 45 ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 40 OPEN (UNIT=2,FILE=INFILE,readonly,STATUS='OLD') 41 ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 69 OPEN (UNIT=3,FILE='MARXER8.TMP',STATUS='NEW',RECL=1200, 70 & CARRIAGECONTROL='LIST') ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 65 OPEN (UNIT=3,FILE='MARXER.PS',STATUS='NEW',RECL=1200, 66 & CARRIAGECONTROL='LIST') ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 80 write(3,'(A)') '50 722 moveto'// 81 & '(Image File: '//FILENAME//' Printed:'//DAT//TIM//') show' ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 76 write(3,'(A)') '50 772 moveto'// 77 & '(Image File: '//FILENAME//' Printed:'//DAT//TIM//') show' ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 87 NXYZ(1)=1200 88 NXYZ(2)=1200 89 NXYZ(3)=1 90 C read HEADER into bline, encode into titles: ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 83 NX=1200 84 NY=1200 85 C read HEADER into bline, encode into titles: ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 98 ENCODE(80,6740,TITLE) AQDATE,AQTIME 99 6740 FORMAT('MAR IPS image of: ',2A20) 100 WRITE(6,72)TITLE 101 72 FORMAT(' ',A80) 102 write(3,'(A)') '50 702 moveto ('//title//') show' 103 ENCODE(80,6741,TITLE) LAMBDA,DISTANCE,PHI_START,PHI_END ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 93 94 IF (IPSYSTEM.EQ.'R-AXIS') THEN 95 ENCODE(80,6739,TITLE) AQDATE,AQTIME 96 PIX=0.105 97 ELSE 98 ENCODE(80,6740,TITLE) AQDATE,AQTIME 99 PIX=0.150 100 ENDIF 101 6739 FORMAT(' R-AXIS image of: ',2A20) 102 6740 FORMAT('MAR IPS image of: ',2A20) 103 72 FORMAT(' ',A80) 104 WRITE(6,72)TITLE 105 write(3,'(A)') '50 752 moveto ('//title//') show' 106 107 ENCODE(80,6745,TITLE) ICCOUNTS(1),ICCOUNTS(2),EXPTIME 108 6745 FORMAT('IC COUNTS AT START, END:',2I9,' EXPOSURE TIME (sec)',I5) 109 WRITE(6,72)TITLE 110 write(3,'(A)') '50 732 moveto ('//title//') show' 111 112 ENCODE(80,6741,TITLE) LAMBDA,DISTANCE,PHI_START,PHI_END ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 106 write(3,'(A)') '50 692 moveto ('//title//') show' 107 108 IF (XM.GT.0) GOTO 87 ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 115 write(3,'(A)') '50 742 moveto ('//title//') show' 116 c Save lambda, distance for calculating resolution: 117 wl=lambda 118 dist = distance 119 120 IF (XM.GT.0) GOTO 87 ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 111 DO 85 IZ = 1,NZ 112 DO 85 IY = 1,NY 113 114 READ(2,155) (BLINE(II),II=1,2400) 115 DO 80 IX=1,NX ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 123 DO 85 IY = 1,NY 124 125 READ(2,155,end=860) (BLINE(II),II=1,2400) 126 DO 80 IX=1,NX ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 123 985 CLOSE(UNIT=2) 124 125 DMEAN=DMEAN/(NX*NY*NZ) 126 TYPE *,'DMIN=',DMIN,' DMAX=',DMAX,' DMEAN=',DMEAN 127 ENCODE(80,6750,TITLE) DMIN,DMAX,DMEAN 128 6750 FORMAT('MARXER V920704: Min/Max/mean density = ',2f8.0,f8.2) 129 write(3,'(A)') '50 682 moveto ('//title//') show' 130 131 OPEN (UNIT=2,FILE=INFILE,STATUS='OLD') 132 C SKIP OVER HEADER FOR NOW: ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 134 nyt=ny 135 GOTO 865 136 860 nyt=iy-1 137 865 CLOSE(UNIT=2) 138 c use only number of record read in computing average 139 140 870 DMEAN=DMEAN/(NX*NYt) 141 TYPE *,'DMIN=',DMIN,' DMAX=',DMAX,' DMEAN=',DMEAN 142 ENCODE(80,6750,TITLE) DMIN,DMAX,DMEAN 143 6750 FORMAT('MARXER V950107: Min/Max/mean density = ',2f8.0,f8.2) 144 write(3,'(A)') '50 712 moveto ('//title//') show' 145 146 OPEN (UNIT=2,FILE=INFILE,readonly,STATUS='OLD') 147 C SKIP OVER HEADER FOR NOW: ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 137 87 SCALE=(XM-X0)/256 138 if (j2.eq.0) then ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 152 87 SCALE=(XM-X0)/16 153 if (j2.eq.0) then ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 156 write(3,'(A)') '50 712 moveto ('//title//') show' 157 ENCODE(80,6743,TITLE) float(nmax)/19.5,0.15*float(nmax)/19.5 158 6743 FORMAT('Scale: 1 cm=',F8.2,' pixels =',f8.3, ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 171 write(3,'(A)') '50 762 moveto ('//title//') show' 172 ENCODE(80,6743,TITLE) float(nmax)/20.,PIX*float(nmax)/20. 173 6743 FORMAT('Scale: 1 cm=',F8.2,' pixels =',f8.3, ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 161 write(3,'(A)') '50 672 moveto ('//title//') show' 162 write(3,'(A)') '572 356.6 translate -90 rotate' 163 write(3,'(A)') '0 4 moveto (TOP (view from source)) cshow' ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 176 write(3,'(A)') '50 722 moveto ('//title//') show' 177 write(3,'(A)') '583 363.6 translate -90 rotate' 178 write(3,'(A)') '0 4 moveto (TOP (view from source)) cshow' ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 166 WRITE(3,'(A)')'gsave initgraphics ' 167 WRITE(3,'(A)')' {1 exch sub} settransfer' 168 n=jn 169 J3=J2 170 if (n.ne.(2*int(n/2))) then 171 n=jn+1 172 J3=J2+1 173 endif 174 WRITE(3,76) n 175 76 format (' /imline ',i4,' string def') 176 write(3,77) jn,in,nmax,-nmax,nmax 177 77 format (' /drawimage {',2i5,' 8 [',i5,' 0 0 ',i5,' 0 ',i5,']') 178 179 WRITE(3,'(A)')' {currentfile imline readhexstring pop} image} def' 180 c scale for unit square = 19.5 cm square 181 write(3,'(A)')'18 75 translate 552.8 dup scale' 182 c write(3,'(A)')'105 314 translate 2340 2340 scale' 183 WRITE(3,'(A)')'drawimage' ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 181 WRITE(3,'(A)')'gsave initgraphics 182 WRITE(3,'(A)')' {1 exch sub} settransfer' 183 nn=jn/2 184 J3=J2 185 if (2*nn.lt.jn) then 186 nn=(jn+1)/2 187 j3=j2+1 ! J3 MUST BE EVEN NUMBER FOR 4-BIT DATA. 188 OUTSTRING(J3)=HSTRING(1) ! PUT ASCII HEX CHAR IN LAST BYTE IN CASE ODD # PIXELS 189 endif 190 WRITE(3,76) nn 191 76 format (' /imline ',i5,' string def') 192 write(3,77) jn,in,nmax,-nmax,nmax 193 77 format (' /drawimage {',2i5,' 4 [',i5,' 0 0 ',i5,' 0 ',i5,']') 194 195 WRITE(3,'(A)')' {currentfile imline readhexstring pop} image} def' 196 c scale for unit square = 20 cm square 197 write(3,'(A)')'18 75 translate 566.9 dup scale' 198 WRITE(3,'(A)')'drawimage' ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 189 88 READ(2,155) (BLINE(II),II=1,2400) 190 DO 95 IY = I1,I2 191 READ(2,155) (BLINE(II),II=1,2400) 192 DO 90 IX=J1,J3 193 X=ILINE(IX) 194 IF (X.LT.0)X=X+R64K 195 JX=INT((X-X0)/SCALE) 196 IF (JX.GT.255) JX=255 197 IF (JX.LT.0) JX=0 198 HINIB=INT(JX/16) 199 LONIB=JX-16*HINIB 200 OUTSTRING(2*IX)=HSTRING(HINIB+1) 201 90 OUTSTRING(2*IX+1)=HSTRING(LONIB+1) 202 95 WRITE(3,156)(OUTSTRING(IX),IX=2*J1,2*J3+1) 203 156 FORMAT(125A1) 204 C WRITE OUT REST OF POSTSCRIPT: ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 204 88 READ(2,155,end=6000) (BLINE(II),II=1,2400) 205 DO 95 IY = I1,I2 206 READ(2,155,end=980) (BLINE(II),II=1,2400) 207 DO 90 IX=J1,J3 208 X=ILINE(IX) 209 c IF (X.LT.0)X=X+R32K 210 IF (X.LT.0)X=X+XM 211 JX=INT((X-X0)/SCALE) 212 IF (JX.GT.15) JX=15 213 IF (JX.LT.0) JX=0 214 90 OUTSTRING(IX)=HSTRING(JX+1) 215 95 WRITE(3,156)(OUTSTRING(IX),IX=J1,J3) ! must be even number of bytes for 4-bit data, ALL ASCII HEX! 216 156 FORMAT(125A1) 217 goto 990 218 980 WRITE(6,*)'UNEXPECTED END OF FILE READING IMAGE FILE! FILL W WHITE.' 219 iyt=iy 220 do 97 ix=j1,j3 221 97 outstring(ix)=hstring(1) 222 do 98 iy=iyt,i2 223 98 WRITE(3,156)(OUTSTRING(IX),IX=J1,J3) 224 990 CLOSE(UNIT=2) 225 C WRITE OUT REST OF POSTSCRIPT: ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 209 990 CLOSE(UNIT=2) 210 z=1/float(nmax) ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 230 z=1/float(nmax) ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 229 write(3,*) '1 1 .5 setrgbcolor' 230 TYPE *,'READING DENZO OUTPUT FILE for spot locations' ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 249 TYPE *,'READING DENZO OUTPUT FILE for spot locations' ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 238 355 READ (2,360)X 239 360 FORMAT (F7.4) ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 257 C 355 READ (2,360)X 258 360 FORMAT (F7.4) ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 242 N1=N1+1 ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 261 if (h.eq.999) goto 500 262 N1=N1+1 ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 262 501 write(6,*)'Enter beam center x,y, wl, and distance; or 0,0,0,0', 263 & ' to not draw circles:' 264 write(6,*)'(beam center and distance in mm, wl in A.U.)' 265 read(5,*)beamx,beamy,wl,dist 266 if (beamx.eq.0) goto 505 267 c convert to pixels: 268 beamx=beamx/0.15 269 beamy=beamy/0.15 270 write(6,*)'Enter resolution in angstroms at which to draw circle:' 271 write(6,*)'Enter 0 after last circle' 272 write(3,*) '0 1 1 setrgbcolor' 273 502 read(5,*)resol ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 282 C501 write(6,*)'Enter beam center x,y, wl, and distance; or 0,0,0,0', 283 C & ' to not draw circles:' 284 C write(6,*)'(beam center and distance in mm, wl in A.U.)' 285 C read(5,*)beamx,beamy,wl,dist 286 c501 write(6,*)'Enter beam center in mm: x,y; or 0,0 to not draw ', 287 c & 'circles:' 288 c read(5,*)beamx,beamy 289 c if (beamx.eq.0) goto 505 290 c convert to pixels: 291 c beamx=beamx/PIX 292 c beamy=beamy/PIX 293 294 501 WRITE(6,*)' For now center will be assumed 600,600 pixels!' 295 BEAMX=600 296 BEAMY=600 297 write(6,*)'Enter resolution in angstroms at which to draw circle:' 298 write(6,*)'Enter 0 to draw no (more) circles' 299 write(6,*)' wl=',wl 300 502 read(5,*)resol ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 277 theta=asin(x) 278 c theta=ATAN(x/sqrt(1-x*x)) 279 radius=dist*TAN(2*theta) 280 c convert to pixels: 281 radius=radius/0.15 282 write(6,*)beamx,beamy,radius ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 304 theta=ASIN(x) 305 radius=dist*TAN(2*theta) 306 c convert to pixels: 307 radius=radius/PIX 308 write(6,*)beamx,beamy,radius ************ ************ File DISK$XRAY4:[BERRY.FOR]MX8.FOR;14 289 write(6,*)'LPR-ing MARXER8.tmp' 290 J=LIB$SPAWN('LPR MARXER8.TMP') 291 C J=LIB$SPAWN('DEL MARXER8.TMP;*') 292 C write(6,*)'purging MARXER8.tmp' 293 C J=LIB$SPAWN('PURGE MARXER8.TMP') 294 GOTO 5 295 END 296 ****** File DISK$XRAY4:[BERRY.FOR]MX4.FOR;22 315 write(6,*)'LPR-ing marxer.PS' 316 J=LIB$SPAWN('LPR MARXER.PS') 317 C J=LIB$SPAWN('DEL MARXER.PS;*') 318 write(6,*)'purging marxer.ps' 319 J=LIB$SPAWN('PURGE MARXER.ps') 320 GOTO 5 321 6000 write(3,'(A)')' grestore 50 200 moveto (incomplete file!) show 322 close (unit=3) 323 close (unit=2) 324 WRITE(6,*) 'END OF FILE ENCOUNTERED BEFORE SELECTED AREA!' 325 GOTO 505 326 END 327 328 329 330 ************ Number of difference sections found: 25 Number of difference records found: 156 DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$XRAY4:[BERRY.FOR]MX8BIT.DIF;1- DISK$XRAY4:[BERRY.FOR]MX8.FOR;14- DISK$XRAY4:[BERRY.FOR]MX4.FOR;22