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);
    }
}
Beispiel #3
0
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