EI:HALT
© AlCo

   Люди! Наболело!
   Да  простят меня реальщики, но на время
отсутствия у меня здорового компа я просто
вынужден пользоваться эмуляторами.Да,в них
я иногда пишу программы...Не сидеть же мне
без дела, пока Tot ставит SIMM?
   Вот...
   В некоторых  программах я использую об-
работчик прерываний,состоящий из одной ко-
манды RET.Прерывания соответственно выклю-
чаются,так что вызывать их нужно так:
      EI
      HALT
   Пишу я,бывало,такую программу,никого не
трогаю. Ассемблирую,запускаю.Тестирую.Вис-
нет,сволочь! Ищу глюк - не вижу.
   Надо сказать, что если уж я чего и пишу
на эмуляторе, то,как правило,этим эмулято-
ром оказывается zx_emul v0.33 by Lion 17.
   И вот сегодня  я снова наткнулся на та-
кой глюк. Снапшот на месте сделать не уда-
лось (v0.33,однако!- см. ZG#3 ), поэтому я
постарался подвесить прогу в том же месте,
но под zx_emul 0.34, и уже там отгрузился.
   Z80 Stealth 4.50, загрузив снапшот,вис-
нуть не захотел 8]. Но в R80 v0.30 удалось
обнаружить,что program counter отдыхает на
команде HALT,а прерывания в это время отк-
лючены! Z80S этого не показал,поскольку по
загрузке  снапшота  их зачем-то включил, а
его встроенный монитор по неизвестной при-
чине всегда указывает на обработчик преры-
вания :)
   Значит, прерывание  пришло  между  EI и
HALT. Всего-то ;)
   А теперь,мальчики и девочки,возьмите со
своих дальних полок покрытый пылью фолиант
под названием "ZX Spectrum для пользовате-
лей и программистов" by Ларченко&Родионов,
откройте  его  в  районе  93-94 страницы -
там,где написано про команду EI,- и прочи-
тайте сноску с двумя звёздочками:

  **) Следует отметить, что при выполнении
команды  EI запрещаются маскируемые преры-
вания  на время между этой и следующей ко-
мандами.

   Короткое  тестирование разделило эмуля-
торы на 2 группы:
   - Буржуйские: R80, RealSpeccy - которые
соответствуют  книжке  и  не виснут на EI:
HALT;
   - Наши советские: Углеков, Шалаев, Юдин
и Колпаков, которые, по-видимому, эту кни-
жку не читали.
(P.S.: Недавно обнаружил,что тем же глюком
страдает прекрасный во всех других отноше-
ниях эмулятор Unreal Speccy by SMT ;( )
   Грустно...
   Если кому интересно,ту тестирующую про-
граммку  можно найти в барахле. Она выпол-
няет  цепочку EI. Если ваш муль (процессор
вряд ли ;)) сможет  в этих условиях играть
музыку, то это повод заподозрить его в жу-
льничестве. Музыки быть не должно!

   Хочу  особо отметить, что мне не в кайф
подгонять РАБОТАЮЩИЕ программы  так, чтобы
они удовлетворяли ещё и глюкам эмуляторов.
Несмотря даже на то, что 33-й Лион не рас-
паковывает картинки,упакованные Laser Com-
pact 5.2,как это можно было видеть в ZG#3.