Ошибка, которая сохранилась в Windows с 1974 года

https://threadreaderapp.com/thread/1058676834940776450.html
  • Перевод
Сейчас 2018 год, а это сообщение — ошибка, сохранившаяся с 1974 года. Ограничение, которое встречается даже в самой последней Windows 10, появилось ещё ДО «ЗВЁЗДНЫХ ВОЙН». Баг древний как Уотергейт.


В те времена только изобрели штрих-коды, в Америке работала лишь одна телефонная компания, Тед Банди ещё бегал на свободе, а рекорд Бейба Рута по хоум-ранам стоял последние дни.

Когда появился этот баг, по телевизору ещё не показывали «Колесо Фортуны» (российский аналог: «Поле чудес», 1990 год — прим. пер.). Никто не видел «Шоу ужасов Рокки Хоррора», а Стивен Спилберг снял несколько телефильмов и один полноэкранный фильм, провалившийся в кинопрокате (но картина «Дуэль» получила несколько кинопремий — прим. пер.). По NBC не показывали «Субботним вечером в прямом эфире», а «Эдмунд Фицджеральд» ещё перевозил железную руду (гигантский сухогруз с экипажем затонул 9 ноября 1975 года — прим. пер.).

КОГДА ИЗОБРЕЛИ ЭТУ ГЛУПУЮ «ФИЧУ», НА ЭКРАНЫ ТОЛЬКО ВЫШЛА ВТОРАЯ ЧАСТЬ «КРЁСТНОГО ОТЦА».

Так почему это произошло? В то время уже пять лет как вышел Unix с хорошей идеей «всё является файлом», что открывало дверь для множества возможностей: запись в сокеты, конвейер, консоль и прочее с теми же командами и инструкциями.

Идею реализовал Гэри Килдалл в CP/M в 1974 году. Она позволяет классные вещи, такие как копирование данных с последовательного порта в текстовый файл или печать текстового файла прямо из командной строки!

В Unix это делается через специальные файлы, существующие в специальных папках, как /dev/tty для консоли или /dev/lp0 для первого принтера. Вы можете получить бесконечный поток нулей из /dev/zero, случайные байты из /dev/random и т.д.!

Но вот проблема: CP/M предназначена для 8-битных компьютеров с небольшим объёмом памяти и без жёстких дисков. В лучшем случае у вас есть 8-дюймовый дисковод для гибких дисков. Какие директории? Они вам не понадобятся. Просто используете разные диски.

Но без директорий вы не можете поместить свои файлы в каталог /dev/. То есть они просто повсюду. Так что если вам нужно распечатать файл foo.txt, вводим команду PIP LST:=FOO.TXT, что копирует foo.txt в «файл» LST, который является принтером. И это работает везде, потому что нет никаких директорий! Всё просто.

Но как насчёт расширений? Тут проблема: программы любят добавлять к файлам свои расширения. Поэтому если программа говорит «Введите имя файла, чтобы сохранить листинг», есть возможность указать LST для распечатки или PTP для выбивания на перфоленте (потому что это 1974 год, помните?). Но программа может попытаться поставить .TXT в конце имени файла! LST.TXT — это же не принтер, верно?

Неа. Хак всё равно работает. Специальные устройства транслируются на все расширения, так что CON зарезервировано для клавиатуры даже в случае CON.TXT или CON.WAT, или CON.BUG.

Да уж. Это реальный хак, но он нужен только некоторым маленьким микрокомпьютерам с 4 КБ оперативной памяти, кого это волнует?

Операционка CP/M получила широкое распространение в конце 70-х и начале 80-х. Это была одна из основных ОС для бизнеса. Она определила стандартный интерфейс, так что вы могли написать код CP/M на NorthStar Horizon — и запустить его на Seequa Chameleon.

Отсутствие универсального графического стандарта не позволяло писать для него много игр (хотя есть релизы Infocom), так что стандарт использовался в основном в деловой среде.

Но рынок был большой: естественно, IBM хотела его охватить для нового проекта под названием «PC», который они делали в начале 1980 года.

IBM намеревалась выпустить IBM PC с несколькими операционными системами и ожидала, что CP/M станет «основной». Но CP/M для x86 появилась только через 6 месяцев после запуска IBM PC… и стоила $240 против $40 для DOS.

Таким образом, подавляющее большинство пользователей в конечном итоге купили Microsoft PC-DOS — новую версию операционной системы, изначально разработанную компанией Seattle Computer Products. MS купила проект Тима Патерсона и развила его в PC-DOS (который позже переименуют в MS-DOS, если вы не в курсе).

Система Тима Патерсона называлась QDOS (Quick and Dirty Operating System, «быстрая и грязная операционная система»). Её написали по-быстрому, потому что CP/M ещё не вышла под x86, и QDOS пыталась преодолеть некоторые ограничения CP/M. Эта система определённо во многих отношениях копировала CP/M.

Среди прочих была позаимствована концепция специальных файлов и отсутствие каталогов, потому что это была полезная функция CP/M. Таким образом, в QDOS и PC-DOS 1.0 тоже есть AUX, PRN, CON, LPT и т.д.!

Для PC-DOS 2.0, выпущенной в 1983 году для нового IBM XT, компания Microsoft значительно обновила PC-DOS. В IBM XT имелся жёсткий диск, поэтому в PC-DOS добавили поддержку каталогов. Нужно ведь навести порядок в куче файлов на огромном жёстком диске 10 МБ, очевидно!

Но вот проблема: пользователи уже используют эти специальные файлы с момента выпуска PC DOS 1.0 двумя годами ранее. Написано программное обеспечение с их поддержкой! В продакшн ушли пакетные файлы.

С появлением директорий Microsoft теперь могла сделать папку C:\DEV… но не сделала.

Не в последний раз Microsoft пожертвовала здравым смыслом ради обратной совместимости. Специальные файлы теперь могут быть в ЛЮБОМ КАТАЛОГЕ и С ЛЮБЫМ РАСШИРЕНИЕМ. Так что ваша команда DIR > LPT для печати листинга файлов продолжит работать в C:\DOS, как она работала в A:\.

Конечно, мы не запускаем DOS 2.0… Но Windows 95 построили поверх DOS. Естественно, она унаследовала это поведение (как и Windows 1/2/3 ранее). Windows 95 больше нет! Текущая ветвь Windows основана на Windows NT, а не Win95.

Однако Windows NT стремилась сохранить совместимость с программами DOS/Windows, поэтому XP объединила две ветви. Так что эти специальные файлы всё ещё работают, СПУСТЯ СОРОК ЧЕТЫРЕ ГРЁБАНЫХ ГОДА.

Можете сами попробовать! Откройте Проводник, создайте новый текстовый файл и назовите его con.txt, aux.txt или prn.txt.

Вам скажут ИЗВИНИ, ДРУГ…



Гэри Килдалл позаимствовал отличную идею из Unix и приспособил её для микрокомпьютеров с 4 КБ памяти без каталогов — это случилось так давно, что у родившихся тогда детей уже могут быть свои дети, которые имеют право покупать алкоголь, но мы по-прежнему не имеем права назвать файл con.txt.

Microsoft приводит полный список запрещённых названий: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9.

Для ещё большего кайфа, попытка доступа к C:\con\con (или C:\aux\aux) на win95 мгновенно покажет синий экран. Это было весело даже в 1995 году, потому что багу исполнился 21 год! Представьте, что какая-то ошибка сохраняется настолько долго?





Бонус: вот фотография Тима Патерсона на VCF:W в августе этого года, он рассказывает об истории DOS.



Если вам интересно, как у меня появился «запрещённый» файл, который нельзя скопировать, то скажу. Эти имена специальных устройств реализуются на уровне ОС, а не на уровне файловой системы. Таким образом, это совершенно допустимые имена файлов NTFS, а я использовал диск NTFS под Linux.

Похоже, что OS/2 тоже не реализовала эти специальные имена, потому что на одном из дисков от IBM есть файлы AUX.H в комплекте OpenGL.



Так что сегодня я попытался сделать резервную копию этого диска NTFS на основной ПК и ОП-ПА, НЕВОЗМОЖНО СКОПИРОВАТЬ ВСЕ ФАЙЛЫ ИЗ-ЗА БАГА СТАРШЕ, ЧЕМ БОЛЬШИНСТВО ЧИТАТЕЛЕЙ ЭТОЙ СТАТЬИ.

Несколько примечаний:

1. CP/M на самом деле не использовала эти специальные имена так просто, как я описал. Похоже, что я или не знал, или забыл об этом факте. На самом деле они должны сопровождаться двоеточием, как имена дисков, то есть PRN: — это принтер, PRN — нет.

2. CP/M не реализовала их на уровне ОС, как в DOS! Они были просто включены в PIP, команду копирования файлов. Поэтому там не работал трюк DOS сохранения в файл PRN.TXT с автоматической печатью. Я не имел в виду, что CP/M так делала, а только DOS, но видимо не ясно выразился.

3. В PC DOS 1.0 на самом деле не было редиректов или конвейера, так что вы не сможете сделать такой редирект, как я предложил. Забыл об этом. Их добавили в PC DOS 2.0 в 1983 году. Хотя PC DOS 1.0 поддерживала копирование в/из специальных файлов, поэтому общий тезис правильный, даже если пример неудачный.

В любом случае, спасибо за отклики на эту статью! Не ожидал, что она так взорвётся, я просто накропал пару абзацев, когда пришёл домой сильно уставший и увидел сообщение об ошибке из-за бага 44-летней давности.

И если что, я не собирался кричать «Windows SUCKS». Обратная совместимость, в общем, хорошая вещь. На самом деле, я хотел бы больше обратной совместимости, а не меньше.

Но меня просто поразил этот баг из древности, который выскочил во время копирования с USB 3.0 SSD на другой SSD в Windows 10.

Это как будто живёшь на космической станции — а тут появляется лошадь.
tl; dr:

Поделиться публикацией

Похожие публикации

Комментарии 177
    +11
    Искренне интересно, неужели два человека независимо решили сделать перевод одной и той же статьи и выложить его на Хабр? Или это типа челлендж? Пора свою версию перевода пилить уже или нет?)
    habr.com/post/428706
      0
      Да, забавно вышло :) Честно, не сговаривались.
        +18

        На хабре стало слишком много переводчиков, происходят колизии.


        https://habr.com/company/ruvds/blog/428570/
        https://habr.com/company/plarium/blog/428612/


        https://habr.com/company/ruvds/blog/428173/
        https://habr.com/company/skillbox/blog/428231/

          +5
          Потому, что в движке Хабра нет поиска по урл источника перевода и защиты от дублей.
            +4

            Писать в фирменный блог что-то надо — за него деньги уплочены.
            Писать некому и нечего.
            А давай брать популярные статьи и переводить!

              +1
              Автор перевода выбирает крайне интересные(по крайней мере для меня) статьи и достаточно здорово справляется со своей работой. Спасибо ему огромное!
                0

                Это не корпоративный блог

                  0

                  Да, вы правы, это не корпоративный блог, это три корпоративных блога.
                  А почему вы решили заострить на этом внимание?

                    0

                    Я подумал, что вы про текущий топик.

              +1
              Не одной и той же. Это переводы разных репостов.
                0
                А про оригинал всё давно забыли…
                  0
                  Но ведь это не оригинал постов, переведённых сейчас. Просто там поднята та же тема…
                +6
                И тот и другой перевод — хреновые.

                Просто подстрочник, без попытки перевести текст на русский.

                Да и в оригинале это не статья, а поток сознания из какого-то чата.

                Переводчиков мало, переведунов много.

                P.S.



                что я делаю не так?
                  +3
                  Попробуйте теперь эти файлы открыть через проводник.
                  Far Manager их, кстати, открывает без проблем — видимо, использует UNC-имена для доступа к файлам.
                    +8
                    Знаете, забавно: не открываются файлы .txt, (Не удается найти `\\. \con.txt`) но с просто aux, con — предлагает сопоставить расширение.

                    Впрочем, заголовок все равно кликбейтный. А перевод хреновый.

                    P.S. Опять могу отвечать раз в час. Нет, плохие переводчики все равно не заткнут мне рот. Я сделаю хабр лучше, пусть даже ценой своей «кармы»!
                      0
                      Я тоже поначалу пошел по не правильному пути, создавая файлы как раз в ФАР и хотел написать тут подобным образом, типа ЧЯДНТ. Однако потом, случайно попытавшись удалить файл в Проводнике, получил ошибку про несуществующий файл. Дальше стал экспериментировать в Проводнике и понял, что статья отражает правду жизни.
                        0
                        При удалении — FAR сообщает о «неправильном пути» но все прекрасно удаляет.

                        Но в общем, это не бага. Это такая документированная фича.

                        Примерно такая же, как если бы чел начал ныть в твиттере, что

                        «Он не может создать файл с именем из двух точек и сейчас расскажет вам, ПОЧЕМУ такой звездец творится в Виндоус с 1974 года»

                        Нет, вы подумайте, на дворе 2018 год, папки, а он я/он может создать папку с двумя точками!


                        P.S. Статью штоле написать — «Как я не смог создать папку с двумя точками и почему или немного об устройстве файловых систем»

                        Хотя нет, серьезные люди кликбейтный заголовок не оценят. Да и кто не знает, что за записи такие в оглавлении каталога — "." и ".."? :)
                          +2
                          FAR сообщает о «неправильном» пути потому что пытается сначала положить файл в корзину через Shell API.

                          Если удалять через Shift+Del — удаляет сразу.
                      –1
                      .
                        +1
                        Не знаю. У меня win10 попробовал создать файл con написали «Указано неверное имя устройство». И файл con.txt не дал сохранить написал, что это имя зарезервировано.
                          +2
                          Перевод ужасен, как минимум потому, что там пишется о каких-то культурных событиях вообще непонятных человеку который вырос в СНГ или Европе.
                            0
                            Да это то ладно. Было бы оно изложено нормальным человеческим языком (а в идеале — были бы проведены параллели с событиями в СССР/РФ)…

                            Но — нет. Это ведь слишком сложно, правда? :(
                              +1
                              Я не думаю что в переводе стоит заменять одни события на другие из другой части света. Это все же перевод, а не статья на ту же тему.
                                0
                                В таких случаях используют сноски с разъяснениями. В скобках пишут (прим. перев.).
                                Навроде как в переводах романов Стивена Кинга, где такое же огромное количество упоминаний неких событий/персоналий/мест, которые могут что-то сказать только местному. Типа «Райт Эйд», «Кул-Эйд», и т. д., и т. п.
                                  0
                                  С этим — согласен, сноски были бы в тему. И уже в них можно было и историческую справку дать и аналоги из культуры другой страны.
                                0
                                … и не интересовавшемуся ничем за его пределами. Хотя, отсылок как-то многовато, больше похоже на тоску по молодости, а не описанию бага (бага ли?)
                                +2
                                А в оригинале это и есть поток сознания. Тред в твиттере: twitter.com/Foone/status/1058676834940776450
                                  +1
                                  Вот она, новая эпоха переводов на хабре! :(
                              +7
                              Первые четыре абзаца — прям Намедни. Я, конечно, понимаю, что перевод и это разговор с копипастой в пустоту, но тяжело читать столько воды в одном месте.
                                +1

                                Не понял, это вы сейчас Намедни назвали водой?

                                  +2
                                  Нет, это я сейчас назвал водой первые четыре абзаца статьи. Довольно длинный беллетристический экскурс в общую историю в статье про компьютерный баг. Не в вину переводчика, конечно же.
                                +18
                                «Были программы, написанные пять тысяч лет назад, когда человечество еще не покинуло Землю. И самое чудесное (самое ужасное, как говорила Сура) было то, что, в отличие от бесполезных обломков прошлого Канберры, эти программы все еще работали! И через миллион миллионов запутанных нитей наследования многие из старейших программ все еще выполнялись во внутренностях системы Кенг Хо. Например, методы слежения за временем у торговцев. Поправки вносились неимоверно сложно – но на самом дне лежала крошечная программа, которая гоняла счетчик. Секунду за секундой отсчитывала система Кенг Хо с того момента, как нога человек ступила на Луну Старой Земли. Но если приглядеться еще пристальнее… начальный момент был миллионов на сотню секунд позже; момент «ноль» одной из первых компьютерных операционных систем Человечества.» (С)
                                  +3
                                  Буквально 20 минут назад читал на Хабре эту же цитату в комментарии к другой статье. )
                                    +2
                                    В Матрице техработы, вот глюки чаще появляются
                                    0

                                    Вернон Виндж, все у него перечитал. Эх…

                                    +18
                                    Для тех, кто хочет создать такой файл: type nul > "\\?\C:\con.txt"
                                    Раньше я таким образом создавал на флешках системную папку autorun.inf с файлом con внутри, такая себе защита от автозапускающихся вирусов.
                                      –1
                                      Системной папку autorun.inf лучше как раз не делать: на это агрятся некоторые антивирусы.
                                        +10

                                        Может быть лучше не пользоваться этими самыми некоторыми антивирусами?

                                          0
                                          Так весь смысл защиты флешки — когда ее приходится вставлять в чужие компьютеры. А там может стоять любой антивирус.
                                            +1
                                            Как по мне, смысл защиты флешки не подхватить вирус на нее с чужого компьютера, или не дать ему запуститься на моем. И системная папка autorun.inf может помочь. Я правда в системе просто автозапуск для всех дисков отключаю.
                                              0
                                              Мне как-то раз принесли на флешке фотографии для распечатки.
                                              А у меня с давних времён параноидальная привычка отключать опцию «скрывать расширения для зарегистрированных типов файлов». Человек говорит фотки в папке «Foto», а я смотрю, что у этой папки (несмотря на правильную иконку) расширение «exe». Включил детальный режим просмотра папки, и таки да — это файл, а не папка. Троян подменил папку на своё тело.
                                                0
                                                оригинальная папка Foto скорее всего сушествует просто помечена трояном как скрытая.
                                                  0
                                                  Опцию «показывать скрытые» и «показывать системные» я тоже всегда первым делом включаю.
                                                  +4
                                                  А у меня с давних времён параноидальная привычка отключать опцию «скрывать расширения для зарегистрированных типов файлов».
                                                  Это абсолютно нормальная привычка выключать то, что придумали дебилы. Это настоятельно рекомендуется делать сразу же после установки Windows, у меня на этот случай даже *.reg-файл есть для импорта, созданный ещё со времён Win2k.
                                                  Целевая ветвь реестра:
                                                  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt
                                                  Параметры: CheckedValue, DefaultValue, UncheckedValue.
                                                    –4
                                                    Нормально — это не использовать древний, глючный и убогий Windows любых версий в 2018м году. И значительная часть его убогости — именно из-за параноидального стремления сохранить обратную совместимость, которая всё равно ничерта не совместима
                                                      +1
                                                      Ну, может на нашем веку ещё случится долгожданный Вендекапец. :) Вобщем-то можно: если деньги позволяют — купить Мак, если не позволяют — повозиться с Хакинтошем или накатить за дидов Ubuntu, а играть на PS4/XBox. Но вот с предприятиями-то как быть? Особенно, где количество сотрудников исчисляется тысячами?
                                                        –2
                                                        Использовать практику западных государств, где не было пиратства в таком объёме — использовать Linux/Unix. Для задач малых и средних бизнесов там из коробки есть всё, что нужно
                                                    +1
                                                    у меня с давних времён параноидальная привычка отключать опцию «скрывать расширения для зарегистрированных типов файлов»

                                                    Вообще, очень правильная привычка, причем эта настройка нужна хотя бы для того, чтобы мочь поменять расширение txt на log в проводнике, не занимаясь камасутрой. Побочный результат — детектирование таких вот умных вирей.


                                                    PS: и почему на серверах эта настройка по умолчанию не включена? Их же под админов делают, а не под пользователей, кому типа не нужно думать о расширениях (с) ?

                                                    +1
                                                    А с самым смешным вирусом я столкнулся во времена Active Desktop на Win98SE.
                                                    Майкрософтовцы экспериментировали с активным содержимым — в любой папке можно было создать файлик folder.htt, содержащий код веб-страницы, и она использовалась проводником. Я тогда ещё игрался, устанавливая страничку с видео-файлом, проигрывающимся прямо на рабочем столе.
                                                    Так вот однажды притащили мне комп с жалобами «тормозит неимоверно, наверное вирус». Включил — действительно тормоза. Дай, думаю, сниму оттуда жёсткий диск и прогоню на нём проверку из-под моей системы.
                                                    Так вот идея вируса оказалась гениальной. Вирус создаёт файлик «folder.htt», который содержит внутри себя тело вируса и код, который выгружает это тело в системную папку и запускает на выполнение. Вирус, запустившись, начинает сканировать всю структуру диска, и создавать «folder.htt» в каждой папке, до которой дотянется. Для заражения достаточно просто зайти в папку — запускать ничего не требуется, всю остальную работу за вирус делал сам майкрософт.
                                                    Повезло, что вирус был написан явно для прикола и без особых изысков — он сам демаскировал себя тем, что клал на лопатки заражённую систему, не заботясь о скрытности, паузах, использовании iddle и т.д. Ну и единственной его задачей оказалось самораспространение — никаких других вредоносных функций у него не было.
                                                    Ох и долго я с ним боролся — тогдашние антивирусы с ним справлялись очень плохо. Вирус запускал несколько своих копий, которые постоянно следили за тем, чтобы юзер не мог закрыть сразу все процессы вируса и постоянно запускал новые процессы вместо остановленных. Прописал себя сразу во все возможные места автозагрузки, и если пропустил хотя бы одно возможное место — при перезапуске сразу же прописывался заново в остальных местах.
                                                    Был тогда совсем ещё зелёный, интернета можно сказать не было, антивирус не справился, поэтому пришлось до всего доходить самостоятельно.
                                                    Потратил сутки на вычистку всех folder.htt со своего компа, только успокоился, как захожу в одну из папок, а там folder.htt — начинай всё сначала. Очень цепкая оказалась сволочь.

                                                    А вот оно, с подробным описанием.
                                                      0
                                                      Как вам системная папка autorun.inf поможет, если ее удалит антивирус на этом самом чужом компьютере?
                                                        0

                                                        Так как он её удалит, если в ней есть NUL.txt?))

                                                          0
                                                          Так же, как и создали. через UNC имена. Если бы антивирусы спотыкались на таких простых вещах, грош бы цена им была.
                                                          Впрочем, как по мне, лучшая защита своего компа от вирусов на любых флешках, а не только своих, — SRP.
                                                            0
                                                            Я делал проще:
                                                            Panda USB Vaccine создавала битый файл autorun.inf, на наличие которого агрились все антивирусы и ни один его не мог удалить. Только проверка диска на ошибки…
                                                            Таким образом я просто все флешки, до которых дотягивался, защищал и кучу раз наблюдал бедные вирусы на оных, который просто лежали и ничего не могли сделать)
                                                              0
                                                              Вот и у меня лежат, безо всяких сторонних программ.
                                                          0
                                                          Права доступа только на чтение?
                                                            0
                                                            Если бы вы могли гарантировать, что эти самые права доступа будут соблюдаться — вам бы не требовалось исхитряться с папкой autorun.inf.
                                                  +1
                                                  Можно просто использовать Far Manager.
                                                  +13

                                                  Баг ещё в том, что система выдаёт "File too large" вместо того, чтобы понять, почему на самом деле файл не копируется. Вот это — и правда позорище.

                                                    +1
                                                    Оно еще и по разному на разных версиях себя ведет. Хотя казалось бы если это наследие времен ДОСа, то везде должно быть одинаково. Но нет, видимо это не раз переделывали, но оставляли на месте.

                                                    Например win XP попытка создания(или копирования на диск файла созданного где-то еще) подобного файла без расширения в проводнике молча отменяется (ничего не происходит), а с расширением выдает ошибку «такой файл уже существует» (а не слишком большой файл как в 10ке).
                                                    А при попытки сделать тоже самое через API из какой-то другой программы (не майрософта) обрабатывается корректно, выдает сообщение: «Это имя зарезервировано как имя устройства, выберете другое имя файла.»
                                                    0
                                                    пофиг на это.
                                                      +2

                                                      "Это как будто живёшь на космической станции — а тут появляется лошадь".


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

                                                        +1
                                                        А что с ней вообще не так?
                                                        image

                                                        +2
                                                        image
                                                          0
                                                          Это из Матрицы? Но вроде в оригинале не было столько проводов.
                                                          +1
                                                          Запустил в Win10 и C:\aux\aux и C:\con\con. Ничего не случилось. Какой же это баг? Это фича.
                                                            0
                                                            Это работало только в Wn95/98/Me. Причем через шару в том числе, можно было любой комп в сетку заблускринить.
                                                            +6
                                                            вы указать LST для распечатки
                                                            Вы чем переводить?
                                                              +11
                                                              Мне одному кажется, что называть это «багом», особенно «БАГОМ», немного некорректно?
                                                              Особенно с учётом того, что «Microsoft приводит полный список запрещённых названий» — то есть это вполне документированное поведение.
                                                              Очередной хайп для тех, кто не застал книжки Питера Нортона, короче.
                                                                +5

                                                                Выдавать File too large и единственную опцию Skip — это точно баг

                                                                  +3
                                                                  А это уже баг «проводника».
                                                                    0
                                                                    единственную опцию Skip — это точно баг
                                                                    Вы пытаетесь работать проводником с файлом, который проводником создать нельзя и вообще он запрещён к созданию в этой ОС, так какую ещё опцию вы хотите? Радуйтесь, что не БСОД.
                                                                      +3

                                                                      Например, "Данное имя файла зарезервированнот системой и не может быть использовано. Переименовать?".


                                                                      БСОД при копировании это сильно. Надеюсь, этот подход похоронили где-то еще до OSR2..

                                                                        0
                                                                        Данное имя файла зарезервированнот системой и не может быть использовано.
                                                                        Это разумно писать при попытке создания файла с таким именем. При копировании устройства как файла ошибка может выглядеть как угодно, ведь такого объекта и действия быть не может.
                                                                          0
                                                                          ведь такого объекта и действия быть не может.

                                                                          Флешек и альтернативных ОС уже не существует?
                                                                          0

                                                                          Дык в том то и дело что он ничего не может сделать с этим файлом. И переименовать тоже не может. По этому только скип

                                                                            0

                                                                            Но Far Manager может.

                                                                          +1
                                                                          Радуйтесь, что не БСОД.

                                                                          Вы не в государственных структурах работаете случайно?
                                                                        +2
                                                                        Получается ситуация «Это не баг, а фича», доведенная до абсурда — фича абсолютно не нужная, устаревшая больше 30 лет назад, но тем не менее заботливо поддерживаемая. И ведь наверняка есть тесты на то, чтобы нельзя было создать файл с именем «con»!
                                                                          +2
                                                                          фича абсолютно не нужная, устаревшая больше 30 лет назад, но тем не менее заботливо поддерживаемая.
                                                                          Это называется «обратная совместимость». Чем Microsoft до сих пор и кроет остальные «альтернативные ОС», как бык овцу.
                                                                          И ведь наверняка есть тесты на то, чтобы нельзя было создать файл с именем «con»!
                                                                          Ну создайте. Стандартными средствами. А то получается, как в анекдоте с японской лесопилкой и суровыми сибирскими мужиками.
                                                                            +1
                                                                            Ну 16-разрядные программы под 64-разрядными Windows все равно уже не запускаются, так что такая обратная совместимость все равно не работает. Хотя вроде и в Win32-приложении можно просто открыть файл «COM1» и оно будет работать с com-портом, так что может для кого-то это все-таки нужно.
                                                                            Про тесты, я имел в виду, что раз это фича, в Windows должны быть интеграционные тесты, которые проверяют, что оно работает именно так.
                                                                              0
                                                                              А командный интерпретатор и не является 16-битным приложением. Для него совместимость нужна.
                                                                            0
                                                                            Свою-то систему можно тестировать хоть до посинения. Нельзя протестировать другие реализации файловой системы под другими ОС. Но какое-то поведение системы при появлении таких файлов можно предусмотреть, да.
                                                                              +2
                                                                              фича абсолютно не нужная, устаревшая больше 30 лет назад, но тем не менее заботливо поддерживаемая.
                                                                              Если бы она была ненужной её бы выпилили.

                                                                              Как указывает статья 15-летней давности скритов проверяющих существание директории через «финт ушами» if exist directoryname\nul и документов, в которых написано «чтобы сделать конфигурационный файл наберите copy con ...» со временем меньше не становится…
                                                                            +3
                                                                            Удивительная по своей бесполезности статья, а стиль так вообще за гранью.
                                                                            В Windows есть зарезервированные имена файлов, которые являются устройствами — этим предложением можно было ограничиться
                                                                              +6
                                                                              Буквально вчера прочитал на StackOverflow про аналогичный фокус с папкой `....` (три и более точек подряд).

                                                                              «Работает» примерно также, за исключением того что файлы из этой папки не видны в большинстве программ, включая поиск. Explorer либо не может зайти в папку, либо показывает содержимое материнской папки. Total Commander при попытке зайти в неё выбрасывает в корневой каталог диска, хотя его поиск работает. Тем не менее, chkdsk не обращает на подобное внимания.

                                                                              Проблема опять же в совместимости с DOS, и, возможно, CP/M: запись «test.» воспринимается как файл «test» с пустым расширением. Это нужно, например, чтобы запретить DOS-программе добавлять своё расширение к файлу, например, если текстовому редактору при сохранении ввести имя файла «test», тот как правило запишет файл «test.txt»; чтобы сохранить файл без расширения нужно написать «test.»; многие windows-программы работают также. В результате парсер по умолчанию обрезает имя файла/папки "...." до пустой строки, а путь «C:\test\....\file.txt» превратится в «C:\test\\file.txt» что эквивалентно «C:\test\file.txt»

                                                                              Эти файлы и папки (AUX, LPT1, `....`) можно создать/удалить/переименовать командами используя синтаксис "\\?\диск:\полный\путь", например: `mkdir \\?\c:\test\aux` или `rmdir \\?\d:\test\....`. Функции WinAPI тоже понимают такую запись; Total Commander может даже сделать такой каталог текущим, достаточно ввести `cd \\?\c:\` в его коммандную строку.

                                                                              Поскольку подобные файлы/папки стандартными средствами не удаляются, некоторые во времена Windows XP использовали их, например, для создания на флэшке неудаляемой папки «D:\autorun.inf\NUL», не позволяющей вредоносам удалить её и создать не её месте вредоносный файл «autorun.inf».
                                                                                +2
                                                                                Одно время был вирус, который прятал все папки из корневого каталога в каталог с длинным именем ".." (две точки) в корневом каталоге. При этом:

                                                                                1) Система позволяла создавать такой каталог (две точки да ещё и в корневом каталоге — это улёт)
                                                                                2) Ни FAR, ни ПРоводник этот каталог не видели
                                                                                3) chkdsk не находил ничего предосудительного
                                                                                4) имеющиеся под рукой антивирусы вирус прибивали, но папку ".." оставляли как есть.

                                                                                В результате приходит человек с флешкой, она почти вся занята, а на ней — ПУСТО.

                                                                                Приходилось использовать короткие имена. Там этот каталог назывался «E2E2~1», хотя логичнее было бы «2E2E~1»
                                                                                  +7
                                                                                  Я знаю о ещё более забавном случае. Жила-была СХД, использовавшаяся бэкап-софтом для хранения данных.
                                                                                  Иерархия хранилища была простая — \ПапкаХранилища\ИмяКомпании\ИмяАккаунта
                                                                                  При разработке немного завтыкали с валидацией имени аккаунта, и одна из компаний в тестовых целях создала себе аккаунт с именем "..".
                                                                                  На СХД периодически запускались скрипты, которые чистили хранилище от данных неактивных аккаунтов. Создатель скрипта, не подозревая о такой подставе, не учёл возможность существования аккаунтов с именем "..", в итоге purge-скрипт добрался до этой папки, поднялся с уровня ИмяАккаунта на уровень ИмяКомпании и… Правильно, начал чистить другие ни в чём не повинные компании.
                                                                                  На СХД хранились террабайты данных, для Purge-скрипта нормальным было работать долго, поэтому никто особенно не парился мониторингом его работы — запустили на выходные и пошли себе отдыхать.
                                                                                  К тому моменту, как админы заподозрили неладное, скрипт успел пережевать пару компаний.
                                                                                  К счастью — бОльшую часть удалённых данных удалось восстановить разными способами.
                                                                                  Весьма поучительная история. Всегда валидируйте пользовательский ввод, зеркалируйте данные (особенно данные бэкапов), мониторьте скрипты.
                                                                                    +1
                                                                                    Тоже история про две точки. Некоторая организация рассылает письма с файлами, назвннными как контрагентов-получатель по типу «ЧП Иванову И.И.». В XP-шные времена, когда пользователь задавал в GUI имя файла с точкой на конце, она обрезалась и получалось «ЧП Иванову И.И.docx», например. В Проводнике и пободных окнах отображалось без второй точки «ЧП Иванову И.И», было некрасиво. Поэтому в Висте решили эстетствовать и файл стал именоваться «ЧП Иванову И.И..docx» с двумя точками перед расширением. В результате в Проводнике отображается нормально "«ЧП Иванову И.И.», но зато появилась проблема с OutLook Express.

                                                                                    Он считал, что разрешение не «docx», а .docx" (с точкой) и отказывался открывать файл с неизвестным расширением. Причём выбрать, какой программой открывать неизвестное расширение он не давал. Приходилось сохранять такой файл на диск и уже там при открытии выполнять привязку программ с расширением. И так для каждого такого расширения. Я даже хотел универсальный обработчик написать.

                                                                                    Особенно запомнился "..pdf". Его таким образом привязать почему-то не удавалось — Outlook Express рисует PDF-ный значок, а всё равно — «неизвестный тип файла».
                                                                                      0
                                                                                      Сколь помню — значок там получается из системы запросом «дай мне значок на это имя файла» или «это расширение». А оно могло работать корректно (не беря последнюю точку).
                                                                                        0
                                                                                        Так дело в том, что у других расширений было всё наоборот — картинка не показывается, зато привязка через сохранение файла на диске с запуском работает, а вот ..PDF «рыжим» оказался. С диска работает, из OutLook Express — ни в какую.

                                                                                        При том, что в реестре ничего подозрительного для PDF не было.
                                                                                –1

                                                                                Высосонное из пальца словоблудие. Почему это вообще на хабре?

                                                                                  0
                                                                                  Стиль ютуба теперь на хабре? Почему весь текст не капсом?
                                                                                    +3

                                                                                    с\con\con в win95/98 даже по локальной сети работал.
                                                                                    \\ip_address\c\con\con
                                                                                    Мы так развлекались на парах, кидая в синюю смерть соседние компьютеры.

                                                                                      +2
                                                                                      В те времена только изобрели штрих-коды, в Америке работала лишь одна телефонная компания, Тед Банди ещё бегал на свободе, а рекорд Бейба Рута по хоум-ранам стоял последние дни.


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

                                                                                        Тоже трясет от такого

                                                                                          0
                                                                                          Чикатило еще работал мастером в ПТУ, а Пахтакор блистал в Высшей лиге? Или про Блюменштрассе уже все знали, а про 3-ю улицу Строителей — только жители соседних домов?
                                                                                            0
                                                                                            Нет.

                                                                                            В те времена только изобрели штрих-коды, в Америке работала лишь одна телефонная компания, Тед Банди ещё бегал на свободе, а рекорд Бейба Рута по хоум-ранам стоял последние дни.

                                                                                            Когда появился этот баг, по телевизору ещё не показывали «Колесо Фортуны» (российский аналог: «Поле чудес», 1990 год — прим. пер.). Никто не видел «Шоу ужасов Рокки Хоррора», а Стивен Спилберг снял несколько телефильмов и один полноэкранный фильм, провалившийся в кинопрокате (но картина «Дуэль» получила несколько кинопремий — прим. пер.). По NBC не показывали «Субботним вечером в прямом эфире», а «Эдмунд Фицджеральд» ещё перевозил железную руду (гигантский сухогруз с экипажем затонул 9 ноября 1975 года — прим. пер.).

                                                                                            КОГДА ИЗОБРЕЛИ ЭТУ ГЛУПУЮ «ФИЧУ», НА ЭКРАНЫ ТОЛЬКО ВЫШЛА ВТОРАЯ ЧАСТЬ «КРЁСТНОГО ОТЦА».


                                                                                            сокращается до

                                                                                            В те времена только изобрели штрих-коды.


                                                                                            Это нормально, не нужно этого стесняться.
                                                                                              0
                                                                                              Про «Крёстного отца» уж лучше оставить — это реалия не местечковая, вполне себе точно передает дух времени.
                                                                                          +2
                                                                                          Это не баг, это фича. Просто ребята из MS поняли ценность обратной совместимости еще в бородатые 80-е, а кое-кто не понял до сих пор.
                                                                                            –2

                                                                                            Ага, скажите это тем, кто пилит .net.

                                                                                              +2

                                                                                              А что не так?

                                                                                                0
                                                                                                Пока что единственное, что меня коробит — отсутствие IEquatable<> и IComparable<> для типов-перечислений. Вводить не хотят, аргументируя обратной совместимостью.
                                                                                                  0
                                                                                                  А зачем они там? EqualityComparer.Default и Comparer.Default и без них работают…
                                                                                                    0

                                                                                                    Затем, что я не могу их использовать в качестве generic-параметров, одним из ограничений на которые является IEquatable<>. А отказываться от этого ограничения и использовать EqualityComparer.Default внутри кода я не считаю правильным:


                                                                                                    1. Наличие явного указания требования на сравнимость типов значительно повышает понятность кода. Я предпочитаю статическую типизацию, а не вычисление компаратора в процессе работы программы.


                                                                                                    2. Снижается производительность. При использовании EqualityComparer.Default всегда используется виртуальный вызов, тогда как вызов .Equals() с большой вероятностью вообще заинлайнится, особенно если используется тип-структура.


                                                                                                0
                                                                                                Есть мнение, что пилят .net другие люди с другими ценностями. Слово Joel Spolsky: www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api-war
                                                                                              0
                                                                                              В DOS под Windows 3.1 или 95 или 98 нельзя было обозвать папку mscdex001 (и прочие имена устройств) — так система по умолчанию именовала первый CDROM.
                                                                                              А в папку autorun.inf на разных дисках клали USB vaccine — файл с именем lpt или подобным, но это уже гораздо позже, во времена XP
                                                                                                0
                                                                                                Есть более неприятный и почему-то малоизвестный баг — нельзя именовать файлы cmd и bat командами DOS, иначе такой файл невозможно будет запустить в интерпретаторе. Скажем, файл robocopy.cmd при запуске сразу будет закрыватьчся без исполнения
                                                                                                  0
                                                                                                  Где-то вы ошиблись

                                                                                                    +1
                                                                                                    Robocopy — не команда интерпретатора, оно подчиняется всем правилам обхода исполняемых файлов.
                                                                                                      0
                                                                                                      Может, нельзя будет запустить без явного указания расширения?
                                                                                                      0
                                                                                                      Так это… В 10-ке всё ещё можно так распечатать на принтере текстовый файл из командной строки?
                                                                                                      Подозреваю, что уже нельзя (принтера нет, 10-ки тоже). Когда можно было последний раз? В 3.11, в 95?
                                                                                                        0
                                                                                                        А разве эту фичу поддерживал кто-то, кроме матричных принтеров? Ушли принтеры — ушла и возможность…
                                                                                                          0
                                                                                                          Вы не поверите, но… все PCL5e принтеры (а их сейчас большинство) так отлично умели и умеют.

                                                                                                          Единственное но: не забывайте ^L посылать, а то оно так и будет ждать, пока вы страницу заполните до конца!
                                                                                                            0
                                                                                                            Ну ладно, кроме LPT-принтеров.
                                                                                                            Сейчас попробовал copy con prn (у меня самсунг 1865 на USB) — не удается найти указанный файл.
                                                                                                            P.S. Я, вообще, и имел в виду эпоху бытовых LPT-принтеров, но что-то не то написал.
                                                                                                              0
                                                                                                              Сейчас попробовал copy con prn (у меня самсунг 1865 на USB) — не удается найти указанный файл.
                                                                                                              Я не знаю как в Windows 10, но в Windows 98 точно можно было для USB принтера указать, чтобы он висел на LPT1.

                                                                                                              Если даже это уже не работает, то скорее всего его можно расшарить и потом подконнктится через net use lpt1 \\COMPUTER\PRINTER /persistent:yes
                                                                                                          +2
                                                                                                          Можно. Если найти под неё контроллер с LPT-портом, подключить принтер по LPT, скорей всего он будет матричным и… будет печатать аж на бегом. Где-то видел проги которые делают виртуальный принтер на LPT и печать перенаправляется на принтер установленный в системе.
                                                                                                            +2
                                                                                                            Где-то видел проги которые делают виртуальный принтер на LPT и печать перенаправляется на принтер установленный в системе.
                                                                                                            А зачем для этого проги? Максимум батник в авторан юзера закинуть…
                                                                                                            net use lpt1 \\localhost\MyPrinter /persistent:yes
                                                                                                              +1
                                                                                                              Если найти под неё контроллер с LPT-портом, подключить принтер по LPT, скорей всего он будет матричным

                                                                                                              Это, кстати, отнюдь не экзотический сценарий. LPT-шные матричные принтеры, например для печати чеков, вполне себе используются и матплаты с выведенными на заднюю панель LPT и COM портами не редкость. В тех же банках, где операции на полноценном компе а не на кассовом аппарате проводятся, вполне можно с таким столкнуться.
                                                                                                                0
                                                                                                                Вообще-то чеки и квитанции печатаются на термоигольчатых принтерах в 99% случаев, подключаемых по USB, причём у половины из них проприетарный API, то есть их как обычный принтер использовать не получится. В кассовых и операционных залах отделений банков матричники массово использовали до 2012-2014 годов, потом стали от них отказываться в пользу лазерных. Остались они разве что в кассах некоторых отделений Ощадбанка в райцентрах. Сейчас матричники в банках используются разве что в отделах обслуживания юрлиц и в отделах статистики, причём строго для внутренних целей, где нужна печать на рулоне.
                                                                                                                  0
                                                                                                                  Ну вот из того, с чем я лично сталкивался, Epson TM-U950. Вполне еще в продаже, подключается по LPT. Как минимум Сбербанк на таких сидит, причем продолжает закупать, гуглится закупка осенью 2017 года 600 штук. Поставщик Avrorus божится, что так же эта модель используется Россельхозбанком, ВТБ24, Банком Москвы и неупомянутыми «другими крупными учереждениями». Это все входит в оставшийся 1%, не подключающийся по usb?
                                                                                                                    0
                                                                                                                    Epson TM-U950. Вполне еще в продаже, подключается по LPT.
                                                                                                                    Ну, для матричников есть своя узкая ниша, в которой им нет равных — где требуется печать с минимальным присутствием человека из серии «поставил и забыл, вернулся через месяц», либо печать на рулоне. Лазерник нельзя научить печатать на рулоне в принципе.
                                                                                                                    Сбербанк на таких сидит, причем продолжает закупать, гуглится закупка осенью 2017 года 600 штук.
                                                                                                                    Сколько сейчас в РФ регионов — чуть больше 80? Это получается примерно по 7-8 принтеров в каждый регион. Думаю, матричные принтеры в таком количестве нужны для открытия новых отделений, если предположить что в среднем в каждом регионе открылось 2-3 новых отделения + резерв. Лазерников же при этом потребуется на порядок больше.
                                                                                                                    Это все входит в оставшийся 1%, не подключающийся по usb?
                                                                                                                    Вроде в плане арифметики всё сходится.
                                                                                                                      0
                                                                                                                      Ну, для матричников есть своя узкая ниша, в которой им нет равных — где требуется печать с минимальным присутствием человека из серии «поставил и забыл, вернулся через месяц», либо печать на рулоне.

                                                                                                                      Это принтер для печати чеков (раньше ими еще в книжки печатали). Он подключается локально к компу, за которым обслуживают клиентов.
                                                                                                                      Сколько сейчас в РФ регионов — чуть больше 80? Это получается примерно по 7-8 принтеров в каждый регион.

                                                                                                                      Такие принтеры стоят в каждом окне.
                                                                                                                      И это просто одна закупка, первая которая попалась. Беглое гугление, и их становится больше. Их закупают постоянно сотнями
                                                                                                                      otc.ru/tenders/region/77-moskva/8453591/31604442263-postavka-bankovskix-printerov-epson-tm-u950-1-300-shtuk
                                                                                                                      otc.ru/tenders/region/g-moskva/12685460/31705200412-postavka-bankovskix-printerov-epson-tm-u950-nuzhd-dal
                                                                                                                      otc.ru/tenders/region/g-moskva/14253388/31705541617-postavka-bankovskix-printerov-epson-tm-u950-nuzhd-dal%60nevostochnogo-banka-pao-sberbank-v-kol-ve-600-sht
                                                                                                                      zakupki.kontur.ru/31502852718
                                                                                                                      zakupki.gov.ru/223/contract/public/contract/view/subject-contract.html?id=2100074&viewMode=FULL
                                                                                                                      Это только первые из ссылок по запросу «сбербанк epson tm-u950 закупка».
                                                                                                                      К тому же, как это:
                                                                                                                      В кассовых и операционных залах отделений банков матричники массово использовали до 2012-2014 годов, потом стали от них отказываться в пользу лазерных.

                                                                                                                      Сочетается с этим:
                                                                                                                      Думаю, матричные принтеры в таком количестве нужны для открытия новых отделений

                                                                                                                      В старых снимают, а в новые ставят?
                                                                                                                      И я пишу только о Сбере потому, что с этими принтерами я сталкивался, а с другими сценариями нет. Не думаю, что Сбер это единственная в мире организация, до сих пор использующая такие принтеры.
                                                                                                                  0
                                                                                                                  Это очень большая редкость. Обычно портов нет вообще, за очень редким исключением. У меня, правда, на относительно новый компьютер искал материнку с 3-мя PCI слотами, я внимания не обратил но когда стал ставить оказался приятно удивлён — в наличии и COM и LPT-порт на задней панели! Неттоп, правда довольно старенький уже по меркам прогресса, на плате разъёмы под LPT/GPIO и 4 разъёма под аппаратные COM-порты. Но это опять же — исключения, довольно редкие.
                                                                                                                    0
                                                                                                                    Это очень большая редкость. Обычно портов нет вообще

                                                                                                                    Вы это так пишите, как будто это вероятностное событие, типа «есть LPT порт — печатаем, нет порта — облом». Это же сценарии корпоративного использования — если в кампании используются LPT-принтеры, то подходящее оборудование будет закупаться целенаправлено. А будет это порт на материнке или внешний контроллер будет зависеть от того, как дешевле. Скажем, материнка с готовым портом дороже материнки без него плюс контроллер, но проще в сопровождении. Или закупаются готовые системники с такой материнкой, и если ставить отдельный контроллер, то будет сложнее с гарантийщиками.
                                                                                                                    При этом LPT это не экзотика, материнки и контроллеры есть в обычных магазинах (в Ситилинке сейчас посотрел, 12 моделей матерей и 3 модели контроллера) не ISA какая-нибудь.
                                                                                                              +1
                                                                                                              самое интересное, это не «баг», и не «ошибка»…
                                                                                                                –3
                                                                                                                В Unix это делается через специальные файлы, существующие в специальных папках, как /dev/tty для консоли или /dev/lp0 для первого принтера. Вы можете получить бесконечный поток нулей из /dev/zero, случайные байты из /dev/random и т.д.!
                                                                                                                В старых Unix — это делалось через файлы, реально присутсвовавшие на диске. Т.е. после выключения компьютера можно было взять диск и найти на нём эти имена — каталог "dev" в корневой файловой системе, а в нём — "tty и прочие (смотреть диск можно было на любом компьютере — в т.ч. и таком, который ничего не знает про специальное значение этих файлов).

                                                                                                                В современном FreeBSD (про другие я как-то не интересовался) — каталог "dev" в корневой файловой системе присутствует, но в нём нет никаких файлов — он пустой. Все специальные файлы создаются в специальной виртуальной файловой системе, предназначенной только для таких вот специальных файлов; и эта файловая система монтируется в /dev (а при необходимости — ещё и в дополнительные точки; например, этого требует named при запуске в chroot). При выключении компьютера эти файлы пропадают.

                                                                                                                Но без директорий вы не можете поместить свои файлы в каталог /dev/.
                                                                                                                Ну и что, что нет такого каталога? Никто не мешает создать для спец.файлов виртуальный каталог — и распознавать спец.файлы по префиксу "/dev".

                                                                                                                И с расширениями проблем тоже не будет.

                                                                                                                Специальные файлы теперь могут быть в ЛЮБОМ КАТАЛОГЕ и С ЛЮБЫМ РАСШИРЕНИЕМ.
                                                                                                                Ага. И в командных файлах для проверки существования каталога можно использовать хак:
                                                                                                                IF EXIST диск:\каталог\nul
                                                                                                                Результат будет отличаться от случая, когда есть просто файл с таким именем.

                                                                                                                Конечно, мы не запускаем DOS 2.0… Но Windows 95 построили поверх DOS. Естественно, она унаследовала это поведение (как и Windows 1/2/3 ранее).
                                                                                                                Осталось понять, зачем надо было тащить это в 32-битный API. Можно было бы оставить это в 16-битном API, но не портировать дальше.

                                                                                                                Гэри Килдалл позаимствовал отличную идею из Unix
                                                                                                                Подобное заимствование отдельных частей обычно плохо заканчивается. Например, в Unix работает конструкция
                                                                                                                yes | программа
                                                                                                                А в DOS она не сработает, если портировать туда программу yes.

                                                                                                                Microsoft приводит полный список запрещённых названий: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9.
                                                                                                                Уж могли бы сделать имена этих файлов в таком виде/формате, который не поддерживается файловой системой. Например, добавлять им всем в конец двоеточие — запретный для файловой системы символ.
                                                                                                                Т.е. тут мы имеем проблему на этапе портирования функции в DOS. Что же — очередное доказательство криворукости Билла Гейтса.

                                                                                                                Если вам интересно, как у меня появился «запрещённый» файл, который нельзя скопировать, то скажу. Эти имена специальных устройств реализуются на уровне ОС, а не на уровне файловой системы. Таким образом, это совершенно допустимые имена файлов NTFS, а я использовал диск NTFS под Linux.
                                                                                                                Разные драйверы NTFS могут иметь разные представления о допустимости тех или иных имён.

                                                                                                                CP/M не реализовала их на уровне ОС, как в DOS! Они были просто включены в PIP, команду копирования файлов.
                                                                                                                Крайне неудачное решение.

                                                                                                                Обратная совместимость, в общем, хорошая вещь.
                                                                                                                Ну-ну, особенно совместимость с вирусами…
                                                                                                                  +1
                                                                                                                  Но без директорий вы не можете поместить свои файлы в каталог /dev/.
                                                                                                                  Ну и что, что нет такого каталога?
                                                                                                                  Вы это. Немного недоперепоняли. Не не «такого каталога». Нет никакого каталога. В CP-M и в MS-DOS 1.0 вообще не было понятия «каталог»!

                                                                                                                  Никто не мешает создать для спец.файлов виртуальный каталог — и распознавать спец.файлы по префиксу "/dev".
                                                                                                                  Гениально, блин! А теперь посмотрите на FCB и скажите — куда вы собрались ваш префикс засовывать, если под наименование файла выделено 99 бит (не байт! в 13 байтах, отведённых под имя файла старшие биты были «забраны» под аттрибуты файлов — тут подробнее описано).

                                                                                                                  Осталось понять, зачем надо было тащить это в 32-битный API. Можно было бы оставить это в 16-битном API, но не портировать дальше.
                                                                                                                  Потому что исходники всё это использовавших 16-битных программ нужно было уметь перекомпилировать без изменений под 32-бита?

                                                                                                                  OS/2 решили «почистить API» при переходе с реального режима в защищённый — результат всем известен.

                                                                                                                  А в DOS она не сработает, если портировать туда программу yes.
                                                                                                                  Зависит от программы. Со многими программами — отлично срабатывает, но не со всеми. Ну так и в Unix — оно не со всеми программами работает.

                                                                                                                  Уж могли бы сделать имена этих файлов в таком виде/формате, который не поддерживается файловой системой.
                                                                                                                  А как тогда вводить их, если они будут отвергаться API?

                                                                                                                  Что же — очередное доказательство криворукости Билла Гейтса.
                                                                                                                  Ну если умение делать программы, которые люди будут хотеть использовать называть «криворукостью»…

                                                                                                                  CP/M не реализовала их на уровне ОС, как в DOS! Они были просто включены в PIP, команду копирования файлов.
                                                                                                                  Крайне неудачное решение.
                                                                                                                  Вы уж определитесь — вы «за» костыли или «против». Потому как без использования костылей никак иначе требовать вводить двоеточие не получится: в FCB для этого двоеточия попросту нет места!
                                                                                                                    0
                                                                                                                    Вы это. Немного недоперепоняли. Не не «такого каталога». Нет никакого каталога. В CP-M и в MS-DOS 1.0 вообще не было понятия «каталог»!
                                                                                                                    Да всё я прекрасно понял. Это Вы меня не поняли.

                                                                                                                    Вы утверждаете: «в операционной/файловой системе не было каталогов». Да, я в курсе. Но как это мешает работать команде
                                                                                                                    PIP /DEV/LST=FOO.TXT
                                                                                                                    ? Особенно если это это сделано на уровне программы PIP?

                                                                                                                    А теперь посмотрите на FCB и скажите — куда вы собрались ваш префикс засовывать, если под наименование файла выделено 99 бит
                                                                                                                    99 бит = 12 байт + 3 бита.
                                                                                                                    "/DEV/LST" = 8 байт.
                                                                                                                    У нас осталось четыре байта.

                                                                                                                    Потому что исходники всё это использовавших 16-битных программ нужно было уметь перекомпилировать без изменений под 32-бита?
                                                                                                                    Я не верю, что вообще все без исключений 16-битные исходники можно было портировать по 32 бита без изменений. Вот и в данном случае — можно было депрекатнуть эту фичу, благо это был самый подходящий момент.

                                                                                                                    OS/2 решили «почистить API» при переходе с реального режима в защищённый — результат всем известен.
                                                                                                                    При переходе с W'9x на W'NT/2000/etc — API тоже почистили. Результат был отменный.
                                                                                                                    Не в этом причина коммерческого успеха. IBM просто просрала рынок персональных компьютеров изначально — и потом ни разу не пыталась принять реальные шаги, способные сделать её лидером этого рынка.

                                                                                                                    Ну так и в Unix — оно не со всеми программами работает.
                                                                                                                    Жду примера.

                                                                                                                    А как тогда вводить их, если они будут отвергаться API?
                                                                                                                    У операционки — много компонент. API какого компонента будет отвергать такие имена?
                                                                                                                    Вроде, мы вообще говорим о временах, когда API только создавался. И вполне можно было сделать так, чтобы API верхнего уровня принимал такие имена, а дальше в файловую систему попадали только валидные для неё имена; а остальные попадали бы в систему обслуживания спец.файлов.

                                                                                                                    Ну если умение делать программы, которые люди будут хотеть использовать называть «криворукостью»…
                                                                                                                    А тут вопрос не в умении делать программы. Чтобы люди хотели чего-то — в первую очередь нужен маркетинг.

                                                                                                                    Вы уж определитесь — вы «за» костыли или «против». Потому как без использования костылей никак иначе требовать вводить двоеточие не получится: в FCB для этого двоеточия попросту нет места!
                                                                                                                    Если ограничить имя спец.файла «на один байт короче, чем допускает файловая система» — то нет никакой проблемы.
                                                                                                                    Как вариант — если для спец.файлов запрещены расширения, то двоеточие как раз влезает, и ещё два байта свободны.
                                                                                                                      +1
                                                                                                                      Но как это мешает работать команде
                                                                                                                      PIP /DEV/LST=FOO.TXT
                                                                                                                      ? Особенно если это это сделано на уровне программы PIP?
                                                                                                                      В коменда PIP слеши использовались для задания опций (как во многих программах DOS потом). Но да, в принципе это никому не мешает.

                                                                                                                      А теперь посмотрите на FCB и скажите — куда вы собрались ваш префикс засовывать, если под наименование файла выделено 99 бит
                                                                                                                      99 бит = 12 байт + 3 бита.
                                                                                                                      "/DEV/LST" = 8 байт.
                                                                                                                      У нас осталось четыре байта.
                                                                                                                      Вот только вы тем самым создали нечто, что не выглядит, как имя файла. Оно содержит запрещённые символы. И нужно как-то особо его обрабатывать, чтобы оно через все программы прошло. Заметим, что делаете вы всё это для системы, в которой свободной памяти — 16K. Для PC DOS и для программ, для всего.

                                                                                                                      Я не верю, что вообще все без исключений 16-битные исходники можно было портировать по 32 бита без изменений.
                                                                                                                      Нет, конечно. Там были интересные истории с wParam и lParam.

                                                                                                                      Вот и в данном случае — можно было депрекатнуть эту фичу, благо это был самый подходящий момент.
                                                                                                                      Не очень понятно как вы это себе представляете. Вы не забываете, что 32-битные программы вначале запускались в течении 6 лет поверх 16-битной операционки? То есть к моменту, когда появилась полностью 32-битная операционка, в которой эту фичку, как-бы-типа-может-быть-и-можно было бы отключить — уже появилась куча 32х битных программ, которые её использовали?

                                                                                                                      При переходе с W'9x на W'NT/2000/etc — API тоже почистили.
                                                                                                                      А что именно там почистили? Я только про отказ от поддержки FCB знаю. Так FCB была к этому моменту уже 18 лет как deprecated. Хотя пользователи WordStar бузили, да.

                                                                                                                      IBM просто просрала рынок персональных компьютеров изначально — и потом ни разу не пыталась принять реальные шаги, способные сделать её лидером этого рынка.
                                                                                                                      Как это не пыталась? А OS/2 с ABIOS и прочее? Она пыталась. Но она как раз делала так, как вы предлагаете: «красиво» и «правильно». А людям нужно было «шоб работало».

                                                                                                                      Ну так и в Unix — оно не со всеми программами работает.
                                                                                                                      Жду примера.
                                                                                                                      Да хотя бы браузер, в котором вы этот текст набираете. Или вы каким-то образом Lynx к Хабру прикрутили?

                                                                                                                      А как тогда вводить их, если они будут отвергаться API?
                                                                                                                      У операционки — много компонент. API какого компонента будет отвергать такие имена?
                                                                                                                      Не так и много у PC DOS 1.0 компонент. Но Ok, INT 21h, AH=0Fh. Там проверка валидности имени осуществляется «на входе», до того, как передать FCB в файловую систему.

                                                                                                                      Вроде, мы вообще говорим о временах, когда API только создавался.
                                                                                                                      Нет. Мы говорим о временах, когда Microsoft писал операционку под уже существующий API.
                                                                                                                      CP-M API был воссоздан весьма тщательно, вплоть до CALL 5 интерфейса.

                                                                                                                      И вполне можно было сделать так, чтобы API верхнего уровня принимал такие имена, а дальше в файловую систему попадали только валидные для неё имена; а остальные попадали бы в систему обслуживания спец.файлов.
                                                                                                                      Всё так и было сделано — «правильными людьми» с «правильной технологией» в правильной OS. Про неё даже есть статья в Wikipedia! А пользователей… пользователей нету, да.

                                                                                                                      А тут вопрос не в умении делать программы. Чтобы люди хотели чего-то — в первую очередь нужен маркетинг.
                                                                                                                      Ваy! Расскажите же как в вашу вселенную, где все люди пользуются Windows Phone попасть — через червоточину или ещё как? Потому что в нашей вселенной маркетологи чёт ну никак не смогли справится с тем, чтобы это «правильную» OS кому-то впарить. Причём, что характерно, кривую, неправильную, ужасную «хрень» созданную под руководством Билла Гейтса и «настоящий», «правильно спроектированный», сделанный «по науке» Windows Phone — маркетологировали вот ровно те же самые люди… только в противоположным результатом. Притом что у них ещё и много миллирдов на рекламу было и куча лет опыта, чтобы понять как всё правильно маректологировать. Всё равно фиг вам вышел.

                                                                                                                      Как вариант — если для спец.файлов запрещены расширения, то двоеточие как раз влезает, и ещё два байта свободны.
                                                                                                                      Вот только это — всё равно ломает весь API. Потому что какой-нибудь IBM Pascal берёт от вас имя файла, обрезает его на 8 байт и безусловно к нему приписывает расширение. Ешё и ругается, зараза, когда вы пытаетесь больше одного символа перед двоеточием написать.

                                                                                                                      Понимаете — человек во многом при написании программ повторяет тот процесс, которым получился он сам. Выбирается всегда локально-оптимальное решение на основе того, что есть «здесь и сейчас». Мы с вами ходим на двух ногах (что, вообще говоря, дико неэффективно), потому что в тот момент, когда эволюция доковыляла до того, чтобы мозг смог эффективно обслуживать руки — все позвоночные уже были с четырьмя конечностями, других не было.

                                                                                                                      Точно так же и дизайн Windows XP был ограничен дизайном Windows 95, которой приходилось мириться с возможностями MS DOS, который был создан так, чтобы в нём можно было запускать программы для CP-M! Причём программы, написанные на ассмеблере (собственно дизайн 8086 был именно таким, потому что такая возможность в нём была изначально заложена).

                                                                                                                      И сделать так, чтобы фича, которая в CP-M была ограничена (только PIP использовать всякие CON: и LPT:) работала бы во всех программах без добавления в них особого, специального кода — было разумно. Это реально сделало PC DOS удобнее, чем CP-M! А что потом, через 37 лет — от этого будут страдать люди, копирующие файлик из комплекта OpenGL… об этом никто не думал… вернее кое-какие люди думали — и их даже немало было, но… их операционки «сошли с дистанции» и «потомства» не оставили…
                                                                                                                        –1
                                                                                                                        В коменда PIP слеши использовались для задания опций (как во многих программах DOS потом).
                                                                                                                        Т.е. автор CP/M взялся портировать что-то из Unix и не стал портировать форму задания ключей оттуда? Поразительная криворукость!

                                                                                                                        Вот только вы тем самым создали нечто, что не выглядит, как имя файла.
                                                                                                                        Ой, а почему оно «не выглядит»? Может, потму, что изначально был задан другой стандарт?
                                                                                                                        Ну так изначально надо было делать нормально!

                                                                                                                        Кстати, использовать приставку "/dev/" действительно слишком накладно. Ну, можно было двоеточие в конце — и изначально задать в стандарте «двоеточие означает устройство».
                                                                                                                        Правда, и тут засада: буква диска с двоеточием д.б. устройством, но оно не обозначает дискету в том смысле, в котором это делает "/dev/fda", которое предлагает читать содержимое дискеты посекторно.

                                                                                                                        Вы не забываете, что 32-битные программы вначале запускались в течении 6 лет поверх 16-битной операционки?
                                                                                                                        Это Вы про что? W'NT появилась задолго до W'95, не говоря уж про Win32s (приблуду, позволявшую запускать некоторые 32-битные программы на W'3.11).

                                                                                                                        А что именно там почистили {при переходе с W'9x на W'NT/2000/etc}?
                                                                                                                        Ну, например, жёстко пресекли привычку программ писать в системную директорию — надо писать в директорию юзера.

                                                                                                                        Как это не пыталась {принять реальные шаги, способные сделать её лидером рынка персональных компьютеров}? А OS/2 с ABIOS и прочее?
                                                                                                                        Ну так это было позорная попытка покушения на рынок с негодными средствами.

                                                                                                                        Ну, начнём с того, что OS/2 — это рынок операционок, а не персональных компьютеров. Т.е. изначально Вы привели пример, только подтверждающий мою т.з. — шаги были, но глупые.

                                                                                                                        Первое, что надо было делать — это отказываться от писюковой совместимости. Т.е. взять нормальный RISC-процессор типа ARM или MIPS. Сбросить тяжкое наследие совместимости, все эти «640 килобайт», дебильный BIOS и прочее. Одновременно — сбросить совместимость с вирусами.

                                                                                                                        Затем — желательно было делать операционку типа Unix. Т.е. — многопользовательскую и многозадачную. Работал же Unix на PDP-11 с её 128 KB RAM.

                                                                                                                        Крайне желательно — сделать компьютер с операционкой в ПЗУ. Микросхема ПЗУ — заменяемая, но не пробиваемая для вирусов.
                                                                                                                        Одновременно — делать компьютер таким, чтобы тот одинаково хорошо работал и с локальныи накопителями, и с сервером. Сразу же приготовить серверы в широком диапазоне — от дешёвого (ценой дешевле компьютера — за счёт отсутствия видеокарты и прочего ненужного серверу) до супермощного. Это позволит успешно атаковать рынок мелких контор на пять компьютеров — не надо будет бегать с дискетами. Сети тоже д.б. широкого диапазона — дешёвая в пределах комнаты, дорогая на большое здание, плюс возможность коммутации разных офисов по телефонной линии.

                                                                                                                        IBM же выбрала дурацкое решение: выпустила патентованную PS/2, но совместимую с писюками. Т.е. никто другой не работал на популярность платформы, но совместимость портила жизнь. И на этой PS/2 можно было запускать DOS — это работало на Билла Гейтса.
                                                                                                                        А OS/2 не слишком хорошо работала на компьютерах других производителей.

                                                                                                                        Да хотя бы браузер, в котором вы этот текст набираете. Или вы каким-то образом Lynx к Хабру прикрутили?
                                                                                                                        Вы как-то резко перешли от «I/O redirect в Unix» к Lynx и Хабру. Я не понял.

                                                                                                                        INT 21h, AH=0Fh. Там проверка валидности имени осуществляется «на входе», до того, как передать FCB в файловую систему.
                                                                                                                        Замечательно. Вот в этом месте и надо было изначально делать правильно — имена файлов одного типа передавать в файловую систему, другого типа — в драйверы. В Unix всё это есть, и именно так — правда, я не знаю, когда это сделали; и там не по имени определяют, а по типу файла.

                                                                                                                        Мы говорим о временах, когда Microsoft писал операционку под уже существующий API.
                                                                                                                        CP-M API был воссоздан весьма тщательно, вплоть до CALL 5 интерфейса.
                                                                                                                        Была ли в этом API работа со спец.файлами?
                                                                                                                        Я так понял — сец.файлы ввели потом. И на момент их введения — им надо было дать особые имена.

                                                                                                                        Всё так и было сделано — «правильными людьми» с «правильной технологией» в правильной OS.
                                                                                                                        Байт-код — в те времена не мог быть правильным решением.

                                                                                                                        Причём, что характерно, кривую, неправильную, ужасную «хрень» созданную под руководством Билла Гейтса и «настоящий», «правильно спроектированный», сделанный «по науке» Windows Phone — маркетологировали вот ровно те же самые люди… только в противоположным результатом.
                                                                                                                        Во-первых, те люди, которые выводили на рынок DOS и первые Windows — либо давно уволились, либо состарились. Т.е. — не те же самые люди, а другие.
                                                                                                                        Во-вторых, надо понимать, что DOS и первые Windows выводились на только что созданные или даже ещё не созданные рынки. А Windows Phone выводился на рынок, где уже вовсю работали другие игроки.
                                                                                                                        Но главное — при выходе на рынок смартфонов Билл Гейтс не имел поддержки от IBM. Т.е. никто не энфорсил выпуск телефонов именно под Windows Phone — а в честной конкуренции выиграть не удалось.

                                                                                                                        Windows сильна на рыке, который она захватила. Т.е. на рынке персональных компьютеров.
                                                                                                                        Windows имеет неплохие шансы на рынках, тесно связанных с рынком персональных компьютеров — это клавиатуры, мышки, ноутбуки, серверы.
                                                                                                                        Windows неплохо выступала на рынке смартфонов/планшетов/etc — но только пока эти устройства взаимодействовали с компьютером, а на компьютерах была Windows. Как только смартфоны/планшеты/etc стали самостоятельно выходить в сеть — Windows сдулась, ибо IBM или кто-то другой такого масштаба ей уже не помогала.

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

                                                                                                                        IBM Pascal берёт от вас имя файла, обрезает его на 8 байт и безусловно к нему приписывает расширение.
                                                                                                                        А зачем IBM Pascal собирается обращаться к спец.файлам? Правильно обрезает — для него имя файла д.б. валидным по меркам файловой системы!

                                                                                                                        И сделать так, чтобы фича, которая в CP-M была ограничена (только PIP использовать всякие CON: и LPT:) работала бы во всех программах без добавления в них особого, специального кода — было разумно.
                                                                                                                        Двоеточие потребует специального кода???
                                                                                                                          +2
                                                                                                                          В коменда PIP слеши использовались для задания опций (как во многих программах DOS потом).
                                                                                                                          Т.е. автор CP/M взялся портировать что-то из Unix и не стал портировать форму задания ключей оттуда? Поразительная криворукость!
                                                                                                                          Действительно — чего уж там. Увидев Unix на конференции (попробовать его в деле тогда ещё нельзя было) — Киндал должен быть срочно забыть про всё то, чем до этого пользовались десятилетиями и всё сделать как в Unix. «Забив» на привычки и опыт, конечно.

                                                                                                                          Вот только вы тем самым создали нечто, что не выглядит, как имя файла.

                                                                                                                          Ой, а почему оно «не выглядит»? Может, потму, что изначально был задан другой стандарт?
                                                                                                                          Ну так изначально надо было делать нормально!
                                                                                                                          А нормально — это как? Копируя интерфейс несуществующей системы? Вы, вообще, в курсе, что PIP — несколько постарше Unix'а будет? И в тот момент, когда Киндал решил его улучшить, позаимствовав пару идей из Unix уже имел десятилетний возраст?

                                                                                                                          Он должен был всё прям бросить и начать Unix копировать? Так такую операционку Microsoft тоже сделал! Только она не взлетела: очень дорого получилось из-за «космических» (по тем временам) требованиям к ресурсам.

                                                                                                                          Вы не забываете, что 32-битные программы вначале запускались в течении 6 лет поверх 16-битной операционки?
                                                                                                                          Это Вы про что? W'NT появилась задолго до W'95, не говоря уж про Win32s (приблуду, позволявшую запускать некоторые 32-битные программы на W'3.11).
                                                                                                                          Ну не так и «задолго» до Windows 95 появилась — на два года всего. Но главное — как раз Win32s и Windows95. Особенно Win32s. Они, как бы, работали «поверх» DOS — и потому были ограничены тем, что он умеет. А главное — на этих операционках использовалось много 16-битных программ, которые по-прежнему использовали PRN и CON. И было бы странно обнаружить, что в 16-битных версиях net use lpt: ... работает, а в 32-битных вдруг нет…

                                                                                                                          А что именно там почистили {при переходе с W'9x на W'NT/2000/etc}?
                                                                                                                          Ну, например, жёстко пресекли привычку программ писать в системную директорию — надо писать в директорию юзера.
                                                                                                                          Не очень-то это пресекли. Выстави права на каталог — и работай. Так и работали все. Под админом. Только в Windows Vista костыль подходящий завезли, чтобы это контролировать.

                                                                                                                          Ну, начнём с того, что OS/2 — это рынок операционок, а не персональных компьютеров.
                                                                                                                          Начнём с того, что вы так ни черта и не поняли. OS/2 и PS/2 изначально шли в паре. И были попыткой «переосмыслить» IBM PC/AT и сделать всё «как надо». И точно так же, как и «до того» были IBM OS/2 для «правильных» PS/2 и MS OS/2 для «всех остальных».

                                                                                                                          Вот только рынок «не оценил» всех глубин замысла.

                                                                                                                          Первое, что надо было делать — это отказываться от писюковой совместимости. Т.е. взять нормальный RISC-процессор типа ARM или MIPS. Сбросить тяжкое наследие совместимости, все эти «640 килобайт», дебильный BIOS и прочее. Одновременно — сбросить совместимость с вирусами.
                                                                                                                          Ну то есть разработать PReP и PC Power Series? И портировать туда OS/2?

                                                                                                                          Успех был таким «оглушительным», что вы, я думаю, даже не знаете об этой попытке всё сделать «правильно». Потому шта рынок на это посмотрел, подумал… и сказал, так веско, но внушительно: нам надо ШОБ РАБОТАЛО (в переводе на русский: а иде-ка вы со своими идеями… лесом).

                                                                                                                          Сразу же приготовить серверы в широком диапазоне — от дешёвого (ценой дешевле компьютера — за счёт отсутствия видеокарты и прочего ненужного серверу) до супермощного.
                                                                                                                          Видекарты там и не было. EGA — это Enhanced Graphics Adapter, а VGA — это Video Graphics Array — именно потому, что это была уже одна микросхема — и не очень дорогая.

                                                                                                                          А вот цену выставить дешевле, чем на PC никак не получалось, так как RISC-процессоры, заказные микросхемы и прочее — денег стоили, а тиражи были невелики. А с учётом того, что IBM тогда теряла деньги со страшной силой возможности продавать ниже себестоимости у неё тоже не было.

                                                                                                                          GSI и Sun, правда, провернули нечто похожее на ваши предложение — но тоже попали в ту же ловушку: какое-то время они могли конкурировать с рынком PC, но со временем x86 догнал их по производительности… и всё кончилось.

                                                                                                                          Да хотя бы браузер, в котором вы этот текст набираете. Или вы каким-то образом Lynx к Хабру прикрутили?
                                                                                                                          Вы как-то резко перешли от «I/O redirect в Unix» к Lynx и Хабру. Я не понял.
                                                                                                                          Как в Unix, так и в MS-DOS перенаправление отлично работает для всех программ, которые используют функции работы с консолью. И не работает для всех остальных. И также, как в MS DOS народ пользовался не «православным» dBase II, в который можно было перенапрвлять что угодно, а «богомерзким» FoxPro, который эти механизмы не поддерживал — так же в и Unix люди пользуются на «православным» Lynx'ом, а «ужасными» Chrome и Firefox'ом. Более того, на Хабр запостить ничего из Lynx'а нельзя — так что вы точно тем же «грехом» страдаете.

                                                                                                                          INT 21h, AH=0Fh. Там проверка валидности имени осуществляется «на входе», до того, как передать FCB в файловую систему.
                                                                                                                          Замечательно. Вот в этом месте и надо было изначально делать правильно — имена файлов одного типа передавать в файловую систему, другого типа — в драйверы. В Unix всё это есть, и именно так — правда, я не знаю, когда это сделали; и там не по имени определяют, а по типу файла.
                                                                                                                          А стоило бы узнать. Они это сделали за счёт добавления флага в структуру stat, но, основное и главное, за счёт наличия жёсткого диска. То есть ядро сначала обращается к файлу, узнаёт, что это — не файл, а специальное устройство, а потом уже идёт в ядро.

                                                                                                                          А CP/M и DOS 1.0 должны были работать на системе без жёсткого диска, только с флопами. Которые, как бы, нужно было руками менять, чтобы добраться до файлов на системном диске. Потому «внезапное» предложение сменить диск при выдаче команды copy con file.txt только для того, чтобы посмотреть на файл con и понять, что он вам не нужен — никого бы не обрадовало.

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

                                                                                                                          Мы говорим о временах, когда Microsoft писал операционку под уже существующий API.
                                                                                                                          CP-M API был воссоздан весьма тщательно, вплоть до CALL 5 интерфейса.
                                                                                                                          Была ли в этом API работа со спец.файлами?
                                                                                                                          Не было — и это, как раз, и было проблемой. В CP/M (как и в операционках 60х) спецфайлы существовали в программе PIP — и больше нигде. А MS-DOS — взял из Unix интересную идею (сделать драйвера разновидностью файлов) и добавил их в уже существовавший API CP/M.

                                                                                                                          И на момент их введения — им надо было дать особые имена.
                                                                                                                          В момент их введения — было уже поздно давать им особые имена, так как API уже был и программы, написанные под него уже тоже были. Хотя операционки ещё и не было. Вот такой парадокс.

                                                                                                                          Всё так и было сделано — «правильными людьми» с «правильной технологией» в правильной OS.
                                                                                                                          Байт-код — в те времена не мог быть правильным решением.
                                                                                                                          Я, если честно, считаю, что они никогда не может быть правильным решением, но «правильные пацаны» считают иначе. Не только UCSD p-System, но и Texas Instruments и Wang считали — что это «то, что надо».

                                                                                                                          Все они, конечно, сгинули, не оставив потомства, но… это мнение «правильных пацанов» не изменило.

                                                                                                                          Во-первых, те люди, которые выводили на рынок DOS и первые Windows — либо давно уволились, либо состарились. Т.е. — не те же самые люди, а другие.
                                                                                                                          PC DOS «на рынок» никто из Microsoft не выводил. Этим IBM занималась. А для продвижения MS-DOS и Windows был нанят маркетолог. Один маркетолог: Стив Баллмер. Который был как раз CEO Microsoft во время ужасного фиаско Windows Phone.

                                                                                                                          Во-вторых, надо понимать, что DOS и первые Windows выводились на только что созданные или даже ещё не созданные рынки. А Windows Phone выводился на рынок, где уже вовсю работали другие игроки.
                                                                                                                          Вы это серьёзно? Архитектура IBM PC завоевала первое место по популярности только примерно к 1984му. И первое место — это не 90 процентов с гаком, а где-то 30% (чуть меньше было у C64, дальше Apple ][ и так далее). После чего Apple «совершила революцию» со своими маками и потребовалось что-то с этим делать. Ну вот точь-в-точь ситуация как со смартфонами и iPhone.

                                                                                                                          Однако подумать — не значит сделать. Первые Windows провалились с треском. И стало понятно, что «нужна смена парадигмы». Но когда она произошла, то Bill Gates, понимающий до копчика что такое «обратная совместимость» порвал с IBM и выпустил Windows 3.0, в которой можно было даже запускать программы от Windows 1.0 (написанные во времена, когда о защищённом режиме никто и не мечтал), а IBM — выпустила сначала «правильно спроектированную» связку OS/2 и PS/2 (несовместимую с программами Windows 1-2 и плохо совместимую с тогдашними программами для PC DOS), а когда это не помогло — затеяла PReP. Всё точь-в-точь как Microsoft с Windows Phone.

                                                                                                                          С тем же результатом: жалкая кучка яростных фанатов — и дыра в кошельке. Как Microsoft под руководством «настоящих гуру» проделал тот же финт ушами и почему — я не знаю, но это точно было не с подачи маркетологов.

                                                                                                                          Как только смартфоны/планшеты/etc стали самостоятельно выходить в сеть — Windows сдулась, ибо IBM или кто-то другой такого масштаба ей уже не помогала.
                                                                                                                          А ничего в 90е, когда Microsoft выиграла битву за десктоп «IBM или кто-то другой такого масштаба» был с другой стороны баррикад?

                                                                                                                          А вот опыт здесь только вредил. Потому что это был опыт работы на уже покорённом рынке.
                                                                                                                          Ага. Работа «только на покорённом рынке». У человека, который был первым и долгое время единственным маркетологом в Microsoft. А кто ж до него этот рынок покорил, если маркетингом только он начал заниматься, извините? Какой, вообще, рынок Microsoft к 1980му году покорил?

                                                                                                                          IBM Pascal берёт от вас имя файла, обрезает его на 8 байт и безусловно к нему приписывает расширение.
                                                                                                                          А зачем IBM Pascal собирается обращаться к спец.файлам? Правильно обрезает — для него имя файла д.б. валидным по меркам файловой системы!
                                                                                                                          Браво, ура! Возьмите с полки пирожок… а потом положите на место. Ибо IBM Pascal хочет обращаться к файлам, да, всё верно — а вот пользователь часто хочет увидеть ошибки либо на экране, либо на принтере. И, вуаля, MS DOS это позволяет (указываете PRN, который PAS1.EXE превратит в PRN.TXT — и смотрите на ваши ошибки на принтере), а другие операционки — так не умеют.

                                                                                                                          И сделать так, чтобы фича, которая в CP-M была ограничена (только PIP использовать всякие CON: и LPT:) работала бы во всех программах без добавления в них особого, специального кода — было разумно.
                                                                                                                          Двоеточие потребует специального кода???
                                                                                                                          Конечно. Вот тот самый IBM Pascal, изначально заточенный под CP/M, проиyтерпретирует двоеточие как указание на имя диска. И, скорее всего, не допустит имя состоящее из более, чем одного символа перед двоеточием. А даже если допустит — то неизвестно что с ним сделает.
                                                                                                                            0
                                                                                                                            В коменда PIP слеши использовались для задания опций (как во многих программах DOS потом).

                                                                                                                            Т.е. автор CP/M взялся портировать что-то из Unix и не стал портировать форму задания ключей оттуда? Поразительная криворукость!

                                                                                                                            Действительно — чего уж там. Увидев Unix на конференции (попробовать его в деле тогда ещё нельзя было) — Киндал должен быть срочно забыть про всё то, чем до этого пользовались десятилетиями и всё сделать как в Unix. «Забив» на привычки и опыт, конечно.


                                                                                                                            Ребят, вы чего? Что сейчас началось-то? Причем тут ваш драный Unix? (тихо-тихо, шучу).
                                                                                                                            PIP — это из RSX-11M с PDP (ОСРВ СМ-1420), там ключи как раз были с виндовыми слешами, в том числе и в пипе.
                                                                                                                            Windows NT (OS/2 NT точнее) много имеет из VAX/VMS, который «стоит на» RSX. Тут получается «ромбовидное множественное наследование» — из RSX Килдал перенес ключи в CP/M, оттуда они попали в MS-DOS, оттуда — в Windows; из RSX — в VMS, оттуда — в NT.
                                                                                                                              0
                                                                                                                              Ребят, вы чего? Что сейчас началось-то?
                                                                                                                              Не обращайте внимание. Karpion — это местный гений. Который «так видит». А что и как там устроено в реальности — его мало волнует.
                                                                                                                              0
                                                                                                                              Так еще, из исходников PIP в CP/M: (кто не в курсе — CP/M написан на ЯВУ)
                                                                                                                              /* CHECK FOR DISK NAME OR DEVICE NAME */
                                                                                                                              IF CHAR = ':' THEN
                                                                                                                              DO; IF DISK <> 0 THEN RETURN; /* ALREADY SET */
                                                                                                                              IF FLEN = 1 THEN
                                                                                                                              /* MAY BE DISK NAME A ... Z */
                                                                                                                              DO;
                                                                                                                              IF (DISK := GETFCB(1) - 'A' + 1) > 26 THEN
                                                                                                                              /* ERROR, INVALID DISK NAME */ RETURN;
                                                                                                                              CALL DEBLANK; /* MAY BE DISK NAME ONLY */
                                                                                                                              IF DELIMITER(CHAR) THEN
                                                                                                                              DO; IF CHAR = LB THEN
                                                                                                                              CALL SCANPAR;
                                                                                                                              CBP = CBP - 1;
                                                                                                                              TYPE = DISKNAME;
                                                                                                                              RETURN;
                                                                                                                              END;
                                                                                                                              END; ELSE

                                                                                                                              /* MAY BE A THREE CHARACTER DEVICE NAME */
                                                                                                                              IF FLEN <> 3 THEN /* ERROR, CANNOT BE DEVICE NAME */
                                                                                                                              RETURN; ELSE

                                                                                                                              /* LOOK FOR DEVICE NAME */
                                                                                                                              DO; DECLARE (I,J,K) BYTE, M LITERALLY '20',
                                                                                                                              IO(*) BYTE DATA
                                                                                                                              ('INPIRDPTRUR1UR2RDROUTLPTUL1PRNLST',
                                                                                                                              'PTPUP1UP2PUNTTYCRTUC1CONNULEOF',0);
                                                                                                                                0
                                                                                                                                Увидев Unix на конференции (попробовать его в деле тогда ещё нельзя было) — Киндал должен быть срочно забыть про всё то, чем до этого пользовались десятилетиями и всё сделать как в Unix.
                                                                                                                                Вообще-то, Unix был примерно на десять лет старше, чем CP/M. И это если не учитывать предшественников Unix'а. Т.е. десять лет можно был пощупать, как делать правильно.

                                                                                                                                А нормально — это как? Копируя интерфейс несуществующей системы?
                                                                                                                                Нормально — это как в Unix, который уже десять лет как существовал.

                                                                                                                                В Unix есть cp, cpio, dd — вот их и надо было копировать.

                                                                                                                                Ну не так и «задолго» до Windows 95 появилась — на два года всего.
                                                                                                                                По тем временам «два года» — это очень много. А разработка началась ещё раньше.

                                                                                                                                А главное — на этих операционках использовалось много 16-битных программ, которые по-прежнему использовали PRN и CON. И было бы странно обнаружить, что в 16-битных версиях net use lpt:… работает, а в 32-битных вдруг нет…
                                                                                                                                Я уже говорил, что можно было бы оставить старый API для 16-битных программ и не тащить это в 32-битный API.
                                                                                                                                А использование «lpt:» никак не конфликтует с именами файлов — там же двоеточие!

                                                                                                                                Начнём с того, что вы так ни черта и не поняли. OS/2 и PS/2 изначально шли в паре.
                                                                                                                                Спс, я в курсе.

                                                                                                                                И были попыткой «переосмыслить» IBM PC/AT и сделать всё «как надо».
                                                                                                                                А вот ни фига — это как раз было попыткой сделать через афедрон. Собственно, поэтому рынок и не оценил попытку продать геморрой за деньги.

                                                                                                                                Ну то есть разработать PReP и PC Power Series? И портировать туда OS/2?
                                                                                                                                Ну, можно было что-то разработать. Или взять готовое.
                                                                                                                                И не портировать туда OS/2, а изначально делать для этой архитектуры. Или ещё лучше — делать мультиплатформенно.

                                                                                                                                Потому шта рынок на это посмотрел, подумал… и сказал, так веско, но внушительно: нам надо ШОБ РАБОТАЛО
                                                                                                                                Как ни странно — но Биллу Гейтсу рынок этого не говорил, а покорно прогибался под необходимость танцевать с бубном.

                                                                                                                                Видекарты там и не было. EGA — это Enhanced Graphics Adapter, а VGA — это Video Graphics Array — именно потому, что это была уже одна микросхема — и не очень дорогая.
                                                                                                                                Ок, заменю это на «видеоподсистемы». Впрочем, видеоподсистему на сервере можно было иметь — но текстовую, ничего больше там не надо. Ну и штатную возможность подключения к консоли через сеть (с вводом пароля) или через COM-порт (без ввода пароля — и даже если сервер работает со сбоями, из-за чего сеть недоступна).

                                                                                                                                GSI и Sun, правда, провернули нечто похожее на ваши предложение — но тоже попали в ту же ловушку: какое-то время они могли конкурировать с рынком PC, но со временем x86 догнал их по производительности… и всё кончилось.
                                                                                                                                GSI и Sun попали в другую ловушку — никто не догадался записать операционку в ПЗУ и облегчить цену системы на стоимость жёсткого диска.

                                                                                                                                Как в Unix, так и в MS-DOS перенаправление отлично работает для всех программ, которые используют функции работы с консолью.
                                                                                                                                Шо???
                                                                                                                                Ни в Unix, ни в DOS — перенаправляемый вывод не позволяет нормально работать с консолью. Нормально — это менять цвет текста, перемещать курсор, etc. Такая работа через перенаправляемый вывод была только в Acorn; но перенаправление там было сделано немного совсем не так.
                                                                                                                                В DOS всё это доступно через BIOS API — а он неперенаправляемый.

                                                                                                                                так же в и Unix люди пользуются на «православным» Lynx'ом, а «ужасными» Chrome и Firefox'ом
                                                                                                                                Почему это Lynx — «православный»?

                                                                                                                                ядро сначала обращается к файлу, узнаёт, что это — не файл, а специальное устройство, а потом уже идёт в ядро.
                                                                                                                                Вы сами свои слова поняли?
                                                                                                                                Ядро не может обратиться к файлу. Ядро может обратиться к программе — например, к драйверу файловой системы.
                                                                                                                                А понять «потом ядро уже идёт в ядро» — я так и не осилил.

                                                                                                                                А в современном FreeBSD на каталог /dev вообще смонтирована специальная файловая система — devfs. Нормальных файлов там быть не может, только специальные. Хотя старый механизм всё ещё работает.

                                                                                                                                А CP/M и DOS 1.0 должны были работать на системе без жёсткого диска, только с флопами. Которые, как бы, нужно было руками менять, чтобы добраться до файлов на системном диске. Потому «внезапное» предложение сменить диск при выдаче команды copy con file.txt только для того, чтобы посмотреть на файл con и понять, что он вам не нужен — никого бы не обрадовало.
                                                                                                                                Вот тут как раз механизм devfs очень пригодился бы.

                                                                                                                                Потому было принято простое решение: драйвера названия своих устройств складывают в простую табличку и что там есть — то драйвер, чего нет — то не драйвер.
                                                                                                                                А есть ещё более простое решение, которое даже таблички не требует (правда, табличка всё равно потребуется — но позже): записывать имена спец.файлов в особом формате; таком, что таких имён файлов дна диске быть не может.

                                                                                                                                А MS-DOS — взял из Unix интересную идею (сделать драйвера разновидностью файлов) и добавил их в уже существовавший API CP/M.
                                                                                                                                И, как обычно — сделал это рукожопо.
                                                                                                                                Последний пример аналогичного рукожопства был со Skype.

                                                                                                                                В момент их введения — было уже поздно давать им особые имена, так как API уже был и программы, написанные под него уже тоже были.
                                                                                                                                И чем этот уже существующий API мешал дать спец.файлам особые имена?

                                                                                                                                Я, если честно, считаю, что они никогда не может быть правильным решением, но «правильные пацаны» считают иначе.
                                                                                                                                Байт-код хорош тогда, когда надо обеспечить выполнение программного кода на машине, которая не доверяет источнику этого кода. В частности — когда браузер загружает с сайта программу и выполняет её в себе.
                                                                                                                                Ибо байт-код позволяет быть уверенным, что внутри него не будет выполняться что-то плохое типа обращения за границу выделенной для него памяти.

                                                                                                                                А для продвижения MS-DOS и Windows был нанят маркетолог. Один маркетолог: Стив Баллмер. Который был как раз CEO Microsoft во время ужасного фиаско Windows Phone.
                                                                                                                                Во-первых, Стив Баллмер уже состарился. Во-вторых, он так и не понял, что новый рынок — совершенно не похож на тот рынок, куда он выводил MS-DOS и Windows.

                                                                                                                                Вы это серьёзно?
                                                                                                                                Да. Потому что тогда рынок персональных компьютеров быстро рос. Так быстро, как не рос никакой другой рынок.
                                                                                                                                Впрочем, возможно, какие-то рынки когда-то давно тоже были в таком состоянии — например, рынок автомобилей в начале 20-го века (точные годы назвать не берусь).

                                                                                                                                IBM — выпустила сначала «правильно спроектированную» связку OS/2 и PS/2
                                                                                                                                В том-то и дело, что эта связка была спроектирована катастрофически неверно. В частности, для неё локальный HDD был родным, а сеть — чуждой. Это видно по тому, что для работы с сетью надо загрузить программы с локального HDD.

                                                                                                                                А ничего в 90е, когда Microsoft выиграла битву за десктоп «IBM или кто-то другой такого масштаба» был с другой стороны баррикад?
                                                                                                                                А ничего, что IBM в тот момент выпускала PC-совместимые компьютеры?

                                                                                                                                У человека, который был первым и долгое время единственным маркетологом в Microsoft.
                                                                                                                                Люди с возрастом меняются. Стив Баллмер имел опыт создания нового рынка на фактически пустом месте — но опыт давний. Стив Баллмер имел опыт продвижения новых продуктов на уже захваченном рынке. Но опыта войны против превосходящего противника — у него не было.

                                                                                                                                К тому же на рынке мобильных вычислений — на стороне MS не было IBM, которая за свои деньги разработала бы аппаратную составляющую и бесплатно раздала бы её всем желающим для копирования.

                                                                                                                                Ибо IBM Pascal хочет обращаться к файлам, да, всё верно — а вот пользователь часто хочет увидеть ошибки либо на экране, либо на принтере. И, вуаля, MS DOS это позволяет (указываете PRN, который PAS1.EXE превратит в PRN.TXT — и смотрите на ваши ошибки на принтере), а другие операционки — так не умеют.
                                                                                                                                Если IBM Pascal открывает конкретный файл и что-то туда пишет — Вы никакими средствами (ну, разве что особо извращёнными — типа резидентных программ с перехватом функций/прерываний) не получите его вывод на экран или принтер.
                                                                                                                                Правда, если IBM Pascal согласен взять имя этого файла от пользователя (спросить интерактивно или взять из конфига) — то ему можно подсунуть имя типа «con». Всё отлично. Ну и что мешает подсунуть ему имя "«con:»? В восемь байт — влезает, расширение можно игнорировать.

                                                                                                                                Вот тот самый IBM Pascal, изначально заточенный под CP/M, проиyтерпретирует двоеточие как указание на имя диска.
                                                                                                                                Имя диска — состоит из одной буквы. Значит, если там много букв — то это имя устройства.
                                                                                                                                Ну ладно, не нравится двоеточие — можно взять другой символ. Например, "^", "#" или "@" ничем не хуже.
                                                                                                                                  0
                                                                                                                                  А использование «lpt:» никак не конфликтует с именами файлов — там же двоеточие!

                                                                                                                                  Использование CON, PRN, LPT1, COM1 тоже никак не конфликтует — мы говорим о ряде операционных систем, где 99% файлов имеют расширение через точку.

                                                                                                                                  Вообще-то, Unix был примерно на десять лет старше, чем CP/M. И это если не учитывать предшественников Unix'а. Т.е. десять лет можно был пощупать, как делать правильно.

                                                                                                                                  Что Килдал и сделал — он взял стилистику RSX, которая того же возраста. Это просто другая «экосистема».

                                                                                                                                  Шо???
                                                                                                                                  Ни в Unix, ни в DOS — перенаправляемый вывод не позволяет нормально работать с консолью. Нормально — это менять цвет текста, перемещать курсор, etc.

                                                                                                                                  Для этого в MS-DOS'е предназначен драйвер ansi.sys и используются escape последовательности.
                                                                                                                                  А есть ещё более простое решение, которое даже таблички не требует (правда, табличка всё равно потребуется — но позже): записывать имена спец.файлов в особом формате; таком, что таких имён файлов дна диске быть не может.

                                                                                                                                  См. первый ответ. Тут MS даже сделал гибче, чем надо было.

                                                                                                                                  А ничего, что IBM в тот момент выпускала PC-совместимые компьютеры?

                                                                                                                                  Всего-навсего как один из игроков, пытающийся к тому же продвинуть свою систему. Так что все верно — по другую сторону.
                                                                                                                                    0
                                                                                                                                    Использование CON, PRN, LPT1, COM1 тоже никак не конфликтует
                                                                                                                                    Эти имена плохи тем, что они удовлетворяют формату имён файловой системы;, что они — не обычные файлы, а особые, надо знать список. При этом — в DOS список мог произвольно дополняться. Конфликт — как раз в том, что имена перекрывались.

                                                                                                                                    Мне кажется правильным решением использовать имена, начинающиеся со спец.символа типа "@", "#" и им подобных; или заканчивающиеся на такой символ.
                                                                                                                                    Похоже, в CP/M сделать такое было малореально. А вот в DOS — уже вполне можно было.

                                                                                                                                    Для этого в MS-DOS'е предназначен драйвер ansi.sys и используются escape последовательности.
                                                                                                                                    Я в курсе. Однако, большинство машин не имели его в автозагрузке (в т.ч. и для экономии памяти); а загружать и выгружать его по мере необходимости было невозможно.

                                                                                                                                    Тут была типичная проблема: Пользователи не заружают его потому, что практически нет программ, которые его используют. А программисты не пишут программы, которые работают через ANSI — потому что знают, что пользователи не любят загружать его.

                                                                                                                                    Хорошим решением было бы поместить этот драйвер в BIOS. Но биосописатели — это те ещё криворукие моральные уроды: они даже когда делали BIOS с поддержкой мыши, и то не дали его драйвер в DOS, и приходилось загружать драйвер мыши отдельно.

                                                                                                                                    Тут MS даже сделал гибче, чем надо было.
                                                                                                                                    А вот не надо было гибче!
                                                                                                                                    Вот пример вредной гибкости: Операционку, записанную на HDD, можно изменять, апгрейдить, патчить. Но первыми этой гибкостью пользуются вирусы. Вторыми — криворукие юзеры, сносящие систему. А операционка в ПЗУ — не гибкая, и это хорошо.
                                                                                                                                    Другой пример — перезаписываемый BIOS и вирус «Чернобыль». В афедрон такую гибкость!

                                                                                                                                    Всего-навсего как один из игроков, пытающийся к тому же продвинуть свою систему. Так что все верно — по другую сторону.
                                                                                                                                    У Вас странные представвления о «другой стороне».

                                                                                                                                    Если бы IBM реально хотела завалить MS — она бы для начала выпустила полностью бесплатный DOS и этим подорвала бы экономику MS. Потому что без денег от продажи DOS — было бы намного труднее делать Windows.
                                                                                                                                    Кроме того, надо было продвигать на рынок альтернативные компьютеры, несовместимые с DOS и Windows. Ибо чем меньше компьютеров под поделия Билла Гейтса — тем меньше продажи его программ. Ну и предоставить спецификации этой альтернативной платформы всем желающим — правда, не задаром, а за мелкий прайс.
                                                                                                                                    Ну и было необходимо менять парадигму использования компьютера — от модели «автономный компьютер единоличного использования» переходить к сетевой модели пользования и к коллективному использованию компьютера (эти два подхода особенно хороши вместе).

                                                                                                                                    iRL же тогдашняя война IBM и MS была похожа на нынешнюю войну РФ и Украины — когда военные действия перемежаются с торговлей и другим сотрудничеством, а воюющие стороны называют друг друга «уважаемые партнёры». Или на войну США против терроризма — когда США практически открыто поставляют террористам оружие.
                                                                                                                                      +1
                                                                                                                                      Эти имена плохи тем, что они удовлетворяют формату имён файловой системы;, что они — не обычные файлы, а особые, надо знать список.
                                                                                                                                      Однако этим же они и хороши: вы могли использовать программы, написанные задолго до появления этих файлов и всё работало. И да — люди этим пользовались. И сейчас пользуются.

                                                                                                                                      Мне кажется правильным решением использовать имена, начинающиеся со спец.символа типа "@", "#" и им подобных; или заканчивающиеся на такой символ.
                                                                                                                                      Примерно как ~1 в Windows95. Да — тут можно можно согласиться. Однако мешал всё тут же CP/M и его PIP. В нём-таки использовались имена вида prn: с двоеточием на конце — пусть и только в программе PIP. PC DOS эту идею изящно расширил: в каком-нибудь PC DOS 2.1 можно было написать copy con: text.txt: — и это отлично работало! То есть «лишнее» двоеточие просто игнорировалось. Вместо этого можно было бы потребовать чтобы всё работало с файлами вида prn: или, скажем, prn# — но… несколько байт решили съэконмить. То есть примерно та же история, что и со скрытыми файлами в любимим вами Unix'е.

                                                                                                                                      Да, так бывает.

                                                                                                                                      Но биосописатели — это те ещё криворукие моральные уроды: они даже когда делали BIOS с поддержкой мыши, и то не дали его драйвер в DOS, и приходилось загружать драйвер мыши отдельно.
                                                                                                                                      А это уже тяжкое наследие совместимости: DOS не предоставляет для BIOS способов передать ему драйвер мыши. Были системы, которые так умели: Amiga, RiscOS… но мы знаем что с ними произошло…

                                                                                                                                      Вот пример вредной гибкости: Операционку, записанную на HDD, можно изменять, апгрейдить, патчить. Но первыми этой гибкостью пользуются вирусы.
                                                                                                                                      Нет. Первыми этим пользуются разработчики железа. Пресловутая Amiga 1000 не зря грузила операцинку с флопа: иначе компьютер нельзя было бы начать продавать 23 июля 1985го.

                                                                                                                                      Кстати и RiscPC, несмотря на то, что имела операционку в ROM'е позволяла её апгрейдить. Ибо к моменту выхода компьютера не было возможности всё довести до ума. Это было верно в 80е так же, как и сегодня… просто флопы делать чуть сложнее, чем апдейт выложить на сайт — но всё равно гораздо проще, чем отзывать железо и менять микросхемы (как Amaga требует делать — только первая версия всё грузила с флопа… потом сделали как вы предлагаете… пришлось выпускать обновки в виде микросхем… они до сих пор, кстати, продаются).

                                                                                                                                      Другой пример — перезаписываемый BIOS и вирус «Чернобыль»
                                                                                                                                      Увы, но это банально дешевле. А покупатели денежки считать умеют хорошо, да.

                                                                                                                                      Если бы IBM реально хотела завалить MS — она бы для начала выпустила полностью бесплатный DOS и этим подорвала бы экономику MS.
                                                                                                                                      … если бы успела что-то сделать до того, как её разделили бы на части. Вы не забыли, что IBM в это время только-только сумела отбиться от DOJ, который собирался наложить на неё очень серьёзные санкции (вплоть до разделения на несколько компаний) за нечто подобное. Ей только-только удалось отбиться от US (в 1982м) и от Еврокомиссии — и вы предлагаете тут же развернуться и повторить?

                                                                                                                                      Кроме того, надо было продвигать на рынок альтернативные компьютеры, несовместимые с DOS и Windows.
                                                                                                                                      Пробовали. Не получилось. Ни до, ни после. Вы никогда не задумывались над тем почем IBM PC имела номер 5150? А потому что маркетинг продвигал её как потомок IBM 5100 — который никому не сдался ни для чего. А ещё у IBM были RS/6000.

                                                                                                                                      Вот только программы для CP/M и DOS там не работали и потому их не покупали.

                                                                                                                                      Ну и предоставить спецификации этой альтернативной платформы всем желающим — правда, не задаром, а за мелкий прайс.
                                                                                                                                      А это уже PS/2 и PReP.

                                                                                                                                      Ну и было необходимо менять парадигму использования компьютера — от модели «автономный компьютер единоличного использования» переходить к сетевой модели пользования и к коллективному использованию компьютера (эти два подхода особенно хороши вместе).
                                                                                                                                      А ничего, что именно компьютеры, работающие по этой модели приносили тогда IBM почти всю прибыль? Вам слова IBM 3270 что-нибудь говорят? Что было бы с ними, если бы IBM выпустила то, о чём вы говорите и мейнфреймы стали бы никому не нужны? Их продажи и без того сокращались, IBM быстро приближалась к своим миллиардным убыткам — а вы предлагаете этот процесс ещё ускорить?

                                                                                                                                      iRL же тогдашняя война IBM и MS была похожа на нынешнюю войну РФ и Украины — когда военные действия перемежаются с торговлей и другим сотрудничеством, а воюющие стороны называют друг друга «уважаемые партнёры».
                                                                                                                                      А в бизнесе всегда так. Резкие движения скорее учнитожать тебя, чем того, кого ты пытаешься атаковать. Тот же Microsoft с Windows и Apple со своими маками однозанчно воевали всерьёз — однако при этом Microsoft был крупнейшим ISV для Маков! Первая версия Excel под Windows так и не вышла!

                                                                                                                                      Да и потом: партнёрами они были до выхода Windows 3.0 в 1990м. После этого — всё, дорожки разошлись. А пересаживание людей на Windows только-только начиналось.
                                                                                                                                        –1
                                                                                                                                        Однако этим же они и хороши: вы могли использовать программы, написанные задолго до появления этих файлов и всё работало.
                                                                                                                                        Много ли было программ, которые не могли открыть файл с именем «prn:» (которое вовсе не то, что «prn»)? Многие ли программы проверяли имя файла не обращением в операционку, а сами?
                                                                                                                                        Ну а если программист проверяет имя файла на неверный шаблон — это его личное дело. Мало ли неверно написанных программ?

                                                                                                                                        Примерно как ~1 в Windows95.
                                                                                                                                        Это туи при чём? Тильда — вполне легальный символ, такие имена могли появиться и при работе DOS.

                                                                                                                                        То есть «лишнее» двоеточие просто игнорировалось.
                                                                                                                                        Вот это и было неправильным!

                                                                                                                                        но… несколько байт решили съэконмить.
                                                                                                                                        Вообще-то — распознавание спец.файла по двоеточию в имени гораздо более экономно.

                                                                                                                                        То есть примерно та же история, что и со скрытыми файлами в любимим вами Unix'е.
                                                                                                                                        Ничего общего: эти скрытые имена — никак не мешают существованию файлов с любым именем!

                                                                                                                                        А это уже тяжкое наследие совместимости: DOS не предоставляет для BIOS способов передать ему драйвер мыши.
                                                                                                                                        Вы делаете мне смешно. Ну, расскажите, каким образом DOS вообще работает с мышью. Ой, оказывается, сам DOS — вообще никак! Это делают программы, вызывающие мышиный INT (номер не помню)! Ну и кто же мешает BIOS'у перехватить этот INT?

                                                                                                                                        Были системы, которые так умели: Amiga, RiscOS…
                                                                                                                                        Шо??? В RiscOS — не было ни DOS, ни BIOS! Про Amiga — не знаю.

                                                                                                                                        Пресловутая Amiga 1000 не зря грузила операцинку с флопа: иначе компьютер нельзя было бы начать продавать 23 июля 1985го.
                                                                                                                                        Почему нельзя? Может, закон запрещал? Может, там ещё и дисковод был обязательный?

                                                                                                                                        Кстати и RiscPC, несмотря на то, что имела операционку в ROM'е позволяла её апгрейдить.
                                                                                                                                        Но вирус — «апгрейдить» операционку не мог. Ой, странно-то как…

                                                                                                                                        всё равно гораздо проще, чем отзывать железо и менять микросхемы
                                                                                                                                        Отзывать железо не надо — менять микрохемы могут и сами юзеры.

                                                                                                                                        Увы, но это банально дешевле. А покупатели денежки считать умеют хорошо, да.
                                                                                                                                        Я так понимаю, убытки от окирпичивания материнок покупатели посчитать забыли.

                                                                                                                                        если бы успела что-то сделать до того, как её разделили бы на части.
                                                                                                                                        За бесплатный выпуск операционки?
                                                                                                                                        Ой, не проблема: создаём отдельную фирму, и она выпускает.

                                                                                                                                        IBM в это время только-только сумела отбиться от DOJ, который собирался наложить на неё очень серьёзные санкции (вплоть до разделения на несколько компаний)
                                                                                                                                        Ну так и надо было разделиться — и работать совместно.

                                                                                                                                        А потому что маркетинг продвигал её как потомок IBM 5100 — который никому не сдался ни для чего. А ещё у IBM были RS/6000.
                                                                                                                                        У IBM вообще было много архитектур, не все были удачные. И что?

                                                                                                                                        Вот только программы для CP/M и DOS там не работали и потому их не покупали.
                                                                                                                                        Я что-то сильно сомневаюсь, что «программы для CP/M и DOS» имели столь решающее значение. Тут в первую очередь важно то, что компьютеры этой архитектуры выпускают много фирм.

                                                                                                                                        А это уже PS/2 и PReP.
                                                                                                                                        PS/2 — работала на MS, т.к. на ней работали DOS и Windows. PReP — вот тут судить не берусь.

                                                                                                                                        А ничего, что именно компьютеры, работающие по этой модели приносили тогда IBM почти всю прибыль?
                                                                                                                                        А я думал — что основную прибыль IBM получала от мэйнфреймов коллективного доступа.

                                                                                                                                        Вам слова IBM 3270 что-нибудь говорят?
                                                                                                                                        Это вообще не компьютер — это терминал, никому не нужный без мейнфрейма…

                                                                                                                                        Что было бы с ними, если бы IBM выпустила то, о чём вы говорите и мейнфреймы стали бы никому не нужны?
                                                                                                                                        С кем «с ними»? С терминалами? Да и фиг с ними.
                                                                                                                                        А мейнфреймы остались бы там, где были. Ну или стали бы терять позиции — так же, как и под натиском писюков.

                                                                                                                                        А в бизнесе всегда так. Резкие движения скорее учнитожать тебя, чем того, кого ты пытаешься атаковать.
                                                                                                                                        Расскажите это Novell — которую MS убила сетевыми возможностями сначала W'3.11, а потом W'NT!

                                                                                                                                        Да и потом: партнёрами они были до выхода Windows 3.0 в 1990м. После этого — всё, дорожки разошлись. А пересаживание людей на Windows только-только начиналось.
                                                                                                                                        Войну надо было начинать раньше. Но видимо, Билла Гейтса прикрывала мама. А потом уже было поздно.
                                                                                                                                          +1
                                                                                                                                          За бесплатный выпуск операционки?
                                                                                                                                          Ой, не проблема: создаём отдельную фирму, и она выпускает.

                                                                                                                                          Вас не затруднит вспомнить недавнее прошлое — Windows 95, встроенный Internet Explorer, вотэтовсё.
                                                                                                                                            0
                                                                                                                                            А Вас не затруднит вспомнить недавнее прошлое — Linux, FreeBSD, FreeDOS, вотэтовсё? Были ли там хоть какие-то намёки/поползновения на судебные преследования? Очевидно, что не было — это же не встроенные операционки.

                                                                                                                                            Серьёзные проблемы м.б., если операционка зашивается в ПЗУ. И особенно — если заменить её на другую невозможно (т.е. ПЗУ неизвлекаемое/незаменяемое): тут-то в полный рост идёт «встроенность».
                                                                                                                                            Однако, Вас не затруднит вспомнить недавнее прошлое — Android, WindowsMobile, iOS, вотэтовсё?

                                                                                                                                            А кстати, чем закончилось дело со встроенным в Windows Internet Explorer? Может, MS разделили или хотя бы оштрафовали?
                                                                                                                                              0
                                                                                                                                              А Вас не затруднит вспомнить недавнее прошлое — Linux, FreeBSD, FreeDOS, вотэтовсё?
                                                                                                                                              А на каком рынке у них монополия, извиняюсь?

                                                                                                                                              Очевидно, что не было — это же не встроенные операционки.
                                                                                                                                              Встроенные/невстроенные — это никого не волнует. iOS — вот, вполне встроенный, а к нему претензий нет. Потому что 15-20% — это не монополия.

                                                                                                                                              Однако, Вас не затруднит вспомнить недавнее прошлое — Android, WindowsMobile, iOS, вотэтовсё?
                                                                                                                                              Не затруднит. iOS — 15-20%, Windows Mobile — где-то в районе 1%. Им можно делать что угодно. А у Андроида 80% — и, пожалуйста, разбирательства начались.

                                                                                                                                              А кстати, чем закончилось дело со встроенным в Windows Internet Explorer? Может, MS разделили или хотя бы оштрафовали?
                                                                                                                                              То есть вы тут разбираете «гениальные» стратегии не зная даже результатов столь яркого эпизода? Заставили выпустить версию без Internet Explorer. В обычной версии заставили сделать окно выбора браузера и когда оное «случайно» при обновлении пропало выписали неплохой такой штраф.

                                                                                                                                              Знаете, мне надоело: у вас чуть не в каждом абзаце — фактическая ошибка. Вначале кажется что можно как-то показать, что вы неправы — и вы научитесь иногда в Гугл заходить перед тем, как чушь писать… но похоже вам просто нравится троллить… ну это ваш выбор — но, пожалуйста, без меня тогда уж.
                                                                                                                                            +2
                                                                                                                                            Много ли было программ, которые не могли открыть файл с именем «prn:» (которое вовсе не то, что «prn»)?
                                                                                                                                            Достаточно.

                                                                                                                                            Многие ли программы проверяли имя файла не обращением в операционку, а сами?
                                                                                                                                            99%. Им необходимо было это сделать, для того, чтобы разбить имя файла на три компонента.

                                                                                                                                            Часть, правда, запрашивала три компонента отдельно — но сути это не меняло. Имя файла prn они принимали, а prn: — нет.

                                                                                                                                            Это туи при чём? Тильда — вполне легальный символ, такие имена могли появиться и при работе DOS.
                                                                                                                                            Это позволило бы снизить накал проблемы в будущих операционках. Типа Windows 10, да. Нелегальные символы (типа двоеточия) в имени файла требовать было нельзя, а легальные, но редкие (что-нибудь типа # или $) — вполне можно. Но решили не морочить людям жизнь, да.

                                                                                                                                            То есть «лишнее» двоеточие просто игнорировалось.
                                                                                                                                            Вот это и было неправильным!
                                                                                                                                            Нет, это было как раз правильным, потому что иначе куча программ не смогла бы с такими файлами работать.

                                                                                                                                            Вообще-то — распознавание спец.файла по двоеточию в имени гораздо более экономно.
                                                                                                                                            Вообще-то двоеточие уже использовалось для имени диска. Так что всё не так просто — нужно было бы понимать, что одна буква — идёт в поле «диск» (причём не просто так себе идёт, а её ещё преобразовать нужно — «A» в 0, «B» в 1 и так далее), а если больше — то это уже «специальное имя файла и нужно обрабатывать по-другому.

                                                                                                                                            В каждой программе, ещё раз повторяю.

                                                                                                                                            Ничего общего: эти скрытые имена — никак не мешают существованию файлов с любым именем!
                                                                                                                                            Однако создают другие проблемы.

                                                                                                                                            Вы делаете мне смешно.
                                                                                                                                            Ну то, что вы любите смеяться над собственным невежеством — это я давно заметил.

                                                                                                                                            Ну, расскажите, каким образом DOS вообще работает с мышью. Ой, оказывается, сам DOS — вообще никак!
                                                                                                                                            Великолепное замечание, возьмите с полки пирожок…

                                                                                                                                            Это делают программы, вызывающие мышиный INT (номер не помню)!
                                                                                                                                            33H… уже теплее… хотя настораживает, что вы снова пишите о чём-то, не зная всех деталей…

                                                                                                                                            Ну и кто же мешает BIOS'у перехватить этот INT?
                                                                                                                                            Перехватить INT — ничего… но вот только ни одна программа его вызывать не будет, пока DOS „добро“ на это не даст. Функция Int 21/AH=35h. Вызывать просто INT 33H без предварительной проверки нельзя, потому что иначе на системе без драйвера мыши ваша программа будет виснуть.

                                                                                                                                            Да, можно сделать обработчик INT 33H в BIOS, а также мини-драйвер, единственной задачей которого будет зарегистрироваться и сказать „да-да, мышь есть, пользуйтесь“… но кому это нужно? Драйвер мыши и так у всех есть, да и было это во времена, когда мало кто в DOS уже работал, а если без драйвера не обойтись, тогда какой смысл во всех этих „плясках с бубнами“?

                                                                                                                                            Шо??? В RiscOS — не было ни DOS, ни BIOS! Про Amiga — не знаю.
                                                                                                                                            RiscOS вся, целиком, жила в ROM (хотя апдейты могли с диска грузиться), Amiga имела достаточно продвинутый
                                                                                                                                            Kickstart
                                                                                                                                            в ROM, который до запуска операционки создавал таблицы драйверов. А в IBM PC — ничего этого не было. Все драйвера добавлялись в таблицу только и исключительно после загрузки DOS — и через обращение к DOS.

                                                                                                                                            Отзывать железо не надо — менять микрохемы могут и сами юзеры.
                                                                                                                                            Какой процент юзеров может это сделать?

                                                                                                                                            Я так понимаю, убытки от окирпичивания материнок покупатели посчитать забыли
                                                                                                                                            Именно так! Если бы потребители умели считать деньги с учётом долгосрочных последствий, то они бы ни малого из пальмового масла, ни лампочки от которых „глаза вытекают“, ни окирпичивающиеся материки не покупали.

                                                                                                                                            Но… в нашей вселейнной покупатели так не устроены.

                                                                                                                                            За бесплатный выпуск операционки?
                                                                                                                                            Ой, не проблема: создаём отдельную фирму, и она выпускает.
                                                                                                                                            Вы хотите, чтобы на вас ещё и contempt навесили? Так это только усилит ваши страдания. Суды очень не любят, когда их за идиотов держат.

                                                                                                                                            Ну так и надо было разделиться — и работать совместно.
                                                                                                                                            Это будет очень тяжело сделать, сидя в тюрьме, уверяю вас. И когда Standard Oil и когда AT&T делили — то потом несколько лет правительство следило за тем, чтобы разделённые компании не то, что не „работали совместно“, а чтобы работники, и главное, руководители одной компании не могли даже видеть ничего, что о другой компании не известно публично.

                                                                                                                                            У IBM вообще было много архитектур, не все были удачные. И что?
                                                                                                                                            То что ни одна архитектура, которая не была бы собрана из „чужих“ компонент не оказалась достаточно дешёвой для того, чтобы успещно на рынок „персоналок“ выйти.

                                                                                                                                            Я что-то сильно сомневаюсь, что «программы для CP/M и DOS» имели столь решающее значение. Тут в первую очередь важно то, что компьютеры этой архитектуры выпускают много фирм.
                                                                                                                                            Вы опять ставите телегу впереди лошади. Да, то, что производителей у компьютеров определённой архитектуры много — это важно. Но ровно потому, что у них общий пул программ, которые там можно запускать. Если бы не это — никого не воловала бы ни IBM-PC совместимость, ни какая-либо ещё совместимость…

                                                                                                                                            А я думал — что основную прибыль IBM получала от мэйнфреймов коллективного доступа.
                                                                                                                                            А что такое мэйнфрейм, как не сетевая модели пользования и к коллективное использование компьютера?

                                                                                                                                            Это вообще не компьютер — это терминал, никому не нужный без мейнфрейма…
                                                                                                                                            Ну так и ваш „сетевой компьютер“ — это что-то подобное. Ну или может что-то похожее на Wang OIS (который успешно конкурировал с мейнфресмами, но, конечно, был убит персоналками весьма быстро).

                                                                                                                                            А мейнфреймы остались бы там, где были. Ну или стали бы терять позиции — так же, как и под натиском писюков.
                                                                                                                                            А деньги откуда брать, если вы самостоятельно, своими руками убили свой основной продукт?

                                                                                                                                            Расскажите это Novell — которую MS убила сетевыми возможностями сначала W'3.11, а потом W'NT!
                                                                                                                                            MS могла себе это позволить. Потому что до выхода W'3.11, а потом W'NT она на рынке сетевых компьютеров не играла. А у IBM это был основной источник доходов.

                                                                                                                                            Войну надо было начинать раньше.
                                                                                                                                            Когда? Когда Microsoft делал то, что ему говорил IBM, и когда его просили спрыгнуть с крыши, то он только спрашивал „в какую сторону“?

                                                                                                                                            Да, так часто бывает, что твой лучший партнёр, по тем или иным причинам, становится твоим конкурентом (напомню, что Apple и Google были так близки лет 10-15 назад, что тогдашний CEO Google, Эрик Шмидт, входил в совет директоров Apple… но заметьте, что он покинул этот пост после выхода Андроида, а не до.

                                                                                                                                            Вот ровно та же история, что в Microsoft: до выхода Windows 3.0 Microsoft удовлетворял все требования IBM — безоговорочно. А вот после выхода… да, тут уже другая история…

                                                                                                                                            Да, подобная политика иногда „плохо кончается“… но компании, которые вдруг решают воевать со своими собственными партнёрами, потому что они, может быть, в будущем станут конкурентами… долго не живут. Примером тому — тот же Digital Research. Который начал войну с Microsoft, выпустив CBASIC
                                                                                                                                              0
                                                                                                                                              Им необходимо было это сделать, для того, чтобы разбить имя файла на три компонента.
                                                                                                                                              Интересно было бы посмотреть типичный сценарий разбора полного имени файла. Я так понимаю, двоеточие искалось только во второй позиции — и если имя файла будет «prn:» или «a:prn:», то двоеточие будет воспринято как обычный символ. Дальше — ищется только точка для расширения.

                                                                                                                                              Вообще, очень странно, что CP/M требовала от всех программ разбирать полное имя файла на компоненты. По идее — все часто употребляемые функции надо выносить в какой-то общий модул — т.е. помещать в ядро или в разделяемую библиотеку.

                                                                                                                                              Но решили не морочить людям жизнь, да.
                                                                                                                                              Но в результате — заморочили!

                                                                                                                                              Однако {скрытые имена} создают другие проблемы.
                                                                                                                                              И какие же?

                                                                                                                                              Перехватить INT — ничего… но вот только ни одна программа его вызывать не будет, пока DOS „добро“ на это не даст. Функция Int 21/AH=35h.
                                                                                                                                              По ссылке — описание функции DOS по перехвату прерывания. Но ничего не сказано про обязательность использования этого.

                                                                                                                                              А теперь расскажите мне, как «DOS даёт „добро“».

                                                                                                                                              А затем расскажите мне, как работают драйверы клавиатуры, текстового экрана и HDD/FDD, если они должны начат работать задолго до загрузки DOS. Как же «DOS даёт „добро“», если он ещё не начал грузиться?

                                                                                                                                              Вызывать просто INT 33H без предварительной проверки нельзя, потому что иначе на системе без драйвера мыши ваша программа будет виснуть.
                                                                                                                                              Ну, с нетерпением жду пример кода, делающего такую проверку. И описание — каким образом программа зависнет. Насколько я помню — все неперехваченные прерывания ведут на IRET; т.е. ничего не зависнет.
                                                                                                                                              Проверить наличие обработчика просто: надо вызвать функцию, которая обязана изменить переданные ей данные (например, сбросить какой-то регистр в ноль).

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

                                                                                                                                              но кому это нужно?
                                                                                                                                              Тем, кому актуально сэкономить пару килобайт памяти. Что, разве не достойная цель?

                                                                                                                                              Amiga имела достаточно продвинутый Kickstart в ROM, который до запуска операционки создавал таблицы драйверов.
                                                                                                                                              Т.е. создать эту таблицу ещё на заводе и зашить в ПЗУ — религия не позволяла?

                                                                                                                                              Все драйвера добавлялись в таблицу только и исключительно после загрузки DOS — и через обращение к DOS.
                                                                                                                                              Шо, и драйвер диска тоже???

                                                                                                                                              Какой процент юзеров может это сделать?
                                                                                                                                              Примерно такой же, какой может переустановить операционку или создать бутявку.

                                                                                                                                              Если бы потребители умели считать деньги с учётом долгосрочных последствий
                                                                                                                                              Итак, Вы додумались до того, что эволюция компьютеров оптимизируется не на качественную работу, а на быстрое извлечение денег из юзеров, а потом пусть юзеры сами разгребают проблемы. Надеюсь, после этого Вы не будете утверждать разумность всего сущего?

                                                                                                                                              Вы хотите, чтобы на вас ещё и contempt навесили?
                                                                                                                                              Ну так поручить какому-нибудь институту выпустить свободный DOS. На институт — не навесят.

                                                                                                                                              И когда Standard Oil и когда AT&T делили
                                                                                                                                              Ну так делиться надо было заранее!

                                                                                                                                              То что ни одна архитектура, которая не была бы собрана из „чужих“ компонент не оказалась достаточно дешёвой для того, чтобы успещно на рынок „персоналок“ выйти.
                                                                                                                                              А где я предлагал отказаться от сторонних компонентов?

                                                                                                                                              Да, то, что производителей у компьютеров определённой архитектуры много — это важно. Но ровно потому, что у них общий пул программ, которые там можно запускать.
                                                                                                                                              Та-а-ак… Ну так я и предлагаю — сделать альтернатиную архитектуру, продавать лицензии на её копирование; на компьютерах, произведённых по этой лицензии, должна работать одна операционка (или несколько разных — но каждая на каждом компьютере). Т.е. предвосхитить бизнес-модель Андроида.

                                                                                                                                              А что такое мэйнфрейм, как не сетевая модели пользования и к коллективное использование компьютера?
                                                                                                                                              Э-э-э… Вы хотя бы знаете разницу между хост-терминальной и клиент-серверной моделями работы? Например, разницу в разделении труда и, следовательно, в масштабировании?

                                                                                                                                              Ну так и ваш „сетевой компьютер“ — это что-то подобное.
                                                                                                                                              Компьютеры Acorn (8-битные и RISC-OS) — одинаково хорошо работали и в сети, и с локальным накопителем.

                                                                                                                                              Ну или может что-то похожее на Wang OIS
                                                                                                                                              Узко специализированная система — не могла выжить.

                                                                                                                                              А деньги откуда брать, если вы самостоятельно, своими руками убили свой основной продукт?
                                                                                                                                              Почему убили? У мейнфреймов есть своя ниша — никакие писюки их оттуда выковырять не могут. И ещё долго не смогут.

                                                                                                                                              MS могла себе это позволить. Потому что до выхода W'3.11, а потом W'NT она на рынке сетевых компьютеров не играла.
                                                                                                                                              Эй, а под какой компьютер была заточена Novell — под какой ещё «сетевой компьютер»??? Под какой операционкой работал типичный клиент Netware???

                                                                                                                                              Когда Microsoft делал то, что ему говорил IBM, и когда его просили спрыгнуть с крыши, то он только спрашивал „в какую сторону“?
                                                                                                                                              Пример такого прыжка привести можете? Учитывая, что именно IBM содержала Билла Гейтса, пока тот писал DOS.

                                                                                                                                              но компании, которые вдруг решают воевать со своими собственными партнёрами, потому что они, может быть, в будущем станут конкурентами… долго не живут.
                                                                                                                                              Вообще-то, конкурентами IBM были те, кто выпускал PC-совместимые компьютеры для DOS. Ну и Билл Гейтс — который помогал им, выпуская DOS.
                                                                                                                                              Тут было понятно, что PC будут выдавливать мейнфреймы с нижней части рынка (правда, эта часть была для мейнфреймов не очень ценной). И вопрос стоял о том, что IBM может или мириться с этим, выпуская PC вместе со всеми (т.е. вытесняя мейнфреймы и своими компьютерами тоже); или попытаться захватить этот рынок, выпустив альтернативный компьютер, не совместимый с PC.
                                                                                                                                              В качестве преимущества альтернативы — можно было выдвинуть многопользовательскость, т.е. защиту данных юзера от остальных юзераов (клиент-серверная архитектура: данные хранятся на сервере, он же регулирует доступ). И/или неубиваемость операционки, зашитой в ПЗУ. И/или несовместимость с вирусами.
                                                                                                                                              Т.е. мейнфреймы в любом случае будут ужиматься. Вопрос в том, кому достанется усок рынка, с которого будут выдавлены мейнфреймы — IBM или её конкурентам.

                                                                                                                                              Примером тому — тот же Digital Research. Который начал войну с Microsoft, выпустив CBASIC
                                                                                                                                              При чём тут война?
                                                                                                                                              С какого плацдарма DR пыталась начать войну? И какой плацдарм был у IBM?
                                                                                                                                              Почему когда MS аналогично выпускала продукты, альтернативные уже существующим (типа как выше — пример с Novell) — почти везде побеждала?
                                                                                                                                                +1
                                                                                                                                                Вы знаете, я страшно не люблю людей, которые не имеют в голове «картины мира» (как в программистском камне написано). С ними, как правило, спорить бесполезно.

                                                                                                                                                С вами же спорить не столько бесполезно, сколько утомительно. Потому что у вас в голове целостная, разумная, хорошая картина мира — которая не имеет никакого отношения к действительности! Ну честнос слово — посмотрите на нашу беседу: сколько раз вы попадали пальцем в небо?

                                                                                                                                                Я так понимаю, двоеточие искалось только во второй позиции — и если имя файла будет «prn:» или «a:prn:», то двоеточие будет воспринято как обычный символ. Дальше — ищется только точка для расширения.
                                                                                                                                                А проверить — слабо? Скачайте какой Turbo Pascal 1.0 из музея и поиграйтесь с ним. Задаёте файл «CON:» — и Turbo Pascal радостно открывает «A:CON.PAS». Можно написано «CON:CON.PAS» — и всё, что после ":" будет отрезано. И это было типичным поведением программ под CP/M!

                                                                                                                                                Вообще, очень странно, что CP/M требовала от всех программ разбирать полное имя файла на компоненты. По идее — все часто употребляемые функции надо выносить в какой-то общий модул — т.е. помещать в ядро или в разделяемую библиотеку.
                                                                                                                                                Ага. На компьютерах с Z80 и 20KiB памяти (это под всё, напоминаю, не только под ядро). А на вас посмотрю как вы в таких условиях вообще разделяемые библиотеки разведёте и останется ли у вас место хоть для чего-то в памяти кроме операционки.

                                                                                                                                                Большинству программ не нужно было разбирать имена файлов: они тупо задавали «0» для диска (текущий) и вписывали фиксированное расширение. Turbo Pascal — редкая программа, которая позволяет вам задать-рсширение и даже может сделать его пустым (вводите «TEST» — получаете «TEST.PAS», вводите «TEST.» — получаете «TEST»).

                                                                                                                                                Но решили не морочить людям жизнь, да.
                                                                                                                                                Но в результате — заморочили!
                                                                                                                                                Заморочили не тем, и, главное, главное, не тогда! Вот что важно! Эволюция не идёт по пути создания оптимальных решений, она идёт по пути локально-оптимальных решений! Потому мы ходим на двух ногах… и воюем с файлами AUX в Windows 10.

                                                                                                                                                Насколько я помню — все неперехваченные прерывания ведут на IRET; т.е. ничего не зависнет.
                                                                                                                                                Попадание пальцем в небо… который уж раз? Запускаем тот самый Turbo Pascal 1.0 под DOS 1.0, пишем простенькую программку:
                                                                                                                                                begin
                                                                                                                                                  writeln(mem[0:$33*4], ' ', mem[0:$33*4+1]);
                                                                                                                                                  writeln(mem[0:$33*4+2], ' ', mem[0:$33*4+2]);
                                                                                                                                                end.
                                                                                                                                                запускаем… четыре нуля. Знаете что по этому адресу живёт? Да — представьте себе, там нифига не IRET.

                                                                                                                                                Ну, с нетерпением жду пример кода, делающего такую проверку.
                                                                                                                                                Ну возьмите, к примеру, исходники Turbo Vision (входили в комплект Borland Pascal 7.01) и посмотрите в файле DRIVERS.PAS:
                                                                                                                                                procedure DetectMouse; near; assembler;
                                                                                                                                                asm
                                                                                                                                                        MOV     AX,3533H
                                                                                                                                                        INT     21H
                                                                                                                                                        MOV     AX,ES
                                                                                                                                                        OR      AX,BX
                                                                                                                                                        JE      @@1
                                                                                                                                                        XOR     AX,AX
                                                                                                                                                        INT     33H
                                                                                                                                                        OR      AX,AX
                                                                                                                                                        JE      @@1
                                                                                                                                                        PUSH    BX
                                                                                                                                                        MOV     AX,4
                                                                                                                                                        XOR     CX,CX
                                                                                                                                                        XOR     DX,DX
                                                                                                                                                        INT     33H
                                                                                                                                                        POP     AX
                                                                                                                                                @@1:    MOV     ButtonCount,AL
                                                                                                                                                end;
                                                                                                                                                Перед тем, как дёргать INT 33h, нужно убедится о том, что DOS о нём знает. Иначе нельзя: попытка исполнять, вместо кода, таблицу прерываний к добру не доведёт… скорее всего программа просто зависнет.

                                                                                                                                                Пример такого драйвера привести можете?
                                                                                                                                                Нет, конечно. Я ж не BIOS'описатель.

                                                                                                                                                Что он должен сделать?
                                                                                                                                                Зарегистрировать прерывание 0x33 в DOS — как минимум.

                                                                                                                                                Тем, кому актуально сэкономить пару килобайт памяти. Что, разве не достойная цель?
                                                                                                                                                Во времена WinBIOS'а? Уже нет. Тогда память уже мегабайтами мерялась и, главное, из DOS только установка Windows производилась, больше ничего.

                                                                                                                                                Т.е. создать эту таблицу ещё на заводе и зашить в ПЗУ — религия не позволяла?
                                                                                                                                                А как тогда карты расширения вставлять, если таблица со списком драйверов задана раз и навсегда и изменению не подлежит?

                                                                                                                                                Все драйвера добавлялись в таблицу только и исключительно после загрузки DOS — и через обращение к DOS.
                                                                                                                                                Шо, и драйвер диска тоже???
                                                                                                                                                Да, конечно. Но он был вшит в ядро PC DOS, так что этого «снаружи» нельзя было увидеть… разве что под дебаггером.

                                                                                                                                                Какой процент юзеров может это сделать?
                                                                                                                                                Примерно такой же, какой может переустановить операционку или создать бутявку.
                                                                                                                                                И сновы вы приносите «понятия» 90х в 80е. В 80е практически все пользователи должны были «переустановить операционку или создать бутявку» — просто потому что IBM PC (и вроде даже IBM PC XT) продавалась без операционки и её нужно было устанавливать. А вот замена микросхем — требует кой-какого навыка, а иногда и инструмента.

                                                                                                                                                Надеюсь, после этого Вы не будете утверждать разумность всего сущего?
                                                                                                                                                Это вопрос философский. Считаете ли вы себя человеком разумным? Напомню, что появились на свет в результате примерно такого же процесса — и именно поэтому балансируете на двух ногах.

                                                                                                                                                Ну так поручить какому-нибудь институту выпустить свободный DOS. На институт — не навесят.
                                                                                                                                                Могут и на институт навесить. Если в вашей переписке пробелы обнаружатся. Вы вообще что такое litigation hold — знаете? Да и вообще — связывать судьбу компании с людьми, с которыми у вас есть, в лучшем случае, неформальная устная договорённость и которые могут «послать» вас с вашими идеями в любой момент… не лучшая бизнес-идея.

                                                                                                                                                А где я предлагал отказаться от сторонних компонентов?
                                                                                                                                                А если вы от них не откажитесь — то как остановите пресловутую девятку от копирования всего, что вы сделали?

                                                                                                                                                И когда Standard Oil и когда AT&T делили
                                                                                                                                                Ну так делиться надо было заранее!
                                                                                                                                                Каддафи и Дерипаска — делились. Сильно им это помогло? Когда речь заходит о национальной безопасности, то даже богатейшие люди мира начинают ходить по струнке… и огребают «по полной».

                                                                                                                                                Т.е. предвосхитить бизнес-модель Андроида.
                                                                                                                                                Бизнес-модель Андроида это — теряем деньги на операционке, зарабатываем на поиске поверх этой операционки. На чём бы зарабатывал деньги IBM, выпуская и софт и железо в убыток?

                                                                                                                                                Э-э-э… Вы хотя бы знаете разницу между хост-терминальной и клиент-серверной моделями работы? Например, разницу в разделении труда и, следовательно, в масштабировании?
                                                                                                                                                Я боюсь вы этой разницы не знаете. На мейнфреймах IBM (в отличие от Unix-терминалов) терминал не общайтес с сервером при нажатии на каждую букву. Редактирование форм происходит локально… и только когда вы ввели данные для целой страницы — вы отсылаете данные на сервер.

                                                                                                                                                Фактически вся работа происходит как с брайзером и сервером Хабра — с тем только отличием, что нет графического режима и расстояние между терминалами и менфреймом может меряться, в лучшем случае, сотнями метров, а не тысячами километров.

                                                                                                                                                То есть таки да — ваше предложение фактически было бы убийством основного бизнеса IBM.

                                                                                                                                                Компьютеры Acorn (8-битные и RISC-OS) — одинаково хорошо работали и в сети, и с локальным накопителем.
                                                                                                                                                Вот только давайте не рассказывать сказок, а? Скорости общения с жёстким диском и с сетью — отличаются на порядок, а то и на два. И ни Acorn, ни RiscOS, ни MacOS (нативно поддерживавший LocalTalk с ранних версий) сделать с этим ничего не могут. Расшарить принтер — легко, обойтись без жёсткого диска… ну делали некоторые мазохисты это… не взлетело… и понятно почему.

                                                                                                                                                Пример такого прыжка привести можете?
                                                                                                                                                Хотя бы тот факт, что OS/2, разработанная в Microsoft, не принадлежала ей (что, собственно, и позволило IBM разрабатывать версии после 2.0 в одиночку). И проект многозадачной MS-DOS 4.0 был успешно похоронен, для того, чтобы открыть дорогу для OS/2.

                                                                                                                                                Учитывая, что именно IBM содержала Билла Гейтса, пока тот писал DOS.
                                                                                                                                                Это что за сказки? Во-первых это заняло чуть больше, чем полгода (в декабре 1980го Microsoft купил QDOS, в августе 1981го IBC PC были уже в продаже), во-вторых главное, что продавал Microsoft в те годы — был вовсе не MS DOS, а совсем даже компиляторы и интерпретаторы! Всякие COBOL'ы, FORTRAN'ы и PASCAL'и (написанные Microsoft до того… под CP/M, конечно).

                                                                                                                                                Примером тому — тот же Digital Research. Который начал войну с Microsoft, выпустив CBASIC
                                                                                                                                                При чём тут война?
                                                                                                                                                С какого плацдарма DR пыталась начать войну? И какой плацдарм был у IBM?
                                                                                                                                                Digital Research выпускала CP/M и MP/M, а Microsoft — под них Basic и FORTRAN. И основной доход в те годы приносили Basic-лицензии. То есть выпуск CBASIC'а Digital Research'ем — фактичиски грозил уничтожить «дойную корову» Microsoft.

                                                                                                                                                Почему когда MS аналогично выпускала продукты, альтернативные уже существующим (типа как выше — пример с Novell) — почти везде побеждала?
                                                                                                                                                Потому что она выпускала продукцию, решавшую существующие проблемы пользователя, а не что-то с чем он столкнётся через 10 лет. Netware 4.x, в частности, содержала невероятно гибкие настроски для сетей с десятками подразделений и сотнями серверов — но это обозначало, что пользователям самый типичный варианта «5 компов и к ним ещё один сервер в придачу» должны были разбираться с кучей вещей, которые, как им казалось, им никогда не пригодятся. Да, возможно, когда-нибудь, когда компания вырастет… это и дало бы отдачу, но здесь, сейчас было проще и быстрее использовать Windows NT или вообще сделать «сервер» из одной из рабочих станций. Что? Нанадёжно и глючно? Зато дёшево и быстро!

                                                                                                                                                Вот пока Microsoft решал проблемы, которые у пользователей возникали «здесь и сейчас» (даже порождая отдалённые последствия, которые и через полвека аукаются) — никто не мог его победить. Когда он занялся архитектурной астронавтикой — он начал проигрывать. Собственно все (ну хорошо… почти все) компании, которые Microsoft «убил» проиграли в тот момент, когда они, будучи лидерами, решили «отдышаться, разобраться с техническим долгом в архитектуре и инвестировать в будущее» — и все проигрыши Microsoft в последние лет 10 связаны с тем же самым.

                                                                                                                                                P.S. Хорошая иллюстрация в тему: как известно при разработке Windows Vista был момент, когда процесс было решено перезапустить. Ну потому что очень всего было свалено в кучу, всё перепуталось и надо было «навести порядок». Что получили?
                                                                                                                                                6.0.4083.0 (x64 beta) (последняя до перезагрузки): 500MB
                                                                                                                                                6.0.5048.0 (x64 beta1) (первая версия после перезагрузки): 1.25GB
                                                                                                                                                Та-да-даммм… почистили и упорядочили…
                                                                                                                                                  0
                                                                                                                                                  Вы знаете, я страшно не люблю людей, которые не имеют в голове «картины мира» {...}
                                                                                                                                                  С вами же спорить не столько бесполезно, сколько утомительно. Потому что у вас в голове целостная, разумная, хорошая картина мира — которая не имеет никакого отношения к действительности!
                                                                                                                                                  Ну и зачем Вы тут упомянули людей без картины мира в голове?

                                                                                                                                                  Ну честнос слово — посмотрите на нашу беседу: сколько раз вы попадали пальцем в небо?
                                                                                                                                                  Мы тут оба попадаем пальцем в небо примерно одинаково. Вот ниже Вы эпично зафейлились. И что?

                                                                                                                                                  Скачайте какой Turbo Pascal 1.0 из музея и поиграйтесь с ним.
                                                                                                                                                  Turbo Pascal — редкая программа
                                                                                                                                                  Зачем мне играть с редкой программой, когда мне нужна типичная?

                                                                                                                                                  Можно написано «CON:CON.PAS» — и всё, что после ":" будет отрезано.
                                                                                                                                                  Очень странное поведение. Программы не должны искать двоеточие нигде, кроме второй позиции.

                                                                                                                                                  На компьютерах с Z80 и 20KiB памяти
                                                                                                                                                  Чем меньше памяти — тем важнее её экономить, вынося общий код в процедуры общего пользования.

                                                                                                                                                  Большинству программ не нужно было разбирать имена файлов
                                                                                                                                                  Т.е. юзер не мог ввести произвольное имя файла?

                                                                                                                                                  Зачем вообще надо было делать такие извраты, когда можно было приказать программе отдельно дать команду «сменить диск» и потом обращаться к файлу?

                                                                                                                                                  Знаете что по этому адресу живёт? Да — представьте себе, там нифига не IRET.
                                                                                                                                                  Тогда уж надо было бы проверить, что именно там живёт.
                                                                                                                                                  Кстати, содержимое неинициализированных векторов — может зависеть от версии BIOS'а.

                                                                                                                                                  procedure DetectMouse; near; assembler;
                                                                                                                                                  asm
                                                                                                                                                  	MOV	AX,3533H
                                                                                                                                                  	INT	21H
                                                                                                                                                  	MOV	AX,ES
                                                                                                                                                  	OR	AX,BX
                                                                                                                                                  	JE	@@1
                                                                                                                                                  Замечательно! И Вы будете мне рассказывать про " в небо"!
                                                                                                                                                  Что вообще делает этот код? Ой, внезапно — он просто считывает содержимое таблицы векторов. И ему пофиг, откуда там взялись значения — были ли они занесены туда через вызов DOS или как-то ещё.
                                                                                                                                                  А потом это тупо сравнивается с нулём (через хитрый хак).

                                                                                                                                                  Это значит, что если BIOS оставит в мышином векторе прерывания адрес своего драйвера — это процедура отработает как надо — скажет «вектор перехвачен».

                                                                                                                                                  Перед тем, как дёргать INT 33h, нужно убедится о том, что DOS о нём знает.
                                                                                                                                                  У меня ощущение, что Вы употребляете слово «знает» как-то неправильно. Поясните, что он значит в отношении программы — как это программа может что-то «знать».

                                                                                                                                                  Зарегистрировать прерывание 0x33 в DOS — как минимум.
                                                                                                                                                  В чём заключается эта регистрация? Что, кроме записи адреса драйвера в вектор прерывания, там ещё делается?

                                                                                                                                                  А как тогда карты расширения вставлять, если таблица со списком драйверов задана раз и навсегда и изменению не подлежит?
                                                                                                                                                  Логично.

                                                                                                                                                  Да, конечно. Но {драйвер диска } был вшит в ядро PC DOS
                                                                                                                                                  А-а-а!!! (FacePalm...)
                                                                                                                                                  Рассмотрим наиболее частую загрузку — с HDD.

                                                                                                                                                  После инициализации устройств — BIOS загружает и запускает MBR (самый первый сектор HDD).

                                                                                                                                                  Если MBR там стандартная (тоже самый частый случай — по кр.мере, в прошлом), то она сканирует таблицу разделов (64 байта почти в конце этого сектора — они уже в памяти), ищет там активный раздел и загружает его BR — первый сектор раздела; а потом передаёт ему управление (делает JMP).

                                                                                                                                                  Дальше — зависит от операционки.
                                                                                                                                                  В DOS — BR загружает IO.SYS и MSDOS.SYS.
                                                                                                                                                  В операционках типа W'NT, Linux, FreeBSD — BR загружает OS_Loader;; а потом передаёт ему управление. OS_Loader загружает ядро операционки и дополнительные модули (в т.ч. драйверы устройств, работающие в защищённом режиме).

                                                                                                                                                  Видите там слово «загружает» (я его специально выделил)? Оно означает, что программа делает вызов драйвера диска, зашитого в BIOS. Причём для SCSI-дисков — драйвер особый.
                                                                                                                                                  И представляете, какая неожиданность — никакого DOS в памяти ещё нет, т.е. регистрировать драйверы некому. А драйвер диска уже вовсю работает! Причём вызывают его через самый стандартный INT!
                                                                                                                                                  Причём, я когда-то дизассемблировал MBR — вызывают без проверки.

                                                                                                                                                  А если драйвер диска «вшит в ядро PC DOS» — то каким образом «ядро PC DOS» оказывается загружено с диска в память?

                                                                                                                                                  В 80е практически все пользователи должны были «переустановить операционку или создать бутявку» — просто потому что IBM PC (и вроде даже IBM PC XT) продавалась без операционки и её нужно было устанавливать.
                                                                                                                                                  Ой, Вы делаете мне смешно. Как правило, пользователи обращались к более опытному человеку, который им это делал.

                                                                                                                                                  Но тот, кто умел «переустановить операционку или создать бутявку» — точно так же мог заменить и ПЗУ. Ну, если сделать его правильно — легкодоступным.

                                                                                                                                                  А вот замена микросхем — требует кой-какого навыка, а иногда и инструмента.
                                                                                                                                                  Замена модуля оперативной памяти — какого инструмента требует?

                                                                                                                                                  Считаете ли вы себя человеком разумным?
                                                                                                                                                  Частично. В основном моя жизнь протекает под неразумной работой мозга — рефлексы, «так принято», etc.

                                                                                                                                                  Могут и на институт навесить. Если в вашей переписке пробелы обнаружатся.
                                                                                                                                                  Какие пробелы?
                                                                                                                                                  Курировать этот процесс вообще должен человек, не числящийся в штате IBM — какой-нибудь аутсорсер.

                                                                                                                                                  связывать судьбу компании с людьми, с которыми у вас есть, в лучшем случае, неформальная устная договорённость и которые могут «послать» вас с вашими идеями в любой момент… не лучшая бизнес-идея.
                                                                                                                                                  Пошлют — не получат денег.

                                                                                                                                                  А если вы от них не откажитесь — то как остановите пресловутую девятку от копирования всего, что вы сделали?
                                                                                                                                                  Что там про «пальцем в небо»? Вы про патентную защиту никогда не слышали?

                                                                                                                                                  Каддафи и Дерипаска — делились.
                                                                                                                                                  Когда это Каддафи разделил Ливию???

                                                                                                                                                  Когда речь заходит о национальной безопасности
                                                                                                                                                  Персональные компьютеры времён DOS — никак не относились к национальной безопасности.

                                                                                                                                                  Бизнес-модель Андроида это — теряем деньги на операционке, зарабатываем на поиске поверх этой операционки.
                                                                                                                                                  Вообще-то, Android приносит деньги. Вроде, по пять баксов с устройства.

                                                                                                                                                  На чём бы зарабатывал деньги IBM, выпуская и софт и железо в убыток?
                                                                                                                                                  А почему в убыток? Железо продаётся по нормальной цене, окупающей производство.
                                                                                                                                                  С софтом сложнее. Можно продавать софт коробочно. А можно — выдавать право на софт вместе с лицензией на копирование железа (этот вариант особенно актуален при операционке, зашиваемой в ПЗУ).

                                                                                                                                                  Я боюсь вы этой разницы не знаете.
                                                                                                                                                  Я-то как раз знаю.
                                                                                                                                                  Основная разница в том, что клиент может запустить программу с одного сервера, загрузить данные с другого сервера и сохранить их на третий сервер; и серверы об этом (друг-о-друге) знать не будут. А терминал так не может.

                                                                                                                                                  На мейнфреймах IBM (в отличие от Unix-терминалов) терминал не общайтес с сервером при нажатии на каждую букву. Редактирование форм происходит локально… и только когда вы ввели данные для целой страницы — вы отсылаете данные на сервер.
                                                                                                                                                  Да, я в курсе. Расскажите, что будет, если по ходу работы сервер перезагрузится — при условии, что во время перезагрузки терминал к нему не обращался.

                                                                                                                                                  Да, есть ещё одно отличие: Клиент можно заставить работать терминалом. А терминал невозможно заставить работать клиентом.

                                                                                                                                                  То есть таки да — ваше предложение фактически было бы убийством основного бизнеса IBM.
                                                                                                                                                  Я так понимаю, Вы не в курсе существования задач, которые на персональных компьютерах того времени не решались в принципе. И именно на такие задачи был нацелен основной бизнес IBM.

                                                                                                                                                  Скорости общения с жёстким диском и с сетью — отличаются на порядок, а то и на два.
                                                                                                                                                  Ну и какие там скорости?
                                                                                                                                                  Ethernet — 10 Mbps. С поправкой на коллизии — КПД бывает от 30% до 60%, зависит от массы факторов.
                                                                                                                                                  IDE — 16 MB/sec = 128 Mbps. Коллизий там нет — но это скорость не диска, а интерфейса. Скорость же типичного диска была намного ниже.
                                                                                                                                                  Какие там два порядка? Там сопоставимые скорости были!
                                                                                                                                                  А ещё на сервер можно поставить несколько сетевых интерфейсов.
                                                                                                                                                  А ещё — сервер бывает не только файловый.

                                                                                                                                                  обойтись без жёсткого диска… ну делали некоторые мазохисты это… не взлетело… и понятно почему.
                                                                                                                                                  Конечно, понятно — ведь вся архитектура компьютера была заточена на локальный диск!

                                                                                                                                                  Хотя бы тот факт, что OS/2, разработанная в Microsoft, не принадлежала ей
                                                                                                                                                  А где здесь «прыжок с крыши»?

                                                                                                                                                  И проект многозадачной MS-DOS 4.0 был успешно похоронен, для того, чтобы открыть дорогу для OS/2.
                                                                                                                                                  Лично я думаю, что многозадачный MS-DOS 4.0 умер сам — уж слишком архитектура DOS не подходила для многозадачности. Например, в вопросе выделения памяти.

                                                                                                                                                  главное, что продавал Microsoft в те годы — был вовсе не MS DOS, а совсем даже компиляторы и интерпретаторы! Всякие COBOL'ы, FORTRAN'ы и PASCAL'и (написанные Microsoft до того… под CP/M, конечно).
                                                                                                                                                  И этот рынок был достаточен для прокормления?

                                                                                                                                                  Digital Research выпускала CP/M и MP/M, а Microsoft — под них Basic и FORTRAN. И основной доход в те годы приносили Basic-лицензии. То есть выпуск CBASIC'а Digital Research'ем — фактичиски грозил уничтожить «дойную корову» Microsoft.
                                                                                                                                                  А ничего, что IBM PC + MS-DOS — это была война против CP/M?

                                                                                                                                                  Потому что она выпускала продукцию, решавшую существующие проблемы пользователя, а не что-то с чем он столкнётся через 10 лет.
                                                                                                                                                  Ну, мне всегда казалось, что MS выпускала продукцию, создававшую новые проблемы.

                                                                                                                                                  Netware 4.x, в частности, содержала невероятно гибкие настроски для сетей с десятками подразделений и сотнями серверов — но это обозначало, что пользователям самый типичный варианта «5 компов и к ним ещё один сервер в придачу» должны были разбираться с кучей вещей, которые, как им казалось, им никогда не пригодятся.
                                                                                                                                                  А взять что-то попроще типа Netware'3.x или Netware Lite — им религия не позволяла?

                                                                                                                                                  А разбираться с NW при той документации, которую Novell поставляла — это был трэш, угор и содомия. Особенно на фоне полного отсутствия средств нормальной диагностики — типа ping.

                                                                                                                                                  Когда он занялся архитектурной астронавтикой — он начал проигрывать.
                                                                                                                                                  По ссылке — какой-то бред. Автор противопоставляет синхронизацию файлов (это нужно для тех, кт работает) и «twitter, и flickr, и delicious, и picasa, и tripit, и ebay, и миллион других веселых вещей» (для тех, кто развлекается).

                                                                                                                                                  Собственно все (ну хорошо… почти все) компании, которые Microsoft «убил» проиграли в тот момент, когда они, будучи лидерами, решили «отдышаться, разобраться с техническим долгом в архитектуре и инвестировать в будущее»
                                                                                                                                                  Когда MS создавала W'NT — она почему-то не умерла.
                                                                                                                                                  А где у Novell было «отдышаться, разобраться с техническим долгом в архитектуре и инвестировать в будущее»? Скорее она умерла в первую очередь потому, что не инвестировала в будущее — в Internet-технологии.

                                                                                                                                                  6.0.4083.0 (x64 beta) (последняя до перезагрузки): 500MB
                                                                                                                                                  6.0.5048.0 (x64 beta1) (первая версия после перезагрузки): 1.25GB
                                                                                                                                                  Та-да-даммм… почистили и упорядочили…
                                                                                                                                                  Индусы поработали?
                                                                                                                                                    0
                                                                                                                                                    Мы тут оба попадаем пальцем в небо примерно одинаково. Вот ниже Вы эпично зафейлились.
                                                                                                                                                    Где конкретно? Пока вся наша беседа устроена так:
                                                                                                                                                    Вы: все кругом идиоты, а я Дартаньян — нужно было сделать X!
                                                                                                                                                    Я: Сделать X было нельзя потому что Y.
                                                                                                                                                    Вы: Ну тогда нужно было делать X1!
                                                                                                                                                    Я: Сделать X1 было нельзя потому что Y1.
                                                                                                                                                    Вы: Ну значит нужно было делать X2!
                                                                                                                                                    Я: Сделать X2 было нельзя потому что Y2.

                                                                                                                                                    И так — бесконечно. Предположить, что, внезапно, кругом не все идиоты и у них была причина делать так, а не иначе — вы, почему-то, не можете.

                                                                                                                                                    Можно написано «CON:CON.PAS» — и всё, что после ":" будет отрезано.
                                                                                                                                                    Очень странное поведение. Программы не должны искать двоеточие нигде, кроме второй позиции.
                                                                                                                                                    И, тем не менее, гораздо проще написать код, который будет считать что имя файла заканчивается на одном из «запретных» символов: _ . : ; < >. Системные команды CP/M интерпретировали их как разделитель параметров, потому, разумеется, сторонние программы более-менее следовали тому же правилу.

                                                                                                                                                    Зачем мне играть с редкой программой, когда мне нужна типичная?
                                                                                                                                                    Типичная программ под CP/M не принимала ни имени диска, ни расширения и с ней всё было просто: используем текущий диск, фиксированное расширение, считаем, что имя файла кончается, когда встретили один из «запретных» символов.

                                                                                                                                                    Зачем вообще надо было делать такие извраты, когда можно было приказать программе отдельно дать команду «сменить диск» и потом обращаться к файлу?
                                                                                                                                                    Так и делали. Но некоторым программам можно задавать файлы на разных дисках (тот же Turbo Pascal — исходники на одном, бинарники на другом), тогда такой трюк уже не прокатывал.

                                                                                                                                                    Чем меньше памяти — тем важнее её экономить, вынося общий код в процедуры общего пользования.
                                                                                                                                                    Нет. С учётом того, что все эти процедуры сидят в той же памяти, что и остальная программа (ещё раз: жёстких дисков пока нет, что считали в память — то у нас и есть), то гораздо важнее не включать в систему вещей, без которых можно обойтись. Удивительным образом код для разбора имени файла — одна из таких вещей.

                                                                                                                                                    У меня ощущение, что Вы употребляете слово «знает» как-то неправильно. Поясните, что он значит в отношении программы — как это программа может что-то «знать».
                                                                                                                                                    Когда программа что-то «знает», то это значит, что где-то внутри неё есть это знание. То есть переменная, таблица или ещё чего-нибудь. Далее:
                                                                                                                                                    Что вообще делает этот код? Ой, внезапно — он просто считывает содержимое таблицы векторов.
                                                                                                                                                    Если бы вы, ну на мгновенье, отказались вы от своей главной аксиомы, то смогли бы заподозрить, что это не так. Ну действительно: зачем для чтения/записи четырёх байтов из известного адреса заводить целых две функции и кучу «танцев с бубнами»? И да — если вы посмотрите на исходники MS DOS (ранние версии Microsoft вполне официально опубликовал), то вы обнаружите, что функции 25H/35H не просто читают эти четыре байта из таблицы. Они, в некоторых случаях, возращают другой адрес, чем тот, что написан в «настоящем» векторе. И это — делают даже самые ранние версии DOS! Распределение прерываний (кому что принадлежит) — не является секретом (оно описано, скажем, в документации на IBM PC AT) и прерывание 33H там отнесено к разделу «reserved for DOS» — что, собственно, и обозначает, что BIOS его перехватывать не должен.

                                                                                                                                                    Это значит, что если BIOS оставит в мышином векторе прерывания адрес своего драйвера — это процедура отработает как надо — скажет «вектор перехвачен».
                                                                                                                                                    Нет. Безопасно (ну… плюс-минус...) его можно было перехватить (нарушив вполне себе явные гаранции, описанные в документации, заметим) только после выхода Windows XP и объявления о том, что больше основанных на DOS версий Windows не будет — но в это время что-либо делать для DOS было уже бессмысленно… ровно по той причине, что новые версии пересталы выходить, так как их перестали и использовать!

                                                                                                                                                    Что, кроме записи адреса драйвера в вектор прерывания, там ещё делается?
                                                                                                                                                    Ничего — но мы не знаем что и куда записывается. Только DOS знает.

                                                                                                                                                    Да, конечно. Но {драйвер диска } был вшит в ядро PC DOS

                                                                                                                                                    А-а-а!!! (FacePalm...)
                                                                                                                                                    Вот только не надо изображать из себя идиота, а? Тот факт, что драйвер PC DOS (прерывания 25h и 26h) реализован поверх драйвера диска BIOS — мне прекрасно известен. Но это не отменяет того факта, что да, у DOS есть драйвера для диска — и нет, они не обязаны быть частью BIOS. То же самое с мышью — только с тем отличием, что аналога INT 13H для мыши нет.

                                                                                                                                                    Как тут уже сказали: если бы IBM PC (или хотя бы IBM PC AT) поддерживали бы мышь в BIOS — история могла бы сложиться иначе. Но… не срослось. BIOS прерываний для работы с мышью не предоставляет, а INT 33H — для него «чужое», его он не должен трогать.

                                                                                                                                                    Замена модуля оперативной памяти — какого инструмента требует?
                                                                                                                                                    В 80е-то годы? Паяльника. Можете на материнку IBM PC посмотреть — там всё запаяно наглухо. Это кстати, вторая ваша беда: вы категорически отказываетесь рассматривать контекст и считаете что все технологии были доступны всегда.

                                                                                                                                                    Могут и на институт навесить. Если в вашей переписке пробелы обнаружатся.
                                                                                                                                                    Какие пробелы?
                                                                                                                                                    Когда на компанию кто-то подал в суд (а особенно если на команию подал в суд DOJ), то все служебные документы у людей, которые потенциально могут иметь отношение к процессу должны храниться до его окончания — и выдавать по запросу. Причём «презумпция невиновности» не действует: отказ что-либо выдать по запросу суд слонен трактовать как попытку его обмануть.

                                                                                                                                                    Курировать этот процесс вообще должен человек, не числящийся в штате IBM — какой-нибудь аутсорсер.
                                                                                                                                                    Он не просто должен «не числиться». Он ещё общаться с руководителями IBM должен будет на «тайной квартире» так, чтобы следов не осталось. Причём все работники должны соблюдать конспирацию и следить за тем, чтобы не проговориться случайно о том, что этот институт, на самом деле, с нами таки связан, а не просто разрабатывает нужную нам операционку «чисто из любви к искусству». Вы считаете, что это реалистично?

                                                                                                                                                    Что там про «пальцем в небо»? Вы про патентную защиту никогда не слышали?
                                                                                                                                                    Слышал конечно. Но как вы это себе представляете? «Независимый» институт пишет для вас операционку, а потом лицензирует патенты только и исключительно IBM (или наоборот)? Да после этого все руководители в полном составе сменят прописку и будут жить в здании суда в попытках доказать свою невиновность!

                                                                                                                                                    Пошлют — не получат денег
                                                                                                                                                    Учитывая что вам придётся эти деньги передавать тайно, ночью, в чемодане, а ваши конкуренты могут просто выписать чек… их это вполне может не остановить.

                                                                                                                                                    Персональные компьютеры времён DOS — никак не относились к национальной безопасности.
                                                                                                                                                    Если бы. Всё, что связано с компьютерами — всегда было связано с безопасностью. С момента их изобретения. Intel даже специальную модель Pentium'а разрабатывал, которую можно было в Россию ввозить в 1993м (c ухудшенным блоком плавучки). Правда как раз тогда ограничения на импорт «высоких технологий» отменили и, вроде как, это не потребовалось — но это уже самый разгар войны… её исход уже мало у кого вызывал сомнения.

                                                                                                                                                    Каддафи и Дерипаска — делились.
                                                                                                                                                    Когда это Каддафи разделил Ливию???
                                                                                                                                                    Аааа! Вы имели в виду «делиться» в прямом смысле? Ну это-то как раз было бы бессмысленно и ничего бы не изменило.

                                                                                                                                                    Когда компанию делят по решению антимонопольного суда, то это не просто юридическое разделение: после этого идёт тот же процесс, что и с вышеупомянутым удержанием документов. Вы должны регулярно высылать «специально обученному человеку» внутренние документы — а он уже подтверждает, что между разделёнными компаниями нет контактов.

                                                                                                                                                    Просто добровольно разделиться и после этого тупо работать совместно недостаточно — а то все бы так делали.

                                                                                                                                                    Вообще-то, Android приносит деньги. Вроде, по пять баксов с устройства.
                                                                                                                                                    Вы про эту новость? Will — это будущее время в английском. Так, для справки.

                                                                                                                                                    Да, есть ещё одно отличие: Клиент можно заставить работать терминалом. А терминал невозможно заставить работать клиентом.
                                                                                                                                                    Почему нельзя? Я хорошо помню нашу практику на каких-то древних VAX'ах. У них не тарминалах отлично работал Tetris и редактор. И они даже переживали перегрузку основной OS. У мейнфремов терминалы были сравнимой мощности. Фактически то, что вы, собственно, и предлагаете.

                                                                                                                                                    Я так понимаю, Вы не в курсе существования задач, которые на персональных компьютерах того времени не решались в принципе. И именно на такие задачи был нацелен основной бизнес IBM.
                                                                                                                                                    То, что такие задачи есть — я знаю. А про то, что только для таких задач мейнфреймы и использовались… как говорил Станиславский: «не верю». Даже обычные персоналки привели IBM почти к банкротству, а ваши сетевые компьютеры — сделали бы это ещё быстрее (если бы взлетели).

                                                                                                                                                    Ну и какие там скорости?
                                                                                                                                                    Ethernet — 10 Mbps. С поправкой на коллизии — КПД бывает от 30% до 60%, зависит от массы факторов.
                                                                                                                                                    IDE — 16 MB/sec = 128 Mbps. Коллизий там нет — но это скорость не диска, а интерфейса. Скорость же типичного диска была намного ниже.
                                                                                                                                                    И снова та же история. Про то, что первые жёсткие диски давали далеко не 16MB/sec вы вспомнили — молодец. А вот про то, что свитчи — это не 80е, а 90е — забыли. В 80е вы могли получить скорость 10Mbit/sec — на кластер из 20-50 машин! Суммарно! На каждую приходилось хорошо если 300kbit/sec. Это скорость дискеты, а не жёсткого диска.

                                                                                                                                                    А ещё — сервер бывает не только файловый.
                                                                                                                                                    Ха-чёрточка-ха-чёрточка-ха. Файловый сервер — это «новинка сезона» 1983го года! До Netware сервера образы дисков хранили! Получалось дискета — только ещё и на сервере. А нефайловые сервера — это уже 90е. Им пришлось ждать почти десять лет, так как их очень тяжело использовать в однозадачной среде. Хотя теоретически они существовали уже в 1980е…

                                                                                                                                                    Конечно, понятно — ведь вся архитектура компьютера была заточена на локальный диск!
                                                                                                                                                    Всё ещё хуже: все программы были рассчитаны либо на жёсткий, либо, на крайний случай, на гибкий диск! На «больших» компьютерах жёсткие диски появились в 1950е (sic!), а на персоналках — жёстких дисков не было, но и сетей у них тоже не было и вообще их обычно одну-две штуки на отдел покупали, чтобы документы печатать!

                                                                                                                                                    Хотя бы тот факт, что OS/2, разработанная в Microsoft, не принадлежала ей
                                                                                                                                                    А где здесь «прыжок с крыши»?
                                                                                                                                                    Ну нифига ж себе. Снять людей с основного проекта, который приносит тебе основной доход и перебросить их проект, который произведёт нечто, что тебе даже не будет принадлежать — это «не прыжок с крыши»?

                                                                                                                                                    Лично я думаю, что многозадачный MS-DOS 4.0 умер сам — уж слишком архитектура DOS не подходила для многозадачности. Например, в вопросе выделения памяти.
                                                                                                                                                    Да, там много вопросов возникало. Но если вы посмотрите на исходники MS DOS 2 — то вы уже там увидите подготовку к выпуску многозадачной версией! В конце-концов: CP/M на восмибитных компьютерах имела многозадачного родственника — а чем MS-DOS хуже?

                                                                                                                                                    Она была анонсирована и продемонстрирована в 1986м… но так и не вышла, хотя была готовы. Microsoft похоронил её и перебросил разработчиков на OS/2.

                                                                                                                                                    главное, что продавал Microsoft в те годы — был вовсе не MS DOS, а совсем даже компиляторы и интерпретаторы! Всякие COBOL'ы, FORTRAN'ы и PASCAL'и (написанные Microsoft до того… под CP/M, конечно).
                                                                                                                                                    И этот рынок был достаточен для прокормления?
                                                                                                                                                    Ну так, просто, для сравнения: IBM заплатила $700'000 аванса за компиляторы и $50'000 за MS DOS. Да, к началу 90х ситуация изменилась, но в 70e-80е деньги делались не на операционках.

                                                                                                                                                    А ничего, что IBM PC + MS-DOS — это была война против CP/M?
                                                                                                                                                    А ничего, что CBASIC — это 1976й год, а IBM PC — 1981й? Да, после того, как Digital Research «влез» на поле Microsoft — они перестали быть друзьями. Но тут важно понимать кто первым нарушил «джентльменское соглашение»… и это был не Microsoft.

                                                                                                                                                    Ну, мне всегда казалось, что MS выпускала продукцию, создававшую новые проблемы.
                                                                                                                                                    Ну дык а как иначе — решая одни проблемы ты всегда создаёшь какие-то другие.

                                                                                                                                                    Вопрос в том кому ты их создаёшь.

                                                                                                                                                    А взять что-то попроще типа Netware'3.x или Netware Lite — им религия не позволяла?
                                                                                                                                                    А тогда у тебя не было пути «наверх». Netware 3.11-3.12 не могла интегрироваться в NDS. Да, через пять лет Novell осознал что он натворил и выпустил Netware 3.2… но это не было бесплатным дополнением к Netware 4.x (что было бы логично). Вместо этого нужно было покупать обновление! На каждый сервер (если у вас было много подразделений и вы хотели их обновить). Что немедленно дало Microsoft возможность предложить Windows NT Server 4.0 со скидкой и пообещать, что интекрация в будущий домен Windows NT 5.0 будет бесплатной (Windows NT 5.0 превратилась в Windows 2000, но интеграция-таки осталась бесплатной).

                                                                                                                                                    По ссылке — какой-то бред. Автор противопоставляет синхронизацию файлов (это нужно для тех, кт работает) и «twitter, и flickr, и delicious, и picasa, и tripit, и ebay, и миллион других веселых вещей» (для тех, кто развлекается).
                                                                                                                                                    В том-то и дело, что «тем, кто работает» синхронизация файлов не нужна. Им нужно совместно над документами работать. И Microsoft это сделал. В Office 2016 (догадайтесь в каком году). А до этого был Microsoft Hailstorm в 2001м, Windows Live Mesh в 2005м и куча всего ещё.

                                                                                                                                                    Кончилась вся вакханалия когда Стива Баллмера убрали и поставили Сатью — который понимал чем кончается «астронавтика» и начал потихоньку «прищучивать» «астронавтов»…

                                                                                                                                                    Когда MS создавала W'NT — она почему-то не умерла.
                                                                                                                                                    Потому что она, кроме создания Windows NT также продолжала развивать MS-DOS и Windows на базе DOS. Переход на Windows NT был очень плавным и аккуратным. И от DOS и «классического Windows» отказались уже только тогда, когда он мало кому был нужен (Windows 98 поддерживалась до 2006го года).

                                                                                                                                                    А где у Novell было «отдышаться, разобраться с техническим долгом в архитектуре и инвестировать в будущее»?
                                                                                                                                                    Novell Netware 4.x — который изначально не мог работать в одной сети с более ранними версиями! Это кем надо было быть, чтобы такое сделать?

                                                                                                                                                    В самой по себе попытке «отдышаться и инвестировать в будущее» нет ничего плохого. Проблемы возникают тогда, когда вы пытаетесь затраты на это дело переложить на пользователей. Поймите же наконец: пользователи — не инвесторы! Они не хотят и не будут вкладывать ни гроша в ваше будущее. Наоборот — вам, скорее всего, придётся заложить дополнительный бюждет на то, чтобы это ваше «будущее» их не отпугнуло!

                                                                                                                                                    Да, это может показаться несправедливо — но такова жизнь. Microsoft с Биллом Гейтсом это очень хорошо понимал. А вот с Баллмером — нет.
                                                                                                                                                      –1
                                                                                                                                                      Предположить, что, внезапно, кругом не все идиоты и у них была причина делать так, а не иначе — вы, почему-то, не можете.
                                                                                                                                                      Да я прекрасно знаю, что люди, работавшие в MS — не идиоты. Просто у них были иные цели — не «сделать качественно», а «создать юзерам проблемы и потом собрать деньги ещё и на исправлении этих проблем». При этом — ни «невидимая рука рынка», ни государство не могут и не хотят исправить ситуацию.

                                                                                                                                                      Когда программа что-то «знает», то это значит, что где-то внутри неё есть это знание.
                                                                                                                                                      По этой формулировке — «таблица векторов прерываний» д.б. внутри DOS. Что, совершенно очевидно, немного совсем не так — эта таблица существует до DOS, её вообще следует отнести даже не у BIOS, а к аппаратуре.

                                                                                                                                                      Ну действительно: зачем для чтения/записи четырёх байтов из известного адреса заводить целых две функции и кучу «танцев с бубнами»?
                                                                                                                                                      Ну, MS-DOS вообще имеет массу «танцев с бубнами», заведённую ради непонятно чего. Например, драйверы (те, которые грузятся из CONFIG.SYS) должны обслуживать два вызова — совершенно дебильная схема, сделанная ради непонятно чего. Человек, который мне это объяснял — сказал, что это было сделано ради многозадачности, которую в DOS так и не реализовали.

                                                                                                                                                      Вполне очевидно, что работа с векторами прерываний через системный вызов — более универсальная и гибкая, чем обращение напрямую в память; ибо в новых компьютерах таблицу прерываний могут разместить в ином месте. Плюс к тому — при работе с вектором прерываний надо заблокировать прерывания, а потом разблокировать, что некоторые программисты забывают сделать.

                                                                                                                                                      И да — если вы посмотрите на исходники MS DOS (ранние версии Microsoft вполне официально опубликовал), то вы обнаружите, что функции 25H/35H не просто читают эти четыре байта из таблицы. Они, в некоторых случаях, возвращают другой адрес, чем тот, что написан в «настоящем» векторе. И это — делают даже самые ранние версии DOS!
                                                                                                                                                      Честно говоря, мне лень копаться в этих исходниках. Где можно прочитать про это? Я так понимаю, Вы не сами копались в исходниках — ну так поделитесь источником сокровенного знания.
                                                                                                                                                      Заодно хотелось бы услышать — зачем нужно так мухлевать с векторами.

                                                                                                                                                      Распределение прерываний (кому что принадлежит) — не является секретом (оно описано, скажем, в документации на IBM PC AT) и прерывание 33H там отнесено к разделу «reserved for DOS» — что, собственно, и обозначает, что BIOS его перехватывать не должен.
                                                                                                                                                      Насколько я помню, аппаратные прерывания мапируются на общую таблицу извращённым способом — как раз из-за того, что Билл Гейтс привык класть на стандарты и документацию (известна даже его фраза: «мы улучшаем стандарты»; он даже хотел улучшить TCP/IP, чтобы никто другой не мог этим пользоваться).

                                                                                                                                                      BIOS имеет полное право перехватывать любые прерывания: если DOS захочет, то после загрузки перехватит что ему нужно. Рекомендации на тему «reserved for DOS» — относятся к программистам, которые пишут резидентные программы под DOS, в качестве рекомендации не использовать эти прерывания, дабы не создавать коллизий с DOS.

                                                                                                                                                      Вообще, мне странно, что «в документации на IBM PC AT» делается упор на DOS — при том, что на этом компьютере можно было запускать и другие операционки.

                                                                                                                                                      нарушив вполне себе явные гаранции, описанные в документации, заметим
                                                                                                                                                      Ссылочкой на документацию с гарантиями не поделитесь? Особенно учитывая любовь MS писать в EULA «никаких гарантий не гарантируем, всё на страх и риск конечного юзера».

                                                                                                                                                      но в это время что-либо делать для DOS было уже бессмысленно… ровно по той причине, что новые версии перестали выходить, так как их перестали и использовать!
                                                                                                                                                      Проект был начат в 1994 году программистом Джимом Холлом (Jim Hall) как PD-DOS, но вскоре название было изменено на FreeDOS. Версия FreeDOS 1.0 вышла в свет 3 сентября 2006 года.

                                                                                                                                                      Ничего — но мы не знаем что и куда записывается. Только DOS знает.
                                                                                                                                                      Ой, а как же тогда BIOS перехватывает векторы прерываний — ещё до того, как DOS начал грузиться?

                                                                                                                                                      Тот факт, что драйвер PC DOS (прерывания 25h и 26h) реализован поверх драйвера диска BIOS — мне прекрасно известен. Но это не отменяет того факта, что да, у DOS есть драйвера для диска — и нет, они не обязаны быть частью BIOS.
                                                                                                                                                      А-а-а!!! (FacePalm...)

                                                                                                                                                      В DOS нет драйвера диска. Там есть — драйвер раздела/партиции. Как раз из-за него DOS'3.x не мог создавать разделы более 32 MB — при этом сам диск м.б. гораздо больше.
                                                                                                                                                      Вы бы хоть читали то, что написано по ссылкам, которые Вы приводите: «AL = drive number (00h = A:, 01h = B:, etc)». Вот слово «etc» как бы намекает, что там речь о разделах, а не о физических дисках.

                                                                                                                                                      В 80е-то годы? {Замена модуля оперативной памяти требует} паяльника.
                                                                                                                                                      Т.е. сделать DIP-микросхему (стандарт придуман в 1965-м году) для размещения в «кроватке», как это обычно делали с BIOS-ROM и с процессорами 8086 — религия запрещает?

                                                                                                                                                      Можете на материнку IBM PC посмотреть — там всё запаяно наглухо.
                                                                                                                                                      А-а-а!!! (FacePalm...)
                                                                                                                                                      Ну, Вы точно не желаете смотреть ссылки, которые тут приводите. И не желаете признавать ошибки. Кто бы говорил про д'Артаньяна.

                                                                                                                                                      В разделе «Motherboard» я своими старыми слабыми глазами вижу две пустые «кроватки». Одна — в верхнем ряду по центру, чуть левее надписи «16KB-64KB CPU». Вторая — в правом-нижнем углу, строго над разъёмом питания. Возможно, там есть микросхемы в «кроватках» — но я не уверен, ракурс неудобный (а был бы удобный — было бы сложнее разглядывать саму плату, тут я к фотографу не в претензии).
                                                                                                                                                      А ещё там есть несколько ISA-слотов, куда тоже можно воткнуть ПЗУ с операционкой. Ну, так же, как «64KB Memory Expansion» втыкается в ISA — туда же можно воткнуть и ПЗУ.
                                                                                                                                                      Зачем тут паяльник??? Воткнул — и готово!

                                                                                                                                                      все служебные документы у людей, которые потенциально могут иметь отношение к процессу
                                                                                                                                                      Не вести документов вообще — религия запрещает?

                                                                                                                                                      Он не просто должен «не числиться». Он ещё общаться с руководителями IBM должен будет на «тайной квартире» так, чтобы следов не осталось.
                                                                                                                                                      Можно общаться в гольф-клубе — как с мамой Билла Гейтса.

                                                                                                                                                      Но как вы это себе представляете? «Независимый» институт пишет для вас операционку, а потом лицензирует патенты только и исключительно IBM (или наоборот)?
                                                                                                                                                      Ну, тут есть несколько вариантов развития событий. Вот примерные варианты:
                                                                                                                                                      * Институт получает финансирование на исследования; в документах цель не оговаривается, но устно требуют именно операционку, и под это подбирают институт/кафедру. В результате получается «всеобщая» операционка типа Linux или *BSD. Денег за её продажу не получить, но MS вылетает с рынка.
                                                                                                                                                      * Институт выпускает незавершённый продукт, который передаётся в коммерческую контору для окончательной доработки. Вот эта контора и патентует операционку (причём какой-то особый патент тут даже не нужен — программный продукт и так защищается законом).
                                                                                                                                                      * Институт делает операционку, но эта операционка работает только на компьютерах от IBM. А компьютеры защищены патентами.
                                                                                                                                                      * Можно и без института — просто сторонняя коммерческая контора делает операционку. Прямо как MS — но на более правильном (с т.з. IBM) контракте.

                                                                                                                                                      Ха-чёрточка-ха-чёрточка-ха. Файловый сервер — это «новинка сезона» 1983го года!
                                                                                                                                                      Заточенность PC на работу с локальным накопителем привела к замедлению развития сетей.
                                                                                                                                                      Но дата «1983-й год» мне кажется какой-то слишком поздней. Наверняка были файловые серверы на базе больших ЭВМ.

                                                                                                                                                      До Netware сервера образы дисков хранили!
                                                                                                                                                      А можно пруф? Что, и в NFS тоже — образы дисков?

                                                                                                                                                      А нефайловые сервера — это уже 90е. Им пришлось ждать почти десять лет, так как их очень тяжело использовать в однозадачной среде.
                                                                                                                                                      Простите, а что тут тяжёлого? Ну, не считая того, что в однозадачной среде — вообще тяжело.

                                                                                                                                                      Всё ещё хуже: все программы были рассчитаны либо на жёсткий, либо, на крайний случай, на гибкий диск!
                                                                                                                                                      А можете показать мне, где эта заточка? Вроде, программы работали с файлами — и им было пофиг, где эти файлы находятся.

                                                                                                                                                      На «больших» компьютерах жёсткие диски появились в 1950е (sic!), а на персоналках — жёстких дисков не было
                                                                                                                                                      Когда я говорю «локальный диск» или «локальный накопитель» — это и HDD, и FDD, и SSD. Главное, что метаданные файловой системы (FAT, директории) обрабатываются локально.

                                                                                                                                                      жёстких дисков не было, но и сетей у них тоже не было и вообще их обычно одну-две штуки на отдел покупали, чтобы документы печатать!
                                                                                                                                                      Вы опять не понимаете.

                                                                                                                                                      PC имели операционку, загружаемую с локального носителя. Поэтому локальный накопитель — требовался обязательно. А раз так — то и сеть как бы не нужна.

                                                                                                                                                      А вот Acorn сделала компьютеры с операционкой в ПЗУ. И тут можно было легко отказаться от локального накопителя и использовать сеть.

                                                                                                                                                      Снять людей с основного проекта, который приносит тебе основной доход и перебросить их проект, который произведёт нечто, что тебе даже не будет принадлежать — это «не прыжок с крыши»?
                                                                                                                                                      Я так понимаю — деньги на новый проект давала IBM.

                                                                                                                                                      Но если вы посмотрите на исходники MS DOS 2 — то вы уже там увидите подготовку к выпуску многозадачной версией!
                                                                                                                                                      И одновременно вводились стандарты/API, которые в принципе не допускали многозадачности. И по этим стандартам делались программы, совместимость с которыми была необходимой.

                                                                                                                                                      Но тут важно понимать кто первым нарушил «джентльменское соглашение»…
                                                                                                                                                      А было ли это соглашение? И разве это соглашение не должно привлечь внимание антимонопольного комитета?

                                                                                                                                                      Netware 3.11-3.12 не могла интегрироваться в NDS.
                                                                                                                                                      А зачем NDS конторе на пять машин?

                                                                                                                                                      Microsoft с Биллом Гейтсом это очень хорошо понимал. А вот с Баллмером — нет.
                                                                                                                                                      Вы утверждаете, что причины неудач MS — в уходе Билла Гейтса и замещении его Стивом Балмером.
                                                                                                                                                      Но мне всегда казалось, что всё было наоборот: проблемы начались до ухода Билла Гейтса, просто наружу информация не выпускалась; но Билл Гейтс не мог не знать — и решил свалить до того, как проблемы вырвутся наружу.
                                                                                                                                                      Кто из нас прав — решается на основе соображений о том, сколько времени проходит между «босс узнал о проблемах и посчитал их нерешаемыми» и «проблемы вырвались наружу».
                                                                                                                                                        0
                                                                                                                                                        Панельки под микросхемы не означает что их легко можно будет менять. Обычному неподготовленному пользователю будет очень сложно заменить даже такие микросхемы — во первых их надо для начала извлечь не повредив, а во вторых потом ещё и правильно вставить. особенно это касается УФ-стираемых ПЗУ на 28 и 32 вывода. Короче, даже эта операция — исключительно гиковское занятие. В третьих, тогда такие ПЗУ были очень дорогими. Новые вставил, а старые куда солить? Иметь только один комплект микросхем и программатор выйдет ещё дороже. К тому же нужен ещё второй компьютер чтобы прошивать микросхемы от первого, а если неудачная прошивка и не стартует… всё, паника!

                                                                                                                                                        BIOS имеет полное право перехватывать любые прерывания: если DOS захочет, то после загрузки перехватит что ему нужно.

                                                                                                                                                        Тут как раз правило очень простое — кто последний перехватил того и тапки. Биос стартует первым, реализует некоторые из прерываний, потом ДОС — реализует свои прерывания, перехватывает БИОС и в целом тот даже может быть не в курсе. ДОС может прописать свой обработчик прерывания для обращения к дискам, и реализовать функцию RAM-диска к примеру, или сетевого о которых БИОС и слыхом не слыхивала. Но между тем беззастенчиво пользоваться всеми функциями БИОСа ибо он последний и тапки его. Потом приходит драйвер, CD-рома например, и прописывается в прерывание ДОСа… тут важна только одна вещь — БИОС не должен вмешиваться в работу ДОС-а, а ДОС не должен вмешиваться в работу драйвера иначе это чревато.
                                                                                                                                                        п.с. запустится какой-нибудь виндовс и перепишет все прерывания под себя обрабатывая их единолично. Таким образом, например, обеспечивается работа старых приложений в режиме совместимости и если приложение не лезет куда-то напрямую оно продолжает работать(это к тому зачем нужна куча функций вместо прямого чтения из таблицы векторов).
                                                                                                                                              +2
                                                                                                                                              Не существует никакого «мышиного прерывания» на самом деле все эти прерывания — это просто удобный способ реализации вызовов функций. Это только в ДОС-е конкретное прерывание было мышиным, а в другой операционке там могло висеть всё что угодно, и прерывание это создавалось и обрабатывалось драйвером мыши, без драйвера вызов этого прерывания не имел никакого смысла. И если бы БИОС реализовал бы это прерывание как мышиное то в мире остался бы только один производитель и тип «мышей», ведь тогда было бы очень сложно продавать мыши отличные от стандартных двухкнопочных, даже без скролла.
                                                                                                                                                0
                                                                                                                                                Вы фееричны.

                                                                                                                                                Начнём с того, что на PC в подавляющем большинстве случаев использовались DOS или Windows. Т.к. Windows работает в защищённом режиме процессора, ей это неактуально; а значит, имеет смысл поддерживать только DOS. Собственно, приоритетную поддержку именно DOS — никто и не скрывал.

                                                                                                                                                Далее: назначить номер прерывания (и особое значение типа нуля — для отключения этой функции) — можно в настройках (тех самых, которые используют мышь).

                                                                                                                                                И наконец, Вы очень удивитесь — но BIOS поддерживал много разных типов мышей. Равно как и некоторые драйверы — могли работать с разными типами мышей.
                                                                                                                                                А для тех мышей, которые данный BIOS не понимает — ну, остаётся прежний вариант с загрузкой драйвера с диска.
                                                                                                                                                  0
                                                                                                                                                  Т.к. Windows работает в защищённом режиме процессора, ей это неактуально; а значит, имеет смысл поддерживать только DOS.
                                                                                                                                                  Нет, не значит. Начиная с 1993го (Windows 3.1) или 1995го (Windows 95) года DOS рассматривался уже только как то, в чём вы исправляете аварии, приводящие к невозможности запуска Windows.

                                                                                                                                                  Потому поддерживать в нём мышь и прочие разные красивости — было бессмысленно.

                                                                                                                                                  А ни одного BIOS'а с поддержкой мыши, вышедшего до 1993го я не припомню — это скорее уже для XXI века типично… некоторые BIOS'ы сейчас и тачскрин поддерживать умеют. Как устроен драйвер для тачскрина в DOS, не подскажите?
                                                                                                                                                    0
                                                                                                                                                    Биос понимает ровно те мыши которые необходимы для его работы — две кнопки, две координаты и всё. Ему нет ни смысла ни необходимости поддерживать все мыши в мире. Большая часть мышей как раз таки сводятся к стандартному варианту и поэтому работает в БИОСах с поддержкой стандартной мыши. И если использовать тот же драйвер для всех операционок… получится не очень. Поэтому драйвер мыши был отдельным, хоть и мог поддерживаться БИОСОМ теоретически к тому времени в этом смысла уже небыло. А современные «биосы» которые уже UEFI не совсем те биосы что были раньше, вероятней всего там драйвер мыши так же отдельный(как дополнительный модуль БИОСа, например) хоть и кажется что встроенный. Потому что в этом НЕТ СМЫСЛА. На самом деле, те графические интерфейсы биоса что нам представляют уже сами по себе являются операционками, со своим софтом и драйверами.
                                                                                                                                                    Появись мышь раньше, вместе с клавиатурой к примеру, может всё было бы и по другому.
                                                                                                                                                      –1
                                                                                                                                                      Я упорно не понимаю, что значит «Биос понимает ровно те мыши которые необходимы для его работы». Мне кажется — BIOS должен понимать максимально возможное разнообразие мышей.
                                                                                                                                                      Вообще, слово «понимать» в данном контексте — это про протокол передачи данных от мыши в компьютер. А вовсе не про число кнопок — которое обычно бывает две или три, а вот протоколов передачи там уйма.

                                                                                                                                                      Вы говорите: «графические интерфейсы биоса что нам представляют уже сами по себе являются операционками, со своим софтом и драйверами». Ну так объясните мне, какого фига я не могу работать, пока не загружу нормальную операционку с внутреннего HDD, с внешнего HDD/Flash, с вставленного в дисковод CD/DVD-диска или ещё как-то. Зачем нужна операционка в ПЗУ, если она не позволяет работать, а только и умеет, что грузить другую операционку?
                                                                                                                                                      Наверно, чисто попилить бюджет на разработке UEFI, который в конечном счёте делает практически то же, что и древний BIOS. Зато весь из себя модульный и всё такое прочее. Но на фига???
                                                                                                                                                        +1
                                                                                                                                                        Так и надо понимать — для работы в БИОСе ничего кроме координат курсора и двух кнопок от мыши не надо, поэтому этот драйвер там и реализован. У мышей протокол передачи очень прост, и их там не так уж много — они постоянно передают состояние всех кнопок и дельты перемещения по осям с предыдущего опроса. Всё. Именно это и реализовано в простом драйвере.
                                                                                                                                                        А мыши тем временем бывают и со скролом, и с 17-ю дополнительными кнопками и… чего только не бывает!
                                                                                                                                                        Заложить сразу в протокол и драйвер 17 кнопок? А если завтра сделают мышь с 64-мя кнопками, гиродатчиком и акселлерометром? Это всё тащить в микросхему БИОСа объёмом в 128кБайт, в который порой не влазит даже так необходимый драйвер рейд-массива… Нет, ну потом конечно объёмы ПЗУ увеличились, только… драйвер мыши и даже драйвер клавиатура стал невостребованным, т.к. у каждой операционки уже были свои более универсальные, легко расширяемые решения. Вот представь в драйвер мыши в БИОСе закралась досадная ошибка, через пол часа теряется один байт и мышь становится «бешенной». Насколько оперативно можно исправить этот баг? БИОСы тогда шились на программаторах, а прошивка прямо в плате это был огромнейший риск сделать кирпич(что впрочем у меня пару раз и получалось).
                                                                                                                                                        Ну и потом пошли всякого рода UEFI которые представляли собой наборчик функций почти как у старого БИОСа только новее, правильнее и безопаснее, собственную операционку на основе линукса в том же ПЗУ и всё такое.
                                                                                                                                                        Спрашиваете нафига? А всё потому что старый БИОС состоял из дикого количества костылей, был дыряв в плане безопасности(в него можно прошить любой код троянца и он будет исполнен). Ну и заодно, раз осталось немного места во флеше, реализовали возможность слушать музыку без установленной основной операционки. А кое-где был доступен даже браузер. Но опять же, прогресс стал столь стремительным, что те браузеры сильно устарели а обновлять на современный ни объёмов памяти ни ресурса не осталось и вообще это снова стало бесмысленным, когда есть гораздо более оперативно обновляемые лайв-операционки и с большими возможностями. Ну правда, не перепрошивать же БИОС каждый месяц с риском получить кирпич.

                                                                                                                                                        Кстати, раз такое пошло… почему бы тогда в БИОС не добавить: драйвера на все сетевые карты, принтеры, сканеры и прочее прочее… Но увы, там находилось и находится всё только необходимое для работы. Кстати, вот ещё одна проблема: на моей плате в БИОСе нет драйверов для USB 3.0 портов а значит оттуда ни загрузится, ни обновление прошивки поменять и вообще ни-че-го с ним не сделать.
                                                                                                                                                          0
                                                                                                                                                          А в моём BIOS'е есть драйвер тачскрина и всё сопутствующее хозяйство. Вот нафиго оно там?
                                                                                                                                                            0
                                                                                                                                                            Кто-то прикольнулся. А точно BIOS, случайно не UEFI? он может быть предназначен для ноутов с тач-скрином, через тач БИОС настраивать или UEFI.