Kwaikwayon Linus Torvalds: ƙirƙiri tsarin aikinku daga karce (VIII)

Mun dawo kan jerin karatuttukan kan yadda ake kirkirar namu tsarin aiki. Ina tsammanin za ku so wannan babi da yawa saboda a ƙarshe za mu iya hulɗa tare da tsarin aikinmu. A yau za mu karanta shigar da maballin. Don wannan, makircin yayi kama da na mai ƙidayar lokaci. Dole ne muyi amfani da IRQs ta wata hanya don haka zamu fara daidai yadda muke da mai ƙidayar lokaci.

ND_IRQ_InstallHandler (1, & ND_Keyboard_Handler);

Mai sarrafa maɓallin keɓaɓɓen mu, duk da haka, yana da ɗan rikitarwa yayin da muke karanta maɓallan da sanya su a cikin maɓalli.

hanyar waje "C" fankar ND_Keyboard_Handler (struct regs * r) {unsigned char scancode = ND :: Keyboard :: GetChar (); idan (scancode! = 255) {ND :: Allon :: PutChar (scancode); stringBuffer [stringPos] = lambar sirri; kirtani + }}

http://gist.github.com/634afddcb3e977ea202d

Zamu iya bincika yadda muke kiran aiki da ake kira ND :: Keyboard :: GetChar. A can ne muke samun halayen sannan kuma idan ba halaye mara kyau ba (a nan na yi amfani da 255, dole ne muyi amfani da ingantaccen tsarin) mun sanya halin a kan allon kuma mu adana shi a cikin madaidaiciyar taɓo batun ingantawa, tsarin yanzu yana iya yin ambaliya).

lambar da aka sanya hannu ND :: Makullin :: GetChar () {lambar hannu wacce ba a sanya hannu ba; scancode = (alamar da ba ta sa hannu ba) ND :: Tashar jiragen ruwa :: InputB (0x60); idan (scancode & ND_KEYBOARD_KEY_RELEASE) {dawo 255; } kuma {dawo en_US [scancode]; }} char * ND :: Keyboard :: GetString () {yayin (stringBuffer [stringPos-1]! = '\ n') {} stringPos = 0; dawo da kirtaniBuffer; }

http://gist.github.com/2d4f13e0b1a281c66884

Anan zamu iya ganin yadda ake samun maɓallin da aka danna. A 0x60 koyaushe za'a danna maballin karshe. A zahiri ana iya karanta shi kai tsaye ba tare da amfani da IRQ ba, amma to ba za mu san yadda za mu gano lokacin da canji ya faru ba. Anan zamu bincika tare da DA aiki cewa lambar da muka samo ta dace da maɓallin da aka saki.

A wannan yanayin mun dawo 255 (saboda za mu yi watsi da shi daga baya) kuma in ba haka ba an danna maɓallin. A wannan yanayin zamu dawo da matsayin tsararre wanda ake kira en_US. Wane bayani wannan rukunin ya kunsa? Wannan tsararren shine abin da zamu kira maɓallin maɓalli ko taswirar hali. Kamar yadda zaku sani, yare daban-daban suna da maɓallan maɓalli daban daban kuma basu da tallafi yayin da suke sake rubuta mabuɗan. Don haka en_US zai bamu mabuɗin daidai da kowane lambar kuma zai yi aiki a kan madannin Amurka.

alamar da ba ta sa hannu ba 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, / * Hagu Hagu * /' \\ ',' z ',' x ', 'c', 'v', 'b', 'n', 'm', ',', ',', '/', 0, / * Canjin dama * / '*', 0, / * Alt * / '', 0, / * Makullin maɓallan * / 0,0,0,0,0,0,0,0,0,0, / * F1-F10 maɓallan * / 0, / * Lambar ƙira * / 0, / * Kullin kullewa * / 0, / * Mabuɗin gida * / 0, / * Kibiya sama * * 0, / * Shafi sama * / '-', 0, / * Kibiyar hagu * / 0, 0, / * Kibiyar dama * / '+', 0, / * Maballin ƙarewa * / 0, / * Kibiyar ƙasa * / 0, / * Shafi ƙasa * / 0, / * Saka maɓallin * / 0, / * Share maɓallin * / 0,0,0, 0, 0, 11, / * Mabuɗan F12-F0 * / XNUMX};

http://gist.github.com/bf52085aec05f3070b65

Akwai kuma ayyana aiki wanda ya sami magana. Dalilin shine kawai don samun sauƙin isa ga kirtani daga aikace-aikacen da ake buƙatarsa, a yanzu guda ɗaya kawai. Ina magana ne game da NextShellLite, rage sigar yuwuwar makomar gaba wanda NextDivel zai samu. Dalilin NextShellLite shine kawai don samar da raƙuman kwalliya don gwada sababbin ayyukan kaɗan da kaɗan. Ba zan sanya lambar harsashi a nan ba amma na sanya shi a cikin lambar NextDivel.

A halin yanzu ba ya aiki azaman wani shiri ne daban amma a matsayin aikin da kwaya ke kira, akasari saboda har yanzu ba mu ƙara zaɓi don gudanar da zartarwa ba. Kuma tabbas, wasu hotuna na yadda kwasfa ke aiki tare da sabbin ayyukan shigar da maballin.

Next ShellLite


Bar tsokaci

Your email address ba za a buga. Bukata filayen suna alama da *

*

*

  1. Wanda ke da alhakin bayanan: Miguel Ángel Gatón
  2. Manufar bayanan: Sarrafa SPAM, sarrafa sharhi.
  3. Halacci: Yarda da yarda
  4. Sadarwar bayanan: Ba za a sanar da wasu bayanan ga wasu kamfanoni ba sai ta hanyar wajibcin doka.
  5. Ajiye bayanai: Bayanin yanar gizo wanda Occentus Networks (EU) suka dauki nauyi
  6. Hakkoki: A kowane lokaci zaka iyakance, dawo da share bayanan ka.

  1.   dario m

    malamin kwarai! godiya 🙂

  2.   PopArch m

    Gaskiyar ita ce ban taɓa bin darasin ba domin a cikin ɓangaren farko ya ba ni kuskure lokacin ƙoƙarin tattarawa amma ban tuna wane kuskuren ya kasance ba

  3.   Kyanwar Lopez m

    Yi haƙuri saboda rashin wayewa ta ... daga ina aka rubuta waɗannan lambobin? Daga tashar ??

    1.    AdrianArroyoStreet m

      Lambobin wani ɓangare ne na lambar tushe. Ban sanya shi cikakke ba domin in ba haka ba lambar ta zama lambar komai kuma babu wani bayani. Ina ba ku shawarar ku karanta koyaswar daga farko idan kuna son bin ta. Hakanan zaka iya bincika cikakken lambar tushe anan (http://github.com/AdrianArroyoCalle/next-divel)

  4.   Kady m

    Ta yaya ci gaban zai kasance don kar ambaliyar ta faru?

    1.    Makulli m

      Kady, kun duba lambar ajiyar har yanzu? A can an kafa iyakar girman, da ayyuka don sarrafa shi, a can za ku iya yin canjin girman ko aiwatar da hanyar da ta dace don 'yantar da abin adana lokacin da ya cika
      Na bar mahadar domin ku duba https://github.com/AdrianArroyoCalle/next-divel/blob/master/src/start/ND_Keyboard.cpp

  5.   Nico m

    Barka dai mai ban sha'awa, shin zaku ci gaba da wannan «jerin» na Koyi da Linus Torvals?
    Shin zaku iya ba da shawarar wani littafi, bayani don iya kwaro kamar wannan?

    Saludos !!

  6.   AmsoshinVegan.Org m

    Barka dai. Godiya ga koyawa. Don Allah, za ku iya ba da shawarar wani littafi game da wannan da kuka yi wanda ba '' Operating Systems '' daga Tanenbaum? Na gode sosai a gaba.
    Na gode.