atarionline.pl Atari800 z liba8cas pod RaspberryPi - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthoremka
      • CommentTime10 Mar 2020 17:03
       
      @digisoft Nie traktuję siebie jako Twórcę, W tamtych czasach byłem narwanym małolatem który nie chciał czekać 20min na wgranie się gry i tyle. Wszystko co mam jest zapisane na nieopisanych kasetach. Nikt nie robił opisów wszystko było w głowie. Jak znajdę czas w jakiś weekend to poszukam. Teraz trzymajmy kciuki za FUJIego.
      • 2: CommentAuthorxtrem007
      • CommentTime10 Mar 2020 18:03
       
      @FUJI:
      Nadal mam problem z wczytaniem pliku cas Omicron Turbo wygenerowanego Turgen'em. Za każdym razem mam ten różowy ekran. Póki co testuję na wersji dla Windows (z poprawioną biblioteką liba8cas). Ustawiałem już w Turgenie dla TapeImageOutput>SamplingRate na 44100 oraz 48000 lecz to nic nie pomogło. Co jest nie tak? Czy to jakieś błędne ustawienia w emulatorze?
      Przykładowy plik który próbuję wczytać jest w załączniku.
      • 3: CommentAuthorFUJI
      • CommentTime10 Mar 2020 19:03
       
      Jedno z moich ulubionych powiedzeń: Dziwne, u mnie działa ;)
      Może gdzieś Ci zalega poprzednia wersja biblioteki ? Bez problemu wczytuję ten cas z HERO pod linuksem i w windowsowej wersji pod wine. W ustawieniach tape management wszystko jest na default, tylko jakieś turbo musi być włączone (działa i z AST i z Blizzardem).
      A zobacz, czy się wczyta ten cas co załączam. Jeżeli tak, to znaczy że masz liba8cas bez poprawki. Jeżeli nie, to będzie coś innego.
      • 4: CommentAuthorxtrem007
      • CommentTime10 Mar 2020 20:03
       
      Plik HERO_44100-bad.cas faktycznie wczytuje się poprawnie. Przeszukałem dysk C: i liba8cas-0.dll mam tylko w katalogu z emultorem. Gdy go wywalę atari800 się nie uruchamia więc raczej nie mam kopii tej biblioteki w systemie.
      • 5: CommentAuthorFUJI
      • CommentTime10 Mar 2020 20:03
       
      md5sum liba8cas-0.dll
      287d68976a5c9355bba3da7707068312

      Zgadza się ?
      • 6: CommentAuthorFUJI
      • CommentTime10 Mar 2020 20:03
       
      A wracając do offtopicu: uważam, że nazwa "MK.Turbo" wygląda dobrze. Ktoś ma coś przeciw ?

      To chyba jakieś czary mary w emulatorze.


      Bardzo możliwe, to co jest w antic.c to jakaś czarna magia, której nie idzie zrozumieć ;). Przynajmniej dla mnie większa część jest niezrozumiała.

      Po drugie do odczytu używa timerów Pokeya, a w emulatorze są one obsługiwane z dokładnością 1 linii obrazu


      Nie w wersji z moimi modyfikacjami. Dawno wyszło (przy Turbo ROM o ile pamiętam), że rozdzielczość jednej skanlinii jest za mała, więc liczniki Pokeya są uaktualniane na żądanie wtedy kiedy trzeba, np. przed każdym odczytem IRQSTAT, SKSTAT, każdym zapisem do SKCTL itp. W razie potrzeby można uaktualniać przed każdą instrukcją procesora, tak jak to zrobiłem dla TapeWiz, które wymaga precyzyjnych przerwań PIA i na dodatek przy ich obsłudze kontroluje stan licznika Pokeya.

      OK, nowe przykładowe pliki cas się wczytują i już jasne o co chodzi z tym resetem. No nic, spróbuję powalczyć...
      • 7: CommentAuthorxtrem007
      • CommentTime10 Mar 2020 21:03
       
      @FUJI
      Przepraszam, że tak truję ale coś mi tu nie gra.
      Pobieram paczkę z adresu:
      ->link<-
      W środku ZIP'a mam bibliotekę liba8cas-0.dll 4 ‎marca ‎2020, ‏‎20:27:10
      Plik ma sumę kontrolną MD5 36c5e11dcbddd6f2cf7cd21009c85331
      • 8: CommentAuthorFUJI
      • CommentTime10 Mar 2020 22:03
       
      No to jest ta poprzednia wersja i nie ma jej pod tym linkiem z którego ściągasz. To musisz z jakiegoś cache ściągać, może masz jakieś proxy po drodze ? A może wyczyść cache przeglądarki albo spróbuj inną przeglądarką ? Jak nie pomoże to przez inne łącze ?
      Albo jeszcze jest możliwe, że ściągasz i zapisujesz w jednym katalogu, a potem zajmujesz się plikiem w innym katalogu ? Mnie się to zdarza.
      • 9: CommentAuthorxtrem007
      • CommentTime10 Mar 2020 22:03
       
      Winna okazała się przeglądarka Google Chrome. Piewszy raz zdarzyło mi się coś takiego, by nowy plik pobierał się z cache. Dziękuję za pomoc :)
      • 10: CommentAuthorFUJI
      • CommentTime11 Mar 2020 00:03 zmieniony
       
      Nigdy nie lubiłem Chroma ;P

      @emka: No i widać tę przerwę (i na załączonym obrazku):

      Zmiana koloru i wyjścia:
      39   6 A=00 X=00 Y=01 S=F7 P=--*--IZ- PC=0649: 8D 1A D0  STA $D01A   ;COLBK
      39 14 A=3C X=00 Y=01 S=F7 P=--*--I-- PC=0650: 8D 0A D4 STA $D40A ;WSYNC
      39 106 A=3C X=00 Y=01 S=F7 P=--*--I-- PC=0653: 8D 03 D3 STA $D303 ;PBCTL


      Coś kradnie strasznie dużo czasu (87 cykli, pomiędzy tymi dwiema instrukcjami nic nie było):
      40  20 A=00 X=00 Y=00 S=F9 P=--*--IZ- PC=061E: 20 35 06  JSR $0635
      40 107 A=00 X=00 Y=00 S=F7 P=--*--IZ- PC=0635: A0 08 LDY #$08


      Przez co następna zmiana z opóźnieniem 1 linii:
      40 115 A=34 X=00 Y=08 S=F7 P=--*--I-- PC=063B: 8D 0A D4  STA $D40A   ;WSYNC
      41 106 A=34 X=00 Y=08 S=F7 P=--*--I-- PC=063E: 8D 03 D3 STA $D303 ;PBCTL
      42 6 A=0F X=00 Y=08 S=F7 P=--*--I-- PC=0649: 8D 1A D0 STA $D01A ;COLBK
      • 11:
         
        CommentAuthorKaz
      • CommentTime11 Mar 2020 01:03
       

      emka:

      Turbo stworzyło dwóch zapaleńców w Łodzi bez znajomości innych systemów. Nigdy nie dorobiło się nazwy, zawsze mówiliśmy turbo. MK to inicjały "tfurcóf", a liczba to szacunkowa szybkość. wersja MADE IN HOME to wersja testowa puszczona do ludzi w celach testowych jak widać trafiła do ciebie. Największą wadą tamtego systemu była zbyt krótka synchronizacja przed każdym blokiem danych i ludzie woleli szybszy system nawet z wyłączonym ekranem.


      Też się przychylam do głosu digisofta, żebyś coś więcej napisał o sobie i koledze, a także systemie. Nawet jak skromnie uważasz, że to nic wielkiego i niewarte chwalenia się, to jednak dla niektórych osób jest to niezmiernie ciekawe, a informacje godne uwiecznienia. To w końcu kawałek historii. I to szerzej nieznanej.

      FUJI:

      A wracając do offtopicu: uważam, że nazwa "MK.Turbo" wygląda dobrze. Ktoś ma coś przeciw ?


      To bardzo dobra propozycja :)
      • 12: CommentAuthoremka
      • CommentTime11 Mar 2020 17:03 zmieniony
       
      @FUJI
      Coś kradnie strasznie dużo czasu

      Tak ale nie przywiązywałbym się do miejsca występowania problemu. Im więcej testów przeprowadzam tym mniej wiem na razie daję spokój.
      Fajnie by było rozszerzyć liczbę obsługiwanych systemów o to turbo.
      przepraszam "MK.Turbo"

      @Kaz
      Też się przychylam do głosu digisofta, żebyś coś więcej napisał o sobie i koledze

      Nuda...Nuda...Nuda... "Jak w polskim filmie"

      Zrozumiałem jak to działa. Błąd jest w teście a nie w emulatorze. W celu ominięcia konfliktu z DMA w Gr.2 test powinien pracować w liniach nieparzystych. Można to osiągnąć zatrzymując procesor na jedną linię po SETVBV. W teście brak czasu procesora opóźnia test o jedną linię i trafia na linie nieparzyste, ponieważ bajt ma 8 bitów (jest parzysty) to nieparzysta+parzysta zawsze da nieparzystą i po błędzie dalej test przebiega prawidłowo.
      Ale najlepiej wyłączyć DMA.
      Tak to jest jak się wkłada ręce do 30 letniego kodu.
      Nadal nie wiem dlaczego potrzebny jest reset.
      • 13: CommentAuthorFUJI
      • CommentTime12 Mar 2020 00:03 zmieniony
       
      Dokładniej - obsługa końca jednego bajtu i początku następnego nie może trafiać w pierwszą skanlinię linii trybu 2, bo jest w niej za mało czasu dla CPU na taką operację. Rzeczywiście jak się zapewni, że to będzie następować tylko w liniach nieparzystych, to będzie działać. Więc ta sprawa to nie wina emulatora.

      Bez resetu nie działa przerwanie timera 4. To może być bug w emulatorze, ale nie musi. Timer 4 nie działa, bo po wczytaniu loadera SKCTL=$13, a jak bit 4 SKCTL jest równy 1, to emulator "ignoruje" timer 4. Czy to jest prawidłowe zachowanie jeszcze nie wiem. Na prawdziwym sprzęcie się wczytuje bez resetu ? Naciśnięcie reset ustawia SKCTL na $03 i wtedy zaczyna działać.

      Z manuala Altirry:
      Setting bit 4 of SKCTL [$D20F] enables asynchronous receive mode. (...) Since asynchronous mode holds timers 3 and 4 in reset while waiting for a start bit, those timers are stopped entirely when no data is being received.

      Teraz pytanie, czy dane wysyłane przez magnetofon turbo na data-in powinny uruchamiać timer czy nie...

      Aktualizacja:
      W sumie nie widzę powodu, dla którego zmiana stanu data-in na 0 przez dane z magnetofonu turbo nie miała by zostać zinterpretowana przez pokeya jako bit start. Po drobnej zmianie w emulatorze MK.Turbo działa bez naciskania reset. Przetestowałem inne systemy i wygląda, że też nadal wszystkie działają. Poprawioną wersję udostępnię wkrótce.

      By się przydało jakieś narzędzie, które potrafi zapisywać w formacie Mk.Turbo. Wydawało mi się, że jak się loader wczyta z włączonym Basic, to była możliwość zapisu i odczytu po uruchomieniu polecenia DOS, ale z tego co widzę teraz DOS pozwala tylko wczytać ?
      • 14: CommentAuthoremka
      • CommentTime12 Mar 2020 18:03 zmieniony
       
      czy dane wysyłane przez magnetofon turbo na data-in powinny uruchamiać timer czy nie..

      Nie wiem ale po każdym opadającym zboczu zapisywany jest STIMER $D209. Zapis tego rejestru powoduje umieszczenie wartości rejestrów AUDF1-4 w odpowiednich licznikach oraz zapoczątkowanie zliczania.

      Na razie znalazłem taki kopier.
      Wymaga. 130XE
      UM AST ATT ...
      Wyłączonej akceleracji SIO
      Odwróconej polaryzacji przy zapisie.

      Wszystkie komendy są jedno literowe i nie czekają na enter.
      L - load np C:, T:, H:jakaś nazwa
      Ciekawe że widzi H: (wymaga pełnej nazwy rozróżnia małe i duże litery)
      S - save np C:,T:nazwa, H:nazwa, E:, S:
      XT:nazwa Zapisuje z prymitywną kompresją BF CF później wyjaśnię.
      XC: patrz wyżej
      XH:nazwa ---//---
      spacja katalog D1:
      1,2,3,4,5 katalogi z napędów D1,D2,D3,D4,D5 wymaga relokowalnego handlera którego jeszcze nie znalazłem.
      Wgranie kopiera na emulatorze pod jakiś DOS wymaga resetu a to się kończy wejściem do DOS.
      H - Drukuje szesnastkowo pierwsze 8 bajtów.
      E - Drukuje adresy ładowania wczytanego programu.
      ! - Powinien zapisać loader który był dołączany w pliku binarnym do wersji wynikowej, musiałbym to poskładać.
      - Zmniejsza pierwszy bajt kopiowanego programu $FFFF na $FEFF
      loader rozpoznaje skompresowane programy po tym nagłówku. To był kiedyś taki sposób szyfrowanie.
      + To samo tylko w drugą stronę.
      M - Motor on/off.
      9 - Zwiększa zapis C: do 900 bodów.
      6 - Wraca do 600 bodów.
      Ma pewnie jakieś inne funkcje których nie pamiętam.
      Dołączam jeszcze loader w formie łatwiejszej do kopiowania C: cas.
      Szukam dalej.
      • 15: CommentAuthoremka
      • CommentTime14 Mar 2020 12:03 zmieniony
       
      Setting bit 4 of SKCTL [$D20F] enables asynchronous receive mode.

      Zrozumiałem problem resetu.
      "Jeśli chcesz używać asynchronicznie przerwań Timer 4 to je włącz GŁUPKU"
      Na swoje usprawiedliwienie mam tylko to że program powstał 30 lat temu na prawdziwym Atari i tam przerwania Timer 4 są włączone "by default" Czy włączać włączone przerwania bo na emulatorze nie pójdą? Estetyka i przenośność kodu mówi że tak.
      Z manuala Altirry:..

      Spróbowałem sprawdzić jak Altira radzi sobie z tym problemem, najkrótszy program asynchronicznej obsługi tego przerwania wygląda tak
      *=$600
      WSYNC = $D40A
      LDA #START&$FF
      STA $0A
      LDA #START/256
      STA $0B
      LDA #$00
      STA $09
      START SEI
      LDA #$00
      STA $D40E
      STA $D400
      LDA #$28
      STA $D208
      LDA #$02
      STA $D206
      LDA #$3A
      STA $D204
      C2 LDA #$C0
      STA $D20E
      LDA #$C4
      STA $D20E
      LDA $02C8
      EOR #$0F
      STA $02C8
      STA $D01A
      LDA #$04
      C3 BIT $D20E
      BNE C3
      STA $D209
      STA WSYNC
      JMP C2

      I tu zaskoczenie. Z testem zapisanym do .xex Altirra radzi sobie całkiem nieźle, (ktoś pracował już nad tym problemem) ale zapisanym do .cas już wymaga resetu. szybka zmiana w loaderze usuwa problem, ale ja czuję się jak bym poprawiał historię, zwłaszcza że na prawdziwym Atari to działa. Jak teraz patrzę na Loader to jest on napisany dość niechlujnie i powinien być napisany od nowa. Dołączam na szybko poprawiony loader i testy zapisane do xex i cas.
      Ale miałem niezły tydzień wspomnień.
      Dla porządku usunąłem niepotrzebne pliki
      • 16: CommentAuthorFUJI
      • CommentTime14 Mar 2020 16:03
       
      Altirra radzi sobie nieźle, ale jak się używa AltirraOS, a nie oryginalnych romów. Z AltirraOS to i atari800 radzi sobie nieźle. Altirra sobie nie radzi, jak jej załadować oryginalny OS rom. Z AltirraOS przy uruchamianiu TEST8.XEX SKCTL jest ustawione na $03, a z oryginalnym OS na $13. W obu emulatorach jest tak samo.

      Ponieważ działało na prawdziwym sprzęcie, to powinno działać na emulatorze. Poprawiony emulator już jest do ściągnięcia na tej stronie co poprzednio. Dodałem też MK.Turbo do listy systemów turbo (zestaw ustawień jest unikalny, więc to uzasadnione). Proszę nie zapomnieć o wyczyszczeniu cache przeglądarki Chrome przed ściąganiem ;).
      • 17:
         
        CommentAuthorWolfen
      • CommentTime14 Mar 2020 17:03
       
      A te zmiany są pushowane do oficjalnego repo?
      • 18: CommentAuthorFUJI
      • CommentTime14 Mar 2020 17:03
       
      Którego oficjalnego ? Oficjalnego oficjalnego, czy oficjalnego a8cas ? Ja nie widzę szans, żeby to trafiło do oficjalnego oficjalnego, skoro nawet Krótki, który jest autorem liba8cas i był dość aktywny jako deweloper atari800, nie zdołał tego zrobić... A do oficjalnego a8cas moje dodatki też jakoś się nie mogą przebić, zwłaszcza że się zbyt mocno o to nie dopominam ;). Zresztą niektóre moje zmiany w kodzie były by pewnie mocno dyskusyjne.
      • 19: CommentAuthoremka
      • CommentTime14 Mar 2020 23:03 zmieniony
       
      YES! YES! YES!
      Musisz nieźle kochać to Atari.
      • 20:
         
        CommentAuthorvoy
      • CommentTime16 Mar 2020 14:03 zmieniony
       
      Mam problem w konwersji WAV-a do .hex. Wszystkie inne kombinacje działają. Przy poleceniu a8.pl conv 04.wav 04.hex wywala następujący błąd:
      voyd@voy-Win:/mnt/g/a8cas$./a8.pl conv 04.wav 04.hex

      ***********************************************************************
      * Message from libecasoundc:
      *
      * 'ECASOUND' environment variable not set. Using the default value
      * value 'ECASOUND=ecasound'.
      ***********************************************************************

      Use of uninitialized value $blocks in concatenation (.) or string at a8.pl line 2461.
      HEX blocks stored in file 04.hex.

      Testowane pod Linux Mint 19.3, Zorin OS 15.2, Debian 10.3.0 oraz pod implementacją Debiana pod Windowsem jako WSL. Plik mono, 16 bitów, 44100Hz. Debian WSL ma Perla w wersji 5.24.1, Ecasound jako 2.9.1-7. Wcześniej używałem Mint 18.3 i skrypt działał bezbłędnie; nie pomnę tamtejszej wersji Perla i Ecasound.

      Krap próbował jeszcze konwertować plik WAV w Turbo 2000 utworzony pod Turgenem do .cas. U niego z kolei wyświetla komunikat 0 CAS blocks spitted into file blah.cas. Testował pod MacOS z Perl w wersji 5.28.1-6. Wymieniliśmy się jeszcze w/w plikami - rezultat identyczny u mnie i u niego.

      Szkoda, że nikt nie skompilował Ecasound pod Windows (albo ja nie mogę znaleźć)... Spróbowałbym wtedy jeszcze pod ActivePerl.
      • 21: CommentAuthorFUJI
      • CommentTime16 Mar 2020 20:03
       
      W a8cas-util.pl znajdź 2 linie zawierające

      $command="ecasound -q -x "

      Usuń -q

      Znajdź 2 linie zawierające

      $command.="-o:stdout 2>/dev/null"

      Usuń fragment 2>/dev/null

      Powinno się wyświetlić więcej informacji o błędach. Jak nic się nie wyjaśni, to w miejsce -q daj -d.

      Nie ma Ecasound pod Windows o ile wiem.
      • 22:
         
        CommentAuthorvoy
      • CommentTime16 Mar 2020 20:03
       
      Zrobiłem tak i nic więcej nie wyświetla poza w/w błędem w linii 2461.
      • 23: CommentAuthorFUJI
      • CommentTime16 Mar 2020 21:03
       
      Zaraz, bo może źle zrozumiałem. Konwersja wav do cas działa, a wav do hex nie ? W pliku hex nic się nie zapisuje, a plik cas jest poprawny i się wczytuje ? A jak z konwersją cas do hex ?

      Fakt, zmienna $blocks nie jest zainicjowana przed zapisem do hex, a przed zapisem do cas jest. Znajdź

      sub hex_spit

      i trochę niżej

      my $blocks;

      Zmień na

      my $blocks=0;

      Jeśli chodzi o drugą rzecz, czyli "0 CAS blocks spitted into file blah.cas", to musiał bym zobaczyć źródłowy wav, bo to by oznaczało, że żadne dane nie zostały znalezione.
      • 24:
         
        CommentAuthorvoy
      • CommentTime17 Mar 2020 07:03 zmieniony
       
      Przepraszam, mój błąd; rozpędziłem się ze skrótem myślowym. :P Konwersja wav do cas też nie działa. Za to konwersja cas do hex działa idealnie.

      Po poprawce brak błędu, lecz z kolei - tak jak piszesz - nie znalazło danych: 0 HEX blocks stored in file 14.hex.

      Załączam mój plik oraz plik Krapa.
      • 25:
         
        CommentAuthorWolfen
      • CommentTime17 Mar 2020 17:03
       
      FUJI: Chodzilo mi o oficjalne oficjalne :) Ale dzieki za wyjasnienie.
      • 26: CommentAuthorFUJI
      • CommentTime17 Mar 2020 19:03 zmieniony
       
      U mnie działa. Nie udało się co prawda wczytać nagrania 04 w żaden sposób (CIM po wczytaniu), a w turbo2000 w dwóch blokach są błędy do naprawienia, ale się konwertuje. Coś jednak musi być nie tak z ecasound albo wtyczkami ladspa. Uruchom coś takiego w katalogu z plikiem 04.wav (jedna linijka, wystarczy copy/paste):

      ecasound -x -a:space,mark -i:04.wav -a:space -efr:5327,1000 -el:bandpass_iir,3995,1000,3 -ea:100 -el:diode,2 -f:s16_le,2,44100 -chmove:1,2 -a:mark -efr:3995,1000 -el:bandpass_iir,5327,1000,3 -ea:100 -el:diode,2 -f:s16_le,2,44100 -chmute:2 -z:mixmode,sum -a:space,mark -o:loop,mix -a:diff -i:loop,mix -el:difference_iama_oa -eli:1058,0.00004,0.5,0.4 -eli:1058,0.00005,0.5,0.4 -eli:1058,0.00006,0.5,0.4 -f:u8,1,44100 -ezx:1,0.05 -ea:6553600 -ea:6553600 -o:04_decoded.wav


      Jeżeli naprawdę zakończy się bez błędów, to obejrzyj plik wynikowy, czy są ładne prostokątne fale, czy może jest płasko.
      • 27:
         
        CommentAuthorvoy
      • CommentTime17 Mar 2020 20:03 zmieniony
       
      **************************************************************************
      * ecasound v2.9.1 (C) 1997-2014 Kai Vehmanen and others
      **************************************************************************
      (eca-chainsetup-parser) Truncating outputs (overwrite-mode).
      (eca-chainsetup-parser) Enabling 'sum' mixmode.
      (eca-chainsetup) Chainsetup "untitled-chainsetup"
      (eca-chainsetup) "nonrt" buffering mode selected.
      (eca-chainsetup) NOTE: using existing audio parameters -f:s16_le,1,44100 for object '04.wav' (tried to open with
      ... -f:s16_le,2,44100).
      (eca-chainsetup) Opened input "04.wav", mode "read". Format: s16_le, channels 1, srate 44100, interleaved (locked
      ... params).
      (eca-chainsetup) NOTE: using existing audio parameters -f:f32_le,2,44100 for object 'loop' (tried to open with
      ... -f:s16_le,2,44100).
      (eca-chainsetup) Opened input "loop", mode "read". Format: f32_le, channels 2, srate 44100, interleaved (locked
      ... params).
      (eca-chainsetup) Opened input "loop", mode "read". Format: f32_le, channels 2, srate 44100, interleaved (locked
      ... params).
      (eca-chainsetup) Opened output "04_decoded.wav", mode "write". Format: u8, channels 1, srate 44100, interleaved
      ... (locked params).
      - [ Connected chainsetup: "untitled-chainsetup" ] ------------------------
      - [ Controller/Starting batch processing ] -------------------------------
      - [ Engine - Driver start ] ----------------------------------------------

      - [ Engine - Processing finished ] ---------------------------------------
      - [ Controller/Batch processing finished (0) ] ---------------------------
      - [ Engine exiting ] -----------------------------------------------------
      (eca-control-objects) Disconnecting chainsetup: "untitled-chainsetup".

      Amplituda poszła w kosmos. :) Nie wczytuje się też pod Altirrą. Coś faktycznie musi być z tą wersją Ecasound albo wtyczkami.

      ->link<-

      Jakiej dystrybucji używasz? Może ją spróbuję zainstalować u siebie.
      • 28: CommentAuthorFUJI
      • CommentTime17 Mar 2020 21:03
       
      Co znaczy amplituda poszła w kosmos ? Tego wynikowego wav-a to nie wczytasz niczym. Wynik powinien być zasadzie tożsamy z tym, co robi a8cas-util.pl squarify.

      Ja używam jedynej słusznej dystrybucji, czyli Fedory ;P.
      Ecasound 2.9.3.
      • 29:
         
        CommentAuthorvoy
      • CommentTime18 Mar 2020 16:03
       
      Jak zainstalować Ecasound w Fedorze? Nie ma go wśród pakietów, a jeżeli chodzi o kompilację ze źródeł, to jestem za cienki w uszach. :P Pobrałem Fedorę 32 beta.
      • 30: CommentAuthorFUJI
      • CommentTime18 Mar 2020 19:03 zmieniony
       
      Hmmm... ja to kompiluję. Któreś z wtyczek ladspa też musiał byś skompilować.
      Gotowe znajdziesz chyba tylko w repozytorium Planet CCRMA, ale tylko dla Fedory 30 lub starszej ->link<-
      A w takiej sytuacji to wygodniej by Ci pewnie było zainstalować tego starszego Minta...
      A oglądałeś ten plik 04_decoded.wav ? Jak nie zawiera samej ciszy, to skompresuj przy pomocy bzip2 i pokaż (skompresuje się z 16MB do około 100kB). Może jednak problem jest z czymś innym.
      • 31:
         
        CommentAuthorvoy
      • CommentTime18 Mar 2020 19:03
       
      Jest wyżej w poście nr 27, ale spakowany 7z. Ok, bzip2 w załączniku. Nie zawiera ciszy.
      • 32: CommentAuthorFUJI
      • CommentTime18 Mar 2020 20:03
       
      Oj, mój wzrok ominął >link< ??
      Plik jest w porządku, więc ecasound działa poprawnie.
      Spróbuj więc tak:

      a8 conv --debug=fillbuffer,skipstate,getbyte,getfsk,detectbit,getrecord,main 04.wav 04.hex


      i podeślij 04.log
      • 33:
         
        CommentAuthorvoy
      • CommentTime18 Mar 2020 20:03
       
      Skrypt niestety w ogóle nie utworzył 04.log.
      • 34: CommentAuthorFUJI
      • CommentTime19 Mar 2020 08:03
       
      A plik hex się utworzył (choćby pusty) ? Bo nie ma prawa, jeśli nie utworzy się log. A plik .opt się utworzył ? I zakładam, że zmieniłeś "a8" na nazwę skryptu jaką masz u siebie (chyba a8.pl).
      A czy zadziała
      a8.pl squarify 04.wav 04_squared.wav ?

      Powinien powstać plik identyczny jak 04_decoded.wav.

      Czy działają polecenia:
      ecalength -s -f -r 04.wav (powinno wyświetlić 44100)
      ecalength -s -f -c 04.wav (powinno wyświetlić 1)
      • 35:
         
        CommentAuthorvoy
      • CommentTime19 Mar 2020 17:03 zmieniony
       
      Chyba już wiem, o co chodziło... Nie znalazłem ecalength, ale coś mnie tknęło, by zainstalować pakiet ecatools i... BINGO! Wszystko działa, poprawnie przerabia na hex. :)

      FUJI, wielka prośba o dopisanie tego pakietu w wymaganiach na stronie. :) No i przepraszam za kłopot, bo winny byłem ja sam.
      • 36: CommentAuthorbaktra
      • CommentTime19 Mar 2020 19:03
       
      Trochę niefortunne jest to, że jeśli brakuje wtyczek LADSPA, nie pojawia się komunikat o błędzie. Nie jestem pewien, czy jest to „niedoskonałość” ecasound czy a8cas-util.pl.
      • 37: CommentAuthorFUJI
      • CommentTime20 Mar 2020 08:03
       
      A skąd by mi przyszło do głowy, że ktoś postanowił połowę ecasound przenieść do innego pakietu ? Żeby niby zaoszczędzić miejsce na dysku ;) ?

      Sprawdzanie błędów jest, ale komunikaty się nie wyświetlały ze względu na konstrukcję kodu. Wygląda na łatwe do poprawienia, potestuję.

      @baktra: których wtyczek LADSPA brakowało u Ciebie ?
      • 38: CommentAuthorbaktra
      • CommentTime20 Mar 2020 10:03 zmieniony
       
      Zacząłem bez zainstalowanych wtyczek LADSPA (z listy na twojej stronie). Po zainstalowaniu wszystkich z nich narzędzie działa. Mogę je odinstalować i spróbować znaleźć ten, którego brak powoduje problem z kwadratowym przebiegiem standardowych rekordów.
      Ubuntu 18.04.3.

      ...

      Brakujące omins
      i cmt były przyczyną problemu. Jeśli te dwa nie są zainstalowane, generowany jest zły plik .WAV bez żadnych komunikatów ostrzegawczych.
      • 39:
         
        CommentAuthorvoy
      • CommentTime17 May 2020 20:05
       
      Korzystając z okazji chciałbym tu podrzucić linki do jeszcze jednego turbo, chyba w ogóle nie znanego w Polsce. Chodzi mianowicie o system Injektor z Chile. Sam trafiłem na strony chilijskich fanów 8-bitowego Atari dość niedawno i muszę przyznać, że udało im się opracować sporo ciekawych rozwiązań, np. loadery do gier z korekcją błędów, gdzie przy wystąpieniu takowego wystarczyło przewinąć kasetę troszkę do tyłu i ponowić wczytywanie czy też interfejs wraz z kartridżem, zbliżony do amigowego Video Backup System, pozwalający na wczytywanie programów z VHS. :)

      Poniżej nieco linków:
      ->link<- - inżynieria wsteczna Injektora
      ->link<- - w/w Video Cartridge
      ->link<- - programy narzędziowe i m.in. źródła i dokumentacja od jednego z piratów, czyli Turbo Software

      Gdyby udało się dodać ten system do np. Atari800, byłoby super. :)
      • 40:
         
        CommentAuthorKaz
      • CommentTime17 May 2020 20:05
       

      Voy:

      wystarczyło przewinąć kasetę troszkę do tyłu i ponowić wczytywanie


      U nas tak działał Buldoger Copy, ale to program kopiujący, a nie loader, a szkoda, bo pomysł sam się nasuwał.
      • 41: CommentAuthorxxl
      • CommentTime17 May 2020 21:05
       
      ten video cart byl rewelacyjny jak na swoj czas. na oko wczytwal z szybkoscia stacji dyskow.
      • 42:
         
        CommentAuthorvoy
      • CommentTime17 May 2020 21:05
       

      Kaz:

      U nas tak działał Buldoger Copy, ale to program kopiujący, a nie loader, a szkoda, bo pomysł sam się nasuwał.

      Dziwne było, że nikt u nas w ogóle o tym nie pomyślał. :)

      To ja jeszcze dorzucę info z Atari 8-bit FAQ o powyższych rozwiązaniach z Chile i Argentyny.

      - Injector / Fast Injektor
      - Hardware (for the XL12) + software
      - Developed by Pedro P. Caraball Alvarez (Turbo Software, Argentina/Chile)
      - Version 1.0 05/09/88 for Turbo Software, published by M.P.M. S.A. (Chile)
      - Rights sold to Coelsa (official Atari importer in Chile) in 1990. Coelsa
      would sell many XL12 units with the Fast Injektor preinstalled.
      - 4000 baud
      - ->link<-

      - STAC / Super Turbo Auto Corrector
      - From Argentina by Jorge Cwik (ijor), 1988
      - Purely software, with error recovery
      - Available (sources): ->link<-

      - SITRE/S.I.T.R.E./"Sistema Inteligente Turbo con Recuperacion de Errores"
      o From Chile by Victor Parada G. (++Vitoco)
      o Purely software. Primarily a copying tool, but also turbo speed.
      o Version 1.01 March 1989 via SYFCOM, then VCC (Video Compu Club) for 800XL
      o Version 2.01 April 1989 for 130XE
      o Version 1.11 June 1989 (800XL, attempted support for longer programs)
      o Version 3.02 (2015, full support for XL/XE 64KiB to 320KiB)
      o Available: ->link<-
      • 43:
         
        CommentAuthorKaz
      • CommentTime17 May 2020 21:05
       
      Dzięki Voy, faktycznie bardzo ciekawe.
      • 44: CommentAuthorFUJI
      • CommentTime18 May 2020 17:05
       

      Voy:

      Gdyby udało się dodać ten system do np. Atari800, byłoby super. :)

      Przyglądałem się temu parę lat temu. Niestety modulacja sygnału na taśmie w przypadku Injektora jest zupełnie inna niż w przypadku FSK i PWM, więc żeby dekodować z wav i kodować do wav trzeba by chyba dopisać nowy zestaw procedur. Ale jeśli chodzi o pliki cas, to przynajmniej odczyt nie wymaga żadnych zmian, bo wystarczą standardowe bloki baud i data, a magnetofon przełączony w tryb normal. Baudrate powinno być ustawione na około 4000 (w próbkach wav, które udało się ściągnąć wychodziło mi 3675). Dane są zapisywane w identycznych blokach jak w normalu i poza innym sposobem obliczania prędkości transmisji na podstawie pierwszych bajtów $55 wszystko odbywa się jak w normalu - po ustawieniu liczników Pokeya odczyt przeprowadają standardowe procedury OS. Tak przynajmniej pamiętam.
      Załączam poglądowy obrazek, w jaki sposob dane wyglądają na taśmie.
      • 45:
         
        CommentAuthorjhusak
      • CommentTime18 May 2020 22:05 zmieniony
       
      @kaz, @voy. Jak to nie pomyślał! A Mirage wydawało gry w postaci długich bloków, które, jak coś nie poszło tak, jak trzeba, wystarczyło trochę przewinąć (do poprzedniego bloku). Mirage było mi wdzięczne, bo mieli kilka razy mniej reklamacji. Nie jestem na 100% pewien tego przewijania o blok do tyłu. Na pewno zastosowałem ten mechanizm w moim własnym turbo, które sobie zrobiłem, jak nie miałem stacji dysków po powrocie na patformę Atari.
      • 46:
         
        CommentAuthorjhusak
      • CommentTime18 May 2020 22:05
       
      @FUJI, ja patrząc na ten przebieg, nie mam pojęcia, jak to działało. Czym się różni przebieg samych jedynek (na początku) od samych zer (później)?
      • 47: CommentAuthorxxl
      • CommentTime18 May 2020 22:05
       
      tez mi sie wydawalo ze to widzialem w jakis grach na tasmie. nie pamietam, zeby dlugosc blokow byla inna ale z przewijaniem o 1-2 sygnaly pamietam. nie jestem pewny ale przypominam sobie ze chyba po wystapieniu bledu sygnal byl cichy a po weryfikacji wracal do normalnego poziomu glosnosci - stad bylo wiadomo ze "zalapal"
      • 48: CommentAuthorbaktra
      • CommentTime19 May 2020 00:05
       
      @jhusak, Podejrzewam kod Manchester. Właśnie dlatego INJEKTOR wykorzystuje piny CLOCK SIO.
      • 49: CommentAuthorFUJI
      • CommentTime20 May 2020 10:05 zmieniony
       
      Trzeba by najpierw rozgryźć, jak działa elektronika. Ten sygnał jest podobny do FSK - po stronie komputera jest obsługiwany jak FSK (przynajmniej przy odczycie), pokey obsługuje standardowo transmisję danych SIO, a nie jakieś customowe procedury. Tylko zamiast kodowania zera jedną częstotliwością a jedynki drugą jest to jakoś inaczej zrobione i dzięki wyeliminowanu filtrów częstotliwości prędkość może być kika razy wyższa. Zwróćcie np. uwagę, że jedynka jest zawsze nad osią X, a zero pod osią X. Sygnał z taśmy jest pewnie próbkowany gdzieś na tej małej płytce w odpowiednich chwilach i podawany na linię data-in, a pokey z kolei po swojemu próbkuje stan data-in. Rzeczywiście, jak pisze baktra, przypomina to kod Manchester.
      @jhusak - jeżeli sygnał jest próbkowany w odstępach "co drugi mały zygzak" to widać tę różnicę gdzie są jedynki i zera. Duże zygzaki są dokładnie 2x szersze niż małe, niezależnie od amplitudy.