Паскаль-автокод пошёл!

121 views
Skip to first unread message

Leo B.

unread,
May 7, 2021, 1:30:49 PM5/7/21
to БЭСМ-6
Вы будете смеяться, но я таки приступил к декомпиляции Паскаль-автокода (пока там около 1/5 всего кода): https://github.com/besm6/pasauto-re/blob/main/pasauto.pas

Если кто когда видел исходник Паскаль-автокода, то говорите, что помните.

Несколько замечаний и наблюдений по ходу процесса:

1. Размер двоичного кода компилятора - 027777, т. е. он занимает 12 листов памяти под завязку. Для сравнения, декомпилированный Паскаль-монитор кончается на 

адрес Nстр  
24120 8788  0 ЕND

Тексты диагностик явно пытались сокращать для экономии памяти путем откусывания букв ("ид не опред", "ид не перемен", "ДОЛЖНЫ БЫТЬ ТИПЫ RЕАL ИЛИ ЦЙ"), а хотя бы заменить "обнаружено" на "найдено" не догадались.

2. В диагностиках ошибок есть упоминания о каком-то препроцессоре:
НЕ ЗАКРЫТА УСЛ СЕКЦИЯ, ОШ ПРЕПРОЦЕССОРА
(в литеральных константах в пока еще не обработанном коде встречаются DEF и INC)
Что это было? В документации, сколько себя помню, не было ничего подобного.

3. Магическая процедура ГГ, описанная в инструкции как 
 ГГ(А) где А типа ALFA, эквивалентна следующей процедуре:
_PROCEDURE ГГ(А: ALFA);
_VAR I:INTEGER; T:_ARRAY [0..5] _OF CHAR;
_BEGIN
UNPCK(T[0], A);
_FOR I:=0 _TO 5 _DO
_IF T[I]#'0' _THEN _BEGIN
_FOR I:=I _TO 5 _DO
WRITE(T[I]);
EXIT;
_END;
WRITE(T[5])
_END

(что не даёт немедленного понимания, зачем бы оно было надо - ну печать с отбрасыванием старших нулей, ну и что?), применяется очень широко: оказывается, она нужна для печати коротких литеральных строк, т.к. порождает код, гораздо более короткий, чем аналогичный write. Трюк в том, что в Паскале-автокоде литеральные строки длиннее 6 символов допускались исключительно в операторах write, и в нём выдача строк любой длины, в т.ч. 1 символ, делалась одинаково.  Т. е. односимвольный литерал для write - это символ в старшем байте, а константа типа char для всех других применений - это символ в младшем байте.

Автоматически оптимизировать write(строка не длиннее 6 символов) не случилось.

4. Сходство структуры кода Паскаля-монитора с оригинальным CDC-шным я заметил довольно рано, буквально с первых декомпилированных процедур. Ничего подобного про Паскаль-автокод сказать не могу. 

5. Любовь к оператору select имеет свою цену. Он занимает на одно слово больше, чем эквивалентный if-then-else if-then-else if ...

6. Сколько выполняемого кода пошло на поддержку пресловутого оператора branch, я ещё не знаю, а ассемблерного кода ради него выдаётся знатное количество: 570 символов. Это больше, чем максимальное количество символов в строке, которое можно ввести редактором ПУЛЬТа (512). Как я уже знаю из декомпиляции других паскаль-автокодных программ, переводы строк внутри литералов допускаются, и обозначают символ ГОСТ 0175, который удобным образом при перекодировке в код ITM превращается в пробел (в составе диагностики ВЫХОД ПО ALT).  

7. По сравнению c Паскаль-монитором, возможность писать строки произвольной разумной длины заметно облегчает процесс. 

8. Отсутствие различий между целыми числами и символами/перечисляемыми типами (в отличие от  П-М) с одной стороны, облегчает процесс декомпиляции, а с другой - затрудняет понимание. 

9. Оператор перехода можно было писать не только как _GOTO, но и как _GO _TO. Уж что-что, а это надо было бы выкинуть (или вообще не делать) ради экономии места в первую очередь. Интересно, кто там в ВЦ АН был буквоед, требующий подобного поклона Алголу-60, не Курочкин ли? 

Leo

Макаров-Землянский Николай

unread,
May 8, 2021, 4:05:51 AM5/8/21
to be...@googlegroups.com
Леонид!
Это очень замечательно!
Но расскажите, пожалуйста, как из ОС ДИСПАК записать файл в UNIX. С удовольствием использую Паскаль-автокод.
 
 
07.05.2021, 20:30, "Leo B." <leo...@gmail.com>:
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/d1a330c3-08af-477f-bf4e-ce56242ffab0n%40googlegroups.com.

Василий Долматов

unread,
May 8, 2021, 6:29:20 AM5/8/21
to 'Кирилл Кобелев' via БЭСМ-6


7 мая 2021 г., в 20:30, Leo B. <leo...@gmail.com> написал(а):

Вы будете смеяться, но я таки приступил к декомпиляции Паскаль-автокода (пока там около 1/5 всего кода): https://github.com/besm6/pasauto-re/blob/main/pasauto.pas

Если кто когда видел исходник Паскаль-автокода, то говорите, что помните.
Я видел…

Что сказать?
Пока все «замечания и наблюдения» - соответствуют… 


То, что Лёня наверняка знает, но повторю на всякий случай:

 - «Паскаль-автокод» - это творение лаб. 18-2 ИТМ и ВТ, а именно:
  В.В. Кобелева, С.А.(?) Рыжакова и и С.А.(?) Рыжкова… 

Сделанное ровно в Unix-style, когда первая версия транслятора компилировалась практически врчучную, зато последующие - компилировались предыдущими версиями транслятора. 


Тема про «Паскаль-Монитор» Пирина - полностью независимая и да, готов поверить, что в качестве базы для него послужил Паскаль-CDC…. Потому как результирующий код отличался _очень_сильно_.



Что еще сказать?
 

dol@

Leo B.

unread,
May 8, 2021, 12:14:15 PM5/8/21
to БЭСМ-6
Я не верю в ИТМовское происхождение Паскаля-автокода (по крайней мере, в ИТМовское происхождение его окончательной версии), поскольку
инструкция по нему - авторства Пирина. Лучшее, что могу предположить - это то, что в лаб. 18-2 сделали базовую самокомпилирующуюся версию и отдали Пирину 
для расширения входного языка ближе к стандарту. 

Leo

Leo B.

unread,
May 8, 2021, 12:16:08 PM5/8/21
to БЭСМ-6
On Saturday, May 8, 2021 at 1:05:51 AM UTC-7 nvmz wrote:
Леонид!
Это очень замечательно!
Но расскажите, пожалуйста, как из ОС ДИСПАК записать файл в UNIX. С удовольствием использую Паскаль-автокод.
 
Из-под SIMH - никак. Из-под эмулятора Диспака - как-то можно, Миша Ярославцев приделывал к нему какие-то магические экстракоды с этой целью.

Миша?

Макаров-Землянский Николай

unread,
May 8, 2021, 1:13:08 PM5/8/21
to be...@googlegroups.com
По-моему, утверждение "Из-под SIMH - никак" - ошибочно. Я исхожу из того, что Эмулятор это процесс в UNIX и параллельно нему может крутиться другой независимый процесс. Медуза (это транспортная станция) будет стандартно записывать файлы в формате КРАБа на один из архивных дисков с помощью Э70. Как я понимаю, файл образа диска будет доступен для независимого процесса. Этот процесс считает его, переформатирует в файл UNIXa. Если я нигде не ошибаюсь, то такая схема должна получится. Кстати, я уже читаю (могу, если надо писать) образы дисков от БЭСМ-6 под Виндой. Если пойдет Эмулятор VT-340 под UNIX (сейчас стараюсь это сделать), то указанный кусок Медузы не вызовет затруднений.
Я не прав?
 
 
08.05.2021, 19:16, "Leo B." <leo...@gmail.com>:
--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/9d47de0b-5538-403b-a44d-b22699179498n%40googlegroups.com.

Leo B.

unread,
May 8, 2021, 1:25:45 PM5/8/21
to БЭСМ-6
Описанный процесс - не "из ОС ДИСПАК под SIMH", а с помощью независимого процесса. Так, конечно, будет работать, и довольно эффективно, если можно сделать событие по изменению файла.
Эмулятор VT-340 под UNIX ждем с нетерпением!

Макаров-Землянский Николай

unread,
May 8, 2021, 1:46:18 PM5/8/21
to be...@googlegroups.com
Леонид!
Медуза работает под SIMH! Основные Э/К в ней Э71 и Э70. Она написана на БЕМШе на основе текстов КРАБа. От КРАБа отрезали клешни - получилась Медуза. Это многоканальная транспортная станция для приема-передачи телеметрической информации. Клиентская часть всей этой фигни написана на Паскале под Виндой. Эмулятор VT-340 нужен мне, чтобы редактировать тексты на БЕМШе из КРАБа. В Putty нет режима SEND. Поэтому директива РЕД не работает. Сейчас загвоздка в Эмуляторе VT-340 в том, чтобы из него убрать RichElit, который не транслируется под UNIX. Все остальные компоненты должны транслироваться. Пробовали давно, но раньше все работало.
 
08.05.2021, 20:25, "Leo B." <leo...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/a63c7242-68ed-4e7b-8b7c-7cc88dad41e8n%40googlegroups.com.

Макаров-Землянский Николай

unread,
May 8, 2021, 3:10:40 PM5/8/21
to be...@googlegroups.com
Интересно, как функционирует ДИСПАК при режиме SEND? Сейчас идет заворот принимаемого символа. А в реальном VT-340 заворота не было.
Наверное, надо переехать в другую тему. Я стал писать здесь, т.к. вся моя конструкция написана на Паскале.
 
 
08.05.2021, 20:46, "Макаров-Землянский Николай" <nv...@yandex.ru>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/10815171620494837%40mail.yandex.ru.

Василий Долматов

unread,
May 8, 2021, 3:16:12 PM5/8/21
to 'Кирилл Кобелев' via БЭСМ-6


8 мая 2021 г., в 19:14, Leo B. <leo...@gmail.com> написал(а):

Я не верю в ИТМовское происхождение Паскаля-автокода (по крайней мере, в ИТМовское происхождение его окончательной версии),
Не верь… :)

Дискутировать не буду, я никогда не дискутирую с людьми по вопросам веры :)
Это чревато… :)

поскольку
инструкция по нему - авторства Пирина.
Феерическая логика :)

Лучшее, что могу предположить - это то, что в лаб. 18-2 сделали базовую самокомпилирующуюся версию и отдали Пирину 
для расширения входного языка ближе к стандарту. 


Скорее уж отдали ему, чтобы он узнал как делаются  трансляторы  и сделал-таки Паскаль-Монитор… 
:)

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/1fbf3f6b-213d-4184-80ba-0edcd977df9bn%40googlegroups.com.

Michael Yaroslavtsev

unread,
May 8, 2021, 5:52:25 PM5/8/21
to be...@googlegroups.com


On Sat, May 8, 2021 at 3:29 AM Василий Долматов <vdol...@gmail.com> wrote:
...
 - «Паскаль-автокод» - это творение лаб. 18-2 ИТМ и ВТ, а именно:
  В.В. Кобелева, С.А.(?) Рыжакова и и С.А.(?) Рыжкова… 
Рыжков только в 81-ом пришёл.
Надо бы его воспоминания заслушать. Поищу его. 
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/35CCD52D-4A3E-4CD1-AC3E-829D4DA5A6C1%40gmail.com.


--
Thanks,
-- Michael

Michael Yaroslavtsev

unread,
May 8, 2021, 5:55:07 PM5/8/21
to be...@googlegroups.com
Не, не припомню такого.
А почему бы в СИМХе какой-нибудь ПЛ-перфоратор не замкнуть на файл? 

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/9d47de0b-5538-403b-a44d-b22699179498n%40googlegroups.com.


--
Thanks,
-- Michael

Michael Yaroslavtsev

unread,
May 8, 2021, 7:59:06 PM5/8/21
to be...@googlegroups.com
On Sat, May 8, 2021 at 3:29 AM Василий Долматов <vdol...@gmail.com> wrote:
...

 - «Паскаль-автокод» - это творение лаб. 18-2 ИТМ и ВТ, а именно:
  В.В. Кобелева, С.А.(?) Рыжакова и и С.А.(?) Рыжкова… 

Блин, Вася, попутал ты меня. То-то он нигде не находится!
Рожков он, а не Рыжков.
Послал ему ping.
 
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/35CCD52D-4A3E-4CD1-AC3E-829D4DA5A6C1%40gmail.com.


--
Thanks,
-- Michael

Michael Yaroslavtsev

unread,
May 9, 2021, 4:26:49 AM5/9/21
to be...@googlegroups.com, Sergey Rozhkov
Приглашаю Серёжу Рожкова для комментария.
(А как его в группу добавить, если он не возражает, конечно?)

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/3C649A8A-1AE9-4CB7-A5FF-DDB107334158%40gmail.com.


--
Thanks,
-- Michael

Serge Vakulenko

unread,
May 9, 2021, 5:05:00 AM5/9/21
to БЭСМ-6
On Sunday, May 9, 2021 at 1:26:49 AM UTC-7 BOPOHOK wrote:
Приглашаю Серёжу Рожкова для комментария.
(А как его в группу добавить, если он не возражает, конечно?)

Я отправил ему приглашение.

--Сергей

Василий Долматов

unread,
May 9, 2021, 5:06:29 AM5/9/21
to 'Кирилл Кобелев' via БЭСМ-6


9 мая 2021 г., в 02:58, Michael Yaroslavtsev <absolutel...@gmail.com> написал(а):



On Sat, May 8, 2021 at 3:29 AM Василий Долматов <vdol...@gmail.com> wrote:
...

 - «Паскаль-автокод» - это творение лаб. 18-2 ИТМ и ВТ, а именно:
  В.В. Кобелева, С.А.(?) Рыжакова и и С.А.(?) Рыжкова… 

Блин, Вася, попутал ты меня. То-то он нигде не находится!
Рожков он, а не Рыжков.

Склероз проклятый, извини… :( 
Да, Рожков… :(

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzucwFsh7Uaz5T-%3DA9vEBK5THfvUfG3F_mvvo5%3D3OyJEc1Q%40mail.gmail.com.

Sergey Rozhkov

unread,
May 9, 2021, 7:32:32 PM5/9/21
to БЭСМ-6
Привет всем!
Ну да, Сергей Рожков - это я :)
В группе у Вадима Валериановича были еще Владимир Тихорский и Александр Рыжаков (А.К. Рыжаков :)).
Саша и я были тогда студентами, а Володя уже был на старшем курсе.
Прекрасное было время! :-)
Насчет Паскаль-автокода могу прояснить ситуацию, поскольку был непосредственным участником событий.
Пскаль-автокод был написан Сергеем Ивановичем Пириным методом раскрутки (как у Вирта написано).
Потом уже появился Паскль-монитор, как отдельное творение.
Вадим Валерианович в ту пору сильно увлекался искуственныи интеллектом  и языком Лисп (он нам читал лекции на Физтехе и по ИИ и по Лисп).
Он активно общался с В.М.Брябриным. на ВЦ и там познакомился с Сергеем Пириным, с языклм Паскаль.
И с этого момента началась любовь к Паскалю.
Кстати, в ИТМ-овском препиринте В.Кобелева "Диалоговая сервисная система "Джин"" (не знаю, есть ли он у вас, если нет, то могу отсканировать) на странице 6 явно написано: "Транслятор с Паскаля для ЭВМ БЭСМ-6 выполнил С.И.Пирин".
А вот Володя Тихорский (и немного я) уже потом сделал ряд тулов на основе Паскаль-автокода и несколько оптимизаций (под псевдо-комментариями).
Есть препринт Володи Тихорского "Дополнительные средства системы Паскаль-автокод" (ИТМиВЕ, 1980 г.) с описанием всего этого.
Могу тоже отсканировать, если надо.
Вадим Валерианович много и часто общался с Пириным, и Сергей Иванович сделал довольно много правок в компиляторе в результате этого общения.
Очень здОрово, что Леня смог заняться Паскаль-автокодом.
Я так понял, что тексты компилятора не сохранились?
Могу еще раз спросить у Володи Тихорского, но, по-моему, все ленты у него пропали.

-сергей

Leo B.

unread,
May 10, 2021, 12:30:02 AM5/10/21
to БЭСМ-6
Привет, Сергей!

Препринт Кобелева про Джин мы давно ищем, будем очень благодарны за скан.  

Если я правильно помню, "Дополнительные средства системы Паскаль-автокод" я видел примерно однажды, и запомнил из него всего одну деталь - оператор "выражение _IN тип" (это воспоминание мне потом сильно помогло). Так что скан этого текста тоже нам очень пригодится. Да и собственно инструкция к Паскаль-автокоду у нас неполная, без нескольких глав, набранная со слепой распечатки вручную: https://github.com/besm6/besm6.github.io/blob/master/wiki/pascal-autocode.txt Поэтому будем рады всему, что найдётся.

Текстов компиляторов у нас не было, но в 2017 году я, наконец, собрался и декомпилировал Паскаль-монитор и его утилиты, а потом руки постепенно дошли и до сохранившихся кусков Джина (калах, бега/посадка/шашки), благо они относительно простые. Весь 2020-й год я собирался с духом, и, наконец, взялся за собственно Паскаль-автокод. Даже после небольшого процента кода заметно, что два компилятора заметно разошлись, и уже обнаружилось несколько секретных псевдокомментариев, так что препринт Тихорского будет очень ко времени.

Спасибо,
Leo

Serge Vakulenko

unread,
May 10, 2021, 2:24:12 AM5/10/21
to БЭСМ-6
Приветствую, Сергей!

Мы с Вами пересекались пару раз живьём, но не уверен, что Вы помните. Я тогда работал в Курчатнике под руководством Пасынкова и занимался Си-компилятором для Эльбруса-Б. 

Уточню для полноты картины. 
Вот исходники Паскаль-монитора, восстановленные Лёней: https://github.com/besm6/pascal-re/blob/master/pascompl.b6

Компилятор успешно компилирует сам себя и производит идентичный бинарник. Позже Лёня переписал его на Си: https://github.com/besm6/mesm6/blob/master/toolchain/pascompl/pascompl.cc

Совместными усилиями мы добавили к нему линкер, и теперь имеем под Линуксом полную систему кросс-компиляции, поддерживающую формат объектных файлов мониторки и ряд языков программирования (паскаль, алгол, фортран-гдр, фортран-дубна, форекс, мадлен, бемш).

С уважением,
Сергей Вакуленко

Sergey Rozhkov

unread,
May 10, 2021, 11:37:36 AM5/10/21
to БЭСМ-6
Леня, привет!

Володе Тихорскому я на всякий случай написал, вдруг у него описание Паскаль-автокода осталась.
А насчет препринтов - сделаю, конечно. А куда выкладывать? Или просто тебе прислать pdf?

К оператору _IN Тихорский  отношения не имел. Это, вообще-то, стандартный оператор Паскал для выявления принадлежности величины множеству (set of <type>).
Единственное, может мы приложили руку к оптимизации _IN :) Но это весьма неточно.

Володя сделал следующее (и это описано в препринте):
- программа ЭХОЛОТ для определения объема памяти, необходимой программе
- программа ЧИСТКА для выявления конструкций (меток, констант, типов, переменных, процедур), не используемых в программе
- дополнительные отладочные средства, задаваемые псевдо-комментариями  F, V, G, S
- дополнительные отимизации по (*=M-*): целочисленное умножение, деление нацело, деление по модулю на константы, являющиеся положительными степенями двойки.

ЭХОЛОТ и ЧИСТКА были сделаны на основе компиялтора Паскаль (тексты у нас были). С.И.Пирин все одобрил.
А Вадим Валерианович активно всем этим пользовался при написании и отладки ДЖИНа.

-сергей
 

On Sunday, May 9, 2021 at 9:30:02 PM UTC-7 Leo B. wrote:

Sergey Rozhkov

unread,
May 10, 2021, 11:41:41 AM5/10/21
to БЭСМ-6
Привет, Сергей!

Просто здОрово!!! Посмотрю исходники.
Я Ленечке ответил, постараюсь что-то еще раздобыть, а препринты отсканирую и выложу.

Да, пересекались наверняка )
Я что-то там творил для Эльбруса-Б (расширенный Паскаль), но все это потом осталось недоделаным, увы.

-сергей

Leo B.

unread,
May 10, 2021, 12:45:21 PM5/10/21
to БЭСМ-6
On Monday, May 10, 2021 at 8:37:36 AM UTC-7 s.a.r...@gmail.com wrote:
Леня, привет!

Володе Тихорскому я на всякий случай написал, вдруг у него описание Паскаль-автокода осталась.
А насчет препринтов - сделаю, конечно. А куда выкладывать? Или просто тебе прислать pdf?

Можно прислать мне или Сергею, мы выложим. Или можно выложить в какое-нибудь хранилище типа яндекс-диска, мы оттуда заберём. Спасибо!

К оператору _IN Тихорский  отношения не имел. Это, вообще-то, стандартный оператор Паскал для выявления принадлежности величины множеству (set of <type>).
Единственное, может мы приложили руку к оптимизации _IN :) Но это весьма неточно.

Нет, там хитрее. На большинстве архитектур допустимый диапазон элементов множества был достаточно большой (или диапазон кодов символов достаточно маленький), чтобы можно было делать проверку на принадлежность к буквам как C _IN ['A'..'Z']. У Вирта на CDC коды были шестибитные, а длина слова - 60, ему было просто.

Но на БЭСМ-6 этот фокус не проходит, и для аналогичного эффекта надо писать примерно (ORD(C)-ORD'A') _IN [0..ORD('Z')-ORD('A')] . Это недёшево. 
Поэтому кто-то из вас придумал такое: раз тип LETTER = 'A'..'Z' объявлен, и компилятор умеет генерировать код для проверки принадлежности к диапазону значений типа, не пользующийся битовыми множествами, то пусть можно будет писать C _IN LETTER. Причём это точно был кто-то из вас, потому что Паскаль-монитор этого не умеет:

 ******23 ИДEHTИФИKATOP TИПA BMECTO ПEPEMEHHOЙ
 00010    5  2 WRITELN(C IN LETTER)
        *****                    0

А Паскаль-автокод работает:
           СИСТЕМА ПАСКАЛЬ ВЕРСИИ 1.7.76
         1. (*=Р-,Т-,L-*)
         2. _РRОGRАМ ТЕSТ;
         3. _ТУРЕ LЕТТЕR = ’А’..’Z’;
         4. _VАR Т,F: ВООLЕАN;
         5. _(
         6. Т := ’L’ _IN LЕТТЕR;
         7. F := ’_’ _IN LЕТТЕR;
         8. WRIТЕLN(Т, F)
         9. _).
        10.
 ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
________________________________________________________________________________________________________________________________
                АВТОКОД  00.00.70. БЛОК           N 000001 ЛИСТ 000000

  ТRUЕ FАLSЕ
ВСЕ СДЕЛАНО.


Володя сделал следующее (и это описано в препринте):
- программа ЭХОЛОТ для определения объема памяти, необходимой программе
- программа ЧИСТКА для выявления конструкций (меток, констант, типов, переменных, процедур), не используемых в программе

Бинарники я видел в образах дисков, при желании можно и декомпилировать.

- дополнительные отладочные средства, задаваемые псевдо-комментариями  F, V, G, S

Буквы F, V, G, S я видел в коде разборки псевдокомментариев, но пока не дошел  до мест, где они используются.

- дополнительные отимизации по (*=M-*): целочисленное умножение, деление нацело, деление по модулю на константы, являющиеся положительными степенями двойки.

Это есть и в Паскаль-мониторе. Надо будет сравнить.
 
ЭХОЛОТ и ЧИСТКА были сделаны на основе компиялтора Паскаль (тексты у нас были). С.И.Пирин все одобрил.
А Вадим Валерианович активно всем этим пользовался при написании и отладки ДЖИНа.

Пирина, боюсь, уже не найти. Я 3-4 года назад пытался, но не вышло.

Leo
 

Василий Долматов

unread,
May 10, 2021, 1:43:51 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 19:45, Leo B. <leo...@gmail.com> написал(а):

On Monday, May 10, 2021 at 8:37:36 AM UTC-7 s.a.r...@gmail.com wrote:
Леня, привет!

Володе Тихорскому я на всякий случай написал, вдруг у него описание Паскаль-автокода осталась.
А насчет препринтов - сделаю, конечно. А куда выкладывать? Или просто тебе прислать pdf?

Можно прислать мне или Сергею, мы выложим. Или можно выложить в какое-нибудь хранилище типа яндекс-диска, мы оттуда заберём. Спасибо!

К оператору _IN Тихорский  отношения не имел. Это, вообще-то, стандартный оператор Паскал для выявления принадлежности величины множеству (set of <type>).
Единственное, может мы приложили руку к оптимизации _IN :) Но это весьма неточно.

Нет, там хитрее. На большинстве архитектур допустимый диапазон элементов множества был достаточно большой (или диапазон кодов символов достаточно маленький), чтобы можно было делать проверку на принадлежность к буквам как C _IN ['A'..'Z']. У Вирта на CDC коды были шестибитные, а длина слова - 60, ему было просто.

Но на БЭСМ-6 этот фокус не проходит, и для аналогичного эффекта надо писать примерно (ORD(C)-ORD'A') _IN [0..ORD('Z')-ORD('A')] . Это недёшево. 

Насколько я помню в описании языка Паскаль-Автокод для БЭСМ-6 было явно указано "ограничение реализации" для типа SET, что он не может содержать более 48 элементов. 

Не уверен, что конструкция типа [0..ORD('Z')-ORD('A’)] вообще там скомпилировалась бы… :)

Но мой склероз может меня и подвести :)

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/cf3b9946-44d4-46c3-9ebc-7c3ad552b708n%40googlegroups.com.

Sergey Rozhkov

unread,
May 10, 2021, 1:47:28 PM5/10/21
to be...@googlegroups.com
О, а вот это похоже на правду (то, что Василий написал)!
Я теперь тоже такое припоминаю )))


Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/4CA8A61D-5113-4E54-9CE1-A03DF69157EC%40gmail.com.

Василий Долматов

unread,
May 10, 2021, 1:49:57 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 20:47, Sergey Rozhkov <s.a.r...@gmail.com> написал(а):

О, а вот это похоже на правду (то, что Василий написал)!

Да, привет, кстати! Рад слышать живым и здоровым! :) :) :)

И когда ты сказал про Володю Тихорского, я вас, «трёх Кобелевских мушкетёров»,  вспомнил даже визуально… :)

dol@

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADF6C3hzctLFM7xeqPjZT1vcPnXudp9ZZuQuDzdviCRnNY_7qA%40mail.gmail.com.

Василий Долматов

unread,
May 10, 2021, 1:52:59 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 20:43, Василий Долматов <vdol...@gmail.com> написал(а):



10 мая 2021 г., в 19:45, Leo B. <leo...@gmail.com> написал(а):

On Monday, May 10, 2021 at 8:37:36 AM UTC-7 s.a.r...@gmail.com wrote:
Леня, привет!

Володе Тихорскому я на всякий случай написал, вдруг у него описание Паскаль-автокода осталась.
А насчет препринтов - сделаю, конечно. А куда выкладывать? Или просто тебе прислать pdf?

Можно прислать мне или Сергею, мы выложим. Или можно выложить в какое-нибудь хранилище типа яндекс-диска, мы оттуда заберём. Спасибо!

К оператору _IN Тихорский  отношения не имел. Это, вообще-то, стандартный оператор Паскал для выявления принадлежности величины множеству (set of <type>).
Единственное, может мы приложили руку к оптимизации _IN :) Но это весьма неточно.

Нет, там хитрее. На большинстве архитектур допустимый диапазон элементов множества был достаточно большой (или диапазон кодов символов достаточно маленький), чтобы можно было делать проверку на принадлежность к буквам как C _IN ['A'..'Z']. У Вирта на CDC коды были шестибитные, а длина слова - 60, ему было просто.

Но на БЭСМ-6 этот фокус не проходит, и для аналогичного эффекта надо писать примерно (ORD(C)-ORD'A') _IN [0..ORD('Z')-ORD('A')] . Это недёшево. 

Насколько я помню в описании языка Паскаль-Автокод для БЭСМ-6 было явно указано "ограничение реализации" для типа SET, что он не может содержать более 48 элементов. 

Не уверен, что конструкция типа [0..ORD('Z')-ORD('A’)] вообще там скомпилировалась бы… :)
Уточню, что указанная - скорее всего скомпилировалась бы, потому как там всего 26 элементов получается… :)

Sergey Rozhkov

unread,
May 10, 2021, 1:58:10 PM5/10/21
to be...@googlegroups.com
Привет, Вася!

Ну конечно и я тебя помню )))
Общались в БЭСМовское время частенько.
Вадим Валерианович создал вокруг себя целое сообщество поклонников БЭСМ-6 и ДЖИНа.
По всей стране!
И стараниями ребят дело БЭСМ-6 живет!!!


Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/2A664ECB-CA78-49EC-8130-C64E5D6BEBC5%40gmail.com.

Макаров-Землянский Николай

unread,
May 10, 2021, 2:04:49 PM5/10/21
to be...@googlegroups.com
Знатоки Паскаля!
Подскажите, пожалуйста, есть ли в Паскале какая-либо функция, чтобы удобно посмотреть значение множества? У меня не праздный вопрос, а чисто практический. Я эту конструкцию активно использую. И еще - ord применима к перечислимому типу?
 
 
10.05.2021, 20:53, "Василий Долматов" <vdol...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/EA68AC82-E943-403E-953C-71E3474E5A28%40gmail.com.

Leo B.

unread,
May 10, 2021, 2:16:17 PM5/10/21
to БЭСМ-6
On Monday, May 10, 2021 at 10:43:51 AM UTC-7 ReedCat wrote:
Но на БЭСМ-6 этот фокус не проходит, и для аналогичного эффекта надо писать примерно (ORD(C)-ORD'A') _IN [0..ORD('Z')-ORD('A')] . Это недёшево. 

Насколько я помню в описании языка Паскаль-Автокод для БЭСМ-6 было явно указано "ограничение реализации" для типа SET, что он не может содержать более 48 элементов. 

Совершенно верно. 

Не уверен, что конструкция типа [0..ORD('Z')-ORD('A’)] вообще там скомпилировалась бы… :)

А куда оно денется, оно мало того что синтаксически корректно, так и в кодировке ГОСТ между A и Z  хоть и больше 26, но меньше 48 символов. Чуть-чуть. (А - 040, Z - 0114).

           СИСТЕМА ПАСКАЛЬ ВЕРСИИ 1.7.76
         1. (*=Р-,Т-,L-*)
         2. _РRОGRАМ ТЕSТ;
         3. _ТУРЕ LЕТТЕR = ’А’..’Z’;
         4. _VАR С:СНАR;
         5. _(
         6. _FОR С := ’0’ _ТО ’◇’ _DО
         7. _IF (ОRD(С)-ОRD(’А’)) _IN [0..ОRD(’Z’)-ОRD(’А’)] _ТНЕN WRIТЕLN(С, ’ IS А LЕТТЕR’);
         8. _).
         9.
 ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
А IS А LЕТТЕR
Б IS А LЕТТЕR
В IS А LЕТТЕR
Г IS А LЕТТЕR
...
Д IS А LЕТТЕR
Z IS А LЕТТЕR


Василий Долматов

unread,
May 10, 2021, 2:39:54 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 21:04, Макаров-Землянский Николай <nv...@yandex.ru> написал(а):

Знатоки Паскаля!
Подскажите, пожалуйста, есть ли в Паскале какая-либо функция, чтобы удобно посмотреть значение множества?

А что такое «значение множества»?

У меня склероз говорит, что для множества было определено три операции:
«Добавление _элемента_ в множество»
«Удаление _элемента_ из множества»
и
«Проверка наличия _элемента_ в множестве»

Вот не помню других… :(

Даже про проверку наличия подмножества в множестве - как-то сильно сомневаюсь. 

У меня не праздный вопрос, а чисто практический. Я эту конструкцию активно использую.


И еще - ord применима к перечислимому типу?
Насколько помню - да, вот только результат надо посмотреть что выдаст… :)
Скорее всего номер элемента в перечислении, но «с 0» или «с 1» - я б проверил сначала :)

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/6084191620669388%40mail.yandex.ru.

Leo B.

unread,
May 10, 2021, 3:40:41 PM5/10/21
to БЭСМ-6
On Monday, May 10, 2021 at 11:39:54 AM UTC-7 ReedCat wrote:
Знатоки Паскаля!
Подскажите, пожалуйста, есть ли в Паскале какая-либо функция, чтобы удобно посмотреть значение множества?

А что такое «значение множества»?

Содержимое слова в удобном для чтения виде.

write(s) печатала множество в восьмеричном виде в Паскаль-мониторе, а в Паскаль-автокоде нужно извращаться.


У меня склероз говорит, что для множества было определено три операции:
«Добавление _элемента_ в множество»
«Удаление _элемента_ из множества»
и
«Проверка наличия _элемента_ в множестве»

Вот не помню других… :( 
Даже про проверку наличия подмножества в множестве - как-то сильно сомневаюсь. 

s1 < s2 означает проверку на принадлежность.

Leo

Василий Долматов

unread,
May 10, 2021, 3:43:17 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 22:40, Leo B. <leo...@gmail.com> написал(а):

On Monday, May 10, 2021 at 11:39:54 AM UTC-7 ReedCat wrote:
Знатоки Паскаля!
Подскажите, пожалуйста, есть ли в Паскале какая-либо функция, чтобы удобно посмотреть значение множества?

А что такое «значение множества»?

Содержимое слова в удобном для чтения виде.

write(s) печатала множество в восьмеричном виде в Паскаль-мониторе, а в Паскаль-автокоде нужно извращаться.

А что Паскаль-автокод на write(s) выводит?
Вот не помню… :(



Макаров-Землянский Николай

unread,
May 10, 2021, 3:43:19 PM5/10/21
to be...@googlegroups.com
 
 
10.05.2021, 21:39, "Василий Долматов" <vdol...@gmail.com>:
 
 
10 мая 2021 г., в 21:04, Макаров-Землянский Николай <nv...@yandex.ru> написал(а):
 
Знатоки Паскаля!
Подскажите, пожалуйста, есть ли в Паскале какая-либо функция, чтобы удобно посмотреть значение множества?
 
А что такое «значение множества»?

Множество это переменная, у которой есть значение. Как я понял, здесь обсуждалась одна из реализаций этой переменной (по-моему, это называется векторная реализация). Поэтому я спросил. Конечно, я сам написал свою функцию вывода. Но интересно, как предполагалось или выводилось значение. Например, в Паскалях БЭСМ-6.
 
У меня склероз говорит, что для множества было определено три операции:
«Добавление _элемента_ в множество»
«Удаление _элемента_ из множества»
и
«Проверка наличия _элемента_ в множестве»
 
Вот не помню других… :(
 
Даже про проверку наличия подмножества в множестве - как-то сильно сомневаюсь. 
 
У меня не праздный вопрос, а чисто практический. Я эту конструкцию активно использую.
 
 
И еще - ord применима к перечислимому типу?
Насколько помню - да, вот только результат надо посмотреть что выдаст… :)
Скорее всего номер элемента в перечислении, но «с 0» или «с 1» - я б проверил сначала :)

Почему-то ребята из Борланда говорят несовместимый тип. Наверное, где-то я промазал.
Кстати, почему говорили, что а in [0..9] эффективней, чем (а>=0) and (а>=9)?
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/397B91D4-2418-4C9F-A4E2-B2D02B2381D9%40gmail.com.

Василий Долматов

unread,
May 10, 2021, 3:46:25 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 22:43, Макаров-Землянский Николай <nv...@yandex.ru> написал(а):

 

Почему-то ребята из Борланда говорят несовместимый тип. Наверное, где-то я промазал.
Кстати, почему говорили, что а in [0..9] эффективней, чем (а>=0) and (а>=9)?
 
СЧ А
И КОНСТАНТА_1777
ПЕ …


СЧ А
ВЧ КОНСТАНТА_0
ПЕ
СЧ КОНСТАНТА_9
ВЧ А
ПЕ


Ммм? :)

Василий Долматов

unread,
May 10, 2021, 3:47:38 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 22:46, Василий Долматов <vdol...@gmail.com> написал(а):



10 мая 2021 г., в 22:43, Макаров-Землянский Николай <nv...@yandex.ru> написал(а):

 

Почему-то ребята из Борланда говорят несовместимый тип. Наверное, где-то я промазал.
Кстати, почему говорили, что а in [0..9] эффективней, чем (а>=0) and (а>=9)?
 
Извините… :)

СЧ КОНСТАНТА_1
  СД А

Leo B.

unread,
May 10, 2021, 3:57:20 PM5/10/21
to БЭСМ-6
On Monday, May 10, 2021 at 12:43:17 PM UTC-7 ReedCat wrote:

А что такое «значение множества»?

Содержимое слова в удобном для чтения виде.

write(s) печатала множество в восьмеричном виде в Паскаль-мониторе, а в Паскаль-автокоде нужно извращаться.

А что Паскаль-автокод на write(s) выводит?
Вот не помню… :(

Увы, не компилирует вовсе.

            СИСТЕМА ПАСКАЛЬ ВЕРСИИ 1.7.76
         1. (*=Р-,Т-,L-*)
         2. _РRОGRАМ МАIN;
         3. _VАR S: _SЕТ _ОF 0..47;
         4. _ВЕGIN
         5. S := [3, 5, 7, 13, 25, 37];
         6. WRIТЕLN(S)
         7. _ЕND.
         8.
 ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
***ОШ.WRIТЕ=2 СТР.=6.NLЕХ=4.ИД=S.СИМ=).КОНТЕКСТ
IТЕLN(S)
_ЕND.
В 7 СТРОКАХ ОБНАРУЖЕНО 1 ОШИБ.

Что именно значит ОШ.WRIТЕ=2 в нашей инструкции было неразборчиво.

Макаров-Землянский Николай

unread,
May 10, 2021, 3:57:31 PM5/10/21
to be...@googlegroups.com
Это правильно, если диапазон укладывается в разрядность машины и честные программисты программировали реализацию.
К примеру. Сейчас на Яндексе шла какая-то реклама какой-то школы программирования web-сайтов. У них у самих сайт кривой. Задал им вопрос - типа чему вы учите, если сами не умеете? Мне что-то долго объясняли...
Это я к тому, что раньше были ПРОГРАММИСТЫ (это мы), а сейчас полное говно!
Надо бы ответить про SEND VT-340. Что-то много там накопилось.
 
 
10.05.2021, 22:46, "Василий Долматов" <vdol...@gmail.com>:
--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/BD154938-7FBA-4F92-B37D-60418A225CF6%40gmail.com.

Макаров-Землянский Николай

unread,
May 10, 2021, 4:14:16 PM5/10/21
to be...@googlegroups.com
Я это сегодня проходил.
Пришлось писать типа:
WriteSet(a, b,'3', '5', '7', '13', '25', '37')
а тело типа
if a in b then write....
 
 
10.05.2021, 22:57, "Leo B." <leo...@gmail.com>:
--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/59d75308-3e86-488f-b7a1-587c2a03b074n%40googlegroups.com.

Василий Долматов

unread,
May 10, 2021, 4:29:14 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 22:57, Leo B. <leo...@gmail.com> написал(а):

Судя по диагностике - он ожидал квадратную скобку после S, то есть, был готов принять элемент множества, но не все множество целиком…

Забавно… И что бы он печатал? TRUE или FALSE в зависимости от наличия элемента?

А можно 

WRITELN(S[3],S[4]) 
Ему подсунуть, если не сложно… ?

Leo B.

unread,
May 10, 2021, 4:35:32 PM5/10/21
to БЭСМ-6
On Monday, May 10, 2021 at 1:29:14 PM UTC-7 ReedCat wrote:
Увы, не компилирует вовсе.

            СИСТЕМА ПАСКАЛЬ ВЕРСИИ 1.7.76
         1. (*=Р-,Т-,L-*)
         2. _РRОGRАМ МАIN;
         3. _VАR S: _SЕТ _ОF 0..47;
         4. _ВЕGIN
         5. S := [3, 5, 7, 13, 25, 37];
         6. WRIТЕLN(S)
         7. _ЕND.
         8.
 ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
***ОШ.WRIТЕ=2 СТР.=6.NLЕХ=4.ИД=S.СИМ=).КОНТЕКСТ
IТЕLN(S)
_ЕND.
В 7 СТРОКАХ ОБНАРУЖЕНО 1 ОШИБ.

Судя по диагностике - он ожидал квадратную скобку после S, то есть, был готов принять элемент множества, но не все множество целиком…

Никогда такого синтаксиса для элементов множества не было. 

Забавно… И что бы он печатал? TRUE или FALSE в зависимости от наличия элемента?

А можно 

WRITELN(S[3],S[4]) 
Ему подсунуть, если не сложно… ?

Как и ожидалось,

 ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
***ОШ.WRIТЕ=2 СТР.=6.NLЕХ=4.ИД=S.СИМ=[.КОНТЕКСТ
IТЕLN(S[3], S[4])
_ЕND.
***ОШ.WRIТЕL=7 СТР.=6.NLЕХ=4.ИД=S.СИМ=[.КОНТЕКСТ
IТЕLN(S[3], S[4])
_ЕND.
***ОШ.WRIТЕL=1 СТР.=6.NLЕХ=4.ИД=S.СИМ=[.КОНТЕКСТ
IТЕLN(S[3], S[4])
_ЕND.
В 7 СТРОКАХ ОБНАРУЖЕНО 3 ОШИБ.
 

Василий Долматов

unread,
May 10, 2021, 4:36:54 PM5/10/21
to 'Кирилл Кобелев' via БЭСМ-6


10 мая 2021 г., в 23:35, Leo B. <leo...@gmail.com> написал(а):

On Monday, May 10, 2021 at 1:29:14 PM UTC-7 ReedCat wrote:
Увы, не компилирует вовсе.

            СИСТЕМА ПАСКАЛЬ ВЕРСИИ 1.7.76
         1. (*=Р-,Т-,L-*)
         2. _РRОGRАМ МАIN;
         3. _VАR S: _SЕТ _ОF 0..47;
         4. _ВЕGIN
         5. S := [3, 5, 7, 13, 25, 37];
         6. WRIТЕLN(S)
         7. _ЕND.
         8.
 ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
***ОШ.WRIТЕ=2 СТР.=6.NLЕХ=4.ИД=S.СИМ=).КОНТЕКСТ
IТЕLN(S)
_ЕND.
В 7 СТРОКАХ ОБНАРУЖЕНО 1 ОШИБ.

Судя по диагностике - он ожидал квадратную скобку после S, то есть, был готов принять элемент множества, но не все множество целиком…

Никогда такого синтаксиса для элементов множества не было. 

Забавно… И что бы он печатал? TRUE или FALSE в зависимости от наличия элемента?

А можно 

WRITELN(S[3],S[4]) 
Ему подсунуть, если не сложно… ?

Как и ожидалось,

Угу, глюкаю… :( Сорри… :(

Спасибо...


 ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
***ОШ.WRIТЕ=2 СТР.=6.NLЕХ=4.ИД=S.СИМ=[.КОНТЕКСТ
IТЕLN(S[3], S[4])
_ЕND.
***ОШ.WRIТЕL=7 СТР.=6.NLЕХ=4.ИД=S.СИМ=[.КОНТЕКСТ
IТЕLN(S[3], S[4])
_ЕND.
***ОШ.WRIТЕL=1 СТР.=6.NLЕХ=4.ИД=S.СИМ=[.КОНТЕКСТ
IТЕLN(S[3], S[4])
_ЕND.
В 7 СТРОКАХ ОБНАРУЖЕНО 3 ОШИБ.
 


--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/707b7a63-afa6-4229-b384-537504a915aan%40googlegroups.com.

Макаров-Землянский Николай

unread,
May 10, 2021, 4:45:57 PM5/10/21
to be...@googlegroups.com
Правильно. Так писать нельзя. Это не по-Паскалевски.
 
 
10.05.2021, 23:35, "Leo B." <leo...@gmail.com>:
--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/707b7a63-afa6-4229-b384-537504a915aan%40googlegroups.com.

Leo B.

unread,
May 17, 2021, 3:40:29 AM5/17/21
to БЭСМ-6
Вы будете смеяться в очередной раз.  Дело дошло до вызова процедуры, которая ещё не была определена, в целях взаимной рекурсии.
В стандартном Паскале для этих случаев есть слово forward, и предопределение процедуры пишется, например, как

procedure procName(... параметры, если есть ...); forward;

... тут procName может вызываться ...

procedure procName; (* параметры повторно не декларируются *)
(* дальше как обычно, объявления и тело процедуры *)

Ровно так это устроено в Паскаль-мониторе. Но не таков Паскаль-автокод! Во-первых, в инструкции написано

7.1. Предопределение процедур.
        _PROCEDURE A;
        _BEGIN
            B(2);
        _END;

        _PROCEDURE B(T: INTEGER);
        _BEGIN
            A
        _END;

Последовательность процедур подобного рода со взаимными ссылками
в версии компилятора Паскаль на ассемблер Чайковского должна быть
прописана в виде:

        _PROCEDURE B(T: INTEGER);+
        _PROCEDURE A;
        _BEGIN
            B(2);
        _END;
        _PROCEDURE B(T: INTEGER);
        _BEGIN
            A
        _END;

Ну ладно, для экономии кода сделали вместо forward плюсик.  Повторное объявление параметров подозрительно; действительно, компилятор ругается на открывающую скобку после B в определении  с номером ошибки, отсутствующим в инструкции.
Ладно, спишем на ошибку copy-paste - уже не знаем, то ли публикатора инструкции, то ли того, кто её набирал со слепой распечатки. Оставляю _PROCEDURE B;  - ругается на точку с запятой с той же ошибкой.

Тогда я чисто интуитивно заменяю точку с запятой на +

        _PROCEDURE B+
        _BEGIN
            A
        _END;

и так оно компилируется. 

Мораль - доверяйте интуиции.

Leo B.

unread,
May 20, 2021, 3:53:38 AM5/20/21
to БЭСМ-6
Когда размер исходного текста достиг примерно 020 зон, ввод с помощью "З БУФ=ТТ" перестал правильно работать.
Пришлось переключиться на "новый редактор" (РЕД ПАМ), но это даст только временное облегчение - он может работать с файлами вплоть до 024 зон, чего может не хватить - треть кода пока не обработана, т. е. окончательный размер исходника будет ближе к 030 зонам.

Leo

Макаров-Землянский Николай

unread,
May 20, 2021, 4:04:04 AM5/20/21
to be...@googlegroups.com
Как в свое время сказал Коля Балакирев - модулиться надо. Правда, это относилось к БЕМШу.
 
 
20.05.2021, 10:53, "Leo B." <leo...@gmail.com>:
Когда размер исходного текста достиг примерно 020 зон, ввод с помощью "З БУФ=ТТ" перестал правильно работать.
Пришлось переключиться на "новый редактор" (РЕД ПАМ), но это даст только временное облегчение - он может работать с файлами вплоть до 024 зон, чего может не хватить - треть кода пока не обработана, т. е. окончательный размер исходника будет ближе к 030 зонам.
 
Leo

 

--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/152c1ec9-3c49-4689-8b22-35bdc80f05a4n%40googlegroups.com.

Michael Yaroslavtsev

unread,
May 20, 2021, 4:37:01 AM5/20/21
to be...@googlegroups.com
Так вот почему Кобелёв так убористо писал.

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/152c1ec9-3c49-4689-8b22-35bdc80f05a4n%40googlegroups.com.


--
Thanks,
-- Michael

Leo B.

unread,
May 20, 2021, 12:41:08 PM5/20/21
to БЭСМ-6
Какие у Кобелева могли быть программы на Паскале сравнимые по размеру с компилятором? Тот же калах, к примеру, даже в декомпилированном виде со всеми именами локальных переменных вида L4V12Z вместо каких-нибудь однобуквенных занимает в кодировке ГОСТ всего 015 зон. 

С файлами большого размера, по-видимому, боролись с помощью инклюдов. Секретный (не описанный в документации) препроцессор работает так:

$INC файл = #include "файл" из текущего архива. Вложенные инклюды не допускаются.
$DEF имя = #define имя
$BEG имя =  #ifdef имя
$END = #endif

Отсутствие аналога #else несколько удивляет.

Теперь понятно, с помощью чего, скорее всего, была сделана программа вычисления дебютов в калахе, что от неё не осталось никаких следов.

Василий Долматов

unread,
May 21, 2021, 10:30:31 AM5/21/21
to 'Кирилл Кобелев' via БЭСМ-6


Меня тут наши музейщики просят найти тех, кто мог бы помочь им с описанием машин «Урал-1» и «Сетунь» и истории их создания.

Если кто знает людей, имеющих такую информацию (может быть занимающихся историей вычтехники в СССР), то поделитесь информацией о них, пожалуйста.


dol@

Макаров-Землянский Николай

unread,
May 21, 2021, 10:55:55 AM5/21/21
to be...@googlegroups.com
Про Урал ничего не могу сказать. А про Сетунь - у меня два однокурсника ею занимались у Брусенцова. Они живут в стране НАТО. Но думаю, проблем не будет.
Что конкретно нужно от них?
 
 
21.05.2021, 17:30, "Василий Долматов" <vdol...@gmail.com>:



Меня тут наши музейщики просят найти тех, кто мог бы помочь им с описанием машин «Урал-1» и «Сетунь» и истории их создания.

Если кто знает людей, имеющих такую информацию (может быть занимающихся историей вычтехники в СССР), то поделитесь информацией о них, пожалуйста.


dol@
 

--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу БЭСМ-6.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/besm6/452BC005-AA70-4CB9-A3EC-F84C14E11624%40gmail.com.

Василий Долматов

unread,
May 21, 2021, 11:07:46 AM5/21/21
to 'Кирилл Кобелев' via БЭСМ-6


21 мая 2021 г., в 17:55, Макаров-Землянский Николай <nv...@yandex.ru> написал(а):

Про Урал ничего не могу сказать. А про Сетунь - у меня два однокурсника ею занимались у Брусенцова. Они живут в стране НАТО. Но думаю, проблем не будет.
Что конкретно нужно от них?

написать про историю создания, устройство, если сохранилась какая-то техническая документация, то поделиться. 

музейная экспозиция будет иметь следующую структуру:

"В пространстве инсталляции представлены мокапы и части вычислительных машин ЭЦВМ "Урал-1 и «Сетунь». С помощью печатных материалов и интерактивных тач-панелей : 
- рассказывается история проектирования ЭЦВМ "Урал-1 и «Сетунь»; 
- демонстрируется эмулятор троичного компьютера «Сетунь»;
- карта распространения ЭВМ «Сетунь»;
- техническая информация о ЭЦВМ "Урал-1 и «Сетунь» (блок-схемы и технические характеристики);
- краткий таймлайн достижений России и СССР в создании вычислительной техники."

материал в любой раздел - будет принят с благодарностью. 

Leo B.

unread,
May 21, 2021, 11:41:51 AM5/21/21
to БЭСМ-6
Писать новое сообщение с новым сабжектом не умеем, да?

Leo B.

unread,
May 21, 2021, 11:57:38 AM5/21/21
to БЭСМ-6
On Thursday, May 20, 2021 at 12:53:38 AM UTC-7 Leo B. wrote:
Когда размер исходного текста достиг примерно 020 зон, ввод с помощью "З БУФ=ТТ" перестал правильно работать.
Пришлось переключиться на "новый редактор" (РЕД ПАМ), но это даст только временное облегчение - он может работать с файлами вплоть до 024 зон, чего может не хватить - треть кода пока не обработана, т. е. окончательный размер исходника будет ближе к 030 зонам.


Новый редактор помог очень относительно. После того, как размер файла превысил 021 зону, РЕД ПАМ (запись в БУФ) + ПАС БУФ стал стабильно приводить к ОШ.АДСИС=1 

Пришлось сделать честный архив Пульта, но как его средствами создать файл нужной длины, я не знаю, поэтому пришлось отредактировать каталог архива СЕРПом и сделать сразу 030, чтобы наверняка хватило.
А раз у меня уже есть конкретное место на диске, куда нужно писать файл, то отпал смысл возиться с редактором, и скрипт сильно упростился:

togost < pasauto.pas > pasauto.gost
besmtool write 2345 --start=0101 --from-file=pasauto.gost

expect -- << EOF
spawn dispak -s pult2.b6
expect  "ПУЛЬТ*\r\n-\r"

send "арх мой,50,100\r"
expect  "*\r\n-\r"

send    "пас пас - зонгп 500300 20\r"
expect  "*\r\n-\r"

send    "конец\n"
expect  "КОНЕЦ ЗАДАЧИ"


Василий Долматов

unread,
May 21, 2021, 12:50:26 PM5/21/21
to be...@googlegroups.com


21 мая 2021 г., в 18:41, Leo B. <leo...@gmail.com> написал(а):

Писать новое сообщение с новым сабжектом не умеем, да?

я именно это и сделал… а что?

бгг…. кажется понял, оно слишком умное и по каким-ито кладжам собирает в цепочки, а не по Subj? ;)




On Friday, May 21, 2021 at 7:30:31 AM UTC-7 ReedCat wrote:


Меня тут наши музейщики просят найти тех, кто мог бы помочь им с описанием машин «Урал-1» и «Сетунь» и истории их создания.

Если кто знает людей, имеющих такую информацию (может быть занимающихся историей вычтехники в СССР), то поделитесь информацией о них, пожалуйста.


dol@

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/2214de50-51a1-4fb8-b228-a839f9c77e03n%40googlegroups.com.

Leo B.

unread,
May 21, 2021, 1:07:15 PM5/21/21
to БЭСМ-6
On Friday, May 21, 2021 at 9:50:26 AM UTC-7 ReedCat wrote:
21 мая 2021 г., в 18:41, Leo B. <leo...@gmail.com> написал(а):

Писать новое сообщение с новым сабжектом не умеем, да?

я именно это и сделал… а что?

бгг…. кажется понял, оно слишком умное и по каким-ито кладжам собирает в цепочки, а не по Subj? ;)

Что значит "по каким-ито кладжам"? Всю жизнь так было. У полей заголовков Message-ID и In-Reply-To: <message ID>  ноги растут из первоначального RFC для почты, которому уже лет 40, поди.

Так что надо не отвечать на произвольный пост и редактировать Subject, а если хочется начать новую тему, то и писать новое сообщение на be...@googlegroups.com

Leo

Василий Долматов

unread,
May 21, 2021, 1:25:15 PM5/21/21
to be...@googlegroups.com


21 мая 2021 г., в 20:07, Leo B. <leo...@gmail.com> написал(а):
Zu Befehl, Herr Gruppenfuehrer! ;)



Michael Yaroslavtsev

unread,
May 21, 2021, 8:24:47 PM5/21/21
to be...@googlegroups.com
Что, умляутов не завезли? :) 



--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/39DA653A-10C8-4F43-BB07-2555AA4D7AF0%40gmail.com.


--
Thanks,
-- Michael

Василий Долматов

unread,
May 22, 2021, 1:35:28 AM5/22/21
to be...@googlegroups.com

Zu Befehl, Herr Gruppenfuehrer! ;)
Что, умляутов не завезли? :) 

лень… и привычка… :)




Leo B.

unread,
May 23, 2021, 1:42:14 AM5/23/21
to БЭСМ-6
Недолго музыка играла. После добавления очередной порции кода я смог успешно скомпилировать с результатом

МАХАDR=23276
НА БОБ 2345 ЗАПИСЬ 0012 ЗОН С 500300 ЗОНЫ(ВОСЬМР )

а после добавления еще пары строк с условным оператором, увеличивающим количество меток, стали возникать ошибки на уровне ассемблирования, 
как будто у автокода Чайковского кончилось место для меток и он начал забывать некоторые из них:

 ПАСКАЛЬ-АВТОКОД 9.(17.05.88) 
,К;А4:14ПВZ2=,17САА5=1СЧ24,У0А7ОШИБКА                                      06
                                           СЧ   210,
                14 ПВ   ГГ=             ,
                 1 СЧ   56=             14 ПВ   ГГ,
                16 ПВ   РR=             ,
           А7:ОШИБКА                                                       06
                   ПБ   Е=              ,


Действительно, простейший эксперимент с программой, генерирующей конское количество меток, например,

(*=p-,t-,l+*)
_PROGRAM MAIN;
_var a:integer;b:boolean;
_BEGIN
b := (a<5)&(a>1)_or(a>100)&(a<1000);
(предыдущую строку повторить раз почти 500)
_END.

приводит к аналогичной ошибке. Программа на одну строку короче успешно компилируется, а ее ассемблерный код кончается на

        А3656:   1 СЧ   12=                ОВ   15,                                              10527  01 010 0012 00 006 0015
                   У0   А3657=           1 СЧ   12,                                              10530  00 26 10533 01 010 0012
                   АВ   16=                У0   А3657,                                           10531  00 005 0016 00 26 10533
        А3660:     СЧ   13=                ПБ   А3661,                                           10532  00 010 0013 00 30 10534
        А3657:     СЧ   12=             ,                                                        10533  00 010 0012 00 000 0000
        А3661:   1 ЗЧ   13=                ПБ   Е,                                               10534  01 000 0013 00 30 74012

3661(8) = 1969 (плюс сколько там констант-эквивалентностей и служебных меток, будет около 2048, что логично). 
Количество двоеточий в выдаче  последней удачной компиляции восстанавливаемого текста - 1973. 

Использование вложенных блоков для ограничения областей видимости меток - code(B;K;) и code(E;K;) не помогает.

Поэтому вопрос -- в первую очередь к Сергею, но и ко всем, кто может помнить -- каким магическим образом увеличивали автокоду Чайковского размер памяти для меток?

Leo

Leo B.

unread,
May 23, 2021, 3:40:00 AM5/23/21
to БЭСМ-6
On Saturday, May 22, 2021 at 10:42:14 PM UTC-7 Leo B. wrote:
Использование вложенных блоков для ограничения областей видимости меток - code(B;K;) и code(E;K;) не помогает.

Отбой тревоги. На самом деле помогает, только аккуратно надо (помещение всего тела процедуры в эти скобки не работает, нужно так делать с отдельными большими операторами).


Leo

Sergey Rozhkov

unread,
May 23, 2021, 3:47:59 AM5/23/21
to be...@googlegroups.com
Леня, привет!
Да, я сейчас вспоминаю, что мы на это , естественно, наступали.
И боролись именно с помощью блоков. Если память не изменят :)
Все-таки Джин-овские программы не такие уж большие были, но все же бывали случаи...
P.S. Про препринты помню, завтра постараюсь все сделать.
Просто тут были некие экстраординарные домашние события, не до того было.
С Володей Тихорским общался. Как и ожидалось (к сожалению), ничего у него не сохранилось.
При переезде из ИТМиВТ на Саввинский (в Спарк-центр) все не забрал, а потом уже и поздно было, увы.

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/40a151ed-c74a-4618-9b0e-7156437e0871n%40googlegroups.com.

Leo Broukhis

unread,
May 23, 2021, 4:35:23 AM5/23/21
to БЭСМ-6
Спасибо! Я разобрался чуть более детально: это автоматически делается псевдо-комментарием С-, и это написано в инструкции, но проходило мимо сознания, потому что было непонятно. Но приходится писать его во многих местах.

Смысл ещё парочки псевдо-комментариев я понял - F & G это трассировка вызовов и возвратов из функций, и goto, но ещё остались загадки.



Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADF6C3iPX%2B_3i0FYb%2BPKYcuX_zqbR2c3%3DJMp3xR6rQJ9%2BZPOwQ%40mail.gmail.com.

Stanislaw Z. Raczynski

unread,
May 23, 2021, 10:33:17 AM5/23/21
to be...@googlegroups.com, Leo Broukhis
Так я не понял: препринт про доп. возможности нужен или уже нашелся?
--
С наилучшими пожеланиями
Станислав Рачинский
видимости меток - code(B;K;) и code(E;K;)не помогает.


Отбой тревоги. На самом деле помогает, только аккуратно надо
(помещение всего тела процедуры в эти скобки не работает, нужно
так делать с отдельными большими операторами).


Leo

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
<http://groups.google.com/group/besm6/topics>
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от
нее сообщения, отправьте письмо на электронный адрес
besm6+un...@googlegroups.com
<mailto:besm6+un...@googlegroups.com>.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке

https://groups.google.com/d/msgid/besm6/40a151ed-c74a-4618-9b0e-7156437e0871n%40googlegroups.com

<https://groups.google.com/d/msgid/besm6/40a151ed-c74a-4618-9b0e-7156437e0871n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
<http://groups.google.com/group/besm6/topics>
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее
сообщения, отправьте письмо на электронный адрес
besm6+un...@googlegroups.com
<mailto:besm6+un...@googlegroups.com>.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке

https://groups.google.com/d/msgid/besm6/CADF6C3iPX%2B_3i0FYb%2BPKYcuX_zqbR2c3%3DJMp3xR6rQJ9%2BZPOwQ%40mail.gmail.com

<https://groups.google.com/d/msgid/besm6/CADF6C3iPX%2B_3i0FYb%2BPKYcuX_zqbR2c3%3DJMp3xR6rQJ9%2BZPOwQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
<http://groups.google.com/group/besm6/topics>
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее
сообщения, отправьте письмо на электронный адрес
besm6+un...@googlegroups.com
<mailto:besm6+un...@googlegroups.com>.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке
https://groups.google.com/d/msgid/besm6/CAFmvRscbbZSZ6GATkC0XTWUjkpfEano%3DZ9PJBbg--r%3DZurGhqQ%40mail.gmail.com

<https://groups.google.com/d/msgid/besm6/CAFmvRscbbZSZ6GATkC0XTWUjkpfEano%3DZ9PJBbg--r%3DZurGhqQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.

Leo Broukhis

unread,
May 23, 2021, 11:19:36 AM5/23/21
to БЭСМ-6
Цифровой копии этого препринта у нас пока нет.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/besm6/ba88d8b0-41d2-29a6-59d9-8840c0458399%40gmail.com.

Sergey Rozhkov

unread,
May 23, 2021, 6:28:29 PM5/23/21
to be...@googlegroups.com
Леня,

я отсканировал оба препринта (Доп.средства и Джин).
Послал тебе ссылки для скачивания.
Можно, конечно, и получше пересканировать, но хотя бы...

-сергей


Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAFmvRsdgc0dWvG7KOvRtVY%2BYGrmKh%2Bnoj1dTdUM14km27UDMjg%40mail.gmail.com.

Leo B.

unread,
May 24, 2021, 4:09:11 AM5/24/21
to БЭСМ-6
Привет, Сергей!

Спасибо, получил оба препринта. От Джина, к сожалению, большинство блоков не сохранились. 
"Чистка" на текущем состоянии декомпилируемого текста  (https://github.com/besm6/pasauto-re/blob/main/pasauto.pas), который, естественно, компилируется и бинарник практически совпадает сам  с собой до доделанного места, говорит

                 **** Ч И С Т К А **** 
 ==> 500101 24
                   ПРОГРАММА  СОМРIL 
 
        ОШИБКА=203 СИМ=  СТР=        17 

В 17-й строке определен тип letter = 'a'..'z';

"Эхолот" работает лучше:

                **** Э Х О Л О Т **** 
 ==> 500101 24
                   ПРОГРАММА СОМРIL 
ПРОЦ 2  L3013  ЛОК=    4  ВХОД=    0  СУМ=    4 
ПРОЦ 2  Р3020  ЛОК=    3  ВХОД=    0  СУМ=    3 
ПРОЦ 2 РRЕРЕR  ЛОК=    4  ВХОД=    4  СУМ=   10 
ПРОЦ 2  Р3110  ЛОК=    5  ВХОД=    4  СУМ=   11 
ПРОЦ 3  Р3251  ЛОК=    4  ВХОД=    0  СУМ=    4 
ПРОЦ 3  Р3307  ЛОК=    4  ВХОД=    0  СУМ=    4 
ПРОЦ 2  Р3330  ЛОК=   10  ВХОД=    4  СУМ=   14 
ФУНК 2 GЕТDАТ  ЛОК=    6  ВХОД=    0  СУМ=    6 
ПРОЦ 2 РRINТО  ЛОК=    4  ВХОД=    0  СУМ=    4 
ФУНК 3  F3575  ЛОК=   10  ВХОД=    0  СУМ=   10 
ПРОЦ 3  Р3606  ЛОК=    6  ВХОД=    0  СУМ=    6 
ПРОЦ 3 РUТSЕР  ЛОК=    3  ВХОД=    0  СУМ=    3 
ПРОЦ 3 РUТINS  ЛОК=    4  ВХОД=    3  СУМ=    7 
ИДТИ?
ПРОЦ 3  L3636  ЛОК=    3  ВХОД=    7  СУМ=   12 
ПРОЦ 3  L3644  ЛОК=    3  ВХОД=    0  СУМ=    3 
ПРОЦ 3  L3651  ЛОК=    4  ВХОД=    7  СУМ=   13 
ПРОЦ 3  L3656  ЛОК=    5  ВХОД=    3  СУМ=   10 
ПРОЦ 3  L3667  ЛОК=    4  ВХОД=    0  СУМ=    4 
ПРОЦ 3  АLIGN  ЛОК=    3  ВХОД=    0  СУМ=    3 
ПРОЦ 3  L3712  ЛОК=    3  ВХОД=    7  СУМ=   12 
ПРОЦ 3  L3721  ЛОК=    4  ВХОД=   12  СУМ=   16 
    РЕКУРСИЯ -  L3732 СТР. = 386 
ПРОЦ 3  L3732  ЛОК=    6  ВХОД=   24  СУМ=   32 
ПРОЦ 3  РRЕRR  ЛОК=    5  ВХОД=   11  СУМ=   16 
ПРОЦ 3  ЕRRОR  ЛОК=    5  ВХОД=   16  СУМ=   23 
ПРОЦ 3 SУSЕRR  ЛОК=    4  ВХОД=   23  СУМ=   27 
    РЕКУРСИЯ -  L4225 СТР. = 3734 
ИДТИ?
ПРОЦ 3  L4225  ЛОК=    6  ВХОД=   40  СУМ=   46 
ЕRRОR =    13 NL= 4215 NАМЕ=00АLFА СLАSS=  ТУРЕ С=.376 VSСТ=    П
С ЯП=000VАR 

4214 _type item = _record f0:@item; f1:integer; f2, f3: alfa _end;
4215 _var l4v1z, l4v2z, l4v3z, l4v4z, l4v5z:@item;

Всё равно здорово. 

Насчет псевдокомментариев: F, V, G, S (трассировка входов/выходов в подпрограммы, присваиваний переменным, операторов GOTO и CASE) работают!
Но в коде есть ещё работа с такими псевдокомментариями, не описанными в инструкции:

 Ч - (*=Ч+*) по всей видимости, включение полного игнорирования переводов строк ради возможности разбивать код ассемблера Чайковского в WRITE на куски разумной длины.
 Д - (*=Д+*) приводит к тому, что при объявлении файла с именем INP и вызове GET(INP) вместо этого делается вызов по адресу 76312 (в административку Пульта?) и падает, потому что там мусор. Для чего бы это было?
 Л - пока не понял; как-то связано с именем программы ЛЕНТЯЙ.

И ещё такой вопрос: помнишь ли, работала ли где-нибудь когда-нибудь пресловутая база данных имени Н. И. Филиппова, ВЦ АН СССР, 
ради которой и в Паскаль-Автокод, и в Паскаль-Монитор были добавлены встроенные процедуры OPEND, GETD, PUTD и т.п.

Сейчас в обоих версиях П-А, которые у нас есть, в ассемблерной вставке, которая делается, если использовать эти процедуры, есть опечатка (ИК5=СЧСЧ1 вместо логичного ИК5=СЧ1; метка СЧ1 нигде не описана), поэтому код не ассемблируется,
а если исправить (заменить на ИК5=СЧ001), то тоже падает при попытке выполнить какой-то мусор. 

Предположу от балды, что поддержку этого дела добавили для проформы ради возможности Филиппову "честно" написать в диссертации, что вынесенная на защиту работа "внедрена в нескольких системах программирования", и не более того.

Если что вспомнишь, пиши, пожалуйста.

Спасибо ещё раз,
Leo

Sergey Rozhkov

unread,
May 24, 2021, 4:35:37 AM5/24/21
to be...@googlegroups.com
Замечательно, что ЧИСТКА и ЭХОЛОТ работают! ))
Про Ч, Д припоминаю, что Володя Т. такие псевдокомментарии вводил по просьбе Кобелева.
Но это уже было позже, потому и в препринт не попали.
И ЛЕНТЯЙ, насколько помню, написал сам Вадим Валерианович.
Но вот зачем?! Послал письмо Володе Тихорскому, может он что вспомнит.

С базой данных Филиппова мы не работали.
Вполне возможно, что твое предположение верное )
Пирин мог вставить в оба компилятора чисто для галочки.

А куда ты препринты выложил? Там что-то еще есть интересное?
Жалко, что Джин не сохранился. Вадим Валерианович много ведь где его ставил по все стране.



Вы получили это сообщение, поскольку подписаны на одну из тем в группе "БЭСМ-6".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/besm6/lLgrDe0m7qs/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/8577837e-f43e-48cb-ab30-a78a34876769n%40googlegroups.com.

Leo B.

unread,
May 24, 2021, 6:41:21 PM5/24/21
to БЭСМ-6
Я твои препринты пока не выложил. То, что у нас уже есть, лежит в https://github.com/besm6/besm6.github.io/tree/master/doc

Очередной вопрос про П-А: что ты помнишь про "оператор ветвления" BRANCH/BACK? Я его описание в инструкции в детстве не понимал, но несколько лет назад всё же понял, и он, оказывается. работает.
Кто и когда его придумал?

Leo B.

unread,
May 27, 2021, 12:36:52 AM5/27/21
to БЭСМ-6
Благодаря опыту, процесс декомпиляции, успешно завершившийся сегодня, оказался довольно нетрудным. Прошу: https://github.com/besm6/pasauto-re/blob/main/pasauto.pas

Очередные замечания:

1. Административка то ли Пульта, то ли Паскаля не умеет читать с диска файлы длиной более 21 (25В) зон, даже если в каталоге указано, что длина файла 30В зон.
 При превышении этого значения или читается мусор, или получается ОШ.АДСИС=1. Поэтому в процессе приходилось и добавлять в программу перекодировки UTF8 в ГОСТ сжатие пробелов,
и ликвидировать избыточные скобки, и сокращать длину наиболее часто используемых идентификаторов, и заменять _and на &, и удалять некоторые пробелы вокруг знаков операций.

2. Полученный бинарник сошелся с оригиналом с точностью до дюжины, в общей сложности, мелких различий типа (в бемшевских терминах) СЧ 0 / СЧ =В'0' или НТЖ / НТЖ =В'0', выравниваний, не изменяющих длину кода, и двух мест, демонстрирующих исправление ошибки (в бинарнике на диске, скомпилированном предыдущей версией, ошибка ещё есть, а в коде, компилируемом этим бинарником, она уже исправлена): код, создаваемый для операции получения множества из переменного диапазона ([low..high]) раньше не очищал сумматор, а теперь очищает.

3. Чем ближе к концу программы, тем более заметны попытки сокращать код путем перехода на совпадающие куски и т.п., чтобы вписаться в 12 листов, в то время как ещё есть возможности сделать это более структурными способами, например, обратить внимание на процедуры, в восстановленном коде именуемые L5264 и L5312, отличающиеся лишь одним битом.

4. Подмножество языка, которое поддерживает Паскаль-Автокод, заметно уже, чем у Паскаля-Монитора. Единственное, на что влияет слово PACKED - это на файлы. Ни упакованных записей, ни упакованных массивов не бывает. Стандартные процедуры read/readln не реализованы. 

5. Поддержка пресловутых BRANCH/BACK в коде занимает не так уж много. 

6. Я попытался восстановить по смыслу некоторые имена переменных, процедур и типов. Некоторые вещи остались непонятны: так, например, типы и границы массивов, элементы которых - структуры, как минимум в одном месте остались непонятны, так что пришлось писать примерно 

a: _array [0..0] _of T; 
dummy1, dummy2, dummy3: integer; 
b: _array [1..16] _of T, где Т - тип, занимающий 6 слов. 

Но раз код создается идентичный натуральному, дальше уже можно пытаться делать какие-то эквивалентные преобразования.

7. Это была версия ПАСКАЛЬ-АВТОКОД 9.(17.05.88), а есть ещё и ПАСКАЛЬ-АВТОКОД 9.(09.12.88). Буду выяснять, в чём разница.

Если кто что помнит, особенно Сергей , в части объяснения назначения процедур и структур данных - помогайте.

Если есть вопросы - задавайте. 

Leo

On Friday, May 7, 2021 at 10:30:49 AM UTC-7 Leo B. wrote:
Вы будете смеяться, но я таки приступил к декомпиляции Паскаль-автокода (пока там около 1/5 всего кода): https://github.com/besm6/pasauto-re/blob/main/pasauto.pas

Если кто когда видел исходник Паскаль-автокода, то говорите, что помните.

Несколько замечаний и наблюдений по ходу процесса:

1. Размер двоичного кода компилятора - 027777, т. е. он занимает 12 листов памяти под завязку. Для сравнения, декомпилированный Паскаль-монитор кончается на 

адрес Nстр  
24120 8788  0 ЕND

Тексты диагностик явно пытались сокращать для экономии памяти путем откусывания букв ("ид не опред", "ид не перемен", "ДОЛЖНЫ БЫТЬ ТИПЫ RЕАL ИЛИ ЦЙ"), а хотя бы заменить "обнаружено" на "найдено" не догадались.

2. В диагностиках ошибок есть упоминания о каком-то препроцессоре:
НЕ ЗАКРЫТА УСЛ СЕКЦИЯ, ОШ ПРЕПРОЦЕССОРА
(в литеральных константах в пока еще не обработанном коде встречаются DEF и INC)
Что это было? В документации, сколько себя помню, не было ничего подобного.

3. Магическая процедура ГГ, описанная в инструкции как 
 ГГ(А) где А типа ALFA, эквивалентна следующей процедуре:
_PROCEDURE ГГ(А: ALFA);
_VAR I:INTEGER; T:_ARRAY [0..5] _OF CHAR;
_BEGIN
UNPCK(T[0], A);
_FOR I:=0 _TO 5 _DO
_IF T[I]#'0' _THEN _BEGIN
_FOR I:=I _TO 5 _DO
WRITE(T[I]);
EXIT;
_END;
WRITE(T[5])
_END

(что не даёт немедленного понимания, зачем бы оно было надо - ну печать с отбрасыванием старших нулей, ну и что?), применяется очень широко: оказывается, она нужна для печати коротких литеральных строк, т.к. порождает код, гораздо более короткий, чем аналогичный write. Трюк в том, что в Паскале-автокоде литеральные строки длиннее 6 символов допускались исключительно в операторах write, и в нём выдача строк любой длины, в т.ч. 1 символ, делалась одинаково.  Т. е. односимвольный литерал для write - это символ в старшем байте, а константа типа char для всех других применений - это символ в младшем байте.

Автоматически оптимизировать write(строка не длиннее 6 символов) не случилось.

4. Сходство структуры кода Паскаля-монитора с оригинальным CDC-шным я заметил довольно рано, буквально с первых декомпилированных процедур. Ничего подобного про Паскаль-автокод сказать не могу. 

5. Любовь к оператору select имеет свою цену. Он занимает на одно слово больше, чем эквивалентный if-then-else if-then-else if ...

6. Сколько выполняемого кода пошло на поддержку пресловутого оператора branch, я ещё не знаю, а ассемблерного кода ради него выдаётся знатное количество: 570 символов. Это больше, чем максимальное количество символов в строке, которое можно ввести редактором ПУЛЬТа (512). Как я уже знаю из декомпиляции других паскаль-автокодных программ, переводы строк внутри литералов допускаются, и обозначают символ ГОСТ 0175, который удобным образом при перекодировке в код ITM превращается в пробел (в составе диагностики ВЫХОД ПО ALT).  

7. По сравнению c Паскаль-монитором, возможность писать строки произвольной разумной длины заметно облегчает процесс. 

8. Отсутствие различий между целыми числами и символами/перечисляемыми типами (в отличие от  П-М) с одной стороны, облегчает процесс декомпиляции, а с другой - затрудняет понимание. 

9. Оператор перехода можно было писать не только как _GOTO, но и как _GO _TO. Уж что-что, а это надо было бы выкинуть (или вообще не делать) ради экономии места в первую очередь. Интересно, кто там в ВЦ АН был буквоед, требующий подобного поклона Алголу-60, не Курочкин ли? 

Leo

Leo B.

unread,
May 27, 2021, 1:13:02 AM5/27/21
to БЭСМ-6
On Wednesday, May 26, 2021 at 9:36:52 PM UTC-7 Leo B. wrote:

7. Это была версия ПАСКАЛЬ-АВТОКОД 9.(17.05.88), а есть ещё и ПАСКАЛЬ-АВТОКОД 9.(09.12.88). Буду выяснять, в чём разница.

Разница тривиальна: была исправлена ошибка в построении таблицы переходов для оператора case в случае базирования (было ГГ('ПБ' )..., стало ГГ('10',  'ПБ'). 
Ради этого сократили на 6 букв сообщение об ошибке (было НЕЛЬЗЯ ПРИСВАИВАТЬ ФАЙЛЫ, стало НЕЛЬЗЯ ПРИСВ ФАЙЛЫ).

Leo

Mikhail Popov

unread,
May 27, 2021, 12:12:13 PM5/27/21
to be...@googlegroups.com

Лео, поздравляю с преодолением ПАСКАЛЬ-АВТОКОДА!
Судя по такой борьбе за место, возникает вопрос: почему нельзя было использовать разделы (overlays)?
МП

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/721d752e-94e8-4069-b9d1-7bd3e0053578n%40googlegroups.com.

Василий Долматов

unread,
May 27, 2021, 12:13:55 PM5/27/21
to 'Кирилл Кобелев' via БЭСМ-6
это - стиль жизни… 

я помню как мы в Джине в блоке «Редактор» боролись за каждый байт, чтобы вписаться в нужное число зон… 

мы ж не из ИПМа :)


27 мая 2021 г., в 19:11, Mikhail Popov <mikha...@gmail.com> написал(а):

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y4nObPw2_SZkjCMradMPVj%2B1twpk5Usara0vxkCrATy7w%40mail.gmail.com.

Michael Yaroslavtsev

unread,
May 27, 2021, 12:33:23 PM5/27/21
to be...@googlegroups.com
On Thu, May 27, 2021 at 9:12 AM Mikhail Popov <mikha...@gmail.com> wrote:

Лео, поздравляю с преодолением ПАСКАЛЬ-АВТОКОДА!
Судя по такой борьбе за место, возникает вопрос: почему нельзя было использовать разделы (overlays)?
Так вовсю. ПУЛЬТ, по сути, и есть монитор, управляющий загрузкой оверлеев.
А делать оверлеи внутри паскалевской программы - это уже задача другого, нетривиального уровня сложности. 
МП

On Wed, May 26, 2021 at 10:13 PM Leo B. <leo...@gmail.com> wrote:
On Wednesday, May 26, 2021 at 9:36:52 PM UTC-7 Leo B. wrote:

7. Это была версия ПАСКАЛЬ-АВТОКОД 9.(17.05.88), а есть ещё и ПАСКАЛЬ-АВТОКОД 9.(09.12.88). Буду выяснять, в чём разница.

Разница тривиальна: была исправлена ошибка в построении таблицы переходов для оператора case в случае базирования (было ГГ('ПБ' )..., стало ГГ('10',  'ПБ'). 
Ради этого сократили на 6 букв сообщение об ошибке (было НЕЛЬЗЯ ПРИСВАИВАТЬ ФАЙЛЫ, стало НЕЛЬЗЯ ПРИСВ ФАЙЛЫ).

Leo

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/721d752e-94e8-4069-b9d1-7bd3e0053578n%40googlegroups.com.

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y4nObPw2_SZkjCMradMPVj%2B1twpk5Usara0vxkCrATy7w%40mail.gmail.com.


--
Thanks,
-- Michael

Leo B.

unread,
May 27, 2021, 12:35:50 PM5/27/21
to БЭСМ-6
On Thursday, May 27, 2021 at 9:12:13 AM UTC-7 mikhailp wrote:

Лео, поздравляю с преодолением ПАСКАЛЬ-АВТОКОДА!
Судя по такой борьбе за место, возникает вопрос: почему нельзя было использовать разделы (overlays)?
МП

Спасибо! Он оказался заметно проще, чем Паскаль-Монитор в 2017 году. И короче, 5.5К строк против 8.8К. 
Но размер двоичного кода больше.
Оверлей там был самый главный - ассемблер. А паскаль-компиляторы  однопроходные, их на оверлеи особенно и не поделишь.

Кстати, забыл сказать самое главное: компиляция всего компилятора происходит за 65 млн команд, не так уж и много. 
Автокод Чайковского ничтоже сумняшеся при этом делает 831 обмен с барабаном. 

Leo

Michael Yaroslavtsev

unread,
May 27, 2021, 1:11:42 PM5/27/21
to be...@googlegroups.com
On Thu, May 27, 2021 at 9:35 AM Leo B. <leo...@gmail.com> wrote:

On Thursday, May 27, 2021 at 9:12:13 AM UTC-7 mikhailp wrote:

Лео, поздравляю с преодолением ПАСКАЛЬ-АВТОКОДА!
Судя по такой борьбе за место, возникает вопрос: почему нельзя было использовать разделы (overlays)?
МП

Спасибо! Он оказался заметно проще, чем Паскаль-Монитор в 2017 году. И короче, 5.5К строк против 8.8К. 
Но размер двоичного кода больше.
Оверлей там был самый главный - ассемблер.
Ты намекаешь, что компилятор и ассемблер не работают полностью последовательно? 
А паскаль-компиляторы  однопроходные, их на оверлеи особенно и не поделишь.

Кстати, забыл сказать самое главное: компиляция всего компилятора происходит за 65 млн команд, не так уж и много. 
Автокод Чайковского ничтоже сумняшеся при этом делает 831 обмен с барабаном. 

Leo

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/abc5ebd0-0de5-471f-ab49-b676f3df9b2bn%40googlegroups.com.


--
Thanks,
-- Michael

Leo B.

unread,
May 27, 2021, 1:19:46 PM5/27/21
to БЭСМ-6
On Thursday, May 27, 2021 at 10:11:42 AM UTC-7 BOPOHOK wrote:
On Thu, May 27, 2021 at 9:35 AM Leo B. <leo...@gmail.com> wrote:

On Thursday, May 27, 2021 at 9:12:13 AM UTC-7 mikhailp wrote:

Лео, поздравляю с преодолением ПАСКАЛЬ-АВТОКОДА!
Судя по такой борьбе за место, возникает вопрос: почему нельзя было использовать разделы (overlays)?
МП

Спасибо! Он оказался заметно проще, чем Паскаль-Монитор в 2017 году. И короче, 5.5К строк против 8.8К. 
Но размер двоичного кода больше.
Оверлей там был самый главный - ассемблер.
Ты намекаешь, что компилятор и ассемблер не работают полностью последовательно? 

Они работают полностью последовательно, так что да, компилятор уже и сам тоже оверлей.

 По ключу ПАС или ПАСКАЛ (не знаю, есть ли разница) вызывается мелкая (ассемблерная) прилада, 
которая разбирает командную строку (все эти ПА, ВЫП, ЗОНГП и т. п.), и запускает сначала компилятор, а потом ассемблер. 

Leo

Leo B.

unread,
May 27, 2021, 5:42:50 PM5/27/21
to БЭСМ-6
Мне приходится бороться и за байты в исходном тексте, чтобы и переменные не однобуквенные были, и компилировалось. Хотя было бы здорово, если бы кто-нибудь разобрался, что там за ошибка в административке.

Я обнаружил потайной ход: компилятор считает во входном файле байты с кодами 0201 и выше -  пробелами, а для токена := внутри себя использует символ с кодом 0200.
Оказывается, этот символ допускается и во входном файле! Это экономит мне 240 (десятичных) слов.  НО! Попытка печатать такое на АЦПУ (ПАС ФАЙЛ - ПА ПЕЧ 1) приводит к неудаче: для Э64 этот символ - признак печати с наложением, установка текущей позиции на начало строки. Из чего следует, что этот хак в реальной жизни не применяли. :)

Так что даже не знаю, честно ли будет его использовать. :)

Макаров-Землянский Николай

unread,
May 27, 2021, 11:46:06 PM5/27/21
to be...@googlegroups.com
Если код 200 - это восьмеричный, то в Крабе тоже маразм (точнее, пошел из Новосибирского КОПа). И Диспак его хитро выдает на VT. В эмуляторе VT-340 я пока на него болт забил.
 
28.05.2021, 00:42, "Leo B." <leo...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e025a63b-e488-49b9-ac4c-58c3d6afdd60n%40googlegroups.com.

Василий Долматов

unread,
May 28, 2021, 5:19:29 AM5/28/21
to 'Кирилл Кобелев' via БЭСМ-6
201+N - использовался практически везде и, вроде бы, на уровне Э64 тоже понимался правильно, я не помню, чтобы перед печатью делалась «распаковка пробелов»… 

а вот 200 - это да, хак явно местный :) 

28 мая 2021 г., в 00:42, Leo B. <leo...@gmail.com> написал(а):

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/e025a63b-e488-49b9-ac4c-58c3d6afdd60n%40googlegroups.com.

Leo B.

unread,
May 28, 2021, 6:22:07 AM5/28/21
to БЭСМ-6
On Thursday, May 27, 2021 at 8:46:06 PM UTC-7 nvmz wrote:
Если код 200 - это восьмеричный, то в Крабе тоже маразм (точнее, пошел из Новосибирского КОПа). И Диспак его хитро выдает на VT. В эмуляторе VT-340 я пока на него болт забил.

Восьмеричный, конечно. Ничего особенно хитрого я не вижу. Код 200 выдается как вопросительный знак.

 Leo

Leo B.

unread,
May 29, 2021, 3:02:53 PM5/29/21
to БЭСМ-6
Обнаружилась забавная деталь в работе компилятора: он не объявляет никаких внешних файлов. Что запускалка настраивает ему файл input на входной файл стандартными средствами, описанными в инструкции - это понятно, а вот как работает вывод автокодного текста, если он делается теми же вызовами write, что и выдача заголовка 
 ПАСКАЛЬ-АВТОКОД 9.(17.05.88) и сообщений об ошибках, которые попадают на терминал или АЦПУ, а автокод попадает куда надо? 
Оказывается, трюк в том, что при выдаче автокодного текста ни разу не используется WRITELN, поэтому он буферизуется-буферизуется на барабан, а по выходу из программы специальным образом code(ПБZ0=); (похоже, стандартными средствами языка не делается, и что именно это делает?) запускалка подаёт его на вход автокоду.

Leo

Leo B.

unread,
Jun 1, 2021, 5:16:30 PM6/1/21
to БЭСМ-6
Немного развлекательной статистики:

На данный момент на компиляцию компилятора уходит практически ровно 65 млн команд (пользователя). Сергей, это похоже на правду? Не помнишь примерно, сколько времени ЦП уходило на компиляцию?

Из них 24.2 млн на компиляцию из Паскаля в автокод ИТМ, и 40 с лишним млн - на ассемблирование.
Из 24764В адресов, занимаемых выполняемым кодом в компиляторе, были задействованы в выполнении 14345В - 58%.
Всего в коде  компилятора было выполнено 15.3 млн команд (63%) - остальное - в библиотеке (36-й лист). 
Из этих 15.3 млн 13% (почти 2 млн) приходятся на поиск в массиве констант (уже оптимизированный коротким циклом на автокоде), и 1.8 млн - на разборку идентификаторов. 

На 11 наиболее популярных адресов приходится 25% выполненных команд; ещё 48 адресов добавляют  25%. 

Leo

Message has been deleted

Leo B.

unread,
Jun 1, 2021, 9:23:05 PM6/1/21
to БЭСМ-6
Очередная хитрость Паскаль-автокода: из-за того, что вычисление размера записи переменной длины по списку значений селекторов, если у записи были фиксированные поля, почему-то не работало, да и утомительно их все писать, если дерево вариаций разветвлённое, например, new(t, cType, tArray), был сделан хак: конструкция new(t; поле) через точку с запятой означает "выделить память для записи,, чтобы помещались поля вплоть до упомянутого включительно". Очень удобно.

В Паскаль-мониторе нет ничего подобного, всё по стандарту. 

Leo

Leo B.

unread,
Jun 2, 2021, 4:30:03 AM6/2/21
to БЭСМ-6
В результате медитации над священным текстом открылось мне новое знание:  печать чисел в восьмеричном виде делается с помощью указания ширины поля в восьмеричном виде (в отличие от Паскаль-монитора, где для этого было магическое слово "oct", отчего по умолчанию выдавалось все 16 цифр).  Итак, практическая магия, эксперимент 1:

_program main;
_var i:integer;
_( _for i := 10 _downto -10 _do writeln(i, ' = ', i:0B) _).

        10 = 12
         9 = 11
         8 = 10
         7 = 7
         6 = 6
         5 = 5
         4 = 4
         3 = 3
         2 = 2
         1 = 1
         0 = 0
        -1 = 61916848118
        -2 = 61916848118
        -3 = 6191684811870
        -4 = 6191684811870
        -5 = 6191684811870
        -6 = 6191684811870
        -7 = 6191684811870
        -8 = 6191684811870
        -9 = 6191684811870
       -10 = 6191684811870

"Но как, Холмс?" Ладно ещё цифры 8 и 9 в восьмеричных числах, но почему они такие почти все одинаковые? 

 Ну ладно, не любит процедура отрицательные числа, может себе позволить. Практическая магия, эксперимент 2:

_program main;
_var i:integer;
_( i := 1; _repeat writeln(i:0B); i := shift(i, 32767) + 1 _until i < 0 _).

(Если фунция shift делает вид, что с её помощью нельзя сдвигать влево, но очень хочется, то можно.)

1
3
7
17
37
77
177
377
777
1777
3777
7777
17777
37777
77777
177777
377777
777777
1777777
3777777
7777777
17777777
37777777
77777777
177777777
377777777
777777777
1777777777
3777777777
7777777777
17777777777
37777777777
77777777777
177777777777
377777777777
777777777777
1777777777773
1578754522222
1180708011120
2851033611370

Такие дела.

Leo B.

unread,
Jun 4, 2021, 2:20:23 AM6/4/21
to БЭСМ-6
Кто из специалистов --  может, даже не столько по Паскалю-автокоду, сколько по Пульту -- сможет ответить на нижеследующий вопрос?

При компиляции обычной программы на Паскале при использовании в ней некоторых стандартных процедур и конструкций компилятор добавлял к формируемому автокодному тексту код для поддержки этих конструкций, начиная от функции ROUND(x),  которая эквивалентна TRUNC(x + 0.5), и со всеми остановками типа поддержки передачи файлов и подпрограмм как параметров подпрограмм, работы с базой данных, поддержки BRANCH и т.п.
В то же время при компиляции перемещаемой/загружаемой как оверлей программы по псевдокомментарию (*=X+*) вместо всего этого просто делались ссылки на соответствующие процедуры в административный лист.

Спрашивается, почему так не делалось всегда, раз административный лист всё равно всегда был нужен?

Макаров-Землянский Николай

unread,
Jun 6, 2021, 6:53:53 AM6/6/21
to be...@googlegroups.com
А вот сообщите кто-нибудь мне (дураку) - как обстоят дела с "IN"? Наверное, в версиях СССР Паскаль работал и работает правильно.
Оператор: if Key in ['а'..'я'] then. Его правильно сжует FreePasca (на UNIX)? Или такую конструкцию надо программировать по-другому?
 
 
02.06.2021, 11:30, "Leo B." <leo...@gmail.com>:
--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/cf76e9eb-e2d1-494f-8816-c33f0f8f9dcfn%40googlegroups.com.

Leo B.

unread,
Jun 6, 2021, 11:36:47 AM6/6/21
to БЭСМ-6
On Sunday, June 6, 2021 at 3:53:53 AM UTC-7 nvmz wrote:
А вот сообщите кто-нибудь мне (дураку) - как обстоят дела с "IN"? Наверное, в версиях СССР Паскаль работал и работает правильно.
Оператор: if Key in ['а'..'я'] then. Его правильно сжует FreePasca (на UNIX)? Или такую конструкцию надо программировать по-другому?

На этот счёт есть https://www.jdoodle.com/execute-pascal-online/

Можно экспериментировать, не отходя от браузера.

Program test(output);
    var x:char;
    begin x := '0';
    if x in ['а'..'я'] then writeln('good');
end.

не работает: 
jdoodle.pas(4,14) Error: Ordinal expression expected


Макаров-Землянский Николай

unread,
Jun 6, 2021, 11:55:14 AM6/6/21
to be...@googlegroups.com
Круто!!!!
А как Паскаль (СССР) трактует попадание элемента в множество? У меня есть две гипотезы:
1.  ['а'..'я'] - творение Борланда и Вирт запрещал это. Хотя [0..9] работало на PDP-11.
2. Транслятор боится русских букв.
Попробуйте на Паскалях версии СССР.
 
 
06.06.2021, 18:36, "Leo B." <leo...@gmail.com>:
--

Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ef5e629f-4a8b-4938-a417-d1014286322bn%40googlegroups.com.

Leo B.

unread,
Jun 6, 2021, 12:42:02 PM6/6/21
to БЭСМ-6
Когда собственно Паскаль разрешает в множествах элементы со значениями до 255, и кодировка русских букв однобайтовая, то русские буквы в множествах работать будут.
В кодировке UTF-8 тип литерала 'Я' - строка, а не символ, потому что между кавычками - два байта.

У Вирта на CDC в множествах допускались элементы со значениями от 0 до 59, по количеству бит в слове; на БЭСМ-6, соответственно, от 0 до 47.

Leo

Макаров-Землянский Николай

unread,
Jun 6, 2021, 1:06:20 PM6/6/21
to be...@googlegroups.com
 
 
06.06.2021, 19:42, "Leo B." <leo...@gmail.com>:
Когда собственно Паскаль разрешает в множествах элементы со значениями до 255, и кодировка русских букв однобайтовая, то русские буквы в множествах работать будут.
В кодировке UTF-8 тип литерала 'Я' - строка, а не символ, потому что между кавычками - два байта.

Леонид! У меня нет UTF-8. Букв меньше 33. Однако вопрос в том, что значит 'a' и что значит двоеточие в конструкции IN? Например, буква 'А' это 1, Я - 35, а Т -63. На латинских буквах можно привести аналогичный пример. Думаю, что Вирт об этом умалчивал (или думал о своем). Думаю, что приведенный мной пример некорректный. В Паскале так делать нельзя, а надо писать П/П "попали в русское, латинское, прописное или заглавное множество".
 
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/d8ae174f-679c-4369-97bd-a401005eaf74n%40googlegroups.com.

Leo B.

unread,
Jun 6, 2021, 6:10:25 PM6/6/21
to БЭСМ-6
Двоеточие - это синоним двух точек в обозначении диапазона. В любом случае кодировка текста, в которой пишутся программы на PC, не будет совпадать с кодировкой КОИ-7, в которой работает видеотон, поэтому для обозначения диапазона символов нужно использовать численные значения. В кодировке КОИ-7 русские буквы начинаются с Ю (код 140В) и заканчиваются на Ч (код 176В). Так что [chr(96)..chr(126)] - это то, что доктор прописал.

Leo

Макаров-Землянский Николай

unread,
Jun 7, 2021, 1:50:47 AM6/7/21
to be...@googlegroups.com
Я не про это писал. Я писал, что со множеством и с диапазоном надо работать (реализовывать) ПРАВИЛЬНО! Если в диапазоне присутствуют буквы, их надо ОТРАБАТЫВАТЬ транслятору честно, а не как доктор пропишет. В этом случае и Борланд, и Билл сделали почти все возможное, что могли. А господа юниксоиды, скорее всего, обосрались. Но вскрытие покажет, как говорит доктор.
Кстати, мне на КОИ-7 насрать, и на ее автора-мудака тоже. Я не работаю в ней. Я хотя дурак, но не мудак. Эмулятор VT-340 работает win-1251. Как-нибудь надо будет попробовать армянскую win. Должна пойти.
 
07.06.2021, 01:10, "Leo B." <leo...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/8c16b831-ac51-4fbc-aef9-c51d2638484cn%40googlegroups.com.

dvv

unread,
Jun 8, 2021, 10:46:53 AM6/8/21
to be...@googlegroups.com
Нуууу… У господ юниксоидов давно нету "диапазонов, в которых присутствуют буквы". Господа юниксоиды давно пользуются  "широкими" символами, collation и пр. locale. Конкретным представлением букв компиляторы не заморачиваются и не должны. Мне лень лезть сейчас в стандарты, но, если в языке (или, хотя бы, в конкретной реализации) строго не оговорена кодировка и упорядоченность значений character типов, то и результат использования литералов оных типов в диапазонах языком не определён. Посему оное использование недопустимо. Также, осмысленная текстовая (не байтовая) информация держится в памяти в некотором внутреннем для стандартных библиотек/runtime environment виде (тот же wchar_t, к примеру), и перекодируется между ним и желаемыми кодировками внешнего представления  (буде то КОИ-7, CP1251, UTF-8, UTF-32, etc.)  при текстовом (не байтовом) вводе/выводе. А вот конкретное представление (буде то КОИ-7, CP1251, UTF-8, UTF-32, etc.) интересно только тому, кто этим конкретным представлением занимается, см. Лёнин пример с chr().

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/2075711623044042%40mail.yandex.ru.

Макаров-Землянский Николай

unread,
Jun 9, 2021, 8:02:32 AM6/9/21
to be...@googlegroups.com
 
 
08.06.2021, 17:46, "dvv" <dvv...@gmail.com>:
Нуууу… У господ юниксоидов давно нету "диапазонов, в которых присутствуют буквы". Господа юниксоиды давно пользуются  "широкими" символами, collation и пр. locale. Конкретным представлением букв компиляторы не заморачиваются и не должны. Мне лень лезть сейчас в стандарты, но, если в языке (или, хотя бы, в конкретной реализации) строго не оговорена кодировка и упорядоченность значений character типов, то и результат использования литералов оных типов в диапазонах языком не определён. Посему оное использование недопустимо.

ЗОЛОТЫЕ слова! Думаю, Юниксоиды проблему in (флавит)  Паскаля  решили ПРАВИЛЬНО
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAL8oRxq6OdzUWw8pY_DeKm%3DfqUdWKpdejqWC4wcm4zCKf8wPpQ%40mail.gmail.com.

Mikhail Popov

unread,
Jun 9, 2021, 12:45:37 PM6/9/21
to be...@googlegroups.com
Кстати, мне на КОИ-7 насрать, и на ее автора-мудака тоже.

 Кому же достался это камень?  Автора!

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/2075711623044042%40mail.yandex.ru.

dvv

unread,
Jun 9, 2021, 1:00:01 PM6/9/21
to be...@googlegroups.com
Это народное творчество. И ГОСТ, КОИ-7 Н2.

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y5mNcV2cGA2tA-SZpA9JLwOMuv2y_GDdcVD2sHE4aa4VA%40mail.gmail.com.

Leo B.

unread,
Jun 9, 2021, 1:00:58 PM6/9/21
to БЭСМ-6
On Wednesday, June 9, 2021 at 9:45:37 AM UTC-7 mikhailp wrote:
Кстати, мне на КОИ-7 насрать, и на ее автора-мудака тоже.

 Кому же достался это камень?  Автора!

Автор КОИ-7, скорее всего, коллегиальный. "КОИ-7 описана в ГОСТ 13052-67".

Leo
 

Макаров-Землянский Николай

unread,
Jun 9, 2021, 1:12:17 PM6/9/21
to be...@googlegroups.com
Очень правильная добавка "Н2"! Оказывается их (КОИ-7) несколько. Наверное, много авторов пытались это говно показать.
Кстати, сегодня реализовал точную клавиатуру для VT-340 (но для qwerty). Правда потребовалось еще две таблицы.
 
 
09.06.2021, 20:00, "dvv" <dvv...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAL8oRxoJLO7zcqxE%2BEug_c%2BU8EnBeUN5sVTKjGziPtgYx679aQ%40mail.gmail.com.

dvv

unread,
Jun 9, 2021, 1:29:42 PM6/9/21
to be...@googlegroups.com
Да нет, все три набора — в одном ГОСТе. Н0 — только латинские большие и маленькие, Н1 — только русские большие и маленькие, Н2 — то, что имеем. Всё семибитно, всё логично. Я ещё в 1979 году замылил ксеру ГОСТ(ов?) кодировок, среди которых были КОИ-7 и -8,  в уч.-пр. комбинате, это сокровище помогло с русификацией Юниксов во второй половине 80х. Увы, та ксера куда-то в результяате потерялась — то ли я сам отдал её Андрюше Чернову, то ли кто ещё её у меня замылил.

Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/2664921623258180%40mail.yandex.ru.

Макаров-Землянский Николай

unread,
Jun 9, 2021, 1:50:30 PM6/9/21
to be...@googlegroups.com
Уу....у!
Почти автора нашли! Как помню, Чернов был либо моим студентом, либо студентом Машечкина. Где он сейчас?
Как помню, в тогдашнем UNIXе были проблемы с порядком русских букв. Как помню, меня это очень раздражало. Это одна из причин, почему я не полюбил UNIX. Еще раз, как помню, была кодировка КОИ-РУС. А это что?
 
09.06.2021, 20:29, "dvv" <dvv...@gmail.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAL8oRxrTcMpx5s3ziUotJT5pAzjtZ4VAAB5AG%3DJY2RAEHjUzTQ%40mail.gmail.com.
It is loading more messages.
0 new messages