7,226

(273 odpowiedzi, napisanych Programowanie - 8 bit)

mam nadzieje moj agresyny doping pomoze ci szybciej skonczyc emulator i pokazac jak z zalozenia wolny program popedzi niczym wiatr ;-)

7,227

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> Jeśli o mnie chodzi to ja wolę 6% Speed Emulator, na którym będzie działać wszystko, niż 15% Speed, na którym będą działać gry, wybrane.

Draco nie sadzisz, ze 6% jest nie osiagalne przez Twoj emulator? jesli chcialbys wyjsc powyzej 5% musialbys nie sprawdzac rejestrow indexowych z80, ale jesli je sprawdzasz i korygujesz (wymagane w Twoim przypadku) latwo mozna napisac program, ktory sie nie uruchomi na tym emulatorze. cos mi sie wydaje ze to zauwazyles i dlatego wspominasz "zaprogramuje się to wszystko od nowa i inaczej".

jak myslisz? w ktorym miejscu sie myle?

7,228

(273 odpowiedzi, napisanych Programowanie - 8 bit)

nazwa mi sie podoba :-)

7,229

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> (oraz ile tego ci się zmieściło w pamięci, zob. posty #3 i #107).

zob. post 108 (kolejny raz tym razem ze zrozumieniem) i 114
prosciej: nie potrzeba pakowac calej emulacji tylko to co jest potrzebne do emulacji konkretnego programu.

7,230

(273 odpowiedzi, napisanych Programowanie - 8 bit)

idee 'zakumalem' wczesniej, dwa posty temu idea zostala nazwana jit :-)

7,231

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> Zob. post #108 i nie trac watku własnych wypowiedzi.

Tez powinienes przeczytac

> Co do JIT-a, zob. post #3 i #107

obejrzyj tez wiki

7,232

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> Zob. post #104.

zob. jit ;-)

---

@laoo, co wiecej, mozna by bylo z kodu emulca usunac wszystko nie potrzebne do koncowej emulacji danego programu.

7,233

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> To zrób i pochwal się, ile ci to dało :-)

ok. :-)
podaj liczbe cykli wykoania takiego czegos:

ld a,b
or c

a ja pochweale sie ile by to zajelo :-)


> Wystarczy jeden.

masz ambicje zrobic emulator 100%? komus sie to udalo?


> Jak już bystro zauważył dely, ty nie mówisz o emulatorze

tak? to o czym?

@ laoo nie doczytalem Twojej wypowiedzi, teraz ja zrozumialem dopiero. masz racje. nie potrzeba by bylo dekompilacji robic.

7,234

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> Ja nie zauważyłem, żeby na ogólnym tle kodu znajdującego się w ROM-ie Spectrum takie sekwencje występowały jakoś szczególnie często.

oj bardzo czesto i nie koniecznie zwiazane z rysowaniem na ekranie - chociaz w giercach to jest bardzo widoczne i sekwencje sa dluzsze, wracajac do romu trumny pierwszy lepszy wielokrotny przyklad

ld a,r
or r / and r

zerkam teraz na jakies procki z romu ... cale procedurki mozna by bylo zastapic niekiedy.

@laoo no wlasnie nie bardzo automat, a co gdy podmieniany wzor bedzie grafika albo jakimis innymi danymi? po to wlasnie trzeba by bylo robic reczna deasemblacje i tylko kod poddawac patchowaniu.

> Z tego, co mi wiadomo, żadne nie są wolne: "puste" miejsca w tabeli oznaczają rozkazy, które po dodaniu prefiksu działają tak samo, jak odpowiedniki bez prefiksu. Dokumentacja, którą czytałem sugeruje, że bywa to używane do utrudnienia analizy kodu (bo większość disasemblerów się na tym ponoć wykłada).

heh no nie przesadzaj, ile takich programow znajdziesz? 1%? watpie

a co do zajetosci pamieci - nie ma potrzeby implementowania WSZYSTKICH rozkazow, po dekompilacji i wydzieleniu kodu z80 sprawdzamy z czego mozna zrezygnowac a jak jestesmy hardcoreowcami to sprawdzamy na jakich bitach w rej statusu program nie kozysta i zalaczamy wersje rozkazow emulujacych bez ustawiania odpowiednich bitow :D to by bylo cos.


---
@ laoo nie doczytalem Twojej wypowiedzi, teraz ja zrozumialem dopiero. masz racje. nie potrzeba by bylo dekompilacji robic.

7,235

(273 odpowiedzi, napisanych Programowanie - 8 bit)

akurat ten przyklad jest nagminny, jak narazie w kazdym programie znalazlem taka/podobna konstrukcje:

daleko szukac... w romie spectrum tez tak jest ;-)

wynika to miedzy innymi ze specyficznej organizacji pamieci ekranu.

7,236

(273 odpowiedzi, napisanych Programowanie - 8 bit)

podczas emulacji z80 napotykam na rozkazy typu:

1.zaladuj jakis rejestr do akumulatora
2.wykonaj jakas operacje logiczna/arytmetyczna
3.zapisz wynik w poprzednim rejestrze

lub

1. petle z ldir (przesuwanie pamiec-pamiec)

itp...

podczas emulacji tracimy sporo czasu na interpretacje kazdego rozkazu osobno...

z80 ma prefixy, w tablicy rozkazow po prefixie jest duzo wolnego miejsca, mozna zrobic tak,
ze w kodzie (ingerencja w kod programu z80) gdy trafimy na taki kod jak z przykladu wsadzamy prefix i kod makro.

makro moze dzialac nawet szybciej niz zlepek rozkazow na z80, zwlaszcza przy podprogramach.

kolejna sprawa to jaka mozna miec motywacje podczas przenoszenia jakiejs gry z trumny na atari (poprzez emulacje)?
podpisac sie pod taka praca nie mozna, samej dlubaniny przy dekompilacji i wyszukiwaniu
podprogramow, ktore nie sa samomodyfikowane przez program cala masa...
jak znajdzie sie ktos, kto odwali czarna robote czyli deasembluje jakas gre, wydzieli z niej kod i dane to razem mozemy przeniesc taka gre na atari z predkoscia zblizona do oryginalu (jesli bedzie za wolno, wieksze czesci kodu z80 przepisze na 6502)

ordynarna emulacja jak pokazalem wczesniej jest za wolna do takich zabaw - ok 6% to zenada.

7,237

(8 odpowiedzi, napisanych Programowanie - 8 bit)

> 2.

jesli zdefiniujesz obraz tak, zeby linia nie miala 32 znaki tylko np 255 to skroll moze byc realizowany przez zapis 2 bajtow a nie przesuwaniu 32 bajtow...

> 3.

tak, to nie jest problem, powinienes najpierw poczytac jak atari tworzy obraz, nie bylo by tych pytan...


> Najbardziej chciałbym mieć możliwość wyświetlania znaków na jakimś wirtualnym ekranie, tak było w amigowym Amosie - można było rysować na ekranie logicznym/wirtualnym, a potem jedną instrukcją przekopiować to na właściwy ekran.

w amosie nie calkiem kopiowal ekran, raczej zmienial jego adres... na atari jest tak samo - blyskawicznie (poczytaj o technice page fliping - chyba w basicu miguta jest to opisane)

7,238

(273 odpowiedzi, napisanych Programowanie - 8 bit)

trzeba jeszcze zaplanowac zadanie (przerwanie vbi?) ktore bedzie co ramke przerzucac 32*24 (768) bajtow z pamieci atrybutow zx spectrum do pamieci vbxe :-)

7,239

(273 odpowiedzi, napisanych Programowanie - 8 bit)

emulec dziala:

program na zx tu: http://atari.pl/fmtest.sna

uruchomiony na zxemu (atari) tu: http://atari.pl/zx_emu.avi

szybkosc: niezadawalajaca (na moje oko sporo ponizej 10%)

widze to tak, ze jedyna droga do uruchomienia gier z trumny na atari (poprzez emulacje) to przepisanie czesci kodu (petli, podprogramow) na assa 6502, albo zainsalowanie 65816 ;-)

---
jak wylaczam przerwania to emulec idzie ok. 6% oryginalu (to powyzej bylo z wlaczonymi przerwanami)

7,240

(709 odpowiedzi, napisanych Fabryka - 8bit)

najciezej zrobic ostatnie 10%

7,241

(273 odpowiedzi, napisanych Programowanie - 8 bit)

ale nikt nie powie "nie da sie" ;)

7,242

(273 odpowiedzi, napisanych Programowanie - 8 bit)

jestem pod wrazeniem.

7,243

(273 odpowiedzi, napisanych Programowanie - 8 bit)

na swoje usprawiedliwienie moge tylko powiedziec ze jeszcze nie doszedlem do rozkazu retn a to on byl kluczem... (w naglowku nie widzialem nigdzie wartosci dla pc) ;-)


--
stan na dzis

http://atari.pl/z80emu1.gifhttp://atari.pl/zxemu.gif

7,244

(273 odpowiedzi, napisanych Programowanie - 8 bit)

http://atari.pl/fmtest.sna - uruchamiac na zxspectrum; joystick kempston



-- kto mi pomoze rozszyfrowac naglowek (27 bajtow) pliku .sna albo inaczej jak/gdzie trumna zapisuje adres startu programu?

7,245

(273 odpowiedzi, napisanych Programowanie - 8 bit)

emulacja calej listy rozkazow jest ambitna... postaram sie wkrotce pokazac dzialajacy kod jakiegos programu (moze jakas ekstremalnie krotka gra albo cos) w kodzie z80 na atari, w emu beda tylko rozkazy, ktore beda uzywane w tym konkretnym programie, jesli ktos kuma generowanie obrazu na trumnie albo zx81 prosze o kontakt (jak wygladalaby dl dla antica?)

czuje ze to moze byc porazka jesli chodzi o szybkosc

-- organizacje obrazu juz mam. jak odczytac wcisniety klawisz gumiaka?

-- 3 slowa do ksiedza prowadzacego:
1. kempston to jakos niestandardowo podpiete urzadzenie? - moze byc mapowane z STICK0/STICK1 atari?
2. jak wyobrazacie sobie zrobienie mapy kolorow? 2 drogi, albo olac mape kolorow albo migajacy obraz na 1 planie mapa kolorow w trybie gtia na drugim bitplan w hiresie?

7,246

(273 odpowiedzi, napisanych Programowanie - 8 bit)

8080 ma mniej rejestrow, nie ma niektorych trybow adresowania, rej stanu jest krotszy, jakies myki sa z rozkazamio skokow wzglednych, lista rozkazow jest sporo krotsza od z80, emulacja 8080 musi byc szybsza od emulacji z80, poza tym caly czas mowicie o emulacji zx, ja o emulacji samego procesora. dopoki nie bedzie 65816 i vbxe nie ma co marzyc o zxsectrum

7,247

(273 odpowiedzi, napisanych Programowanie - 8 bit)

http://www.pldos.pl/bogus/software/cpm/cpm_hist.htm

7,248

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> http://atari.pl/z80test.sna
> programik mozna uruchomic pod dowolnym emulatorem spektrumny.
> rysuje migajacy roznokolorowy pasek w pamieci atrybutow

    ld a, 0xc8
    ld b, 0x07
    ld hl, 0x5800
lo:ld (hl), a
    inc hl
    add a, 0x08
    djnz lo

a tu skrin z emulacji:
http://atari.pl/z80emu.gif

pasek na srodku pokazuje jak dlugo wykonywala sie ta petla, dla zainteresowanych policze (ale to juz w domu) ile cykli pozarla emulacja

powinno dac sie to przyspieszyc, pisalem w pracy wiec....

rozkaz djnz robi skoki tylko w tyl (ale dodany jest skok na procke do przodu wiec to nie powinno wplywac na szybkosc emulacji tej konkretnej procedurki)

hmmm moze ktos poda szybki sposob obliczenia wartosci dla skokow wzglednych?


-- policzylem cykle mam nadzieje dobrze:
petla wykonana na z80 250 cykli
petla wykonana na emulowanym z80 - 1806 cykli 6502 (obejmuje dekodowanie rozkazu pustego i opuszczenie trybu emulacji)

jak sie maja cykle z80 na 3,5mhz do cykli 6502 przy 1,79?mhz ???

-- male poprawki i z 1806 zjechalem do 1716 cykli

-- cos kolo 14% ? innymi slowy, implementujac wszystkie rozkazy i myki z80 na 6502 pewnie emulacja zamknie sie przy wlaczonym ekranie w 10% szybkosci oryginalu - na 65816/14 po optymalizacji byc moze bedzie 70-80% oryginalu - mozliwe?

7,249

(273 odpowiedzi, napisanych Programowanie - 8 bit)

> Zaimplementuj, zdebuguj, pogadamy
...
> mnie nie interesuje przedstawienie wyników "każdemu", tylko mnie samemu.
...

no to pogadalismy. mimo wszystko ja postaram sie przedstawic wyniki szerszemu forum

7,250

(273 odpowiedzi, napisanych Programowanie - 8 bit)

e tam zmian, zaznaczasz na ekranie rozpoczecie emulacji oraz zakonczenie dzialania emulatora, pasek pokazuje jak szybko dziala emulec, nikt tu nie mowi pokaz program tylko poke skrinszota.