OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 27.04.2024, 11:35

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 26 ]  Přejít na stránku Předchozí  1, 2
Autor Zpráva
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 10.02.2024, 12:36 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2354
Has thanked: 304 times
Been thanked: 641 times
Nepsal bych, jak píše l00k, že se magnetofonům signál z počítače nelíbí.

Jde o to, že magnetofony i magnetofonové pásky mají omezený nelineární frekvenční rozsah. Když se na ně zapíše jednou (z kopírovacího programu), je signál bezpečně v toleranci, vyšší frekvence nejsou utlumené tak moc, aby to vadilo, nízké frekvence nejsou tak nízké, aby to vadilo...

K frekvenčnímu rozsahu záznamu na pásku https://en.wikipedia.org/wiki/Compact_C ... rmulations ... liší se podle magnetofonu, magnetického materiálu pásky... U ZXS jsme zapisovali výhradně na pásky železité, na některých je uvedeno "TYPE I NORMAL BIA 120us EQ", ale taky často na pásky levné, východní provenience, na levných magnetofonech.

Ale když analogový signál projde stejnou cestou ještě jednou, tak se na následném záznamu projeví všechny chyby předchozího záznamu plus další útlum vyšších frekvencí plus další šum, plus případně špatně nastavená kolmost hlavy čtecího magnetofonu, další kolísání rychlosti posuvu pásky atd...

Digitalizací a následným zápisem "čistého signálu" se tyhle chyby a útlum odstraní.

Ostatně je to vidět na https://shred.zone/cilla/page/440/r-tap ... error.html Proto ZX Spectrum (a i mnoho jiných počítačů) musí detekovat "průchod nulou" a měřit čas mezi = rozlišuje frekvenci pulzu. Proto je ZX Spectrum relativně odolné vůči špatné kvalitě záznamu. A proto je baudrate tak nízký, protože na vyšších frekvencích (turbo) se víc projeví nekvalita záznamu.

První a možná i druhá kopie na dobře nastaveném "dvojčeti" bývá dobře použitelná. Dokonce i v případě turba.

A jak píše l00k - na ZXS je zvykem ukládat velké bloky. Není pravda, že by data nešla uložit do menších bloků, ale záznam by se tím prodloužil o pilotní tóny (a možná i když ne nutně další hlavičky). Ze zkušenosti - nejspíš by to nepomohlo. Když je záznam poškozený tak, že nejde přečíst napoprvé, málokdy jde přečíst napodruhé. Programátoři měli (v pozdějších dobách) tendenci jít spíš cestou zkracování záznamu kompresí dat a rozdělení na víc bloků by šlo pricipielně proti zkrácení doby načítání.

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 10.02.2024, 14:00 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1980
Bydliště: Most, Praha
Has thanked: 874 times
Been thanked: 699 times
Kupodivu často platí, že levnější magnetofony ukládají digitální záznam spolehlivěji než drahé profi. Zřejmě proto, že kvalitnější mgf ořezává ostře horní frekvence a deformuje tak víc hrany a fázi. "Zlepšovače audio signálu" jako Dolby nebo chromdioxid jsou pro digitální záznam horší než běžný záznam. U sálových počítačů se používaly speciální digitální kazety, které ale na běžných kazeťácích moc nefungovaly, protože vyžadovaly vyšší záznamový proud.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 10.02.2024, 22:07 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2095
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
MilasPce píše:
Týt a tůt je 1 a 0. Týt vyší tón krátký impulzy, tůt nižší tón dlouhé impulzy. Faraon to má spravně, řekl bych že ty změny jsou dvě, takže jedna sinusovka na bit, ne mezi změnami.
Aby to niekto nepochopil zle. Týt vyší tón krátký impulzy = 0, a tůt nižší tón dlouhé impulzy = 1.

Samozrejme každý tón je tvorený jednou sínusovkou, čo je najkratšia časť tónu aká môže byť. Ono by išlo spraviť aj aby bol tvorený polovicou sínusovky, ale potom by sa už museli strážiť dáta alebo pridať nejaký pilotný medzitón. Totiž bežný magnetofón sám hľadá stred medzi vrchnou a spodnou polovicou sínusovky záznamu. Pri plnej sínusovke je to v strede, signál je symetrický (dá sa to predstaviť ako vlnovka rôznej hustoty ktorej stredom prechádza vodorovná čiara). Ale keby sme mali uložiť 101010101010 do pol sínusoviek, tak hore máme 1 teda dlhé, dolu 0 teda krátke, a vznikne nesymetrický záznam (vlnovka, ale čiara by prechádza nie v strede, ale o kus nižšie, vrchné časti väčšie ako spodné). Magnetofón by určil stred signálu, a vzniklo by nám čosi, čo je všade rovnaké, teda medzi 1 a 0.

Čo tam bolo ďalej? Ako funguje LOAD? Len stručne: najprv sa čaká na zavádzajúci tón. To je tóninou skoro ako samé 1. Keď sa zistí a v dostatočnej dĺžke, čaká sa až v ňom nastane synchronizačný impulz, teda 0. Ten slúži na nastavenie správnej polarity - signál totiž môže byť aj invertovaný a ničomu to nevadí. Až od tohoto signálu sa určí polarita signálu, teda čo je koniec sínusovky. Potom sa už prijímajú samotné dáta 1 a 0 a z nich sa skladajú byty. 1. byt je značkový (štandardne 0=hlavička, 255=telo, alebo neštandardne akýkoľvek), tak sa neukladá, iba sa porovná s očakávaným a keď sa nezhoduje, tak chyba. Keď sa zhoduje, tak sa nahrávajú do pamäte ďalšie dáta. Posledný je CRC byt ktorý sa neukladá. Pri XORovaní celého záznamu vrátane značkového bytu a CRC musí vyjsť 0, inak je chyba.
Samotné 1 alebo 0 sa prijímajú tak, že sa čaká na 2 krát zmenu stavu vstupu, a tento čas sa počíta. Ak je moc dlhý, tak chyba. Ak je vhodný, tak sa porovná stredný čas medzi 1 a 0, a všetko nad je 1 a pod je 0. Časy sú nastavené pevne (1 je dvakrát tak dlhá ako 0), ale majú určitú toleranciu, takže záznam môže byť v určitých medziach pustený aj pomalšie alebo rýchlejšie.
Len pre zaujímavosť, ja som naprogramoval rutinu, ktorá nemá pevné časy, ale porovnáva ich s predošlými prijatými časmi+dovolená odchýlka. Aj zavádzací tón môže mať akúkoľvek tóninu. Ono keď platí že 1 je vždy 2x 0, tak na rýchlosti vlastne ani nezáleží. Pôvodne pri ZX Spectre mal byť zrejme zavádzací tón unikátny, ale ako iste vieme, berie to ako zavádzací tón aj signál uložených 1. A keď nasledujú uložené 0, vypíše to "Program: ??????????". Ako to? Jednoducho. Dlhší blok jednotiek si myslí že je zavádzací tón. Potom nuly: synchronizačný impulz je nula, značkový byt pre Program je nula, názov na 10 písmen zo znaku číslo nula je interpretovaný ako 10x otáznik, kontrolný súčet samých núl je zasa nula... v podstate je to regulérna hlavička. Čo na tom že záznam pokračuje nulami ďalej. Niekedy som skúšal urobiť hlavičku v strede dát tak, že som uložil dlhší blok #FF, potom #FE, a následne dáta hlavičky (vrátane značkového bytu a CRC). A išla normálne nahrať ako hlavička, pritom to boli dáta v strede bloku.
Ale nejako som sa nechal uniesť.

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 12.02.2024, 10:19 
Offline
Kecka
Uživatelský avatar

Registrován: 27.07.2021, 12:46
Příspěvky: 72
Bydliště: Valašsko
Has thanked: 8 times
Been thanked: 35 times
V pravěku jsem obšlehl kód pro zápis/čtení z kazeťáku s 8251 asi z PMD:

http://www.valachnet.cz/lvanek/diy/old_story/monit.txt

rutiny PUTMGF a následující. Torzo zapojení:

http://www.valachnet.cz/lvanek/diy/old_story/mgf.gif

_________________
RC2014 Pro, RC2014 LittleBro, RC2014 Zed, RC2014 Mini


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 13.02.2024, 12:25 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
Panda38 píše:
První krok při záchraně dat by mělo být nastavení kolmosti hlavy souhlasně podle záznamu - aby bylo nejzřetelnější rozpoznání správné šířky pulzů v analyzátoru. Při nesouhlasné kolmosti se detekované šířky pulzů "rozpliznou". A při nesprávné rychlosti kazeťáku (nebo při ujíždějící stejnosměrné složce) ujedou stranou.
Jeden taky analyzator priamo pre ZX Spektrum som naprogramoval aj ja, tu je pokec a download (subor rec-just.tap).
l00k píše:
Na některých jiných počítačích nebo ve speciálních loaderech se nahrává po kratších částech (blocích) aby v případě chyby se mohlo kousek vrátit a zkusit nahrát danou část znovu (např. IQ151), to zde nejde, blok se musí nahrát celý a na případnou chybu se přijde až na konci
Tu by som len upresnil, ze v niektorych pripadoch bolo primarnym dovodom to ze tieto pocitace proste nestihali naraz loadovat data, zaroven vyhodnocovat ich spravnost a ukladat ich na cielove miesto. Loadli preto do buffera urcity blok obmedzenej dlzky, ten sa vyhodnotil ci je OK a ak ano tak sa ulozil na cielove miesto. A az potom boli schopne loadovat dalsi blok dat. Nastastie to obvykle nebolo tym zeby CPU bolo prilis pomale, ale skor preto lebo dizajneri proste vymysleli taku "paketovu" koncepciu a programatori sa jej mali drzat.
PotPalo píše:
Samozrejme každý tón je tvorený jednou sínusovkou, čo je najkratšia časť tónu aká môže byť. Ono by išlo spraviť aj aby bol tvorený polovicou sínusovky, ale potom by sa už museli strážiť dáta alebo pridať nejaký pilotný medzitón. Totiž bežný magnetofón sám hľadá stred medzi vrchnou a spodnou polovicou sínusovky záznamu. Pri plnej sínusovke je to v strede, signál je symetrický (dá sa to predstaviť ako vlnovka rôznej hustoty ktorej stredom prechádza vodorovná čiara). Ale keby sme mali uložiť 101010101010 do pol sínusoviek, tak hore máme 1 teda dlhé, dolu 0 teda krátke, a vznikne nesymetrický záznam (vlnovka, ale čiara by prechádza nie v strede, ale o kus nižšie, vrchné časti väčšie ako spodné). Magnetofón by určil stred signálu, a vzniklo by nám čosi, čo je všade rovnaké, teda medzi 1 a 0.
Presne s tymto som sa kedysi hodne hral. Ta predstava ze dosiahnem dvojnasobnu rychlost pri nezmenenych potrebach na frekvecne pasmo bola tak lakava ze som sa rozhodol kompletne prepisat load/save rutinky na tento sposob zaznamu s kodovanim bitov do polperiod.
A napodiv to (s +2 kazetakom) aj celkom pekne fungovalo, dokonca ani s 10101010 nebol problem, akurat to obcas sporadicky robilo take zvlastne chyby - ak po vela nulovych bitoch nasledovalo viac jednotkovych bitov, tak posledny nulovy bit to vyhodnotilo ako jednotku. Pri loadovani screenu to bolo pekne vidno - cierne plochy (pri defaultnych farbach INK 0 PAPER 7) mali sem-tam na svojej lavej strane este jeden trciaci pixel navyse :)
Podla mna ak by som v rutinke poriadne odladil casove konstanty pre rozhodovanie medzi 0 a 1 tak by to mohlo pekne fungovat. Otazka ale je, ci by pre iny kazetak nebolo treba tieto konstany nastavit inak.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 23.02.2024, 12:04 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 903
Has thanked: 51 times
Been thanked: 230 times
PotPalo píše:
Ono by išlo spraviť aj aby bol tvorený polovicou sínusovky,... Totiž bežný magnetofón sám hľadá stred medzi vrchnou a spodnou polovicou sínusovky záznamu. Pri plnej sínusovke je to v strede, signál je symetrický (dá sa to predstaviť ako vlnovka rôznej hustoty ktorej stredom prechádza vodorovná čiara). Ale keby sme mali uložiť 101010101010 do pol sínusoviek, tak hore máme 1 teda dlhé, dolu 0 teda krátke, a vznikne nesymetrický záznam (vlnovka, ale čiara by prechádza nie v strede, ale o kus nižšie, vrchné časti väčšie ako spodné). Magnetofón by určil stred signálu, a vzniklo by nám čosi, čo je všade rovnaké, teda medzi 1 a 0.

Na to by sa našlo riešenie:
00 - dve krátke polperiódy I¯I_I
11 - dve dlhé polperiódy I¯¯I__I
10 - dlhá a krátka, krátka a dlhá I¯¯I_I¯I__I
01 - krátka a dlhá, dlhá a krátka I¯I__I¯¯I_I
čiže by sa ušetrila cca 1/4 času (priemerne 3 polperiódy na 2 bity), a stred signálu by zostal ± zachovaný. Pri nahrávaní 48k hry úspora času vyše 1 minúty.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 23.02.2024, 12:26 
Online
Pan Štábní
Uživatelský avatar

Registrován: 21.01.2021, 11:05
Příspěvky: 1639
Bydliště: Pardubice
Has thanked: 29 times
Been thanked: 248 times
Nastávali by okamžiky, kdy je tam jen jedna půlvlna, takže to zrovna můžeš použít jen jednu půlvlnu.

_________________
Praxe znamená, že vše funguje, ale nevíme proč. Teorie znamená, že vše víme, ale nic nefunguje.
Někdy je teorie spojena s praxí. Znamená to, že nic nefunguje a nikdo neví proč ...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 23.02.2024, 12:40 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
Martin1 píše:
Na to by sa našlo riešenie:
00 - dve krátke polperiódy I¯I_I
11 - dve dlhé polperiódy I¯¯I__I
10 - dlhá a krátka, krátka a dlhá I¯¯I_I¯I__I
01 - krátka a dlhá, dlhá a krátka I¯I__I¯¯I_I
čiže by sa ušetrila cca 1/4 času (priemerne 3 polperiódy na 2 bity), a stred signálu by zostal ± zachovaný. Pri nahrávaní 48k hry úspora času vyše 1 minúty.
Zbytocne komplikovane a prinos maly.
To uz je lepsie pouzit napriklad OTLA turbo loader ktory pouziva sice vzdy celu sinusovu periodu (takze nie je problem s magnetofonmi) ale koduje rovno dva bity naraz do styroch roznych dlzok sinusovky:

00 - |¯¯¯¯|____|
01 - |¯¯¯¯¯|_____|
10 - |¯¯¯¯¯¯|______|
11 - |¯¯¯¯¯¯¯|_______|

co mu pri temer nezmenenej potrebe na frekvence pasmo umozni az dvojnasobny tok dat.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 23.02.2024, 12:45 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 903
Has thanked: 51 times
Been thanked: 230 times
Busy píše:
Zbytocne komplikovane a prinos maly.
To uz je lepsie pouzit napriklad OTLA turbo loader ktory pouziva sice vzdy celu sinusovu periodu (takze nie je problem s magnetofonmi) ale koduje rovno dva bity naraz do styroch roznych dlzok sinusovky:

00 - |¯¯¯¯|____|
01 - |¯¯¯¯¯|_____|
10 - |¯¯¯¯¯¯|______|
11 - |¯¯¯¯¯¯¯|_______|

co mu pri temer nezmenenej potrebe na frekvence pasmo umozni az dvojnasobny tok dat.

Ale OTLA funguje na CD/MP3, ale nie je spolahliva na Emgetonke v mgf . K tomu by uz boli potrebne nejake samoopravne algoritmy.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 23.02.2024, 14:26 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
Martin1 píše:
Ale OTLA funguje na CD/MP3, ale nie je spolahliva na Emgetonke v mgf . K tomu by uz boli potrebne nejake samoopravne algoritmy.
Jasne, ale to nie kvoli vyssie popisanemu sposobu modulacie, ale kvoli tomu ze pouziva aj ovela vyssie frekvencie (kratsie periody sinusoviek). Pokial by sa pouzilo frekvencne pasmo podobne ako klasicke 1500Bd (popr. 3000 Bd) tak by to pekne fungovalo aj s paskou.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak funguje ukládání na pásku
PříspěvekNapsal: 23.02.2024, 14:53 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 903
Has thanked: 51 times
Been thanked: 230 times
Busy píše:
Jasne, ale to nie kvoli vyssie popisanemu sposobu modulacie, ale kvoli tomu ze pouziva aj ovela vyssie frekvencie (kratsie periody sinusoviek). Pokial by sa pouzilo frekvencne pasmo podobne ako klasicke 1500Bd (popr. 3000 Bd) tak by to pekne fungovalo aj s paskou.

Za ideálnych okolností a kvalitnej technike áno. Keď si spomeniem, ako kolísala rýchlosť pri prehrávaní na našom tuzexovom mgf, tak asi by to celkom spoľahlivé nebolo. Ale stálo by za pokus otestovať to.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 26 ]  Přejít na stránku Předchozí  1, 2

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 18 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz