〜 テキスト 〜
4バイトコード値の取得・設定

HSP3には変数内の4バイト分コード値を取得するlpeek命令・設定するlpoke命令が存在しますが、
HSP2では1バイトまたは2バイトの取得・設定を行う命令しかありません。
ポインタを使って4バイト分コードの取得・設定を行うll_peek4ll_poke4と言う命令が存在しますが、
若干使い勝手が違うので、wpeekwpoke命令を2度使って違う角度から4バイト分に対応させたモジュールを紹介します。
HSP2用としているのはHSP3には標準で実装されているため不要と言う意味であり、
HSP3だと使えないと言う意味ではありません。
	

lpeek 取出先, 読込変数, インデクス
取出先取得した値の格納先を指定する。
読込変数4バイトコード取出元変数を指定する。
インデクス先頭を0バイトとした4バイト分の取出開始位置を指定する。

lpoke 書込変数, インデクス, コード
書込変数コード書込対象変数を指定する。
インデクス先頭を0バイトとした4バイトコードの書込開始位置を指定する。
コード書き込む4バイトコードを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#module
#deffunc lpeek val, val, int
	mref write, 16 : mref read, 17 : mref index, 2
	wpeek tmp.0, read, index
	wpeek tmp.1, read, index + 2
	write = tmp.1 << 16 + tmp.0
	return

#deffunc lpoke val, int, int
	mref write, 24 : mref index, 1 : mref code, 2
	wpoke write, 0, code & 0xFFFF
	wpoke write, 2, code >> 16
	return
#global

	r = "1234"
	mes r
	lpeek tmp, r   // 4バイトコードを取得
	lpoke w, , tmp // 別の変数に4バイトコードを書き込む
	mes w
	stop