1,476

(53 odpowiedzi, napisanych Fabryka - 8bit)

piotrv napisał/a:

667 bajtów - najprostszy program który zrobiłem - czekanie na wciśnięcie klawisza

Sporo zajmuje właśnie ten crt0, który m.in. pobiera linię poleceń z różnych DOSów (w tym tak archaicznych jak DOS XL). Źródło tego (w pliku .s) jest w źródłach cc65.

piotrv napisał/a:

Wynika z tego że moja prosta funkcja zajeła jakieś 300 bajtów

A kompilowałeś z opcją -O (optymalizacja) ?

piotrv napisał/a:

printf("a[%d]=%d\n", i, a[i]);

Jeśli printf ma służyć tylko do formatu %d, to przesada go stosować.

1,477

(44 odpowiedzi, napisanych Programowanie - 8 bit)

piotrv: 4 lata temu floaty w cc65 były "TODO" i pewnie nic się nie zmieniło. W planach było użycie standardowych 32-bitowych IEEE big endian (czyli wykładnik trzymany w akumulatorze, mantysa w rejestrze X i sreg). Ulrich stwierdził, że podstawowym problemem nie są procedury dla 6502, lecz przeróbki kompilatora (w którego wnętrznościach orientuje się tylko on sam).

Emulację floatów przy pomocy funkcji stałoprzecinkowych w C zdecydowanie odradzam - szybciej będzie chodzić BASIC, szczególnie Turbo BASIC.

1,478

(51 odpowiedzi, napisanych Emulacja - 8bit)

AdamSoTe napisał/a:

Jeszcze odnośnie instrukcji XCHG AL, AH. Wykonuje się ona "zawsze" 1.5 cykla (latency) i ma 1 cykl throughput. ROL AX,8 wykonuje się 1 cykl na większości procesorów, albo 4 cykle (to jest tylko na rodzinie procesorów 0xF2). Ponadto nie występuje tutaj coś takiego jak "problem emulacji rejestrów", bo jest wykorzystywana tylko część rejestru a nie całość. Jedyne co może wystąpić to "partial registry stall" albo "registry stall", czyli np.:

rol eax, 8
mov al, ah

druga instrukcja, czeka na wynik pierwszej, gdyż wartość 'ah' jest zależna od wykonania poprzedniej instrukcji. Bynajmniej nie wynika to z podziału rejestrów. Problem pojawia się jedynie w sytuacji gdy chcemy użyć rejestru, który wcześniej posłużył jako rejestr docelowy.

"Problem emulacji rejestrów" ZTCW pojawił się w PPro i ciągnął się co najmniej do PIII (wiele osób jeszcze je ma). Kiedy zniknął? Z odczytem ah z zapisanego eax ZTCW nie było większego problemu (najwyżej zwykły "registry stall"). Problem był, gdy zapisaliśmy ah i odczytywaliśmy ax lub eax (czyli w przypadku xchg al,ah, po którym zapewnie chcemy użyć ax).

1,479

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

Na początek może być mono.

Po prostu ja kiedyś zapisałem z 15 plansz i nie mogłem ich wczytać (chyba RK się wieszał przy wczytywaniu). Zdaje się, że później czytałem, że ktoś też miał taki problem, ale nie dam głowy.

1,481

(51 odpowiedzi, napisanych Emulacja - 8bit)

Gdyby ktoś sądził, że "XCHG AL, AH" będzie szybsze od ciągu tych 5 instrukcji:
http://www.codingnow.com/file/pentopt.htm#19_1

1,482

(51 odpowiedzi, napisanych Emulacja - 8bit)

Racja, ROL się ślimaczył tylko na 186 i 286:

ROL     Rotate bits left

    operands    bytes   8088    186     286     386     486     Pentium
    reg, 1       2       2       2       2       3       3       1   PU
    mem, 1    2+d(0,2)  23+EA   15       7       7       4       3   PU
    reg, cl      2       8+4n    5+n    5+n      3       3       4   NP
    mem, cl   2+d(0,2) 28+EA+4n 17+n    8+n      7       4       4   NP
    reg, imm     3       -       5+n    5+n      3       2       1   PU
    mem, imm  3+d(0,2)   -      17+n    8+n      7       4       3   PU*

       * = not pairable if there is a displacement and immediate

Za to RCL (czyli ROL z 6502) wygląda, że jeszcze w Pentium miał złożoność liniową:

RCL     Rotate bits left with CF

    operands    bytes   8088    186     286     386     486     Pentium
    reg, 1       2       2       2       2       9       3       1   PU
    mem, 1    2+d(0,2)  23+EA   15       7      10       4       3   PU
    reg, cl      2       8+4n    5+n    5+n      9      8-30    7-24 NP
    mem, cl   2+d(0,2) 28+EA+4n 17+n    8+n     10      9-31    9-26 NP
    reg, imm     3       -       5+n    5+n      9      8-30    8-25 NP
    mem, imm  3+d(0,2)   -      17+n    8+n     10      9-31   10-27 NP

Jeszcze XCHG dla ciekawskich:

XCHG    Exchange register/memory with register

     operands   bytes   8088    186     286     386     486     Pentium
     reg, reg    2       4       4       3       3       3       3   NP
     reg, mem  2+d(0-2)  25+EA  17       5       5       5       3   NP
     mem, reg  2+d(0-2)  25+EA  17       5       5       5       3   NP

     acc, reg    1       3       3       3       3       3       2   NP
     reg, acc    1       3       3       3       3       3       2   NP

     in above: acc = AX or EAX only

(zaczerpnięte z http://security-protocols.com/programmi … pcode.html)

1,483

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

http://atariarea.krap.pl/forum/viewtopic.php?id=886

1,484

(72 odpowiedzi, napisanych Emulacja - 8bit)

"intrinsics" są oczywiście równie przenośne jak asm. VU w PS2 pewnie rzeczywiście lepiej programować w asmie (nigdy nie twierdziłem inaczej), jednak do emulacji Atari raczej na niewiele się zda (a wątek dotyczy asm vs C w kontekście emulacji Atari). Co do problemów z nowym hardware, to wkrótce będzie PS3 i wszyscy zapomną o PS2. ;)

1,485

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

Ja z kolei jestem lajkonikiem jeśli chodzi o MIDI. Zasadniczo potrzebny jest algorytm zamiany rejestrów AUDCx, AUDFx i AUDCTL na to, co jest w MIDI. Może być nawet w Pascalu lub BASICu. Edit: po polsku też. :)

Muzy z samplami raczej odpadają, natomiast stereo i kilka razy na ramkę warto uwzględnić. Częstotliwość wołania playera 6502 może być definiowana w SAPie z dokładnością do skanlinii (= 1773447 Hz / 114).

Podejrzewam, że największym problemem będą tablice mapujące zniekształcenia i filtry POKEYa na instrumenty MIDI. Ale może koledzy muzycy pomogą?

1,486

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

swiety napisał/a:

napisać program który będzie generował plik na podstawie muzyczki cmc

Czemu ograniczać się do CMC ?
Może tak ASAP2MIDI ?

1,487

(72 odpowiedzi, napisanych Emulacja - 8bit)

Adam Klobukowski napisał/a:

Zalezy co sie rozumie pod pojeciem unalignedwords. Jesli chodzi o nieparzyste adresy to na m68k bodaj od 020 jest to mozliwe, ale wolne. Jesli chodzi o inny align (adres zawsze parzysty) to nie powinno byc problemow z wydajnoscia.

Rzeczywiście nie wyraziłem się jasno. Chodzi o to, czy dostęp do niewyrównanego słowa (16- lub 32-bitowego) jest najwyżej 4-krotnie wolniejszy od wyrównanego. Mniej-więcej taka jest granica, przy której opłaca się używać w Atari800 dostępu do całych słów, które potencjalnie mogą być niewyrównane (zazwyczaj są wyrównane).

Czyli ficzer "unalignedwords" odpada jeśli procesor w ogóle nie daje dostępu do niewyrównanych słów lub daje tylko dzięki pomocy systemu operacyjnego, który obsługuje wyjątek dostępu do niewyrównanych słów.

1,488

(72 odpowiedzi, napisanych Emulacja - 8bit)

jellonek napisał/a:

co do stosowania jednostek wektoryzujacych - dobry kompilator powinien ,,zauwarzac'' odpowiednie konstrukcje i je wektoryzowac

Jak najbardziej. A jeśli ich nie zauważa ani nie zauwarza, to można użyć w C "intinistic functions",
czyli wywołań funkcji, które kompilator zamienia na odpowiednie instrukcje asma.

4-krotne przyspieszenie to bajki. Procesory są zoptymalizowane pod kątem przetwarzania "zwykłych" instrukcji (np. często mają więcej potoków dla nich). Sam kiedyś robiłem testy, w których na Dureniu 700 procedura na zwykłych instrukcjach 386 była kilkadziesiąt procent szybsza od procedury z użyciem MMX, chociaż w przypadku MMXowej było wykonywane kilkukrotnie mniej instrukcji. Na Pęntlum III 500 MMX miał przewagę zaledwie kilku procent - szkoda zachodu.

1,489

(21 odpowiedzi, napisanych Bałagan)

Prowokacja!

1,490

(72 odpowiedzi, napisanych Emulacja - 8bit)

jellonek napisał/a:

mozesz tez powiedziec na zastosowanie jakiej konstrukcji nie pozwala C?

ja mogę powiedzieć jakich konstrukcji asemblera nie ma bezpośrednio w C: zamiana słów (xchg), zamiana kolejności bajtów (bswap), obroty (rol, ror, rcr, rcl), operacje BCD (daa, das) i na cyfrach dziesiętnych (aaa, aas, aam, aad), dzielenie z resztą (jedna operacja, dostępny wynik dzielenia i reszta). Obroty i operacje BCD mogą się przydać w emulacji 6502, ale bez przesady, przecież programy na Atari rzadko używają takich ficzerów.

1,491

(72 odpowiedzi, napisanych Emulacja - 8bit)

nosty napisał/a:

Fox - mylisz sie. Znaczy moze i gubio ale za diabla tego nie widac. A na Atari800 juz przy 1:3 widac jak cholera.

Podaj dokładne nazwy i wersje tych emulatorów oraz na jakim sprzęcie je uruchamiasz.

1,492

(72 odpowiedzi, napisanych Emulacja - 8bit)

drac030: Zgadza się. Np. pisząc if-a nijak nie można wytłumaczyć kompilatorowi, że warunek będzie np. w 90% spełniony. W asemblerze jest tu większe pole do popisu. To jednak może tłumaczyć 50% a nie 600% różnicy w wydajności. Taką różnicę w przypadków programów na Atari "migających" bankami pamięci mogłoby tłumaczyć użycie sprzętowego mechanizmu stronicowania, zamiast przepisywania pamięci. Jednak sprzętowe stronicowanie można również osiągnąć w C wywołując odpowiednie funkcje systemowe. Co więcej, w asemblerze też trzeba wywołać te same funkcje systemowe, o ile emulator pracuje pod kontrolą systemu operacyjnego (a nie np. DOSa).

1,493

(72 odpowiedzi, napisanych Emulacja - 8bit)

Sikor napisał/a:
Fox napisał/a:

Na 99% nie spotkałem się nigdy na giełdzie jednocześnie z Tobą, Mikerem i Lewisem.

A jednak!!!

kto jeszcze był i po co się spotkaliśmy?

Sikor napisał/a:

I wtedy padło to słynne "napisz se".

Apropos czego? Ciężko mi sobie wyobrazić, abym coś takiego powiedział Tobie, Mikerowi albo Lewisowi.

Sikor napisał/a:

Twoje stwierdzenie posłużyło jakiś czas później do tytułu pewnej produkcji, gdzie znajdują się wyłącznie wypowiedzi z atariarea, zresztą jest ona w bazie ;)

Czyli nie było w niej "napisz se" ?

Moja wersja zdarzeń w HQ SikorSoftu napisał/a:

Fox- mógłbyś na chwilę podłączyć paddle do atarki, żebym mógł coś sprawdzić?
Sikor coś się tłumaczy, że nie ma jak podłączyć żadnej z wielu swoich atarek do telewizora, ale że może mi pożyczyć paddle
Fox- ale ja nie chcę pożyczać, dobra, dzięki, zapomnij
Sikor (jak to Sikor) - ja i tak nie używam, a Ty może zrobisz jakąś grę
Fox- hahaha
Sikor- no weź
Fox- ale nie będę miał czasu, żeby się spotkać i oddać
Sikor- możesz trzymać ile chcesz
Fox (nie chcąc robić przykrości) - no dobra...

1,494

(14 odpowiedzi, napisanych Scena - 8bit)

Ramos napisał/a:

Jednak kontakt z PG jest tak trudny, że nie mam cierpliwości czekac na email pół roku.

Widocznie PG "wziął urlop". W każdym razie obecnie odpisuje szybko, nawet w przeciągu kilku minut.

Ramos napisał/a:

Z tego co m i ostatnio odpisał PG pomysł jest dobry, ale na samych pochwałach i małych uwagach email się skończył. Skąd mam wiedzieć, że wysłane przeze mnie informacje co SAPów czy same rpy będa umeiszone w archiwum.

Jeśli wysłałeś mu SAPy i/lub informacje o autorach, a on podziękował, to znaczy, że będą umieszczone.

1,495

(72 odpowiedzi, napisanych Emulacja - 8bit)

Brakowało mi dyskusji takiej jak ta:

http://atariki.krap.pl/index.php/Dyskus … lik%C3%B3w

:)

drac030 napisał/a:

Żeby wszystko było zupełnie jasne, ja nie mam nic do udowadniania, ja wiem swoje.

Oczywiście masz prawo do oryginalnych poglądów i wcale nie musisz ich uzasadniać.
Nie podobało mi się to, że podważasz argumenty większości bez podania namacalnych (dla większości) faktów.
Np. argumenty Jellonka przeciwstawiasz obserwacjom, których nikt oprócz Ciebie nie może zweryfikować:

drac030 napisał/a:

Jellonek, ty teoretyzujesz, a ja napisałem w asemblerze silnik 6502 sześć razy szybszy od analogicznego kodu generowanego przez gcc. Taka jest różnica między zdaniem moim a twoim.

Natomiast tę wypowiedź:

drac030 napisał/a:

może zawieśmy tę dyskusję, bo niestety ja wiem, co mówię, a Ty nie

widocznie źle odczytałem w ten sposób, że ja nie wiem, co mówię i m.in. dlatego odpowiedziałem:

Fox napisał/a:

Bardzo niegrzecznie z Twojej strony.

Myślę, że teraz wiem, że mówiłeś, że ja nie wiem, co Ty mówisz. W takim razie zgadzam się i cofam posądzenie o niegrzeczność z Twojej strony.

1,496

(72 odpowiedzi, napisanych Emulacja - 8bit)

A ja myślałem, że chodziło o to:

http://atariarea.krap.pl/forum/viewtopic.php?id=219

:)

Sikor napisał/a:

Przypomnij sobie pewną giełdę pod Stodołą, Miker może to potwierdzić, bo był przy rozmowie. ... O ile pamiętam, był przy tym także Lewis.

Na 99% nie spotkałem się nigdy na giełdzie jednocześnie z Tobą, Mikerem i Lewisem.

Sikor napisał/a:

Aha, przy spotkaniu wtedy pożyczałeś ode mnie albo oddawałeś mi padalce do Atarki, tak tytułem odświeżenia pamięci ;)

Pożyczyłeś mi je (a raczej wepchnąłeś, bo ja ich nie chciałem) w swoim mieszkaniu.

1,497

(72 odpowiedzi, napisanych Emulacja - 8bit)

drac030 napisał/a:

Na ARM-ie nie ma dostępu do słów spod nieparzystego adresu?

O ile wiem, sprzętowo nie.

Przy okazji: w emulatorze taki ficzer jest stosowany lub nie w zależności od procka. Kto posiada wiedzę o tym, czy opłaca się go stosować na konkretnych prockach, proszony jest o uzupełnienie/korektę poniższego fragmentu Atari800:

 alpha* | arm* | hppa* | ia64 | mips* | sparc*)
     enable_unalignedwords=no
     ;;
 i*86 | m68* | powerpc* | x86_64)
     enable_unalignedwords=yes
     ;;

1,498

(72 odpowiedzi, napisanych Emulacja - 8bit)

alex napisał/a:

Fox: A kiedy przyśpieszysz to co się da? ;)

Tak szybko, jak się da. :)

1,499

(72 odpowiedzi, napisanych Emulacja - 8bit)

drac030 napisał/a:

Czy to nie aby Ty jesteś autorem powiedzenia "napisz se"?

Jest mi ono niesłusznie przypisywane. :)

1,500

(72 odpowiedzi, napisanych Emulacja - 8bit)

jellonek napisał/a:

fox: zauwaz ze drac030 nigdzie nie wspomnial ze porownywal swoj assemblerowy kod z kodem zaczerpnietym z atar800

rzeczywiście, umknał mojej uwadze opis drac030: "Król Offtopiku" ;)