ZX Review
#3-4
22 июля 1997 |
|
Форум - А.Гура. Кодекс программиста.
(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 РЕВЮ. ********************************
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября