1,751

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

A nie ma gdzieś takiego prostego manuala dla początkujących? Podawało by się go w razie potrzeby i już...

Dlatego trzeba pogonić kogo trzeba :) aby stworzył nowy dział na forum o wszystko mówiącej nazwie f**k you, tzn. FAQ, gdzie takie pytania by lądowały. W takim dziale nie możnaby pisać postów, tylko jakiś dzielny moderator, po rozpatrzeniu, czy pytanie i odpowiedź nadaje się do zamieszczenia w FAQ, przenosiłby wątek okrojony z głupawych wypowiedzi, takich jak np. ta. :)

1,752

(28 odpowiedzi, napisanych Bałagan)

Pin: No toś teraz bracie pojechał po całości. :D

Pinek dobrze gada. Jednak nie zgodzę się z jedną rzeczą. Format AtariDOS to pomyłka: ˇ za często pojawia się błąd 164 na dyskietkach zapisanych przez MyDOSa (nawet SD), a czytanych pod innymi DOSami. Wina leży po stronie tego pierwszego, gdyż olewa bajt z numerem wpisu w katalogu (trzeci od końca)
ˇ wielkość katalogu na sztywno ustawiona na 8 sektorów, z czego dla DD druga połówka jest nie używana
ˇ przejście do katalogu nadrzędnego wymaga podania całej ścieżki, bo nie ma w podkatalogu informacji o nadrzędnym
ˇ sekwencyjny dostęp do danych jest jakimś nieporozumieniem; dopisanie czegokolwiek na końcu pliku oznacza odczyt całości, by dostać się do ostatniego bajtu (np. SuperARC i dodanie pliku do archiwum)
ˇ bardzo łatwo plik zapętlić, czyli wpisać do informacji o następnym sektorze nr tego samego sektora
ˇ w formacie AtariDOS II wpis numeru katalogowego w linku, dzięki czemu posortowanie katalogu, czy zmiana pozycji nazwy pliku nie jest taka prosta
ˇ defragmentacja (co potrafi chyba Szperacz Dyskowy) również
ˇ brak porządnych narzędzi dla tego formatu, dla Sparty jest zajefajny DiskRX, którym można edytować dyski nie tylko sektorowo, ale też pojedyncze pliki czy katalogi, a także wyszukiwać takowe w całej strukturze katalogów
ˇ dowolność miesca w jakim może występować VTOC i katalogi (te informacje zapisane są w boot sektorze)
ˇ wbrew pozorom format Sparty łatwiej rozszerzyć dla większych partycji niż w przypadku AtariDOSa
To tyle jeśli chodzi o samą strukturę dysków, teraz SpartaDOS X: ˇ ilość i jakość softu na cartridge'u pozwala odchudzić w zasadzie dyskietkę systemową o połowę
ˇ dostęp do powyższych programów jest natychmiastowy, nie wymaga wcześniejszego kopiowania ich na ramdysk w celu uniknięcia szukania dyskietki
ˇ szlak poszukiwań uwalnia od pamiętania i wklepywania pełnej ścieżki w celu uruchomienia programu
ˇ 9 a nie 8 napędów (teoretycznie mogłoby być ich więcej, ale dla zachowania kompatybilności ograniczono sie do jednocyfrowego numeru napędu)
ˇ pliki config.sys i autoexec.bat świadczą tylko o elastyczności systemu, a nie jego uciążliwości; aby zmienić konfigurację DOSu nie trzeba zmieniać CONFIG.SYS i resetować kompa, wystarczy użyć Config Selectora
ˇ resetowanie? proste polecenie COLD, zamiast jakiegoś magicznego RUN E477
ˇ MemLo poniżej 4kB (w moim przypadku)
ˇ dodatkowa pamięć może być wykorzystana w SDX lepiej niż tylko na ramdysk, w dodatku wszystko obsługuje DOS i nie trzeba męczyć się ręcznie, co uwzględniając ilość rozszerzeń zakrawa na masochizm
ˇ nawet po zimnym starcie ramdysk jest zachowany, co w innych DOSach nie zawsze się udaje
ˇ co to za dziwne ograniczenie ramdysku w DOSie II+/D do 128kB :?:
ˇ można mieć do 3 ramdysków o dowolnej (nie przekraczającej extra ramu) wielkości pod SDX
ˇ pisanie programów pod SpartaDOS X jest łatwe, szybkie i przyjemne, większość niezbędnych funkcji jest wbudowana w system

1,753

(21 odpowiedzi, napisanych Bałagan)

Sens życia znalazłem, ale zgubiłem.
A nie sie tam jakoś do dzieciaków nie spieszy.

Lubię dzieci, ale cudze.

1,754

(5 odpowiedzi, napisanych Sprzęt - 16/32bit)

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).

1,755

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

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.

1,756

(28 odpowiedzi, napisanych Bałagan)

Już ktoś za czasów Atari magazynu, z tejże redakcji powiedział, że MyDOS jest SpartaDOSem dla ubogich. :) I ja sie z tym zgadzam.

1,757

(30 odpowiedzi, napisanych Zloty)

No, wolałbym ją znaleźć w poniedziałek. ;)

1,758

(30 odpowiedzi, napisanych Zloty)

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. :(

1,759

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

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.

1,760

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

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?

1,761

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

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. ;)

1,762

(30 odpowiedzi, napisanych Zloty)

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. ;)

1,763

(30 odpowiedzi, napisanych Zloty)

Około 18 ty mu już dawno będziemy :*)

Zobaczymy co z tego wyjdzie. W razie czego będziemy informowac o ruchach nieprzyjaciela. ;)

1,764

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

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.

1,765

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

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

1,766

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

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

1,768

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

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. :)

1,769

(30 odpowiedzi, napisanych Zloty)

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

1,770

(30 odpowiedzi, napisanych Zloty)

ty masz 4 żółte i jedną białą, czyli pijesz 4 gorzkie żołądkowe i zapijasz całość czystą. ;)

1,771

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

jesteś poszukiwany  :!: - co:?:

Poszukiwany? Poszukiwana? A gzie list gończy? Jestem jak zwykle niewinny. ;)

1,772

(30 odpowiedzi, napisanych Zloty)

Tak, tak. Herbatka w deszczowy, jesienny wieczór róló. Zwłaszcza z rumem. :*)

1,773

(149 odpowiedzi, napisanych Miejsca w sieci)

Ou, yeah, nareszcie. Coś mi mówi, że będę miał filmikna gwiazdkę. Tylko którą? :twisted:

1,774

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

a na jakimś zlocie postawisz mi coś tam i sprawa załatwiona...

.http://www.sebastian-gritsch.de/l33t_p0rn.htm :?:

1,775

(20 odpowiedzi, napisanych Scena - 8bit)

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.