Konference: Počítač SHARP MZ-800 a emulátory
Od: | Michal Hučík |
Datum: | 30.5.2013 11:44 |
Předmět: | Re: Soutez |
Ahoj Bohousi, odpovim rovnou do konfery, abych mohl rovnou i ostatnim
popsat jak to teda vlastne funguje...
Podobne jako u tebe se ta hra chova u mne na FPGA, akorat, ze pri
samotnem hrani uz se mi to hryzne... Vzhledem k tomu, ze to asi funguje
jen diky hazardnim stavum, tak tam bude zrejme nejaka sirsi variabilita
toho co se tam muze zapsat, aby to alespon nejak nabehlo ...
Kdyz jsem si ve Zdenkovem emulatoru pockal, az hra prosla adresou 0x0000
a pak poprve prosla tou adresou 0x0037 validnim zpusobem a nasledne jsem
na 0x0038 zapsal RETI, tak mi najednou cely Tetris rozbehnul jako ze
skatulky :)
V te prvni casti Tetrisu se docela hodne zapisuje do VRAM - maze se
screen a vykresluje se uvodni obrazovka. Kdyz tam nemas WAIT, tak je
vetsi pravdepodobnost, ze tema vykreslovacima rutinama projdes s
minimalnim poctem prijatych RST 0x38 a tak ti to "skoro" chodi.
Na realnem Sharpu tech interruptu probehne opravdu more a ten clovek co
to psal to zrejme nejak divoce poladil, aby mu to pres ty hazardni stavy
nakonec nastartovalo OK... verim, ze to muselo vznikat hodne bolestivou
cestou :) Kdyz se nad tom zamyslim, tak on asi nemel moc sanci vubec
prijit na to co mu ten program ve skutecnosti dela.
Podle toho co se mi podarilo zjistit a namerit v Sharpu, tak pokud v
MZ-700 Sharp pracuje s VRAM ve chvili, kdy je paprsek ve viditelne casti
radku, tak GDG vygeneruje WAIT. Aby to nebylo az tak jednoduche, tak pro
zapis je v GDG jedno bajtovy buffer a proto zapis jednoho bajtu jeste
projde bez povsimnuti, ale dalsi bajt uz zastavi procesor az do chvile,
kdy prijde hrana HBLN. To se deje nezavisle na tom, zda jsme, ci nejsme
ve snimkovem zatemneni.
Pri cteni se logicky zadny buffer aplikovat neda a tak dochazi k WAIT
bezprostredne uz pri prvni RD operaci. (U Zdenka, i u mne v FPGA se
zatim RD i WR chovaji oba prave takhle, coz je zrejme duvod proc u nas
hra tuhne a na Sharpu ne.)
Vcera jsem vsak zjistil, ze u RD operaci dochazi ke kratkym WAIT stavum
i v dobe, kdy probiha radkove zatemneni, coz je pro mne novinka.
Pokud si stahnes SW k logickemu analyzeru
http://www.asix.cz/dwnld_sigma-omega.htm (je potreba mit v pocitaci
nainstalovany FTDI driver, jinak to nenabehne
http://www.ftdichip.com/Drivers/VCP.htm ). Tak se muzes podivat na
namerene prubehy signalu:
http://duna.ordoz.com/doc/zdenek/SHARP_FULL_MZ700_VRAM_WR.stf
http://duna.ordoz.com/doc/zdenek/SHARP_FULL_MZ700_VRAM_RD.stf
Zaznam prubehu programu WR:
loop:
ld (hl),a
jp loop
Pro cteni jsem jen zmenil ld a,(hl).
Mozna by bylo zajimave odzkouset so nastane, kdyz v MZ-700 rezimu
zacneme cist/psat do osmistovkovych GDG registru ... jestlipak to taky
zpusobi nejaky WAIT.
Michal
Dne 30.5.2013 12:36, Bohumil Nováček (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>
> 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
>
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)]