DprToLvt (PasToLvt)

Все о разработке ПО для ПК-01,02 "Львов" на современных платформах
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

b2m wrote:Что-то и мне тоже так кажется :)
Я, например, так уж исторически сложилось, не пользуюсь Дельфями. И ставить их, без особой нужды, вряд-ли буду. Поэтому помочь могу, в данном случае, только теоретически.
Спасибо и на том !
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Вообще-то модуль можно и к Си прикручивать... или нельзя!?.. но этого тоже никто не пробовал либо не захотел пробовать.... и мне никто ничего не сказал...

Вообщем, захотите...
http://sas.forumbb.ru/viewtopic.php?id=290#p2104
sadfsdfsdaf
Posts: 227
Joined: 07 Dec 2010, 16:54

Re: DprToLvt (PasToLvt)

Post by sadfsdfsdaf »

sas9568635 wrote:Вообще-то модуль можно и к Си прикручивать... или нельзя!?..
конечно можно, там fastcall. всё стандартное, вопросы, если возникнут, то только с совместным использованием системных API (tls, heap и т.п.).
sas9568635 wrote:но этого тоже никто не пробовал либо не захотел пробовать....
в своё время все уже "напробовались" (по крайней мере я так точно), проблемы подключить чужой код даже с нестандартным ABI (или форматами представления) у меня никогда не было. (hint: гуглить "user mode loader")


p.s. у меня винт рабочий пошабашил....

а вообще, тебе b2m всё верно расписал, так оно и есть. Если хочешь - сгенерирую текстовую трассу (на форум я достаточно выложил, чтобы "собрать требуемое"). Да, и ещё, есть тесты процессора, прогонял ? (я один тут выкладывал скомпилированным в lvt). Тесты на твоём модуле проходят без ошибок ?

p.p.s. Вот тебе "сухой прогон" ПЗУ
dry_run.zip
(8.5 KiB) Downloaded 1379 times
Точки останова на всей памяти, после срабатывания снимаются. (т.е. на каждой команде точка останова срабатывает только 1 раз). добейся совпадения листинга у себя, на своём модуле.

p.3.s. я удивлён, что всей загрузки машины всего 790 команд..... мнда.
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

sadfsdfsdaf,
С файлом Test.zip я вообще не понял чего делать?!!?...
А вот dry_run.zip, пожалуй возникла идея...
Спасибо!
sadfsdfsdaf
Posts: 227
Joined: 07 Dec 2010, 16:54

Re: DprToLvt (PasToLvt)

Post by sadfsdfsdaf »

sas9568635 wrote:С файлом Test.zip я вообще не понял чего делать?!!?...
1) запустить на выполнение test.lvt
2) пройти руками "по шагам"
3) варианта только 2, CPUER или CPUOK

листинг с адресами там есть (test.lst), ты ещё спрашивал - зачем он нужен и какого формата, вот - иди по нему и сверяйся.
8597 - всё плохо, 85A9 - тест ошибок не обнаружил.
в какой точке произошёл переход на 8597 - там и неверная эмуляция - в комментарии всё расписано.
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

sadfsdfsdaf wrote:
sas9568635 wrote:С файлом Test.zip я вообще не понял чего делать?!!?...
1) запустить на выполнение test.lvt
2) .................
Подожди... не газуй!.. :-)
Открывать чем?... "Башкирией"?...
открываю я "Башкирией" test.lvt он его грузит и появлется окно "Открыть" словно ждет другую часть программы.....
Что дальше?... Или у тебя оно по другому?..
Image
sadfsdfsdaf
Posts: 227
Joined: 07 Dec 2010, 16:54

Re: DprToLvt (PasToLvt)

Post by sadfsdfsdaf »

sas9568635 wrote:Подожди... не газуй!.. :-)
Открывать чем?... "Башкирией"?
а зачем? у Башкирии всё и так хорошо :-) открывать твоим дельфийским модулем.
файл test.lvt получился короче, чем в описателе. мой эмулятор его открывал (игнорировав отсутствие данных), а остальные проверяли на строгое соответствие заявленному размеру.

Причина в следующем - вот эти байты (после строки 817), ассемблер их не включил в готовый образ.

Code: Select all

   817 85B2             TEMPP:  DW      TEMP0   ;POINTER USED TO TEST "LHLD","SHLD",
            B485
                                                ; AND "LDAX" INSTRUCTIONS
                        ;
   820 85B4             TEMP0:  DS      1       ;TEMPORARY STORAGE FOR CPU TEST MEMORY LOCATIONS
   821 85B5             TEMP1:  DS      1       ;TEMPORARY STORAGE FOR CPU TEST MEMORY LOCATIONS
   822 85B6             TEMP2   DS      1       ;TEMPORARY STORAGE FOR CPU TEST MEMORY LOCATIONS
   823 85B7             TEMP3:  DS      1       ;TEMPORARY STORAGE FOR CPU TEST MEMORY LOCATIONS
   824 85B8             TEMP4:  DS      1       ;TEMPORARY STORAGE FOR CPU TEST MEMORY LOCATIONS
   825 85B9             SAVSTK: DS      2       ;TEMPORARY STACK-POINTER STORAGE LOCATION
                        ;
                        ;
                        ;
            86 B2       STACK   EQU     TEMPP+256       ;DE-BUG STACK POINTER STORAGE AREA
                        ;
                        END:
Откорректируй размер заголовка.

Code: Select all

Сравнение файлов TEST.OLD и TEST.LVT
00000012: BB B3
Впрочем, я честно не понимаю проблемы, особенно если грузить код руками в отладочном режиме, игнорируя заголовок.

Да, есть ещё один нюанс (тоже не относящийся к делу), Emulators3000 игнорирует команду HLT (поэтому на втором скриншоте ?SN ERROR).

P.S. Процитируем классиков марксизма-ленинизма:
Но если уж говорить о лени как о пороке, то, пожалуй, самая страшная ее разновидность - это леность ума.
Attachments
test.png
test.png (34.77 KiB) Viewed 10383 times
User avatar
liberation
Posts: 1405
Joined: 11 Aug 2008, 17:05
Location: Украина
Contact:

Re: DprToLvt (PasToLvt)

Post by liberation »

Тут неоднократно поднималась тема про эмуляцию флагов процессора, и как раз сегодня я обнаружил материал на эту тему [Расчет флагов].
Carthago delenda est, Carthaginem delendam esse
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

liberation wrote: как раз сегодня я обнаружил материал на эту тему
Спасибо ! Рассмотрю! но позже ! Я пока с проектом DprToLvt - тайм-аут где-то до 15 сентября...
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Уважаемый создатель эмулятора «Башкирия» (т.е. это тот который b2m :-) ) а также другие опытные пользователи эмулятора «Башкирия»: Имеется ли возможность настроить этот эмулятор так чтобы остановка (breakpoint)выполнения программы (т.е. в моем случае загрузки ПЗУ) производилась в зависимости от состояния регистров процессора? Мне это очень необходимо для сравнения работы ПЗУ моего эмулятора и других эмуляторов.
К примеру, у меня это так:
………..
if
(GetRgPSW=$066a) and
(GetrRgBC=$5a6a) and
(GetRgDE=$80cc) and
(GetRgHL=$80c0) and
(GetRgSP=$bf71) and
(GetRgPC=$814e)
then begin //SetRgPC($E9af);
RegisterView;
SetRegisterView(True);

end;
……
Проверка моего ПЗУ показала что у меня сбой идет где-то при начале объемной прорисовки «ПК-01»…

Существует ли толковая документация по реализации портов ввода-вывода?.. что куда входит и выходит и в зависимости от чего, какие цвета как устанавливаюся и т.д. ?.. В частности интересует порт $С1 ?
b2m
Posts: 115
Joined: 29 Mar 2012, 21:35
Contact:

Re: DprToLvt (PasToLvt)

Post by b2m »

sas9568635 wrote:Имеется ли возможность настроить этот эмулятор так чтобы остановка (breakpoint)выполнения программы (т.е. в моем случае загрузки ПЗУ) производилась в зависимости от состояния регистров процессора?
Нет, такой возможности нет. Можно лишь ставить точки останова на код и на доступ к данным (в окне дампа).
sadfsdfsdaf
Posts: 227
Joined: 07 Dec 2010, 16:54

Re: DprToLvt (PasToLvt)

Post by sadfsdfsdaf »

sas9568635 wrote:Существует ли толковая документация по реализации портов ввода-вывода?.. что куда входит и выходит и в зависимости от чего, какие цвета как устанавливаюся и т.д. ?.. В частности интересует порт $С1 ?
каков критерий толковости?

если интересует сам чип, есть на него полная документация из первоисточника - http://www.intel-assembler.it/PORTALE/4 ... 5A_PPI.pdf
впрочем, в базовой конфигурации (без аппаратных доработок) эмулировать его в таком виде - излишество, достаточно использовать содержимое "теневых регистров", коих завести по одному на каждый элемент адресного пространства ввода/вывода.

Сама же палитра (порт С1) расписана здесь - http://lvovpc.ho.ua/forum/viewtopic.php?f=2&t=154 (NeoSpectruman постарался)
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

sadfsdfsdaf wrote: Сама же палитра (порт С1) расписана здесь - http://lvovpc.ho.ua/forum/viewtopic.php?f=2&t=154 (NeoSpectruman постарался)
Блин... :-) Расписана ! :( А доступным (человеческим) языком это как?... Или Паскалем ?
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

«Перипилил» свои исходники под исходники Marat_best`а. Спасибо ему за выложенные польностью исходники, которое написаны имменно на Дельфи.
Успехи у меня есть. Правда тяжеловато и заморочливо. :-) а теперь внимание вопрос! :-)

Как максимально корректно «выйти» на запуск (на адрес) программы появившейся в памяти? Какие дейстивия необходимо сделать для ее корректного запуска в среде ПК-01?

Вариант 1. Эмулирую незаметную и максимально быструю...
Перегрузка, Bload “”,R подсовываю мнимый нулевой файл с адресом старта = 6000, «ожидаю» переход на 6000 (т.е. когда r_PC=6000)... - Далее «подсовываю» свою программу (набор команд) со среды Дельфи будто она работает в памяти ПК-01, начиная с адреса 6000.

Вариант 2. Эмулирую незаметную и максимально быструю...
Перегрузка, Def usr=6000: x=usr(x) «ожидаю» переход на 6000(т.е. когда r_PC=6000)... - Далее «подсовываю» свою программу (набор команд) со среды Дельфи будто она работает в памяти ПК-01,, начиная с адреса 6000.

Вообщем какой вариант и какой мнимый адрес запуска программы более подходящий для программы появившейся в памяти ПК-01 Львов?
Может есть что-то более рациональное или подходящее?
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Возник вот такой вопрос...
А что если в моем модуле скомпилировать программу (использующую процедуры КР580) как обычно в Exe-файл.... Далее из Exeшника “вычислить» и “выцепить» только нужный код программы (отсеивая форму, инициализации разные и т.д....
Насколько реально будет преобразовать команды процессора ИНТЕЛ (!!!или как там правильно назвать систему команд нынешних процесоров) "тот" код в КР580?
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests