-
- ? gid
- 07.05.2020 12:51
Почему без вариантов? 177550-177556 тоже замечательно подходит. Тут дело в том, как дешифратор адреса делать, чтобы как можно меньше корпусов занимал, если 177720 подходит лучше - то его использовать, а если непринципиально - то лучше использовать узкий диапазон свободных адресов, а широкий - оставить на перспективу
Досадно видеть, в моём предыдущем посте, я всё время мимо нужных цифр промахивался, там вообще всё неправильно, но надеюсь, общий смысл понятен. Там начальное число правильное, а конечное - обычно нет. А ведь когда писал - ничего не замечал такого.
- ? gid
- 07.05.2020 10:07
Забыл дописать, а если нули в ПЗУ с 177532, то там как раз получаются свободны диапазоны
177540-177546
177550-177556
177560-177556 - ИРПС
И если б не контрольное значение в 177566 для того чтобы КС ПЗУ была 0, то и 177570-177566 полноценно было бы можно использовать
И ещё есть огрызки 177534-177536 и 177570-177564, куда можно воткнуть какие либо одиночные регистры или пары рег.состояния-рег.данных
- ? gid
- 07.05.2020 09:58
Чота как обычно перепутал PS,PC, должно быть так: PC<-(177674), PS<-(177676)
А эти адреса полностью свободны потому что, там располагаются сугубо DECовские устройства, которые у нас не применяются, и на ДВК там тоже ничего нету.
Ну любители засовывать туда ОЗУ выкрутились. См. режимы контроллера СМК, там как раз ОЗУ полностью до 177600 достаёт, и все ячейки, которые приходятся на адреса портов и регистров просто должны быть предварительно обнулены. И всё работает как обычно.
А если рассчитывать на совместимость с ПЗУ бейсика, то тогда единственная возможность воткнуть свои регистры будет в адреса 177720-177776, у нас ведь не намечается мультипроцессорности вообще.
там полностью свободно 177720-177736, никто не заявлял вроде как об их использовании.
177740-177756 потенциально занято регистрами HDD контроллеров СМК
177760-177776 потенциально занято устройством Мультикарта от ММ, правда для этого устройства софт так и не написан, и использование его на БК под большим сомнением.
- ? gid
- 06.05.2020 19:10
177674,177676 - пультовый стек, аппаратные адреса 1801ВМ1. Если туда будет можно делать запись, то при нажатии кнопки СТОП и выполнении команды HALT будет происходить прерывание по адресу 160002 (опять же аппаратно для 1801ВМ1). И будут самые разнообразные глюки.
Если эти регистры будут доступны только по чтению, то пультовые команды START и STEP (которые есть и работают, хоть и не используются в повседневной жизни) будут вызывать глюки, доставая из пультового стека значения PS<-(177674), PC<-(177676), и отправляя БКшку в увлекательные путешествия.
Как бы ни хотелось, но лучше выбрать другие адреса, иначе мы лишимся псевдопультового режима, реализуемого с помощью контроллеров АльтПро.
Предлагаю адреса 177550-177556
или любые из диапазона 177520-177556 или 177140-177506.
- ? gid
- 03.05.2020 20:06
Никак не реализовано. Всё выполняется покомандно. Но в отладчике можно выполнить jsr/emt/iot и т.п. как одну команду с помощью неявной точки останова. Там для каждой команды рассчитывается предполагаемый следующий адрес, он задаётся как точка останова и запускается выполнение. Поэтому, если внутри подпрограммы или прерывания адрес возврата модифицируется, то отладчик теряет точку останова и прога начинает работать уже сама по себе.
[JSR R1,PRINT + .ASCII так не сработает]
у меня и не срабатывает, надо или вручную ставить точку останова, или заходить внутрь подпрограммы и выполнять команду "Шаг с выходом". Там как раз анализируются RTS/RTI/RTT и после них выполнение останавливается. Но у меня нам серьёзный недостаток - не учитывается вложенность заходов в подпрограммы и выходов из них, поэтому останов будет после первой встреченной команды, а не после той, которая нужна.
Или ставить курсор на нужное место и выполнять команду "Шаг до курсора".
¤
Собственно учёт вложенности вызовов, чтобы останавливаться на нужном, а не на всех подряд реализовать я не смог, т.к. постоянно в программировании на БК применяются такие методы, как заход в emt/trap и выход из них по rts pc, а не rti, или заход в jsr pc и выход из него по mov (sp)+,pc, или ещё по всякому, моv/add/sub nnn,pc, и даже выход из jsr по rtt, и ещё применение rti/rts для перехода в нужное место без всяких jsrов
А ещё бывает jsrов больше, чем rtsов, потому что на каком-то этапе, делается tst (sp)+ и перескок через уровень вложенности. Пример - банальный драйвер магнитофона БК10.
Я не смог придумать правильный алгоритм, который бы учитывал вот это всё и не ломался.
- ? gid
- 28.04.2020 17:59
Чё то я фигню сказал, картинку же показывает, значит генератор генерирует частоту.
- ? gid
- 28.04.2020 15:52
А на выходах с памяти 4В наверно от того, что не работает регенерация памяти, что опять же может быть из-за неработающего кварца, ну или его обвязки.
- ? gid
- 28.04.2020 15:49
Прога МСТД 1) компьютерозависимая, т.е. для БК10, БК11 и БК11М у каждого своя и к другой БКшке не подходит. 2) без БОС ПЗУ не работает, т.к. на экран буквы выводит системными вызовами из него.
Блок нагрузок не нужен, если не проверяется конкретно порт 177714, а без него прожить можно.
ПЗУ РЕ2-201 если не убивалась намеренно, скорее всего живая.
БК11 без второй ПЗУ РЕ2-202 пытается запуститься и не может, начинает пищать пищалкой.
Так что дело может быть и не в ПЗУ, а в неработающем кварце или не работающем проце.
- ? gid
- 28.04.2020 09:57
Думаю, что телепатограмму принял правильно, поэтому отвечаю.
Там написано, что не самые свежие исходники внутри образов, которые в архиве, а в самом архиве - как раз свежайшие на момент создания архива. Образы в общем-то для того, чтобы не бегать и не искать муз.модули, на которых правильность исходников проверять надо, и только.
тем не менее обновил архив, и там сейчас наисвежайшие исходники.
- ? gid
- 19.04.2020 22:49
Блин, я-то думал, зачем это я там делал приведения к uint16 результатов операции двух uint16. И убрал их. Вот зачем оказывается.
Верну всё обратно. Это такая фича форматированного вывода, о которой надо просто помнить, чтобы таких казусов не было.
- ? gid
- 16.04.2020 10:30
Может, ПЗУ 119 - это какой-то предсерийный прототип ПЗУ для БК11, может это редкость редкая, которую нужно сдампить для истории.
Для начала нужно заменить неисправные микросхемы ОЗУ. Как найти нужные, почитайте на zx-pk.ru в профильных темах, там несколько их по попыткам запуска.
Без исправного ОЗУ БК тоже не запускается, т.к. в ОЗУ - стек.
- ? gid
- 16.04.2020 10:04
Ну вот и выложить оцифровку, и кто-нибудь заберёт её в какой-нибудь свой музей или архив-хламник, чтобы хранилось там.
Люди старались, программировали, потом пользовались, пока это не стало ненужным. и отправлять всё это в небытиё, жалко же.
- ? gid
- 15.04.2020 21:25
Если эти программы не являются какой-либо закрытой интеллектуальной собственностью, но могут иметь какую-либо историческую ценность, то лучше их оцифровать, при наличии времени на это.
- ? gid
- 15.04.2020 17:58
ПЗУ 119 - это не БКшная, про ПЗУ с таким номером вообще нет никаких данных.
ПЗУ 201 - это первая ПЗУ БОС БК11, и она должна быть установлена в DS17, но этого не достаточно для запуска, нужно иметь вторую ПЗУ под номером 202, она должна быть в DS18
- ? gid
- 09.04.2020 09:59
И в прошлых версиях использовался тот же метод. Разве что в сильно прошлых версиях текстура формировалась удвоенного размера 1024х512, может поэтому сглаживания было не заметно.
Я как раз использую CopyImage для того, чтобы изменить размер текстуры 512х256 в 1024х768.
Мне неохота использовать какие-то громоздкие способы, когда это можно сделать одной командой в одной строке.
Я таки лучше опцию сделаю. И ебитесь потом сами с приведением скриншота к нужному размеру.
- ? gid
- 07.04.2020 10:42
У функции CopyImage (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-copyimage) нет параметров, влияющих на сглаживание при масштабировании. Поэтому она при изменении картинки с 512х256 в 1024х768 применяет своё сглаживание.
¤
Могу сделать опцию, которая будет определять, выдавать ли скриншоты в оригинальном размере, или с нормальными пропорциями 4:3 (но со сглаживанием)
- ? gid
- 19.03.2020 12:59
Это зависит от того, какой режим используется для доступа к памяти А16М/СМК.
если 160, 160 то там сегменты памяти подключаются нелинейно, если 120, 20 - то линейно.
Особенно хорошо это заметно на таблице режимов контроллера А16М, там всего 4 сегмента по 4Кб. В режимах 160,60 они подключаются как 2,3,0,1, в режиме 120 - как 0,1,2,3. А в окне просмотра страниц отображается просто линейное содержимое памяти, кусками по 16Кб, без учёта режимов, поэтому так и получается.
- ? gid
- 16.03.2020 07:48
[Потом можно растянуть командой]
Э-э-э... можно тупо добавить это в командную строку в инифайле и будет то же самое сразу, без двойных действий.
заменяешь "-vf scale=1024:768" на "-vf scale=1024x768:flags=neighbor -crf 10" разве это не есть моё предложение "Либо... добавьте какую-нибудь фильтрацию, убирающую мыло"?
- ? gid
- 04.03.2020 11:16
[от мыла в OpenGL спасает параметр фильтрации текстур GL_NEAREST. Тогда будут прямоугольники.]
Это не мыло, а сглаживание при увеличении текстуры 512Х256 в картинку побольше. Это можно выключить, но тогда придут другие люди, и начнут ныть по поводу того, что пиксели очень большие, лесенки глаза режут, неужели нельзя включить сглаживание?
¤
[Главное, видео грабится мыльное, даже если вывод на экран удалось настроить не мыльный]
Уберите из параметров командной строки ffmpegа параметры -vf scale=1024:768 и мыло исчезнет. Правда и картинка станет 512Х256.
Либо читайте доки на ffmpeg и добавьте какую-нибудь фильтрацию, убирающую мыло.
Напомню, что все параметры командной строки находятся в ини файле и любой может их редактировать как душе угодно. Сделайте себе сами немыльное видео.
¤
[на счёт грабежа видео вопрос: почему бы не привязывать его к кадровому импульсу?]
Как? ffmpeg не умеет ни к чему привязываться, он просто берёт кадры, которые скармливаются ему по мере готовности, и всё. К чему их привязывать, решает пользователь с помощью параметров командной строки.
- ? gid
- 03.03.2020 15:12
Не тот контекст что надо выбирается, и рисует в куда-то непонятно куда.
У меня тоже бывало такое, когда я в GetDC передавал не тот хендл, который был нужен. Например, хендл окна, которое было родителем окна, в которое рисовать надо, в результате ничего не рисовалось.
- ? gid
- 27.02.2020 19:28
И там в общем-то неправильно, бит надо устанавливать в выходной регистр, а не во входной, но поскольку этот функционал всё равно в БК не используется нигде и никак, я его просто вывел в выходной регистр, чтобы в эмуляторе видеть как процессор входит и выходит в пультовые прерывания.
- ? gid
- 27.02.2020 19:26
А это я пересмотрел логику работы с этим битом, чтобы лишних действий не делать и в соответствии с более точным описанием из пдфки Vslavа. Этот бит - один из элементов организации пультового режима внешними устройствами, по сути самый главный - он обозначает, что проц перешёл в пультовый режим. Используется в контроллере динамической памяти 1801ВП1-030, т.е. не в БК. Описание бита в пдфке, начиная со стр.75, пункты 8.3, 8.4
- ? gid
- 26.02.2020 23:15
Но ведь это не аппаратный горизонтальный скролл, это программный эффект. А речь-то шла о именно об аппаратном, когда на экране ничего не перерисовывается, а задаётся смещение первой левой точки экрана значением в регистре горизонтального скроллинга. Подобно регистру вертикального скроллинга.
¤
И на вопрос [Manwe - 14.02.2020 22:41] так никто и не смог ответить. А я по некоторым причинам пока не могу реальную БКшку включить и проверить, что там и как.
- ? gid
- 26.02.2020 15:59
1) Бит 7 PSW маскирует все векторные прерывания (VIRQ), какие бы адреса у них ни были, а так же IRQ2 (вектор 100) IRQ3 (вектор 270). И всё, больше ничего не маскирует. Прерывания 4/10/14/24/30/34 - программные, возникают на уровне выполнения микрокода процессора и ничем не маскируются, просто имеют приоритеты друг над другом, если вдруг они возникнут одновременно. Всё это описано в пдфке Vslava.
2) Про эту магическую константу Vslav где-то писал в теме цифровой археологии на zx-pk, это некий счётчик, значение которого подобрано таким, что когда он переходит через 0, означает, что надо начинать вывод первой ТВ строки экрана, или что-то типа того. Счёт ТВ строк - только в мл. байте, т.е. 0330 - нулевая ТВ строка, 0331 - первая и т.д. 0327 - 255.-я
бит 9: 1 - режим полного экрана, 0 - режим 1/4 экрана (расширенной памяти)
Всё это описано во всех трёх книжках по всем трём БКшкам "Руководство системного программиста", а так же ещё в куче мест, где описан регистр 177664
прокрутка экрана вверх:
1$: inc @#177664 ; можно прибавлять число 1..127 чем больше, тем быстрее, тип значения - знаковое байтовое (char)
bis #1000, @#177664 ; устанавливаем бит
br 1$
бит 9 надо устанавливать обратно, т.к. при словной операции, при возникновении переноса старший байт искажается, и бит 9 обнуляется, а при байтовой операции (incb) старший байт тупо теряется.
прокрутка экрана вниз:
1$: dec @#177664 ; можно вычитать число 1..127 чем больше, тем быстрее
bis #1000, @#177664
br 1$
- ? gid
- 24.02.2020 09:21
Оказывается, если директории Screenshots нету, ffmpeg не умеет её создавать, чтобы туда видео сохранять, поэтому он аварийно завершается. У меня не такой шустрый компьютер, поэтому я вижу, как появляется консоль ффмпега, но немного думает и закрывается.
Учту, и в следующем релизе будет пустая директория Screenshots.
- ? gid
- 23.02.2020 21:02
экран замыленный в 1024x768 потому что делается увеличение с 512х256 в 1024x768 средствами OpenGL/Direct2D/Direct3D (смотря что используется в качестве рендера и смотря какие настройки в драйверах) VFW при увеличении не использует никаких замыливаний, но он какой-то дёрганный в Win8/Win10, так что им пользоваться неприятно
¤
программа виснет, потому что ffmpeg'у заданы некорректные параметры командной строки и он сразу завершается из-за чего эмулятор заклинивает так, что его можно прибить только из диспетчера задач, как и описано в заметке к выпуску на сайте.
Эта проблема нерешаема из-за такой вот реализации микрософтом перенаправления потоков ввода-вывода в оконной подсистеме виндовс. В консольной подсистеме всё гораздо лучше, но эмулятор не консольный.
¤
Когда ffmpeg начинает захват, то появляется консольное окошко, в котором в Win10 отображается процесс захвата, а в Win7 - нет, там пустое консольное окно из-за криворукости микрософтовских индусов которые недопилили conhost, но выпилили WinXPшную консоль, и там если перехватить ввод консоли, вывод начинает делаться не в консоль, а в никуда.
- ? gid
- 23.02.2020 12:27
если число задавать через запятую, то ffmpeg считает, что параметры командной строки заданы неверно и аварийно завершается, из-за чего эмулятор заклинивает так, что его можно прибить только из диспетчера задач, как и описано в заметке к выпуску на сайте.
Эта проблема нерешаема из-за такой вот реализации микрософтом перенаправления потоков ввода-вывода в оконной подсистеме виндовс. В консольной подсистеме всё гораздо лучше, но эмулятор не консольный.
- ? gid
- 23.02.2020 12:20
48828 кадров в секунду не многовато будет?
Сейчас проверил, задал фреймрейт в ини файле 49.125, создался видео файл, в медиаинфо которого так и написано, что FPS 49.125
потом задал 49.8525, создался видео файл, в медиаинфо которого написано, что FPS 49.853 т.е. ffmpeg округляет до тысячных.
- ? gid
- 23.02.2020 09:11
ffmpeg такая штука, что не высчитывает фреймрейт, а использует тот, что ему задают в параметрах. И дробные значения запросто поддерживает. Я выставлял фреймрейт 48,25 и 49,5 и получал видеофайл, в свойствах которого был задан именно такой фреймрейт. В первом случае видео было медленнее звука, во втором - звук всё таки начинал отставать от видео. И я не знаю, как можно рассчитать точное значение фреймрейта.
¤
Чтобы нивелировать просадки ffmpeg должен уметь захватывать raw данные звука, т.е. передавать ему массив данных звукового буфера, как я сейчас передаю ему raw данные видео - покадровое содержимое буфера кадра. И сам должен уметь считать фреймрейт. Но он этого делать в принципе не умеет. Поэтому я не знаю, как получить синхронное видео со звуком.
- ? gid
- 22.02.2020 22:57
С тем, что надо читать заметки к выпуску на сайте. Цитирую:
"Захваченное видео сохраняется в директории Screenshots. Так же туда отдельным файлом сохраняется и звук. Они рассинхронизированы, и мне не удалось их синхронизировать.
¤
Параметры запуска ffmpeg.exe находятся в файле bk.ini в секции [Main] в ключе FFMPEG Cmd Line. Можете сами их менять как хотите, нельзя только менять или удалять параметр "-s %dx%d" - это подставляемое разрешение буфера захватываемого кадра."
¤
Побеждать надо так: Редактируйте в bk.ini параметр FFMPEG Cmd Line, а конкретно: значение ключа -framerate, там я поставил 49, а нужно долго и упорно подбирать какое-то дробное число - 49,5 или с точностью до тысячных или десятитысячных.
¤
Я вообще считаю, что это изначально глупая и мёртворождённая затея. Возьмите лучше прогу OBS Studio https://obsproject.com/ru/download
и с её помощью грабьте видео с окна программы.
- ? gid
- 20.02.2020 15:27
2 Adam Bazaroff / Excess team: Я думал об этом, но решил, что это слишком ресурсозатратно, я не хочу, чтобы хобби превращалось в работу, отнимающую всё время, не остающееся на работу для зарабатывания денег и собственно свободное время для отдыха от всего. Если кто-нибудь захочет, может заняться переводом страничек сайта на английский, только сайт у меня не движковый, а просто набором страниц, так что надо будет делать тупо локализованное зеркало, и если кто-то захочет, может заняться локализацией проекта, там достаточно перевести текст в файле ресурсов, и можно запихать в файл ресурсов сообщения об ошибках из файла BKErrMsgSys.cpp, и потом собирать дллки ресурсосодержащие дополнительными проектами в составе решения VS.
Ещё я руководствуюсь принципом взаимности. Если весь мир настаивает на том, чтоб я знал английский язык для того, чтобы читать то, что мне нужно, то и я в ответ считаю, что пусть весь мир учит русский язык, если ему хочется пользоваться моим эмулятором.
Полезно для саморазвития. Можете передать этот манифест англолюбам.
- ? gid
- 19.02.2020 11:27
Никак. Это не предусмотрено алгоритмами. Но если воспользоваться средствами инструмента "Карта памяти", то там можно сохранить содержимое страниц памяти, в том числе и экрана как цветную картинку 256х256 или как чёрно-белую 512х256, правда без палитр.
Либо просто уменьшить скриншот до 256х256 в любом просмотрщике картинок без сохранения пропорций и по возможности без интерполяции. Результат будет тот же, но уже с цветами палитр.
- ? gid
- 17.02.2020 19:35
Подумаю. Когда придумаю, как разделить обработку символьных клавиш как клавиш и как эмуляцию джойстика, тогда и что-нибудь сделаю.
А если разнести JoyVox на символьные клавиши и нумпад, то как играть вдвоём там, где нумпада нету? Проще уж оба джойстика на символьные клавиши повесить.
ASWD - направление, CV - это A,B или select, start? И куда вешать вторые две кнопки? На FG? Или они не нужны?
- ? gid
- 13.02.2020 13:23
Это запись в одну строку вот такой конструкции:
m_reg177660 &= ~mask, src &= mask;
m_reg177660 |= src;
¤
операции & и | коммутативны, т.е. не имеет значения порядок операндов, для классической записи r = a & b:
m_reg177660 = ~mask & m_reg177660; равнозначно m_reg177660 = m_reg177660 & ~mask;
¤
Не знаю, как там с точки зрения логики, но компилятор всё делает правильно, особенно с учётом архитектуры команд x86, там ведь промежуточные вычисления сохраняются в регистрах процессора, и только конечный результат уже записывается в ячейку памяти, где хранится значение m_reg177660.
¤
Я в настройках проекта включил генерацию ассемблерного листинга для релизных сборок, и иногда смотрю, чего там оптимизатор наоптимизировал. Интересно иногда получается, и непонятно.
- ? gid
- 10.02.2020 09:33
Биты 10 и 11 это как раз одно из средств для организации пультового режима. Оно работает, но так, что лучше уж этого вообще не было. Пользоваться этим очень неудобно.
Эти биты можно установить только в PSW вектора прерывания, т.е. когда входим вектор, его PSW применяется и биты 10 и 11 если они были заданы, устанавливаются в регистре PSW процессора. Всё. Больше нигде и никак. Но прочитать их нельзя, MFPS читает только мл. байт PSW, поэтому убедиться, что эти биты установлены, можно только опосредованно, по тому, что они маскируют прерывания.
Команды RTI, RTT тоже работают только с мл. байтом PSW, старший байт тупо обнуляют.
команда MTPS, изменяет только мл. байт PSW, но и ст. байт не трогает, т.е. эти биты изменить нельзя, но они и не сбрасываются, если были установлены.
Команды START, STEP тоже могут изменять биты 10,11 чтением PSW из стека, но стек у них только 177674,177676. Так что это тоже пультовые команды и в обычной жизни их использование приводит к прерыванию по вектору 4.
- ? gid
- 09.02.2020 14:52
У процессора есть всё, что надо для организации пультового режима, только сама аппаратная поддержка реализуется внешними средствами, из которых на БК только контроллеры АльтПро.
Каким образом и при каких условиях возникают системные прерывания подробно описано вот там https://github.com/1801BM1/cpu11/blob/master/vm1/doc/1801vm1.pdf на стр.55
¤
ПЗУ контроллера БК на 160000 никак не мешает, потому что из-за отсутствия ОЗУ по адресам 177674, 177676 до чтения вектора просто не доходит. А вот если бы там ОЗУ было, то тогда вместо ПЗУ контроллера тоже было бы или ПЗУ пультового режима, или ОЗУ, как в контроллерах АльтПро А16 и СМК и процедуры пультового режима в нём.
¤
Например, рассмотрим нажатие на клавишу СТОП.
* Нажатие на клавишу СТОП вызывает прерывание IRQ1, если в PSW не установлены биты 10 или 11, если установлены - прерывание не происходит, и ничего из дальнейшего тоже не происходит.
* IRQ1 по документу - Прерывание "аппаратного останова" и перехода в пультовой режим, вектор: 160002, а стек: 177674, 177676
* поскольку по адресам 177674, 177676 пусто, попытка записать PSW по адресу 177676 при выполнении процедуры входа в вектор, приводит к зависанию шины.
* Обработка зависания шины зависит от битов 10 и 11 в PSW, поскольку они у нас не установлены исходя из самого первого условия, то вектор: 4, а стек: SP, иначе вектор: 160002, а стек: 177674, 177676 - это пультовый режим и рассматривать его не будем.
Вот таким образом при нажатии кнопки СТОП получается прерывание по вектору 4.
То же самое с пультовыми прерываниями по векторам 160006, 160012. И-за отсутствия ОЗУ по адресам 177674, 177676 в конце концов происходит прерывание по вектору 4.
- ? gid
- 07.02.2020 16:47
невозможно. В эмуляторе не сделана эмуляция загрузки с магнитофона для БОС-11, поэтому эмуляция загрузки .bin в среду БОС-11 невозможна. Не сделана потому, что там довольно сложные манипуляции со страницами.
Используйте эмуляцию дисковода. либо грузите бин файлы как wav файлы через магнитофонный вход (там надо просто при чтении выбрать формат бин вместо Wav, и он будет воспроизводиться через спикер)
- ? gid
- 02.02.2020 17:26
да, и NaN в результате операции возникнуть не может, там будет или overflow или underflow
- ? gid
- 02.02.2020 17:24
Вообще без понятия. В коде эмулятора FPU NaN тождественно нулю, поэтом там вообще нет такого понятия как undefined variable. Реальных FPU я не видел и как там всё происходит очень приблизительно знаю только из быстрого чтения мануалов по горизонтали.
- ? gid
- 01.02.2020 10:53
Округление делается стандартно: +.5 и отбрасывание дробной части, т.е. к ближайшему целому вверх или вниз, смотря к чему ближе.
¤
В драйвере эмуляции FPU инструкций для RT-11, который я взял за основу эмуляции инструкций на С, бит 11 не использовался, т.е. там такая ситуация не возникала, там просто считалось - что неопределённая переменная приравнивается к нулю.
Но в мануалах пишут, что это прерывание возникает, если в качестве операнда FPU команд попадает число -0, или такое, где экспонента 0, а в любом из битов мантиссы и знака - хоть один не нулевой бит.
И когда в результате операции получается такое число - тоже возникает это прерывание.
В книжках пишут, что современные процы автоматически нормализуют денормализованный операнд.
Скорее всего, undefined variable - это QNAN, и надо его связывать с этим исключением.
- ? gid
- 25.01.2020 12:05
переживания программера такие: ТОРМОЗА-А-А-А! Никакое ПЗУ не спасёт такую плавучку. Тем более, что алгоритмы умножения и деления плавающих чисел есть куда оптимизировать по быстродействию, но результат будет тоже далеко не в пользу реализации арифметики с фиксированной точкой.
В общем, использовать функции плавучки из ПЗУ можно, если ASTEROIDS будет пошаговой игрой, не в реальном времени.
- ? gid
- 24.01.2020 20:02
Надо листать журналы "Персональный компьютер БК", "Вычислительная техника и ее применение". (Или ещё куда-нибудь - в ПК БК публиковались списки статей о БК, выходившие в разных других журналах.) Иногда энтузиасты-ковыряльщики машкода писали туда заметки по этой теме. Находили точки входа разных бейсиковских функций, определяли входные параметры и как их вызывать из своих подпрограмм. Составляли таблицы всякие.
А в современных реалиях как-то собирать инфу и обобщать её никому не приходило в голову. Если займётесь этим - будете первым.
- ? gid
- 21.01.2020 10:04
В этом образе http://gid.pdp-11.ru/f/lifegame.rar есть документация на MИKPO#11.03Б (файл /MICRO/MICRO11.VXT)
А так, действительно, документации в интернете почему-то нет.
- ? gid
- 16.01.2020 18:33
1. В микрокоде ВМ1 установка признаков операнда MFPS обрабатывается почти так же, как и у команды MOVB
2. У меня там по алгоритмам дальше функция установки признаков требует байта, расширенного до слова, так же, как и в функции обработки MOVB, я не стал ничего отдельного изобретать, тем более, что и MFPS работает на шине данных с операндом как словная команда, а внутри, в микрокоде, обрабатывает операнд как байтовая команда, т.е. обрабатывает только младший байт слова PSW, заполняя старший байт знаковым битом младшего байта, а потом это слово записывает туда, куда по режимам адресации положено.
- ? gid
- 16.01.2020 11:50
и забыл сказать, новая версия выложена, пробуйте.
- ? gid
- 16.01.2020 11:49
Только им никто из предлагальщиков мне присоединиться к сообществу месседжерозависимых не пользуется.
- ? gid
- 16.01.2020 09:16
Ну, я не настаиваю, не хотите - не пишите. Есть же ещё и форумы.
А мне очень не нравится, что каким-то владельцам баз данных клиентов месседжера очень нужно знать мой номер телефона, чтобы иметь возможность узнать кто я такой, где нахожусь, отслеживать моё перемещение, и прочие мои действия. Причём без запросов в соответствующие органы, а просто с помощью анализа больших данных. Если бы они просили бы только почтовый ящик - вопросов бы не возникало, и я бы пользовался таким месседжером.
- ? gid
- 15.01.2020 21:53
после того, как сменился протокол ICQ и QIP Infium превратился в тыкву, я больше не пользуюсь вообще никакими мессенджерами.
Ибо ни официальный клиент ICQ, ни Скайп меня не устраивают, а альтернативных нету.
Телеграм мне тоже не нравится.
Если кому чего надо - пишите письма, емайл есть на сайте.
- ? gid
- 15.01.2020 16:52
А есть же просто дохренища программ, которые могут захватывать экран и делать видео из происходящего на экране, платные и бесплатные.
Я так и не смог с помощью ffmpega к видео сразу и звук цеплять, в интернете пишут, что в виндовс универсального способа нет в принципе. Все описанные способы - это какие-либо частные случаи, которые будут работать у одного, и не будут работать у другого. Поэтому сделал экспорт звука в отдельный wav файл. И получил дикий рассинхрон, т.к. никак не могу подобрать нужное значение framerate для видео, генерируемого ffmpegом. Поэтому всю командную строку с параметрами вынес в ini файл. Мучайтесь сами с подбором частоты кадров, когда выложу новую версию.
Ещё есть непобедимый косяк - если закрыть вручную консоль ffmpega или задать ему неправильные параметры, так что он сам после запуска сразу завершится, то эмулятор зависнет намертво, и прибить его можно только из диспетчера задач.
Потому что, как пишут в интернете, в виндовс в принципе невозможно, от дочернего процесса получить сообщение родительскому процессу, что он завершается или завис, из-за чего, когда на одном конце асинхронного pipe пропадает получатель, полностью блокируется вся деятельность передатчика, цикл обмена сообщениями блокируется и всё, только прибивание из диспетчера задач.
Так что новшество получается сомнительное и ненадёжное.
- ? gid
- 13.01.2020 19:59
Я не смог найти схему клавиатуры, хотя, мне кажется, что когда-то где-то я её видел. Поэтому, не могу сказать, ни зачем туда +5В заводится (что-то там планировали, то ли звук с динамиками, то ли ещё что-то, но не сделали, а разводка осталась), ни на что оно может повлиять, если перепутать колодки, теоретически ничего не должно было случиться, но если перестало работать как надо, то пробило входы X/Y у ВП1-14.
D1 - это делать прерывание IRQ1 при нажатии клавиши СТОП
D2 - не помню, как-то связано с пробелом и кнопкой шифт, чтобы пробел всегда как пробел работал, независимо от кнопки шифт.
D3 - переключатель загл/стр
В них просто нечему ломаться, если им на вход +5В попадёт.
-
«
1 | ... | 5 | 6 | 7 | ... | 15 | »
?