blob: 43d87c01e30510cc7df9300cbcf1dfcadf7dc49f (
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
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <plio.h>
include "pllseg.h"
# PLL_NEXTSEG -- Internal routine called by the PLLSEG.H routines to get the
# next segment of a line list.
procedure pll_nextseg (ll, ld)
short ll[ARB] #I input line list
int ld[LEN_PLLDES] #I list list i/o descriptor
int ip
int opcode, data
begin
for (ip = ld_ip(ld); ip <= LL_LEN(ll); ip = ld_ip(ld)) {
ld_ip(ld) = ip + 1
opcode = I_OPCODE(ll[ip])
data = I_DATA(ll[ip])
switch (opcode) {
case I_ZN:
ld_nleft(ld) = data
ld_value(ld) = 0
return
case I_HN:
ld_nleft(ld) = data
ld_value(ld) = ld_hi(ld)
return
case I_PN:
ld_nleft(ld) = data - 1
ld_value(ld) = 0
ld_next_nleft(ld) = 1
ld_next_value(ld) = ld_hi(ld)
return
case I_SH:
ip = ip + 1
ld_ip(ld) = ip + 1
ld_hi(ld) = (int(ll[ip]) * I_SHIFT) + data
case I_IH:
ld_hi(ld) = ld_hi(ld) + data
case I_DH:
ld_hi(ld) = ld_hi(ld) - data
case I_IS, I_DS:
if (opcode == I_IS)
ld_hi(ld) = ld_hi(ld) + data
else
ld_hi(ld) = ld_hi(ld) - data
ld_nleft(ld) = 1
ld_value(ld) = ld_hi(ld)
return
}
}
ld_value(ld) = 0
end
|