この改造でmidiplayを使った 31250bpsの通信が可能になる。
変更するのは、 /sys/pc98/pc98/sio.c の pc98_ttspeedtab()という関数の中身。
static int
pc98_ttspeedtab(struct com_s *com, int speed)
{
int effect_sp, count=-1, mod;
switch ( com->pc98_if_type ) {
case COM_IF_INTERNAL:
/* ------------------------------------------------------- 追加始め */
if(speed == 50){
count = (sysclock == 5) ? 5 : 4;
break;
}
/* ------------------------------------------------------- 追加終わり */
/* for *1CLK asynchronous! mode , TEFUTEFU */
effect_sp = ttspeedtab( speed, pc98speedtab );
最近のversionのソースは見てないけど、 たぶん似たようなもんだと思う。
これでkernelを作ると、50bpsと指定すると31250bpsとなる。 THRUもどきを用意したので、 これを使って動作確認ができる(deviceは/dev/ttyd0にきめうちしてるけど 問題ないだろう)。midiplayで遊ぶにはちょっとソースの変更が必要だけど、 ドキュメントに書いてあるとおりにすればいいので問題ないだろう。
専用のインターフェースケーブルだが、商品としても出ているので それを購入するのが楽だけど4000円くらいしたと思う。 自分で組めば1000円もしないのでうれしいが電気工作が まったくダメというひとではきついかもしれない(そんなに 複雑なものではないのだけど)。