OSDN Git Service

[VM][WIP] Use namespace to devices per VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / msx / kanjirom.cpp
1 /*
2         Common Source Code Project
3         MSX Series (experimental)
4
5         Origin : Zodiac
6         Author : umaiboux
7         Date   : 2016.03.xx-
8
9         [ Kanji Rom ]
10 */
11
12 #include "kanjirom.h"
13 #include "../../fileio.h"
14
15 namespace MSX {
16
17 KANJIROM::KANJIROM(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
18 {
19         index = 0;
20         memset(rom, 0xff, sizeof(rom));
21         
22         FILEIO* fio = new FILEIO();
23         if(fio->Fopen(create_local_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
24                 fio->Fread(rom, sizeof(rom), 1);
25                 fio->Fclose();
26         }
27         delete fio;
28         
29         set_device_name(_T("Kanji ROM"));
30 }
31
32 void KANJIROM::write_io8(uint32_t addr, uint32_t data)
33 {
34         if (0 == (addr & 1)) {
35                 index = (index & 0x1f800) | ((data & 0x3f) << 5);
36         }
37         else {
38                 index = (index & 0x7e0) | ((data & 0x3f) << 11);
39         }
40 }
41
42 uint32_t KANJIROM::read_io8(uint32_t addr)
43 {
44         if (1 == (addr & 3)) {
45                 return rom[index++];
46         }
47         else if (3 == (addr & 3)) {
48                 return rom[0x20000 + index++];
49         }
50         return 0xFF;
51 }
52
53 }