ZX80 logic simulator a přepočet počitadel pro ZX81

Louis Seidelmann mi už před nějakou dobou poslal svůj program pro přepočet počitadel kazetových magnetofonů pro ZX81. Nedávno přidal nové dílko – program pro simulaci a časovou analýzu logických sítí pro ZX80. Jistě, oboje je z dnešního pohledu překonané, můžete použít Excel nebo moderní simulační nástroje, ale oba tyto programy mají něco do sebe. Využívají celočíselnou nebo naopak plovoucí aritmetiku obou počítačů a ukazují tak docela prakticky jejich možnosti. S Louisovým souhlasem se o tyto dílka rád podělím.

ZX-80_logic_simulator_03   tapecnt2

ZX80 logic simulator

Možná více než samotným programem mně Louis nadchnul jeho zpracováním. Poslal mi nejen .O pro emulátor a .WAV pro nahrání přímo do ZX81 z přehrávače, ale i zdrojový kód převedený do dobového provedení tak, jak se to běžně dělalo dřív v počítačových časopisech. Posuďte sami, není to nádhera?

ZX-80 logic simulator 1c   ZX-80 logic simulator 2c

ZX-80 logic simulator 3c   ZX-80 logic simulator 4c

Program existuje i ve verzi s označenými řádky, které není nutné přepisovat nebo které je naopak možné upravit.

ZX-80 logic simulator 1 výběr   ZX-80 logic simulator 2 výběr

ZX-80 logic simulator 3 výběr

Ale nechme mluvit přímo Louise Seidelmanna:

Našel jsem už pro ZX-80 důstojné uplatnění, pro které je spíše výhodou úsporná celočíselná šestnáctibitová aritmetika. Dopsal jsem právě v Basicu program pro simulaci a časovou analýzu logických sítí. Samotný program je psán co možná přehledně, všude samý REM a GOSUB, jsou tam i různé pomůcky pro tvorbu vstupních signálů a časování výpisů, počítání taktů apod., takže není úplně malý. Přesto se mi do ZX-80 s RAM rozšířenou na 4kB povedlo nacpat jako demo rychlý čítač modulo 11 ze čtyř J-K 74S112 a z jednoho hradla 74S00. K tomu se tam vešlo i pár jiných, nepoužitých, ale užitečných hradel, třeba 74S64. V principu je možno si hrát s časovými parametry jednotlivých hradel nezávisle na ostatních (implicitně jsou nastaveny nejpomalejší garantované časy) a zkoumat tak možné problémy, když je třeba jedno hradlo úplně jiné, než druhé hradlo a signály se pak nesejdou podle očekávání. Budování samotné logické sítě je snadné a na RAM náročné jen málo, takže s modulem 16kB RAM jsou možnosti takřka neomezené. S rostoucím počtem signálů a součástek ovšem úměrně klesá rychlost simulace. Je to prostě Basic na osmibitu a to patří k věci, i kdyby se to třeba škarohlídům chvílemi nelíbilo. Jako základní jednotka modelování času je konvenčně uvažována nanosekunda, simulace je taktována změnou stavu některého signálu (a ta v logické síti naprogramuje další budoucí změny). Doba simulace není v principu omezená, pouze zpoždění hradel, perioda hodin apod. jsou omezeny na max. 32766ns. Pro mě je to jako 4kB demo dokončené, ovšem není k tomu žádný návod, sice jsou tam jednotlivé nástroje demonstračně použité, ale i tak to vyžaduje si program přečíst a pochopit. Ono je to tak asi stejně nejlepší, zas tak obrovské to v těch 4kB být nemůže a není.

ZX-80_logic_simulator_11   ZX-80_logic_simulator_12

ZX-80_logic_simulator_13   ZX-80_logic_simulator_14

Napadlo mě přinést z půdy dobový mechatronický prostředek a pořídit stylový výpis programu k jeho sdílení tak, jak by se mohl objevit v dobovém zpravodaji. Ono to má tu podstatnou výhodu, že když na stole leží vytištěný výpis, tak v programu samotném uživatel klidně může smazat všechny REMarky a získá tím spoustu místa na budování rozsáhlejší sítě. Mimochodem, nevím, asi je to známé, ale já jsem to nevěděl a teprve při ladění jsem zjistil, že když v Basicu ZX-80 je na jednom řádku REM bez dalšího textu, jen ve funkci odřádkování pro přehlednost, následující řádek je pro interpreter Basicu neviditelný.

Stahovat můžete zde:
ZX-80_logic_simulator_4k_PCM_O.zip
ZX-80_logic_simulator_4k_PCM_WAW.zip
ZX-80_logic_simulator_with_divider_demo_4k_PCM_O.zip
ZX-80_logic_simulator_with_divider_demo_4k_PCM_WAV.zip


Program pro přepočet počitadel pro ZX81

Program pro přepočet počitadel je poměrně jednoduchá, ale užitečná aplikace, pokud máte více kazetových magnetofonů. Jasně, že si můžete počítadla přepočítat i jinak. Ale tohle je prostě stylové.

tapecnt1   tapecnt2

Nechme opět mluvit přímo autora:

Posílám program na přepočet počítadel čerstvě převedený a ověřený v simulátoru, třeba ho uplatníte, když máte více magnetofonů. Zatím zná jen dva, z toho jeden SONY TCM-939 a tři soudobé kazety. Kalibrace dalších kazet a magnetofonů je velice snadná, ale je třeba ji vždy navázat na kazetu nebo na rekordér, které program už zná. Program neakceptuje více nezávislých, vzájemně nenavázaných skupin. Naopak akceptuje i nadbytečné údaje, pokud se od vypočtených neliší o víc než o desetinu stupně počítadla (což je hodně málo, lze to ale změnit na řádku 1160). Předpokládám, že počítadla našich magnetofonů TCM-939 se nebudou lišit významně a navázání tak bude přesné.
 
Dosud nezavedenou kazetu kalibrujete tak, že vezmete rekordér, který je už v programu zaveden, třeba SONY TCM-939, a postupujete podle návodu:
1. převinete stranu kazety na konec
2. otočíte kazetu, vynulujete počítadlo
3. převinete kazetu na konec
4. odečtete stav počítadla, zapíšete ho na řádek programu 504 způsobem podle předchozího řádku a vysvětlení indexů tabulky v REM výše
5. otočíte kazetu, vynulujete počítadlo
6. odvinete kousek pásku, třeba do stavu počítadla 100
7. odečtete stav počítadla, zapíšete ho na řádek programu 604 způsobem podle předchozího řádku a vysvětlení indexů tabulky v REM výše
8.  otočíte kazetu, vynulujete počítadlo
9. převinete kazetu na konec
10. odečtete stav počítadla, zapíšete ho na řádek programu 704 způsobem podle předchozího řádku
11. na řádek 404 zapíšete nominální nebo lépe (chce-li se Vám to měřit, ale není to moc důležité) změřenou hrací dobu kazety v minutách, třeba 90 pro C-90
12. na řádek 304 zapíšete číslo rekordéru, ve kterém proběhla kalibrace, pro TCM-939 je to 1, jinak se to dá najít od řádku 100
13. zapíšete název kazety na řádek programu 204 způsobem podle předchozího řádku a vysvětlení indexů tabulky v REM výše
14. na řádku 50 zvýšíte hodnotu M na 4
 
Rekordér se kalibruje jednodušeji. Použijete kazetu, která už je v programu zavedena.
1. převinete stranu kazety na konec
2. otočíte kazetu, vynulujete počítadlo
3. převinete kazetu na konec
4. odečtete stav počítadla, zapíšete ho na řádek programu 903 způsobem podle předchozího řádku a vysvětlení indexů tabulky v REM výše
5. zapíšete místo navázání počítadla (L – levý trn, R – pravý trn, poznáte to např. při převíjení bez kazety) a název magnetofonu na řádek programu 103 způsobem podle předchozího řádku a vysvětlení indexů tabulky v REM výše
6. na řádku 30 zvýšíte hodnotu N na 3

Program vyžaduje rozšířenou RAM na alespoň 16kB.

A opět vlastní program ke stažení:
TAPECNT_P.zip
TAPECNT_WAV.zip

Příspěvek byl publikován v rubrice Sinclair, ZX80, ZX81. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *