ivagor, в виду засады с режимом 0 я подправил твой сорс на режим 1. Все заработало, в 1, 3 и 4 был звук. Мафон не проверял, если только ближе к вечеру.
ivagor, в виду засады с режимом 0 я подправил твой сорс на режим 1. Все заработало, в 1, 3 и 4 был звук. Мафон не проверял, если только ближе к вечеру.
В "предыдущем цикле" (в 2008-2009) разборок с ПК8000 везде использовал "осторожную" процедуру очистки экрана, которая трогала только первые 40 символов строки, а тут решил попробовать не одобренный вариант.
Описание (причем эта инфа есть только в доках Суры) явно писали не сами разработчики, т.к. ПЗУшка пишет в конце каждой строки 05 06 0D 0E 00. Рискну предположить почему так: возможно регенерация (по крайней мере в активной области) осуществляется перебором 7 младших (по отношению к процу) разрядов адреса. В SCR1/2 это происходит автоматом за 4 символьных (или за 32 пиксельных) строки, а в SCR0 видеоконтроллер не успевает за 160 тактов выбрать 64 символа, поэтому нужно ему "помогать". При выводе активной части экрана охватываются значения 0-39. Символ 5 - это значения младших разрядов адреса (в знакогенераторе) 40-47, символ 6 - 48-55, остаются 56-63. Скорее всего видеоконтроллер пробегает по 56-63 сам (времени сбоку для этого достаточно) и ни 07 ни 0F не обязательны. Касательно использования не только 05, 06, но и 0D, 0E - сложно сказать, наглостью с моей стороны было бы утверждение, что это точно не нужно. Интересная тема, хотелось бы проверить "забывание" части ОЗУ при отсутствии в строке символов с указанными значениями младших бит. Может даже тестик попытаюсь соорудить.
По поводу недокументированного режима - по крайней мере видно, что по результатам отображения он не совпадает ни с одним из документированных, а может и вобще ничего не показывает.
И ведь не поспоришь, хотя создатели ПК8000 постарались, чтобы жизнь медом не казалась.
Провокация была направлена в другую сторону, а формально, конечно, мое утверждение ошибочно.
Последний раз редактировалось ivagor; 18.02.2013 в 12:26.
cy6(26.02.2023)
Можно по разному тестировать эту штуку, но я пока решил попробовать так:
1. Загружаем, стартует, пишет вверху NoKill, экран раз за разом заполняется символами.
2. Жмем пробел, пишет Kill 05 и или зависает/рестартует/портит экран или работает как п.1.
3. Жмем пробел, пишет Kill 05&06 и или зависает/рестартует/портит экран или работает как п.1.
4. Жмем пробел, пишет Kill 05&06&0D и или зависает/рестартует/портит экран или работает как п.1.
5. Жмем пробел, пишет Kill 05&06&0D&0E и или зависает/рестартует/портит экран или работает как п.1.
6. Жмем пробел (хотя вряд ли до сюда доживет) и выходим в бейсик (рестартуем)
Интересно, на каком этапе все испортится.
"REGEN2 - возвращение ivagora, смотрите на экранах ПК8000 вашего города!" (с)
Еще одна попытка. Загружаем, стартует, выводит в левом верхнем углу 4 символа с кодами 0-3 - "пусто", черная рожа, белая рожа, сердце (остальной экран заполнен пробелами, визуально неотличимыми от символа 0). Неприятно жужжит. В эмуляторе так и будет.
Возможно на реале через некоторое время (хотя бы полминуты-минуту, но, думаю, если изменятся, то раньше) символы изменятся, например на Ъ.
Фокус не удался, факир был пьян.
Тогда попытаемся повторить "удачный" опыт - можешь запустить исходный вариант SNDTAP отсюда?
Как я понял, на реале он рестартует после первого нажатия клавиши. Можешь после рестарта выгрузить из ПК8000
bsave"какое-нибудь имя",32768,33061,32768
в WAV и выложить на форум?
Вроде что-то записалось.
http://yadi.sk/d/ZFRerIEz2jMS5
Если что могу повторить.
Похоже мы на верном пути - видно, что значения пяти ячеек "испортились". Наверно стоит попробовать развить успех
regen3.zip
После загрузки, стартует, выводит надпись и ждет нажатия любой клавиши. Лучше сразу не жать а немножко (пусть полминуты) подождать. После нажатия рестартует.
После рестарта пишем результаты (долго)
bsave"DUMP",16387,61269,16387
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)