(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
РЕВЮ.
********************************