ZX-Ревю 1995 №4 1995 г.

Секреты TR-DOS - Использование процедур TR-DOS без системных переменных.


Секреты TR-DOS

Использование процедур TR-DOS без системных переменных.

© Тимоти, С.Петербург, 1995.

Мне ужасно интересно, почему у нас в стране так мало программ в которых предусмотрена отгрузка состояния на диск. В основном, это относится к адвентюрам. Полностью дисковых адвентюр катастрофически нехватает. Только не говорите мне, что у нас нет людей, способных эту работу выполнить! Многие игры адаптируются к диску вообще по точке входа #3D13 (SPIDERMAN, SEAS OF BLOOD, OPERATION NIGHT и другие). А такие, как THE HULK, SHERLOCK, LORD OF RING 1,2 вполне спокойно адаптируются путем прямого управления контроллером. Процедуру чтения блока секторов без использования системных переменных TR-DOS и всяких там буферов можно взять хотя бы из 2Х-РЕВЮ-94 № 4, стр. 9, или ZX-FORUM 1, стр. 52 (см. также исправления в ZX-РЕВЮ-95, № 2, стр. 39). Процедуру записи я привожу в Листинге_1. Она, правда, имеет некоторые ограничения общего плана: В регистре IY должно быть #5C3A. При запуске из Бейсика проблем не будет (в IY и так #5C3A), а вот при запуске из глубины кодового блока игры это необходимо контролировать. Предлагаемая процедура использует-таки пять ячеек системных переменных, однако сама же их сохраняет и восстанавливает после завершения работы. Процедура записи работает на прошивках TR-DOS версий 5.03 и выше.

Листинг_1.

SAVE

L1

L2

L3

Теперь об использовании процедуры. На входе в нее в HL должен быть задан адрес в памяти, с которого необходимо начать запись. В регистре DE соответственно начальный трек (логический, 0-159) и сектор (0-15) для записи. В регистре B - количество записываемых подряд секторов.

AAA

DI

L4

LD

HL, 0

LD

(L4 + 1) ,HL

LD

IX,#3F0A

LD

HL,(#5CFE)

( * * * )

PUSH

HL

CALL

DOS

LD

HL,(#5C00)

LD

HL,L4+2

PUSH

HL

INC

(HL)

LD

HL,(#5D00)

POP

DE

PUSH

HL

POP

BC

XOR

A

INC

E

LD

(#5C00),A

BIT

4,E

LD

IX,#2F65

JR

Z, L5

CALL

DOS

LD

E, 0

LD

A, D

INC

D

AND

A

DJNZ

L1

RRA

JR

EXIT

LD

C, A

L5

LD

A, E

PUSH

DE

LD

(#5CFF) ,A

PUSH

BC

DJNZ

L3

LD

A, #3C

EXIT

POP

HL

JR

NC, L2

LD

(#5D00),HL

LD

A, #2C

POP

HL

LD

IX,#2F4D

LD

(#5C00),HL

CALL

DOS

POP

HL

POP

BC

LD

(#5CFE),HL

POP

DE

EI

LD

A, E

RET

LD

(#5CFF) ,A

DOS

PUSH

IX

PUSH

BC

LD

(#5D00),HL

PUSH

DE

JP

#3D2F




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Intro - Вступление.
Werewolf - Болезнь оборотничества.
Обмен опытом - Процедура генерации синуса.
Demomaking - История демомейкинга и его традиции.
Part 11 - Spectrum history (part 3).

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