From 23717cdfc1fc9cbc922dc780dae438ed03379782 Mon Sep 17 00:00:00 2001 From: Meruemon Date: Sat, 19 Mar 2022 11:32:55 +0100 Subject: [PATCH] changed how TMR0 gets incremented and something at gui I can't remember --- bin/Backend/Microcontroller/RAM.class | Bin 18881 -> 18908 bytes .../PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.class | Bin 2334 -> 2390 bytes .../PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.class | Bin 12095 -> 12376 bytes .../PIC_SIMULATOR_GUI_JAVA/GUIRegisters.class | Bin 4071 -> 6042 bytes src/Backend/Microcontroller/RAM.java | 501 ++++++++---------- .../PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java | 9 +- .../PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java | 8 +- .../PIC_SIMULATOR_GUI_JAVA/GUIRegisters.java | 152 ++++-- 8 files changed, 322 insertions(+), 348 deletions(-) diff --git a/bin/Backend/Microcontroller/RAM.class b/bin/Backend/Microcontroller/RAM.class index 473dd15c1f2aaf3f052f15ccf170f4592306f588..f8ec01b82f287bf6ddb304e39c3d6d4a48455e7d 100644 GIT binary patch literal 18908 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 Irm^t<0K+sPr~m)} literal 18881 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 F__I diff --git a/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.class b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.class index 62b73809b6ef8952f47aa0a54d967140ec65e844..11cc457e1d7039e27cd0c31e1a46efca961184a6 100644 GIT binary patch delta 671 zcmX|-%TH5L5Qo3h-h2D-A`MZKl9)&UX$$Q|d;*Hf%T@{$M6{sPDz(-CMcVRk0jL{y zhMa|o3pZ|wF-BTrm%1@AaYtOZa-oS^{{c^FLQXO{zsbxuGr!k$yLIovHrb$CE)k6S4 zaPVPrIcX(V@>XAVF1zHWlk*kO1%csw^P=!yzj(pG>E6 zR=SW$%w^Nr(BeYcO)pm}fJ2pE#N;YN@}IrQ7&aMUR36n@#F!k=j?KiVaS>y}}f*5Ry}@IXm9t$%maCNmSMTwWH8QRy?n@{3V$y~Ke5{E@v5Oa5?J8^dM%@e-{g zfii9J)uJ^v3J@OAK~t0k5hE7m1dMDaLr0 z?$zx(T-%E`yn30bxW`?6C2sAI*u#7EBKN$yrYZv>DC?c=8;vArB26=E9A}*tUf|;u ze%>g9x9Q_O{d{DAZw#_an4d)W#Sp)VvY;;Nsoq7FMWxh*JYq@Nk>EKw^4Ju8lLE`w o6?d2wR?!r>TTOf{zdGBSN0pA@WNeRTs$P`uRi5C9QZ}Cc2QZb66951J delta 665 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 literal 12095 zcmc&)d3;nw@~?U`$xJ2>m`n&aI(R|`383PEuqF^78UzV~(VvTxZ6?!|)#X@phmBa5kgOu~()oOn~k#F|ml>T1THS6exG!lY?q&#ResR^^n+ z3LxX1c)BW@@R66P>m||I(YY1LIkEVRinFpKg-m^Aq#`;eRpHEb;;D+t##GFW*T#}q z-AOQc-Rk&ku+>&Y8)wM}C#B=5Sc_8uatxbj!KC3#om}~1G!`F|h_*OPgKB@s4m12% zphOm!>?BiTV$IIvXhSm=8TvyO=`aTi6}zKmI*qfc+__GYsjOC=FP(}tS5zhv(Rp$* za23_XX2heZbVBX*Fg$0diCK|l)*L<(lfCXFXFAidS(#KjtqHfK){QnfiHb>1v`G`> zC}8j0P?d0^vs&F)JXPnUn5+vgVCoXf>|D)jV&WRveVx-9O+-^}VlY$pj+>Bst4TR6 z>Xcc&AsuE7?a(_BCv{~TGL@Q79#GwM>&lp|jhVqJ8$a|p4> zt)3f8X@(+qO3ay~ztahK5RK1pM!C&y0=E!wM@JL0CeL(4HHzKZ*o>Je(+j%eV~q*7 z5$c?9o0~=D0xrIrNXfUPGclS@st-$Nl9P1INDFWMjy*->Q{}7wY8v5`b!ky79W!1w6Oo0K7a+{n0 zd8pE+5md$G=|5mf5iyOnsf@b$Xbg^^j51GBej3MAFd7;e^V3-{AX&Fby5VLRUffT$ zuy@f1xS*EH(#cdb-jo?ShpFeGL&;Vr);QBiU?!9!R2OSWH%G<$g&Q1rI$3cNldm$K z1Y62alks`c+Nhs!hEAi?@mbK<@OZZ=o%GZBxEH8T9z~4&5assM|KMbqjfAnq1pKU@ zevI#DsjX1>n3E9t#Z29@^vlwTG&~y&;4&F&fLpI?oSBHFQsL=oY{Yc@1Yc5C!ok}*&^b^e0ueDctQ23(Cc(eYjpYU!JoaZz+3Ax(2Hl0kv{B#+v zUp$hZu7D85^MvIhrz_HxcnB2992x>jf%9sR#r=dklCOn;#Q}wr*{k!@e5@~?$WJ$z z`@#Y@;cVi9!piIT>8G$v<%KeYpJ6Y`>x5gi0{Q6|ASvIIBi#y;@<2J#?YMUFL*a&b zVS#@76)56|GE(=`U65E!T=WrA|1~5wB%E~M@tXYf8%S)Z=|PF^!{)^Y`RRVJi9ZnE zW zZvUE^8f|)y+jJ_OCR3lZ>2!@fZPRc%!$)mUC|M-?9A;jk04=3Tne&WI-KmFkpR;K> zJr8+9PpjkdkV754{Vy0W#YZnf&9j>sjVJ=9<;DZ_0=+C7dIbl-h6YTLbzZaSPxLyh zMLB$Dx|2vaO?9!$@Pc&jpL1{7Rp3};BX8K$lX?jDXPbIy>`j|`YwT^CeB_tWzt~hn z0m0t2shDgZy$2=x-XR0DhTfOGeE<=d&*u3g^U)7&>O*~H*YC@UAKP?<{@&kgI#Oew z*c8^--)-uru}^I}iu%fof7o=i#y+#@7(M#AO~-2N3!9G9qhH!|yr%urrv4iH%BBGt z``V^*js44}h@SC{O#?OU-!`3~v2Se}q_OX8s?dA~Z5pgFW}AknQTEt0RAU7;ov1ON zO()4kGZ)z$5Z@ib1$B%XlQL}E+)0MJU>K@9KJK)*@mQl8>tb_I#_Wc4thq^)sUez> zNgU$PCe1HH|#!1A6 zaBESOZA^3$c#&GfQ5^XnBvviS3B(oPQ}{F=pUTuL>qzn?tN3g_ow3!T8BVIsO(z=R zGP?HHa;Q+oJE7qcr!h5LL@>hUkxCVt^J3s4K9j3_T-h-SnTMRH#pY2w8bVjmoyjg@ zZpB2zaw$Y~PPApXpAo+Fs!F)wCO16KO^0QJ;YNf!KMKoN0z8h-@=3H`s?N}Hy3J=R zfwjtt&2c}E|Bs6$@gxSY)d@CF6m9W3cntlFpyfY&U5_J<=~k0EJ{g95Qn7frNgl?A zgzLHip2Fw*cq-KC2cΝ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 diff --git a/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIRegisters.class b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIRegisters.class index efbf367a156dc49711f84f4080c8c37c112a9dab..6d75bd0e85372d8f8e55bfe2c05202057e377d60 100644 GIT binary patch literal 6042 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 literal 4071 zcmb7GTXa-c8UFUPFu4v?r#xT5qHK@mX}T20@3Akc4=YGxU$)J%Twglg-Y2lJ&|Kbe0i)I177L<8 zwl%R|V3pq9+t$hWr&Gad++%=v#~Qub?j-HFowP?h$4v!!2vmEflvH4~F_gA5BUaK* zGtOF&=;~`!e7}{<+WLH%j^Aal|m29WPD#P6+u^O@rU!dOwJ&?adR1L(sx@h`U*cYxZPU_O*RO2vl~{wya_r+SCP<0ylUS=n?Tmpb6eZm+ zQKh5@n9ts}Tbz`t7_|_SSf>`csUA7Kk)z$*9DqQK{C(Bx(#dA#s!8 zj!AsRa7l@q4VRMmtl_34HW@B0af{(RiO-qnKO%7}WI1L8#DF^BQHk5s;g1Vc3~UVw zM6Em_vDs`tC2>0{D=2$X;wfwqSZ|Gv=E^XWaMfhWD21mb&MF0&vAz389k1O=W>`i7 zUzT`AEvy~RI?2)SI22eDb5eG9c5>KGC#>Nl$68g)WfS&WX-8pSSnN$WZ0T*W|7X~? zl;NuaH|ff?roCuK+8Nzvjkmd}jF+}p0(AQY)R*B!zaFC@t(Z0IX1xlWN4;u=d5N## z0#nM%nI&5G>r(A9vMwuSjoay#x_))<`4u$(s>Ew}U7%!~r>oF+D(RaNU(ZQrmE!A{m% z+|8y(Y}Hn*iEue=Q>kLP^2z{99%`%*m63~}oNo@79Ihbdh~XP*z-Y?xqA7=hrkn(t zviCJ*t82>U)|CCLDLYnEHmIg-N=?~{nz9i!WgBYBCe)NIs3{vzQ?{R`Y(7oddYZEF zG-bbO%I?yXy+x|-#6inRrgd@U&F2i>@l#_hiwMl@52rQJAHW2z%C#582Eq>;|3n`;edgMeK=^~7kxNn zpjD#17%4z@0U9qrP60YzfF=u&TYydw`EkkQ*{so-_MMtF@G&2rG|=~Pu6_}x`JCbN zrK?O$1kdvQB&R8`9mP!J8Wvj(-zs&D{M5AY`*DCDg2Np96P)nVoakpc!{@1WiADTF zPVAp^LjRVt`46=77Z&(GajPiDZK4{R#b(?tnm8VJqgL!kgBZY8F@~t{`01O$9`QK# zic@ICbM!!(!oc(R3QozMauy?iveGs9v7V?|BOMW) z2Z}OUq?16DRVY{Lq6Y0Ot@}7_+gZ>Z{14cVCKmW!97H#|SmwQW7!P0seQ*#*7X3Jl z0hauOc#*3Y@DSd{Al}6hFo5_mj^aaD_yva90wef6M)4=u_y}Y88^-Z>Oo$>JXFDXt zDol!XNQq5w*%nix5huh>q(v(-q8*;-!!+AtMjXMc7{;R_g~vpOzb|t*DbC;taSn50 z9;d`xcuHKx8F2+qi>o**eu`(rukft+4W1Lf!}H>g{4e+j=ft0JUi_6`|9{{m@iAVG zlwm%??|ftfE<|eZN@No*Mr!eDWGh~aG~;#Mg4L$Y{1z;aM0wM1vk4>W@5nSG{zb$I zuG?T6L%e4Z?+uVDzAeOeg!qFYz9+=TL;OI99}MwBA$~T*pA7LMA>LMeF6Fp~f92rc zhh*Y5a%OGjZ$Km7!7f~8^4~>*7d(phki`3#!4;grcX1BiV?eIvrxM=CO(p&X`hjSm zT@?ssAsD6VTL=6ov{CpQ1-?VW`WuLyT7Q|1Kg%b9s%8$VGn6;{xx)A9(| 127) { @@ -100,127 +99,85 @@ public class RAM { if (rp0Bit == true) { bank1[element] = value; } - } - - else { + } else { //Bank0 Registers if (rp0Bit == false) { switch (element) { case 0: { bank0[bank0[4]] = value; }break; - case 1: { set_TMR0(value); }break; - case 2: { set_PCL(value); }break; - case 3: { set_STATUS(value); }break; - case 4: { set_FSR(value); }break; - case 5: { set_PORTA(value); }break; - case 6: { set_PORTB(value); }break; - case 7: { bank0[7] = value; }break; - case 8: { set_EEDATA(value); }break; - - case 9: - { + case 9: { set_EEADR(value); }break; - - case 10: - { + case 10: { set_PCLATH(value); }break; - - case 11: - { + case 11: { set_INTCON(value); }break; } } - //Bank1 Registers - else - { - switch (element) - { - case 0: - { + else { + switch (element) { + case 0: { bank1[bank0[4]] = value; }break; - - case 1: - { + case 1: { set_OPTION(value); }break; - - case 2: - { + case 2: { bank1[2] = value; }break; - - case 3: - { + case 3: { bank1[3] = value; }break; - - case 4: - { + case 4: { bank1[4] = value; }break; - - case 5: - { + case 5: { set_TRISA(value); }break; - - case 6: - { + case 6: { set_TRISB(value); }break; - - case 7: - { + case 7: { set_EECON1(value); }break; - - case 8: - { + case 8: { set_EECON2(value); }break; - - case 9: - { + case 9: { bank1[9] = value; }break; - - case 10: - { + case 10: { bank1[10] = value; }break; - - case 11: - { + case 11: { bank1[11] = value; }break; } @@ -230,126 +187,143 @@ public class RAM { } //Bank0 Registers - public synchronized void set_TMR0(int value) - { + + /** + * Set TMR0 to value & 255. + * @param value to set TMR0 to. + */ + public synchronized void set_TMR0(int value) { value &= 255; bank0[1] = value; } - public synchronized void increment_TMR0() - { - Timer0Prescaled++; + /** + * Increment TMR0 by 1 if PSA == 1 or by prescaler rate if PSA == 0. + */ + public synchronized void increment_TMR0() { + int iValTMR0 = get_TMR0(); + int iValIncr; - if (Timer0Prescaled == get_TMR0_PrescalerRate()) - { - if (bank0[1] == 255) - { - set_T0IF(true); - bank0[1] = 0; - } - - else - { - set_T0IF(false); - bank0[1]++; - } - Timer0Prescaled = 0; + //Check assignment of prescaler (PSA == 0) => TMR0; (PSA == 1) => WDT + if (get_PSA()) { + iValIncr = 1; + } else { + iValIncr = get_TMR0_PrescalerRate(); + } + + //Check for overflow and set bit and timer + if ((iValTMR0 + iValIncr) > 255) { + set_T0IF(true); + set_TMR0((iValTMR0 + iValIncr) & 255); //TODO 0 or &255 + } else { + set_T0IF(false); + set_TMR0(iValTMR0 + iValIncr); } } - public synchronized int get_TMR0() - { + /** + * @returns value of TMR0. + */ + public synchronized int get_TMR0() { return bank0[1]; } - public synchronized void set_PCL(int value) - { + /** + * Sets PCL to value. + * @param value PCL is set to. + */ + public synchronized void set_PCL(int value) { bank0[2] = value; bank1[2] = value; } - public synchronized int get_PCL() - { + /** + * @returns value of PCL + */ + public synchronized int get_PCL() { return bank0[2]; } - public synchronized void set_STATUS(int value) - { + /** + * Sets STATUS-register to value. + * @param value STATUS-register is set to. + */ + public synchronized void set_STATUS(int value) { bank0[3] = value; bank1[3] = value; } - public synchronized int get_STATUS() - { + /** + * @returns STATUS-register. + */ + public synchronized int get_STATUS() { return bank0[3]; } - public synchronized void set_FSR(int value) - { + /** + * Sets file-search-register to value. + * @param value file-search-register is set to. + */ + public synchronized void set_FSR(int value) { bank0[4] = value; bank1[4] = value; } - public synchronized int get_FSR() - { + /** + * @returns value of file search register. + */ + public synchronized int get_FSR() { return bank0[4]; } - public synchronized void set_PORTA(int value) - { - if (((value & 0b00010000) == 0b00010000) && get_T0CS()) - { - Timer0PrescaledRA4++; - if (Timer0PrescaledRA4 == get_TMR0_PrescalerRate()) - { - if (bank0[1] == 255) - { - set_T0IF(true); - bank0[1] = 0; + /** + * Sets PORT A and checks whether TMR0 has to be incremented or not. + * @param value + */ + public synchronized void set_PORTA(int value) { + //Check if PORT A RA4 was set/cleared + boolean bActualRA4 = get_RA4_T0CKI(); + boolean bNewRA4 = ((value & 0b00010000) == 0b00010000); + + //Increment TMR0 if RA4 was set/cleared + if (bActualRA4 != bNewRA4) { + if (bNewRA4) { //rising edge + if (!get_T0SE()) { //rising edge increments TMR0 + increment_TMR0(); } - - else - { - set_T0IF(false); - bank0[1]++; + } else { //falling edge + if (get_T0SE()) { //falling edge increments TMR0 + increment_TMR0(); } - Timer0PrescaledRA4 = 0; } } - + //Set PORT A bank0[5] = value; } - public synchronized void set_PORTA_Bit_X_To_Y(int x, int y) - { - if ((x == 4)) - { + public synchronized void set_PORTA_Bit_X_To_Y(int x, int y) { //TODO + //Increment TMR0 if RA4 was set/cleared + if ((x == 4)) { + boolean bActualRA4 = get_RA4_T0CKI(); + boolean bNewRA4 = false; if (y == 1) - { - if (get_T0CS()) - { - Timer0PrescaledRA4++; - if (Timer0PrescaledRA4 == get_TMR0_PrescalerRate()) - { - if (bank0[1] == 255) - { - set_T0IF(true); - bank0[1] = 0; - } + bNewRA4 = true; - else - { - set_T0IF(false); - bank0[1]++; - } - Timer0PrescaledRA4 = 0; + if (bActualRA4 != bNewRA4) { + if (bNewRA4) { //rising edge + if (!get_T0SE()) { //rising edge increments TMR0 + increment_TMR0(); + } + } else { //falling edge + if (get_T0SE()) { //falling edge increments TMR0 + increment_TMR0(); } } } } - if (y == 0) - { + //Clear bit x + if (y == 0) { int[] array = new int[8]; array[0] = 0b11111110; array[1] = 0b11111101; @@ -363,27 +337,35 @@ public class RAM { bank0[5] &= array[x]; } - //if (y == 1) - else - { + //if (y == 1) set bit x + else { bank0[5] |= ((0b00000001) << x); } } - public synchronized int get_PORTA() - { + /** + * @returns value of PORT A. + */ + public synchronized int get_PORTA() { return bank0[5]; } - public synchronized void set_PORTB(int value) - { + /** + * Sets PORT B to value. + * @param value to set PORT B to. + */ + public synchronized void set_PORTB(int value) { bank0[6] = value; } - public synchronized void set_PORTB_Bit_X_To_Y(int x, int y) - { - if (y == 0) - { + /** + * Sets PORT B bit x to y. (y == 0) => false; (y == 1) => true + * @param x indicates the position of the bit which will be set/cleared. + * @param y indicates whether the bit will be set/cleared. + */ + public synchronized void set_PORTB_Bit_X_To_Y(int x, int y) { + //Clear bit x + if (y == 0) { int[] array = new int[8]; array[0] = 0b11111110; array[1] = 0b11111101; @@ -397,269 +379,216 @@ public class RAM { bank0[6] &= array[x]; } - //if (y == 1) - else - { + //if (y == 1) set bit x + else { bank0[6] |= ((0b00000001) << x); } } - public synchronized int get_PORTB() - { + /** + * @returns value of PORT B. + */ + public synchronized int get_PORTB() { return bank0[6]; } - public synchronized void set_EEDATA(int value) - { + /** + * Sets EEDATA to value. + * @param value to set EEDATA to. + */ + public synchronized void set_EEDATA(int value) { bank0[8] = value; } - public synchronized int get_EEDATA() - { + /** + * @returns value of EEDATA. + */ + public synchronized int get_EEDATA() { return bank0[8]; } - public synchronized void set_EEADR(int value) - { + /** + * Sets EEADR to value. + * @param value to set EEADR to. + */ + public synchronized void set_EEADR(int value) { bank0[9] = value; } - public synchronized int get_EEADR() - { + public synchronized int get_EEADR() { return bank0[9]; } - public synchronized void set_PCLATH(int value) - { + public synchronized void set_PCLATH(int value) { bank0[10] = value; bank1[10] = value; } - public synchronized int get_PCLATH() - { + public synchronized int get_PCLATH() { return bank0[10]; } - public synchronized void set_INTCON(int value) - { + public synchronized void set_INTCON(int value) { bank0[11] = value; bank1[11] = value; } - public synchronized int get_INTCON() - { + public synchronized int get_INTCON() { return bank0[11]; } //Bank1 Registers - public synchronized void set_OPTION(int value) - { + public synchronized void set_OPTION(int value) { bank1[1] = value; } - public synchronized int get_OPTION() - { + public synchronized int get_OPTION() { return bank1[1]; } - public synchronized void set_TRISA(int value) - { + public synchronized void set_TRISA(int value) { bank1[5] = value; } - public synchronized int get_TRISA() - { + public synchronized int get_TRISA() { return bank1[5]; } - public synchronized void set_TRISB(int value) - { + public synchronized void set_TRISB(int value) { bank1[6] = value; } - public synchronized int get_TRISB() - { + public synchronized int get_TRISB() { return bank1[6]; } - public synchronized void set_EECON1(int value) - { + public synchronized void set_EECON1(int value) { bank1[7] = value; } - public synchronized int get_EECON1() - { + public synchronized int get_EECON1() { return bank1[7]; } - public synchronized void set_EECON2(int value) - { + public synchronized void set_EECON2(int value) { bank1[8] = value; } - public synchronized int get_EECON2() - { + public synchronized int get_EECON2() { return bank1[8]; } //Bank0 & Bank1 Statusflags - public synchronized void set_Carryflag(boolean value) - { + public synchronized void set_Carryflag(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b00000001; - } - - else - { + } else { status &= 0b11111110; } set_STATUS(status); } - public synchronized boolean get_Carryflag() - { + public synchronized boolean get_Carryflag() { return (get_STATUS() & 0b00000001) == 1; } - public synchronized void set_Digitcarryflag(boolean value) - { + public synchronized void set_Digitcarryflag(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b00000010; - } - - else - { + } else { status &= 0b11111101; } set_STATUS(status); } - public synchronized boolean get_Digitcarryflag() - { + public synchronized boolean get_Digitcarryflag() { return (get_STATUS() & 0b00000010) == 2; } - public synchronized void set_Zeroflag(boolean value) - { + public synchronized void set_Zeroflag(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b00000100; - } - - else - { + } else { status &= 0b11111011; } set_STATUS(status); } - public synchronized boolean get_Zeroflag() - { + public synchronized boolean get_Zeroflag() { return (get_STATUS() & 0b00000100) == 4; } - public synchronized void set_TimeOutFlag(boolean value) - { + public synchronized void set_TimeOutFlag(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b00001000; - } - - else - { + } else { status &= 0b11110111; } set_STATUS(status); } - public synchronized boolean get_TimeOutFlag() - { + public synchronized boolean get_TimeOutFlag() { return (get_STATUS() & 0b00001000) == 8; } - public synchronized void set_PowerDownFlag(boolean value) - { + public synchronized void set_PowerDownFlag(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b00010000; - } - - else - { + } else { status &= 0b11101111; } set_STATUS(status); } - public synchronized boolean get_PowerDownFlag() - { + public synchronized boolean get_PowerDownFlag() { return (get_STATUS() & 0b00010000) == 16; } - public synchronized void set_RP0Bit(boolean value) - { + public synchronized void set_RP0Bit(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b00100000; - } - - else - { + } else { status &= 0b11011111; } set_STATUS(status); } - public synchronized boolean get_RP0Bit() - { + public synchronized boolean get_RP0Bit() { return (get_STATUS() & 0b00100000) == 32; } - public synchronized void set_RP1Bit(boolean value) - { + public synchronized void set_RP1Bit(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b01000000; - } - - else - { + } else { status &= 0b10111111; } set_STATUS(status); } - public synchronized boolean get_RP1Bit() - { + public synchronized boolean get_RP1Bit() { return (get_STATUS() & 0b01000000) == 64; } - public synchronized void set_Interruptflag(boolean value) - { + public synchronized void set_Interruptflag(boolean value) { int status = get_STATUS(); - if (value) - { + if (value) { status |= 0b10000000; - } - - else - { + } else { status &= 0b01111111; } @@ -1107,16 +1036,11 @@ public class RAM { } } - public synchronized void set_RBIE(boolean value) - { + public synchronized void set_RBIE(boolean value) { int intcon = get_INTCON(); - if (value) - { + if (value) { intcon |= 0b00001000; - } - - else - { + } else { intcon &= 0b11110111; } @@ -1313,19 +1237,13 @@ public class RAM { case 4: { returnValue = 32; }break; - - case 5: - { + case 5: { returnValue = 64; }break; - - case 6: - { + case 6: { returnValue = 128; }break; - - case 7: - { + case 7: { returnValue = 256; }break; } @@ -1445,11 +1363,8 @@ public class RAM { set_OPTION(option); } - public synchronized boolean get_T0CS() - { - { - return (get_OPTION() & 0b00100000) == 32; - } + public synchronized boolean get_T0CS() { + return (get_OPTION() & 0b00100000) == 32; } public synchronized void set_INTEDG(boolean value) diff --git a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java index df7190d..10c26e0 100755 --- a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java +++ b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java @@ -31,7 +31,10 @@ public class GUIMainFrame extends JFrame { //this.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); this.setLayout(new GridBagLayout()); oGUITestFileTable = new GUITestFileTable(); - this.setJMenuBar(new GUIMenuBar(env, this, oGUITestFileTable)); + + int[] aiTestRegisters = {1, 2, 3, 4, 5, 6, 7, 8 ,9}; + GUIRegisters oGUIRegisters = new GUIRegisters(); + this.setJMenuBar(new GUIMenuBar(env, this, oGUITestFileTable, oGUIRegisters)); this.setVisible(true); //make frame visible this.setBackground(new Color(76, 78, 82)); ImageIcon guiLogo = new ImageIcon("./images/gui_logo.png"); // create an ImageIcon @@ -66,10 +69,6 @@ public class GUIMainFrame extends JFrame { c.insets = new Insets(10,10,10,10); this.add(oGUITestFileTable, c); - int[] aiRegisters = {1, 2, 3, 4, 5, 6, 7, 8 ,9}; - - GUIRegisters oGUIRegisters = new GUIRegisters(); - c.gridx = 1; this.add(oGUIRegisters); diff --git a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java index 08ee6f7..6f925b8 100644 --- a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java +++ b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java @@ -22,6 +22,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { Environment oEnv; GUIMainFrame oGUIMainFrame; GUITestFileTable oGUITestFileTable; + GUIRegisters oGUIRegisters; ArrayList oCheckBoxes; ReadEepromFile oRef; boolean[] bBreakpointSet; @@ -93,7 +94,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { * Constructor initializes menubar. * @param frame */ - public GUIMenuBar(Environment env, GUIMainFrame mainframe, GUITestFileTable guitft) { //TODO maybe single components, with methods, of frame to set theme + public GUIMenuBar(Environment env, GUIMainFrame mainframe, GUITestFileTable guitft, GUIRegisters guiregs) { //TODO maybe single components, with methods, of frame to set theme //Custom Separators since default is not able to change background. oSeparator0 = new JMenuItem(); @@ -113,6 +114,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { oEnv = env; oGUIMainFrame = mainframe; oGUITestFileTable = guitft; + oGUIRegisters = guiregs; //File oFileMenu = new JMenu(sGermanLang[0]); @@ -364,12 +366,16 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { System.out.println("It's gettin dark brooo"); //TODO setTheme(aoDarkTheme[0], aoDarkTheme[1]); oGUITestFileTable.setTheme(1); + oGUIRegisters.setTheme(1); + oGUIMainFrame.setBackground(aoDarkTheme[1]); } //Change to light theme if (e.getSource() == oLightTheme) { System.out.println("Death to all vampires!"); //TODO setTheme(aoLightTheme[0], aoLightTheme[1]); oGUITestFileTable.setTheme(0); + oGUIRegisters.setTheme(0); + oGUIMainFrame.setBackground(aoLightTheme[1]); } //Microcontroller diff --git a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIRegisters.java b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIRegisters.java index 3dd11b9..395e9d0 100644 --- a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIRegisters.java +++ b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIRegisters.java @@ -2,17 +2,27 @@ package Frontend.PIC_SIMULATOR_GUI_JAVA; import java.awt.GridBagLayout; import java.util.ArrayList; +import java.awt.Color; import java.awt.GridBagConstraints; +import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.JTextField; public class GUIRegisters extends JPanel { + /** + * Color oWhite = new Color(255, 253, 250); + * Color oDarkGray = new Color(76, 78, 82); + * First Color == TextColor + * Second Color == BackgroundColor + */ + Color[] aoDarkTheme = {new Color(255, 253, 250), new Color(76, 78, 82)}; + Color[] aoLightTheme = {new Color(76, 78, 82), new Color(255, 253, 250)}; + ArrayList oTextfields = new ArrayList(); ArrayList oPanels = new ArrayList(); - JPanel oTopComponentPanel = new JPanel(); JPanel oLeftComponentPanel = new JPanel(); JPanel oRightComponentPanel = new JPanel(); @@ -36,9 +46,14 @@ public class GUIRegisters extends JPanel { JTextField oValuePrescaler = new JTextField("00", 2); JTextField oValueTMR0 = new JTextField("00", 2); - JPanel oBottomComponentPanel1 = new JPanel(); - JPanel oBottomComponentPanel2 = new JPanel(); - + JTextField oFillTextField1 = new JTextField("", 22); + JTextField oFillValueField1 = new JTextField("", 2); + JTextField oFillTextField2 = new JTextField("", 22); + JTextField oFillValueField2 = new JTextField("", 2); + JTextField oFillTextField3 = new JTextField("", 22); + JTextField oFillValueField3 = new JTextField("", 2); + JTextField oFillValueField4 = new JTextField("", 2); + JTextField oFillValueField5 = new JTextField("", 2); JTextField oTextW = new JTextField("W", 22); @@ -62,101 +77,105 @@ public class GUIRegisters extends JPanel { addComponentsToLists(); setEditFalse(); buildGUIRegisters(); + setTheme(0); + this.setBorder(BorderFactory.createLineBorder(new Color(173, 216, 230))); } private void buildGUIRegisters() { GridBagConstraints oConstraints = new GridBagConstraints(); - oTopComponentPanel.setLayout(new GridBagLayout()); oLeftComponentPanel.setLayout(new GridBagLayout()); oRightComponentPanel.setLayout(new GridBagLayout()); - oBottomComponentPanel1.setLayout(new GridBagLayout()); - oBottomComponentPanel2.setLayout(new GridBagLayout()); - this.setLayout(new GridBagLayout()); - //Fill top component panel + //Fill left component panel "header" oConstraints.gridx = 0; oConstraints.gridy = 0; oConstraints.anchor = GridBagConstraints.WEST; - oTopComponentPanel.add(oTextSFR, oConstraints); + oLeftComponentPanel.add(oTextSFR, oConstraints); + oConstraints.gridx = 1; + oLeftComponentPanel.add(oFillValueField1); //Fill left side of left component panel - oLeftComponentPanel.add(oTextPCL, oConstraints); + oConstraints.gridx = 0; oConstraints.gridy = 1; - oLeftComponentPanel.add(oTextPCLATH, oConstraints); + oLeftComponentPanel.add(oTextPCL, oConstraints); oConstraints.gridy = 2; - oLeftComponentPanel.add(oTextPCIntern, oConstraints); + oLeftComponentPanel.add(oTextPCLATH, oConstraints); oConstraints.gridy = 3; + oLeftComponentPanel.add(oTextPCIntern, oConstraints); + oConstraints.gridy = 4; oLeftComponentPanel.add(oTextStatus, oConstraints); //Fill right side of left component panel oConstraints.gridx = 1; - oConstraints.gridy = 0; + oConstraints.gridy = 1; oConstraints.anchor = GridBagConstraints.EAST; oLeftComponentPanel.add(oValuePCL, oConstraints); - oConstraints.gridy = 1; - oLeftComponentPanel.add(oValuePCLATH, oConstraints); oConstraints.gridy = 2; - oLeftComponentPanel.add(oValuePCIntern, oConstraints); + oLeftComponentPanel.add(oValuePCLATH, oConstraints); oConstraints.gridy = 3; + oLeftComponentPanel.add(oValuePCIntern, oConstraints); + oConstraints.gridy = 4; oLeftComponentPanel.add(oValueStatus, oConstraints); //Fill left side of right component panel oConstraints.gridx = 0; oConstraints.gridy = 0; oConstraints.anchor = GridBagConstraints.WEST; - oRightComponentPanel.add(oTextFileSelectionRegister, oConstraints); + oRightComponentPanel.add(oFillTextField1, oConstraints); oConstraints.gridy = 1; - oRightComponentPanel.add(oTextOption, oConstraints); + oRightComponentPanel.add(oTextFileSelectionRegister, oConstraints); oConstraints.gridy = 2; - oRightComponentPanel.add(oTextPrescaler, oConstraints); + oRightComponentPanel.add(oTextOption, oConstraints); oConstraints.gridy = 3; + oRightComponentPanel.add(oTextPrescaler, oConstraints); + oConstraints.gridy = 4; oRightComponentPanel.add(oTextTMR0, oConstraints); + oConstraints.gridy = 5; + oRightComponentPanel.add(oFillTextField2, oConstraints); //Fill right side of right component panel oConstraints.gridx = 1; oConstraints.gridy = 0; oConstraints.anchor = GridBagConstraints.EAST; - oRightComponentPanel.add(oValueFileSearchRegister, oConstraints); + oRightComponentPanel.add(oFillValueField1, oConstraints); oConstraints.gridy = 1; - oRightComponentPanel.add(oValueOption, oConstraints); + oRightComponentPanel.add(oValueFileSearchRegister, oConstraints); oConstraints.gridy = 2; - oRightComponentPanel.add(oValuePrescaler, oConstraints); + oRightComponentPanel.add(oValueOption, oConstraints); oConstraints.gridy = 3; + oRightComponentPanel.add(oValuePrescaler, oConstraints); + oConstraints.gridy = 4; oRightComponentPanel.add(oValueTMR0, oConstraints); + oConstraints.gridy = 5; + oRightComponentPanel.add(oFillValueField2); - //Fill 1st bottom component panel + //Fill footer of left component panel oConstraints.anchor = GridBagConstraints.WEST; oConstraints.gridx = 0; - oConstraints.gridy = 0; - oBottomComponentPanel1.add(oTextW, oConstraints); - - //Fill 2nd bottom component panel - oBottomComponentPanel2.add(oTextWRegister, oConstraints); + oConstraints.gridy = 5; + oLeftComponentPanel.add(oTextW, oConstraints); oConstraints.anchor = GridBagConstraints.EAST; oConstraints.gridx = 1; - oBottomComponentPanel2.add(oValueWRegister, oConstraints); + oLeftComponentPanel.add(oFillValueField2, oConstraints); + oConstraints.gridx = 0; + oLeftComponentPanel.add(oTextWRegister, oConstraints); + oConstraints.anchor = GridBagConstraints.EAST; + oConstraints.gridx = 1; + oLeftComponentPanel.add(oValueWRegister, oConstraints); //Fill this panel oConstraints.anchor = GridBagConstraints.WEST; oConstraints.gridx = 0; oConstraints.gridy = 0; - this.add(oTopComponentPanel, oConstraints); - oConstraints.gridy = 1; this.add(oLeftComponentPanel, oConstraints); - oConstraints.gridx = 1; this.add(oRightComponentPanel, oConstraints); - oConstraints.gridx = 0; - oConstraints.gridy = 2; - this.add(oBottomComponentPanel1, oConstraints); - oConstraints.gridy = 3; - this.add(oBottomComponentPanel2, oConstraints); } /** - * + * Adds panels to panel list and textfields to textfield list */ private void addComponentsToLists() { oTextfields.add(oTextSFR); @@ -173,22 +192,26 @@ public class GUIRegisters extends JPanel { oTextfields.add(oValuePCL); oTextfields.add(oValuePCLATH); - //TODO + oTextfields.add(oValuePCIntern); + oTextfields.add(oValueStatus); + oTextfields.add(oValueFileSearchRegister); + oTextfields.add(oValueOption); + oTextfields.add(oValuePrescaler); + oTextfields.add(oValueTMR0); + oTextfields.add(oValueWRegister); + + oPanels.add(this); + oPanels.add(oLeftComponentPanel); + oPanels.add(oRightComponentPanel); } /** * */ private void setEditFalse() { - //TODO - } - - /** - * - * @param iThemeNr - */ - public void setTheme(int iThemeNr) { - //TODO + for (JTextField oTextfield : oTextfields) { + oTextfield.setEditable(false); + } } /** @@ -198,4 +221,35 @@ public class GUIRegisters extends JPanel { public void setRegisters(int[] aiRegisters) { //TODO } + + public void setTheme(int iThemeNr) { + switch (iThemeNr) { + case 0: { + for (JPanel oPanel : oPanels) { + oPanel.setForeground(aoLightTheme[0]); + oPanel.setBackground(aoLightTheme[1]); + oPanel.setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + } + for (JTextField oTextfield : oTextfields) { + oTextfield.setForeground(aoLightTheme[0]); + oTextfield.setBackground(aoLightTheme[1]); + oTextfield.setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + } + }break; + + case 1: { + System.out.println("Test"); + for (JPanel oPanel : oPanels) { + oPanel.setForeground(aoDarkTheme[0]); + oPanel.setBackground(aoDarkTheme[1]); + oPanel.setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + } + for (JTextField oTextfield : oTextfields) { + oTextfield.setForeground(aoDarkTheme[0]); + oTextfield.setBackground(aoDarkTheme[1]); + oTextfield.setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + } + }break; + } + } } \ No newline at end of file