-
- ? gid
- 14.06.2018 14:09
Я от QueryPerformanceCounter давно отказался. Как раз из-за того, что там считать много надо, а толку нет.
¤
А с длиной фрейма я время от времени играю. Он у меня то 40 мс, то 20 мс. В разных версиях сборки.
- ? gid
- 09.06.2018 12:42
блокировка 60 и 274 вектора, это MOV #100,@#177660
а MOV #100,@#177662 на БК10 вызовет прерывание по вектору 4
¤
А точно, есть глюки. Нужно было сразу сказать - в цветном режиме. Я то цветной режим редко использую, т.к. в нём 64 символа в строке нечитаемы. А в ЧБ режиме ничего такого не видно, особенно когда просто текст на экране.
¤
Ща всё исправлю.
- ? gid
- 09.06.2018 09:58
[При работе оператора «RESET» код 5(8) почему-то сбрасывается палитра на 15ую(БК0011М)]
Заметили старый-старый косяк. там один и тот же код используется и для начальной инициализации, и для команды RESET. поэтому и поведение неправильное.
Будет исправлено в следующем обновлении.
¤
[но если в тексте программы приметить такой способ]
Тут непонятно.
MOV #100,@#177662 задаёт нулевую палитру, и разрешает прерывания по вектору 100, при ресете палитра по любому устанавливалась в 15, так что должна срываться.
¤
[как то странно ведет себя рендеринг экрана]
Я применил новый, немного сомнительный, способ синхронизации через блокировки, может поэтому быть такое на некоторых системах.
Нужно больше информации. Какая видеокарта? Проц/платформа если видео - встройка? ОС? И каким рендером пользуетесь?
У меня на платформах с процом AMD Phenom-II x4 955 / видео нвидия 8800GT / виндовс 7 и на AMD FX8350 / видео нвидия 570GTX / виндовс 10 все 5 рендеров (OpenGL, VFW (DrawDIB), Direct2D (для всех, кроме винХП), Direct3D9 (только для винХП), Direct3D11 (для всех, кроме винХП)) ведут себя как обычно, ровно и чётко.
Разве что VFW (DrawDIB) в вин10 какой-то дёрганный, как будто рывками выводит, может пытается под частоту монитора подстроиться, он же для вывода видео предназначен. Но это мирософтовцы чё-то сделали, в вин8 вообще с этим рендером кошмар был.
И Direct2D, если осциллограф тоже Direct2D начинает чудить по непонятным причинам - ФПС плавно падает до 30 и потом назад к 50 возвращается.
- ? gid
- 28.05.2018 12:48
А у меня в эмуляторе лабиринт выводится плавно, скрололм снизу вверх.
А в игру GREEN, я вообще никогда играть не мог. Играл джойстиком и всё равно тупо не хватало скорости поворота пушки всех расстрелять, да ещё и не забывать уворачиваться от выстрелов.
Я вообще мало в какие игры мог по-нормальному играть на БК, поэтому обычно хакал игры, делал себе неуязвимость и только тогда мог хоть как-то играть.
- ? gid
- 28.05.2018 07:55
Та, что в комплекте с эмулятором. bolder.bin
У меня в эмуляторе с ней неустранимый косяк. Если быстро нажимать клавиши управления - то новая нажатая, всё ещё продолжает считаться старой нажатой. Вот это вот никак не побеждается.
И ещё, если очень-очень быстро нажать и отпустить клавишу - то в регистре 177660 флаг нажатия новой клавиши и код в 177662 появится, но если игра опрашивает бит 6 в 177716, и по нему определяет, нажато ли что-нибудь, то нажатие не отлавливается. Хотя я приделал фикс - бит 6 в 177716 держится целый фрейм, независимо от того, как быстро была отпущена нажатая клавиша. Болдердашу это не помогло.
- ? gid
- 25.05.2018 22:26
>>? Maxvel@ - 25.05.2018 17:30
Точно. Там вообще кошмар. В попытках угодить одному пользователю, чтобы чётко работала клавиатура в игре boulderdash, оказалось, что я поломал все алгоритмы эмуляции клавиатуры, но так и не добился никакого результата.
Буду исправлять.
- ? gid
- 25.05.2018 15:39
ctrl+j - это код клавиши ВВОД. Так не бывает, чтобы при нажатии ctrl+j == 012 глючило, а при нажатии ВВОД == 012 - нет.
Потому как с точки зрения как микросхемы 1801ВП1-014, так и с точки зрения эмулятора, это одно и то же.
Видимо, вот конкретно у вас, по нажатию клавиши ввод запускается нечто,ставящее раком вирт.БК.
¤
Продублировать на контекстовую клавишу можно, но это крайне неудобно. Я уже пробовал. Я начинаю путать их и всё время нажимаю сперва не туда, а потом не на ту, лат вместо рус и наоборот.
Так что лучше назначить действие на ту клавишу, которая теперь находится вместо левого WIN. Только я подозреваю, что каждый производитель лепит туда что-то своё. И нужно составить список кодов таких клавиш от разных производителей.
- ? gid
- 25.05.2018 10:15
Вы не первый жалуетесь на потерю фокуса. НО! У меня фокус не теряется, что бы я ни делал, какие бы кнопки не нажимал (в разумных пределах). Может есть какие-то комбинации клавиш, которые мне в голову не приходит нажимать?
Я тупо не могу повторить ситуацию у себя.
Не теряется самопроизвольно фокус ни в полноэкранном режиме, ни в оконном. Т.е. в оконном режиме фокус естественным образом теряется, если ткнуться мышкой в тулбар или в какие-нибудь дополнительные окошки, потом нужно обратно ткнуться мышкой в экран, чтобы вернуть фокус, это естественная фича виндового графического интерфейса.
- ? gid
- 24.05.2018 19:38
нет, по просьбам трудящихся, я начал сохранять старые версии только начиная с 3.7.1409.3828.
До этого, мне это делать даже в голову не приходило, потому что я практически ничего не выкидывал из исходников. Наоборот, они всё распухают и распухают. Всё, кроме улучшенного вывода звука и рендера экрана так и тащится со времён, когда эмулятором ещё Калмыков занимался.
Сейчас эмулятор предлагает на выбор 4 способа вывода на экран:
1) OpenGL - Универсальный, хорошо работает везде, если видеокарта позволяет, и плохо - если не позволяет.
2) VFW (DibDraw) - Хорошо работает под ХР и Вин7. Иногда дёргается на Вин8, Вин10, а иногда и не дёргается. Поскольку алгоритм один, то зависит это от драйверов наверное.
3) Direct2D - не работает на ХР по причине отсутствия, работает на Вин7 и выше. С недавнего времени начал глючить заторможенностью. С чем связано - я не знаю. Заметил после того, как я начал пытаться применить свойства масштабирования рабочего стола к UI эмулятора, но до масштабирования экрана ещё не дошло, а работать хорошо уже перестало.
4) Direct3D (9 для XP, 11 для более новых винд) под ХР глючноват, в редких случаях даже приводит к краху, но понять причины этого я не смог, в отладочном режиме всё стабильно, просто изредка очень тормозно, потому что я не нашёл в инете нормальных примеров, и сделал его по тем, что нашёл, поэтому получилось, что получилось. D3D11 работает гораздо лучше, не глючит, но тоже сделан по примитивным примерам, найденным в сети.
¤
DirectSound я выкинул потому что он слишком сложен, медленный и давал большую задержку между происходящим на экране и звучащим в колонках. А уменьшаешь буфер - становился очень прожорливым к ресурсам. Его исходники можно посмотреть в оригинальных исходниках эмулятора Калмыкова.
- ? gid
- 23.05.2018 21:50
Не проще. Условия неконстанты и зависят от битов PSW и от приоритета выставленного прерывания, а условие case - всегда константа. В общем, я не смог. Я даже сам это придумать не смог. а взял как есть из BKBTL этот кусок.
- ? gid
- 23.05.2018 21:41
Конечно не может. Как их заэмулировать? Что они должны получать и куда отправлять? Я без понятия.
¤
Мне, чтобы эти несчастные 4 регистра добавить, пришлось половину эмулятора с нуля переписать, с принципиально другой схемой эмуляции устройств. У меня теперь две совершенно разных ветки эмулятора параллельно ведётся. Теперь есть куда добавлять эти 4 регистра. Осталось придумать, как их в реальные/виртуальные ком порты перенаправить, и одновременно с этим выводить в нечто, подобное консоли, которое как-то к эмулятору прикрутить, а ещё конфигуратор этих несчастных 4х регистров и векторов прерываний, их же несколько диапазонов, надо всё как надо эмуляровать.
- ? gid
- 23.05.2018 14:46
Нашёл я ошибку. Когда я перелопачивал диспетчер прерываний, я там неправильную последовательность условий задал. Из-за чего всё глючить начало.
- ? gid
- 23.05.2018 12:23
Есть такая игра, space128, находится много где (например в архиве свиблово в образе 03-93.img). И вот, начиная с билда 3.9.1803.6475 в эмуляторе эта игра глючит - на экране всякое постороннее вылазит, фризы начинаются, т.к. счётчики получают отрицательные значения, т.е. сильно большие числа.
Раз эта игра глючит, то и всё остальное подобным образом глючит, просто пока не заметил никто.
Где ошибка вкралась, я пока так и не разобрался. Изменения между билдами 3.9.1803.6475 и 3.9.1803.6289 очень значительные. хрен разберёшься сходу.
- ? gid
- 23.05.2018 10:12
3.9.1803.6289 тоже, а уже после, когда я с подачи Дмитрия (топикстартера) заменил PSW массивом булевых переменных - перестало. Если не разберусь в чём дело, верну всё обратно.
- ? gid
- 22.05.2018 21:11
У меня вывод звука на звуковое устройство 1:1 как в BKBTL, я именно оттуда его и взял, изменения минимальны. У меня звуковые буферы формируются по-своему, так как мне необходимо.
BKBTL у Никиты Зимина проект вторичный, основной у него UKNCBTL, которому он уделяет больше времени, AY8910 он прикрутил совсем недавно, он говорил, что как-то работает, но вот насколько так как надо, он не знает, просил людей потестить, но никто не отозвался.
А мне пока своим эмулятором времени не хватает заниматься.
Хотя очень хочется узнать причину феерических глюков в space128, когда такое появилось и почему я в остальных программах такого не замечал. При беглом осмотре я заметил, что там не всегда отлавливается переход через 0, т.е. какие-то проблемы с флагами PSW, и проявляется это случайно.
- ? gid
- 21.05.2018 20:46
Обратитесь к ММ через форум zx-pk, т.к. здесь он редкий гость.
Он такие переходники даже продавал когда-то, у него с хранения оставались запасы.
И схему такого переходника я где-то видел, давно когда-то, но где, уже не помню, может на том же zx-pk.
- ? gid
- 21.05.2018 16:33
[Не могу кстати их найти (оригинальный playpsg)]
там: http://pdp-11.ru/mybk/Emulators/Savelev/3.01/BK11-301.zip v1.0
и там: http://pdp-11.ru/mybk/Emulators/Savelev/5.0b/emu50b.rar v1.1
- ? gid
- 21.05.2018 10:06
[а каким чудом Вам удалось прикрутить AY8910?]
Что значит каким чудом?
Очень просто. Нашёл в интернете исходники, аж несколько реализаций, выбрал ту, код которой более понятен сходу, изучил, потом выбрал ту, которая наиболее качественно реализует функции и модифицировал под свои нужды. Как оно всё на реальном железе работает, я знаю, у меня это железо есть и свериться и уточнить нюансы можно, поэтому запрограммировать не проблема.
¤
[какбы это оформить в сугубо отдельный AY8910.DLL]
Зачем? У того же Бульбы есть универсальный плеер, который играет всё, кроме БКшного.
¤
[получается что мальчуки прокачивали бк0010 еще и 11-ым таймером?]
Не факт. Хоть это и возможно, даже несколькими способами, не каждый мог осилить даже простую навеску схемы таймера из БК11 на БК10. Проще всего было использовать БК11(М), там программы от БК10 при наличии монитора БК10, работают и не замечают подвоха, если не требуется ПЗУ бейсика.
- ? gid
- 15.05.2018 19:13
Я не знаю. Думаю, что без логического анализатора не обойтись. Посмотреть, сколько тактов CPU выполняется команда SOB из ПЗУ и вычислить.
- ? gid
- 15.05.2018 13:21
зато в 326й для дорожки байт беззнаковый, так что можно и 255 дорожек, было бы желание.
а вот сектор - знаковый, так что можно всего 127 секторов на дорожке.
а со сторонами в 326й обошлись жестоко, хоть это байт, но можно всего 2 стороны - 0 и 1. все остальные значения приведут к фантастическим глюкам.
- ? gid
- 08.05.2018 14:19
В сообщении (gid - 07.05.2018) оказывается я написал полную чушь. Ни слова правды. На самом деле всё ровно наоборот.
Должно быть так:
бит 6 бит 5
....0.....0 декремент счётчика происходит каждый 128-й такт
....0.....1 декремент счётчика происходит каждый 2048-й такт
....1.....0 декремент счётчика происходит каждый 512-й такт
....1.....1 декремент счётчика происходит каждый 8192-й такт
¤
И вообще, у меня алгоритм не совсем правильный, и надо бы его будет переписать как нибудь.
- ? gid
- 08.05.2018 09:32
Во-во, блин. И самое поганое - никто не хочет написать нормальный эмулятор.
- ? gid
- 07.05.2018 22:15
ошибся.
....1.....0 декремент счётчика происходит каждый 32-й такт
- ? gid
- 07.05.2018 22:13
Естественно верны, за исключением утверждения про частоту. А в эмуляторе - эквивалентная схема, которую я позаимствовал у Patrona, она не достоверно точная, но для такой эмуляции, какая у меня - подходит вполне. У Patrona есть и достоверно точный алгоритм, вплоть до эмуляции глюка с пропуском первого цикла счёта, но я никак не могу придумать, как мне прицепить его модель процессора к своему эмулятору, загвоздка как обычно оказалась в ВП1-037.
¤
К тому же, если приглядеться, как работает алгоритм, то можно увидеть, что при установке значений в биты 5 (делитель на 4), бит 6 (делитель на 16) получается такая штука
бит 6 бит 5
....0.....0 декремент счётчика происходит каждый 2-й такт
....0.....1 декремент счётчика происходит каждый 8-й такт
....1.....0 декремент счётчика происходит каждый 16-й такт
....1.....1 декремент счётчика происходит каждый 128-й такт
¤
Просто алгоритм построен так, что значения таймера аппроксимированы с шагом в 128 тактов, чтобы было быстрее, а не точнее.
- ? gid
- 22.04.2018 19:17
Не забывайте, что у самой БКшки тоже нет возможности управлять лентопротяжкой. Она может только включать и выключать мотор, в регистре 177716 используется для этого бит 7. И всё. Поэтому никто и не городил серьёзной техники для БК.
Хотите полностью управляемых лентопротяжек - ищите промышленные изделия. Я сейчас точно уже не помню, но кажется в СМ1700 был такой агрегат в составе.
- ? gid
- 19.04.2018 15:14
После того как появился редактор Vortex, я ассемблерные исходники только в нём набирал. А в турбо 8 только компилировал.
Редактор Vortex был гораздо удобнее любого встроенного редактора в любом ассемблере.
- ? gid
- 19.04.2018 14:31
В основном потому, что Turbo 8 во время работы размещает себя вместо оболочки ANDOS. А оригинальную неизменённую страницу 4 копирует в стр. 3, чтобы потом выйти и всё было как было.
Второе - там используется андосовский метод записи файла с заданным, другим адресом, для каталога.
А эти методы у Андос и Мкдос разные.
Исходники Turbo 8 давно доступны, и распространяются с моим эмулятором на одном из образов дискет, кто хочет, может адаптировать под что угодно.
- ? gid
- 13.04.2018 16:33
Таки на ZX-Pk вам же сказали, что нету у УКНЦ портов, таких как у БК 177714. Их надо делать, и ММ нарисовал минимально возможною схему на мелкоте, которая такой порт и реализует (Правда он очень любит АП6 и его за это не любят). Именно такая (почти такая) схема из мелкоты и реализована в самой БКшке (а отлов адреса 177714 в самом процессоре, поэтому половина мелкоты отпадает сразу). Просто в те времена никому не приходило в голову дублировать эту мелкоту, и все нужные сигналы брали с уже распаянных на плате микросхем. Имея схему УКНЦ, наверное тоже можно сократить количество используемых микросхем.
- ? gid
- 13.04.2018 11:24
Ничего и не докопались. Я и сам в парадизе писал прогу, после того как её сперва в тетрадке написал, теоретически проверил, а потом набрал в парадизе теми же ассемблерными мнемониками, и там же отладил. Потом в тетрадке же исправил найденные ошибки и снова поправил код в парадизе.
Только при этом прога должна быть короткая, не больше пары килобайтов.
- ? gid
- 13.04.2018 10:21
ненене. Не при отсутствии, а при наличии других средств разработки. Иначе откуда время свободное возьмётся?
- ? gid
- 13.04.2018 09:20
В машинных кодах писать стоит. Даже необходимо. Ибо это признак суперпрофессионализма. Только у суперпрофи есть овердохера свободного времени, чтобы убить его на машкоды.
- ? gid
- 12.04.2018 16:35
Выяснилось, что у отфотографированных изображений слишком маленькое разрешение и они непригодны к автоматическому распознаванию. Т.е. нормально распознаётся в лучшем случае 50% текста на странице.
После всех попыток исправить фотки страниц - выравнивание и осветление фона, устранение перспективных искажений и искажений строк, текст становится уже плохочитаем даже человеческим глазом.
Нету ли возможности всё-таки отсканировать отфотографированные документы?
- ? gid
- 11.04.2018 16:17
Дизассемблированный исходник RT-11.USR http://gid.pdp-11.ru/f/rt11em.rar
Собирается только в кроссассемблере BKTurbo8, из-за длинных меток, и турбовской псевдокоманды .addr
предоставляется как есть, ошибки в коде не исправлялись. И судя по всему, исходники у автора были, да и код типовой, в проге Term95 такой же использовался. Такое непосредственно в кодах написать очень сложно, даже в PARADISE. Времени на пересчёт меток и смещений убьётся больше даже, чем если бы эти исходники каждый раз на магнитофон сохранять и с него считывать.
- ? gid
- 07.04.2018 19:45
[Как лучше сделать, чтобы при паузе или завершении потока извне гарантированно завершился цикл эмуляции команды?]
Не знаю. Знал бы, давно по-нормальному сделал, а не как сейчас.
[И можно ли внутри потока юзать Suspend/Terminate для паузы/остановки самого себя?]
Не могу сейчас с уверенностью сказать, но я пробовал такое когда-то, но что-то не срослось, то ли всё-таки нельзя, то ли что-то не так работает. Вроде бы самотерминироваться можно, но самозасуспендиться нельзя. Проверить как на самом деле - лень. Даже загуглить для более правильного ответа лень.
- ? gid
- 28.03.2018 19:36
Берите любые, какие понравятся. Ещё руководствоваться можно этим http://gid.pdp-11.ru/f/portaddr.rar
- ? gid
- 28.03.2018 09:49
Заставлять BD переписывать ЕМТ36 под неопределённый, несложившийся формат - жестоко. Проще взять уже готовый сложившийся формат передачи в ЕМТ36 и по мере надобности расширять его под свои нужды.
¤
BD или S_V_B, а напишите лучше руководство для идиотов, можно даже с картинками, про этот блок ИРПС.
Какой-нибудь талмуд в виде солидного документа, где будет описан внешний вид блока, что там за разъёмы, с описаниями каждой дырки разъёма.
Как им пользоваться, для чего нужны эти маленькие штучки с микросхемками в комплекте, куда их втыкать можно, куда не нужно, а куда категорически нельзя.
Как и с помощью чего можно сделать обмен данными по Wi-Fi с ПиСи компьютером.
Например: берём хреновину Х, втыкаем её в блок ИРПС, сам блок втыкаем в БК, включаем, загружаемся, набираем таинственные заклинания (нужно привести пример чё как куда вводить) и происходит чудо.
Приводить ссылки на документы (напр. больше заклинаний - таинственных и сложных в см. документе 4A-ESP8266 AT Instruction Set_v0.22.pdf) и сопутствующий софт.
¤
Например, я как-то упустил момент, каким образом передаётся файл с ПиСи по Wi-Fi через COM порт?
¤
Написать такой документ, прочитав который каждый будет понимать как пользоваться этими железками, как бы не посложнее будет, чем программы писать. Там ведь нужно описать тривиальные вещи с точки зрения разработчика, которые кажутся ему само собой разумеющимися, но не всегда очевидными человеку со стороны.
- ? gid
- 27.03.2018 21:13
Там, в исходниках IRPS на билдере которые, файл на БК передаётся не совсем в понятной форме.
Особенно, я не понял смысла CheckBox2 и CheckBox3. Заголовок бин передавать на БК не нужно ни в каком случае, он там не нужен.
¤
Лучше делать передачу в точности как в EMT 36:
Заголовок файла : 20. байтов {
адрес загрузки файла : 2 байта,
размер файла в байтах: 2 байта, // реальный размер, может быть нечётным
имя файла : 16 байтов
};
массив файла : размер файла в байтах;
КС : 2 байта;
¤
Перед передачей нужно проанализировать файл, если у него есть заголовок бин, и он корректен, то адрес и размер брать оттуда, если нет - адрес спросить у пользователя, размером считать длину файла.
контрольную сумму можно считать на лету, по мере передачи файла, но это не сильно существенно, можно оставить и как есть.
Если длина файла больше 32767., то такой файл нельзя загрузить в память, его надо сохранять на диск на БК.
Если длина файла больше 65535., то нужно придумывать вообще новый алгоритм передачи, т.е. предусмотреть какой нибудь расширенный заголовок, т.к. длина не влезает в 16 бит.
¤
размер под имя файла лучше оставить 16 байтов, а не уменьшать под мкдосовский формат 14 байтов, неиспользуемые байты заполнять нулями.
Из эстетических соображений можно ещё считать КС заголовка и передавать её перед массивом файла, но это уже несовместимо с EMT 36 и надобность этого решайте сами.
- ? gid
- 19.03.2018 09:56
По всем ссылкам только версия v2.2
Откуда информация что существуют версии v4.2, v4.3, v5.0 ?
Может они были только у авторов, и они давным давно выкинули или потеряли все дискеты с ними и исходниками, как поступил А.Надёжин со своей ANDOS.
- ? gid
- 16.03.2018 22:27
в get_arg_addr надо смотреть вот это:
case 2: // (R0)+, #012345
arg = m_RON[reg];
¤
if (m_bSign && (reg < R_SP))
{
m_RON[reg] += 1;
}
else
{
m_RON[reg] += 2;
}
¤
break;
¤
Для типа адресации 2 регистры SP и PC увеличиваются всегда на 2, не зависимо от того, байтовая операция или нет.
- ? gid
- 15.03.2018 21:30
Не надо мне исходников, у меня своих выше крыши, никак не разгрести.
Я заинтересован в том, чтобы было больше людей, умеющих программировать и не боящихся выкласть на публику свои исходники, даже если они не верх изящества.
- ? gid
- 15.03.2018 21:03
И я не совсем уверен, а CF->Read(&R1,1); точно ли читает 1 байт? может оно автоматом читает слово, потому что R1 - слово?
Я в сибилдерном си не очень ориентируюсь.
¤
вот способ чисто на Си
¤
unsigned __int32 R0=0;
unsigned __int8 b=0;
CF->Seek(4,soFromBeginning);
while(CF->Position < CF->Size)
{
CF->Read(&b,1); //читаем байт. точно байт.
R0 += b; //прибавляем его к аккумулятору
if (R0 & 0xffff0000) //перенос случился?
{
R0 &= 0xffff;
R0++; //прибавим бит переноса
}
}
delete CF;
- ? gid
- 15.03.2018 20:53
Что это за чудо код такой в посте ? S_V_B - 15.03.2018 19:32
Тыж бит С не сохраняешь между сложениями прочтённых байтов из файла
надо так делать, если уж на асме хочется.
mov AX,R0; //аккумулятор
ADD AX,R1; //прибавляем прочитанный байт
ADC AX,0; //и бит С переноса
mov R0,AX; //сохраняем аккумулятор на место
- ? gid
- 15.03.2018 19:25
Если использовать подпрограмму 116622, то получается 006703(8)
clr r0
1$: clr r2
bisb (r5)+,r2
add r2,r0
adc r0
sob r4,1$
¤
Если использовать любой другой алгоритм, то получится любая другая КС.
Традиционно на БК10 КС загруженных файлов считается подпрограммой 116622.
- ? gid
- 14.03.2018 20:31
[там надо-то регистры 177560-177564 (176560-176564) направлять/читать на COM-порт]
Пример, как это сделать - в студию!
Я не умею вообще никак, сделайте хотя бы плохой, кривой, но примерно работающий пример. И увидите его реализацию в эмуляторе.
¤
[Для чего nInterruptVector увеличивается на 160000]
Этот код не совсем достоверный. Там просто сделано чтобы примерно как надо работало, там надо всё заново переписать, в соответствии с документацией, тем более, что пультовый бит 3 в 177716 у меня вообще не эмулируется.
Внимательно читаем в документе http://u.zeptobars.ru/yuot/MISC/1801vm1-10.pdf параграф 7.1 со стр.55, особенно - таблицу прерываний со стр.60
С адреса 160000 располагается пультовое адресное пространство. С адреса 160002 располагается три пультовых вектора пультовых прерываний. Там же описано в каких ситуациях происходит пультовое прерывание, а в каких - обычное.
¤
[Или в БК этот кусок никогда не будет выполняться?]
Штатно - сделано всё возможное, чтобы пультовая часть схемотехники на БК не была задействована. Но нет ничего невозможного, что доказывает HALT-режим контроллеров АльтПро.
Там кроме пультовых адресов векторов есть ещё и пультовый стек, с вершиной по адресу 177700. А поскольку на БК там (177674, 177676) нет ОЗУ, на БК никогда не сможет возникнуть пультовое прерывание, получается зависание шины и прерывание по вектору 4. до чтения адреса 160002...160014 просто дело не доходит.
¤
[Тогда непонятно зачем он тут.]
Для эмуляции HALT-режима контроллеров АльтПро. Но я это дело даже не отлаживал. Оно может вообще не работать.
- ? gid
- 14.03.2018 12:26
пока нет. Не выходит каменный цветок. Сами по себе, как отдельные наработки есть, но в эмулятор не прицепляется, т.к. структурно несовместимо, потому как не для него делалось.
- ? gid
- 14.03.2018 10:14
Можно попробовать, но думаю, всё преимущество будет нивелировано функцией вывода содержимого PSW на экран. Оно там несколько раз в секунду опрашивается (зависит от настроек). Слово PSW используется далеко не только в MFPS/MTPS.
- ? gid
- 11.03.2018 13:30
В андосе если ничего не трогали, по умолчанию после 60й дорожки включается прекоррекция. Настоящий 3.5" дисковод просто игнорирует этот сигнал. Эмулятор пытается его обработать? Что будет, если задать начало прекоррекции с 80й дорожки? (Как-то оно менялось, но я уже не помню, где это делалось.)
- ? gid
- 20.02.2018 09:17
Конечно так и должно быть. Палитры - это абстракция и нигде в картинке её код не сохранить.
Чтобы было как надо, нужно вручную на БК включить палитру, например, 13.
- ? gid
- 14.02.2018 23:05
[через SEL0 и SEL1 процы могут передавать друг другу результаты вычислений...]
Они могут делать это через любую доступную ячейку памяти, т.к. сидят в одном адресном пространстве.
¤
[только ВЕДУЩИЙ (N=0) процессор обрабатывает VIRQ.]
А ведь в натуре. Чё-то я сглупил. Адресное пространство у них общее, и векторы одни и те же на всех, поэтому обработка векторных прерываний всеми процами просто бессмысленна.
Vslav, а можно это как-то отразить в потихоньку создаваемой документации? Сделать специальный параграф, в котором будут описаны нюансы мультипроцессорности.
¤
Тогда как-то смысл в такой многопроцессорности становится ещё более туманным.
А если ещё и ПДП может делать только ведущий, то тогда второй процессор будет просто ненужным балластом, тормозить работу первого.
- ? gid
- 14.02.2018 19:05
РОНы не выведены в общее АП, поэтому - нет, R0 одного процессора не доступно из другого.
¤
Я тут забыл добавить, что DMGI DMGO процессоров тоже надо соединять в цепочку, чтобы делать арбитраж предоставления и захвата шины, а цепочки IAKI IAKO у каждого процессора можно выстраивать свои, чтобы например несколько 1801ВП1-065 генерировали прерывания каждый своему процессору.
¤
Ещё, где-то когда-то на том же zx-pk.ru выкладывали схему устройства с двумя 1801ВМ1. Я этой темой не интересуюсь, поэтому не запомнил даже, в каком разделе и в какой теме её выложили.
¤
И там такое дело, пока один процессор работает, остальные фактически простаивают, т.к. ждут, когда освободится шина, чтобы прочитать из памяти очередную инструкцию, чтобы выполнить её и снова ждать, пока освободится шина, чтобы прочитать очередную инструкцию и т.д. Сигнал SYNC один на всех, а без него цикл обмена на шине не постоишь.
-
«
1 | ... | 10 | 11 | 12 | ... | 15 | »
?