To Patron:
Опять отправил в личку
To Patron:
Опять отправил в личку
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Параметры со значениями по умолчаниюСообщение от Hunta
NonStandardDrive_Tracks=155
NonStandardDrive_Heads=4
добавляются в конфиг, если их там вообще нет.
Геометрия 1024*8*16 автоматически выбирается для стандартного размера 67108864, поэтому нет нужды задавать аналогичную нестандартную геометрию.
Нестареющая классика.Сообщение от Hunta
Код чтения:
Код записи:Код:bNotFound = false; if( nCmdTrack > nMaxTrack || nCmdSide > nMaxSide || nCmdSect > 15 ) { if( nCmdTrack > nMaxTrack ) { nCmdTrack = nMaxTrack; } if( nCmdSide > nMaxSide ) { nCmdSide = nMaxSide; } if( nCmdSect > 15 ) { nCmdSect = 15; } bError = true; bNotFound = true; REG_WORD( DW_CSR2 ) = BIT_14 | BIT_12 |( BIT_11 * bAsk2 )|( BIT_8 * bError ); REG_WORD( DW_ERROR ) = ( BIT_14 * bBadCRC )|( BIT_12 * bNotFound )|( BIT_10 * bBadCmd ); }
...Код:bNotFound = false; if( nCmdTrack > nMaxTrack || nCmdSide > 3 || nCmdSect > 15 ) { if( nCmdTrack > nMaxTrack ) { nCmdTrack = nMaxTrack; } if( nCmdSide > nMaxSide ) { nCmdSide = nMaxSide; } if( nCmdSect > 15 ) { nCmdSect = 15; } bError = true; bNotFound = true; REG_WORD( DW_CSR2 ) = BIT_14 | BIT_12 |( BIT_11 * bAsk2 )|( BIT_8 * bError ); REG_WORD( DW_ERROR ) = ( BIT_14 * bBadCRC )|( BIT_12 * bNotFound )|( BIT_10 * bBadCmd ); }
Удачно этот баг попался, а то когда бы я ещё добавил в эмулятор возможность использования нескольких контроллеров DW с разными адресами.
Последний раз редактировалось Patron; 26.07.2017 в 15:46.
Ну, на самом деле я и в своём драйвере выловил.... скажем так - некоторое количество неправильностей, которые вылезли на устройстве с большем, чем 177777 секторов
Когда оно у меня читалось, но не писалось - глаза как то в разные стороны пошли - код то почти один и тот же используется. Ну, а когда запустил BAD MW:/LI и оно начало сыпать зонами плохие блоки.. прогулялся с отладчиком и только подтвердил мысль о головках 4-7
Patron, вопрос по эмуляции не связанных с хранением информации железяк - насколько вообще он обсуждаем?
Я конечно говорю о граф. платах для ДВК любой модификации ) Каковы вообще авторские планы по эмулятору?
В любом случае любые анонсы по грядущему (возможно) релизу были бы полезны, поскольку от вас последнее
время в этой теме информации практически не поступает.
Спасибо!
Последний раз редактировалось hobot; 26.07.2017 в 16:05.
И наверное эти проверки надо объединить в какой нибудь метод-подпрограмму - повторяющийся код при модификации - как раз та самая нестареющая классика генерации ошибок логики программы
Я только об этом и думаю - надо создать универсальный графический API, позволяющий нескольким одновременно запущенным копиям эмулятора ДВК выводить по несколько графических окон от нескольких не знающих друг о друге эмуляторов графических устройств без искажений картинки и потери скорости.
и что бы не тормозило -ОТВЕТА НЕ ТРЕБ. ПРОСТО РАССУЖДЕНИЯ
может быть реализовать например параметр KGD_KCGD ON\OFF который включал бы некую процедуру\подпрограмму обслуживания всех запущенных копий эмулятора но сам был бы в памяти один и скомпилирован был бы так, что заведомо например брал бы под себя 1 ядро процесора хоста - я не программер
поэтому пишу как проще мне идею\мысль сказать - иначе, мне кажется, задача не выполнима - будет тормозить и сильно ))) хотя... могу ошибаться сильно я.
как только обращение в нативной сессии RT-11 на одной из вирт. ДВКашек на хосте хочет графику - процедура её
обрабатывает напрямую взаимодействую только с той вирт. машинкой где необходимость возникла (как-то так).[свернуть]
ещё сложнее наверное с настоящей эмуляцией граф. экрана - мне например совершенно не понятно
какой дисплей может быть выбран хотя бы для эмуляции КГД например? Фрязинский? Было бы просто замечательно!
В любом случае, благодарю за ответ!
Последний раз редактировалось hobot; 26.07.2017 в 17:08.
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_26.07.17_18-06
Изменения:
1. Исправлена ошибка в эмуляции контроллера DW, не позволявшая использовать при записи головки 4,5,6,7.
2. В настройки объекта DW добавлены параметры BaseIO_Address и BaseVectorAddress, дающие возможность эмулировать контроллеры с нестандартными адресами. Значения по умолчанию 0174000 и 0300 соответствуют стандартным адресам контроллера DW.
Для добавления в эмулируемую конфигурацию второго контроллера DW с адресом 0174060 и вектором 0310 - нужно внести в файл конфигурации следующие дополнения:
Код:[objects] DW1 = DSK_module:DW [links] bus & DW1 [DW1.ini] DW0 = DW.DSK BaseIO_Address = 0174060 BaseVectorAddress = 0310
Для возможности выбирать образ, подключенный к этому дополнительному контроллеру, при помощи кнопки выбора образов - новый объект DW1 надо подключить к кнопке:
Код:[links] Config + MediaButton + HD | MX | MY | DW | DW1 | DX | PC | RK | MT
Последний раз редактировалось Patron; 26.07.2017 в 18:51.
to Patron:
Огромное спасибо Сейчас попробую
- - - Добавлено - - -
to Patron:
А вот на это
[links]
Config + MediaButton + HD | MX | MY | DW | DW1 | DX | PC | RK | MT
.................................................. ......................................^^
он ругаиЦЦо
Кнопка ругается, когда объект с указанным именем отсутствует. Можно подключать объекты к кнопке по одному и таким образом найти лишний:
Код:Config + MediaButton MediaButton + HD MediaButton + MX MediaButton + MY MediaButton + DW MediaButton + DW1 MediaButton + DX MediaButton + PC MediaButton + RK MediaButton + MT
Эту тему просматривают: 5 (пользователей: 1 , гостей: 4)