PC-01 Lviv
http://pc01.lviv.ua/forum/

DprToLvt (PasToLvt)
http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=153
Page 11 of 15

Author:  sas9568635 [ 04 Aug 2012, 15:13 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
Что-то и мне тоже так кажется :)
Я, например, так уж исторически сложилось, не пользуюсь Дельфями. И ставить их, без особой нужды, вряд-ли буду. Поэтому помочь могу, в данном случае, только теоретически.
Спасибо и на том !

Author:  sas9568635 [ 04 Aug 2012, 15:16 ]
Post subject:  Re: DprToLvt (PasToLvt)

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

Вообщем, захотите...
http://sas.forumbb.ru/viewtopic.php?id=290#p2104

Author:  sadfsdfsdaf [ 04 Aug 2012, 19:46 ]
Post subject:  Re: DprToLvt (PasToLvt)

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


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

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

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

p.3.s. я удивлён, что всей загрузки машины всего 790 команд..... мнда.

Author:  sas9568635 [ 04 Aug 2012, 21:01 ]
Post subject:  Re: DprToLvt (PasToLvt)

sadfsdfsdaf,
С файлом Test.zip я вообще не понял чего делать?!!?...
А вот dry_run.zip, пожалуй возникла идея...
Спасибо!

Author:  sadfsdfsdaf [ 04 Aug 2012, 21:36 ]
Post subject:  Re: DprToLvt (PasToLvt)

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

листинг с адресами там есть (test.lst), ты ещё спрашивал - зачем он нужен и какого формата, вот - иди по нему и сверяйся.
8597 - всё плохо, 85A9 - тест ошибок не обнаружил.
в какой точке произошёл переход на 8597 - там и неверная эмуляция - в комментарии всё расписано.

Author:  sas9568635 [ 05 Aug 2012, 06:02 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
Quote:
С файлом Test.zip я вообще не понял чего делать?!!?...
1) запустить на выполнение test.lvt
2) .................
Подожди... не газуй!.. :-)
Открывать чем?... "Башкирией"?...
открываю я "Башкирией" test.lvt он его грузит и появлется окно "Открыть" словно ждет другую часть программы.....
Что дальше?... Или у тебя оно по другому?..
Image

Author:  sadfsdfsdaf [ 05 Aug 2012, 16:18 ]
Post subject:  Re: DprToLvt (PasToLvt)

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

Причина в следующем - вот эти байты (после строки 817), ассемблер их не включил в готовый образ.
Code:
   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:
Сравнение файлов TEST.OLD и TEST.LVT
00000012: BB B3
Впрочем, я честно не понимаю проблемы, особенно если грузить код руками в отладочном режиме, игнорируя заголовок.

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

P.S. Процитируем классиков марксизма-ленинизма:
Но если уж говорить о лени как о пороке, то, пожалуй, самая страшная ее разновидность - это леность ума.

Attachments:
test.png
test.png [ 34.77 KiB | Viewed 7497 times ]

Author:  liberation [ 24 Aug 2012, 14:19 ]
Post subject:  Re: DprToLvt (PasToLvt)

Тут неоднократно поднималась тема про эмуляцию флагов процессора, и как раз сегодня я обнаружил материал на эту тему [Расчет флагов].

Author:  sas9568635 [ 24 Aug 2012, 15:20 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
как раз сегодня я обнаружил материал на эту тему
Спасибо ! Рассмотрю! но позже ! Я пока с проектом DprToLvt - тайм-аут где-то до 15 сентября...

Author:  sas9568635 [ 06 Sep 2012, 19:59 ]
Post subject:  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 ?

Author:  b2m [ 06 Sep 2012, 23:14 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
Имеется ли возможность настроить этот эмулятор так чтобы остановка (breakpoint)выполнения программы (т.е. в моем случае загрузки ПЗУ) производилась в зависимости от состояния регистров процессора?
Нет, такой возможности нет. Можно лишь ставить точки останова на код и на доступ к данным (в окне дампа).

Author:  sadfsdfsdaf [ 09 Sep 2012, 12:08 ]
Post subject:  Re: DprToLvt (PasToLvt)

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

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

Сама же палитра (порт С1) расписана здесь - http://lvovpc.ho.ua/forum/viewtopic.php?f=2&t=154 (NeoSpectruman постарался)

Author:  sas9568635 [ 09 Sep 2012, 16:01 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
Сама же палитра (порт С1) расписана здесь - http://lvovpc.ho.ua/forum/viewtopic.php?f=2&t=154 (NeoSpectruman постарался)
Блин... :-) Расписана ! :( А доступным (человеческим) языком это как?... Или Паскалем ?

Author:  sas9568635 [ 24 Nov 2012, 13:19 ]
Post subject:  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 Львов?
Может есть что-то более рациональное или подходящее?

Author:  sas9568635 [ 29 Nov 2012, 17:02 ]
Post subject:  Re: DprToLvt (PasToLvt)

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

Page 11 of 15 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/