- Эмулятор БК на Java, о необходимости которого так много говорил Брухис ...
- [+] Старые сообщения (272)
-
? Alexander "Sandro" Tishin@ - 30.01.2021 00:42
А зачем его как-то документировать? Это же стандартная инструкция PDP-11, от EMT отличается только опкодом и вектором.
¤
Вот соответствующие фрагменты кода эмулятора:
¤
//регистрация опкодов при инициализации декодера команд
// ...
register_opcode(0104000, MASK_BRANCH, OP_EMT);
register_opcode(0104400, MASK_BRANCH, OP_TRAP);
// ...
¤
// Интерпретация декодированных команд
// ...
case OP_BPT:
trap(014);
break;
case OP_IOT:
trap(020);
break;
case OP_EMT:
trap(030);
break;
case OP_TRAP:
trap(034);
break;
// ...
¤
Неясно, отчего бы ему не работать? Кстати, десяточный бейсик не работал бы, он же весь на TRAP сделан, если я правильно помню. (Или это бейсик от DEC так сделан? Подзабыл уже.)
¤
В общем, можно минимальный, 10..20 команд, тест?
-
? KUVO@ - 30.01.2021 01:35
Написал тест, можно забрать по ссылке: https://yadi.sk/d/03Jwvy-D0jXUnw Внутри исходный текст и bin-файл.
-
? KUVO@ - 30.01.2021 01:42
Запускал ^^^^ с ключом -bin, может в этом причина
-
? Alexander "Sandro" Tishin@ - 30.01.2021 06:32
Именно в этом и причина. Сейчас при загрузке через -bin машина не инициализирована никак. Соответственно SP = 0. Отчего любые попытки писать в стек приводят к Trap to 4.
¤
Если грузить из монитора командой L, то TRAPTST работает.
¤
Сделаю SP = 1000, пожалуй. Пусть будет.
¤
Выложу завтра, наверное. Сейчас мне через два часа на работу.
-
? Alexander "Sandro" Tishin@ - 30.01.2021 06:46
А нет, стек при опции -bin таки ставится куда надо. Сам же сделал и забыл уже. Буду смотреть более детально. Но не сейчас.
-
? Alexander "Sandro" Tishin@ - 30.01.2021 07:04
А, всё понял. Таймер-то при старте разрешён. MTPS #0 и поехали по таймерному прерыванию на рестарт.
-
? gid - 30.01.2021 09:01
А почему он разрешён? По схеме, по сигналу ACLO он (в том числе) запрещается инициализацией в 0 выходов триггера D35 К555Тм9
Т.е. после включения питания и после инициализационной последовательности DCLO-ACLO запрещается таймер, устанавливается отображение буфера экрана 0, и устанавливается палитра 0.
-
? Alexander "Sandro" Tishin@ - 30.01.2021 19:08
Потому, что косяк. :(
¤
Когда делал поддержку 11М, то схемы под рукой не было, так что писалось по официальной доке и по наитию. Потом перепроверить забыл.
¤
Завтра буду чинить всё.
¤
Эх, надо бы полный макет БК на Verilog собрать, и сомнительные места проверять на нём. Заодно и нормальную Э3 надо бы нарисовать и отконвертить в общечитаемый формат вроде svg. Мечты, мечты ...
-
? Alexander "Sandro" Tishin@ - 30.01.2021 19:25
Кстати, если кому интересна мышь, то просьба проверить корректность её работы. Сейчас она сделана несколько хакнутым образом, но если всех устраивает -- то так и останется на неограниченное сверху время.
-
? Alexander "Sandro" Tishin@ - 31.01.2021 15:45
gid, а это ничего, что у БК инверсная шина? Надо всё же смотреть схему. Потом посмотрю.
¤
В любом случае, выложил версию с мелкими правками:
¤
Добавлены ключи -nohud (не показывать оверлей эмулятора), -trace [address] (выводить трассу исполнения команд после срабатывания ловушки по адресу address, либо сразу), при загрузке с ключом -bin запрещены таймерные прерывания.
Если ничего из этого не нужно, то можно не обновляться.
http://sandro.pdp-11.ru/
¤
-nohud гасит оверлей только полсле получения первого отрендеренного кадра; это сделано на случай, если эмулятор зависнет при старте.
-trace пишет трассу в файл cputrace.log в текстовом виде, с дизассемблером. Параметр -- ловушка PC, после которой начинается вывод. Чтобы не дампить начальную инициализацию и т.д. Если не указано или ноль, то трасса выводится с самого начала.
Места на диске нужно МНОГО. На 11М загрузка ANDOS до появления вращающейся надписи занимает примерно 40МБ.
-
? gid - 31.01.2021 17:40
Ничего, значит я просто со всем этим ошибся, тогда выставляется палитра 15.
Для таймера всё верно.
"1" в порт 177662 ("0") на шине и выходе D35 - запретить таймер,
"0" в порт 177662 ("1") на шине и выходе D35 - разрешить таймер.
А буфер экрана значит устанавливается №1 - 6я страница
"0" в порт 177662, ("1") на шине и выходе D35, "0" на выходе D33.2 - буфер экрана 0
"1" в порт 177662, ("0") на шине и выходе D35, "1" на выходе D33.2 - буфер экрана 1
Мне не приходило в голову, что можно начинать использовать железо без его инициализации, поэтому у меня в эмуляторе всё по умолчанию устанавливается почти неправильно, так, как после инициализации.
-
? Alexander "Sandro" Tishin@ - 01.02.2021 22:06
Мне тоже не приходило. Поэтому при старте просто всё обнулялось, кроме PSW, куда писалось 340. Ну и начальный PC, само собой.
-
? Adam Bazaroff - 02.03.2021 23:09
В версии 0.5 при добавлении строки «general.debugger = yes», эмулятор висит на черном экране :(
Просьба вернуть хотя бы прежний (пусть примитивный) дебагер. Удобно было смотреть код.
¤
BK2010 emulator version 0.6-alpha-5
¤
Current date/time is Tue, 2 Mar 2021 23:07:54 +0300
Using the com.apple.laf.AquaLookAndFeel LaF as the system default.
¤
Starting up as BK0010 + BASIC
Creating a 1024x768 main window
Mouse enabled
Pixel interpolation disabled
Loading ROM file roms/monit10.rom
Loading ROM file roms/basic10.rom
Loading ROM file roms/b11m_bos.rom
Loading ROM file roms/b11m_ext.rom
Loading ROM file roms/bas11m_0.rom
Loading ROM file roms/bas11m_1.rom
Loading ROM file roms/fdd.rom
Enabling debugger mode
-
? Alexander "Sandro" Tishin@ - 03.03.2021 09:46
Не могу воспроизвести. На моей конфигурации работает. А предыдущая версия как? Есть отладчик?
¤
Или вообще старта нет? Я не совсем понял.
-
? Adam Bazaroff@ - 03.03.2021 10:57
0.3 нормально работает с текущим (см. ниже) .ini файлом. (0.4 тоже работал вроде, не сохранилась версия).
0.5 «виснет» после отображения «Enabling debugger mode» и до вывода окна с «температурой» памяти.
¤
log:
BK2010 emulator version 0.6-alpha-5
¤
Current date/time is Wed, 3 Mar 2021 10:53:27 +0300
Using the com.apple.laf.AquaLookAndFeel LaF as the system default.
¤
Starting up as BK0010 + BASIC
Creating a 1024x768 main window
Mouse enabled
Pixel interpolation disabled
Loading ROM file roms/monit10.rom
Loading ROM file roms/basic10.rom
Loading ROM file roms/b11m_bos.rom
Loading ROM file roms/b11m_ext.rom
Loading ROM file roms/bas11m_0.rom
Loading ROM file roms/bas11m_1.rom
Loading ROM file roms/fdd.rom
Audio: Opened line with 8192 bytes buffer.
¤
Enabling debugger mode
¤
ini:
diskA.Image = disks/a.img
diskA.Mount = yes
diskA.Read only = no
diskB.Image = disks/b.img
diskB.Mount = yes
diskB.Read only = no
general.Machine type = BK0010 + BASIC
general.debugger = yes
readTape.Enable motor control = no
readTape.Use tape = no
readTape.Wave = tapes/in.wav
screen.Afterglow = None
screen.Interpolate when ... = If not 1024x768
screen.Monochrome = White
screen.Multicolor = yes
screen.Screen Size = 1024x768
sound.AY-3-8910 = Enabled
sound.Covox = Disabled
sound.Filter = yes
sound.No sound = no
sound.Tape<->.bin = yes
writeTape.Enable motor control = no
writeTape.Use tape = no
writeTape.Wave = tapes/out.wav
-
? Alexander "Sandro" Tishin@ - 03.03.2021 13:58
Оба-на! Да, нашёл косяк. Спасибо за .ini, без него бы дольше возился. Починю. Но немного попозже, OK?
-
? Adam Bazaroff@ - 03.03.2021 19:16
Ок, конечно. Я пока версию 0.3 для этих целей буду использовать. Более того, если это отвлекает от работы над СМК и HDD, то я готов и дольше ждать :))
-
? Alexander "Sandro" Tishin@ - 10.08.2021 15:10
Прошу прощения за такую большую задержку. Обновление!
¤
http://sandro.pdp-11.ru/bin/bk2010-0.6-alpha6.zip
¤
Улучшен экран, исправлены некоторые баги. SMK пока ещё не работает, хотя часть функций есть.
-
? Alexander "Sandro" Tishin@ - 05.02.2022 17:51
Обновление: http://sandro.pdp-11.ru/bin/bk2010-0.6-alpha7.zip
¤
Не очень большое, из заметного -- починена мышь, починен таймер -- там был косяк с байтовой записью, который ломал новогоднюю демку.
-
? Alexander "Sandro" Tishin@ - 05.02.2022 17:53
Забыл добавить -- с ключом -flc происходит видеозапись в этом формате
-
? Alexander "Sandro" Tishin@ - 01.06.2022 18:16
Обновление: http://sandro.pdp-11.ru/bin/bk2010-0.6-alpha8.zip
¤
Теперь есть антифликер -- подавитель мерцания 50 Гц. Для демок, использующих смешение кадров для новых цветов. Включается в меню Modes & Colors.
- << Форум