Решил изучить программу "Тест устройств" и понять, что там и как... Известно три версии программы: testustr.rom и testustr_.rom для Вектора (из каталога Базиса), а также TEST_(PK6128TS).COM для ПК-6128ц (в Базисе нет, можно скачать тут: 1, 2 или 3). Ещё один файл в Базисе, "testustr [pack].rom" -- это копия "testustr.rom", только в запакованном виде.
Итак, программа "Тест Устройств", как и многие программы Счётмаша собрана на базе "Драйверов устройств", отличия в версиях такие:
- Тест ОЗУ -- в тестах для Вектора отличий нет, для ПК-6128ц этот тест обновлён в соответствии с конфигурацией его памяти.
- Тест Клавиатуры -- отличий нет, но в тесте для ПК-6128ц есть ошибка -- перепутаны клавиши ВК и ЗБ.
- Тест ПУ -- в варианте testustr.rom добавлено некое тестирование системной шины по кнопке "СТР", как оно работает я не понял, т.к. и на реале, и в эмуляторах выдаёт ошибку. Возможно для него нужна какая-нибудь заглушка на порт ВУ, как в тесте порта ПУ. Кому интересно на него взглянуть -- он есть в исходниках, с адреса L_3A06. В остальном в тесте отличий нет.
- Тест экрана -- отличия только на ПК-6128ц, связанные с его особенностями.
- Тест электронного диска -- в testustr.rom есть небольшие добавления, но для чего -- не углублялся...
- Тест дополнительного устройства -- в testustr.rom должен загружаться с адреса 6400h, в testustr_.rom -- с 6200h.
- Остальные тесты существенных отличий, фактически, не имеют.
Кроме того, в "testustr.rom" добавлено отключение КД в начале, и в большинстве тестов есть незначительные изменения. В целом, тест для ПК-6128ц ближе к "testust_.rom" -- общая часть совпадает за исключением вырезанной заставки и отдельных тестов.
Ну и всё это исследование в конечном итоге привело к сборке нового объединённого "Теста Устройств":
Что было сделано:
- Тест базового микропроцессора -- добавлено автоматическое определение типа процессора.
- Тест ОЗУ -- на ПК-6128ц тестируется 128кБ / 4 банки, в остальных случаях -- 64кБ.
- Тест клавиатуры -- без изменений (для ПК-6128ц исправлена ошибка расположения клавиш).
- Тест ввода-вывода на магнитную ленту -- без изменений.
- Тест параллельного интерфейса -- без изменений.
- Тест устройства отображения информации -- на ПК-6128ц в конце тестируется переключение 12 экранов, в остальных случаях -- 4, как на стандартном Векторе-06ц.
- Тест таймера и звукового синтезатора -- добавлен простой тест AY8910, если чип будет обнаружен.
- Тест электронного диска -- добавлена возможность ввода вручную порта диска, можно протестировать несколько квази-дисков.
- Тест манипуляторов типа джойстик -- добавлено определение и тестирование джойстика "С" (по схеме Вектор-06ц.02).
- Тест матричного печатающего устройства -- без изменений.
- Тест дополнительного устройства -- добавлено указание адреса для загрузки теста.
Новый тест имеет автоматическое определение типа ПК (по контроллеру памяти), поэтому работает и на Векторе, и на ПК-6128ц -- мне он всё-таки нужен в моём проекте, для проверок... Исходники выложил на гитхаб, откомпилированный бинарник дублирую тут: testust~.7z
В планах есть добавить туда тест часов реального времени, специально оставил для этого строку, тогда там будет всё встроенное в ПК-6128ц++ железо, но за это ещё не брался. Если не влезет, то, случае необходимости, там можно вырезать тест принтера (у кого-нибудь они есть?).
Ну и хорошо было бы ещё оптимизировать в нём алгоритмы, ускорить графику, как Бейсике 2.99 (тем более, что там алгоритмы схожи с Бейсиком 2.5, а значит и возможность ускорить есть), но я не настолько силён в оптимизации, как ivagor, поэтому ещё даже не пробовал.