image

Никогда не сдавайтесь


Действительно ли Билл Гейтс произнёс фразу «640 КБ должно хватить всем»? Её история довольно туманна, однако чаще всего её приписывают Биллу, так что, возможно, он действительно такое говорил.

Его довольно часто за это высмеивали. Мысль о общем пространстве памяти размером всего 640 КБ по современным стандартам смехотворна. В этот размер не уместится даже исполняемые файлы большинства программ-установщиков.

Для сравнения: калькулятор в Windows 10 занимает в состоянии простоя 16,2 МБ оперативной памяти — почти в 26 раз больше, чем объём доступной DOS-программам памяти в 1980-х.

Странные дела


Поверите ли вы мне, если я скажу, что до сих пор существует активное сообщество, использующее эту устаревшую платформу и разрабатывающее для неё ПО?

Наверно, вашим первым вопросом будет «Но зачем?» И я хорошо вас понимаю. Давайте рассмотрим некоторые группы, которые до сих пор заинтересованы во вложениях усилий в DOS.

Разработчики legacy-систем

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

Незатратные системы реального времени

DOS в сущности является операционной системой реального времени (ОСРВ). Она не была специально разработана для этой цели, но её минималистичный дизайн позволяет отнести её к другим подобным системам.

ОСРВ характеризуются предсказуемой задержкой программных и аппаратных запросов. Так как DOS имеет минимальный API без внутренней многозадачности, стабильность задержек вызовов операционной системы довольно высока.

Хотя уже существуют более современные примеры систем реального времени с улучшенным дизайном и разработанные специально для этой цели, тончайший интерфейс DOS между приложением и оборудованием даёт ей преимущество в этой области использования. Поскольку такие системы, как FreeDOS (которую я рассмотрю ниже) имеют открытые исходники и распространяются бесплатно, они являются хорошей альтернативой другим ОСРВ.

Ностальгические видеоигры

Современные видеоигры потрясающи. Они требуют огромной мощи 3D, но графика, звук и геймплей иногда настолько реалистичны, что их можно спутать с реальностью. Оборудование виртуальной реальности ещё больше усиливает это ощущение, позволяя игрокам полностью погрузиться в среду игры.

Но несмотря на весь этот прогресс, многие геймеры, бывшие детьми в 80-х и начале 90-х, с любовью вспоминают времена, когда примитивная (по современным стандартам) графика и синтезаторные звуки заставляли их заполнять пробелы собственным воображением.

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

Если вы считаете, что этот рынок ограничен кучкой пенсионеров, пытающихся вернуться в своё технологическое детство, то вы ошибаетесь. Дэвид Мюррей, больше известный в YouTube как The 8-bit Guy, имеет более полумиллиона подписчиков, которые еженедельно исследуют территорию ностальгического компьютерного «железа». Он даже написал стратегию реального времени для Commodore 64 под названием PlanetX2. Проект имел такой успех, что Дэвид распродал все физические запасы носителей с игрой и планирует создать сиквел для платформы DOS.

Запустите DOS


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

Для начала немного поговорим о лицензии. По некоторым данным, Microsoft сделала MS-DOS 6.22 общественным достоянием, но мне не удалось найти этому подтверждения. Поскольку ПО можно легко скачать из достаточно безопасных онлайн-источников, я не сторонник установки того, что может нарушать права на копирование. Даже если у вас есть законно приобретённая копия (а я подозреваю, что она есть у многих), её установка на виртуальную машину может быть юридически рискованным поступком.

Чтобы упростить установку, мы воспользуемся FreeDOS. FreeDOS — это клон DOS с открытым исходным кодом, написанный Джимом Холлом. Джим начал разработку в июне 1994 года, когда Microsoft заявила о том, что больше не будет продавать и поддерживать MS-DOS. Через несколько недель к проекту присоединились Пэт Виллэни и Тим Норман. Всего через несколько месяцев появилась версия 0.01. Сегодня мы пользуемся версией 1.2, выпущенной на Рождество 2016 года.

Сначала мы зайдём на веб-сайт FreeDOS и скачаем ISO-образ стандартного установщика на CD-ROM. Также можно скачать USB-версию, но с учётом различий в «железе», BIOS и т.д. мы не будем рассматривать здесь этот способ. Вместо этого мы воспользуемся виртуализацией.

Я протестировал FreeDOS и с VirtualBox Oracle, и с VMware Workstation / Player. Оба продукта работают хорошо, однако VMware обеспечивает немного более качественную эмуляцию BIOS и эмулирует PC speaker, используемый во многих играх для DOS. В примерах ниже я буду использовать VMware Workstation, но в принципе подойдёт любая система.

По умолчанию вариантами установки для FreeDOS являются VirtualBox и VMware. Вас может удивить, насколько мало выделяется ОЗУ и дискового места. Обычно я создаю для DOS двухгигабайтный диск, но и выбранных по умолчанию 512 МБ будет вполне достаточно.

Установка FreeDOS проста, достаточно загрузиться в виртуальной машине с ISO-образа (запрос файла ISO будет выдан при запуске или при создании виртуальной машины) и следовать экранным подсказкам. После того, как FreeDOS разобьёт диск и перезагрузится, снова выберите «Install to Hard Disk». Выберите «Full Installation» или «Full Installation with Sources», если вы любите видеть, как всё работает. Вы читаете эту статью, поэтому скорее всего так и есть, тогда почему бы не установить и исходники?

После установки необходимо будет перезагрузиться. На этот раз вместо выбора «Install to Hard Disk» в загрузочном меню CD выберите «Boot from System Hard Disk». Вариант по умолчанию Jemmex (with no EMS) вполне подходит для стандартной загрузки, особенно если вы хотите заняться разработкой.

Технически система FreeDOS готова к работе, только пока ещё полностью «голая». В таком состоянии удобно запускать игры и программы DOS, но оно не совсем подходит для разработки, потому что у нас нет важных инструментов.

Милый FDimples


Теперь настало время установить в FreeDOS немного программного обеспечения. ОС содержит в себе замечательную систему правления пакетами FDimples. Чтобы воспользоваться ею, введите:

fdimples

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


Потрясающий пакетный менеджер с милым названием.

Для перемещения между категориями и пакетами можно использовать клавиши со стрелками. Пробелом выбираются отдельные пакеты, ENTER — целые категории. Какой бы вариант вы ни выбрали, обязательно отметьте категорию Development. Для запуска установки нажимайте TAB, пока не будет выбрана кнопка OK, затем нажмите ENTER.

От C++ не спрятаться


Но вы и не стремитесь, не так ли? C++ замечателен, и благодаря Ди Джею Делори производительность и возможности GNU Compiler Collection теперь доступны и в DOS.

Более того, с помощью поставляемого в комплекте расширителя DOS CWSDPMI программы могут использовать защищённый режим и компилироваться в 32-битные исполняемые файлы без малейших проблем. Вы сможете преодолеть барьер 640 КБ с большим запасом. Выкусите, мистер Гейтс!

Чтобы проверить работоспособность среды разработки, давайте создадим новую папку и тестовый проект:

mkdir C:\src
mkdir c:\src\hello
rhide c:\src\hello\hello.cpp

При этом запустится среда разработки RHIDE. Она не дотягивает до уровня Visual Studio, но для наших нужд разработки вполне достаточна. Мне она напоминает среду Borland Turbo-C, с которой связано множество приятных воспоминаний.


От этого интерфейса по телу разливается тепло и пробегают мурашки.

Вот обязательный тестовый код:

#include <iostream>
using namespace std;

int main() {
  cout << “Hello, World!\n”;
  return 0;
}

Теперь можно запустить код с помощью меню «Run» (или нажав ALT+R, а затем R или CTRL+F9). Вы заметите, что можно пользоваться мышью и горячими клавишами. Поначалу мыши достаточно, но стоит запомнить горячие клавиши, которые указаны рядом с различными элементами меню. Проведя какое-то время в RHIDE, вы запомните самые важные из них и ваша продуктивность значительно увеличится!

Более интересный пример


Давайте сделаем что-нибудь более интересное. Для начала давайте создадим рабочее пространство:

mkdir c:\src\example
rhide c:\src\example\example.cpp

В этом примере мы покажем, как задаются видеорежимы, указываются пиксели и выполняется управление цветом в режиме VGA 320x200x256.

#include <iostream>
#include <dpmi.h>
#include <unistd.h>
#include <go32.h>
#include <sys/farptr.h>
#include <stdlib.h>
#include <dos.h>
 
#define COLOR_WHITE 15
#define MAX_WIDTH 320
#define MAX_HEIGHT 200

using namespace std;

void set_video_mode(int mode) {
  // Создаём структуру для регистров
  __dpmi_regs r;
 
  // Задаём AX значение видеорежима
  r.x.ax = mode;
 
  // Вызываем int 10 (установка видеорежима BIOS)
  __dpmi_int(0x10, &r);
}

void put_pixel(int x, int y, int c) {
  // Видеопамять VGA находится по адресу A000, поэтому давайте выполнить запись в него.
  _farpokeb(_dos_ds, 0xA0000+y*320+x, c);
}

void clear_pixel(int x, int y) {
  // Мы просто записываем пиксель 0, чтобы очистить точку
  _farpokeb(_dos_ds, 0xA0000+y*320+x, 0);
}

void draw_effect() {
  // Текущие координаты x и y
  int x = 0;
  int y = 0;

  // Для каждого до y_max записываем пиксель
  for (y = 0; y < MAX_HEIGHT, y++) {
    for (x=0; x < MAX_WIDTH, x++) {
      put_pixel(x, y, rand()%(15+1));
    }
  }
}

int main() {
  // Устанавливаем видеорежим 13h (320x200x256)
  set_video_mode(0x13);

  // Отрисовываем эффект
  draw_effect();

  // Ожидаем нажатия клавиши ENTER
  cin.ignore();

  // Возвращаемся в текстовый режим
  set_video_mode(3);

  return 0;
}

Пример с движением


В этом примере мы на основе предыдущего примера добавим управляемое пользователем движение. Мы будем использовать клавиши со стрелками, чтобы перемещать пиксель по экрану. Это станет фундаментом того, что может превратиться в видеоигру.

#include <iostream>
#include <dpmi.h>
#include <unistd.h>
#include <go32.h>
#include <sys/farptr.h>
#include <stdlib.h>
#include <dos.h>

#define COLOR_WHITE 15
#define MAX_WIDTH 320
#define MAX_HEIGHT 200

#define KEY_ESC 283
#define KEY_UP 18432
#define KEY_DOWN 20480
#define KEY_LEFT 19200
#define KEY_RIGHT 19712

using namespace std;

void set_video_mode(int mode) {
  // Создаём структуру для регистровs
  __dpmi_regs r;
 
  // Задаём AX значение видеорежима
  r.x.ax = mode;
 
  // Вызываем int 10 (установка видеорежима BIOS)
  __dpmi_int(0x10, &r);
}

void put_pixel(int x, int y, int c) {
  // Видеопамять VGA находится по адресу A000, поэтому давайте выполнить запись в него.
  _farpokeb(_dos_ds, 0xA0000+y*320+x, c);
}

void clear_pixel(int x, int y) {
  // Мы просто записываем пиксель 0, чтобы очистить точку
  _farpokeb(_dos_ds, 0xA0000+y*320+x, 0);
}

int get_key() {
  // Создаём структуру для регистров
  __dpmi_regs r;
  // Присваиваем AH значение 00h для вызова BIOS
  r.x.ax = 0x0000;
  // Вызываем int 16 (обработчик клавиатуры BIOS)
  __dpmi_int(0x16, &r);
  // Возвращаем значение AX (полный скан-код)
  return r.x.ax;
}

int main() {

  // Устанавливаем видеорежим 13h (320x200x256)
  set_video_mode(0x13);

  // Основной цикл
  int running = 1;
  int curkey;
  // Начинаем с середины экрана
  int char_x = MAX_WIDTH / 2;
  int char_y = MAX_WIDTH / 2;
  while (running) {
    // Если нажата клавиша
    curkey = get_key();
    // Что бы ни случилось, мы всё равно должны очищать пиксель
    clear_pixel(char_x, char_y);
    switch (curkey) {
      case KEY_ESC:
        // Нажата клавиша ESC, поэтому выполняем выход
        running = 0;
        break;
      case KEY_UP:
        char_y--;
        break;
      case KEY_DOWN:
        char_y++;
        break;
      case KEY_LEFT:
        char_x--;
        break;
      case KEY_RIGHT:
        char_x++;
        break;
    }
    // Отрисовываем "персонажа" на экране
    put_pixel(char_x, char_y, COLOR_WHITE);
  }
  
  // Возвращаемся в текстовый режим
  set_video_mode(3);
  return 0;
}

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

Например, для получения нажатий клавиатуры мы используем INT 16. Это работает хорошо, но приостанавливает работу программы, пока она ждёт ввода. В более сложном примере мы бы использовали INT 16 AH = 01 для проверки состояния клавиатуры и возвращались бы к выполнению программы, если ввод с клавиатуры отсутствует. Это даст нам время на отрисовку другой графики. В нашем примере это работает нормально, но для более динамичной игры нужно будет писать обработчик событий клавиатуры с этими функциями.

Кроме того, put_pixel и clear_pixel работают достаточно хорошо, но оба они не так эффективны, как создание буфера кадра и запись в него. Буфер памяти можно с любой нужной скоростью копировать в видеопамять с помощью memcpy(). Пример его использования может выглядеть как-то так:

#include <sys/movedata.h>

char buffer[320x200];
int i;
 
// Изменяем массив буфера, как любой другой массив
 
// Периодически копируем буфер в видеопамять
dosmemput(buffer, 320*200, 0xA0000);

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

Лучшее из обоих миров


Даже несмотря на то, что C++ — высокоуровневый язык, вы можете заметить, что в этом примере мне всё равно пришлось использовать псевдоассемблер. Такова природа всей системы. На ранних этапах программирования в DOS без BASIC код часто писался на языке ассемблера, и существовало несколько стандартных библиотек.

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

Можно сказать, что используя эту систему, я жульничаю, и если относиться к этому строго, то так и есть. До появления расширителей DOS разработчикам приходилось мучиться, пытаясь уместить всё в 640 КБ. И если смотреть реалистично, у них редко было даже 640 КБ. На большинстве DOS-машин после загрузки драйверов и TSR (резидентных программ) едва находилось 600 КБ ОЗУ.

Этого было достаточно для простых программ, но когда требовались более сложные структуры данных, приходилось использовать расширители DOS или EMS (расширенную память). Код может быть и умещался в 600 КБ, но пространства данных в сложных программах и играх требовали места для роста, а барьер в 1 МБ был невероятно мал. Расширители DOS наподобие CWSDPMI были настоящими спасителями!

Подводим итог


Надеюсь, вам понравилось наше путешествие в Страну ностальгии. Программирование под DOS — это очень интересная область. В любой другой операционной системе сложно так близко подобраться к голому «железу», а без использования DJGPP трудно добиться равновесия между функциональностью и гибкостью.

Хочется, чтобы у нас было больше времени на более сложные примеры программ. С этим комплектом разработки наши возможности поистине безграничны. Мы получаем молниеносность программирования под DOS, графический потенциал системы VGA (которая, несмотря на свою древнюю природу, по-прежнему может создавать интересную игровую графику) и мощь стандартной библиотеки C.

Благодаря C++ мы можем создать класс персонажа для героя видеоигры, назначить ему переменные (например, текущее положение на экране, здоровье и силу) и управлять им с помощью клавиш со стрелками. Поскольку у нас есть до 4 ГБ адресуемого пространства (по крайней мере, теоретически), мы можем считывать с диска сложную тайловую графику или даже целые JPG пререндеренной графики. С помощью этой системы вполне возможно создать почти современную видеоигру.

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

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

Комментарии (188)


  1. BOOTor
    08.01.2018 10:41
    +3

    Вспомнил молодость и Борланд Паскаль… Сейчас можно заменить на Free Pascal — и старые наколенные научные расчетики идут «на ура» :)


    1. System12
      08.01.2018 11:38
      +1

      А Бейсик, который смог освоить (в меру возраста) мой 8-ми летний сын…
      Впрочем сейчас многие не верят в то, что Досовский Суперкалк работал не хуже Экселя.


      1. ClearAirTurbulence
        08.01.2018 13:05
        +1

        А вы попробуйте сваять там не то что финмодель, а хотя бы простенькую табличку. Я тут недавно решил тряхнуть старинной, запустил Quattro Pro. Но удовольствие получил только от воспоминаний — на практике использовать это просто больно.


        1. System12
          08.01.2018 13:30
          +3

          Тяжело, да и лениво вспоминать. В свое время делал и расчеты и графики (правда не цветные). Я лучше Вас рассмешу по теме. С времен ДОС у меня на некоторых форумах остался ник SYS Недавно меня обвинили в том, что я в качестве ника использую ничего не значащий набор из трех букв. А когда-то без загрузочной дискеты жизни не было.
          640 кбайт оперативка и 20 мегабайт винт хватало на жизнь. Про видеопамять вообще молчу. Сейчас 32 мегабита в телефоне приходится периодически чистить ибо начинает кричать что ему мало памяти.


          1. geher
            08.01.2018 16:22
            +1

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

            Эти люди, наверное, никогда не видели в корне ФС на своем жестком диске с виндой файла pagefile.sys. А он там обычно есть (мало кто выключает подкачку или переносит ее на другой диск).


            1. sumanai
              08.01.2018 17:26
              +1

              А он там обычно есть

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


            1. easty
              08.01.2018 20:42

              У меня другие файлы в памяти
              config.sys
              himem.sys
              emm386.sys
              Я очень стар)))


              1. pfemidi
                08.01.2018 21:48

                А как же io.sys и msdos.sys? Без них все остальные sys'ы смысла не имеют.

                И кстати, загрузочной дискета или винчестер (уже отформатированные) делались при помощи утилиты sys.com. Так что я тоже староват маленько ;-)


                1. geher
                  08.01.2018 22:51

                  Смутно припоминаю, что в некоторых более альтернативных версиях DOS эти файлы назывались как-то по другому.
                  В частности, в PC-DOS и некоторых версиях DR-DOS вроде были ibm.com и ibmdos.com.


                  1. quwy
                    09.01.2018 01:35

                    ibmbio.com и imbdos.com

                    Об это, кстати спотыкались особо «умные» системные утилиты, авторы которых были не в курсе, что кроме MS-DOS существовал так же PC-DOS.


                1. saboteur_kiev
                  09.01.2018 05:50

                  или тем же format /s
                  и пропустили autoexec.bat и command.com


                  1. pfemidi
                    09.01.2018 11:27

                    Я же сказал:

                    И кстати, загрузочной дискета или винчестер (уже отформатированные)

                    так что format /s тут не нужен, тут достаточно утилиты sys.

                    И ещё насчёт autoexec.bat и command.com позанудствую ;-) Разговор начался с того, что пользователь System12 сказал:

                    С времен ДОС у меня на некоторых форумах остался ник SYS

                    Поэтому easty и упомянул про config.sys, himem.sys и другие sys'ы, а я добавил io.sys и msdos.sys. Везде одни sys'ы, про bat'ы и com'ы никакой речи не было.


                1. O1eja
                  09.01.2018 11:30

                  и command.com


              1. skygad
                08.01.2018 22:45

                autoexec.bat забыли.
                Это же самая первая магия, которую я узнал в ms-dos.
                Ну и как уже написали io.sys и msdos.sys


              1. Alyoshka1976
                09.01.2018 11:13

                А как же 800.com, чтобы выжать несколько дополнительных дорожек с пятидюймового Verbatim-а? ;-)


                1. MacIn
                  09.01.2018 14:54

                  Помним такое. Половина дискет в этом формате, никак прочитать теперь не могу.


                1. speakingfish
                  09.01.2018 18:52

                  800 — прошлый век. Есть ведь новейший PU_1700 :)


                  1. kloppspb
                    10.01.2018 00:55

                    Да! И как тут не вспомнить Гуртяка с его KeyRus и образцовым вылизыванием кода, до каждого байта.


                    1. speakingfish
                      10.01.2018 11:22

                      Я пользовался gamma — только там было самое оптимальное переключение — по CapsLock. Сейчас только под linux нормально работает переключение по CapsLock и клавиатурная индикация из коробки. Под виндой все переключатели CapsLock имеют разные степени глюкавости.


                      1. MacIn
                        10.01.2018 19:34

                        Два шифта — наше все!


            1. domix32
              09.01.2018 11:35

              Сейчас еще и и файл hiberfil.sys с данными гибернации валяется.


          1. Dageron
            09.01.2018 09:17

            С времен ДОС у меня на некоторых форумах остался ник SYS Недавно меня обвинили в том, что я в качестве ника использую ничего не значащий набор из трех букв.
            «Почему диски начинаются с буквы C? Куда делись буквы A и B?» ©


            1. System12
              09.01.2018 09:44

              Наверное Вы не видели компов со слотами для дискет. А и В это гибкие дисководы. Вы возможно удивитесь, но я застал времена когда диска С в простых ПК вообще не было, только дискеты. И для того чтобы комп заработал надо было обязательно первой вставлять дискету с ДОС. Команда format (буква диска:) стирала содержимое дисков. Команда sys кроме стирания переносила на диск/дискету ДОС. Кстати, для того чтобы загружаться с нового диска С: тоже требовалась команда sys


              1. sav1812
                09.01.2018 10:03

                Команда sys кроме стирания переносила на диск/дискету ДОС.

                Команда SYS ничего не стирала.


                1. System12
                  09.01.2018 10:10

                  Вы ошибаетесь. По своей сути команда sys была комбинацией двух команд — форматирования диска/дискеты и переноса ДОС в системный каталог.


                  1. sav1812
                    09.01.2018 10:19

                    Да нет, я не ошибаюсь. :)

                    Sys is used to copy the system files from one drive to another drive, allowing that drive to be bootable.

                    When running sys, the below files will be copied.

                    command.com
                    io.sys
                    msdos.sys
                    drvspace.bin

                    https://www.computerhope.com/syshlp.htm

                    То, что Вы описали — это format + sys.


                    1. System12
                      09.01.2018 10:25

                      Значит уже склероз. Давно это было.


              1. Wan-Derer
                09.01.2018 10:04

                Да ладно! Дисководы? Гибкие? ДИСКОВОДЫ?
                А насколько они гибкие?


                1. System12
                  09.01.2018 10:16

                  Пятидюймовые дискеты легко заворачивались в трубочку. Правда потом обычно не работали. Тонкий пластиковый диск в бумажном конверте с прорезью под головки и механизм вращения. Впрочем лучше читайте Вики ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D0%B5%D1%82%D0%B0


                  1. Alyoshka1976
                    09.01.2018 11:15

                    ИМХО это был сарказм :-) Ведь НГМД расшифровывается как «накопитель на гибких магнитных дисках»


                  1. MacIn
                    09.01.2018 14:57

                    A и B были, емнип и в CP/M с 8" дискетами.


                    1. kloppspb
                      10.01.2018 01:01

                      Ага. Висела у меня парочка с тех времён на стенке. Но с тех пор как отдал «для декоративных целей» набор из 5 и 1.44" дистрибутива BC 3.11, снял и выкинул. Как и перепаянный в 486 386 dx 2 без сопра… И так старого барахла копится много, лишний пылесборник. Хоть и память, да :)


                      1. MacIn
                        10.01.2018 01:32

                        Не, у меня был рабочий Панасоник с CP/M, отдал в музей. Радует посетителей своей работой.


                        1. kloppspb
                          10.01.2018 01:52

                          Это кто?
                          Я учился на CM 1800, размером с хорошее трюмо :) 1986 год вроде был, первое введение уроков информатики в программу. Нашей тусовке «математиков-физиков» предложили на них забить (ибо последние уроки, для старшеклассников их прогулять — святое), но вместо этого ходить на станцию юных техников «в кружок». До сих пор помню имя руководителя — Юрий Шапиро, и как он нас учил простейшим алгоритмам на уровне калькулятора выражений… Ну и текстовой игрушки «клингон атакует».

                          После этого был перерыв почти на 10 лет, а там уже и XP (не windows), и учебник по x86 ассемблеру с тетрадкой и карандашом в электричке, и даже крутяцкие 286 появились (в НИИ по совсем другому профилю). Так и понеслось…

                          Да, и РАФОС был. Но момо сознания просвистел.


                          1. MacIn
                            10.01.2018 19:35

                            Не помню модель. Отдельно монохромный черно-зеленый монитор, отдельно ящик с двумя вертикальными 8" НГМБ и отдельно процессорный блок. С то ли модемом, то ли телетайпом встроенным.


              1. MacIn
                09.01.2018 14:55

                Бог ты мой. Вам точно надо таблички «сарказм» или «шутка» показывать. Там же цитата.


            1. pfemidi
              09.01.2018 11:30

              «Кто такой Генерал Фейлор и зачем он читает мой диск C:?» © :-)


              1. MacIn
                09.01.2018 14:57

                Ты кого инвалидом назвал, железяка?


              1. omgiafs
                09.01.2018 18:07

                Не работе к различному проф. оборудованию иногда приходят майор Аларм и генерал Фейлор.


        1. Ndochp
          08.01.2018 17:01
          +1

          Просто навыки сменились. В том же суперкалке вместо мыши вполне себе использовались целые аккорды на клавиатуре не глядя, от которых остались только воспоминания в виде Alt-буква режима.
          У меня вполне работала таблица по расчёту заработной платы, с учетом среднего, вычетов на детей и тд. С собственным меню для пользователя, из которого только по Ctrl-C выйти можно было. И не сказать, чтобы инструмент меня больше напрягал, чем алгоритм.
          Писалось это классе в восьмом, изучал я 4 суперкалк по мануалу, так что назвать продукт сильно сложным я не могу.


        1. lobzanoff
          08.01.2018 17:42
          +1

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


      1. ClearAirTurbulence
        08.01.2018 13:05
        +1

        А вы попробуйте сваять там не то что финмодель, а хотя бы простенькую табличку. Я тут недавно решил тряхнуть стариной, запустил Quattro Pro. Но удовольствие получил только от воспоминаний — на практике использовать это просто больно.


    1. bazilxp
      08.01.2018 20:07

      Видел заметку о кросс компиляции с помощью GCC под DOS создание ком файлов
      на английском. gcc com =)
      Еще старый добрый Watcom чет вспомнился


    1. anprs
      09.01.2018 07:28

      Да-да-да. Сколько же раз меня выручал реализованный за 10 минут метод Ньютона… :)


  1. BOOTor
    08.01.2018 10:43
    +7

    Не хватило упоминания DN, а это для того времени мощнейший набор инструментов.


    1. easty
      08.01.2018 20:44

      DN мне казался слишком жирным. Volkov Commander наше все


      1. pansa
        09.01.2018 01:40

        Зато в DN был встроенный тетрис…


        1. artemisia_borealis
          09.01.2018 01:49

          Ещё в DN был screensaver «Огонь». Очень натурально это пламя выглядело четветь века назад.


        1. saboteur_kiev
          09.01.2018 05:51

          или можно было запустить резидентный тетрис


      1. O1eja
        09.01.2018 10:50

        Особенно в части копирования файлов с дискеты на дискету… по сравнению с nc


        1. MacIn
          09.01.2018 14:58

          Для этого xcopy был, зачем там вообще файловый менеджер?


      1. svitoglad
        09.01.2018 11:21

        А еще был Norton Commander.
        Сейчас уже не вспомню но кажись Volkov Commander 4.0 занимал меньше памяти по сравнению с nc.


        1. pfemidi
          09.01.2018 11:36

          А на «Правец-16» с которого я начинал весь DOS был болгарский и в комплекте с ним шёл передранный с NC «Команден Организатор», называемый в инструкции просто Коморг.

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


          1. speakingfish
            09.01.2018 19:05

            Основной фичей XTree была отрисовка структуры каталогов в псевдографике и возможность быстрого перемещения директорий (это называлось «prune and graft»). Встроенной возможности перемещения директорий не было больше нигде, кроме специальной программы из комплекта Norton Utilities. Позднее эта возможность появилась лишь в DOS Navigator.


        1. MacIn
          09.01.2018 14:59

          Не «а еще». Волков — это клон NC. Был действительно меньше, ел меньше памяти и летал быстрее. ЕМНИП, его писали на ассемблере, а NC к тому времени — на С или С++.


  1. FyvaOldj
    08.01.2018 10:57
    +1

    На большинстве DOS-машин после загрузки драйверов и TSR (резидентных программ) едва находилось 600 КБ ОЗУ.

    Даже и 480k.
    Но сие было проблемой первых версий DOS.
    Потом появилось несколько менеджеров памяти, а позже и сама DOS начала это уметь. Как раз ко времени когда на машины стали по мегабайту-два ставить и хотелось их все использовать.


    https://ru.wikipedia.org/wiki/HIMEM.SYS#%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C


    1. Daniil1979
      08.01.2018 19:09
      +1

      DOS=UMB, HIGH


      1. gban
        09.01.2018 04:11

        + qemm, который позволял оптимизировать размещение в оперативной памяти;
        + найти самый маленький драйвер мыши и раскладки клавиатуры;
        + vc.com который умел выгружать запущенные после него ненужные резиденты…


  1. Chugumoto
    08.01.2018 11:01
    +4

    В этот размер не уместится даже исполняемые файлы большинства программ-установщиков.

    меня вот это постоянно поражает… и вспоминается .kkrieger


    1. pha
      08.01.2018 12:22
      +1

      Кроме оптимизации кода на помощь приходит процедурная генерация текстур и объектов, использование упаковщиков исполняемых файлов.
      Плюс к этому избавление от зависимостей (всякие msvcr100.dll).
      Но только это не востребовано в большинстве случаев из-за быстрого интернета и дешевого дискового пространства.


      1. Vanellope
        08.01.2018 12:29
        +2

        А упаковщик то все равно перед исполнением будет в память распаковывать.


        1. pha
          08.01.2018 12:49
          +1

          Это верно, но применительно к .kkrieger примечателен был крайне малый размер исполняемого файла (~96 КБ).


    1. saboteur_kiev
      09.01.2018 05:53

      формат .com исполняемого файла вообще не предполагает размер программы, больше чем 1 страница памяти (64 кбайта).


      1. MacIn
        09.01.2018 14:59

        1 сегмент.


  1. Shtucer
    08.01.2018 11:07
    +5

    char buffer[320x200];

    Так, разве, можно?


    1. bulaev
      08.01.2018 12:42
      +3

      Видимо вместо х должен быть знак умножения.


      1. Areso
        09.01.2018 09:03

        За местным парсером замечана нежная любовь к этому знаку, потому многие и меняют)


        1. bulaev
          09.01.2018 09:15

          Серьёзно? Какой поворот! А если объявлена переменная x? Что за глупость.


          1. Shtucer
            09.01.2018 11:48

            Если объявлена переменная x, то все равно ничего не скомпилируется.


            1. bulaev
              09.01.2018 12:14

              Это и понятно. Просто не понимаю, зачем менять * на х. Это же ломает код.


  1. FyvaOldj
    08.01.2018 11:07
    +2

    Поскольку у нас есть до 4 ГБ адресуемого пространства (по крайней мере, теоретически), мы можем считывать с диска сложную тайловую графику или даже целые JPG пререндеренной графики. С помощью этой системы вполне возможно создать почти современную видеоигру.

    Ну положим были DOS extender:


    DOS/4g
    cwsdpmi
    PMODE


    Какие то из них дружны с упомянутым GNU для DOS — DJGPP


    И еще куча.


  1. SinsI
    08.01.2018 11:48
    +5

    калькулятор в Windows 10 занимает в состоянии простоя 16,2 МБ оперативной памяти
    Любопытно было бы узнать, что же именно там столько памяти требует.


    1. gandjustas
      08.01.2018 12:24
      +1

      Скорее всего окна.


      1. Massacre
        08.01.2018 14:57
        +3

        Скорее всего какие-то абстракции Win10, потому что calc от XP занимает в Win7 x64 примерно 1мб…


    1. Tutanhomon
      08.01.2018 13:29
      +2

      Думаю он на дотнете работает, так что нечему удивляться.


    1. iSergios
      08.01.2018 15:11
      +1

      16 мегабайт памяти… Эх, этого с головой хватало для Windows 95 + Quake :) Там вам и окна, и графика, и «физика», и AI.


      1. arheops
        09.01.2018 19:32

        Обновления драйверов nvidia вчера запросили 400мб.


    1. sebres
      08.01.2018 15:16
      +1

      А чего тут удивительного, вот список одних только библиотек, который мне выдал listdlls calc на семёрке (нет 10-ки под рукой)...


      listdlls calc
      Base                     Size Path
      0x00000000ffb60000     929792 calc.exe
      0x0000000077420000    1744896 ntdll.dll
      0x0000000077200000    1175552 kernel32.dll
      0x00000000fd1d0000     434176 KERNELBASE.dll
      0x00000000fe840000   14196736 SHELL32.dll
      0x00000000fe230000     651264 msvcrt.dll
      0x00000000ff6b0000     462848 SHLWAPI.dll
      0x00000000fe2d0000     421888 GDI32.dll
      0x0000000077320000    1024000 USER32.dll
      0x00000000fdd00000      57344 LPK.dll
      0x00000000fdc10000     831488 USP10.dll
      0x00000000fb440000    2191360 gdiplus.dll
      0x00000000fd7d0000    2080768 ole32.dll
      0x00000000fd6a0000    1232896 RPCRT4.dll
      0x00000000ff5d0000     897024 ADVAPI32.dll
      0x00000000fd5a0000     126976 sechost.dll
      0x00000000fd5c0000     892928 OLEAUT32.dll
      0x00000000fb660000     352256 UxTheme.dll
      0x00000000fc2f0000    2048000 COMCTL32.dll
      0x00000000faeb0000     241664 WINMM.dll
      0x00000000fbfe0000      49152 VERSION.dll
      0x00000000fd570000     188416 IMM32.DLL
      0x00000000fdd90000    1085440 MSCTF.dll
      0x00000000f05f0000    1445888 WindowsCodecs.dll
      0x00000000fae20000      98304 MPR.dll
      0x00000000775f0000      28672 PSAPI.DLL
      0x00000000fb320000      98304 dwmapi.dll
      0x00000000fcfb0000      61440 CRYPTBASE.dll
      0x00000000fd4d0000     626688 CLBCatQ.DLL
      0x00000000fb060000     344064 oleacc.dll


      1. pha
        08.01.2018 17:05
        +1

        dlls калькулятор в w10




        1. sumanai
          08.01.2018 17:29
          +1

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


          1. creker
            08.01.2018 18:18
            +1

            Все проще. Калькулятор написан на UWP, который, понятное дело, тянет кучу зависимостей с собой.


    1. Alexey2005
      08.01.2018 17:09
      +2

      Фреймворки — вот что сейчас жрёт львиную долю ресурсов и производительности.
      Если вы хотите, чтоб ваша программа весила в 10 раз меньше и работала в 4 раза быстрее, напишите её без использования фреймворков.
      Фреймворки решают ровно одну задачу: увеличивают скорость разработки за счёт увеличения ресурсоёмкости готового продукта. То есть по сути позволяют переложить часть издержек, связанных с разработкой, на конечного пользователя.


      1. RPG18
        08.01.2018 18:24
        +1

        К сожалению такой подход в больших проектах приводит к созданию своего фреймворка.


        1. sumanai
          08.01.2018 18:27
          +2

          Специализированный фреймворк обычно легче, чем общего назначения.


          1. RPG18
            08.01.2018 23:14

            А это уже как получится. Я в одном таком «фреймворке» на C++ «сборщик мусора» видел.


            1. acmnu
              09.01.2018 11:52

              Я в одном таком «фреймворке» на C++ «сборщик мусора» видел.

              Это часто делается на самом деле. Почти в любом действительно большом проекте на C++ используется сборка мусора. На собеседованиях даже часто спрашивают: "а вы писали свой сборщик мусора?"


    1. forcam
      09.01.2018 00:24

      на счет windows 10 не скажу, а вот в windows 7 он в определенный момент ломится в интернет на какой-то ip, это хорошо видно когда в фаере все на ручном управлении и сам фаер отучен доверять всему майкрософтскому (фаер comodo). было еще пару утилит с той же странностью, но точно не скажу, кажется wordpad)


      1. VEG
        09.01.2018 09:56

        У вас в системе может быть некая софтина, которая внедряется во все процессы, и уже от их имени может что-нибудь запрашивать. Не так уж и много смысла писать вот такие вот заявления без подробного разбора «а что там было в адресном пространстве, что за данные передавались» и т.д., желательно с указанием на конкретный код, который что-то там передаёт (калькулятор не такой большой, можно и отреверсить).


  1. glowingsword
    08.01.2018 11:57
    +2

    Что есть, то есть — у DOS потрясающе простой дизайн, и такое же гениально простое API. Помню некоторые прерывания до сих пор, хотя уже давно не запускал DOS, так как для запуска нужного мне ПО мне хватает DOSBox.


    1. aamonster
      08.01.2018 18:00
      +1

      Поиграйте с CP/M-80, там ещё проще (один call 5h на всё — кстати, он довольно долго поддерживался в DOS).


      1. frog
        08.01.2018 18:04
        +1

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


  1. goodwind
    08.01.2018 12:22
    +4

    Режим 13h, сколько в свое время с ним провел.
    Вот эти вот

    mov al, 13h
    mov ah, 0
    int 10h

    первое, что всплывает в памяти когда вспоминаю те времена


    1. Lsh
      08.01.2018 15:33
      +1

      Можно пояснение, для тех, кто под DOS не кодил?


      1. MacIn
        08.01.2018 15:35

        Сброс дисковой подсистемы. Гуглите int 13 reference. И это не DOS, это функционал BIOS.


        1. elmm
          08.01.2018 15:48
          +3

          Если мне не изменяет память, большая часть досовского функционала висела на 21h


          1. KMiNT21
            08.01.2018 18:49
            +1

            Так и есть. Я даже частично в никнейме своем заюзал. :) km int21


          1. easty
            08.01.2018 20:48

            10h это функции биоса, 21h это доса. Если нужны обращения на более низком уровне, к железу


          1. Tippy-Tip
            09.01.2018 02:04

            Прерывания DOS начинались с 20h (завершение работы программы).


        1. Massacre
          09.01.2018 02:54

          Неа. Это int 10h (графические функции BIOS), функция 0 — переход в выбранный графический режим (13h в данном случае). И можно обойтись двумя командами (mov ax,13h / int 10h)


      1. frog
        08.01.2018 17:04
        -2

        Установка графического режима, вроде (из принципа не полез гуглить :)


        1. MacIn
          08.01.2018 17:36
          +1

          Тьфу, верно.

          Я как-то с утра косыми глазами увидел 13 прерывание.

          Извините, коллеги.


      1. goodwind
        09.01.2018 06:42

        После Турбо Паскаля и его библиотеки graph, которая не имела режимов выше 16 цветов, этот режим показался чудом так как позволял использовать аж 256 цветов в разрешении 320х200.
        Что забавно, в те времена у меня не было интернета, поэтому режим я подсмотрел через отладчик в какой-то небольшой игрушке, которая его использовала. Откуда-то вычитал про прерывание 10h и его связь с видеорежимами. Поставил на него breakpoint и смотрел что в какие регистры складывается. Уж не знаю почему, но там было именно так: раздельно загружались ah и al. Как выше в комментах уже сказали, можно было обойтись «mov ax, 13h», но на тот момент мне было лет эдак 13-14 и я еще очень плохо понимал ассемблер.
        В результате я сделал свою библиотечку graph13h, в которой были процедуры с короткими ассемблерными вставками для выставления режима и простейшие процедуры для рисования примитивов. Позже мне попала в руки потрепанная книга Майкла Абраша про программирование графики и я расширил библиотечку для рендера простейших 3D-сцен, переписал всё что мог на ассемблере. Эта библиотека позже даже имела хождение на форуме, посвященном паскалю где я был в то время модератором (да, за время её написания у нас появился dial-up).
        Не знаю зачем я это всё пишу, ностальгия пробрала


        1. Vitalley
          09.01.2018 12:16

          Осталось только библиотеку запостить.


          1. goodwind
            09.01.2018 12:21

            С той поры уже столько мертвых винтов утекло, а форум перешел в чужие руки и там уже фиг чего найдешь. Да и нечего там смотреть, есть две или три одноименных библиотек с гораздо более богатым функционалом и более чистым кодом. Не забывайте что тогда мне было лет от 14 до 16 примерно и понятия о красивом и хорошо структурированном коде я тогда особо не имел


        1. speakingfish
          10.01.2018 11:49

          На CGA фантастикой казались 16-цветная графика разрешением 80x50, 80x100 и 160x100 сделанная из текстового режима. en.wikipedia.org/wiki/Color_Graphics_Adapter#160%C3%97100_16_color_mode
          Только не везде она работала, увы.


  1. krezalis
    08.01.2018 13:08
    +1

    Имеется терминал сбора даних METEOR ECO 486 OS Datalight ROM-DOS 6.22. Процесор 33 Mhz AMD Elan SC410-33AC, 2Мб оперативки и флеш памяти. Планирую ESP использовать для моста на сервер.


  1. ooprizrakoo
    08.01.2018 13:49
    +1

    Действительно ли Билл Гейтс произнёс фразу «640 КБ должно хватить всем»? Её история довольно туманна, однако чаще всего её приписывают Биллу, так что, возможно, он действительно такое говорил.


    Откуда туманность? Во-первых, нет ни одного источника, где приводилась бы эта цитата, во-вторых самого Билла спрашивали:

    QUESTION: «I read in a newspaper that in l981 you said '640K of memory should be enough for anybody.' What did you mean when you said this?»

    ANSWER: «I've said some stupid things and some wrong things, but not that. No one involved in computers would ever say that a certain amount of memory is enough for all time.»


    1. hdfan2
      08.01.2018 14:03
      +2

      Это называется «постправдой». Нужно просто очень часто повторять одно и то же обвинение (безо всяких доказательств), и через какое-то время оно становится правдой. А на вопрос о доказательствах удивлённо ответить: «Но ведь все это знают!». Используется сейчас всеми кому не лень.


    1. MacIn
      08.01.2018 15:32
      -2

      Точнее, он сказал на одной из конференций, что речь шла о том, что 16 бит/640к хватит всем ближайшие 10 лет. А не вообще и всегда.


      1. gandjustas
        08.01.2018 16:07
        +1

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


      1. MacIn
        08.01.2018 21:08

        Отчего минусите? Это его воспоминание на конференции 89 года.


  1. computershik73
    08.01.2018 14:27
    +1

    Пробовал сделать псевдомультизадачную программу под DOS. Чтобы и документы читала, и jpg-шки. Всё делала, но с тучей тормозов, хотя открытие jpg было написано на ассемблере. Или код неэффективный, или DOS не умеет эффективно работать с Apple iMac…


    1. MacIn
      08.01.2018 15:34
      -2

      А в чем именно выражались тормоза? Медленное чтение файла? Так неудивительно. Низкое разрешение таймера? Тоже не новость.


    1. pfemidi
      08.01.2018 18:53
      +1

      Для DOS в своё время была библиотека под названием CTask, как раз позволяла делать многозадачность на голом DOS без всяких дополнительных приблуд. Я её даже в своё время использовал когда программировал для банкоматов. К сожалению сейчас не смог ни нагуглить, ни наяндексить, везде сплошные Task in C, классы CTask и прочее, что к делу совсем не относится. Был у меня где-то дистрибутив этой библиотеки CTask, но насколько я помню он записан на дискете 3" так что даже если и найду его, то прочитать дискету 3" мне уже давно не на чем.


      1. saboteur_kiev
        08.01.2018 21:59

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


        1. pfemidi
          08.01.2018 23:25

          В CTask как раз через таймер многозадачность и делалась. А разве её можно сделать по-другому? Как вы правильно заметили, все шедулеры ныне этим и занимаются. Правда сейчас шедулеры не на int 8 сидят, а на RTC или ещё на чём, int 8 уже никто давно не трогает.

          Эх… А когда-то игрушки CGA'шные, жутко большие, аж по 32 килобайта размером, садясь на int 8, и музыку играли 8-мибитную, и экран обновляли, а сев при этом ещё и на int 9 клавиатуру обрабатывали и даже (что мне казалось дико невозможным в то время!) блокировали Ctrl-Alt-Del.


          1. sumanai
            08.01.2018 23:44

            А разве её можно сделать по-другому?

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


            1. vvzvlad
              09.01.2018 07:32

              В win 3.11 такая и была, емнип.


            1. vitalyvitaly
              09.01.2018 10:51

              Интересна концепция машинки HP-150, она же Touch Screen, вышедшей еще до первой Windows, по железу это был не PC, совместимость только на уровне кастомизированной DOS, запущенной поверх «собственной многозадачной ОС» в ПЗУ. Компьютер мог работать и без DOS в качестве терминала. По крайней мере, вот, как это описано в ее мануале

              The HP 150 system contains a large amount of system management code located in Read Only Memory. In general, the firmware is not designed to be utilized by
              ystem programmers. The operating system BIOS serves as the interface to
              irmware located functionality.
              The HP 150 firmware is a rather complex multi-tasking operating system in
              tself. MS-DOS runs on the firmware as a single task from the firmwares
              perspective. Essentially all of the terminal functionality of the HP 150 is
              mplemented in the firmware. The firmware implements much of the BIOS device
              driver functionality in addition to the terminal personality.


      1. computershik73
        11.01.2018 20:13

        Пришлите мне дискету по почте :)
        Или сходите в любое госучреждение/библиотеку. Флопики еще не вымерли. Даже у меня есть, вставил после апгрейда старого ПК на почётное место.
        Upd: Да и забыл, сам работаю сисадмином в одном госучреждении, там осталась много раритетных дискет, в том числе и с MS-DOS ;)


        1. Pochemuk
          12.01.2018 09:03

          У меня даже года 2-3 назад был специально приобретен FDD-USB привод. Тому как если придется переставлять Win2K3 Server, то дрова на RAID нужно либо внедрять в дистрибутив, либо устанавливать с флоповода — других носителей Win2K3 на этом этапе не видит.


  1. potan
    08.01.2018 16:05
    +1

    Видел пару DOS-подобных 32-битных систем, в которых все программы размещались в общей памяти с OS и имели полный доступ ко всему железу. Выглядело интересно, но мне уже тогда надоело писать на C++ и ассемблере, а языки, которыми я увлекался, типа Haskell, там не поддерживались.
    Может и сейчас что-то подобное живое есть.


    1. potan
      09.01.2018 19:18

      Вспомнил одну из.
      Сейчас она под GPL.


  1. F0iL
    08.01.2018 16:43
    +2

    У ICP DAS даже в наше время есть куча ПЛК от совсем простеньких до весьма навороченных, работающих под DOS-compatible операционкой с Borland C++ 3.1 в качестве основного компилятора. Что, с одной стороны, прикольно (все знакомо как свои пять пальцев, зная устройство FAT-системы на встроенной флешке можно перепрошивать контроллер «на лету» с воздуха, и т.д.), а с другой стороны, вызывает некую тоску, когда приходится писать на старом стандарте со всеми ограничениями старого компилятора, плюс танцевать с бубном чтобы он вообще заработал на современных ОС.


  1. Hottych
    08.01.2018 17:41
    +2

    Ну на самом деле в 13ом режиме полноценную игру не сделать. Нужен mode X или Y с планарным представлением видеопамяти для быстрого битблитинга(простите за некрасивое слово).


    1. frog
      08.01.2018 17:44
      +2

      Большинство VGA'шных игр, включая самые известные, скажем, Sierra'овские, были в самом стандартном 320x200x256.
      mode-x стали использовать позднее и не так уж часто. Потому что у него были проблемы с некоторыми видеокартами.


  1. Alexandr400
    08.01.2018 18:54
    +3

    Минимализм был когда-то в плюс. Программы так уплотнялись и зализывались (железо развивалось неспешно), что представляли из себя почти совершенство. Сейчас из за изобилия памяти код часто пишется небрежно, раздуто. Например какая-нибудь игрушка в 40 гб на диске содержит всего несколько шикарных локаций с туманом, заходящим солнцем и шевелящимися травинками — с прохождением в 10 мин. Но к прежнему методу не возврата. Этот бег не остановить.


    1. GutenMorg
      09.01.2018 10:51

      Да, Alexandr400, этот бег не остановить… Думаю, что наблюдаемый нами «вариант развития событий» выгоден и производителям ПО и «кузнецам железа». С одной стороны: можно быстро создавать монструозные (по объему кода) продукты с функционалом калькулятора, а с другой постоянно увеличивать продажи все более мощного оборудования…


    1. n0th1ng
      09.01.2018 10:51

      Потому что в играх выбор такой — скорость загрузки/графон/занимаемое пространство на диске. Можно выбрать только 2. В век терабайтных хардов и приставок с 50гб блюреем естественно жертвуют занимаемым пространством на диске.


  1. WRP
    08.01.2018 18:54
    +1

    Размер исполняемого файла калькулятора зависит в большей мере от компилятора


    1. schetilin
      08.01.2018 19:36
      +1

      Так здесь не про размер файла, а про размер памяти используемой калькулятором.


      1. WRP
        09.01.2018 07:37

        На размер памяти, используемой калькулятором, влияет много факторов.
        Талант программиста один из них )


  1. saboteur_kiev
    08.01.2018 22:00

    Все-таки dosbox сейчас более выгодный вариант, чем виртуалбокс, в том числе и за счет рендеринга экрана. Оригинальное разрешение на современных мониторах слишком мелкое. А возможность любую старую игру смотреть в 2x/3x со сглаживанием — отлично возвращает в жизнь и MOO и KB и другие игры.


  1. Karpion
    08.01.2018 23:00
    +1

    DOS в сущности является операционной системой реального времени (ОСРВ).
    Ну, это крайне спорное утверждение. Как минимум, существование резидентных (TSR) программ может помешать реалтаймовости. А ещё — в DOS отсутствует асинхронная работа с диском (пишите жалобу на BIOS), так что на период обращения к диску программа не может выполняться.

    тончайший интерфейс DOS между приложением и оборудованием даёт ей преимущество в этой области использования
    Осталось понять, зачем тут вообще нужен DOS, если выгоднее запустить 32-битную программу, которая сама в себе несёт драйвер для работы с файловой системой и всё остальное.

    в режиме VGA 320x200x256
    Все эти видеорежимы — мерзость. Я понимаю, что это не DOS виноват, а аппаратура — ну так аппаратура разрабатывалась в т.ч. с оглядкой на совместимость с DOS и той аппаратурой, на которой работал DOS — закономерно получился уродец.


    1. el777
      08.01.2018 23:47

      Видеорежимы чем плохи? Понятно, что памяти мало, нужно было показать максимум возможного.
      Конкретно VGA 320x200x256 вообще был один из лучших. Показать 256 цветов в то время — было очень круто. Понятно, что пиксели были громадные и даже на тех маленьких мониторах смотрелись как лампочки. Но все равно — это первый значительный шаг к какой-то нормальной многоцветной картинке. До сих пор помню картинку на обложке журнала ("Компьютерра" кажется), с которой заинтересовался этими возможностями и стал экспериментировать с графикой. Тем более рассчитывать координаты было довольно легко 320 = 2^8+2^6, вся видеопамять помещалась в 1 сегмент — можно было быстро и удобно перебрасывать картинку на экран.


      1. F0iL
        09.01.2018 12:28

        В VGA режиме 320x200 пиксель не квадратный, а прямоугольный, что, в принципе, досаждало не сильно, но иногда хотелось поворчать :)
        Был еще 320x240 с квадратной точкой, но это уже VESA.


        1. pfemidi
          09.01.2018 12:57

          320x240 обеспечивал так же небезызвестный «Mode X», доступный на всех VGA. Тот же режим 0x13, только в некоторые регистры видеодаптера записывались немного другие значения. Довольно много интро, демок и даже игрушек в то время в этом режиме было.


          1. goodwind
            09.01.2018 13:31

            Помню такой, как раз в книге Абраша кажется и описывался. Также он назывался Chain-4. Там была хитрая организация памяти, которая позволяла иметь 4 страницы видеопамяти по 64кб, которые шли одна за одной. Его было классно использовать для скроллинга экрана — ты просто смещал «окно». Или можно было одну страницу показывать пока рисуется на второй, потом перемещать «окно» на начало второй, получая практически моментальное обновление экрана. Крутая штука


    1. Tippy-Tip
      09.01.2018 02:14

      Нынешняя FreeDOS – 32-битная ОС.


    1. quwy
      09.01.2018 03:18

      А ещё — в DOS отсутствует асинхронная работа с диском (пишите жалобу на BIOS), так что на период обращения к диску программа не может выполняться.

      Зато можно было ручками обратиться прямо к контроллеру через порты ввода-вывода и заюзать MWDMA (если он, конечно, поддерживался железом). В этом и прелесть примитивизма, что при желании можно выжать из оборудования все, а не только то, что позволяет API.


      1. Karpion
        09.01.2018 21:20

        Если Вы лезете в железо напрямую — то зачем Вам вообще DOS? Это же ДИСКОВАЯ операционная система — а тут Вы лишаете её ейного основного заработка!


    1. geher
      09.01.2018 08:54

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

      DOS тут точно не при делах.
      DOS вообще не поддерживал графику и работал в текстовом режиме.
      Вся графика была на совести кода в ПЗУ видеоадаптера и работающих с видеоадаптером напрямую программ.
      А видеорежимы определялись скромными возможностями электроники того времени: медленные процессоры, медленная и дорогая память.
      Если тогдп кто-то забомбил бы хотя бы VGA, то оно стоило бы как самолет и рисовало бы со скоростью черепахи. А когда все ускорилось и подешевело, тогда и понеслось: сначала VGA, потом всякие XGA, потом всякие 3D ускорители.
      Да и сами режимы не так уж и страшны. А уж для того времени они были огромным достижением.
      А некоторые игры на графике CGA смотрелись лучше, чем некотооые современные игры на самых навороченных видеокартах.


      1. Karpion
        09.01.2018 20:19
        -1

        Вы не поняли.

        Сначала IBM решила использовать ублюдский процессор и пригласила Балла Гейтса, заключив с ним особый контракт (можете рассказывать, что при капитализме не бывает коррупции). Это было два независимых решения с разной мотивацией.

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

        Дальше при разработке новых аппаратных средств железячники ориентировались именно на работу на этой архитектуре. А там было прописано, что для видеопамяти выделяется конкретный сегмент = 64 KB адресного пространства. Вот и пришлось извращаться, запихивая туда видеопамять бОльшего размера.

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

        Это ни разу не достижение. Это — самое настоящее капиталистическое вредительство. Особенно уродский VideoBIOS, в который так и не удосужились запихнуть нормальные драйверы типа BGI.


        1. geher
          09.01.2018 22:21
          +1

          Сначала IBM решила использовать ублюдский процессор.

          Нормальный процессор для своего времени. Не надо его обижать.
          Проблема была не в процессоре, а в том, что накрутили вокруг него. И в слишком сильной обратной совместимости следующих поколений компьютеров.


          Дальше при разработке новых аппаратных средств железячники ориентировались именно на работу на этой архитектуре. А там было прописано, что для видеопамяти выделяется конкретный сегмент = 64 KB адресного пространства. Вот и пришлось извращаться, запихивая туда видеопамять бОльшего размера.

          Вполне нормальное решение — адресовать большую память через небольшое окно. Так много где реализовано.
          Естественно, архитектура диктовала аппаратные решения (например, размер сегмента). Но архитектура сама диктовалась поставленными задачами и узкими рамками возможностей (кстати, именно потому в первых PC был 8088, а не 8086).


          И не стоит забывать, что основным предназначением IBM PC была совсем не работа с графикой. Отсюда и перекос в сторону передачи основной вычислительной мощи и памяти для программ, а не для "картинки".
          Вот когда PC стал позиционироваться еще и как игрушка, тогда графические адаптеры стали постепенно самостоятельными компьютерами мощи и стоимости, сопоставимой с основной частью (а то и превосходящей).


          Начнём с того, что CGA был сделан так, что программисту приходилось извращаться и интерливом (т.е. строки экрана шли в памяти не подряд, а сначала все чётные, потом все нечётные). И ещё нельзя было обращаться к видеопамяти в момент работы луча — это портило картинку.

          А это все определялось совсем не архитектурой ЭВМ и не бедным DOS, а особенностями передачи данных из видеопамяти в монитор. Реализовать по другому тогда еще просто не могли, поскольку на той элементной базе получалось слишком сложно и дорого. Всегда приходилось чем-то жертвовать. Тут пожертвовали простотой работы с видеопамятью в пользу простоты реализации "другой стороны" (передачи всего этого добра в более дешевый монитор с чересстрочной разверткой).
          И для того времени это было реально достижение.


          Особенно уродский VideoBIOS, в который так и не удосужились запихнуть нормальные драйверы типа BGI.

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


          1. sav1812
            10.01.2018 03:00

            А это все определялось совсем не архитектурой ЭВМ и не бедным DOS, а особенностями передачи данных из видеопамяти в монитор.

            Ой ли?? А «особенности» эти не разработчиками ли определялись? :)

            Реализовать по другому тогда еще просто не могли, поскольку на той элементной базе получалось слишком сложно и дорого.


            «Неправда Ваша, дяденька!» © :)

            Вспомним «Специалист», разработанный, правда, несколькими годами позже, но на той же элементной базе, на отечественных аналогах TTL логики серии 7400 — К155.
            Так вот в этой машинке разработчик (преподаватель ПТУ, к слову) как-то сумел «совместить приятное с полезным», обеспечив возможность «одновременного» обращения в области видеопамяти и процессора, и контроллера «дисплея».
            Так что и «реализовать могли», при наличии на то желания, и не так уж и дорого — десяток-другой корпусов серии К155. :)

            Всегда приходилось чем-то жертвовать.

            Ну да… ну да… :)


            1. geher
              10.01.2018 09:35

              Ой ли?? А «особенности» эти не разработчиками ли определялись? :)

              Разработчиками, но не DOS и не IBM PC, а видеокарты. Причем определялись исходя из стоящей задачи — сделать достаточно дешево.


              Вспомним «Специалист», разработанный, правда, несколькими годами позже

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


          1. Karpion
            10.01.2018 03:08

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

            Проблема была не в процессоре, а в том, что накрутили вокруг него.
            Простите, а что вокруг него накрутили? HDD? Графический видеоадаптер? Так никуда же не деться — их в любом случае надо было прикручивать. У других систем прикручивали.

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

            Те фирмы, которые сами контролировали архитектуру компьютера и операционку — меняли процессор; некоторые — неоднократно. IBM, HP, Sun, Acorn, Apple — меняли. И только писюки держались за совместимость — ибо аппаратуру и операционку контролировали разные фирмы.

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

            в первых PC был 8088, а не 8086
            Это непринципиально: адресация и система команд у них были одинаковые, различалась только шина данных.

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

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

            Отсюда и перекос в сторону передачи основной вычислительной мощи и памяти для программ, а не для «картинки».
            {...}
            Тут пожертвовали простотой работы с видеопамятью в пользу простоты реализации «другой стороны» (передачи всего этого добра в более дешевый монитор с чересстрочной разверткой).
            И для того времени это было реально достижение.
            Вижу взаимно противоречивые параграфы.

            Сложно было впихнуть много кода в ограниченный объем.
            У меня ощущение, что Вы не видели объём кода BGI-драйвера.
            Для разных видеокарт — от 4 до 8 килобайт (ну, те, что я для обсуждения этого вопроса просматривал — где-то в районе 1993-го года).


            1. geher
              10.01.2018 10:54

              Простите, а что вокруг него накрутили? HDD? Графический видеоадаптер?

              Стандартизированную обвязку: контроллер памяти, шину ISA для карт расширения, выделенный диапазон памяти под BIOS и ПЗУ карт расширения, правила реализации ПЗУ плат расширения и т.п.


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

              Программная совместимость имела значение, но совсем не из-за "чужой" ОС.
              У IBM имелась собственная совместимая ОС (PC DOS). После была еще куча систем, включая AIX и OS/2. Главное — совместимость со старыми программами.
              Не буду спорить на предмет обоснованности такого решения с отказом от радикальной смены архитектуры, но современый яблокомпьютер при всей его привязке к одной конторе пришел в итоге к той же "убогой" архитектуре x86.


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

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


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

              Непринципиально для архитектуры, но принципиально для стоимости разработки периферии. Новая перифеоия под 16 бит процессор сильно повлияла бы на цену конечного продукта.


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

              Про рефакторинг согласен. Но DOS тут никаким боком, поскольку с графикой он не работал вообще. Ничто не мешало сохранить текстовый режим и навернуть что-ть новое для графики.


              Вижу взаимно противоречивые параграфы

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


              У меня ощущение, что Вы не видели объём кода BGI-драйвера.
              Для разных видеокарт — от 4 до 8 килобайт (ну, те, что я для обсуждения этого вопроса просматривал — где-то в районе 1993-го года).

              Проблема доайверов для поддержки графических режимов видеокарт не являлась проблемой DOS, поскольку та с графикой не работала.
              ПЗУ самой видеокарты содержало достаточно своего барахла, чтобы добавлять туда еще и драйвера. И ни у кого не возникало желания увеличивать это ПЗУ еще на несколько килобайт.
              Потому вся забота о графическом выводе легла на программистов, работающих с графическими программами. А у них со временем появились стандартные библиотеки, избавляющие от гемороя прямого "общения" с картой.
              А с появлением более других графических ОС стало логичным размещать драйверы не в ПЗУ видеокарты, а включать их непосредственно в ОС, что существенно упросьило их обновление в случае необходимости.


            1. pfemidi
              10.01.2018 11:59

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

              Для Apple ][e в своё время существовала Z80 SoftCard, правда от Microsoft, а не от самого Apple, плата расширения с Z80 и минимальной обвязкой. Вставляешь её в слот на материнке и Apple ][e превращался в комп с Z80, на котором можно было запускать вполне себе обычный CP/M. Я даже реально это дело руками щупал.


  1. artemisia_borealis
    09.01.2018 00:09

    А ещё ведь под DOS прекрасно LaTeX работал, называлось всё это emTeX.
    Вот, например, LaTeX installation instructions for emTeX.
    Книжки, статьи, дипломы, диссеры прекрасно писа?ли.

    Справедливости ради надо и про экстендеры памяти вспомнить, emm'ы там всякие, ну, т.е. 640К всё же маловато было и расширение даже до 1М это было круто и желанно.


  1. divanus
    09.01.2018 02:10

    В 2013м году перенес жкх БД из фокспрокса в юзабилити 1с :)
    Было весело и приятно вспомнить школьные годы и реально круто решить проблему одной управляющей компании — разработчик просто умер уже и никто из 1с интеграторов не мог подойти :)


  1. h0use
    09.01.2018 02:30

    Вспомнились теплые, ламповые истории про Коммандера Кома и Коммандера Нортона.

    В работе с памятью emm386.sys наше все, особенно с загрузкой ядра в верхние страницы памяти, освобождали все 640к памяти.


    1. Pochemuk
      10.01.2018 09:04

      Да… Такие фичи здорово облегчали жизнь.

      Насчет 640K не уверен, а вот 1024K, действительно, хватало много для чего, если с умом подойти, а не тяп-ляп.

      Лет так 25 назад наваял одну программу для расчета с потребителями на СУБД Clarion. Экзешник весил около 800K. Даже если загрузить драйверы в верхнюю память, она в доступные после этого 580K не лезла. Хорошо, что Clarion поддерживал оверлейные структуры. Написал утилиту, которая анализировала вызовы процедур, обнаруживала циклы, рекурсии и взаиморекурсии, строила дерево вызовов и распределяла модули по оверлейным областям. Так, чтобы вызывающий и вызываемый модуль загружались в разные оверлейные области. Это чтобы вызываемый не затирал данные в вызывающем.
      В результате памяти стало хватать на всё :)

      И эта программа прекрасно работала под DOS, Win95/98, WinXP. А вот под Win8/8.1 не работает :( Тому как в Win8 прекратилась эмуляция DOS. Приходится запускать ее из DOSBox. Но в этом случае нет вывода на LPT. Поэтому вывод делается в файл (вместе со всеми управляющими символами), а потом этот файл распечатывается из Винды.

      В общем, несмотря на то, то «1С: Управление снабжением» закупили еще 2,5 года назад, ее до сих пор внедрят никак. А моя программулина, несмотря на все недостатки и несоответствия законодательству, с помощью всяких костылей еще активно используется.

      Правда, была история, когда после очередного обновления системы безопасности WinXP она вдруг перестала помещаться в памяти. Оказалось, что эта обнова запрещала загрузку драйверов в верхнюю память при помощи утилиты LH.
      Пришлось выискивать это вредное обновление и изничтожать.


      1. geher
        10.01.2018 11:04

        Насчет 640K не уверен, а вот 1024K, действительно, хватало много для чего, если с умом подойти, а не тяп-ляп.

        Когда-то и 64К хватало.
        Видел в свое время, как народ на компьютере из коры и веток (был такой Корвет) творил.


        1. Pochemuk
          10.01.2018 11:39

          :) Ну так тут речь плавно свернула на полноценную DOS. А последние ее версии на 64K как бы вряд ли встанут. Разве что само ядро в урезанном виде.

          Что касается специализированных ОСей, то читал где-то как FORTH-машину на контроллер с 16K заливали. И ведь поместилось же! И сама машина и управляющая программа под ней.


          1. FForth
            10.01.2018 14:56

            Да, Вы правы классический вариант Форт-системы помещается примерно в 8Кб флеш контроллера.
            В рамках PC есть и проект OpenBios www.coreboot.org/OpenBIOS на базе стандарта IEEE 1275-1994 активно используемом в Sun компьютерах. Во FreeBSD Форт тоже используется в качестве загрузчика, а Форт системы под DOS тоже многофукциональны.

            P.S Язык Форт в СССР и России www.computer-museum.ru/histsoft/fortran_sorucom_2011.htm
            Астро-Форт (И.Р. Агамирзян) Была очень функциональна (с многочисленными пакетами расширения) под ДОС. Сейчас тоже есть Форт системы ещё развиваемые авторами в рамках ДОС (DX-Forth)


      1. sumanai
        10.01.2018 15:53

        Тому как в Win8 прекратилась эмуляция DOS

        Думаю, дело в 64 битности Win8, а не в версии.


        1. MacIn
          10.01.2018 19:44

          В 64 битном режиме ведь нет виртуальной машины 8086? Она ведь должна была использоваться NT для эмуляции DOS.


          1. sumanai
            11.01.2018 01:35

            Ну да, это и имелось в виду. Microsoft поленился написать свой эмулятор процессора, и просто выкинул соответствующий код.


  1. DRDOS
    09.01.2018 02:51

    Когда ностальгируешь можно еще не то надумать!
    С системами реального времени вы как то погорячились :)
    Лучшая операционка это OS/2… Жаль такой шедевр угробили :(


    1. sav1812
      09.01.2018 07:50

      OS/2 была лучшей DOS… :)
      Помню, как 386-я машинка с 8 Мб оперативки и OS/2 Warp 3.0 второй системой были счастьем для женщин-медстатистиков в таёжном Приморском селе, которых замучала долгая перезагрузка системы из-за регулярно виснувших программ, «накорябаных» какими-то «варягами на Clipper.
      А тут — диспетчер задач, и все проблемы. :))


      1. Shtucer
        09.01.2018 11:20

        Ну, диспетчер задач изкоробочный там был так себе. Ежели какой криворук в своем приложении повесит очередь сообщений PM, то все, и диспетчер не запустится. Спасал только WatchDog (или я забыл как он назывался, столько лет уже утекло).


        1. pfemidi
          09.01.2018 11:55

          В OS/2 был WatchCat, который с началом буржуйского рождества рисовал в ВарпЦентре иконку с котом, одетым в рождественскую шапку (в остальное время кот был без шапки) и в полуосёвых конференциях говорили: «Кот шапку нацепил!» и все кто был в курсе понимал о чём речь, отвечая: «Ну значит скоро Новый Год!»

          А насчёт переполнения PMQUEUE был какой-то параметр в config.sys, может быть даже недокументированный, но был. Как раз против этого дела. Помню точно что был, но за давностью лет уже не помню какой.


          1. Shtucer
            09.01.2018 13:19

            Какой-то был, да. Но без WatchCat всё равно как без рук. На его фоне подоспевшая 4 NT с её Ctrl-Shift-Esc была вообще молодец. Но полумуху я любил не за это, конечно.


        1. sav1812
          09.01.2018 14:49

          Ну, диспетчер задач изкоробочный там был так себе. Ежели какой криворук в своем приложении повесит очередь сообщений PM, то все, и диспетчер не запустится.

          Насколько я помню, это касалось «родных» приложений OS/2.
          Не припоминаю, чтобы систему можно было «убить» из сеанса DOS. А большего мне и не нужно было. Народ и так был счастлив: ­всё познавалось в сравнении. :)


          1. pfemidi
            09.01.2018 15:34

            На любом процессоре без VME (а VME в те времена был только у Intel) достаточно в сеансе DOS запустить следующий код:

            cli
            jmp $
            

            и вуаля, полное подвисание всего кроме кнопок Reset и Power. Чем мы, апологеты Интела, в своё время тролили любителей AMD. Правда сейчас у любителей AMD появилась ответка в виде Meltdown, которому Intel подвержен, а AMD как выяснилось нет.


            1. sav1812
              09.01.2018 15:49

              На любом процессоре без VME (а VME в те времена был только у Intel)

              Вот я и говорю — всё работало нормально. ;) :)

              И потом, Вы приводите случай злонамеренного нарушения работы системы, а меня интересовало решение проблемы нестабильно, некорректно работающих программ.
              Была, помнится, в Clipper такая проблема: при попытке сохранения из программы на дискету, если дискета в дисководе отсутствовала, программа «вешалась» и, соответственно, требовалась перезагрузка системы. Ошибку отсутствия дискеты «программисты» обработать корректно почему-то не сочли необходимым.
              Перевод этих «шедевров программистского зодчества» в сеанс DOS под OS/2 проблему решил хотя бы в плане сокращения потерь времени на «перезагрузку».

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


              1. MacIn
                09.01.2018 16:37

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

                Это жонглирование словами, не более. Замкнутый цикл — вполне себе «некорректно работающая программа».


      1. speakingfish
        10.01.2018 15:33

        Для многозадачности под DOS достаточно было DesqView. Софт прекрасно работал и в тексте и в графике; и форматирование дисков не тормозило всю систему, в отличие от Win9x.


    1. speakingfish
      10.01.2018 11:55

      О, да. Только в OS/2 был DOSBox из коробки — и можно было в окне запустить с дискеты загрузочный диск, например некоторые игры под DOS делались как загрузочные диски.


  1. Nomad1
    09.01.2018 07:30

    Выше много чего славного вспомнили, но все же, keyrus.com, коллеги. RIP, Dmitry Gurtyak.


    1. goodwind
      09.01.2018 07:51

      keyrus был, пожалуй, на всех машинах которые я тогда видел. Сначала я даже думал что это часть ОС, но потом мне по знакомству скопировали оригинальный дистрибутив MS-DOS 6.2 и я был неприятно удивлен


      1. svitoglad
        09.01.2018 11:07

        Это вам значит не приходилось MS-DOS с нуля ставить поэтому и не знали о keyrus.


        1. goodwind
          09.01.2018 11:34

          о чем, собственно, и был мой комментарий


      1. OldGrumbler
        10.01.2018 12:56

        Эх, ностальгия… когда-то русификатор rk (тот, что менял раскладку по двум шифтам и вместо буквы «Ё» рисовал три черточки ? ) был мной расковырян и снабжен редактором раскладки. Под дос, с псевдографикой и, кажется, драг-н-дропом. Можно было в русской раскладке разместить любые символы. Конечно же, в первую очередь Н и р из латиницы — потому что FIDO )))


        1. MacIn
          10.01.2018 19:45

          Гораздо круче в той эпохе смотрятся Norton Utilities, котрые рисовали псевдографикой с подменой символов на ходу, чтобы рисовать мышь и границы окон.


          1. speakingfish
            10.01.2018 21:13

            Для красивых границ окон обновляли знакогенератор при старте. Только мышь на лету обновляла знакогенератор. Я тогда тоже делал такую «графическую» мышь — в виде библиотеки и резидента.


            1. MacIn
              10.01.2018 21:48

              Только мышь на лету обновляла знакогенератор

              Об этом и речь.


    1. sav1812
      09.01.2018 08:16

      Да, спасибо человеку за его труд и светлая память…


  1. Dioxin
    09.01.2018 09:22

    На Спектруме я мечтал о 640 КБ ОЗУ.
    И да — весь код только на асме.


    1. Alyoshka1976
      09.01.2018 11:18

      Я мечтал запустить на нем CP/M. Хотя ISDOS тоже была неплоха.


      1. zabbius
        09.01.2018 13:07

        У меня тогда шаблон порвался. Поскольку на момент моей встречи с IS-DOS, ИскраСофт давно торговали коврами, а не писали софт для спектрумов. Отдельно запомнился хак, который заставлял TR-DOS выполнять код с дискеты при любом обращении к ней.


  1. vladd12
    09.01.2018 10:52

    Ностальгия, которой у меня не было, но увы и ах) DOS всегда красив.


    1. ainoneko
      09.01.2018 11:33

      DOS всегда красив.
      Песня про DOS.


  1. kazenniy
    09.01.2018 11:40

    Чудесный мир некромантии.


    1. goodwind
      09.01.2018 12:24

      Спасибо что не назвали некрофилией. Некоторые это так зовут


    1. hdfan2
      09.01.2018 19:50

      Да, славные были времена. Хорошо, что они уже кончились.


  1. jia3ep
    10.01.2018 10:22

    Некоторое время назад тоже решил разобрать старые диски и даже комп 286 приобрел под это дело. Какие-то проекты удалось восстановить с дискет и их код попал на GitHub. Вот, например, редактор шрифтов под DOS, написанный на Паскале: github.com/codeatcpp/Font-Editor

    Интересно, что дискеты до сих пор читаются, но на запись уже работают не идеально. Наверное процесс восстановления данных, особенно с 5'' дискет или с кассет DC600A — это отдельная тема.