void HariMain(void) { int fh; char c, cmdline[80], *p; api_cmdline(cmdline, 80); for (p = cmdline; *p != ' '; p++) ; /* 跳过第一个参数 */ for (; *p == ' '; p++) ; /* 跳过空格 */ fh = api_fopen(p); if (fh != 0) { for (;;) { if (api_fread(&c, 1, fh) == 0) { break; } api_putchar(c); } } else { char s[40]; p[16] = 0; sprintf(s, "File '%s' not found.\n", p); api_putstr0(s); } api_end(); }
void HariMain(void) { static char s[9] = { 0xb2, 0xdb, 0xca, 0xc6, 0xce, 0xcd, 0xc4, 0x0a, 0x00 }; /*半角片假名イロハニホヘト的字符编码+换行+0 */ api_putstr0(s); api_end(); }
void HariMain(void) { int i; char s[30], *p; api_cmdline(s, 30); for (p = s; *p > ' '; p++) { } /* スペースが来るまで読み飛ばす */ i = getnum(&p, 9); if (i == INVALID) { api_putstr0("error!\n"); } else { sprintf(s, "= %d = 0x%x\n", i, i); api_putstr0(s); } api_end(); }
void HariMain(void) { api_putstr0("Hello, world!\n"); api_end(); }
void HariMain(void) { int file = api_fopen("license.txt"); int size = api_fsize(file /* handle */, 0 /* mode */); char* buff = (char *) api_malloc(size + 1); api_fread(buff, size, file); buff[size] = '\0'; api_putstr0(buff); api_fclose(file); api_free(buff); api_end(); }
void HariMain(void) { FileDescriptor *fd; char* path = "/TESFILE"; char src[16]; char *result; if(0 != api_crate(path)) { api_putstr0("create error"); api_end(); } if((fd =(FileDescriptor*)api_open(path,FD_MODE_READ_WRITE))== NULL){ api_putstr0("open error"); api_end(); } strcpy(src,"writing"); if(0 != api_write(fd,16,src)){ api_putstr0("write error"); api_end(); } if(0 != api_read(fd,16,result)){ api_putstr0("read error"); api_end(); } api_putstr0(result); if(0 != api_close(fd)) api_putstr0("create error"); api_end(); }
void HariMain(void) { int langmode = api_getlang(); static char s1[23] = { /* 일본어 쉬프트 JIS 모드 */ 0x93, 0xfa, 0x96, 0x7b, 0x8c, 0xea, 0x83, 0x56, 0x83, 0x74, 0x83, 0x67, 0x4a, 0x49, 0x53, 0x83, 0x82, 0x81, 0x5b, 0x83, 0x68, 0x0a, 0x00 }; static char s2[17] = { /* 일본어 EUC 모드 */ 0xc6, 0xfc, 0xcb, 0xdc, 0xb8, 0xec, 0x45, 0x55, 0x43, 0xa5, 0xe2, 0xa1, 0xbc, 0xa5, 0xc9, 0x0a, 0x00 }; if (langmode == 0) { api_putstr0("English ASCII mode\n"); } if (langmode == 1) { api_putstr0(s1); } if (langmode == 2) { api_putstr0(s2); } api_end(); }
int printf(const char* format, ...) { static char str[128]; memset(str, 0, sizeof(str)); va_list args; va_start(args, format); int length = vsprintf(str, format, args); va_end(args); if(length > (int) sizeof(str)) { str[sizeof(str) - 1] = 0; } api_putstr0(str); return length; }
void HariMain(void) { char flag[MAX], s[8]; int i, j; for (i = 0; i < MAX; i++) { flag[i] = 0; } for (i = 2; i < MAX; i++) { if (flag[i] == 0) { sprintf(s, "%d ", i); api_putstr0(s); for (j = i * 2; j < MAX; j += i) { flag[j] = 1; } } } api_end(); }
void HariMain(void) { char flag[MAX], s[8]; int i, j; for (i = 0; i < MAX; i++) { flag[i] = 0; } for (i = 2; i < MAX; i++) { if (flag[i] == 0) { /* 印がついていないので素数だ! */ sprintf(s, "%d ", i); api_putstr0(s); for (j = i * 2; j < MAX; j += i) { flag[j] = 1; /* 倍数には印をつける */ } } } api_end(); }
void HariMain(void) { char flag[MAX], s[8]; int i, j; for (i = 0; i < MAX; i++) { flag[i] = 0; } for (i = 2; i < MAX; i++) { if (flag[i] == 0) { /* 플래그가 세트되어 있지 않기 때문에 소수다! */ sprintf(s, "%d ", i); api_putstr0(s); for (j = i * 2; j < MAX; j += i) { flag[j] = 1; /* 배수에는 플래그를 세트한다 */ } } } api_end(); }
void HariMain(void) { int fh; char c, cmdline[30], *p; api_cmdline(cmdline, 30); for (p = cmdline; *p > ' '; p++) { } for (; *p == ' '; p++) { } fh = api_fopen(p); if (fh != 0) { for (;;) { if (api_fread(&c, 1, fh) == 0) { break; } api_putchar(c); } } else { api_putstr0("File not found.\n"); } api_end(); }
void HariMain() { char buf[WND_X * WND_Y * osak_getbuflen()]; char cmdline[30], *p = 0; struct CSV_INFO csvinfo; int sig, cx, cy, basex, basey, i, mode; int *p_com1, *p_com2; char c; /* CSVデータの初期化 */ p_com2 = &csvinfo.comma[MAX_COMMA_Y - 1][MAX_COMMA_X - 1]; for (p_com1 = &csvinfo.comma[0][0]; p_com1 <= p_com2; p_com1++) *p_com1 = -1; csvinfo.max_x = csvinfo.max_y = csvinfo.filesize = 0; /* コマンドライン取得 */ api_cmdline(cmdline, 30); for (p = cmdline; *p > ' '; p++); /* スペースが来るまで読み飛ばす */ for (; *p == ' '; p++); /* スペースを読み飛ばす */ i = api_fopen(p); if (i == 0) { api_putstr0("File not found.\n"); api_end(); } csvinfo.filesize = api_fsize(i, 0); if (csvinfo.filesize >= MAX_FILESIZ - 1) { /* 読めない */ api_putstr0("Filesize is too big.\n"); api_end(); } api_fread(csvinfo.buf, csvinfo.filesize, i); api_fclose(i); p = csvinfo.buf; i = cx = cy = mode = 0; if (*p != ',') csvinfo.comma[0][0] = 0; while (i < csvinfo.filesize) { c = csvinfo.buf[i++]; if (c == 0x22) { if (i == 1 || mode == 0) { mode++; continue; } if (mode && (csvinfo.buf[i] == ',' || csvinfo.buf[i] == 0x0a || csvinfo.buf[i] == 0x0d)) mode--; } if (mode == 0 && c == ',') { cx++; // 「,,」「,\n」のように、セルに何もない状態ではない if (csvinfo.buf[i] != ',' && csvinfo.buf[i] != 0x0a && csvinfo.buf[i] != 0x0d) csvinfo.comma[cy][cx] = i; // コンマの次の文字の場所が記録される } /* 改行コード */ if ((c == 0x0d /* CR */ && csvinfo.buf[i] == 0x0a /* LF */) || (c == 0x0a /* LF */ && csvinfo.buf[i] == 0x0d /* CR */)) { if (i < csvinfo.filesize) { if (csvinfo.max_x < cx) csvinfo.max_x = cx; cy++; cx = 0; i++; if (i >= csvinfo.filesize) break; csvinfo.max_y++; if (csvinfo.buf[i] != ',' && csvinfo.buf[i] != 0x0a && csvinfo.buf[i] != 0x0d) csvinfo.comma[cy][cx] = i; // コンマの次の文字の場所が記録される if (csvinfo.buf[i] == 0x22) mode++; } } } csvinfo.max_x++; csvinfo.max_y++; win = api_openwin(buf, WND_X, WND_Y, -1, "CSV-Viewer"); api_boxfilwin(win, 6, 26+16, GBOX_X+6, GBOX_Y+26+16, 7); /* ワークシート作成 */ for (i = 0; i <= GBOX_X; i += CELLSIZ_X) api_linewin(win, i + 6, 42, i + 6, GBOX_Y + 42, 15); for (i = 0; i <= GBOX_Y; i += CELLSIZ_Y) api_linewin(win, 6, i + 42, GBOX_X + 6, i + 42, 15); /* CSVデータ表示 */ cx = cy = basex = basey = 1; PutCell(1, 1, &csvinfo); my_drawboxId(4, cx, cy); Putcellinfo(basex+cx-2, basey+cy-2, &csvinfo); /* メインループ */ for (;;) { sig = api_getkey(1); if (sig == 0xb4) { /* left */ if (1 < cx) { my_drawboxId(15, cx, cy); cx--; sig = 0; } else if (1 < basex) { basex--; PutCell(basex, basey, &csvinfo); sig = 0; } } if (sig == 0xb6) { /* rigth */ if (cx < maxell_x-1) { my_drawboxId(15, cx, cy); cx++; sig = 0; } else if (basex+cx < MAX_COMMA_X) { basex++; PutCell(basex, basey, &csvinfo); sig = 0; } } if (sig == 0xb8) { /* up */ if (cy > 1) { my_drawboxId(15, cx, cy); cy--; sig = 0; } else if (1 < basey) { basey--; PutCell(basex, basey, &csvinfo); sig = 0; } } if (sig == 0xb2) { /* down */ if (cy < maxell_y-1) { my_drawboxId(15, cx, cy); cy++; sig = 0; } else if (basey+cy < MAX_COMMA_Y) { basey++; PutCell(basex, basey, &csvinfo); sig = 0; } } if (sig == 0xb9) { /* Page Up */ if (basey > 1) { basey -= maxell_y - 1; if (basey < 1) { my_drawboxId(15, cx, cy); basey = cy = 1; } PutCell(basex, basey, &csvinfo); sig = 0; } } if (sig == 0xb3) { /* Page Down */ if (basey <= MAX_COMMA_Y - maxell_y) { basey += maxell_y - 1; if (basey > MAX_COMMA_Y - maxell_y) { my_drawboxId(15, cx, cy); basey = MAX_COMMA_Y - maxell_y + 1; cy = maxell_y - 1; } PutCell(basex, basey, &csvinfo); sig = 0; } } if (sig == 0) { my_drawboxId(4, cx, cy); Putcellinfo(basex+cx-2, basey+cy-2, &csvinfo); } } }
void HariMain(void) { char winbuf[1024 * 757], txtbuf[240 * 1024]; int w = 30, h = 10, t = 4, spd_x = 1, spd_y = 1; int win, i, j, lang = api_getlang(), xskip = 0; char s[30], *p, *q = 0, *r = 0; /* 커맨드 라인 해석 */ api_cmdline(s, 30); for (p = s; *p > ' '; p++) { } /* 스페이스가 올 때까지 건너 뛴다 */ for (; *p != 0; ) { p = skipspace(p); if (*p == '-') { if (p[1] == 'w') { w = strtol(p + 2, &p, 0); if (w < 20) { w = 20; } if (w > 126) { w = 126; } } else if (p[1] == 'h') { h = strtol(p + 2, &p, 0); if (h < 1) { h = 1; } if (h > 45) { h = 45; } } else if (p[1] == 't') { t = strtol(p + 2, &p, 0); if (t < 1) { t = 4; } } else { err: api_putstr0(" >tview file [-w30 -h10 -t4]\n"); api_end(); } } else { /* 파일명 발견 */ if (q != 0) { goto err; } q = p; for (; *p > ' '; p++) { } /* 스페이스가 올 때까지 건너 뛴다 */ r = p; } } if (q == 0) { goto err; } /* 윈도우의 준비 */ win = api_openwin(winbuf, w * 8 + 16, h * 16 + 37, -1, "tview"); api_boxfilwin(win, 6, 27, w * 8 + 9, h * 16 + 30, 7); /* 파일 read */ *r = 0; i = api_fopen(q); if (i == 0) { api_putstr0("file open error.\n"); api_end(); } j = api_fsize(i, 0); if (j >= 240 * 1024 - 1) { j = 240 * 1024 - 2; } txtbuf[0] = 0x0a; /* sentinel용의 개행 코드 */ api_fread(txtbuf + 1, j, i); api_fclose(i); txtbuf[j + 1] = 0; q = txtbuf + 1; for (p = txtbuf + 1; *p != 0; p++) { /* 처리를 간단하게 하기 위해서 0x0d의 코드를 지운다 */ if (*p != 0x0d) { *q = *p; q++; } } *q = 0; /* 메인 */ p = txtbuf + 1; for (;;) { textview(win, w, h, xskip, p, t, lang); i = api_getkey(1); if (i == 'Q' || i == 'q') { api_end(); } if ('A' <= i && i <= 'F') { spd_x = 1 << (i - 'A'); /* 1, 2, 4, 8, 16, 32 */ } if ('a' <= i && i <= 'f') { spd_y = 1 << (i - 'a'); /* 1, 2, 4, 8, 16, 32 */ } if (i == '<' && t > 1) { t /= 2; } if (i == '>' && t < 256) { t *= 2; } if (i == '4') { for (;;) { xskip -= spd_x; if (xskip < 0) { xskip = 0; } if (api_getkey(0) != '4') { /* '4'를 누르지 않으면 처리 끝 */ break; } } } if (i == '6') { for (;;) { xskip += spd_x; if (api_getkey(0) != '6') { break; } } } if (i == '8') { for (;;) { for (j = 0; j < spd_y; j++) { if (p == txtbuf + 1) { break; } for (p--; p[-1] != 0x0a; p--) { } /* 한 문자 전에 0x0a가 나올 때까지 거슬러 올라간다 */ } if (api_getkey(0) != '8') { break; } } } if (i == '2') { for (;;) { for (j = 0; j < spd_y; j++) { for (q = p; *q != 0 && *q != 0x0a; q++) { } if (*q == 0) { break; } p = q + 1; } if (api_getkey(0) != '2') { break; } } } } }
void error(char *s) { api_putstr0(s); api_end(); }