Комментарии 203
Впрочем сейчас многие не верят в то, что Досовский Суперкалк работал не хуже Экселя.
640 кбайт оперативка и 20 мегабайт винт хватало на жизнь. Про видеопамять вообще молчу. Сейчас 32 мегабита в телефоне приходится периодически чистить ибо начинает кричать что ему мало памяти.
С времен ДОС у меня на некоторых форумах остался ник SYS Недавно меня обвинили в том, что я в качестве ника использую ничего не значащий набор из трех букв.
Эти люди, наверное, никогда не видели в корне ФС на своем жестком диске с виндой файла pagefile.sys. А он там обычно есть (мало кто выключает подкачку или переносит ее на другой диск).
У меня другие файлы в памяти
config.sys
himem.sys
emm386.sys
Я очень стар)))
И кстати, загрузочной дискета или винчестер (уже отформатированные) делались при помощи утилиты sys.com. Так что я тоже староват маленько ;-)
Смутно припоминаю, что в некоторых более альтернативных версиях DOS эти файлы назывались как-то по другому.
В частности, в PC-DOS и некоторых версиях DR-DOS вроде были ibm.com и ibmdos.com.
и пропустили autoexec.bat и command.com
И кстати, загрузочной дискета или винчестер (уже отформатированные)
так что format /s тут не нужен, тут достаточно утилиты sys.
И ещё насчёт autoexec.bat и command.com позанудствую ;-) Разговор начался с того, что пользователь System12 сказал:
С времен ДОС у меня на некоторых форумах остался ник SYS
Поэтому easty и упомянул про config.sys, himem.sys и другие sys'ы, а я добавил io.sys и msdos.sys. Везде одни sys'ы, про bat'ы и com'ы никакой речи не было.
Это же самая первая магия, которую я узнал в ms-dos.
Ну и как уже написали io.sys и msdos.sys
Команда sys кроме стирания переносила на диск/дискету ДОС.
Команда SYS ничего не стирала.
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.
Да ладно! Дисководы? Гибкие? ДИСКОВОДЫ?
А насколько они гибкие?
У меня вполне работала таблица по расчёту заработной платы, с учетом среднего, вычетов на детей и тд. С собственным меню для пользователя, из которого только по Ctrl-C выйти можно было. И не сказать, чтобы инструмент меня больше напрягал, чем алгоритм.
Писалось это классе в восьмом, изучал я 4 суперкалк по мануалу, так что назвать продукт сильно сложным я не могу.
Да ладно, в конце 80-х — начале 90-х люди полный цикл бухгалтерии и зарплаты учреждений средних размеров организации делали на SUPERCALC, притом это работало годами практически без присутствия автора (за исключением редкой правки размерностей отчетов в связи с инфляцией), и было заменено только в конце 90-х.
DN мне казался слишком жирным. Volkov Commander наше все
Сейчас уже не вспомню но кажись Volkov Commander 4.0 занимал меньше памяти по сравнению с nc.
А ещё из файловых менеджеров того времени был XTreeGold, но я им не проникся вообще.
На большинстве DOS-машин после загрузки драйверов и TSR (резидентных программ) едва находилось 600 КБ ОЗУ.
Даже и 480k.
Но сие было проблемой первых версий DOS.
Потом появилось несколько менеджеров памяти, а позже и сама DOS начала это уметь. Как раз ко времени когда на машины стали по мегабайту-два ставить и хотелось их все использовать.
В этот размер не уместится даже исполняемые файлы большинства программ-установщиков.
меня вот это постоянно поражает… и вспоминается .kkrieger
Плюс к этому избавление от зависимостей (всякие msvcr100.dll).
Но только это не востребовано в большинстве случаев из-за быстрого интернета и дешевого дискового пространства.
char buffer[320x200];
Так, разве, можно?
Поскольку у нас есть до 4 ГБ адресуемого пространства (по крайней мере, теоретически), мы можем считывать с диска сложную тайловую графику или даже целые JPG пререндеренной графики. С помощью этой системы вполне возможно создать почти современную видеоигру.
Ну положим были DOS extender:
DOS/4g
cwsdpmi
PMODE
Какие то из них дружны с упомянутым GNU для DOS — DJGPP
И еще куча.
калькулятор в Windows 10 занимает в состоянии простоя 16,2 МБ оперативной памятиЛюбопытно было бы узнать, что же именно там столько памяти требует.
Скорее всего окна.
А чего тут удивительного, вот список одних только библиотек, который мне выдал listdlls calc
на семёрке (нет 10-ки под рукой)...
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
Ну и строго говоря и 16МБ это не совсем верно, ибо с ним например может запуститься wmiprvse с CIMWin32-провайдером (или еще какой другой, если еще не запущен от чего-то другого), который откушает еще 5-12МБ, и т.д. и т.п.
Если вы хотите, чтоб ваша программа весила в 10 раз меньше и работала в 4 раза быстрее, напишите её без использования фреймворков.
Фреймворки решают ровно одну задачу: увеличивают скорость разработки за счёт увеличения ресурсоёмкости готового продукта. То есть по сути позволяют переложить часть издержек, связанных с разработкой, на конечного пользователя.
Вот эти вот
mov al, 13h
mov ah, 0
int 10h
первое, что всплывает в памяти когда вспоминаю те времена
Что забавно, в те времена у меня не было интернета, поэтому режим я подсмотрел через отладчик в какой-то небольшой игрушке, которая его использовала. Откуда-то вычитал про прерывание 10h и его связь с видеорежимами. Поставил на него breakpoint и смотрел что в какие регистры складывается. Уж не знаю почему, но там было именно так: раздельно загружались ah и al. Как выше в комментах уже сказали, можно было обойтись «mov ax, 13h», но на тот момент мне было лет эдак 13-14 и я еще очень плохо понимал ассемблер.
В результате я сделал свою библиотечку graph13h, в которой были процедуры с короткими ассемблерными вставками для выставления режима и простейшие процедуры для рисования примитивов. Позже мне попала в руки потрепанная книга Майкла Абраша про программирование графики и я расширил библиотечку для рендера простейших 3D-сцен, переписал всё что мог на ассемблере. Эта библиотека позже даже имела хождение на форуме, посвященном паскалю где я был в то время модератором (да, за время её написания у нас появился dial-up).
Не знаю зачем я это всё пишу, ностальгия пробрала
Только не везде она работала, увы.
После Турбо Паскаля и его библиотеки graph, которая не имела режимов выше 16 цветов, этот режим показался чудом так как позволял использовать аж 256 цветов в разрешении 320х200.
Это вы, наверное, не тот драйвер использовали. vgaega.bgi позволял из модуля Graph стандартной библиотеки использовать полноцветный VGA-режим работы адаптера и дисплея. С помощью несложных манипуляций видеодрайвер vgaega.bgi возможно было преобразовать в .obj-формат, а затем в формат .tpu-модуля и внедрить (статически скомпилировать) с программой на Turbo Pascal, использующей графический режим, и она становилась автономной (не требовалось дополнительно таскать содержимое каталога \BGI).
*уже когда-то писал в другом треде, но...
Ностальгия пробила
У меня был "Турбо Паскаль", состоящий только из компилятора (я его выдрал из какого-то промсофта - он там использовался для вкомпиливания настроек), но turbo.tpl не было, а руки чесались попрограммировать (К.Г. Финогенов уже начал захватывать полку на книжном стеллаже) на Turbo Pascal (в Доме пионеров нас учили программировать на Turbo Basic, а в школе на "Электрониках" был какой-то Pascal и незабвенный БЕЙСИК УКНЦ), так я с помощью различной подручной литературы написал суррогат CRT.TPU и DOS.TPU, процентов на 90 состоящие из ассемблерных вставок, и нормально у меня и строки на экран выводились, и с файлами работать было можно... к моменту, когда я добрался до графических режимов (на ассемблере я с ним игрался к тому времени больше года), в школу завезли полный дистрибутив Borland Pascal, и всё, на что меня хватило с самописными TPU - написал просмотрщик картинок от sexsonix (спустя пару лет внезапно скачал с какой-то BBS комплект sexonix со своим views.exe, чему очень удивился - вроде, вьюер раздавал только одноклассникам, но, похоже, он попал в Дом пионеров, откуда и расползся достаточно широко; про картинки - они были банальными дампами экрана в режиме 13h и палитрой, проксоренными каким-то байтом, склеенные друг за другом...)
А потом я поступил в институт на "неИТ" специальность, и с программированием подзавязал, а когда решил вернуться, уже везде был Windows95 и все мои навыки "изощрённого программирования" оказались ненужными, но это совсем другая история...
Действительно ли Билл Гейтс произнёс фразу «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.»
Да и вообще вся многозадачность обычно заключается в оседлании прерывания таймера, что делает сейчас любая многозадачная система.
Эх… А когда-то игрушки CGA'шные, жутко большие, аж по 32 килобайта размером, садясь на int 8, и музыку играли 8-мибитную, и экран обновляли, а сев при этом ещё и на int 9 клавиатуру обрабатывали и даже (что мне казалось дико невозможным в то время!) блокировали Ctrl-Alt-Del.
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.
Или сходите в любое госучреждение/библиотеку. Флопики еще не вымерли. Даже у меня есть, вставил после апгрейда старого ПК на почётное место.
Upd: Да и забыл, сам работаю сисадмином в одном госучреждении, там осталась много раритетных дискет, в том числе и с MS-DOS ;)
Может и сейчас что-то подобное живое есть.
Потому что в играх выбор такой — скорость загрузки/графон/занимаемое пространство на диске. Можно выбрать только 2. В век терабайтных хардов и приставок с 50гб блюреем естественно жертвуют занимаемым пространством на диске.
DOS в сущности является операционной системой реального времени (ОСРВ).Ну, это крайне спорное утверждение. Как минимум, существование резидентных (TSR) программ может помешать реалтаймовости. А ещё — в DOS отсутствует асинхронная работа с диском (пишите жалобу на BIOS), так что на период обращения к диску программа не может выполняться.
тончайший интерфейс DOS между приложением и оборудованием даёт ей преимущество в этой области использованияОсталось понять, зачем тут вообще нужен DOS, если выгоднее запустить 32-битную программу, которая сама в себе несёт драйвер для работы с файловой системой и всё остальное.
в режиме VGA 320x200x256Все эти видеорежимы — мерзость. Я понимаю, что это не DOS виноват, а аппаратура — ну так аппаратура разрабатывалась в т.ч. с оглядкой на совместимость с DOS и той аппаратурой, на которой работал DOS — закономерно получился уродец.
Видеорежимы чем плохи? Понятно, что памяти мало, нужно было показать максимум возможного.
Конкретно VGA 320x200x256 вообще был один из лучших. Показать 256 цветов в то время — было очень круто. Понятно, что пиксели были громадные и даже на тех маленьких мониторах смотрелись как лампочки. Но все равно — это первый значительный шаг к какой-то нормальной многоцветной картинке. До сих пор помню картинку на обложке журнала ("Компьютерра" кажется), с которой заинтересовался этими возможностями и стал экспериментировать с графикой. Тем более рассчитывать координаты было довольно легко 320 = 2^8+2^6, вся видеопамять помещалась в 1 сегмент — можно было быстро и удобно перебрасывать картинку на экран.
Все эти видеорежимы — мерзость. Я понимаю, что это не DOS виноват, а аппаратура — ну так аппаратура разрабатывалась в т.ч. с оглядкой на совместимость с DOS и той аппаратурой, на которой работал DOS — закономерно получился уродец.
DOS тут точно не при делах.
DOS вообще не поддерживал графику и работал в текстовом режиме.
Вся графика была на совести кода в ПЗУ видеоадаптера и работающих с видеоадаптером напрямую программ.
А видеорежимы определялись скромными возможностями электроники того времени: медленные процессоры, медленная и дорогая память.
Если тогдп кто-то забомбил бы хотя бы VGA, то оно стоило бы как самолет и рисовало бы со скоростью черепахи. А когда все ускорилось и подешевело, тогда и понеслось: сначала VGA, потом всякие XGA, потом всякие 3D ускорители.
Да и сами режимы не так уж и страшны. А уж для того времени они были огромным достижением.
А некоторые игры на графике CGA смотрелись лучше, чем некотооые современные игры на самых навороченных видеокартах.
Сначала IBM решила использовать ублюдский процессор и пригласила Балла Гейтса, заключив с ним особый контракт (можете рассказывать, что при капитализме не бывает коррупции). Это было два независимых решения с разной мотивацией.
Затем по ряду причин (не буду рассказывать — лень) эта платформа стала популярной — т.е. таких компьютеров с DOS стало много, для них было написано много программ. этот процесс — саморазгоняющийся. естественная монополизация рынка.
Дальше при разработке новых аппаратных средств железячники ориентировались именно на работу на этой архитектуре. А там было прописано, что для видеопамяти выделяется конкретный сегмент = 64 KB адресного пространства. Вот и пришлось извращаться, запихивая туда видеопамять бОльшего размера.
Что же касается «видеорежимы определялись скромными возможностями электроники того времени: медленные процессоры, медленная и дорогая память» — то Вы делаете мне смешно.
Начнём с того, что CGA был сделан так, что программисту приходилось извращаться и интерливом (т.е. строки экрана шли в памяти не подряд, а сначала все чётные, потом все нечётные). И ещё нельзя было обращаться к видеопамяти в момент работы луча — это портило картинку. Т.е. CGA безумно сильно грузил процессор.
Это ни разу не достижение. Это — самое настоящее капиталистическое вредительство. Особенно уродский VideoBIOS, в который так и не удосужились запихнуть нормальные драйверы типа BGI.
Сначала IBM решила использовать ублюдский процессор.
Нормальный процессор для своего времени. Не надо его обижать.
Проблема была не в процессоре, а в том, что накрутили вокруг него. И в слишком сильной обратной совместимости следующих поколений компьютеров.
Дальше при разработке новых аппаратных средств железячники ориентировались именно на работу на этой архитектуре. А там было прописано, что для видеопамяти выделяется конкретный сегмент = 64 KB адресного пространства. Вот и пришлось извращаться, запихивая туда видеопамять бОльшего размера.
Вполне нормальное решение — адресовать большую память через небольшое окно. Так много где реализовано.
Естественно, архитектура диктовала аппаратные решения (например, размер сегмента). Но архитектура сама диктовалась поставленными задачами и узкими рамками возможностей (кстати, именно потому в первых PC был 8088, а не 8086).
И не стоит забывать, что основным предназначением IBM PC была совсем не работа с графикой. Отсюда и перекос в сторону передачи основной вычислительной мощи и памяти для программ, а не для "картинки".
Вот когда PC стал позиционироваться еще и как игрушка, тогда графические адаптеры стали постепенно самостоятельными компьютерами мощи и стоимости, сопоставимой с основной частью (а то и превосходящей).
Начнём с того, что CGA был сделан так, что программисту приходилось извращаться и интерливом (т.е. строки экрана шли в памяти не подряд, а сначала все чётные, потом все нечётные). И ещё нельзя было обращаться к видеопамяти в момент работы луча — это портило картинку.
А это все определялось совсем не архитектурой ЭВМ и не бедным DOS, а особенностями передачи данных из видеопамяти в монитор. Реализовать по другому тогда еще просто не могли, поскольку на той элементной базе получалось слишком сложно и дорого. Всегда приходилось чем-то жертвовать. Тут пожертвовали простотой работы с видеопамятью в пользу простоты реализации "другой стороны" (передачи всего этого добра в более дешевый монитор с чересстрочной разверткой).
И для того времени это было реально достижение.
Особенно уродский VideoBIOS, в который так и не удосужились запихнуть нормальные драйверы типа BGI.
Сложно было впихнуть много кода в ограниченный объем. Поперло только тогда, когда появилась возможность выделять видеокартам под их биос намного больше памяти.
А это все определялось совсем не архитектурой ЭВМ и не бедным DOS, а особенностями передачи данных из видеопамяти в монитор.
Ой ли?? А «особенности» эти не разработчиками ли определялись? :)
Реализовать по другому тогда еще просто не могли, поскольку на той элементной базе получалось слишком сложно и дорого.
«Неправда Ваша, дяденька!» © :)
Вспомним «Специалист», разработанный, правда, несколькими годами позже, но на той же элементной базе, на отечественных аналогах TTL логики серии 7400 — К155.
Так вот в этой машинке разработчик (преподаватель ПТУ, к слову) как-то сумел «совместить приятное с полезным», обеспечив возможность «одновременного» обращения в области видеопамяти и процессора, и контроллера «дисплея».
Так что и «реализовать могли», при наличии на то желания, и не так уж и дорого — десяток-другой корпусов серии К155. :)
Всегда приходилось чем-то жертвовать.
Ну да… ну да… :)
Ой ли?? А «особенности» эти не разработчиками ли определялись? :)
Разработчиками, но не DOS и не IBM PC, а видеокарты. Причем определялись исходя из стоящей задачи — сделать достаточно дешево.
Вспомним «Специалист», разработанный, правда, несколькими годами позже
Ключевые слова — несколькими годами позже.
Микросхемы подешевели, появились новые решения для аналоговой части.
При этом несколькими годами позже уже был EGA (на год раньше "Специалиста").
При этом "Специалист" был монохромным, что сильно упрощало аналоговую часть.
При этом графика "Специалиста" была монохромная.
Нормальный процессор для своего времени.Время этого процессора закончилось примерно при переходе с 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-го года).
Простите, а что вокруг него накрутили? HDD? Графический видеоадаптер?
Стандартизированную обвязку: контроллер памяти, шину ISA для карт расширения, выделенный диапазон памяти под BIOS и ПЗУ карт расширения, правила реализации ПЗУ плат расширения и т.п.
А чем была обусловлена эта совместимость? Ответ: привязкой к DOS!
Не было бы DOS — можно было бы и процессор поменять (где-то здесь я рассказывал, как надо было делать: поставить два процессора, один для DOS-программ, второй для операционки и новых программ).
Программная совместимость имела значение, но совсем не из-за "чужой" ОС.
У IBM имелась собственная совместимая ОС (PC DOS). После была еще куча систем, включая AIX и OS/2. Главное — совместимость со старыми программами.
Не буду спорить на предмет обоснованности такого решения с отказом от радикальной смены архитектуры, но современый яблокомпьютер при всей его привязке к одной конторе пришел в итоге к той же "убогой" архитектуре x86.
Нет, это извращённое решение. Необходимость применять его много где — обусловлена нехваткой ума у проектировщиков при создании первой модели; либо нехваткой решительности у менеджеров при наступлении необходимости рефакторинга.
Необходимость этого решения определялась всегда ограничениями архтектуры.
В частности, 16 бит процессор не может без извращений адресовать больше 64 К памяти.
Это непринципиально: адресация и система команд у них были одинаковые, различалась только шина данных.
Непринципиально для архитектуры, но принципиально для стоимости разработки периферии. Новая перифеоия под 16 бит процессор сильно повлияла бы на цену конечного продукта.
Значит, при появлении графики — нужен был рефакторинг. Не было бы DOS (точнее, этой дебильной системы разделения аппаратуры и операционки по разным производителям) — сделали бы.
Про рефакторинг согласен. Но DOS тут никаким боком, поскольку с графикой он не работал вообще. Ничто не мешало сохранить текстовый режим и навернуть что-ть новое для графики.
Вижу взаимно противоречивые параграфы
Противоречия нет.
Хотите быстро — вот вам текстовый режим.
Хотите графику — мучайтесь.
Не зря в бизнесе первое время преобладал совершенно текстовый MDA, у которого, кстати, текст качественней отображался и часто параллельный порт для принтера имелся.
У меня ощущение, что Вы не видели объём кода BGI-драйвера.
Для разных видеокарт — от 4 до 8 килобайт (ну, те, что я для обсуждения этого вопроса просматривал — где-то в районе 1993-го года).
Проблема доайверов для поддержки графических режимов видеокарт не являлась проблемой DOS, поскольку та с графикой не работала.
ПЗУ самой видеокарты содержало достаточно своего барахла, чтобы добавлять туда еще и драйвера. И ни у кого не возникало желания увеличивать это ПЗУ еще на несколько килобайт.
Потому вся забота о графическом выводе легла на программистов, работающих с графическими программами. А у них со временем появились стандартные библиотеки, избавляющие от гемороя прямого "общения" с картой.
А с появлением более других графических ОС стало логичным размещать драйверы не в ПЗУ видеокарты, а включать их непосредственно в ОС, что существенно упросьило их обновление в случае необходимости.
Не было бы DOS — можно было бы и процессор поменять (где-то здесь я рассказывал, как надо было делать: поставить два процессора, один для DOS-программ, второй для операционки и новых программ).
Для Apple ][e в своё время существовала Z80 SoftCard, правда от Microsoft, а не от самого Apple, плата расширения с Z80 и минимальной обвязкой. Вставляешь её в слот на материнке и Apple ][e превращался в комп с Z80, на котором можно было запускать вполне себе обычный CP/M. Я даже реально это дело руками щупал.
В частности, 16 бит процессор не может без извращений адресовать больше 64 К памяти.Вы что-то путаете. Ширина шины данных не имеет никакого отношения к ширине шины адреса — восьмибитный Zilog Z80A может адресовать 65536 байтовых ячеек памяти напрямую, потому что у него разрядность шины адреса 16 бит.
У 16-битных Intel 8086, 80186 разрядность шины адреса 20 бит, поэтому для прямой адресации им доступен 1 МБ памяти 16-разрядных ячеек. У 16-битного Intel 80286 разрядность шины адреса 24 бит, поэтому для прямой адресации ему доступен 16 МБ памяти 16-разрядных ячеек.
И грузится в память за один раз полностью.
Другое дело EXE-файл. В его заголовке есть информация о размере изначально загруажемой части. А остальное может подгружаться позже по мере необходимости в отдельные области памяти.
Вот, например, LaTeX installation instructions for emTeX.
Книжки, статьи, дипломы, диссеры прекрасно писа́ли.
Справедливости ради надо и про экстендеры памяти вспомнить, emm'ы там всякие, ну, т.е. 640К всё же маловато было и расширение даже до 1М это было круто и желанно.
Было весело и приятно вспомнить школьные годы и реально круто решить проблему одной управляющей компании — разработчик просто умер уже и никто из 1с интеграторов не мог подойти :)
В работе с памятью emm386.sys наше все, особенно с загрузкой ядра в верхние страницы памяти, освобождали все 640к памяти.
Насчет 640K не уверен, а вот 1024K, действительно, хватало много для чего, если с умом подойти, а не тяп-ляп.
Лет так 25 назад наваял одну программу для расчета с потребителями на СУБД Clarion. Экзешник весил около 800K. Даже если загрузить драйверы в верхнюю память, она в доступные после этого 580K не лезла. Хорошо, что Clarion поддерживал оверлейные структуры. Написал утилиту, которая анализировала вызовы процедур, обнаруживала циклы, рекурсии и взаиморекурсии, строила дерево вызовов и распределяла модули по оверлейным областям. Так, чтобы вызывающий и вызываемый модуль загружались в разные оверлейные области. Это чтобы вызываемый не затирал данные в вызывающем.
В результате памяти стало хватать на всё :)
И эта программа прекрасно работала под DOS, Win95/98, WinXP. А вот под Win8/8.1 не работает :( Тому как в Win8 прекратилась эмуляция DOS. Приходится запускать ее из DOSBox. Но в этом случае нет вывода на LPT. Поэтому вывод делается в файл (вместе со всеми управляющими символами), а потом этот файл распечатывается из Винды.
В общем, несмотря на то, то «1С: Управление снабжением» закупили еще 2,5 года назад, ее до сих пор внедрят никак. А моя программулина, несмотря на все недостатки и несоответствия законодательству, с помощью всяких костылей еще активно используется.
Правда, была история, когда после очередного обновления системы безопасности WinXP она вдруг перестала помещаться в памяти. Оказалось, что эта обнова запрещала загрузку драйверов в верхнюю память при помощи утилиты LH.
Пришлось выискивать это вредное обновление и изничтожать.
Насчет 640K не уверен, а вот 1024K, действительно, хватало много для чего, если с умом подойти, а не тяп-ляп.
Когда-то и 64К хватало.
Видел в свое время, как народ на компьютере из коры и веток (был такой Корвет) творил.
Что касается специализированных ОСей, то читал где-то как FORTH-машину на контроллер с 16K заливали. И ведь поместилось же! И сама машина и управляющая программа под ней.
В рамках 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)
С системами реального времени вы как то погорячились :)
Лучшая операционка это OS/2… Жаль такой шедевр угробили :(
Помню, как 386-я машинка с 8 Мб оперативки и OS/2 Warp 3.0 второй системой были счастьем для женщин-медстатистиков в таёжном Приморском селе, которых замучала долгая перезагрузка системы из-за регулярно виснувших программ, «накорябаных» какими-то «варягами на Clipper.
А тут — диспетчер задач, и все проблемы. :))
Ну, диспетчер задач изкоробочный там был так себе. Ежели какой криворук в своем приложении повесит очередь сообщений PM, то все, и диспетчер не запустится. Спасал только WatchDog (или я забыл как он назывался, столько лет уже утекло).
А насчёт переполнения PMQUEUE был какой-то параметр в config.sys, может быть даже недокументированный, но был. Как раз против этого дела. Помню точно что был, но за давностью лет уже не помню какой.
Ну, диспетчер задач изкоробочный там был так себе. Ежели какой криворук в своем приложении повесит очередь сообщений PM, то все, и диспетчер не запустится.
Насколько я помню, это касалось «родных» приложений OS/2.
Не припоминаю, чтобы систему можно было «убить» из сеанса DOS. А большего мне и не нужно было. Народ и так был счастлив: всё познавалось в сравнении. :)
cli
jmp $
и вуаля, полное подвисание всего кроме кнопок Reset и Power. Чем мы, апологеты Интела, в своё время тролили любителей AMD. Правда сейчас у любителей AMD появилась ответка в виде Meltdown, которому Intel подвержен, а AMD как выяснилось нет.
На любом процессоре без VME (а VME в те времена был только у Intel)
Вот я и говорю — всё работало нормально. ;) :)
И потом, Вы приводите случай злонамеренного нарушения работы системы, а меня интересовало решение проблемы нестабильно, некорректно работающих программ.
Была, помнится, в Clipper такая проблема: при попытке сохранения из программы на дискету, если дискета в дисководе отсутствовала, программа «вешалась» и, соответственно, требовалась перезагрузка системы. Ошибку отсутствия дискеты «программисты» обработать корректно почему-то не сочли необходимым.
Перевод этих «шедевров программистского зодчества» в сеанс DOS под OS/2 проблему решил хотя бы в плане сокращения потерь времени на «перезагрузку».
Большего я тогда добиться не мог — разработчик переписывать своё творение отказался — а пользователи и этому были очень рады. :)
И да — весь код только на асме.
DOS всегда красив.Песня про DOS.
Интересно, что дискеты до сих пор читаются, но на запись уже работают не идеально. Наверное процесс восстановления данных, особенно с 5'' дискет или с кассет DC600A — это отдельная тема.
0xFA (cli)
0xF4 (hlt)
640 КБ на самом деле хватит всем