Цитата Сообщение от ZXMAK Посмотреть сообщение
Странную вещь наблюдаю в эмуляторе. При сбросе, спринтер дает команду #00 жесткому диску. Такой команды в ATA интерфейсе не существует.
Код, который производит вывод в порт находится по адресу #969F:

Код:
969F   LD E,#00
96A1   LD BC,#4153
96A4   OUT (C),E
96A6   HALT
никто не знает что это может быть?

Вот весь лог обмена с ATA контроллером от сброса до ошибки:
Код:
[23:55:07.322][VirtualMachine.runThreadProc][DEBUG] AtaPort.Write(HeadAndDrive, 0xA0)
[23:55:07.327][VirtualMachine.runThreadProc][DEBUG] AtaPort.Write(HeadAndDrive, 0xA0)
[23:55:07.328][VirtualMachine.runThreadProc][DEBUG] AtaPort.Read(CommandStatus) = 0x50
[23:55:07.328][VirtualMachine.runThreadProc][DEBUG] AtaPort.Write(SectorCount, 0x05)
[23:55:07.329][VirtualMachine.runThreadProc][DEBUG] AtaPort.Read(SectorCount) = 0x05
[23:55:07.329][VirtualMachine.runThreadProc][DEBUG] AtaPort.Write(CommandStatus, 0x00)
[23:55:07.331][VirtualMachine.runThreadProc][ERROR] ATA00: Unknown ATA command #00
[23:55:07.337][VirtualMachine.runThreadProc][DEBUG] AtaPort.Read(CommandStatus) = 0x51
[23:55:07.337][VirtualMachine.runThreadProc][DEBUG] AtaPort.Write(CommandStatus, 0xEC)
[23:55:07.338][VirtualMachine.runThreadProc][DEBUG] AtaPort.Read(CommandStatus) = 0x58
ATA00 - это адрес устройства на АТА шине, 00 - это мастер
нашёл *****код в файле autoide.asm.
Код:
NO_BUSY	LD	E,#05
	LD	BC,HDW_CNT
	OUT	(C),E
	LD	BC,#0010
	DJNZ	$
	DEC	C
	JR	NZ,$-3
	LD	BC,HDR_CNT
	IN	A,(C)
	CP	E
	JP	NZ,ABSENT

	LD	A,(IDEDEV)
	CP	CDROM
	JP	Z,NOHDD

	LD	E,#00		;NOP
	LD	BC,HDW_COM
	OUT	(C),E
вопрос не в том, что нет такой команды, а в том, что делает Альтера? возможно она перехватывает исполнение 0й команды и делает что-то там сама. маловероятно конечно, но мало ли. если нет, уберу эту хрень.