Konference: Počítač SHARP MZ-800 a emulátory

Od: Feri
Datum: 23.6.2008 17:54
Předmět: =?iso-8859-2?Q?nov=FD turbo loader - pros=EDm reakciu?=


body { font-family: Verdana;font-size: 13px; } p { margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px;} takže, ľudia čo tu upozornili na spektristov s ich rýchlym nahrávaním ma vyburcovali ku klasickému "a čo my sme horší?" a tak som sa rozhodol spraviť nejaké to turbo ktoré by bolo aspoň zčasti tak rýchle ako to vybájnené spektrácke...

1) nemám v úmysle loviť baudy - ich 5 miestne cifry s rýchlosťou ma nechávajú chladným, podľa mňa je podstatná životaschopnosť a jednoduchosť (vždy tvrdím, že v jednoduchosti je genialita)

2) mojim cieľom je aspoň niekoľkonásobne pokoriť doterajšiuu "magickú hranicu" trojnásobnej rýchlosti (tzn. pre začiatok budem spokojný s tak 6-10 násobkom základnej rýchlosti)

3) zatiaľ ma to baví, výsledky nesľubujem, ale je to zatiaľ na dobrej ceste.


KONCEPCIA:
inšpiroval som sa spektráckymi loadermi a mám návrh, ako získať rýchlosť: doterajšie loadery (ako už bolo napísané v mojom minulom príspevku) zachovávajú sharpovský logický formát zápisu (každý bit kódovaný ako nábežná hrana, dlhší alebo kratší peak, rovnako dlhý low signal, a tak dokola) - toto si spektristi zmenili a m7zx funguje na princípe kódovania rovno dvoch bitov v jednej vlne - prvý bit kóduje dĺžka peaku, druhý bit kóduje dĺžka low signálu - teda presne ako to robí mnou spomínaný čiarový kód. to dáva teoretické zdvojnásobenie rýchlosti - skombinované s extrémnym skrátením časových konštánt na niekoľkonásobok to teoreticky dáva (vraj) viac ako 20 násobok základnej rýchlosti...

moja koncepcia vychádza zhruba podobne, až na to že dĺžka peeku nebude dvojstavová (0/1), ale 2^n stavová, čím zakódujeme n bitov v jednej polvlne. potom prichádza na rad voľba vhodného n:
- pre n = 1 je to to čo majú spektristi, bajt je kódovaný štyrmi vlnami max. dvojnásobnej dĺžky; (pomer 18/10 => 14)
- pri n = 2 sa bajt zakóduje na 4 vlny max. štvornásobnej dĺžky; (pomer 18/6 => 12)
- pri n = 3 (presnejšie 3+3+2) sa bajt zákóduje na dve vlny osem (resp. štvor) -násobnej dĺžky; (21/4 => 12,5)
- n > 3 nemá význam - dĺžka vlny by bola 16, 32, ... násobkom pôvodnej a to je už neefektívne...

čísla v zátvorke znamenajú počet jednotiek času potrebné na zakódovanie bajtu $FF/$00, za šípkou je priemerná dĺžka pri štatisticky rovnomernom rozložení núl a jednotiek. jednotka času zodpvedá zhruba dvom samplom, takže teoretická rýchlosť pri ~12 je cca 24 samplov na bajt, takže cca 14700 baud (ak by sme chceli spektristov tromfnúť, tak nahranie programu zo samých NOPov by sa dalo rýchlosťou trojnásobnou - teda cca 44100 baud). výsledné číslo sa možno kvôli stabilite zníži, prípadne pri obetovaní spoľahlivosti, naopak, zlepší :-)

mne osobne z toho vychádz víťaz n=2 (ale pocitovo sa mi páči skôr 3, pretože všetky párne kódovania majú jednu zbytočnú hranu na konci, a navyše rozličnejšia dĺžka vlny (tzn. namiesto striedania dvoch frekvencií tam bude 8 frekvencií) bude mať asi coolovejší zvuk :-)

do pléna dávam otázky:
1) loader sa mi zatiaľ zmestí do hlavičky, takže sa rýchlejšie spustí. takto ale funguje len na single programy (štýlu basic). ak by mal loader fungovať aj na multiparty (wooky, saboteur...), tak ho treba realokovať, aby ho hlavička ďalšieho bloku neprepísala. zvažujem pod D000 (tesne pod VRAM). má niekto iný nápad kam umiestniť cca 100 bajtov kódu?

2) mám vôbec robiť loader pre multiparty? ak áno, budú musieť byť dve verzie loadera, pre singleparty (v hlavičke) a pre multiparty (realokovaný).

3) je dôležité testovanie SHIFT+BREAK? zaberá zbytočne miesto, nie je jednoduchší reset?


zatiaľ všetko, čakám na feedback...

Feri


=== reklama ======================================
http://mail.szm.com - e-mail a priestor na www stranku zadarmo
http://webhosting.szm.com - domeny a webhosting za najnizsie ceny



Ostatní příspěvky vlákna:

 
[2008/1 (9)] [2008/2 (1)] [2008/3 (7)] [2008/4 (16)] [2008/5 (22)] [2008/6 (45)] [2008/7 (9)] [2008/8 (34)] [2008/9 (134)] [2008/10 (8)] [2008/11 (3)] [2008/12 (6)]


[1999 (1)] [2000 (168)] [2001 (733)] [2002 (459)] [2003 (654)] [2004 (224)] [2005 (105)] [2006 (182)] [2007 (201)] [2008 (294)] [2009 (363)] [2010 (782)] [2011 (522)] [2012 (642)] [2013 (442)]