На полях

Casio PV-S450

Информация

Сайт в стадии реконструкции. Пользуйтесь форумами.

Твиттер

Статистика

Яндекс.Метрика
Друзья, соседи, проекты

Прерывания 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