SIO FIFO
From Atariki
Wersja z dnia 15:31, 8 sty 2014 KMK (Dyskusja | wkład) ← 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. | ||
Linia 5: | Linia 5: | ||
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.