1

witam,

programujac 6502 czego najbardziej brakuje?

- rejestrow? jakich
- rozkazow? jakich
- trybow adresowania? jakiego
- ?

moje typy, na poczatek zachowawczo:

- rejestr zerowy (8/16 bitowy rejestr, ktorego wartosc zawsze = 0)
- rejestru indeksowego 16 bitowego + podstawowe operacje na 16 bit
- trybu adresowania (ZP),#$xx
- stos dla danych, 16 bit SP

:-)

http://atari.pl/hsc/ad.php?i=1.

2

Co do rejestru zerowego to, o ile rozumiem Twoje potrzeby, jest w 65C02 instrukcja STZ :)

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

3

rozkaz/rejestr dajacy mozliwosc umiejscawiania stosu w dowolnym 'oknie' w pamieci.

4

dely: rejestr zerowy jest najwazniejszy przy indeksowaniu :/

http://atari.pl/hsc/ad.php?i=1.

5

ja w avr robie sobie

add rX,rY
adc rX+1,zero

gdzie zero to wczesniej zadeklarowany rejestr ktory ma ciagle wartosc 0
w ten sposob nie musze sie specjalnie martwic operacjami na 16 bitach

w 6502 brakuje rejestrow, a te co sa, to tez dzialaja jakos kulawo

przechodze na tumiwisizm

6 Ostatnio edytowany przez mono (2009-10-15 22:23:24)

jmp (q,x)  ;ponoć jest w wersji C
jmp (q),y
jsr (q) + wersje indeksowane
Fajne są rozkazy powrotów warunkowych z z80.
Brakuje mi czasem rozkazów przesłań pojedynczych bitów (takie mov c,bit czy mov c,/bit z mcu51, albo operacji bst, bld z avr).
Przesunięcia rejestrów x i y.

Edit 1: I resetowania watchdoga ;]

Edit 2: Gdyby tak rozpuścić wodze fantazji (niektóre mniej, niektóre bardziej przydatne):
- mnożenie 16x16=32 i dzielenie 32/16=16%16 z i bez znaku z łatwą możliwością rozszerzania precyzji
- swap (mcu51) zamieniający nybbles miejscami
- lustro akumulatora czyli bity 76543210 po operacji byłyby widziane jako 01234567
- 16-bit adres początku stosu (sp może być 8-bit)
- shifty i rotacje z i bez C oraz przesunięcie arytmetyczne w prawo (z kopiowaniem bitu znaku)
- znacznik parzystości liczby bitów
- push/pop dowolnego rejestru na stos
- jednolity adres powrotu dla jsr i dla zgłoszenia przerwania

Edit 3: Właściwie to mając swap i mirror użyteczne przy naszych trybach graficznych 1 i 16-kolorowych, można by rzecz uogólnić jeszcze na tryby 4-kolorowe - taki rozkaz lustrzanego odbicia paczek bitów:
  mir #1    ;76543210 -> 01234567
  mir #2    ;76543210 -> 10325476
  mir #4    ;76543210 -> 32107654

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

7

to co mikey tyle ze + mozliwosc zmiany wielkosci stosu (jedna strona to cholernie malo).

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

8 Ostatnio edytowany przez macgyver (2009-10-15 14:56:59)

mi brakuje mnożenia, dzielenia, sinusów i arcustangensów, najlepiej z precyzją 16-bit minimum


a tak serio - co za haczyk został ukryty w tym pytaniu? ;)

9

bo XXL wie coś o nowym upgrade i Was podpuszcza :lol:

10

instrukcja mnozenia i/lub dzielenia
16-bitowy rejestr indeksowy

11

Żeby 6502 się programowało tak jak Z80 albo 8086 ;-)
Dobra, nic już nie mówię...

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

12

Cosi: nie bluźnij ;)

13

mikey napisał/a:

rozkaz/rejestr dajacy mozliwosc umiejscawiania stosu w dowolnym 'oknie' w pamieci.

65c816? :)

Kontakt: pin@usdk.pl

14

Mnie 6502 podoba się taki jaki jest.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

15

Jak się komuś nie podobało to się przysiadał na amigę albo esteka. Teraz już za późno na narzekanie :P

What can be asserted without proof can be dismissed without proof.

16

Odwracając pytanie: niepotrzebne są znaczniki V, B, D, I i instrukcje ich dotyczące.

https://www.youtube.com/watch?v=jofNR_WkoCE

17

Hehe - w ogóle przerwania nie są potrzebne. Rozpraszają tylko człowieka niepotrzebnie ;). Vide Propeller - http://www.parallax.com/tabid/407/Default.aspx (btw. czy ktoś miał okazję tego używać?).

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

18

kiepska prowokacja Fox :p

brakuje tez wywolywania podprogramow w zaleznosci od znacznikow...

faktycznie z80 w tym temacie ma sporo pozytecznych rozkazow.
czy mozna by bylo dodac do 6502 kilka rejestrow? zapewnic kompatybilnosc z z80 lub innym na poziomie zrodel?
w rozkazach nowego proca uzywac rejestrow 6502 zachowac jeden rejestr stanu procesora?

czy prefixem dodatkowych rozkazow 6502 moze byc kod BRK?

    ld XY,$8080       ; rejestry X, Y 6502 rozkaz z80
    ld SP,$8000       ; rejestr z80, rozkaz z80
_1 push XY            ; rejestry x, y 6502, rozkaz z80
    dex
    bpl _1

temat nie jest nowy, analizujac kod pewnej starej gry arcade zauwazylem dziwna dla mnie konstrukcje wywolywania podprogramu ale nie rozkazem jsr tylko brk (teraz wiem ze to byl podprogram) z modyfikacja adresu powrotu, podprogram nie zachowywal zawartosci wszystkich rejestrow... to powyzej jest jakby rozwinieciem tej mysli.

jakie sa slabe punkty?

http://atari.pl/hsc/ad.php?i=1.

19 Ostatnio edytowany przez mono (2009-10-16 11:19:19)

1. Czas obsługi brk od jsr teoretycznie różni się jednym cyklem zdaje się, ale co jeśli brk zrobisz podczas obsługi irq?
2. Blokada przerwań irq podczas brk może być zaletą lub wadą zależnie od kontekstu.
3. 3 bajty na stosie zamiast 2 - czy to wada, czy zaleta też zależy od kontekstu.
4. Adres powrotu odłożony na stosie można wykorzystać do pobrania parametrów następujących po opkodzie brk, ale trochę z tym zabawy.
5. Konieczność dzielenia wektora brk z irq a co za tym idzie odróżniania źródła przerwania.
Taką "emulację" dowolnego procesora prefiksowaną brk można zrobić softwareowo, ale szybkie to nie będzie :/

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

20

Bxx label   - wersja 16-bit skoku względnego
BRA label   - skok bezwarunkowy względny wersja 16-bit
BSR label   - skok względny do procedury głównie 16-bitowa wersja (Branch to SubRoutine)
JSR (ABS)
JSR (ABS,X)
DEW/INW
PHW/PLW
16-bitowy rejestr stosu z możliwością przełączenia na wersje 8-bit dla zachowania kompatybilności
możliwość ustawienia starszego bajtu strony "zerowej"
LDA/STA (d,SP),Y   - odczyt/zapis względem SP (SP - stack pointer)