|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
а не замутить ли нам недосимулятр?
Author |
Message |
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
Только что успел накидать аж целых три элемента в рабочее поле, прежде чем программа повисла. Правда судя по тому, что висит она в ожидании мьютекса, надо делать выводы, что новости плохие и пахнут дедлоками, лучше бы она, как обычно, упала с SIGSEGV.
|
17 Aug 2012 09:33 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22616 Location: Silicon Valley
|
фигово...
|
17 Aug 2012 09:43 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
Дедлок я нашёл, и объяснил программе как его можно избежать, самым грязным способом, какой смог придумать. Теперь я могу накликать сколь угодно сложную схему. Но у меня теперь, пропал тулбар, и я не могу запустить симуляцию. =)
Не, ну вот какие интересно соображения могли сподвигнуть программиста создавать тулбар в функции OnIdle? Но это ладно, меня другое начинает беспокоить... У меня мануала нету к программе. И более того, я не сталкивался раньше с подобными программами... И если честно, я не совсем понимаю как это должно работать. То есть с элементами всё ясно. Но ведь должны быть какие-то входные сигналы, так? А где их взять?
Это я к тому, что было бы просто замечательно, если б кто-нибудь нарисовал бы в рабочем вендовом CEDAR схемку и запостил бы тут скриншот. Ну или не скриншот, а save-файл: я ещё рассматривал вопросы File->Open/Save/Save As, как раз будет повод с этим разобраться.
ps. Неожиданно, но факт: в программе, по-ходу дела, жёстко разделён GUI с логикой, и не только в том смысле, что сорцы по разным директориям разбросаны, но если я ничего не упустил из виду, то всё общение между этими двумя частями программы ведётся исключительно через двустороннюю очередь сообщений. Так сказать труЪ Unix Way, прям как проповедовал Master Foo в приложениях к TAOUP. Правда, Master Foo, если бы присматривал за созданием этой программы, посоветовал бы создателям не возиться с созданием велосипеда-очереди из двух инстансов std::queue<std::string>, а воспользоваться такими вещами как pipe, fifo или, на худой конец, socket, но... Но как бы там ни было, я просто не ожидал подобных изысков.
|
17 Aug 2012 11:26 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
Сорри. Тупил. Нашёл входы и выходы в библиотечки Input & Ouput. Оно заработало =)
|
17 Aug 2012 12:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Дома у меня нет этой программы, но мне помнится по впечатлениям на работе, -
у неё нет опции "запуск симуляции" - что прилепляешь в схему - сразу
симулируется...
Пробники в RS-триггере загорались сразу по подключению их... как мне помнится.
Может, правда, я "выключить" забыл, но по старту программы, как мне представлется,
симуляция не должна быть включенной.
Это, кстати, одна из "фич", которая мне не понравилась в сравнении с EWB...
Ну а раз уж Shaos спрашивал, симулятор не симулирует мультивибратор
на логических элементах.
Впрочем, это общая у них болячка - кварцы и RC-цепи - это аналоговые
комоненты, но могли бы "подхалтурить" как-то, хотя бы с кварцем...
_________________ iLavr
|
17 Aug 2012 12:37 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
| | | | Lavr wrote: Дома у меня нет этой программы, но мне помнится по впечатлениям на работе, - у неё нет опции "запуск симуляции" - что прилепляешь в схему - сразу симулируется... Пробники в RS-триггере загорались сразу по подключению их... как мне помнится. Может, правда, я "выключить" забыл, но по старту программы, как мне представлется, симуляция не должна быть включенной. | | | | |
С RS-триггером она справляется. Правда, поскольку я на ночь забыл её выключить или хотя бы тормознуть симуляцию, ей стало плохо, вероятно, там внутрях у неё счётчик тиков симуляции переполнился. Надо будет уточнить: я видел в сорцах то сообщение об ошибке которое вылезает, но не помню к чему именно оно.
Насчёт же того, что симуляция изначально выключена должна быть, я соглашусь. Меня тоже несколько сбивало это с толку. Там есть, конечно, кнопка pause, но, быть может, надо сделать чтобы была бы одна кнопка ">", но toggle-кнопка, то есть чтоб при нажатии она бы меняла состояние с нажатого, на отжатое, или обратно. Ну и изначально инициализировать её отжатым состоянием.
Но есть и другие новости. Я наконец-таки заметил, что у меня отсутствует библиотека "10 - Chips". Заглянул в вендовую версию, там в xml-файлике с описанием библиотек есть такая "10 - Chips", и в ней объявлен Z80 В опенсорс версии ничего такого нету. И grep Z80 по файлам ничего не дал. То есть выходит, что эмуляция Z80 -- это закрытая разработка авторов.
|
18 Aug 2012 00:53 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да не может такого быть! Я себе из всех исходников скачал только эмуляцию Z80 !!!
Чтобы посмотреть, как они делают симуляцию, но пока ещё лишь просмотрел бегло...
В ходе написания всяких эмуляторов, я всё-таки представляю себе принцип
эмуляции Z80, - вот и хотел сравнить...
Вот это разве не оно?
http://cedarlogic.svn.sourceforge.net/viewvc/cedarlogic/trunk/Z80/
_________________ iLavr
|
18 Aug 2012 07:31 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
Оно. Видать я не оттуда скачивал. Я выкачал какой-то zip файл с сорцами, а в vcs даже не подумал заглянуть. А там, как вижу, сорцы посвежее, даже что-то 2011 годом датировано.
|
18 Aug 2012 07:52 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
bar - а не подскажешь, чем их исходники собирать под Вендой?
Какой версии " срака такая C++ " нужна?
Я так понимаю, эмуляцию Z80 отдельно от симулятора рассматривать глупо...
PS. И если не трудно - дай ссылку на твой zip-архив оригинальных исходников. Я такого не нашел - а я как раз не люблю скачивать по одному файлу...
_________________ iLavr
|
18 Aug 2012 08:03 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
Ну... Смотря с какими целями рассматривать. Я ж говорю, логика от графики отделена в коде. И думается мне, что сорцы из директорий logic и Z80, путём несложных правок можно минут за десять-двадцать довести до состояния самостоятельного приложения. Конечно, совершенно без юзер-интерфейса, но зато оно будет запускаться и будет симулировать. И всё это дело можно будет запустить под дебуггером, чтобы посмотреть как оно работает. Кстати более того, Z80 там в отдельной директории лежит. Я не смотрел, но уверен, что собственно это и есть эмулятор Z80. На остальное, быть может, даже и смотреть не стоит, если оно не интересно само по себе. Тот zip файл, я боюсь, тебе не очень нужен, поскольку там нету Z80. Но по ссылке которую ты привёл, есть надпись: Download GNU tarball. Тыкни по ней, и будет тебе щщасте. Интересный на самом деле вопрос-то оказался, а? Я сразу почему-то решил, что половина моих проблем порождена тем, что изначально код заточен под msvc++, но... Повтыкав в содержимое файликов внутри projectset.zip, я пришёл к выводу, что речь про Eclipse, cygwin и gcc. А если так, то тебе нужен Eclipse. С cygwin, как я понимаю (судя по тому, что cygwin упоминается там в projectset.zip, быть может для компиляции окажется недостаточно MinGW). При этом в систему надо поставить wxWidgets, да так, чтобы Eclipse нашёл заголовки и библиотеки. Но есть некая вероятность того, что Cygwin'овский setup.exe всё разрулит. Хотя я хз, если честно. Я лишь один раз пытался что-то там собрать в венде, использовал для этого MinGW, но нужная мне версия gtk так и не собралась. Собственно это я к тому, что здесь мой опыт стремится к нулю, и говорить что-то определённое я не решусь.
Но если они собирали при помощи gcc... Надо думать, что они собирали приложение в режиме юникода, и ихний string состоял из wchar_t, что ли? Или может у них wxWidgets был собран без поддержки unicoda, и егойный wxChar совпадал с char'ом? Да, наверное второе, не вижу другого способа объяснить то, каким образом в коде проводились преобразования строк между std и wx. Значит тебе wxWidgets нужен без юникода. =)
ps. Я мергнул свои труды с ихней версией 1.5. Довёл до состояния компилируемости и тут... Чувствуется, что скоро услышав слово wxWidgets я буду рефлекторно и незмедлительно изрыгать весь свой матерный лексикон на голову того, кто сказал такую гадость.
Совершенно не понимаю: ./configure --enable-gui у wxWidgets включает опцию --enable-grid. В ебилде на wxWidgets есть опция --enable-gui и нету опции --disable-grid. Ну и куда, спрашивается, подевался этот мазафака грид?
|
18 Aug 2012 13:29 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Цель у меня немного другая - я хочу, посмотрев как здесь делается, попробовать
сделать модель Z80 (или i8080) для Proteus.
И вот тут самый непонятный для меня затык происходит... Для Proteus всё весьма
неплохо было документировано. И хотя " протезисты" попытались изъять всю
документацию, я её по разным источникам собрал.
Вот тут и начинается самое для меня непонятное: для сборки dll-модели под
Proteus нужен этот самый msvc++ причем последних версий.
Ясен пень, что под моей Вендой 98 этот msvc++ работать не будет...
Но я вполне пишу себе нужные dll-ки на Борланд Билдер 5.0.
Откуда и есть вопрос - почему я не могу собрать модель в виде dll на своём Билдере?
Что мне принципиально-то помешает?
Некоторые нужные вещи у меня получалось перетаскивать из-под msvc++ под Билдер...
И я всегда удивлялся - вроде же и msvc++ и Билдер 5.0 - это та же самая " срака такая C++ ", и Борланд тщилась фичи msvc++ поддержать, а порой получается, -
никак замесы от msvc++ не обойти...
В чём основная проблема-то?
_________________ iLavr
|
18 Aug 2012 16:25 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
Как я понимаю, там, две причины:
1. C++ меняется со временем, и код, вполне приемлимый для компилятора 10-ти летней давности, обнаруживает в себе кучи ошибок, с точки зрения современного компилятора C++. И наоборот, если компилятору десятилетней давности, скормить заголовочный файл современной библиотеки, то скорее всего компилятор офигеет от такой наглости и выдаст кучи ошибок.
2. Стандарт C++ не имеет сколько-нибудь внятного определения ABI. И, я подозреваю, что мало того, что каждый компилятор использует свой собственный ABI, так ещё и эти ABI меняются вместе с версиями компиляторов.
Есть ещё третья причина, про которую я наслышан: msvc++ имеет свои собственные несовместимости со стандартом, которыми программисты подчастую пользуются не задумываясь, а в результате их код компилируется только в msvc++.
Но, может быть имеет смысл попробовать поставить WinXP в режиме Dual-boot, в неё поставить MSVC++ Express, а поработав с msvc++ снести к чертям всё, кроме win98? При этом можно на раздел с win98 на время загрузки в winxp вешать флаг неактивности, и тогда winxp будет просто игнорировать этот раздел, и с гарантией ничего там не изменит.
Правда там требования к железу, мама не горюй: http://www.microsoft.com/visualstudio/e ... quirements
Гиг оперативки и 1.6ГГц проц. Но я думаю, что это в случае Windows7. В случае windows XP, пожалуй, хватит вполовину меньшего. А если при этом, умудриться обойтись без IDE и использовать лишь компилятор -- утилитку командной строки, то хватит и минимальных для XP 128 мегабайт оперативки. Кстати утилиты командной строки из msvc++ express, в общем-то имеют шансы заработать и в win98.
|
19 Aug 2012 03:47 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22616 Location: Silicon Valley
|
DLL-и как правило имеют сишный интерфейс - надо почитать доки на API у протеуса и если оно сишное, то DLL можно компилить чем угодно - хоть паскалем...
|
19 Aug 2012 05:41 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вооот! Вот и я так считаю, поскольку с DLL в своё время плотно разбирался!
Но вот тут и bar прав " msvc++ имеет свои собственные несовместимости со стандартом"...
Я сталкивался - что-то было связанно с общей областью памяти для DLL и вызывающей
программы: MSVC++ делал в одну строчку, a Борланд Билдер 5.0 - не мог!
Я одно время держал параллельно Борланд Билдер 5.0 и MSVC++ 5.0, но потом от
MSVC++ 5.0 отказался, поскольку всё-равно я через вызовы WinAPI привык писать,
а Билдер 5.0, на мой взгляд, при прочих равных генерирует более компактный код.
_________________ iLavr
|
19 Aug 2012 06:44 |
|
|
bar
Senior
Joined: 07 Aug 2006 10:18 Posts: 185
|
А как себя ведёт klsMiniMap (миниатюра схемы) в вендовой версии CEDAR? Просто у меня этот klsMiniMap, по-моему, страдает какими-то психическими расстройствами, и справится с ним крайне сложно. Я даже затрудняюсь описать его поведение. Ни о какой интуитивности речи нет. Я это к тому спрашиваю, что мне надо определиться, куда накладывать патчи: на психику klsMiniMap или на свою интуицию.
|
19 Aug 2012 09:33 |
|
|
Who is online |
Users browsing this forum: No registered users and 87 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|