ZX Review #5-6
04 ноября 1997
  PC  

Авторская разработка - Трамплин (С.Веремеенко).

<b>Авторская разработка</b> - Трамплин (С.Веремеенко).
┌──────────────────────────────┐
│                              │
│     АВТОРСКАЯ РАЗРАБОТКА     │
│                              │
└──────────────────────────────┘

(c) С.Веремеенко

           ТРАМПЛИН

   Программный  пакет   Трамплин
предназначен для  программистов-
любителей, освоивших  программи-
рование на  ассемблере  Z80  или
I8080. Он позволяет сразу, толь-
ко на основе тех знаний, которые
приобретены практикой программи-
рования для SPECTRUM'а  (Ориона,
Вектора,  Специалиста  и  проч.)
написать вполне полноценную про-
грамму для IBM PC.
   Программист-любитель, даже  в
совершенстве освоивший  програм-
мирование для 8-разрядных машин,
сталкивается  со   значительными
трудностями при попытке  перехо-
да на более перспективную и  со-
вершенную платформу  PC.  Именно
эти трудности вызвали  у  многих
спектрумистов  стойкое неприятие
PC, иллюзию невероятной сложнос-
ти  и  даже заумности этой в об-
щем-то неплохой машины. Основные
трудности, с которыми  сталкива-
ется  "виртуоз 8-битной балалай-
ки" при попытке освоения PC:
   1. Сложная структура  сегмен-
тированой памяти и  связанные  с
этим  проблемы  распределения  и
управления  памятью.  Не   имеет
аналога ни в одном из  8-разряд-
ных компьютеров.
   2. Необходимость   достаточно
полного изучения DOS  "изнутри",
на уровне векторов прерывания ДО
ТОГО, как Вы напишете свою  пер-
вую программу, т.к.  даже  самая
простая программка из 10-15  ко-
манд уже обязана  взаимодейство-
вать с DOS.
   3. Необычный и  сложный  син-
таксис ассемблера процессора I86
(так я в дальнейшем  буду  назы-
вать все семейство PC-шных  про-
цессоров).
   4. Новая  для    спектрумиста
система команд.  Это  самая  ма-
ленькая проблема, и ее можно бы-
ло бы и не упоминать, т.к. I86 и
Z80 довольно близкие родственни-
ки, и для большинства команд Z80
есть полные  аналоги  в  системе
I86 (но не наоборот!)
   Трамлин  позволяет  растянуть
во  времени  решение  всех  этих
проблем. Свою  первую  программу
на Трамплине Вы можете написать,
даже  используя  мнемоники  Z80,
хотя этот  этап  лучше  перешаг-
нуть сразу. Использовать из  бо-
гатой и чрезвычайно удобной сис-
темы команд I86 только те, кото-
рые имеют аналоги в наборе Z80 -
все равно, что есть  суп  пинце-
том,  игнорируя  лежащую   рядом
ложку.

    Характерные особенности
           Трамплина

   Программа, написанная для ас-
семблирования   Трамплином,   по
своей структуре почти  не  отли-
чается от  программы, написанной
для Spectrum. Она  должна  начи-
наться заголовком типа:

include "keyboard.lib"
include "standard.fnt"
include "disk.lib"
include "s320_200.lib"

   PROGRAMM        Z80

   А дальше пишете так, как  пи-
сали бы на GENS-4. Заголовок оз-
начает, что  Вы  планируете  ис-
пользовать   клавиатуру,  будете
обращаться к дисководу,  винчес-
теру  или  электронному   диску,
что-то хотите выводить на  экран
в видеорежиме 13h и удовлетвори-
тесь стандартным фонтом.
   Аргумент  функции    PROGRAMM
сообщает Трамплину, что  Вы  еще
не освоили систему команд I86, и
он может напороться на  мнемони-
ку Z80. В этом  режиме  Трамплин
будет подбирать для  команд  Z80
наиболее  подходящую  замену  из
арсенала  I86, хотя  использова-
ние команд I86 приветствуется  и
в этом режиме. Вы можете  произ-
вольно перемешивать  команды  из
обоих  наборов, Трамплин  разбе-
рется.
   Когда использование  мнемоник
Z80  будет  для  Вас  пройденным
этапом, аргумент Z80  в  функции
PROGRAMM можете опустить, но са-
му функцию  выбрасывать  нельзя.
Кроме всего прочего, она распре-
деляет память, настраивает аппа-
ратуру   машины,  подготавливает
информацию для последующего кор-
ректного выхода из  Вашей  прог-
раммы, короче  говоря  -  делает
всю   черновую  работу,  которую
должен сделать  программист  PC,
но к которой непривычны спектру-
мисты.
   Если совместить мнемоники  из
разных  наборов  команд  удалось
без особых  сложностей, то  сов-
местить два синтаксиса, сами по-
нимаете,  невозможно.  Поскольку
использование Трамплина  предпо-
лагает  постепенный  переход  от
программирования    в      стиле
Spectrum к программированию  PC,
предпочтение было отдано синтак-
сису  ассемблера   I86.    Самые
большие отличия  проявляются  на
этапе  выбора  модели  памяти  и
инициализации, а это  все  Трам-
плин  делает  сам,  без   Вашего
участия, так что запомнить  нуж-
но совсем немного.

   1. Там, где на ассемблере Z80
Вы ставили  круглые  скобки  для
обозначения косвенной адресации,
Трамплин требует квадратных.

Пример:   gens-4        LD      A,(HL)
        Трамплин        LD      A,[HL]  или     MOV     AL,[BX]

   2. Метки и имена переменных -
различные объекты.

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

Пример:   gens-4                        Трамплин

          CALL    PROC1                 CALL    PROC1
          ...........                   ............
  PROC1   LD      HL,(DATA)     PROC1:  LD      HL,[DATA]
          RET                           RET
  DATA    DW      #4000         DATA    DW      4000h

Обратите внимание на различие  в
обозначении HEX-чисел.

   3. Метки и  имена  переменных
не являются константами и не мо-
гут непосредственно  использова-
ться в выражениях.  Для перевода
метки  или  имени  переменной  в
константу служит  оператор  off-
set.

Пример:   gens-4                        Трамплин
          LD      HL,NAME               LD      HL,offset NAME
  NAME    LD      DE,DATA       NAME:   LD      DE,offset DATA
          ..............                ......................
  DATA    DW      15000         DATA    DW      15000

   4. Поскольку   I86   является
16-разрядным (как минимум)  про-
цессором, иногда возникает неоп-
ределенность, когда  из  контек-
ста программы невозможно опреде-
лить размер  операнда.  В  таких
случаях приходится его уточнять.

Пример:   неправильно
          INC     [HL]    ; что инкрементируем, байт или слово?

          правильно
          INC     [BYTE HL]   ; инкремент байта по адресу из HL
          INC     [WORD HL]   ; инкремент слова по адресу из HL

   Такие ситуации возникают  не-
часто и отслеживаются  ассембле-
ром, так что если  Вас  попросят
уточнить тип операнда, не  удив-
ляйтесь очень сильно.
   Вот, собственно, и все  отли-
чия  в  синтаксисе, которые  Вам
нужно  запомнить,  чтобы  начать
работу в Трамплине. Существуют и
другие, но с ними Вы столкнетесь
уже тогда, когда Трамплин станет
для Вас пройденным этапом.
   С точки зрения  программиста,
работающего в  Трамплине, в  его
распоряжении  компьютер  с   ОЗУ
65536 байт, очень простым диско-
вым интерфейсом  и  координатным
дисплеем  среднего   разрешения,
работающим в режиме с  доступны-
ми  255  цветами  из  палитры  в
262144 цвета.  Стек  вынесен  за
пределы  доступного    адресного
пространства  и    автоматически
инициализируется  при    запуске
программы.  Экранные  прерывания
реализованы   так   же,  как   в
Spectrum, но  устанавливать  ре-
гистр I и  вектор  прерывания  в
памяти нет необходимости. Доста-
точно в  любом  месте  программы
разместить подпрограмму обработ-
ки прерываний с  зарезервирован-
ным именем INTERRUPT, и  по  ко-
манде IM2 прерывания  включатся.
Сохранять  в  стеке  регистры  в
подпрограмме прерывания тоже  не
нужно. Трамплин о таких  мелочах
заботится сам. Подпрограмма пре-
рываний должна  завершаться  ко-
мандой RETF.
   Есть еще одна зарезервирован-
ная метка BEGIN. Ей должна  быть
отмечена команда, с которой  Ва-
ша программа  будет  стартовать.
Команда  HALT, как  обычно,  де-
лает паузу до наступления преры-
вания независимо от  того, какой
режим прерываний (IM 0 или IM 2)
установлен.  Запрещать  прерыва-
ния нельзя. При попытке  запрета
прерываний Вы парализуете MSDOS,
а она этого не потерпит. Коррек-
тный выход в  DOS осуществляется
по команде EXIT.

      Библиотечные функции

   Обращение к  внешним  устрой-
ствам в PC чаще  всего  осущест-
вляется путем  программных  пре-
рываний. BIOS и  DOS  предостав-
ляют для этого  большие  возмож-
ности, и Вы можете  пользоваться
ими  почти  без  ограничений, но
для начинающего это  сложновато.
Поэтому в "Трамплин" введены го-
раздо более  простые  и  удобные
команды обращения к внешним  ус-
тройствам, реализуемые драйвера-
ми,   подключаемыми    командами
include в заголовке. Несмотря на
значительный объем, эти  драйве-
ра не отнимают у Вас  ни  одного
байта из доступного Вашей  прог-
рамме  адресного    пространства
(65536 байт). Все они размещают-
ся в другом сегменте памяти, как
и стек. Рассмотрим некоторые до-
полнительные  команды,  которыми
Вы можете  пользоваться, подклю-
чив соответствующий драйвер.

   Клавиатура (keyboard.lib)

  keyboard.lib дополняет систему
команд двумя командами:

   KEYBOARD <аргумент>
   KEY      <аргумент>

  Команда KEYBOARD устанавливает
режим работы клавиатуры.

KEYBOARD 0 - ожидание нажатия
             клавиши.
KEYBOARD 1 - чтение кода клавиши
             без ожидания.
KEYBOARD 2 - джойстиковый режим.

   По команде KEY при  работе  в
нулевом режиме  программа  оста-
навливается и ждет нажатия  кла-
виши. При нажатии в  аккумулятор
передается ASCII.
   В первом режиме  команда  KEY
не  останавливает  программу,  а
сразу выдает ASCII  со  сброшен-
ным  флагом  Z, если  какая-либо
клавиша нажата, или 0FFh с уста-
новленным Z, если в этот  момент
не нажата ни одна клавиша.  Ана-
логично функции INKEY BASIC'а.
   Во втором режиме команда  KEY
имеет  аргумент,  который  может
принимать значения от 0  до  13.
Аргумент указывает группу анали-
зируемых клавиш. Например, в ну-
левую  группу  входят    клавиши
"стрелка влево",  "стрелка впра-
во",  "стрелка вверх",  "стрелка
вниз",  "левый   CTRL",   "левый
SHIFT", "левый ALT" и  "ПРОБЕЛ".
Как видите, это аналогично  раз-
рядам Kempston-джойстика, и  ко-
манда KEY  0  во  втором  режиме
полностью  аналогична    команде
чтения   порта    джойстика    в
Spectrum. Нажатая клавиша  уста-
навливает  1  в  соответствующем
разряде  аккумулятора.  Одновре-
менно  могут  быть  нажаты  нес-
колько клавиш.

бит 7       6       5       4       3       2       1       0

0 Space   Alt l. Shift l. Ctrl l.  Down     Up   Right    Left
1 Enter   Back   Pg. DW.   End    Delete   Pg.Up  Home   INSERT

2   7       6       5       4       3       2      1      ~
3 Alt r. Ctrl r. Shift r.   +       -       0      9      8

4   U       Y       T       R       E       W      Q     Tab
5 ничего Pr.Scr.    \       ]       [       P      O      I

6   J       H       G       F       D       S      A  Caps Sh.
7 ничего ничего  ничего  ничего     "       :      L      K

8   <       M       N       B       V       C      X      Z
9 ничего ничего  ничего  ничего  ничего  ничего    ?      >

клав.цифр.
10  5       4       9       8       7       *      /  Num lock
11  +       -       .       0       3       2      1      6

12  F7      F6      F5      F4      F3      F2     F1    Esc
13 Pause EnterDig  ScrLock  F12     F11     F10    F9    F8

     Экран (s320_200.lib и
         s256_240.lib)

   В принципе, Вы можете устано-
вить любой  видеорежим  и  рабо-
тать с ним. Драйвер s320_256.lib
устанавливает стандартный видео-
режим  13h,  имеющий  разрешение
320*200 пикселов с 256  цветами,
применяющийся в большинстве  ви-
деоигр PC. Драйвер  s256_240.lib
устанавливает нестандартный,  но
удобный для работы с  8-битовыми
данными режим 256*240 с 256 цве-
тами. Этот режим имеет  квадрат-
ные  пикселы,  т.е.   окружность
выглядит как  окружность,  а  не
вытянутый по горизонтали эллипс,
и простое определение координат.
В совокупности это позволяет по-
высить быстродействие  программы
в 2-3 раза  за  счет  исключения
необходимости     геометрической
коррекции и  расчетов  координат
пикселов. Это немаловажно,  т.к.
спектрумисты в массе  своей  на-
род небогатый, и реально  прихо-
дится иметь в виду 386SX-33, ко-
торая   уже    сейчас    дешевле
SCORPION  или  Профи,  если   не
приобретать  дорогой  SVGA-мони-
тор, а ограничиться TV-видеокар-
той и работать с обычным телеви-
зором или переделанным CGA-мони-
тором.

   Драйверы    s320_200.lib    и
s256_240.lib предоставляют прог-
раммисту большие возможности.
   Рассмотрим систему  графичес-
ких команд.

   BORDER R,G,B

   Эта  команда    устанавливает
цвет рамки вокруг экрана и имеет
три параметра, каждый  из  кото-
рых  опреределяет  интенсивность
соответствующего первичного цве-
та.  Параметры  могут  принимать
значения от 0 до 5, что в  сово-
купности дает 216 цветов.

   COLOR R,G,B

   Передает в  аккумулятор  код,
соответствующий заказанному цве-
ту.  Смысл  параметров  тот  же.
Кроме того есть еще  одна  форма
этой команды с одним параметром.
Ее мы рассмотрим,  когда  дойдем
до "палитры пользователя".

   PLOT

   Без  параметра  устанавливает
на экране пиксел,  цвет  опреде-
ляется содержимым  аккумулятора.
В драйвере s256*240.lib  коорди-
ната X определяется регистром L,
координата Y -  регистром  H.  В
драйвере  s320_200.lib  вычисле-
ние координат сложнее.  Содержи-
мое регистра HL(BX) определяется
по формуле  HL=X+320*Y, где  X и
Y - координаты пиксела.  При вы-
числении координат трудно  обой-
тись без относительно  медленных
команд умножения и деления, и  в
этом режиме  быстродействие  па-
дает, хотя спектрумисту, привык-
шему к черепашьей скорости своей
любимой машины, даже в этом слу-
чае   быстродействие   покажется
фантастическим.
   Если в аккумуляторе код 0FFh,
цвет пиксела  не  меняется.  Это
позволяет  выводить  спрайты  на
фон без его искажения. Те пиксе-
лы спрайта, через которые должен
просвечивать фон, нужно  устано-
вить в 0FFh.

   PLOT T

   Аналогично PLOT, но  цвет  из
аккумулятора суммируется с  цве-
том пиксела. Команда выводит по-
лупрозрачные объекты -  привиде-
ния, бутылки с напитками и  про-
чее.

   PLOT ?

   Чтение  в  аккумулятор   кода
цвета из указанного HL пиксела.

   AT X,Y

   Устанавливает позицию для вы-
вода символа командами  PRINT  и
PRINT T. X и Y могут быть  зада-
ны непосредственно,  переменными
в памяти  или  содержимым  любых
регистров  из  группы   HL,BC,DE
(BX,CX,DX).    Для      драйвера
s320_200.lib  параметры  16-раз-
рядные, т.к. координата X в один
байт  не  помещается,   а    для
s256_240.lib - 8 разрядные. Мож-
но, например,  дать  команду  AT
B,H. При этом содержимое регист-
ра B определит  координату  X, а
H - Y.

   INK R,G,B

   Цвет для последующего  вывода
символов.

   PRINT

   Выводит символ в позицию  AT.
ASCII  символа  в  аккумуляторе,
начертание и размер символа  оп-
ределяются  активированным  фон-
том. После вывода символа  пози-
ция следующего сдвигается  впра-
во на величину, определяемую ши-
риной символа, которая  устанав-
ливается при активизации  фонта.
Фон под символами и между симво-
лами сохраняется (команды  PAPER
нет).

   PRINT T

   Вывод  полупрозрачных  симво-
лов. Остальное аналогично PRINT.

   FONT <имя>

   Активизация фонта. После этой
команды начертание и размер сим-
волов определяются этим  фонтом.
Всего командами include Вы може-
те  ввести  несколько    фонтов,
единственное ограничение  -  об-
щий их объем  не  должен  превы-
шать 30 - 40 kB. Фонт 8*8 пиксе-
лов занимает 2 kB, а 9*16 - око-
ло 5kB.

   PALET <метка>, <количество
   перепрограммируемых цветов>

   Чрезвычайно  мощная  команда,
позволяющая простыми  средствами
достигать удивительных результа-
тов. Все команды, имеющие  аргу-
менты <R>,<G>,<B>, кроме BORDER,
имеют еще одну  форму.  Если  Вы
дадите один аргумент от 0 до 38,
то цвет  данного  пиксела  будет
определяться "палитрой пользова-
теля", в которую входит всего 39
цветов, но они могут многократно
переопределяться  по  ходу  про-
граммы.
   Чтобы воспользоваться  палит-
рой пользователя,  нужно  где-то
создать структуру вида:

TABCOLOR   DB       n,R0,G0,B0
           DB       m,R1,G1,B1
           ..................
           DB       z,Ri,Gi,Bi

где  n,m,....z - номер    Вашего
цвета, который фигурирует в  ко-
мандах INK, COLOR  и  прочих,  а
Ri,Gi,Bi - интенсивность  цвето-
вых составляющих данного  цвета.
Они могут принимать значения  от
0 до 63. Нетрудно посчитать, что
через  палитру  пользователя  Вы
получаете доступ к  262144  цве-
там и оттенкам.
   Чтобы включить палитру  поль-
зователя, достаточно дать коман-
ду PALET TABCOLOR,5, если Вы хо-
тите,  например,  установить   5
цветов в Вашей палитре. Огромное
количество доступных цветов - не
самое главное достоинство коман-
ды PALET.  Представьте себе кар-
тинку: ночной город, на фоне фа-
сада  ночного  клуба стоит поли-
цейская машина, на капот облоко-
тился полицейский и курит.  Мер-
цают  звезды,  периодически  ме-
няет цвет неоновая реклама заве-
дения, в  окнах  видны  отблески
цветомузыки,  вертится   мигалка
машины, время от времени вспыхи-
вает огонек сигареты. И при этом
не перерисовывается на экране ни
один  бит!  Просто  в  процедуре
прерываний  работает   маленькая
подпрограммка  с  использованием
команды PALET. Как - Вы уже, ви-
димо, поняли.

   Работа с дисками (disk.lib)

   MSDOS  предоставляет    очень
большие возможности для работы с
дисковыми  накопителями.  Однако
использование функций MSDOS тре-
бует  определенной   подготовки.
Полное изучение дисковой  службы
MSDOS может занять много  време-
ни. Поэтому на первых порах луч-
ше воспользоваться  гораздо  бо-
лее простыми и понятными  коман-
дами драйвера disk.lib.
   Команды упрощены до возможно-
го предела. Разумеется, disk.lib
не использует и  10%  потенциала
MSDOS, но на того, кто еще вчера
плевался, пытаясь выжать  что-то
из  TR-DOS, его возможности про-
изведут впечатление.
   Вначале  перечислю  ограниче-
ния, присущие disk.lib по  срав-
нению с MSDOS. Вся работа произ-
водится  в  одном  каталоге,   а
именно в том, из  которого  была
запущена  Ваша  программа.  Если
программа была запущена с диске-
ты,  из   каталога    винчестера
C:\GAMES\DIZZY  или электронного
диска, то  читать  и  записывать
она будет только туда. Это впол-
не естественное ограничение  для
игровых   программ,  электронных
журналов и столь  любимых  прог-
раммистами-любителями    "DEMO".
Одновременно допускается  работа
только с одним файлом.  Это  ха-
рактерно и для TR-DOS,  так  что
спектрумисты особых неудобств не
почувствуют.
   Максимальный размер файла ог-
раничен 16 MB.  На дискету такой
файл,  конечно,  не  войдет, так
что и это ограничение  не  столь
страшно.
   Не  поддерживается  работа  с
аттрибутами  файлов.  Можно  ис-
пользовать только обычные файлы.
   Теперь  рассмотрим    команды
disk.lib.

   FILE <имя файла>

   Этой командой мы указываем, с
каким  файлом  собираемся  рабо-
тать. Если имя файла опущено, то
в  качестве  имени  используется
строка, на которую указывает ре-
гистровая пара DE (DX).

   DELETE <имя файла>

   Удаляет указанный файл. Усло-
вие умолчания то же.

   CREATE <имя файла>

   Создает  новый  файл  нулевой
длины с указанным именем.  Усло-
вие умолчания то же.

   LOAD  A,B,C,D

   Чтение  из  файла, указанного
последней командой FILE.
   Параметры:
   A - адрес, куда  будет произ-
водиться чтение. Может быть мет-
кой, именем переменной или самой
переменной.  Абсолютное  задание
адреса  возможно,  но  не  имеет
смысла. Почему? Немного подумай-
те и поймете.
   B - количество    считываемых
байт. Может быть задано абсолют-
но, в виде  разности  меток  или
содержимым  переменной.   Макси-
мум - 65535.
   C  и  D. Определяют  смещение
начала чтения относительно нача-
ла файла. Если опущены, то  файл
читается  с  начала.  Весь  файл
считается состоящим из некоторо-
го  количества  страниц  по  256
байт,  аналогично  секторам    в
TR-DOS. C - номер страницы (сло-
во, диапазон 0-65535), D -  сме-
щение  внутри  страницы   (байт,
диапазон 0-255).  Эти  параметры
могут быть заданы непосредствен-
но или как имена переменных.
   Если заданное  Вами  смещение
превышает  величину    реального
файла, команда установит флаг  C
и  выдаст  в  аккумуляторе   код
ошибки. Так поступают все коман-
ды disk.lib  при слишком фамиль-
ярном обращении.

   SAVE A,B,C,D

   Запись в файл. Смысл парамет-
ров тот же. Если вы  записываете
в файл, существующие там  данные
замещаются  записываемыми.  Если
длина  существующего  файла   не
позволяет  записать  затребован-
ное Вами количество байт или  Вы
установили смещение близко к его
концу или даже на  конец,  длина
файла  автоматически  увеличится
до требуемой. Так что Вы спокой-
но можете записать 60 kB  в све-
жесозданный файл с нулевой  дли-
ной.

       Работа в Трамплине

   Чтобы начать работу  в  Трам-
плине, нужно прежде всего запус-
тить его. Он имеет имя tramplin.
com. После запуска Вы увидите на
экране  меню  со следующими пун-
ктами:

1. Редактор
2. Ассемблер без листинга
3. Ассемблер с листингом
4. Пробный пуск
5. Условия регистрации

   Выход в DOS осуществляется по
ESC.
   Если Вы нажмете клавишу  1, у
Вас попросят ввести имя файла, с
которым Вы собираетесь работать.
Имя файла запоминается  на  весь
сеанс работы,  и  все  программы
пакета будут  его  использовать,
пока Вы не введете новое.  После
ввода имени Вы попадете в редак-
тор, где сможете начать работу с
новым файлом  или  продолжить  с
существующим.  После  выхода  из
редактора Вы можете  попробовать
проассемблировать     программу,
выбрав пункт 2 или  3.  Если  Вы
работаете с винчестером -  проб-
лем нет, а если винчестера  нет,
подумайте, прежде  чем  выбирать
ассемблирование   с   листингом.
Листинг большой программы  может
иметь размер 1.5-2 MB, а провер-
ка  на  возможность   размещения
файла не производится, т.к.  за-
ранее этот размер  не  известен.
Могут быть неприятности...

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

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

      Ближайшие перспективы

   В настоящее время идет работа  
по созданию  новых  библиотечных
модулей:  драйверы мыши, принте-
ра, звука, встроенного электрон-
ного диска.  Будет написан новый 
драйвер  дисплея  с  буферизаци-
ей экрана, работающий  по методу
"грязных квадратов".

   Приложение: примеры использо-
вания библиотечных функций.

          KEYBOARD 0
          ...............
          KEY
          CMP     AL,27
          JZ      KEY_ESC  ; нажата  Esc
          ...............
KEY_ESC:  EXIT
────────────────────────────────────────────────────────────────
          KEYBOARD 2
          ...............
          KEY     0
          CMP     AL,00010110b
          JZ      UP_RIGHT_FIRE   ;если одновременно нажаты
                                  ;вверх, вправо, Ctrl-left
────────────────────────────────────────────────────────────────
          COLOR   0,5,0
          MOV     BL,128          ; X-координата
          MOV     BH,120          ; Y-координата
          PLOT                    ; яркозеленая точка
                                  ; в центре экрана
          INC     BL
          PLOT    ?               ; AL=код цвета соседней
                                  ; по горизонтали
────────────────────────────────────────────────────────────────
          BORDER  1,2,3           ; бордюр оливкового цвета
          FONT    MICRO           ; устанавливаем фонт
                                  ; (если он у Вас есть)
                                  ;
          INK     0,1,3           ; будем печатать цветом
                                  ; морской волны
          AT      30,52           ; левый верхний угол символа
                                  ; будет в коорд. X=30,Y=52
          PRINT   T               ; печатаем прозрачным шрифтом
────────────────────────────────────────────────────────────────
          PALET   NIGHT,5         ; уст. 5 регистров палитры
                                  ; "Ночь"
          ...............

          NIGHT   DB    0,0,10,22   ; 0 рег. голубая звезда
                  DB    1,10,0,0    ; 1 рег. потухающая сигарета
                                    ; в зубах у хулигана
                  DB    5,0,20,0    ; 5 рег. глаза кошки
                  DB    11,17,17,17 ; 11 рег. серая кошка
                  DB    4,0,47,0    ; 4 рег. зеленый светофор
          NIGHT1  DB    0
          WPAL    DW    offset PFL3
────────────────────────────────────────────────────────────────
          CREATE  'NIGHT.PAL'          ; создать файл
          SAVE    NIGHT,NIGHT1-NIGHT   ; записать туда палитру
          LOAD    [WPAL],4,0,7         ; считать из этого файла
; в переменную PFL3 4 байта начиная с 8 от начала файла

          MOV     DX, offset F_NAME
          DELETE

          ; удалить файл, имя которого в переменной F_NAME
          .........................

          F_NAME  DB      "NIGHT.PAL",0
────────────────────────────────────────────────────────────────

    ВНИМАНИЕ:  саму   программу
 ТРАМПЛИН Вы найдете в Каталоге
 ZX РЕВЮ.

           *   *   *





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

Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.

Adventure Project - Русификация адвентюр.

TR-DOS для начинающих - Продолжение.

Авторская разработка - Scorpion 2000 (С.Зонов).

Авторская разработка - Трамплин (С.Веремеенко).

Визитная карточка - новый электронный юмористический журнал "SpectrofUn".

Перекресток драконов - Раскрутка игры Finders Keepers.

Перекресток драконов - Раскрутка игры Knight Tyme.

Перекресток драконов - Раскрутка игры Spellbound.

Перекресток драконов - Раскрутка игры Stormbringer.

Ретро - 40 лучших процедур: Слияние картинок, Вращение символа по часовой стрелке, Инвертирование символов, Изменение атрибута, Закрашивание контура, Построение шаблонов (Дж.Хардман, Э.Хьюзон.).

Советы экспертов - Total Eclipse 2.

Советы экспертов Super League.

Форум-игры - Описание игры Страна Мифов.

Форум-игры - Прохождение Renegade.

Форум-игры - Тонкости торговли в игре Elite

Форум - Изучение и отладка @-файлов с помощью STS 5.1. Особенности отладки программ с помощью монитора STS. Исправление ошибки STS 5.1.

Форум - Компрессия программ.

форум - О сокращении времени форматирования. О записи секторов одновременно с форматированием. Перестроение экрана за одно прерывание.

Форум - Особенности ассемблера ZX ASM 3.0.

Форум - По поводу компилятора бейсика "Blast".

Форум - По поводу релоцируемых программ.

Форум - Программы "Пламя" и "Дракон".

Читатель-читателю - TR-DOS: как не допустить ошибки?

Читатель-читателю - Эффективная работа с дисководом .

Этиды - Расчет адреса в файле атрибутов. Программа скроллирования заданного окна на 1 пиксел вправо. Программа очистки заданного окна. Процедура вывода картинки из буфера.

Этюды - Индикатор каналов музыкального процессора. Процедура очистки экрана. Предложение по стандартизации.

Этюды - Набор из восьми программ "расширения" экрана. Две процедуры проявления экрана.

Этюды - Новые темы для разработок.

Этюды - Программа воспроизведения инструмента от редакторов оцифрованной музыки.

Этюды - Программа обработки @-бейсик файлов.

Этюды - Процедура поворота символа на 90 градусов по часовой стрелке.

Этюды - Процедура поиска текстовых файлов.

Этюды - Экранная процедура "UP HL".


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

Похожие статьи:
Kто они? - Минские скинхеды круче всех!
Письмо №289
Вступление - содержание номера.
Проба пера - Поэма о добре и зле.
От авторов - Редакция.

В этот день...   26 апреля