エミュレータで動かす

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

 

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

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

  

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

 

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


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

Windows 実行パッケージ、
およびソースは Version 0 内で公開されています。

 

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

 

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

 

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 部分のコメントを外します。

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

実際にはソースの編集は行わず、make でビルド可能です。

 

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 エミュレータも搭載しているため、
BASIC もある程度が可能ですが、

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 には macOS の場合に「g800config を .g800config に変更」とありますが、
g800config のまま、ユーザーフォルダ直下に入れても構いません。

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

 

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

または、プログラムを考えて、数字キーは 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 が別用途で設定していますので、ご注意下さい。

g800config キー配列の例

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

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

 

下記の g800config で全て共通しているキーは下記のとおりです。
(ポケコン → 左 Windows ・ 右 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 でテンキーのない 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
  • . → .
  • - → -
  • / → /
  • * → :
  • + → @
  • = → ¥ ( _ でも良いかも )

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

テンキー付の 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 → .〜_ (関数キーの中で下段なので下段のキーに並べて)

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

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

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

 

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

  • 1〜0 → 1〜0 (QWER の上)
  • - → -
  • / → /
  • * → :
  • + → @
  • = → ¥ ( \ 。テンキー = も使用可能)
  • CONST → テンキー /
  • ANS → テンキー *
  • sin〜F←→E → テンキー 7〜-
  • nPr〜MDF → テンキー 1〜6
  • π → テンキー 0
  • √ ̄ → テンキー .
  • x2 → テンキー +

テンキーなしの 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 とテンキー割り当てがなくなっているので、
関数キーは入力できませんが、仮でテンキー割り当てにします。
通常関数入力は文字入力するかソフトウェアキーで代用となります。


起動の仕方

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

イメージを入れない場合は公式版ではマシン語モニタになりますが、
テスト版は互換 BASIC インタプリターが動作するので、
イメージがなくても 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 でも認識しますが、macOS では隠しファイル扱いになります。

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 の場合、区切りを / から \ にしなければいけないかもしれません。


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

作者 Version 0 さんが公開している Mac(PowerPC)版はこれで正常です。
クリックして起動します。
ただし SnowLeopard(10.6)まで起動可能で、Lion(10.7)以降は起動できません。

 

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

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 にしてみて下さい。

 

macOS では fn+F9~F12 が OS で優先されてしまいますので、
そのキーは外して下さい。

 

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

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

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

 

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

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

 

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


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

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

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