Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Re: dalsi vyvoj emulatoru

Roman Dolejsi SHARP MZ-800



21.9.07, Miroslav Hajda (sharpemupandora.cz) <bomi[doména skryta]>:
Předně si cením toho, že se tu po dlouhé době oběvil i příspěvek k tématu, kvůli kterého byla původně tato diskuze založena... ;-)
______________________________________________________________
> Od: ordoz[doména skryta]
> Datum: 21.09.2007 13:47
>
>Miroslav Hajda ( sharpemupandora.cz) napsal(a):
>> Svého času jsem se také chtěl zapojit do vývoje Zdeňkova emulátoru a
>> kromě některých funkcí jako například vykreslovaní bez DirectX (tehdy
>> kvůli Wine) a bez borderu jsem se rozhodl zkusit rozdělit emulátor na
>> samostatná zařízení (tedy bod 3), která by se k hlavní aplikaci
>> připojovala ve formě modulů... Bohužel jsem tehdy (kromě zpomalení
>> vykreslování) narazil v Delphi na až příliš obtížně překonatelné překážky
>> souvisejícími s bugem RecreateWND... :-(
>>
> Rozdeleni emulatoru na jednotlive periferie je asi prece jen trochu neco
> jineho, nez uvadim v bodu 3. Videl bych to spis tak, ze si v konfiguraci
> emulatoru zaregistruju nejaky socket, do ktereho pak bude emulator v
> taktech posilat obsah MZ sbernice. Jakykoliv externi proces pak muze na
> tomto socketu poslouchat a odpovidat, s tim, ze samozrejme musi akceptovat
> interni hodiny - vse je samozrejme hodne zavisle na tom jak to vlastne nyni
> vypada uvnitr emulatoru.

V mém případě šlo přesně o to, co zde popisuješ... Jednotlivé moduly si měly registrovat obsluhu portů, části paměti, případně obsahy registrů atp.  Cílem bylo umožnit jejich vzájemnou zaměnitelnost a tedy možnost dalšího vývoje bez nutnosti zásahu do hlavního jádra a to včetně vývoje v jiných programovacích jazycích... Podobné cíle měl tehdy se svým emulátorem tuším i Roman Dolejší...


Ahoj,

  mas Mirku pravdu, moje MCE presne takhle funguje. V principu se jedna o cisty modularni framework, ve kterem je vse (CPU, sbernice, periferie) reprezentovano v podobe modulu a jeho vstupne-vystupnich interface. Kazdy modul definuje, co vyzaduje za okolni interface a sam nejaky interface implementuje.

  Ve finale to tedy vypada tak, ze CPU ke sve praci potrebuje pametovy a portovy radic. Pametovy radic ma pripojenu pamet, portovy radic ma do sebe zaregistrovane 'periferie'.

  Kazda periferie (opet modul) je realizovana jednoduchou tridou, ktera odpovida pouze na getMemory() a setMemory() prikazy a vetsinou rozeznava jen par spodnich bitu adresy. Takovou periferii pak muzete pripojit kamkoli.

  Vysledna struktura emulovaneho pocitace je 'slepena' az pri startu podle konfiguracniho souboru (ve formatu XML). Tam pamet a periferie pripojite na spravna mista (v pametovem ci portovem prostoru) a pametovy a portovy radic pak pripojite k CPU.

  Vsechny emulace dostupne v MCE tak casto vyuzivaji spolecne tridy na realizaci periferii - napr. Disciple na ZX i standardni floppy na Sharpu pouzivaji WD297x.java modul. Podobne to je i u casovace (I8254.java), CPU (Z80, i8080) a dalsich ..
  Take podpurne moduly jsou casto vyhodne a znovupouzitelne - modul pro spravu a on-the-fly vymenu ROM obsahu, virtualni reprezentace floppy disku s podporou formatovani ci virtualni reprezentace pasky..

  Ted nemam az tolik casu se emulatorem zabyvat, ale presto jsem byl v tomto roce uz schopen dodelat zakladni emulaci IQ-151, Ondry a dale vylepsovat obecne vlastnosti emulatoru. Mozna do konce roku uvolnim dalsi public verzi :-)

  Kdyby mel nekdo chut, mohu zpristupnit popisy interfacu, dodelat 'javadoc' pro pozadavky dostupnych modulu a popis typicke konfigurace v XML - aby si kazdy mohl sestavit masinu podle vlastniho prani ;-)

  Pripadne prime spolupraci se meze nekladou :-)

Nejake namety?

zatim,
Roman

Zobrazit původní podobu

Vlákno · 2 zprávy

Zobrazit celé vlákno na jedné stránce

  1. Re: dalsi vyvoj emulatoru Miroslav Hajda
  2. Re: dalsi vyvoj emulatoru Roman Dolejsi