Index: asp3_gr_sakura/trunk/cfg/SRecord.rb
===================================================================
--- asp3_gr_sakura/trunk/cfg/SRecord.rb	(revision 317)
+++ asp3_gr_sakura/trunk/cfg/SRecord.rb	(revision 318)
@@ -7,63 +7,47 @@
 #  Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
 #
-#  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#  å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#      æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#      ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#      è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#      ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#      ã¨ï¼
-#    (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#        ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#    (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#        å ±åãããã¨ï¼
-#  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#      å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#      ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#      ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#      å
-è²¬ãããã¨ï¼
+#  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#      免責すること．
 #
-#  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#  ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#  ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#  ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#  ã®è²¬ä»»ãè² ããªãï¼
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#  の責任を負わない．
 #
-#  $Id: SRecord.rb 107 2016-03-14 03:29:58Z ertl-hiro $
+#  $Id$
 #
 
 #
-#		Sã¬ã³ã¼ããã¡ã¤ã«å¦çã¯ã©ã¹
+#		Sレコードファイル処理クラス
 #
 
 #
-# Sã¬ã³ã¼ããã¡ã¤ã«ãå¤æ°ã«èª­ã¿è¾¼ã¿ï¼è¦æ±ãããçªå°ã®ãã¼ã¿ãè¿ãï¼
+# Sレコードファイルを変数に読み込み，要求された番地のデータを返す．
 #
-# @sRecDataã¯ï¼å
-é ­çªå°ãã­ã¼ã¨ãï¼ããããã®ãã¼ã¿ï¼ãã­ãµãã³ãå½¢å¼ï¼
-# ãå¤ã¨ãã­ãã¯ãæ ¼ç´ãããããã·ã¥ã§ããï¼é£ç¶ãããã­ãã¯ã¯ï¼1ã¤ã®ã
-# ã­ãã¯ã«ã¾ã¨ãã¦æ ¼ç´ãããã®ã¨ããï¼ããããªãã¨ï¼ãã¼ã¿ã®ååºãããµã¼
-# ããé¢åã«ãªãï¼ï¼
+# @sRecDataは，先頭番地をキーとし，そこからのデータ（ヘキサダンプ形式）
+# を値とブロックが格納されたハッシュである．連続するブロックは，1つのブ
+# ロックにまとめて格納するものとする（そうしないと，データの取出しやサー
+# チが面倒になる）．
 #
 class SRecord
@@ -74,32 +58,32 @@
       prevData = ""
       file.each do |line|
-        # ãã¼ã¿ã¬ã³ã¼ãã«ããåå²
+        # データレコードにより分岐
         case line.slice(0, 2)
         when "S1"
-          # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[2byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼
+          # データ長（アドレス分[2byte]+チェックサム分1byteを減算）
           length = line.slice(2, 2).hex - 2 - 1
 
-          # ã¢ãã¬ã¹ï¼4æå­=2byteï¼
+          # アドレス（4文字=2byte）
           address = line.slice(4, 4).hex
 
-          # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æå­åã§åã£ã¦ããï¼
+          # データ（この時点では文字列で取っておく）
           data = line.slice(8, length * 2)
         when "S2"
-          # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[3byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼
+          # データ長（アドレス分[3byte]+チェックサム分1byteを減算）
           length = line.slice(2, 2).hex - 3 - 1
 
-          # ã¢ãã¬ã¹ï¼6æå­=3byteï¼
+          # アドレス（6文字=3byte）
           address = line.slice(4, 6).hex
 
-          # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æå­åã§åã£ã¦ããï¼
+          # データ（この時点では文字列で取っておく）
           data = line.slice(10, length * 2)
         when "S3"
-          # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[4byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼
+          # データ長（アドレス分[4byte]+チェックサム分1byteを減算）
           length = line.slice(2, 2).hex - 4 - 1
 
-          # ã¢ãã¬ã¹ï¼8æå­=4byteï¼
+          # アドレス（8文字=4byte）
           address = line.slice(4, 8).hex
 
-          # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æå­åã§åã£ã¦ããï¼
+          # データ（この時点では文字列で取っておく）
           data = line.slice(12, length * 2)
         else
@@ -108,5 +92,5 @@
 
         if !address.nil?
-          # ãã¼ã¿ãæ ¼ç´ãã
+          # データを格納する
           if address == prevAddress + prevData.size / 2
             prevData << data
@@ -122,5 +106,5 @@
   end
 
-  # ãã¼ã¿åå¾
+  # データ取得
   def get_data(address, size)
     endAddress = address + size
@@ -134,5 +118,5 @@
   end
 
-  # ãã¼ã¿æ¸è¾¼ã¿
+  # データ書込み
   def set_data(address, data)
     endAddress = address + data.size / 2
@@ -141,15 +125,13 @@
 
       if nEndBlock < address || endAddress < block
-        # éãªãããªã
+        # 重なりがない
       elsif address < block
-        # æ°è¦ãã¼ã¿ã®æ¹ãå
-é ­çªå°ãå°ãã
-        # ããã§ã¯ endAddress >= block ãæç«ãã¦ãã
+        # 新規データの方が先頭番地が小さい
+        # ここでは endAddress >= block が成立している
         offset = (endAddress - block) * 2
         data << blockData[offset..-1]
         @sRecData.delete(block)
       else
-        # ç»é²æ¸ã¿ãã¼ã¿ã®æ¹ãå
-é ­çªå°ãå°ãããåã
+        # 登録済みデータの方が先頭番地が小さいか同じ
         offset = (address - block) * 2
         address = block
@@ -162,5 +144,5 @@
   end
 
-  # å¤ã¨ãã¦ã®ãã¼ã¿åå¾
+  # 値としてのデータ取得
   def get_value(address, size, signed)
     targetData = get_data(address, size)
@@ -169,7 +151,7 @@
     else
       if $endianLittle
-        # ãªãã«ã¨ã³ãã£ã¢ã³ã®å ´åï¼ãã¤ããªã¼ãã¼ãéã«ãã
+        # リトルエンディアンの場合，バイトオーダーを逆にする
         reverseData = ""
-        # å¾ããã2æå­ãã¤æãåºãï¼ä¸¦ã³æ¿ãã
+        # 後ろから2文字ずつ抜き出し，並び替える
         while targetData.size > 0
           reverseData << targetData[-2, 2]
@@ -181,5 +163,5 @@
       end
 
-      # è² ã®æ°ã®å¦ç
+      # 負の数の処理
       if signed && (returnData & (1 << (size * 8 - 1))) != 0
         returnData -= (1 << (size * 8))
