Сергей, я бы хотел включить Вашу идею в готовящийся Advanced BlackBox Framework (с упоминаем авторства). Я предлагаю следующий интерфейс:

## Код:
```
DEFINITION AbfBus;
       (* Передать конкретному модулю. Если он не загружен, то будет загружен *)
   PROCEDURE Broadcast (IN module: ARRAY OF CHAR; VAR msg: Message; OUT ok: BOOLEAN);
       (* Передать широковещательно всем загруженным модулям.
Возвращается число модулей, которые имеют HandleBusMsg *)
   PROCEDURE BroadcastAll (VAR msg: Message; OUT count: INTEGER);
       (* Передать всем загруженным модулям указанной подсистемы *)
   PROCEDURE BroadcastSub (IN sub: ARRAY OF CHAR; VAR msg: Message; OUT count: INTEGER);
       (* Передать сообщение всем модулям, подписанным на него *)
   PROCEDURE Send (VAR msg: Message);
       (* Подписать модуль на определенный тип сообщения *)
   PROCEDURE Subscribe (IN mod, msgType: ARRAY OF CHAR);
       (* Отписать модуль *)
   PROCEDURE UnSubscribe (IN mod, msgType: ARRAY OF CHAR);

END AbfBus.
```
