1 Ostatnio edytowany przez seban (2008-04-17 13:09:22)

Witajcie!

Dzięki uprzejmości Nosty-ego możecie mieć do dyspozycji zrekonstruowany "Unerring Master Super Cartridge". Jest to cartridge zawierający loadery i kopiery dla systemów turbo zgodnych z AST, ATT, UM. Z dyskusji wcześniej prowadzonych na tym forum wynika iż magnetofony wyposażone w turbo Blizzard również powinny działać z oprogramowaniem zawartym na tym cartridge. Dla przypomnienia, cartridge po uruchomieniu wygląda tak:

http://seban.slight.pl/atari/um_super_cart/UM%20Super%20Cartridge%20-%20screen.png

Jest to typowy 16KB cartridge, z możliwością odłączenia go poprzez dowolny zapis pod dowolną lokację z zakresu $D500-$D5FF. Zawartość pamięci EPROM tego cartridge możecie pobrać tutaj: UM Super Cartrige EPROM. Plik ten można również uruchomić pod emulatorem Atari800 czy Aatari800Win wybierając jako typ cartridge "Blizzard 16KB cartridge".

Cartridge wyglądał w ten sposób:

http://seban.slight.pl/atari/um_super_cart/UM_cart%20CASE%20-%20top.jpg

Może nasz naklejkowy renowator szanowny "kierownik zamieszania" ;)  zechce zrekonstruować również tą naklejkę? :) Jeżeli tak to w razie potrzeby skan karta w 300dpi TIFF jest tutaj.

Dół płytki drukowanej (tzw. PCB) zawierającej komponenty wygląda tak:
http://seban.slight.pl/atari/um_super_cart/UM_cart%20PCB%20-%20bottom.jpg

Góra PCB wygląda tak:
http://seban.slight.pl/atari/um_super_cart/UM_cart%20PCB%20-%20top.jpg

Dla zainteresowanych rozrysowany schemat cartridge:

wersja PDF: schemat w formacie wektorowym PDF
wersja PNG: schemat w formacie rastrowym PNG

Patrząc na schemat możemy wydzielić dwa funkcjonalne bloki:

1) 16KB pamięć EPROM 27128 podpiętą do magistrali ATARI poprzez sygnały A0-A12, oraz D0-D7. Diody D1, D2 oraz rezystor R2 tworzą prosty układ zastępujący bramkę OR. Pojawienie się zera logicznego na którejkolwiek z linii (~S4 lub ~S5) powoduje wymuszenie zera logicznego na liniach ~OE i ~CE pamięci EPROM, co spowoduje podpięcie jej pod magistralę w momencie kiedy na magistrali adresowej wystąpi adres z zakresu $8000-$8FFF (pojawia się wtedy zero logiczne na linii ~S4) lub $A000-$BFFF (pojawia się wtedy zero logiczne na linii ~S5). Ponieważ w złączu cartridge ATARI mamy tylko linie A0-A12 co umożliwia zaadresowania 8KB, a EPROM mamy 16K... sygnał ~S4 jest również wykorzystany do sterowania linią A13 pamięci EPROM, a co za tym idzie do wyboru odpowiednich 8K z pamięci EPROM.

2) Drugi blok to układ zapewniający możliwość całkowitego odłączenia cartridge poprzez zapis dowolnej wartości pod adres z zakresu $D500-$D5FF. Do tego celu został wykorzystany przerzutnik typu D (dwa takie znajdują się w układzie scalonym 74H74). Po włączeniu zasilania przerzutnik jest ustawiany tak aby na jego wyjściu Q pojawiła się logiczna 1. Jest to realizowane poprzez układ RC, składający się z rezystora R1 oraz kondensatora C1. W chwili włączenia zasilania napięcie na kondensatorze jest bliskie zera, co powoduje iż wejście asynchroniczne wejście SET przerzutnika zostaje wyzwolone i na wyjściu Q pojawia się stan 1. Kondensator zostaje naładowany przez rezystor R1 i przerzutnik pozostaje w takim stanie do czasu gdy nastąpi dowolny zapis pod adres $D500-$D5FF. Gdy dojdzie to takiej sytuacji na wyjściu Q przerzutnika pojawia się zero logiczne co powoduje odłączenie cartridge poprzez podanie tego zera na wejścia RD4 oraz RD5. Dodatkowo wyjście Q jest połączone z asynchronicznym wejściem zerującym przerzutnik RESET (aktywne w stanie zero). Następuje swego rodzaju dodatnie sprzężenie zwrotne i przerzutnik pozostaje w tym stanie (Q=0) do momentu wyłączenia zasilania.

Układ odłączania karta zawiera moim zdaniem drobny błąd konstrukcyjny i działa on zapewne przez przypadek :) Mianowicie... do wykrycia zapisu pod adres $D500-$D5FF potrzeba dwóch sygnałów... właśnie ~CCTL, który informuje o pojawieniu się na magistrali adresowej adresu z przedziału $D500-$D5FF, ale do tego trzeba jeszcze określić czy chodzi o odczyt czy o zapis danych. Do tego celu należy wykorzystać sygnał R/~W. Gdy jest on w stanie 1 informuje on nas iż mamy do czynienia z odczytem danych gdy jest on w stanie 0 wiemy iż chodzi o zapis danych. Ten fakt chciał wykorzystać twórca tego cartridge jednak popełnił on błąd. Przerzutnik typu D (taki jak 7474) przepisuje dane z wejścia D na wyjście Q w momencie gdy pojawi się narastające zbocze zegarowe na wejściu CLK. Jednak w tym wypadku sygnał ~CCTL cały czas utrzymuje się w stanie wysokim a jedynie podczas pojawiania się adresów $d5xx przechodzi do stanu niskiego aby zasygnalizować tan fakt. Również w tym momencie sygnał R/~W ma już ustaloną wartość. Nasz przerzutnik nie zapamiętał jeszcze stanu sygnału R/~W bo nie wystąpiło jeszcze żadne narastające zbocze na wejściu CLK (~CCTL jest w stanie niskim). W następnym cyklu na magistrali (gdy już nie ma dostępu do $D5xx) sygnał ~CCTL zmienia wartość z 0 na 1 w właśnie w tym momencie jest zapamiętywana wartość sygnału R/~W... jednak może być ona już nie aktualna... bo powinna ona być zapamiętana przy opadającym zboczu ~CCTL. Więc dlaczego to działa poprawnie? Sądzę iż dzięki opóźnieniom sygnału R/~W, być może jeszcze przez chwilę zachowuje on poprawną wartość którą udaje się zatrzasnąć w przerzutniku :)

*) symbol "~" którego używałem oznacza negację, czyli opis ~CCTL oznacza iż stanem aktywnym tego sygnału jest stan niski (zero logiczne)

Ufff... ale po co ja wam to wszystko opowiadam :) Pewnie i tak nikogo to nie interesuje :) Tak czy inaczej kolejny relikt z naszej przeszłości mógł zostać uratowany z czeluści zapomnienia :)

Wielkie podziękowania należą się dla kolegi Nosty-ego za chęć wypożyczenia tego cartridge do analizy i dokonania dump-a oraz reverse engineering-u :) DZIĘKI WIELKIE NOSTY! :D

pozdrawiam
Seban

2

Moje zaslugi polegajace na wlozeniu go do koperty i pojsciu na poczte wygladaja blado przy tej analizie :)
Fajnie ze sie udalo!

3

Jak to nikogo  nie interesuje..?

4

hej!

No tak naprawdę to napisałem to trochę z ironią :) Miałem nadzieję iż znajdą się ludzie zainteresowani tematem :D I właśnie dla tych ciekawych i dociekliwych to robię (tzn. analizę i reverse engineering tego co mi wpadnie w łapy :) Zresztą moja własna ciekawość też ma w tym udział :) Lubię patrzeć i analizować pracę innych dużo można się dowiedzieć przy okazji takich "wykopalisk" :) To w końcu kawał historii i część mojego dzieciństwa :)

pozdrawiam
Seban

5

Wyjąłeś mi te słowa z ust

6

Seban mistrz, nosty mistrz.

http://img247.imageshack.us/img247/5848/unerringfr8.png

Jak zwykle źródło CDR dostępne na życzenie.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

7

Lekarze kartridźy.....

8 Ostatnio edytowany przez seban (2008-04-17 13:51:23)

Hej!

Tak mi się przypomniało iż Nosty niedawno walczył z przykładowym programem na cartridge i dyskutowana była sprawa inicjalizacji cartrigde. Wspomniane było również iż INIT jest wykonywany przed otwarciem edytora ekranowego i stworzeniem display list... zastanawiano się wtedy co ma to na celu... jak urat w kodzie tego UM Super Cartridge wykorzystano wektor INIT... do czego pewnie jesteście ciekawi :) Już pokazuje:

BBAE    LDA #$40
BBB0    STA $02E4 ;RAMSIZ
BBB3    STA $6A ;RAMTOP
BBB5    RTS

Jak widać w te parę rozkazów obniża RAMTOP i zmniejsza RAMSIZE... robią to po to aby przepisać zawartość carta ($8000-$A000) w miejsce $4000-$7FFF. Potem odłączają cartridge i robią dalej co trzeba. Takie coś powoduje iż pamięć ekranu i DL jest umieszczony poniżej $4000 wiec mogą bez zniszczenia DL ani pamięci obrazu przepisać sobie te 16K w obszar $4000-$7FFF. Czemu tak, a nie inaczej? A to już trzeba by było przejrzeć jakie obszary pamięci wykorzystują loadery i programy zawarte na tym carcie :) Być może obszar $4000-$7FFF nie jest wykorzystany podczas przemieszczania każdego z programów na swoje miejsce (właśnie z tego obszaru).

pozdrawiam
Seban

9

bosz... znowu handlarze cartam... atariage zmienia jezyk na polski?

a tak na serio - czekam az zarowno schemat, jaki cygan trafia do http://www.jsobola.republika.pl/schematy.htm
btw. nowy rom sdx tez by sie tam przydal...

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

10

Hej!

jell ja chyba nie rozumiem o co Ci chodzi :) schemat masz w moim pierwszym poście w dwóch formatach (wektor, raster). A co to jest "jaki cygan" to nie czaję :D Mogę się domyślać że chciałeś napisać "jak i cygan", ale nadal "cygan" jest dla mnie nieidentyfikowalny :)

pozdrawiam
Seban

11

no chwala ci za to ze jest to w pierwszym poscie - poprostu pod wspomnianym adresem jest juz ladne archiwum wszelkich schematow...
a cygan - no, ten, teges - rom.

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

12

Niesamowity sposób formowania myśli

13 Ostatnio edytowany przez Pawex (2016-01-20 13:56:49)

a czy ktoś wie na czym polegała przeróbka magnetofonu wykonywana przez Unerring Master ?
Mam cartridge więc przydałby mi się jeszcze magnetofon do kompletu.

14

W moim magnetofonie, robionym na Żwirki, był dodatkowy przewód owinięty wokół kabla do komputera.
s.

poszukuje kwarcu 14.187576 MHz (CO70034)

15

Mój także miał (a nawet nadal ma :D) poprowadzony dodatkowy przewód.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

16

no tak  ...ale co było w środku?

17

To co w AST?

18 Ostatnio edytowany przez sq7bti (2016-01-22 22:45:23)

chyba tak:

http://www.atari.org.pl/forum/viewtopic … 589#p80589

s.

edit:

szkoda ze zdjecia juz nie sa dostepne: http://www.atari.org.pl/forum/viewtopic … 167#p53167

poszukuje kwarcu 14.187576 MHz (CO70034)