mieki256's diary



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用プログラムがそこそこ動いて感動してしまった。素晴らしい。

不具合に遭遇 :

ただ、Hu-BASIC に付属してきたデモプログラム、"OPENING" を LOAD して実行してみたところ、PSET命令を呼び出すところでエラーが出て…。

mz700_error_ss01.png


気になったので、オリジナルの 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 を指定するとエラーが出る。

mz700_hubaseic_pset_ss01.png

mz700_hubaseic_pset_ss02.png


前述のデモプログラム内では、PSET に50を超えるy座標を与えていたようで…。どうやら、画面には見えていない下画面上にあらかじめドットを打って絵を作って、その下画面のドット絵を少しずつスクロールして表示画面上まで持ってくる、という処理をしていたらしい。




今頃になってPSET命令がそんな仕様だったと知った…。

不安になってMZ-700のマニュアルを確認してみたけれど、PSET(x,y) の x,y には 0-79, 0-49 を指定できるとしっかり明記されていた。どうやらy座標が 50-99 も受け付けるのは隠し機能っぽいな…。デモプログラムでいきなり隠し機能を使ってたんかい…。

以上です。

過去ログ表示

Prev - 2025/09 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project