Остается два байта, и именно в этом может возникнуть трудность при запуске старых версий TSX+ из под новых RT-11 :)
Больше вроде ничего не вспоминается особо. В большинстве случаев разницы вообще не будет.
Вид для печати
Разбираюсь с ХМ-ными делами.
1. Я правильно понял, что переслав Q$PAR в KPAR1 (172342, предварительно сохранив его) я получу доступ к буферу пользвателя по виртуальному адресу в Q$BUFF?
2. Я правильно понял, что переслав очередной блок по адресу из Q$BUFF командами MOV DATA,(Rx)+ я должен уменьшить на 1000 этот адрес в Rx (т.е. вернуть тот адрес, который был в Q.BUFF) и увеличить на 10 содержимое KPAR1?
3. В руководстве по программированию периферийных устройств для ФОДОС-2 (цельноутянуто с RT-11 V05.0x), как вариант, предлагают переписать программой $P1EXT тот кусок, который выполняет эту передачу, в системный стек и выполнять его оттуда, на случай, если сам драйвер вдруг окажется в зоне системного PA1. Это действительно надо делать?
4. Я правильно понял, что все эти действия можно выполнять на .FORK-уровне?
Частично разобрался. На (1) и (2) ответ "Да". На (3) ответ с вариантами. Для ДВК оно на фиг не нужно, а для "нафаршированных" машинок, включая 85-ю, оно таки нужно. Это я заглянул в драйвер DW от 85-й, в смысле ПРОшки. Варианта контроллера AZ для 85-й точно не будет никогда - не буду я его сочинять, а для оригинальных PDP-11, конечно, надо, и Макс собирается разводить такую плату, а вот с дровишками для XM/TSX надо разобраться.
Вероятно, для 11/84 в "нафаршированной" конфигурации тоже потребуется этот перенос куска программы в стек? Или нет?
Ну, как я понимаю, если AZ будет системным, то это дело точно не нужно. Да и, если загрузиться с чего-то другого, а потом, перед обращением к AZ загрузить его драйвер командой LO AZ, то этот драйвер тоже никак не попадет в область PA1. И вообще, как я понимаю, он туда может попасть только будучи загруженным из исполняемой задачи командой .FETCH, да?
Ну и (4). Раз все эти дела весело исполняются на системном уровне, то и на .FORK-уровне оно должно исполняться точно так же, хоть я еще и не проверял. Вскорости попробую добавить в драйвер обслуживание прерываний, вот там это и выяснится...
А вот TSX сходу не пошел, то ли я нагенерил что-то не то, то ли драйвер не совсем правильный...
form, не найдется ли TSX, работающий на ДВК ?
Это пока без прерываний, за них я еще не брался...
Да. На Q-Bus машинах больше ничего особо не надо.
В TSX+ используется PAR6 вроде.
Обычно ничего пересылать не надо, а просто использовать родные $MP*, $GT*/$PT* - тогда и не нужно думать какой там пар.
Родные подпрограммы сами все что нужно делают.
Можно на форк, можно и не на форк - там есть рекомендации сколько инструкций можно на уровне прерывания делать, можно примерно прикинуть вписывается или нет.
Оно-то, конечно, так, только долго. Не зря и в DW, и в DX пересылают своим кодом, а не через эти программы. Тем более, что ни ожиданий не надо, ничего - просто 256 раз выполнить команду MOV @R3,(R2)+ и прочитанный в буфер контроллера блок переедет в память пользователя. Или, наоборот, 256 раз выполнить MOV (R2)+,@R3, и блок из памяти пользователя переползет в буфер контроллера. С учетом команды SOB, которая делает эти повторы, это всего 768 циклов шины, грубо говоря, 1 мс. А вызывать те программы - минимум, десятка два команд, если не больше. То есть время будет измеряться десятками мс, причем далеко не одним десятком. Да, а TSX у меня не пошел, похоже я что-то не то нагенерил. Ну, или что-то не так в драйвере...
Нет ли сгенеренного TSX-а для ДВК ? Чтобы я просто добавил в него DEVDEF <AZ>,MAPH, пересобрал и попробовал? URL?
- - - Добавлено - - -
Да, попробовал собрать TSX на реальном ДВК. Блин, как это до-о-олго! Минут 5 компилится TSGEN.MAC и еще минут 5-7 линкуются все 4 модуля. Против нескольких секунд в эмуляторе...
А еще я знаю, почему наши орлы разбивали TSGEN.MAC на части. Он ведь не лезет в редактор EDK. Категорически не лезет. Пришлось раза 4 подавать команды "Goto Bottom" и "Next".
- - - Добавлено - - -
Не-а! Вот твои же слова:
Вот оно, то самое. P1EXT, кстати, как раз переносит код за его вызовом в системный стек и исполняет его оттуда. На случай, если драйвер окажется в области действия системного PAR1.
И, кстати, эта самая 6.50 где-нибудь выложена? И где TSGEN.MAC, подправленный для ДВК?
- - - Добавлено - - -
Кстати, эти самые фокусы с P1EXT - это единственное, что я не сделал в своем драйвере. Не от этого ли оно у меня валится?
А вот изба фигвам! Действительно, в TSX используется PAR6. А в RT-11 - PAR1. И драйвер, использующий для передачи PAR6 напрямую не годится для RT-11XM, как и наоборот, драйвер с PAR1 не годится для TSX. Внимание, вопрос: таки городить огород с P1EXT, или забить и по-простому генерить драйвер отдельно для TSX, отдельно для XM, посредством условной компиляции?
В общем, TSX у меня кое-как захромал, но еще куча всякого. Например, не идет EDK. На мои нажатия стрелок рисует параграф с буковкой А, В... Что-то надо подкручивать, а что - пока не знаю...
form, а чем разобрать TSX2.OBJ (который склеен из кучки объектных модулей прямым копированием 1.obj+2.obj...) ? Под RT-11, RSX у меня нет, и я его не знаю...