информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаАтака на InternetПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Надеюсь, ты делаешь это в чистом досе ? 20.11.02 11:22  Число просмотров: 1186
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
Или раньше, ибо под виндой с винтом работать просто так не выйдет ;)
<programming>
[low hdd] command write sectors(s) 30h 18.11.02 04:01  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
не могу записать сектор на хард..
использую команду 30h,31h (W.S.)
вообщем что происходит:
-загоняю необходимые ей регистры (sc,sn,cl,ch....)
-загружаю регистр команд CR
- читаю регистр состояния SR (читаю сразу без какой-л задержки!(равно как и с ней))
- бамц а там 58h... то есть все круто но без БИТА BSY
(по протоколу PO он должен быть установлен... да и вообще я прочел SR сразу после команды[чтобы команда ни делала устройство должно реагировать на нее установлением BSY])
вопрос почему?!?!?!
----
вообщем как вывод - ниче не работает
ps значение 58 возникало на двух хардах...
[Low HDD] ошибка в протоколе PIO??? 19.11.02 21:08  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> не могу записать сектор на хард..
> использую команду 30h,31h (W.S.)
> вообщем что происходит:
> -загоняю необходимые ей регистры (sc,sn,cl,ch....)
> -загружаю регистр команд CR
> - читаю регистр состояния SR (читаю сразу без какой-л
> задержки!(равно как и с ней))
> - бамц а там 58h... то есть все круто но без БИТА BSY
> (по протоколу PO он должен быть установлен... да и вообще я
> прочел SR сразу после команды[чтобы команда ни делала
> устройство должно реагировать на нее установлением BSY])
> вопрос почему?!?!?!
> ----
> вообщем как вывод - ниче не работает
> ps значение 58 возникало на двух хардах...
------------
хмм вот что обнаружил - на некоторых хардах сразу после команды WS рег.состаяния имеет значение D0h (бит BSY установлен;-)
смотрим что дальше - Немного погодя этот бит сбрасывается и устанавливается бит DRQ (дальше соотвественно записав данные все выполняется)
вопрос - почему сбрасывается BSY??
в протоколе PO(pio) опубликованном у в.кулакова наоборот перед передачей BSY устанавливается
Надеюсь, ты делаешь это в чистом досе ? 20.11.02 11:22  
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
Или раньше, ибо под виндой с винтом работать просто так не выйдет ;)
код 20.11.02 13:50  
Автор: kar Статус: Незарегистрированный пользователь
Отредактировано 21.11.02 22:25  Количество правок: 1
<"чистая" ссылка>
> Или раньше, ибо под виндой с винтом работать просто так не
> выйдет ;)
ну есесно.. я писал что запись проходит нормально.. меня все интересует бит bsy
вот если хочешь посмотри у себя(хард на примари мастер):
.386
DATA segment use16
sector512 db 512 dup (0)
sectoraddress dd ?
tblhex db '0123456789ABCDEF'
standardATAbases dw 1f0h,170h
channelnumber db ?
disknumber db ?
ATAfeatures db ?
ATAsectorcount db ?
ATAsectornumber db ?
ATAcylinder dw ?
ATAhead db ?
ATAaddressmode db ?
ATAcommand db ?
ATAbaseportaddr dw ?
deverrorcode db ?
optime dd ?
DATA ends
CODE segment use16
assume cs:CODE,ds:CODE,fs:DATA
begin:
push DATA
pop fs
push fs
pop ds
push 0b800h
pop es

mov fs:[channelnumber],1
mov fs:[disknumber],0
mov 1 ptr fs:[ATAsectorcount],1
mov 1 ptr fs:[ATAsectornumber],5Eh ;просто число
mov 2 ptr fs:[ATAcylinder],0
mov 1 ptr fs:[ATAhead],0
mov 1 ptr fs:[ATAaddressmode],1
mov 1 ptr fs:[ATAcommand],30h
call cmd2HDD
cmp fs:[deverrorcode],0
jnz e_exit

;delay 20ticks
push es
push 0000
pop es
mov eax,es:[046ch]
mov fs:[optime],eax
wait1:
mov eax,es:[046ch]
sub eax,fs:[optime]
cmp eax,20
jb wait1
pop es

;DUMP SR! (=58h)
; mov di,80
; mov dx,fs:[ATAbaseportaddr]
; add dx,7
; in al,dx
; mov ah,0AAh ;можно не писать
; call dumpAX

;write sector
mov si,offset sector512
mov dx,fs:[ATAbaseportaddr]
mov cx,256
rep outsw
exit:
mov ax,4c00h
int 21h
e_exit:
mov di,0
mov ax,0EFEFh
call dumpAX
jmp exit
;---------------------------------------------------------------------------------------
cmd2HDD proc
pusha
push es
push 0000
pop es

mov fs:[deverrorcode],0
mov bh,0
mov bl,fs:[channelnumber]
dec bx
shl bx,1
mov ax,fs:[bx+standardATAbases]
mov 2 ptr fs:[ATAbaseportaddr],ax

mov dx,fs:[ATAbaseportaddr]
add dx,6
mov al,fs:[disknumber]
shl al,4
or al,10100000b
out dx,al

mov eax,es:[046ch]
mov fs:[optime],eax

inc dx
waitHDready:
mov eax,es:[046ch]
sub eax,fs:[optime]
cmp eax,3
ja @err1
in al,dx
test al,80h
jnz waitHDready
test al,08h
jnz waitHDready
test al,32
jnz @err1

mov dx,fs:[ATAbaseportaddr]
inc dx
mov al,fs:[ATAfeatures]
out dx,al
inc dx
mov al,fs:[ATAsectorcount]
out dx,al
inc dx
mov al,fs:[ATAsectornumber]
out dx,al
inc dx
mov ax,fs:[ATAcylinder]
out dx,al
inc dx
mov al,ah
out dx,al
inc dx
mov al,fs:[disknumber]
shl al,4
or al,10100000b
or al,fs:[ATAhead]
mov ah,fs:[ATAaddressmode]
shl ah,6
or al,ah
out dx,al

inc dx
mov al,fs:[ATAcommand]
out dx,al
jmp @end1
@err1: mov fs:[deverrorcode],1
@end1:
pop es
popa
retn
endp cmd2HDD
;------
dumpAX proc ;input ds=DATA!
push bx
push ax
and ax,0f0h
shr ax,4
mov bx,offset tblhex
xlat
mov es:[di],al
inc di
inc di
pop ax
push ax

and ax,0fh
xlat
mov es:[di],al
inc di
inc di
pop ax
push ax

and ax,0f000h
shr ax,12
xlat
mov es:[di],al
inc di
inc di
pop ax
push ax

and ax,0f00h
shr ax,8
xlat
mov es:[di],al
inc di
inc di
pop ax
pop bx
retn
dumpAX endp
CODE ends
end begin
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach