ZX Review #3-4
22 июля 1997

Форум - И.Рощин. Совместное использование ZX ASM 3.0 и STS 5.1.

<b>Форум</b> - И.Рощин. Совместное использование ZX ASM 3.0 и STS 5.1.


(c) Иван Рощин, г.Москва, 1997.

    Совместное использование
     ZX ASM 3.0 и STS 5.1.

   Наверняка каждому программис-
ту  известен  монитор - отладчик
STS. Особенно  удобно  применять
этот монитор вместе с  ассембле-
ром: набираешь текст  программы,
ассемблируешь ее, а затем с  по-
мощью STS проверяешь ее  работу.
Начиная с версии 4.1 в этом  мо-
ниторе появилась  поистине  бес-
ценная  возможность  интерактив-
ной отладки программы с  выводом
меток по соответствующим им  ад-
ресам.  Проблема в  том, что  не
каждый может ей воспользоваться.
   Действительно, в  версии  4.1
процедура вывода меток рассчита-
на  только  на  ассемблер  "MASM
1.1" и ни с каким другим  ассем-
блером работать не будет. Анало-
гично, следующие версии  поддер-
живают лишь ассемблер "ALASM". А
как же быть  пользователям  дру-
гих ассемблеров?
   Постараюсь дать решение  этой
проблемы  для пользователей  "ZX
ASM 3.0".

    WARNING!  Все  нижесказанное
относится ТОЛЬКО к STS 5.1!

   Для  преобразования  STS  5.1
необходимо выполнить следующее:
1) Убедиться, что на диске  при-
   сутствуют    файлы   "STS5.1"
   (этот файл также  может назы-
   ваться "STS5.1AL", "STS5.1XX"
   и т.п.), "sts5.1a","sts5.1b".
2) Запустить файл "STS5.1".
3) Нажать клавишу "U".  Адрес  в
   верхней части  экрана  должен
   стать равным #FE2A.
4) С адреса #FE30  ввести  прог-
   рамму:140.

#FE30:  PUSH    HL
        PUSH    DE
        PUSH    BC
        LD      HL,#FE46
        LD      DE,#57E0
        LD      BC,#001C
        LDIR
        POP     BC
        POP     DE
        POP     HL
        AND     #18
        OR      #06
        RET
        CALL    #57EF
        EX      DE,HL
        LD      BC,#FFF9
        ADD     HL,BC
        LD      A,(HL)
        INC     HL
        OR      (HL)
        INC     HL
        INC     HL
        LD      A,H
        RET
        DEC     DE
        DEC     DE
        DEC     DE
        LD      A,(DE)
        RLCA
        JR      C,#FE5F
        AND     A
        JR      NZ,#FE57
        INC     DE
        XOR     A
        RET


     Для контроля привожу содер-
жимое этой области памяти:

#FE30: #E5,#D5,#C5,#21,#46,#FE,#11,#E0
#FE38: #57,#01,#1C,#00,#ED,#B0,#C1,#D1
#FE40: #E1,#E6,#18,#F6,#06,#C9,#CD,#EF
#FE48: #57,#EB,#01,#F9,#FF,#09,#7E,#23
#FE50: #B6,#23,#23,#7C,#C9,#1B,#1B,#1B
#FE58: #1A,#07,#38,#03,#A7,#20,#F8,#13
#FE60: #AF,#C9
2
5) С адреса #FE71  ввести  прог-
   рамму:
140.
#FE71:  PUSH    HL
        PUSH    BC
        LD      (#FECC),BC
        LD      HL,#FEC4
        CALL    #E354
        LD      HL,#FFFC
        EXX
        PUSH    DE
        LD      HL,(#E33B)
        LD      A,L
        CALL    #FE30
        LD      L,A
        LD      BC,#7FFD
        CALL    #E33D
        EX      AF,AF'
        CALL    #E348
        POP     DE
        EXX
        POP     BC
        POP     HL
        EX      AF,AF'
        JR      NZ,#FE6E
        LD      A,(#FADD)
        AND     A
        CALL    Z,#FB1C
        LD      B,#0A
        LD      A,(#E33B)
        LD      C,A
        AND     #18
        OR      #06
        LD      (#E33B),A
        CALL    #E590
        NOP
        AND     #7F
        CP      #21
        JR      C,#FEBF
        CALL    #FB49
        DJNZ    #FEAF
        NOP
        LD      A,C
        LD      (#E33B),A
        RET
        OUT     (C),L
        EXX
        LD      C,(HL)
        INC     HL
        LD      B,(HL)
        EX      DE,HL
        LD      HL,#8015
        AND     A
        SBC     HL,BC
        CALL    Z,#57EF
        JR      Z,#FEE0
        CALL    #57E0
        JR      Z,#FEDF
        CP      #BF
        JR      NZ,#FEC7
        AND     A
        EXX
        OUT     (C),H
        RET
                        

     Для контроля привожу содер-
жимое этой области памяти:

#FE71: #E5,#C5,#ED,#43,#CC,#FE,#21,#C4
#FE79: #FE,#CD,#54,#E3,#21,#FC,#FF,#D9
#FE81: #D5,#2A,#3B,#E3,#7D,#CD,#30,#FE
#FE89: #6F,#01,#FD,#7F,#CD,#3D,#E3,#08
#FE91: #CD,#48,#E3,#D1,#D9,#C1,#E1,#08
#FE99: #20,#D3,#3A,#DD,#FA,#A7,#CC,#1C
#FEA1: #FB,#06,#0A,#3A,#3B,#E3,#4F,#E6
#FEA9: #18,#F6,#06,#32,#3B,#E3,#CD,#90
#FEB1: #E5,#00,#E6,#7F,#FE,#21,#38,#06
#FEB9: #CD,#49,#FB,#10,#F1,#00,#79,#32
#FEC1: #3B,#E3,#C9,#ED,#69,#D9,#4E,#23
#FEC9: #46,#EB,#21,#15,#80,#A7,#ED,#42
#FED1: #CC,#EF,#57,#28,#0A,#CD,#E0,#57
#FED9: #28,#04,#FE,#BF,#20,#E8,#A7,#D9
#FEE1: #ED,#61,#C9
2

6) С помощью клавиши "B" устано-
   вите Bank=#18.
7) Нажмите клавишу "E". Появится
   меню "Setup".
8) Выбрав пункт меню "Config Sa-
   ve", запишите измененный  STS  на
   диск.

   Для  проверки    правильности
внесенных изменений запустите ZX
ASM 3.0, в меню  Setup  выберите
пункт "Load sts" и  укажите  имя
файла "sts5.1a". Далее  наберите
какую-нибудь программу  и  отас-
семблируйте ее.  Затем  временно
выйдите в STS и  включите  режим
дизассемблирования с метками  (с
помощью  комбинации  клавиш "SS+
5"). Вместо чисел Вы увидите со-
ответствующие метки.
3
   Немного системной  информации
о ZX ASM: текст и метки находят-
ся  в  одной  странице    памяти
(Bank=#1E), таблица меток  орга-
низуется по принципу стека и на-
чинается с конца буфера.  Каждая
определенная в  программе  метка
занимает  в  этой  таблице  5  +
<число букв имени> байт. STS при
дизассемблировании   анализирует
эту  область,  и  если  значение
метки и адреса или числа  в  ко-
манде  совпадают,  то   печатает
метку, иначе - число. Если в об-
ласти находится какая-то ерунда,
ничего страшного не  произойдет,
и компьютер  не  зависнет  и  не
сбросится.
   Дизассемблирование с  метками
работает медленнее, чем обычное.
Если в Вашей программе использу-
ется не  очень  много  меток, Вы
почти не почувствуете разницу  в
быстродействии.  Но  если  меток
много, вывод дизассемблированно-
го текста может замедлиться в 4-
5 раз.
   Процедура  дизассемблирования
с метками для ZX ASM 3.0 получи-
лась более длинной по  сравнению
с процедурами  для  MASM  1.1  и
ALASM, и в результате этого  она
заняла большую часть буфера фун-
кции пользователя. Для этой фун-
кции осталось лишь  6  байтов  с
#FE2A  по  #FE2F   включительно.
Если Ваша функция не умещается в
эту область, Вы  можете  сделать
одно из двух:

1) Пожертвовать  режимом  дизас-
   семблирования с метками,  за-
   писав по адресу #FE71  коман-
   ду JP #F86A.  В  этом  случае
   можете использовать для  фун-
   кции  пользователя  память  с
   #FE2A до #FE5B и с  #FE74  по
   #FEE3 включительно (а это 162
   байта).

2) Поместить по адресу #FE2A ко-
   манду JP XXXX, а уже с адреса
   XXXX разместить вашу функцию.

   Нужно отметить, что при рабо-
те режима  дизассемблирования  с
метками портится 28 байт  в  эк-
ранной области, начиная с  адре-
са #57E0 (причем Вы сами  можете
изменять эти 28 байт как  хотите
- это не помешает нормальной ра-
боте STS).
   При загрузке ZX ASM'а STS бу-
дет загружен  автоматически,  но
не весь, а  только  его  главная
часть (файл sts5.1a). Поэтому во
время  работы  будут  недоступны
функции  "Disasm  to  Disk"    и
"Setup", т.е. при попытке их вы-
зова STS сбросится. Так что луч-
ше не  нажимать  клавиши  "D"  и
"E".  Для  экономии    дискового
пространства можно стереть  фай-
лы "STS5.1<B>"  и  "sts5.1b<C>",
если Вы не будете запускать  STS
отдельно от ZX ASMа.

    Не забывайте, что недокумен-
 тированные команды для работы с
 половинками индексных регистров 
 по-разному обозначаются в  тек-
 сте программы на ассемблере  ZX 
 ASM  (XL,XH,YL,YH)  и при прос-
 мотре дизассемблированной прог-
 раммы в STS (LX,HX,LY,HY).




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

TR-DOS для начинающих - Часть 1.

Авторская разработка - General Sound - мультимедиа для ZX Spectrum!

Визитная карточка - Представляем новый электронный журнал "Major Wares" (c) Codebusters & V.M.G.

Компьютерная новелла - Knight Lore "Преданья рыцарских времен".

Новые программы - И.Рощин. HELP_Z80. В.Давыдов. Catalog's Base v1.8.

Описание оболочки журнала "ZX-РЕВЮ"

Перекресток драконов - Aavlon, Castle of Dreams, Erik the Viking.

Перекресток драконов - Eureka!, Eye of Bain, Kentilla.

Перекресток - Sherlock, Apollo, Shadows of Mordor, Rigels Revenge, Temple of Terror, ID, That's the Spirit, Return to Ithaka.

Ретро - Дж.Хардман, Э.Хьюзон. 40 лучших процедур.

Советы экспертов - Castle Master.

Советы экспертов - Firelord.

Советы экспертов - Stonkers.

Форум-игры - Insult Megademo, Catch 23, Livingstone, Rock Star ate my Hampster, НЛО-2: Дьяволы Бездны, Terminator 2, Venturama, The Spririts, Nipper, Sweewo'S World, King's Bounti-2, Hacker 2, Black Magic, Satcom, Звёздное Наследие.

Форум - А.Гура. Кодекс программиста.

Форум - А.Стрельников. Перспективы развития ZX Spectrum.

Форум - В.Давыдов. По материалам, опубликованным в ZX-РЕВЮ: Некоторые вопросы, связанные с автостартом Бейсик-программ. Redefine Keys. Процедура печати 42 символов в строке. Процедура умножения HL=B*C. Доработка посекторных загрузчиков. Мини-драйвер дисковых операций.

Форум - Группа 'Light'. Музыкальный процессор для ZX-Speccy.

Форум - Д.Федоров: Печать картинки с маской с точностью до пиксела. Алгоритм расчета адреса по координатам с точностью до пиксела.

Форум - И.Рощин. Совместное использование ZX ASM 3.0 и STS 5.1.

Форум - М.Бекарев. Расчет адреса экранной области по знакоместу и наоборот.

Форум - П.Федин. Доработка Profi для бесконфликтного подключения периферии.

Форум - С.Астров. Генератор псевдослучайных чисел.

Читатель-читателю - В.Сироткин. Защита программ (взгляд на проблему).

Читатель-читателю - И.Рощин. Драйвер экрана для компьютера "Пентагон-128".

Этюды - А.Савинов: Процедура вывода на экран символов двойной высоты. Процедура "растворения" символов.

Этюды - А.Уржа. Процедура рисования окружности.

Этюды - В.Сироткин. Программа подсчета контрольной суммы.

Этюды - Е.Волчков. Улучшение подпрограммы вычисления адреса в дисплейном файле.

Этюды - Е.Мороз. Бегущая строчка.

Этюды - И.Командин. Программа проявления экрана.

Этюды - И.Рощин. Два графических эффекта.

Этюды - М.Лазутов: Программа модернизации шрифта. Программа кодирования/декодирования блока кодов. Эффект с атрибутами.

Этюды - О.Смолянкин: Процедуры очистки экрана. Вывод текстовых сообщений на экран.


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

Похожие статьи:
Обо всём - письма от читателей: Peace User, Илымов Владимир, Phantom Lord.
Железо - схема корректировки сигналов Wait и Int для работы мультиколоров.
Сценохрония - Отголоски Fun Top'98.
SOFTWARE - Обзор системок: ASCII Convertor v2.71 , Global Commander v1.31, BA v1.0, X-Copy.
Дерево смерти - Отчет о работе службы "Спасение 911".

В этот день...   19 апреля