SIF-Talk

Z diskuze se Suksoftem vyplynula potřeba nějakého demonstračního programu, kterým by bylo možné propojit dva počítače ZX Spectrum a posílat data mezi nimi. Jedním z nápadů byla tahová hra, druhým nápadem malý komunikační program. Nazval jsem ho SIF-Talk.

Cílem tedy nebylo ani tak stvořit dokonalý program pro posílání zpráv mezi dvěma počítači, jako spíš ukázat, že to jde a využít při tom SIF.

Co to umí?

Posílat a přijímat zprávy. Obojí se zobrazuje nad editační oblastí.

Chtěl jsem, aby používání programu bylo v rámci zvyklostí počítačů Sinclair přirozené a minimalistické. Vzpomněl jsem si na program talk, který jsem někdy viděl na Linuxu a bylo možné jím komunikovat mezi dvěma přihlášenými lokálními uživateli a některé další programy jemu podobné.

ZX Spectrum má textové rozlišení pouze 24x32 znaků a tento malý prostor jsem musel nějak rozdělit. Omezení délky zprávy na 128 znaků a dovoluje pro editaci používat pouze 4 řádky i když je editovaná zpráva zobrazená celá. Po pár experimentech se ukázalo 128 znaků být dostačující a zároveň mi to citelně usnadnilo programování editoru zprávy. Uživatel může zprávu editovat libovolně, dokud není připraven stiskem ENTERu zprávu odeslat.

Odeslaná zpráva, nebo zpráva mezitím přijatá, se objeví nad editační oblastí. Zprávy odeslané jsou označené světle bílým pozadím znaku >, zprávy přijaté pozadím žlutým. Zpráva delší než 32 znaků se bude na konci řádku zalamovat a řádky se skrolují nahoru, čímž vzniká jakási velmi stručná, ale přeci jen historie. Na rozdíl od SIFTermu se ale v této historii nedá vracet víc do minulosti, tentokrát je pouze v 19 řádcích na obrazovce a i po návratu do hlavního menu se zapomene.

Chtěl jsem, aby program perfektně zapadl do prostředí a nelišil se příliš od BASICového editoru, proto program používá font ze ZX ROM, stejné kurzory, stejné klávesové echo. Ale zároveň, aby výpis byl rychlý, použil jsem vlastní optimalizované podprogramy pro výpis textu na obrazovku, scroll... Čtení klávesnice jsem převzal ze Spectral Writeru. Využívá IM1 a zpracování kláves nechává na podprogramu ZX ROM. Tím se do značné míry pokouším zbavit problémů s kompatibilitou vícevrstvých membrán a zároveň se tím řeší přepínání režimů klávesnice a autorepeat.

foto

Nastavení SIFu

Nastavení SIFu je taktéž minimalistické. Dají se nastavit různé rychlosti, různé parity a zvolit 1 nebo 2 stop bity. Komunikovat lze buď po drátech s řízením toku dat pomocí CTR, RST, nebo s řízením Xon, Xoff, nebo bezdrátově blikat infraportrem s řízením toku dat pomocí Xon Xoff (bude-li fungovat). A to je vše. Víc detailů nastavení by bylo zbytečných.

Ideální je řízení toku dat CTS, RTS. A samozřejmě na obou komunikujících počítačích musí být sériový port nastavený stejně. Není-li nastavení identické, mohou přicházet nesmyslná data, nebo nebude fungovat řízení toku dat...

Návrat do hlavního menu je možný stiskem CAPS SHIFT + 1 (EDIT).

Komunikační protokol

SIF Talk vysílá a přijímá jednoduché malé pakety. začíná kódem 27 (ESC), následuje jeden byte určující počet bytů, které přijdou po něm v nichž je textová zpráva ukončená kódem 13 (CR) a dva byty kontrolního součtu CRC16-CCITT.

Přijímající SIF Talk čeká na data přijatá UARTem a přečte je, když najde kód 27 zahájí příjem packetu, jinak do té doby všechna přicházející data ignoruje. Po přijetí 27 očekává délku, která musí být v rozsahu 3 až 131, pak teprve přijímá textovou zprávu. Po dokončení příjmu zkontroluje CRC a když je CRC přijaté zprávy shodné s vypočteným, zprávu zobrazí. Pokud je něco špatně, zobrazí místo textové zprávy popis chyby.

Zatuhlo to při odeslání první zprávy

Program pravděpodobně čeká až bude přijímací strana připravena přijímat. Dá se přerušit stisknutím BREAKu.

Proč program nepracuje se softwarovou RS232?

Protože program SIFtalk spoléhá na buffer v UARTu 16C650 a na UARTem prováděné řízení toku dat. Se softwarovou RS232 by to bylo mnohem obtížnější, ne-li nemožné.

TODO:

Vylepšit komunikaci, pokusit se zvýšit četnost čtení dat z FIFO UARTu, ideálně číst data během vysílání, tím redukovat riziko, že obě strany začnou vysílat současně a uzamknou se navzájem.

Download

Související odkazy

Historie změn článku

  • 2023-12-23 - Zveřejněno.

[ Zpět na hlavní stránku ]

Tento web je převážně o ZX Spectru, kompatibilních počítačích a jiném zajímavém hardwaru. Naleznete-li chybu, nebo byste rádi cokoliv co s tímto souvisí, můžete mi napsat email. Stručně o mém webu zde.