Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ZX-Review-1992-01-12.pdf
Скачиваний:
243
Добавлен:
28.03.2015
Размер:
2.43 Mб
Скачать

1401

PRINT AT 21,7;"PROGRAM TERMINATED"

 

 

1410

STOP

 

 

7000

REM *** Изменение RAMTOP

 

 

7010

INPUT "ENTER NEW START ADDRESS ";a

 

 

7020

IF a<27000 OR a>p THEN BEEP .2,24: GO TO 710

 

7030

CLEAR a 1

 

 

7040

RUN

 

 

7999

STOP

 

 

8100

CLS

 

 

8110

PRINT TAB 6; "MACHINE CODE LOADER",,,

 

8120

RETURN

 

 

8200

REM *** Вывод содержимого памяти

 

 

8210

GO SUB 8100

 

 

8220

PRINT "ADDRESS DECIMAL CHECK SUM"

 

 

8230

LET c=0

 

 

8240

LET s=i 8 : IF s<a THEN LET s=a : GO TO 8280

 

8250

FOR j=a TO s i 8260 LET c=c+PEEK j

 

 

8270

NEXT j

 

 

8280

LET f=s+17 : IF f>p THEN LET f=p

 

 

8290

FOR j=s TO f

 

 

8300

LET c=c+PEEK j

 

 

8310

PRINT AT j s+3,i;j: TAB 12:PEEK j; TAB 22;c

 

8320

NEXT j

 

 

8400

LET pos=i s+3

 

 

8410

PRINT AT pos,12; FLASH 1; PEEK i

 

 

8420

RETURN

 

 

 

 

MACHINE CODE LOADER

 

 

 

 

 

 

 

ADDRESS

DECIMAL

CHECK SUM

 

 

32000

33

33

 

 

32001

0

33

 

 

32002

64

97

 

 

32003

1

98

 

 

32004

0

98

 

 

32005

24

122

 

 

32006

22

144

 

 

32007

255

399

 

 

32008

122

521

 

 

32009

150

671

 

 

32010

119

790

 

 

32011

35

825

 

 

32012

11

8З6

 

 

32013

120

956

 

 

32014

177

1133

 

 

32015

32

1165

 

 

32016

247

1412

 

 

32017

201

1613

Рис. BP1.

Представлен экран во время работы загрузчика машинного кода программа "Screen Invert" загружена с адреса 32000.

5.Подпрограммы сдвига.

5.1Сдвиг атрибутов влево.

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

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

Назначение: эта программа сдвигает атрибуты всех символов экрана влево на одно знакоместо.

Переменные: Имя: new attr Длина: 1 Ячейка: 23296

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

RANDOMIZE USR адрес

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

Комментарий: Эта программа полезна для выделения области текста или графики. Для прокручивания только 22 верхних строк 24* должно быть изменено на 22.

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

МЕТКА

АССЕМБЛЕР

ЧИСЛА ДЛЯ ВВОДА

 

LD HL,22528

33

0

88

 

LD A,(23296)

58

0

91

 

LD C,24

14

24*

 

NEXT_L

LD B,31

6

31

 

NEXT_C

INC HL

35

 

 

 

LD E,(HL)

94

 

 

 

DEC HL

43

 

 

 

LD (HL),E

115

 

 

 

INC HL

35

 

 

 

DJNZ NEXT_C

16

249

 

 

LD (HL),A

119

 

 

 

INC HL

35

 

 

 

DEC C

13

 

 

 

JR NZ,NEXT_L

32

242

 

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

В пару регистров HL загружается адрес области атрибутов. Аккумулятор загружается значением атрибута, вводимым в правую колонку. В регистр C загружается количество строк для сдвига он теперь может быть использован, как счетчик строк. В регистр B заносится число на 1 меньшее, чем число символов в строке, чтобы он использовался, как счетчик. HL увеличивается, чтобы указать на следующий атрибут, который загружается в E регистр. HL уменьшается и по адресу HL помещается значение из E регистра. HL увеличивается вновь, чтобы указать на следующий атрибут. Регистр B уменьшается и, если он не равен 0, то происходит переход к NEXT_C'. HL теперь указывает на правую колонку и по адресу HL помещается значение из аккумулятора. HL увеличивается, чтобы указать на следующую строку NEXT_L. Счетчик строк (регистр C) уменьшается. Если значение результата не равно 0, подпрограмма возвращается назад к NEXT_L.

По окончании работы программа возвращается в BASIC.

5.2 Сдвиг атрибутов вправо.

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

Контрольная сумма: 1847 Назначение: Эта программа сдвигает атрибуты всех символов экрана вправо на одно

знакоместо.

Переменные: Имя: new attr Длина: 1 Ячейка: 23296

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

RANDOMIZE USR адрес

Контроль ошибок: нет Комментарий: Эта программа полезна для выделения области текста или графики.

Для прокручивания только 22 верхних строк 24* должно быть изменено на 22.

ЛИСТИНГ МАШИННЫХ

КОДОВ

 

МЕТКА

АССЕМБЛЕР

ЧИСЛА ДЛЯ ВВОДА

 

LD HL,23295

33

255

88

 

LD A,(23296)

58

0

91

 

LD C,24

14

24*

 

NEXT_L

LD B,31

6

31

 

NEXT_C

DEC HL

43

 

 

 

LD E,(HL)

94

 

 

 

INC HL

35

 

 

 

LD (HL),E

115

 

 

 

DEC HL

43

 

 

 

DJNZ,NEXT_C

16

249

 

 

LD (HL),A

119

 

 

 

DEC HL

43

 

 

 

DEC C

13

 

 

 

JR NZ,NEXT_L

32

242

 

 

RET

201

 

 

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

В пару регистров HL загружается адрес последнего байта области атрибутов. Аккумулятор загружается значением атрибута для ввода в левую колонку. В регистр C загружается количество строк для сдвига он используется, как счетчик строк. В регистр B заносится число на 1 меньшее, чем число символов в строке для использования его в качестве счетчика.

HL увеличивается, чтобы указать на следующий атрибут. Значение этого атрибута загружается в E регистр. HL увеличивается, и по адресу HL помещается значение из E регистра. HL уменьшается снова для указания адреса следующего атрибута. Счетчик в регистре B уменьшается и, если он не равен 0, то возврат назад к NEXT_С. HL теперь указывает на крайнюю левую колонку, и в ячейку с адресом HL, помещается значение из аккумулятора. HL уменьшается для указания правого конца следующей строки. Счетчик строк уменьшается, и если он не равен 0, возврат назад к NEXT_L.

Программа возвращается в BASIC.

5.3 Сдвиг атрибутов вверх.

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

Контрольная сумма: 1591 Назначение: Эта программа сдвигает атрибуты всех символов экрана вверх на одно

знакоместо.

Переменные: Имя: new attr Длина: 1 Ячейка: 23296

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

RAMDOMIZE USR адрес

Контроль ошибок: нет Комментарий: эта программа полезна для выделения области текста или графики.

Для прокручивания только 22 верхних строк 224* должно быть изменено на 160.

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

 

 

МЕТКА

АССЕМБЛЕР

ЧИСЛА ДЛЯ ВВОДА

 

LD HL,22560

33

 

32

88

 

LD DE,22526

17

 

0

88

 

LD ВС,736

1

 

224*

2

 

LDIR

237

 

176

 

 

LD A,(23296)

58

0

91

 

 

LD B,32 6

32

 

 

 

NEXT_C

LD (DE),A

18

 

 

 

 

INC DE

19

 

 

 

 

DJNZ NEXT_C

16

 

252

 

 

RET 201

 

 

 

 

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

В пару регистров HL загружается адрес второй строки атрибутов, в DE загружается адрес первой строки, и BC загружается числом байтов для перемещения.

Количество байтов, определенное в регистровой паре ВС, копируются в ячейки памяти с адресом, находящимся в DE из ячеек, начинающихся с адреса в HL, используя инструкцию LDIR. Эти результаты в DE указывают на нижнюю строку атрибутов. Аккумулятор загружается кодом атрибута для ввода в нижнюю строку. B регистр загружается числом символов на одной строке он используется, как счетчик.

По адресу DE помещается значение из аккумулятора, а затем DE увеличивается для указания на следующий байт. Счетчик уменьшается и, если он не равен 0, подпрограмма возвращается к NEXT_С.

Затем программа возвращается в BASIC.

5.4 Сдвиг атрибутов вниз.

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

Контрольная сумма: 2057 Назначение: эта программа сдвигает атрибуты всех символов экрана вниз на одно

знакоместо.

Переменные: Имя: new attr Длина: 1 Ячейка: 23296

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

RANDOMIZE USR адрес

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

для прокручивания только 22 верхних строк должны быть изменены: 223* на 159 255* на 191 224* на 160

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

МЕТКА

АССЕМБЛЕР

ЧИСЛА ДЛЯ ВВОДА

 

LD HL,23263

33

223

90

 

LD DE,23295

17

255

90

 

LD ВС,736

1

224

2

 

LDDR

237

184

 

 

LD A,(23296)

58

0

91

 

LD B,32

6

32

 

NEXT_C

LD (DE),A

18

 

 

 

DEC DE

27

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]