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...
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...

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 ...
