JanelaPrincipal::JanelaPrincipal(wxWindow* parent,wxWindowID id,const wxPoint& pos,const wxSize& size) { this->cpu = new PipelineCPU(); this->hp = new Helpers(); std::string titulo1("Simulador 8086 com pipeline - v.: "); std::string tituloversion(AutoVersion::FULLVERSION_STRING); std::string tituloversionstatus(AutoVersion::STATUS_SHORT); titulo1.append(tituloversion).append(tituloversionstatus); wxString titulo(titulo1.c_str(), wxConvUTF8); //(*Initialize(JanelaPrincipal) Create(parent, wxID_ANY, titulo, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY")); SetClientSize(wxSize(800,460)); { wxIcon FrameIcon; FrameIcon.CopyFromBitmap(wxBitmap(wxImage(_T("./res/chip_16x16.png")))); SetIcon(FrameIcon); } Panel1 = new wxPanel(this, ID_PANEL1, wxPoint(0,0), wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1")); Button1 = new wxButton(Panel1, ID_BUTTON1, _("Sobre"), wxPoint(704,8), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1")); Abrir = new wxButton(Panel1, ID_BUTTON2, _("Abrir"), wxPoint(704,48), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2")); StaticLine1 = new wxStaticLine(Panel1, ID_STATICLINE1, wxPoint(704,42), wxSize(88,2), wxLI_HORIZONTAL, _T("ID_STATICLINE1")); StaticLine2 = new wxStaticLine(Panel1, ID_STATICLINE2, wxPoint(704,82), wxSize(88,2), wxLI_HORIZONTAL, _T("ID_STATICLINE2")); Executar = new wxButton(Panel1, ID_BUTTON3, _("Executar"), wxPoint(704,88), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3")); Registradores = new wxListCtrl(Panel1, ID_LISTCTRL2, wxPoint(8,32), wxSize(680,72), wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_HRULES|wxLC_VRULES|wxRAISED_BORDER, wxDefaultValidator, _T("ID_LISTCTRL2")); Pipeline = new wxListCtrl(Panel1, ID_LISTCTRL1, wxPoint(8,224), wxSize(680,56), wxLC_REPORT|wxLC_SINGLE_SEL|wxRAISED_BORDER, wxDefaultValidator, _T("ID_LISTCTRL1")); Resetar = new wxButton(Panel1, ID_BUTTON4, _("Resetar"), wxPoint(704,128), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON4")); Flags = new wxListCtrl(Panel1, ID_LISTCTRL3, wxPoint(8,136), wxSize(680,56), wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_HRULES|wxLC_VRULES|wxRAISED_BORDER, wxDefaultValidator, _T("ID_LISTCTRL3")); StaticText1 = new wxStaticText(Panel1, ID_STATICTEXT1, _("Registradores:"), wxPoint(8,8), wxDefaultSize, 0, _T("ID_STATICTEXT1")); StaticText2 = new wxStaticText(Panel1, ID_STATICTEXT2, _("Flags:"), wxPoint(8,112), wxDefaultSize, 0, _T("ID_STATICTEXT2")); StaticText3 = new wxStaticText(Panel1, ID_STATICTEXT3, _("Pipeline:"), wxPoint(8,200), wxDefaultSize, 0, _T("ID_STATICTEXT3")); reg_info = new wxButton(Panel1, ID_BUTTON5, _("Informações"), wxPoint(104,0), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON5")); flag_info = new wxButton(Panel1, ID_BUTTON6, _("Informações"), wxPoint(48,104), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON6")); pipeline_info = new wxButton(Panel1, ID_BUTTON7, _("Informações"), wxPoint(64,192), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON7")); StaticLine3 = new wxStaticLine(Panel1, ID_STATICLINE3, wxPoint(704,168), wxSize(88,0), wxLI_HORIZONTAL, _T("ID_STATICLINE3")); Button2 = new wxButton(Panel1, ID_BUTTON8, _("Dump"), wxPoint(704,176), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON8")); MemView = new wxListCtrl(Panel1, ID_MemView, wxPoint(8,312), wxSize(680,128), wxLC_REPORT|wxLC_SINGLE_SEL|wxRAISED_BORDER, wxDefaultValidator, _T("ID_MemView")); StaticText4 = new wxStaticText(Panel1, ID_STATICTEXT4, _("Visualizador de Memória:"), wxPoint(8,288), wxDefaultSize, 0, _T("ID_STATICTEXT4")); StaticBitmap1 = new wxStaticBitmap(Panel1, ID_STATICBITMAP1, wxBitmap(wxImage(_T("./res/chip_48x48.png"))), wxPoint(728,224), wxDefaultSize, 0, _T("ID_STATICBITMAP1")); ligado = new wxStaticText(Panel1, ID_STATICTEXT5, _("On"), wxPoint(736,272), wxDefaultSize, 0, _T("ID_STATICTEXT5")); FileDialog1 = new wxFileDialog(this, _("Escolha um arquivo para abrir"), wxEmptyString, _("Assembler compilado (*.lst)|*.lst"), _("Assembler compilado (*.lst)|*.lst"), wxFD_DEFAULT_STYLE, wxDefaultPosition, wxDefaultSize, _T("wxFileDialog")); Center(); Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::OnButton1Click); Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::OnAbrirClick); Connect(ID_BUTTON3,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::OnExecutarClick); Connect(ID_BUTTON4,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::OnResetarClick); Connect(ID_BUTTON5,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::Onreg_infoClick); Connect(ID_BUTTON6,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::Onflag_infoClick); Connect(ID_BUTTON7,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::Onpipeline_infoClick); Connect(ID_BUTTON8,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&JanelaPrincipal::OnButton2Click); Panel1->Connect(ID_PANEL1,wxEVT_PAINT,(wxObjectEventFunction)&JanelaPrincipal::OnPanel1Paint,0,this); //*) Reset(); }
void JanelaPrincipal::OnAbrirClick(wxCommandEvent& event) { std::string titulo1("Simulador 8086 com pipeline - v.: "); std::string tituloversion(AutoVersion::FULLVERSION_STRING); std::string tituloversionstatus(AutoVersion::STATUS_SHORT); titulo1.append(tituloversion).append(tituloversionstatus).append(" - "); wxString titulo(titulo1.c_str(), wxConvUTF8); // Cria um dialogo para abrir nosso objeto compilado do assemble if (FileDialog1->ShowModal() == wxID_OK) { //abriu o arquivo Reset(); SetTitle(titulo + FileDialog1->GetPath()); this->cpu->readFile(std::string((FileDialog1->GetPath()).mb_str())); wxMessageBox(_("Arquivo carregado com êxito."),_("Abrir Arquivo.")); getDadosCPU(); } else { SetTitle(titulo); } }
void Vis_LCD ( volatile uint32_t Estado_LCD, volatile uint32_t AUX_LCD) { //volatile uint32_t Estado_LCD; //volatile uint32_t AUX_LCD; //Variable para el switch del E uint8_t a=1; //Estados de inicializacion y escritura uint8_t estado_0=0; uint8_t estado_1=0; uint8_t estado_2=0; uint8_t estado_3=0; uint8_t estado_4=0; uint8_t estado_5=0; uint8_t estado_6=0; //Contador de instrucciones LCD uint8_t cont_0=1; uint8_t cont_1=1; uint8_t cont_2=1; uint8_t cont_3=1; uint8_t cont_4=1; uint8_t cont_5=1; uint8_t cont_6=1; while(1) { if(t()==a) { ////inicio switch(Estado_LCD) { // corchete Estado_LCD // Bienvenido Key_PI case 0: //case 0 Estado_LCD switch(estado_0) { //switch(estado_0) case 0: lcd_iniciar(cont_0); cont_0=cont_0+1; if(cont_0==5)estado_0=estado_0+1; break; //break del case 0 case 1: titulo1(cont_0); cont_0=cont_0+1; if(cont_0==16)estado_0=estado_0+1; break; //break del case 1 default: if (cont_0==16) cont_0=16; } // end switch(estado_0) break; //break case 0 Estado_LCD // Elegir cancion case 1://case 1 Estado_LCD switch (estado_1) { // //switch(estado_1) case 0: lcd_iniciar(cont_1); cont_1=cont_1+1; if(cont_1==5)estado_1=estado_1+1; break; //break del case 0 case 1: song(cont_1); cont_1=cont_1+1; if(cont_1==21)estado_1=estado_1+1; break; //break del case 1 case 2: lcd_linea2(cont_1); cont_1=cont_1+1; if(cont_1==22)estado_1=estado_1+1; break; //break del case 2 case 3: switch(AUX_LCD) { case 0: song1(cont_1); //cancion 1 cont_1=cont_1+1; if(cont_1==25)estado_1=estado_1+1; break; //0 case 1: song2(cont_1); //cancion 2 cont_1=cont_1+1; if(cont_1==25)estado_1=estado_1+1; break; //1 case 2: song3(cont_1); //cancion 3 cont_1=cont_1+1; if(cont_1==25)estado_1=estado_1+1; break; //2 case 3: song4(cont_1); //cancion 4 cont_1=cont_1+1; if(cont_1==25)estado_1=estado_1+1; break; //3 case 4: song5(cont_1); //cancion 5 cont_1=cont_1+1; if(cont_1==25)estado_1=estado_1+1; break; //4 default: if (cont_1==25) cont_1=25; } // End switch AUX_LCD break; //break del case 3 } //switch(estado_1) break; //break case 1 Estado_LCD // //Case 2 Elegir nivel case 2: //case 2 Estado_LCD switch (estado_2) { // //switch(estado_2) case 0: lcd_iniciar(cont_2); cont_2=cont_2+1; if(cont_2==5)estado_2=estado_2+1; break; //break del case 0 case 1: elige(cont_2); cont_2=cont_2+1; if(cont_2==21)estado_2=estado_2+1; break; //break del case 1 case 2: lcd_linea2(cont_2); cont_2=cont_2+1; if(cont_2==22)estado_2=estado_2+1; break; //break del case 2 case 3: switch(AUX_LCD) { case 0: normal(cont_2); cont_2=cont_2+1; if(cont_2==25)estado_2=estado_2+1; break; //break del case 0 normal() case 1: experto(cont_2); cont_2=cont_2+1; if(cont_2==25)estado_2=estado_2+1; break; //break del case 1 experto default: if (cont_2==25) cont_2=25; } //end switch AUX_LCD break; //break del case 3 } //end switch(estado_2) break; // break //case 2 Estado_LCD // //Escuchar // Escuchar cancion case 3: //case 3 Estado_LCD switch(estado_3) { //switch(estado_3) case 0: lcd_iniciar(cont_3); cont_3=cont_3+1; if(cont_3==5)estado_3=estado_3+1; break; //break del case 0 case 1: escuchar(cont_3); cont_3=cont_3+1; if(cont_3==13)estado_3=estado_3+1; break; //break del case 1 default: if (cont_3==13) cont_3=13; } //end //switch(estado_3) break;//case 3 Estado_LCD // Preparado?????????????'''''' case 4: //case 4 Estado_LCD switch(estado_4) { //switch(estado_4) case 0: lcd_iniciar(cont_4); cont_4=cont_4+1; if(cont_4==5)estado_4=estado_4+1; break; //break del case 0 case 1: preparado(cont_4); cont_4=cont_4+1; if(cont_4==14)estado_4=estado_4+1; break; //break del case 1 default: if (cont_4==14) cont_4=14; } //end //switch(estado_4) break;//case 4 Estado_LCD // Adelante case 5: //case 5 Estado_LCD switch(estado_5) { //switch(estado_5) case 0: lcd_iniciar(cont_5); cont_5=cont_5+1; if(cont_5==5)estado_5=estado_5+1; break; //break del case 0 case 1: adelante(cont_5); cont_5=cont_5+1; if(cont_5==14)estado_5=estado_5+1; break; //break del case 1 default: if (cont_5==14) cont_5=14; } //end //switch(estado_5) break;//case 5 Estado_LCD //Again case 6: //case 6 Estado_LCD switch (estado_6) { // //switch(estado_6) case 0: lcd_iniciar(cont_6); cont_6=cont_6+1; if(cont_6==5)estado_6=estado_6+1; break; //break del case 0 case 1: again(cont_6); cont_6=cont_6+1; if(cont_6==21)estado_6=estado_6+1; break; //break del case 1 case 2: lcd_linea2(cont_6); cont_6=cont_6+1; if(cont_6==22)estado_6=estado_6+1; break; //break del case 2 case 3: switch(AUX_LCD) { case 0: si(cont_6); cont_6=cont_6+1; if(cont_6==26)estado_6=estado_6+1; break; //break del case 0 normal() case 1: no(cont_6); cont_6=cont_6+1; if(cont_6==26)estado_6=estado_6+1; break; //break del case 1 experto default: if (cont_6==26) cont_6=26; } //end switch AUX_LCD break; //break del case 3 } //end switch(estado_6) break; // break //case 6 Estado_LCD default: if (cont_6==0) cont_6=0; // } //corchete Estado_LCD //fin del switch estado LCD a=0; } if(t()==0) a=1; } //return 0; } //end main