{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом PERQ",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.me\/blogs\/tags\/perq\/",
    "feed_url": "https:\/\/blogengine.me\/blogs\/tags\/perq\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.me\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "130901",
            "url": "https:\/\/bolknote.ru\/all\/99-butylok-piva-na-perq-pascal\/",
            "title": "«99 бутылок пива» на PERQ Pascal",
            "content_html": "<p>Мои читатели знают, что последние несколько дней я возился с эмулятором <i>PERQ<\/i>. <i>PERQ<\/i> — это персональный компьютер, выпускавшийся в начале 1980-х годов, первый коммерчески успешный ПК с графическим интерфейсом. Такой олдскул мил моему сердцу, поэтому я потратил несколько вечеров, чтобы попробовать хоть на базовом уровне разобраться что из себя представляла операционная система тех компьютеров.<\/p>\n<p>Последние пару дней я пытался написать на тамошнем «Паскале» «песню о пиве», но поскольку на моём ноутбуке потребовалась двойная эмуляция, скорость работы встроенного в систему редактора была ниже плинтуса. Писать было очень сложно, а править ошибки — ещё сложнее. Тем не менее, я справился.<\/p>\n<p><b>79. PERQ Pascal<\/b> — диалект некогда широко распространённого в учебных учреждениях языка «Паскаль». Компилируемый язык, в какой-то степени можно назвать его конкурентом Си, которому он проиграл вчистую.<\/p>\n<p>Не думаю, что кто-то, кроме редких энтузиастов языка, сейчас выберет «Паскаль» для чего-то нового, но со старыми проектами на нём я иногда сталкиваюсь. Например, в начале этого года видел электронный документооборот, написанный на «Делфи» (это визуальная среда программирования и название диалекта «Турбо Паскаля»).<\/p>\n<pre class=\"e2-text-code\"><code class=\"pascal\">{$MESSAGE Written by Evgeny Stepanischev, 2024}\nPROGRAM BOTTLES_OF_BEER;\n\nconst\n    MAX_BOTTLES = 99;\n\nFunction BotStr(count: integer): string;\nbegin\n    if count = 1 then\n        BotStr := &#039; bottle of beer&#039;\n    else\n        BotStr := &#039; bottles of beer&#039;;\nend;\n\nProcedure SingSong;\nvar\n    i: integer;\n    b: string;\nbegin\n    for i := MAX_BOTTLES downto 1 do\n    begin\n        b := BotStr(i);\n        writeln(i:0, b, &#039; on the wall,&#039;);\n        writeln(i:0, b, &#039;!&#039;);\n        writeln(&#039;Take one down, pass it around,&#039;);\n        if i &gt; 1 then\n        begin\n            b := BotStr(i-1);\n            writeln((i - 1):0, b, &#039; on the wall!&#039;)\n        end\n        else\n            writeln(&#039;No more bottles of beer on the wall!&#039;);\n        writeln;\n    end;\n    \n    writeln(&#039;No more bottles of beer on the wall,&#039;);\n    writeln(&#039;No more bottles of beer!&#039;);\n    writeln(&#039;Go to the store and buy some more,&#039;);\n    b := BotStr(MAX_BOTTLES);\n    writeln(MAX_BOTTLES:0, b, &#039; on the wall!&#039;);\nend;\n\nbegin\n    SingSong;\nend.<\/code><\/pre><p>Из того, с чем мне пришлось столкнуться, когда я писал программу.<\/p>\n<p>Больше всего ушло времени на ошибку <i>Error 116: Error in type of standard procedure parameter<\/i>. Речь тут, вроде, идёт о том, что я какой-то процедуре передаю параметры не того типа. Несмотря на то, что в ошибке был указан номер строки, мне всё равно не удавалось понять, что я делаю не так.<\/p>\n<p>Оказалось, что вызов функции <tt>BotStr<\/tt> нельзя напрямую поместить во <tt>writeln<\/tt>, надо обязательно использовать промежуточную переменную (у меня это <tt>b<\/tt>). Учитывая, что скорость работы с эмулятором не позволяет быстро попробовать разные варианты, пришлось изрядно поскрипеть мозгом, чтобы дойти до сути.<\/p>\n<p>Вторая вещь оказалась проще для исправления. В этом диалекте «Паскаля» вывод чисел происходит с отступом. В моём случае выглядит это неаккуратно. К счастью убрать его просто — нужно добавить параметр <tt>:0<\/tt> для каждого числа, выводимого на экран.<\/p>\n<p>В какой-то момент я так устал редактировать код со скоростью улитки, стал использовать обычный редактор своего ноутбука. Потом я просто запускал небольшую программу, написанную на «Пайтоне», которая печатала код за меня прямо внутрь окна с эмулятором <i>PERQ<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"python\">import pyautogui, time\n\nFILE_PATH = &#039;99.pas&#039;\n\ntime.sleep(5)\n\nwith open(FILE_PATH, &#039;r&#039;) as file:\n    for line in file:\n        for x in line.lstrip():\n            pyautogui.typewrite(x)\n            time.sleep(.6)\n\n        time.sleep(1)<\/code><\/pre><p>Вчера ночью всё наконец запустилось и я смог посмотреть как работает моя первая (и наверняка единственная) программа для <i>PERQ<\/i>.<\/p>\n<p>Кстати, вот ещё одна интересная деталь.<\/p>\n<p>Чтобы получить исполняемый файл, надо исходный код программы сначала скомпилировать командой <tt>COMPILE<\/tt> в объектный файл (<tt>.SEG<\/tt>), потом скомпоновать командой <tt>LINK<\/tt> в исполняемый (<tt>.RUN<\/tt>). У обеих команд есть параметр, где указывается имя файла, с которым мы работаем.<\/p>\n<p>Но если мы открывали на редактирование какой-то файл, его имя указывать не надо — операционная система его где-то запоминает и команды <tt>COMPILE<\/tt> и <tt>LINK<\/tt> знают с каким файлом мы работаем. Очень удобно.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.25@2x.png\" width=\"768\" height=\"1024\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Результат запуска «Песни о пиве» под эмулятором компьютера <i>PERQ<\/i><\/div>\n<\/div>\n",
            "date_published": "2024-09-25T10:57:33+05:00",
            "date_modified": "2024-09-25T17:02:38+05:00",
            "tags": [
                "99",
                "pascal",
                "PERQ"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Wed, 25 Sep 2024 10:57:33 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130901",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "130899",
            "url": "https:\/\/bolknote.ru\/all\/redaktor-v-perq\/",
            "title": "Редактор в PERQ",
            "content_html": "<p>Поскольку я всё ещё не оставил идею написать «Песню о пиве» на местном Паскале в эмуляторе персонального компьютера <i>PERQ<\/i>, осваиваю <a href=\"https:\/\/web.archive.org\/web\/20240530065359\/https:\/\/bitsavers.org\/pdf\/perq\/pos_G5\/PERQ_Editor_Mar84.pdf\">тамошний редактор<\/a>. С той скоростью эмуляции, которую выдаёт мой ноутбук, редактирование выглядит очень печально, но деваться некуда, — поскольку в процессе написания кода возникли совершенно неожиданные для меня ошибки, пришлось учиться редактировать код.<\/p>\n<p>Двигаюсь с черепашьей скоростью.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.24@2x.webp\" width=\"767\" height=\"1021\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Нерабочая программа в процессе редактирования<\/div>\n<\/div>\n<p>Редактор очень похож на знаменитый <tt>vi<\/tt>. Как и в <tt>vi<\/tt>, тут присутствуют два режима — набора текста и команд. Правда большинство команд другие, но некоторые точно такие же. Например, надо нажать <tt>Q<\/tt>, чтобы выйти.<\/p>\n<p>Очень удобно, что некоторые команды написаны прямо вверху окна редактирования — это <tt>I<\/tt> (вставка), <tt>D<\/tt> (удаление), <tt>F<\/tt> (поиск), <tt>R<\/tt> (замена) и <tt>S<\/tt> (замена выделенного).<\/p>\n<p>Как видите, если знать английский, то запомнить их элементарно.<\/p>\n<p>Все команды работы с текстом работают c выделенным участком. Например, чтобы удалить какой-то кусок текста, его надо сначала найти в редакторе командой <tt>F<\/tt> (или выделить другим способом, коих масса), а потом нажать <tt>D<\/tt>.<\/p>\n<p>Учится всё это очень быстро, мне понравилось. Единственное, к чему пришлось привыкать дольше — ввод параметров для команд завершается клавишей <tt>Escape<\/tt>, а не <tt>Enter<\/tt>. Это, по всей видимости, сделано для того, чтобы можно было работать с многострочными участками текста.<\/p>\n",
            "date_published": "2024-09-25T00:33:46+05:00",
            "date_modified": "2024-09-25T12:10:52+05:00",
            "tags": [
                "PERQ"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Wed, 25 Sep 2024 00:33:46 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130899",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "130886",
            "url": "https:\/\/bolknote.ru\/all\/tyomnaya-i-svetlaya-temy\/",
            "title": "Тёмная и светлая темы",
            "content_html": "<p>Теперь, надеюсь, никто не будет говорить, что тёмная и светлая темы — это какая-то новая мода?<\/p>\n<p>Разбирался немного с системой компьютеров <i>PERQ<\/i> в эмуляторе, который мне удалось запустить на днях. Как я недавно писал, хочу попробовать небольшую программу под неё написать, поэтому решил изучить её чуть поглубже.<\/p>\n<p>И, читая встроенное руководство, обратил внимание, что при логине можно указать цветовую тему, с которой будет работать система — режим чёрного на белом или белого на чёрном.<\/p>\n<p>Выбор происходит командой <tt>LOGIN \/CursorFunction=5<\/tt>.Тут «5» как раз означает, что надо выбрать «тёмную». И это в 1982-м году, судя по тому что написано в верхнем правом углу!<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.23@2x.webp\" width=\"1000\" height=\"658\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Тёмная и светлая темы в операционной системе компьютера <i>PERQ<\/i><\/div>\n<\/div>\n",
            "date_published": "2024-09-23T20:01:32+05:00",
            "date_modified": "2024-09-23T18:24:59+05:00",
            "tags": [
                "PERQ"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Mon, 23 Sep 2024 20:01:32 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130886",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "130777",
            "url": "https:\/\/bolknote.ru\/all\/three-rivers-perq\/",
            "title": "Three Rivers PERQ",
            "content_html": "<p>Ура! Несмотря на все сложности, мне всё-таки удалось запустить эмулятор <i>PERQ<\/i>, про который я <a href=\"https:\/\/bolknote.ru\/all\/utm\/\">писал вчера<\/a>.<\/p>\n<p>Тот момент, когда я увидел наконец рабочий интерфейс этого компьютера на экране своего современного «Макбука», вызвал непередаваемые чувства. Будто я подключился к историческому континууму и снова очутился в том времени, когда компьютерные системы только начинали приобретать современные очертания.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.21@2x.jpg\" width=\"1000\" height=\"623\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Эмулятор компьютера <i>Three Rivers PERQ<\/i> в «Видоузе», запущенном в эмуляторе компьютера с процессором <i>Intel<\/i><\/div>\n<\/div>\n<p>Что же мы имеем после запуска?<\/p>\n<p>В системе доступно всего несколько команд, список которых можно посмотреть, набрав <tt>?<\/tt>. Среди них есть знакомые <tt>ls<\/tt>, <tt>cd<\/tt> и понятная <tt>edit<\/tt>. На скриншоте как раз видно как я вызвал на редактирование программу на Паскале, которая лежит в домашней папке. Рядом лежит скомпилированный бинарник, но программу можно скомпилировать и самостоятельно.<\/p>\n<p>Экран у системы вертикальный, это было заметно ещё на том снимке рабочей системы, который я публиковал вчера. Судя по спецификации, разрешение экрана — 1024×768 точек. В брошюре записано именно в таком порядке, хотя как будто бы должно быть указано наоборот, — 768×1024.<\/p>\n<p>Интересно, что в системе есть графический курсор и поддерживается указательное устройство. У реальной машины это был графический планшет, похожий на те, которым сейчас пользуются иногда дизайнеры, а в эмуляторе курсор движется за указателем мыши хост-машины.<\/p>\n<p>Ещё из интересного — компьютер комплектовался восьмидюймовым дисководом со скоростью передачи 62,5 <i>килобайт<\/i> в секунду. Я такие дисководы живьём не видел, но дискеты этого размера в руках держал — папа в моём детстве приносил с работы списанные, я их передал в музей техникума, где тогда учился.<\/p>\n<p>Теперь хочу попробовать набрать в тамошнем Паскале «<a href=\"https:\/\/bolknote.ru\/tags\/beer99\/\">песню о пиве<\/a>», если хватит терпения. Но для начала надо понять как работать в редакторе, пока я даже не понял как из него выйти.<\/p>\n",
            "date_published": "2024-09-21T13:49:19+05:00",
            "date_modified": "2024-09-23T10:47:28+05:00",
            "tags": [
                "PERQ"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Sat, 21 Sep 2024 13:49:19 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130777",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "130755",
            "url": "https:\/\/bolknote.ru\/all\/utm\/",
            "title": "UTM",
            "content_html": "<p>Люблю посмотреть на программы далёкого прошлого.<\/p>\n<p>Недавно увидел <a href=\"https:\/\/habr.com\/ru\/articles\/837908\/\">статью<\/a>, где рассказывалось об эмуляторе, позволяющем запустить операционную систему компьютеров <i>Three Rivers PERQ<\/i>, — их выпускали в начале восьмидесятых. Я их никогда не видел, даже не слышал про них ничего, поэтому взглянуть особо интересно.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.20.1@2x.jpg\" width=\"1000\" height=\"677\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Внешний вид компьютера из брошюры «<i>PERQ. The powerful, scientific, graphics computer<\/i>» (декабрь 1981 года)<\/div>\n<\/div>\n<p>К сожалению, первая попытка провалилась — эмулятор не заработал на моём «Макбуке» (думаю потому, что у меня <i>ARM<\/i>). Я не сдался — попробовал виртуализировать «Винду» и запустить его там, но и тут меня ждал неуспех. Теперь я решил скачать эмулятор <i>x86<\/i>, запустить «Виндоуз» там. Это уже третий подход к снаряду.<\/p>\n<p>Как это сделать я не знал, поэтому пришлось гуглить. Из того, что быстро нашлось, мне понравилась программа <a href=\"https:\/\/habr.com\/ru\/articles\/719490\/\"><i>UTM<\/i><\/a> (это обёртка над <i>QEMU<\/i>). Поставилось всё без нерешаемых проблем, единственное, в одном месте инструкцию по установке пришлось скорректировать:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">brew install aria2\n\nbrew tap minacle\/chntpw\nbrew install cabextract wimlib cdrtools minacle\/chntpw\/chntpw\n\nsh uup_download_macos.sh<\/code><\/pre><p>Я поставил <tt>chntpw<\/tt> из другого источника, так как версия из оригинальной статьи падала в процессе установки с ошибкой — после компиляции одной из зависимостей она не проходила тесты.<\/p>\n<p>«Виндоуз» внутри <i>UTM<\/i> еле ворочается, но работает. Попробую попозже вечером запустить эмулятор в эмуляторе и посмотреть на интересующую меня операционку. Надеюсь хоть это сработает.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.20@2x.webp\" width=\"1000\" height=\"724\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2024-09-20T20:03:23+05:00",
            "date_modified": "2024-09-23T10:47:36+05:00",
            "tags": [
                "PERQ"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Fri, 20 Sep 2024 20:03:23 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130755",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}