OSDN Git Service

[VM] MEMORY:: class within some VM will change Foo_MEMORY:: to reduce misundestanding...
[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_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
46                 for(int i = 0; i < MAX_DRIVE; i++) disk[i] = NULL;
47                 //for(int i = 0; i < USE_HARD_DISK; i++) harddisk[i] = NULL;
48                 set_device_name(_T("Pseudo BIOS"));
49         }
50         ~BIOS() {}
51         
52         // common functions
53         void initialize();
54         void reset();
55         void event_frame();
56         bool bios_call_far_i86(uint32_t PC, uint16_t regs[], uint16_t sregs[], int32_t* ZeroFlag, int32_t* CarryFlag);
57         bool bios_int_i86(int intnum, uint16_t regs[], uint16_t sregs[], int32_t* ZeroFlag, int32_t* CarryFlag);
58         uint32_t read_signal(int ch);
59         bool process_state(FILEIO* state_fio, bool loading);
60         
61         // unique functions
62         void set_context_mem(DEVICE* device)
63         {
64                 d_mem = device;
65         }
66         void set_context_io(DEVICE* device)
67         {
68                 d_io = device;
69         }
70         void set_floppy_disk_handler(int drv, DISK* device)
71         {
72                 disk[drv] = device;
73         }
74         void set_hard_disk_handler(int drv, HARDDISK* device)
75         {
76                 harddisk[drv] = device;
77         }
78         void set_cmos_ptr(uint8_t* ptr)
79         {
80                 cmos = ptr;
81         }
82         void set_vram_ptr(uint8_t* ptr)
83         {
84                 vram = ptr;
85         }
86         void set_cvram_ptr(uint8_t* ptr)
87         {
88                 cvram = ptr;
89         }
90 #ifdef _FMR60
91         void set_avram_ptr(uint8_t* ptr)
92         {
93                 avram = ptr;
94         }
95 #else
96         void set_kvram_ptr(uint8_t* ptr)
97         {
98                 kvram = ptr;
99         }
100 #endif
101 };
102
103 #endif
104