1,751

(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,752

(30 odpowiedzi, napisanych Zloty)

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

1,753

(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,754

(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,755

(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,756

(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,757

(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,758

(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,759

(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,760

(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,761

(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,763

(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,764

(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,765

(30 odpowiedzi, napisanych Zloty)

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

1,766

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

jesteś poszukiwany  :!: - co:?:

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

1,767

(30 odpowiedzi, napisanych Zloty)

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

1,768

(149 odpowiedzi, napisanych Miejsca w sieci)

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

1,769

(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,770

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

1,771

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

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

1,772

(11 odpowiedzi, napisanych Sprawy atari.area)

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?

1,773

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

A no m.in. tak, że procedura odgrywania sampla (na przerwaniu Pokeya) korzysta z rozkazów i trybów adresowania 816. Np.

    LDA (zp), zamiast LDY #$00
                      LDA (zp),Y

oraz

    PHA, zamiast PHA
    PHX          TXA
    PHY          PHA
                 TYA
                 PHA

Skrócenie czasu wykonywania przerwania pozwala na wiekszą częstotliwość odtwarzania. Przelicznik, jak pamiętam, był rzędu -1 cykl = +1 kHz. :)

Może sprecyzuj pytanie, bo nie wiem, czy o to Ci chodziło.

1,774

(44 odpowiedzi, napisanych Zloty)

Jasne, ale wtedy nie wiedziałem, że będę z gazetą roboty szukać, bo ją po prostu miałem. Finansów do zlotu mni starczy ale co potem?

1,775

(5 odpowiedzi, napisanych Software, Gry - 16/32bit)

No i stało się jasne. Tylko dlaczego w grach na ST, a nie w sprzęcie do XL/XE?

Gdzie nabojka aa? Czyżby już zapadła w sen zimowy?