PDA

Просмотр полной версии : Эмулятор ДВК



Страницы : 1 [2] 3 4 5 6 7 8

Alex_K
30.12.2013, 23:31
Можно подставить и посмотреть, что получится. По адресу 177760 у меня на шине КМД ничего не эмулируется, поэтому при обращении туда будет Trap_To_04, о чём можно будет узнать в консоле "Debug" окна "MY".
Ну собственно, что и ожидалось.
Окно Debug MY:

Trap to 004 = 010004: MOV #9728., @#177760 ; 010006:023000 -> 177760:
BUS ERROR: Запись по пустому адресу: 177760
HALT Trap to 160006
BUS ERROR: Двойная ошибка шины !!!
Trap to 004 = 010004: MOV #9728., @#177760 ; 010006:023000 -> 177760:
BUS ERROR: Запись по пустому адресу: 177760
VT52:


160556
@172140/100040
172142/100004
Фатальная ошибка - TRAP4 не во время операции чтения/записи.

Patron
30.12.2013, 23:46
А что там вообще должно быть на шине КМД в старших адресах?
В описании КМД про это не написано.

Alex_K
30.12.2013, 23:59
А что там вообще должно быть на шине КМД в старших адресах?
В описании КМД про это не написано.
Собственно сам процессор 1801ВМ1 - 177700 - 177713.
Регистр SEL2 - 177714
Регистр SEL1 - 177716
Регистр команд 1801ВП1-095(-096) - 177100
Регистр данных 1801ВП1-095(-096) - 177102
Регистры 1801ВП1-128 - 177130 и 177132
Ну и для версий с памятью 1809РУ1(прошивка -091 и неофициальная -093) и 537РУ11(прошивка -092) - 177760.

Patron
31.12.2013, 00:11
После добавления ячейки памяти по адресу 177760 - все младшие прошивки заработали. Но что в принципе должно происходить при записи в эту ячейку ?

Alex_K
31.12.2013, 00:17
После добавления ячейки памяти по адресу 177760 - все младшие прошивки заработали. Но что в принципе должно происходить при записи в эту ячейку ?
Эти микросхемы SRAM сделаны специально под шину МПИ. По адресу 177760 задается начальный адрес ОЗУ, разрешение включения ее в адресное пространство, режим только_чтение или чтение_запись. Плюс к тому же объем памяти разный. У 1809РУ1 - 2 Кб, 537РУ11 - 512 байт.

Patron
31.12.2013, 00:34
Тогда в следующем релизе эмулятора на шине КМД появятся ячейки 177714 и 177760, а объём ОЗУ уменьшится до 2К байт ( сейчас там почему-то 4К байт ).

Alex_K
31.12.2013, 00:44
Для 537РУ11 регистр 177760:
15-09 - начальный адрес памяти;
08 - режим работы: 1 - ОЗУ, 0 - ПЗУ.

---------- Post added at 00:41 ---------- Previous post was at 00:36 ----------

Для 1809РУ1 регистр 177760:
15-11 - начальный адрес памяти;
10 - режим работы: 1 - ОЗУ, 0 - ПЗУ;
09 - вроде включение в адресное пространство: 1 - включить.

---------- Post added at 00:44 ---------- Previous post was at 00:41 ----------


Тогда в следующем релизе эмулятора на шине КМД появятся ячейки 177714 и 177760, а объём ОЗУ уменьшится до 2К байт ( сейчас там почему-то 4К байт ).
В версии с прошивкой -255 и памятью на 537РУ8/10 - действительно 4Кб. Но там память не поддерживает МПИ и она жестко включена в адресное пространство по адресу 020000, может быть она еще дублируется по адресам 030000-037777, но схемы нет, сказать точно об этом нельзя.

Patron
31.12.2013, 00:52
В версии с прошивкой -255 и памятью на 537РУ8/10 - действительно 4Кб.Тогда лучше оставить 4К, а особенности управления памятью не эмулировать, чтобы при смене в эмуляторе прошивки КМД - пользователю не надо было дополнительно настраивать подсистему памяти.

Alex_K
31.12.2013, 00:57
Тогда лучше оставить 4К, а особенности управления памятью не эмулировать, чтобы при смене в эмуляторе прошивки КМД - пользователю не надо было дополнительно настраивать подсистему памяти.
В принципе да, оставить 4К по адресу 020000, а для регистра 177760 сделать параметр включения в адресное пространство. Наверное будет достаточно. И можно пощупать -091-ю прошивку, ошибки в ней были.

Patron
31.12.2013, 01:11
для регистра 177760 сделать параметр включения в адресное пространствоА как он может помешать прошивке -255, если эта прошивка туда не лезет.

Когда при запуске MY.cfg с прошивкой -255 в таблице устройств на консоли конфига по адресу 177760 появится "Контроллер ОЗУ" - вряд ли это многих шокирует.

Alex_K
31.12.2013, 01:13
А как он может помешать прошивке -255, если эта прошивка туда не лезет.

Когда при запуске MY.cfg с прошивкой -255 в окне конфига по адресу 177760 появится "Контроллер ОЗУ" - вряд ли это многих шокирует.
Прошивка не лезет, но мало ли какие программы найдутся.

Patron
31.12.2013, 01:19
Прошивка не лезет, но мало ли какие программы найдутся.Пусть сначала найдутся.

Найти программу для КМД, которая не может нормально работать, если обращение по адресу 177760 не вызывает Trap_To_04 - это задачка для настоящих джедаев.

Alex_K
31.12.2013, 01:24
Пусть сначала найдутся.
Напишем.

Есть еще момент. Попробовал технологический режим, т.е. SEL1=10003, эмулятор подвис, хватает все процессорное время.

Patron
31.12.2013, 01:35
эмулятор подвис, хватает все процессорное время.У меня он подвис ещё раньше - при подключении прошивок -092 и -093 без адреса 177760 на шине КМД.

К следующему релизу с этим тоже надо разобраться.

Titus
31.12.2013, 01:46
Как зимнее время года, так у PDP-шников (включая отчасти и меня) обостряется активность) А летом всем лениво)

Patron
31.12.2013, 01:50
Если хочется попробовать младшие прошивки, не дожидаясь обновления эмулятора - по адресу 177760 на шину КМД можно посадить отладочный регистр CPUCSR:


[objects]
CPUCSR = CPU_module:CPUCSR

[links]
MY_bus & MY_CPU | MYBoard | VP1-128 | CPUCSR

[CPUCSR.ini]
CPUCSR_Address = 0177760

MiX
31.12.2013, 03:10
При конфигурации MY выскакивает окно :http://zx.pk.ru/attachment.php?attachmentid=44836&stc=1&d=1388444823

hobot
31.12.2013, 04:35
160556
@172140/000040 37
@172142/000004 0
@A?
@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 30-Дек-2013, Понедельник

.

Получилось ! ) Второй карман надо как то завести наверное )
У меня он просто не активный, зато 0-нулевой подсветка понравилась - очень помогает! Только не понял почему контроллера в default.cfg нету? Приходится стартовать отдельный конфиг? )И не совсем понятно как trk образ создавать и использовать? И почему такой формат - он будет всегда или только на момент отладки? Как с него напрямую файлы брать? Дискеты УК-НЦ должны ведь читаться без проблем и дискеты от MY должны норм. читаться в UKNCBTL так ведь?

---------- Post added at 03:52 ---------- Previous post was at 03:40 ----------

+++++++++++++++
Разобрался, не все файлы обновились )
Всё норм., первый в мире виртуальный MY запущен! )

---------- Post added at 04:35 ---------- Previous post was at 03:52 ----------

http://s4.hostingkartinok.com/uploads/images/2013/12/ee0fd5283882a53e2b0ce76eb84855a3.png как же всё таки вот эту информацию закрепить на вкладке VT52 или сделать постоянно видимой?

Ошибка вылетает когда в pdp.ini прописан жёстко MY.cfg

Patron
31.12.2013, 12:27
При конфигурации MY выскакивает окноУ меня тоже выскакивает. Типичный предновогодний релиз.

Patron
31.12.2013, 17:08
как же всё таки вот эту информацию закрепить на вкладке VT52Нужно добавить в конфиг создание интересующих кнопок и повесить эти кнопки на интересующую полосу интересующего окна.

Например, так:



[objects]
MY0_Button = Ядро:SB_DriveButton
MY1_Button = Ядро:SB_DriveButton
MY2_Button = Ядро:SB_DriveButton
MY3_Button = Ядро:SB_DriveButton

[links]
VT52 + MY0_Button + MY
VT52 + MY1_Button + MY
VT52 + MY2_Button + MY
VT52 + MY3_Button + MY

[VT52.ini]
InitialStateOf[StatusBar] = 1

[MY0_Button.ini]
SB_Part_Data=nPosition[1] | nPriority[2] | bHidden[0]
Unit_Number=0

[MY1_Button.ini]
SB_Part_Data=nPosition[2] | nPriority[2] | bHidden[0]
Unit_Number=1

[MY2_Button.ini]
SB_Part_Data=nPosition[3] | nPriority[2] | bHidden[0]
Unit_Number=2

[MY3_Button.ini]
SB_Part_Data=nPosition[4] | nPriority[2] | bHidden[0]
Unit_Number=3

Alex_K
04.01.2014, 18:58
Patron, а в эмуляторе в КМД работает вывод на терминал, если к регистру 177566 обращаются из КМД через окно? В данном случае старший адрес окна равен 177777, а обращение к регистру идет через 77566. Регистр 177564 вроде читается через окно, а вот вывод на экран не идет.

Patron
04.01.2014, 19:54
Patron, а в эмуляторе в КМД работает вывод на терминал, если к регистру 177566 обращаются из КМД через окно?Не работает.

Эмулятор порта терминала и эмулятор КМД выполняются в разных потоках, а обработка записи в регистры устройства из другого потока в эмуляторе порта терминала пока не предусмотрена.


Регистр 177564 вроде читается через окноРегистры читаются в режиме дизассемблера - без уведомления устройства, поэтому ( например ) при чтении регистра данных приёмника - бит готовности в регистре статуса не сбрасывается.

Изменить содержимое регистра статуса невозможно - ячейка изменится, но эмулятор устройства уведомления не получит и записанное в ячейку слово пропадёт.


В принципе - можно добавить в API устройств PDP-11 специальные вызовы "постороннего" чтения/записи регистров DMA_IO, которые можно будет вызывать как из своего, так и из чужого потока.

Alex_K
04.01.2014, 20:01
Не работает.

Эмулятор порта терминала и эмулятор КМД выполняются в разных потоках, а обработка записи в регистры устройства из другого потока в эмуляторе порта терминала пока не предусмотрена.
Жаль. С точки зрения работы аппаратуры это обращение к шине МПИ, и устройству не играет роли, процессор к нему обращается или другое устройство через ПДП.

Читается в режиме дизассемблера - без уведомления устройства, поэтому бит готовности в регистре статуса не сбрасывается.

Изменить содержимое регистра статуса невозможно - ячейка изменится, но эмулятор устройства уведомления не получит и записанное в ячейку слово пропадёт.
Я вообще-то читаю регистр статуса терминала 177564 и проверяю бит готовности в цикле. Если он не будет установлен, то вывод в 177566 прерывается. Собственно всегда был установлен и вывод в 177566 проходил.

Patron
04.01.2014, 20:37
С точки зрения работы аппаратуры это обращение к шине МПИ, и устройству не играет роли, процессор к нему обращается или другое устройство через ПДП.При абстрактной многопоточной эмуляции это играет роль.

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

Но ведь через запуск программы пользователя можно заставить реальный КМД работать с любым устройством на шине ДВК. Значит, надо будет добавить поддержку новых вызовов в эмуляторы порта терминала, порта принтера, платы МС1201 ( чтобы КМД мог изменять содержимое SEL1 ), процессора ВМ1 ( для доступа к регистрам ВЕ-таймера ), контроллера MX и даже микросхемы ВП1-128 ( вдруг КМД будет подключен к шине БК-0011, где есть своя ВП1-128 ).

В принципе, можно сделать и так.

Кстати, если хочется поработать напрямую с ВП1-128 - можно прицепить её на шину ДВК вместо контроллера MX:



[objects]
VP1-128 = DSK_module:VP1-128


[links]
;; bus & CPU | CpuBoard | HD | TerminalPort | PrinterPort | Booter | MX | MY
bus & CPU | CpuBoard | HD | TerminalPort | PrinterPort | Booter | MY | VP1-128


[VP1-128.ini]
MY0 = MY80_System.DSK
MY1 =
MY2 =
MY3 =

Alex_K
04.01.2014, 20:51
При абстрактной многопоточной эмуляции это играет роль.

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

Но ведь через запуск программы пользователя можно заставить реальный КМД работать с любым устройством на шине ДВК. Значит, надо будет добавить поддержку новых вызовов в эмуляторы порта терминала, порта принтера, платы МС1201 ( чтобы КМД мог изменять содержимое SEL1 ), процессора ВМ1 ( для доступа к регистрам ВЕ-таймера ), контроллера MX и даже микросхемы ВП1-128 ( вдруг КМД будет подключен к шине БК-0011, где есть своя ВП1-128 ).
Вообще-то реальный ДВК - это конструктор. Есть корзина, в которую вставляются платы. Каждая плата имеет адреса, на которые она реагирует, играет роль место в приоритетной цепочке при обслуживании VIRQ, а также ответа на запрос ПДП. Есть другие сигналы, на которые реагируют устройства, например BS, INIT.

Кстати, если хочется поработать напрямую с ВП1-128 - можно прицепить её на шину ДВК вместо контроллера MX:
Да пока интересно именно в составе КМД, если что программу можно загрузить и в СОЗУ с адреса 20000, что я и делал, пробовал выводить на терминал через "окно".

Patron
04.01.2014, 21:23
Вообще-то реальный ДВК - это конструктор.Модульный API - точно такой же конструктур. Проблема возникает при многопоточной эмуляции, когда два потока одновременно обращаются к одному устройству.

В принципе - может помочь введение межпоточной блокировки в обычный API обращения к устройству.

Если межпоточная блокировка решит проблему - в следующем релизе КМД сможет работать с любыми устройствами на шине ДВК.

BYTEMAN
04.01.2014, 21:28
Проблема возникает при многопоточной эмуляции, когда два потока одновременно обращаются к одному устройству.
а как такая проблема решалась на аппаратном уровне?

Alex_K
04.01.2014, 21:40
а как такая проблема решалась на аппаратном уровне?
На аппаратном уровне для захвата шины устройство выставляет сигнал DMR. После того, как процессор освободит шину, он выставляет сигнал DMG (на самом деле у устройств есть вход DMGI и выход DMGO для передачи сигнала по приоритетной цепочке). Получив сигнал DMG, устройство снимает сигнал DMR и ставит SACK, подтверждая захват шины. Процессор снимает DMG и освобождает шину. После этого, во время действия сигнала SACK, устройство может распоряжаться шиной МПИ по своему усмотрению. После снятия сигнала SACK управление шиной возвращается процессору.

Patron
04.01.2014, 21:42
а как такая проблема решалась на аппаратном уровне?Активное устройство должно было "захватить" шину перед выставлением адреса. Пока активен сигнал захвата шины - все остальные активные устройства должны ждать.

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

Alex_K
04.01.2014, 21:54
Кстати, по поводу захвата шины и процессора 1801ВМ1. Читал, что при захвате шины он позволяет захватившему устройству читать регистры межпроцессорной связи и таймера. А вот как обстоит с внешними регистрами SEL2 и SEL1? Формирует ли процессор в этом случае сигналы SEL2 и SEL1, если захватившее устройство выставило адрес 177714 или 177716? Ведь обычно регистр 177716 отвечает только на сигнал SEL1 и даже не надо формировать RPLY.

Patron
04.01.2014, 22:03
Кстати, по поводу захвата шины и процессора 1801ВМ1. Читал, что при захвате шины он позволяет захватившему устройству читать регистры межпроцессорной связи и таймера. А вот как обстоит с внешними регистрами SEL2 и SEL1? Формирует ли процессор в этом случае сигналы SEL2 и SEL1, если захватившее устройство выставило адрес 177714 или 177716? Ведь обычно регистр 177716 отвечает только на сигнал SEL1 и даже не надо формировать RPLY.Надо написать тестовую программу для КМД и дождаться, когда anonymous активирует свою ДВК-1 с КМД.

Alex_K
04.01.2014, 22:06
Надо написать тестовую программу для КМД и дождаться, когда anonymous активирует свою ДВК-1 с КМД.
Написать программу не проблема, а вот КМД надо с -255-й прошивкой, ибо программу придется переносить в СОЗУ, с "окном" из "окна" работать нельзя. А в КМД с 537РУ8 памяти много.

Patron
04.01.2014, 23:57
с "окном" из "окна" работать нельзя. А в КМД с 537РУ8 памяти много.Если всю подготовку провести в памяти ДВК, то "внутренняя" часть теста не слишком длинная:


Test:
Mov R0, (R2) ; Настроить окно на верхние адреса
Mov (R1), (R3) ; Запись из SEL1 в копию регистра данных
Trap4: ; или Trap4
Mov R5, SP ; Восстановить стек.
Return ; Завершение подпрограммы пользователя
Перед переходом в память КМД по команде JMP - надо настроить обработчик прерываний на метку Trap4 и подготовить R0, R1, R2 и R5.

R3 изначально указывает в КМД на то слово, которое будет записано в регистр данных после завершения программы пользователя.

ДВК-шная часть теста ждёт, когда КМД выполнит программу пользователя и выводит на экран содержимое регистра данных КМД.

Alex_K
05.01.2014, 00:03
Моя программа вывода надписи из КМД и проверки некоторых регистров:

.TITLE TSKMD1
.MCALL .PRINT,.EXIT
START: .PRINT #VER
5$: BIT #100,@#177564
BNE 5$
10$: BIT #40,@#172140
BEQ 10$
MOV #35,@#172140
20$: TSTB @#172140
BPL 20$
MOV #KMDPRG,@#172142
30$: BIT #40,@#172140
BEQ 30$
BIT #100,FLG1
BNE 31$
.PRINT #NEXEC
.EXIT
31$: BIT #200,FLG
BEQ 32$
.PRINT #A3PR
32$: BIT #1,FLG1
BNE 40$
.PRINT #AD3NPR
BR 41$
40$: .PRINT #AD3PR
BIT #2,FLG1
BEQ 41$
.PRINT #AD3N7
41$: BIT #400,FLG
BEQ 33$
.PRINT #A7PR
33$: BIT #4,FLG1
BNE 42$
.PRINT #AD7NPR
BR 43$
42$: .PRINT #AD7PR
BIT #10,FLG1
BEQ 43$
.PRINT #AD7N7
43$: .EXIT
FLG1: .WORD 0
VER: .ASCIZ /TEST KMD WINDOW ver.1/
NEXEC: .ASCIZ <16>/pODPROGRAMMA W kmd NE ZAPU]ENA/<17>
AD3PR: .ASCIZ <16>/aDRES 177564(/<17>/WINDOW/<16>/=3) PRISUTSTWUET/<17>
AD3NPR: .ASCIZ <16>/aDRES 177564(/<17>/WINDOW/<16>/=3) NE PRISUTSTWUET/<17>
AD7PR: .ASCIZ <16>/aDRES 17777564(/<17>/WINDOW/<16>/=377) PRISUTSTWUET/<17>
AD7NPR: .ASCIZ <16>/aDRES 17777564(/<17>/WINDOW/<16>/=377) NE PRISUTSTWUET/<17>
AD3N7: .ASCIZ <16>/bIT 7(gp) W 177564 NE USTANOWLEN/<17>
AD7N7: .ASCIZ <16>/bIT 7(gp) W 17777564 NE USTANOWLEN/<17>
A3PR: .ASCIZ <16>/aDRES 160000(/<17>/WINDOW/<16>/=3) PRISUTSTWUET/<17>
A7PR: .ASCIZ <16>/aDRES 17760000(/<17>/WINDOW/<16>/=377) PRISUTSTWUET/<17>
.EVEN
KMDPRG: MOV #20000,R0
MOV #KMDPR1+40000,R1
MOV #<KMDEND-KMDPR1>/2,R2
1$: MOV (R1)+,(R0)+
SOB R2,1$
JMP @#20000
KMDPR1: MOV @#177102,SAVRD
MOV 74(R3),SAV4
MOV #<TR4-KMDPR1+20000>,74(R3)
BIS #100,FLG
MOV #<3*400+3>,@#177102
TST @#60000
BCS 1$
BIS #200,FLG
1$: TST @#77564
BCS 10$
BIS #1,FLG
MOV #2,R2
MOV #<HEL3-KMDPR1+20000>,R0
CALL PRWND
10$: MOV #<377*400+377>,@#177102
TST @#60000
BCS 2$
BIS #400,FLG
2$: TST @#77564
BCS 20$
BIS #4,FLG
MOV #10,R2
MOV #<HEL377-KMDPR1+20000>,R0
CALL PRWND
20$: MOV SAVRD,@#177102
MOV SAV4,74(R3)
MOV FLG,@#FLG1+40000
RETURN
PRWND: MOV #10000,R1
1$: TSTB @#77564
BMI 2$
SOB R1,1$
BIS R2,FLG
RETURN
2$: MOVB (R0)+,@#77566
BNE PRWND
RETURN
TR4: BIS #1,@SP
RTI
SAV4: .BLKW 1
SAVRD: .BLKW 1
FLG: .WORD 0
HEL3: .ASCIZ /Hello from KMD, WINDOW=3/<15><12>
HEL377: .ASCIZ /Hello from KMD, WINDOW=377/<15><12>
.EVEN
KMDEND:
.END START

Titus
05.01.2014, 02:11
Активное устройство должно было "захватить" шину перед выставлением адреса. Пока активен сигнал захвата шины - все остальные активные устройства должны ждать.

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

Не слишком ли это медленно, если устройства захватывают шину по 1000 раз в секунду?

Alex_K
05.01.2014, 12:51
Не слишком ли это медленно, если устройства захватывают шину по 1000 раз в секунду?
Да не очень-то. Ведь сам центральный процессор ее использует не все время, только во время операций чтения/записи. Так что устройство ПДП и попадает в эти свободные окна. Подтормозить можно центральный вычислитель, если устройство ПДП все время будет обращаться к несуществующему адресу (TRAP_4).

Titus
05.01.2014, 13:16
Да не очень-то. Ведь сам центральный процессор ее использует не все время, только во время операций чтения/записи. Так что устройство ПДП и попадает в эти свободные окна. Подтормозить можно центральный вычислитель, если устройство ПДП все время будет обращаться к несуществующему адресу (TRAP_4).

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

Patron
05.01.2014, 13:32
Я имею ввиду, не слишком ли медленное построение эмулятора, когда захват шины - это межпоточная блокировка.Поэтому блокировка ставится не на шину, а на устройство. Память допускает полностью параллельную работу, а изменить состояние любого конкретного устройства может только тот поток, который первым туда "залез".

Но строго говоря, даже если ставить блокировку на любое обращение к "общей" шине - многопоточная эмуляция будет медленнее однопоточной только на одноядерном процессоре.

Titus
05.01.2014, 13:56
Но строго говоря, даже если ставить блокировку на любое обращение к "общей" шине - многопоточная эмуляция будет медленнее однопоточной только на одноядерном процессоре.

Чего-то мне кажется, что это вообще достаточно медленная концепция.

Patron
05.01.2014, 14:58
Чего-то мне кажется, что это вообще достаточно медленная концепция.Это с непривычки.

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

Чтобы при многопоточной эмуляции быстродействие с блокировками было ниже, чем при однопоточной без блокировок - код блокировки должен суммарно выполняться дольше, чем код эмуляции - тогда удвоенное быстродействие двух физических ядер будет "убито" непрерывно выполняющимся кодом блокировок. Если код блокировок будет "отъедать" ровно столько же процессорного времени хост-машины, сколько и код эмуляции - быстродействие многопоточной эмуляции будет РАВНО быстродействию однопоточной. Во всех остальных случаях многопоточная эмуляция будет быстрее.

Titus
05.01.2014, 15:21
Это с непривычки.

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

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

Patron
05.01.2014, 15:34
Для точной потактовой эмуляции это неподходящий вариант вообщеТочнее - для максимальной синхронности виртуального времени. Ведь у каждого процессора может быть своя тактовая частота, поэтому привязка должна идти не к тактам, а к виртуальному времени.

Titus
05.01.2014, 15:42
Точнее - для максимальной синхронности виртуального времени. Ведь у каждого процессора может быть своя тактовая частота, поэтому привязка должна идти не к тактам, а к виртуальному времени.

Нет, привязка должна быть к единому тактовому источнику эмулируемой системы. Если кварцев несколько, то этоможно аппроксимировать тоже одним источником, но со специально введенными дополнительными дробными погрешностями, для точной эмитации биения частот кварца. Как, например, у меня в EmuStudio. Один процессор 8.0001МГц (можно любые дробные тайминги поставить), второй 6.25МГц.

Patron
05.01.2014, 15:54
привязка должна быть к единому тактовому источнику эмулируемой системыЭто и есть "виртуальное время". В модульном API события привязываются к виртуальному времени с точностью 1 нс ( т.е. единый тактовый источник эмулируемой системы имеет частоту 1 ГГц ).

Titus
05.01.2014, 15:56
Это и есть "виртуальное время". В модульном API события привязываются к виртуальному времени с точностью 1 нс ( т.е. единый тактовый источник эмулируемой системы имеет частоту 1 ГГц ).

И как при этом работают два процессора (допустим ВМ2) в разных потоках, разделяя одну шину?
Пример, по шагам, как они взаимодействуют?

Patron
05.01.2014, 16:12
И как при этом работают два процессора (допустим ВМ2) в разных потоках, разделяя одну шину?
Пример, по шагам, как они взаимодействуют?Лучше им никак не взаимодействовать, потому что у каждого потока своё виртуальное время и рассинхронизация виртуального времени двух потоков может достигать 15 мс, а любая синхронизация требует "усыпления" опережающего потока.

Titus
05.01.2014, 16:20
Лучше им никак не взаимодействовать, потому что у каждого потока своё виртуальное время и рассинхронизация виртуального времени двух потоков может достигать 15 мс, а любая синхронизация требует "усыпления" опережающего потока.

А по сути (если это, например, УКНЦ) они постоянно взаимодействуют с общим ресурсом - чипсетом.

---------- Post added at 16:20 ---------- Previous post was at 16:16 ----------


может достигать 15 мс
Кстати, почему 15мс, если минимальный квант переключения задач под виндой 1мс?

Patron
05.01.2014, 16:25
А по сути (если это, например, УКНЦ) они постоянно взаимодействуют с общим ресурсом - чипсетом.Для такого варианта многопоточная эмуляция не очень подходит.

Многопоточная эмуляция хороша там, где эмулируются два принципиально несинхронных устройства, всё взаимодействие между которыми основано на ожидании бита готовности ( или прерывания готовности ) от другого.

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

Titus
05.01.2014, 16:29
В такой ситуации частичная несинхронность многопоточной эмуляции совершенно незаметна и на общую достоверность эмуляции никак не влияет.
Но это все же не 100% точная эмуляция)

Patron
05.01.2014, 16:33
Но это все же не 100% точная эмуляция)Поэтому для любителей максимальной точности я в будущем сделаю возможность заменять многопоточную эмуляцию на однопоточную ( с отдельной настройкой для каждого потока ) - тогда интересующие события будут происходить в общем виртуальном времени с наносекундной синхронизацией.

Titus
05.01.2014, 16:38
тогда интересующие события будут происходить в общем виртуальном времени с наносекундной синхронизацией.

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

Patron
05.01.2014, 16:45
И наносекунда - это не показатель точности.
Показатель точности это квант, кратный минимальному интервалу в эмулируемой системе. Во всех иных случаях, каким бы не был мелким квант, набежит погрешность.Не набежит. Диспетчер синхронизации модульного API рассчитывает виртуальное время каждого следующего периодического события не относительно времени предыдущего события, а относительно времени первого события + [ число предыдущих событий * интервал между событиями ], поэтому максимальная ошибка синхронизации не превышает 1 нс для любого числа предыдущих периодических событий.

Titus
05.01.2014, 16:49
Не набежит. Диспетчер синхронизации модульного API рассчитывает виртуальное время каждого следующего периодического события не относительно времени предыдущего события, а относительно времени первого события + [ число предыдущих событий * интервал между событиями ], поэтому максимальная ошибка синхронизации не превышает 1 нс для любого числа предыдущих периодических событий.

Допустим, частота процессора 10.05МГц (99.5 1нс квантов).
Как он будет отсчитывать по 99.5 квантов на такт?

Patron
05.01.2014, 16:57
Допустим, частота процессора 10.05МГц (99.5 1нс квантов). Как он будет отсчитывать по 99.5 квантов на такт?При абстрактной эмуляции событием процессора является исполнение одной команды. Остальные события могут произойти либо до начала выполнения команды, либо после завершения её выполнения.

Эмулировать не отдельные команды, а (например) отдельные циклы шины или отдельные такты - для абстрактной эмуляции избыточно.

Можно сделать движок дискретной эмуляции, где событием будет изменение логического уровня на отдельной линии шины, но в абстрактной эмуляции ничего этого нет.

Titus
05.01.2014, 17:14
При абстрактной эмуляции событием процессора является исполнение одной команды. Остальные события могут произойти либо до начала выполнения команды, либо после завершения её выполнения.

Эмулировать не отдельные команды, а (например) отдельные циклы шины или отдельные такты - для абстрактной эмуляции избыточно.

Можно сделать движок дискретной эмуляции, где событием будет изменение логического уровня на отдельной линии шины, но в абстрактной эмуляции ничего этого нет.

Для абстрактной может быть и избыточно, а для абсолютно точной - в самый раз)

---------- Post added at 17:14 ---------- Previous post was at 16:59 ----------

Кстати, об эмуляции, когда я переделал клавиатуру с DirectInput на обработчик хуков, плохо стала работать комбинация из трех нажатых клавиш PrintScr+Scroll+Pause (по ним ресет на спектруме делался у меня). Приходится теперь несколько раз на них нажимать, нажимать, пока сработает. На DirectInput'е такого не было)

Patron
05.01.2014, 18:03
когда я переделал клавиатуру с DirectInput на обработчик хуков, плохо стала работать комбинация из трех нажатых клавиш PrintScr+Scroll+Pause (по ним ресет на спектруме делался у меня). Приходится теперь несколько раз на них нажимать, нажимать, пока сработает. На DirectInput'е такого не было)Я сделал для модульного API имитацию DirectInput через хуки - вроде всё работает, даже если нажать эти три клавиши:



vkCode[0x2C] ; wParam[ 44] ; uScan[311] ; cFlags[0x1]
vkCode[0x91] ; wParam[145] ; uScan[ 70] ; cFlags[0x0]
WM_KEYDOWN uScan:[ 70] ; DIK_SYSRQ[0x80] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x00]

vkCode[0x13] ; wParam[ 19] ; uScan[ 69] ; cFlags[0x0]
WM_KEYDOWN uScan:[ 69] ; DIK_SYSRQ[0x80] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x80]

vkCode[0x13] ; wParam[ 19] ; uScan[ 69] ; cFlags[0xFFFFFF80]
WM_KEYUP uScan:[ 69] ; DIK_SYSRQ[0x80] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x00]

vkCode[0x2C] ; wParam[ 44] ; uScan[311] ; cFlags[0xFFFFFF81]
WM_KEYUP uScan:[311] ; DIK_SYSRQ[0x00] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x00]

vkCode[0x91] ; wParam[145] ; uScan[ 70] ; cFlags[0xFFFFFF80]
WM_KEYUP uScan:[ 70] ; DIK_SYSRQ[0x00] ; DIK_SCROLL[0x00] ; DIK_PAUSE[0x00]


Правда у меня почему-то нажатие клавиши <PrintScreen> не сопровождается вызовом WM_KEYDOWN ( лень разбираться почему - просто делаю скриншоты по WM_KEYUP ).

Titus
05.01.2014, 19:03
Я сделал для модульного API имитацию DirectInput через хуки - вроде всё работает, даже если нажать эти три клавиши


Правда у меня почему-то нажатие клавиши <PrintScreen> не сопровождается вызовом WM_KEYDOWN ( лень разбираться почему - просто делаю скриншоты по WM_KEYUP ).

У меня тоже идет эмуляция DirectInput.

Понятно, у меня при нажатии этих трех клавиш проверяется, что они нажаты и отжаты. Значит это глюк хуков какой-то.

Patron
07.01.2014, 00:32
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_07.01.14_00-00 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_07.01.14_00-00.rar)

Изменения:

1. Исправлены ошибки, обнаруженные в предыдущем релизе (http://zx.pk.ru/showthread.php?p=657336#post657336).

2. Теперь процессор КМД может обращаться к любым устройствам на шине ДВК.

3. Теперь, если имя файла прошивки содержит "91" или "93" - на шине КМД эмулируется микросхема 1809РУ1, если имя файла прошивки содержит "92" - на шине КМД эмулируется микросхема 537РУ11. Если ни одного из указанных сочетаний символов в имени файла прошивки нет - на шине КМД эмулируется 4 Кбайт памяти в диапазоне 020000..027777.

4. Теперь КМД никак не реагирует на чтение его регистра данных.

...

hobot
08.01.2014, 02:57
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_07.01.14_00-00 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_07.01.14_00-00.rar)

Изменения:

1. Исправлены ошибки, обнаруженные в предыдущем релизе (http://zx.pk.ru/showthread.php?p=657336#post657336).

2. Теперь процессор КМД может обращаться к любым устройствам на шине ДВК.

3. Теперь, если имя файла прошивки содержит "91" или "93" - на шине КМД эмулируется микросхема 1809РУ1, если имя файла прошивки содержит "92" - на шине КМД эмулируется микросхема 537РУ11. Если ни одного из указанных сочетаний символов в имени файла прошивки нет - на шине КМД эмулируется 4 Кбайт памяти в диапазоне 020000..027777.

4. Теперь КМД никак не реагирует на чтение его регистра данных.

...

При всех доработках и функциональности - эмулятор всё ещё помещается (в стандартном наборе) на 1-у дискету ) Мощь! )
Обновил на сайте архив с эмулятором и exe-шник в архиве VT52.

Vamos
08.01.2014, 03:31
Если бы еще Titus сделал отдельно эмулятор 15-ИЭ на СОМ порт :)

Titus
08.01.2014, 04:10
Если бы еще Titus сделал отдельно эмулятор 15-ИЭ на СОМ порт :)
Зачем?

Тут же промелькивали помимо моего 2 эмулятора 15ИЭ.

Vamos
08.01.2014, 04:16
Зачем?
А зачем он в эмуляторе УКНЦ? в реале такого не было, а на ДВК был, вот зачем.

Titus
08.01.2014, 04:18
А зачем он в эмуляторе УКНЦ? в реале такого не было, а на ДВК был, вот зачем.

Затем, чтобы смотреть игрушки написанные под ДВК.

Vamos
08.01.2014, 04:30
Так для игрушек и так есть два КГД и КЦГД. Может я не правильно написал, я имел в виду фрязинский наверное или опять напутал.

Titus
08.01.2014, 05:17
Так для игрушек и так есть два КГД и КЦГД. Может я не правильно написал, я имел в виду фрязинский наверное или опять напутал.

Для игрушек есть все вместе. Интересно смотреть, как текстовые игрушки работают на том или ином терминале.

Да, Фрязинский 15ИЭ.

Кстати, вроде эмулятор VT52 Патрона должен с ком портом работать наверное.

MiX
09.01.2014, 23:06
Кстати, вроде эмулятор VT52 Патрона должен с ком портом работать наверное.

Работает pdp11+vt52 , соединял нуль модемным кабелем (простым).

Кстати можно соединить TX+RX получится эхо на VT52

MiX
14.01.2014, 21:21
Patron, Можно что-нибудь на LPT вывести? Точнее текст в ASCII и управление ASCIIшное ( CR+LF ) для принтера. Так-как в ИРПР инверсные сигналы то за одно и инвертировать для LPT программно.

Patron
14.01.2014, 21:46
Можно что-нибудь на LPT вывести?Нет, пока нельзя.

Alex_K
19.01.2014, 20:23
Попробовал недокументированную функцию форматирования дорожки в формате IBM с индексными маркерами 0xC2. Функция эта присутствует в КМД с прошивками -092, -093* и -255, в -091 её нет. Отформатировалось все нормально, но вот с чтением первого сектора проблема. Эта проблема есть в прошивке -091, но в более поздних её убрали. Вот кусок кода из прошивки:

; Удостоверение в том, что попали на синхрозону
7014$: MOV #3,32(R3) ; Счетчик для удостоверения
7022$: MOV @R5,R0 ; Считанное слово равно нулю?
BEQ 7032$ ; Да
INC R0 ; Считанное слово равно 177777?
BNE 7066$ ; Нет - не синхрозона
7032$: DEC 32(R3) ; Уменьшить счетчик
BNE 7022$ ; Продолжаем дальше
; Поиск и ожидание маркера
CALL 7220$ ; Дать команду на поиск маркера
MOV #24,R0 ; R0 = счетчик ожидания маркера
TST @R4 ; Линия ИНДЕКС активна?
BPL 7060$ ; Нет
MOV #764,R0 ; R0 = счетчик ожидания для первого сектора
7060$: TSTB @R4 ; Маркер найден?
BMI 7074$ ; Да
SOB R0,7060$ ; Цикл ожидания маркера
; Маркер не найден - на поиск нулей
7066$: TST @R4 ; Линия индекс активна?
BPL 6664$ ; На пропуск нулей при неактивном ИНДЕКСЕ
BR 6756$ ; На пропуск нулей при активном ИНДЕКСЕ
; Определение типа найденного маркера
7074$: TST @R5 ; Пропустить 0xA1A1
Как видно из кода, если активна линия ИНДЕКС, то в качестве счетчика ожидания при поиске маркера используется значение 0764, если неактивна, то 024. Это нужно потому, что если попали на синхрозону перед индексным маркером 0xC2, то надо пропустить оставшиеся нули, 4 байта самого маркера, 50 байт промежутка и 12 байт синхрозоны перед заголовком первого сектора.
Patron, хотелось бы узнать, какова длина ИНДЕКСА, сколько байт с начала дорожки. Соответственно, в чем проблема - линия ИНДЕКС уже неактивна в этой проверке, или значения 0764 слишком мало для ожидания.
Во вложении программа форматирования диска в формате IBM, ну и сам образ диска.

Patron
19.01.2014, 22:45
хотелось бы узнать, какова длина ИНДЕКСАДлина индекса 1000000 нс ( 1 мс ). В момент появления индекса номер текущего байта дорожки обнуляется. Увеличивается номер текущего байта дорожки каждые 32000 нс ( 32 мкс ).



Соответственно, в чем проблема - линия ИНДЕКС уже неактивна в этой проверке, или значения 0764 слишком мало для ожидания.Сейчас посмотрю, но кое-что можно сделать самостоятельно.

Если добавить в файл MY.cfg включение дизассемблера:



[links]
MY_CPU [DisAsm] > Debug


[MY_CPU.ini]
InitialStateOf[DisAsm]=1


[Debug.ini]
InitialStateOf[Log]=1

То все команды, выполняемые процессором КМД, запишутся в файл Debug.log

Alex_K
19.01.2014, 22:57
Длина индекса 1000000 нс ( 1 мс ). В момент появления индекса номер текущего байта дорожки обнуляется. Увеличивается номер текущего байта дорожки каждые 32000 нс ( 32 мкс ).


Сейчас посмотрю, но кое-что можно сделать самостоятельно.
Самостоятельно уже ничего делать не надо. Длина индекса слишком маленькая. Предварительно записывается 51(8) слово промежутка, потом 12 байт синхрозоны, всего 94 байт. Это по длительности 3008 мкс. Т.е. длину индекса надо сделать хотя бы 3,1 мс. Тогда может и пойдет.

Patron
19.01.2014, 23:51
Длина индекса слишком маленькая.Я брал длину индекса из описания дисковода. Интересно было бы определить продолжительность этого сигнала экспериментально.

Alex_K
19.01.2014, 23:55
Я брал длину индекса из описания дисковода. Интересно было бы определить продолжительность этого сигнала экспериментально.
Интересно, из какого? Где-то в форуме проскакивала про это информация, там тоже была ссылка на документацию, но там говорилось от 3 до 5 мс.

Patron
20.01.2014, 00:36
Измерил у дискеты ГМД-130 отношение диаметра индексного отверстия к длине окружности с центром в центре вращения дискеты и радиусом, равным расстоянию от центра вращения до центра индексного отверстия - получилось ровно 1/64.

Проверить измерения можно здесь: исходник (http://s5.hostingkartinok.com/uploads/images/2014/01/5fd88c56e0fdeb7b91fb30d108299159.jpg), построения (http://s5.hostingkartinok.com/uploads/images/2014/01/6e638ad3f4199e9b1027978b0c122efc.jpg).

Alex_K
20.01.2014, 00:51
Измерил у дискеты ГМД-130 отношение диаметра индексного отверстия к длине окружности с центром в центре вращения дискеты и радиусом, равным расстоянию от центра вращения до центра индексного отверстия - получилось ровно 1/64.
Ну у меня получается тоже где-то в этих пределах. Скорость вращения дисковода - 300 об/мин, значит в секунду дискета делает 5 оборотов, отсюда длина дорожки составляет 200 мс. 200 мс делим на 64 - получается 3,125 мс. Но это примерное время, сигнал может увеличиваться во времени за счет схемотехники дисковода, может быть чуть меньше, но я думаю от измеренного показателя можно отталкиваться и сделать 3,125 мс, это где-то 97-98 байт.

Patron
20.01.2014, 00:59
сделать 3,125 мсСделал продолжительность сигнала ИНДЕКС = 3125000 нс - всё заработало.

Alex_K
20.01.2014, 01:01
Сделал продолжительность сигнала ИНДЕКС = 3125000 нс - всё заработало.
Т.е. в TESTMY последовательное чтение секторов идет без ошибок?

Patron
20.01.2014, 01:13
Т.е. в TESTMY последовательное чтение секторов идет без ошибок?


Т Е С Т К М Д И Н Г М Д

---> ПОСЛЕДОВАТЕЛЬНОЕ ЧТЕНИЕ СЕКТОРОВ
ЧТЕНИЕ СЛУЧАЙНЫХ СЕКТОРОВ
ПОСЛЕДОВАТЕЛЬНОЕ ЧТЕНИЕ С ПЕРЕЗАПИСЬЮ






---------------------------------------------------------------------------
79ВЕРХ ПРОХОД 1

ОШИБОК НЕТ
К<ВК> - КАРТА НА ТЕРМИНАЛ
КП<ВК> - КАРТА НА ПЕЧАТЬ
Т<ВК> - ТАБЛИЦА НА ТЕРМИНАЛ
ТП<ВК> - ТАБЛИЦА НА ПЕЧАТЬ
Д<ВК> - СОДЕРЖИМОЕ ДОРОЖКИ НА ЭКРАН
ДП<ВК> - СОДЕРЖИМОЕ ДОРОЖКИ НА ПЕЧАТЬ
М<ВК> - ВОЗВРАТ В МЕНЮ

Patron
25.01.2014, 18:01
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_25.01.14_15-40 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_25.01.14_15-40.rar)

Изменения:

1. Внесены изменения, описанные ЗДЕСЬ (http://zx.pk.ru/showthread.php?postid=661195) и ЗДЕСЬ (http://zx.pk.ru/showthread.php?postid=661576).

2. Исправлено несколько серьёзных ошибок.

3. Продолжительность сигнала ИНДЕКС у эмуляторов КМД и КНГМД увеличена до 3.125 мс.

4. Теперь вложенный конфиг можно запускать на эмуляцию в потоке родительского конфига ( это позволяет процессорам, эмулируемым в разных конфигах, синхронизироваться в общем виртуальном времени ). Данная возможность реализуется установкой ненулевого значения параметра RunEmulationInParentThread в разделе [Config.ini].

Так, чтобы перевести эмулятор КМД в режим покомандной синхронизации процессора КМД с процессором ДВК - в файл MY.cfg нужно внести следующее изменение:



[Config.ini]
ExtendedStartLog=0
InitialStateOf[StatusBar]=1
SaveChangesFor[StatusBar]=0
InitialStateOf[ControlBar]=0
SaveChangesFor[ControlBar]=0
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
RunEmulationInParentThread = 1
ActiveWindowHandle=
ActiveConfigID=

MiX
26.01.2014, 14:34
Спасибо за кнопку BPS . В VT52 эмуляторе такое будет?

Patron
26.01.2014, 14:44
Спасибо за кнопку выбора скорости.За которую из трёх ?

Одна кнопка называется BPS: и позволяет выбирать битовую скорость эмулируемого порта, к которому подключен терминал ( когда терминал подключен к реальному порту - эта кнопка лишь отражает текущую скорость порта, но не позволяет её изменить ).

Другая кнопка называется CPS Лимит: и позволяет ограничивать скорость вывода символов для тонкой настройки быстроты движения в символьных играх.

Третья кнопка называется CPU MIPS Лимит: и позволяет выбирать скорость эмуляции процессора.

MiX
26.01.2014, 17:43
Patron, А можно сделать в окне между "файл" и "вид" - "конфигурация"? Чтоб можно было оперативно переключать конфигурацию загрузки.

P.S.Топик подредактировал по поводу кнопки.

Patron
26.01.2014, 18:08
Спасибо за кнопку BPS . В VT52 эмуляторе такое будет?Кнопка BPS там есть, но она не активна и только показывает текущую скорость порта. Причина в том, что изменение скорости работы реального COM-порта "на лету" пока не допускается.


Чтоб можно было оперативно переключать конфигурацию загрузки.Пункт меню "Файл->Открыть" позволяет мгновенно сменить конфигурацию. При запуске открывается последняя открытая конфигурация.

MiX
26.01.2014, 18:27
Пункт меню "Файл->Открыть" позволяет мгновенно сменить конфигурацию. При запуске открывается последняя открытая конфигурация.

Да это-то понятно, я имел ввиду как с кнопкой HD.

Patron
26.01.2014, 19:22
Да это-то понятно, я имел ввиду как с кнопкой HD.В смысле - список последних загруженных конфигураций для быстрого доступа ?

MiX
26.01.2014, 20:34
Да.Точнее нажал кнопку "конфигурация" вылез трей с выбором конфигурации, выбрал нужную трей закрылся но уже с новой конфигурацией (кнопка неактивна (немного бледная стала)). Нажал ещё раз на кнопку, применилась новая конфигурация (кнопка стала активной (бледность исчезла)).

Ну вот как-то так.

В будущем если появятся процессоры ВМ2,ВМ3 а так-же КЦГД то можно менять конфигурацию на лету. Нажал кнопку выбрал нужный процессор, запустил.

MiX
08.02.2014, 19:25
Patron,

Как сделать чтобы в принтере было КОИ7?

Patron
08.02.2014, 19:44
Как сделать чтобы в принтере было КОИ7?SET LP CTRL ( в следующем релизе сделаю это настройкой по-умолчанию ).

hobot
08.02.2014, 20:08
Patron, если будет время, может посмотрите что не так с этим образом? Он вроде ошибок не содержит, но с MY в эмуляторе не загружается ) Ошибки как на реальном железе прямо прут )
Когда пишу что вроде без ошибок - dir/bad выдаёт 0 плохих блоков,
но любые попытки с запуском сразу куча ошибок лезет.

А вот образ от MIX с ФОДОС стартует в эмуляторе на ура! )


Проблемный образ прилепляю (там куча файлов для БК, но драйвер MY и соответственно по описанию дискета для ДВК-2 ??? - где то я её брал???)

Image : Rt11dvk2.dsk

Format : DSK
Size : 800 Kb

Volume ID: ОС БК V4.1
Owner : ModIS

File Blocks Date Bytes
---------- ------ ----------- ----------
MY .SYS 4P 11-Feb-1975 2'048
BASIC .SAV 45P 18-Oct-1990 23'040
BINLST.SAV 3P 18-Oct-1990 1'536
CONLST.SAV 21P 18-Oct-1990 10'752
DAY .SAV 4P 18-Oct-1990 2'048
DESS .SAV 18P 18-Oct-1990 9'216
DIR .SAV 19P 18-Oct-1990 9'728
DUP .SAV 44P 18-Oct-1990 22'528
EDIK .SAV 20P 18-Oct-1990 10'240
EDS .BIN 9P 18-Oct-1990 4'608
HAND .SAV 7 12-Jul-1992 3'584
LP .SYS 3P 18-Oct-1990 1'536
MLP .BIN 16P 18-Oct-1990 8'192
MX .SYS 9P 18-Oct-1990 4'608
OS .BIN 11P 18-Oct-1990 5'632
PIP .SAV 29P 18-Oct-1990 14'848
RDWR .SAV 2P 18-Oct-1990 1'024
RT11SJ.SYS 73P 18-Oct-1990 37'376
SBKD .SAV 3P 18-Oct-1990 1'536
SCE0 .SAV 31P 18-Oct-1990 15'872
SCE0 .HLP 2P 18-Oct-1990 1'024
SERVIS.SAV 5P 18-Oct-1990 2'560
SL .SYS 11 18-Oct-1990 5'632
< UNUSED > 1 512
SWAP .SYS 26P 18-Oct-1990 13'312
TT .SYS 2P 18-Oct-1990 1'024
UNI .SAV 5P 18-Oct-1990 2'560
UN3 .BIN 7P 18-Oct-1990 3'584
VD .SYS 2P 18-Oct-1990 1'024
BI .SYS 13 11-Feb-1975 6'656
BY .SYS 8P 06-Sep-1994 4'096
LD .SYS 8P 20-Jun-1991 4'096
LZ .SAV 16P 07-Mar-1993 8'192
UZ .SAV 15 11-Feb-1975 7'680
SD .SYS 21P 15-Jun-1988 10'752
SL .BKM 10P 28-Dec-1987 5'120
UCL .DAT 9P 16-Aug-1993 4'608
UCL .SAV 16P 15-Jun-1988 8'192
< UNUSED > 1 512
RESORC.SAV 25P 15-Jun-1988 12'800
SCE .HLP 3 12-Sep-1992 1'536
SCE .SAV 30 09-Jun-1992 15'360
< UNUSED > 1 512
TT .OLD 2 27-Dec-1983 1'024
STARTS.COM 1 512
HELP .SAV 135 18-Jan-1984 69'120
HAND0 .SAV 7P 18-Oct-1990 3'584
TET .SAV 28 04-Apr-1986 14'336
TT .BKM 2P 03-Jun-1991 1'024
< UNUSED > 803 411'136
---------- ------ ----------- ----------
46 Files, 780 Blocks
806 Free blocks

45613

MiX
08.02.2014, 20:18
Patron,

Если не надоел, то как сделать перенос строки чтоб не уползал за экран (лист бумаги).

hobot
08.02.2014, 20:32
MiX,



Драйвер устройства печати (LP)
------------------------------

Данный драйвер может работать с несколькими типами печатающих
устройств: DZM-180, D-100, УВВПЧ-30.


Параметры настройки драйвера

* DZM180 - настраивает драйвер для работы с устройством DZM-180,
Robotron 1156 и т.п.
D100 - настраивает драйвер для работы с устройством D-100
UVVP30 - настраивает драйвер для работы с устройством УВВПЧ-30

CTRL - разрешает передачу всех управлющих символов на
устроство
* NOCTRL - запрещает передачу всех управлющих символов на
устроство, кроме <CR>, <LF>, <FF>

* FF - разрешает обработку символов перевода формата <FF>
NOFF - игнорирует символы перевода формата

* FORM - разрешает передачу знаков <FF> на устройство
NOFORM - преобразует знак <FF> в один или более <LF> для
перехода в начало следующей страницы; при использо-
вании этого режима необходимо также задать параметр
LENGTH

FORM0 - выполняет перевод на новую страницу перед выводом
блока с номером 0, т.е. в начале файла
* NOFORM0 - отменяет действие параметра FORM0

HANG - настраивает драйвер на ожидание готовности в случае
ошибки на устройстве
* NOHANG - настраивает драйвер на завершение работы при ошибке
на устройстве

* LC - позволяет выводить буквы нижнего регистра
NOLC - выполняет перевод букв нижнего регистра к верхнему

LENGTH = n - задает количество строк, распечатываемых на странице;
по умолчанию аргумент n равен 72

* REG4 - переводит драйвер в режим печати текстов, содержащих
4 набора символов (большие и маленькие русские и
латинские буквы)
NOREG4 - переводит драйвер в режим печати текстов, содержащих
2 набора символов (русские буквы кодируются как
маленькие латинские); в этом режиме символы перевода
регистров, встречающиеся в тексте, игнорируются

SHOW - выводит на терминал значения параметров настройки:
тип устройства печати, значения установок REG4, LC,
FORM, FORM0

SKIP = n - уменьшает на n количество строк, распечатываемых на
странице; выполняется переход в начало новой страницы,
если до конца текущей осталось n строк; значение по
умолчанию равно 0

WIDTH = n - устанавливает максимальную длину строки печати, более
длинные строки усекаются; значение по умолчанию 159


Примечания

1. Параметры, отмеченные звездочкой (*), действуют по умолчанию
2. При изменении типа устройства автоматически устанавливаются
значения LC и REG4.
3. Установка REG4 автоматически приводит в выполнению LC.
4. Установка NOREG4 автоматически приводит в выполнению NOLC.


По всем вопросам обращаться к Николаенкову Д.Ю. (536-32-00)


Но есть и более продвинутые версии драйвера печати !!! LP.SYS
Там вообще невообразимо крутые и изящные настройки )

C АДОС ДВКашной кстати - самый навороченный вариант LP.SYS кстати говоря, наверное.

Patron
08.02.2014, 22:07
что не так с этим образом? Он вроде ошибок не содержит, но с MY в эмуляторе не загружаетсяФайл MY.SYS там был битый, но загрузка образа также зависит от значений ячеек ОЗУ ДВК в момент загрузки. Чтобы образ устойчиво загружался, помимо замены MY.SYS - перед каждой загрузкой образа надо запустить и сразу завершить DESS.

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

...

Проблему вызывала процедура проверки установки драйвера BY.SYS - помогло изменение расширения драйвера.

Исправленный образ: Rt11dvk2-f.dsk (http://emulator.pdp-11.org.ru/misc/Rt11dvk2-fixed.zip)

...

hobot
09.02.2014, 17:36
.BOOT MY0:
?LP-I-Обслуживаю D100 & ROBOTRON.
?TT-H-Привет из телевизера !


?MX-I-Кручу маленькие диски.

?SL-I-Помогаю нажимать кнопочки.

RT-11SJ V05.04

SCE V3.0 Инициативная группа "S.T.A.R." 21-Jun-89
DK:\
------------------------------------ Date: 9-Bad-82
Filnam Ext Size Date Block Mode: Editor
RT11SJ.SYS 73P 18-Oct-90 277
SBKD .SAV 3P 18-Oct-90 350 Volume ID : ОС БК V4.1
SCE0 .SAV 31P 18-Oct-90 353 Owner name : ModIS
SCE0 .HLP 2P 18-Oct-90 384
SERVIS.SAV 5P 18-Oct-90 386 Select: 46 File(s)
> SL .SYS 11P 18-Oct-90 391 0 blocks in 779 Block(s)
SWAP .SYS 26P 18-Oct-90 402 0 files 807 Free block(s)
TT .SYS 2P 18-Oct-90 428 1586 Total block(s)
UNI .SAV 5P 18-Oct-90 430
UN3 .BIN 7P 18-Oct-90 435
VD .SYS 2P 18-Oct-90 442
BI .SYS 13P 11-Feb-75 444
BY .SYG 8P 6-Sep-94 457
LD .SYS 8P 20-Jun-91 465
LZ .SAV 16P 7-Mar-93 473
UZ .SAV 15 11-Feb-75 489
SD .SYS 21P 15-Jun-88 504

> fix-образ (http://zx.pk.ru/attachment.php?attachmentid=45644) диска.
По моему очень мощно ! Спасибо ! )

Patron
11.02.2014, 15:01
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_09.02.14_14-35 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_09.02.14_14-35.rar)

Изменения:

1. Внесены изменения, описанные ЗДЕСЬ (http://zx.pk.ru/showthread.php?postid=672414).

2. В модуль DSK_module.em добавлен объект DW, содержащий эмулятор КЖД ДВК. В файл конфигурации default.cfg добавлено создание объекта DW.

3. В комплект поставки добавлен образ DW_System54.DSK. В образ HDSYS.DSK добавлен драйвер DW.SYS.

Если образ диска, подключенный к эмулятору КЖД, имеет расширение DSK - эмулятор изменяет номера блоков в запросах чтения/записи для удовлетворения требованиям формата DSK. Для образов с любыми другими расширениями переадресация запросов не производится.

Чтобы посекторную копию винчестера ДВК можно было успешно использовать в эмуляторе или чтобы созданный в эмуляторе образ винчестера можно было успешно записать на реальный жёсткий диск ДВК - расширение файла образа должно отличаться от DSK.

MiX
11.02.2014, 16:28
:v2_cheer:Это просто праздник какой-то.

hobot
11.02.2014, 18:24
добавлен драйвер DW.SYS
Уточнение требуется - будет ли этот вариант драйвера работать на реальном железе !!! Важно !!!

Patron
11.02.2014, 18:46
Уточнение требуется - будет ли этот вариант драйвера работать на реальном железе !!!Драйвер DW.SYS взят здесь (http://zx.pk.ru/showthread.php?postid=668546).

Patron
15.02.2014, 20:20
Изменение эмулируемой конфигурации.

Подключение реальной клавиатуры МС 7004.
-----------------------------------------------------------------


Последовательный интерфейс клавиатуры МС 7004 позволяет напрямую подключать её к COM-порту PC ( на скорости 4800;8N1 ).

http://emulator.pdp-11.org.ru/misc/7004.png http://img-fotki.yandex.ru/get/3911/uknc.0/0_46b71_9a38c470_L.jpg

http://emulator.pdp-11.org.ru/misc/5-Pin-DIN-Connector.jpg http://emulator.pdp-11.org.ru/misc/5-Pin-DIN-Pinout.png



Кабель ДВК "УВИ-4" от платы КЦГД к клавиатуре МС 7004.
номер 423-14

ОНП-КГ-56-10-Р50 ОНЦ-ВГ-4-5/16Р
1 -------------------------- 3 Д.Вых <--
2 -------------o------------ 4 Общий
3 -------------|------------ 2 Д.Вх -->
4 -------------o
5 -------------|------o------ 1 +12 В
6 -------------+ |
7 --------------------+
8 ------------ x x ------- 5 не подключён
9 ------------ x
10 ------------ x





Кабель ДВК "УВИ-1" от платы КСМ к клавиатуре МС 7004.
ОНП-КГ-56-10-Р50 ОНЦ-ВГ-4-5/16Р
1 --------------------o------ 1 +12 В
2 --------------------^
3 -------------o------------ 4 Общий
4 -------------^
5 -------------o------------ 2 Д.Вх -->
6 -------------^
7 -------------------------- 3 Д.Вых <--
8 ------------ x x ------- 5 не подключён
9 ------------ x
10 ------------ x


Клавиатура МС 7004 генерит сканкоды. Для их конвертации в ASCII-коды обычного терминала ДВК в состав эмулятора включён объект MS7004_Converter. Пример его использования находится в файле конфигурации MS7004_Converter.cfg

Имя COM-порта Windows, к которому подключена клавиатура - задаётся параметром PortName раздела [MS7004_ComPort.ini]:



[MS7004_ComPort.ini]
PortName = COM1
BaudRate = CBR_4800
Parity = NOPARITY
StopBits = ONESTOPBIT
ByteSize = 8
fDtrControl = DTR_CONTROL_ENABLE
fRtsControl = RTS_CONTROL_HANDSHAKE
fOutxCtsFlow = FALSE
fOutxDsrFlow = FALSE
InitialStateOf[ShowPortUse]=0
SaveChangesFor[ShowPortUse]=0
MinimalBreakTime_MKS=3000


Работа клавиатуры МС 7004 в комплекте с конвертером немного отличается от её работы в составе КСМ или КЦГД.

1. Клавиша <РУС/ЛАТ> генерит только коды RUS ( 016 ).

2. Индикатор СТОП КАДР отражает состояние блокировки вывода RT-11 управляющими кодами Ctrl/S и Ctrl/Q, а клавиша <СТОП КАДР> посылает коды Ctrl/Q при включённом индикаторе СТОП КАДР и коды Ctrl/S при выключенном.

Индикатор СТОП КАДР выключается при любом выводе на терминал, происходящем спустя более 350 мс после включения этого индикатора.

3. Клавиша <ФКС> и индикатор ФКС работают в точности как клавиша и индикатор CapsLock клавиатуры PC.

4. Индикатор КОМПОЗ отражает состояние режима дополнительной клавиатуры, а клавиша КОМПОЗ позволяет изменять этот режим.

...

Объект MS7004_Converter имеет базовые параметры, задающие ANSI-строки, отправляемые конвертером в терминальный порт при нажатии соответствующих клавиш на клавиатуре МС 7004. Значения по умолчанию для данных параметров находятся в файле MS7004_Converter.ini:



[Main]
;;
;; ANSI-строки, передаваемые конвертером в терминальный порт
;; при нажатии указанных клавиш на подключенной к конвертеру
;; клавиатуре МС 7004.
;;

;;------------------------------------------------------------
;;
;; Назначенные здесь строки лучше заменить на более полезные.
;;
ANSI_STR_FOR_KEY[Preryw] = "preryw "
ANSI_STR_FOR_KEY[Prodol] = "prodolv "
ANSI_STR_FOR_KEY[Otmen] = "otmen "
ANSI_STR_FOR_KEY[OsnKadr]= "osnown.kadr "
ANSI_STR_FOR_KEY[Wyhod] = "wyhod "

;;------------------------------------------------------------

ANSI_STR_FOR_KEY[F11] = "\033"
ANSI_STR_FOR_KEY[F12] = "\010"
ANSI_STR_FOR_KEY[F13] = "\012"
ANSI_STR_FOR_KEY[DopWar] = "dop.wariant "

;;------------------------------------------------------------
;;
;; Назначенные здесь строки лучше заменить на более полезные.
;;
ANSI_STR_FOR_KEY[Pm] = "pm "
ANSI_STR_FOR_KEY[Isp] = "isp "

;;------------------------------------------------------------
;;
;; Назначенные здесь строки лучше заменить на более полезные.
;;
ANSI_STR_FOR_KEY[F17] = "F17 "
ANSI_STR_FOR_KEY[F18] = "F18 "
ANSI_STR_FOR_KEY[F19] = "F19 "
ANSI_STR_FOR_KEY[F20] = "F20 "

;;------------------------------------------------------------
;;
;; Клавиши над стрелками генерят коды Ruslo3
;;
ANSI_STR_FOR_KEY[Nt] = "\033c"
ANSI_STR_FOR_KEY[Wst] = "\033d"
ANSI_STR_FOR_KEY[Udal] = "\033e"
ANSI_STR_FOR_KEY[Wybr] = "\033f"
ANSI_STR_FOR_KEY[PredKadr]="\033g"
ANSI_STR_FOR_KEY[SledKadr]="\033h"

;;------------------------------------------------------------
;;
;; ЗБ
;;
ANSI_STR_FOR_KEY[Zb] = "\177"

;;------------------------------------------------------------
;;
;; ВК
;;
ANSI_STR_FOR_KEY[Wk] = "\015"

;;------------------------------------------------------------
;;
;; Пустая клавиша перед клавишей ЗБ
;;
ANSI_STR_FOR_KEY[Pust] = "\012"

;;------------------------------------------------------------
;;
;; Клавиша [_] перед правой клавишей ВР
;; На эту клавишу можно назначить код LAT = "\017"
;;
ANSI_STR_FOR_KEY[_] = "_"

;;------------------------------------------------------------

ANSI_STR_FOR_KEY[{] = "{"
ANSI_STR_FOR_KEY[}] = "}"
ANSI_STR_FOR_KEY[~] = "_"

;;------------------------------------------------------------

MiX
16.02.2014, 23:23
Patron,

Вы могли бы добавить диск DX/DY а то HD диск образ не берёт.

Да и ещё чтоб 10 раз не компилить то можно ещё сделать поддержку сигналов RX и TX. В конфиге я пока их подцепил на ShowPortUse.

Спасибо!

MiX
19.02.2014, 11:38
Создал кнопку "Загрузка".

Теперь если что-то вылетает в пульт то уже не надо перезагружать программу, а достаточно нажать на кнопку "Загрузка"

О кнопке.
Кнопка фиксированная поэтому надо нажимать два раза. Для русификации добавил ещё файл Main_module.

hobot
20.02.2014, 22:06
Patron,

1 - вот отсюда http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/DSKMX/RT11/
ни один образ не кушается ни MX, ни MY, но при этом
любой из них без проблем я могу монтировать в UKNCBTL - загрузка
там конечно не получается, но можно работать с каталогом и даже
проверить на запуск программы? В чём хитрость\подвох или я что-то
не так делаю?

2 - пожелание ( на мой взгляд чрезвычайно важное ).
Очень хотелось-бы иметь в эмуляторе ДВК дополнительную
фун-цию в меню ФАЙЛ (например) аналогичную той что есть в UKNCBTL, а именно создание пустой дискеты\харда (в UKNCBTL пока
только дискеты). Я знаю, что этот функционал уже есть и прежнюю реализацию с комбинацией кнопок+мышь там в меню можно как-бы
дописать.

ИМХО:это было бы очень удобно, особенно для новичков и если бы
такая функция была и для харда реализована в UKNCBTL с самого начала (а не в виде целой страницы шпаргалки на сайте эмулятора)
сотни постов на форуме просто отсутствовали бы.

Такой пункт в меню прежде всего хорош своей наглядностью, плюсом так же является то, что использование всех возможностей эмулятора при первом ознакомлении, без
въедливого чтения описания. Я вот (к примеру) сейчас уже не помню комбинацию для создания дискеты\харда (конечно там что то простое контр+что то там, но ...?

Допустим как-то так:


ФАЙЛ>
<..>
Создание нового диска>
Дискета MX(40,80)>
Дискета MY(40,80)>
ЖД DW(5,10,20)>


ИМХО: то есть дружелюбность программы к пользователю повысилась бы ИМХО.


(* если Никита это сообщение прочитает - тогда пожелание
и к нему - было бы не плохо если функция создания ЖД
5,10,20 - объёмного появилась и в UKNCBTL !!! *)

Спасибо.

MiX
20.02.2014, 23:29
>ни один образ не кушается ни MX, ни MY

HD кушает.

>Я вот (к примеру) сейчас уже не помню комбинацию для создания дискеты\харда

Кнопка выбор диска, потом кнопка номер диска, потом кнопка образ диска. Открывается окно выбора образа. В строке имя файла пишите название нового образа. Открывается новое окно где говориться "Такого файла не существует" "Созать его?" Отвечаете да.

Patron
20.02.2014, 23:57
ни один образ не кушается ни MX, ни MYПричина, по которой это происходит, сообщается в предупреждении, выводимом на системную консоль.

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

hobot
21.02.2014, 02:03
Причина, по которой это происходит, сообщается в предупреждении, выводимом на системную консоль.
Увидел, я за разъяснениями упорно лез на вкладку debug и наблюдал там унылый RESET какой-то )


Просто для наглядности сделал пару скринов из UKNCBTL
в связи с моим постом выше (http://zx.pk.ru/showpost.php?p=676393&postcount=353) - причём эта функция в меню
эмулятора работала идеально ещё с незапамятных времён (!)
Вот что то такое бы и тут предлагаю

http://s3.hostingkartinok.com/uploads/images/2014/02/d1d48ee406594217a711784cd282fc36.png

http://s3.hostingkartinok.com/uploads/images/2014/02/c56a3f847171681c47b374b20c6d9693.png

MiX
21.02.2014, 04:08
Patron,

Если что, вот информация о дисках. Правда там нет MX/MY но это были наши (советские) разработки.

MiX
01.03.2014, 05:14
В помощь Патрону.

Я конечно не знаю в каком состоянии пишется очередной релиз. Логично было бы присутствие процессоров ВМ2,ВМ3 в плане эволюции эмулятора.

Для написания к примеру ВМ2 нужен дополнительный модуль который компилируется в EXE файл. Так вот, если мы имеем модуль ВМ1 то можно добавить
дополнительные команды ВМ2 и сохранить под названием 1801ВМ2. Так-же и для ВМ3.

Patron
21.03.2014, 22:08
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_21.03.14_21-44

Изменения:

1. Внесены изменения, описанные ЗДЕСЬ (http://zx.pk.ru/showthread.php?postid=692639).

2. В модуль DSK_module.em добавлены объекты DX и DY, реализующие эмуляцию контроллеров RX01 и RX02. В файл конфигурации default.cfg добавлено создание объекта DX.

3. Добавлены файлы конфигурации ДВК-1_DX.cfg и ДВК-1_DY.cfg

4. В комплект поставки добавлены образы DX_System54.DSK и DY_System54.DSK. В образ HDSYS.DSK добавлены драйверы DX.SYS и DY.SYS.

MiX
22.03.2014, 09:34
Для справки что DX это односторонний 8" диск, DY двухсторонний.

Патрону

Первый пункт изменений ссылается на тему VT52.

MiX
22.03.2014, 13:46
При конфигурации ДВК-1_DX.cfg тест Т0 не проходит.

При включенном таймере пишет:

тест 1

000003

при выключенном:

тест 1

000005

Попробовал тест 6 при включенном таймере, пишет:

000005

при выключенном:

005164

Patron
22.03.2014, 14:28
При конфигурации ДВК-1_DX.cfg тест Т0 не проходит.Перед первым вводом T0 таймер должен быть выключен. Если ввести T0 при включённом таймере - портится SP и T0 перестаёт работать вообще.

При выключенном таймере все тесты ( T0 .. T6 ) работают штатно.

MiX
22.03.2014, 14:36
T6

Patron
22.03.2014, 15:20
Это штатная работа.

hobot
22.03.2014, 15:38
Насчёт RX драйверов - что это за контроллер? Это жёсткие диски - просто я ничего о таком не слышал не знаю ?

После обновления при попытке открыть MY.CFG происходит вот такое
(см. миниатюру) иногда при этом (!) выпадает системное окно с предложением закрыть приложение pdp-11.exe или запустить debug.
Но редко - по этому такого скриншота нет пока. Может нужно просто
прописать образ MY диска? В CFG все MYn = содержат пустые поля.
Ещё момент я не уверен, что эмулятор позволяет загрузиться с MY1 (!).
То есть в процессе позволяет, но как начальное системное устройство,
что то не срабатывает как-то или я снова неправильно что то делаю?
То есть когда в ячейке где номер устройства забиваешь 1, а не 0 по моему что то не то происходит?

MiX
22.03.2014, 15:51
hobot, MY.cfg - это внутрисистемный конфигуратор предназначенный только для контроллера MY.

RX- это контроллеры 8" дисков DX/DY.

hobot
22.03.2014, 16:00
это контроллеры 8" дисков DX/DY.
Раритет! Мощно! А стандартные размеры этих дисков? И поддержка их плагином (это конечно к Patron'у вопрос) ?

---------- Post added at 15:58 ---------- Previous post was at 15:56 ----------


160556
@172140/000040 37
@172142/000004 0
@A?
@G

Вот я о чём выше писал, если я в 172142 значение отличное от нуля,
например у меня дискета системная в устройство 1 вставлена, пишу
- загрузки нет !?

---------- Post added at 16:00 ---------- Previous post was at 15:58 ----------


это внутрисистемный конфигуратор предназначенный только для контроллера MY.
А разве это не конфигурация ДВК, когда установлен только этот контроллер? (для старта pdp-11.exe) И нету никаких хардов и прочих устройств? По моему всё таки это так? ПКМ я понимал
все CFG-шки как независимые пусковые настройки для pdp-11.exe - вопрос снят, разобрался )

Patron
22.03.2014, 16:19
160556
@172140/000040 37
@172142/000004 0
@Gу меня дискета системная в устройство 1 вставлена, пишу
- загрузки нет !В 172142 надо писать номер загружаемого привода. Если загрузка с MY1: - надо писать 1 ( и потом дождаться завершения чтения ):

http://emulator.pdp-11.org.ru/misc/Boot_MY1.png

MiX
22.03.2014, 16:34
Это штатная работа.

Обратимся к первоисточнику:

То-есть там сказано что 6 тест пишет дефект в случае подключения НГМД6022.

Patron
22.03.2014, 16:42
там сказано что 6 тест пишет дефект в случае подключения НГМД6022.А когда подключен НГМД-7012, то дефект не пишет. В конфигурации ДВК-1_DX.cfg подключен НГМД-7012 и 6 тест дефект не пишет. В чём же проблема ?

MiX
22.03.2014, 16:52
Понял, то что он пишет 005026 это адрес где он закончил тест. А я то думал что он просто вылетел.

MiX
23.03.2014, 00:18
Ещё одна непонятка.

Создал диск DX ,команда DIR показала 486 блоков. Т.С. показывает ёмкость образа 256.256 байт. В свойствах показывает 250КБ( 256 256 байт) на диске 250КБ ( 258 048 байт ). Открытый образ показывает Unused 248 832 байта. Эмулятор его естественно берёт.

Попробовал "стороний" диск RX01_0 присоединить отсюда: www.tis.kz/progs/dvk/E11.rar Эмулятор PDP11 как DX диск не берёт, консоль пишет что должен быть 256 256 байт. Присоединил как HD, команда DIR опять показала 486 блоков. В свойствах 247кб (252 928 байт) на диске 248 (253 952 байт) T.C. пишет 252 928 байт и открытый образ 248 832 байта.

И ещё: Andrey_Ak на своём сайте говорит что образ создается в 494 блока.

Ну собственно сам вопрос: Какой размер образа диска DX должен быть по стандарту (в блоках и байтах)?

Спасибо.

SKcorp.
23.03.2014, 00:30
Ещё одна непонятка.


Ну собственно сам вопрос: Какой размер образа диска DX должен быть по стандарту (в блоках и байтах)?

Спасибо.

Судя по всему 256256.

http://old-os.ucoz.com/load/prochee/rt_11_v03/6-1-0-29

MiX
23.03.2014, 00:50
ДА! И даже загрузился. :)

Patron
23.03.2014, 12:41
Изменение эмулируемой конфигурации.

Загрузка ранних версий RT-11.
--------------------------------------------

Первой версией RT-11, способной загружаться при отсутствии на шине адресуемого PSW, стала RT-11 V2.C (http://zx.pk.ru/attachment.php?attachmentid=46915)

Команды RT-11 V2.C описаны ЗДЕСЬ (http://bitsavers.trailing-edge.com/pdf/dec/pdp11/rt11/v2c_Jan76/RT11v2C_SysRefJan1976.pdf).



.ASS DX1:DK

.R PIP
*/L

MONITR.SYS 46
TT .SYS 2 20-NOV-75
LP .SYS 2 20-NOV-75
PR .SYS 2 20-NOV-75
PP .SYS 2 20-NOV-75
BA .SYS 7 20-NOV-75
DXMNFB.SYS 58 20-NOV-75
DXMNSJ.SYS 46 20-NOV-75
PIP .SAV 14 20-NOV-75
DUMP .SAV 5 20-NOV-75
EDIT .SAV 19 20-NOV-75
LINK .SAV 25 20-NOV-75
LIBR .SAV 15 5-DEC-75
MACRO .SAV 31 20-NOV-75
ASEMBL.SAV 21 20-NOV-75
BATCH .SAV 25 20-NOV-75
EXPAND.SAV 12 20-NOV-75
CREF .SAV 5 20-NOV-75
FILEX .SAV 11 20-NOV-75
PATCH .SAV 5 20-NOV-75
PATCHO.SAV 33 25-NOV-75
MTINIT.SAV 3 20-NOV-75
SRCCOM.SAV 11 20-NOV-75
SYSMAC.SML 18 20-NOV-75
SYSMAC.8K 25 20-NOV-75
VTMAC .MAC 7 20-NOV-75
ODT .OBJ 9 20-NOV-75
VTHDLR.OBJ 8 20-NOV-75
28 FILES, 467 BLOCKS
19 FREE BLOCKS
*

В RT-11 V3.0 (http://zx.pk.ru/attachment.php?attachmentid=46916) впервые появились DIR.SAV и DUP.SAV, все функции которых до этого выполнялись программой PIP.SAV

В RT-11 V3.B (http://zx.pk.ru/attachment.php?attachmentid=46918) впервые появилась возможность загрузки с DY.

...

MiX
25.03.2014, 22:38
RT-11 V4 для кассетного диска RK05 (CM5400).

HD диск его берёт но не грузит, но можно пересобрать под другой диск.

hobot
26.03.2014, 00:27
HD диск его берёт но не грузит, но можно пересобрать под другой диск.




HD (177720) disk driver v1.2 2012
EIS & FIS EM
SL V08.00 [SW] Сторожевых С.В. 1988

RS v06.05 RT11 profShell (c)EmeSoft90
ПРИМЕНЯЙТЕ КОМАНДУ "SET MX INFORM"

RT-11SJ V05.04 G Y2K 8BIT

.SE TT SCOPE,QUIET
TT
HD (Resident)
HD2 = DK , SY
EM (Loaded)
LD
SL (Loaded)
RS
MX
MY
DW
LP
NL
19 free slots

No LD units mounted


Время Дата
00:18:00 26-Мар-2014, Среда

HD раздел - специально для эмулятора ДВК !
форматировал и напичкал для себя софтом,
некто Хобот.



.DIR HD4:/BRI
26-Mar-2014
SWAP .SYS RT11BL.SYS RT11SJ.SYS RT11FB.SYS TT .SYS
DT .SYS DP .SYS DX .SYS DY .SYS RF .SYS
RK .SYS DL .SYS DM .SYS DS .SYS DD .SYS
MT .SYS MM .SYS MS .SYS LP .SYS LS .SYS
CR .SYS NL .SYS PC .SYS PD .SYS CT .SYS
BA .SYS PIP .SAV DUP .SAV DIR .SAV FORMAT.SAV
SLP .SAV SIPP .SAV STARTS.COM STARTF.COM V4USER.TXT
CREF .SAV DUMP .SAV MBOT16.BOT RESORC.SAV SYSMAC.SML
EDIT .SAV KED .SAV K52 .SAV TECO .SAV MACRO .SAV
MAC8K .SAV LINK .SAV LIBR .SAV FILEX .SAV SRCCOM.SAV
BINCOM.SAV MTHD .SYS MMHD .SYS MSHD .SYS PATCH .SAV
PAT .SAV HELP .SAV HELP .EXE HELP .MLB ERROUT.SAV
SYSGEN.SAV SYSGEN.CND SYSTBL.CND BATCH .SAV QUEMAN.SAV
QUEUE .REL SYSLIB.OBJ MDUP .SAV MDUP .MM MDUP .MT
MDUP .MS MBOOT .BOT MSBOOT.BOT DEMOF1.FOR DEMOED.TXT
README.TXT VT52 .TEC VEG .TEC EDIT .TEC INSERT.TEC
LOCAL .TEC SORT .TEC VTEDIT.TEC TECO .TC SEARCH.TEC
SQU .TEC TYPE .TEC TECO .INI ODT .OBJ VDT .OBJ
VTHDLR.OBJ PLOT55.OBJ TEST55.FOR GETSTR.FOR PUTSTR.FOR
SPEED .SAV SYCND .BL SYSTBL.BL SYCND .DIS SYCND .HD
SYSTBL.DIS RTBL .MAP RTSJ .MAP RTFB .MAP DISMT1.COM
DISMT2.COM
106 Files, 1942 Blocks
2820 Free blocks

.COPY HD.SYS HD4:
Files copied:
DK:HD.SYS to HD4:HD.SYS

.DIR HD4:.SYS
26-Mar-2014
SWAP .SYS 25 01-Feb-1982 RT11BL.SYS 65 01-Feb-1982
RT11SJ.SYS 67 01-Feb-1982 RT11FB.SYS 80 01-Feb-1982
TT .SYS 2 01-Feb-1982 DT .SYS 3 01-Feb-1982
DP .SYS 3 01-Feb-1982 DX .SYS 3 01-Feb-1982
DY .SYS 4 01-Feb-1982 RF .SYS 3 01-Feb-1982
RK .SYS 3 01-Feb-1982 DL .SYS 4 01-Feb-1982
DM .SYS 5 01-Feb-1982 DS .SYS 3 01-Feb-1982
DD .SYS 5 01-Feb-1982 MT .SYS 9 01-Feb-1982
MM .SYS 9 01-Feb-1982 MS .SYS 10 01-Feb-1982
LP .SYS 2 01-Feb-1982 LS .SYS 2 01-Feb-1982
CR .SYS 3 01-Feb-1982 NL .SYS 2 01-Feb-1982
PC .SYS 2 01-Feb-1982 PD .SYS 3 01-Feb-1982
CT .SYS 6 01-Feb-1982 BA .SYS 7 01-Feb-1982
MTHD .SYS 4 01-Feb-1982 MMHD .SYS 4 01-Feb-1982
MSHD .SYS 5 01-Feb-1982 HD .SYS 3P 01-Mar-2012
30 Files, 346 Blocks
2817 Free blocks

.COPY/BOOT:HD HD4:RT11SJ HD4:

.BOOT HD4:

HD (177720) disk driver v1.2 2012

RT-11SJ V04.00C

.D 56=5015

.TYPE V4USER.TXT
Welcome to RT-11 Version 4. RT-11 V04 provides new hardware support
and some major enhancements over Version 3B.

Please use the HELP command; it describes the new options in many
of the utilities.

If you are using a terminal that requires fill characters,
modify location 56 with a Deposit command before proceeding with
system installation. LA36 DECwriter II and VT52 DECscope terminals
do NOT require such modification.


.D 56=0

.


:redface:

hobot
26.04.2014, 11:21
У меня по ссылке http://zx.pk.ru/showpost.php?p=672426&postcount=346
вопрос по эмулятору , вопрос такой
- чем обусловлено отсутствие cfg файлa - спец. и отд. для DW ? Почему обделён этот контроллер, для всех других есть? Или я просмотрел что-то?
Вопрос о загрузки с него как со стартового носителя актуален (в эмуляторе то это опция в текстовом файле, а как на реальной машинке?)



[Booter.ini]
BootDeviceAlias = DW
BootDeviceUnit = 0




.SH
TT
DW (Resident)
DW0 = DK , SY
SL (Loaded)
EM (Loaded)
LD
LP
MY
MX
14 free slots


.да по инструкции у меня почему то всё время минимальный
размер (т.е. 5мб) DW - образ пустой создаётся? Хочется 20 сделать,
а что то никак ( Он даже не пытается предложить выбор размера
создаваемого образа )

Patron
26.04.2014, 12:48
чем обусловлено отсутствие cfg файлa - спец. и отд. для DW ?Тем, что ДВК-1 невозможно штатным образом загрузить с DW - нужно или вручную вводить коды загрузчика в пульте, или загрузиться с чего-то вроде MX или MY и потом дать команду BOOT DW:


у меня почему то всё время минимальный размер (т.е. 5мб) DW - образ пустой создаётся? Хочется 20 сделать, а что то никакДа, это квест. Я в таких случаях открываю блокнот и произвожу копи-пасту кучи пробелов с промежуточными сохранениями в файл с именем DW.DSK - любой нужный размер с точностью до байта подбирается примерно за минуту.

Если нужна болванка на 10 Мб, можно сделать проще - создать две болванки по 5 Мб и "склеить" их командой MS-DOS: COPY A.DSK+B.DSK DW.DSK

hobot
26.04.2014, 15:06
Если нужна болванка на 10 Мб, можно сделать проще - создать две болванки по 5 Мб и "склеить" их командой MS-DOS: COPY A.DSK+B.DSK DW.DSK
Гениально! Принято на вооружение ! )



нужно или вручную вводить коды загрузчика в пульте,
а есть код - для шпоры, там что то похожее на HX программу для пульта?
Я как то только сейчас (почему то) озаботился обе (в идеале) эти программы
где-то в сторонке иметь (в библиотеке в смысле!). Что бы легко было при случае скопи-пастить любому желающему?

Получается (это так резюмирую) что DW контроллер самодиагностику проводит, потом стучится на плату к ЦП - следствием чего является вылет в пульт? А если там не ДВК-1 а старшая 2М или скажем Квант ) ?

(спасибо за удобное стартовое меню разработчикам УК-НЦ и удобнейший
режим отладки оной же, ура!)

---------- Post added at 15:06 ---------- Previous post was at 14:49 ----------

Я вот о чём

1. Исправлена вставка из буфера обмена в окно терминала - теперь конец строки всегда вставляется как одиночный код <CR>. Также при вставке символы '¬' теперь преобразуются в коды <LF>, что позволяет при работе в пульте вставлять через буфер обмена скрипты из файлов *.odt.

НX-BOOT


10000/12706¬
10000¬
12746¬
340¬
12746¬
10016¬

4567¬
32¬
176401¬
41411¬
122¬


1000¬
227¬
105737¬
177560¬
100375¬
113703¬
177562¬
207¬
12704¬
16¬
105737¬
177564¬
100375¬
112537¬
177566¬
5304¬
1371¬
12700¬

4715¬


УК-НЦ.odt


10000/12706¬
10000¬
12746¬
340¬
12746¬
10016¬

4567¬
14¬
105737¬
177560¬
100375¬
113703¬
177562¬
207¬
105737¬
177562¬
105737¬
177564¬
100375¬
112737¬
26¬
177566¬
12700¬
1000¬
5004¬
4715¬
110324¬
5300¬
1374¬
5007
10000G


- к этим двум доп. инструкцию в две строки

+ такое же что то для DW, наверное?

Patron
26.04.2014, 17:38
Получается (это так резюмирую) что DW контроллер самодиагностику проводит, потом стучится на плату к ЦП - следствием чего является вылет в пульт? А если там не ДВК-1 а старшая 2М или скажем Квант ) ?Контроллер DW никуда не "стучится". Ни одно устройство ДВК никогда никуда само не "стучится".

У старших ДВК в ПЗУ есть загрузчик с DW, который вызывается командой B :



@B
$DW0

---------- Post added at 16:38 ---------- Previous post was at 16:01 ----------


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


Boot_DW.odt


0/240¬
415¬











41420¬
116020¬
400¬
137¬
540¬














102¬



































12704¬
174000¬
12767¬
23¬

5327¬
23¬
1460¬
12764¬
10¬
20¬
12703¬
1750¬
12705¬
100000¬
5764¬
20¬
100003¬
77504¬
77307¬
443¬
10046¬
10146¬
11601¬
20127¬
400¬
101402¬
12701¬
400¬
160116¬
16600¬

5266¬

10005¬
5205¬
42705¬
177760¬
10564¬

6200¬
6200¬
6200¬
6200¬
10005¬
42705¬
177774¬
10564¬
14¬
6200¬
6200¬
42700¬
177000¬
20027¬
231¬
103402¬
137¬
664¬
10064¬
12¬
12764¬
40¬
16¬
10400¬
62700¬
20¬
10405¬
62705¬
10¬
5710¬
100776¬
12703¬
1000¬
77301¬
32764¬
400¬
16¬
1405¬
60116¬
12601¬
12600¬
5300¬
662¬
12767¬
23¬
177540¬
105710¬
100376¬
11522¬
77104¬
32710¬

1004¬
105710¬
100373¬
5715¬
771¬
5716¬
1264¬
22626¬
241¬
207¬






12706¬
10000¬
12700¬

12701¬
2000¬
12702¬
1000¬
4767¬
177424¬
12737¬
210¬
4730¬
12737¬
16230¬
4716¬
5037¬
4722¬
137¬
1000¬






















4167¬

766¬
12700¬
746¬
4167¬
30¬
12100¬
4167¬
22¬
12700¬
762¬
4167¬
12¬


776¬
112037¬
177566¬
105737¬
177564¬
100375¬
105710¬
1371¬
201¬
5015¬
41077¬
47517¬
26524¬
26525¬
200¬
5015¬
12¬
27511¬
20117¬
71145¬
67562¬
162
R0/0
G
Предпоследняя строчка задаёт в R0 номер загрузочного устройства ( для DW не требуется ), но пусть будет для единообразности.

Чтобы загрузка могла идти при включённом таймере - надо добавить обслуживание вектора 0100 ( выделено синим цветом ).


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

MiX
26.04.2014, 18:26
В ДВК1 (в прошивке 000) есть загрузчики X0,D0 где ноль там ставится номер привода.
Если не втерпёж то можно попробовать добавить более старшую прошивку в эмулятор.

kapitan-u
17.05.2014, 19:43
очень нужен ROM 055

---------- Post added at 18:43 ---------- Previous post was at 18:23 ----------

вопрос снят http://qbus.narod.ru/dvk-rom.zip

form
15.07.2014, 17:09
Связь DVK Emulator (console) <> PDP-11/83 вполне себе работает надежно...
.VTCOM

HD (177720) disk driver v1.2 2012
SL V08.00 [SW] _TOROVEWYH _.+. 1988

RT-11SB (Y) V05.07

.SET TT FORM

.SET TT SCOPE

.SET EDIT K52

.SET EM ON

.SET SL ON

.DAY
+REMQ dATA
19:57:33 15-i@L-2014, +TORNIK

.TRANSF D20:IOSCAN.SAV/S/T/W IOSCAN.SAV
Creating IOSCAN.SAV from _TT::D20:IOSCAN.SAV
3 blocks transferred with 0 retries.
1222 characters saved through compression encoding.
IOSCAN.SAV created from _TT::D20:IOSCAN.SAV

.RU IOSCAN

173000-173776
177514-177516
177560-177566
177600-177722

.
TT::VTCOM> EX

.RU D20:IOSCAN

160100-160106
160440-160456
165000-165776
172100-172102
172150-172152
172200-172376
172516
173000-173776
174440-174456
174500-174502
176500-176536
177514-177524
177546
177560-177566
177572-177676
177744-177752
177766
177772
177776

.

Набор железа в эмуляторе пока небольшой :)

MiX
16.08.2014, 14:10
Patron, Возможно ли на эмуляторе работа с 2х терминалов? Я так понимаю нужен монитор RT11TS. И ещё, 2я плата DL11-W имеет адрес 176510 а не 176560 это так и должно быть?
Спасибо.

Patron
16.08.2014, 14:33
Возможно ли на эмуляторе работа с 2х терминалов?Только если бывают многотерминальные операционки, работающие с 56 К памяти.


2я плата DL11-W имеет адрес 176510 а не 176560 это так и должно быть?Такой адрес второго порта был у компа, тестировавшегося при создании эмулятора - при желании его можно легко изменить.

MiX
16.08.2014, 15:54
Patron, Если есть у Вас RT11TS то скиньте сюда, проверим.

bigral
17.08.2014, 01:46
Только если бывают многотерминальные операционки, работающие с 56 К памяти.

К стати упоминалась какая-то приблуда сделанная для работы basic-a на многих терминалах для non mapped систем. Как она называется? (вроди как rsts-11 древний это тоже мог)

form
18.08.2014, 17:13
К стати упоминалась какая-то приблуда сделанная для работы basic-a на многих терминалах для non mapped систем. Как она называется? (вроди как rsts-11 древний это тоже мог)

RSTS требует MMU. Есть такая штука MU/BASIC, она запускается под обычным многотерминальным RT-11FB на самых простых машинах...

hobot
03.09.2014, 18:54
Patron, было бы крайне интересно услышать (почитать) любые новости, планы, прогнозы, анонсы (пускай и самые отдалённые ту_ду) по развитию эмулятора ДВК - конкретно.

Спасибо.

Patron
04.09.2014, 13:16
было бы крайне интересно услышать прогнозы по развитию эмулятора ДВКВ системном ПЗУ ДВК есть загрузчик с перфоленты, поэтому ближайшим новым устройством в эмуляторе станет (скорее всего) перфолента.

Vamos
04.09.2014, 15:53
В системном ПЗУ ДВК есть загрузчик с перфоленты, поэтому ближайшим новым устройством в эмуляторе станет (скорее всего) перфолента.

Так, у кого есть образы перфоленты :D

MiX
04.09.2014, 17:33
В системном ПЗУ ДВК есть загрузчик с перфоленты, поэтому ближайшим новым устройством в эмуляторе станет (скорее всего) перфолента.
При этом очень желательна работа эмулятора с реальным параллельным портом LPT.


Так, у кого есть образы перфоленты :D

Кое что здесь. (download761.mediafire.com/n2o543d4qqzg/8gdirq5e721mjaj/Source+%5BRT-11%5D+LDA+-+%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD% D1%8B%D0%B9+%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D 1%87%D0%B8%D0%BA+%D0%BF%D0%B5%D1%80%D1%84%D0%BE%D0 %BB%D0%B5%D0%BD%D1%82%D1%8B+%28v1.0%29.zip)

Vamos
04.09.2014, 17:50
При этом очень желательна работа эмулятора с реальным параллельным портом LPT.
И много сейчас ПС с параллельным портом? У меня например нет ни одной.

hobot
04.09.2014, 19:02
И много сейчас ПС с параллельным портом?
Тут скорее вопрос - на какой минимальной конфигурации возможна комфортная работа эмулятора, а так если допустим собрать(что вполне осуществимо) PIII800EB там и LPT 100% будет и машинка шустрая (в плане ДОС\ВИНДОС хр) (под 4-й пень с платами реально проблематично, хотя процессоров завал).



Кое что здесь. (http://download761.mediafire.com/n2o543d4qqzg/8gdirq5e721mjaj/Source+%5BRT-11%5D+LDA+-+%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD% D1%8B%D0%B9+%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D 1%87%D0%B8%D0%BA+%D0%BF%D0%B5%D1%80%D1%84%D0%BE%D0 %BB%D0%B5%D0%BD%D1%82%D1%8B+%28v1.0%29.zip)
Предлагаете в разделе ДВК архива начать накапливать оцифровки лент?
Что там за формат и как с ним работать (распознать\отличить) ?

MiX
04.09.2014, 21:51
И много сейчас ПС с параллельным портом? У меня например нет ни одной. Например байтовый обмен есть у перфоратора ПЛ150М, если эмуляция параллельного порта имеет в обе стороны.


Предлагаете в разделе ДВК архива начать накапливать оцифровки лент? Раздел для этого более подходит "Электроника 60".


Что там за формат и как с ним работать (распознать\отличить) ? Формат примерно такой же как у загрузчика НХ. Расширение я думаю что будет ODT и/или BIN,LDA.

MiX
25.09.2014, 13:55
На всякий случай выкладываю драйвер PC.SYS.
Адресация: 177550 векторы 070 074

Patron
30.09.2014, 16:30
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_30.09.14_15-40

Изменения:

1. Улучшена эмуляция диска DX.

2. Теперь к приводам DX и DY можно подключать не только секторные, но и блочные образы ( т.е. обычные DSK-образы ). Для DX максимальный размер блочного образа 252928 байтов ( 494 блока ), для DY в режиме одинарной плотности - так же, как для DX, а в режиме двойной плотности - 505856 байтов ( 988 блоков ). Режим плотности каждого привода DY выбирается автоматически в соответствии с размером подключенного образа.

...

MiX
02.10.2014, 00:07
Добавил КТлК.

На основе конфигурации default.cfg сделал конфигурацию DVK_KTLK.cfg добавив устройства DL11-W с разными адресами. Вообще по уму желательно чтоб было это одно устройство иначе конфиг будет разрастаться с повторением излишней информацией, но для этого надо эмулировать КР1801ВП1-034 и КР1801ВП1-055. Далее поставил заглушки для того чтобы тест проходил, при желании можно закомментировать.

KTLK1 <=> KTLK1
KTLK2 <=> KTLK2
KTLK3 <=> KTLK3
KTLK4 <=> KTLK4
KTLK5 <=> KTLK5
KTLK6 <=> KTLK6
Во вложении конфиг и немного софта.
P.S. При запуске теста выключите таймер.

MiX
05.10.2014, 16:08
Добавил контроллер B1/B21

Контроллер В1 предназначен для управления ЭПЛ "Consul 260" и ФСУ "FS1501"
Адресация Consul 260 : 177560 вектор 60 (занят терминалом)
Адресация ФСУ FS1501 : 177550 вектор 70

Контроллер В21 предназначен для управления "ПЛ-150"
Адресация ПЛ-150 : 177554 вектор 74

Драйвером РС видится как одним устройством, хотя эмулируются два. К сожалению модуль принтера эмулирует связь только в одну сторону поэтому дальше платы В1 ничего не подключено на вход. На вывод сделал консоль PL150 но я не знаю ни одну управляющую программу чтоб проверить. Если у кого есть скиньте сюда. Во вложении конфиг и драйвер РС.SYS под RT11v5.7

Patron
22.10.2014, 16:05
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_08.10.14_16-54

Изменения:

1. Внесены изменения, описанные ЗДЕСЬ (http://zx-pk.ru/showthread.php?p=747184#post747184).

2. В файле конфигурации default.cfg параметры второго терминального порта изменены на следующие:



[TerminalPort2.ini]
BaseIO_Address = 0176560
BaseVectorsAddress = 0360
DL11W_TerminalPort_ComponentDisabled = 0
DL11W_LineClock_ComponentDisabled = 1
DL11W_LineClock_Hz = 50
DL11W_TerminalPort_BitsPerByte = 11
DL11W_TerminalPort_BaudRate = 9600
DL11W_TerminalPort_CPS_Limit = 0

Titus
23.10.2014, 16:51
Проверил сегодня тест правильности работы процессора ВМ2 для УКНЦ на эмуляторе ДВК, он практически замечательно там запускается. Единственные глюки - при ожидании ввода нажатия клавиши эмуль останавливается, загорается HOLD (почему?). И немножко лишних символов печатается.

Теперь по сути теста. Тест по сути - полный перебор всех сочетаний аргументов и флагов команд.
На реальном УКНЦ, EmuStudio и UKNCBTL - полностью работает.

На эмуляторе ДВК (v 0.90), судя по тесту, неправильно эмулируется команда SBC.
Что же касается команд деления и умножения, то их тестирование тоже проваливается, но, это, видимо, потому, что их попросту нет на ВМ1 (я с ним не очень знаком), и они эмулируются софтварно.

Исходник и тест можно взять тут (http://sderni.ru/247059).

Лог теста тут:



Тест процессора КР1801ВМ2 v0.1a (c) by dr.Titus

Тестирование правильности выполнения команд процессора:

Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - OK
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK

Однооперандные словные команды:
MOV - OK
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - ERROR: 0x92CB / 0xFA3A
SWAB - OK

Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK

Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK

Команды работы с флагами:
CLx - OK
SEx - OK

Команды условных переходов:
Bcc - OK

Команда умножения (частичный тест):
MUL (even/even) - ERROR: 0x14B4 / 0x534D
MUL (even/odd) - ERROR: 0xD23D / 0x7E18
MUL (odd/odd) - ERROR: 0xFD9A / 0x25ED
MUL (odd/even) - ERROR: 0x35BA / 0xF453
MUL (table) - OK

Команды сдвига (частичный тест):
ASH (test 1) - OK
ASH (test 2) - OK
ASHC (even) - OK
ASHC (odd) - OK

Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0x3AE8
DIV (odd) - ERROR: 0x7704 / 0x135F
DIV (odd) - ERROR: 0x7704 / 0x135F

form
23.10.2014, 16:56
при ожидании ввода нажатия клавиши эмуль останавливается, загорается HOLD (почему?).

Возможно выполнена команда SET SL ON, а SL.SYS работает в режиме VT100 (в том числе родной старый SL для которого выполнено SET SL VT52 - не поможет).

Patron
23.10.2014, 19:22
судя по тесту, неправильно эмулируется команда SBCДействительно - там была ошибка. Повезло, что в эмуляции SBCB ошибки не было, поэтому исправить эмуляцию SBC оказалось легко.

Titus
23.10.2014, 19:42
Действительно - там была ошибка. Повезло, что в эмуляции SBCB ошибки не было, поэтому исправить эмуляцию SBC оказалось легко.

А что на счет того - пояснить, как сделать так, чтобы HOLD не включалось, и лишние символы не печатались? И какие команды убрать, как отсутствующие в ВМ1?

Patron
23.10.2014, 20:33
как сделать так, чтобы HOLD не включалось, и лишние символы не печатались?Не выводить управляющие последовательности KeyON и KeyOFF - без этого даже на УКНЦ работать не перестанет, но зато на всех остальных машинах не будет глюков.



какие команды убрать, как отсутствующие в ВМ1?В 1801ВМ1 нет команд MUL, DIV, ASH и ASHC.

Titus
24.10.2014, 00:59
В 1801ВМ1 нет команд MUL, DIV, ASH и ASHC.
Как они эмулируются на ДВК?

---------- Post added at 00:59 ---------- Previous post was at 00:59 ----------


Не выводить управляющие последовательности KeyON и KeyOFF - без этого даже на УКНЦ работать не перестанет, но зато на всех остальных машинах не будет глюков.

Зато при нажатии пользователем клавиши, будет портится вывод информации.

Patron
24.10.2014, 01:23
Как они эмулируются на ДВКДрайвером EM.SYS (http://zx.pk.ru/attachment.php?attachmentid=33629), который включается командой SET EM ON

Titus
24.10.2014, 10:00
Адаптировал тест под ВМ1 и ДВК.

Теперь все работает окейно.

Тест тут вместе с исходником (http://sderni.ru/247140)

hobot
24.10.2014, 11:08
Теперь все работает окейно.


http://pic.pdp-11.ru/images/tstvm1.png





.TSTVM1
Тест процессора КР1801ВМ1 v0.1a (c) by dr.Titus

Тестирование правильности выполнения команд процессора:

Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - OK
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK

Однооперандные словные команды:
MOV - OK
Next page?
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - ERROR: 0x92CB / 0xFA3A
SWAB - OK

Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK

Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
Next page?
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK

Команды работы с флагами:
CLx - OK
SEx - OK

Команды условных переходов:
Bcc - OK
.

form
24.10.2014, 11:15
А команды работы с флагами проверяются все 32 или только привычные 10? :)

Titus
24.10.2014, 14:12
А команды работы с флагами проверяются все 32 или только привычные 10? :)

Все.

Patron
24.10.2014, 16:52
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_24.10.14_16-10 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_24.10.14_16-10.rar)

Изменения:

1. Внесены изменения, описанные ЗДЕСЬ (http://zx-pk.ru/showthread.php?p=747855#post747855).

2. Исправлена эмуляция команды SBC.

...

Titus
24.10.2014, 17:09
2. Исправлена эмуляция команды SBC.

Как полезно иногда сделать тест)

Благодаря нему исправился эмуль ДВК (sbc), UKNCBTL (команда сдвига, не помню какая), и EmuStudio (тоже не помню что).

Patron
24.10.2014, 18:45
а для проверки текущей реализации SIMH есть что-то?В SIMH можно кучу разных процессоров эмулировать, но для них есть тесты XXDP.

При запуске TSTVM2 в SIMH на процессоре PDP-11/23 результат такой:



Тестирование правильности выполнения команд процессора:

Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - OK
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK

Однооперандные словные команды:
MOV - OK
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - OK
SWAB - OK

Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK

Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK

Команды работы с флагами:
CLx - OK
SEx - OK

Команды условных переходов:
Bcc - OK

Команда умножения (частичный тест):
MUL (even/even) - OK
MUL (even/odd) - OK
MUL (odd/odd) - OK
MUL (odd/even) - OK
MUL (table) - OK

Команды сдвига (частичный тест):
ASH (test 1) - OK
ASH (test 2) - OK
ASHC (even) - OK
ASHC (odd) - OK

Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0xEE7C
DIV (odd) - ERROR: 0x7704 / 0x5956

Titus
24.10.2014, 19:06
Команда деления (частичный тест):
DIV (even) - ERROR: 0x4B4E / 0xEE7C
DIV (odd) - ERROR: 0x7704 / 0x5956


Деление реализовано программно?

Patron
24.10.2014, 19:17
Деление реализовано программно?Аппаратно. На эмулируемой в SIMH PDP-11/83 - точно такая же фигня.

hobot
24.10.2014, 20:05
http://pic.pdp-11.ru/images/version.png





.TSTVM1
Тест процессора КР1801ВМ1 v0.1a (c) by dr.Titus

Тестирование правильности выполнения команд процессора:

Однооперандные байтовые команды:
NOP - OK
MOVB - OK
CLRB - OK
COMB - OK
INCB - OK
DECB - OK
NEGB - OK
TSTB - OK
ROLB - OK
RORB - OK
ASRB - OK
ASLB - OK
ADCB - OK
SBCB - OK
SXT - OK

Однооперандные словные команды:
MOV - OK
Next page?
CLR - OK
COM - OK
INC - OK
DEC - OK
NEG - OK
TST - OK
ROL - OK
ROR - OK
ASR - OK
ASL - OK
ADC - OK
SBC - OK
SWAB - OK

Двухоперандные байтовые команды:
CMPB - OK
BITB - OK
BICB - OK
BISB - OK

Двухоперандные словные команды (частичный тест):
ADD - OK
SUB - OK
Next page?
CMP - OK
BIT - OK
BIC - OK
BIS - OK
XOR - OK

Команды работы с флагами:
CLx - OK
SEx - OK

Команды условных переходов:
Bcc - OK
.



последнее на данный момент обновление эмулятора
http://zx-pk.ru/showpost.php?p=747858&postcount=412

(!) Patron, а каким образом формируется список выбираемого шрифта для закладки VT52? Поясню - у меня в системе на ноуте и на стационаре, после установки DOSBOX в системе появляется очень правильный шрифт "Дежавю Санс Моно (http://pic.pdp-11.ru/images/dsm.png)", но вот какой нюанс:
В прошлый раз на ноуте этот шрифт был в выпадающем меню шрифтов эмулятора ДВК только на ноуте, теперь же обратная ситуация - он есть,
но только на стационаре ) Шрифт мне нравится тем, что он имеет правильный ноль (с буквой О никогда не спутаешь) и латинский шрифт
отчасти напоминает ДВКашный + шрифт масштабируемый. Можно
ли подпихнуть эмулятору любой шрифт в принципе? Должен ли этот шрифт обязательно быть в системной папке fonts ?

Patron
24.10.2014, 20:14
Можно ли подпихнуть эмулятору любой шрифт в принципе? Должен ли этот шрифт обязательно быть в системной папке fonts ?Шрифт должен быть фиксированной ширины ( как Courier или Fixedsys ) и должен быть установлен в системе.

Эмулятор просто вызывает системный перечислитель шрифтов и показывает в меню выбора шрифта полученный список.

Vslav
24.10.2014, 20:16
Я извиняюсь за свой тривиальный вопрос, тема большая, поиском ответ не нашел.
А как файлы из файла-имаджа перекидывать на PC и обратно? Какой софт для этого удобный есть? Может быть, плагин для FAR-а замутить?

Titus
24.10.2014, 20:23
Аппаратно. На эмулируемой в SIMH PDP-11/83 - точно такая же фигня.

А разве наши ВМ1-ВМ2 - не с нее были слизаны? Тогда почему на них все четко, а на прародителе нет?

---------- Post added at 20:23 ---------- Previous post was at 20:19 ----------


Я извиняюсь за свой тривиальный вопрос, тема большая, поиском ответ не нашел.
А как файлы из файла-имаджа перекидывать на PC и обратно? Какой софт для этого удобный есть? Может быть, плагин для FAR-а замутить?

Давно есть плагин RT-11dsk.wcx (http://zx-pk.ru/showthread.php?p=223608)

Patron
24.10.2014, 20:23
А как файлы из файла-имаджа перекидывать на PC и обратно? Какой софт для этого удобный есть? Может быть, плагин для FAR-а замутить?Плагин уже есть: RT-11 DSK Total Commander wcx plugin (http://zx-pk.ru/showthread.php?t=11015) ( как использовать его в FAR - там написано ).

ZEman
25.10.2014, 06:17
DVK_Emulator_24.10.14_16-10 - эта сборка что-то не хочет качаться.
можете выложить ещё раз ?

Patron
25.10.2014, 13:24
что-то не хочет качаться.Наверное, это были временные проблемы - сейчас всё качается нормально.

ZEman
25.10.2014, 14:50
да, где-то час назад скачалось нормально, спасибо.
утром сколько не пробовал никак не тянулся.

MiX
29.10.2014, 13:41
который включается командой SET EM ON
Не помогает. Тест не походит, возможно что вм2 как то иначе инструкции исполняет. Я как понимаю что драйвер ЕМ заменяет к примеру команду умножения на команду сложения.
Типа
2*2=2+2
3*3=3+3+3
Итак далее. Может как промежуточный вариант сделать поддержку умножения как в 1801ВМ1Г.


В файле конфигурации default.cfg параметры второго терминального порта изменены на следующие:
Ну это под плату МС хотя эмулируются DL11W. Интересно другое, плата DL11W на сколько я знаю может делать HALT от сигнала BREAK. То есть вызов пульта с терминала. Можете поддержать это.

Спасибо.

form
29.10.2014, 13:43
Интересно другое, плата DL11W на сколько я знаю может делать HALT от сигнала BREAK

Не может.
Это UNIBUSная плата, там просто нечем останавливать с шины :)

DLV11* могут.

MiX
29.10.2014, 13:57
Не может.
Это UNIBUSная плата Тогда что она делает на QBUSной шине? Что тогда вообще эмулируем, PDP с процессором 1801ВМ1 или ДВК с платами PDP.


DLV11* могут. 1801ВП 035 по моему тоже могут.

form
29.10.2014, 14:00
Тогда что она делает на QBUSной шине?

Это у автора надо спрашивать ;)
Видимо показалось соблазнительным запихать туда же эмулятор сетевого таймера, хоть и не совсем точно: DL11W вроде только управляемый таймер эмулирует (с регистром состояния) - не помню уже точно... Дома парочка (http://pdp-11.org.ru/~form/files/pics/84/PICT3914.JPG) их валяется...

Patron
29.10.2014, 18:09
плата DL11W на сколько я знаю может делать HALT от сигнала BREAK. То есть вызов пульта с терминала. Можете поддержать это.Надо подумать.

---------- Post added at 18:09 ---------- Previous post was at 18:08 ----------


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

Patron
12.11.2014, 18:27
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_12.11.14_17-12 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_12.11.14_17-12.rar)

Изменения:

1. Внесены изменения, описанные ЗДЕСЬ (http://zx-pk.ru/showthread.php?p=751141#post751141) и ЗДЕСЬ (http://zx-pk.ru/showthread.php?p=753214#post753214).


2. Теперь :



[links]

VT52 [Pause] + bus

Позволяет ставить эмуляцию на паузу при нажатии клавиши <Pause/Break>.




[links]

TerminalPort [HALT] + bus

Приводит к выходу процессора в пульт при получении портом терминала сигнала BREAK.


3. Файл конфигурации default.cfg изменён для постановки эмуляции на паузу при нажатии клавиши <Pause/Break>.


4. Файл конфигурации 60Kb.cfg изменён для выхода процессора в пульт при нажатии клавиши <Pause/Break>.


5. Файл конфигурации Server.cfg изменён для выхода процессора в пульт при получении команды BREAK протокола Telnet.

...

MiX
13.11.2014, 11:08
Обновилась текущая сборка
ОТЛИЧНО! Поздравляю Вас!:v2_dizzy_drink: Эмулятор вышел на новый уровень. Теперь можно его залить куда нибудь на сервер и гонять в режиме 365/7/24. :)


Файл конфигурации default.cfg изменён для постановки эмуляции на паузу при нажатии клавиши <Pause/Break>.Полезная фича, чем то напоминает стоп кадр на клавиатуре МС7004 и помогает при просмотре длинного каталога директории диска. Также например, играя в тетрис можно лишний раз подумать куда вставить пазл.:v2_thumb: Кстати как будет эм МС7004 делать при нажатии кнопки Стоп кадр.


Файл конфигурации 60Kb.cfg изменён для выхода процессора в пульт при нажатии клавиши <Pause/Break> Давно хотел спросить, а что реально дают 4кб.


Файл конфигурации Server.cfg изменён для выхода процессора в пульт при получении команды BREAK протокола Telnet Класс! Правда есть непонятка. Если в конфиге режим телнета стоит на Auto то Гипертерминал не может вызвать пульт при нажатии Ctrl-Break. При выставлении в конфиге принудительного режима телнет то команда проходит.

Еще раз Спасибо!

Patron
13.11.2014, 15:28
Если в конфиге режим телнета стоит на Auto то Гипертерминал не может вызвать пульт при нажатии Ctrl-Break. При выставлении в конфиге принудительного режима телнет то команда проходит.Это значит, что Гипертерминал производит согласование Telnet в пассивном режиме. Но сервер в режиме Auto поступает так же, поэтому согласование не происходит и режим Telnet сервером не включается.

MiX
13.11.2014, 15:55
Тоесть тупо поставить на телнет и успокоится? :)

Patron
13.11.2014, 16:59
поставить на телнет и успокоится?Или найти в настройках гипертерминала включение активного режима ( у PuTTY такая настройка есть ).

MiX
13.11.2014, 17:09
Patron, По моему терминал всё таки пассивное/ведомое устройство, а сервер как раз и задаёт режим работы в зависимости от типа терминала.

Doronetty
14.11.2014, 13:35
ОТЛИЧНО! Поздравляю Вас!:v2_dizzy_drink: Эмулятор вышел на новый уровень.
Ну по-настоящему на новый уровень он выйдет, когда появится поддержка КЦГД :v2_tong2:

Titus
14.11.2014, 16:05
Ну по-настоящему на новый уровень он выйдет, когда появится поддержка КЦГД :v2_tong2:

Мне кажется, что в ближайшее время точно не появится)

hobot
15.11.2014, 00:49
Ну по-настоящему на новый уровень он выйдет, когда появится поддержка КЦГД
КЦГД кстати в последнюю очередь нужен, поскольку софта под него ноль, если только что то создавать с нуля писать, демки какие-нибудь или игрушки, а вот закладку 15ИЭ+КГД (или доп.окно) вместо VT52 (или рядом) вот это действительно будет означать, что 99% программ, тестов, игр будут в эмуляторе работать.
Дело в том, что Patron похоже ориентирован больше на сеть (?), а не эмуляцию ДВК-2М ) Я конечно важность всех этих сетевых достижений ценю и понимаю(на самом деле стараюсь понять хотя бы частично), но для меня (сегодня) практической роли 0%, а вот виртуальную ДВК-2М всё равно хочется )

Однако и сегодня - именно этот эмулятор оптимален для шустрой компиляции исходников под RT-11 и если "забить" на КГД графику и
эксперименты с КЦГД (на которой по сути 1 стоящая игрушка всего то), то в целом имеем "как-бы" ДВК ) Что само по себе уже мощно )

Titus
15.11.2014, 00:58
если "забить" на КГД графику и
эксперименты с КЦГД (на которой по сути 1 стоящая игрушка всего то), то в целом имеем "как-бы" ДВК ) Что само по себе уже мощно )

Но, но, но! Под КЦГД полно игрушек. Клады, цветные и черно-белые, всякие пожарники, космические стрелялки, клады. Не говоря уже о графических пакетах и редакторах всяческих.

hobot
15.11.2014, 01:08
Клады, цветные и черно-белые, всякие пожарники, космические стрелялки, клады.
Доктор почему вы клады два раза написали?
Я вот ни одного клада под КЦГД не видел ни цветных ни ч\б.
Видел 1 ЛЭНД адаптированный под КЦГД и Зеленоградский LODE RUNNER от MAPLE.
Пожарники и не до пиленные стрелялки - я в принципе думаю, что легко заменимы
нормально рабочими играми, цветной тетрис да и фиг с ним. Так что если у тебя
тайная коллекция в которой "полно игрушек" под эту интересную железку просьба
огромная пришли мне для изучения с целью прилепить в архив.

Граф.пакеты и редакторы я обозвал в своём сообщении вот так

эксперименты с КЦГД

Так что там с кладами кладами, особенно с теми которых полно? )




Image : KGD_KCGD_GAMES.dsk

Format : DSK
Size : 800 Kb

Volume ID: KCGD=GAMES
Owner : PDP-11.ORG.R

File Blocks Date Bytes
---------- ------ ----------- ----------
BABY .SAV 44P 30-Jun-1994 22'528
FIGHTR.SAV 14P 30-Jun-1994 7'168
LODE .SAV 27P 30-Jun-1994 13'824
LAND .SAV 30P 18-Oct-1987 15'360
LANDD .SAV 9P 30-Nov-1989 4'608
SHERIF.SAV 24P 14-May-1987 12'288
SHERI2.SAV 24P 26-Dec-1988 12'288
LAND2 .SAV 35P 30-Apr-2011 17'920
PIFPAF.SAV 12P 30-Apr-2011 6'144
AFGAN .SAV 16P 19-Oct-1993 8'192
DIGER .SAV 63P 30-Apr-2011 32'256
GARDEN.SAV 25P 30-Apr-2011 12'800
LANDR .SAV 52P 28-Feb-1991 26'624
KOT .SAV 47P 19-Oct-1993 24'064
LAND1 .SAV 40P 27-Mar-1992 20'480
CINST .SAV 69P 30-Jun-1994 35'328
COL .SAV 34P 30-Jun-1994 17'408
COLS .SAV 34P 30-Jun-1994 17'408
COLUMN.SAV 75P 30-Jun-1994 38'400
COL .COM 1P 30-Jun-1994 512
COLUMN.HLP 8P 30-Jun-1994 4'096
COLUMN.ATR 1P 30-Jun-1994 512
MINE .SAV 36P 30-Jun-1994 18'432
LAND4 .SAV 64P 30-Jun-1994 32'768
CAT .SAV 52 07-Dec-1988 26'624
INVADE.SAV 61 27-Nov-1988 31'232
COLORS.SAV 15 26-Jun-1991 7'680
KCGD .SAV 3 18-Apr-1991 1'536
LDA .SAV 4 26-Jun-1989 2'048
LOAD .LDA 8 11-Oct-1989 4'096
LOAD .SAV 27 25-Jul-1991 13'824
KCGD82.SAV 2 30-Oct-1992 1'024
KCGD82.BIN 67 29-Jun-1992 34'304
KCGD81.TAB 20 01-Jul-1992 10'240
KCGD82.TAB 20 29-Jun-1992 10'240
KCGD81.BIN 67 01-Jul-1992 34'304
KCGD81.SAV 2 30-Oct-1992 1'024
CLOCK .SAV 20 30-Apr-2011 10'240
< UNUSED > 434 222'208
---------- ------ ----------- ----------
38 Files, 1152 Blocks
434 Free blocks


Легко видеть, что в этом списке 1 игра в которую можно играть без упрёков в адрес программистов и куча спорного ПО разной степени
сырости, остальное опробованное и хорошее всё под КГД или вовсе
в граф. плате не нуждается.

Titus
15.11.2014, 01:37
Доктор почему вы клады два раза написали?
Я вот ни одного клада под КЦГД не видел ни цветных ни ч\б.

Клады - это Land'ы)

shattered
15.11.2014, 13:43
да хоть gif/jpeg/png viewer написать бы :-)

Patron
12.12.2014, 14:15
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_11.12.14_19-42

Изменения:

1. Теперь к приводам HD и HX можно подключать не только DSK-образы, но и каталоги Windows. При этом в памяти эмулятора создаётся виртуальный образ DSK, дублирующий содержимое подключенного каталога.

Для выбора подключаемого каталога нужно выполнить <Alt/Клик> на пустой кнопке выбора образов. Для выбора каталога вместо подключенного образа DSK ( или для выбора образа DSK вместо подключенного каталога ) также используется <Alt/Клик>. Для смены одного каталога на другой ( как и для смены одного образа DSK на другой ) используется обычный клик.

Если содержимое подключенного каталога не удовлетворяет требованиям RT-11 - запросы чтения и записи к такому приводу будут отвергаться. При записи в блоки 0..5 - содержимое этих блоков сохраняется в файле BootSectors.bin и используется при последующих подключениях каталога.

Синхронизация содержимого каталога Windows и созданного в памяти виртуального DSK-образа производится при вводе с клавиатуры в эмуляторе команды "DIR" ( точнее - при любом чтении первого сегмента каталога после отсутствия обращений ).

Пока каталог виртуального DSK-образа содержит записи о временных файлах - синхронизация с каталогом Windows производится только в одну сторону ( из виртуального образа в каталог Windows ).


2. Теперь объект ODT_Loader игнорирует нулевые байты при ожидании промпта.

...

Vslav
12.12.2014, 15:00
Ура, ура, ура, а то я думал писать простую виртуальную машинку чтобы MAC/LINK запускать. Попробую в ближайшее время и выскажу замечания и пожелания.
А нельзя как-то сделать чтобы со стороны Windows копировались файлы в каталог, потому эмулятору "давался пинок" чтобы он запустил пакетный файл компиляции, и потом как-то отсемафорил винде что пакетник завершился?

hobot
12.12.2014, 15:13
не только DSK-образы, но и каталоги Windows.
Опасный момент. Надо три раза написать - только для тех кто знает что делает !!!


Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_11.12.14_19-42 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_11.12.14_19-42.rar)

Patron
12.12.2014, 16:18
А нельзя как-то сделать чтобы со стороны Windows копировались файлы в каталог, потому эмулятору "давался пинок" чтобы он запустил пакетный файл компиляции, и потом как-то отсемафорил винде что пакетник завершился?Позже для этих целей планируется сделать специальный "эмулятор RT-11", а пока можно использовать ODT_Loader, настроив его на промпт RT-11 ( '.' ). Тогда при запуске эмулятора, после загрузки RT-11 и появления промпта - во входной порт терминала автоматически начнёт загружаться файл скрипта.

Надо будет добавить в виртуальный контроллер HD команду завершения эмулятора. Тогда, если последней командой скрипта будет запускаться специальная программа EXIT.SAV, выдающая эту команду - сигналом завершения компиляции станет завершение работы эмулятора.

Пока завершение эмулятора из скрипта невозможно - организовать нормальную пакетную работу не получится.

form
12.12.2014, 16:45
А нельзя как-то сделать чтобы со стороны Windows копировались файлы в каталог, потому эмулятору "давался пинок" чтобы он запустил пакетный файл компиляции, и потом как-то отсемафорил винде что пакетник завершился?

Делал такое с E11, но не знаю сохранилось ли тут на форуме или нет. В принципе делается элементарно.

Vslav
12.12.2014, 16:51
Пока завершение эмулятора из скрипта невозможно - организовать нормальную пакетную работу не получится.
ОК, пока попробую просто запускать пакетник в постоянно висящем эмуляторе. Все равно процесс обещает стать немножко лучше чем метание по окнам тотал-командера, эмулятора, MSVC и квартуса - тотал командер выпадает :).

---------- Post added at 15:51 ---------- Previous post was at 15:49 ----------


Делал такое с E11, но не знаю сохранилось ли тут на форуме или нет. В принципе делается элементарно.
О, если бы нашлись подробности, было бы здорово.

form
12.12.2014, 16:59
О, если бы нашлись подробности, было бы здорово.

Отдохну немного после работы и сделаю если не лень будет.

Или можно самостоятельно сделать примерно так:


Есть драйвер DO(X).SYS для RT-11 (и исходники на случай пересборки с другими SYSGEN опциями), они идут в комплекте с дистрибутивом E11. Первый раз запихнуть их в образ RT-11 можно подмонтировав нужный файл как DU устройство и скопировав командой вроде "COP DU:/DEV DO.SYS/FIL/NOQ".
В E11.INI добавляется команда "MOU DO:".
В STARTx.COM или STRTxx.COM добавляется команда копирования с устройства DO: некоего FILE.COM (и его запуска) который содержит все нужные команды для копирования с DO нужных исходников, их компиляции/сборки и копирования результата обратно. После чего в случае успеха всех команд выполняется любая программа останова процессора (можно командами монитора D и STA)
В E11.INI последние две команды должны быть BOOT и QUIT, тогда при останове процессора E11 выйдет в систему


примерно так :)

hobot
12.12.2014, 17:07
Позже для этих целей планируется сделать специальный "эмулятор RT-11"
Прямо в виндовом окошке? Типа DosBox или эмулятора PDP-11 Полетаева под дос? Вот тогда вопрос - как там быстродействие будет организовано\настравиваем ? Какой в основе будет процессор ВМ2 или ВМ3? В целом хотелось бы просто больше информации пускай и об абстрактной, предполагаемой функциональности? И можно ли будет (к примеру) менять версию монитора? Очень интересно.

form
12.12.2014, 17:07
Попутно можно задействовать BATCH в RT-11, тогда можно еще и получить полноценный лог процесса. BATCH несложен. Впрочем лог можно получить и включением его в самом E11 для консоли...

Patron
12.12.2014, 18:01
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_12.12.14_17-28

Изменения:

1. Объект ODT_Loader модифицирован для возможности загрузки клавиатурных скриптов в ответ на промпт RT-11.

2. Добавлен образ диска ScriptSYS.DSK, содержащий систему RT-11, загружаемую при использовании клавиатурного скрипта.

3. Добавлен файл конфигурации LoadScript.cfg, загружающий клавиатурный скрипт из файла Script.txt

4. Теперь завершение работы эмулятора можно осуществлять из RT-11 запуском программы EXIT.SAV, находящейся в образе ScriptSYS.DSK

...

hobot
13.12.2014, 19:53
4. Теперь завершение работы эмулятора можно осуществлять из RT-11 запуском программы EXIT.SAV, находящейся в образе
Попробовал компилировать и работать с WorkDir - очень удобно!
Главное тут соблюдать очевидные ограничения RT-11 в плане имён файлов и всё такое.

И это уже не просто эмулятор ДВК-1 ! Это некий другого качества продукт уже )

---------- Post added at 19:53 ---------- Previous post was at 19:21 ----------

Изящно и мощно !!!
Папка NTFS может быть и системным разделом, т.е. загрузчик на неё копируется обычным способом


.COPY/SYS *.* HD6:
Files copied:
DK:RT11SB.SYS to HD6:RT11SB.SYS
DK:RT11FB.SYS to HD6:RT11FB.SYS
DK:SWAP.SYS to HD6:SWAP.SYS
DK:HD.SYS to HD6:HD.SYS
DK:NL.SYS to HD6:NL.SYS
DK:LD.SYS to HD6:LD.SYS
DK:SL.SYS to HD6:SL.SYS
DK:EM.SYS to HD6:EM.SYS
DK:LP.SYS to HD6:LP.SYS
DK:MX.SYS to HD6:MX.SYS
DK:MY.SYS to HD6:MY.SYS
DK:DW.SYS to HD6:DW.SYS
DK:HX.SYS to HD6:HX.SYS
DK:DX.SYS to HD6:DX.SYS
DK:DY.SYS to HD6:DY.SYS
DK:DAY.SAV to HD6:DAY.SAV
DK:HAND.SAV to HD6:HAND.SAV
DK:DIR.SAV to HD6:DIR.SAV
DK:PIP.SAV to HD6:PIP.SAV
DK:DUP.SAV to HD6:DUP.SAV
DK:DUMP.SAV to HD6:DUMP.SAV
DK:UCL.SAV to HD6:UCL.SAV
DK:RESORC.SAV to HD6:RESORC.SAV
DK:BINCOM.SAV to HD6:BINCOM.SAV
DK:SIPP.SAV to HD6:SIPP.SAV
DK:SRCCOM.SAV to HD6:SRCCOM.SAV
DK:SLP.SAV to HD6:SLP.SAV
DK:SPLIT.SAV to HD6:SPLIT.SAV
DK:HELP.SAV to HD6:HELP.SAV
DK:LINK.SAV to HD6:LINK.SAV
DK:LIBR.SAV to HD6:LIBR.SAV
DK:IND.SAV to HD6:IND.SAV
DK:K52.SAV to HD6:K52.SAV
DK:EDIT.SAV to HD6:EDIT.SAV
DK:TECO.SAV to HD6:TECO.SAV
DK:CREF.SAV to HD6:CREF.SAV
DK:MACRO.SAV to HD6:MACRO.SAV
DK:BASIC.SAV to HD6:BASIC.SAV
DK:PAT.SAV to HD6:PAT.SAV
DK:HANDLE.SAV to HD6:HANDLE.SAV
DK:DESS.SAV to HD6:DESS.SAV
DK:EDIK.SAV to HD6:EDIK.SAV
DK:SYSMAC.SML to HD6:SYSMAC.SML
DK:SYSLIB.OBJ to HD6:SYSLIB.OBJ
DK:SYSTEM.MLB to HD6:SYSTEM.MLB
DK:XONIX.SAV to HD6:XONIX.SAV
DK:KLOP.SAV to HD6:KLOP.SAV
DK:MARS.SAV to HD6:MARS.SAV
DK:STRTFB.COM to HD6:STRTFB.COM
DK:STRTSB.COM to HD6:STRTSB.COM
DK:UCL.DAT to HD6:UCL.DAT
DK:MARS.DAT to HD6:MARS.DAT
DK:TETRIS.SAV to HD6:TETRIS.SAV
DK:CPUCSR.MAC to HD6:CPUCSR.MAC
DK:CPUCSR.SAV to HD6:CPUCSR.SAV
DK:EXIT.SAV to HD6:EXIT.SAV

.COPY/BOOT:HD HD6:RT11SB HD6:

.BOOT HD6:

HD (177720) disk driver v1.2 2012
ПРИМЕНЯЙТЕ КОМАНДУ "SET MX INFORM"
SL V08.00 [SW] Сторожевых С.В. 1988

RT-11SB (Y) V05.07

.SET TT FORM

.SET TT SCOPE

.SET EM ON

.DIR
13-Dec-2014
BASIC .SAV 56 12-Sep-2011 BINCOM.SAV 25 31-Oct-1998
CPUCSR.MAC 3 19-Dec-2013 CPUCSR.SAV 2 19-Dec-2013
CREF .SAV 6 31-Oct-1998 DAY .SAV 4 13-Apr-2013
DESS .SAV 20 04-Nov-1993 DIR .SAV 20 31-Oct-1998
DUMP .SAV 10 31-Oct-1998 DUP .SAV 52 31-Oct-1998
DW .SYS 4 02-Feb-1990 DX .SYS 4 31-Oct-1998
DY .SYS 4 31-Oct-1998 EDIK .SAV 22 20-Apr-1993
EDIT .SAV 19 31-Oct-1998 EM .SYS 4 04-Mar-2012
EXIT .SAV 1 12-Dec-2014 HAND .SAV 8 08-Nov-2011
HANDLE.SAV 17 06-Sep-1991 HD .SYS 3 01-Mar-2012
HELP .SAV 161 31-Oct-1998 HX .SYS 6 08-Feb-2014
IND .SAV 58 31-Oct-1998 K52 .SAV 54 12-May-1999
KLOP .SAV 13 21-Nov-1988 LD .SYS 11 27-Apr-2011
LIBR .SAV 24 31-Oct-1998 LINK .SAV 59 31-Oct-1998
LP .SYS 2 21-Apr-1998 MACRO .SAV 63 21-Dec-2012
MARS .DAT 2 21-Dec-2012 MARS .SAV 15 08-Aug-1986
MTPQ1 .COM 1 13-Dec-2014 MX .SYS 9 15-Dec-2012
MY .SYS 3 07-Dec-1989 NL .SYS 2 27-Apr-2011
PAT .SAV 11 31-Oct-1998 PIP .SAV 30 31-Oct-1998
RESORC.SAV 35 01-Mar-2012 RT11FB.SYS 105 23-Dec-2012
RT11SB.SYS 97 23-Dec-2012 SIPP .SAV 21 31-Oct-1998
SL .SYS 10 28-Dec-1987 SLP .SAV 13 31-Oct-1998
SPLIT .SAV 3 31-Oct-1998 SRCCOM.SAV 26 31-Oct-1998
STRTFB.COM 1 26-Feb-2012 STRTSB.COM 1 12-Dec-2014
SWAP .SYS 28 31-Oct-1998 SYSLIB.OBJ 84 31-Oct-1998
SYSMAC.SML 92 31-Oct-1998 SYSTEM.MLB 148 31-Oct-1998
T4QQQ1.MAC 1 13-Dec-2014 T4QQQ1.OBJ 1 13-Dec-2014
TECO .SAV 50 31-Oct-1998 TETRIS.SAV 28 07-Dec-1994
TPQQQ1.PAS 1 13-Dec-2014 TPQQQ1.SAV 4 13-Dec-2014
UCL .DAT 18 12-May-2009 UCL .SAV 16 12-May-2009
XONIX .SAV 23 01-Dec-1994
61 Files, 1614 Blocks
63853 Free blocks

.




[HD.ini]
HD0 = HDSYS.DSK
HD1 = hdsys_hobot.dsk
HD2 = 54G_2YK8BIT.dsk
HD3 = 54Y_hobot_oldreserv.dsk
HD4 =advent_rus_DWKemul.dsk
HD5 =hdhobot_shatered.dsk
HD6 =WorkDir\
HD7 =ScriptSYS.DSK


Всё гениальное просто? )

Patron
13.12.2014, 20:16
Папка NTFS может быть и системным разделом, т.е. загрузчик на неё копируется обычным способомТонкость в том, что Windows автоматически сортирует файлы в папке NTFS по алфавиту, поэтому лучше переименовать RT11SJ.SYS в ( например ) AT11SJ.SYS, чтобы имя файла попало в начало списка. Иначе любое изменение в таком каталоге в ходе работы загруженной оттуда RT-11 может привести к её зависанию.

hobot
13.12.2014, 22:52
Увидел bin - файлик - он как то проявился в проводнике виндоус не сразу )
!!!

---------- Post added at 22:50 ---------- Previous post was at 22:49 ----------

пред. сообщение удаляю своё ! )

---------- Post added at 22:52 ---------- Previous post was at 22:50 ----------

кстати последняя версия серьёзно увеличила "тепловыделение" ноута, как и последняя сборка UKNCBTL )

Patron
13.12.2014, 22:57
1. Как после окончания работы "запоминается" что загрузчик был установлен, ведь образ внутри эмулятора как-бы стирается ?При изменении младших блоков виртуального образа - изменения сохраняются в файле BootSectors.bin для загрузки при последующих использованиях.



2.Эмулятор мониторит содержимое ячеек которым EXIT отправляет определённые значения? (там две команды перед EMT 350) ???Теперь контроллер HD реагирует на команду 9. Если при вводе этой команды в регистр HDCSR, регистр HDDATA содержит значение 060434 - эмулятор контроллера HD посылает главному окну эмулятора сигнал WM_QUIT.



3. Если всё таки WorkDir в памяти эмулятора как виртуальный диск, откуда риск повисонаПри каждой синхронизации виртуальный диск сквизится, а сквиз системного диска не приводит к зависону RT-11 только тогда, когда файл монитора не изменил своего положения на диске, что гарантируется только в том случае, когда этот файл лежит на диске первым.

---------- Post added at 22:57 ---------- Previous post was at 22:53 ----------


последняя версия серьёзно увеличила "тепловыделение" ноутаНадо проверить процент использования процессора.

Если эмулятор настроен на максимальное быстродействие - он обязан использовать 100% быстродействия одного из ядер процессора ( тогда на 2-ядерном проце будет загрузка 50% ).

hobot
13.12.2014, 23:19
Если эмулятор настроен на максимальное быстродействие - он обязан использовать 100% быстродействия одного из ядер процессора ( тогда на 2-ядерном проце будет загрузка 50% ).
Так и есть ! ) Зато компилит за секунду! )



http://pic.pdp-11.ru/images/dwkemul.png

MiX
14.12.2014, 18:25
Patron, Можно Вас попросить заэмулировать плату МС3404, или хотя бы соединить старшую и младшую прошивки. Попробую вместо Бейсика запустить.
Спасибо.

Patron
14.12.2014, 18:43
соединить старшую и младшую прошивки и вместо Бейсика запустить.Для помещения в память эмулятора кода любых ПЗУ служит объект типа ROM.

Чтобы поместить в память код двух ПЗУ - надо создать два объекта этого типа, повесить их на шину и задать правильные значения для ROM_DataFile, ROM_BaseAddress и ROM_Bytes в их настройках:



[objects]

ROM1 = CPU_module:ROM
ROM2 = CPU_module:ROM


[links]
bus & ROM1 | ROM2


[ROM1.ini]
ROM_DataFile = ROM1.dat
ROM_BaseAddress = 0100000
ROM_Bytes = 020000
ROM_LatencyNS = 300
ROM_Disable = 0


[ROM2.ini]
ROM_DataFile = ROM2.dat
ROM_BaseAddress = 0120000
ROM_Bytes = 020000
ROM_LatencyNS = 300
ROM_Disable = 0

MiX
14.12.2014, 18:50
Для помещения в память эмулятора кода любых ПЗУ служит объект типа ROM. Я так понимаю это только для чтения.

Patron
14.12.2014, 19:22
Я так понимаю это только для чтения.Да, эмулируемый ROM ведёт себя в точности как настоящий.

MiX
14.12.2014, 20:08
Пока Трап то4 100020 (чтение)
На 173000 выбрасывает.

---------- Post added at 20:08 ---------- Previous post was at 19:47 ----------

Заметил глюк в эмуляторе.
Если отжать кнопку Вкл и нажать Сброс то эмулятор зависает.

Patron
14.12.2014, 21:43
Пока Трап то4 100020 (чтение)Но это уже исполняемая из ПЗУ программа зависает, а сам код ПЗУ сидит в памяти начиная с того адреса, который указан в параметре ROM_BaseAddress.

---------- Post added at 21:43 ---------- Previous post was at 21:26 ----------


Если отжать кнопку Вкл и нажать Сброс то эмулятор зависает.Исправить эту ошибку оказалось легко - в следующем релизе её уже не будет.

MiX
14.12.2014, 21:49
Patron, Хочу сказать что на плате 8битные ПЗУшки, значит и адрес для 2х ПЗУ должен быть один. ПЗУ считываются одновременно с одной с0 по 7 с второй с8 по15 разряды. Так что тут надо либо прошивку сливать в одну, либо организовывать синхронное чтение с 2х ПЗУ.

Patron
14.12.2014, 22:23
надо либо прошивку сливать в одну, либо организовывать синхронное чтение с 2х ПЗУ.Надо любым удобным способом делать файл образа памяти и помещать его в память эмулятора при помощи объекта ROM.

MiX
14.12.2014, 22:55
Patron,На всякий случай.

Паспорт на МС3404.04 здесь (http://www.aa2972727.ru/index.php/news/2012-12-04-12-44-21/58--3404)
Прошивки и паспорт Здесь. (http://archive.pdp-11.org.ru/BIBLIOTEKA/MC3404/)

Насколько я понимаю.
Старт происходит по адресу 165000 или 173000. Так как в эмуляторе 173000 занят то ставим адрес ROM 165000.
У меня после 165000G выдаёт Трап то 4 165004.

В эмуляторе объект ROM работает с 16 разрядной прошивкой, так?

Patron
14.12.2014, 23:44
ставим адрес ROM 165000.
У меня после 165000G выдаёт Трап то 4 165004.Коды ПЗУ должно быть видно в пульте. Если их не видно - эмуляцию ROM надо будет исправлять.

---------- Post added at 23:44 ---------- Previous post was at 23:42 ----------


В эмуляторе объект ROM работает с 16 разрядной прошивкой, так?Работает с двоичным дампом памяти ДВК из диапазона адресов ROM.

MiX
15.12.2014, 00:15
Patron, Считывание с ПЗУ К573РФ2 происходит только в паре. По отдельности с одной микросхемы будет только часть кода с 0 по 7 разряды. Соответственно объект ROM будет ошибочно считывать следующие коды для разрядов с 0 по 7 думая что это 8-15. Таким образом половина прошивки (по разрядам) никак не сможет исполнится.

form
15.12.2014, 04:22
Насколько я понимаю.
Старт происходит по адресу 165000 или 173000. Так как в эмуляторе 173000 занят то ставим адрес ROM 165000.
У меня после 165000G выдаёт Трап то 4 165004.

В эмуляторе объект ROM работает с 16 разрядной прошивкой, так?

Не знаю как там сделано, а на DECовских машинах при такой организации используются оба адресных окна. В процессе работы в эти окна отображаются разные страницы кода ПЗУ и в момент переключения одного окна, код выполняется в другом.

При этом на KDJ11-B/KDJ11-E к примеру допускается наличие стороннего ROM в этих окнах (и возможность его выполнения сохраняется).

MiX
15.12.2014, 05:39
form, В KDJ11-B стоит 2е микросхемы ROM с организацией 16*8. Попробуйте вытащить одну их и посмотреть запустится ли плата.

В РФ2 организация 2*8 и для считывания есть два варианта
Считывать два раза по 8 занося в буфер чтоб на шину выдать сразу 16.
Или считывать сразу с двух микросхем чтоб выдать 16.
По моему в плате МС3404 сделан 2 вариант.

form
15.12.2014, 05:44
form, В KDJ11-B стоит 2е микросхемы ROM с организацией 16*8. Попробуйте вытащить одну их и посмотреть запустится ли плата.

И не пробуя скажу - запустится. У них разный функционал - одна - собственно ROM загрузчика-диагностики, вторая - EEPROM куда сохраняются настройки, свои загрузчики итд. Никакого 2x16*8 нету (http://pdp-11.org.ru/~form/pdp11-83/pics/KDJ11B.jpg).

MiX
15.12.2014, 05:52
form, EEPROM не в счет, эта 3я ROM. На плате должны стоять 2е i27128 с окошком. В них никакие настройки не сохраняются т.к. это EPROM.

form
15.12.2014, 05:53
form, EEPROM не в счет, эта 3я ROM. На плате должны стоять 2е i27128 с окошком. В них никакие настройки не сохраняются т.к. это EPROM.

Хотя да, соврал - там действительно 2 по 8 бит и EEPROM отдельно.
Но вобщем-то к делу не относится все-равно :)

Собственно у меня и сама прошивка так и сохранена: в обычном виде (16 бит) и в виде 2х файлов по 8бит. Могу если надо быстро наваять утилитку которая делает из двух файлов один и наоборот :)

MiX
15.12.2014, 06:45
Могу если надо быстро наваять утилитку которая делает из двух файлов один и наоборот :) Будет очень кстати!

form
15.12.2014, 06:47
Будет очень кстати!

Сейчас сделаю - пока пью кофе -- поди начальство не поймет ваяю я утилиту или внутренности видеокамеры :D

MiX
15.12.2014, 06:54
form, Не хочу показаться дотошным, но по поводу 2х ПЗУ EPROM
Вот. http://zx-pk.ru/showpost.php?p=387291&postcount=18
и вот http://zx-pk.ru/attachment.php?attachmentid=27285&d=1305990829

form
15.12.2014, 07:23
Сейчас сделаю - пока пью кофе -- поди начальство не поймет ваяю я утилиту или внутренности видеокамеры :D

Простая утилитка для Win32 console.

Usage:
romtool -s romfile lsbfile msbfile
romtool -c lsbfile msbfile romfile

первое разбирает 16битный файл на 8битные, второе собирает два 8битных файла в 16битный

form
15.12.2014, 09:08
Немного накосячил в программе, сейчас еще поковыряю и выложу исправленную...

---------- Post added at 12:08 ---------- Previous post was at 11:53 ----------

Обновилась программа выше (http://zx-pk.ru/showpost.php?p=761545&postcount=477) - исправлен косячок...

Теперь вроде все нормально:
form@diag:~/romtool$ cc -o romtool romtool.c
form@diag:~/romtool$ ./romtool -c /tmp/*.BIN rom.bin
form@diag:~/romtool$ ./romtool -s rom.bin a b
form@diag:~/romtool$ md5sum a b /tmp/*.BIN
9e696420bb4416d9a29128613a7a4484 a
7d4ab62e8b607d0ab95772d2918ef2c6 b
9e696420bb4416d9a29128613a7a4484 /tmp/23-168E5.BIN
7d4ab62e8b607d0ab95772d2918ef2c6 /tmp/23-169E5.BIN
form@diag:~/romtool$

form
15.12.2014, 09:24
Исходники romtool на всякий случай... Для сборки используется GNU make (для простоты). Проверено в Linux, OpenBSD и Windows XP, по идее должно собираться в большинстве унихов (возможно потребуется убрать -DHAVE_PROGNAME из Makefile [для современных лунухов, FreeBSD/NetBSD не нужно]). В виндовсе используется MinGW.

form
15.12.2014, 11:49
А нельзя ли добавить вот такой хитрый (выключаемый) функционал для DL11?

Если порт назначен как коннектящийся по сети куда-то, отслеживать состояние бита 1 (000002) в регистре состояния клавиатуры и не коннектиться пока он не установлен (отключаться когда сброшен). С возможностью (не)сброса по RESET этого бита. Данный функционал позволит (вероятно) более качественно использовать VTCOM для подключения к удаленным системам (в основном актуально для VMS при подключении через TELNET).

hobot
15.12.2014, 15:28
А нельзя ли добавить вот такой хитрый (выключаемый) функционал для DL11?

Если порт назначен как коннектящийся по сети куда-то, отслеживать состояние бита 1 (000002) в регистре состояния клавиатуры и не коннектиться пока он не установлен (отключаться когда сброшен). С возможностью (не)сброса по RESET этого бита. Данный функционал позволит (вероятно) более качественно использовать VTCOM для подключения к удаленным системам (в основном актуально для VMS при подключении через TELNET).

В "читальном зале" продублировал утилиту - на всякий случай )
http://archive.pdp-11.org.ru/BIBLIOTEKA/ROMTOOL_by_form/
http://i.smiles2k.net/sport_smiles/brake.gif

form
15.12.2014, 15:33
В "читальном зале" продублировал утилиту - на всякий случай )
http://archive.pdp-11.org.ru/BIBLIOTEKA/ROMTOOL_by_form/
http://i.smiles2k.net/sport_smiles/brake.gif

Там на самом деле Makefile не совсем как ожидалось работает (я не знаток GNUси), но в принципе сборке не мешает. На досуге подумаю и может что-то более существенное сделаю, а пока и фиг с ним :)

hobot
15.12.2014, 15:54
Ну там же (http://archive.pdp-11.org.ru/BIBLIOTEKA/ROMTOOL_by_form/) собранная есть )

MiX
15.12.2014, 20:00
form, Можно справку по программе.

form
15.12.2014, 20:03
form, Можно справку по программе.

Так я написал - всего два варианта запуска, один разбирает файл на два, другой собирает из двух :)

Vslav
15.12.2014, 21:28
Вставлю 5 копеек. Есть универсальная утилита SRecord, развивается очень давно и мощно - в исходниках и собранная под Linux/Windows. Помимо того что она кушает-выдает кучу форматов (в том числе от DEC-а), она позволяет разбирать/собирать файлы именно по байтам/словам и прочему - опции split/unsplit.

form
15.12.2014, 21:32
Хм. В портах на роутере есть - будем знать!

hobot
19.12.2014, 00:09
баг-репорт WorkDir !

Из раза в раз ловлю такой глюк.
У меня в указанной директории, которая в эмуляторе = HD7 = DK
(при этом эмулятор включен и загружена система).
Так вот: там лежит .COM - где набор команд для компиляции программы
на паскале, при редактировании его с помощью блокнота WindowsXP,
проблем нет, но если я вношу изменения средствами RT-11 (!) в конец файла
всегда добавляется строка одинакового содержания.

Если т.о. я редактирую исходник с расширением .PAS при использовании
блокнота винды проблем нет, если использую Nys - в конце появляется ^J и
ещё какая-то белиберда.


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

Patron, это легко воспроизвести попытаться - создайте файл текстовый в папке и редактируйте его блокнотом и Нысом поочерёдно делая ty в RT-11 - оно
проявится, вот увидите! )

form
19.12.2014, 04:30
в конце появляется ^J и
ещё какая-то белиберда.

Скорее всего та же старая ошибка: при записи неполного блока остаток должен забиваться нулями.

Patron
19.12.2014, 14:23
если я вношу изменения средствами RT-11 (!) в конец файла всегда добавляется строка одинакового содержания.Кошмарная ошибка - изменённые файлы Windows при их сохранении открываются для записи, а не для перезаписи. В следующем релизе этой ошибки не будет.

---------- Post added at 14:23 ---------- Previous post was at 14:17 ----------


Скорее всего та же старая ошибка: при записи неполного блока остаток должен забиваться нулями.Остаток забивается, но в текстовых файлах Windows нули недопустимы, поэтому в процессе перезаписи текстового файла нули удаляются.

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

form
19.12.2014, 14:56
Ошибка в том, что изменённые файлы открываются на запись, поэтому их размер после закрытия не может стать меньше исходного.

В виндовсе нету вызова аналогичного truncate()?

Patron
19.12.2014, 15:34
В виндовсе нету вызова аналогичного truncate()?В Windows можно и напрямую изменять размер открытого файла, и обнулять размер открываемого файла в момент открытия, но так как сделать что-то из этого я просто забыл - новое содержимое в текущем релизе просто пишется внутрь старого и если байтов в новом содержимом меньше - старое содержимое файла видно в его конце.

Patron
19.12.2014, 20:11
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_19.12.14_17-10 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_19.12.14_17-10.rar)

Изменения:

1. Исправлена ошибка с неправильной перезаписью файлов в подключенном к приводу HD каталоге Windows.

2. Теперь эмулятор может обрабатывать файлы ( вызываемые двойным кликом ) и командные строки. При этом загружается файл конфигурации, указанный в соответствующей строке секции [CmdLine] файла Config.ini. При обработке командной строки берётся значение параметра CmdLine, при обработке файлов - значение из параметра с именем и расширением файла, а при отсутствии такого параметра - из параметра вида *.EXT, где EXT - расширение обрабатываемого файла. По умолчанию во всех случаях используется файл конфигурации CmdLine.cfg. Если двойным кликом эмулятору передаётся файл с расширением .cfg - такой файл автоматически используется в качестве загружаемого файла конфигурации вне зависимости от настроек в Config.ini

3. Теперь в значениях параметров подключаемых приводов HD можно использовать символ ©, который перед подключением привода заменяется на текущий каталог командной строки / путь к переданному на обработку файлу, и символ ®, который заменяется на имя обрабатываемого файла без расширения. Пример использования - в файле CmdLine.cfg

4. Теперь объект ODT_Loader при не указанном файле скрипта и наличии командной строки или файла для обработки - загружает скрипт из файла ODT_Loader.ini . Загружаемая секция выбирается по тем же принципам, что и имя параметра в секции [CmdLine] файла Config.ini

5. Теперь в скриптах для объекта ODT_Loader можно в начале каждой строки указывать отдельный промпт для каждой конкретной строки, а также передавать управляющие символы в тексте скрипта. Примеры в файле ODT_Loader.ini

6. Теперь в скриптах для объекта ODT_Loader можно использовать символы © и ®, которые заменяются на командную строку и имя обрабатываемого файла без расширения.

7. Теперь при подключении каталогов Windows к приводам HD можно задавать объём создаваемого виртуального диска, для чего к имени каталога надо добавить строку вида ".nnM", где nn - число от 1 до 32, задающее размер виртуального диска в мегабайтах ( например - каталог AT11SJ.5M будет отображён на виртуальный диск объёмом 5 МБайт ).

8. Теперь виртуальный контроллер HD может по запросу программ временно изменять скорость работы эмулятора.

9. В комплект эмулятора добавлен каталог AT11SJ.5M, содержащий монитор RT-11 с именем AT11SJ.SYS, который использует новые возможности контроллера HD по управлению скоростью эмуляции. Загрузка всегда выполняется на максимальной скорости, а ожидание ввода команды KMON - на скорости 0.125 MIPS. Во всех остальных случаях устанавливается основная скорость эмуляции, заданная в файле конфигурации и изменяемая кнопкой выбора скорости эмуляции.

10. Теперь любые каталоги Windows монтируются в приводы HD без ограничений.

...

CodeMaster
19.12.2014, 22:16
Есть универсальная утилита SRecord,

Тоже вставлю копеечку. Приложу три консольных утилиты, омижные ромы сшивали/расшивали. Зачем нужен sew2word уже не помню, наверное просто для последовательного сшития двух 16-ти битных дампов.

Patron
19.12.2014, 22:38
Небольшое дополнение к описанию текущего релиза.

Если двойным кликом эмулятору передаётся файл с расширением .cfg - такой файл автоматически используется в качестве загружаемого файла конфигурации вне зависимости от настроек в Config.ini

MiX
19.12.2014, 22:46
Ребята ну что ж вы все консольные проги сыпите. У меня в ХР они открываются и тут же закрываются. Неужели нет нормальной программы.

CodeMaster
19.12.2014, 22:54
У меня в ХР они открываются и тут же закрываются.

Как можно работать без какого-либо коммандера? :-/

Patron
19.12.2014, 22:54
Ребята ну что ж вы все консольные проги сыпите. У меня в ХР они открываются и тут же закрываются. Неужели нет нормальной программы.Секрет прост - надо сначала запустить в Windows приложение "Командная строка" ( Пуск->Программы->Стандартные->Командная строка ), а там уже запускать консольные приложения.

CodeMaster
19.12.2014, 22:58
надо сначала запустить в Windows приложение "Командная строка"

Ну это я не стал советовать, я полагал, что все старьёвшики в курсе что до Windows была DOS $-) Просто в командной строке не удобно рулить каталогами и файлами.

MiX
19.12.2014, 23:28
Никогда файлы с расширением EXE не выполняются однозначно. Может открыться а может и нет. Там может всё что угодно написано.
Про пляски с бубном знаю (CMD и т.д.) Тогда зачем оконная среда, спрашивается.
Чтобы сделать одну операцию надо сделать ещё 10 и не факт что всё гладко пройдет.

Впрочем если в эмуляторе появится поддержка 2х 8 битных прошивок, проблема сама собой отпадет.

CodeMaster
20.12.2014, 08:02
Никогда файлы с расширением EXE не выполняются однозначно. Может открыться а может и нет.

А с COM более однозначно?


Тогда зачем оконная среда, спрашивается.

Для утилизации места на диска. То что в консоли занимает 10 килобайт, в графике мегабайт полтора.


Впрочем если в эмуляторе появится поддержка 2х 8 битных прошивок, проблема сама собой отпадет.

Это будет правильно (ближе к жизни ;-)