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 цикла или еще задержатьЭто уже слишком |
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: Это уже слишком
А что именно "слишком"?... Для команды НОП такую задержку делать?... Что-ль? Или само устройство задержки?... |
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 тактов за раз, эмулировать смысла нет.
Честно говоря я очень слабо понял о чем речь... видимо еще "не доплыл" до этого... и опять же : а ВЫ видели процедуры зажержки какие я использую?... И если они даже очень приблизительны, НО в каждой команде они, я думаю они сами будут покрывать "свои грехи" т.е.погрешности так как программы это сотни и тысячи таких команд... Вообщем у меня рывков не замечается т.е. ЭТО то что нужно!Мой встроенный эмулятор, это для того чтобы можно было испытовать программы в "Приблизительном виде", т.е он и не должен быть проффесиональным, а для запуска и ИСПОЛЬЗОВАНИЯ можно ведь использовать и проффесиональные эмуляторы, ну например, "Башкирия" Вообщем все пока так! А делее видно будет! Тут главная проблема что ПЗУ не запускается! Вот где головняк! А это все мелочи. |
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… Выложу черновик посмотрите как оно у Вас будет…. В эмуляторе это сделать можно.. а вот как это сделать в командах Дельфи - ума не приложу… да и не вижу я пока в это необходимости ! А вообще, лучше бы мне помогли разобраться почему у меня ПЗУ не грузится нормально, вот чем соль?... Поможете?... Черновик на днях выложу… Или опять на Дельфи гнать будете? И чем вам всем Дельфи насолила ? |
Author: | sadfsdfsdaf [ 03 Aug 2012, 22:37 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: А вообще, лучше бы мне помогли разобраться почему у меня ПЗУ не грузится нормально, вот чем соль?... Поможете?... Черновик на днях выложу…
Да нет, "сало как сало" (т.е. Дельфи как Дельфи). Я то паскаль знаю ещё со времён, когда РС не было у нас в стране и даже могу сказать, чем отличается стандартная версия от 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/ |