Konference: Počítač SHARP MZ-800 a emulátory
Od: | VELESOFT (SPRINTER) |
Datum: | 28.3.2010 20:35 |
Předmět: | Re: Emulator ZX Spectra pro Sharpa |
A jak to ma vlastne SHARP s prerusenim ? Ma na to nejaky extra hardware co generuje NMI ? Totiz nektery ZX software bezi celou dobu uplne v pohode se zakazanym prerusenim ( DI ). Jiny software zase preruseni pouziva, ale v drtive vetsine IM2 s vlastnim vektorem preruseni. Aby si SHARP mohl pravidelne preruseni generovat, potrebuje na to jedine generovat prave NMI, jinak si neskrtne. Leda ze by ten emulator mel upravenou ZX romku, ktera pri preruseni IM1 cte primo sharpackou klavesnici + obcas prekopiruje videoram do te sharpacke. S takovym emulatorem by mohl fungovat leda tak hodne stary software urceny jeste pro ZX16kB, pripadne cokoli psaneho v ZX BASICu pro ZX48kB. Samozrejme takove prekopirovani celych 6912 bajtu ZX videoram do SHARPacke trva dost dlouho. Aby ho modifikovana romka kopirovala kazde preruseni je nerealne, to by emulator stal na miste. Zbyva jediny zpusob jak na to rozumnou cestou: na rutinu IM1 v ZX romce umistit nejaky citac preruseni + pridat test, ktery treba jednou za 10 preruseni prekonvertuje data ze ZX videoram oblasti do SHARPacke vram. Az tak SHARPa neznam, ale myslim, ze bude mit hodne podobnou organizaci videoramky jako ZX Spectrum, take atributy, trosku vetsi rozliseni, ale pekne linearni usporadani dat (zx ma zprehazene mikroradky). Za pomoci pripojeneho DMA cipu ( Z80DMA ) by byl presun videoramek jeste rychlejsi. Bez DMA to jde nejrychleji napsat tak, ze si udelame z ZX romce tabulku adres mikroradku obou videoramek (ZX a SHARP), nastavime zasobnik jeden radek a pomoci POP do vsech registru Z80CPU vycteme tolik dat, kolik jen pujde. Pak nastavime zasobnik na cilovy radek ve sharpacke vram a pomoci PUSH tam rychle preneseme data. Atd... Pripadne by se to dalo take pres rozepsane instrukce LDI+LDI+LDI.... Dalsi pruser vidim ve cteni stavu klavesnice. ZX Software prece vetsinou pouziva vlastni rutiny klavesnice a nikoli ty ze ZX rom. Takze emulator po nahrani hry pred jejim spustenim musi prohledat celou ZX ram (oblast pameti 16384-65535) a vyhledat tam instrukce pro cteni portu klavesnice jako jsou treba: IN A,(254) nebo LD BC,xxFE+IN A,(C) a nahradit je nejakou kratkou instrukci. Idealne by to slo prepsat jednim RST xx ktere skoci na nasi rutinu v modifikovane ZX rom. Tato rutina si ze zasobniku vycte adresu odkud byla volana a pokud najde nasledujici bajt 254, musime emulovat klavesnici ZX. Dulezite ale je, ze musime rozlisit mezi IN A,(254) a IN A,(C). Kazda z techto instrukci by mela byt nahrazena RST s jinou adresou a samostatnym testem portu v romce. Ja toto delal na SAM COUPE pro moznost emulace ZX Spectra 128kB. U takovych emulatoru je ale celkem mala sance, ze nejaky ten ZX software pobezi stabilne. Nejspis fakt jen starsi hry. Cely takovy emulator neni zadny problem za jeden den napsat. Chce to jen mit dokumentaci ohledne portu klavesnice SHARPa a info jak to ma udelane s videoram. VELESOFT ----- Original Message ----- From: "Jakub Ladman" <sharpemu tu byla ta zakroucena vec pandora.czladmanj tu byla ta zakroucena vec volny.cz> To: "Konference Počítač SHARP MZ-800 a emulátory" <sharpemu tu byla ta zakroucena vec pandora.cz> Sent: Sunday, March 28, 2010 10:02 PM Subject: Re: Emulator ZX Spectra pro Sharpa > > Ahoj > Ted nevim kde je, ale taky nekde ten emulator mam a opravdu funguje, ale dost > pomalu. > Podle mne to funguje tak, ze se emulovana videoram pod nejakym prerusenim > prepisuje do realne videoram, s prislusnymi zmenami. > Stejne tak nacitani klavesnice a pod. > ZX ma videoram v zakladnim adresnim prostoru, MZ imho umi mit celych 64KB RAM > a k videoram se pristupuje jinak, nikdy jsem pro sharpa nic ve hw zavisleho > nepsal a neznam to, na to jsou tu vetsi experti. > Proste se chvili necha bezet ZX kod, pak se prerusi a chvili se data > zpracovavaji emulatorem a vyuziva hw sharpa, pak se zase skoci zpet do ZX > kodu. Jediny problem by mohl vzniknout s io porty v kolizi, jinak to musi > fungovat. > > Jakub Ladman > > > Dne neděle 28 Březen 2010 21:41:45 VELESOFT (SPRINTER) (sharpemu tu byla ta zakroucena vec pandora.cz) > napsal(a): > > Myslis asi basicove hry. Odkdy ma SHARP graficky mod 256x192 a organizaci > > videoram shodnou se ZX Spectrem ? Ma vubec videoram od adresy 16384 jako > > ZX ? Vzdyt ani porty klavesnice nemohou sedet, ani nic jineho. Se ZX ho > > spojuje tusim jen fakt, ze ma take atributovy rezim (ale jine rozliseni), > > take Z80 CPU (ale rychlejsi ?), take klavesnici (ale jinou a na jinych > > portech), a adresovy prostor 64kB (nejspis take jinak usporadany co se > > romky tyce). > > > > VELESOFT > > ----- Original Message ----- > > From: Factor6 > > To: Konference Počítač SHARP MZ-800 a emulátory > > Sent: Sunday, March 28, 2010 7:13 PM > > Subject: Re: Emulator ZX Spectra pro Sharpa > > > > > > Myslim, ze ne, sly spoustet normalne hry... > > > > > > > > F6 > > > > > > > > > > > > > > Dne 28. března 2010 17:34 VELESOFT (SPRINTER) (sharpemu tu byla ta zakroucena vec pandora.cz) > > <velesoft tu byla ta zakroucena vec seznam.cz> napsal(a): > > > > > > Vzhledem k jinemu rozliseni to bude asi jen emulator ZX romky(basicu). > > Nic vic. Jakykoli strojovy kod spusteni z ramky nebude korektne pracovat s > > grafikou.... > > > > VELESOFT > > ----- Original Message ----- > > From: Factor6 > > To: Konference Počítač SHARP MZ-800 a emulátory > > Sent: Sunday, March 28, 2010 6:04 PM > > Subject: Emulator ZX Spectra pro Sharpa > > > > > > Ahoj, jde nekde na inetu k sehanni emulator ZX Spectrum? Vim, ze pro > > Sharpa nejaky existuje, ale jeste jsem ho nevidel. Rad bych videl na > > vlastni oci, oc jde :) > > > > > > > > F6 > > > > > > > > > > --- > > > > > > > > > > > > --- > > > > > > > > > > > > > > > > --- > > > > > > > > --- > > > > ---
Ostatní příspěvky vlákna:
[2010/1 (51)] [2010/2 (48)] [2010/3 (23)] [2010/4 (40)] [2010/5 (50)] [2010/6 (23)] [2010/7 (13)] [2010/8 (54)] [2010/9 (47)] [2010/10 (243)] [2010/11 (92)] [2010/12 (98)]
[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)]