- 履歴一覧
- ソース を表示
- ほげ は削除されています。
- 1 (2007-01-08 (月) 14:05:24)
void fdc_task(void)
{
int i;//, j, k, moterman = 0;
struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;
unsigned int *p = (unsigned int *) (binfo->vram);
/* FDCの初期化 */
io_out8(0x00d6, 0xc0); /* マスタのch0をカスケードモードに */
io_out8(0x00c0, 0x00); /* スレーブのDMAを許可 */
io_out8(0x000a, 0x06); /* マスタのch2のDMAをマスク */
for (;;) {
io_cli();
if (fifo32_status(&task_fdc->fifo) == 0) {
task_sleep(task_fdc);
io_sti();
} else {
i = fifo32_get(&task_fdc->fifo);
io_sti();
if (i == 1) {
/* データリード */
putfonts(p, binfo->scrnx, 0, 0, 0xffffff, "1");
while((io_in8(0x03f4) & 0x11) != 0); // 0になるまで待つ
for (;;) {
/* 送信アタタタタタ!!! */
if (fifo32_status(&task_fdc->fifo) == 0) {
break;
}
while((io_in8(0x03f4) & 0xc0) != 0x80);
io_out8(0x03f5, fifo32_get(&task_fdc->fifo));
}
}
if (i == 2) {
/* データリード */
}
if (i == 3) {
putfonts(p, binfo->scrnx, 0, 0, 0xffffff, "3");
io_out8(0x000a, 0x06); /* マスタのch2のDMAをマスク */
}
}
}
}