mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-25 16:31:42 +00:00
Minor correction on C0XX; it's not just RAM that doesn't appear. And switched to a more reader-friendly way of specifying ranges.
parent
973f11627d
commit
5067554a9e
@ -1,53 +1,53 @@
|
|||||||
Apple provides multiple overlapping paging mechanisms which in total divide an Apple IIe's address space up into thirteen distinct segments.
|
Apple provides multiple overlapping paging mechanisms which in total divide an Apple IIe's address space up into thirteen distinct segments.
|
||||||
|
|
||||||
# Segments
|
# Segments
|
||||||
## [0000, 0200)
|
## 0000–01FF
|
||||||
Reading and writing: contains auxiliary RAM if `ALTZP` is set. Contains base RAM otherwise.
|
Reading and writing: contains auxiliary RAM if `ALTZP` is set. Contains base RAM otherwise.
|
||||||
|
|
||||||
## [0300, 0400); [0800, 2000); [4000, C000)
|
## 0300–03FF; 0800–1FFF; 4000–BFFF
|
||||||
Reading: contains base RAM if `RAMRD` is reset; contains auxiliary RAM otherwise.
|
Reading: contains base RAM if `RAMRD` is reset; contains auxiliary RAM otherwise.
|
||||||
|
|
||||||
Writing: as per reading, but regarding `RAMWRT` rather than `RAMRD`.
|
Writing: as per reading, but regarding `RAMWRT` rather than `RAMRD`.
|
||||||
|
|
||||||
## [0400, 0800)
|
## 0400–07FF
|
||||||
Reading: contains auxiliary RAM if either (i) both `80STORE` and `PAGE2` are set; or (ii) `80STORE` is reset and `RAMRD` is set. Contains base RAM otherwise.
|
Reading: contains auxiliary RAM if either (i) both `80STORE` and `PAGE2` are set; or (ii) `80STORE` is reset and `RAMRD` is set. Contains base RAM otherwise.
|
||||||
|
|
||||||
Writing: as per reading, but regarding `RAMWRT` rather than `RAMRD`.
|
Writing: as per reading, but regarding `RAMWRT` rather than `RAMRD`.
|
||||||
|
|
||||||
## [2000, 4000)
|
## 2000–3FFF
|
||||||
Reading: contains auxiliary RAM if either (i) `80STORE`, `PAGE2` and `HIRES` are set; or (ii) `80STORE` is reset and `RAMRD` is set. Contains base RAM otherwise.
|
Reading: contains auxiliary RAM if either (i) `80STORE`, `PAGE2` and `HIRES` are set; or (ii) `80STORE` is reset and `RAMRD` is set. Contains base RAM otherwise.
|
||||||
|
|
||||||
Writing: as per reading, but regarding `RAMWRT` rather than `RAMRD`.
|
Writing: as per reading, but regarding `RAMWRT` rather than `RAMRD`.
|
||||||
|
|
||||||
## [C000, C100)
|
## C000–C0FF
|
||||||
Never mapped to RAM. Always contains the internal and card IO.
|
Never mapped to RAM or ROM. Always contains internal and card IO.
|
||||||
|
|
||||||
## [C100, C300); [C400, C800)
|
## C100–C2FF; C400–C7FF
|
||||||
Contains ROM if `RDCXROM` is set. Otherwise is unmapped, allowing cards to respond.
|
Contains ROM if `RDCXROM` is set. Otherwise is unmapped, allowing cards to respond.
|
||||||
|
|
||||||
## [C300, C400)
|
## C300–C3FF
|
||||||
Contains ROM if `RDCXROM` is set or `SLOTC3ROM` is reset. Otherwise is unmapped, allowing card 3 to respond.
|
Contains ROM if `RDCXROM` is set or `SLOTC3ROM` is reset. Otherwise is unmapped, allowing card 3 to respond.
|
||||||
|
|
||||||
## [C800, D000)
|
## C800–CFFF
|
||||||
Contains ROM if `RDCXROM` or `RDC8ROM` is set. Otherwise is unmapped, allowing cards to respond.
|
Contains ROM if `RDCXROM` or `RDC8ROM` is set. Otherwise is unmapped, allowing cards to respond.
|
||||||
|
|
||||||
`RDC8ROM` is documented only implicitly; it is set by any access within the C3 page while `SLOTC3ROM` is reset. It is reset by an access to `CFFF`, or by system reset.
|
`RDC8ROM` is documented only implicitly; it is set by any access within the C3 page while `SLOTC3ROM` is reset. It is reset by an access to `CFFF`, or by system reset.
|
||||||
|
|
||||||
## [D000, E000)
|
## D000–DFFF
|
||||||
Reading: contains ROM if the language card `read` flip flop is *disabled*. Contains base RAM if the flip flop is enabled and `ALTZP` is reset. Otherwise contains auxiliary RAM.
|
Reading: contains ROM if the language card `read` flip flop is *disabled*. Contains base RAM if the flip flop is enabled and `ALTZP` is reset. Otherwise contains auxiliary RAM.
|
||||||
|
|
||||||
Writing: empty if the language card `write` flip flop is *enabled*. Contains base RAM if the flip flop is disabled and `ALTZP` is reset. Otherwise contains auxiliary RAM.
|
Writing: empty if the language card `write` flip flop is *enabled*. Contains base RAM if the flip flop is disabled and `ALTZP` is reset. Otherwise contains auxiliary RAM.
|
||||||
|
|
||||||
The portion of RAM accessed depends upon the language card's `BANK2` flip flop.
|
The portion of RAM accessed depends upon the language card's `BANK2` flip flop.
|
||||||
|
|
||||||
## [E000, FFFF]
|
## E000–FFFF
|
||||||
As per D000—E000 except that `BANK2` does not affect the portion of RAM exposed.
|
As per D000—E000 except that `BANK2` does not affect the portion of RAM exposed.
|
||||||
|
|
||||||
# Language Card Control
|
# Language Card Control
|
||||||
The language card contains four flip flops: `BANK2`, `read`, `write` and `prewrite`.
|
The language card contains four flip flops: `BANK2`, `read`, `write` and `prewrite`.
|
||||||
|
|
||||||
## BANK2
|
## BANK2
|
||||||
This selects which of two 4kb segments will appear in the region [D000, E000); it is set directly by address line 3 upon any access of the language-card switches.
|
This selects which of two 4kb segments will appear in the region D000–DFFF; it is set directly by address line 3 upon any access of the language-card switches.
|
||||||
|
|
||||||
## Read [enable]
|
## Read [enable]
|
||||||
This selects whether RAM or ROM will be read in the language card area. When it is **enabled**, RAM is read.
|
This selects whether RAM or ROM will be read in the language card area. When it is **enabled**, RAM is read.
|
||||||
@ -69,9 +69,9 @@ This switch affects the write flip flop; it is set to the value of address line
|
|||||||
# Older Apple IIs
|
# Older Apple IIs
|
||||||
Prior to the IIe there was no auxiliary RAM. A single block of RAM up to 48kb exists from 0000 upwards.
|
Prior to the IIe there was no auxiliary RAM. A single block of RAM up to 48kb exists from 0000 upwards.
|
||||||
|
|
||||||
Internal ROM is 12kb, so there is no mechanism for selecting between cards and ROM in the [C000, D000) region. That area is always used by cards only.
|
Internal ROM is 12kb, so there is no mechanism for selecting between cards and ROM in the C000–CFFF region. That area is always used by cards only.
|
||||||
|
|
||||||
A language card can be fitted which enables an extra 16kb of RAM in an 8kb segment and two 4kb banks in the [D000, FFFF] region, as described above.
|
A language card can be fitted which enables an extra 16kb of RAM in an 8kb segment and two 4kb banks in the D000–FFFF region, as described above.
|
||||||
|
|
||||||
## 80-column cards
|
## 80-column cards
|
||||||
Neither the II nor the II+ has any internal hardware to support 80-column output. 80-column expansion cards were normally installed in slot 3 and accessed via their card ROM. The IIe's ability to page internal ROM in [C300, C400) only allows it to provide software compatibility with those cards.
|
Neither the II nor the II+ has any internal hardware to support 80-column output. 80-column expansion cards were normally installed in slot 3 and accessed via their card ROM. The IIe's ability to page internal ROM in C300–C3FF only allows it to provide software compatibility with those cards.
|
Loading…
Reference in New Issue
Block a user