|
|
|
 | SPRZĘT | |
|
Poniżej widzimy schemat UCart'a made by SUCHY.

UCart - C64 Universal Cartridge.
Opis działania UCart'a.
1. Połączenie A0 do A12 z A0 do A12, to najmłodsze bity adresowe odpowiedzialne za obszar 8kB - wyjście to te z C64, a wejście to te z EPROM-u - przybierają adres podany na magistrali C64.
2. /CE i /OE jak widać aktywne w stanie niskim połączone z /ROML również aktywnym w stanie niskim - EPROM aktywuje się (jest widoczny), gdy /ROML jest w stanie niskim.
Tu małe wyjaśnienie - /ROML tworzy parę z /EXROM są to dwie 'współpracujące' ze sobą linie tzn. patrząc od strony C64 /EXROM jest INPUT, a /ROML jest OUTPUT. Wygląda to tak, że jeżeli /EXROM będzie wprowadzony w stan niski z poziomu elektroniki cartridge'a, to podczas ODCZYTU przez procesor obszaru $8000-$9FFF /ROML będzie przyjmował stan niski co w tym wypadku 'włącza' nam EPROM w carcie i widzimy go w tym obszarze. Jak widać wszystko ciągle 'klika i mruga', bo jak wykonywana jest dajmy na to instrukcja LDA $1000, to /ROML jest w stanie wysokim, a eprom jest wówczas w stanie wysokiej impedancji (HiZ) i jest wyłączony. Tak samo jak /EXROM będzie w wysokim stanie (logiczne 1), to /ROML nigdy nie będzie nas informował o odczycie obszaru $8000-$9FFF i EPROM pozostanie niewidoczny, a odczyt będzie z RAM. Bardzo ważne jest żeby zrozumieć te zasady, aby wiedzieć jak budować carty i jak one działają. Dodatkowo /EXROM odseparowany jest diodą od licznika BCD 74LS90, ściślej od jego wyjścia najstarszego bitu licznika zliczającego od 0 do 9 po podaniu impulsów na CLKA - o tym za moment.
Reset - co się dzieje, jak komputer 'WSTAJE'.
Na 1 są ustawione LORAM HIRAM CHAREN odpowiedzialne za 'widzenie' przez procesor BASIC'a, KERNAL'a oraz I/O i CHARGEN'a , - procesor ładuje do PC (program counter) adres widziany w wektorze pośrednim $FFFC, a jest to KERNAL co pod tym adresem ma wskazanie na $FCE2. $FCE2 szuka... moment, moment - najpierw trzeba wiedzieć, co już zrobiła elektronika...
Sygnał /RESET był w stanie niskim po włączeniu zasilania przez ułamek sekundy (stała czasowa RP3-3k3 i C43-220uF) i co się z nim dalej stało, gdy tylko pojawił się na nim stan niski, a napięcie na procku osiągnęło poziom 4,75V - to już milionowe części sekundy:
zresetować licznik 74LS90 - na R0(1) i R0(2) poszła jedynka, co w dalszej konsekwencji ustawiło wyjścia Qa, Qb, Qc, Qd na 0, z czego wynika, że trzy najstarsze bity adresowe eprom'u przyjęły wartość 0 (zostało wybrane pierwsze 8kB, czyli bank '0' w epromie) i co istotne wprowadziło w stan niski /EXROM, czyli daliśmy informację do C64, aby informował carta o odczycie obszaru $8000-$9FFF poprzez wprowadzenie w stan niski /ROML. Przy okazji zauważmy, że 3 bity adresowe, to 8 możliwych kombinacji, więc w naszym wypadku jest możliwe (i tak jest), że można mieć 8 banków po 8kB. Dla jasności /RESET automatycznie (po naładowaniu kondensatora C43 w komciu) przeszedł w stan wysoki i kolejne jego wduszenie spowoduje ponowne zerowanie licznika (jakby co).
Tak więc w ciągu krótkiej chwili (najdłużej trwa sygnał RESET, po włączeniu zasilania) cart przygotował się (zgrał z kompem) do działania - niesłychanie istotna jest znajomość 'pierwszych kroków, stanów, działań', aby cart się zawsze 'podniósł'.
Teraz wracamy do działania softu - $FCE2 zaczyna szukać pod $8005 do $8009 ciągu CBM80 i jak on tam jest oddaje sterowanie wskazane w wektorze $8000. Co istotne - czy ciąg ten tam jest, czy nie odczytywany jest EPROM - nasz cart się zgłasza przy adresowaniu odczytu $8000-$9FFF.
Bankowanie - przełączanie 8kB banków.
Żeby 'klikać' CLKA i zmieniać bity Qa do Qd nie wystarczy tylko opadające zbocze na CLKA - trzeba zdać sobie z tego sprawę, że po opadającym zboczu musi pojawić się logiczna jedynka, aby można było znów 'popchnąć' licznik opadającym zboczem - to akurat w tym carcie jest istotne, dlatego to wtrąciłem.
Sygnał I/O1 przyjmuje podobnie jak /ROML niski stan wtedy, gdy adresowany jest obszar $DE00 do $DEFF (nie tylko odczyt - ZAADRESOWANIE wystarczy R albo W). Z tabeli prawdy dla dwóch NORÓW wychodzi, że bankowanie odbywa się natychmiast, a później jakby przygotowanie do kolejnego - więc tak:
Fi2 'lata jak wściekłe' w każdym cyklu na 0 i 1 - jak więc procek odwoła się do I/O1 pojawi się w pewnym momencie niski stan na I/O1 i Fi2, który zostanie zanegowany i poleci na drugą bramkę. Druga bramka znów sumuje tym razem naszą poprzednią sumę I/O1 i Fi2 - w tym wypadku stan wysoki i na razie niski stan na Qd, co w efekcie na CLKA po OR i NEGACJI (druga bramka) poda stan niski (opadające zbocze) i 'popchnie' licznik. Następny 'moment', gdzie którykolwiek z sygnałów Fi2 lub I/O1 będzie w stanie wysokim spowoduje (jakby przygotowanie do klikania) logiczną jedynkę na CLKA. 'Popchnięty' licznik przełączy nam kolejne 8kB EPROM'u POD WARUNKIEM, że Qd będzie w stanie niskim, bo to umożliwia naprzemienne podawanie stanu wysokiego i niskiego na CLKA. Z chwilą, gdy licznik doliczy do 8-miu podnosi się Qd (logiczne 1), podłączony do niego /EXROM przechodzi w stan wysoki, /ROML przestaje działać i cart przestaje być widoczny. Nie można już podawać impulsów na CLKA, bo jest tam cały czas logiczne 0 i nie da się go już na chwilę 'podnieść' do następnego 'klikania' - chyba, że wyłączymy i włączymy komputer, lub wciśniemy reset.
Tak więc SUCHY odwalił ciekawą robotę przed 1990, gdzie niewielu w Polsce ludzi wiedziało jak to robić - zrobił sobie ROM-dysk, który przepisywał dowolną grę po resecie do RAM'u, uruchamiał ją automatycznie i odłączał carta, aby nie przeszkadzał. Dla mnie jest to kapitalny i prosty przykład zastosowania carta jako magazynu z programami - można dorobić swoje menu i uruchamiać faworyzowane programy. Na tym karcie nauczyłem się i zrozumiałem podstawowe zasady jak robić własne kartridże do C64.
Dodatkowe wyjaśnienia.
'Samonapędzanie' CLKB z Qa (najmłodszego bitu) wynika z budowy 74LS90, aby popychać kolejne sekcje. Dioda separuje /EXROM od Qd, aby Qd będące Wyjściem nie było traktowane jako Wejście przez wysoki stan na /EXROM. (rezystor podciągający pull-up).
Nowości.

UCart-light - C64 Universal Cartridge.
Nowa wersja 'odchudzonego' UCarta pod nazwą UCart-light, przedstawiona przez Suchego (po burzy mózgów ;-) ) jest znacznie uproszczona. Usunięty został całkowicie układ scalony US1 (74LS02), a w jego miejsce doszedł tylko jeden tranzystor (i dwa oporniki), pracujący jako inwerter sygnału RESET (ponieważ dla licznika 74LS90 sygnałem aktywnym dla RESET jest H). UCart-light nie posiada hardware'owej blokady wejścia EXROM, jaką miał pierwowzór, dlatego należy być 'pewnym' oprogramowania 'zrzucanego' z carta do komcia, tak aby w czasie jego uruchamiania i późniejszej pracy, korzystało ono 'rozsądnie' (lub nie korzystało) z adresów $DE00-$DEFF (odpowiedzialnych za 'widoczność' carta i jego bankowanie) - bo inaczej będziemy mieć śliczną 'zawieszkę'.
Podziękowania.
Podziękowania należą się ludziom, których zamęczałem hardware'owymi pytaniami, którzy z anielską cierpliwością wyjaśniali mi całkowicie proste i banalne dla nich rzeczy:
KB777 - dzięki Konrad!
JAD - dzięki Tobie pojąłem sens kooperacji /EXROM i /ROML!
SUCHY - THX! - szczególnie za sprawdzanie moich wypocin i niespełnionych teorii ;-)

UCart - C64 Universal Cartridge.

Autor:
Data realizacji:
Data publikacji:
Data modyfikacji:
Pierwsza publikacja:
|
|
Mr Wegi (Black Sun/Fatum/Samar Productions)
15.12.2009
5.1.2010
-
Commodore & Amiga Fan
|
|
#1 | Dzień 31-1-2010 | godz.19:39:57 | Autor: Suchy | Status: Brak błędów | AdrIP: Ukryty | |
|
#2 | Dzień 8-9-2010 | godz.13:19:52 | Autor: Przemek_bundy | Status: Brak błędów | AdrIP: Ukryty | Http://c64.phorum.pl/vie
wtopic.php?t=46
Ten link jest nieaktywny!
Ponadto na schemacie
bramka NAND IC1A na jej wyjściu nigdy
nie Będzie stanu L ?! |
|
#3 | Dzień 5-12-2010 | godz.11:24:32 | Autor: Suchy | Status: Brak błędów | AdrIP: Ukryty | Faktycznie, podany przeze mnie link jest
obecnie nieaktualny. Jak tylko
uporządkuję materiały nt. UCart'a
(czytaj: znajdę trochę więcej wolnego
czasu, żeby to zrobić), to podam namiary
na aktywny link. Póki co tutaj:
Http://www.forum.c64powe
r.com/index.php?id=2063&fid=1
... można dodatkowo
poczytać co nieco na temat UCart'a.
Układ IC1 (74LS02) to
nie są bramki NAND tylko NOR. Bramka NOR
w takiej konfiguracji jak IC1A pełni
funkcję inwertera, w tym przypadku
neguje sygnał RESET z C64 (aktywny: L)
dla układu 74LS90 (aktywny: H). |
|
#4 | Dzień 5-12-2010 | godz.13:24:03 | Autor: Suchy | Status: Brak błędów | AdrIP: Ukryty | |
|
#5 | Dzień 7-12-2010 | godz.09:22:12 | Autor: Frazes | Status: Brak błędów | AdrIP: Ukryty | Komentarz testowy. |
|
#6 | Dzień 3-4-2016 | godz.19:08:34 | Autor: Wegi | Status: Brak błędów | AdrIP: Ukryty | Do Przemek_bundy - stan L pojawi się tam
w dwóch przypadkach: Po
wciśnięciu reset oraz po wyłączeniu C64
i jego ponownym włączeniu. |
|
Instrukcja używania systemu komentarzy
- W polu "Podpisz się" umieszczasz swoje Imię, Nazwisko albo Pseudonim używając znaków alfanumerycznych: A-Z, 0-9 oraz znaków specjalnych, np.: !^<>" ' itp.
Tagi HTML są nieaktywne.
- W polu "Wpisz treść" umieszczasz komentarz używając znaków alfanumerycznych: A-Z, 0-9 oraz znaków specjalnych, np.: !^<>" ' itp. Klawisz ENTER tworzy nowy akapit.
Tagi HTML są aktywne. Możesz:
Możliwość:
|
Komenda:
|
Przykład:
|
a. Pogrubić tekst: |
<B></B> |
Pogrubiony |
b. Pochylić tekst: |
<I></I> |
Pochylony |
c. Podkreślić tekst: |
<U></U> |
Podkreślony |
d. Stworzyć indeks górny: |
<SUP></SUP> |
Indeks górny |
e. Stworzyć indeks dolny: |
<SUB></SUB> |
Indeks dolny |
f. Użyć czcionki maszynowej: |
<TT></TT> |
Czcionka maszynowa |
Adresy URL wpisujemy w postaci http://nazwastrony.pl, ftp://nazwastrony.pl.
Adresy email wpisujemy w postaci nazwa@nazwa.pl.
Adresy Gadu-Gadu wpisujemy w postaci gg:1234567 (bez spacji).
Proszę pamiętać o domykaniu otwartych tagów.
Przed naciśnięciem przycisku Komentuj, zaznacz checkboks przy jego prawym boku.
|
|
|