エミュレータで動かす

プログラムの作成や保存にパソコンを使う事になりますが、
実行を確認するためにわざわざポケコンに転送するのは面倒です。
そこで、エミュレータを使うのがおすすめです。

 

PC-G シリーズ・E200 向けのエミュレータ g800 が
まるひろさんより Verison 0 内で公開されています。

このページでは g800 の導入と操作方法を説明しています。

  

SHARP PC-G850/G815/E200エミュレータ g800

 

Windows・OS X・Linux で動作可能です。

機械語モニタがエミュレータに備わっていますが、
BASIC などは本体から ROM イメージを取り出す必要があります。


g800 本体をダウンロード・インストール(ビルド)する

Windows と OS X(PowerPC)版の実行パッケージ、
およびソースは Version 0 内で公開されています。

 

SHARP PC-G850/G815/E200エミュレータ g800

 

ソースは gcc 向けで記載され、Windows 以外に Linux・OS X でもビルド可能です。

 

SDL ライブラリ・開発ライブラリ が必要です。
g800 では 0.9.9 まで SDL 1.2、0.10.0 より SDL 2.0 を採用しています。

(0.10.0 以降でもソース上では SDL 1.2 でもビルドできるようになっています)


SDL | Simple DirectMedia Layer

Version 0 から得られるソースからビルドする事も可能です。

libsdl の開発ライブラリを入れます。

SDL 2.0 は 0.10.0 からの対応です。0.9.9 は SDL 1.2 となります。

0.10.0 以降で SDL 1.2 を使用するする事も可能です。

Makefile の SDL 2.0 部分をコメントにし、SDL 1.2 部分のコメントを外します。

 

Debian(派生含む)・Ubuntu(フレーバー・派生含む)

Ubuntu 系では build-essential libtool パッケージが必要かもしれません。

 

$ sudo apt-get install libsdl2-dev (0.10.0〜 で SDL 2.0 を使用する場合)

$ sudo apt-get install libsdl1.2-dev (SDL 1.2 を使用する場合)

 

Fedora(Spin 含む。Red Hat 系)

gcc が入っていないので一緒にインストールします。

 

$ sudo yum install SDL2-devel gcc (0.10.0〜 で SDL 2.0 を使用する場合)

$ sudo yum install SDL-devel gcc (SDL 1.2 を使用する場合)

 

openSUSE

 

$ sudo zypper install libSDL2-devel (0.10.0〜 で SDL 2.0 を使用する場合)

$ sudo zypper install libSDL-devel (SDL 1.2 を使用する場合)

 

Vine Linux(VineSeed を含む)

現在 SDL 2.0 がパッケージに存在しないので、SDL1.2 を用いる事になります。

 

$ sudo apt-get install libSDL-devel

 

あとは g800 のソースを解凍し、ビルドするだけです。

 

$ cd g800

$ make

$ sudo make install

$ sudo chmod 0755 /usr/local/bin/g800

 

macOS からのビルドは下記に記載があります。

実際にはソースの編集は行わず、make でビルド可能です。
OS X アプリ版でもソース編集は行っていません。

 

PC-G850V のエミュレータ | KOYAMA Yoshiaki のブログ

 

Yosemite(OS X 10.10) では、そのまま make すると
「clang: error: unknown argument: '-finline-limit-20000'」と表示され失敗します。

Makefile にある SDL 2.0 の -finline-limit-20000 を削除すると make が通ります。

 

ポケコン本体からイメージを取り込む

g800 本体だけでもマシン語実行が可能ですが、

BASIC・C 言語等を使用する場合はポケコン本体のイメージが必要です。

 

ダウンロードページの本体下にある
「PC-G800のROMをエミュレータで使うためのツール」をダウンロードし、

解凍したファイル manual.txt の手順にある通りに行って下さい。
PC-G850 シリーズは copyg850.hex を、
それ以外の PC-G シリーズおよび PC-E200 は copye200.hex を使用します。

PC-G850V・PC-G850VS の場合は以下の 23 ファイルになります。

 

base.txt

rom00.txt rom01.txt rom02.txt rom03.txt rom04.txt rom05.txt rom06.txt rom07.txt

rom08.txt rom09.txt rom0a.txt rom0b.txt rom0c.txt rom0d.txt rom0e.txt rom0f.txt

rom10.txt rom11.txt rom12.txt rom13.txt rom14.txt rom15.txt 

 

機種によって runXX.txt のファイル数が変わってきます。

  • PC-E200: 5ファイル - rom00.txt〜rom03.txt
  • PC-G850: 18ファイル - rom00.txt〜rom10.txt
  • PC-G850S: 19ファイル - rom00.txt〜rom11.txt
  • PC-G850V・PC-G850VS: 23ファイル - rom00.txt〜rom15.txt

これらのファイルをひとまとめにしてフォルダに置いておきます。

 

設定ファイル g800config の変更

テキストファイルで g800config を編集します。

 

# エミュレートされるマシン

machine g850

 
G シリーズ初期のものは e200 か g815 で良いかもしれませんが、
どちらもワークエリアが違う場合は作者への対応を要するかも知れません。

 

# ROMイメージのあるディレクトリ

rom_dir ~/g800

# RAMファイルパス名

ram_path ~/g800user.txt

 

rom_dir はイメージを置いたパスです。ram_path は g800 が生成します。

~ はユーザーフォルダです。

Windows では / ではなく ¥(\)区切りにする必要がありそうです。

/ を付けずにフォルダ名のみにした場合は、g800 からの相対パスになるようです。

 

manual.txt には OS X の場合に「g800config を .g800config に変更」とありますが、
g800config のまま、ユーザーフォルダ直下に入れても構いません。

頭に . を付けたファイル名は Finder で表示されなくなるので、
編集する時に手間となります。

Linux でも同様に g800config のままで起動できます。

 

キー割り当てはデフォルトだとテンキー部分を数字キーにして、
関数キーは数字キー・記号キーに割り当てています。
最近はテンキーのないキーボードも使われるので、
必須的に関数キーを割り当てず(またはテンキーに)
ソフトウェアキーを使用するようになるでしょう。

または、プログラムを考えて、数字キーは QWER の上にする手もあります。

  • 数字を QWER の上で入力する →
     プログラム時に素早く入力しやすいが、+ - * / = の割り当てで困る場合がある
  • 数字をテンキーで入力する →
     実機に近いので対応キーが分かりやすいが、英・数 で手を動かすので、入力の快適さに問題がある

manual.txt に記載がありませんが、 [ @ ] [ _ ] キーも使えました。

アップル製のキーボードの場合、一部読み替えが必要です。

  • \ → ¥ ( \ を入力する時は command + ¥ )
  • backspace → return の上にある delete キー
  • delete → (テンキー付のみ) end キーの左にある delete キー
  • home → fn キー + ← キー (テンキー付は home キー も可)
  • end→ fn キー + → キー (テンキー付は end キー も可)
  • pageup → fn キー + ← キー (テンキー付は pageup キー も可)
  • pagedown → fn キー + → キー (テンキー付は pagedown キー も可)
  • lcontrol → control キー
  • lalt → option キー (テンキー付は左側の option キー)
  • ralt → (テンキー付のみ) 右側の alt キー
  • numlock → (テンキー付のみ) テンキーの clear キー
  • nreturn → (テンキー付のみ) テンキーの enter キー
  • f1〜f12 → fn キー + F1〜F12 キー (テンキー付は F13〜F15 も可)

Insert キーがないため、insert の代わりに別のキーを割り当てる必要があります。
また非表示になっているキーのうち、[ = ] [ R・CM ] [ M+ ] は
分かりやすいキーに割り当てると無難かもしれません。

(デフォルトで R・CM と M+ が PgUp・PgDn なのはそのためでしょう)

テンキー付だと右 option キー(ralt)が場所的にちょうど良いです。

ファンクションキーは OS が別用途で設定していますので、ご注意下さい。


Linux は F11 は全画面動作になっています。

CapsLock・NumLock・ScrollLock も使えないようです。

 

# ソフトウェアキーを使うか

software_key y

 
画面右の関数キー部分が表示されます。マウスで操作可能です。
関数キーの割り当てが分からないケースもありますので、表示させておくのが無難です。
特にテンキーのないキーボードでは必須です。

g800config キー配列の例

キーボード配列に合わせて g800config を作ってみました。

ダウンロードし、g800config に変更します。
コンパクトタイプのキーボードは変更が必要になるかと思いますので、
キー配列も含めて編集し、ご利用下さい。

 

下記の g800config で全て共通しているキーは下記のとおりです。
(ポケコン → 左 Windows/Linux ・ 右 Apple Keyboard)

  • A〜Z → A〜Z ・ A〜Z
  • ; → ; ・ ;
  • , → , ・ ,
  • 矢印 → 矢印 ・ 矢印
  • TAB → Tab ・ tab
  • CAPS → 左 CTRL・左 control
  • SHIFT → 左 SHIFT・左 shift
  • カナ → 左 Alt・左 option
  • BS → BackSpace・delete (return の上)
  • RETURN → Enter・return
  • 2ndF → 右 SHIFT・右 shift
  • yx^ → ^ ・ ^(単独で ^ 入力なので)
  • ( → [ ・ [
  • ) → ] ・ ](単独キーがあるカッコはここしかない)
  • OFF → Esc・esc

Windows・Linux でテンキーのない JIS 109 配列キーボード(fn キーで代用)向けです。

特殊キーは配列がまちまちなので、
fn を用いないで入力できるキーを優先して割り当てます。

 

キーボードの文字で分かりやすいものから割り当てます。

  • ON BREAK → Pause Break(なければ F1 とか)
  • INS → Ins
  • CLS → Del

ファンクションキーが単独で使えるので、ここによく使うキーを中心に。
ただし F4〜F8 は割り当てがあるので、F11 も全画面で使われているので除外します。 

  • BASIC → F1
  • TEXT → F2
  • R・CM → F9
  • M+ → F10
  • CONST → F3
  • ANS → F12

テンキー部分はこんな感じでしょうか。

  • 0〜9 → 0〜9
  • . → .
  • - → -
  • / → /
  • * → :
  • + → @
  • = → ¥ ( _ でも良いかも )

その他関数キーはテンキーに割り当てます。

g800config Windows・Linux テンキーなしキーボード (JIS) 向け
g800configpc.txt
テキスト文書 2.5 KB
テンキー付の Apple Keyboard (JIS) 向け その1。
実機らしく数字入力はテンキー、関数は QWER の上に割り当てています。 
() で割り当て時の記載も含めています。
 
BASIC・TEXT・ON・CLS を home・end・pageup・down に
  • CLS → home ( MSX では HOME/CLS なので)
  • ON (BREAK) → end (プログラム等の終了=END)
  • BASIC → page up
  • TEXT → page down

INS キーは Apple Keyboard にないのでどこかに割り当てが必要。

  • INS → 右 option(ralt。end 左の delete も良いですね。その場合は delete)

数字入力はテンキーにしてフルに使えるように。

  • M+ → テンキー enter (nreturn)
  • R・CM → テンキー clear(numlock)
  • 0〜9 + - * / . はそのまま(n?)
  • = → - (Shift+ - → =。実際にはテンキー = でも入力可能)

残った関数キーは数字・記号キーに割り当てて分かりやすく

  • ANS → @ (意外と使うので分かりやすいキーに)
  • CONST → :
  • sin〜F←→E → 1〜4 (sin cos tan からだと分かりやすいので)
  • nPr〜MDF → 5〜0
  • π〜x2 → .〜_ (関数キーの中で下段なので下段のキーに並べて)
g800config テンキー付 Apple Keyboard (JIS) 向け その1
g800configmac10.txt
テキスト文書 2.6 KB

テンキー付の Apple Keyboard (JIS) 向け その2。

テンキーは関数割り当てにして、数字入力は QWER の上に割り当てています。

プログラムを入力しようとすると数字入力は QWER の上に手がいくので、
運営者はこの割当が無難そうです。

 

その1 との違いだけ記載しておきます。

  • 1〜0 → 1〜0 (QWER の上)
  • - → -
  • / → /
  • * → :
  • + → @
  • = → ¥ ( \ 。テンキー = も使用可能)
  • CONST → テンキー /
  • ANS → テンキー *
  • sin〜F←→E → テンキー 7〜-
  • nPr〜MDF → テンキー 1〜6
  • π → テンキー 0
  • √ ̄ → テンキー .
  • x2 → テンキー +
g800config テンキー付 Apple Keyboard (JIS) 向け その2
g800configmac102.txt
テキスト文書 2.6 KB

テンキーなしの Apple Keyboard (JIS) 向けです。

キーの数が少ないので、fn キーを用いて入力を行えるようにします。

() で記載時の割り当てを書いておきました。

 

BASIC・TEXT・ON・CLS は fn+矢印 で実際のキー配置に近い配置に

  • BASIC → fn+← (home)
  • TEXT → fn+→ (end)
  • ON BREAK → fn+↑ (pageup)
  • CLS → fn+↓ (pagedown)

テンキーにある記号は実際のキーに近づけつつ、分かりやすい配列に。INS も割り当て

  • - → -
  • / → /
  • * → : ( Shift + : → * )
  • @ → + ( 縦に並んで分かりやすい )
  • = → _
  • INS → ¥ ( \ 。_ と ¥ は逆でも良いかも )

メモリキーは fn で入力できる割り当てキーで良い場所がありました

  • M+ → fn+return (nreturn)
  • R・CM → fn+delete (delete)

CONST・ANS はファンクションキーに割り当て

  • CONST → (fn+)f1
  • ANS → (fn+)f2

最新のキーボードでは num lock とテンキー割り当てがなくなっているので、
関数キーは入力できませんが、仮でテンキー割り当てにします。
通常関数入力は文字入力するかソフトウェアキーで代用となります。

g800config テンキーなし Apple Keyboard (JIS) 向け
g800configmac.txt
テキスト文書 2.6 KB

 

起動の仕方

イメージを読み込んだ状態で普通に g800 を実行すれば実機同様 BASIC の RUN MODE で動作します。

 

ファイルの読み書きを行う方法は3種類あります。
BASIC・C言語・アセンブラソースなどは SIO、直接マシン語を転送する場合は HEX です。

  • 起動時にオプション設定
    パソコン→G800(SIO): g800 -sio_in=[SIOファイル名]
    G800→パソコン(SIO): g800 -sio_out=[SIOファイル名]
    パソコン→G800(HEX): g800 [HEXファイル名]
  • g800 のメニューからファイル設定。F4(fn+F4)でメニューがでます。
  • HEX ファイルに限り、アイコンに HEX ファイルをドロップすると読み込みます。

転送の前に通信の設定をしておきます。PC-G850 シリーズだと TEXT - Sio - Format です。
実機へ転送するのと同じ設定と手順で構いません。
これでファイルをエミュレータに転送するようになります。

 

ここまで記載すれば、あとは実機同様にエミュレータを操作できるでしょう。


Q&A

g800 で紹介されていない他の機種でも動作できますか?

PC-G8xx シリーズであれば動作しそうです。イメージ取り込みは copye200.hex で行えるかと思います。

g800config の machinemachine g815 で同じ配列になるかと思います。


起動すると CANNOT OPEN CONFIG FILE と表示されます。

設定ファイル g800config が存在していません。ユーザーフォルダ直下に置いて下さい。

.g800config でも認識しますが、OS X・Linux では隠しファイル扱いになります。

g800 の実行ファイルと同じところに g800config を置いても認識するかもしれません。


起動すると MACHINE LANGUAGE MONITOR になります。BASIC・C 言語・アセンブラを使いたいのですが……

BASIC 等を動作する場合ポケコン本体の ROM イメージが必要です。
このページの「ポケコン本体からイメージを取り込む」を行った後、
g800config の rom_dir にイメージを入れたフォルダの場所を入れます。


起動すると CANNOT OPEN ROM FILE と表示されます。または液晶部分に何も表示されません。

g800config の rom_dir に指定してある場所に本体の ROM イメージがありせん。
BASIC 等を動作する場合ポケコン本体の ROM イメージが必要です。
マシン語だけ動作させたい場合は rom_dir の頭に # を付けます。


ROM イメージを用意している場合は場所が正しいか確認して下さい。
Windows の場合、区切りを / から \ にしなければいけないかもしれません。


Linux 版を起動するとエラーになります。

ALSA が入っていない場合は関連するエラーが出てきます。ブザー音で使用していますので、

g800config で buzzer y(ブザーを使う)を buzzer n(ブザーを使わない)に変更してみて下さい。


ビデオドライバーを独自にビルドしている場合は、

SDL がビデオドライバーのライブラリを見つけられず、制御ができずにエラーを出す場合があります。


Mac 版を使いたいのですが、ダウンロードしたら端末の表示になっています。

作者 Version 0 さんが公開している Mac(PowerPC)版はこれで正常です。クリックして起動します。
ただし SnowLeopard(10.6)まで起動可能で、Lion(10.7)以降は起動できません。
このページで公開している OS X アプリ版 は Intel バイナリーで、最新版の OS X 対応です。


ソースをビルドしましたが、起動できません。

SDL ライブラリが不足している英語文になっていれば、ライブラリのインストールが必要です。

 

SDL | Simple DirectMedia Layer


BASIC で一部の動作がおかしいです。

BASIC からワークエリアを使用している場合、
機種によってワークエリアが異なるために問題が発生する場合があります。

g800config の machine(エミュレートされるマシン)を
存在していればその機種に、なければ他の機種に変えて下さい。
どの機種に変えても改善しない場合は作者レベルで対応を要すると思われますので、
作者の まるひろ さんにその旨問い合わせを行って下さい。

 

RAM が 8KB の機種で発生しているかもしれません。
g800 が対応している E200・G815・G850 はいずれも 32KB の機種です。


毎回起動時にリセット動作が生じます。

OFF ボタン操作を行うと g800config の ram_path に記載しているファイルに

メモリ情報を保存するようになります。

タイトルバーの閉じるボタンなどを使用している場合は設定の変更で OFF ボタン同様に動作します。

下記「ram_path に設定しているファイル名が生成・変更されません。」を参照して下さい。

 

また、ram_path に指定しているファイル名が誤っていないか確認して下さい。


ram_path に設定しているファイル名が生成・変更されません。

タイトルバーにある閉じるボタン等を使用している場合は保存されない状態になります。
OFF ボタンを押すと生成・変更が行われます。

 

閉じるを多用する場合は g800config の close_as_off n

close_as_off y(「閉じる」をOFFキーとして扱う)にすると、

ウインドウを閉じる時でも OFF ボタンと同様に動作し、生成・変更されます。


一部のキーが設定している通りに動作しません。

@ [ ] 等のキーが正常に動作しない場合は、
g800config の keymod_jis n を keymod_jis y にしてみて下さい。

 

OS によって一部のキーが OS で優先されてしまいますので、そのキーは外して下さい。

  • OS X → fn+F9〜F12
  • Linux → F11・CapsLock・NumLock・ScroolLock 


キーの割り当てがよく分かりません。

キー割り当ては変更可能ですので、g800config を編集してみて下さい。

テンキーがないキーボードではデフォルト状態で数字が入力できませんので、
このページで含めている g800config をご利用下さい。

 

関数キーの割り当てが問題であれば、
g800config で software_key y(ソフトウェアキーを使う)にすると

関数キー部分が画面の右に表示され、マウス操作で代用できるようになります。

 

また g800config で info_image (ファイル名).bmp として
画面の上に任意の画像を表示させる事もできます。


起動やウインドウを切り替える時にブツブツ音がなります。

g800config で buzzer y(ブザーを使う)に設定している時に生じます。

音を出さなくて良いのであれば、buzzer n(ブザーを使わない)に変更する事で解決できます。