8-bit computing: Difference between revisions

Content deleted Content added
Notable 8-bit CPUs: copyediting
Removed a paragraph from the lead. This paragraph appears verbatim on the 16-bit computing article.
 
(26 intermediate revisions by 15 users not shown)
Line 3:
{{multiple issues|
{{more citations needed|date=October 2009}}
{{primary sources|date=August 2012}}
{{Original research|date=May 2019}}
}}
{{Computer architecture bit widths}}
{{Use dmy dates|date=May 2025}}
In [[computer architecture]], '''8-bit''' [[Integerinteger (computer science)|integer]]s or other [[Datadata (computing)|data]] units are those that are 8 [[bit]]s wide (1 [[octet (computing)|octet]]). Also, 8-bit [[central processing unit]] (CPU) and [[arithmetic logic unit]] (ALU) architectures are those that are based on [[processor register|register]]s or [[Busbus (computing)|data bus]]es of that size. [[Memory address]]es (and thus [[address bus]]es) for 8-bit CPUs are generally larger than 8-bit, usually 16-bit. 8-bit [[microcomputer]]s are microcomputers that use 8-bit [[microprocessor]]s.
 
The term '8-bit' is also applied to the [[character encoding|character set]]s that could be used on computers with 8-bit bytes, the best known being various forms of [[extended ASCII]], including the [[ISO/IEC 8859]] series of national character sets{{snd}} especially [[ISO/IEC 8859-1|Latin 1]] for English and Western European languages.
 
The [[IBM System/360]] introduced byte-addressable memory with 8-bit bytes, as opposed to bit-addressable or decimal digit-addressable or word-addressable memory, although its [[general-purpose registers]] were 32 bits wide, and addresses were contained in the lower 24 bits of those addresses. Different models of System/360 had different internal data path widths; the [[IBM System/360 Model 30]] (1965) implemented the 32-bit System/360 architecture, but had an 8-bit native path width, and performed 32-bit arithmetic 8 bits at a time.<ref>{{Cite journal|last1=Amdahl|first1=G. M.|last2=Blaauw|first2=G. A.|author2-link=Gerrit Blaauw|last3=Brooks|first3=F. P.|author3-link=Fred Brooks|year=1964|title=Architecture of the IBM System/360|url=https://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/IBM360-Amdahl_april64.pdf|url-status=live|journal=[[IBM Journal of Research and Development]]|volume=8|issue=2|pages=87–101|doi=10.1147/rd.82.0087|archive-url=https://web.archive.org/web/20170810085620/https://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/IBM360-Amdahl_april64.pdf|archive-date=2017-08-10 August 2017|author1-link=Gene Amdahl}}</ref>
 
The first widely adopted 8-bit [[microprocessor]] was the [[Intel 8080]], being used in many hobbyist computers of the late 1970s and early 1980s, often running the [[CP/M]] [[operating system]]; it had 8-bit data words and 16-bit addresses. The [[Zilog Z80]] (compatible with the 8080) and the [[Motorola 6800]] were also used in similar computers. The Z80 and the [[MOS Technology 6502]] 8-bit CPUs were widely used in [[home computer]]s and [[Second generation of video game consoles|second-]] and [[Third generation of video game consoles|third-generation game consoles]] of the 1970s and 1980s. Many 8-bit CPUs or [[microcontroller]]s are the basis of today's ubiquitous [[embedded systemssystem]]s.
 
== Historical context ==
8-bit microprocessors were the first widely used microprocessors in the computing industry, marking a major shift from mainframes and minicomputers to smaller, more affordable systems. The introduction of 8-bit processors in the 1970s enabled the production of personal computers, leading to the popularization of computing and setting the foundation for the modern computing landscape.
 
The 1976 [[Zilog Z80]], one of the most popular 8-bit CPUs (though with [[4-bit computing|4-bit]] ALU, at least in the original), was discontinued in 2024 (its product line Z84C00), with Last Time Buy (LTB) orders by June 14, June 2024.<ref>{{Cite web |date=15 April 2024 |title=X80 Product line: Z84C00 |url=https://www.mouser.com/PCN/Littelfuse_PCN_Z84C00.pdf}}</ref>
 
== Details ==
[[File:MOS 6502AD 4585 top.jpg|thumb|MOS Technology 6502, a popular 8-bit microprocessor introduced in 1975. 1985 date code.]]
<!-- ==Range for storing integers== -->
An 8-bit register can store 2<sup>8</sup> different values. The [[range (computer programming)|range]] of [[integer]] values that can be stored in 8 bits depends on the [[Integer (computer science)#Value and representation|integer representation]] used. With the two most common representations, the range is 0 through 255 (2<sup>8</sup> − 1) for representation as an ([[signedness|unsigned]]) [[binary number]], and −128 (−1 × 2<sup>7</sup>) through 127 (2<sup>7</sup> − 1) for representation as [[two's complement]].
 
An 8-bit register can store 2<sup>8</sup> different values. The [[range (computer programming)|range]] of [[integer]] values that can be stored in 8 bits depends on the [[Integer (computer science)#Value and representation|integer representation]] used. With the two most common representations, the range is 0 through 255 {{nowrap|(2<sup>8</sup> − 1)}} for representation as an ([[signedness|unsigned]]) [[binary number]], and −128 {{nowrap|(−1 × 2<sup>7</sup>)}} through 127 {{nowrap|(2<sup>7</sup> − 1)}} for representation as [[two's complement]].
8-bit CPUs use an [[octet (computing)|8-bit]] [[Bus (computing)|data bus]] and can therefore access 8 bits of data in a single [[Instruction (computer science)|machine instruction]]. The address bus is typically a double octet ([[16-bit computing|16 bit]]s) wide, due to practical and economical considerations. This implies a direct [[address space]] of 64&nbsp;[[kilobyte|KB]] (65,536 bytes) on most 8-bit processors.
 
8-bit CPUs use an [[octet (computing)|8-bit]] [[Busbus (computing)|data bus]] and can therefore access 8 bits of data in a single [[Instruction (computer science)|machine instruction]]. The address bus is typically a double octet ([[16-bit computing|16 bit]]s) wide, due to practical and economical considerations. This implies a direct [[address space]] of 64&nbsp;[[kilobyte|KB]] (65,536 bytes) on most 8-bit processors.
Most [[home computer]]s from the 8-bit era fully exploited the address space, such as the [[BBC Micro]] (Model B) with 32&nbsp;KB of [[random-access memory|RAM]] plus 32&nbsp;KB of [[read-only memory|ROM]]. Others like the very popular [[Commodore 64]] had full 64&nbsp;KB RAM, plus 20&nbsp;KB ROM, meaning with 16-bit addressing you could not use all of the RAM by default (e.g. from the included [[BASIC]] language interpreter in ROM);<ref>{{Cite web|title=Bank Switching - C64-Wiki|url=https://www.c64-wiki.com/wiki/Bank_Switching|access-date=2021-04-08|website=www.c64-wiki.com}}</ref> without exploiting [[bank switching]], which allows for breaking the 64&nbsp;KB (RAM) limit in some systems. Other computers would have as low as 1&nbsp;KB (plus 4&nbsp;KB ROM), such as the Sinclair [[ZX80]] (while the later very popular [[ZX Spectrum]] had more memory), or even only 128 bytes of RAM (plus [[storage (memory)|storage]] from a [[ROM cartridge]]), as in an early game console [[Atari 2600]] and thus 8-bit addressing would have been enough for the RAM, if it would not have needed to cover ROM too). The [[Commodore 128]], and other 8-bit systems, meaning still with 16-bit addressing, could use more than 64&nbsp;KB, i.e. 128&nbsp;KB RAM, also the [[BBC Master]] with it expandable to 512&nbsp;KB of RAM.
 
Most [[home computer]]s from the 8-bit era fully exploited the address space, such as the [[BBC Micro]] (Model B) with 32&nbsp;KB of [[random-access memory|RAM]] plus 32&nbsp;KB of [[read-only memory|ROM]]. Others like the very popular [[Commodore 64]] had full 64&nbsp;KB RAM, plus 20&nbsp;KB ROM, meaning with 16-bit addressing you could not use all of the RAM could be used by default (e.g. from the included [[BASIC]] language interpreter in ROM);<ref>{{Cite web|title=Bank Switching - C64-Wiki|url=https://www.c64-wiki.com/wiki/Bank_Switching|access-date=8 April 2021-04-08|website=www.c64-wiki.com}}</ref> without exploiting [[bank switching]], which allows for breaking the 64&nbsp;KB (RAM) limit in some systems. Other computers would have as low as 1&nbsp;KB (plus 4&nbsp;KB ROM), such as the Sinclair [[ZX80]] (while the later very popular [[ZX Spectrum]] had more memory), or even only 128 bytes of RAM (plus [[storage (memory)|storage]] from a [[ROM cartridge]]), as in an early game console [[Atari 2600]] and thus 8-bit addressing would have been enough for the RAM, if it would not have needed to cover ROM too). The [[Commodore 128]], and other 8-bit systems, meaning still with 16-bit addressing, could use more than 64&nbsp;KB, i.e. 128&nbsp;KB RAM, also the [[BBC Master]] with it expandable to 512&nbsp;KB of RAM.
{{Further|Zero page}}
 
While in general 8-bit CPUs have 16-bit addressing, in some architectures youboth haveare bothavailable, such as in the [[MOS Technology]] [[MOS Technology 6502|6502]] CPU, where the [[zero page]] is used extensively, saving one byte in the instructions accessing that page, and also having 16-bit addressing instructions that take 2 bytes for the address plus 1 for the opcode. Commonly [[index register]]s are 8-bit (while other "8-bit" CPUs, such as [[Motorola 6800]] had 16-bit index registers), such as the 6502 CPU, and then the size of the arrays addressed using [[indexed addressing]] instructions are at most 256 bytes, without needing longer code, i.e. meaning 8-bit addressing to each individual array.
 
Some [[index register]]s, such as the two in the 6502, are 8-bit. This limits the size of the arrays addressed using [[indexed addressing]] instructions to objects of up to 256 bytes without requiring more complicated code. Other 8-bit CPUs, such as the [[Motorola 6800]] and [[Intel 8080]], have 16-bit index registers.
==Notable 8-bit CPUs==
 
== Notable 8-bit CPUs ==
{{Main|Microprocessor chronology}}
 
Line 39 ⟶ 40:
The [[MOS Technology 6502]], and variants of it, were used in personal computers, such as the [[Apple I]], [[Apple II]], [[Atari 8-bit computers]], [[BBC Micro]], [[Commodore PET|PET]], [[VIC-20]], and in [[home video game console]]s such as the [[Atari 2600]] and the [[Nintendo Entertainment System]].
 
{| class="wikitable center-all sortable"
|+ style="font-size: 105%;" | Early or popular 8-bit processors (incomplete)
! Manufacturer !! Processor !! Year !! Comment
! Processor
! Year
! Comment
|-
| Intel || [[Intel 8008|8008]] || 1972 || [[Datapoint 2200]] compatible
|-
|[[Signetics]] Intel || [[SigneticsIntel 26508080|26508080]] ||1973 1974 || 8008 source compatible
|-
|Intel [[Motorola]] || [[IntelMotorola 80806800|80806800]] || 1974 || 8008 source compatible
|-
| [[MotorolaSignetics]] || [[MotorolaSignetics 68002650|68002650]] ||1974 1975 ||
|-
| [[Fairchild Semiconductor|Fairchild]] || [[Fairchild F8|F8]] || 1975 ||
|-
|[[MOS Technology|MOS]]||[[MOS Technology 6502|6502]] || 1975 || Similar to 6800, but incompatible
|-
| [[MicrochipMOS Technology|MicrochipMOS]] || [[PICMOS microcontrollerTechnology 6502|PIC6502]] || 1975 ||[[Harvard architecture]]Similar to 6800, but microcontrollerincompatible
|-
| [[Microchip Technology|Microchip]] || [[PIC microcontroller|PIC]] || 1975 ||[[Harvard architecture]] microcontroller
|[[Electronic Arrays]] || [[EA9002]] || 1976 || 8-bit data, 12-bit addressing
|-
| [[RCAElectronic Arrays]] || [[RCA 1802|1802EA9002]] || 1976 || 8-bit data, 12-bit addressing
|-
| [[ZilogRCA]] || [[ZilogRCA Z801802|Z801802]] || 1976 || 8080 binary compatible
|-
|Intel [[Zilog]] || [[IntelZilog 8085Z80|8085Z80]] || 19771976 || 8080 binary compatible
|-
|Zilog Intel || [[ZilogIntel Z88085|Z88085]] ||1978 1976 ||Harvard architecture8080 binary microcontrollercompatible
|-
|Motorola Zilog || [[MotorolaZilog 6809Z8|6809Z8]] || 1978 ||Harvard 6800 sourcearchitecture compatiblemicrocontroller
|-
|Intel Motorola || [[IntelMotorola 80516809|80516809]] ||1980 1978 || Harvard6800 architecturesource microcontrollercompatible
|-
| Intel || [[Intel 8051|8051]] || 1980 || Harvard architecture microcontroller
|Motorola|| [[Motorola 68008|68008]] || 1982 || 32-bit registers, 20-bit or 22-bit addressing, three 16-bit ALUs, 8-bit data bus; [[Motorola 68000]] software-compatible, 6809 hardware-compatible
|-
| MOS || [[MOS Technology 6510|6510]] || 1982 || Enhanced 6502 custom-made for use in the [[Commodore 64]]
|-
| [[Ricoh]] || [[Ricoh 2A03|2A03]] || 1982 || 6502 clone minus BCD instructions for the [[Nintendo Entertainment System]]
|-
| Zilog || [[Zilog Z180|Z180]] || 1985 || Z80 binary compatible
|-
| Motorola || [[Freescale 68HC11|68HC11]] || 1985 ||
|-
| [[Hudson Soft|Hudson]] || [[Hudson Soft HuC6280|HuC6280]] || 1987 || 65C02 binary compatible
|-
| [[Atmel]] || [[Atmel AVR|AVR]] || 1996 ||
|-
| Zilog || [[Zilog eZ80|EZ80eZ80]] ||1999 1999 ||Z80 binary compatible
|-
| [[Infineon]] || [[XC800 family|XC800]] || 2005 ||
|-
| [[Freescale Semiconductor|Freescale]] || [[Freescale 68HC08|68HC08]] || {{dunno}} ||
|-
| Motorola || [[Motorola 6800 family|6803]] || {{dunno}} ||
|-
| [[NEC]] || [[NEC 78K0|78K0]]<ref>{{Cite web|url=http://www.am.necel.com/micro/product/all_8_general.html/|title=NEC 78K0|publisher=[[NEC]]|archive-url=https://web.archive.org/web/20081028210428/http://www.am.necel.com/micro/product/all_8_general.html/|archive-date=28 October 2008-10-28|url-status=dead|access-date=2009-02-10 February 2009}}</ref> || {{dunno}} ||
|}
 
== Use for training, prototyping, and general hardware education ==
8-bit processors continue to be designed today for general education about computer hardware, as well as for hobbyists' interests. One such CPU was designed and implemented using [[7400-series integrated circuits]] on a [[breadboard]].<ref>{{cite web|first=Daniel|last=Oberhaus|title= This Guy Designed and Built an 8-bit CPU from Scratch|website=[[Motherboard (website)|Motherboard]]|date=9 February 9, 2019|url=https://www.vice.com/en/article/a34ege/diy-8-bit-cpu/|access-date=November 4, November 2021}}</ref><ref>{{cite AV media|url=https://www.youtube.com/watch?v=g_ZaioqF1B0|title=Homebuilt 8-bit CPU + Computer with graphics and sound made from scratch using 74HC Logic|first=Paulo|last=Constantino}}</ref> Designing 8-bit CPU'sCPUs and their respective assemblers is a common training exercise for engineering students, engineers, and hobbyists. [[FPGA]]'s are used for this purpose.
 
== See also ==
* [[Kenbak-1]]
 
== References ==
{{Reflist}}