form, кстати говоря - я только сейчас обратил внимание!!!
Смотри - классический JS.SYS какая хитрая скотинка.

Во первых прервать его таки можно, но это его не убивает (если только не выгрузить),
после запуска любой программы он снова ищет свою прогу (значит он что то в памяти в делает с монитором, но не на диске - ибо "не навреди") и сам в себе он строку об ошибке не содержит!
Это KMON вместо него орёт что файла нету !!! (см. скрин выше).
Сейчас правлю исходник SH - переименовал его в SSH - типа Старт Шелл )))
Попробую что получиться, но
1. я понятия не имею что такое ХУК
2. мне то можно .PRINT использовать или нет?

- - - Добавлено - - -

form, НЕТ у меня не блинчик и даже не ком получился.
1. LINK ругнулся на три глобальных метки которые я не трогал !!!
2. теперь по LO SSH MON пишет что команда-инвалид )))

Листинг SSH.MAC
Код:
.MCALL    .MODULE
.MODULE    SSH,VERSION=1,COMMENT=<RT-11 Shell Driver>,AUDIT=YES

$SYPTR    =:    54            ;POINTER TO RMON
$E16LS    =:    316            ;EMT 340-357 DISPATCH TABLE OFFSET
$KMONI    =:    450            ;KMON INDICATOR OFFSET

E6.PRI    =:    <351-340>*2        ;OFFSET TO .PRINT ROUTINE

    .MCALL    .ADDR,.CHAIN,.DRDEF    ;SYSTEM MACRO CALLS
    .MCALL    .DSTAT,.EXIT,.LOOKUP    ;
    .MCALL    .LOOKUP,.PURGE,.PRINT    ;

    .DRDEF    SSH,340,0,0,0,0        ;DEFINE DRIVER PARAMETERS
    .DRPTR    LOAD=SHLOA,FETCH=*NO*,UNLOAD=SHUNL ;DEFINE SERVICE ENTRIES

    .DRBEG    SSH            ;START OF DRIVER CODE
    MOV    SHCQE,R4        ;GET ADDRESS OF QUEUE ELEMENT
    BIS    #HDERR$,@-(R4)        ;SET HARD ERROR STATUS
    .DRFIN    SSH            ;FINISH I/O

SHINT::    TST    @(PC)+            ;RUNNING KMON?
SHKMI::    .BLKW                ;
    BEQ    20$            ;IF EQ NO
.IF    EQ    MMG$T
    CMP    @14(SP),(PC)+        ;CHECK IF PROMPT IS PRINTED
.IFF
    CMP    @16(SP),(PC)+        ;CHECK IF PROMPT IS PRINTED
.ENDC
    MOV    R5,R5            ;
    BNE    20$            ;IF NE NO
    MOV    R0,-(SP)        ;SAVE REGISTERS
    MOV    R1,-(SP)        ;
5$:    .ADDR    #SHARE,R0        ;POINT TO EMT AREA
    .ADDR    #SHPGM,R1        ;POINT TO PROGRAM NAME
    .LOOKUP    R0,#0,R1        ;LOOKUP THE FILE
    ROL    -(SP)            ;SAVE ERROR STATUS
    .PURGE    #0            ;PURGE CHANNEL
    ROR    (SP)+            ;RESTORE ERROR STATUS
    BCS    10$            ;IF CS FILE NOT FOUND
    MOV    #500,R0            ;POINT TO CHAIN AREA
    MOV    (R1)+,(R0)+        ;COPY PROGRAM NAME
    MOV    (R1)+,(R0)+        ;
    MOV    (R1)+,(R0)+        ;
    MOV    (R1)+,(R0)+        ;
    .CHAIN                ;CHAIN TO PROGRAM
10$:    .PRINT    #NSHF            ;RESTORE REGISTERS
;    MOV    (SP)+,R0        ;
;    JMP    @(PC)+            ;JUMP TO SYSTEM ROUTINE
20$:    BR    5$
SHPRI::    .BLKW                ;ADDRESS OF SYSTEM .PRINT ROUTINE

SHARE::    .BLKW    3            ;EMT AREA
SHPGM::    .RAD50    /SY SHELL SAV/        ;PROGRAM TO CHAIN TO
    .DREND    SSH

    .PSECT    SETOVR
SHLOA::    MOV    @R5,R5            ;R5=SHLQE
    MOV    @#$SYPTR,R4        ;R4=RMON
    MOV    R4,R2            ;COPY
    ADD    $E16LS(R4),R4        ;R4=EMT 340-357 DISPATCH TABLE
    MOV    E6.PRI(R4),R3        ;R3=ADDRESS OF .EXIT ROUTINE
    ADD    R4,R3            ;
    MOV    R3,SHPRI-SHLQE(R5)    ;STORE IN DRIVER
    MOV    R5,R3            ;R3=SHINT
    ADD    #SHINT-SHLQE,R3        ;
    SUB    R4,R3            ;R3=OFFSET TO SHINT
    MOV    R3,E6.PRI(R4)        ;POINT TO OUR ROUTINE
    ADD    #$KMONI,R2        ;R2=KMON INDICATOR
    MOV    R2,SHKMI-SHLQE(R5)    ;STORE IN DRIVER
SHXIT::    CLC                ;FLAG NO ERROR
    RETURN                ;RETURN

SHUNL::    MOV    @R5,R5            ;R5=SHLQE
    MOV    @#$SYPTR,R4        ;R4=RMON
    ADD    $E16LS(R4),R4        ;R4=EMT 340-357 DISPATCH TABLE
    MOV    E6.PRI(R4),R3        ;R3=ADDRESS OF .EXIT ROUTINE
    ADD    R4,R3            ;
    MOV    #SHINT-SHLQE,R2        ;R2=SHINT
    ADD    R5,R2            ;
    CMP    R3,R2            ;OUR HOOK SET?
    BEQ    20$            ;IF EQ YES
    JSR    R0,10$            ;NO, SET ERROR MESSAGE
    .ASCIZ    /?SH-F-Other driver hooks .PRINT - can't unload/
    .EVEN
10$:    COM    (SP)+            ;CLEAN STACK, SET CARRY
    RETURN                ;RETURN
20$:    MOV    SHPRI-SHLQE(R5),R5    ;R5=ADDRESS OF SYSTEM .PRINT ROUTINE
    SUB    R4,R5            ;CONVERT TO OFFSET FROM EMTLST
    MOV    R5,E6.PRI(R4)        ;UNHOOK .PRINT
    BR    SHXIT            ;EXIT

NSHF:    .ASCIZ    /?SH-F-File not found SY:SHELL.SAV/

    .END