Как известно, в МС "Дубна" стандартный размер каталога библиотеки объектных модулей пользователя (как personal library на внешних носителях, так и temporary library на барабане) был 2 зоны (2048 слов).
Как также известно, каждый элемент каталога занимал 2 слова (имя в кодировке ТЕХТ, дескриптор). Ещё в конце каталога на внешнем носителе находилась строка текста, содержащая дату создания библиотеки и комментарий.
Итого, как вы думаете, каково максимальное количество элементов мог содержать каталог в МС "Дубна" версии 1979 года, Мониторе-80, и в МС "Дубна" версии 1988 года? Типа 1024 минус немного; ну, скажем, 1010 или около того, да?
Пишем программу на Фортране из одной строки, которая занимает 6 элементов в каталоге:
SUBROUTINEAA$ENTRY XAA$ENTRY YAA$ENTRY ZAA$ENTRY TAA$ENTRY UAA$END
реплицируем её много раз, заменяя все AA на AB, AC, ... AZ, BA, BB, .. BZ, и т.д. с запасом, чтобы посмотреть, при компиляции какой пары букв сломается.
Имеем:
МОНИТОРНАЯ СИСТЕМА Д У Б Н А 11.01.79 М3
...
Ф О Р Т Р А Н
/16.07.73/
SUВRОUТINЕDL
ЕNТRУ ХDL
2 ЕNТRУ УDL
3 ЕNТRУ ZDL
4 ЕNТRУ ТDL
5 ЕNТRУ UDL
ЕND
ТАБЛИЦА ОТНОСИТЕЛЬНЫХ АДРЕСОВ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
000 :00006:00006:00006:00006:00006
ПЕРЕПОЛНЕНИЕ КАТАЛОГА
ЕRRОR IN SТАNDАRТ АRRАУ
DL - это у нас 26*3 + 12, т. е. 90*6 = 540 элементов уже не поместились, а 534 ещё помещалось. Странное число - только начали использовать вторую зону, и сломались.
Ну ладно, попробуем Монитор-80, уж в нём-то должны были поправить. Для удобства поставим *NO LIST и воспользуемся Форексом, который печатает имена компилируемых подпрограмм даже в режиме *NO LIST.
Получаем:
М О Н И Т О Р-8 0 (3.7) 25.09.84* ( МС " Д У Б Н А " ИАЭ ) ШИФР 419900000000
...
DА
DВ
DС
ПЕРЕПОЛНЕНИЕ КАТАЛОГА
ЕRRОR IN SТАNDАRТ АRRАУ
Вплоть до DC - это 6*(26*3+3) = 486 уже не поместилось. Выходит, что Монитор-80 для удобства разработчиков вообще не использовал вторую зону каталога.
В МС "Дубна" 1988 года можно этих однострочных программ хоть укомпилироваться, но если было скомпилировано вплоть до GO или больше, то попытка потом просто просмотреть каталог с помощью *CALL TCATALOG приводит к зацикливанию, а если вплоть до EA или дальше, то *CALL TCATALOG что-то там показывает, но записать библиотеку на диск не удаётся, *TO PERSO говорит, что есть испорченные подпрограммы.
Итого успешно работают примерно 26*4*6 = 624 элементов каталога. Аж почти на 100 больше, чем в 1979 году, ну хоть что-то. А диагностика ошибок - да зачем она, всё равно в природе так никто не делает.
Я жалею, что не додумался до этого эксперимента 40 лет назад. При использовании Фортрана-ГДР до достижения ошибки отрабатывает всего 38 млн. команд (против 57 у Форекса и 58 у Фортрана-Дубна), было бы тривиально всем показывать.
Leo