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 も受け付けるのは隠し機能っぽいな…。デモプログラムでいきなり隠し機能を使ってたんかい…。

#2 [basic] Microsoft が手掛けていた 6502 BASICがオープンソースになったらしい

大昔のMicrosoftが各社に提供していた 6502 BASIC がオープンソースになったらしい。

_Microsoft、「6502 BASIC」をオープンソースとして公開 | gihyo.jp
_Microsoft Releases Historic 6502 BASIC - Microsoft Open Source Blog
_microsoft/BASIC-M6502: Microsoft BASIC for 6502 Microprocessor - Version 1.1
_日付は48年前! Microsoft、往年の「6502 BASIC」をオープンソースとしてGitHubで公開【やじうまWatch】 - INTERNET Watch
_ビル・ゲイツが書いた48年前の「6502 BASIC」のソースコードをMicrosoftがオープンソース化 - GIGAZINE

Apple II やコモドール64で動いていたBASICだそうで。素晴らしい…。Microsoft、偉いなあ。日本企業も少しは見習ってほしい…。 *1

さておき。バイナリを逆アセンブルして機能別にファイル分けしたソースも以前から存在していたらしいのでメモ。

_Create your own Version of Microsoft BASIC for 6502 - pagetable.com
_mist64/msbasic: Microsoft BASIC for 6502 (Commodore, Apple, KIM-1, AIM-65, OSI, ...)

cc65という環境を使えばバイナリをビルドできるらしい。ファミコン向けのゲームも作れる模様。

_cc65 - a freeware C compiler for 6502 based systems
_cc65 - a freeware C compiler for 6502 based systems
_Releases - cc65/cc65
_cc65 - Wikipedia
_C言語で作るファミコンゲーム 〜CC65でHELLO WORLD〜|Kannoゲーム開発本部
*1: もっとも、当時勢いがあったNEC、富士通、シャープは、今はもう中国企業に売られてしまっていたっけ…。中国企業にとっては日本国内で普及してたレトロPCなんて存在すら知らないのではないかな…。

以上、1 日分です。

過去ログ表示

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