Спасибо и на том !b2m wrote:Что-то и мне тоже так кажется
Я, например, так уж исторически сложилось, не пользуюсь Дельфями. И ставить их, без особой нужды, вряд-ли буду. Поэтому помочь могу, в данном случае, только теоретически.
DprToLvt (PasToLvt)
-
sas9568635
- Posts: 372
- Joined: 20 Apr 2012, 16:00
- Location: Конотоп
Re: DprToLvt (PasToLvt)
-
sas9568635
- Posts: 372
- Joined: 20 Apr 2012, 16:00
- Location: Конотоп
Re: DprToLvt (PasToLvt)
Вообще-то модуль можно и к Си прикручивать... или нельзя!?.. но этого тоже никто не пробовал либо не захотел пробовать.... и мне никто ничего не сказал...
Вообщем, захотите...
http://sas.forumbb.ru/viewtopic.php?id=290#p2104
Вообщем, захотите...
http://sas.forumbb.ru/viewtopic.php?id=290#p2104
-
sadfsdfsdaf
- Posts: 227
- Joined: 07 Dec 2010, 16:54
Re: DprToLvt (PasToLvt)
конечно можно, там fastcall. всё стандартное, вопросы, если возникнут, то только с совместным использованием системных API (tls, heap и т.п.).sas9568635 wrote:Вообще-то модуль можно и к Си прикручивать... или нельзя!?..
в своё время все уже "напробовались" (по крайней мере я так точно), проблемы подключить чужой код даже с нестандартным ABI (или форматами представления) у меня никогда не было. (hint: гуглить "user mode loader")sas9568635 wrote:но этого тоже никто не пробовал либо не захотел пробовать....
p.s. у меня винт рабочий пошабашил....
а вообще, тебе b2m всё верно расписал, так оно и есть. Если хочешь - сгенерирую текстовую трассу (на форум я достаточно выложил, чтобы "собрать требуемое"). Да, и ещё, есть тесты процессора, прогонял ? (я один тут выкладывал скомпилированным в lvt). Тесты на твоём модуле проходят без ошибок ?
p.p.s. Вот тебе "сухой прогон" ПЗУ Точки останова на всей памяти, после срабатывания снимаются. (т.е. на каждой команде точка останова срабатывает только 1 раз). добейся совпадения листинга у себя, на своём модуле.
p.3.s. я удивлён, что всей загрузки машины всего 790 команд..... мнда.
-
sas9568635
- Posts: 372
- Joined: 20 Apr 2012, 16:00
- Location: Конотоп
Re: DprToLvt (PasToLvt)
sadfsdfsdaf,
С файлом Test.zip я вообще не понял чего делать?!!?...
А вот dry_run.zip, пожалуй возникла идея...
Спасибо!
С файлом Test.zip я вообще не понял чего делать?!!?...
А вот dry_run.zip, пожалуй возникла идея...
Спасибо!
-
sadfsdfsdaf
- Posts: 227
- Joined: 07 Dec 2010, 16:54
Re: DprToLvt (PasToLvt)
1) запустить на выполнение test.lvtsas9568635 wrote:С файлом Test.zip я вообще не понял чего делать?!!?...
2) пройти руками "по шагам"
3) варианта только 2, CPUER или CPUOK
листинг с адресами там есть (test.lst), ты ещё спрашивал - зачем он нужен и какого формата, вот - иди по нему и сверяйся.
8597 - всё плохо, 85A9 - тест ошибок не обнаружил.
в какой точке произошёл переход на 8597 - там и неверная эмуляция - в комментарии всё расписано.
-
sas9568635
- Posts: 372
- Joined: 20 Apr 2012, 16:00
- Location: Конотоп
Re: DprToLvt (PasToLvt)
Подожди... не газуй!..sadfsdfsdaf wrote:1) запустить на выполнение test.lvtsas9568635 wrote:С файлом Test.zip я вообще не понял чего делать?!!?...
2) .................
Открывать чем?... "Башкирией"?...
открываю я "Башкирией" test.lvt он его грузит и появлется окно "Открыть" словно ждет другую часть программы.....
Что дальше?... Или у тебя оно по другому?..

-
sadfsdfsdaf
- Posts: 227
- Joined: 07 Dec 2010, 16:54
Re: DprToLvt (PasToLvt)
а зачем? у Башкирии всё и так хорошо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 (34.77 KiB) Viewed 10383 times
- liberation
- Posts: 1405
- Joined: 11 Aug 2008, 17:05
- Location: Украина
- Contact:
Re: DprToLvt (PasToLvt)
Тут неоднократно поднималась тема про эмуляцию флагов процессора, и как раз сегодня я обнаружил материал на эту тему [Расчет флагов].
Carthago delenda est, Carthaginem delendam esse
-
sas9568635
- Posts: 372
- Joined: 20 Apr 2012, 16:00
- Location: Конотоп
Re: DprToLvt (PasToLvt)
Спасибо ! Рассмотрю! но позже ! Я пока с проектом DprToLvt - тайм-аут где-то до 15 сентября...liberation wrote: как раз сегодня я обнаружил материал на эту тему
-
sas9568635
- Posts: 372
- Joined: 20 Apr 2012, 16:00
- Location: Конотоп
Re: DprToLvt (PasToLvt)
Уважаемый создатель эмулятора «Башкирия» (т.е. это тот который 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 ?
К примеру, у меня это так:
………..
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 ?
Re: DprToLvt (PasToLvt)
Нет, такой возможности нет. Можно лишь ставить точки останова на код и на доступ к данным (в окне дампа).sas9568635 wrote:Имеется ли возможность настроить этот эмулятор так чтобы остановка (breakpoint)выполнения программы (т.е. в моем случае загрузки ПЗУ) производилась в зависимости от состояния регистров процессора?
-
sadfsdfsdaf
- Posts: 227
- Joined: 07 Dec 2010, 16:54
Re: DprToLvt (PasToLvt)
каков критерий толковости?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)
Блин...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)
«Перипилил» свои исходники под исходники 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 Львов?
Может есть что-то более рациональное или подходящее?
Успехи у меня есть. Правда тяжеловато и заморочливо.
Как максимально корректно «выйти» на запуск (на адрес) программы появившейся в памяти? Какие дейстивия необходимо сделать для ее корректного запуска в среде ПК-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)
Возник вот такой вопрос...
А что если в моем модуле скомпилировать программу (использующую процедуры КР580) как обычно в Exe-файл.... Далее из Exeшника “вычислить» и “выцепить» только нужный код программы (отсеивая форму, инициализации разные и т.д....
Насколько реально будет преобразовать команды процессора ИНТЕЛ (!!!или как там правильно назвать систему команд нынешних процесоров) "тот" код в КР580?
А что если в моем модуле скомпилировать программу (использующую процедуры КР580) как обычно в Exe-файл.... Далее из Exeшника “вычислить» и “выцепить» только нужный код программы (отсеивая форму, инициализации разные и т.д....
Насколько реально будет преобразовать команды процессора ИНТЕЛ (!!!или как там правильно назвать систему команд нынешних процесоров) "тот" код в КР580?
Who is online
Users browsing this forum: No registered users and 0 guests

