• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PC-8001mk2のグラフィック変数について)

PC-8001mk2のグラフィック変数について

このQ&Aのポイント
  • NEC PC-8001mk2のグラフィック機能で、cmd put,cmd get命令を使用してグラフィックをコピー、ペーストする方法があり、そのグラフィックを格納する変数がある。
  • この変数はa%(50)のように配列変数であり、cmd getでグラフィックを変数に格納した後、printすると数字の羅列が表示される。
  • それぞれの数字は二進法で表され、十進法に変換されたものであると予想されているが、具体的な意味は不明。

質問者が選んだベストアンサー

  • ベストアンサー
  • poohron
  • ベストアンサー率59% (574/971)
回答No.1

PC-8001やPC-8801を扱ったことはありませんが、 当時の8ビット機でいろいろしていた者です。 機種によってコマンド名やパラメータの書式が異なっていたので ちょっと違っているかもしれませんが、 私が使用していたSHARP X1の「Hu BASIC」で使用していた PUTやPSETに(うろ覚えですが)当てはめて考えると、 10 画面出力のモードを指定(X1のSCREEN命令とは異なるので2,0,6の意味は分かりません。どれかの数字が色指定かも) 20 配列変数G%(20)を宣言 30 G%(0)~G%(19)に50行のDATA(20個のデータがあります)を格納 40 画面出力 50 データ ※40行のPUTは「出力」を意味し、(38,38)は出力する画面上の座標だと思われます。  また、出力する内容はG%の内容、PSETはドット描画。PRESETだとドット消去。 さて、50行のデータですが、ご推察のとおり「ドット情報を二進法で表し、それを十進法にしたもの」で間違いないでしょう。 多分、16桁の2進数を10進数にしているはずです。 0000000000000010 (2) 0000000000100100 (36) 1000000000000000 (-32768) 0100000000000000 (16384) 0000000001000000 (64) 0000000010000000 (128) 0000000000000000 (0) 1の部分はドットが描画され、0の部分は描画されません。 イメージとしては上記のように2進数を方眼紙のマス目に書き込み、 「1」の部分だけ塗りつぶすしてドット絵を描くような感じでしょうか。 ・・・うーん、分かりにくいかもしれませんね。説明下手でスミマセン。

hello_poor_tea
質問者

お礼

>多分、16桁の2進数を10進数にしているはずです 知りたかったのは、この部分でした! お陰様で、以下のように解析することができました。 サンプルで描かれるのは、 横1ドット×縦36ドット 最初の2,36 とは、 1ドットは4色を表すために2ビット必要なので 横1ドット=「2」ビット 縦「36」ドット 残りの数字を16桁の2進数にする。 -32768 → 1000000000000000 それを8ビットに区切る(2つに区切る) 1000000000000000 → 10000000 00000000 右から順番に縦に並べる 10000000 00000000     ↓ 00000000 10000000 これで上記の数字を並べ替えると、 -32768 00000000 黒     10000000 緑 16384 00000000 黒     01000000 赤 64 01000000 赤     00000000 黒 128 10000000 緑     00000000 黒 0 00000000 黒     00000000 黒 0 00000000 黒     00000000 黒 0 00000000 黒     00000000 黒 0 00000000 黒     00000000 黒 0 00000000 黒     00000000 黒 -32768 00000000 黒     10000000 緑 16384 00000000 黒     01000000 赤 16448 01000000 赤     01000000 赤 16448 01000000 赤     01000000 赤 16448 01000000 赤     01000000 赤 16448 01000000 赤     01000000 赤 64 01000000 赤     00000000 黒 -32640 10000000 緑     10000000 緑 128 10000000 緑     00000000 黒 となる。 4ドット単位でデータが構成されるため、 右側の3ドット分(6ビット)は0で埋められる。 他のデータでも試してみましたが、 すべてこの方法でうまくいきました。 どうもありがとうございました。

関連するQ&A