276

(27 odpowiedzi, napisanych Programowanie - 16/32bit)

Niestety, DMA w ST dotyczy tylko FDC i ACSI.

277

(27 odpowiedzi, napisanych Programowanie - 16/32bit)

Cyprian to nie jest nic nowego, za słaby jestem na jakieś ekstra nowości :)
Rozchodzi się mianowicie o kartę Sound Blaster podłączoną do Panther/2. Swego czasu był MilanBlaster (choć nic tam nie działało z SB), więc ja się bawię z Pantherą. W sieci jest sporo źródeł programów. Jak usłyszałem pierwsze dźwięki z Pantery to dłubię dalej. Większość programów przesyła dane z/do karty w trybie DMA, więc o to cały młyn.

Były pewne rozwiązania dla Hadesa więc się pod nie podkleiłem.

Blitter więc odpada, gdyż zaleca się jego usunięcie przy PAK.

278

(27 odpowiedzi, napisanych Programowanie - 16/32bit)

Niby rozumiem co i jak po sobie, ale za nic nie wiem jak z tym wystartować. Zapytałem na atari-forum.com może ktoś coś podrzuci. Jak przesłać przy użyciu DMA dane z adresu do urządzenia ? Czarna magia dla mnie.

EDIT: Ponoć się nie da, zresztą byłoby to logiczne, ze względu na wewnętrzne linie danych którymi połączone są DMA, FDC i złącze ACSI.

279

(27 odpowiedzi, napisanych Programowanie - 16/32bit)

Jest i loader w asemblerze, więc jest co studiować:
https://www.lysator.liu.se/~celeborn/sy … A_LOAD.ZIP

280

(27 odpowiedzi, napisanych Programowanie - 16/32bit)

Dzięki Cyprian, będę próbował. Skoro kiedyś poradziłem sobie z XBRA, to może i tu się uda :)
To ma być karta która jeszcze z Atari nie działała. Zbieram informacje i napiszę dokładnie o co mnie chodzi.

Znalazłem jeszcze to:
https://mikro.naprvyraz.sk/docs/ST_E/DMA_HDD.TXT

281

(27 odpowiedzi, napisanych Programowanie - 16/32bit)

Cyprian napisał/a:

Jeśli chodzi o DMA może być użyte do czegokolwiek co wymaga strumieniowania danych (w paczkach o wielkości wielokrotności 16 bajtów). Kwestią do zweryfikowania jaką prędkość może uzyskać -2MB/s czy 4MB/s. Z tego co pamiętam to cykl DRQ ma 250ns czyli teoretycznie 4MB/s.

No właśnie chodzi mi o "cokolwiek" co by chciało przesyłać dane bezpośrednio do pamięci, bez udziału procesora.
W profilbuch-u piszą tylko tyle:
"Projektanci ATARI ST postawili obok procesora energicznego pomocnika, który nie ma zbyt dużej „inteligencji”, ale potrafi działać naprawdę szybko.
Jest to jednostka DMA, która została również specjalnie opracowana przez ATARI dla serii ST. Używając DMA = Direct Memory Access (w języku niemieckim, na przykład: bezpośredni dostęp do pamięci głównej) możliwe jest przesyłanie dużych ilości danych do iz urządzeń peryferyjnych, takich jak dyskietki i stacje dysków twardych, bez objazdów przez procesor i jego rejestry. Blok DMA może uzyskać dostęp do pamięci RAM na równi z procesorem. Kto pierwszy przyjdzie, może uzyskać dostęp do danych!
Transfer danych z turbosprężarką
ST wykorzystuje moduł DMA do obsługi kontrolera dyskietek (FDC) i tak zwanego ACSI (ATARl Computer System Interface).Przepływ danych do i z kontrolera dyskietek może odbywać się z prędkością do 500 kbit / drugi przepływ”, chociaż wbudowany FDC może obsłużyć tylko prędkość transferu 250 kbit/s. ACSI to 8-bitowa magistrala do podłączania szybkich urządzeń peryferyjnych, takich jak B. dysk twardy lub drukarka laserowa. Szybkość przesyłania danych wynosi co najmniej 8 Mbit / s (z dyskiem twardym ok. 12 Mbit / s jest nadal możliwe, jeśli urządzenie peryferyjne jest z nim dostarczane!).
Sam procesor spociłby się i nie miałby czasu na inne „hobby”. Korzystając z jednostki DMA, konieczne jest teraz tylko odpowiednie „informowanie” go, gdzie dane, które mają być transportowane, są przechowywane lub pobierane w pamięci RAM (adres początkowy) i ile danych (bloki po 512 bajtów każdy) jest przesyłanych do lub z urządzenie peryferyjne powinno być.
Aby jednostka DMA mogła w ogóle pracować efektywnie, jest przeznaczona do przesyłania bloków danych o wielkości 512 bajtów (w przypadku ST sensowne jest przesyłanie rozmiaru sektora danych na dysku) lub jego wielokrotności.
Dalsze przetwarzanie transferu danych zależy teraz od jednostki DMA, dzięki czemu procesor może być zajęty innymi zadaniami (niestety TOS nie korzysta z tej opcji!).
Wystarczy połowa
Jak pokazuje schemat blokowy, 16-bitowa magistrala danych pamięci głównej jest zredukowana do 8-bitowej magistrali danych przez jednostkę DMA. Jednostka DMA automatycznie konwertuje 16-bitowe słowo danych na dwa kolejne 8-bitowe słowa danych. 16-bitowa magistrala po stronie urządzeń peryferyjnych również nie jest konieczna. ponieważ kontroler dyskietek (FDC) ma tylko 8-bitową magistralę danych.
Połączenie ACSI ma również szerokość tylko 8 bitów, ponieważ jest oparte na popularnej magistrali SCSI (SCSI = Small Computers System Interface).
Jednostka DMA ma pięć wewnętrznych rejestrów, które mogą być używane do sterowania transferem danych do/z kontrolera dyskietek i szyny ACSI. 32-bajtowy bufor oparty na zasadzie FIFO (First In, First Out = dane wprowadzone jako pierwsze są również pobierane jako pierwsze) w jednostce DMA przejmuje buforowanie między pamięcią główną a kontrolerem dyskietek / magistralą ACSI.
Ponadto 16-bitowe słowo danych jest konwertowane na dwa 8-bitowe słowa danych i odwrotnie.
Należy zauważyć, że transfer między jednostką DMA a pamięcią główną ma miejsce tylko wtedy, gdy bufor FIFO jest zapełniony w ponad połowie. Jednostka DMA następnie próbuje przejąć kontrolę nad magistralą i przesłać 16 bajtów. Transmisja odbywa się zawsze w seriach po 16 bajtów! W przypadku transferów danych w rozmiarze sektora (512 bajtów) nie trzeba przywiązywać do tego zbytniej uwagi.
Jeśli jednak chcesz odczytać mniej niż jeden sektor (512 bajtów) z dysku, np. Na przykład tylko pola adresowe (które mają tylko 6 bajtów) powinny być odczytywane co najmniej trzy z tych pól, aby uzyskać liczbę bajtów większą niż 16. W przeciwnym razie odczytane dane utkną w buforze FIFO, a po pozornie poprawnie wykonanej operacji DMA będziesz zaskoczony, że żadne dane nie dotarły do pamięci głównej.
Jak pokazano na rysunku 1.13, można z grubsza wyobrazić sobie wewnętrzne działanie jednostki DMA w ST.
Dostęp jest sygnalizowany do układu kontrolera dyskietek za pośrednictwem linii FDCS (wybór kontrolera dyskietek). Linie CA 1 / CA2 służą jako linie adresowe do wyboru rejestru w układzie FDC lub do sygnalizacji bajtu rozkazu na szynie ACSI.
Jak widać, stan linii R/W na wejściu jednostki DMA decyduje o tym, czy uzyskiwany jest dostęp do rejestru trybu DMA czy rejestru statusu DMA. Rejestr statusu DMA może być tylko odczytywany, a rejestr trybu DMA może być tylko zapisywany. Oba rejestry można znaleźć w przestrzeni pamięci ST pod tym samym adresem!
Bit 4 w rejestrze trybu DMA może być używany do kontrolowania, czy należy uzyskać dostęp do rejestru dostępu kontrolera, czy rejestru licznika sektorów. Te dwa rejestry mogą być zapisywane i odczytywane, a także zajmują tylko jeden adres."

282

(27 odpowiedzi, napisanych Programowanie - 16/32bit)

W dokumentacji można przeczytać:
"Programowanie DMA
Ta sekcja zawiera informacje na temat programowania układu DMA (Direct Memory Access). Zauważ, że opisujemy DMA jako jeden chip, ale w praktyce zaangażowanych jest kilka chipów (DMA, MMU i Glue dla STF i DMA, MCU dla STE), ale nie jest to istotne z punktu widzenia programowania. W przypadku użycia w kontekście Atari ST i jego wysokowydajnych urządzeń peryferyjnych (FD, HD, CD ...) DMA odnosi się do bezpośredniego przesyłania danych między urządzeniem peryferyjnym a pamięcią komputera bez bezpośredniej interwencji procesora.
Gdy program działający na komputerze Atari ST wymaga danych z urządzenia peryferyjnego podłączonego do kanału DMA (bezpośrednio lub przez magistralę ACSI) lub musi przesłać dane do urządzenia, program musi wykonać następujące podstawowe czynności:
1. Ustaw początkową lokalizację pamięci Atari ST dla danych DMA, które mają być wysyłane lub odbierane.
2. Ustaw licznik DMA. Liczba ta jest (co najmniej) całkowitą liczbą 512-bajtowych bloków, które mają być wysłane do lub odebrane z pamięci Atari ST.
3. Ustaw kierunek przepływu danych. Jest to realizowane przez ustawienie bitu odczytu/zapisu DMA na 0 dla odczytu z urządzenia peryferyjnego i 1 dla zapisu do urządzenia.
4. Wpisz polecenie do wykonania do urządzenia peryferyjnego i poczekaj na zakończenie polecenia.
5. Wybierz źródło DMA (zewnętrzne lub wewnętrzne). Tutaj odbywa się DMA, a urządzenie peryferyjne wskazuje na zakończenie.
6. Sprawdź stan urządzenia pod kątem błędu. Jeśli nie wystąpił żaden błąd, dane są teraz poprawnie umieszczane w urządzeniu peryferyjnym lub pamięci Atari ST (w zależności od tego, czy wysyłasz je do urządzenia peryferyjnego, czy odbierasz z niego)."

Fizycznie oznacza to (kontrolery IDE) podpięcie do pinu DRQ (Data Request). Ale jak to się dalej odbywa, czy DMA jest tylko dla nośników danych, czy jakieś inne "dodatki" mogą też używać ? A co z pinem ACK ? Może ktoś ma jakiś przykład w C.

EDIT: Źle napisałem, kontrolery IDE są podpięte do IRQ.

283

(734 odpowiedzi, napisanych Kolekcjonowanie)

Zapytaj, choć wątpię. Ciekawsze już poznikały :) Pierwotnie chciałem płytę od TT-tki.
Dwa lata temu pytałem (i już nie było) o:
1040STE / 4160STE Bare / Unpopulated (No components) printed circuit board.

284

(734 odpowiedzi, napisanych Kolekcjonowanie)

Pewnie tak. Odnośnie właściciela BE można poczytać na forach. Przypuszczam, że jeszcze 2-3 pytania z mojej strony i trafiłbym na czarną listę. I tak jestem zadowolony, że przyszły 2 płyty, gdyż początkowo (ze względu na różne rozmiary) zdawało się, że będzie to problem nie do przeskoczenia :)
Ostatecznie jestem mega zadowolony i złego słowa nie mogę powiedzieć :)

285

(734 odpowiedzi, napisanych Kolekcjonowanie)

Musiałbym mieć skaner A2 (A3 - chyba trochę by brakło):)
1 New Blank / Bare Atari Mega 4 PCB motherboard   U$D    49.95
1 New Blank / Bare Atari 1040ST 1 Meg PCB             U$D    39.95
najdroższa była wysyłka :)

286

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

VLX napisał/a:
#include <ext.h>
delay( ile_milisekund );

Faktycznie jest delay, choć dodałem i dalej mam komunikat "undefined...".

287

(734 odpowiedzi, napisanych Kolekcjonowanie)

Najlepszy prezent na święta jaki można sobie zrobić :) Taki powrót do przeszłości :)
http://artik-wroc.pl/pliki/best.jpg

288

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

SLEEP też nie ma :( Jedyne co znalazłem to evnt_timer, ale użycie ego jest dla mnie zbyt skomplikowane.

EDIT: Zrobiłem tak:
https://www.geeksforgeeks.org/time-delay-c/
choć nie wiem czy na Atari rozdzielczość też jest 1ms.

289

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

Dzięki, Chyba się już w tym połapałem.

Jeszcze pytanko, czy jest jakiś odpowiednik dosowego DELAY ? Tak, aby opóźnić program o 1 milisek.

290

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

A co gdy muszę sprawdzić czy adres jest większy/mniejszy od innego, lub muszę zwiększyć adres (nie wartość pod adresem) o np. 0x100 ?

Właśnie,,, są jakieś ?
Jak odczytać/zapisać bajt z dowolnego adresu w PureC ? Takie PEEK/POKE z GFA :)

292

(54 odpowiedzi, napisanych Sprzęt - 16/32bit)

1. Adam Klobukowski - 1 szt. (ST,STe)
2. Sikor - 1 szt. (STe)
3. Lopez - 1szt. (ST, STe) - zależnie od litości $$ którą trzeba by zapłacić :)
4. PrzemasIII 1 szt. (ST,STe) też zależy od ceny
5. szymonu - 1 szt STe
6. dely - wariant MegaBUS.
7. davemacblack - 1 szt. (ST, STe)
8. artik-wroc - 1szt MegaBUS

293

(734 odpowiedzi, napisanych Kolekcjonowanie)

Dodaje złącze :)
" GTI GmbH Berlin ze swoim najnowszym produktem, IEC-Bus-Interface MEGA 488 ST, uwzględnia ten rozwój (Bus lub HP-IB). Tutaj powstał zespół. który zamienia komputer w kontroler, mówcę i słuchacza ze wszystkimi funkcjami interfejsu standardu magistrali IEC IEEE-488-1978"
"Berlińskie Towarzystwo Informatyki Technicznej (GTI) obniżyło cenę swojego interfejsu magistrali IEC CONTROLLER 488 ST / RS od 1 stycznia. W przyszłości inteligentny interfejs będzie wyposażony w rozbudowane oprogramowanie operacyjne, które umożliwi podłączenie urządzenia do interfejsu MIDI lub RS232C. Aby skonfigurować urządzenie, wystarczy wstawić tylko dwa mostki. Szybkości przesyłania i format przesyłania są ustawiane automatycznie. Nowa cena sprzedaży wynosi teraz 1795,50 DM."
Ja akurat lubię MegaST i zbieram doń karty.

EDIT: Znalazłem opis karty w c't magazin. Są też dwa listingi programów, więc jak będzie czas (kiedyś) to się pobawię. Jak tylko coś potłumaczę to wrzucę info na stronę. Ot taka ciekawostka.
http://artik-wroc.pl/pliki/iec.png
http://artik-wroc.pl/pliki/iec2.png
http://artik-wroc.pl/pliki/iec3.png

294

(734 odpowiedzi, napisanych Kolekcjonowanie)

Karta do MegaST.
http://artik-wroc.pl/pliki/ieee.jpg
i książka, wydrukowana i ładnie oprawiona :)

295

(13 odpowiedzi, napisanych Sprzęt - 16/32bit)

Dioda od spodu płyty i masz 12V w krótkim ST. Ja tak miałem.

296

(734 odpowiedzi, napisanych Kolekcjonowanie)

Niby małe a cieszy :)
http://artik-wroc.pl/pliki/pendrive.jpg

EDIT: Pospolite pendrive'y, nie mylić z tymi oryginalnymi od PONG'a :)

297

(0 odpowiedzi, napisanych Software, Gry - 16/32bit)

Mam takie pytanka, może ktoś mi pomoże.
Taki fragment:

 dsack1.OE = VCC;
 dsack1    = as_20 * cyc_00 * dsack
           + as_20 * cyc_00 * dsack1;

 dsack <-  as_00 * !dsack *  q1 *  q0 * as_20 *  rd
        +  as_00 * !dsack *  q1 * !q0 * as_20 * !rd;

jeżeli w dokumentacji jest informacja, że "<-" oznacza wyjście trójstanowe, a "=" wyjście kombinacyjne, to dlaczego .OE występuje przy dsack1, a nie przy dsack? Próbuję to zrozumieć.

Tak będzie to bramka NAND ?

/wyjscie = wejscie1 * wejscie2 * wejscie3

298

(0 odpowiedzi, napisanych Sprzęt - 16/32bit)

Chciałem użyć zasilacz Mean Well, ale ten nie ma sygnału "Power Good". Czy wystarczy podać 5V na ten pin ?

Sam chyba sobie odpowiem. W specyfikacji zasilacz od TT jest informacja, że sygnał pojawia się po 100ms, ale nie dłużej niż 500ms.

299

(10 odpowiedzi, napisanych Sprzęt - 16/32bit)

Nie jest to przypadkiem oczekiwanie na dysk (zainicjowanie się dysku a'la Megafile). Do jednoczesnego włączania komputera i dysku.

300

(251 odpowiedzi, napisanych Fabryka - 16/32bit)

Ja mam, ale czy on jest czytelny :)