SIO FIFO
From Atariki
Wersja z dnia 15:30, 8 sty 2014 KMK (Dyskusja | wkład) (wstępnie) ← Previous diff |
Wersja z dnia 15:31, 8 sty 2014 KMK (Dyskusja | wkład) Next diff → |
||
Linia 1: | Linia 1: | ||
Rozszerzenie funkcji układu [[POKEY]] skonstruowane przez [[simius]a: dokłada do układu jednobajtowy bufor (FIFO) dla danych odbieranych przez komputer ze [[Gniazdo SIO|złącza szeregowego]]. Pozwala to na znaczne rozluźnienie wymagań co do czasu, w jakim procesor Atari musi odebrać bajt z [[Rejestry POKEY-a#SERIN|rejestru SERIN]] zanim nastąpi jego przepełnienie (serial overrun). | Rozszerzenie funkcji układu [[POKEY]] skonstruowane przez [[simius]a: dokłada do układu jednobajtowy bufor (FIFO) dla danych odbieranych przez komputer ze [[Gniazdo SIO|złącza szeregowego]]. Pozwala to na znaczne rozluźnienie wymagań co do czasu, w jakim procesor Atari musi odebrać bajt z [[Rejestry POKEY-a#SERIN|rejestru SERIN]] zanim nastąpi jego przepełnienie (serial overrun). | ||
- | Np. normalnie uzyskanie transmisji z szybkością 127 kbps wymaga zastosowania własnych procedur szeregowych, działających na zasadzie pollingu, oraz zastąpienia systemowej procedury [[VBL]] znacznie skróconą wersją. Jest to konieczne, gdyż przesłanie bajtu z tą szybkością trwa tylko ok. 140 cykli standardowego zegara 1,773 MHz, a zatem, przy normalnej aktywności układu [[ANTIC]], normalnie działających przerwaniach [[NMI]] i standardowych procedurach transmisji SIO działających na przerwaniach IRQ, procesor nie nadąża z odbiorem i transmisja ulega zerwaniu. Natomiast przy użyciu SIO FIFO można uzyskać stabilny odczyt 127 kbps bez tych wszystkich szykan, wykorzystując procedury transmisji działające na IRQ i bez modyfikacji VBL. | + | Np. normalnie uzyskanie transmisji z szybkością 127 kbps wymaga zastosowania własnych procedur szeregowych, działających na zasadzie pollingu, oraz zastąpienia systemowej procedury [[VBL]] znacznie skróconą wersją. Jest to konieczne, gdyż przesłanie bajtu z tą szybkością trwa tylko ok. 140 cykli standardowego zegara 1,773 MHz, a zatem, przy normalnej aktywności układu [[ANTIC]], normalnie działających przerwaniach [[NMI]] i standardowych procedurach transmisji SIO działających na przerwaniach [[IRQ]], procesor nie nadąża z odbiorem i transmisja ulega zerwaniu. Natomiast przy użyciu SIO FIFO można uzyskać stabilny odczyt 127 kbps bez tych wszystkich szykan, wykorzystując procedury transmisji działające na IRQ i bez modyfikacji VBL. |
Urządzenie ma formę płytki o wielkości 50x21mm i postać podstawki DIL40 pod POKEY. Montuje się ją w miejsce POKEY-a, a sam POKEY umieszcza się w podstawce na płytce. | Urządzenie ma formę płytki o wielkości 50x21mm i postać podstawki DIL40 pod POKEY. Montuje się ją w miejsce POKEY-a, a sam POKEY umieszcza się w podstawce na płytce. |
Wersja z dnia 15:31, 8 sty 2014
Rozszerzenie funkcji układu POKEY skonstruowane przez [[simius]a: dokłada do układu jednobajtowy bufor (FIFO) dla danych odbieranych przez komputer ze złącza szeregowego. Pozwala to na znaczne rozluźnienie wymagań co do czasu, w jakim procesor Atari musi odebrać bajt z rejestru SERIN zanim nastąpi jego przepełnienie (serial overrun).
Np. normalnie uzyskanie transmisji z szybkością 127 kbps wymaga zastosowania własnych procedur szeregowych, działających na zasadzie pollingu, oraz zastąpienia systemowej procedury VBL znacznie skróconą wersją. Jest to konieczne, gdyż przesłanie bajtu z tą szybkością trwa tylko ok. 140 cykli standardowego zegara 1,773 MHz, a zatem, przy normalnej aktywności układu ANTIC, normalnie działających przerwaniach NMI i standardowych procedurach transmisji SIO działających na przerwaniach IRQ, procesor nie nadąża z odbiorem i transmisja ulega zerwaniu. Natomiast przy użyciu SIO FIFO można uzyskać stabilny odczyt 127 kbps bez tych wszystkich szykan, wykorzystując procedury transmisji działające na IRQ i bez modyfikacji VBL.
Urządzenie ma formę płytki o wielkości 50x21mm i postać podstawki DIL40 pod POKEY. Montuje się ją w miejsce POKEY-a, a sam POKEY umieszcza się w podstawce na płytce.
SIO FIFO jest konfigurowalne i można je programowo ustawić w tryb przezroczysty, niezależnie od ustawionej w POKEY prędkości odbioru. Służy do tego nieużywany przez POKEY rejestr $D20C.
Wpis pod ten adres dowolnej wartości ze skasowanym najstarszym bitem (np. zerowanie rejestrów podczas inicjowania systemu) powoduje inicjalizację FIFO (czyli m.in. usunięcie wszystkich zalegających tam danych). Zapis wartości w postaci (binarnie) 10xxxxxx ustawia granicę przestawienia w tryb przezroczysty od wartości AUDF3 określonej przez sześć najmłodszych bitów, czyli $00-$3F. Dodatkowo, jeśli wpisywany bajt ma ustawiony 6 bit, wartość określona sześcioma najmłodszymi bitami zostanie potraktowana jako domyślna. Zatem wpisanie $80 przełączy urządzenie w tryb przezroczysty bez względu na baudrate, a wpisanie $C0 spowoduje, że zawsze będzie w takim trybie wstawało.