Пара мыслей вслух... Пока копался с драйверами HD эмулятора ДВК, MZ и WD от УКНЦ... Ну с I/O драйверами особых проблем нет даже с таким специфическим устройством как WD.
Основная трудность - 16-битность этих устройств. Это затрудняет создание образа с системой. При работе с HD приходилось сначала делать unmapped систему на DY, грузить, сохранять, а потом из нее уже работать с HD. Позже проблема решилась придумыванием расширенного варианта HD который совместим с классическим, но в случае чего работает и с 22-бит.
Вторая проблема которая вылезла - невозможнось однозначно узнать в драйвере загрузки-сохранения с какого номера устройства была загрузка. В обновленном варианте HD такая возможность есть, для остальных же случаев придумался такой вариант: если R1 содержит CSR адрес устройства - считаем, что была аппаратная загрузка (или BOOT/FOREIGN из под RT-11) и номер устройства лежит в R0. Если R1 содержит значение отличное от CSR устройства, а номер устройства драйверу не передан (возможно при загрузке сохраненной системы командой BOO), берем номер устройства из R4 где он остается от прошлого использования драйвера загрузки-сохранения. Не факт, способ основанный на допущениях, но пока вроде не подводил
Отдельный случай с WD - у него нету CSR, все операции производятся модификацией вектора и там же получается ответ. Приоритет CPU прерываниям от WD побоку - они в любом случае будут генериться, тут можно встретиться с ситуацией когда прерывание произойдет в момент когда это категорически недопустимо (живой пример - момент когда читается сохраненная система - поскольку мы читаем полное содержимое памяти с диска, возникновение прерывания невовремя может запортить содержимое этой самой памяти)... Другая проблема - передача I/O запроса устройству через область векторов - это затрудняет чтение образа системы в эту область памяти... Ну да придумаем поди что-нибудьВ настоящее время есть I/O дайвер для WD, но сохранить на него систему не получится пока...
- - - Добавлено - - -
Словаря нету чтобы на русский все написанное перевести?![]()






Ответить с цитированием