Описание ПЗУ, часть I
В этом цикле статей мы будем публиковать все важнейшие процедуры, содержащиеся в постоянной памяти нашего компьютера.
В первой части мы опишем основные процедуры, связанные с:
- инициализацией компьютера;
- чтением клавиатуры;
- выводом текста;
- выводом числовых значений;
- очисткой экрана.
Первая из этих процедур используется как при обработке команды NEW, так и при инициализации компьютера, начиная с адреса:
11CB NEW
LD A,7
;установка цвета рамки — 7
LD A,3F
LD I,A
;подождать 24 такта!!!
;теперь выполняется проверка памяти:
11DA RAMCHECK
LD H,D
LD L,E
;перенос в регистры HL значения
;RAMTOP для NEW или #FFFF для #0000
11DC RAMFILL
DEC HL
CP H
JR NZ,RAMFILL
11E2 RAMREAD
AND A
SBC HL,DE
ADD HL,DE
INC HL
JR NC,RAMDONE
DEC (HL)
JR Z,RAMDONE
DEC (HL)
JR Z,RAMDONE
11EF RAMDONE
DEC HL
EXX
LD (PRAMT),BC
LD (RASP/PIP),DE
LD (UDG),HL
EXX
;инициализация основных
;системных переменных
INC B
JR Z,RAMSET
;проверка, была ли процедура
;вызвана командой NEW
NONEW
LD (PRAMT),HL
LD DE,3EAF
LD BC,00A8
EX DE,HL
LDDR
EX DE,HL
;копирование в память форм
;букв для графического режима (UDG)
INC HL
LD (UDG),HL
DEC HL
1219 RAMSET
LD (RAMTOP),HL
LD HL,3C00
LD (CHARS),HL
;обновление (установка)
;значения RAMTOP
LD HL,(RAMTOP)
LD (HL),3E
DEC HL
LD SP,HL
;установка значения стека
DEC HL
DEC HL
LD (ERRSP),HL
;адрес обработчика ошибок
Далее компьютер устанавливает другие переменные, необходимые для начала работы, включает прерывания (сканирование клавиатуры, FRAMES) и выводит надпись «Sinclair ...».
Чтение клавиатуры
CALL #028E ;переход к SCANKEY
LD A,D
RET
В результате выполнения перехода по адресу #028E код нажатой клавиши помещается в регистр D и в переменную LAST_K.
Вывод текста
Чтобы вывести текст на экран, нужно открыть канал для процедуры PRINT.
Это делается подпрограммой:
OPEN
RET
Теперь можно печатать текст с помощью команды:
LD A,"знак"
Поделитесь вашим мнением о статье