Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mikrokomputer COBRA 1

coberr 05 Mar 2019 21:00 157479 654
  • #571
    ArekS
    Poziom 16  
    PAMPKIN napisał:
    mkamzierczak napisał:
    Jakby ktoś chciał się pozbyć oryginalnej płyty, to chętnie odkupię do kolekcji :)


    Ja także, replikę już mam. Także z Marcinem potrzebujemy już 2 szt.

    Dodano po 1 [minuty]:

    ArekS napisał:
    Raczej nie. Wygląda tak samo jak moja płyta, chodzi o ten czerwony nadruk...


    Dokładnie - w replice jest taki nadruk, no i są metalizowane przelotki. Oryginały tego nie miały.

    Ja właśnie mam taki oryginał nie replikę z pzelotkami metalizowanymi i czerwonym nadrukiem. Gwarantuję że to oryginał bo wiem kiedy kupowałem!
  • BotlandBotland
  • #572
    PAMPKIN
    Poziom 12  
    ArekS napisał:
    PAMPKIN napisał:
    mkamzierczak napisał:
    Jakby ktoś chciał się pozbyć oryginalnej płyty, to chętnie odkupię do kolekcji :)


    Ja także, replikę już mam. Także z Marcinem potrzebujemy już 2 szt.

    Dodano po 1 [minuty]:

    ArekS napisał:
    Raczej nie. Wygląda tak samo jak moja płyta, chodzi o ten czerwony nadruk...


    Dokładnie - w replice jest taki nadruk, no i są metalizowane przelotki. Oryginały tego nie miały.

    Ja właśnie mam taki oryginał nie replikę z pzelotkami metalizowanymi i czerwonym nadrukiem. Gwarantuję że to oryginał bo wiem kiedy kupowałem!


    Jeśli tego wcześniej nie napisałem, to przyznaję się do błędu. Myślę, że to wyczerpie temat oryginalności i "konfiguracji" oryginalnego PCB.
  • #573
    zdzis_ek
    Poziom 14  
    Udało mi się oprogramować w emulatorze dalsze etapy gry "Zaginionego pociągu"
    Grafika może nie jest powalająca, ale bez kolorów chyba i tak jest dość ciekawa.
    Obrazki z tej gry:
    Mikrokomputer COBRA 1
    Gra będzie na osobnej kości 29F040.

    Pozdrawiam.
  • BotlandBotland
  • #574
    andrzejlisek
    Poziom 28  
    zdzis_ek: Fajnie, że opracowujesz nowe gry i programy na Cobrę, Ostatnio obowiązki, a później jakoś zapomnienie sprawiło, ze nie wprowadziłem rozszerzeń i modyfikacji do emulatora, które są potrzebne, żeby wszystkie gry działały.

    Jak pamiętam, potrzebne jest kilka zestawów semigrafiki z przełączaniem w czasie pracy, a także generator dźwięku uzywany do odtwarzania muzyki. Potem jeszcze jakieś modyfikacje pamięci ROM/RAM.

    Czy próbowałeś coś podziałać z kodem źródłowym emulatora i go skompilować?
    Czy jesteś w stanie w jednym opisie zawszeć rozszerzenia i modyfikacje w stosunku do stanu pierwotnego, niezbędne do uruchomienia wszystkich gier? Chodzi o opis taki, że każdy posiadacz Cobry i programista emulatora będzie w stanie je powtórzyć.
  • #575
    zdzis_ek
    Poziom 14  
    andrzejlisek: dokonane modyfikacje w żaden sposób nie naruszyły oryginału.
    Powodują one jedynie wykorzystanie większych pamięci ROM generatora znaków i pamięci ROM monitora Cobry1 poprzez wybiórcze wybieranie odpowiednich bloków tych pamięci.
    Generator znaków wybierany jest z poziomu Basic instrukcją OUT 12, numer bloku do OUT 15, numer bloku.
    Basic może zaadresować (przełączyć) 256 takich bloków.
    Obecnie zmodyfikowana płyta wykorzystująca układ 74174 potrafi wybrać jeden z 64 generatorów znaków. Mam już projekt płyty z układem 74273 umożliwiającym wybór jednego z 256 generatorów znaków w blokach po 2kB, czyli z pamięci 512 kB.
    Taką pamięcią może być 29F040.
    Oto schemat:
    Mikrokomputer COBRA 1

    Pisany obecnie program jest pisany w Basic, ale wykorzystuje do przerzucania obrazów programy maszynowe uruchamiane instrukcjami
    POKE 16526, X
    POKE 16527, Y
    A=USR(0)
    Może to trochę wyjaśnią opisy jakie do tej pory zrobiłem dla tej gry, aby się nie pogubić.
    Mikrokomputer COBRA 1 Mikrokomputer COBRA 1 Mikrokomputer COBRA 1

    Pozdrawiam.
  • #576
    andrzejlisek
    Poziom 28  
    Z analizy tego rysunku i któregoś z wcześniejszych w tym temacie, przełączanie pamięci wykonuje się za pomocą OUT 16d, A (chodzi o rozkaz Z80, nie komendę w Basicu, ale komenda OUT wywołuje ten rozkaz), a przełączanie generatora znaków za pomocą OUT 12d, A. Jestem w trakcie doimplementowywania tych funkcji do emulatora.

    W emulatorze pierwotnej wersji, dla każdego rozkazu OUT, adres jest maskowany maską 10011100b (bardziej znaczące 8 bitów adresu jest ignorowane) dlatego, że podłączone sa tylko 4 linie adresowe, innymi słowy, na adresie jest wykonywana operacja AND z tą wartością. W przypadku zmiany grafiki, ta maska sprawia, że wywołanie OUT 12d, OUT 13d, OUT 14d i OUT 15d daje ten sam skutek i zgadza się z tym, co napisałeś. Jeszcze jest kilka innych możliwych adresów dających ten sam skutek. Czy adres 16d używany do przełączania banków pamięci też przechodzi przez tą maskę, czyli OUT 16d, OUT 17d, OUT 18d i OUT 19d są równoważne?

    Jeżeli masz 64 zestawy znaków, to jeżeli uruchomi się kolejno od 0, to czy będą następować kolejne zestawy, a zestawy 0, 64, 128 i 192 to ten sam zestaw, a zestawy 1, 65, 129 i 193 to też ten sam zestaw, czy jest tak, że 0, 1, 2 i 3 to pierwszy zestaw, 4, 5, 6 i 7 to drugi zestaw i tak dalej? Teoretycznie może być i tak i tak w zależności, jak się podłączy pamięć znaków.

    W jaki sposób jest generowany dźwięk w funkcji "Katarynka" i innych miejscach, gdzie jest to używane lub w którym poście jest to opisane? Jak już, to wolałbym, żeby katarynka w emulatorze mogła grać.

    Dodano po 28 [minuty]:

    Co do pamięci, to chyba wszystko wiem, bo jest opisane tutaj:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=17302392#17302392
  • #577
    zdzis_ek
    Poziom 14  
    Wartości wpisane np. po OUT 12, x - są już konkretnym wybranym generatorem znaków, czyli jak będzie komenda OUT 12,7, to wybierany jest siódmy generator znaków.
    Poczwórne adresowanie dotyczy tylko komendy OUT, a nie wartości po niej umieszczonej.
    Odnośnie komendy OUT 16 - 19d, to ja jej w Basic nie używam.
    Polecenia te przełączają Rom Monitora Cobry w blokach po 16kB, z czego użyteczne jest pierwsze 14kB - reszta zarezerwowana jest dla pamięci Ram ekranu,która jest podwójnie adresowana.
    Do przełączania banków 16kB stosuję bezpośrednio polecenia w kodzie maszynowym Z80, do tej pory nie miałem potrzeby przełączania tych banków bezpośrednio z Basic.
    Program Katarynki adoptowałem z jakiegoś innego komputera, jak odnajdę czasopismo z tamtych lat, w którym ten program był opisany, podam opis.
  • #578
    andrzejlisek
    Poziom 28  
    Może niezbyt jasno się wyraziłem, ale dla mnie jest istotne, w jaki sposób te czynności się wykonuje właśnie z poziomu kodu maszynowego. A to, że za pomocą odpowiedniej komendy w Basic można spowodować zmianę semigrafiki, to już odrębny temat. Dla mnie to nic innego, niż to, że wpisanie "OUT A, B" wywołuje mały programik, który wykonuje rozkaz OUT na poziomie maszynowym.
  • #579
    zdzis_ek
    Poziom 14  
    Przykład:

    OUT 12,5 w Basic, to w kodach maszynowych jest 3e 05 d3 0c

    dla złącza cartridge - 3e 02 d3 10 - przełącz na bank drugi (16kB)

    dla rom monitora - 3e 02 d3 04

    Według tej rozpiski:
    Mikrokomputer COBRA 1
  • #580
    andrzejlisek
    Poziom 28  
    Próbuję uruchomić te pliki w emulatorze
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=17302392#17302392

    Mam problem z samymi programami, który musze rozwiązać w pierwszej kolejności, w drugiej kolejności sprawdzę semigrafikę.

    Zauważylem, że przy uruchamianiu, wprowadza 00h w cały zakres od C000 do F000. Ja w programie zabezpieczyłem, żeby program nie mógł zapisać nic w zakresie od C000 do F7FF. Jak usunąłem to zabezpieczenie, to menu się wcale nie uruchamiało.

    Ja robię to tak, że przy przełączaniu banków, podmieniam zawartość w zakresie od C000 do F000.

    Jeden bank to 14kB, czyli dokładnie 14336 bajtów, jednak bank 0 zaczyna się od bajtu 0, bank 1 zaczyna się od bajtu 16384, bank 2 zaczyna się od bajtu 32768 i tak dajej, co 16kB, gdzie ostatnie 2kB nie są używane.

    Czy to tak jest?

    U mnie wczytuje się menu, działa Basic (klawisz 1) i monitor (klawisz B), Jednoręki bandyta (klawisz 2) uruchamia się, ale po uruchomieniu trzeba 2 razy nacisnąć Enter i wywołać RUN, a po rozpoczęciu losowania się wysypuje, pokazuje "UL ERROR". Pozostałe gry nie uruchamiają się. Jak śledzę zmiany banków i zmiany się wykonują poprawnie, podczas pracy w ogóle nie ma wywołania wewnętrznego monitora.

    Na przykład, jak uruchomię Rajd (klawisz 7), to banki przełączają się na 01, 0B i 00.
    Na przykład, jak uruchomię Formuła 1 (klawisz 8), to banki przełączają się na 01, 0A i 00.

    Wygląda na to, ze przełączanie banków przebiega prawidłowo.

    Czy wszystkie gry sa pisane w basicu, czy niektóre w kodzie maszynowym i które?

    Teraz to nie wiem, czy problem jest z adresowaniem pamięci z pliku, czy gdzieś indziej.

    Dodano po 3 [minuty]:

    Na przykład, jak chcę uruchomić grę "Rajd", to czy przepisuje się z ROM do RAM i gdzie? W pierwszej kolejności sprawdziłbym poprawność zawartości pamięci bezpośrednio przed uruchamianiem.

    Jak jest menu i wciskam klawisz, to jaki kod i skąd się uruchamia bezpośrednio po naciśnięciu, żeby uruchomiła się dana gra?

    Dodano po 11 [minuty]:

    Jak uruchamiam plik w wersji monitora, to mam te same problemy z tą różnica, że jest inny rozkaz przełączający banki pamięci. W chwili obecnej banki pamięci przełączam w ten sam sposób, czyli zmieniam określony fragment pamięci na fragment z pliku, a także nie jest możliwe zapisanie tego fragmentu przez uruchomiony program.
  • #581
    zdzis_ek
    Poziom 14  
    Cytat:
    Jeden bank to 14kB, czyli dokładnie 14336 bajtów, jednak bank 0 zaczyna się od bajtu 0, bank 1 zaczyna się od bajtu 16384, bank 2 zaczyna się od bajtu 32768 i tak dajej, co 16kB, gdzie ostatnie 2kB nie są używane.

    Czy to tak jest?


    Tak jest jak piszesz.
    "Jednoręki bandyta" nie jest najszczęśliwszym programem do testowania, program jest tak wyżyłowany, że pozostało mu mało wolnego ram na zmienne.
    Stąd błąd UL.
    Programem maszynowym jest gra "Żmija", Assembler oraz moje demo River Raid.

    Programy napisane w Basic ładowane są do Ram od adresu 4000h, czasami podzielone są na kilka części i mogą się te części znajdować w kilku blokach, chodziło o jak największe upakowanie.

    Wszystkie programy napisane w Basic uruchamiane są komendą RUN, maszynowe startują od razu.
  • #582
    roger298
    Poziom 10  
    witam,
    czy kolega zdzis_ek mógłby zdradzić gdzie kupował układ MT8808 bo słyszałem że kupując można się naciąć na oszukaną architekturę wewnątrz sprzedawanej kości (oczywiście od przyjaciół z dużego kontynentu)?
  • #584
    zdzis_ek
    Poziom 14  
    Witam !
    Ukończyłem pierwszą część gry "Zaginiony pociąg".
    Gra zawiera 41 plansz, wymaga jeszcze poprawienia kilku procedur.
    Myślę, że za kilka dni udostępnię wsad gry i generatora znaków.
    Puki co, filmik z większością obrazków jakie gra zawiera.


    Pozdrawiam.
  • #585
    PAMPKIN
    Poziom 12  
    Fajne. Te drobne szczególiki, i animacje.
  • #586
    andrzejlisek
    Poziom 28  
    Udostępniam nową wersję emulatora i jego kod źródłowy.

    Są w nim następujące zmiany i ulepszenia zapewniające uruchamianie wsadów od zdzis_ek:
    1. Plik chr.rom może zawierać wiele semigrafik. Wielkość tego pliku to dowolna wielokrotność 2048 bajtów, przy czym zestaw 00 jest od bajtu 0 do 2047, zestaw 01 jest od bajtu 2048 do 4095 i tak dalej. W przypadku próby przełączenia na zestaw nieistniejący w pliku (plik jest mniejszy niż zakres bajtów objęty wskazanym zestawem), zostanie załączony zestaw 00.
    2. Plik cobra1.rom może zawierać dowolną liczbę pamięci ROM do przełączania. Rozmieszczenie pamięci opisuje plik tekstowy cobra1.lst. Plik Cobra1.lst zawiera dokładnie 256 linii. Każda linia zawiera dwie liczby w systemie szesnastkowym rozdzielone znakiem tabulatora. Pierwsza liczba to położenie pierwszego bajtu wsadu, a druga liczba określa liczbę bajtów wsadu. Poszczególne linie pliku odpowiadają kolejnym numerom wsadów pamięci.
  • #588
    M.Klimowicz
    Poziom 10  
    Rozumiem, że udostępniane wsady są do nowych wersji COBR-y. Ja mam złożoną i uruchomioną jedną z pierwszych wersji Cobry, jeśli dobrze pamiętam to płytkę i EPROM kupiłem od COBRESPU. Mam pytanie i wielką prośbę, chciałby po wielu, wielu latach znów uruchomić swoją Cobrę lecz gdzieś posiałem kasetę z Basic Cobra. Ma ktoś może oryginalną (nie koniecznie kasetę) wersję Basica.
  • #589
    PAMPKIN
    Poziom 12  
    M.Klimowicz napisał:
    Rozumiem, że udostępniane wsady są do nowych wersji COBR-y. Ja mam złożoną i uruchomioną jedną z pierwszych wersji Cobry, jeśli dobrze pamiętam to płytkę i EPROM kupiłem od COBRESPU. Mam pytanie i wielką prośbę, chciałby po wielu, wielu latach znów uruchomić swoją Cobrę lecz gdzieś posiałem kasetę z Basic Cobra. Ma ktoś może oryginalną (nie koniecznie kasetę) wersję Basica.


    W którymś wpisie jest zapis WAV Basica. Postaram się znaleźć, aby nie dublować.

    [EDIT]

    W linku poniżej masz obie wersje BASICA, na kasetach jest na pewno w Muzeum Historii Komputerów i Informatyki w Katowicach, bo miałem przez chwilę u siebie.

    https://www.elektroda.pl/rtvforum/viewtopic.php?p=14933850#14933850

    Mikrokomputer COBRA 1
  • #590
    zdzis_ek
    Poziom 14  
    Istnieje również alternatywne rozwiązanie, z którego ja korzystam.
    Zaprojektowałem jakiś czas temu płytę główną do Cobry1 na podstawie oryginalnego projektu.
    Po montażu dwóch adapterów do tej starej płyty pozbyłem się konieczności wgrywania Basica i programów przez wejście magnetofonowe,

    Mikrokomputer COBRA 1 Mikrokomputer COBRA 1 Mikrokomputer COBRA 1 Mikrokomputer COBRA 1

    Adaptery pozwalają również korzystać z najnowszych programów, bardziej rozbudowanych graficznie (chyba ?) :)
  • #591
    zdzis_ek
    Poziom 14  
    Minęło 10 lat od momentu mojej rejestracji na tym forum.
    Dużo wiedzy posiadłem, nie wiele przekazałem, takie życie.
    Udało mi się napisać krótką animację na ten komputerek, nie w BASIC.

    Bohater znany jest już od kilkudziesięciu lat.

    https://youtu.be/d8ZsYxmO0Ng

    Może program powiększy dość skromną bazę programów.
  • #592
    bieganj
    Poziom 11  
    Witam kolegów. Dawno tu mnie nie było, ale dorzeczy.
    Wyciągnąłem z lamusa moją Cobrę i okazało się, że wyjąłem pamięci EPROM z niego i nie pamiętam kiedy to zrobiłem. A także co z nimi zrobiłem. W tym wieku to powoli pamięć szwankuje. Mam pytanie. Czy któryś z kolegów nie byłby tak dobry oczywiście odpłatnie i wgrałby mi monitor jak i generator znaków? Mam EPROM-y 2716 i mogę przesłać. Niestety nie mam programatora do EPROM.
    Pozdrawiam Jacek
  • #593
    andrzejlisek
    Poziom 28  
    zdzis_ek napisał:
    Minęło 10 lat od momentu mojej rejestracji na tym forum.
    Dużo wiedzy posiadłem, nie wiele przekazałem, takie życie.
    Udało mi się napisać krótką animację na ten komputerek, nie w BASIC.

    Bohater znany jest już od kilkudziesięciu lat.

    https://youtu.be/d8ZsYxmO0Ng

    Może program powiększy dość skromną bazę programów.


    Super, czy mój emulator (ostatnia udostępniona wersja) też uruchamia tą animację?
  • #594
    zdzis_ek
    Poziom 14  
    Emulator sprawdza się znakomicie.
    W poprzednich wersjach emulatora musiałem podmieniać generatory semigrafiki.
    W najnowszej wersji nie ma takiej potrzeby.

    W załączniku przesyłam emulator z już zainstalowanym nowym wsadem i poszerzonym generatorem znaków o semigrafikę dla tej animacji.
  • #595
    ArekS
    Poziom 16  
    M.Klimowicz napisał:
    Rozumiem, że udostępniane wsady są do nowych wersji COBR-y. Ja mam złożoną i uruchomioną jedną z pierwszych wersji Cobry, jeśli dobrze pamiętam to płytkę i EPROM kupiłem od COBRESPU. Mam pytanie i wielką prośbę, chciałby po wielu, wielu latach znów uruchomić swoją Cobrę lecz gdzieś posiałem kasetę z Basic Cobra. Ma ktoś może oryginalną (nie koniecznie kasetę) wersję Basica.

    A nie było tego w AVT (tym lepszym, wczesnym) w którym była opisana Cobra?
  • #596
    bieganj
    Poziom 11  
    Witam szanownych kolegów,
    Ostatnio robiąc porządki znalazłem ot taką dokumentację, dotyczącą asemblera COBRY.
    Jest to skan oryginału bo taka wpadła mi w ręce dawno, dawno temu. To były początki lat 90-tych.
    Może się komuś przyda, to też umieszczam tu.

    Poprawiony plik instrukcji asemblera
  • #597
    ArekS
    Poziom 16  
    Tak, to na pewno było, Jako że mam wszystkie numery czasopisma z AVT (między innymi z Cobrą) to pozwolę sobie potwierdzić powyższe słowa. Ponadto z tego co pamiętam były też jakieś listingi prostych programików....
  • #598
    andrzejlisek
    Poziom 28  
    bieganj napisał:
    Witam szanownych kolegów,
    Ostatnio robiąc porządki znalazłem ot taką dokumentację, dotyczącą asemblera COBRY.
    Jest to skan oryginału bo taka wpadła mi w ręce dawno, dawno temu. To były początki lat 90-tych.
    Może się komuś przyda, to też umieszczam tu.


    Fajnie, pobrałem sobie, a sam program (ten asembler) też masz? Jak zacząłem czytać instrukcję, to wywnioskowałem, że był on wczytywany z kasety magnetofonowej podobnie jak Basic.

    To Ty skanowałeś tą dokumentację? W pliku 6-7.pdf są powtórzone strony 4 i 5. Rozumiem, że przez pomyłkę.
  • #599
    bieganj
    Poziom 11  
    Tak, to ja skanowałem.
    Dzięki za uwagi, sprawdzę i zamieszczę poprawiony.
    Niestety programu nie mam.
  • #600
    zdzis_ek
    Poziom 14  
    W załącznikach udostępniam Assembler i Basic dla Cobry1 w plikach *.bin.
    Programy można wgrać do emulatora z poziomu monitora Cobry od adresu 0h i wygrać je z emulatora jako pliki *.wav.
    Następnie zgrać te pliki *.wav z PC na kasety magnetofonowe :D
    Jeden i drugi program uruchamiany jest po wczytaniu do komputera Cobra1 poleceniem G:0
    Start gorący dla Assemblera to G:140 a dla Basic G:66.