Организация и функционирование ЭВМ\Помощь по HLCCAD\
Модель SAD

Модель Stand Along Device (SAD)

Модель SAD представляет собой устройство, которое не имеет проекта-владельца. Такими моделями часто являются модели процессоров и модели устройств, поведение которых описывается в специализированном внешнем редакторе с последующей возможностью автоматической генерации схемы.
Один из примеров - таблицы истинности. Изначально модель описывается с помощью специализированного табличного редактора. Такого описания достаточно для того чтобы моделировать поведение устройства. Но для этого устройства можно также автоматически построить схему (в терминах системы) с использованием более простых синтезируемых устройств для дальнейшей модификации.
Такой подход позволяет сократить время разработки устройства с использованием такого рода высокоуровневых устройств.

Описание устройств SAD

Каждая модель SAD содержит следующие параметры:

При запуске системы производится поиск INI файлов в подпапке CPU (CPU\*.INI). Параметры моделей располагаются в секции CPUList, в которой указаны значения:

Пример файла:
[CPUList]
Count=1
Name0=I8051
ASMFile0=..\..\As\RTAsmStub.dll
ASMProc0=AsmI8051
ModelDLLFile0=I8051.dll
ModelDLLProc0=CPU

Примечание: все имена файлов указаны относительно INI файла.

Создание устройства SAD

В редакторе схемы вызовите локальное меню и выберите пункт "Новый SAD" и имя устройства. После создания корпуса производится вызов процедуры-конструктора, расположенной в библиотеки ModelDLLFile с именем ModelDLLProc_Creator. Единственным параметром в эту процедуру передаётся указатель на интерфейс IExtParameterType.

Ассемблер

Функция ассемблера определена следующим образом:
Pascal:
type
TOnErrorProc = procedure (Code : integer; Line,Column : integer; Text : PChar); stdcall;
TOnNewFileProc = procedure (FileName : PChar); stdcall;
TOnNewLineProc = procedure (Line : integer); stdcall;
TAsmProc = procedure(DLLPath,AsmFile,Args : PChar; OnError : TOnErrorProc; OnNewFile : TOnNewFileProc; OnNewLine : TOnNewLineProc; LangName : PChar); stdcall;
C++:
typedef void (__stdcall _OnErrorProc) (DWORD code, DWORD Line, DWORD Column, char* Text);
typedef void (__stdcall _OnNewFileProc) (char* FileName);
typedef void (__stdcall _OnNewLineProc) (DOWRD Line);
typedef void (__stdcall AsmProc) (char *DLLPath, char* AsmFile, char* Args, TOnErrorProc* OnError, TOnNewFileProc* OnNewFile, TOnNewLineProc* OnNewLine, char* LangName);
где:
DLLPath - имя DLL файла ассемблера
AsmFile - имя асемблируемого фацла
Args - аргументы (описание см. ниже)
OnError - обработчик событий об ошибках
OnNewFile - обработчик компиляции файла
OnNewLine - обработчик компиляции строки исходного текста
LangName - названия текущего языка системы

Аргументы позволяют настроить компилятор под конкретное описание устройства. Строка аргументов генерируется системой автоматически. Строка начинается с префикса '-D'. Далее следуют название параметров и их значения. Параметры разделяются запятыми.
dvcName="Device name"
pin[PinName]_dim = разрядность контакта
prm[ParamName]_value = значение параметра устройства
Например:
-DdvcName="AT90S2313",pinRst_dim=1,prmCodeMemory_value="demo.avr"

Генерация и загрузка результата возлагается полностью на ассемблер и саму модель.