ZX Format #06
29 июля 1997

Программистам - General Sound: Руководство по программированию.

<b>Программистам</b> - General Sound: Руководство по программированию.
Руководство по программированию 
            General Sound.   

 Версия   1.03.   

music by Jaan
(C) Stinger
_______________________________



 1. Краткие технические характеристики GS

Процессор : Z80, 12MHz, no wait states
ROM       : 32k, 27256
RAM       : static ram 128k total,
             112k for modules and samples
            in base version
INT       : 37. 5 KHz
,Channels  : 4 Independent 8 bit channels,
             each with 6 bit Volume Cntrl

 2. Краткое описание GS 

 GS - музыкальная карточка, предназначен-
ная  для проигрывания музыкальных модулей
 и отдельных сэмплов (эффектов).
 Модули  для GS - это стандартные Амижные
и PCшные 4-х канальные MOD файлы, а сэмп-
лы  -  как  Амижные  signed sample, так и
PCшные unsigned sample.
 Проигрыватель  MOD  файлов в GS является
практически  полным аналогом ProTracker'а
на Амиге и создавался при интенсивном ис-
пользовании исходников ProTracker'a.

 MOD  Player поддерживает все команды Pro
Tracker'а,  за исключением двух :

 Е01 Filter On  Амига-специфичная  коман-
                 да,включает фильтр высо-
                 ких частот, в котором GS
                 не нуждается.
, EFX Invert Loop Я еще не  видел плейера,
                 который бы  эту  команду
                 поддерживал бы.Возможно,
                 она  поддерживается   на
                 каких-то  старых  плейе-
                 рах.

 GS  представляет  из себя, по-сути, мик-
ропроцессорный  комплекс со своим процес-
сором, ПЗУ, ОЗУ и портами, и абсолютно не
зависит от главного процессора Спектрума,
что  позволяет,  например, загрузить свой
любимый модуль, сбросить Спектрум, загру-
зить  ассемблер и творить под любимую му-
зыку.  Soft  внутри GS полностью берет на
себя задачи проигрывания звука, интерпре-
тации  модуля и т. д., и программирование
GS'а  сводится  к передаче байт за байтом
модуля  и/или  сэмплов, а затем требуется
только  подавать  команды типа: запустить
модуль,  установить  глобальную громкость
проигрывания  модуля, запустить сэмпл #09
в канале #02 и т. д.

 Если   предполагается  загрузить  модуль
вместе  с сэмплами, то ОБЯЗАТЕЛЬНО требу-
ется  загружать  вначале  модуль, а затем
сэмплы.

 При  загрузке модуля очень рекомендуется
оставить  свободными 2к памяти, т.е. заг-
ружать  модули  длиной максимум 110к. Это
условие  не  является необходимым, но его
исполнение  очень желательно в целях сов-
местимости с поседующими версиями.

 Аналогично очень рекомендуется оставлять
по  80  байт для каждого сэмпла, например
если требуется загрузить 63-х килобайтный
модуль и 18 сэмплов, то имеем:

 Total_Sample_Length=112*1024-63*1024-2*1024-18*80=46688 байт
 - суммарная длина сэмплов. 

 Если,   например,  требуется  вычислить,
сколько  поместится в память GS'а 2-х ки-
лобайтных  сэмплов,  то  это  вычисляется
следующим образом:

N=112*1024/(2048+80)=53 сэмпла. 

 В  GS'е имеются 4 физических канала, ко-
торые  и проигрывают звук. Каналы 0 и 1 -
левые, а 2 и 3 - правые.

 3. Интерфейс со Спектрумом 

На мир GS смотрит при помощи 4 регистров:

 1. Command  register  -  регистр команд,
  доступный для записи порт по адресу 187
  В этот регистр записываются команды.

 2. Status  register - регистр состояния,
  доступный для чтения порт по адресу 187
Биты регистра:
   7 - Data bit,  флаг данных
   6 - Неопределен
   5 - Неопределен
   4 - Неопределен
   3 - Неопределен
   2 - Неопределен
   1 - Неопределен
   0 - Command bit,  флаг команд
 Этот регистр позволяет определить состо-
яние  GS,  в частности можно ли прочитать
или  записать  очередной байт данных, или
 подать очередную команду, и т. п.

 3. Data  register - регистр данных, дос-
  тупный для записи порт по адресу 179
  В этот регистр Спектрум записывает дан-
  ные,  например  это могут быть аргумен-
  ты команд.

 4. Output register - регистр вывода,дос-
  тупный для чтения порт по адресу 179
  Из этого регистра Спектрум читает
  данные, идущие от GS.

 Command  bit  в регистре состояний уста-
навливается аппаратно после записи коман-
ды  в регистр команд. Сбрасываться в 0 он
может  только из GS, что сигнализирует об
определенном этапе исполнения команды.

 Data bit в регистре состояний может быть
установлен  или  сброшен  как  по желанию
Спектрума, так и по желанию GS:
При записи Спектрумом в регистр данных он
аппаратно  устанавливается  в  1, а после
чтения  GS'ом из этого регистра сбрасыва-
ется в 0.
При  записи  GS  в регистр вывода он (все
тот же Data bit) аппаратно устанавливает-
ся  в  1,  а  после чтения из этого порта
Спектрумом сбрасывается аппаратно в 0.

Несмотря  на то, что регистр данных и ре-
гистр  вывода  расположены в пространстве
адресов  портов по одному и тому же адре-
су,  и  воздействуют на один и тот же бит
данных,  они  являются двумя независимыми
регистрами. Значение, один раз записанное
в  один из этих регистров, остается неиз-
менным в нем до новой записи.

Состояние бита данных очень часто неопре-
делено,  и  если в спецификации команд не
определены  значения  этого бита на опре-
денных  этапах  исполнения команды, недо-
пустимо  делать  какие-либо предположения
относительно значения этого бита.

 4. Система команд GS  

 Вначале позволю себе небольшое отступле-
ние от собственно системы команд. GS, как
известно,  предназначен  в  основном  для
проигрывания  модулей и сэмплов. В данной
версии (1. 03) GS ROM допукается загрузка
одного модуля и/или до 32 сэмплов.
 Каждый  сэмпл  при загрузке его в память
получает  свой  уникальный идентификатор,
который однозначно определяет обращение к
данному сэмплу в командах, которые требу-
ют номер сэмпла. Самый первый загруженный
сэмпл получает номер (handle) = 1, следу-
ющий - номер 2, и т. д.
 То  же  самое  применимо  и к модулям, и
этот  единственный загруженный модуль бу-
дет иметь handle=1 после загрузки.
 Особенностью данной версии является так-
же  то,  что  вначале требуется загружать
модуль, а затем уже сэмплы.

 Особенности описания команд:
Команды описываются следующим образом:

 1. Hex код команды
 2. Название команды
   3. Десятичный код команды
 4. Выполняемые действия при исполнении
команды
 5. Формат команды
 6. Комментарии к команде

  Формат команды описывается следующим
 образом:

GSCOM EQU 187 
GSDAT EQU 179 



SC #NN  : Послать код команды в регистр
          команд

 LD A, #NN 
          OUT (GSCOM), A 

WC      : Ожидание сброса Command bit

IN A, (GSCOM) 
          RRCA 
          JR C, WCLP 

SD Data : Послать данные в регистр данных

 LD A, Data 
          OUT (GSDAT), A 

WD      : Ожидание сброса Data bit,
          по сути, ожидание, пока GS не
          примет посланные ему данные

IN A, (GSCOM) 
          RLCA 
          JR C, WDLP 

GD Data : Принять данные из регистра
          данных

 IN A, (GSDAT) 

WN      : Ожидание установки Data bit,
          по сути, ожидание очередных
 данных от GS

IN A, (GSCOM) 
          RLCA 
          JR NC, WNLP 



Команды GS:

#00 Reset flags                    (  0)
  Сбрасывает флаги Data bit и
Command bit.

SC #00 
WC 

(Data bit=0, Command bit=0)

#0E Go in Covox mode               ( 14)
Переходит в режим Ковокс, напрямую
копирует регистр данных в ЦАПы двух
  (правого и левого) каналов.
Выход из этого режима- запись #00
в регистр команд.

SC #0E 
WC 

SD   
SD    
  ..   / Это вывод в ЦАПы 
SD  / 

SC #00 
WC 

#F3 Warm restart                   (243)
Сбрасывает полностью GS,но пропускает
этапы определения  количества страниц
памяти и их провеки, что очень сильно
ускоряет процесс инициализации.

SC #F3 
WC 

#F4 Cold restart                   (244)
Полный перезапуск GS со всеми провер-
ками.  По сути,  JP #0000

SC #F4 
WC 

#F5 Busy on                        (245)
Устанавливает флаг занятости в #FF

SC #F5 
WC 

#F6 Busy off                       (246)
Устанавливает флаг занятости в #00

SC #F6 
WC 

Изначально Busy=#00.
Исполнение  всех команд в GS выполня-
ется в главном  цикле командного  ин-
терпретатора.  Этот  цикл  в условном
  виде можно представить так:

1. if Command bit=0 then goto 1
2. Execute Command
3. if Command bit=1 then goto 2
 4. if Playing=0 then go to 1
5. if Busy=#ff then go to 1
6. Process Sound
7. go to 1

 Используя  команды  Busy можно, например
инициировать проигрывание сэмплов во всех
каналах, потом, скажем, изменить парамет-
ры проигрывания в каналах, а потом запус-
тить это все одновременно.

Если  же  их не использовать, то возможна
такая   ситуация:   инициируется   первый
сэмпл, станет проигрываться, а только по-
том инициируется второй сэмпл, и т.д.

#20 Get total RAM                  ( 32)
Получить общий объем доступной памяти
на GS. ( В базовой версии это 112к)

SC #20 
WC 
  GD RAM. L(Младшая часть) 
WN 
  GD RAM. M(Средняя часть) 
WN 
  GD RAM. H(Старшая часть) 

Total RAM=65536*RAM. H+256*RAM. M+RAM. L

#21 Get free RAM                   ( 33)

Получить общий объем свободной памяти
на GS.

SC #20 
WC 
  GD RAM. L(Младшая часть) 
WN 
  GD RAM. M(Средняя часть) 
WN 
  GD RAM. H(Старшая часть) 

 Free RAM=65536*RAM. H+256*RAM. M+RAM. L

#23 Get number of RAM Pages        ( 35)
Получить число страниц на GS.

SC #23 
WC 
GD Number_RAM_Pages 

В базовой версии 3 страницы.

#2A Set Module Master Volume
Установить громкость проигрывания
модулей.

SD Module_Master_Volume [#00.. #40]
SC #2A 
WC 
   [GD Old_Master_Volume] - Старая громк.

#2B Set FX Master Volume
Установить громкость проигрывания
эффектов.

SD FX_Master_Volume [#00.. #40] 
SC #2B 
WC 
   [GD Old_FX_Volume] - Старая громкость

#2E Set Current FX  
Установить текущий эффект.  Просто
присваивает переменной CURFX это зна-
чение. Если какая-либо команда требу-
ет номер  сэмпла (sample handle),  то
можно вместо этого номера  подать  ей
#00  и интерпретатор подставит вместо
этого нуля значение переменной CURFX.

SD Cur_FX 
SC #2E 
WC 

#30 Load Module 
Загрузка модуля в память.

SC #30 
WC 
   [GD Module_Handle]-номер модуля
   (Command bit=0, Data bit=0)
SC #D1 (Open Stream-открыть поток)
WC

SD  
WD   
...  Байты модуля 
SD  / 
WD / 

SC #D2 (Close Stream-закрыть поток)
WC 

#31 Play module 
Проигрывание модуля.

SD Module_Handle - номер модуля 
SC #31 
WC 

#32 Stop module 
Остановить проигрывание модуля.

SC #32 
WC 

#33 Continue module 
Продолжить  проигрывание модуля после
остановки.

SC #33 
WC 

#35 Set module Global Volume
Установить глобальную громкость моду-
ля.

SD Module_Global_Volume [#00.. #40]
SC #35 
WC 
   [GD Old_Global_Volume] - Старая громк.

#38 Load FX 
Загрузка сэмпла эффекта в память.
Загружает беззнаковые сэмплы
(PC type)

SC #38 
WC 
   [GD FX_Handle]-номер сэмпла 
   (Command bit=0, Data bit=0) 
SC #D1 (Open Stream-открыть поток) 
WC 

SD  
WD   
..  Байты сэмпла 
SD  / 
WD / 

SC #D2 (Close Stream-закрыть поток)
WC 

При загрузке каждого сэмпла, в памяти
GS создается для  этого  сэмпла заго-
ловок,в котором описываются различные
параметры сэмпла. После загрузки  эти
параметры  устанавливаются  в опреде-
ленные значения, как то:
 Note=60, Volume=#40, FineTune=0,
  SeekFirst=#0F, SeekLast=#0F,
Priority=#80,  No Loop
и внутренняя  переменная  CurFX уста-
навливается равной FX_Handle.
Затем командами #40,#41,#42,#45,#46 и
#47 можно  эти значения  по умолчанию
сменить на свои.  Это требуется пото-
му  что  команда  #39  для  инициации
проигрывания сэмпла  использует  зна-
чения параметров из заголовка сэмпла.



#39 Play FX 
Проигрывание эффекта.

SD FX_Handle - номер сэмпла 
SC #39 
WC 

При исполнении этой команды  происхо-
дит следующее: смотрятся каналы, ука-
занные в SeekFirst  параметре  нашего
сэмпла,  и  если  хотя-бы один из них
свободен,   в   нем  и  проигрывается
сэмпл,  в  противном случае смотрятся
каналы,  указанные  в SeekLast и если
один из них свободен, в нем и играет-
ся  сэмпл,  если  свободных  нет,  то
просматриваются все каналы, указанные
SeekLast,  из  них выбирается канал с
наименьшим приоритетом и сравнивается
с приоритетом нашего сэмпла, (имеется
в виду сэмпл, который мы хотим проиг-
рать) если у этого сэмпла будет боль-
ший  приоритет, чем у сэмпла, уже иг-
рающего в канале, то играющий в кана-
ле  сэмпл  будет  остановлен,  а  наш
сэмпл  будет  запущен  в  этом канале
вместо  старого сэмпла. Вот такая вот
приоритетная схема...

Когда  сэмпл запускается в канале, то
его нота, громкость и т. п. параметры
записываются  в область данных канала
из заголовка сэмпла.

В   общем  случае,  что-бы  проиграть
сэмпл с нужными параметрами, вы може-
те  установить  эти  параметры  после
загрузки  сэмпла и смело использовать
команду #39.
Если же параметры должны меняться, то
можно  поступать  следующим  образом:
командой  #2E сделать текущим требуе-
мый сэмпл, командами #4x изменить его
параметры,  а затем уже запускать его
командой #39.

Альтернативный  метод запуска сэмплов
предоставляют  команды #80.. #9F, при
исполнении этих команд вы прямо в ко-
де команды указываете, в каком канале
требуется  запустить  сэмпл,  и кроме
этого,  вы можете также указать с ка-
кой  нотой и/или громкостью требуется
запустить сэмпл.

#3A Stop FX in channels 
oстановка проигрывания эффектов в за-
данных каналах, которые указываются в
маске каналов (Channel Mask).
В  ней единица в n-ном бите указывает
на то, что эффект в n-ном канале тре-
буется остановить

SD Channel_Mask 
SC #3A 
WC 

#3D Set FX Global Volume
Установить глобальную громкость эффе-
ктов.

SD FX_Global_Volume [#00.. #40] 
SC #3d 
WC 
   [GD Old_Global_Volume] - Старая громк.

#3E Load FX (Extended version)  
Загрузка сэмпла эффекта в память.
Позволяет загружать сэмплы со знаком.
(Amiga type)

SD #01 (Signed sample) 
SC #3E 
WC 
   [GD FX_Handle]-номер сэмпла 
   (Command bit=0, Data bit=0) 
SC #D1 (Open Stream-открыть поток) 
WC 

SD  
WD   
..  Байты сэмпла 
SD  / 
WD / 

SC #D2 (Close Stream-закрыть поток) 
WC 

#40 Set FX Sample Playing Note  
Установка ноты по умолчанию для
текущего эффекта.

SD Note [0.. 95] 
SC #40 
WC 

Note:

 0 C-0 
 1 C#0 
12 C-1 
24 C-2 
36 C-3 (C-1 в Амиге)
48 C-4 (C-2 в Амиге)
60 C-5 (C-3 в Амиге)
72 C-6 
84 C-7 

В  данной версии Sound Generators Wave 2,
3  могут  воспроизвести  октавы 3, 4 и 5,
поэтому  допустимым  значением  параметра
Note является диапазон от 36 до 71.

41 Set FX Sample Volume
Установка  громкости по умолчанию для
текущего эффекта.



SD FX_Volume [#00.. #40] 
SC #41 
WC 

#42 Set FX Sample Finetune  
Установка Finetune для
текущего эффекта.



SD FX_Finetune [#00.. #40] 
SC #42 
WC 

#45 Set FX Sample Priority  
Установка приоритета для
текущего эффекта.



SD FX_Priority [#01.. #fe] 
SC #45 
WC 

#46 Set FX Sample Seek First parameter  
Установка параметра Seek First для
текущего эффекта.



SD FX_SeekFirst 
SC #46 
WC 

#47 Set FX Sample Seek Last parameter  
Установка параметра Seek Last для
текущего эффекта.



SD FX_SeekLast 
SC #47 
WC 

#60 Get Song Position  
Получение значения переменной
Song_Position в текущем модуле.

SC #60 
WC 

GD Song_Position  [#00.. #FF] 

Можно интерпретировать как количество
проигранных  паттернов  модуля. После
старта  модуля принимает значение 0 и
увеличивается на единицу после проиг-
рывания очередного паттерна.
Эта  переменная  может использоваться
для   синхронизирования  процессов  в
Спектруме с проигрыванием модуля. Для
этого  можно, например, в начале про-
цедуры  обработки  прерывания сделать
SC  #60,  затем  выполнить  процедуры
различных  операций с экраном, скрул-
линга строчек и т.п. (т.е. чтобы была
достаточная  для  выполнения  команды
задержка), а затем прочитать значение
порта  179  (  GD  Song_Position),  и
сравнить  его с требуемым и, в случае
равенства, перейти на следующую часть
демы,  т.е. if (Song_Position==My_Po-
sition) then goto Next_Part_Of_Demo

#61 Get Pattern Position
Получение значения переменной
Pattern_Position в текущем модуле.

SC #61 
WC 
GD Pattern_Position  [#00.. #3F] 

Получить значение смещения в паттерне
( текущий ROW ), использование анало-
гично предыдущей команде, однако тре-
буется заметить, что эта величина из-
меняется довольно быстро, и поэтому

if (Pattern_Position>=My_Position) 
  then goto Next_Part_Of_Demo 

#62 Get Mixed Position  
Получить значение Pattern_Position,
немного смешанной с Song_Position.

SC #62 
WC 
GD Mixed_Position 



Mixed_Position: (по битам)

7 - Song_Position. 1 
6 - Song_Position. 0 
5 - Pattern_Position. 5 
4 - Pattern_Position. 4 
3 - Pattern_Position. 3 
2 - Pattern_Position. 2 
1 - Pattern_Position. 1 
0 - Pattern_Position. 0 

т.е.  если  получить Mixed_Position и
сделать  с  ним  AND #3F то получится
вылитый Pattern_Position, а если пос-
ле  получения его немного RLCA, RLCA,
AND  #02  -  то это будут младшие два
бита  Song_Position. См. примечания к
командам #60 и #61.



#63 Get Channel Notes  
Получить ноты всех каналов модуля.

SC #63 
WC 
GD Note_of_channel_0 
WN 
GD Note_of_channel_1 
WN 
GD Note_of_channel_2 
WN 
GD Note_of_channel_3 

Если в каком-либо канале значение но-
ты изменилось с последнего исполнения
команды  #63 то бит 7 полученного за-
начения Note_of_channel_N будет в ну-
ле, если же это значение то же самое,
что  и было раньше, то этот бит будет
в  единице. Младшие семь битов и есть
собственно  нота от 0 до 95; если это
значение  равно 127, то это означает,
что  никакие сэмплы в канале не игра-
ют.
Данная команда предназначена в основ-
ном  для построения на ее основе раз-
личных анализаторов.

#64 Get Channel Volumes 
Получить громкости всех каналов
модуля.

SC #64 
WC 
GD Volume_of_channel_0 
WN 
GD Volume_of_channel_1 
WN 
GD Volume_of_channel_2 
WN 
GD Volume_of_channel_3 

См.  описание команды #63

#80 Direct Play FX Sample (#80.. #83)  
Проигрывание  сэмпла в заданном кана-
ле.

SD Sample_Number 
SC #80.. #83 (Младшие биты определяют
                 непосредственнономер
                 канала, в  котором требу
                 ется играть сэмпл)
WC 

#88 Direct Play FX Sample (#88.. #8B)  
Проигрывание сэмпла в заданном  кана-
ле с заданной нотой.

SD Sample_Number 
SC #88.. #8B (Младшие биты определяют
                 непосредственнономер
                 канала, в котором  требу
                 ется играть сэмпл)
WC 
SD Note [0.. 95] 
WD 

#90 Direct Play FX Sample (#90.. #93)  
Проигрывание сэмпла в  заданном кана-
ле с заданной громкостью.

SD Sample_Number 
SC #90.. #93 (Младшие биты определяют
                 непосредственнономер
                 канала, в  котором требу
                 ется играть сэмпл)
WC 
SD Volume [#00.. #40] 
WD 

#98 Direct Play FX Sample (#98.. #9B)  
Проигрывание  сэмпла в заданном кана-
ле с заданной нотой и громкостью.

SD Sample_Number 
SC #88.. #8B (Младшие биты определяют
                 непосредственнономер
                 канала, в котором требу-
                 ется играть сэмпл)
WC 
SD Note [0.. 95] 
WD 
SD Volume [#00.. #40] 
WD 

 5. Немного лирики...  

   Авторы GS : ( 2 штуки ;)

─── Слава Dangerous ───
           (X-Trade)

 Ему  принадлежит идея создания GS'a, ап-
паратная  реализация оного, некоторые по-
желания относительно Soft'а GS'а, а также
Amiga 1200, на которой мною производились
всяческие эксперименты. Он- единстенный и
неповторимый  производитель  General  So-
und'а  и именно он заведует производством
и продажей GS.

        ─── Stinger ───

 Это  я,  автор сего опуса и по-совмести-
тельству душа и сердце General Sound'а. Я
являюсь  разработчиком  всего встроенного
Soft'a  в GS'е и предполагаю и дальше за-
ниматься сим действом. (Да, я также явля-
юсь  автором некоторых хитрых наворотов в
аппаратной  части  GS'а, и был бы автором
еще  многих,  если  бы  не  был все время
сдерживаем  Славой, постоянно озабоченным
проблемами понижения цены. )

 Написав  около  20  кб кода за пол-года,
призанаться, я немного устал, но имею до-
вольно большие планы относительно следую-
щих версий GS'a, как-то:

 - Wave 4 Sound Generators воспроизводя-
   щих все октавы.
 - Ускорение  за счет оных  процентов на
   30-40 генерации звука.
 - Очень хотелось бы проигрывание STM'ов
   от PC.
 - Развитая система команд.
 - Различные  спецэффекты  над  сэмплами
 - Хранение паттернов  в закомпрессован-
   ном виде ( остается  около 15% от из-
   начального обьема).
 - И многое другое

 Все программное обеспечение должно рабо-
тать  и  на последующих версиях прошивки,
если  оно написано в соответствии с моими
вышеизложенными пожеланиями и требования-
ми. Кроме описанных команд в GS'e сущест-
вует еще большое количество команд, кото-
рые  не  документированы, и я оставляю за
собой  право изменять их каким-угодно об-
разом  и только относительно документиро-
ваных  команд  приемлю законные претензии
типа:  "В  документации написано так, а в
прошивке это работает по другому... "

 Я  планирую значительное расширение сис-
темы  команд,  и  буду рад конструктивным
(желательно конкретным) предложениям.

Так  что, если вы озвучиваете игрушку или
пишете  музыкальный редактор для GS и об-
наруживаете, что вам очень не хватает ка-
кой-либо команды, то звоните мне и выска-
зывайте  предложения.  (Телефон, я думаю,
особого труда узнать не составит ;)

Sanx 4 moral support:
Дима (X-Trade)
 SParker (XLD)

_______________________________



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

Сегодня в номере - содержание журнала.

Авторы - авторы журнала ZX-Format No.6

От авторов - свершилось давно ожидаемое событие...

Игрушки - Последний утюг (новелла по игре 48 утюгов).

Игрушки - Приключения Винни Пуха. Часть вторая.

Игрушки - описание игры The Crypt (Castle Master 2).

Игрушки - описание редактора Адевентюр - PAW (часть 1).

Игрушки - описание редактора Адевентюр - PAW (часть 2).

Игрушки - описание редактора Адевентюр - PAW (часть 3).

Игрушки - описание редактора Адевентюр - PAW (часть 4).

Игрушки - описание редактора Адевентюр - PAW (часть 5).

Программистам - Beta Basic: продолжение разговора о бейсике (часть 2).

Программистам - General Sound: Руководство по программированию.

Программистам - MMD - драйвер. Описание структуры драйвера модема для терминальной программы MMD.

Программистам - AI от В.Медноногова. Подробное описание "волнового алгоритма" трассировки (автоматического рассчета оптимального) пути, с примером реализации на Basic.

Программистам - Искуственный интеллект. Продолжение цикла статей об "AI". Общие основы нахождения пути к цели.

Программистам - Тr-Dos для программистов. Макс Петров завершает свой рассказ о нетрадиционых методах работы с диском.

Программистам - обмен опытом: "3-colour". Описание эффекта "8-цветов на точку", хелп к вьюверу и сколько слов о конвертации картинок в формат "3-colour".

Программистам - обмен опытом: "3-colour". Несколько слов о конвертации картинок в формат RGB.

Программистам - обмен опытом: программирование мультиколорных эффектов.

IS-DOS - пользователям: как выполнить индивидуальную настройку системы IS-DOS на конкретную модель ZX Spectrum-совместимого компьютера и на выполнение Ваших задач.

IS-DOS - пользователям: как скопировать системный диск IS-DOS и остаться при этом в живых.

IS-DOS - программистам: краткий курс - программирование в среде IS-DOS.

IS-DOS - news: новые программы IS-DOS.

Железо - Краткий рассказ о возможностях процессора Z-180.

Железо - Multiviewer. Описание доработочки, позволяющей мерять скорость программ по бордюру без влезания в коды - легким нажатием кнопки.

Железо - о новом проекте фирмы Peters - "Sprinter". Новый Spectrum-совместимый компьютер нового поколения Speccy.

Железо - Мнение пользователя о скорпионовском контроллере IDE HDD - SMUC.

Железо - SuperSpectrum: об одном проекте Spectrum-совместимой машины. Её особенностью является совместимость с PC.

Железо - X-Trade FAQ. Ответы на наиболее часто задаваемые вопросы по GS и XTR-модему.

Премьера - Flash tracker. Описание 4-х канального редактора цифровой музыки, работающего с SoundDrive, от самого автора SoundDrive - Flash Inc.

Премьера - Описание последней версии универсальной терминальной программы, используемой в SpbZxNet.

Премьера - Mortal Kombat: что ждёт Вас в полной версии игры и некоторые коментарии к demo версии.

Премьера - XReversy: презентация новой игрушки, из популярного семейства "реши задачку - посмотри картинку".

Интервью - Интервью с одним из известнейших спектрумистов - Андреем Ларченко.

Здесь был ты - Рассказ "Абсолютная власть".

Здесь был ты - Рассказ "Дорога".

Здесь был ты - Повелитель зубов: пародия на одну популярную трилогию...

Почта - Обратная связь: ответное письмо Alex'а из Нижнего Тагила, выставленного в прошлом номере в "Уголок ламера".

Почта - Письма читателей: Андрей Яковлев, Денис Токарчук, Алексей Гаркулим, Александр Гордеев, Евгений Шумилов, Ниточкин Вадим, Михаил Ларкин.

Почта - бесплатная реклама и обьявления.

Разное - Страшилка.: Nemo рассуждает о месте PC и Spectrum'а в современной России.

Разное - Рецензия Nemo на книжку по цифровой схемотехнике. Для всех, кто хоть когда-нибудь испытывал желание включить паяльник и...

Разное - анкета: Результаты нашего социологического опроса спектрумистов.

Разное - Конкурс. Краткий отчет о наших конкурсах.

Разное - Проблемы рынка ПО: когда загнется Спектрум. Во всем ли виноваты Хакеры?

Разное - Перспективы ПО. Краткий обзор готовящегося к выходу ПО: Fast Tracker, Pro Sound Creator, Чёрный Ворон.

Разное - Перспективы ПО. Адвентюра From Beyond или "Извне".

Разное - мемуары о Питерской модемной сети для ZX Spectrum - SPbZXNet.

Amiga Club - Между нами, пользователями: сравнение характеристик Amiga 1200 с IBM PC.

Amiga Club - сравниваем производительность Амиг и PC. Насколько Амига актуальна в современных играх?


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

Похожие статьи:
Реклама - реклама и объявления.
Презентация - новгородская группа Digital Reality о себе.
Разное - интервью с автором одного из самых ожидаемых игровых проектов, игры Dune: The Battle for Arakkis.
HOT GAMES - Лучшая десятка от Magic Soft.
scene more - вся правда о фидо.

В этот день...   26 апреля