From 0decb483fea9259281bb4cb56cf9dfc773882bab Mon Sep 17 00:00:00 2001 From: Maddie Date: Wed, 9 Sep 2026 13:41:49 -0500 Subject: [PATCH] added more instructuioins --- Core/ComponentType.cs | 8 + Core/DebugDumper.cs | 5 + Core/Doc.txt | 11 ++ Core/Operations.cs | 155 ++++++++++-------- Core/bin/Release/Core.dll | Bin 11264 -> 12288 bytes Core/bin/Release/Core.pdb | Bin 22016 -> 24064 bytes Core/obj/Release/Core.dll | Bin 11264 -> 12288 bytes Core/obj/Release/Core.pdb | Bin 22016 -> 24064 bytes MathLib/bin/Release/Core.dll | Bin 11264 -> 12288 bytes MathLib/bin/Release/Core.pdb | Bin 22016 -> 24064 bytes MathLib/bin/Release/MathLib.exe | Bin 5120 -> 5120 bytes MathLib/bin/Release/MathLib.pdb | Bin 15872 -> 15872 bytes MathLib/bin/Release/main.asm | 113 +++++++++++-- MathLib/bin/Release/main.asmdump | 129 ++++++++++++--- MathLib/bin/Release/test.asm | 10 +- .../MathLib.csproj.AssemblyReference.cache | Bin 5426 -> 5426 bytes MathLib/obj/x86/Release/MathLib.exe | Bin 5120 -> 5120 bytes MathLib/obj/x86/Release/MathLib.pdb | Bin 15872 -> 15872 bytes 18 files changed, 320 insertions(+), 111 deletions(-) diff --git a/Core/ComponentType.cs b/Core/ComponentType.cs index afeebac..284df6e 100644 --- a/Core/ComponentType.cs +++ b/Core/ComponentType.cs @@ -18,14 +18,22 @@ namespace Core STX, // Stores X into accumulator STY, // Stores Y into accumulator SEA, // Sets accumulator + ADD, // Adds X + Y then stores in Accumulator SUB, // Subtracts X - Y then stores in Accumulator MUL, // Multiplies X * Y then stores in Accumulator DIV, // Divides X / Y then stores in Accumulator + + JZE, // Jumps to a pointer in the program on zero flag + JNZE,// Jumps to a pouinter on not zero floag + JIE, JMP, // Jumps to a pointer in the program SFG, // Sets a flag to true RFG, // Sets a flag to false + + + GIE, // Gets if X is equal to Y PRA, // Prints accumulator PRX, // Prints X PRY, // Prints Y diff --git a/Core/DebugDumper.cs b/Core/DebugDumper.cs index 3e0ba78..8369cdc 100644 --- a/Core/DebugDumper.cs +++ b/Core/DebugDumper.cs @@ -120,6 +120,11 @@ public class DebugDumper comment = $"Set flag '{tokens[1]}' to false"; break; + // misc + case "GIE": + comment = $"Get if X ({x}) is equal to Y ({y})"; + break; + // Debug case "PRA": comment = $"Print Accumulator ({accumulator})"; diff --git a/Core/Doc.txt b/Core/Doc.txt index cd34979..1563435 100644 --- a/Core/Doc.txt +++ b/Core/Doc.txt @@ -4,6 +4,7 @@ X, Y registers Memory (8kb) :: Flags Z; Zero +E; Is Equal :: Helpers NVAR , ; Sets new a variable and its value @@ -27,10 +28,20 @@ DIV; Divides X / Y then stores in Accumulator :: Commands (flow control) JZE ; Jumps to a pointer in the program on zero flag +JNZE ; Jumps to a pointer if is not zero +JIE ; Jumps if is equal + JMP ; Jumps to a pointer in the program SFG ; Sets a flag to true RFG WindowSize = pixBufSize; public Dictionary Variables = new Dictionary(); public static int WindowSize; public int Accumulator = 0; @@ -17,9 +16,24 @@ namespace Core public int[] Memory = new int[256]; public string Filename; public int pointer = 0; - public int[] PixBufferR = new int[WindowSize]; - public int[] PixBufferG = new int[WindowSize]; - public int[] PixBufferB = new int[WindowSize]; + + // Declare them here without `new int[WindowSize]` + public int[] PixBufferR; + public int[] PixBufferG; + public int[] PixBufferB; + + public int f_IsEqu; + public int f_IsZer; + + public Operations(int pixBufSize) + { + WindowSize = pixBufSize; + + // Initialize them here so they use the correct WindowSize + PixBufferR = new int[WindowSize]; + PixBufferG = new int[WindowSize]; + PixBufferB = new int[WindowSize]; + } private int ResolveValue(string shite) @@ -34,6 +48,8 @@ namespace Core return StackX; case "RAY": return StackY; + case "f_IsEqual": + return f_IsEqu; } Variables.TryGetValue(shite, out int a); return a; @@ -45,6 +61,11 @@ namespace Core } } + private int booltoint(bool val) + { + return (val == true) ? 1 : 0; + } + public void ExecuteCommand(ComponentType type, string[] args) { @@ -96,6 +117,21 @@ namespace Core case ComponentType.JMP: pointer = ResolveValue(args[1]) - 1; return; + case ComponentType.JNZE: + if (f_IsZer != 1) + { + pointer = ResolveValue(args[1]) - 1; + } + return; + case ComponentType.JIE: + if (f_IsEqu== 1) + { + pointer = ResolveValue(args[1]) - 1; + } + return; + case ComponentType.GIE: + f_IsEqu = booltoint(StackX == StackY); + return; // math case ComponentType.ADD: @@ -134,87 +170,70 @@ namespace Core public void EquParserLoop(string equ) { string[] lines = equ.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); - while (pointer < lines.Length) + + // Pass 1: Collect labels with correct line tracking + for (int i = 0; i < lines.Length; i++) + { + string trimmedLine = lines[i].Trim(); + if (trimmedLine.StartsWith("@")) + { + string labelName = trimmedLine.Substring(1); + Variables[labelName] = i; // Point to the line index + } + } + + // Pass 2: Execution loop + while (pointer < lines.Length) { string[] tokens = lines[pointer].Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); - string command = tokens[0]; - if (tokens.Length == 0) + + if (tokens.Length == 0 || tokens[0].StartsWith("@")) { pointer++; continue; } + string command = tokens[0]; + switch (command) { - default: break; case "::": break; - // variables - case "NVAR": - ExecuteCommand(ComponentType.NVAR, tokens); - break; - case "RVAR": - ExecuteCommand(ComponentType.RVAR, tokens); - break; - case "SVAR": - ExecuteCommand(ComponentType.SVAR, tokens); - break; + // Variables + case "NVAR": ExecuteCommand(ComponentType.NVAR, tokens); break; + case "RVAR": ExecuteCommand(ComponentType.RVAR, tokens); break; + case "SVAR": ExecuteCommand(ComponentType.SVAR, tokens); break; - // memory - case "LDA": - ExecuteCommand(ComponentType.LDA, tokens); - break; - case "STA": - ExecuteCommand(ComponentType.STA, tokens); - break; - case "LDX": - ExecuteCommand(ComponentType.LDX, tokens); - break; - case "LDY": - ExecuteCommand(ComponentType.LDY, tokens); - break; - case "STX": - ExecuteCommand(ComponentType.STX, tokens); - break; - case "STY": - ExecuteCommand(ComponentType.STY, tokens); - break; - case "SEA": - ExecuteCommand(ComponentType.SEA, tokens); - break; + // Memory + case "LDA": ExecuteCommand(ComponentType.LDA, tokens); break; + case "STA": ExecuteCommand(ComponentType.STA, tokens); break; + case "LDX": ExecuteCommand(ComponentType.LDX, tokens); break; + case "LDY": ExecuteCommand(ComponentType.LDY, tokens); break; + case "STX": ExecuteCommand(ComponentType.STX, tokens); break; + case "STY": ExecuteCommand(ComponentType.STY, tokens); break; + case "SEA": ExecuteCommand(ComponentType.SEA, tokens); break; - // flow control - case "JMP": - ExecuteCommand(ComponentType.JMP, tokens); - break; + // Flow control + case "JMP": ExecuteCommand(ComponentType.JMP, tokens); break; + case "JNZE": ExecuteCommand(ComponentType.JNZE, tokens); break; + case "JIE": ExecuteCommand(ComponentType.JIE, tokens); break; + case "GIE": ExecuteCommand(ComponentType.GIE, tokens); break; - // math - case "ADD": - ExecuteCommand(ComponentType.ADD, tokens); - break; + // Math (Added missing operations) + case "ADD": ExecuteCommand(ComponentType.ADD, tokens); break; + case "SUB": ExecuteCommand(ComponentType.SUB, tokens); break; + case "MUL": ExecuteCommand(ComponentType.MUL, tokens); break; + case "DIV": ExecuteCommand(ComponentType.DIV, tokens); break; - // debug - case "PRA": - ExecuteCommand(ComponentType.PRA, tokens); - break; - case "PRX": - ExecuteCommand(ComponentType.PRX, tokens); - break; - case "PRY": - ExecuteCommand(ComponentType.PRY, tokens); - break; - case "PRM": - ExecuteCommand(ComponentType.PRM, tokens); - break; - - case "HLT": - ExecuteCommand(ComponentType.HLT, tokens); - break; + // Debug + case "PRA": ExecuteCommand(ComponentType.PRA, tokens); break; + case "PRX": ExecuteCommand(ComponentType.PRX, tokens); break; + case "PRY": ExecuteCommand(ComponentType.PRY, tokens); break; + case "PRM": ExecuteCommand(ComponentType.PRM, tokens); break; + case "HLT": ExecuteCommand(ComponentType.HLT, tokens); break; } pointer++; } - - } } -} +} \ No newline at end of file diff --git a/Core/bin/Release/Core.dll b/Core/bin/Release/Core.dll index 4d7f5c53c54966dcda944656848ced8ae420407b..f3ef5454a00bb0872eb036820e9cd6b4e81a377a 100644 GIT binary patch delta 5275 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 delta 4417 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 diff --git a/Core/bin/Release/Core.pdb b/Core/bin/Release/Core.pdb index 8477360aab3b660d8ec4cf283d1280d2f7c7ae81..8a9b328a7d2dcee36a1bbacfdbf15741912a2875 100644 GIT binary patch delta 3572 zcmZoz!`QHgae@Y~J_7^82L=ex-mJ)VnsE{nE8~aFf=urjCo3>sxhR``+N8BIAxr_E4=EJPU6Vt# zqa`y~Aa*b^Ff#07gRo;57#LzEpVaQIk7s6J&|+X{NM&YV&}Lw0C}L({&|zR`Xk=z! z&}Cp~n8wV&pvS<_Fq@fy!GM9GVIeaEgCPS$!#ZXL1|tTBhP})T48{x$4VRc17)%%# z8m==lFqkngG(2Z!U@&K3X!yg-z+l0^(7?#Tz+l6`&>+Ubz+lV3&>+piz+lh7P~Tw4 z!oc9bz|dgE!oc9fz|dgH!oc9nz|i2$!oc9dz|auD!oc9hz|auP!oc7TawrP}g9igc zLlz4IgBJrsLoN#ggEs?1Ljwx~gAW5kLn{jdgC7G!Lk9~3gFndOEDQ_*3=9nmSQr?B z7#JGXvM?|NGcYu4U}0bgWvFLpILN}l5XQjJaD#<`;obXx4R=`>7$O)L8a}WvFhnvi zG<;=YV2EX4X!y;-zz_#=IV%H0JOe|60xJVUA_GH%8Y=@s5(7hn8!H1tGRWbq3=F9Z z3=M&-3=C-u3=M^>3=HWE3=L(h3=EkJ3=LIKx`CB}A*&wbGFAqLYzBsgrK}7L`3wvV zyI2_*3K$p~_OmiD6frO~oM&ZVC}v=2xWdZ7P|Cp2@RF5*p^Sl{;TJO){UDdKF)&O5 zr42R)hN%n;4RhHT7z7y@8Wuz8wQLLw(-{~VcCs-r%-B3rPnVI=b@G0FU&dXVc@1te zZZc9~VthPV)kL20@nlz%&4Nvk#0Vx?85r2CCv%!Avw}peCmWgyvnDezF!)dQG&N@2 zG`ZF^+SrIeOAw^kh6zM6Ft9=>Fv-Tiz_yp2fq@akOUlpBDap^wD`A+tUrTNBTy6Hr z7fb~tbC^Mr3=9fT{U9DY0|VQk$v;h{c^#M-7%Z3}vWF%sn!T44fLgECW?;C(!oUEMeKa}HT)ln;GXp~l3j>2C0|NsG7sM@M3<`oEH?e|)3S&hpaItF)202FEKZjfq{XEfens9mV+D%O7d=?`~@{cia|k;W%5LGX-3w` zYt6&!D;O9U9I@7FiVO@5<{(EhFf_O`Ffb@HFf@cSFfgbvFf?#71TkKg;3lwx9JV8{R!DvS&aSquyf z{EVQ&sh*)hfRTYAmw}-{hLM3GkAa~ijLRoawW^ds9rNO|!u%3aTK?9l|KuK>SsH|pSVA#aK&;U}u z1yoiuFfeRoU}y-1s*i-yphOL-tWp>l81^tQG=MV1J_d${nV`Tuz`)S3oPmMiAT(VZ zVPI(31hpuinStRns7!~_wag3*XBZe7+MskdGXuj}28M&&nXb6GQVJr*`j~Eyl5}|$VO*ulcU@Rot0ftMkkL5M*blq?to8O#_284MXj85|iz8T1(R8H^ZYK@BekP<>Is zAjsg#Aj%-mAj%-eAP8!hflE_g20w-n1|%&?blm`{rYAQjCndCO>o+X9YFmH77a>Po7}MQV*)2L3JG{J%IuSM1wGh z4XQgq?I{=^M1wF$4pf~%O^39aKoZcv165zJstcqRDg{;tD%xPh8mP!E_mE|p&9`}) zhadAK9~KFP9|o;=%Tw z!#%j@RQI6?J-aXN-hFW8hL@K5^JqnuyTs*u#`!Zx%Vem!uJwv!Vz^%+$sPto-VR+n%v&a;SE+ zWB?1q4n_t>hAuV;JBopU!DaGE?e2O%W(Ec=28M~KA#=y{UjhTVLoPnX?H8TT)1p`CF2WAEa8wQ33Ru%>ZTLy*(E*1s`dj^L31_c%d z1_uU)22~aY1}6rF1`QSl24@C_1}hc@1{Vf~2749;1~&$V1}7E<26vD{Sr`~R7#JEN zSr{0+7#JF2SQr?*85kP!Sr{067#JE#SQr@m7#JGLSr{1nK@MkOUq%klwB(O3tq%$xyq_Q$FWHK-`WJ2kDRtAQwdXURl85pt|7#gOqGBD&bFf^=W zWnd^^U}#v!%D_;>z|gRdm4Ts{fuZ3rD+5C*14F|NRtAPL28M=PtPBhl3=9qLSs55A z85kNqvNAB#GB7kSvoSE#fr6TifuVtcp+SO;fuWIsp+Sm`fuWg!p+T38fuV(gp+TRG zfx)v46vS){4DAdI4UTLK44n)N4IXR^3|$Ni4PI;v4805t4S{S73=lKQ|TD+2=?_he2}Wmb?V_hds;VODN1fQ)5eXJBAR0J9hvco-NOxEUY;B+bCUAi}`V04jV$85kO@85kJE7#JG7 z85kJ2K>-S-IT?Z&I2m*pI2p{5uoiAfaI=H$3}XNV6UZ)325_{4m<-Yk z3=JX-kaTOyz`&ruz|i2rz`&pcwM>P9p&^KYfk6$Fvl$o|)EO8Wk{KX59poXM$&6Ow z^@0qR41x?&41x>>U>an#4-*4JCB$lQ;DW5vXJBA(U;?oqHYPDJFqlG31m*E`1_lO8 z28M=01_lNz28M<@1_lOe28M=u21uT7W?*2j1C=2R;Jn{3k%5815mW|DWq{=U1q_h9 zzYbJ9F)%c&XJBCPWMF7G$^gmh#~2`a{0;*HgD(R^!(9eQ9)HOI$>XmWAbI>710;`s zX8`4Kh6ZLvNET;dgk)_2Mo88MMRGK#3{YTXV2EL0Xi#K?pz2+6`tjF2qc%m~S9G1N0G0L3B`1H(cF zhK8w33=B&_H3Aa@!!ibjhDA&a3@aEI8dfneFsuaC5KIgVs~H#?wlFa;tYKhi*v7=b zunttLF)=W#XJBYJz{J3?k%6J%1QP?pCI*IvQ%npDTNoG`E-^7MY-M0*xWdH1upJcH zObiS=K;<%1Jp;oY28M&|tv~DHh$B85nLcFf{PigUWw!RvWyCoZ5_n9K&f7ak%7U2aiXKwBqt75P?2RYnb%3$ zh?NmkxPWslxZtyd@@FzY#Lq%$S*Z9^hRIn@&n8cBvYp)PY|O|o`JnUrjV=j{liZ$g z$uX!3g1mo&ak8Ad++-Ga0V64>5UA8;VsI@i4M;31PA&4u&o5vQW6%UEhsYV28GwNK zM8{2=JY<*{*G!i6@@G6UIoHddivikznZmmHn3ohIW7p(|-r}sFri|u9N8!l}oLE>v z1#`sYKp$~dP;r?DVzGfrufvR!^L)hEKzYTTd2*MJ8dEdR=1o3+%o77-CIzraXna_Z z1uE#bhRlDxuTW7_}L-CU0X@XVjZ~k5NhT zfg4CW1A_+x0|OHSD}#$Z1A~DW0|VpagDU2e1DIGCcTEmuvKG{2U|;a;1(S`LH5tn$$1=;;>#;I0XfrY} zG&3?VfY=A1G>8qu;fxFn&lwpQ1O?>-tQSHUA(5`2K)S@pz`)GPz~BU>ConKDoM2#J zu=vNqz#zz3q|LxkpdrJ+z-0weY4HLgY6=&v|G~(>U~vf|Y!4TfV`5;i*aH#ugo_$6 zfz1qr3s^%0BH;q-Ap(hT0eKb%28&{dL78w-knw_?MTHCu^-$M2LNr#wmHcLAV6d=; zXl#UwGC-7d!Ua?y0u$i^H$eKBA^K**MRP&^dCLrT{zABD6B9!{gT-}-@JhJwbdchM z5Ydfr(KR5^)ezC0aM7a>`wzkeL_qepK$M+?i|znv&Vz_vgo|zm*)PahbQ3Oe0Hn?x zqV6GFR2pQaAw={gTvQw+3X&4!5T7N?Eyy7;ONc>(nSp^#n1`(zl#~Uz1$pvi85p>V zJ~A*AfOtI;3=E7KVxZ*6W$}!OfuSC(nHO0zA5=51ARk1tF(X5PAg>@Fisn^J3=B|( z9OAR`z6GB9xI$Q0R5=3^IAUBbw~P*ly#P$0;UFhrQkq6cIK ziy&(RZ_!HT$@AIe%oCv^k-SC9EDQyL5KE!Xg7{ZM3F0F&sM09jqE(aUvC9i`g9KQ0 z*aTSwS)+N2^jSeB*56@ZU?^J4%1{6br=pXrh#)?METf?eF?B6S@GDF?Hyc9vWE2^B zgp77gktrKI?4VAD#)x)GLQypvT4ZSZ6s<;RfCjdBBxYXGILQUJG8LW z)nqQ327tMroWSNT=!a3sFGECKSAaj_isiZD4FfhDfU|`q};ettaP_koWV5nnc zVCZ6GV3@|pz_5XlfkBH!d=?iIi^MDqRt5$(Zl-Eb0I{*>>oPEKf#i6Ys%0k6;*zNc ziE|3FfHSlf6H_%f;8?^V`li%E{eU70@!33(YLIj-#DfsgT8K9xzJ}^%ss;(dI54vz z{CXxPn1Fa>tuiEVG#D6I#PtNRNr8e-+!&h_6U0u4W&ap8*ccetYC+0D?gTjzA`=0z z7pA%%?6yc$L9kd97O`lk7&vM*^gv+=u@%M!c@)BC5uYW*s-XcY{UCuV$T|fgqx}yQ z;X7Fv7+4t?CO_s@uNULi)@Ng%l`qV|z{SH+w3VHqAYT+zxQKFy=j$^taPdOokCPo7 zP3+B-{iNW|e^It`}sNcZ_spWnf^~ z3`*XN3=C1s3=At785o*Cj3Z7br3SCA~A3i3awPGAMKgJ4aKgP<1AONcO{#j_J6dKn^$XdZ0@iSC7n z?u2D~D``+Iy&NKnXdO)kIg_;r(K?y{5rDOh>bb0rLPQYFBTbM=aS)Rb&7(AkvO>5| z3LyfB*3n;(yVM~15UnE{h%!X$$Q>d8X&u#rT7efq8s9;L5zP}@kmwDF=wY}wT_FO9 zwv7Ww87N2uS&I;DD^U4mF&m;5(YDe7scnUbLYh`!`#}YsMLt9r(YBHRDUO7QBAPu$ zAW>(C=u3E5Xn;g@85tOu!~|J1*clkuEaX8vaTre!#FK#Wm_a;A5U(Dj^edkO9gmD*uxq>k6L@<{h#%%&~1qACMuGKDM zk{5x>X=gFXbHUhgO!C|?b`X<14~*@`B+mih8L_13>!e~;F6-u zy!2vFB{YMZf#D201A}sCFhhzk1A_nq1B0@AsHY34Cnn6muxD~Fzdoo7#lXqH0LJC{q)4`-VGf3n! zn9T!byMfu#Op96A7=AK>$SSZ%BGVLRHU(ZG7}jteOkM$#xnQyqOuhk=|H0%JFv-pcQeOyW z_khV-Fu4Uxz5tUmz~me-IR!-4Hyi^|4NJk~LNGZ2OqPPl4`7lRZ1fH=`w7ErMmC0z zEb|$~7&@6}FtRb!v4F@Q3?P!55k&T|E@xz8sAXKu$i|Qhmc7XU5?Ki*8^L4&D@bL% zGg$gJ%Y4QFP!FA98bb=>d^I0%pk_Fj**!m0?Y%+fr54q znAgY<$GnY^mB9-%NWjp@;LEz3k&Ph$%xhzCVm!de&QPNTimNsT6&3*oPKXWlP%F3? z7#J8C0zpLr1E_LojIxCLO_~CzuQblaXLDk)eyFUX&pd%qawum0)rr*tm@h?ySZPonST(nB2&~ z!Q#xYkzqcoJHtkX>&!k38yPHF0~tCQ+884kKwTzcFlN z*v`zs$icwDAjZhSz{4QT$iX1Mpuot%Ai|)^$iX1NpvB0+Aj6=~SkJ+rz+l42!Jxum z$;iQ=!C=S8!Jxz7%*erDz~I5i!C=DR%gDiC!4SmA!C=D>&d9;wz!1a8!QjG>$jHIq z!H~wt!QjJ?&B(zJz)--*!4Sew%E-YG!BEA>!4Shx&&a`$z|g|T!H~kx$;iQw!O+LZ z!H~l+nNg2{o8bhbUIc?M!$n3t25E*5jCu^p3_lt57_=Ffne-Tp!K5_9wt9!x$dGMUfa)0M#sgri&;y!@S=q^cGF+3FD15gTPGg8? z@MI`vaD{7UV0K_&;PhhfV~ApKWnf_UV(yJDE=1W zVds$LTXEW>H||J zU|^78WMG)!%D^x|oq-`J*d@62(3XooLXUfPR%tEeV0J9pT%*FlD0Brn_6LfHcObUH jL`5;C2X2$ssU}QT(7LgiPwf{o6NC9?L9O?U6Ajn_tSdXE delta 4417 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 diff --git a/Core/obj/Release/Core.pdb b/Core/obj/Release/Core.pdb index 8477360aab3b660d8ec4cf283d1280d2f7c7ae81..8a9b328a7d2dcee36a1bbacfdbf15741912a2875 100644 GIT binary patch delta 3572 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 delta 4417 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 diff --git a/MathLib/bin/Release/Core.pdb b/MathLib/bin/Release/Core.pdb index 8477360aab3b660d8ec4cf283d1280d2f7c7ae81..8a9b328a7d2dcee36a1bbacfdbf15741912a2875 100644 GIT binary patch delta 3572 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 delta 86 zcmZqBXwaC@!L0FN!N%^d>;m==-?*oT%<)_H{ivkH$KImN6F34Gbu>OK$YNk%U|?ck sV31*CVECcV!0>~Ufgvc^B{=b?aN*Mjy6&^nw>j)q+sC(=hwBR`0JlRQ?f?J) diff --git a/MathLib/bin/Release/MathLib.pdb b/MathLib/bin/Release/MathLib.pdb index 79d6d94264246c53dbee67155b8b99ebe3c610ff..b9bafc9755a38308abcb8d28f6805619b776082f 100644 GIT binary patch delta 48 zcmZpuX{g!2p}?x(Wh&XVnOEVvu!O?$g;|UY3=APb6)_vqSiNU6YuPW`9k*w*jL8#D E0DTn@KL7v# delta 48 zcmZpuX{g!2p}@L2wwgwS9b>WlWxM F0syic5>WsE diff --git a/MathLib/bin/Release/main.asm b/MathLib/bin/Release/main.asm index 6a2514d..10fa040 100644 --- a/MathLib/bin/Release/main.asm +++ b/MathLib/bin/Release/main.asm @@ -1,25 +1,104 @@ -:: variables -NVAR var1, 12 -NVAR var2, 10 -NVAR outcome, 0 -JMP 8 +:: Some insight on this +:: @meta is the metadata discriptor +:: +@meta +:: Set to codepage 610 +SEA 610 +:: codepage always gets stored at byte 0 of mem +STA 0 +:: set interupt 0 to 615 (startup) +SEA 615 +:: store in mem +STA 1 +JMP ready +@readyjumpback +LDA 24 +JMP ACC -:: setup -SEA var1 +@ready +SEA ready LDX -SEA var2 +SEA 8 LDY ADD -SVAR outcome, ACC -SEA outcome -STA 4 -PRM 4 -JMP 21 +STA 24 +JMP RegisterModes +JMP parse +@RegisterModes +NVAR m_add, 068 +NVAR m_sub, 078 +NVAR m_div, 088 +NVAR m_mul, 098 +NVAR mode, m_mul +NVAR A, 10 +NVAR B, 10 +JMP readyjumpback -:: end -RVAR var1 -RVAR var2 -RVAR outcome +@madd +SEA A +LDX +SEA B +LDY +ADD +STA 8 +JMP EOF + +@msub +SEA A +LDX +SEA B +LDY +SUB +STA 8 +JMP EOF + +@mmul +SEA A +LDX +SEA B +LDY +MUL +STA 8 +JMP EOF + +@mdiv +SEA A +LDX +SEA B +LDY +DIV +STA 8 +JMP EOF + +@parse +SEA mode +LDX +SEA m_add +LDY +GIE +JIE madd +SEA mode +LDX +SEA m_sub +LDY +GIE +JIE msub +SEA mode +LDX +SEA m_mul +LDY +GIE +JIE mmul +SEA mode +LDX +SEA m_div +LDY +GIE +JIE mdiv +JMP EOF + +@EOF +PRM 8 HLT \ No newline at end of file diff --git a/MathLib/bin/Release/main.asmdump b/MathLib/bin/Release/main.asmdump index d1730ef..5682240 100644 --- a/MathLib/bin/Release/main.asmdump +++ b/MathLib/bin/Release/main.asmdump @@ -1,25 +1,104 @@ -[0] :: variables -[1] NVAR var1, 12 :: Create 'var1' with value of '12' -[2] NVAR var2, 10 :: Create 'var2' with value of '10' -[3] NVAR outcome, 0 :: Create 'outcome' with value of '0' -[4] JMP 8 :: Jump to line 8 -[5] -[6] -[7] :: setup -[8] SEA var1 :: Set Accumulator to 'var1' (12) -[9] LDX :: Load Accumulator (12) into X -[10] SEA var2 :: Set Accumulator to 'var2' (10) -[11] LDY :: Load Accumulator (10) into Y -[12] ADD :: Add X (12) and Y (10) and store into the Accumulator (22) -[13] SVAR outcome, ACC :: Set variable 'outcome' to '0' -[14] SEA outcome :: Set Accumulator to 'outcome' (0) -[15] STA 4 :: Store the Accumulator (0) into Memory address 4 -[16] PRM 4 :: Print value of memory address 4 -[17] JMP 21 :: Jump to line 21 -[18] -[19] -[20] :: end -[21] RVAR var1 :: Remove variable 'var1' -[22] RVAR var2 :: Remove variable 'var2' -[23] RVAR outcome :: Remove variable 'outcome' -[24] HLT :: Halt execution +[0] :: Some insight on this +[1] :: @meta is the metadata discriptor +[2] :: +[3] @meta :: Unknown command +[4] :: Set to codepage 610 +[5] SEA 610 :: Set Accumulator to 610 +[6] :: codepage always gets stored at byte 0 of mem +[7] STA 0 :: Store the Accumulator (610) into Memory address 0 +[8] :: set interupt 0 to 615 (startup) +[9] SEA 615 :: Set Accumulator to 615 +[10] :: store in mem +[11] STA 1 :: Store the Accumulator (615) into Memory address 1 +[12] JMP ready :: Jump to line ready +[13] +[14] @readyjumpback :: Unknown command +[15] LDA 24 :: Load memory address 24 into Accumulator +[16] JMP ACC :: Jump to line ACC +[17] +[18] @ready :: Unknown command +[19] SEA ready :: Set Accumulator to 0 +[20] LDX :: Load Accumulator (0) into X +[21] SEA 8 :: Set Accumulator to 8 +[22] LDY :: Load Accumulator (8) into Y +[23] ADD :: Add X (0) and Y (8) and store into the Accumulator (8) +[24] STA 24 :: Store the Accumulator (8) into Memory address 24 +[25] JMP RegisterModes :: Jump to line RegisterModes +[26] JMP parse :: Jump to line parse +[27] +[28] @RegisterModes :: Unknown command +[29] NVAR m_add, 068 :: Create 'm_add' with value of '68' +[30] NVAR m_sub, 078 :: Create 'm_sub' with value of '78' +[31] NVAR m_div, 088 :: Create 'm_div' with value of '88' +[32] NVAR m_mul, 098 :: Create 'm_mul' with value of '98' +[33] NVAR mode, m_mul :: Create 'mode' with value of '98' +[34] NVAR A, 10 :: Create 'A' with value of '10' +[35] NVAR B, 10 :: Create 'B' with value of '10' +[36] JMP readyjumpback :: Jump to line readyjumpback +[37] +[38] @madd :: Unknown command +[39] SEA A :: Set Accumulator to 'A' (10) +[40] LDX :: Load Accumulator (10) into X +[41] SEA B :: Set Accumulator to 'B' (10) +[42] LDY :: Load Accumulator (10) into Y +[43] ADD :: Add X (10) and Y (10) and store into the Accumulator (20) +[44] STA 8 :: Store the Accumulator (20) into Memory address 8 +[45] JMP EOF :: Jump to line EOF +[46] +[47] @msub :: Unknown command +[48] SEA A :: Set Accumulator to 'A' (10) +[49] LDX :: Load Accumulator (10) into X +[50] SEA B :: Set Accumulator to 'B' (10) +[51] LDY :: Load Accumulator (10) into Y +[52] SUB :: Subtract Y (10) from X (10) and store into the Accumulator (0) +[53] STA 8 :: Store the Accumulator (0) into Memory address 8 +[54] JMP EOF :: Jump to line EOF +[55] +[56] @mmul :: Unknown command +[57] SEA A :: Set Accumulator to 'A' (10) +[58] LDX :: Load Accumulator (10) into X +[59] SEA B :: Set Accumulator to 'B' (10) +[60] LDY :: Load Accumulator (10) into Y +[61] MUL :: Multiply X (10) and Y (10) and store into the Accumulator (100) +[62] STA 8 :: Store the Accumulator (100) into Memory address 8 +[63] JMP EOF :: Jump to line EOF +[64] +[65] @mdiv :: Unknown command +[66] SEA A :: Set Accumulator to 'A' (10) +[67] LDX :: Load Accumulator (10) into X +[68] SEA B :: Set Accumulator to 'B' (10) +[69] LDY :: Load Accumulator (10) into Y +[70] DIV :: Divide X (10) by Y (10) and store into the Accumulator (1) +[71] STA 8 :: Store the Accumulator (1) into Memory address 8 +[72] JMP EOF :: Jump to line EOF +[73] +[74] @parse :: Unknown command +[75] SEA mode :: Set Accumulator to 'mode' (98) +[76] LDX :: Load Accumulator (98) into X +[77] SEA m_add :: Set Accumulator to 'm_add' (68) +[78] LDY :: Load Accumulator (68) into Y +[79] GIE :: Get if X (98) is equal to Y (68) +[80] JIE madd :: Unknown command +[81] SEA mode :: Set Accumulator to 'mode' (98) +[82] LDX :: Load Accumulator (98) into X +[83] SEA m_sub :: Set Accumulator to 'm_sub' (78) +[84] LDY :: Load Accumulator (78) into Y +[85] GIE :: Get if X (98) is equal to Y (78) +[86] JIE msub :: Unknown command +[87] SEA mode :: Set Accumulator to 'mode' (98) +[88] LDX :: Load Accumulator (98) into X +[89] SEA m_mul :: Set Accumulator to 'm_mul' (98) +[90] LDY :: Load Accumulator (98) into Y +[91] GIE :: Get if X (98) is equal to Y (98) +[92] JIE mmul :: Unknown command +[93] SEA mode :: Set Accumulator to 'mode' (98) +[94] LDX :: Load Accumulator (98) into X +[95] SEA m_div :: Set Accumulator to 'm_div' (88) +[96] LDY :: Load Accumulator (88) into Y +[97] GIE :: Get if X (98) is equal to Y (88) +[98] JIE mdiv :: Unknown command +[99] JMP EOF :: Jump to line EOF +[100] +[101] @EOF :: Unknown command +[102] PRM 8 :: Print value of memory address 8 +[103] HLT :: Halt execution diff --git a/MathLib/bin/Release/test.asm b/MathLib/bin/Release/test.asm index 14bb9f0..e4688ad 100644 --- a/MathLib/bin/Release/test.asm +++ b/MathLib/bin/Release/test.asm @@ -1,2 +1,10 @@ :: variables -NVAR \ No newline at end of file +NVAR m_add, 1 +NVAR m_sub, 2 +NVAR m_mul, 3 +NVAR m_div, 4 +NVAR mode, m_add +SEA mode +STA 0 +PRM 0 +HLT diff --git a/MathLib/obj/x86/Release/MathLib.csproj.AssemblyReference.cache b/MathLib/obj/x86/Release/MathLib.csproj.AssemblyReference.cache index d919caf46677dee41c5e60b68caa51b6dad894e4..20ccdab0dffd19622c4626ca1ef7df29e37a5a4e 100644 GIT binary patch delta 16 Ycmdm_wMlD&7ps)%EbE0E{U3_}05pCEQ~&?~ delta 16 Ycmdm_wMlD&7wf%EcXdoQ`ac!{06wG#TmS$7 diff --git a/MathLib/obj/x86/Release/MathLib.exe b/MathLib/obj/x86/Release/MathLib.exe index cc2d4d3e334ef8498739cabfafd87a31d939470d..b4daf57ae399fde615092562b785ad43a5b39a59 100644 GIT binary patch delta 86 zcmZqBXwaC@!K|=+;l}Q->;hHZ1y9!XN4u}uyLrxUnd#=6CvXHX>L@H;M1& delta 86 zcmZqBXwaC@!L0FN!N%^d>;m==-?*oT%<)_H{ivkH$KImN6F34Gbu>OK$YNk%U|?ck sV31*CVECcV!0>~Ufgvc^B{=b?aN*Mjy6&^nw>j)q+sC(=hwBR`0JlRQ?f?J) diff --git a/MathLib/obj/x86/Release/MathLib.pdb b/MathLib/obj/x86/Release/MathLib.pdb index 79d6d94264246c53dbee67155b8b99ebe3c610ff..b9bafc9755a38308abcb8d28f6805619b776082f 100644 GIT binary patch delta 48 zcmZpuX{g!2p}?x(Wh&XVnOEVvu!O?$g;|UY3=APb6)_vqSiNU6YuPW`9k*w*jL8#D E0DTn@KL7v# delta 48 zcmZpuX{g!2p}@L2wwgwS9b>WlWxM F0syic5>WsE