Scenergy #02
31 декабря 1999

Coding - Баг в STS?

<b>Coding</b> - Баг в STS?
                Баг в STS?

 В   процессе   подготовки  ZXA  library к
публикации   я   столкнулся   со  странным
поведением STS при отладке примеров работы
с  библиотекой.  Я  не могу сказать точно:
баг  ли  это  в STS или просто особенность
работы, но все должны знать об этом, чтобы
не  искать  несуществующие  баги  в  своем
коде.
 Итак, отлаживался следующий кусок кода:

        CALL ZXA_DRAW_FRAME
INT_COUNTER EQU $+1
        LD A,00

А на прерываниях висел следующий фрагмент:

        LD HL,INT_COUNTER
        INC (HL)
 Причем   (важный  момент!)  время  работы
процедуры  ZXA_DRAW_FRAME  составляло чуть
более  прерывания, т.е. за время ее работы
прерывание приходило обязательно.
 Так  вот, если строка CALL ZXA_DRAW_FRAME
является  текущей (на нее установлен PC) и
если  пройти  в STS эту строку по SS+T, то
регистр  SP  ИЗМЕНИТ СВОЕ ЗНАЧЕНИЕ! Причем
его значение обязательно будет равно #FBxx
где xx - какое-нибудь число.

 Что  это:  баг или нет? Я не знаю... Знаю
только,  что  потратил  несколько часов на
поиски  ошибки  в  своем  коде  (ведь  код
работал, если  его запустишь, и не работал
при отладке в STS).

 Приведу   пример  программы,  при отладке
которой  можно  столкнуться  с проявлением
этой ошибки:
        DI
        LD HL,#6000
        LD DE,#6001
        LD BC,#100
        LD (HL),#61
        LDIR
        LD A,#C3
        LD (#6161),A
        LD HL,IM2
        LD (#6162),HL
        LD A,#60
        LD I,A
        IM 2
        EI
LOOP    HALT
        CALL PROC   ;***
INT_CNT LD A,00
        LD BC,#7FFE
        IN A,(C)
        AND 1
        JR NZ,LOOP
        IM 1
        RET

;HL=4000 чтобы время работы процедуры было
;равно примерно 1.5 прерываниям на
;Pentagon'е без турбо режима.
PROC    LD HL,4000
L1      DEC HL
        LD A,H
        OR L
        JR NZ,L1
        RET

IM2     PUSH HL
        LD HL,INT_CNT+1
        INC (HL)
        POP HL
        EI
        RET
 Наберите  эту  программу, откомпилируйте,
войдите  в  STS,  протрассируйте до строки
помеченной  '***'  и  на ней нажмите SS+T.
Затем  посмотрите  на  регистр SP - у меня
его  значение  после  всех  этих  действий
становится равным #FB00.
 А   вот   если  после  строки  CALL  PROC
добавить  несколько NOP'ов (столько, чтобы
команда  JP  x не накрывала переменную
INT_CNT), то все будет работать нормально.
Так что, по всей вероятности, эта проблема
возникает  из-за того, что STS при нажатии
SS+T  просто  ставит  после  команды точку
останова и запускает ее.
 Да, еще забыл сказать что это проверялось
в  STS v4.3, возможно в других версиях все
нормально.



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

A.O.S.S. - "Сцена больна" переживания Random'a.

A.O.S.S. - Raver рассуждает о сценовой журналистике.

A.O.S.S. - аналитическая статья о музыкальной сцене от Andy Fer.

A.O.S.S. - легко ли быть органайзером группы?

A.O.S.S. - О журналах (мысли вслух).

A.O.S.S. - о канонах демосцены на примере журнала Deja Vu #9.

A.O.S.S. - Сегодня и Завтра отечественной демосцены.

A.O.S.S. - спектрумовская банерная сеть.

Charts - all time favorites.

Charts - current rules (fall edition 1999).

Charts - indexed.

Charts - voting rules.

Coding - 16-битная процедура быстрого возведения в степень.

Coding - Flying представляет макробиблиотеку: Memory Management Library.

Coding - Texture Mapping - реализация от SaiR00S/EI.

Coding - Texture mapping + Phong shading реализация от Senat/Eternity Industry.

Coding - ZXA library: библиотека, предназначенная для создания и проигрывания анимаций.

Coding - Баг в STS?

Coding - Комментарии к исходникам, опубликованным в Scenergy #1

Coding - о библиотеках в программировании на спектруме.

Coding - Принцип упаковки анимаций в демо JAM.

Coding - процедура быстрого умножения.

Coding - разбор интро Daingy от Cryss/Razzlers.

Demo Party - Cafe'2000: Официальное приглашение

Demo Party - CC999.999 information (eng).

Demo Party - D-Man/EI: отчет о Di:Halt:99.

Demo Party - Hartman: отчет о CC'999.

Demo Party - Maxwell и Mr. John: отчет о CC'999.

Demo Party - Merlin/CC: отчет о CC'999.

Demo Party - Paradox'99 - как это было, но лучше б он mUst dIe!!!

Demo Party - PHAT'9: список посетителей.

Demo Party - POL/PHT: отчет о Doxycon '99.

Demo Party - Random/CC: обьемный отчет о CC'999.

Demo Party - SerzhSoft: сказание о CC'999.

Demo Party - Zlincon 2e3 party: минирепортаж.

Demo Party - информация о предстоящем пати PHAT'0.

Demo Party - информация по демопарти CC999.999.

Demo Party - неофициальные результаты Di:Halt'99 с коментариями Diver'a.

Demo Party - обзор демосцены за 1999 год.

Demo Party - отчет организаторов CAFe'99.

Demo Party - пресс релиз Латвийского демопати PHAT'9.

Demo Party - приглашение на латвийское демопати PHAT'9.

Demo Party - рассказ о поездке Antares в Казань на CAFe'99

Demo Party - результаты CC.999.999

Demo Party - результаты CC999.999.

Demo Party - результаты Chaos Construction 999.

Demo Party - результаты Computer Art Festival 1999.

Demo Party - результаты Doxycon'99.

Demo Party - результаты Millenium Party.

Demo Party - результаты Paradox'2k demoparty.

Demo Party - результаты Латвийского демопати PHAT'9.

Demo Party - результаты Ростовского пати Paradox'99.

Demo Party - репортаж Gasman'a с Forever 2e3.

Demo Party - репортаж с Минского демопати Millennium'2000.

Demo Party - финальные результаты Forever 2E3.

Editorial - вступительное слово от Arty.

Editorial - выступительное слово от Random.

Editorial - загоны Raver'а на тему Сцены.

Groups - анкеты действующих групп: Amaltiya Incoropration Software.

Groups - анкеты действующих групп: Antares.

Groups - анкеты действующих групп: Ascendancy Creative Labs.

Groups - анкеты действующих групп: Crushers.

Groups - анкеты действующих групп: E-mage.

Groups - анкеты действующих групп: Eternity Industry.

Groups - анкеты действующих групп: Excess team.

Groups - анкеты действующих групп: Extreme Entertainment.

Groups - анкеты действующих групп: Fatality.

Groups - анкеты действующих групп: Jupiter 77.

Groups - анкеты действующих групп: Proxima Centauri.

Groups - анкеты действующих групп: RaZZLeRs.

Groups - анкеты действующих групп: RUSH.

Groups - анкеты действующих групп: Smash Hackers Band.

Illegal Corner - Razzlers оправдываются за релиз демки First Association.

Illegal Corner - Scenergy Release Charts - конкурс крэков.

Illegal Corner - Welcome to Scenergy Release Charts (SRC).

Illegal Corner - софтография Fatality Group.

Lits - Pussy: история создания знаменитой игры от Fatality.

Lits - Scenergized beyond the belief.

Lits - speed.

Lits - история образования Ростовской ассоциации PartyZans.

Lits - история создания игры "Белый орел - товарищ известен".

Lits - рассказ о том как Fatality выпускает игрушки.

Mail Box - письма: Ellvis и Fatality довольны Scenergy #1, Ulterior поносит Antares и BrainWave, Realtimer разочарован.

News - Doom'a не будет!

News - Виртуальное пати Millennium, X-Raizor вернулся на сцену, Andrew Fer организовал новую группу, провал Германского пати Spectrology, новости от 3SC, Zero Team, Extreme.

News - мнение Megus'a о dentro compo СС'2000.

News - новости от OHG, Delta Hackers Group, Die Crupps, Волгодонских спектрумисто и от группы SpeedWay.

Scenergy - адреса для связи с редакцией.

Scenergy - благодарности соавторам журнала.

Scenergy - новое в облочке журнала.

Scenergy - обещанного видео в статьях не будет...

V.I.P. - Random берет интервью у Unbel!ever/Sage/XTM.

V.I.P. - The most noble tale of the scene.

V.I.P. - интервью с Arny и Mythos, создателями клона Elite игры Awaken.

V.I.P. - Интервью с Fatality, широко известными крэкерами и гейм-мэйкерами

V.I.P. - интервью с одним из авторов игры Elite.

V.I.P. - интервью с одним из самых прогрессивных художников на спектруме Diver/4D.

V.I.P. - Интервью, взятое у Random'а каким-то PC-журналом

Warez Pack - описание Inertia Player.

Warez Pack - описание демо 1140.

Warez Pack - описание импортной демки 'no work'.


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

Похожие статьи:
Intro - Contents.
Номер 17 - Егор ЕЛАТОМЦЕВ (часть 3).
PARADOX 2oo2 results - Результаты прошедшего фестиваля.
Вступление - вступительное слово и оглавление.
Реклама - Реклама и объявления.

В этот день...   21 ноября