Speccy - наш выбор!  
ZXPRESS
ZXTUNES
Virtual TR-DOS
World of Spectrum
ZX Spectrum Old Demos •

Go Back   Speccy - наш выбор! > Отечественные компьютеры > Эмуляторы отечественных компьютеров

Reply
 
Thread Tools Display Modes
Old 15th March 2012, 00:14   #1
Guru
 
Join Date: 11th September 2009
Location: Москва
Posts: 2,976
Thanks: 60
Thanked 1,785 Times in 1,099 Posts
Patron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant future
Default Изменение эмулируемой конфигурации. 2. Формат файлов конфигурации.

Изменение эмулируемой конфигурации.

Формат файлов конфигурации.
--------------------------------------------

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

Все файлы конфигурации имеют ( в основном ) следующий формат:
Code:
[section]
key = value
; comment
основанный на формате MS PrivateProfile для .ini-файлов.

Символ ';' имеет особый смысл и исключает строку из рассмотрения ( превращая её в комментарий ) только в том случае, когда является первым непробельным символом в строке.

Три секции в каждом .cfg-файле ( обычно располагающиеся в начале файла ) имеют специальное назначение.

...

Секция [modules] содержит объявления используемых модулей в формате:
Code:
имя_модуля = путь_к_файлу_модуля
Модули эмулятора - это обычные файлы .dll, переименованные в .em

Поиск файла модуля ( если путь к файлу модуля не исключает такой возможности ) вначале осуществляется в каталоге встроенных модулей. В комплекте поставки "эмулятора ДВК" все поставляемые модули встроены в файл pdp11.exe.

В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем каталога встроенных модулей отсутствуют.

Чтобы экспортируемые модулем объекты могли быть использованы в эмулируемой конфигурации - модуль должен быть объявлен в секции [modules].

...

Секция [objects] содержит объявления используемых объектов в формате:

Code:
имя_объекта = имя_модуля:тип_экспортируемого_модулем_объекта
В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем списка экспортируемых модулем объектов отсутствуют.

В процессе загрузки файла конфигурации - объекты создаются в том порядке, в котором они объявлены в секции [objects], и если объект создаёт окно средствами модульного API - такие окна располагаются на панеле закладок объекта Config в порядке создания "владеющих" ими объектов ( слева направо ).

Все имена объектов, объявленных в секции [objects], должны быть уникальны (иначе эмулятор будет ругаться).

...

Секция [links] содержит строки ( несовместимые с форматом MS PrivateProfile для .ini-файлов ), описывающие способы динамического связывания созданных объектов на специальном языке описания связей ( который будет рассмотрен позже ).

В секции [links] "поведение" символа ';' отличается от других секций. В любых других секциях символ ';' "работает" ( превращая строку в комментарий ) только в самом начале строки, а в секции [links] - символ ';' означает начало комментария в любой позиции.

Это позволяет "отключать" несколько последних элементов в строке описания группового присоединения, без необходимости их полного удаления из строки.

...

Все остальные секции .cfg-файлов имеют формат:

Code:
[имя_объекта.ini]
параметр = значение
; комментарий
и автоматически размещаются там объектами при их первом создании ( в том случае, если объект имеет хотя бы одно хранимое состояние или хотя бы один хранимый параметр ).

Если изменить имя какого-либо из объектов, создаваемых в ранее загружавшемся файле конфигурации - в этом файле конфигурации появится новая секция, тогда как "старая и бесхозная" - никуда не денется. Это сделано для того, чтобы при временном "выкомментировании" объектов из конфигурации - секции с их настройками не пропадали.

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

Last edited by Patron; 14th January 2014 at 20:19.
Patron is online now   Reply With Quote
The Following User Says Thank You to Patron For This Useful Post:
hobot (15th March 2012)
Old 15th March 2012, 18:16   #2
Guru
 
Join Date: 11th September 2009
Location: Москва
Posts: 2,976
Thanks: 60
Thanked 1,785 Times in 1,099 Posts
Patron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant futurePatron has a brilliant future
Default Изменение эмулируемой конфигурации. 3. Использование консолей.

Изменение эмулируемой конфигурации.

Свойства окон объектов.
-----------------------------------


Чтобы главное окно объекта попало в закладки конфига - оно должно быть создано при помощи модульного API. Все такие окна принадлежат к базовому классу Workfield, а автоматически создающие их объекты - к базовому классу WorkfieldOwner. Это обеспечивает универсальное единообразие свойств главных окон объектов модульного API.

Для выяснения этих свойств - создадим пустой файл, назовём его test.cfg и загрузим в эмулятор командой меню "Файл -> Открыть":

Скрытый текст

[свернуть]


Открыв затем файл test.cfg в текстовом редакторе - можно обнаружить, что объект Config уже "прописал" туда свою секцию:
Code:
[Config.ini]
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
ExtendedStartLog=0
ActiveWindowHandle=
ActiveConfigID=
InitialStateOf[ControlBar]=0
SaveChangesFor[ControlBar]=0
InitialStateOf[StatusBar]=0
SaveChangesFor[StatusBar]=0
Изменим значения состояний ControlBar и StatusBar на 1:

Code:
[Config.ini]
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
ExtendedStartLog=0
ActiveWindowHandle=
ActiveConfigID=
InitialStateOf[ControlBar] = 1
SaveChangesFor[ControlBar] = 0
InitialStateOf[StatusBar]  = 1
SaveChangesFor[StatusBar]  = 0
и снова запустим эмулятор:

Скрытый текст

[свернуть]

Сравнив результаты можно заметить, что выше и ниже окна закладок появились полосы для размещения виджетов ( верхняя называется ControlBar, а нижняя - StatusBar ).

Отключим верхнюю полосу, установив InitialStateOf[ControlBar] опять в 0 и добавим в файл test.cfg строки, необходимые для создания консоли:

Code:
[modules]

Main = Main_module.em

[objects]

Con  = Main:Console


[Config.ini]
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
ExtendedStartLog=0
ActiveWindowHandle=
ActiveConfigID=
InitialStateOf[ControlBar] = 0
SaveChangesFor[ControlBar] = 0
InitialStateOf[StatusBar]  = 1
SaveChangesFor[StatusBar]  = 0
Снова запустим эмулятор:

Скрытый текст

[свернуть]

Открыв ещё раз файл test.cfg в редакторе - можно обнаружить, что там появилась новая секция, размещённая созданным экземпляром консоли:

Code:
[Con.ini]
TabTitle=""
InitialStateOf[ControlBar]=1
SaveChangesFor[ControlBar]=0
InitialStateOf[StatusBar]=1
SaveChangesFor[StatusBar]=0
LeftDumpSeparator="«"
RightDumpSeparator="»"
InitialStateOf[Dump]=1
SaveChangesFor[Dump]=0
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
Как видим - здесь состояния ControlBar и StatusBar имеют по умолчанию значения 1, поэтому, перейдя на закладку Con можно окончательно убедиться, что окно консоли имеет свои собственные полосы виджетов и что по умолчанию они включены:

Скрытый текст

[свернуть]


То же справедливо и для окон "свежесозданных" объектов типа Terminal - у них верхняя и нижняя полосы главного окна также по умолчанию включены:

Скрытый текст


Code:
[modules]

Main = Main_module.em
Term = Terminal_module.em

[objects]

Con  = Main:Console
VTxx = Term:Terminal
[свернуть]

...

Все главные окна объектов ( кроме окна корневого конфига ) имеют параметр TabTitle, определяющий название закладки. По умолчанию этот параметр не задан и тогда название закладки главного окна объекта совпадает с именем объекта, указанным при его создании.

Однако, если в нашем тестовом файле конфигурации test.cfg изменить параметры TabTitle консоли и терминала на "Консоль", то результат может показаться довольно оригинальным:

Скрытый текст

[свернуть]

Last edited by Patron; 29th December 2012 at 14:01.
Patron is online now   Reply With Quote
The Following User Says Thank You to Patron For This Useful Post:
hobot (15th March 2012)
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +4. The time now is 02:42.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Map Яндекс.Метрика