OSDN Git Service

[General] Convert sourcecode's CRLF format: DOS(WINDOWS) to Unix, to apply patches...
[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
21 class BIOS : public DEVICE
22 {
23 private:
24         DEVICE *d_mem, *d_io;
25         DISK *disk[MAX_DRIVE];
26         
27         // pseudo bios
28         uint8 *cmos, *vram, *cvram;
29 #ifdef _FMR60
30         uint8 *avram;
31 #else
32         uint8 *kvram;
33 #endif
34         int secnum, timeout;
35         
36         // disk bios
37         bool access_fdd[MAX_DRIVE], access_scsi;
38         int scsi_blocks[MAX_SCSI];
39         _TCHAR scsi_path[MAX_SCSI][_MAX_PATH];
40         int memcard_blocks[MAX_MEMCARD];
41         bool memcard_protected[MAX_MEMCARD];
42         _TCHAR memcard_path[MAX_SCSI][_MAX_PATH];
43         uint8 buffer[0x10000];
44         
45         // power management
46         uint8 powmode;
47         
48         uint32 disk_pc1, disk_pc2, cmos_pc, wait_pc;
49         
50 public:
51         BIOS(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
52         ~BIOS() {}
53         
54         // common functions
55         void initialize();
56         void reset();
57         void event_frame();
58         bool bios_call(uint32 PC, uint16 regs[], uint16 sregs[], int32* ZeroFlag, int32* CarryFlag);
59         bool bios_int(int intnum, uint16 regs[], uint16 sregs[], int32* ZeroFlag, int32* CarryFlag);
60         uint32 read_signal(int ch);
61         
62         // unique functions
63         void set_context_mem(DEVICE* device)
64         {
65                 d_mem = device;
66         }
67         void set_context_io(DEVICE* device)
68         {
69                 d_io = device;
70         }
71         void set_disk_handler(int drv, DISK* dsk)
72         {
73                 disk[drv] = dsk;
74         }
75         void set_cmos_ptr(uint8* ptr)
76         {
77                 cmos = ptr;
78         }
79         void set_vram_ptr(uint8* ptr)
80         {
81                 vram = ptr;
82         }
83         void set_cvram_ptr(uint8* ptr)
84         {
85                 cvram = ptr;
86         }
87 #ifdef _FMR60
88         void set_avram_ptr(uint8* ptr)
89         {
90                 avram = ptr;
91         }
92 #else
93         void set_kvram_ptr(uint8* ptr)
94         {
95                 kvram = ptr;
96         }
97 #endif
98 };
99
100 #endif
101