Forum

Z PMD 85 Infoserver

:: späť na zoznam tém ::
Správa
Autor  Autor ::  Libor L.A.
Poslaná  Poslaná ::  13.12.2015 18:34:42
Predmet  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  Autor ::  Roman Bórik
Poslaná  Poslaná ::  13.12.2015 19:24:14
Predmet  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  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  15.12.2015 00:23:28
Predmet  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  Autor ::  Libor L.A.
Poslaná  Poslaná ::  13.12.2015 20:11:32
Predmet  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  Autor ::  Libor L.A.
Poslaná  Poslaná ::  14.12.2015 15:59:46
Predmet  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í :)
:: späť na zoznam tém ::