Casio PV-S450 » Программирование »
Casio PV-S450 » PVOS и патчи к ней » Программирование »
Программирование » PVOS и патчи к ней » Программирование »
FAQ по программированию
[faq]
Вопрос: Как реализовать LibTchWait() без ожидания?Ответ: Constantine:
Автор: Wittawat Yamwong который делал OWBasic
void PollEvent(TCHSTS far* tsts, byte event_mask)
{
union REGS reg;
reg.x.ax = 0x0200 | event_mask;
reg.x.di = FP_OFF(tsts);
reg.x.es = FP_SEG(tsts);
int86(0x50,®,®);
}
А вызывать так -
PollEvent(&tsts, EVENT_TCH | EVENT_CRADLE);
Возвращаемого значения в общепринятом смысле нет. Там возвращается структура, заполненная всякой лабудой. Про структуру можно почитать там же, где и про LibTchWait
Вопрос: Где находится видеопамять?Ответ: Constanthine: 0xF010:0 и далее построчно 160 пикселов побитово разлагается в 160 строк. Вопрос: LFILE_BUF. FLASH data buffer (BinaryBuffer 30KB) CAUTION: Allocate a buffer for FAR_BSS. Что это за BSS? И как allocate его for far ?
Ответ: Constanthine: BSS это сегмент данных где данные хранятся в неинициализированном виде. Например, при таком описании:
main()
{
static _far kkk;
}
Здесь переменная kkk уходит в BSS! Более того, идет как FAR
Чем это лучше чем такое:
static _far kkk;
main()
{
}
В данном примере ничем, но если выделять не одну переменную а целый массив, то этот массив прога будет заполнять нулями и длина проги вырастет на количество нулей, что не есть хорошо для маленьких прог. Но что есть хорошо для программ-монстров типа Майкрософт, так как стимулирует спрос на оперативную память и винчестеры ))
Вопрос: При использовании функций log10, pow, sqrt возникает ошибка компилятора:
p/mathlib.lib(log10.c): Undefined symbol:_huge_double_
p/mathlib.lib(pow.c): Undefined symbol:_ESTE_SS
p/mathlib.lib(pow.c): Undefined symbol:_huge_double_
и т.п.,
хотя с другими функция (floor, modf) никаких проблем нет.
В чем может быть причина?
Ответ: TriD: Кроме внесения изменений в LINK2P.DAT и(или) LINK2S.DAT (добавить библиотеку mathlib), необходимо добавить в начале программы на С следующее определение:
#ifndef DUMMY_H
#define DUMMY_H
char _osmajor='1';
void *sbrk(size_t s) { return(NULL); }; if
После добавления этой абракадабры все должно быть ОК.
[/faq]
Вопросы эмулятора
[faq]
Вопрос: У меня на быстром компьютере эмулятор Каськи сильно бежит вперёд.Ответ: [=KRoN=] Зайти в Project -> Configuration -> General и выставить своё значение TIME BASE CLOCK(MHz) вместо дефолтовых 25. У меня всё стало примерно соответствовать действительности при 4. Вопрос: Как изменить в эмуляторе шрифт в окнах? У меня там какие-то кракозябры...
Ответ: [=KRoN=] И неудивительно. Там по умолчанию прописан какой-то японский
шрифт. Чтобы записать нормальный, нужно зайти в каталог симулятора
(C:\CASIO\PV2EN02\SIM\ по умолчанию), найти там .cpj файл со своим
проектом и поменять имеющиеся там строки, например, на следующие:
FONTSIZE=10
FONTNAME=Courier
[/faq]