Ну, насчёт реализации -я пессимист.

Всё правильно. Хотели сделать нормальный ЛИСП, но ...
Просто забросили!!!

В доказательство - код из библиотеки LDUMP:

Код:
;; Распечатка Форм из "Директории файла" (Properties)
(DEFUN LDUMP (PROPS)
  (PROGN (OPEN 1 8 (QUOTE P:)) ; Открыть 1 IOCB на вывод
         (PR# 1)               ; Перенаправить вывод с терминала на 1 IOCB
         (MAPCAR PROPS         ; Для каждой формы в директории ...
                 (LAMBDA (X)       ; X - это директория файла
                   (PROGN (TERPRI) ; Исполнять последовательно ...
                          (TERPRI) ; CR
                          (PRIN1 (QUOTE "**** ")) ; Звёздочки без CR
                          (PRINT X)               ; Имя формы + CR
                          (PPRINT (GETD X)))))    ; Печатать определение
         (PR# 0)               ; Вернуть вывод на Терминал
         (CLOSE 1)))           ; Закрыть 1 IOCB

;; Установка отступа в Печатуемой строке на N позицию пробелами!!!
(DEFUN TABX (N)
  (PROG (COUNT)        ; Исполнять последовательно с циклом ...
        (SETQ COUNT N) ; Инициализировать обратный счётчик
        LOOP           ; Метка
        (SETQ COUNT (SUB COUNT 1))             ; Декрементировать
        (COND ((> COUNT 0)                     ; Пока не ноль
               (PRIN1 (QUOTE " ")) (GO LOOP))) ; Печать пробела и на метку
        (RETURN)))     ; По исполнении выйти.
Оба кода рабочие, но в LDUMP нигде не входит TABX.

В результате, никакой PP печати. Хоть формы-то разделены.
(EDIT при PP пользуется встроеной TAB, которая просто устанавливает позицию в строке терминала, следовательно нет пробелов.

Кроме этого, LDUMP пользуется формой PPRINT в составе EDIT, а значит без загрузки D:EDIT бесполезна.

Пока же я пробую выкорчевать из EDIT PP и заставить её печатать так как надо.
zen