《作業系統30天》 合川秀實 學習日誌day7

2021-09-09 06:38:39 字數 2839 閱讀 3884

增加變數:

struct keybuf;
struct keybuf ;

void inthandler21(int *esp)

return;

}

for (;;)  else 

io_sti();

sprintf(s, "%02x", i);

boxfill8(binfo->vram, binfo->scrnx, col8_008484, 0, 16, 15, 31);

putfonts8_asc(binfo->vram, binfo->scrnx, 0, 16, col8_ffffff, s);

}

for迴圈所做的工作就是往前一位。

結構體:

struct fifo8
緩衝區的總位元組數儲存在變數size裡面,free變數儲存緩衝區裡沒有資料的位元組數(初始化為size),緩衝區的位址儲存在buf中,p代表下乙個寫入資料的位置,q代表下乙個資料讀出位置,flag判斷是否溢位0表示沒有溢位。下面是初始化:

往緩衝區傳輸資料,先判斷是否有空餘資料,如果有資料則存入p位置,p再++,判斷是否達到size,如果是則置0,此時free--,表示空餘的少1。這裡對溢位的處理是函式返回-1:類似i=fifo8_put(fifo,data)的用法,用flag來記錄是否溢位,溢位flag=-1。

int fifo8_put(struct fifo8 *fifo, unsigned char data)

/* 向fifo傳送資料並儲存起來 */

fifo->buf[fifo->p] = data;

fifo->p++;

if (fifo->p == fifo->size)

fifo->free--;

return 0;

}int fifo8_get(struct fifo8 *fifo)函式是從緩衝區取出乙個位元組的函式。

返回緩衝區中有多少資料(緩衝區狀態):

int fifo8_status(struct fifo8 *fifo)

中斷處理最後的結果:

void inthandler21(int *esp)

緩衝區的改善可以精簡優化主函式的程式段:

fifo8_init(&keyfifo, 32, keybuf);

for (;;) else

}

#define port_keydat				0x0060

#define port_keysta 0x0064

#define port_keycmd 0x0064

#define keysta_send_notready 0x02

#define keycmd_write_mode 0x60

#define kbc_mode 0x47

void wait_kbc_sendready(void)

} return;

}void init_keyboard(void)

#define keycmd_sendto_mouse		0xd4

#define mousecmd_enable 0xf4

void enable_mouse(void)

如果往鍵盤控制電路傳送指令0xd4,下乙個資料就會自動傳送給滑鼠。滑鼠收到啟用指令後給cpu傳送0xfa。這樣資料就一直有,即使不動滑鼠也會產生滑鼠中斷:執行結果

接受資料:

struct fifo8 mousefifo;

void inthandler2c(int *esp)

/*中斷處理跟鍵盤很相似,不同的地方就是irq-12是從pic的第4號(從pic相當於irq-08~irq-15),要通知irq-12受理完成,再通知主pic。主從pic的協調不能自動完成。下面是滑鼠獲取:*/

30天自製作業系統

第一天的內容很少,是一些簡單的基礎知識,在這裡我就沒有必要寫出來了,只說出大概的輪廓了,然後我會對其中的幾點進行詳細的解釋。文章的第一天的輪廓大概是這樣的,作者首先用二進位制編輯器做了乙個顯示二進位制的程式,然後用彙編完全db的形式,後又進行改善,最後以比較標準的組合語言編寫,但程式主體部分還沒有翻...

30天自製作業系統 川合秀實 光碟資料

30天自製作業系統 是2012年人民郵電出版社出版的圖書,作者是川合秀實。該書介紹了怎麼編寫 完成作業系統任務。自己編寫乙個作業系統,是許多程式設計師的夢想。也許有人曾經挑戰過,但因為太難而放棄了。其實你錯了,你的失敗並不是因為編寫作業系統太難,而是因為沒有人告訴你那其實是一件很簡單的事。那麼,你想...

30天自製作業系統 導讀

說明 這是8月15日即將上市的一本新書,本文的摘選也可以命名為 30天自製作業系統 上市之前必讀。本書幽默,有趣,可以說是技術書裡的幽默書,讓您讀起來絕對不會感到乏味。在本書上市之前,您一定先要讀下此篇文章,可以避免在學習中走更多的閱讀彎路,因為更多的讀者會問,七百多頁,30天?是的,看完此篇內容,...