OpenCores
URL https://opencores.org/ocsvn/s80186/s80186/trunk

Subversion Repositories s80186

[/] [s80186/] [trunk/] [sim/] [cppmodel/] [Emulate.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jamieiles
// Copyright Jamie Iles, 2017
2
//
3
// This file is part of s80x86.
4
//
5
// s80x86 is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// s80x86 is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with s80x86.  If not, see <http://www.gnu.org/licenses/>.
17
 
18
#pragma once
19
 
20
#include <stddef.h>
21
#include <stdint.h>
22
#include <functional>
23
#include <memory>
24
#include <map>
25
 
26
#include "CPU.h"
27
#include "Memory.h"
28
#include "ModRM.h"
29
 
30
class EmulatorPimpl;
31
class Memory;
32
class RegisterFile;
33
class SoftwareCPU;
34
 
35
class Emulator
36
{
37
public:
38
    Emulator(RegisterFile *registers, SoftwareCPU *cpu);
39
    virtual ~Emulator();
40
    size_t step();
41
    size_t step_with_io(std::function<void(unsigned long)> io_callback);
42
    void set_memory(Memory *mem);
43
    void set_io(std::map<uint16_t, IOPorts *> *io);
44
    bool has_trapped() const;
45
    void reset();
46
    void raise_nmi();
47
    void raise_irq(int irq_num);
48
    unsigned long cycle_count() const;
49
 
50
private:
51
    std::unique_ptr<EmulatorPimpl> pimpl;
52
    unsigned long num_cycles;
53
};

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.