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

Rozbudowa pamięci RAM komputera c64 do 1 MB

Grzegorz77 12 Sty 2014 20:15 17838 22
  • Rozbudowa pamięci RAM komputera c64 do 1 MB
    Chciałby przedstawić swój projekt. W sumie powstał on gdzieś w latach 90 -tych i właściwie już nie pamiętam właściwie po co :D
    Zbudowałem nawet działający prototyp, niestety czas i technika szły do przodu i gdzieś się zawieruszył.
    Ostatnio wpadł mi w ręce c64 i postanowiłem go odtworzyć, dokonując pewnych poprawek i tak oto powstał mój komputer taki jaki sobie wymarzyłem :D
    Projekt powstał co prawda na c64 bo taki akurat mam, ale po pewnych modyfikacjach myślę że można go przenieść na inne platformy.
    Oczywiście istniej wiele rozszerzeń pamięci dla komputerów 8 bitowych, 99,9 % (jeśli nie wszystkie, jak się mylę to proszę o sprostowanie)z nich opiera się na tak zwanych BANK-ach pamięci, które pozwalają dotrzeć do pamięci dodatkowej w oknie umieszczonym w obszarze pamięci liniowej dla programu.
    Pomyślałem dlaczego nie zrobić dokładnie odwrotnie.
    Zdjęć nie umieszczę bo głupio mi że nie zaprojektowałem jeszcze PCB i całość jest "poszyta" przewodami, jednak jak dotychczas wszystko działa, więc mogę sobie kodować.
    A teraz kilka konkretów. Cała pamięć 1024kB została podzielona na części po 64kB czyli tyle ile może zaadresować procesor 8 bitowy 6510 (w c64). Dodatkowo można ustawić tak że w tym samym czasie w jednym banku 64kB działa VIC (sterownik grafiki), a w innym CPU. Aby podczas zamiany banków pamięci procesor "nie trafił w próżnię " zastosowałem dodatkową pamięć w obszarze I/O która jest widoczna zawsze i tam właśnie musi znajdować się kod programu przełączającego banki.
    W ten sposób urządzenie daje praktycznie 16 komputerów c64 w jednym, gdzie mogę mieć 16 programów z których każdy ma właściwie do dyspozycji pełen komputer, a wspólne są jedynie urządzenia I/O.
    Najtrudniejsze było zapewnienia odświeżania dodatkowej pamięci ale udało się je zrobić za pomocą układów TTL i swobodnie mieści się w obudowie, bez (dziurawienia jej ).
    Całość składa się z 5 układów TTL i pamięci SRAM (wyciągniętej z PC 386) oraz modułu SIMM 8-bit z tego samego dawcy, czyli małym kosztem dużo frajdy
    A jak to działa można zobaczyć np. na tym filmiku:
    https://www.youtube.com/watch?v=NKrjpoJKmPo&feature=youtu.be
    Mały opis do filmu. Na początku widać mały programik ( taki OS jaki popełniłem :D ) który na razie wykonuje kilka rozkazów (będzie więcej) i tak:




    R nr - resetuje jeden "wirtualny c64" - taka nowa sesja
    G nr - przenosi się do tej sesji i tak możemy załadować sobie dowolny program , uruchomić go, czy powrócić do OS.
    dodatkowe rozkazy (na razie)
    Q - daje dostęp do monitora i można sobie napisać nowe rozszerzenia dla OS.
    Każdorazowe wciśnięcie przycisku RESET przenosi sterowanie do OS i możemy uruchomić inną sesję ..
    Osobiście mam sporo frajdy bo znów mogę sobie pokodować ucząc się niejako na nowo, bo jakoś nie spotkałem się jak zarządzać w proc. 65xx kilkoma stosami, czy stronami zerowymi, ale już wiem że jest to możliwe a twórcy tego procesora świadomie lub nie stworzyli do tego potrzebne rozkazy i chwała im za to.
    Więcej informacji podam tutaj ( jak tylko znajdę czas na ukończenie strony, na razie jest tam jeszcze co innego). O fakcie uruchomienia strony projektu powiadomię w tym wątku
    Rozbudowa pamięci RAM komputera c64 do 1 MB Rozbudowa pamięci RAM komputera c64 do 1 MB Rozbudowa pamięci RAM komputera c64 do 1 MB


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #3 13 Sty 2014 01:49
    phanick
    Poziom 28  

    Rozumiem, że zastosowany 1 MB pamięci to pamięć dynamiczna (DRAM) wyciągnięta ze starego SIMMA z PC? Opisz proszę mechanizm odświeżania pamięci wraz z zastosowanym schematem. Ja potrzebuję podpiąć do procesora 6502 dość dużą pamięć RAM, którą chciałbym dość często przeprogramowywać, stąd pamięć SRAM odpada (taka o pojemności > 128 kB jest już droga), natomiast pamięć Flash dłużej się programuję (zapisanie jednego bajtu wymaga kilku cykli).

    Stąd miałem pomysł zastosowania pamięci dynamicznej DRAM, jednak nie bardzo wiem, jak zaprojektować do niej interfejs odświeżania, aby z zewnątrz dostęp do takiej pamięci był jak najbardziej swobodny (tak, jak w pamięci SRAM).

  • #4 14 Sty 2014 18:17
    kedzi1
    Poziom 18  

    Witam, fajny projekt. Kiedyś bardzo dawno temu z wypiekami na twarzy analizowałem projekt ramdysku do c64. Wtedy jeszcze budowa takiego cuda była poza moim zasięgiem (koszty, stopień skomplikowania). Dziś można się bawić, tylko już nie bardzo jest kiedy ;). Myślałeś o tym by dorobić bateryjne podtrzymanie pamięci, tak jak w ramdysku?

    Gratuluje oryginalnego projektu!

  • #5 14 Sty 2014 19:26
    Grzegorz77
    Poziom 25  

    phanick napisał:
    Rozumiem, że zastosowany 1 MB pamięci to pamięć dynamiczna (DRAM) wyciągnięta ze starego SIMMA z PC? Opisz proszę mechanizm odświeżania pamięci wraz z zastosowanym schematem. Ja potrzebuję podpiąć do procesora 6502 dość dużą pamięć RAM, którą chciałbym dość często przeprogramowywać, stąd pamięć SRAM odpada (taka o pojemności > 128 kB jest już droga), natomiast pamięć Flash dłużej się programuję (zapisanie jednego bajtu wymaga kilku cykli).

    Stąd miałem pomysł zastosowania pamięci dynamicznej DRAM, jednak nie bardzo wiem, jak zaprojektować do niej interfejs odświeżania, aby z zewnątrz dostęp do takiej pamięci był jak najbardziej swobodny (tak, jak w pamięci SRAM).

    Tak użyłem pamięci SIMM (DRAM) - schematu jednak nie udostępnię ponieważ trochę mnie kosztowało wymyślenie jak to zrobić, ale myślę że w programatorze spokojnie można zrobić odświeżanie programowe .

  • #6 14 Sty 2014 19:36
    jackfinch
    Poziom 15  

    Witam

    Jakie układy TTL zastosowałeś na płytce uniwersalnej?

    Pozdrawiam

  • #8 14 Sty 2014 20:44
    deus.ex.machina
    Poziom 32  

    phanick napisał:

    Stąd miałem pomysł zastosowania pamięci dynamicznej DRAM, jednak nie bardzo wiem, jak zaprojektować do niej interfejs odświeżania, aby z zewnątrz dostęp do takiej pamięci był jak najbardziej swobodny (tak, jak w pamięci SRAM).


    Większość układów pamięci RAM o tej gęstości posiadała co najmniej CAS before RAS i prawdopodobnie self-refresh mode - ponieważ C64 jest relatywnie wolnym systemem (clock systemu jest mniejszy niż 2MHz - procesor video i CPU maja dostęp do RAM naprzemiennie w różnych fazach zegara 0.98MHz - wypadkowo właśnie poniżej 2MHz) - jak myślę bez problemów da się uzyskać CBR po każdym dostępie (dla pamięci 80ns pełen cykl to minimum 150ns a przy zegarze 2MHz masz 500ns więc zrobisz co najmniej 3 cykle z których jeden to normalny cykl R/W i jeden można użyć do właśnie CBR).
    http://www.downloads.reactivemicro.com/Public/Electronics/DRAM/DRAM%20Refresh.pdf

  • #10 14 Sty 2014 22:07
    Grzegorz77
    Poziom 25  

    kedzi1 napisał:
    Dziś można się bawić, tylko już nie bardzo jest kiedy ;). Myślałeś o tym by dorobić bateryjne podtrzymanie pamięci, tak jak w ramdysku?

    Jeszcze niedawno też myślałem że to zabawka, ale ostatnio zmieniam zdanie. :D
    W sumie jest to doskonały i tani sterownik z ogromną ilością oprogramowania (najlepsze że rozwijanym do dziś), łatwą budową interfejsów, a dzięki genialnemu asemblerowi praktycznie można z nim zrobić wszystko. Właśnie kończę system który pozwoli równolegle pracować do 16 programów.
    Taki ramdysk był swego czasu nawet produkowany, niestety dla mnie jest za mały.
    W przypadku pamięci dynamicznych takie podtrzymanie jest mało przydatne. Myślałem raczej o dysku twardym lub pamięciach flash.

  • #11 18 Sty 2014 10:52
    Tremolo
    Poziom 43  

    Trochę rozmyte, ale to kwestia ostrości na telefonie/aparacie. Przypominają mi się czasy, kiedy niezdecydowani goście podczas zakrapianych imprez rodzinnych 20 lat temu nie wiedzieli w co grać... Proces przewijania kasety/strojenia głowicy, szukania dysków:" co gdzie jest" był bardzo wkurzający, A tu "pyk" magiczna komenda i działa gra. 

    Ktoś tu kiedyś poruszał temat podpięcia mp3 playera zamiast magnetofonu do slotu i wgrywania gier na przykład z internetu. Tylko jak taki program *.D64, *.P64 albo *.PRG wrzucić na ścieżkę dźwiękową i zaadaptować.

  • #13 18 Sty 2014 16:05
    Grzegorz77
    Poziom 25  

    Tremolo napisał:

    Ktoś tu kiedyś poruszał temat podpięcia mp3 playera zamiast magnetofonu do slotu i wgrywania gier na przykład z internetu. Tylko jak taki program *.D64, *.P64 albo *.PRG wrzucić na ścieżkę dźwiękową i zaadaptować.

    Do przenoszenia na c64 plików *.d64 , *.prg lepiej użyć innych rozwiązań niż kaseta. Np SD2IEC ( http://www.eltop.republika.pl/sd2iec.html ) lub podłączyć stary komputer PC poprzez łatwy interfejs i używać go jako stacji dyskietek (sam tego używam i od biedy wystarczy)
    http://www.kotinet.com/1541/

  • #14 23 Sty 2014 09:05
    zyga64
    Poziom 1  

    phanick napisał:
    Ja potrzebuję podpiąć do procesora 6502 dość dużą pamięć RAM, którą chciałbym dość często przeprogramowywać, stąd pamięć SRAM odpada (taka o pojemności > 128 kB jest już droga)


    Niekoniecznie, kostka 512k x 8 SRAM w detalu kosztuje 13 zł. To da się przeżyć.
    Oczywiście od chińczyków będzie taniej. Kupowałem ostatnio 10 pamięci SRAM 512kB na ebayu, wyszło $2/szt.

  • #15 23 Sty 2014 18:07
    phanick
    Poziom 28  
  • #16 26 Sty 2014 12:02
    Grzegorz77
    Poziom 25  

    Udało mi się dostosować Turbo Assembler do pracy w systemie. Teraz mogę w jednym banku mieć program TA z kodem źródłowym i kompilować go do innego banku. Dzięki temu zaoszczędzam wiele czasu i nie muszę kompilować dużych programów na dyskietkę , aby do sprawdzenia wczytywać je z powrotem , a w razie błędu ponownie wczytywać assembler i kod źródłowy.
    Teraz kompiluje np . do wolnego banku , tam uruchamiam program , a w razie błędu i zawieszenia komputera RESET, powrót do assemblera (kod źródłowy nadal jest w pamięci ) , poprawki i kolejne testy. Pomyśle też aby można było bezpośrednio pobierać do kodu źródłowego dane z programów graficznych , edytorów sprites, czy sampli z muzyką .
    Dodatkowo w każdym banku mogę mieć inne rozszerzenie systemu operacyjnego i przy okazji sprawdzić jak nowy program z nim współpracuje.
    Niezła zabawa, jedna z osób której to zaprezentowałem nazwała to nawet VMware dla c64
    ;)

  • #17 26 Sty 2014 12:56
    shadow0013
    Poziom 34  

    Zapowiada się ciekawie, przydał by się debugger do grzebania w innym banku.

  • #18 26 Sty 2014 13:29
    Grzegorz77
    Poziom 25  

    shadow0013 napisał:
    Zapowiada się ciekawie, przydał by się debugger do grzebania w innym banku

    W tedy to byłby komplet do programowania .

  • #19 06 Lut 2014 16:19
    Grzegorz77
    Poziom 25  

    Udostępniam schemat rozszerzenia do 256 kB . Można wykorzystać stare SIMM-y 256 kB (z 256 cyklowym odświeżaniem ) , lub pojedyncze układy 41256 .
    To rozszerzenie jest programowo takie same jak 1 MB . Ale do dyspozycji są jedynie 4 wirtualne c64 zamiast 16
    Autor nie zezwala na użycie tego rozwiązania w celach zarobkowych .
    http://gsmhome.elektroda.eu/schematfree.pdf

  • #20 06 Lut 2014 21:38
    shadow0013
    Poziom 34  

    Grzegorz77 napisał:
    Na początku widać mały programik ( taki OS jaki popełniłem )

    No cóż bez OS i innego oprogramowania rozszerzenie jest tyle warte co inne rozszerzenia dla C64 np. +32kB do 1541 i inne - są ale nikt ich nie używa. Może bym sobie takie zrobił ale to sztuka dla sztuki.

  • #21 07 Lut 2014 10:54
    Grzegorz77
    Poziom 25  

    shadow0013 napisał:

    No cóż bez OS i innego oprogramowania rozszerzenie jest tyle warte co inne rozszerzenia dla C64 np. +32kB do 1541 i inne - są ale nikt ich nie używa. Może bym sobie takie zrobił ale to sztuka dla sztuki.


    Nakładkę na OS udostępnię wraz z kodem źródłowym (prawdopodobnie w przyszłym tygodniu) jak tylko ukończę stronę projektu .
    Oczywiście o uruchomieniu strony powiadomię .

  • #22 24 Lip 2014 14:47
    Grzegorz77
    Poziom 25  

    Link do powstającej strony projektu
    strona

  • #23 24 Lut 2015 11:59
    Grzegorz77
    Poziom 25  

    Na dzień dzisiejszy projekt został rozbudowany do 16 MB.

  Szukaj w 5mln produktów