A processzornak 8 bites adatbusza, 16 bites címbusza és 10 regisztere van:
Összesen 29 utasítást ismer: /_userfiles_/ttlcpu/instr_set.pdf, amelyek nagyrészt hasonlítanak az i8085-öséihez.
Négy fő részből áll, amelyek az egyes kártyákat is jelentik fentről lefelé:
Az ALU a 8 bites összeadást, kivonást (ezeket átvitellel/kölcsönnel is), XOR, OR, AND, NOT és shift műveleteket ismeri (körkörös shift a carry kihagyásával). 3 flaget tartalmaz: C (átvitel), S (előjel) és Z (nulla). Az egyik operandus mindig az A regiszter (kivonásnál a kisebbítendő), az eredmény is az A-ba kerül. Lényegében többet nem tud, az adatbuszával és belső vezérlőjeleivel kapcsolódik a többi részhez.
A "PC és regiszterek" kártya tartalmazza a programszámlálót (PC), a címregisztert (AR), a B, C, D, E általános célú regisztereket, valamint két speciális címregisztert (H,L), amik általánosan is használhatók.
Az utasításdekódoló eldönti, hogy milyen utasításcsoportról van szó (op-kód felső 4 bitje), a kondíciódekódoló pedig általában a cél illetve forrásregisztereket, valamint az utasításcsoporton belüli műveleteket jelöli ki.
A vezérlő hajtja végre az utasításokat a többi kártya - mint erőforrások - segítségével. Minden belső vezérlőjelnek van függvénye, ami utaísítás és belső állapot függő. 8 belső állapot (fázis jel) van. Az összes utasítás 8 állapotból áll; 1MHz-es órajellel 8us-ig tart egy utasítás (0.125MIPS). 4MHz-es órajellel még működik (0.5MIPS), nagyobb frekvenciával még nem próbáltam.
A CPU 5V-os tápfeszültséggel működik és egyfázisú, 50%-os órajelet igényel. A néhány regiszteren, buszon és belső vezérlőjelen lévő LED-ek miatt az áramfelvétel 2.5A körül van.
Hírek
Ma sikerült megfelelően illeszteni az AT-s billentyűzetet a géphez :) Sajnos a billentyűk órajele nagyon széles tartományban mozoghat (10-16kHz), ezért számlálni kell, hogy bejött-e a 11 bit (1 start, 8 adat, 1 paritás, 1 stop). Ehelyett egy monostabillal szerettem volna jelezni a byte-ok végét...