Во второй части описания ПЗУ
Во второй части описания я расскажу:
- о вызове звука заданной высоты и длительности;
- об обработке маскируемых прерываний;
- о чтении клавиши BREAK;
- об обработке процедур LOAD и SAVE.
Процедура BEEPER вызывается командой:
CALL #03B5
Входные параметры:
- в регистрах HL задаётся высота звука (нота до первой октавы);
- в регистрах DE — произведение f*t, где:
- f — частота звука;
- t — длительность звука.
Обработка маскируемых прерываний вызывается командой RST 8 либо следующим фрагментом кода:
PUSH AF ;сохранить регистры
PUSH HL
LD HL,(FRAMES)
INC HL
LD (FRAMES),HL
LD A,H
OR L
JR NZ,KEYIN
INC (FRAMES3)
KEYIN
PUSH BC
PUSH DE
CALL #02BF ;клавиатура
POP DE ;и изменение
POP BC ;LAST K
POP AF
RET
Эта подпрограмма вызывается примерно каждые 20 мс. Она полезна при работе с прерываниями из BASIC.
Процедуры обработки загрузки с магнитофонной ленты описывались во многих публикациях. Для напоминания приведу основные сведения.
Вызов:
LOAD -
SAVE -
CALL #04C2
Входные параметры:
- в регистрах DE — длина загружаемого блока;
- в регистрах IX — начальный адрес блока;
- в регистре A:
- 0 — заголовок;
- 255 — блок данных;
- флаг C (только для LOAD!):
- 1 — загрузка в память;
- 0 — проверка.
Выходные параметры:
- флаги C и Z:
- 0 1 — ошибка загрузки;
- 0 0 — неверный тип файла;
- 1 1 — загрузка выполнена успешно.
Процедуры выбрал и описал:
WILL
Поделитесь вашим мнением о статье