nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 20 Oct 2018 19:12



Reply to topic  [ 306 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10, 11, 12 ... 21  Next
Proteus C++ DLL's 
Author Message
Maniac

Joined: 05 Nov 2008 20:47
Posts: 251
Location: 81.28.208.238
Reply with quote
Post 
Quote:
А ты не пробовал юзать вот такую функцию из VSM API?
Code:
data = (BYTE)databus->getbusvalue(); //--- чтение данных

Да, пробовал.
У этой шины вроде-как два варианта:
в одном варианте передается список имен пин-ов,
в другом случае - для шины можно получить/установить
отдельно состояние каждого пин-а. Да и модель уже была
нарисована...
---------------
Ну вот добрался до собственно арифметики.
Пока только инкременты/декременты.
Знак и ноль понятно как анализировать.
Четность - просто посчитать кол-во битов.
Вспомогательный перенос (между тетрадами) -
думаю сравнивать 4-ый бит в аккумуляторе до операции
и после - если изменился - значит перенос имел место.
Простой перенос - анализировать 9-ый бит (модель
работает на 32-битной машине).
А вот Z80 вроде-как формирует признак переполнения? Вроде его
впихивает в четность? Что-то не совсем это понял - да и
сильно не разбирался. Хотя уже сейчас надо. И Z80 вроде
поддерживает бит ¹1 в регистре признаков - тоже надо все
это разобрать...
Я собираюсь внутри модели поддерживать слово состояния
от i8080 - для выдачи по SYNC и двойной набор регистров
от Z80.
-------------------
В окне состояния проца показываю все внутренние регистры
регистр состояния.
Решил еще добавить туда дизассемблированную текущую
команду с о всеми операндами... и на это споткнулся - сие
невозможно. Будет просто мнемоника команды.


06 Dec 2012 09:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Четность - просто посчитать кол-во битов.

Мне кажется четность быстрее по таблице...

aav8 wrote:
Вспомогательный перенос (между тетрадами) -
думаю сравнивать 4-ый бит в аккумуляторе до операции
и после - если изменился - значит перенос имел место.

В этом моменте Шаос и Дёмин - правильные решения вроде как определили в этом топике.

_________________
iLavr


06 Dec 2012 11:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
aav8 wrote:
Четность - просто посчитать кол-во битов.

Мне кажется четность быстрее по таблице...

Я как-то занимался подсчётом CRC, и пришел к выводу, что табличный способ
самый быстрый. А четность - это как разновидность, и Дёмин её получает из
вот такой таблицы:
Code:
int parity_table[] = {
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
};

Lavr wrote:
aav8 wrote:
Вспомогательный перенос (между тетрадами) -
думаю сравнивать 4-ый бит в аккумуляторе до операции
и после - если изменился - значит перенос имел место.

В этом моменте Шаос и Дёмин - правильные решения вроде как определили в этом топике.

Исходник Дёмина, который проходит все тесты, вот здесь, взглянь, чтобы велосипедов
не изобретать, код весьма понятный... :kruto:

_________________
iLavr


06 Dec 2012 19:43
Profile
Maniac

Joined: 05 Nov 2008 20:47
Posts: 251
Location: 81.28.208.238
Reply with quote
Post 
Quote:
Исходник Дёмина, который проходит все тесты, вот здесь, взглянь, чтобы велосипедов
не изобретать, код весьма понятный...

Да все понятно и в кое-в чем помогает.
Добрался ровно до половины команд.
Действительно четность через таблицу это так просто.
Надо как-то придумать подцепить к этой штуке терминал,
что-бы можно было прогнать тест.
Сейчас чисто тупо ПЗУ с адреса 0 и ОЗУ с 32768.
Сейчас команды проверяю вручную.
И для простоты считаю что все машинные циклы в 3 такта,
первый цикл в 4 такта. Потом буду вставлять пустышки.


07 Dec 2012 06:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Надо как-то придумать подцепить к этой штуке терминал,
что-бы можно было прогнать тест.

Любой дисплей? Или непосредственно RS-232 serial от самого "Протезуса"?

Ты намекни, как ты хочешь это сделать - и я попробую прицепить...

Только, правда неизвестно пока - работают ли верно команды, значит терминал
нужен чисто автономный?
Получил параллельно байт - и сам его показал? Так?

_________________
iLavr


07 Dec 2012 06:16
Profile
Maniac

Joined: 05 Nov 2008 20:47
Posts: 251
Location: 81.28.208.238
Reply with quote
Post 
Quote:
Ты намекни, как ты хочешь это сделать - и я попробую прицепить...

Только, правда неизвестно пока - работают ли верно команды, значит терминал
нужен чисто автономный?
Получил параллельно байт - и сам его показал? Так?

Да именно автономный - чисто тупо я записываю бай в какой-то
адрес - и эта штука показывает мне этот символ. Все это внутри
Протеуса. Т.е. как-бы паралельный терминал.
Есть-но команды полность не проверены.
Я подумывал про какую-либо схему преобразования паралельного
в последовательный интерфейс - что-то типа ВВ51... Но ее
моделировать пока не хочется - хотя планы имеются.
Появилась идея использовать команды RIM SIM от 8085
в качестве ввода вывода - они будут работать с физическим
портом внутри Win, а туда прицепить терминалу от Win.
Или через com0com завернуть все это дело обратно в Протеус...
Или может придумать свою микросхему - переходник с ШД на RS232
- этакая урезаная/обрезаная/расширеная ВВ51 - работает на
одной скорости, скажем 9600, всегда готова (организовать внутри
большой FIFO). Получается примерно 16 ног - 8 данных, выборка,
запись и чтение, и ест-но последовательный вход и выход.
Без входа можно пока обойтись. Потом эти наработки
пригодятся для настоящеи ВВ51.
Пока такие мысли ...


07 Dec 2012 07:12
Profile
Maniac

Joined: 05 Nov 2008 20:47
Posts: 251
Location: 81.28.208.238
Reply with quote
Post 
Я думаю - нужно будет все-таки реализовать ВВ 51,
ест-но с миниальным функционалом - см. пред. сообщение.
*************************
Наверное скоро можно будет сново заняться
своей идеей - тема ZILOG/маленький комп...
*************************
Думаю за неделю осилить вторую половину набора команд.
Но там как-раз начнется вся логика и арифметика...
И еще вопросы (они касаются именно модели):
команда DAD в User manual написано что она исполняется
за не один цикл. Что в это время происходит на выводах.
В описании 8080 написано, что тратится 10 тактов.
Я думаю 4 такта на M1 и по три на остальные. Нужно-ли при
этом формировать SYNC для 8080? - или ну его нафиг?
По поводу условных переходв/вызовов/возвратов - когда
условие не выполняется - проц считывает адреса перехода
или просто перескакивает на след. команду? - или ну его
нафиг? - может сразу перейти на след. команду и вставить
пустышки для тайминга?
У кого есть компы в железе пж-ста посмотрите эти
воросы - или ну его нафиг? (конечто повторяюсь).


07 Dec 2012 23:36
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Да именно автономный - чисто тупо я записываю бай в какой-то
адрес - и эта штука показывает мне этот символ. Все это внутри
Протеуса. Т.е. как-бы паралельный терминал.

Если только это - то мне кажется, что достаточно регистра-защелки со стробом,
на выходы которого навешан 7-сегментный 16-ричный индикатор.
Ну и селектор адреса на входе...

Размышления по поводу урезанной ВВ51 - не понял в этой связи...
Если ты просто хочешь видеть протокол внешний, на мой взгляд - самый простой
последовательный интерфейс - SPI.

Image

И в Протезусе есть SPI-дебаггер...

В отличие от RS-232, SPI - не требует жесткой времянки: выставил бит,
и простробировал его
- ну по типу DATA <- Strob для принтера...


Если ты всё же хочешь ВВ51 - то это вопрос отдельный...

_________________
iLavr


08 Dec 2012 07:16
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Да именно автономный - чисто тупо я записываю бай в какой-то
адрес - и эта штука показывает мне этот символ.

А если совсем заморачиваться неохота - можно попробовать компонент LptPim:

Image

Данные - на D0-D7, /WR - на /Strobe, остальные выставить - что "всё всегда готово"... :wink:
И попробовать выставить текстовый принтер с печатью в файл или LPT-monitor задействовать.


PS. Если штатные средства не осиливают такой трюк, то - Portmon
Copyright (C) 1999 Mark Russinovich http://www.sysinternals.com

_________________
iLavr


08 Dec 2012 08:02
Profile
Maniac

Joined: 05 Nov 2008 20:47
Posts: 251
Location: 81.28.208.238
Reply with quote
Post 
Нашел в Протеусе 8250 - как раз должно подойти.


09 Dec 2012 21:18
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
И еще вопросы (они касаются именно модели):
команда DAD в User manual написано что она исполняется
за не один цикл. Что в это время происходит на выводах.
В описании 8080 написано, что тратится 10 тактов.

Quote:
Число машинных циклов в команде изменяется от 1 для однобайтовых команд с регистровой адресацией до 5 для трехбайтовых сложных команд. Исключение составляет команда DAD, которая выполняется за три машинных цикла, но обращение к памяти происходит только в первом цикле.

Image

То есть, SYNC, либо M1 у неё выполняются один раз в первом цикле.
После чего она к памяти и УВВ не обращается, а значит ногами никак не дрыгает! :o

Забавно... если у i8080 10 различных циклов, то эти два, судя по всему - "внеклассовые"? :wink:

Image

_________________
iLavr


Last edited by Lavr on 10 Dec 2012 00:22, edited 1 time in total.



09 Dec 2012 23:39
Profile
Banned
User avatar

Joined: 20 Mar 2005 14:41
Posts: 2150
Location: От туда
Reply with quote
Post 
Действительно. Команда DAD во время М2 и М3 шину не дергает.
Image
И, похоже, не только DAD.


09 Dec 2012 23:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
Действительно. Команда DAD во время М2 и М3 шину не дергает.

Ну а как тогда квалифицируют её "М2 и М3" из числа 10 известных?

И, кстати говоря,...
HardWareMan wrote:
SYNC i8080 выдает в каждом машинном цикле.

Ты своё памятное слово из трёх букв назад себе возьмёшь, или как?
Учитель танкистов... :wink:

_________________
iLavr


10 Dec 2012 00:01
Profile
Banned
User avatar

Joined: 20 Mar 2005 14:41
Posts: 2150
Location: От туда
Reply with quote
Post 
Lavr wrote:
И, кстати говоря,...
HardWareMan wrote:
SYNC i8080 выдает в каждом машинном цикле.

Ты своё памятное слово из трёх букв назад себе возьмёшь, или как?
Учитель танкистов... :wink:

И опять мимо. Скорее секи сюда:
Image
Т.е. DAD это исключение из правил. А исключения как раз таки подтверждают правило. Так что только DAD не делает внешних движений на шине в М2 и М3. Твой ход.


10 Dec 2012 01:11
Profile
Maniac

Joined: 05 Nov 2008 20:47
Posts: 251
Location: 81.28.208.238
Reply with quote
Post 
Все про DAD понятьненько.
Я тоже пердполагал что проц внутри пропускает эту команду
через АЛУ (в отличии от INX/DCX) - поэтому и такое время
исполнения.
Я думаю, ничего страшного не будет, если модель просто
на эти 10-4=6 тактов ничего не будет делать? В принципе
потом это можно будет подправить.
И похожий вопрос про условные переходы - читаются - ли
байты адреса перехода? - я думаю в модели их можно будет
просто проскочить.
Что-то не совсем понимаю в татировании 8080
между спадом Ф2 фронтом Ф1 есть пауза или нет? Когда первый
раз увидел такие диаграммы (Радио за 80-ый год) - там такт
был поделен на четыре части - первая четверть Ф1, потом 2
части - Ф2 и потом все одыхают.


10 Dec 2012 03:12
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 306 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10, 11, 12 ... 21  Next

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 Group
Designed by ST Software.