vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-30 12:21 am

Как устроена память EMS

Припомним былое.



Технические подробности: smbaker.com/8-bit-isa-ems-board-flash-disk-board

denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)
Denise ([staff profile] denise) wrote in [site community profile] dw_news2025-11-30 02:42 am

Look! I remembered to post before December started this year!

Hello, friends! It's about to be December again, and you know what that means: the fact I am posting this actually before December 1 means [staff profile] karzilla reminded me about the existence of linear time again. Wait, no -- well, yes, but also -- okay, look, let me back up and start again: it's almost December, and that means it's time for our annual December holiday points bonus.

The standard explanation: For the entire month of December, all orders made in the Shop of points and paid time, either for you or as a gift for a friend, will have 10% of your completed cart total sent to you in points when you finish the transaction. For instance, if you buy an order of 12 months of paid time for $35 (350 points), you'll get 35 points when the order is complete, to use on a future purchase.

The fine print and much more behind this cut! )

Thank you, in short, for being the best possible users any social media site could possibly ever hope for. I'm probably in danger of crossing the Sappiness Line if I haven't already, but you all make everything worth it.

On behalf of Mark, Jen, Robby, and our team of awesome volunteers, and to each and every one of you, whether you've been with us on this wild ride since the beginning or just signed up last week, I'm wishing you all a very happy set of end-of-year holidays, whichever ones you celebrate, and hoping for all of you that your 2026 is full of kindness, determination, empathy, and a hell of a lot more luck than we've all had lately. Let's go.
vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-29 01:44 pm

Про память на i86

В комментах возникло обсуждение способов расширения памяти на XT-шке. Вспомню исторические факты конспективно.

8088 и PC XT

Процессор 8088 имел 20 разрядов физического адреса. Поэтому адресовать мог только 2^20 = 1 мегабайт. Из них айбиэмовские инженеры отвели 640к для программ и 384к для хардвера (биосы, видеопамять). Позже придумали EMS, где в пространстве 384к создавалось окно, и через него можно было пролистывать несколько мегабайт дополнительной памяти. Драйвер EMM.SYS.

286 и PC AT

У процессора 286 было уже 24 разряда физадреса. То есть уже 16 мегабайт памяти, но только в защищённом режиме. Что для MS-DOS не годилось.

В незащищённом режиме 286 мог адресовать 64 килобайта сразу за первым мегабайтом. Эту область научились использовать, и назвали HMA. Но для совместимости приходилось жульничать с адресным сигналом A20. Драйвер HIMEM.SYS и иже с ним.

386

Тут уже 32-битный физадрес, и память хоть до 4 гигабайт. Драйвер EMM386.SYS.
vak: (Путиномедвед)
Serge Vakulenko ([personal profile] vak) wrote2025-11-29 01:33 pm
Entry tags:

Может рашисты и хотят ядерной войны, но не получится

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

vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-28 04:13 pm

Борланд и его турбо компиляторы на XT-шке

Освежим память про системы программирования на персональных компьютерах конца 80-х. Я накачал с сайта winworldpc.com разных компиляторов и устанавливаю их один за одним на XT-шке. Начал с Борланда как самого уважаемого. Складывать буду на Гитхабе:Там не только бинарники, но и куча полезных примеров в исходных текстах.

vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-28 12:45 am

Компилируем Hello World на XT-шке

Для ELKS есть и Си компилятор: проект 8086 Toolchain. Если собрать его по инструкции, он интегрируется в образ диска ELKS. Вот пример компиляции классического Hello World:



Смотрим получившийся ассемблерный код.

vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-28 12:10 am

Open Watcom

Помните Си компилятор Watcom из 90-х? Оказывается, он продолжает существовать в опенсорсном виде. Свежие бинарники можно скачать по ссылке:

github.com/open-watcom/open-watcom-v2/releases/download/Current-build/ow-snapshot.tar.xz

Поддерживаются языки Си, Си++ и Фортран, платформы DOS, OS/2, Win16, Win32, Win64, Linux i386, Linux x64.
vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-27 03:46 pm

Юникс на XT-шке

Проблема с делением на ноль в ядре ELKS неожиданно разрешилась сама собой. Только я примерился отладочную печать вставлять, собрал для начала ELKS из свежих исходников. Процесс несложный, только делать это надо в линуксе.
sudo apt-get install texinfo libncurses5-dev libelf-dev ncompress bison flex
git clone https://github.com/ghaerr/elks.git
cd elks
./build.sh
Получаем образ флопика:
$ ls -l image/*.img
-rw-rw-r-- 1 vak vak 1474560 Nov 27 08:15 image/fd1440.img
Только это 1.44 мегабайта, а надо 360 килобайт. Не вопрос.
$ . ./env.sh
$ cd image
$ make fd360-minix
...
$ ls -l fd360-minix.img
-rw-rw-r-- 1 vak vak 368640 Nov 27 08:20 fd360-minix.img
Дай, думаю, загружусь для начала с этого флопика, вдруг упадёт как-то иначе. И ядро стартовало в лучшем виде! Видно, недавно починили проблему кривого CMOS.



В процессе изучения сборки ELKS выяснилось, что вовсе необязательно возиться с флопиками. Можно построить сразу образ жёсткого диска и записать на SD карточку:
$ cd image
$ make hd64-minix
...
$ ls -l hd64-minix.img
-rw-rw-r-- 1 vak vak 67107840 Nov 27 08:47 hd64-minix.img
$ dd if=hd64-minix.img of=/dev/sda
Имеем вот такой "жёсткий диск":



Грузимся с SD карточки:



Вот вам Линукс на XT-шке, а вы не верили. 😀

Если у вас есть PC XT или AT с адаптером XT-IDE, готовый образ диска с установленным Линуксом можно скачать здесь: elks-v0.9.0-hd64-c86.zip. Я обновил образ, теперь там Си компилятор в копмлекте.

Установку ELKS на чистый диск с загрузочного флопика я тоже проверил. Проще чем в MS-DOS: всего две команды mkfs и sys.



Это базовая юниксная система. Дальше будем выяснять, как установить Си компилятор. Задача собрать Демос Командер.
vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-27 02:07 pm

Мультипортовка

Помните забытое слово из 80-х? Мультипортовая плата означала последовательный интерфейс COM (для модема), параллельный интерфейс LPT (для принтера) и интерфейс к игровому джойстику. И ещё на ней стояла важная фишка конкретно для XT: часы реального времени RTC. Благодаря литиевой батарейке часы постоянно шли, даже когда компьютер выключен.



Поскольку родной биос XT-шки ничего не знает про RTC, для автоматической установки времени в MS-DOS требовались отдельные утилитки типа GETCLOCK.COM и SETCLOCK.COM. Каждый производитель мультипортовок поставлял свои версии этих утилит. Совместимость их с материнскими платами была тонким местом.

Начиная с PC AT часы реального времени встроили в материнскую плату, и проблема совместимости RTC/CMOS снялась.

Эта конкретно плата называется DIO-200, производитель DFI. Соответствующий софт ещё предстоит отыскать.

Нашлось описание от модели DIO-200X: diamond-flower-dio-200x-users-manual.pdf. Но там RTC сделан на чипе MM58167, а у меня UM82C8167.
vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-26 08:43 pm

Divide fault

Пытаюсь грузить Линукс-86 на реальной XT-шке. Что-то не так: выскакивает деление на ноль.



Сравните с успешной загрузкой на симуляторе:



Может быть дело в умершей батарейке CMOS. Поэтому с определением типа флопика возникает проблема.
vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-26 01:16 pm

Что с юниксами для XT-шки?

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

Из юниксов для IBM PC XT (model 5160) существовали:Всё это я вчера опробовал, одно за другим. Все образы флопиков доступны в сети, и известно, что каждый из них кому-нибудь да удалось оживить на каком-нибудь симуляторе.

Но мне ж надо на реальном имеющемся железе. Подобрал я симулятор, воспроизводящий конфигурацию, максимально близкую к моей. Есть такой проект 86Box. Народ собрал качественную коллекцию конфигураций и образов ПЗУ компьютеров и периферии от разных производителей. Нашлась там и конфигурация, близкая к моей Generic XT clone, и видеоадаптер TVGA8900, а главное - дисковый контроллер XT-IDE. Всё это я сконфигурил и принялся ставить вышеуказанные юниксы.

С юниксами вот какая проблема. Всё упирается в обмен с жёстким диском. Создателями было задумано, чтобы чтение-запись диска делалась через системный вызов int 13h. Выполняется этот вызов биосом, находящимся в контроллере диска, и всё идёт как надо. Но юниксу неудобно ходить в биос. Юникс задуман по другому: драйвер диска находится в ядре и напрямую ходит в аппаратные регистры контроллера диска.

Все четыре упомянутые юниксы (Xenix, Venix, PC/IX и Minix) так и устроены. Они понимают только родной дисковый контроллер от IBM. А у меня XT-IDE, и в нем аппаратные регистры совсем другие. Нет шансов. Я честно попробовал загрузить каждый юникс и убедился, что установщик падает ровно на попытке работать с диском.

Однако есть свет в окошке! И это ELKS. Так называется проект, где народ поставил задачу протащить верблюда Линукс через игольное ушко. Он же Гога, он же Жора Linux-86. Я наблюдал эту странную затею с середины 90-х. Думал применить для какого-нибудь встроенного хардвера, но пользы не выходило. Однако здесь он сыграл в полный рост. Загрузился с флопика и честно встал на диск под XT-IDE. Никаких вопросов. Осталось проделать то же самое не под 86Box, а на реальном железе, и у нас будет приличный юникс, даже с подключением к интернету.

Вот пример загрузки ELKS на симуляторе Turbo XT.

vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-25 12:05 am

"It's a disaster as far as I'm concerned"

Набрёл на критическую статью 1986 года про новую клавиатуру Model M от IBM и её ужасный дизайн. 😀



А это картинка из тогдашней рекламы IBM.

vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-24 09:22 pm

Клавиатура для XT-шки

Приехала клавиатура для коллекционной писишки: аутентичная Compaq в идеальном состоянии. Характерный признак древности: отсутствие клавиши Windows. 😀







Только клавиатурный интерфейс не родной XT, а более поздний IBM PS/2. У XT-шки не только разъём, но и протокол отличается. У всех писишек начиная с AT клавиатуры работали одинаково: 1 стартовый бит, 8 данных, 1 чётность и 1 стоп бит. У XT же всё по другому: 2 стартовых, 8 данных, 1 бит make/break, и 1 стоповый. Но ничего, новозеландцы придумали адаптер, транслирующий протокол на лету.

vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-11-23 02:07 pm

Переводим XT-шку на видеоадаптер VGA

Стандартом де-факто для PC XT был видеоадаптер CGA (1981 год разработки). Схемотехнически он красиво сделан, но разрешения и цветности недоставало. К 1984-му году появился EGA, а в 1987-м VGA. В наши дни всё ещё можно отыскать дисплеи с интерфейсом VGA. Есть и недорогие конвертеры VGA в современный интерфейс HDMI.

Существовали видеоадаптеры VGA для 8-битной шины ISA, но сейчас найти их крайне тяжело. К счастью, отыскался Trident TVGA8900C, который переключается в режим восьмибитности. Для этого надо на нём установить джампер J4. На моей плате джампер не был установлен, пришлось просто запаять перемычку.



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



Надо поставить SW 5 и 6 в положение "on", то есть "no display adapter". Фишка в том, что CGA (и MDA) обслуживаются основным биосом. А на платах EGA и VGA уже работает свой собственный биос.



Загружаемся - совсем другое дело! Сравните с CGA.



И даже тетрис повеселел. Для сравнения смотрите видео с CGA.



Теперь куча разных игрушек должна запускаться. Буду собирать коллекцию.
vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-22 07:09 pm

Грузим XT-шку с SD карточки

Нет предела совершенству. В развитие XT-IDE, фирма TexElec выпускает контроллер, позволяющий использовать стандартную SD карточку в качестве диска в компьютере PC XT.



Вот вид сбоку. Интересно, что "железку" (крепёжную скобу) к платам ISA теперь можно изготавливать на 3D принтере.



Самая маленькая SD карточка в моём запаснике имеет размер 250 мегабайт. Команда fdisk разбивает это дело на восемь разделов, с C: до J:. Вот так выглядит загрузка XT-шки. Можно видеть сообщения дискового биоса.

vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-22 05:06 pm

XT-IDE

К 2000-м годам ретро энтузиасты осознали, что древние компьютеры PC XT почти вымерли, по одной и той же причине: все жёсткие диски типа MFM заржавели и вышли из строя.

Возник опенсорсный проект по разработке нового дискового контроллера под названием XT-IDE. Контроллер для 8-битной шины ISA позволяет подключать стандартные IDE-накопители, в том числе CompactFlash. Также сделали качественный биос к дисковому контроллеру. Исходники: github.com/glitchwrks/xt_ide

Нынче фирма The Glitch Works продаёт контроллеры XT-IDE на Ebay как в виде конструктора для самостоятельной пайки, так и в собранном виде. Один такой контроллер я и приобрёл. А также переходник для CompactFlash к нему.



Установка джамперов:



Вот такой экран загрузки биоса. Стрелками можно выбрать, откуда грузиться: диск C, флопики A или B, или загрузчик в ПЗУ.



Чтобы карточка CompactFlash надёжно опозналась, её лучше сначала "стереть" на другом компьютере. То есть записать несколько килобайт нулей, к примеру Линуксной командой "dd bs=1k count=100 if=/dev/zero of=/dev/sdX", где sdX - имя флешки на вашем компьютере.

После чего грузим MS-DOS с флопика и командой fdisk создаём разделы. Двухгигибайтную флешку XT-IDE видит как диск с 997 цилиндрами и 63 головками. Раздел максимально разрешённого досовского размера (32 мегабайта) занимает 16 цилиндров. Для начала создаём раздел C.

Снова перезагружаемся с флопика и форматируем раздел С как системный (format c: /s). Переписываем туда файлы MS-DOS с флопика, и диск готов. Добавим Нортон Командер для удобства. Настроим config.sys и autoexec.bat.

Перезагружаемся с диска. Вот так теперь выглядит писишка:



Пробовал я и хитачевский микродрайв. XT-IDE опознаёт его без проблем, но поскольку он 4-гигабайтный, показывает как диск с 127 головками. От этого MS-DOS маленько дуреет. Создать раздел даёт, но читать его не может.
vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-22 01:45 pm

Родной жёсткий диск от PC XT

Увы, диск не заработал. Не раскручивается чисто механически, похоже. За 38 лет подшипники приказали долго жить.

Полноразмерная плата в писишку, в задней части которой закреплён жёсткий диск.



Контроллер WD1002 в идеальном состоянии. Интересный может получиться проект для самоделкиных: заменить неработающий жёсткий диск репликой на основе Raspberry Pi Zero или типа того. Интерфейс ST506 должно быть нетрудно повторить.



Жесткий диск Miniscribe 8438 внешне прекрасно сохранился, но больше не жужжит.





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



Понятно, что с этим диском ловить нечего, и надо искать замену. К счастью, современная замена существует: так называемый контроллер XT IDE. Про него в следующем посте.
vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-11-20 11:19 pm

Читаем содержимое флопиков на маке

Как на маке, имея образ флопика, достучаться до его содержимого? Лайфхак:
hdiutil attach -imagekey diskimage-class=CRawDiskImage floppy.img 
Флопик будет подключен как файловая система, как если бы его воткнули в порт USB:
/dev/disk8        /Volumes/NO NAME
vak: (Аристипп)
Serge Vakulenko ([personal profile] vak) wrote2025-11-20 05:38 pm

Взаимодействуйте разумом с материей

Все мозги разбил на части, все извилины заплёл. Интересно, подтверждаются ли эксперименты этого чувака независимыми исследователями.