Konference: Počítač SHARP MZ-800 a emulátory

Od: Michal Hučík
Datum: 30.5.2013 13: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)]