8-bit TTL (LSI) Processor
A honlap még szerkesztés alatt áll, de bővül.

MENÜ

Memóriaszervezés

 

A processzor egyszerre 64K-t lát. Az elérhető memória 2M, ez 32K-s lapokra van bontva, amiből a legfelső 32K megfelel a processzor címtartománya felső felével, ez a fix, minden lapról látható tartomány. Az alsó lapokból tehát 63 darab (page0..page62) van, amelyek között egy latch-el mint periféria lehet váltani. A perifériák memóriába ágyazottak és a 0xC000 címtől kezdődően 32byte-ot foglalnak el. Az eszközök végleges címe képlékeny, ezért nem is írom ide. Mivel nincsen megszakítás, a rendszernek van egy Status Registere (SR). A regiszter bitjei különböző perifériák állapotait tükrözik, pl: UART receive buffer int, UART transmit done, keyboard int (billentyűnyomás)..stb.

A memóriához tartozik még az IDE is, ami szintén tervben van (fejben kész, inkább SW kérdés), remélem mihamarabb megépül az is. Akadt két darab 1 gigás HDD, különböző gyártótól, majdcsak működik valamelyik úgy, ahogy gondolom. Sajnos a specifikáció ellenére akadnak eltérések bőven.

 

Be- és kiviteli eszközök

 

Billentyű

 

A fő cél ezeknél is az, hogy ne tartalmazzon sok IC-t, amit sokáig kell forrasztani. Az első billentyűzetillesztő egy C64-es mátrixot használt. Egyetlen porton csatlakozott a géphez, aminek az alsó 6 bitje a leütött billentyű sorszáma, a felső két bit pedig rendre a shift és a ctrl billentyűvel együtti lenyomott állapotára utal. A breadboardos kapcsolás jól működött, 16kHz-cel szkennelte a billentyűket, megszakítást* generált, ha lenyomott és még nem kiolvasott billentyű sorszámát tartalmazta a kimeneti buffer. mivel sok IC-vel járt, nem került megépítésre.

A mostani bevitel egy PC-s ps/2-es billentyűzet, ami shiftregiszterekkel és pár kapuval/latch-el (kb. 5IC, azért nem pontos a szám, mert még nincs kész) működő szerkezet. Ez is küld egy megszakítást* a gépnek, ha egy byte bejött. Az AT billentyű normál módban három byte-ot küld: leütéskor a scan kódot (make, pl. ENTER: 0xA5), felengedéskor egy felengedési kódot (brake, 0xF0) és újra a scan kódot. A billentyűzettel az illesztő nem kommunikál, egyelőre.

 

*megszakítás persze nincs, az SR megfeleő bitjének figyelése jelenti

 

Soros

 

A UART transmit egyelőre egy saját, shiftregiszteres kapcsolás, ez nem jelez vissza, ha készen van a byte küldésével. A végleges verzió egy 16C550-nel működő UART lesz.

 

Kép

 

A megjelenítés - a kis méret miatt - nem a szkópcsöves verzió lesz a jövőben. TTL-ből felépített VGA-kártya fogja hajtani VGA-módban (640x480@60Hz) a monitort, ahol kettő-kettő (QVGA) vagy négy-négy (QQVGA) sor és oszlop lesz összefogva. Ez még nem eldöntött. Van egy mostani verzió (320x240 8 szín), de a memóriakezelése nem gyors és nem is satbil (a képernyő nem aktív területein ír a processzor a videomemóriába).

A mostani elképzelés az, hogy a videokártya szolgáltatja az órajelet a processzornak, így sokkal könnyebben megoldható az írás.

 

Tavaly decemberben összeraktam egy VGA-kártyát, ami 800x600@60Hz-ben használja a monitort, minden sor és oszlop négyesével van összefogva, így a felbontás 200x150. Minden szín 2 biten van kódolva, így 64 szín érhető el. A VGA és a processzor fázisban lévő órajelekről működik: a pixelidő 100ns (10MHz) a processzor 5MHz-ről működik (ez bizonyult a végső határnak).

 

Hang

 

A gép hangját egy 6581-es SID adja (C64-ből ismert). ez az IC sajnos az író/olvasó jelektől nem független külső órajelet igényel, ami miatt egy kis áramkört kellett köré építeni, ami aszinkronná teszi a hozzáférést a processzoroldalról. A kapcsolás breadboardon létezik, jól működik (a POTX, POTY portjait is remekül olvassa).

 

Menü

Hírek

  • 2012. január 12.
    2012-01-14 11:16:42

    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...

Asztali nézet