To Patron:
Опять отправил в личку :)
Вид для печати
To Patron:
Опять отправил в личку :)
Параметры со значениями по умолчаниюЦитата:
Сообщение от 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 с разными адресами.
Ну, на самом деле я и в своём драйвере выловил.... скажем так - некоторое количество неправильностей, которые вылезли на устройстве с большем, чем 177777 секторов :)
Когда оно у меня читалось, но не писалось - глаза как то в разные стороны пошли - код то почти один и тот же используется. Ну, а когда запустил BAD MW:/LI и оно начало сыпать зонами плохие блоки.. прогулялся с отладчиком и только подтвердил мысль о головках 4-7 :)
Patron, вопрос по эмуляции не связанных с хранением информации железяк - насколько вообще он обсуждаем?
Я конечно говорю о граф. платах для ДВК любой модификации ) Каковы вообще авторские планы по эмулятору?
В любом случае любые анонсы по грядущему (возможно) релизу были бы полезны, поскольку от вас последнее
время в этой теме информации практически не поступает.
Спасибо!
И наверное эти проверки надо объединить в какой нибудь метод-подпрограмму - повторяющийся код при модификации - как раз та самая нестареющая классика генерации ошибок логики программы :)
Я только об этом и думаю - надо создать универсальный графический API, позволяющий нескольким одновременно запущенным копиям эмулятора ДВК выводить по несколько графических окон от нескольких не знающих друг о друге эмуляторов графических устройств без искажений картинки и потери скорости.
и что бы не тормозило -ОТВЕТА НЕ ТРЕБ. ПРОСТО РАССУЖДЕНИЯ
может быть реализовать например параметр KGD_KCGD ON\OFF который включал бы некую процедуру\подпрограмму обслуживания всех запущенных копий эмулятора но сам был бы в памяти один и скомпилирован был бы так, что заведомо например брал бы под себя 1 ядро процесора хоста - я не программер
поэтому пишу как проще мне идею\мысль сказать - иначе, мне кажется, задача не выполнима - будет тормозить и сильно ))) хотя... могу ошибаться сильно я.
как только обращение в нативной сессии RT-11 на одной из вирт. ДВКашек на хосте хочет графику - процедура её
обрабатывает напрямую взаимодействую только с той вирт. машинкой где необходимость возникла (как-то так).[свернуть]
ещё сложнее наверное с настоящей эмуляцией граф. экрана - мне например совершенно не понятно
какой дисплей может быть выбран хотя бы для эмуляции КГД например? Фрязинский? Было бы просто замечательно!
В любом случае, благодарю за ответ!
:redface:
Обновилась текущая сборка "эмулятора ДВК": 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
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