つきいち日記へ戻る  

1チップMSX その2

2006年 12月 3日 日曜日
同 12月5日 修正 「PUT KANJI」
同 12月11日 修正 ディスクイメージの項

● やってきた説明書と付属CD

 遅れていた1チップMSXの正式説明書と付属CD-ROMが届いた。説明書は28ページの簡単なもので、基本操作の説明のみである。それでも、深読みすると面白いので、後ほど述べることとする。
 CD-ROMにはMSX-DOS2のシステムファイルと、かつてフロッピーディスクで供給されたソフトを使う際に必要なユーティリティが付いている。また、VHDLによる1チップMSXのソースファイルと開発システムが付いている。

 ということは、MSX-BASICやMSX-DOS2の直接の解説はない。資料が無い人でBASICを使いたいならASCIIから販売されているMSXマガジン永久保存版(1)を、MSX-DOS2が使いたい人はMSXマガジン永久保存版2を購入するとよい。同永久保存版3にもいくつかの貴重な資料が載っている。インターネットでもある程度知ることはできるが、公式の説明の方がかえって手っ取り早いだろう。
 いまさらMSX-BASICやMSX-DOS2を推奨することはできないので、かつて活躍したパソコンの雰囲気を思い出すのが第一の目的となる。ちょっとした飾りのようなプログラムなら作れるし、プログラム関数電卓代わりにはなるから、実用性が全くないわけではない。

 1チップMSXは、それだけのために2万円払う気になる人向けの装置である。ある程度ノリが必要な装置で、冷静に対応するのは間違った使い方だ。以下、はしゃいでいるように思えるかもしれないが、その感想は正しい。
 また、VHDLに言及しているかのように見える個所があるが、まだ勉強中であることを告白しておく。

● ユーザーズマニュアル

 ちょっと不思議な製本が話題になっているものの、立派な装丁の説明書である。たいへん真摯な作りで、おもちゃでない、本物のMSXの証に見える。MSXのロゴがまぶしい。

 本体の各部名称、キーボードの機能につづいて、ゲームなどのROMカートリッジ、外付けFDドライブ、データレコーダ(テープレコーダ)の使い方と続く。
 外付けFDドライブは今では存在自体が珍しいと思う。カセットテープはMSX1当時はプログラムの記憶媒体としてはまだ使われていたと思うが、1チップMSXで動かした人はいるのだろうか。(追記: いらっしゃるようだ)

 結局、その次で紹介されているSDメモリカードが1チップMSXの主力外部記憶装置である。外付けFDドライブとは排他的利用が推奨されているが、困る人はいないだろう。というのも、ディスクイメージファイルの使い方がその次に書いてあるからである。ディスクイメージファイルが公式サポートされている、ということだ。

 ちなみに、付属CD-ROMは1チップMSXのどこに差すのか、といった冗談がある。1チップMSXでCD-ROMを扱うのは不可能ではないらしいが、扱える人は全国で5人とか、そんな数だろう。

● 困ったときには―Q&A

 家電製品のマニュアルによくあるQ&Aコーナーが続く。

 正常動作中は光が左右に動く緑の8つのLEDはステータスランプといい、異常動作時は表示が異常になるらしい。おそらく開発時に活躍したのであろう。

 一部のVGA用モニタでは正常に表示されない、つまりは予想通り、やや特殊なVGA信号ということらしい。ソースプログラムにもその旨が書いてあって、たしかに、我が家の液晶モニタでの表示は調節してもあまり美しくない。
 もっとも、CRT(ブラウン管)モニタでは感動の美しさなので、私は満足である。ただ、CRTにも難点はあり、高解像度のためにインターレースモードにすると激しくちらついてしまう。この場合は信号に追従する液晶モニタが、あればだが、使いたくなる。
 あるいは、「インターレースモードのノンインターレース表示」があってもよい。ついでに、MSX PLAYerみたいに正方形画素のモードも欲しいところだ。現状の1チップMSXで改造可能かどうかは、もう少し調べないと分からない。

 USBキーボードは使えない。PS/2キーボードが使える。私はささやかなキーボードマニアなので、PS/2キーボードもいくつか持っていたから困らなかった。USBは現在調べているところだが、一般にUSBホストを作るのは大変らしく、「拡張端子」は当面は機能しないだろう。当然だろうが、複数のキーを同時に押した際の動作は実機とは異なるらしい。
 まあ、悩ましいところだ。Windowsパソコン用のキーボードには極めて使い心地のよいものがあるので、1チップMSXの選択はよかったと思う。が、批判もあるだろう。

 ROMカートリッジで動かない場合に試す、[Shift]キーを押しながら電源を入れてメモリを稼ぐ方法が実機同様に使えるらしい。他にもちょっとした技が再現されているという。こうした、しつこいほど細かな配慮が1チップMSXを魅力あるものにしている。

 MSX規格のジョイスティック(ジョイパッド)が使えるらしい。手元の資料では本体側の回路しかないが、単純なスイッチで良いらしい。しかし、市販品は無いだろう。作らないといけないので、ジョイパッド側の参考回路とボタンの配置図が見たい。
 2つのハードルがある。一つはコネクタで、本来は特殊なようだが、1チップMSXの表面を見る限り、通常の市販部品が接続できると思う。もう一つは、1チップMSX本体内部で5Vではなく、3.3Vに10KΩでプルアップされていることである。面白いことに、5番ピンには本来の仕様通りに5Vが供給されているようだ。

 DIPスイッチ「6番」は資料にはOFFで使用となっているが、22ページでは機能が示唆されている。ONにするとクロックが3倍になるらしい。実際に動かすと2倍強の速度らしいが、場合によってはturboRよりも速くなる。本当のところは、ソースプログラムを丹念に読む必要がある。ちょっと読んだ感じでは、周辺機器に不具合が生じるかもしれない、ということで、確かにSDカードを差したままだと起動に失敗することがある。
 ただ、加速が快適であることは間違いない。実を言うと、私も6番ONを常時楽しんでいる。購入者へのちょっとしたプレゼントだろう。このあたり、実現が望まれているMSX3への登竜門なので、天才利用者の出現が望まれるところだ。CPUのソースコードも面白くて、クロック以上の加速が可能なようである。

● 資料

 仕様等が書いてある。

 CPUは名作Z80(3.58MHz)コンパチ。どの程度の互換かはソースコードの解析が必要である。といっても、元のZ80の回路が公開されているとは思えないし(周知のような気はするが…)、公開されていても役立たないから、見かけ上の一致が目標となる。
 ちなみに、MSX1仕様では割り込みにVDPからの60Hz信号が入っていて、割り込みモード1が採用され、BASICで利用されているらしい。

 画像処理を担当するVDPはMSX2用に開発されたV9938の互換で、こちらも名作。外部から見た仕様は、永久保存版3等で見ることができる。当時でもすでに素朴な動作ではない。

 音源は豪華で、いわゆるピコピコ音のPSGに加えて、FM音源とWAVE(SCC)音源が入っている。ゲームの雰囲気を良くするには必須の要素だから採用されたと思う。こうした人工音源は、現在ではかえって珍しい。なお、回路図上のD/Aコンバータは6bitで、そのままだとオーディオとしてはやや弱い。信号に細工をしてあるかは不明。

 メインRAMは1MBもある。当然、いわゆるバンク切り替えが必要だが、切り替え方は周知のようだ。ROM量も公開されている。
 漢字は第一水準まで。漢字ドライバはないが、BASICからは「PUT KANJI」命令で使用できる。時間があったら、中身を解析したい。
 MSX-DOSはバージョン2.31だから高級。これも1チップMSXの魅力の一つとなっている。MS-DOSから類推して、バージョン3があったとしたら、それはネットワーク対応のことで、基本機能が高まるわけではない。
 クロックICはない。毎回起動時に日付と時刻を手入力するのが無難であろう。これは、初期のMS-DOS2の時代にはやっていたことで、1983年ころにはあたりまえの作業であった。

● 追加 PUT KANJI お試しプログラム
 1チップMSXでは第一水準漢字まで表示される。MSX PLAYerのMSX2+以上では第二水準まで
 動かし続けると行540のオーバーフローで停止する。

100 REM yokada:061205:kanji hyouji
110 DEFINT A-Y
150 SCREEN 7,,,,,3
160 SET PAGE 0,0: CLS
170 PUT SPRITE 0,(0,217)
180 SET PAGE 1,1: CLS
190 PUT SPRITE 0,(0,217)
210 K=(0+32)*256
220 FOR J=0 TO 3
230  FOR I=1 TO 31
240   C=K+J*512+I+32
250   SET PAGE 1,0:PUT KANJI(I*16, J*51),C,,,1
260   SET PAGE 1,1:PUT KANJI(I*16, J*51),C,,,2
270  NEXT I
280  FOR I=0 TO 31
290   C=K+J*512+I+64
300   SET PAGE 1,0:PUT KANJI(I*16, J*51+9),C,,,2
310   SET PAGE 1,1:PUT KANJI(I*16, J*51+8),C,,,1
320  NEXT I
330  FOR I=0 TO 30
340   C=K+J*512+I+96
350   SET PAGE 1,0:PUT KANJI(I*16, J*51+17),C,,,1
360   SET PAGE 1,1:PUT KANJI(I*16, J*51+17),C,,,2
370  NEXT I
380  FOR I=1 TO 31
390   C=K+J*512+I+288
400   SET PAGE 1,0:PUT KANJI(I*16, J*51+26),C,,,2
410   SET PAGE 1,1:PUT KANJI(I*16, J*51+25),C,,,1
420  NEXT I
430  FOR I=0 TO 31
440   C=K+J*512+I+320
450   SET PAGE 1,0:PUT KANJI(I*16, J*51+34),C,,,1
460   SET PAGE 1,1:PUT KANJI(I*16, J*51+34),C,,,2
470  NEXT I
480  FOR I=0 TO 30
490   C=K+J*512+I+352
500   SET PAGE 1,0:PUT KANJI(I*16, J*51+43),C,,,2
510   SET PAGE 1,1:PUT KANJI(I*16, J*51+42),C,,,1
520  NEXT I
530 NEXT J
540 K=K+2048
550 GOTO 220

(続く)