Если бы я знал ответ на более или менее ретрокомпьютерный вопрос, который хочу задать, из него могла бы получиться неплохая задачка для олимпиад по лингвистике. А пока это только вопрос в воздух.
Имеется двоичный код (считай, "черный ящик"), реализующий функциональность хранилища данных, позволяющий работать с массивами пар "ключ-данные", хранящихся на внешних устройствах, адресуемых по "логический номер устройства-номер блока"
Известен неполный интерфейс к нему (мелкие детали опущены):
- создать новый каталог верхнего уровня, задавая Номер Устройства/Начальный Номер Блока/Число Блоков для каталога
- создать в каталоге верхнего уровня массив, задавая имя массива и НУ/ННБ/ЧБ, где массив будет храниться
- открыть массив по имени, он становится текущим
- занести в текущий массив запись "ключ-данные" (если запись с таким ключом уже есть, возвращается ошибка)
- считать из текущего массива данные по ключу
- удалить из текущего массива запись по ключу
- модифицировать новыми данными в текущем массиве запись по ключу (если записи с таким ключом не было, выполняется как "занести")
Известно, что код работает на "микропрограммном" принципе. Интерфейсные вызовы дают "чёрному ящику" следующие последовательности микрокоманд:
- создать каталог: 10-21
- создать массив: 31-11-15-21-26-11-14-12-10-21
- открыть массив: 31-11-14-12-25
- занести запись: 11-15-21-26 (в случае ошибки отрабатывает только 11-15)
- считать данные: 11-14-22
- удалить запись: 11-14-23-27
- модифицировать: 11-15-00-21-26-40 (подаётся на вход и выполняется, если такой записи не было); если была, то вместо этого выполняется 11-15-20
Предлагается, используя навыки логического мышления, вывести из этого смысл и назначение использованных микрокоманд, насколько это возможно. У меня есть несколько идей, но полной ясности я не достиг.