OSDN Git Service

1034252438b6de648be45c9548476a0d0634f698
[csp-qt/common_source_project-fm7.git] / source / src / vm / fmr50 / bios.h
1 /*
2         FUJITSU FMR-30 Emulator 'eFMR-30'
3         FUJITSU FMR-50 Emulator 'eFMR-50'
4         FUJITSU FMR-60 Emulator 'eFMR-60'
5
6         Author : Takeda.Toshiya
7         Date   : 2008.10.06 -
8
9         [ bios ]
10 */
11
12 #ifndef _BIOS_H_
13 #define _BIOS_H_
14
15 #include "../vm.h"
16 #include "../../emu.h"
17 #include "../device.h"
18
19 class DISK;
20 class HARDDISK;
21
22 class BIOS : public DEVICE
23 {
24 private:
25         DEVICE *d_mem, *d_io;
26         DISK *disk[MAX_DRIVE];
27         HARDDISK *harddisk[USE_HARD_DISK];
28         
29         // pseudo bios
30         uint8_t *cmos, *vram, *cvram;
31 #ifdef _FMR60
32         uint8_t *avram;
33 #else
34         uint8_t *kvram;
35 #endif
36         int secnum, timeout;
37         
38         // disk bios
39         bool access_fdd[MAX_DRIVE];
40         uint8_t  drive_mode1[MAX_DRIVE];
41         uint16_t drive_mode2[MAX_DRIVE];
42         int scsi_blocks[USE_HARD_DISK];
43         
44 public:
45         BIOS(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
46                 set_device_name(_T("Pseudo BIOS"));
47         }
48         ~BIOS() {}
49         
50         // common functions
51         void initialize();
52         void reset();
53         void event_frame();
54         bool bios_call_far_i86(uint32_t PC, uint16_t regs[], uint16_t sregs[], int32_t* ZeroFlag, int32_t* CarryFlag);
55         bool bios_int_i86(int intnum, uint16_t regs[], uint16_t sregs[], int32_t* ZeroFlag, int32_t* CarryFlag);
56         uint32_t read_signal(int ch);
57         void save_state(FILEIO* state_fio);
58         bool load_state(FILEIO* state_fio);
59         
60         // unique functions
61         void set_context_mem(DEVICE* device)
62         {
63                 d_mem = device;
64         }
65         void set_context_io(DEVICE* device)
66         {
67                 d_io = device;
68         }
69         void set_floppy_disk_handler(int drv, DISK* device)
70         {
71                 disk[drv] = device;
72         }
73         void set_hard_disk_handler(int drv, HARDDISK* device)
74         {
75                 harddisk[drv] = device;
76         }
77         void set_cmos_ptr(uint8_t* ptr)
78         {
79                 cmos = ptr;
80         }
81         void set_vram_ptr(uint8_t* ptr)
82         {
83                 vram = ptr;
84         }
85         void set_cvram_ptr(uint8_t* ptr)
86         {
87                 cvram = ptr;
88         }
89 #ifdef _FMR60
90         void set_avram_ptr(uint8_t* ptr)
91         {
92                 avram = ptr;
93         }
94 #else
95         void set_kvram_ptr(uint8_t* ptr)
96         {
97                 kvram = ptr;
98         }
99 #endif
100 };
101
102 #endif
103