From 265214829afb2a24d59b2ac003cfccf5ac16404f Mon Sep 17 00:00:00 2001 From: Meruemon Date: Fri, 22 Apr 2022 14:35:34 +0200 Subject: [PATCH] Implemented Interrupt Prompts and Interrupt Logic? --- bin/Control/MyControlView.class | Bin 9159 -> 10939 bytes bin/Model/Microcontroller/PIC.class | Bin 13974 -> 13412 bytes bin/Model/Microcontroller/RAM.class | Bin 21147 -> 21195 bytes bin/Model/Microcontroller/RUNTIMER.class | Bin 1811 -> 2027 bytes bin/Model/MyModel.class | Bin 4344 -> 4218 bytes bin/View/MyView.class | Bin 3800 -> 3916 bytes src/Control/MyControlView.java | 37 +++++++++- src/Model/Microcontroller/PIC.java | 86 ++--------------------- src/Model/Microcontroller/RAM.java | 3 + src/Model/Microcontroller/RUNTIMER.java | 16 ++++- src/Model/MyModel.java | 34 ++++----- src/View/MyView.java | 7 +- 12 files changed, 77 insertions(+), 106 deletions(-) diff --git a/bin/Control/MyControlView.class b/bin/Control/MyControlView.class index 1730438a105feda7394aedadac7d0a0c9fe12d8a..96c37ceeda5cd84d1cb41c88976a648c9f3903af 100644 GIT binary patch literal 10939 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 Q^Dp(`8{<_B>&d_Ve^6pH0ssI2 literal 9159 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 diff --git a/bin/Model/Microcontroller/PIC.class b/bin/Model/Microcontroller/PIC.class index 881a5f2a6054d3eb5dbbee26b03213e3c8f8c1c8..9c9b3b1dd8a230125a0d731944bdc04282f99913 100644 GIT binary patch delta 3911 zcmaKvc~F$+9ml`#a{$Y^xUj(PawEseQ>sL zwbW>wbZiojj@Dperfp13swPHj;xSYIs2#OUo9Q&uCX*P%{@!_^>AG<8e?(=-U z$M1Px_N=m{0eP$uMXU)U*by`!Z3@lP0vqRWe~1pCyDSB5uPT(w}|d-a_)EV zva^)=dl<$(pveA&Qg$8{>?5MQLX>|d%Bw_q4XfGp0Kzs!*ro{E6k(%YnCf!$V!1z2 zY#m*VuCLh{Rwx~MLHe`(nmrv35|s-(&xeB# zhKmnD3NJu5iPw^R8&ug%S&k7*# zP~;sds}5W%wQ9a5piU-wiWU}S)``&j5`3GqadLgUw;PAu&y{-g=rpJPQbrmb0*+0* z0l~ZxVSEvxFNTvZLlR$!blyVPttjTJQObQ7$Nj^X;$KQ(jmIC&Sc6f9_f0Az;1KX0 zIJMv;vXJ#zh+fOWW&^}~3N`f58wSqp=caj1@Xd(gTgcJPh~>{Cfp0}B-$ssZC#)SP z76`u-R&REM^*(*s2xNKP`sD#B{cv3fqVQjb0QwOnx$85V90TmgSf=2+3rTP!?Sw zi;S%5-Cb~cEstutalzA#kGgTfct_96D)UEo7J|QrIDVd5c7f*NB8KsgscBa+o_~TW z{wZqt4Qkm<6T}}~y#lFMe$-oj7)U`7ah_nK`%)ROji?L*ij3{u#uE{Fbw_r3`J)Gd z-;3MSq&x8NyX3(=z@H$6e)xvy))ZmYa+?U^)1b~GOc)YMe~T^|AmczNvnQE zqxB6H;l8<=|1y_mt!DY@BJv=lTc_8H#BGodHlRf}_R-I}ZY_AUsYKuGjWe#Nbs_{I zA`EsBiFjd0nutb@h(V!<4Zt33ZDdEP7HXE>@0Zqt9F2AjQ@cJQsPQp^L=tQw1rCu4 zm&ib>82H12!c`PINsdvFe6QPI2Sbg%-kWIXXc0ppMKL182*ip}NEV}!Daw&2D$Mo$ z4aisa=UY{buoN+K41z$4G7Uu$O3_Bk$DHr@_qb^gQ_0RMva_1x%_MoVku7Qitjw_x zLcVKds7sCqPC*kuG}JgiwLOBCyh1uvHRtwAwbl>Wt_h5bloA_fqPh@y$i zSW3Y*BVDW@Ls}?UI@!c(j1cV@Bi3QESdVF9165=rYQ<(O6FG>=7rcszq+c!{otbVuLtK%FdCp_XAXQDpj3*s?dpR9`j(gW4)y+0d1Bl4_fq< z`5uQuHRX}+*FLWM*QxtAsQWjm9Dkv5+%f^acbH@Py07`D`9>EG>KO%H{XA(TgCXuw z{Xe7ne~xJJZ@9%5)Vu$oKzxbe;wy|4_sNq7m>_yFT|7iJ-M!3_91T)nsg!7zL1>dU ztdn8bC?l~=Mq#J4W3P1JfQ$+7=^&a4&D&stv1Ul33+GIqqOrqthr^BMwOD#jARABV z9fg?=r;7O!y&FPeuILMk;`C1nPxTYj1`pj~r$EYdIAso!WG*sfJ__Vul*(ZkCyOvu z7Nbgz#1pa%^JO^}%L)=Q1}$Y8X-tqCN#U~;(Tz!=)5oO5>6Zqi^}FH?AwbB(6#Q$n z*BgkCM-VHIB3}LmDe@!+$~TcOyHO%fqgWGWc zJSvbRVlqa`M=fmW*Ff_=OnyKh7bu?(;gOd}@W;rJmnoyG7$&b1#0`|mn;0W+VW#{m z=E>V=l7GWWc^7NsJrm4-VEPo8Pi5s(g=#Sn?PQS?^;V-isMGg5T_IW`@i8sw|HfQ> AqyPW_ delta 3688 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 HX|ewSaMEkV diff --git a/bin/Model/Microcontroller/RAM.class b/bin/Model/Microcontroller/RAM.class index 754ea892168a9555e469e3486446505c551b0fe0..25c65bd3f1bb6218a471ae0e479b49ac389e6e3e 100644 GIT binary patch delta 2661 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 literal 1811 zcmaJ?-%}e^6#i~Pb|Gviq)h?Q3bmFHYNG>MDg{dU)!3wk1cIeHblL2LrO75Pn~rUL z(9s#ksSk=i*azR7Ve~;qM{vdm$7kR4Kk!fR-EsWxB?RgeGjsQxz4zR6&i9=!$#4Js z{0o3F+|m&cIF+ds>{2r0SYE}dxV~2@m25AWUAn%Q%FJYSGzqkCn0L)&$#jd!8*3Z3 z-*7BC7K^X+BRx7G`lqCmKiT}-)_mp4lSP0Q1ZGYngyTgjSbfu8gc zMJF?(0@@|Vb^LL*7XP2PfjrYqvG*{7=r9mLR3I21$ZHe75*|M-5IAX|8JhIE3~q#_ z_mqKF7y`%Aj%#19mDg-<(OfGLNiQt71$Md@tlDd za9$uLPssJ^yk~C`hwWuepQuPmD$FKcH1I5XwadSM-k@jLKuFT_3PyBXcx=$Qdz-#p zHgFNIGDW4vna9#f2Tmn9?>VlY^F7-vk2d3yK!kOBQ?74&UajhfF^T=t8_D^mbthw1>yro*U_*68Mcsu-d1EV7aum1i4y9+8 zZFm1jqJPc687YwnZ!FYI?|!ao+XZSUo|2mR>i(Z|-=27&O}x97`Qxvz|JEj|`_Aos zXMWESXmJ$OyHedE#V&G{nrGRwjucU3|EqIeVn-iq2T6Dc0m(JJfYgGrl%}#2rm~bJ ztiJcCnwld-ZAdzXT!*BNIW*{7E1-$CC&-mt3P!R*mPxwJ+u4bQQnU=-=C=lYCY z2-rL~%hr38_BTP&$(c^9(*HE$Ti!ago1741f?qW># z5ro8dnwUUDI=k;cCwc8+#cmAp^ddW(Bo>KP;$r1`e^c~B2%gbm+@8ivy}=~gm0=-S z@jE&JRYT&Cl@9WR>Ujia@kFME{>#)^*6TllsX4`zz|{s*(~OoiqlugBgx$of9ok)_ z4)V6Cxg;LOI)j54%a5v z1FrYE9@aIsjV!$k)wYeR^lm6`oZf=+hUw*$m!P+#yxv5cvR!rCUboH49?UY&IRZ(H zUTSIY6XBhQ^TF@@WhLy>H4@Z>FI;9~*zki|QUcn{0?0JrcF-oVF< j{1nz9*0&n^++y78U0&dyOv!ibu2Br*i|d=r9U9(Z!mh0_HcZN4STJ%_gdfg?Qj2a{avNaEKE!RTlo>u z&e#)e+z?VtU!v1l+z@K^1sgR6NYij}TjvgU&3=1M;vn~J44HFwm+Jw;f_Bshl{Fd7 zhCd`EWO>$jVpETF9`nTXCY74gNjZ+^IyUSYC5-Bf5j7LE^;s`;UNRvhD}>^J;cIL; z-rx@fV<>A5*2HLE>AYsjtk&`~-|D<$kFZ=dSGD>Ap$?BfWCYrLO&ZgDwDCb$8Pjgg zYFhdyJ_}2OR%^%J7Q?8s#O;r1_^LBAGOwMF4{xA_Y+A{oosD#n$7wdvLjk=Ma)~Vr zQp7VgGfo+El=G7ce&OLaJD8`E1$K$XZb_y}QrIU>ypqlV$)rZy6i6HD zrG#TrPNP)PB-NW~mRe585rX0;ByF@xm^SI=r1Wu0F3=(Ubjo$YGDMdQ(=DT{mPvZd zZOaaa1H==jelT~Ef$DK??p*60B_ql$E3`-HjB?K^9(q;Gw(^iSqNd{1lOcr!wfAD@ zESdBvE6yn!z-b{XJMvX!$IVk^gs9UBwyT&5X00PRJK|QDktic$WGtrRW7Jzjlh)mv xDDM~VzL@=vv?7xwT*RRqUcqJ7aYd0_RW4uqkGgb`8cLZ}0z|EEN=h8x{{hI%t3Ln$ delta 826 zcmYk4`Abw$6vsa&&6#<62-JD%l#QliNfZ-A5p9}} zs4Uy8ro|SQd6u@?zHiVU5cD?`MbRBbsGsgxzW1KbIp_X#{)p3F{pq_8%;$5bw%4v{ z#BoOFEa%Jt`wT}r7j0Y+#+jv2u?gAP1*=x%>s(@$Frw1%Ei=58zN&E8#${oANN0A~ z9Vr1OYP54rr-SQ)rqtQh#%9Co6Cx9HlX5iz+|;>6r#aV=m1w71h8x!?{S2kXnUM(U1HE)FB^@eX{LuuW1 zSFK^V!>om&O7C>ucXw+?BK*^+WjYO{(nuP+n8_Yyv5yQ6Fo&aLssYVcjV+{C-TO!u zU&!VwIea6R@8t1^e9>4g(X5b>xFnV}5>KH_X00TXA!%%objoBd<+1>`ET%%1;E{Yb zN^vHeWIZ)f&KB`fCtIl(KR($_gEX;CT4zoX0i9Yioh zt$cNI50fk!Ep~*h(-!B?lhIG0xR)!-QU;^{WENM$&W$2I#kD=~j1m)XVbxu{k;4N}TmvYAAW1YCU;?ACtIMn+iAjt(H1~bq z_o0a!*=y{*IV^=Raf==_0OF@0W{%m3}psp_1f0? zRL2D=VkkE-@05AYOpThE;nd-QQ`Vpp!wdsLsij>#1GBSj$I>09ojH&*$1DR2+SPt= zvB5xGX|;4%nLO>5RMZOhXUhE}*_<!#`iPmaMhz@%ml>K!ji0xfqeE(yYSZm@ z=FEVRHZY^n&e+aw1JkN&dJUAfWQVLcreU?f{a6vhTAs;InCm-^HCQjVtC^~5mxi0| zhML})Fpv;fie)iuRqMX0&_7hhP?)s`j*0ZjAM_h-6Bwl`7!JdFjKjVqt(?o zD6jwvV>rYMI<>Bx+dyM$c#K9P=$NroS6ax801|X zx1634OWwuu>a@HabKC8V)tMg~uyTH>We3gCUNdLQ($kCO&WO!Aojrx2WM#_ybEuWW zb~)6`VUHYI<&c&`rySP6Bm-Od@8or#MKbc%=FMSC(#;Dj$9+=oyugH{TRAwweM>6o zijdwW1;#Nb9ZgE}96B*+Af`${8D@k$!>S5c6y*-Nx8nS+z8eZok`GAtQ$}D?&y03-w^eXk1XnW!QXJC2IaCnDUk}ZOAA^q?%;e zEvH)w*vjd4PInei$7wyMjRiDux`)$!1vGQo%ISdu+Bi*f`al8goOW`0q<}6?yZaNj z=-@Vv6>vPk`SBtiEZ}5fS`m-lR8)sJ)~n+#LpfXVJRYHnJ#HP3u$lB5d4M(^;3!t% z1Xg2&ytfM?l z*+e-?*-SY`*+!Y6Y^Tgpc2S<8tf4$xBA?`Y4J4S!4J5yj8QDb2NmL`nhF^<19%C=I z;2^f*2(~H0i(OKhFzF%3FPQd3VRstRzl-*c3b{{>3P_i;+e?+HrD?_!D9 zeY{=3PG-H19}BzqBG)sl4Gdi)88!uYBz+!9JgIp+g{L)-l;QzDB_tSp6{c4v4~guN<8PV9>8a?0{a=i0|A4TzCrd;x_wJI ze_P$=E!uDe4Zc&v2RGDSiC8*dr^2_xHt5^=_&;_&DdLN;osLL5?1=h+K^{EdH(`8N zB%V!B<97tk@qH23N^yykDR7Kg?2WKdCY!Ie5zNr>FoFI6xRfD2V-etF78L%g~3)N_*eWE0d5L|?MUz~6e7UQVenWaxQN>k;I=UMY$TZ9QW4;; vFgPCx=CdCGZV!VmM1p^3&vYv>cu7u%!51UJ{632S*Mz~BBEf&Cg1qxD0lyTg literal 3800 zcma)8X;&0S6uk{dL))SwDk{+kZp?^`Xhd`{B8vza1O!2%MjPlr>oB83kDxL8rrGy> z-!~IYobjCGocw_Nk^GCC-0E$bPJhVZP_Me`-S=+2_v+RB_0R8r0yv0*j1mb;M-6>G z-hV|18D$byoYyXE@syUHjt@+n*C$OG@C`$ zc7>&Fh(J{pmH5rQrD9J+s6*ocBHp&ML=7+2gIZcoNm!K>8Cr7pS4Q0@-`!F znD#nr;17_GU6oas#qCR&}3`uREP4`3vcu%GX@;;Kriz>(8kwBosxG#i`WJrYRb-(F7xTg}ha~1D z$cE4pCd*9TL~-E9R6LF+*mxK$CqtsLqu#9&IZFuqQ!1XuGu))+P)^HU?aa(hWI8en zEUjQ@-7NwoJg4G$TxU#d7v9aS_IYvdt~lBYDqh4(PX2i9dQE+nA+2$o#B-*RiXYBq zwJS+BG2Y_{4R>bJW;T=R$eCs)P3_8IV>+#wxhyl-6pn0LTn;ugalgg+bro;mO`C(L zJEtSB^i#HbvIzIvDqa?h#R)rS^vMeonFXCBcKt8M7J_kfT)(g41ANE_!VcG>+hvE^ zy)BEjNV^9gt9VBcSw-wv*GP9-RHn-)EKh>0a4i!2xr$HlDbJj{IHj5Tn30~!uyQ1P zrQ&OR!z*Aj@-8WRfIlAY+eTwU_)f(a*vPuIG0u|}@#(vdR+X*c_BWFEDY>i6va9EG zuYjJjO1&D#Ua-qa*x)xD+$PfD>O5h7uI?k|i-6Nrl;KP+JE@CDjRx$eph>(osAJ?x z`M-p{yhQXS{)8wIo!^q|@0Mf>wK|oF2#{!RbLx z59QI$X$PlWd31By!)b3GeVisaJ(kA+r$ghhJ9Kat!+DIxI3F$GWFDtur3E~6+oC$b z@ql&AwJ783xPnKh<=-|Qp_%mCcz_-r;5atn48u0V9^56)9a}L;ylNi|Q_%S( zi6-qF`X+-~!nGmcyS9LbDH|!LDVr&0C|f8E$^_+k%67^Nl--mm%09|j$^ptW<#x(U zk$e*~2sAK*QId}_6FW$?kt;i~iw(UMakO)Gl*bvwZj105o0LPC^l%ZENLdn%*`a>P zp&oTy&QS{Lmnj9+1xi8f3Zjg!2^C4#3w`XY+DY# z#dnS`3;4De7llm0T+7UBu{_{N_@DeW&e0V~@jY06qQ1JKo zAq3nU1fLEC|A?PLz%4=Wxlr&;{2T&K1i@3G;9qbn1l%43&xC?+ qCommandsToModel; @@ -34,8 +44,12 @@ public class MyControlView { setStack(); setTestFileTable(); setMCMenu(); + showStackPrompt(); showTimer0InterruptPrompt(); + showEEInterruptPrompt(); + showPORTBInterruptPrompt(); + showRB0InterruptPrompt(); } /** @@ -208,7 +222,28 @@ public class MyControlView { public void showTimer0InterruptPrompt() { if (oPIC.getRam().get_GIE() && oPIC.getRam().get_T0IE() && oPIC.getRam().get_T0IF()) { Object[] options = {"Ok"}; - int n = JOptionPane.showOptionDialog(new JFrame(),"Information Timer 0 Interrupt\nISR will be executed", "Timer 0 Interrupt Acknowledged", JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[1]); + JOptionPane.showOptionDialog(new JFrame(), asPromptDialogs[0][oMyView.getLanguage()], asPromptTitle[0][oMyView.getLanguage()], JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[1]); + } + } + + public void showEEInterruptPrompt() { //TODO + if (oPIC.getRam().get_GIE() && oPIC.getRam().get_EEIE() && oPIC.getRam().get_EEIF()) { + Object[] options = {"Ok"}; + JOptionPane.showOptionDialog(new JFrame(),asPromptDialogs[1][oMyView.getLanguage()], asPromptTitle[1][oMyView.getLanguage()], JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[1]); + } + } + + public void showPORTBInterruptPrompt() { + if (oPIC.getRam().get_GIE() && oPIC.getRam().get_RBIE() && oPIC.getRam().get_RBIF()) { + Object[] options = {"Ok"}; + JOptionPane.showOptionDialog(new JFrame(),asPromptDialogs[2][oMyView.getLanguage()], asPromptTitle[2][oMyView.getLanguage()], JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[1]); + } + } + + public void showRB0InterruptPrompt() { + if (oPIC.getRam().get_GIE() && oPIC.getRam().get_INTE() && oPIC.getRam().get_INTF()) { + Object[] options = {"Ok"}; + JOptionPane.showOptionDialog(new JFrame(),asPromptDialogs[3][oMyView.getLanguage()], asPromptTitle[3][oMyView.getLanguage()], JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[1]); } } diff --git a/src/Model/Microcontroller/PIC.java b/src/Model/Microcontroller/PIC.java index 773bdfe..427adc4 100755 --- a/src/Model/Microcontroller/PIC.java +++ b/src/Model/Microcontroller/PIC.java @@ -552,9 +552,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -574,15 +571,14 @@ public class PIC { Ram.set_PS2(false); //Programcounter will be incremented by 1. + Runtimer.resetWDT(); + //Increment programcounter and TMR0 if assigned to TMR0. Ram.inkrement_Programcounter(1, 0); //Kind of call if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -629,9 +625,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -682,9 +675,6 @@ public class PIC { NOP(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -732,9 +722,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -757,9 +744,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -808,9 +792,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -867,9 +848,6 @@ public class PIC { NOP(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -903,9 +881,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -947,9 +922,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -970,9 +942,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1011,9 +980,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1032,9 +998,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b11111111); - Runtimer.incrementRuntime(); } @@ -1051,9 +1014,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b11111111); - Runtimer.incrementRuntime(); } @@ -1081,9 +1041,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1095,13 +1052,11 @@ public class PIC { //Increment programcounter and TMR0 if assigned to TMR0. Ram.inkrement_Programcounter(1, 0); //Kind of call + if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1129,9 +1084,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1154,9 +1106,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1213,9 +1162,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1271,9 +1217,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1297,9 +1240,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1356,9 +1296,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1389,7 +1326,7 @@ public class PIC { int carry = (result & 0b100000000) >> 8; //The lower four bits are bitwise and with 1111b (15d). - int dcResult = (regFileAddrValue & 15) + (wRegValue & 15) + 1; + int dcResult = (regFileAddrValue & 0x0F) + (wRegValue & 0x0F) + 1; //TODO LST File 3 DC Carry is not set. //If the result is greater than 15, DC-Flag is set true. if (dcResult > 15) { @@ -1433,9 +1370,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1473,9 +1407,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1501,9 +1432,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1535,9 +1463,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } @@ -1581,9 +1506,6 @@ public class PIC { Ram.increment_TMR0(); } - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); - Runtimer.incrementRuntime(); } } \ No newline at end of file diff --git a/src/Model/Microcontroller/RAM.java b/src/Model/Microcontroller/RAM.java index 9ec8024..5f3f852 100755 --- a/src/Model/Microcontroller/RAM.java +++ b/src/Model/Microcontroller/RAM.java @@ -618,6 +618,7 @@ public class RAM { lastProgramcounter = get_Programcounter(); iProgramcounter += value; iProgramcounter &= 0x3FF; + set_PCL(iProgramcounter & 0xFF); } /** @@ -628,6 +629,7 @@ public class RAM { lastProgramcounter = get_Programcounter(); iProgramcounter -= value; iProgramcounter &= 0x3FF; + set_PCL(iProgramcounter & 0xFF); } /** @@ -638,6 +640,7 @@ public class RAM { public synchronized void set_Programcounter(int value) { lastProgramcounter = iProgramcounter; iProgramcounter = value; + set_PCL(iProgramcounter & 0xFF); } //Bank0 PORTA diff --git a/src/Model/Microcontroller/RUNTIMER.java b/src/Model/Microcontroller/RUNTIMER.java index 164d104..524fefd 100644 --- a/src/Model/Microcontroller/RUNTIMER.java +++ b/src/Model/Microcontroller/RUNTIMER.java @@ -3,6 +3,8 @@ package Model.Microcontroller; public class RUNTIMER { private double dRuntime; private double dMaxWatchdog; + private double dOldMaxWatchdog; + private double dWatchdogTimer; private double dRTIncrVal = 0.001 * (4 / 0.032); private boolean WDTE = false; @@ -10,21 +12,29 @@ public class RUNTIMER { private RAM oRam; public RUNTIMER(RAM oRam) { + dWatchdogTimer = dMaxWatchdog = dOldMaxWatchdog = 18000; this.oRam = oRam; } public void setMaxWatchdog(double dMaxVal) { + dWatchdogTimer = dMaxVal - (dOldMaxWatchdog - dWatchdogTimer); + dOldMaxWatchdog = dMaxWatchdog; dMaxWatchdog = dMaxVal; } - private void checkWatchdog() { + public void resetWDT() { + dWatchdogTimer = dMaxWatchdog; + } + + private void updateWatchdog() { if (WDTE) { if (oRam.get_PSA()) { setMaxWatchdog(18000 * oRam.get_WDT_PrescalerRate()); } else { setMaxWatchdog(18000);//18 ms } - if ((dMaxWatchdog - dRuntime) <= 0) { + dWatchdogTimer -= dRuntime; + if (dWatchdogTimer <= 0) { System.out.println("WDT Interrupt"); } } @@ -40,7 +50,7 @@ public class RUNTIMER { public void incrementRuntime() { dRuntime += dRTIncrVal; - checkWatchdog(); + updateWatchdog(); } public void setQuarzSpeed(int iInterval) { diff --git a/src/Model/MyModel.java b/src/Model/MyModel.java index 667a8ce..3d04820 100644 --- a/src/Model/MyModel.java +++ b/src/Model/MyModel.java @@ -42,16 +42,18 @@ public class MyModel extends Thread { /* -1 == ERROR, 0 == END, 1 == START, 2 == PAUSE, 3 == RESET 4 == STEP*/ iProgState = qReceivedCommands.poll(); switch (iProgState) { - case (-1): { + //Stop program because of error + case (-1): { System.out.println("Fehler"); bStopProgram = true; }break; - case (0): { + //Stop Program + case (0): { System.out.println("Programm wurde beendet."); bStopProgram = true; }break; - case (1): { - //Start program + //Start program + case (1): { while (iProgState == 1) { //Check if pause/stop was pressed if (!qReceivedCommands.isEmpty()) { @@ -59,7 +61,7 @@ public class MyModel extends Thread { } //Check if interrupt was acknowledged if (oPIC.interruptAcknowledged()) { - + //TODO } else { //Check if breakpoints initialized if (abBreakpoints != null) { @@ -120,33 +122,27 @@ public class MyModel extends Thread { System.out.println("Please load file!"); } }break; + //Reset Stack Overflow Bit case (5): { oPIC.getStack().resetStackOverflow(); }break; + //Reset Stack Underflow Bit case (6): { oPIC.getStack().resetStackUnderflow(); }break; } - } - - + } } } private void step() { - //Check if step valid - if (oPIC.getRam().get_Programcounter() < (oPIC.getEeprom().getLengthEEPROM())) { - //Makes one step through the eeprom. - Bitmask oBitmask = new Bitmask(); - oBitmask.bitMaskDecoderAndExecuteCommand(oPIC.getEeprom().getElement(oPIC.getRam().get_Programcounter()), oPIC); - qDataToView.add(oPIC); - } else { - System.out.println("Step invalid, end of file reached!"); - } + Bitmask oBitmask = new Bitmask(); + //Makes one step through the eeprom. + oBitmask.bitMaskDecoderAndExecuteCommand(oPIC.getEeprom().getElement(oPIC.getRam().get_Programcounter()), oPIC); + //Update view + qDataToView.add(oPIC); } - - private void setModel(MyModelData data) { oMyModelData = data; oPIC = oMyModelData.getPIC(); diff --git a/src/View/MyView.java b/src/View/MyView.java index 7cec26c..1431b61 100644 --- a/src/View/MyView.java +++ b/src/View/MyView.java @@ -21,6 +21,8 @@ public class MyView implements IMyView { private JPanel oGUIMainPanel; + private int iLang; + public MyView() { oGUIMenuBar = new GUIMenuBar(this); oGUIMCMenu = new GUIMCMenu(); @@ -50,6 +52,7 @@ public class MyView implements IMyView { } public void setLanguage(int iLangNr) { + iLang = iLangNr; oGUIMenuBar.changeLangMenuBar(iLangNr); oGUIMCMenu.setLanguage(iLangNr); oGUIRegister.setLanguage(iLangNr); @@ -57,7 +60,9 @@ public class MyView implements IMyView { oGUITime.setLanguage(iLangNr); } - + public int getLanguage() { + return iLang; + } public void test() { this.getGUITime().getQuarzComboBox();