Какое-то время назад была затронута проблема о том, что TR-DOS Navigator версии 0.75 не совсем точно олределяет Скорпион, точнее принимает за него ZX Spectrum +3 с DivIDE, поскольку тот тоже использует рестарты RST8 \ DB #81.
Я написал другую процедуру детектирования Скорпиона, которая должна работать правильно.
Эта процедура уже используется в новом Scorpion ProfROM Test V2. Поэтому приглашаю желающих протестировать работу этой программы на других Spectrum-совместимых компьютерах. Если Scorpion ProfROM Test V2 запускается не на Скорпионе, то должно всегда выдаваться сообщение системы ZX Spectrum "Q Parameter error".
Новая процедура детектирования Скорпиона такая (ниже даны комментарии):*1 - В порт #1FFD записывается #00. На компьютерах типа Pentagon и фирменном ZX Spectrum 128 подключится ROM0 и RAM0, на Скорпионе и ZX Spectrum +3 останется прежняя конфигурация (ROM1 и RAM0).Код:;Детектирование Scorpion'а, 2019. ;Процедура должна нажодиться ниже адреса #C000! DI ;Предполагается, что к этому моменту конфигурация памяти: ROM1, RAM0 LD BC,#1FFD LD HL,#00F1 OUT (C),H ;*1 LD D,(HL) ;*2 LD E,2 OUT (C),E :*3 LD A,(HL) ;*4 CP D ;*5 OUT (C),H ;*6 LD B,#7F ; LD A,#10 ; OUT (C),A ; JR Z,$+5 LD (23388),A;*7
*2 - В регистр D помещается содержимое ячейки по адресу #00F1 для образца.
*3 - В порт #1FFD записывается #02. На Пне и ZX Spectrum 128 подключится ROM0 и RAM2, на Скорпионе - ROM2, а на ZX Spectrum +3 вывод этого значения в порт не имеет смысла и конфигурация остается прежней.
*4 - В A помещается число из #00F1 - для Скорпиона это код версии.
*5 - Сравнение с ранее считанным числом в D - если значения равны (Z=1), значит ROM'ы не переключались и компьютер не Скорпион.
*6 - Восстановление прежней конфигурации, если было ее переключение.
*7 - Для Скорпиона уствновка системной переменной BANKM, чтобы после вызовыов RST 8 включался экран 0.
Если ни у кого нет других предложений, то эта процедура детектирования Скорпиона будет включена в новую версию TRDN.




Ответить с цитированием