3,651

(82 odpowiedzi, napisanych Bałagan)

alp napisał/a:

masz w domu na piecu mp3 ? orgyn. windowsa ? i co ? nadal myslisz ze jetses lepszy ode mnie ?

1. Owszem, mam licencjonowane Windowsy XP. Tyle, że ich nie używam (na codzień, jak niektórzy wiedzą, używam FreeBSD).

2. Nie mam plików mp3 (wyobraź sobie).

3. Nawet gdybym miał, to nimi nie handluję na Allegro.

4. Od początku byłem pewien, że z bieżącej dyskusji nie rozumiesz ani słowa.

3,652

(82 odpowiedzi, napisanych Bałagan)

alp napisał/a:

bede robil co robie

Czyli nadal korzystał z cudzych rozwiązań nie zaproponowawszy autorowi nawet na piwo. Z mojej strony, gratuluję szczerze.

3,653

(82 odpowiedzi, napisanych Bałagan)

Adam Klobukowski napisał/a:

Czy Lotharek robi na tym kokosy? Furą sie rozbija? Dzieci z bangladeszu zatrudnia?
No chyba nie. Z tymi cenami to conajwyzej na piwo pojdzie.

Jak widać na tym przykładzie, można komuś solidnie przykopać nawet usiłując go bronić :)

Nosty: z tą ekonomią "od kilkuset lat", to chyba lekko przesadziłeś. Ekonomia jako nauka z tego co pamiętam wykluła się gdzieś w XIX wieku, a "pretendować" zaczęła dopiero w pierwszej połowie dwudziestego ... :]

3,654

(82 odpowiedzi, napisanych Bałagan)

mirusvf napisał/a:

buduje ktoś kontroler MyIDE to należy skrytykować bo tutaj bawimy się KMK i SIO2IDE.

Nie, nie dlatego. MyIDE się krytykuje, ponieważ jest to żenująca chała zaprojektowana przez ignoranta. Np. do obsłużenia twardego dysku w Atari wcale nie trzeba wczytywać handlera do RAM-u ani modyfikować OS-u, ale autor wyraźnie o tym nie wie.

A oddzielną zupełnie sprawą jest krytyka mentalności osób, które próbują robić szmal na cudzej darmowej pomocy i cudzych rozwiązaniach, bez porozumienia z autorem.

3,655

(33 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

Taki naprawdę wypas flop powinien mieć swój procesor i pamięć, oraz być podłączany równolegle (jako new device) z możliwością dodatkową obsługi transmisji przez SIO. Takie dwa w jednym. Wtedy:

a) szybkość byłaby przyzwoita (pewnie w okolicach 15 kilobajtów na sekundę, a może więcej);
b) różne rzeczy w kompie by działaly podczas transmisji, tak samo jak w przypadku twardego dysku;
c) dla chętnych, można byłoby bootować demka używające własnych procedur szeregowych, przez kabel SIO.

Taka stacja musiałaby mieć ze 16 kilo własnej pamięci RAM (z tego jakieś 12,5 k na bufor ścieżki w gęstości HD) oraz oczywiście całe oprzyrządowanie szeregowo-równoległe... no cóż, marzenia :)

3,656

(34 odpowiedzi, napisanych Sprzęt - 8bit)

No, to jedyne 20476 banków pamięci po 16k. Dwoma portami się opędziłoby ;)

3,657

(24 odpowiedzi, napisanych Sprzęt - 8bit)

Tak, zgadza się, sampler Mirage'u szumiał, ale nie wnikałem, gdzie leży przyczyna.

3,658

(8 odpowiedzi, napisanych Sprzęt - 8bit)

"Wygodną" stacją to peceta raczej nazwać nie można. Pojemną, owszem.

3,659

(24 odpowiedzi, napisanych Sprzęt - 8bit)

Z tego co pamiętam, był 4-bitowy, ale może mnie pamięć zawodzi.

EDIT: kurde, dopiero teraz zauwazyłem - i to przypadkiem - że Pin pyta o sampler z Atari Magazynu, a nie z Mirage'u. :/

3,660

(33 odpowiedzi, napisanych Programowanie - 8 bit)

Wiele zależy od tego, co program robi. Rezydenty zastępują często albo uzupełniają jakieś procedury systemowe, to i wtedy nie korzystają ze strony uzytkownika ($80-$FF), ale z komórek strony zerowej przeznaczonej dla tych procedur systemu, do których rezydent się podpina. I tak np. ramdysk może korzystać z adresów uzywanych przez SIO, QE korzysta z adresów używanych przez edytor ekranowy itd.

3,661

(32 odpowiedzi, napisanych Zloty)

Przypominam sobie, że w Koszycach jest knajpa, w której sprzedają świeżo uwarzone piwo. Knajpa nazywa się Golem i jest zaraz przy rynku. Adres Dominikańskie namesti 15.

3,662

(32 odpowiedzi, napisanych Zloty)

A ile teraz kosztuje miejsce hotelowe w Koszycach? Bo jak tam byłem trzy lata temu, to cena dwuosobowego pokoju z łazienką wynosiła 20 złotych.

3,663

(24 odpowiedzi, napisanych Sprzęt - 8bit)

Jakibądź edytor do sampli. Jeśli nie zredukujesz do 4-bit unsigned, to przynajmniej do 8-bit, a dalszą konwersję robisz własnym programem.

3,664

(24 odpowiedzi, napisanych Sprzęt - 8bit)

wava przerabiasz z 16-bit stereo (signed) na 4-bit mono (unsigned), częstotliwość redukujesz do takiej, żeby się dało na Atari odtworzyć, i masz.

3,665

(33 odpowiedzi, napisanych Programowanie - 8 bit)

Innymi słowy przyczyniłem się walnie do twego rozwoju - nie ma sprawy, nie oczekuję wiele w zamian, wystarczy mi jakieś osiem piw na najbliższym party :P

3,666

(33 odpowiedzi, napisanych Programowanie - 8 bit)

No tak, przyznaję, w ten sposób może to i działać. Ja jednak pozostanę chwilowo przy mojej metodzie, która zakłada, że program kompilowany jest dwa razy, a nie 257 razy. :)

3,667

(33 odpowiedzi, napisanych Programowanie - 8 bit)

bori napisał/a:

Co do przerwan no faktycznie w atarce nie ma oddzielnego stosu dla nich i trzeba by je blokowac. Co nie zmienia faktu iz mozna napisac program calkowicie niezalezny od mniejsca polozenia w pamieci - bez koniecznosci jego zmiany przy przemieszczaniu. Ot i to co chcialem przekazac.

No dobrze, podsumujmy. Twoja propozycja:

1) zakłada użycie nielegalnego skoku do systemu
2) zajmuje sporo miejsca i jeszcze więcej cykli maszynowych
3) zakłada użycie danych, które są już zdjęte ze stosu
4) i z tego względu może działać tylko przy wyłączonych przerwaniach.

Sam przyznasz, że do podręcznika programowania to się raczej nie nadaje, chyba że jako antyprzykład :P

Co do tego stosu, można to spróbować zrobić inaczej. Mianowicie zapisujesz w spokojnym miejscu (np. na szóstej stronie) takie coś:

lea  pla
     clc
     adc #$01
     sta ret
     pla
     adc #$00
     sta ret+1
     jmp (ret)

Po wywołaniu JSR LEA w komórkach RET i RET+1 masz adres pierwszego rozkazu po JSR. Program nadal jednek nie jest w stu procentach niezależny od umieszczenia w pamięci, wydaje mi się, że takowy mozna stworzyć dopiero na 65C816 (mam tak np. rozpisany podprogram PRINTF, skompilowany kod można umieścić gdziekolwiek, np. w stringu BASIC-a, i zawsze działa).

EDIT: oczywiście popierdzieliła mi się kolejność bajtów na stosie. Teraz jest dobrze.

3,668

(33 odpowiedzi, napisanych Programowanie - 8 bit)

Jaskier napisał/a:

Dziwne, a mi się udało :D

Tak? A nie wykłada się aby na kombinacjach typu:

     lda #<adr1
     sta vec1
     lda #<adr2
     sta vec2
     lda #>adr1
     sta vec1+1
     lda #>adr2
     sta vec2+1

?

3,669

(33 odpowiedzi, napisanych Programowanie - 8 bit)

bori napisał/a:

Ale za to nie wymaga relokatora ;-), mozna go dowolnie przesuwac po pamieci razem z danymi

Ale za to nie będzie ci działać, jeśli pod $C0CE nie ma tego, co zakładasz, że jest (a np. w Atari 400 i 800 nie ma tam nic). Ciekaw jestem, czy w QMEG-OS jest, bo w moim ROM-ie dla 65c816 nie ma z całą pewnością.

Zastanawiam się w ogóle, jaki sens ma ta kombinacja (php / jsr $c0ce). Zakładając nawet, że pod tym adresem jest rozkaz RTI. O ile mi wiadomo, JSR odkłada na stos adres powrotny pomniejszony o jeden, a przerwanie nie. Wobec tego JSR $C0CE odłoży na stos adres ostatniego bajtu argumentu rozkazu JSR, a RTI do tegoż ostatniego bajtu powróci (bo RTS zwiększa adres o 1, ale RTI nie). Po wykonaniu JSR (na standardowym ROM-ie) zostanie wykonany nie rozkaz TSX, ale CPY #$BA (gdzie $C0 to opcod CPY #, a $BA to opcod rozkazu TSX). Zastanawiam się, co ci to daje.

Domniemywam, że owo JSR ma wstawiać na stos adres bezwzględny kodu znajdującego się za JSR. Nawet jednak, gdyby tak było (a nie jest, patrz wyżej), to RTI ten adres ze stosu zdejmuje zwiększając przy tym wartość wskaźnika stosu. A pierwsze przerwanie - które może wystąpić zawsze, a więc natychmiast po wykonaniu się RTI również - ten adres skutecznie zamazuje. Toteż późniejszymi rozkazami (tsx, lda nnn,x itd.) zdejmujesz ze stosu wyłącznie śmieci, a program idzie w maliny.

3,670

(33 odpowiedzi, napisanych Programowanie - 8 bit)

Bez kompilatora w ogóle trudno się obyć, ale rozumiem, że idzie o "bez kompilatora, który sam z siebie produkuje tablicę fixupów". A tych jest większość.

I jeśli idzie o "metodę relokacji", zakładam, że chodzi o metodę wytwarzania tablicy fixupów. Oto ona: kompilujesz program dwa razy, raz pod adres dajmy na to $2000, a drugi raz pod dajmy na to $3000 (może być $0100 i $0200 - non refert). Po czym porównujesz obydwie binarki i na podstawie różnic wytwarzasz tablicę fixupów.

Nie możesz tak zrobić dla pełnych adresów (kompilując np. jedną kopię pod $2000, a drugą pod $3001), bo fixupowanie musiałoby być dodawaniem z przeniesieniem, a nie jesteś w stanie zagwarantować, że dwa kolejne bajty, które dla generatora fixupów wyglądają na młodszy i starszy (z różnic adresów j.w.), należą rzeczywiście do tego samego adresu, a nie do dwóch różnych.

3,671

(26 odpowiedzi, napisanych Sprzęt - 8bit)

Ja tam nigdy nie jestem od tego ;)

3,672

(33 odpowiedzi, napisanych Programowanie - 8 bit)

Dlatego, że jak masz lda #$84, wtedy tylko kompilator jest w stanie stwierdzić, czy to jest starszy bajt adresu, młodszy bajt adresu, czy w ogóle nie adres.

3,673

(33 odpowiedzi, napisanych Programowanie - 8 bit)

W Warszawie :) Uksword to inaczej UKSW, czyli Uniwersytet im. Kardynała Stefana Wyszyńskiego, dawniej ATK.

3,674

(26 odpowiedzi, napisanych Sprzęt - 8bit)

Zamierzam włamać się do twojego banku i zwiać z całą forsą do ryjo. :P

3,675

(33 odpowiedzi, napisanych Programowanie - 8 bit)

Jaskier napisał/a:

A jak generujesz tablicę fixupów?

Banalnie prosto.

No i dlaczego nie może ona obejmować zarówno starszych jak i młodszych bajtów adresów?

Może, w zasadzie, ale ma to dwa mankamenty:

a) wydłuża tablicę fixupów (na oko dwukrotnie)

b) wymaga, żeby tąż tablicę fixupów generował kompilator

Punkt b) to problem bez wyjścia, kiedy kompilator, którego używasz, nie generuje kodu relokowalnego.

A w ogóle to ja proponuję zrobić relokator na podstawie źródeł QA. Ładujemy plik .asm i go assemblujemy od MEMLO.

A co, jeśli program ma np. 48k źródłówki i ponad 512 etykiet? :P