aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/nsppkern/pixels.f
blob: a7b5e0396786dfed2849d28f5edaa8eeb1cf6c2e (plain) (blame)
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
65
66
67
68
69
70
71
72
73
74
subroutine pixels(x0,y0,ni,nj,inten)
      integer*2 inten(1)
c	assume inten is a linear array rather than 2-d.  This is a change
c	from the original code.
c	assume nj == 1
      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
      data ipixop / 10/
      mbpair = ior(ishift(ior(192, ipixop + 1), 8), 8)
      mipair = mipair + 1
      mbprs(mipair) = mbpair
      if (mipair .ge. 16) call flushb
      xx = x0
      yy = y0
      call tran16
      mbpair = mx
      mipair = mipair + 1
      mbprs(mipair) = mbpair
      if (mipair .ge. 16) call flushb
      mbpair=my
      mipair = mipair + 1
      mbprs(mipair) = mbpair
      if (mipair .ge. 16) call flushb
      mbpair=ni
      mipair = mipair + 1
      mbprs(mipair) = mbpair
      if (mipair .ge. 16) call flushb
      mbpair=nj
      mipair = mipair + 1
      mbprs(mipair) = mbpair
      if (mipair .ge. 16) call flushb
      nni = max0(1,(ni+iand(ni,1)))
      nnj = max0(1,nj)
      kmax=nni*nnj
      k=0
      do 200 j=1,nnj
      do 100 i=1,nni
      if(mod(k,254).ne.0) goto 90
      mbpair = ior(ishift(ior(192, ipixop+2),8), min0(254,kmax-k))
      mipair = mipair + 1
      mbprs(mipair) = mbpair
      if (mipair .ge. 16) call flushb
      mbpair = 0
   90 ik = iand ( i, 1)
c
c 14Nov85 mod so that arguments to ishift are of same type
      itmp = inten(i)
      mbpair = ior (ishift(iand(itmp,255),8*ik),mbpair)
c     mbpair = ior (ishift(iand(inten(i),255),8*ik),mbpair)
c
      if ( ik .ne. 0 ) go to 95
      mipair = mipair + 1
      mbprs(mipair) = mbpair
      if (mipair .ge. 16) call flushb
      mbpair = 0
   95 k = k + 1
  100 continue
  200 continue
      return
      end