-
- ? Manwe
- 29.06.2022 13:17
Добавил комментарии к коду ПЗУ приставки Бортника:
¤
; Boris Bortnik console bootstrap code
¤
.LINK 173000
¤
MOV #177756,R2 ; BK parallel port
¤
1: MOV (R2),R0
BPL 1 ; wait for negative value
2: MOV (R2),R0
BMI 2 ; wait for posiive value
¤
ASR R0 ; read bit
BCC 4
; odd value xxxxxxxxxxxxxx?1
ASR R0
BCC 3
; value ooooooxxxxxxxx11
SWAB R1 ; ????????nnnnnnnn -> nnnnnnnn00000000
CLRB R1
BISB R0,R1 ; mix bytes of R1 and R0 nnnnnnnnxxxxxxxx
BR 1
; value xxxxxxxxxxxxxx01
3: MOV R1,(R2) ; send R1 to BK
BR 1
; even value xxxxxxxxxxxxxx?0
4: ASR R0
BCC 5
; value xxxxxxxxxxxxxx10
ASL R0 ; 0xxxxxxxxxxxxxx0 is address
MOV R1,(R0) ; write R1 to VM3 memory
BR 1
; value xxxxxxxxxxxxxx00
5: ASL R0 ; 0xxxxxxxxxxxxxx0 is address
MOV (R0),(R2) ; write from VM3 memory to BK port
BIT #4000,R0 ; read more if address is 0xxx0xxxxxxxxxx0
BEQ 1
¤
JMP @#1000
- ? Manwe
- 21.03.2022 13:10
Проблемы с эмуляцией HDD начались тогда, когда перестала работать демка Good Apple. На реальном железе она по-прежнему работает.
- ? Manwe
- 18.12.2021 11:03
По-моему, на такие случаи хранят разные варианты иконок – в 2 раза больше и в 3 раза больше. Ну и интерфейс собирают так, чтобы не прибивать гвоздями иконки к фиксированным координатам.
- ? Manwe
- 10.12.2021 22:45
под Windows 11 на экранах с высоким разрешением съезжает весь интерфейс :(
https://imageup.ru/img25/3853076/windows11-hires.png
- ? Manwe
- 05.08.2021 07:49
Есть:
Стандарный комплект документации для CSIDOS, MKDOS, ANDOS извлечённый из стандартных системных дискет для вдумчивого чтения на PC.
http://gid.pdp-11.ru/misc.html
- ? Manwe
- 03.08.2021 00:03
Код Good Apple определяет геометрию и по идее не должен за неё выходить. Считывает из паспорта HDD число головок, цилиндров и секторов.
- ? Manwe
- 01.08.2021 22:45
А что подразумевается под "делается прерывание по вектору 100"? Переход на указанный в 100-ой ячейке адрес? Если так, то это неправильно. Нужно перед переходом останавливать эмуляцию и передавать экранную память ffmpeg'у. И лишь потом продолжать эмуляцию с адреса, записанного в 100-м векторе.
¤
А ещё начиная с какой-то версии эмулятор перестал воспроизводить Good Apple. На реальном железе работает, а в эмуляторе зацикливается на инструкциях:
1: BIT #10,@#1777740
BNE 1
- ? Manwe
- 01.08.2021 18:06
Вот так получается при записи из эмулятора. Если же поставить брейкпоинт на переход по 100-му вектору, становится видно, что в момент кадрового прерывание изображение в одной палитре, а не две палитры одновременно на одном кадре.
https://imageup.ru/img153/3780625/raydreams1.jpg
https://imageup.ru/img278/3780626/raydreams2.jpg
- ? Manwe
- 01.08.2021 15:10
Странно, у меня демка "Ray Dreams" грабилась неправильно (там переключение палитр каждый кадр по 100-му вектору). Попробую ещё раз на новой версии эмулятора.
- ? Manwe
- 27.07.2021 14:44
Уважаемый gid, не могли бы Вы добавить возможность грабить видео покадрово по 100-му вектору? Этакий особый режим, когда эмулятор дожидается кадрового прерывания и тогда сохраняет кадр. Если при этом всё начнёт тормозить - ничего страшного. Подобный граббер есть на PC, называется kkapture - он заторможивает игру или демку, которую грабит, но зато получается идеально, ничего не мерцает, никаких "попаданий под луч" (полкадра старых, полкадра новых).
- ? Manwe
- 24.09.2020 17:51
Можно, наверное, ПЗУ СМК поправить, чтобы оно перед вызовом процедуры ENGIN сбрасывало второй бит.
- ? Manwe
- 23.09.2020 11:13
Проверил на реальном железе, всё так же как на эмуляторе.
_
> репликах СМК-512 этот функционал уже не реализован
Вроде, недавно правили прошивку СМК ради этого. Обнаружили, что не работает Бейсик.
_
> она нужна, и в том числе и для того, чтобы очистить этот бит 2, если он будет установлен каким-то кодом страницы
Вот оно что... Спасибо за разъяснение! Добавил MOV #0 после всех операций со страницами - теперь дисковод заработал независимо от номера страницы. И в эмуляторе, и на реальном железе.
- ? Manwe
- 22.09.2020 23:51
Ivanq помог разобраться: недокументированная функция СМК: не все страницы работают одинаково. Нужно использовать только те, в кодах которых сброшен бит №2. Дикость, конечно.
- ? Manwe
- 22.09.2020 22:35
Может быть TST (R5) делает read-modify-write и контроллер как-то сходит с ума от этого? Вообще не очень понятна схема "Режимы работы и распределения памяти" - что за "170(177000hdd)-0" и "HDD :170-177000"? Есть где-нибудь человеческая схема?
- ? Manwe
- 22.09.2020 22:16
А где почитать документацию? На pk-fpga есть "ПОДРОБНОЕ техническое описание контроллеров АльтПро", но я не на все вопросы нашёл там ответы.
¤
Сейчас у меня засада дисководом в Halt-режиме. По адресу 162364 находится процедура чтения дисковода, она обращается к 177130 и обламывается на третьей по счёту инструкции TST (R5)+
в R5 лежит 177130. Инструкция вызывает прерывание по 4-му вектору - сразу, минуя обработчик Halt-режима. А 4-ый вектор указывает на TST (R5), которая также вызывает прерывание на саму себя и рекурсивно загаживает стек.
Halt-режим включен, но никак в этом карнавале не участвует.
Это всё в эмуляторе я проверяю.
- ? Manwe
- 21.09.2020 17:54
Но самое удивительное, что на эмуляторе MOV #0 и потом CLR работает, не вываливается. А MOV #2015 и потом CLR вываливается. На реальном железе пока не проверял.
- ? Manwe
- 21.09.2020 17:31
> mov #2015,@#177130 уже вызывает trap to 4?
На следующей команде. Похоже, проблема в обращении к 177130 командой CLR (R4). Если заменить на MOV #0,(R4) - не вылетает.
Пытаюсь понять логику: выходит, установка Halt-режима происходит ещё на команде MOV #2015,@#177130, до того как послан 0, "закрывающий" регистр. В этом случае понятно: CLR сначала читает содержимое 177130, а он уже в области памяти write only, как и должно быть в Halt-режиме.
Но разве так должно работать на реальном железе? Я думал, что пока не послан 0, режим контроллера не переключается.
- ? Manwe
- 21.09.2020 15:04
Хм, я вот чего не понял: почему когда я устанавливаю режим Hlt11 с нулевой страницей, всё работает, а когда с кодом страницы 2015 - происходит прерывание по 4-му вектору в момент попытки установить режим? Программа переключения режима находится в нижней памяти, не в страницах СМК.
- ? Manwe
- 19.09.2020 23:26
Вопрос про страницы памяти. В документации написано:
«При включении режима "All" из режимов Hlt10, Hlt11 в ОЗУ режима "All" по адресу 177130 вписывается 20+КодСтраницы».
То есть в режиме All можно подключать разные страницы. А в режиме Halt нельзя таким же образом, добавляя код страницы? Halt-режим всегда только с нулевой страницей памяти работает? Если так, то это печально.
- ? Manwe
- 19.09.2020 21:41
> Выб хоть версию проги называли
от 26-го мая 2020-го года, размер файла BKDE.exe 4'084'224 байт
¤
А ещё такой вопрос: устанавливаю разные режимы СМК (60,140,100) - эмулятор правильно пишет номера режимов. А когда устанавливаю Hlt11 (20000) - эмулятор пишет 0. Как должно быть?
- ? Manwe
- 02.09.2020 15:35
Глюк с выезжающим окном клавиатуры: https://imageup.ru/img141/3648729/gid-emul-keyboard-window-bug.png
Воспроизводится у меня на двух компьютерах - Windows 7 64-bit и Windows 10 32-bit.
- ? Manwe
- 31.08.2020 14:23
Заметил, что BKDE некорректно работает с дисками RT-11 (пробовал на дискетах от Союз-Неона): при попытке записать файл с таким же именем поверх имеющегося, на диске остаётся старый файл. То же происходит, если сперва удалить файл, а потом записать новый - всё равно почему-то старое содержимое на диске.
- ? Manwe
- 26.08.2020 12:39
Хочу посоветовать всем программу для записи БК-шных дискет на PC в Windows:
OmniFlop: http://www.shlock.co.uk/Utils/OmniFlop/OmniFlop.htm
Дисковод можно брать обычный 1.44 Мб, главное чтобы он подключался шлейфом к материнской плате, а не по USB. Дискеты 1.44 Мб тоже подходят, если заклеивать им дырку в углу.
В программе OmniFlop нужно сперва выбрать из списка тип дискеты IBM PC MS-DOS 800Kb (2 головки, 80 дорожек, 10 секторов по 512 Кб), там же отформатировать дискету, а потом писать на неё образ БКшной дискеты. Работает, проверено на БК и Союз-Неоне.
- ? Manwe
- 20.07.2020 16:23
А, понятно. Смущает просто, что приходится нажимать клавишу пошаговой трассировки на 1 раз больше, чем реальное число выполненных команд.
- ? Manwe
- 20.07.2020 14:53
Не могу понять почему так работает инструкция HALT:
у меня есть вызов инструкции EMT 16, которая печатает код СБР (очистка экрана), эта инструкция EMT 16 расположена в экранной памяти. Соответственно, следом за EMT 16 получается HALT (0) и сама EMT 16 тоже стирается. Так вот эмулятор в режиме трассировки исполняет этот HALT (который уже после EMT 16) и переходит на следующий HALT. И только второй HALT приводит к переходу по 4-му вектору. Почему так?
- ? Manwe
- 19.07.2020 15:28
>> Т.е. кажется, какой-то своей оригинальной защиты у GREEN не было.
Но всё равно, описанная защита выглядит интересно (для истории), было бы здорово найти такой WAV.
- ? Manwe
- 17.07.2020 11:00
Посмотрите, пожалуйста как эмулятор (не)грузит игру Green с магнитофонной защитой: https://manwe.pdp-11.ru/Tapes
На реальной БК 0010 всё без ошибок. Файл 8 bit mono 12 KHz, но я на всякий случай выложил и вариант 48 КГц: https://manwe.pdp-11.ru/Tapes/Green48.wav
- ? Manwe
- 03.07.2020 18:03
Утилита LBAtest для работы с HDD часто выдаёт timeout при записи секторов. На эмуляторе. Если фоном запустить какую-нибудь ещё программу или если система захочет выдать нотификацию или проверить обновления. На реальной БК такого, конечно, нет.
В утилите стоит небольшое число циклов (83) ожидания бита готовности, но реальной БК этого хватает.
Так что оптимизировать работу эмулятора с диском полезно!
- ? Manwe
- 26.06.2020 17:55
Ни у кого нет желания допилить Basic-87 до совместимости с Вильнюс-86? А то там даже оператора Circle нет.
- ? Manwe
- 10.06.2020 20:38
Ура, починилось! :) У меня была не самая новая версия эмулятора.
- ? Manwe
- 09.06.2020 14:42
Оказалось, в MKDOS 3.15 не работает, а в 3.17 уже работает.
- ? Manwe
- 09.06.2020 14:42
Оказалось, в MKDOS 3.15 не работает, а в 3.17 уже работает.
- ? Manwe
- 09.06.2020 14:11
почему-то в MKDOS 3.17 не работает STARTS.COM - как починить?
- ? Manwe
- 09.06.2020 14:09
Проблема с кнопкой СТОП связана с виртуальной клавиатурой. Не знаю как с настоящей клавиатурой (у меня нет Pause и Num Lock). Кнопка одноразовая.
- ? Manwe
- 19.04.2020 20:57
Поймал глюк в дизассемблере: обратите внимание на команду по адресу 4:
https://imageup.ru/img33/3592588/gid.png
- ? Manwe
- 09.04.2020 21:45
Ну можно и опцию.
¤
Ещё такая неточность: в режиме "Эмулировать клавиатуру БК" шифт всегда изменяет регистр букв. А на реальной БК иначе:
¤
1. заглавные латинские буквы - шифт не влияет
2. строчные латинские буквы - шифт превращает их в заглавные
3. заглавные русские буквы - шифт превращает их в строчные
4. строчные русские буквы - шифт не влияет
- ? Manwe
- 08.04.2020 22:39
В прошлых версиях эмулятора почему-то без сглаживания делались скриншоты в 1024x768.
Нельзя ли после CopyImage растянуть картинку своим методом перед сохранением на диск?
- ? Manwe
- 24.03.2020 11:37
а есть в природе аналог тестов МСТД, загружаемый в ОЗУ?
Пробовал грузить дамп МСТД с адреса 1000 - вылетает. Неперемещаемая программа, судя по всему.
Грузил из монитора БК0011м командой 1000L
- ? Manwe
- 19.03.2020 22:35
А, понятно... Было бы круто отображать с учётом режима. Так больше соответствовало бы реальности. Полезней для отладки.
- ? Manwe
- 19.03.2020 12:20
Для сравнения, та же самая программа, но в 7-ой странице памяти БК0011м отображается правильно (картинка не разрезана):
https://imageup.ru/img156/3574508/bk11page7.gif
- ? Manwe
- 19.03.2020 11:32
Давно заметил странную особенность: память СМК (или A16) неправильно отображаются в окне просмотра страниц. Начальный адрес страницы приходится не на верхнюю часть картинки, а на середину. Хорошо видно здесь:
https://imageup.ru/img156/3574449/a16m.gif
В реальности картинка хранится не разрезанной пополам, а единым массивом.
- ? Manwe
- 16.03.2020 01:36
Смутно припоминаю, что в игре "Hobbit" можно было что-то нажать и она записывала себя на кассету с защитой. Там прикольный загрузчик, хоббит подмигивает глазом во время загрузки. WAV есть. А вот информации как сохранять на кассету - нет. Может быть кто-то помнит?
- ? Manwe
- 15.03.2020 20:50
>> Уберите из параметров командной строки ffmpegа параметры -vf scale=1024:768 и мыло исчезнет. Правда и картинка станет 512Х256.
¤
Это вариант. Спасибо. Потом можно растянуть командой ./ffmpeg -i input.mp4 -vf scale=1024x768:flags=neighbor -crf 10 output.mp4
¤
>> Либо... добавьте какую-нибудь фильтрацию, убирающую мыло.
¤
А вот это - не вариант :)
- ? Manwe
- 15.03.2020 20:47
Супер. Надо помочь автору разобраться с PDPy11 - у него же куча возможностей, которые делают программирование лёгким и приятным :)
- ? Manwe
- 15.03.2020 20:46
Всё получилось, порендерил и выложил 4 WAV-файла с играми (даже 5, потому что Exolon состоит из двух): https://manwe.pdp-11.ru/Tapes/
Пока не оформлено, скоро займусь и сделаю красиво.
¤
А упомянутую выше игру Expert реально найти в магнитофонном виде?
- ? Manwe
- 15.03.2020 01:56
Не понял я про Exolon. В результате работы копировщика на ленту записывается сам копировщик, а не игра.
- ? Manwe
- 24.02.2020 12:21
Спасибо, добавление директории Screenshots помогло.
Но забавно, что записанное видео получилось вверх ногами.
Ещё интересно: демо "Ray Dreams" в одной сцене переключает палитры каждый кадр. В реальном времени это выглядит правильно. А при записи видео возникают пробуксовки и синхронизация сбивается.
- ? Manwe
- 16.02.2020 10:57
Sandro, вот исходники демки с палитрами: http://thesands.ru/bk0010/democracy.zip
¤
Макс Багаев, поддомен на pdp-11.ru лучше назвать "sandro", а не "manwe", так как эмулятор его, а не мой :)
Впрочем, у меня тоже есть куча наработок, исходников демок, полезных программ и подпрограмм для БК, которые имеет смысл выложить и описать. И статьи.
- ? Manwe
- 15.02.2020 00:15
Вот на этой интре лучше всего тестировать переключение палитр по лучу:
https://www.pouet.net/prod.php?which=83604
- ? Manwe
- 14.02.2020 23:26
в 5-ой части демо Insult почему-то падающие звёзды только в левой части экрана показываются.
-
1 | 2 | 3 | 4 | 5 | »
?