Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Commodore C64 - BlackBox V.9 - ukończony w 99proc.

gregor124 06 Aug 2023 16:39 4800 60
phoenixcontact
  • Od razu przepraszam za słabą jakość zdjęć i filmów ale nie jestem ani Tiktokerem ani Yotuberem…
    Commodore C64 - BlackBox V.9 - ukończony w 99proc.





    Nie będę rozpisywał się o historii tego kartridża, bo raz że nie czuję się specjalistą w temacie historii C64 w Polsce, a dwa że inni robią to lepiej, a jeśli ktoś jest zainteresowany, to sam znajdzie potrzebne mu informacje.
    W skrócie napiszę, że Black Box v.9 to ostatni z serii kartridży "Black Box" dla komputera C64. Posiadający system Turbo do magnetofonu, program do ustawienia skosu głowicy, rozszerzenie BASIC-a, program 'instrument muzyczny' do grania z wykorzystaniem układu SID i klawiatury. Nowością jest obsługa stacji dyskowych w trybie turbo.
    Dlaczego akurat Black Box v.9?
    Zainteresowała mnie dyskusja w temacie Link, i zamieszczony tam schemat

    Commodore C64 - BlackBox V.9 - ukończony w 99proc.
    autorstwa użytkownika JarekC oraz informacja o tym kartridżu, że jak dotychczas nikomu nie udało się go sklonować/odtworzyć, więc od razu pomyślałem, że to jakieś wyzwanie i warto spróbować.
    Rozpocząłem od szukania wszelkich informacji przydatnych w temacie.
    Udało mi się znaleźć obraz pamięci EPROM oraz zdjęcia PCB płytki.
    Patrząc na rozmiar EPROM-u 32 kB i schemat od razu widać, że coś tu nie gra.
    Liczba lini adresowych jest jakby na wyrost, i jak się później okazało Black Box z niej nie korzysta. Podobno istniał jakiś kartridż z grami, który wykorzystywał tę samą elektronikę, ale ślad po nim zaginął.
    Jeśli ktoś miałby jakieś informacje na jego temat, to być może udałoby się dodać jego obsługę. Ale mogłoby być i tak, że elektronika była podobna, ale wsad w PAL był inny?
    Kartridż jest odtwarzany wyłącznie z opisów i disassemblacji EPROM, nigdy nie miałem w ręce oryginału.
    Kod do zaprogramowania GAL-a powstał na zasadzie ma to działać tak i przy takich samych połączeniach reszta to już jak bym ja to zrobił.
    Tak więc mogą występować i pewnie są różnice w stosunku do oryginału.
    Kod powstał w języku CUPL.
    W szczególności nie wiem, czy oryginał zachowywał się podobnie, czyli po programowym wyłączeniu można było odwołując się do adresów w obszarze $de00-$deff zawiesić komputer (odzyskać kontrolę nad cartem). W każdym razie tak samo zachowuje się emulacja w VICE, więc tymczasowo też tego nie poprawiałem (choć wydaje się to możliwe do zrobienia).
    Oryginalny BlackBox ma kilka różnych zabezpieczenia jedno z nich sprawia problemy przy uruchomieniu i jest ściśle zależne od pojemności kondensatora. Niestety nie zachowała się informacja jaka była jego pojemność. Ale metodą prób i błędów udało mi się ją w przybliżeniu ustalić na 1nF, niestety nie dysponuje ani oscyloskopem ani miernikiem. Układ od czasu do czasu miał problem z resetem głownie po włączeniu zasilania pod zwiększeniu pojemności o 10proc. Wydaje się pracować znacznie stabilniej. Przy pojemności zbyt dużej przestaje działać.
    Nie wiem czy przy innych wersjach c64 kondensatory mają być takie same czy inne (szczególnie chodzi mi o nowe c64c znacznie częściej spotykane w Polsce, niestety takiego nie posiadam).
    Chcę doprowadzić projekt do stanu w którym każdy będzie bez problemu mógł go sobie złożyć na zasadach wolnej licencji np. Attribution-NoDerivs (CC BY-ND)

    Od razu napieszę że nie mam peryferii do c64 wiec nie mogę sprawdzić czy faktycznie dzialają zgodnie z opisami tego carta.

    Cool? Ranking DIY
    About Author
    gregor124
    Level 16  
    Offline 
    gregor124 wrote 226 posts with rating 96, helped 22 times. Been with us since 2022 year.
  • phoenixcontact
  • #2
    Tremolo
    Level 43  
    Moze to tyle samo nF co w BB 2.0 ? Zobacze jak to wygląda w domu. Ten eeprom widywałem w starych ogranicznikach udźwigu czy programach do przełączania styczników na suwnicach. Fajne by było to połączyć z jakimś ESP pakować przez WiFi wsady.
  • #3
    gregor124
    Level 16  
    Jako ciekawostkę dodam, że spora część kodu BlackBoxV9 jest w języku BASIC i korzysta z rozkazów rozszerzenia BASIC-a znajdującego się w BBv9. Jest tak w przypadku np. głównego menu i instrumentu muzycznego.
  • Helpful post
    #4
    bestboy21
    Level 40  
    gregor124 wrote:
    Niestety nie zachowała się informacja jaka była jego pojemność. Ale metodą prób i błędów udało mi się ją w przybliżeniu ustalić na 1nF


    Haha, to chyba dobrze trafiłeś... "c64 chlebaki" były bardzo wrażliwe na kondensator I/O (inna wersja PLA zdaje się). W nowszych wersjach tolerancja była ciut większa, tzn nowsze tolerują okolice 560pF. Więc skoro działa na chlebaku to zadziała wszędzie :)

    http://c64power.com/forumng/index.php?topic=5214.msg95025#msg95025 tutaj jest dyskusja..

    W jeszcze innej dyskusji proponowali rezystor szeregowy ~65ohm i za nim ok 250pf....

    I jeszcze kolejna dyskusja, najbardziej rzeczowa z oscylogramem z analizatora stanów https://www.c64scene.pl/viewtopic.php?f=2&t=3132&p=41359&hilit=kondensator+i%2Fo#p41359 (wspominają o różych wersjach PLA)

    Taka pomoc w ramach podziękowania dla kolegi, bo to ja burzę BB9 rozpętałem :lol:
  • phoenixcontact
  • #5
    gregor124
    Level 16  
    Czyli wychodzi, że @bestboy21 nie tylko rozpętał te burze, ale i pomógł ją zakończyć ;)
    Jak rozumiem, dzięki tej informacji mogę uznać temat BlackBox za dopięty prawie na 100%?
    Wiem, że można to zrobić inaczej, ale chciałem zachować oryginalną "myśl techniczną z PRL". A swoją drogą, autor włożył sporo trudu, aby utrudnić skopiowanie BB9, chyba jakiejś grupy użytkowników bardzo nie lubił. ;)
    Ja nigdy nie miałem BlackBoxa, ba, nie miałem i nadal nie mam magnetofonu do c64. Używałem Final II.
    W sumie do kompletu brakuje jakiejś kopii instrukcji papierowej, wiem, że była, bo znalazłem jakieś ogłoszenie, chyba na olx, gdzie ktoś oferuje BB9 z instrukcją za "bagatelę" 10.000 zł. ;)
    No, ale może ktoś coś znajdzie i np. umieści tutaj.
    Ostatnio znalazłem informacje, że autor pracował na politechnice, a to wiele wyjaśnia.
  • Helpful post
    #6
    bestboy21
    Level 40  
    gregor124 wrote:
    Jak rozumiem, dzięki tej informacji mogę uznać temat BlackBox za dopięty prawie na 100%?


    W kwestii kondensatora i/o na 99,9%.
    Kwestia $de00-$deff, pozostanie zagadką, mało kto się tym przejmował w 90r.
    Jedyne czego nie da się przetestować to "centronics via user port", ale tego też nikt nie używał. ;)

    Możesz sprawdzić.

    Po krótkiej chwili od momentu włączenia zasilania formuje się plansza z napisem ROM-BIT przedstawia Black Box V.9. Przez chwilę powinna być słyszana również muzyka (dwa trójdżwięki). Jeżeli w początkowej fazie formowania się planszy (w fazie przesuwania się napisu ROM-BIT) przyciśniemy SPACE, to zgłosi się od razu system BLACK BOX V.9. Podobny efekt uzyskamy, gdy przy włączeniu zasilania trzymać będziemy klawisz COMMODORE.

    Jeżeli wraz z włączeniem zasilania przetrzymamy SPACE, to zgłosi się system COMMODORE BASIC V2 i komputer będzie działał jak gdyby w ogóle nie było cartridge.


    gregor124 wrote:
    chyba jakiejś grupy użytkowników bardzo nie lubił.


    Wszystkich którzy kopiowali pozostałe wersje BB, wystarczył programator EEPROM i 74lsXX i 4001..., układy były powszechnie znane, a jeśli umieszczał zdarte papierem ściernym GALe to była zagadka. ;)

    Tutaj możesz sprawdzić jak wygląda większość procedur resetów(ze skrótami klawiszowymi). http://c64.com.pl/index.php/cartridge/rombit.html?cartridge=bb9
  • #7
    gregor124
    Level 16  
    @bestboy21 Jest dokładnie tak, jak piszesz. Tyle że po "niby odłączeniu cartridge" wpisanie np. print peek(56880) zawiesza komputer i potrzeba RESET. Więc wniosek, że I/O nadal jest podłączone, ale to już przypadek chyba większości Cartridges.
    Jest jeszcze jedna ciekawostka - zapis do I/O działa nieco inaczej niż odczyt. Problem w tym, że zapis został w BB9 wykorzystany tylko raz (i nie do odlaczenia cartrigde) i bez problemu można było go zastąpić innym rozkazem odczytu ale to zmusiłoby do zmian zawartosci Eprom, ale też wymusza dodanie do układu bramki XNOR więc trudno odgadnąć, o co tak naprawdę chodziło autorowi i czy nie było dodatkowych funkcji w układzie, z których BBv9 nie korzysta.. Moim zdaniem miało to praktycznie uniemożliwić zastąpienie GAL-a układem na TTL ponieważ w praktyce trzeba by zastosować dodatkowo 2 układy lub zmienić obraz Eprom albo zastosować praktycznie niesiagalny TTL produkowany jedynie przez TI.
  • #8
    bestboy21
    Level 40  
    Chodziło tylko o piractwo, 75% użytkowników miało BB pirackie ;) i tylko po to zastosowano GAL, nikt w domu nie miał ani oscylockopu 4 kanałowego z pamięcią ani rejestratora stanów logicznych. (w 90r oscyloskop analogowy był już ekskluzywny ;p) Więc skopiowanie czegoś takiego było trudne, co jak widać do dzisiaj pozostawiło swoje mity.

    gregor124 wrote:
    Jest dokładnie tak, jak piszesz. Tyle że po "niby odłączeniu cartridge" wpisanie np. print peek(56880) zawiesza komputer i potrzeba RESET. Więc wniosek, że I/O nadal jest podłączone, ale to już przypadek chyba większości Cartridges.


    Wyłączony Cart miał zwolnić pamięć BASIC i nic poza tym. I tak nikt tego nie używał. ;)
  • #9
    gregor124
    Level 16  
    Co do peryferii, np. drukarki, to moim zdaniem są one obsługiwane programowo, więc kart nie ma wpływu na ich działanie, o ile uznamy, że obraz EPROM jest poprawny.
  • #10
    bestboy21
    Level 40  
    gregor124 wrote:
    Co do peryferii, np. drukarki, to moim zdaniem są one obsługiwane programowo, więc kart nie ma wpływu na ich działanie, o ile uznamy, że obraz EPROM jest poprawny.


    No jasne że programowo, chociaż tylko po części, bo user port ma swój dedykowany układ CIA i to on już przejmuje transmisję równoległą.
    Obawiam się że to kolejna zabawka ;), żaden program na c64 nie użyje userportu, BB musiał by mieć rezydenta w pamięci, przechwycić pytanie o port serial przesłać na user - a to już nie wykonalne w tak prostej konstrukcji.
  • #11
    gregor124
    Level 16  
    @bestboy21
    Nie jestem specjalistą od oprogramowania C64, na co dzień używam Apple II Plus i tam takie rzeczy są normą. Ale zauważyłem, że dzieki BBv9 może przybrać programowo każdą możliwą konfigurację pamięci c64 Bank_Switching,łącznie z podpięciem się jako KERNAL i w zasadzie ciągle podczas pracy zmienia swoją konfigurację. Podejrzewam, że podmienia procedury KERNAL-a i jeśli program standardowo odwołuje się do drukarki szeregowej, to on te odwołania przejmuje.
    Ile programow to akceptuje tego nie wiem.

    Dodano po 20 [minuty]:

    cd ..
    Co ciekawe w obszarze i/o może być umieszczona i jest zawartość dwóch obszarów EPROM i można by je wykorzystać do napisania takiego rezydenta. Ale to już temat na modyfikacje BBv9. ;)
  • #12
    bestboy21
    Level 40  
    gregor124 wrote:
    Bv9 może przybrać programowo każdą możliwą konfigurację pamięci c64 Bank_Switching,łącznie z podpięciem się jako KERNAL


    No i wiele kartridży to wykorzystuje właśnie do podmiany KERNALA , bo niczym innym nie jest BB jak właśnie podmianą KERNALA ;), ale mało komu wystarczało te 8K... , dlatego tyle wersji PCB dla BB. :lol:.
    Dopiero dodatkowe bajerki (muzyczki, syntezator mowy, gierki) używają przełączania banków.
    Skoro jest inny kernal można by przemapować serial IEC (dev 4,5) na parallel user... I każdy głupi program który korzysta z KERNALA i bezpośredniego dostępu do sprzętu wysłał by na user(parallel). Wuala! ;)

    Ale nie będzie kompatybilny z drukarkami serial... , jeden czort go wie.

    Potrzeba człowieka mądrzejszego ode mnie...

    gregor124 wrote:
    Podejrzewam, że podmienia procedury KERNAL-a


    Tak, dokładnie to opisałem, że sam ładuje zmodyfikowaną kopię ;) - ciekawe czy ktoś kiedykolwiek zapłacił...
  • #13
    gregor124
    Level 16  
    bestboy21 wrote:
    Tak, dokładnie to opisałem, że sam ładuje zmodyfikowaną kopię - ciekawe czy ktoś kiedykolwiek zapłacił...

    Nie bardzo rozumiem, co w tym jest nielegalne? Zresztą, po co marnować pamięć na coś, co i tak jest dostępne. Przecież jest mechanizm pozwalający skopiować ROM do RAM i dokonać modyfikacji. Nie przyglądałem się aż tak dokładnie kodowi, ale myślę, że dla programów w BASIC wystarczy modyfikacja w BASIC, tak samo dla drukarki, jak i magnetofonu czy stacji dysków. No i do dyspozycji jest magiczna procedura pod $0073, dająca możliwość modyfikacji nie tylko w C64, ale i PET-ach.
  • #14
    bestboy21
    Level 40  
    gregor124 wrote:
    Nie bardzo rozumiem, co w tym jest nielegalne?


    KERNAL jak i CHAR ROM, podlega pod prawa autorskie ;) firmy Commodore, można go w locie podmieniać na maszynie ale nie modyfikować i rozpowszechniać , tylko co to ma za znaczenie.
  • #16
    gregor124
    Level 16  
    @czareqpl
    A są jakieś przeciwwskazania?
    A tak na serio, ten projekt ciągle jest w budowie. Płytka była robiona dla mnie do testów, więc wygląda nieco inaczej. Po prostu wcześniej nie korzystałem z tego wytwórcy PCB i chciałem sprawdzić takie cienkie ścieżki, które będą mi potrzebne w kolejnym (znacznie większym powierzchniowo, a więc i cenowo) projekcie.
    Ale skoro okazało się, że działa, to już taki wymiar przynajmniej na razie pozostał.
  • Helpful post
    #17
    ledout
    Level 11  
    oryginalnie był tam kondensator 180 pF, ale też nie pamiętam dlaczego zostawiłem go wylutowanego. Mam dwie wersje C64 i obstawiam, że nie działał z najstarszym "chlebakiem".
    Commodore C64 - BlackBox V.9 - ukończony w 99proc.
  • #18
    gregor124
    Level 16  
    @ledout
    I to jest informacja, na którą czekałem. Czy twój BBv9 działa?
    A czy możesz mi podać dokładne parametry części? Chodzi mi o czasy dostępu Eprom i PAL. Te czasy są istotne dla działania tego układu.
  • #19
    ledout
    Level 11  
    kiedy go ostatnio używałem, działał :-)
    zdjęcie użytych komponentów:
    Commodore C64 - BlackBox V.9 - ukończony w 99proc.
  • #20
    gregor124
    Level 16  
    @ledout
    W takim razie czy istnieje możliwość zrobienia kilku łatwych testów? Od razu piszę, że nie trzeba będzie niczego lutować, ot po prostu uruchomić parę testów programowych np. z poziomu Basic.
    Najbardziej zależy mi np. aby odłączyć programowo kartę i z poziomu Basic uruchomić np. ? Peek(56880)
    i napisać czy coś się stało.
  • Helpful post
    #21
    ledout
    Level 11  
    Tak, w weekend, napisz mi proszę na PW co konkretnie jest do sprawdzenia.

    Co się zaś tyczy BlackBox dla C64 polecam wywiad z autorem zamieszczony w C&A Fan z maja 2010.
    Czasopismo można pobrać stąd: http://c64.com.pl/index.php/gazety/cafan.html?gazety=cafan6

    Jest tam na stronie 52 zarówno zdjęcie BB9 jak i kilka słów o samych zabezpieczeniach, bez konkretów niestety.
  • #22
    gregor124
    Level 16  
    @ledout Oczywiście, przygotuję. Jeśli to możliwe i nie sprawi kłopotu, proszę zaopatrzyć się w woltomierz.
    Jeszcze zapytam, czy działa bez tego kondensatora?
  • Helpful post
    #23
    ledout
    Level 11  
    Sprawdziłem na szybko, C64C działa bez kondesnatora. Chlebaka teraz nie wygrzebię.
    Woltomierz mam.
  • Helpful post
    #25
    pipałosia
    Level 28  
    Dlaczego na PW?. Też bym chętnie sprawdził.
  • #27
    bestboy21
    Level 40  
    Odkopałem mój szrot, BBv4 (podróbka).
    I na linii I/O mam 700Ω i 220pF To ci ciekawostka. :)
    Możesz sprawdzić, intryguje mnie to bo mi rezystor odpadł i przepadł.
    Dużo zależy od pojemności wejściowej scalaków i ich szybkości, w podróbkach stosowali najtańsze 4 bramkowce UCY74xx.

    Może ten rezystor z kondensatorem to taka sztuczka na uniwersalność ;) Bo w okresie popularności c64 w Polsce popularne były obie wersje C64.
  • #28
    gregor124
    Level 16  
    @bestboy21 Tak dokładnie o to chodzi.
    A teraz testy.
    Test nr. 1.
    1. Wejść do systemu kl. [1].
    2. Wykonać komendę <-Q, dostaniemy komunikat, że cartridge jest odłączony.
    3. Wprowadzić no PRINT PEEK(56880).
    Sprawdzić, czy komputer się zawiesił.
    Jeśli się zawiesił, to znaczy, że cart jednak nie jest całkowicie odłączony.
    Kolejne testy będą miały za zadanie zweryfikować legendę czy oryginalnie PAL/GAL mogły kontrolować większą niż 32 kB pamięć.
  • #29
    gregor124
    Level 16  
    Procedura testowa 2
    
    20 SA = 679
    30 FOR N = 0 TO 38
    40 READ A% : POKE SA+N,A$%: NEXT N
    50 INPUT "ADRES 0-7";A
    55 IF A>7 THEN GOTO 50
    60 INPUT "READ/WRITE R-W";R$
    65 IF R$="E" THEN END
    70 D=PEEK(710+A)
    80 IF R$="R" THEN C=173
    90 IF R$="W" THEN C=141
    95 POKE 681,D
    96 POKE 680,C
    100 PRINT D,R$
    110 SYS(SA)
    120 GOTO 50
    210 DATA 120,173,0,222,169,255,141,2
    220 DATA 220,169,0,141,3,220,169,253
    230 DATA 141,0,220,173,1,220,41,32
    240 DATA 208,249,173,193,222,88,96
    250 DATA 0,1,64,65,128,129,192,193
    

    Jak ten program działa?
    Dzięki temu programowi można przetestować wszystkie możliwe kombinacje (także te, które nie zostały użyte w kodzie BackBox-a).
    Kombinacje te to 3 pola bitowe A0, A6, A7 i wszystkie ich kombinacje wybierane liczbami od 0 do 7.
    Jak użyć tego programu?
    Należy go załadować pod systemem BBV9.
    Po uruchomieniu wybieramy adres ktory chcemy przetestowac (liczby od 0 do 7) (ADRES 0-7),
    Oraz sprawdzenie adresu przy odczycie "R" lub zapisie "W".

    Np. wybieramy adres 0, następnie "R", co oznacza odczyt.
    W tym momencie sprawdzamy napięcie na wyprowadzeniach 18 i 19 układu GAL i zapisujemy jego stan 0 lub 1.
    Klawisz "S" pozwala nam przejść do ustawień następnego kroku testu.
    Jeśli stwierdzimy, że stan wyjść 18 lub 19 uległ zmianie, to powtarzamy krok dla tych samych ustawień (pozwoli to sprawdzić, czy przypadkiem nie działają na zasadzie licznika).
    Program możemy zakończyć, wprowadzjąc zamiast R lub W literę E.
  • #30
    ledout
    Level 11  
    test1
    polecenie nie zawiesza komputera.
    Commodore C64 - BlackBox V.9 - ukończony w 99proc.

    Co do testów z miernikiem to powstał taki problem, że przyłożenie bagietek miernika resetuje kompa. Zorganizuję inny miernik.