Эмулятор контроллера дисковода для Специалиста_МХ

Обсуждение советского компьютера Фахiвець / Специалист и его развитие

Moderator: Lavr

PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by PVV »

Запустить получилось самособранный odimount, с этим теперь все ок. Возникли другие вопросы - с каким монитором МХ запускает эту программу, m2? и где этот монитор хранится, в spmx.bin?
Мне же нужно к коду монитора добавить с адреса 0xd000 код sdbios_mx2.
Еще один момент нужно будет отследить, xsd область 0xe000-0xe7ff использует под работу с fat sd карты, и этот же участок памяти пересекается с буфером дисковода...
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by fifan »

По поводу вложения xsd_mx2.zip. Ну конфигурацию SpecialistFD.cfg я завёл, файл SD образа sd1.mmc я подставил. Дальше что смотреть? Запуск в мониторе по GD000? Описанные манипуляции выводят на экран Browser с непонятной цепочкой дескрипторов файлов. Что дальше то делать? Куда вставлен обработчик файловых функций?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by Lavr »

Сорри за оффтоп... а чьи это рожи синие? :o
iLavr
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by fifan »

PVV wrote:с каким монитором МХ запускает эту программу, m2? и где этот монитор хранится, в spmx.bin?
Мне же нужно к коду монитора добавить с адреса 0xd000 код sdbios_mx2.
Стандартный RAMFOS находится в файле spmx.rom, но лучше этот стандартный код не трогать. Можно только менять программы пользователя. Если изменится область 0000...3fff, то RAMFOS будет покацанный.
PVV wrote:Еще один момент нужно будет отследить, xsd область 0xe000-0xe7ff использует под работу с fat sd карты, и этот же участок памяти пересекается с буфером дисковода...
2 килобайта не знаю где взять. Это всё занято:

Code: Select all

Buffer1		equ 	#e400 				; буфер сектора для записи
Buffer2		equ 	#e800 				; буфер сектора для чтения
Можно процесс работы разделить по пунктам:
1. Загружается каталог с SD карты в область SDDir.
2. Далее идёт процесс сортировки файлов в каталоге. До этого бы сделать фильтрацию только по расширению odi (нам зачем другие файлы?) - потом сделаю.
3. Идёт процесс печати файлов на экран. Пока вводятся только 10 файлов, но можно организовать прокрутку. Да и я сделал по умолчанию только корневой каталог, а необходимо просмотреть всю SD карту.
4. Выбранный файл подгружается в память с #0000 частями, там затирается каталог (SDDir) по 25 кБайт за раз.
5. В контроллер дисковода (SPI память) при помощи функции ВГ93 записать сектор (1 кБайт) записываются 25 раз блоки.

Значит для работы с FAT и для каталога в начальном этапе можно использовать всю область #0000...#63ff. Но она потом затрётся.
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by fifan »

Lavr wrote:Сорри за оффтоп... а чьи это рожи синие? :o
Слева направо: Vinxru, Fifan. Мне уже высказали комплименты. Но в новых версиях программ ODImounter и Standard Spetsialist Browser'е я дяденек удалил. :kruto:
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by Lavr »

fifan wrote:
Lavr wrote:Сорри за оффтоп... а чьи это рожи синие? :o
Слева направо: Vinxru, Fifan.
(с) Так вот ты какой, северный олень! :o ( анекдот... не обижайся :lol: )

Ну в общем правильно, что удалил... а то зело напоминает стенд "Их разыскивает милиция"... :mrgreen:
iLavr
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by fifan »

Во-во и я такой не скромный, да и заметил что картинки грузятся долговато... Пусть нас не знаю в лицо.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by Lavr »

fifan wrote:и заметил что картинки грузятся долговато...
Ну да, и я заметил на глаз, что картинки примерно в 3 Кбайт, если они BW... :wink:
iLavr
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by PVV »

sdbios хоть оригинальный от Vinxru, хоть новый sdbios_mx2, должен как то размещать свой код в памяти и работать совместно с монитором. В МХ при запуске std программ должен загружаться требуемый для этой std программы монитор, по крайней мере я так себе этот процесс представляю, а в эмуляторе в файлах *.cpu есть записи типа m2_d400.mon, m1_d800.mon, m3_6800.mon. Это ведь те самые мониторы? Где они хранятся?
Или же, я поставлю вопрос иначе - у меня есть монитор с увеличенным размером(m2+sdbios_mx2), как этот 'новый' монитор интегрировать в МХ систему, что бы odimount мог обращаться по нужным sd_bios функциям? Проверять сейчас я все буду под эмулятором b2m.
Как сейчас odimount обращается к функциям sd_bios? как этот sd_bios попал в память МХ системы?
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by PVV »

fifan wrote:По поводу вложения xsd_mx2.zip. Ну конфигурацию SpecialistFD.cfg я завёл, файл SD образа sd1.mmc я подставил. Дальше что смотреть? Запуск в мониторе по GD000? Описанные манипуляции выводят на экран Browser с непонятной цепочкой дескрипторов файлов. Что дальше то делать? Куда вставлен обработчик файловых функций?
Так это же запускается реальная, фактичеки, sd карта, и работает с браузером, можно запускать файлы... образ sd карты можно любой дать, с любым набором файлов(только не забыть SPETS_BR.RKS или SHELL.RKS добавить в корень) и это на SD_MX2 интерфейсе. Можно и на реале проверить работу.

Если в коде поправить
aShellRks: .db "SPETS_BR.RKS",0
;aShellRks: .db "SHELL.RKS",0
на
;aShellRks: .db "SPETS_BR.RKS",0
aShellRks: .db "SHELL.RKS",0
то запустится оболочка SHELL.RKS от Vinxru.

Точка входа sdbios_mx2 на текущий момент 0xd5dd. Непонятная цепочка дескрипторов файлов это глюк:), я же обещал, что они будут...
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by fifan »

PVV wrote:В МХ при запуске std программ должен загружаться требуемый для этой std программы монитор
Так и есть. Вот рабочий код для Специалиста_МХ2:

Code: Select all

; запуск файла в "стандартном" режиме Специалиста_МХ2
StdFileRun	ld	a, #02				; включение ПЗУ
		ld	(#fff8), a
		ld	(#ffff), a			; переход в 3-й режим
		ld	hl, #0100
 	  	ld	de, #c000
LoopStd	  	ld	a, (hl)
 	  	ld	(de), a
 	  	inc	hl
 	  	inc	de
 	  	ld	a, h
 	  	cp	#14
 	  	jp	nz, LoopStd			; цикл копирования Монитора и Загрузчика
		ld	a, #c3
		ld	(#c450), a
		ld	a, #00
		ld	(#c451), a
		ld	a, #c8
		ld	(#c452), a			; запись мнемоники JMP #c800 по адресу #c450
		ld	a, #c3
		ld	(#c845), a
		ld	hl, (Start)
		ld	a, l
		ld	(#c846), a
		ld	a, h
		ld	(#c847), a			; запись мнемоники JMP Адес старта по адресу #c450
		call	ClearScr			; очистка экрана
		ld	a, #03				; ПЗУ выключено, 8 цветов
		jp	#c000				; переход в загрузчик с запуском программы
PVV wrote:Как сейчас odimount обращается к функциям sd_bios? как этот sd_bios попал в память МХ системы?
Ну его же как бы нет... Я же все обращения к sd bios закомментировал, работаю просто с готовым каталогом (только печатаю файлы с каталога). А вообще я под МХ не работал с SD картой. Но сам Vinxru говорил мне что это можно сделать изменив адреса ВВ55 в shell.rks. У меня был опыт загрузки всего 800 кБайтного odi файла под std, останавливался после загрузки каждого 25 кБайтного блока, проверял загруженный код с образом.
В случае SD_MX2 я думаю нужно поступить так. Организовать подпрограммы ввода каталога, открытия файла, чтения с файла с определённого адреса, запись в файл с определённого адреса. Это всё есть в ODImounter'е для SD контроллера от Vinxru. Отладка/загрузка cpu/i80 файлов в эмуляторе на начальном этапе. Потом готовая программа ляжет в ROM-диск, оттуда и запускать её потом.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by PVV »

Я был абсолютно уверен, что RAMFOS в своем ROM диске или прямо в своем коде содержит несколько мониторов, которые загружаются, в зависимости от требований запускаемой программы, те это не так?! В каком ключе тогда упоминаются мониторы SP580, магик_ж2 в описании RAMFOS, что вызовы в них подправлены под измененную адресацию клавиатуры?
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by PVV »

В RAMFOS вообще есть такая возможность, попасть в некий 'стандартный' монитор, получить его приглашение? Или же, надо загрузить некую программу, которая в себе будет содержать требуемый монитор?
У меня не сходится понимание, как тогда предполагалась работа с Vinxru's sdbios_ом в МХ?
Кто разместит код этого sdbios в ОЗУ?
Я думал, что все должно работать так- стартует RAMFOS, запускаем с ROM диска odimount, при запуске odimount_а RAMFOS_ом копируется соответствующий монитор, к которому приклеен код sdbios, и мы получаем рабочую связку- монитор, sdbios и наша программа, odimount в частности. Далее никто не мешает переключиться обратно в RAMFOS, и запускать MXDOS с нашего эмулятора дисковода...
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by Lavr »

PVV wrote:Я был абсолютно уверен, что RAMFOS в своем ROM диске или прямо в своем коде содержит несколько мониторов, которые загружаются, в зависимости от требований запускаемой программы, те это не так?! В каком ключе тогда упоминаются мониторы SP580, магик_ж2 в описании RAMFOS, что вызовы в них подправлены под измененную адресацию клавиатуры?
Их можно положить в ROM-диск самому, соблюдая его формат. В RAMFOS мониторов нет.
Это в эмуляторе "Специалист_МХ" Шевцова эти мониторы подгружаются сами, если нужно.
Да и то - это следует в начале прямо указать в специальном файле, сопровождающем исполняемый бинарник.

В реальном, железном "Специалист_МХ" с RAMFOS эти мониторы просто загружались с ленты в RАM-диск, и их можно было запустить с диска.
У них саморазворачивающийся формат и они записывают в ОЗУ копии бинарников ПЗУ на свои места, затирая RAMFOS .

Выход из них в RAMFOS только по полной перезагрузке по Reset.

В общем-то это всё вроде как и написано в желтенькой брошюрке по RAMFOS...
iLavr
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Эмулятор контроллера дисковода для Специалиста_МХ

Post by fifan »

Всё так, как написал Lavr. А зачем для работы некой программы нам нужно использовать какой-то левый Монитор? В RAMFOS'е и так есть все стандартные вызовы, повторяющие стандартные подпрограммы. Вообще я стараюсь использовать свои проверенные подпрограммы и стандартные редко использую. Например, в ODIMounter'е применяются:
1. OutSymbol - вывод символа на экран;
2. OutText - печать строки текста;
4. SystemBeep - вывод звука через ВИ53;
5. CompareMem - сравнить области памяти;
6. Window - печать окна;
7. DecPrint - печать десятичного числа;
8. BytesRemove - перенос данных и другие.
Часть я позаимствовал в Loader'е, часть написал сам. По большому счёту RAMFOS не используется, да и зачем если и так все подпрограммы есть.