Вложение 75607
Вид для печати
Доброго времени !
Нашел странный момент, на моей БК демка mx запускается очень изредка, и в основном на холодном компе, через например минут 10 после включения - не запускается, просто после G сразу говорит 001012 и снова показывает приглашение монитора, это если пытаться запустить на БК0011 или БК0011М, если пытаться запустить на БК0010 - то ничего не говорит, просто сразу после S показывает приглашение монитора "?".
Уточню, что так происходит на реальной БК0011 переделанной под БК0011М - с прошивками, от БК0010, БК0011 и БК0011М. Что то с железкой мне кажется. в 1006 - 1020 находятся следующие инструкции: 016701 172441 016702 053064 006001 006102 или в мнемониках:
MOV 172441, R1
MOV 053064, R2
ROR R1
ROL R2
Что может происходить на уровне железа, портящее работу этих комманд ?
Когда mx запускается, она такую матрицу рисует в динамике:
https://i.ibb.co/h28gxJj/mx.jpg
Проверял все это и без ре-мулятора на живых ПЗУ с БК0011, и с загруженным дампом 10 монитора с кассеты, результат 1 в 1. Причем, это единственная программа которая себя так ведет...
А нет, еще 14colours, на холодную запускается, и работает минут 5 - 6 а потом начинает исходить артефактами..
Выглядит это вот так:
https://i.ibb.co/RHfwQgD/14.jpg
Но искажения могут быть разными, когда только начинаются, по приятнее, а это уже жесть, после пары часов работы.
Что может быть ?
- - - Добавлено - - -
В каких либо других программах проблем не замечено, все работает.. А нет, еще hny2020, как то не так работает.. Но я не видел программу на другой машине, по этому не знаю как она должна выглядеть в идеале.
Вы немного неправильно дизассемблировали.
Останов на адресе 1012 происходит потому, что по адресу 173453 ничего нету. На БК 0010-01, там ПЗУ бейсика, на БК 0010 с фокалом, там ПЗУ МСТД, на БК 11(М) там обычно ничего нет, или если есть внешние устройства: или ОЗУ СМК или ПЗУ МСТД.Код:1006 016701 MOV 173453,R1
1010 172441
1012 016702 MOV 054102,R2
1014 053064
1016 006001 ROR R1
1020 006102 ROL R2
Остаётся непонятным, а с чего это вдруг нахолодную оно работает? откуда на холодной машине по адресу 173453 что-то берётся?
На самом деле, код должен быть такой:
Здесь задаются начальные значения для генератора псевдослучайных чисел.Код:MOV #173453,R1
MOV #54102,R2
Но из-за опечатки в исходнике числа превратились в адреса (смещения). А по этим адресам, как заметил gid, на голой БК ничего нет.
Поэтому рекомендую скачать исходник, исправить опечатку и скомпилировать заново: https://www.pouet.net/prod.php?which=84510
Возможно я предположил что на холодную, может что то запускалось перед программой, а может наоборот, ничего не запускалось, вот и предположил, что на холодную.... Просто по аналогии с 14colours предположил, что на холодную, потому что несколько раз запускалась программа, когда пробовал на БК10 - там работала всегда, а на железке БК0011М - иногда запускалась, но чаше выкидывало.
- - - Добавлено - - -
ТОгда все понятно, на БК0010 по этим адресам бейсик сидел, и там как то так совпало, что все работало. Сейчас у меня нет 10-01 с бейсиком, есть с фокалом. Ну и еще, подтверждается тем, что на разных конфигах с мстд, без мстд, на 11 или 11м - ведет себя по разному, где то 1012 пишет, где то виснет, когда запускаю под 0011 с МСТД - даже первые несколько строчек матрицы показывает, а потом темный экран... Спасибо, перекомпилю код и напишу.
- - - Добавлено - - -
Хотя в целом, я не компилил сам код этой демки, от куда то из инета взял..
- - - Добавлено - - -
Вот как раз от сюда я и брал бинарник, месяца 3 - 4 назад, это как раз результат его работы.
Наверное я просто не правильно написал адреса, переписал их просто от сюда: "1006 - 1020 находятся следующие инструкции: 016701 172441 016702 053064 006001 006102" прям в восьмиричном формате...
14colours при каждом включении БК может давать чуть разную картинку - это зависит от того, сколько тактов прошло от старта процессора до запуска демки. Отрисовка одной строки на экране БК 0011М длится 384 такта, за это время исполняется 5 команд изменения палитры. Но кратность начала команды - 4 такта. Так что первая команда может прийтись не на самое начало строки, а немного позже или раньше. Поэтому при каждом запуске картинка отличается.
Перед демкой запускается операционная система, она ожидает действий пользователя, ответа дисковода - разное число инструкций проходит. Кроме того, в динамической памяти один и тот же тест давал мне такой разброс результатов (возможно, что на разных стадиях прогрева, а может быть и просто так):
458.7-448.0 CPU cycles
394.7-384.0 CPU cycles
Скачать можно здесь https://www.pouet.net/prod.php?which=89386
Изменяется скорость выполнения инструкций процессором. Скорей всего, из-за прогрева меняется время отклика памяти, а это влияет на скорость выборки инструкций. Может быть старые конденсаторы как-то иначе себя ведут после прогрева (в схеме БК есть несколько аналоговых задержек цепочкой резистор-конденсатор).
У меня на одной БК 0011М такие же артефакты сразу на холодной машине. Но это особенный экземпляр с большой нагрузкой на шине (внутрь корпуса вставлен контроллер и физический HDD).
На другой машине (новодельная реплика БК 0011М) всё нормально и после включения, и по прошествии времени. Правда, я не пробовал ждать несколько часов. Потестирую.
Попробуйте исправленную версию в этом архиве, файл называется 13colours
Вложение 75915
Я вчера полдня гонял тесты, прогревал две БКшки. Одна показывала нормально, но через полтора часа прогрева началась деградация изображения. Буквально каждые 5-10 минут ухудшалось так:
https://imageup.ru/img137/3780251/b4...09306ce6d.jpeg
https://imageup.ru/img175/3780254/30...f1fc3c0b2.jpeg
https://imageup.ru/img165/3780256/ba...4d561d21c.jpeg
Вторая БКшка с самого начала неправильно показывала, и прогрев не повлиял.
В итоге я написал «13colours» с другим алгоритмом, отлично работает на первой БКшке и с эпизодическими артефактами на второй БКшке.
Это нормальная ситуация, я в свое время исследовал это явно:
https://forum.maxiol.com/index.php?showtopic=3897
собственно потому я и забил на всякие эффекты с переключением палитры в строке - 100% повторяемости, особенно с учетом разных частот машин - не получить.Цитата:
; ОТНОСИТЕЛЬНОЕ БЫСТРОДЕЙСТВИЕ (ДЛЯ БК11 И БК11М)
; ПОДПРОГРАММA БК11М: ( ДЛЯ БК-11 И БК-11М )
; ОТНОШЕНИЕ ТАЙМЕР(100) И СИТЕМНЫЙ ТАЙМЕР
; ЗАПИСАТЬ 177777 >> 177706
; 20 >> 177712
; СЧИТАТЬ 177710 >> TMCH
; 5MHz - 176337 +-1
; 4MHz - 176577 +-1
; 3MHz - 177037 +-1
; 2MHz - 177277 +-1
; 'ТЕПЛОЕ' БЫСТРОДЕЙСТВИЕ, ВЫЧИСЛЕННОЕ НА ОСНОВЕ ИДЕИ О
; ЗАДЕРЖКИ ИЗ ЗА ОЗУ ( ТЕПЛОЕ ПОТОМУ, ЧТО ЗАВИСИТ ОТ
; ТЕМПЕРАТУРЫ 037oЙ ПРОШИВКИ (5%) И ПРОЦЕССОРА(1%)
; А ТАКЖЕ ЗАВИСИТ ОТ ЕМКОСТИ ШИНЫ - А ИМЕННО ОТ КОЛИЧЕСТВА
; ПЗУ (1%) И Т.Д.
; ВЕЛИЧИНА ОЧЕНЬ ОТНОСИТЕЛЬНАЯ !
; ИДЕЯ ПРИНАДЛЕЖИТ БАГАЕВУ МАКСИМУ ( BMScorp )
; ПОМОГАЛ ОСУЩЕСТВЛЯТЬ ФЕДОРОВ ЮРИЙ ( PUSScorp )
; СВОДКА:
; ==============================================
; = MHz = холодный = горячий (6часов) = МАШИНА =
; ==============================================
; = 5 = 104ХХХ = 101ХХХ = БК 11М =
; =-----=----------=------------------=--------=
; = 4 = = 114ХХХ = БК 11М =
; =-----=----------=------------------=--------=
; = 3 = 127ХХХ = = БК 10 =
; =-----=----------=------------------=--------=
; = = = = =
; =-----=----------=------------------=--------=
я сужу по своей статистике
те у меня половина знакомых переделала 10ки на 6MHz (вторая половина тоже пыталась, но не все 10ки успешно разгоняются)
причем 10ку надо было гнать явно тк на 3MHz она плохо работала с дисководом
11М переделывали реже ибо на 6MHz она заводится плохо - те гоюки не побеждаемы на оригинальных платах
а 5MHz требует отдельного генератора
работая в сервисе, я переделал кучу машин на 5MHz и еще больше 10ок на 6MHz
Даже на 4 МГц у разных БК0011М чуть разное быстродействие. Есть инструкции, которые исполняются то за 32, то за 48 тактов (в зависимости от фазы регенерации памяти), и вот здесь происходит разное на разных БКшках. Поэтому одни машины справляются с видеоэффектами, привязанными к ходу луча, а у других всё съезжает.
- - - Добавлено - - -
У меня была БК 0010 на 5 МГц, но удивительно что больше я таких не встречал в округе. У всех либо 3, либо 6.
Будь я БКашником, давно бы уже привесил к 10-ке и доп. память, и второй экран, сделав подобие 11-й.
С палитрами посложнее, но тоже реализуемо при желании.
Правда, полной совместимости с 11-й не будет, но иметь что-то лучше, чем ничего.
Хотя бы ввести в 10-ку имеющееся в 11-й прерывание по КС, не думаю, что это большая проблема.
Ага, за 15 тысяч. Голую. К которой еще подавай контроллер дисковода и прочее.
Проще найти 10-ку без кондеров за условные три и переделать, но почему-то всем лень.
Да даже если забить на эти переделки. Где 11М в свободной продаже? На руках штучные экземпляры.
За которые и ломят дикую цену, ибо знают, что товар штучный.
- - - Добавлено - - -
Тут да, вопросов нет. Вернее, у меня вопрос один: каким макаром играли AY-музыку, заточенную под кадровые прерывания,
при физическом отсутствии этих самых прерываний. Хитрожопые извраты с таймером, который еще и не на всех БК был, не в счет.
Тем более, насколько понял из чтения доков, при турбировании проца все задержки этого таймера полетят к черту.
я уже объяснил, что задача трудоемкая и труд тех кто может переделать стоит дороже чем разница
скоро выставлю несколько штук на продажу на БарахолкеЦитата:
Да даже если забить на эти переделки. Где 11М в свободной продаже? На руках штучные экземпляры.
За которые и ломят дикую цену, ибо знают, что товар штучный.
про MSX уже писали - я сам недавно лишнюю машинку продал за 40к
в 1801ВМ1 есть системный траймер внутри процаЦитата:
Тут да, вопросов нет. Вернее, у меня вопрос один: каким макаром играли AY-музыку, заточенную под кадровые прерывания,
при физическом отсутствии этих самых прерываний.
никто не мешает определить частоту и провести коррекциюЦитата:
Тем более, насколько понял из чтения доков, при турбировании проца все задержки этого таймера полетят к черту.
Цитата из книги Зальцмана:
На некоторых экземплярах БК-0010(.01) системный (встроенный) таймер отсутствует или неисправен, в этом случае предложенная ниже в качестве ответа на данный вопрос программа
не будет работать вовсе или могут наблюдаться различные отклонения от её правильного функционирования (например, итерируемые случайные числа могут превышать #377
Поскольку таймер по техническим условиям в состав БК-0010 не входит, то на некоторых экземплярах его регистры могут быть неисправны, что не служит основанием для предъявления претензий заводу-изготовителю
Это и есть хваленый встроенный таймер? Каких-либо данных о другом встроенном таймере я не нашел. Если он есть - информацию, пожалуйста.
Если же для отсчета времени применять вышеупомянутый таймер, то сталкиваемся с серьезным ограничением: нужно регулярно (и довольно часто) перечитывать его значение.
Делать в работающем в реалтайме коде разрывы спецом для проверки таймера? Бред какой-то, таймер должен вызывать прерывание независимо от запущенного основного кода.
Вся идея прерывания по КС, реализованного в 0011, в этом и заключается. Обновился кадр - пришло прерывание.
Оригинально у вас на БК турбо переключается)) Обычно на переднюю панель выведена кнопка или микрик, можно щелкать туда-обратно прямо на ходу.
Зачем это делать? Ну, знаете ли, некоторым интересно сравнить работу приложения в обычном и турбо-режимах, не вскрывая каждый раз корпус.
Плюс наверняка есть проги, заточенные именно под турбо. Для их запуска тоже каждый раз комп разбирать?
В оригинале на БК никакого "турбо" нет. Потому если кто и встроил сам такую кнопку - это самодельщина, со всеми вытекающими. У меня на реплике такой переключатель есть, но я ни разу им не пользовался, т.к. не вижу смысла. Что ускорять? Клад? Он итак носится на 11М быстрее, чем на 10.
Да нет таких прог, потому и разбирать не надо ))
Вот!! Это и есть наглядный пример последствий отсутствия прерывания, завязанного на фиксированный промежуток времени (КС или другой).
Которое можно было бы использовать для развязки скорости исполнения кода и скорости процессора.
Под Турбо заточена демка Bad Apple, которая с ковоксом, но она изначально для 11М... https://www.youtube.com/watch?v=8Q1vN51o-Dg
Так его писали под 10ку, где прерывания по таймеру из коробки не было. В 11М это есть штатно, как и многое другое. В дальнейших расшриениях (SMK-512, AZ) есть еще больше возможностей, вплоть до выхода в интернет. Чего пинать первую модель компа? )
Ок, одна прога нашлась ))
да, на самом деле были партии процессоров с неисправным таймером, но это было в начале. Уже в 92м когда устройство таймера раскопали полностью и его стали использовать в программах, неисправные процессора меняли сразу в сервисах.
Cейчас найти БК с неисправным таймером сложно, разве что из старых партий.
В общем, это и есть тот самый таймер. Следовательно, чтобы точно отмерить начало кадра (к примеру), мне нужно извращаться, как делал Manwe, с помощью юзера выставляя его.
Но это полбеды. Выставить я, допустим, выставлю. Но затем нужно вручную опрашивать таймер, при этом довольно плотно рассчитав остальной код, чтобы не "прозевать момент".
Я к тому, что играть AY-музыку, например, подлавливая отсчеты таймера, вместо проигрывания по прерыванию - это конкретное извращение. Основной код вынужден будет простаивать в ожидании.
Впрочем, как сказал камрад grf, зачем пинать первую модель, при создании на мультимедиа-удобства никак не рассчитанную. На этом обсуждение можно закрыть))
Ставили генератор прерываний. Есть несколько демок для БК 0010 с кадровым таймером и AY. Демки называются PotDemo1, PotDemo2,.. PotDemo9. Написал их Арсений Винников, который устанавливал AY с таймером на БК 0010 всем желающим. Ну то есть не "написал", а переделал демки RDC (TopDemo1-9) для БК 0011М так, чтобы они шли на БК 0010. А я снабдил несколько классических БКшных игр AY-музыкой и с удовольствием играл в них на 10-ке.
Она без турбо, работает на стандартных 4 МГц.
Для 6 МГц другая
В принципе, очевидное решение. Интересно, в эмуляторе от gid есть опция "прерывания по КС в режиме БК-0010"? =)
Про демки, да перепутал одну с другой. Но обе сделаны довольно качественно.
- - - Добавлено - - -
Была бы она в наличии, эта машина =)) Как правильно сказал nzeemin - в СССР были рады любой, ибо не было никаких.
вот видишь. ты это знаешь и понимаешь. сейчас.
мне всегда нравилась подобная позиция инженеров. Это детям не нужно. Почему? Ну потому. Зачем им.Цитата:
ну давайте честно, для детей этот таймер совершенно не нужен
им бейсика с головой
Прежде всего дети видят ПО и это ПО может работать, а может не работать или работать но не совсем.Цитата:
а если дети доросли до ассемблера - ну сообразят на какой машине гонять таймер
Чаще всего игры. Нет игр - нет интереса к компьютеру.
например King'S Valley. Отличная игра для БК - но работает не везде.
потом ты видишь игры с других машин. И они там лучше.
А потом приходит понимание что, где и как можно было сделать лучше.
И вот ты читаешь высказывания "инженеров"
такие как
"Прерывания на компьютере не нужны"
"Цветная графика не нужна"
"возможность отключения ПЗУ абсолютно бесполезное, все что нам нужно мы уже запихали в пзу, и даже ошибки"
"стандарт Ascii придумали идиоты, мы запихаем в знакогенератор какие нибудь символы и их хватит"
Детей учили писать программы на
Pascal
Logo
Basic
Forth
итд
я вообще начинал на МК61
Твоё передергивание совершенно не к чему.Цитата:
Судя по всему, надо ставить в классах PlayStation, тогда программирование попрет.
Консоль не компьютер.
Наибольший вклад в мировой интерес к информатике внес Apple II, а не БК.
И он был на голову выше БК при том, что имел проц слабее, был выпущен раньше - выпущенный позже мог учесть ошибки предыдущего поколения.
я знаю что 1801ВМ1 разрабатывался для военных.
но БК0010 к армии отношения не имеет.
Поддерживаю предыдущ... то есть данного оратора (с)
Прямоугольные вытянутые пикселы, отсутствие прерываний для времянок (хоть по КС, хоть других), жуткая кодировка,
чумовой JCUKEN-расклад клавы, скан только одной кнопки в момент времени... для программиста все это сущий кошмар на улице Вязов.
На данном временном отрезке - примерно так и есть. Никто не будет кодить на архаичном компе и устаревших языках.
Я не про БК в данном случае, а про осознание нынешними детьми возможностей того, на чем они нынче сидят в инете или играют.
Почему на уроках информатики вместо изучения DirectX и сопоставимого софта до сих пор вбивают непонятную муть про первые процессоры - загадка.
А олимпиадные задачи по информатике почти не изменились с моих школьных лет (четверть века), это голая математика и ноль кода.
Там компы вообще не нужны, там одни формулы (если знаешь). Меня такая олимпиада не интересовала.