Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[32]

*{ (выражение)}L - вывод текста программы в мнемокоде системы команд, с заданного адреса или, если адрес не указан, продолжение распечатки; выводится 28 строк текста программы;

*(выражение 2) • (выражение 2) Т - вывод текста в кодировке КОИ-7, в заданном интервале;

*(выражение С) - выполнение программы в кодах системы команд, с заданного адреса;

*{ (выражение I)}S - выполнение программы в кодах системы команд с адреса, определяемого выражением 1, до прерывания по адресу выражения 2.

Если выражение 1 отсутствует, то начальным адресом считается адрес последнего прерывания.

При пользовании директивой S следует учитывать:

1.Исходное включение памяти для отлаживаемой программы отличается от используемого интерпретатором следующим:

модуль-эмулятор ПЗУ включается в состояние РСС= Д АО ( Д ЕО в интерпретаторе);

модуль дополнительного ОЗУ включается в состояние РСС = $ 08 ( # 09 в интерпретаторе).

В адресном пространстве отлаживаемой программы на этот момент имеется копия ДОС, соответствующая моменту начальной загрузки ДОС (адреса дополнительного ОЗУ), и интерпретатор языка БЕЙСИК с включенным основным банком Д DOOO - DFFF.

Переключения банков памяти, выполняемые отлаживаемой программой, запоминаются (значения РСС хранятся по адресам Д Е8 - Д Е9) и повторяются при последующих исполнениях "S".

2.Содержимое ячеек Д 0... Д 3FF отлаживаемой программы хранится в адресах Д 8000... Д 83FF и не меняется при его работе. При каждом запуске директивы S с нового адреса происходит обратное перезаписывание из 8000... Д 83FFBfl 0...#3FF.

3.Содержимое регистров отлаживаемой программы запоминается в ячейках Д 45 - Д 49, адрес точки останова - в ячейках Д 0- )с( 1.

4.Содержимое текстового экрана отлаживаемой программы хранится по адресу Д 8400... Д 8BFF. Для его просмотра можно переписать эту зону памяти

на адреса текущего экрана.

Предусмотрено использование директивы S для отладки программ, размещенных на адресах ПЗУ. Такую программу следует загружать в массив 1 эмулятора ПЗУ и во время работы следить за сохранностью интерпретатора языка БЕЙСИК, размещенного в массиве 0 эмулятора ПЗУ.

ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА БЕЙСИК

При разработке программного обеспечения на языке БЕЙСИК могут оказываться полезными следующие сведения:

1. При желании для вывода текста на экран ВКУ можно использовать не весь экран, а текстовое окно, которое следует задать. В ячейке памяти 32 лежит левая граница текстового окна, а в ячейке 33 - ширина (в цветном текстовом режиме 32x32 хранятся удвоенные значения, нечетные границы недопустимы).


Директивамии POKE 33, А и РОКЕ 32, В можно задавать горизонтальные размеры текстового окна; при этом А должно находиться в диапазоне 1 - 64, а В - в диапазоне 0-63. Другие значения могут привести к непредсказуемым последствиям. В ячейках 34 и 35 лежат соответственно верхняя и нижняя границы текстового окна.

Директивами ГОКЕ 34, С и РОКЕ 35, D можно задавать вертикальные размеры текстового окна. Переменные С и D должны находиться соответственно в диапазонах 0 - 31 и 1 - 32; при этом D должно быть больше С.

2.Чтобы очистить текстовое окно от символов, можно кроме команды НОМЕ, использовать директиву PRINT CHR (12).

Выполнение директивы PRINT CHR (30) очистит текстовое окно от символов начиная с позиции курсора и до конца текстового окна.

Директива PRINT CHR (31) очищает строки от символов начиная с позиции курсора и кончая правой границей текстового окна.

Одновременное нажатие клавиш УПР и F или выполнение директивы PRINT CHR # (7) вызывает появление звукового сигнала.

Можно использовать и другие подпрограммы "Системного монитора", вызывая их с помощью операторов CALL или USR.

3.Переключать страницы памяти можно непосредственно в программах с помощью команд РОКЕ - 14592+KR+NS*Q, 0.

Примечания:

а)KR - код режима работы: О-в режиме GR, 1 - в режиме MGR, 2 - в текстовом режиме, 3 - в режиме HGR;

б)NS - номер страницы памяти. NS » 1 + 63 в режимах GR и текстовом, NS= 1 + 5 в режимах MGR. NGR.

Номера текстовых страниц с 1 до 31 соответствуют АЦР-32, с 33 до 63 -АЦР-64:

в)Q-4 в режимах GR и текстовом, Q-16 в режимах MGR и NGR.

4.Интерпретатор языка БЕЙСИК имеет четыре оператора, позволяющие манипулировать графическими объектами в режиме высокоразрешающей графики. Это операторы DRAW, XDRAW, ROT, SCALE. Однако, прежде чем эти операторы могут быть использованы, графический объект должен быть описан посредством описателя формы, который состоит из последовательности закодированных векторов, определяющих форму объекта. Один или несколько таких описателей вместе с указателями составляют таблицу образов. Коды этой таблицы могут быть набраны с клавиатуры и записаны на магнитной ленте или магнитном диске для последующего использования.

Каждый байт описателя формы разделен на три секции, каждая из которых описывает вектор, указывающий направление движения воображаемого "пера", рисующего объект.

По команде DRAW или XDRAW интерпретатор просматривает секцию за секцией описателя. Когда встречается байт, все биты которого нули, просмотр описателя заканчивается.

Структура одного байта описателя формы, состоящего из трех секций А, В, С:

СВА

Номер бита................. 76543210

Обозначения битов.......... DDPDDPDD

4*

99


Каждая пара битов, обозначенная DD, определяет направление движения "пера", а каждый бит Р указывает, чертить или не чертить точку, прежде чем "перу" сместиться в указанном направлении.

Если DD=00, "перо" сместится вверх, DD=01 - вправо, DD=10 - вниз, DD=11 -влево.

Р=0 вызывает смещение без черчения, а Р=1 - смещение с черчением точки.

Секция С (два старших бита) не содержит поля Р. Считается, что в этой секции Р=0, т.е. в ней можно указывать только смещение без черчения.

Таким образом, каждый байт описывает до трех векторов, по одному в секциях А. В и С.

Команды DRAW И XDRAW обрабатывают секции справа налево (вначале секцию А, затем В, далее С).

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

Предположим, нужно изобразить объект, показанный на рис. 5.5, а. Вначале нанесем его на клетчатую бумагу так, чтобы каждая точка занимала одну клетку

(рис. 5.5, б). Затем выберем начальную точку. Пусть она находится в центре фигуры. Теперь нарисуем путь воображаемого "пера" через точки нашего объекта, используя только повороты на 90 (рис. 5.5, в). Развернем эту последовательность векторов и расположим их в том порядке, в каком "перо" проходит через точки объекта.

Последовательно записываем для каждого вектора его двоичный код в свободную секцию табл. 5.3. Если код не подходит (например, вектор в секции С не может чертить точку) или равен 00 (000) в конце байта, пропускаем эту секцию и переходим к следующей. Преобразуем последовательность нулей и единиц значения вектора описателя в шестнадцатеричный формат (5.3):

12 3F 20 64 2D 15 36 IE 07 00

•• •

•• •

а)

S)

Эта последовательность байтов теперь должна быть загружена в память компьютера.

в)

Рис. 5.5. Формирование образа



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98]