Popis emulatoru pripravku SEMAFOR 1. Uvod ~~~~~~~ Program EMULATOR je urcen k emulaci hardwaroveho pripravku SEMAFOR, coz je model krizovatky, pouzivane pri vyuce predmetu UPS na FEL CVUT. Jelikoz pripravek SEMAFOR je k dispozici jen v pocitacovych laboratorich, student muze sve programy testovat pouze v techto laboratorich. Tento nedostatek resi prave tento emulator. Program EMULATOR po svem spusteni monitoruje jemu predany testovany program a "odchytava" vsechny prime pristupy na sledovany port paralelniho rozhrani LPT1 (porty 378h a 379h). Tyto pristupy nahrazuje emulaci chovani pripravku, pricemz soucasne zobrazuje prislusny stav pripravku na obrazovku, kde je zobrazen nakres krizovatky, podobny pripravku SEMAFOR. 2. Navod k pouziti ~~~~~~~~~~~~~~~~~~ Program se spusti prikazem "EMULATOR program" (bez uvozovek), kde program je jmeno programu, za jehoz behu se ma emulovat pripravek. Tj. napr. "EMULATOR semaf1". Po zadani tohoto prikazu se zobrazi obrazek krizovatky a emulovany program je spusten. Za behu emulatoru funguji nasledujici klavesy: ESC Ukonceni emulovaneho programu Sipka nahoru Emulace stisku tlacitka v severni casti krizovatky Sipka vlevo Emulace stisku tlacitka v zapadni casti krizovatky Sipka dolu Emulace stisku tlacitka v jizni casti krizovatky Sipka vpravo Emulace stisku tlacitka ve vychodni casti krizovatky F1-F4 Emulace prepnuti vypinace 1-4 Po ukonceni emulovaneho programu se emulator ukonci. Pokud byly v prubehu emulace zjisteny nejake chyby (napr. cteni z portu urceneho pro vystup), je jeste zobrazen informace o detekovanych chybach. 3. Technicke informace ~~~~~~~~~~~~~~~~~~~~~~ Program EMULATOR funguje na principu krokovani programu, ktere je na procesorech rady x86 umozneno nastavenim priznaku TF v registru (E)Flags. Timto zpusobem je sledovana kazda instrukce provadena programem. Pokud je zachycena instrukce "OUT DX,AL", nebo "IN AL, DX", ktera pristupuje na jeden ze sledovanych portu, neni provedena, ale je emulovan jeji vysledek s pouzitim HW pripravku. Emulator na sebe presmerovava vektory preruseni INT1 (krokovani) a INT9 (klavesnice). Program vyzaduje procesor minimalne 80286 a MSDOS nejmene verze 5.0. Z principu funkce programu je zrejme, ze je nezbytne nutne, aby program: * nevynuloval priznak TF v registru (E)Flags Pozn: Nektere sluzby, volane pomoci preruseni (napr. INT 16h) nuluji tento priznak! Pokud pouzivate takovou funkci, musite sami zajistit obnoveni hodnoty TF=1. * na sledovane porty pristupoval primo, tj. pomoci instrukci OUT DX, AL a IN AL, DX. Pristup napr. pomoci sluzeb BIOSu (pres INT 17h) neni sledovan a bude ignorovan. * nepresmeroval preruseni INT1, popr. INT9. Pozn: Preruseni INT1 je pouzivano vetsinou debuggeru, takze prakticky neni mozno program bezici pod emulatorem jeste odladovat dalsim debuggerem (napr. pomoci TD) * nezmenil videorezim - emulator pred spustenim programu nastavi videorezim na 320x200x256 (rezim 13h) a nastavi vlastni paletu barev. Pokud vas program zmeni videorezim, nebude na obrazovce zobrazovan stav pripravku! V soucasne verzi je nekolik omezeni, na ktera je treba upozornit. Je mozne, ze v dalsi verzi budou tato omezeni odstranena: * Na sledovane porty nelze pristupovat pomoci 16-bitoveho pristupu, tj. pomoci instrukci OUT DX, AX, resp. IN AX, DX. * Jsou podporovany pouze programy typu EXE, programy typu COM jsou emulatorem odmitnuty. 4. Potrebne soubory ~~~~~~~~~~~~~~~~~~~ K programu EMULATOR patri nasledujici soubory: EMULATOR.EXE (8944 byte) Samotny program CROSS.RAW (64000 byte) Obrazek krizovatky pouzivany programem EMULATOR.TXT (4522 byte) Tento dokument 5. Chyby v programu ~~~~~~~~~~~~~~~~~~~ Jelikoz se jedna o prvni verzi programu, je mozne, ze obsahuje nejake chyby. Pokud nejakou chybu odhalite, dejte mi prosim vedet. 6. Sireni programu ~~~~~~~~~~~~~~~~~~ Tento program je FREEWARE. Muzete jej libovolne kopirovat, za podminky, ze jej budete sirit v nezmenene podobe a vcelku, vcetne tohoto dokumentu. 7. Autor ~~~~~~~~ Autora programu EMULATOR muzete kontaktovat na e-mailove adrese mormegil@centrum.cz --------------------------------------------------------------------------- konec souboru