From 0e31ff06caa6cb7a2d14089515c63a62d4189690 Mon Sep 17 00:00:00 2001 From: Yourtion Date: Fri, 20 May 2016 14:27:07 +0800 Subject: [PATCH] bug fix --- 30_day/a/Makefile | 3 + 30_day/apilib/apilib.lib | Bin 8966 -> 0 bytes 30_day/haribote/bootpack.h | 20 +++---- 30_day/haribote/console.c | 104 +++++++++++++++++------------------ 30_day/haribote/haribote.sys | Bin 33331 -> 0 bytes 30_day/haribote/ipl20.nas | 6 +- 30_day/haribote/mouse.c | 16 +++--- 30_day/haribote/mtask.c | 35 ++++++------ 30_day/haribote/tek.c | 10 ++-- 9 files changed, 98 insertions(+), 96 deletions(-) delete mode 100644 30_day/apilib/apilib.lib delete mode 100644 30_day/haribote/haribote.sys diff --git a/30_day/a/Makefile b/30_day/a/Makefile index 674a683..5539044 100644 --- a/30_day/a/Makefile +++ b/30_day/a/Makefile @@ -3,3 +3,6 @@ STACK = 1k MALLOC = 0k include ../app_make.txt + +$(APP).hrb : $(APP).org Makefile + $(COPY) $(APP).org $(APP).hrb diff --git a/30_day/apilib/apilib.lib b/30_day/apilib/apilib.lib deleted file mode 100644 index 29a8eeebd154eb753bb6d0e59a2125dff5d57df1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8966 zcmeI2&uv5w%5XY3zgzHW)jywS}zIi{^ zs~^`oyY){J*V10ed5ca-)fYK*TCxI?b?20d;e=|w_fW&6}na@=PnqsV7Bha zllH#Z`liuxcX5h4?T34frc-RR8rFkav)SI2z1`<~9n-YOXg6AxJnfiN-K{$VG#f3` zDeN}e-9hQDY27!!m6wTISd9m!{SkCHS})$E;`RZ|rK z#|@ljv<` zk{TKXJq@0(S4Kv|fTU3jLBsIt#Z#JokY1dkHm1RSlte+J&l|wuM!?oo)Fa?YdgWaq z5Jr@J91^)TiH%C^Mx_v|Uh=Q{?=)o4s((anyz1OXNffL8`Da^wa!*(bQavlP)H}#5 z_bQnc(ug!^#8=xvJ5)&zgy-*-cLjt;4X_o;1C=^a4ne2vx7mNteS+v*rZ%R-eUwB) z=hLk|d5(-{iSR5Fo)yBACOny5Gjo{`-413{)-&R#@Je)y7U@RHA0;cozPqG!{eMD< zcOXHjLX}Af!2ca!tG6Ds^wv0udn73()F@y8O#*o;b z_d>5k$H8&G?9V=eLYT<^1PVXU?+X7jr?#AXi()kkTw9nBbg=@*)j4->8D{hBcrR-3nB Wt<|Qd)cUcbwAxHvcu(R_7XJe03V>?> diff --git a/30_day/haribote/bootpack.h b/30_day/haribote/bootpack.h index bb195ff..aa970dc 100644 --- a/30_day/haribote/bootpack.h +++ b/30_day/haribote/bootpack.h @@ -88,16 +88,16 @@ struct GATE_DESCRIPTOR { void init_gdtidt(void); void set_segmdesc(struct SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, int ar); void set_gatedesc(struct GATE_DESCRIPTOR *gd, int offset, int selector, int ar); -#define ADR_IDT 0x0026f800 -#define LIMIT_IDT 0x000007ff -#define ADR_GDT 0x00270000 -#define LIMIT_GDT 0x0000ffff +#define ADR_IDT 0x0026f800 +#define LIMIT_IDT 0x000007ff +#define ADR_GDT 0x00270000 +#define LIMIT_GDT 0x0000ffff #define ADR_BOTPAK 0x00280000 #define LIMIT_BOTPAK 0x0007ffff #define AR_DATA32_RW 0x4092 #define AR_CODE32_ER 0x409a -#define AR_LDT 0x0082 -#define AR_TSS32 0x0089 +#define AR_LDT 0x0082 +#define AR_TSS32 0x0089 #define AR_INTGATE32 0x008e /* int.c */ @@ -288,10 +288,10 @@ void file_loadfile(int clustno, int size, char *buf, int *fat, char *img); struct FILEINFO *file_search(char *name, struct FILEINFO *finfo, int max); char *file_loadfile2(int clustno, int *psize, int *fat); -/* bootpack.c */ -struct TASK *open_constask(struct SHEET *sht, unsigned int memtotal); -struct SHEET *open_console(struct SHTCTL *shtctl, unsigned int memtotal); - /* tek.c */ int tek_getsize(unsigned char *p); int tek_decomp(unsigned char *p, char *q, int size); + +/* bootpack.c */ +struct TASK *open_constask(struct SHEET *sht, unsigned int memtotal); +struct SHEET *open_console(struct SHTCTL *shtctl, unsigned int memtotal); diff --git a/30_day/haribote/console.c b/30_day/haribote/console.c index 3e51686..e8c5c69 100644 --- a/30_day/haribote/console.c +++ b/30_day/haribote/console.c @@ -9,8 +9,8 @@ void console_task(struct SHEET *sheet, int memtotal) struct TASK *task = task_now(); struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR; int i, *fat = (int *) memman_alloc_4k(memman, 4 * 2880); - struct FILEHANDLE fhandle[8]; struct CONSOLE cons; + struct FILEHANDLE fhandle[8]; char cmdline[30]; unsigned char *nihongo = (char *) *((int *) 0x0fe8); @@ -133,19 +133,19 @@ void cons_putchar(struct CONSOLE *cons, int chr, char move) cons_newline(cons); } if (((cons->cur_x - 8) & 0x1f) == 0) { - break; /*被32整除则break*/ + break; /* 32�Ŋ���؂ꂽ��break */ } } - } else if (s[0] == 0x0a) { /*换行*/ + } else if (s[0] == 0x0a) { /* ���s */ cons_newline(cons); - } else if (s[0] == 0x0d) { /*回车*/ - /*先不做任何操作*/ - } else { /*一般字符*/ + } else if (s[0] == 0x0d) { /* ���A */ + /* �Ƃ肠�����Ȃɂ����Ȃ� */ + } else { /* ���ʂ̕��� */ if (cons->sht != 0) { putfonts8_asc_sht(cons->sht, cons->cur_x, cons->cur_y, COL8_FFFFFF, COL8_000000, s, 1); } if (move != 0) { - /* move为0时光标不后移*/ + /* move��0�̂Ƃ��̓J�[�\����i�߂Ȃ� */ cons->cur_x += 8; if (cons->cur_x == 8 + 240) { cons_newline(cons); @@ -161,9 +161,9 @@ void cons_newline(struct CONSOLE *cons) struct SHEET *sheet = cons->sht; struct TASK *task = task_now(); if (cons->cur_y < 28 + 112) { - cons->cur_y += 16; /*到下一行*/ + cons->cur_y += 16; /* ���̍s�� */ } else { - /*滚动*/ + /* �X�N���[�� */ if (sheet != 0) { for (y = 28; y < 28 + 112; y++) { for (x = 8; x < 8 + 240; x++) { @@ -180,7 +180,7 @@ void cons_newline(struct CONSOLE *cons) } cons->cur_x = 8; if (task->langmode == 1 && task->langbyte1 != 0) { - cons->cur_x += 8; + cons->cur_x = 16; } return; } @@ -208,7 +208,7 @@ void cons_runcmd(char *cmdline, struct CONSOLE *cons, int *fat, int memtotal) cmd_mem(cons, memtotal); } else if (strcmp(cmdline, "cls") == 0 && cons->sht != 0) { cmd_cls(cons); - } else if ((strcmp(cmdline, "dir") == 0 || strcmp(cmdline, "ls") == 0) && cons->sht != 0) { + } else if (strcmp(cmdline, "dir") == 0 && cons->sht != 0) { cmd_dir(cons); } else if (strcmp(cmdline, "exit") == 0) { cmd_exit(cons, fat); @@ -218,9 +218,9 @@ void cons_runcmd(char *cmdline, struct CONSOLE *cons, int *fat, int memtotal) cmd_ncst(cons, cmdline, memtotal); } else if (strncmp(cmdline, "langmode ", 9) == 0) { cmd_langmode(cons, cmdline); - }else if (cmdline[0] != 0) { + } else if (cmdline[0] != 0) { if (cmd_app(cons, fat, cmdline) == 0) { - /*不是命令,不是应用程序,也不是空行*/ + /* �R�}���h�ł͂Ȃ��A�A�v���ł��Ȃ��A����ɋ�s�ł��Ȃ� */ cons_putstr0(cons, "Bad command.\n\n"); } } @@ -288,9 +288,9 @@ void cmd_exit(struct CONSOLE *cons, int *fat) memman_free_4k(memman, (int) fat, 4 * 2880); io_cli(); if (cons->sht != 0) { - fifo32_put(fifo, cons->sht - shtctl->sheets0 + 768); /* 768〜1023 */ + fifo32_put(fifo, cons->sht - shtctl->sheets0 + 768); /* 768�`1023 */ } else { - fifo32_put(fifo, task - taskctl->tasks0 + 1024); /*1024~2023*/ + fifo32_put(fifo, task - taskctl->tasks0 + 1024); /* 1024�`2023 */ } io_sti(); for (;;) { @@ -306,11 +306,11 @@ void cmd_start(struct CONSOLE *cons, char *cmdline, int memtotal) int i; sheet_slide(sht, 32, 4); sheet_updown(sht, shtctl->top); - /*将命令行输入的字符串逐字复制到新的命令行窗口中*/ + /* �R�}���h���C���ɓ��͂��ꂽ��������A�ꕶ�����V�����R���\�[���ɓ��� */ for (i = 6; cmdline[i] != 0; i++) { fifo32_put(fifo, cmdline[i] + 256); } - fifo32_put(fifo, 10 + 256); /*回车键*/ + fifo32_put(fifo, 10 + 256); /* Enter */ cons_newline(cons); return; } @@ -320,12 +320,11 @@ void cmd_ncst(struct CONSOLE *cons, char *cmdline, int memtotal) struct TASK *task = open_constask(0, memtotal); struct FIFO32 *fifo = &task->fifo; int i; - - /*将命令行输入的字符串逐字复制到新的命令行窗口中*/ + /* �R�}���h���C���ɓ��͂��ꂽ��������A�ꕶ�����V�����R���\�[���ɓ��� */ for (i = 5; cmdline[i] != 0; i++) { fifo32_put(fifo, cmdline[i] + 256); } - fifo32_put(fifo, 10 + 256); /*回车键*/ + fifo32_put(fifo, 10 + 256); /* Enter */ cons_newline(cons); return; } @@ -347,26 +346,25 @@ int cmd_app(struct CONSOLE *cons, int *fat, char *cmdline) { struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR; struct FILEINFO *finfo; - struct SEGMENT_DESCRIPTOR *gdt = (struct SEGMENT_DESCRIPTOR *) ADR_GDT; char name[18], *p, *q; struct TASK *task = task_now(); int i, segsiz, datsiz, esp, dathrb, appsiz; struct SHTCTL *shtctl; struct SHEET *sht; - /*根据命令行生成文件名*/ + /* �R�}���h���C������t�@�C�����𐶐� */ for (i = 0; i < 13; i++) { if (cmdline[i] <= ' ') { break; } name[i] = cmdline[i]; } - name[i] = 0; /*暂且将文件名的后面置为0*/ + name[i] = 0; /* �Ƃ肠�����t�@�C�����̌���0�ɂ��� */ - /*寻找文件 */ + /* �t�@�C����T�� */ finfo = file_search(name, (struct FILEINFO *) (ADR_DISKIMG + 0x002600), 224); if (finfo == 0 && name[i - 1] != '.') { - /*由于找不到文件,故在文件名后面加上“.hrb”后重新寻找*/ + /* ���‚���Ȃ������̂Ō���".HRB"���‚��Ă�����x�T���Ă݂� */ name[i ] = '.'; name[i + 1] = 'H'; name[i + 2] = 'R'; @@ -376,7 +374,7 @@ int cmd_app(struct CONSOLE *cons, int *fat, char *cmdline) } if (finfo != 0) { - /*如果找到文件*/ + /* �t�@�C�������‚������ꍇ */ appsiz = finfo->size; p = file_loadfile2(finfo->clustno, &appsiz, fat); if (appsiz >= 36 && strncmp(p + 4, "Hari", 4) == 0 && *p == 0x00) { @@ -386,8 +384,8 @@ int cmd_app(struct CONSOLE *cons, int *fat, char *cmdline) dathrb = *((int *) (p + 0x0014)); q = (char *) memman_alloc_4k(memman, segsiz); task->ds_base = (int) q; - set_segmdesc(task->ldt + 0, finfo->size - 1, (int) p, AR_CODE32_ER + 0x60); - set_segmdesc(task->ldt + 1, segsiz - 1, (int) q, AR_DATA32_RW + 0x60); + set_segmdesc(task->ldt + 0, appsiz - 1, (int) p, AR_CODE32_ER + 0x60); + set_segmdesc(task->ldt + 1, segsiz - 1, (int) q, AR_DATA32_RW + 0x60); for (i = 0; i < datsiz; i++) { q[esp + i] = p[dathrb + i]; } @@ -396,11 +394,11 @@ int cmd_app(struct CONSOLE *cons, int *fat, char *cmdline) for (i = 0; i < MAX_SHEETS; i++) { sht = &(shtctl->sheets0[i]); if ((sht->flags & 0x11) == 0x11 && sht->task == task) { - /*找到被应用程序遗留的窗口*/ - sheet_free(sht); /*关闭*/ + /* �A�v�����J�����ςȂ��ɂ����������𔭌� */ + sheet_free(sht); /* �‚��� */ } } - for (i = 0; i < 8; i++) { /*将未关闭的文件关闭*/ + for (i = 0; i < 8; i++) { /* �N���[�Y���ĂȂ��t�@�C�����N���[�Y */ if (task->fhandle[i].buf != 0) { memman_free_4k(memman, (int) task->fhandle[i].buf, task->fhandle[i].size); task->fhandle[i].buf = 0; @@ -416,7 +414,7 @@ int cmd_app(struct CONSOLE *cons, int *fat, char *cmdline) cons_newline(cons); return 1; } - /*没有找到文件的情况*/ + /* �t�@�C�������‚���Ȃ������ꍇ */ return 0; } @@ -428,8 +426,8 @@ int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int struct SHTCTL *shtctl = (struct SHTCTL *) *((int *) 0x0fe4); struct SHEET *sht; struct FIFO32 *sys_fifo = (struct FIFO32 *) *((int *) 0x0fec); - int *reg = &eax + 1; /* eax后面的地址*/ - /*强行改写通过PUSHAD保存的值*/ + int *reg = &eax + 1; /* eax�̎��̔Ԓn */ + /* �ۑ��̂��߂�PUSHAD�������ɏ��������� */ /* reg[0] : EDI, reg[1] : ESI, reg[2] : EBP, reg[3] : ESP */ /* reg[4] : EBX, reg[5] : EDX, reg[6] : ECX, reg[7] : EAX */ int i; @@ -452,7 +450,7 @@ int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int sheet_setbuf(sht, (char *) ebx + ds_base, esi, edi, eax); make_window8((char *) ebx + ds_base, esi, edi, (char *) ecx + ds_base, 0); sheet_slide(sht, ((shtctl->xsize - esi) / 2) & ~3, (shtctl->ysize - edi) / 2); - sheet_updown(sht, shtctl->top); /*将窗口图层高度指定为当前鼠标所在图层的高度,鼠标移到上层*/ + sheet_updown(sht, shtctl->top); /* ���̃}�E�X�Ɠ��������ɂȂ�悤�Ɏw��F �}�E�X�͂��̏�ɂȂ� */ reg[7] = (int) sht; } else if (edx == 6) { sht = (struct SHEET *) (ebx & 0xfffffffe); @@ -468,13 +466,13 @@ int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int } } else if (edx == 8) { memman_init((struct MEMMAN *) (ebx + ds_base)); - ecx &= 0xfffffff0; /*以16字节为单位*/ + ecx &= 0xfffffff0; /* 16�o�C�g�P�ʂ� */ memman_free((struct MEMMAN *) (ebx + ds_base), eax, ecx); } else if (edx == 9) { - ecx = (ecx + 0x0f) & 0xfffffff0; /*以16字节为单位进位取整*/ + ecx = (ecx + 0x0f) & 0xfffffff0; /* 16�o�C�g�P�ʂɐ؂�グ */ reg[7] = memman_alloc((struct MEMMAN *) (ebx + ds_base), ecx); } else if (edx == 10) { - ecx = (ecx + 0x0f) & 0xfffffff0; /*以16字节为单位进位取整*/ + ecx = (ecx + 0x0f) & 0xfffffff0; /* 16�o�C�g�P�ʂɐ؂�グ */ memman_free((struct MEMMAN *) (ebx + ds_base), eax, ecx); } else if (edx == 11) { sht = (struct SHEET *) (ebx & 0xfffffffe); @@ -508,7 +506,7 @@ int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int io_cli(); if (fifo32_status(&task->fifo) == 0) { if (eax != 0) { - task_sleep(task); /* FIFO为空,休眠并等待*/ + task_sleep(task); /* FIFO����Ȃ̂ŐQ�đ҂� */ } else { io_sti(); reg[7] = -1; @@ -517,32 +515,32 @@ int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int } i = fifo32_get(&task->fifo); io_sti(); - if (i <= 1) { /*光标用定时器*/ - /*应用程序运行时不需要显示光标,因此总是将下次显示用的值置为1*/ - timer_init(cons->timer, &task->fifo, 1); /*下次置为1*/ + if (i <= 1 && cons->sht != 0) { /* �J�[�\���p�^�C�} */ + /* �A�v�����s���̓J�[�\�����o�Ȃ��̂ŁA���‚����͕\���p��1�𒍕����Ă��� */ + timer_init(cons->timer, &task->fifo, 1); /* ����1�� */ timer_settime(cons->timer, 50); } - if (i == 2) { /*光标ON */ + if (i == 2) { /* �J�[�\��ON */ cons->cur_c = COL8_FFFFFF; } - if (i == 3) { /*光标OFF */ + if (i == 3) { /* �J�[�\��OFF */ cons->cur_c = -1; } - if (i == 4) { /*只关闭命令行窗口*/ + if (i == 4) { /* �R���\�[��������‚��� */ timer_cancel(cons->timer); io_cli(); - fifo32_put(sys_fifo, cons->sht - shtctl->sheets0 + 2024); /*2024~2279*/ + fifo32_put(sys_fifo, cons->sht - shtctl->sheets0 + 2024); /* 2024�`2279 */ cons->sht = 0; io_sti(); } - if (i >= 256) { /*键盘数据(通过任务A)等*/ + if (i >= 256) { /* �L�[�{�[�h�f�[�^�i�^�X�NA�o�R�j�Ȃ� */ reg[7] = i - 256; return 0; } } } else if (edx == 16) { reg[7] = (int) timer_alloc(); - ((struct TIMER *) reg[7])->flags2 = 1; /*允许自动取消*/ + ((struct TIMER *) reg[7])->flags2 = 1; /* �����L�����Z���L�� */ } else if (edx == 17) { timer_init((struct TIMER *) ebx, &task->fifo, eax + 256); } else if (edx == 18) { @@ -570,13 +568,13 @@ int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int fh = &task->fhandle[i]; reg[7] = 0; if (i < 8) { - finfo = file_search((char *) ebx + ds_base, (struct FILEINFO *) (ADR_DISKIMG + 0x002600), 224); + finfo = file_search((char *) ebx + ds_base, + (struct FILEINFO *) (ADR_DISKIMG + 0x002600), 224); if (finfo != 0) { reg[7] = (int) fh; - fh->buf = (char *) memman_alloc_4k(memman, finfo->size); fh->size = finfo->size; fh->pos = 0; - file_loadfile2(finfo->clustno, &fh->size, task->fat); + fh->buf = file_loadfile2(finfo->clustno, &fh->size, task->fat); } } } else if (edx == 22) { @@ -644,7 +642,7 @@ int *inthandler0c(int *esp) cons_putstr0(cons, "\nINT 0C :\n Stack Exception.\n"); sprintf(s, "EIP = %08X\n", esp[11]); cons_putstr0(cons, s); - return &(task->tss.esp0); /*强制结束程序*/ + return &(task->tss.esp0); /* �ُ�I�������� */ } int *inthandler0d(int *esp) @@ -655,7 +653,7 @@ int *inthandler0d(int *esp) cons_putstr0(cons, "\nINT 0D :\n General Protected Exception.\n"); sprintf(s, "EIP = %08X\n", esp[11]); cons_putstr0(cons, s); - return &(task->tss.esp0); /*强制结束程序*/ + return &(task->tss.esp0); /* �ُ�I�������� */ } void hrb_api_linewin(struct SHEET *sht, int x0, int y0, int x1, int y1, int col) diff --git a/30_day/haribote/haribote.sys b/30_day/haribote/haribote.sys deleted file mode 100644 index e098d2b2dc72ce95ff296ef38e8f320f59a0abbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33331 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 = 0; /* 等待鼠标的0xfa的阶段*/ -return; + return; } int mouse_decode(struct MOUSE_DEC *mdec, unsigned char dat) @@ -40,13 +40,15 @@ int mouse_decode(struct MOUSE_DEC *mdec, unsigned char dat) /* 等待鼠标的0xfa的阶段 */ if (dat == 0xfa) { mdec->phase = 1; - } + } return 0; } if (mdec->phase == 1) { /* 等待鼠标第一字节的阶段 */ - mdec->buf[0] = dat; - mdec->phase = 2; + if ((dat & 0xc8) == 0x08) { + mdec->buf[0] = dat; + mdec->phase = 2; + } return 0; } if (mdec->phase == 2) { @@ -67,7 +69,7 @@ int mouse_decode(struct MOUSE_DEC *mdec, unsigned char dat) } if ((mdec->buf[0] & 0x20) != 0) { mdec->y |= 0xffffff00; - } + } mdec->y = - mdec->y; /* 鼠标的y方向与画面符号相反 */ return 1; } diff --git a/30_day/haribote/mtask.c b/30_day/haribote/mtask.c index f67b935..14bb46e 100644 --- a/30_day/haribote/mtask.c +++ b/30_day/haribote/mtask.c @@ -1,4 +1,4 @@ -/* 多任务管理 */ +/* �}���`�^�X�N�֌W */ #include "bootpack.h" @@ -16,7 +16,7 @@ void task_add(struct TASK *task) struct TASKLEVEL *tl = &taskctl->level[task->level]; tl->tasks[tl->running] = task; tl->running++; - task->flags = 2; /*活动中*/ + task->flags = 2; /* ���쒆 */ return; } @@ -25,38 +25,39 @@ void task_remove(struct TASK *task) int i; struct TASKLEVEL *tl = &taskctl->level[task->level]; - /*寻找task所在的位置*/ + /* task���ǂ��ɂ��邩��T�� */ for (i = 0; i < tl->running; i++) { if (tl->tasks[i] == task) { - /*在这里 */ + /* �����ɂ��� */ break; } } tl->running--; if (i < tl->now) { - tl->now--; /*需要移动成员,要相应地处理 */ + tl->now--; /* �����̂ŁA��������킹�Ă��� */ } if (tl->now >= tl->running) { - /*如果now的值出现异常,则进行修正*/ + /* now���������Ȓl�ɂȂ��Ă�����A�C������ */ tl->now = 0; } - task->flags = 1; /* 休眠中 */ + task->flags = 1; /* �X���[�v�� */ - /* 移动 */ + /* ���炵 */ for (; i < tl->running; i++) { tl->tasks[i] = tl->tasks[i + 1]; } + return; } void task_switchsub(void) { int i; - /*寻找最上层的LEVEL */ + /* ��ԏ�̃��x����T�� */ for (i = 0; i < MAX_TASKLEVELS; i++) { if (taskctl->level[i].running > 0) { - break; /*找到了*/ + break; /* ���‚����� */ } } taskctl->now_lv = i; @@ -77,7 +78,6 @@ struct TASK *task_init(struct MEMMAN *memman) struct TASK *task, *idle; struct SEGMENT_DESCRIPTOR *gdt = (struct SEGMENT_DESCRIPTOR *) ADR_GDT; - taskctl = (struct TASKCTL *) memman_alloc_4k(memman, sizeof (struct TASKCTL)); for (i = 0; i < MAX_TASKS; i++) { taskctl->tasks0[i].flags = 0; @@ -92,11 +92,11 @@ struct TASK *task_init(struct MEMMAN *memman) } task = task_alloc(); - task->flags = 2; /*活动中标志*/ - task->priority = 2; /* 0.02秒*/ - task->level = 0; /*最高LEVEL */ + task->flags = 2; /* ���쒆�}�[�N */ + task->priority = 2; /* 0.02�b */ + task->level = 0; /* �ō����x�� */ task_add(task); - task_switchsub(); /* LEVEL 设置*/ + task_switchsub(); /* ���x���ݒ� */ load_tr(task->sel); task_timer = timer_alloc(); timer_settime(task_timer, task->priority); @@ -151,7 +151,8 @@ void task_run(struct TASK *task, int level, int priority) if (priority > 0) { task->priority = priority; } - if (task->flags == 2 && task->level != level) { + + if (task->flags == 2 && task->level != level) { /*改变活动中的LEVEL */ task_remove(task); /*这里执行之后flag的值会变为1,于是下面的if语句块也会被执行*/ } @@ -160,6 +161,7 @@ void task_run(struct TASK *task, int level, int priority) task->level = level; task_add(task); } + taskctl->lv_change = 1; /*下次任务切换时检查LEVEL */ return; } @@ -181,7 +183,6 @@ void task_sleep(struct TASK *task) return; } - void task_switch(void) { struct TASKLEVEL *tl = &taskctl->level[taskctl->now_lv]; diff --git a/30_day/haribote/tek.c b/30_day/haribote/tek.c index 4062dcc..a765a64 100644 --- a/30_day/haribote/tek.c +++ b/30_day/haribote/tek.c @@ -231,7 +231,7 @@ static int tek_decode2(int siz, UCHAR *p, UCHAR *q) if (dsiz > bsiz || (hed & 0x21) != 0x01) return 1; if (hed & 0x40) - tek_getnum_s7s(&p); + tek_getnum_s7s(&p); /* �I�v�V�������ւ̃|�C���^��ǂݔ�΂� */ st = tek_lzrestore_stk2(p1 - p, p, dsiz, q); } return st; @@ -278,7 +278,7 @@ static int tek_lzrestore_tek5(int srcsiz, UCHAR *src, int outsiz, UCHAR *outbuf) lp = pb; pb = wrksiz; } - wrksiz = 0x180 * sizeof (UINT32) + (0x840 + (0x300 << (lc + lp))) * sizeof (tek_TPRB); /* Å’á15KB, lc+lp=3‚È‚çA36KB */ + wrksiz = 0x180 * sizeof (UINT32) + (0x840 + (0x300 << (lc + lp))) * sizeof (tek_TPRB); /* �Œ�15KB, lc+lp=3�Ȃ�A36KB */ work = (int *) memman_alloc_4k((struct MEMMAN *) MEMMAN_ADDR, wrksiz); if (work == NULL) return -1; @@ -457,7 +457,7 @@ static int tek_decmain5(int *work, UCHAR *src, int osiz, UCHAR *q, int lc, int p for (i = sizeof (struct tek_STR_PRB) / sizeof (tek_TPRB) + (0x300 << (lc + lp)) - 2; i >= 0; i--) ((tek_TPRB *) prb)[i] = 1 << 15; for (i = 0; i < 32; i++) { - rd->bm[i].lt = (i >= 4); + rd->bm[i].lt = (i >= 4); /* 0..3�͎����Ȃ� */ rd->bm[i].lt0 = (i < 24) ? 16 * 1024 : 8 * 1024; rd->bm[i].s &= 0; rd->bm[i].t = rd->bm[i].m = 5; @@ -466,7 +466,7 @@ static int tek_decmain5(int *work, UCHAR *src, int osiz, UCHAR *q, int lc, int p if (stk) { rd->rmsk = -1 << 11; for (i = 0; i < 32; i++) - rd->bm[i].lt = 0; + rd->bm[i].lt = 0; /* �S�Ď����Ȃ� */ for (i = 0; i < 14; i++) rd->ptbm[i] = &rd->bm[0]; } else { @@ -493,7 +493,7 @@ static int tek_decmain5(int *work, UCHAR *src, int osiz, UCHAR *q, int lc, int p rd->bm[22].t = 0; rd->bm[22].m = 1; prb->repg3 = 0xffff; if (flags == -2) { /* z1 */ - rd->bm[22].lt = 0; + rd->bm[22].lt = 0; /* repg3��lt��0�� */ for (i = 0; i < 14; i++) pt[i] = pt1[i]; } else {