3Bit #01
03 января 2005

Программинг - обзор особенностей моделей оттечественного и фирменного спектрума от Rob F.

<b>Программинг</b> - обзор особенностей моделей оттечественного и фирменного спектрума от Rob F.
      Истинный Coder #001

(c) Rob F./Entire Group
──────────────────────────────────────────
  Низкий  поклон, уважаемые  читатели. Эта
рубрика  посвящается некоему Духу, который
зародился в мире Speccy.
  Думаю, для каждого это слово "Speccy", -
ассоциируется  с чем-то сладким и трепещу-
щим  сердце. Ну конечно, где вы ещё можете
поиграть  в  игру MYTH? Только не на PC, и
да же не на Ammy, ни таланта в графике, ни
великолепного  Coding'а. Так  вот, о коде-
рах... Этот  ранг  получить не так просто,
как  кажется. Вообщем, лоадером  на БАСИКЕ
не отделаешься. Однако, истинный Coder мо-
жет  написать  на  ВАСИКЕ Scroll, хоть и с
матами в душе, но напишет. За долгое время
общения  с другими ребятами, я вывел прос-
тую  формулу  кодера - ВЕЧНОСТЬ. С  каждым
днём,  истинный  кодер, будет  придумывать
что-то  новое и новое. И, вероятнее всего,
одну и ту же задачу он будет решать тысячу
способами. В  отличии  от других, он будет
тысячу  раз  изобретать  велосипед, именно
поэтому  Spectrum'исты знают тысячу спосо-
бов  высветить  на  экране точку, и именно
поэтому они нашли самый оптимальный способ
для  её появления. И вроде бы кажется, что
быстрее уже не возможно, но всё равно кто-
то придумывает ещё быстрее.
  Иногда мне кажется, что на Speccy приду-
мают  какой-нибудь пакер, ужимающий инфор-
мацию  в один BIT или в три BIT'а ;) Смеш-
но, конечно  же, но чем чёрт не шутит? Хо-
тя, вроде  бы, это  уже не возможно. Не...
Я  тут подумал, можно, только декомпрессор
будет большой! =) Шучу, конечно...
  А  иногда  на Speccy встречаются ребята,
которые, добившись  успеха, начинают в нём
тонуть. Тогда они становятся смешными, на-
чиная  утверждать глупости, типа того, что
у  Z80 есть глюки, тоесть команды, которые
он  не исполняет. Есть, конечно, но совсем
не те, что описывают. Вот в этой рубрике я
и хотел поделиться с вами истинной.

      Фирменный Speccy...

  Вообще-то,  Speccy  уникальный  тем, что
зарубежные, то есть оригинальные, варианты
на сто процентов совместимы друг с другом.
Но  нам сложно это понять, ведь мы заполо-
нили себя детками Speccy - Scorpion'ы, Pe-
ntagon'ы, Profi, Leningrad'ы  и другие ва-
рианты. Я не могу утверждать, что перепро-
бовал все, но двадцать версий я перебрал и
изучил досконально. И так же изучал ориги-
нальные версии с "плюсами" и без оных.
  Поэтому  сообщаю  вам, что  на фирменном
Speccy  в  одном  прерывании 224*312=69888
тактов, если  мы  умножим  69888 на 50, то
получим 3494400 тактов в секунду. Получае-
тся, что кварц не 3. 5 а 3. 494400MHz,а из
этого можно сделать вывод, что каждое пре-
рывание  куда-то теряется 112 тактов. Куда
же? Да никуда, просто частота кадров не 50
Hz, а  50.0801282051282051  Hz, вот  и все
премудрости.  Но, программным  методом  мы
можем подсчитать только 69868 тактов, пос-
кольку  4-ре  такта  сигнал INT выставляет
прерывание, и  16-ть  тактов на исполнение
самого  прерывания.  Прерывание  не  может
прервать исполнение одной команды, поэтому
исполнение прерывания будет после заверше-
ния команды.

   Совковые детишки Speccy...

  Видать только мы догадались разобрать на
части  и превратить в пол сотни логики то,
что буржуи лепили в одну микросхему. Таким
образом, сигнал  INT'а  на наших вариантах
Speccy  превратился  в  кучку резисторов и
конденсаторов. Теперь его длина начала из-
меряться  не  в тактах, а в микросекундах.
Поэтому  только на наших Speccy, нужно для
уверенности лепить кучу NOP'ов перед выхо-
дом  из прерывания. Есть такие экземпляры,
у которых прерывание начинается по середи-
не  развёртки  монитора, я  лично наблюдал
такое в Leningrad'ах. Я, конечно, понимаю,
что есть следующие версии этого монстра, и
там  это  убрано. Но  я думаю, что если бы
электронщики поменьше ругались с кодерами,
а  кодеры  с электронщиками, то вместе они
бы  могли  сделать  очень  хороший вариант
Speccy. Пока, что я нашёл только один Spe-
ccy, который  почти на 100% повторяет фир-
менный Speccy, это Львов.

  Тормозящая область памяти...

  Как это не прискорбно, но фирменный Spe-
ccy тормозит, однако не всегда. В этом фа-
кте есть и плюсы и, конечно же, минусы.
  Очень  хороший  плюс, которым  я  всегда
пользовался, пока  все  не  помешались  на
Pentagon'ах,  это  команда  HALT,  которая
исполняется  в тормозящей области прерыва-
ния. Последний  такт, исполняемый  в  этой
команде, всегда  совпадёт с последним так-
том  окончания  развёртки экрана, и первый
такт в новом прерывании будет точно на лу-
че  монитора  в  первом пикселе. Так можно
делать  горизонтальные мультиколоры, что и
использовали  буржуи  в  своих программах.
Например: Mask 3 или Dark Star или... Воб-
щем, есть  ещё шедевры в этом плане, прос-
тите, не  помню, давно  это  было. Кстати,
свой  первый  мультиколор  я  сделал ещё в
1992-ом году, на GENS'е, где-то до сих пор
валяется на кассетах. Это был мультиколор-
ный  Scroll  на бордюре, как сейчас помню,
решил  подломать Khampton'а, и сказал ему,
что нарисую что-то на бордюре, так родился
Border-Scroll.

       Тормозим дальше...

  Если кто-то сталкивался с фирменным Spe-
ccy, или  его  детками, в  которых  так же
тормозит  память, то  вы  замечали, что не
дай  боже оставить вектор прерывания (I) в
диапазоне от 64 до 127 или (от 192 до 255,
при условии, что включена тормозящая стра-
ничка), и  при всём этом попытаться что-то
записать  на  диск, то  вам  гарантированы
ошибки на диске. Вообщем, нулевой трек за-
портите, а точнее запишете туда всякую бе-
либерду. Тут  происходит простая петрушка,
даже  если  запрещены  прерывания,  сигнал
WAIT, по-прежнему  устанавливается, поско-
льку  процессор  пытается считать значение
из  адреса вектора прерывания, а он указы-
вает на тормозящую область памяти. Вобщем,
все  друг  друга ждут. Ну, и при этом OUTI
начинает  занимать  не 16 тактов, а то 20,
то  24, всё зависит от того на какую часть
OUTI попадёт сигнал INT'а. А если вы попы-
таетесь  исполнить  программу в тормозящей
области памяти, да ещё и с вектором в тор-
мозящую  область, то  ваши  команды станут
утраиваться в тактах. Самое весёлое проис-
ходит, когда процессор сам себе выставляет
WAIT, и  не может считать код команды. На-
пример,  начните   переносить  всю  память
LDIR'ом  сам на себя, и делайте это множе-
ство раз.

M1      LD HL,0
        LD DE,0
        LD BC,256
        LDIR
        JMP M1

  Ну  и  на прерываниях повесьте музыку, а
исполняемый  LDIR в область тормозящей па-
мяти. Так процессор в один из моментов бу-
дет сам себе выставлять ожидание и в итоге
или  не  исполнится INT, или LDIR. Кстати,
тормозит это всё лишь тогда, когда отобра-
жается  что-то  на  экране, а  точнее наша
область экрана. Поэтому если вы будете ис-
полнять  свою  прогу до начала отображения
Screen'а, то никто тормозить не будет.

     Но мы ведь Coder'ы...

  Конечно, нас это не пугает, мы-то разме-
стим свою прогу там, где она не будет тор-
мозить. Вот  поэтому  я всегда ценил поль-
ских  и словацких программистов. Одна лишь
демка  SHOCK, чего  стоит, где каждый такт
вымерян, где  учтено  всё, да  же  то, что
учесть не возможно. Безусловно, каждый сам
выбирает  свой путь, и многие могут напле-
вать на то, что у кого-то не такой Speccy,
как у вас. Но это совсем не приукрасит ва-
ши программы.

      Попробуем кончить...

  Вот  такое получилось маленькое введение
в  эту  рубрику. С  нетерпением ждём ваших
писем и предложений. Может, вы хотите что-
то  узнать, я с удовольствием с вами поде-
люсь. Если ничего не поменяется, то в сле-
дующем  номере  я  расскажу вам о секретах
процессора  Z-80. Поверьте, там есть очень
уникальные  вещи, и  то, что  в  фирменных
описаниях   называют  недокументированными
командами, далеко  не  недокументированно.
Просто  кто-то  не  хотел этим делиться, и
как  мне  удалось выяснить, это были воен-
ные.
  А  вы, например, знаете  что в Z-80 есть
Serial  Interface? Правда, эту  функцию  в
процессоры  интегрировали только Zilog, но
в любом случае это уникально.

    Встретимся в следующем номере...
──────────────────────────────────────────



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

От редакции - новый украинский электронный журнал под названием "3BiT".

От редакции - накануне: переписка авторов журнала с корреспондентами.

От редакции - Credits: авторы журнала.

Speccy news - новости: Scl выпустил газету Cossackos, результаты Воронежского фестиваля KidSoft'2004, Сергей Бульба архив AY музыки, Alone Coder выпустил Info Guide #6...

Программинг - новый быстрой и короткий PT3.x Player от RSM.

Программинг - дизайн исходных кодов: основные требования к листинг программы, ориентированной на широкую публику.

Программинг - процедуры печати текста шрифтами 8х8, 6х8, 5х8, 4х8 точек.

Программинг - обзор особенностей моделей оттечественного и фирменного спектрума от Rob F.

Программинг - сборник кодов: Рисование окна с рамкой в цвете, обработка дисковых ошибок TR-DOS, универсальня процедура Scroll'a экрана.

Программинг - Game Making: Mad Killer делится опытом создания игр для ZX Spectrum.

Программинг - Нестандартное использование General Sound: эмулятор звукового сопроцессора AY-3-8910.

Hacker Zone - "фрикинг": Халявные звонки на таксофонах. Бесплатные звонки в любую точку мира.

Перспективы - Dune для Спектрума от Сосюра Игоря.

Есть мнение - Mad Killer уличает Инфорком в продажности PC.

Рабочий стол - JPEG/GIF laboratory 1.1: программа для просмотра картинок в формате JPEG/GIF.

Рабочий стол - General Sound AY Emulator v1.0

Рабочий стол - обзор утилиты для поиска музыкальных файлов Pro Tracker 3.X Mod Finder v1.2

Игромания - Архивариус: обзор не очень свежей но интересно адвентюры "Последняя авантюра".

Игромания - Wolf 2004: Мир увидел то, над чем трудился Alone Coder целых 8-мь лет!!

Железячки - Кое-что о CMOS-часах: доработанная схема от Alone Coder'a.

Железячки - обзор некоторых современных контроллеров для работы с внешними накопителями информации для ZX-Spectrum.

Веселуха - Жизнь простого сисадмина И печальна и тосклива если рядом нету пива: Сисадмину посвящается.

Веселуха - юмористический рассказ: Я МАШИНА.

Веселуха - Компьютерные анекдоты.

Иной мир - Radeon X700: недорогая основа для геймерских карт.

Разное - отчет Rob F. с Украинской тусовки SpeXtream'2004.

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

Разное - Конкурс от групы P7S для патриотов Спектрума!

Разное - Интервью с DESALEX'ом/XPJ.

Разное - интервью с автором одного из самых ожидаемых игровых проектов, игры Dune: The Battle for Arakkis.

Разное - интервью с автором нашумевшей демки под VIC-20 - Viznut/PWP.

Разное - интервью с известным Английским спектрумистом Gasman/Raww arse.

Разное - Интервью с Random'om взятое на Construction Chaos 2004.

Разное - Реклама - двигатель торговли и не только.


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

Похожие статьи:
Быстеренько! - самый быстрый алгоритм/процедура рисования линии.
Japan wild cross - Рад сообщить всем почитателям Японских кроссвордов о том, что эта рубърика встретила положительные отзывы от читателей WeekEnd'а!
Почтовый ящик - письма читателей.
Еще одна планета железяка - схема музыкальной карточки Soundrive v. 1.05
BBS - список станций BBS ZXNet.

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