SHARP MZ-800 EMULATOR PRO DOS V.1.0 ALFA 007 ============================================= ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º º º OBSAH TOHOTO DOKUMENTU º º º º 1. Slovo uvodem º º 2. Autori º º 3. Hardwarove naroky °º º 4. Otazky FAQ °±º º 5. Zapisnik vyvoje °±²º º °±²Ûº ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 1. SLOVO UVODEM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Dostava se Vam do rukou emulator osmibitoveho pocitace SHARP MZ-800 (MZ-811, MZ-821), ktery je kompatibilni s pocitacem SHARP MZ-700. Jadrem pocitace je procesor ZILOG 80 Advanced (Z80A). Tento emulator vytvoril BOMI (BOMI software) v programovacim jazyku Borland Pascal 7.0. Tento program je freeware a je mozne si k nemu se svolenim autoru stahnout zdrojove kody a modifikovat je. Nyni ale na rovinu : Kdo by v dnesni dobe jeste pouzival nejaky emulator pro 8-bitovy pocitac, ktery se vyskytuje jen v par tisicech kusech a navic pro DOS? Jedine takova skupinka silencu, ktera se sdruzuje pod touto adresou :-] http://mzunity.hyperlink.cz (aspon myslim, ze se tim budou zabyvat) Dale bych Vas take rad upozornil na to, ze jsem zacatecnik, a proto program neni v mnoha smerech vytvoren optimalne. Pokud byste se chteli zapojit do vytvareni tohoto programu napiste mi na muj e-mail: bomi@centrum.cz Nekolik inspirativnich vet : - kterykoli program je zastaraly - kterykoli novy program stoji vice a trva dele - kterykoli program bude rust, az zaplni veskerou pamet, ktera je k dispozici - slozitost programu roste az prekroci schopnost programatora, ktery ho musi udrzovat - je-li program uzitecny, bude se muset predelat - je-li program neuzitecny, vypracuje se k nemu dokumentace z Murphyho zakonu 2. AUTORI ÄÄÄÄÄÄÄÄÄÄÄÙ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Jmeno ³Kontaktni e-mail ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ BOMI software - Miroslav Hajda ³bomi@centrum.cz, hajdam@seznam.cz ZA Software - Zdenek Adler ³zdeneka@seznam.cz, adlerz@post.cz, ³zdeneka@usa.net Emulace Z80 : ³pscardoso@lme.usp.br ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Dale dekujeme dalsim clenum MzUnity za³ pomoc Z. Adlerovi :-) ³ - Pavel Vanek MzUnity³vanek.pavel@post.cz(?) - Feri(?) UMZE³feri@i.am a dalsim ... ? ³ ³ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ þ vsechna prava vyhrazena þ program je volne siritelny þ zakaz uprav bez svoleni autoru ============================================================================== (C) BOMI software 2000 (C)1998,1999 ZA Software, SCAV UZ80 - Z80 emulator by pscardoso@lme.usp.br ============================================================================== 3. HARDWAROVE NAROKY ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Tyto udaje nebyly testovany !! 3.1 Minimalni konfigurace : þ CPU : 286 þ VIDEO : VGA þ HD : ? þ SOUND : - þ MEMORY : 400kb 3.2 Doporucena konfigurace þ CPU : 450 Mhz þ VIDEO : VGA þ HD : ? þ SOUND : - þ MEMORY : 600kb + 1024 EMS 4. OTAZKY FAQ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ D - DOTAZ O - ODPOVED D: Proc nefunguje program "A_TO_SNAD_NE"? O: Chyba neni v emulaci textoveho rezimu, nybrz v chybe emulace obvodu casovace 8253 a preruseni. Pokusim se s tim neco udelat. D: Proc se obcas v modu MZ700 objevi misto fontu balast? O: Nevim, snazil jsem se tento jev minimalizovat, ale porad se jeste objevuje. D: Proc se mi mezi znaky v textovem rezimu objevuji pruhy? O: Hm, vase graficka karta je jina, nez pro kterou jsem program testoval. Budu se snazit s tim neco udelat. 5. ZAPISNIK VYVOJE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ V tomto zapisu se vyskytuje jak zaznam vyvoje emulatoru spolecnosti BOMI, tak vyvoj puvodniho emulatoru Zdenkem Adlerem a vyvoj jednotky procesoru Z80, ktery vytvoril pscardoso@lme.usp.br 5.1 Vyvoj spolecnosti BOMI software Vysvetlivky : [þ] Dulezita poznamka [+] Nova funkce [*] Vylepsena funkce [-] Odstranena chyba 27.10-28.10 : [*] Dissasembler 24.10.2000 : [*] Grafika MZ-800 [+] Dissasembler 20.10.2000 : [*] Grafika MZ-800 8.10.2000 : [þ] Konecne to zacina vypadat trochu funkcne... [-] Paleta MZ700 pri emulaci [*] Grafika MZ-800 6.10.2000 : [*] Nastaveni [*] Grafika MZ-800 [-] Detekce Cestiny [+] Moznost spusteni s parametrem souboru MZF [+] Asociace MZF souboru pro Windows 4.10.2000 : [-] Rezim MZ-700 [+] FAQ :-) 1.10.2000 : [+] Zmena fontu v Textovem rezimu 28.9.2000, 29.9.2000 : [+] Podpora nekterych funkci v dialogu konfigurace 26.9.2000 : [-] Rezim Mz-700 25.9.2000 : [*] Okno Nastaveni 10.9.2000 18.9.2000 : [+] Okno Nastaveni 5.9.2000 - 10.9.2000 : [-] Mapovani pameti v modu 800 [*] Obnova obrazovky [-] Textovy rezim bez emulace do grafiky [-] detekce a nastaveni cestiny 4.9.2000 : [-] Opraveny barvy v logu [-] Opraveno vykreslovani znaku v modu 700 Rada: ZSoft [+] Podpora ceskych znaku Configuration|Czech_Ascii [+] Menu Tools: Kalkulacka, Ascii tabulka [+] Menu Window 3.9.2000 : [þ] Prejmenovani jednotek [+] Pridano logo BOMI [+] Pridana funkce Debug|User_Screen 28.8.2000, 29.8.2000 : Ver. 1.0.1 [þ] Oznaceni verze [*] Upraven debuger : zmena barvy a vykreslovani [-] Pri zruseni nacitani se vrati Break [+] Obnova obrazovky [*] Zrychleni vykreslovani emulace rezimu TEXT 40x25 [-] Zruseno zrychlene vykreslovani - chyba [*] Zachovani adresare pri nacitani [+] Castecne vykreslovani MZ-800 [þ] Objeveny chyby v nacitani souboru MZ800, emulace KEYB 27.8.2000 : [þ] Konecne jsem si zahral par her pro MZ-700 [+] Umoznen Reset AltF8 a CtrlReset CtrlAltF8 [-] Obnoveno nacitani MZF souboru [-] Zobrazeni souboru CTIMNE.TXT jako TScroller [+] Zastupci na stranky MZUnity a BOMI 24.8.2000 : [-] Castecne obnoveni cteni souboru MZF 22.8.2000 : [+] Zobrazeni informaci CTIMNE.TXT - pouzit TEditor (funguje pouze v chranenem rezimu) 20.8.2000 : [+] Okno Debugeru [-] Uprava pristupu do pameti : Funguje Monitor Rada: ZSoft [-] Menu Debug|Run a Debug|Reset [-] Vykreslovani textovych znaku na obrazovku 19.8.2000 : [þ] Konecne to pise na obrazovku [*] Rezim emulace 700 modu obrazovky - pouzito 320x200x256 MCGA [+] Klavesnice tak trochu funguje :) 9.8.2000, 10.8.2000, 13.8.2000, 15.8.2000 : [þ] Hledani chyb a upravy jadra 8.8.2000 : [þ] Prvni pokusne spusteni - nebezi to :( 7.8.2000 : [þ] Tak zase pokracujeme : izolace puvodnich soucasti [+] Pokus o vytvoreni emulace rezimu 40x25 jako grafiky - moje grafika nezvlada tento rezim pod Windowsem :( Trio S3 V64+ [*] jednotka O8255, Gdc, Mz800Sys 9.7.2000 : [þ] jak je mozne, ze to vubec fungovalo ? [*] jednotky Gdc, Mz800Sys, O8253, O8255, MzMem, Global [+] jednotka Keyb [+] okno Warning 8.7.2000 : [þ] aaaaaaa !!! v tom je ale chaos, vubec se v tom nevyznam ... [+] jednotka O8253 - casovac [+] jednotka Gdc 27.6.2000 : [+] Jednotka RAM - zpracovani pameti 24.6.2000 : [þ] implementovan emulator Zdenka Adlera - obrovske problemy :-) vychazejici z naproste rozdilnosti bezneho a objektoveho programovani a stylu ve forme programu vubec, odebrany nektere soucasti (menu,load), vlastni emulace na puvodni bazi [*] nacitani MZF pomoci TV primo v emulatoru [+] okno About [+] funkce RUN do 23.6.2000 : [V.0] [þ] Prakticky se jedna pouze o par radku textu [+] zakladni plocha Turbo Vision [+] standartni nacteni souboru *.MZF ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.2 Vyvoj Zdenkem Adlerem Zacatek vyvoje emulatoru: 3.12.1998 - Prvni verze 1.00, zatim je podporovan pouze mod MZ-700 - upravena ROMKA pro rychlejsi start emulatoru (vyhozeho kopirovani CGROM->CGRAM), dale upraveno nahravani z CMT - nedodelana emulace zalohovaneho RD a FD (jenom se tvari, ze jsou pritomny) OVLADANI: ALT+F8 = RESET ALT+F6 = Znovunahrani znakove sady ALT+F4 = DEBUGGER UKONCENI EMULATORU: CTRL+ALT+DEL........zatim... - Dodelana emulace zalohovaneho RD 1MB s SRAM emulaci i bez ni, mozno prepinat - Pridano mapovani pameti v modu MZ-800 - Pokusna verze grafiky 320X200, jedna rovina(cernobile), zapis single write - Zkouska modu 640X200 cernobile, znaky jsou obracene - otocit zapis bytu do VRAM VGA karty - Mod 640X200 cernobile funkcni, neobraci znaky, FET uz konecne funguje... - Castecne zrychleni vystupu na obrazovku modu MZ-800 prepisem do ASM - Znacne urychlena doba, za kterou se "vytvori" ramdisk - Pridan zapis do vsech ctyr bitovych rovin EGA/VGA, ale barvy jsou spatne... - Procedury zapisu do graficke karty v modu 320X200 a 640X200 byly slouceny... - Po prepnuti do DEBUGGERU a zpet je zatim treba provest reset pomoci ALT+F8 - Dodelano ovladani borderu - akorat to trochu vic blika... 14.2.1999 - Pridana pokusna jednokanalova PSG emulace, chybi melody synchronizace - Poopraveno preruseni v IM2 - nizsi byte z PIO 20.2.1999 - Emulace PSG predelana pro zvukovou kartu SB kompatibilni, pres MIDI - 3 kanaly (trochu to chrochta...), sumovy generator neni podporovan... 21.2.1999 - Kompletne prekopany debugger - zahrnuje disassembler, zobrazuje registry Z80, graficky mod, systemovy mod a vektor preruseni PIO... 24.2.1999 - Uz konecne funguje BASIC !!! Proc ale porad spousti "AUTO RUN" ??? Neblika mi ale kurzor, proc ??? 26.2.1999 - Zprovoznena emulace tiskarny bud do souboru, nebo na LPT1 !!! 29.2.1999 - Pridany zapisove mody pro videokartu ..... proc to dela ty pruhy??? 3.3.1999 - Dodelana moznost editovat RAM SHARPa, editace ROM neni umoznena. Zapis se provadi v hexdec forme a je vzdy potreba napsat vyssi i nizssi cast bytu, jinak nejde z editoru pomoci ESC vyskocit. 4.3.1999 -V menu doplnena volba mapovani pameti, a volba emulace PSG bud na PC speaker nebo na zvukovou kartu ADLIB / Sounblaster kompatibilni. 6.3.1999 -Z prikazove radky debuggeru jde zadat ctyrmistne cislo, po jehoz potvrzeni se nastavi soucasne obrazovka s disasemblovanou pameti, tak i registr PC. Take pridana moznost pohybovat se v disasemblovanych instrukcich pomoci sipek nahoru a dolu. Pozor ale na sipku nahoru!!! registr PC se totiz pritom snizi pouze o jednicku a nektere instrukce zaberou vice hodinovych cyklu!!! Proto je nejlepsi sipkou nahoru pro jistotu povyjet aspon 4X. 7.3.1999 -Byla opravena silene pomala instrukce LDIR, ktera kdyz se pouzila v programu ke kopirovani do PCGRAM, tak to trvalo silene dlouho. Proto bylo vyhozeno obnovovani obrazovky v modu MZ-700 pri kazdem zapisu do PCGRAM. Ma to jedinou nevyhodu: kdyz se nejdriv zapisou znaky na obrazovku a teprve potom se meni znakova sada, tak to asi nebude to prave... Naprava je ale mozna stiskem ESC a nasledovnym spustenim emulace pomoci F9. Soucasne s timto byla horni ROM SHARPa vracena do puvodniho stavu (...bylo tam vyhozeno kopirovani CGROM-> PCGRAM). -Nove pridan zvukovy vystup, u nehoz se provadelo maskovani audia z CTC0 pres porty D2 a D3 u interface 8255. Zatim je pouze na PC SPEAKER bez ohledu na to, jak je nastaven zvukovy vystup v DEBUGGERU. Z DEBUGGERU je ho mozno pouze vypnout. 10.3.1999 -Spraveny zapisove mody do VGA karty. Chyba byla v tom, ze pred samotnym zapisem do videokarty se musi provest cteni naprazdno pro naplneni vnitrnich latch registru. Porad ale zapisove mody nefunguji na 100% ********************** ***** Verze 3.00 ***** ********************** 15.3.1999 -Opravena hloupa chyba v mapovani pameti. Pri prepnuti do modu 320X200 totiz VRAM prekryva ramku pouze od 8000h do 9FFFh a v modu 640X200 prekryva celou oblast od 8000h do BFFFh. Uz zase funguje o neco vic programu........ :-) -Spravena chyba pri zapisu do konfiguracniho souboru pri zapisu udaje o emulaci PSG. 19.3.1999 -Pri nahravani MZF souboru zustava v tomtez adresari... -Zkraceny nektere rutiny pro vystup na obrazovku 21.3.1999 -Opravena chybicka pri nahravani z CMT, pri nemz je nutno nahrat celou hlavicku (128 bytu) do pameti od adresy 10f0. Ja jsem z hlavicky vybiral jenom udaje o souboru a jeho nazev, proto to zlobilo... 22.3.1999 -Spraveno zadavani adresy z prikazove radky debuggeru. Cislo je ted mozno napsat jedno az x mistne, pricemz kdyz ma mene mist nez ctyri, tak si ho doplni nulami. Kdyz ma mist vic jak ctyri, tak je orizne. Pr: 38 ---> 0038 00F000 --> F000 -Doplnen system napovedy, ktery jde z debuggeru vyvolat pomoci F1, nebo z prikazove radky napsanim HELP. -Chyba pri mapovani pameti v modu MZ-700!!! Zmatek pri mapovani VRAM, CGROM a PCGRAM. Opravit !!!!!!!!!!!!!!!!!!!!!!!!!! 23.3.1999 - Spravena chyba mapovani v modu 700 (aspon to tak vypada) - Kdyz zlobi klavesnice, tak nekdy postaci si prepnout NumLock do opacneho stavu. 1.4.1999 - Jdeme na vojnu ... :-( 21,22.8.1999 - Pridana emulace radice FDD WD2797, zatim cte jenom diskety 320KB 3,5", IPLDISK jde spustit, BASIC uz se ale nerozjede, CPM zustane v cerne obrazovce. - veskere cteci operace s FDD uz funguji, zapis jeste neni podporovan 20.12.1999 - Opravena chyba pri mapovani pameti, kdy se to podelalo tehdy, kdyz jsme se 2X po sobe prepli do stejneho modu (700 i 800) 12.1.2000 - opravena chyba v emulaci Z80 v instrukci CPIR, uz funguje TURBO COPY 20.1.2000 -Opravena chyba emulace CMT 5.2.2000 - MZ700 mod predelan do textoveho rezimu, vice nez 2X rychlejsi!!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.3 Vyvoj emulace Z80 Last changes 18/JAN/2000 - Opravena instrukce CPI, uz funguje Turbo Copy Z.Adler 30/MAY/1998 - Fixed LD A, R instruction. Now spectrum snapshot Cobra is working. 29/MAY/1998 - Fixed the IN R,(C) instruction (the 16 bit port address needs to be BC). Now ZXSpectrum keyboard is working. 21/MAY/1998 - Public release (version 0.21) 21/MAY/1998 - Fixed R register incremention. Now ladybug works. 14/MAY/1998 - Fixed IN R,(X) (this instruction affect flags! 07/MAY/1998 - Fixed LDIR, CPIR, OTIR, INIR, etc (now Galaxians bee attack us again.) 06/MAY/1998 - Public release (version 0.2) 04/MAY/1998 - implementation of INI, IND, INIR, INDR 03/MAY/1998 - implementation of CPI, CPD, CPIR, CPDR 02/MAY/1998 - implementation of OUTI, OTIR, OUTD, OTDR 30/APR/1998 - fixed bugs in CCF 28/APR/1998 - fixed LDIR, LDDR functions (problems with delphi) 27/APR/1998 - now EvalXXXInstr preservs (e)si, (e)di, (e)bx. 16/APR/1998 - First public release (version 0.1) Copyright (C) BOMI software 2000