{"id":930549,"date":"2019-04-07T21:45:57","date_gmt":"2019-04-07T20:45:57","guid":{"rendered":"https:\/\/sindik.at\/?p=930549"},"modified":"2019-04-08T10:00:45","modified_gmt":"2019-04-08T09:00:45","slug":"implementace-cp-m-na-zx-spectrum","status":"publish","type":"post","link":"https:\/\/sindik.at\/?p=930549","title":{"rendered":"Implementace CP\/M na ZX Spectrum"},"content":{"rendered":"\n<p>V nede\u013enej retro s\u00e9rii pokra\u010dujeme popisom Lama\u010dovej verzie CP\/M pod\u013ea AR 9\/88.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>ZX Spectrum je dnes u n\u00e1s jednozna\u010dn\u011b nejroz\u0161\u00ed\u0159en\u011bj\u0161\u00edm po\u010d\u00edta\u010dem, a to nejen mezi amat\u00e9ry. Je v\u0161ak pravda, \u017ee valn\u00e1 v\u011bt\u0161ina jeho majitel\u016f ponejv\u00edce jen hraje r\u016fzn\u00e9 hry nebo p\u00ed\u0161e jednoduch\u00e9 programy v BASICu. Je to zavin\u011bno nedostatkem osv\u011bty, \u00faplnou absenc\u00ed odborn\u00e9 literatury a tak\u00e9 t\u00edm, \u017ee v z\u00e1plav\u011b profesion\u00e1ln\u00edch program\u016f r\u016fzn\u00fdch firem tyto hry naprosto p\u0159eva\u017euj\u00ed. Kvalitn\u00edch syst\u00e9mov\u00fdch a u\u017eivatelsk\u00fdch program\u016f nen\u00ed zas tak mnoho. Nav\u00edc se \u0161\u00ed\u0159\u00ed pokoutn\u00edm zp\u016fsobem, mnohdy v po\u0161kozen\u00e9 verzi a hlavn\u011b, m\u00e1lokdy s n\u00e1vodem. A tak ti, kte\u0159\u00ed by t\u0159eba i cht\u011bli d\u011blat n\u011bco \u201elep\u0161\u00edho\u201c, nemaj\u00ed mo\u017enosti. Existuj\u00ed sice p\u0159ekl\u00e1da\u010de jazyka PASCAL, assembleru a C, nedosahuj\u00ed v\u0161ak \u00farovn\u011b obvykl\u00e9 u program\u016f pro \u201eprofesion\u00e1ln\u00ed\u201c po\u010d\u00edta\u010de. P\u0159edev\u0161\u00edm v\u0161ak jsou v\u011bt\u0161inou ur\u010deny pro pr\u00e1ci s kazetov\u00fdm magnetofonem, co\u017e je za\u0159\u00edzen\u00ed ji\u017e pat\u0159\u00edc\u00ed minulosti. Hlavn\u00ed nedostatek Spectra v\u0161ak vid\u00edme v tom, \u017ee na n\u011bm nen\u00ed mo\u017eno p\u0159\u00edmo bez pomocn\u00fdch program\u016f pracovat se sekven\u010dn\u00edmi soubory.<\/p>\n\n\n\n<p>Popisovan\u00fd opera\u010dn\u00ed syst\u00e9m tyto nedostatky beze zbytku \u0159e\u0161\u00ed. Je mo\u017en\u00fd jednoduch\u00fd p\u0159\u00edstup k soubor\u016fm, lze u\u017e\u00edvat kvalitn\u00ed programy firem zvu\u010dn\u00fdch jmen, jako je WordStar, TURBO-Pascal, MACRO 80, dBASE II, Fortran a dal\u0161\u00ed. D\u016fle\u017eit\u00fd je tak\u00e9 fakt, \u017ee Spectrum z\u00edsk\u00e1 plnou kompatibilitu s jin\u00fdmi osmibitov\u00fdmi po\u010d\u00edta\u010di u n\u00e1s, jako je nap\u0159. TNS, SAPI 1, ROBOTRON 1715, ale i Commodore 128, Schneider\/Amstrad 664 a 6128. Sharp 821 a dal\u0161\u00ed.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Z\u00e1kladn\u00ed \u00fadaje o syst\u00e9mu <\/strong><\/h4>\n\n\n\n<p>Popisovan\u00fd opera\u010dn\u00ed syst\u00e9m pro Spectrum je vytvo\u0159en na z\u00e1klad\u011b u n\u00e1s pou\u017e\u00edvan\u00e9ho opera\u010dn\u00edho syst\u00e9mu MIKROS, co\u017e je v podstat\u011b klasick\u00fd CP\/M verze 2.2. Vzhledem k v\u011bt\u0161\u00ed d\u00e9lce BIOSu je syst\u00e9m vygenerov\u00e1n pro 60k RAM, aby se do pam\u011bti v\u016fbec ve\u0161el (BIOS V3.2 je dlouh\u00fd asi 5 kB, u verze 4.0 se po\u010d\u00edt\u00e1 asi s 6,5 kB). M\u016f\u017ee vyu\u017e\u00edvat jednu a\u017e t\u0159i mechaniky Microdrive, p\u0159\u00edpadn\u011b je\u0161t\u011b RAM disk.<\/p>\n\n\n\n<p>Ve\u0161ker\u00e9 programy pracuj\u00edc\u00ed pod OS MIKROS jsou pak bez omezen\u00ed na Spectrum p\u0159enosn\u00e9. V\u00fdjimkou jsou snad jen syst\u00e9mov\u00e9 programy, kter\u00e9 ji\u017e p\u0159edem p\u0159edpokl\u00e1daj\u00ed ur\u010dit\u00e9 dan\u00e9 parametry disku, jako je velikost adres\u00e1\u0159e, po\u010det syst\u00e9mov\u00fdch stop apod. a nez\u00edsk\u00e1vaj\u00ed je \u010dten\u00edm syst\u00e9mov\u00fdch diskov\u00fdch tabulek. Zd\u00e1 se, \u017ee se to t\u00fdk\u00e1 jen program\u016f MOVCPM, SYSGEN a DOCTOR, jejich\u017e verze pro Spectrum dokon\u010dujeme. Popis uspo\u0159\u00e1d\u00e1n\u00ed a funkce opera\u010dn\u00edho syst\u00e9mu MIKROS byl p\u0159ed \u010dasem publikov\u00e1n na zelen\u00fdch str\u00e1nk\u00e1ch AR.<br><\/p>\n\n\n\n<p><strong>Technick\u00e9 p\u0159edpoklady <\/strong><\/p>\n\n\n\n<p>Pou\u017e\u00edv\u00e1n\u00ed CP\/M na Spectru se bohu\u017eel neobejde bez z\u00e1sahu do obvod\u016f po\u010d\u00edta\u010de. Je toti\u017e nutn\u00e9, aby pam\u011b\u0165 RAM za\u010d\u00ednala na adrese 0000h. Byla proto navr\u017eena velmi jednoduch\u00e1 \u00faprava, kterou lze snadno zvl\u00e1dnout i amat\u00e9rsky, spo\u010d\u00edvaj\u00edc\u00ed ve v\u00fdm\u011bn\u011b osmi p\u016fvodn\u00edch pam\u011bti RAM 4532, za obvody 4164, nebo 41256. P\u0159epnut\u00ed do m\u00f3du CP\/M se provede tak, \u017ee se znemo\u017en\u00ed v\u00fdb\u011br ROM a VRAM (Video RAM), kter\u00e9 stejn\u011b k ni\u010demu nepot\u0159ebujeme, a na jejich m\u00edsto se nastr\u00e1nkuje nov\u011b p\u0159ipojen\u00e1 pam\u011b\u0165 RAM (adresa 0000h a\u017e 7FFFh).<\/p>\n\n\n\n<p>Pomoc\u00ed str\u00e1nkovac\u00edho portu je mo\u017eno volit, kter\u00e1 str\u00e1nka p\u0159idan\u00e9 pam\u011bti bude aktivn\u00ed. P\u0159i pou\u017eit\u00ed pam\u011bt\u00ed 4164 vznikne zn\u00e1m\u00e9 Spectrum 80K, kter\u00e9 m\u00e1 oproti Spectru 48K nav\u00edc jednu str\u00e1nku pam\u011bti (str\u00e1nka = 32kB), pam\u011bti 41256 umo\u017en\u00ed z\u00edskat nav\u00edc 7 str\u00e1nek (Spectrum 272kB). Lze zapojit i dv\u011b sady pam\u011bt\u00ed stejn\u00e9ho typu, po\u010d\u00edta\u010d pak m\u00e1 pam\u011bt o kapacit\u011b 528kB. V\u00fdb\u011br pam\u011bt\u00ed obstar\u00e1v\u00e1 port na adrese FDh, jen\u017e m\u00e1 n\u00e1sleduj\u00edc\u00ed funkci: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>bit 7 .. 0 &#8211; m\u00f3d Spectrum 48K,<\/li><li>&#8230;&#8230;.. 1 &#8211; m\u00f3d CP\/M, <\/li><li>bity 6, 5, 4 a p\u0159\u00edpadn\u011b 3 ur\u010duj\u00ed aktivn\u00ed str\u00e1nku RAM.<\/li><\/ul>\n\n\n\n<p>Jak je vid\u011bt, i po z\u00e1sahu z\u016fstane Spectrum pln\u011b kompatibiln\u00ed se v\u0161emi programy pro n\u011bj ur\u010den\u00fdmi, kter\u00e9 lze i nad\u00e1le beze zm\u011bn pou\u017e\u00edvat.<br><\/p>\n\n\n\n<p>Zde je v\u0161ak nutn\u00e9 se zm\u00ednit o dosud publikovan\u00fdch \u00faprav\u00e1ch pam\u011bti Spectra. Mohlo by se toti\u017e zd\u00e1t, \u017ee n\u00e1mi navrhovan\u00e1 \u00faprava je dal\u0161\u00ed variac\u00ed na star\u00e9 t\u00e9ma. Nen\u00ed tomu tak. Star\u0161\u00ed \u00fapravy toti\u017e spo\u010d\u00edvaly vesm\u011bs v tom, \u017ee umo\u017e\u0148ovaly str\u00e1nkovat pam\u011b\u0165 v horn\u00ed polovin\u011b adresovan\u00e9ho prostoru, tj. na adres\u00e1ch 8000h a\u017e FFFFh, co\u017e pro n\u00e1\u0161 \u00fa\u010del nevyhovuje. Uprava popsan\u00e1 ve Sd\u011blovac\u00ed technice \u010d. 11\/1987 sice str\u00e1nkuje pam\u011b\u0165 dole, ale zp\u016fsobuje kolize dat na sb\u011brnici p\u0159i p\u0159ipojen\u00ed standardn\u00edch perif\u00e9ri\u00ed pro Spectrum, a\u0165 u\u017e je to ZX Interface 1, Opus Discovery, Beta-disk, ZX Interface 3, Kempston E, Lprint 4 a dal\u0161\u00ed. TO pak p\u0159in\u00e1\u0161\u00ed u\u017eivatel\u016fm mnoho nep\u0159\u00edjemn\u00fdch p\u0159ekvapen\u00ed.<\/p>\n\n\n\n<p>P\u0159i \u00faprav\u011b je nutno zaru\u010dit spr\u00e1vn\u00e9 ob\u010derstvov\u00e1n\u00ed nov\u011b p\u0159ipojen\u00fdch pam\u011bt\u00ed. Tyto pam\u011bti vy\u017eaduj\u00ed v ob\u010derstvovac\u00edm cyklu osmibitovou adresu. Pou\u017eit\u00fd mikroprocesor Z80A v\u0161ak poskytuje jen sedmibitov\u00e9 ob\u010derstven\u00ed. Sou\u010d\u00e1st\u00ed p\u0159idan\u00e9 desti\u010dky s n\u011bkolika IO je proto tak\u00e9 obvod zaji\u0161\u0165uj\u00edc\u00ed generov\u00e1n\u00ed osm\u00e9ho bitu ob\u010derstvovac\u00ed adresy.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Programov\u00e9 vybaven\u00ed <\/strong><\/h4>\n\n\n\n<p>Z\u00e1kladn\u00edm po\u017eadavkem p\u0159i vzniku CP\/M pro ZX Spectrum bylo vyu\u017eit\u00ed standardn\u00edch perif\u00e9ri\u00ed pro z\u00e1znam dat, co\u017e je ZX Interface 1 a Microdrive. M\u00e1me pochopiteln\u011b napsanou CP\/M na Spectrum i pro disketov\u00e9 mechaniky, co\u017e v\u0161ak p\u0159i velmi jednoduch\u00e9 programov\u00e9 obsluze disketov\u00e9ho \u0159adi\u010de nebyl \u017e\u00e1dn\u00fd zvl\u00e1\u0161tn\u00ed probl\u00e9m. Z\u00e1kladem t\u00e9to verze je pom\u011brn\u011b roz\u0161\u00ed\u0159en\u00fd syst\u00e9m Beta-disk, kter\u00fd pou\u017e\u00edv\u00e1 \u0159adi\u010d FD 1793 a kter\u00fd je mo\u017eno snadno amat\u00e9rsky vyrobit. Podm\u00ednkou je v\u0161ak z\u00edsk\u00e1n\u00ed pot\u0159ebn\u00fdch IO a disketov\u00e9 mechaniky. Daleko dostupn\u011bj\u0161\u00ed \u00a0a naprosto nejroz\u0161\u00ed\u0159en\u011bj\u0161\u00ed jsou v\u0161ak Microdrive. Dov\u00e1\u017eel je p\u0159ed \u010dasem PZO Tuzex.<br><\/p>\n\n\n\n<p>Proto tedy ZX Microdrive. Je to, pravda, pon\u011bkud specifick\u00e9 za\u0159\u00edzen\u00ed, kter\u00e9 nebylo jednoduch\u00e9 p\u0159izp\u016fsobit po\u017eadavk\u016fm CP\/M, kter\u00fd vy\u017eaduje mo\u017enost p\u0159\u00edm\u00e9ho p\u0159\u00edstupu na disk. T\u00edm se dost\u00e1v\u00e1me K vlastn\u00edmu syst\u00e9mov\u011b z\u00e1visl\u00e9mu bloku opera\u010dn\u00edho syst\u00e9mu, k BIOSu. Hlavn\u00edm programem je zde toti\u017e simul\u00e1tor pru\u017en\u00fdch disk\u016f na ZX Microdrive. Kdyby se Microdrive obsluhovaly stejn\u011b jako disk, cel\u00fd syst\u00e9m by pracoval neuv\u011b\u0159iteln\u011b pomalu (vyzkou\u0160eno). Bylo nutno se uch\u00fdlit k takov\u00fdm prost\u0159edk\u016fm, jako je sd\u00edlen\u00ed \u010dasu, priorita diskov\u00fdch operac\u00ed, nep\u0159etr\u017eit\u00e1 \u010dinnost kl\u00e1vesnice i p\u0159i b\u011bhu Microdrive a p\u0159\u00edstup k soubor\u016fm p\u0159es velk\u00e9 vyrovn\u00e1vac\u00ed pam\u011bti. Tyto v\u011bci zn\u00e1me sp\u00ed\u0161e od po\u010d\u00edta\u010d\u016f podstatn\u011b vy\u0161\u0161\u00edch t\u0159\u00edd, jako je nap\u0159. IBM PC. Nicm\u00e9n\u011b v\u00fdsledkem je funk\u010dn\u00ed, pou\u017eiteln\u00fd syst\u00e9m. Verze BIOSU \u010c. 3.2, pou\u017eiteln\u00e1 pro celkov\u00fd rozsah pam\u011bti 80K i 272K, ovl\u00e1d\u00e1 Microdrive znateln\u011b rychleji ne\u017e origin\u00e1ln\u00ed Sinclair ROM v ZX Interface 1. Nejnov\u011bj\u0161\u00ed verze BIOSu V4.0, ur\u010den\u00e1 pro RAM 272K a v\u00edce, pracuje s Microdrive dokonce n\u011bkolikr\u00e1t rychleji, ne\u017e podobn\u00e9 syst\u00e9my s disketov\u00fdmi mechanikami.<\/p>\n\n\n\n<p>P\u0159i pou\u017eit\u00ed celkov\u00e9ho rozsahu RAM nejm\u00e9n\u011b 272K, lze pracovat pod opera\u010dn\u00edm syst\u00e9mem CP\/M na Spectru i s pou\u017eit\u00edm kazetov\u00e9ho magnetofonu. Po zdlouhav\u00e9m nahr\u00e1n\u00ed v\u0161ech program\u016f i dat z kazety, Ize toti\u017e d\u00e1le pracovat ji\u017e jen s RAM diskem a nakonec data op\u011bt nahr\u00e1t na kazetu. I to bylo \u00fasp\u011b\u0161n\u011b vyzkou\u0161eno. Pro v\u00e1\u017en\u011bj\u0161\u00ed pr\u00e1ci by v\u0161ak bylo z\u00e1lohov\u00e1n\u00ed zdroje asi podm\u00ednkou. P\u0159esto je jist\u011b tento zp\u016fsob zaj\u00edmav\u00fd, zvl\u00e1\u0161t\u011b pro v\u00fdukov\u00e9 \u00fa\u010dely.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Rutiny BIOSu<\/strong><\/h4>\n\n\n\n<p><strong>Studen\u00fd a tepl\u00fd start <\/strong><br><\/p>\n\n\n\n<p>Studen\u00fd start syst\u00e9mu je vy\u0159e\u0161en asi jedin\u00fdm mo\u017en\u00fdm zp\u016fsobem. Do mechaniky 1 se vlo\u017e\u00ed kartrid\u017e se syst\u00e9m a zad\u00e1 se p\u0159\u00edka\u017e RUN. Zav\u00e1d\u011b\u010d zjist\u00ed velikost pam\u011bti RAM, otestuje ji, zavede syst\u00e9m a spust\u00ed jej.<\/p>\n\n\n\n<p>Tepl\u00fd start ov\u0161em funguje pon\u011bkud jinak. Na jin\u00fdch po\u010d\u00edta\u010d\u00edch se syst\u00e9m znovu zav\u00e1d\u00ed z disku. Zde ale syst\u00e9m na b\u011b\u017en\u00fdch kartrid\u017e\u00edch v\u016fbec nen\u00ed, aby tu nezab\u00edral drahocenn\u00e9 m\u00edsto. Proto se p\u0159i prvn\u00edm nata\u017een\u00ed syst\u00e9m p\u0159em\u00edst\u00ed do nevyu\u017eit\u00e9 pam\u011bti VRAM, odkud se p\u0159i tepl\u00e9m startu instrukc\u00ed LDDR p\u0159esune na m\u00edsto funkce.<\/p>\n\n\n\n<p>Kl\u00e1vesnice Tak\u00e9 \u010dinnost kl\u00e1vesnice byla pozm\u011bn\u011bna. P\u0159edev\u0161\u00edm nesta\u010dil po\u010det kl\u00e1ves. Nov\u00e1 obsluha kl\u00e1vesnice tud\u00ed\u017e zpracov\u00e1v\u00e1 t\u0159i sou\u010dasn\u011b stisknut\u00e9 kl\u00e1vesy. Je tak mo\u017eno vkl\u00e1dat v\u0161echny ASCII znaky od CHR(0) a\u017e po CHR(127). N\u011bkter\u00e9 kl\u00e1vesy maj\u00ed odli\u0161n\u00fd v\u00fdznam \u2013 jsou uspo\u0159\u00e1d\u00e1ny v n\u00e1sleduj\u00edc\u00ed tabulce:<br><\/p>\n\n\n\n<table class=\"wp-block-table is-style-regular\"><tbody><tr><td><em>Kl\u00e1vesa<\/em><\/td><td><em>Funkce<\/em><\/td><td><em>Kl\u00e1vesa<\/em><\/td><td><em>Funkce<\/em><\/td><\/tr><tr><td>EXTEND MODE<\/td><td>CTRL<\/td><td>EDIT<\/td><td>ESCAPE<br><\/td><\/tr><tr><td>GRAPH<\/td><td>TAB<\/td><td>BREAK<\/td><td>CTRL S<\/td><\/tr><tr><td>TRUE VIDEO<\/td><td>CTRL C<\/td><td>INV VIDEO<\/td><td>CTRL R<\/td><\/tr><tr><td>CURSOR LEFT<\/td><td>BS<\/td><td>CURSOR RIGHT<\/td><td>CTRL D<\/td><\/tr><tr><td>CURSOR UP<\/td><td>CTRL E<\/td><td>CURSOR DOWN<\/td><td>CTRL X<\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>Symbol shift + SPACE + B je p\u0159eru\u0161en\u00ed programu se skokem do syst\u00e9mu. Je to v\u00fdhodn\u00e1 funkce nap\u0159. v p\u0159\u00edpad\u011b, \u017ee program uv\u00edzne v nekone\u010dn\u00e9m cyklu. Ostatn\u00ed kl\u00e1vesy funguj\u00ed tak jako na jin\u00fdch po\u010d\u00edta\u010d\u00edch, tzn. CTRL + p\u00edsmeno d\u00e1v\u00e1 odpov\u00eddaj\u00edc\u00ed \u0159\u00eddic\u00ed znak.<\/p>\n\n\n\n<p>Kl\u00e1vesnice je \u010dtena neust\u00e1le, nez\u00e1visle na ostatn\u00edch \u010dinnostech po\u010d\u00edta\u010de. V p\u0159\u00edpad\u011b, \u017ee b\u011b\u017e\u00edc\u00ed program nesta\u010d\u00ed znaky z kl\u00e1vesnice zpracov\u00e1vat, kl\u00e1vesnice pracuje do vyrovn\u00e1vac\u00ed pam\u011bti o velikosti 128 znak\u016f. Je proto mo\u017en\u00e9 nap\u0159. p\u0159i p\u0159ekladu souboru assemblerem ji\u017e ps\u00e1t dal\u0161\u00ed p\u0159\u00edkazy, kter\u00e9 budou provedeny pozd\u011bji po skon\u010den\u00ed p\u0159ekladu.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>V\u00fdstup na termin\u00e1l<\/strong><\/h4>\n\n\n\n<p>Jak je zn\u00e1mo, CP\/M vy\u017eaduje obrazovku S 80 znaky na \u0159\u00e1dek. Jak se v\u0161ak uk\u00e1zalo, S ur\u010dit\u00fdmi omezen\u00edmi pracuje i na syst\u00e9mech s 64 znaky. U Spectra je to vy\u0159e\u0161eno mikroprintem s form\u00e1tem 64 znak\u016f na 24 \u0159\u00e1dc\u00edch. Sou\u010d\u00e1st\u00ed v\u00fdstupn\u00edho programu jsou i podprogramy pro rolov\u00e1n\u00ed obrazovky nahoru a dolu a pro maz\u00e1n\u00ed \u0159\u00e1dky, co\u017e v\u00fdrazn\u011b zvy\u0161uje komfort p\u0159i editov\u00e1n\u00ed textu. ASCII znaky CHR(20) a\u017e CHR(126), BEL, BS, LF a CR jsou zobrazov\u00e1ny obvykl\u00fdm zp\u016fsobem, seznam ostatn\u00edch \u0159\u00eddic\u00edch k\u00f3d\u016f je v n\u00e1sleduj\u00edc\u00ed tabulce<br><\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td><em>Znak<\/em><\/td><td><em>Funkce<\/em><\/td><td><em>Znak<\/em><\/td><td><em>Funkce<\/em><\/td><\/tr><tr><td>ESC = Y x<\/td><td>CURSOR LEAD<\/td><td>ESC T<\/td><td>ERASE TO EOLN<\/td><\/tr><tr><td>ESC R<\/td><td>DELETE LINE<\/td><td>ESC E<\/td><td>INSERT LINE<\/td><\/tr><tr><td>ESC (<\/td><td>END HIGHLIGHT<\/td><td>ESC )<\/td><td>START HIGHLIGHT<\/td><\/tr><tr><td>CTRL Z<\/td><td>CLS+HOME<\/td><td><\/td><td><\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>BIOS neum\u00ed zpracovat znaky TAB, FF a DEL. R\u00eddic\u00ed znaky byly zvoleny ve snaze po co nejv\u011bt\u0161\u00ed standardizaci BIOSu a jsou shodn\u00e9 s termin\u00e1lem Televideo 925 a 950.<\/p>\n\n\n\n<p>Sou\u010d\u00e1st\u00ed v\u00fdstupn\u00ed rutiny je i podprogram pro tisk kursoru, kter\u00fd b\u011b\u017e\u00ed p\u0159es p\u0159eru\u0161en\u00ed a kursor je tud\u00ed\u017e st\u00e1le viditeln\u00fd. N\u011bkter\u00e9 programy toti\u017e vy\u017eaduj\u00ed viditeln\u00fd kursor i v dob\u011b, kdy se ne\u010dek\u00e1 na kl\u00e1vesnici. Kursor blik\u00e1 i v dob\u011b b\u011bhu mechanik Microdrive.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Tisk\u00e1rna a d\u011brn\u00e1 p\u00e1ska <\/strong><\/h4>\n\n\n\n<p>To jsou za\u0159\u00edzen\u00ed, kter\u00e1 m\u00e1 ka\u017ed\u00fd u\u017eivatel jin\u00e1. Proto v BIOSu nejsou obslu\u017en\u00e9 programy pro tisk a p\u00e1sku zahrnuty. Za jeho vstupn\u00edm vektorem jsou je\u0161t\u011b \u010dty\u0159i vektory dal\u0161\u00ed, kter\u00e9 jsou v po\u0159ad\u00ed:<br><\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td><em>Adresa<\/em><\/td><td><em>Podprogram<\/em><\/td><\/tr><tr><td>BIOS + 33H<\/td><td>V\u00fdstup znaku na tisk\u00e1rnu<\/td><\/tr><tr><td>BIOS + 36H<\/td><td>Status tisk\u00e1rny<\/td><\/tr><tr><td>BIOS + 39H<\/td><td>Vyd\u011brov\u00e1n\u00ed znaku na p\u00e1sku<\/td><\/tr><tr><td>BIOS + 3CH<\/td><td>P\u0159e\u010dten\u00ed znaku z p\u00e1sky<\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>Vstupn\u00ed parametr je v registru C, v\u00fdstupn\u00ed V A. U\u017eivatel na p\u0159\u00edslu\u0161n\u00e9 m\u00edsto BIOSU (p\u0159idan\u00e9 vektory) um\u00edst\u00ed instrukci skoku na sv\u016fj podprogram, kter\u00fd nap\u00ed\u0161e, p\u0159elo\u017e\u00ed od adresy BASIC RAMTOP + 1 a za\u0159ad\u00ed do syst\u00e9mu na adresu CCP-800h, odkud jej syst\u00e9m p\u0159em\u00edst\u00ed na m\u00edsto ur\u010den\u00ed a zavol\u00e1. Pro u\u017eivatelsk\u00e9 rutiny je zde voln\u00fdch 300h bajt\u016f. P\u0159i vol\u00e1n\u00ed je nastr\u00e1nkovan\u00fd m\u00f3d 48K, povolen\u00e9 preru\u0161en\u00ed a SP je nastaven na adresu, pod n\u00ed\u017e je voln\u00fdch nejm\u00e9n\u011b 20h bajt\u016f. U\u017eivatel sm\u00ed pou\u017e\u00edvat registry AF, BC, DE a HL a nesm\u00ed zak\u00e1zat p\u0159eru\u0161en\u00ed (pozor na \u010dasovac\u00ed smy\u010dky!). Nen\u00ed mo\u017eno tak\u00e9 volat rutiny do ROM ani do p\u0159\u00eddavn\u00e9 ROM, kterou m\u00e1 nap\u0159. ZX Interface 1 nebo jin\u00e9 interfejsy.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Diskov\u00e9 operace <\/strong><\/h4>\n\n\n\n<p>Diskov\u00e9 operace na \u00farovni Microdrive jsou zdaleka nejslo\u017eit\u011bj\u0161\u00edmi operacemi BIOSu. Jejich z\u00e1kladem je sd\u00edlen\u00ed \u010dasu procesoru mezi \u010dinnost\u00ed Microdrive a b\u011b\u017e\u00edc\u00edm programem. To se uskute\u010d\u0148uje p\u0159es p\u0159eru\u0161en\u00ed a prob\u00edh\u00e1 ve dvou r\u016fzn\u00fdch priorit\u00e1ch. Vy\u0161\u0161\u00ed prioritu maj\u00ed okam\u017eit\u00e9 po\u017eadavky b\u011b\u017e\u00edc\u00edch program\u016f. Ni\u017e\u0161\u00ed prioritu m\u00e1 p\u0159\u00edstup BIOSu na disk p\u0159i vykon\u00e1v\u00e1n\u00ed d\u0159\u00edv\u011bj\u0161\u00edch po\u017eadavk\u016f na sekven\u010dn\u00ed \u010dten\u00ed a z\u00e1pis. Komunikace programu se soubory se uskute\u010d\u0148uje p\u0159es p\u0159\u00edstupov\u00e9 vyrovn\u00e1vac\u00ed pam\u011bti. Jejich velikost je 2K u BIOSu V3.2, nebo 32 a\u017e 64K u syst\u00e9mu 4.0.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Form\u00e1t z\u00e1znamu <\/strong><\/h4>\n\n\n\n<p>CP\/M na Microdrive vyu\u017e\u00edv\u00e1 jin\u00fd form\u00e1t z\u00e1znamu ne\u017e origin\u00e1ln\u00ed ROM, a to ze dvou d\u016fvod\u016f. Jednak je zv\u00fd\u0161en\u00e1 jmenovit\u00e1 kapacita kartrid\u017ee na 96K, jednak p\u016fvodn\u00ed form\u00e1t z\u00e1znamu nen\u00ed mo\u017en\u00fd, proto\u017ee u n\u011bj nen\u00ed po\u010d\u00edt\u00e1no s existenc\u00ed adres\u00e1\u0159e. Kartrid\u017e je implementov\u00e1na jako disk s jednou stopou, na kter\u00e9 je 192 sektor\u016f o velikosti 0,5K. Ka\u017ed\u00fd sektor m\u00e1 hlavi\u010dku o d\u00e9lce 4 bajty, ve kter\u00e9 je nulov\u00fd flag, \u010d\u00edslo kartrid\u017ee (2 bajty), \u010d\u00edslo sektoru a kontroln\u00ed sou\u010det. Za hlavi\u010dkou n\u00e1sleduje 512 bajt\u016f dat, kter\u00e1 jsou uvedena flagem o hodnot\u011b FFh a zakon\u010dena kontroln\u00edm sou\u010dtem. \u010c\u00edslo kartrid\u017ee je n\u00e1hodn\u00e9 \u010d\u00edslo, kter\u00e9 je generov\u00e1no p\u0159i form\u00e1tov\u00e1n\u00ed a slou\u017e\u00ed BIOSU k rozpozn\u00e1n\u00ed v\u00fdm\u011bny kartrid\u017ee bez po\u010d\u00edt\u00e1n\u00ed kontroln\u00edch sou\u010dt\u016f adres\u00e1\u0159e BDOSem. Z d\u016fvodu co nejv\u011bt\u0161\u00ed optimalizace p\u0159\u00edstupov\u00fdch dob p\u0159i sekven\u010dn\u00edch operac\u00edch nen\u00ed pevn\u011b stanoven parametr p\u0159e\u010d\u00edslen\u00ed sektor\u016f. BIOS p\u0159e\u010d\u00edslen\u00ed neprov\u00e1d\u00ed v\u016fbec, sekvence po sob\u011b n\u00e1sleduj\u00edc\u00edch \u010d\u00edsel sektor\u016f je generov\u00e1na p\u0159i form\u00e1tov\u00e1n\u00ed kartrid\u017ee a parametr p\u0159e\u010d\u00edslen\u00ed je voliteln\u00fd. U\u017eivatel tak m\u016f\u017ee p\u0159\u00edstupov\u00e9 doby optimalizovat na minimum, s ohledem na druh prov\u00e1d\u011bn\u00e9 pr\u00e1ce a konkr\u00e9tn\u00ed \u010dasov\u00e9 konstanty sv\u00fdch mechanik Microdrive. Ty se v\u0161ak, bohu\u017eel, u jednotliv\u00fdch kus\u016f li\u0161\u00ed. Jako nejv\u00fdhodn\u011bj\u0161\u00ed se uk\u00e1zalo p\u0159e\u010d\u00edslen\u00ed po dvou u kartrid\u017ei ur\u010den\u00fdch pro z\u00e1znam programu a po dvan\u00e1cti pro sekven\u010dn\u00ed soubory, kter\u00e9 vyhovuje v\u0161em mechanik\u00e1m.<\/p>\n\n\n\n<p>Kartrid\u017e je m\u00e9dium, na kter\u00e9m se po form\u00e1tov\u00e1n\u00ed t\u00e9m\u011b\u0159 v\u017edy vytvo\u0159\u00ed n\u011bjak\u00e9 vadn\u00e9 sektory, zp\u016fsoben\u00e9 p\u0159inejmen\u0161\u00edm slepkou p\u00e1skov\u00e9 smy\u010dky. Proto je z\u00e1pis do t\u011bchto vadn\u00fdch sektor\u016f znemo\u017en\u011bn t\u00edm, \u017ee po n\u011bkoliker\u00e9m testu kartrid\u017ee je do adres\u00e1\u0159e zaps\u00e1n syst\u00e9mov\u00fd, proti z\u00e1pisu chr\u00e1n\u011bn\u00fd soubor, kter\u00fd obsahuje v\u0161echny vadn\u00e9 sektory. Tento soubor je zaznamen\u00e1n pod \u010d\u00edslem neexistuj\u00edc\u00edho u\u017eivatele 31, na kter\u00e9 syst\u00e9m proto nijak nereaguje.<\/p>\n\n\n\n<p>Na kartrid\u017e je mo\u017eno v ide\u00e1ln\u00edm p\u0159\u00edpad\u011b zaznamenat a\u017e 95kB dat, z \u010deho\u017e adres\u00e1\u0159 m\u00e1 velikost 1kB (2 sektory). T\u00edm je omezen maxim\u00e1ln\u00ed po\u010det soubor\u016f zaznamenan\u00fdch na jedn\u00e9 kartrid\u017ei na dvaat\u0159icet, co\u017e ale b\u011b\u017en\u011b posta\u010duje.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Operace \u010dten\u00ed <\/strong><\/h4>\n\n\n\n<p>Sekven\u010dn\u00ed \u010dten\u00ed sektoru je nej\u010dast\u011bji prov\u00e1d\u011bn\u00e1 operace. Mus\u00ed proto pracovat co nejrychleji. Prov\u00e1d\u00ed se tak, \u017ee p\u0159i po\u017eadavku na \u010dten\u00ed se nejd\u0159\u00edve testuje, zda dan\u00fd sektor se u\u017e nevyskytuje v p\u0159\u00edstupov\u00e9m bufferu (ve valn\u00e9 v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f tomu tak je). Kdy\u017e ano, sektor se p\u0159ed\u00e1 volaj\u00edc\u00edmu programu a pochopiteln\u011b s mechanikou Microdrive nen\u00ed nijak manipulov\u00e1no. Pouze p\u0159i operaci otv\u00edr\u00e1n\u00ed a zav\u00edr\u00e1n\u00ed souboru (p\u0159\u00edstup do adres\u00e1\u0159e) se hl\u00edd\u00e1, zda mezit\u00edm kartrid\u017e n\u011bkdo nevym\u011bnil. Pokud by se prov\u00e1d\u011bl kontroln\u00ed sou\u010det adres\u00e1\u0159e, jako u standardni CP\/M, trvalo by to nejm\u00e9n\u011b cel\u00fd jeden ob\u011bh p\u00e1sku. Proto tato kontrola spo\u010d\u00edv\u00e1 v p\u0159e\u010dten\u00ed prvn\u00ed hlavi\u010dky sektoru a porovn\u00e1n\u00ed n\u00e1hodn\u00e9ho \u010d\u00edsla kartrid\u017ee s \u010d\u00edslem ulo\u017een\u00fdm v pam\u011bti. Jestli\u017ee se \u010d\u00edslo neshoduje, jsou vypr\u00e1zdn\u011bny p\u0159\u00edslu\u0161n\u00e9 p\u0159\u00edstupov\u00e9 buffery dan\u00e9 mechaniky a \u010dten\u00ed prob\u00edh\u00e1 p\u0159\u00edmo z kartrid\u017ee. Cel\u00fd test v\u00fdm\u011bny netrv\u00e1 d\u00e9le ne\u017e asi 150 ms. Aby v\u0161ak nedoch\u00e1zelo k zbyte\u010dn\u00e9mu zdr\u017eov\u00e1n\u00ed, tento test se neprov\u00e1d\u00ed v\u017edy. Jeho \u010dinnost je vypu\u0161t\u011bna v p\u0159\u00edpad\u011b, \u017ee posledn\u00ed operace \u010dten\u00ed nebo z\u00e1pisu na dan\u00e9 mechanice neprob\u011bhla p\u0159ed v\u00edce ne\u017e dv\u011bma sekundami. Je toti\u017e zji\u0161t\u011bno, \u017ee d\u0159\u00edve ne\u017e za zm\u00edn\u011bn\u00e9 dv\u011b sekundy nen\u00ed mo\u017eno kartrid\u017e vym\u011bnit.<\/p>\n\n\n\n<p>Jin\u00e1 situace nast\u00e1v\u00e1, kdy\u017e dan\u00fd sektor nen\u00ed v bufferu nalezen. Pak se uvoln\u00ed ta \u010d\u00e1st bufferu, kter\u00e1 je v dan\u00e9 chv\u00edli relativn\u011b nejm\u00e9n\u011b pot\u0159ebn\u00e1 a do takto vznikl\u00e9ho m\u00edsta se na\u010dte sektor z kartrid\u017ee, aby se mohl posl\u00e9ze p\u0159edat volaj\u00edc\u00edmu programu.<\/p>\n\n\n\n<p>U syst\u00e9mu 4.0 s roz\u0161\u00ed\u0159enou pam\u011bt\u00ed je nav\u00edc ka\u017ed\u00e1 operace \u010dten\u00ed n\u00e1sledov\u00e1na logick\u00fdmi procedurami, jejich\u017e c\u00edlem je co nejv\u00edce minimalizovat doby spojen\u00e9 se \u010dten\u00edm souboru. I kdy\u017e nen\u00ed po\u017eadov\u00e1na \u017e\u00e1dn\u00e1 dal\u0161\u00ed operace \u010dten\u00ed a b\u011b\u017e\u00ed hlavn\u00ed program, BIOS si p\u0159es p\u0159eru\u0161en\u00ed zapl\u0148uje p\u0159\u00edstupov\u00fd buffer dal\u0161\u00edmi sektory z otev\u0159en\u00e9ho souboru, dokud se buffer zcela nezapln\u00ed, nebo dokud po\u010det sektor\u016f nep\u0159es\u00e1hne hodnotu 16. T\u00edm je zaji\u0161t\u011bno, \u017ee \u010dten\u00ed souboru z mechaniky se o 8 kilobajt\u016f \u201ep\u0159edch\u00e1z\u00ed\u201c p\u0159ed vlastn\u00edmi po\u017eadavky na \u010dten\u00ed a odezva BIOSu na po\u017eadavek \u010dten\u00ed je velmi rychl\u00e1. Jedn\u00e1 se jen o p\u0159em\u00edst\u011bn\u00ed dat v pam\u011bti RAM.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Operace z\u00e1pisu <\/strong><\/h4>\n\n\n\n<p>Z\u00e1pis je podobn\u011b uzp\u016fsoben velk\u00fdm \u010dasov\u00fdm n\u00e1rok\u016fm, jako \u010dten\u00ed. V\u011bt\u0161inou je uskute\u010dn\u011bn tak, \u017ee je uvoln\u011bna nejm\u00e9n\u011b pot\u0159ebn\u00e1 \u010d\u00e1st bufferu a do t\u00e9to \u010d\u00e1sti je zapisovan\u00fd sektor ulo\u017een. V p\u0159\u00edslu\u0161n\u00fdch tabulk\u00e1ch se zap\u00ed\u0161\u00ed informace o tom, \u017ee dan\u00fd sektor m\u00e1 b\u00fdt zaps\u00e1n a \u0159\u00edzen\u00ed se p\u0159ed\u00e1 hlavn\u00edmu programu, jako kdyby z\u00e1pis ji\u017e byl hotov. Vlastn\u00ed zaps\u00e1n\u00ed sektoru provede BIOS pozd\u011bji, nej\u010dast\u011bji p\u0159es p\u0159eru\u0161en\u00ed. N\u011bkdy v\u0161ak je tak\u00e9 operace z\u00e1pisu provedena jako vedlej\u0161\u00ed \u00fa\u010dinek operace \u010dten\u00ed v okam\u017eiku, kdy je p\u0159i \u010dten\u00ed nalezen sektor, kter\u00fd m\u00e1 b\u00fdt zaps\u00e1n. Nikdo se v\u0161ak nemus\u00ed ob\u00e1vat, \u017ee by nap\u0159. p\u0159i v\u00fdpadku s\u00edt\u011b nem\u011bl posledn\u00ed data zaznamen\u00e1na, proto\u017ee syst\u00e9m v\u0161echny po\u017eadovan\u00e9 z\u00e1pisy provede v\u011bt\u0161inou ihned, nejpozd\u011bji v\u0161ak do t\u0159iceti sekund od vlastn\u00edho po\u017eadavku.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Pr\u00e1ce s p\u0159\u00edstupov\u00fdmi buffery <\/strong><\/h4>\n\n\n\n<p>Jak ji\u017e bylo vysv\u011btleno, \u010dten\u00ed a z\u00e1pis sektoru neprob\u00edh\u00e1 p\u0159\u00edmo, ale p\u0159es p\u0159\u00edstupov\u00e9 buffery obecn\u011b r\u016fzn\u00fdch d\u00e9lek, kter\u00e9 si syst\u00e9m m\u011bn\u00ed podle pot\u0159eby. Po zaveden\u00ed syst\u00e9mu a n\u011bkolika minut\u00e1ch pr\u00e1ce syst\u00e9mu jsou pochopiteln\u011b v\u0161echny buffery zcela zapln\u011bny a syst\u00e9m mus\u00ed za\u010d\u00edt \u0161etrn\u011b hospoda\u0159it s m\u00edstem buffer\u016f. Tato strategie byla n\u011bkolikr\u00e1t m\u011bn\u011bna a zkou\u0161ena, ne\u017e byl nalezen jej\u00ed definitivn\u00ed tvar.<\/p>\n\n\n\n<p>Je-li po\u017eadov\u00e1na operace \u010dten\u00ed nebo z\u00e1pisu a nen\u00ed-li dan\u00fd sektor v bufferu nalezen, za\u010dne BIOS hledat, kter\u00fd sektor v bufferu relativn\u011b nejm\u00e9n\u011b pot\u0159ebuje. Cel\u00fd postup se li\u0161\u00ed podle toho, zda sektor, pro n\u011bj\u017e uvol\u0148ujeme m\u00edsto, n\u00e1le\u017e\u00ed adres\u00e1\u0159i \u010di nikoli. M\u00e1-li sektor \u010d\u00edslo 0 nebo 1, tedy pat\u0159\u00ed adres\u00e1\u0159i a pro z\u00edsk\u00e1n\u00ed pot\u0159ebn\u00e9ho m\u00edsta bude vypu\u0161t\u011bn sektor: <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Neadres\u00e1\u0159ov\u00fd sektor, kter\u00fd byl ale u\u017e volaj\u00edc\u00edm programem p\u0159e\u010dten nebo zaps\u00e1n cel\u00fd (to znamen\u00e1, \u017ee byly p\u0159e\u010dteny nebo zaps\u00e1ny v\u0161echny \u010dty\u0159i subsektory tohoto sektoru, nebo\u0165 fyzick\u00fd sektor m\u00e1 d\u00e9lku 512 bajt\u016f a logick\u00fd sektor jen 128). <\/li><li>Neadres\u00e1\u0159ov\u00fd sektor, z n\u011bho\u017e se pouze \u010detlo. <\/li><li>Jak\u00fdkoli sektor, z n\u011bho\u017e se pouze \u010detlo. <\/li><li>Nebyla-li \u017e\u00e1dn\u00e1 z p\u0159edchoz\u00edch \u010dinnosti \u00fasp\u011b\u0161n\u00e1, nastane operace honosn\u011b nazvan\u00e1 ,, aktivn\u00ed \u010dasov\u00fd v\u00fdb\u011br\u201c. <\/li><\/ol>\n\n\n\n<p>O co se vlastn\u011b jedn\u00e1. V t\u00e9to situaci, kter\u00e1 v danou chv\u00edli znamen\u00e1 zastaven\u00ed pr\u00e1ce hlavn\u00edho programu, je t\u0159eba n\u011bjakou \u010d\u00e1st bufferu co nejrychleji uklidit. Proto\u017ee v\u0161echny sektory v bufferu byly hlavn\u00edm programem zaps\u00e1ny, ale na kartrid\u017ei je\u0161t\u011b nejsou, je nutno n\u011bjak\u00fd sektor rychle zaznamenat. Proto se spust\u00ed motor jedn\u00e9 mechaniky Microdrive (pokud ov\u0161em n\u011bjak\u00e1 ji\u017e neb\u011b\u017e\u00ed) a hled\u00e1 se n\u011bjak\u00fd sektor, kter\u00fd m\u00e1 b\u00fdt zaps\u00e1n. Je-li nalezen, z\u00e1pis se provede a takto uvoln\u011bn\u00e9 m\u00edsto je vyu\u017eito pro jin\u00fd sektor. P\u0159i v\u00fdb\u011bru mechaniky, na kterou se p\u0159ebyte\u010dn\u00fd sektor odklid\u00ed, m\u00e1 samoz\u0159ejm\u011b p\u0159ednost mechanika ji\u017e b\u011b\u017e\u00edc\u00ed.<\/p>\n\n\n\n<p>Pokud je zapot\u0159eb\u00ed z\u00edskat prostor pro sektor, kter\u00fd je sou\u010d\u00e1st\u00ed n\u011bjak\u00e9ho souboru, jsou zva\u017eov\u00e1na krit\u00e9ria v tomto po\u0159ad\u00ed: <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>P\u0159edch\u00e1zej\u00edc\u00ed sektor, z n\u011bho\u017e se pouze \u010detlo a je cel\u00fd p\u0159e\u010dten\u00fd volaj\u00edc\u00edm programem. Je to nej\u010dast\u011bj\u0161\u00ed sektor, kter\u00fd V souboru nov\u00e9mu sektoru p\u0159edch\u00e1zel a tud\u00ed\u017e ji\u017e s nejv\u011bt\u0161\u00ed pravd\u011bpodobnost\u00ed nebude \u010dten. <\/li><li>Sektor, z n\u011bho\u017e se pouze \u010detlo a je p\u0159e\u010dten\u00fd cel\u00fd. <\/li><li>Jak\u00fdkoli sektor, z n\u011bho\u017e se pouze \u010detlo<\/li><li>Aktivn\u00ed \u010dasov\u00fd v\u00fdb\u011br.<\/li><\/ol>\n\n\n\n<p>Proto\u017ee BIOS mus\u00ed obsluhovat mechaniky Microdrive na nejni\u017e\u0161\u00ed mo\u017en\u00e9 \u00farovni, star\u00e1 se i o zap\u00edn\u00e1n\u00ed a vyp\u00edn\u00e1n\u00ed pohonn\u00fdch motork\u016f. Jeliko\u017e tato operace trv\u00e1 zhruba 18 ms, je vylou\u010deno s motorkem manipulovat po ka\u017ed\u00e9 operaci \u010dten\u00ed nebo z\u00e1pisu. Motorky se proto zap\u00ednaj\u00ed okam\u017eit\u011b, je-li to nutn\u00e9, av\u0161ak jejich vyp\u00edn\u00e1n\u00ed je zpo\u017ed\u011bn\u00e9, tak jak to d\u011blaj\u00ed diskov\u00e9 \u0159adi\u010de. Proto Microdrive u\u017e tak \u010dasto neblikaj\u00ed a neprov\u00e1d\u011bj\u00ed z\u00e1znam a \u010dten\u00ed s op\u011btovn\u00fdm zap\u00edn\u00e1n\u00edm a vyp\u00edn\u00e1n\u00edm mechanik jako p\u0159i pr\u00e1ci s origin\u00e1ln\u00edm ROM, ale v\u011bt\u0161inou vypad\u00e1 cel\u00e9 \u010dten\u00ed nebo z\u00e1pis tak, \u017ee se mechanika rozb\u011bhne a po chv\u00edli zastav\u00ed. Krom\u011b jin\u00e9ho to tak\u00e9 prodlu\u017euje nep\u0159\u00edli\u0161 velkou \u017eivotnost mechanik.<\/p>\n\n\n\n<p><strong>Ji\u0159\u00ed Lama\u010d<\/strong>, autor BIOSu, <strong>Daniel Meca<\/strong><br><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u010cl\u00e1nok bol p\u00f4vodne publikovan\u00fd v Amat\u00e9rskom r\u00e1diu 9 \/ 1988 na str. 339-341<\/p>\n\n\n\n<p><strong><br><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>V nede\u013enej retro s\u00e9rii pokra\u010dujeme popisom Lama\u010dovej verzie CP\/M pod\u013ea AR 9\/88.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[],"class_list":["post-930549","post","type-post","status-publish","format-standard","hentry","category-tema-3-software-php"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5aqy8-3U4R","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/930549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=930549"}],"version-history":[{"count":7,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/930549\/revisions"}],"predecessor-version":[{"id":930556,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/930549\/revisions\/930556"}],"wp:attachment":[{"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=930549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=930549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=930549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}