2 SHARP MZ-700 Emulator 'EmuZ-700'
3 SHARP MZ-800 Emulator 'EmuZ-800'
4 SHARP MZ-1500 Emulator 'EmuZ-1500'
6 Author : Takeda.Toshiya
9 [ kanji/dictionary rom ]
14 void KANJI::initialize()
16 memset(kanji, 0xff, sizeof(kanji));
17 memset(dic, 0xff, sizeof(dic));
20 FILEIO* fio = new FILEIO();
21 if(fio->Fopen(create_local_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
22 fio->Fread(kanji, sizeof(kanji), 1);
24 } else if(fio->Fopen(create_local_path(_T("MZ1R23.ROM")), FILEIO_READ_BINARY)) {
25 fio->Fread(kanji, sizeof(kanji), 1);
28 if(fio->Fopen(create_local_path(_T("DICT.ROM")), FILEIO_READ_BINARY)) {
29 fio->Fread(dic, sizeof(dic), 1);
31 } else if(fio->Fopen(create_local_path(_T("MZ1R24.ROM")), FILEIO_READ_BINARY)) {
32 fio->Fread(dic, sizeof(dic), 1);
40 control_reg = kanji_addr = dic_addr = 0;
43 void KANJI::write_io8(uint32_t addr, uint32_t data)
50 dic_addr = (addr & 0xff00) | data;
51 kanji_addr = dic_addr << 5;
56 uint32_t KANJI::read_io8(uint32_t addr)
62 if(control_reg & 0x80) {
63 val = kanji[(kanji_addr++) & 0x1ffff];
65 val = dic[((control_reg & 3) << 16) | ((dic_addr++) & 0xffff)];
67 if(control_reg & 0x40) {
68 val = ((val & 0x80) >> 7) | ((val & 0x40) >> 5) | ((val & 0x20) >> 3) | ((val & 0x10) >> 1) | ((val & 8) << 1) | ((val & 4) << 3) | ((val & 2) << 5) | ((val & 1) << 7);
75 #define STATE_VERSION 1
77 bool KANJI::process_state(FILEIO* state_fio, bool loading)
79 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
82 if(!state_fio->StateCheckInt32(this_device_id)) {
85 state_fio->StateUint32(control_reg);
86 state_fio->StateUint32(kanji_addr);
87 state_fio->StateUint32(dic_addr);