forked from DigitalMars/Empire-for-PDP-10
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path4.FOR
103 lines (86 loc) · 2.61 KB
/
4.FOR
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
* SUBROUTINE 4
SUBROUTINE FIND(OWN,Z6,Z8,H2)
C CROSS-REFERENCE SUBROUTINE, IT FINDS DATA ON WHATEVER
CRAFT IS AT POINT Z6.
INCLUDE 'COMMON.EMP/NOLIST'
IF(H2>0)GOTO 1010
* NOW WE MUST DESTROY OWN
* FIRST OF ALL, UPDATE TROOPT
ISHP=0
IF(OWN=='D') ISHP=1
IF(OWN=='S') ISHP=2
IF(OWN=='T') ISHP=3
IF(OWN=='R') ISHP=4
IF(OWN=='C') ISHP=5
IF(OWN=='B') ISHP=6
IF(ISHP==0) GOTO 3100
DO 3000 Z=1,5
3000 IF(TROOPT(ISHP,Z)==Z6) TROOPT(ISHP,Z)=0
* NOW DESTROY THE CRAFT, SET S(N)=0
3100 IF(OWN#'C') GOTO 3001
DO 1000 Z=1,200
IF(S(500+Z)#Z6) GOTO1000;CALL CHAS(500+Z,0)
IF(MODE==1) CALL CURSOR(300,KURSOR)
TYPE 1002,Z
1002 FORMAT('+FIGHTER #'I3' SUNK.'$)
1000 CONTINUE
3001 IF(OWN#'T') GOTO 1006
DO 1007 Z=1,500
IF(S(Z)#Z6) GOTO 1007
CALL CHAS(Z,0)
IF(MODE==1) CALL CURSOR(300,KURSOR)
TYPE 1008,Z
1008 FORMAT('+ARMY #'I3' SUNK.'$)
1007 CONTINUE
1006 IF(OWN#'5') GOTO 1005
DO 1009 Z=1501,2000
1009 IF(S(Z)==Z6) CALL CHAS(Z,0)
1005 IF(OWN#'7') GOTO 1003
DO 1004 Z=2001,2200
1004 IF(S(Z)==Z6) CALL CHAS(Z,0)
1003 CALL CHAS(Z8,0)
IF((OWN>='1').AND.(OWN<='8')) CALL SONAR(Z6)
IF((OWN>='A').AND.(OWN<='T')) CALL SENSOR(Z6)
RETURN
1010 IF(H2==30) GOTO 1011
IF((OWN=='A').OR.(OWN=='F').OR.(OWN=='1').OR.(OWN=='2'))
& GOTO 1760
IF((OWN>='A').AND.(OWN<='T')) CALL CHITS(Z8-700,H2)
IF((OWN>='1').AND.(OWN<='8')) CALL CHITS(Z8-1400,H2)
GOTO 1760
1011 H2=0
IA=1
IF(OWN=='T') IA=1101
IF(OWN=='C') IA=1301
IF(OWN=='5') IA=2601
IF(OWN=='7') IA=2801
DO 1761 Z8=IA,3000
1761 IF(S(Z8)==Z6) GOTO 1762
IF(PASS) TYPE 1763
1763 FORMAT(' ERROR IN SUB. FIND')
GOTO 1760
1762 IF((OWN=='A').OR.(OWN=='F').OR.(OWN=='1').OR.(OWN=='2'))
&H2=1
IF(H2==1) GOTO 1760
IF((OWN>='A').AND.(OWN<='T')) H2=H(Z8-700)
IF((OWN>='1').AND.(OWN<='8')) H2=H(Z8-1400)
1760 RETURN
END
FUNCTION POSCHK(Z6)
* DETERMINES IF Z6 IS IN CURRENT SECTOR SHOWING
INTEGER Z6
COMMON/MODE/MODE,KURSOR,JECTOR,ISEC
IF(MODE==1) GOTO 400; POSCHK=1.; GOTO 200
400 JECT=JECTOR
IF(JECTOR<0) TYPE 500,JECTOR
500 FORMAT(1XG)
POSCHK=0.
IY=(Z6-1)/100
IX=Z6-IY*100
IF(JECT>3) GOTO 100;IF(IX>50) GOTO 200;GOTO 300
100 IF(IX<51) GOTO 200;JECT=JECT-4
300 IF((IY<JECT*15).OR.(IY>JECT*15+14)) GOTO 200
POSCHK=1.
200 RETURN
END
.