Amazing #02
14 июля 1998

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

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

Music by Ironman

         Совместное использование
          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 ввести программу:

#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

5) С адреса #FE71 ввести программу:

#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


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

   Для проверки правильности внесенных из-
менений запустите ZX ASM 3.0, в меню Setup
выберите  пункт  "Load  sts" и укажите имя
файла  "sts5.1a".  Далее  наберите  какую-
нибудь программу и отассемблируйте ее. За-
тем  временно выйдите в STS и включите ре-
жим  дизассемблирования  с  метками (с по-
мощью  комбинации  клавиш "SS+ 5"). Вместо
чисел  Вы  увидите  соответствующие метки.
   Немного  системной информации о 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 команду 3
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).

──────────────────────────────────────────



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

От автора - история создания 2го номера журнала.

Авторы - об авторах журнала.

Обозрение - обзор программ из приложения: STV v1.3, Sample Editor v2.1, TDU v1.0, Crasher, RBI, YES, RDG, MOdule Converter, RC v1.4, Dark Square, 12 Тайных Книг.

Софтятина - обзор новой прессы и игр: Odyssey #2, Oberon #4, Spectrofon 22-23, ZX-Format 7, Amiga #1, Faultless 8, ZX-РЕВЮ 5-6, Amazing 1, X-Reversy, The Last Curieur, Pro Trackerr 3.0.

User'am - Risc процессор - путь в будущее.

User'am - 64 Килобайта о FIDONet.

User'am - нло-2 "Дьяволы Бездны", На пути к совершенству.

User'am - курс полодого юзера.

Ассемблер - поговорим о такой необходимой процедуре как вывод спрайта.

Ассемблер - Контроль времени (работа с прерываниями).

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

Ассемблер - ВГ-93: процедуры для прямой работы с контроллером дисковода.

Презент - описание Turbo Disk Utility v1.0.

Презент - описание Sample Editor v2.1 (beta).

Презент - описание Real Commander v1.4.

Презент - описание игры Dark Squares v1.98 (demo version).

На досуге - я видел Amiga и IBM в работе и не могу не высказать своих размышлений по этому поводу!

На досуге - ответы на самые часто задаваемые вопросы по компьютеру Amiga.

Разное - history: История Клайва Синклера.

Разное - модем: Как правильно использовать модем, реализующий протоколы коррекции/сжатия MNP4/MNP5, v.42/v.42bis.

Разное - lmg: история образования Last Masters Group.

Отдохни - штирлиц.

Отдохни - очепятки: очепятоки, допущенные в газетах и журналах.

Отдохни - ОРТ: РЕКЛАМА ДВИГАТЕЛЬ ТОРГОВЛИ!

Железо - подробное описание модемов.

На досуге - 10:2 Hacker eRRoR новый вирус от Митника.


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

Похожие статьи:
Вступление - От авторов.
А если серьёзно - Частушки
От авторов - Вступление.

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