Исправил и перезалил.
Вид для печати
Patron, Честно говоря я не до конца всё понимаю. Просто прогнал тест SPEED.
Результат на адаптере шины 376тыс. оп./сек рег-рег и 176тыс. оп./сек рег-пам.
На эмуляторе 184 и 88.
Частота на обоих 5,3Мгц.
Хотя адаптер медленнее по загрузке.
Это потому что летняя и осенняя версии эмулятора ДВК дефектные - там частота прерываний таймера платы МС1201 при работе с процессором 1801ВМ1 не 50 Гц, а 100 Гц.
Если взять на замену pdp11.exe из свежего комплекта адаптера МПИ ( который выложен здесь сегодня ) - там эта ошибка уже исправлена.
Patron, Ещё вопрос, как правильно задействовать модель процессора ещё и на контроллере MY.
Наверное так.
Чтобы заменить в MY\MY.cfg абстрактный процессор на адаптер МПИ с подключенной МПИ-моделью процессора - надо или скопировать файл MPI_module.em из каталога MODULES\ в каталог MY\, или прописать в описании модуля MPI_module полный путь к файлу MPI_module.em в каталоге MODULES\
Т.е. скопировать и написать так:
Или не копировать и написать (например) так:Код:[modules]
MPI_module = MPI_module.em
Код:[modules]
MPI_module = G:\FTP\DVK1+MPI\MODULES\MPI_module.em
После чего внести следующие дополнительные правки:
Код:[objects]
MY_CPU = MPI_module:MPI_Adapter
VM1 = MPI_module:MPI_1801VM1
[links]
MY_CPU + VM1
Чтобы выводить листинг состояний шины - надо направить его на какую-то консоль и включить режим дизассемблирования.
Код:[links]
MY_CPU [DisAsm] > Debug
[MY_CPU.ini]
InitialStateOf[DisAsm] = 1
Есть ещё один момент, что эмулятор платы MY_Board в текущем варианте вместо сигнала EVNT выставляет IRQ и передаёт вектор 0100, но каких-то проблем из-за этого быть не должно.
...
Сейчас проверил - всё работает, но адаптер при первом использовании обновлённого конфига MY\MY.cfg сообщил о нескольких сбоях синхронизации дизассемблера - на эмуляцию это не влияет ( и даже не влияет на листинг состояний шины ), но в моменты сбоев синхронизации названия выполняемых процессором действий в листинге дизассемблера могут не совпадать с действиями, реально выполненными МПИ-моделью.
...
Ещё интересный момент - первый вариант описания модуля сработал даже без копирования файла модуля MPI_module.em из каталога MODULES\ в каталог MY\ :
Возможно сыграло роль то, что модуль уже был загружен родительским конфигом.Код:[modules]
MPI_module = MPI_module.em
как всё сложно,offtop
целый язык программирования уже получается. Похоже даже защита от коллизий требуется? ))) А все варианты возможных CFG вряд ли автор даже сам сможет подробно рассмотреть в разумном по объёму справочном тексте. Или я сгущаю краски? Или всё будет и дальше усложняться как снежный ком?[свернуть]
Patron, Выложите рабой конфиг пожалуйста. У меня после набора 172140.....итд G вываливается 000002.
Конфиг такой:
MY\MY.cfg
Код:;
; pdp11 emulator virtual device config file.
;
[export]
BusBridge (socket) {PDP11A16}
VP1-128 (interface) [StorageMediaUserInterface]
VP1-128 (interface) [StorageDriveInterface]
[modules]
Ядро = Main_module.em
CPU_module = CPU11_module.em
DSK_module = DSK_module.em
Port_module = Port_module.em
Terminal_module = Terminal_module.em
;;MPI_module = G:\FTP\DVK1+MPI\MODULES\MPI_module.em
MPI_module = MPI_module.em
[objects]
Debug = Ядро:Console
MY_bus = Ядро:PDP11A16
;;MY_CPU = CPU_module:1801VM1
MY_CPU = MPI_module:MPI_Adapter
VM1 = MPI_module:MPI_1801VM1
MYBoard = CPU_module:MY_Board
BusBridge = CPU_module:MY_BusBridge
VP1-128 = DSK_module:VP1-128
Power_Button = Ядро:SB_StateFlashButton
MY0_Button = Ядро:SB_DriveButton
MY1_Button = Ядро:SB_DriveButton
MY2_Button = Ядро:SB_DriveButton
MY3_Button = Ядро:SB_DriveButton
[links]
MY_bus & MY_CPU | MYBoard | VP1-128
MY_CPU + VM1
MY_CPU [DebugOut] > Debug
MYBoard > BusBridge
BusBridge [Power] > MY_bus [Power]
Config + Power_Button + MY_bus
Config + MY0_Button + VP1-128
Config + MY1_Button + VP1-128
Config + MY2_Button + VP1-128
Config + MY3_Button + VP1-128
; === INI SECTIONS ===
[MY_CPU.ini]
CPU_Frequency_KHz = 4000
CPU_SpeedLimit_KIPS = True
DisAsmBottomAddr = 0
DisAsmTopAddr = 0177777
InitialStateOf[DisAsm] = 0
SaveChangesFor[DisAsm] = 0
InitialStateOf[StepMode]=0
SaveChangesFor[StepMode]=0
MaxLoopCommandsToHide=32
CPU_Type=VM1A
Show_DAsm=Yes
Show_CLC1=No
Show_CLC0=Yes
Show_nCLK=No
DisAsmStart_nCLK=0
DisAsmStop__nCLK=0
[MYBoard.ini]
RAM_Latency_NS = 1000
ROM_Latency_NS = 250
ROM_DataFile = 255.dat
;; ROM_DataFile = 091.dat
;; ROM_DataFile = 092.dat
;; ROM_DataFile = 093.dat
SEL1_Data = 010002
[MY_bus.ini]
InitialStateOf[Pause] =0
SaveChangesFor[Pause] =0
InitialStateOf[Power] =1
SaveChangesFor[Power] =0
InitialStateOf[Reset] =0
SaveChangesFor[Reset] =0
InitialStateOf[HALT] =0
SaveChangesFor[HALT] =0
InitialStateOf[Timer] =1
SaveChangesFor[Timer] =0
[Config.ini]
ExtendedStartLog=0
InitialStateOf[StatusBar]=1
SaveChangesFor[StatusBar]=0
InitialStateOf[ControlBar]=0
SaveChangesFor[ControlBar]=0
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
RunEmulationInParentThread=0
ActiveWindowHandle=
ActiveConfigID=
[Debug.ini]
TabTitle =""
InitialStateOf[StatusBar]=0
SaveChangesFor[StatusBar]=0
InitialStateOf[ControlBar]=0
SaveChangesFor[ControlBar]=0
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
DumpMode = 1
LeftDumpSeparator=«
RightDumpSeparator=»
SeparateWindow_X0_px=0
SeparateWindow_Y0_px=0
SeparateWindow_DX_px=800
SeparateWindow_DY_px=600
InitialStateOf[SeparateWindow]=0
SaveChangesFor[SeparateWindow]=1
PrinterMode=0
[Power_Button.ini]
SB_Part_Data = nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px = 0
TextFieldText =
ButtonPushMode = 2
IsInverted = 0
ButtonON_Text = "Power"
ButtonOFF_Text = "Power"
ButtonWidth = 100
ButtonHeight = 18
ButtonFontSize = 12
ButtonFontWeight = 600
StateName = "Power"
PushedButton_Text_X_Offset_Px = 1
PushedButton_Text_Y_Offset_Px = 2
PoppedButton_Text_X_Offset_Px = 0
PoppedButton_Text_Y_Offset_Px = 1
ButtonON_TextColor = 0,0,0
ButtonOFF_TextColor = 0,0,0
ButtonON_Background = 160,205,160
ButtonOFF_Background = 1,0,0
Is_PoppedButton_Border_ButtonLike = 1
Is_PushedButton_Border_ButtonLike = 1
DoCenterAlignButtonText = 1
LightsOFF_StateName=Power
[MY0_Button.ini]
SB_Part_Data=nPosition[2] | nPriority[2] | bHidden[0]
Unit_Number=0
[MY1_Button.ini]
SB_Part_Data=nPosition[3] | nPriority[2] | bHidden[0]
Unit_Number=1
[MY2_Button.ini]
SB_Part_Data=nPosition[4] | nPriority[2] | bHidden[0]
Unit_Number=2
[MY3_Button.ini]
SB_Part_Data=nPosition[5] | nPriority[2] | bHidden[0]
Unit_Number=3
[VP1-128.ini]
MY0=
MY1=
MY2=
MY3=
[VM1.ini]
MicrocodeStepping=A
Результат такой:
Код:160442
@172140/000040 37
172142/000004 0^
172140/000000 /000000 /000040
@G
SL V08.00 [SW] Сторожевых С.В. 1988
RT-11SJ (Y) V05.04 G
.SET USR NOSWAP
.SET EXIT NOSWAP
.SET TT SCOPE
.SET EM ON
.SET SL ON
.DAY
Время Дата
00:00:16 31-Дек-2014, Среда
.SH
TT
MY (Resident)
MY0 = DK , SY
SL (Loaded)
EM (Loaded)
LD
LP
16 free slots
.
У меня почти такой же, но опция дизассемблера не давала загрузится адаптеру.
Причем консоль Дизасм. контроллера MY выдавала данные с такой скоростью, что невозможно было что-то прочесть. При этом загрузка ПиСишного доходила до 32%. Отключил опцию- всё пошло.Код:InitialStateOf[DisAsm] = 1