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

Od: VELESOFT (SPRINTER)
Datum: 28.3.2010 22: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)]