601

(294 odpowiedzi, napisanych Bałagan)

xxl napisał/a:
laoo/ng napisał/a:

Reasumując dla mnie 65c816 to procesor 8-bitowy

zaczyna sie :D , chwile temu pisalem:

xxl napisał/a:

zle bedzie jesli zaczna nam wmawiac ze programy na te nowe sprzety to programy na 8bitowe Atari XL/XE podczas gdy na takim sprzecie nigdy sie nie uruchomia

Oczywiście, że to nie są programy na stockowe 8-bitowe atari. Taka jest definicja rozszerzenia, że modyfikujesz coś w komputerze i program korzystający z modyfikacji nie działa na oryginale. Nie ma zgody tylko co do miejsca postawienia kreski. Dla mnie i wielu zamontowanie 65c816 robi z Atari XL/XE rozszerzone Atari XL/XE, a dla Sikora i popleczników, to już za dużo i żądają kwalifikacji jako 16-bitowa pochodna linii Atari XL/XE co jest absurdem, bo komputer nie jest bardziej 16-bitowy. Nie musi emulować serii XL/XE tylko działa tak samo + trochę więcej. Komputer 16-bitowy adresuje pamięć 16-bitową i nie potrafi w prosty sposób wykonywać tego samego kodu co komputer 8-bitowy i żeby tego dokonać musi stosować emulację. W naszym przypadku to nie występuje.

602

(294 odpowiedzi, napisanych Bałagan)

Sikor napisał/a:
laoo/ng napisał/a:

Sikorze. Ilu bitowy jest wg Ciebie 68000? 32? czy 16?

Póki nie wkłada się PowerPC jako główny procesor w ST - nie ma to znaczenia.

To skoro wewnętrzna architektura procesora nie ma znaczenia w linii ST, to dlaczego ma znaczenie w linii XL/XE?

Sikor napisał/a:

Skoro - jak piszesz - wykonuje te same operacje, tylko wolniej - poprosze o wersję emulatora by Drac030 chodzącą na 6502C. Wolniej, ale chodzącą. Czekam.

Tzw. NAPISZ SE.
Skoro autor emulatora ZX Spectrum działającego na Atari XL/XE stwierdził, że z dodatkowej pamięci, która potrzebna jest do emulacji, woli użyć poprzez adresowanie liniowe oferowane przez procesor 65c816, zamiast przez adresowanie bankowane dostępne dla 6502 w Atari z niezbędną dodatkową ilością pamięci, to takie jest jego święte prawo. Nie masz takiej konfiguracji, to sobie emulatora nie uruchomisz, ale nic nie stoi na przeszkodzie (poza czasem) aby taki emulator działający na stock 6502 powstał, tylko napisanie go byłoby trudniejsze i wynik byłby mizerny ze względu na mniejszą moc obliczeniową procesora i narzut wynikły z bankowania. Nie mówiąc o tym, że też biłbyś pianę, bo pewnie taki emulator wymagał by z 1 MB RAMu, a jak wiemy nie istnieją stockowe Atarki z takim rozmiarem pamięci.

603

(294 odpowiedzi, napisanych Bałagan)

Sikorze. Ilu bitowy jest wg Ciebie 68000? 32? czy 16? Dlaczego ST jest 16-bitowe a nie 32?
Nie za bardzo rozumiem, dlaczego spośród wszystkich parametrów komputera wybrałeś sobie akurat wewnętrzną architekturę procesora jako czynnik zmieniający wszystko. Obudowa jest ta sama. Jak włączysz, pojawi Ci się ten sam niebieski ekran generowany przez tego samego ANTICa pospołu z tym samym GTIA. Muzyczkę gra ten sam POKEY. Elektrony zapierniczają po tych samych liniach (płyta główna jest ta sama). Architektura wciąż jest 8-bitowa. Procesor (nazwany 16-bitowym) porozumiewa się z resztą Atari tak samo ośmiobitowo jak oryginalny 6502. Co więcej działają te same programy, (chyba, że ktoś napisze je nie tak jak podręczniki uczą), tylko że - jak przystało na kartę turbo - uwaga, uwaga - szybciej! Atarka z Rapidusem zachowuje się całkiem jak zwykła Atarka. Sam procesor nie określa rodziny komputerów. Atari to co innego niż Commodore i co innego niż Apple II, mimo że mają (praktycznie) taki sam procesor. A ta szesnastobitowość, na której się opierasz, jest bardzo przejaskrawiana. Zewnętrznie 65c816 jest 8-bitowy (dlatego można użyć go jako zastępnika 6502) i został użyty w Rapidusie dlatego, że bez problemu działa przy wyższym taktowaniu. To że ma kilka 16-to bitowych rejestrów? Co z tego. 6502 też ma 16-to bitowy licznik rozkazów. Z80 ma całą masę rejestrów 16-bitowych. To nic nie znaczy. Jedyne co potrafi istotnie więcej niż 6502, to adresowanie 24-bitowej pamięci, ale to także z jego rzekomą 16-bitowością nie ma nic wspólnego. Wg Twojej logiki powinno się go w takim razie nazwać procesorem 24-bitowym, bo istnieją w środku logiczne twory, które są 24-bitowe - adres komórki jako para rejestru banku i rejestru adresu. Ale tak jak 16-bitowość PC nie robi z 6502 procesora 16-bitowego, tak samo 24-bity adresu nie robi z 65c816 procesora 24-bitowego. A co do pamięci nic nie stoi na przeszkodzie, żeby w "prawdziwym" Atari napędzanym 6502 zamontować 16 MB, albo i 1 GB RAMu. Odpowiednio dużo rejestrów wybierających bank i masz. 65c816 ułatwia po prostu sprawę w ten sposób, że potrafi adresować tę pamięć sam, bez dodatkowej elektroniki, która będzie pamiętała resztę adresu, tak jak się dzieje w przypadku bankowania.
Reasumując dla mnie 65c816 to procesor 8-bitowy, bo zachowuje się jak procesor 8-bitowy, który wewnętrznie został zoptymalizowany do operacji 16-bitowych i radzi sobie z nimi lepiej (przypominam, że 6502 też wykonuje te operacje, przecież ma 16-bitową przestrzeń adresową, tylko robi to kulawo i wolniej) stąd jego nazwa 65 (rodzina) C (CMOS) 8 (że 8-bitowy) 16 (że dobrze radzi sobie z operacjami 16-bitowymi).

604

(27 odpowiedzi, napisanych Emulacja - 8bit)

VI TYLKO I NA ZAWSZE!!11


A tak na poważnie, to jak pisał wieczor, Eclipse + WUSDN daje radę.

605

(294 odpowiedzi, napisanych Bałagan)

Tekst z datasheeta to papka marketingowa. Zwróćcie uwagę, jaki to 65c816 jest enhanced, extended i advanced. Użycie słowa emulation bardzo ładnie się w to wpisuje - procesor jest taki zajefajny, że jest w stanie emulować 6502!!11

606

(126 odpowiedzi, napisanych Fabryka - 8bit)

Pajero: Sprytne. Aczkolwiek nawet do pracy samodzielnej radziłbym skorzystać z jakiegoś systemu kontroli wersji. Taki git nie wymaga serwera i wszystko jest trzymane lokalnie. Twój skrypt zamiast robić kopię pliku mógłby robić automatycznego commita do repozytorium. Plus tego jest taki,  że historia zmian pliku/plików jest z dokładnością do wiersza i za pomocą dostępnych narzędzi bardzo wygodnie można przeglądać, porównywać kolejne wersje. Oczywiście cofnięcie się do konkretnej wersji też jest trywialne :)

607

(126 odpowiedzi, napisanych Fabryka - 8bit)

Proszę nie używać liczby mnogiej, bo propozycja jest tylko moja i dziękuję za krytykę :)
Propozycję pseudorozkazu "sys" uzasadniam domniemaną trywialnością implementacji i prostotą użycia, ale po argumencie Foxa uświadomiłem sobie, że w takim rozwiązaniu zewnętrzny program wołany byłby przy każdej asemblacji, podczas gdy rozwiązanie z plikami pośrednimi sterowane make lub odpowiednikiem minimalizuje liczbę wywołań, co jest oczywistym plusem w przypadku skomplikowanych generatorów. Ostatecznie zły pomysł.

A pseudorozkaz "gen"? Ideą jest minimalizowanie liczby zastrzeżonych słów kluczowych będących nośnikami jakichś wartości, które można w przeciwnym razie mnożyć w nieskończoność, a za jego pomocą niejako rezerwujemy na nie osobną niekolidującą przestrzeń nazw.

Wciąż także nie wydaje mi się, aby podstawowe makra (data, itd) nie mogły być realizowane automatycznie np za pomocą takiego generatora. Konieczność instalowania środowiska dlatego, że autor kodu źródłowego napisał sobie linuksowego wsada generującego coś, co może być w samym asemblerze wydaje mi się nadużyciem.

608

(126 odpowiedzi, napisanych Fabryka - 8bit)

Miałem odpisać na maila, ale widzę wątek, to napiszę tutaj. Może ktoś będzie miał lepszy pomysł.

Zastanowiłem się nad tym i jest w tym trochę racji, żeby udostępnić taką wbudowaną funkcjonalność.
Narzędzia, z którymi się spotkałem zawierają takie makra. Przykłady

- C/C++: http://gcc.gnu.org/onlinedocs/cpp/Stand ... acros.html
- NASM: http://www.nasm.us/xdoc/2.11/html/nasmd ... ction-4.12
- Coś podobnego ma nawet Free Pascal: http://www.freepascal.org/docs-html/prog/progap7.html

Pewnie wiele innych też.

Zaproponowane przez Ciebie rozwiązanie ma taki problem, że nie jest przenośne: nie jestem w stanie zrobić projektu, w którym będę wstawiał np. datę assemblacji tak, aby każdy mógł to skompilować na dowolnym systemie. Musiałbym pisać osobny zestaw skryptów dla Windowsa i dla Linuksa.

Nie wiem ile w tym jest sensu, ale przyszło mi do głowy pewne generyczne rozwiązanie: pseudorozkaz GEN("description"), który pełniłby rolę uniwersalnego generatora zastępującego swoje ciało wygenerowanym napisem na podstawie podanego opisu. Można byłoby dla pełności zaimplementować w nim część istniejących pseudorozkazów:

gen("rnd(0,33,256)")  ;losowa liczba
gen('date("F j, Y, g:i a")')           ;data, np. formatowana jak w PHP: March 10, 2001, 5:16 pm
gen("line")           ;aktualny numer assemblowanego wiersza
gen("count")          ;kolejna liczba zwiększana o jeden przy następnym wywołaniu

Idąc za ciosem można byłoby dodać drugi pseudorozkaz, który nawet przydałby się mi:  SYS("command", [args...]), który odpalałby nowy proces o podanej nazwie i wstawiał w miejsce swojego ciała zawartość zwróconego standardowego wyjścia:

.he sys("SuperTableGenerator", 42)

Rezultat: wynik jakiegoś programu generującego super tablice ("SuperTableGenerator.exe") jako ciąg wartości szesnastkowych przyjmującego jeden argument.

Oczywiście "sys" byłby zależny od systemu, ale stanowiłby niezłą furtkę dla prostego generowanie zawartości. Ja często piszę skrypty w ruby, które generują mi jakieś dane, tylko teraz generuję plik binarny, któremu robię "ins", a tu można byłoby generować dane wprost.

W przypadku wielu przebiegów można byłoby cachować wartości wygenerowane przy pierwszym przebiegu.

Z tymi 16 bitami z pełnymi konsekwencjami to trochę przesada. Mimo szczerych chęci nie nazwałbym 65c816 w pełni 16 bitowym. To taki 8/16. Nie ma 16 bitowego "feelu". Programując go ma się raczej poczucie takiego Z80 (też ma 16 bitowe rejestry) albo 6809 (który ma bardzo zbliżony "layout"). Porównaj to sobie do takiego 8086, którego 16 bitowość jest już inherentna.
Jasne, że 816-tka ma 24-bity przestrzeni adresowej, ale to jest raczej danie 8-bitowcowi okienka na 16-to bitowy świat, przez które zagląda do większej pamięci...

610

(279 odpowiedzi, napisanych Fabryka - 8bit)

Sikor: Nie pierdziel z tą mikropłytą. To, że z różnych względów tak się nie stało, nie znaczy, że w Atari nie mógł oficjalnie wylądować 65c816. O serii komputerów Apple II słyszałeś? Ostatni z serii Apple IIGS miał na pokładzie 65c816. Miał standardowo 256 kB RAM (z oficjaną możliwością rozbudowy do 8MB). Wydaje mi się, że Applowcy raczej sikali po nogach zamiast krzyczeć, że to już nie jest Apple.
Uważam, że w czasach oryginalnej świetności sprzęt o działaniu Rapidusa mógł powstać i powstałby jakby było to opłacalne biznesowo. Rapidus wg mnie jest rozszerzeniem modelowym: komputer startuje jako zwykłe (w praktyce 100% kompatybilne) Atari, a turbo włącza się odpowiednią kombinacją klawiszy przy resecie (chyba, że z konfiguracji wybierzesz, żeby startował od razu jako turbo). W trybie turbo dobrze napisane programy dla oryginalnego Atari działają szybciej, a programy dedykowane potrafią więcej. To jest coś, czego można spodziewać się po nowszym modelu sprzętu w danej linii i tak możemy Rapidusa traktować.

611

(126 odpowiedzi, napisanych Fabryka - 8bit)

syscall: Tak się składa, że każdy koder pisze w którymś momencie swojej kariery jakiegoś asemblera. 90% nie kończy, a z tych ukończonych tylko dwa używa ktoś poza autorem.
Wiem, bo sam teraz piszę swojego trzeciego z rzędu asemblera, ale się z tym nie obnoszę, bo pewnie znowu trafi do tych 90% :)
Zalecam więc trochę pokory, bo jaki mads jest każdy widzi, ale jest ukończony i działający na tyle, że używa go większość atarowskiego światka.

612

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

Zdaje się, że to akurat można dość łatwo sprawdzić: http://visual6502.org/JSSim/index.html

613

(22 odpowiedzi, napisanych Zloty)

21. Rozbijanie płyty, ale na QuST 98. Dwóch od lewej to Solo i Tiger.
58. Rozbijania ciąg dalszy. Tleniony blondynek w środku to Solo. Z prawej jest Tiger i ja chwytający się za głowę :)
90. Po rozbiciu. Od lewej Roland, Tiger, Solo
73. Blondynek w pasiastej koszuli to oczywiście Solo
41. A tu trochę starszy, więc to na pewno jakiś późniejszy zlot.
76. Pet koduje tu Sheola :)

614

(8 odpowiedzi, napisanych Bałagan)

Można spróbować na jana. vcproj jest XMLem. Zerkając do niego można wyczaić jakie ścieżki includów były ustawione przy kompilowaniu (a więc jakie biblioteki były użyte) oraz jakie liby były potrzebne. Spróbuj skompilować wszystkie *.cpp ustawiając te includy i liby. Jak to nie przejdzie, to pewnie program ma jakieś nietrywialne windowsowe zależności i ogólnie będzie ciężko.

615

(8 odpowiedzi, napisanych Bałagan)

W robocie utrzymuję konfigurację windowsową (visual) i linuksową (gcc makefile) sporego projektu i dorobiłem się kilku automatów, ale w ogólności nie każdy projekt visuala da się trywialnie przerobić na coś strawnego na linuksie. Jeżeli to nic tajnego, to mógłbym na to zerknąć ( laoo ( at ) icomp . pl )

616

(23 odpowiedzi, napisanych Bałagan)

No faktycznie żyleta. Kuszące, szczególnie, że będę niedługo potrzebował, a z mojego easycapa specjalnie zadowolony nie jestem.

617

(42 odpowiedzi, napisanych Bałagan)

saulot: Pytasz o jakich dokumentach mówię? Odpowiadam, że chociażby o jedynym normatywnym, czyli "Standard for Programming Language C++" generowanym przez WG21. Zerknij sobie tu. Ostatni working draft sprzed standardu C++11 ma numer N3242. Jeśli do niego zerkniesz, to zauważysz, że na 1300 stron, 400 jest o języku, a 900 o bibliotece. Najbardziej kluczowym aspektem tej biblioteki jest nacisk na programowanie generyczne (stąd np podział na kontenery i algorytmy). Można napisać niezależne biblioteki podążające tym tropem, czego przykładem jest np boost. Qt jednak skrzętnie od wielu lat ignoruje kierunek, w którym rozwija się C++ opierając swój framework na zupełnie innych założeniach bardziej zbliżonych do języków zarządzanych, a nawet dynamicznych, które są sprzeczne z inherentną statycznością C++.

Stąd moje twierdzenie, że Qt nie używa standardowego C++.

618

(42 odpowiedzi, napisanych Bałagan)

C++ to język + biblioteka standardowa. Wystarczy zerknąć do dokumentów standaryzacyjnych. QT to nie biblioteka C++, tylko framework zbudowany na bazie języka C++ zastępujący jego bibliotekę standardową na wzór frameworków Javy czy .NET. Jest przy tym bardzo wirusowy starając się dostarczać swoje rozwiązania na każdy problem, które są niekompatybilne z tymi ustandaryzowanymi. Do kogoś zaczynającego od początku, to jest fajne, ale dla kogoś, kto zna C++ korzystanie z QT przyprawia o wymioty.

619

(42 odpowiedzi, napisanych Bałagan)

Tak całkiem teoretycznie to nie jest takie środowiska wcale potrzebne. Program napisany pod Visual Studio używający np Qt po przekompilowaniu na linuksa powinien po prostu zadziałać, o ile napisało się go oczywiście dostatecznie przenośnie, ale Qt jest frameworkiem, który dostarcza praktycznie wszystko, więc jak ktoś chce, to nie musi poza niego wychodzić.

620

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Osobno można ustawiać szerokość akumulatora oraz rejestrów indeksowych. To działa tylko w trybie natywnym 65c816.

621

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Używam tych makr. Tutaj akurat chodzi o hint dla asemblera (deklarację) jaka jest spodziewana szerokość rejestrów w danym miejscu, tak, aby asembler mógł wygenerować błąd, jeśli obliczona przez niego szerokość będzie różna, czyli np. (w pseudokodzie):

regA 16  ;rozkaz przełączający akumulator na 16 bitów
.a8 ; deklaracja, że w tym miejscu akumulator ma rozmiar 8 bitów -> ERROR

albo

.proc Prodecura
.a16 ;deklaracja 16-bitowego akumulatora.
...
.endp

...

.a8   ;deklaracja 8-bitowego akumulatora.
jsr Procedura  ;skok do procedury z kontekstu 8-bitowego akumulatora.
                Procedura deklaruje szerokość na 16-btów -> ERROR
...

622

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Wiedziałem, że gdzieś widziałem już coś takiego, tylko nie wiedziałem gdzie :)

Ej. A może koledze chodzi po prostu o wgranie programu w BASICu (który ma na PC w postaci pliku tekstowego) do atari, żeby pojawił się w tam jako program (czyli LIST, RUN... te sprawy)?

624

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Jeszcze tego nie próbowałem. Sprawdzę, jak to działa.

Nie wiem jak dokładnie masz zrealizowane te śledzenie, bo to nie jest trywialna sprawa, ale dość silnym mechanizmem mogłoby być śledzenie szerokości rejestrów na poziomie procedur (teraz trochę pofantazjuję):
- W samej deklaracji procedury, lub jako pierwszy pseudorozkaz (coś ala .a8x16, .a16x8 itd) mogłaby być deklaracja jaka szerokość rejestrów obowiązuje na wejściu.
- Wewnątrz procedury byłoby normalne śledzenie szerokości zaczynając od zadeklarowanego stanu początkowego.
- błędy byłyby generowane przy próbie użycia innej szerokości (tak jak już masz to zaimplementowane) ORAZ podczas próby wywołania procedury, która ma zadeklarowaną inną wstępną szerokość niż aktualna szerokość w miejscu wywołania.

Wyobrażam sobie, że jest to osiągalne, bo można byłoby wywołanie procedury traktować jako instrukcję wrażliwą na szerokość argumentu (taki lda #) z taką szerokością, jaka jest w danej procedurze deklaracja.

625

(22 odpowiedzi, napisanych Programowanie - 8 bit)

O! Super! Wiedziałem TeBe, że można na Ciebie liczyć :)

Jak zrobi się opt h- (w przykładzie jest przypadkowo h+), to generowany plik jest identyczny jak z AlfAssemblera.