atarionline.pl Komputer Cobra 1 - 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:
       
      CommentAuthorKaz
    • CommentTime20 Nov 2022
     
    Na elektrodzie ( ->link<- ) kolega Andrzej Lisek napisał dodatkowe informacje odnośnie filmu:



    andrzejlisek:

    Super, nie oglądałem całego, ale byłem ciekaw, czy "wystąpi" mój emulator i "wystąpił". Nie wiem, kto omawiał emulator, ale co do magnetofonu to muszę uściślić pewne sprawy:

    1. Emulator wczytuje i zapisuje pliki WAVE, ale z zastrzeżeniem, że wczytywany plik musi być bez kompresji (PCM), 16-bit i mono. Wynika z tego, że jest zaimplementowane "na piechotę", 16-bit to i tak najczęściej się wykorzystuje, a stereo nie ma żadnego sensu. A nawet, jak plik nie odpowiada tym warunkom, to nie problem przekonwertować.

    2. Padło pytanie, jak interpretowany jest dźwięk i odpowiedź, że potrzebna jest analiza programu ROM, żeby na nie odpowiedzieć. Ja natomiast zrozumiałem, że jest to pytanie o to, jak jest zamieniany dźwięk na impulsy "strawne" dla procesora, tu i teraz na nie odpowiem: Magnetofon jest zsynchronizowany z procesorem w sensie, że na jedną próbkę dźwięku przypada określona liczba cykli zegarowych (określona w ustawieniach). Przy wczytywaniu pliku jest symulowany symetryczny przerzutnik Schmidta, gdzie na wejście wchodzi dźwięk, a na wyjściu ten sam dźwięk, ale "cyfrowy" w sensie, że przebieg może mieć tylko trzy poziomy napięcia (zero, dodatni, ujemny), progi tego przerzutnika też się ustawia. Następnie przebieg jest podawany na przerzutnik monostabilny i za tym przerzutnikiem jest już sygnał gotowy dla procesora. Procesor może w każdej chwili go odczytać rozkazem IN xx80h (gdzie xx nie ma znaczenia). Przy wczytywaniu brane są pod uwagę tylko dodatnie impulsy. Potem, co robi z tym procesor, już nie analizowałem, bo to zależy od programu na nim uruchomionego.

    Przyznaję się bez bicia, że pisanie opisywanie działania programu to wbrew pozorom trudna i niewdzięczna czynność, ale bardzo potrzebna przy udostępnianiu programu w internecie. Wydaje mi się, ze napisałem najprościej, jak można. Jeżeli jest coś niejasnego, niezrozumiałe, lub co gorsza nieaktualne (bo dodałem lub zmieniłem jakąś funkcjonalność bez dokonania potrzebnych zmian w opisie), to proszę pisać. Tutaj opis: ->link<-

    Dodano po 14 [minut]:

    Musiałem popatrzeć do kodu źródłowego, bo nie pamiętałem już, jak wygląda wczytywanie WAV. Czas podtrzymania impulsu jest uwzględniany tylko przy wczytywaniu WAV. Przy wczytywaniu pliku WAV, w momencie rozpoczęcia impulsu ujemnego następuje określona liczba próbek podtrzymania impulsu (rozróżniane jest istnienie impulsu dodatniego i jego podtrzymanie przy braku tego impulsu).

    Natomiast, co do wczytywania do komputera, to możliwe są następujące odpowiedzi na rozkaz IN xx80h:
    1. Magnetofon nie odtwarza: 01111111
    2. Stan zerowy lub impuls ujemny, brak podtrzymania: b01111111
    3. Stan zerowy lub impuls ujemny, podtrzymanie: b00111111
    4. Impuls dodatni, brak podtrzymania: b11111111
    5. Impuls dodatni, podtrzymanie: b10111111

    To wszystko, co wyżej napisałem, jest zaimplementowane w pliku "tape.cpp".
  1.  
    Podczas naszego spotkania zobaczyłem przy prezentowanych programach na COBRĘ zakłócenia występujące na ekranie. Udało mi się odkupić od sympatycznego kolegi zmontowaną kiedyś elektronikę i usunąć ten problem.
    Wygląda to tak:
    1. przeciąć ścieżkę między układem 7442 (21) - noga 9 a 7430 (22) - noga 1.
    2. połączyć 4 bramki NAND (7400) (rysunek).

    Jeszcze szybszy transfer daje podłączenie końcówki do 11(119) zamiast do 8(120). Załączam odręczny rysunek.

    Krótki program do przetestowania tego rozwiązania. G: 0020

    cob1.mp4 pokazuje ekran po modyfikacji.




    ---------------------------------------------
    org 0020h

    ld c,65

    loc0:

    ld a,c
    ld hl,f800h

    loc1:

    inc e
    ld a,e
    cp 40
    jr nz,loc1
    ld e,0

    ld a,c
    ld (hl),a
    inc hl
    ld c,a
    ld a,h
    cp fbh
    jr nz,loc1
    inc c
    jp loc0


    M:0020,0e,41,79,21,00,f8,1c,7b,fe,28,20,fa,1e,00,79,77,23,4f,7c,fe,fb,20,ef,0c,c3,22,00 CR

    G:0020 CR
    • 3: CommentAuthorZenon
    • CommentTime12 Mar 2023
     
    Szacunek najwyższego lotu.... niejeden projekt ma w sobie błąd, autor to olewa. Tu, profesjonalizm.... czapki z głów.
    Wprowadzone do zachowanej dokumentacji, z uwagą że błąd wykryty i poprawiony po prawie czterdziestu latach. Niesamowite....
    • 4:
       
      CommentAuthorKaz
    • CommentTime4 Jul 2023
     
    Powstała nowa wersja emulatora Cobry-1 autorstwa Andrzeja Liska, ma sporo poprawek:

    ->link<-