Z80

KM-BASIC for MZ-80K/MZ-700 ver 0.6.8

2012年9月20日

このブログで、製作記事を書いていましたMZ-80K/KM-Z80用のBASICインタープリターを、「KM-BASIC for MZ-80K/MZ-700」として、公開します。Vectorでも公開の手続きを取りましたので、近日中にそちらにも現れるはずです。

ダウンロードはこちらから(ver 0.6.8)。
ダウンロードは、Vectorから

以下、readme.txtからです。

********************************************

           KM-BASIC ver 0.6.7-beta
       for KM-Z80/MZ-80K/MZ-80C/MZ-700

    Copyright (C) 2012 Katsumi Morimatsu

       kmorimatsu@users.sourceforge.jp
  http://hp.vector.co.jp/authors/VA016157/

********************************************

このライブラリはフリーソフトウェアです。あなたはこれを、フリーソフトウェ
ア財団によって発行されたGNU 劣等一般公衆利用許諾契約書(バージョン2.1 
か、希望によってはそれ以降のバージョンのうちどれか)の定める条件の下で
再頒布または改変することができます。

このライブラリは有用であることを願って頒布されますが、*全くの無保証* 
です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含
め全く存在しません。詳しくはGNU 劣等一般公衆利用許諾契約書をご覧くださ
い。
 
あなたはこのライブラリと共に、GNU 劣等一般公衆利用許諾契約書の複製物を
一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財
団まで請求してください(宛先は the Free Software Foundation, Inc., 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA)。

GNU 劣等一般公衆利用許諾契約書(バージョン2.1)の非公式な日本語訳は、
次のURLで閲覧することができるかもしれません。
http://www.opensource.gr.jp/lesser/lgpl.ja.html

LGPL(v2.1)に基づくフリーソフトウェアとして扱われる限り再頒布可能です。

<概要>
KM-BASICは、MZ-80K/MZ-80C/MZ-700及びKM-Z80で使用可能な、整数型BASICです。
インタープリターですが、JITコンパイル形式で実行されるので、通常のインター
プリターより速く動作します。エディターは古のBASICと同じ、行番号形式です。

<序論>
MZ-80Kは、SHARPが1978年に発売した、8bitパーソナルコンピューターです。発
売当時、ほぼ同時期に発売された日立のベーシックマスターや、少し遅れて販売
されたNECのPC-8001と並んで、高級言語であるBASICを個人のレベルで使えるマイ
クロコンピューターとして、一世風靡しました。

MZ-80Kには、マウスなどのポインティングデバイスはなかったものの、文字や
グラフィックを表示・入力するためのディスプレイやキーボードを備え、当時高
性能のCPUであったZ80が、これまた当時は大容量であった20 KBのRAMで動きまし
た。

外部記憶装置としてカセットテープレコーダーが付属していました。読み書きの
速度は平均で1400ボーであり、これは当時の主流であったカンザスシティスタン
ダードの300ボートと比べて、夢のような速度でした。また、レコーダーが本体に
付属しているために読み書きの安定性も抜群でした。

このように、MZ-80Kは、今日のパーソナルコンピューターが持つ基本特性を、小
規模であるものの、ほとんど備えており、日本のパーソナルコンピューターのさ
きがけとも言える存在です。他方で、その構造はいたってシンプルであり、その
全回路図が公開されていました。MZ-80Kのこういった特性は、コンピューターの
動作原理を理解するうえで、貴重なものです。パーソナルコンピューターはその
後、発展に発展を遂げ、非常に複雑になりました。現在では、個人のレベルでこ
ういったコンピューターの全体像を把握することは、プロの方々でも難しいと言
えるでしょう。

今日、MZ-80K本体を購入することはかなり難しくなっています(まれにオーク
ションに出品されることがあります)。しかし、そのアッパーコンパチブルであ
るMZ-700のエミュレーター(MZ-700 Emulator MZ700WIN For Windows)が公開され
ているので、現在でもそれがどんなものであったのかを伺い知ることが出来ます。
また、拙作のMZ-80Kレプリカ(KM-Z80; 回路図及びプログラムを公開済み)を作
成すれば、MZ-80Kの動作環境を再現することが出来ます。

こういったエミュレーターやレプリカなどを利用する上でしばしば問題になる
のが、その上で動作するプログラムです。ROM上にある基本プログラム(ここで
は、モニタープログラムと呼ぶことにします)は、コンピューターの動作に必須
ですが、それを販売した会社(MZ-80Kの場合は、SHARP)が著作権を有するため、
オリジナルのコンピューターを有しているのでない限り、使用することが出来ま
せん。Apple Iのレプリカの場合、モニタープログラムを作成した技術者から許
可を得ることで、この問題をクリアーしています。MZ80Kの場合、オリジナルの
モニタープログラム(SP-1002)とは著作権の異なるモニタープログラムが公表さ
れており(MZ-NEW MONITER)、それを用いることでこの問題をクリアーしていま
す。

MZ-80Kのようなレトロコンピューターを考える上で、高級言語であるBASICは
切っても切り離せない存在です。MZ-80K用には、SHARPオリジナルのSP-5010や
SP-5030、ハドソンソフトのHu-BASICなどがあります。いずれもカセットテープ
に入った状態で販売されていましたが、今日、こういったソフトウェアを入手
することはほとんど不可能です。

そこで、MZ-700エミュレーターやMZ-80Kレプリカ上で使用可能なBASICを、独
自に作成することにしました。オープンソースのフリーソフトウェアとして公
開しますので、どなたでも自由に使用でき、また、改変する事も可能です。ア
センブラではなく、Cを使って開発しましたので、コンパクトさには欠けます
が、改変して使用することが容易です。

<使用方法>
添付のrelease.mztファイルを、まるくん(さん)製作のMZ-700 Emulatorで使用
するか、のりのりさん製作のmzt2wavを用いてwavファイルに変換し、MZ-80Kなど
の実機で使用してください。MZ-700 Emulator及びmzt2wavの入手先は、このファ
イル末尾の「参考リンク」にあります。

KM-BASICをロードすると、

LOADING KM-BASIC
BASIC KM-1000
3FB6-CFFF
36938 BYTES FREE

と表示され(数字部分はバージョンと環境に依存)BASICプログラムを入力可能な
状態になります。行番号に続けてコードを入力することで、プログラムの編集が
可能です。行番号を省いてコードだけを入力すると、そのコードがそのまま実行
されます。

<利用可能な変数型>
利用できる変数の型は、16ビット符号付整数(-32768 ~ +32767)と、40文字以
下の文字列の2種類です。文字列の末端部には0x0Dが付加されます。

A-Zの26個の整数型変数が利用可能です。文字列として扱う場合はA$のように記
述します。ただし、A(整数型)とA$(文字列型)を同時に使用することは出来ま
せん。

整数型の定数は、10進法で記述します。16進法を使う場合、「$1200」のよう
に、頭に「$」を付加してください。

文字列方の定数は、「"」で囲って記述してください。「"」を使用する場合は、
「CHR$($22)」のように記述することが出来ます。

<命令>
以下、x, y, zは整数値を、x$, y$, z$は文字列を指します。xxx, yyy, zzz, www
は任意のステートメントを指します。[ ]は省略可能で有る事を示します。

命令同士を「:」で区切ることにより、一行で複数のコマンドを処理すること
が出来ます。

LIST [xxx] [-] [yyy]
	xxx行目からyyy行目までのプログラムを表示する。
RUN [xxx]
	プログラムを実行する(指定された場合、xxx行目から)
SAVE
	プログラムをカセットテープに保存する。
LOAD
	プログラムをカセットテープから呼び出す。
NEW
	プログラムを消去する
BYE
	MONITORプロンプトに戻る
REM xxx
	何も実行しない
[LET] x=yyy
	yで示された計算結果を、xに代入する。「LET」は省略可。
[LET] x$=yyy
	yyyで示された文字列(もしくは連結結果)を、x$に代入する。「LET」は省略可。
DIM xxx [, yyy [, zzz [, ... ]]]
	整数型の一次元配列を割り当てる。
	xxx,yyy,zzzは、例えば「A(10)」のように記述する。この場合、A(0)から
	A(10)までの11個の整数型変数が確保される。
CLEAR
	すべての文字列型変数と整数型配列を破棄し、整数値を0とする。
PRINT [ xまたはx$ [ ,または; [ yまたはy$ [ ... ]]]]
	ディスプレイに、整数値または文字列を表示する。「;」を使用した場合、
	次の表示が続けて行われる。「,」を使用した場合、10文字ずつに区切っ
	て表示される。どちらも使用しない場合、次の表示は行を変えて行われる。
POKE x,y
	xで示される物理的アドレスに、yで示される値(1バイト値)を書き込む。
EXEC xxx[yyy[zzz[...]]]
	機械語を実行する。ただし、xxx,yyy,zzzは2文字のHEXで示された1バイト値。
IF x THEN yyy [ ELSE zzz ]
	xが0以外のとき、yyyを、0のときzzzを実行
FOR x=yyy TO zzz [ STEP www ]
NEXT
	yyyで示された計算結果をxに代入し、xの値がzzzになるまで次のNEXT文までの
	ステートメントを、繰り返し実行する。繰り返しのたび、xの値はwwwずつ増加
	する(省略された場合は1ずつ)。「NEXT」の次に何も記述しないことに注意。
GOTO xxx
	xxx行目に移動する。
GOSUB xxx
	現在の実行位置を記憶し、xxx行目に移動する。
RETURN
	最後に実行されたGOSUB文の次のステートメントに移動する。
END
	BASICプロンプトに戻る

<関数>
以下、x, y, zは整数値を、x$, y$, z$は文字列を指します。[ ]は省略可能で有る事
を示します。

PEEK(x)
	xで示される物理アドレスから1バイト読み取り、返す。
RND()
	0から32767までの擬似乱数を返す。
ABS(x)
	xの絶対値を返す。
SGN(x)
	xの符号(-1, 0, または1)を返す。
NOT(x)
	x=0の場合に1を、そうでない場合に0を返す。
ASC(x$)
	文字列の最初の一文字の、アスキーコードを返す。
LEN(x$)
	文字列の長さを返す。
STRNCMP(x$,y$,z)
	2つの文字列のうちz文字を比較し、結果を返す。同じ文字列の場合は0。
CHR$(x)
	xをアスキーコードとする文字を返す。
HEX$(x [,y])
	xの値を、16進数の文字列として返す。yが指定された場合、yバイト長の
	文字列になる。
A$(x [,y])など
	xの値が0の場合、文字列全体を返す。
	xの値が精の場合、xで示される位置より右側の文字列を返す。
	xの値が負のとき、文字列の右側x文字を返す。
	yが指定された場合、y文字分の文字列を返す。

<演算子>
x + y
	整数加算
x - y
	整数減算
x * y
	整数乗算
x / y
	整数除算
x % y
	整数剰余
x = y
	2つの整数値が等しい場合に1、そうでないときに0
x != y
	2つの整数値が等しい場合に0、そうでないときに1
x < y
	xがyより小さい場合に1、そうでないときに0
x <= y
	xがyより小さいか等しい場合に1、そうでないときに0
x > y
	xがyより多きい場合に1、そうでないときに0
x >= y
	xがyより多きいか等しい場合に1、そうでないときに0
x AND y
	xとyの値のビットごとの AND(論理積でないことに注意)
x OR y
	xとyの値のビットごとの OR
x XOR y
	xとyの値のビットごとの XOR
x$ + y$
	文字列の連結(LET文でのみ使用可)

<参考リンク>

「Enri's Home PAGE (mz-80K)」
http://www2.odn.ne.jp/~haf09260/Mz80k/EnrMzk.htm
Enriさんのページ。MZ-80Kに関して、さまざまな解析がなされている。MZ-80Kの
回路図も公開されている。

「MZ-700 Emulator MZ700WIN For Windows」
http://retropc.net/mz-memories/mz700/
MZ-700エミュレーターを紹介している、まるくん(さん)のページ。
"MZ-NEW MONITOR"と"mzt2wav"のダウンロードも、こちら。

「KM-Z80(MZ-80K互換マイコン)紹介編」
http://www.recfor.net/blog/mycom/index.php?itemid=846
拙作のMZ-80K互換マイコンの紹介ページ。

コメント

Kat (2012年12月19日 18:10:33)

メモリーが48K以下の場合に誤作動するバグを解消したver 0.7.0が、Vectorから入手可能です。
http://www.vector.co.jp/soft/other/other/se499422.html

遠藤 遥 (2013年7月24日 19:35:26)

新規ローカライズ・プロジェクト―

こんにちは。
私は、パソコン用のソフトウェアを探している時にこちらのサイトを見つけたのですが、とてもおもしろそうなサイトですね :)
そちら様が"http://www.recfor.net/blog/mycom/index.php?itemid=866"で www.vector.co.jpにリンクしていらっしゃることに気づきまして、ひとつお願いなのですが、もしよろしかったら、「ダウンロードアストロ」ja.downloadastro.comにリンクしていただけないでしょうか。
私は、日本でのダウンロード・ソフトウェアの普及・促進プロジェクトに関わっております。ダウンロードアストロは、日本語で利用できるソフトウェアのダウンロード・サイト、巨大なソフトウェア・ライブラリーです。30万以上の世界中のソフトウェアとゲームがあり、プロのレビューとユーザー評価もご覧になれます。
ご協力いただければ大変ありがたく存じます。あなたのユーザー様にも、きっとご満足いただけることでしょう。
バナーについては、このメルアドにご連絡ください。これを機会にダウンロードアストロをどうぞよろしくお願いいたします。

コメント送信