-
- ? Manwe
- 03.04.2019 21:21
Спасибо. Мне переходник в обратную сторону нужен, но я понял – спаять можно.
- ? Manwe
- 03.04.2019 17:23
Не совсем про таймер вопрос, но близко:
У меня есть программа, которая вычисляет как долго (в тактах процессора) выполняется поданный ей на вход блок кода. Делается это по внутреннему таймеру процессора. Могу рассказать подробности и дать ссылку на исходники, но это не важно - главное, что в точности работы программы я уверен.
И вот мне попалась заводская БК-0011М, выпущенная в январе 1994-го года. С ней такая странность:
иногда тест показывает что блок кода выполняется 448 тактов, а иногда - 458.66 тактов;
другой блок кода показывает то 384 такта, то 394.66
При этом БК подглючивает в демке Insult: https://youtu.be/K13FU9bbLYg
Это как будто зависит от удачного/неудачного включения компьютера: если тест прошёл нормально (целое число тактов), то он так и будет выдавать это значение при каждом запуске. Если компьютер включился ненормально - тест всегда будет выдавать странное значение.
От чего это может зависеть? Несинхронный пуск ВМ1 и ВП1?
- ? Manwe
- 03.04.2019 17:11
Новая версия: https://play.google.com/store/apps/details?id=su.comp.bk
- ? Manwe
- 03.04.2019 17:09
Кстати, а плоская плёночная клавиатура совместима по сигналам с более поздней механической? Можно ли плоскую припаять к более поздней БК-0010-01?
- ? Manwe
- 03.04.2019 17:01
Спасибо, про ошибки полезное соображение, сам бы не догадался.
А на БК0011 (без М) где стек?
- ? Manwe
- 02.04.2019 17:28
А на слух файлы с разной частотой звучат одинаково?
- ? Manwe
- 02.04.2019 17:23
Я хочу чтобы моя программа (эмулятор Монитора БК-0010) сама запускалась на 11-ой при загрузке с магнитофона. Видимо, надо компилировать её с адреса 44000 (плюс автозапуск в начале). Буду разбираться.
- ? Manwe
- 02.04.2019 07:02
Всё осложняется тем, что Монитор БК-0011М помещает указатель стека куда-то в район 44000, а Монитор БК-0011 куда-то в район 43000. Придётся поковырять исходники, чтобы узнать точные значения.
- ? Manwe
- 01.04.2019 22:45
[Как только мне подскажут, как надо делать правильно, чтобы передискретизировать из любой частоты в любую]
В данном случае – без интерполяции.
Допустим, надо преобразовать файл 44.1 КГц в 48 КГц. Двигаем первый указатель по файлу с шагом 0.91875 (44.1/48), а второй указатель с шагом 1. Берём целую часть от первого указателя и выбираем значение от туда. Помещаем по адресу второго указателя.
Если 48 КГц преобразуем в 44.1 КГц, то первый указатель двигаем с шагом 48/44,1.
Ну и я всё же из лучших побуждений советую добавить возможность записывать звук биппера в Wav без эмуляции конденсатора. Тогда мы сможем пользоваться крутыми штуками типа HELP4, HELP7, HELP12.
- ? Manwe
- 01.04.2019 13:52
Проверил. Запусти в эмуляторе копировщик HELP12. Записал из эмулятора WAV. 44 КГц 16 бит. Считал на живой БК. Результаты такие:
В обычном формате (первая часть WAVа) программа грузится. В формате HELP12 (вторая часть WAVа) не грузится.
Вероятно, сглаживание подкузьмило.
- ? Manwe
- 01.04.2019 13:35
[чтобы звук пищалки был похож на настоящий]
Это здорово, но кажется более подходящим к режиму "фильтр". В эмуляторах Amiga фильтр включается отдельной опцией, чтобы было похоже на реальное железо.
Всё же чистый цифровой звук имеет свою ценность.
¤
[что никак не мешает записи а потом и чтению с магнитофона]
Сдаётся мне, что уже сглаженный звук после пересчёта на 22 КГц испортится и будет плохо читаться. Я проверю.
- ? Manwe
- 01.04.2019 13:29
Ну, в общем, я сделал BK0010 Game Loader: https://zx-pk.ru/threads/30298-zagruzka-s-magnitofona-na-bk-0011(m).html
Единственное, не разобрался с автозапуском в Мониторе БК-0011М. Видимо, при загрузке с магнитофона Монитор-11 устанавливает стек куда-то не туда, где мы привыкли :)
- ? Manwe
- 01.04.2019 11:48
WAV, полученный из bin с помощью утилиты конвертации - идеальный, в нём чистая квадратная волна. Даже после перевода в 22 КГц (без интерполяции, просто выборкой каждого второго байта) такой WAV читается живой БКшкой без проблем с первого раза (пробовал с iPhone на максимальной громкости).
¤
А вот WAV, сграбленный из эмулятора в реальном времени (кнопка записи в окне "Управление чтением/записью лент") - совсем не такой. Он сильно сглаженный (хотя фильтр у меня отключен). Проверял копировщиком HELP12 (он в начале пишет загрузчик в обычном формате).
Что кажется довольно странным: ведь динамик однобитный и на выходе должна получиться та же квадратная волна. Я опасаюсь, что сглаженный звук ухудшает качество чтения такого WAVа на реальной БК.
- ? Manwe
- 31.03.2019 22:12
Помню, задавал такой же вопрос. Как-то незаметно на разъёме написано «А» и «В». Особенно удивило, что «Б» не по-русски. При том, что на ответных разъёмах пишут 6азвание («СНП») русскими буквами.
Ну и чтобы два раза не вставать: очень странно, что у русской БК нет русской буквы Ё :)
- ? Manwe
- 31.03.2019 22:04
У меня есть рациональное предложение для одной из функций эмулятора:
конвертирование bin в wav делать в формате 22 КГц моно 8 бит. Будет занимать в 8 раз меньше места (сейчас качество избыточное). Для теста сконвертировал в такой формат аудиоредактором, запустил с iPhone – БК читает без проблем.
- ? Manwe
- 31.03.2019 21:59
Загружаю игры на БК-0011М с магнитофона командой L в мониторе.
Старые игры типа Sheriff и Diversant запускаются, но быстро вылетают - судя по всему, обламываются о команды EMT, которые в БК-0011М и БК-0010 совершенно разные.
Вот думаю – может быть написать какой-нибудь конвертер, который приклеивает к игре кусок Монитора от БК-0010 и кидает его в верхнюю страницу памяти перед запуском игры? Пригодится это кому-нибудь? Речь, конечно, о людях, у которых нет дисководов и винчестеров. Такие могут быть среди коллекционеров ретро-железа.
- ? Manwe
- 22.11.2018 10:18
gid, я как-то сохранил memory state, думал из него выдрать данные. Да так и не разобрался. Смещения не фиксированные, долго ковыряться вручную с заголовком, чтобы понять где что.
- ? Manwe
- 16.11.2018 00:32
Вроде, доделал.
Потестируйте, пожалуйста, кто любит играть в леталки :)
https://zx-pk.ru/threads/29756-patchi-k-igram.html
- ? Manwe
- 15.11.2018 23:56
у Lasoft’а и на 4 МГц перегревается когда демки долго крутит – в Казани летом жарко :) Может быть даже не только на центральный процессор, но и на видеоконтроллер полезно прикрутить радиатор.
¤
Antiofftopic: на счёт софта для СОЮЗ-НЕОНа, думаю компилятор PDPy11 допилить соответственно. ДЛЯ УКНЦ уже добавили возможности. Можно будет попробовать написать проигрыватель трекерной музыки для начала.
- ? Manwe
- 15.11.2018 21:57
Не первый раз уже такая проблема: при переносе файлов между системами ANDOS и MKDOS содержимое портится. Долго бился над тем, что первый уровень игры не работает, а потом заново скопировал LEVEL1.K и всё заработало. Засада в том, что все уровни вплоть до 6-го не проверишь - не проходить же игру до конца!
- ? Manwe
- 15.11.2018 18:54
Прогресс: демо-режим хакнул. Теперь работает без MUL.
Игровой режим, оказывается, сделан отдельным исполняемым файлом с точно таким же кодом :) Сейчас буду искать и ковырять этот файл.
- ? Manwe
- 15.11.2018 15:24
Хм, простая замена кусков кода в исходном файле привела к неожиданному результату: всё работает, но корабль "разбивается" об воздух буквально сразу.
Нет там каких-нибудь подводных камней типа подсчёта контрольной суммы файла или ещё чего-нибудь в этом роде? Я лишь расксорил файл, заменил фрагменты кода и заксорил обратно. Сам код выглядит как и при замене в отладчике "на горячую". Проблема возникла в каком-то другом месте.
- ? Manwe
- 15.11.2018 12:46
Правительство да. Надо сделать игру про это :)
Что до клёвых игр, то есть дешёвый вариант: GameBoy Advanced или Nintendo DS - там умопомрачительная библиотека игр, половина из которых стоят всех БК-шных и современных PC-шных игр вместе взятых. И время экономится: в GameBoy Advanced или Nintendo DS можно играть по дороге в метро или в автобусе.
- ? Manwe
- 15.11.2018 12:05
а, ясно - файл LEVEL5.DEM заксорен числом 10133...
- ? Manwe
- 15.11.2018 11:38
В памяти в десяти разных местах лежит такой код:
MOV #160016,@10
MUL #100,R1
¤
Эту дичь нужно заменить во всех местах на
SWAB R1
CLC
ROR R1
ASR R1
NOP
¤
Я заменял в отладчике на ходу, смотрел игру в режиме демо - всё работает, ничего не вылетает, никаких обращений к драйверу расширенной арифметики больше нет. Может быть в каком-нибудь другом месте игры (концовка? уровень с боссом?) ещё всплывёт MUL или DIV, но пока нет.
¤
Осталось определить в каком файле хранится этот код. Простым поиском по "160016" (0xE00E) не нашёл ни в одном файле.
gid, есть идеи?
- ? Manwe
- 15.11.2018 08:44
Надо обязательно ставить радиатор на процессор.
И на реплики БК, кстати, тоже.
Корпус - не самое главное. Лишь бы клавиатура была.
- ? Manwe
- 15.11.2018 00:03
Смотрю Overkill в отладчике - смешно:
MUL #100,R0
Не мог человек просто сделать
SWAB R1
ASR R1
ASR R1
?
Надо поковырять что там ещё есть. А то, может, и не нужен ей полноценный драйвер расширенной арифметики?
А то на моём она в какой-то момент вылетает. Хотя он проходит все синтетические тесты на 100%.
- ? Manwe
- 07.11.2018 22:41
Всё-таки полезно решать задачи, не подсматривая в чужие решения :)
Написал тест для своего эмулятора расширенной арифметики. Сравнил с драйвером из SETMBR.
Прогон одиннадцати команд ASH с разнообразными параметрами и типами адресации показал, что моя программа на 23% быстрее.
Завтра доберусь до остальных команд.
- ? Manwe
- 07.11.2018 14:25
Спасибо, теперь вник с кластерами.
Размер файла SFOGUS.EXE 30336, до полного кластера (34000) остаётся 3442 байта - можно впихнуть туда всё что угодно :)
- ? Manwe
- 06.11.2018 22:59
А как объяснить что если в ANDOS выделить все файлы и директории, их суммарный размер в блоках намного меньше 1600?
- ? Manwe
- 06.11.2018 19:13
Ну ладно, я написал свой установщик EIS :)
gid, можно его как-то закинуть на диск "Overkill"? Там на образе дискеты 0 свободных блоков, но в реальности файлы занимают не всю дискету.
- ? Manwe
- 06.11.2018 18:07
Вот что сразу непонятно:
запускаю EM2 в чистой MKDOS. Драйвер помещается по адресу 170000.
Первое слово - длина. 334 байта. Примерно так и есть (на самом деле 322).
Второе слово - список адресов ячеек-указателей, через которые производится адресация к данному участку памяти, список оканчивается нулем (цитата из документации). Там число 175776, как и ожидалось.
Третье слово - 0. Конец списка.
Казалось бы, следом должен начаться сам драйвер. С драйвером EIS так и было. А вот с EM2 - не так!
Четвёртое слово - какой-то мусор (54363).
И только с адреса 170010 начинается сам драйвер. Это же значение прописано в @#175776.
Налицо нарушение протокола! Или я чего-то не понимаю?
- ? Manwe
- 06.11.2018 17:34
Выковыриваю драйвер EIS из MBR. Хочу сделать его отдельно запускаемым перед игрой, чтобы игра не зависела от содержимого MBR.
Вырисовываются проблемы на горизонте:
1. Какие-то драйвера уже могут быть загружены, например тот же EM2 (представление логического диска под видом дисковода A: или B:), нельзя их перетирать;
2. Драйвер EIS должен определять не загружен ли он уже (из MBR или отдельно), и если да, то повторно не устанавливаться (а то может не хватить памяти);
3. В теории бывают разные драйвера EIS и просто так сравнением кода не определишь загружен EIS-драйвер или нет.
- ? Manwe
- 06.11.2018 00:31
Минуточку, а не решается ли всё одной командой? MOV #160016,@#10
¤
Из документации к контроллерам AltPro:
160016 Точка входа эмулятора расширенной арифметики
Эмулируются команды EIS: MUL, DIV, ASH и ASHC.
Чтобы подключить эмулятор, занесите адрес его начала в вектор 10(8). При прерывании по резервной команде происходит обращение к эмулятору. Если код команды, вызвавшей прерывание, не является кодом одной из вышеперчисленных команд, происходит выход по вектору 4 с установленным битом C (стандарт RT11), иначе - выполняется программная эмуляция команды.
Имеется возможность подключения пользовательского драйвера расширенной арифметики (см. ниже).
- ? Manwe
- 05.11.2018 23:35
Я так понимаю, можно взять этот драйвер с нулевой дорожки, сделать отдельный исполняемый файл для его резидентной загрузки и присовокупить к Overkill.
- ? Manwe
- 05.11.2018 23:01
Что-то я не нашёл как потом удалить этот драйвер EIS из MBR...
- ? Manwe
- 01.11.2018 13:43
Прописать в загрузчик не проблема, в документации к контроллеру АльтПро описано.
Вопрос в том где именно эту библиотеку размещать в памяти, ну и собственно сама библиотека нужна.
¤
Я правильно понимаю, что можно прописать библиотеку в загрущчик логического диска, смонтировать его програамой EM и загрузиться с него де?
- ? Manwe
- 31.10.2018 20:17
а что за "драйвер EIS/FIS" там в описании упомянут?
- ? Manwe
- 29.10.2018 19:58
Вот здесь потыкайте в названия игр, посмотрите скриншоты:
https://r-games.net/games/flight/
- ? Manwe
- 27.10.2018 21:35
BD, спасибо, так и сделал в итоге. А EM не работет без SMK, на это есть объективная причина?
- ? Manwe
- 26.10.2018 23:39
Кто-нибудь пробовал запускать игру Miami Cobra с логического диска? Похоже, она тоже по номерам блоков читает и сильно промахивается, когда не с обычного диска запущена, а с логического.
- ? Manwe
- 26.10.2018 23:37
Фотки очень мутные, трудно понять - это БК-0011 или БК-0011М? Если бы М, то я взял одну в Москве, без дисковода и без всяких лишних блоков.
- ? Manwe
- 20.10.2018 14:55
Sandro, это хорошие новости!
Лицензия MIT - это правильно.
Информация про контроллер SMK: http://forum.pk-fpga.ru/viewtopic.php?f=39&t=5401
- ? Manwe
- 26.09.2018 22:22
MKDOS 3.18 внезапно не работает на БК-0010 с контроллером SMK-512 :(
- ? Manwe
- 22.09.2018 21:09
Причём Covox можно паять поверх блока нагрузок, чтобы и то и другое одновременно работало.
- ? Manwe
- 21.09.2018 22:53
gid, ну я так и предположил. Раз нет прерывания при попытке записи в высокие адреса, значит там _не_только_ ПЗУ, а какая-то каша :)
- ? Manwe
- 21.09.2018 19:05
Был какой-то тест для контроллеров SMK, написанный, вроде, gid’ом. Он как раз проверяет что нам нужно: записывает что-то в верхнюю память, потом считывает и сравнивает.
- ? Manwe
- 21.09.2018 18:57
> BD: просто вместо ПЗУ память СМК нельзя подключить.
¤
Если верить моему сообщению, написанному 20.09.2018 в 18:37, то нам удалось по крайней мере записать данные по адресу 140000 и выше. Если бы там была ПЗУ, сработало бы прерывание по 4-му вектору и показался бы грустный Макинтош, причём это произошло бы даже не на изменённой демке. То есть S_V_B с самого начала жаловался бы не на зависание, а на грустный Макинтош.
Выходит, записать перебросить код по адресам 140000-160000 мы можем, но когда пытаемся его там выполнить, происходит странное. Типа, данные ОЗУ SMK смешиваются с данными ПЗУ. Может такое быть?
- ? Manwe
- 21.09.2018 17:28
Теперь в GoodApple.EXE с адреса 5624 пишем 137,5252. Не забываем предварительно восстановить чистый исходный файл из резервной копии.
Этим мы проверим выполняется ли код, переброшенный в дополнительную память SMK по адресу 140000.
¤
Если грустный Мак показывается, восстанавливаем чистый GoodApple.EXE и пробуем адрес 5740.
- ? Manwe
- 20.09.2018 23:21
Maxvel@, а по адресам 100000-137777 всё нормально?
¤
S_V_B, в обоих случаях показывается Макинтош? Даже по адресу 5022 ?
-
«
1 | 2 | 3 | 4 | 5 | »
?