Název SpeccyWeb může některým pamětníkům znít povědomě. Dříve se tak jmenovala naše webová stránka, takže by se nabízelo napsat něco vznešeného o návratu ke kořenům, starých časech a nostalgii. Jenže tentokrát nejde o žádné obřadné zapalování retro svíček. SpeccyWeb je totiž nový program - textový webový prohlížeč pro ZX Spectrum Next. Nejde o klasický moderní browser v dnešním slova smyslu, který by přímo vykresloval HTML, CSS, obrázky a JavaScript, ale o praktický a hodně speccy přístup k prohlížení webu na reálném osmibitovém stroji. Speccy používá 80sloupcový tilemap textový režim ZX Spectrum Next a přes ESP8266 WiFi modem komunikuje se serverovým PHP proxy skriptem, který běžné webové stránky zjednoduší do textového formátu vhodného pro zobrazení na Nextu.
Hlavní myšlenka programu je jednoduchá: samotný ZX Spectrum Next nemusí řešit složité parsování dnešního webu, certifikáty, HTML strukturu ani moderní layout. Místo toho pošle požadavek na proxy server, který webovou stránku stáhne, převede ji do jednodušší podoby a vrátí výstup připravený pro zobrazení na obrazovce Nextu (proxy je napsaná v PHP a nikde nic neukládá). Po spuštění nabídne SpeccyWeb úvodní obrazovku s několika přednastavenými stránkami. V aktuální verzi jsou v programu připravené odkazy na specnext.com, speccy.cz a mb-maniax.cz - což se samozrejmě změní (v plánu mám, že se tam budou zobrazovat bookmarky, které si člověk uloží). Stránku lze vybrat klávesami 1 až 3 nebo myší kliknutím na zvýrazněný řádek. Program následně zobrazí informaci o načítání přes proxy a po přijetí odpovědi vykreslí textový obsah stránky v prohlížeči.
Rozhraní je navržené tak, aby působilo jako jednoduchý browser. Nahoře je lišta s ovládáním zpět, vpřed, reload nebo stop a také URL řádek. Načtená stránka se zobrazuje v textové části obrazovky, zatímco spodní stavový řádek ukazuje nápovědu nebo aktuální adresu odkazu pod kurzorem. Program podporuje zvýrazňování odkazů, hover stav myší a klikání na odkazy přímo v textu stránky. Odkazy nejsou jen pasivní text - browser je rozpozná, vybere odpovídající URL, převede ji podle potřeby na proxy požadavek a načte další stránku. SpeccyWeb umí pracovat i s ručním zadáním adresy. Kliknutím do URL lišty se otevře jednoduchý textový vstup, kde lze adresu upravit nebo napsat novou. Program obsahuje vlastní obsluhu klávesnice, opakování kláves, pohyb kurzoru doleva a doprava, mazání znaků i potvrzení Enterem. Adresa se následně použije pro sestavení proxy cesty, včetně URL encodingu znaků, které se v adrese nemohou posílat přímo. To je důležité, protože požadavek na proxy obsahuje cílovou stránku jako parametr.
Další důležitou funkcí je historie prohlížení. Browser si pamatuje několik posledních navštívených adres a umí zobrazit samostatné okno historie. V něm lze kliknout na uložený řádek a vrátit se na dříve načtenou stránku. Program zároveň obsahuje snapshot cache, takže se některé dříve navštívené stránky mohou obnovit z paměti bez nutnosti znovu komunikovat se sítí. Samotné zobrazení obsahu je postavené na 80 x 32 tilemap režimu. Program si připravuje vlastní font, paletu, atributy pro normální text, odkazy, hover stav, informační text a ladicí výpisy. Webová stránka je ukládána do textové cache po řádcích a viewport z ní vykresluje jen viditelnou část.
Program počítá i s jednoduchými webovými formuláři. Pokud aktuální adresa obsahuje značku pro formulář, SpeccyWeb se zeptá na jednu nebo dvě hodnoty, připojí je jako parametry a odešle nový požadavek. Není to náhrada za plnou podporu HTML formulářů, ale chtěl jsem nějak řešit vyhledávání a přihlašování (pokud není omezeno nějakým způsobem javascriptem - to pak máte smolíka).
Nedá se říci, že jsem si odpočinul, ale minimálně jsem řešil jiné problémy než v NXPaint, takže se k němu mohu vrátit s čistou hlavou. A ano, až dokončím NXPaint, budu pokračovat se SpeccyWebem,... no není ten život krásný? :)