ZX Format #03
29 февраля 1996
  Софт  

Премьера - TASM 4.0 (Turbo ASseMbler for ZX-Spectrum 128k)


Программное обеспечение Описание Ассемблеры


             XL Design Inc.
              представляет

             TASM  4.0(XLD)

  Turbo ASseMbler for ZX-Spectrum 128k


                ОПИСАНИЕ

(C) XL Design Inc. 1996
(C) Сергей Павлов
_________________________________________


   Дополнительные  возможности по сравне-
нию с 3.0(3.1):

 - Встроенная кэш-директория
 - Поддержка  недокументированных  команд
(SLI,INF, OUT(C),#00)
 - Поддержка двоичной арифметики
 - Метки длиной до 7 байт
 - Дополнительные  арифметические  опера-
ции
 - Использование половинок от IX,IY
 - В  команде  PUSH  введена  возможность
ввода регистров через запятую
 - Скорость   ассемблирования   увеличена
в 1.8 раза
 - Скорость при работе в редакторе увели-
чена в 2.5 раза
 - Исправлены ошибки,связанные с *BREAK*,
тремя кавычками, Merge'м и т.д.
 - Длина объектного модуля вычисляется из
последнего записанного в память байта
 - В  DEFS  можно  использовать не только
одиночные символы, но и строки.

            ________________


                Загрузка

   Этот  процесс  можно назвать основным,
поэтому расскажу о нем подробнее. Первое,
что  Вам  необходимо  сделать,  это найти
файл  TASM4.0x <B> и запустить его из лю-
бого  бута. Если первая операция не увен-
чалась  успехом,  и  Вы  не нашли искомый
файл,  то  необходимо выйти в 48 бэйсик с
открытым  портом.  Сделать это не просто,
а  очень  просто.  Достаточно войти в 128
бэйсик  и  набрать   usr  0,  после  чего
подтвердить  сие  клавишей  eнтер.  После
этого необходимо напечатать:

 CLEAR 24999
 OUT 32765,20
 RANDOMIZE USR 15619: REM:
  LOAD "tasm4.0x" CODE
 RANDOMIZE USR 49152

   Этим  лекцию  по  запуску  заканчиваю.
Скажу лишь, что повторный запуск делается
так:

RANDOMIZE USR 23600.


              Главное меню

   Основной  экран  главного меню поделен
на  две  основные части (информационную и
системную). Информационная часть выглядит
следующим образом:

WORK> A:WORKNAME
MAIN> A:MAINNAME

   А - номер дисковода, на котором в дан-
ный  момент Вы  работаете, WОRКNAME - имя
рабочего  файла; MAINNAME - имя основного
файла, т.е. файла, из которого будет про-
исходить ассемблирование.
   Далее  по порядку о системной части. В
скобках указана кнопка, по которой проис-
ходит выбор описываемого пункта.

   Edit (E) - Выход в редактирование. Ес-
ли не набрано имя файла, то запрашивается
имя.  При отсутствии файла на диске выри-
совывается надпись New File, что предзна-
менует открытие нового файла.

   Assemble  (A)  - Ассемблирование. Если
не  указано  имя файла, то будет соответ-
ствующий запрос. Ассемблирование происхо-
дит  в  два  прохода  (PASS1 и PASS2). Во
время  первого  прохода  подготавливается
таблица  меток и проверяется синтаксис, а
во время второго создается машинный код и
подставляются  значения  в таблицу меток.
Если  в процессе возникает ошибка, то вы-
падет нечто вроде:

PASS 1:00001 0 METKA LF A,#03

   Число,  стоящее после "PASS 1", указы-
вает на номер строки, в которой была сде-
лана ошибка. Если перед числом стоит сим-
вол "I", то ошибка произошла в подключае-
мом  файле. После номера строки стоит код
ошибки,  и далее сама строка. Коды ошибок
будут  рассмотрены в главе "Ошибки". Если
ассемблирование  прошло  успешно, то поя-
вятся следующие сообщения:

*** END ASSM ***
Sym:nnnnn (Оставшееся  место  под таблицу
           меток)
Run:nnnnn (Адрес последнeго ORG)

Len:nnnnn (Длина программы. Высчитывается
           по  формуле:  Len=End-Run, где
           Еnd - последний  записанный  в
           память байт, Run -  адрес пос-
           леднего ORG.)

New Name (N) - Смена имени рабочего  фай-
ла.

Main File(M) - Смена имени основного фай-
ла.

Work File(W) - Перезагрузка рабочего фай-
ла. Рабочий файл будет автоматически уда-
лен  из  памяти, но если он не был сохра-
нен,  то  будет дан запрос о его сохране-
нии.

Merge File (G) - Подклейка файла.

Import 2.0 (I)   -   Импортирование    из
TASM2.0.

Save (S) - Запись рабочего файла. Автома-
тически перезаписывается.

Obj  Save (O) - Выгрузка объектного моду-
ля. Старт  и длина  берутся из параметров
Run и Len.

Load  FNT  (F) - Подгрузка нового шрифта.
Шрифт  имеет длину 512 байт, подгружается
в тело программы и имеет формат 1х8.

Symbol Lst (Y)  - Вывод на печать таблицы
меток.

Disk  Drive (D) - Смена текущего дисково-
да.

Quit (Q) - ...

Run Prog (R) -  Запуск программы с адреса
Run.

Catalog  (C) - Пытается выводить каталог.
По сравнению с предыдущими, в этой версии
поле данных немного расширено.

Beeper (B) - Вкл\Выкл бульканья при нажа-
тии на кнопочки.


                Редактор

   Вы  видите на экране курсор. Курсорные
клавиши его перемещают. Имеются сервисные
кнопочки:

<CS>+<1>(Edit) -  Табуляция.
<CS>+<2>(C.Lock) -  Раздвиг строки.
<CS>+<3>(True.Vid) -  По страницам вверх.
<CS>+<4>(Inv.Vid) -  По страницам вниз.
<CS>+<9>(Graph) - Удаление символа справа
  от курсора.
<SS>+<W> -  Вставка строки.
<SS>+<Q> -  Удаление строки.
<SS>+<E> - Занесение строки в буфер.
<SS>+<I> - Продолжение поиска.
<SS>+<CS>(Ext.Mode)  -  Вход  в  дополни-
  тельный командный режим.

  Командный режим имеет следующие кнопки:

<Q> - Выход из редактора.
<R> - Вставка буфера в текст.
<C> - Oчистка буфера.
<I> - Продолжение поиска с заменой.
<S> - Поиск.
<X> - Поиск с замeной. При нахождении бу-
дет выдано: Replace(Y/N/G)
  Y - Да, заменить.
  N - Нет.
  G - Заменить до конца текста.
<B> - В начало текста.
<E> - В конец текста.


               Выражения.

  В поле операндов могут записываться как
отдельные операнды,так и выражения, кото-
рыми задается последовательность алгебро-
ических и логических  операций  над конс-
тантами, метками, счетчиками  адресов.  В
выражениях,  обрабатываемых TASM'ом,  до-
пускаются следующие константы (с примера-
ми):

десятичная константа        (30)
шеснадцатиричная константа  (#40 или 40H)
двоичная константа          (%1101001101)
символьная константа        ("А")

 и операторы (примеры в скобках):

+ Сложение  (3+3=6)
- Вычитание (3-2=1)
* Умножение (2*2=4)
/ Деление   (4/2=2)
 OR  (%100%111=%111)
'& AND (%111'&%011=%011)
! XOR (%010!%111=%101)
^ EXCHANGE (Обмен старшего с младшим бай-
том (#9C40^=#409C)
{ HIGH BYTE (Взятие старшего байта
  (#9C40{=#009C)
} LOW BYTE (Взятие младшего байта
  (#9C40}=#0040)
[ ROLL LEFT (16-битный  циклический сдвиг
влево. 15-бит переносится в 0. (%1[=%10)
] ROLL RIGHT (16-битный циклический сдвиг
вправо. 0-бит переносится в 15. (%10]=%1)

   Новый  TASM,  как  и старый, не ставит
приоритетов  в  арифметических операциях.
Все действия выполняются последовательно.
Найдя скобку, он следит только за ее зак-
рытием.

      Дополнительные возможности

  В команды INCBIN и INCLUDE была встрое-
на  кэш  директория,  что весьма ускорило
доступ к диску при ассемблировании.

   Появились  следующие команды:

SLI - по непонятным причинам не была реа-
лизована в предыдущих версиях.

INF(#ED,#70) - Взята из STS.  В некоторых
каталогах она имеет мнемонику IN F,(C).

OUT(C),#00(#ED,#71)  -  Так же, как и INF
была взята из STS'а.

   Команды  DEFB,  DEFW,  DEFS,  DEFM для
удобства  были  продублированы на DB, DW,
DS, DM. Поддержаны половинки от регистров
IX  и  IY,  и, введя строку INC LX, Вы не
отправитесь  на  поиски  ошибки. Для тех,
кто не знает, что такое LX, объясняю:
LX-IXlow;HX-IXhigh;LY-IYlow;HY-IYhigh

   В  команде  DEFS была реализована воз-
можность повтора не только одиночных бай-
тов, но и стрингов. Например:
DS 10,"hello",#FF,"bye",#FF
Это повторит всю строку 10 раз.
   Для полной совместимости с GENS'ом бы-
ла исправлена ошибка обработки трех кавы-
чек (""").
   В  командах  PUSH  и  POP была введена
возможность  ввода  регистров через запя-
тую. Например строка:

PUSH AF,BC,DE,HL
при  дизассемблировании даст:
PUSH AF
PUSH BC
PUSH DE
PUSH HL


         Техническая информация

   Перед  стартом  TASM  загружается  в 4
банк,  с адреса #C000. После запуска ком-
пилятор перекидывается в 3 банк, где рас-
полагается  таблица меток. При работе ис-
пользуются следующие страницы:
#11 - Для Includ'ов и буфера.
#13 - Там сидит Compiler+Таблица меток.
#14 - Сам TASM.
#16 - Для МAIN FILE.
#17 - Первые 4 килобайта используются для
кэш директории.

   В теле TASM'а (в 4 банке) имеются сле-
дующие переменные:

#C635(50741)  -  Атрибуты  экрана  + цвет
                   бордюра.
#C633/34(50739/40) - Задержки при нажатии
                   на клавишу.
#C636(50742) - Состояние Beeper
               (1-Yep, 0-Nop)

                 Ошибки

0 - Синтаксическая ошибка
1 - Поле метки более 7 символов
2 - Не полностью  закрыты скобки
3 - Недопустимое для данной команды число
4 - Отсутствует запятая
5 - Недопустимое для данной команды выра-
     жение
6 - Метка определена более одного раза
7 - Не открыты скобки там, где необходимо
8 - Использование зарезервированного сло-
     ва не по назначению
9 - Деление на ноль. Переполнение, короче
     Bad Number.
F - Не  найден  файл  на  диске (INCLUDE,
     INCBIN)

               _____________

   При нахождении ошибок, а также по воп-
росам   приобретения   следующих   версий
просьба обращаться в редакцию ZF. Напоми-
наем, что  TASM4.0  (XLD)  присутствует в
ПРИЛОЖЕНИИ.
_________________________________________



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

IS-DOS - "IS-DOS - начинающим" No 3

IS-DOS - "Оконная система IS-DOS".

IS-DOS - "Формат объектных модулей *.obj IS-DOS Ассемблера".

IS-DOS - "Формат таблицы локальных символов IS-DOS Ассемблера".

Авторы журнала - ZX-Format No.3

Железо - Исправление ошибки TR-DOS.

Железо - новая звуковая карта: General Sound.

Железо - новая модель Спектрума: Scorpion ZS 256 Turbo+.

Железо - о турбировании Спектрум-машин.

Железо - обзор модемов для ZX Spectrum.

Железо - Шинная архитектура Спектрума (концептуальная разработка).

Игрушки - "Last battle" (Последняя битва) подробное описание.

Игрушки - 48 утюгов (второй уровень).

Игрушки - десятка наиболее продаваемых в С.-Петербурге.

Игрушки - описание игры BATMAN-II.

Игрушки - что новенького: The Light Corridor, Jonny Quest in Doctor Zins, Bedlam, Bubble Dizzy, Navy Seals, Пираты.

Конкурс - конкурс на компьютерный анекдот.

Лотерея - лотерея для читателей журнала.

От авторов - о третьем выпуске журнала.

Отдохнём - HУ, ЮЗЕР, ПОГОДИ!

Отдохнём - глюкодром: Самые ОПЕЧАТКИ.

Помощь - Очередной трактат об очердной оболчке и не только.

Почтовый ящик - дискуссия.

Почтовый ящик - доска обьявлений.

Почтовый ящик - письма читателей.

Премьера - TASM 4.0 (Turbo ASseMbler for ZX-Spectrum 128k)

Премьера - Приключения ВИННИ ПУХА.

Программистам - Basic для всех №3.

Программистам - Адаптация игр: адаптация программ на диск.

Программистам - Адаптация игр: зыкрытые коды.

Программистам - адаптцация игр: бессмертия.

Программистам - ассемблер: Экскурс в анатомию ZX

Разное - Amiga: вопросы и ответы.

Разное - Амига: новости.

Разное - Перспективы П/О.


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

Похожие статьи:
Система - новый aссeмблeр из городa Волгодонскa: EDAS 3.3.
Новые программы - Обзор Xas редактор-ассемблер 128К (v5.05).
Обзор ассемблеров - Edas 3.3, Assembler for Scorpion, XAS, ZX-ASM, Alasm 2.8, Master Assembler v.1.1, TASM 4.1.

В этот день...   4 июля