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

Читатель - читателю - Предлагаю Вашему вниманию мою программу Memory Editor.


Темы статьи: Софт  

"Memory Editor"

© Гтарь Александр

Наш постоянный читатель, ученик 11 класса Гтарь Александр из г. Арсеньева Приморского края пишет, что программирует в машинном коде уже три года. Начинал он с "Радио-86-РК", потом перешел на "ZX-Spectrum".

"Уважаемый ИНФОРКОМ". Предлагаю Вашему вниманию мою программу "Memory Editor" из раздела TOOLS. Эта программа позволяет вводить дампы кодов в память. Программа по удобству работы намного превосходит аналогичную программу на Бейсике. На экране строки дампа отображаются так же, как и распечатаны в журнале. Например:

6D60 I C3 7A 6E 1A 13 FE FF C8 | 6A

Теперь о том, как работать с программой.

После её запуска на экране появляется запрос о начальном адресе ввода блока в HEX-форме. С помощью DELETE можно стирать последнюю введенную цифру, когда Вы ввели 4 цифры, нажмите ENTER и появится главный экран редактора. Курсор устанавливается в начальное положение. Теперь можно вводить HEX-цифры, курсор автоматически сдвигается вправо, если достигнута последняя колонка, то курсор переходит на начало следующей строки. Используя клавиши управления курсором, можно перемещать курсор по дампу. Края поля дампа склеены, то есть если курсор уходит вправо, то появляется слева и наоборот, так же и с верхним и нижним краями страницы.

Чтобы перейти к следующему или предыдущему экрану, используйте клавиши N (Next) или K (bacK). Для изменения начального адреса страницы используйте H (cHange). Для возврата в Бейсик нажмите X (eXit). При изменении каждого полубайта, контрольная сумма строки пересчитывается.

Блок кодов размещается по адресу 28000, длина блока - 739 байт.

Ниже приводится листинг ассемблера программы. Читатели могут усовершенствовать и настроить её по собственному усмотрению".

Комментарий ИНФОРКОМА.

Эта программа является усовершенствованным вариантом шестнадцатеричного Бейсик-загрузчика, о котором мы неоднократно упоминали, когда приходилось давать дамп памяти для различных программ. Смотрите, например, "ZX-РЕВЮ" № 1-2 за прошлый год, стр. 6-7 или № 3 за 1991 г., стр. 59.

Мы набрали программу, предлагаемую Александром и успешно её оттестировали. Приводим ниже вид экрана при работе с программой.

Mem о г у Ed i

tor

>

© e XT г a

SO

f t

1993

RDR .

0

1

2

3

4

5

6

7 SUM

SES0

HD

33

01

cs

05

32

94

SF

32

SES3

11

92

SF

C3

S3

3D

F5

CD

3D

SE70

53

SE

11

9C

SF

CD

S3

3D

53

SE73

FI

C9

3E

03

32

SR

5C

CD

RB

SE30

BE

0D

3E

02

CD

01

IS

11

93

ЗЕЗЗ

R6

SF

CD

S3

3D

CD

39

3D

93

SE90

ED

43

8R

SF

CD

09

SE

DD

43

6ЕЭ8

21

93

SF

21

00

00

22

93

05

SER0

SF

CD

SE

SE

CD

S3

3D

CD

93

SERB

SE

SE

FE

43

23

D 1

FE

4E

7D

6ЕБ0

23

22

FE

43

23

2R

FE

53

59

ЗЕБВ

23

72

FE

03

23

2D

FE

0R

23

BEC0

23

39

FE

03

23

45

FE

09

09

ЗЕСЗ

23

51

FE

30

33

D3

FE

47

2D

3ED0

33

5E

13

CD

SR

SF

01

DD

BEDS

30

00

09

22

8R

SF

13

34

33

Keys:

сНа ng e

Next

bacK

eXit

cursor

Keys.

hex

number(0-F)

Общие впечатления о работе программы неплохие. Но она имеет один недостаток, о котором мы хотим упомянуть. Нет, речь идет не о том, что Александр сделал что-то не так. Проблема в другом. Программа - не релоцируема, то есть её нельзя загрузить в другую область памяти, для того, чтобы можно было осуществить ввод блока кодов в адреса с 28000 (заранее ведь неизвестно, где потребуется разместить коды). В этом смысле Бейсик-загрузчик кодов лишен этого недостатка, как говорится, по определению.

Самый простой выход из этого положения следующий. Делаем два варианта программы, предназначенные для загрузки в нижние и верхние адреса (аналогично тому, как это делается в пакете "Монитор 16" и "Монитор 48"). Для этого должны быть изменены все команды с абсолютным указанием адресов переходов в зависимости от нового места расположения.

Более сложный, но более изящный вариант - чтобы после старта программа сама настраивалась на работу в конкретных адресах. Так происходит, например, старт известной программы - монитора "MONS". Этот способ более сложен в реализации, но, тем не менее, вполне осуществим. Если кто-нибудь из читателей сделает такое усовершенствование, то мы с удовольствием опубликуем его на страницах "РЕВЮ".

А теперь приводим листинг (и дамп - для устранения возможных ошибок) программы "Memory Editor". (С) EXTRA SOFT 1993

6D60

C37A6E

JP

# 6E7A

6D63

1A

LD

A,(DE)

6D64

13

INC

DE

6D65

FEFF

CP

#FF

6D67

C8

RET

Z

6D68

D7

RST

#10

6D69

18F8

JR

# 6D63

6D6B

DDE5

PUSH

IX

6D6D

E5

PUSH

HL

6D6E

D5

PUSH

DE

6D6F

C5

PUSH

BC

6D70

213B5C

LD

HL,#5C3B

6D73

CBAE

RES

5, (HL)

6D75

CB6E

BIT

5,(HL)

6D77

28FC

JR

Z,#6D75

6D7 9

3A085C

LD

A, (#5C08)

6D7C

F5

PUSH

AF

6D7D

87

ADD

A, A

6D7E

87

ADD

A, A

6D7F

32866D

LD

(#6D86),A

6D82

110A00

LD

DE,#00 0A

6D85

216002

LD

HL,#0260

6D88

CDB503

CALL

#03B5

6D8B

F1

POP

AF

6D8C

C1

POP

BC

6D8D

D1

POP

DE

6D8E

E1

POP

HL

6D8F

DDE1

POP

IX

6D91

C9

RET

6D92

218C6F

LD

HL,# 6F8C

6D95

CD996D

CALL

#6D99

6D98

41

LD

B, C

6D99

56

LD

D,(HL)

6D9A

23

INC

HL

6D9B

5E

LD

E,(HL)

6D9C

23

INC

HL

6D9D

7A

LD

A, D

6D9E

CDB16D

CALL

# 6DB1

6DA1

CB27

SLA

A

6DA3

CB27

SLA

A

6DA5

CB27

SLA

A

6DA7

CB27

SLA

A

6DA9

4F

LD

C,A

6DAA

7B

LD

A, E

6DAB

CDB16D

CALL

# 6DB1

6DAE

B1

OR

C

6DAF

4F

LD

C,A

6DB0

C9

RET

6DB1

D630

SUB

#30

6DB3

FE0A

CP

#0A

6DB5

D8

RET

C

6DB6

D607

SUB

#07

6DB8

C9

RET

6DB9

218C6F

LD

HL,# 6F8C

6DBC

0604

LD

B, #04

6DBE

CD6B6D

CALL

# 6D 6B

6DC1

FE0D

CP

#0D

6DC3

2825

JR

Z,# 6DEA

6DC5

FE0C

CP

#0C

6DC7

2812

JR

Z,# 6DDB

6DC9

FE30

CP

#30

6DCB

38F1

JR

C,# 6DBE

6DCD

FE47

CP

#47

6DCF

30ED

JR

NC,# 6DBE

6DD1

05

DEC

B

6DD2

04

INC

B

6DD3

28E9

JR

Z,# 6DBE

6DD5

77

LD

(HL) , A

6DD6

23

INC

HL

6DD7

05

DEC

B

6DD8

D7

RST

#10

6DD9

18E3

JR

# 6DBE

6DDB

78

LD

A, B

6DDC

FE04

CP

#04

6DDE

2 8DE

JR

Z,# 6DBE

6DE0

2B

DEC

HL

6DE1

11A2 6F

LD

DE,# 6FA2

6DE4

CD636D

CALL

# 6D63

6DE7

04

INC

B

6DE8

18D4

JR

# 6DBE

6DEA

05

DEC

B

6DEB

04

INC

B

6DEC

20D0

JR

NZ,# 6DBE

6DEE

18A2

JR

# 6D92

6DF0

F5

PUSH

AF

6DF1

CB2F

SRA

A

6DF3

CB2F

SRA

A

6DF5

CB2F

SRA

A

6DF7

CB2F

SRA

A

6DF9

CDFD6D

CALL

# 6DFD

6DFC

F1

POP

AF

6DFD

E60F

AND

#0F

6DFF

C630

ADD

A, #30

6E01

FE3A

CP

#3A

6E03

3802

JR

C,#6E07

6E05

C607

ADD

A, #07

6E07

D7

RST

#10

6E08

C9

RET

6E09

CD6B0D

CALL

#0D6B

6E0C

3E02

LD

A, #02

6E0E

CD0116

CALL

#1601

6E11

11B86F

LD

DE,# 6FB8

6E14

CD636D

CALL

# 6D63

6E17

AF

XOR

A

6E18

CD0116

CALL

#1601

6E1B

110670

LD

DE,#7006

6E1E

CD636D

CALL

# 6D63

6E21

3E02

LD

A, #02

6E23

CD0116

CALL

#1601

6E2 6

2A8A6F

LD

HL, (# 6F8A)

6E2 9

0E10

LD

C, #10

6E2B

0608

LD

B, #08

6E2D

7C

LD

A, H

6E2E

85

ADD

A, L

6E2F

5F

LD

E,A

6E30

7C

LD

A, H

6E31

CDF06D

CALL

# 6DF0

6E34

7D

LD

A, L

6E35

CDF06D

CALL

# 6DF0

6E38

3E20

LD

A, #20

6E3A

D7

RST

#10

6E3B

7E

LD

A,(HL)

6E3C

CDF06D

CALL

# 6DF0

6E3F

7B

LD

A, E

6E40

86

ADD

A,(HL)

6E41

5F

LD

E,A

6E42

23

INC

HL

6E43

10F3

DJNZ

#6E38

6E45

3E3A

LD

A, #3A

6E47

D7

RST

#10

6E48

7B

LD

A, E

6E49

CDF06D

CALL

# 6DF0

6E4C

3E0D

LD

A, #0D

6E4E

D7

RST

#10

6E4F

0D

DEC

C

6E50

20D9

JR

NZ,# 6E2B

6E52

C9

RET

6E53

DD7E00

LD

A, (IX+0)

6E56

C605

ADD

A, #05

6E58

32936F

LD

(#6F93),A

6E5B

DD7E01

LD

A,(IX+1)

6E5E

CB2F

SRA

A

6E60

DD8601

ADD

A,(IX+1)

6E63

C605

ADD

A, #05

6E65

32946F

LD

(#6F94),A

6E68

11926F

LD

DE,# 6F 92

6E6B

C3636D

JP

# 6D63

6E6E

F5

PUSH

AF

6E6F

CD536E

CALL

#6E53

6E72

119C6F

LD

DE,# 6F9C

6E75

CD636D

CALL

# 6D63

6E78

F1

POP

AF

6E79

C9

RET

6E7A

3E08

LD

A, #08

6E7C

32 6A5C

LD

(#5C6A),A

6E7F

CD6B0D

CALL

#0D6B

6E82

3E02

LD

A, #02

6E84

CD0116

CALL

#1601

6E87

11A66F

LD

DE,# 6FA6

6E8A

CD636D

CALL

# 6D63

6E8D

CDB96D

CALL

# 6DB9

6E90

ED438A6F

LD

(# 6F8A) ,BC

6E94

CD096E

CALL

#6E09

6E97

DD21966F

LD

IX,# 6F 9 6

6E9B

210000

LD

HL,#0000

6E9E

22966F

LD

(#6F96),HL

6EA1

CD6E6E

CALL

#6E6E

6EA4

CD6B6D

CALL

# 6D 6B

6EA7

CD6E6E

CALL

#6E6E

6EAA

FE48

CP

#48

6EAC

28D1

JR

Z,# 6E7F

6EAE

FE4E

CP

#4E

6EB0

2822

JR

Z,# 6ED4

6EB2

FE4B

CP

#4B

6EB4

282A

JR

Z,# 6EE0

6EB6

FE58

CP

#58

6EB8

2872

JR

Z,# 6F2C

6EBA

FE0B

CP

#0B

6EBC

282D

JR

Z,# 6EEB

6EBE

FE0A

CP

#0A

6EC0

2839

JR

Z,# 6EFB

6EC2

FE08

CP

#08

6EC4

2845

JR

z,# 6f0b

6EC6

FE09

CP

#09

6EC8

2851

JR

Z,# 6F1B

6ECA

FE30

CP

#30

6ECC

38D3

JR

C,# 6EA1

6ECE

FE47

CP

#47

6ED0

385E

JR

C,#6F30

6ED2

18CD

JR

# 6EA1

6ED4

2A8A6F

LD

HL, (# 6F8A)

6ED7

018000

LD

BC,#0080

6EDA

09

ADD

HL, BC

6EDB

228A6F

LD

(# 6F8A) ,HL

6EDE

18B4

JR

#6E94

6EE0

2A8A6F

LD

HL, (# 6F8A)

6EE3

018000

LD

BC,#0080

6EE6

B7

OR

A

6EE7

ED42

SBC

HL, BC

6EE9

18F0

JR

# 6EDB

6EEB

DD3500

DEC

(IX+0)

6EEE

DD7E00

LD

A, (IX+0)

6EF1

FEFF

CP

#FF

6EF3

2 0AC

JR

NZ,# 6EA1

6EF5

DD36000F

LD

(IX+0),#0F

6EF9

18A6

JR

# 6EA1

6EFB

DD3400

INC

(ix+0)

6EFE

DD7E00

LD

A, (IX+0)

6F01

FE10

CP

#10

6F03

2 0 9C

JR

NZ,# 6EA1

6F05

DD360000

LD

(IX+0),#00

6F09

1896

JR

# 6EA1

6F0B

DD3501

DEC

(IX+1)

6F0E

DD7E01

LD

A,(IX+1)

6F11

FEFF

CP

#FF

6F13

208C

JR

NZ, # 6EA1

6F15

DD36010F

LD

(IX+1),#0F

6F19

18D0

JR

# 6EEB

6F1B

DD3401

INC

(IX+1)

6F1E

DD7E01

LD

A,(IX+1)

6F21

FE10

CP

#10

6F23

C2A16E

JP

NZ, # 6EA1

6F2 6

DD360100

LD

(IX+1),#00

6F2A

18CF

JR

# 6EFB

6F2C

CD6B0D

CALL

#0D6B

6F2F

C9

RET

6F30

F5

PUSH

AF

6F31

CDB16D

CALL

# 6DB1

6F34

F5

PUSH

AF

6F35

2A8A6F

LD

HL, (# 6F8A)

6F38

DD7E00

LD

A,(IX+0)

6F3B

CB27

SLA

A

6F3D

CB27

SLA

A

6F3F

CB27

SLA

A

6F41

4F

LD

C,A

6F42

0600

LD

B, #00

6F44

09

ADD

HL, BC

6F45

22906F

LD

(#6F90),HL

6F48

DD4E01

LD

C,(IX+1)

6F4B

CB2 9

SRA

C

6F4D

09

ADD

HL, BC

6F4E

DD7E01

LD

A,(IX+1)

6F51

E601

AND

#01

6F53

0EF0

LD

C, #F0

6F55

46

LD

B,(HL)

6F56

D1

POP

DE

6F57

200A

JR

NZ,# 6F63

6F59

CB22

SLA

D

6F5B

CB22

SLA

D

6F5D

CB22

SLA

D

6F5F

CB22

SLA

D

6F61

0E0F

LD

C, #0F

6F63

78

LD

A, B

6F64

A1

AND

C

6F65

B2

OR

D

6F66

77

LD

(HL) , A

6F67

CD536E

CALL

#6E53

6D8D

D1

POP

DE

6F6A

F1

POP

AF

6F6B

D7

RST

#10

6F6C

2A906F

LD

HL, (#6F90)

6F6F

7C

LD

A, H

6F70

85

ADD

A, L

6F71

0608

LD

B, #08

6F73

86

ADD

A,(HL)

6F74

23

INC

HL

6F75

10FC

DJNZ

#6F73

6F77

4F

LD

C,A

6F78

3A936F

LD

A, (#6F93)

6F7B

32996F

LD

(#6F99),A

6F7E

11986F

LD

DE,# 6F98

6F81

CD636D

CALL

# 6D63

6F84

79

LD

A, C

6F85

CDF06D

CALL

# 6DF0

6F88

1891

JR

#6F1B

"Memory Editor

"

6D60

C3

7A

6E

1A

13

FE

FF

C8

6A

6D68

D7

18

F8

DD

E5

E5

D5

C5

FD

6D70

21

3B

5C

CB

AE

CB

6E

28

6F

6D78

FC

3A

08

5C

F5

87

87

32

B4

6D80

86

6D

11

0A

00

21

60

02

7E

6D88

CD

B5

03

F1

C1

D1

E1

DD

BB

6D90

E1

C9

21

8C

6F

CD

99

6D

96

6D98

41

56

23

5E

23

7A

CD

B1

38

6DA0

6D

CB

27

CB

27

CB

27

CB

1B

6DA8

27

4F

7B

CD

B1

6D

B1

4F

F1

6DB0

C9

D6

30

FE

0A

D8

D6

07

A9

6DB8

C9

21

8C

6F

06

04

CD

6B

4C

6DC0

6D

FE

0D

28

25

FE

0C

28

24

6DC8

12

FE

30

38

F1

FE

47

30

13

6DD0

ED

05

04

28

E9

77

23

05

E3

6DD8

D7

18

E3

78

FE

04

28

DE

97

6DE0

2B

11

A2

6F

CD

63

6D

04

3B

6DE8

18

D4

05

04

20

D0

18

A2

F4

6DF0

F5

CB

2F

CB

2F

CB

2F

CB

0b

6DF8

2F

CD

FD

6D

F1

E6

0F

C6

77

6E00

30

FE

3A

38

02

C6

07

D7

B4

6E08

C9

CD

6B

0D

3E

02

CD

01

92

6E10

16

11

B8

6F

CD

63

6D

AF

18

6E18

CD

01

16

11

06

70

CD

63

21

6E20

6D

3E

02

CD

01

16

2A

8A

D3

6E28

6F

0E

10

06

08

7C

85

5F

91

6E30

7C

CD

F0

6D

7D

CD

F0

6D

EB

6E38

3E

20

D7

7E

CD

F0

6D

7B

FE

6E40

86

5F

23

10

F3

3E

3A

D7

08

6E48

7B

CD

F0

6D

3E

0D

D7

0D

8A

6E50

20

D9

C9

DD

7E

00

C6

05

A6

6E58

32

93

6F

DD

7E

01

CB

2F

50

6E60

DD

86

01

C6

05

32

94

6F

32

6E68

11

92

6F

C3

63

6D

F5

CD

3D

6E70

53

6E

11

9C

6F

CD

63

6D

58

6E78

F1

C9

3E

08

32

6A

5C

CD

AB

6E80

6B

0D

3E

02

CD

01

16

11

9B

6E88

A6

6F

CD

63

6D

CD

B9

6D

9B

6E90

ED

43

8A

6F

CD

09

6E

DD

48

6E98

21

96

6F

21

00

00

22

96

05

6EA0

6F

CD

6E

6E

CD

6B

6D

CD

98

6EA8

6E

6E

FE

48

28

D1

FE

4E

7D

6EB0

28

22

FE

4B

28

2A

FE

58

59

6EB8

28

72

FE

0B

28

2D

FE

0A

26

6EC0

28

39

FE

08

28

45

FE

09

09

6EC8

28

51

FE

30

38

D3

FE

47

2D

6ED0

38

5E

18

CD

2A

8A

6F

01

DD

6ED8

80

00

09

22

8A

6F

18

B4

B6

6EE0

2A

8A

6F

01

80

00

B7

ED

96

6EE8

42

18

F0

DD

35

00

DD

7E

0D

6EF0

00

FE

FF

20

AC

DD

36

00

3A

6EF8

0F

18

A6

DD

34

00

DD

7E

9F

6F00

00

FE

10

20

9C

DD

36

00

4C

6F08

00

18

96

DD

35

01

DD

7E

93

6F10

01

FE

FF

20

8C

DD

36

01

3D

6F18

0F

18

D0

DD

34

01

DD

7E

EB

6F20

01

FE

10

C2

A1

6E

DD

36

82

6F28

01

00

18

CF

CD

6B

0D

C9

8D

6F30

F5

CD

B1

6D

F5

2A

8A

6F

97

6F38

DD

7E

00

CB

27

CB

27

CB

B1

6F40

27

4F

06

00

09

22

90

6F

55

6F48

DD

4E

01

CB

29

09

DD

7E

3B

6F50

01

E6

01

0E

F0

46

D1

20

DC

6F58

0A

CB

22

CB

22

CB

22

CB

63

6F60

22

0E

0F

78

A1

B2

77

CD

1D

6F68

53

6E

F1

D7

2A

90

6F

7C

05

6F70

85

06

08

86

23

10

FC

4F

76

6F78

3A

93

6F

32

99

6F

11

98

06

6F80

6F

CD

63

6D

79

CD

F0

6D

9E

6F88

18

91

00

00

30

30

30

30

60

6F90

80

6D

16

05

05

FF

00

00

0B

6F98

16

05

1D

FF

15

01

8F

15

F8

6FA0

00

FF

08

20

08

FF

16

0A

5D

6FA8

03

49

4E

50

55

54

20

41

0B

6FB0

44

44

52

45

53

53

3A

FF

1D

6FB8

16

00

07

3C

20

4D

65

6D

BF

6FC0

6F

72

79

20

45

64

69

74

2F

6FC8

6F

72

20

3E

16

01

07

7F

13

6FD0

20

65

58

54

72

61

20

53

B6

6FD8

6F

66

74

20

31

39

39

33

86

6FE0

16

03

00

41

44

52

2E

20

8D

6FE8

30

20

20

31

20

20

32

20

8A

6FF0

20

33

20

20

34

20

20

35

9B

6FF8

20

20

36

20

20

37

20

53

C7

7000

55

4D

16

05

00

FF

16

00

42

7008

02

6B

65

79

73

3A

20

63

F3

7010

48

61

6E

67

65

20

4E

65

36

7018

78

74

20

62

61

63

4B

20

25

7020

65

58

69

74

16

01

02

63

A6

7028

75

72

73

6F

72

20

6B

65

C3

7030

79

73

2C

68

65

78

20

6E

8B

7038

75

6D

62

65

72

28

30

2D

48

7040

46

29

FF

00

00

00

00

00

1E

* * *




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Введение - Сейчас самое главное не позволять себе резко переходить на более высокий уровень.
Введение - Об управлении интерфейсом газеты.
Благодарности - О.Хохлову, К.Афендикову, В.Pубцову за ZXASM 3.0
Плата по таксе - Cегодня спиртное дешево (относительно других продуктов и вещей).
Юмор - Современная сказка про Красную Шапочку.

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