ZX-Ревю 1995 №1 1994 г.

Профессиональный подход - О введении стардарта на программы для ZX-Spectrum.


ПРОФЕССИОНАЛЬНЫЙ ПОДХОД

О введении стардарта на программы для ZX-Spectrum

(С) SigN, г.Москва, 1995.

Практически каждый, кто более или менее долго работал с ZX-Spectrum, сталкивался с проблемами совместимости. Многие часы были потрачены синклеристами на приведение своих Спектрумов в конфигурацию, наиболее приближенную к фирменной. Никто не отрицает, что для обеспечения нормальной работы уже написанных программ это просто необходимо. Тем не менее, зададимся вопросом, что же можно сделать для совместимости с различными версиями Спектру-ма программ, которые будут написаны в будущем. Для этих целей предлагается проект стандарта ZXX (ZX extension), описанный в этой статье. Программа, удовлетворяющая требованиям стандарта ZXX, будет нормально выполняться на всех компьютерах стандарта ZXX (насколько известно автору, требованиям стандарта ZXX удовлетворяют все Спектрум-совместимые компьютеры). В программах стандарта ZXX разрешено использование только перечисленных ниже средств ZX-Spectrum (в частности, запрещается обращение к портам, кроме перечисленных ниже).

1. Стандартные средства ZX-spectrna 48К.

К стандартным средствам ZX-Spectrum 48К относятся:

- 48К ОЗУ;

- ПЗУ с прошивкой 1982 или 1990 г. (т.е. в ZXX-программах запрещено использование программ ПЗУ, выполняющихся по-разному в этих прошивках);

- графический экран;

- порт бордюра #XXFE (вывод, X - обозначает любую НЕХ-цифру);

- порт клавиатуры #XXFE (ввод);

- аппаратные прерывания с частотой 50 Гц и длительностью сигнала INT, варьирующейся в пределах от 5 до 20 мкс;

- порт KEMPST0N-джойстика #XX1F (ввод, может отсутствовать).

2. Стандартные средства ZX-Spectyum 12SK.

Помимо средств ZX-Spectrum 48К, к стандартным средствам ZX-Spectrum 128К относятся:

- дополнительные 80К ОЗУ;

- порт переключения страниц ОЗУ #7FFD;

- дополнительное ПЗУ ZX-Spectrum 128К;

- дополнительный графический экран;

- му зык аильный сопроцессор (может отсутствовать).

При использовании дополнительного ПЗУ, дополнительного ОЗУ и/или музыкального сопроцессора ZXX-программа обязана непосредственно и независимо проверить доступность этих средств.

3. Стандартные_средства TR-

роа-

К стандартным относятся следующие способы взаимодействия с TR-DOS:

- посредством USR 15616, USR 15619 - из программ на BASIC;

- посредством CALL #3D13 с 0*0-12, 14, 18-20, 22 (см. ZX-PE-ВЮ-93, N1-2) - из программ на ассемблере .

4. Использование нестандартных

средств < расширений Ь.

Вот, йаконец, и то, для чего, в основном, и был предложен стандарт ZXX. В последнее время появилось несколько вариантов ZX-совместимых компьютеров (ZX-PR0-FI, ATM-TURBO и ATM-TURBO-2) с дополнительными возможностями (расширениями) в режиме ZX-Spectrum (в частности, дополнительной памятью (кстати, о дополнительной памяти: для человека, умеющего держать в руках паяльник, переделать Спектрум-128 в Спектрум-256 не должно представлять существенных проблем)). Тем не менее, эти расширения (а, значит, и программы, их использующие), явно не совместимы, а программистов, желающих писать программы для одного и только одного типа компьютера, как правило, мало. Этим, по-видимому, объясняется столь малое количество программ, использующих эти расширения. С другой стороны, в процессе превращения Спектрума в полупрофессиональный компьютер (о чем очень много говорилось в последнее время в ZX-РЕВЮ) эти возможности были бы очень кстати.

ПРОФЕССИОНАЛЬНЫЙ ПОДХОД

Для решения этой проблемы предлагается подход, который прекрасно зарекомендовал себя на IBM PC-совместимых компьютерах -использование драйверов (в данном случае - драйверов расширений).

Драйвером расширения называется файл, в котором находятся процедуры , обеспечивающие взаимодействие программ стандарта ZXX с расширениями. Этот файл уникален для каждой конфигурации компьютера, но един для всех программ стандарта ZXX. Во время инициализации программа пытается найти драйвер расширения (файл с именем "ZXXBIOS"). Если драйвер присутствует, то ZXX-программа загружает его в любое место памяти и использует для взаимодействия с расширением, в противном случае считается, что данный компьютер не имеет расширения.

4.1. Определение версии стандарта ZXXr_которой соответствует

драйвер.

Номер версии стандарта ZXX, которой соответствует драйвер, хранится в первых двух байтах файла "ZXXBIOS". Описываемой версии стандарта предлагается присвоить номер 1.0 (#0100).

4.2. Инсталляция драйвера.

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

- загрузить файл "ZXXBIOS" по адресу #4000 (размер этого файла не должен превышать 6912 байтов);

- запустить процедуру инсталляции драйвера:

LD ВС, MASK

LD DE,DESTINATION

CALL #4002

Здесь MASK - маска модулей, которые предполагается инсталлировать (см. ниже), a DESTINATION

адрес инсталляции. После инсталляции регистры А, Н, L и F могут изменить свое значение, регистр ВС содержит маску фактически инсталлированных модулей, а регистр DE - адрес первой свободной ячейки памяти после инсталлированного драйвера.

4*3. Вызов функций драйвера.

Драйвер расширения состоит из модулей с номерами от #00 до #0F. Для вызова функций всех модулей драйвера служит единственная точка входа, равная адресу его инсталляции. Код вызываемого модуля драйвера помещается в старшие 4 бита регистра С, код функции этого модуля - в младшие 4 бита регистра С. После выполнения функции в аккумуляторе находится возвращенное этой функцией значение, а содержимое регистров В,С, D,E,H,L и F может быть изменено.

Модуль соэиестицости_(#0Q).

МА$у=#0001. С=#0Х.

с=#оо

Функция обеспечения совместимости с ZX-Spectrum 128К. Если конфигурация компьютера позволяет устанавливать защелку совместимости с ZX-Spectrum 128К, то функция делает это и возвращает #00, в противном случае - возвращает #FF.

C=#0B/#0F

TURBO ON/OFF: в зависимости от С устанавливает или сбрасывает режим TURBO и возвращает #00. В случае невозможности - возвращает #FF.

модуль расширенной_памяти

(#01К MASK=#0002. С»<1Х.

Предполагается, что компьютер содержит NPG страниц расширенной памяти размером 16К каждая (включая страницы ZX-Spectrum 128К), которые могут быть "впечатаны" с адреса #С000. Соответствие между номерами страниц ZX-Spectrum 128К и драйвера расширения следующее:

ПРОФЕССИОНАЛЬНЫЙ ПОДХОД

ZX-Sp

Драйвер

ZX-Sp

Драйвер)

0

0

4

3

1

1

5

-

2

-

6

4

3

2

7

5

Если предполагается использовать этот модуль, то драйвер должен быть загружен в область памяти до #С000. с=#ю

Определение количества доступных страниц NPG. Возвращает NPG.

С=#11, А=#ХХ

Установка состояния порта

#7FFD. Биты 3-7 регистра А запоминаются для дальнейшего вывода в порт #7FFD.

С=#12, А=#ХХ <0<SA<NP6) "Впечатывание'1 страницы номер А. Производит "впечатывание" страницы с номером А с адреса #С000 и возвращает текущее значение, выведенное в порт #7FFD.

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

Модуль расширенной графики (#02). MASK=#0004. С=#2Х.

Модуль принтера (#03).

MASK=#0008. С=#ЗХ.

Модуль программатора (#04). MASK=#0010. Ся#4Х»

Модуль ZX-модема (#05).

MASK»#0020. С»#5Х.

* * *




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Хит Парад - Десятка самых популярных программ в Чайковском.
Литература - Дейв Барри. "Хэлло, ты мне нравишься" (отрывок).
Блиц-опрос - интервью с Klim/omegaНAСKЕRSgroupXXL.

В этот день...   19 августа