swh:1:snp:cdcd2bc43331a436e8c659ba93175ef7d7eb339b
Raw File
Tip revision: 4e5d304eb7cd5589b924ffb8b423b6f15511b35d authored by Ron Burkey on 20 October 2018, 17:47:00 UTC
The sample Block I AGC program TRIVIUM, found at the very end of one of
Tip revision: 4e5d304
PHASE_TABLE_MAINTENANCE.agc
### FILE="Main.annotation"
## Copyright:    Public domain.
## Filename:     PHASE_TABLE_MAINTENANCE.agc
## Purpose:      Part of the source code for Aurora (revision 12).
## Assembler:    yaYUL
## Contact:      Ron Burkey <info@sandroid.org>.
## Website:      https://www.ibiblio.org/apollo.
## Pages:        148-150
## Mod history:  2016-09-20 JL   Created.
##		 2016-10-03 JL	 Transcribed pages 148-150.
##               2016-10-08 HG   change TS LXCH -> TS L
##		 2016-12-08 RSB	 Proofed comments with octopus/ProoferComments
##				 and fixed the errors found.

## This source code has been transcribed or otherwise adapted from
## digitized images of a hardcopy from the private collection of
## Don Eyles.  The digitization was performed by archive.org.

## Notations on the hardcopy document read, in part:

##       473423A YUL SYSTEM FOR BLK2: REVISION 12 of PROGRAM AURORA BY DAP GROUP
##       NOV 10, 1966

##       [Note that this is the date the hardcopy was made, not the
##       date of the program revision or the assembly.]

## The scan images (with suitable reduction in storage size and consequent
## reduction in image quality) are available online at
##       https://www.ibiblio.org/apollo.
## The original high-quality digital images are available at archive.org:
##       https://archive.org/details/aurora00dapg

## Page 148
# 	THE FOLLOWING ROUTINES ARE PROVIDED TO MAINTAIN THE PHASE TABLE. TWO ROUTINES ARE AVAILABLE:

#		TC	PHASCHNG	SLOWER BUT LESS STORAGE.
#		OCT	PPPGG		CHANGE RESTART GROUP GG TO PHASE PPP
#					(PPP IS A SIGNED 8 BIT NUMBER).

#		CA	PPPPP		NEW PHASE ARRIVES IN A.
#		TC	NEWPHASE
#		OCT	000GG		UPDATES GG.

#	IN ALL CASES THE OLD PHASE RETURNS IN A. IF THE OLD PHASE WAS NEGATIVE, CALL A ROUTINE USING THE
# CORRESPONDING TERMCADR.

		SETLOC	ENDWAITF

PHASCHNG	INHINT
		INDEX	Q
		CAF	0		# GET PARAMETER WORD.
		TS	RUPTREG4
		MASK	LOW5		# GROUP NUMBER 0 - 37.
		DOUBLE
		XCH	RUPTREG4
		EXTEND
		MP	BIT9		# SIGNED NEW PHASE.
		TCF	PHASCH2

NEWPHASE	INHINT			# NEW PHASE ARRIVES IN A.
		TS	RUPTREG4
		INDEX	Q
		CAF	0		# GROUP NUMBER.
		DOUBLE
		XCH	RUPTREG4

PHASCH2		TS	L		# DIRECT VERSION.
		COM			# COMPLEMENTED VERSION IMMEDIATELY PRE-
		INDEX	RUPTREG4	# CEDES THE DIRECT ONE.
		DXCH	-PHASE0		# COPIES DISAGREE FOR MINIMUM TIME.
		EXTEND
		BZMF	PHASEXIT	# IF NO DERAIL.

## Page 149
		TS	RUPTREG1	# IF NEGATIVE, SAVE ABSOLUTE VALUE OF
		EXTEND			# OLD PHASE AND RETURN Q.
		QXCH	RUPTREG2
		CA	RUPTREG4	# GET BACK GROUP NUMBER.
		EXTEND
		MP	HALF
		INDEX	A		# SELECT TERMCADR.
		CAF	TERMCADR
		TC	ISWCALL

		DXCH	RUPTREG1	# -OLD PHASE BITS TO A - RETURN -1 TO L.
		LXCH	Q

PHASEXIT	COM			# RETURN OLD PHASE IN A.
		RELINT
		INDEX	Q
		TC	1

TERMCADR	CADR	10000		# FILLED IN AS NEEDED.
		CADR	10000
		CADR	10000
		CADR	10000
		CADR	10000
		CADR	10000

## Page 150
#	SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.

NEWMODEX	INDEX	Q		# UPDATE MODREG.
		CAF	0
		INCR	Q
		XCH	MODREG
		COM			# IF NO CHANGE IN MODE, RETURN IMMEDIATELY
		AD	MODREG
		EXTEND
		BZF	TCQ

		CAF	+2		# CALL PINBALL SUBROUTINE.
		TCF	SWCALL		# WITH Q SET TO CALLERS RETURN.

		CADR	DSPMM

# 	RETURN TO CALLER +3 IF MODE = THAT AT CALLER +1. OTHERWISE RETURN TO CALLER +2.

CHECKMM		INDEX	Q
		CS	0
		AD	MODREG
		EXTEND
		BZF	+3

		INDEX	Q
		TC	1		# NO MATCH.

		INDEX	Q
TCQ		TC	2		# (ALWAYS AVAILABLE TO BZF & BZMF)

ENDPHMNF	EQUALS
back to top