Nahrávací rutina ZX Spectra
Systémový program From Wikipedia, the free encyclopedia
Remove ads
Nahrávací rutina ZX Spectra je systémový program (rutina) osmibitového počítače Sinclair ZX Spectrum pro obsluhu magnetofonové kazety užívané jako datové médium. Zajišťuje obsluhu příkazů LOAD, MERGE a VERIFY.
Nahrávací rutina se nachází v paměti ROM ZX Spectra, nejdůležitější část LD-BYTES se nachází od adresy 556h (šestnáctkově). Principem nahrávání je měření délky impulsů (obvykle impuls zaznamenávající bit s hodnotou 1 má dvojnásobnou délku než impuls zaznamenávající hodnotu 0), rutina umožňuje nahrávat data rychlostí 1500 baudů.
Remove ads
Parametry vyžadované nahrávací rutinou
LD-BYTES vyžaduje následující parametry:
- registr IX: adresa, kam se budou data v paměti ukládat,
- registr DE: délka nahrávaných dat,
- registr A: určení typu bloku (značkový bajt: 0 - hlavička, 255 - vlastní data),
- příznak CARRY: 1 - nahrávání dat (LOAD), 0 - porovnávání dat (VERIFY).
Očekávaná struktura datového bloku
Nahrávací rutina očekává signál o následující struktuře:[1]
- zaváděcí část (musí trvat alespoň 1 s),
- synchronizační puls,
- vlastní blok dat.
Vlastní blok začíná značkovým bajtem a končí kontrolním součtem. Rutina LD-BYTES akceptuje pouze bloky, které mají shodný značkový bajt s požadovaným značkovým bajtem (předávaným v registru A). Kontrola správnosti načtení datového bloku se provádí operací XOR všech přečtených bytů. Po načtení všech bytů, včetně hodnoty kontrolního součtu záznamu v posledním bytu bloku musí být 0
.[2]
Použití operace XOR pro kontrolní součet má tu nevýhodu, že pokud dojde ke sudému počtu chyb v různých bytech na stejném bitu, chyba nebude detekována. Detekovanou chybu také není možné opravit. Na druhou stranu použití kontrolního algoritmu s možností opravy by v té době znamenalo zpomalení nahrávacího procesu.[2]
Zaváděcí část je tvořena obdélníkovými pulzy o délce 2 186 T-cyklů, což při frekvenci 3,5 MHz a době trvání jednoho T-cyklu 286 ns dává frekvenci 806 Hz.[3] Synchronizační puls je tvořen dvěma pulsy, prvním o délce 667 T-cyklů a druhým o délce 735 T-cyklů.[3]
Záznam bitu o hodnotě nula je tvořen dvěma pulsy každým o délce 855 T-cyklů procesoru, záznam bitu o hodnotě jedna je tvořen dvěma pulsy každým o délce 1710 T-cyklů procesoru.[4] Délka celého dvojpulsu pro bit o hodnotě nula je tak 489 µs, což odpovídá frekvenci 2 045 Hz, délka dvojpulsu pro bit o hodnotě jedna je 978 µs.[3] První puls je generován aktivním výstupem pro magnetofon, druhý puls je generován neaktivním výstupem pro magnetofon.[3] Pokud je nahráván blok tvořený samými nulami, je průměrná rychlost nahrávání 2047 bitů za sekundu, pokud nahráván blok tvořený samými jedničkami, je průměrná rychlost nahrávání 1023 bitů za sekundu. Průměrná rychlost nahrávání se liší pro každý blok v závislosti na podílu obsažených bitů s hodnotou jedna a bitů s hodnotou nula.
Remove ads
Využití z Basicu
Příkazy Basicu vždy očekávají dva datové bloky. První blok, nazývaný hlavička, obsahuje meta informace o daném bloku dat: typ dat, název dat, adresa dat v paměti počítače, délka dat a další parametry závislé na typu uložených dat.[5] Značkový byte tohoto bloku je 0.
Druhý blok obsahuje vlastní data, značkový byte tohoto bloku je 255.
Vlastní nahrávací rutiny
Některé hry nepoužívají nahrávací rutinu z ROM, ale využívají svojí vlastní. Díky tomu mohou při nahrávání provádět různé efekty, např. zobrazovat počítadlo, používat jinou kombinaci barev v borderu, nebo pohybovat objekty na obrazovce.[6] Vlastní nahrávací rutina umožňuje také využití ochrany proti kopírování (např. Speedlock). Vlastní nahrávací rutina také umožňuje zvýšit rychlost nahrávání dat.
Remove ads
Reference
Literatura
Externí odkazy
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads