キャラクタPUT

Home PC-6001mkII Program etc

動作モード MODE:1(N60-BASIC 16KB) PAGES:2

画面 更新日:2004/01/24
作成日:2003/04/22

 このプログラムは、SCREEN 2のセミグラフィック 3x2キャラクタ分(6x6ドット)の表示を行うためのツールです。

 PRINT文で文字を表示する時と似たような感覚でキャラクタを表示できる部分が特徴です。

2004/01/24:表示例その2を追加しました。

使用方法
 プログラムを実行すると、マシン語の読みこみ後表示デモが始まります。デモは、最下段の任意のX座標へのキャラクタPUTと画面スクロールを組み合わせた単純なものです。

 少し見て飽きてきたら、STOPキーでプログラムを止めて見ましょう。デモが始まった時点で、キャラクタPUTがUSR( )関数で使用できるようになっています。

 このツールの使い方は、LOCATE文等で表示位置を指定後に、
A=USR(キャラクタ番号)
を実行するだけです。
 このデモでは、あらかじめキャラクタ番号が0〜3の範囲で4種類のキャラクタが入っています。

 試しにHomeキーで画面をクリアした後に以下の命令を実行してみます。
FOR I=0 TO 3:LOCATE I*4,I*3:A=USR(I):NEXT
画面 画面

 すると、カーソル位置が左端になるように、各キャラクタが表示されます。このように、マシン語をあまり意識せずにキャラクタの表示を行う事が出来ます。

 なお、キャラクタが画面をはみだすような位置にカーソルがある場合(X座標が30〜31またはY座標が15)は、USR( )関数を実行してもキャラクタは表示されないようにしています。

キャラクタの作成
 今度は表示するキャラクタのデータを作成する方法について説明します。ちょっと難しいですが...

 例として、サンプルにもあるオレンジのキャラクタを作成する手順を示します。


 まず、1キャラクタ目の部分に注目します。キャラクタの色情報を含めて横に並べると、以下の様になります。
(橙)

 ここで、キャラクタのドットがついている部分を1,ついていない部分を0に置き換えます。
(橙) 000001

 次に、キャラクタの色情報を以下のように置き換えます。
シアンマゼンダ
000001010011 100101110111

111 000001

 残りのキャラクタについても、同様に置き換えを行います。
(橙)
(緑)
(橙)
(橙)
(橙)
(橙)
111000001
000001111
111000010
111111101
111111111
111111110

 この結果の各行について、右から4ビットずつ分けます。
111000001
000001111
111000010
111111101
111111111
111111110
11000001
00001111
11000010
11111101
11111111
11111110

 この結果の各行の左に1つだけ残っている数値を、一番下の行に左から順になるように移動した後、それぞれの4ビットのデータを16進に変換します。
11000001
00001111
11000010
11111101
11111111
11111110
11000001
00001111
11000010
11111101
11111111
11111110
10111100

 最後に、各行毎に出来あがった16進の文字をつなげて、カンマ区切りに整形すれば出来あがりです。(実際は全て半角文字です)
C1,0F,C2,FD,FF,FE,BC

表示例 その2
画面

 一つのキャラクタに対して複数のパターンを用意すると、アニメーションっぽい事もできます。今回は訳あって、MODE:2,PAGES:4となってます。

 スペースキーを長押しすると、画面が一時クリアされます。

ダウンロード

以下、余談
  • キャラクタPUTのデモとしては、ちょっとインパクトが足りなかったかも。
    また落ち付いた時にでも、もう少しマシなデモを作ろうかと思います。
    → 表示例 その2を作ってみました。

  • キャラクタ作成の説明は、この辺りが精一杯です...。だけどやはり 16進やビットの概念がわかるレベルじゃないと難しいかもしれません。


はなび PC-6001mkII マーキー