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).
Na tu velikost bufferu můžu kouknout do dokumentace, ale mám dojem, že u CP/M pro 5.25" se o možnosti nastavovat buffer psalo výslovně jako věci specifické právě pro 5.25" (8" buffer tedy nepoužíval, podle mne je to dáno odlišnou velikostí sektorů, ale neověřeno).
Ještě měl existovat program (jméno jsem zapomněl), který umožňoval používat 8" a 5.25" řadič současně – nabootoval CP/M pro jeden řadič, patchnul ho, posunul hranici volné paměti, nahrál CP/M pro druhý řadič… a takhle to běhalo, jednotky pod jedním řadičem byly označené A, B, pod druhým C, D, a takový systém se hlásil tuším jako 41 kB CP/M
(Fakt už potřebuju scanner, takových věcí, které by se daly nascanovat a hodit na net…)
Mmochodem, napsals "5.25 disku pro Zbrojováčka"… Myslel jsem, že ho nikdy neseženu. Mohl bys ho mailnout nebo zduplikovat a přivézt třeba na Forever?
Mám pro C2717 a PMD skoro všechen software, co existoval (a plán to vše zdigitalizovat a hodit na net), hlavně naprosto (pro pařany) nezajímavou sbírku výukového a administrativního software (co se dodával školám, i s dokumentací, nějakých 20 či 30 disket, v době pořízení jeden takový program stál skorem 200 Kčs a Incotex měl v nabídce asi stovku různých titulů, takže software za bratru 20 000 kaček).
Ale pár věcí mi přeci jen chybí:
* CP/M pro 5.25"
* Kermit C2717
* FELNET
Kdyby se tyto tři softy u někoho našly, budu převděčen. Hlavně ten Kermit by mi usnadnil přenos souborů na jinou platformu a odtud na internet.
Potom taky sháním ROMku C2717-3 (nebo i celý C2717-3, klidně, protože nejde jen o ROMku, ale i jiné úpravy, třeba zdroje).
Ale to vlastně s FK-1 nijak nesouvisí :o)
Môžem sa mýliť, ale pokiaľ viem, tak veľkosť CP/M v kB, uvedená zvyčajne pri štarte systému, zahŕňa všetky jeho časti, teda SPA, TPA, CCP, BDOS a BIOS, čo v podstate znamená, že adresa konca BIOSu predstavuje veľkosť CP/M. Teda, samozrejme, pokiaľ SPA začína štandardene na adrese 0 a všetky tieto časti sú súčasťou hlavnej pamäte.
Na PMD 85 začína CCP na A600, BDOS na AE00 a BIOS na BC00. BIOS končí na BFFF. To vlastne zodpovedá 48 kB.
Na C2717 začína CCP na AE00, BDOS na B600 a BIOS na C400. BIOS končí na CFFF. To vlastne zodpovedá 52 kB. Od Schotka mám jeden Image 5,25" disku zo Zbrojováčka, u ktorého sa systém hlási "51K CP/M V2.2 (+1K buf.), Zbrojovka Brno, 02-01-91". MOVCPM u Zbrojováčka (alebo štandardne?) umožňuje voliť veľkosť buffra.
Ako je to u FK-1, ťažko povedať, neviem. Ale ak sú moje úvahy správne, tak 62kB nakoniec môže byť aj pravda.
Myslím, že se hodí tuhle korespondenci zveřejnit, fakt zajímavé (díky za ni):
—– Original Message —–
> Spolu s partou dalších nadšenců máme archiv dávno zapadlých programů
(http://archive.free8bit.net) a právě se mi dostalo do rukou pár programů které
by tam mohly patřit (formátovací program pro FK1, diag, boot eprom).
Nevím jakým zázrakem ale dochovaly se dokonce i zdrojové kódy.
—– Original Message —–
From: R. Cestr
Tak to by mě také moc zajímalo, jakým způsobem a kde se dochovaly zdrojové kódy těchto dávných programů. Já sám už je nemám, zůstaly na těch velkých disketách a ty nemaje kde přečíst skončily patrně v kotli ústředního topení. Možná bych na půdě našel výpisy na papíře, pokud je nesežraly za ta léta myši. Ne, že by mi to nějak vadilo, ale zajímala by mě cesta těchto zdrojových programů, které jsem, pokud mě paměť neklame, nikomu nikde nedával. Nikdo tenkrát o to nejevil zájem. Každého zajímaly hotové produkty a nějaký zdroják, to bylo tenkrát je pro pár odborníků, znající assemblery. Zkuste zapátrat, moc by mě zajímaly cestičky, jak se tyto zdrojové programy zachovaly. Tenkrát jsem pro FK-1 napsal i celý BIOS a systém CP/M. Kdepak ty zdroje už jsou…
S autorskými právy si nedělejte vrásky, jen případně uveďte mne jako autora (jen jméno, bez kontaktů prosím). Tenkrát se to taky moc nebralo, jeden kradl od druhého, nejvíc proslulo JZD Slušovice se svým počítačem TNS. Protože byl také na procesoru Z80, chodily jejich programy na FK-1, případně po drobných úpravách. Oni to zase kradli přímo od USA. Dokonce se mi podařilo zprovoznit systém DBS II (databáze, předchůdce Foxky), kterou Slušovice blbě ukradli a dělalo to záměrné chyby. Já přišel na fígl a mě DBSka chodila, Slušovicím občas chybovala 😀
Počítače FK-1 vyrábělo tehdejší JZD Klíčany v provozovně přidružené výroby Mratín u Prahy. Pro ně jsem původně dělal na vedlejšák oživování desek a proto jsem vyrobil testovací ROM, která nesmírně usnadňovala oživování. No a pak jsem vylepšoval programy, vyráběl nové – například to formátování bylo mnohokrát rychlejší, protože jsem formátoval najednou celou dráhu na jednu otáčku, původní formátovač formátoval po jednom sektoru a nestihlo se to připravit na jednu otáčku, takže jedna stopa se formátovala na 26 otáček… Nojo, zlaté časy…
Hardwarové komponenty se nedochovaly, to už jsem bohužel všechno vyházel. Když se likvidovala výroba těchto počítačů, měli jsme s kolegou toho plný sklad, ještě nějakou dobu jsme soukromě dělali servis, když to zlikvidovali zákazníci, vyhodilo se to všecho, protože přišly PC a bylo potřeba místo na nové komponenty…
Tak nízko?
Já spíš doufal, že všechno potřebné low-level bude v ROMce a v RAM budou jen nezbytné vstupní body pro volání služeb s odkazy do ROM. Což by těch inzerovaných 62 kB dát mohlo.
Přeci jen je škoda, mít 64 kB souvislé RAM, stranou hozenou VRAM a ROM, a nevyužít to (třeba C2717 má 12 kB VRAM v hlavním paměťovém prostoru, kde překáží – jako maximum inzeruje tuším 52 kB volných).
Třeba ta hodnota ale znamená něco trochu jiného (těch 52+12 na C2717 je 64, takže po odečtení VRAM by systém zabíral nulu).
Díval jsem se teď a to jak vlastně bootuje a spouští CP/M a je to celkem zvláštní. Na systémové disketě se do 52 sektorů (první dvě stopy) vešel pouze BIOS + grafický efekt FK-1. Vlastní CP/M je pak uloženo na disketě a Bios si ho pak natáhne. Taktéž jsem nepochopil tu hlášku 62kB CP/M, když systém začíná na D000 a prakticky zabírá paměť až do konce.
Myslel jsem, že budu muset scanovat, ale na netu jsem je kupodivu našel už hotová.
Kvalita sice nic moc, ale ani moje předlohy nejsou moc kvalitnější.
http://historicka.ic.cz…d/FK1.ZIP
Autorem BOOTROM a pár dalších programů (např. Diagnostika stroje, formát disket a dalších)je pan R. Cestr.
Úplně přesně to říct nemůžu, ale taky ho podezírám z autorství softwarového vybavení. A taky je autorem příručky :o)
Možná budu vědět víc, až budu mít výpis ROM.
Skutočne krásny stroj. Len som čakal, že sa v článku znova objaví Libovického meno a dozviem sa, na čom konkrétne sa podieľal 🙂 Že by BIOS a príslušná úprava CP/M?