Еще обновление VKMON V02.12. мелкая оптимизация работы с ошибками в сообщениях об ошибках символов (дуп, отсутствует, кривой адрес) убран лишний CRLF в конце строки из кода инициализации динамической памяти выброшено лишнее, добавлена проверка на VBGEXE. -- Немного технической информации В прошлой версии для инициализации динамической памяти вместо родного $INIDM, был запользован код из SRCCOM, выполняющий инициализацию с резервированием памяти под USR сверху. Еще тогда кое-что показалось в этом коде неправильным. Проверка показала, что там действительно кое-что не так. Код берет место для загрузки USR по умолчанию (смещение 266 RMON), делает TST -(R0) чтобы указать на адрес ниже USR, выполняет .SETTOP, по результату в R0 вычисляет размер свободной памяти, а потом проверяет программу на виртуальность, и если она виртуальная - отнимает 500 от размера. Идея в целом понятна: виртуальная программа (не VBGEXE) мапится в нижнюю память, но так, что ее адрес 0 оказывается в физическом адресе 500. Вот только не учитывается тот факт, что при этом адрес загрузки USR окажется за пределами адресного пространства программы, и TST -(R0) вызовет MMU fault. Тут правильнее использовать SUB. А кроме того, после вызова .SETTOP, верхний адрес будет автоматом подправлен с учетом USR (в mapped системах он всегда в памяти), а значит никаких танцев с бубнами вокруг 500 не требуется. Впрочем, сделать VKMON виртуальным можно только поправив вручную SAV файл Ну а для VBGEXE и вовсе нет смысла развлекаться с размером - такая прога мапится в верхнюю память, и спокойно может использовать самый верхний доступный адрес.