PDA

Просмотр полной версии : Эмулятор RT-11



Patron
20.02.2015, 22:09
Эмулятор RT-11 для консоли Windows ( 16.01.2022 ) - RT-11_Emulator_16.01.2022 (https://emulator.pdp-11.org.ru/RT-11/distr/RT-11_Emulator_16.01.2022.rar)

Основное назначение - использование компилятора MACRO-11 в Windows. Также возможен запуск программ RT-11 и применение команд и утилит RT-11 к файлам в текущем каталоге Windows, удовлетворяющим ограничениям RT-11 на размер и имя файла.


Установка.
------------
1. Поместить файл rt11.exe в каталог Windows или добавить каталог [RT-11 Emulator] в PATH.

2. Запустить rt11.exe, выполнить правый клик на заголовке окна, выбрать "Свойства" и задать желаемые параметры размера шрифта, цвета текста и фона и положения окна по умолчанию.

3. Ввести команду:

copy/dev/file/noq sy: SYSTEM.DSK
для извлечения системного диска. Это позволит позже дополнять загружаемую систему программами по своему выбору. Для типового использования эмулятора извлечение системного диска не требуется.

4. Нажать <F12> для завершения эмуляции.


Использование.
----------------
1. Ассоциация расширений SAV и BAS с эмулятором позволяет запускать такие файлы на выполнение из каталогов Windows двойным кликом.

2. Передача эмулятору командной строки в двойных кавычках с путём к файлу с расширением SAV или BAS - запускает файл в эмуляторе ( rt11 "D:\rt11\Demo\KOI8.BAS" ).

3. Запуск rt11.exe загружает RT-11 ( при этом текущий каталог Windows доступен в RT-11 как устройство DK: ). Для выхода из RT-11 нужно выполнить команду EXIT или нажать <F12>.

4. Использование rt11.exe с командой RT-11 в качестве аргумента вызова - применяет указанную команду к текущему каталогу Windows ( rt11 dir/fu >Files.txt ).

5. Для получения справочной информации по интересующей команде RT-11 справку можно вывести в файл в текущем каталоге Windows при помощи команды RT-11 HELP ( rt11 help copy >Copy.txt ). Список всех доступных разделов помощи выводится командой: HELP *

6. С системного диска RT-11, помимо стандартных утилит, могут быть запущены следующие программы:
6.1. rt11 dhry - запуск теста быстродействия эмуляции
6.2. rt11 tetris - запуск игры TETRIS
6.3. rt11 xonix - запуск игры XONIX
6.4. rt11 klop - запуск игры KLOP

...

MiX
20.02.2015, 23:12
Patron, Есть ли возможность выйти в пульт?

Patron
20.02.2015, 23:22
Есть ли возможность выйти в пульт?Нет. Любое событие, требующее выхода в пульт ( вроде выполнения команды HALT ) - приводит к завершению эмуляции.

MiX
20.02.2015, 23:53
Patron, Попробовал запустить через HyperTerminal- запустилось, а вот эм.VT52
мигает курсор и всё. Как процесс RT11.exe оказался запущен но на экран эмулятора VT52 ничего не выдаёт.
В чём причина?

Vslav
21.02.2015, 00:16
Обнаружен такой момент - при запуске из под Far 3.0 корежит консоль - при выходе из эмулятора не восстанавливается окно консоли в прежнем виде.

Patron
21.02.2015, 00:40
на экран эмулятора VT52 ничего не выдаёт.
В чём причина?Возможно, есть какие-то эмуляторы командной строки Windows, которые позволяют перенаправлять ввод-вывод для запущенных под ними консольных программ Windows в IP или COM порт - но эмулятор RT-11 это обычная консольная программа Windows, поэтому сам он, без посторонней помощи, ничего такого не может.

---------- Post added at 00:40 ---------- Previous post was at 00:18 ----------


при выходе из эмулятора не восстанавливается окно консоли в прежнем виде.Релиз обновлён - теперь при выходе из эмулятора восстанавливается исходный размер буфера консоли.

MiX
21.02.2015, 01:33
Возможно, есть какие-то эмуляторы командной строки Windows, которые позволяют перенаправлять ввод-вывод для запущенных под ними консольных программ Windows в IP или COM порт - но эмулятор RT-11 это обычная консольная программа Windows, поэтому сам он, без посторонней помощи, ничего такого не может. Запуск производил через Телнет, как HyperTerminal'e так и в эм.VT52. Я думаю что в эм.VT52 нет согласования команд по Телнет.

Последовательность действий
Запуск службы Telnet
Кликаем правой кнопкой мышки на значёк "Мой компьютер"
Выбираем "Управление" > Cлужбы > Telnet > Пуск

В HyperTerminal'e подключаемся на адрес 127.0.0.1 порт 23
На экране приветствие службы Telnet где надо ввести логин и пароль.
После прописывается путь к файлу RT11.exe и Ентер.
Можно работать.

В VT52 запуск через конфигурацию IP где предварительно редактируется порт на 23.
Далее аналогичные действия как HyperTerminal'e но надо учитывать что эм.VT52 не поддерживает кодировку WIN 1252.

---------- Post added at 01:33 ---------- Previous post was at 01:07 ----------

Отбой!
Надо было прописать в конфигурации тип терминала.

TelnetTerminalTypeReport ="VT52"

MiX
21.02.2015, 15:40
Ещё какая то непонятка, после команды sh all как HyperTerminal'e так в эм.VT52 не до конца информация выходит на экран. Стрелкой вниз можно прокрутить до конца но курсор ставится после точки RT. И не вводится не один символ, хотя курсор перемещается.

Patron
21.02.2015, 17:38
Ещё какая то непонятка, после команды sh all как HyperTerminal'e так в эм.VT52 не до конца информация выходит на экран.Если у VT52 убрать TelnetTerminalTypeReport ="VT52" то показывает нормально. Если использовать PuTTY - тоже проблем не возникает.

Хуже, что любое появление промпта RT-11 на Telnet-экране приводит к отключению вывода на экран.

MiX
21.02.2015, 18:16
Если у VT52 убрать TelnetTerminalTypeReport ="VT52" то показывает нормально. Каким образом? У меня переводит курсор назад и промпт не показывает.


Если использовать PuTTY - тоже проблем не возникает. Тоже не показывает.


Хуже, что любое появление промпта RT-11 на Telnet-экране приводит к отключению вывода на экран. То-есть проблема Telnet протокола?

Patron
21.02.2015, 19:59
переводит курсор назад и промпт не показывает.Если выдать команду
rt11 sh all - все, кроме ГиперТерминала, показывают нормально.


То-есть проблема Telnet протокола?Скорее - проблема Windows, так как получается, что консоль Windows несовместима с Telnet.

---------- Post added at 19:59 ---------- Previous post was at 19:56 ----------

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

Patron
05.03.2015, 12:44
Кстати, если позапускать последний DHRY.SAV под разными эмуляторами - можно посмотреть, насколько эмулятор RT-11 быстрее всех остальных эмуляторов ( я его только в SIMH запускал - SIMH оказался медленнее в ~ 3 раза ).

MiX
06.03.2015, 00:20
Вопрос такой, а RT11 использует команды FPU, или только программы?
Есть текст эмулятора FPU но я не знаю как скомпилировать в SYS чтоб проверить.

Patron
06.03.2015, 01:19
Вопрос такой, а RT11 использует команды FPU, или только программы?Только программы.

А так как отсутствие FPU довольно типично - в состав таких программ часто включён эмулятор FPU, перехватывающий Trap10.

Например - родной Тетрис использует команды FIS, но без проблем идёт на процессорах без FIS ( вроде 1801ВМ1 ).

MiX
06.03.2015, 07:12
Хорошо, а как в МАСRO11 скомпилировать в SYS чтобы получить драйвер.
Спасибо.

Patron
06.03.2015, 10:08
как в МАСRO11 скомпилировать в SYS чтобы получить драйверНаиболее подходящий пример - исходник драйвера эмуляции EIS и FIS (http://zx.pk.ru/showthread.php?postid=475365).

...

NovaStorm
06.03.2015, 20:57
родной Тетрис использует команды FIS

А зачем они ему?

Patron
06.03.2015, 21:40
А зачем они ему?Компилятор решил, что нужны. Возможно, программист забыл указать, что какое-то число целое, и компилятор посчитал его вещественным.

hobot
07.03.2015, 00:43
Есть текст эмулятора FPU но я не знаю как скомпилировать в SYS чтоб проверить

Я просто для проверки исходника прогнал в эмуляторе


.mac FPX

.LIN FPX

.REN FPX.SAV FPX.SYS
?PIP-W-Reboot

.DSTAT FPX


File name: "DK:FPX.SYS", size: 7. blocks.
Release = V05, Version(s) = 1

*** Handler data structure
Handler size 2412. bytes
Sequential device
Device status word 004313 = [ HNDLR$ ]
Device code 313
Sysgen options 000006 = [ TIMIT$ MMGT$ ]
CSR address 000000
Vector 000
* Installation code for DATA SYSTEM

.


если переименовать в fp.sys будет вариант драйвера под RT-11, а нужен он в системе для ДВК?

MiX
07.03.2015, 08:43
Спасибо hobot, именно это я и хотел увидеть.

а нужен он в системе для ДВК? Тут нужен практический подход. Например можно посмотреть сколько чисел выдаст калькулятор числа ПИ после запятой с драйвером и без. Виндусовый калькулятор выдаёт 31 знак после запятой.

hobot
07.03.2015, 11:54
Спасибо hobot, именно это я и хотел увидеть.
Так по ссылке Patrona, где пример исходник EM.SYS там файлик EM.COM - в котором
команды компиляции драйвера )


MACRO EM
LINK/NOBITMAP/EXECUTE:EM.SYS EM
DEL EM.OBJ


- у меня получилось, что ключ /NOBITMAP - ни на размер файла ни на отчёт DSTAT не повлиял.
- /EXECUTE:EM.SYS - просто избавляет от необходимости переименовывать .SAV в .SYS
- EM - текущий файл типа .OBJ - по умолчанию.
Поэтому я (см. выше) самым обычным образом весь процесс компиляции запустил.


НУЖНО ВЫЧИСЛЕНИЕ - ЖЕЛАТЕЛЬНО ПРОГРАММНОЕ (то есть самому написать тест крохотный)
Штука в том что число PI в калькуляторе для БД и то же бейсике
прописано константой ) Надо какое то вычисление произвести для
проверки ответа без драйвера и с драйвером.



.RU MCALC
Справка по клавише К2

? PI
Результат : 3.14

?


Я в эмуляторе у себя, FPX.SYS - не удалял. Так что проверить то можно,
но нужно какое то вычисление для проверки?

MiX
07.03.2015, 16:50
Так по ссылке Patrona, где пример исходник EM.SYS там файлик EM.COM - в котором
команды компиляции драйвера ) Я и не подумал что во вложении.


Штука в том что число PI в калькуляторе для БД и то же бейсике
прописано константой ) Надо какое то вычисление произвести для
проверки ответа без драйвера и с драйвером. Просто разделить 22/7


Я в эмуляторе у себя, FPX.SYS - не удалял. Так что проверить то можно,
но нужно какое то вычисление для проверки? FPX.SYS это для монитора XM, для SJ надо создать FP.SYS.

hobot
07.03.2015, 17:36
FPX.SYS это для монитора XM, для SJ надо создать FP.SYS.
Да я уже это делал, когда скомпилил и проверял. Та же команда переименования )
(* очень нравится мне RT-11).

Кстати да я там выше писал же об этом
если переименовать в fp.sys будет вариант драйвера под RT-11, а нужен он в системе для ДВК?

2/7



.RUN HD2:MCALC
Справка по клавише К2

? 2/7
Результат : 0.29
? ^C

.BASIC
BASIC-11/RT-11 V02-03
OPTIONAL FUNCTIONS (ALL, NONE, OR INDIVIDUAL)? A

READY
PRINT 2/7
.285714

READY


теперь делаем так



.INS FP

.SH
TT
HD (Resident)
HD3 = DK , SY
LD
SL (Loaded)
RS
MX
MY
SW
FP
DW
LP
NL
18 free slots

.


на всякий случай ради чистоты эксперимента
перезапускаем систему и делим 2 на 7 )



.RU HD2:MCALC
Справка по клавише К2

? 2/7
Результат : 0.29
? ^C

.BASIC
BASIC-11/RT-11 V02-03
OPTIONAL FUNCTIONS (ALL, NONE, OR INDIVIDUAL)? A

READY
PRINT 2/7
.285714

READY


Что я делаю не так? )

MiX
07.03.2015, 17:44
hobot, Для начала сделай SH DEV и посмотри в каком статусе FP. Потом я написал 22 на 7 а не 2 на 7.
Файл драйвера и калькулятора в студию.

hobot
07.03.2015, 18:19
.DIR FP
07-Mar-2015
FP .SYS 7 07-Mar-2015
1 Files, 7 Blocks
49956 Free blocks

.SH DEV

Device Status CSR Vector(s)
------ ------ --- ---------
TT Installed 000000 000
HD Resident 177720 000
LD Installed 000000 000
SL 141710 000000 000
NL Installed 000000 000
LP Installed 177514 200
RS Installed 000000 000
MX Installed 177130 000
MY Installed 172140 170
DW Installed 174000 300
SW Installed 000000 000
FP Installed 000000 000



.BASIC
BASIC-11/RT-11 V02-03
OPTIONAL FUNCTIONS (ALL, NONE, OR INDIVIDUAL)? A

READY
PRINT 22/7
3.14286

READY
BYE

.RU HD2:MCALC
Справка по клавише К2

? 22/7
Результат : 3.14
? ^C

.


без FP делать?


---------- Post added at 18:19 ---------- Previous post was at 18:17 ----------

О! в архиве есть FP.SYS для КВАНТ-4 весит 8 блоков! )

скорее всего это что то другой, возможно улучшенный драйвер печати на замену LP


.AS MY1 DK

.DSTAT FP


File name: "DK:FP.SYS", size: 8. blocks.
Release = 60P, Version(s) = 514 11287 626 614 525 6128 4 3346 24585 24601 3017 7
64 5569 3666 24577 24593 3017 765 6080 44 22000 64 192

*** Handler data structure
Handler size 3286. bytes
Sequential device
Device code 201
CSR address 000000
Vector 000
* Installation code for DATA SYSTEM

*** Set options table:
ON entry 432
OFF entry 450
SYSGEN entry 530

.

MiX
07.03.2015, 19:29
hobot, Видно что FP без прерывания, хотя должен быть 010.

без FP делать? Можно не делать.

---------- Post added at 19:29 ---------- Previous post was at 18:53 ----------


скорее всего это что то другой, возможно улучшенный драйвер печати на замену LP Да нет, в этом же архиве есть драйвер LP. FP это и есть драйвер эмулятора FPP.
При старте пишет "FPP-эмулятор FP.SYS (c) А. Г. Григорьев"
Для запуска прописать в СОМ файле SET FP ON

nzeemin
24.03.2015, 16:12
Эмулятор RT-11 для консоли Windows

Patron, спасибо огромное за эту вещь! Реально экономит кучу времени.

Один небольшой комплейн (впрочем, работе не мешает):
почему-то при запуске MACRO-11 в текущем каталоге убиваются файлы "LICENSE" и ".gitignore".
Запускаю компиляцию командной строкой:

C:\bin\rt11\rt11.exe MACRO/LIST:DK: MAIN.MAC+SYSMAC.SML/LIBRARY

Patron
25.03.2015, 02:17
в текущем каталоге убиваются файлы "LICENSE" и ".gitignore"Будет исправлено.

Patron
25.03.2015, 17:50
Обновилась текущая сборка эмулятора RT-11 для консоли Windows ( 25.03.2015 ) - RT-11_Emulator_25.03.2015 (http://emulator.pdp-11.org.ru/RT-11/distr/RT-11_Emulator_25.03.2015.rar)

Изменения:

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

Чтобы лучше понять суть проблемы - можно скопировать архив с проблемными файлами (http://emulator.pdp-11.org.ru/misc/Bad_Names.zip), сделать текущим каталог 'Bad Names' и выполнить в предыдущей версии эмулятора команды:
rt11 dir > files.txt
rt11 copy sy:dir dk:

...

nzeemin
06.05.2015, 22:06
Patron, спасибо за фикс.

Ещё такой вопрос -- а можно сделать так чтобы при заходе в RT-11 и выходе из неё вообще не менялся текстовый режим? То есть определялся и использовался текущий.
Чаще всего я вызываю rt11 из Far для выполнения одной команды. Из-за смены текстовых режимов часть вывода команды проглатывается.

Patron
06.05.2015, 23:04
Чаще всего я вызываю rt11 из Far для выполнения одной команды. Из-за смены текстовых режимов часть вывода команды проглатывается.Какая именно часть? Когда я просто ввожу в FAR команду MS-DOS - DIR - весь вывод, кроме последних 25 строк, пропадает. Или в FAR есть какой-то способ увидеть не поместившиеся в экран строки вывода?

nzeemin
06.05.2015, 23:24
Какая именно часть? Когда я просто ввожу в FAR команду MS-DOS - DIR - весь вывод, кроме последних 25 строк, пропадает. Или в FAR есть какой-то способ увидеть не поместившиеся в экран строки вывода?

У меня Far в нестандартном разрешении -- 184x52 символа -- подгонял под размер экрана с выбранным шрифтом. Может из-за этого.

Вообще сейчас проверил -- вроде как всё ОК.
Сорри -- если замечу ещё сделаю скриншот.

Patron
06.05.2015, 23:37
У меня Far в нестандартном разрешении -- 184x52 символаЕсли число строк в буфере консоли больше 48 - размер буфера консоли не изменяется.

MiX
11.10.2015, 20:45
Patron, Есть вопрос такого плана. RT11 показывает 60Кб. памяти, но если пульта нет то на что тратится 4Кб.?
Спасибо.

Patron
12.10.2015, 11:00
Patron, Есть вопрос такого плана. RT11 показывает 60Кб. памяти, но если пульта нет то на что тратится 4Кб.?4 Кб - минимально возможный в RT-11 размер страницы ввода-вывода. Там ( в частности ) находятся регистры терминала.

Oleg N. Cher
21.11.2015, 18:43
Насколько сложно будет портировать эмулятор RT-11 Patron'а для консоли Linux? И - он закрытый?

hobot
21.11.2015, 19:16
эмулятор RT-11 Patron'а насколько я понимаю, автор конечно сам ответит про свой продукт, предварительно
довольно долго отлаживалась работа с файловой системой Windows, в параллельном проекте (эмуляторе ДВК). Совсем недавно вроде даже ещё один баг обнаружился и был исправлен именно с NTFS связанный. Вот лучше это всё в теме эмулятора http://zx-pk.ru/showthread.php?t=24755, что бы потом по всему форуму инф. не собирать, эта тема больше для публикаций с перспективой добавления в архив и вопросов по архиву же.

Patron
21.11.2015, 19:43
Насколько сложно будет портировать эмулятор RT-11 для консоли Linux?Консольный эмулятор наиболее полно использует возможности модульного API, который ( похоже ) давно сложнее ранних версий Linux, поэтому чтобы портировать консольный эмулятор - надо портировать весь модульный API. Но чтобы портировать модульный API - надо дождаться доведения его разработки хотя бы до стадии пред-релиза, чего в ближайшем времени ожидать не приходится.

Oleg N. Cher
21.11.2015, 21:55
Что значит "модульный API" если не прослойка между логикой эмулятора RT-11 и WinAPI? Тогда какой смысл в пред-релизе внутреннего API закрытого проекта? А уместно ли сравнение сложности внутреннего API полторамегабайтного эмулятора с ранними версиями Linux на сотни тысяч строк кода? В общем, очень витиевато ответил. А я программист, между прочим.

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

Oleg N. Cher
21.11.2015, 22:29
Я написал Günter Dotzel, одному из авторов компилятора Modula-2 для PDP-11 об эмуляторе Patron'а, а Гюнтер большой фанат этой архитектуры, и вот его ответ, вдруг вам будет интересно:


Dear Oleg,

>> I can communicate with the author of RT-11 emulator - http://archive.pdp-11.org.ru/EMULATORS/DVKEmulator/RT11_Emulator.rar

didn't know about this emulator.
seems the rt-11 operating system and utilities are all build into rt11.exe

it isn't open source as far as I see from inspecting the archive.

the doc is very sparse.
found no info if it emulates LSI-11 or PDP-11.
though FPU or FIS emulation is not a requirement,
I'd need MMU hardware emulation.
no info about memory layout (how much address space is available for user programs?)
and I/O-page access (for MMU).

>> If you are interested, we can ask him how easy it is to build this emulator for Linux.

if it emulates MMU hardware under kind of unmapped RT11SJ
it might be interesting to try out under Linux in VirtualBox/Win 2000.
though I probably wouldn't invest any time to work with non-open source tools.

best
g.Если интересно связаться с Гюнтером, пишите в личку, дам его адрес.

Patron
21.11.2015, 22:59
уместно ли сравнение сложности внутреннего API полторамегабайтного эмулятора с ранними версиями Linux на сотни тысяч строк кода?За десять лет развития модульного API там тоже накопилось больше 100000 строк кода. Проблема в том, что консольный эмулятор RT-11 использует весь этот код, потому кто-то должен будет портировать эти тонны кода под Linux.

Patron
21.11.2015, 23:13
Гюнтер большой фанат этой архитектуры.Пора ему учить русский.

Кстати - не исключено, что на одной из лежащих у меня 10-мегабайтных лент есть дистрибутив его компилятора Modula-2 для PDP-11.

Oleg N. Cher
21.11.2015, 23:55
За десять лет развития модульного API там тоже накопилось больше 100000 строк кода. Проблема в том, что консольный эмулятор RT-11 использует весь этот код, потому кто-то должен будет портировать эти тонны кода под Linux.Что - 100000 строк кода API компилятся всего в полтора мега .exe, не считая логики самого эмуля и веса образа диска? В это как-то с трудом верится.

Другой вопрос, стоило ли основывать потенциально годный (консоль есть почти везде) к мультиплатформенности эмуль на таком привязанном к виндоуз коде. Или лучше было бы опереться на LibC или Qt/GTK. Тем более винда, кажется, теряет свой былой блеск. Но не буду навязывать стиль, каждый программит как хочет. У меня интерес вообще-то непрямой.

А Модулу хорошо бы запустить в инет, а то Гюнтер не может прочесть свои восьмидюймовые дискеты.

Patron
22.11.2015, 00:27
Что - 100000 строк кода API компилятся всего в полтора мега .exe, не считая логики самого эмуля и веса образа диска? В это как-то с трудом верится.Чистый API конечно меньше весит, но портировать-то его по-любому надо - без мощи API всё превратится в обычный SIMH, который и так без проблем идёт под Linux. Чтобы довести SIMH до ума в качестве консольного эмулятора RT-11 - надо организовать передачу кода завершения программы из RT-11 в Linux, написать прозрачный для вызовов RT-11 конвертер файловой системы RT-11 в файловую систему Linux и научить SIMH автоматически передавать в RT-11 аргументы вызова эмулятора. Любой желающий может сделать это за несколько месяцев.


А Модулу хорошо бы запустить в инет, а то Гюнтер не может прочесть свои восьмидюймовые дискеты.Ленты я тоже не могу найти где сдампить уже лет 30.

Oleg N. Cher
27.11.2015, 15:40
Гюнтер пытался запустить эмулятор на W2k, можно что-то ему посоветовать?

Oleg,

started rt11.exe under win2k in VBox under Linux.
it says UxTheme.dll not found.

if there's any update for win2k (found some hints here
http://www.msfn.org/board/topic/159004-uxthemedll/
but the links to the dropbox are dead)

I can't install it since I won't go online with w2k anymore.

I could install win7 in VBox but that'd need to much time getting
all updates installed. I'll see if I've an old notebook
with win7/linux dualboot...

best
g.

hobot
27.11.2015, 17:26
Может кинешь пока ему ссылку на DLL.RU ? Вдруг поможет если руками библиотеку подпихнёт.

- - - Добавлено - - -

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

BYTEMAN
27.11.2015, 17:26
Oleg N. Cher, пусть Стасу напишет и на форуме зарегается, тут вроде как большинство английский более-менее знают, поможем...

Patron
27.11.2015, 17:45
Гюнтер пытался запустить эмулятор на W2k, можно что-то ему посоветовать?Если скачать установочный образ Win7 с этого торрента (http://emulator.pdp-11.org.ru/misc/Win7.SP1.x86-x64.Rus-Eng.18in1.torrent.zip), то он устанавливается с отключенными обновлениями, поэтому установка проходит быстро. При желании обновления можно позже включить. Ставил этот вариант и под виртуальной машиной, и вживую - проблем не возникало.

Oleg N. Cher
27.11.2015, 23:30
Он вник в описание по использованию, там ведь стандартное поведение консольного приложения по сути, я не думаю что IT-шник с опытом не сможет запустить под окошками эмулятор.Не, просто если он пытается под W2k запустить эмуль, которому нужны dll минимум от Win7, то по барабану консольная ли прога или нет. Вопрос автору: под какой виндоуз можно запускать (тестировалось)?

Я ещё посоветую ему попробовать под Wine.

У иностранцев могут быть свои взгляды на использование dll, скачанных с сайта типа DLL.RU, они к лицензированию относятся очень трепетно.

hobot
28.11.2015, 02:34
они к лицензированию относятся очень трепетно.
Это не он ли спрашивал тебя - есть ли у нас лицензия на RT-11?


которому нужны dll минимум от Win7
так пусть подпихнёт библиотеку (а она там есть) под 2К окошки и соответственно проведёт ещё один пробный запуск.
Минутное дело, даже обсуждать нет смысла. Проект для консоли Windows ) Где запустишь там и заработает )
Диапазон систем наверное младшей надо считать XP sp3 и все что выше - должен работать.
Могут быть нюансы, а поскольку 2K - сама по себе 1 большой нюанс - пускай пробует или ты хочешь заставить Patron'a во всех мыслимых сочетаниях система, система+виртуальная машина тестировать эмулятор? Вот лучше сам в роли тестора выступи и все вопросы отпадут.

litwr
28.11.2015, 09:27
3анимательная pdp-11! Когда-то давно запускал эмулятор (e11?) по ДОСом - был удивлен тем, что ничего не зная о системе, смог там что-то позапускать. Решил сейчас с этой любопытной и оставившей глубочайший след на ИТ архитектурой поразбираться. Надеюсь на помощь знатоков.
Началось как-то не очень. E11 вообще не знаю как запустить, а SIMH с прилагаемым на его сайте образом РТ-11 грузится, но что-то там нужно настраивать - вместо стирания по клавише Delete происходит печать удаляемого символа после слэша - редакторы в таком режиме не работают. :-( Еще не разобрался как писать файлы на образы дисков.
Пошёл только эмулятор RT-11 уважаемого Patron'a. Сам работаю с Линукс - присоединяюсь пожеланиями к Гюнтеру и ко. Запускаю эмулятор из под XP под виртуальной машиной. Идея очень понравилась, для начинающих - это самый удобный способ. Но возникли проблемы:

1) что-то не так с консольным выводом: если печатаем длинную строку и печать доходит до низа экрана, то вместо скроллинга строка продолжает печатся с начала экрана. Это можно проверить чем-то типа такого кода mov #3000,r1 mov #65,r0 ab: .ttyout sob r1,ab
2) не работают команды умножения и деления, делаю, например, mov #100,r2 mul #10,r2 - не работает
3) есть ли в РТ-11 какой-нибудь отладчик типа debug из DOS или ddt/zsid из CP/M?

Кстати, все ли знают, что наконец заработал эмулятор легендарного компьютера Терак, праобразa нашей почти легендарной БК?

hobot
28.11.2015, 15:49
вместо стирания по клавише Delete происходит печать удаляемого символа после слэша
Это нормальное по умолчанию поведение, символ из вводимой строки стирается, просто зеркально отображается при стирании вся строка.
Что бы такого не было, надо SE TT SCOPE параметр установить или загрузить драйвер SL.SYS командой SE SL ON.


что наконец заработал эмулятор легендарного компьютера Терак,
А он под окошки? И если да надо прямую ссылку для изучения эмулятора и ПО для него где взять.



Идея очень понравилась, для начинающих - это самый удобный способ.
Я категорически не согласен, это удобно, но только не для начинающих! Для начинающих 100% нативная среда
вот идеальный способ. Ставьте полноценный эмулятор ДВК и изучайте систему в нём. Скорость компиляции
можно регулировать скоростью эмуляции (с помощью удобного меню), эмулятор работает с обычной NTFS папкой
как с каталогом RT-11. Подробности в авторской теме. Я бы ещё и УК-НЦ предложил, но пока воздержусь.
Книги по системе и краткие инструкции по командам легко найти среди строковых ссылок в центральном фрейме главной
мордочки архива и в БИБЛИОТЕКЕ же )

- - - Добавлено - - -

по 1) 2) 3) дождитесь ответа Patrona - я просто не вник что там у вас, с переносом строки проблема, в каком эмуляторе где?
Какие при этом настройки? Отладчики есть под RT-11 штатные и не штатные, но они под и для RT-11 же (я не пользуюсь поскольку понятия не имею что с ними делать, отлаживаю свои исходники визуально - проверочными параметрами и "точками" внутри программы)

litwr
28.11.2015, 18:30
благодарю за подсказки. С ними "погружение" должно пойти побыстрее.
По Тераку. Это давно известный эмулятор, должен собираться и под Виндуз с SDL. Собирал его даже на Raspberry Pi. http://sourceforge.net/projects/bk-terak-emu/
Из всего софта на Тераке пока пошёл только mini-Unix - весь каталог (http://bitsavers.trailing-edge.com/bits/Terak)
Думаю, что Терак кому-то из наших тогдашних политиков здорово голову вскружил в конце 70-х. И пошли ДВК, БК, УКНЦ... Там процессор T11 на чипе, графика, музыка...
Проблема с переносом, думаю, везде. Забейте маленькую прогу с циклом с .ttyout на несколько тысяч раз и запустите в консоле Виндуз через вызов эмулятора RT-11 - речь только о нем и в нём же не делится и не умножается. :-(

hobot
28.11.2015, 20:30
Ставьте полноценный эмулятор ДВК
Работайте с образами минуя плагин средствами RT-11

Enjoy! ;-)

- - - Добавлено - - -


речь только о нем и в нём же не делится и не умножается. :-(
но компилируется, собирается? Так в этом его основное назначение. Получить исполняемый файл, на скорости хоста,
использую нативные компилятор и линковщик. Это не эмулятор машины. Это среда для "быстро собрать исходник" и
запустить на реале потом или в эмуляторе конкретного железа. Иметь возможность работать с текстом программы
в обычной NTFS папке и блокнотике Windows, я как-то так себе это представляю.

- - - Добавлено - - -

http://geektimes.ru/post/261074/ - почитайте отзыв программиста.

Patron
28.11.2015, 20:53
Вопрос автору: под какой виндоуз можно запускать (тестировалось)?Данный эмулятор RT-11 тестировался под Windows XP и Windows Vista. Под более старшими версиями Windows тоже должно работать. На системах ниже XP модульный API работать не может.

- - - Добавлено - - -


1) что-то не так с консольным выводом: если печатаем длинную строку и печать доходит до низа экрана, то вместо скроллинга строка продолжает печатся с начала экранаЭто стандартное поведение большинства старых терминалов типа VT52. Если бы они скролили экран при выводе в последнее знакоместо на экране - невозможно было бы (при желании) рисовать текстовую рамку вокруг экрана.


2) не работают команды умножения и деления, делаю, например, mov #100,r2 mul #10,r2 - не работаетПроцессор исполняет команды, а не желания. При умножении регистра с номером n - сначала в регистр с номером n помещаются старшие 16 битов результата, а потом в регистр с номером n|1 помещаются младшие 16 битов результата, поэтому умножая нечётный регистр - получаем в нём 16-битный результат, а умножая чётный регистр - получаем в нём старшие 16 битов 32-битного результата.


3) есть ли в РТ-11 какой-нибудь отладчик типа debug из DOS или ddt/zsid из CP/M?Не стоит задавать вопросы по RT-11 в теме про эмулятор - это лучше делать в темах про RT-11.

Oleg N. Cher
01.12.2015, 23:02
Получил письмо от Гюнтера:
Oleg,

installed win7 pro 64 bit under 32 bit linux. (didn't know that this would work ;))

tried rt11.exe*:

.copy/dev/file/noq sy: SYSTEM.DSK

this created a file with about 700KB on DK:
doesn't seem to change anything.

achieved to start modula-2 by making some room on SY:

.del sy:tetris.sav
.del sy:klop.sav
.del sy:xonix.sav

and copying M2 command interpreter (for 16 bit and 22 bit VRS) and M2 linker base to SY:
.cop COMINT.M2S sy:
.cop comint.xm2 sy:
.cop MODULA.M2S sy:

.! logical names needed for m2 compiler:
.ass dk vl
.ass dk vc
.ass dk vs

start the M2 run time system with command interpreter:

.ru msrust

RTS>DK:COMP.LOD
M2Compiler V05.1, source file> PRIMES
p1

Loader error: not enough memory; module too large for actual stack
RTS>

.
means not enough BG memory to load pass1 of m2 compiler.

.ru mspnf
?KMON-F-Insufficient memory

only msnf.sav (no floating point) runs.

let's get more BG memory:

.unl sl
sadly can't unload SL, it traps in endless loop.
^C doesn't stop it. must close cmd window.

ok, I see, to get rid of SL, use the command

.set sl off

BG size is now 156564 instead of 142246. Great!

The dir, vir utilities and chase game runs:

.ru msnf
RTS>chase
[...
lists instructions how to play...]

0000000000000000000000000000000000*000000000000000 00000000000000000000000000000
0 0
0 0
0 0
0 C 0
0 0
0 0 0 0
0 0
0 B 0 0
0 0
0 0 0 0
0 0
0 0 0 0
0 0
0 0 0
0 0
0 0
0 0
0 0
00000000000000000000000000000000000000000000000000 00000000000000000000000000000
A goblin just felt in a pit!!n!! Q W E Number of goblins: 0
A S D Too bad, you lost this time.
Oh no, You're failing!! Z X C Try again [Y/N] >
CHASE: Have a good time, bye-bye.
RTS>
.

and now the M2 RTS which uses bigger BG memory also runs:

.ru msxnf
RTS>DK:COMP.LOD
M2Compiler V05.1, source file> ODDWOR
p1
TTInOut: DK:TTInOu.SYM
p2
p3
p4
p5
end compilation
RTS>DK:LINK.LOD
link V05.3, master file> ODDWOR/fis
link files to:
TTInOut: DK:TTInOu
UnivTypes: DK:UnivTy
UnivOutput: DK:UnivOu
ASCII: DK:ASCII
UnivInput: DK:UnivIn
UnivString: DK:UnivSt/fis
end linkage
RTS>DK:ODDWOR.LOD
Odd Word Reversal Problem.
The input text is echoed if a word is complete.
Type words seperated by one ore more blanks>
dddfff.
Final Point found. EXIT.

! now lets compile a few other sources:

RTS>DK:COMP.LOD
M2Compiler V05.1, source file> SYNCHR.DEF
p1
PROCESSSCHEDULER: DK:PROCES.SYM
p2
symfile
lister
end compilation
RTS>DK:COMP.LOD
M2Compiler V05.1, source file> CHASEP.DEF
p1
Synchronisation: DK:Synchr.SYM
p2
symfile
lister
end compilation
RTS>DK:COMP.LOD
M2Compiler V05.1, source file> CHASE
p1
Synchronisation: DK:Synchr.SYM
VideoTerminal: DK:VideoT.SYM
ASCII: DK:ASCII.SYM
TTInOut: DK:TTInOu.SYM
PDP11: DK:PDP11.SYM
BigStorage: DK:BigSto.SYM
ChasePlayer: DK:ChaseP.SYM
*** Storage Error: SET USR SWAP or unload handlers or use larger heap
RTS>

.
pass1 needs more memory.

MED (modula-2 editor), an extended clone of ucsd p-system editor
for the vt52 runs. supports fixed screen sizes of 80x24 or 80x80 chars.

the 16 bit M2 RTS could be weaked a bit more with SL switched off to compile
bigger programs, but it's not fun - not only because rt-11 sucks without SL.
so lets's try M2/VRS. xm.sav is the VRS (virtual run-time) version of M2
run time system. it uses the MMU.

.ru xm
?MON-F-Trap to 4 005712
.

seems MMU is not emulated.

.ru xmxnfs
E:\

crashes rt11.exe

so far the PDP-11/RT-11 emu for windows is quite encouraging,
since it can operate on host directory directly
(which in my case is mapped from VBox under Win to Linux host directory)
and doesn't need a RT-11 file structured container (like RUST;
though RUST allows it through network driver, but the latter
also takes away BG memory.)

will send xm.sav and test programs if the rt-11 emu developer
is interested to also emulate the MMU.

the M2 Kit has a nice symbolic, post-mortem debugger and the system
would still be attractive for custom program development eventhough
it's command line interface only. Under OpenVMS (and other opsys)
there is a run-time debugger, quite versatile, but ever since the PDP-11
times I missed the quite effective RT-11 M2 pm-debugger.

best,
g.

Patron
02.12.2015, 00:33
this created a file with about 700KB on DK: doesn't seem to change anythingБез извлечения образа системного диска невозможно изменить состав файлов на диске SY: Можно хоть все файлы там удалить, но после перезапуска эмулятора изменения пропадут. Извлечение диска позволяет сохранять изменения системы между запусками эмулятора.

Можно поступить ещё круче - сделать copy/dev/noq sy: dk: - тогда хост-каталог станет загрузочным, но для его загрузки надо будет каждый раз после запуска rt11.exe давать команду boot dk: ( если извлечь системный образ и прописать команду boot hd1: в стартовый командный файл STARTS.COM - такой фокус не работает, попробую исправить это в следующем релизе ).



if the rt-11 emu developer is interested to also emulate the MMUВариант эмулятора RT-11 с эмуляцией MMU появится не раньше эмулятора процессора 1801ВМ3 для эмулятора ДВК - возможно, этой зимой.

Oleg N. Cher
02.12.2015, 01:36
Продолжение:
earlier email trace of Modula-2 test with Ian Hammond's RUST pdp-11/rt-11 emu attached. the attachement is suitable for Patron if he'd like to test MMU emulation of his rt-11 emu. (I have another email about fixing y2000 but in RT11 M2 library module.
also maybe have some info on how Ian fixed it in his RUST)

-------- Forwarded Message --------
Subject: link went a bit further with 132400 xmqr.sav size and then ... 'final' success!
Date: Sun, 28 Feb 2010 20:29:18 +0100
From: Guenter Dotzel
To: Ian Hammond

ru patch ! rt-11 version
xmqr.sav
42/132400
50/132402
512/132400
E

.ru xmqr

VRS>DK:LINK.XML
M2Linker V06.1, master file> LIST/fis
link files to:
Lister: DK:Lister/fis
TTInOut: DK:TTInOu
UnivTypes: DK:UnivTy
UnivOutput: DK:UnivOu
ASCII: DK:ASCII
UnivInput: DK:UnivIn
UnivString: DK:UnivSt/fis
NewStreams: DK:NewStr
Storage: DK:Storag
FilePool: DK:FilePo
UnivFileName: DK:UnivFi
VideoTerminal: DK:VideoT
RT11Support: DK:RT11Su/fis

Halt: PC=14046 OP=0

xmqr size 132500 won't start (more memory fault)

so I tried the 'last' chance:

ru patch ! rt-11 version
xmqr.sav
42/132440
50/132442
512/132440
E

since

.sh mem

Address Module Words
------- ------ -----
160000 IOPAGE 4096.
143112 RMON 3291.
134146 USR 1778.
132670 DL 343.
132566 Logicals 33.
132556 Commands 4.
000000 (free) 23223.

512kw physical memory

not much more is left.
SL is not needed since m2 comes with its own line editor.
NF would be nice. but it just doesn't fit.

.ru xmqr

VRS>DK:LINK.XML
M2Linker V06.1, master file> LIST/fis
link files to:
Lister: DK:Lister/fis
TTInOut: DK:TTInOu
UnivTypes: DK:UnivTy
UnivOutput: DK:UnivOu
ASCII: DK:ASCII
UnivInput: DK:UnivIn
UnivString: DK:UnivSt/fis
NewStreams: DK:NewStr
Storage: DK:Storag
FilePool: DK:FilePo
UnivFileName: DK:UnivFi
VideoTerminal: DK:VideoT
RT11Support: DK:RT11Su/fis
..............
end linkage

VRS>

and guess what, the linked program worked! ("/fis" above is added my the linker to show the option used at compile time.)

That's as good as it gets.
Congrats Ian!!!

p.s.: the editor med works quite well given one remembers to press BS instead of DEL to terminate delete or insert (etc.) modes. to correct the text typed in insert mode, the cursor key left (instead of BS) can be used. the page up down keys don't work (of course; they never worked); to page down or up, use p (or -p); minus sign reverses the mode. see manual.

p.s.s: what did you change for y2k compatibility? if I look into linker map just generated, I see year 78.
the time is correct. see LIST.MAP linker listing attached. I also attach clock.mod which is used in m2 to get the date and time. guess you see 'immediately' how this could be fixed.

p.s.s.: I had to get list.map out of dsk-container using

.load nf

.copy list.map m2k:
Files copied:
DK:LIST.MAP to M2K:LIST.MAP
spc=[M2K:LIST.MAP] tmp=[M2K:LIST_MAP.ten]

I guess the 2nd line is your debug output. anyway it worked.

best
g

LIST.MAP

STORAGE MAP OF LAYER List (module from file DK:LIST.LNK)
generated in 28-Feb-78 20:12:01.96
==================================
linked to layer ResidentMonitor from file SY:MODULA.XM2
-------------------------------------------------------
PVD stands for 'Procedure Variable Dummy entry generated in low-mem. at'

Codesegment: 1 .. 2 2 segments
Physical block: 001725B .. 002072B 102 blocks
Variables: 020004B .. 030471B 4406 bytes
Constants: 020004B .. 030501B 4414 bytes

separate module UnivTypes from file DK:UnivTy.LNK
-------------------------------------------------

separate module ASCII from file DK:ASCII.LNK
--------------------------------------------

separate module UnivOutput from file DK:UnivOu.LNK
--------------------------------------------------

Codesegment 1
Physical block: 001725B .. 001736B 10 blocks
Code: 140000B .. 141163B 628 bytes

Proc # 0: empty Proc # 1: 140000B Proc # 2: 140244B
Proc # 3: 140450B Proc # 4: 140732B Proc # 5: 140774B
Proc # 6: 141076B

separate module UnivString from file DK:UnivSt.LNK
--------------------------------------------------
Variables: 020004B .. 020005B 2 bytes
Constants: 020006B .. 020011B 4 bytes

Codesegment 1
Physical block: 001736B .. 001755B 16 blocks
Code: 141164B .. 143153B 1016 bytes

Proc # 0: 141164B Proc # 1: 141206B Proc # 2: 142526B
Proc # 3: 142606B Proc # 4: 142676B
PVD: 020006B

separate module UnivInput from file DK:UnivIn.LNK
-------------------------------------------------

Codesegment 1
Physical block: 001756B .. 001762B 5 blocks
Code: 143154B .. 143571B 270 bytes

Proc # 0: empty Proc # 1: 143154B

separate module TTInOut from file DK:TTInOu.LNK
-----------------------------------------------
Variables: 020012B .. 020015B 4 bytes

Codesegment 1
Physical block: 001762B .. 001765B 4 blocks
Code: 143572B .. 144157B 246 bytes

Proc # 0: 143572B Proc # 1: 143624B Proc # 2: 143672B
Proc # 3: 143730B Proc # 4: 143766B Proc # 5: 144024B
Proc # 6: 144050B Proc # 7: 144112B

separate module Storage from file DK:Storag.LNK
-----------------------------------------------
Variables: 020016B .. 030031B 4108 bytes

Codesegment 1
Physical block: 001766B .. 001776B 9 blocks
Code: 144160B .. 145161B 514 bytes

Proc # 0: 144160B Proc # 1: 144214B Proc # 2: 144730B
Proc # 3: 145032B

separate module NewStreams from file DK:NewStr.LNK
--------------------------------------------------
Variables: 030032B .. 030033B 2 bytes

Codesegment 1
Physical block: 001776B .. 002016B 17 blocks
Code: 145162B .. 147251B 1080 bytes

Proc # 0: 145162B Proc # 1: 145206B Proc # 2: 145312B
Proc # 3: 145364B Proc # 4: 145416B Proc # 5: 145514B
Proc # 6: 145634B Proc # 7: 145742B Proc # 8: 146032B
Proc # 9: 146174B Proc # 10: 146244B Proc # 11: 146410B
Proc # 12: 146636B Proc # 13: 146762B

separate module FilePool from file DK:FilePo.LNK
------------------------------------------------
Variables: 030034B .. 030035B 2 bytes

Codesegment 1
Physical block: 002017B .. 002020B 2 blocks
Code: 147252B .. 147423B 106 bytes

Proc # 0: 147252B Proc # 1: 147276B

separate module UnivFileName from file DK:UnivFi.LNK
----------------------------------------------------
Constants: 030036B .. 030057B 18 bytes

Codesegment 1
Physical block: 002021B .. 002040B 16 blocks
Code: 147424B .. 151413B 1016 bytes

Proc # 0: empty Proc # 1: 147424B Proc # 2: 150450B
PVD: 030054B
Proc # 3: 150540B Proc # 4: 150670B Proc # 5: 151206B

separate module VideoTerminal from file DK:VideoT.LNK
-----------------------------------------------------
Variables: 030060B .. 030061B 2 bytes
Constants: 030062B .. 030073B 10 bytes

Codesegment 1
Physical block: 002041B .. 002044B 4 blocks
Code: 151414B .. 151733B 208 bytes

Proc # 0: 151414B Proc # 1: 151530B Proc # 2: 151566B
Proc # 3: 151652B

separate module RT11Support from file DK:RT11Su.LNK
---------------------------------------------------
Variables: 030074B .. 030077B 4 bytes

Codesegment 1
Physical block: 002044B .. 002044B 1 block
Code: 151734B .. 152005B 42 bytes

Proc # 0: 151734B

Codesegment 2
Physical block: 002046B .. 002060B 11 blocks
Code: 140000B .. 141247B 680 bytes

Proc # 1: 140000B Proc # 2: 140156B Proc # 3: 140226B
Proc # 4: 140314B Proc # 5: 140332B Proc # 6: 140412B
Proc # 7: 140430B Proc # 8: 140634B Proc # 9: 140652B
Proc # 10: 140670B Proc # 11: 140714B Proc # 12: empty
Proc # 13: 141026B Proc # 14: 141122B

separate module Lister from file DK:Lister.LNK
----------------------------------------------
Constants: 030100B .. 030447B 232 bytes

Codesegment 2
Physical block: 002060B .. 002071B 10 blocks
Code: 141250B .. 142421B 618 bytes

Proc # 0: empty Proc # 1: 141250B

separate module List from file DK:LIST.LNK
------------------------------------------
Constants: 030450B .. 030501B 26 bytes

Codesegment 2
Physical block: 002072B .. 002072B 1 block
Code: 142422B .. 142451B 24 bytes

Oleg N. Cher
02.12.2015, 16:45
.

Proc # 0: 142422B
PVD: 030466B

First free codesegment: 3
First free physical block: 002073B
First free variablelocation: 030472B
First free constantlocation: 030502B
First free codelocation: 140000BCLOCK.MOD

IMPLEMENTATION MODULE Clock; (* LG/ETH-Z~urich: 26.02.81 *)
(*
>
> (c) Copyright (1981, 1988) by Gunter Dotzel
> ModulaWare GmbH
> Wilhelmstr. 17A
> D-8520 Erlangen/West-Germany
> Tel. 09131 208395
>
GD/22-Jun-1988: automatic 50/60 cycles detection and conversion
(derived from module clock.mod, clk60.mod by GD/Rev: 09-Dec-1981).
For 50 Hz with LTC in Europe.
For 60 Hz clock (MXV-11, 11/23+, and for other countries line frequency)
*)
FROM SYSTEM IMPORT ADR, RT11CALL, REGISTER;

VAR cycle50: BOOLEAN; (* see module body *)

PROCEDURE GetTime(VAR tim : Time);
(* get computer time and date *)
VAR datearea : RECORD chan,code : CHAR END;
timearea : RECORD
chan, code: CHAR;
buffaddr : CARDINAL;
END;
timebuff : RECORD
hightick : CARDINAL;
lowtick : CARDINAL;
END;
d, m, y : CARDINAL;
BEGIN
WITH tim DO
(* get date *)
WITH datearea DO chan := 0C; code := 12C (* .DATE *) END;
RT11CALL(374B,CARDINAL(datearea));
day := REGISTER(0);
IF day <> 0 THEN (* reformat day *)
d := day DIV 40B MOD 40B;
m := day DIV 2000B MOD 20B;
y := day MOD 40B + 72;
day := (y * 20B + m) * 40B + d;
END;
(* get time *)
WITH timearea DO
chan := 0C; code := 21C; (* .GTIM *)
buffaddr := ADR(timebuff);
END;
RT11CALL(375B,ADR(timearea));
(* calculate seconds and milliseconds *)
WITH timebuff DO
IF cycle50 THEN
(* tickperiod = 20 milliseconds; ticks per minute = 3000 *)
(* 65536 / 3000 = 21 + 317 / 375 *)
minute := lowtick DIV 3000 + hightick * 21;
hightick := hightick * 317;
lowtick := lowtick MOD 3000 + hightick MOD 375 * 8;
minute := minute + lowtick DIV 3000 + hightick DIV 375;
millisecond := lowtick MOD 3000 * 20;
ELSE
(* tickperiod = 16.666 milliseconds; ticks per minute = 3600 *)
(* 65536 / 3600 = 18 + 46/225 *)
(* 3600 / 225 = 16 *)
minute := lowtick DIV 3600 + hightick * 18;
hightick := hightick * 46;
lowtick := lowtick MOD 3600 + hightick MOD 225 * 16;
minute := minute + lowtick DIV 3600 + hightick DIV 225;
millisecond := lowtick MOD 3600;
millisecond := millisecond * 16 + (millisecond * 2) DIV 3;
END;
END;
END; (* WITH *)
END GetTime;

PROCEDURE InitCycle;
VAR
gvalarea : RECORD
chan,code : CHAR;
offset : CARDINAL;
END;
BEGIN
WITH gvalarea DO
chan := 0C; code := 34C; (* .GVAL *)
offset := 300B; (* fixed offset to RMON base *)
END;
RT11CALL(375B,ADR(gvalarea));
cycle50:={5}<=BITSET(REGISTER(0)); (* bit 5 is sysgened clock speed *)
END InitCycle;

BEGIN
InitCycle;
END Clock.CLOCK.DEF

DEFINITION MODULE Clock; (* LG 23.04.80 *)

EXPORT QUALIFIED Time, GetTime;

TYPE Time = RECORD
day : CARDINAL; (* ((y-1900) * 20B + m) * 40B + d *)
minute : CARDINAL;
millisecond : CARDINAL;
END;

PROCEDURE GetTime(VAR tim : Time);
(* get computer time *)

END Clock.
-------- Forwarded Message --------
Subject: m2 und m2/vrs
Date: Sun, 28 Feb 2010 16:42:22 +0100
From: Guenter Dotzel
To: Ian Hammond

Ian,

attached I'm sending just a few components of m2kit (except *.mod all are binary files.) I zipped the files under windows.

comint = m2 command interpreter

m2: ms*.sav needs comint.m2s on sy: (m2 for mapped RT11 on logical vs:)
m2/vrs: xm*.sav needs comint.xm2 on sy: ( " )

the suffixes (of (ms, xm).sav are:

nf = runs on lsi-11 with no floating hardware
p = runs on sharePlus or other mapped version of rt-11
x = version with higher stack start (stack start can be patched in MS*.sav [and XM*.SAV]in locations 42, 50, 512)
f8 = forgot, most probably for double precision FP (mathlib?)
don't know what q,c,s suffixes eg. in xmcnfs.sav mean, but will find out.

2 example programs:
- list.lod (m2), list.xml (m2/vrs), list.mod source code
- chase.lod (chase game; uses vt52 esc-controls; works great)

if the comint prompt comes up (and it does in v11/lsi rust with msnf.sav):

RTS>

type 'list<RET>' and list.lod is loaded. it displays the content of file list.mod if you give this file name or type 'chase<RET>'. navigate left right up etc with keys explained in intro. please try to find out why xmcnfs.sav crashes to halt.

xm.sav (don't know if it requires fpu or fis or none) gives trap 4 on v11/lsi rust.
so I guess the mmu regs are not accessible with short iopage.

best
Gunter

--


-------- Forwarded Message --------
Subject: m2/vrs start and compile success with rust2
Date: Sun, 28 Feb 2010 19:41:48 +0100
From: Guenter Dotzel
To: Ian Hammond

Ian,

just installed rust2

! one time installation operations:
copy modula.* sy:
copy comint.* sy:
crea/all:123 sy:dump.cor

! apply one time patch to set program size of m2/vrs for rust:
copy xmq.sav to xmqr.sav
ru patch ! rt-11 version
xmqr.sav
42/132000
50/132002
512/132000
E
===

with this patch:

.sh prog xmqr

Program name DK:XMQR.SAV
File size 39. blocks

Start address 5704
Stack address 132000
Job status word 50400 = Lower Single Chain
Program size 132002 bytes, 23041. words
Memory limit None

the m2 compiler runs under m2/vrs:

.xmqr

VRS>DK:COMP.XML
M2Compiler V05.1, source file> LIST.MOD
p1
Lister: DK:Lister.SYM
p2
p3
p4
p5
end compilation

VRS>

I was able to compile bigger programs.

but when I start the linker, it crashes rust to halt. :(

===
! m2kit rust/sj startup commands.
unload sl
unload nf
def dk dl1 ! m2kit
def vc dk
def ve dk
def vl dk
def vs sy ! don't know if they are all needed
set def dk
===

best
g

-------- Forwarded Message --------
Subject: modula-2 under rust/sj with v11
Date: Sat, 27 Feb 2010 13:24:40 +0100
From: Guenter Dotzel
To: Ian Hammond

Ian

yesterday I copied the whole directory of the modula-2/rt-11 kit from alpha vms
by ftp into a dir on the pc under w2k and then under RUST into a RT-11 disk
container (DL1) because I thought strange behaviour below came from
using files on native windows directory (but it made no difference).

under SHE I start rust with

v11 rust

there is unmapped m2(1. m2) and mapped m2(2. m2/vrs).
the latter allows very big programs without overlays by mapping mmu via par6.
both worked great also under shareplus.

1. with m2:
even with unloaded SL, since user can't be set swap in rust,
I had to patch the (max.) size of m2 run-time system/command interpreter
program sav file from 132500 to 130000.

.sh progr sy:modula

Program name SY:MODULA.SAV
File size 14. blocks

Start address 2720
Stack address 130000
Job status word 50400 = Lower Single Chain
Program size 130002 bytes, 22529. words
Memory limit None

Image options 4040 = IOpage Nopaths

with this version of m2, it's runtime system and command interpreter starts and I can load and execute m2 programs with varying mileage:

a) some m2 tools no longer run with this lower limit but that'd be fixable.
b) some m2 programs are running great: chase game, list, dir, vir,. ...
c) some m2 programs show strange behaviour, e.g.: editor med, m2 compiler comp

c.a) comp actually starts and asks for input file name and starts pass 1 (of 5) but then asks again for input file name. if I type it again, it crashes without error message to '.' prompt. in case of non existing input file, comp says 'error file not found' and reprompts.

c.b) med opens an input file and displays the first screen full of text and then immediately reprompts for input file name (without saying 'file not found'), it seems to restart.

2. with m2/vrs
I also patched the program size but it doesn't start up: the (no floating point) version which runs on shareplus (xmcnfs.sav, patched xmrust.sav) crashes to halt.

.sh prog xmrust.sav

Program name DK:XMRUST.SAV
File size 39. blocks

Start address 5452
Stack address 132000
Job status word 50400 = Lower Single Chain
Program size 132002 bytes, 23041. words
Memory limit None

Image options 124040 = Traps IOpage Nopaths MMU

(I tried both /unmapped and /nounmapped)

.sh mem

Address Module Words
------- ------ -----
160000 IOPAGE 4096.
143004 RMON 3326.
134172 USR 1733.
132714 DL 343.
132370 NF 106.
132266 Logicals 33.
132256 Commands 4.
000000 (free) 23127.

512kw physical memory

any suggestions? if you want to try it, I can send you the programs concerned.

for me m2 on pdp it is just for curiosity. I'm willing to spend some time because it would be fun to show young people how -given the right concept - fast, easy, and fluid program development was with the seamless cyle of edit, compile, run, debug (symbolic post-mortem debugger) nearly 30 years ago - without any mouse click, with seperate compilation, automatic linker (self-collecting all required modules, checking cross-module interdependencies without the need of an object time librarian - the latter being still necessary even with m2 under openvms. I still miss this linker and debugger although the oberon system (under openvms) has it all except that it comes with the burden of 'YAG' (yet another GUI)) and simple but efficient debugger.

best
g

litwr
02.12.2015, 22:09
Это стандартное поведение большинства старых терминалов типа VT52. Если бы они скролили экран при выводе в последнее знакоместо на экране - невозможно было бы (при желании) рисовать текстовую рамку вокруг экрана.
С этой проблемой знаком, но чтобы система не скроллила - это что-то необычное. Что за рамки на терминалах 70-х?! Проверил с SIMH и vt52 - скроллит. Решал проблему отключения скроллинга на нескольких системах, там для этого приходилось либо напрямую обращаться к аппаратуре, либо обманывать систему, задавая ей при выводе последнего символа значение ширины экрана большее настоящего. Неужнли на RT11 не было нормального механизма отключения скроллинга?
За вопрос с умножением извините. Там была ошибка в другом. Привык использовать POP/PUSH, а тут такого нет и написал MOV r1,(sp)+ впесто POP - не ломает, но и не работает. :)

Vslav
02.12.2015, 22:43
написал MOV r1,(sp)+ впесто POP - не ломает, но и не работает. :)
Неверный порядок аргументов, надо написать MOV (SP)+, R1 - при этом будет выполнено:
R1 = *SP;
SP += 2;
установка флагов NZV по результату R1;

Patron
02.12.2015, 23:58
чтобы система не скроллила - это что-то необычное.Системы не скролят - скролят терминалы. В эмуляторе RT-11 максимально точно воспроизводится поведение терминала 15ИЭ-00-013, который скролит только в ответ на команды скролинга ( например - LF ). Благодаря этому вывод 80х24 отображаемых символов, начиная с любой точки экрана - гарантировано помещает курсор в то же место на экране, откуда начался вывод. Это используется ( например ) в игре XONIX.



Неужели на RT11 не было нормального механизма отключения скроллинга?Скролинг терминалов не имеет отношения к операционке, только в DEC Pro350 с графическим адаптером и встроенным в RT-11 эмулятором терминала появились системные средства управления скролингом этого эмулятора.

litwr
03.12.2015, 18:41
Уважаемый Vslav, Вам что-то надо делать с чувством юмора. :) Там же рожица. Сам смеялся, что на PDP-11 и POP просто не напишешь - думать надо!
Уважаемый Patron, благодарю за разъяснения. Получается, что такое поведение - это "усовершенствованние" в СССР стандартного DEC терминала, чтобы в dos-игры играть? :)

Vslav
03.12.2015, 19:00
Уважаемый Vslav, Вам что-то надо делать с чувством юмора. :)
А-а-а, прошу прощения, это в корне меняет всю ситуацию :)
MACRO-11 один из немногих ассемблеров где такой порядок источника и приемника, давно на нем не писал, приходится самому себе постоянно напоминать об этом. Все жду когда на нем наконец смогу строчку с QIOW$S написать :)

litwr
04.12.2015, 20:43
Справился со скроллингом, направляя вывод в файл. Но возникла попутная проблема: перенаправление работает только для вывода, а для ввода нет. Пишу
rt11 run prog.sav <input
ввод не работает :(

Patron
04.12.2015, 23:03
ввод не работаетДа, о таком варианте использования я не подумал - постараюсь добавить в следующем релизе.

hobot
16.12.2015, 01:24
Интересно, а позволит ли эмулятор использовать FCU.SAV - архиватор для RT-11, что бы жать DOS и WINDOWS файлы в FCU-архивы?
Почему нельзя сделать опционально поддержку живого флоппа в будущих релизах? Аналогично DOS эмулятору Полетаева?

(подразумевается копирование из папки или образов на дискету для УК-НЦ к примеру на лету).

Patron
16.12.2015, 14:55
Интересно, а позволит ли эмулятор использовать FCU.SAV - архиватор для RT-11, что бы жать DOS и WINDOWS файлы в FCU-архивы?Эмулятор RT-11 позволяет использовать любые программы RT-11 для обработки любых файлов в текущем каталоге Windows, удовлетворяющих требованиям RT-11 к именам и размерам файлов.



Почему нельзя сделать опционально поддержку живого флоппа в будущих релизах? Аналогично DOS эмулятору Полетаева?Потому что эмулятор RT-11 работает только с содержимым текущего каталога Windows.

Patron
14.08.2017, 19:23
Обновилась текущая сборка эмулятора RT-11 для консоли Windows ( 14.08.2017 ) - RT-11_Emulator_14.08.2017

Изменения:

1. Все модули эмулятора обновлены до текущих версий. В результате ( например ) исправлена ошибка эмуляции команды MARK. Теперь при изменении виртуального диска - содержимое каталога Windows обновляется не только "вручную" ( после закрытия эмулятора или чтения каталога HD1: ), но и автоматически - через 0.3 сек после последней записи на HD1.

...

nzeemin
16.08.2017, 00:17
Patron, а можете рассказать -- как у вас драйвер HD (тот который отвечает за каталог на диске PC) взаимодействует с эмулятором? т.е. на стороне PC я понимаю примерно что происходит -- висит hook на изменения в директории, подхватывает изменения, отражает это в своих структурах. Но со стороны RT-11 это же вроде как блочное устройство с каталогом -- получается что, каталог собирается динамически и динамически же перестраивается? И самое интересное это -- как драйвер получает информацию об этом?

Patron
16.08.2017, 01:38
висит hook на изменения в директории, подхватывает изменения, отражает это в своих структурахБольшого смысла в таком нет, поскольку содержимое каталога Windows представляет интерес только в момент чтения какой-либо программой RT-11 каталога RT-11.

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

1. Анализируется каталог RT-11 и создаётся список всех файлов, который затем сравнивается с предыдущим вариантом этого же списка.

2. Пропавшие файлы удаляются из каталога Windows.

3. Список всех изменённых блоков диска сравнивается со списком всех блоков в файлах RT-11. Совпадения записываются в одноимённые файлы в каталоге Windows и удаляются из списка изменённых блоков.

4. Создаётся список всех файлов в каталоге Windows и сравнивается со списком файлов в каталоге RT-11.

5. Новые и изменившиеся файлы загружаются на виртуальный диск.

....

Исходник объекта Virtual_DSK_Class (http://emulator.pdp-11.org.ru/misc/Virtual_DSK.zip) не содержит ни одного вызова модульного API, поэтому двусторонне синхронизированный с каталогом Windows виртуальный диск RT-11 можно создавать в любом проекте C++.

nzeemin
16.08.2017, 01:53
Patron, весьма познавательно, спасибо!
Но это видимо предполагает, что RT-11 не хранит каталог в памяти, и любая операция с диском начинается с чтения каталога?
До кучи, возникает ещё проблема конвертации длинных имён в имена формата 6.3 и разрешение возникающих в связи с этим конфликтов.

Patron
16.08.2017, 02:03
В памяти хранится полный стандартный DSK-образ, с которым и работает RT-11. Если в процессе этой работы приходит запрос на чтение первого блока каталога - перед выполнением этого запроса содержимое виртуального диска синхронизируется с каталогом Windows. Проблема конвертации длинных имён файлов не возникает, потому что на виртуальный диск попадают только те файлы из каталога Windows, имена которых удовлетворяют всем требованиям RT-11.

Patron
28.09.2017, 21:40
Обновилась текущая сборка эмулятора RT-11 для консоли Windows ( 28.09.2017 ) - RT-11_Emulator_28.09.2017 (http://emulator.pdp-11.org.ru/RT-11/distr/RT-11_Emulator_28.09.2017.rar)

Изменения:

1. Исправлена ошибка синхронизации виртуального диска с каталогом Windows, внесённая в предыдущем релизе.

2. Теперь при выводе 81-го символа в последней строке экрана - перед выводом символа происходит возврат каретки и перевод строки.

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

AFZ
03.10.2017, 19:08
Почему нельзя сделать опционально поддержку живого флоппа в будущих релизах? Аналогично DOS эмулятору Полетаева? Потому что эмулятор RT-11 работает только с содержимым текущего каталога Windows. Вообще-то у Полетаева каждому из четырех дисководов MY можно назначить либо файл .dsk (с любым количеством псевдоцилиндров, по 255 включительно), либо реальный дисковод писюка, котоый в этом случае работает "по-ДВК-шному", т.е. обращение к сектору C-H-R ДВК-шного MY транслируется в обращение к сектору с тем же адресом C-H-R дискеты, вставленной в писюшный дисковод. То есть, суём ДВК-шную дискету в писюшный дисковод, монтируем этот писюшный дисковод, как MYn, где n=[0...3], и вперед! Именно так я прочитал все свои запасы дискет. По-простому, запускаю эмулятор Полетаева, MY0 - файл-образ системной дискеты RT-11, MY1 - дисковод A:, MY2 - файл-образ пустой инициализированной дискеты. Если в дисководе A: дискета RT-11, COP/SYS MY1: MY2:, иначе - COP/DEV MY1: MY2, и вперед. Далее переименовываю файл-образ MY2, переставший быть пустым во что-то осмысленное, соответствующее содержимому скопированной дискеты, и все!

Проблемы при обращении десятым секторам любой дорожки ДВК-шной дискеты (ведь у писюка на 2D дискете 9 секторов, а не 10) успешно решались применением драйвера 800.сом.

Patron
29.11.2017, 16:36
Обновилась текущая сборка эмулятора RT-11 для консоли Windows ( 28.11.2017 ) - RT-11_Emulator_28.11.2017 (http://emulator.pdp-11.org.ru/RT-11/distr/RT-11_Emulator_28.11.2017.rar)

Изменения:

1. Теперь при переходе запущенного эмулятора через полночь - сохраняется синхронизация даты и времени RT-11 с датой и временем Windows.

2. Ускорена эмуляция команд ADD, SUB, CMP и CMPB.

nzeemin
26.01.2018, 20:45
Patron, использовал версию от 28.11.2017 для своего проекта в декабре/январе -- подтверждаю, работает отлично.

Вопрос такой -- а как вы обрабатываете конфликты в именах файлов?
Пример:


C:\Temp\example>dir

Directory of C:\Temp\example

01/26/2018 08:42 PM <DIR> .
01/26/2018 08:42 PM <DIR> ..
01/26/2018 03:43 PM 0 notes
01/26/2018 03:28 PM 0 Notes .txt
01/26/2018 03:43 PM 0 notes.
01/26/2018 03:28 PM 0 Notes.txt
4 File(s) 0 bytes

C:\Temp\example>C:\bin\rt11\rt11.exe DIR

26-Jan-2018 A
NOTES . 1 26-Jan-2018 NOTES .TXT 1 26-Jan-2018
NOTES . 1 26-Jan-2018 NOTES .TXT 1 26-Jan-2018
4 Files, 4 Blocks
65463 Free blocks

Patron
27.01.2018, 13:15
а как вы обрабатываете конфликты в именах файлов?Видимо - никак. Эмулятор не должен решать за пользователя, как называть файлы, поэтому все одноимённые файлы попадают в каталог с одинаковыми именами и пользователь уже средствами RT-11 должен выбирать, какой из них ему нужен. Ситуация с одноимёнными файлами в каталоге - один из аспектов реальной работы RT-11, поэтому не стоит лишать пользователя возможности относительно легко её воспроизвести.

- - - Добавлено - - -

Сейчас обнаружил мощный глюк, появляющийся при наличии в каталоге Windows "одноимённых" файлов. Если запустить эмулятор и несколько раз дать команду DIR - в каталоге RT-11 происходит размножение одноимённых файлов. К следующему релизу этот глюк будет исправлен.

nzeemin
31.01.2018, 13:33
Видимо - никак. Эмулятор не должен решать за пользователя, как называть файлы, поэтому все одноимённые файлы попадают в каталог с одинаковыми именами и пользователь уже средствами RT-11 должен выбирать, какой из них ему нужен.

А при этом не будет ли глючить синхронизация с каталогом? например, при изменении одного из таких файлов он меняет своё место в каталоге, и в результате синхронизатор путает его с другим файлом?

Patron
31.01.2018, 23:55
А при этом не будет ли глючить синхронизация с каталогом?После исправления - завершающие пробелы в имени или расширении файла станут недопустимы при отборе файлов из каталога Windows, удовлетворяющих ограничениям RT-11. С таким ограничением, для появления одноимённых файлов в каталоге RT-11 - нужно будет подключить к виртуальному диску каталог FAT и вручную запатчить в него одноимённые файлы.

hobot
01.02.2018, 06:07
После исправления - завершающие пробелы в имени или расширении файла станут недопустимы при отборе файлов из каталога Windows, удовлетворяющих ограничениям RT-11. С таким ограничением, для появления одноимённых файлов в каталоге RT-11 - нужно будет подключить к виртуальному диску каталог FAT и вручную запатчить в него одноимённые файлы.
Что то как то всё сложно.
1. совершенно не понял откуда дубликаты вообще берутся? (на данный момент)
2. будет ли "в обновлении" однозначно решена данная проблема?

Спасибо.

nzeemin
01.02.2018, 11:47
Patron, у меня ещё один, сакраментальный вопрос.
Если в командной строке передаётся команда, то после её выполнения эмулятор завершается.
Каким образом определяется что система вернулась к командной строке RT-11?

Patron
01.02.2018, 12:39
Если в командной строке передаётся команда, то после её выполнения эмулятор завершается.
Каким образом определяется что система вернулась к командной строке RT-11?Никаким. Если не извлекать SYSTEM.DSK - при каждом последующем запуске начальное состояние эмулятора неизменно. При запуске в эмулятор передаётся командная строка, а при завершении - в Windows передаётся код завершения последней выполненной в эмуляторе программы RT-11.

- - - Добавлено - - -


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

nzeemin
25.04.2018, 21:17
Patron, возможно вам будет интересно. Посмотрел в плане методов определения типа файла.

В Far Manager кодировки определяются частотным анализом, то есть по тому какие символы чаще встречаются; есть готовые частотные таблицы для различных кодировок:
https://github.com/FarGroup/FarManager/blob/master/far/thirdparty/ucd/LangCyrillicModel.cpp

И кроме того, советуют использовать сети Маркова. То есть берём массу текстовых файлов, составляем таблицу вероятностей перехода от одного байта к следующему. Потом полученную таблицу используем для проверки насколько данный файл подходит.

Patron
26.04.2018, 13:38
В Far Manager кодировки определяются частотным анализом, то есть по тому какие символы чаще встречаются; есть готовые частотные таблицы для различных кодировок:
https://github.com/FarGroup/FarManager/blob/master/far/thirdparty/ucd/LangCyrillicModel.cpp

И кроме того, советуют использовать сети Маркова. То есть берём массу текстовых файлов, составляем таблицу вероятностей перехода от одного байта к следующему. Потом полученную таблицу используем для проверки насколько данный файл подходит.Я использую словарные таблицы для каждой из кодировок. Для транслита используются две таблицы - "транслит" и "точно не транслит". Если в тексте попадается хотя бы одно слово из второй таблицы ( например "else" ) - перекодировка из транслита не производится.

litwr
29.08.2021, 13:28
Попробовал запустить в эмуляторе дисковый вильнюсский бейсик с УКНЦ (dbas.sav) - не пошло - пишет ?MON-F-Trap to 4 006644
Пробовал два файла (прикрепляю их в архиве) - один взят из UKNCBTL, другой Hobot выкладывал где-то на этом форуме - результат одинаковый. У УКНЦ получается какой-то расширенный вариант RT-11?
Интересно, что BBC Basic (http://mdfs.net/Software/PDP11/BBCBasic/) пошел нормально - даже таймер работает правильно - PRINT TIME.
76033

Hunta
29.08.2021, 16:00
У УКНЦ получается какой-то расширенный вариант RT-11?
У УКНЦ получается существует адрес 176640

litwr
29.08.2021, 19:55
У УКНЦ получается существует адрес 176640
A это можно расшифровать? Хороший SAV должен с любым RT-11 работать - вроде даже от Вас что-то такое слышал.

Hunta
29.08.2021, 20:22
A это можно расшифровать?
Чего там расшифровывать - берём документацию по УК-НЦ и смотрим - что за адрес.


Хороший SAV должен с любым RT-11 работать
А причём здесь RT-11?

litwr
30.08.2021, 17:52
Чего там расшифровывать - берём документацию по УК-НЦ и смотрим - что за адрес.
А причём здесь RT-11?
Прямо запутать меня наверное хотите? Как причем RT-11?! Про неё и весь вопрос поставлен. Можно ли вильнюсский бейсик на RT-11 запустить? На УКНЦ он именно под RT-11 идёт...

MiX
30.08.2021, 18:02
На УКНЦ он именно под RT-11 идёт...
Так и запускайте на УКНЦ, или на эмуляторе УКНЦ.

Hunta
30.08.2021, 18:51
Как причем RT-11?!
Есть программа, которая работает под RT-11 и напрямую обращается, ну скажем, к регистрам RK11
Кто то, ну скажем, litwr, запускает эту программу на компьютере, на котором нет RK11
Программа ожидаемо вылетает.
Вопрос - кто виноват? Программа? RT-11? Или, всё таки, litwr?


Можно ли вильнюсский бейсик на RT-11 запустить?

На УКНЦ он именно под RT-11 идёт
Сам спросил, сам ответил - а всё кругом виноваты.

- - - Добавлено - - -


Так и запускайте на УКНЦ, или на эмуляторе УКНЦ.

Прямо запутать меня наверное хотите?
Вот и второй путальщик появился ;)

litwr
01.09.2021, 19:19
Так и запускайте на УКНЦ, или на эмуляторе УКНЦ.
Мне нужен вильнюсский бейсик, который пойдет под этим эмулятором. Последняя надежда - это вариант для ДВК. Не поможите найти? Сам запутался в архивах. :(

- - - Добавлено - - -


Есть программа, которая работает под RT-11 и напрямую обращается, ну скажем, к регистрам RK11
Кто то, ну скажем, litwr, запускает эту программу на компьютере, на котором нет RK11

Чем задавать непрактичный вечный вопрос "Кто виноват?" задали бы другой не менее вечный, но практичный "Что делать?" Могу помочь с ответом:
1) помочь найти вильнюсский бейсик, который работает в этом эмуляторе:
2) собрать статистику по расчету числа π. У Вас образовалась замечательная коллекция - зачем железу просто проистаивать, пыль накапливать? "Всё проходит - остаётся только память о добрых делах" - говорили викинги. И коллекция может внезапно уйти, не оставив полезного результата. :( Вот у уважаемого form был 11/83, а сейчас уже нет, а хотелось бы результаты обновить...

Hunta
01.09.2021, 19:44
Чем задавать непрактичный вечный вопрос "Кто виноват?" задали бы другой не менее вечный, но практичный "Что делать?"
Кто виноват - тот пусть и думает - что делать.


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


собрать статистику по расчету числа π
На vcfed вас уже послали. От себя могу добавить, что (см ниже)


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


"Всё проходит - остаётся только память о добрых делах" - говорили викинги.
Да хоть индусы. Когда уйду в мир иной - будет АБСОЛЮТНО похрен - кто, чего и как обо мне думает. И думает ли вообще.

litwr
01.09.2021, 20:01
На vcfed вас уже послали. От себя могу добавить, что (см ниже)

Не понял. Мне там много ценных результатов предоставмли и даже по 3 или 4 ваксам. А программер оттуда 4 месяца пытался пи-затвор улучшить. Был бы рад, если бы Вы так "послали".

- - - Добавлено - - -


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

А по числу π результата нет. :(

- - - Добавлено - - -


Кто виноват - тот пусть и думает - что делать.

Это похоже на какую-то претензию. Уточните, не в курсах.

Hunta
02.09.2021, 00:19
Не понял.
"
And you don't understand that a faster machine does not necessarily produce a lower number, since the number you get includes a whole lot of things that are unrelated to processor speed, and which can affect the outcome significantly depending on lots of other factors. Not to mention the fact that the same machine will produce different numbers depending on OS and various rules you enforce. Does that mean the processor speed is different for these different OSes, or implementations? Of course not. The processor speed does not change. The same machine always have the same speed. The fact that your test in fact does give different numbers for the same machine just highlight the severe problem with your test. But you obviously do not see that.

Electronics efficiency? I'd say your test is more about OS behavior as well as what the actual connection you are having to the machine.

I have repeatedly pointed out that comparing machines based on frequency is meaningless. It should not be so hard to just read through this thread.

So, I am pointing out that comparing machines based on frequency is meaningless. You claim that in the end, if reflects quite accurate the real hardware performance.

Again. The frequency numbers do not at all give any kind of useful comparison, and that article actually illustrates this very well.
But you seem to not understand this detail. That article even observes that, even though the frequency of the two (three) processors are almost the same, the chips essentially turn out to have very different performance numbers, which also differs depending on the exact software they are trying to run. Not to mention that the number of cores are rather different between the processors, which skews the results even more. But bottom line is that they are not essentially churning out the same amount of work, even though they are running at similar frequencies.

*Your* pi-spigot implementation is measuring a whole bunch of factors which are sometimes not even closely related to actual processor speed.

This is all run on the same PDP-11/93. Each number is the best achieved after three runs. Except for once or twice, all numbers of the different runs for the same number of digits have been within less than 1% of each other. Many times I get the exact same number when running the program multiple times.

Worth pointing out that this is running the exact same code, with the exception of how I/O is done.
Does anyone think such variance is adding something to the exercise?

Also, note that the Unix version handles significantly less number of digits. But that is ok, even though the problem statement says it should use all available memory, and if doing that, it should be able to hit around 9000 digits. Because the author says it is ok in this case.

I won't even bother presenting the numbers from my code, because it's all just cheating anyway. Even though it also computes the correct result.
"

И поскольку я согласен с bqt, то

А по числу π результата нет.
и от меня не будет



Это похоже на какую-то претензию.
К кому? К программе? Да, претензия - чего, она, зараза, не работает, когда я (litwr) ХОЧУ :)

AFZ
02.09.2021, 06:32
Если что, вот вильнюсский Бейсик. На ДВК работает молча. Точно не помню, но, вроде-бы, именно он на ДВК с КГД работал с графикой.

Patron
03.09.2021, 22:19
A это можно расшифровать? Хороший SAV должен с любым RT-11 работать
Программа обращается к адресу 176640 = Bitplanes address register (RA), который есть только в УКНЦ. При запуске на любом варианте PDP-11 кроме УКНЦ - программа будет аварийно завершаться из-за обращения к отсутствующему оборудованию.

litwr
03.09.2021, 23:17
И поскольку я согласен с bqt, то
Вы похоже упустили главное из нашей дискуссии с этим уважаемым человеком. Шведы немного более прямолинейны, чем, например, американцы. Он пишет мне, что я что-то недопонял. Хотя он просто слишком поверил в свои предположения. Дальнейшая дискуссия показала, что это он недопонял кое-что. Если вы дочитали всю дискуссию до конца, то знаете, что аргументы bqt которые он приводит в итоге оказались несостоятельны. Его главная ошибка это предполагать назначение программы. Она не предназначена просто измерять скорость процессора, хотя она это и очень неплохо делает. Никто пока не смог на фактах показать, что это не так. У нас bqt сохранились нормальные отношения, он мне много чего интересного поведал о PDP-11 и не только. Кроме того, он сам тщательно протестировал мою программу на своих компьютерах и опубликовал результаты. Мне был предоставлен доступ к PDP-11/70 как в железе так и эмуляторе.
Опять вы всё перепутали. :) Но ещё не поздно начать испpавляться. Может для начала попробовать вести себя как bqt?



и от меня не будет
Хозяин - барин. Но у меня есть надежда, что даже сам Hunta имеет потенциал для улучшения своей кармы.



К кому? К программе? Да, претензия - чего, она, зараза, не работает, когда я (litwr) ХОЧУ :)
Извините, но ничего не понял. Поясните, пожалуйста - ваш внутренний мир для меня неинтересная загадка, а ваша фраза выпала прямо оттуда.

Hunta
03.09.2021, 23:28
знаете, что аргументы bqt которые он приводит в итоге оказались несостоятельны.
Весьма состоятельны


Но у меня есть надежда
Ну ну


Извините, но ничего не понял.
Это заметно

litwr
03.09.2021, 23:38
Если что, вот вильнюсский Бейсик. На ДВК работает молча. Точно не помню, но, вроде-бы, именно он на ДВК с КГД работал с графикой.
Пошел этот бейсик в эмуляторе. Очень Вам благодарен.

- - - Добавлено - - -


Весьма состоятельны

Опять демагогию разводите. :(

Hunta
03.09.2021, 23:42
Опять демагогию разводите
Не я первый начал

litwr
04.09.2021, 00:11
Не я первый начал
Прямо вы человек-генератор-загадок. О чем это вы? Что начал? Когда? Я свою позицию всегда разъясняю, а вы темните много. :(

Patron
04.09.2021, 14:58
Я свою позицию всегда разъясняю
В данной теме это лишнее.

litwr
05.09.2021, 10:04
В данной теме это лишнее.
Может Вы тогда объясните, что Hunta имеет в виду? Он тут понаписал много комментов, которые совсем ни о чем. А про разъяснение написал потому как вроде надо ответить человеку, а как ответить, если непонятно, о чем он пишет?

nzeemin
16.01.2022, 15:08
Patron, я смотрю, Jonathan Harston портировал свой BBC Basic под этот эмулятор:
https://mdfs.net/Software/PDP11/BBCBasic/Docs/RT11Em.htm

Но он там жалуется на какую-то ошибку установки флагов:


I had to add a workaround for a bug in RT11Em.
After MOV Rn,-(sp) RT11Em fails to set NE/EQ correctly. On all other PDP11 platforms tested, EQ/NE is set correctly.

Patron
16.01.2022, 16:22
Но он там жалуется на какую-то ошибку установки флагов
Действительно, в эмуляторе RT-11 для отдельных часто встречающихся кодов операций применены выборочные оптимизации, которых нет в эмуляторе PDP-11, и для команд вида MOV Rn,-(SP) как раз используется отдельный программный код для каждого из регистров:



void CPU11::Cmd_010046( word )
{// MOV R0,-(SP)

SP -= 2;
WordWrite( SP, R0 );

PSW &= ~(V|Z|N);

if( (signed short)R0 < 0 )
{
PSW |= N;
}
else
if( R0 == 0 )
{
PSW |= Z;
}
}




Тогда как в универсальном эмуляторе используется общий код для всех регистров, который выполняется дольше:


if( nWord <= 017777 )
{
byte nOp1 = (nWord & 07700)>>6;

word wOperand1;
WordRead0( nOp1, wOperand1 );

// MOV

WordWrite2( nWord & 077, nOp1, wOperand1 );

PSW &= ~(V|Z|N);

if( (signed short) wOperand1 < 0 )
{
PSW |= N;
}
else
if( wOperand1 == 0 )
{
PSW |= Z;
}

continue; // goto RETURN_TRUE;
}



На первый взгляд - оба варианта кода должны работать одинаково.

...

Ошибка найдена (и она впечатляет своей эпичностью):



void CPU11::Cmd_010146( word )
{// MOV R1,-(SP)

SP -= 2;
WordWrite( SP, R1 );

PSW &= ~(V|Z|N);

if( (signed short)R1 < 0 )
{
PSW |= N;
}
else
if( R0 == 1 ) // Должно быть if( R1 == 0 )
{
PSW |= Z;
}
}


- - - Добавлено - - -

...

Исправленная версия эмулятора: RT-11_Emulator_16.01.2022 (https://emulator.pdp-11.org.ru/RT-11/distr/RT-11_Emulator_16.01.2022.rar)

nzeemin
15.10.2023, 13:02
Patron я сейчас наблюдаю ситуацию: файлы на MACRO, все в кодировке КОИ-8Р.
Но один из файлов, подставляемый в INCLUDE оказывается в другой кодировке.
Есть ли автоопределение кодировки и перекодирование на лету в эмуляторе rt11?
Можно ли это отключить?

Patron
16.10.2023, 14:56
Я сейчас наблюдаю ситуацию: файлы на MACRO, все в кодировке КОИ-8Р. Но один из файлов, подставляемый в INCLUDE оказывается в другой кодировке. Есть ли автоопределение кодировки и перекодирование на лету в эмуляторе rt11? Можно ли это отключить?
Если речь про подключенный каталог Windows, то действуют довольно сложные правила перекодировок, повлиять на которые невозможно.

1. При сохранении файла в каталоге Windows средствами эмулятора - те файлы, которые в этот момент опознаны как текстовые, перекодируются в кодировку WIN и лишаются завершающих нулей.

2. При чтении из каталога Windows средствами эмулятора - все файлы дополняются нулями до границы блока 512 байт и затем те из них, которые в этот момент опознаны как текстовые файлы с кодировками WIN и DOS, перекодируются в KOI-8.


Если, например, каким-то способом поместить в каталог Windows текстовый файл в кодировке КОИ-7 - он будет прочитан эмулятором без изменений, но при любой модификации будет сохранён в кодировке WIN и при последующем чтении уже будет перекодироваться в КОИ-8.

Поэтому, если прочитанный эмулятором из подключенного каталога текстовый файл не имеет кодировки КОИ-8 - это означает, что данный файл не имел в каталоге Windows кодировки КОИ-8 и при чтении не был опознан эмулятором как текстовый файл в кодировке WIN или DOS.

nzeemin
23.10.2023, 22:44
Если речь про подключенный каталог Windows, то действуют довольно сложные правила перекодировок, повлиять на которые невозможно.


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

- - - Updated - - -

Во вложении архив с двумя файлами.
Выполняем команды:
rt11.exe TYPE A.MAC
-- всё хорошо
rt11.exe TYPE B.MAC
-- кракозяблы.
Оба файла в кодировке Windows 1251.
В файле B.MAC добавлены ТРИ строчки.

- - - Updated - - -

Нужен какой-то workaround хотя бы. Типа вставить что-то в файл, чтобы он гарантированно правильно определялся.

UPD: Похоже что символ многоточия начисто сбивает детектор кодировки, не смотря на весь остальной текст.

Hunta
24.10.2023, 10:18
Как мне кажется, надо в rtp добавить ту же схему, что и в PDP11 и VT52 - добавление к имени каталога расширения ".Not Recoded" выключает перекодирование в этом каталоге (и во всех вложенных)

andrews
24.10.2023, 10:35
Пошел этот бейсик в эмуляторе. Очень Вам благодарен.
воистину пошел. И в отличие от буржуйского basic.sav нормально выводит
print sin(1). Другие функции пока не попробовал.

Попробовал.

Гиперболических точно нет, только программой. И log(x) дает значение как ln(x), а последнего нет.

Еще есть ограничение для вложенных функций. sin(sin(x)) работает, а sin(sin(sin(x))) уже нет - пиши программу.

Графики тоже нет?

Patron
24.10.2023, 17:16
Похоже что символ многоточия начисто сбивает детектор кодировки, не смотря на весь остальной текст.
Похоже, что для запуска перекодировки все символы текста должны быть допустимыми в КОИ-8.

Иначе было бы сложно гарантировать, что не будет перекодирован двоичный файл базы данных, содержащий текстовые строки (вроде SYSMAC.SML или HELP.MLB).



Как мне кажется, надо в rt добавить ту же схему - добавление к имени каталога расширения ".Not Recoded" выключает перекодирование в этом каталоге (и во всех вложенных)
По-хорошему, ДА.

Но если файлы не модифицируются в эмуляторе и нужно лишь, чтобы они при чтении эмулятором имели кодировку КОИ-8 - достаточно включить в текстовом редакторе в Windows сохранение в КОИ-8 и никаких проблем не будет. Файлы будут храниться в каталоге в кодировке КОИ-8 и нигде никак перекодироваться не будут.

Hunta
24.10.2023, 17:38
Но если файлы не модифицируются в эмуляторе
Обычно да


при чтении эмулятором имели кодировку КОИ-8
А вот это не всегда возможно. В принципе, пока мне это (не КОИ-8) (вроде бы) нужно было только при сборке модифицированной RT-11 - а в этом случае я использую полноценный вариант эмулятора, а не rt11, но вот для индивидуальных проектов часто из командника вызываю именно rt11 - и вот тут я навскидку не скажу - используется ли в каких-то файлах русские буквы не в КОИ-8. И точно есть варианты программ, где используются 016/017 переключения

Patron
24.10.2023, 17:45
И точно есть варианты программ, где используются 016/017 переключения
При чтении из каталога Windows эмулятор перекодирует ТОЛЬКО такие файлы, которые опознаны как текстовые и содержащие либо "допустимое подмножество" букв в кодировке WIN, либо "допустимое подмножество" букв в кодировке DOS.

016/017 этому правилу не удовлетворяют, поэтому любой текст с такими символами будет ПРОЧИТАН без перекодировки.

Hunta
24.10.2023, 17:58
016/017 этому правилу не удовлетворяют, поэтому любой текст с такими символами будет ПРОЧИТАН без перекодировки.
А, уже легче :) Но - (навскидку) вроде файлов, которые исполльзуют Win или Dos кодировку - нет, но... не факт - я как-то за этим не особо следил - только тогда, когда действительно нужно было - но это КОИ-8 или Windows кодирвки - в специфичемких и не использующих rt11 проектах. Так что лучше всё таки (как будет время и возможность) добавить в rt11 механизм ".Not Recoded"

Patron
24.10.2023, 21:41
Но - (навскидку) вроде файлов, которые используют Win или Dos кодировку - нет
При ЗАПИСИ в каталог Windows ВСЕ текстовые файлы конвертируются эмулятором в кодировку WIN (так же, как это делает плагин для Total Commander).

Hunta
24.10.2023, 22:26
При ЗАПИСИ в каталог Windows ВСЕ текстовые файлы конвертируются эмулятором в кодировку WIN
И всё таки лучше этот механизм иметь возможность выключать. Потому что вариант с сохранением файлов в кодировке КОИ-8 - уже есть. И именно под эту кодировку идёт доделка RT-11.