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

Original author: Foone Turing
  • Translation
Сейчас 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:

Support the author
Share post

Similar posts

Comments 254

    +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
                              Я не думаю что в переводе стоит заменять одни события на другие из другой части света. Это все же перевод, а не статья на ту же тему.
                              • UFO just landed and posted this here
                                  0
                                  С этим — согласен, сноски были бы в тему. И уже в них можно было и историческую справку дать и аналоги из культуры другой страны.
                                0
                                … и не интересовавшемуся ничем за его пределами. Хотя, отсылок как-то многовато, больше похоже на тоску по молодости, а не описанию бага (бага ли?)
                                +2
                                А в оригинале это и есть поток сознания. Тред в твиттере: twitter.com/Foone/status/1058676834940776450
                                  +1
                                  Вот она, новая эпоха переводов на хабре! :(
                              +7
                              Первые четыре абзаца — прям Намедни. Я, конечно, понимаю, что перевод и это разговор с копипастой в пустоту, но тяжело читать столько воды в одном месте.
                              • UFO just landed and posted this here
                                  +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. В обычной версии заставили сделать окно выбора браузера и когда оное «случайно» при обновлении пропало выписали неплохой такой штраф.

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

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

                                                                                                                                                Но вернёмся к исходной теме.
                                                                                                                                                Допустим, IBM финансирует независимую фирму/университет, и там делает бесплатную операционку. Что власти могут предъявить в этом случае?

                                                                                                                                                Ну и наконец, остаётся та возможность, которую применила Intel: надо создать псевдоконкурента. Т.е. Билл Гейтс должен был бы сделать фирму, которая выпустила бы альтернативный браузер. И включить этот браузер в дистрибутив.
                                                                                                                                                  0
                                                                                                                                                  Практически для любого значимого продукта — можно найти рынок, на котором он будет монополистом.
                                                                                                                                                  Серьёзно? Просветите?

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

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

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

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

                                                                                                                                                  Допустим, IBM финансирует независимую фирму/университет, и там делает бесплатную операционку. Что власти могут предъявить в этом случае?
                                                                                                                                                  Демпинг с целью уничтожения конкурента. Вот если бы институт сам, без чужих денег что-то разработал, тогда да. А если ему даёт денег доказанный монополист…

                                                                                                                                                  Ну и наконец, остаётся та возможность, которую применила Intel: надо создать псевдоконкурента.
                                                                                                                                                  Создать нельзя — можно только следить за тем, чтобы он не умер. AMD получила лицензию, в своё время, по требованию IBM. Но тогда на рынке персоналок Intel не был монополистом — даже и близко. А сейчас внутри Intel действует жёствое правило: никто и ни при каких условиях не должен ссылаться на то, что он знает об AMD и что не является публичной информацией. Ибо обвинят в картельном сговоре — и… мало не покажется.

                                                                                                                                                  Т.е. Билл Гейтс должен был бы сделать фирму, которая выпустила бы альтернативный браузер.
                                                                                                                                                  В тот момент, когда суд установил, что ты монополист — уже поздно делать подобное. Так как суд будет (вполне логично) считать что фирма нужна для обхода ограничений.
                                                                                                                                                    +1
                                                                                                                                                    Серьёзно? Просветите?
                                                                                                                                                    Ну, я уже огласил пример.
                                                                                                                                                    Могу привести другой пример: одно время RedHat была практически монополистом на рынке Linux-систем. Т.е. выделяем из «рынка персоналок» «рынок Linux-систем» — и выявляем там монополиста. Или выделяем «рынок Unix-систем» — и видим там Linux в роли монополиста.
                                                                                                                                                    «Закон — как дышло: куда повернул, туда и вышло.»

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

                                                                                                                                                    И любой юрист, проведя экспертизу, докажет, что в найтоящее время во многих случаях замена, скажем, ноута на телефон — невозможна.
                                                                                                                                                    Ключевое слово в этой фразе = «экспертиза». Я тут как бы намекаю, что её проводит эксперт — т.е. произвольно выбранный человек. Приведём одного человека — он заявит, что можно заменить. Приведём другого — он заявит, что разница слишком сильная, чтобы замену можно было считать равноценной. А кому поверит суд — это тоже вопрос субъективного мнения судьи (ну и объективной генеральной линии, которая предписывает верить толерантности).

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

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

                                                                                                                                                    Что вы знаете о том, как работает мир, а никто больше не знает.
                                                                                                                                                    Ой, да это знает масса людей.

                                                                                                                                                    И если факты не согласуются с вашими теориями загвора
                                                                                                                                                    Так, стоп-стоп-стоп! Вы сказали «теория заговора»? Давайте определение!
                                                                                                                                                    Только не говорите мне, что заговоров не бывает. А то я Вам быстро ссылок накидаю — «заговор генералов против Гитлера», «пороховой заговор» и ещё тысячу.

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

                                                                                                                                                    Кстати. Билла Гейтса почему-то не зажопили, когда он продавал DOS дешевле, чем его конкурент продавал CP/M. Я же говорил, что в этом вопросе царят произвол и коррупция.

                                                                                                                                                    Вот если бы институт сам, без чужих денег что-то разработал, тогда да. А если ему даёт денег доказанный монополист…
                                                                                                                                                    Дать денег через «прокладку»?

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

                                                                                                                                                    А сейчас внутри Intel действует жёствое правило: никто и ни при каких условиях не должен ссылаться на то, что он знает об AMD и что не является публичной информацией.
                                                                                                                                                    Что значит «ссылаться»?

                                                                                                                                                    В тот момент, когда суд установил, что ты монополист — уже поздно делать подобное.
                                                                                                                                                    Разумеется, такие фирмы надо создавать заранее. И не одну.
                                                                                                                                                      –1
                                                                                                                                                      Серьёзно? Просветите?
                                                                                                                                                      Ну, я уже огласил пример.
                                                                                                                                                      Вы привели не пример, а фантазии на тему. Определять «рынок машин весом 915кг и размерами 1650мм x 1402 мм x 4006мм», где Лада будет монополистом — вам никто не даст. Всем понятно, что если разрешить комитетут определять «границы рынка» произвольным образом — то ничего из этого не выйдет. Потому есть пояснения и разъяснения.

                                                                                                                                                      «Закон — как дышло: куда повернул, туда и вышло.»
                                                                                                                                                      И именно для того, чтобы это происходило не так часто — есть адвокаты и многоуровневая система аппeляций.

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

                                                                                                                                                      Только не говорите мне, что заговоров не бывает. А то я Вам быстро ссылок накидаю — «заговор генералов против Гитлера», «пороховой заговор» и ещё тысячу.
                                                                                                                                                      Смешались в кучу кони, люди… Любой заговор — ограничен в своих масштабах. Если десятком-другим человек что-то можно «такое» замыслить и осуществить, то заговором в которые вовлечены тысячи или, как вы утверждаете, миллионы — как правило долго не живут. И вы это на всех ваших ссылках прочитаете.

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

                                                                                                                                                      Кстати. Билла Гейтса почему-то не зажопили, когда он продавал DOS дешевле, чем его конкурент продавал CP/M.
                                                                                                                                                      Потому что Caldera предпочла $280 миллионов.

                                                                                                                                                      Вот если бы институт сам, без чужих денег что-то разработал, тогда да. А если ему даёт денег доказанный монополист…
                                                                                                                                                      Дать денег через «прокладку»?
                                                                                                                                                      А где гарантия, что деньги не будут забраны, а результата не будет? Официально вы ведь ничего требовать не можете…

                                                                                                                                                      А сейчас внутри Intel действует жёствое правило: никто и ни при каких условиях не должен ссылаться на то, что он знает об AMD и что не является публичной информацией.
                                                                                                                                                      Что значит «ссылаться»?
                                                                                                                                                      Написать что-нибудь типа: мы должны делать A, потому что AMD делает B. Если этой информации нет в СМИ — то ссылаться не неё нельзя. Нигде. Даже во внутренней переписке.
                                                                                                                                                        +1
                                                                                                                                                        Определять «рынок машин весом 915кг и размерами 1650мм x 1402 мм x 4006мм», где Лада будет монополистом — вам никто не даст.
                                                                                                                                                        Ну так кто я такой, чтобы это дали определять мне? А там есть специально обученные люди — эксперты!

                                                                                                                                                        есть адвокаты и многоуровневая система аппeляций.
                                                                                                                                                        А адвокаты как раз и занимается тем, что крутят дышло. Суд же просто смотрит — кто ловче крутит; в этом и есть суть состязательного процесса, в котором судья не ищет истину, а тупо сравнивает умение сторон болтать языком.

                                                                                                                                                        Для этого существует экспертиза.
                                                                                                                                                        О том, что такое «экспертиза», и кто такой «эксперт» — я уже говорил выше.

                                                                                                                                                        Если десятком-другим человек что-то можно «такое» замыслить и осуществить, то заговором в которые вовлечены тысячи или, как вы утверждаете, миллионы — как правило долго не живут.
                                                                                                                                                        Простите, а где я говорил про миллионы участников заговора?

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

                                                                                                                                                        Или вот ещё перл: «Демпинг нарушает правила справедливой конкуренции». «Справедливой», Карл!
                                                                                                                                                        Понятие справедливости в отношении конкуренции — это примерно как понятие цвета в отношении дня недели. Бывает ли синий вторник?

                                                                                                                                                        (Оффтопик: Тексты из Википедии следует воспринимать критично. Если про математику там обычно нормальные тексты, то про историю, политику и экономику — очень часто бывают запредельно ангажированные.)

                                                                                                                                                        Потому что Caldera предпочла $280 миллионов.
                                                                                                                                                        Caldera продавала CP/M ???

                                                                                                                                                        А где гарантия, что деньги не будут забраны, а результата не будет?
                                                                                                                                                        Деньги выделяются траншами, каждый этап работы оплачивается отдельно.
                                                                                                                                                          0
                                                                                                                                                          Простите, а где я говорил про миллионы участников заговора?
                                                                                                                                                          DOJ, ЕК, десятки антимонопольных комитетов (в том числе, скажем, Китайский) и связанных с ними судов… это много народу получается. Очень много.

                                                                                                                                                          И, если, как вы утверждаете, они дружно вертят законом так, как им хочется… то это и есть заговор на миллион человек.

                                                                                                                                                          Потому что Caldera предпочла $280 миллионов.
                                                                                                                                                          Caldera продавала CP/M ???
                                                                                                                                                          Caldera купила Digital Research — вместе с открытым иском к Microsoft. А Digital Research — та, разрабатывал и продавал CP/M.

                                                                                                                                                          А где гарантия, что деньги не будут забраны, а результата не будет?
                                                                                                                                                          Деньги выделяются траншами, каждый этап работы оплачивается отдельно.
                                                                                                                                                          Чем больше вы разводите подобной возни — тем больше денег уходит посреднкам и выше шанс «прокола». А у вас без этой «бессмысленной и беспощадной» войны «финансы поют романсы» (не забываем, что как раз примерно когда IBM попыталась резко и изменить курс истории с помощью PS/2 и OS/2 как раз начался массовый спад продаж на рынке мейнфреймов и к началу 90х IBM работала в убыток).
                                                                                                                                                            0
                                                                                                                                                            И, если, как вы утверждаете, они дружно вертят законом так, как им хочется… то это и есть заговор на миллион человек.
                                                                                                                                                            Карманными кражами, рэкетом, разными видами коррупции и прочими преступлениями занимаются гораздо большее число людей. Но никто не делает вывода о мировом заговоре карманников, рэкетиров или коррупционеров (хотя локальные заговоры рэкетиров и коррупционеров существуют; ну а карманники часто работают сами по себе).

                                                                                                                                                            Чтобы вертеть законом в одной локальной стране — совершенно не нужно создавать заговор с теми, кто вертит законом в соседней стране. Это же внутренние дела.

                                                                                                                                                            А как Вы насчитали миллион человек? Секретарш, сисадминов и уборщиц в судебной палате тоже посчитали?

                                                                                                                                                            Caldera купила Digital Research — вместе с открытым иском к Microsoft. А Digital Research — та, разрабатывал и продавал CP/M.
                                                                                                                                                            И сколько лет Digital Research не могла добиться правды?

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

                                                                                                                                                            как раз начался массовый спад продаж на рынке мейнфреймов и к началу 90х IBM работала в убыток
                                                                                                                                                            Ну, собственно, ничего неожиданного в этом нет — IBM доигралась с выпуском открытой архитектуры PC и сама вырыла себе яму.

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

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

                                                                                                                                                            Ну так понятно, что коррупция до добра не доводит. Впрочем, высшим менеджерам IBM на это плевать — свои бонусы они получили.
                                                                                                                                            +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
                                                                                                                                                          ДОС может прописать свой обработчик прерывания для обращения к дискам, и реализовать функцию RAM-диска к примеру, или сетевого о которых БИОС и слыхом не слыхивала.
                                                                                                                                                          Я не знаю, как реализована функция RAM-диска. Но не вижу ни одной причины перехватывать прерывание у BIOS — всё это более чем решается через драйвер раздела.
                                                                                                                                                          Кстати, насколько я помню — у HDD и у FDD в BIOS имеются совершенно разные драйверы, работающие на разных прерываниях. Какое из них Вы предлагаете перехватить?

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

                                                                                                                                                          Потом приходит драйвер, CD-рома например, и прописывается в прерывание ДОСа…
                                                                                                                                                          Вообще-то, у CD-ROM всегда было два драйвера — драйвер устройства и драйвер файловой системы. Вы сейчас о каком из них?

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

                                                                                                                                                          если приложение не лезет куда-то напрямую оно продолжает работать(это к тому зачем нужна куча функций вместо прямого чтения из таблицы векторов).
                                                                                                                                                          Если Windows держит на тех же прерываниях те же функции — то опять нет никакой разницы, читать значения векторов напрямую или через DOS.
                                                                                                                                                          Капитан Очевидность как бы намекает, что команда INT читает значения вектора прерывания напрямую, а не через DOS.
                                                                                                                                                            0
                                                                                                                                                            Я не знаю, как реализована функция RAM-диска. Но не вижу ни одной причины перехватывать прерывание у BIOS — всё это более чем решается через драйвер раздела.

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


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


                                                                                                                                                            Реализовать сетевой диск перехватом функций BIOS — в принципе невозможно.

                                                                                                                                                            Правильно, поэтому он реализовывается перехватом соответствующих функций DOS.

                                                                                                                                                              –3
                                                                                                                                                              Никакого интерфейса для драйверов в DOS не было.
                                                                                                                                                              Всё взаимодействие с железом осуществлялось через определённые прерывания.
                                                                                                                                                              А-а-а!!! (FacePalm...)

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

                                                                                                                                                              А ещё бывают драйверы протоколов. Например, файловых систем или баз данных.

                                                                                                                                                              В DOS было отдельное понятие для этого слова — программа, которая запускалась из CONFIG.SYS через «DEVICE=...».

                                                                                                                                                              Драйвером называлась резидентная программа, которая перехватывала эти прерывания и реализовывала дополнительный функционал.
                                                                                                                                                              Кстати — не обязательно резидентная. Я видел BNU-драйвер, который не был резидентным. Он запускался, перехватывал прерывание, запускал из себя указанную ему программу; а когда она завершалась, драйвер верталд прерывание взад и завершался.

                                                                                                                                                              Правильно, поэтому он реализовывается перехватом соответствующих функций DOS.
                                                                                                                                                              Ага. Вот только это не было «диск». Как обычно — у MS предельно кривая терминология, специально сделанная для затуманивания сути.
                                                                                                                                                                +2
                                                                                                                                                                Вот только никому не нужен RAM-диск со своим особым интерфейсом! Весь смысл RAM-диска — в том, что он притворяется диском обычным.
                                                                                                                                                                  0
                                                                                                                                                                  Я в упор не понимаю, что значит «со своим особым интерфейсом», если у реальных FDD, IDE-HDD и SCSI-HDD интерфейсы разные. Скажите конкретнее, где у RAM-диска должно появиться что-то особое.

                                                                                                                                                                  Кстати, есть вариант — держать на RAM-диске не FAT, а особую файловую систему. Например, RAM-диску совершенно не требуется распределять пространство кластерами — пространство можно распределять хоть побайтно. И можно держать все файлы непрерывными, ибо дефрагментация RAM-диска обходится очень дёшево.

                                                                                                                                                                  Вот кстати, CD-ROM имеет свою файловую систему (не FAT). И, имея особый интерфейс — не создаёт никаких проблем.
                                                                                                                                                                    +1
                                                                                                                                                                    Я в упор не понимаю, что значит «со своим особым интерфейсом», если у реальных FDD, IDE-HDD и SCSI-HDD интерфейсы разные.

                                                                                                                                                                    Работа и с FDD, и с HDD в DOS ведётся через один и тот же системный вызов (INT 13h) с одинаковым API, а каким образом работа ведётся на низком уровне, это забота BIOS и драйверов. Значит, и RAM-диск должен реализовывать тот же API, чтобы система могла прозрачно его использовать.


                                                                                                                                                                    Кстати, есть вариант — держать на RAM-диске не FAT, а особую файловую систему.

                                                                                                                                                                    Можно, но это более сложный вариант, так как реализовать блочное устройство намного проще, чем реализовать файловую систему.


                                                                                                                                                                    Вот кстати, CD-ROM имеет свою файловую систему (не FAT). И, имея особый интерфейс — не создаёт никаких проблем.

                                                                                                                                                                    Проблема в памяти, занимаемой драйвером. Когда от 640 КБ драйвер CD-ROM отъедает несколько десятков килобайт, становится как-то не очень приятно.

                                                                                                                                                                  0
                                                                                                                                                                  Драйвер — это программа, специфичная для железки, и реализующая стандартный интерфейс для работы с этой железкой.

                                                                                                                                                                  Правильно. Но этим стандартным интерфейсом была система прерываний.


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

                                                                                                                                                                  Как по мне — довольно простая и удобная для домохозяек. Никаких заморочек с точками монтирования. Каждое устройство (раздел) — отдельный диск.

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

                                                                                                                                                                      Понятия таки разные. "Системная функция" — это назначение вызова, а "программное прерывание" — это его реализация.


                                                                                                                                                                      Кстати, когда появился защищённый режим x86, это оказалось не просто удобным, а вообще единственным способом переключиться в режим ядра до изобретения инструкции syscall/sysenter.

                                                                                                                                                                        0
                                                                                                                                                                        а вообще единственным способом переключиться в режим ядра до изобретения инструкции syscall/sysenter.

                                                                                                                                                                        Я не помню деталей, но разве нельзя сделать вызов напрямую через селектор TSS?
                                                                                                                                                                          0
                                                                                                                                                                          Разве TSS доступен в user mode?
                                                                                                                                                                            0
                                                                                                                                                                            Я не помню деталей, но по идее мы можем вызвать код через селектор TSS в GDT напрямую. Как там с RPL/DPL не знаю, никогда таким способом не пользовался.