/HD61

HD61700 Cross Assembler (unofficial mirror of https://hd61700.yukimizake.net/)

Primary LanguageCOtherNOASSERTION

-------------------------------------------------------------------------
名称      HD61700 CROSS ASSEMBLER for Win32 (Rev 0.43)
動作環境  Win95/98/98SE/NT4/2000/XP
          PB-1000/C/AI-1000+周辺機器(FA-7 または MD-100A)
          VX-3/VX-4/FX-870P+周辺機器(FA-6(S)、FA-8、RS232Cレベルコンバータ)
免責事項  本プログラムはフリーソフトです。好きなように使ってください。
          配布も自由です。ただし本プログラムで作成されたコードが正常に実行
          できるかは保証できません。(正しいコードを出力するように努力は
          していますが)利用は各自の責任で行ってください。
制作者    あお(QZE12045@nifty.com)
URL       http://www.geocities.jp/hd61700lab/
-------------------------------------------------------------------------
■ 説明
  CASIO製ポケコン(PB-1000/C、AI-1000、FX-870P、VX-3/4等)で利用されている
  MPU(HD61700)のWin32環境用クロスアセンブラです。
  Windowsベースで動作するため、アセンブル作業にPB-1000が必要ありません。
  パソコンとポケコン間でデータ通信できる環境をターゲットにしています。

■ 機能
 PB-1000内蔵のアセンブラとほぼ同一(上位互換)ですが、以下の違いがあります。
  1.ラベル長は16文字まで。メモリの許す限り登録可能です。
    コードエリアは64KBまで確保できます。
  2.アドレスラベル(JR,JP,CAL命令用)だけではなく転送命令で数値ラベルも利用可能。
  3.CASIO未公開分を含む、HD61700のほぼ全ての命令をサポート。
    ニモニックは「AI-アセンブラ形式」と「KC形式」のどちらも利用できます。(混在も可)
    Rev 0.41より、新たにEU形式(Europe表記)のニモニックにも対応しました。
    #EU(または/eu)指定により、AI/KC形式からEU(Europe)形式に切り替え可能です。
  4.セカンドオペレーション拡張($0,$30,$31,LD&JR)等がデフォルトで指定可。
    (/n オプション指定にてOFF)
  5.出力形式は、BASICのDATA文形式とPBF形式(注1)から選択できます。
   (PBF形式出力時に /p オプションを指定)
  6.整形されたリストファイル(.lst)を出力します。
  7.PB-1000でサポートされていない疑似命令(DW、LEVEL、#if、#else、#endif,#include等)
    をサポートしています。

(注1)PBF形式とは、「バイナリファイル←→テキスト変換プログラム」にて利用している
BINARY→ASCII変換形式のことです。(詳しくは 「CASIO PB-1000 Forever!」 参照方)

//////////////////////////
///// 重要なお知らせ /////
//////////////////////////
Rev 0.34より、従来 'JP ($C5)'と表記されていた命令語のニモニックが変更となっています。

 今まで動作不明だったオペコードDFHについて、Piotr Piatek氏より解析報告があり、
 メインレジスタによるメモリ指定データに対するジャンプ( JP ($C5) )に相当する
 命令が有ることが判り、急遽対応しました。
 従来、JP ($C5) と表記されていたニモニックに関しては、色々考えた末、その命令動作から、
 JP $C5 と表記する方が妥当だと思われるため、そのように変更いたしました。

従来通りのニモニック表記によるアセンブルが必要な場合、旧版(Rev 0.33)を利用下さるよう
お願いします。(混乱させてしまい、大変申し訳ありません)

 Rev 0.33 は以下より入手できます。
  http://www.geocities.jp/hd61700lab/HD61R033.zip (Win32)
  http://www.geocities.jp/hd61700lab/HD61D033.zip (Dos)

■ ファイル内容
  README.TXT    (このファイルです)
  HD61.EXE     (アセンブラ実行ファイル)
  HD61700.S    (本アセンブラにて利用可能な全命令サンプル)
  LCD.s         (LCD制御サンプルソース。PB-1000/C、AI-1000、FX870P、VX-4用)
  PbfToBin.bas (PBF形式用 ASCII→BINARY変換用ファイル。PB-1000/C用 (c)Jun Amano)
  Trans.b      (BAS形式用 ASCII→BINARY変換用ヘッダファイル。PB-1000/C用)
  TransVX.b    (PBF形式用 ASCII→BINARY変換用ファイル。FX-870P/VX-4用)

■ 使い方
  Windowsのコマンドプロンプトで以下のコマンドを実行します。
  HD61 [ソースファイル名] ( オプション[/n] [/p] [/q] [/w] [/tab] [/r] [/o filename] [/eu] )

実行すると、指定ファイルをアセンブルします。
例)
>hd61 hd61700.s [Enter]
HD61700 ASSEMBLER Rev 0.43
Input : hd61700.s
 PASS 1 END 
 PASS 2 END
ASSEMBLY COMPLETE, NO ERRORS FOUND
>
正常な場合、[ASSEMBLY COMPLETE, NO ERRORS FOUND]を表示して終了します。
この時、.basファイルと.lstファイルが生成されます。
アセンブル中に何らかのエラーが発生した場合は、エラー行を表示して終了します。

Rev.0.09以降、ソースファイル名が8文字以上だった場合、ワーニングを表示します。
(アセンブルは正常に動作します)これは、PB-1000/C、AI-1000等の8.3形式のファイル名を
サポートした機種で利用することを考慮し、BAS(またはPBF)に出力されるファイル名が
ロングファイル名になる事を警告します。(が、ファイル名を自動的に短く直したりする
機能は実装していません。スミマセン。)

■ オプション(省略可)
 アセンブル時に以下のオプションが指定できます。
  /p ---  PBF形式で出力する。(デフォルトはBASIC DATA文形式で出力)
  /q ---  QL(クイックローダ)形式で出力する。
  /n ---  セカンドオペレーション指定による最適化をOFFにする(デフォルトはON)
  /w ---  16bitアドレッシング対応のアセンブルを行う。(最適化は LEVEL 0 固定)
          内蔵ROM用の16Bitアドレスに対応したアセンブルコードを出力します。
  /tab -  リストファイルをTAB=8で出力する。
  /r ---  リロケート情報ファイル(*.roc)を出力する。
          FBF/VX-MENUにて利用するリロケート形式ファイル作成用の情報ファイルを
          出力します。RR形式や*.o/*.o2形式ファイルを作成する際に利用下さい。
  /o [filename] - PBF/BAS形式ファイルヘッダに出力するファイル名を指定する。
                  デフォルトは未指定(自動生成)。
  (/set) [シンボルラベル名]=[値/ラベル名] --- 任意のシンボルラベルを定義する。
  /eu --  EU形式(Europe形式)のニモニックをアセンブルする様設定します。
          ソース内で疑似命令#DPを指定しても同等動作となります。

/pオプションについては、■ 作成プログラムの実行 2.PBF形式 を参照下さい。
以下/nオプションについて説明します。

このオプションを指定すると、$0,$30,$31を対象とした転送命令のコード最適化を禁止し、
PB-1000内蔵アセンブラと互換コードを出力します。
例)
/n オプション無し(デフォルト)
02 42       LD $2,$0    ;セカンドオペレーション指定ON時 =2バイト命令 を出力
/n オプション付き
02 62 00    LD $2,$0    ;デフォルト時(指定OFF)=3バイト命令を出力

PB-1000用のデータエリアのアドレスを決め打ちしている様なソースをアセンブルする場合や、
PSR命令でSIRを変更するプログラムをアセンブルする際にご利用下さい。
尚、最適化される命令と出力コードの詳細は、添付のHD61700.sファイルをアセンブルして
出力されたlstファイルを参照下さい。

/set オプションについて
Rev 0.23より/setオプションにて起動時に任意のシンボルラベルを定義できるようにしました。

これは、#if~#else~#endif疑似命令を利用して各機種用にアセンブルコードを切り替えている
場合や、メモリ容量別にアセンブル開始アドレスを切り替えたい場合に、ソース修正することなく、
任意のシンボルラベル値を指定することを可能とします。
バッチファイル等を利用して自動で各機種用の出力結果を得たい場合等に利用下さい。
尚、同じラベル名をソース内でEQU宣言している場合、/setにて定義した値が優先されます。
(ソース内での定義は無視される)

書式例)機種名と開始アドレスをコマンドラインから指定する。
>HD61 SAMPLE.S /SET MODEL=PB1000 /SET BASE=0x7000

追記:(2003-07-25)
Rev 0.28からは/setオプションを指定しなくても、[シンボルラベル名]=[値/ラベル名]としてやる事で、
任意のシンボルを定義できるようにしました。(従来通り/set指定も可能です)
以下の書式例のように記述すればOKです。動作仕様に関しては/set指定時と全く同一です。

書式例)機種名と開始アドレスをコマンドラインから指定する。
>HD61 SAMPLE.S MODEL=PB1000 BASE=0x7000

■ 作成プログラムの実行
以下の手順で、作成したプログラムをポケコン上で実行可能な形式にすることができます。
BAS形式とPBF形式で実行方法が違うのでご注意下さい。
(PBF形式はRS232C経由で直接バイナリに落とすことが可能なので便利です。)

1.BAS形式
 (1)HD61でアセンブル。basを作成。
 (2)出力されたbasファイルに添付のTrans.bの内容をヘッダとして張り付ける。
 (3)ポケコンへ転送し、マシン語エリアを確保する。(CLEAR命令を実行)
 (4)転送したbasファイルを実行。
 (5)実行完了すると自動的にEXE(またはBIN)ファイルが生成される。
※添付のTrans.bはPB-1000/C、AI-1000用なので他のマシン(FX-870P、VX-3/4等)の場合は、
  Trans.bを各機種用に修正する(FX-870P、VX-3/4の場合は、80行をコメントにすれば
  大丈夫なはず)か、後述のPBF形式を利用してください。

2.PBF形式
(FX-870P/VX-3/4の場合)
 (1)HD61にて /pオプション付きでアセンブル。pbfを作成。
 (2)ポケコン上でマシン語実行領域を確保。
 (3)TransVX.basをポケコン上で実行。(実行するとRS232C受信状態で待機する)
 (4)上述のPBFファイルをRS232C経由でポケコンへ転送する。
 (5)自動的にバイナリ変換され、終了後、Completed!を表示。
 (6)MODE110(実行アドレス)にて起動
※添付のTransVX.bの通信パラメータはF.COMの設定値が使われます。変更する場合は、
  10行"COM0:"部を修正して使ってください。尚、HD61添付版は移植性を考え、BASIC記述の物を
  同梱していますが、マシン語にて高速化されたバージョンが[CASIO PB-1000 Forever!]にて
  公開されています。是非ご利用下さい。(URL: http://www.lsigame.com/)

(PB-1000/C,AI-1000の場合)
 (1)HD61にて /pオプション付きでアセンブル。pbfを作成。
 (2)ポケコン上でマシン語実行領域を確保。
 (3)JUN AMANO氏のPbfTOBin.basを実行しファイル名を"COM0:7"とする。(9600bps時)
 (4)上述のPBFファイルをRS232C経由でポケコンへ転送する。
 (5)実行完了すると自動的にEXE(またはBIN)ファイルが生成される。

3.QL形式
クイックローダー形式です。/q オプションでアセンブルした後、各機種ごとのローダー
ファイル(BASIC)とマージして利用します。
詳細は、DA61に付属するドキュメントにある説明を見て下さい。

■ アセンブラの文法について
HD61がサポートする疑似命令や、ニモニックの記述書式等は、添付のHD61700.s(及びlst)を
参照下さい。またHD61700アセンブリ言語仕様に関してはオンラインマニュアルを参照下さい。
※オンラインマニュアルは現在、HD61と同じURLに公開されています。
( URL http://www.geocities.jp/hd61700lab/ )

■ エラーメッセージ
アセンブル中に表示するエラーメッセージは以下の通りです。
(適当な英語なのはご容赦を・・)
 ソースファイルがOPENできない        "Invalid Source File Name."
 1行の文字数がオーバーした          "Line Length is Too Long"
 オペランド文字数オーバーした        "Oprand Length is Too Long"
 ラベル文字数がオーバーした          "LABEL Length is Too Long"
 ORG命令定義がない                   "ORG Not Entry"
 オペランド記述なし                  "Operand Not Entry"
 EQUにラベルエントリなし             "EQU without Label"
 オペランド記述ミス                  "Illegal Operand"
 START文が2つ以上ある               "START Already Defined"
 カンマ記述がおかしい                "Illegal [,]"
 ダブルコーテーション/括弧 異常              "Illegal ['']or[(]or[)]"
 ラベル記述が2回以上ある            "LABEL Already Defined"
 ラベルに利用できない文字            "LABEL Type Mismatch"
 ラベル登録なし                      "Undefined LABEL"
 該当命令なし/記述方法のミス         "Operation Type Mismatch"
 オペランド値が範囲外                "Operand Range Over"
 相対ジャンプが範囲外                "Jump Address Over"
 出力バッファオーバー                "Output Buffer Over Flow"
 アセンブルアドレス制限オーバー      "Assemble Address Over Flow"
 実行アドレスが先頭ORG宣言より小さい "Execute Address Illegal"	
 演算異常( 0 除算等 )が発生          "Could not calculate"
 #if~#else~#endifのネストが異常    "Illegal [#if] - [#endif]"
 includeファイルがOPENできない       "Invalid Include File Name"
 includeネスト異常                   "Could Not Nest Include"
 メインレジスタ番号異常              "Illegal Register Number"

■ ソースコードについて
HD61は、Boland C++ Builder(free版)にてコンパイル/作成しています。
そろそろ大きなバグもなくなってきたため、ソースコードを公開しました。
正直、かなり幼稚なコードなのでアセンブラ処理の参考と言うよりは、
HD61700命令コード資料として使ってください。
( URL http://www.geocities.jp/hd61700lab/ )
日本では著作権が放棄できないらしいのですが、特に制限をかけるつもりはなく、
好きに使ってくださって結構です。
(その代わり何か損害がおきても責任はとれませんが)
gcc(Linux)環境でも普通にコンパイル/実行できることを確認しています。
が、詳細な動作確認をしたわけではないので、他の環境で動作させた場合、
ご一報を頂けると幸いです。(QZE12045@nifty.com)

■ 参考文献
本プログラムの作成には以下の文献およびURLを参考にしています。
1. 「PB-1000 コマンドリファレンス」 CASIO計算機株式会社
2. 「カシオPB-1000テクニカルハンドブック」 株式会社モダン
3.「PB-1000の解析 HD61700の未定義命令I」 舞夢氏  ポケコンジャーナル1989/12
4.「PB-1000の解析 HD61700の未定義命令II」舞夢氏  ポケコンジャーナル1990/1
5. 「KC-Disasembler 他」 こたちゃん氏   ポケコンジャーナル1990/8
6. 「バイナリファイル←→テキスト変換プログラム」 JUN AMANO 氏
   (「CASIO PB-1000 Forever!」 URL: http://www.lsigame.com/)
7. 「mizuno HomePage」ポケコンのお部屋 WWW board-2 のホーマー氏 すい氏の発言
8.「AI-アセンブラ」 P,H,M氏 ポケコンジャーナル 1992/12
9.「FX-870Pアセンブラ」陶治彩絵 氏 ポケコンジャーナル 1993/4
10.「X-Assembler Ver.6」N.Hayashi(はっくん)氏 ポケコンジャーナル 1995/2
11.「未公開命令の解析(PSR/GSR/ST IM8,$/LDC)) 」Miyura 氏
12.「未公開命令の解析(DFH JR($)/LDL) 」Piotr Piatek 氏
   (「Vintage programmable calculators」 http://www.pisi.com.pl/piotr433/ )
13.「IB(旧TS)レジスタの解析」Miyura氏 / Piotr Piatek氏 2007/2
14.「DL-Pascal」Hans Larsson氏/(c)DATA-LARSSON 1988-1990

■ おわりに
正直言って開発/発表が10年遅かったプログラムだと思います。
昨年暮れに偶然JUN AMANO 氏のHP「CASIO PB-1000 Forever!」を見つけ、本棚に転がっていた
PB-1000をパソコンにつなげて[PB-1000 Data Communicator32]にて自作の懐かしい
(=恥ずかしい)プログラムを吸い出したのが始まりでした。

吸い出したソースを読んでいるウチに、無性にPB-1000でプログラムがしたくなってしまい、
内蔵アセンブラで遊んでいたのですが、PCでソース作成 →プログラム転送→ PB-1000で
アセンブル/実行と言う手順だと、ミスがあるたびに ソース修正→プログラム転送→
再アセンブルの繰り返しとなるため、結局、クロス環境用のアセンブラを自作してしまい
ました。(プリンタがないのでリスト出力ができなかったのも理由の1つですが)

作っているウチに未定義命令サポートに燃えてしまい、PJその他を掘り出したりして
大騒ぎでしたが、別の意味で非常に懐かしかったです。

もしこのプログラムで皆さんの家で眠っているポケコンが目覚めることがあったら幸いです。
2003/1/20@あお

追記 2008/5/2
Piotr Piatek氏より、DL-Pascalに関する情報を提供いただいたため、EU形式ニモニック
としてHD61にてサポートしました。
Hans Larsson氏の開発したPB-2000(海外版AI-1000)用DL-Pascal Compilerのサポートする
未公開命令に対するニモニック形式は、CASIOオリジナルの表記に近いと言われており、
非常に興味深いものです。

EU形式ニモニックの詳細については、オンラインマニュアルを参照下さい。

■ 履歴
Rev 0.01  2003.01.06  最初のバージョン。取りあえず内蔵アセンブラ互換で動作
Rev 0.02  2003.01.07  メモリ利用効率を改善。アセンブル可能な行数を
                      最大4096行から無制限にした。
Rev 0.03  2003.01.09  未定義オペランド指定を(一応)可能とした。
Rev 0.04  2003.01.16  未定義命令をさらに追加
                      出力形式をpbf/basから選択できる様にした
Rev 0.05  2003.01.19  正式公開版(多分)
                      ラベル指定改良(メモリインデックス内での利用可)
                      細かいバグの修正。
Rev 0.05a 2003.01.21  エラーメッセージ修正。
Rev 0.06  2003.01.22  40KB制限を外した。ORG疑似命令チェック順位を修正。
Rev 0.07  2003.02.03  「AI-アセンブラ」 P,H,M氏 (PJ 1992/12) 及び、
                      「FX-870P用アセンブラ」 陶治彩絵 氏 (PJ 1993/04)に(なるべく)準拠。
                      (変更点多数のため、詳細は省略)
Rev 0.08  2003.02.09  「AI-アセンブラ」のサポートする未公開命令を全て網羅。
                      演算機能を強化し、優先順位に従った算式の記述を可能とした。
                      ラベル指定可能なオペランド種別の大幅な拡張。
                      PBF形式用TransVX.bを添付開始。
Rev 0.09  2003.02.16  PB-1000/C、AI-1000等の8.3形式のファイル名をサポートした機種で
                      利用することを考慮し、ソースファイル名が8文字以上だった場合に
                      ワーニングを表示するようにした。
                      #if~#else~#endif疑似命令をサポート。式の評価用に[!]演算子を追加。
                      (具体的な記述方法等についてはHD61700.sを参照下さい)
Rev 0.10  2003.02.21  #INCLUDE疑似命令をサポート。任意のインクルードファイルを利用可能
                      とした。(INCLUDEのネストは256レベルまで)
                      リスト制御用に#NOLIST,#LIST,#EJECT疑似命令をサポート。
                      2進数(&B)指定を追加。EQU宣言にて文字列を扱えるようにした。
                      命令コード(0xDA,0xDB)に対してJump拡張を許可とした。
                      (DIDM,DIUM,BYDM,BYUM,INVM,CMPMが対象)
                      エラーメッセージを追加/修正。リスト出力を微調整。
Rev 0.11  2003.02.23  EQU,LDWのオペランドが文字列指定の場合のメモリ格納順をDB命令と同様、
                      左から、下位、上位の順で格納するように変更した。
Rev 0.12  2003.02.28  ラベル個数制限を外しメモリの許す限り無制限に利用可能とした。
                      (ラベル長は最大16バイトまでに拡張。)
                      出力メッセージを修正。
Rev 0.13  2003.03.04  命令語追加(POR S0~S2,$C5)。ただしPOR命令の動作仕様が判りません。
                      もし判る方がいましたら、連絡下さい。
Rev 0.14  2003.03.05  予約語制限の緩和。内部レジスタ名称(PE、PD、UA、IA、IE、TM、KY、US、SS、IX、
                      IY、IZ、S0、S1、S2)をラベルとして利用可能とした。
                      フラグレジスタ名(Z,C,NZ,NC,LZ,LNZ,NLZ)も、条件付きで(第1オペランド
                      以外でなら)ラベルとして利用可能。
Rev 0.15  2003.03.08  命令語追加(0xCA,0xCB)。リスト出力およびBAS出力を微調整。
                      文字列の扱いを拡張し、文字演算も可能とした。(DB以外で可能)
                      KC形式のニモニックにフル対応。(両形式の混在も可能です)
Rev 0.16  2003.03.14  「X-Assembler Ver.6」のサポートする未公開命令(BUPS/BDNS/PPO/STL系)に
                      対応。関係(比較)演算子を扱えるようにした。演算子表現の追加。
Rev 0.17  2003.03.18  命令追加(BYD、BYU)。STL系命令修正。
                      LCD制御サンプルソース(LCD.s)添付開始。
Rev 0.18  2003.04.01  DW/DB処理の細かいバグを修正。
Rev 0.19  2003.04.06  JR +-IM7形式をサポート。
Rev 0.20  2003.04.22  ソースファイルに拡張子(lst/bas/pbf)を指定した場合の問題を修正。
                      エラーメッセージの追加/修正および、エラー処理順位の見直し。
Rev 0.21  2003.04.26  TS(未公開:タイマ制御系レジスタ?)を追加(PST/GST命令にて有効)
                      ただし動作仕様が判りません。情報をお持ちの方、連絡を下さい。
Rev 0.22  2003.04.26  オペコード0xD0~0xDF系のJump拡張を禁止。
Rev 0.23  2003.05.16  シンボル定義用に /SET オプションを追加。
Rev 0.24  2003.05.25  出力コードの無いファイルをアセンブルすると不正な処理で
                      終了していたのを修正。
Rev 0.25  2003.05.30  オペランドに文字列を指定した場合の制限を解除。
Rev 0.26  2003.06.27  文字列のシングルコーテーションによる指定をサポート。
                      文字列をシングルコーテーション[']でも括れるようにしました。
                      主にダブルコーテーション文字(&H22)を文字列として扱う時に利用下さい。
                      例)LD $0,'"'    ; $0 に&H22 を代入
                      シングルコーテーション文字(&H27)を文字列とする場合は、従来通り、
                      ダブルコーテーションで括って下さい。
                      例)LD $0,"'"    ; $0 に&H27 を代入
Rev 0.27  2003.06.29  #include文でフルパス指定を可とした。
Rev 0.28  2003.07.25  相対ジャンプ範囲チェック処理を修正。
                      /setオプション指定を省略できるようにした。(従来通り/set指定も可)
                      /tabオプションを追加。リストをタブ(TAB=8)出力できるモードを実装。
Rev 0.29  2003.09.01  PBF出力時にゴミが残る場合があるのを修正。
Rev 0.30  2003.09.10  実行アドレスが0でもSTART宣言がされていれば、bas/pbfに対する拡張子を
                      EXEで出力するようにした。(従来実行アドレス0の場合、拡張子BINとなった)
Rev 0.31  2003.09.14  括弧をコーテーションで括ると何故かエラーとなっていたのを修正。
Rev 0.32  2004.01.16  特定の命令でJRタグが利用できなかったのを修正。
Rev 0.33  2004.12.24  シンボルラベル登録(EQU)処理を改良。
                      ・1パス目に値が確定していないラベルでも利用可能とした。
                      ・シンボル登録時のエラーメッセージを修正。
                      オペランド演算処理を改良。正負表現を使えるようにした。
                      /qオプション追加。クイックローダ形式の出力をサポート。
Rev 0.34  2006.09.01  (1)#incbin()擬似命令を追加。
                       モノクロビットマップ(bmp)形式のファイル読み込みを可能とした。
                      (2)未公開命令(PSR*/GSR*/LDC*/SNL*/ST IM8,$/JP($))を追加。
                      (3)上記に伴い、従来のレジスタ指定ジャンプ'JP ($)'表記を'JP $'へ変更。
                       新たにレジスタによるメモリ指定($C5)によるジャンプ命令(DFH)が発見
                       されたため、従来の命令は、その動作から考えて'JP $C5'と表記すべき
                       との結論に達しました。
                       混乱が予想されるため、しばらく旧版(Ver 0.33)も公開を続行します。
                      (4)SIR:特定インデックスレジスタ'SX/SY/SZ'による、メインレジスタの
                       インダイレクト指定表記に対応。各命令で以下の記述が可能です。
                       (実際の記述方法は、HD61700.Sを参照してください)
                        $SX または $(SX)  --- 初期値は、$31
                        $SY または $(SY)  --- 初期値は、$30
                        $SZ または $(SZ)  --- 初期値は、$0
Rev 0.35  2006.09.10  SNL系命令のニモニックをLDL(LoaD data from Lcd)に修正。
          2006.09.18  Piotr Piatek氏のLCDCに関する解析結果をLCD.Sへ反映した。
Rev 0.36  2006.09.25  (1)疑似命令"#KC"と"#AI"を追加。(2)エラーメッセージを修正。
                      (3)ワーニングの追加。
                       LDM/STM命令の第3オペランドを省略した場合、KC形式に解釈された事を
                       示すワーニングを表示します。
                      表示例)
                       "WARNING: 'LDM' was interpreted to 'LDD' of the KC form."
                       これは誤って第3オペランドを付け忘れた場合、なんのエラーも出さずに
                       別の命令に解釈されることを警告する為の措置です。
                       このワーニング表示は疑似命令'#KC'を指定することでOFFにできます。
                       (デフォルトは、'#AI'指定)
Rev 0.37  2006.10.02  (1)/wオプションを追加。
                       16bitアドレッシング対応コードを出力できるようにした。
                      (2)GRE KY,$C5 の2ndオペレーションコードを変更(2xH→6xH)
                       今までPB-1000内蔵アセンブラの出力コード(2xH)に合わせていたのですが、
                       コマンドリファレンス及び内蔵ROMコードの解析により、6xHの方がより
                       標準的なコードである可能性が高くなったため、そのように変更しました。
                       (本修正は、GRE KY,$C5 の動作には影響はありません)
Rev 0.38  2006.11.06  細かいバグを修正。(特定のラベル演算で発生)
Rev 0.39  2006.11.08  STLW/LDLW/PPOWのジャンプ拡張コードが正しくアセンブル出来ない件を修正。
                      剰余 %(MOD) の優先順位を修正。(C言語準拠にした)
                      Miyura氏の解析をLCD.Sに反映。
Rev 0.40  2007.03.16  レジスタ名称を修正(TS→IB)
                      /r オプションを追加。リロケート情報ファイルを出力出来るようにした。
                      /o オプションを追加。BAS/PBF形式のファイル名を指定可能とした。
Rev 0.41  2008.05.02  EU形式(Europe)形式のニモニックをサポート。(※a)
                      これに伴い、起動オプション/eu、疑似命令#EU を追加。

(※a)AI形式とEU(Europe)形式との違いは、下記の表の通りとなります。
    +--------------------------+--------------------------+
    | AI形式(default)          | EU(Europe)形式           |
    +--------------------------+--------------------------+
    | Specific Index Registers | Short Registers          |
    |  SX , $SX                |  #0                      |
    |  SY , $SY                |  #1                      |
    |  SZ , $SZ                |  #2                      |
    +--------------------------+--------------------------+
    | 未公開レジスタ名称       |                          |
    |  IB                      |  CS                      |
    +--------------------------+--------------------------+
    | 未公開ニモニック名称     |                          |
    |  PSR                     |  PRA (Put Ram Address)   |
    |  GSR                     |  GRA (Get Ram Address)   |
    |  STL                     |  OCB (Output Casio Bus)  |
    |  LDL                     |  ICB (Input Casio Bus)   |
    |  PPO                     |  PCB (Put Casio Bus)     |
    |  BUPS IM8                |  BUP IM8                 |
    |  BDNS IM8                |  BDN IM8                 |
    |  JP $C5                  |  JPW $C5                 |
    |  JP ($C5)                |  JPW ($C5)               |
    +--------------------------+--------------------------+
    | マルチバイト命令表記     |                          |
    |  *M(multi byte)          |  *L(long word?)          |
    |  2 - 8                   |  L2 - L8                 |
    +--------------------------+--------------------------+
    | Jump拡張時のタグ(省略可能)                          |
    |  JR                        J.                       |
    +--------------------------+--------------------------+

Rev 0.41  2009.02.12  リコンパイル実施。UPX圧縮を解除(ウィルスバスターが誤動作するため)
                      バージョン番号は変更無し。
Rev 0.42  2011.01.03  /rオプションの改良。roc出力条件を修正した。
                      アセンブル速度の若干の高速化。
Rev 0.43  2011.01.07  /rオプションの改良。RR形式Ver.2対応。