-
- ? gid
- 23.10.2018 13:38
У меня ереси не происходит, делается именно то, что нужно, а именно - изменение частоты.
Вот только, если задать частоту меньше 1МГц происходят разные непонятные процессы. Иногда начинается самовольный Trap To 4. Ни отловить причину, ни отладить пока не удалось. Это очень древний косяк, проявивший себя сразу после того, как я сделал эти контролы и стало можно менять частоту на лету. Пока знаю, что это из-за прерываний, а как и почему - не знаю.
- ? gid
- 17.10.2018 11:05
Разобрать декомпилятором явы модули на исходники (которые потом обратно всё равно не скомпилятся, но функции оттуда брать можно)
И глядя на них написать свой эмулятор на Яве. По другому никак. Издержки проприетарности.
- ? gid
- 01.10.2018 12:16
Можно ещё поизучать исходники эмуляции EIS/FIS их два варианта - дизассемблированный из ПЗУ 326 и чуточку другой вариант - исходник прилагался к ассемблеру Турбо8. Но тут мне уже не лень, а тупо некогда. В эмуляции предполагается, что результат соответствует аппаратной реализации, она ж всё равно микрокодом делалась, так что алгоритмы должны быть идентичны, что в микрокоде, что на ассемблере.
Я ведь просто предположил, как оно работает, и как бы сам реализовывал.
А как на самом деле древним разработчикам тараканы в голове нашептали, я не знаю.
Вдруг там приделали жёсткую проверку на нечётность регистра и при этом делают только правый сдвиг отдельной веткой алгоритма, а левый не делают, просто выходят с ошибкой.
- ? gid
- 29.09.2018 09:36
Кто мешает взять и попробовать на БК с эмуляцией инструкций EIS/FIS?
Мне, например, лень мешает. Поэтому я предполагаю такой алгоритм работы команды:
ASHC(rd,n)
{
t_hi = rd;
t_lo = rd | 1;
if (n<0)
{
n = -n;
while(n>0)
{
ASR t_hi;
ROR t_lo;
n--;
}
}
else
{
while(n>0)
{
ASL t_lo;
ROL t_hi;
n--;
}
}
rd = t_hi;
(rd | 1) = t_lo;
}
И по нему выходит, что если регистр-операнд нечётный, то получается не просто PDPшный ROR, ROL. А настоящий циклический сдвиг, почти такой, как на интеловском х86, когда бит С не участвует в сдвиге, а только отображает разряд, вытесненный из регистра.
- ? gid
- 25.09.2018 21:35
без комментариев бесполезно. нифига не понятно. это то же самое, что в DESS его рассматривать.
Самое сложное определить что есть аргумент адресации 27 - смещение, адрес переменной или просто какая-то константа.
Так-то листинг я могу дать хоть прямо сейчас. http://gid.pdp-11.ru/f/324_diz.rar
- ? gid
- 25.09.2018 18:53
Я и простой БОС БК11М не осилил сдизассемблировать. Несколько месяцев бился, и забросил. Хотя там код не в пример проще (в смысле понятнее) и изящнее, чем в БОС БК11, который - ужос-ужос, может вообще написан был на паскале каком-нибудь или си или фортране.
- ? gid
- 23.09.2018 20:37
[Решил инсульт до конца прогнать в 16й звука нет, в 17й пропадает через несколько секунд]
Потому что там ковоксный звук, а не AY.
- ? gid
- 22.09.2018 08:34
[проводок на B6 паять к ноге резистора, а не РРки]
Т.е. получается, резистор последовательно между B6 и микрухой? Так работать не будет.
А в интернете, даже картинка была нарисована к текстовому описанию, что куда присоединять. Резистор должен быть параллельно, подтяжкой к земле входа B6 должен быть.
- ? gid
- 21.09.2018 22:07
>>? Manwe - 21.09.2018 18:57
[Если бы там была ПЗУ, сработало бы прерывание по 4-му вектору]
Фигушки. Если ПЗУ не отключается, т.е. БКшку не модифицировали для работы с СМК, то ОЗУ налагается на ПЗУ и при записи туда, никакое прерывание по вектору 4 не произойдёт, т.к. ОЗУ выдаёт RPLY из зависания на шине нет.
А при чтении получается каша: (данные из ОЗУ | данные из ПЗУ), поэтому ничего и не работает.
¤
>>? S_V_B - 21.09.2018 20:34
[РАЗРЫВ]
это значит оторвать ногу от земли, т.е. от нуля, по умолчанию нога 23 на 0 заведена, поэтому её оттуда надо оторвать (от земли то бишь), и соединить с выводом B6 разъема МПИ, и ещё резистор 1 кОм который, одним концом будет втыкнут в землю, а другим - в ногу 23, такое без паяльника никак не делается. жвачкой или изолентой - контакт плохой будет.
- ? gid
- 19.09.2018 19:51
на zx.pk я в ветке образ тоже уже пропатченый во вложении приложил
- ? gid
- 19.09.2018 18:51
с СМК-512 даже с нажатым при включении питания Шифт-4 (клавиша с цифрой 4) не стартует?
¤
В кои-то веки нашлась какая-то непонятная фигня, которой ни у кого нет, и про которую никто не знает, и такой облом.
Что за монитор-то хоть? Он как адекватная замена оригинальному монитору БК-11 или что-то узкоспецифическое, не предполагающее никаких действий, кроме специальных, типа управления каким-нибудь ЧПУ?
¤
BD, а есть гарантии, что ОС БК 2.1 будет работать без ПЗУ БОС БК-11? может она вывод символов на экран через ЕМТ пзушные делает?
У меня поэтому были надежды именно на андос, т.к. он точно, гарантированно работает на БК10, БК11 и БК11М, на двух последних не зависит от ПЗУ.
Одна беда - пока писал это, вспомнил, в загрузчике он текст на экран выводит. И выводит как раз средствами ПЗУ. Если в П/П вывода символа на экран первым словом сделать 207, то на экран ничего не выведется, зато загрузка пройдёт успешно.
- ? gid
- 17.09.2018 12:38
Никто не знает. В этом-то вся интрига.
- ? gid
- 16.09.2018 20:16
писать/говорить "клавиша стрелка "нижний регистр"" слишком долго, язык заплетается и пальцы мимо клавиш промахиваются. проще называть её привычным и коротким именем "шифт"
- ? gid
- 16.09.2018 19:47
>>? BD@ - 16.09.2018 17:39
[СМК меняет адрес старта. в этом все проблемы.]
Там хуже. СМК на платформе БК11 делает CALL @#150170, а на платформе БК10 делает CALL @#100140 в самом начале после запуска.
Поэтому при любых ПЗУ кроме БОС БК11 и Монитор БК10 происходит чоткий зависон.
¤
Но выход есть. Если при включении питания держать нажатыми клавиши ШИФТ-4, то произойдёт горячий рестарт с адреса 140000, т.е. запуск БОС БК11.
Я всё время забываю про всякие горячие клавиши СМК, даже специальною подсказку себе написал. Только забыл, куда записал и пришлось всё заново вспоминать.
Сейчас проверил на эмуляторе, создал себе новую конфигурацию БК11 + СМК и запустил её. ШИФТ-4 => выход в БОС, 160000G и загрузился с дискеты с АНДОС.
- ? gid
- 15.09.2018 20:36
и это, чем больше версия - тем более навороченный тест и больше проверяемых моментов.
чем меньше версия - тем проще и быстрее тест.
тесты с буковкой F - тоже что и без F, только со встроенным знакогенератором, чтобы не зависеть ни от чего, ни от ПЗУ, ни от ОС.
- ? gid
- 15.09.2018 20:33
там к каждому тесту, где вводились значимые изменения есть краткое описание что к чему.
для тестов с версии 4.6 и выше описание там http://gid.pdp-11.ru/alttest_v46_info.html
про ошибки - последний пункт описания, там же почему они появляются, и почему это нормально.
- ? gid
- 15.09.2018 16:54
просто он сказал, что у него уже под рукой есть СМК, а он тоже как КНГМД сойдёт.
- ? gid
- 14.09.2018 16:24
дамп в студию. что за штука такая? посмотреть на него хочется.
- ? gid
- 05.09.2018 14:22
Вот примерно такая пдфка получилась http://gid.pdp-11.ru/f/osbk11v40.pdf
200dpi маловато конечно, мелкий текст плохо читается, особенно плохо с командами, которые набирать с клавиатуры надо, но напрягая зрение, ознакомиться можно.
- ? gid
- 04.09.2018 16:03
[что бумажных доков нет]
Вот именно. Бумажные доки - чудовищная редкость, они мало у кого есть, а у кого есть, тот нисколько не страдает альтруизмом, чтобы отсканить их и выложить как историческую ценность.
- ? gid
- 04.09.2018 16:00
ненене не надо фотать. только сканировать. У фоток потом если искажение перспективы можно исправить, то неравномерность освещения страницы хрен исправишь. и шум бывает такой, что символы потом не распознаются, и если буквы можно угадать, то числа - уже фиг догадаешься 0 там или 6, или 8 или 2.
¤
А IC не является стандартной утилитой RT-11, поэтому о ней и не упоминается. Этот документ - изложение стандартного документа по RT-11, только надеюсь с описанием особенностей и отличий ОС БК, а не просто копипаста.
- ? gid
- 04.09.2018 15:29
А где такие диски ОС БК есть? Я перелопатил все образы, которые нашёл в интернете, извлёк из них все возможные текстовые документы. http://gid.pdp-11.ru/f/rt11-docs.zip
Но вот такой брошюры там не встречалось.
- ? gid
- 19.08.2018 21:25
>>? Lasoft / Excess team@ - 19.08.2018 16:26
[ты с чем-то был не согласен, но сам же противоречишь]
Я был не согласен с выражением "частота таймера == частота процессора" потому что "частота таймера = частота процессора / 128"
Это немного разные частоты, хоть и полностью синхронны.
¤
[луч может отлавливаться теперь уже в другом месте ( до 10-ти вариантов )]
Вот так вот работает ВП1-037 и 4МГц или 6МГц частоты БК, никогда не угадаешь. Время выполнения команды зависит от того, какой была предыдущая команда (для 4МГц - 6 или 8 вариантов на каждую команду, для 6МГц - 12 или 16 вариантов на каждую команду), а её время выполнения - от того какая было до неё, и так вплоть до включения питания. А какая фаза установилась при включении ВП1-037 - зависит от рандомно инициализировавшихся триггеров внутри микросхемы. Всего 4 варианта, некоторые маловероятны, некоторые - максимально вероятны.
¤
>>? Lasoft / Excess team@ - 19.08.2018 16:42
[> Напоминаю, время исполнения MOV R0,R0 -- 2 слова пикселей.
Это не правда )]
Это правда только для 3МГц частоты процессора, для остальных частот - нет.
¤
>>? Lasoft / Excess team@ - 19.08.2018 16:51
[экран и палитры переключаются не одновременно]
Палитра переключается "абсолютно мгновенно", как только изменится значение в регистре палитры, а экран переключается синхронно с фазами работы ВП1-037
¤
>>? Lasoft / Excess team@ - 19.08.2018 17:06
[можно тут как-то редактировать сообщение?]
Нельзя. Все ошибки и опечатки сохраняются для потомков. Если их стесняетесь - просто 7 раз перечитайте своё сообщение перед отправкой.
¤
Единственно возможный вариант не зависеть от конкретного экземпляра БК - придумать алгоритм, который сперва бы или рассчитывал нужные коэффициенты, в зависимости от фазы работы, или бы добивался стабильно нужной фазы работы.
- ? gid
- 19.08.2018 10:41
[Интересное обсуждение, почему "за исключением утверждения про частоту"?]
Потому что частота таймера = частота процессора / 128.
И самый быстрый один тик таймера происходит за 128 тактов процессора, и поэтому никогда не будет возможно поймать переход, если не использовать 0-тактовую память. При 0-тактовом ОЗУ, которое не зависит от ВП1-037, можно точно подобрать команды, т.к. их время выполнения в тактах известно.
ВЕ таймер нужно запускать дважды, из-за глюка первого перехода через 0 после подачи питания.
Т.е. запустить таймер, остановить, запустить повторно. Или просто дать ему покрутиться с малым периодом, потом задать нужный и начать использовать.
А синхронизироваться лучше по прерыванию 50Гц. Потому что, когда оно происходит луч находится всегда в определённой позиции.
Т.е. запускать таймер в прерывании, тогда его отсчёт будет совпадать с ходом луча в каждом кадре, не будет плавать.
- ? gid
- 14.08.2018 19:43
см. там http://vak.ru/doku.php/proj/bk/bk-up
Оказывается Сергей Вакуленко не забросил эту штуку и пополняет всякой инфой.
- ? gid
- 14.08.2018 09:41
Во всех образах, в формате АльтПро так. Потому что это и есть формат АльтПро. В формате Самара - по-другому. Но поскольку самарских контроллеров есть всего у пары человек, а СМК - у многих, то вот так.
- ? gid
- 13.08.2018 19:42
Кодировка слетела?
Или это вопрос? Я сделал эвристический анализ вопроса "как так?" и пришёл к выводу что он был задан по поводу одинаковых чисел по заданным смещениям. Если я не угадал - сами виноваты. Задавайте чётко сформулированные вопросы, не подразумевающие многозначных толкований.
- ? gid
- 13.08.2018 16:13
Значит геометрия одинаковая. Под CFку рассчитана.
- ? gid
- 13.08.2018 14:13
[Данные идут в сторону уменьшения адресов...]
Ну вот и смотрим, данные, которые идут в сторону уменьшения адресов:
0x11fe: 0xfe15 - всего дорожек
0x11fd: 0xff - код # привода,уст.внешним драйвером
0x11fc: 0xfb - всего головок
0x11fa: 0xfffd - секторов на дорожке
0x11f9: 0xfd - # устр. для загрузки по умолч. (0 - А, 2 - С ...)
0x11f8: 0xfe - всего лог.дисков
потом начинается таблица разделов, как указано в байте 0x11f8, у нас всего один раздел
0x11f6: 0xfffe - 1 слово - номер головки (младшие 4 бита) и номер дорожки (остальные 12 бит)
если это слово < 0 (т.е. на дорожки отводится уже 11 бит.)
то раздел считается защищённым от записи.
разделы выравниваются по началу цилиндра, т.е. начало всегда сектор 1.
0x11f4: 0x0b9f - 2 слово - объём логического диска в блоках, т.е. 65536 = макс. 32Мб.
(предполагается, что каждый лог. диск начинается с первого сектора дорожки, определённой первым словом).
0x11f2: 0xf1ce - контрольная сумма таблицы разделов вместе с геометрией.
¤
Ну всё же очевидно и просто.
- ? gid
- 13.08.2018 13:34
[вы его Hex edit открывали?]
Конечно. Я всегда начинаю анализ данных с рассматривания их в hiew.
7й блок начинается с адреса 0x1000, кончается на 0x11ff.
А вот по адресу 0x11f2 начинается конец таблицы разделов, и вплоть до конца 7го блока - данные.
- ? gid
- 13.08.2018 12:16
вообще-то там чёткая структура АльтПро. BKHDDTool уверенно распознал формат МБР. Все данные на месте. Они начинаются с конца блока, а не с начала и они инвертированы. И в 7-ом блоке (8-ом секторе), не считая первые 512 байтов служебных данных HDI, в самом конце есть и таблица разделов из одного раздела и остальные параметры. BKHDDTool даже и раздел извлёк, правда поругался, что конца данных нету. Ну нету и нету, там в конце всё равно ничего нету.
Естественно в разделе нет никакой ОС за ненадобностью, там загрузчик и данные демки.
Извлечённый раздел потом можно использовать как обычный образ загрузочной дискеты. Наверное. Если там не сделана привязка к конкретно номеру привода С, тогда чуть сложнее, но тоже можно.
- ? gid
- 13.08.2018 10:23
Глянул - все первые 512 байтов образа hdi - стандартный паспорт HDD, со всеми теми данными, которые там и должны быть. Именно он выдаётся винчестером по команде IDENTIFY DEVICE (ECh) всем, кому нужно узнать параметры HDD.
Это если мы говорим об образе, который в том посте был ? BD@ - 12.08.2018 13:27
И о любом другом корректном hdi образе.
- ? gid
- 12.08.2018 19:47
[по кнопке .hdi->.img HDDImgMaker_x64.exe выдает "неожиданный конец файла"]
Там, в паспорте винта указано много цилиндров, а столько не используется, и чтобы не таскать за собой гигантский хвост из нулей, его нафиг отрезали. Потому что демка гарантированно туда не обращается.
¤
На это можно не обращать внимания, и использовать получившийся .img как обычно.
Но для эстетики я добавил окошко с вопросом чё делать в таком случае - остановиться или продолжить и дополнить образ нулями до конца.
Обновление будет осенью.
- ? gid
- 11.08.2018 17:31
[SMK и прошивка АльтПро справляется с этим несоответствием]
Вообще-то не должно. Т.к. если в паспорте HDD прописано 4 головки, а в МБР винта - 8 головок, то HDD должен выдавать ошибку при попытке прочитать что-то с 5-й головки, т.к. её нет физически.
И наоборот, если в паспорте HDD прописано 8 головок, а в МБР винта - 4 головки, то при работе с контроллером АльтПро будут использоваться только первые 4 головки и не будет доступа к остальным 4-м. И тут возможно два варианта:
1) если на винт был записан образ с использованием геометрии винта, то половина данных будет недоступна (те которые попали на головки 5..8)
2) если винт просто проинициализирован (записан МБР), а потом в разделы записывать данные уже на БК, то будет просто использоваться половина головок из доступных.
¤
Прошивка АльтПро очень примитивная, она осуществляет доступ к HDD в режиме PIO-1 (или даже более примитивному, если такой существует). Не использует данные паспорта HDD, верит на слово тому, что прописано в МБР. Осуществляет обмен данными размером строго в 1 сектор.
И перебирает сектора по одному в точности как драйвер дисковода, только с учётом того, что сторон может быть больше и секторов на дорожке - больше.
- ? gid
- 11.08.2018 17:10
будут. при условии, что вы знаете как работают эти команды. т.е. перед использованием их, вы уже зашли в пультовый режим.
- ? gid
- 11.08.2018 08:47
если геометрия реального hdd не совпадает с той, что в образе, придётся пересобрать образ под новую геометрию утилитой BKHDDTool. При этом есть недостаток - теряются резидентные модули, записанные в МБР.
А ещё USB-IDE переходники могут не поддерживать режимы работы очень старых добрых IDE HDD. Там что-то с буферизацией не то и вместо данных иногда записываются нули.
- ? gid
- 10.08.2018 21:10
Если подключен блок ИРПС, настроенный на адреса портов 176560..176566, то запись туда будет работать.
И даже всё будет корректно. потому что в ячейках 176560..176564 записаны нули, а в 176566 записано 0360.
На запись будет выдавать RPLY чип ВП1-035/065, а на чтение - сперва ВП1-035/065, а затем ПЗУ. А поскольку там нули, то мешать они не будут. А 0360 - это адрес вектора прерывания приёмника ИРПС, стандартный для диапазона 176560
¤
Так что это не ошибка. А трюк такой. Электрически корректный.
- ? gid
- 10.08.2018 20:52
Значит, что подсчёт CRC начинается с числа 012701, а не с нуля.
Посмотрите у меня в исходниках эмулятора исходники утилиты BKHDDTool, там комментариев больше, и она как раз для разборки-сборки образа hdd. Там самое ценное - манипуляции с МБР и разметка диска.
- ? gid
- 09.08.2018 16:28
[.hdi -> .img для CFки, просто рубить 1(0) сектор и всё?]
Да. Для не умеющих это делать вручную, в утилите HDDImgMaker даже добавлена специальная кнопка.
¤
[написать на РС тулзу для перемещения/увеличения разделов]
Я кстати такую очень давно написать хотел. Но упёрся в интерфейс. Я не умею такие штуки делать, чтобы мышкой туда-сюда границы перемещать и раздел как надо менялся, а исходников, чтобы в них подсмотреть, как это делается, в интернете не нашёл.
¤
Если кто-нибудь мне подкинет исходники интерфейса на Си, такие в которых можно разобраться, я такую тулзу смогу написать. даже интегрирую туда BKDE, чтобы можно было на конкретный лог.диск файлы закинуть, удалить, заменить.
- ? gid
- 02.08.2018 11:51
2 HDD не распознаёт ПЗУ АльтПро контроллера СМК, соответственно ни одна ОС, которая его использует тоже не распознаёт 2 HDD.
Нужно пользоваться сторонними средствами. Среди дискет со всякими сервисными программами была какая-то прога, которая понимала 2 HDD и позволяла копировать данные с одного на другой.
Правда, как оно работает, я не проверял. Я даже не проверял, корректно ли эмулятор эмулирует два ATA IDE канала. Потому что до практического использования реальных HDD на реальной БК дело у меня так и не дошло.
- ? gid
- 26.07.2018 11:13
так эта, там же и скачать. В описании к видео есть ссылка на www.pouet.net, а там уже есть ссылки на саму демку.
- ? gid
- 12.07.2018 19:51
Общераспространённая информация о плавающих числах бейсика такая - http://gid.pdp-11.ru/books/programming_BK10.html#__RefHeading__218
так получается, что double сделано не по стандарту IEEE754. у него порядок такой же как у float - 8 бит вместо 11. А одинарная точность из двойной делается тупым отбрасыванием младших битов мантиссы. Я когда смотрел исходники MACRO-11, чтобы узнать, как оно с плавающими числами работает, увидел такую фигню, удивился, и решил отложить всё это на время, пока что-нибудь не прояснится.
Вот там, http://gid.pdp-11.ru/books/dvk/dvk3_ch1.html#cha1.7.3.7 в описании команд MACRO-11 тоже даётся формат float и double. и у обоих порядок по 8 бит. Так что корни растут оттуда.
¤
Вот, кстати, ходили слухи, что в бейсике БК-0011 (без М) плавающие числа с двойной точностью были несовместимы плавающими числами с двойной точностью от бейсика БК-0010, как раз из-за того, что в бейсике БК-0011 double было сделано правильно, с порядком 11 бит.
Поэтому те, кто грузил .cod файлы имели разного рода глюки с числами.
- ? gid
- 05.07.2018 16:32
[Нет, я про симуляцию этих приоритетов.]
У 1801ВМ1 делать 8 уровней приоритета просто бессмысленно, там просто нечего приоретизировать. Разве что можно попробовать запрещать/разрешать не всё скопом, а по отдельности (IRQ2, IRQ3, VIRQ). Но источников прерываний всё равно мало, так что тут большой простор для фантазии и разных комбинаций.
напр
7 - запрещено всё (IRQ2, IRQ3, VIRQ)
6 - разрешено IRQ2, запрещено IRQ3, VIRQ
5 - разрешено IRQ3, запрещено IRQ2, VIRQ
4 - разрешено VIRQ, запрещено IRQ2, IRQ3
3 - разрешено IRQ2, IRQ3, запрещено VIRQ
2 - разрешено IRQ2, VIRQ, запрещено IRQ3
1 - разрешено IRQ3, VIRQ, запрещено IRQ2
0 - разрешено всё (IRQ2, IRQ3, VIRQ)
¤
или один бит приоритета запрещает одно какое-то прерывание, их как раз три.
Но это полностью ломает всю совместимость.
¤
[где не проверяется bNoPriority]
прерывание не маскируется битом 7, поэтому от него не зависит.
[А в случаях с прерыванием от таймера и прерыванием от внешнего устройства (priority 6) и VIRQ (priority 7) нужно смотреть на приоритет]
и если случилось так, что одновременно пришёл запрос на прерывание IRQ2 и VIRQ, то смотрим таблицу приоритетов, и видим, что у VIRQ приоритет ниже (т.е. чем больше номер в таблице, тем ниже приоритет, не знаю кто это придумал, но это так).
Поэтому сперва обработается запрос на прерывание IRQ2, а затем, сразу после него VIRQ (если ничего не случится при обработке IRQ2).
И вообще в этой таблице указан арбитраж, как разруливается конфликт, когда приходит несколько прерываний одновременно. А не то, что делается в зависимости от приоритета проца.
¤
[А если у проца приоритет 5]
У проца нет приоритета 5, у него приоритет или есть или нет.
- ? gid
- 05.07.2018 15:06
Не вешали, а были недостаточно проинформированы.
¤
Про прерывания точно и достоверно написано там (таблица на стр. 55)
http://u.zeptobars.ru/yuot/1801/VM1/DOC/1801vm1-17-Jun-2018.pdf
Также там написано что их маскирует. Правда приоритеты там расставлены с аппаратной точки зрения, а не логической, в которой 8 или 7 уровней.
¤
У меня, bNoPriority - инверсный бит 7 PSW, который означает, что данное прерывание может быть им замаскировано, но вот если прямо сейчас не замаскировано, то условие if истинно и тело if выполняется.
¤
Кстати, насчёт ВМ2 я ошибся, там тоже приоритет всего один бит 7.
¤
[если делать полноценные 7 уровней]
то не сравнивают приоритет PSW прерывания, чтобы узнать, прерываться на него или нет, а маскируют саму возможность возникновения прерывания. Т.е. нужно делать несколько разных входов например векторных прерываний и в зависимости от текущего уровня приоритета, разрешать или нет прерывания на одних входах и не разрешать на других.
¤
Например в ВМ3, в котором всё таки уже 3 бита под прерывания задействовано, они маскируют прерывания на линиях IRQ3-IRQ0
И вообще в ВМ3 больше источников прерываний и поэтому там просто одним битом не обойтись.
- ? gid
- 05.07.2018 11:59
Да. Вот так это так. Видимо пилили, но не допилили, и оставили для совместимости с остальными PDP-11 совместимыми процами. чтобы софт не переписывать. Биты 5 и 6 просто висят в воздухе, они доступны для чтения и записи, но совершенно ни на что не влияют.
Это только у 1801ВМ1. У ВМ2 и ВМ3 уже нормальный 8-ми уровневый приоритет.
- ? gid
- 02.07.2018 19:13
Забыл про CIS написать.
Обычно, CIS - это заказные инструкции. Применяются в заказных специфических процессорах, которые делались ограниченными сериями. И заказчик обычно не раскрывает данных об этих инструкциях, что это и зачем они нужны. К тому же, одни и те же опкоды в разных изделиях могли иметь разные функции.
Откуда взялись те инструкции CIS, уже не помню, но кажется из какой-то документации на какие-то процессоры LSI.
- ? gid
- 02.07.2018 15:22
описание
170003 LDUB
170004 LDSC
170005 STA0
170006 STB0
170007 STQ0
нашлось там: http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp11/1170/EK-FP11C-MM-01_FP11C_May76.pdf
Только там всё начёркано ручкой и ссылаются на FP-11B (это PDP-11/45) но его описания что-то не нашлось.
- ? gid
- 02.07.2018 14:52
Описание инструкций CSM TSTSET WRTLCK можно найти в книге http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp11/1193/EK-KDJ1E-UG-001_KDJ11-E_CPU_Module_Users_Guide_Jan91.pdf
CSM - call to supervisor mode
TSTSET - Test and set (low bit interlocker)
WRTLCK - write interlocker.
¤
А с инструкциями 17000х труднее, это какие-то инструкции управления самим FPU и то ли они какие-то специфичные, только для каких-то конкретных реализаций FPU, то ли очень секретные, но для них, ничего, кроме мнемоники найти не удаётся.
¤
Однако я просто не осилил чтение всех хандбуков и гуидов для всех пдп процессоров по ссылке http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/ , может, где-то там что-то и найдётся.
- ? gid
- 14.06.2018 19:03
Если вообще никак ни в WaveOut, ни в DirectSound ничего не отправляется, то естественно, звук никак не влияет на синхронизацию.
¤
[Я просто не пойму какие таймер вносит задержки, если поставить точное время?]
Я тоже не пойму, что вносит задержки. Но если поставить точное время, то когда слушаешь AYшную музыку запинок больше, чем если сделать время немного меньше.
Я потому и по-всякому долго экспериментировал с этими таймерами - меня очень раздражали эти запинки, когда слушаешь музыку.
Победить их я так и не смог, поэтому забил на это дело, пока кто-нибудь не подскажет, как улучшить ситуацию.
¤
[И почему сделан периодический таймер]
Потому что выставил один раз период, и всё, он сам срабатывает. А в однократном, надо каждый раз выставлять период, чтобы запустить таймер - лишняя операция.
¤
[там точно не получится отсчитать]
Windows и точно - понятия не совместимые. Как ни извращайся, точно всё равно не получится, так что если будет хоть примерно точно, уже хорошо. Тем более, что у этого WaitableTimera минимальный квант времени 1мс. И погрешность такая же.
- ? gid
- 14.06.2018 16:13
Не точнее, а просто менее затратный. Синхронизация то всё равно по звуку делается. Звуковые буферы отправляются на звучание строго за заданные моменты времени.
А в этом цикле все эти таймеры нужны на случай, если в системе не будет вообще никакого звукового железа.
-
«
1 | ... | 9 | 10 | 11 | ... | 15 | »
?