ZX Format #01: IS-DOS: Особенности оконного интерфейса

Рубрика "IS-DOS - программистам". No 1 Елисеев В. А. "Оконная система IS-DOS" (журнальный вариант)

(C) PENCRAFT 1995 (C) IskraSoft 1995

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

Идея оконного интерфейса, отсутствовавшего в традиционной операционной системе ZX Spectrum, всегда привлекала к себе программистов, мечтавших, чтобы их произведения выглядели на профессиональном уровне. Одним из шедевров оконной технологии по праву считается знаменитый "Оконный интерфейс Питера Кука", использовавшийся во многих играх, в фирменных программах Art Studio, ASTRO и даже в некоторых творениях отечественных программистов - DCU, FUT, STM, F Commander и т.д.

Разработчики системы IS-DOS, естественно, не остались в стороне и, осознавая важность и необходимость реализации в профессиональной системе оконной технологии, выделили под нее целый уровень системы, получивший название WIND.SYS.

Уровень WIND.SYS содержит 23 рестарта, обеспечивающих работу с окнами, строками символов, курсором и т.п. При помощи этих рестартов можно организовать вывод информации на дисплей, оформление рабочего экрана, а также организовать диалог с пользователем при помощи строкового редактора. К сожалению, объем этой статьи не позволяет подробно рассмотреть все 23 рестарта, составляющих уровень WIND.SYS, поэтому речь сейчас пойдет только о 19 из них, относящихся непосредственно к работе с окнами и текстовой информацией в них. Описанию строкового редактора и системы управления файловыми панелями будет посвящена отдельная статья в рубрике "IS-DOS - программистам".

Создание окон.

Работа любого оконного интерфейса начинается, естественно, с процедуры открытия окна. Окно в системе IS-DOS имеет следующую структуру (см. рис 1):

┌───────────────────────────────────────┐
│ │
│ │ область окна │ │
│ │ │ рабочая область окна │ │ ││ │ │ │ │ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓ ░░░░░░░░░░░░░░░░░░░░ ▓▓▒▒ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒ │
│ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │
│ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │
│ │
│ ▓▓▓ - область рамки │
│ │
│ ░░░ - область печати │
│ │
│ ▒▒▒ - область тени │
│ ││ - поля │
├───────────────────────────────────────┤
│ Рис. 1: Структура окна в IS-DOS │
└───────────────────────────────────────┘

Область окна определяется значениями XS (X-size) и YS (Y-size), и измеряется в знакоместах 8*8 пикселей, область рамки имеет ширину в 8 пикселей (1 знакоместо 8*8) по всему периметру окна, следовательно, размеры рабочей области окна равны XS-2 и YS-2. Размер и расположение в окне поля печати, а также ширина левого и правого полей определяются prnt pos. и print size и измеряются в знакоместах 6*8. Верхний и нижний край поля печати ограничивается только областью рамки.

Область тени представляет собой окантовку нижней и правой сторон окна толщиной в 1 знакоместо 8*8 и с отступом в 1 знакоместо от левой и верхней границ области окна.

wt (#61)

В системе IS-DOS для открытия окна используется рестарт wt (код #61). Он осуществляет формирование на экране окна с параметрами, заданными в специальной таблице, называемой "вектором окна". Адрес вектора окна на момент вызова рестарта должен находиться в регистровой паре IX, при этом содержимое регистра A определяет внешний вид окна следующим образом:

7-й бит, установленный в 1 делает открываемое окно "прозрачным", т.е. окно открывается только изменением атрибутов, а пиксели внутри него не сбрасываются.

Остальные биты определяют вид рамки окна:
000000 - одинарная рамка
000010 - двойная рамка

Все остальные значения приводят к открытию окна без рамки.

Таким образом, формат задания внешнего вида окна можно представить в виде таблицы:

╔═════════╦══════════╤═════════╤════════╗
║ ║ одинарная│ двойная │ без ║
║ Окно ║ рамка │ рамка │ рамки ║
║ ║ │ │ ║
╟─────────╫──────────┼─────────┼────────╢
║ ║ │ │ A=#81 ║
║ прозрач-║ A=#80 │ A=#82 │ A=#83- ║
║ ное ║ │ │ #FF ║
║ ║ │ │ ║
╟─────────╫──────────┼─────────┼────────╢
║ ║ │ │ A=#01 ║║ непроз- ║ A=#00 │ A=#02 │ A=#03- ║
║ рачное ║ │ │ #7F ║
║ ║ │ │ ║
╚═════════╩══════════╧═════════╧════════╝

Итак, процедура открытия окна в системе IS-DOS выглядит следующим образом:

LD IX,WIND ;загрузка в IX
;адреса вектора
;окна
LD C,#61 ;загрузка в C кода
;рестарта wt
LD A,n ;загрузка в A зна-
;чения, определяю-
;шего вид окна
RST #10 ;вызов рестарта

Структура вектора окна:

WIND DEFB #00 ;X-координата верх-
;него левого угла
;окна в знакоместах
;8*8 пикселей
DEFB #00 ;Y-координата верх-
;него левого угла
;окна в знакоместах
;8*8 пикселей

значения координат отсчитываются от левого верхнего угла экрана

DEFB #0F ;высота окна в зна-
;коместах 8*8
DEFB #0F ;ширина окна в зна-
;коместах 8*8

DEFB %00000111 ;цвета окна

цвета кодируются стандартным образом:

бит 7 - flash
бит 6 - bright
биты 5...3 - paper
биты 2...0 - ink

DEFB %00000001 ;цвета тени окна

Примечательно, что в цветах тени окна можно задавать как цвет paper, так и цвет ink, что позволяет сделать видимой часть информации, на которую падает тень от окна и обеспечивает максимальную естественность восприятия. Если байт цветов тени равен #FF, то тень не выводится.

DEFB #01 ;X-координата для
;процедуры печати
;текста в окне
DEFB #12 ;ширина поля печа-
;ти в окне

Последние два параметра выражаются в знакоместах размером 6*8, а не 8*8 как остальные, это сделано потому, что такую систему отсчета используют все рестартыпечати в IS-DOS. Значение X-координаты печати абсолютное и отсчитывается не от левой границы окна, а от левой границы экрана. Перевод координат окна в координаты печати и обратно можно осуществить по формулам:

(1) n=N*8/6

(2) N=n*6/8,

где n - значение в знакоместах 6*8, а N - значение в знакоместах 8*8.

Y-координата печати не задается, так как большинство рестартов печати самостоятельно отсчитывает ее от верхней строки окна.

На экране может быть открыто несколько окон, при этом текущим будет считаться то окно, адрес вектора которого находится в регистровой паре IX. В целях более рационального использования объема ОЗУ, информация, закрываемая окном в момент его открытия не сохраняется, поэтому, если Вам вдруг понадобилось вернуться в предыдущее окно, то придется его открывать заново.

Рассмотрим простейший пример. Задача - создать в точке с координатами X=5 и Y=3 окно размером 28*16 знакомест с двойной рамкой, синей бумагой, белыми чернилами и с черно-синей тенью, поле печати текста определить с отступом в 1 знакоместо от левой и в 5 знакомест от правой границы окна.

Для создания этой несложной программы кроме рестарта открытия окна wt(#61) нам понадобятся еще три подпрограммы - очистки экрана, ожидания нажатия клавиши и возврата в IS-DOS. Действие этих подпрограмм основано на других рестартах системы IS-DOS, которые будут описаны в следующих номерах журнала, а пока что просто запомните их:

CLS LD C,#73 ;рестарт cls
RST #10 ;для очистки экрана
RET

WAIT LD C,#07 ;рестарт ttyin
RST #10 ;для ожидания нажатия клавиши
RET

EXIT XOR A ;стандартный выход
LD A,#F4 ;в IS-DOS
RET

Итак, рассмотрим Листинг 1:

;****************************************
;Листинг 1 Пример создания окна

;Исходные данные:

; X-coord (X) = 5
; Y-coord (Y) = 3
; X-size (XS) = 20
; Y-size (YS) = 16
; W.Colors(WC) = %00001111
; S.Colors(SC) = %00000001
; L.Margin(LM) = 1
; R.Margin(RM) = 5

ORG #5D64

;основная программа

START CALL CLS ;вызов процедуры
;очистки экрана
LD IX,WIND ;адрес вектора окна
LD C,#61 ;код рестарта wt
LD A,2 ;код двойной рамки
RST #10 ;вызов рестарта

CALL WAIT ;вызов процедуры
;ожидания клавиши
JP EXIT ;переход на процедуру возврата в IS-DOS

;вектор окна

WIND DEFB 5
DEFB 3
DEFB 16
DEFB 20
DEFB %00001111
DEFB %00000001
DEFB 8
DEFB 20

;Данные для print position (печать с отступом в 1 знакоместо 6*8 от левой границы окна) получены путем расчета по формуле (3):

; (3) PP=X*8/6+LM,

;где PP - print pos. в знакоместах 6*8
; X - X-коорд. окна в знакоместах 8*8
; LM - левое поле в знакоместах 6*8

;Данные для print size получены путем расчета по формуле (4):

; (4) PS=XS*8/6-LM-RM,

;где PS - print size в знакоместах 6*8
; XS - размер окна в знакоместах 8*8
; LM - левое поле в знакоместах 6*8
; RM - правое поле в знакоместах 6*8

;дополнительные процедуры

CLS LD C,#73 ;рестарт cls
RST #10 ;для очистки экрана
RET

WAIT LD C,#07 ;рестарт ttyin
RST #10 ;для ожидания
RET

EXIT XOR A ;стандартный выход
LD A,#F4 ;в IS-DOS
RET

;****************************************

В результате выполнения программы Листинг 1 на экране должно получиться окно, соответствующее изображению на рис.2, в противном случае проверьте правильность набора программы.

┌───────────────────────────────────────┐
│ │
│ ││ ╔═══════════════════╗ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ║ ║▒ │
│ ╚═══════════════════╝▒ │
│ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │
│ │
│ │
├───────────────────────────────────────┤
│ Рис. 2: результат работы программы │
│ Листинг 1 │└───────────────────────────────────────┘ ... box (#62) Следующий рестарт box(#62) позволяет нарисовать или стереть в области рамки окна любую возможную рамку, или любую из ее сторон в любом сочетании. Поскольку ширина области рамки в окне IS-DOS равна 8 пикселям, всего возможно 8 различных одинарных рамок. Вызывая рестарт box несколько раз можно рисовать двойные, тройные и даже счетверенные рамки, а также рамки различной толщины - всего 256 комбинаций. В качестве входных параметров рестарт box(#62) использует вектор окна, адрес которого задается в регистре IX, а также значения отступа от края окна по Y и по X в пикселях, задаваемые в регистрах D и E соответственно, и содержимое регистра A, определяющее, что именно требуется нарисовать или стереть. Содержимое регистра A определяется следующим образом: бит 7=0 - рисовать, 1 - стирать; биты 6...4 - не используются; остальные биты показывают, с какими из сторон рамки производится операция: бит 3=0 - левая сторона рамки; бит 2=0 - правая сторона рамки; бит 1=0 - верхняя сторона рамки; бит 0=0 - нижняя сторона рамки. Для битов 3...0 возможны любые сочетания. Общая форма процедуры рисования/стирания рамки выглядит так: LD IX,WIND ;адрес вектора окна LD C,#62 ;код рестарта box LD D,N1 ;отступ по Y LD E,N2 ;отступ по X LD A,n ;что делать RST #10 ;вызов рестарта Для задания значений отступа рамки предпочтительнее использовать числа от 0 до 7, причем при загрузке в регистры D и E значение 0 рамка будет выведена по наружному краю окна, а при загрузке значения 7 - по внутреннему краю области рамки. Значение 8 даст тот же эффект, что и 0, 9 - тот же, что и 1 и т.д. Рассмотрим пример. В качестве основы возьмем Листинг 1, но изобразим сначала окно без рамки, а потом выведем двойную рамку так, чтобы ее наружная линия была вдвоем шире внутренней, после чего сделаем левую и правую стороны наружной рамки одинарной толщины. ;**************************************** ;Листинг 2 Пример рисования рамки окна ORG #5D64 ;открытие окна START CALL CLS ;очистка экрана LD IX,WIND LD C,#61 LD A,1 ;окно без рамки RST #10 CALL WAIT;рисование наружной рамки двойной толщины;производится в два приема LD IX,WIND ;адрес вектора окна LD C,#62 ;код рестарта box LD D,0 ;отступ по Y LD E,0 ;отступ по X LD A,%00000000;все биты равны 0 - рисовать всю рамку RST #10 LD IX,WIND LD C,#62 LD D,1 LD E,1 LD A,%00000000 RST #10 CALL WAIT;рисование внутренней рамки LD IX,WIND LD C,#62 LD D,3 LD E,3 LD A,%00000000 RST #10 CALL WAIT;стирание боковых сторон LD IX,WIND LD C,#62 LD D,2 LD E,1 LD A,%10000011;7-й бит установлен - команда стирания;установленные 0-й и 1-й биты обозначают, не затрагиваемые в этой операции верхнюю и нижнюю стороны рамки RST #10 CALL WAIT JR EXIT;вектор окна WIND DEFB 5 DEFB 3 DEFB 16 DEFB 20 DEFB %00001111 DEFB %00000001 DEFB 8 DEFB 20;дополнительные процедуры CLS LD C,#73 RST #10 RET WAIT LD C,#07 RST #10 RET EXIT XOR A LD A,#F4 RET;**************************************** При необходимости организации рамок, рисования вертикальных и горизонтальных линий внутри окна (за пределами области рамки) также можно пользоваться услугами рестарта box(#62), однако, для этого придется создать фиктивный вектор окна таким образом, чтобы требуемая рамка вписывалась в область рамки этого воображаемого окна. Поясним на примере: Пусть необходимо создать внутри окна (см. Листинг 1) рамку с отступом в 2 знакоместа от верхней границы окна, в 4 - от нижней и в 3 от левой и правой сторон. Для этого создадим фиктивный вектор окна WIND1, а для расчета его параметров воспользуемся следующими формулами: (5) Y1=Y+UM, где Y1 - Y-координата рамки, Y - Y-координата окна, UM - отступ сверху (6) X1=X+LM, где X1 - X-координата рамки, X - X-координата окна, LM - отступ слева (7) YS1=YS-UM-DM, где YS1 - размер рамки по Y, YS - размер окна по Y, UM - отступ сверху, DM - отступ снизу (8) XS1=XS-LM-RM, где XS1 - размер рамки по X, XS - размер окна по X, LM - отступ слева, RM - отступ справа Все величины измеряются в знакоместах 8*8. Значения цветов выберем такие же, как и в основном окне, но без тени (S.Colors=#FF), значения Print pos. и Print size могут быть любыми. Итак, ;**************************************** ;Листинг 3 Пример рисования внутренних ; рамок при помощи box(#62) ;Исходные данные: ; Up Margin (UM) = 2 ; Down Margin (DM) = 4 ; Left Margin (LM) = 3 ; Right Margin (RM) = 3 ORG #5D64 ;открытие окна START CALL CLS ;очистка экрана LD IX,WIND LD C,#61 LD A,2 RST #10 CALL WAIT;рисовать второе окно не требуется, достаточно просто поместить адрес его вектора в регистр IX для передачи параметров рестарту box;рисование рамки внутри окна LD IX,WIND1 ;вектор рамки LD C,#62 LD D,0 LD E,0 LD A,%00000000 RST #10 CALL WAIT JR EXIT;вектор окна WIND DEFB 5 DEFB 3 DEFB 16 DEFB 20 DEFB %00001111 DEFB %00000001 DEFB 8 DEFB 20;вектор окна для рамки WIND1 DEFB 8 DEFB 5 DEFB 10 DEFB 14 DEFB %00001111 DEFB #FF DEFB #00 DEFB #00;дополнительные процедуры CLS LD C,#73 RST #10 RET WAIT LD C,#07 RST #10 RET EXIT XOR A LD A,#F4 RET;**************************************** В результате работы программы Листинг 3 на экране должна получиться картина, изображенная на Рис. 3 ┌───────────────────────────────────────┐ │ │ │ │ │ ╔═══════════════════╗ │ │ ║ ║▒ │ │ ║ ┌───────────┐ ║▒ │ │ ║ │ │ ║▒ │ │ ║ │ │ ║▒ │ │ ║ │ │ ║▒ │ │ ║ │ │ ║▒ │ │ ║ │ │ ║▒ │ │ ║ │ │ ║▒ │ │ ║ │ │ ║▒ │ │ ║ │ │ ║▒ │ │ ║ └───────────┘ ║▒ │ │ ║ ║▒ │ │ ║ ║▒ │ │ ║ ║▒ │ │ ╚═══════════════════╝▒ │ │ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │ │ │ │ │ ├───────────────────────────────────────┤ │ Рис. 3: результат работы программы │ │ Листинг 3 │ └───────────────────────────────────────┘ Подобным же образом выполняются вертикальные и горизонтальные линии - они представляются как стороны воображаемой рамки и задаются фиктивным вектором окна. Подбирая содержимое регистров D и E нетрудно добиться позиционирования рамки или линии с точностью до 1 пикселя. Продолжение следует ... В следующем номере мы поговорим о другой не менее важной группе системных рестартов IS-DOS - рестартах печати символов и строк.

Оглавление издания: ZX Format #01

  • IS-DOS
    IskraSoft представляет IS-DOS Classic 4.0 с новыми функциями редактирования текста, утилитой для работы с дисками, контроллером жесткого диска для ZX Spectrum и отладчиком программ.
  • IS-DOS - Владимир Елисеев
    Обзор IS-DOS для ZX Spectrum с упором на преимущества над TR-DOS. Обсуждение установки, использования и управления файлами в IS-DOS. Введение в системные утилиты и интерфейс, похожий на Norton Commander.
  • IS-DOS - Владимир Елисеев
    Статья представляет краткий путеводитель по системному диску IS-DOS, перечисляя все основные файлы с пояснениями. Файлы отсортированы по алфавиту и сгруппированы по каталогам для удобной навигации. Путеводитель предоставляет общий обзор файлов и команд без подробных описаний.
  • IS-DOS - Владимир Елисеев
    Обсуждение стандарта UniColor для настройки цветов в программах IS-DOS, его реализации и преимуществ для настройки пользователем.
  • IS-DOS - Владимир Елисеев
    Обсуждение особенностей оконного интерфейса IS-DOS. Реализация оконной системы в IS-DOS и её преимущества. Примеры программ для создания окон и рамок.
  • IS-DOS - Владимир Елисеев
    Описание внутреннего устройства программы gmen.com для IS-DOS, сосредоточено на управлении устройствами и обработке меню с подробным исходным кодом и комментариями.
  • Железо - Vladimir Larkov
    Обсуждение модификации железа Scorpion ZS-256 для совместимости с определённым ПО. Описывается блокировка порта #1FFD для запуска несовместимых программ. Предоставляются технические детали для реализации.
  • Железо - Nemo
    Обсуждение аппаратных тормозов для ZX Spectrum. Фокус на создании и влиянии тормозов на разогнанные процессоры. Предупреждение о возможных побочных эффектах.
  • Железо
    Обсуждение непрактичности ремонта старых компьютеров и экономического смысла замены их на современное оборудование. Статья подчеркивает трудности в самостоятельном ремонте и предлагает альтернативные решения. Подчеркивает преимущества обновления на более новые и надежные компоненты.
  • Железо
    Обсуждение новых разработок периферии для Scorpion ZS 256, включая инновационный универсальный контроллер и интерфейс MIDI. Акцент на улучшении контроллеров клавиатуры и мыши и расширении возможностей встроенного ПО. Описание профессионального расширения ПЗУ и турбо-режима для повышения производительности.
  • Игрушки - Ruster
    Подробное прохождение игры Crystal Kingdom Dizzy, включая решения головоломок и советы по продвижению в сюжете.
  • Игрушки - Павел Рындин
    Описание логической игры 'Быки и коровы', ее механики и игрового процесса. Объясняются уровни сложности и цель угадать число за минимальное количество попыток.
  • Игрушки - Вячеслав Медноногов
    Обсуждение нюансов игры 'UFO: Enemy Unknown', акцент на инопланетных видах, их тактике и стратегиях игры. Подробности о механике игры и будущем продолжении 'UFO-2: Devils of the Abyss'. Включает информацию о программировании и историю разработки.
  • Игрушки - SParker
    Обзор игр и программного обеспечения на рынке Санкт-Петербурга в 1995 году.
  • Интервью
    Вячеслав Медноногов делится своим путем как программиста, начиная с сборки своего первого Spectrum-48 до разработки известных игр, таких как 'НЛО. Враг неизвестен'. Он описывает трудности и инсайты в разработке игр и подъем русской локализации игр. Его опыт подчеркивает эволюцию программирования и распространения ПО в 1990-х.
  • Информация
    Введение в ZX-Format, новый электронный журнал для энтузиастов ZX Spectrum, сосредоточенный на играх, программировании, оборудовании и взаимодействии сообщества.
  • Конкурс
    Обсуждение организации нового конкурса для журнала. Читатели приглашаются предложить свои идеи тем. Отобранные темы будут представлены в будущих номерах.
  • Конкурс
    ZX Format объявляет конкурс на лучшую миссию, созданную с помощью редактора миссий для игры Laser Squad. Принимаются работы по почте или лично. Победитель получит коробку дискет 3M и следующий номер бесплатно.
  • Отдохнём - Килат Амор
    День программиста, наполненный сновидениями, играми и непринужденными разговорами. Васечкин балансирует между амбициями и отдыхом, воплощая дух программиста. Размышления о требованиях и удовольствиях жизни программиста.
  • Почтовый ящик - Максим Романов
    Обсуждение предложений по аппаратному и программному обеспечению в Санкт-Петербурге от LOGROS и Create Soft, включая подробности о интерфейсе Kempston Mouse.
  • Почтовый ящик - SParker
    Сборник чит-кодов для игр ZX Spectrum от Сергея Павлова. Техники получения дополнительных жизней и бессмертия. Не рекомендуется любителям честной игры.
  • Почтовый ящик
    Описание правил отправки писем и статей в журнал, включая требования к форматированию и предпочтения в отправке.
  • Премьера - Алексей Щекин
    Геймплей игры Lines на ZX Spectrum, аналог Color Lines. Передвигайте шарики для составления линий одного цвета. Описаны правила и управление.
  • Программистам - Дмитрий Рудовский
    Введение в продвинутые методы программирования на BASIC для ZX Spectrum 48, подчеркивающие его преимущества перед BASIC 128. В планах будущих статей сервисные программы и расширения языка. Статья служит руководством для опытных программистов.
  • Программистам - Михаил Спицын
    Введение в язык ассемблера на ZX Spectrum. Объяснение структуры процессора Z80, регистров и основных команд. Включает примеры программ для обучения.
  • Программистам - Андрей Седов
    Редактор миссий для Laser Squad от Андрея Седова позволяет фанатам создавать новые миссии. Включает удобный интерфейс с минимальными управляющими клавишами. Предоставляет функции редактирования объектов, изменения цен и назначения спрайтов.
  • Разное
    История разработки компьютера Amiga, его создателей и ключевых особенностей. Эволюция от аркадных игр до лидирующего домашнего компьютера. Успех на рынке и технологические достижения Amiga.
  • Разное
    Обзор готовящихся к выпуску программных продуктов для ZX Spectrum с демо. Особое внимание уделено приключенческим играм, пробам RPG и стратегическим тактикам. В разработке участвуют несколько известных разработчиков.