В настоящее время становится популярным отказываться от интернета, социальных сетей, мессенджеров и прочего. Это называется цифровым детоксом.
Я вам предлагаю совершить нечто подобное, разумеется, ненадолго, и если вам за 40, погрузиться в ностальгические воспоминания. А если вы не представляете, как же люди жили раньше без интернета, то узнать, как выглядело рабочее место программиста или студента в далёкие 90-е годы.
Я хочу, чтобы погружение было максимально приближено к реальности, и считаю, что различные эмуляторы и виртуальные машины очень удобны для изучения, разработки и отладки старого программного обеспечения, но для полного погружения лучше работать с программами без них, на реальном компьютере. Вы, к сожалению, уже не ощутите на себе мерцание и размытость монитора с ЭЛТ, не услышите стук дисковода для гибких дисков, громкое шуршание винчестера, но многие эмоции вы переживёте заново.
Для меня середина 90-х в сфере ИТ неразрывно связана с MS-DOS 6.22.
С появлением ОС Windows постепенно использование MS-DOS и программ для неё сошло на нет. Особенно такая тенденция наметилась с появлением Windows 2000. Уход MS-DOS был обусловлен следующим:
- MS-DOS не поддерживала файловые системы NTFS и FAT32 (MS-DOS 6.22), которые выгодно отличались от FAT16.
- Работа с периферийными устройствами усложнялась для пользователя. Если для мыши или CD-ROM проблем не было, то со звуковыми и сетевыми картами, устройствами, использующими USB-интерфейс, дела обстояли хуже. Требовалось множество драйверов или поддержка устройства приложением, и мало что работало из коробки. Иными словами, MS-DOS переставала выполнять функции операционной системы.
- MS-DOS использовала реальный режим работы процессора, и работать можно было с 640 Кб оперативной памяти. Работа с большими объёмами памяти осуществлялась при помощи так называемых менеджеров памяти.
- MS-DOS не поддерживала многозадачность. В принципе вы могли запустить несколько резидентных программ, но это по сути не являлось многозадачностью.
Сейчас же, когда хочется поностальгировать, эти недостатки не так важны, так как приятное ощущение тех старых добрых времён всё перевешивает.
Если вам будет что-то непонятно в статье, или вы хотите просто запустить у себя на компьютере программы из статьи, вы можете загрузить готовый образ из моего репозитория на GitHub, записать его на флеш-накопитель и запустить компьютер с него.
Какими 90-е остались в моей памяти
▍ Какие были компьютеры
Компьютерная мышь, CD-ROМ-привод, принтер, звуковая карта и колонки являлись роскошью, и у большинства счастливых обладателей персональных компьютеров их не было.
Может потому, что я учился в провинциальном вузе, но в 1996 году IBM-PC-совместимый компьютер был только у одного моего одногруппника, и только к 2001 году компьютеры появились у каждого в моей группе. И то, скорее всего, потому что учились мы на компьютерной специальности.
Так как персонального компьютера практически ни у кого не было, мы видели компьютеры только на практических занятиях, связанных с программированием, и ещё два раза в неделю по два часа после занятий по предварительной записи.
Что же из себя представлял компьютерный класс на моей кафедре в далёком 1996 году в моём вузе? Это около десятка разношёрстных IBM-PC-совместимых компьютеров на базе микропроцессоров Intel 286 и Intel 386, c цветным или монохромным монитором, с винчестером или без, объединённых в локальную сеть.
Было ещё несколько компьютерных классов на вычислительном центре вуза, но там даже не было компьютерной сети. В классах стояли компьютеры (хотя их более правильно назвать ЭВМ) EC 1840. Это такая здоровенная бандура, которая не имеет жёсткого диска, гудит как пылесос и использует в качестве накопителей информации два дисковода на гибких магнитных дисках по 360 Кб каждый.
Компьютер EC 1840
Если ты хотел поработать (выполнить задания по программированию) на таком компьютере, то ты должен был отдать свой студенческий билет под залог, а тебе выдавали две дискеты: одну загрузочную дискету 5.25 360 Кб с MS-DOS и Norton Commander и вторую с Turbo Pascal.
▍ Какие были сетевые технологии
Некоторые классы были объединены в локальную сеть коаксиальным кабелем с общей пропускной способностью 10 Мбит/c. Эти 10 Мбит делились по-братски на все компьютеры, а это целых два класса по 10 компьютеров. Сеть использовала не привычный нам всем TCP/IP, а протокол от Novel IPX/SPX. Общеинститутской локальной сети не было.
Студентам был предоставлен только доступ на чтение к файловому серверу, где располагались задания на лабораторные работы, документация по программированию, необходимые программы. Персонализированного доступа не было, все студенты и даже преподаватели заходили под обычным юзером.
Высокоскоростного интернета не было вообще, к 1998 году появился канал в 115 Кбит/c на весь институт. Разумеется, что студенты его вообще не видели. Интернет того времени для меня ассоциируется с красными глазами невыспавшегося счастливого одногруппника, которому удалось ночью по dial-up выйти на несколько часов в сеть и даже побеседовать кем-то по ICQ.
▍ Что читали и откуда брали информацию
Книг по программированию в библиотеке практически не было. Были какие-то книги по советским компьютерам, был даже трёхтомник Дональда Кнута, но ввиду сложности этого труда он мало чем помогал.
Больше всего помогал опыт работы с компьютером, методички, беседы с одногруппниками после занятий. Помню, с каким восторгом мы слушали студента, который рассказывал, что у его родителей на работе есть персональный компьютер с принтером и Windows 95. Для нас, видевших только MS-DOS 6.22, это было какой-то фантастикой. Также помогали добытые распечатки книжек или интерактивная документация, входящая в комплект поставки IDE Borland Turbo C++ или Borland Turbo Pascal.
▍ Какими программами пользовались
Время стёрло из памяти структуру директорий и перечень всего, что было на файловом сервере. Запомнилось только то, что сам часто использовал в то время.
Был текстовый редактор WD, электронные таблицы SuperCalc, IDE для разработки программ: Borland Turbo C++ 3.0, Borland Turbo Pascal 7.0, Borland Turbo Assembler 4.0.
Очень популярны были утилиты от Norton (Symantec). Они отличались очень красивым по тем временам интерфейсом и полезными функциями (дефрагментация диска, проверка диска на битые сектора и лечение, редактирование диска, восстановление удалённых файлов).
Часто использовались архиваторы. Самым распространённым был RAR.
▍ Как играли в компьютерные игры
Игры, естественно, были под запретом даже после занятий, но кого это тогда волновало. Обычно игру приносил какой-нибудь студент на дискете, и в течение часа она, часто вместе с компьютерным вирусом, становилась достоянием группы. Иногда получалось её сохранить на файловом сервере, мы её прятали от администратора всеми возможными способами. Архивировали, изменяли сигнатуру архива в начале файла, переименовывали и прятали в директориях.
С администратором у нас была постоянная необъявленная война — мы изобретали способы, как его можно обмануть, а он — как нам не дать поиграть в любимую игру. Его сообщником была лаборант, которая постоянно следила за тем, чтобы мы не играли на компьютерах. Самый простой способ скрыть факт игры, который был – это нажать кнопку Reset, когда она появлялась на горизонте.
Как только в класс заходила лаборант, все дружно нажимали кнопку Reset, а потом также дружно изучали, что же находится на диске C в программе Volkov Commander.
▍ Как экономили каждый байт
В ту эпоху каждый байт был на счету. Чтобы сохранить побольше информации на диск, мы использовали архиваторы, нестандартное форматирование дискет, виртуальные диски со сжатием.
Ещё был интересный способ, которым пользовалась лаборант нашей кафедры, продавая нам дискеты, – это их просверливание. Не буду утверждать, что именно она просверливала, но при выполнении такой операции над дискетой её ёмкость увеличивалась в два раза с 720 Кб до 1.44 Мб. Да, вы не ослышались, нужно было просверлить дискету.
Советская дискета ёмкостью 720 Кб, которую можно было просверлить
Дело в том, что контроллер дисковода гибких дисков 3.5 дюйма определял ёмкость дискеты по наличию и расположению отверстия в правом нижнем углу дискеты. Если отверстия не было, то это дискета с ёмкостью 720 Кб, если было, то 1.44 Мб или 2.88 Мб в зависимости от положения. Поэтому при помощи простой дрели можно было увеличить ёмкость дискеты. Понятно, что надёжность записи на такую дискету, как и чтения с неё, была низкая.
▍ Какие неприятности случались, и как их устраняли
Часто на дискетах появлялись дефектные сектора, с которых нельзя было прочитать информацию или на которые нельзя было записать информацию. Появлялись они из-за разных причин: некачественная или ветхая дискета, повидавший виды дисковод.
Если на дискете являлся дефектный сектор, то файл, который располагался на этом секторе, становился некорректным. Если это был архив, то он не распаковывался. Боролись мы с этим двумя способами:
- Записывали две копии своих программ на две разных дискеты. Поэтому у каждого было несколько дискет. Большим шиком была пластиковая прозрачная коробка, в которой мы хранили и носили с собой дискеты.
- При создании архива выбирали опцию «добавить информацию для восстановления». Помимо компьютерного вируса, который мог непредсказуемо напакостить, очень разочаровывало случайное удаление файла. Для файловой системы FAT было решение в виде программы UnDelete. Главное — нужно было ничего не записывать на диск после удаления, чтобы повысить шансы на восстановление. Однако для сетевого диска таких решений не было. До сих пор помню дипломницу, которая весь вечер набирала файл со своей работой и, уходя домой, случайно его удалила с сетевого диска.
Думаю, у вас тоже осталось много воспоминаний о тех временах. Будет интересно, если вы поделитесь ими в комментариях.
Программное обеспечение 90-х
Назначение программ в 90-х не отличалось от современных программ, существовали те же категории приложений:
- Офисные приложения.
- Файловые менеджеры.
- IDE и компиляторы.
- Антивирусы.
- Различные утилиты.
- Игры.
Разве что не было браузеров. Может, конечно, где-то и были, но распространены не были.
▍ Офисные приложения
Офисные приложения у нас на кафедре были представлены текстовым редактором WD и электронными таблицами SuperCalc. На них мы и проходили практику на первом курсе. Если WD почти не вызывал вопросов, то SuperCalc по юзабилити немого напоминает редактор Vim (запустить легко, а что-то сделать и выйти с сохранением – нужно знать как, с первого раза не догадаешься).
Текстовый редактор WD
Электронные таблицы SuperCalc
▍ Файловые менеджеры
Несмотря на то, что мы учили командную строку DOS на предмете «Системное программирование», в основном пользовались файловыми менеджерами.
Я помню три файловых менеджера: Norton Commander, Volkov Commander, DOS Navigator. Первый со вторым можно было легко спутать из-за очень похожего внешнего вида, но как-то модно было использовать Volkov Commander.
DOS Navigator мы использовали только для редактирования больших бинарных файлов (первые два портили файл, если он был большого размера). Такую операцию мы выполняли, когда прятали игры от администратора.
Файловый менеджер Norton Commander
▍ IDE и компиляторы
Когда мы учились, преподаватели не сильно различали IDE и компиляторы. На некоторых других кафедрах были такие случаи, что преподаватель объяснял студенту причину ошибки компиляции программы тем, что в компьютерном классе поставили новые мониторы.
Из IDE было три основных: Borland Turbo Pascal 7.0, Borland Turbo C++ 3.0, Borland Turbo Assembler 4.0, слышали про MASM, но вживую его я не видел, только в книжках.
IDE Borland Turbo Pascal 7.0
Интересный случай был с компилятором Turbo Pascal 7.0. Некоторые счастливчики, которые уже купили компьютер и могли делать задания по программированию дома, заметили, что у них почти все программы выдают ошибку деления на 0. Оказалось, что дело было в модуле crt (turbo.tpl), который выдавал такую ошибку, если частота процессора была 200 или более МГц.
▍ Антивирусы
Компьютерные вирусы были всегда. Тот, кто был попродвинутей, соблюдал элементарные средства безопасности: не совал дискету куда ни попадя, а если не нужно было записывать что-то на дискету, то переключатель на ней был в положении защиты от записи. Иногда проверяли свои дискеты на наличие вирусов. Самыми распространёнными были Doctor Web и Norton Antivirus.
Антивирус Doctor Web
▍ Утилиты
Самой полезной утилитой, наверное, была UnErase из пакета Norton Utilities. Она давала возможность восстановить случайно удалённый файл. Также была интересная утилита DiskEdit, которая позволяла редактировать и просматривать информацию на жёстком диске или дискете на низком уровне (в виде секторов). Для создания архивов использовали rar, реже pkzip/pkunzip. До сих пор помню самый короткий анекдот: «pkunzip.zip».
Утилита UnErase
Утилита DiskEdit
Утилита Norton Disk Doctor
Архиватор Rar
▍ Игры
Доступных игр было не сильно много, распространялись они на дискетах, CD-ROM диски только появлялись, но мало где можно было прочитать CD-ROM. Наверное, многим запомнилась легендарная Wolfenstein 3D, а потом Doom, Quake, которые уже требовали более мощные по тем меркам компьютеры.
Игра Wolfenstein 3D
Игра Quake
Были и отечественные игры, которые создавали энтузиасты, например, «Поле чудес». Естественно, игры, как и обычные программы, никто не покупал — их просто доставали у знакомых и обменивались ими. Сложно судить об оригинальности игр в то время. Игра представляла собой нечто видоизменённое (неизвестно кем), и было хорошо, если игра не содержала вируса в своём составе. Но и такие игры были для многих в диковинку и представляли интерес.
Локализация программ
Это было время, когда современные компьютерные технологии только заходили на рынок бывшего СССР. В основном всё программное обеспечение было пиратское и взломанное, если у него предусматривалась защита. Отечественное ПО было, но программы можно было по пальцам пересчитать, по крайней мере у нас: несколько игр и текстовых редакторов, а также KeyRus – резидентная программа, которая позволяла работать с кириллицей.
Программа KeyRus была разработана донецким студентом Дмитрием Гуртяком в 1989 году, к сожалению, рано ушедшем из жизни, но популярность у неё была очень высока, так как в то время использовалась английская версия MS-DOS, которая вообще ничего не знала о кириллице, а программа позволяла очень просто добавить поддержку русского алфавита. Говорят, что была официальная русификация MS-DOS, но я её не видел.
Наверное, из-за нестандартных решений в программе потом у неё были проблемы с работой в Windows NT, да и сейчас в некоторых эмуляторах она не всегда корректно работает.
Воссоздание компьютера из прошлого на современном компьютере
В сети много сайтов, которые пытаются сохранить то наследие программ. Например, англоязычные VentusWare, WinWorld или русскоязычный Old-DOS.ru. Я думаю, что вам будет приятно потратить вечер, а может и не один, на их изучение.
После того, как в операционной системе Windows исчезла возможность запускать DOS-программы, самое очевидное решение для запуска старых программ — использовать эмулятор или виртуальную машину, но мы пойдём другим путём – запустим их на современном компьютере в операционной системе MS-DOS 6.22.
Изначально я хотел создать загрузочный ISO с эмуляцией жёсткого диска, но потом от этой идеи отказался, так как флеш-накопитель предоставляет больше возможностей.
Для создания загрузочного флеш-накопителя с DOS мне известны несколько программ:
- Rufus — позволяет, помимо прочего, создать загрузочный накопитель с FreeDOS — современным аналогом MS-DOS, разработка которой прекращена после выхода Windows Me.
- RMPrepUSB — пакет программ, позволяющий записывать различные загрузочные сектора для загрузки ядер MS-DOS и FreeDOS (IO.SYS и KERNEL.SYS), загрузчиков NTLDR (Windows XP), BOOTMGR (Windows Vista, Windows 7), SYSLINUX (простой загрузчик, используемый многими дистрибутивами LINUX для загрузки из BIOS (не UEFI)), проверять работу загрузочного диска в эмуляторе, размечать диск, делать копии разделов, записывать образы разделов на диск.
Разобравшись с вышеперечисленными программами, подготовив необходимые файлы, можно создать загрузочный флеш-накопитель с MS-DOS 6.22 или FreeDOS, но они вам не помогут, если у вас есть образы установочных дискет. Поэтому я решил создать образ флеш-накопителя, используя эмулятор Qemu.
Раньше программы часто не требовали инсталляции — решалось всё простым копированием файлов. Если честно, об установочных дискетах в MS-DOS я узнал уже спустя много лет.
Итак, нам понадобятся:
- Эмулятор Qemu (только для создания загрузочного флеш-накопителя).
- Образы инсталляционных дискет MS-DOS 6.22.
- Программы (образы инсталляционных дискет, директории с программами).
- Программа для записи образов на флеш-накопитель.
Хотя у меня и получилось запустить многие из программ для MS-DOS 6.22 на своём компьютере, хочу предупредить о сложностях, с которыми вы можете столкнуться.
- На компьютерах середины 90-х звуковая карта была редкостью, и звук выводился на динамик системного блока. На современных же компьютерах этот динамик может отсутствовать (тогда вы вообще не услышите никакого звука в играх) или эмулироваться звуковой картой (тогда звук может быть искажённым).
- Некоторые программы, которые напрямую используют порты ввода-вывода, могут не работать.
- У меня не получилось заставить работать драйвер HIMEM.SYS.
- DPMI-сервера тех времён, например, для Quake, могут некорректно работать. Я использовал DPMI-сервер с этого проекта.
▍ Алгоритм создания загрузочного флеш-накопителя с MS-DOS 6.22
- Подготавливаем директорию, из которой будем устанавливать программы. Я создал в ней две директории (floppy-images и dos-programs), в которые соответственно поместил программы в виде образов инсталляционных дискет и в виде простых файлов.
- Загружаем и устанавливаем Qemu.
- Создаём образ жёсткого диска:
$ qemu-img create dos.img 500M
- Запускаем qemu:
$ qemu-system-i386 -drive file=dos.img,format=raw,media=disk -m 64 -L . -drive file=fat:rw:"dos-programs",format=raw,media=disk -drive file=floppy-imagesdosdisk01.img,format=raw,if=floppy
- Следуем инструкциям, которые предлагает нам установщик DOS.
- Для смены образа дискеты используем Qemu Monitor Console. В графическом режиме эмулятора это Ctrl+Alt+2. Для возврата из неё – Сtrl+Alt+1.
Для просмотра всех дисковых устройств, используемых в эмуляторе:
(qemu) info block
Для смены образа дискеты:
(qemu) change floppy0 <файл образа>
Для извлечения образа дискеты:
(qemu) eject floppy0
- Чтобы удобнее было работать в MS-DOS 6.22, первым делом устанавливаем Norton Commander:
(qemu) change floppy0 floppy-imagesncdisk01.img
C:> mkdir C:APP C:> A: A:> dir A:> install
Путь для установки я меняю с C:NC на C:APPNC, чтобы корневая директория была чище. Я не устанавливал просмотрщики NC, вы можете установить.
- Аналогичным образом устанавливаем Turbo Pascal 7.0, Turbo C++ 3.0, Turbo Assembler 4.0.
- Остальные программы копируем просто из директории в директорию.
Из всех программ дополнительной настройки требуют только Turbo Pascal 7.0 и Quake.
▍ Настройка Turbo Pascal
Как я говорил ранее, Turbo Pascal, а именно его модуль TURBO.TPL, работает некорректно с процессорами с тактовой частотой 200 мегагерц и выше. Поэтому его нужно пропатчить. Я не буду останавливаться, как это сделать, вы это можете прочесть из прилагаемой к нему инструкции.
▍ Настройка Quake
Quake сильно выделяется среди компьютерных игр того времени. Для своей работы она требует прилично по тому времени памяти. Работа с памятью более 640 килобайт всегда была сложной в MS-DOS, поэтому на ней у меня игра Quake не запустилась с первого раза.
Почитав немного о DPMI, я понял, что проблему, скорее всего, можно решить, заменив DPMI-сервер на более новый.
Нужно взять файл HDPMI32.EXE из этого архива. Для удобства файлы из этого архива я разместил и в моём репозитории в директории dos-programsAPPHX.
▍ Настройка CONFIG.SYS и AUTOEXEC.BAT
В файлах CONFIG.SYS и AUTOEXEC.BAT осуществляется вся нехитрая настойка DOS 6.22. Я их немного изменил, чтобы DOS работал как надо. Содержимое файлов ниже.
Файл config.sys:
FILES=30
Файл autoexec.bat:
@ECHO OFF
PROMPT $p$g
PATH C:DOS;C:APPTC3BIN;C:APPTP7BIN;C:APPTASM4BIN;
SET TEMP=C:DOS
C:APPKEYRUSkeyrus.com
C:APPNCnc.exe
▍ Запуск созданного образа на реальном компьютере
- Закройте Qemu.
- На флеш-накопитель запишите образ dos.img, используя balenaEtcher или другую программу для записи образов на флеш-накопитель. При записи будут удалены все файлы, которые были на нём ранее, и пространство под файлы будет ограничено 500 Мб (следствие DOS и FAT16). Поэтому вам будет достаточно старого флеш-накопителя на 1 Гб.
- В BIOS выберите Legacy Mode и отключите Secure Mode.
- Выполните загрузку с этого флеш-накопителя.
Если вы создадите в Qemu ещё один пустой образ с FAT 16, вы можете использовать его как дополнительный винчестер, и MS-DOS его будет видеть. Единственное условие, вы должны его вставить в разъём до перезагрузки или включения компьютера.
Заключение
Эпоха DOS для меня длилась всего чуть больше года c сентября 1996-го по декабрь 1997-го. Потом в институте заменили компьютеры на более новые — сначала с Windows 3.1, а потом и с Windows NT 4.0. Но запомнилась эта эпоха очень хорошо. Вообще, обучаясь в институте, я видел, как всё быстро меняется в сфере компьютерных технологий. Когда я поступил, были IBM PC 286 и EC 1840, а когда заканчивал, уже были классы с Pentium II 32 Мб.
Надеюсь, если вы были студентом в те далёкие времена, вы ощутили те чувства, которые ощущали тогда. Я считаю, что именно реальный компьютер с DOS 6.22 позволяет лучше всего это ощутить, а не различные эмуляторы и виртуальные машины, или более поздний DOS 7.0, входивший в поставку Windows 95, или ещё более поздний Free DOS.
Если честно, до этой статьи я сам думал, что в DOS 6.22 уже не поработаешь без виртуальной машины или реального компьютера из 90-х, найденного среди хлама в гараже, но оказалось, что я ошибался.
Не все программы и не на всех компьютерах работают как надо. Но если программу можно запустить на более новом компьютере это, с моей точки зрения, говорит о том, что её правильно спроектировали, раз по прошествии 30 лет она продолжает работать и выполнять то, для чего она задумывалась. Некоторые перестают работать потому, что авторы с целью оптимизации использовали недокументированные возможности и нестандартные решения.
Я думаю, что в 90-х годах студент, у которого все эти программы были на винчестере, мог гордиться этим. Я привёл только те программы, с которыми я работал — вы, вероятнее всего, использовали другие программы. Думаю, вы сможете найти и добавить свои программы, которые использовали в то время.
Если вы всё же хотите поиграть в старые DOS-игры в эмуляторе, то можете использовать DOSBox, но, несмотря на качественную эмуляцию, ощущения всё же будут не те.
В образ я поместил много программ, не сильно экономя пространство, в реальности же жёсткие диски в то время были по 40 мегабайт, и столько информации вы разместить не могли. Приходилось каким-то образом обходить это ограничение. Из дистрибутивов программ удаляли всё, что считали лишним.
Не знаю как вам, но мне приятно ощущать, что какой бы современный компьютер сейчас ни был, он всё равно может работать под управлением MS-DOS 6.22.
Операционная система Windows 95, которая пришла на смену DOS, обладала большими возможностями, но ввиду сложности её запуск на современном железе более затруднительный и требует больших знаний, если он вообще возможен. То же можно сказать и о Windows NT 4.0, Windows 98, Windows ME, Windows 2000, Windows XP. Но это, как говорится, совсем другая история.
Автор:
artyomsoft