Mam kilka pytan odnosnie 65816, liczylem ze odpowie na nie Laoo jako ze juz cos napisal dla 816, ale widocznie jest tak zapracowany ze nie odpowie :). Teraz wiec licze na to ze znajdzie sie kilka osob na aarrea ktore programowaly na 816 i udziela odpowiedzi na n/w pytania.
1. Jak to jest aktualnie i czy bedzie mozliwe gdy dopalka Pasia ujrzy swiatlo dzienne, konkretnie chodzi o adresowanie 24 bitowe:
[zp] - strony zerowej pośredni długi - jak wyżej, jednak pobierany ze strony zerowej adres jest 24-bitowy.
[zp],Y - strony zerowej pośredni długi postindeksowany - tak, jak (zp),Y tylko z 24-bitowym adresem na stronie zerowej.
[abs] - pośredni długi - jak (abs) tyle tylko, że adres jest 24-bitowy.
long - absolutny długi - argumentem jest 24-bitowy adres.
long,X - absolutny długi indeksowany
Czy wogole mozna uzywac trybu [] lub long piszac program dla 65816,nie majac pamieci widzianej jako ciagly obszar. Czy w tym adresowaniu najstarszy bajt to kod banku pamieci, czyli czy mozna by wpisac adres kod_banku$4000..$7FFF np. "lda $835000" bo wtedy nie trzeba by miec pamieci zorganizowanej liniowo tylko sprytniejszy asembler.
2. Jak w asemblerze dla 65816 zapisac ten tryb adresowania:
ds,S - wskaznika stosu z przesunięciem - ośmiobitowa dana natychmiastowa ds jest dodawana do wartości wskaĽnika stosu. Tryb ten pozwala na adresowanie 256 bajtów wewnątrz stosu, licząc od jego szczytu.
(ds,S),Y - wskaznika stosu z przesunięciem pośredni indeksowany - do adresu pobranego z miejsca wskazanego przez ds,S dodawana jest wartość rejestru Y. Pozwala to na trzymanie wektorów na stosie, jeśli gdzie indziej nie ma miejsca.
czy asembler rozpoznaje jakies wyrazenia kluczowe 'ds' i 'S'
i w kodzie programu piszemy lda ds,S ?
3. Czy asembler dla 65816 rozpoznaje wartosc rejestru D, ktory okresla adres strony zerowej, tak aby podczas asemblacji odwolania do nowo ustawionej strony zerowej byly zasemblowane jako 2-bajtowe rozkazy a nie 3-y bajtowe.
Moze mi ktos przedstawic przyklad programu w ASM ze zmiana wartosci rejestru D i odwolanie do tak nowo ustawionej strony zerowej ?
4. Jakiego asemblera uzywal Laoo do napisania benchmarka porownujacego 6502 i 816 ?
5. Jak realizowana jest obsluga makr w asemblerach ?
Czy po napotkaniu komendy .MACRO nastepuje przepisanie zawartosci takiego makra gdzies do wydzielonego obszaru pamieci, aby pozniej podczas dalszej asemblacji tylko odwolywac sie w ten obszar i ciagle go asemblowac, czy tez zapamietac w tym obszarze dane zamienione na jakies symbole (tokeny) i potem je juz szybciej interpretowac, a moze zawartosc makra jest wysylana do pliku zewnetrznego pozniej po napotkaniu odwolania do makra wywolywana jest asemblacja pliku z makrem i parametrami ?
Wiadomo ze kazdy moze napisac sobie obsluge makr po swojemu, ale chcialbym sie dowiedziec jak to jest robione "zwyczajowo", jako ze wczesniej nie mialem okazji zetknac sie z takim zadaniem.