これ、ごちゃごちゃし過ぎて参考にはならないと思いますけど
index.datから抜くしかないような気がしますが、、
#include "hspext.as"
	screen 0, 800, 600
	chdir dirinfo (0x10022)
	dirlist2h 1
	dirlist2 dir_size, "*.dat", 3
	sdim history, dir_size
	dirlist2r history
	notesel history
	dim i
	dim x
	sdim history_file, dir_size
	sdim name, 16, noteinfo (0)
	repeat noteinfo (0)
		getstr buf, history, i
		i + strsize
		if instr (buf, 0, "MSHist01") ! -1 {
			history_file + buf + "\n"
			name(x) = strmid (buf, 20, 16)
			x++
		}
	loop
	dim index
	pos 0, 0
	objsize 300
	listbox index, 500, history_file
	sdim data
	pos 310, 0
	mesbox data, 400, 500, 5
	check = 1
	dim x, 2
	notesel history_file
	repeat
		if check ! index {
			noteget buf, index
			exist buf
			sdim file, strsize
			bload buf, file
			sdim name_id
			sdim history_data, strsize
			repeat strsize - 15
				memcpy name_id, file, 16, 0, cnt
				if name_id = name(index) {
					repeat , cnt
						if peek (file, cnt) = $40 {
							x(0) = cnt
						}
						if peek (file, cnt) = 0 {
							x(1) = cnt
							break
						}
					loop
					sdim url, x(1) - x(0)
					memcpy url, file, x(1) - x(0), 0, x(0) + 1
					history_data + url + "\n"
				}
			loop
			objprm 1, history_data
			check = index
		}
		await 100
	loop