программинг

99 бутылок: Эль-76

65. Эль-76 — язык высокого уровня советских многопроцессорных вычислительных комплексов «Эльбрус». Разработан в Институте точной механики и вычислительной техники АН СССР имени С. А. Лебедева в 1972—73 годах.

Язык процедурный, как и следовало ожидать, но с обработкой исключений, который тут называются «ситуациями». Довольно необычно. Из-за задуманной авторами близости к железу, в языке разделено понятие представления и типа — то есть того как нечто хранится и что мы под ним понимаем. Ключевое слово «ф32», которое постоянно используется в программе — это 32-битный формат хранения.

Скриншот программы «Эль 76» с кодом на русском языке, реализующим песню «99 бутылок пива на стене», включая циклы и вывод строк в терминал.
Внешний вид интегрированной среды разработки языка программирования «Эль-76» в эмуляторе L76

Что-то написать на нём удалось благодаря найденному на «Вебархиве» эмулятору и документации с примерами кода. Эмулятор далеко не полный, поэтому некоторые вещи приходилось писать вовсе не так, как задумывали создатели языка.

% Песня о пиве 99.l76
программа
  процедура пиво = проц(ф32 бутылок)
  начало
    если бутылок = 0 то
      печатьмс(стр8 "no bottles")
    инес бутылок = 1 то
      печатьмс(стр8 "1 bottle")
    иначе
      печать(бутылок);
      печатьмс(стр8 " bottles")
    все
  конец;

  ф32 бутылок;
  для бутылок от 99 вниздо 1 цикл
    пиво(бутылок);
    печатьмс(стр8 " of beer on the wall, ");
    пиво(бутылок);
    печатьмс(стр8 " of beer.");
    печатькс();
    печатьмс(стр8 "Take one down and pass it around, ");
    пиво(бутылок - 1);
    печатьмс(стр8 " of beer on the wall.");
    печатькс();
    печатькс()
  повторить;

  печатьмс(стр8 "No more bottles of beer on the wall, no more bottles of beer.");
  печатькс();
  печатьмс(стр8 "Go to the store and buy some more, 99 bottles of beer on the wall.")
конец

Тем не менее, программа запускается и выводит задуманное, хотя могла бы выглядеть менее уродливо, будь у меня компилятор, реализующий «Эль-76» полностью.

6 комментариев

Возвращение PV-S450

PDA Casio PV-S450 у меня уже очень давно. У меня сложились определённые предпочтения к программам, которые я использую, я постоянно слежу за их обновлениями и благодарен их авторам, за то, что они трудятся в том числе и на моё благо. Я вот тут подумал — а чем я могу помочь авторам этих программ?

Давным-давно, когда я активно программировал на языке Ассемблер, я очень интересовался недокументированными командами процессора — привычка унаследованная ещё со Спектрума, а там их было в изобилии. Бывает, что команды эти позволяют сэкономить драгоценное время или память или просто запутать потенциального взломщика.

Во всех Casio PV, младше 1600-й модели стоит процессор NEC V30. Сегодня я вспомнил, что когда-то в составе Interrupt List мне попадался файл с недокументированными командами процессора и там были и команды NEC V30 тоже. Сегодня я его нашёл, перевёл описание всех полезных команд и отформатировал. Результат выложил в интернет.

4 комментария