ミニスクリプト

macバイナリ―削除を削除する方法

alloc a,600000 ;sizeより大きくとってね
bload "filename1",a,,128
bsave "filename2",a,strsize
mes "終わり" ;実際に書き換わるのはdiskの音を聞いて判断してね
stop

変数の内容を保存したい

文字変数bufの内容を保存

fname="filename.txt"
strlen a,buf ; テキストの長さを調べる
bsave fname,buf,a ; テキストファイルをセーブ

HTMLファイルを表示したい

fname="index.html"
exec fname,16 ;htmlファイルを見る

グラフィックの読み込み

buffer 3,,,0 ;バッファを定義(フルカラーで初期化)
picload "graphic.bmp" ;グラフィクを読みこみ
gsel 0 ;カレントウィンドIDを0に戻す

マウスボタン待ち

*sgwait
wait 1
getkey a,1 ;マウス左
if a!1:goto *sgwait

映画のエンドロール

bufferに表示しておいたものをgcopyで転送すれば出来ます。
表示位置を少しずつ変えれば動いて見えます。 (サンプル1
ただし、この方法だと、映画のスタッフロールのような
非常に長いものには対応できません。

サンプル1

#define YLINE 400
#define XLINE 640
screen 0,XLINE,YLINE,0
color 0,0,0:boxf
buffer 2,XLINE,YLINE,0
gsel 2
color 0,0,0:boxf
alloc buf,10000
buf="":bload "readme.txt",buf
pos 0,0:color 255,255,255:mes buf
gsel 0,2:pos 0,0
repeat YLINE
pos 0,YLINE-cnt
gcopy 2,0,0,XLINE,YLINE
wait 1
loop
stop

こちらは表示しつつスクロールしています。
画面の一番下のラインにメッセージを表示して、
全体を少しずつ上に移動しています。(サンプル2
表示するときに、字が出るところが見えてヤだなという場合は
別のbufferでスクロールを実行して、全体を見えるスクリーンに
転送するのがいいでしょう。
その場合redraw命令などを使うとより高速な処理が出来ます。

サンプル2

screen 0,640,400,0
color 0,0,0:boxf
color 255,255,255
alloc buf,10000
buf="":bload "readme.txt",buf
notesel buf
notemax bmax
repeat bmax
noteget tempword,cnt
repeat 20
pos 0,0:gcopy 0,0,1,640,400
await 10
loop
pos 0,380:mes tempword
loop
stop



HSP資料室へ戻る