Drodzy magnetofoniarze, pamiętacie te pełne napięcia chwile z dzieciństwa, gdy chodziliście po domu na palcach, błagaliście domowników aby mówili szeptem, wszystko po to aby nie zakłócić spokojnego przebiegu ładowania Ulubionej Gry? Ile razy wasze starania spełzły na niczym, gdy w 15. minucie komputer niemiłym buczeniem oznajmiał "nic z tego"? Nadeszła chwila oczyszczenia! Za Wasze zszargane nerwy odpowiada nie szczekający pies, nie głośna muzyka z Pokoju Starszego Brata, lecz błąd w OS-ie.

Podczas pracy nad A8CAS notorycznie przydarzał mi się dziwny problem: podczas odczytu w emulatorze obrazu CAS kasety, raz na kilkanaście-kilkadziesiąt prób występował błąd odczytu. Poszukiwania spełzły na niczym, dopiero kol. FUJI przeanalizował sprawę dogłębnie i wywnioskował, że podczas odczytu w pewnej szczególnej sytuacji błędnie wykrywane jest baudrate rekordu. Rzut oka na źródła OS-u potwierdził obawy.

Główna procedura obliczania baudrate, SBR ($ED3D) oczekuje aż sygnał na DATA IN zmieni się z 1 na 0, czyli na 1. bit rekordu. W tym momencie aktualne wartości VCOUNT i RTCLOK+2 są zapisywane pod TIMER1 i TIMER1+1. Potem procedura odczekuje 10 zmian sygnału DATA IN i znowu zapisuje aktualne VCOUNT i RTCLOK+2, tym razem w akumulatorze i rejestrze Y.

SBR     =       $ED3D               ;entry

SBR1    LDA     BRKKEY
        BNE     SBR2            ;if BREAK key not pressed

        JMP     PBK             ;process BREAK key, return

SBR2    SEI
        LDA     TIMFLG          ;timeout flag
        BNE     SBR3            ;if no timeout

        BEQ     SBR5            ;process timeout

; Czekaj na bit startu (0)
SBR3    LDA     SKSTAT          ;???
        AND     #$10            ;extract start bit???
        BNE     SBR1            ;if start bit

        STA     SAVIO           ;save serial data in
; Zapisz aktualne VCOUNT i RTCLOK+2 w TIMER1, TIMER1+1
        LDX     VCOUNT          ;vertical line counter
        LDY     RTCLOK+2        ;low byte of VBLANK clock
        STX     TIMER1
        STY     TIMER1+1        ;save initial timer value
        LDX     #1
        STX     TEMP3           ;set mode flag???
        LDY     #10             ;10 bits

; Odczekaj 10 zmian sygnału
SBR4    LDA     BRKKEY          ;???
        BEQ     PBK             ;if BREAK key pressed, process, return

        LDA     TIMFLG          ;timeout flag
        BNE     SBR6            ;if no timeout

SBR5    CLI
        JMP     ITO             ;indicate timeout, return

SBR6    LDA     SKSTAT          ;???
        AND     #$10            ;extract ???
        CMP     SAVIO           ;previous serial data in
        BEQ     SBR4            ;if data in not changed

        STA     SAVIO           ;save serial data in
        DEY                     ;decrement bit counter
        BNE     SBR4            ;if not done

        DEC     TEMP3           ;decrement mode???
        BMI     SBR7            ;if done with both modes

; Po 10 zmianach sygnału, zapamiętaj aktualne VCOUNT i RTCLOK+2
        LDA     VCOUNT          ;???
        LDY     RTCLOK+2        ;???
; Oblicz baudrate
        JSR     CBR             ;compute baud rate
        LDY     #9              ;9 bits
; Zignoruj następne 9 zmian sygnału (rekord zaczyna się od 20 naprzemiennych 
; bitów 0 i 1 (2 bajty $55), zczego tylko 10 pierwszych jest używanych do
; obliczania baudrate)
        BNE     SBR4            ;set bit counter
; Dalej nieistotne - zapis wyniku do AUDF3/4

Potem jest skok do CBR ($ECC8), gdzie obliczana jest ilość skanlinii które minęły pomiędzy ww. dwoma momentami (dokładniej, ilość skanlinii/2, w końcu to VCOUNT).

CONS1X  DB    131        ;liczba skanlinii/2 w NTSC
        DB    156        ;liczba skanlinii/2 w PAL

CBR     =       $ECC8           ;entry
; w A i Y znajdują się wartości odpowiednio VCOUNT i RTCLOK+2 po 10. zmianie sygnału
        STA     TIMER2          ;save final timer value
        STY     TIMER2+1
        JSR     AVV             ;adjust VCOUNT value
        STA     TIMER2          ;save adjusted timer 2 value
        LDA     TIMER1
        JSR     AVV             ;adjust VCOUNT value
        STA     TIMER1          ;save adjusted timer 1 value
        LDA     TIMER2
        SEC
        SBC     TIMER1
        STA     TEMP1           ;save difference
        LDA     TIMER2+1
        SEC
        SBC     TIMER1+1
        TAY                     ;difference
        LDX     PALNTS          ; 0 = NTSC, 1 = PAL
        LDA     #0
        SEC
        SBC     CONS1X,X        ;???

CBR1    CLC
        ADC     CONS1X,X        ;accumulate product
        DEY
        BPL     CBR1            ;if not done

; W tym momencie A zawiera ilość skanlinii/2, które minęły podczas 10. zmian sygnału DATA IN.
; Dalej nieistotne - robiona jest interpolacja i ustalane są wartości dla AUDF3/4 na postawie tablicy

CBR, w uproszczeniu, odejmuje pary liczb TIMER2, TIMER2+1 od TIMER1, TIMER1+1 aby uzyskać odpowiednią wartość. Przedtem jednak każda z par liczb jest lekko modyfikowana (skok do AVV ($ED2E)), żeby odejmowanie miało sens:

CONS2X  DB    7        ;liczba skanlinii/2 od skanlinii 248. do 0. w NTSC
        DB    32        ;liczba skanlinii/2 od skanlinii 248. do 0. w PAL

AVV     =       $ED2D   ;entry
; W linii 248 (= $7C * 2) zachodzi przerwanie VBL, w którym RTCLOK+2 jest zwiększane o 1.
        CMP     #$7C
        BMI     AVV1    ;if A < $7C

        SEC
        SBC     #$7C
        RTS             ;return

AVV1    CLC
        LDX     PALNTS
        ADC     CONS2X,X
        RTS             ;return

AVV bierze pod uwagę, że w 248 linii ekranu następuje zwiększenie RTCLOK+2 o 1.

Ogólnie wszystko działa dobrze, przy następującym założeniu: w VCOUNT wartość $7C pojawia się po wystąpieniu przerwania VBL (a tym samym po zwiększeniu RTCLOK+2). Niestety założenie to nie jest prawdą. VCOUNT jest zwiększane zawsze w 111 cyklu poprzedniej skanlinii (czyli VCOUNT przeskakuje na $7C w 111 cyklu skanlinii 247), natomiast CPU zaczyna obsługiwać VBL najwcześniej w 9. cyklu linii 248 (12 cykli później). Linia 248 jest daleko poniżej końca Display Listy, standardowo jest też wyłączone DMA dla PMG, więc całe 12 cykli jest tu dostępne dla CPU. Na każdą ramkę przypada zatem 12-cyklowy okres, podczas którego jest problem. Jeśli w okolicy tych dwunastu cykli zmieni się sygnał DATA IN, wykryte baudrate może być nieprawidłowe.

FUJI wykonał odpowiednie testy na prawdziwym sprzęcie (spreparowany programik i nagranie składające się z 10000 dwubajtowych rekordów $5555, mam nadzieję że napisze tu coś od siebie), i wyszło że prawdopodobieństwo błędu jest ok. 1/2000.

Czy ktoś już wcześniej natknął się na ten błąd i analizował sprawę? Nie znalazłem na necie nic w tym temacie.

327

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

I o to chodziło, dziękuję! Dzięki Twojemu wypracowaniu nie musiałem nawet zaglądać na schemat. Obsługa katridża została właśnie dodana do Atari800 (jak znam życie, w ciągu doby nowa binarka pojawi się na Try2Emu) oraz do Atari800-a8cas. Hint: Trzeba wyłączyć R-Time 8  żeby działało.

Przy okazji - Dely, masz jeszcze gdzieś oryginalne skany instrukcji do Multi-Cartridge'a? W Twoim zOCRowanym PDF-ie najwyraźniej jest kilka błędów, chciałbym zweryfikować czy w oryginale też były i ew. podesłać erratę.

Ciekawostka - instrukcja pomija całkowicie opcje H - BASICT i I - ASTNANORMAL kartridża. Czyżby było kilka wersji Multi-Cartridge'a?

328

(29 odpowiedzi, napisanych Kolekcjonowanie)

Nie ma czegoś takiego jak Nadral w oryginale. (EDIT: Chyba że w prywatnej kolekcji autora, ma się rozumieć.)

329

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

Łał. Zakłądałem że to zwykły Blizzard/Phoenix.

Dziękuję. Jak będziesz miał chwilkę podziel się też schematem i ew. opisem carta "jak dla ludzi", bo w schematoczytaniu jestem kiepski.

330

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

BUMP!

Czy mogę prosić o puszczenie w eter ROM-u AST Multicartridge? ZTCW Seban zrekonstruował carta, ale ROM-u nie upublicznił.

331

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

A powiedz Seban czy ja dobrze rozumiem. Ścieżka zapisu jest totalnie niezmodyfikowana, amirite?

332

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

lemiel napisał/a:

Bo te błędy to nie efekt złego odczytania taśmy?

Nie. Suma kontrolna się zgadza, ewidentnie dane były błędne przy zapisie.

Natomiast drugi (ostatni) blok danych jest ucięty w połowie - jest za krótki, brakuje sumy kontrolnej - jakby podczas zapisu ktoś się rozmyślił i nacisnął Reset. Toteż pliku i tak nie da się wczytać.


lemiel napisał/a:

A te emulatory nawet po podłączeniu karta z np. KOSem od Blizzarda i ładowaniem T:* też nie zadziałają?

Altirra ani inne "oficjalne" emulatory sprzętowych turbo nie obsługują w'ogle. Atari800 "od Krótkiego" tj. z obsługą liba8cas "potrafi" odczytać (nie zapisywać) taśmy turbo ale tylko z WAV, przy czym rzadko kiedy to działa.

Dopiero jak ściągniesz sobie najnowsze źródełka Atari800-a8cas i liba8cas z repozytorium i samemu skompilujesz, będziesz dysponował wersją emulatora potrafiącą wczytać pliki CAS/HEX wytworzone programem a8cas-util.pl (a program ten robi to właściwie bezbłędnie). Tej wersji nie opublikowałem celowo, bo parę rzeczy tam jest popsutych, a nie mam czasu tego naprawić.

Krótko mówiąc, ładowanie z kartridżem działa, ale lepiej z CAS-ów niż z WAV-ów.

lemiel napisał/a:

- jeśli będę miał plik w Turbo ROM - jest prawdopodobne, że też takie będą, bo nie pamiętam w czym zapisywane były taśmy kolegi, bo mój magnetofon z Blizzardem to czytał - to też się powinny skonwertować, bo zapis turbo jest "z grubsza" jednakowy?

Skrypt FUJI'ego obsługuje Turbo ROM. Atari800-a8cas jeszcze nie, więc albo musisz mieć loader do Blizzarda obsługujący nagrania w formacie Turbo ROM (bo emulator Blizzarda obsługuje), albo może da się coś wykombinować w konfiguracji emulatora (ustawić Turbo type na Manual itd.) Daj znać jakby co.

333

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

To już raczej radzę Ci ściągnąć z Gita najnowsze liba8cas i atari800-a8cas - dzięki temu będziesz mógł konwertować taśmy turbo do CAS przy użyciu a8cas-util.pl i ładować je w emulatorze - daje to efekt dużo lepszy niż ładowanie bezpośrednio w emulatorze WAV-ów turbo.

334

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

seban napisał/a:

W carcie od Zenona znowu widzimy napis "KNS". Ciekaw jestem czy Atares "piracił" Cartridge z KNS-u zmieniając tylko napisy czy robili to może na licencji? :D

BUMP!

A może to jedna i ta sama firma? Zauważyłem że Micro Loader 2.8 z ww. Phoenixa 1.0 wyświetla na chwilkę tekst "LOADER 2.0 by KNS "ATARES" Sp. z o.o."

335

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

Altirra nie obsługuje sprzętowych turbo, A8CAS i Atari800-a8cas właściwie też nie (to co tam jest to tylko eksperyment). Można natomiast przerobić taśmę na CAS programem a8cas-util.pl - oto wyniki: plik CAS, plik HEX.

Zbiór nazywa się PUZZLE zawiera pierwsze sto parę bajtów Puzzli z TA 2/91 - tak jakby ktoś przepisał (i to z błędami) kilka pierwszych linijek i zgrał je Zgrywusem.

336

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

Phaeron kilka razy już wspominał, że nie interesuje go włączanie cudzego kodu do Altirry. Zresztą już mu ktoś podrzucał na bloga linka. Poza tym, API liba8cas wciąż nie traktuję jako finalnego - np. obsługa hardware'owych turbo będzie wymagała jego zmiany.

Świetna sztuczka z tym Breakiem - ja wciskałem go tylko przy CLOAD i tam nie działo się nic ciekawego, nie przyszło mi nigdy do głowy próbować przy boocie.

337

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

Jak tylko nastąpi merge A8CAS z oficjalnym Atari800, ten ostatni będzie wreszcie miał jakąś przewagę nad Altirrą :-P

EDIT: Grzegorz_29_, wszystko ładnie się wczytuje pod Atari800-a8cas.

338

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

Tylko 8-9 sekund. Zatem Atari800-a8cas wykłada się niejako prawidłowo.

EDIT: Swoją drogą sprytnie to wymyślili. Zapewne wszystkie kasety firmy Atari miały rozbiegówkę nie dłuższą niż 8 sekund oraz sygnał pilotujący nagrany od samego początku taśmy, więc jedyne co użytkownik musiał zrobić to przewinąć taśmę do początku strony aby rozpocząć odczyt. Żadnego wyszukiwania początku sygnału na słuch itp.

339

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

Seban, Grzegorz_29_, dziękuję.

Warto było sprawdzić. Atari800-a8cas wczytuje poprawnie wszystkie pliki także z WAV-ów nieoczyszczonych (nie sprawdzałem, ale Altirra też powinna, bo jest oparta na właściwie tym samym algorytmie). Tzn. wszystkie z wyjątkiem Banku Danych, bo ten zawiera zakłócenie w sygnale pilotującym (w oczyszczonym pliku jest to na pozycji 11,883 - 11,922 s). (Dziwię się że Altirra sobie z tym zakłóceniem radzi - w końcu ten sam algorytm. Będę musiał pogrzebać w jej źródłach.)

340

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

No więc spędziłem dziś poranek nad analizą procedury odczytującej, niestety jest tak powikłana ;-) że nie udało mi się tego skończyć. A8CAS nie daje sobie rady, ale tylko dlatego że gdzieś-tam zrobiłem błąd - teoretycznie A8CAS powinien poprawnie przekonwertować każdą taśmę w normalu, nawet gdy nie rozpozna rodzaju bloku. Działa za to konwersja do formatu "FSK" (opcja -ff) - taki plik poprawnie wczytuje się w emulatorze.

Seban, czy mógłbyś udostępnić gdzieś oryginalne WAV-y sprzed oczyszczania? Przydadzą się do testów.

341

(98 odpowiedzi, napisanych Bałagan)

Azbest, ja bym się na Twoim miejscu skontaktował z innymi właścicielami europejskich serwisów o Atari (Fandal, Atarimania) i zapytał czy mieli już przejścia tego typu. Szczególnie Atarimania, bo oni hostują tam wszystkie ROM-y do Atari 2600, a obecne Atari właściwie tylko na tym teraz zarabia, wydając kolejne Atari Anniversary na coraz to nowe platformy (założę się, że na obrazy kartridży do 8-bit nie dają latającego faka).

Poza tym sądzę, że jak przyjdzie co do czego, wypadałoby grzecznie spytać Atari, które konkretnie pliki życzą sobie usunąć (argumentując że dzięki temu szybciej się zastosujesz itp.), a nie wylewać dziecko z kąpielą i zahasłowywać wszystko jak leci.

EDIT: Parę lat temu AtariAge dostali Cease-And-Desist od Activision, i od tej pory nie udostępniają już ROM-ów tej firmy (oprócz prototypów). No ale oni są w Ameryce.

342

(23 odpowiedzi, napisanych Sprawy atari.area)

Słusznie xxl i inni prawią, Atariki to nie miejsce na wylewanie łez, treści powinny być obiektywne, weryfikowalne i "nienacechowane". Sensowne wydają mi się nazwy "Zmarli" lub "Osoby zmarłe", przy czym to pierwsze lepsze, bo zwięzłe.

Racja, w ogóle pomysł jest niezależny od xxl-a księgi kondolencyjnej, chociaż moim zdaniem kompletna, rzetelnie przygotowana biografia jest całkiem niezłym sposobem upamiętnienia osoby.

343

(23 odpowiedzi, napisanych Sprawy atari.area)

No, jeszcze Bartman, Daxey, Krzyś Kubeczko, pewnie ktoś by się jeszcze znalazł.

344

(23 odpowiedzi, napisanych Sprawy atari.area)

Najprościej by było utworzyć kategorię w rodzaju "Zmarli Atarowcy" w Atariki.

345

(52 odpowiedzi, napisanych Emulacja - 8bit)

Hm. Powolność glxgears oznacza, że renderowanie openGL nie jest przyspieszane sprzętowo. Internetsy twierdzą że opensource'owy sterownik do Radeona obsługuje sprzętowe 3D na Twojej karcie, ale skądinąd wiem że rozwój sterownika w ostatnim roku był dość intensywny. Diagnoza zatem brzmi: za stary sterownik, nie obsługuje OpenGL, przetestuj nowe Ubuntu.

BTW. Mniemam że zmniejszenie rozmiaru okna Atari800 (tudzież zmniejszenie rozdzielczości w fulskrinie) poprawia wydajność, zgadza się?

346

(52 odpowiedzi, napisanych Emulacja - 8bit)

Przynajmniej wiadomo, że akceleracja działa.

To jeszcze 23 rzeczy:
1. Żebym wiedzial co to znaczy "potwornie wolno": atari800 -showspeed, ile procent wyciąga
2. Jak zmaksymalizujesz glxgears jest jakaś różnica w fps?
3. Wypróbuj różne ustawienia Display settings->Video mode settings->Pixel format.

347

(52 odpowiedzi, napisanych Emulacja - 8bit)

Potwornie wolno? Może winna jest opcja "Use pixel buffer objects"? A może znowu coś z systemem. Sprawdź glxinfo i ewentualnie uruchom glxgears na kilkanaście sekund i zobacz jaką prędkość raportuje.

348

(52 odpowiedzi, napisanych Emulacja - 8bit)

Cosi napisał/a:

Mogę to podsumować jednym zdaniem: De gustibus non disputandum est.

A, więc to wyłącznie kwestia gustu.

Cosi napisał/a:

Chcę taki menedżer okien, mam taki, chcę taki program pocztowy, mam taki. Dlatego właśnie nie podoba mi się planowana ścisła integracja Unity ze środowiskiem GNOME. Bo ja chcę móc wybrać to, co mi pasuje, a nie to, co pasuje choćby i 99 procentom linuksiarzy.

Z tego co widzę, możliwość wyboru jest. Czy możesz wspomnieć szerzej o problemach z wyłączaniem Unity? Ja nie szukałem pod tym kątem.

Cosi napisał/a:

Rozumiem, że dla Ciebie Dolphin jest wygodniejszy od Konquerora, ale niekoniecznie to musi znaczyć, że jest lepszy dla każdego. I bardzo dobrze, że nie każdy ma taki sam gust, bo nie wiem jak Ciebie, ale mnie przeraża wizja jednej, jedynie słusznej wersji oprogramowania dla każdego.

Wymyśliłeś sobie chochoła, to niech Cię teraz przeraża. Oba programy są dostępne w Kubuntu, wybór jednego czy drugiego sprowadza się do przełączenia jednej opcji w oknie "Domyślne programy".

Cosi napisał/a:

Jak pogrzebię przy sterowniku karty graficznej, dam znać, jak się sprawuje emulator.

Żeby przełączyć na sterowniki opensource'owe, należy użyć programu "Hardware Drivers" (po polsku zdaje się "Dodatkowe sterowniki").

A poza tym, mgliście kojarzę że z zamkniętymi sterownikami ATI dostarczona jest też osobna wersja glxinfo, o nazwie fglrxinfo. Sprawdź co zwraca ten program.

349

(52 odpowiedzi, napisanych Emulacja - 8bit)

Cosi napisał/a:

Widziałem w działaniu. Dziękuję.

No ale powiedz co cię tak w Unity odstręcza, ciekaw jestem na wypadek gdybym sam miał planować przesiadkę. (Jako osoba która nigdy go nie używała z pewnością masz wiele do powiedzenia na ten temat.)

Zawsze mnie to bawi. Pogmera ktoś przy podstawach klasycznego okienkowego paradygmatu, zastąpi Menu Start czymś innym, i zaraz się podnosi larum, że "potwornie niewygodne/fpyte nieprzyjemne dziadostwo". Normalnie duma i uprzedzenie.

Cosi napisał/a:

Rzecz w tym, że ja w ogóle nie mam takiej pozycji w menu :D O tym właśnie mówiłem: rady w Internecie bardzo często dotyczą innej wersji i są bezużyteczne w moim przypadku.

Ale ta rada dotyczy Twojej wersji. Z tego co rozumiem, to może być dlatego że masz Compiza zamiast Metacity zainstalowanego, ale nic więcej nie wiem. To w ogóle jest problem na inne forum.

Cosi napisał/a:

Kiedyś tak było z KDE - przed wersją 3.5 to było najlepsze środowisko, potem zaczęli bawić się z domyślnymi aplikacjami (np. Dolphin zamiast Konquerora), z efektami, a potem pojawiło się KDE 4 i już się tego nie dało używać (tzn. ja nie dałem rady).

Podejrzewam że to znów uprzedzenie, ale doskonale to rozumiem. KDE 4 stało się używalne dopiero tak gdzieś od wersji 4.3 - nazwanie wszystkich wcześniejszych wersji "stabilnymi" było błędem, który zszargał temu środowisku opinię. Zachęcam do ponownej próby przesiadki. A Dolphin jest wygodniejszy.

350

(52 odpowiedzi, napisanych Emulacja - 8bit)

Cosi napisał/a:

Obstawiam problem z tym "własnościowym" sterownikiem, chyba będę musiał poszukać czegoś w zastępstwie.

ZTCW otwarty sterownik obsługuje sprzętową akcelerację na HD5470.

Cosi napisał/a:

Sporo czytałem o problemach z pozbyciem się Unity w wersji 11.04.

Nie znam się, używam KDE. Używałeś chociaż tego Unity?

W każdym razie, aby przetestować Atari800 pod najnowszym Ubuntu, możesz go odpalić z uesbeka.

Cosi napisał/a:

A jesteś pewien że masz go w ogóle włączonego?

Tego nie wiem.

Patrzę w necie i widzę: System -> Preference -> Desktop setting -> Windows -> check 'Use Gnome Compositing'