Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Sep 25, 2020 1:13 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 21 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Sat Mar 10, 2012 2:16 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 827
Появилась идея сделать программу для моделирования поведения логических схем. Сделал несколько файлов со схемами, их можно открывать и запускать на выполнение. Программа до конца еще не сделана, а именно нет возможности редактировать и создавать новые схемы (файлы пока можно редактировать в текстовом виде). Программа предназначена в основном для образовательных целей, что бы можно было понять как работают логические элементы при их объединении в различных вариантах.
Детали можно почитать в документации в папке docs, хотя описано не все.


Attachments:
File comment: внешний вид программы
about.png
about.png [ 21.94 KiB | Viewed 6836 times ]
File comment: бинарник и исходники
log_el.zip [164.63 KiB]
Downloaded 302 times
Top
   
PostPosted: Sat Mar 10, 2012 2:20 pm 
А можно узнать почему у тебя уже вторая программа в темных тонах? Я ничего против авторской задумки не имею, но лично мои глаза при работе с черным фоном быстрее устают, чем когда на белом фоне рисуется все.


Top
   
PostPosted: Sat Mar 10, 2012 8:00 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 827
Mario wrote:
А можно узнать почему у тебя уже вторая программа в темных тонах?

Просто мне кажется что от светлых тонов на мониторах будет быстрее выгорать люминофор :) На современные мониторы это врятли распространяется, но привычка писать темные программы осталась еще с DOS-вских времен.


Top
   
PostPosted: Sat Mar 10, 2012 8:16 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 797
схемы разводить, кстати удобно на темном фоне. Хотя было бы классно, если бы была возможность выбрать или "темную" или "светлую" темы.


Top
   
PostPosted: Sat Mar 10, 2012 8:35 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Да и цветовую гамму приложения в целом. Иначе получается несколько вырвиглазно. За прогу - респект!


Top
   
PostPosted: Sat Mar 10, 2012 9:34 pm 
Offline
Moderator

Joined: Thu Apr 08, 2010 8:11 pm
Posts: 269
На ЖК мониторах чёрный цвет самый энергоёмкий...на ЭЛТ на оборот...


Top
   
PostPosted: Sat Mar 10, 2012 9:39 pm 
popovpa wrote:
на ЭЛТ на оборот...

"На оборот" это как? На задней крышке что ли?


Top
   
PostPosted: Sat Mar 10, 2012 10:34 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1412
Игорь, у тебя просто призвание браться за невозможные вещи.
И делать их!

Совет: надо сразу подумать о совместимости с имеющимися программами, особенно на уровне библиотек элементов.
Иначе зазюзюкаешься каждую микросхему забивать в отдельный файл.


Top
   
PostPosted: Sat Mar 10, 2012 10:50 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Я так понимаю, что это эмулирование именно логических элементов. Мне нравится Logisim, он хранит свои данные вот так:
Spoiler: Show
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project source="2.7.1" version="1.0">
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<lib desc="#Wiring" name="0"/>
  <lib desc="#Gates" name="1"/>
  <lib desc="#Plexers" name="2"/>
  <lib desc="#Arithmetic" name="3"/>
  <lib desc="#Memory" name="4">
    <tool name="ROM">
      <a name="contents">addr/data: 8 8
0
</a>
    </tool>
  </lib>
  <lib desc="#I/O" name="5"/>
  <lib desc="#Base" name="6">
    <tool name="Text Tool">
      <a name="text" val=""/>
      <a name="font" val="SansSerif plain 12"/>
      <a name="halign" val="center"/>
      <a name="valign" val="base"/>
    </tool>
  </lib>
  <main name="main"/>
  <options>
    <a name="gateUndefined" val="ignore"/>
    <a name="simlimit" val="1000"/>
    <a name="simrand" val="0"/>
  </options>
  <mappings>
    <tool lib="6" map="Button2" name="Menu Tool"/>
    <tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
    <tool lib="6" map="Button3" name="Menu Tool"/>
  </mappings>
  <toolbar>
    <tool lib="6" name="Poke Tool"/>
    <tool lib="6" name="Edit Tool"/>
    <tool lib="6" name="Text Tool">
      <a name="text" val=""/>
      <a name="font" val="SansSerif plain 12"/>
      <a name="halign" val="center"/>
      <a name="valign" val="base"/>
    </tool>
    <sep/>
    <tool lib="0" name="Pin">
      <a name="tristate" val="false"/>
    </tool>
    <tool lib="0" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="labelloc" val="east"/>
    </tool>
    <tool lib="1" name="NOT Gate"/>
    <tool lib="1" name="AND Gate"/>
    <tool lib="1" name="OR Gate"/>
  </toolbar>
  <circuit name="main">
    <a name="circuit" val="main"/>
    <a name="clabel" val="8"/>
    <a name="clabelup" val="east"/>
    <a name="clabelfont" val="SansSerif plain 12"/>
    <wire from="(190,420)" to="(230,420)"/>
     <wire from="(230,60)" to="(230,100)"/>
    <wire from="(150,40)" to="(240,40)"/>
    <wire from="(280,50)" to="(290,50)"/>
    <wire from="(350,260)" to="(410,260)"/>
    <comp lib="0" loc="(100,270)" name="Clock"/>
    <comp lib="1" loc="(570,120)" name="Controlled Buffer">
      <a name="facing" val="south"/>
      <a name="width" val="8"/>
      <a name="control" val="left"/>
    </comp>
    <comp lib="4" loc="(160,330)" name="Counter">
      <a name="width" val="3"/>
      <a name="max" val="0x4"/>
    </comp>
    <comp lib="0" loc="(660,310)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="8"/>
      <a name="tristate" val="false"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(740,180)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="8"/>
      <a name="tristate" val="false"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="1" loc="(680,240)" name="NOT Gate"/>
    <comp lib="2" loc="(150,430)" name="Demultiplexer">
      <a name="selloc" val="tr"/>
      <a name="select" val="3"/>
    </comp>
    <comp lib="6" loc="(167,298)" name="Text">
      <a name="text" val="Счетчик команд"/>
    </comp>
    <comp lib="6" loc="(686,151)" name="Text">
      <a name="text" val="Сдвиговый регистр"/>
    </comp>
    <comp lib="2" loc="(260,170)" name="Multiplexer">
      <a name="width" val="8"/>
      <a name="enable" val="false"/>
    </comp>
    <comp lib="0" loc="(620,550)" name="Pin">
      <a name="output" val="true"/>
      <a name="width" val="8"/>
      <a name="tristate" val="false"/>
    </comp>
    <comp lib="2" loc="(700,560)" name="Multiplexer">
      <a name="width" val="8"/>
      <a name="enable" val="false"/>
    </comp>
    <comp lib="4" loc="(530,180)" name="RAM"/>
    <comp lib="1" loc="(410,540)" name="OR Gate">
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="1" loc="(480,410)" name="NOT Gate">
      <a name="facing" val="north"/>
    </comp>
    <comp lib="2" loc="(710,410)" name="Multiplexer">
      <a name="width" val="8"/>
      <a name="enable" val="false"/>
    </comp>
    <comp lib="1" loc="(370,410)" name="OR Gate">
      <a name="inputs" val="3"/>
    </comp>
    <comp lib="0" loc="(60,240)" name="Pin">
      <a name="tristate" val="false"/>
    </comp>
    <comp lib="0" loc="(220,100)" name="Bit Extender">
      <a name="in_width" val="1"/>
      <a name="out_width" val="8"/>
    </comp>
    <comp lib="1" loc="(380,110)" name="OR Gate">
      <a name="width" val="8"/>
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="0" loc="(280,130)" name="Pin">
      <a name="facing" val="south"/>
      <a name="width" val="8"/>
      <a name="tristate" val="false"/>
    </comp>
    <comp lib="4" loc="(130,180)" name="Register"/>
    <comp lib="1" loc="(330,290)" name="AND Gate">
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="0" loc="(750,360)" name="Pin">
      <a name="facing" val="south"/>
      <a name="width" val="8"/>
      <a name="tristate" val="false"/>
    </comp>
    <comp lib="3" loc="(280,50)" name="Adder"/>
    <comp lib="0" loc="(760,290)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="8"/>
      <a name="tristate" val="false"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="6" loc="(99,147)" name="Text">
      <a name="text" val="Регистр PC"/>
    </comp>
    <comp lib="4" loc="(670,180)" name="Shift Register">
      <a name="width" val="8"/>
      <a name="length" val="2"/>
    </comp>
  </circuit>
</project>


Top
   
PostPosted: Mon Mar 12, 2012 2:05 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 827
XVilka wrote:
схемы разводить, кстати удобно на темном фоне. Хотя было бы классно, если бы была возможность выбрать или "темную" или "светлую" темы.

когда будет свободное время надо будет добавить выбор цвета, пока что нужно добавить инструменты для редактирования
art_zh wrote:
Совет: надо сразу подумать о совместимости с имеющимися программами, особенно на уровне библиотек элементов. Иначе зазюзюкаешься каждую микросхему забивать в отдельный файл.

думаю что сделать конвертирование можно, но вот будут ли при этом совпадать пропорции элементов. В этом может быть основная проблема с переносом
SoUrcerer wrote:
Я так понимаю, что это эмулирование именно логических элементов. Мне нравится Logisim, он хранит свои данные вот так:

посмотрел в интернете эту программу, интересная


Top
   
PostPosted: Thu Mar 15, 2012 12:56 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 827
Сделал небольшие доработки программы и отправил на svn ревизия 2462.
Исправил небольшую ошибку с надписями.
Добавил кнопки для рисования и стирания проводов. Провода рисуются по пикселям (клеткам), хотя конечно лучше было бы если рисовалось линиями, но пока нет времени на эксперименты.


Top
   
PostPosted: Thu Mar 15, 2012 10:20 pm 
Offline

Joined: Mon Mar 27, 2006 6:33 am
Posts: 684
IgorA wrote:
посмотрел в интернете эту программу, интересная

Особенно использование во "всевозможных" курсах обучения
логики и созданию CPU. (поиск "Logisim circ"), но по моему
"песочница" Javы для него "несколько" обременительна.

P.S. Пожелание у пользователя должна быть возможность нарастить функционал,
например используя, простейший язык программирования типа Лого.
Самому близка и интересна эта тематика, как приложение сил прогера и пользователя.


Top
   
PostPosted: Thu Mar 22, 2012 6:09 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 827
Делал несколько обновлений программы в ревизиях 2482 и 2487 (добавил курсоры).
Обнаружил ошибку предположительно в функции pole_cell_delete. Из-з чего возможны глюки при сохранении и при интенсивном редактировании схем.
Kopa wrote:
P.S. Пожелание у пользователя должна быть возможность нарастить функционал, например используя, простейший язык программирования типа Лого.

Надо нарастить программу другими функциями, тогда и за Лого можно будет взятся. Пока что работа всех элементов задается таблицами, а это не удобно, когда у элемента много входных ног.


Нашел эту ошибку не там где думал а в другой функции, скоро исправлю на svn.


Top
   
PostPosted: Thu Mar 29, 2012 11:46 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 827
В рев. 2523 добавил открытие цветов из ini файла
Пока не все цвета можно задавать, только основные
Файл bat не копирует в папку bin файл ini, потому по умолчанию цвета будут старые.


Top
   
PostPosted: Thu Mar 29, 2012 11:54 pm 
В качестве задела на будущее было бы хорошо иметь возможность увеличить масштаб. Если не произвольно, то хотя бы в целое число раз. Да даже в 2,4,8,16 уже для большинства случаев хватит. Не у всех идеальное зрение, но даже у тех кого оно хорошее спустя часы работы глаза устают, а увеличение масштаба позволяет меньше напрягать глаза.

UPD Упс, я был не внимателен. Масштабирование уже есть. Меня смутило отсутствие скроллбаров.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 21 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

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