User Tag List

Страница 9 из 36 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 354

Тема: Корвет: ExtROM Open Source extender

  1. #81

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    Вот видишь, что бывает, если не защищать пакет контрольной суммой. Ты нечаянно насрал в порт, а контроллер это воспринял как команду. Если бы первой шла цифра 2 - затер бы мне нафиг инфосектор
    не, специально насрал, там вызов был SENDCMD, и CRC бы не помог
    и 2 бы пришла при тесте записи
    это не вычистил код из rom5.

  2. #82

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все, я закончил доработку API. Изменения коснулись 3 файлов - прошивки контроллера, загрузчика 2 фазы LOADER.ASM, и образа системы EXRSYSTEM.ASM. Теперь командный пакет защищен контрольной суммой, и если сумма неправильная - пакет просто игнорируется без каких-либо дополнительных действий. Также введена обратная связь - подтверждение приема контроллером команды.

    В окончательном виде API выглядит так.

    Формат командного пакета:
    Код:
       
    CMD:    DS    1   ; код команды
    DRV:    DS    1   ; номер устройства, 0-A,  1-B
    TRK:    DS    1   ; номер дорожки
    SEC:    DS    1   ; номер сектора (размер сектора всегда 128 байт
    CSUM:   DS    1   ;  Контрольная сумма предыдущих 4 байт,
    Контрольная сумма равна беззнаковой 8-битной сумме всех предыдущих 4 байт минус 1:

    CSUM=CMD+DRV+TRK+SEC-1

    Если в команде не используются поля DRV, TRK, SEC, то их значение игнорируется.

    Список команд:

    Код:
    Команды обмена секторами;
    
    01 - чтение сектора
    02 - запись сектора
    
    Команды измерителя скорости. 
    
    F0 - прием 8000h байта мусора
    F1 - передача 8000h байтов мусора
    
     Комадны управления работой контроллера
    
    00 - пустая операция, всегда возвращает ответ ОК (1)
    A0 - включить/выключить подстановку системных дорожек. DRV всегда 0, TRK=0 - выключить, 1 - включить
    После отправки командного пакета контроллер всегда отдает 1 байт подтверждения. Значение этого байта:

    0 (error) - ошибка, команда отвергнута
    1 (ok) - команда принята.

    Если ответ 1, то далее идет обмен данными, как и раньше. Если ответ 0, то обмен данными не происходит, а контроллер ожидает следующего комадного пакета.
    Диаграмма взаимодействия корвета и контроллера

    Код:
    Корвет                                  Контроллер
    --------------------------------------------------------
    командный пакет           
                                            0 или 1
    
     --    передача или прием блока данных, если требуется  --
    Я добавил еще одну команду - 00 (nop), Она всегда возвращает 1 (OK) и может быть использована для проверки функционирования контроллера (не повис ли он).

    Измененные файлы лежат в аттаче. Заодно я вставил в загрузчик новую оптимизированную процедуру GETSEC, чтобы система быстрее грузилась.

    ESL, тебе придется доработать эмулятор. Также подправь свои тесты скорости - просто вставь туда новую процедуру SENDCMD из биоса или загрузчика.

    Ну, вот и все. Осталось приделать интерфейс для управления монтированием образов (я этим займусь в выходные), и проект будет полностью готов. Останется только потестировать, пооптимизировать, поискать баги, ну и ESL сделает универсальный загрузчик. Я, естественно, помогу чем смогу.
    Блин, как-то уж больно быстро все заканчивается...
    Вложения Вложения

  3. #83

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, чуть не забыл. Насчет установки режима ВВ55 в процедуре SENDCMD.

    Или меня уже глючит, или ВВ55 в момент записи управляющего слова кратковременно выставляет ноль на всех ножках порта С. И тут же возвращает все обратно. В результате контроллер начинает глючить. Сейчас проверю более детально.

    Придурки из Intel не предусмотрели чтение регистра управления. Казалось бы, чего проще? А так можно было бы вначале проверить режим, а потом уже принимать решение о записи нового управляющего слова.

  4. #84

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    обновил эмулятор, новый биос и бутлоадер работают
    disk_a.kdi & disk_b.kdi
    подмена биоса пока не реализована, но вызов - работает (только флаг ставит внутри).

    доки по апи и исходники тестов теперь в extrom/

    тесты обновил,
    rom6 теперь использует диск B


    кстати, есть баги похоже
    на disk_b есть runner (не сразу, андо несколько раз не выходя из игры начать, прерывать)
    это образ тот что disk\disk3
    если его запустить - то он вываливает с bdos error on ...
    и кстати не работают физ диски (те что A->C и B->D)

  5. #85

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    обновил эмулятор, новый биос и бутлоадер работают
    disk_a.kdi & disk_b.kdi
    Вот, спасибо! А то я уже сам хотел идти доделывать его. Инструмент-то для отладки позарез нужен. Заодно туда добавлю пробные варианты вызовов для монтирования образов, чтобы клиентскую часть под CP/M было где отлаживать.

    Код:
    кстати, есть баги похоже
    на disk_b есть runner (не сразу, андо несколько раз не выходя из игры начать, прерывать)
    Ладно, попробую. Может быть, и ты чего накопаешь.

    и кстати не работают физ диски (те что A->C и B->D)
    О, точно. И на железном корвете работать перестало. Но ведь работало же раньше! Где-то я в процедуре GETINFO биоса багу повесил. Это уже серьезно, сейчас буду смотерть, благо инструмент теперь есть.

  6. #86

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Забыл написать
    Подмена системных дорожек пока не реализована
    Т.е вызов апи он кушает, но только флаг ставит у себя
    Кстати а подмена только для A или для обоих ?

  7. #87

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    Забыл написать
    Подмена системных дорожек пока не реализована
    Т.е вызов апи он кушает, но только флаг ставит у себя
    Кстати а подмена только для A или для обоих ?
    Да ты же написал вроде выше. Я уже это учел и подсунул эмулятору образы со встроенным биосом. Тем более ты там для этого скрипт в extrom/ положил, только bitbucket у него права +x отобрал


    Подмена, естественно, работает только для А. Для B это бессмысленно и даже вредно. На диске A системная область защищена от записи - запись в первые 2 дорожки ингорируется, чтобы не затереть system.bin на карте.

    А вообще, можно использовать наш контрорллер для подготовки реальных дискет - посекторно скопировать B в C, например. Поскольку с B будет отдаваться реальная системная область. Только путаница будет с буквами - потому как форматировать дискету надо как FORMAT A:, а не FORMAT C:

    Багу в биосе я нашел. Как обычно, соптимизировал пару байт на свою голову
    Новый биос в аттаче.
    Вложения Вложения

  8. #88

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    баг с runner - повторяется

    [steps to reproduce]
    ./kdbg -e extrom/

    b:
    runner
    wait when stared

    press F6 (turbo) for 5 second
    press space

    [expected result]
    game started

    [actual result]
    Bdos Err on B: Bad Sector

  9. #89

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересно, на реальном корвете я багу повторить не смог. Павда, F6 там нет, но я честно подождал минут 10, нажал пробел - игра пошла.

    В эмуляторе - да, вылетает с BDOS ERROR. Но при этом обращения к диску через интерфейс не происходит,судя по логу. Неужели эта игрушка сама лезет в порты дисковода? BDOS Error может произойти в случае, если в блоке DPB изменили маску выбора диска, или текущим сделали отсутствующий диковод C или D.. Сейчас попробую глянуть в отладчике. Заодно можно повесить бряк на BIOS READ, и посмотреть, какой запрос приводи к ошибке.

  10. #90

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я по логу апи в эмуляторе сразу глянул что нет обращения

    ты rom6 не пускал ?

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

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

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

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

Похожие темы

  1. Open source firmware for the Spectrum
    от zx-kit в разделе Разный софт
    Ответов: 60
    Последнее: 29.05.2014, 13:53
  2. open-source эмуляторы под .NET
    от Sawyer в разделе Эмуляторы
    Ответов: 1
    Последнее: 04.01.2011, 17:47
  3. GP2X F100 Open Source Gaming Console
    от CodeMaster в разделе Зарубежные компьютеры
    Ответов: 3
    Последнее: 12.06.2010, 23:51
  4. Open Source эмуль...
    от rg_software в разделе Эмуляторы
    Ответов: 50
    Последнее: 06.12.2006, 11:57

Ваши права

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