Z80 SIO - dokończenie testów.

  W module MIK1 przetestowałem przesyłanie plików do szybkości 19200 bodów. I8251A radził sobie z odbieraniem dużych plików z jednoczesnym wyświetlaniem ich zawartości. Sprawdźmy, jak poradzi sobie Z80 SIO na dwa razy większej.

i8251A for CA80
Moduł MIK1 RCBus.


Odbiór plików jest możliwy nawet przy 115200 bodach bez bufora kołowego, ale bez jednoczesnego wyświetlania danych. Żeby uzyskać 38400 zamiast generatora 7,3728 MHz zastosujemy 2,4576 MHz.

Checksum error - iLoad Z80 SIO
Pełna wersja iLoad nie działa przy 38400 bodach.


Niestety pierwsza próba zakończyła się błędem sumy kontrolnej już na końcu pierwszego rekordu.

getc iLoad 38400 baud
Zmiana kolejności rozkazów.


Zmieniłem więc kolejność rozkazów w procedurze getc. Najpierw sprawdzam, czy jest nowy znak i próbuję wysłać znak z bufora dopiero wtedy, gdy jeszcze nie przyszedł. Jest nieznaczna poprawa - błąd sumy na końcu drugiego rekordu. Oznacza to, że program zbyt długo przetwarza przychodzące dane. Kolejna optymalizacja to rezygnacja z korekty ewentualnych małych liter na wielkie. Znowu mała poprawa - trzy rekordy bez błędu, ale czwarty od początku źle wygląda. Pozostało jeszcze zrezygnować ze sprawdzania, czy kolejny znak jest cyfrą szesnastkową. 

getNibble iLoad
Rezygnacja ze sprawdzania poprawności znaków.


Teraz cały plik wczytuje się bez błędu. Procesor w czasie testów był taktowany standardową dla CA80 częstotliwością 4 MHz. Wszystkie pliki Intel HEX generowane przez sbasm nie zawierają zbędnych znaków ani małych liter, więc wprowadzone zmiany nie mają wpływu na poprawność transmisji danych. Do ułatwienia pracy posłużyłem się modułem MIK1 i CAFL. Zapisałem w "magnetofonie" okrojoną wersję z kropkami wyświetlanymi po każdym rekordzie skompilowaną od adresu 0xF400 pod nazwą 51 (od nazwy i8251A). Wersje docelowe tworzyłem dla adresu 0xFC00 i zapisałem pod D1 (ten sam sektor co 51) i 42 (od Z84C42). Przy okazji sprawdziłem próbę nadpisania pamięci zajmowanej przez iLoad. 😉

Address violation error

CA80 z CLK 4 MHz odbiera plik z szybkością 38400 bodów.

 


 

Komentarze

Popularne posty z tego bloga

Uruchamiamy CA80 na RCbus.

Magnetofon CA80.