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

Od: Zdenek Adler
Datum: 27.5.2013 11:36
Předmět: Re: Soutez


Ahojte,
 
tak jsem o víkendu po letech oprášil Sharpa a na vlastní oči jsem si ověřil skutečnost, že jediné co odblokuje přerušení od PIO je RETI instrukce, nebo reset PIO (pomocí samostatného M1). Chybně jsem to přerušení od PIO odblokovával i při samotné EI instrukci (ne při RET, jak psal Bohouš), což je pochopitelně blbě.
Rád bych se tedy ještě předtím, než to napravím v emulátoru zeptal, jestli přerušení od PIO odblokují i jiné podmínky než ty dvě jmenované výše např. povolení přerušení PIO, nastavení režimu PIO, .... ?
Díky
 
Zdeněk
 
 

Gratuluju k pokrokum.

Tak jsem otestoval tu reakci na RETI na skutecnem Sharpovi.
A opravdu to musi byt instrukce RETI (ED 4D).
Nestaci NEG (ED 44) ani za sebou NEG a LD C,L (ED 44 4D)
dokonce ani SET 5,L a LD C,L (CB ED 4D). Ono to PIO opravdu
nepotrebuje kontrolovat, ze ten druhy operand je 4D, staci podminka,
ze je to M1 cyklus. RETI je totiz asi jedina dvoubajtova instrukce,
ktera ma dva M1 cykly.

Do toho VHDLka moc nevidim, ale tohle se mi tam nezda podchycene
(asi to ale nema vliv na chodivost programu), kontroluje se tam pritomnost
ED a 4D dat v M1 cyklech po sobe, ale pokud je mezi nimi nejaky jiny cyklus,
tak se detekce nevrati na zacatek, takze by to pravdepodobne posloupnost
instrukci NEG a LD C,L (ED 44 4D) nebo jakoukoliv ED XX 4D vzalo jako RETI
(pokud se spravne generuje signal M1).

A bohuzel ja si hraju s emulatorem v ARMu, takze to neni az tak jednoduse
prenositelne do VHDL, tak se potyk! am zas s uplne jinymi problemy. Vzal
jsem kod ktery jsem psal uz drive pro LPC1768  jako jednoduchy emulator
(na Flappyho byl dobrej), pridal to ke kodu unikarty, zahodil nozicky smerem
k Sharpovi, takze jich ted bohate staci 64 misto 100 a vylepsil rychlost grafiky
(na ukor rychlosti cteni SD karty). Jeste to ma mouchy, ale je to na dobre
ceste, pocitam ze behem par dni k tomu neco napisu a hodim na web
podklady pro hracicky :-)

No jeste me napadla jedna vec s rychlosti programu, casto si synchronizaci
krom preruseni program jeste upravuje cekanim na hodnoty z IO portu CEh.
Nikde jsem to nenasel, dle mych mereni jsou tam tyto hodnoty:

bit7  HBLNK
bit6  VBLNK
bit5  HSYNC
bit4  VSYNC
bit3 a 2 = 0
bit1  Switch1 0=ON, 1=OFF
bit0  TEMPO

VSYNC je na 25 videoradku v 0 jinak zbytek snimku na 1
VBLNK je v 0 o 42 radku pred a 45 radku po VSYNC dele
HSYNC na 41,6 taktu procesoru je ! v 0, zbytek vidoradku v 1
HBLNK je v 0 o 30,4 taktu pred a 27,2 taktu po HSYNC dele
TEMPO cca 34Hz strida blizko 1:1
Doba jednoho videoradku je 227,2 taktu procesoru, aktivni jsou radky (200 radku)
v dobe, kdy je VBLNK v 1, celkem je 312 radku na stranku, plati pro PAL
nastaveni GDG.

Jinak WD2791 se mi hodi, kdyz uz na nej mam i desku, jeste se ozvu,
moc diky.

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: 24. 5. 2013
Předmět: Re: Soutez


Tak tedy ... Vyhrabal jsem cca po roce Nexys2 (FPGA) a po skoro
celodennim trapeni s tim, ze mi zadny z tech modelu Sharpa (a ze jsem
jich mel doma ruzne na vsech discich snad 30 verzi :) nechtel nabehnout,
jsem se dobral k tomu, ze mi ve Flashce chybi ROM :) Nyni uz jedu!

Mam nakonfigurovany 1MB ramdisk, nicmene Bohousovo demo je u mne v ramci
tohoto omezeni OK. Mel ! jsem akorat pocit, ze je mezi animacnimi snimky
trochu delsi pauza, takze oko vnima jejich prekresleni jako cuknuti, ale
nevidel jsem jeste jak to vypada na Sharpu, tak to lze tezko soudit.

Co se tyka Tetris2, tak u mne na FPGA se to nezakousne hned pos
spusteni, jako u Zdenka (muj PIO reaguje jen na RETI, viz vhdl, ktery
jsem dal na web ... zrejme jsem na to RETI prisel uz pred 2 rokama, ale
zapomnel jsem na to :) ).

Zobrazi se tedy napis Tetris2 s modrym obdelnikem dole a dokola hraje
hudba. Az kdyz stisknu klavesu, tak se cela obrazovka prekresli. Zobrazi
menu hry - ovsem v nem uz jsou graficke defekty a hra je jakasi
vykolejena ... Takze tady prave asi prichazi ten interrupt navic, o
kterem jsem psal... Uvidime, jak to dopadne u Zdenka, az si opravi PIO.

Bohousi, pokud ses dival na ten muj VHDL k PIO, netrklo te tam nahodou
neco, co treba ve sve emulaci delas jinak, nez ja? Ve svem emulatoru
pouzivam uprave! ny kod T80, ktery vubec neobsahuje IFF registry, ktere
jsem si musel napsat sam a je mozne, ze to podivuhodne chovani je
zpusobene i tam.

Kazdopadne pokud ti ten Tetris2 ve tve emulaci bez problemu funguje, tak
se zrejme stavas VITEZEM mnou vyhlasene souteze uz ted :) Pokud mas tedy
o ten WD2791 zajem, tak mi posli adresu kam ho mam vyexpedovat.

Michal


---
Pobyty na horách se slevou
http://raketa.cz/slevy/pobyty/hory/
 


---
Pobyty na horách se slevou


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)]