Intel 8080

**Intel 8080** – Intel 8 bitų mikroprocesorius. Pasirodė 1974 m. ir neretai laikomas pirmuoju bendrosios paskirties mikroprocesoriumi. Buvo programiškai suderinamas su anksčiau gamintu ir nepasiteisinusiu Intel 8008, kuris savo darbui palaikyti reikalavo pernelyg daug papildomų mikroschemų. Intel 8080 turėjo apie 6000 tranzistorių.

Tokius pat komandų sistemą bei kontaktų išdėstymą turinčius analogus gamino AMD, Mitsubishi, National Semiconductor, NEC, Siemens, ir Texas Instruments. Tarybų Sąjungoje gaminami analogai buvo vadinami KP580ИK80 (vėliau КР580ВМ80А).

## Aprašymas

### Registrai
Procesorius turėjo septynis 8 bitų registrus, iš kurių šeši galėjo būti kombinuojami į 16 bitų poras (BC, DE ir HL). Jis taip pat turėjo 8 bitų akumuliatorių, 16 bitų steko rodyklę į atmintį (atsisakant 8008 buvusios vidinės steko atminties) ir 16 bitų programos skaitliuką. Su 16 bitų buvo galima pasiekti 65536 atminties ląsteles (64 kilobaitus). Procesoriaus pasirodymo metu tiek adresuojamos atminties apimties pakako.

### Komandos
Dauguma 8 bitų operacijų buvo galimos tarp akumuliatoriaus ir arba vieno iš kitų registrų, arba atminties ląstelės, indeksuojamos registrų pora HL. Duomenų persiuntimas buvo galimas tarp bet kurių dviejų registrų arba registro ir minėtosios atminties ląstelės.

Visos procesoriaus komandos buvo koduojamos vienu baitu, bet kai kuriose jų po šio baito sekdavo vienas ar du baitai duomenų, dviejų baitų adresas arba vieno baito porto numeris. Visos duomenų persiuntimo tarp registrų komandos buvo koduojamos išimtinai vienu baitu, tuo užimdamos apie ketvirtį visos komandų sistemos. Procesorius turėjo 8 komandas paprogramei fiksuotu adresu iškviesti (RST). Jos buvo naudojamos pertraukimų aptarnavimui, kai kada – sisteminės bibliotekos paprogramių kvietimui.

Sudėtingiausia (ir ilgiausiai vykdoma) komanda buvo XTHL. Ji sukeisdavo vietomis registrų poros HL turinį su steko rodyklės adresuojamos ir jai sekančios atminties ląstelių turiniu. Komanda buvo skirta asemblerio programuotojų beveik nenaudotam paprogramės parametrų perdavimui per steką.

### Šešiolikos bitų operacijos
Nors Intel 8080 paprastai minimas kaip aštuonių bitų procesorius, kai kurias operacijas buvo galima atlikti ir su 16 bitų skaičiais. Pavyzdžiui, buvo galima vienetu padidinti arba sumažinti registrų poros reikšmę (INX, DXC), sukeisti vietomis DE ir HL porų reikšmes (XCHG), sudėti 16 bitų skaičius (DAD) ir atlikti 16 bitų aritmetinį postūmį į kairę (DAD H).

### Vėliavėlių registras
Vėliavėlių registras šiame procesoriuje buvo pasiekiamas ne tik kaip paskiros vėliavėlių reikšmės, bet ir kaip aštuonių bitų žodis (komandos PUSH PSW ir POP PSW). Jis turėjo tokias vėliavėles:
* C (perpildymas) – devinto (vyriausio) bito reikšmė sudedant aštuonių bitų skaičius. Naudojamas ilgesniems nei aštuoni bitai skaičiams sudėti.
* Z (nulis) – praneša jog gautas rezultatas lygus nuliui.
* P (lyginumas) – signalizuodavo jog vienetų skaičius gautame rezultate nelyginis. Vėliavėlė buvo naudojama septynių bitų duomenims perduoti, aštuntą parenkant taip, kad vienetų skaičius visada būtų lyginis arba nelyginis. Tuomet tikrinant lyginumą galima aptikti duomenų perdavimo klaidas (jei vietoje nulio buvo perduotas vienetas ir atvirkščiai).
* AC (vidinis perpildymas) praneša, jog sudedant pirmuosius keturis vieno ir kito operando bitus buvo gautas penkiaženklis dvejetainis skaičius. Šis bitas buvo reikalingas supakuotiems dešimtainiams skaičiams sudėti (komanda DAA koreguodavo sudėties rezultatą). Supakuotuose skaičiuose pirmi keturi bitai saugodavo pirmą, o likę keturi – antrą dviženklio skaičiaus skaitmenį.
* S (ženklas) – praneša jog atliekant operaciją vyriausiojo bito reikšmė tapo lygi vienetui (gautas neigiamas dvejetainis skaičius).

### Įvedimo ir išvedimo schema

#### Portų erdvė
8080 turėjo atskirą įvedimo/išvedimo įrenginių (portų) erdvę ir galėjo aptarnauti 256 įvedimo ir 256 išvedimo 8 bitų portus, tačiau skaitymo bei rašymo signalai atminčiai ir portams buvo bendri. Nustatyti, į ką kreipiasi procesorius, buvo galima tik papildomų mikroschemų pagalba. Todėl paprastesniuose kompiuteriuose portai buvo pasiekiami tiesiog kaip atminties ląstelės. Specialios portų skaitymo bei rašymo komandos (IN ir OUT) buvo arba nenaudojamos, arba naudojamos žinant jog procesorius dubliuoja aštuonių bitų porto adresą ir į aukštesnį atminties adreso baitą (pavyzdžiui, komanda IN 0E, nedekoduojant kreipimosi adresato, buvo analogiška skaitymo iš ląstelės 0E0E komandai LDA 0E0E).

#### Steko erdvė
Vienas iš procesoriaus būsenos bitų (žr. žemiau) rodydavo, jog procesorius kreipiasi į steko atminties ląstelę. Naudojant šį bitą, buvo galima sukurti iki 64 kilobaitų dydžio su pagrindine atmintimi nesusijusį (išorinį) steką. Tačiau tokia galimybė buvo naudojama itin retai. Ignoruojant šį bitą, stekas tapdavo pagrindinės atminties dalimi.

#### Procesoriaus būsenos žodis
Viename komandos vykdymo etapų duomenų magistralėje trumpam pasirodydavo procesoriaus būsenos žodis, aprašantis procesoriaus veiklą bei artimiausius ketinimus. Atskiri šio žodžio bitai informuodavo, į ką (atmintį, įvedimo – išvedimo portą ar steką) kreipiasi procesorius. Bitų reikšmės buvo reikalingos aptarnaujant pertraukimus ir tiesioginį atminties valdymą.

#### Mikroschemos išvadai
Adreso magistralė turėjo atskirus 16 kontaktų. Duomenų magistralė taip pat turėjo savus 8 kontaktus. Panaudojant dar du (skaitymo ir rašymo signalų) išvadus, paprasčiausias kompiuteris galėjo būti surinktas su labai mažai papildomų detalių. Papildomos mikroschemos buvo reikalingos tik atskirai įvedimo/išvedimo erdvei, pertraukimams ir tiesioginiam atminties valdymui. Tačiau procesoriaus apkraunamumas buvo ribotas (ne daugiau vienas kitos tipinės tų laikų mikroschemos, tokios kaip 7400, įėjimas), todėl net ir paprasti kompiuteriai dažnai turėdavo magistralės stiprintuvus.

Procesoriui buvo reikalingi trys maitinimo šaltiniai: -5 (tik 0,01mA), +5 (60mA) ir +12 (40mA) bei du nepersiklojantys 2 MHz sinchronizacijos signalai. Jis vartojo tik apie 1,3 vato galingumą – dabartiniai greitaeigiai procesoriai neretai vartoja dešimtis ar net šimtus vatų. Mėgėjai kai kada mėgindavo jį maitinti ir tik vienu maitinimo šaltiniu (+12 išvadą sujungę su +5 išvadu, o -5 išvadą įžeminę). Kalbama, jog neretai (ypač КР580ВМ80А) procesorius dirbdavo.

Visų mikroschemos išvadų paskirtis procesorių lydinčioje gamyklinėje dokumentacijoje buvo aprašyta taip:

### Taikymas ir vėlesni modeliai

Intel 8080 vėliau pakeitė kurį laiką itin plačiai naudotas Zilog firmos Z80. Z80 turėjo gana panašią (bei suderinamą) komandų sistemą, tačiau dėl teisinių priežasčių jam buvo sukurta sintaksiškai visiškai kita asemblerio kalba. Intel sukūrė dar mažiau papildomos logikos ir tik vieno (+5 V) maitinimo šaltinio reikalaujantį 8085, kuris taip pat turėjo ir geriau išvystytą pertraukimų sistemą (trys nauji pertraukimo įėjimai galėjo būti naudojami be papildomų mikroschemų). 

Paskui atėjo laikas Intel 8086.

## Šaltiniai