ࡱ> UWT)`Tbjbj.\! <$@@@@@@@@#######$%h'#@@@@@#@@$###@@@##@####@4 QT!>##$0$#(#(#(#@@#@@@@@### @@@$@@@@HH //------2K?>;=8BL B5AB -------------------------------------- //$C=:F8O :;028H8 +", - 8A?>;=5=85 B5AB-?@>3@0<<K void __fastcall TForm1::Button2Click(TObject *Sender) { //RAMM=0 - nop :><0=40 - 0G0;> :><0=4K - ?5@2K9 A8=E@>B0:B IR=CODE[PC++];RAMK=ADC[IR]<<3; //2K1>@:0 B5:CI59 :><04K 8 04@5A =0G0;0 <8:@>?@>3@0<<K 2 RAMM MicroCodMem("SelbusB=Code,Unicontr=Wrir,Unicod16=Incpc "); //--------------------------------------- if((CheckBox7->State==cbChecked)&&(IR==0)) //@07@5H5=85 7025@I5=8O ?> Nop - 8=AB@C<5=B0;L=K9 { for(char i=8; i<(SP+5); i++) Stack(i); //A>AB>O=85 AB5:0 ?5@54 RET,RETI Instr->Text=":>=5F ?@>3@0<<K"; PC--; CheckBox7->State==cbUnchecked; goto finish; } switch(ADC[IR]) //45:>48@>20=85 :><0=4K { case 0: //Nop-> 2E>4 2 ?@5@K20=85 {Instr->Text="Nop"; RAMK=1; goto repeat;} //RAMM=0x0001 - ?5@20O <8:@>:><0=40 2E>40 2 ?@5@K20=85 case 1: //ljmp adr // 1 <8:@>:><0=40 -GB5=85 AB0@H53> 109B0 04@5A0 2 Wrk { Wrk=CODE[PC++]; RAMK++; MicroCodMem("SelbusB=Code,Uniralu=Wrwrk,Unicod16=Incpc "); } // 2 <8:@>:><0=40 - GB5=85 <;04H53> 109B0 04@5A0 2 PCL { PC=CODE[PC]|(Wrk<<8); RAMK=1; MicroCodMem("Selpc=Call,SelbusB=Code,Unicod16=Wrpc,Unicontr=Ramk1 "); itoa(PC,&ss[0],16); //D>@<8@>20=85 <=5<>:>40 char stroka[10]="ljmp "; Instr->Text=StrCat(stroka,ss); } goto repeat; case 3: //ret // 1 <8:@>:><0=40 { Wrk=Ram[SP--]; RAMK++; //PCH MicroCodMem("SelbusA=Sp,SelbusB=Ram,Uniralu=Wrwrk,Uniport=Cntsp "); } // 1 <8:@>:><0=40 { PC=PC|Ram[SP--]; RAMK++; //PCL MicroCodMem("SelbusA=Sp,SelbusB=Ram,Selpc=Call,Unireg8=Cntsp,Unicod16=Wrpc "); } // 2 <8:@>:><0=40 { Ram[Sp]=SP; RAMK=1; MicroCodMem("SelbusB=Sp,Adsfr=Sp,Unibus8=WramNsfr,Unicontr=Ramk8 "); Instr->Text="ret"; } goto repeat; case 4: //<8:@>?@>3@0<<0 add a,ri // 1 <8:@>:><0=40 { PB= Ram[(PSW&0x18)|(IR&0x3)];RAMK++; ss[0]=(IR&0x3)|0x30; ss[1]=0; //D>@<8@>20=85 8 2K2>4 <=5<>:>40 :><0=4K char stroka[10]="add a,r"; Instr->Text=StrCat(stroka,ss); MicroCodMem("SelbusB=Ram,Unibus8=Ari,Uniralu=Wrpb "); } // 2 <8:@>:><0=40 - >?5@0F8O 2 # 8 D>@<8@>20=85 ?@87=0:>2 @57C;LB0B0 { ACC=ACC+PB, Ram[Acc]=ACC; RAMK++; char tt[]="add "; //D>@<8@>20=85 <=5<>:>40 PSWC(&tt[0]); //D>@<8@>20=85 ?@87=0:>2 MicroCodMem("SelbusB=F,Mop=Add,Selpsw=Bitsw,Unibit=Wlocpsw,SelbusA=Asfr,Adsfr=Acc,Unibus8=Wram,Selpa=Acc,Selpb=Pb "); } // 3 <8:@>:><0=40 -A>E@0=5=85 PsW 2 SFR { Ram[Psw]=PSW; RAMK=1; MicroCodMem("SelbusB=Psw,SelbusA=Asfr,Adsfr=Psw,Unibus8=Wram,Unicontr=Ramk1 "); } goto repeat; case 2: //<8:@>?@>3@0<<0 add a,#d // 1 -GB5=85 >?5@0=4>2 87 !! 8 ?0<OB8 Code {PB=CODE[PC++]; RAMK++; MicroCodMem("SelbusB=Code,Uniralu=Wrpb,Unicod16=Incpc "); itoa(PB,&ss[0],16); //D>@<8@>20=85 <=5<>:>40 char stroka[10]="add a,#"; Instr->Text=StrCat(stroka,ss); } //2 - - >?5@0F8O 2 # 8 D>@<8@>20=85 ?@87=0:>2 @57C;LB0B0 {ACC=ACC+PB, RAMK++; Ram[Acc]=ACC; char tt[5]="add "; PSWC(&tt[0]); MicroCodMem("SelbusB=F,Mop=Add,Selpsw=Bitsw,Unibit=Wlocpsw,SelbusA=Asfr,Adsfr=Acc,Unibus8=Wram "); } //3- {Ram[Psw]=PSW; RAMK=1; MicroCodMem("SelbusB=Psw,SelbusA=Asfr,Adsfr=Psw,Unibus8=Wram,Unicontr=Ramk1 "); } goto repeat; case 5: // <8:@>?@>3@0<<0 acall met //1 - GB5=85 2B>@>3> 109B0 :><0=4K 8 ?@58=:@5<5=B C:070B5;O {Wrk=CODE[PC++]; SP++; RAMK++; MicroCodMem("SelbusB=Code,Uniralu=Wrwrk,Unicod16=Incpc,Uniport=Cntsp,Uniport=Incsp "); Z . ^  x `N46(v""""$<%%((P((*6 67<=,=^=T?@@jBCZFrFGGFI^IbKNQRSTUhhmH sH hhmH sH hG|~Z & D X &V x.0gdTX6<h8&tHd gd @XZ @!!"`"b""6#t##r$$%@%%&E&&&&&Z'gdZ'n'''4((&))666677788@99:::;;<<<<B==>gd itoa(Wrk,&ss[0],16); char stroka[10]="acall "; Instr->Text=StrCat(stroka,ss); } //2- 70?8AL 2 !B5: PC(7-0) 8 ?>AB8=:@5<5=B C:070B5;O {Ram[SP++]=PC;RAMK++; MicroCodMem("SelbusB=Pcl,SelbusA=Sp,Unibus8=WramNsfr,Uniport=Cntsp,Uniport=Incsp "); } //3- PC(15-8) --> !B5:,D>@<8@>20=85 =>2>3>PC {Ram[SP]=PC>>8; RAMK++; PC=((PC&0xf800)|Wrk)|((IR&0xE0)>>5)<<8; MicroCodMem("SelbusB=Pch,SelbusA=Sp,Unibus8=WramNsfr,Selpc=Acall "); } //3- A>E@0=5=85 ?@>428=CB>3> C:070B5;O 2 SFR 8 7025@H5=85 <8:@>?@>3@0<<K {Ram[Sp]=SP; RAMK=1; MicroCodMem("SelbusB=Sp,SelbusA=Asfr,Adsfr=Sp,Unibus8=Wram,Unicontr=Ramk8 "); } goto repeat ; case 6: //<8:@>?@>3@0<<0 anl c,bit // 1- GB5=85 04@5A0 18B0 87 2B>@>3> 109B0 :><0=4K {Wrk=CODE[PC++]; RAMK++; MicroCodMem("SelbusB=Code,Uniralu=Wrwrk,Unicod16=Incpc "); ss[0]=(Wrk&0x7)+0x30; ss[1]=0; //D>@<8@>20=85 <=5<>:>40 char stroka[12]="anl c,Acc."; Instr->Text=StrCat(stroka,ss); } // 2 - 5A;8 18B 2 SFR, B> GB5=85 18B 04@5AC5<>3> 109B0 87 SFR { if(W7)PB=Ram[Wrk&0xf8]; else PB=Ram[0x20|((Wrk&0x78)>>3)]; RAMK++; MicroCodMem("Selif=Wrk7,SelbusA=Abitwrk,SelbusB=Ram,Uniralu=Wrpb "); } // 3 - 2K?>;=5=85 >?5@0F88 A 18B>< ! 2 PSW 8 18B>< 87 PB // A>E@0=5=85 PSW 2 SFR ?> 04@5AC Psw { char tt[]="andc "; PSWC(&tt[0]); MicroCodMem("Unibit=Bitand,Unibit=Wlocpsw,Selpsw=Bitsw "); } // 4 - Ram[Psw]=PSW; MicroCodMem("SelbusB=Psw,SelbusA=Asfr,Adsfr=Psw,Unibus8=WramNsfr,Unicontr=Ramk1 "); goto repeat; case 7: //reti // 1 <8:@>:><0=40 { Wrk=Ram[SP--]<<8; RAMK++; //PCH MicroCodMem("SelbusA=Sp,SelbusB=Ram,Uniralu=Wrwrk,Unireg8=Cntsp "); } // 2 <8:@>:><0=40 { PC=PC|Ram[SP--]; RAMK++; //PCL MicroCodMem("SelbusA=Sp,SelbusB=Ram,Selpc=Call,Unireg8=Cntsp "); } // 3 <8:@>:><0=40 { Ram[Sp]=SP; RAMK=1; intra2=0; MicroCodMem("SelbusB=Sp,Adsfr=Sp,Unibus8=WramNsfr,Unicontr=Ramk1,Unicontr=Clrinta "); Instr->Text="reti"; CheckBox9->State=cbUnchecked; } //goto repeat; //default: break; //K2>4 A>AB>O=8O @538AB@>2 2 HEX-:>45 repeat: //<8:@>?@>3@0<<0 2E>40 2 ?@5@K20=85 //1 mk RAMK=1; GoToInt(); //AE5<0 @538AB@0F88 70?@>A>2 ?@5@K20=89 - 70?@>AK 2  MicroCodMem("Unicontr=Eintra, Unicontr=Wrtcon "); //CAB0=>2;5= ?@87=0: RAMK++; //RAMK=2 //2 mk if (!intra2) { //=0G0;> <8:@>?@>3@0<<K MicroCodMem("Selif=Intra,Selif=Neiff,Unicontr=Clramk "); RAMK=0; goto finish; } RAMK++; // 3 mk SP++; MicroCodMem("Unireg8=Cntsp,Unireg8=Incsp "); RAMK++; //RAMM=4 //4 mk Ram[SP++]=PC; MicroCodMem("SelbusB=Pcl,SelbusA=Sp,Unireg8=Cntsp,Unireg8=Incsp,Unibus8=WramNsfr "); RAMK++; //RAMM=5 //5 mk Ram[SP]=PC>>8; PC=vect; ClearInt(); RAMK++; //A1@>A 70?@>A0 8 70?@5B ?@5@K20=89 MicroCodMem("SelbusB=Pch,SelbusA=Sp,Unibus8=WramNsfr,Selpc=Vect,Unicontr=Clreq "); //6 mk Ram[Sp]=SP; RAMK=0; MicroCodMem("SelbusB=Sp,SelbusA=Asfr,Adsfr=Sp,Unicontr=Clramk,Unibus8=Wram,Unicontr=Wrtcon "); //RAMM=0 2K1>@:0 :><0=4K finish: //RAMM=0; StateMCU(); //D>@<8@>20=85 =0 M:@0=5 A>AB>O=8O - } } >>2???@@@,AADBnBBhCCZDDDDEEE.FtFFGGGXHHgdHI`IIJJ:KfKKK4LLLLLVMMN,NNN*OfO~OOO P6PLPpP"Qgd"QLQbQQRRRSS T T6TTTTgd,1h. A!"R#n$n% B@B 1KG=K9CJ_HaJmHsHtHBA@B A=>2=>9 H@8DB 0170F0Xi@X 1KG=0O B01;8F04 l4a .k@. 5B A?8A:0!\>?wS"z  @mMwH,@_`x4WD$ D {  2 r g - A w  0 1 b 9bEZn?0tLtl MEtB+`#l#9\I_xW+A_kw=R]  0 !!%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0H0 !!%03%0%0 @m%0T Z'>H"QT+,-Thvw'-X 2[dejkpJNUXxIL_g*HRJV    # V ; ? @ B F I m p # J X o GKLRX[\_p!>M.\i1BCK]`|4B[ #%V*\_sO[]kopv[fhwy !hvwX!/5 HQw)+]v'x4WT { a c 1 ; ? p 57\s{ *.Vq9\I !3333!!!!@!!P!! !PPPPPPPPP P"PL@P(P6UnknownGz Times New Roman5Symbol3& z Arial"qh;!gD!g;;!n24 2HP)?2=//------2K?>;=8BL B5AB --------------------------------------ADMINADMINOh+'0( 8D d p |@//------ --------------------------------------ADMIN Normal.dotADMIN1Microsoft Office Word@^в@0P@@P՜.+,00 hp   ; ' >//------ --------------------------------------    !"#$%&'()*+,-.0123456789:;<=>?@ABCEFGHIJKMNOPQRSVRoot Entry FQX1Table/(WordDocument.\SummaryInformation(DDocumentSummaryInformation8LCompObjq  F Microsoft Office Word MSWordDocWord.Document.89q