Тут недавно трудящиеся просили добавить HX драйвер в SimH который у меня под OpenVMS крутится... Перекомпиливать его пока лень (а без этого HX не будет работать из-за наличия горячей клавиши SimH для останова эмуляции).
Зато возникла интересная мысль (самому реализоввывать лень, но расскажу как сделать). Можно добавить в драйвер HX поддержку RTEM-11.
Функционал который может потребоваться драйверу:
Код:
;
;ENAR$S - РАЗРЕШИТЬ ОБРАБОТКУ ПРЕРЫВАНИЙ
;
MOV #545,-(SP) ;ENAR$ DIC & DPB SIZE
EMT 377 ;
;
;DSAR$S - ЗАПРЕТИТЬ ОБРАБОТКУ ПРЕРЫВАНИЙ
;
MOV #543,-(SP) ;DSAR$ DIC & DPB SIZE
EMT 377 ;
Этого же эффекта можно добиться макрокомандами RT-11 .MTPS #0 и .MTPS #340 (в RTEM-11 мониторе эти макросы вызывают подпрограммы которые выполняют вышеописанные действия). За таймер беспокоиться при этом не нужно: прерывания от таймера отсутствуют как класс, системные вызовы касающиеся времени переадресуются напрямую в RSX, если в драйвере требуется обработка таймаутов - следует использовать стандартные вызовы .TIMIO/.CTIMIO (помним - драйвер при этом нельзя "переделать" командой SET для подстройки SYSGEN опций).
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
Вызов функции ввода-вывода:
Код:
;
;DIR$ #QIOW
;
MOV #QIOW,-(SP) ;PUSH DPB ADDRESS
EMT 377 ;EXECUTE DIRECTIVE
Как вариант, можно все параметры директивы запихать в стек в обратном порядке (последнее слово - DIC & DPB SIZE) и вызвать EMT 377, но с внешним блоком проще...
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!!!
.