Попробую подробно рассказать о методе снятия выбора дисковода эмуляцией индексных импульсов.

Как известно, микроконтроллер КР1818ВГ93 (и его "западные оригиналы"), завершив выполнение команды, снимает выбор дисковода после поступления определённого количества индексных импульсов. Однако, если дискеты нет, то и индексных импульсов не будет. Авторы Beta Disk Interface не стали добавлять аппаратное снятие выбора (очевидно, ради удешевления схемы), но предусмотрели программную эмуляцию индексных импульсов. Это делается с помощью переключения 3-го бита системного регистра. Про эту возможность написано не во всяком описании по программированию контроллера; обычно сказано, что этот бит отвечает за "загрузку головки". Если мы посмотрим на схему любого нашего клона Beta Disk Interface, то увидим, что соответствующий выход триггера (обычно TM9 или TM8), отвечающий за 3-й бит системного регистра, соединён еще и через диод или логический элемент И с 35-м выводом ВГ93; это и призвано обеспечить программную эмуляцию индексных импульсов.
Однако, мало сэмулировать индексные импульсы, надо еще и переключиться на "противоположный" дисковод. В ПЗУ TR-DOS V5.03, процедура снятия выбора дисковода находится с адреса 727. Однако там есть ошибка: по адресу 730 вместо команды OR 3 должно быть XOR 3; из-за этой ошибки не остановится дисковод B: в интерфейсе, где аппаратно реализовано два дисковода, или дисковод D:, - где реализовано четыре дисковода.

В процедуре, модифицированной мной:
Код:
{1}	PUSH	AF
{2}	LD	HL,12225;Для V5.01 адрес: 12151.
{3}	CALL	{12}	;Прерывания работы микроконтроллера.
{4}	LD	A,(23830);Копия системного регистра.
{5}	XOR	1	;Выбор "противоположного" дисковода и
{6}	CALL	{11}	;эмуляция его индексных импульсов.
{7}	LD	A,(23830);Выбор текущего дисковода и
{8}	CALL	{11}	;эмуляция его индексных импульсов.
{9}	POP	AF
{10}	RET
{11}	LD	HL,697	;Для V5.01 адрес: 683
{12}	PUSH	HL
{13}	JP	15663
команда XOR 1 в строке 5 гарантированно переключает дисковод на "противоположный", и это обеспечивает снятие выбора. "Упрощение" этого алгоритма я не рекомендую: возможно он перестанет выполнять свою функцию для каких-то типов дисководов. Но сейчас в TFC версии 5 останов [мойх] дисководов работает наконец-то нормально.

По поводу использования ячейки "копия системного регистра": адрес для этой самой копии системного регистра, конечно же, может быть и другим. Но значение должно быть действительно копией, поскольку оно отправляется непосредственно в порт #FF подпрограммой ПЗУ TR-DOS по адресу 697. После того, как отработает
предложенная мной процедура, в порте #FF окажется точно такое же значение, как и до её вызова (только дисковод будет остановлен).


P.S. Извиняюсь за десятичные адреса - я изучал TR-DOS по книге П.Федина "Полное описание и полный дизассемблер TR-DOS", а там все адреса десятичные.