From af78ad21cdd2c1ff6f1df327b602d2e0e9db4c08 Mon Sep 17 00:00:00 2001 From: xamidev Date: Tue, 16 Jul 2024 22:00:07 +0200 Subject: [PATCH] Add: PIT (sysclock) --- iso/boot/kernel.elf | Bin 20624 -> 20864 bytes kernel.elf | Bin 20624 -> 20864 bytes kmain.c | 25 ++----------------------- makefile | 2 +- os.iso | Bin 497664 -> 497664 bytes system.h | 3 +++ timer.c | 26 ++++++++++++++++++++++++++ 7 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 timer.c diff --git a/iso/boot/kernel.elf b/iso/boot/kernel.elf index 12cf0136f41a092f6cdab3afaf5b4f50947252ea..a95472e29547a9a22f8c7e4e73efe496359b8372 100755 GIT binary patch delta 4247 zcmb7{3s6+o8OP6EcG(pcxclHCD!Z^C4|%94@fqZqFcp8jBic0|8w`Qo~F~8_Rf6w-rx6q z=X~Ee=R5b|+9E9Zt>7}J5G#?6LBvdyB#DS5j0j94`cEQ>R};vZ+-Ox}G$D;^Dow(+ zea>T|5J2;E?*g<)*04dbf{*TVoZo?Tyub;^SE29R7xFX!<3vv5W#ntad{20 zIFwG+$0@Fa(uMjM#r;saULPZ<=|R0ku_TOMhHhmTeS*uTFdA)$QB;X^m?2Jxr^N|-4vLs@_RppC~_JklGgZ5V@|ZZVjIblPFCDCQXHbwi3!NOeYo5JnS>CLxyQ7%htK z2wG)~Q#_5JtBi3%B;98;DW*lzbI@Ihqz{ZSit;EL5gw;F5JiWD#|au*9BvUZs3Y7Y zOrl$GKZ+g??AX*sZwA=f^;Qv5Xn8T^Q0@EVl4h+r z(600pVjUgsM`-TJ3nHYsOH&ol+I;GP*PHKo8VtoT(K8{$XHc{@UzZG5Wkavf=Y}68 z!)e*zd|?QE$hz7q83>%ae?U%`}8hf`rf1-x%SzB$^KHJ5arg-H(r^HGQ)*b8+u*2Sw9eeMbsS^k(1Nij@!BFC``m znh-rR?TTyYf1^-n=&l09|}Tsg5F6< z)7%SVEonGS=+~uI0#xrCX;f;W<{TE!;jT5(@u@GVHvm)vjdWS+baj?wxInL_ren|O z(hSKdkJt)M^m@Hmlv|0-UE0>>!IEyUtTRZuk#tI$S$Kukr1ey2KjE57Dj+1l@cRh6rw z)friu8p$(6*S<4DAD}M6x;i?)r^g0fu`hj$be(_p+`Y>Z&UfAV!PRQJH}hvD#jJ=t z)A4jubt7g=fu?1O*16JElthTjXB^6m=Y7VLOC<~2Z$2xsReB8YaJcuwg_WDG%Is;w zrohBVSh1N<)1Wr>^g!lyzrAzNdO>p-0r)9ETQEr15A%_##!*p z)#73}yx>{geV2MQ5hmH%WuAdj2bmD=Y50ESS zwQ>HPH`-SW8KFq9*4WJTwzBy(<>rdgdh>$P`g&V=5NYWh?`}~-j1X=6*{$AK z_DLa_&KaFx|29H;e`AURNGs0zs298zJeIR>0M~Qe2Hwr_7VsI4e+NDh`J%s_-~k-( zB_xw9<`f6v(8ci)a305>gEvRgm&dFSy!7xGlU<1yfU>_YfvvalOO&{|cOxFA_W@ zh>qBU$-7W|&N*xX2gHd)gDdM`7p~j60QZ*9wU-T@&HbQgZqlo zR|xCxOEC4vvtz_pplIqNk_Nef2fTp`a2x#4-vIvKgJU`SS9o|V!i=#GG#217>>@^p zS0+XnOnv}s!FcLP9Du1$vWO%GY-bI6LXp9BXaZM0uK^Vq4E`sVz;N(VJ@%3ua2$9S z*FG2AkmwJH8UROg_L<-oUw?L71TqVXw>bwJn4lo#0tm<7|n8$rs>H zkkCdszy+|A8^C4oY>xj9?!po`$^Kp792O7pr3AX6*u*t>0KSDHio)8mB~sw3M z3$gFhNi12=JN zxD|Xx6v;1T`(lh_t3f1R$@~%QKXL&NfKPCI1e~33#~NsS+u}1QHe#RpM|2Ea$Tc_( zUI2TV9NqR*B}tA;r6W-T*7sr z14nTFy}%nejs^db<3zBP<5aNy6|B*xaspXU{FQSU0VbGY_Pfc7Y797uOJD*x6E)-C zmR9g7&Rzg^aQ(6GE+gK>_?d(Rke@5b%S6RBsDOi>E5b(b5+h#VassSc-{kz4whx^c zD5x4Lt8I03L~cxYNlDX?tn@jyhLQzkB@GpgHFML;nrLC}dm)lfNkwT*`8-=)``z49 zA=syCs4SaXPp3|PE2`W!uXGWqtgp)?K2v2)eM9NIdF|&W4-@G5DN#Zh?U6?nsVcfD zudiUE$MZ}owyA7XXN_EI)vDM-vl3uYv8PitQ`3B_rU!f1u$O8r(+FGXtJXwe2VI2o zKDx!4nA`z7st{9xBO4zw+4!wyk8k-f%hwaM+d4e?4qWl0K;j{o5NU$(>F8^XD?4^f Y!~=;I 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 Y!~=;I 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 delta 4529 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 diff --git a/system.h b/system.h index 031f160..6104e5b 100644 --- a/system.h +++ b/system.h @@ -17,4 +17,7 @@ void isr_install(); void irq_install(); void irq_install_handler(int irq, void (*handler)(struct regs *r)); void irq_uninstall_handler(int irq); +void timer_install(); +void delay(int ticks); #endif + diff --git a/timer.c b/timer.c new file mode 100644 index 0000000..ddc308e --- /dev/null +++ b/timer.c @@ -0,0 +1,26 @@ +#include "system.h" +#include "stdio.h" + +int timer_ticks = 0; + +void timer_handler() +{ + timer_ticks++; + + if(timer_ticks % 18 == 0) + { + puts("One second has passed\n"); + } +} + +void timer_install() +{ + irq_install_handler(0, timer_handler); +} + +void delay(int ticks) +{ + unsigned long eticks; + eticks = timer_ticks + ticks; + while ((unsigned long)timer_ticks < eticks); +}