1

Witam!
Bardzo proszę osoby znające temat o wyjaśnienie mi kilku kwestii. Otóż jak wiadomo szyna danych jest 16 bitowa, natomiast szyna adresowa 24 bitowa. Ale patrząc na gniazdo carta mamy tam tylko 15 lini adresowych, bez A0 i A16-A23. Dla czego?
Do czego mi to potrzebne? Otóż zbudowałem sobie prostego carta do monitorowania ruchu na liniach adresowych i liniach danych.
http://www.freeupload.pl/image/imgp4138.jpg
Ich stan przesyłany jest w formatach Hex i Bin po USB do terminala w windowsie, działa to całkiem sprawnie, ale mam wrażenie że adresy są błędne właśnie przez brak pełnej szyny adresowej.
Druga sprawa, czy istnieje dokumentacja opisująca sekwencje startową, w jakiej kolejności i do czego odwołuje się procesor po resecie?
Sorry za lamerskie pytania ale po prostu nie wiem tego :(

Falcon030 14MB + CT60; Jaguar + Skunkboard; 65XE + SIO2SD + Ultimate + Stereo + VideoMod; 520STE + 4MB + Ultrasatan + HxC Emulator;  LYNX II + VGA Mod; A2600 + MultiCart; ZX Spectrum 128k +2 + PiocDivSD;  Amiga 600 + 2MB chip + Furia + SD;  C64 "chlebak" + 1541 Ultimate

2

Chyba w Atari compendium było coś o startupie, ale bardzo ogólnie. Możesz np. pogrzebać w hatari, zrobić jakiś dodatkowy logging tego co Cię interesuje.

Co do szyny adresowej to nie za bardzo rozumiem, w czym problem? Jak robiłeś tego Carta to chyba wyczytałeś gdzieś, że adresuje tylko 128KB? :)

What can be asserted without proof can be dismissed without proof.

3

W atari st internals jest kod źródłowy procesu bootowania, możliwe że w profibuchu też (,ale to jest po niemiecku). Obie książki są dostępne w sieci. Na temat f030 nie ma nigdzie dokładnych informacji.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

4 Ostatnio edytowany przez Cyprian (2015-12-12 16:07:16)

rj1307 napisał/a:

Witam!
Bardzo proszę osoby znające temat o wyjaśnienie mi kilku kwestii. Otóż jak wiadomo szyna danych jest 16 bitowa, natomiast szyna adresowa 24 bitowa. Ale patrząc na gniazdo carta mamy tam tylko 15 lini adresowych, bez A0 i A16-A23. Dla czego?
Do czego mi to potrzebne? Otóż zbudowałem sobie prostego carta do monitorowania ruchu na liniach adresowych i liniach danych.

Ich stan przesyłany jest w formatach Hex i Bin po USB do terminala w windowsie, działa to całkiem sprawnie, ale mam wrażenie że adresy są błędne właśnie przez brak pełnej szyny adresowej.
Druga sprawa, czy istnieje dokumentacja opisująca sekwencje startową, w jakiej kolejności i do czego odwołuje się procesor po resecie?
Sorry za lamerskie pytania ale po prostu nie wiem tego :(

Cartrigde może mieć max 128KB w przestrzeni adresowej $FA0000 - $FBFFFF więc dla tego jest tam tylko 15 linii adresowych plus sygnał wyboru jednego z dwóch 64kB banków - ROM3 i ROM4.

Sekwencję startową znajdziesz opisaną np tutaj:
- rozdział "Cartridge Support" http://info-coach.fr/atari/documents/_m … e-V1.1.pdf
- http://www.atarimagazines.com/v4n12/STCartridges.html
- http://www.atari-forum.com/viewtopic.php?t=14086 - tu by zobaczyć grafiki trzeba się zalogować.

Możesz dokładniej opisać swój projekt? Jak dużo próbek adresów łapie? Jaki soft używasz? Itd.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

5

Dzięki wszystkim, trochę mi się rozjaśniło, już wiem że dałem ciała nie uwzględniając wszystkich linii adresowych. Muszę więc podłączyć brakujące sygnały bezpośrednio z płyty, o ile w Falconie będzie to proste poprzez złącze expansion to w STE trzeba dolutować kilka kabli do płyty.
Ale napiszcie mi jeszcze co z A0? Czy ma zawsze stan 0?

Cyprian napisał/a:

Możesz dokładniej opisać swój projekt? Jak dużo próbek adresów łapie? Jaki soft używasz? Itd.

To jest zwykłe narzędzie do szybkiego skontrolowania pracy szyny danych i adresowej, bez podłączania miernika czy oscyloskopu. Nie jest to cart, nic nie robi w systemie, tylko odczytuje stan poszczególnych linii i wysyła do terminala. Wszystkie sygnały odczytywane są przez Atmega128, program łączy je w dwie zmienne typu word - "adres" i "dane", następnie zmienna "adres" jest porównywana z poprzednim odczytem - jeśli jest inna to obie zmienne wysyłane są jako hex i bin po łączu szeregowym do komputera.

Falcon030 14MB + CT60; Jaguar + Skunkboard; 65XE + SIO2SD + Ultimate + Stereo + VideoMod; 520STE + 4MB + Ultrasatan + HxC Emulator;  LYNX II + VGA Mod; A2600 + MultiCart; ZX Spectrum 128k +2 + PiocDivSD;  Amiga 600 + 2MB chip + Furia + SD;  C64 "chlebak" + 1541 Ultimate

6

W 68k nie ma linii A0 bo magistrala ma dwa bajty (16 bitów). Za to procek ma osobne sygnały informujące resztę systemu o tym, na którym bajcie magistrali jest zapis, jeśli to zapis jednego bajtu.

What can be asserted without proof can be dismissed without proof.

7 Ostatnio edytowany przez Cyprian (2015-12-12 20:11:36)

rj1307 zamiast A0 jest UDS i LDS.


Z jaką prędkością twoje urządzenie przesyła dane?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

8

Obawiam się że to urządzenie nie za wiele Ci się zda. Jeżeli system "idzie w krzaki" po kilku/nastu/dziesięciu cyklach to masz niewielkie szanse że tym to jakoś wychwycisz :(

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

9

Cyprian napisał/a:

Z jaką prędkością twoje urządzenie przesyła dane?

Odczyt stanu linii odbywa się co około 0,05us, po wykryciu zmiany i konieczności wysłania danych czas zwłoki do następnego odczytu wynosi 2,5us, tracę wtedy 46 odczytów. Atmega128 pracuje teraz z kwarcem 18.432MHz, wysyłanie danych z prędkością 115200 bps z buforem 255 znaków.

rj1307 zamiast A0 jest UDS i LDS.

Może mi to ktoś wytłumaczyć łopatologicznie w kilku słowach? Na przykładzie?
Chcę uzyskać adres $FFFFFF, czyli binarnie od A23-A0 było by 1111 1111 1111 1111 1111 1111. Ale nie mam A0, więc uzyskam $FFFFFE. Więc jak to działa?

Falcon030 14MB + CT60; Jaguar + Skunkboard; 65XE + SIO2SD + Ultimate + Stereo + VideoMod; 520STE + 4MB + Ultrasatan + HxC Emulator;  LYNX II + VGA Mod; A2600 + MultiCart; ZX Spectrum 128k +2 + PiocDivSD;  Amiga 600 + 2MB chip + Furia + SD;  C64 "chlebak" + 1541 Ultimate

10

$FFFFFE

Na liniach danych będziesz miał 2 bajty
Ten z adresu $FFFFFE i ten z adresu $FFFFFF

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

11 Ostatnio edytowany przez Cyprian (2015-12-13 15:19:24)

sygnały UDS LDS.
Jeśli jest ustawiony UDS to operacja dotyczy starszego bajtu na szynie.
Jeśli jest ustawiony LDS - to chodzi o młodszy bajt.
Ustawione oba - to operacja dotyczy całego słowo (16bit).

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

12

Ok, chyba teraz wiem o co chodzi, czyli ostatni przypadek (UDS i LDS ustawione) pozwoli odczytać tylko parzyste adresy, zgodnie z tym co przeczytałem w sieci?

Należy dodać, że szyna adresowa jest w rzeczywistości 23-bitowa, brakuje najmłodszego bitu. Z tego powodu mikroprocesor może generować („wystawiać”) tylko parzyste adresy. Magistrala danych jest wewnątrz CPU buforowana przez szesnastobitowy bufor, do którego wstępnie odczytywane są dane z pamięci. W przypadku żądania odczytu bajtu spod nieparzystego adresu procesor podejmuje przetwarzanie młodszej części tego bufora, starszej zaś w przeciwnym wypadku. Odczyt słowa spod nieparzystego adresu jest niemożliwy – wymagałoby to obecności dwóch buforów danych i rozłożenia całej operacji na kilka kroków, czego procesor 68000 nie potrafi. Dalsze modele procesorów z tej serii są pozbawione tej niedogodności.

Falcon030 14MB + CT60; Jaguar + Skunkboard; 65XE + SIO2SD + Ultimate + Stereo + VideoMod; 520STE + 4MB + Ultrasatan + HxC Emulator;  LYNX II + VGA Mod; A2600 + MultiCart; ZX Spectrum 128k +2 + PiocDivSD;  Amiga 600 + 2MB chip + Furia + SD;  C64 "chlebak" + 1541 Ultimate

13

Jeśli jest UDS i LDS ustawione to CPU odczytuje 16bitowe słowo z parzystego adresu;
UDS ustawione - bajt z nieparzystego adresu;
LDS ustawione - bajt z parzystego adresu.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org