adventure: Initial commit
[pdp8.git] / sw / adventure / CARRY.RA
1 SECT CARRY
2 / SUBROUTINE CARRY(OBJECT,WHERE)
3 / C
4 / C START TOTING AN OBJECT, REMOVING IT FROM THE LIST OF THINGS AT ITS FORMER
5 / C LOCATION. INCR HOLDNG UNLESS IT WAS ALREADY BEING TOTED. IF OBJECT>100
6 / C (MOVING "FIXED" SECOND LOC), DON'T CHANGE PLACE OR HOLDNG.
7 / C
8 / IMPLICIT INTEGER (A-Z)
9 / COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG
10 / DIMENSION ATLOC(150),LINK(200),PLACE(100),FIXED(100)
11 / C
12
13 JA #ST
14 #XR, ORG .+10
15 TEXT +CARRY+
16 #RET, SETX #XR
17 SETB #BASE
18 JA .+3
19 #BASE, ORG .+6
20 OBJECT, ORG .+3
21 WHERE, ORG .+3
22 HUND, F 100.0
23 ONE, F 1.0
24 M1, F -1.0
25 ORG #BASE+30
26 FNOP
27 JA #RET
28 FNOP
29 #GOBAK, 0;0
30 #LBL=.
31 COMMON PLACOM
32 ATLOC, ORG .+0702
33 LINK, ORG .+1130
34 PLACE, ORG .+0454
35 FIXED, ORG .+0454
36 HOLDNG, ORG .+3
37 ORG #LBL
38 #RTN, BASE #BASE
39 JA #GOBAK
40 #ST, STARTD
41 0210
42 FSTA #GOBAK,0
43 0200
44 SETX #XR
45 SETB #BASE
46 LDX 0,1
47 FSTA #BASE
48 FLDA% #BASE,1+
49 FSTA OBJECT
50 FLDA% #BASE,1+
51 FSTA WHERE
52 STARTF
53 FLDA% WHERE /Pre-load indexes
54 ATX 6
55 FLDA% OBJECT
56 ATX 7 /Fall thru with OBJECT in AC
57 / IF(OBJECT.GT.100)GOTO 5
58 FSUB HUND
59 JGT #5
60 / IF(PLACE(OBJECT).EQ.-1)RETURN
61 FLDA ONE
62 FADD PLACE-3,7
63 JEQ #RTN
64 / PLACE(OBJECT)=-1
65 FLDA M1
66 FSTA PLACE-3,7
67 / HOLDNG=HOLDNG+1
68 FLDA ONE
69 FADDM HOLDNG
70
71 / 5 IF(ATLOC(WHERE).NE.OBJECT)GOTO 6
72 #5, FLDA ATLOC-3,6
73 FSUB% OBJECT
74 JNE #6
75 / ATLOC(WHERE)=LINK(OBJECT)
76 FLDA LINK-3,7
77 FSTA ATLOC-3,6
78 / RETURN
79 JA #RTN
80
81 / 6 TEMP=ATLOC(WHERE)
82 #6, FLDA ATLOC-3,6
83 / 7 IF(LINK(TEMP).EQ.OBJECT)GOTO 8
84 #7, ATX 5
85 FLDA LINK-3,5
86 FSUB% OBJECT
87 JEQ #8
88 / TEMP=LINK(TEMP)
89 FLDA LINK-3,5
90 / GOTO 7
91 JA #7
92
93 / 8 LINK(TEMP)=LINK(OBJECT)
94 #8, FLDA LINK-3,7
95 FSTA LINK-3,5
96 / RETURN
97 / END
98 JA #RTN
99 END