User Tag List

Страница 7 из 36 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 371

Тема: Винчестер УКНЦ

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,930
    Спасибо Благодарностей отдано 
    107
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Atari Посмотреть сообщение
    Насколько мне помнитсо, ждать BUSY вечно нельзя...
    Можно. Но смысла нет.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,058
    Спасибо Благодарностей отдано 
    1,159
    Спасибо Благодарностей получено 
    1,480
    Поблагодарили
    528 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В первый раз прочитал сектор -- команда 20h начала работать:



    На прошивке Олега, правда, пока ничего не получилось.

    rzk, а ты не помнишь какой загрузчик использовался с этим винчестером -- этот или Олега?
    Последний раз редактировалось nzeemin; 08.03.2010 в 19:40.

  4. #3

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    362
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    rzk, а ты не помнишь какой загрузчик использовался с этим винчестером -- этот или Олега?
    Вообще-то в этих образах везде драйвер ID.SYS от "Электронных работ", а драйвера WD.SYS от Олега Ховайко нигде нет.
    Кстати, там еще подпорчена таблица разделов, их реально 6, а не 8, как в таблице. Еще размеры реальных разделов другие. Надо подправлять таблицу и контрольную сумму в конце первого сектора.

  5. #4

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    362
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    На прошивке Олега, правда, пока ничего не получилось.
    А прошивка от Олега спотыкается на этом кусочке кода:
    Код:
    TstHDD	= :.+2
    11$:	mov	#-1,r0
    	bmi	11$
    	
    	tstb	r0
    	beq	14$
    	cmpb	r0,#377
    	bne	17$
    	.Eprint	NoPwr
    14$:	.Eprint	NoCab
    
    17$:	Call	sb$r			; Читаем мастер-блок
    
    ...............................................................................
    
    	mov	#TstHDD/2,@#Rap
    	mov	@#110000,@#Rdp
    Тут такое дело, что регистры с 1F1 по 1F7 являются 8-битными, т.е. старший байт не задействован. По идее он (старший байт) висит в воздухе, а это электрически "единица", QBUS инвертирует их в логический "ноль". Так что надо, чтобы в эмуляторе регистры с 110000 по 110014 читались с нулевым старшим байтом.

  6. #5

    Регистрация
    04.03.2010
    Адрес
    Москва
    Сообщений
    4
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кажется Олега, я помню строчку про Oleg H., но я не уверен.

  7. #6

    Регистрация
    22.07.2007
    Адрес
    St.Petersburg
    Сообщений
    610
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    nzeemin, как понимаю, драйвер Oleg H требует чтобы команда IDENTIFY работала.

    http://www.win.tue.nl/~aeb/linux/Lar....html#identify

  8. #7

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,058
    Спасибо Благодарностей отдано 
    1,159
    Спасибо Благодарностей получено 
    1,480
    Поблагодарили
    528 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlecV Посмотреть сообщение
    nzeemin, как понимаю, драйвер Oleg H требует чтобы команда IDENTIFY работала.

    http://www.win.tue.nl/~aeb/linux/Lar....html#identify
    Да до этого не доходит даже, там что-то другое совсем.
    А команды я реализую по мере необходимости.

  9. #8

    Регистрация
    04.03.2010
    Адрес
    Washington, DC
    Сообщений
    28
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Cчас доступа к полному исходнику у меня нет, поэтому отвечаю по памяти, что за 10 лет не выветрилось.
    Тот кусок кода:

    TstHDD = :.+2
    11$: mov #-1,r0
    bmi 11$

    Смысл его такой:
    Крутим цикл ожидания до тех пор, пока другой процесс из ПП не заменит "-1"
    внутри команды "mov" на код возврата. Тогда этот цикл разблокируется и бежит анализировать код возврата. Там действительно, насколько я помню, при копировании старший байт передаётся как 0, что сбрасывает флаг N и разблокиркет цикл, так как BMI не срабатывает.

    Извините за несколько "лихой" стиль программирования, но когда писал драйвер - стремился выжать его как по скорости, так и по обьёму. А что эмулятор будет - тогда догадаться не мог...
    Кстати, когда сравнивал быстродействие своего драйвера с ЭРовским, мой на ~20% быстрее работал при прямом копировании.
    И мой ЦП не завешивает в ожидании завершения I/O. Всё честно через виртуальное прерывание сделано, по Power Halt...

  10. #9

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,058
    Спасибо Благодарностей отдано 
    1,159
    Спасибо Благодарностей получено 
    1,480
    Поблагодарили
    528 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    При загрузке ПЗУшкой от "Электронных работ" (трасса записи в порты винчестера):

    HDD Write 1f4 <-- 0xffff
    HDD Write 1f4 <-- 0xff00
    HDD Write 1f4 <-- 0xffff
    HDD Write 1f4 <-- 0xff00
    HDD Write 1f6 <-- 0xff00
    HDD Write 1f5 <-- 0xff00
    HDD Write 1f4 <-- 0xff00
    HDD Write 1f3 <-- 0xff01
    HDD Write 1f2 <-- 0xff01
    HDD Write 1f7 <-- 0x0020
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=1, SC=1
    HDD Write 1f2 <-- 0xf522
    HDD Write 1f6 <-- 0x0009
    HDD Read sector complete
    HDD Write 1f7 <-- 0x0091
    HDD COMMAND 91 (SET CONFIG): H=9, SC=33

    Вот здесь непонятка -- получается что сначала задаются параметры следующей команды, но затем завершается передача сектора, что приводит к декременту sector_count (SC, порт 1F2). В результате команда 91h получает параметр SC=33, что конечно неверно и в дальнейшем приводит к ошибкам позиционирования.
    Либо я тут неправильно понимаю логику SC и он должен уменьшаться до завершения передачи данных сектора -- но неясно в какой момент.

    Если быть точным, то установка параметров команды 91h происходит сразу же после чтения первых двух байт сектора:
    HDD Read 1f7 0xffd0
    HDD Read 1f7 0xffd0
    HDD Read 1f7 0xff58 ; Снят сигнал BUSY
    HDD Read 1f7 0xff58
    HDD Read 1f0 0xf5dd ; Прочитаны первые два байта 1-го сектора
    HDD Write 1f2 <-- 0xf522 ; Установка параметров команды 91h
    HDD Write 1f6 <-- 0x0009
    HDD Read 1f0 0x5d4d
    HDD Read 1f0 0x5d4d

    UPD: В общем, сделал пока декремент счётчика непосредственно перед началом чтения -- вроде как работает.

    Сейчас уже загружает ряд блоков, но в итоге всё равно выпадает в СТОП:

    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=1, SC=1
    HDD COMMAND 91 (SET CONFIG): H=9, SC=34
    ; Тут выбор раздела 0
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=2, SC=1 ; 0-й блок тома: начальный загрузчик
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=4, SC=4 ; 2-5 блоки: загрузчик монитора
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=8, SC=2 ; 6-7 блоки: каталог
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=10, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=12, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=14, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=16, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=23, SC=1
    HDD COMMAND 20 (READ MULT): C=0, H=5, SN=27, SC=1
    HDD COMMAND 20 (READ MULT): C=0, H=5, SN=27, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=22, SC=1
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=26, SC=33
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=25, SC=1
    Последний раз редактировалось nzeemin; 09.03.2010 в 21:36.

  11. #10

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    362
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Вот здесь непонятка -- получается что сначала задаются параметры следующей команды, но затем завершается передача сектора, что приводит к декременту sector_count (SC, порт 1F2). В результате команда 91h получает параметр SC=33, что конечно неверно и в дальнейшем приводит к ошибкам позиционирования.
    Либо я тут неправильно понимаю логику SC и он должен уменьшаться до завершения передачи данных сектора -- но неясно в какой момент.

    Если быть точным, то установка параметров команды 91h происходит сразу же после чтения первых двух байт сектора:
    HDD Read 1f7 0xffd0
    HDD Read 1f7 0xffd0
    HDD Read 1f7 0xff58 ; Снят сигнал BUSY
    HDD Read 1f7 0xff58
    HDD Read 1f0 0xf5dd ; Прочитаны первые два байта 1-го сектора
    HDD Write 1f2 <-- 0xf522 ; Установка параметров команды 91h
    HDD Write 1f6 <-- 0x0009
    HDD Read 1f0 0x5d4d
    HDD Read 1f0 0x5d4d
    Действительно странно как-то, чувствую надо дизассемблировать IDDRIV.SAV для того, чтобы понять логику работы.

    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=1, SC=1
    // Читается мастер-блок с информацией о разделах
    HDD COMMAND 91 (SET CONFIG): H=9, SC=34
    ; Тут выбор раздела 0
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=2, SC=1
    // Чтение первичного загрузчика (он же содержит драйвер чтения)
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=4, SC=4
    // Чтение вторичного загрузчика
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=8, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=10, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=12, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=14, SC=2
    HDD COMMAND 20 (READ MULT): C=0, H=0, SN=16, SC=2
    // Чтение каталога. Здесь вторичный загрузчик ищет сам файл операционной системы, драйвера
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=23, SC=1
    // Чтение доп.части вторичного загрузчика
    HDD COMMAND 20 (READ MULT): C=0, H=5, SN=27, SC=1
    // Чтение нулевого блока драйвера винча ID.SYS
    HDD COMMAND 20 (READ MULT): C=0, H=5, SN=27, SC=2
    // Чтение всего драйвера ID.SYS. Здесь вторичный загрузчик должен переместить его в ОЗУ ближе к 160000, примерно 157*** с чем-то
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=22, SC=1
    // Чтение доп.части вторичного загрузчика
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=26, SC=33
    // Чтение самой операционной системы. Читается KMON, USR и RMON
    HDD COMMAND 20 (READ MULT): C=0, H=3, SN=25, SC=1
    // Чтение доп.части вторичного загрузчика

Страница 7 из 36 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Игры на УКНЦ
    от Titus в разделе ДВК, УКНЦ
    Ответов: 125
    Последнее: 29.12.2020, 23:12
  2. Реплика КМД УКНЦ
    от tnt23 в разделе ДВК, УКНЦ
    Ответов: 451
    Последнее: 26.06.2020, 15:07
  3. Дискетки от УКНЦ
    от ZXSlaver в разделе ДВК, УКНЦ
    Ответов: 12
    Последнее: 15.11.2009, 17:25
  4. Куплю SCSI-Винчестер (50pin)
    от AlexFantasy в разделе Барахолка (архив)
    Ответов: 10
    Последнее: 28.03.2009, 11:31

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •