С точки зрения архитектуры, Кай-256 - это Скорпион-256 без теневого монитора. Поэтому по наличию этого самого монитора и можно отличить Скорпион.
Надо сказать, что, для простоты, можно ничего не определять, а сделать так, как уже сделано в TFC для Pentagon 1024 - т.е., взависимости от значения какого-то зарезервированного байта в первом секторе командера, использовать или не использовать 8-ю страницу.
Авторы Скорпиона рекомендуют делать проверку так, - и я придерживаюсь этого мнения (А.Ларченко, "Краткое описание функций Профессионального Расширения Теневого сервис Монитора компьютера "Scorpion ZS 256 Turbo"", стр.15).- Переустановить системную переменную (ERR_SP).
- Вызвать какую-либо функцию RST 8.
- Если управление перешло по адресу из (ERR_SP), то компьютер со стандартным ПЗУ, иначе - Скорпион
Ну, а какую функцию лучше вызвать? Можно "отключение сервис монитора". Но я это не рекомендую: того, кто хочет покопаться в программе это не остановит, а тому, кто хочет с этой программой нормально работать, - доставит неудобства. Лучше вызвать функцию "установка адреса рабочего буфера", которая с V3.0a возвращает код версии теневого монитора.
Код:
LD SP,(23613);Сохраняем прежний адрес процедуры
POP HL ;обработки ошибок на дне стека,
LD (L2+1),HL;и устанавливаем новый.
LD HL,L1 ;
PUSH HL ;
LD HL,23296 ;Функция "Установка адреса рабочего буфера",
LD C,9 ;не изменяет регистры DE и BC, а с V3.0a
RST 8 ;возвращает в D код версии (для V3.0a - код 68), в E, B
DEFB #81 ;и C - дату компиляции.
;Сюда переходит управление, если Скорпион.
. . .
JP L3
;Сюда переходит управление, если компьютер со стандартным ПЗУ.
L1 . . .
L3 LD SP,(23613);Восстанавливаем прежний адрес процедуры
POP HL ;обработки ошибок.
L2 LD HL,00000 ;
PUSH HL ;
. . .
Сообщение от
CPLx
Версии 5.04х - принимает за 5.03?
Да. Так как по стандартным процедурам они соответствуют. Я, в своё время, изучал версию 5.04T; там даже есть сообщение, что она переделана из 5.03 (добавлено "турбо-форматирование").