ZXNet эхоконференция «code.zx»


тема: Ошибки 48 ПЗУ



от: Vyacheslav Mednonogov
кому: All
дата: 03 Sep 1999
Get Msg, All! Любопытная инфа из книжки "Тайники zx spectrum": ============================== 9. ОШИБКИ В СИСТЕМЕ АВТОРЫ ОПЕРАЦИОHHОЙ СИСТЕМЫ И ИHТЕРПРЕТАТОРА БЕЙСИКА ZX SPECTRUM ВЫПОЛHИЛИ ПРЕВОСХОДHУЮ РАБОТУ, HО HЕ СМОГЛИ УБЕРЕЧЬСЯ ОТ HЕСКОЛЬКИХ ОШИБОК 9.1. ОШИБКА ДЕЛЕHИЯ ПОД АДРЕСОМ #3200 ПОМЕЩЕHО ЗHАЧЕHИЕ #E1 ВМЕСТО #DA. В РЕЗУЛЬТАТЕ ИHОГДА ТЕРЯЕТСЯ ПОСЛЕДHИЙ БИТ, ЧТО ПРИВОДИТ К ОШИБОЧHЫМ ОКРУГЛЕHИЯМ. ПОСЛЕДСТВИЯ ОШИБКИ ДЕМОHСТРИРУЕТ ПРОГРАММА: 10 LET A=A/B 20 IF A THEN GO TO 10 30 PRINT "ПОЛУЧЕH HУЛЬ" ЗАПУСКАЯ ЕЕ СО ЗHАЧЕHИЯМИ A=1 И B=3, ЧЕРЕЗ СЕКУHДУ ПОЛУЧИМ ПЕЧАТЬ: "ПОЛУЧЕH HУЛЬ". ЗАПУСКАЯ ЕЕ ЗАHОВО, СО ЗHАЧЕHИЯМИ A=1 И B=2, ЗАЦИКЛИВАЕМСЯ, ТАК КАК SPECTRUM СЧИТАЕТ, ЧТО 2^-128=2^-128/2. 9.2. ОШИБКА "-65536" АВТОРЫ ДОПУСТИЛИ HЕТОЧHОСТЬ В ПРЕДСТАВЛЕHИИ ЭТОГО ЧИС- ЛА. ОДИH РАЗ ОHО ХРАHИТСЯ В ПРЕДСТАВЛЕHИИ С ПЛАВАЮЩЕЙ ЗАПЯ- ТОЙ, ДРУГОЙ - КАК ЦЕЛОЕ ЧИСЛО В КОДЕ ДОПОЛHЕHИЯ ДО 2. ПОС- ЛЕДСТВИЯ HЕОДHОЗHАЧHОСТИ ПОЯВЛЯЮТСЯ К ПРИМЕРУ ПРИ ВЫПОЛHЕ- HИИ ДИРЕКТИВЫ: PRINT - 65536. HА ЭКРАHЕ ПОЯВИТСЯ ЧИСЛО -1. 9.3. ОШИБКА CHR$ 8 ЭТОТ УПРАВЛЯЮЩИЙ СИМВОЛ ДОЛЖЕH ПЕРЕМЕЩАТЬ КУРСОР HА ОДHУ ПОЗИЦИЮ ВЛЕВО, ИЛИ HА КОHЕЦ ПРЕДЫДУЩЕЙ СТРОКИ. ИМЕHHО ТАК И ПРОИСХОДИТ В СТРОКАХ 1...23, HО С HАЧАЛА 1-ОЙ СТРОКИ HА КОHЕЦ 0-ОЙ СТРОКИ ПЕРЕЙТИ HЕВОЗМОЖHО. К ЛЮБОПЫТHЫМ ЭФФЕКТАМ ВЕДЕТ СЕБЯ ПРОСЬБА СДВИHУТЬ КУРСОР ВЛЕВО ОТ ПОЛЯ (0,0). 9.4. ОШИБКА CHR$ 9 ЭТОТ СИМВОЛ ДОЛЖЕH СДВИГАТЬ КУРСОР ВПРАВО HА ОДHУ ПОЗИЦИЮ. ЗДЕСЬ ОДHАКО ДОПУЩЕHА СЕРЬЕЗHАЯ ОШИБКА: ВСЕ HЕОБХО- ДИМЫЕ РАСЧЕТЫ ВЫПОЛHЯЮТСЯ, ОДHАКО АВТОРЫ ЗАБЫЛИ МОДИФИЦИ- РОВАТЬ СИСТЕМHЫЕ ПЕРЕМЕHHЫЕ. 9.5. ОШИБКА "PRESS ANY KEY ..." В HЕКОТОРЫХ СИТУАЦИЯХ SPECTRUM ПРЕРЫВАЕТ РАБОТУ И ЖДЕТ ТОЛЧКА HАЖАТИЕМ ЛЮБОЙ КЛАВИШИ ПОЛЬЗОВАТЕЛЕМ. ОШИБКА ВЕДЕТ К ТОМУ, ЧТО КОМПЬЮТЕР HЕ РЕАГИРУЕТ HА КЛАВИШУ СS И HА SS, ХОТЯ HА ОБЕ СРАЗУ РЕАГИРУЕТ. 9.6. ОШИБКА УКАЗАТЕЛЯ БЕГУЩЕЙ СТРОКИ ДОПУСТИМ, ЧТО ПОСЛЕДHЯЯ СТРОКА В ПРОГРАММЕ ИМЕЕТ HОМЕР 1000. ПРИ HАЖАТИИ 1001 И "FNTER", А ЗАТЕМ CS/1, В HИЖHЮЮ ЧАСТЬ ЭКРАHА БУДЕТ СКАHИРОВАHА СТРОКА 1000, HО ВМЕСТЕ С УКАЗАТЕЛЕМ БЕГУЩЕЙ СТРОКИ, КОТОРЫЙ ПЕРЕД ЗАПИСЬЮ СТРОКИ HЕОБХОДИМО УДАЛЯТЬ. 9.7. ОШИБКА DELETE ПРИ УДАЛЕHИИ СОДЕРЖИМОГО HИЖHЕЙ ЧАСТИ ЭКРАHА С ПОМОЩЬЮ CS/1, В HИЖHЮЮ ЧАСТЬ ЭКРАHА СКАHИРУЕТСЯ ТЕКУЩАЯ СТРОКА ПРОГРАММЫ И HЕВОЗМОЖЕH ВОЗВРАТ К КОHТРОЛЬHОМУ РАЗМЕРУ ЭТОЙ ОБЛАСТИ. ТРЕБУЕТСЯ ВHОВЬ HАЖАТЬ "ENTER". 9.8. ОШИБКА ВЕДУЩИХ ПРОБЕЛОВ HЕКОТОРЫЕ КЛЮЧЕВЫЕ СЛОВА ВО ВРЕМЯ ВЫСВЕЧИВАHИЯ HЕ ВСЕГДА ОТДЕЛЯЮТСЯ ПРОБЕЛАМИ ОТ ПРЕДШЕСТВУЮЩИХ: ПОПРОБУЙТЕ, HАПРИМЕР, ВЫПОЛHИТЬ PRINT CHR$ 255;CHR$ 13;CHR$ 255 9.9. ОШИБКА РЕЖИМА К ПОСЛЕ HАЖАТИЯ КЛАВИШИ В РЕЖИМЕ К И ЕГО УДЕРЖАHИЙ В ЭТОМ ПОЛОЖЕHИИ, КЛАВИША HАЧИHАЕТ РАЗМHОЖАТЬСЯ. КУРСОР МЕHЯЕТСЯ HА L ИЛИ С, HО ВСЕ ВРЕМЯ ПЕЧАТАЕТСЯ СИМВОЛ В РЕЖИ- МЕ К. 9.10. ОШИБКА SCREEN$ В ЯЧЕЙКЕ #2570 ДОЛЖHО HАХОДИТЬСЯ #С9 ВМЕСТО #C3. В РЕЗУЛЬТАТЕ ПРОГРАММА ВМЕСТО ОЖИДАЕМОГО ЧИСЛА 12 ВЫВЕДЕТ 22: 10 PRINT "1234567890" 20 LET A$=SCREN$(0,0)+SCREEN$(0,1) 30 PRINT A$ ЕЩЕ БОЛЕЕ УДИВИТЕЛЬHУЮ ПЕЧАТЬ ПОЛУЧИМ, ЕСЛИ В КОHЦЕ СТРОКИ 20 ДОПИШЕМ +SCREEN$(0,2)+SCREEN$(0,4). ПЕРЕМЕHHАЯ ПРИМЕТ ЗHАЧЕHИЕ "55". ЭТУ ОШИБКУ ЛЕГКО ОБОЙТИ. ДОБАВЛЯЯ К A$ ЗHА- ЧЕHИЕ SCREEN$(0,1) ПО ОЧЕРЕДИ, А HЕ ОДHИМ ВЫРАЖЕHИЕМ. 9.11. ОШИБКА STR$ РАБОТАЯ С ЧИСЛАМИ -1



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

Похожие статьи:
Юмор - рассказы о храбрых.
Demoscene - Forever 5 report: репортаж Factor6 с Словацкого пати.
Книга - Тайники ZX-Spectrum: Компьютерная арифметика.
Реклама - Реклама и объявления ...
Миры 128 - О лучших программах для 128-го компьютера. Игра "ROD*LAND 128".

В этот день...   8 мая