Konference: Počítač SHARP MZ-800 a emulátory
Od: | Roman Dolejsi |
Datum: | 28.3.2010 23:05 |
Předmět: | Re: Emulator ZX Spectra pro Sharpa |
Zdravim,
emulator ZX Spectra jsem opravdu na Sharpa napsal ja a fungoval v principu jak prave popsal Velesoft..
ROMka Spectra byla na svych nevyuzitych mistech napechovana mymi emulacnimi rutinami, ktere byly volany z nativniho kodu pomoci RST odskoku. Samozrejme slo vyuzit pouze omezene mnozstvi RST, aby ZX basic jako takovy zustal zachovany. Pri emulaci delsich instrukci jsem mel za RST odskokem jeste poradovy kod instrukce, atp. V momente, kdy se pres prepsane rutiny nahravani z kazetaku dohral blok, tento blok jsem projel, vyhledal spravne instrukce a nahradil je. Timto zpusobem byla vyresena klavesnice, joystick, emulace ZX IM2 (prace s I registrem, atd), zvuk 48 i AY emulace..
Prepis obrazovky fungoval pod prerusenim a nebyl vubec jednoduchy udelat. Obrazovka Sharpa ma nezvykle otocenou reprezentaci osmi bodu v byte. Kdyz tedy dochazi k vykreslovani cehokoli, vetsina programu musela standardne ulozene informace pred zapisem zrcadlove otacet. Sharp navic samozrejme nema atributy. Lze zapisovat danych osm bodu v urcitem modu zapisu do ruznych rovin (or, and, xor, ..), cimz je mozne nastavit jakoukoli barvu z palety 16 barev.. Tahle manipulace ma ale i sve nevyhody - kompletni obsluha takove obrazovky neni vubec rychlou zalezitosti..
Proto mel emulator moznost prepinat zobrazeni mezi barevnym a cernobilym (ktere bylo samozrejme o dost pomalejsi).
Celkove jsem tehdy mel velke problemy s dostupnym mistem v pameti. Kdyz emulator spustite, muzete si vsimnout, ze kusy kodu a konverznich tabulek jsou dokonce ulozeny ve VRAM Sharpa ;-))
Mnozstvi programu, ktere bezely, hodne zaviselo na nahode. Emulace jako takova problemy nemela. Opravdove problemy byly jen dva:
- pokud v miste odskoku na emulaci byl SP registr hrou zrovna pouzit jako ukazatel na data (tj. zasobnik neexistoval).. U grafickych rutin her tomu tak obcas bylo :-((
- pokud hra/aplikace prepisovala svuj vlastni kod na mistech emulace
- pokud ma prohledavaci rutina nasla a prepsala misto instrukci nejaka zivotne dulezita data :-)
Celkem vzato technologie fungovala, hry behaly (i kdyz pomalu), jen to melo sve mouchy :-)) Emulator prikladam, muzete posoudit, zda vubec neco zvladl ;-)))
HTH,
Roman
2010/3/28 VELESOFT (SPRINTER) (sharpemu tu byla ta zakroucena vec pandora.cz) <velesoft tu byla ta zakroucena vec seznam.cz>
----- Original Message -----
From: "Jakub Ladman" <sharpemu tu byla ta zakroucena vec pandora.czladmanj tu byla ta zakroucena vec volny.cz>
pro dokonalou emulaci ZX Spectra. Akorat nevim jak hodne slozita by byla prace s
klavesnici.
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
>
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.
No a ja si troufam tvrdit, ze by sel udelat pro SHARPa nejaky modul/interface> 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.
pro dokonalou emulaci ZX Spectra. Akorat nevim jak hodne slozita by byla prace s
klavesnici.
VELESOFT
---
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)]