nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 23:01



Reply to topic  [ 235 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 16  Next
а не замутить ли нам недосимулятр? 
Author Message
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Только что успел накидать аж целых три элемента в рабочее поле, прежде чем программа повисла. Правда судя по тому, что висит она в ожидании мьютекса, надо делать выводы, что новости плохие и пахнут дедлоками, лучше бы она, как обычно, упала с SIGSEGV.


17 Aug 2012 09:33
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22414
Location: Silicon Valley
Reply with quote
Post 
фигово...

_________________
:dj: https://mastodon.social/@Shaos


17 Aug 2012 09:43
Profile WWW
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Дедлок я нашёл, и объяснил программе как его можно избежать, самым грязным способом, какой смог придумать. Теперь я могу накликать сколь угодно сложную схему. Но у меня теперь, пропал тулбар, и я не могу запустить симуляцию. =)
Не, ну вот какие интересно соображения могли сподвигнуть программиста создавать тулбар в функции 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
Profile
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
bar wrote:
Но это ладно, меня другое начинает беспокоить... У меня мануала нету к программе. И более того, я не сталкивался раньше с подобными программами... И если честно, я не совсем понимаю как это должно работать. То есть с элементами всё ясно. Но ведь должны быть какие-то входные сигналы, так? А где их взять?
Сорри. Тупил. Нашёл входы и выходы в библиотечки Input & Ouput. Оно заработало =)


17 Aug 2012 12:02
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
bar wrote:
Теперь я могу накликать сколь угодно сложную схему. Но у меня теперь, пропал тулбар, и я не могу запустить симуляцию. =)

Дома у меня нет этой программы, но мне помнится по впечатлениям на работе, -
у неё нет опции "запуск симуляции" - что прилепляешь в схему - сразу
симулируется...

Пробники в RS-триггере загорались сразу по подключению их... как мне помнится.
Может, правда, я "выключить" забыл, но по старту программы, как мне представлется,
симуляция не должна быть включенной. :wink:

Это, кстати, одна из "фич", которая мне не понравилась в сравнении с EWB... :(

Ну а раз уж Shaos спрашивал, симулятор не симулирует мультивибратор
на логических элементах.
Впрочем, это общая у них болячка - кварцы и RC-цепи - это аналоговые
комоненты, но могли бы "подхалтурить" как-то, хотя бы с кварцем... :-?

_________________
iLavr


17 Aug 2012 12:37
Profile
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Lavr wrote:
bar wrote:
Теперь я могу накликать сколь угодно сложную схему. Но у меня теперь, пропал тулбар, и я не могу запустить симуляцию. =)

Дома у меня нет этой программы, но мне помнится по впечатлениям на работе, -
у неё нет опции "запуск симуляции" - что прилепляешь в схему - сразу
симулируется...

Пробники в RS-триггере загорались сразу по подключению их... как мне помнится.
Может, правда, я "выключить" забыл, но по старту программы, как мне представлется,
симуляция не должна быть включенной. :wink:

С RS-триггером она справляется. Правда, поскольку я на ночь забыл её выключить или хотя бы тормознуть симуляцию, ей стало плохо, вероятно, там внутрях у неё счётчик тиков симуляции переполнился. Надо будет уточнить: я видел в сорцах то сообщение об ошибке которое вылезает, но не помню к чему именно оно.
Насчёт же того, что симуляция изначально выключена должна быть, я соглашусь. Меня тоже несколько сбивало это с толку. Там есть, конечно, кнопка pause, но, быть может, надо сделать чтобы была бы одна кнопка ">", но toggle-кнопка, то есть чтоб при нажатии она бы меняла состояние с нажатого, на отжатое, или обратно. Ну и изначально инициализировать её отжатым состоянием.

Но есть и другие новости. Я наконец-таки заметил, что у меня отсутствует библиотека "10 - Chips". Заглянул в вендовую версию, там в xml-файлике с описанием библиотек есть такая "10 - Chips", и в ней объявлен Z80
Code:
<library> <name>10 - Chips</name>
#   (TO DO)
   <gate>
   <name>Z-80</name>
   <caption>Z-80</caption>
   <logic_type>Z80</logic_type>
   <gui_type>Z80</gui_type>
...
В опенсорс версии ничего такого нету. И grep Z80 по файлам ничего не дал. То есть выходит, что эмуляция Z80 -- это закрытая разработка авторов.


18 Aug 2012 00:53
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
bar wrote:
Я наконец-таки заметил, что у меня отсутствует библиотека "10 - Chips". Заглянул в вендовую версию, там в xml-файлике с описанием библиотек есть такая "10 - Chips", и в ней объявлен Z80...
В опенсорс версии ничего такого нету. И grep Z80 по файлам ничего не дал. То есть выходит, что эмуляция Z80 -- это закрытая разработка авторов.

Да не может такого быть! :o Я себе из всех исходников скачал только эмуляцию Z80 !!!
Чтобы посмотреть, как они делают симуляцию, но пока ещё лишь просмотрел бегло...

В ходе написания всяких эмуляторов, я всё-таки представляю себе принцип
эмуляции Z80, - вот и хотел сравнить...

Вот это разве не оно?
http://cedarlogic.svn.sourceforge.net/viewvc/cedarlogic/trunk/Z80/

_________________
iLavr


18 Aug 2012 07:31
Profile
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Оно. Видать я не оттуда скачивал. Я выкачал какой-то zip файл с сорцами, а в vcs даже не подумал заглянуть. А там, как вижу, сорцы посвежее, даже что-то 2011 годом датировано.


18 Aug 2012 07:52
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
bar - а не подскажешь, чем их исходники собирать под Вендой?
Какой версии "срака такая C++ " нужна? :wink:

Я так понимаю, эмуляцию Z80 отдельно от симулятора рассматривать глупо...


PS. И если не трудно - дай ссылку на твой zip-архив оригинальных исходников.
Я такого не нашел - а я как раз не люблю скачивать по одному файлу...

_________________
iLavr


18 Aug 2012 08:03
Profile
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Quote:
Я так понимаю, эмуляцию Z80 отдельно от симулятора рассматривать глупо...

Ну... Смотря с какими целями рассматривать. Я ж говорю, логика от графики отделена в коде. И думается мне, что сорцы из директорий logic и Z80, путём несложных правок можно минут за десять-двадцать довести до состояния самостоятельного приложения. Конечно, совершенно без юзер-интерфейса, но зато оно будет запускаться и будет симулировать. И всё это дело можно будет запустить под дебуггером, чтобы посмотреть как оно работает.
Кстати более того, Z80 там в отдельной директории лежит. Я не смотрел, но уверен, что собственно это и есть эмулятор Z80. На остальное, быть может, даже и смотреть не стоит, если оно не интересно само по себе.

Quote:
И если не трудно - дай ссылку на твой zip-архив оригинальных исходников.
Я такого не нашел - а я как раз не люблю скачивать по одному файлу...

Тот zip файл, я боюсь, тебе не очень нужен, поскольку там нету Z80. Но по ссылке которую ты привёл, есть надпись: Download GNU tarball. Тыкни по ней, и будет тебе щщасте. ;)

Quote:
Какой версии "срака такая C++ " нужна?
Интересный на самом деле вопрос-то оказался, а? Я сразу почему-то решил, что половина моих проблем порождена тем, что изначально код заточен под 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. Довёл до состояния компилируемости и тут...
Code:
/home/rgo/my/cedar/cedar-logic/GUI/RamPopupDialog.cpp:56: undefined reference to `wxGridNameStr'
/home/rgo/my/cedar/cedar-logic/GUI/RamPopupDialog.cpp:56: undefined reference to `wxGrid::wxGrid(wxWindow*, int, wxPoint const&, wxSize const&, long, wxString const&)'
Чувствуется, что скоро услышав слово wxWidgets я буду рефлекторно и незмедлительно изрыгать весь свой матерный лексикон на голову того, кто сказал такую гадость.
Совершенно не понимаю: ./configure --enable-gui у wxWidgets включает опцию --enable-grid. В ебилде на wxWidgets есть опция --enable-gui и нету опции --disable-grid. Ну и куда, спрашивается, подевался этот мазафака грид?


18 Aug 2012 13:29
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
bar wrote:
Quote:
Я так понимаю, эмуляцию Z80 отдельно от симулятора рассматривать глупо...

Ну... Смотря с какими целями рассматривать.

Цель у меня немного другая - я хочу, посмотрев как здесь делается, попробовать
сделать модель 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
Profile
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Как я понимаю, там, две причины:
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
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22414
Location: Silicon Valley
Reply with quote
Post 
DLL-и как правило имеют сишный интерфейс - надо почитать доки на API у протеуса и если оно сишное, то DLL можно компилить чем угодно - хоть паскалем...

_________________
:dj: https://mastodon.social/@Shaos


19 Aug 2012 05:41
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
DLL-и как правило имеют сишный интерфейс - надо почитать доки на API у протеуса и если оно сишное, то DLL можно компилить чем угодно - хоть паскалем...

Вооот! Вот и я так считаю, поскольку с DLL в своё время плотно разбирался! :o

Но вот тут и bar прав "msvc++ имеет свои собственные несовместимости со стандартом"...
Я сталкивался - что-то было связанно с общей областью памяти для DLL и вызывающей
программы: MSVC++ делал в одну строчку, a Борланд Билдер 5.0 - не мог! :lol:

Я одно время держал параллельно Борланд Билдер 5.0 и MSVC++ 5.0, но потом от
MSVC++ 5.0 отказался, поскольку всё-равно я через вызовы WinAPI привык писать,
а Билдер 5.0, на мой взгляд, при прочих равных генерирует более компактный код.

_________________
iLavr


19 Aug 2012 06:44
Profile
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
А как себя ведёт klsMiniMap (миниатюра схемы) в вендовой версии CEDAR? Просто у меня этот klsMiniMap, по-моему, страдает какими-то психическими расстройствами, и справится с ним крайне сложно. Я даже затрудняюсь описать его поведение. Ни о какой интуитивности речи нет. Я это к тому спрашиваю, что мне надо определиться, куда накладывать патчи: на психику klsMiniMap или на свою интуицию.


19 Aug 2012 09:33
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 235 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 16  Next

Who is online

Users browsing this forum: No registered users and 17 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.