- Пара вопросов по эмулятору ув. gid
- [+] Старые сообщения (1022)
-
? gid - 01.08.2022 21:47
Технически - MTPS работает как надо, иначе бы не проходил тест ТМОС 791401
Да и я щас перепроверил в отладчике эмулятора - всё работает.
А почему творится хрень в MIRAGE - это вопрос к MIRAGE. Надо его дизассемблировать и посмотреть, что там накодено.
Пусть попробует в PARADISE то же самое сделать.
-
? BD - 02.08.2022 07:36
в эмуляторе Тишина и на андроиде мираж прекрасно трейсит mtps (r0)+
-
? gid - 02.08.2022 12:12
Нашёл косяк. Очень древний. У меня mtps обнуляет бит T, вместо того чтобы не изменять его. Исправление будет осенью.
Или может Scalolaz соберёт, свою сборку, там буквально пара строчек. Коммит я ему отправил.
-
? BD - 08.10.2022 00:27
Многоуважаемый GID!
Сейчас все носятся к БК подлючить ДВА АУ..
Даж демки написали..
Не могли бы Вы, в свободное время, изучить данный вопрос?
|https://disk.yandex.ru/d/7QKl6dsHGfLWpw
¤
https://i.ibb.co/RTtthb6/2.jpg
-
? gid - 09.10.2022 18:43
Могли:
29.09.2022 08:29:36 // Выпущен релиз эмулятора v3.13.2209.9954
1.Исправлена ошибка в эмуляции команды MTPS
2.Добавлена реализация двух-AY'шного звукового модуля...
Скачивать там - https://gid.pdp-11.ru/bkemuc.html?custom=3.13.2209.9954
Если надо изучить ещё как-то более подробно и углублённо, пишите.
-
? Maxvel@ - 25.10.2022 17:27
Понадобилась окошко чтения и записи ленты, но вот досада в меню галочка о том что это окошко включено стоит а самого окошка нетути.
Вообще хотелось бы что бы эта функция была не в том виде в каком она сейчас а в виде не большого плеера со списком файлов в формате бин или вейв, так же с возможностью останова воспроизведения в любой момент и начало другого файла в тех же форматах.
-
? gid - 25.10.2022 20:05
Если заглючил интерфейс, и какие-либо окошки не появляются, удалите в реестре ветку HKCU\SOFTWARE\gid prod.\BKEMUL целиком.
Все настройки интерфейса пересоздадутся заново.
¤
Делать плеер - слишком сложно для меня, мне бы тоже хотелось чтобы было поудобнее, но я не умею. Поэтому подожду, когда кто-нибудь приделает его к эмулятору.
-
? Maxvel@ - 25.10.2022 20:18
Вынес раздел в реестре но увы так и не появилось это окошко ---- печалька.....
-
? Дмитрий - 01.12.2022 21:00
Не подскажет кто - что возвращает команда FPU MODF/MODD после перемножения? Просто разделяет целую и дробную части или раскладывает число как FREXP на 2^x * y? В древних pdf в описании упомянуты оба варианта.
-
? gid - 02.12.2022 09:55
В большинстве мануалов по FP11 написано, что команда умножает источник и приёмник, и разделяет результат на целую часть и дробную.
Целая часть произведения сохраняется в (AC|1), т.е. номер регистра аккумулятора or 1. Дробная часть произведения сохраняется в AC. Если номер регистра аккумулятора нечётный, то сохраняется только дробная часть произведения.
Я смотрел мануалы, начиная с PDP 11/20 и дальше, правда не все, выборочно, и везде, где смотрел, было написано одно и то же.
И у себя в эмуляторе реализовал этот же вариант.
Про тупо разделение на мантиссу и порядок я в документах не видел, где это такое встречалось?
-
? Дмитрий - 02.12.2022 20:03
https://bitsavers.org/pdf/dec/pdp11/handbooks/PDP11_Handbook1979.pdf стр. 363 (по нумерации вьювера).
¤
This instruction generates the product of its two floating point operands, separates the product into
integer and fractional parts and then stores one or both parts as floating point numbers.
Let PROD = (AC)*(FSRC) so that in: <------------------------------------------------------------------ тут все понятно
Floating point: ABS(PROD) = (2**K)*f where 1/2.LE.f.LT.1 and EXP(PROD) = (200+K)s <------------------ смутила эта строка
Fixed Point binary: PROD = N + g, with <-------------------------------------------------------------- а тут уже про целую и дробную
N = INT(PROD)=the integer part of PROD and g = PROD - INT(PROD) = the fractional part of PROD with 0<g<1
Both N and g have the same sign as PROD.
¤
И еще. Если я парвильно понял, в операциях FPU, если метод адресации 0, то это не регистр, а аккумулятор. Но не везде.
-
? gid - 02.12.2022 21:39
Блин. Умеют же написать так, что ничего не понять с первого раза.
В первом же предложении написано, что результат команды - два плавающих числа: одно - целая часть операции (N), то, что перед точкой; второе - дробная часть (g), то, что после точки.
А потом куча непонятного.
Подумавши, я пришёл к выводу, что то, что они пометили "Floating point:" это внутренне представление числа внутри FP-11, оно там сразу разделяется на мантиссу и порядок, и хранится в отдельных аппаратных регистрах, чтобы проще ими манипулировать было.
А "Fixed Point binary:" это то, что выдаётся наружу в регистры или память - 32 или 64 разрядное число в формате с плавающей точкой.
Другого объяснения я не нашёл.
¤
[Если я парвильно понял, в операциях FPU, если метод адресации 0, то это не регистр, а аккумулятор. Но не везде.]
Мгм. Во всех командах с плавающими числами, кроме команд LDFPS, STFPS, STST, STEXP, STCxI,STCxL LDEXP, LDCIx,LDCLx (у которых источник/приёмник - априори не плавающее число, в них адресация 0 - регистр CPU)
-
? Дмитрий - 02.12.2022 22:02
Тогда в догонку еще вопрос: бит в слове состояния - режим округления chop/round. Chopping - это, вроде как, просто отбрасывание дробной части, а округление - оно и есть округление, но какое - round to nearest? Up/Down/ToZero?
-
? gid - 03.12.2022 09:58
Округление всегда вверх.
Там просто прибавляется 1 к биту, который младше самого младшего бита остающейся части мантиссы. Условно говоря, к 31 биту, потом если надо делается выравнивание мантиссы и коррекция порядка.
Всю механику можно посмотреть в исходниках бета версии эмулятора v4.x, там есть эмуляция математического процессора FP11, насколько возможно. Но код выключен на уровне исходников, поэтому в самом эмуляторе этого нету.
На БК эти опкоды активно используются в собственных целях в разных системных программах.
-
? Shestipaloff@ - 20.01.2023 08:38
Сергей, привет
.
Нашёл небольшую ошибку в документации на BKTurbo8 — в начале написано, что псевдокоманды .ENABL и .DSABL отсутствуют (от старой доки осталось), а ниже в тексте они указаны как действующие.
-
? gid - 20.01.2023 09:31
Я их добавил буквально недавно перед релизом, а доку не откорректировал
Ещё хотел добавить функционал назначения синонима имени регистра типа такого: %6=STEK %7=SK
но возникло затруднение с опознаванием элемента %цифра в качестве имени, ну и пока не стал это делать.
-
? Shestipalov@ - 20.01.2023 15:29
Переименование регистров, ИМХО, может сильно помочь в плане читаемости программы. Мне было бы полезно, по крайней мере. Ну и ещё такая мысль появилась, насчёт скриптов. Было бы полезно иметь возможность использовать в скриптах системны переменные, типа системной даты, времени, может, ещё чего. Тогда будет возможно автоматически вносить в текст программы дату компиляции, например. Номер версии тоже не помешал бы. Правда, возможный механизм реализации этого я плохо себе представляю, но, может, ты придумаешь :-)
.
PS. И ещё, не помню, предлагал или нет сделать такую штуку в эмуляторе — когда нажимается кнопка «Сохранить состояние эмулятора», он автоматически ставится на паузу. Это будет логично, если учесть, что я хочу сохранить именно тот момент, когда нажал на кнопку «сохранить», а не тот, когда я ввёл имя файла сохранения в диалоговом окне. За это время много чего может произойти, например, в «Принце Персии» ГГ убьют )))
-
? gid - 20.01.2023 16:46
Скрипты не для этого. То, что ты предлагаешь - это модификация исходника. А скрипт модифицирует уже готовый бинарник. И оперирует он чисто с бинарными данными.
То, что ты предлагаешь, делается через definesы, и этого механизма вообще предусмотрено, его ещё придумывать надо.
¤
Второе - предлагал уже, и я вроде бы сделал. Когда нажимается кнопка «Сохранить состояние эмулятора», эмулятор ставится на паузу, а после записи сохранения сразу же запускается обратно.
-
? Shestipalov@ - 20.01.2023 17:22
>То, что ты предлагаешь - это модификация исходника.
Не совсем. Одно дело в исходнике постоянно руками менять дату компиляции, и совсем другое написать, например, что-то типа такого (на синтаксис и логику внимание не обращать, это только пример для демонстрации идеи):
.LA 1000
MOV #MSG,R1
CLR R2
EMT 20
EMT 6
HALT
DATE: .BLKW 10
.SCRIPT:
MOV ${currentdate},@#DATE
.ENDS
.END
.
Тогда при компиляции можно руками дату в исходнике не менять — сама подставится. Это как раз модификация бинарника. Хотя, наверно, можно как решить эту задачу и без использования скриптов, средствами текстовых редакторов каких-нибудь... Не знаю. В общем, нет так нет, тебе виднее :-)
.
А пауза при сохранении действительно работает, спасибо! )
-
? Manwe@ - 23.01.2023 19:42
Не понял что происходит, может баг в конфигурации БК 0010 + СМК? Во время блокового чтения процедурой по адресу 160004.
Записал видео: manwe.ru/bug.mp4
Там ближе к концу при выполнении обыкновенной команды MOV R2,26(R3) по адресу 160336 вдруг происходит загрузка файла в память и halt (но куда направлен 4-ый вектор, там уже перетёрто загрузкой).
Непонятно как такое может быть, не выполняется же код чтения с диска.
-
? gid - 23.01.2023 21:58
Я посмотрел, что происходит.
Там, с адреса 160372 срабатывает перехватчик - эмуляция дискового обмена.
т.е. после того, как в отладчике выполнится команда по адресу 160366: MOV R2,26(R3), РС станет равным 160372 и тут же срабатывает перехват, до того, как дело доходит до отладочного останова. Таков рабочий цикл, и как его переделать, я не представляю.
И вот что там происходит в перехватчике - я не знаю, у меня например, при загрузке каталога с дискеты андос - всё в порядке, ничего не ломается. Но у меня и версия эмулятора свежая.
Если и со свежей версией глюк повторится, то нужно в отладчике вижуалстудии смотреть, конкретно, что происходит в данном конкретном случае. Может накосячено с представлением знаковых-беззнаковых чисел, может ещё что-то. там единственный вариант halta - попытка записи в ПЗУ.
Либо можно отключить эмуляцию ввода-вывода дисковода и посмотреть, что будет.
¤
Ещё я помню, в каком-то старом билде был косяк в дампе памяти, если там отображались адреса из диапазона 177700-177777 во время дисковой операции происходило что-то не то, что надо.
- << Форум