Тайники ZX Spectrum 1969 г.

Ошибки в системе - авторы операционной системы и интерпретатора BASIC в ZX-Spectrum выполнили превосходную работу, но не смогли уберечься от нескольких ошибок.


                      9. Ошибки в системе
     Авторы  операционной   системы  и   интерпретатора  BASIC    в
ZX-Spectrum выполнили превосходную  работу, но не  смогли уберечься
от нескольких ошибок.
                      9.1 Ошибка деления
     Под  адресом  #3200  помещено  значение  #E1  вместо  #DA.   В
результате иногда теряется последний бит, что приводит к  ошибочным
округлениям. Последствия ошибки демонстрирует программа:
                   10  LET A=A/B
                   20  IF A THEN GO TO 10
                   30  PRINT "Получен нуль"
     Запуская ее со  значениями A=1 и  B=3, через секунду  получаем
печать "Получен нуль". Запуская ее  заново со значениями A=1 и  B=2
зацикливаемся, т.к. Spectrum считает, что 2^-128=2^-128/2.
                      9.2 Ошибка "-65536"
     Авторы допустили неточность в представлении этого числа.  Один
раз оно хранится в представлении с плавающей запятой, другой -  как
целое число  в коде  дополнения до  2. Последствия  неоднозначности
проявляются, к примеру, при выполнении директивы: PRINT -65536.  На
экране появится число -1.
                      9.3 Ошибка CHR$ 8.
     Этот  управляющий  символ  должен  перемещать  курсор  на одну
позицию  влево  или  на  конец  предыдущей  строки.  Именно  так  и
происходит в строках 1...23, но  с начала 1-ой строки на  конец 0-й
перейти  невозможно.  К  любопытным  эффектам  ведет  себя  просьба
сдвинуть курсор влево от поля (0,0).
                       9.4 Ошибка CHR$ 9
     Этот символ  должен сдвигать  курсор вправо  на одну  позицию.
Здесь, однако, допущена  серьезная ошибка: все  необходимые расчеты
выполняются,   однако   авторы   забыли   модифицировать  системные
переменные.
                 9.5 Ошибка "Press any key..."
     В некоторых ситуациях Spectrum прерывает работу и ждет  толчка
нажатием  любой  клавиши  пользователем.  Ошибка  ведет к тому, что
компьютер не реагирует  на клавишу CS  и на SS,  хотя на обе  сразу
реагирует.
              9.6 Ошибка указателя бегущей строки
     Допустим, что последняя строка  в программе имеет номер  1000.
При нажатии  1001 и  "ENTER", а  затем CS/1,  в нижнюю часть экрана
будет  скопирована  строка  1000,  но  вместе  с указателем бегущей
строки, который перед записью необходимо удалять.
                       9.7 Ошибка DELETE
     При удалении содержимого нижней части экрана с помощью CS/1  в
нижнюю  часть  экрана  скопируется   текущая  строка  программы   и
невозможен возврат к  контрольному размеру этой  области. Требуется
вновь нажать "ENTER".
                  9.8 Ошибка ведущих пробелов
     Некоторые  ключевые  слова  во  время  высвечивания  не всегда
отделяются  пробелами  от  предшествующих.  Попробуйте,   например,
выполнить
                   PRINT CHR$ 255:CHR$ 13:CHR$ 255
                      9.9 Ошибка режима K
     После нажатия  клавиши в  режиме K  и при  удержании ее в этом
положении, клавиша начинает размножаться. Курсор меняется на L  или
C, но все время печатается символ в режиме K.
                      9.10 Ошибка SCREEN$
     В ячейке #2750 должно находиться #C9 вместо #C3. В  результате
программа вместо ожидаемого числа 12 выведет 22:
         10 PRINT "1234567890"
         20 LET A$=SCREEN$(0,0)+SCREEN$(0,1)
         30 PRINT A$
Еще  более  удивительную  печать  получим,  если  в конце строки 20
допишем  +SCREEN$(0,2)+SCREEN$(0,4).  Переменная  примет   значение
"55". Эту ошибку легко обойти, добавляя к A$ значение  SCREEN$(0,I)
по очереди, а не одним выражением.
                       9.11 Ошибка STR$
     Работая с числами -1




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Новые приключения - Винни Пух.
Застрял ? - Описание игры "Dustin".
Проект года - Мир тьмы: описание новой real-time strategy.
Ассемблер - Флаги, операции сравнения и переноса.
От авторов - традиционное вступление.

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