Autor ::Libor L.A. Poslaná :: 13.12.2015 18:34:42 Predmet ::Problém s emulátorem - instrukce MVI A,xx
Chlapci, mám problém. Ve vašem emulátoru pro PMD-85 se při krokování programu v jednom konkrétním případě při instrukci MVI A,0FDh přeskočí další dva bajty za touto instrukcí. A program pro i8080 se samozřejmě zbortí. Když změním argument 0FDh na 0h tak to projde ale stane se to opět někde jinde.
Nemáte zkušenosti, zda to nějak nemůže souviset s těmi zas... Windows7? Popřípadě nemáte nějaké doporučení, jak "co nejlépe" spouštět váš emulátor pod tímto systémem?
Správa
Autor ::Roman Bórik Poslaná :: 13.12.2015 19:24:14 Predmet ::Re: Problém s emulátorem - instrukce MVI A,xx
Nuž, to sa mi nejako nezdá, že by sa zle vykonávali inštrukcie pri krokovaní.
Skôr si myslím, že si narazil na známy problém s výpisom listingu inštrukcií v hornom okienku.
Pred aktuálnou inštrukciou (na ktorú ukazuje PC) sa vypisujú dve inštrukcie. Tieto dve inštrukcie sa musia "nejako" dohľadať. Algoritmus, ktorý to robí nie je ideálny (= je zjavne blbý) a tak sa niekedy stane, že sa po vykonaní inštrukcie zobrazí listing nekorektne a zdá sa, že program "skočil" niekde mimo...
Register PC má správnu hodnotu, ale zvýraznený riadok ukazuje "inštrukciu" o 1 byte pred alebo za.
Ďalšie krokovanie sa ale nepozerá na to, čo je zobrazené, ale na skutočnú hodnotu registra PC, takže sa určite vykoná ďalšia inštrukcia správne.
Skús si dať do dolného okienka výpis inštrukcií a register PC. Tam budeš vidieť, že sa inštrukcie krokujú správne.
Už mám nejakú úvahu, ako to (o)upraviť. Napíšem si to do TODO listu.
Správa
Autor ::Tomáš Pecina Poslaná :: 15.12.2015 00:23:28 Predmet ::Re: Problém s emulátorem - instrukce MVI A,xx
>Algoritmus, ktorý to robí nie je ideálny (= je zjavne blbý) a tak sa niekedy stane, že sa po vykonaní inštrukcie zobrazí listing nekorektne a zdá sa, že program "skočil" niekde mimo...
Neřekl bych, že algorithmus máte blbě, ale tato úloha je algorithmicky neřešitelná. Představte si, že by před instrukcí, na kterou ukazuje PC, byla sekvence mnoha bytů 0x3e a jednou 0x00. Nelze rozhodnout, jestli poslední nula je NOP nebo parametr předchozí instrukce MVI; obě varianty jsou možné a nepomůžete si, ani když postoupíte k předchozím bytům, i ty nabízejí dvě stejně validní interpretace.
Správa
Autor ::Libor L.A. Poslaná :: 13.12.2015 20:11:32 Predmet ::Re: Problém s emulátorem - instrukce MVI A,xx
Snad máš pravdu. Ještě to ověřím. Díky za odpověď.
Správa
Autor ::Libor L.A. Poslaná :: 14.12.2015 15:59:46 Predmet ::Re: Problém s emulátorem - instrukce MVI A,xx
Tak dnes jede samo od sebe všechno OK, dokonce začalo fungovat i časování na bázi 8253, které včera také přestalo poslouchat. Asi byl včera špatný den. Musím si najít ten článek v Amatérském Radiu "Bioenergetická senzibilita mikročipů", který jsem kdysi pokládal za legraci, nevhodnou do tak důstojného časopisu. Snad tam najdu vysvětlení :)