-
- ? Дмитрий
- 08.01.2020 14:04
Для моего случая нужен свой компилятор - макро11 не умеет в 32 бита, а в своем я еще не делал макросы, ибо пока лень.
- ? Дмитрий
- 08.01.2020 12:39
Копипаста зло, а в совокупности с автоматизмом - тем паче. При разворачивании макроса vect где-то и как-то потерял 8 байт нулей.
- ? Дмитрий
- 08.01.2020 02:23
Что-то тест 791402 в части MUL (конкретно тест 245) стопорится:
¤
tst245: cmp @R5, #245
bne err247
inc @R5
mov PC, R1
mov #125252, R0
mul (R3)+, R0
mfps @#$qpsw
cmpb #11, @#$qpsw ; PSW совпадает
beq 1$
error 250
1$: cmp #165252, R0 ; вот тут проблема!!!
beq 2$
error 251
2$: cmp #100000, R1
beq tst246
err252: error 252
¤
тест 125252 * 2 = 252524. В результате умножения IMUL (знаковое умножение) получается R0=177777 (старшая часть) и R1=52524 (младшая часть), а тест с какого-то перепоя проверяет R0=165252. И дальше проверяет 100000 в R1.
- ? Дмитрий
- 07.01.2020 15:53
Нашел, команда STST.
- ? Дмитрий
- 07.01.2020 15:49
gid, вопрос. У FPU есть два регистра FEA (Floating Exception Address) и FEC (Floating Exception Code). Я покопался по хэндбукам PDP, но не нашел расположение этих регистров (если они располагаются в памяти) и как к ним получить доступ (если нет). Плюс у разных машин разные адреса прерывания по ошибке FPU - встречется и 244, и 250. А какой правильный?
- ? Дмитрий
- 07.01.2020 15:45
Присоединяюсь к поздравлениям!
- ? Дмитрий
- 21.11.2019 20:20
>> У вас какой-то уж совсем дремучий код.
Есть такое. Обновил архив с сырцами. NextTick убран только в 3.10.
¤
Посмотрел код 4.1. Ммм, а зачем FPU сделан отдельным классом? Связывать его с CPU не надо - надо перенести все в класс CPU. Я именно так и сделал. Но поскольку параметры FPU можно менять (точность, округление, маскирование прерываний) перед каждой FPU-инструкцией (в начале TranslateInstruction) записываю слово состояния FPU в хост-проц и восстанавливаю после. Все работает как надо - проблем нет.
- ? Дмитрий
- 17.11.2019 21:03
А если одновременно звучит AY, ковокс и пиликает спикер, то их сэмплы записаны последовательно в буфер или микшируются в один?
- ? Дмитрий
- 17.11.2019 14:52
gid, реализация YM2149 выдает сэмплы с учетом частоты дискретизации? Т.е. два вызова
¤
CEMU2149::GetSample(...);
CEMU2149::GetSample(...);
¤
подряд выдадут просто 2 сэмпла или это равносильно коду (с учетом SoundSampleRate)?
¤
CEMU2149::GetSample(...);
delay(1/SoundSampleRate);
CEMU2149::GetSample(...);
¤
И еще. У ковокса частота дискретизации 8кгц, если я правильно понял? Где его сэмпл передискетизируется в 44100 для микширования с сэмплом AY?
- ? Дмитрий
- 03.11.2019 20:15
>> Это пагубное воздействие
gid, это не воздействие, а незнание DOS'a :) Есть перенаправление вывода: bkhddtool >1.txt и в текстовом файле будет все, что выведет на консоль программа.
- ? Дмитрий
- 02.11.2019 23:47
На другой рендер - там написаны поддерживаемые.
- ? Дмитрий
- 02.11.2019 22:12
>> ig4icd32.dll
OpenGL для встройки Интел - видимо ему не понравилась инициализация GL-контекста. Поменять рендер в bk.ini в разделе Main.
- ? Дмитрий
- 02.11.2019 16:13
.hdi - это образ винта img с прикрученным заголовком, который получается от винта по АТА-команде 0xEC.
¤
https://dropmefiles.com/MCP4J - bkhdd
- ? Дмитрий
- 02.11.2019 16:09
Не убили, а умер от долгих раскачиваний. Пока в носу поковырялись, бабло влили, а реализованный техпроцесс уже нафик не нужен. А снова вливать - смысла нет. И обанкротили.
- ? Дмитрий
- 02.11.2019 14:03
>> а чем и как "дербанить образ винта на образы дисков.."?
Кто-то выкладывал программу, которая раскладывает образ винта на образы дисков. Две программы под DOS (.com) - разложения и сборки. Есть еще одна под винду, если мне склероз не изменяет, сборки образа. Terra выкладывал.
¤
>> Так же я не знаю как написать UI для визуального редактирования таблицы разделов, чтобы можно было мышкой изменить размеры лог.диска, переместить лог диск, удалить, создать.
Та же проблема и у меня была. Самое простое, что придумал, панель как в файловом менеджере. Работа с разделом под курсором, создание раздела как создание папки, единый интерфейс для всего.
- ? Дмитрий
- 02.11.2019 12:38
Пока только один вариант: дербанить образ винта на образы дисков и с помощью BKDE копировать файлы. Потом собирать обратно и заливать на флэш.
¤
Программу я писал, первый вариант был пробой пера (обкатка работы с форматами), потом переписывал. Сейчас то, что есть (примитивный аналог 2-х панельного файлового менеджера), работает, бродит по образу винта и дисков, по папкам, но нет никаких файловых операций. В свое время затык был в том, что не придумал - как определить, что в обоих панелях открыт один и тот же образ диска для выполнения операций.
¤
>> взять и скрестить
gid, а если чуток переделать BKDE и научить ее работать с образом диска в памяти? Тогда можно было бы выбрать образ диска в образе винта, загрузить его целиком в память (до 32 мб не такой уж и огромный объем) и далее в памяти производить манипуляции с файлами, а потом выгрузить обратно образ диска в образ винта.
- ? Дмитрий
- 20.10.2019 16:59
Вот жеж, я даже и не знаю теперь на что ориентироваться. Все команды делать по 1 такту +1 такт на каждый доступ в память (как сделал щас, в тестовом варианте) как-то не комильфо - для проверки еще можно, но на постоянку хотелось бы соблюсти тайминги команд или прийти к какому-то общему знаменателю. Мб пока откинуть этот параметр tn и оставить чистые тайминги в тактах только самого проца?
- ? Дмитрий
- 20.10.2019 13:34
А если отбросить несинхронность с -037 (и саму 037) и взять только ВМ1, то есть более-менее точная величина tn? И какова она на ДВК?
- ? Дмитрий
- 19.10.2019 23:13
У Вакуленко сказано про время выполнения, что "tn - время между выдачей DIN/DOUT и приходом RPLY." А чему равно это время в тактах? Я что-то не видел нигде этой инфы. И странно, что (Rn) выполняется дольше, чем (Rn)+ - 21T + 3tn против 20T + 3tn. Мб, конечно, погрешность.
- ? Дмитрий
- 19.10.2019 14:56
Судя по таблице в исходниках EMT/TRAP исполняются за 64 такта, а IOT - за 104. С чего вдруг такой разброс? Ведь логика одна и та же - сохранить адрес возврата и PSW, выбрать новый адрес и PSW, установить.
- ? Дмитрий
- 19.10.2019 01:38
Кстати, не могу понять почему так долго выполняются (в тактах) команды ветвления, SOB, EMT/TRAP/IOT. Что там такого "долгого"?
- ? Дмитрий
- 12.10.2019 15:48
Вопрос по таймеру. В комментах cpu.cpp сказано, что бит 7 (EXPIRY) выставляется (если установлен бит 2) по достижению нуля. Сбрасывается программно. Т.е. для контроля следующего перехода через ноль мы должны его обнулить. Но в обработке записи в системные регистры сказано, что при любой записи в регистр управления из регистра начального значения переписывается в счетчик. По сути это сброс и начало отсчета. Получается, если нам надо отсчитывать равные промежутки времени с выполнением какого-либо действия при достижении нуля, это нарушает работу, т.к. счетчик зафиксировал переход нуля, перезагрузил начальное значение и пошел считать следующий период. А сбросом бита 7 мы заставляем его начать счет заново. Или 7 бит сбрасывается как-то иначе, не вызывая перезапуска таймера?
- ? Дмитрий
- 09.10.2019 00:32
Да, спасибо большое. Похоже то, что нужно.
¤
Получается: время опускания головок ~35 мс, переход с дорожки на дорожку ~94 мс.
¤
Спецы-железячники - гляньте, верно или нет получается?
- ? Дмитрий
- 07.10.2019 21:02
В паспорте на НГМД нет в параметрах времени опускния головок и задержки перехода с дорожки на дорожку в мс?
-
«
1 | 2 |
?