601

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

602

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

603

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

604

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

605

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

606

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

607

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

608

(22 odpowiedzi, napisanych Programowanie - 8 bit)

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

609

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

610

(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)?

612

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

613

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

614

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Faktycznie. Na zrobienie  lda.w #( label & $ffff ) nie wpadłem. Zastosuję.

Na ORG powyżej $FFFF można mieć dwa sposoby:

  • Zezwalać na takiego orga tylko przy opt h-

  • Zastosować nagłówek AlfAssemblera zaproponowany przez Draco, czyli $FBFB

615

(22 odpowiedzi, napisanych Programowanie - 8 bit)

OK. O tym nie myślałem. Nie wiem czy stosunek trudność do zysków jest opłacalny, żeby się za to zabrać. A format COMa position-independent, którego trzeba po prostu załadować pod dowolny adres, potrzebuje przynajmniej nagłówka sygnalizującego niezależność od adresu oraz długość bloku. Czegoś takiego nie ma, bo na 6502 nie było to sensowne, a na 65c816 już tak.

616

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Draco: Format ładowania w dowolne miejsce mógłby być przydatny, gdyż kod 816-tki może być relokowalny bez żadnej ingerencji (aczkolwiek programowanie kodu relokowalnego jest trochę uciążliwe). Trzeba byłoby tylko wymyślić sposób na powiadamianie kodu, gdzie zostały załadowane jego dane (coś a'la bloki RUN i INIT?).

Trzeba utworzyć jakiś komitet standaryzacyjny i podyskutować nad takimi rzeczami przed konkretną implementacją w konkretnych systemach :)


TeBe: Te fragmenty w dokumentacji znam, ale nie tłumaczą one np. jak otrzymać 16 młodszych bitów z adresu 24-bitowego.

617

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Operatory < ! > wydają się sensowne. Asembler powinien tylko wypisywać warning gdy żaden operator nie jest użyty (programista oczywiście może wiedzieć o co mu chodzi, ale tutaj wg mnie lepiej być dosłownym, bo to zmniejsza okazję do błędu).

Mads ma 24 bitowe adresowanie, nie potrafi tylko ustawić adresu asemblacji na adres spoza banku zerowego. Nie potrafi tego ani dyrektywa ORG, ani .SEGDEF. Odkryłem jednak, że potrafi to blok .PROC, któremu można ustawić dowolny 24-bitowy adres. Gdy już myślałem, że jest to rozwiązanie, okazało się, że z 24-bitowego adresu nie można (albo raczej nie potrafię) wyciągnąć 16 bitowego offsetu w segmencie i taki kod się nie kompiluje:

    opt h- c+

    org $0000

    .proc test, [$010000 + *]
label    lda.w #label
    .endp
label    lda.w #label
test.asm (6) ERROR: Value out of range

O nagłówku $FBFB dobrze wiedzieć. Szukałem czegoś takiego. Sprawdziłem i działa poprzez dodanie nagłówka z dwoma 24-bitowymi adresami do każdego bloku. Aczkolwiek wydaje mi się, że adres końca wystarczyłby 16 bitowy, ale to już szczegół.

Co do asemblerów, to w grę wchodzą tylko cross-assemblery (mam już środowisko do budowania itd). Co jest w madsie, a niema tego (nie znalazłem) nigdzie indziej, to idea procedur (bloki .PROC), która po podrasowaniu bardzo dobrze może wpisywać się w schemat programowania 65c816. Blok .PROC grupuje fragment kodu w logiczną całość z lokalnymi etykietami, a przekazywanie parametrów może być zrealizowane za pomocą stosu 65c816. Np. "engine" do deklarowania parametrów procedury mógłby służyć do śledzenia zawartości stosu. Np takie procedury mogłyby być tożsame:

    .proc sum1 ( .BYTE par1,par2 )
    lda pra1
    clc
    adc par2
    rts
    .endp


    .proc sum2
    lda 2,s
    clc
    adc 1,s
    rts
    .endp

Dodatkowo procedury można byłoby wzbogacić o chociażby specyfikację stanu procesora jaki w niej obowiązuje (długość rejestrów) i asembler mógłby śledzić czy stan jest spójny pomiędzy wywołaniami (niby nie daje to żadnych gwarancji, ale pomaga przy zachowaniu konwencji, no i tak, wiem, że mechanizmy śledzenia to nic nowego :)).

618

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Nie było to rozgłaszane, ale nie jest tajemnicą, że piszę diagnostykę i firmware dla pasiowej karty turbo. Przez te kilka tygodni zdążyłem się przekonać, że 65c816 w pełnej przestrzeni adresowej jest diabelnie trudnym procesorem do oprogramowania w asemblerze. Główną trudność stanowi jego kontekstowość, o której trzeba pamiętać pisząc każdy fragment kodu:

  • w zależności od stanu procesora rozkazy natychmiastowe mogą łykać 8 lub 16 bitów operandu,

  • w zależności od okoliczności ten sam adres logiczny może wskazywać na rózne adresy fizyczne, np. lda $00 to adresowanie zerostronicowe (direct) więc adres fizyczny to D + $00, lub adresowanie absolutne, które adresuje pamięć w banku danych (niekoniecznie tożsamym z bankiem zerowym) oraz adresowanie długie, które to dopiero zaadresuje komórkę o fizycznym adresie $000000.

  • "strona zerowa" jest ruchoma i indeksowanie 16-bitowe może trafić gdzie indziej niż to wynika z kodu, bo $00,X nie wskazuje na adres X, tylko D + X.

  • równocześnie można operować na trzech różnych bankach: zerowym, banku danych, banku programu, przez co takie sta *+4 nie zawsze trafia w operand następnego rozkazu.

O co zatem mi chodzi? O to, że składnia asemblera 6502 ma się nijak do programowania 65c816 i straciłem sumarycznie wiele godzin z powodu błędów wynikłych z nawyku programowania 6502. O wiele za dużo, szczególnie, że w części z nich z pewnocią mógłby pomóc asembler. Założyłem ten wątek, bo nie jestem 100% pewny jakie rozwiązanie byłoby najlepsze i może ktoś będzie miał jakieś fajne pomysły i spostrzeżenia.

Skrajnym rozwiązaniem byłoby zaproponowanie składni niekompatybilnej z dotychczasową, ale wadą byłaby konieczność nauki asemblera od nowa. Rozwiązaniem pośrednim i najprostszym mógłby być jakiś tryb "strict" istniejącej składni. Najważniejsze co byłoby niezbędne w tym trybie to wyłączenie optymalizacji długości operandu oraz obligatoryjne specyfikowanie długości. Byłoby więcej pisania, ale to zdecydowanie mniejsze zło od głupich pomyłek, bo przecież każdy z tych rozkazów robi coś innego:

0000 A5 00           lda.b 0
0002 AD 00 00        lda.w 0
0005 AF 00 00 00     lda.l 0

0009 A9 00           lda.b #0
000B A9 00 00        lda.w #0

i przy braku specyfikacji długości w zależności od tego jaki operand wpadnie to wygeneruje się inny rozkaz.


Następna rzecz, której brakuje mi w madsie, to możliwość nadawania adresu asemblacji poza bankiem zerowym. ORG przyjmuje tylko adres z przedziału $0000 do $ffff i napisanie kodu dedykowanego bankowi np $f0 nastręcza niemałych trudności (kilka godzin szukałem błędu, którym był skok jsl, który trafiał do banku zerowego).

To nie rozwiązuje wszystkich problemów, ale przynajmniej te najważniejsze.

Ogólnie spostrzeżenia mam takie, że karta turbo z 65c816 i 16 MB RAMu to już nie atari ;)
Jak widać programuje się to zupełnie inaczej i daje zupełnie inne możliwości. Pamięć atari w banku zerowym może być traktowana coś a la pamięć CHIP w amigach, i opłaca się go używać tylko do pamięci ekranu a kod i dane można trzymać wyżej, ale to wymaga szerokiej infrastruktury w postaci formatu plików wykonywalnych dedykowanych wysokim bankom i systemu operacyjnego, który to wszystko obsłuży.
No i dość dobrze pasowałby tu kompilator wysokiego poziomu, bo 816 ma tryby adresowania wspierające pracę z kompilatorami (np., adresowanie względem wskaźnika stosu) i jak ma się tak dużo pamięci, to nie trzeba optymalizować na rozmiar.

619

(33 odpowiedzi, napisanych Bałagan)

Poużywałem trochę tego Debut Video Capture i jest całkiem niezły, ale dziś zauważyłem kluczową wadę: zaczął mnie informować, że expiruje za next few days :(
Myślałem, że jest płatny tylko do nagrywania, a na podgląd będzie pozwalał. Jak zgaśnie mi całkiem, to będę musiał wrócić do VirtualDuba, a szkoda.

620

(58 odpowiedzi, napisanych Bałagan)

Skojarzyło mi się,  że serwisy typu kokos.pl oferują tego typu usługi.

621

(42 odpowiedzi, napisanych Bałagan)

Póki co namierzyłem tę stronę, ale sterowników z niej nie próbowałem: http://www.sabrent.com/category/tv-vide … USB-AVCPT/
Jakiś facet z forum MS polecał na Win 7 x64 konkretnie ten: http://www.sabrent.com/drivers/USB-AVCP … r_Win7.zip

622

(42 odpowiedzi, napisanych Bałagan)

Ja też mam "Video DVR" ale niestety sterowniki też ściągałem z internetu i nie mam pojęcia skąd, a instalki już nie mam. Ale pamiętam, że nie szukałem długo, więc na pewno już je próbowałeś. Jakby ktoś miał pomysł jak sprawdzić jaki mam dla tego urządzenia zainstalowany sterownik, to mógłbym sprawdzić, bo mi się nie udało wyciągnąć żadnych sensownych informacji.

623

(42 odpowiedzi, napisanych Bałagan)

Powód musi być inny, bo ja używam przez SVideo pod Win7 64bit i mam normalnie kolor.

624

(33 odpowiedzi, napisanych Bałagan)

Ja mam i używam dokładnie tego grabbera z linków cypriana i pilat23. To prawda, że kable muszą być dobre, bo wychodzą wszystkie syfy. Poza tym na jakość nie narzekam.
Jedyny problem z jakim się borykam to odpowiedni player pod windę, który potrafi przechwytywać sygnał z tego urządzenia i wyświetlać. Media player classic nie potrafi zapamiętać ustawień i ciągle trzeba konfigurować na nowo. VLC da się odpalić z command line'a z wybranymi ustawieniami, ale nie potrafię w nim wyłączyć cachowania i mam pół sekundy (jeśli nie więcej) opóźnienia. W tej chwili używam Virtual Duba, ale nie jest on do tego zadania zbyt user friendly. Jeśli ktoś miałby namiar na dobry program, byłbym wdzięczny.

625

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

Dzięki za odpowiedź.

Rozebrałem drugą stronę. Mam nadzieję, że po złożeniu będzie działać.

SIO2PC


Niebieski jest już przylutowany do pinu 5 (na zdjęciu niestety nie widać tego dobrze). W konsternację wprowadziło mnie to, że czerwony jest przylutowany do 8., a nie do 9. tak jak na schematach.
Udało mi się jednak porozmawiać z Pasiem i on stwierdził, że mam wersję CTS, stąd pin 8, a kabel żółty, tak jak mówiłeś, powinien być przylutowany do pinu 2.

Poproszę kolegę z pracy, żeby zrobił mi to tak jak należy, żeby znowu się nie rozwaliło.