2,026

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

Hej!

No pisałem o tym wcześniej, ale widać w tym moim chaotycznym poście musiało umknąć :) Jest wymieniony rezystor R6 (domyślnie o wartości 10K) na rezystor o wartości 3.3K.

Tak się robiło w przypadku T2000F i też wystarczało :) Przez zmniejszenie tego rezystora zwiększamy poziom zapisu, zapis następuje przez softwarowe sterowanie linią "DATA OUTPUT" (5 pin SIO). Aby sterować linią data OUT w dowolny sposób używa się 7-mego bitu rejestru $D20F. Tak właśnie dokonywało zapisu Turbo2000F, Blizzard oraz parę innych wynalazków.

Co ciekawe wcale to nie przeszkadzało przy standardowym zapisie a często nawet poprawiało "pewność" zapisu w standardzie również.

A jeszcze jedna ciekawostka, autorzy np. blizzarda czy Turbo ROM poszli o krok dalej i linię DATA_OUT (5 pin SIO) wykorzystali do przełączania również magnetofonu w tryb turbo (pozbyli się kłopotliwego użycia linii COMMAND). Podczas odczytu ustawiali bit#7 w SKCTL co przełączało magnetofon na turbo. Oczywiście ta sama linia służyła również do zapisu danych ale gdy nagranie w turbo było zapisywane na taśmie tor odczytu zupełnie nie był potrzebny :)

Jeszcze dla przypomnienia:

$D20F "SKCTL" (Serial and Keyboard Control register).
bit 7 - gdy ustawiony, wymusza nadawanie sygnału SPACE (logiczne 0) na linię DATA OUT gniazda SIO 

i szybki link to rejestrów POKEY-a w Atariki ;)

pisząc o R6 odnosiłem się oznaczeń w/g schematu XC12 narysowanego przez JER-a: http://seban.slight.pl/atari/atari_hard_turbo/xc12_js.gif

Jeszcze jedna uwaga... jak popatrzycie sobie na Czechosłowacką dokumentację i stronę nr 23, o tutaj: strona 23 -> widok płytki drukowanej

... to te rysunki porównacie z tym co było w magnetofonie Roderick-a wniosek nasuwa się sam... nawet projekt płytki drukowanej został "sklonowany" z tej dokumentacji, dla zobrazowania całej sytuacji obrazek:

http://seban.slight.pl/atari/atari_hard_turbo/aht_vs_t2k_cz.jpg

pozdrawiam
Seban

2,027

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

Hej!

Trochę czasu minęło ale dzięki temu iż szanowny kolega Roderick Hero, wypożyczył mi swój sprzęt (magnetofon i kasety) udało się mi się przeanalizować i udostępnić w dalszej części wątku wszystkie materiały związane z Atari Hard Turbo System. Wraz ze skromnym opisem pozwolę sobie dodać swoje wnioski, ale to za chwilę :) Piszę nowego posta aby zainteresowani tematem dostali informację iż coś się w wątku nowego stało :)

Zacznijmy od widoku płytki zamontowanej w magnetofonie XC12:

http://pigwa.code32.org/atari/atari_hard_turbo/aht_pcb_top.jpg http://pigwa.code32.org/atari/atari_hard_turbo/aht_pcb_bot.jpg

Już sam widok interface oraz elementów w nim użytych sugerował mi podobieństwo do już istniejącego już wcześniej rozwiązania. Czyżby kolejny system który miał być polskim rozwiązaniem okazał się klonem rozwiązania powstałego dużo wcześniej za granicami polski? Z komentarzem wstrzymam się jeszcze chwilę prezentując schemat tego co znajduje się na płytce powyżej:

http://pigwa.code32.org/atari/atari_hard_turbo/aht_sch.png

Schemat w wyższej rozdzielczości do pobrania: AHT interface (format PDF) lub AHT interface (format PNG)

Trochę dziwnie mi się robi jak się patrzy na rozwiązanie stworzone dużo wcześniej w Czechosłowacji, a w Polsce  nazwane inną nazwą i potem sprzedawane jako rozwiązanie autorskie. O co mi chodzi? Proszę popatrzcie na to:

http://pigwa.code32.org/atari/atari_hard_turbo/pg_019.gif

Górna część schematu to schemat magnetofonu XC12, dolna część opisana "PRIDAVNY INTERFEJS TURBO 2000" to fragment praktycznie identyczny z tym co się znajdowało w magnetofonie który dostałem do analizy. Różnica to ilość i typ zastosowanych diod wpiętych pomiędzy wyjściem ua741 a tranzystorem. Należy przypomnieć iż Czeskie Turbo powstało w 1987 roku.

Na czechosłowackim rozwiązaniu doskonale widać gdzie należy wpiąć płytkę interfejsu. Jest jeszcze jedna modyfikacja na płytce magnetofonu, należy wymienić rezystor R6 (10k) na rezystor o mniejszej wartości (3.3K w przypadku AHT), tak aby zwiększyć prąd zapisu na tyle aby było możliwe zapisanie sygnału w standardzie Turbo.

Tutaj o wiele czytelniejszy schemat magnetofonu XC12, narysowany przez Jer-a: XC12.

A tutaj link podany kiedyś przez użytkownika atari8.cz: Turbo 2000 by Jiri Richter. A link pojawił się przy okazji dyskusji o "Auto Turbo", o tutaj.

Te linki mogą dopełnić obraz całości i udowodnić z dużym prawdopodobieństwem iż AHT to klon czeskiego Turbo2000. Nie porównywałem jeszcze kodu loadera i struktury danych nagrań w tym systemie z czeskim turbo2000, ale "na ucho" brzmią bardzo podobnie. Jeden ciągły blok danych, mini bloki zawierające nazwę oraz adresy ładowania. Sprawa formatu zapisu jest rozwojowa, tylko czy kogokolwiek to interesuje? ;)

A teraz garść informacji technicznych na temat tego rozwiązania. Przełączenie magnetofonu w tryb turbo następuje po spełnieniu dwóch warunków: po pierwsze musi być włączony silnik magnetofonu (linia Motor Control) oraz aktywna musi być linia COMMAND. Z bramek NAND (7403) zbudowany prosty multiplekser przełączany właśnie linią COMMAND. Ten multiplekser pozwala wybrać z którego toru (standardowy demodulator FSK czy sygnał w Turbo) dane pojawią się na wyjściu DATA OUT. Ponieważ jednak linia COMMAND jest również wykorzystywana przy współpracy ze stacją dysków autor rozwiązania zabezpieczył się aby samo sterowanie linią COMMAND nie mogło wpłynąć na linię DATA_OUT. Pełna aktywacja interface-u nastąpi tak jak pisałem wcześniej, dopiero po włączeniu silnika magnetofonu. Dodać jeszcze można iż wzmacniacz operacyjny uA741 pracuje jako komparator z otwartą pętlą sprzężenia zwrotnego. Dwie diody na wyjściu wzmacniacza mają na celu pozbycie się tzw. "offsetu" wzmacniacza. Mają zapewnić iż napięcie niezrównoważenia wzmacniacza nie spowoduje potraktowania tego sygnału jako logicznej "1" pojawiającej się na wyjściu interface turbo.

Ufff... część sprzętową mamy jakby za sobą... więc pora na software który był dołączony na dwóch kasetach które otrzymałem od kolegi Rodericka. Jedna kaseta zawierała loadery oraz narzędzia, druga kaseta zawierała 36 gier zapisanych w tym systemie, wszystko udało się zgrać mino bardzo kiepskiego stanu kaset oraz ich wieku, dane mocno "zaszumione" i kasety sfatygowane mocno jednak wszystko udało się przegrać oczyścić trochę i zweryfikować.

Wczytanie każdego zgranego programu jest jak najbardziej możliwe. Po zgraniu i obróbce korzystałem z pomocy a8cas. Kolega "Krótki" wykonał kawał dobrej roboty opracowując tą bibliotekę oraz patch dla emulatora Atari800. Dzięki jego pracy moja praca mogła zostać wykonana o wiele szybciej i wydajniej. Należą mu się ogromne podziękowania! :)

Wróćmy jednak do głównego wątku... AHT i software... pierwsza z kaset to kaseta zawierająca loadery oraz programy narzędziowe (handlery, kopiery, programy do kompresji, itp.):

http://pigwa.code32.org/atari/atari_hard_turbo/aht%20-%20tools%20tape.jpg

Pierwotny obraz kasety (bez podziału na poszczególne programy) można pobrać tutaj: AHT - Tools Tape image

Potem pozwoliłem sobie podzielić ten "dump" na poszczególne programy i umieścić je w oddzielnych plikach. Każdy z plików został wczytany do przy użyciu Atari800-a8cas i uruchomiony. Wszystkie pliki wczytują się i uruchamiają poprawnie, link to archiwum spakowanego 7zip-em: AHT - Tools Tape - separate files.

Lista plików w archiwum:

aht - both_copy (#1).wav
aht - both_copy (#2).wav
aht - compress_copy_I (#1).wav
aht - compress_copy_I (#2).wav
aht - compress_copy_II (#1).wav
aht - compress_copy_II (#2).wav
aht - Dissassembler (#1).wav
aht - Dissassembler (#2).wav
aht - Hard Monitor (#1).wav
aht - Hard Monitor (#2).wav
aht - hard_copy (#1).wav
aht - hard_copy (#2).wav
aht - Trans C.2000 (#1).wav
aht - Trans C.2000 (#2).wav
aht - Trans C.2002 (#1).wav
aht - Trans C.2002 (#2).wav
std - HT Basic (#1).wav
std - HT Basic (#2).wav
std - loader A (#1).wav
std - loader A (#2).wav
std - loader B (#1).wav
std - loader B (#2).wav

W tym archiwum każdy z plików posiada prefix STD lub AHT. Oznacza to standard zapisu danego programu. STD to nic innego jak standardowy zapis atari, AHT to zapis w standardzie AHT. Są dwie wersje loaderów "A" oraz "B". Loader typu "A" służy to wczytywania gier, natomiast loader typu "B" służy do wczytywania programów użytkowych. Przez załadowaniem każdego z programów w turbo AHT należy wczytać odpowiedni loader.

Być może istniał do tego systemu odpowiedni cartridge zawierający to całe oprogramowanie jednak w chwili obecnej nic mi o tym nie wiadomo. Tak więc przed każdym wczytanie jakiegokolwiek programu zapisanego w formacie AHT należy wczytać loader w standardowej prędkości transmisji. Trochę upierdliwe ale jednak i tak szybsze niż wczytywanie całej gry czy programu użytkowego w standardowej prędkości transmisji.

Druga z kaset zawierała zestaw gier zapisany już w standardzie AHT:

http://pigwa.code32.org/atari/atari_hard_turbo/aht%20-%20games%20tape.jpg

Pierwotny obraz kasety (bez podziału na poszczególne programy) można pobrać tutaj: AHT - Games Tape image

Tak jak poprzednio podzieliłem ten "dump" na poszczególne programy i umieściłem je w oddzielnych plikach. Każdy z plików został wczytany do przy użyciu Atari800-a8cas i uruchomiony. Wszystkie pliki wczytują się i uruchamiają poprawnie, link to archiwum spakowanego 7zip-em: AHT - Game Tape - separate files.

Lista plików w archiwum:

aht - 01 - Jump!.wav
aht - 02 - Mutant Camels.wav
aht - 03 - Maze War.wav
aht - 04 - Blast.wav
aht - 05 - Rush Hour.wav
aht - 06 - Jet Boot Jack.wav
aht - 07 - Live Wire.wav
aht - 08 - Keystone Kapers.wav
aht - 09 - Retro Fire.wav
aht - 10 - Super Cobra.wav
aht - 11 - Planetary Defense.wav
aht - 12 - Mr. Do's Castle.wav
aht - 13 - Road Block.wav
aht - 14 - Outlaw.wav
aht - 15 - Hot Lips.wav
aht - 16 - Bank Panic.wav
aht - 17 - Morky.wav
aht - 18 - Jaw Breaker.wav
aht - 19 - Fire Bugs.wav
aht - 20 - Rats Revenge.wav
aht - 21 - Oriley's Mine.wav
aht - 22 - Asteroids.wav
aht - 23 - Sea Chase.wav
aht - 24 - Fire Bird.wav
aht - 25 - Chopper Hunt.wav
aht - 26 - Deluxe Invaders.wav
aht - 27 - Mr. TNT.wav
aht - 28 - Death Star.wav
aht - 29 - Laser Gates.wav
aht - 30 - Rum Runner.wav
aht - 31 - Polar Explorer.wav
aht - 32 - The Bean Machine.wav
aht - 33 - Haunted Hill.wav
aht - 34 - Final War.wav
aht - 35 - Star Trux.wav
aht - 36 - Sea Wolf.wav

Wszystkie gry zapisane na tej kasecie są w systemie AHT. Aby wczytać każdą z nich należy przed wczytaniem gry w AHT koniecznie załadować loader "A" z poprzedniej kasety narzędziowej. Tutaj swego rodzaju ciekawostka :) Nazwy gier w archiwum są poprawione, jednak warto spojrzeć na "oryginalną" pisownię tytułów gier na okładce kasety :) Niektóre nazwy są śmiesznie dość przekręcone ;)

Uff.... trochę się tego zrobiło :) Co dalej? Chciałem jeszcze z kasety z narzędziami te loadery i programy do strawnego formatu przenieść (bin/xex) oraz zrobić jakiś cart zawierający narzędzie do tego systemu.

Na koniec jeszcze raz podziękowania dla Roderick Hero za udostępnienie kaset oraz magnetofonu z AHT. Pozostały jeszcze obrazy kaset w standardzie które podesłał również Roderick, pytanie czy kogoś te pliki interesują? Są zgrane i gotowe do udostępnienia, oto okładki:

http://pigwa.code32.org/atari/atari_hard_turbo/a21.jpg http://pigwa.code32.org/atari/atari_hard_turbo/a25.jpg http://pigwa.code32.org/atari/atari_hard_turbo/a77.jpg

pozdrawiam
Seban

2,028

(37 odpowiedzi, napisanych Fabryka - 8bit)

fakt :) masz rację :)

2,029

(37 odpowiedzi, napisanych Fabryka - 8bit)

Marek Konopka napisał/a:

Statystycznie lepszym wariantem jest dokonywanie skoku gdy C = 1, co będzie miało miejsce najwyżej jeden raz na 8 pix. Zyskujemy w ten sposób 1 cykl przy zwiększeniu współrzędnej X.

to można jeszcze odwrócić kierunek rysowania linii i zamiast zabawy LSR,BCC,ROR użyć po prostu:

cmp #$80
rol @

2,030

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

Krótki napisał/a:

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.

Turbo Rom też już pisałem o tym... http://atariarea.krap.pl/forum/viewtopic.php?id=5652

Ten turbo ROM był w magnetofonie PM4401A. Mam parę kaset jak odkopie się z bieżących spraw, sprawdzę. Płytkę interface rozrysowałem ale jest sporo modyfikacji w PCB magnetofonu. Kasetę jaką mam chyba z grami zapisanymi z tym systemie. Zgram co mam i udostępnię.

2,031

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

Hej!

Ale ja odpisałem :( cholera e-mail wcięło :) zaraz zrobię re-send.

edit: poszło na adres w domenie neo.

pozdrawiam
Seban

2,032

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

Krótki dzięki za ten kawał pracy który wykonałeś bo sprawdza mi się doskonale i dzięki temu mogę wszystko szybciej na emulatorze wykonać, gdyby nie to nie wiem czy chciałoby mi się wszystko mozolnie sprawdzać na prawdziwym atari, a tak 36 gier w AHT i tools do tego systemu udało się szybko zgrać, podzielić i zweryfikować na emulatorze z Twoim patch-em :) Dzięki raz jeszcze! :)

2,033

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

Krótki napisał/a:

Atari800-a8cas właściwie też nie (to co tam jest to tylko eksperyment)

Ale ten eksperyment znakomicie działa np. z Atari Hard Turbo, udało mi się taśmy od kolegi Rodecicka zgrać, więcej niebawem w wątku o AHT :) Zrysowałem schemat interface i zmiany w magnetofonie i zdumpowałem wszystko co się dało z tych kaset. Więcej niebawem w wątku o Atari Hard Turbo :)

2,034

(37 odpowiedzi, napisanych Fabryka - 8bit)

No właśnie zrozumiałem że w zależności od DeltaX lub DeltaY jest określona częstotliwość licznika (timera) i na tej podstawie w ciągu głównym się rysuje X lub Y jest na IRQ zwiększany. Ale nie wiem czy to może być wystarczająco precyzyjne. Ale pomysł ciekawy :) Przyznaję iż zupełnie bym w ten sposób nie pomyślał :) Czy jest to do zrealizowania nie wiem. Nie miałbym chyba cierpliwości aby próbować :)

2,035

(37 odpowiedzi, napisanych Fabryka - 8bit)

nie wiem co jest w pakiecie MADS, ale nie wydaje mi się możliwe aby coś ze zgłaszaniem IRQ mogło być szybsze niż zoptymalizowana procedura wykonana w ciągu głównym bez użycia przerwań.

2,036

(37 odpowiedzi, napisanych Fabryka - 8bit)

prawdę mówiąc nie mam pojącia kiedy się wykona IRQ po CLI jeżeli było przerwanie od timer-a pokey. Nie bardzo również rozumiem twoją koncepcję i po co wywoływać IRQ dla jednego DEX, bardzo dużo cykli tracisz na taką całą skomplikowaną procedurę :) Być może po prostu nie pojmuję koncepcji i pomysłu co chcesz zrobić.. to ma być jakieś dziwne drawto?

2,037

(37 odpowiedzi, napisanych Fabryka - 8bit)

znaczy nie bardzo rozumiem co chcesz osiągnąć w taki sposób :) tzn. nie bardzo rozumiem sens tego cli/sei i dodatkowo zatrudnienie licznika POKEY ;) Nie patrzyłem dokładnie w twój kod ale nie zachowujesz wartości rejestrów procesora które zmieniasz podczas przerwania. Po powrocie z przerwania rejestry które zmieniłeś podczas procedury przerwania, będą miały wartość którą pozostawiła procedura przerwania. Jeżeli w tzw. "ciągu głównym" wykorzystujesz którykolwiek ze zmienianych rejestrów wyjdzie totalny chaos :) Jeżeli to celowe działanie z jakiegoś powodu to OK, zaznaczam to tylko abyś był tego świadom :)

2,038

(37 odpowiedzi, napisanych Fabryka - 8bit)

mono napisał/a:

Rozpoczęcie odliczania następuje po wpisaniu dowolnej wartości do STIMER ($D209).

No własnie w/g mnie nie trzeba wcale STIMER ustawiać :) Nigdy tego nie robiłem i zawsze działało :) STIMER jedynie inicjuje liczniki POKEY-a wartościami wpisanymi do AUDFx. Pokey i tak przeładowuje sam liczniki gdy doliczy do zera. Nie widzę sensu/potrzeby używania STIMER.

2,039

(37 odpowiedzi, napisanych Fabryka - 8bit)

Hej!

to może ja się wtrącę... przykładowy kod działający na real Atari i pod Altirrą :) (brzydki i nieładnie napisany ,ale działa ;] chodzi tylko o przykład jak może wyglądać działająca procedura obsługi POKEY-owego timera)

        opt    h+
        org    $a000
    
st      sei                 ; disable IRQ
        inc    $d40e        ; disable NMI
        lda    $d40b        ; wait for vertical sync
        bne    *-3
        sta    $d400        ; turn off screen!

        lda    #$fe        ; turn off OS-ROM!
        sta    $d301

        ldx    <irq        ; set new IRQ vector
        ldy    >irq
        stx    $fffe
        sty    $ffff
    
        lda    #$03        ; init POKEY
        sta    $d20f
    
        lda    #$00        ; set timer freq
        sta    $d208
    
        lda    #$00        ; set channel #0 volume
        sta    $d201
    
        lda    #$7e        ; set time #0 frequency
        sta    $d200
        
        lda    #$01        ; enabnle TIMER0 IRQ
        sta    $d20e
        sta    $d209       ; reset timers!
    
        cli            ; enable IRQ
        jmp    *        ; loop! :)
    
irq        sta    reg_A+1        ; save A reg.

val        lda    #$08        ; change border color!
        sta    $d01a
        eor    #$38
        sta    val+1
    
        lda    #$00        ; clear IRQ status!
        sta    $d20e        
        lda    #$01        ; enable timer #0 IRQ
        sta    $d20e

reg_A        lda    #$00        ; restore A reg.
        rti            ; return from iterrupt!
    
        run    st        ; RUN vector
        
        
    

2,040

(37 odpowiedzi, napisanych Fabryka - 8bit)

jeżeli dobrze pamiętam po każdym wystąpieniu przerwania IRQ od POKEY-a trzeba skasować bit odpowiadający za wystąpienie przerwania w IRQEN ($d20e) a następnie ustawić bit ponownie. Chodzi o potwierdzenie odebrania przerwania oraz dopuszczenie następnego przerwania.

nie bardzo rozumiem gdzie masz to SEI i CLI.

STIMER ($D209) nie trzeba zapisywać w procedurze przerwania. Można to zrobić tylko raz po ustawieniu wektorów i IRQEN ($d20e).




pozdrawiam
Seban

2,041

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

@Bitman: musiałeś mieć jakiegoś pecha :) te kasety które po latach odczytał Grzegorz w pełni udało się odtworzyć bez jakiegoś specjalnego wysiłku :)

2,042

(56 odpowiedzi, napisanych Zloty)

Ja też seeduje ile się da ode mnie leci 80kB/s.
Download tyle ile łącze moje wyciąga, głównie za sprawą Azbesta który seeduje z szaloną prędkością :D , resztę peerów można pominąć :)

2,043

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

@Grzegorz: dzięki za info. Czyli jest szansa że to jest tak nagrane na oryginale, ale pierwszy raz sie spotykam z czymś takim. Chodzi mi o częstotliwości składowe niższe niż dwie częstotliwości występujące w sygnale FSK generowanym przez JIL :) Dzięki raz jeszcze za informacje. Zaraz potnę na kawałki (oddzielne programy) i wrzucę tutaj linki na forum linki.

pozdrawiam
Seban

2,044

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

Hej!

@Grzegorz: Dwa ostanie pliki WAVE o niższym poziomie udało się wczytać pod Altirrą również ;) O ile rozumiem mechanizm powstawania wyższych harmonicznych nie wiem skąd się biorą zakłócenia w dolnej części pasma. Mam jedno pytanie zgrywałeś z niższym poziomem czy po zgraniu z wyższym poziomem obniżyłeś amplitudę sygnału już w programie do obróbki sampli?

@Krótki: może warto zainteresować Phareon-a (autora Altirra) twoją biblioteką i wsparciem w tymże emulatorze dla plików A8CAS? ;) To byłoby idealne :)

Krótki napisał/a:

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.

Jak już stałem się mistrzem obsługi magnetofonu w normalu to mnie to dobijało :) Ale wpadłem na pewien pomysł. wiedziałem mniej więcej gdzie zaczyna się pierwszy rekord ustawiałem taśmę na sekundę przed nim, potem OPTION+START i zamiast RETURN wciskałem BREAK :) To powodowało iż procedura BOOT pomijała bezczynne czekanie i od razu wykonywała się procedura odczytu :) Nie musiałem czekać koszmarnych 20 sek pilota zanim zacznie się wczytywanie :)

2,045

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

To mi pamięć już szwankuje... ubzdurałem sobie iż to jest około 15 sekund. W takim razie nie wiem czemu pod Altirrą działa. Natomiast tak jak pisałem wcześniej nie działają nie odfiltrowane pliki :)

wygląda to tak:
http://dl.dropbox.com/u/44199/spd1400_fail.png

i emulator robi crash :)

2,046

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

No właśnie altirra zupełnie nie chciała czytać tych nie oczyszczonych plików, dlatego zacząłem eksperymentować z filtrowaniem. Tak przesterowany sygnał zupełnie nie chciał działać nagrany nawet z niższym poziomem na kasetę, próba wczytania tego na XC12 czy XC11 nie była możliwa.

Co do uszkodzenia tonu pilotującego to się nim nie przejmowałem ponieważ OS atari chyba czeka dobre 15 sek zanim zacznie cokolwiek sprawdzać na SERIN.

pozdrawiam
Seban

2,047

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

@Grzegorz: coś chyba nie tak z tym linkiem, u mnie przynajmniej pluje się:

Łącze jest niedostępne.
Oto możliwe przyczyny:
- Nieprawidłowe łącze
- Plik został usunięty z powodu naruszenia Regulaminu.

2,048

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

Hej!

Linki do oryginałów posłałem e-mailem przez formularz na forum.

Teraz się zajmują Hard-Turbo z tego wątku: http://atariarea.krap.pl/forum/viewtopic.php?id=9074

Niebawem dumpy taśm. Interface bazuje na AST, format zapisu brzmi podobnie, struktura pliku na ucho brzmi podobnie, jednak loadery AST/UTT/UM nie chcą tego czytać. Tylko oryginalne loadery w dołączone na osobnej kasecie w normalu dają sobie radę z tym formatem.

Krótki napisał/a:

Działa za to konwersja do formatu "FSK" (opcja -ff) - taki plik poprawnie wczytuje się w emulatorze.

A to w takim razie moja niewiedza :) Nawet nie próbowałem opcji FSK ;)

pozdrawiam
Seban

2,049

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

lemiel napisał/a:

To może to pomoże na ten niestandardowy format? Bo skoro obsługuje Turbo 2600 to może i to.
http://a8cas.sourceforge.net/
Ew. może kr0tki albo ktoś inny będzie w stanie dorobić obsługę tego.

Próbowałem, niestety efekt jest następujący:

C:\3\a8cas-tools-1.2.0-win32\bin>a8cas-convert.exe file2.wav file2.a8c
new block...
Attempting to recognise data block... succeeded: bit_length=0.001656
Adjusted bit_1_0_diff = 0.000065
End of data block at byte 132, found IRG=0.264163
new block...
Attempting to recognise data block... succeeded: bit_length=0.001663
Adjusted bit_1_0_diff = 0.000074
End of data block at byte 132, found IRG=0.262632
new block...
Attempting to recognise data block... succeeded: bit_length=0.001656
Adjusted bit_1_0_diff = 0.000083
End of data block at byte 132, found IRG=0.263950
new block...
Attempting to recognise data block... succeeded: bit_length=0.001660
Adjusted bit_1_0_diff = 0.000057
End of data block at byte 132, found IRG=0.243664
new block...
Attempting to recognise data block... succeeded: bit_length=0.001652
Adjusted bit_1_0_diff = 0.000083
Ambiguous bit at byte 132, signal 0
Attempting to recognise data block... failed
new block...
Attempting to recognise data block... succeeded: bit_length=0.001417
Ambiguous bit at byte 0, signal 0
new block...
Attempting to recognise data block... succeeded: bit_length=0.001120
Ambiguous bit at byte 0, signal 0
new block...
Attempting to recognise data block... failed

Trzeba się chyba bardziej przyjrzeć formatowi zapisu danych przez Speeder-Tape ;) Byłoby fajnie jakby się a8cas potrafił obsługiwać kolejny format zapisu. Na chwile obecną A8CAS rozpoznaje pierwsze 4 rekordy nagrane w standardzie. Dobrze że Altirra sobie radzi wyśmienicie z wczytaniem takiego pliku WAVE ;) Przyspieszyło to ogromnie testy i doprowadzenie plików do postaci w której się wczytują :)


rgr napisał/a:

Nie pamiętam już dokładnie, ale loader wczytywał się normalnie, a potem wczytywał resztę zapisaną jako 1 długi rekord.

Jeżeli napotka INIT to jednak robi przerwę (IRG) i tworzy kolejny "długi" rekord.

pozdrawiam
Seban

2,050

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

lemiel napisał/a:

seban, a czy jest jakaś "opisana" procedura "odszumiania" kaset do *.cas?
Czy wystarczy zgrać z magnetofonu przez kartę dźwiękową do PC jak jest wystarczający poziom i już?
Bo kilka kaset mam, np. w Blizzardzie pamiętam nagrywanie KickStartu z ręcznym wydłużaniem przerwy, pewnie na INIT właśnie.
Mam też oryginalną kasetę z LOGO z muzyką na drugiej ścieżce - czy tu trzeba coś specjalnego robić?

Nie mam jakiejś specjalnej procedury. Do każdego przypadku podchodzę indywidualnie. W przypadku silnie przesterowanego nagrania od Grzegorza obniżyłem poziom sygnału o 6dB, co pozwoliło na dalsza obróbkę sygnału. Później kombinowałem z filtrem low-pass, ale to się okazało nie wystarczające ponieważ pojawiały się zniekształcenia również poniżej pasma działania filtru low pass. Po paru eksperymentach zastosowałem filtr pasmowo przepustowy w działający w przedziale 2KHz-6KHz, potem normalizacja sygnału wraz z usunięciem składowej stałej. I udało się odzyskać.

Generalnie zgranie z poziomem około -1dB do -3dB powinno już wystarczyć reszta zależy od szumu na kasecie i sprzętu przy pomocy którego dokonujemy zgrania materiału. Ja używam decka Technics i zewnętrznej już dość starawej karty firmy Behringer BCA2000.

Dely ma też swój Tape Preservation Project i opisuje swoje doświadczenia tutaj

W przypadku formatu speeder-tape nie udało mi się stworzyć plików CAS :) O ile pierwsze standardowe rekordy (loader) przechodzą konwersje bez problemu to wav2cas nie radzi sobie z późniejszym formatem danych który różni się od standardowego rekordu zapisywanego przez ATARI-OS. Nawet suma kontrolna chyba jest liczona w inny sposób. Ale nie miałem czasu dokładnie się przyjrzeć loaderowi ani tym bardziej na analizę programu kopiującego.

lemiel napisał/a:

Bo kilka kaset mam, np. w Blizzardzie pamiętam nagrywanie KickStartu z ręcznym wydłużaniem przerwy, pewnie na INIT właśnie.

Blizzardem nie zajmowałem się jakoś specjalnie bo dokładnie go Zenon/Dial opisał. Ale sądziłem że Blizzard to powinien być odporny na INIT-y bo chyba zatrzymuje silnik między rekordami które wczytuje, nie? W przypadku KSO2000 czy Turbo2000F po wczytaniu rekordu danych silnik był zatrzymywany, loader robił co trzeba i jak "przetrawił" odczytane dane to włączał silnik i czytał dalej.

W przypadku "normal" też tak się to odbywało jednak ze względu na krótkie przerwy między rekordami, oraz dużą bezwładność silkika w większości magnetofonów w przypadku "normal" trzeba było użyć programu kopiującego, który wydłużał przerwę po rekordzie w którym następował segment INIT.

lemiel napisał/a:

Mam też oryginalną kasetę z LOGO z muzyką na drugiej ścieżce - czy tu trzeba coś specjalnego robić?

Wszystkie magnetofony do ATARI są stereo, demodulator FSK dekoduje dane przychodzące z kanału prawego, natomiast kanał lewy jest podłączony do pinu AUDIO_IN w gnieździe SIO. Magnetofon ATARI przy zapisie danych zapisuje sygnał na obu ścieżkach (lewej i prawej) jednakowo, jednak jeżeli przygotujesz kasetę tak iż na lewym kanale nagrasz muzykę a na prawym dane w formacie FSK efekt będzie taki jaki masz w przypadku LOGO czyli program się normalnie czytuje a ty słyszysz nie dane zmodulowane częstotliwościowo a muzykę z kanału lewego.

pozdrawiam
Seban