User Tag List

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

Тема: Эмулятор дисковода для ПЭВМ Агат

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

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

    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    813
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    60 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Судя по не характерному треску не совсем все шоколадно, на реальном АГАТе "тр-р-р, тр-р-р" - и готово, да и артефактные полоски говорят об этом...

    Цитата Сообщение от sintech Посмотреть сообщение
    Поэкспериментировал с обнаружением desync на лету. Оказалось, это достаточно просто, что позволит легко добавить поддержку записи сразу в DSK образы.
    А вот это можно по-подробнее?
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от LeoN65816 Посмотреть сообщение
    Судя по не характерному треску не совсем все шоколадно, на реальном АГАТе "тр-р-р, тр-р-р" - и готово, да и артефактные полоски говорят об этом...
    А вот это можно по-подробнее?
    Да, с чтением появились проблемы, пока не нашел причину. Скорее всего дело в нестабильности выдачи импульсов чтения.
    Desync ищу так: каждые прочитанные 16 бит (данных записи) запускаю цикл, в котором добавляю по одному биту справа к буферной переменной и делаю XOR с 0x89245555, если результат 0, то все последующие биты пишу как информацию из поля данных соответствующего сектора (минус пролог и эпилог с КС). Потом это нужно будет преобразовать из MFM в нормальный вид и записать в соответствующее место образа DSK.

  4. #3

    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    813
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    60 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ясно, спасибо.
    1. Где-то на форуме Владимир говорил, что в паре синхросбоя вторым байтом может быть и не $FF. (0x89245555)
    2. Синхросбой не только перед полем данных, но и перед адресным полем.
    3. Предкомпенсацию записи как-то обрабатываешь?
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

  5. #4

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

    По умолчанию

    Цитата Сообщение от LeoN65816 Посмотреть сообщение
    Ясно, спасибо.
    1. Где-то на форуме Владимир говорил, что в паре синхросбоя вторым байтом может быть и не $FF. (0x89245555)
    Да, тут либо проверять все возможные варианты, если их конечное кол-во либо писать как есть а уже потом анализировать на компьютере или на контроллере в offline.

    2. Синхросбой не только перед полем данных, но и перед адресным полем.
    Да, но все команды записи бейсика, которые я пробовал, пишут только кусок данных размером 269-270 MFM слов попадающий между GAP2 (почти полностью) и GAP3 (пару байт):
    Код:
    2.3 GAP2 5x 0xAA bytes
    2.4 Desync: 0xA4, 2 ms zero level interval, 0xFF
    2.5 Data field:
        0x6A, 0x95 (2 byte, data field prologue),
        256 Data Bytes,
        CRC (1 byte),
        0x5A (1 byte, data field epilogue)
    2.7 GAP3 22x 0xAA bytes
    Поля адреса записываются только по команде INIT или при копировании дискет копировщиком ИКП например.

    3. Предкомпенсацию записи как-то обрабатываешь?
    Т.к. временные промежутки между импульсами довольно легко дифференцируются, а предкомпенсация добавляет доли микросекунды, то думаю нет смысла както явно ее учитывать.
    Вот пример записи в условных единицах длительности паузы между импульсами, в скобках длина паузы в тиках процессора, после стрелки кол-во импульсов с такой длиной:
    Код:
        [317] => 4
        [343] => 41
        [349] => 1
        [369] => 796
        [371] => 1
        [395] => 2
        [550] => 3
        [551] => 527
        [575] => 1
        [577] => 164
        [733] => 44
        [734] => 1
        [759] => 69
        [783] => 1
        [785] => 21
        [811] => 1
    Поэтому, мы можем легко задать довольно широкие диапазоны для декодирования, например: 0-450 код 10, 450-650 код 100, 650-... код 1000.
    Также никто не мешает анализировать эти интервалы после получения данных и подстраивать окна автоматически на основе максимального расстояния между группами значений.

  6. #5

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

    По умолчанию

    Мне кажется, что писать \ читать сырой поток здравая идея. Легче требования к железу, проще программа, упрощается работа с дисками с защитами от копирования и нестандартными программами. А конвертер в \ из DSK можно и на компе сделать если очень надо - никаких требований к производительности в реальном времени и ограничений по функциональности.
    Все детали проектов ЮТ-88 на ПЛИС, АГАТ-7 на ПЛИС и прочее в моем блоге на http://electronicsfun.net

  7. #6

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

    По умолчанию

    Цитата Сообщение от Santechnik Посмотреть сообщение
    Мне кажется, что писать \ читать сырой поток здравая идея.
    Это так, но основной предпосылкой для создания эмулятора с моей стороны, была поддержка уже существующих форматов, без необходимости их конвертации в промежуточный специфический формат.
    С чтением проблем нет, с записью сложнее, но я уверен, что те программы которые поставляются в dsk образах не используют нестандартные desync и прочее, поэтому с ними и с записью проблем не будет.

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

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

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

Похожие темы

  1. История ПЭВМ АГАТ
    от GARNIZON в разделе Агат
    Ответов: 54
    Последнее: 16.01.2022, 00:05
  2. ИЩУ ДИСКИ ДЛЯ ПЭВМ АГАТ
    от GARNIZON в разделе Агат
    Ответов: 18
    Последнее: 31.03.2009, 00:01
  3. Куплю все, что касается ПЭВМ Агат и Commodore
    от ed4mk в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 19.09.2008, 13:26
  4. Эмулятор дисковода - ?
    от Sonic в разделе Внешние накопители
    Ответов: 32
    Последнее: 17.11.2006, 15:16

Ваши права

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