User Tag List

Страница 15 из 29 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 287

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

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

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

    Регистрация
    15.02.2009
    Адрес
    Зерноград
    Сообщений
    568
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Не. Я точно помню, что если дискеты нет, то происходил выход в васик.
    О как.. Но опять же, комп должен определить по состоянию ВГшки, что дискеты нет. А если кроме ПЗУ он, получается, читать ничего не может, то вот и висит всё время в ожидании чего-то..
    Интересно, что должно произойти, чтобы по адресу 7FF7h записался байт, у которого старший бит (7) равен 1. При этом долно произойти разблокировка ВГшки..

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Могу код предоставить, там немного и несложно.
    Это файл romngmd.lst, который тут выкладывали? Если он, то это у меня есть. Если что то другое, то давайте. Хотя, я мало что в асм ВМ80 понимаю.. Нужно изучать с нуля..

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    А может в оригинальной схеме ПЗУ перекрывает не весь диапазон 0x4000-0x7FFF?
    Я тоже подозреваю, что косяк может быть в дешифраторе. Но дампа РТ2 так и не сделали. И, честно говоря, не уверен, что сделают..

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Кстати, а схема и разводка без дефицитных деталей будет?
    Я делаю по оригинальной схеме. На печатке, что тут изготовили. hantarex вроде делал по какой то упрощённой схеме. Но у него (могу ошибаться) вроде тоже не заработало. Для меня на данном этапе знаний тяжело (наверно даже невозможно) самому разрабатывать железо. Если будет модернизированная и упрощённая (проверенная) схема, то я смогу развести печатку в ПКАД.
    А какие детали там дифецитные? Там, по моему, только РТ2.. Да и то не дефицит, а просто фиг где прошьёшь.. Но ведь
    придумали ей замену на рассыпухе..
    Последний раз редактировалось Mifody; 03.12.2014 в 16:51.
    ZX-Spectrum 128(краснодарский вариант)+YM+Covox+3,5" FDD+5,25" FDD+Nemo controller+HDD+CD-ROM+PS/2 Keyboard+PS/2 Mouse (остальное в проекте...) (Всё самодельное) Плата Внутри Внешний вид

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от Mifody Посмотреть сообщение
    Это файл romngmd.lst, который тут выкладывали? Если он, то это у меня есть. Если что то другое, то давайте. Хотя, я мало что в асм ВМ80 понимаю.. Нужно изучать с нуля..
    Не, у меня свой дизассемблинг. Но раз с асмом плохо, то лучше дам код на псевдовасике, так будет понятнее. Да и я обнаружил, что функция задержки работает не так как я думал до этого - она практически сразу прерывается, так как с 0x7FF8 считывается 0. В общем код:
    Код:
    START_ROM:
      [0xEE1D] = 0
      [0x7FF7] = 0x81
      [0x7FF7] = 0x01
      WAIT(0x01)
      [0x7FF7] = 0x82
      [0x7FF7] = 0x02
      WAIT(0x02)
      [0x7FF7] = 0x00
      oldmap   = INP(0x80) ; используется CP/M для вызова подпрограмм ПЗУ
      [0xEE21] = 0         ; cur disk
      [0xEE22] = 0         ; cur track
      [0xEE23] = 1         ; cur sector
      [0xEE24] = 0xDF80    ; addr DMA buffer
      [0xEE26] = 0         ; type sector - обычный
    
      [0x0038] = 0xC9      ; make JMP on RST7
      [0xEE1B] = 0         ; timer count - используется в обработчике RST7
    
      A = ReadSector()     ; чтение первого сектора в 0xDF80,
                           ; результат в регистре A
      if (A = 0)
          return           ; выход в васик
    
      HL = [0xDF81]
      if (H <> 0xDF)
          return           ; выход в васик
      goto HL              ; переход на загруженный код, где происходит дозагрузка системы
    
    
    WAIT(n)
    {
      BC = 65536
      [0x7FF8] = n         ; reg ВГ93 = 1 or 2
      WAIT_256()
      WHILE (BC <> 0)
        A = [0x7FF8]       ; в ПЗУ здесь 0!
        if (A AND 1) = 0
            return
        BC = BC - 1
      ENDW
      [0x7FF8] = 0xD0
      WAIT_256()
    }
    
    WAIT_256()
    {
      A = 256
      WHILE (A <> 0)
        A = A - 1
      ENDW
    }
    Как видите, выход происходит по результату работы подпрограммы считывания сектора ReadSector(). Сама ReadSector() работает с данными расположенными в адресах 0xEEXX, потому коллизий не происходит.

    Я тоже подозреваю, что косяк может быть в дешифраторе. Но дампа РТ2 так и не сделали. И, честно говоря, не уверен, что сделают..
    Вся соль вопроса в функции ReadSector(), она может дать все ответы куда и что отображается. Я ее глубоко не копал, так как для меня сам контроллер ВГ93 - темный лес и я просто не понимаю код, работающий с ней.
    Так что либо искать описание ВГ93 и хотя бы поверхностно дизассемблировать ReadSector(), либо снимать дамп РТ2. Второе конечно предпочтительнее, но тут я не помошник. С первым могу помочь, как время появится.

  4. #3

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

    По умолчанию

    531ГГ1 - тот еще треш. в Ставрополе таких нет, а заказывать - влом.
    ПК8000 "Веста", "Сура". ПК8002 "Эльф". ПК8010,8020 "Корвет".

  5. #4

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

    По умолчанию

    Глянул одним глазком на доку по ВГ93. На адрес 0x7FF7 судя по всему отображается регистр статуса/команд. Тогда функция WAIT() и не задержка вовсе, а отсылка команды контроллеру.
    Все равно непонятным остается одно - каким образом функции ПЗУ читают регистр статуса контроллера, если он отображается на 0x7FF7? Тем же подпрограммам чтения/записи сектора чтение регистра статуса просто необходимо. Замкнутый круг какой-то. Закончу с плагином, попробую выяснить это из кода ПЗУ.

  6. #5

    Регистрация
    15.02.2009
    Адрес
    Зерноград
    Сообщений
    568
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Что то я совсем запутался.. 7FF7h это ведь регистр работы дисковода. ТМ8.. И, судя по схеме, комп туда может только писать. Читать от туда он вроде как не может.. Или он как, пишет в ТМ8, а читает из ОЗУ?
    ZX-Spectrum 128(краснодарский вариант)+YM+Covox+3,5" FDD+5,25" FDD+Nemo controller+HDD+CD-ROM+PS/2 Keyboard+PS/2 Mouse (остальное в проекте...) (Всё самодельное) Плата Внутри Внешний вид

  7. #6

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

    По умолчанию

    Ну дык я дал листинг инициализации контроллера, где явно запись на адрес 0x7FF7. Если этого мало, то в обработчике таймера есть такой код:
    Код:
    H = INP(0x80)
    OUTP(0x80), 0xFF
    L = [0x7FF7]
    OUTP(0x80), H
    [0x7FF7] = 0
    OUTP(0x80), 0xFF
    [0x7FF7] = L            ; restore [0x7FF7]
    OUTP(0x80), H           ; restore map mem
    Тоже что-то пишет в 0x7FF7.
    Схему еще не глядел, но вполне допускаю, что РТ2 принесет немало сюрпризов

    ---------- Post added at 17:27 ---------- Previous post was at 16:59 ----------

    Кстати, а с чего взяли, что ТМ8 отображается на 0x7FF7? По схеме она защелкивается от ~WR и сигнала с вывода 13 дешифратора РТ2. Начинки то РТ2 нет?

  8. #7

    Регистрация
    15.02.2009
    Адрес
    Зерноград
    Сообщений
    568
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    10 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тут писали. И Тут. И ещё судя по схеме замены РТшки так выходит..
    ZX-Spectrum 128(краснодарский вариант)+YM+Covox+3,5" FDD+5,25" FDD+Nemo controller+HDD+CD-ROM+PS/2 Keyboard+PS/2 Mouse (остальное в проекте...) (Всё самодельное) Плата Внутри Внешний вид

  9. #8

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

    По умолчанию

    4000-7F?? - ПЗУ
    7FF7 - выбор стороны и диска
    7FF8-7FFB - порты ВГ93
    7FFC-7FFF - 4-х байтовый регистр (запись - как обычно, чтение - по всем 4-м адресам один и тот-же байт, 2 младших бита адреса это DRQ,IRQ ВГ93)

  10. #9

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

    По умолчанию

    Логично. И если же это действительно ТМ8, то инициализация почти понятна:
    Код:
    START_ROM:
      [0xEE1D] = 0
      [0x7FF7] = 0x81 - сброс контроллера
      [0x7FF7] = 0x01 - выбор устройства 0
      WAIT(0x01) - запись команды (init?)
      [0x7FF7] = 0x82 - сброс контроллера
      [0x7FF7] = 0x02 - выбор устройства 0
      WAIT(0x02)
      [0x7FF7] = 0x00
    Тогда что читается с адреса 0x7FF7? По схеме с ТМ8 точно ничего не прочтешь, однако программа не только читает, но и судя по всему именно значение в ТМ8... Может ИР26 и предназначена для хранения значение ТМ8?

  11. #10

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

    По умолчанию

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Тогда что читается с адреса 0x7FF7?
    Не помню. Защита записи, индексный маркер или другие сигналы непосредственно с дисковода.

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Может ИР26 и предназначена для хранения значение ТМ8?
    Для чего предназначена ИР26 (7FFC-7FFF) я уже объяснял, Mifody выше дал ссылки. Это такой аппаратный трюк, позволяющий ожидать готовность байта в цикле, длительность которого всего 4 такта.

Страница 15 из 29 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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