30天自製作業系統day17

2021-07-03 23:10:21 字數 445 閱讀 1055

建立乙個帶視窗的任務,需要在主程式中建立視窗,再通過引數傳給這個任務的main函式。因為要處理視窗重疊關係等,需要在統一的地方進行管理。

如果有多個任務能夠接受鍵盤輸入,則應該建立乙個變數key_to,表示輸入到哪個任務中。

為了讓每個任務都能夠接受鍵盤輸入,可以把fifo放在task結構中。在主程式的for迴圈中,根據key_to的值將鍵盤資料傳到指定的fifo中。然後在這個任務的for迴圈中處理鍵盤資料。

現在只能輸入一般字元。如果是通過組合鍵輸入的,如!@#¥%,需要自己判斷。這裡需要處理shift鍵。使用兩個keytable表,乙個是不按shift時輸入的,乙個是按下時輸入的。在fifo處理中,記錄左右shift鍵的按下抬起狀態,然後在傳送字元時選用不同的keytable。

大寫字母也需要處理。初始的大小寫狀態可以由bios獲取,但是32位下無法使用bios,可以在一開始獲得的binfo中得到。

30天自製作業系統

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

30天自製作業系統day01

第一天的標題,從計算機結構到匯程式設計序入門。這一天作者共講了一下內容 1.作者上來就用二進位制編輯器製作了乙個軟盤映象boot.img。像作者一樣,現在已經不需要再去購買軟盤,再說就算想買也不一定買得到。本人使用qemu載入軟盤映象,命令 qemu system i386 fda boot.img...

30天自製作業系統day02

組合語言學習與makefile入門 作者共講了幾個簡答的指令 org jmp mov add cmp je int hlt。標號的使用,的使用 8個16位暫存器,他們各自意義不同,雖然差不多可以通用,但效果不一樣,如add cx,0x1234和add ax,0x1234指令長度就不一樣。前者為81 ...