nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 04:54



Reply to topic  [ 88 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Эмулятор контроллера дисковода для Специалиста_МХ 
Author Message
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Lavr wrote:
Нет, Ваше непонимание работы МХа гораздо глубже...
RAMFOS по определению не умеет обращаться к дисководу. Это файловая OS, заточенная на работу
с RAM-диском.

В RAMFOS есть только подпрограмма начального загрузчика. Как и в большинстве дисковых ОС,
эта подпрограмма считывает с 0-дорожки дискеты в свою служебную область...

Как то противоречиво 'по определению не умеет обращаться к дисководу' и 'считывает с 0-дорожки дискеты', значит все же умеет...
Однако, в целом я суть RAMFOS понял...
НО вопрос с последовательностью действий остался.


05 May 2016 04:33
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
fifan wrote:
Как я хочу сделать. Некое ПО, например odimounter считывает блоками по 25 кБайт (на большую память Специалист_МХ практически нельзя рассчитывать) образ дискеты с SD карты во SPI Flash память (можно её я пока оставлю).

Это базовая идея, все так. Откуда возъмется это ПО(odimounter)? Мы его грузим с магнитофона, SD карты в std режиме, ROM диска? Это ПО будет выполняться в каком режиме std или MX? Я понимаю что все эти варианты возможны, но давайте определимся и пойдем дальше прорабатывать это ПО. Я этого хочу добиться, составить некий план работ и двигаться, а уже когда будет один из вариантов реализован, тогда и, при необходимости, реализовывать остальные.


05 May 2016 04:46
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Объясню ситуацию. Включаем комп (Специалист_МХ или Специалист_МХ2), радуемся заставке RAMFOS. Так условимся что у нас есть SD контроллер, но нет контроллера дисковода. Нашу запускаемую программу, назовём её НАША.COM пишем в ROM-диск пользователя, который мы лицезреем по клавише F6. Запускаем НАША.COM, та в свою очередь определяет наличие SD контроллера (смысл дальнейших действий не вижу без оного) и далее программа выводит список odi файлов, находящихся на SD карте. Выбираем файл, эмулятор монтирует образ и мы переходим в то место RAMFOS, где идёт определение наличия контроллера дисковода. Тут или обходим условие или, если мне не изменяет память пишем единицы на шину данных по адресу /U3. Всё, далее читаем руководство по работе в MX-DOS и радуемся голубовато-синему цвету экрана. Тут всё таки нужно в системе найти место, где происходит загрузка и исполнение запускаемого файла для того, чтобы найти и написать свои коды для размонтирования образа - а то, то что мы творили с "дискетой" не сохранится.
НАША.COM - это минимальное ПО. В своём SpetsCommnder'е я хочу сделать монтирование/размонтирование по запуску кнопкой ВК на файле odi. Это скриншот коммандера.

Image


05 May 2016 05:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
Как то противоречиво 'по определению не умеет обращаться к дисководу' и 'считывает с 0-дорожки дискеты', значит все же умеет...

Никакого противоречия я не вижу. BIOS практически любой современной машины умеет только загрузить boot-сектор и ничего более.
Точно также сделано и в "Специалист_МХ".

А манипуляции с файловой системой на диске возложена всегда на какую-то-DOS.
Ответ в полном соответствии Вашему вопросу.

В RAMFOS с дисками и характерными для них операциями ничего сделать нельзя.
Да и загрузчик по F6 появился лишь в поздних версиях RAMFOS.
В начальных там не было вовсе никакого загрузчика. У меня, к примеру, boot-loader отдельная
программа на ПЗУ-диске.
Ну не выпаивать же с платы 2 штуки РФ4 в два этажа из-за boot-loader-а?

_________________
iLavr


05 May 2016 05:33
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Отлично, именно это я и хотел услышать.
НАША.СОМ — пусть уже она будет OdiMount.COM. По поводу размонтирования. Пусть в момент монтирования на SD записывается признак(в сам образ, в отдельный файл, или в файл с именем этого образа, но другим расширением - .LOС), что данный образ примонтирован, а OdiMount.COM пусть занимается не только монтированием но и размонтированием. В SPI flash так же, помимо образа хранить название этого примонтированного образа, и все конфликты разруливать в OdiMount.COM. В этом случае любые сбои/сброс не страшны.


05 May 2016 05:47
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Ну вот и хорошо. Осталось выбрать контроллер. У меня от Vinxru с готовой файловой системой. Если PVV, ты предполагаешь писать программу, то необходимо для твоего контроллера (SD_MX2) написать что-то вроде ОС, ну хотя бы пока поиск и загрузка odi файлов.

Напомню, что у меня в odimounter'е чтение файла сделано по 25 кБайт это 800/25=32 раза. Читается сразу в PIC контроллер путём выставление команды "запись сектора" для ВГ93 потом идёт проверка того что записали с тем что осталось в памяти - выставление команды "чтение сектора". Чтобы знать куда писать контроллеру нужно заранее выставить номера сектора/дорожки, потом инкрементировать их. У меня в начале темы выставлен архив программы с новыми исходниками, а файлы cpu/i80 со старой версии. Пока постараюсь всё обновить и показать потом этот описанный мною процесс.


05 May 2016 07:32
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Так как по сути серьезной программной поддержки SD_MX2 в МХ/МХ2 нет, а есть только в std в виде лоадера от HardWareMan'а и адаптированного мною xsd, то получается нужно написать некий sdbios_mx2, по функцияи и их параметрам совместимый с sdbios от Vinxru. В таком случае ПО работающее с SD картой от Vinxru через sdbios, весьма вероятно будет работать и с SD_MX2. Я так и не получил ответ на вопрос- эмулятор b2m поддерживает ли SD от Vinxru? но похоже что нет. Тогда как SD_MX2 поддерживается, тогда можно будет заниматься отладкой этого ПО в эмуляторе.


05 May 2016 12:11
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Не обязательно подстраиваться под ПО от Vinxru. Необходимы только файловые процедуры вставить. У меня используются: загрузка каталога, открытие файла. Вот видео работы программы в эмуляторе от b2m, обращение к SD карте отключено. Используется специально подготовленный файл с каталогом. Это для отладки.



Здесь на видео последовательно показаны функции программы: инициализация SPI Flash памяти, ввод времени и даты, создание пустого имиджа, монтирование имиджа.

В эмуляторе b2m SD-MX2 поддерживается. Так что можно творить.


05 May 2016 22:12
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Сделал первую прикидку трансляции вызовов sd_bios от Vinxru для работы с SD_MX2. Пока делал понял, что asm вм80 забыл напрочь:(, так что код написан — не стреляйте в пианиста, он играет как умеет... кто захочет исправить/предложить варианты реализации, буду только приветствовать. Однако, на данном этапе, для проверки идеи, этого достаточно.
Все реализовано на xsd и sd_bios от Vinxru. Поддерживается, с ограничениями, только два вызова- запуск файла и прочитать список файлов, здесь-же смена каталога. Ограничение — shell.rks должен быть в корне, а не в папке BOOT. spets_br.rks от fifan_а запускается с 'правками' — в коде 'жестко' забит адрес вывоза SD_BIOS, а Vinxru реализовал возможность размещать таблицу вызовов в любом месте, с передачей в B адреса этой таблицы( LXI B, BiosEntry ; Точка входа SD BIOS), соотв я в коде исправил переходы на таблицу в sdbios_mx2, благо их всего 4 места по коду. Надо бы fifan_у доработать spets_br.rks для стандартизации...
Код сильно не тестировался, глюки быть должны... Из shell.rks spets_br.rks не запускается, а наоборот, запускается...
Дальше надо копать в сторону Odimount, запускать его в этой оболочке, смотреть какие вызовы нужны ему в sdbios_e, и их реализовывать.


Attachments:
xsd_mx2.zip [150.74 KiB]
Downloaded 274 times
10 May 2016 05:31
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Сейчас нет времени, но в ближайшие дни посмотрю твои вояния. Я вот наполовину написал драйвер дискеты для Commander'а на Специалист_МХ. Здесь подробности, что такое Commander (http://www.spetsialist-mx.ru/Soft/MXOS.rar).


11 May 2016 01:18
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Не пойму, как собрать OdiMount, и как его, затем, подкинуть в файловую систему для МХ в b2m? Что нужно сделать?
Attachment:
asm_odi.PNG
asm_odi.PNG [ 20.08 KiB | Viewed 6213 times ]

Перебросил комментарий SDDir, ошибок нет, а исполняемый файл не создается, только файл листинга.
Аналогичные действия с spetsbrowser.a80 - все ок, я получившийся бинарный файл в расширение rks переименовал, закинул на образ SD карты в b2m в std режиме, и все работает... А как его в МХ системе внедрить то-же не пойму.


16 May 2016 13:38
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Всё верно он пишет - нет файла test_cat_odi.bin. Это файл с тестовым каталогом, но в формате от Vinxru, а именно дескриптор файла состоит не из 16, а из 12 байт. Вот он. Только зачем нужен? Необходимо же низкоуровневый доступ к FATу, который нужно организовать программно. А я ставил этот файл именно для того, чтобы эмулировать каталог. В архиве ещё и файл fon_spets.bin (шрифт от HardWareMan), он тоже понадобится.

Я так до сих пор и не посмотрел твои файлы, извиняюсь, займусь на досуге.


17 May 2016 06:40
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
вопрос то был не об этом... процитирую сам себя с комментариями, возможно ранее плохо сформулировал вопросы...
PVV wrote:
Не пойму, как собрать OdiMount, и как его, затем, подкинуть в файловую систему для МХ в b2m? Что нужно сделать?

два вопроса:
первый - как собрать OdiMount, получить бинарный(исполняемый) файл?
второй - как собраный бинарник OdiMount подкинуть в файловую систему для МХ в b2m?

PVV wrote:
Attachment:
asm_odi.PNG

Перебросил комментарий SDDir, ошибок нет, а исполняемый файл не создается, только файл листинга.

на скриншоте две попытки сборки, первая неудачная, ругается на отсутствующий файл тестового каталога test_cat_odi.bin, я в исходнике нашел где этот файл используется:
;SDDir defs #0190 ; буфер для каталога SD карты
SDDir
*B test_cat_odi.bin

перебросил коммент:
SDDir defs #0190 ; буфер для каталога SD карты
;SDDir
;*B test_cat_odi.bin

вторая попытка сборки удачная, ошибок нет, а бинарный файл не создался! есть только файл odimounter.lst. fon_spets.bin я взял из папки с исходниками spets_br2/Source/ , соотв. на него ошибок и нет.

PVV wrote:
Аналогичные действия с spetsbrowser.a80 - все ок, я получившийся бинарный файл в расширение rks переименовал, закинул на образ SD карты в b2m в std режиме, и все работает... А как его в МХ системе внедрить то-же не пойму.

здесь я привел пример, что я механизм сборки понимаю, и делаю, вроде бы, все правильно.

Решил повторить действия по сборке, только в linux:
.../специалист/fdd/ODImounter$ wine ASM80WIN.EXE ODImounter.a80
Aссемблер 512 для Z80 V2.02 Win (c)1995,96,97,99 Медноногов В.C.
Проход:01 Ошибок:00
Проход:02 Ошибок:00
Кодовый блок: 20480..29485
Формат объектного кода: двоичный

и! появился файл odimounter.bin, так что вопрос номер 1 отпал, с виндой буду разбираться отдельно, а второй - как собраный бинарник OdiMount подкинуть в файловую систему для МХ в b2m остался.

я просмотрел какие вызовы в sd_bios использует odimounter и начал их прорабатывать, но пока нет программы из которой эти вызовы можно трассировать отлаживать код проблемно. В odimounter адрес точки входа в sd_bios аналогично spetsbrowser забит жестко, я его соот. поправил.


17 May 2016 12:40
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Используется компилятор для Z80 asm80win. Его вызов: asm80win, тогда нужно указать компилируемый файл с расширением a80 или сразу писать в командной строке: asm80win файл.a80.
Создаются два файла: файл.bin и файл.lst. Если создаётся только последний, то в нём нужно искать ошибки.
В эмуляторе с соответствующей поддержкой SD контроллера для запуска в MX режиме нужно загружать (File/Open/AVSh files) файл.cpu, который строится по принципу:
0000
0000
что означает адрес загрузки и адрес запуска (соответственно с 0000). Наш откомпилируемый файл.bin необходимо переименовать в файл.i80. Оба файла cpu и i80 должны храниться в одном директории (я клоду в emu/Specialist).
В любом случае необходимо смотреть как создаётся файл в листинге файл.lst. Если в начале файла a80 написать аргументы *L+ и *D-, то файл листинга будет выглядить так:
Code:
#F306іCD03C8  і00:0017            call   #C803            ; Ожидание ввода с клавиатуры

шестнадцатеричный адрес программы код программы номер строки мнемокод комментарий.
В процессе отладки необходимо добиться ноль ошибок, это ясно. При запуске файла в эмуляторе могут быть различные глюки. Я допустим не соблюдал адреса расположения кода, буфера под переменные и др. В частности компилятор под Z80, а эмулятор знает коды только 8080 соответственно и в неисполняемых кодах несоответствия процессоров эмулятор тупо встаёт.

Вот структура кода odimount.a80:
org #6400
программы, подпрограммы, тексты
...
SD_BIOS equ #8d1b
тут описываются переменные с адреса #8d1b и далее, можно вплоть до #9000. С начального адреса у меня расположен буфер под считанные данные с имиджа, в частности буфер под кусок имиджа я выделил в 25 кБайт - BufferSD. Еще есть буфера с адресов #e400 и #e800 (Buffer1 и Buffer2) - специально отведенное место для нужны работы с контроллером дисковода.

Из видео несколько постов назад видно, что на экран выводятся счётчики дорожек и секторов - это необходимо для отладки, в конечной программе нужно исключить т.к. процесс монтирования по времени растягивается. Без этого вывода на экран монтирование обоих образов (2*800 кБайт) занимает приблизительно около 10 секунд.


Last edited by fifan on 17 May 2016 22:02, edited 1 time in total.



17 May 2016 19:52
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Для отладки в эмуляторе b2m я поступаю так. Чтобы узнать состояние регистров в определённом участке программы я тупо останавливаю программу, например для ввода символа. Программа тормозится, я захожу в отладчик (View/Start debugger/F1) и вижу не только состояние регистров, но и исполняемый код, всю память (RAM/ROM-диски, основную память, видеопамять).


17 May 2016 22:00
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 88 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 13 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.