ZX Format #07
05 декабря 1997
  Софт  

Примьера - Описание нового турбо-ассемблера STORM от X-Trade.

<b>Примьера</b> - Описание нового турбо-ассемблера STORM от
X-Trade.

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

 STORM

 TURBO ASSEMBLER

 Version 1.1

music by MIDISOFT
(C) X-TRADE GROUP
_

Зачаточное  состояние длилось долго.
Но  настал  блистательный  миг,  когда мы
смогли наконец-то писать программы в том,
что  устраивает  нас почти на сто процен-
тов.  Хотя  бы  и ценой двухмесячных уси-
лий.
   Надеемся,  вам  понравится  то, что мы
сделали, хотя делали мы это, руководству-
ясь собственными желаниями.

Вашему вниманию предлагается вторая по
счету версия. Первая была "пробой пера" в
анной области.
   Самым тяжелым оказалось докодивать но-
вую  версию в ZXASM 3.0 (у нас отсутство-
вал  INCLUDE),  но теперь все последующие
версии будут писаться на предыдуших.

 Отличия_от_версии_1.0 

 - Фиксены известные баги
, - Изменен размер экрана с 32*22 до 40*20
 - Дописан INCLUDE
 - Добавлен полноценный строчный редактор
 - Имеется возможность  изменения цветов
(см. Распределение памяти)
 - Измемены приоритеты арифм/лог операций

Итак, что мы имеем теперь:

Редактор 

Скроллинг текста во фрэйм! (1/50 сек)
PAGE  UP,  PAGE  DOWN в пять фреймов.
Поиск  в  тысяче  строк  за  секунду.
Злой  токенизированный формат текста.
   Размер текста  XAS  /1.2 
-  ZXASM/2 
-  ALASM/1.4 
-  TASM4/1.5 
Блочные  операции над произвольно от-
   маркированными  строками. (при выгруз-
   ке текста маркировка сохраняется).
Размер текстового окна 40*20 символов
   каждое знакоместо 6*6 пикселей.
Длина строки в памяти до 40 символов.
Проверка синтаксиса в процессе ввода.
Авторазметка строки.
Возможность сокращенного набора
     ( LD, JR не требуют ввода ).
Функции SCROLL UP, SCROLL DOWN.
Встроенные  IMPORT FROM DISK и EXPORT
   TO DISK (из/в текстовый формат).



Компилятор 

Время компиляции XAS  /1.2 
 ZXASM/2 
 ALASM/1.4 
 TASM4/1.5 
Любое количество операторов в строке.
Любое количество  операндов у  одного
оператора.
Арифметика с соблюдением приоритетов.
22  арифметические, логические и спе-
циальные операции.
Метки длиной до семи символов.
Общее  количество  меток  около  1536
(11.5 Kb буфер, каждая метка занимает
3+ДЛИНА_МЕТКИ байт.)
При компиляции возможно тиражирование
строки
Возможность размещения кода по адресу
не совпадающему с ORG.
Естественно, INCBIN/INCLUDE.
Скорость  компиляции  мало зависит от
общего количества меток.
Повышение скорости,вследствие заранее
просчитанных/переведенных чисел.
Поддержка недокументированных команд.
Встроенные макрокоманды типа LD BC,HL

Прочее 

Кэш каталога для INCBIN/INCLUDE.
Быстрые дисковые процедуры.
Опознавание  текста в странице в слу-
чае перезапуска.
Автозагрузка STS при запуске.



 Распределение_памяти 

Изначально  задумывалось использовать
расширенную  память, но не хватило време-
ни, и посему получилось, что памяти поль-
зователю остается совсем немного.

Свободны банки 0,1,2,3,5,7. 

Первые  4к  банки 3 убивать нельзя, далее
можно (таблица меток будет убита).

Пользователь  может  грохать  банку 1, но
при  возврате  в среду она будет грохнута
редактором,   туда  депачится/декрюнчится
фонт/скроллинг. Используйте эту банку для
этой же цели.

В банке 6 лежит текст, в 3 - кусок тела и
метки, а в 4 возлежит само тело Асма.

В банке 7 сидит STS, но область его экра-
на  также грохается редактором ( не поду-
майте плохого, первый экран не включается
никогда! ).

Из  среды пользователю недоступна область
#40-#5F  (банка 5).Туда нельзя класть
объектный  код. Код,компилированный в эти
адреса,  может  быть  размещен по другому
адресу  и  переслан в область #40-#5F
программой  пользователя. Используйте ORG
со смещением адреса.

Банки 0 и 2 доступны полностью.

Асм  грохает  BASIC-области  #5B00-#5BFF,
E#5E00-#5EFF. 

При  запуске/возврате в среду необходимо,
.чтобы  RAMTOP стоял на 24575, иначе полу-
  чите 4 OUT of memory, 0:1. 

Для  возврата  используется USR 23600 или
OUT 32765,20:USR 49152. 

При запуске устанавливается 48-ой режим с
открытыми страницами.

STS  5.1a должен быть записан сразу после
STORM  -  он не утруждает себя лазанием в
каталог.

ПЗУ  не используется, можете вынимать, но
с диска читать не будет. ;) TR-DOS-таки
юзается (5.03/04 only).

При 1-ом запуске происходит DeMSPacking и
очистка 48ой памяти.

При  входе/выходе  происходит SWAPPING со
страницами,  не  возмущайтесь вынужденным
тормозом (30 тактов/байт, однако.).

При выходе 1ая банка и STS$ чистятся. Ес-
ли  кому  захочется выломать скроллер или
принтер  (8  знаков  6*6 за один проход -
быстрее  не  бывает),  потрудитесь до них
добраться. или вытащите из вьювера.

Если  будут замечены глюки, хотелось бы о
них  услышать.  и увидеть, ведь цветные
 квадратики - это так красиво !..

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

 0-й байт 1-й байт 
 00AB CDEF 
 ^^
  └─ =0 ! (иначе Basic скипает строку)



B Ink  Назначение 
 "─ 
   0 A - Цвет рамки
   0 B - Цвет строчного редактора
   C D - Цвет текста
   E F - Цвет маркировки
 "─ 
  0B0INK - Результирующий атрибут
   |яркость

 *  Каков изврат, а? *

 Редактор

  Интерфейс оптимизирован для быстрой ра-
боты (под этими словами скрывается недос-
таток памяти, да и самая обычная, челове-
ческая лень).
  Вся  работа  таким  образом , ведется с
помощью горячих клавиш.

 На экране у нас имеется:
 - Статусная строка

INS/OVR - Без комментариев
   BIG/SML 
   RUS/LAT 

EXT/ALT  - Смена виртуального меню
-  потом поймете.
   RES/SET  - Режим маркировки
-  (см. ниже)

  LINE,COL,FREE - Говорят сами за себя

 - Окно текста
 - Область сообщений
 - Область строчного редактора
 - Имя редактируемого файла + ботва

 *!A:FILENAME
 
 Текущий дисковод
 └─ Признак наличия маркировки
 └── Признак изменения текста

Клавиши в режиме редактирования текста:

CS/1 edit Скролл вверх
 CS/2 caps lock  Скролл вниз
CS/3 true video На страницу вверх
CS/4 inv. video На страницу вниз
CS/5 left Влево
CS/6 down Вниз
CS/7 up Вверх
CS/8 right Вправо
CS/9 graphics   Удаление по курсору
CS/0 back space Забой (на все.)
SS/W Вставка/замена
SS/A stop CAPS LOCK
SS/Q В начало строки
SS/E в конец строки
  SS/I Продолжение поиска
CS/ENTER Пометить строку
  SS/ENTER Удалить строку
SS/SPACE РУС/LAT

CS/SS    ext   префикс команды редактора
CS/SPACE break префикс внешней команды

 Клавиши в строчном редакторе: 

SS+Q/E Home/End
SS+SPACE   RUS/LAT
SS+A CAPSLOCK
DOWN Очистка строки
EDIT Смена дисковода
EXT,BREAK  Отмена

 Команды_делятся_на_две_группы: 

 - Команды редактора (EXT).
    Вводятся после нажатия EXTEND.

 - Внешние (альтернативные) (ALT)
   Вводятся после нажатия BREAK.

Команды редактора:

BeginОтметить начало блока.
End Отметить конец блока.
BlK mode Установка режима отметки блока:
 SET в указанном блоке строки от-
 мечаются.
 RES в указанном блоке  снимается
 пометка со всех строк.
Copy Копировать все  отмеченные блоки
 в место, указанное курсором.
Delete   Удалить все отмеченные блоки.
Move Переместить  все отмеч.  блоки в
 место,  указанное курсором. (ис-
 пользуется COPY '& DEL, на лучшее
 не было времени.)
uNmark   Снять все блочные пометки.
Search   Поиск.
neXt Поиск следующего.
Replace  Поиск и замена.
 Запрос:
  Y - заменить  N - пропустить
  A - заменить все  Q - отвалить

Undo Вернуть строке вид, который  она
  имела   перед   редактированием.
 Если  вы  объединяли любое коли-
 чество  строк  командами DEL или
 BACK  SPACE,  или стирали строки
 подряд  с  помощью ss+enter, все
 восстанавливается.
Assemble Компиляция программы.
 Если  ошибок нет и программа ма-
 ленькая,  вы  не  успеете ничего
 заметить.   Ошибки   выводятся
 порциями  по  20  строк и ждется
 нажатие  клавиши. Пробел - выход
 из  компилятора.  Второй  проход
  делается   в  случае  отсутствия
 ошибок по первому проходу.
Jump Переход к строке с номером N.
Inspect  Калькулятор.

  Перемещения: 

extent  В начало текста.
extent  В конец текста.
-extent > К следующей отмеченной строке.
extent < К предыдущей отмеченной строке.



 Внешние команды: 

Load Загрузка текста
Save Сохранение текста
Cat  Каталог
Merge    Добавление текста в  конец и по-
   следующая его маркировка.
save Blk Сохранение  блока  ( он   должен
 быть  единственным,  иначе будет
  выдано сообщение об ошибке).
save Obj Сохранение откомпилированной
 программы.  Сохраняется  блок от
 минимального   до  максимального
 адреса,  по  которому был сгене-
 рирован  код.  Вы можете исполь-
 зовать  ORG  в  любом количестве
 и порядке.
Zap text Очистка текста.
Quit Выход в BASIC.
imporT   Преобразование   из   текстового
 формата  в токенизированный. За-
 сос  исходника с диска. Непонят-
 ное  или слишком длинное помеча-
 ется  в блок и знаком ";", непо-
 нятные   команды  воспринимаются
 как метки.
 было : INCLUDE "THRASH" 
 стало: JR INCLUDE,"THRASH" 
 подразумевается: INCL "THRASH",
 а также "DOOM" и "DEATH".
eXport   Преобразование в текстовый  фор-
 мат. Отписывает на диск. Никаких
 табуляций.  В  конце строки #0D.
 Маркер конца текста не ставится.
Assemble Компиляция программы.
DebugВызов STS.
 Возврат - RETURN TO ASM
Run Запуск  откомпилированной  прог-
 раммы. Возврат по RET или
   OUT (#7FFD),#14:JP #C0 

  Вопросы,_не_нашедшие_ответа_выше: 

  Некоторые ошибки выводятся на бордюр.

 Синий   - Текущая  строка  длиннее  40
 символов (ограничение формата)
 Красный - Синтаксическая ошибка

 Желтый  - Нехватка памяти

 Зеленый - Внутренняя ошибка

  Она  может  возникнуть,  например, если
импортить  не текст, а, например, кодовый
блок.  Если  повторный  вход не помогает,
следует перегрузить Асм.
  Возможно,  вам  не удастся восстановить
текст.

  Не  секрет, что работа через TR-DOS на-
поминает садомазохизм. Поэтому в Асме ис-
пользуются  быстрые  дисковые  процедуры,
следовательно, счастливые обладатели вин-
та круто обламываются.

  Проверка  текста на измену пока отсутс-
твует (будет быстрый CRC), так что не за-
бывайте  вовремя  сохраняться. Если же вы
не сохранились и по каким-то причинам все
повисло,  то есть шанс, что при повторной
загрузке   Асм   найдет  чудом  уцелевший
текст.



 Компилятор



ОБЩИЙ ФОРМАТ СТРОКИ:

[метка] [ком.+опер.] : [ком.+опер.] ;REM

Все поля необязательны.

Метка длиной до семи символов.

В поле метки может стоять запись вида:

 .число 

где число = 0-255, задающее  тираж данной
строки, 0=256 раз.

Комментарий может быть в любом поле.

Возможно  любое  количество  операторов в
строке (сколько влезет в 40 символов..).

У одного оператора не ограничено число
операндов, например:

 ADD A,A,A,B,HL,DE = ADD A,A 
  ADD A,B 
  ADD HL,DE 
 PUSH BC,DE,HL = PUSH BC 
  PUSH DE 
  PUSH HL 
 JR NZ,LOOP,LOOP1  = JR NZ,LOOP 
  JR LOOP1 
 JR C,$+5,Z,$+20   = JR C,$+5 
  JR Z,$+20 

 DB ABC-$,LOOP-$   = DB ABC-$ 
  DB LOOP-$ 

в  двух  последних случаях $ вычисляется
верно,и  команды слева и справа абсолютно
эквивалентны).

Допускаются следующие выкрутасы:

 OUT (#FE) = OUT (#FE),A 

 OUT B,A,(#FE)  = OUT (C),B  ; только
-  OUT (C),A  ; непонятно,
-  OUT (#FE),A; зачем.

 IN (#FE) = IN A,(#FE) 

 IN D,E,(#B7)   = IN D,(C) 
-  IN E,(C) 
-  IN A,(#B7) 

 LD HL,BC etc   = LD H,B 
-  LD L,C 

 LD BC,IX etc   = LD B,HX 
-  LD C,LX 

 EX HL,DE = EX DE,HL 

 ADD DE,HL = EX DE,HL 
-  ADD HL,DE 
-  EX DE,HL 

 ADD DE,BC = Облажались,не сделали.
-  Исправимся.

 EXA = EX AF,AF 

 DB "@AEDFC825" = DB #AE,#DF,#C8,#25 

 DS 7,#AA,#BB   = DB #AA,#BB,#AA,#BB 
-  DB #AA,#BB,#AA 
-  всего семь байт 

 DS 1,"@ABCD" = DB #AB,#CD 
-  . 
-  DB #AB 
-  всего 1 байт. 

 DS 10 = 10 нулей 

 _

  В   _последующих_  версиях  компилятора
предполагается сделать поддержку макроко-
манд вида:

 1. XI R,R(N) 
Где X=ADD,SUB,AND,OR,XOR
 R-Регистр или косвенная ячейка
ADDI L,#20 == LD A,L:ADD A,#20:LD L,A

 2. LD DD,R 
  LD BC,L == LD C,L:LD B,0 

 3. SUB HL,DD == OR A:SBC HL,DD 

Ну, и еще чего-нить придумаем .
 _

ВЫРАЖЕНИЯ 

 Там,  где синтаксис допускает число, мо-
жет  быть  использовано  любое выражение,
непосредственное  или  определенное  EQU.
Это справедливо для всех команд.

Подсчет происходит с игнорированием пере-
носов, выражение вида 0-#20 = #FFE0.

Если  синтаксис  требует слово, результат
просто считается.

Если  синтаксис  требует  байт, результат
-должен быть в диапазоне #FF00-#00FF, т.е.
0-#20 даст #E0. 

В  командах IN,OUT,IM и RST отрицательное
число не допускается.

Знаки, требующие двух операндов
(ставятся между ними):

 +  Сложение
G -  Вычитание
 *  Умножение
 /  Деление
   Остаток от деления
 '&  AND (поразрядное над словами)
 !  OR  (поразрядное над словами)
 |  XOR (поразрядное над словами)
 << Нециклический сдвиг влево на N
 >> Нециклический сдвиг вправо на N
 <= меньше или равно, результат = 0 или 1
 >= больше или равно, результат = 0 или 1
 <  строго меньше   , результат = 0 или 1
 >  строго больше   , результат = 0 или 1
 =  равно , результат = 0 или 1

Знаки, требующие одного операнда,
(ставятся после него):

 [  старший байт (N/256)
 ]  младший байт (N256)
 ^  округление до большего или равного
#AE18=#AF00, #B700=#B700
 `  округление до меньшего или равного
#AE18=#AE00, #3D00=#3D00
 ~  NEG, вычитание переменной из нуля.
(Самое интересное, что этот знак
невозможно ввести с клавиатуры :)

 @ NOT, = 0, если не нуль
 = 1, если нуль ' умножить на 256

В  сложном выражении сначала считаются
скобки,  потом знаки с наибольшим приори-
тетом,  далее знаки с меньшим, и далее до
нинимального  приоритета.Для равных прио-
ритетов вычисление идет слева направо.
   Внутри  скобок  то  же самое (там свои
приоритеты).Максимальный  уровень вложен-
ности  скобок+приоритетов - 16.(использо-
ваны  рекурсивные процедуры, стек забива-
ется  промежуточными  результатами. Конт-
роль  16-ти уровней присутствует, система
не повиснет.)

 Если  все выражение необходимо заключить
в  скобки, необходимо использовать запись
вида  0 + (выражение), иначе скобки будут
 восприняты как метод адресации.

Приоритеты: 

[ ] ^ ` ' 8
* /  7
~ 6
>> << 5
+ -  4
'& | ! 3
= etc 2
@ 2

В выражениях можно использовать:

.    Метки, в качестве  первого символа
 допускается  только большая буква,
 в  качестве остальных - цифры, "_"
 и большие/маленькие буквы.

$  текущий  адрес  трансляции данного
 оператора.  Если используется что-
 либо  вида JR $,$,$,$,$,то $ меня-
 ется  внутри  строки  -  он каждый
 раз  указывает  на текущий "вирту-
 альный" JR.

123десятичный байт
12345  десятичное слово
#AAшестнадцатеричный байт
#FAB2  шестнадцатеричное слово
%10101 двоичный байт
%.   двоичное слово
"A"код символа в байт
"AB"   коды двух символов в слово,
 первый - старший.



Несколько  слов об особенностях синтакси-
са.

 INCB = INCBIN/INSERT 
 INCL = INCLUDE (вложение не допускается)

 LX,LY,HX,HY <альтернатива перекодируется
 DB,DW,DS    <в такой вид при вводе

 SLI 

 _DB "ABC" ; не табулируется.

 ORG ADR1 [,ADR2] 

 ADR1 - где будет работать
 ADR2 - куда положить код

допускается

 ORG $,ADR 
 ORG ADR,$  
  ORG $^  ; люблю красивые
(C) ; адреса
. ORG ($-1)/256*256+256 ; умудрялся любить
(C) ; красивые адреса
(C) ; и в ZXASM 3.0 ;)

 $ адресует область работы.

   О ПОСЛЕДУЮЩИХ ВЕРСИЯХ.

 Скорее  всего, следующие весии будут пи-
саться  исключительно под большую память,
т.к.  даже в этой версии памяти для поль-
зователя  остается мало, а объем кода вы-
растет значительно.

 Для  турбо-машин  предполагалось  ввести
возможность  редактирования в окне разме-
ром  40*22 ( для нормальной работы скрол-
лера  нужно  как  минимум 750 тактов :(
(на обычных машинах будет дергаться.).
  А может и 20-21 достаточно? а?

Вдобавок предполагается :

Мультитекстовый редактор
Полностью рамочный интерфейс
  (ВДОБАВОК к существующему!)
Новые встроенные макрокоманды
Локальные метки
Макроопределения
Условная трансляция
Полномасштабный SETUP
Улучшенный внутристрочный редактор
(работа со словами и метками)
Возможность быстрого ввода токенов
Размер каждого текста до 32-64к
 Навороченный ПОИСК/ЗАМЕНА
G √  Печаталка
Ускорение компиляции еще % на 20.
Более быстрые дисковые процедуры
Многое другое.

Чего  точно  не  будет (по принципиальным
оображениям.)

 *  Длинных строчек (более 40 символов)
 *  64 etc символов  в строке  (доработку
нашей проги  до  такого варианта вос-
примем как личное оскорбление.)
 *  Меток длиной более семи символов
 *  Поддержки винчестера через #3D13.
ИСКЛЮЧЕНИЕ : кто-нибудь напишет гото-
вый драйвер _БЕЗ_ характерных особен-
ностей TR-DOS,  чтобы все ошибки воз-
вращались наверх,  не портился экран,
не нужны были системные переменные.
И если драйвер нас устроит, тогда.




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

От авторов - несколько слов о следующем номере.

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

Содержание номера - краткое содержание журнала ZX-Format No.7

Игрушки - обзор новинок: Los Angeles Drugs Bust, Jungle Warfare, Dragonia, 3D Starfighter, Rock star ate my hamster, Star Cobtrol, Malstese joe's pool challenge, Dynamite dux, Blood Brodthers, Galactic Games, Motor Masscre, International Kickboxing.

Игрушки - Tai-Pan: классический шедевр ZX Spectrum. Игра, совмещающая в себе quest и менеджер. Интересная новелла и достаточно подробное описание.

Игрушки - Operation R.R. Вступительная новелла к новому графическому quest'у от GALAXY.

Игрушки - Адвентюры: описание игры-пародии "Bored of the ring" - "Тошнит от колец" Можно пользоваться как описанием, а можно просто читать как пародию на Р.Р.Толкиена.

Игрушки - 3D construction kit: подробное описание редактора 3D игр типа Castle Master. В статье приведено описание внутреннего языка системмы, который, собственно, и превращает набор локаций и обьектов в полноценную игру.

Программистам - Basic - 7: Окончание описания Beta-Basic.

Программистам - библиотечка математических процедур. Цикл статей для желающих научиться программировать на ассемблере.

Программистам - Алгоритмы работы и примеры процедур для быстрых вычислений на асемблере: Умножение и деление 3-х байтовых чисел,

Программистам - Формат Mod файлов. Описания формата стандартных MOD файлов, используемых в General Sound.

Программистам - BMC 2. Eще несколько слов о конвертации PC-шных картинок в 3-color.

Обзор - Общий обзор прохождения очередной Demo-party ENLiGHT 1997 с фотографиями некоторых гостей.

Обзор - Несколько моментов с выставки видео и аудиотехники Video FAIR, проходившей осенью в С-Пб.

Железо - Капитан Nemo предлагает поделиться технологией KAY со всеми желающими заняться производством.

Железо - Информация о новом проекте фирмы Scorpion - плате расширения графики и памяти GMX.

Железо - Статья об аудиоусилителях и прайс-лист (для желающих купить готовый усилитель или набор для сборки).

Примьера - Описание нового турбо-ассемблера STORM от X-Trade.

Примьера - Riff Tracker новый Музыкальный редактор для General sound.

Примьера - Описание текстовго редактора ZX-Winword, позволяющий делать графические вставки в текст, и его утилита Sprite Cutter - для нарезки этих вставок.

Примьера - Head Ball - Головобол: Описание новой игры.

Интервью - интервью с участниками ENLiGHT'97: Digital Reality.

Интервью - интервью с участниками ENLiGHT'97: Extreme.

Интервью - интервью с участниками ENLiGHT'97: MMA, ALK.

Интервью - интервью с участниками ENLiGHT'97: Flash inc.

Интервью - интервью с участниками ENLiGHT'97: Progress.

Интервью - интервью с участниками ENLiGHT'97: Felix/Softland.

Интервью - интервью с участниками ENLiGHT'97: Slash.

Интервью - интервью с участниками ENLiGHT'97: Вячеслав Медноногов.

Здесь был ты - Повелитель зубов - 2. Продолжение похождений компании бравых хоббитов.

Здесь был ты - Выключатель - Небольшая философская притча.

Почта - Шедевр. Еще одно любопытное письмо - "большая часть прикладных и системных программ - полная чушь и лабуда!"

Почта - письма читателей: Николай Сергеев, Jobman, Николай Парфёнов, Дмитрий Залисский.

Почта - бесплатная реклама и обьявления.

Разное - перспективы ПО. Новая RPG игра от Одесской группы "Оберон" - НЕИЗВЕСТНЫЙ МИР.

Разное - перспективы ПО. STATE OF THE ART: новый графический редактор для спектрума.

Разное - Электронный самиздат: Несколько слов о новом виде софта - электронных книгах.

Amiga Club - Новая статья бывшего Спектрумиста Макса Петрова об Amiga.


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

Похожие статьи:
Новичку - новая информация по ассемблерам.
Рабочий стол - Краткое описание: макро-ассемблера отладчика "ALASM 2.8".
Системки - Теневой ассемблер АLАSМ 3.8с (pаrt 2).

В этот день...   3 декабря