Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   снова про винты немо. (http://zx-pk.ru/showthread.php?t=7691)

Sayman 7th May 2008 11:55

снова про винты немо.
 
подскажите, как происходит сброс винта. по коду профинского винта там есть порт #06AB (IDESYS - Системный регистр IDE). процедура сброса хдд предположительно такая:
Code:

;  Системный сброс IDE-HDD
INITHDD:    ld  bc,06ABh
            ld  a,00001110b  ; Reset
            out  (c),a
            .........

но судя по портам немо, регистра подобного нет..или у меня не полная инфа.
и ещё, дайте ктонить пожалуста, если такой в природе есть, сорец какогонить драйвера для контроллера немо...ну или вообще, где можно глянуть на него.?

ZEK 7th May 2008 15:30

На форуме где то обсуждолось, давно
Так что ищи

Sayman 7th May 2008 21:30

пока ничего такого не нашол..
помощ требуется попрежнему.

demon_zx 7th May 2008 21:51

а зачем тебе винт сбрасывать?

Prusak 7th May 2008 22:41

Программный сброс накопителя:

LD A,SDH_VALUE ;устанавливаем нужный накопитель MASTER/SLAVE (#A0/#B0)
OUT (#D0),A ;заносим значение в SDH-регистра
LD A,%00001100 ;устанавливаем бит SRST - бит программного сброса накопителя
OUT (#C8),A ;заносим в Fixed Disk Register
LD B,0 ;делаем паузу
DJNZ $
LD A,%00001000 ;сбрасываем бит SRST
OUT (#C8),A

;далее дожидаемся готовности привода
1$ IN A,(#F0)
RLCA
JR C,1$

...

Так делается во многих программах /драйверах под Nemo-HDD
Я тоже применяю такое в своих утилитах.

demon_zx 8th May 2008 00:05

перед ожидание готовности надо снова записать нужный накопитель, иначе готовность ожидаться будет только от мастера, и можно зависнуть в итоге

Prusak 8th May 2008 00:48

Вроде бы программный сброс не сбрасывает SDH-регистр, поэтому не надо в него снова записывать накопитель. Я сейчас порылся в исходниках - нигде повторно после сброса накопитель не перезаписывается через SDH-регистр.

Я нашёл лишь упоминание, что программный сброс устанавливает значения регистров IDE по умолчанию. А что значит это "умолчание"?

demon_zx 8th May 2008 01:30

вот мастер по умолчанию и ставится, я столкнулся с такой проблемой со сбросом когда поставил себе винт на спек, при этом у меня был хитрий сдром который работал только как мастер, винт соответственно пришлось ставить на слейв, и родные немовские дрова зависали как раз в месте ожидания готовности

Sayman 8th May 2008 06:49

Quote:

Я сейчас порылся в исходниках
в каких исходниках?) не мог бы ты кинуть в меня одним из них для полного изучения?;)

Prusak 8th May 2008 18:28

Quote:

Originally Posted by demon_zx (Post 133034)
вот мастер по умолчанию и ставится, я столкнулся с такой проблемой со сбросом когда поставил себе винт на спек, при этом у меня был хитрий сдром который работал только как мастер, винт соответственно пришлось ставить на слейв, и родные немовские дрова зависали как раз в месте ожидания готовности

Странно, у меня винт Slave работал таким макаром без проблем. И тоже на немовских драйверах. Загадка какая-то...

Sayman 8th May 2008 19:58

хм...наверно исходниками никто не поделится, да?!(((((((((

demon_zx 9th May 2008 18:45

Quote:

Originally Posted by Prusak (Post 133142)
Странно, у меня винт Slave работал таким макаром без проблем. И тоже на немовских драйверах. Загадка какая-то...

ну кто их производителей знает

Добавлено через 1 минуту
Quote:

Originally Posted by Sayman (Post 133161)
хм...наверно исходниками никто не поделится, да?!(((((((((

пойдет? http://opensourcezx.untergrund.net/files/wdc1/wdc1.zip

Sayman 14th May 2008 07:36

Quote:

Originally Posted by demon_zx (Post 133344)
ну кто их производителей знает

Добавлено через 1 минуту


пойдет? http://opensourcezx.untergrund.net/files/wdc1/wdc1.zip

ток там в архиве нет сырцов...там компилированные драва)))
Хотя нет..нашол..не в тот архив залез))
сматрю в сорцы..и в те что мылом пришли тоже. у драйвера для профи есть процедурка проверки...не могу понять для чего...хм...в прогах типа formathd или assign нету ссылок на эту процедуру. странна. с какой целью воткнули её?!
по сорцам для немо подобных процедур нет. даже регистр ошибок не используют...странна..мож не там ищу?! регитр ошибок вернул значение 255 если нет винта. если есть, то знаначение "1"...т.е. всё гут...
---
так...я толи всё вапще забыл, толи просто туплю...
для того чтобы работать с винтом нам нада его найти, и вапще, если ли контроллер хдд?!
в сорце jason.asm вижу такую функцию:
Code:

INIT    IN A,(#F0) ;читаем Status Register
        CP #50      ;проверка на DSC=DRDY=1 то есть накопитель
                        ;готов и головки в установленном положении
        RET Z          ;если так, то выход

тут я вижу наверно ошибку, т.к. после "INIT", в "А" возвращается число #40. точнее говоря, если контроллер есть и если подключен винт.
но. если нет винта или нет самого контроллера, то поидее в регистре "А" получается число #FF. в этом случае флаг нуля не включён, RET Z не выполняется и функция продолжается далее и вероятнее всего должна быть ошибка....где я что упустил?
трассирую в СТС6.2.. пишу кусок кода который я привёл...в регистре А если нет винта и/или контроллера, число #FF. если винт есть, то #40. флаг Z включён если делать CP #40...тогда правильно...
кароче немогу понять....просветите тёмного человека плиз!

James DiGreze 14th May 2008 14:17

Ну там же коммент прямо говорит: DSC=DRDY=1, т.е. и DSC=1, и DRDY=1, т.е. точно не #40, т.к. у #40 только один бит = 1.
Вот же блин, мои сырцы от винта находятся за 700 верст от меня.
Поищи доки по работе с CDROM, вроде бы VEGA писал, там все подробно расписано. А я дома попробую по дискеткам пройтись, может чего и есть.

Sayman 14th May 2008 14:36

хм...понимаеш, ещё фишка в том, что я шарю под эмулем.
если глянуть в сорцы эмуля, то:
Quote:

DSC=DRDY=1, т.е. и DSC=1, и DRDY=1, т.е. точно не #40
Code:

STATUS_DRDY  = 0x40
вот... проверка в сорцах идёт через CP #50...хм..
чёто упускаю ёпт...
из сорца драйвера:
Code:

INIT    IN A,(#F0)  ;читаем Status Register
        CP #50          ;проверка на DSC=DRDY=1 то есть накопитель
                          ;готов

вот...т.е. я так понимаю, что в результате проверки должен включиться флаг нуля. но он не включается в данном конкретном случае. могет на реале и проканывает так, но в эмуле нет. под эмулем именно CP #40 даёт положительный резалт (?!)...проверил ещё раз в СТСе...да..при подрубленном контроллере немо и винте, в регистр А складывается #40... делаем CP #40, включается флаг Z, RET Z.
Code:

RET Z  ;если так, то выход
под анрылом данная функция не работает! у меня во всяком случае. эмулируемый клон - Профи.


All times are GMT +4. The time now is 20:59.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.