From c1e17503d12375aa2ce3e32fff0cf3d624f19f13 Mon Sep 17 00:00:00 2001 From: Robert Pengelly <robertapengelly@hotmail.com> Date: Wed, 14 Aug 2024 09:58:48 +0100 Subject: [PATCH] Load programs only --- build/chimaera.img | Bin 368640 -> 368640 bytes build/chimaera.vhd | Bin 34120704 -> 34120704 bytes src/apps/hello/hello.asm | 169 +++++++++++++++++++++++++++++++++++++++ src/kernel/int21.asm | 70 +++++++++++----- src/kernel/kernel.asm | 2 +- src/kernel/prog.asm | 12 +-- src/lib/crt/crt0.asm | 2 + 7 files changed, 224 insertions(+), 31 deletions(-) diff --git a/build/chimaera.img b/build/chimaera.img index a28c5360de2a52173e1910e83c15486619a68741..b3e0a5e31ae9b55348b009f87f1b27250b64b7f8 100644 GIT binary patch delta 6285 zcma)A3s_TEw%+Fuk|6JgC?Ls+NO+$R)S?Ctf*P?!4Uh8F&~|FQbNdcpJJkv{io`?| zH?0;$p|sZ)Z3hdsfmBFKD^iOnwG?Y@wbDB~gH@|D3YN-UC*k4PneV&#zO%Ek_S$>x zf4%lPDYg2STK#v03D$i7cHq&dD=sC=S9#=m<RZj>Bl{<L)v8R!@$qu-$LDGLygGg9 z($ppCOh#@7^RM&HC^r(JN0z3qT$;-Kn|Uu(orTciRV!8`tz5#uH-o(GipLem(T0Sk z%>z%k@1E|l;{KC4G_&m3xftewlQ~X4eln1HVBV=Ijef@oc3pM<u1@x4|9RJc#k*L& z>;b$2R0#XlJAKHAl+=4zoVJ(tQsD!kYnw#r)5WfuxfND(5>oaOHIB@iK}FzYd6#_m zC+a^J40=mUXDiNYcBpS_$acISKiubWp0Dqqmk(Yss&7|V$*iWLe2${3aMSA0l2;Oq zY5_@3Y+OL507;YhMB?)s@%*ikA;TQG&5>IixxtxE5=kPk{+A<HIC6<27dcZuaphTG zbL0$1x;gSCXR?wZ4p>%>9Op<YM?U6EXUNYy>wS(iaO4n2-sV7y-YO)gd3MPg9Kjsf z#gQGrNBo-C@A7<(Y~;vaII^BI+<-N}dWIu^=EzeV`4eXtB9%NVmm^sm$>4~F%Yh}p zS;mni97*B`2b^bl&RmYfaYVt9XyD}YoDhyM90}$~AeZA#mUCp*T_U^7>bWX>WzAuV zYuc%0#S6b<MWl}vDXnsYh#mF#r%Wo+7UbpTE3HEv8ENTR*+L14om1#06%}ZKZFWM# z9oZQqAx0-5H}T!4lBwBv;kt5BLzwn3TUUj@S{Ff`Zo0j$-Xrw9LjO6fAEI?jN;gsq zin-W<?E(!^g&980k#!X*^e1Qy+1S*!{u|2k2Ni3Of3ITeF9E^+gx`8O%7+PQTug#O zY^QxjG9EqtScIhm|M;>(@#D<KDdfAEaF!g6#B{Qv-?BJ@C_<z;*=(mUJ(Wh}#!NdU zKn0}Z2dr2a@+WjIf;t~TKO8Aaj}#Y1x_lHlr8CmwYE(dEbf6+SbU}2aCOZ0bbgU|7 zesau$oiVBrHo>M`xMMc=(d@)eW-mH6C+WMn$$|09nD~^E_~l#UA2!B6QW>ARblyt8 z`KwYFJW-^=*1z~AKI6gGE{|laMPl}ZaCsyeRKyN+`!952i>Ebe$&d^H-I6uBlWQ`- zV3XPQd$Z+o`vM`q0Q<fYQqnB@X_yB$=tSO=HB&uEQ+|dVl;!lWwYu@Gb+ENNzcphm zc7`o<k<FqW#MT}g7dZByZY{4nm)D)i>s}?Z(Y$W^0$w*PXcmL6EEhxHk%U=A&Ljr6 zy^=3I%fPy?7+BZIz`D<vu{g+qWLsnVGoH6$D+Q7pq;BpE#GIIE6x*B_Y}+uCI)dFc zJ~y{?xcy0V=Wlyr2g*;9!eOd&^XMm{LTB?QBC6A{X$aUuWc9GvT1+=m<?0dm-A_{S zUpFQP_Dl7jPbpX5&C6-0P`3RMq3m=GX~(Xwa+0~jx><%hq%Bw%tVt(*{yJ}B3d+kV zbZhZKqyevcRS`sn3Y}~T6i7W63{)INw)(?&Bt_=oqpzk@-B_^c#Q@Po`3dKrbMtbP z7s!^2`64Y_H)pEMTBOChZ~*<y_gJBirebm5CY4+p_U|IvD!D(RDH)D0kx>OWx8!x| zLwvm?KID)R;?!E2u)4^<adktMq~e0|b{3f}hs_M1-g;ZAH6OyuOBaZr3<kAgas(So z!|6jx{A*W$_aUW*oC^YLOSLj^cKadxV`(^b2#YsIxLyp<rII^7x@F{joUl2{{g6_v z9F-fLE38>$1Q%_7Ev5V)fOjoez)UYBX9o%w8P<;&Hr-1jqtkO?<`D`^=j#KMnj$Cs z^Kx`fHjW|#9>95sGOiynZo0>>+=IE--U)iMpRW>21L5(5X9heHhuOsV-fIeK6=wA@ zR0CeEUnu_hrcMNQpM&f4zEmqdrf;I>UBov^qVeIaE>sDw-J+xers1!*G|(a6Pw?~b zv8{2gdv1VwG4Hl3_~zEVUN_H8I_UXt@<rHHKa;kev->3o50=GHX*giplWU%Kw{bU# zw})-sO|sa-7I!m&S}!tFXxJ8Z^HIak5=S}HWC#s?<eO`{8HPJ@<1$(U1C%8<PpMWX z025CW<!c9pFhHqu)I8~$VcXBRe;boNyP{v;>A}|RO@Ufh%@6ze;Xuk^yW|e7*dR$p zCjTWUU%JMOs3F_#Up)xx#n!%&GQQW4ZPTx@18n^pDXh`I3ePT&4V&(6>W2%<+x@;W zY`@7mS)-&*UD2T&WmS@TyuCbvI*FUhIbl@_DRVo8DML{F;^48El-a9nkfX}J<7eo| zkzFWq(-50K2t+3t)VGQJ7qF}qfn|^23`4Zbfhq8NA0lbE+@PRRu-Twk5pp#zN8Y*2 z9U-}4nWx;4?Mt*o7dn>rkdkZQYOvK^zmLIR3bvis^9%0h(ZJh)=WOqyai876QAW=g z$=`I|6GCG9PLE%^k74$KRjaN6?5dO={J1f+<oea&FA-vm?Dwj>Y=!?1D#O*^^jF1f z9o!T~_9vA;cvk;~pi_;yLr$pa>Q1%OD=O1U=WWl844rbcH3)%>CWF8EQc$tK83{j@ zD!W=W)4RQz>DW<aZ?_i|+uNt?mq}#;S>#1*r<Aw#_of#n=NN7%dt2PlonK|W#ona% z6co8nJV}cu`N)$rc^YYQ*;B2)PpGI1B&t2h9#2x`Nh&=DTS(0*Qhmyyy~x>IlG-gJ zt!MG|HIaCmDZ=lI!H&BlLP=J(CXGKp+sZ`Ci}-VsQo)=pT)Xbswa*nX&#zyrd+M3z zUvi&<OkY#|^>ylQpQFOBFV)wpja;2tX;pFc>fH<c@q!)hp`LVwRb#FJ$LG33*-(x; zTBsrFu+n<?uo(%UpBlu^>{v=Yi9g)Y;XCgu2k$&$>)ELe_2m_DY;6jEoC>SqXXS0> zsM4yupzKoiwuUEK<|dlaBi%9`J?LU_P9$0GWb`B^6-)4Av@m4Xu3hMm8$!YX6+!`D zB_PCn0fTH;I6^Z|0Toh*SL{rup2M{}yXo3)T(@&(Q{}EGih2tluRKXTfy;J3P9aQo zAD|w`+we^47;eBz=;2O$1IJL8v80NjdU0Y^M8M@Gj>yRw>d+6n>V%DK!}7tmH;-P% zo2!CcFE5F;wz#5O4VKIJP*rpQ<dIcq=vR)KK4n!Nb!v$G%?PM^e6=cCT&LEpU{w#* zW9IdR&@yUY-zTV77p}(FtEOSs#cotRmc22Du2<ugi(~MXH+)L=rWiVi;$EQ$dLl9O zM7jAx9egNWrHS*ILLsEw@R|;T`W_S=Xrat>vQc}FHz3(~7Bt6G&WP6cBDkyg$SQJK zR4jyTY*I>NMiZiGXY)YTm165^Q^<zVLN9xSE=nO1=ZAUeo8YqQ6t@0A3N$?XQxH{Q zm3Ime>SpBiGy<{|5&)XA6nVWrq!70^g%1Ict#>O$tV#He8w>z;Pb&2&KD;NG+J?LK z%#_!u<OYce$xR*=_SIlzXh;Cj(3%dZh&=r}Kp~0Pd+%%(6dL5oAPOZ9vJ(ztl<(yW z8yv~_(EgO;$R*!Q(;B4}r)Txx7x#|P*FVM2zgbIdz+Tl$1REY6>cDBVAAY7f(kbqr z`Pln>5N@vC9MnIgD`r*xi>4OOWmQ6MYBB3*_A<=hV$D8(>Iz=Bua-_v#it)$+O%?i zHU$C291O(PnxHZ2_5>AuV4U~F1hsd9Iz2%N4m#xK+II-Ti!KI^QHKtWQx^{g(l4ZA z*}(wpQ#+m3W%6Xx(%QYE-S5sUQPC|)DAszbp?xFWQtF^a=$0*Z3fuuNOfb_1GXqE9 zs`uq@|5$57`v|S?q}w*qWGxa(loy&~yJcmU79uCzLu_3%0!g-_UwOM-MJuh_1!`#e zh8<rww+o=z^oCA4i)=>vMUH;LqN1fD*wfH|cocM6M(B*uhf1ADy)V>*W+*>{cQw%1 zw=(F6*jmISFhzG(8gB5iO+UW-9u=+)j{PM&4Pd;TTfo-sVc7b83|m*jz&YGC<mLGg z2}&zlUxOPPrcS@a2$GuV^3S?u&Gd&0?BnWgndKn9*r19k6byRkhn$L?El&sr1^JdO z0%Bx=@zPZOwZO}8i)>^`9vT!{R^Y{l2f{O5h$+Ul2W1du9%yOL6d8UPvymlJRGNs2 zl!hO&%q#J#BZ{PS5w#u})pr*`fTW9Fk{Z-^Q=nGU=+0$BhmfsXDT3%UiVUBLNH`ko z;~5(AbUf?}X=H6*DZ;;=45TvgcSlm`OfhaeEfr>pvxzVsmvkjy!}|)Jd$dL3lPT7a z$73d2FksL4a>l%*)=Y7?tT3)6Qw(ST;}(}ecL&-+mq91X>n>zR6c5&)2kULg6q8q@ zNdE6l-mSA~eD$n19y}I~8ychM_jyRbzrD?Y-7+bFEEZe(Jv!AR2<-6KY~BuiZj*NC zbDOZk8SHsfQE<+UTJH?v^tdt3x&6@?XWS-?k!&|cpNEG0PaJHXE@>@Ad||Px&tvP( zz|~>mXY6J=gKLfkQGK}OXdaAyA2Px|_iPdnXE)ON4;6HuyWL2A5E@0{lSTse<rcr( zm2lDaxr3SF9X9&KW86mHdw`AZdE}CJ<zS@sPPU^6M4;Zihb(>WWVf8WFl4Ji`b{IW z&Xebq${i6#a)#KtzNRHjL$n$K)9Am4nSTZv*J}8uV39pmjglIM@3A2;_ArIh)9f*k zD>QVlb(pc+LB!`1^Gi`SbYivDxXtR1_kQ$fL=966FrvWMjtFP+rJ@d@B!jKn$0&Q} zpLxm2b_xoqqz3zcEOo14gxQj;G)+ZEn-(X1JS}7&^Z!*9j6e8zo}WWqT=f0wu(5kq zc-U0(y3C#j5&UF(nD3<j!+a<FFT-lHA}Q2&G7mz1|LA&|?}Y0ec_8xzS4E9GSmtZb zgD`y7oJxoJ@p(Xn;l!2~U~FuWdWZRG$bZWw9UF!(wM_F3^8=sGu&Ae!V^Timy)9u) zQ(9NkYhH7L?4KJ<Qi7WUx@GKJmzcJLOl)uSGWgLc+zI~x5l+Nz_gD=@X1utxYlH3e zrXjbW8Bz-B+hQ<sB?JAdG=n_FzjP@tum(vb?)XF{u8^7;qydu)kB3o}m_0r%u#%Ca zYsOP3Cr@gru;-DpWjii7J}tZwoZcou^6dhxD1j|{(YzXI%oS1%`2c!nf#J7;T<H6Q zEEV{`@j0;L*T*AZ{QdZ}#7ag(g#2q7U+*fJbcyD^T*;B<736C3@^fteb??68_JvL! zH>2%ESIlG(O(5uj6Zf=Dr?i-~<xvB8aXSkyiMsZM)K1*kK1)>~S#0>xqLms-Xj6f} z(P25+wv1Swladnw&_3>DD4nmFMH)+iB!evA-w6#JCq&3nfIY2`!oF**E8Mif9T3); z<6&J4fAh@w^e{d5O@=M^uV%o~vDPu`-)aEztu?`H?SHJ{exIvc=dp3Iar5INp!sal z&^~n2Gbdi5G{>E8Zbrx}ux~p;je_p|(C|5D)F5=kWi<tF4uR{QMJU|!i#HL93H&Gs zq2Im!k%7<$GnNJ-G*5Q#J%pm<n+g!BkZb>rkbe|5b%%tTLP?&tJ?yUmI=bByG8y)! zkcqG_!<$bk7Htoi4EyaNe+>JwkO#uPEJQ=*^ZVNCS{c4^GKex^x2{y$G|L|KCj3g* z3;Yi#`rf8l8lv!?40{s}`cf)2&4RF>*J7IGsPl(I`D*3`wf|ZuR5QP(+%L17!h0f# zz|9V0FaPS*-V;6vqbGa<Mi>6JTanZqJ_(~c{EslY!XJRq6|NyyrjEnt3b$u(4}Riw zD%FGkdYXap%;^_kOzM$(_e5yOdDlr4(1P_$kL`&76w%EIEevY4(~JYowMYOl8cE!z zI8wSNg3wdQr3>RX)+6C%O0rR8hvwzOLo17!gjN<a0j(4l^eU3J#7sil67xrBr7;gc zD~-{Re6YF0L!~ixXl3~Cy{U8=Yrmk&*lcp!%YOH~`L%-Q@)vX&t08HkNtD38+~S)I z|6H_|u>e)!xO+ZQj^91+C;@1vl5BGZpf4r!_wzza8B1PrCXaqQ7-#5cPHY)Ptz}KC z&eb|o(xw~dw@}m!eEGr*{8>%F7&SCT%^myw<bm;->Iv%11SLGk&sJUx!YXJcd1?mM qjqzsScgLu?v}FE7bIGX2noCciK4f59$N&Wo4Uf~uAp?R7mj46lLp$LB delta 6348 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 ScxZS$-i^BAdC>}g&Ho33$y;au diff --git a/build/chimaera.vhd b/build/chimaera.vhd index 2321841972c112fd147baee467c70c6f5ed7fbc9..26c7b5c8a7edac55bfcdf61bab16d2dbb49c7763 100644 GIT binary patch delta 8930 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 delta 8984 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 diff --git a/src/apps/hello/hello.asm b/src/apps/hello/hello.asm index 6180d5f..bba6775 100644 --- a/src/apps/hello/hello.asm +++ b/src/apps/hello/hello.asm @@ -1,4 +1,5 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; @file hello.asm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %ifndef HEX @@ -16,8 +17,166 @@ global _main _main: +; mov ax, HEX (2522) +; mov dx, offset _int22_handler +; int HEX (21) + mov bx, offset _msg_hello call _writestr + +; mov bp, sp +; +; mov ax, bp +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp] +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp + 2] +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp + 4] +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp + 6] +; call _writehex +; call _crlf +; +; cli +; hlt +; +; mov ah, HEX (62) +; int HEX (21) +; +; mov ax, bx +; call _writehex +; call _crlf +; +; mov ax, ss +; call _writehex +; call _crlf +; +; mov ax, sp +; call _writehex +; call _crlf +; +; mov bp, sp +; +; mov ax, [bp] +; call _writehex +; call _crlf +; +; mov ax, HEX (4B01) +; mov bx, offset _param_blk +; mov dx, offset _app_name +; int HEX (21) +; +; mov ah, HEX (62) +; int HEX (21) +; +; mov ax, bx +; call _writehex +; call _crlf +; +; mov ax, ss +; call _writehex +; call _crlf +; +; mov ax, sp +; call _writehex +; call _crlf +; +; call _writehex +; call _crlf +; +; mov bp, sp +; +; mov ax, bp +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp] +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp + 2] +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp + 4] +; call _writehex +; call _crlf +; +; mov ax, word ptr [bp + 6] +; call _writehex +; call _crlf +; +; mov bp, sp +; +; mov ax, [bp + 0] +; call _writehex +; call _crlf +; +; mov ax, [bp + 2] +; call _writehex +; call _crlf +; +; mov ax, [bp + 4] +; call _writehex +; call _crlf +; +; mov bx, offset _param_blk +; mov cx, 11 +; +;.loop: +; +; mov ax, es:[bx] +; call _writehex +; call _crlf +; +; add bx, 2 +; loop .loop +; +; call _writehex +; call _crlf + +; mov ax, cs +; call _writehex +; call _crlf +; +; mov ax, es:[bx + 18] +; call _writehex +; call _crlf +; +; mov ah, HEX (62) +; int HEX (21) +; +; mov ax, bx +; call _writehex +; call _crlf +; +; xor ax, ax +; int 0x16 +; +; mov ax, es:[bx + 14] +; call _writehex +; call _crlf +; +; mov ax, es:[bx + 16] +; call _writehex +; call _crlf +; +; mov ax, es:[bx + 18] +; call _writehex +; call _crlf +; +; mov ax, es:[bx + 20] +; call _writehex +; call _crlf ;.console_loop: ; @@ -322,6 +481,12 @@ _main: .exit: +; mov bx, offset _msg_any_key +; call _writestr +; +; xor ax, ax +; int 0x16 + xor ax, ax ret @@ -338,3 +503,7 @@ _msg_hello: db "Hello, world!", HEX (0D), HEX ;_flags: db "w+b", HEX (00) ;_buffer: db 512 dup (0) ;_to_write: dw HEX (0000) +;_app_name: db "\\command.com", HEX (00) +;_param_blk: db 22 dup (0) +; +;_msg_any_key: db "Press any key to exit...", HEX (0D), HEX (0A), HEX (00) diff --git a/src/kernel/int21.asm b/src/kernel/int21.asm index 257d2b7..2b2e5e1 100644 --- a/src/kernel/int21.asm +++ b/src/kernel/int21.asm @@ -647,12 +647,10 @@ _int21_dispatch.check: _int21_dispatch.no_key: cld ; Make sure direction flag is always clean + push bx push bp - ;mov bp, sp - ;mov word ptr [bp + 2], bx - mov bp, offset _int21_dispatch.list mov bx, offset _int21_dispatch.list_end @@ -941,6 +939,12 @@ _int21_dispatch.list: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;db HEX (5B) ;dw _int21_5B + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; Get PSP Address. + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + db HEX (62) + dw _int21_62 _int21_dispatch.list_end: @@ -3976,8 +3980,8 @@ _int21_4A: ;****************************************************************************** _int21_4B: - and al, al - jz _int21_4B.arg_ok + cmp al, 1 + jbe _int21_4B.arg_ok mov ax, 1 stc @@ -3987,13 +3991,15 @@ _int21_4B: _int21_4B.arg_ok: push bp + mov bp, sp + + push ds push bx push cx push dx push si push di push es - push ds push ax push bx @@ -4040,16 +4046,17 @@ _int21_4B.disk_error: _int21_4B.error: - pop ds pop es pop di pop si pop dx pop cx pop bx - pop bp + pop ds + pop bp stc + jmp iretc _int21_4B.load_ok: @@ -4079,9 +4086,7 @@ _int21_4B.copy_cmd_line: and bl, bl jz _int21_4B.start - mov ax, cs mov ds, ax - add di, 14 mov ax, cs:[_child_sssp] @@ -4096,28 +4101,45 @@ _int21_4B.copy_cmd_line: mov ax, cs:[_child_csip + 2] stosw - jmp short _int21_4B.ret_ok + pop es + pop di + pop si + pop dx + pop cx + + lea bx, [bp + 8] + mov [HEX (42)], bx + + mov [HEX (44)], ss + + pop bx + pop ds + pop bp + + mov ax, HEX (0100) + clc + + jmp iretc _int21_4B.start: + push cs call _start_program mov al, cs:[_last_ret_val] -_int21_4B.ret_ok: - - clc - _int21_4B.done: - pop ds pop es pop di pop si pop dx pop cx pop bx + pop ds + pop bp + clc jmp iretc @@ -4259,12 +4281,7 @@ _int21_4C.done: mov cs:[_curr_psp], bx call _free_mem - - xor bx, bx - mov es, bx - - mov bx, HEX (22) * 4 - jmp far ptr es:[bx] + retf ;****************************************************************************** ; @function _int21_4E @@ -4754,3 +4771,12 @@ _int21_4F.error: stc jmp iretc + +;****************************************************************************** +; @function _int21_62 +; @brief Get PSP Address +;****************************************************************************** +_int21_62: + + mov bx, cs:[_curr_psp] + iret diff --git a/src/kernel/kernel.asm b/src/kernel/kernel.asm index 331a054..70afdd2 100644 --- a/src/kernel/kernel.asm +++ b/src/kernel/kernel.asm @@ -852,7 +852,7 @@ _setup_interrupts: _app_errmsg: db "Bad or missing Command Interpreter", HEX (00) _app_name: db "\\command.com", HEX (00) -_param_blk: db 16 dup (0) +_param_blk: db 22 dup (0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Data area. diff --git a/src/kernel/prog.asm b/src/kernel/prog.asm index 6e76d5a..9c42bbe 100644 --- a/src/kernel/prog.asm +++ b/src/kernel/prog.asm @@ -122,15 +122,13 @@ _load_program.got_size: _load_program.no_mem: - push ax - mov ax, cs mov ds, ax mov bx, offset _load_program.errmsg call _writestr - pop ax + mov ax, 8 jmp _load_program.error _load_program.mem_ok: @@ -352,12 +350,11 @@ _start_program: cli mov ds, ax - - mov [HEX (42)], sp - mov [HEX (44)], ss - mov es, ax + mov es:[HEX (42)], sp + mov es:[HEX (44)], ss + mov ss, cs:[_child_sssp + 2] mov sp, cs:[_child_sssp] @@ -377,7 +374,6 @@ _start_program: push si iret - ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Data area. diff --git a/src/lib/crt/crt0.asm b/src/lib/crt/crt0.asm index 7b22d2d..7e9ecfe 100644 --- a/src/lib/crt/crt0.asm +++ b/src/lib/crt/crt0.asm @@ -157,6 +157,8 @@ _start: mov ah, HEX (4C) int HEX (21) + + jmp .L6 ;****************************************************************************** ; @function _get_args -- 2.34.1