Question ACG Memory Addressing

msligo

New member
Joined
Dec 27, 2018
Messages
29
Reaction score
0
Points
0
I am currently studying "The Apollo Guidance Computer: Architecture and Operation" by Frank O'Brien, and I'm having some trouble with the section on memory addressing.

On page 61, under the heading "Fixed storage banking," it says the following:

"One value has already been mentioned: a binary 00 in bits 12 and 11 indicates that an erasable storage location is referenced. When the binary value 10 or 11 is in these two bits, the entire 12 bit address field is used to reference the "unswitched-fixed" storage, the region of fixed storage where the FBANK register is not used. Only when a binary 01 exists in bits 12 and 11 are the contents of the FBANK register appended to the lower ten bits of the address."

So in this section, it looks like:

00: Erasable storage

01: Switched-Fixed storage using FBANK

10: Unswitched-fixed storage

11: Unswitched-fixed storage


However, a couple of sentences later, it says:

"Where bits 12 and 11 are binary 10, indicating that the FBANK register is necessary, and the contents of FBANK are 00 or 01, the address overlaps with the unswitched-fixed storage area."

Here, it appears that:

00: Erasable storage (or perhaps unswitched-fixed?)

01: Unswitched-fixed storage

10: Switched-Fixed storage using FBANK

11: Not mentioned (presumably Unswitched-fixed)


Figure 18 has a different allocation to both of these, it says that:

00: Erasable storage

01: Unswitched-Fixed storage

10: Unswitched-Fixed storage

11: Switched-Fixed storage using FBANK


Then in Figure 19, bits 12 and 11 are 00, yet it's labelled as "Switched-Fixed Storage." Also in this figure, the 10th bit has changed from 0 to 1 when it was carried across to the Physical Address.


These various allocations seem inconsistent to me. Can someone help me understand which values of bits 11 and 12 will access which memory banks?

Many thanks,
Michael
 

thewonderidiot

Active member
Joined
Sep 26, 2017
Messages
14
Reaction score
28
Points
28
Hi! Unfortunately, the hardware sections of "Apollo Guidance Computer: Architecture and Operation" are somewhat lacking, and filled with little errors and inaccuracies like these. In general I wouldn't recommend studying it too closely, or trusting what it says, if you're really trying to learn how the thing worked. The later sections on software design and operation are much better.

The best original source for this sort of thing is the "Apollo Guidance Program Symbolic Listing Information for Block 2". We've jokingly referred to it as the "AGC Bible", because it goes over just about everything you'd want to know about using it; instructions, addressing, assembler directives, operating system routines, etc. Plus we've found very few errors in it. Section IIB, starting on pdf page 13, covers addressing; you might find its description more clear.

To answer your question, though, the first list you gave is correct. For {S12, S11}:
00: Erasable storage
01: Switched-Fixed storage using FBANK
10: Unswitched-fixed storage
11: Unswitched-fixed storage

This is reflected in the addresses used in assembly. A word with only bit 11 set is 02000, and a word with only bit 12 set is 04000. Keeping that in mind:

0000-1400: Unswitched Erasable (neither set)
1400-1777: Switched Erasable (neither set)
2000-3777: Switched Fixed (bit 11 set)
4000-7777: Unswitched Fixed (bit 12 set, bit 11 set for 6000-7777)

The banking scheme becomes much more intuitive when you think about how many bits it takes to represent a bank. I only just recently realized how cleanly the three superbank bits work; but there aren't any original diagrams for that and it'll take me a bit to draw them up. I can follow up with them, if you're interested.
 

msligo

New member
Joined
Dec 27, 2018
Messages
29
Reaction score
0
Points
0
Thank you for the clarification thewonderidiot! That's a shame about the book, so far I have been finding it quite accessible. I'll certainly take a look at the file you linked, although it might be a bit above my level, since my background is not computer science.
 
Top