ZX-Ревю 1992 №5-6 1991 г.

40 лучших процедур - инструментальные программы.


Темы статьи: Программирование  

8. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММЫ 8.1 Определение размера свободной памяти.

Длина: 14

Количество переменных: 0

Контрольная сумма: 1443

Назначение:

Дает количество свободного пространства ОЗУ в байтах.

Вызов программы.

PRINT USR адрес

Контроль ошибок: Нет

Комментарий:

Эта программа должна вызываться перед использованием любых подпрограмм, которые могут увеличивать длину программы, чтобы быть уверенным в том, что в ОЗУ достаточно свободного пространства.

ЛИСТИНГ МАШИННЫХ КОДОВ

МЕТКА

АССЕМБЛЕР

ЧИСЛА ДЛЯ

ВВОДА

LD HL,0

33

0

0

ADD HL,SP

57

LD DE,(23653)

237

91

101

AND A

16

SBC HL,DE

237

82

LD B,H

68

LD C,L

77

RET

201

92

Как она работает:

В пару регистров HL загружается 0 и это значение суммируется с адресом конца свободной области ОЗУ (адрес хранится в SP). Пара регистров DE загружается адресом начала свободной области ОЗУ и вычитается из HL. HL копируется в BC и программа возвращается в БЕЙСИК.

8.2 Определение длины БЕЙСИК-программы

Длина: 13

Количество переменных: 0 Контрольная сумма: 1544 Назначение:

Дает длину БЕЙСИК-программы в байтах. Вызов программы:

PRINT USR адрес

Контроль ошибок: Нет Комментарий: Нет

ЛИСТИНГ МАШИННЫХ КОДОВ

АССЕМБЛЕР

ЧИСЛА ДЛЯ

ВВОДА

LD HL,(23637)

42

75

92

LD DE,(23635)

237

91

83

AND A

167

SBC HL,DE

237

82

LD B,H

68

LD C,L

77

RET

201

92

Как она работает:

В пару регистров HL загружается адрес области переменных, а в DE загружается адрес БЕЙСИК-программы. DE вычитается из HL, чтобы получить длину программы. HL копируется в ВС и программа возвращается в БЕЙСИК.

8.3 Определение адреса БЕЙСИК-строки.

Длина: 29

Количество переменных: 1

Контрольная сумма: 2351

Назначение:

Возвращает адрес первого символа после кода 'REM' в заданной строке.

Переменные:

Имя - line number

Длина - 2

Адрес - 23296

Комментарии: номер строки, которая должна содержать 'REM'.

Вызов программы:

LET A = USR адрес

Контроль ошибок:

Если заданная строка не существует, или нет выражения REM, программа возвратит значение 0.

Комментарии:

Эта программа может быть использована для нахождения адреса ячейки, в которую может быть помещен машинный код. После выполнения программы переменная A (может быть использована любая переменная) устанавливается по адресу, или в 0, если имеет место ошибка.

МЕТКА

Не вводить номер строки более 9999!

ЛИСТИНГ МАШИННЫХ КОДОВ

МЕТКА АССЕМБЛЕР ЧИСЛА ДЛЯ ВВОДА

LD HL,(23296) 42 0 91

LD A,H

124

OR L

181

JR Z,ERROR

40

5

CALL 6510

205

110

JR Z,CONT

40

4

LD ВС,0

1

0

RET

201

INC HL

35

INC HL

35

INC HL

35

INC HL

35

LD A,234

62

234

CP (HL)

190

JR NZ,ERROR

32

243

INC HL

35

LD B,H

68

LD C,L

77

RET

201

25 0

Как она работает:

В пару регистров HL заносится определенный номер строки. Если этот номер равен 0, делается переход к 'ERROR', иначе вызывается подпрограмма ПЗУ по адресу 6510. По возвращении из этой процедуры HL содержит адрес строки. Если флаг нуля установлен, делается переход к 'CONT'. Если флаг нуля не установлен, эта строка не существует, и подпрограмма переходит к 'ERROR', где в ВС загружается 0, и затем происходит возврат в BASIC.

Если программа достигает метки 'CONT', HL увеличивается на 4, чтобы указать на первый оператор в данной строке. Если этот оператор не имеет кода 234, происходит переход к 'ERROR'. Если же это оператор 'REM', HL увеличивается, указывая на следующий символ. Значение HL затем копируется в BC и программа возвращается в БЕЙСИК.

8.5 Копирование данных в памяти.

Длина: 33

Количество переменных: 3 Контрольная сумма: 4022 Назначение:

Эта программа копирует область памяти с одного места в другое.

Переменные:

Имя - start

Длина - 2

Адрес - 23296

Комментарий: адрес источника для копирования. Имя - destination Длина - 2 Адрес - 23298

Комментарий: Адрес, в который происходит копирование. Имя - length Длина - 2 Адрес - 23300

Комментарий: длина блока, подлежащего копированию. Вызов программы:

RANDOMIZE USR адрес

Контроль ошибок: Нет Комментарий:

Эта подпрограмма может быть использована для создания "мультипликации" с помощью следующего метода:

- создание первого экрана информации;

- копирование экрана выше RAMTOP;

ERROR CONT

- повторить для других экранов;

- копирование экранов в обратном направлении по одному в быстрой последовательности.

ЛИСТИНГ МАШИННЫХ КОДОВ

АССЕМБЛЕР

ЧИСЛА ДЛЯ

ВВОДА

LD HL,(23296)

42

0

91

LD DE,(23298)

237

91

2

LD ВС,(23300)

237

75

4

LD A,B

120

OR C

177

RET Z

200

AND A

157

SBC HL,DE

237

82

RET Z

200

ADD HL,DE

25

JR C,COPY

56

3

LDIR

237

176

RET

201

EX DE,HL

235

ADD HL,BC

9

EX DE,HL

235

ADD HL,BC

9

DEC HL

43

DEC DE

27

LDDR

237

184

RET

201

91 91

МЕТКА

COPY

Как она работает:

В пару регистров HL загружается адрес первого байта памяти для копирования, в DE загружается адрес, в который копируется память, а в ВС загружается количество байтов для копирования. Если ВС=0 или HL=DE, то подпрограмма возвращается в БЕЙСИК. Если HL больше, чем DE, часть памяти копируется, используя инструкцию 'LDIR', и программа возвращает в БЕЙСИК.

Если же DE больше, чем HL, то к обеим парам регистров прибавляется по ВС-1 и память копируется, используя инструкцию 'LDDR', после чего программа возвращается в БЕЙСИК.

Окончание следует.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Реклама - Изучаем спрос на MODEM'ы, SOUNDRIVE'ы.
Post - письма читателей
Хит-Парад - Десятка самых популярных программ в Чайковском.
Разное - перспективы: новая игра от Медноногова "Чёрный Ворон".
О работе - подборка цитат о работе.

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