From 6cbb73f2e1b5b85f97a1da15c91ceb7655338529 Mon Sep 17 00:00:00 2001 From: Robert Pengelly Date: Mon, 12 Aug 2024 05:46:10 +0100 Subject: [PATCH] Implemented int 21h/AH=01 --- build/chimaera.img | Bin 368640 -> 368640 bytes build/chimaera.vhd | Bin 34120704 -> 34120704 bytes src/apps/hello/hello.asm | 9 +++- src/kernel/int21.asm | 102 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 110 insertions(+), 1 deletion(-) diff --git a/build/chimaera.img b/build/chimaera.img index 1a20b316af9aa033ee77c59245a1204993a22ae1..a28c5360de2a52173e1910e83c15486619a68741 100644 GIT binary patch delta 5606 zcma)92~<~D|f zYK)#5qvy^!cDKVCqmGB(o>q2B?wIMANf6vGVf$OWdi5H5^v`vaKfX@c)|F{Xm!>R9 zqt%&e`j6}OL}my$l$d zi_`Ae&MT*CHhMF|jOj(wf6{DJ^Ks2!*PqsT`c&#L52UW1DwStD_TQ!c5pR-m*`M&* z5rrVPk#~X?D9D{in7WU=uWv{#6*`8`uQeJL5sGU#Xg&(f@}Y$DQF7K-Gha=t_}I?s zCemH4{X(@}IiSK%C!)CQIWt&pp~6HxVZB|W9H=#7UaY=2JAtG&C8PB<-sn<}Ls@!a zjnWQ_6I){O4{VK+!ZQ=G`vdIqpoPXaSbUwuS6FOjb?5N|7FZ@08(Dms#qF%F7h{gq z!s2EYH?jDCS)CDo#<32v_yCLRSiFbTUBMr5tZEi-V{s*mw{o{s82R`p$1W>m@k=az zfyK`PpWx2y9R_|5i!)igj>T$L`zxFQ))OpNvN(yw3t8U~wdiBUmhFGvEkt z0$D6!v53V!z*)|5+*$0xVn-HF15Px@Az1t<0S_nO`w1D&SjytSVJsPDDp)Yfo!lnM zht==QlM55t7y&-X2oy%CR=|un|1J>=^76AXvlYfclR7nRT{>Tco#qufiUs+3z&7xR zAyc{<`^XDK_%a%PYBA*=jM%5Q3AJEJ6`#z#9AUJmotb)N2yHA9GG*uZ$`HaD9&yL)nZRR;XSL+v zUJ0PPE@^SXmm~n_g2eK7H>OHzJHcmc2jZs{&ryLJT6qy8X4i;2RaX?(+U$t?zri58 z3U1yb`F4o2gO!K1l2-CEp{lxq%On|>nfi^RH=pBggo{N^+|9JH*dA`!7}6@ZOfdB) z#&?`R!q?_F*rwdYC-gC|<&o6;577SCUzlGp)cIH9{ttC<`+5BG5ZSeLKBz2QRv z*`+NV1oj}#9}*gisTQ(I`4Hy4cr}XKe1MEbH#SH5EP6N=I}lQqc@M{eN_zua2T|ab z=cp?KXxEmPoE&aR&)I*MnU$fqiMJu=(jcn$OVm*w78rTUIs?Ma$}_kUW0Hm}J;PIk zb`7JymFAOwLEn|`rA~f>HkU0R4pje3WBw&ZmL+Ck8 zFs$v-{R4G}K-$rA-|=hrwLSf`PST0wYGMOkfRs zuRx%^kE3o|?YJZx+nj508o;N&wFuCXiWVyF7GMkW$;=Sv)fyE8xSZR}pR(B*B~)Id zq+fE|k|(z1-Y(!Ujd>JAmZ=8MrD7ibN#(%(me&A zWeZSUxj$v<;XD*6`m9DdY@KDW=bXeFcT&a2{GnWn;obynKEOV553l*g(s&OY`Fn2o zl6!cilZCy9`<*P&_i&K2W$r!57J-2zhAeaLjT=a%=7W9y`7@fojiG+{4Q<#an_HX= z#ioQCUgd_@laE>jIM|h`FH9bHVy>m`w}?ATV_`B=;|X=ixGlv&qpUS4MwmEJIr6M} zhHDX;sx@Q``mE|jYJMzQs%2I#xSN$B?ONtU5K`?j7pXRV2Hu1Vf+kQn*dpWjFH;zt zzbtS6lAS-5M**(}8MPOvf85~QflgJsNEJU6xJ_&l+9YlIc?!ee4yW?b-D;^=_|wp* z1i{oWrnq6I*7K7%?cE0zcZEy?)W;gAkBXX^zU$+3tL(SE_;9d$w2c!4_)(=Et@6

8eyt;u(2jhbj@J>LQq!tA!h$eqqClMfAp(HxxYe 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 AQ2+n{ delta 8089 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