Proteus C++ DLL's

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

aav8 wrote:Это выходит HLT - 2 машинных цикла?
Минимум. Максимум не ограничен :)
Во всех справочниках количество тактов для команды HLT указано 7. Т.е. как раз два цикла 4+3. Но второй цикл повторяется пока не произойдёт выход из режима останова.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
aav8
Maniac
Posts: 287
Joined: 05 Nov 2008 19:47
Location: 81.28.208.238

Post by aav8 »

Вот чего откопал:
... Заметим, что модификация МП КР580 с индексом А обладает возможностью отработки в режиме прерывания не только команд рестарта, но любой последовательности команд, аппаратно формируемой в этом режиме контроллером прерываний. ...
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

aav8 wrote:Вот чего откопал:
... Заметим, что модификация МП КР580 с индексом А обладает возможностью отработки в режиме прерывания не только команд рестарта, но любой последовательности команд, аппаратно формируемой в этом режиме контроллером прерываний. ...
Мы как бы это давно обсудили - и это действительно так...

Интересно - а МП КР580 БЕЗ индекса А только RST N обслуживает?
А CALL ADDR - как бы уже и не умеет? :wink:

Дал бы ссылочку - откуда эти сведения?
Ты уже спрашивал как-то, что К580ИК80 обрабатывает только RST N...
Насколько я знаю, кроме электрических характеристик и разницы в таймингах,
различий в логике работы - нет.
iLavr
aav8
Maniac
Posts: 287
Joined: 05 Nov 2008 19:47
Location: 81.28.208.238

Post by aav8 »

Интересно - а МП КР580 БЕЗ индекса А только RST N обслуживает?
А CALL ADDR - как бы уже и не умеет?
Не УЖЕ а скорее всего ЕЩЕ не умеет.
Книга бумажная называется "программы для микропроцессоров"
кажется 89 года, автора не помню - позже уточню.
Знал что у меня она есть - наконец вчера нашел.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Lavr wrote:Альтернатив - нет. Буду почитать.
Факт, обозначенный коллегой aav8, в вышеуказанной книге имеет место быть.

Но есть у авторов некоторое противоречие самим себе.
С одной стороны:

Image

но с другой стороны!... :o

Image

Как говорится: AS IS... Вот вам "буй"... Волобуев, вот Ваш меч! :lol: ну и т.д. :roll:

Я такой постулат вижу впервые. Своё мнение - изложил выше. No Comments... :(
Last edited by Lavr on 21 Dec 2012 08:51, edited 1 time in total.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

aav8 wrote:Это выходит HLT - 2 машинных цикла?
А по XTHL у тебя какая растактовка? Что-то он мне голову проморочил... :(
18 тактов 5 циклов.
У меня почему-то получается 4-4-3-4-3... а в другом источнике М1=5... -
совсем не сходится... :o
iLavr
aav8
Maniac
Posts: 287
Joined: 05 Nov 2008 19:47
Location: 81.28.208.238

Post by aav8 »

Lavr wrote:
aav8 wrote:Это выходит HLT - 2 машинных цикла?
А по XTHL у тебя какая растактовка? Что-то он мне голову проморочил... :(
18 тактов 5 циклов.
У меня почему-то получается 4-4-3-4-3... а в другом источнике М1=5... -
совсем не сходится... :o
Чесно говоря с растактовкой пока особенно не заморачивался -
в основном расцикловкой - XTHL за пять циклов - все
стандартные по 3 такта ну и ест-но первый за 4 такта.
Ориентировался в основном на Z.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

aav8 wrote:
Lavr wrote:А по XTHL у тебя какая растактовка? Что-то он мне голову проморочил... :(
У меня почему-то получается 4-4-3-4-3... а в другом источнике М1=5... -
совсем не сходится... :o
Чесно говоря с растактовкой пока особенно не заморачивался -
в основном расцикловкой - XTHL за пять циклов - все
стандартные по 3 такта ну и ест-но первый за 4 такта.
По XTHL у меня несколько неожиданная информация:

п. 14. Машинный цикл 5 (МЦ5) имеет пять тактов. Используются только в команде XTHL;
Так что 4-4-3-4-3 отпадает как бы однозначно... :-?
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Lavr wrote:По XTHL у меня несколько неожиданная информация:
п. 14. Машинный цикл 5 (МЦ5) имеет пять тактов. Используются только в команде XTHL;
Так что 4-4-3-4-3 отпадает как бы однозначно... :-?
Тобою ненавистная дока это и не скрывала. Растактовка XTHL следующая: 4+3+3+3+5=18, что коррелируется с цветной табличкой из Радио.
Image
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: K580BM80A

Post by Lavr »

Kristinka80 wrote:...скачала вашу модель процессора К580ВМ80А но эту схемку для того чтоб его "дёргать за ножки" не получается.
А эту схемку чтоб его "дёргать за ножки" я, как мне кажется, и не выкладывал... :(

Её и нет больше как таковой... В процессе работы над моделью процессора
К580ВМ80А схемка постепенно изменялась и сейчас она стала вот такой:

Image

Но и эта схема Вам не нужна, на мой взгляд, поскольку та модель, которую Вы
скачали - это "контейнер" Proteus-a, который вызывает динамическую библиотеку
K580BM80.dll.

Без этой библиотеки "дёргать ножками" программа не будет.



PS. Для внимательных любителей "косяков": да, K580BM80 устанавливается в начальное
состояние высоким логическим уровнем - из схемы выше видно, что это так и есть (выделено цветом).
iLavr
Gordey44
Junior
Posts: 1
Joined: 04 Apr 2013 06:59
Location: 178.159.16.11

Post by Gordey44 »

Тоже начал делать модель 8080 для протеуса.
Пока сделал модели для 8024 и 8028. https://docs.google.com/file/d/0B2XWxBU ... sp=sharing может кому пригодятся. В архиве лежит i8080.dll в качестве заглушки.
pit2
Junior
Posts: 4
Joined: 18 Apr 2014 01:01
Location: 62.221.116.212

Post by pit2 »

На девятой странице форума было обсуждение рабработки DLL для протеуса на другом языке программирования, отличном от C++. Но судя по всему, до практической реализации модели не дошло. У меня получилось создать модель для протеуса на бейсике. Статья об этом. http://purebasic.mybb.ru/viewtopic.php?id=496
При разработке модели на бейсике (диалект PureBasic), столкнулся той же проблемой, какая есть в Borland C++ Builder, т. е. методы класса вызывались используя соглашение stdcall, а не thiscall как в VS C++. Решить проблему оказалось не сложно. В код был добавлен макрос, выполняющийся на этапе компиляции и заменяющий ассемблерную инструкцию PUSH EAX на MOV ECX, EAX во всех вызовах методов объектов.
В процедурах методов класса, была добавлена строка mov *This, ecx, копирующая содержимое регистра ecx в локальную переменную и тем самым, соглашение вызова стало thiscall.
Возможно все это можно проделать и в Borland C++ Builder.
pit2
Junior
Posts: 4
Joined: 18 Apr 2014 01:01
Location: 62.221.116.212

Post by pit2 »

Shaos wrote:Кодить на басике, чтобы потом на асме исравлять - это садомазо высшей степени извращённости...
На асме совсем не много.
Соглашение вызовов методов исправляется компилятором с помощью такого макроса (он перехватывает все инструкции CALL и ищет вызовы методов по опкодам).

Code: Select all

!macro CALL arg
! {
! clabel = $
! CALL arg
! plabel = clabel-3
! callsize = $-clabel
! load ops dword from plabel
! load opc byte from plabel+4
! If ops=$FF008B50 & (opc=$10 | opc=$50 | opc=$90)
!   If opc=$10
!     db $10
!   Else If (opc=$50 | opc=$90)
!     db $00
!     Repeat callsize
!       load op byte from clabel+callsize-%
!       store byte op at clabel+callsize-%+1
!     End Repeat
!   End If
!   store dword $008BC189 at plabel
!   store byte $FF at plabel+4
! End If
! }
Макрос выполняется при компиляции, а не при выполнении программы. Он ищет такие последовательности инструкций.

Code: Select all

50             PUSH EAX
8B00           MOV EAX, DWORD PTR DS:[EAX]
FF10           CALL DWORD PTR DS:[EAX]
И заменяет PUSH EAX на MOV ECX, EAX. Т. е. получается.

Code: Select all

89C1           MOV ECX, EAX
8B00           MOV EAX, DWORD PTR DS:[EAX]
FF10           CALL DWORD PTR DS:[EAX]
С точки зрения программиста, в коде ничего не меняется (что-либо переделывать не нужно). Достаточно добавить макрос в начало кода и его выполнит асемблер FASM (если кто-то не знает, FASM входит в дистрибутив PureBasic и используется в процессе компиляции, при трансляции асм. кода в объектный файл).

Поэтому никакого садомазо и изврата в этом нет. Просто задействован механизм модификации кода при компиляции.

Если под асмом имели в виду строку mov *This, ecx в некоторых процедурах, то ее назначение в поддержке соглашения вызова thiscall и в этом так же нет изврата.

Если по прежнему считаете что это "это садомазо высшей степени извращённости", попробуйте аналогичным образом создать DLL для протеуса на C++ в Borland Builder. Может после этого, поймете что пара асм вставок и небольшой макрос, это НЕ "садомазо высшей степени извращённости". :D :wink:
pit2
Junior
Posts: 4
Joined: 18 Apr 2014 01:01
Location: 62.221.116.212

Post by pit2 »

Shaos wrote:Бейсик он и в Африке бейсик, даже если компилируется через Ассемблер :roll:
Это все равно что судить о человеке по его национальности, т. е. если у него национальность xxxx, то он недочеловек, а если национальность yyyy, то он суперчеловек. При этом не важно хороший это человек или нет, национальность важнее.
По вашему это правильно?

Существует много диалектов бейсиков, часто не похожих друг на друга (как по синтаксису, так и по возможностям).
Сколько вы знаете языков программирования, на которых можно создавать библиотеки для пртеуса? А на скольких языках программирования можно писать драйверы для винды? То и другое возможно на PureBasic. Вот вам и бейсик.

Теперь по теме, пока тут выясняли какой язык лучше, написал еще одну статью. http://purebasic.mybb.ru/viewtopic.php?id=497
На сей раз, моделька уже не тестовая, а имеющая практическое применение и являющаяся 1-Wire анализатором. О его прототипе вскользь упоминали на третьей странице темы.
bigmax
Fanat
Posts: 79
Joined: 10 Feb 2014 03:37

Post by bigmax »

Интересная тема. А насколько точна модель по сигналам? На ZX.PK.RU тоже поднимали тему модели, правда в железе. Раскрыли кристалл, восстановили схему и теперь модель действительно работает и более того, проходит тесты как настоящий процессор. А вы прогоняли свою модель этими тестами? Быть может можно надеяться на модель Z80? Спасибо за внимание.