This is an old revision of this page, as edited by JidGom (talk | contribs) at 14:05, 10 September 2004 (disambig). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 14:05, 10 September 2004 by JidGom (talk | contribs) (disambig)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Bank switching (also known as paging, but unrelated to the ordinary meaning of this term in computing) was a technique common in 8-bit microcomputer systems, to increase the amount of addressable RAM and ROM without extending the address bus.
Since 8-bit CPUs such as the Zilog Z80 and the MOS Technology 6502 series, with their 16-bit address registers, could only address a maximum of 64 KB of memory, 8-bit systems containing more than 64 KB of memory addressed the memory in 64 KB banks (or "pages") — in other words, although the system may have contained 128 KB or more, only 64 KB was ever addressed directly at one time. This scheme offered access to more memory at the cost of more complicated programming and somewhat poorer performance.
While bank switching was less efficient than switching to a processor with a wider address bus would have been, it was an inexpensive way to increase the shelf life of several computer lines of the 1980s and it provided a high degree of backward compatibility with earlier systems: for example, the Apple //e, //c, and Apple /// could run software written for the Apple II+, and the Commodore 128 could run all the software of its much more prevalent predecessor, the C64. Accessing the lower 64 KB part of memory was as simple as addressing the first (lowest) bank.
In 1988 the companies Lotus, Intel and Microsoft agreed on a specification called Expanded Memory System (EMS, also stated as LIM-EMS) for use in IBM PC compatible computers running MS-DOS. It was a form of bank switching technique to access the High Memory Area above the 1 MB limit that the real mode for x86-processors made available. Some computer games made use of this, and the feature is nowadays emulated by later Microsoft Windows operating systems to provide backwards compability.
Bank switching was also utilized in some video game consoles. The Atari 2600, for instance, could only address 4 KB of ROM, so later 2600 game cartridges contained their own bank switching hardware in order to permit the use of more ROM and thus allow for more sophisticated games (via more program code and, equally important, larger amounts of gameworld data such as graphics and sound). The Nintendo NES contained a modified 6502 but its cartridges sometimes contained a megabyte or more of ROM, addressed via bank switching.