2025/09/05(金) [n年前の日記]
#1 [mz] MZ-700用Hu-BASICのPSETについて
SHARP MZ-700という8bit PCには、S-BASIC と Hu-BASIC という2つのBASIC言語が付属していた。
その、Hu-BASICに準拠したBASICインタプリタを作成した方がおられるらしい。ソースも同梱されている。
_MZ-700用BASICインタプリタ
エミュレータ MZ700WIN 0.58 + MZ-700用互換モニタROM MZ-NEW MONITOR 上で LOAD (L[ENTER]) して動作確認してみたのだけど、手持ちのHu-BASIC用プログラムがそこそこ動いて感動してしまった。素晴らしい。
フツーに考えると、MZ-700はセミグラフィックで80x50ドットを扱えますよ、とされていたので、指定できる x, y は 0-79, 0-49 になりそうなものだけど。しかし、実際に確認してみたら、そうではなかった。
前述のデモプログラム内では、PSET に50を超えるy座標を与えていたようで…。どうやら、画面には見えていない下画面上にあらかじめドットを打って絵を作って、その下画面のドット絵を少しずつスクロールして表示画面上まで持ってくる、という処理をしていたらしい。
今頃になってPSET命令がそんな仕様だったと知った…。
不安になってMZ-700のマニュアルを確認してみたけれど、PSET(x,y) の x,y には 0-79, 0-49 を指定できるとしっかり明記されていた。どうやらy座標が 50-99 も受け付けるのは隠し機能っぽいな…。デモプログラムでいきなり隠し機能を使ってたんかい…。
その、Hu-BASICに準拠したBASICインタプリタを作成した方がおられるらしい。ソースも同梱されている。
_MZ-700用BASICインタプリタ
エミュレータ MZ700WIN 0.58 + MZ-700用互換モニタROM MZ-NEW MONITOR 上で LOAD (L[ENTER]) して動作確認してみたのだけど、手持ちのHu-BASIC用プログラムがそこそこ動いて感動してしまった。素晴らしい。
◎ 不具合に遭遇 :
ただ、Hu-BASIC に付属してきたデモプログラム、"OPENING" を LOAD して実行してみたところ、PSET命令を呼び出すところでエラーが出て…。
気になったので、オリジナルの Hu-BASIC を起動して、PSET命令と PRESET命令の仕様を少し確認してみた。
気になったので、オリジナルの Hu-BASIC を起動して、PSET命令と PRESET命令の仕様を少し確認してみた。
◎ PSET命令について :
- PSET( x, y <, c > ) : 指定した座標に、cで指定した色のドット(文字単位のセミグラフィック)を打つ。
- PRESET( x, y ) : 指定した座標のドットを消去する。
フツーに考えると、MZ-700はセミグラフィックで80x50ドットを扱えますよ、とされていたので、指定できる x, y は 0-79, 0-49 になりそうなものだけど。しかし、実際に確認してみたら、そうではなかった。
- x は、たしかに 0-79 以外の値を指定できなかった。-1 や 80 を指定するとエラーが出る。
- y については 0-99 まで指定できてしまう。-1 や 100 を指定するとエラーが出る。
前述のデモプログラム内では、PSET に50を超えるy座標を与えていたようで…。どうやら、画面には見えていない下画面上にあらかじめドットを打って絵を作って、その下画面のドット絵を少しずつスクロールして表示画面上まで持ってくる、という処理をしていたらしい。
今頃になってPSET命令がそんな仕様だったと知った…。
不安になってMZ-700のマニュアルを確認してみたけれど、PSET(x,y) の x,y には 0-79, 0-49 を指定できるとしっかり明記されていた。どうやらy座標が 50-99 も受け付けるのは隠し機能っぽいな…。デモプログラムでいきなり隠し機能を使ってたんかい…。
[ ツッコむ ]
以上です。


