Waxaan ku laabaneynaa taxanahii casharrada ee ku saabsanaa sida loo abuuro nidaamkayaga hawlgalka. Waxaan u maleynayaa inaad aad u jeclaan doonto cutubkan maxaa yeelay waxaan ugu dambeyntii la macaamili karnaa nidaamkayaga hawlgalka. Maanta waxaan aqrin doonnaa aqbalka kumbuyuutarka. Tan awgeed, qorshuhu wuxuu lamid yahay kan saacadaha. Waa inaan si kasta u isticmaalnaa IRQs sidaa darteed waxaan u bilaabi doonnaa si la mid ah sida saacadaha.
ND_IRQ_InstallHandler (1, & ND_Keyboard_Handler);
Si kastaba ha noqotee, shaqaaleeyaha kumbuyuutarkayagu, si kastaba ha noqotee, xoogaa wuu ka dhib badan yahay maaddaama aan aqrinayno furayaasha oo aan dhigeyno keyd.
bannaanka "C" wax madhan ND_Keyboard_Handler (struct regs * r) {chargin aan saxeex lahayn scancode = ND :: Keyboard :: GetChar (); haddii (scancode! = 255) {ND :: Shaashadda :: PutChar (scancode); stringBuffer [stringPos] = lambarka sirta; stringPos ++; }}
http://gist.github.com/634afddcb3e977ea202d
Waan hubin karnaa sida aan ugu yeerayno howl la yiraahdo ND :: Keyboard :: GetChar. Halkaas ayaan ku helnaa dabeecadda kadibna haddii aysan ahayn dabeecad madhan (halkan waxaan u adeegsaday 255, waa inaan adeegsanno nidaam ka fiican) waxaan ku dhajinaynaa astaamaha shaashadda oo waxaan ku kaydineynaa boorsooyin fudud oo fudud (tani sidoo kale waa sidoo kale hagaajin ku xiran, nidaamka hadda jira ayaa buuxsami kara).
jaantus qeexan ND :: Kiiboodhka :: GetChar () {sawir aan saxeex lahayn oo aan saxeexin; scancode = (char aan la saxeexin) ND :: Dekedaha :: InputB (0x60); haddii (scancode & ND_KEYBOARD_KEY_RELEASE) {soo noqo 255; } kale {soo noqo en_US [scancode]; }} jaantus * ND :: Kiiboodhka :: GetString () {halka (stringBuffer [stringPos-1]! = '\ n') {} stringPos = 0; soo celi stringBuffer; }
http://gist.github.com/2d4f13e0b1a281c66884
Halkan waxaan ku arki karnaa sida loo helo furaha la riixay. 0x60 markasta waxaa jiri doona furaha ugu dambeeya ee la riixay. Xaqiiqdii si toos ah ayaa loo akhrin karaa iyada oo aan loo baahnayn IRQ, laakiin markaa ma garan doonno sida loo aqoonsado markii isbeddel dhacay. Halkaa waxaan ka hubinaynaa AND hawlgalka in koodhka aan helnay uu u dhigmo fure la sii daayay.
Xaaladdaas markaan soo laabanno 255 (maxaa yeelay gadaal baan iska dhaafi doonnaa) haddii kale fure ayaa la riixay. Xaaladdaas oo kale waxaannu ku soo celin doonnaa booska loo yaqaan 'en_US'. Macluumaad noocee ah ayuu ka kooban yahay barnaamijkan? Qalabkani waa waxa aan ugu yeeri lahayn khariidad-fure ama khariidad jilayaal ah. Sidaad ogtahay, luqadaha kaladuwan waxay leeyihiin kumbuyuutar kaladuwan lagumana taageeri karo markay furayaasha furayaan. Marka en_US wuxuu na siin doonaa furaha u dhigma lambar kasta wuxuuna ku shaqeyn doonaa kiiboodhka Mareykanka.
shax aan saxiixin en_US [128] = {0,27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0 ',' - ',' = ',' \ b ',' \ t ',' q ',' w ',' e ',' r ',' t ',' y ',' u ',' i ',' o ',' p ',' [','] ',' \ n ', 0, / * Ctrl * /' a ',' s ',' d ',' f ',' g ', 'h', 'j', 'k', 'l', ';', '\' ',' '', 0, / * Bidix Bidix * / '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 0, / * Isbedelka saxda ah * / '*', 0, / * Alt * / '', 0, / * Caps quful * / 0,0,0,0,0,0,0,0,0,0, / * F1-F10 furayaasha * / 0, / * Lam qufulka * / 0, / * Qufulka wareeji * / 0, / * Furaha guriga * / 0, / * Falaarta kore * * 0, / * Bogga kor * / '-', 0, / * Falaarta bidix * / 0, 0, / * Falaarta midig * / '+', 0, / * Furaha dhamaadka * / 0, / * Falaarta hoose * / 0, / * Bogga hoos * / 0, / * Furaha furaha * / 0, / * Tirtir furaha * / 0,0,0, 0, 0, 11, / * F12-F0 Furayaasha * / XNUMX};
http://gist.github.com/bf52085aec05f3070b65
Waxaa sidoo kale jiray hawl qeexan oo heshay weedh. Ujeedada ayaa ah in si fudud si fudud looga helo xadhkaha ka imanaya codsiyada u baahan, xilligan oo keliya mid. Waxaan ka hadlayaa NextShellLite, oo ah nooc hoos loo dhigay oo ka mid ah qolofka mustaqbalka ee suurtagalka ah ee ay yeelan lahayd NextDivel. Ujeedada NextShellLite waa kaliya in la bixiyo qolof la dhimay si tartiib tartiib ah loogu tijaabiyo shaqooyinka cusub. Uma socdo inaan halkan dhigo lambarka qolofta laakiin waxaan ku soo daray koodhka NextDivel.
Waqtigan xaadirka ah uma shaqeyneyso barnaamij gooni ah laakiin wuxuu u shaqeynayaa sida loo yaqaan 'kernel', badanaa sababtoo ah wali kumaanaan darin ikhtiyaari ah in lagu socodsiiyo fulinta. Iyo dabcan, sawirro qaar ka mid ah sida qolofku ula shaqeeyo shaqooyinka cusub ee kumbuyuutarka.
macalin fiican! mahadsanid 🙂
Runtu waxay tahay, waligey maan raacin casharrada maxaa yeelay qaybtii hore waxay i siisay qalad markii aan iskudayey inaan ururiyo laakiin ma xasuusto qaladku wuxuu ahaa
Waan ka xumahay jaahilnimadayda jahwareerka ... xaggee laga soo qoray lambarradan? Laga soo bilaabo terminaalka ??
Xeerarku waa qayb ka mid ah koodhka isha. Uma dhigayo mid dhameystiran maxaa yeelay haddii kale boostada ayaa wada ah lambar iyo wax sharaxaad ah. Waxaan kugula talinayaa inaad akhriso casharrada bilowga haddii aad rabto inaad raacdo. Waxaad sidoo kale ka hubin kartaa lambarka isha oo buuxa halkan (http://github.com/AdrianArroyoCalle/next-divel)
Sidee ayay horumarintu noqonaysaa si uusan qulqulka u dhicin?
Kady, weli ma hubisay koodhka keydka? Halkaas ayaa lagu qiyaasaa cabirka ugu badan, iyo sidoo kale shaqooyinka lagu xakameynayo, halkaas waxaad ku sameyn kartaa isbeddelka cabbirka ama ku hirgelin kartaa hab macquul ah oo lagu sii daayo keydka marka uu dhergo
Waxaan iskaga tagayaa isku xidhka si aad u hubisaan https://github.com/AdrianArroyoCalle/next-divel/blob/master/src/start/ND_Keyboard.cpp
Waad salaaman tahay wax aad u xiiso badan, ma waxaad sii wadi doontaa taxanahan 'taxanaha ah' ee ku dayashada Linus Torvals?
Miyaad kugula talin kartaa buug, macluumaad si aad u awoodo inaad sameyso kernel sidan oo kale ah?
Saludos !!
Salaan Waad ku mahadsantahay casharka. Fadlan, ma kugula talin kartaa buug ku saabsan tan aad samaysay oo aan ahayn "Operating Systems" oo uu qoray Tanenbaum? Aad baad ugu mahadsantahay horay.
Thanks.