<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блоги: заметки с тегом PERQ</title>
<link>https://blogengine.me/blogs/tags/perq/</link>
<description>Автоматически собираемая лента заметок, написанных в блогах на Эгее</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.0 (v4079e)</generator>

<itunes:subtitle>Автоматически собираемая лента заметок, написанных в блогах на Эгее</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>«99 бутылок пива» на PERQ Pascal</title>
<guid isPermaLink="false">130901</guid>
<link>https://bolknote.ru/all/99-butylok-piva-na-perq-pascal/</link>
<pubDate>Wed, 25 Sep 2024 10:57:33 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/99-butylok-piva-na-perq-pascal/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Мои читатели знают, что последние несколько дней я возился с эмулятором &lt;i&gt;PERQ&lt;/i&gt;. &lt;i&gt;PERQ&lt;/i&gt; — это персональный компьютер, выпускавшийся в начале 1980-х годов, первый коммерчески успешный ПК с графическим интерфейсом. Такой олдскул мил моему сердцу, поэтому я потратил несколько вечеров, чтобы попробовать хоть на базовом уровне разобраться что из себя представляла операционная система тех компьютеров.&lt;/p&gt;
&lt;p&gt;Последние пару дней я пытался написать на тамошнем «Паскале» «песню о пиве», но поскольку на моём ноутбуке потребовалась двойная эмуляция, скорость работы встроенного в систему редактора была ниже плинтуса. Писать было очень сложно, а править ошибки — ещё сложнее. Тем не менее, я справился.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;79. PERQ Pascal&lt;/b&gt; — диалект некогда широко распространённого в учебных учреждениях языка «Паскаль». Компилируемый язык, в какой-то степени можно назвать его конкурентом Си, которому он проиграл вчистую.&lt;/p&gt;
&lt;p&gt;Не думаю, что кто-то, кроме редких энтузиастов языка, сейчас выберет «Паскаль» для чего-то нового, но со старыми проектами на нём я иногда сталкиваюсь. Например, в начале этого года видел электронный документооборот, написанный на «Делфи» (это визуальная среда программирования и название диалекта «Турбо Паскаля»).&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="pascal"&gt;{$MESSAGE Written by Evgeny Stepanischev, 2024}
PROGRAM BOTTLES_OF_BEER;

const
    MAX_BOTTLES = 99;

Function BotStr(count: integer): string;
begin
    if count = 1 then
        BotStr := &amp;#039; bottle of beer&amp;#039;
    else
        BotStr := &amp;#039; bottles of beer&amp;#039;;
end;

Procedure SingSong;
var
    i: integer;
    b: string;
begin
    for i := MAX_BOTTLES downto 1 do
    begin
        b := BotStr(i);
        writeln(i:0, b, &amp;#039; on the wall,&amp;#039;);
        writeln(i:0, b, &amp;#039;!&amp;#039;);
        writeln(&amp;#039;Take one down, pass it around,&amp;#039;);
        if i &amp;gt; 1 then
        begin
            b := BotStr(i-1);
            writeln((i - 1):0, b, &amp;#039; on the wall!&amp;#039;)
        end
        else
            writeln(&amp;#039;No more bottles of beer on the wall!&amp;#039;);
        writeln;
    end;
    
    writeln(&amp;#039;No more bottles of beer on the wall,&amp;#039;);
    writeln(&amp;#039;No more bottles of beer!&amp;#039;);
    writeln(&amp;#039;Go to the store and buy some more,&amp;#039;);
    b := BotStr(MAX_BOTTLES);
    writeln(MAX_BOTTLES:0, b, &amp;#039; on the wall!&amp;#039;);
end;

begin
    SingSong;
end.&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Из того, с чем мне пришлось столкнуться, когда я писал программу.&lt;/p&gt;
&lt;p&gt;Больше всего ушло времени на ошибку &lt;i&gt;Error 116: Error in type of standard procedure parameter&lt;/i&gt;. Речь тут, вроде, идёт о том, что я какой-то процедуре передаю параметры не того типа. Несмотря на то, что в ошибке был указан номер строки, мне всё равно не удавалось понять, что я делаю не так.&lt;/p&gt;
&lt;p&gt;Оказалось, что вызов функции &lt;tt&gt;BotStr&lt;/tt&gt; нельзя напрямую поместить во &lt;tt&gt;writeln&lt;/tt&gt;, надо обязательно использовать промежуточную переменную (у меня это &lt;tt&gt;b&lt;/tt&gt;). Учитывая, что скорость работы с эмулятором не позволяет быстро попробовать разные варианты, пришлось изрядно поскрипеть мозгом, чтобы дойти до сути.&lt;/p&gt;
&lt;p&gt;Вторая вещь оказалась проще для исправления. В этом диалекте «Паскаля» вывод чисел происходит с отступом. В моём случае выглядит это неаккуратно. К счастью убрать его просто — нужно добавить параметр &lt;tt&gt;:0&lt;/tt&gt; для каждого числа, выводимого на экран.&lt;/p&gt;
&lt;p&gt;В какой-то момент я так устал редактировать код со скоростью улитки, стал использовать обычный редактор своего ноутбука. Потом я просто запускал небольшую программу, написанную на «Пайтоне», которая печатала код за меня прямо внутрь окна с эмулятором &lt;i&gt;PERQ&lt;/i&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="python"&gt;import pyautogui, time

FILE_PATH = &amp;#039;99.pas&amp;#039;

time.sleep(5)

with open(FILE_PATH, &amp;#039;r&amp;#039;) as file:
    for line in file:
        for x in line.lstrip():
            pyautogui.typewrite(x)
            time.sleep(.6)

        time.sleep(1)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Вчера ночью всё наконец запустилось и я смог посмотреть как работает моя первая (и наверняка единственная) программа для &lt;i&gt;PERQ&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Кстати, вот ещё одна интересная деталь.&lt;/p&gt;
&lt;p&gt;Чтобы получить исполняемый файл, надо исходный код программы сначала скомпилировать командой &lt;tt&gt;COMPILE&lt;/tt&gt; в объектный файл (&lt;tt&gt;.SEG&lt;/tt&gt;), потом скомпоновать командой &lt;tt&gt;LINK&lt;/tt&gt; в исполняемый (&lt;tt&gt;.RUN&lt;/tt&gt;). У обеих команд есть параметр, где указывается имя файла, с которым мы работаем.&lt;/p&gt;
&lt;p&gt;Но если мы открывали на редактирование какой-то файл, его имя указывать не надо — операционная система его где-то запоминает и команды &lt;tt&gt;COMPILE&lt;/tt&gt; и &lt;tt&gt;LINK&lt;/tt&gt; знают с каким файлом мы работаем. Очень удобно.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2024.09.25@2x.png" width="768" height="1024" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Результат запуска «Песни о пиве» под эмулятором компьютера &lt;i&gt;PERQ&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Редактор в PERQ</title>
<guid isPermaLink="false">130899</guid>
<link>https://bolknote.ru/all/redaktor-v-perq/</link>
<pubDate>Wed, 25 Sep 2024 00:33:46 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/redaktor-v-perq/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Поскольку я всё ещё не оставил идею написать «Песню о пиве» на местном Паскале в эмуляторе персонального компьютера &lt;i&gt;PERQ&lt;/i&gt;, осваиваю &lt;a href="https://web.archive.org/web/20240530065359/https://bitsavers.org/pdf/perq/pos_G5/PERQ_Editor_Mar84.pdf"&gt;тамошний редактор&lt;/a&gt;. С той скоростью эмуляции, которую выдаёт мой ноутбук, редактирование выглядит очень печально, но деваться некуда, — поскольку в процессе написания кода возникли совершенно неожиданные для меня ошибки, пришлось учиться редактировать код.&lt;/p&gt;
&lt;p&gt;Двигаюсь с черепашьей скоростью.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2024.09.24@2x.webp" width="767" height="1021" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Нерабочая программа в процессе редактирования&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Редактор очень похож на знаменитый &lt;tt&gt;vi&lt;/tt&gt;. Как и в &lt;tt&gt;vi&lt;/tt&gt;, тут присутствуют два режима — набора текста и команд. Правда большинство команд другие, но некоторые точно такие же. Например, надо нажать &lt;tt&gt;Q&lt;/tt&gt;, чтобы выйти.&lt;/p&gt;
&lt;p&gt;Очень удобно, что некоторые команды написаны прямо вверху окна редактирования — это &lt;tt&gt;I&lt;/tt&gt; (вставка), &lt;tt&gt;D&lt;/tt&gt; (удаление), &lt;tt&gt;F&lt;/tt&gt; (поиск), &lt;tt&gt;R&lt;/tt&gt; (замена) и &lt;tt&gt;S&lt;/tt&gt; (замена выделенного).&lt;/p&gt;
&lt;p&gt;Как видите, если знать английский, то запомнить их элементарно.&lt;/p&gt;
&lt;p&gt;Все команды работы с текстом работают c выделенным участком. Например, чтобы удалить какой-то кусок текста, его надо сначала найти в редакторе командой &lt;tt&gt;F&lt;/tt&gt; (или выделить другим способом, коих масса), а потом нажать &lt;tt&gt;D&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Учится всё это очень быстро, мне понравилось. Единственное, к чему пришлось привыкать дольше — ввод параметров для команд завершается клавишей &lt;tt&gt;Escape&lt;/tt&gt;, а не &lt;tt&gt;Enter&lt;/tt&gt;. Это, по всей видимости, сделано для того, чтобы можно было работать с многострочными участками текста.&lt;/p&gt;
</description>
</item>

<item>
<title>Тёмная и светлая темы</title>
<guid isPermaLink="false">130886</guid>
<link>https://bolknote.ru/all/tyomnaya-i-svetlaya-temy/</link>
<pubDate>Mon, 23 Sep 2024 20:01:32 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/tyomnaya-i-svetlaya-temy/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Теперь, надеюсь, никто не будет говорить, что тёмная и светлая темы — это какая-то новая мода?&lt;/p&gt;
&lt;p&gt;Разбирался немного с системой компьютеров &lt;i&gt;PERQ&lt;/i&gt; в эмуляторе, который мне удалось запустить на днях. Как я недавно писал, хочу попробовать небольшую программу под неё написать, поэтому решил изучить её чуть поглубже.&lt;/p&gt;
&lt;p&gt;И, читая встроенное руководство, обратил внимание, что при логине можно указать цветовую тему, с которой будет работать система — режим чёрного на белом или белого на чёрном.&lt;/p&gt;
&lt;p&gt;Выбор происходит командой &lt;tt&gt;LOGIN /CursorFunction=5&lt;/tt&gt;.Тут «5» как раз означает, что надо выбрать «тёмную». И это в 1982-м году, судя по тому что написано в верхнем правом углу!&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2024.09.23@2x.webp" width="1000" height="658" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Тёмная и светлая темы в операционной системе компьютера &lt;i&gt;PERQ&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Three Rivers PERQ</title>
<guid isPermaLink="false">130777</guid>
<link>https://bolknote.ru/all/three-rivers-perq/</link>
<pubDate>Sat, 21 Sep 2024 13:49:19 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/three-rivers-perq/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Ура! Несмотря на все сложности, мне всё-таки удалось запустить эмулятор &lt;i&gt;PERQ&lt;/i&gt;, про который я &lt;a href="https://bolknote.ru/all/utm/"&gt;писал вчера&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Тот момент, когда я увидел наконец рабочий интерфейс этого компьютера на экране своего современного «Макбука», вызвал непередаваемые чувства. Будто я подключился к историческому континууму и снова очутился в том времени, когда компьютерные системы только начинали приобретать современные очертания.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2024.09.21@2x.jpg" width="1000" height="623" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Эмулятор компьютера &lt;i&gt;Three Rivers PERQ&lt;/i&gt; в «Видоузе», запущенном в эмуляторе компьютера с процессором &lt;i&gt;Intel&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Что же мы имеем после запуска?&lt;/p&gt;
&lt;p&gt;В системе доступно всего несколько команд, список которых можно посмотреть, набрав &lt;tt&gt;?&lt;/tt&gt;. Среди них есть знакомые &lt;tt&gt;ls&lt;/tt&gt;, &lt;tt&gt;cd&lt;/tt&gt; и понятная &lt;tt&gt;edit&lt;/tt&gt;. На скриншоте как раз видно как я вызвал на редактирование программу на Паскале, которая лежит в домашней папке. Рядом лежит скомпилированный бинарник, но программу можно скомпилировать и самостоятельно.&lt;/p&gt;
&lt;p&gt;Экран у системы вертикальный, это было заметно ещё на том снимке рабочей системы, который я публиковал вчера. Судя по спецификации, разрешение экрана — 1024×768 точек. В брошюре записано именно в таком порядке, хотя как будто бы должно быть указано наоборот, — 768×1024.&lt;/p&gt;
&lt;p&gt;Интересно, что в системе есть графический курсор и поддерживается указательное устройство. У реальной машины это был графический планшет, похожий на те, которым сейчас пользуются иногда дизайнеры, а в эмуляторе курсор движется за указателем мыши хост-машины.&lt;/p&gt;
&lt;p&gt;Ещё из интересного — компьютер комплектовался восьмидюймовым дисководом со скоростью передачи 62,5 &lt;i&gt;килобайт&lt;/i&gt; в секунду. Я такие дисководы живьём не видел, но дискеты этого размера в руках держал — папа в моём детстве приносил с работы списанные, я их передал в музей техникума, где тогда учился.&lt;/p&gt;
&lt;p&gt;Теперь хочу попробовать набрать в тамошнем Паскале «&lt;a href="https://bolknote.ru/tags/beer99/"&gt;песню о пиве&lt;/a&gt;», если хватит терпения. Но для начала надо понять как работать в редакторе, пока я даже не понял как из него выйти.&lt;/p&gt;
</description>
</item>

<item>
<title>UTM</title>
<guid isPermaLink="false">130755</guid>
<link>https://bolknote.ru/all/utm/</link>
<pubDate>Fri, 20 Sep 2024 20:03:23 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/utm/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Люблю посмотреть на программы далёкого прошлого.&lt;/p&gt;
&lt;p&gt;Недавно увидел &lt;a href="https://habr.com/ru/articles/837908/"&gt;статью&lt;/a&gt;, где рассказывалось об эмуляторе, позволяющем запустить операционную систему компьютеров &lt;i&gt;Three Rivers PERQ&lt;/i&gt;, — их выпускали в начале восьмидесятых. Я их никогда не видел, даже не слышал про них ничего, поэтому взглянуть особо интересно.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2024.09.20.1@2x.jpg" width="1000" height="677" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Внешний вид компьютера из брошюры «&lt;i&gt;PERQ. The powerful, scientific, graphics computer&lt;/i&gt;» (декабрь 1981 года)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;К сожалению, первая попытка провалилась — эмулятор не заработал на моём «Макбуке» (думаю потому, что у меня &lt;i&gt;ARM&lt;/i&gt;). Я не сдался — попробовал виртуализировать «Винду» и запустить его там, но и тут меня ждал неуспех. Теперь я решил скачать эмулятор &lt;i&gt;x86&lt;/i&gt;, запустить «Виндоуз» там. Это уже третий подход к снаряду.&lt;/p&gt;
&lt;p&gt;Как это сделать я не знал, поэтому пришлось гуглить. Из того, что быстро нашлось, мне понравилась программа &lt;a href="https://habr.com/ru/articles/719490/"&gt;&lt;i&gt;UTM&lt;/i&gt;&lt;/a&gt; (это обёртка над &lt;i&gt;QEMU&lt;/i&gt;). Поставилось всё без нерешаемых проблем, единственное, в одном месте инструкцию по установке пришлось скорректировать:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;brew install aria2

brew tap minacle/chntpw
brew install cabextract wimlib cdrtools minacle/chntpw/chntpw

sh uup_download_macos.sh&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Я поставил &lt;tt&gt;chntpw&lt;/tt&gt; из другого источника, так как версия из оригинальной статьи падала в процессе установки с ошибкой — после компиляции одной из зависимостей она не проходила тесты.&lt;/p&gt;
&lt;p&gt;«Виндоуз» внутри &lt;i&gt;UTM&lt;/i&gt; еле ворочается, но работает. Попробую попозже вечером запустить эмулятор в эмуляторе и посмотреть на интересующую меня операционку. Надеюсь хоть это сработает.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2024.09.20@2x.webp" width="1000" height="724" alt="" /&gt;
&lt;/div&gt;
</description>
</item>


</channel>
</rss>