vak: (Линукс)
[personal profile] vak
Если у вас есть установочный DVD для Linux Mint... выкиньте его сразу, не мучайтесь. 😀 Загрузка системы с DVD занимает больше 30 минут. Не стоит оно того. Лучше USB флешку запишите.

circt-sim

Mar. 4th, 2026 12:41 pm
vak: (Аристипп)
[personal profile] vak
Один крутой чувак сбацал полный симулятор SystemVerilog с помощью ИИ за 43 дня. Не игрушка, вполне реальная вещь: проходит все официальные тестбенчи UVM.

https://github.com/thomasnormal/circt
vak: (Украина)
[personal profile] vak
Российский танкер Arctic Metagaz вёз сжиженный газ из Мурманска в Китай. Около Италии его понадкусывали украинские морские дроны.

https://www.reuters.com/business/energy/russian-flagged-sanctioned-lng-tanker-fire-mediterranean-crew-fate-unknown-2026-03-03/



Бага в stosb

Mar. 4th, 2026 12:35 am
vak: (Знайка)
[personal profile] vak
Покажу как выглядит поиск ошибки в симуляторе. Сначала запускаем работающий вариант, с записью трассировки в файл.
$ tiltti msdos3.31-1.44m.img -r -o a.log
Теперь запускаем глюкавую версию, получаем второй файл трассировки.
$ tiltti --386 msdos3.31-1.44m.img -r -o b.log
Сравниваем файлы трассировки умной тулзой. В левой части экрана работает процессор i8086. В правой части - процессор i386. Выполняют один и тот же код, а именно MS-DOS 3.31. Результаты должны совпадать, за исключением того, что слева регистры 16-битные, а справа 32-битные. И они совпадают... до момента ошибки.



Как видим, команда STOSB слева выполняет 8 итераций и завершается. Та же команда справа продолжает крутиться до бесконечности. Что за ерунда? Проверим значение счётчика итераций в регистре CX. Глядите, команда MOV на адресе 07d89 заносит значение 8 в регистр CX (слева). А справа в регистре ECX оказывается ffff0008. Тоже не придерёшься: в реальнгом режиме задействуются только младшие 16 бит регистра. В старших битах остался мусор от каких-то предыдущих команд.

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

А всё почему? От нетерпения. 😀 Надо было сначала добиться работы всех 100% MOO тестов, и потом уже пробовать грузить ДОС. Но очень хотелось глянуть, как оно пойдёт.

Теперь и i386

Mar. 3rd, 2026 02:01 pm
vak: (Знайка)
[personal profile] vak
Допилил я за выходные модель процессора 386, и она прошла без ошибок первые пять тысяч MOO тестов. То есть каждая команда многократно корректно выполнилась в разных условиях. Уже неплохо.

Теперь в симуляторе tiltti можно выбирать процессор флагами --8086 или --386. Пробую запустить MS-DOS на i386 - даже что-то запускается! Запрашивает дату, время, выходит на приглашение. Ввожу ver, жму Enter... и оно зависает. Где-то нелады. Но для первого запуска очень неплохо.
$ tiltti --386 msdos3.31-1.44m.img
vak: (Кризис так себе)
[personal profile] vak
(перевод)

Является ли верховный лидер Ирана аятолла Али Хаменеи выпускником Московского университета дружбы народов имени Патриса Лумумбы? Завербовал ли КГБ Хаменеи в качестве шпиона в 1960-х годах? Виновата ли советская идеологическая обработка и подготовка в ненависти Хаменеи к Соединенным Штатам?

Персидская блогосфера бурлит спекуляциями о предполагаемых связях Хаменеи с Советским Союзом.

Дело началось в среду, когда иранские блогеры обнаружили репортаж Russia Today от 5 февраля 2010 года, посвященный 50-летию Московского университета дружбы народов, в котором Хаменеи упоминается среди «самых выдающихся выпускников» университета. Аналогичное утверждение появляется и на сайте Russia Today, хотя там упоминается «верховный лидер Ирана Али Хомейни», что является очевидной ошибкой. Впоследствии иранские блогеры выявили другие российские источники, содержащие аналогичное утверждение: в номере «Коммерсанта» от 25 ноября 2003 года Хаменеи представлен как выпускник Университета дружбы народов.

В официальной биографии Хаменеи нет никаких упоминаний об Университете дружбы народов. Это может отражать правду, и Хаменеи, возможно, не получал образования в Советском Союзе. Однако, если Хаменеи действительно является выпускником Университета дружбы народов, у него есть очень веские причины держать это в секрете: признание университетского образования в «безбожном» Советском Союзе не только нанесло бы серьезный удар по шаткой религиозной репутации Хаменеи, но и подвергло бы его обвинениям в вербовке КГБ в 1960-х годах, как это было со многими выпускниками Лумумбы.

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

Согласно официальной биографии Хаменеи, он отправился в Ирак в 1957 году для обучения в Теологической семинарии в Наджафе. Поскольку Университет дружбы народов был основан в 1960 году, молодой Хаменеи не мог использовать свою поездку в Ирак в качестве прикрытия для учебы в Советском Союзе. Но согласно его официальной биографии, Хаменеи провел «подпольную жизнь» в Тегеране в 1345 году [21 марта 1966 г. – 21 марта 1967 г.], после чего был арестован полицией и заключен в тюрьму. Действительно ли 28-летний Хаменеи провел год, живя подпольно в Москве, а не в Тегеране? Был ли Хаменеи арестован потому, что иранская секретная служба САВАК, существовавшая до революции, узнала о его визите в Москву?

Документы САВАК, опубликованные Иранской освободительной армией (основанной в Париже после революции 1979 года генералом Бахрамом Арианой), могут предоставить иные интересные сведения о предполагаемых связях Хаменеи с Советским Союзом, но у автора этой статьи пока не было возможности изучить эти документы.

Хаменеи мог быть, а мог и не быть выпускником Московского университета дружбы народов; и он мог быть, а мог и быть завербован КГБ в 1960-х годах. Никто не может отрицать тот факт, что Исламская Республика, которая гордится проведением независимой внешней политики, основанной на принципе «Ни Восток, ни Запад – Исламская Республика», в действительности всегда больше склонялась к Востоку. Также нельзя отрицать, что под руководством Хаменеи дипломатически изолированный Иран становился все более зависимым от России и Китая. Историки будут судить, является ли превращение Ирана в российско-китайский протекторат результатом замысла Хаменеи… или же следствием общей некомпетентности лидеров Исламской Республики.

popad

Feb. 27th, 2026 01:51 pm
vak: (Знайка)
[personal profile] vak
Вот пример смешных вещей, которые выясняются при тестировании процессорных инструкций. Есть в i386 команда POPAD. Когда мы находимся в 32-битном режиме, она выпихивает из стека значения восьми 32-битных регистров. Но значение ESP игнорирует, чтобы не нарушать стек. Это всё подробно описано и надёжно работает.

Но у команд i386 ещё бывают префиксы. Например префикс 0x67 меняет разрядность адресов в команде. В данном случае команда продолжает выпихивать 32-битные значения, но к стеку обращается по 16-битным адресам. Старшая половина ESP[31:16] игнорируется.

Вопрос: что происходит с этой старшей половиной ESP в результате выполнения команды POPAD с префиксом 0x67?

В документации вы прочитаете, что старшая половина регистра стека не изменяется. Это неправда. Как показывают тесты, биты ESP[31:16] получают значение из стека, как и прочие регистры. Был стек ESP=0x00005E90, стал 0x5A045EB0. Неожиданность! Как говорится, это нельзя объяснить, можно только запомнить. 😀
vak: (Аристипп)
[personal profile] vak
Один чувак запустил онлайн эмулятор троичного компьютера Сетунь: zaneham.github.io/setun70-emulator/web/.

Система команд напоминает простой стековый калькулятор: setun70_spec.md.

Вот пример простой программы.
; quadratic.s70 - Calculate x^2 + 2x + 1 where x = 5

    LIT 5       ; x = 5
    DUP         ; x x
    MUL         ; x^2 = 25
    
    LIT 5       ; x
    LIT 2       ; 2
    MUL         ; 2x = 10
    
    ADD         ; 25 + 10 = 35
    LIT 1       ; 1
    ADD         ; 35 + 1 = 36
    
    OUT         ; Output: 36
    HALT
vak: (Українець)
[personal profile] vak
Кто-то поинтересовался у ИИ, как бы выглядели советские гаджеты, если бы СССР был жив.

Тестируем i386

Feb. 26th, 2026 01:57 pm
vak: (Знайка)
[personal profile] vak
На симуляторе PC i86 успешно запускаются все версии PC DOS, все DR-DOS и почти все MS-DOS. Кроме последней неофициальной версии MS-DOS 7.1: потому что она требует процессора i386. А именно она и интересна полной поддержкой FAT32 и длинных имён файлов.

Так что я решил проапгредить процессор в симуляторе. Благо, для i386 тоже есть хороший набор тестов: SingleStepTests/80386. И тут же на первом тесте обнаруживаем странность, в регистре EFLAGS.

Интеловская документация утверждает, что неиспользуемые старшие 14 бит регистра EFLAGS всегда нули. Но из реального хардвера вычитываются единицы.
Figure 2-8.  EFLAGS Register  
16-BIT FLAGS REGISTER
A
+-------------------+---------------+
31 23 15 7 0
+-------------------+---------------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |V|R| |N| IO|O|D|I|T|S|Z| |A| |P| |C|
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | | |0| | | | | | | | |0| |0| |1| |
| |M|F| |T| PL|F|F|F|F|F|F| |F| |F| |F|
+-------------------+---------------+++++-+++-+-+++++++++++++-+++-+++-+++
| | | | | | | | | | | | |
VIRTUAL 8086 MODE---X----------+ | | | | | | | | | | | |
RESUME FLAG---X------------+ | | | | | | | | | | |
NESTED TASK FLAG---X----------------+ | | | | | | | | | |
I/O PRIVILEGE LEVEL---X-------------------+ | | | | | | | | |
OVERFLOW---S----------------------+ | | | | | | | |
DIRECTION FLAG---C------------------------+ | | | | | | |
INTERRUPT ENABLE---X--------------------------+ | | | | | |
TRAP FLAG---S----------------------------+ | | | | |
SIGN FLAG---S------------------------------+ | | | |
ZERO FLAG---S--------------------------------+ | | |
AUXILIARY CARRY---S------------------------------------+ | |
PARITY FLAG---S----------------------------------------+ |
CARRY FLAG---S--------------------------------------------+

S = STATUS FLAG, C = CONTROL FLAG, X = SYSTEM FLAG

NOTE: 0 OR 1 INDICATES INTEL RESERVED. DO NOT DEFINE

Virtual Hard Disk

Feb. 25th, 2026 06:40 pm
vak: (Знайка)
[personal profile] vak
Я добавил в симулятор PC i86 поддержку образов жёсткого диска в формате VHD. Это когда пустые сектора не хранятся, а файл постепенно увеличивается по мере наполнения диска содержимым. Получилось совместимо с QEMU, что очень удобно: можно пользоваться утилитой qemu-img чтобы создавать и конвертировать образы. Формат VHD когда-то придумала фирма Connectix (позже доставшаяся Микрософту), и теперь это открытый стандарт. Кроме QEMU его поддерживают Hyper-V, VirtualBox, Virtual PC и другие.

Для примера, 100-мегабайтный диск C: с установленным MS-DOS 3.3 и Volkov Commander имеет размер всего 2 мегабайта. Никакого сжатия, чисто пропуск пустых секторов. Можно смело создавать диски большого размера, не боясь забить файловую систему ерундой.

Для проверки симулятора пробую запускать разные исторические приложения. Турбо Паскаль фунциклирует замечательно.

+2 )
В целом уже понятно, что эксперимент с симуляцией биоса удался. Теперь задача перетащить всё хозяйство на микроконтроллер, с видео выходом HDMI, клавиатурой USB и диском на SD карточке.
vak: (Аристипп)
[personal profile] vak
Это такие специальные коаны для программистов.
Кто осознает глубокий смысл каждого фрагмента, достигнет нирваны.

Так вот, шмеволюция

Feb. 25th, 2026 11:48 am
spamsink: (Default)
[personal profile] spamsink
В продолжение и окончание https://spamsink.dreamwidth.org/1319596.html

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

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

Неслучайное слово по теме поста: диахрония

Починил таки

Feb. 24th, 2026 12:43 pm
vak: (Default)
[personal profile] vak
Заработал наконец Волков Командер в полную высоту. Спасибо всем за советы. Дело было в вызове Int10 AX=1130h. Вот его описание:
INT 10h Video
...
AH=11h Character generator (EGA/MCGA/VGA)
...
AL=30h Return font info (EGA/MCGA/VGA)
Entry: BH=00h return INT 1Fh pointer
01h return INT 43h pointer
02h return ROM 8x14 font pointer
03h return ROM 8x8 double-dot font pointer (0-127)
04h return ROM 8x8 double-dot font pointer (128-255)
05h return ROM 9x14 alternate text pointer (EGA/VGA)
06h return ROM 8x16 font pointer (MCGA/VGA)
07h return ROM 9x16 alternate text pointer (VGA)
Exit: ES:BP=requested pointer
CX=scan lines per character
DL=rows (EGA) or rows-1 (MCGA/VGA)
В регистре DL следует вернуть 24 - количество строк на экране минус один. А возвращалось 16, как бы высота символа в шрифте. После правки всё заработало как положено. Симулятор начинает обретать законченные очертания.
vak: (Знайка)
[personal profile] vak
Народ, нужна помощь. Не удаётся понять, в чем дело. Почему-то Волков Командер запускается с 17 строчками на экране. Нижние 8 строчек не использует. Хотя другие программы типа того же scandisk отлично работают. В чём тут может быть дело? Не получается докопаться. С этого же диска под QEMU правильно выходит, 25 строчек. Понятно, что дело в моём биосе, но как, Ватсон?

scandisk

Feb. 23rd, 2026 07:43 pm
vak: (Знайка)
[personal profile] vak
В MS-DOS версии 6 вместо CHKDSK появилась более весёлая утилита SCANDISK. Вот так она смотрится в симуляторе. Проверил под MS-DOS 7.1 - файловую систему FAT32 она тоже успешно проверяет.

+2 )

Эволюция-шмеволюция

Feb. 23rd, 2026 09:11 am
spamsink: (Default)
[personal profile] spamsink
Если кто не знает, в результате давления отбора в течение - ну сколько там столетий происходила существенная охота ради слоновой кости, всего ничего - у слонов стало расти меньше бивней.

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

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

PS. Что же касается секса с особями, не достигшими половой зрелости, то единственный эволюционно надёжный способ минимизировать вред от него - это исключение всех склонных к таковому из генетического пула, пока они ещё не успели размножиться. Вопрос лишь, как их вовремя выявлять.
vak: (Знайка)
[personal profile] vak
Как в DOS происходит ввод с клавиатуры? Есть вызов Int 16h AH=00h, блокирующее чтение символа. Он возвращает в регистре AX два байта: код ASCII и сканкод. Как эти байты образуются и как они соответствуют нажатым клавишам? Я провёл тщательное исследование: написал програмулину и собрал данные с реального компьютера i486.

Когда вы нажимаете кнопку на клавиатуре, биос делает примерно следующее.
  • Если это модификатор, то есть левый-правый Shift или Ctrl ил и Alt или CapsLock или NumLock - обновляется статус. Новый символ не вводится. Иначе преобразуем введённую клавишу в ascii+сканкод, в зависимости от статуса модификаторов.
  • Если нажат Alt, делаем как здесь.
  • Иначе если нажат Ctrl, делаем как здесь.
  • Иначе если:
    • нажат Shift,
    • или включен CapsLock и клавиша - буква,
    • или включен NumLock и клавиша из дополнительной цифровой клавиатуры (с правой стороны)
    - делаем как здесь.
  • Иначе делаем как здесь.
Дополнительная хитрость: клавиша Insert переключает модификатор "Insert" при каждом нажатии. Если нет Alt или Ctrl. Впрочем, большинство досовских программ этот модификатор игнорируют.

PC DOS 7.1

Feb. 21st, 2026 10:24 pm
vak: (Default)
[personal profile] vak
Какие версии MS-DOS умеют файловую систему FAT32 и длинные имена файлов? Чтобы без проблем файлами через SD карточку с линуксом обмениваться. Да почти никакие не умеют. Есть два варианта: неофициальный микрософтовский MS-DOS 7.1 и чуть менее неофициальный айбиэмовский PC DOS 7.1.

MS-DOS 7.1 (он же Win98) всем хорош, скачать его нетрудно, но он требует процессора не ниже i386. Что делает его непригодным для моей задачи - реплики XT-шки.

Остаётся PC DOS 7.1. Когда с середины 90-х Микрософт задвинул дос на дальнюю полку, IBM продолжила его развивать. Есть такой крутой чувак Вернон Брукс, он возглавил айбиэмовскую команду, и до 2003-го они это дело тащили. Добавили и поддержку больших дисков, и длинные имена файлов с FAT32. Видимо нужно кому-то было, может для встроенных применений. И всё продолжает работать на самом простом процессоре 8086 или 8088, к нашему удобству.

Где взять этот самый последний DOS от IBM версии 7.1? Бинарники доступны с официальных сайтов, но надо знать подход.

Есть такой IBM ServerGuide Toolkit. Скачать его можно с сайта Lenovo: ibm_sw_sgtk_1_3_07_anyos_anycpu.zip. Внутри имеются бинарники PC DOS 7.1. Покажу как сделать из них загружаемый флопик.
wget https://download.lenovo.com/servers/mig/systems/support/system_x/ibm_sw_sgtk_1_3_07_anyos_anycpu.zip
unzip ibm_sw_sgtk_1_3_07_anyos_anycpu.zip
cp sgdeploy/sgtk/ads/images/tk_scrub.vfd floppy.img
mdel -i floppy.img ::*.bat
mdel -i floppy.img ::*.sys
mdel -i floppy.img ::dos/*.*
mcopy -i floppy.img sgdeploy/sgtk/DOS/*.* ::dos/
mcopy -i floppy.img sgdeploy/sgtk/DOS/cfgfiles/*.* ::dos/
Готово! В файле floppy.img находится бутабельный флопик.

Чтобы создать раздел FAT32 на диске, используйте команду FDISK32. Размер раздела должен превышать 520 мегабайт, иначе выйдет обычный FAT16. Форматировать раздел FAT32 надо командой FORMAT32.

Можно на этот же флопик положить и Волков Командер для удобства:
wget https://vc.vvv.kyiv.ua/download/vc405sw.zip
unzip vc405sw.zip -d vc
mmd -i floppy.img ::vc
mcopy -i floppy.img vc/*.* ::vc/
Вот так оно смотрится под QEMU.

Готовый образ лежит здесь: pcdos7.1vc.img
Page generated Mar. 6th, 2026 07:19 am
Powered by Dreamwidth Studios