Scroll Animation Sysem
Ver 2
SASについて
SAS(Scroll Animation
System)とは、マシン語により大きなグラフィックを高速に表示させるというものです。
このプログラムを使えばいままでBASICでは表示不可能(速度が実用的でない)な大きなグラフィックでも高速に表示可能になります。
SAS仕様
動作確認はG820、850でしました。Z80互換CPUなら動くと思います。
制限事項
使用条件
自作プログラムへの組み込み方法
SASはマシン語プログラムなのでまずはじめにユーザーエリアを確保してください。RUN MODEかPROGRAM MODEでMON[RETURN]と入力し、USER (グラフィック格納開始アドレス+グラフィックデータサイズ)[RETURN]とすると確保完了です。(最低でもプログラム領域である165hまでは確保してください)
たとえば、500hまで確保するにはUSER
500[RETURN]でOKです。
そうしたら次に自作プログラムに下のプログラムをどこかに追加します。(見にくくてすみません)
10:CLS :DIM M$(0)*88:AD=256:FOR I=0 TO 1:READ
M$(0):FOR J=0 TO 87 STEP 2:POKE AD, VAL ("&H"+ MID$
(M$(0),J+1,2)):AD=AD+1:NEXT :NEXT :FOR I=AD TO &H165:POKE I,0:NEXT
20:DATA 3A59013263012A5F012264013A58015F3A6301573A5A01472A6401CDD0BFED4B61012A6401092264013A5B01
30:DATA 47043A63013C326301B8C20C013A5C012A5F01ED4B5D01CB47C24E01CB4FC25201C909C35401ED42225F01C9
このプログラムは自作プログラムが実行されるたびに実行するようにしてください。そうしないと暴走する恐れがあります。
GOSUBで呼び出す場合は10行の最後にRETURNをつければokです。
下は表示設定の書き込みアドレスの表です。
| 158h | 表示位置X |
| 159h | 表示位置Y |
| 15ah | 横サイズ |
| 15bh | 表示終了位置Y |
| 15ch | スクロールの方向 |
| 15dh | スクロールドット数(2バイト |
| 15fh | 読み込みアドレス(2バイト |
| 161h | 仮想横サイズ(2バイト |
上の表の詳しい解説をします。
まず、表示位置X,Yは説明は要りませんね。LOCATEと同じ指定方法です。
次に横サイズですが、これは表示開始位置から横に何ドット表示させるか、わかりやすく言うと横のグラフィックサイズです。
表示終了位置Yは表示位置Yからどこまで表示させるか、ということです。たとえば表示位置X=0、表示終了位置Y=3にした場合、画面ではY座標0〜3までの4行にわたってグラフィックが表示されます。表示位置Y
< 表示終了位置Yでないと暴走、誤動作する場合があるので気をつけてください。
スクロール方向は0でスクロール無し、1で右、2で左スクロールします。
スクロールドット数は一度にスクロールするドットの数を指定します。スクロール方向を0にすると無効になります。
読み込みアドレスはグラフィックが格納されているアドレスです。
仮想横サイズとは仮想画面を作ってその画面内で表示部分を移動してスクロール、アニメーションを行うために設定します。スクロールやアニメーションをしない場合は横サイズと同じ値を指定してください。
次にBASICでアドレスを書き込む場合の方法を説明します。たとえばアドレスに1234hを指定する場合は、
AD=(アドレス) MOD 256
A=1234:POKE 15fh,AD,((アドレス)−AD)/256(そもそもさんのSOANを参考にしました。っていうか同じです(爆))
これでアドレスが書き込まれます。アドレスは2バイト分必要なのですが、書き込むときにはデータが入れ替わります。
先ほどの例では34h,12hと書き込まれることになります。