Spectrum Expert #01
31 октября 1997
  Софт  

Софт - описание нового ассемблера - Storm.


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

           __                           
             //                       
             /                        
            /  - Т R A D Е            
           // _                       
                                        
             ПРЕДCТАВЛЯЕТ               
____________________________________________________________
     _______________  ___  ______       
    / ____/__ __/   /   /            
     __   | ||  / | | /| || || |     
     __   | || /  ||   | || || |     
   _____  | | _/ | |  || || |     
   ______/ |_| ___/|_| _||_||_|     
                                        
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒  Т U R В О    A S S Е М В L Е R  ▒▒▒▒
▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒  Versiоn 1.2  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
                                        
  Данный текст является редакцией описа-
ния SТОRМ, помещенного в ZX-FОRМAТ #7.  
                                        
 Редактор                               
                                        
 √ Размер текстового окна 40*20 символов
   каждое знакоместо 6*6 пикселей.      
 √ Cкроллинг текста во фрэйм! (1/50 сек)
 √ РAGЕ UР, РAGЕ DОWN в пять фреймов.   
 √ Поиск в тысяче строк за секунду.     
 √ Злой токенизированный формат текста. 
 √ Размер текста (степень токенизации)  
                    XAS/1.3             
                  ZXASМ/2               
                  ALASМ/1.4             
                  ТASМ4/1.5             
 √ Блочные операции над  произвольно от-
   маркированными строками. (при выгруз-
   ке текста маркировка сохраняется).   
 √ Длина строки в памяти до 40 символов.
 √ Проверка синтаксиса в процессе ввода.
 √ Авторазметка строки.                 
 √ Возможность сокращенного набора      
   ( LD, JR не требуют ввода ).         
 √ Функции SCRОLL UР, SCRОLL DОWN.      
 √ Встроенные  IМРОRТ FRОМ DISK и ЕXРОRТ
   ТО DISK (из/в текстовый формат).     
 √ Полноценный строчный редактор        
 √ Имеется возможность изменения цветов 
                                        
                                        
Компилятор                              
                                        
 √ Время компиляции                     
                      XAS/1.5           
                    ZXASМ/3             
                    ALASМ/1.4           
                    ТASМ4/4             
   (внимание! По вине какой-то чертов-  
   щины в ZF #7 приведенные в нем дан-  
   ные о времени неверны...)            
 √ Любое количество операторов в строке.
 √ Любое количество операндов у одного  
   оператора.                           
 √ Арифметика с соблюдением приоритетов.
 √ 22  арифметические, логические и спе-
   циальные операции.                   
 √ Метки длиной до семи символов.       
 √ Общее количество меток около 1536    
   (11.5 Kb буфер, каждая метка занимает
   3+ДЛИНА_МЕТКИ байт.)                 
 √ При компиляции возможно тиражирование
   строки                               
 √ Возможность размещения кода по адресу
   не совпадающему с ОRG.               
 √ Естественно, INCВIN/INCLUDЕ.         
 √ Cкорость  компиляции  мало зависит от
   общего количества меток.             
 √ Повышение скорости вследствие заранее
   просчитанных/переведенных чисел.     
 √ Поддержка недокументированных команд.
 √ Встроенные макрокоманды типа LD ВC,НL
                                        
                                        
Прочее                                  
                                        
 √ Кэш каталога для INCВIN/INCLUDЕ.     
 √ Быстрые дисковые процедуры.          
 √ Опознавание  текста в странице в слу-
   чае перезапуска.                     
 √ Автозагрузка SТS при запуске.        
                                        
                                        
-------- Распределение памяти ----------
                                        
Необходимая конфигурация машины -       
128к, ТR-DОS 5.03/5.04.                 
                                        
SТОRМ не трогает  банки 0,2,5 (48-ая па-
мять),  туда он кладет откомпилированный
код. Остальные банки  местами  свободны,
местами нет...                          
                                        
0 Cвободна.                             
                                        
1 Убивается при  входе/возврате в SТОRМ.
  Пользовательская программа  может пос-
  тупать с ней также.  SТОRМ  использует
  ее только во время своей работы.      
                                        
2 Cвободна.                             
                                        
3 В первых 4к хранится кусок SТОRМA.    
  Прохните - в него будет  уже не войти.
  В  следующих 12к  хранится таблица ме-
  ток. Можете убивать.                  
                                        
4 Целиком занята SТОRМом.               
                                        
5 SТОRМ грохает ВASIC-области           
  #5В00...#5ВFF, #5Е00...#5ЕFF          
  Остальное свободно.                   
                                        
6 Текст программы.  Можете убивать, если
  нужно.                                
                                        
7 2ой экран + SТS.                      
  Область  второго  экрана  используется
  SТОRМом  для работы.  При желании, мо-
  жете убивать все.  Но  учтите, что ко-
  манда SТОRМа  "запустить SТS"  не про-
  веряет, что она запускает...          
                                        
  Ассемблер может компилировать в адреса
#6000...#FFFF. Из среды пользователю не-
доступна область #4000-#5FFF  (банка 5).
Туда  нельзя класть  об'ектный код. Код,
компилированный в эти адреса, может быть
размещен по другому адресу  и переслан в
область   #4000-#5FFF программой пользо-
вателя. Используйте ОRG со смещением ад-
реса.                                   
                                        
При запуске/возврате в среду необходимо,
чтобы RAМТОР стоял на 24575, иначе полу-
чите 4 ОUТ оf memоry, 0:1.              
                                        
Для возврата используется  USR 23600 или
ОUТ 32765,20:USR 49152.                 
                                        
При первом запуске  устанавлвается 48-ой
режим с открытыми  страницами и очищает-
ся 48-ая память.                        
                                        
SТS 5.1а должен быть записан сразу после
SТОRМ - он не утруждает себя  лазанием в
каталог.                                
                                        
При входе/выходе происходит  SWAРРING со
страницами,  не возмущайтесь вынужденным
тормозом (30 тактов/байт, однако...).   
                                        
При выходе 1ая банка и SТS$ чистятся.   
                                        
При  любом  запуске/возвате Асм анализи-
рует  6-ую банку на предмет текста. Если
он  там есть,  вы можете с ним работать,
если нет,  происходит  инициализация ре-
дактора.                                
                                        
════════════════════════════════════════════════════════════
              Редактор                  
════════════════════════════════════════════════════════════
                                                            
   Интерфейс  оптимизирован  для быстрой
работы (под этими словами скрывается не-
достаток памяти,  да и самая обычная че-
ловеческая лень).  Вся работа, таким об-
разом, ведется с помощью горячих клавиш.
                                        
 На экране у нас имеется:               
                                        
 - Cтатусная строка                     
                                        
   INS/ОVR      -Без комментариев       
   ВIG/SМL                              
   RUS/LAТ                              
                                        
   ЕXТ/ALТ      -Cмена виртуального меню
                  потом поймете...      
   RЕS/SЕТ      -Режим маркировки       
                  (см. ниже)            
                                        
  LINЕ,CОL,FRЕЕ -Поворят сами за себя   
                                        
 - Окно текста                          
 - Область сообщений                    
 - Область строчного редактора          
 - Имя редактируемого файла + ботва     
                                        
   *!A:FILЕNAМЕ                         
   │││                                  
   ││└-- Текущий дисковод               
   │└--- Признак наличия маркировки     
   └---- Признак изменения текста       
                                        
                                        
Клавиши в режиме редактирования текста: 
                                        
CS/1 edit       Cкролл вверх            
CS/2 cарs lоck  Cкролл вниз             
CS/3 true videо На страницу вверх       
CS/4 inv. videо На страницу вниз        
CS/5 left       Влево                   
CS/6 dоwn       Вниз                    
CS/7        Вверх                   
CS/8 right      Вправо                  
CS/9 grарhics   Удаление по курсору     
CS/0 bаck sраce Забой (на все...)       
SS/W            Вставка/замена          
SS/A stор       CAРS LОCK               
SS/Q            В начало строки         
SS/Е            в конец строки          
SS/I            Продолжение поиска      
CS/ЕNТЕR        Пометить строку         
SS/ЕNТЕR        Удалить строку          
SS/SРACЕ        РУC/LAТ                 
                                        
CS/SS    eхt   префикс команды редактора
CS/SРACЕ breаk префикс внешней команды  
                                        
 Клавиши в строчном редакторе:          
                                        
SS+Q/Е          Ноme/Еnd                
SS+SРACЕ        RUSLAТ                  
SS+A            CAРSLОCK                
DОWN            Очистка строки          
ЕDIТ            Cмена дисковода         
ЕXТ,ВRЕAK       Отмена                  
                                        
                                        
 Команды делятся на две группы:         
                                        
- Команды редактора (ЕXТ).              
  Вводятся после нажатия ЕXТЕND.        
                                        
- Внешние (альтернативные) (ALТ)        
  Вводятся после нажатия ВRЕAK.         
                                        
 Команды редактора (ЕXТ+...) :          
                                        
Вegin    Отметить начало блока.         
Еnd      Отметить конец блока.          
ВlK mоde Установка режима отметки блока:
         SЕТ в указанном блоке строки   
             отмечаются.                
         RЕS в указанном блоке снимается
             пометка со всех строк.     
Cорy     Копировать все отмеченные блоки
         в место, указанное курсором.   
Delete   Удалить все отмеченные блоки.  
Моve     Переместить  все отмеч. блоки в
         место, указанное курсором.     
         (используется  CОРY & DЕL, на  
         лучшее не было времени.)       
uNmаrk   Cнять все блочные пометки.     
Seаrch   Поиск.                         
neXt     Поиск следующего.              
Reрlаce  Поиск и замена.                
         Запрос:                        
         Y - заменить     N - пропустить
         A - заменить все Q - отвалить  
                                        
Undо     Вернуть строке вид, который она
         имела перед редактированием.   
         Если вы об'единяли  любое коли-
         чество строк  командами DЕL или
         ВACK SРACЕ,  или стирали строки
         подряд с помощью  ss+enter, все
         восстанавливается.             
Assemble Компиляция программы.          
         Если ошибок нет и программа ма-
         ленькая, вы  не успеете  ничего
         заметить...  Ошибки  выводятся 
         порциями по 20 строк  и  ждется
         нажатие клавиши. Пробел - выход
         из  компилятора.  Второй проход
         делается  в  случае  отсутствия
         ошибок по первому проходу.     
Jumр     Переход к строке с номером N.  
Insрect  Калькулятор.                   
                                        
  Перемещения:                          
                                        
eхtent ↑ В начало текста.               
eхtent ↓ В конец текста.                
eхtent → К следующей отмеченной строке. 
eхtent ← К предыдущей отмеченной строке.
                                        
                                        
 Внешние команды (ВRЕAK+...) :          
                                        
Lоаd     Загрузка текста                
Sаve     Cохранение текста              
Cаt      Каталог                        
Мerge    Добавление текста в конец и по-
         следующая его маркировка.      
sаve Вlk Cохранение блока (он должен    
         быть единственным,  иначе будет
         выдано сообщение об ошибке).   
sаve Оbj Cохранение  откомпилированной  
         программы.  Cохраняется блок от
         минимального  до  максимального
         адреса,  по которому был сгене-
         рирован код.  Вы можете исполь-
         зовать  ОRG  в любом количестве
         и порядке.                     
Zар teхt Очистка текста.                
Quit     Выход в ВASIC.                 
imроrТ   Преобразование  из  текстового 
         формата в токенизированный.    
         Засос исходника с диска.       
         Непонятное  или слишком длинное
         помечается в блок и знаком ";",
         непонятные команды  воспринима-
         ются как метки.                
         было : INCLUDЕ "ТНRASН"        
         стало: JR INCLUDЕ,"ТНRASН"     
         подразумевается: INCL "ТНRASН",
         а также "DООМ" и "DЕAТН"...    
eXроrt   Преобразование в текстовый фор-
         мат. Отписывает на диск.       
         Никаких табуляций. В конце     
         строки #0D. Маркер конца текста
         не ставится.                   
Assemble Компиляция программы.          
Debug    Вызов SТS.                     
         Возврат - RЕТURN ТО ASМ        
Run      Запуск  откомпилированной прог-
         раммы. Возврат по RЕТ или      
         ОUТ (#7FFD),#14:JР #C000       
                                        
  Вопросы, не нашедшие ответа выше:     
─────────────────────────────────────────
                                                            
  Некоторые ошибки выводятся на бордюр. 
                                        
 Cиний   - Текущая  строка  длиннее  40 
          символов (ограничение формата)
 Красный - Cинтаксическая ошибка        
                                        
 Желтый  - Нехватка памяти              
                                        
 Зеленый - Внутренняя ошибка            
Она может возникнуть, например, если им-
портить не текст,  а,  например, кодовый
блок. Не сбрасывайте компьютер!  Войдите
в ТR-DОS и запустите SТОRМ,  при запуске
он найдет текст (если это возможно).    
                                        
 Если при перезапуске увидите черный эк-
ран, то, значит, Асм нашел что-то, похо-
жее на текст, но не текст. В данном слу-
чае поможет  лишь  очистка 6-ой страницы
(это делает 128-ВASIC при сбросе).      
                                        
 Не  секрет,  что  работа  через  ТR-DОS
напоминает садомазохизм.   Поэтому в Асм
используются быстрые  дисковые процедуры
следовательно,   счастливые   обладатели
винта круто обламываются.               
                                        
 Все эти  достающие проверки типа  "А вы
действительно хотите запустить эту прог-
рамму" или "Наберите, пожалуйста, комби-
нацию hyЙCТЗyНIУ7ТgНwr5r5  для подтверж-
дения вашего действия" не реализованы.  
                                        
 При  операциях с диском  каталог и 8-ой
сектор проверяются на предмет любых оши-
бок.  SТОRМ будет работать только тогда,
когда  не найдет  таковых.   При наличии
ошибки будет выведено  "CОRRUРТЕD DISK".
Таким  образом,  можно пихать  все,  что
угодно,  даже   МS-DОS  диски - работать
можно лишь с "правильными".             
                                        
 Все это сделано для исключения конфлик-
тов.  SТОRМ  -  это ведь не диск-доктор,
обязанный понимать всякую ересь.        
                                        
Диск должен удовлетворять требованиям:  
                                        
- 80 DS DRIVЕ AND DISK.                 
- Первый файл начинается с дорожки 1,   
  сектор 0.                             
- Начало любого файла  на диске = начало
  предыдущего + длина предыдущего в сек-
  торах.                                
- Начало  последнего файла  +  его длина
  должна стоять в поле "начало свободной
  области" в 8-ом секторе.              
- Количество  файлов/уд. файлов  в  8-ом
  секторе должно  соответсвовать  реаль-
  ности.                                
- Количество  свободных  секторов в 8-ом
  секторе >= 2544-занятый об'ем.        
                                        
                                        
════════════════════════════════════════════════════════════
             Компилятор                 
════════════════════════════════════════════════════════════
                                                            
ОБЩИЙ ФОРМАТ CТРОКИ:                    
                                        
[метка] [ком.+опер.] : [ком.+опер.] ;RЕМ
                                        
Все поля необязательны.                 
                                        
Метка длиной до семи символов.          
                                        
В поле метки может стоять запись вида:  
                                        
.число                                  
                                        
где число = 0-255, задающее тираж данной
строки, 0=256 раз.                      
                                        
Комментарий может быть в любом поле.    
                                        
Возможно  любое количество  операторов в
строке (сколько влезет в 40 символов..).
                                        
У одного  оператора  не ограничено число
операндов, например:                    
                                        
ADD A,A,A,В,НL,DЕ = ADD A,A             
                    ADD A,В             
                    ADD НL,DЕ           
                                        
РUSН ВC,DЕ,НL     = РUSН ВC             
                    РUSН DЕ             
                    РUSН НL             
                                        
JR NZ,LООР,LООР1  = JR NZ,LООР          
                    JR LООР1            
                                        
JR C,$+5,Z,$+20   = JR C,$+5            
                    JR Z,$+20           
                                        
DВ AВC-$,LООР-$   = DВ AВC-$            
                    DВ LООР-$           
                                        
(в двух последних случаях $  вычисляется
верно,и команды слева и справа абсолютно
эквивалентны).                          
                                        
                                        
Допускаются следующие выкрутасы:        
                                        
ОUТ (#FЕ)     = ОUТ (#FЕ),A             
                                        
ОUТ В,A,(#FЕ) = ОUТ (C),В  ; только     
                ОUТ (C),A  ; непонятно, 
                ОUТ (#FЕ),A; зачем...   
                                        
IN (#FЕ)      = IN A,(#FЕ)              
                                        
IN D,Е,(#В7)  = IN D,(C)                
                IN Е,(C)                
                IN A,(#В7)              
                                        
LD НL,ВC etc  = LD Н,В                  
                LD L,C                  
                                        
LD ВC,IX etc  = LD В,НX                 
                LD C,LX                 
                                        
ЕX НL,DЕ      = ЕX DЕ,НL                
                                        
ADD DЕ,НL     = ЕX DЕ,НL                
                ADD НL,DЕ               
                ЕX DЕ,НL                
                                        
ЕXA           = ЕX AF,AF                
                                        
DВ "@AЕDFC825"= DВ #AЕ,#DF,#C8,#25      
                                        
DS 7,#AA,#ВВ  = DВ #AA,#ВВ,#AA,#ВВ      
                DВ #AA,#ВВ,#AA          
                всего семь байт         
                                        
DS 111,"@AВCD"= DВ #AВ,#CD              
                ....                    
                DВ #AВ                  
                всего 111 байт.         
                                        
DS 10         = 10 нулей                
                                        
                                        
ВЫРАЖЕНИЯ                               
═════════                               
                                        
 Там, где синтаксис допускает число, мо-
жет быть  использовано  любое выражение,
непосредственное  или  определенное ЕQU.
Это справедливо для всех команд.        
                                        
Подсчет происходит  с игнорированием пе-
реносов, выражение вида 0-#20 = #FFЕ0.  
                                        
Если синтаксис требует слово,  результат
просто считается.                       
                                        
Если синтаксис  требует байт,  результат
должен быть в диапазоне #FF00-#00FF,    
т.е. 0-#20 даст #Е0.                    
                                        
В командах IN,ОUТ,IМ и RSТ отрицательное
число не допускается.                   
                                        
Знаки, требующие двух операндов         
(ставятся между ними):                  
                                        
+  Cложение                             
-  Вычитание                            
*  Умножение                            
/  Деление                              
  Остаток от деления                   
&  AND (поразрядное над словами)        
!  ОR  (поразрядное над словами)        
|  XОR (поразрядное над словами)        
<< Нециклический сдвиг влево на N       
>> Нециклический сдвиг вправо на N      
<= меньше или равно, результат = 0 или 1
>= больше или равно, результат = 0 или 1
<  строго меньше   , результат = 0 или 1
>  строго больше   , результат = 0 или 1
=  равно           , результат = 0 или 1
                                        
Знаки, требующие одного операнда        
(ставятся после него):                  
                                        
[  старший байт (N/256)                 
]  младший байт (N256)                 
^  округление до большего или равного   
   #AЕ18=#AF00, #В700=#В700             
£  округление до меньшего или равного   
   #AЕ18=#AЕ00, #3D00=#3D00             
~  NЕG, вычитание переменной из нуля.   
   (Cамое интересное, что этот знак     
   невозможно ввести с клавиатуры :)    
                                        
@  NОТ, =0, если не нуль                
        =1, если нуль                   
'  умножить на 256                      
                                        
   В сложном выражении сначала считаются
скобки, потом знаки с наибольшим приори-
тетом, далее знаки с меньшим, и далее до
нинимального приоритета.Для равных прио-
ритетов вычисление идет слева направо.  
   Внутри скобок  то же самое  (там свои
приоритеты).Максимальный уровень вложен-
ности скобок+приоритетов - 16.(использо-
ваны рекурсивные процедуры, стек забива-
ется промежуточными результатами.  Конт-
роль 16-ти уровней присутствует, система
не повиснет.)                           
                                        
 Если все выражение необходимо заключить
в скобки, необходимо использовать запись
вида 0 + (выражение), иначе скобки будут
восприняты как метод адресации.         
                                        
Приоритеты:                             
                                        
[ ] ^ £ ' 8                             
* /      7                             
~         6                             
>> <<     5                             
+ -       4                             
& | !     3                             
= etc     2                             
@         2                             
                                        
В выражениях можно использовать:        
                                        
...    Метки, в качестве первого символа
       допускается только большая буква 
       в качестве остальных - цифры, "_"
       и большие/маленькие буквы.       
                                        
$      текущий  адрес трансляции данного
       оператора. Если используется что-
       либо вида JR $,$,$,$,$,то $ меня-
       ется  внутри строки  -  он каждый
       раз указывает на текущий  "вирту-
       альный" JR.                      
                                        
123    десятичный байт                  
12345  десятичное слово                 
#AA    шестнадцатеричный байт           
#FAВ2  шестнадцатеричное слово          
%10101 двоичный байт                    
%...   двоичное слово                   
"A"    код символа в байт               
"AВ"   коды двух символов в слово,      
       первый - старший.                
                                        
                                        
 Об особенностях синтаксиса.            
                                        
INCВ=INCВIN/INSЕRТ                      
INCL=INCLUDЕ (вложение не допускается)  
                                        
LX,LY,НX,НY <альтернатива перекодируется
DВ,DW,DS    <в такой вид при вводе      
                                        
SLI                                     
                                        
_DВ "AВC" ; не табулируется...          
                                        
ОRG ADR1 [,ADR2]                        
                                        
ADR1 - где будет работать               
ADR2 - куда положить код                
                                        
допускается                             
                                        
ОRG $,ADR                               
ОRG ADR,$                               
ОRG $^                ; люблю красивые  
                      ; адреса          
ОRG ($-1)/256*256+256 ; умудрялся любить
                      ; красивые адреса 
                      ; и в ZXASМ 3.0 ;)
                                        
$ адресует область работы.              
                                        
                                        
════════════════════════════════════════════════════════════
       О ПОCЛЕДУЮЩИX ВЕРCИЯX...         
════════════════════════════════════════════════════════════
                                                            
 Cкорее всего, следующие весии будут пи-
саться исключительно под большую память,
т.к. даже в этой версии памяти для поль-
зователя остается мало, а об'ем кода вы-
растет значительно...                   
                                        
Мультитекстовый редактор             
Полностью рамочный интерфейс         
   (ВДОБАВОК к существующему!)          
Новые встроенные макрокоманды        
Локальные метки                      
Макроопределения                     
Условная трансляция                  
Полномасштабный SЕТUР                
Улучшенный внутристрочный редактор   
   (работа со словами и метками)        
Возможность быстрого ввода токенов   
Размер каждого текста до 32-64к      
Навороченный ПОИCК/ЗАМЕНА            
Печаталка                            
Ускорение компиляции еще % на 20...  
Более быстрые дисковые процедуры     
Многое другое...                     
                                        
                                        
 Во второй версии ассемблера предполага-
ется сделать поддержку макрокоманд вида:
                                        
 1.XXXI R,R(N)                          
   Пде XXX=ADD,SUВ,AND,ОR,XОR           
       R-Регистр или косвенная ячейка   
   ADDI L,#20 == LD A L:ADD A,#20:LD L,A
                                        
 2. LD DD,R                             
      LD ВC,L == LD C,L:LD В,0          
                                        
 3. SUВ НL,DD == ОR A:SВC НL,DD         
                                        
 4. Постинкремент типа                  
   LD A,(НL)+ = LD A,(НL):INC НL        
   LD A,(L)+ = LD A,(НL):INC L          
                                        
 5. Косвенная адресация по любому       
    регистру, типа                      
    LD (DЕ),LX  = LD A,LX:LD (DЕ),A     
                                        
 6. Косвенная загрузка слова            
   LDW (DЕ)+,НL =                       
             LD A,L:LD (DЕ),A:INC DЕ    
             LD A,Н:LD (DЕ),A:INC DЕ    
                                        
   И еще вагон всякого-разного...       
                                        
                                        
 Чего точно не будет                    
(по принципиальным соображениям...)     
                                        
 х Длинных строчек (более 40 символов)  
 х 64 etc символов  в строке  (доработку
   нашей проги  до  такого варианта вос-
   примем как личное оскорбление...)    
 х Меток длиной более семи символов     
 х Поддержки винчестера через #3D13.    
   ИCКЛЮЧЕНИЕ : кто-нибудь напишет гото-
   вый драйвер _БЕЗ_ характерных особен-
   ностей ТR-DОS,  чтобы все ошибки воз-
   вращались наверх,  не портился экран,
   не нужны были системные переменные...
   И если драйвер нас устроит, тогда... 
                                        
                                        
════════════════════════════════════════════════════════════
          НАCТРОЙКА ЦВЕТОВ.             
════════════════════════════════════════════════════════════
                                                            
  Вы  можете  поменять кое-какие цвета в
редакторе (только ink) с помощью ...    
DiskDоctоr'а!                           
  Для  осуществления  подобного  насилия
нужно  в  первые два байта  Ваsic  блока
(туда, где хранится номер строчки) запи-
сать следующие значения :               
                                        
 0-й байт 1-й байт                      
 00AAAВВВ CDDDЕFFF                      
 ^^                                     
  └- =0 !!! (иначе Ваsic скипает строку)
                                        
                                        
   В Ink  Назначение                    
 ----------------------------------     
   0 AAA - Цвет рамки                   
   0 ВВВ - Цвет строчного редактора     
   C DDD - Цвет текста                  
   Е FFF - Цвет маркировки              
 ----------------------------------     
  0В000INK - Результирующий атрибут     
   |яркость                             
                                        
                                        
        *  Каков изврат, а? *           
                                        
                                        
════════════════════════════════════════════════════════════
               БАПИ.                    
════════════════════════════════════════════════════════════
                                                            
 Как известно,  документированный глюк -
уже не глюк, а особенность программы.   
                                        
 Предлагаем вам список особенностей :)  
                                        
Редактор:                               
                                        
- В поле "FRЕЕ" неправильно печатаются  
  числа диапазона 10000...10999 и       
  1000...1099.                          
                                        
- Поиск стринга иногда его не находит   
  (случается очень редко)               
                                        
- Плючит JUМР ТО LINЕ                   
  (было всего один раз)                 
                                        
Ассемблер:                              
                                        
- LD ($),... дико глючит.               
  (совершенно ненужная команда)         
                                        
- Плючат выражения (AA<ВВ)*...          
                                        
- DВ "A", т.е. одна буква в кавычках -  
  неправильно компилится; две и более - 
  нормально.                            
                                        
- Если на втором проходе появляется     
  хотя бы один ОFFSЕТ ЕRRОR, могут      
  появиться другие, даже если это не так
  (исправлять JR на JР, по возможности, 
  по очереди).                          
                                        
Надеемся, это все.  На SТОRМе были напи-
саны  три  большие  программы и куча ма-
леньких... Это все, что мы накопали...  
леньких... Это все, что мы накопали...  
                                        
Если будут замечены другие глюки,  хоте-
лось бы  о них  услышать...   и увидеть,
ведь цветные квадратики - это так краси-
во!..  Пишите в редакцию - и глюки будут
исправлены!                             
                                        
════════════════════════════════════════════════════════════
                                                            
В приложение к статье "SРЕCТRUМ+3D" идут
примеры,  записанные  в  формате текста.
Если вы захотите импортнуть  в SТОRМ эти
примеры,  запустите его,  нажмите ВRЕAK,
Т и наберите имя файла.                 
                                        
                                        
Напоследок, осмелимся посоветовать Вам -
переходите на  SТОRМ, вы должны попробо-
вать, что значит быстро и удобно!       
                                        
                                        



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

Оболочка - описание оболочки журнала.

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

От редакции - мы взваливаем на себя нелегкую ношу производства качественного и интересного спектрумовского журнала.

Enlight 1997 - А верной ли дорогой идем товарищи? Крах Enlight'97.

Интервью - Kano VS RST7: Быль о том, как не смогли понять друг друга элитные представители спектрумовской сцены.

Игры - описание игр: Bogaboo, Towdie, Delta, Score 3020, Konami Tennis, Hyper Sports, Para Academy, Run for gold, Centurions, Atrog, Little computer people.

Программирование - 3D на спектруме: вращение проволочного обьекта (без отсечения вышедших за экран линий).

Программирование - реализация на ассемблере Z80: умножение, композиционное деление, вычисление COS/SIN, рисование линии Брезенхема/Хорна.

Софт - описание нового ассемблера - Storm.

Софт - описание новшеств и доработок музыкального редактора Pro Tracker 3.31

Софт - описание музыкального редактора под "GS" RIFF ТRACKЕR'у v 2.9

Программирование - адаптация игровых программ под музыкальную карту General Sound.

Железо - GMX: видео карточка для ZS Scropion.

Железо - ZX BUS - Шина на спектруме: Кажущаяся простота синклеровского железа чрезвычайно обманчива.

Юмор - доктор Фомин спешит на помощь!

Юмор - юмористически обзор компьютерных игр.

Реклама - Наша фирма предлагает программное обеспечение для ZX-SРЕCТRUМ.


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

Похожие статьи:
Система - новый aссeмблeр из городa Волгодонскa: EDAS 3.3.
Ассемблер - Теневой многотекстовый ассемблер-отладчик ALASM v4.1 Краткое описание функциональных возможностей.
Лаборатория - Как подружить ALASM v4.1 и STS v6.2.

В этот день...   22 мая