雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
3: 2007-01-31 (水) 12:29:32 ソース バックアップ No.3 を復元して編集 現: 2024-01-06 (土) 22:39:09 ソース 編集
Line 7: Line 7:
               :                :
    task_a->langmode = 0;     task_a->langmode = 0;
 + 
    /*fdタスク実験部*/     /*fdタスク実験部*/
    task_fdctl  = task_alloc();     task_fdctl  = task_alloc();
Line 20: Line 20:
    task_run(task_fdctl,2,2);     task_run(task_fdctl,2,2);
       /*=============================*/        /*=============================*/
 + 
    /* sht_back */     /* sht_back */
    sht_back  = sheet_alloc(shtctl);     sht_back  = sheet_alloc(shtctl);
Line 28: Line 28:
 void task_fdctl_main(){  void task_fdctl_main(){
 + 
  struct TIMER *timer;   struct TIMER *timer;
  struct TASK *task = task_now();   struct TASK *task = task_now();
  int i=0,fifost,fifobuf[128];   int i=0,fifost,fifobuf[128];
  char s[60];   char s[60];
 + 
  fifo32_init(&task->fifo,128,fifobuf,task);   fifo32_init(&task->fifo,128,fifobuf,task);
  timer = timer_alloc();   timer = timer_alloc();
  timer_init(timer,&task->fifo,1);   timer_init(timer,&task->fifo,1);
  timer_settime(timer,100);   timer_settime(timer,100);
 + 
  struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;   struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
 + 
     for(;;){      for(;;){
 + 
    io_cli();     io_cli();
       if (fifo32_status(&task->fifo) == 0){        if (fifo32_status(&task->fifo) == 0){
         task_sleep(task);          task_sleep(task);
         io_sti();          io_sti();
 + 
           sprintf(s, "ST %d",fifo32_status(&task->fifo));            sprintf(s, "ST %d",fifo32_status(&task->fifo));
           boxfill8(binfo->vram, binfo->scrnx, COL8_008484, 0, 16*3, 63, 31);            boxfill8(binfo->vram, binfo->scrnx, COL8_008484, 0, 16*3, 63, 31);
           putfonts8_asc(binfo->vram, binfo->scrnx, 0, 16*3, COL8_FF00FF, s);            putfonts8_asc(binfo->vram, binfo->scrnx, 0, 16*3, COL8_FF00FF, s);
- +  
 + 
       }        }
       else {        else {
         fifost = fifo32_get(&task->fifo);          fifost = fifo32_get(&task->fifo);
 + 
         io_sti();          io_sti();
         if (fifost = 1){          if (fifost = 1){
Line 64: Line 64:
           timer_settime(timer,100);            timer_settime(timer,100);
         }          }
 + 
         if (fifost >= 2){          if (fifost >= 2){
           sprintf(s, "Other! %d",fifost);            sprintf(s, "Other! %d",fifost);
           boxfill8(binfo->vram, binfo->scrnx, COL8_008484, 0, 16*16, 63, 31);            boxfill8(binfo->vram, binfo->scrnx, COL8_008484, 0, 16*16, 63, 31);
           putfonts8_asc(binfo->vram, binfo->scrnx, 0, 16*16, COL8_FF00FF, s);            putfonts8_asc(binfo->vram, binfo->scrnx, 0, 16*16, COL8_FF00FF, s);
- +  
 + 
         }          }
      }       }
Line 87: Line 87:
 /*FDの実験2*/  /*FDの実験2*/
 void cmd_fd2(struct CONSOLE *cons){  void cmd_fd2(struct CONSOLE *cons){
 + 
  int i;   int i;
  for (i=0; i>100;i++){   for (i=0; i>100;i++){
     fifo32_put(&task_fdctl->fifo,22);      fifo32_put(&task_fdctl->fifo,22);
  }   }
 + 
  return;   return;
 }  }
Line 113: Line 113:
-そこで、以前にあっきーさんから聞いた、「ファンクションキー」に命令を割り当ててみることにしよう。(これなら、task_a内でFIFO送信が完了するはず。) -そこで、以前にあっきーさんから聞いた、「ファンクションキー」に命令を割り当ててみることにしよう。(これなら、task_a内でFIFO送信が完了するはず。)
-これでもしうまくいったなら、やはり予想通りの不具合ということになる。 -これでもしうまくいったなら、やはり予想通りの不具合ということになる。
 +
 +
 +
 +
 +-う〜〜〜〜〜〜ん??? おっかしい。こんどは固まってしまうぞ???
 +-まず最初、bootpac.cにこんなコードを追加してみた。
 +
 +                               :
 +  task_run(task, -1, 0); /* 終了処理を確実にやらせるために、寝ていたら起こす */
 +  }
 +  }
 +     /*fd実験*/
 +     if (i == 256 + 0x3e){
 +       fifo32_put(&task_fdctl->fifo,3);
 +     }
 + 
 +     if (i == 256 + 0x3c && key_shift != 0) { /* Shift+F2 */
 +                                 :
 +
 +-これで、task_fdctl内のFIFOに3が送信されるはず。そうすればなんらかの反応があるはずなのだが、なんと固まってしまう・・・・
 +
 +-内部を抜いたり等したが、どうしても固まってしまうなぁ。念のため、ここbootpac.c内の&task_fdctl-fifoの値とtask_fdctl内での&fifoの値を比較してみたが、やっぱり同じだ・・・。なんだろう?これ???