B.M. Рабинович (г. Харьков), М. Дмитровский (г. Москва)

Выход из «отладки» [$] в ФОКАЛ без стирания информации в ОЗУ

Способ 1

$Щ
$120020А26Д0П
$262А1И <СТОП>

Способ 2

$ 120000А16Д1000П
$1016A12737,1,262,137,121110И
$1000G

Первый способ хорош для редких переходов из отладки в ФОКАЛ, а второй - тем, что постоянно «живёт» в ОЗУ с адреса 1000, и можно каждый раз (потом после пересылки и ввода кодов с адреса 1016) возвращаться в ФОКАЛ по команде 1000G.

Комментарий рецензента

На способы выхода из режима отладки в систему ФОКАЛ без стирания информации в ОЗУ

1. Первый способ для сравнительно редких переходов из режима отладки в систему ФОКАЛ.

В этом случае, как правильно считают авторы, действительно не происходит стирания информации из ОЗУ при возврате в ФОКАЛ.

Этот способ достаточно удобен при отладке программ, если приходится переходить из режима работы с ФОКАЛом в режим отладки и обратно. Возможность такого перехода обеспечивается при снятии защиты с системных переменных и замене векторов прерываний путём пересылки их стандартных значений из области ПЗУ с адресом 120020 длиной 26 байтов. Дополнительно устанавливается ненулевое содержимое ячейки с адресом 262. Эго выполняется для того, чтобы при нажатии клавиши «ВВОД» в рабочую программу передавался код 15, а не код 12.

Конечно, возвращаться в ФОКАЛ без потери информации в ОЗУ можно, восстанавливая в области системных переменных и меньшее количество байтов, например:

$Ш
$120024А22Д4П
$262А1И <СТОП>

или

$Щ
$120024А10Д4П
$262А1И <СТОП>

После пересылки векторов прерывания способом авторов область ОЗУ, начиная с нулевого адреса, будет содержать:

Адрес

Содержание

0

137

2

122212

4

121110

6

340

10

125636

12

100

14

121110

16

340

20

122420

22

340

24

126116

 

Способ, предложенный Рабиновичем и Дмитровским для возврата режима отладки в систему ФОКАЛ, весьма полезен.

2. При втором способе перехода, который можно рекомендовать при частых переходах из режима отладки в ФОКАЛ и обратно в ОЗУ, начиная с адреса 1000, создаётся программа:

Адрес

Содержание

Ассемблер

1000

5000

 

CLR

R0

1002

12701

 

MOV

#120020,R1

1004

120020

 

 

 

1006

12120

А:

MOV

(R1)+,(R0)+

1010

22701

 

СМР

#120046,R1

1012

120046

 

 

 

1014

2374

 

BGE

A

1016

12737

 

MOV

#1,@#262

1020

1

 

 

 

1022

262

 

 

 

1024

137

 

JMP

@#121110

1026

121110

 

 

 

 

Программа заменяет вектора прерываний в области системного стека на вектора, необходимые ФОКАЛу, и переходит в систему ФОКАЛ по адресу 121110. Эту программу нецелесообразно сбрасывать на магнитную ленту, так как она быстро создаётся в ОЗУ командами отладки.

Л.Н. Жариков

 

Performed by © gid, 2012-2022.