[PUT@] コマンド

グラフィックPatternを画面に表示します。
文法 1) PUT[@] (Sx, Sy) , <配列変数名> [(<添え字>)] [,<条件>]
   2) PUT[@] (Sx, Sy) , KANJI(<漢字コード>) [,<条件>] [,<フォアグラウ
     ンドカラー>,<バックグラウンドカラー>]
文例  PUT@ (100, 50), G%, PSET
    PUT (100, 150), G%(100)
    PUT (0, 0), KANJI(&H3021)

文法 1)
画面上のScreen座標の点(Sx, Sy)を始点として、 GET@ で<配列変数名>
に読み込まれたグラフィックパターンを画面上に表示します。
座標(Sx, Sy)の指定は、GET@ の場合と同様で、ワールド座標ではなく
スクリーン座標で指定します。
[GET@]参照。
<配列変数名>は、グラフィックパターンが読み込まれている数値型の配列変数の名前です。
<添え字>は、複数のグラフィックパターンが読み込まれて入る場合、現在表示しようとする
グラフィックパターンを格納したデータの開始の要素を指定するものです。
省略した場合は配列の最初(要素番号 0)から表示します。
GET@ 、PUT@命令では、配列は1次元の配列変数として下さい。

尚、Dataの最初の 4バイトは横方向(X方向)と縦(Y方向)のドット数を
整数Data(2バイト)で格納しています。
以降、各Dot点のColorデータを 1ドット当たり 3バイトで格納しています。
このデータはWindowsのRGB Dataです。0〜&HFFFFFFの数値です。
(N88BASICとは方式が違いますので了承して下さい。)
このときSize=(縦ビット数+1)*(横ビット数+1)* 3 + 4 バイトです。

<条件>は、グラフィックパターンを画面に表示するためのいろいろな条件を
指定するもので次のとおりです。

PSET

配列内のグラフィックパターンをそのまま表示します。

PRESET

グラフィックパターンを反転して表示します。 つまり,各ドットのパレット番号を,7-(そのドットのパレット番号) (4096色中・16色モードの場合は,15-(そのドットのパレット番号)) として表示します。

OR

グラフィックパターンとすでに存在する画面上のグラフィックパターンを ドット毎にOR演算(論理和)します。

AND

グラフィックパターンとすでに存在する画面上のグラフィックパターンを ドット毎にAND演算(論理積)します。

XOR

グラフィックパターンとすでに存在する画面上のグラフィックパターンを ドット毎にXOR演算(排他的論理和)します。

XOR

グラフィックパターンとすでに存在する画面上のグラフィックパターンを ドット毎にXOR演算(排他的論理和)します。


<条件>を省略した場合、XORとします。

これらの<条件>は画面モードによって演算の対象が違います。 白黒モードの場合,
ドットがあるかないかを対象とし,カラーモードの場合,
ドットごとのパレット番号を対象とします。
たとえばすでに画面にあるドットの色がパレット番号3で,
配列内のグラフィックパターンの色がパレット番号6のときに"AND"を指定
すると,パレット番号2が表示されます(0011 AND 0110 → 0010)。
<フォアグランドカラー>,<バックグランドカラー>は,
白黒モードのときにGET@で読み込んだパターンをカラーモードにおいて
表示するときのみ,有効なオプションパラメータです。
この2つのパラメータは両方とも指定するか,両方とも指定しないかの
どちらかしか許されません。
<フォアグランドカラー>は,白黒モードで読み込んだ際に白であった
ドットに対しての色指定で,<バックグランドカラー>は,同様に黒で
あったドットに対しての色指定です。
カラーモードにおいて,それぞれをパレット番号によって指定すると
任意の色に変えることができます。
[注意]現在のバージョンでは画面モードの白黒モードは使用できません。
  
PUT@ コマンドの実行後は[LP](最終参照点)は最終点 (Sx1, Sy1)となります。

サンプル 
10 CLS 3
20 XD=40:YD=20
30 BYTE=(XD+1) * YD *3 +4
40 FACT= BYTE\2+1
50 DIM G%(FACT)
60 LINE (0,0)-(STEP(XD-1,YD-1),1,B
70 CIRCLE (XD/2 , YD/2 ), YD/2,2
80 GET (0,0)-(STEP(XD-1,YD-1),G%
90 FOR X=0 TO 500 STEP 100
100 PUT (x,100), G%
110 NEXT
200 FOR X=0 TO 500 STEP 100
210 PUT (x,200), G%, PRESET
220 NEXT
900 END


この場合、
20行で横40ドット、縦20ドットとし、
30行でBYTE数を、40行で配列G%のSizeを計算しています。
70行で描いた青色の矩形と赤色の円の図形を80行で読み込み、
90〜110行で 6個PUT@文でCopyしています。
200〜220行で 6個PUT@文で反転Copyしています。


文法 2)
<漢字コード>で指定された漢字または非漢字をグラフィック画面に表示します。
使用できる文字は、JIS第1水準、第2水準および利用者定義文字です。
これらの中から任意の文字を<漢字コード>(JISコード)によって
指定することにより、画面上に日本語文字を表示できます。
<フォアグラウンドカラー>,<バックグラウンドカラー>はそれぞれを
パレット番号によって指定します。
その他の使い方および機能は、<配列変数名>(<添え字>)の代わりに
KANJI(<漢字コード>)を使用することを除き、文法 1)の場合と同様です。

注意:GET@とPUT@は<フォアグラウンドカラー>,<バックグラウンドカラー>を指定
して,白黒モードで読み込んだパターンをカラーモードで表示する用途の他は,原則として
同一画面モードで使用するようにしてください。
なお,1つのPUT@では1つの漢字しか表示することはできません。


[SCREEN] コマンドでの画面モードは
指定値3 高分解カラーモード 640×400に限ります。

パレット番号指定方法は[COLOR(1)] 、コマンドでのパレットモードに
より変わります。

パレット番号の色変更は[COLOR(2)] 、コマンドで行います。

文法 1)、2)とも、PUT@ コマンドの実行後はLP(最終参照点)は最終点(Sx, Sy)となります。

[GET@][SAMPLE18][SAMPLE19] を参照。