ZX Review #3-4
22 июля 1997

Форум - А.Гура. Кодекс программиста.

<b>Форум</b> - А.Гура. Кодекс программиста.
(c) Гура Андрей (EAGLE SOFT),
г.Курган.

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

    ПЕРЕКЛЮЧЕНИЕ СТРАНИЦ ОЗУ
    ════════════════════════

   Переключать  странички  лучше
по порту #7FFD, а не по половин-
ке #FD. Таким образом можно  из-
бежать множества проблем совмес-
тимости программ с другими  ком-
пьютерами. Возьмем  всем  извес-
тный пример с  INSULT  MEGADEMO.
Эта  программа  идет  на  PROFI,
PENTANGON 128, но не хочет рабо-
тать на SCORPION'е, чем и вызва-
но недовольствие многих  SPECCY-
USER'ов   (я   думаю,  владельцы
SCORPION'ов меня поймут).

          ПОРТ #7FFD
       ┌─┬─┬─┬─┬─┬─┬─┬─┐
       │ │ │ │Z│Y│X│X│X│
       └─┴─┴─┴─┴─┴─┴─┴─┘

  X -номер страницы ОЗУ, от 0 до
7, подключаемой с адреса #C000;
  Y -переключение  экрана, Y=0 -
#4000, Y=1 - #C000 (страница);
  Z-переключение  ПЗУ,  Z=0    -
ZX128, Z=1 - ZX48;

  Обращаться к порту для  перек-
лючения страниц проще  следующим
образом:
140.
    LD BC,#7FFD
    LD A,N+16 ;N-номер страницы
    OUT (C),A
2
  На время изменения содержимого 
порта прерывания необходимо зап-
рещать.

          УПРАВЛЕНИЕ
          ══════════

   KEMPSTON нужно опрашивать  по
порту #1F, а не по #DF, как  это
сделано  на  ZX-NEXT.  А  вот по
порту #DF  (для тех, кто не зна-
ет) опрашивается FULER джойстик.

          ПОРТ #1F
      ┌─┬─┬─┬─┬─┬─┬─┬─┐
      │ │ │ │F│U│D│L│R│
      └─┴─┴─┴─┴─┴─┴─┴─┘

F-FIRE-огонь;
U-UP-вверх;
D-DOWN-вниз;
L-LEFT-влево;
R-RIGHT-вправо.

   Обращение к порту  происходит
по мнемонике IN.

   SINCLAIR 1  или  INTERFACE  1
здесь присущи следующие клавиши:
1-LEFT; 2-RIGHT;  3-DOWN;  4-UP;
5-FIRE.
   SINCLAIR 2 или  INTERFACE  2:
6-LEFT; 7-RIGHT;  8-DOWN;  9-UP;
0-FIRE.
   CURSOR:5+CS-LEFT;  6+CS-DOWN;
7+CS-UP; 8+CS-RIGHT,  причем  CS
здесь не обязателен, и  его  от-
сутствие даже удобно, но  не  во
всех случаях.

   KEYBOARD: здесь лучше придер-
живаться  следуюшего  стандарта:
O-LEFT; P-RIGHT;  Q-UP;  A-DOWN;
M-FIRE. Опрос происходит по пор-
ту #FE.

           ПОРТ #FE
       ┌─┬─┬─┬─┬─┬─┬─┬─┐
       │ │Y│ │X│X│X│X│X│
       └─┴─┴─┴─┴─┴─┴─┴─┘

   Опрос производится  следующим
образом:
142.
  LD A,N      ;N-номер полуряда
  IN A,(#FE)
2
            ПОЛУРЯДЫ
        ┌──────┬───────┐
      3 │ 1...5│ 6...0 │ 4
      2 │ Q...T│ Y...P │ 5
      1 │ A...G│H...ENT│ 6
      0 │CS...V│B...SPC│ 7
        └──────┴───────┘

  0 - #FE
  1 - #FD
  2 - #FB
  3 - #F7
  4 - #EF
  5 - #DF
  6 - #BF
  7 - #7F

  Адрес порта полуряда можно вы-
числить по формуле
 255-2№, где n - номер полуряда.

        ЗАГРУЗКА С ДИСКА
        ════════════════

   При загрузке с диска  катего-
рически запрещено  обращаться  к
нестандартным  точкам  входа TR-
DOS и пользоваться методом прог-
раммирования  ВГ,  т.к. все  это
ведет к неработоспособности про-
грамм при  загрузке с  HDD, хоть
это и выглядит  очень  эффектно.
Опять возьмем для примера INSULT
MEGADEMO: я с увереностью  гово-
рю, что эта программа не  загру-
зится с винчестера.
   Также нельзя привязывать заг-
рузчики программ к  определенной
версии TR-DOS - это тоже ведет к
несовместимости и  недовольству.
Так и хочется взять компьютер со
старой версией TR-DOS  и  выбро-
сить его  в  форточку. Возможно,
так и  сделали  любители  гонок,
когда попытались загрузить LOTUS
версии Лаптева, т.к. у них  вер-
сия 5.03, а игра идет только  на
5.04.
   При  загрузке    нежелательно
что-либо отгружать на диск  (тем
более не  предупредив  владельца
ПК).

   СИНХРОНИЗАЦИЯ И ПРЕРЫВАНИЯ
   ══════════════════════════

   Во  всех программах  при  ис-
пользовании  режима   прерываний
IM2 нужно  создавать таблицу ад-
ресов, состоящую из 257 одинако-
вых байтов (откуда  берутся  эти
байты, я думаю, вы знаете).  За-
чем?,- спросите  вы,  "Ведь  это
напрасная  трата  памяти!".   Ан
нет!, - скажу я. Считается,  что
с шины данных приходит  #FF,  но
все  западные программисты поль-
зуются таблицей.
  Нежелательно засылать в вектор  
прерываний  числа, которые  спо-
собствуют обращению за адресом к 
ПЗУ, а именно  числа  0-63, хотя 
экран и область системных  пере-
менных трогать тоже не стоит.
   Все эффекты на  экране  лучше
синхронизировать    относительно
экрана. Для примера снова  возь-
мем   INSULT.   В  первой  части
скроллинг  при включенном TURBO-
режиме дергается. Во второй час-
ти все происходит настолько быс-
тро, что не  успеваешь прочитать
бегущую строчку, да и музыка иг-
рает быстрее.

        "ПОРТ АТРИБУТОВ"
        ════════════════

  Никогда не используйте в своих
программах  порт  атрибутов #FF,
так как  это  мнимый  порт.  Для
примера возьмем игру TOP GUN.

         ДРУГИЕ МЕЛОЧИ
         ═════════════

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

********************************



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

TR-DOS для начинающих - Часть 1.

Авторская разработка - General Sound - мультимедиа для ZX Spectrum!

Визитная карточка - Представляем новый электронный журнал "Major Wares" (c) Codebusters & V.M.G.

Компьютерная новелла - Knight Lore "Преданья рыцарских времен".

Новые программы - И.Рощин. HELP_Z80. В.Давыдов. Catalog's Base v1.8.

Описание оболочки журнала "ZX-РЕВЮ"

Перекресток драконов - Aavlon, Castle of Dreams, Erik the Viking.

Перекресток драконов - Eureka!, Eye of Bain, Kentilla.

Перекресток - Sherlock, Apollo, Shadows of Mordor, Rigels Revenge, Temple of Terror, ID, That's the Spirit, Return to Ithaka.

Ретро - Дж.Хардман, Э.Хьюзон. 40 лучших процедур.

Советы экспертов - Castle Master.

Советы экспертов - Firelord.

Советы экспертов - Stonkers.

Форум-игры - Insult Megademo, Catch 23, Livingstone, Rock Star ate my Hampster, НЛО-2: Дьяволы Бездны, Terminator 2, Venturama, The Spririts, Nipper, Sweewo'S World, King's Bounti-2, Hacker 2, Black Magic, Satcom, Звёздное Наследие.

Форум - А.Гура. Кодекс программиста.

Форум - А.Стрельников. Перспективы развития ZX Spectrum.

Форум - В.Давыдов. По материалам, опубликованным в ZX-РЕВЮ: Некоторые вопросы, связанные с автостартом Бейсик-программ. Redefine Keys. Процедура печати 42 символов в строке. Процедура умножения HL=B*C. Доработка посекторных загрузчиков. Мини-драйвер дисковых операций.

Форум - Группа 'Light'. Музыкальный процессор для ZX-Speccy.

Форум - Д.Федоров: Печать картинки с маской с точностью до пиксела. Алгоритм расчета адреса по координатам с точностью до пиксела.

Форум - И.Рощин. Совместное использование ZX ASM 3.0 и STS 5.1.

Форум - М.Бекарев. Расчет адреса экранной области по знакоместу и наоборот.

Форум - П.Федин. Доработка Profi для бесконфликтного подключения периферии.

Форум - С.Астров. Генератор псевдослучайных чисел.

Читатель-читателю - В.Сироткин. Защита программ (взгляд на проблему).

Читатель-читателю - И.Рощин. Драйвер экрана для компьютера "Пентагон-128".

Этюды - А.Савинов: Процедура вывода на экран символов двойной высоты. Процедура "растворения" символов.

Этюды - А.Уржа. Процедура рисования окружности.

Этюды - В.Сироткин. Программа подсчета контрольной суммы.

Этюды - Е.Волчков. Улучшение подпрограммы вычисления адреса в дисплейном файле.

Этюды - Е.Мороз. Бегущая строчка.

Этюды - И.Командин. Программа проявления экрана.

Этюды - И.Рощин. Два графических эффекта.

Этюды - М.Лазутов: Программа модернизации шрифта. Программа кодирования/декодирования блока кодов. Эффект с атрибутами.

Этюды - О.Смолянкин: Процедуры очистки экрана. Вывод текстовых сообщений на экран.


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

Похожие статьи:
От авторов - У газеты появилась своя BBS.
Розыск - Разыскиваются: BLOCKUS, KLIATBA NOCI.
Skip_the Darkest - Aka PoP_НL^EC: Moй Сaтaнизm.
Юмор - очень серьезная реклама.
Железо - Доработка позволяющая улучшить качество приема информации на модеме.

В этот день...   21 ноября