home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
rom
/
sample.c
< prev
next >
Wrap
Text File
|
1990-06-14
|
10KB
|
434 lines
/********************************************************************/
/* */
/* sample.c -- sample program for rom.c */
/* */
/* written by タケ (NAA01070) */
/* */
/********************************************************************/
#include <string.h>
#include <egb.h>
#include <mos.h>
#include <rom.h>
#define BLACK 0
#define LOW_BLUE 1
#define LOW_RED 2
#define LOW_MAGENTA 3
#define LOW_GREEN 4
#define LOW_CYAN 5
#define LOW_YELLOW 6
#define LOW_WHITE 7
#define GRAY 8
#define BLUE 9
#define RED 10
#define MAGENTA 11
#define GREEN 12
#define CYAN 13
#define YELLOW 14
#define WHITE 15
#define EgbParaSize 64
char EGB_work[EgbWorkSize];
char EGB_para[EgbParaSize];
char MOS_work[MosWorkSize];
/********************** EGB and mouse functions *********************/
void clear_screen()
{
EGB_clearScreen(EGB_work);
}
void color(int color)
{
EGB_color(EGB_work, 0, color);
}
void background(int color)
{
EGB_color(EGB_work, 1, color);
EGB_clearScreen(EGB_work);
}
void paint_color(int color)
{
EGB_color(EGB_work, 2, color);
}
void paint_mode(int border, int paint, int background)
{
EGB_paintMode(EGB_work, background << 8 | paint << 4 | border);
}
void rectangle(int x1, int y1, int x2, int y2)
{
WORD(EGB_para + 0) = x1;
WORD(EGB_para + 2) = y1;
WORD(EGB_para + 4) = x2;
WORD(EGB_para + 6) = y2;
EGB_rectangle(EGB_work, EGB_para);
}
void symbol_sub(char *s)
{
int limit;
limit = sizeof(EGB_work) - 2;
if (strlen(s) <= limit) {
WORD(EGB_para + 0) = strlen(s);
strcpy(EGB_para + 2 , s);
EGB_connectSjisString(EGB_work, EGB_para);
}
else {
WORD(EGB_para + 0) = limit;
strncpy(EGB_para + 2, s, limit);
EGB_connectSjisString(EGB_work, EGB_para);
symbol_sub(s + limit);
}
}
void symbol(int x, int y, char *s, int xsize, int ysize)
{
int limit;
EGB_textZoom(EGB_work, 0, xsize, ysize);
EGB_textZoom(EGB_work, 1, xsize, ysize);
WORD(EGB_para + 0) = x;
WORD(EGB_para + 2) = y + ysize;
limit = sizeof(EGB_work) - 6;
if (strlen(s) <= limit) {
WORD(EGB_para + 4) = strlen(s);
strcpy(EGB_para + 6 , s);
EGB_sjisString(EGB_work, EGB_para);
}
else {
WORD(EGB_para + 4) = limit;
strncpy(EGB_para + 6, s, limit);
EGB_sjisString(EGB_work, EGB_para);
symbol_sub(s + limit);
}
}
void wait()
{
int button, x, y;
MOS_disp(1);
button = 0;
while (button == 0)
MOS_rdpos(&button, &x, &y);
MOS_disp(0);
}
void delay(int n)
{
for (n = n * 10000; n > 0; --n)
;
}
/************************** opening sample **************************/
void opening_sample()
{
ROM_putOpening(EGB_work, EGB_para,
(640 - W_OPENING) / 2, (480 - L_OPENING) / 2);
delay(50);
}
/************************ system icon sample ************************/
struct SCENARIO {
int drive;
int num;
int read;
int set;
};
#define X_SYS_MSG 0
#define Y_SYS_MSG 450
#define X_SYS_ICON 570
#define Y_SYS_ICON 440
void sys_icon_sample()
{
struct SCENARIO scenario[] = {
{3, 0, 0, 1},
{1, 0, 1, 1},
{1, 1, 1, 1},
{7, 2, 0, 0},
{7, 3, 0, 0},
{8, 0, 1, 0}
};
int i;
paint_mode(2, 2, 0);
paint_color(BLACK);
color(WHITE);
symbol(X_SYS_MSG, Y_SYS_MSG, "メモリ サイズ=4GB", 16, 16);
delay(50);
for (i = 0; i < 6; ++i) {
color(BLACK);
rectangle(X_SYS_ICON, Y_SYS_ICON,
X_SYS_ICON + W_SYS_ICON, Y_SYS_ICON + L_SYS_ICON);
color(WHITE);
ROM_putSysIcon(EGB_work, EGB_para, 0, 10 + scenario[i].num,
X_SYS_ICON, Y_SYS_ICON);
color(BLACK);
rectangle(X_SYS_ICON + W_SYS_ICON, Y_SYS_ICON,
X_SYS_ICON + W_SYS_ICON * 2, Y_SYS_ICON + L_SYS_ICON);
color(WHITE);
ROM_putSysIcon(EGB_work, EGB_para, 0, scenario[i].drive,
X_SYS_ICON + W_SYS_ICON, Y_SYS_ICON);
delay(100);
if (scenario[i].read != 0) {
color(BLACK);
rectangle(X_SYS_MSG, Y_SYS_MSG,
X_SYS_MSG + 16 * 14, Y_SYS_MSG + 16);
color(WHITE);
symbol(X_SYS_MSG, Y_SYS_MSG, "システム読み込み中です",
16, 16);
color(BLACK);
rectangle(X_SYS_ICON, Y_SYS_ICON,
X_SYS_ICON + W_SYS_ICON * 2, Y_SYS_ICON + L_SYS_ICON);
color(WHITE);
ROM_putSysIcon(EGB_work, EGB_para, 0, 9, /* 時計 */
X_SYS_ICON + W_SYS_ICON, Y_SYS_ICON);
delay(300);
}
if (scenario[i].set != 0) {
color(BLACK);
rectangle(X_SYS_MSG, Y_SYS_MSG,
X_SYS_MSG + 16 * 15, Y_SYS_MSG + 16);
color(WHITE);
symbol(X_SYS_MSG, Y_SYS_MSG,
"システムをセットしてください", 16, 16);
}
}
delay(100);
/* すべてのアイコンの表示 */
clear_screen();
for (i = 1; i <= 15; ++i) {
ROM_putSysIcon(EGB_work, EGB_para, 0, i, /* アイコン */
65 + (W_SYS_ICON + 2) *(i - 1), 200);
ROM_putSysIcon(EGB_work, EGB_para, 1, i, /* 背景 */
65 + (W_SYS_ICON + 2) *(i - 1), 200 + L_SYS_ICON + 2);
}
}
/********************* software keyboard sample *********************/
#define X_SIZE_BUTTON 5
#define Y_SIZE_BUTTON 27
#define X_KANJI_BUTTON 48
#define Y_KANJI_BUTTON 116
#define X_KEYBOARD 100
#define Y_KEYBOARD 100
void disp_keyboard(int x, int y)
{
ROM_putTopLine(EGB_work, EGB_para, x, y);
ROM_putWindow(EGB_work, EGB_para, x, y + L_TOP_LINE);
ROM_putKeyboard(EGB_work, EGB_para, 1,
x, y + L_TOP_LINE + L_WINDOW);
ROM_putShadowV(EGB_work, EGB_para, x + W_TOP_LINE, y + 7);
ROM_putShadowH(EGB_work, EGB_para,
x + 6, y + L_TOP_LINE + L_WINDOW + L_KEYBOARD);
ROM_putSizeButton(EGB_work, EGB_para, 1,
x + X_SIZE_BUTTON, y + Y_SIZE_BUTTON);
ROM_putKanjiButton(EGB_work, EGB_para, 1,
x + X_KANJI_BUTTON, y + Y_KANJI_BUTTON);
}
void software_keyboard_sample()
{
int i;
paint_mode(2, 2, 0);
paint_color(WHITE);
/* かなの表示 */
disp_keyboard(X_KEYBOARD, Y_KEYBOARD);
MOS_setpos(450, 350);
MOS_disp(1);
delay(200);
/* →カナ→英字→記号→かな */
for (i = 0; i < 4; ++i) {
if (i != 3)
MOS_setpos(X_KEYBOARD + 20, Y_KEYBOARD + 60 + 20 * i);
else
MOS_setpos(X_KEYBOARD + 20, Y_KEYBOARD + 60);
delay(50);
MOS_disp(0);
color(WHITE);
rectangle(X_KEYBOARD, Y_KEYBOARD + L_TOP_LINE + L_WINDOW,
X_KEYBOARD + W_KEYBOARD - 1,
Y_KEYBOARD + L_TOP_LINE + L_WINDOW + L_KEYBOARD - 1);
color(BLACK);
if (i != 3) {
ROM_putKeyboard(EGB_work, EGB_para, 2 + i,
X_KEYBOARD, Y_KEYBOARD + L_TOP_LINE + L_WINDOW);
ROM_putSizeButton(EGB_work, EGB_para, 1,
X_KEYBOARD + X_SIZE_BUTTON,
Y_KEYBOARD + Y_SIZE_BUTTON);
}
else
disp_keyboard(X_KEYBOARD, Y_KEYBOARD);
MOS_disp(1);
delay(200);
}
/* →半角→全角 */
for (i = 2; i >= 1; --i) {
MOS_setpos(X_KEYBOARD + 20, Y_KEYBOARD + 40);
delay(50);
MOS_disp(0);
color(WHITE);
rectangle(X_KEYBOARD + X_SIZE_BUTTON,
Y_KEYBOARD + Y_SIZE_BUTTON,
X_KEYBOARD + X_SIZE_BUTTON + W_SIZE_BUTTON - 1,
Y_KEYBOARD + Y_SIZE_BUTTON + L_SIZE_BUTTON - 1);
color(BLACK);
ROM_putSizeButton(EGB_work, EGB_para, i,
X_KEYBOARD + X_SIZE_BUTTON, Y_KEYBOARD + Y_SIZE_BUTTON);
MOS_disp(1);
delay(200);
}
/* →単語登録→漢字変換 */
for (i = 2; i >= 1; --i) {
MOS_setpos(X_KEYBOARD + 224, Y_KEYBOARD + 38);
delay(50);
MOS_disp(0);
color(WHITE);
rectangle(X_KEYBOARD + X_KANJI_BUTTON,
Y_KEYBOARD + Y_KANJI_BUTTON,
X_KEYBOARD + X_KANJI_BUTTON + W_KANJI_BUTTON - 1,
Y_KEYBOARD + Y_KANJI_BUTTON + L_KANJI_BUTTON - 1);
color(BLACK);
ROM_putKanjiButton(EGB_work, EGB_para, i,
X_KEYBOARD + X_KANJI_BUTTON, Y_KEYBOARD + Y_KANJI_BUTTON);
MOS_disp(1);
delay(200);
}
/* パーツの表示 */
MOS_disp(0);
clear_screen();
ROM_putTopLine(EGB_work, EGB_para, 60, 50);
ROM_putWindow(EGB_work, EGB_para, 60, 50 + L_TOP_LINE + 16);
ROM_putKeyboard(EGB_work, EGB_para, 1,
60, 50 + L_TOP_LINE + L_WINDOW + 16 * 2);
ROM_putShadowV(EGB_work, EGB_para,
60 + W_TOP_LINE + 16, 50 + L_TOP_LINE + L_WINDOW + 16 * 2);
ROM_putShadowH(EGB_work, EGB_para,
60 + 6, 50 + L_TOP_LINE + L_WINDOW + L_KEYBOARD + 16 * 3);
ROM_putSizeButton(EGB_work, EGB_para, 1, 6, 110);
ROM_putSizeButton(EGB_work, EGB_para, 2, 30, 110);
ROM_putKanjiButton(EGB_work, EGB_para, 1,
60 + X_KANJI_BUTTON,
50 + L_TOP_LINE + L_WINDOW + L_KEYBOARD + L_SHADOW_H
+ 16 * 4);
ROM_putKanjiButton(EGB_work, EGB_para, 2,
60 + X_KANJI_BUTTON,
50 + L_TOP_LINE + L_WINDOW + L_KEYBOARD + L_SHADOW_H
+ L_KANJI_BUTTON + 16 * 5);
for (i = 0; i < 3; ++i)
ROM_putKeyboard(EGB_work, EGB_para, i + 2,
370, 50 + 135 * i);
MOS_disp(1);
}
/************************ calculator sample *************************/
void calculator_sample()
{
MOS_disp(0);
clear_screen();
ROM_putCalculator(EGB_work, EGB_para,
(640 - W_CALCULATOR) / 2, (480 - L_CALCULATOR) / 2);
MOS_disp(1);
delay(50);
}
/*************************** button sample **************************/
void button_sample()
{
int i;
MOS_disp(0);
clear_screen();
for (i = 1; i <= 8; ++i)
ROM_putButton(EGB_work, EGB_para, i,
200 + 30 *(i - 1), 200);
MOS_disp(1);
delay(50);
}
/************************* GEAR-icon sample *************************/
void GEAR_icon_sample()
{
int i, j, k;
for (i = 0; i < 2; ++i) {
MOS_disp(0);
clear_screen();
for (j = 0; j < 4; ++j) {
for (k = 0; k < 16; ++k) {
ROM_putGearIcon(EGB_work, EGB_para, 0, /* アイコン */
64 * i + j * 16 + k + 1,
48 + (W_SYS_ICON + 2) * k, 50 + 100 * j);
ROM_putGearIcon(EGB_work, EGB_para, 1, /* 背景 */
64 * i + j * 16 + k + 1,
48 + (W_SYS_ICON + 2) * k,
50 + L_SYS_ICON + 2 + 100 * j);
}
}
MOS_disp(1);
delay(50);
wait();
}
}
/*************************** sample: main ***************************/
void main()
{
EGB_init(EGB_work, EgbWorkSize);
MOS_start(MOS_work, MosWorkSize);
opening_sample();
sys_icon_sample();
wait();
background(WHITE);
color(BLACK);
software_keyboard_sample();
wait();
calculator_sample();
wait();
button_sample();
wait();
GEAR_icon_sample();
wait();
MOS_end();
}