Spectrum Progress #01
30 сентября 1996
  Софт  

Записки программиста - глюк монитора отладчика в ZS Scorpion 256.

<b>Записки программиста</b> - глюк монитора отладчика в ZS Scorpion 256.

Программное обеспечение Глюки и проблемы

  Если  заглянем  в  "Англо-русский словарь по
основам компьютерной грамотности", то прочита-
ем, что  glitch (читается - "глитч") - кратко-
временная импульсная помеха, а ещё - хроничес-
кий дефект, имеющий своей причиной неправильно
сформулированные требования к программе.
  Так, вот.  Если где-то там,  у кого-то имеет
место  "дефект, имеющий своей причиной...", то
это  несомненно - глитч.  Но  если врёт родной
компьютер, то это всё-таки - глюк.

  (C) Александр Майоров (MAS), 1996.



  С  тех  пор, как я расширил свой Compоsite 48
до Scorpion 256, у меня врямя от времени возни-
кал  один и тот же вопрос. Почему всякие "ксор-
ки" с регистром  <R>  нужно проходить полностью
либо в режиме трассировки, либо в реальном вре-
мени,  и  нельзя  часть  оттрассировать,  а ос-
тальное выполнить в реальном времени?

  Особо меня это не беспокоило, но вот недавно,
внимательно  глядя  на  экран  при  трассировке
STS-ом и Monitor-ом одной и той-же программы, я
"поймал" этот глюк.

  Все дело в том, что работа с регистром <R>
  в скорпионовском мониторе  реализована  не
  совсем правильно!

  Сразу хочу сказать, что этот глюк присутству-
ет на всех версиях Скорпиона, какие я смог най-
ти:  Version 2.7b, 2.95 и, даже, на проф-версии
     3.42!!!

  А теперь конкретнее о глюке: виноваты команды

                LD R,A и LD A,R.

  Начнем с первой.

  Пишем ма-аленькую программку:

  DI
  LD A,#00
  LD R,A

  и получаем такие результаты:

- в режиме трассировки в <R> будет:
  STS:  R=#00 (как и должно быть)
  MONITOR:  R=#01 (глюк-с...)

- в режиме реального времени
  (т.е. ставим breakpoint после LD R,A)
  STS:  R=#00 (что и следовало ожидать)
  MONITOR:  R=#02 (..........!!!)

  А теперь команда LD A,R:

- STS: после выполнения в аккумуляторе,
  а также в регистре <R>, будет находиться
  значение регистра регенерации перед
  командой, плюс два.
  (Что соответствует справочным данным)

- MONITOR: после команды регистр <R>
  увеличится на два, но в аккумулятор
  попадет значение регистра <R> перед
  командой, ПЛЮС ОДИН!!!
  (Т.е. на ЕДЕНИЦУ МЕНЬШЕ, чем должно быть)


  Если кто-то не понял вышесказаное, то
посмотрите ниженарисованую табличку:

 ┌─────────────────────────────────────┐
 │      выполнение команды LD A,R      │
 ├────────────┬──────────┬─────────────┤
 │            │регистр R │ Аккумулятор │
 ├────────────┼──────────┼─────────────┤
 │до команды  │   #00    │    любое    │
 ├────────────┼──────────┼─────────────┤
 │в STS-е     │   #02    │     #02     │
 ├────────────┼──────────┼─────────────┤
 │в MONITOR-е │   #02    │     #01     │
 └────────────┴──────────┴─────────────┘

   По-моему тут все ясно.


  Я  надеюсь, вы уже догадались почему "ксорки"
нормально проходятся в режиме трассировки, нес-
мотря на эти ошибки...

  Но на всякий случай попробую объяснить:

  Вначале в регистр <R> посылается некое число.
Благодаря ошибке, там (в регистре <R>) оказыва-
ется число, ПЛЮС ОДИН.
  Затем,  когда число из <R> посылается в Акку-
мулятор, оно попадает туда МЕНЬШЕ НА ЕДЕНИЦУ, а
поскольку (-1)+(+1)=0,  то все броде-бы и в по-
рядке.
  Но если посреди "ксорки" вам надоело нажимать
на  "True Video" или надоело ждать (slow ...) и
Вы,  поставив breakpoint, запустите программу в
режиме реального времени...

  И еще одно важное замечание.

  Если  при входе  в теневик по Magik-у, или по
breakpoint-у  (что  в принципе одно и тоже), вы
увидете  в  регистре  <R> некое число (например
#25) - НЕ ВЕРЬТЕ ГЛАЗАМ СВОИМ!  Там должно быть
число  НА  ДВА МЕНЬШЕ!!  Т.е. надо скомандовать
"r=r-2",  но не забывая  о том,  что 7-й бит не
должен меняться.



Другие статьи номера:

От редакции - Приглашаем вас, дорогие читатели, в мир творчества, в мир Спектрума.

От редакции - описание оболочки журнала.

Игротека - прохождение известной игры Prince of Persia.

Игротека - описание уникальное недетерминированной игре Soldiers of the Future.

Игротека - описание игры про мафиози и ФБР - The Movie.

Записки программиста - работа с расширенной опертивной памятью на ZX Spectrum.

Записки программиста - унивкрсальная библиотека для работы с графикой от Вячеслава Медноногова - Graphic Library v1.1

Записки программиста - о русификации программ (перевод на русский язык).

Записки программиста - глюк монитора отладчика в ZS Scorpion 256.

Инструментарий - Предлагаем познакомиться с новой операционной системой Domen OS!

Инструментарий - описание нового редактора шрифтов FONT EDITOR.

Инструментарий - программа для работы с модемом на ZX Spectrum - Macro Modem (MMD).

Железяка - Фирма "Петерс" представляет свою новую разработку домашнего компьютера "Спринтер".

Железяка - история создания и развития фирмы "ПЕТЕРС".

Железяка - Схема модема для работы c программой Macro Modem.

Конкурс - на лучшее название нового домашнего компьютера для современного пользователя!

Новости - новые проекты на Спектруме: Легенды о Кирандии, Dune 2, Модемные Шахматы, Спртнтер, Домен ОС, Новый графический редактор для СПРИНТЕРА.

Новости - краткий отчет и результаты с Enlight'96.

Водолей - открыта последнняя тайна легендарной игры ELITE!

Форум - Уважаемые читатели - пишите письма!

Реклама - бесплатная реклама и обьявления.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Записки программиста - глюк монитора отладчика в ZS Scorpion 256.
Системный софт - Pro Tracker глюки!!! несколько глючков в ProTracker'ах.
Обо всем по немногу - O глюках в системных программах: Jemeni Commander, ZX-Word. О работе с STS-BBS'кой.

В этот день...   10 мая