Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Zasilacze UPS
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 145377 582
  • #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!
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Zasilacze UPS
  • #572
    PAMPKIN
    Poziom 11  
    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.
  • Zasilacze UPS
  • #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.
  • #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)?