Průvodce inteligentní ženy po vlastním FK-1

Ing. Vít Libovický neskončil proslulým zaheslováním Města robotů a vytvořením ROMky pro Ondru.
Seznamte se s dalším dílem, na kterém se podílel.

.Je to ironie. Bydlím na hranici katastru obce Klíčany, takže bych k zázraku, který se jmenuje FK-1, měl mít nejblíž. Tento počítač vyráběný Státním statkem Klíčany se ale vlastně nevyráběl v Klíčanech. Vyráběl se více východně, v Mratíně (Státní statek Klíčany, středisko 460 – mikroelektronika).
Zatím toho o něm moc nevím, ale je to možná víc, než vědí ostatní, tak se o moudrost podělím. Možná, že někdo bude chtít tento počítač emulovat, a pak se každá informace hodí.

Jde vlastně o „generický“ CP/M počítač.
Bedna s dvěma osmipalcovými mechanikami, každá 243 kB, na zadní straně skříně je přišroubovaná plochá krabička s deskou počítače. procesor U880D (Z80), 25×80 znaků v rastru 256×512 bodů, nějaká ta paměť.
Počítač obsahuje 2 kB (ale lze osadit až 16 kB) ROM, 64 kB souvislé RAM a navíc ještě 16 kB VideoRAM. ROM a VRAM se stránkují v dolních 32 kilech.
Počítač je sice jednodeskový, ale obsahuje poměrně velký počet součástek.
Lze na něm provozovat CP/M 2.2 nebo 3.0. V případě FK-1 je podstatné, že v CP/M 2.2 je potřeba v případě výměny diskety stisknout CTRL+C, zatímco v CP/M 3.0 to potřeba není.
Popisovat CP/M nemá smysl, je to prostě CP/M.

Popisovat kódy, které vrací klávesnice, nemá smysl – stačí se podívat, jaké kódy kláves vrací klávesnice Consul 262.3, která se k FK-1 připojovala.
Řídící kódy terminálu jsou stejné jako u počítače Robotron 1715 (na kterém se taky používá CP/M). protože ale Robotron 1715 používá dvě různé varianty kódů, umí FK-1 pro jistotu obě, nazvané SCP a SCP-VS. Mezi oběma se přechází pomocí sekvencí 1B, 4D, 30 (SCP) a 1B, 4D, 31 (SCP-VS). pro oba módy jsou společné sekvence 7F (backspace), 1B, 5E, 40 (normální znaky), 1B, 5E, 41 (tečkované podtržení), 1B, 5E, 42 (podtržení plnou čarou), 1B, 5E, 43 (podtržení čárkovaně), 1B, 5E, 60 (podtržení plnou čarou), 1B, y+20h nebo 80h, x+20h nebo 80h – nastaví kurzor na souřadnice, k souřadnicím je nutno přičíst offset.

Kromě procesoru a pamětí obsahuje FK-1 čipy 8253, 8251 a hned třikrát 8255.

Jedna 8255 slouží k připojení tiskárny (brána A, adresa 00) a klávesnice (brána B, port 01) a jejich řídících signálů (brána C, adresa 02) (na adrese 03 je řídící registr). Význam jednoltivýých bitů brány C je pro čtení tento: 7 – /OBF (buffer overflow pro tiskárnu)), 6 – INTE tiskárny, 5 – ERROR tiskárny, 4 – /PEND, chybí papír, 3 – INTR tiskárny, požadavek na přerušení, 2 – INTE klávesnice, 1 – IBF (data z klávesnice), 0 – INTR klávesnice, a pro zápis: 6 – INTE klávesnice, tiskárny (povolení přerušení při převzetí dat tiskárnou), 2 – INTE klávesnice, povolení přerušení při stisku klávesy.

8251 slouží k obsluze sériového portu, najdete ji na adresách 40 (data) a 41 (status).

Zbylé dvě 8255 a 8253 slouží jako diskový řadič, obsluha myši a zobrazovač.

8253 je připojena na adresy 10 (systémový čas), 11 (timeout pro diskové operace, generátor hodin pro 8251), 12 (overflow pro diskové operace) a 13 (řídící registr).

Další 8255 mána adrese 20 bránu A (data pro zápis na disk), na adrese 21 bránu B (čtení dat z disku), 22 bránu C (část pro čtení a část pro zápis řídících signálů pro disk). Na adrese 23 je řídící registr. Význam bitů na bráně C je pro čtení tento: 7 – /OF A dat pro zápis na disk, 6 – INTE A, 5 – SELECT mechaniky A, B, 4 – nic, 3 – INTRA přerušení při datech z PA, 2 – INTE B čtených dat, 1 – IBF B čtených dat, 0 – INTR B, žádost o přerušení z PB. Pro zápis: 6 – INTE A, povolení přerušení při zapsání dat, 2 – INTE B, povolenípřerušení od čtených dat.

Další 8255 má bránu A na adrese 60 s tímto významem bitů: 6 – /DISk, povolení diskových operací, 3 – INTE MOUSE, povolení přerušení od myši, 2 – INTE RTC od systémových hodin 50 Hz, 1 a 0 – nastavení typu hodin pro zápis na disk (01 index, 11 address mark, data mark, 00 jiné).
Port B na adrese 61: číslo první zobrazované linky na displeji. (ROL_REGISTER).
Port C je na adrese 32. Bitty pro čtení: 7 – INDEX, indexová značka na disku, 6 – nevím, 5 – WRITE_PROTECT při chráněné disketě, 4 – TRAC_00 jako příznak stopy 0. Pro zápis: 3 – HEAD-LOAD pro přiklopení hlavy k disku, 2 – TRACK_43 pro nastavení signálu TR-43 pro disk, 1 – DIRECTION pro nastavení směru krokování disku (0 dolů k 0, 1 nahoru k 75), 0 – STEP, krok disku (0..1..0..).
Řídící registr je na adrese 63.

Porty 30 a 50 mají zkřížené významy pro zápis a čtení.
Na portu 30 lze čtením nastavit stránkování paměti do režimu souvislých 64 kB RAM.
Při zápisu nastavuje počty povolených úrovní přerušení: 0 zákaz přerušení, 1 povoleno INTR-7, 2 povolneo NTR-7 a INR-6, 8 povolena všechna přerušení.
Na portu 50 lze čtením nastavit stránkvání paměti do stavu, kdy je v dolních 16 kB ROM a v druhém 16 kB bloku VRAM.
Při zápisu mají jednotlivé bity tento význam: 4 – povolení FORMAT, 3 – povoleí READ_ADDRESS_MARK, 2 – povolení READ_DATA_MARK, 1 – povolení WRITE, 0 – povolení READ. Funkce se povolují v jedničce.
Na portu 70 lze přečíst stav myši se současným zrušením požadavku na přerušení od myši. jednotlivé bity jsou: 7 a 6 – 1 při připojení myši a 0 pokud není připojena, 5 – /T2, pravé tlačítko, 4 – /T1, llevé tlačítko, b3 – /BY, osa Y, 2 – /AY, osa Y, 1- /BX, osa X, 0 – /AX, osa X.

Zápisem na port 70 se resetují požadavky na přerušení od systémových hodin 50 Hz.

Jak vyplývá z popisu stránkování, mapa paměti může nabývat jednoho ze dvou stavů:
0000..3FFF EPROM 2-16 kB | RAM_1
4000..7FFF VRAM 16 kB | RAM_2
8000..BFFF RAM_3
C000..FFFF | RAM_4

VideoRAM je při nastránkování v prostoru 4000..7FFF. Každý bajt představuje osmici vedle sebe ležících pixelů. Bit 7 je nejvíce vlevo, bit 0 nejvíce vpravo.
První osmice pixelů v levém horním rohu leží na adrese 4000h. organizace je provedena po sloupcích, tedy osmice pod ní leží na adrese 4001h, dalšípod ní na 4002h, spodní ve sloupci pak na adrese 40FFh. Další sloupec leží od 4100h do 41FFh.
Pokud si zakreslíte adresy do tabulky, uvidíte, že dolní bajt adresy adresuje mikrořádek, horní (+40h) sloupec (od 40h do 7Fh).
Narozdíl od SAPI nebo PMD nejsou ve VideoRAM nevyužité bajty.
Uvedené uspořádání platí pouze tehdy, pokud adresa ROL_REGISTER (61) obsahuje 0 jako číslo první zobrazované řádky. Při vyšších hodnotách se příslušný počet mikrořádků prostě nezobrazuje.

Priority přerušení od jednotlivých zařízení jsou tyto (od nejvyšší do nejnižší):
7 – DATA_READY pro zápis nebo čtení z disku
6 – TIMEOUT při diskových operacích
5 – OVERFLOW 0 v čítači dat při diskových operacích
4 – RTC_50HZ od systémových hodin
3 – MOUSE při pohybu myši
2 – SIO při příjmu nebo odeslání dat
1 – KEYBOARD ppři stisku klávesy na klávesnici
0 – PRINTER při převzetí dat tiskárnou.
Tabulka vektorů je uložena v paměti od FF00h do FF0Fh, obsahuje následující vektory: 00, 02, 04, 06, 08, 0A, 0C, 0E.

FK-1 se standardně dodával v této sestavě:
počítač (v ploché skříňce, přišroubované na záda skříně s disketovkami)
skříň s dvěma disketovkami Consul 7113
klávesnce Consul 262.3
monitor PMD-60
zdroj PMD-10, později zabudovaný do skříně disketovek
volitelně myš, tiskárna a stolek
náhradní pojistky, řemínek k disketovce, spínač ke klávesnici
3 diskety se systémem (a programy FORMAT, IP, PRINT, ED (řádkový editor), VED (celoobrazovkový editor), BASICA, BASCOm (kompilátor), M80 (makroassembler), L80 (linker), LIB (knihovny), ZSID (debugger), TURBO (Pascal), F0 (Fortran), DB (DBase)).
příručka, informace pro uživatele, záruční list, atest (kompletnosti sestavy), zkušební protokol

Podle mých informací se vyrobilo během roku 1989 minimálně 686 těchto počítačů (stav z 21.9.1989).