{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом dos",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.ru\/blogs\/tags\/dos\/",
    "feed_url": "https:\/\/blogengine.ru\/blogs\/tags\/dos\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.ru\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "130929",
            "url": "https:\/\/bolknote.ru\/all\/programma-s-imenem-0xff\/",
            "title": "Программа с именем 0xFF",
            "content_html": "<p>В ДОСе, как может кто-то ещё помнит, была своя, отличная от всего, кодировка русских букв, так называемая <i>CP866<\/i>. Это однобайтовая кодировка, то есть в таблице символов всего 256 позиций.<\/p>\n<p>Поэтому странно, что пробельных символов в ней два, один из них — обычный пробел с кодом 32, именно его операционная система считает пробелом, второй — с кодом 255, он выводится как пробел, но считается обычным символом.<\/p>\n<p>Не помню, использовалось ли это свойство для чего-то полезного или интересного, но на днях <a href=\"https:\/\/www.opennet.ru\/openforum\/vsluhforumID3\/134899.html#50\">прочитал<\/a> как развлекались с его помощью в те времена:<\/p>\n<blockquote>\n<p>А 255 символ запретили? 30 лет назад, еще под <i>MSDOS<\/i>, переименовали утилиту переворота экрана в 255 символ и вставили в <i>autoexec.bat<\/i>. Хозяин компа уже психовать начал и монитор переворачивать :)) Показали ему прикол…<\/p>\n<\/blockquote>\n<p>Ну то есть переименовали программу так, чтобы её имя выглядело как пробельный символ и добавили её в скрипт автозагрузки. Хозяин компьютера, видимо, проверял скрипт, ничего не находил и не понимал что происходит.<\/p>\n<p>Мне стало интересно проверить — действительно ли это работает? Благо ДОС можно сейчас запустить <a href=\"https:\/\/www.pcjs.org\/software\/pcx86\/sys\/dos\/microsoft\/6.22\/\">даже в браузере<\/a>.<\/p>\n<p>Тут надо пояснить, что «настоящий» пробел для этого не годится — ДОС просто не распознает его в автозагрузке как имя файла для запуска.<\/p>\n<p>Я не знаю как раньше вводили символ с кодом 255 в командную строку, поэтому просто набросал программу на ассемблере, которая переименовывает файл <tt>mem.exe<\/tt> (которая обычно есть в составе ДОСа) в <tt> .com<\/tt>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"asm\">org 100h\n\nsection .data\n    oldName db &#039;MEM.EXE&#039;, 0\n    newName db 255, &#039;.COM&#039;, 0\n\nsection .text\nglobal _start\n\n_start:\n    mov ah, 56h\n    lea dx, oldName\n    lea di, newName\n    int 21h\n\n    mov ax, 4C00h\n    int 21h<\/code><\/pre><p>Необходимое пояснение: расширение обязательно, иначе ДОС не поймёт, что файл запускаемый. При запуске его можно не указывать — операционка догадается сама что именно подставить.<\/p>\n<p>На следующем шаге я скомпилировал программу у себя прямо в «МакОСи» и вывел в шестнадцатеричном виде:<\/p>\n<pre class=\"e2-text-code\"><code class=\"plaintext\">$ hexdump -C &lt;(nasm -f bin rename.asm -o \/dev\/stdout)\n00000000  b4 56 8d 16 14 01 8d 3e  1c 01 cd 21 b8 00 4c cd  |.V.....&gt;...!..L.|\n00000010  21 00 00 00 4d 45 4d 2e  45 58 45 00 ff 2e 43 4f  |!...MEM.EXE...CO|\n00000020  4d 00                                             |M.|\n00000022<\/code><\/pre><p>Далее набрал её в кодах при помощи команды <tt>DEBUG<\/tt> и запустил. В текущей директории появилась программа с нужным именем:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.26.1@2x.webp\" width=\"872\" height=\"477\" alt=\"\" \/>\n<\/div>\n<p>Для последнего шага мне нужно было как-то снова получить символ 255 в командной строке. Для этого я перенаправил вывод команды <tt>DIR<\/tt> в файл <tt>START.BAT<\/tt> и отредактировал получившееся при помощи команды <tt>EDIT<\/tt> — убрал всё лишнее, кроме символа с именем команды (кажется у меня в файл попали ещё и лишние переводы строки, но они роли не играют).<\/p>\n<p>Попробовал запустить, сработало!<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.26.2@2x.webp\" width=\"872\" height=\"477\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2024-09-26T10:59:20+05:00",
            "date_modified": "2024-09-26T12:02:12+05:00",
            "tags": [
                "dos",
                "ассемблер",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Thu, 26 Sep 2024 10:59:20 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130929",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "125298",
            "url": "https:\/\/bolknote.ru\/all\/86-dos-version-0-11\/",
            "title": "86-DOS version 0.11",
            "content_html": "<p>Мне интересно иногда посмотреть на старые операционные системы и программы, которые я не застал или пропустил в своё время. Предтечу <i>MS-DOS<\/i>, которая называлась <i>86-DOS<\/i>, я уже <a href=\"https:\/\/bolknote.ru\/all\/4637\/\">как-то видел<\/a>, но там речь шла о версии 1.0, а тут в доступе <a href=\"https:\/\/web.archive.org\/web\/20240102193555\/https:\/\/bitsavers.org\/bits\/SeattleComputerProducts\/86-DOS\/\">появилась<\/a> 0.11.<\/p>\n<p>Довольно долго разбирался как её запустить, опишу, чтобы не забыть, мало ли, вдруг когда-нибудь пригодится.<\/p>\n<blockquote>\n<p>Первом делом скачиваем <i>IMD<\/i>-образ операционной системы и распаковаем его из-под ДОСбокса <a href=\"https:\/\/web.archive.org\/web\/20231129084550\/http:\/\/dunfield.classiccmp.org\/\/img\/index.htm\">набором утилит<\/a> <i>ImageDisk 1.19<\/i>. Получившийся после распаковки образ переименовываем в <tt>86dos.imd<\/tt>.<\/p>\n<p>Качаем первый попавшийся эмулятор <i>Altairz80<\/i> под требуемую операционную систему, компилируем, в папку эмулятора  кладём файлы <tt>scp86mon.txt<\/tt>, <tt>scp86mon.rom<\/tt> и образ операционной системы.<\/p>\n<p>Вводим команду <tt>.\/altairz80 scp86mon.txt<\/tt>, потом уже там несколько раз «Ввод», латинскую <tt>B<\/tt>, снова «Ввод» и, по идее, всё должно запуститься.<\/p>\n<\/blockquote>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.01.02@2x.jpg\" width=\"1000\" height=\"550\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Версия <i>86-DOS<\/i> версии 0.11, запущенная в эмуляторе <i>Altairz80<\/i><\/div>\n<\/div>\n<p>Смотреть там, конечно, особо не на что, хотя есть редактор, ассемблер и шахматы, а так же работают кое-какие привычные со времён ДОСа команды — <tt>COPY<\/tt>, <tt>DIR<\/tt>, <tt>TYPE<\/tt> и <tt>RENAME<\/tt>. Из непривычных есть <tt>ERASE<\/tt>, которая удаляет файл и <tt>CLEAR<\/tt>, очищающая содержимое диска.<\/p>\n<p>Теперь могу говорить, что я своими собственными глазами видел самого раннего предка <i>MS-DOS<\/i>, которого только можно найти в интернете.<\/p>\n",
            "date_published": "2024-01-03T01:13:48+05:00",
            "date_modified": "2024-01-03T01:13:45+05:00",
            "tags": [
                "dos",
                "айрхеология"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Wed, 03 Jan 2024 01:13:48 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "125298",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}