MZ-80K2

Tweet

 MZ-80K2は所有していませんし、していたとしてもMZ-80Cなどを語っていれば特筆することもあまりありませんが…強いて言えば

カラーリングが変わりましたね?
キートップの形状も変わりましたね? もしかしてキー自体も変わりました?
標準装備されるRAMが32KBにアップしましたね?
K系としては初の完成品、価格変わらずということを考えると実質値下げ…?

ぐらいですか。特にキーボードを見ているとMZ-80K2というのは輸出版のMZ-80Kを国内向けに仕立て直したもの…という気がしなくもないんですが、それはまぁ現時点では情況証拠レベルの話でしかなく。

 さて、MZ-80K2に引っかけて披露するのは添付されるBASICの話です。MZ-80Kの第一ロットに添付されたと推測されるSP-5001から始まって、SP-5002→SP-5010→SP-5020→SP-5030とバージョンアップしていったわけですが、どのバージョンがどのモデルに添付されたかわかりますか?

 …いやクイズというより情報提供のお願いに近い意味合いもありますが。今のところ、こういう変遷を辿ったのだろうと推測しています。

  SP-5001 SP-5002 SP-5010 SP-5020 SP-5030
MZ-80K  
MZ-80C      
MZ-80K2        
MZ-80K2E        
MZ-1200        

 SP-5030が添付されたMZ-80DUの発売がMZ-80K2の直前なのでおそらく80K2もSP-5030、MZ-80K2はMZ-80Kと交代で登場したので80KにSP-5030が添付されたことはないはず、MZ-80Cの前期マニュアルにはSP-5020が標準添付されているという記述があるのでおそらくSP-5010添付の時代はない…という推測なんですけどね。バージョンの切り替わりタイミングによっては一部に推測とは違うBASICが添付されたこともあるかもしれません。

 K/C系列ということではSP-5030がひとつの完成形ということになるのでしょうか。1980年にMZ-80K2が発売されて以来、MZ-700の登場まで2年以上もの長きにわたりK/C系列の標準BASICであり続けました。惜しむらくは、それだけ標準の座にあったのなら、DISK BASICもSP-5030と同等にバージョンアップしたものが提供されてほしかったですね。SP-6010はSP-5020レベルの仕様に留まっていましたから、例えばCURSOR文が使えないというのは地味に痛かったりするんですよね。

3つのSP-5030

 月刊I/O誌・1982年2月号のRANDOM BOXに、「MZ-80K用 SP-5030のNew Versionについて」という題のレポート投稿が掲載されました。1981年7月頃に購入したMZ-80K2添付のSP-5030に、パッチを当てるタイプのBASIC強化ユーティリティを適用させてみたところ暴走するので、調べてみるとどうやら新しいバージョンだった、という内容です。

 変更されていたのはほとんどがテープのLOADに関わる箇所で、SP-1002のテープリードルーチンと同じものがBASICの未使用領域に置かれていて、LOADに関してはSP-1002の代わりにそこが呼ばれるようになっているのです。

 テープのLOADがRAM化されているというのはMZ-1200に添付されるSP-5030 V1.0Aと呼ばれるバージョンの特徴として一部で有名でした(エミュレータの高速LOAD対応が無効になってしまうので)。しかしどうやらもっと前からこの変更が存在したということになるみたいなのですよ。

 調べてみたら幸いなことに新旧両方のバージョンのSP-5030が手元にありましたので、V1.0A版と併せて比較してみましょう。

テープ

  旧版 新版 V1.0A版

 便宜上、リリース順に旧版、新版(記事でいうところのNew Version)、V1.0A版…と呼び分けることにしましょう。

 V1.0A版はその後に続くラベルデザインの第一号なので一目瞭然として、問題は旧版と新版の違いです。写真ではわかりにくいですが、旧版はカセットハーフが透明(というかトランスルーセント)なのに対して新版は単に黒いプラスチックでできています。

 またV1.0A版はMZ-2000のMZ-1Z001などでバージョン表記があったのと同じく、裏面に「SP-5030」「V1.0A」と刻印がありますが(表にないから書かないとわかりませんよね)、旧版・新版はともに真っ黒の裏面ですからバージョン表記は見当たりませんね。

 MZシリーズ用のカセットテープは当初から透明のカセットハーフなのですが、どこかの時代で透明ではなくなります。SP-5030にこういう違いがあるのですから、遅くとも1981年前半には切り替わったということではないかと思います。

起動画面

 旧版の起動メッセージ。SP-5020以前からのものと同じですね。

 というか、今にして思えばこのシンプルすぎるくらいのメッセージはワンボードマイコンでBASICインタプリタを動かしたみたいな雰囲気がありますね。良く言えばCP/MでマイクロソフトBASICを動かしたのと似た「お客様」感。「クリーンコンピュータ」ならではなどと言えば納得しそうにもなりますが、むしろこれは「フルキーボードとTV出力を付けた自作のワンボードマイコンに、紙テープからコンバートした12K BASICをロードした」みたいな? いや私はさすがに経験していませんが。
 新版の起動メッセージ。同じかと思いきや…LOADINGメッセージ(ファイル名)が「BASIC SP-5030」からシンプルな「SP-5030」に変更されています。
 そしてV1.0A版の起動メッセージ。ファイル名が「SP-5030」に変更されたのはこのバージョンからだと思い込んでましたよ…。

 そしてMZ-80Bばりの派手なタイトル。正確にはMZ-80AのSA-5510からの影響なんじゃないかと思うのですが。

差分

 フリーエリアに違いがないのでちょっと意外なのですが、BASIC自体のサイズが異なります。イメージ化したファイルのサイズを見てみると、

となっているのです。なお本体サイズはヘッダの128バイトを引けば求められます。

 8ビットマシンの1バイトは血の一滴…改版で増えたプログラムは余裕分を食い潰して収められていると考えられますから、もうちょっとフリーエリアを増やせたんじゃないの? …と思ってしまいます…。

 では簡単にですがダンプリストにて各バージョンの差異をチェックしていきます。使用したのはWinMergeという定番ツールです。本来テキストファイルの差分をマークして必要であれば内容を統合できるというツールですが、バイナリ比較モードがあって、バイト単位で差異が判るようになっています。

 WinMergeでは3つ以上のファイルを同時比較することが可能なのですが、隣同士の比較にとどまり(バージョンの差分を見るためのツールという性格ゆえか)、3つともそれぞれに違うなどというところまでは残念ながら色分けされません。という注意事項を踏まえたうえで…。

 まずは先頭のあたり。

旧版 新版 V1.0A版

 上の方、新版とV1.0A版にだけ色が付いていて旧版には色がないというのは、旧版=新版≠V1.0A版という意味です。以下同様に。

 V1.0A版が違うというのは、起動時の派手なオープニング画面を出力するサブルーチンに飛ばした後の処理が少し違っているからですね。少し下には新版までの起動メッセージがデータとして置かれているのですが、V1.0A版でも色が付いていないということは、実は元のメッセージがずっと残っていたということなんですね。ソースレベルの改造ではなかった(=パッチ当てレベルの改造だった)という可能性がありそうですね。

 次は真ん中あたり。

旧版 新版 V1.0A版

 ここはLOAD命令の処理を行う部分と思われます。モニタ(SP-1002)の0027番地(RDINF)と002A番地(RDDAT)を呼び出す代わりに4049番地と4069番地を呼び出しています。旧版と新版に色が付いているということは、新版になって変更され、V1.0A版は変更されたままになっているというわけですね。

 そして最後の部分。

旧版 新版 V1.0A版

 旧版と新版の色が変わり始めた所が、4049番地に相当します。つまり新版にてテープリードルーチンが置かれた場所は、旧版の一部を含んでいるというわけです。えー、だったら旧版には何にも使われないゴミデータが含まれていたということですか? この部分を不要にする変更とかありませんしね…。

 一方、V1.0A版で追加されている部分はオープニング画面のサブルーチンです。表示するメッセージも見えますね。

 新版→V1.0A版の変更はここに挙げたものの他にもちょこちょこあるんですが、おそらくバグパッチかテスト時に書き込まれたワークだろうと思われます。そんなわけで、バグパッチを除けばテープリードルーチンに関するものが最大級の変更点ということになるのでしょう。

 もしや、テープリードルーチンがRAM化されているのならウェイト係数を書き換えれば2000bpsのテープを読めたりして? などと期待して解析してみたところ、

というバグの修正が目的であることがわかりました。単なるRAM化じゃなかったのか…。

 モーターオンしてからのウェイトは、もしかするとPLAYボタンを押した時のノイズが音声系に混入して不意に読み取られるようなトラブルがあったのかもしれません。"1"の確認漏れが何か影響するならモニタのLOADコマンドも不安定になるはずで、こちらは偶然リカバーできているのを仕様通りに修正しただけなのかもしれません。いやもしかしたら、こちらの原因でも不安定になっちゃう個体が存在したんでしょうか? BASICでのみの修正ですから、プログラムのLOADというよりシーケンシャルデータのリードの方に対応したかった可能性もありますね。

 この修正でSP-1002のテープリードルーチンのうちかなりの部分をこちらにコピーしているんですが、それでいて1バイトリードやウェイトなど肝心なサブルーチンはROMのものを使っているので、ウェイト係数を書き換えたりなどして2000bpsに対応させることなどできないことも判明しました。

まとめ

 雑誌などでの開発者インタビューでは、「クリーンコンピュータ」はバグ対策の産物だったという回想が語られています。まさにこのSP-5030までのバージョンアップ、そして新版・V1.0A版でのバグパッチはその特性を最大限に活かしたものだったと言えますね…と言いたいところなのですが、「ハイスピードBASIC」として別売されたものはともかく、このSP-5030のみに見られる改版は特にアナウンスされず知る人ぞ知る存在で、クリーンコンピュータの恩恵とは縁のないものとなりました。バグがそれほど深刻なものではなかったからなのでしょうか。

 しかし新版などというバージョンがあったということは、さっきもちょっと触れたエミュレータ(MZ700WIN)でハマった人がいたんじゃないかと思うのですが、どうだったんでしょうね? MZ700WINではモニタまたはBASICにフックしてロードを短縮する機構があったのですが、当時の認識としてV1.0A版はモニタでのフックが効かないことが知られていて、BASICへフックするよう小細工するMZTフォーマット用ヘッダデータが用意されていたのです。逆に言えばMZ-1200に添付されていないSP-5030なら専用ヘッダデータがなくても短縮ロードが使えることになっていました。

 ですが上で見たように新版にて既にロードに関してROMを使わなくなっていたのですから、専用ヘッダデータにすげ替える必要があったわけです。そんなことも露知らず、当時「普通にイメージ化したら使えるはずですよ〜」などとアドバイスしていたかもしれないわけで…あるいは対処法が見つからず、SP-5030は起動するもののロードできなくて途方に暮れた人もいたのでしょうか…。だとしたらお役に立てず申し訳ない…。

展示品一覧に戻る