Stránka 1 z 3

Záchrana dat z harddisku pomocí ZX Spectra.

Napsal: stř 25. srp 2004, 13:04
od Bathory
Legendární počítač zachraňuje data z harddisku na PC.
Pane jo, asi ho vyndám ze skříně a vyzkouším na svůj starej 630MB Seagate. :)

http://www.cdr.cz/a/11495

Napsal: stř 25. srp 2004, 13:10
od Borg
Taky jsem to četl, fakt zajímavé. Ale zřejmě je to jen díky tomu prográmku, který si tam vytvořili. Asi by to fungovalo i na dnešním hardware, jen to chce odpovídající software. :?

Zajímavej je i ten ide řadič :roll: .

Napsal: stř 25. srp 2004, 13:58
od random
Zaujimave to je..... :-D ....., ale je mozne ze na jednoduchsie by bolo napisat podobny program na sucasnom HW ....... len malokto disponuje zaloznim ZX Spectrom ..... a ta doba trvania kopirovania ( 8 dni, ako sa uvadza v clanku ) ....... by asi na sucasnom HW bola omnoho rychlejsia.......

Napsal: stř 25. srp 2004, 20:46
od Bathory
random píše:Zaujimave to je..... :-D ....., ale je mozne ze na jednoduchsie by bolo napisat podobny program na sucasnom HW ....... len malokto disponuje zaloznim ZX Spectrom ..... a ta doba trvania kopirovania ( 8 dni, ako sa uvadza v clanku ) ....... by asi na sucasnom HW bola omnoho rychlejsia.......
Já ZX Spectrum ještě mám, dokonce 128KB verzi s 3 kanálovým zvukovým AY chipem. Kdysi jsem měl i gumáka, z toho ale lezly strašný (beep) zvuky.

Docela by mě zajímalo, jestli to kopírovali v jednom tahu. Tyhle kompy měli pasivní chladiče a po pár hodinách byly jak pěťák rozpálený, ale vždy to vydrželo a to jsem ho měl puštěnej kolikrát i víc jak 24 hodin.
Procesor měl okolo 3,5MHz. :)

Napsal: ned 29. srp 2004, 09:47
od MaWa
je to fake...popíšu proč...

"...dle výsledků to vypadalo na poškozenou hlavu nebo poškozené plotny..." ...aha, a plotny a hlavičky se opraví pokud použijete nějaký zx spectrum řadič ? proč to musí být zrovna zx spectrum řadič ? no aby to bylo zajímavé, ne ? ha ha ha :lol:

"V té době jsme (kromě zuřivého hraní her samozřejmě) vyráběli a prodávali diskový řadič MB-02+..." ...aha, takže 15let starý řadič umí 48bit LBA (disk je to údajně 160gb) ? no LOL....to je na quinessovu knihu rekordů... :lol:

"Což takhle zkusit naklonovat vadný harddisk na zdravý na té nejnižší úrovni - na úrovni ATA příkazů...." ....aha, on jinak řadič (software) s diskem komunikuje nějak jinak ? :lol:

"Narazí-li ZXCLONATOR na vadnou oblast, lze ji rychle přeskočit o určitý počet sektorů. "...aha, a jak ten SW pozná, že to je nereadable oblast, než že to vyzkouší ? a když to vyzkouší, tak se disk sekne v nekonečném pokusu o přečtení...stále nechápu, jak v tomto ten SW jako pomůže ? to samé lze naprogramovat i mimo ZX spectrum na normálním pc... (zapíšeme pozici lba kde se to seklo a po restartu zkusíme číst další sektor...)...a proč to dělali zrovna na zx spectru ? no aby to bylo zajímavé....a proč to má být zajímavé ? protože jsou prázdiny a je to fake... :roll:

navíc....jedna základní věc...nesouhlasí lba těch disků, když to mají být 160ky...prostě fake :roll:

Napsal: ned 29. srp 2004, 10:44
od Bathory
MaWa píše:Narazí-li ZXCLONATOR na vadnou oblast, lze ji rychle přeskočit o určitý počet sektorů. "...aha, a jak ten SW pozná, že to je nereadable oblast, než že to vyzkouší ? a když to vyzkouší, tak se disk sekne v nekonečném pokusu o přečtení...stále nechápu, jak v tomto ten SW jako pomůže ? to samé lze naprogramovat i mimo ZX spectrum na normálním pc... (zapíšeme pozici lba kde se to seklo a po restartu zkusíme číst další sektor...)...a proč to dělali zrovna na zx spectru ? no aby to bylo zajímavé....a proč to má být zajímavé ? protože jsou prázdiny a je to fake... :roll:
Nevidím důvod, proč by ten software neměl poznat, že se jedná o nereadable oblast, pokud byl na to naprogramovanej a kor s takhle starým řadičem. Tohle neni PC, kde by ses určitě dostal do nekonečnýho smyčky v čtení, ale ve strojáku, respektive v assembleru si toho můžeš dovolit vůči hardware mnohem víc, obzvlášť, když si ho ušiješ na míru podle potřeby.

Nevím, jestli 15let starý řadič umí 48bit LBA a jak moc je to pro tohle důležitý, ale v tomhle je tak trochu kouzlo ZX Spectra, je to, nebo byl naprosto vyjmečný počítač, na kterým se podařilo to, co by vlastně nikdy ani nemělo jít.
S přídavným hardwarem, který se postupně pro tyhle kopmy vyráběl, si zkušený programátor v assebleru dělal co chtěl. Kamarád si ze ZX udělal telefonní záznamník, běžně se k němu připojovali tiskárny používané na PC, (já ji takhle měl taky), 6 kanálová muzika na ZX128+, ačkoliv byl v základu 3kánálový AY chip a spousta dalších věcí, na který už si ani nevzpomenu ........
Ke konci éry se běžně používaly místo magneťáků disketovky, systém nazvaný jestli si dobře pamatuju M-DOS, ne nepodobný MS-DOSu z PC.
Navíc to byl 8bitový počítač, který v té době zpracovával 16bitové instrukce!

Tohle už ale asi většině lidí nic neříká a kor assembler, všichni programujete v tzv. vyšších programovacích jazycích (PHP, Basic atd.), což je výhoda pro jednoduchost a rychlost napsání nějakého programu, ale nevýhoda v pomalosti kódu a určitý věci (jako třeba práce s bity) by ani napsat nešli.

Určitě by šlo tohle všechno udělat na PC, o tom jsem pevně přesvědčen, ale asi už na něm neumí programovat, proto to udělali na ZX. On se assembler na ZX a PC přece jenom trochu liší :wink:

//Edit: tak ten řadič to asi umí, koukni na screenfoto u toho článku, netvrdím, že se to nedá zfalšovat, ale to už bys pak nesměl věřit ničemu

//Edit2: malá ukázka, co se taky dalo k ZX všechno připojit:
http://www.volny.cz/sinclair128/

Napsal: ned 29. srp 2004, 11:05
od MaWa
Bathory píše:Nevidím důvod, proč by ten software neměl poznat, že se jedná o nereadable oblast, pokud byl na to naprogramovanej a kor s takhle starým řadičem. Tohle neni PC, kde by ses určitě dostal do nekonečnýho smyčky v čtení, ale ve strojáku, respektive v assembleru si toho můžeš dovolit vůči hardware mnohem víc, obzvlášť, když si ho ušiješ na míru podle potřeby.
ok, tak jinak...řekni mi,jak ten SW pozná, že se ten sektor nedá přečíst, jinak než tak, že se ho pokusí přečíst ? když se ho pokusí přečíst, tak ten disk přestane reagovat. a nějakej SW mu v tom nezabrání. pochop, že SW/řadič je jedna strana mince, druhá strana je firmware/disk. to by museli přeprogramovat i firmware, aby reagoval na nějaký speciální commandy, které dostane od toho řadiče/SW...a o tom tam neni ani zmínka...a to byse přece pochlubili, ne ? ....co z toho vyplývá ? fake...

prostě aby to fungovalo, museli by si upravit celý ide rozhraní na obou stranách ( i firmware, i software)...a to pochybuju, že nějaký nadšenci do zx spectra zvládnou...

Napsal: ned 29. srp 2004, 11:57
od Bathory
MaWa píše:ok, tak jinak...řekni mi,jak ten SW pozná, že se ten sektor nedá přečíst, jinak než tak, že se ho pokusí přečíst ? když se ho pokusí přečíst, tak ten disk přestane reagovat. a nějakej SW mu v tom nezabrání. pochop, že SW/řadič je jedna strana mince, druhá strana je firmware/disk. to by museli přeprogramovat i firmware, aby reagoval na nějaký speciální commandy, které dostane od toho řadiče/SW...a o tom tam neni ani zmínka...a to byse přece pochlubili, ne ? ....co z toho vyplývá ? fake...
No pane jo, kdyby byl každej firmware u disků nebo mechanik napsanej tak, že čte pořád ve smyčce, dokud se mu to nepodaří nebo se nekousne, tak se můžeme vrátit do doby kamenný. Na co by pak byli všechny ty programy, který se snaží dostat data z poškozenýho disku, to jako napřed přepíšou firmware? Asi sotva.

Když se disk pokusí přečíst vadný sektor a nepovede se to, tak to skončí chybou, se kterou se pak musí vypořádat software a pokud software neumí testovat Flagy (alespoň tak se na ZX říkalo vnitřnímu registru, na PC to muže být jinak (neplést s registrem OS)), tak to skončí vytuhnutím. A tohle opravdu běžný software napsaný ve vyš.prog. jazyku umět nebude, na tohle už musíš vytáhnout s assemblerem, který dokáže pracovat s instrukcemi pro řízení běhu programu, které testují stavové indikátory. Potom už není problém zjistit oblast na disku, která nejde přečít a přeskočit ji.

Napsal: ned 29. srp 2004, 12:23
od pavel.minarik
to Bathory: co se týče těch flagů máš samozřejmě pravdu, ale jak se software vypořádá s možností (které skutečně může nastat) a to následující:
po nějakém ATA příkazu poslanému disku (třeba čti sektor xxx) se prostě nestane nic, žádná odezva z disku, je prostě tuhej, pak rozhodně žádný flag nenastaví a tady je SW v troubě i s assemblerem

Napsal: ned 29. srp 2004, 13:01
od Bathory
pavel.minarik píše:to Bathory: co se týče těch flagů máš samozřejmě pravdu, ale jak se software vypořádá s možností (které skutečně může nastat) a to následující:
po nějakém ATA příkazu poslanému disku (třeba čti sektor xxx) se prostě nestane nic, žádná odezva z disku, je prostě tuhej, pak rozhodně žádný flag nenastaví a tady je SW v troubě i s assemblerem
Právě proto se to dá takhle otestovat. Ty dáš příkaz ke čtení a testuješ flag, pokud je 0, tak předpokládáš, že se nic nepřečetlo a provedeš odskok do té části rutiny, která posune čtení hlavičky o pár sektorů dál. Pokud je příznak nastavenej na 1, návrat zpět a pokračuješ v dalším čtení.
Prostě se počítá, že po úspěšném načtení se vždy provede nějaká instrukce, která ten flag automaticky změní a ty ho pak na tu změnu otestuješ.
Flagy se testují v procesoru, takže ti firmware disku může být ukradenej.

A není nic divného na tom, že se v tom článku psalo o zadávání příkazů na nejnižší úrovni ATA. Windows od verze 9x přebírají samy kontrolu na disky, takže když chceš ovládat disk svými příkazy, musíš na to přes porty.

Samozřejmě, pokud je disk o začátku totálně out, tak s ním ani v assembleru nic nesvedeš.

Napsal: ned 29. srp 2004, 13:14
od pavel.minarik
hm, takhle jak to popisuješ to už zní reálně, ale pořád mám o tom článku pochybnosti, tohle je holt už na mě moc

Napsal: ned 29. srp 2004, 13:27
od Bathory
pavel.minarik píše:hm, takhle jak to popisuješ to už zní reálně, ale pořád mám o tom článku pochybnosti, tohle je holt už na mě moc
Kdybys znal assembler, tak by ti to ani nepřišlo, ale fakt je, že jsem ten jejich soft v disassembleru neviděl a těžko bych se v něm po těch letech i orientoval a nakonec, mohli to udělat i trochu jinak, já jenom nastínil určitou možnost.

Tohle jenom potvrzuje moje slova o tom, proč to neudělali na PC, je to od jednoho spoluautora toho článku:

Uprimne verim, ze software, ktery jsme napsali, by nejspis sel napsat i na PC - to ovsem znamena mit low-level znalosti na PC - a ty my nemeli.
Spectrum ale zname hardwarove dokonale, meli jsme k nemu veskery potrebny hardware a vedeli, jak s HDD zarizenim komunikovat na te nejnizsi urovni, kdy v ceste nestoji BIOS atp. Hledali jsme podobny software na PC na webu cca 2 tydny, zadny nefungoval - kazdy velmi brzy z pocatku klonovani zatuhl.
Proto bylo ZX Spectrum posledni instanci - pak uz jsme opravdu planovali poslat disk pryc. Cau.

Napsal: ned 29. srp 2004, 19:30
od MaWa
Bathory píše:Právě proto se to dá takhle otestovat. Ty dáš příkaz ke čtení a testuješ flag, pokud je 0, tak předpokládáš, že se nic nepřečetlo a provedeš odskok do té části rutiny, která posune čtení hlavičky o pár sektorů dál.
ok, znova:

stav: hlavičky a/nebo povrch disku je poškozen tak, že pokud se disk pokusí ze sektoru číst, začne jen vydávat podivné zvuky (toto popisují v tom článku)...

výsledek: testuješ, jestli se ti něco vrátí...nic se ti nevrátí...disk vytuhne...jak tomu *jakýkoliv* SW pomůže ? zbývá ti jen a pouze HW reset. jakmile ten disk vytuhne, tak SW sice může poslat nějakej další požadavek, ale disk už je zatuhlej...takže navíc pokud by to fungovalo tak jak popisuješ (při žádné odezvě posun na další sektor), tak by to přečetlo sektory až do prvnho vadného, pak by disk zatuhl, ale SW by si myslel že jen další sektory jsou všechny vadné... :roll:

a oni tam nepopisují, že by museli ten pc při obnově x-krát restartovat...

a opravdu nechápu, proč by ten SW musel být pod spectrum...vždyť se tam chvástají, že to napsali v assembleru...takže nějaký porty ve woknech by pro ně přeci byla brnkačka, ne ? no ono to přece musí být zajímavější...kdyby to bylo pro pc, tak by si toho článku všimla tak polovina lidí... :lol:

edit: a znova opakuji - nesedí jim lba !!! takže to JE fake...

Napsal: ned 29. srp 2004, 20:16
od JanoF
suhlasim s MaWom je to bacovina jedine ze by preprogramovali firmware a to pochybujem inac by sa o tom urcite zmienili :lol: :lol: :lol:

Napsal: ned 29. srp 2004, 20:21
od Geeker
Ty jsi tewn clanek asi necetl kdyz se podivas na prvni obrazek tak je tam 48 bit LBA on DMA on tak kua jaky fake. 48 bit adresovani je na urovni SW pokud ho podporuje FW HDD ne??

A ktem hlavickam kazdy bezny SW se pri chybe disku sekne protoze se snazi cist danny sektor znova kdezto tady to osetrili navic vetsina klonovaciho sw kontroluje data takze z vadnoho disku ti to neprekopiruje i kdyby se nezacykloval.

Napsal: ned 29. srp 2004, 20:49
od Jiri Drak
Jestli je to fake nevim, ale moc se mi nezda, ze by vsechny SW na zachranu dat byli natolik "inteligentni", ze nebudou umet prerusit cteni dat z vadneho sektoru, pokud disk pri cteni nezatuhne.

Napsal: ned 29. srp 2004, 20:56
od Bathory
MaWa píše:ok, znova:

stav: hlavičky a/nebo povrch disku je poškozen tak, že pokud se disk pokusí ze sektoru číst, začne jen vydávat podivné zvuky (toto popisují v tom článku)...
Ano, taky píšou: "Zkoušeli jsme několik utilit na obnovu dat z poškozených disků (např. Easy Recovery od Ontracku, R-Studio apod.), nicméně jakmile software narazil na problémovou oblast, celý systém vytuhl a bylo po záchraně dat."
Jinými slovy došlo k chybě, možná k zacyklení, pravděpodobně se disk pokouší donekonečna načíst data, nebo celý proces skončil někde na zásobníku, což mělo za následek vytuhnutí OS. Určitě to dělali pod některými Windows z posledních několika let a ty mají kontrolu nad ATA rozhraním.
MaWa píše:výsledek: testuješ, jestli se ti něco vrátí...nic se ti nevrátí...disk vytuhne...jak tomu *jakýkoliv* SW pomůže ? zbývá ti jen a pouze HW reset. jakmile ten disk vytuhne, tak SW sice může poslat nějakej další požadavek, ale disk už je zatuhlej...takže navíc pokud by to fungovalo tak jak popisuješ (při žádné odezvě posun na další sektor), tak by to přečetlo sektory až do prvnho vadného, pak by disk zatuhl, ale SW by si myslel že jen další sektory jsou všechny vadné... :roll:

a oni tam nepopisují, že by museli ten pc při obnově x-krát restartovat...
Dále píšou: "Zkusili jsme DriveCopy od Powerquestu, DOSovský klonovač harddisků HDClone... všechno bylo marné - obě utility ztroskotaly při pokusu číst z disku. Všechno bylo marné. Námi testované utility měly snahu data číst, ale úspěšnost naklonování byla mizivá - podařilo se nakopírovat pouze zlomek sektorů od začátku disku."
Už nikde ani zmíňka o tom, že by disk nebo OS vytuhl, naopak, utility měli snahu číst, ale úspěšnost byla mizivá. Proč asi? Protože to software nedovolil!

MaWa píše:a opravdu nechápu, proč by ten SW musel být pod spectrum...vždyť se tam chvástají, že to napsali v assembleru...takže nějaký porty ve woknech by pro ně přeci byla brnkačka, ne ? no ono to přece musí být zajímavější...kdyby to bylo pro pc, tak by si toho článku všimla tak polovina lidí... :lol:
Assembler pro 8bitový Zilog Z-80 a 32bitový Intel nebo AMD je přeci jenom trochu něco jiného, spousta instrukcí je stejná, či mají podobný význam, ale taky jich tu hafo navíc. A k tomu napsali toto: "Uprimne verim, ze software, ktery jsme napsali, by nejspis sel napsat i na PC - to ovsem znamena mit low-level znalosti na PC - a ty my nemeli. Spectrum ale zname hardwarove dokonale, meli jsme k nemu veskery potrebny hardware a vedeli, jak s HDD zarizenim komunikovat na te nejnizsi urovni, kdy v ceste nestoji BIOS atp. Hledali jsme podobny software na PC na webu cca 2 tydny, zadny nefungoval - kazdy velmi brzy z pocatku klonovani zatuhl.
Proto bylo ZX Spectrum posledni instanci - pak uz jsme opravdu planovali poslat disk pryc."


A jestli se někdo chvástá, že něco napsal v assembleru, tak říkám, kdo umí, umí a tomu čest. Naučit se Basic zvládne 8 letej školák ............ :wink:
MaWa píše:edit: a znova opakuji - nesedí jim lba !!! takže to JE fake...
nevím, co máš pořád s tím LBA ...

To JANOF: Je mi jasný, že šplháš u admina, ale pleť se do věcí, kterým rozumíš!!!

Napsal: ned 29. srp 2004, 23:05
od MaWa
Bathory píše:Ano, taky píšou: "Zkoušeli jsme několik utilit na obnovu dat z poškozených disků (např. Easy Recovery od Ontracku, R-Studio apod.), nicméně jakmile software narazil na problémovou oblast, celý systém vytuhl a bylo po záchraně dat."
Jinými slovy došlo k chybě, možná k zacyklení, pravděpodobně se disk pokouší donekonečna načíst data, nebo celý proces skončil někde na zásobníku, což mělo za následek vytuhnutí OS. Určitě to dělali pod některými Windows z posledních několika let a ty mají kontrolu nad ATA rozhraním.
já nepíšu o výtuhu OS, já píšu o výtuhu DISKU. pokud disk vytuhne, tak mu žádnej SW nepomůže. chápeš ? ať mu pošleš jakejkoliv command, tak ho z toho nedostaneš. jedině tak, že ho vypneš a zapneš...

Bathory píše:Dále píšou: "Zkusili jsme DriveCopy od Powerquestu, DOSovský klonovač harddisků HDClone... všechno bylo marné - obě utility ztroskotaly při pokusu číst z disku. Všechno bylo marné. Námi testované utility měly snahu data číst, ale úspěšnost naklonování byla mizivá - podařilo se nakopírovat pouze zlomek sektorů od začátku disku."
Už nikde ani zmíňka o tom, že by disk nebo OS vytuhl, naopak, utility měli snahu číst, ale úspěšnost byla mizivá. Proč asi? Protože to software nedovolil!
mohl bych reagovat na milion věcí, ale vyberu toto...
"...obě utility ztroskotaly při pokusu číst z disku...." ....proč ta jejich utilita na tom nezkrachovala ? to by mě teda fakt zajímalo...

ad LBA...dobře, znova...v tom článku je obrázek toho softwaru. jsou tam LBA čísla těch 160gb disků...jenže ty čísla odpovídají 227GB diskům...takové neexistují, a oni navíc přece tvrdí, že to byly 160ky...ale to jen tak na okraj... :lol:

edit: nežer jim to i s navijákem. pochop, že kdyby vyrobili SW, kterej dokáže obnovit zatuhnutej HDD bez hw resetu*, tak by si to nechali okamžitě patentovat a z peněz za takovej SW na obnovu dat by se váleli na bahamách na pláži....navíc...myslíš, že nějaký dva fandové na zx spectrum udělaj "za dva dny" lepší recovery SW, než firmy, pro který je to denní chleba ?

*...nehledě na to, že to je prostě nemožné, pokud by ovšem neflashnuli jimi upravený firmware do disku... :roll:

Napsal: pon 30. srp 2004, 01:35
od Bathory
MaWa píše:já nepíšu o výtuhu OS, já píšu o výtuhu DISKU. pokud disk vytuhne, tak mu žádnej SW nepomůže. chápeš ? ať

mu pošleš jakejkoliv command, tak ho z toho nedostaneš. jedině tak, že ho vypneš a zapneš...
Samozřejmě, že když vytuhne disk, tak pomůže pouze reset, ale oni psali o vytuhnutí OS, navíc za situace zkoušení ve Windows,

kdežto oprava dat proběhla přes ZX a ten řadič, (což je mimochodem kompletně funkční disketovka)
MaWa píše:mohl bych reagovat na milion věcí, ale vyberu toto...
"...obě utility ztroskotaly při pokusu číst z disku...." ....proč ta jejich utilita na tom nezkrachovala ? to by mě teda fakt

zajímalo...
Obě utility sice ztroskotaly, ale jak vidíš tak disk nevytuhl. Já nevím, jak byli ty utility udělaný, třeba nepočítaly s přeskakováním vadných sektorů, zatím co oni to do svého kódu zařadili.
MaWa píše:ad LBA...dobře, znova...v tom článku je obrázek toho softwaru. jsou tam LBA čísla těch 160gb disků...jenže ty

čísla odpovídají 227GB diskům...takové neexistují, a oni navíc přece tvrdí, že to byly 160ky...ale to jen tak na okraj... :lol:
Tady se klidně nechám poučit, jak se to dá z těch čísel poznat.
MaWa píše:edit: nežer jim to i s navijákem. pochop, že kdyby vyrobili SW, kterej dokáže obnovit zatuhnutej HDD bez hw resetu*, tak by si to nechali okamžitě patentovat a z peněz za takovej SW na obnovu dat by se váleli na bahamách na pláži....navíc...myslíš, že nějaký dva fandové na zx spectrum udělaj "za dva dny" lepší recovery SW, než firmy, pro který je to denní chleba ?

*...nehledě na to, že to je prostě nemožné, pokud by ovšem neflashnuli jimi upravený firmware do disku... :roll:
Znovu opakuju, že nikdo neobnovuje zatuhnutej hdd bez resetu, nevím, jak jsi na to vůbec přišel. V tom článku se nic takového nepíše. Měli disk, který v určité části nedokázal přečíst data, vzali ZX Spectrum a v assembleru udělali program, který dokázal detekovat vadný sektor a přeskočit ho. Aby disk vůbec mohli připojit k ZX, tak použili onen řadič a data z jednoho disku přetáhli na druhej. Veškerá komunikace s diskem šla přes porty, takže nepotřebuješ ani bios.

Nevím o co ti pořád jde, jaký fandovství, abys udělal takovejhle software, tak musíš sakra umět programovat. To si myslíš, že si někde před měsícem koupili knížku o assembleru a pustili se z vesela do programování?
Už jsem to jednou psal, tohle není Basic ani jinej jazyk s lehce pochopitelnou syntaxí, tady se tvrdě nadřeš, než se něco naučíš, ale výsledek stojí za to, protože pak máš pod kontrolou celej počítač a není pro tebe problém napsat program pro nějakou výstupní periférii přesně podle svých požadavků.

Na PC je assembler mnohem složitější, proto drtivá většina programátorů sáhne po vyšším programovacím jazyce, což je ale taky dobře, protože to u většiny aplikací stačí a kód je napsanej 100x rychleji.
Tyhle lidi dělají(li) roky do hardware a různých periférií, takže po týhle stránce jsou fakt namakaný. Já jsem kdysi za éry ZX dostal BT-100, což byla 1 jehličková tiskárna, ano nepřepsal jsem se, skutečně měla pouze 1 jehličku, přezdívalo se jí HŘEBÍK!!! Dostal jsem ji bez ovladače a tak jsem si ho spíchnul v assembleru sám, jestli se dobře pamatuju, nemělo to víc než 150 bytů a tiskárna pak normálně fachala (teda rychlost byla hrozná), připojená byla přes rozhraní UR4.
Ale udělat kompletní rutinu na hdd, vlastně dva bych si netrouf ani náhodou!!!

Tohle je v assembleru dokáže to přečíst sektor z harddisku a uložit do paměti:

ld hl,DATA
ld bc,LBASEC1
ld de,LBASEC2
call READ
ret

READ
call TST_BSY
jr nz,ERROR
ld a,b
or %11100000

COMMAND
out (187),a
ld a,1
out (171),a
ld a,e
out (175),a
ld a,d
out (179),a
ld a,c
out (183),a
ld a,#21
out (191),a
call TST_DRQ
jr nz,ERROR
ld bc,163
inir
inir
call TST_ERR
jr nz,ERROR
xor a
ret

WRITE
call TST_BSY
jr nz,ERROR
ld a,b
or %11100000
out (187),a
ld a,1
out (171),a
ld a,e
out (175),a
ld a,d
out (179),a
ld a,c
out (183),a
ld a,#31
out (191),a
call TST_DRQ
jr nz,ERROR
ld bc,163
otir
otir
call TST_ERR
jr nz,ERROR
xor a
ret

ERROR
cp 255
jr nz,ERR1
ld a,1
ret

ERR1
and %01010011
jr z,ERR2
ld a,8
ret

ERR2
ld a,128
ret

TST_BSY
push hl
push bc
ld hl,0

TST1
dec hl
ld a,l
or h
jr z,TOUT1
in a,(191)
ld b,a
and %10000000
jr nz,TST1
ld a,b
pop bc
pop hl
ret

TOUT1
ld a,255
or a
pop bc
pop hl
ret

TST_DRQ
push hl
ld hl,0

TSTDRQ1
dec hl
ld a,l
or h
jr z,TDRQ1
in a,(191)
bit 3,a
jr z,TSTDRQ1
xor a
pop hl
ret

TDRQ1
ld a,255
or a
pop hl
ret

TST_ERR
in a,(191)
and 1
ret z
in a,(167)
ret


Tahle poslední část zjišťuje, zda byla chyba. Je to o tom nastavení flagu jak jsme mluvili v předchozích postech.Tady se testuje flag ZERO (příznak nuly), který se vztahuje k registru "a".
Pokud nebyla chyba, provede se návrat instrukcí ret z, v opačném případě se pokračuje přečtením chyby a návratem. Pak už si můžeš vybrat, jestli chybu zapíšeš a pokračuješ rutinou, která posune hlavičku na další sektor a pak znovu sem a číst další, nebo vytvoříš smyčku řekněme 100 cyklů, která se pokusí o další čtení stejného místa.

Prostě, na tohle stačí v pohodě stařičké ZX Specrum 48KB+starý řadič a nepotřebuješ ani megatunvé Windows ani drahý software, veškerá komunikace jde přes porty ... :)

Napsal: pon 30. srp 2004, 10:39
od Geeker
No stejne ty data nesly precist, ale i tak e jim povedl husarsky kousek.