Календарь-1 (152)

«Вечный календарь», КС 7104/232
Автор: Вячеслав Алексеев, январь 1987 года
Версия для МК-152: Илья Васильев, 20 ноября 2007 года

00.В↑   01.K [x] 02.П5   03.-    04.ВП   05.2    06.K [x] 07.П4    08.FВx   09.K{x}
10.ВП   11.4     12.П3   13.ИПB  14.-    15.Fx≥0 16.18    17.KИП5  18.ИП4   19.3
20.-    21.Fx<0  22.27   23.KИП3 24.ИП4  25.9    26.+     27.1     28.3     29.x
30.2    31.+     32.5    33.%    34.K[x] 35.5    36.ИП3   37.x     38.4     39.%
40.K[x] 41.+     42.ИП5  43.+    44.В↑   45.В↑   46.7     47.П0    48.%     49.K[x]
50.7    51.x     52.-    53.Fx=0 54.56   55.7    56.П8    57.3     58.F10x  59.ПE
60.П6   61.+     62.П9   63.1    64.0    65.KПE  66.4     67.5     68.KП6   69.FL0
70.68   71.Cx    72.KП6  73.8    74.6    75.ИП8  76.+     77.КИПРГ 78.KП9   79.ИПE
80.PPП  81.90    82.27   83.ИП8  84.С/П  85.БП   86.00    87.8F    88.82    89.91
90.97   91.8F    92.91   93.82

Исходные значения: год принятия нового стиля (1918) ПB
Инструкция: дд.ммгггг В/О С/П «день недели»

Программа по-прежнему состоит из трёх частей. Первую — расфасовку даты по регистрам
(адреса 00—12) удалось сделать короче, т.к. в МК-152 было наконец-таки доведено до
ума и документировано использование ВП для умножения на степени десятки. Счётная
часть (13—56) основана на всё той же формуле Даффета-Смита и немного удлинилась,
т.к. я закодировал счётный и поправочный коэффициенты прямо в текст программы (27—33).
Кстати, так было и в исходной программе Трохименко-Любича, которую взял за основу
В. Алексеев. Третья часть, формирование календарного видеосообщения, на каждом
микрокалькуляторе традиционно своя.

Новый вариант формирования итогового видеосообщения получился ближе к Б3-34: вначале
в байтовые регистры 1000—1008 засылается перевод строки, знаки «–» и ноль, символ
окончания строки (адреса 47, 57—60, 63—72). Код символа, обозначающего день недели,
считывается с адресов 87—93 новой командой КИПРГ и вписывается в соответствующий
регистр (61—62, 73—78). После чего наша любимая функция R9027 выводит результат
в строку комментария. Забавно, что результат больше напоминает видеосообщение МК-61.

После ввода программы запишем в регистр B год замены старого стиля на новый (1918 ПB).
Порядок работы чуть проще прежнего: набираем число и через запятую шесть цифр — месяц
и год (например 9 мая 1945 года соответствует 9,051945). Нажимаем В/О С/П, в строке
комментария появляется «3» и видеосообщение «––С––––» (среда). Проверим остальные
тестовые примеры:

  • 9,011905 С/П. Результат: «––––––В». «Кровавое воскресенье».
  • 1,012001 С/П. Результат: «П––––––». Как мы все помним, XXI век начался
    с понедельника.

  • 20,112007 С/П. Результат: «–В–––––», сегодня вторник. День нового рождения
    этой программы, когда я проспал работу.

  • Зададим европейский год перехода на новый стиль (1582 ПB) и вычислим день
    смерти великого художника Рафаэля 6,041520 С/П. Результат: «–––-П––». Пятница,
    как и было сказано в январском выпуске КЭИ от 1987 года.

«Календарь-1», КС 26272/80
Улучшенная версия для МК-152: Илья Васильев, 20 ноября 2007 года

 00.Fx=0  01.29  02.9     03.0    04.5     05.5    06.П6    07.КИП6 08.П5   09.П7
 10.КИП6  11.П4  12.КИП6  13.2    14.ВП    15.3    16.+     17.ПП   18.83   19.КП6
 20.БП    21.44  22.8F    23.82   24.91    25.97   26.8F    27.91   28.82   29.В↑
 30.K[x]  31.П5  32.П7    33.-    34.ВП    35.2    36.K [x] 37.П4   38.FВx  39.K{x}
 40.ВП    41.4   42.ПП    43.83   44.3     45.F10x 46.ПE    47.П6   48.+    49.П9
 50.7     51.П0  52.1     53.0    54.KПE   55.4    56.5     57.KП6  58.FL0  59.57
 60.Cx    61.KП6 62.2     63.1    64.ИП8   65.+    66.КИПРГ 67.KП9  68.ИПE  69.PPП
 70.90    71.27  72.ИП4   73.ВП   74.2     75./-/  76.ИП7   77.+    78.ИП2  79.ИП8
 80.С/П   81.БП  82.00    83.П2   84.П3    85.ИПB  86.-     87.Fx≥0 88.90   89.KИП5
 90.ИП4   91.3   92.-     93.Fx<0 94.99    95.KИП3 96.ИП4   97.9    98.+    99.1
100.3    101.x  102.2    103.+   104.5    105.%   106.K[x] 107.5   108.ИП3 109.x
110.4    111.%  112.K[x] 113.+   114.ИП5  115.+   116.В↑   117.В↑  118.7   119.%
120.K[x] 121.7  122.x    123.-   124.Fx=0 125.27  126.7    127.П8  128.В/О 

Исходные значения: год принятия нового стиля (1918) ПB
Инструкция: дд.ммгггг В/О С/П «день недели»; Cx В/О С/П «какой сегодня день»

Управление программой «Календарь-1» (КС 26272/80) не отличается от предыдущей, разве
что в стек выводится чуть больше информации. Но теперь, если на вход программы
подать 0, то она прочтёт в календаре дату и не только высветит текущий день недели,
но ещё и запишет его в регистр R9059. Т.к. МК-152 лишь обновляет этот регистр (но сама
не вычисляет его), у программы появляется важный практический смысл.

Новая программа хороша ещё тем, что счётная часть выделена в подпрограмму с адресами
83—128. Этот алгоритм можно использовать в других программах или совершенствовать.
Ведь в существующем виде календарь годен лишь до принятия Петром Первым юлианского
летоисчисления (до 1700 года), а для европейской истории — практически до начала
нашей эры.

Оценка: 4.5 (Голосов 2)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Исходник Автор: Serguei_Tarassov
Контрольная Автор: AtH