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

Od: Zdenek Adler
Datum: 22.5.2013 14:25
Předmět: Nová verze emulátoru (Re: Bohous ova Madonna)


Ahojte,

v návaznosti na Bohoušův popis jsem poopravil emulátor do podoby, kdy 
Madonna demo je alespoň trochu koukatelné. Už ani nevím proč, ale při
 zápisu 
do Scroll registrů vyšší hodnoty než SSA>0x78 a SEA >0x7D ignoroval.
Taky jsem přihodil emulaci 16MB ramdisku, tudíž je možné kouknout na celé video. Stačí jen v emulátoru nastavit velikost RD 16384 KB, ukončit 
emulátor, soubor ramdisc.dat z Bohoušova balíku přejmenovat na rd.dat a 
přesunout ho do adresáře, odkud se spouští emulátor. Pak už jen stačí 
spustit madonna2.mzf a koukat... případně upravit rychlost procesoru, aby 
jste u toho neusnuli (kvůli chybnému časování přerušení v emulátoru).

Stahovat můžete zde: http://mz-800.xf.cz/files/mzwin_0099alpha.zip

Bohouše bych pak možná (asi soukromě) požádal o pomoc s vyřešením
 časování 
přerušení, neb po více jak 10-ti letech co jsem Sharpa neviděl už mám v 
hlavě docela vygumováno. Díky,

Zdeněk




From: Bohumil Nováček (sharpemu tu byla ta zakroucena vec pandora.cz)
Sent: Tuesday, May 21, 2013 3:20 PM
To: Konference "Počítač SHARP MZ-800 a emulátory"
Subject: Re: Bohousova Madonna


Zdar chlapi,

  ok, příště se polepším, všechno hazím sem :-)

No ale jak zmínil Zdeněk, limity možností Sharpa jsem využil tak z 25%,
umí 
víc a rychleji.
Ano dokonce jsem si mohl dovolit ten luxus použít instrukci INIR místo sérieinstrukcí INI,
no jenom pro zvuk, pro video tam ty INI mám :-)

Tohle demo vzniklo tak trošku jako vedlejší produkt při testování
 rychlosti 
a nových vlastností unikarty.
S "klasickým" hardwarovým ramdiskem to běží bez problémů, nedělá totiž
wait 
stavy. Problém vzniká
v unikartě, kde je ramdisk emulovaný přes souborový systém, takže je 
okamžitě dostupný obsah pouze
vyrovnávací paměti (512 bytů), pokud chci jinou oblast, musím počkat na
seek 
v souboru a načtení
nového obsahu. Sekvenční čtení pak vypadá tak, že pro prvních 511
čtení 
dostanu data okamžitě
(no nebo s minimem wait stavů, třeba 1 nebo 2) a 512té čtení se z! asekne 
třeba s 3000 wait stavy.
Cca 1ms zaseklý procesor, to je pro přehrávání zvuku nepoužitelné.

Proto jsem zkusil takovou obezličku, po přečtení 512tého znaku se wait
stavy 
nekonají a načtení dalšího
sektoru se provádí v unikartě na pozadí. Pokud těch následujících 3000
hodin 
procesoru nic po unikartě
nechci, v klidu dočte nový sektor a je schopná mi na další vyžádání
opět 
vracet data bez extra wait stavů.
Pokud si vzpomenu dřive jak po těch 3000 hodinách, tak si holt počkám ve 
wait stavech, dokud se data
nedočtou, jak to bylo dřív. Pokud s tím tedy aplikace počítá, může
běžet bez 
časového omezení ze strany
emulovaného ramdisku. Samozřejmě to snižuje maximální prostupnost
ramdisku, 
protože musím
na konci každého sektoru čekat než se načte nový sektor, ale nečeká ve
wait 
stavech, může provádět
něco jiného (třeba přehrávat hudbu).

Z toho vyplývá odpově!  na použití API repozitáře karty. Ačkoliv
je 
rozhraní karty streamové, fyzicky čte
z SD karty opět po sektorech, takže máme stejný problém, 511x čtení ok,
po 
512té tisíce wait stavů.
Takže by se to sekalo (minimálně zvuk, na tom by to bylo poznat velmi). Šlo by opět udělat tu obezličku,
co jsem udělal pro ramdisk a pak by to s tím, že musí aplikace počkat než 
začne vyčítat další sektor,
šlo vyřešit, ale zase za cenu ztráty průměrné rychlosti vyčítání.

Stran použití RLE komprese pro případ podobných dat je to dobrý nápad, 
bohužel s emulovaným ramdiskem
to opět naráží na to, že snímky musí být zarovnané na 512 bytů, a to
 se to 
zase trošku (dost) komplikuje.

No nakonec k vlastnostem mz8win. Bohužel na jinak dokonalém (sám jsem 
šťastným uživatelem) emulátoru
jsou malé odlišnosti, no nutno přiznat, že s tím má problém akorát to
moje 
demo :-)
Takže čím jsem vyp! rovokoval emulátor k odlišnostem od reálného Sharpa:
1) přerušení od i8253 čítač 0 mód 2 je dvakrát pomalejší než v reálu
(kterej 
blbec, kromě mě, používá 11 tisíc
přerušení za sekundu :-)
2) Potřeboval jsem pomocí změny jednoho 8bitového registru přepnout 
scrollování o 100 řádků (nechtěl jsem
se piplat se synchronizací na vertikální synchronizaci a dělat to mimo 
zobrazovanou plochu). SOF pro 100
řádků je na dva zápisy, to po prvním zápisu rozhodilo obraz. Takže to
dělám 
jen nastavením registru SSA.
Všechno nastavím na posun o 100 řádků: SSA=0, SEA=7D, SW=7D, SOF=1F4 a
když 
nechci scroll, tak jen
přepnu SSA=7D. Mno je to prasárna, ale podle servisního manuálu to smysl 
dává a fakt to funguje.
Emulátor bohužel scrolluje dál. No mohl jsem udělat detekci emulátoru a 
upravit to tak, ať to hraje dobře i tam,
ale stejně je tam omezení na 1MB ramdisk.
Jenom pokud někdo tápe proč scrolling na video, tak protože je počet
snímků 
za sekundu malý (6,25 - by člověk
neřekl, že tak málo, když to vidí na vlastní oči), sestavuje se obraz z 
jednotlivých barevných rovin na přelomu
stránky a teprve až je kompletní, tak se odscrolluje na střed a tak dokola, díky tomu obraz v prostřed nebliká
(narozdíl od těch podivností nahoře a dole).

Tolik ve zkratce :-)
Díky za podporu, za výdrž pokud jste dočeli až sem a omlouvám se
 netechnikům 
za mraky technických podrobností.

Zatím
Bohouš



---------- Původní zpráva ----------
Od: Zdenek Adler (sharpemu tu byla ta zakroucena vec pandora.cz) <zdeneka tu byla ta zakroucena vec seznam.cz>
Datum: 17. 5. 2013
Předmět: Re: Bohousova Madonna



Bohouš se s tím jistě chtěl pochlubit, až to rozchodí přes celou
obrazovku 
při 25-ti snímcích za sekundu  Demo jsem zatím moc podrobně nezkoumal, 
nicméně jsem si z 16MB souboru ukrojil jen první 1MB a zkusil ho v 
emulátoru. Zvláštní je, že obraz se mi ukáže jen v horním a spodním 
uříznutém filmovém políčku a ne uprostřed. Čímpak to? Chyba v
emulátoru?
Je to už víc jak 10 let, co jsem na Sharpa dělal něco podobného  v 
rozlišení 160x100 a pseudo 256-ti barvách mi z ramdisku nekomprimované video(po sobě jdoucí stránky videoram) běželo zhruba 15 snímků za sekundu  
možná 
jsem to i dával sem na Pandoru. Jen tak zběžně jsem se koukal, že Bohouš 
vyčítá data z ramdisku instrukcí INIR  já tehdá dosáhnul mírného
zrychlení 
použitím sady za sebou jdoucích instrukcí INI.
Možná by bylo zajímavé i použití RLE komprese, kterou by se video asi
značně 
zkrátilo, ale chápu že by to asi nepředvídatelně nabouralo časování
celého 
dema. Jen mě to tak napadlo, při pohledu na ty černé plochy
Jinak dobrá práce, gratuluju!

Zdeněk



From: mailto:ordoz tu byla ta zakroucena vec ordoz.com
Sent: Friday, May 17, 2013 8:44 AM
To: Konference "Počítač SHARP MZ-800 a emulátory"
Subject: Bohousova Madonna



Ahoj chlapi,

takhle by to teda neslo! Kdyz udelate nejake nove demo pro Sharpa, tak o nem 
taky pekne napiste i tady do konfery! ;)

http://www.8bity.cz/2013/video-na-sharp-mz-800-madonna-2/

Bohousi, chtel bych se zeptat, zda to pracuje s "libovolnym" 16MB ramdiskem 
a nebo zda to navic jeste vyuziva nejaky hack ve tvem scandoubleru.

Z predpokladu, ze je to plne kompatibilni se Sharpem, nebylo by lepsi udelat 
to nacitani dat primo z SD karty pomoci API k repozitari? (Tam prece po 
otevreni souboru neni potreba nic strankovat a pokud se pri kontinualnim 
cteni vykasles na kontrolu statusu, tak v podstate jen dokola provadis IN a 
jednou za cas provedes seek na zacatek souboru.)

Michal







---
Pobyty na horách se slevou




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