Sens życia znalazłem, ale zgubiłem.
A nie sie tam jakoś do dzieciaków nie spieszy.
Lubię dzieci, ale cudze.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
SprEd 1.3.6 Bocianu wydał kolejną, szybko następującą wersję 1.3.6 swojego edytora duszków. Sprawdź, co nowego!
Gopher2600 0.50.1 Jeden z bardziej zaawansowanych emulatorów Atari 2600.
SprEd 1.3.2 od Bocianu Bocianu wydał nową wersję przeglądarkowego edytora duszków SprEd. Odkryj nowe funkcje w wersji 1.3.2!
RM800XL coraz bliżej RM800XL to nowoczesne wcielenie kultowego Atari 800XL, które łączy tradycję z nowoczesną technologią.
Arkanoid z PC na Atari z VBXE Trwają prace nad portem Arkanoida z PC na 8-bitowe Atari, wykorzystującym możliwości rozszerzenia VBXE.
atari.area forum » Posty przez Lizard
Sens życia znalazłem, ale zgubiłem.
A nie sie tam jakoś do dzieciaków nie spieszy.
Lubię dzieci, ale cudze.
AY nadal gra mono. Stereo jest na przetwornikach cyfrowo/analogowych, na których można posłuchać 8-bitowych sampli z częstotliwością 50kHz. (np. moduły). STE posiada paletę 4096 kolorów, a ST(fm) - 512 i 2 złącza joysticków analogowych (choć to nie jest aż tak istotne).
to jest po to, be equ pod MP zapie.. .2x szybciej ..
To MP korzysta ze standardowego urządzenia E: ? ;)
a tak serio to qe dla 6502 jest równie szybki
Bo nie za bardzo można go przyspieszyć poprzez używanie rejetrów 16-bit (trzeba by wyłączać przerwania, a to by raczej spowolniło). Powinien być za to krutszy.
Już ktoś za czasów Atari magazynu, z tejże redakcji powiedział, że MyDOS jest SpartaDOSem dla ubogich. :) I ja sie z tym zgadzam.
No, wolałbym ją znaleźć w poniedziałek. ;)
A u mnie się troche skompliowały sprawy. Jutro od 7:00 zasuwam w robocie i nie wiem, o której skończę. :( Jutro wszystkiego dowiem sie na miejscu, więc główną zainteresowaną powiadomię SMS-em. Pozostałych (hi Sikor) również.
Głupia sprawa. :(
Zauważ jednak, że lda #xxxx.w zamiast .aw/lda pozwoliłoby *przynajmniej* zaoszczędzić 1 wers na ekranie :)
Od optymalizacji na objętość kodu źródłowego zawsze byłem ja. ;)
Skoro to tylko teoria, to ja pozwolę sobie powiedzieć co zrobiłbym z asemblerem, który po napotkaniu etykiety np. LABEL.W wywaliłby Undefined label z powodu potraktowania końcówki .W jako rozmiaru operandu, a nie części nazwy:
killdir asm
;)
Dla nie znających tematu: kropka jest poprawnym znakiem w asemblerach takich jak MAC/65 i MAE i wolę jej używać zamiast podklreślenia.
Zdzisiu, nie mieszajmy dwóch różnych systemów walutowych.
Spieszę z wyjaśnieniem, że pisząc pod 65816 i tak trzeba pamiętać jakiego rozmiaru są aktualnie rejestry, bo będzie zwis. Nie widzę więc potrzeby stosowania przyrostków i wg mnie wystarczy dyrektywa typu .aw czy .ab.
Zawsze znajdzie się inteligent, który nie będzie mógł zrozumieć dlaczego asembler wywala błąd (ostrzeżenie) dla ciągu rozkazów: ldx #$00.w, ldy #$01.b. Bo przyrostki raczzej powinny służyć tylko celom informacyjnym, ew. ostrzegawczym podczas asemblacji, ale rozmiar operandu powinien być dobierany w zależności od "ręcznych" ustawień asemblera (.ib/.iw).
Właśnie. Co powinien wg was wyprodukować asembler z powyższych rozkazów zapisanych jeden po drugim, i w jakim stanie zostawić rozmiar rejestrów indeksowych po zasemblowaniu tego kawałka kodu?
To musiałem cos przegapić. Jak się nazywa to archiwum?
ROMOS.ARC
Jak nie ma czegoś u Ciebie, to pewnie jest u mnie, a jak nie ma u mnie, to nie ma wcale. ;)
Kobieto, daj pomarzyć! Czy Ty myślisz, że nam się będzie chciało Twojego alpinusa nosić po jakiś chałupach? My Ci go wolimy od razu do pubu zanieść. ;) Ale ok. Niech będzie Twoja wola.
O bilet się nie martw. Na pewno znajdzie się jakiś drogowskaz do kiosku. Potem się obaczy i sama zadecydujesz, czy chcesz zwiedzać najwiekszą wiochę w Polsce z plantacją kapusty w centrum (dziś coś takigo zobaczyłem na rogu Świętokrzyskiej i Marszałkowskiej 8O ), czy dogorywać gdzieś na party place. ;)
Około 18 ty mu już dawno będziemy :*)
Zobaczymy co z tego wyjdzie. W razie czego będziemy informowac o ruchach nieprzyjaciela. ;)
Jedynym znanym mi asemblerem posiadającym jakieś ograniczenia jest Quick Assembler. W pozostałych jakie znam jedynym ograniczeniem jest pamięć, ew. długość nazw etykiet (na ogół 15 i więcej znaków, czyli wystarczająca).
Przykład z LDA $0445F2, gdzie najstarsze $04 oznacza numer banku asembler powinien zamienić na większy kawałek kodu, bo procesor naprawdę nie wie, że najstaszy bajt adresu oznacza bank pamięci. Poza tym, Twój przykład należałoby rozumieć jako odwołanie do 4-go elementu tablicy kodów banków. Inaczej, gdyby oznaczał konkretny bank, Twój program musiałby modyfikować cały swój kod pod rozszerzenie, na którym jest uruchamiany (z tablicą byłoby dużo prościej). Jednym słowem asembler musiałby dorzuać, gdzieś na początku procedurę inicjującą i modyfikującą program. Zauważ, że w tym momencie odchodzimy już od asemblera i zmierzamy w kierunku wysokiego poziomu, gdyż pewne rzeczy robi za nas automatycznie kompilator. Nawet jeśli coś takiego zrobisz, to zawsze znajdzie się ktoś, komu nie sodoba się Twoje rozwiązanie i zacznie kombinować po swojemu (w ostateczności napisze nowy asembler :twisted: ).
Kombinacje typu LDA.W zaporzyczone zostały z asemblera MC680xx. W przypadku oryginału ma to sens, gdyż rozmmiar danej zapisany jst w kodzie rozkazu. W przypadku 65816 musiałbyś zamieniać odwołania typu LDA.w #$ffff na coś takiego:
xce ; zapamieujemy tryb pracy (emu/nat)
php
clc
xce ; przełączamy w tryb natywny (konieczny dla operacji 16-bit)
rep #$20 ; przełączamy akumulator i pamięć na 16-bit
lda #$ffff
plp ; przywracamy stan procesora na poprzedni (emu/nat)
xce
Sam widzisz, że to co proponujesz przestaje być asmem, tylko jakąś hybrydą asemblera i języka wysokiego poziomu.
Powyższy przykład można zrobić jeszcze inaczej bez używania trybu 16-bitowego:
lda #$ff
xba
lda #$ff
Lepiej nie dawać możliwości wyboru trybu pracy asemblerowi, bo będzisz musiał implementować takie cuda jak powyżej. W MAE są pseudo rozkazy: .816, .02, .AB, .AW, .IB, .IW, które przełączają asembler we właściwy tryb. Przełączanie procesora pozostawione zostało użytkownikowi.
Sprawdzałeś co podany przez Ciebie asm wyprawia z takim CPX.W #$7C00. Ja sprawdziłem:
org $8000
lda.w #$1234
ldx.b #$12
sta.b $80
end
Łącznie 7 bajtów zamienił na plik o wielkości ponad 32kB! Mnemoniki pozamieniał na ciąg bajtów:
LDA.w # LDX.b # STA.b
$A9, $34, $12, $A7, $12, $85, $80
A gdzie przełączanie wielkości rejestrów? Bez tego, powyższy kod można o kant potłuc.
moj post swiadczy o tym ze przeczytalem manuala (bo skad niby skopiowalem te fragmenty dotyczace adresacji), ale nie zauwazylem w nim praktycznego zastosowania teorii
To co powyżej napisałeś, że nie czytasz jednak uważnie. Nie napisałem, że nie czytałeś. Cytaty poznałem od razu, choć ostatni raz cytowany tekst widziałem rok temu. Myślę, że chcąc pisać nowy asmbler nalezy zacząć od dokładnego poznania i zrozumienia procesora, czyli poznania teorii.
moj post swiadczy o tym, ze nie pisalem nic dla 816 i nie uzywalem MAE
Też nie pisałem pod 816, a jednak wiem to i owo m.in. na podstawie wspomnianego artykułu.
moj post swiadczy o tym, ze kazdy moze inaczej zinterpretowac manuala, szczegolnie jesli nie moze podeprzec sie przykladem, bo sucha teoria to nie wszystko
Rozbieżność interpretacji manuali bierze się z ich niezrozumienia. A ten akurat jest najbardziej przejrzystym jaki widziałem.
pozatym gdybys dokladniej doczytal pytanie dotyczace makr moze zrozumialbys ze nie chodzilo mi o to o czym napisales (o tym juz bylo kiedys w moich wczesniejszych pytaniach i zdaje sie ze najpełniej udzielil na nie odpowiedzi Pecus)
A mnie się wydaje, że odpowiedziałem dokładnie na Twoje pytanie. Na przykładzie prostych makr, jak radzi sobie z nimi MAE. Mogę tylko dopisać, że MAC/65 przechowuje makra w pamięci w takej postaci jak resztę źródła (w postaci mnemoników) i asembluje za każdym razem, gdy napotyka wywołanie makrorozkazu. A to z tej prostej przyczyny, że musi zamienić nazwy parametrów na ich wartości (o czym pisałem poprzednio).
Nie ukrywam, że zdziwiły mnie Twoje wątpliwości, gdyż to co jest na AA o 65c816 jest na tyle jasne, że nie powinno wzbudzać wątpliwości.
Pin: to nie 65c816, to tylko scenowi koderzy. :-p
No tak, zapomnialem, ze jest jakis crossasm do 65816.
Tebe: na przyszlosc, jak czytasz manuale, to staraj sie cos z nich zrozumiec, bo twoj post swiadczy tylko o czyms zupelnie przeciwnym. :(
ostatnio zamieniam tylko pienidze na wino. z woda to juz nie to samo. za duzo chloru
Odpowiedzi na temat adresowania znajdziesz w artykule Procesor MOS 65C816 w dziale Artykuły
Długie (24-bitowe) tryby adresowania tyczą się TYLKO i WYŁĄCZNIE pamięci liniowej. Skąd procesor ma wiedzieć, że masz jakieś banki pamięci w obszarze $4000-$7FFF?
W 65c816 najstarsze osiem bitów szyny adresowej pokrywa się z szyną danych (8-bit). Podczas odwołań 24-bitowych na szynie danych pojawia się najpierw najstarszy bajt adresu a później dane (pisał o tym Draco kilka dni temu). Sęk w tym, że nie za bardzo da się odróżnić dane od adresu na szynie danych. Chyba. :) I nie jest to kwestia "sprytniejszego" asembera, tylko sprzętu. Jako koder powinieneś to wiedzieć.
MAE rozpoznaje tylko S jako wskaźnik stosu. ds jest takim samym oznaczeniem jak zp czy abs i jest po prostu skrótem od bodajże displacement.
Asembler nie miesza się do rejestru D. Jak napiszesz LDA $23, to CPU dorzuci do tego jeszcze wartość D i z tak otrzymanego adresu pobierze wartość. Np. D=$DF34, procesor wykonuje rozkaz LDA $47, wtedy pobrany zostanie bajt spod $DF7B w 3 cykle. Jeśli podasz LDA $DF7B, to odczyt nastąpi z tego samego adresu ale w 4 cykle, niezależnie od tego, czy D będzie wskazywał w tym miejscu stronę zerową.
Oto przykład zmiany adresu strony zerowej:
.816 ; jedyne info dla asemblera, że może natknąć sie na rozkazy i tryby adresowania 816
CLC ; przełączenie procesora w tryb natywny (65c816)
XCE
.AW ; przełączenie akumulatora w tryb 16-bit (info tylko dla MAE, to nie jest rozkaz procesora)
REP #$20 ; akumulator i odwołania do pamięci 16-bitowe
LDA #zp_ptr ; wskaźnik "nowej" strony 0
TCD ; przeniesienie akumulatora do D
SEP #$20 ; akumulator i odwołania do pamięci 8-bitowe
.AB ; przełączenie akumulatora w tryb 8-bit (info tylko dla MAE, to nie jest rozkaz procesora)
SEC ; przełączenie procesora w tryb emulacji (65c02)
XCE
4. Jakiego asemblera uzywal Laoo do napisania benchmarka porownujacego 6502 i 816 ?
Może MAE? Jako jedyny wspiera 65c816.
Makra działają tak samo jak #include w C/C++. Kawałek kodu makra wstawiany jest w miejsce odwołania do niego, z czego nazwy parametrów zastępowane są ich wartościami. Najlepiej zrozumieć to na przykładzie:
!!!ldreg .MD ; załadowanie wartości do wskazanego rejestru
LD:1 :2 ; brak odstępu pomiędzy LD a :1!!!
.EM ; o ile dobrze pamiętam mnemonik, chodzi o zamknięcie definicji makra
Wywołujemy makro:
LDREG a $20
LDREG x #%1111
Asembler najpierw zamieni powyższy fragment na:
LDa $20
LDx #%1111
a następnie zasembluje, to co stworzył. ;)
Wszystkie powyższe dywagacje na podstawie arta wymienioinego na wstępie, doświadczeń Draco i własnych oraz dokumentacji do MAE. :)
Krap, czytaj uważnie. Meśka ma przyjechać w ten piątek (8.10) i dopiero wtedy będzie się działo, oj będzie się działo. :D
ty masz 4 żółte i jedną białą, czyli pijesz 4 gorzkie żołądkowe i zapijasz całość czystą. ;)
jesteś poszukiwany :!: - co:?:
Poszukiwany? Poszukiwana? A gzie list gończy? Jestem jak zwykle niewinny. ;)
Tak, tak. Herbatka w deszczowy, jesienny wieczór róló. Zwłaszcza z rumem. :*)
Ou, yeah, nareszcie. Coś mi mówi, że będę miał filmikna gwiazdkę. Tylko którą? :twisted:
a na jakimś zlocie postawisz mi coś tam i sprawa załatwiona...
.http://www.sebastian-gritsch.de/l33t_p0rn.htm :?:
To taka śmieszna płytka, którą montujesz zamiast 6502. Na tej płytce masz 65c816. Wynalazek produkcji USA przez FTe. Chyba.
Niestety nie pozwala na adresowanie powyżej 64kB, bo nie zawiera kontrolera pamięci.
Filename Length Date Time
============ ======= ======== ======
816ROM.DOC 3868 3-28-93 18:45
CHARSET1.BIN 1024 6-16-96 16:18
CHARSET2.BIN 1024 6-16-96 13:46
CIO.MAE 5430 5-27-97 11:18
EDITOR.MAE 4675 5-27-97 11:18
FPLAB.MAE 358 5-27-97 11:18
FPLAB.MAE 358 5-27-97 11:18
HEADER.MAE 150 6-16-96 16:53
HRDWARE.MAE 792 5-27-97 11:18
INIT.MAE 6675 6-16-96 16:53
INT.MAE 10119 6-16-96 16:53
KEYBD.MAE 2734 5-27-97 11:18
LABELS.MAE 136 5-27-97 11:18
MAKE.MAE 474 5-27-97 11:18
MATHROM.BIN 2048 6-16-96 16:20
NEWDEV.MAE 6853 6-16-96 16:53
PAGE0.MAE 1399 5-27-97 11:18
PAGE2.MAE 2167 5-27-97 11:18
PAGE3.MAE 902 5-27-97 11:18
PRINTER.MAE 896 5-27-97 11:18
SCREEN.MAE 11091 5-27-97 11:18
SELFTEST.BIN 2048 10-12-90 22:30
SIO.MAE 3845 5-27-97 11:18
SPOX 26 3-28-93 18:45
UNIFY.BAT 13 3-28-93 18:45
VECTORS.MAE 196 5-27-97 11:18
==== =======
Total 25 68943
Lol, chyba starzeję się bardzo szybko, albo dzisiejsza młodzież strasznie przyspieszyła z nowym słownictwem. Dżezi? Czy to coś od dżemu czy jazzu? ;)
Fajnie byłoby móc podać nicka do skajpa, więc może wszyscy zainteresowani zapchają skrzynkę Deliego petycjami o jakiegoś plugina?
atari.area forum » Posty przez Lizard
Wygenerowano w 0.069 sekund, wykonano 21 zapytań