Тут недавно трудящиеся просили добавить HX драйвер в SimH который у меня под OpenVMS крутится... Перекомпиливать его пока лень (а без этого HX не будет работать из-за наличия горячей клавиши SimH для останова эмуляции).
Зато возникла интересная мысль (самому реализоввывать лень, но расскажу как сделать). Можно добавить в драйвер HX поддержку RTEM-11.
Функционал который может потребоваться драйверу:Этого же эффекта можно добиться макрокомандами RT-11 .MTPS #0 и .MTPS #340 (в RTEM-11 мониторе эти макросы вызывают подпрограммы которые выполняют вышеописанные действия). За таймер беспокоиться при этом не нужно: прерывания от таймера отсутствуют как класс, системные вызовы касающиеся времени переадресуются напрямую в RSX, если в драйвере требуется обработка таймаутов - следует использовать стандартные вызовы .TIMIO/.CTIMIO (помним - драйвер при этом нельзя "переделать" командой SET для подстройки SYSGEN опций).Код:; ;ENAR$S - РАЗРЕШИТЬ ОБРАБОТКУ ПРЕРЫВАНИЙ ; MOV #545,-(SP) ;ENAR$ DIC & DPB SIZE EMT 377 ; ; ;DSAR$S - ЗАПРЕТИТЬ ОБРАБОТКУ ПРЕРЫВАНИЙ ; MOV #543,-(SP) ;DSAR$ DIC & DPB SIZE EMT 377 ;
DPB для директивы ввода-вывода на терминале:Вызов функции ввода-вывода:Код:IO.RAL =: 1010 ;READ PASS-ALL IO.WAL =: 410 ;WRITE PASS-ALL ; ;QIOW$ IO.RAL,1,20.,,,,<BUFF,BCNT> ; QIOW: .BYTE 3,12. ;DIC, DPB SIZE .WORD IO.RAL ;IO.RAL FUNCTION .WORD 1 ;TI: LUN .BYTE 20.,0 ;EFN, PRI .WORD 0,0 ;ISB, AST .WORD BUFF ;BUFFER ADDRESS .WORD BCNT ;BYTE COUNT .WORD 0,0,0,0 ;EXTRA PARAMETERSКак вариант, можно все параметры директивы запихать в стек в обратном порядке (последнее слово - DIC & DPB SIZE) и вызвать EMT 377, но с внешним блоком проще...Код:; ;DIR$ #QIOW ; MOV #QIOW,-(SP) ;PUSH DPB ADDRESS EMT 377 ;EXECUTE DIRECTIVE
RTEM-11 должен запускаться командой RTE /VS/-AB чтобы запретить горячую клавишу выхода.
Если не лень кому - можно реализовать
Да, терминал должен быть настроен командой SET /EBC=TI: (на CTAKAHе автоматом делается для телнетных сессий). Это можно сделать и программно, но лень сейчас - если будет у кого желание заняться, напишу как
---------- Post added at 15:19 ---------- Previous post was at 15:18 ----------
Пример кода вывода на терминал:Код:.TY TEST.MAC QIOW: .BYTE 3,12. .WORD 410 .WORD 1 .BYTE 20.,0 .WORD 0,0 .WORD BUFF,BCNT .WORD 0,0,0,0 START:: MOV #QIOW,-(SP) EMT 377 EMT 350 BUFF: .ASCII <15><12>/TEST TEST TEST!!!/<15><12> BCNT = .-BUFF .END START .EX TEST TEST TEST TEST!!! .





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