Konference: Počítač SHARP MZ-800 a emulátory
Od: | Bohumil Nováček |
Datum: | 30.5.2013 10:36 |
Předmět: | Re: Soutez |
Ahoj Michale,
tak jsem to dneska zkousel nabootovat z obrazu diskety a spustit tuhle verzi
TETRIS2 a az na nejake artefakty na uvodni obrazovce mi to na tom
ARMu bezi. Na uvodnim screenu je pres pismeno T par malych cisel
po radcich 69, pak 95, pak jeden vynechany, pak 69,95, zas volno a 69,00
a az dole pod sovetskou vlajkou znaky 00.
Jinak neco zmacknu, predefinuju si klavesy a hraju, zkousel jsem to
nekolikrat a porad stejne dobry :-)
Prikladam kazetovou verzi, kterou jsem zkousel predtim a ta v pohode
bezi i na Zdenkovym emulatoru.
Jinak wait stavy pri pristupu k videu v MZ700 modu na ARMu ignoruju,
tam bych asi chybu nehledal.
Zatim
Bohous
---------- Původní zpráva ----------
Od: Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) <ordoz tu byla ta zakroucena vec ordoz.com>
Datum: 30. 5. 2013
Předmět: Re: Soutez
Bohousi, pro jistotu se zeptam jeste jednou: opravdu ti funguje "tento konkretni" Tetris2 spousteny ze systemu na teto diskete?
http://duna.ordoz.com/doc/soutez/Hry-HDS05.dsk ... dost by mne to zajimalo.
Ja si totiz ten program krokuju a zacinam mit pocit, ze je v nem nekolik chyb, ktere tam zanesl clovek, ktery predelaval puvodni Tetris do programu spustitelneho pod cp/m (.com)
V kodu se nekolikrat opakovane a docela zbytecne vyskytuji instrukce DI, ktere mi naznacuji, ze tam autor mozna s necim bojoval ...
Program si hned na zacatku nastavi DI a rezim IM 0. Ve sve startovaci fazi prochazi adresou 0x0000 a z adresy 0x003d provadi jump, zrejme na svou puvodni starovaci pozici. V nekolika nasledujicich rutinach se vyskytuje na jejich zacatku DI a na konci EI + RET, coz zpusobi nekolik restartu celeho programu prostrednictvim IM0 (RST 0x38). Toto je videt i na vystupu z analyzeru. V nekolika rutinach se jejich konci nachazi NOP + RET, coz mne privadi na myslenku, ze az program prejde do faze, kdy jsou interrupty opravdu vyzadovany, tak sam sebe prepise a ty NOPy v podprogramech nahradi instrukcemi EI.
Toto by se asi potvrdilo, kdybych mel po ruce i puvodni MZF verzi toho Tetrisu.
Kazdopadne pokud si ve Zdenkove emulatoru natahnete tu disketu, nastavite kurzor na Tetris2, nastavite breakpoint na 0x9d21 a na 0xe4ae a bouchnete ENTER, ty EI v debuggeru prepiste na NOP. Kra najednou krasne nabehne do uvodniho screenu a hraje hudba - vse bez aktivniho INT. Jakmile bouchnete do klavesnice, tak se to zborti, protoze tam je asi nekde jeste nejaky dalsi EI, ktery tam zrejme nepatri.
To ze se nam takto zmrveny program v emulatorech zakousne svedci o tom, ze nase emulatory ani zdaleka nejsou identicke s realnym Sharpem, nicmene to vypada, ze jsme neobjevili zadnou zasadni chybu.
(Mam jakesi tuseni, ze by mohl byt rozdil treba v tom, jakym zpusobem se na Sharpu a v emulatorech resi CPU_WAIT pri praci s VRAM v MZ-700 ... Delal jsem dnes nejaka mereni a o par taktu to v emulacich nesedi.)
Bohuzel mne nenapada, jak urcit co se presne v tu chvili v Sharpu deje. Jedinym resenim by asi bylo pripichnout na nej zarizeni/analyzer, ktery by to kvantum udaju ze sbernice ulozil a pak to porovnat s denim v emulatoru.
Tak a jestli mi ted Bohousi napises, ze tobe tento konkretni Tetris bezi uplne stejne, jako bezi i v realnem Sharpu, tak mne docela nastves! :)
Michal
Ostatní příspěvky vlákna:
[2013/1 (17)] [2013/2 (52)] [2013/3 (60)] [2013/4 (68)] [2013/5 (60)] [2013/6 (42)] [2013/7 (9)] [2013/8 (48)] [2013/9 (1)] [2013/10 (40)] [2013/11 (45)]
[1999 (1)]
[2000 (168)]
[2001 (733)]
[2002 (459)]
[2003 (654)]
[2004 (224)]
[2005 (105)]
[2006 (182)]
[2007 (201)]
[2008 (294)]
[2009 (363)]
[2010 (782)]
[2011 (522)]
[2012 (642)]
[2013 (442)]