Цитата Сообщение от SYR-ALEX Посмотреть сообщение
Прочтите тему ещё раз . По которой схеме собирали ? Какие дисководы использовали ?
Прочитал и не раз. толку =0. внятного ответа нет, правильного - тем более. схемы пробовал все, благо на плис оно просто, дисководы тоже все что есть в наличии. без костылей ничего не работает. пришлось как всегда разбираться самому.
краткое ИТОГО - несмотря на то что в железе есть все для нормальной работы без костылей - в имеющемся софте оно не поддержано никак. поэтому приходится использовать костыль в виде #FFF1, с ним софт работает, но постоянно крутящийся двигатель дисковода меня несколько напрягает (а выключать его некому - костыль в софте не поддержан)

далее - программа рекалибровки для дисководов с DC - полумера. простой пример - запускаем MX_DOS_4.EXE с целью форматнуть дискету - оно говорит "диск защищен", вытаскиваем дискету, снимаем защиту, суем обратно - и приплыли - "нет дискеты". потому как в этой программе рекалибровки нет. где и как еще это может вылезти - предсказать не возьмусь.

ну да ладно. если интересно - вот мой вариант патча ПЗУ (по количеству байт совпадает с оригиналом, включает в себя рекалибровку и костыль, у меня стабильно работает)
на основе исходника отсюда:
https://zx-pk.ru/threads/18006-spets...l=1#post966377

Код:
MK1	  	ld	b, a
 	  	ld	a, #01
 		ld	(#fff1), a			; включить мотор
		ld	(Cek), a			; сектор 1
 	  	call	#C891				; ждем отсутствия занятости контроллера
		ld	a,#58				; команда step in
		call	#C887                           ; посылаем команду и ждем выполнения (проверить что по адресу #C887 все нормально!)
		call	#C885				; команда восстановления
                xor	a
 	  	ld	(SID), a			; установить сторону диска =0

; подпрограмма чтения секторов
; вход: [HL] - адрес буфера

		ld	hl, Dos				; куда грузить
 		ld	a, #90				; m=1 - код чтения группы секторов
VOK		ld	(Kom), a			; запустить команду
VOU		ld	a, (Coc)			; ждать начала выполнения команды
 		rla					; выделить бит готовности НГМД
 		ret	c				; если нет
 		rra
 		rra					; выделить бит ЗАНЯТО
 		jp	nc, VOU				; если еще нет
 		ld	c, #13				; (B+1) - число блоков по 256 байтов

;ПП выдачи команды

BAP		ld	(ZAP), a			; запрос готовности байта
 		ld	a, (Dan)			; принять байт
 		ld	(hl), a				; и в буфер
 		inc	l				; шаг в буфере
 		jp	nz, BAP				; если не конец блока буфера
 		inc	h				; перейти на следующий блок
 		dec	c				; проверить длину фрагмента
 		jp	p, BAP
		ld	a, (Coc)
 		xor	#01                             ; выставить флаги, если все нормально - будет Z
 		ld	a, #d0				; и прервать работу
 		ld	(Kom), a			; контроллера
 		jp	nz, T0C				; если ошибка чтения
 		dec	hl				; проверить опознаватель
 		ld	a, (hl)
 		dec	hl
 		inc	(hl)
 		cp	(hl)
 		jp	nz, T0C				; ошибка
 		ld	a, b
 		call	Dos				; если да
 		ret

; подпрограмма переключения дисководов
;M0D		ld	a, (#C7FD)
; 	  	xor	#01
; 	  	ld	(#C7FD), a			; номер дисковода
; 	  	ld	(#fff3), a			; номер дисковода
;LC885 	  	ld	a, #08                          ; надо 08 или 09-0a-0b, не 01
;LC887 	  	ld	(Kom), a			; регистр команды
;LC88A 	  	ld	a, (Kom)			; регистр состояния
; 	  	rra					; сдвиг вправо аккумулятора
; 	  	jp	nc, LC88A                       ; ждем busy
;LC891 	  	ld	a, (Kom)			; регистр состояния
; 	  	rra
; 	  	jp	c, LC891                        ; ждем !busy;
; 	  	ret
Далее - по схеме отсюда:
https://zx-pk.ru/threads/18006-spets...l=1#post966226

если перемычку поставить в положение DC - то состояние дисковода перестает отслеживаться, при включении мотора по #FFF1 по цепи 8.1 на 5 ногу D9.2 прилетает 0 и состояние цепи 22 перестает иметь значение.

Ну и чтобы два раза не вставать - дисковод 1.2М (5" 360rpm) с кварцем 9.6МГц почти работает. то есть чтение и запись в MXDOS - без проблем, форматирование - на 2МГц тактовой виснет, на 2.5 - работает.

попутные наблюдения - MX_DOS_4.EXE - не работает на Z80, виснет после первой дорожки. на 8085 все ок.

- - - Добавлено - - -

Цитата Сообщение от fifan Посмотреть сообщение
Извини за задержку, замотался. Просматриваю исходники. Удаляем сейчас неактуальные подпрограммы. Выложу код позже.

- - - Добавлено - - -

Всё, сделал. Прошивай. Мапер МХ.

Странно, но в эмуляторе по F6 не читается дискета, а тупо окрашивается экран синим.
Наверное пока не прошивай, я вставляемые коды наверное в прошивку неправильно вставил.

Нет, ничего хорошего не происходит - в эмуляторе всё виснит. На такое я пойтить не могу (из Джентльменов удачи).
можно тупой вопрос?
мне кажется или вот здесь
https://zx-pk.ru/threads/18006-spets...l=1#post966378

Код:
MK1	  	pop	af
		call	RKALIBR
		push	af
перепутаны push и pop?