• IchigoJamのスクリーンショットを撮りたい

 IchigoJam の実行画面のスクリーンショットを撮りたい時があります。

もちろん、 IchigoJam の実行画面をPCで表示し、PCのスクリーンショット機能を使用するのですが、POKE命令を使用して画面表示を行っているプログラムのスクリーンショットは難しいものがありました。

そこでPOKE命令を使用したプログラムのスクリーンショットを撮る方法について色々と試行錯誤した結果、とりあえず期待する成果を得られたので報告します。

  • その1

fig03まずは、画面の表示にPRINT命令だけを使用したプログラムの場合ですが、IchogoJam用シリアルキーボードアプリ IJKB を使用すれば、特に難しくなくスクリーンショットを撮ることができます。

 IchigoJam で実行中のプログラムを IJKB で表示し、それを[Alt]+[PrintScreen]キーでスクリーンショットを撮り、"Paint"等のソフトにて保存します。

ただし、CHR$による画面制御コードが使用されている場合、画面表示が乱れることがあります。

  • その2

次にPOKE命令で画面表示をしているプログラムの場合ですが、 IJKB では正確に画面表示されずスクリーンショットを撮ることができません。
そこで VirtualBox を使用することにしました。
(これがこの記事のメインとなります)
virtualbox02
まずは VirtualBox をインストールし、そこに IchigoJam PC をインストールします。
これで、Windwosの操作で IchigoJam PC のスクリーンショットを撮る環境が整いました。

しかし、スクリーンショットを撮るにはプログラムを入力しなければなりません。(当然ですが)
例え1KBとは言え、 IchigoJam に入力したプログラムを、再度 IchigoJam PC に入力するなんて無駄な労力は払いたくありません。

なんとかラクはできないものかと探してみたら、 com0com というヌルモデムエミュレータが使えそうな感じでした。
ホストコンピュータ(私の環境ではWindows7)から、ゲストコンピュータ(IchigoJam on VirtualBox)に、仮想シリアルポートを通じてプログラムの転送が行えそうです。

 com0com をインストールし、 VirtualBox のシリアルポートの設定を仮想COMポートにし、 TeraTerm の接続先に VirtualBox の仮想シリアルポートとペアになるポートを選んで接続してみたところ、見事にプログラムを転送することができました。

これで VirtualBox 上で IchigoJam のプログラムを実行し、そのスクリーンショットを撮ることができました。

  • 実作業

以下は、各ソフトウェアのインストールおよび設定の説明になります。

  1. まずは VirtualBox をインストール virtulabox01
    インストール作業は、基本的に「Next >」を押していくだけです。
    私は何も考えずにデフォルトのファイル構成でインストールしました。



  2. VirtualBoxにIchigoJamをインストール virtualbox03
    イチゴジャムレシピのサイトの説明にあるように、初めて起動する場合は、”IchigoJam.vbox ”をクリックすると IchigJamPC がVirtualBox内で起動します。

    うまく起動できなかった場合は、VirtualBoxの「とげとげアイコン(新規)」(あるいは[仮想マシン]-[新規]メニュー)より、仮想IchigoJamマシンを作成します。
    • 「名前」欄は、適当に(私はIchigoJamPCとしました)
    • 「タイプ」欄は、"Other"
    • 「バージョン」欄は、"DOS"
    • 「メモリーサイズ」は、"4MB"
    • 「仮想ハードディスクを追加しない」にチェック
    上記の設定にすると最小構成で仮想マシンを作成することができます。
    次に「歯車アイコン(設定)」(あるいは[仮想マシン]-[新規]メニュー)を選びます。
    「ストレージ」の項目より、空のフロッピーディスクを選び、"IchigoJam.img"を選んでください。
    (仮想CD-ROMを使用する場合は、空のCD-ROMを選び、"IchigoJam.iso"を選んでください)
    以上で、 IchigJamPC がインストールできました。
    「→アイコン(起動)」(あるいは[仮想マシン]-[起動]-[通常起動]メニュー)でIchigoJamPCを実行することができます。

  3. com0comをインストールcom0com01
    Windowsに com0com をインストールします。
    インストール後、[スタート]メニューの、[com0com]-[seup]を選び、作成された仮想シリアルポートを確認しておきます。
    (右図では、COM4とCOM5が割り当てられています。)

  4. VirtualBoxのシリアル設定virtualbox04
    VirtualBox内のIchigoJamPCにシリアルポートを割り当てます。
    VirtualBoxの「歯車アイコン(設定)」から、「シリアルポート」を選び、「ポート1」のタブより、
    • 「シリアルポートを有効化」を、チェック
    • 「ポート番号」は、"COM1"
    • 「ポートモード」は、"ホストデバイス"
    • 「パス/アドレス」は、com0comで割り当てられたポート名(私の場合はCOM4)
    と設定します。

  5. TeraTermの設定teraterm01
    [設定]-[端末]メニューより、端末設定を行います。
    私は右図のような設定にしています。

    次に[設定]-[シリアルポート]メニューより、シリアルポートの設定を行います。teraterm02
    私は右図のような設定にしています。

  6. IchigoJamPCの設定
    最後にIchigoJamPCのUART設定をします。
    IchigoJamPCはデフォルトでUART0(出力しない)になっているので、"UART1"と入力して通信可能とします。

  • 最後に

solitairegolf以上で、VirtualBoxにIchigoJamPCをインストールし、TeraTermを用いてプログラムを転送できるようになりました。

右は約1KBあるプログラムを転送して実行した画面のスクリーンショットです。

これで機械語プログラムも実行できると完璧なんだけどなぁ。