nedoPC.org

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



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
Запустить получилось самособранный odimount, с этим теперь все ок. Возникли другие вопросы - с каким монитором МХ запускает эту программу, m2? и где этот монитор хранится, в spmx.bin?
Мне же нужно к коду монитора добавить с адреса 0xd000 код sdbios_mx2.
Еще один момент нужно будет отследить, xsd область 0xe000-0xe7ff использует под работу с fat sd карты, и этот же участок памяти пересекается с буфером дисковода...


17 May 2016 22:37
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
По поводу вложения xsd_mx2.zip. Ну конфигурацию SpecialistFD.cfg я завёл, файл SD образа sd1.mmc я подставил. Дальше что смотреть? Запуск в мониторе по GD000? Описанные манипуляции выводят на экран Browser с непонятной цепочкой дескрипторов файлов. Что дальше то делать? Куда вставлен обработчик файловых функций?


17 May 2016 22:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Сорри за оффтоп... а чьи это рожи синие? :o

_________________
iLavr


17 May 2016 22:42
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
PVV wrote:
с каким монитором МХ запускает эту программу, m2? и где этот монитор хранится, в spmx.bin?
Мне же нужно к коду монитора добавить с адреса 0xd000 код sdbios_mx2.

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

2 килобайта не знаю где взять. Это всё занято:
Code:
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. Но она потом затрётся.


17 May 2016 23:01
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Lavr wrote:
Сорри за оффтоп... а чьи это рожи синие? :o

Слева направо: Vinxru, Fifan. Мне уже высказали комплименты. Но в новых версиях программ ODImounter и Standard Spetsialist Browser'е я дяденек удалил. :kruto:


17 May 2016 23:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
Lavr wrote:
Сорри за оффтоп... а чьи это рожи синие? :o

Слева направо: Vinxru, Fifan.

(с) Так вот ты какой, северный олень! :o ( анекдот... не обижайся :lol: )

Ну в общем правильно, что удалил... а то зело напоминает стенд "Их разыскивает милиция"... :mrgreen:

_________________
iLavr


17 May 2016 23:48
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Во-во и я такой не скромный, да и заметил что картинки грузятся долговато... Пусть нас не знаю в лицо.


17 May 2016 23:52
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
и заметил что картинки грузятся долговато...

Ну да, и я заметил на глаз, что картинки примерно в 3 Кбайт, если они BW... :wink:

_________________
iLavr


18 May 2016 00:01
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
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 попал в память МХ системы?


18 May 2016 02:55
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
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. Непонятная цепочка дескрипторов файлов это глюк:), я же обещал, что они будут...


18 May 2016 03:18
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
PVV wrote:
В МХ при запуске std программ должен загружаться требуемый для этой std программы монитор

Так и есть. Вот рабочий код для Специалиста_МХ2:
Code:
; запуск файла в "стандартном" режиме Специалиста_МХ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-диск, оттуда и запускать её потом.


18 May 2016 06:22
Profile
Doomed

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


18 May 2016 12:47
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
В RAMFOS вообще есть такая возможность, попасть в некий 'стандартный' монитор, получить его приглашение? Или же, надо загрузить некую программу, которая в себе будет содержать требуемый монитор?
У меня не сходится понимание, как тогда предполагалась работа с Vinxru's sdbios_ом в МХ?
Кто разместит код этого sdbios в ОЗУ?
Я думал, что все должно работать так- стартует RAMFOS, запускаем с ROM диска odimount, при запуске odimount_а RAMFOS_ом копируется соответствующий монитор, к которому приклеен код sdbios, и мы получаем рабочую связку- монитор, sdbios и наша программа, odimount в частности. Далее никто не мешает переключиться обратно в RAMFOS, и запускать MXDOS с нашего эмулятора дисковода...


18 May 2016 13:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
Я был абсолютно уверен, что RAMFOS в своем ROM диске или прямо в своем коде содержит несколько мониторов, которые загружаются, в зависимости от требований запускаемой программы, те это не так?! В каком ключе тогда упоминаются мониторы SP580, магик_ж2 в описании RAMFOS, что вызовы в них подправлены под измененную адресацию клавиатуры?

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

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

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

В общем-то это всё вроде как и написано в желтенькой брошюрке по RAMFOS...

_________________
iLavr


18 May 2016 13:09
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Всё так, как написал Lavr. А зачем для работы некой программы нам нужно использовать какой-то левый Монитор? В RAMFOS'е и так есть все стандартные вызовы, повторяющие стандартные подпрограммы. Вообще я стараюсь использовать свои проверенные подпрограммы и стандартные редко использую. Например, в ODIMounter'е применяются:
1. OutSymbol - вывод символа на экран;
2. OutText - печать строки текста;
4. SystemBeep - вывод звука через ВИ53;
5. CompareMem - сравнить области памяти;
6. Window - печать окна;
7. DecPrint - печать десятичного числа;
8. BytesRemove - перенос данных и другие.
Часть я позаимствовал в Loader'е, часть написал сам. По большому счёту RAMFOS не используется, да и зачем если и так все подпрограммы есть.


19 May 2016 00:25
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 9 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.