nedoPC.org

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



Reply to topic  [ 295 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15, 16, 17 ... 20  Next
Proteus C++ DLL's 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
В общем, постигло меня разочарование некоторое даже, что рожденная здесь в муках модель
микропроцессора z80
не шевелится под моим замшелым Протезусом 6.7 и штопаной-перештопаной
Вендой-98... :-?
Поэтому, как агностик по вероисповеданию, в последние дни православных Рождественских праздников
решил я эту ситуацию кардинально исправить - и исправил! :egeek:
Заодно и поправил всякую неудобную мелочевку....
Так что архив с работающей везде моделью z80 можно скачать здесь: Z80ALL.rar
В архиве всё разложено в папки, из которых файлы следует переложить в одноименные папки, там
где у вас установлен Протеус.

После старта Протеуса микропроцессор(ы) z80 становятся доступны в меню элементов:

Image
Увеличить

Красной рамкой обведены НАШИ z80 (у Протеуса есть и свои, но он их не поддерживает...)

По сути у нас теперь 2 бибиотеки с z80, в каждой из которых есть еще 8 свободных мест,
если захочется "оживить" весь комплект z80.

Библиотека x80MCS - поддерживает модель z80, работоспособную в Вендах, начиная с ХР, и для
неё может понадобиться файл MSVCR100D.DLL (я его приложил, проверенный на моей Венде 7).
Библиотека Z80Zilog - поддерживает модель z80, работоспособную в Венде 98, и, по идее -
во всех остальных Вендах тоже (но я этого не проверял). Этой модели файл MSVCR100D.DLL не нужен.

Есть в архиве - 3 примера, демонстрирующие корректную работу модели z80, и могущие стать
основой для собственных проектов.
Карта памяти во всех трех демо-проектах одинакова: внизу - 8 кБайт ПЗУ с тестовой программой,
в верхних адресах - 56 кБайт ОЗУ. В пространстве УВВ по адресам 0F8H...0FFH расположен
UART i8250A. (Я был удивлен неимоверно, но и в моём замшелом Протезусе 6.7 эта модель есть!)
Вот скриншот проекта 8080_2.DSN :

Image
Увеличить

При запуске симуляции отрабатывается тест на верность исполнения набора инструкций
микропроцессора i8080 :
Code:
;***********************************************************************
; MICROCOSM ASSOCIATES  8080/8085 CPU DIAGNOSTIC VERSION 1.0  (C) 1980
;***********************************************************************
; Load into virtual altair with: ALTAIR L=TEST.HEX
; Then press F2 to view screen, and 'G' to execute the test.
;
;DONATED TO THE "SIG/M" CP/M USER'S GROUP BY:
;KELLY SMITH, MICROCOSM ASSOCIATES
;3055 WACO AVENUE
;SIMI VALLEY, CALIFORNIA, 93065
;(805) 527-9321 (MODEM, CP/M-NET (TM))
;(805) 527-0518 (VERBAL)
;

У теста всего 2 результата:
"CPU IS OPERATIONAL" и
" CPU HAS FAILED! ERROR EXIT=$"

В нашем случае - результат, похоже, что положительный :wink: (проект 8080_3.DSN)...

Image
Увеличить

Ну и из скриншота видно, почему моделей микропроцессора z80 в библиотеках по две:
я добавил каждой модели УГО, по стандарту IEC, что ближе к нашему ГОСТ и мне больше
нравится внешне. Инверсные выводы с кружкАми добавлять не стал, поскольку в среде
Протезуса они выглядят как "яйцо сбоку", а я люблю - кружок на периметре УГО...

Если что-то пойдет не так, Протезус может начать ругаться:

Reading netlist...
FATAL: [DD1] External model DLL "x80.DLL" not found.
(Get Last Error) GLE=0x00000002. = ERROR_FILE_NOT_FOUND

Это он не нашел x80.dll или Z80.dll - они должны быть в
его папке MODELS.

(Get Last Error) GLE=0x00000485. = ERROR_DLL_NOT_FOUND
Это он не нашел файл MSVCR100D.DLL или что-то еще сопутствующее.

(Get Last Error) GLE=0x0000001F. = ERROR_GEN_FAILURE
Это он все нашел, но случился по пути "Генерал Файлура"! :ebiggrin:

В общем - удачи всем в освоении модели, а то она теперь в Протезусе есть, а никто как бы
и не рад что-ли? :roll:


P.S. Огромное спасибо aav8 - ЗА ВСЁ ! :kruto:

_________________
iLavr


09 Jan 2016 18:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ну и поскольку рабочая модель микропроцессора z80 у нас теперь есть, я возжаждал, чтобы была в
Протезусе полноценная интегрированная среда (IDE) для разработки проектов на z80/i8080.
А для этого мне хотелось, чтобы был довольно мощный ассемблер конкретно для мнемоник i8080, ибо
их многие у нас тут, да и не только у нас, ностальгически любят.

Для работы с ассемблерными файлами i8080 у нас многие используют Fasm, и Tasm, и Nasm, но это не
специализированые трансляторы мнемоник i8080, а табличные, и хотя я их пробовал некоторое неудовлетворение
оставалось, поскольку хотелось, чтобы не пришлось ломать старые привычки от ассемблера "Микрон",
с которым многие тут выросли, и чтобы все написанные ранее программы на ассемблере для любимого
К580ВМ80А можно было компилировать не подправляя.

Сам я привык к ассемблеру "Специалиста_МХ" - схожего с "Микроном", но запускать всякий раз эмулятор
"Специалиста_МХ"
тоже поднадоело, с учетом, что в нем не работает мышь, "копи-паст" и прочие
современные "кунштюки"...
Да и возможностей самогО транслятора хотелось уже помощнее.

Я уже начал писать собственный Ассемблер на Ассемблере, подражая ассемблеру "Специалиста_МХ",
но пару дней назад я снова наткнулся на весьма интересный проект, который я видел и ранее, но
тогда он мне казался несколько громоздким:
The Intel 8080 Assembler by Jay Cotton and Claude Sylvai - (исходники проекта)

Хотя исходники эти я скачал со страницы нашего коллеги Александра Дёмина (да пребудет с ним
Великая Сила! :wink: ), поскольку он их пробовал хотя бы скомпилировать и даже ошибочку в них нашел.

Мне сразу понравилось, что этот Intel 8080 Assembler без малейших затруднений и ошибок оттранслировал
пару моих крупных ассемблерных исходника системы RAMFOS "Специалиста_МХ".
У ассемблера оказались весьма развитые средства работы со строкой аргументов операнда, а также
наличие макросредств.
Я подправил пару шероховатостей при работе с кириллицей и одну странную ситуацию, являющуюся
анахронизмом, когда всё, что начинается с 1-й позиции строки - это метки...
Ну и, погоняв Intel 8080 Assembler на разных примерах, я пришел к выводу, что это на 99% - то,
чего мне, собственно, и хотелось.
Поэтому я его опробировал в среде Протезуса и на его основе скомпоновал Intel 8080 IDE.

Компилятор Intel 8080 Assembler можно скачать вот здесь. (пароль архива 123)

В папке ASM8080 находятся 5 файлов:
ASM8080.exe - сам компилятор Intel 8080 Assembler;
ASM8080D.txt - документация от авторов проекта (чуть дополнена мной);
ASM8080.BAT - пакетный файл для компиляции с листингом;
ASSM4K.ASM - исходник компилятора Assm "Специалиста_МХ";
TENNISIO.ASM - исходник игры Pong моего проекта в Протезусе.

Ассемблерные файлы приложены для тестирования компилятора Intel 8080 Assembler и в принципе для
IDE Протезуса они не нужны.

Далее я расскажу, как подключить компилятор в среду Протезуса и это будет справедливо и для тех
случев, если вдруг кто-то захочет подключить свой любимый компилятор по аналогии.

_________________
iLavr


16 Jan 2016 18:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Итак, если архив скачан, папку ASM8080 помещаем в директорию Tools Протезуса.
Там находятся и другие компиляторы микропроцессорных устройств, эмулируемых этим пакетом.
У меня эта папка расположена, как хотел при инсталяции сам Протезус по умолчанию:

C:\Program Files\Labcenter Electronics\Proteus 6 Professional\Tools

Заходим далее в директорию:

C:\Program Files\Labcenter Electronics\Proteus 6 Professional\SAMPLES

где создаем папку проекта с моделью микропроцессором z80, у меня - Pong_i8080.

Распаковываем в нее файлы проекта и далее все манипуляции проделаем на его основе.
8080_T2.DSN
8080_T2.PWI
TENNISIO.ASM - это то же самое, что и в архиве компилятора Intel 8080 Assembler.

Из папки C:\Program Files\Labcenter Electronics\Proteus 6 Professional\BIN
запускаем isis.exe
Загружаем из C:\Program Files\Labcenter Electronics\Proteus 6 Professional\SAMPLES\Pong_i8080
проект 8080_T2.DSN

В принципе всё можно проделать и на пустом листе проекта, но тогда нечем буде опробовать
скомпилированый бинарник программы.

Подключаем наш компилятор к Протезусу через опцию Source верхней строки меню:

Image

Появится вот такая вкладка:

Image

Кнопкой New создаем новый инструмент (Tool) для компиляции в Протезусе из папки:

C:\Program Files\Labcenter Electronics\Proteus 6 Professional\Tools\ASM8080\ASM8080.exe

ASM8080 - будет зарегистрированное название инструмента, ASM8080.exe - его исполняемый файл.

Расставляем, как на рисунке все расширения файлов и переменную %1 для передачи компилятору
имени исходного файла.
Вьюер для LST-файла лучше не указывать - он будет слегка назойливо мешать. Но если надо -
здесь указывается путь к текстовому редактору или другому вьюеру, которым автоматически
будет показан LST-файл после компиляции.
Если выставить "галку" Always Build: - компиляция будет происходить при каждом старте симуляции
проекта, что не совсем удобно и даже мешает.
Охраняем настройки Кнопкой ОК.

В верхней строке меню через опцию Source выбираем следуюшую позицию:

Image

В выпавшем окне следует указать путь к своему любимому програмистскому редактору с контекстной
подсветкой кода и прочим "блэкджэком и ..т.д." :wink:

Image

У меня это - A Tech Group Professional Notepad. Если нужно - делаем коррекцию полей Open... Save...
Закрываем вкладку Кнопкой ОК.

Теперь в верхней строке меню через опцию Source выбираем вкладку исходного файла:

Image

И в открывшемся окне кнопкой New добавляем ассемблерный файл TENNISIO.ASM из папки проекта:

Image

C:\Program Files\Labcenter Electronics\Proteus 6 Professional\SAMPLES\Pong_i8080\TENNISIO.ASM

Указываем, чем будем его компилировать: инструмент ASM8080
И выставляем опцию -l, чтобы при компиляции создавался файл листинга.

Командная строка запуска получится такая:

C:\Program Fi...ols\ASM8080\ASM8080.exe TENNISIO.ASM -l

Сохраняем настройки Кнопкой ОК. IDE среда практически готова!

Если теперь в верхней строке меню через опцию Source кликнуть по имени файла TENNISIO.ASM -

Image

он откроется на редакцию в указанном Вами редакторе (у меня - вот так):

Image

А если через опцию Source верхней строки меню запустить компиляцию,

Image

то её процесс отобразит встроеный вьюер Proteus.

Image

Именно здесь сначала выскочит редактор LST-файла, если его указали в настройках, что мне кажется неудобным.

С другой стороны, если при компиляции случится ошибка:

Image

то редактор LST-файла её сразу покажет, иначе придется открывать LST-файл вручную в папке проекта.

Сформированные компилятором файлы помещаются в папку проекта.
TENNISIO.LST
TENNISIO.BIN
TENNISIO.HEX


Файл .BIN или .HEX указываются в качестве "прошивки" ПЗУ проекта, и проект можно запускать на симуляцию.

С таким вот IDE я привык работать с мироконтроллерами PIC, теперь это можно задействвать и для
проектов на z80(i8080).
Желаю приятной работы! :lol:


P.S. Если кто опробует работу с макросами Intel 8080 Assembler - отпишитесь мне в личку, поскольку
макросы я не тестировал - вдруг что не так...

_________________
iLavr


16 Jan 2016 18:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Проверил я работу транслятора с макросами. Просто никогда не писал макросов под i8080.
Оказалось, практически так же как и везде... 8)

Вот такой макрос компилирует нормально:
Code:
print macro; объявление макроса
    LXI H,1000H
    CALL 0F818H
endm

    ORG  0000H;
START:
    print
    LXI SP,7FFFH; set Stack
    ...

A вот такой макрос компилятору не понравился:
Macro parameters are not supported! ("STR")
Code:
print macro STR; объявление макроса
    LXI H,STR
    CALL 0F818H
endm

    ORG  0000H;
START:
    print
    LXI SP,7FFFH; set Stack
    ...

_________________
iLavr


16 Jan 2016 20:17
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Тут что хорошо - по тексту исходников (а исходники откомментированы обильно) авторы везде
ссылаются, как ни странно, на конкретные положения от Intel, на основе которых они обрабатывают
ту или иную ситуацию.

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

Так что с такими добротными исходниками всё поправимо.

Ну и хотя я несколько торопился, поскольку праздники кончились и пора бросать хобби и браться за
серьезную работу, ибо поднакопилось уже, но успел я заметить, что исправленный мной
анахронизм "всё, что начинается с 1-й позиции строки - это метки" авторы тоже придумали не сами.

А что касается макросов с параметром, то я под К580ВМ80А их не юзал никогда - ну не было их в тех
наших старых ассемблерах, но если они сильно понадобятся - можно и добавить, ибо исходники открытые.
Но я вчера сам вспоминал, как они должны выглядеть макросы, ибо пользовался ими еще под ассемблером
для PIC - ну не скажу, что я в принципе испытал прилив энтуазизма!

Intel 8080 Assembler поддерживает еще такую полезную вещь, как #include, хотя меня это всегда
больше путает - вечно забываешь, чего там #include, поскольку не перед глазами... :wink:


P.S. Всех - с прошедшими Новогодними каникулами! Let's 'arbaiten'! :lol:

_________________
iLavr


17 Jan 2016 06:21
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Приветик Всем!!!
С прошедшими праздниками!!
Тема продолжает жить!

Некоторые особенности и мысли по поводу модели x80:

В проекте можно использовать только один проц.
Тормознутость имеет место быть по причине того, что все обращение к периферии
проходит через proteus (в отличии от микроконтроллеров).

В режиме останова можно посмотреть выполняемую команду и содержимое регистров.
Если исходник/листинг программы преобразовать в файл с расширением std или stb (точно
не помню - надо глянуть в примерах proteus - формат довольно понятный) то отладку можно
проводить как в нормальном IDE.


17 Jan 2016 09:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
Тормознутость имеет место быть по причине того, что все обращение к периферии
проходит через proteus (в отличии от микроконтроллеров).

Сам процессор весьма шустрый - тест делает даже на моем любимом убогом PII-360MHz
очень быстро, особенно когда я частоту выставил 2000000 Hz. :wink:

Тормознутость в моем проекте Tennis_i8080 связана в значительной мере с моделью LCD
индикатор Nokia 3310
, поскольку он занимается отрисовкой на экран.

По этой же причине у меня там процессор на тактовой частоте 500000 Hz - если больше,
то индикатор Nokia 3310 начинает отрисовываться рывками где-то по трети своего экрана.

Ну на быстрых машинах этого не заметно, просто у меня старый ноут великолепно расточен
для работы - никак не обустрою также хорошо новый ноут с Intel Atom 1.8 GGz.


И, кстати, насчет модели LCD индикатор Nokia 3310: никто не встречал её вариант без
надписи Demo Version ?

Image

Мне кажется, в ней работают с альфа-каналом или прозрачностью - а это сильнее её тормозит.

Я сам пробовал написать модель LCD по имеющимся в сети исходникам, просто вывод на
экран работает гораздо быстрее!

_________________
iLavr


17 Jan 2016 10:15
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
Если исходник/листинг программы преобразовать в файл с расширением std или stb (точно
не помню - надо глянуть в примерах proteus - формат довольно понятный) то отладку можно
проводить как в нормальном IDE.

Посмотрел в своем Proteus-e, скорее всего это файл с расширением .SDI, потому как для языков
высокого уровня генерируется .cof-файл для отладки.

Надо будет поинтересоваться, что у него за формат...

P.S. Да, действительно, файл .SDI... раскопал вот:
Quote:
Чтобы отлаживать программу на ассемблере в Proteus нужен файл с расширением *.SDI
Для AVR он генерируется с помощю небольшой утилитки из папки ...\AVRASM, и имя той программы avrddx.EXE
Чтобы сгенерировлть нужный для отладки *.SDI нада написать в командной строке:
C:\...\..\AVRASM\avrddx EXTRAM1.LST

И утилита создаст файл EXTRAM1.SDI .


P.P.S. Ну и формат файла .SDI действительно несложен, если это он:
Quote:
Запись содержит 4 поля:
1 - адрес ячейки памяти
2 - машинный код операции
3 - метка
4 - текст исходной программы

Все поля разделены запятыми.

Например:
1 - 2 - 3 - 4
0003,00,MainLoop,MainLoop: nop


В тех строчках, где есть адрес можно ставить брейкпоинт.

_________________
iLavr


17 Jan 2016 11:10
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Что-то у меня этот фокус с .SDF-файлом не прошел... :osad:

Быстренько я сделал в редакторе .SDF-файл, вроде нигде не ошибся...
Code:
,,,  ;-------------------------------;
,,,  ;   TENNIS.ASM  15.08.2010      ;
,,,  ; веpсия под RAMFOS минимальная ;
,,,  ;-------------------------------;
,,,
,,,        00 00      ORG  0000H;
,,START:,
0000,31 FF 7F,,      LXI SP,7FFFH; set Stack
0003,CD 2D 00,,      CALL INIVARS; init var-s in RAM
0006,CD 2E 00,,      CALL CLS
,,,  ; 21 C8 06 13 20 0C
,,,  ;~~~~~~~~~~~~~~~~INIT LCD~~~~~~~~~~~~~~~~~~~~~
0009,CD 2B 00,,      CALL LCD_RST
000C,3E 21,,      MVI  A,21H
000E,CD 2C 00,,      CALL LCD_COM
0011,3E C8,,      MVI  A,0C8H
0013,CD 2C 00,,      CALL LCD_COM
0016,3E 06,,      MVI  A,06H
0018,CD 2C 00,,      CALL LCD_COM
001B,3E 13,,      MVI  A,13H
001D,CD 2C 00,,      CALL LCD_COM
0020,3E 20,,      MVI  A,20H
0022,CD 2C 00,,      CALL LCD_COM
0025,3E 0C,,      MVI  A,0CH
0027,CD 2C 00,,      CALL LCD_COM
002A,76,,        HLT
,,,  ;~~~~~~~~~~~~~~~~CLEAR LCD~~~~~~~~~~~~~~~~~~~~~
,,LCD_RST:,
002B,C9,,        RET
,,LCD_COM:,
002C,C9,,        RET
,,INIVARS:,
002D,C9,,        RET
,,CLS:,
002E,C9,,        RET
,,,        END


Запустил проект в режиме отладки, а он отладочного окна не показывает... :osad:

Я так думаю, что поскольку у нас программа не в самом процессоре, а в ПЗУ, Proteus не понимает,
что надо включать отладчик для .SDF-файла прошивки ПЗУ.

В других проектах программа "внутри процессора" и там отладчик включают вот так:
Attachment:
SDIDEBUG.gif
SDIDEBUG.gif [ 22.52 KiB | Viewed 15111 times ]

А у нашего такого меню не выкатывают. Да и откуда ему знать - что он пользует программу
TENNISIO.hex из ПЗУ - U4, к которой прилагается
TENNISIO.sdi.

Я попробовал Proteus обмануть и в текстовых свойствах добавил ему строку:
PROGRAM=TENNISIO.hex
но что-то он на это не купился... :-?

_________________
iLavr


17 Jan 2016 13:21
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Быстренько я сделал в редакторе .SDF-файл, вроде нигде не ошибся...

Действительно, нигде я не ошибся, и .SDF-файл создал правильный.

Я открыл первый попавшийся проект с PIC16F84A, и подсунул ему вот эти файлы:
TENNISIO.hex
TENNISIO.sdi.
После чего дал команду - шаг в отладку, и проект с PIC16F84A отработал всё четко...
Attachment:
SDI_PIC16.gif
SDI_PIC16.gif [ 9.37 KiB | Viewed 15108 times ]

Либо у меня Proteus зело старый, что может быть, (v 6.7 Pro).
Либо сам Proteus не имеет информации, что следует подсунуть .SDF-файл при отладке нашему ЦПУ.
Я склонен к этой версии, т.к. у других микроконтроллеров Proteus-у известен .НЕХ-файл программы
и он использует в отладке одноименный .SDF-файл.

_________________
iLavr


17 Jan 2016 14:17
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
Если исходник/листинг программы преобразовать в файл с расширением std или stb (точно
не помню - надо глянуть в примерах proteus - формат довольно понятный) то отладку можно
проводить как в нормальном IDE.
Если предполагалось, что при наличии .SDI-файла отладка осуществляется сугубо за счет возможностей ISIS.EXE,
то этого, на мой взгляд, не произойдет, если функции по отладке не прописаны в модели.
А в модели x80.dll они, судя по всему, не прописаны.

Насколько я посмотрел HELP по Proteus VSM SDK, то отладочным окном управляют несколько функций VSM API:
Attachment:
SDIHELP.gif
SDIHELP.gif [ 19.15 KiB | Viewed 15105 times ]

И самая первая из них как раз и указывает имя отладочного .SDI-файла: setfile(CHAR *ddxfile).

Для того чтобы по имени .НЕХ-файла сформировать имя необходимого .SDI-файла, во всех dll-
библиотеках процессорных моделей явно присутствует сигнатура SDI:
Attachment:
SDISIGN.gif
SDISIGN.gif [ 3.83 KiB | Viewed 15105 times ]

А в библиотеке x80.dll модели Z80 сигнатуры SDI я не нашел. Следовательно, модель Z80 на .SDI-файл
функцией setfile(CHAR *ddxfile) не указывает, позтому он не загружается и отладка в окне не происходит.
Что, собственно, и наблюдается в действительности.

Эх... сначала так обрадовался я, что так всё просто! :lol: А оно совсем просто не бывает... :osad:

_________________
iLavr


17 Jan 2016 17:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Насколько я посмотрел HELP по Proteus VSM SDK...

И весь механизм-то такой красивой отладки в IDE вырисовывается довольно-таки примитивным!
Я-то несколько наивно думал, что при отсутствии отладочного .SDI-файла, у моделей есть свой
собственный встроенный дизассемблер... :-?

Но всё несколько прозаичней: при компиляции создается этот самый .SDI-файл с форматированной
отладочной информацией, самое главное в которой - столбец адресов.
Attachment:
SDI_Z80.gif
SDI_Z80.gif [ 7.63 KiB | Viewed 15091 times ]

Proteus ISIS умеет только красиво показать этот .SDI-файл, который указывают ему из модели.

А далее в пошаговом прохождении модель передает Proteus ISIS текуший адрес на каждом шаге, а уже
сам ISIS находит нужную строку в .SDI-файле и подсвечивает её на экране.

Так же по столбцу адресов отслеживается брейк-поинт, если модель его указала, ну и т.д.

В случае с нашим процессором z80 ситуация несколько осложняется тем, что программа расположена
вне процессора и может быть из нескольких HEX-файлов.
К примеру, в ПЗУ - некий BIOS.HEX, а в ОЗУ - PROG.HEX. Я не уверен, что Proteus ISIS умеет работать с
несколькими .SDI-файлами.
Тогда, вероятно, необходимо сформировать общий .SDI-файл, и в любом случае его надо явно указать
модели, видимо, как-то так:
Attachment:
SDIMENU.gif
SDIMENU.gif [ 9.62 KiB | Viewed 15091 times ]

Добавить эту строку в меню не сложно, в текстовом скрипте модели её вводят вот так:
{ITFMOD=Interface Model,HIDDEN STRING}
{PROGRAM=Program File,FILENAME,FALSE,,Intel Hex Files/*.HEX}


Но вот как формировать сам .SDI-файл в таком случае придется, видимо, серьезно продумать...

_________________
iLavr


18 Jan 2016 07:15
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
перечитал еще раз всю тему - много чего вспомнилось.

Надо будет попробовать подключить SDI.
Кстати HEX можно подключать не один (см. пример BASIC52 в proteus) но наверное
это особенности модели.

К сожалению у меня все развалилось - даже проект не собрался.
Да и proteus несколько раз переставлял.
Буду ремонтировать...

И вспомнилось - хотел встроить в модель дизассемблер, но! - для этого пришлось-бы читать
память с формированием управляющих сигналов и всего прочего. А вдруг там в схеме чего-то
еще навешано нестандартного...


19 Jan 2016 20:32
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
Кстати HEX можно подключать не один (см. пример BASIC52 в proteus) но наверное
это особенности модели.

Да, действительно, HEX можно подключать не один:
Code:
Instantiating SPICE models...
[U1] 2000-7FFF is CODERAM
[U1] 0000-7FFF is DATARAM
[U1] Loading HEX file 'BASIC-52.HEX'.
[U1] Read total of 6673 bytes from file 'BASIC-52.HEX'.
[U1] Loading HEX file 'FP-52.HEX'.
[U1] Read total of 1522 bytes from file 'FP-52.HEX'.

Но что самое приятное, и .SDI-файл Proteus ISIS понимает не один, а умеет между ними переключаться! :o
Attachment:
2SDI_52.gif
2SDI_52.gif [ 9.47 KiB | Viewed 11735 times ]


aav8 wrote:
И вспомнилось - хотел встроить в модель дизассемблер, но! - для этого пришлось-бы читать
память с формированием управляющих сигналов и всего прочего.

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

Выход мне видится вот какой: процессору полюбому надо сообщить имя HEX-файла, чтобы он мог в отладке сообщить
Proteus ISIS имя .SDI-файла для пошаговой символьной отладки.

Ну а раз нам внутри программы моделирования процессора известно имя исполняемого HEX-файла, то по идее никто
же не может нам запретить читать этот файл не из ПЗУ, а непосредственно из HEX-файла, забегая дизассемблером вперед? :roll:

Подводные камни, конечно, есть... но это одно из довольно простых возможных решений, как мне кажется...

_________________
iLavr


19 Jan 2016 21:08
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
А вот интересный моментик:
Делал недавно небольшой проект на WinAVR из нескольких ASM, получал ELF, который грузил в Proteus.
При отладке в окне с исходниками тоже можно было выбирать конкретный файл.
SDI файлов никаких не было.
Как так могло получиться?
Proteus это сообразил или модель?
Я склоняюсь к мысли, что это модель.

PS:
Гляньте пж-та как аналогичное реализовано в модели 8086.
У меня к сожалению сейчас кроме компа с чистой системой ничего нет.


19 Jan 2016 22:32
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 295 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15, 16, 17 ... 20  Next

Who is online

Users browsing this forum: Bing [Bot] and 16 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.