Запись в #ffff - это переключение режима (0,1,2; для STD - другая ячейка) в Специалисте_МХ2. В реальном Специалисте_МХ такого порта нет. Согласен, что писать можно любое число, но только для #fffc и #fffe, а для #fffd - это переключатели RAM-дисков - нужно писать номер страницы.
Последний раз редактировалось fifan; 06.08.2013 в 11:02.
Верно однако! b2m, ты прав, извиняюсь. Из описания работы Специалиста_МХ2:
IOP + 1CH - 4 байта - U0, регистр режима (0...3)
или:
#fffc - 0-й режим - включение основной памяти, отключение RAM/ROM-дисков;
#fffd - 1-й режим - включение RAM-дисков;
#fffe - 2-й режим - включение ROM-дисков;
#ffff - 3-й режим - включение STD режима.
Переход из STD режима:
#f7fc - 0-й режим - включение основной памяти, отключение RAM/ROM-дисков;
#f7fd - 1-й режим - включение RAM-дисков;
#f7fe - 2-й режим - включение ROM-дисков.
---------- Post added at 18:43 ---------- Previous post was at 18:36 ----------
Да вроде верно:
1. переходим в STD режим;
2. пишим в #ffb0 байт;
3. считываем из #ffb0 байт;
4. сравниваем его с записанным и если равен (запись произошла), то переходим на запись пробела в ячейку вывода символа Специалист_МХ_, переход в 0-й режим;
5. если запись не произошла, то переходим на запись двойки в ячейку вывода символа Специалист_МХ2, переход в 0-й режим.
b2m, а вот какая разница между конфигурацией SpetsialistFD и SpetsialistMX2?
Оба должны грузить файл dos.rks по R с Loader'ом от HardWareMan. Первая конфигурация не грузит файл bios.bin с образа SD карты, вторая - грузит. Скриншоты в атаче.
Конфигурация SpecialistFD имела изначально только FlashDisk, а потом ты попросил добавить SD. А поскольку это было во времена, когда вы ещё не определились с адресом портов контроллера SD, то там так и осталось F100-F1FF.
Да, да. Там адреса SD контроллера пересекаются с портом программатора. Хотя почему-то в SpetsBrowser'е используется последовательно сначала считывание с Flash-диска, а потом и с SD карты (по S в приложенном файле ПЗУ запуск программы по GD000). Но там забиты адреса других портов:
А в Loadrer'е нужно посмотреть какие. А вот нашёл:;порт программатора для STD
PP0_STD equ #f004 ; порт A
PP1_STD equ #f005 ; порт B
PP2_STD equ #f006 ; порт C
PP3_STD equ #f007 ; порт РУС
SPIData equ #f100 ;
SPICtrl equ #f101 ;
SPIData equ #f000 ;
SPICtrl equ #f001 ;
У меня есть два файла dos.bin (без заголовка), в одном обращение к SD по адресам F100-F101, в другом FFF4-FFF5. Я помню, вручную сделал из одного другой. Вариант с адресами F000-F001 тоже вроде был, какое-то время. В том dos.rks, который есть у меня, тоже FFF4-FFF5, т.е. это для МХ/МХ2.
По хорошему для обращения к SD карте необходимо выбирать адреса #f000/#f001, но это для STD режима и они совпадают с адресами портов А и В дополнительного адаптера (для подключения программатора). В Специалисте_МХ2 для контроллера SD карты я забил адреса (/U3) #fff0/#fff1. Такие различные адреса требуют изменения ПО текущего (Loader'а от HardWareMan'а) и будущего (SpetsCommander). Если я запущу контроллер дисковода (я надеюсь) данные адреса необходимо будет сменить на /U2 (#fff4/#fff5). Ты, b2m, написал что использовал именно эти адреса для МХ2.
Вывод такой. Т.к. Loader (dos.rks) используется для загрузки системы только в режиме STD, то необходимо в нём поставить адреса #f000/#f001, как и задумывал автор. Это наверное, трудно сделать в эмуляторе (два устройства, один адрес), но на железке можно выбирать SD или Flash физически отключать ненужное.
---------- Post added at 19:08 ---------- Previous post was at 19:00 ----------
b2m, ещё, я хотел спросить, как в эмуляторе организована работа с образами дискет odi. Отдельные части odi файла считываются в память посекторно или есть особые точки в MX-DOSе для обращения к отельным процедурам считывания/записи c/на дискет. Вообще как организована эмуляция ВГ93.
Последний раз редактировалось fifan; 08.08.2013 в 17:13.
Если мы говорим о режиме STD компьютера MX2, то по этому адресу будет системный ППА. А если говорить о стандартном Специалисте, то загрузчик БИОСа там не имеет смысла, т.к. там у нас ПЗУ.
Можно многое сделать, но переключателя в эмуляторе пока действительно нет. Хотя можно и сделать.
Эмуляция ВГ93 сделана на уровне портов. Эмулируемая программа пишет в регистр команд команду чтения, а из порта данных считывает сектор побайтно. Единственное, что не реализовано - команда форматирования.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)