2,751

(20 odpowiedzi, napisanych Sprzęt - 16/32bit)

Ee, czemu. Po nullmodemie też chodzi.

2,752

(273 odpowiedzi, napisanych Programowanie - 8 bit)

tebe napisał/a:

chyba że Draco już ma dopałke Pasia

Nie ma. Komputer na zdjęciu to najzwyklejsze pod słońcem 130XE.

2,753

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Pecus napisał/a:

No wiesz.... trzymac przez tydzien wlaczone Atari, zeby sobie jedno demko zobaczyc :) ... przesada.

Tydzień? Takie demko musiałoby w realu trwać z 10 godzin :P Zważywszy, ze rozsądne demko pewnie nie jest dłuższe niż 10 minut, Atari trzeba byłoby mieć włączone nie przez tydzień, ale jedynie przez jakieś 3 godziny (trzy demka po 10 minut = droga koleją z Warszawy do Trenczyna) :)

2,754

(273 odpowiedzi, napisanych Programowanie - 8 bit)

dely: na razie do basica nie da się przejść, bo nie zrobiłem jeszcze obsługi klawiatury :)

adam: wieeedziałem, że ktoś wyleci z takim pomysłem :P

2,755

(273 odpowiedzi, napisanych Programowanie - 8 bit)

A u mnie tak:

http://drac030.krap.pl/zxnapis-small2.jpg

Dla chętnych - i tych, którzy nie wiedzą, co tam jest napisane - wyraźniejsza wersja:

http://drac030.krap.pl/zxnapis.jpg

Dojście, a raczej domęczenie się, do tego miejsca po zastartowaniu OS-u Sinclaira od adresu $0000 zajmuje emulatorowi 1819 ramek (circa 36,5 sek.).

2,756

(221 odpowiedzi, napisanych Sprzęt - 8bit)

Ja jednak mam nadzieję, że akcelerator będzie dobrze współpracował, w końcu po coś ta przelotka i miejsce na dodatkowe sygnały były planowane :)

pin: co do tych czterech kartów, obawiam się, że żeby to działało razem, BASIC XE trzeba wsadzić przelotowo w SDX - czyli z punktu widzenia ekspandera to jednak będą trzy kartridże.

2,757

(9 odpowiedzi, napisanych Software, Gry - 8bit)

Patrz też strona dyskusji: http://atariki.krap.pl/index.php/Dyskusja:Vicky <-- jest tam pewna informacja, która wypadła z hasła ze względów formalnych (jest sformułowana w pierwszej osobie). Ktoś znający się na tej grze (np. ty) mógłby dokonać jakiejś ostatecznej redakcji tego hasła, tylko przestrzegając przy tym reguł edycyjnych Atariki, bo inaczej będę strzelał.

2,758

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Emulacja 8080 byłaby szybsza tylko w tym sensie, że z powodu dużo mniejszej liczby rozkazów emulator mógłby powstać szybciej ;) Poza tym nie ma w zasadzie żadnej róznicy, oprócz drobnej w zachowaniu rejestru znaczników.

2,759

(273 odpowiedzi, napisanych Programowanie - 8 bit)

laoo/ng napisał/a:

Proponuję zatem powołać Komisję Ślędczą, której zadaniem będzie (ponowne)odkrycie wszystkich wymagać do uruchomienia CP/M

W en.wiki (http://en.wikipedia.org/wiki/CP/M) jest napisane, że to jest:

a) terminal
b) Intel 8080
c) 16k RAM-u
d) stacja dysków

Co do tych "16k", tutaj: http://www.dcast.vbox.co.uk/cpm.html napisali że ma to jednak być co najmniej 20k ze wskazaniem na nie mniej niż 48k.

2,760

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Nigdy się spectrumem za bardzo nie interesowałem, więc mogę być w błędzie, ale wydaje mi się, że do uruchomienia CP/M potrzebna była stacja FDD 3000, i to ona robiła za komputer, a ZX Spectrum za terminal. Inaczej się CP/M-u uruchomić nie dało, ale nie wiem czemu - może CP/M wymaga np. żeby pierwsze 16k pamięci było RAM-em? Albo chodzi o brak odpowiedniego BIOS-u.

Jeśli to drugie, to w zasadzie żaden problem.

Tu http://pl.wikipedia.org/wiki/Elwro_800_Junior jest napisane "jednym z trybów pracy jest programowo zgodny z Sinclair ZX Spectrum".

2,761

(273 odpowiedzi, napisanych Programowanie - 8 bit)

pirx napisał/a:

Trzeba też odjąć sporo czasu na ekran (organizacja taka, jak w ZX oznacza częste przeładowanie adresu ekranu w DL).

Ale z drugiej strony ekran jest wąski (256 pikseli), więc per saldo chyba się opłaca ...

2. będzie można spóbować emulacji CP/M

Czy CP/M może działać na Spectrum? Coś kojarzę, że nie.

PS. Policzyłem dokładnie - Z80 ma 1268 rozkazów.

2,762

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Ja swoje wyniki jak dotąd już przedstawiłem (patrz post #48). Mówię ci po prostu - a niezbyt dociera jak widzę - że nie zamierzam robić głębokich zmian w istniejącym kodzie tylko po to, żeby uzyskać bezwartościowy dla mnie rezultat w postaci snapszota z emulatora Atari800.

Szerszemu forum zaś zamierzam przedstawić na koniec nie "wyniki", tylko gotowy program, o ile ocenię, że robi coś ciekawego i jest wart przedstawiania.

A co do "zaimplementuj, zdebuguj, pogadamy", myślę, że fałszywie mnie zrozumiałeś. Znaczyło to tyle co "nie teoretyzuj" :P

2,763

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Słuchaj, robisz sie nachalny. Jak ci mówię, że nie zamierzam tego robić, i podaję powody, to ci powinno wystarczyć dwa posty temu. Mogę ci jeszcze delikatnie zasugerować, że nie masz pojęcia jak wygląda u mnie start emulacji i cały kod "okołoemulatorowy" (z monitorem Z80 na czele), więc nie możesz wyrokować lepiej ode mnie, czy to dużo zmian, czy mało. :P I może na razie na tym poprzestańmy, chyba, ze chcesz, żeby się atmosfera popsuła :P

2,764

(273 odpowiedzi, napisanych Programowanie - 8 bit)

xxl napisał/a:

> Teoretycznie mogę, ale musiałbym za dużo przerabiać. Mogę ci podać wynik w ramkach VBL, ale do tego przydałoby się, żeby pętla wykonywała się większą liczbę razy (np. kilkadziesiąt tysięcy razy) dla lepszej dokładności.

sadze ze widoczny efekt bedzie juz przy tak malej petli ktora zmiesci sie w 1 ramce i kazdy bedzie mogl zobaczyc na wlasne oczy ile to trwa.

wytlumaczylem wczesniej dlaczego procka powinna zmiescic sie w ramce

Być może każdy by mógł, i być może "powinna", ale mnie nie interesuje przedstawienie wyników "każdemu", tylko mnie samemu. A do tego mam własną metodę pomiaru, która mi daje informacje porównywalne z wynikami uzyskiwanymi od niedzieli - i nie zamierzam jej zmieniać, zwłaszcza że, jak napisałem wyraźnie wyżej, wymagałoby to sporych zmian w dotychczas istniejącym kodzie.

czlowiek cale zycie sie uczy (licznik petli)... moze czas na assa z80?

A ty myślisz, że co ja od niedzieli robię? :P Co do B, faktycznie, rozkaz DJNZ go używa, nawet tego do tej pory nie wiedziałem.

2,765

(273 odpowiedzi, napisanych Programowanie - 8 bit)

xxl napisał/a:

mam pewne przemyslenia jak przyspieszyc emulacje:
- brak ochrony pamieci (dlaczego emulator ma dbac o to zeby nie dac sie wyrabac zle napisanemu programowi w z80?) - to odnosnie blokowania zapisu do rom

Sprawdzenie tego w zasadzie nic nie kosztuje, to groszowa oszczędność.

- umiejscowienie pamieci emulowanego proca w liniowym ramie (65816 sie klania)

No, wiadomo, że na 65816, przy liniowym RAM-ie i z wykorzystaniem nowych trybów adresowania, to jest zupenie inna bajka: np. dekodowanie rozkazu się na dzień dobry robi 4 cykle szybsze.

- napotkanie rozkazu nieobslugiwanego powoduje opuszczenie emulatora

To faktycznie musi bardzo przyspieszać emulację :)

jeszcze nie wiem jak zaemulowac rejestr stanu z80...

A to jeszcze wiele przed tobą :)

@draco030, jesli mozesz uruchom ten programik moze w taki sposob

Teoretycznie mogę, ale musiałbym za dużo przerabiać. Mogę ci podać wynik w ramkach VBL, ale do tego przydałoby się, żeby pętla wykonywała się większą liczbę razy (np. kilkadziesiąt tysięcy razy) dla lepszej dokładności.

Nie bardzo rozumiem, po co ładujesz 7 do rejestru B.

Ja - jak wiesz zresztą - testuję na czymś takim (przytaczam z pamięci):

    ld HL,$ffff
    ld A,$3f
loop:
    ld (HL),$00
    dec HL
    cp H
    jr NZ,loop

Ta pętla wykonuje się 49152 razy zerując pamięć od $FFFF do $4000. Atarynce wykonanie tego zabiera 496 ramek. Rozkazy ustawiają wszystkie oficjalne flagi Z80, nieoficjalnych przeważnie nie.

2,766

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Tym samym JIT został w tym wątku wymyślony po raz drugi (pierwszy raz przez mikera wczoraj). Kto następny? :P

2,767

(273 odpowiedzi, napisanych Programowanie - 8 bit)

jellonek: nie lubisz Turbo Pascala 3.0? ;)

Sikor: trochę mylisz pojęcia. Emulator software'owy może korzystać z właściwości Antica dla ulżenia sobie w ciężkiej, niewdzięcznej i nikomu niepotrzebnej robocie ;) bo pamięć emulowanego Z80 to ta sama pamięć, do której ma tez dostęp Antic.

W przypadku doczepiania rzeczywistego Z80 z zewnątrz rzecz ma się zgoła inaczej - taki procesor musi mieć swoją pamięć (oddzielną od tej, która jest w Atari), a do zewnętrznej pamięci dostępu nie ma z kolei Antic. Więc porażka. Odwrotnie - żeby Antic korzystał z pamięci Atari, a Z80 miał do niej dostęp z zewnątrz - to już prędzej, ale i tak nie obyłoby się bez makowego cuda służącego do translacji adresów w tę i we wtę, i to, oczywiście, w locie.

2,768

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Sikor napisał/a:

4,5% w tej fazie nie jest wcale takim złym wynikiem.

Hmm, "w tej fazie"? A co ty wiesz o fazie, w jakiej się to znajduje :)

Jak po optymalizacji uda sie zrobic około 30% to nawet będzie mozna coś z tym zrobić... ;)

30%? Raczysz żartować. Od początku mówię, że tą techniką się daleko nie zajdzie, a jak z testów wypadnie takie solidne 5% to będzie dobrze.

A inne pytanie natury technicznej: jaky Z80 podłączyc przez port Cartridge-a i wtedy emulować tylko ROM maszynki opartej na Z80, jaki wynik - teoretycznie - moznaby uzyskac dla emulacji ZX-Spectrum (w podstawowej wersji 48K).

Nie bardzo sobie mogę wyobrazić, jak taki układ miałby działać.

Wtedy - wczytując hipotetyczne romy z poziomu Atari - mielibyśmy dostęp do programów na kompy oparte o Z80.

Tylko że one nie tylko ROM-ami się różnią, ale też istotnie konstrukcją - no i są bardziej skomplikowane od spektrusia. Sens ma natomiast danie możliwości załadowania dowolnego programu pod adres $0000 (czyli tam, skąd Z80 startuje) i uruchomienia go, tudzież pracy krokowej, podglądu rejestrów, pamięci itp. I to już mam zrobione :)

Inna sprawa - dołączenie emulacji odczytów obrazów programów (czyli na przykład *.tap z ZX-Spectrum)?

Do tego na razie mi daleko.

2,769

(273 odpowiedzi, napisanych Programowanie - 8 bit)

Ale panowie rozumieją, że dotychczasowy "emulator" chodzi z prędkością ok. 4,5% ZX Spectrum, więc np. jeśli w spektrusiu po włączeniu zasilania napis "(c) 1982 Sinclair Research Ltd." się pojawia po 3 sekundach[1], to tu przyjdzie nań poczekać ponad minutę? Więc o jakich demkach tu mowa?

Sikor:

a) ten rejestr nie jest "wykonywany" przez Antica

b) emulację z wyłączonym Antikiem się da zrobić, zysk jest ok. 30% (czyli nie 4,5%, tylko 6,4%), ale nie ma obrazu - a myślę, że slideshow z wyłączoną wizją traci nieco na atrakcyjności.

c) Antic jest procesorem, ale wizyjnym - zasadniczo jest już na niego przerzucone to, co przerzucić było można (czyli tworzenie obrazu i dbanie o to, żeby nie migało mimo przełączania banków pamięci)



[1] nie wiem, ile to trwa, strzelam.

2,770

(273 odpowiedzi, napisanych Programowanie - 8 bit)

xxl napisał/a:

po pobraniu nie, po wykonaniu owszem - chociazby JP - a to jest dla nas istotne wykonujemy rozkaz i oczekujemy aktualnych wartosci w rejestrach

Masz rację, JP (HL) jest rozkazem, który nie wymaga zwiększenia PC. Tylko czy on występuje na tyle często, żeby przeniesienie zwiększania z części dekodującej do wykonującej w ogóle na czymkolwiek zaważyło? Moim zdaniem nie - kluczowe znaczenie mają rozkazy często używane w pętlach, a JP (HL) raczej do nich nie należy.

Słowem - to są wszystko szczegóły, warte 1 ramkę na 500 :/ Mało. Wciąż to bardziej przypomina slideshow niż emulator.

xxl napisał/a:

pc nie zawsze sie zwieksza o 1: rodzina ADC, SUB, OR, XOR, CP, INC, DEC, RLC, SRA, JP, CALL itd itd dwa razy robisz aktualizacje pc a wystarczy raz przy rozkazie (bo juz wiadomo co to bedzie) u Ciebie nie wiadomo dlatego 2 razy robisz to samo a cykle leca.

No przecież mówię, że nie bierzesz czegoś pod uwagę :) Bo to jest celowe. Owszem, jak mamy zdekodowany rozkaz CALL, to wiadomo, że za nim są dwa bajty - ale one są "za nim" w przestrzeni adresowej Z80, natomast w przestrzeni adresowej 6502 to już niekoniecznie.

prosze o przykladowy w miare krotki kod z80 z iloscia cykli 6502 w jakim sie wykonal, moze byc lista niepowiazanych rozkazow tylko dla sprawdzenia... od podania przykladu prosze o tydzien czasu na napisanie emula (tydzien jak nie bedzie w przykladowym kodzie udziwnien). moze mi sie uda :-)

Ściągnij sobie z netu ROM Spectruma i działaj :)

2,771

(273 odpowiedzi, napisanych Programowanie - 8 bit)

powyzsza petla dekodowania moze byc zmniejszona do 25 cykli (zawsze, a nie 29-51 u Ciebie), tylko trzeba zadbac o wlasciwe korzystanie z rej. y i to wydaje mi sie miejsce ktore pozwoli znacznie przyspieszyc emulacje.

Fakt, można to jeszcze ciut skrócić. Ale urwanie jednego cyklu z dekodowania przyspiesza moją pętlę testową o sześć ramek - z dobrze ponad pięciuset; a zatem przy skróceniu o 4 cykle pętla przyspieszy o 24 ramki, czyli niecałe 5% (w stosunku do emulatora, bo w stosunku do oryginału - o jakieś dwa promile). Oczywiście, to zawsze jest coś, ale jeszcze trochę mało :)

moim skromnym zdaniem procedura dekodujaca powinna byc jak najkrotsza (wykonywana najczesciej) a ciezar aktualizacji rejestru pc spoczywac na procedurze wykonywania rozkazow.

Czemu? Znasz rozkaz, który po pobraniu opkodu nie wymaga zwiększenia PC?

patrzac na to globalnie szybkosc emulacji powinna byc wieksza w moim przykladzie (nawet gdy dorobie stronicowanie po 16kb)

Patrząc globalnie - z punktu widzenia już zrobionego stronicowania - nie wydaje mi się. Prawdopodobnie nie bierzesz paru rzeczy pod uwagę, zwłaszcza w tym całym LD (HL),n. Zaimplementuj, zdebuguj, pogadamy :)

2,772

(273 odpowiedzi, napisanych Programowanie - 8 bit)

tebe napisał/a:

skoro jest przeszło 500 rozkazów CPU, to wasze w/w przykłady dekodują ich max 256

Mylisz się :)

2,773

(273 odpowiedzi, napisanych Programowanie - 8 bit)

xxl napisał/a:

i to tyle, emulec nie jest taki ciezki do zrobienia cos mi sie wydaje. cos przegapilem?

Prawie nic. U mnie dekodowanie wygląda tak:

nop lda (epc),y
    tax
    lda zzlo,x
    sta ?jp+1
    lda zzhi,x
    sta ?jp+2
    iny
    bne ?jp
    inc pc+1
    ldx pc+1
    lda hicon,x
    sta epc+1
    lda mbank0,x
    sta portb
?jp jmp $ffff

sorry, ale LD (HL),$xx nie chce mi się przepisywać ... :) mniej więcej to samo jest u ciebie, tylko w moim jest bankowanie RAM-u. No i lepsze wykorzystanie rejestru Y.

500 rozkazow :-) ufff to ja chyba zerknalem na inna tabele rozkazow z80 :-) zlamilem :-)

W tej, co ja mam, jest ich 564. Ale podobno są też jakieś nielegalne.

2,774

(273 odpowiedzi, napisanych Programowanie - 8 bit)

miker napisał/a:

może coś w typie konwertera, który "przetłumaczyłby" asm spektrumowski na pure 6502 assembler? To, o czym już kiedyś kolega Pirx wspomniał...

To jest właśnie JIT (patrz posty wyżej). http://en.wikipedia.org/wiki/Just-in-time_compilation

xxl napisał/a:

a wtedy z 18 cykli robi sie od 8, bardzo rzadko 15 a w szczegolnym przypadku 19

No, dobrze, ale gdzie tu zalety uproszczonej organizacji RAM-u, skoro oszczędności w porównaniu do wersji 64k (bankowanej) są groszowe albo żadne (istotna różnica jest tylko przy przekraczaniu granicy stron, co występuje bardzo rzadko)? Chyba tylko tyle, że uruchomienie emulca nie wymaga 130XE.

A na dodatek weź pod uwagę, że przy zajęciu 32k na pamięć emulowanego procesora masz spore szanse, że program emulatora nie zmieści ci się w pozostałym obszarze - Z80 ma dobrze ponad 500 rozkazów :)

BTW. zredukowałem dekodowanie do 29 cykli w najczęstszym przypadku (max. 51).

2,775

(273 odpowiedzi, napisanych Programowanie - 8 bit)

48 cykli na NOP-a = dużo. U mnie, gdyby nie konieczność bankowania pamięci, maximum byłoby 36 cykli. Tak samo przy ld (HL) - sprawdzenie, czy ROM, kosztuje 12 cykli (EDIT: jednak 4 :)); a jak nie ROM, to pamięć trzeba przełączyć dwa razy. No i tak to idzie.