ex. =KRoN= » компьютеры » Casio PV-S450 » Программирование »
Casio PV-S450 » PVOS и патчи к ней » Программирование »
Программирование » PVOS и патчи к ней » Программирование »
Casio PV-S450 » PVOS и патчи к ней » Программирование »
Программирование » PVOS и патчи к ней » Программирование »
Прерывания BIOS
############################################################
### ###
### ПРЕРЫВАНИЯ BIOS CASIO PV ###
### ###
############################################################
Данный документ содержит роспись прерываний BIOS Casio PV. Данные
получены экспериментально, возможны ошибки. Основная работа
проводилась на эмуляторе Casio PV-S450, так что для других моделей
возможны отличия.
Важно! Многие прерывания BIOS портят регистры процессора!
############################################################
### ###
### LCD. Прерывания LCDBIO (int 10h) ###
### ###
############################################################
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Функция: Очистка экрана
Аналог: void LibClrDisp(void)
Вход:
AH = 31h (IB_PGCLR)
BH = 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Функция: Вывод на дисплей содержимого экранного буфера
Аналог: void LibPutDisp(void)
Вход:
AH = 39h (IB_PUTDISP)
BH = 0h
############################################################
### ###
### EL CONTROL. Прерывания ELPBIO (int 22h) ###
### ###
############################################################
Функция: Выключить подсветку
Вход:
AH = 0 (IB_ELP_OFF)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Функция: Включить подсветку на 15 сек.
Вход:
AH = 1 (IB_ELP_ON)
Примечание:
В SSC PVOS 1.02.003 эта функция включает постоянную подсветку.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Функция: Включить постоянную подсветку
Вход:
AH = 2 (IB_ELP_SON)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Функция: Получить состояние подсветки
Вход:
AH = 3 (IB_ELP_STS)
Выход:
BL = состояние подсветки
0 (IB_ELPSTS_OFF) - выключена
1 (IB_ELPSTS_ON) - включена на 15 сек.
2 (IB_ELPSTS_SON) - включена постоянно
############################################################
### ###
### WAIT. Прерывания WAITBIO (int 23h) ###
### ###
############################################################
Функция: Организация задержки
Вход:
AH = длительность задержки:
0 - ~0.125с.
1 - ~0.25с.
2 - ~0.5с.
3 - ~1с.
############################################################
### ###
### PEN. Прерывания PENBIO (int 4Fh) ###
### ###
############################################################
Прерывание - пустышка. По его адресу расположен iret.
############################################################
### ###
### MODE. Прерывания MODEBIO (int 0CAh) ###
### ###
############################################################
Функция: Выйти в меню
Вход:
AH = 4 (IB_MJUMP)
BH = mode:
0Eh (IB_MMENUMD) - MENU
############################################################
### ###
### Graphic. Прерывания GDSBIO (int 0CCh) ###
### ###
############################################################
Функция: Вывод на экран символа
Аналог: PutProFont
Вход:
AH = 0Dh
AL = font:
0 (IB_PFONT1) - Normal
1 (IB_PFONT2) - Bold
2 (IB_CG57FONT) - 5*7
3 (IB_PFONT3) - For title
BX = code: код символа
CX = x-координата вывода
DX = y-координата вывода
Выход:
CX - x-координата следующего символа
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Функция: Получить ширину символа
Аналог: GetProFontSize
Вход:
AH = 12h
AL = font:
0 (IB_PFONT1) - Normal
1 (IB_PFONT2) - Bold
2 (IB_CG57FONT) - 5*7
3 (IB_PFONT3) - For title
BX = code: код символа
Выход:
CX - ширина символа в пикселях
############################################################
### ###
### Неисследованная информация ###
### ###
############################################################
Для отслеживания тачпада можно использовать PollEvent.
Он работает через int 50h. Это прерывание поддерживает следующие функции:
00,01,02,05,06,09,0A. Функция 02 - это и есть PollEvent. При вызове 05 -
происходит перекалибровка экрана. Что делают остальные подфункции - пока
непонятно.
В прерывании 10h (LCD) есть подфункция 33h (IB_LINEDRW). Служит для
рисования линии. На входе: es:dx - указывает на структуру из 6 слов.
Первые два слова непонятно зачем (в теле обработчика я заметил
использование второго слова, но не понял пока что с ним делает). Возможно
указывают где рисовать (VRAM или D/D) и тип линии. Третье и четвёртое
слова - x и y начала линии, пятое и шестое - смещение по x и по y плюс
один (т.е.: 0,0,160,1 - рисует линию в самом верху экрана). Регистры вроде
не портит.
В прерывании С7 (DRAW) есть функции рисования линии, прямоугольника и
т.п., но они принимают параметры в стеке.
############################################################
### ###
### Составители ###
### ###
############################################################
В работе принимали участие:
Роман "=KRoN=" Каршиев (http://airbase.uka.ru/kron/)
Алексей "Lerm" Махмутов (alexmach@mail.ru)
Сергей "RSS" Рямов
Официальная страница документа:
Прерывания BIOSКомментарии
- Прерывания BIOS Casio PV-S450 [<Lerm>#22.05.02 18:07]
- Прерывания BIOS Casio PV-S450 [=KRoN=#18.05.02 12:53]
- Прерывания BIOS Casio PV-S450 [<RSS from CasioPV>#05.05.02 12:54]