ASTRA32 и ASTRA. Программы определения конфигурации компьютера.
154 subscribers
175 photos
34 files
11 links
Канал разработчика программ определения конфигурации компьютера ASTRA32 for Windows и ASTRA for DOS. Новости, тестирование.
https://www.astra32.com/ru
https://www.sysinfolab.com/ru
Download Telegram
Позавчера вышла новая бета версия ASTRA for DOS.
Расскажу что означает строка "улучшено определение процессоров семейства
386/486 (без поддержки CPUID) с помощью метода CPU RESET".
Современные процессоры определяются с помощью команды CPUID. Но были времена когда в процессорах не было такой команды.
Изначально в IBM PC был возможен только один вариант процессора - Intel 8088 4.87 МГц и проблема как таковая не существовала. С появлением процессора Intel 80286 появилась задача определить на каком процессоре работает программа.
Intel опубликовала официальный способ определения 286 процессора. Он основан на том, что биты 12-15 регистра флагов FLAGS всегда установлены в ноль на 286 процессоре.
Подобная манипуляция с различными битами в расширенном регистре флагов EFLAGS позволяет определить 386 и 486 процессор. Но без деталей. Например, этим методом нельзя определить SX или DX вариант процессора. Тем более нельзя узнать производителя процессора. Только поколение.
Этого недостаточно.
🔥8
Каждое поколение процессора имеет несколько моделей и может использовать разные ревизии ядра с исправленными ошибками. Хорошо бы знать точную ревизию процессора. Поэтому все процессоры от Intel 80386, выпущенного в 1985 году, до современных Core/Ryzen после аппаратного сброса содержат в регистре EDX специальный идентификатор. Этот идентификатор может прочитать BIOS, но он нигде не сохраняется и не доступен для прикладных программ. В некоторых версиях BIOS для IBM PS/2 и старых версиях AMI BIOS есть функция для получения идентификатора из прикладной программы, но я никогда не встречал такой BIOS.
Для решения этой проблемы в процессорах Intel Pentium в 1993 году появилась инструкция CPUID. Она возвращает производителя процессора, семейство, модель и степпинг. Фактически CPUID возвращает тот самый идентификатор из регистра EDX.
Постепенно эта инструкция появилась в новых вариантах 486 процессоров, а так же у других производителей.
Поддержка CPUID появилась в 1993 году у всех Intel 486DX/SX с поддержкой SL Enhanced (функция энергосбережения).
В процессорах AMD 486 поддержка CPUID появилась в версии Enhanced с Write-Back кэшем в 1994 году.
В процессорах Cyrix команда CPUID по некоторым источникам появилась в Cx5x86 в 1995 году, но по умолчанию она отключена. В эмуляторе 86BOX программно включить CPUID не удалось, настоящего Cx5x86 у меня для проверки нет.
Тем не менее, в процессорах Cyrix (начиная с Cx486SLC/DLC, 1992 год) есть свой механизм идентификации с помощью регистров конфигурации DEVID registers (DIR). Доступ к этим регистрам возможен из прикладной программы в любой момент (в отличие от идентификатора в регистре EDX, который так же присутствует в процессорах Cyrix).
Итак, в 1997 году когда началась разработка INFORMER (на Intel Pentium 166 МГц) процессоры без поддержки CPUID считались устаревшими, но еще использовались. Для определения старых процессоров использовалась сторонняя библиотека CPU/FPU feature detection library by B-coolWare. С исправлениями и модификациями эта библиотека используется в ASTRA до сих пор. Есть подозрение, что такие диагностические программы как NSSI и agSI тоже используют эту библиотеку.
Определение основано на анализе ошибок разных версий процессоров и попытке исполнения различных недокументированных команд, специфичных для данного производителя/модели. Точность определения такими методами не очень высокая. Но так как поддержка старых процессоров была сделана по остаточному принципу, то эта библиотека устраивала.
В 2000 году я увлекся ретро компьютерами, стал добавлять поддержку старого железа. В прошлой апрельской бете было добавлено определение sSPEC номера, коэффициента умножения и прочего процессоров семейства Intel 486. Разумеется, только SL Enhanced версий с поддержкой инструкции CPUID.
А как быть с более старыми процессорами Intel/AMD (с Cyrix проблем нет)?
Как я написал выше идентификатор процессора в регистре EDX появляется только после сброса процессора. Казалось бы, невозможно сбросить процессор и остаться в своей программе. Оказалось, что можно.
🔥10
Историческая справка:
В 286 процессоре появился защищенный режим процессора. Перейти в него довольно просто, подготовив таблицу дескрипторов и установив всего один бит в служебном регистре CR0. А вот вернуться назад в реальный режим средствами процессора невозможно (в 386 процессоре это исправили). Поэтому разработчикам IBM PC/AT пришлось делать костыли для возврата в реальный режим без перезагрузки.
После выполнения сброса процессор передает управление BIOS, который анализирует байт отключения 0Fh в CMOS памяти. Если в этом байте записан 0, то происходит обычная теплая (без тестирования железа) перезагрузка. Если записано значение 5 или 0Ah, то вместо перезагрузки управление передается по адресу, записанному в области данных BIOS 0040h:0067h.
Этот метод можно использовать не только для выхода из защищенного режима, но и сброса процессора для сохранения идентификатора из регистра EDX.
Алгоритм примерно такой:
1 Запрещаем прерывания
2 Сохраняем сегментные регистры, т.к. их содержимое будет уничтожено после сброса
3 Записываем значение 0Ah в байт отключения 0Fh в CMOS памяти
4 В область данных BIOS по адресу 0040h:0067h записываем адрес нашей процедуры, которая получит управление после сброса и сохранит регистр EDX в переменную
5 В порт контроллера клавиатуры 64h записываем 0FEh. Это команда контроллеру клавиатуры произвести аппаратный сброс процессора
6 Ждем сброса процессора. Изначально в этом месте была небольшая задержка, по идее достаточная, чтобы дождаться сброса. Во время отладки никак не удавалось добиться стабильной работы. В 30% случаев компьютер намертво зависал. Перепробовал все что мог, потратил несколько дней. В конечном итоге вместо задержки стал ждать сброс процессора в бесконечном цикле вида
wait: delay
jmp wait
Зависания прекратились. Это первый случай в моей практике программирования когда от зависания помог бесконечный цикл :-)
7 После сброса BIOS передает управление по адресу 0040h:0067h, в котором хранится адрес пользовательской процедуры
8 Восстанавливаем сегментные регистры
9 Записываем значение 0 в байт отключения 0Fh в CMOS памяти, чтобы следующая перезагрузка была обычная
10 Сохраняем регистр EDX в переменную
🔥8👍2
Недостатки метода:
По идентификатору в EDX невозможно узнать производителя процессора. Т.к. ранние процессоры AMD были полными (включая микрокод) клонами процессоров Intel, то отличить их программно невозможно. ASTRA пытается использовать косвенные признаки для определения процессоров AMD, но это не всегда работает.
Метод работает только в реальном режиме процессора (загружен только himem.sys). Менеджеры памяти типа EMM386 и QEMM переводят процессор в виртуальный режим. В этом случае будет работать старый неточный метод определения.
Некоторые BIOS успевают уничтожить содержимое регистра EDX до передачи управления в пользовательскую процедуру. В этом случае вернется неверное значение идентификатора.

В любом случае это лучше, чем старый метод.
Теперь ASTRA умеет точно до ревизии ядра определять ранние 486 и 386 процессоры.

Требуются бета тестеры с 386/486 процессорами. Присылайте отчеты.
🔥14
DowngradeN50.pdf
20 MB
Большое интервью со мной электронного журнала о ретро компьютерах "Downgrade".
Весь выпуск журнала во вложении.
Ниже интервью в текстовом виде.
🔥5
Per aspera ad ASTRA

Вашему вниманию предлагается интервью с Константином Владимировичем Кондаковым (a2kkv), автором известной диагностической программы ASTRA (https://www.astra32.com/). Константин Владимирович любезно согласился ответить на несколько вопросов о себе и своей разработке.

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

Константин Кондаков: Мне 47 лет, высшее образование. Факультет систем автоматизированного проектирования (САПР). Специальность – «инженер-системотехник». Сейчас это называется «IT-шник».

Примечание 1: Название статьи переводится с латыни как «Через тернии к звёздам», ну или, в данном случае, «Через тернии к “Астре”» – прим. ред.
🔥3👍1
Как Вы впервые познакомились с компьютером? Что это была за модель? Как и на чём Вы научились программировать?

В детстве я увлекался радиоэлектроникой. Собирал несложные схемы, ремонтировал радиоаппаратуру знакомых.
Первый компьютер я увидел примерно в 1989-1990 году. Это был компьютерный класс, который в выходные работал как компьютерный клуб. Там были «Агаты», и за 1 рубль в час тётенька запускала игры с дискеты.
В 1992 году в школе появился предмет «Информатика». Компьютеры были БК 0010-01.
В то время на уроках информатики изучали язык программирования Basic, а не как сейчас – как открыть файл в Word и поменять шрифт. Именно тогда я понял, что программирование – это то, что мне нравится даже больше электроники.
Куда пойти учиться после школы вопросов не вызывало.

Расскажите про историю создания ASTRA. Как появилась идея написать такую программу, с чего всё началось?

В 1995 году на деньги родителей (за что я им благодарен, в то время это стоило безумных для провинции денег) я собрал свой первый Персональный Компьютер. Это был Intel 386DX 25 МГц, 1 МБ памяти, видеокарта Trident 9000i 512 КБ, один дисковод 5.25" 1.2 МБ. Монитор 14" Samsung SyncMaster 3. На жёсткий диск денег не хватило. Как сейчас помню, 1 МБ памяти (4 x 256 КБ) стоил 50 долларов.
Монитор стоил 280 долларов (с учётом инфляции это $579 нынешних долларов). Это и сейчас дорого, а в те времена всё это покупалось постепенно в течение года.
Как сейчас я помню первый запуск этого компьютера (когда был куплен самый дорогой компонент – монитор). Он включился, но остановился на тесте памяти. Я нажал Ctrl+Alt+Del – и компьютер загрузился в DOS с дискеты! В дальнейшем выяснилось, что при холодном включении всегда зависал тест памяти. После горячей перезагрузки всё замечательно работало. Первый вывод – неисправная память. Поэтому я записал кучу всевозможных тестов типа CheckIt у единственного друга с компьютером.
С этого началась моя коллекция диагностического софта для DOS (сейчас она занимает 260 МБ). Все тесты проходили без ошибок. В чём была проблема – так и осталось непонятно.

В 1997 году по дисциплине «Техническое обеспечение» надо было написать курсовой проект. Т. к. любовь к тестам железа никуда не делась, было принято решение написать свою System Info утилиту. В декабре курсовой проект был готов и получил оценку «отлично». 23 декабря 1997 года этот проект был выпущен публично и получил имя INFORMER 1.00.
Первую версию можно скачать на сайте Old-DOS.ru (https://old-dos.ru/files/file_3360.html).

Знали ли Вы о каких-либо других программах-тестах, когда начали работать над ASTRA/INFORMER? Какие недостатки, на Ваш взгляд, присутствовали в них (и которые Вы хотели бы исправить)?

К тому времени у меня уже была большая коллекция тестов железа. У любой программы есть сильные и слабые стороны. В документации INFORMER от 1998 года упоминаются Dr. Hardware, agSI, PC Config. Неплохие программы. До сих пор запускаю их на ретрожелезе.

Почему Вы назвали программу именно так?

Название было выбрано от русского слова «информировать». Потом было выяснено, что слово INFORMER не очень благозвучно звучит в английском языке. Программа была переименована в ASTRA (аббревиатура Advanced Sysinfo Tool and Reporting Assistant).
🔥6👍1
Как шёл процесс разработки, на каком языке программирования была написана ASTRA (DOS-, Windows-версии), какие инструменты использовались? Какие были сложности?

Несмотря на статус курсового проекта, INFORMER был достаточно продвинутой утилитой.
Определялся процессор, BIOS, жёсткие диски, видеокарта.
Программа была написана на Borland Pascal 7.0 и Turbo Assembler.
Интерфейс был создан с помощью Turbo Vision.
Разработка велась на Intel Pentium 166 МГц, RAM 24 МБ, HDD 3,2 ГБ, S3 ViRGE 2 MB.
Первоначально развитие этого проекта не планировалось, но весной 1998 года была добавлена функция сохранения файла-отчёта и написана документация (24 килобайта текста, писать я всегда любил :-)). Было принято решение развивать программу.
Например, в версии от марта 1998-го было добавлено определение PnP-мониторов.
Возможно, это была первая диагностическая программа для DOS с такой функцией.
Главная проблема при разработке в то время — недостаток документации.

Вы всё разрабатывали самостоятельно, или Вам кто-то помогал?
Общались ли Вы с авторами аналогичных программ, вроде Dr. Hardware, AIDA и др.?

Главным источником знаний по программированию железа в то время был x86/MS-DOS Ralf Brown's Interrupt List. Первые версии писались с помощью этого справочника.
В 2000 году я познакомился с Владимиром Афанасьевым (автор System Speed Test, SST).
В течение трёх лет мы переписывались по электронной почте. Я благодарен Владимиру за помощь в разработке INFORMER/ASTRA. 14 апреля 2003 года я получил последнее письмо от Владимира Афанасьева :-( Что с ним случилось – я не знаю...
Также хочу сказать спасибо всем бета-тестерам ранних версий (после появления постоянного доступа к интернету): Андрею Иконникову, Юрию Лысенко, Максиму Буланову, Алексею Климину, Дмитрию Молоснову и Владимиру Сергееву.

Версия 1.0 INFORMER датирована 23.12.1997. Это самая первая «серийная» версия, или существовали более ранние, возможно, под другим названием?

Очевидно, что были бета-версии, но сохранились только исходники версии 1.0.

Какие сейчас существуют версии программы? (Для каких ОС и т. д.)

ASTRA работала в Windows 95/98/Me, но с выпуском Windows XP стало понятно, что необходима Win32-версия программы.
В ноябре 2003-го была выпущена первая бета ASTRA32 for Windows. Среда Delphi 6.
Для снижения трудозатрат (ну и бросать разработку DOS-версии не хотелось) было принято решение разрабатывать ASTRA32 на основе исходников ASTRA for DOS.
До сих пор обе программы собираются из единого исходного кода. Это значит, что любые изменения (если они не специфичны для DOS или Windows) появляются в обеих версиях программы. Т. е. поддержка новых процессоров или чипсетов автоматически появляется в DOS -версии, а поддержка ретрожелеза появляется в Windows-версии. Причём практически без дополнительных трудозатрат. Благодаря этому DOS-версия до сих пор существует, в отличие от всего остального диагностического софта для DOS (кроме HWiNFO).
🔥2
Давно ли выходило последнее обновление? Какие новые функции были добавлены в последних версиях?

Последняя версия вышла 3 февраля 2025 года.

Все эти годы ASTRA for DOS жила, но все изменения попадали в неё из ASTRA32.
Разумеется, никакого дохода она уже не приносила, но новые версии всё равно собирались. Ретрожелезом в то время я не увлекался, но DOS-версию было жалко.
В 2020 году во времена коронавируса стало больше свободного времени, и я вспомнил, что лет 15 назад я купил пару 286-х и 386-х материнских плат (по цене пары бутылок пива), и решил их всё-таки проверить. Они заработали! Вышел в интернет из браузеров NCSA Mosaic (Windows 3.11) и Arachne/DOSLynx (MS DOS 6.22).
Выяснилось, что ASTRA очень долго определяет BIOS на таких медленных процессорах.
Переделал поиск строк в BIOS на однопроходный, увеличил скорость поиска в 20 раз. Ну а потом затянуло. Стал покупать ретрожелезки. Добавлять поддержку старого железа, которое в 1997 было уже устаревшим (286/386) и особо не тестировалось (первая версия ASTRA разрабатывалась на Intel Pentium 166 МГц).
За эти 5 лет было добавлено определение ISA- и VLB-видеокарт, ASTRA теперь работает на процессорах 8086/8088 (это было непросто, IBM PC радикально отличается от IBM PC/AT 80286), добавлена поддержка старых чипсетов типа Intel 430/440, определение sSpec-номера / OPN-кода процессоров семейства Intel Pentium, AMD K5 и AMD K6 и выше, добавлен новый раздел Sound Info (лучший в мире (?), например, у пользователя с VOGONS правильно определились четыре звуковых карты в одной системе: Creative Sound Blaster Pro 2.0, Creative AWE64, Creative SB Live! и Gravis UltraSound), добавлена расширенная информация о видеочипах NVIDIA от TNT до семейства GTX200 (архитектура, частота ядра и памяти, тип и разрядность шины памяти, температура и т. д.), добавлено определение EISA-устройств (определяются даже несконфигурированные устройства, такое умеет только утилита от AMI).
ASTRA32 также получила эти изменения. Кроме этого, была восстановлена работоспособность ASTRA32 в Windows 9x/Me и Windows NT 4.0. Последние 10 лет тестирование в этих системах не проводилось, и в какой-то момент совместимость сломалась.

Интерфейс DOS-версии остался неизменным от самой первой версии программы по настоящее время. У Вас не было задумки «обновить» внешний вид программы? Может быть, уйти от стиля Turbo Vision?

Я считаю, что интерфейс Turbo Vision – это вершина текстового интерфейса для DOS. Менять ничего не надо. :-)

Не было ли у Вас мысли написать вариант программы для Windows 3.1 или Win32s? Как Вы вообще относитесь к программам-тестам для этой оболочки? Были ли у Вас идеи/попытки создания версий для OS/2, Linux или BeOS? Может быть, позже – для MacOS X?

Windows 3.x работает из DOS. В этом случае можно запустить ASTRA в чистом DOS. Портировать ASTRA32 в Windows 3.x/NT 3.x невозможно. Для этого надо писать новое приложение и драйвер. Трудоёмкость этого страшно представить. То же относится и к прочим операционным системам. Даже поддержка Windows 9x/NT 4.0 даётся непросто. Поддержка Windows 9x/NT 4.0 есть только в трёх современных диагностических утилитах и в сильно урезанном виде.

Приходилось ли Вам обращаться к производителям «железа», чтобы запросить какие-нибудь спецификации или datasheet, для того чтобы правильно идентифицировать какие-нибудь редкие или уникальные девайсы?

До 2022 года у меня действовал NDA-договор с Intel. Был ранний доступ к документации на ещё не вышедшие процессоры/чипсеты. Обычно документация на первые инженерные сэмплы появляется за 3 года до публичного выхода новой архитектуры. В данный момент доступ к документации заблокирован…
🔥5
Расскажите о своих планах. Какую перспективу Вы видите для ASTRA в будущем?

Насчёт ASTRA for DOS. Она жива, пока жива ASTRA32 for Windows, т. к. исходники общие и это не требует отдельной поддержки DOS-версии. Единственная диагностическая программа для DOS, которая ещё жива, – это HWiNFO. Мы видим, как Мартин Малик мучается с её поддержкой. Разрабатывать отдельную версию, которая нужна единицам, очень тяжело.
Планы простые — разработать лучшую в мире диагностическую утилиту для DOS. :-)
В принципе, она по многим параметрам лучшая в мире. Адекватно работает на любом компьютере от Intel 8086/8088 до современных Intel Core / AMD Ryzen. Уже уникальное сочетание. :-)

Может быть, существуют планы по переходу на мобильные устройства или портированию на другие операционные системы?

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

Что планируете добавить в будущих версиях? Что нового сейчас в разработке?

Из ближайших планов по ретротематике: поддержка бОльшего числа старых чипсетов (на которые есть документация), определение размера кэша (не через чипсет или CPUID, а по скорости доступа). Ещё интересная тема — определение частоты сопроцессора на 286/386-платах. Как известно, на таких платах частота сопроцессора не равна частоте процессора. Утилита NSSI (единственная) пытается угадать частоту сопроцессора, но не всегда угадывает. Пока провожу эксперименты, но нужны бета-тестеры с экзотическими сопроцессорами.

Можно ли назвать «Астру» успешным коммерческим проектом? Приносит ли она прибыль, и каково количество официально зарегистрированных пользователей?

С появлением официального сайта в 2000 году (https://web.archive.org/web/20000917174943/https://www.informer.newmail.ru/) популярность программы начала расти. В 2001 году INFORMER переименован в ASTRA и стал Shareware.
В 2006 году я получал доход примерно в 5 раз больше, чем на основной работе. Поэтому я уволился с работы, открыл ИП и перешёл на так называемое full-time shareware.
Разумеется, сейчас ASTRA for DOS покупают очень редко. В декабре 2023 ASTRA стала бесплатна для некоммерческого использования. Но если вы хотите поддержать разработку, то её по-прежнему можно купить. :-)

Расскажите, пожалуйста, каким образом Вы тестируете ASTRA? У Вас есть коллекция «железа» разных поколений для тестирования программы? Если да, то, может быть, расскажете про самые интересные, на Ваш взгляд, её «экспонаты»?
Или, может быть, Вы используете виртуальные машины либо что-то ещё?

ASTRA/ASTRA32 умеет сохранять дампы CPUID/PCI/SPD в текстовом отчёте. Если отлаживаемый компьютер не совсем старый (поздние 486-е и новее), то специальная отладочная версия может брать данные не из реального железа, а из файла отчёта.
Поэтому присылайте отчёты, они помогают в разработке.
Если компьютер совсем старый или дампы не могут помочь, то отладка ведётся в эмуляторе 86Box. Собирается нужная конфигурация и загружается образ с нужной операционной системой. Это радикально ускоряет работу. Разумеется, если поддержка нужного железа в нём есть. Есть вещи, которые в эмуляторе не реализованы, например, в нём нет понятия кэша. Поддержки EISA тоже нет. Для этого пришлось покупать материнскую плату с EISA и пару карт расширения и отлаживаться на настоящем железе. Это самый медленный вариант. Обмен с основным компьютером ведётся либо по сети, либо через карту CompactFlash.

Для отладки у меня есть все основные платформы от 8088 до Socket 1151. В коллекции нет Socket 4, Socket 8, Slot 2 и экзотики типа Transmeta Crusoe.
🔥4
Из экзотики есть материнская плата EISA с парой карт (SCSI, сеть) расширения. Научился программировать EISA-устройства. Много писал об этой плате и программировании EISA в своём Telegram-канале (https://t.iss.one/SysinfoLab).

Хотелось бы сделать поддержку MCA-устройств, но такое железо найти практически нереально или оно стоит как крыло от «Боинга».

Может быть, вспомните на конкретном примере, с каким «железом» было работать сложнее всего?

Пара примеров (всю боль могут прочувствовать только программисты, остальным можно не читать).

Выяснилось, что ASTRA32 не работает в Windows NT 4.0 без сервис-паков. Падает в самом начале где-то на этапе инициализации, до моего кода дело не доходит.
Первая мысль: надо поставить Delphi и посмотреть в отладчике, что происходит.
Delphi требует, чтобы был установлен сервис-пак 3. Устанавливаю сервис-пак 3 – и ASTRA32 начинает прекрасно работать. Удаляю сервис-пак, опять падает, но и Delphi без него не работает. Начинается метод тыка. Удалил сторонний модуль перевода интерфейса. Падает. Начал перебирать старые версии. Нашёл версию трёхлетней давности, которая заработала. Чем она отличается? Она была собрана в Delphi 6. Виновата версия Delphi? Не факт, надо проверить. Пытаюсь эту старую версию собрать в Delphi 7. Что само по себе непросто. Собрал, начала падать. Виновата Delphi 7.
Что делать дальше? Не откатываться же на Delphi 6? Начинаю удалять всё подряд (второстепенные окна настройки, мастер отчётов, сплэш-скрин и подобное). От программы практически ничего не осталось, кроме главной формы. Не работает. Удалил все иконки – и внезапно всё заработало. Возвращаю иконки назад, опять всё работает. Как такое может быть? В основной версии удаляю иконки, потом добавляю назад – и всё начинает работать. После внесения изменений в код (не связанный с интерфейсом и иконками) через какое-то время опять программа начинает падать. Теперь перед каждым релизом приходится проверять запуск в NT 4.0 без сервис-паков. Если падает, то удаляю и добавляю назад иконки.
На всё это ушло три недели с перекурами.

Купил SCSI CD-ROM Pioneer, и ASTRA32 в Windows NT 4.0 начала падать в синий экран.
Выяснилось, что это происходит при попытке выполнить неподдерживаемую CD-приводом SCSI-команду. В этом случае драйвер должен вернуть ошибку, а он думает секунд 5 и валит винду в синий экран. Собираю похожую конфигурацию в 86Box, никаких синих экранов, но там SCSI-контроллер другой модели. Кто виноват? ASTRA32 или драйвер? Пытаюсь проверить сторонний диагностический софт. Выяснилось, что со SCSI в NT 4.0 никто не умеет работать, максимум могут определить модель устройства, никакой расширенной информации нет.
Прошерстил DDK, всё делаю как в мануалах. Остаётся тот самый метод тыка.
Проблема в том, что после синего экрана надо выключить комп, включить, секунд 30 идёт POST, минуты 3-4 загружается NT 4.0, минут 5 загружается Delphi (В системе 32 МБ памяти, нужны модули с Parity Check, больше таких модулей у меня нет).
Что-то меняю, опять синий экран и 10 минут до следующей итерации. Позже сделал маленькую консольную утилиту, которую можно быстро собрать без загрузки Delphi.
Экономия пяти минут, но всё равно долго. Параметров при исполнении SCSI-команд много. Прошла неделя, пока я понял, что не нравится драйверу. В DDK размер буфера всегда равен 192 байтам, у меня стоял комментарий от 2008 года, что любое отличное от 192 значение приводит к BSOD. Поэтому менять я его стал в последнюю очередь, когда всё остальное не помогло. Выяснилось, что драйверу не нравился размер буфера. Размер должен быть не 192 байта, а ровно столько, сколько данных возвращает конкретная SCSI-команда. Возможно, это проблема конкретного драйвера.
Скорее всего, в интернете тех лет обсуждалась эта проблема, но старый интернет стремительно вымирает (особенно старые форумы). Есть web.archive.org, но в нём очень плохой поиск. Это ещё одна проблема ретропрограммирования.
🔥41
Если не сложно – расскажите, пожалуйста, о Вашем уникальном алгоритме вычисления статуса надёжности винчестеров, а также оставшегося ресурса SSD-дисков. Насколько достоверен такой прогноз?

Уникальным он был в 2005 году. Эта была одна из первых диагностических утилит, которая для обычного пользователя показывала состояние диска в виде Хорошо/Средне/Плохо. Алгоритм основан на анализе SMART-атрибутов и моей статистике по отказам жёстких дисков. Если статус диска Плохой (Bad), то его надо менять немедленно. Если Средний (Poor), то диск ещё поживёт, но важные данные хранить на нём нельзя.
Оставшийся ресурс SSD-дисков определяет контроллер диска.

Случались ли в Вашей деятельности какие-нибудь смешные случаи, курьёзы?

В прошлом году выяснилось, что последние 22 года ASTRA32 for Windows не работает в Windows NT 4.0 на старых процессорах уровня 486DX 33 МГц. Причём никогда не работала, начиная с первых версий. В 2003 году подобных компьютеров почти не осталось, а если и остались, то работали печатными машинками в Windows 95 (в ней проблем не было).

У Вас были (или есть сейчас) другие проекты (помимо «Астры»)? Чем Вы сейчас вообще занимаетесь? (Хобби, работа, семья?)

Других проектов нет. Хобби в настоящее время – это ретрокомпьютеры.

Как Вы вообще относитесь к downgrade – сохранению компьютерной истории, использованию старых компьютеров и ПО? Может быть, посещаете какие-то сайты на эту тему?

ASTRA for DOS – это и есть лютый downgrade. Читаю ретрофорумы и ретроканалы в Telegram. У меня есть свой небольшой канал по ретротематике в Telegram: https://t.iss.one/SysinfoLab

Используют ли ASTRA любители старых компьютеров? Есть ли какая-то обратная связь с ними, то есть Вам приходят какие-то баг-репорты, предложения, результаты тестов?

Да, мне присылают отчёты и пожелания. Совместно исправляем ошибки и недочёты. Всем спасибо, но хотелось бы больше отчётов с ретрожелеза.
Приятно встретить на «Авито» или «Мешке» скриншот ASTRA на ретрожелезе как подтверждение работоспособности.

Возможно, у Вас будут какие-нибудь пожелания читателям журнала?

Всем здоровья, это самое главное.

Большое спасибо за интересное интервью!

На вопросы отвечал:
Константин Владимирович Кондаков (a2kkv)

Вопросы задавали:
uav1606
Вячеслав Рытиков (eu6pc)
Андрей Шаронов (Andrei88)
🔥4
Фото из интервью:

1 - ASTRA32 v4.20 под Windows 95
2 - XT-компьютер разобран, поэтому скриншота с настоящего железа нет. Есть только из эмулятора
3 - Скриншот ASTRA for DOS с основного компьютера AMD Ryzen 5 5600
4 - Самый старый ноутбук в коллекции. Chaplet Systems Halikan NBA386SX. Ориентировочно 1993 год
6 - Тестовый набор AGP-видеокарт Nvidia (26 штук) и тестовый стенд времён разработки низкоуровневой поддержки видеочипов Nvidia
5 - Тестовый стенд для отладки поддержки EISA. Материнская плата DEC PRIORIS MTE (EISA/VLB). EISA SCSI-контроллер Adaptec AHA-2740/42W. Сетевая карта 3COM EtherLink III EISA. VLB-видеокарта Cirrus Logic CL-GD5429
🔥9👍1
Вышла новая бета версия ASTRA32 for Windows 4.21 beta от 27 мая 2025 года.

Новое в этой бете:
- добавлена подробная информация о чипсете VIA VT82C486/VT82C486A/VT82C496G
(режим контроллера памяти, размер и тип кеша L2 и т.д.)
- увеличена скорость поиска в базе данных в 3-8 раз
- исправлены некоторые незначительные ошибки
👍6🔥5