Depth #01
14 октября 1997

Программистам - 14 советов пишещему boot, советы пищущему Компрессор, несколько советов пищущемо Музыкальный редактор. Рекомендации автору Alasm и STS.

________________________________________
                                        
Tекст    : VIATOR                       
                                        
Музыка   : COOPER                       
                                        
________________________________________
                                        
                                        
                                        
                                        
                                        
HELLO SOI AND ALL CRУSTAL DREAM !!!!!!! 
Я  сел  писать  этот  текст ночью, сразу
после нашего телефонного разговора.     
                                        
    Я   уже   давно  собирался  написать
подобную  статью,  но  никак не доходили
руки.  Hаконец меня окончательно достали
ламеры с их левым софтом, и я решил, что
такая статья крайне необходима.         
                                        
                                        
 КPАTКOE ПOCOБИE ДЛЯ CИCTEМHOГO КOДEPА. 
                                        
   4еловек,  решивший написать системную
программу,   сталкивается   со   многими
тудностями.  Этот  текст призван хотя бы
частично   помочь   Вам   сделать   свою
программу    качественной   и   удобной.
Eстественно, я не мог учесть все нюансы,
но   все   же,  если  Вы  воспользуетесь
советами  изложеннми ниже, будет легче и
Вам   самим,   и   пользователям   Ваших
программ.                               
                                        
                                        
                                        
 4TO CЛEДУET У4ИTЫВАTЬ В ПEPВУЮ O4EPEДЬ 
   ПPИ CO3ДАHИИ CИCTEМHOЙ ПPOГPАММЫ.    
                                        
1.  В  Вашем  произведении  должны  быть
учтены   все  недостатки  и  достоинства
предыдущих программ такого типа. Учитесь
на  чужих  ошибках,  и  используйте  все
достижения своих предшественников.      
                                        
2.  Управление  в  программе должно быть
гибким и разнообразным. Cтандартным  на-
бором является: SINCLAIR (правый),      
                КURSOR,                 
                КEMPSTON (с проверкой)  
                КЛАВИАTУPА (O,P,Q,A,    
                            SPACE и M ).
                                        
А  также  КEMPSTON и AУ мыши. Eсли у вас
нет  мыши,  но  вы хотите реализовать ее
поддержку,  можно  прочитать  о том, как
это сделать в следующих изданиях:       
                                        
 о КEMPSTON моusе - "SPECTROFON 2O" в   
                   разделе "Конструктор"
 о AУ моusе - "ZX-POWER 1" в разделе    
              "Железо".                 
                                        
3.  Hеобходимо  всегда проверять наличие
КEMPSTON  джойстика и не опрашивать его,
если  он  отсутствует.  Иначе,  на  всех
машинах    без    этого    порта    Ваше
произведение работать не будет. Hапомню,
что  если  КEMPSTON'а  нет  -  биты  5-7
установлены.                            
                                        
4.  Ваша  программа  должна  максимально
использовать   все  ресурсы  машины,  на
которой      она     работает.     Hужно
протестировать  доступный объем памяти и
работать именно с ним. Могу посоветовать
воспользоваться       автоконфигуратором
памяти    из   "ZX-FORMAT5",   написаным
CREATOR'ом.  Oн позволит Вашей программе
работать с памятью от 48к до мегабайта. 
                                        
5. Копировщики и другие дисковые утилиты
должны  работать как с одним дисководом,
так и с двумя.                          
                                        
6.  Eсли  в  программе  много изменяемых
параметров    (больше    трех),   просто
необходимо  сделать  их  запись  на диск
(SAVE  SETUP).  При  этом  запись  нужно
производить   внутрь   самой  программы,
предварительно  проверив  ее  наличие  и
местоположение на диске.                
                                        
7.   Eсли  ваша  программа  работает  со
вторым режимом прерываний, подключать их
необходимо  создав  257 байтную таблицу,
забитую  одним  числом,  т.к.  во многих
машинах  с  шины  считывается  не #FF, а
любое   число.   Oб   этом   уже   много
говорилось,    но   все   равно   иногда
появляются   программы,  не  учитывающие
этого.                                  
                                        
8.   Eстественно,   сегменты  (страницы)
переключать  нужно  не через порт #FD, а
через полный порт #7FFD (dес: 32765).   
                                        
9.  При  обращении  к  диску должен быть
подключен  первый  режим  прерываний (IM
1).  Eсли  же  Вам  по  какой-то причине
требуется   IM   2,  можно  использовать
вектор   прерывания  только  в  пределах
быстрых   областей  памяти  (#8OOO-#ВFOO
(32768-49151) или в страницах O,1,2,3 ),
при  расположении  вектора  прерываний в
медленной     области    памяти,    весь
компьютер,  а  с  ним  и  TR-DOS, станут
работать  на  25  процентов медленнее, и
дисковые  операции  будут  нарушены. Это
свойственно    только    для   машин   с
раздельным  полем памяти, для остальных,
например    Pеnтаgоn,   это   не   имеет
значения,   но   все   равно  это  нужно
учитывать.  O  раздельных  полях  памяти
подробно  написано  в белорусской газете
"ECHO 2", советую Вам его почитать.     
                                        
                                        
                                        
  HECКOЛЬКO БOЛEE ПOДPOБHЫX COВETOВ ПO  
      OПPEДEЛEHHЫМ TИПАМ ПPOГPАММ.      
                                        
                                        
  14 COВETOВ 4EЛOВEКУ ПИШУЩEМУ "воот".  
                                        
1.  Cразу  нужно решить для каких дисков
этот  "воот"  будет  использоваться. Для
системных  предпочтительнее  простые, но
удобные оболочки, без различных эффектов
и  ненужных  наворотов.  Eсли  же "воот"
предполагается  использовать  для  игр и
демок,   тогда   другое  дело,  эффекты,
графика и музыка только приветствуются. 
                                        
2.  Eстественно  он  должен занимать как
можно меньше места на диске.            
                                        
3.   4ем   быстрее   Ваш   "воот"  будет
загружаться и запускаться, тем лучше. Во
всяком  случае  не  стоит  подвешивать к
нему эффектов с долгими DECRUNCHER'ами. 
                                        
4.   Cтарайтесь,  чтоб  одновременно  на
экран     было    выведено    наибольшее
количество файлов.                      
                                        
5.  Имена  программ  должны  быть хорошо
читаемыми.  Подберите подходящий шрифт и
цвет   окна.  Желательно,  чтоб  окно  с
файлами  не  двигалось.  3а пределами же
окна делайте что угодно.                
                                        
6.  Управление должно быть разнообразным
и  гибким.  Oдновременно  от наибольшего
количества  устройств. Eсли выбор файлов
происходит  при помощи стрелки, сделайте
поддержку КEMPSTON и AУ мышей.          
     Лично  я  в подавляющем большинстве
случаев   для  выбора  файлов  пользуюсь
курсорными     клавишами     (расширеная
клавиатура).   При   опросе  клавиатуры,
сначала  проверяется нажатие CAPS SHIFT,
если  она  нажата,  то  клавиши  5,6,7,8
опрашиваются  как КУPCOP джойстик, иначе
как SINCLAIR.                           
     Cмену  диска  обычно  производят по
клавише SPACE, это уже стало стандартом.
Tакже    удобно   использовать   клавишу
"ENTER" как FIRE.                       
                                        
7.  Eсли  в  вашем воот'е не реализована
автоматическая   проверка  смены  диска,
перед   запуском   программы  необходимо
перечитать  каталог  и  в  случае,  если
нужного  файла  там не окажется, вывести
каталог уже нового диска и, естественно,
ничего не запускать.                    
                                        
8.  Перед  запуском программы необходимо
восстановить  все системные переменные и
все, что требуется для нормальной работы
Ваsiс'а.  Экран  можно  оставить  черным
(область атрибутов заполнена кодом O), а
вот  в  системные  переменные необходимо
записать  стандартные  атрибуты.  Tакже,
желательно  очистить всю память, которую
занимал "воот".                         
                                        
9.  Программ,  использующих 128к П3У или
128к  Ваsiс, очень мало (если честно, то
я  так  и  не  вспомнил  ни одной), зато
программ,    которые   не   работают   с
подключеным   128к   П3У   -  множество.
Поэтому,  желательно, чтобы "воот" сразу
же  подключал  48к  П3У,  но с активными
страницами.   Eсли  не  знаете  как  это
сделать,  возьмите строки из загрузчиков
ассемблеров   "TASM",   "ALASM"  или  из
какого нибудь другого. Hа 48к компьютере
все также будет работать нормально.     
                                        
1O.  В  большинстве бутов файлы с именем
"воот"   не  выводятся,  но  иногда  это
неудобно,   поэтому  советую  этот  файл
выводить,  но, если он записан первым на
диске, то указатель сразу же переместить
на  следующий  файл.  Tакже,  при поиске
имени  "воот",  необходимо проверять все
восемь букв, а не только первые четыре. 
                                        
11.  Иногда  в  одной и той же программе
бывает     несколько    Ваsiс    блоков,
запускается из которых только один. Этот
случай   можно   предусмотреть,   и   не
выводить   определенные   Ваsiс   файлы.
Eдиного  стандарта  в  данном  случае не
существует. Иногда не выводят все файлы,
начинающиеся   с   маленькой  буквы,  но
данный  способ  не всегда удобен. Hа мой
взгляд,  удобнее  отсеивать  все  файлы,
начинающиеся с точки.                   
                                        
12.  В  некоторых  "воот'ах" реализивана
сортировка файлов по алфавиту, но обычно
это  только  затрудняет  работу. Поэтому
сортировку лучше сделать отключаемой.   
                                        
13.  Полезно,  когда кроме списка файлов
на  экран  выдается краткая информация о
диске.  Hапример,  его  имя,  количество
свободных секторов и количество файлов. 
                                        
14.  Желательно  не  привешивать  жестко
определенную  музыку, а сделать ее легко
меняемой.   В   этом   случае  есть  два
способа:                                
 можно   хранить   в  памяти  рlаyеr  от
какого-либо   музыкального  редактора  и
подгружать  файл с музыкой без рlаyеr'а.
Или  же загружать компилированный блок с
рlаyеr'ом  из  любого  редактора, но при
этом  он  должен быть откомпилирован под
определенный адрес. В любом случае нужно
подробно  описать  процесс  подвешивания
музыки.                                 
                                        
                                        
 ECЛИ ВЫ PEШИЛИ HАПИCАTЬ КOМПPECCOP...  
                                        
     Во-первых,   он  должен  позволять,
записывать  компрессированные  блоки без
декомпрессора,     чтоб    можно    было
раскомпрессировать   одним   dерасKеr'ом
много файлов.                           
     Во-вторых,  вы  должны  прилагать к
компрессору       текстовый      вариант
декомпрессора,   чтоб   любой  смог  его
изменить  на  свой  вкус  или попытаться
ускорить.                               
     Время компрессии не особенно важно,
а  вот скорость декомпрессии должна быть
максимально   быстрой.  DерасKеr  должен
нормально   работать   при   разрешенных
прерываниях.                            
     При     работе     с     различными
компрессорами оказалось, что практически
все        существующие       "кранчеры"
(DSQ4,MS_PACК,LPC  и  др.)  работают  не
всегада   корректно.   Oднажды,  пытаясь
скомпрессировать  файл, я перепробовал 6
или  7 компрессоров, и ни один из них не
распаковал его правильно ! Oбычно ошибки
проявляются   в   том  случае,  когда  в
компрессируемый  файл  входит уже сжатый
блок или экран.                         
   Я   не  являюсь  экспертом  в  данной
области,   но  осмелюсь  высказать  свое
мнение,  слегка  попахивающее ламерством
:-)  ...  Повидимому, пакеры расставляют
свои  контрольные  коды,  и при повторнй
компрессии   они   могут  совпасть,  что
повлечет     за    собой    неправильную
декомпрессию (только не бейте по голове,
если  я сказал какую-то тупость :-) )...
Tакие   глюки   проявляются   редко,  но
постарайтесь,  чтобы в Вашем компрессоре
их небыло вообще.                       
                                        
                                        
  HECКOЛЬКO COВETOВ 4EЛOВEКУ ПИШУЩEМУ   
         МУ3ЫКАЛЬHЫЙ PEДАКTOP.          
                                        
1. Eсли Вы уж решили его написать, то Вы
должны  превзойти  все  существующие  до
этого  редакторы,  иначе  зачем  же этим
заниматься.   В   таком   случае  просто
необходимо      написать     полноценный
конвертор из всех редакторов в Ваш.     
                                        
2. Важно, чтобы рlаyеr занимал как можно
меньше  тактов. Желательно 2-3 тысячи. В
противном  случае  область использования
вашего редактора очень сузится.         
                                        
3.   Прилагайте   к  редактору  исходный
вариант  рlаyеrа  в  формате какого-либо
ассемблера  (желательно  "TASM"  т.к. из
него  проще  всего конвертировать файл в
любой   другой  редактор).  Можно  также
прилагать  текст проигрывателя в обычном
текстовом формате.                      
                                        
4. В первую очередь советую ознакомиться
с редакторами на других платформах. Могу
посоветовать     посмотреть     редактор
"OCTAMED"  на AMIGA. Я думаю, Вы найдете
там  кучу полезных идей по сервису и Ваш
редактор получится гораздо удобнее.     
                                        
5.  Кроме  облегчения  жизни  музыканту,
следует позаботиться и о кодере, который
будет   использовать   музыку   в  своей
программе.  Будет  очень удобно, если вы
реализуете    rеаlтiме   тiмеr.Tо   есть
таймер,  который  будет показывать время
проигрывания   музыки   с  точностью  до
прерывания. Это поможет синхронизировать
музыку в программе с графикой.          
                                        
6.    Cделайте   возможность   изменения
громкости мелодии во время проигрывания,
чтоб   можно   было   легко  реализовать
затихание   музыки.   Можно  ввести  три
переменные  в  рlаyеr'е,  которые  будут
содержать      значение     максимальной
громкости для каналов A,В,C.            
                                        
7.  Вывод в любой из трех каналов должен
просто   отрубаться   в   любой   момент
проигрывания,  чтобы  можно было пустить
по этому каналу sоund FX.               
                                        
8.  Hеплохо  было бы сделать возможность
перехода  на любую позицию. Это позволит
быстро  перейти  в  любое место мелодии,
хранить  несколько  мелодий в одной или,
например, использовать мелодию как набор
звуковых эффектов.                      
                                        
                                        
                                        
 O COВETOВ 4EЛOВEКУ PEШИВШEМУ HАПИCАTЬ  
         ГPАФИ4ECКИЙ PEДАКTOP.          
                                        
Вероятность  того, что вы станете писать
столь обширный проэкт крайне мала. Кроме
того  мы (AVALON) сами пишем GFX еdiтоr.
Поэтому, вместо того чтобы давать советы
вам,   я   попрошу  всех,  у  кого  есть
интересные  идеи,  связаться  со  мной и
поделиться ими.                         
    Eще,недавно    мы    услышали,   что
графические  редакторы пишут в Кишиневе,
Питере и Xарькове, но пока поттверждения
этим   данным   у   нас  нет.  Eсли  это
действительно  так,  мы  просим  группы,
занимающиеся  этим,  связаться  с нами и
объединить  наши  усилия.  У  нас готово
всего  процентов 2O-25, но вместе с тем,
есть  целая  куча  идей  и заготовок. Hе
хотелось  бы  заниматься тем, что кто-то
уже сделал...                           
                                        
     тел. (O4622) 5-36-O8 (Виктор)      
       адрес:    25OOO5 Украина,        
                 г. 4ернигов,           
                 ул. Киевская,          
                 6 / 34.                
                 Oнищенко Виктору.      
                                        
                                        
                                        
    КOHКPETHЫE PEКOМEHДАЦИИ АВTOPАМ     
    HEКOTOPЫX  CИCTEМHЫX  ПPOГPАММ.     
                                        
                                        
           1. "ALASM" вy ALEM           
                                        
      Ассемблер    обязательно    должен
понимать  двоичное  представление чисел,
записанное   после   знака  %  (например
%OOOOOOO1).                             
      При  загрузке  WORК  файла  курсор
лучше   сразу  установить  на  последний
записанный исходник.                    
      Возможность  пометки  части текста
другим  цветом  или  инверсией.  Tак  же
отмечать    другим   цветом   строки   с
ошибками.                               
      По      нажатию     определеленной
комбинации   клавиш,   ассемблер  должен
запоминать текущее положение в тексте, и
затем   он   должен   иметь  возможность
быстрого перехода на это место.         
      Команды   одноразовой   компиляции
очень удобны, но часто встречается такая
ситуация,  когда  подгружаются несколько
файлов   один   за   другим,   и   метки
располагаются  между  ними. При этом при
повторном  ассемблировании  адреса меток
будут     сбиты.    Hапример    фрагмент
программы:                              
                                        
  MUSIC   +INCВIN "RAVE+   "            
  SPRITES +INCВIN "GFX_СODE"            
  TAВLE   +INCВIN "DATA   "             
При  первой  компиляции  значения  меток
SPRITES  и TAВLE будут зависеть от длины
предыдущих файлов, как и должно быть, но
при  последующем  ассемблировании, когда
маркер "+" будет заменен на "-", и файлы
подгружаться  не  будут,  все  три метки
будут  указывать на один и тот же адрес.
Я    думаю,    чтобы   этого   избежать,
достаточно         запоминать        при
ассемблировании  длины всех подгружаемых
файлов  и затем их прибавлять при каждой
последующей компиляции.                 
       Полезно  также  отключать звук на
AУ,   после   возврата   из  запускаемой
программы.                              
       Можно         также,        чтобы
незадействованная клавиша ВREAК в режиме
редактирования  работала как ENTER, но с
переводом  строки не на поле меток, а на
поле команд.                            
       Pаботу     с     диском     лучше
организовать  как  в  "TASM-4",  то есть
подгружать  каталог  диска  в  память  и
брать  параметры  файлов прмо оттуда, не
гонять  головку  лишний  раз  на нулевой
трек.                                   
                                        
И   еще   несколько  советов  не  только
ALEM'у, а и всем создателям ассемблеров:
                                        
       Желательно          предусмотреть
тестирование   запускаемых  процедур  по
времени,  в лучшем случае с точностью до
такта, чуть хуже с точностью до четырех,
а  в  крайнем случае хотя бы с точностью
до   прерывания,   используя   системный
счетчик ( FRAMES ).                     
       Hеобходимо, чтобы после выхода из
запущенной  программы,  не очищая экран,
можно  было  войти  в  специальный режим
вычисления  экранных адресов. А именно в
режим,  когда  по экрану ездит указатель
величиной  в один байт или одну точку, и
при нажатии FIRE выводится адрес данного
байта   в   экранном  файле,  в  области
атрибутов и координаты по X и У.        
       Была  бы полезной команда которая
привязывает следующий адрес компиляции к
ровному шеснадцатиричному адресу.       
       Xотелось  бы, чтобы в ассемблерах
были команды типа: SAVE O TRACК TO 159 и
RESTORE O TRACК FROM 159.               
                                        
                                        
           2. STS вy STALКER            
                                        
       Eсли при записи файла на диск там
уже  будет  файл с таким же именем и при
этом  находящийся  в конце каталога, его
нужно стирать и записывать новый файл на
его   место,   как   делает  подавляющее
большинство программ.                   
       При вводе числовых параметров для
различный    функций,   например   COPУ,
необходимо привязывать вводимые числа не
к правому краю окна, а к левому, чтоб не
приходилось  постоянно двигать курсор на
несколько знаков правее.                
                                        
                                        
                                        
                                        
  3. PERFECT COMMANDER вy JAMES ADVENT  
                                        
       В    моей    версии   коммандера,
наблюдается   один   незначительный,  но
неприятный    глюк:    при   копировании
нескольких  файлов  на  диск  на котором
осталось  меньше 256 секторов, коммандер
иногда  "делает  вид",  что  копирование
прошло удачно, а на самом деле последние
файлы   не   переписываются.   Eсли   же
коммандер   перезапустить,   все   будет
скопировано отлично.                    
       Перед  просмотром  экрана,  лучше
забивать атрибуты кодом O.              
       Hе  помешает  также  элементарный
проигрыватель   компилированной  музыки,
при    этом    сам    коммандер   должен
"спрятаться"  в  страницах  и подгрузить
музыку с рlаyеr'ом под любой адрес.     
                                        
     4. TOTAL COMMANDER вy Dr. LOVE     
                                        
       Oбязательно    сделай   "горячие"
клавиши,  т.к. с окнами работать слишком
медленно.                               
       Cоветую получше подобрать цвета в
коммандере,  чтоб  он  не  смотрелся так
чересчур   пестро,   это  только  мешает
восприятию информации.                  
       Hеобходимо            реализовать
возможность запуска кодовых файлов.     
       Возможность  выбора  любой  маски
для выводимых файлов.                   
                                        
                                        
     В  данной  статье я рассмотрел лишь
несколько  программ,  но если у Вас есть
какие-либо   идеи   или   замечания   по
системному  sоfт'у,  пишите  мне  или  в
редакцию  и  мы  продолжим  эту  тему  в
следующих номерах журнала.              
                                        
    Желаем творческих успехов в деле    
    создания системных программ !!!     
                                        
                                        



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

От авторов - Hесколько слов о пушистом чуде техники.

Авторы - авторы журнала.

В приложении - демо-версия игры "CМАГЛИ-3".

Фантастика - крыса из нержавеющей стали (часть 1).

Фантастика - крыса из нержавеющей стали (часть 2).

Фантастика - крыса из нержавеющей стали (часть 3).

Фантастика - крыса из нержавеющей стали (часть 4).

Фантастика - крыса из нержавеющей стали (часть 5).

Фантастика - крыса из нержавеющей стали (часть 6).

Фантастика - крыса из нержавеющей стали (часть 7).

Фантастика - крыса из нержавеющей стали (часть 8).

Фантастика - крыса из нержавеющей стали (часть 9).

Фантастика - Арест: Любое подобие имен и случаев в этом рассказе является не случайным.

Программистам - 14 советов пишещему boot, советы пищущему Компрессор, несколько советов пищущемо Музыкальный редактор. Рекомендации автору Alasm и STS.

Программистам - совершенные методы кодинга и современные способы работы с графикой: печать спрайта, скроллинг экрана, очистка экрана, работы с двумя экранами.

Программистам - Формат модулей NоisеTrасKеr/SоundTrасKеr/PrоTrасKеr.

Железо - доработки Скорпиона: Covox.

Железо - доработки Скорпиона: схема корректной дешифрации портов музпроцессора.

Железо - доработки Скорпиона: схема отключения музпроцессора.

Железо - квадросистема: подключение 2х AY.

Проект - новый графический редактор - State of Art.

Разное - Aмаzing Sоfтwаrе MаKing - почему название такое не звучное и с позволения сказать тупое?

Разное - новости - Планируется куча игр: Крестики-нолики, Куча пародий на уже вышедшие игры, 3D Леталка, Классную стратегию.

Разное - Приветы ! Кто их не любит ? Поищите, может и себя здесь найдете.

Разное - операция "в поисках сьюзан".

Юмор - как Avalon готовились к Enlight 1997.

Юмор - Как затащить хакера в спальню.

Юмор - Как затащить хакера в спальню.

Эсперанто - справочник по языку Эсперанто.

Реклама - Продажа , покупка и обмен нового программного обеспечения для Спектрума.


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

Похожие статьи:
ДОМ - еще один небольшой романчик от SLIP/OTTODIX.
Вычисления - организация математических вычислений.
Творчество - Частушки.

В этот день...   18 января