SIO FIFO

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 15:30, 8 sty 2014
KMK (Dyskusja | wkład)
(wstępnie)
← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(link do $D20C)
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 256-bajtowy 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.
-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.+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 [[Rejestry POKEY-a#D20C|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. 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.

Aktualna wersja

Rozszerzenie funkcji układu POKEY skonstruowane przez simiusa: dokłada do układu 256-bajtowy 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.

Zobacz też

Personal tools