SUB-CPU実装されている!しかもディスク関連(FD1~FD4)も書き直して頂けた。
http://takeda-toshiya.seesaa.net/archives/20140526-1.html
さらにSR対応も取り込んで頂けたのですが、FM音源が鳴らなかったり、機種判定が間違ったりしてたのを修正しました。(アップデートがあり既に修正されたようです。)
http://sbeach.seesaa.net/article/397250545.html#comment
pc6001.cpp
io->set_iomap_alias_r(0xa3, psg, 0); // FM status io->set_iomap_range_rw(0x40, 0x6f, memory); // VRAM addr #endif #ifdef _PC6001 io->set_iomap_single_w(0xb0, display); // VRAM addr io->set_iomap_single_w(0x00, memory); // MEMORY MAP #else io->set_iomap_single_w(0xb0, memory); // VRAM addr io->set_iomap_single_r(0xb2, memory); // SR mode
memory.cpp
uint32 MEMORY::read_io8(uint32 addr) { uint16 port=(addr & 0x00ff); byte Value=0xff; switch(port) { #if defined(_PC6601SR) || defined(_PC6001MK2SR) case 0x60:case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66:case 0x67: case 0x68:case 0x69:case 0x6a:case 0x6b:case 0x6c:case 0x6d:case 0x6e:case 0x6f: Value=port60[ port-0x60 ]; break; case 0xB2: #ifdef _PC6601SR Value=2; #else Value=0; #endif break; case 0xC0: Value=0xff;break; case 0xC2: Value=0xff;break; #endif case 0xF0: if (!vm->sr_mode) Value=portF0;break; case 0xF1: if (!vm->sr_mode) Value=portF1;break; } return(Value); } #endif
あとは音声合成を実装して、mk2 SRでコロニーオデッセイが実行出来るまで頑張ろう。