Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Asm/Apollo-11/Comanche055/     Datei vom 11.9.2026 mit Größe 30 kB image not shown  

SSL IMU_COMPENSATION_PACKAGE.agc   Sprache: Apollo

 

# Copyright: Public domain.
# Filename: IMU_COMPENSATION_PACKAGE.agc
# Purpose: Part of the source code for Colossus 2A, AKA Comanche 055.
# It is part of the source code for the Command Module's (CM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Ron Burkey <info@sandroid.org>.
# Website: www.ibiblio.org/apollo.
# Pages: 297-306
# Mod history: 2009-05-08 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 page images/
# 2009-05-21 RSB In IRIGZ, PRIO17 corrected to PRIO21.
#
# 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 055 of AGC program Comanche by NASA
# 2021113-051.  10:28 APR. 1, 1969
#
# This AGC program shall also be referred to as
# Colossus 2A

# Page 297
  BANK 7
  SETLOC IMUCOMP
  BANK
  EBANK= NBDX

  COUNT 06/ICOMP

1/PIPA  CAF LGCOMP  # SAVE EBANK OF CALLING PROGRAM
  XCH EBANK
  TS MODE

  CCS GCOMPSW  # BYPASS IF GCOMPSW NEGATIVE
  TCF +3
  TCF +2
  TCF IRIG1  # RETURN

  INHINT   #  ASSURE COMPLETE COMPENSATION OF DELV'S
     # FOR DOWNLINK.
1/PIPA1  CAF FOUR  # PIPAZ, PIPAY, PIPAX
  TS BUF +2

  INDEX BUF +2
  CA PIPASCF  # (P.P.M.) X 2(-9)
  EXTEND
  INDEX BUF +2
  MP DELVX  # (PP) X 2(+14) NOW (PIPA PULSES) X 2(+5)
  TS Q  # SAVE MAJOR PART

  CA L  # MINOR PART
  EXTEND
  MP BIT6  # SCALE 2(+9) SHIFT RIGHT 9
  INDEX  BUF +2
  TS DELVX +1 # FRACTIONAL PIPA PULSES SCALED 2(+14)

  CA Q  # MAJOR PART
  EXTEND
  MP BIT6  # SCALE 2(+9) SHIFT RIGHT 9
  INDEX BUF +2
  DAS DELVX  # (PIPAI) + (PIPAI)(SFE)

  INDEX BUF +2
  CS PIPABIAS # (PIPA PULSES)/(CS) X 2(-8) *
  EXTEND
  MP 1/PIPADT # (CS) X 2(+8) NOW (PIPA PULSES) X 2(+0) *
  EXTEND
  MP BIT1  # SCALE 2(+14) SHIFT RIGHT 14 *
  INDEX BUF +2
  DAS DELVX  # (PIPAI) + (PIPAI)(SFE) - (BIAS)(DELTAT)

  CCS BUF +2  # PIPAZ, PIPAY, PIPAX
# Page 298
  AD NEG1
  TCF 1/PIPA1 +1
  NOOP   # LESS THAN ZERO IMPOSSIBLE.
  RELINT
# Page 299

IRIGCOMP TS GCOMPSW  # INDICATE COMMANDS 2 PULSES OR LESS.
  TS BUF  # INDEX COUNTER - IRIGX, IRIGY, IRIGZ.

IRIGX  EXTEND
  DCS DELVX  # (PIPA PULSES) X 2(+14)
  DXCH MPAC
  CA ADIAX  # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
  TC GCOMPSUB # -(ADIAX)(PIPAX) (GYRO PULSES) X 2(+14)

  EXTEND   #
  DCS DELVY  # (PIPA PULSES) X 2(+14)
  DXCH MPAC  #
  CS ADSRAX  # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
  TC GCOMPSUB # +(ADSRAX)(PIPAY) (GYRO PULSES) X 2(+14)

# EXTEND # ***
# DCS DELVY # *** (PIPA PULSES) X 2(+14)
# DXCH MPAC # ***
# CA ADOAX # *** (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
# TC GCOMPSUB # *** -(ADOAX)(PIPAZ) (GYRO PULSES) X 2(+14)

  CS NBDX  # (GYRO PULSES)/(CS) X 2(-5)
  TC DRIFTSUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14)

IRIGY  EXTEND
  DCS DELVY  # (PIPA PULSES) X 2(+14)
  DXCH MPAC
  CA ADIAY  # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
  TC GCOMPSUB # -(ADIAY)(PIPAY) (GYRO PULSES) X 2(+14)

  EXTEND
  DCS DELVZ  # (PIPA PULSES) X 2(+14)
  DXCH MPAC
  CS ADSRAY  # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
  TC GCOMPSUB # +(ADSRAY)(PIPAZ) (GYRO PULSES) X 2(+14)

# EXTEND # ***
# DCS DELVX # *** (PIPA PULSES) X 2(+14)
# DXCH MPAC # ***
# CA ADOAY # *** (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
# TC GCOMPSUB # *** -(ADOAY)(PIPAZ) (GYRO PULSES) X 2(+14)

  CS NBDY  # (GYRO PULSES)/(CS) X 2(-5)
  TC DRIFTSUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)

IRIGZ  EXTEND
  DCS DELVY  # (PIPA PULSES) X 2(+14)
  DXCH MPAC
  CA ADSRAZ  # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
# Page 300
  TC GCOMPSUB # -(ADSRAZ)(PIPAY) (GYRO PULSES) X 2(+14)

  EXTEND
  DCS DELVZ  # (PIPA PULSES) X 2(+14)
  DXCH MPAC
  CA ADIAZ  # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
  TC GCOMPSUB # -(ADIAZ)(PIPAZ) (GYRO PULSES) X 2(+14)

# EXTEND # ***
# DCS DELVX # *** (PIPA PULSE) X 2(+14)
# DXCH MPAC # ***
# CS ADOAZ # *** (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
# TC GCOMPSUB # *** +(ADOAZ)(PIPAX) (GYRO PULSES) X 2(+14)

  CA NBDZ  # (GYRO PULSES)/(CS) X 2(-5)
  TC DRIFTSUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2(+14)

# Page 301
  CCS GCOMPSW  # ARE GYRO COMMANDS GREATER THAN 2 PULSES
  TCF +2  # YES
  TCF IRIG1  # NO

  CAF PRIO21  # HIGHER THAN SERVICER-LESS THAN PRELAUNCH
  TC NOVAC
  EBANK= NBDX
  2CADR 1/GYRO

  RELINT
IRIG1  CA MODE  # SET EBANK FOR RETURN
  TS EBANK
  TCF SWRETURN

GCOMPSUB XCH MPAC  # ADIA OR ADSRA COEFFICIENT ARRIVES IN A
  EXTEND   # C(MPAC) = (PIPA PULSES) X 2(+14)
  MP MPAC  # (GYRO PULSES)/(PIPA PULSE) X 2(-3) *
  DXCH VBUF  # NOW = (GYRO PULSES) X 2(+11) *

  CA MPAC +1  # MINOR PART OF PIPA PULSES
  EXTEND
  MP MPAC  # ADIA OR ADSRA
  TS L
  CAF ZERO
  DAS VBUF  # NOW = (GYRO PULSES) X 2(+11) *

  CA VBUF  # PARTIAL RESULT - MAJOR
  EXTEND
  MP BIT12  # SCALE 2(+3) SHIFT RIGHT 3 *
  INDEX BUF  # RESULT = (GYRO PULSES) X 2(+14)
  DAS GCOMP  # HI(ADIA)(PIPAI) OR HI(ADSRA)(PIPAI)

  CA VBUF +1  # PARTIAL RESULT - MINOR
  EXTEND
  MP BIT12  # SCALE 2(+3) SHIFT RIGHT 3 *
  TS L
  CAF ZERO
  INDEX BUF  # RESULT = (GYRO PULSES) X 2(+14)
  DAS GCOMP  # (ADIA)(PIPAI)  OR  (ADSRA)(PIPAI)

  TC Q

# Page 302
DRIFTSUB EXTEND
  QXCH BUF +1

  EXTEND   # C(A) = NBD (GYRO PULSES)/(CS) X 2(-5)
  MP 1/PIPADT # (CS) X 2(+8) NO (GYRO PULSES) X 2(+3)
  LXCH MPAC +1  # SAVE FOR FRACTIONAL COMPENSATION
  EXTEND
  MP BIT4  # SCALE 2(+11) SHIFT RIGHT 11
  INDEX BUF
  DAS GCOMP  # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)

  CA MPAC +1  # NOW MINOR PART
  EXTEND
  MP BIT4  # SCALE 2(+11) SHIFT RIGHT 11
  TS L
  CAF ZERO
  INDEX BUF  # ADD IN FRACTIONAL COMPENSATION
  DAS GCOMP  # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)

DRFTSUB2 CAF TWO  # PIPAX, PIPAY, PIPAZ
  AD BUF
  XCH BUF
  INDEX A
  CCS GCOMP  # ARE GYRO COMMANDS 1 PULSE OR GREATER
  TCF +2  # YES
  TC BUF +1  # NO

  MASK NEGONE
  CCS A  # ARE GYRO COMMANDS GREATER THAN 2 PULSES
  TS GCOMPSW  # YES - SET GCOMPSW POSITIVE
  TC BUF +1  # NO

# Page 303
1/GYRO  CAF FOUR  # PIPAZ, PIPAY, PIPAX
  TS BUF

  INDEX BUF  # SCALE GYRO COMMANDS FOR IMUPULSE
  CA GCOMP +1 # FRACTIONAL PULSES
  EXTEND
  MP BIT8  # SHIFT RIGHT 7
  INDEX BUF
  TS GCOMP +1 # FRACTIONAL PULSES SCALED

  CAF ZERO  # SET GCOMP = 0 FOR DAS INSTRUCTION
  INDEX BUF
  XCH GCOMP  # GYRO PULSES
  EXTEND
  MP BIT8  # SHIFT RIGHT 7
  INDEX BUF
  DAS GCOMP  # ADD THESE TO FRACTIONAL PULSES ABOVE

  CCS BUF  # PIPAZ, PIPAY, PIPAX
  AD NEG1
  TCF 1/GYRO +1
LGCOMP  ECADR GCOMP  # LESS THAN ZERO IMPOSSIBLE

  CAF LGCOMP
  TC BANKCALL
  CADR IMUPULSE # CALL GYRO TORQUING ROUTINE
  TC BANKCALL
  CADR IMUSTALL # WAIT FOR PULSES TO GET OUT
  TCF ENDOFJOB # TEMPORARY

GCOMP1  CAF FOUR  # PIPAZ, PIPAY, PIPAX
  TS BUF

  INDEX BUF  # RESCALE
  CA GCOMP +1
  EXTEND
  MP BIT8  # SHIFT MINOR PART LEFT 7 - MAJOR PART = 0
  INDEX BUF
  LXCH GCOMP +1 # BITS 8-14 OF MINOR PART WERE = 0

  CCS BUF  # PIPAZ, PIPAY, PIPAX
  AD NEG1
  TCF GCOMP1 +1
V06N30S  VN 0630
  TCF ENDOFJOB

# Page 304
NBDONLY  CCS GCOMPSW  # BYPASS IF GCOMPSW NEGATIVE
  TCF +3
  TCF +2
  TCF ENDOFJOB

  INHINT
  CCS FLAGWRD2 # PREREAD T3RUPT MAY COINCIDE
  TCF ENDOFJOB
  TCF ENDOFJOB
  TCF +1

  CA TIME1  # (CS) X 2(+14)
  XCH 1/PIPADT # PREVIOUS TIME
  RELINT
  COM
  AD 1/PIPADT
NBD2  CCS A  # CALCULATE ELAPSED TIME
  AD ONE  # NO TIME1 OVERFLOW
  TCF NBD3  # RESTORE TIME DIFFERENCE AND JUMP
  TCF +2  # TIME1 OVERFLOW
  TCF ENDOFJOB # IF ELAPSED TIME = 0 (DIFFERENCE = -0)

  COM   # CALCULATE ABSOLUTE DIFFERENCE
  AD POSMAX

NBD3  EXTEND   # C(A) = DELTAT (CS) X 2(+14)
  MP BIT10  # SHIFT RIGHT 5
  DXCH VBUF
  EXTEND
  DCA VBUF
  DXCH MPAC  # DELTAT NOW SCALED (CS) X 2(+19)

  CAF ZERO
  TS GCOMPSW  # INDICATE COMMANDS 2 PULSES OR LESS
  TS BUF  # PIPAX, PIPAY, PIPAZ

  CS NBDX  # (GYRO PULSES)/(CS) X 2(-5)
  TC FBIASSUB # -(NBOX)(DELTAT)  (GYRO PULSES) X 2(+14)

  EXTEND
  DCS VBUF
  DXCH MPAC  # DELTAT SCALED (CS) X 2(+19)
  CA NBDY  # (GYRO PULSES)/(CS) X 2(-5)
  TC FBIASSUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)

  EXTEND
  DCS VBUF
  DXCH MPAC  # DELTAT SCALED (CS) X 2(+19)
  CS NBDZ  # (GYRO PULSES)/(CS) X 2(-5)
  TC FBIASSUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2(+14)
# Page 305
  CCS GCOMPSW  # ARE GYRO COMMANDS GREATER THAN 2 PULSES
  TCF 1/GYRO  # YES
  TCF ENDOFJOB # NO

# Page 306
FBIASSUB XCH Q
  TS BUF +1

  CA Q  # NBD SCALED (GYRO PULSES)/(CS) X 2(-5)
  EXTEND
  MP MPAC  # DELTAT SCALED (CS) X 2(+19)
  INDEX BUF
  DAS GCOMP  # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)

  CA Q  # NO FRACTIONAL PART
  EXTEND
  MP MPAC +1
  TS L
  CAF ZERO
  INDEX BUF
  DAS GCOMP  # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)

  TCF DRFTSUB2 # CHECK MAGNITUDE OF COMPENSATION

LASTBIAS TC BANKCALL
  CADR PIPUSE

  CCS GCOMPSW  # BYPASS IF GCOMPSW NEGATIVE
  TCF +3
  TCF +2
  TCF ENDOFJOB

  CAF PRIO31  # 2 SECONDS SCALED (CS) X 2(+8)
  XCH 1/PIPADT
  COM
  AD PIPTIME1 +1 # TIME AT PIPA1 =0
  TCF NBD2


Messung V0.5 in Prozent
C=52 H=100 G=79

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.1.177Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.