{"id":889750,"date":"2011-04-16T20:12:00","date_gmt":"2011-04-16T20:12:00","guid":{"rendered":"http:\/\/sindikat.bloguje.sk\/889750-pmd85-a-farbicky.php"},"modified":"2011-04-16T20:12:00","modified_gmt":"2011-04-16T20:12:00","slug":"889750-pmd85-a-farbicky-php","status":"publish","type":"post","link":"https:\/\/sindik.at\/?p=889750","title":{"rendered":"PMD85 a farbicky"},"content":{"rendered":"<p>Tento blogpost sa sice netyka pocitacov zx spectrum alebo didaktik, ale tyka sa HW v oblasti 8bitov a sice, konkretne je rec o Ceskoslovenskom pocitaci PMD85.<\/p>\n<p><!--more--><\/p>\n<p>Kedysi davnejsie som zohnal PMD85-2A, ale nejako sa mi nedarilo naladit obraz (mozno preto, ze nemam rucne ladenie na TV, ale digitalne). No a composite som tiez nic nevidel..\u00a0 len cierna obrazovka a nic viac. <\/p>\n<p>Zvedavost mi nedala a otvoril som ho.\u00a0 a co nevidim z jedneho IO vystiepeny kus tak, ze vytrcal kremik.\u00a0 Tak som zacal zistovat ake IO tam ma byt, kde mi poradil Schotek a napisal mi ze to ma byt 7405 a aj ze to bola standardne odchadzana suciastka, ked niekto zle prepojil kable a tak na vystup prave tejto 7405 priviedol +12V a on od radosti zacal rozhadzovat nozickami ;]<\/p>\n<p>Avsak ani po vymene 7405 sa mi obraz na TV s composite vstupom ziskat nepodarilo. No a kedze som v tej dobe (rok 2007) o panoch bratoch Borikovych nic nevedel a ani sindikat este neexistoval, pmd zostalo v skrini na nejaku dobu.<\/p>\n<p>Potom ale prisiel sindikat a ja som niekedy zaciatkom roka 2011 pmd oprasil a zobral na stretnutie.\u00a0 Ikon uz o tom pisal report, tak len v skratke. Najskor to vypadalo na moc velku hodnotu pullupoveho rezistora, a tak bol signal na composite moc slaby na to aby sme nieco videli.\u00a0 Znizenim odporu rezistora na cca 150ohm (povodny rezistor mal hodnotu tusim 390ohm, alebo nieco podobne) sa konecne objavil vytuzeny napis &#8218;++ Os ready ++&#8216;.\u00a0 Neskor Ikon dostal do opravy iny kus PMD a ten opravoval doma, ale objavili sa unho uplne rovnake syndromy ohladne obrazu na composite.\u00a0 Ikon mi neskor na jabberi oznamil ze prisiel na riesenie problemu, ze ten rezistor bol ok, ze treba jednoducho do vystupu zapojit seriovo 50-100uF kondenzator.\u00a0 Ze aj monitory merkur to tak mali zapojene.\u00a0 A veru mal zasa pravdu, vratil som s5 povodny rezistor a zapojil som kondenzator.<\/p>\n<p>Nuz, ako to uz byva, zrazu ciernobiely composite vystup nestaci. Hlavne, ked vidite ze je na tom 5 koliku zapojenych prilis vela kablikov, aby to bolo len ciernobiele.\u00a0 A tak som dostal od Romana (Borika) linku na dokument &#8222;Identifikacia poruch PMD 85&#8220; a zapojenie PMD&lt;-&gt;SCART kabla.\u00a0 Zapojil som kabel a co nevidiet, obraz bol, ale farby boli ine, v PMD emulatore na RGB su farby 00-zelena, 01-cervena, 10-modra a 11-fialova(ruzova).\u00a0 Mne sa obvavili farby cca taketo: 00-zelena, 01-zlta\/oranzova, 10-tyrkysova a 11-biela.\u00a0 Avsak, stacilo par &#8222;preskrabov&#8220; a prepojek a farby boli take ako mali byt.<\/p>\n<p>No a ako som sa tak hral s tymi farbickami, dostal som napad. Co tak urobit obrazok v ktorom by sa striedali mikroriadky zelenej s mikroriadkami cervenej..\u00a0 vypadalo by to zlto?\u00a0 a ako dostat tyrkysovu?\u00a0 malo by stacit striedat zelenu a modru..\u00a0 no ale co biela?\u00a0 nastastie mame ako &#8222;zakladnu&#8220; farbu aj ruzovu, co by spojenim so zelenou znamenalo nasu vytuzenu bielu.. A tak som oprasil obrazok monoskop, ktory som dal do compa na jednom forevri, prekreslil\/upravil ho (zx ma rozlisenie 256&#215;192, pmd 288&#215;256 a farebne atributy ma zx 8&#215;8 a pmd 6&#215;1), a nahral do pmd (to bola druha story s rozbehavanim nahravania z PC do PMD cez MGFIN, ale nebolo to zas az tak dramaticke..\u00a0 par pokusov a nakoniec to fungovalo ;]).\u00a0 Po spusteni kratkeho programu v asm, ktory preniesol obrazok do videoram (videoram je prekladana, a v medzerach medzi datami videoriadkov sa nachadzaju &#8222;systemove premenne&#8220;, ktore nehodno len tak mirnix-dirnix menit, takze som mal 12k videodat, ktore sa mali rozhodit po 16k adresovom priestore) a s vysledkom som bol viac nez spokojny.<\/p>\n<p>A tak som zacal uvazovat o HW zmiesavaci farieb. Problemom sa javilo hlavne to, ze v jednom pristupe do pamate potrebujeme vycitat 2 farebne atributy (z riadkov nad sebou), co by bez narocnych uprav v casovani pristupu k ram spravit neslo a tak som sa vybral inou cestou.\u00a0 dostal som napad pridat dve (tzv.\u00a0 tienove) 4164, ktorym by som v prihodnej dobe zmenil adresu (oproti adresam na povodnych pamatiach v PMD) tak, aby jedna adresa (povodne pamate) ukazovala na bajt v jednom riadku a druha adresa (pre tienove ram) by ukazovala na bajt pod alebo nad tym prvym bajtom (zalezi ktory mikroriadok sa prave zobrazuje, ci parny alebo neparny).\u00a0 Nastastie pani v TESLE navrhli videoram tak ako navrhli a tak sa spominane adresy lisia prave v jednom bite A6.\u00a0 Cize nam staci nasim tienovym ramkam invertovat A6 a dostaneme na jeden pristup do pamate hodnoty 6tich bitov &#8211; bodova informacia (z povodnych ram) a dve dvojice bitov &#8211; farebna informacia (jedna dvojica z povodnych ram a druha z tienovych).\u00a0 To vsak nie je vsetko.\u00a0 Bolo by nam to dost na nic, keby mali 4164 len jeden datovy vstup\/vystup, bolo by totiz treba viac logiky, pretoze pri zapise do videoram, chceme, aby sa zapisovalo na rovnake adresy v tienovej ram ako normalnej ram, len pri citani chceme A6 invertovat, a keby bol len jeden datovy vstup\/vystup, rozdielne hodnoty na roznych riadkoch by znamenali koliziu na datovej zbernici.\u00a0 Nastastie maju 4164 oddeleny Din od Dout, a aktivny z nich je vzdy len jeden, takze pri pristupe CPU k videoram (je jedno ci citani alebo zapisovani) adresy tienovych ram nechavame rovnake ako adresy povodnych ram, a pri citani videoobvodu (videoobvod nastastie nic nezapisuje ;]) z videoram budeme tienovym ramkam invertovat bit A6.\u00a0 Uvedene vyriesi jedno dvojvstupove hradlo MUX obvodu 74157, na jeden vstup dame povodnu A6&#8242; (multiplexovana A6\/A14\/R6\/R14), na druhy vstup dame negovanu R6 (adresa videoobvodu) (pozn.: teraz ked nad tym uvazujem, malo by stacit pouzit aj negovanu A6&#8242;, pretoze v dobe kedy sa bude vyberat tento druhy vstup, bude A6&#8217;=R6) a ako vyberovy vstup pouzijeme &#8222;(AMUX &amp; VIDEO)&#8220;. Ak je VIDEO=1 tak pristupuje k pamati videoprocesor a ak VIDEO=0 tak, k pamatiam pristupuje CPU. Signal AMUX hovori o tom, ktora cast adresy sa pamati posle (dram maju multiplexovanu adresnu zbernicu, co znamena obrovske setrenie vo velkosti puzdra, ale samozrejme zlozitejsiu obsluhu) ak je AMUX=1 tak sa posiela spodna cast adresy (A7-A0) a ak je AMUX=0 tak sa posiela vrchna cast adresy (A15-A8).<\/p>\n<p>Takze uz vieme na jeden pristup do pamate vybrat potrebne data, uz potrebujeme len colormixer (ako to familiarne nazyvam ;]). Ten vyriesi jeden IO 7400 a jedno dalsie hradlo NAND (v scheme je pouzite volne hradlo z 7410). Podstatou miesania farieb je nasledovne:<\/p>\n<p>1) zlozka R bude =1 prave vtedy, ked aspon jedna z povodnych farieb obsahuje cervenu zlozku (cize aspon jedna z tych dvoch farieb je cervena alebo fialova)<\/p>\n<p>2) obdobne zlozka B bude =1 prave vtedy ked aspon jedna z povodnych farieb obsahuje modru zlozku<\/p>\n<p>3) zlozka G bude =1 prave vtedy ked je aspon jedna z povodnych farieb zelena (a teda neobsahuje ani cervenu a ani modru zlozku)<\/p>\n<p>samotne farebne zlozky su zapamatavane v obvodoch 7474 (v pmd sa pamataju hodnoty z povodnych ram, hodnoty z tienovych ram zapamatavame v pridanom 7474). hodnota z bitu D6 je v schemach na opravy oznacovana ako F1 a hodnota z bitu D7 je oznacovana ako F2, nase &#8222;tienove hodnoty&#8220; oznacime F1&#8242; a F2&#8242;. potom:<\/p>\n<p> R=(F1 or F1&#8242;)=\/(\/F1 and \/F1&#8242;) (negaciu F1 a F1&#8242; mame zadarmo, 7474 ma aj priame vystupy a aj negovane)<br \/> B=(F2 or F2&#8242;)=\/(\/F2 and \/F2&#8242;) (rovnako negaciu F2 a F2&#8242; mame zadarmo)<br \/> G=(\/(F1 or F2)) or (\/(F1&#8242; or F2&#8242;))=(\/F1 and \/F2) or (\/F1&#8242; and \/F2&#8242;)=\/(\/(\/F1 and \/F2) and \/(\/F1&#8242; and \/F2&#8242;))<\/p>\n<p>Co sa logiky &#8222;multicoloru&#8220; tyka, uz mame vsetko. Co nam vsak chyba su koncove stupne, ktore na zaklade R, G a B a signalu MOD vyrobia na vystupe vhodny signal pre SCART. Tu som dost experimentoval a Ikon mi do toho vydatne kecal ;]. Vysledkom je, ze treba pouzit kvalitne tranzistory, osvedcili sa KSY71 a samozrejme potom vhodne doladit odporovymi delicmi.<\/p>\n<p>\u00a0<\/p>\n<p>Prikladam schemu, nejake obrazky prilozim neskor, ked uz budem mat multicolor na plosnom spoji aby sa s pmdckom jednoduchsie manipulovalo ;]<\/p>\n<p style=\"text-align: justify;\"><a href=\"img\/schema.png\"><img loading=\"lazy\" decoding=\"async\" title=\"multikolor schema\" src=\"img\/schema.png\" alt=\"multikolor schema\" width=\"415\" height=\"327\" \/><\/a><\/p>\n<p>-ub<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tento blogpost sa sice netyka pocitacov zx spectrum alebo didaktik, ale tyka sa HW v oblasti 8bitov a sice, konkretne je rec o Ceskoslovenskom pocitaci PMD85.<\/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":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5],"tags":[],"class_list":["post-889750","post","type-post","status-publish","format-standard","hentry","category-tema-2-hardware-php"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5aqy8-3JsO","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/889750","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=889750"}],"version-history":[{"count":0,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/889750\/revisions"}],"wp:attachment":[{"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=889750"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=889750"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=889750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}