1 Ostatnio edytowany przez artik-wroc (2021-11-12 12:54:09)

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.

Było miło :) Do widzenia.

2 Ostatnio edytowany przez Cyprian (2021-11-12 13:25:16)

Ze znanych urządzeń które można podłączyć do Atari poprzez port ACSI są to: skanery, drukarki, dyski hdd i wymienne, CD/DVD
Z tego co pamiętam CosmosEx podłączany po ACSI oferuje jeszcze: zdalny pulpit, karta sieciowa (STiNG)

Czy chodzi Tobie tylko o kanał DMA poprzez port ACSI? Bo ten port ma dwa tryby pracy DMA oraz PIO.

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.

Wiem że kontrolery IDE, które są podpięte bezpośrednio pod CPU (czyli nie korzystają z DMA), mogą być podłączone do przerwania w porcie ACSI by sygnalizować koniec transmisji danych.


Tutaj jest fajna instrukcja programowania ACSI:
https://info-coach.fr/atari/documents/_ … amming.pdf

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
Cyprian napisał/a:

Wiem że kontrolery IDE, które są podpięte bezpośrednio pod CPU (czyli nie korzystają z DMA), mogą być podłączone do przerwania w porcie ACSI by sygnalizować koniec transmisji danych.

Kontrolery IDE do ST podpinane pod procesor dzialaja wylacznie w trybie PIO.

Pomijajac potencjalnie MagiC, nic nie wykorzysta DMA (w systemie), a i szybsze od PIO to tez nie bedzie.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

4

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."

Było miło :) Do widzenia.

5

artik-wroc napisał/a:

No właśnie chodzi mi o "cokolwiek" co by chciało przesyłać dane bezpośrednio do pamięci, bez udziału procesora.

Tutaj jest drugi ciekawy dokument o programowaniu DMA/ACSI.
Od strony 20stej jest pokazany kod asemblera podzielony na poszczególne kroki:
http://fr.meric.free.fr/Technique/Hardw … 8-1991.pdf

Rzuć okiem czy to będzie ok.

Przychodzi mi do głowy jeszcze jedno źródło wiedzy - EmuTOS.

Swoją drogą, chcesz odczytać dane z gotowego urządzenia zewnętrznego (takiego które już działało z ST) czy może robisz od coś swojego?

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

6 Ostatnio edytowany przez Cyprian (2021-11-12 18:14:41)

Tutaj przykład z CosmosEx.
Funkcja "acsi_cmd" wpierw wysyła w trybie PIO komendę do urządzenia, następnie odbiera/wysyła pakiet danych ale już przez DMA ("start DMA transfer"):
https://github.com/atarijookie/ce-atari … onf/acsi.c

Wydaje mi się że oprócz samego przesyłania komend / danych to trzeba wpierw odpytać jakie urządzenia są podłączone do ACSI.

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

7 Ostatnio edytowany przez artik-wroc (2021-11-12 22:05:58)

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

Było miło :) Do widzenia.

8

brzmi ciekawie,

ten dokument jest spoko, na liście EmuTOS albo Hatari czytałem że w pewnych sytuacjach rejestry ff8604/ff8606 muszą być zapisywane na raz - jednym długim słowem. Nie ma tego w dokumencie Mikro ale jest w tych PDFach które zapodałem.

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

9

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

Było miło :) Do widzenia.

10 Ostatnio edytowany przez Cyprian (2021-11-12 22:43:55)

Fajny kod ale jakby co to jest to ładowanie DMA ale z dyskietki.


Tutaj jest kod w asemblerze który ładuje bootsektor ale z urządzenia podłączonego do ACSI:

Strona 65
http://www.bitsavers.org/pdf/atari/ST/A … M_0087.pdf

Tutaj to samo w wersji TXT. Wiersz "2639     DMA Bus Boot Code":
https://github.com/ragnar76/emutos/blob … c/bios.txt

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

11

Adam Klobukowski napisał/a:
Cyprian napisał/a:

Wiem że kontrolery IDE, które są podpięte bezpośrednio pod CPU (czyli nie korzystają z DMA), mogą być podłączone do przerwania w porcie ACSI by sygnalizować koniec transmisji danych.

Kontrolery IDE do ST podpinane pod procesor dzialaja wylacznie w trybie PIO.

Pomijajac potencjalnie MagiC, nic nie wykorzysta DMA (w systemie), a i szybsze od PIO to tez nie bedzie.

Na Falconie czy TT faktycznie PIO będzie szybsze niż DMA (SCSI/ACSI) ale nie na ST. 68000 nie prześcignie 2MB/s DMA (albo nawet 4MB - to jest do weryfikacji), no chyba że to będzie ST z 68030.

MagiC wspiera 'Background DMA' ale MiNT chyba też?

W zwykłym TOS też da się 'odzyskać' moc procesora w trakcie odczytu z dyskietki/HDD ACSI, bo procesor większość czasu spędza w pętli czekając na zakończenie transferu DMA. Wystarczy swój proces uruchamiać na przerwaniach.

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
Cyprian napisał/a:
Adam Klobukowski napisał/a:

Kontrolery IDE do ST podpinane pod procesor dzialaja wylacznie w trybie PIO.

Pomijajac potencjalnie MagiC, nic nie wykorzysta DMA (w systemie), a i szybsze od PIO to tez nie bedzie.

Na Falconie czy TT faktycznie PIO będzie szybsze niż DMA (SCSI/ACSI) ale nie na ST. 68000 nie prześcignie 2MB/s DMA (albo nawet 4MB - to jest do weryfikacji), no chyba że to będzie ST z 68030.

Realnie, ST wyciąga coś koło 1.2MB z DMA. Coś kiedyś (chyba) ppera pisał o możliwej prostej modyfikacji do podbicia tego nieco, było to w konteście playera filmów na ST.

Cyprian napisał/a:

MagiC wspiera 'Background DMA' ale MiNT chyba też?

MiNT wspiera 'w teorii'. Jest od tego API, ale do niczego nie przypięte, więc nic tego nie używa. MagiC wspiera tylko w parze z Hddriverem i mają do tego jakiś nieudokumentowaną funkcję XHDI.

Cyprian napisał/a:

W zwykłym TOS też da się 'odzyskać' moc procesora w trakcie odczytu z dyskietki/HDD ACSI, bo procesor większość czasu spędza w pętli czekając na zakończenie transferu DMA. Wystarczy swój proces uruchamiać na przerwaniach.

No tak, ale mieszanie z przerwaniami i równoczesne IO to proszenie się o kłopoty. Różne drivery hdd różnie z tym działają.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

13 Ostatnio edytowany przez Cyprian (2021-11-13 15:44:53)

Adam Klobukowski napisał/a:

Realnie, ST wyciąga coś koło 1.2MB z DMA. Coś kiedyś (chyba) ppera pisał o możliwej prostej modyfikacji do podbicia tego nieco, było to w konteście playera filmów na ST.

W sumie to maksymalna prędkość jest taka jaką oferuje urządzenie końcowe, aktualnie jest to 1,2MB/s dla CosmosEx, a kiedyś 300kB/s z Megafile czy Satandiskiem :)

Pamiętam że w latach '90 była fama że DMA jest taktowane zegarem 10MHz, co dawałoby właśnie transfer na poziomie 1,25MB/s.
Technikalia są jednak takie że DMA taktowane jest zegarem systemowym 8MHz, ładuje/zapisuje dane z pamięci do swoich buforów FIFO z prędkością 4MB/s (konkretnie to 2MHz słowami 16bit), a na zewnątrz sygnały ACSI 'migają' 250ns (4MB/s).

PPera w kontekście filmów pisał o modyfikacji ale portu Cartridge: https://atari.8bitchip.info/movpst.php
Na swoim już nieistniejącym forum robił testy ACSI, podawał timing. Tutaj jest info o ACSI i 2MB/s  https://atari.8bitchip.info/astide.php

Adam Klobukowski napisał/a:
Cyprian napisał/a:

MagiC wspiera 'Background DMA' ale MiNT chyba też?

MiNT wspiera 'w teorii'. Jest od tego API, ale do niczego nie przypięte, więc nic tego nie używa.

ok, nie wiedziałem tego. Do tej pory myślałem że program który ładuje dane z dysku do pamięci nie blokuje innych działających aplikacji.


Adam Klobukowski napisał/a:
Cyprian napisał/a:

W zwykłym TOS też da się 'odzyskać' moc procesora w trakcie odczytu z dyskietki/HDD ACSI, bo procesor większość czasu spędza w pętli czekając na zakończenie transferu DMA. Wystarczy swój proces uruchamiać na przerwaniach.

No tak, ale mieszanie z przerwaniami i równoczesne IO to proszenie się o kłopoty. Różne drivery hdd różnie z tym działają.

Z tego co wiem to nie ma nic złego w używaniu przerwań podczas IO. Znane mi systemy operacyjne na duże Atari używają przerwań podczas IO - VBL oraz TimerC, ze znanego mi oprogramowania są to też różne playery modów, YM czy midi, programy D2D (chociażby Cubase Audio).

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
Cyprian napisał/a:
Adam Klobukowski napisał/a:

No tak, ale mieszanie z przerwaniami i równoczesne IO to proszenie się o kłopoty. Różne drivery hdd różnie z tym działają.

Z tego co wiem to nie ma nic złego w używaniu przerwań podczas IO. Znane mi systemy operacyjne na duże Atari używają przerwań podczas IO - VBL oraz TimerC, ze znanego mi oprogramowania są to też różne playery modów, YM czy midi, programy D2D (chociażby Cubase Audio).

Chodziło mi o mieszanie z przerwaniami przez programy - właśnie dlatego że TOS i drivery też ich w tym momencie używają.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

15 Ostatnio edytowany przez artik-wroc (2021-11-14 11:00:47)

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.

Było miło :) Do widzenia.

16 Ostatnio edytowany przez Cyprian (2021-11-14 13:51:34)

@artik-wroc
"The device is NOT connected to ACSI" - źle zrozumiałem, myślałem że chodzi o ACSI :)

W ST kostka DMA jest dedykowana do dyskietek, oraz urządzeni podpiętych do ACSI. (Inne DMA wbudowane w MMU jest do obrazu, odświeżania pamięci a w STE samplii)

Tak jak @simonsunnyboy napisał, do urządzeń zmapowanych w pamięci, jak IDE, można użyć BLiTTER jako DMA, sterownik PPery tak robi.

Napisz coś więcej o Twoim urządzeniu.

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

17 Ostatnio edytowany przez artik-wroc (2021-11-14 21:08:18)

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.

Było miło :) Do widzenia.

18

Wydaje mi się, że w przypadku Panther/2 nie ma jak zrobić do karty DMA. Na PC w przypadku ISA jest dedykowany chip DMA w chipsecie płyty. W przypadku PCI to działa trochę inaczej - karty mogą same inicjować dostęp. Niestety w przypadku Panther/2 nie ma w ST hardwareu żeby taki transfer wykonać.

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

19

Niestety, DMA w ST dotyczy tylko FDC i ACSI.

Było miło :) Do widzenia.

20 Ostatnio edytowany przez Cyprian (2021-11-14 21:55:30)

można by dodać takie samo dma jakie jest do obsługi ISA w PC - 8237A, ale pytanie czy Panther ma podpięte odpowiednie ścieżki do obsługi dma.
Jakiś czas temu weryfikowałem temat przerwań no i nie wszystkie adaptery ISA dla ST miały podpięte sygnały IRQ.

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

21

Sygnałów DMA nie ma. Przerwania są 10 i 11.

Było miło :) Do widzenia.

22

Dodać układ DMA z PC? Raczej czarno to widzę.

Może zainteresuj się podłączeniem Gravis Ultrasound? Ta karta ma wewnętrzny RAM i przy odtwarzaniu sampli wykonuje DMA z tego RAM-u. Ładowanie sampli odbywa się normalnie przy użyciu procesora.

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

23 Ostatnio edytowany przez Cyprian (2021-11-15 10:52:40)

są też wersje Sound Blaster z portem ISA, wewnętrzną pamięcią RAM dla sampli oraz procesorem DSP

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

24

Będę działał, mam zestaw kart muzycznych ISA :)

Było miło :) Do widzenia.

25

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.

Wracając jeszcze do prędkości portu ACSI, tutaj Pera Putnik wyciska 1921 KB/s ze swojej przejściówki ACSI-Compact Flash:
http://atari.8bitchip.info/astide.php
Całkiem zacnie jak na sprzęt z 1985 roku

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