ZX-Spectrum & TR-DOS для пользователей и программистов 1994 г.

Процедуры - написание собственных подпрограмм обработки ошибок бейсик-интерпретатора.


Написание собственных подпрограмм
обработки ошибок бейсик-интерпретатора

Процедура выхода по ошибке расположена в ПЗУ с адреса 8 и
вызывается следующим образом:

RST 8

DEFB <код сообщения>

При выполнении процедуры указанный код записывается в перемен-
ную ERR NR (23610), затем с помощью системной переменной HkR_SP
(23613/1Ж) восстанавливается стек и процессор переходит к выполнению
процедуры обработки ошибок. Изменив адрес, хранящийся в переменной
ERR_SP, можно подключить собственные подпрограммы обработки ошибок.

Предположим, Вы поместили свою процедуру обработки ошибок с
адреса 40000 (пусть, к примеру, она генерирует звуковой сигнал, после чего
обработка ошибок продолжается обычным образом). Для подключения этой
процедуры можно воспользоваться следующей программой:
LD HL,(23613)
LD ВС,40000
LD E,(HL)
LD (HL),C
INC HL
LD D,(HL)
LD (HL),B
LD (ERR_RET),DE
RET

ERR.RET DEFW 0

ORG 40000
LD HL,1646
LD DE.261
CALL 949
LD HL,(ERR_RET)
JP (HL)

После выполнения этой программы при возникновении любых оши-
бок будет выполняться процедура, расположенная по адресу 40000. Локаль-
ная переменная ERR_RET используется для сохранения предыдущего адреса
возврата по ошибке.

ТАБЛИЦА СИМВОЛОВ

д

Ш

Символ

Мнемоника микропроцессора Z80

ZX Spectrum

без префикса

с префиксом #CB

с префиксом # ED

0

00

NOP

RLC В

i

01

LD BC,nn

RLC С

2

02

LD (ВС),A

RLC D

3

03

INC ВС

RLC E

4

04

INC В

RLC H

5

05

DEC В

RLC L

6

06

LD B,n

RLC (HL)

7

07

RLCA

RLCA

8

08

EX AF.AF'

RRCB

9

09

ADD HL.BC

RRCC

10

OA

LD А,(ВС)

RRCD

11

OB

DEC ВС

RRCE

12

ОС

INC С

RRC H

13

OD

cm.

DEC С

RRC L

14

OE

к «Контрольные

кеды

ZX Spectrum»

LDC.n

RRC (HL)

IS

OF

RRCA

RRCA

16

10

DJNZ $+e

RLB

17

11

LD DE.nn

RLC

18

12

LD (DE),A

RLD

19

13

INC DE

RLE

20

14

INC D

RLH

21

15

DEC D

RLL

22

16

LD D,n

RL (HL)

23

17

RLA

RLA

24

18

JR $+e

RRB

25

19

ADD HL,DE

RRC

26

1A

LD A,(DE)

RR D

27

IB

DEC DE

RR E

28

INCE

RR H

29

ID

DECE

RR L

30

IE

LD E,n

RR (HL)

31

IF

/

RRA

RRA

32

20

space

JR NZ($+e

SLAB

33

21

I

LD HL,nn

SLA С

34

22

и

LD (nn),HL

SLA D

35

23

#

INC HL

SLA E

36

24

$

INCH

SLA H

37

25

%

DEC H

SLA L

38

26

&

LD Hfn

SLA (HL)

д

39

LLJ
27

Символ
ZX Spectrum

»

Мнемоника микропроцессора Z80
без префикса с префиксом #СВ с префиксом #ED

DAA SLA А

40

28

(

JR Zf$+e

SRAB

41

29

)

ADD HL,HL

SRA С

42

*

LD HLf(nn)

SRA D

43

+

DEC HL

SRA E

44

1

INC L

SRA H

45

2D

-

DEC L

SRA L

46

.

LDL,n

SRA (HL)

47

2F

/

CPL

SRA A

48

f30

0

JR NC,$+e

[SLI BJ

49

31

1

LD SP.nn

[SU C]

50

32

2

LD (nn)f A

[SU D]

51

33

3

INC SP

[SUE]

52

34

4

INC (HL)

[SLI H]

53

35

5

DEC (HL)

[SUL]

54

36

6

LD (HL)fn

[SU (HL)]

£5

37

7

SCF

[SU A]

56

38

8

JR Cf$+e

SRLB

57

39

9

ADD HLfSP

SRLC

58

ЗА

:

LD Af(nn)

SRLD

59

ЗВ

f

DEC SP

SRLE

60

ЗС

<

INC A

SRLH

61

3D

as

DEC A

SRLL

62

ЗЕ

>

LD A,n

SRL (HL)

63

3F

?

CCF

SRL A

64

40

@

LD B,B

BIT 0,B

IN Bt(C)

65

41

А

LDB.C

BIT 0,C

OUT (C),B

66

42

в

LD BfD

BIT 0«D

SBC HL.BC

67

43

С

LD B,E

BIT 0,E

LD (nn)fBC

68

44

D

LDB.H

BITO.H

NEG

69

45

Е

LDB.L

BIT 0,L

RETN

70

46

F

LD B,(HL)

BIT 0,(HL)

IMO

71

47

G

LD B,A

BIT 0f A

LD l,A

72

48

Н

LD CfB

BIT 1fB

IN C,(C)

73

49

1

LD CfC

BIT 1.C

OUT (C)fC

74

J

LDC,D

BIT 1,D

ADC HL,BC

75

4B

К

LDC.E

BIT 1fE

LD BCt(nn)

76

L

LD CfH

BIT 1fH

77

4D

М

LD CfL

BIT 1fL

RETI

78

N

LD C,(HL)

BIT 1 ,(HL)

79

4F

О

LD C,A

BIT 1fA

LDR,A

д

Ш

Символ
ZX Spectrum

Мнемоника микропроцессора Z80

без префикса

с префиксом #CB

с префиксом #Ш

80

50

Р

LD D,B

BIT 2fB

IN D,(C)

81

51

О

LDD.C

BIT 2fC

OUT (C)fD

82

52

R

LD D,D

BIT2.D

SBCHL.DE

83

53

S

LD D,E

BIT 2,E

LD (nn).DE

84

54

т

LD D,H

BIT2.H

85

55

и

LD D.L

BIT2.L

86

56

V

LD D.(HL)

BIT 2f(HL)

IM 1

87

57

W

LD Df A

BIT2.A

LD A,i

88

58

X

LD E,B

BIT 3(B

INE,(C)

89

59

Y

LD EfC

BIT3fC

OUT (C)fE

90

Z

LD E,D

BIT 3,D

ADC HL.DE

91

[

LD E,E

BIT 3,E

LD DE,(nn)

92

V

LD E,H

BIT 3fH

93

5D

]

LD E,L

BIT 3fL

94

t

LD E,(HL)

BIT 3f(HL)

IM 2

95

5F

LD E,A

BIT 3f A

LD AfR

96

60

£

LD H,B

BIT 4,В

IN Hf(C)

97

61

а

LD HfC

BIT 4,C

OUT (C),H

98

62

Ь

LDH.D

BIT 4,D

SBC HL.HL

99

63

с

LDH.E

BIT 4fE

LD (nn)fHL

100

64

d

LD HfH

BIT 4fH

101

65

в

LD H.L

BIT 4fL

102

66

f

LD H,(HL)

BIT 4f(HL)

103

67

9

LD H,A

BIT 4. A

RRD

104

68

h

LD L(B

BIT5,B

IN L,(C)

105

69

i

LD LfC

BIT 5tC

OUT (C),L

106

1

LD L,D

BIT 5fD

ADC HL.HL

107

к

LD LfE

BIT 5fE

LD HLf(nn)

108

1

LDL.H

BIT5.H

109

6D

m

LDL.L

BIT 5,L

110

n

LD Lf(HL)

BIT 5f(HL)

111

6F

о

LD LfA

ВГГ5.А

RLD

112

70

P

LD(HL),B

BIT 6fB

N (HL).(C)

113

71

q

LD (HL),C

BIT 6fC

114

72

r

LD (HL)fD

BIT 6fD

SBC HL,SP

115

73

s

LD (HL),E

BIT 6rE

LD (nn)tSP

116

74

t

LD (HL,),H

BIT 6fH

117

75

u

LD (HL),L

BIT 6,1

118

76

v

HALT

BIT 6,(HL)

119

77

w

LD (HL),A

WT 6. A

120

78

X

LD A.B

BiT 7fB

INAT(C)

д

ш

Символ

Мнемоника микропроцессора Z80

ZX Spectrum

без префикса

с префиксом #CB

с префиксам #ED

121

79

У

LD А.С

BIT 7,С

OUT (C),A

122

z

LD A.D

BIT 7,D

ADC HL.SP

123

7S

{

LD А,Е

BIT 7fE

LD SP,(nn)

124

1

LD А.Н

BIT 7fH

125

7D

>

LD A.L

BIT 7,L

126

LD Af(HL)

BIT 7,(HL)

127

7F

©

LD А,А

BIT 7,A

128

80

ADD А.В

RES 0fB

129

81

и

ADD А,С

RES 0fC

130

82

о

ADD A.D

RES 0,D

131

83

а

ADD А,Е

RES 0.E

132

84

а

ADD AfH

RES 0.H

133

85

л

ADD A,L

RES 0,L

134

86

в

ADD A,(HL)

RES 0f(HL)

135

87

я

ADD Af A

RES 0.A

136

88

с

ADC А,В

RES 1,B

137

89

и

ADC А,С

RES 1,C

138

в

ADC A.D

RES 1,D

139

ев

и

ADC A.E

RES 1,E

140

в

ADC A,H

RES 1.H

141

8D

а

ADC A,L

RES 1,L

142

в

ADC Af(HL)

RES 1,(HL)

143

8F

я

ADC A,A

RES 1,A

144

90

[Ак

SUB В

RES 2fB

145

91

[В]

SUB С

RES 2,С

146

92

[С]

SUB D

RES 2,D

147

93

№]

SUBE

RES 2,E

148

94

ЕЕ]

SUB H

RES 2,H

149

9S

[F]

символы,
к определи-

SUB L

RES 2,L

150

96

[©]

SUB (HL)

RES 2,(HL)

151

97

[Н]

емые поль-
зователем

SUB A

RES 2,A

152

98

[1]

SBC А,В

RES 3,B

I 153

99

[i]

SBC А,С

RES 3,C

154

[К]

SBC A.D

RES 3,D

155

SBC A,E

RES 3,E

156

[М]

SBC A,H

RES 3,H

157

9D

М

SBC A,L

RES 3,L

158

[О]

SBC A,(HL)

RES 3,(HL)

159

9F

[Р]

SBC A.A

RES 3,A

! 16G

АО

[а]

AND В

RES 4,В

LDI

|161

А1

W'

AND С

RES 4.C

CP!

д

Ш

Символ

Мнемоника микропроцессора Z80

ZX Spectrum

без префикса

с префиксом #CB

с префиксом #ED

162

А2

И ^ символы,

AND D

RES 4,D

INI

163

A3

ГЦ Чопределя-
: _ f емые поль-

ANDE

RES 4,E

OUT!

164

А4

[U] ) зователем

AND H

RES 4,H

165

А5

RND

AND L

RES 4,L

166

А6

INKEY$

AND (HL)

RES 4,(HL)

167

А7

PI

AND A

RES 4rA

168

А8

FN

XOR В

RES 5.B

LDD

169

А9

POINT

XORC

RES 5,С

CPD

170

АА

SCREENS

XOR D

RES 5,D

IND

171

АВ

ATTR

XOR E

RES 5,E

OUTD

172

АС

AT

XOR H

RES 5,H

173

AD

TAB

XOR L

RES 5,L

174

АЕ

VAL$

XOR (HL)

RES 5,(HL)

175

AF

CODE

XOR A

RES 5,A

176

ВО

VAL

OR В

RES 6,В

LDIR

177

В1

LEN

OR С

RES 6,С

CPIR

178

В2

SIN

OR D

RES 6,D

1NIR

179

ВЗ

COS

OR E

RES 6,E

OTIR

180

В4

TAN

OR H

RES 6,H

181

В5

ASN

OR L

RES 6,L

182

В6

ACS

OR (HL)

RES 6,(HL)

183

В7

ATN

OR A

RES 6, A

184

В8

LN

СРВ

RES 7,В

LDDR

185

В9

EXP

CP С

RES 7,С

CPDR

186

ВА

INT

CP D

RES 7,D

INDR

187

ВВ

SQR

CP E

RES 7,E

OTDR

188

ВС

SGN

CP H

RES 7,H

189

BD

ABS

CP L

RES 7,L

190

BE

PEEK

CP (HL)

RES 7,(HL)

191

BF

IN

CPA

RES 7, A

192

СО

USR

RET NZ

SET 0,B

193

С1

STR$

POP BC

SET 0,C

194

С2

CHR$ .

JP NZ.nn

SET 0,D

195

СЗ

NOT

JP nn

SET 0,E

196

С4

BIN

CALL NZrnn

SET 0,H

197

С5

OR

PUSH BC

SET 0,L

198

С6

AND

ADD A,n

SET 0,(HL)

199

С7

<=

RST 0

SET 0,A

200

С8

>=

RET Z

SET 1fB

201

С9

<>

RET

SET 1,C

202

СА

LINE

JP Z.nn

SET 1,D

д

Ш

Символ
ZX Spectrum

Мнемоника микропроцессора Z80

бег префикса

с префиксом #CB

с префиксом #ED

203

СВ

THEN

префикс #СВ

SET 1,Е

204

СС

TO

CALL Zfnn

SET 1,H

205

CD

STEP

CALL nn

SET 1,L

206

СЕ

DEF FN

ADC A,n

SET 1 ,(HL)

207

CF

CAT

RST 8

SET 1.A

208

DO

FORMAT

RET NC

SET 2,B

209

D1

MOVE

POP DE

SET 2,С

210

D2

ERASE

JP NC,nn

SET 2fD

211

D3

OPEN #

OUT (N),A

SET 2,E

212

D4

CLOSE #

CALL NC.nn

SET 2,H

213

D5

MERGE

PUSH DE

SET 2,L

214

D6

VERIFY

SUB n

SET 2,(HL)fc

215

D7

BEEP

RST 16

SET 2,A

216

D8

CIRCLE

RET С

SET 3,B

217

D9

INK

EXX

SET 3fC

218

DA

PAPER

JP C,nn

SET 3,D

219

DB

FLASH

IN A,(N)

SET 3,E

220

DC

BRIGHT

CALL C.nn

SET 3,H

221

DD

INVERSE

префикс для IX

SET 3,L

222

DE

OVER

SBC A.n

SET 3,(HL)

223

DF

OUT

RST 24

SET 3,A

224

E0

LPRINT

RET PO

SET 4,В

225

El

LLIST

POP HL

SET 4,С

226

E2

STOP

JP PO.nn

SET 4,D

227

E3

READ

EX (SP)fHL

SET 4fE

228

E4

DATA

CALL PO,nn

SET 4fH

229

E5

RESTORE

PUSH HL

SET 4fL

230

E6

NEW

AND n

SET 4,(HL)

231

E7

BORDER

RST 32

SET 4,A

232

E8

CONTINUE

RET PE

SET 5fB

233

E9

DIM

JP (HL)

SET 5,С

234

EA

REM

JP PE,nn

SET 5fD

235

EB

FOR

EX DE,HL

SET 5,E

236

EC

GO TO

CALL PE.nn

SET 5,H

237

ED

GO SUB

префикс #ED

SET 5,L

238

EE

INPUT

XOR n

SET 5,(HL)

239

EF

LOAD

RST 40

SET 5,A

240

F0

LIST

RET P

SET 6(B

241

FI

LET

POP AF

SET 6,С

242

F2

PAUSE

JP P ,nn

SET 6,D

243

F3

NEXT

DI

SET 6,E

д

Ш

Символ
ZX Spectrum

Мнемоника микропроцессора Z80

без префикса

с префиксом #CB

с префиксом #ED

244

F4

РОКЕ

CALL P,nn

SET 6,H

245

F5

PRINT

PUSH AF

SET 6,L

246

F6

PLOT

ORn

SET 6,(HL)

247

F7

RUN

RST 48

SET 6, A

248

F8

SAVE

RET M

SET 7, В

249

F9

RANDOMIZE

LD SP,HL

SET 7,С

250

FA

IF

JP M,nn

SET 7,D

251

FB

CLS

El

SET 7,E

252

FC

DRAW

CALL M,nn

SET 7,H

253

FD

CLEAR

префикс для IY

SET 7,L

254

FE

RETURN

CP n

SET 7,(HL)

255

FF

COPY

RST 56

SET 7,A

Пояснения к таблице символов

В первом и втором столбцах таблицы приведены соответственно
десятичный (Д) и шестнадцатеричный (111) коды. Относящиеся к ним симво-
лы ZX Spectrum (токены) расположены в третьем столбце. В четвертом, пятом
и шестом столбцах таблицы даны мнемоники команд микропроцессора Z80
(см. «Система команд Z80»).

При описании команд приняты следующие обозначения:

П - один байт данных, непосредственно следующий за кодом команды,

является всегда последним байтом команды;
пп - 16-разрядный операнд, представляющий собой два байта данных,
непосредственно следующих за кодом команды. Первым располагает-
ся младший байт, затем — старший;
(nn) - 16-разрядный адрес, указанный непосредственно за кодом коман-
ды (сначала следует младший байт, затем старший);
е - 8-разрядное смещение относительно адреса, находящегося в счетчике
команд PC. Располагается непосредственно за кодом команды.

Коротко о правилах построения кодов команд. Как уже говорилось
раньше, 8-разрядная шина данных позволяет непосредственно реализовать
не более 256 команд. Однако, для построения таких однобайтовых* команд
(их мнемоники приведены в четвертом столбце таблицы) используются лишь
252 кода.

Два байта #СВ и #ED префиксируют команды, мнемоники которых
приведены в пятом и шестом столбцах таблицы соответственно. Так команда
LD D,(HL) имеет код #56, команда BIT 2,(HL) — код #СВ #56, а команда IM 1
— код #ED #56.

*) Имеется в виду только код операции — без учета байтов возможных
данных.

Оставшиеся два байта #DD и #FD префиксируют команды, работа-
ющие соответственно с индексными регистрами IX и IY.

Коды команд, использующих в качестве операндов индексные реги-
стры IX и IY, получаются добавлением префиксного байта к кодам команд,
оперирующих с регистровой парой HL (но не префиксированных байтом
#ED).

Коды команд, использующих индексный метод адресации, образуются
аналогично, только префиксируются команды, оперирующие с ячейкой
памяти, адресуемой (HL). При этом код смещения d (см. «Система команд
Z80») всегда является третьим байтом получающегося кода.

Коды недокументированных команд, работающих с частями индекс-
ных регистров, образуются из префикса #DD или #FD и кеда команды,
оперирующей с регистрами Н и L. Причем регистру Н соответствуют
старшие байты индексных регистров (IXh и IYh), а регистру L — младшие
(1X1 и IY1).

В табл. 8 приведены примеры построения кодов команд, использую-
щих индексные регистры. Слева приведена исходная команда, которую
можно найти в таблице символов, справа — команда, получаемая в результа-
те.

Таблица 8. Пример построения кодов команд Z80.

Таблица 8. Пример построения кодов команд Z80.

Исходная

команда

Получаемая команда

Мнемоника

Код

Мнемоника

Код

ADD HL.BC

#09

ADD IX,ВС

#DD #09

JP (HL)

#E9

JP (IY)

#FD #E9

LD B,(HL)

#46

LD ВД1Х+1)

#DD #46 #01

BIT 0,(HL)

#CB #46

BIT 0,(!Y—1)

#FD #CB #FF #46

LD A,H

#7C

LD A,IXh

#DD #7C

LD H,L

#65

LD IXh,IX!

#DD #65

LD L,1

#2E #01

LD IYI.1

#FD #2E #01

XOR H

#AC

XOR IXh

#DD #AC




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Новости - В городе появился новый железячник Евгений Серёгин.
Введение - Получение и просмотр демок с Enlight'а.
Groups - анкеты действующих групп: Smash Hackers Band.
Scorpion Club - Открыта новая B.B.S. О разработке новой TR-DOS совместимой оболочки.
Новости ZXNet - ZXNet "вышла" в Internet. Обращение к поклонникам ZX-Spectrum'a.

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