С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Селектор адреса ВТ1 с аппаратным умножителем ВР2 с прошивкой 0006. ВГ1 управляется пр. 0007.
Кстати неверно что на emuverse указана прошивка 0005. Пр. 0005 и 0003 используются когда нет ап. умножителя. Т.е. умножение идет программно при этих прошивках.
На Немигах 4.05 и 4.06 ап. умножение. Да и на 3.03 судя по схеме тоже.
И ошибка MUL при тесте TSTVM2 при ап. умножителе, а при программном возможно её нет.
- - - Добавлено - - -
Можно использовать программу TSTMD для правильной эмуляции дисководов.
- - - Добавлено - - -
И ещё баги.
В эмуляторе на пр.4.06.
Команда SH CON показывает память 3052Кб.
Команда SH МЕМ вылет в пульт.
Последний раз редактировалось MiX; 21.04.2018 в 19:56.
Мысль правильная, тем более что я так уже делал для МС-0515.
В аттаче сырые треки, полученные после форматирования дискеты через TSTMD.
- - - Updated - - -
Ещё один аттачмент, сырые треки после форматирования в программе MF.SAV.
Отличие только в первом секторе дорожки 00:
Код:0000000A: FF 17 -- правильное число секторов на дорожку, 23. ... 00000059: FF 17 -- правильное число секторов на дорожку, 23. 0000005A: FF 30 0000005B: FF 07 0000008A: 80 39 -- контрольная сумма 0000008B: FF 07 -- контрольная сумма
Последний раз редактировалось nzeemin; 21.04.2018 в 21:47.
Поразбирался с драйвером MX.SYS, который называет себя "ДРАЙВЕР ГМД ФОРМАТА MX40/80 МИКРОЦОС LTD. V2.2"
Ожидания были такие что он соответствует драйверам MX от ДВК, описанному тут: http://zx-pk.ru/threads/20541-kontro...programmy.html
Но оказалось что он скорее "по мотивам".
Дорожка всегда читается и пишется целиком от начала до конца.
Структура дорожки которую ожидает этот драйвер.
Читаются первые 2841 байта от индекса.
Все слова данных сектора, а также слово контрольной суммы, записываются в формате старший байт затем младший байт, что отличается от обычного представления слов в памяти (младший потом старший), поэтому после чтения сектора и перед записью выполняется SWAB над всеми словами.Код:Заголовок, 3 байта: Маркер 0363. Байт 0 (его можно рассматривать как старший байт от слова номера дорожки). Байт номер дорожки. Данные секторов, всего 11 секторов по 256+2 байт на сектор: 128 слов = 256 байт данные секторов Слово контрольной суммы, полученное обычным сложением всех слов сектора. Концевик 4 байта: 20 4F 54 01 (hex) Слово: номер дорожки * 2
Без концевика получается 3 + 11 * (256 + 2) = 2841 байт, именно столько читает драйвер, остальные байты до конца дорожки игнорируются (длина дорожки примерно 3125 байт).
При записи дорожки кроме заголовка и данных секторов пишется ещё 6 байт концевика.
А разве для MX не всегда так?
>Структура дорожки которую ожидает этот драйвер.
Есть отличия от ДВКшного MX? Я только в двух словах концевика отличия увидел, так они у разных mx.sys на двк тоже отличаются.
>что он скорее "по мотивам". ..... выполняется SWAB над всеми словами
А как иначе? В ДВК кнгмд аппаратно работает со словами, а в Немиге - с байтами.
У меня замечание к информации в emuverse по векторе прерывания 160006. Судя по листинге ПЗУ калькулятора Электроника МК-90, это вектор обработки прерывания от двойной ошибки шины в режиме HALT (в Немиге вызывает перезагрузку системы).
Код:160000: .WORD 000000 160002: .WORD 160016, 000340 160006: .WORD 160022, 000340 160012: .WORD 160030, 000340 160016: CLR R0 160020: BR 160034 160022: MOV #000002,R0 160026: BR 160034 160030: MOV #000004,R0 160034: TST @#000050 160040: BEQ 160050 160042: ADD @#000050,R0 160046: JMP (R0) 160050: MOV (SP),R1 160052: MOV #001000,SP 160056: MOV 160116(R0),R0 160062: MOV R0,R5 160064: ADD #000025,R0 ;адрес конца строки 160070: MOV #000006,R4 ;число цифр 160074: JSR PC,100032 ;вывод восьмеричного числа 160100: MOV R5,R0 160102: MOVB (R0)+,R2 160104: BEQ 160114 160106: JSR PC,120034 ;вывод символа r2 на экран 160112: BR 160102 160114: BR 160114 160116: .WORD 006236 ;строка "ОСТ ПО АДРЕСУ 000000" 160120: .WORD 006265 ;строка "ДВ ОШ КАНАЛА 000000" 160122: .WORD 006314 ;строка "ОШ ВЕК ПРЕРЫВ 000000"
piotr433, спасибо. По 160006 я опираюсь на информацию из ТО: http://www.emuverse.ru/wiki/%D0%9D%D...0/%D0%A2%D0%9E
При нажатии на кнопку "ПУСК" на передней панели на выводах
8, 12 микросхемы D40 формируются сигналы начального пуска, которые
устанавливают микросхемы управляющей памяти и системного контролле-
ра в начальное положение и запускают микропрограмму начального пус-
ка. Данная микропрограмма формирует обращение процессорного ядра к
ячейкам памяти с адресами 160006 и 160010, где читает и устанавли-
вает программный счетчик и слово состояния процессора соответственно.
nzeemin, Ещё 4 бага.
Курсор не всегда мигает.
Положение курсора выходит за экран.
Кнопка забой неправильно функционирует.
При включении опции serial 176500 выдаёт ошибку "Failed to open COM port (0x00000002).
nzeemin, А каков сейчас статус эмулятора?
То что я вижу:
4.06 не работает вообще (после ввода D снова выдает приглашение пульта)
4.05 пробует грузиться, но я не нашел ни одного образа где бы загрузка пошла дальше вывода "MD Handler".
3.03 грузится, но ведёт себя странно.
пробовал версию 1.0 от 08.06.2016
В эмуляторе сейчас главная проблема это понять как должны правильно должны работать прерывания, и реализовать это видение.
Это должно решить большинство остальных проблемы, включая курсор, звук и общую стабильность.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)