User Tag List

Показано с 1 по 10 из 287

Тема: ПК8000 - Контроллер дисковода

Древовидный режим

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

    Регистрация
    18.02.2010
    Адрес
    г. Пенза
    Сообщений
    407
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    68
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dk_spb Посмотреть сообщение
    DISK1.TXT DISK3.TXT
    На первом дисковый бейсик, которого пока больше нигде нет. Очень интересует. На втором какие-то самопальные бейсик-программы. Тоже неплохо бы взглянуть. Ну и можно DISKU, если не затруднит.


    Цитата Сообщение от dk_spb Посмотреть сообщение
    Минуточку!!! То есть программка из ПЗУ для выбора дисковода А пишет в 7FF7 значение 0x01 !?!?!?!
    А кто, простите, будет MotorON делать!?!?! Надо же писать 0x21 для дисковода А и 0x42 для дисковода B.
    Нет, не надо. Запись в 0x7FF7 - это чисто программный сброс ВГ93. Сбрасываются только внутренние регистры, а механика не трогается! Собственно поэтому я долго не мог понять код инициализации - вначале сбрасывают регистры, а затем подают команду "восстановление", основная цель которой - это возврат головок на нулевую дорожку. Но, когда регистры ВГ93 сброшены, то возврата головок не будет, так как контроллер итак считает, что они уже на нулевой дорожке. В общем, поначалу я считал, что код инициализации ошибочным и нерабочим. А потом внимательно присмотрелся к подпрограмме чтения сектора. В ней перед чтением всегда вызывается подпрограмма позиционирования головок. А вот здесь то собака и зарыта:
    Код:
    ROM:4084 fdd_doSeek:
    < cut here - преобразование логического адреса в физический >
    ROM:4096                 sta     drvLines        ; drvLines = (physDisk+1) | (physSide << 4)
    ROM:4099                 call    fdd_MotorOn ; <<--- включаем мотор
    ROM:409C                 dcx     h               ; HL = &nSector
    ROM:409D                 call    fdd_BreakCmd
    ROM:40A0                 mov     a, m
    ROM:40A1                 sta     IO_SECTOR
    ROM:40A4                 ldax    d
    ROM:40A5                 sta     IO_TRACK        ; номер предыдущей дорожки (для команды поиска)
    ROM:40A8                 dcx     h               ; HL = &nTrack
    ROM:40A9                 mov     a, m
    ROM:40AA                 stax    d               ; обновляем lastTrack[nDisk]
    ROM:40AB                 ora     a
    ROM:40AC                 jz      do_seek_to_track0 ; <<--- переход на сброс дискогрыза!!!
    ROM:40AF                 sta     IO_DATA
    ROM:40B2                 lda     ctrlConfig
    ROM:40B5                 ori     10h             ; команда "поиск"
    ROM:40B7                 jmp     fdd_SendCmd
    -------------------------------------------
    ROM:43B2 do_seek_to_track0:
    ROM:43B2                 lda     ctrlConfig      ; !!!A=0
    ROM:43B5                 ani     3
    ROM:43B7                 ori     8               ; команда "восстановление"
    ROM:43B9                 jmp     fdd_SendCmd
    То есть, при старте компа происходит загрузка с нулевой дорожки, которая реализована как команда сброса (восстановление) дискогрыза (подпрограмма do_seek_to_track0)! И здесь сброс происходит уже как положенно - при включенном моторе.
    В общем, очередное интересное решение от наших предков

    - - - Добавлено - - -

    Цитата Сообщение от dk_spb Посмотреть сообщение
    но на тике нельзя выставить включение мотора по выбору привода, приходится мотор всегда включенным держать.
    А зачем включать мотор при выборе привода? Мотор в подпрограммах БИОС всегда включается отдельно, при любых операциях чтения/записи/позиционирования.
    У меня похожая проблема с япошкой от писюка. Сектор читает, а дальше сбой. Вынимаешь диск, вставляешь - читает дальше, опять один сектор, после чего опять ошибка. В общем, нужно постоянно вставлять/вынимать диск. Это видимо несоответствие некоторых контактов старых и писюшных дисководов. Я где-то видел решение этого вопроса, но так и не попробовал, поскольку пока нужды не было.
    Последний раз редактировалось DemonId7; 18.06.2017 в 23:04.

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

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

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

Похожие темы

  1. Контроллер дисковода
    от andrew76 в разделе Внешние накопители
    Ответов: 55
    Последнее: 12.04.2024, 16:33
  2. Ответов: 26
    Последнее: 25.01.2019, 18:31
  3. Ответов: 24
    Последнее: 30.04.2016, 23:47
  4. Не работает контроллер дисковода GRM2+
    от Shnurkov в разделе Внешние накопители
    Ответов: 5
    Последнее: 16.03.2009, 00:59
  5. Куплю контроллер дисковода для УКНЦ
    от tnt23 в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 27.02.2009, 08:51

Ваши права

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