Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

 EXECUTIVE.agc   Interaktion und
PortierbarkeitApollo

 

# Copyright: Public domain.
# Filename: EXECUTIVE.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: 1208-1220
# Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the
# same name, using Comanche055 page images.
#
# 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 1208
  BLOCK 02

# TO ENTER A JOB REQUEST REQUIRING NO VAC AREA:

  COUNT 02/EXEC

NOVAC  INHINT
  AD FAKEPRET # LOC(MPAC +6) - LOC(QPRET)
  TS NEWPRIO  # PRIORITY OF NEW JOB + NOVAC C(FIXLOC)

  EXTEND
  INDEX Q  # Q WILL BE UNDISTURBED THROUGHOUT.
  DCA 0  # 2CADR OF JOB ENTERED.
  DXCH NEWLOC
  CAF EXECBANK
  XCH FBANK
  TS EXECTEM1
  TCF NOVAC2  # ENTER EXECUTIVE BANK.

# TO ENTER A JOB REQUEST REQUIRING A VAC AREA - E.G., ALL (PARTIALLY) INTERPRETIVE JOBS.

FINDVAC  INHINT
  TS NEWPRIO
  EXTEND
  INDEX Q
  DCA 0
SPVACIN  DXCH NEWLOC
  CAF EXECBANK
  XCH FBANK
  TCF FINDVAC2 # OFF TO EXECUTIVE SWITCHED-BANK.

# TO ENTER A FINDVAC WITH THE PRIORITY IN NEWPRIO TO THE 2CADR ARRIVING IN A AND L:
# USERS OF SPVAC MUST INHINT BEFORE STORING IN NEWPRIO.

SPVAC  XCH Q
  AD NEG2
  XCH Q
  TCF SPVACIN

# TO SUSPEND A BASIC JOB SO A HIGHER PRIORITY JOB MAY BE SERVICED:

CHANG1  LXCH Q
  CAF EXECBANK
  XCH BBANK
  TCF CHANJOB

# TO SUSPEND AN INTERPRETIVE JOB:

CHANG2  CS LOC  # NEGATIVE LOC SHOWS JOB = INTERPRETIVE.
# ITRACE (4) REFERS TO "CHANG2".
# Page 1209
  TS L
 +2 CAF EXECBANK
   TS BBANK
  TCF CHANJOB -1

# Page 1210
# TO VOLUNTARILY SUSPEND A JOB UNTIL THE COMPLETION OF SOME ANTICIPATED EVENT (I/O EVENT ETC.):

JOBSLEEP TS LOC
  CAF EXECBANK
  TS FBANK
  TCF JOBSLP1

# TO AWAKEN A JOB PUT TO SLEEP IN THE ABOVE FASHION:

JOBWAKE  INHINT
  TS NEWLOC
  CS TWO  # EXIT IS VIA FINDVAC/NOVAC PROCEDURES.
  ADS Q
  CAF EXECBANK
  XCH FBANK
  TCF JOBWAKE2

# TO CHANGE THE PRIORITY OF A JOB CURRENTLY UNDER EXECUTION:

PRIOCHNG INHINT   # NEW PRIORITY ARRIVES IN A. RETURNS TO
  TS NEWPRIO  # CALLER AS SOON AS NEW JOB PRIORITY IS
  CAF EXECBANK # HIGHEST. PREPARE FOR POSSIBLE BASIC-
  XCH BBANK  # STYLE CHANGE-JOB.
  TS BANKSET
  CA Q
  TCF PRIOCH2

# TO REMOVE A JOB FROM EXECUTIVE CONSIDERATIONS:

ENDOFJOB CAF EXECBANK
  TS FBANK
  TCF ENDJOB1

ENDFIND  CA EXECTEM1 # RETURN TO CALLER AFTER JOB ENTRY
  TS FBANK  # COMPLETE.
  TCF Q+2
EXECBANK CADR FINDVAC2

FAKEPRET ADRES MPAC -36D # LOC(MPAC +6) - LOC(QPRET)

# Page 1211
# LOCATE AN AVAILABLE VAC AREA.

  BANK 01
  COUNT 01/EXEC

FINDVAC2 TS EXECTEM1 # (SAVE CALLER'S BANK FIRST.)
  CCS VAC1USE
  TCF VACFOUND
  CCS VAC2USE
  TCF VACFOUND
  CCS VAC3USE
  TCF VACFOUND
  CCS VAC4USE
  TCF VACFOUND
  CCS VAC5USE
  TCF VACFOUND
  TC BAILOUT
  OCT 1201  # NO VAC AREAS.

VACFOUND AD TWO  # RESERVE THIS VAC AREA BY STORING A ZERO
  ZL   # IN ITS VAC USE REGISTER AND STORE THE
  INDEX A  # ADDRESS OF THE FIRST WORD OF IT IN THE
  LXCH 0 -1  # LOW NINE BITS OF THE PRIORITY WORD.
  ADS NEWPRIO

NOVAC2  CAF ZERO  # NOVAC ENTERS HERE. FIND A CORE SET.
  TS LOCCTR
  CAF NO.CORES # SEVEN SETS OF ELEVEN REGISTERS EACH.
NOVAC3  TS EXECTEM2
  INDEX LOCCTR
  CCS PRIORITY # EACH PRIORITY REGISTER CONTAINS -0 IF
  TCF NEXTCORE # THE CORRESPONDING CORE SET IS AVAILABLE.
NO.CORES DEC 6
  TCF NEXTCORE # AN ACTIVE JOB HAS A POSITIVE PRIORITY
     # BUT A DORMANT JOB'S PRIORITY IS NEGATIVE

# Page 1212
CORFOUND CA NEWPRIO  # SET THE PRIORITY OF THIS JOB IN THE CORE
  INDEX LOCCTR  # SET'S PRIORITY REGISTER AND SET THE
  TS PRIORITY # JOB'S PUSH-DOWN POINTER AT THE BEGINNING
  MASK LOW9  # OF THE WORK AREA AND OVERFLOW INDICATOR
  INDEX LOCCTR
  TS PUSHLOC  # OFF TO PREPARE FOR INTERPRETIVE PROGRAMS

  CCS LOCCTR  # IF CORE SET ZERO IS BEING LOADED, SET UP
  TCF SETLOC  # OVFIND AND FIXLOC IMMEDIATELY.
  TS OVFIND
  CA PUSHLOC
  TS FIXLOC

SPECTEST CCS NEWJOB  # SEE IF ANY ACTIVE JOBS WAITING (RARE).
  TCF SETLOC  # MUST BE AWAKENED BUT UNCHANGED JOB.
  TC CCSHOLE
  TC CCSHOLE
  TS NEWJOB  # +0 SHOWS ACTIVE JOB ALREADY SET.
  DXCH NEWLOC
  DXCH LOC
  TCF ENDFIND

SETLOC  DXCH NEWLOC  # SET UP THE LOCATION REGISTERS FOR THIS
  INDEX LOCCTR
  DXCH LOC
  INDEX NEWJOB  # THIS INDEX INSTRUCTION INSURES THAT THE
  CS PRIORITY # HIGHEST ACTIVE PRIORITY WILL BE COMPARED
  AD NEWPRIO  # WITH THE NEW PRIORITY TO SEE IF NEWJOB
  EXTEND   # SHOULD BE SET TO SIGNAL A SWITCH.
  BZMF ENDFIND
  CA LOCCTR  # LOCCTR IS LEFT SET AT THIS CORE SET IF
  TS NEWJOB  # THE CALLER WANTS TO LOAD ANY MPAC
  TCF ENDFIND  # REGISTERS, ETC.

NEXTCORE CAF COREINC
  ADS LOCCTR
  CCS EXECTEM2
  TCF NOVAC3
  TC BAILOUT  # NO CORE SETS.
  OCT 1202
# Page 1213
# THE FOLLOWING ROUTINE SWAPS CORE SET 0 WITH THAT WHOSE RELATIVE ADDRESS IS IN NEWJOB.

 -2 LXCH LOC
 -1 CAE BANKSET  # BANKSET, NOT BBANK, HAS RIGHT CONTENTS.
CHANJOB  INHINT
  EXTEND
  ROR SUPERBNK # PICK UP CURRENT SBANK FOR BBCON
  XCH L  # LOC IN A AND BBCON IN L.
 +4 INDEX NEWJOB  # SWAP LOC AND BANKSET.
  DXCH LOC
  DXCH LOC

  CAE BANKSET
  EXTEND
  WRITE SUPERBNK # SET SBANK FOR NEW JOB.
  DXCH MPAC  # SWAP MULTI-PURPOSE ACCUMULATOR AREAS.
  INDEX NEWJOB
  DXCH MPAC
  DXCH MPAC
  DXCH MPAC +2
  INDEX NEWJOB
  DXCH MPAC +2
  DXCH MPAC +2
  DXCH MPAC +4
  INDEX NEWJOB
  DXCH MPAC +4
  DXCH MPAC +4
  DXCH MPAC +6
  INDEX NEWJOB
  DXCH MPAC +6
  DXCH MPAC +6

  CAF ZERO
  XCH OVFIND  # MAKE PUSHLOC NEGATIVE IF OVFIND NZ.
  EXTEND
  BZF +3
  CS PUSHLOC
  TS PUSHLOC

  DXCH PUSHLOC
  INDEX NEWJOB
  DXCH PUSHLOC
  DXCH PUSHLOC  # SWAPS PUSHLOC AND PRIORITY.
  CAF LOW9  # SET FIXLOC TO BASE OF VAC AREA.
  MASK PRIORITY
  TS FIXLOC

  CCS PUSHLOC  # SET OVERFLOW INDICATOR ACCORDING TO
  CAF ZERO
  TCF ENDPRCHG -1

# Page 1214
  CS PUSHLOC
  TS PUSHLOC
  CAF ONE
  XCH OVFIND
  TS NEWJOB

ENDPRCHG RELINT
  DXCH LOC  # BASIC JOBS HAVE POSITIVE ADDRESSES, SO
  EXTEND   # DISPATCH WITH A DTCB.
  BZMF +2  # IF INTERPRETIVE, SET UP EBANK, ETC.
  DTCB
# Page 1215
  COM   # EPILOGUE TO JOB CHANGE FOR INTERPRETIVE
  AD ONE
  TS LOC  # RESUME.
  TCF INTRSM

# COMPLETE JOBSLEEP PREPARATIONS.

JOBSLP1  INHINT
  CS PRIORITY # NNZ PRIORITY SHOWS JOB ASLEEP.
  TS PRIORITY
  CAF LOW7
  MASK BBANK
  EXTEND
  ROR SUPERBNK # SAVE OLD SUPERBANK VALUE.
  TS BANKSET
  CS ZERO
JOBSLP2  TS BUF +1  # HOLDS - HIGHEST PRIORITY.
  TCF EJSCAN  # SCAN FOR HIGHEST PRIORITY ALA ENDOFJOB.

NUCHANG2 INHINT   # QUICK... DONT LET NEWJOB CHANGE TO +0 .
  CCS NEWJOB
  TCF +3  # NEWJOB STILL PNZ
  RELINT   # NEWJOB HAS CHANGED TO +0. WAKE UP JOB
  TCF ADVAN +2 # VIA NUDIRECT.  (VERY RARE CASE.)

  CAF TWO
  EXTEND
  WOR DSALMOUT # TURN ON ACTIVITY LIGHT
  DXCH LOC  # AND SAVE ADDRESS INFO FOR BENEFIT OF
  TCF CHANJOB + 4 #  POSSIBLE SLEEPING JOB.

# Page 1216
# TO WAKE UP A JOB, EACH CORE SET IS FOUND TO LOCATE ALL JOBS WHICH ARE ASLEEP.  IF THE FCADR IN THE
# LOC REGISTER OF ANY SUCH JOB MATCHES THAT SUPPLIED BY THE CALLER, THAT JOB IS AWAKENED.  IF NO JOB IS FOUND,
# LOCCTR IS SET TO -1 AND NO FURTHER ACTION TAKES PLACE.

JOBWAKE2 TS EXECTEM1
  CAF ZERO  # BEGIN CORE SET SCAN.
  TS LOCCTR
  CAF NO.CORES
JOBWAKE4 TS EXECTEM2
  INDEX LOCCTR
  CCS PRIORITY
  TCF JOBWAKE3 # ACTIVE JOB - CHECK NEXT CORE SET.
COREINC  DEC 12  # 12 REGISTERS PER CORE SET.
  TCF WAKETEST # SLEEPING JOB - SEE IF CADR MATCHES.

JOBWAKE3 CAF COREINC
  ADS LOCCTR
  CCS EXECTEM2
  TCF JOBWAKE4
  CS ONE  # EXIT IF SLEEPING JOB NOT FOUND.
  TS LOCCTR
  TCF ENDFIND

WAKETEST CS NEWLOC
  INDEX LOCCTR
  AD LOC
  EXTEND
  BZF +2  # IF MATCH.
  TCF  JOBWAKE3 # EXAMINE NEXT CORE SET IF NO MATCH.

  INDEX LOCCTR  # RE-COMPLEMENT PRIORITY TO SHOW JOB AWAKE
  CS PRIORITY
  TS NEWPRIO
  INDEX LOCCTR
  TS PRIORITY

  CS FBANKMSK # MAKE UP THE 2CADR OF THE WAKE ADDRESS
  MASK NEWLOC  # USING THE CADR IN NEWLOC AND THE EBANK
  AD 2K  # HALF OF BBANK SAVED IN BANKSET.
  XCH NEWLOC
  MASK FBANKMSK
  INDEX LOCCTR
  AD BANKSET
  TS NEWLOC +1

  CCS LOCCTR  # SPECIAL TREATMENT IF THIS JOB WAS
  TCF SETLOC  # ALREADY IN THE RUN (0) POSITION.
  TCF SPECTEST

# Page 1217
# PRIORITY CHANGE. CHANGE THE CONTENTS OF PRIORITY AND SCAN FOR THE JOB OF HIGHEST PRIORITY.

PRIOCH2  TS LOC
  CAF ZERO  # SET FLAG TO TELL ENDJOB SCANNER IF THIS
  TS BUF  # JOB IS STILL HIGHEST PRIORITY.
  CAF LOW9
  MASK PRIORITY
  AD NEWPRIO
  TS PRIORITY
  COM
  TCF JOBSLP2  # AND TO EJSCAN.

# Page 1218
# RELEASE THIS CORE SET AND VAC AREA AND SCAN FOR THE JOB OF HIGHEST ACTIVE PRIORITY.

ENDJOB1  INHINT
  CS ZERO
  TS BUF +1
  XCH PRIORITY
  MASK LOW9
  TS L

  CS FAKEPRET
  AD L

  EXTEND
  BZMF EJSCAN  # NOVAC ENDOFJOB

  CCS L
  INDEX A
  TS 0

EJSCAN  CCS PRIORITY +12D
  TC EJ1
  TC CCSHOLE
  TCF +1

  CCS PRIORITY +24D # EXAMINE EACH PRIORITY REGISTER TO FIND
  TC EJ1  # THE JOB OF HIGHEST ACTIVE PRIORITY.
  TC CCSHOLE
  TCF +1

  CCS PRIORITY +36D
  TC EJ1
-CCSPR  -CCS PRIORITY
  TCF +1

  CCS PRIORITY +48D
  TC EJ1
  TC CCSHOLE
  TCF +1

  CCS PRIORITY +60D
  TC EJ1
  TC CCSHOLE
  TCF +1

  CCS PRIORITY +72D
  TC EJ1
  TC CCSHOLE
  TCF +1

# Page 1219
# EVALUATE THE RESULTS OF THE SCAN.

  CCS BUF +1  # SEE IF THERE ARE ANY ACTIVE JOBS WAITING
  TC CCSHOLE
  TC CCSHOLE

  TCF +2
  TCF DUMMYJOB
  CCS BUF  # BUF IS ZERO IF THIS IS A PRIOCHNG AND
  TCF +2  # CHANGED PRIORITY IS STILL HIGHEST.
  TCF ENDPRCHG -1

  INDEX A  # OTHERWISE, SET NEWJOB TO THE RELATIVE
  CAF 0 -1  # ADDRESS OF THE NEW JOB'S CORE SET.
  AD -CCSPR
  TS NEWJOB
  TCF CHANJOB -2

EJ1  TS BUF +2
  AD BUF +1  # - OLD HIGH PRIORITY.
  CCS A
  CS BUF  +2
  TCF EJ2  # NEW HIGH PRIORITY.
  NOOP
  INDEX Q
  TC 2  # PROCEED WITH SEARCH.

EJ2  TS BUF +1
  EXTEND
  QXCH BUF  # FOR LOCATING CCS PRIORITY + X INSTR.
  INDEX BUF
  TC 2

# Page 1220
# IDLING AND COMPUTER ACTIVITY (GREEN) LIGHT MAINTENANCE. THE IDLING ROUTINE IS NOT A JOB IN ITSELF,
# BUT RATHER A SUBROUTINE OF THE EXECUTIVE.

  EBANK= SELFRET  # SELF-CHECK STORAGE IN EBANK.

DUMMYJOB CS ZERO  # SET NEWJOB TO -0 FOR IDLING.
  TS NEWJOB
  RELINT
  CS TWO  # TURN OFF THE ACTIVITY LIGHT.
  EXTEND
  WAND DSALMOUT
ADVAN  CCS NEWJOB  # IS A NEWJOB ACTIVE ?
  TCF NUCHANG2 # YES... ONE REQUIRING A CHANGE JOB.
  CAF TWO  # NEW JOB ALREADY IN POSITION FOR
  TCF NUDIRECT # EXECUTION.

  CA SELFRET
  TS L  # PUT RETURN ADDRESS IN L.
  CAF SELFBANK
  TCF SUPDXCHZ + 1 # AND DISPATCH JOB.

  EBANK= SELFRET
SELFBANK BBCON SELFCHK

NUDIRECT EXTEND   # TURN THE GREEN LIGHT BACK ON.
  WOR DSALMOUT
  DXCH LOC  # JOBS STARTED IN THIS FASHION MUST BE
  TCF SUPDXCHZ

  BLOCK 2  # IN FIXED-FIXED SO OTHERS MAY USE.

  COUNT 02/EXEC

# SUPDXCHZ - ROUTINE TO TRANSFER TO SUPERBANK.
# CALLING SEQUENCE
# TCF SUPDXCHZ # WITH 2CADR OF DESIRED LOCATION IN A + L.

SUPDXCHZ XCH L  # BASIC.
+1  EXTEND
  WRITE SUPERBNK
  TS BBANK
  TC L

NEG100  OCT 77677




Messung V0.5 in Prozent
C=64 H=100 G=83

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.12Angebot  (Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-10-12) ¤

*Eine klare Vorstellung vom Zielzustand






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

letze Version des Elbe Quellennavigators


Jenseits des Üblichen ....
    

Besucher

Besucher

Statistik
#Sources=1128594
#Domains=1976912