The following information comes mainly from pages 70-72 of the Apple
II Reference Manual, 1979 edition.
The Apple II had three rows of eight sockets for DRAM: rows C through
E from front to back. Each row could accept either 4116 16Kbit×1 or
4104 4Kbit×1 DRAM chips.
Each row also had next to it a DIP socket for a 14-pin "memory
configuration block" that contained three jumper wires that would set
the DRAM chip sizes and locations of the rows in that Apple II's
memory map. All three blocks must have the same pairs of pins
connected or Weird Things will happen. (What exactly those Weird
Things are would be the topic of another question.)
The memory configuration blocks were normally supplied by Apple (when
you bought the system or when you bought more RAM from Apple), and
there were nine configurations for which Apple supplied configuration
blocks, each of which gave contiguous memory from address $0000
up
to the top of RAM:
Total Row C Row D Row E
48K 16K 16K 16K
36K 16K 16K 4K
32K 16K 16K -
24K 16K 4K 4K
20K 16K 4K -
16K 16K - -
12K 4K 4K 4K
8K 4K 4K -
4K 4K - -
However, Apple also gives the details of the configuration blocks,
which allowed you to create your own non-contiguous mappings if you
wished. Typically this was used to allow you to map memory into the
high-resolution screen buffer memory areas if you didn't have enough
memory for a contiguous map to include those, as described at
apple2history.org:
The first 4K of memory always had to have RAM present, since it was
used by the 6502 processor, the ROM routines, and the text screen
display. If, for example, you only had two other [rows of] 4K RAM chips to
install and you wanted to display hi-res graphics, you could strap
one [row of] chip[s] to the lower half of hi-res memory from $2000-$2FFF, and
the other to the upper half of hi-res memory from $3000-$3FFF.
The configuration blocks had three pins, 14, 13 and 12, for rows C, D
and E, and each of these should be connected to another pin indicating
the size and starting memory address to which the row would be mapped:
Pin Size Start Pin Size Start
1 4K $0000 6 4K $5000
2 4K $1000 7 4K $8000
3 4K $2000 8 16K $0000
4 4K $3000 9 16K $4000
5 4K $4000 10 16K $8000
The manual mentions that:
If a row contains eight chips of the 16K variety, then you should
connect a jumper wire from the pin corresponding to that row to a
pin corresponding to a 16K range of memory. Similarly, if a row
contains eight 4K chips, you should connect a jumper wire from the
pin for that row to a pin corresponding to a 4K range of memory. You
should never put 4K chips in a row strapped for 16K, or vice
versa. It is also not advisable to leave a row unstrapped, or to
strap two rows into the same range of memory.
The manual goes on to give the example of mapping 4K of RAM starting
at page 0 and two more 4K blocks covering the high-res screen buffer
at location $2000
, as described in the apple2history.org quote
above.
The manual also mentions that Revision 0 boards have a bug mirroring
the 8K range at $4000
at $6000
, regardless of whether the latter
contains memory or not. This was fixed in the revision 1 boards.