Komputery z Z80 > AMSTRAD
Dktronic 64 reverse engineering ;)
zaxon:
Ot szukalem jakichkolwiek info o tym fejsie. Cos tam jest na CPC Wiki ale schematu brak, wsadu do PAL tez. Udalo mi sie ostatnio go kupic w wersji SMD na 2 kosciach 4464 i tak sobie go reversuje powoli .
1.Schemat mam zrysowany ale jeszcze musze nad nim popracowac bo poki co wstyd ludziom pokazac ;)
2. PAL, Dzieki pomocy Marka Smitha mam skopiowany i zrobiony wsad do GAL16v8, orginal byl zabezpieczony ale brute force zadzialalo :D. (Tak Pear, bylem kowalem ,heheh) . W zasadzie to go nawet mam w 2 wersjach. Dziala wszystko co testowalem, oprocz Batman Forever. Tez temat do dopracowania.
3. Plytka prototypowa: wymiary mojego orginalu SMD , uklad elementow podobnie tyle ze zrobilem w przewlekanym bo pewnie sie gdzies machnalem i latwiej bedzie drutowac przy uruchomieniu.
Dr Piotr:
Ten pal to odpowiednik pala z 6128 do mapowania ramu. Gdzies chyba mialem do niego oryginalny kod...
Na tym rozszerzeniu niektore rzeczy moga nie chodzic ze wzgledu na korzystanie z trybu c3 dodatkowej pamieci - mapowania banku pod adres #c000 i jednoczesnie wewnetrznej pamieci od #c000 pod #4000. Z tego, co pamietam to jest najwieksze wyzwanie na 464, nawet dktronics nie dal w pelni sobie z tym rady :)
zaxon:
Tak , odpowiednik ale nie zamienny niestety. Orginalny kod do interfejsu czy do 6128? Bo ten co go kiedys zdumpowal z 6128 Porky i lezy na CPC Wiki dziala swietnie dopoki sie nie podlaczy karty X-mem, wtedy sa artefakty. Z orginalnym HAL X-mem dziala ok.
Anyway, 2 orginaly i jedna podroba ;)
Dr Piotr:
Mam zrzut ze 6128 ale juz poprawiony.
A14OUT = !( !A14
# !A15 & !Q0 & Q2 );
A15OUT = !( !A15 & !A14
# !A15 & !Q1
# !A15 & !Q0 & !Q2 );
Q0 = ( D7ANDD6 & nRESET & D0 & !A15 & !nIOWR
# !D7ANDD6 & nRESET & Q0
# nRESET & A15 & Q0
# nRESET & nIOWR & Q0 );
Q1 = ( D7ANDD6 & nRESET & D1 & !A15 & !nIOWR
# !D7ANDD6 & nRESET & Q1
# nRESET & A15 & Q1
# nRESET & nIOWR & Q1 );
Q2 = ( D7ANDD6 & nRESET & D2 & !A15 & !nIOWR
# !D7ANDD6 & nRESET & Q2
# nRESET & A15 & Q2
# nRESET & nIOWR & Q2 );
nCAS0 = ( nCAS
# RAMDIS & !nCPU & nCAS0
# !A15 & A14 & !nCPU & Q2 & nCAS0
# A15 & A14 & !nCPU & Q0 & !Q2 & nCAS0
# !nCPU & !Q0 & Q1 & !Q2 & nCAS0
# !nCAS1 );
nCAS1 = !( !RAMDIS & !nCAS & !A15 & A14 & !nCPU & Q2 & nCAS0
# !RAMDIS & !nCAS & A15 & A14 & !nCPU & Q0 & !Q2 & nCAS0
# !RAMDIS & !nCAS & !nCPU & !Q0 & Q1 & !Q2 & nCAS0
# !nCAS & !A15 & A14 & Q2 & nCAS0 & !nCAS1
# !nCAS & A15 & A14 & Q0 & !Q2 & nCAS0 & !nCAS1
# !nCAS & !Q0 & Q1 & !Q2 & nCAS0 & !nCAS1 );
Zreszta jest juz do sciagniecia z http://www.cpcwiki.eu/index.php/PAL16L8
Q1,Q2 tworza numer banku pamieci, wyliczany w momencie gdy jest robiony out #7f00, cx (to ten kawalek D7ANDD6 & nIOWR & !A15). Q3 to tryb przelaczania bankow, gdy=1 banki mapowane sa pod #4000 (A14=1)
kod do interfejsu pewnie bedzie troche inny, poniewaz do A15OUT i A14OUT musi dojsc jeszcze sterowanie wymuszeniem MREQ dla trybow c4-c7 i A15 dla trybu c3, pewnie cos w stylu MREQHIGH=(A14OUT # A15OUT)
zaxon:
No i gotowe,
Teraz kolej na wersje 256k ;D
Nawigacja
[#] Następna strona
Idź do wersji pełnej