Pull to refresh

Comments 48

Очень хабратортно! Спасибо за статью!

Если есть идеи, что стоило бы еще запустить из Windows XP, пишите в комментариях.

А соберите, пожалуйста, старенький Task Manager, если не лень.

Я, кстати, именно из этих утёкших исходников почерпнул, что если там зажать клавишу Control, и удерживая её, вызвать меню File->Run new task, то вместо окна запуска новой задачи выскочит консоль, запущенная с правами администратора, чем и пользуюсь иногда.

На https://win7games.com есть Task Manager из Windows 7, который практически идентичен wxp/w2k3, и не только он, но и калькулятор и игры и paint.

Я хотел начать c Task Manager. Сравнив объем работы, который нужно было сдалать, в итоге решил начать с чего-либо попроще и с меньшим количеством зависимостей. Последние имеют свойство накапливаться, и их всех нужно тоже собирать. А это куча времени. Сама подготовка материала для статьи (не сам билд) заняла несколько недель.

В целом я считаю, что тема до конца не раскрыта. В планах есть сбилдить и запустить этот же калькулятор под Linux. Если он собирается gcc под виндовс, то и под линуксом тоже должно получиться. Единственное, что нужны библиотеки-конвертеры системных вызовов windows-linux. Но это тема для отдельной статьи :)

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

К сожалению, не нашел его исходники. Есть только разные виды солитера.

А интересно, за это время появились какие-нибудь большие хакерские проекты с этими исходниками? Самое очевидное - попытаться дописать недостающие функции ядра из win7/10 с сохранением старого доброго GUI.

были всякие попытки, собственно автор и указал на одну из самых известных, содержит множество фиксов, в основном необходимые для успешной сборки на свежих системах, но есть и обновления корневых сертификатов, добавление EncodePointer и DecodePointer.

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

попытаться дописать недостающие функции ядра из win7/10 с сохранением старого доброго GUI.

После успешного портирования Chrome 114 под Windows 7, скажу так что ядро в 7/10 - это реферанс в сторону "контенеризации" и изоляции процессов, что негативно сказывается на производительности. Хотя часть низкоуровневых функций прекрасно перепишется и "встанет" нормально в работу, при успешной реализации всего остального даже Windows XP (лучше 2k3) заметно просядет в производительности.

Наиболее целесообразно попробовать:

  1. Скомпилить XP/2k3 x86 с поддержкой SSE2;

  2. Пофиксить явные вырвиглазные вещи GUI типа невозможности замены уже существующего файла в папке;

  3. В идеале нужен DirectX11/10/DXGI, чтобы современный Chrome браузер запустить & в игрушки поиграть. С другой стороны - кто-то должен переписать видеодрайвера. Или прокидывать это через OpenGL 4.5 а-ля Linux;

    -Так навскидку.

Много чего можно придумать. Например, прикрутить графический интерфейс Luna к линуксовому ядру. Это позволит использовать последние версии софта и драйверов. Причем версии ядра можно регулировать в зависимости от степени старости железа.

Возможно Вам будет интересен reactos.

Это попытка сделать open source Windows XP, точнее Server 2003.

Совместимость с приложениями под Windows XP там очень даже достойная.

Я думаю, что самая большая проблема - это лицензирование. Официально с кодом ничего не получится сделать, разве что можно использовать в образовательно-исследовательских целях для энтузиастов. Если бы Майкрософт разрешила использовать эти исходники, я думаю, что всякие проекты на базе XP росли бы как грибы после дождя.
А так можно потратить огромное количество времени, а результате Майкрософт прихлопнет репу :(.

В WindowsXP был очень лёгкий и удобный просмотрщик изображений. С удовольствием бы им пользовался в 10-ке.

Это было интересно.

В итоге все слинковалось, а в папке build мы имеет готовую аппликацию calc.exe.

О времена, о нравы. Тогда уж не в папке а в фолдере...

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

Что интересно, gnome-calculator тоже не умеет считать без подключения к интернету, уже 3 года как минимум.

А зачем калькулятору интернет?

Он через запросы к гуглу считает?

Курс валют загружает, судя по тикету. Т.е. он вроде считает без интернета, просто при старте делает запрос в интернет.

Мне интерсен вопрос в части про статистику количества кода в архиве. Я запускал cloc на свежеразархивированной версии исходников. Но при этом есть файлы Qt. Любопытно, это реальные файлы Qt или просто анализатор некорректно приписывает файлы Qt? В любом случае интересно нету ли в этих файлах конфликта лицензий.

Да там много странного вообще, например D(2001), Markdown(2004) или WebAssembly (2017). Анализатор, видимо, только по расширению файла анализирует (тогда специфичные для Qt файлы были бы .pro или .ui)

В итоге имеем скомилированную версию калькулятора версии Windows XP с помощью GCC x64, который запускается на современных версиях Windows.

А обычный калькулятор из XP разве не запускается на десятке?
А этот новоскомпиленный калькулятор запуститься на XP?

Новоскомпиленый на чистом XP без библиотек из MinGW точно нет. И обычно XP 32-битная, а эта версия калькулятора 64 бит. Билд 32 битного калькулятора сделать сложнее с помощью GCC, поскольку там много asm вставок, заточенных на майкрософтовский компилятор.
Касательно готового калькулятора с XP на 10-ке, то должно работать.

Обычный калькулятор XP запускается на Десятке. Его как раз и использую :)

Я тоже удивился, а ещё некий язык (?) Igor Pro

В первом случае пропущен тип (!) в support.c на строках 41 и 64.

Implicit int rule, в C89 вполне легальная штука. В C99 и далее компилятор обязан выдавать как минимум предупреждение (которое, конечно, можно при желании заглушить), но не обязан считать это ошибкой: "after issuing the diagnostic, an implementation may choose to assume an implicit int and continue to translate the program in order to support existing source code that exploits this feature".

и эта история имеет неожиданный, но очень счастливый финал

Действительно неожиданный!
Комментарий на гитхабе:


On 64-bit bug that killed the game


I did not find it, decompiled game worked in x64 mode on the first try.
It was either lost in decompilation or introduced in x64 port/not present in x86 build.
Based on public description of the bug (no ball collision), I guess that the bug was in TEdgeManager::TestGridBox

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

Посмотрел, его исходников действительно нет в играх:
NT\shell\osshell\games\
Хотя упоминание в корневом файле dirs присутствует. Странно, учитывая что эта версия исходников очень старая (SP1). Может их куда переместили в другое место проекта

Здесь интересно сравнить, скомпилированный бинарник gcc, clang, vs. Вес, потребление памяти

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

Можно скачать из установленной XP. Или собирать самому из исходников. Думал сделать патч, но в итоге пока отказался, все же лицензия не позволяет распространять код. Поэтому не хотел бы это делать в явном виде.

Скопировал с 32-битной виртуалки. Работает в W10. Только он не запоминает режим после закрытия и нового запуска приложение. Ну хоть что-то.
Ему нельзя передать View mode через командную строку?

А можно от куда-нибудь скачать итоговый рабочий вариант?

[немного не в тему] Калькулятор в Windows 10 — практически единственное встроенное приложение, которым я с удовольствием ежедневно пользуюсь.

В отличие от современной версии калькулятора, потребляющего 18.7 МБайта памяти, он потребляет всего 1.0 МБайт.

Calc.exe из WinXP x32 имеет размер .exe ~115Кб и потребляет ~1.3Мб памяти.

Calc.exe из WinXP x64 имеет размер .exe ~150Кб и потребляет ~1.5Мб памяти.

Классический (не UWP) win32calc.exe из Win10 x64 LTSC 2021 (1809) имеет размер .exe 682Кб и потребляет где-то 6.5Мб памяти. Функциональность последнего, мягко говоря, существенно выше (программист, статистика, конвертация единиц, вычисление дат, журнал/история и прочее). Ну и ресурсов побольше, поскольку кнопочки няшные с градиентом. Я готов мириться с таким распуханием.

Sign up to leave a comment.

Articles