Что то как то всё сложно.
1. совершенно не понял откуда дубликаты вообще берутся? (на данный момент)
2. будет ли "в обновлении" однозначно решена данная проблема?
Спасибо.
Вид для печати
Patron, у меня ещё один, сакраментальный вопрос.
Если в командной строке передаётся команда, то после её выполнения эмулятор завершается.
Каким образом определяется что система вернулась к командной строке RT-11?
Никаким. Если не извлекать SYSTEM.DSK - при каждом последующем запуске начальное состояние эмулятора неизменно. При запуске в эмулятор передаётся командная строка, а при завершении - в Windows передаётся код завершения последней выполненной в эмуляторе программы RT-11.
- - - Добавлено - - -
Для появления дубликатов нужно проявить смекалку и специально это сделать. Поскольку никакой пользы от этого нет - ни делать этого, ни думать об этом не следует.
Patron, возможно вам будет интересно. Посмотрел в плане методов определения типа файла.
В Far Manager кодировки определяются частотным анализом, то есть по тому какие символы чаще встречаются; есть готовые частотные таблицы для различных кодировок:
https://github.com/FarGroup/FarManag...illicModel.cpp
И кроме того, советуют использовать сети Маркова. То есть берём массу текстовых файлов, составляем таблицу вероятностей перехода от одного байта к следующему. Потом полученную таблицу используем для проверки насколько данный файл подходит.
Попробовал запустить в эмуляторе дисковый вильнюсский бейсик с УКНЦ (dbas.sav) - не пошло - пишет ?MON-F-Trap to 4 006644
Пробовал два файла (прикрепляю их в архиве) - один взят из UKNCBTL, другой Hobot выкладывал где-то на этом форуме - результат одинаковый. У УКНЦ получается какой-то расширенный вариант RT-11?
Интересно, что BBC Basic пошел нормально - даже таймер работает правильно - PRINT TIME.
Вложение 76033
Есть программа, которая работает под RT-11 и напрямую обращается, ну скажем, к регистрам RK11
Кто то, ну скажем, litwr, запускает эту программу на компьютере, на котором нет RK11
Программа ожидаемо вылетает.
Вопрос - кто виноват? Программа? RT-11? Или, всё таки, litwr?
Сам спросил, сам ответил - а всё кругом виноваты.
- - - Добавлено - - -
Вот и второй путальщик появился ;)
Мне нужен вильнюсский бейсик, который пойдет под этим эмулятором. Последняя надежда - это вариант для ДВК. Не поможите найти? Сам запутался в архивах. :(
- - - Добавлено - - -
Чем задавать непрактичный вечный вопрос "Кто виноват?" задали бы другой не менее вечный, но практичный "Что делать?" Могу помочь с ответом:
1) помочь найти вильнюсский бейсик, который работает в этом эмуляторе:
2) собрать статистику по расчету числа π. У Вас образовалась замечательная коллекция - зачем железу просто проистаивать, пыль накапливать? "Всё проходит - остаётся только память о добрых делах" - говорили викинги. И коллекция может внезапно уйти, не оставив полезного результата. :( Вот у уважаемого form был 11/83, а сейчас уже нет, а хотелось бы результаты обновить...
Кто виноват - тот пусть и думает - что делать.
Свободного времени мало, на себя любимого не хватает, поэтому - интернет в руки - и вперёд.
На vcfed вас уже послали. От себя могу добавить, что (см ниже)
Полезный результат она уже более чем принесла.
И вдогонку - результаты сравнения производительностей моих плат уже есть и выложены. Возрадуйтесь
Да хоть индусы. Когда уйду в мир иной - будет АБСОЛЮТНО похрен - кто, чего и как обо мне думает. И думает ли вообще.
Не понял. Мне там много ценных результатов предоставмли и даже по 3 или 4 ваксам. А программер оттуда 4 месяца пытался пи-затвор улучшить. Был бы рад, если бы Вы так "послали".
- - - Добавлено - - -
А по числу π результата нет. :(
- - - Добавлено - - -
Это похоже на какую-то претензию. Уточните, не в курсах.
"
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) ХОЧУ :)
Если что, вот вильнюсский Бейсик. На ДВК работает молча. Точно не помню, но, вроде-бы, именно он на ДВК с КГД работал с графикой.
Вы похоже упустили главное из нашей дискуссии с этим уважаемым человеком. Шведы немного более прямолинейны, чем, например, американцы. Он пишет мне, что я что-то недопонял. Хотя он просто слишком поверил в свои предположения. Дальнейшая дискуссия показала, что это он недопонял кое-что. Если вы дочитали всю дискуссию до конца, то знаете, что аргументы bqt которые он приводит в итоге оказались несостоятельны. Его главная ошибка это предполагать назначение программы. Она не предназначена просто измерять скорость процессора, хотя она это и очень неплохо делает. Никто пока не смог на фактах показать, что это не так. У нас bqt сохранились нормальные отношения, он мне много чего интересного поведал о PDP-11 и не только. Кроме того, он сам тщательно протестировал мою программу на своих компьютерах и опубликовал результаты. Мне был предоставлен доступ к PDP-11/70 как в железе так и эмуляторе.
Опять вы всё перепутали. :) Но ещё не поздно начать испpавляться. Может для начала попробовать вести себя как bqt?
Хозяин - барин. Но у меня есть надежда, что даже сам Hunta имеет потенциал для улучшения своей кармы.
Извините, но ничего не понял. Поясните, пожалуйста - ваш внутренний мир для меня неинтересная загадка, а ваша фраза выпала прямо оттуда.
Patron, я смотрю, Jonathan Harston портировал свой BBC Basic под этот эмулятор:
https://mdfs.net/Software/PDP11/BBCB...ocs/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.
Действительно, в эмуляторе 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
@Patron я сейчас наблюдаю ситуацию: файлы на MACRO, все в кодировке КОИ-8Р.
Но один из файлов, подставляемый в INCLUDE оказывается в другой кодировке.
Есть ли автоопределение кодировки и перекодирование на лету в эмуляторе rt11?
Можно ли это отключить?
Если речь про подключенный каталог Windows, то действуют довольно сложные правила перекодировок, повлиять на которые невозможно.
1. При сохранении файла в каталоге Windows средствами эмулятора - те файлы, которые в этот момент опознаны как текстовые, перекодируются в кодировку WIN и лишаются завершающих нулей.
2. При чтении из каталога Windows средствами эмулятора - все файлы дополняются нулями до границы блока 512 байт и затем те из них, которые в этот момент опознаны как текстовые файлы с кодировками WIN и DOS, перекодируются в KOI-8.
Если, например, каким-то способом поместить в каталог Windows текстовый файл в кодировке КОИ-7 - он будет прочитан эмулятором без изменений, но при любой модификации будет сохранён в кодировке WIN и при последующем чтении уже будет перекодироваться в КОИ-8.
Поэтому, если прочитанный эмулятором из подключенного каталога текстовый файл не имеет кодировки КОИ-8 - это означает, что данный файл не имел в каталоге Windows кодировки КОИ-8 и при чтении не был опознан эмулятором как текстовый файл в кодировке WIN или DOS.
Перевёл файлы в кодировку Windows 1251, какое-то время это помогало.
После некоторых изменений в файле раз и его перестаёт правильно определять, внутри rt11 он опять воспринимается кракозяблами.
Проблема как раз в ненадёжности детектора кодировки, он лажает.
Хотелось бы возможность совсем отключать детектор, чтобы файлы читались как есть.
Сохранение файлов меня волнует в меньшей степени.
- - - Updated - - -
Во вложении архив с двумя файлами.
Выполняем команды:
rt11.exe TYPE A.MAC
-- всё хорошо
rt11.exe TYPE B.MAC
-- кракозяблы.
Оба файла в кодировке Windows 1251.
В файле B.MAC добавлены ТРИ строчки.
- - - Updated - - -
Нужен какой-то workaround хотя бы. Типа вставить что-то в файл, чтобы он гарантированно правильно определялся.
UPD: Похоже что символ многоточия начисто сбивает детектор кодировки, не смотря на весь остальной текст.
Как мне кажется, надо в rtp добавить ту же схему, что и в PDP11 и VT52 - добавление к имени каталога расширения ".Not Recoded" выключает перекодирование в этом каталоге (и во всех вложенных)
воистину пошел. И в отличие от буржуйского basic.sav нормально выводит
print sin(1). Другие функции пока не попробовал.
Попробовал.
Гиперболических точно нет, только программой. И log(x) дает значение как ln(x), а последнего нет.
Еще есть ограничение для вложенных функций. sin(sin(x)) работает, а sin(sin(sin(x))) уже нет - пиши программу.
Графики тоже нет?
Похоже, что для запуска перекодировки все символы текста должны быть допустимыми в КОИ-8.
Иначе было бы сложно гарантировать, что не будет перекодирован двоичный файл базы данных, содержащий текстовые строки (вроде SYSMAC.SML или HELP.MLB).
По-хорошему, ДА.
Но если файлы не модифицируются в эмуляторе и нужно лишь, чтобы они при чтении эмулятором имели кодировку КОИ-8 - достаточно включить в текстовом редакторе в Windows сохранение в КОИ-8 и никаких проблем не будет. Файлы будут храниться в каталоге в кодировке КОИ-8 и нигде никак перекодироваться не будут.
Обычно да
А вот это не всегда возможно. В принципе, пока мне это (не КОИ-8) (вроде бы) нужно было только при сборке модифицированной RT-11 - а в этом случае я использую полноценный вариант эмулятора, а не rt11, но вот для индивидуальных проектов часто из командника вызываю именно rt11 - и вот тут я навскидку не скажу - используется ли в каких-то файлах русские буквы не в КОИ-8. И точно есть варианты программ, где используются 016/017 переключения
При чтении из каталога Windows эмулятор перекодирует ТОЛЬКО такие файлы, которые опознаны как текстовые и содержащие либо "допустимое подмножество" букв в кодировке WIN, либо "допустимое подмножество" букв в кодировке DOS.
016/017 этому правилу не удовлетворяют, поэтому любой текст с такими символами будет ПРОЧИТАН без перекодировки.
А, уже легче :) Но - (навскидку) вроде файлов, которые исполльзуют Win или Dos кодировку - нет, но... не факт - я как-то за этим не особо следил - только тогда, когда действительно нужно было - но это КОИ-8 или Windows кодирвки - в специфичемких и не использующих rt11 проектах. Так что лучше всё таки (как будет время и возможность) добавить в rt11 механизм ".Not Recoded"