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

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

Author:  Zelya [ 02 Aug 2012, 14:36 ]
Post subject:  Re: DprToLvt (PasToLvt)

Code:
Код Delphi

Procedure NOP;
begin
DelayBfC;// старт отсета длительности подобное включению секундомера
izmRgPC(+1);
RegisterWiewOfCommand;
DelayEfC(4);end;// проверить прошло ли время со старта равное 4 цикла или еще задержать
Это уже слишком :shock:

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

Quote:
Тема предсказуемо заглохла,
Не получал нужных мне ответов ! Вот поэтому здесь она заглохла!
Quote:
но работы тем не менее продолжаются. Специально обученный спам-робот принес нам относительно .... свежую сводку с фронтов борьбы за урожай:
1. А вот там я получаю нужные мне ответы!
2. А ты поисчи... - еще найдешь!... и не одном форуме!... А это что... кого-то задевает что-ль..?
Quote:
Об эмуляторе.
Просто написать эмулятор старого процессора (старого компьютера) не представляет никакого интереса, так как их немало написано в т.ч. для ПК-01 Львов и никого этим не удивишь, и себя любимого тоже. А вот сделать так, как я хочу, т.е. использовать Дельфи для написания программ и компиляции под ПК-01 Львов (это словно в ПК-01 установлена Дельфи и пишешь проги для нее же) вот это интересно! Вот такого еще никто не реализовывал насколько я знаю.
Почему именно ПК-01 Львов?.. – А Это мой первый компьютер. А первый компьютер ,как первая любовь, не забывается…. :-)
Странное отношение к моему модулю и моей теме (и ко мне)! Убеждают меня, что модуль никому не нужен, да еще и написанный на дельфи... тем не менее настраивают "Специально обученный спам-робот" на поиски сообщений связанных с этим модулем!... а также делают цитаты из других форумов моих же сообщений СЮДА!!!?!?!?!?
То ли лыжи не едут... то ли я чего-то недопонимаю!???!!....

Author:  sas9568635 [ 03 Aug 2012, 07:50 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
Это уже слишком :shock:
А что именно "слишком"?...
Для команды НОП такую задержку делать?... Что-ль?
Или само устройство задержки?...

Author:  b2m [ 03 Aug 2012, 10:04 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
старт отсета длительности подобное включению секундомера
Это лишнее. Слишком накладно инициализировать таймер каждую команду.
Quote:
izmRgPC(+1);
Не совсем понятна необходимость отслеживать РС, ведь программа выполняется кодом, скомпилированным Дельфи. Всё равно по адресу РС реальной программы/данных нет.
Quote:
RegisterWiewOfCommand;
Это я не понял, но "вид" в переводе на английский - View.
Quote:
проверить прошло ли время со старта равное 4 цикла или еще задержать
И ещё раз: realtime-задержки под виндой - это фикция. Твой процесс не будет выполняться эксклюзивно. Поэтому во всех эмуляторах работа в течение какого-то количества тактов идёт на максимальной скорости, а по достижении некоторого количества тактов сравнивается реальное время и эмулируемое, после чего делается задержка на разницу этих времён. Большее количество тактов приводит к рывкам в эмуляции, но т.к. задержка более длинная, больше вероятность того, что винда более точно выполнит эту задержку. И наоборот, если задержка короткая, то винда не гарантирует её точность, и как следствие - также появляются рывки в эмуляции. Максимальная точность таймера в винде (а это Multimedia Timer) 1 миллисекунда, что при частоте 2МГц соответствует 2000 тактов. Т.е. меньше, чем 2000 тактов за раз, эмулировать смысла нет.

Author:  Zelya [ 03 Aug 2012, 10:30 ]
Post subject:  Re: DprToLvt (PasToLvt)

sas9568635
Quote:
И ещё раз: realtime-задержки под виндой - это фикция.
Именно это я и пытаюсь сказать последние несколько постов в этой теме.

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

Quote:
Это лишнее. Слишком накладно инициализировать таймер каждую команду.
А вы видели как реализован таймер?... Я не думаю что накладно, да и я проверял осуществляются ли задержки команд, т.е. вкладывается ли реализация команды в свое кол-во циклов. На нармальной скорости многие команды вкладываются в предоставленные им циклы. И это мне достаточно! Я не стремлюсь сделать идеал! Как в том анекдоте "Грузинская школа:Сколко будетъ дважды-два? ...правылно Гоги, гдэ-то семъ, восемъ, иногда дэвять..." :-)
Quote:
Не совсем понятна необходимость отслеживать РС, ведь программа выполняется кодом, скомпилированным Дельфи. Всё равно по адресу РС реальной программы/данных нет.
В модуль реализован (УЖЕ!) эмулятор который использует ЭТИ ЖЕ команды - ЭТО ДЛЯ НЕГО !
т.е. вот так вот:
Code:
........................
// Выбор и запуск команды
Case com_ of
{0x}
$00:NOP; $01:LXIB(w1); $02:STAXB; $03:INXB; $04:INRB;
$05:DCRB; $06:MVIB(b2); $07:RLC; $08:NOP08; $09:DADB;
$0A:LDAXB; $0B:DCXB; $0C:INRC; $0D:DCRC; $0E:MVIC(b2);
.................
Quote:
RegisterWiewOfCommand;
Quote:
Это я не понял, но "вид" в переводе на английский - View.
1.Уже исправленно. :-) Ну неумею я как-то сразу внимательно и без ошибок! :-)
2. Вызывает процедуру нужен ли вывод Регистров в форму... проверяет флаг включения вывода регистров в форму после каждой команды... выводит в форму...
ну иль не выводит... :-) просто возврат!
Quote:
И ещё раз: realtime-задержки под виндой - это фикция. Твой процесс не будет выполняться эксклюзивно. Поэтому во всех эмуляторах работа в течение какого-то количества тактов идёт на максимальной скорости, а по достижении некоторого количества тактов сравнивается реальное время и эмулируемое, после чего делается задержка на разницу этих времён. Большее количество тактов приводит к рывкам в эмуляции, но т.к. задержка более длинная, больше вероятность того, что винда более точно выполнит эту задержку. И наоборот, если задержка короткая, то винда не гарантирует её точность, и как следствие - также появляются рывки в эмуляции. Максимальная точность таймера в винде (а это Multimedia Timer) 1 миллисекунда, что при частоте 2МГц соответствует 2000 тактов. Т.е. меньше, чем 2000 тактов за раз, эмулировать смысла нет.
Честно говоря я очень слабо понял о чем речь... видимо еще "не доплыл" до этого... :-) и опять же : а ВЫ видели процедуры зажержки какие я использую?... И если они даже очень приблизительны, НО в каждой команде они, я думаю они сами будут покрывать "свои грехи" т.е.погрешности так как программы это сотни и тысячи таких команд... Вообщем у меня рывков не замечается т.е. ЭТО то что нужно!
Мой встроенный эмулятор, это для того чтобы можно было испытовать программы в "Приблизительном виде", т.е он и не должен быть проффесиональным, а для запуска и ИСПОЛЬЗОВАНИЯ можно ведь использовать и проффесиональные эмуляторы, ну например, "Башкирия" :-) :P
Вообщем все пока так! А делее видно будет! Тут главная проблема что ПЗУ не запускается! Вот где головняк! А это все мелочи.

Author:  Zelya [ 03 Aug 2012, 14:43 ]
Post subject:  Re: DprToLvt (PasToLvt)

sas9568635
Ваш подход не верен в том, что вы ставите паузу на каждую команду. Прогармма, исполняемая в Винде не может манипулировать такими маленькими задержками. Более того, это очень напряжно по ресурсам. Дмитрий предлагает Вам классическое решение. Вы не должны эумлировать команды в риалтайме. Вам нужно собрать очередь из команд, скажем на 50 000 тактов, и проэмулировать их за период времени 20 мс.

Author:  b2m [ 03 Aug 2012, 15:48 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
исполняемая в Винде не может манипулировать такими маленькими задержками
Вообще-то может, но тогда будет 100% загрузка процессора.

Author:  Zelya [ 03 Aug 2012, 16:11 ]
Post subject:  Re: DprToLvt (PasToLvt)

b2m
Ну, во-первых, ось под себя будет процессорное время забирать. Так что даже если все остальное отдать одному процессу, глюки все равно будут.
А во-вторых, выполнение процедур виндовой программы (как и эмуляционных, так и таймерных) не знаю еще сколько времени займет. Тут от компилятора зависит.

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

Zelya и b2m:
Может?!... не может?!...
У меня он грузит процессор на 50%, процессор АТОМ450… Выложу черновик посмотрите как оно у Вас будет….
В эмуляторе это сделать можно.. а вот как это сделать в командах Дельфи - ума не приложу… да и не вижу я пока в это необходимости !
А вообще, лучше бы мне помогли разобраться почему у меня ПЗУ не грузится нормально, вот чем соль?... Поможете?... Черновик на днях выложу…
Или опять на Дельфи гнать будете? :-) И чем вам всем Дельфи насолила ? :-) :P

Author:  sadfsdfsdaf [ 03 Aug 2012, 22:37 ]
Post subject:  Re: DprToLvt (PasToLvt)

Quote:
А вообще, лучше бы мне помогли разобраться почему у меня ПЗУ не грузится нормально, вот чем соль?... Поможете?... Черновик на днях выложу…
Или опять на Дельфи гнать будете? :-) И чем вам всем Дельфи насолила ? :-) :P
Да нет, "сало как сало" (т.е. Дельфи как Дельфи). Я то паскаль знаю ещё со времён, когда РС не было у нас в стране и даже могу сказать, чем отличается стандартная версия от ISO, от объектного (по версии Apple), от Турбо (который Борланда и потом Дельфи (паскаль с классами)) и т.п.

А почему у тебя не грузится ПЗУ - разобраться легко, делаешь трассу своим модулем и любым из эмуляторов, в точке, где возникнут расхождения, там и ошибка. Собственно, я выкладывал ядро процессора в исходниках, его доработать на вывод автоматического листинга - от силы пара часов (это если не хочешь в отладчиках эмуляторов жать "Single step").

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

Quote:
...разобраться легко....
Ну раз легко, выложу черновик, поможешь?... Иль это только на словах «легко»…
Я выкладывал черновики где можно прямо в среде дельфи испытать каждую команду, задавая регистрам и флагам значения и опрашивая их после выполнения команд, причем можно делать это в цикле программно … Но, тем не менее, ни один человек на ЭТОМ форуме не сказал, что какая-то команда неверно реализована иль еще чего нить не так.. Вот тебе и «легко»! А самому проверять своё же написанное бессмысленно. Нужно «с других глаз»…

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

sas9568635
Послушайте, Владимир и Дмитрий делятся с Вами своим богатым опытом по эмуляторостроению и дают ценные советы. А Вы предлагаете им ставить Делфи и дебагать Вашу программу. Ясно что никто и не подумает этим заниматься.

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

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

На самом деле, если проследить в отладчике эмулятора и в Дельфях ход исполнения хотя бы сотни команд ПЗУ после сброса, сравнивая при этом значения регистров и флагов после исполнения каждой команды, то наверняка можно сразу же заметить отличия. Если встречается цикл, и пара итераций идёт синхронно, можно пропустить цикл при помощи точек останова, которые в эмуляторе на Дельфи тоже нужно сделать. Точки останова уж точно не помешают, потому что после того, как обнаружено и исправлено расхождение, проще установить точку останова там, где раньше было расхождение, чтобы не трассировать всё с начала.

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

Quote:
sas9568635
Послушайте, Владимир и Дмитрий делятся с Вами своим богатым опытом по эмуляторостроению и дают ценные советы.
Спасибо !
Quote:
А Вы предлагаете им ставить Делфи и дебагать Вашу программу. Ясно что никто и не подумает этим заниматься.
Хорошо! ....раз такой же кофточки, но с перламутровыми пугвицами нет у Вас - :-)
Будем искать! (из к/ф "Бриллиантовая рука")

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