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) присутствует в
ПРИЛОЖЕНИИ.
_________________________________________
Другие статьи номера:
Похожие статьи:
В этот день... 9 октября