{"id":932017,"date":"2026-11-10T22:36:46","date_gmt":"2026-11-10T21:36:46","guid":{"rendered":"https:\/\/sindik.at\/?p=932017"},"modified":"2026-11-10T22:43:12","modified_gmt":"2026-11-10T21:43:12","slug":"esp-8266-brana-pro-zx-spectrum-anebo-tu-kabel-nebo-taky-kdyz-uz-je-usb-usbc-tak-co-treba-usa","status":"publish","type":"post","link":"https:\/\/sindik.at\/?p=932017","title":{"rendered":"ESP8266 br\u00e1na pro ZX Spectrum"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Tu kaBel nebo taky kdy\u017e u\u017e je USB USBC tak co t\u0159eba USA<\/strong><br><br>ZX Spectrum se dostane na internet jen po dvou dr\u00e1tech: m\u00edsto kazetov\u00e9ho magnetofonu je do konektoru MIC p\u0159ipojen\u00fd modul ESP8266. Po stejn\u00e9 lince, po kter\u00e9 se kdysi nahr\u00e1valy hry z kazety a na kazety, te\u010f b\u011b\u017e\u00ed obousm\u011brn\u00fd termin\u00e1l se 40 znaky na \u0159\u00e1dek, rychlost\u00ed asi 120 bajt\u016f za sekundu tam i zp\u011bt a bez chyb.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Princip: dva vodi\u010de m\u00edsto kazety<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Spectrum m\u00e1 pro magnetofon zvl\u00e1\u0161\u0165 zvukov\u00fd vstup a v\u00fdstup a oboj\u00ed kupodivu vede na konektor MIC (v n\u011bkter\u00fdch verz\u00edch ZX je to jinak, nutno vyzkou\u0161et). ESP8266 se na n\u011bj p\u0159ipoj\u00ed jedn\u00edm sign\u00e1lov\u00fdm vodi\u010dem a zem\u00ed. Na stran\u011b ESP sta\u010d\u00ed jeden pin (GPIO13 &#8211; zase nutno zkou\u0161et), kter\u00fd se p\u0159ep\u00edn\u00e1 mezi vstupem a v\u00fdstupem podle toho, kdo zrovna vys\u00edl\u00e1.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ESP \u2192 ZX:<\/strong> ESP nastav\u00ed pin jako v\u00fdstup a vys\u00edl\u00e1 pulzy. Spectrum je \u010dte stejn\u011b, jako by hr\u00e1la kazeta: bit 6 portu $FE.<\/li>\n\n\n\n<li><strong>ZX \u2192 ESP:<\/strong> ESP pin p\u0159epne na vstup a v p\u0159eru\u0161en\u00ed si zapisuje \u010das ka\u017ed\u00e9 hrany. Spectrum vys\u00edl\u00e1 bitem 4 portu $FE, kter\u00fd na modelu 48K vede na stejn\u00fd konektor MIC.<\/li>\n\n\n\n<li><strong>Mluv\u00ed v\u017edy jen jeden.<\/strong> ESP \u0159\u00edd\u00ed linku: po\u0161le paket a \u010dek\u00e1 na odpov\u011b\u010f. Spectrum samo nikdy neza\u010dne, tak\u017ee se sign\u00e1ly nikdy nesraz\u00ed.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/sindik.at\/wp-content\/uploads\/2026\/11\/zx-term.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"436\" src=\"https:\/\/sindik.at\/wp-content\/uploads\/2026\/11\/zx-term-1024x436.png\" alt=\"\" class=\"wp-image-932018\" srcset=\"https:\/\/sindik.at\/wp-content\/uploads\/2026\/11\/zx-term-1024x436.png 1024w, https:\/\/sindik.at\/wp-content\/uploads\/2026\/11\/zx-term-300x128.png 300w, https:\/\/sindik.at\/wp-content\/uploads\/2026\/11\/zx-term-766x326.png 766w, https:\/\/sindik.at\/wp-content\/uploads\/2026\/11\/zx-term-500x213.png 500w, https:\/\/sindik.at\/wp-content\/uploads\/2026\/11\/zx-term.png 1344w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">ESP8266 je jedin\u00fd prost\u0159edn\u00edk: se Spectrem mluv\u00ed po dvou dr\u00e1tech konektoru MIC, s internetem p\u0159es WiFi. PC p\u0159es USB\/Serial je pot\u0159eba jen pro nahr\u00e1n\u00ed programu a lad\u011bn\u00ed.<br><br><strong>Jak se termin\u00e1l dostane do ZX<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/data\/zx_terminal_v3.zip\">Termin\u00e1l<\/a> se nahraje \u00fapln\u011b oby\u010dejn\u011b, p\u0159\u00edkazem <code>LOAD \"\"<\/code>. ESP se tv\u00e1\u0159\u00ed jako magnetofon a p\u0159ehraje nahr\u00e1vku ve standardn\u00edm form\u00e1tu ROM: piloty 2168 T, synchroniza\u010dn\u00ed pulzy 667 a 735 T, bity 855 a 1710 T.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Na Spectru se nap\u00ed\u0161e <code>LOAD \"\"<\/code> a Enter.<\/li>\n\n\n\n<li>ESP po\u0161le BASIC zavad\u011b\u010d s n\u00e1zvem <code>ESPtermT11<\/code> a za n\u00edm strojov\u00fd k\u00f3d termin\u00e1lu (asi 3 KB).<\/li>\n\n\n\n<li>K\u00f3d b\u011b\u017e\u00ed od adresy <code>$E000<\/code> se zak\u00e1zan\u00fdm p\u0159eru\u0161en\u00edm. P\u00edsmo \u0161irok\u00e9 6 bod\u016f pro 40 znak\u016f na \u0159\u00e1dek si vyrob\u00ed z ROM fontu a ulo\u017e\u00ed na <code>$F000<\/code>.<\/li>\n\n\n\n<li>ESP se zept\u00e1 na verzi. Kdy\u017e na ZX b\u011b\u017e\u00ed star\u0161\u00ed termin\u00e1l, po\u0161le mu p\u0159\u00edkaz k n\u00e1vratu do BASICu a nahraje nov\u00fd.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">BASIC zavad\u011b\u010d m\u00e1 na konci \u0159\u00e1dek s <code>LOAD \"\"<\/code>. Kdy\u017e termin\u00e1l skon\u010d\u00ed nebo se po h\u0159e Spectrum resetuje, sta\u010d\u00ed znovu <code>LOAD \"\"<\/code> a ESP termin\u00e1l nahraje samo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hranov\u00fd protokol: m\u011b\u0159\u00ed se jen \u010das mezi hranami<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vstup MIC je st\u0159\u00eddav\u011b v\u00e1zan\u00fd, tak\u017ee ust\u00e1len\u00e1 \u00farove\u0148 se ztr\u00e1c\u00ed a spolehliv\u011b projdou jen zm\u011bny. Proto ob\u011b strany p\u0159en\u00e1\u0161ej\u00ed informaci d\u00e9lkou intervalu mezi dv\u011bma hranami, ne \u00farovn\u00ed sign\u00e1lu. Kr\u00e1tk\u00fd interval je bit 0, dlouh\u00fd bit 1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jeden bajt je jeden r\u00e1mec:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Piloty:<\/strong> n\u011bkolik stejn\u011b dlouh\u00fdch interval\u016f, podle kter\u00fdch se p\u0159ij\u00edma\u010d zachyt\u00ed.<\/li>\n\n\n\n<li><strong>SYNC:<\/strong> jeden v\u00fdrazn\u011b del\u0161\u00ed interval, kter\u00fd ozna\u010d\u00ed za\u010d\u00e1tek dat.<\/li>\n\n\n\n<li><strong>8 datov\u00fdch bit\u016f<\/strong>, nejvy\u0161\u0161\u00ed bit prvn\u00ed.<\/li>\n\n\n\n<li><strong>Sud\u00e1 parita:<\/strong> dev\u00e1t\u00fd bit, kter\u00fd odhal\u00ed jednu chybu v r\u00e1mci.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Oba sm\u011bry maj\u00ed jin\u00e9 \u010dasy, proto\u017ee ka\u017ed\u00e1 strana m\u011b\u0159\u00ed jinak. Spectrum po\u010d\u00edt\u00e1 smy\u010dkou o 45 T-stavech, tedy po 12,9 \u00b5s. ESP m\u00e1 p\u0159esn\u00fd \u010d\u00edta\u010d mikrosekund.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Sm\u011br a nastaven\u00ed<\/strong><\/td><td><strong>Pilot (\u00b5s)<\/strong><\/td><td><strong>SYNC (\u00b5s)<\/strong><\/td><td><strong>Bit 0 (\u00b5s)<\/strong><\/td><td><strong>Bit 1 (\u00b5s)<\/strong><\/td><\/tr><tr><td>ESP \u2192 ZX (E3, v\u017edy)<\/td><td>160<\/td><td>450<\/td><td>80<\/td><td>200<\/td><\/tr><tr><td>ZX \u2192 ESP v\u00fdchoz\u00ed (P4)<\/td><td>\u2013<\/td><td>381<\/td><td>99<\/td><td>173<\/td><\/tr><tr><td>ZX \u2192 ESP rychl\u00e9 (P5)<\/td><td>\u2013<\/td><td>203<\/td><td>61<\/td><td>99<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Spectrum vys\u00edl\u00e1 \u010dasovac\u00ed smy\u010dkou: jeden interval trv\u00e1 26 \u00d7 DE + 85 T-stav\u016f.<br><br><strong>Nam\u011b\u0159en\u00e1 rychlost a spolehlivost<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S rychl\u00fdm nastaven\u00edm (ZX \u2192 ESP P5, ESP \u2192 ZX E3) linka p\u0159enese asi 120 bajt\u016f za sekundu tam i zp\u011bt a p\u0159i dlouh\u00fdch testech nevznikla \u017e\u00e1dn\u00e1 chyba. To je zhruba 3 \u0159\u00e1dky po 40 znac\u00edch za sekundu.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Test<\/strong><\/td><td><strong>Doba<\/strong><\/td><td><strong>V\u00fdsledek<\/strong><\/td><\/tr><tr><td>Seznam WiFi s\u00edt\u00ed tam a zp\u011bt, WiFi zapnut\u00e1<\/td><td>30 min<\/td><td>214 500 B, 0 chyb, 0 opakov\u00e1n\u00ed<\/td><\/tr><tr><td>\u010cT teletext str\u00e1nku po str\u00e1nce<\/td><td>183 str\u00e1nek<\/td><td>0 neshod<\/td><\/tr><tr><td>ESP \u2192 ZX rychlej\u0161\u00ed E4 (bit 0 60 \u00b5s), WiFi p\u0159ipojen\u00e1<\/td><td>\u2013<\/td><td>1,8 % opakov\u00e1n\u00ed, proto z\u016fst\u00e1v\u00e1 E3<\/td><\/tr><tr><td>ESP \u2192 ZX E3, WiFi p\u0159ipojen\u00e1<\/td><td>\u2013<\/td><td>0,4 % opakov\u00e1n\u00ed<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">WiFi b\u011b\u017e\u00edc\u00ed na pozad\u00ed p\u0159\u00edjem v ESP tro\u0161ku ru\u0161\u00ed. Rychlost omezuje tak\u00e9 m\u011b\u0159en\u00ed na Spectru: smy\u010dka o 12,9 \u00b5s pot\u0159ebuje intervaly aspo\u0148 kolem 60 \u00b5s, aby bezpe\u010dn\u011b rozli\u0161ila bit 0 a 1. ZX vys\u00edl\u00e1 je\u0161t\u011b rychleji, proto\u017ee ESP m\u011b\u0159\u00ed s p\u0159esnost\u00ed na mikrosekundy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pou\u017e\u00edv\u00e1n\u00ed<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Po zapnut\u00ed se ESP p\u0159ipoj\u00ed k ulo\u017een\u00e9 WiFi a \u010dek\u00e1, a\u017e na Spectru pob\u011b\u017e\u00ed LOAD &#8222;&#8220;. Termin\u00e1l se nahraje za n\u011bkolik sekund a uk\u00e1\u017ee v\u00fdzvu &gt;&gt; . Ka\u017ed\u00fd napsan\u00fd znak se hned vrac\u00ed z ESP jako ozv\u011bna, tak\u017ee na obrazovce je vid\u011bt, co opravdu dorazilo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Stavov\u00e1 li\u0161ta<\/strong> v horn\u00edm \u0159\u00e1dku m\u00e1 32 znak\u016f:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ESPterm3.02 CAPS 40 VIDEO 123k\/99<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CAPS sv\u00edt\u00ed, kdy\u017e je zapnut\u00fd CAPS LOCK.<\/li>\n\n\n\n<li>40 nebo 32 je po\u010det znak\u016f na \u0159\u00e1dek.<\/li>\n\n\n\n<li>123k\/99 je po\u010det p\u0159enesen\u00fdch bajt\u016f a za lom\u00edtkem po\u010det chyb, kter\u00e9 bylo nutn\u00e9 opakovat.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Kl\u00e1vesy<\/strong><\/td><td><strong>Co ud\u011blaj\u00ed<\/strong><\/td><\/tr><tr><td>CAPS SHIFT + 2 CAPS<\/td><td>CAPS LOCK zapnout \/ vypnout<\/td><\/tr><tr><td>CAPS SHIFT + 3 TRUE<\/td><td>p\u0159epnout 32 \/ 40 znak\u016f na \u0159\u00e1dek (obrazovka se nema\u017ee, jen se od\u0159\u00e1dkuje)<\/td><\/tr><tr><td>CAPS SHIFT + 4 INV<\/td><td>barvy: b\u00edl\u00e1 obrazovka s \u010dern\u00fdm p\u00edsmem, nebo obr\u00e1cen\u011b<\/td><\/tr><tr><td>CAPS SHIFT + 1 EDIT<\/td><td>anal\u00fdza spojen\u00ed: statistiky obou sm\u011br\u016f<\/td><\/tr><tr><td>CAPS SHIFT + SPACE (BREAK)<\/td><td>zru\u0161it rozepsan\u00fd \u0159\u00e1dek, ukon\u010dit telnet<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Do \u00favodn\u00edho nastaven\u00ed se termin\u00e1l vrac\u00ed resetem Spectra a <code>LOAD \"\"<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>P\u0159\u00edkazy termin\u00e1lu<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">P\u0159\u00edkazy se p\u00ed\u0161\u00ed za v\u00fdzvu <code>>><\/code> a vy\u0159izuje je ESP. Velikost p\u00edsmen nehraje roli.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>P\u0159\u00edkaz<\/strong><\/td><td><strong>Co d\u011bl\u00e1<\/strong><\/td><\/tr><tr><td>HELP<\/td><td>seznam p\u0159\u00edkaz\u016f a kl\u00e1ves (anglicky)<\/td><\/tr><tr><td>CLS<\/td><td>sma\u017ee obrazovku, stavov\u00e1 li\u0161ta z\u016fstane<\/td><\/tr><tr><td>WIFI<\/td><td>vyp\u00ed\u0161e okoln\u00ed s\u00edt\u011b, \u010d\u00edslem se vybere s\u00ed\u0165 a zad\u00e1 heslo; heslo se ulo\u017e\u00ed do pam\u011bti ESP<\/td><\/tr><tr><td>TELETEXT [str\u00e1nka]<\/td><td>\u010cT teletext, v\u00fdchoz\u00ed str\u00e1nka 100; potom sta\u010d\u00ed ps\u00e1t \u010d\u00edsla str\u00e1nek, pr\u00e1zdn\u00fd Enter re\u017eim ukon\u010d\u00ed<\/td><\/tr><tr><td>TELNET [server port]<\/td><td>p\u0159ipojen\u00ed k telnetov\u00e9mu serveru; bez adresy nab\u00eddne 8 BBS k v\u00fdb\u011bru \u010d\u00edslem<\/td><\/tr><tr><td>GAMES<\/td><td>17 her v TAP, nahraj\u00ed se b\u011b\u017enou rychlost\u00ed ROM<\/td><\/tr><tr><td>OTLA<\/td><td>hry v rychl\u00e9m form\u00e1tu OTLA (nahr\u00e1n\u00ed za n\u011bkolik sekund)<\/td><\/tr><tr><td>GETTAP [adresa]<\/td><td>st\u00e1hne TAP z webu a nahraje ho do Spectra; bez adresy vyp\u00ed\u0161e soubory z <a href=\"http:\/\/sindik.at\/data\/\">sindik.at\/data<\/a><\/td><\/tr><tr><td>DEMO<\/td><td>dokola vypisuje okoln\u00ed WiFi s\u00edt\u011b, a kdy\u017e se m\u016f\u017ee p\u0159ipojit, prom\u00edt\u00e1 v\u0161echny str\u00e1nky teletextu<\/td><\/tr><tr><td>TIME<\/td><td>velk\u00e9 hodiny HH:MM z internetu, ka\u017edou minutu nov\u00e9<\/td><\/tr><tr><td>SERIAL [1|2|3]<\/td><td>re\u017eim s\u00e9riov\u00e9 linky ESP (viz dal\u0161\u00ed odd\u00edl)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">U <code>DEMO<\/code> a <code>TIME<\/code> re\u017eim ukon\u010d\u00ed libovoln\u00e1 kl\u00e1vesa. Hodiny maj\u00ed 31 znak\u016f na \u0161\u00ed\u0159ku, tak\u017ee se vejdou do 32 i 40 sloupc\u016f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ovl\u00e1d\u00e1n\u00ed z PC p\u0159es s\u00e9riovou linku<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ESP je s PC propojen\u00e9 p\u0159es USB (s\u00e9riov\u00fd port 115200 Bd). P\u0159\u00edkaz SERIAL ur\u010d\u00ed, k \u010demu port slou\u017e\u00ed:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Re\u017eim<\/strong><\/td><td><strong>N\u00e1zev<\/strong><\/td><td><strong>Co jde do PC a z PC<\/strong><\/td><\/tr><tr><td>SERIAL 1 (v\u00fdchoz\u00ed)<\/td><td>monitor&nbsp;<\/td><td>DEBUG z\u00e1znam o \u010dinnosti ESP; text z PC se vyp\u00ed\u0161e na Spectru<\/td><\/tr><tr><td>SERIAL 2<\/td><td>serterm<\/td><td>Spectrum a PC si p\u00ed\u0161ou jako dva termin\u00e1ly; BREAK na Spectru vr\u00e1t\u00ed re\u017eim 1<\/td><\/tr><tr><td>SERIAL 3<\/td><td>mirror<\/td><td>do PC jde kopie textu, kter\u00fd se vypisuje na Spectru, bez stavov\u00e9 li\u0161ty<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">V ka\u017ed\u00e9m re\u017eimu funguj\u00ed \u0159\u00e1dky za\u010d\u00ednaj\u00edc\u00ed vyk\u0159i\u010dn\u00edkem:<br><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>P\u0159\u00edkaz<\/strong><\/td><td><strong>Co d\u011bl\u00e1<\/strong><\/td><\/tr><tr><td>!cmd &lt;p\u0159\u00edkaz&gt;<\/td><td>spust\u00ed p\u0159\u00edkaz termin\u00e1lu, jako by se napsal na Spectru, nap\u0159. !cmd TIME<\/td><\/tr><tr><td>!serial &lt;n&gt;<\/td><td>p\u0159epne re\u017eim s\u00e9riov\u00e9 linky<\/td><\/tr><tr><td>!stat<\/td><td>statistika linky (pakety, opakov\u00e1n\u00ed, chyby, voln\u00e1 pam\u011b\u0165)<\/td><\/tr><tr><td>!zx<\/td><td>statistika ze strany Spectra<\/td><\/tr><tr><td>!wifiset &lt;s\u00ed\u0165&gt; &lt;heslo&gt;<\/td><td>ulo\u017e\u00ed WiFi a p\u0159ipoj\u00ed se<\/td><\/tr><tr><td>!load<\/td><td>znovu nahraje termin\u00e1l do Spectra<\/td><\/tr><tr><td>!cls<\/td><td>sma\u017ee obrazovku Spectra<\/td><\/tr><tr><td>!quit<\/td><td>ukon\u010d\u00ed termin\u00e1l, Spectrum se vr\u00e1t\u00ed do BASICu<\/td><\/tr><tr><td>!test, !wifi, !ttx<\/td><td>automatick\u00e9 testy linky (seznam WiFi, teletext)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Na PC sta\u010d\u00ed jak\u00fdkoli s\u00e9riov\u00fd termin\u00e1l, nap\u0159\u00edklad Serial monitor v Arduino IDE. Kdy\u017e je otev\u0159en\u00fd, nejde do ESP nahr\u00e1t nov\u00fd program, tak\u017ee ho p\u0159ed nahr\u00e1v\u00e1n\u00edm zav\u0159ete.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Hry: GAMES, OTLA a GETTAP<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">V\u0161echny t\u0159i p\u0159\u00edkazy funguj\u00ed stejn\u011b: ESP vr\u00e1t\u00ed Spectrum do BASICu, kde u\u017e \u010dek\u00e1 <code>LOAD \"\"<\/code>, a p\u0159ehraje hru jako magnetofon. Hry jsou ulo\u017een\u00e9 v bal\u00ed\u010dku v nevyu\u017eit\u00e9 \u010d\u00e1sti 4MB flash pam\u011bti ESP, mimo samotn\u00fd program.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GAMES:<\/strong> b\u011b\u017en\u00e9 soubory TAP, p\u0159ehr\u00e1van\u00e9 standardn\u00ed rychlost\u00ed ROM, tak\u017ee je na\u010dte ka\u017ed\u00e9 Spectrum.<\/li>\n\n\n\n<li><strong>OTLA:<\/strong> nahr\u00e1vky ve form\u00e1tu TZX s p\u0159\u00edm\u00fdm z\u00e1znamem sign\u00e1lu (blok 0x15), kter\u00e9 si s sebou nesou vlastn\u00ed rychl\u00fd zavad\u011b\u010d. Vzorek trv\u00e1 jen asi 21\u201323 \u00b5s, proto ESP p\u0159i p\u0159ehr\u00e1v\u00e1n\u00ed vypne WiFi i p\u0159eru\u0161en\u00ed. Ka\u017edou hranu \u010dasuje podle \u010d\u00edta\u010de takt\u016f procesoru, tak\u017ee se chyby nes\u010d\u00edtaj\u00ed. Data z flash do\u010d\u00edt\u00e1 jen ve chv\u00edl\u00edch, kdy do dal\u0161\u00ed hrany zb\u00fdv\u00e1 dost \u010dasu. Te\u010f jsou v nab\u00eddce Manic Miner a atic_k7zx.<\/li>\n\n\n\n<li><strong>GETTAP:<\/strong> bez adresy vyp\u00ed\u0161e soubory TAP ze str\u00e1nky <a href=\"http:\/\/sindik.at\/data\/\">sindik.at\/data<\/a>, dva na \u0159\u00e1dek s \u010d\u00edslem. S adresou adres\u00e1\u0159e vyp\u00ed\u0161e TAP z n\u011bj, s adresou souboru ho rovnou st\u00e1hne. Funguje <strong>http:\/\/<\/strong> i <strong>https:\/\/<\/strong>. Sta\u017een\u00fd soubor se ulo\u017e\u00ed do vyhrazen\u00fdch 236 KB flash a odtud se p\u0159ehraje.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Novou hru p\u0159id\u00e1te na PC: TAP do slo\u017eky games\/ (a jej\u00ed jm\u00e9no do seznamu v <a href=\"\/data\/tools.zip\">tools<\/a>\/make_games.py), TZX do slo\u017eky otla\/. Pak sestav\u00edte a nahrajete bal\u00ed\u010dek:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">py tools\/make_pack.py<br>py tools\/upload_pack.py COM21<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Program v ESP z\u016fst\u00e1v\u00e1, do FLASH se nahraje jen <a href=\"\/data\/games.zip\">bal\u00ed\u010dek her<\/a>. Bal\u00ed\u010dek m\u00e1 te\u010f 739 KB z 2 816 KB voln\u00e9ho m\u00edsta. Jm\u00e9no hry v nab\u00eddce se bere z n\u00e1zvu souboru.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pro v\u00fdvoj\u00e1\u0159e<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Projekt m\u00e1 dv\u011b \u010d\u00e1sti: strojov\u00fd k\u00f3d pro Z80 a program pro ESP8266 v Arduinu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Program pro ESP se p\u0159ekl\u00e1d\u00e1 pro desku Generic ESP8266 s rozlo\u017een\u00edm flash <strong>4MB (FS:none OTA:~1019KB)<\/strong>. Jin\u00e9 rozlo\u017een\u00ed by p\u0159ekr\u00fdvalo bal\u00ed\u010dek her. V Arduino CLI je to <code>esp8266:esp8266:generic:eesz=4M<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Autor: <strong>OK1VHB<\/strong> aka <strong>mATARIn<\/strong>, 23.10.2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tu kaBel nebo taky kdy\u017e u\u017e je USB USBC tak co t\u0159eba USA ZX Spectrum se dostane na internet jen po dvou dr\u00e1tech: m\u00edsto kazetov\u00e9ho magnetofonu je do konektoru MIC p\u0159ipojen\u00fd modul ESP8266. Po stejn\u00e9 lince, po kter\u00e9 se kdysi &hellip; <a href=\"https:\/\/sindik.at\/?p=932017\">Pokra\u010dova\u0165 v \u010d\u00edtan\u00ed <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[5,6],"tags":[],"class_list":["post-932017","post","type-post","status-publish","format-standard","hentry","category-tema-2-hardware-php","category-tema-3-software-php"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5aqy8-3Usx","jetpack_likes_enabled":true,"jetpack-related-posts":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/932017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=932017"}],"version-history":[{"count":4,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/932017\/revisions"}],"predecessor-version":[{"id":932023,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/932017\/revisions\/932023"}],"wp:attachment":[{"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=932017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=932017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=932017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}