1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
subroutine tran16
common /sysplt/ mmajx ,mmajy ,mminx ,mminy ,mxlab ,mylab ,
1 mflg ,mtype ,mxa ,mya ,mxb ,myb ,
2 mx ,my ,mtypex ,mtypey ,xxa ,yya ,
3 xxb ,yyb ,xxc ,yyc ,xxd ,yyd ,
4 xfactr ,yfactr ,xadd ,yadd ,xx ,yy ,
5 mfmtx(3) ,mfmty(3) ,mumx ,mumy ,
6 msizx ,msizy ,mxdec ,mydec ,mxor ,mop(19),
7 mname(19) ,mxold ,myold ,mxmax ,mymax ,
8 mxfac ,myfac ,modef ,mf2er ,mshftx ,mshfty ,
9 mmgrx ,mmgry ,mmnrx ,mmnry ,mfrend ,mfrlst ,
+ mcrout ,mpair1 ,mpair2 ,msblen ,mflcnt ,mjxmin ,
1 mjymin ,mjxmax ,mjymax ,mnxsto ,mnysto ,mxxsto ,
2 mxysto ,mprint ,msybuf(360) ,mncpw ,minst ,
3 mbufa ,mbuflu ,mfwa(12) ,mlwa(12) ,
4 mipair ,mbprs(16) ,mbufl ,munit ,mbswap ,
5 small
c ray bovet patch to avoid small integers being set to 0
integer xx,yy
c
logical intt
equivalence (zz,mz),(temp,itemp)
c ray bovet patch to avoid small integers being set to 0
c zz = xx
mz = xx
if (intt(zz)) go to 102
if (mtypex .eq. 0) go to 101
if (zz .le. 0.0)
1 call uliber (0,35h0negative argument with log scaling,35)
zz = amax1(zz,small)
mz = 2.0*(xfactr*alog10(zz)+xadd)
go to 103
101 mz = 2.0*(xfactr*zz+xadd)
go to 103
102 mz = ishift(mz,mshftx+1)
103 mx = max0(0,min0(65535,mz-1))
c ray bovet patch to avoid small integers being set to 0
c zz = yy
mz = yy
if (intt(zz)) go to 105
if (mtypey .eq. 0) go to 104
if (zz .le. 0.0)
1 call uliber (0,35h0negative argument with log scaling,35)
zz = amax1(zz,small)
mz = 2.0*(yfactr*alog10(zz)+yadd)
go to 106
104 mz = 2.0*(yfactr*zz+yadd)
go to 106
105 mz =ishift(mz,mshfty+1)
106 my = max0(0,min0(65535,mz-1))
return
C
entry DTRAN16
C
zz = xx
if(intt(zz) .or. (zz .eq. 0.0)) goto 203
mz = 2.0 * xfactr * zz
203 mx = max0(-127,min0(127,mz))
zz = yy
if(intt(zz) .or. (zz .eq. 0.0)) goto 206
mz = 2.0 * yfactr * zz
206 my = max0(-127,min0(127,mz))
return
end
|