atarionline.pl Nielegalne instrukcje procesora 6502C - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

  1.  
    Witam
    Szukam wszelakich informacji na ten temat , lacznie z radosna tworczascia wykorzystujace tego typy rozakazy
    • 2: CommentAuthormono
    • CommentTime10 Oct 2010
     
    Trochę jest w "Mikroprocessor 6502 i jego rodzina", którego możesz szukać w tym serwisie w zbiorze książek.
    Warto by przejrzeć magazyny dyskowe (w Syzygy albo Serious bodajże coś było).
    • 3: CommentAuthormarok
    • CommentTime10 Oct 2010
     
    W Bajtku z marca 1995 roku można znaleźć artykuł KMK "Nielegalne rozkazy 6502" z opisem i dokładną charakterystyką tych rozkazów (poza trzema które operują na wskaźniku stosu i nie zostały w artykule opisane, na co specjalnie zwrócił uwagę autor). Prawie jestem pewien że w którymś Seriousie jest artek Krógera na ten sam temat. Nie pamiętam dokładnie czy treści tam zawarte poszerzają wiedzę jaką można uzyskać z tego pierwszego źródła, ale na pewno warto to sprawdzić.
    • 4: CommentAuthortebe
    • CommentTime10 Oct 2010 zmieniony
     
    nielegale to sobie można używać na C64, a nie na XE/XL, problem polega na różnych modelach 6502 montowanych w XE/XL, tak że jeśli nielegal zadziała u Ciebie nie masz gwarancji że zadziała u innego użytkownika XE/XL

    jeśli jeszcze ktoś ma zamontowany 65816 to już wogóle zapomnij, chyba że chcesz mu "powiesić" maszyne
    • 5:
       
      CommentAuthorKrótki
    • CommentTime10 Oct 2010
     
    Nieprawda Tebe, w każdym (niezmodyfikowanym) Atari zestaw nielegalnych rozkazów jest taki sam. Zapewne myślisz tutaj o procesorze 65C02, ale ten nie był montowany w Atari.
    • 6: CommentAuthorBartoszP
    • CommentTime10 Oct 2010
     
    Popatrz tu:

    ->link<-
    ->link<-
    ->link<-
    ->link<-

    Albo po prostu tu:
    ->link<-
    • 7: CommentAuthortebe
    • CommentTime10 Oct 2010
     
    kiedyś napisałem intro do inertii playera, u mnie na 65XE działało z nielegalami, na 800XL były śmieci
    • 8:
       
      CommentAuthorKrótki
    • CommentTime10 Oct 2010
     
    A, to sory. Ciekaw jestem jaki procesor siedział w tym 800XL.
    • 9: CommentAuthor0xF
    • CommentTime11 Oct 2010
     
    Dobrym źródłem jest kod źródłowy emulatora Atari800.
  2.  
    Dzieki za pomoc :-)
    • 11: CommentAuthorxxl
    • CommentTime11 Oct 2010
     
    tak na szybko to jest kilka rozkazow ktore faktycznie mogly by sie do czegos przydac:
    INS;
    DCM;
    LAX;
    ANX;
    NOP 2 i 3bajtowy
    • 12: CommentAuthorpin
    • CommentTime11 Oct 2010
     
    .. a ja zastanawiam się nad czymś innym. Co by było, gdyby dla 65c816 kod przestawiał by sobie stronę zerową tak, by ta zawsze znajdowała się w obszarze wykonywanego kodu. Bo jeśli rozkazy odwołujące się do strony zerowej są wykonywane w określonej - mniejszej liczbie cykli, to tym sposobem można by znacznie przyspieszyć działanie programu. Nie jestem koderem, nie znam się, tak tylko pytam. TeBe - czy to możliwe do zrealizowania?
    • 13: CommentAuthor0xF
    • CommentTime11 Oct 2010
     
    Ogólnie nie ma co liczyć, że te rozkazy są przydatne do optymalizacji. Kiedyś widziałem jeden efekt na C64 używający LAX, a sam wymyśliłem efekt używający ALR.

    Pin - nic z tego. Rozkazy używające strony zerowej są szybsze, bo mają 2 bajty zamiast 3. Nie ma znaczenia, gdzie te bajty są.
    • 14: CommentAuthorxxl
    • CommentTime11 Oct 2010
     
    wezmy przyklad, chcemy drukowac napisy np. na waskim ekranie, tryb hires, zestaw znakow mamy standardowy.

    ldy #7
    ldx #$e0
    start
    lda fonts,y
    sta ekran,x
    txa
    sec
    sbc #$20
    tax
    dey
    bpl start


    z rozmazem nielegalnym moze to wygladac tak:

    ldy #7
    ldx #$e0
    start
    lda fonts,y
    sta ekran,x
    txa
    sax #$20
    dey
    bpl start


    czyli oszczednosc kilku bajtow dlugosci programu oraz 32 cykle procesora mniej na 1 znak ? dobrze mysle?

    moze by sie zebrac w sobie i napisac kilka przykladowych procedurek jak nielegale moga byc uzywane?

    0xF ma chyba najwieksze w tym doswiadczenie wiec moze by cos zapodal?
  3.  
    Celem zebrania informacji o "nielegalnych" rozkazach byla wlasnie chec jak najwiekszej optymalizacji - 32 cykle procesora to calkiem sporo czasu na inne zadania :-).
    Problemem tylko jak mniemam bedzie "uruchomialnosc" tego kodu na innych atarynkach :-(
    • 16:
       
      CommentAuthorTheFender
    • CommentTime11 Oct 2010
     
    Miejmy tylko nadzieję (w świetle niedawnego wiodącego tematu zastępczego), że za nielegalne instrukcje Sanepid nie zaplombuje Atarek ;) (...przepraszam, musiałem :)
    • 17: CommentAuthor0xF
    • CommentTime12 Oct 2010
     
    Nie mam pod ręką żadnych gotowych przykładów.

    Powyższy przykład jest niezły, ale na pierwszy rzut oka widać, że sec można wynieść przed pętlę. Możemy też optymalizować go na różne inne sposoby - np. przeorganizować font, aby indeksować go X - i już mamy tak samo szybki kod bez uciekania się do nielegalnych rozkazów.
    • 18: CommentAuthorxxl
    • CommentTime12 Oct 2010 zmieniony
     
    ale kosztem tego, ze nalezaloby trzymac w pamieci dwa zestawu znakow jeden dla ekranow graficznych a drugi dla ekranow tekstowych, a przy rozkazie nielegalnym tylko jeden zestaw wspolny. zauwazylem tez rozkaz ktory mozna uzywac tak: ldx (zp),y lub dec (zp),y - to jest tez bardzo uzyteczne

    ---
    np. zXemulator bardzo czesto korzysta z takich kontrukcji

    lda (zp),y
    tax
    lda adres,x


    a moglo byc

    lax (zp),y      ; nielegalny
    lda adres,x


    oszczednosc bajtu i 2 cykle. moglo by to przyspieszyc dzialanie...
    • 19:
       
      CommentAuthorpirx
    • CommentTime12 Oct 2010
     
    miałem atarkę "made in china", ale raczej nie 800XE, na której nie działały procki z nielegalami. dokładnie nie badaliśmy sprawy, uznawszy, że skoro coś działa a coś nie działa to nie można tego używać w komercyjnym sofcie :)

    Ale teraz czasy są inne - to i tak hobby, więc myślę, że spokojnie można już nielegali używać, szczególnie gdyby demko / gra sprawdziła, czy dany sprzęt / emulator nielegale wspiera :]
    • 20: CommentAuthorpin
    • CommentTime12 Oct 2010
     
    Jeśli program sprawdza czy można fizycznie użyć nielegala - to czemu nie. Jeśli nie sprawdza - to na większości zlotów temat nie przejdzie, lub być może odbędzie się osobne kompo :)
    • 21: CommentAuthorgorgh
    • CommentTime12 Oct 2010
     
    na AAge niejaki supercat pisał ciekawie o przyczynach niestabilności nielegalnych instrukcji
    ->link<-
    • 22: CommentAuthortebe
    • CommentTime13 Oct 2010
     
    pin na Twojej atarce nielegale nie zadziałają, masz pzecież 65816
    • 23: CommentAuthorAmun-Ra
    • CommentTime13 Oct 2010
     
    Nielegalne instrukcje to bardzo zły pomysł.
    • 24:
       
      CommentAuthorKaz
    • CommentTime22 Oct 2010
     
    Amun-Ra, eee... dlaczego? Demko prezentujace efekty z wykorzystaniem nielegali byloby ciekawe.
    • 25: CommentAuthorxxl
    • CommentTime7 Oct 2020
     
    publikacja z 88 roku "Komputer", uzycie trzybajtowego NOPa

    • 26: CommentAuthorpin
    • CommentTime7 Oct 2020
     
    ojojojojjjj - daj na mszę ;)
    • 27:
       
      CommentAuthorjhusak
    • CommentTime8 Oct 2020 zmieniony
     
    Ten 3bajtowy nop można zastąpić instr. bit, będzie to samo.

    Pytanie: dlaczego jesteście przeciwnikami nieudokumentownych rozkazów?

    Ja tylko bym tego nie stosował w komercyjnych produkcjach i chyba w systemach operacyjnych i ważnych użytkach. Ale to ja.

    Życzę wszystkim świetnej zabawy z nieudokumentowanymi rozkazami :)
    • 28: CommentAuthorxxl
    • CommentTime8 Oct 2020
     
    na stosowaniu nielegali "przylapano" takich wydawcow jak: Hudson, Virgin, Bandai, Microprose, Taito, Mindscape ;-)
    • 29: CommentAuthorpin
    • CommentTime8 Oct 2020
     
    i ileż to programów w nielegalami opublikowali? :)
    • 30: CommentAuthorbob_er
    • CommentTime8 Oct 2020
     
    @Kuba - przyczyna jest taka, że pewna ilość osób zainwestowała w 65816, a na nim nielegale nie działają.
    No, i się awanturują przy każdym ich wspomnieniu.
    Jako, że aktywnych koderów na asm6502 jest chyba z 10 (liczę tych, co w ostatnich 5 latach coś w asm napisane wydali) albo niewiele więcej, jakaś ich część ma 65816 więc te pozostałe niedobitki, które nie mają nic przeciwko nielegalom giną w tłumie :).
    • 31: CommentAuthorpin
    • CommentTime8 Oct 2020
     
    Właściwie to dochodzi do tego zysk oscylujący w okolicach zera. No może w intrach 256 te kilka bajtów do przodu jest wydoczną korzyścią, fakt :)
    • 32: CommentAuthortomaswoj
    • CommentTime8 Oct 2020
     
    Zysk jest niezerowy, zwlaszcza w cwiartkach ;)

    A koderow 6502 tez sie jeszcze kilku znajdzie.

    Osobiscie nielegali uzywam, ku uciesze takich ich smakoszy jak pin czy vasco :P
    • 33: CommentAuthorbob_er
    • CommentTime8 Oct 2020
     
    @pin - ale tu nie chodzi o zysk, tylko o radochę :)
    • 34: CommentAuthorpin
    • CommentTime8 Oct 2020
     
    Chyba tylko, bo kolega z miejscowości uzdrowiskowej insynuje zysk zdaje się :)
    • 35: CommentAuthorszeryf
    • CommentTime9 Oct 2020
     
    nielegale rulez! :)
    • 36: CommentAuthorbob_er
    • CommentTime9 Oct 2020 zmieniony
     
    No, niektóre są fajne, np. LAX, dzięki któremu mamy odpowiednik nieistniejącego LDX (zp),y.
    Swoją drogą - ciekawe, czy ktoś znalazł racjonalne użycie dla ARR dla D=1?

    edit: uwaga o D.