logo
ZX-Review-1992-01-12

9. Ошибка CHR$ 9.

Управляющий код CHR$ 9 должен был действовать противоположно коду CHR$ 8. Код CHR$ 8 называется BACKSPACE и вызывет перемещение курсора (текущей позиции печати) влево. Код же CHR$ 9 должен был бы по аналогии называться FORWARDSPACE и вызывать перемещение курсора или позиции печати на одно знакоместо вправо без изменения содержимого текущего знакоместа.

На практике он не делает ни того, ни другого. Более того, в результате его применения, содержимое текущей позиции окрашивается в текущие цвета INK и PAPER, т.е. в нем заложена двойная ошибка.

Листинг 1

2А655С

PR_FP_OK

LD HL,(STKEND)

; HL хранит адрес вершины стека

 

 

 

; калькулятора.

225F5C

 

LD (X_PTR),HL

: Запомнили вершину стека в си

 

 

 

; стемной переменной X PTR.

CDE32D

 

CALL 2DE3

; Вызвали процедуру ПЗУ

 

 

 

; PRINT FP. при этом пятибайт

 

 

 

; ное число снялось с вершины

 

 

 

; стека калькулятора.

2A5F5C

 

LD HL,(X_PTR)

; восстановили старый адрес вер

 

 

 

; шины стека к ра, т.е. теперь

 

 

 

; HL указывает на новый адрес

 

 

 

; вершины стека + 5.

11FBFF

 

LD DE,FFFB

; Число FFFBH равно 5 DEC (по

 

 

 

; правилам двоичной дополнитель

 

 

 

; ной арифметики.

19

 

ADD HL,DE

; Теперь HL указывает на новую

 

 

 

; вершину стека калькулятора.

22655С

 

LD (STKEND),HL

; Запомнили ее в соответствующей

 

 

 

; системной переменной.