- "СТОП" и Бейсик БК-0011М
-
? 3cky@ - 08.02.2013 12:07
В процессе работы над реализацией эмуляции 11М в BkEmu возник следующий непонятный момент. Если после запуска Бейсика нажимать кнопку "СТОП", то рано или поздно эмулятор повисает в бесконечном HALT. Анализ кода показал, что в процессе чтения с клавиатуры Бейсик активно щелкает страницами памяти и переписывает содержимое вектора 4. В результате, если нажатие кнопки "СТОП" произойдет в промежуток между сменой страницы и изменением вектора, то переход по вектору 4 произойдет в неинициализированную область, эмулятор сделает HALT и зациклится. Насколько я понимаю, на железной БК11М такого не происходило, и пока непонятно, каким образом разруливались такие логические гонки. Если у кого-то есть соображения по поводу - с удовольствием их выслушаю.
-
? gid - 08.02.2013 13:05
По показаниям эмулятора Калмыкова кнопка СТОП в бейсике заблокирована битом 12 регистра 177716.
И разблокировывается при операциях, которые в некоторых случаях требуется прерывать. Таких как чтение/запись с магнитофона, запуск программы, Может ещё чего-нибудь.
Как на реальной БК11М даже не знаю, стыдно признаться, но мне даже в голову не приходило запускать бейсик.
-
? 3cky@ - 08.02.2013 13:10
gid, кстати, насчет бита 12. Выставленный в 1 - он блокирует СТОП или разрешает его работу? Везде по-разному пишут. И если у Вас есть реальная 11М, не могли бы Вы попробовать нажать СТОП сразу после запуска Бейсика, будет ли реакция?
-
? MM@ - 08.02.2013 13:16
Косяков в 1801-й серии более, чем достаточно. Никак не разруливалось.
Для частичной компенсации лажи сделали кнопку "Стоп" отключаемой в БК11.
-
? gid - 08.02.2013 14:08
Да. Выставленный в 1 - он блокирует СТОП, сброшенный в 0 - разрешает. Я встречал только такое описание, и в документации на БК11М так же написано.
В общем, пока выводится на экран надпись "БЕЙСИК БК11/10 (с) ОКБ "ЭКСИТОН"" кнопка СТОП ещё не заблокирована, если в это время нажать СТОП, кнопка сразу же заблокируется, но буквы останутся удвоенной высоты и будут выводиться либо верхние их половины, либо нижние, зависит от того, когда нажали СТОП.
Сразу после вывода надписи, перед выводом сообщения Ок СТОП блокируется, и хоть обдолбись, ничего не изменится.
До реальной БК доберусь не скоро, так что, может если кто другой имеет под рукой БКшку сможет быстрее рассказать, что там происходит, Но я верю эмулятору Калмыкова, сам писал там всю эмуляцию поведения железа, и сравнивал с поведением реальной БК.
.
MM, и как связаны косяки 1801-й серии с небрежностью программирования? Если уж ввели страничную организацию памяти, извольте аккуратно обращаться со страницами, и не забывайте подключать нужные, перед тем, как обратиться в ту область, состояние которой неизвестно на момент перехода в неё. И не направляйте векторы в ту область памяти, содержимое которой может изменяться непредсказуемым образом из-за манипуляций пользователя. Кривость рук человеческих - разрушительный фактор огромной силы.
-
? 3cky@ - 08.02.2013 14:26
gid, спасибо за информацию, сделал блокировку СТОПа 12-м битом, действительно, теперь сам Бейсик не реагирует на красную кнопку, но операции, например, с магнитофоном ей прерываются. Просто я смотрел в коды эмуляторов BKTBL и Брухиса, реализации 12-го бита нет ни в том, ни в другом. В BKBTL проблем с кнопкой нет, ибо там IRQ1 почему-то маскируется через PSW. А у Брухиса по красной кнопке эмулятор вполне успешно попадает в двойное зависание и уходит на аппаратный сброс. В общем, пойду собирать релиз. :)
-
? Аноним - 08.02.2013 17:07
ждем релиз с поддержкой 11М
-
? MM@ - 08.02.2013 18:41
Насчет программирования.
ПЗУ для БК11 писались по договору человеком, цель которого была не принимать после сдачи темы рекламации на протяжении 25 лет, а
просто создать видимость работы программы. Обычно такой программный процесс происходит на удивление быстро - порядка 1 месяц -
пишется скелет на МАКРО, еще пару-тройку месяцев "обрабатываются напильником" на программно-аппаратных средствах, потом еще квартальчик пытаются сдать тему с доработками. А что в критических моментах врет прога или по-порнографически висит, типа "это
особенность аппаратуры !" - вот так заявляли программисты.
Не буду упоминать конкретные фамилии, а то помидоров несвежих не хватит у общественности...
А насчет аппаратных косяков в серии - весной подробно обсудим на этом форуме одну проблему по-существу. Нецензурной лексики
будет много (не моей!).
П.С. Кривейшим образом работает 1201.02 при критических программно-аппаратных переходах, но это уже отдельная тема. Извиняюсь.
-
? tim - 08.02.2013 19:10
На реальных БК0011 и 11м в Бейсике "стоп" лучше было не нажимать совсем, по кр.мере помню, что старался делать это как можно реже если пишется прога, связано видимо с дребезгом, причем на БК11 с его уебищ.. клавой эффект был более выражен.
-
? MM@ - 08.02.2013 19:28
Просто места на маме не хватило для элементарной защелки на "Останов". Даже диодик КД522 некуда было воткнуть (паралельно R5, плюсом
- к с1 (0.068мк, задает длительность "останова"), минусом - к регистру, от которого идет этот самый R5. Все боялись, что шибко
сильно будет перерасход электричества по отношению к БК0010 - БП не потянет. И по-нормальному пульт решили не прописывать
из-за лени (если по-существу вопроса) и необходимость доп. ОЗУ для корректного функционирования. Кстати, было мнение В МЭП, что
улучшенная по-серьезному БК0010 - это есть УКНЦ. Но "Э." готовил "ответный удар империи" - БК0100. Кто завалил проект - разрешите
скромно промолчать.
-
? Константин@ - 04.07.2017 04:55
Форум еще живет?
-
? svinka - 04.07.2017 17:38
Да ещё всех нас переживет
-
? Alexander Tishin@ - 05.07.2017 17:20
Кстати, СТОП вообще загадочная вещь. По идее, после входа в HALT режим повторные попытки входа должны игнорироваться. Но поди ж ты ...
- << Форум