My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
# Copyright: Public domain.
# Filename: TJET_LAW.agc
# Purpose: Part of the source code for Luminary 1A build 099.
# It is part of the source code for the Lunar Module's (LM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 1460-1469
# Mod history: 2009-05-27 RSB Adapted from the corresponding
# Luminary131 file, using page
# images from Luminary 1A.
# 2009-06-06 RSB Eliminated a stray instruction that had crept
# in somehow.
# 2011-01-06 JL Fixed pseudo-label indentation.
#
# This source code has been transcribed or otherwise adapted from
# digitized images of a hardcopy from the MIT Museum. The digitization
# was performed by Paul Fjeld, and arranged for by Deborah Douglas of
# the Museum. Many thanks to both. The images (with suitable reduction
# in storage size and consequent reduction in image quality as well) are
# available online at www.ibiblio.org/apollo. If for some reason you
# find that the images are illegible, contact me at info@sandroid.org
# about getting access to the (much) higher-quality images which Paul
# actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
# 16:27 JULY 14, 1969

# Page 1460
# PROGRAM DESCRIPTION
# DESIGNED BY: R. D. GOSS AND P. S. WEISSMAN
# CODED BY: P. S. WEISSMAN, 28 FEBRURARY 1968
#
# TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR
# ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR:
# -1 INDICATES THE P-AXIS
# +0 INDICATES THE U-AXIS
# +1 INDICATES THE V-AXIS
# THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER
# UNBALANCED COUPLES ARE PREFERRED. TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE
# COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY
# ACCESSED BY INDEXING.
#
# THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST
# PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU, OR TJV). THE NUMBER OF JETS THAT
# TJETLAW ASSUMES WILL BE USED AS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS. TWO JETS ARE ALWAYS
# ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES
# (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR.
#
# IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE
# ERROR AND/OR ERROR RATE ARE LARGE.
#
# CALLING SEQUENCE:
# TC TJETLAW # (MUST BE IN JASK)
# OR
# INHINT # (MUST BE IN JASK)
# TC IBNKCALL
# CADR TJETLAW
# RELINT
#
# EXIT: RETURN TO Q.
#
# INPUT:
# FROM THE CALLER: E, EDOT, AXISCTR, SENSETYP, TJP, -U, -V.
# FROM 1/ACCONT: 48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU, -V).
#
# OUTPUT:
# TJP, -U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3).
#
# DEBRIS:
# A, L, Q, E, EDOT, DAPTEMP1-6, DAPTEMP1-4.
#
# ALARM: NONE

BANK 17
SETLOC DAPS2
BANK
EBANK= TJP
# Page 1461
COUNT* $$/DAPTJ

TJETLAW EXTEND # SAVE Q FOR RETURN.
QXCH HOLDQ

# SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT

INDEX AXISCTR # AXISDIFF(-1)=NO OF LOCATIONS BET P AND U
CAF AXISDIFF # AXISDIFF(0)=0
TS ADRSDIF1 # AXISDIFF(+1)=NO OF LOCATIONS BET V AND U

CAE EDOT # IF EDOT NEGATIVE, PICK UP SET OF VALUES
EXTEND # THAT ALLOW USE OF SAME CODING AS FOR
BZMF NEGEDOT # POSITIVE EDOT.
CAE ADRSDIF1 # SET A SECOND INDEXER WHICH MAY BE
TS ADRSDIF2 # MODIFIED BY A DECISION FOR MAX JETS.
CAF SENSOR # FOR POSITIVE EDOT, ROTSENSE IS
TCF SETSENSE # INITIALIZED POSITIVE.

NEGEDOT CS E # IN ORDER FOR NEG EDOT CASE TO USE CODING
TS E # OF POS EDOT, MUST MODIFY AS FOLLOWS:
CS EDOT # 1. COMPLEMENT E AND EDOT.
TS EDOT # 2. SET SENSE OF ROTATION TO NEGATIVE
CAF BIT1 # (REVERSED LATER IF NECESSARY).
ADS ADRSDIF1 # 3. INCREMENT INDEXERS BY ONE SO THAT
TS ADRSDIF2 # THE PROPER PARAMETERS ARE ACCESSED.
CS SENSOR
SETSENSE TS ROTSENSE

# TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS):
# IF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE.
# IF LESS THAN PI/16 RADIANS, RESCALE TO PI/4

CAE E # PICK UP ATTITUDE ERROR FOR THIS AXIS
EXTEND
MP BIT5 # SHIFT RIGHT TEN BITS: IF A-REGISTER IS
CCS A # ZERO, RESCALE AND TEST EDOT.
TCF RUFLAW2
TCF SCALEE
TCF RUFLAW1
SCALEE CAF BIT13 # ERROR IS IN L SCALED AT PI/16. RESCALE
EXTEND # IT TO PI/4 AND SAVE IT.
MP L
TS E

# TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND)
# IF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE.
# IF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND.

CAE EDOT # PICK UP SINGLE-PRECISION ERROR-RATE
# Page 1462
EXTEND # FOR THIS AXIS=
MP BIT4 # SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS
EXTEND # ZERO, THEN RESCALE AND USE FINELAW.
BZF SCALEDOT
TCF RUFLAW3

# *** FINELAW STARTS HERE ***

SCALEDOT LXCH EDOT # EDOT IS SCALED AT PI/32 RADIANS/SECOND.

CAE EDOT # COMPUTE (EDOT)(EDOT)
EXTEND
SQUARE # PRODUCT SCALED AT PI(2)/2(10) RAD/SEC.
EXTEND
MP BIT13 # SHIFT RIGHT TWO BITS TO RESCALE TO EDOTSQ
TS EDOTSQ # TO PI(2)/2(8) RAD(2)/SEC(2).

ERRTEST CCS E # DOES BIG ERROR (THREE DEG BEYOND THE
AD -3DEG # DEADBAND) REQUIRE MAXIMUM JETS?
TCF +2
AD -3DEG
EXTEND
INDEX ADRSDIF1
SU FIREDB
EXTEND
BZMF SENSTEST # IF NOT: ARE UNBALANCED JETS PREFERRED?
MAXJETS CAF TWO # IF YES: INCRMENT ADDRESS LOCATOR AND
ADS ADRSDIF2 # SET SWITCH FOR JET SELECT LOGIC TO 4.
CAF FOUR # (ALWAYS DO THIS FOR P-AXIS)
TCF TJCALC
SENSTEST CCS SENSETYP # DOES TRANSLATION PREFER MIN JETS.
TCF TJCALC # YES. USE MIN-JET PARAMETERS
TCF MAXJETS # NO. GET THE MAX-JET PARAMETERS.
TJCALC TS NUMBERT # SET TO +0,1,4 FOR (U,V-AXES) JET SELECT.

# BEGINNING OF TJET CALCULATIONS:

CS EDOTSQ # SCALED AT PI(2)/2(8).
EXTEND
INDEX ADRSDIF2
MP 1/ANET1 # .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN.
INDEX ADRSDIF1
AD FIREDB # DEADBAND SCALED AT PI/4 RADIAN.
EXTEND
SU E # ATTITUDE ERROR SCALED AT PI/4 RADIAN.
TS FIREFCT # -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN.
EXTEND
BZMF ZON1,2,3

ZONE4,5 INDEX ADRSDIF1
CAE 1/ACOAST # .5/ACC SCALED AT 2(6)/PI WHERE
# Page 1463
EXTEND # ACC = MAX(AMIN, AOS-).
MP EDOTSQ # SCALED AT PI/2(8).
AD E # SCALED AT PI/4
INDEX ADRSDIF1
AD COASTDB # SCALED AT PI/4 POS. FOR NEG. INTERCEPT.
EXTEND # TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN.
BZMF ZONE5 # IF FUNCTION NEGATIVE, FIND TJET.
# IF FUNCTION POSITIVE, IN ZONE 4.

# ZONE 4 IS THE COAST REGION. HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD
# A. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR
# B. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT
# THEN THE THRUSTERS ARE KEPT ON.

ZONE4 INDEX AXISCTR # IS THE CURRENT VALUE IN TJET NON-ZERO
CS TJETU # WITH SENSE OPPOSITE TO EDOT,
EXTEND # (I.E., ARE JETS ON AND FIRING TOWARD
MP ROTSENSE # THE DESIRABLE STATE).
EXTEND
BZMF COASTTJ # NO. COAST.

JETSON CCS FLAT # YES. IS THIS DRIFTING OR POWERED FLIGHT?
TCF DRIFT/ON # DRIFTING. GO MAKE FURTHER TEST.

CS FIREFCT # POWERED (OR ULLAGE). CAN TARGET PARABOLA
INDEX ADRSDIF1 # BE REACHED FROM THIS POINT IN THE
AD AXISDIST # PHASE PLANE?
EXTEND
BZMF COASTTJ # NO. SET TJET = 0.
TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 1
CAE FIREFCT # AFTER COMPUTING THE REQUIRED
TCF ZONE1 # PARAMETERS.

DRIFT/ON INDEX ADRSDIF1 # CAN TARGET STRIP OF AXIS BE REACHED FROM
CS FIREDB # THIS POINT IN THE PHASE PLANE?
DOUBLE
AD FIREFCT
EXTEND
BZMF +3
COASTTJ CAF ZERO # NO. SET TJET = 0.
TCF RETURNTJ

TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 2
TCF ZONE2,3 # OR 3 AFTER COMPUTING REQUIRED VALUES.

ZONE5 TS L # TEMPORARILY STORE FUNCTION IN L.
CCS ROTSENSE # MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2
TCF +4 # AND ACCFCTZ5, WHICH MUST BE PICKED UP
TC CCSHOLE # FROM THE NEXT LOWER REGISTER IF THE
CS TWO # (ACTUAL) ERROR RATE IS NEGATIVE.
# Page 1464
ADS ADRSDIF2

+4 CAE L
EXTEND
INDEX ADRSDIF2 # TTOAXIS AND HH ARE THE PARAMETERS UPON
MP ACCFCTZ5 # WHICH THE APPROXIMATIONS TO TJET ARE
DDOUBL # ABASED.
DDOUBL
DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).
INDEX ADRSDIF2
CAE 1/ANET2 # SCALED AT 2(7)/PI SEC(2)/RAD.
EXTEND
MP EDOT # SCALED AT PI/2(5)
TS TTOAXIS # SCALED AT 4 SEC.

# TEST WHETHER TJET GREATER THAN 50 MSEC.

EXTEND
MP -.05AT2 # H - .05 TTOAXIS - .00125 G.T. ZERO
AD HH # (SCALED AT 8 SEC(2) ).
AD NEG2
EXTEND
BZMF FORMULA1

# TEST WHETHER TJET GREATER THAN 150 MSEC.

CAE TTOAXIS
EXTEND
MP -.15AT2 # H - .15 TTOAXIS - .01125 G.T. ZERO
AD HH # (SCALED AT 8 SEC(2) )
AD -.0112A8
EXTEND
BZMF FORMULA2

# IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS
# IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC).

FULLTIME CAF BIT11 # 250 MSEC SCALED AT 4 SEC.

# RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED.

RETURNTJ EXTEND # ALL BRANCHES TERMINATE HERE WITH TJET
MP ROTSENSE # (SCALED AT 4 SEC) IN THE ACCUMULATOR.
INDEX AXISCTR # ROTSENSE APPLIES SIGN AND CHANGES SCALE.
TS TJETU
EXTEND
INDEX AXISCTR
MP ACCSWU # SET SWITCH FOR JET SELECT IF ROTATION IS
CAE L
EXTEND # IN A SENSE FOR WHICH 1/ACCS HAS FORCED
BZMF +3 # A MAX-JET CALCULATION.
CAF FOUR
# Page 1465
TS NUMBERT
TC HOLDQ # RETURN VIA SAVED Q.

# TJET = H/(.025 + TTOAXIS) FOR TJET LESS THAN 50 MSEC.

FORMULA1 CS -.025AT4 # .025 SEC SCALED AT 4.
AD TTOAXIS # SCALED AT 4 SECONDS.
DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
DV HH # DP H AND DIVIDE BY DENOMINATOR.
EXTEND
MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
TCF CHKMINTJ # CHECK THAT TJET IS NOT LESS THAN MINIMUM

# TJET = (H + .00375)/(0.1 + TTOAXIS) FOR TJET GREATER THAN 50 MSEC.

FORMULA2 EXTEND
DCA .00375A8 # .00375 SEC(2) SCALED AT 8.
DAS HH # STORE NUMERATOR IN DP H, WHICH NEED NOT
# BE PRESERVED.
CAE TTOAXIS # SCALED AT 4 SEC.
AD .1AT4 # 0.1 SEC SCALED AT 4.
DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
DV HH # DP NUMERATOR AND DIVIDE BY DENOMINATOR
EXTEND
MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
TCF RETURNTJ # END SUBROUTINE.

# SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3.
# REACHED BY TC FROM 3 POINTS IN TJETLAW.

Z123COMP CS ROTSENSE # USED IN RETURNTJ SECTION TO RESCALE TJET
TS ROTSENSE # AS TIME6 AND GIVE IT PROPER SIGN.
CAE EDOT # SCALED AT PI/2(5) RAD/SEC.
EXTEND
INDEX ADRSDIF2
MP 1/ANET1 # SCALED AT 2(7)/PI SEC(2)/RAD.
TS TTOAXIS # STORE TIME-TO-AXIS SCALED AT 4 SECONDS.
AD -TJMAX
EXTEND # IS TIME TO AXIS LESS THAN 150 MSEC.
BZMF +2
TCF FULLTIME # NO. FIRE JETS, DO NOT CALCULATE TJET.
RETURN # YES. GO ON TO FIND TJET

ZON1,2,3 TC Z123COMP # SUBROUTINIZED PREPARATION FOR ZONE1,2,3.

# IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL
# LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE. DURING POWERED FLIGHT
# Page 1466
# OR ULLAGE, FLAT = 0

CAE FIREFCT # SCALED AT PI/4 RAD.
AD FLAT
EXTEND
BZMF ZONE1 # NOT IN SPECIAL ZONES.

# FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE. IF ON AXIS, COAST.

ZONE2,3 CS ZONE3LIM # HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS
AD TTOAXIS # 35 MSEC IN DRIFTING FLIGHT
EXTEND # ZERO WHEN TRYING TO ENTER GTS CONTROL.
BZMF ZONE3
ZONE2 CAE TTOAXIS # FIRE TO AXIS.
TCF RETURNTJ
ZONE3 CCS EDOT # CHECK IF EDOT IS ZERO.
CAF BIT6 # FIRE A ONE-JET MINIMUM IMPULSE.
TCF RETURNTJ # TJET = +0.
TC CCSHOLE # CANNOT BE BECAUSE NEG EDOT COMPLEMENTED.
TCF RETURNTJ # TJET = +0.

ZONE1 EXTEND
INDEX ADRSDIF1
SU AXISDIST # SCALED AT PI/4 RAD.
EXTEND
INDEX ADRSDIF2
MP ACCFCTZ1 # SCALED AT 2(7)/PI SEC(2)/RAD.
DDOUBL
DDOUBL
DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).

# TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC:
# 2 2
# IS .5(.150 - TTOAXIS) - H NEGATIVE (SCALED AT 8 SECONDS )

CAE TTOAXIS # TTOAXIS SCALED AT 4 SECONDS.
AD -TJMAX # -.150 SECOND SCALED AT 4.
EXTEND
SQUARE
EXTEND
SU HH # HIGH WORD OF H SCALED AT 8 SEC(2).
EXTEND
BZMF FULLTIME # YES. NEED NOT CALCULATE TJET.

# TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE.

CAE HH
AD NEG2
EXTEND
BZMF FORMULA3

# Page 1467
# TJET = H/0.1 + TTOAXIS + .0375 FOR APPROXIMATION OVER MORE THAN 50 MSEC.

CAF .1AT2 # STORE .1 SEC SCALED AT 2 FOR DIVISION.
DXCH HH # DP H SCALED AT 8 SEC(2) NEED NOT BE
EXTEND # PRESERVED.
DV HH # QUOTIENT SCALED AT 4 SECONDS.
AD TTOAXIS # SCALED AT 4 SEC.
AD .0375AT4 # .0375 SEC SCALED AT 4.
TCF RETURNTJ # END COMPUTATION.

# TJET - H/.O25 + TTOAXIS FOR APPROXIMATION OVER LESS THAN 50 MSEC.

FORMULA3 CS -.025AT2 # STORE +.25 SEC SCALED AT 2 FOR DIVISION
DXCH HH # PICK UP DP H AT 8, WHICH NEED NOT BE
EXTEND # PRESERVED.
DV HH # QUOTIENT SCALED AT 4 SECONDS.
AD TTOAXIS # SCALED AT 4 SEC.

# IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO.
# MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY.

CHKMINTJ AD -TJMIN # IS COMPUTED TIME LESS THAN THE MINIMUM.
EXTEND
BZMF COASTTJ # YES, SET TIME TO ZERO.
AD TJMIN # NO, RESTORE COMPUTED TIME.
TCF RETURNTJ # END COMPUTATION.

# Page 1468
# *** ROUGHLAW ***
#
# BEFORE ENTRY TO RUFLAW:
# 1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT.
# 2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE.
# 3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC.
# (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4)
#
# RUFLAW1: ERROR MORE NEGATIVE THAN PI/16 RAD. FIRE TO A RATE OF 6.5 DEG/SEC (IF JET TIME EXCEEDS 20 MSEC.).
# RUFLAW2: ERROR MORE POSITIVE THAN PI/16 RAD. FIRE TO AN OPPOSING RATE OF 6.5 DEG/SEC.
# RUFLAW3: ERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS. COAST IF BELOW FIREFCT, FIRE IF ABOVE

RUFLAW1 CS RUFRATE # DECREMENT EDOT BY .1444 RAD/SEC AT PI/4
ADS EDOT # WHICH IS THE TARGET RATE
EXTEND
BZMF SMALRATE # BRANCH IF RATE LESS THAN TARGET.
TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
CAE EDOT # PICK UP DESIRED RATE CHANGE.

RUFLAW12 EXTEND # COMPUTE TJET
INDEX ADRSDIF2 # = (DESIRED RATE CHANGE)/(2-JET ACCEL.)
MP 1/ANET1 +2
AD -1/8 # IF TJET, SCALED AT 32 SEC, EXCEEDS
EXTEND # 4 SECONDS, SET TJET TO TJMAX.
BZMF +2
TCF FULLTIME
EXTEND
BZF FULLTIME
AD BIT12 # RESTORE COMPUTED TJET TO ACCUMULATOR
DAS A
DAS A
DAS A # RESCALED TJET AT 4 SECONDS.
TCF CHKMINTJ # RETURN AS FROM FINELAW.

SMALRATE TC RUFSETUP +2 # SET NUMBERT AND FIREFCT FOR MAXIMUM JETS
CCS ROTSENSE
CAF ONE # MODIFY INDEXER TO POINT TO 1/ANET
TCF +2 # CORRESPONDING TO THE PROPER SENSE.
CAF NEGONE
ADS ADRSDIF2

CS EDOT # (.144 AT PI/4 - EDOT) = DESIRED RATE CHNG.
TCF RUFLAW12

RUFLAW2 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
CAF RUFRATE
AD EDOT # (.144 AT PI/4 + EDOT) = DESIRED RATE CHNG.
TS A # IF OVERFLOW SKIP, FIRE FOR FULL TIME.
TCF RUFLAW12 # OTHERWISE, COMPUTE JET TIME.
TCF FULLTIME

# Page 1469
RUFLAW3 TC RUFSETUP # EXECUTE COMMON RUFLAW SUBROUTINE.
INDEX ADRSDIF1
CS FIREDB # CALCULATE DISTANCE FROM SWITCH CURVE
AD E # 1/ANET1*EDOT*EDOT +E - FIREDB = 0
EXTEND # SCALED AT 4 PI RADIANS
MP BIT11
XCH EDOT
EXTEND
SQUARE
EXTEND
INDEX ADRSDIF1
MP 1/ANET1 +2
AD EDOT
EXTEND
BZMF COASTTJ # COAST IF BELOW IT.
TCF FULLTIME # FIRE FOR FULL PERIOD IF ABOVE IT.

# SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW.

RUFSETUP CS ROTSENSE # REVERSE ROTSENSE WHEN ENTER HERE.
TS ROTSENSE
+2 CAF FOUR # REQUIRE MAXIMUM (2) JETS IN U,V-AXES.
TS NUMBERT
CAF NEGMAX # SUGGEST MAXIMUM (4) JETS IN P-AXIS.
TS FIREFCT
TC Q

# CONSTANTS FOR TJETLAW

DEC -16 # AXISDIFF(INDEX) = NUMBER OF REGISTERS
AXISDIFF DEC +0 # BETWEEN STORED 1/ACCS PARAMETERS FOR
DEC 16 # THE INDEXED AXIS AND THE U-AXIS.
SENSOR OCT 14400 # RATIO OF TJET SCALING WITHIN TJETLAW
# (4 SEC) TO SCALING FOR T6 (10.24 SEC).
-3DEG DEC -.06667 # -3.0 DEGREES SCALED AT 45.
-.0112A8 DEC -.00141 # -.01125 SEC(2) SCALED AT 8.
.1AT4 DEC .025 # 0.1 SECOND SCALED AT 4.
.1AT2 DEC .05 # .1 SEC SCALED AT 2.
.0375AT4 DEC .00938 # .0375 SEC SCALED AT 4.
-.025AT2 DEC -.0125 # -.025 SEC SCALED AT 2.
-.025AT4 DEC -.00625
-.05AT2 DEC -.025
-.15AT2 DEC -.075
.00375A8 2DEC .00375 B-3

-TJMAX DEC -.0375 # LARGEST CALCULATED TIME. .150 SEC AT 4.
TJMIN DEC .005 # SMALLEST ALLOWABLE TIME. .020 SEC AT 4.
-TJMIN DEC -.005
RUFRATE DEC .1444 # CORRESPONDS TO TARGET RATE OF 6.5 DEG/S.

Change log

r694 by jim.lawton on Jan 6, 2011   Diff
Fixed a bunch of indentation errors,
comment chars missing. Fixed a few pseudo-
labels not indented at all, resulting in
spurious symbols.
Go to: 
Project members, sign in to write a code review

Older revisions

r390 by jim.lawton on Sep 3, 2009   Diff
Set eol-style on AGC sources to
native.
r259 by i...@sandroid.org on Jul 21, 2009   Diff
AGC source code renamed from *.s to
*.agc and AEA source code
renamed from *.s to *.aea to take
advantage of the fact that
Google has implemented syntax
...
r222 by i...@sandroid.org on Jun 6, 2009   Diff
Made additional fixes to Luminary099
source files, so that at least all of
the memory banks assemble to the
proper
length --- i.e., so that each bank's
...
All revisions of this file

File info

Size: 17268 bytes, 520 lines

File properties

svn:eol-style
native
Powered by Google Project Hosting