読者です 読者をやめる 読者になる 読者になる

プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

GRPファイルからPRGソースをインポートするプログラム

プチコン

GRPファイル化されたプチコンのプログラムソースを、ファンクションキー経由でインポートするプログラムです。

テキストエディタ付属のプログラムとして、独立しても動くように作っていたものです。
と、先ほどプチコンまとめwikiを見てみたら、「プログラムのマージ」という投稿プログラムがすでに投稿されていました。
しかも、僕が作った方はファンクションキー4個でソース入力するのに対し、投稿プログラムの方はファンクションキー5個をフルに使っているので、そっちの方が入力効率が高いです。
ですが、すでに作ってしまったのもあるし、こちらはテキストエディタと連携する独自の実装をしていることもあるので、公開しておきます。

さて、GRPファイルの形式は、プチコンまとめWikiで公開されているQRエクスポート出力のGRPファイルと互換のある形式です。
この形式に名称がついていないので、ここでは暫定的に「GRP-P形式」と呼んでおきます。
GRPファイルで表現されたPRGですが、GRP-PRGとすると長いので。)

ソースコードは例によって GitHubのGistで公開しています。以下からどうぞ
IMPORT FROM GRP for Petitcom · GitHub

このプログラムの利用方法は、以下のようなものを想定しています。
(a)ロングテキストエディタ LTEDIT から、PRGファイルにインポートしたい時
(b)16進データエディタ MON から、DATA文またはPRGソースコードの形式で、PRGファイルにインポートしたい時
(c)GRP-P形式化した共用ライブラリを、任意のGRPファイルにマージしたい時
などなど...。

【使い方】
これ以降、上記のインポートを実行するプログラムを「インポーター」、
GRP-P形式からインポートされる先を「ターゲットプログラム」と呼びます。

1.ターゲットプログラムをNEWして、空の状態にして、SAVEしておきます。
  ここでは仮にファイル名をFLYGとします。
2.インポーターのファイル名を、ソースコード先頭の
  THISPRG$="LTEFNK"
  の定義部に設定しておきます。ここではデフォルトの設定のLTEFNKのままとしておきます。
3.GRP-P形式のGRPファイルをロードするか、ロングテキストエディタなどで、下画面に書き込みます。
  例えば、GRP-P形式ファイルがP01FLYGだとすると、実行モードで、
  LOAD"GRP1:P01FLYG"
  を実行します。
4.インポーターをロードします。
  LOAD"LTEFNK"
5.インポーターを実行します。
  RUN
6.ロングテキストエディタなどから起動された場合には、MEM$経由でターゲットプログラム名が入力されます。
単体でインポーターを起動した場合には、ターゲットプログラム名を聞かれますので、入力します。
  PRG NAME=? に対して、
  FLYG
  と入力します。
7.下画面に「ファイルの読み込み」のタイトルで、「読み込みが完了しました。」と表示されるので、右下の「了解」をタップします。
   ※プチコンVer1.1ではこの時、Syntax Errorなどのエラーが表示されますが、無視してください。
8.編集モードにすると、ターゲットプログラムのXYZが読み込まれています。
  ターゲットプログラムの末尾まで移動します。(ターゲットプログラムを空にしてあれば最初は空の状態になっていますので、そのままでOKです。)
  ファンクションキーの2〜5番を順番に押していきます。
  1番には別の定義が入っていますので、押さないでください。
  これで1キロバイト分のテキストが書き込まれました。
9.実行モードにし、ファンクションキーの1番を押します。
  すると、 SAVE"FLYG":EXEC"LTEFNK" と表示されますので、そのままエンターキーをタップしてください。
10.下画面に「ファイルの書き込み」のタイトルで、「このファイルは、既に存在します。上書きしてもよろしいですか?」と表示されるので、右下の「はい」をタップします。「書き込みが終了しました。」と表示されたら、「了解」をタップします。
11.まだ続きがあれば、手順7.に戻ります。
  全ての書き込みが終了していれば、ファンクションキーが初期化されます。

上記の手順を動画にしてあります。
以下をご覧ください。