SHARP PC-1401/02 の使い方

SHARP PC-1401/02 に関する記事です。主にマニュアルを紛失して使い方がわからなくなった方への情報です。

このトピックでは文字が黄色のキーはSHIFTキーを押した後にキートップの文字のキーを押すことを意味しています。 例えば@SHIFT+Iを意味します。



SHARP PC-1401/02 シリーズ諸元

記事中で主に扱っているのは PC-1401 ですが、PC-1402 でもこのページの記事がほぼそのまま通用すると思います。PC-1401/02 は基本的にメモリサイズの違いしかありません。

スペック

SHARP PC-1401/02 のスペックは以下の通りです。

機能 PC-1401 PC-1402
CPU SC61860 (576KHz)
RAM 4KB 10KB
液晶ディスプレイ 16桁 / 1行
(5x7 ドットマトリクス)
インターフェィス ペリフェラルポート 11ピン (2.54mm ピッチ)
バッテリー CR2032 x 2
消費電力 0.03W
本体寸法 170(W)×72(D)×9.5(H)mm
本体重量 約150g
価格 ¥29,800 ¥34,800
発売年 1983 1984

PC-1403 / PC-1403H という海外向けの製品がありますが、あちらは 24 桁 1 行で小文字が使えたり行列演算が行えたりと、PC-1460 を薄くしたような機種となっています。ほぼ別物ですので、当記事では扱いません。

以下、PC-14xx 系列に関する余談です。



使い方

とりあえず電池の入れ方からでしょうか?


電池の入れ方

電池はCR2032 が 2 枚必要です。裏蓋を外し、さらに電池押さえをスライドさせると電池を交換できます。バックアップ電池はありませんので、電池交換をすると RAM の内容が消えてしまいます。

電池交換直後は画面が化けたり、BUSY シンボル (インジケーター) が点灯したままの状態になっていたりするので、何もキーを押さずに計算機裏面にある ALL RESET ボタンを押してください。

今でこそ CR2032 は 100 円ショップで 3 枚 110 円で売られていたりしますけど、当時はそこそこ高かったんですよねぇ...。


電源の ON / OFF

電源の ON / OFF は本体左上のスライドスイッチで行います。

電源 ON の状態でも何もせずにしばらく放置すると勝手に電源が OFF になります (オートパワーオフ)。オートパワーオフから復帰するには、ON(BRK)を押してください。


モード切替

PC-1401/02 には 3 つの動作モードがあります。モード切替は本体左側にあるCALBASICで行います。デフォルトで関数電卓モードです。

モード ボタン 説明
関数電卓モード CAL 関数電卓です。
RUN モード BASIC 電卓として使ったり、プログラムの実行を行います。
PROGRAM モード プログラムの入力を行います。

BASIC の RUN / PROGRAM モードはBASICキーでトグル切り替えです。

CAL BASIC
関数電卓モード (何も起きない) BASIC
RUN モード
RUN モード 電卓モード BASIC
PROGRAM モード
PROGRAM モード 電卓モード BASIC
RUN モード

ファイルの操作

ファイル操作は [RUN] モードで行います。

プログラムの実行

メモリ上の BASIC プログラムは RUN コマンドで実行できます。RUN コマンドの書式は以下の通りです。

RUN [{行番号 | ラベル}]

RUN コマンドは RUN モード (RUN) で実行します。プログラムモード (PRO) になっている場合にはスライドスイッチを切り替えて押して RUN モード (RUN) にする必要があります。

引数として行番号を指定すると BASIC プログラムの途中から実行する事ができます。BASIC プログラムを終了させるにはBREAK(ON) キーを押します。

データレコーダー (カセットレコーダー)

PC-1401/02 はメモリ上のプログラムをデータレコーダー (カセットレコーダー) へ保存したり、

CSAVE ["ファイル名"][,"パスワード"]

逆に読みこんだりできます。

CLOAD ["ファイル名"]

非公開命令ですが、メモリブロックをそのままバイナリファイルとして保存したり、

CSAVEM ["ファイル名";]開始アドレス, 終了アドレス

逆に読みこんだりする事もできます。開始アドレスを省略すると CSAVEM で保存した際の開始アドレスに読み込まれます。

CLOADM ["ファイル名";][開始アドレス]

CLOAD / CSAVE 系の命令を使うには以下のいずれかの機器が必要です。

周辺機器 カセットインターフェイス カセットレコーダ プリンタ
CE-124 - -
CE-126P -
CE-129P -

CE-124 / CE-126P と接続して使う、データレコーダ CE-152 (コンパクトカセット) / CE-127R (マイクロカセット) もあります。


[電卓] モード (CAL)

電卓として使うのであれば [電卓] モードにします。普通の電卓として使うキーは以下の通りです。

キー キー入力 意味 備考
09 数値 -
AF 16進数値 - 16進表示の場合に使う。A(10)~F(15)。
÷/ 除算 value1 ÷/ value2
×* 乗算 value1 ×* value2
減算 value1 value2
加算 value1 value2
+/- 符号反転 value +/- 表示されている数値の「正(+)」と「負(-)」を入れ替える。
小数点 -
イコール - 計算結果の表示
C・CE クリア・クリアエントリー - 一度押すと表示されている値がクリアされる (訂正)。続けてもう一度押すと計算内容がクリアされる。
エラー表示のクリアにも使う。
CA SHIFTC・CE クリアオール - すべての計算内容をクリアする
x→M ストアメモリー value x→M 表示されている値を独立メモリーに設定する。0 を登録する (直前にC・CEを押す) 事で独立メモリーをクリアできる。
RM リコールメモリー - 独立メモリーの値を呼び出す。
F⇔E 表示方式指定 - 押すたびに 通常表示と指数表示を切り替える。
TAB SHIFTF⇔E 小数点位指定 - 表示方式が通常表示時の小数点位を指定する。SHIFTF⇔E5 だと小数点第5位の表示となる。
M+ メモリープラス value M+ 表示されている値を独立メモリーの値に加算する。
→HEX 16進表示 - 値を16進数表示にする。
→DEC SHIFT→HEX 10進表示 - 値を10進数表示にする。
→DEG 度.分秒→度 value →DEG 度.分秒を度に変換する。(無理矢理だが時刻計算をする事も可能)
→D.MS SHIFT→DEG 度→度.分秒 value →D.MS 度→度.分秒に変換する。(無理矢理だが時刻計算をする事も可能)
EXP 指数入力 - 指数入力を行う。例えば 1.2E-4 (1.2×10-4) を入力したい場合、
 
12EXP+/-4
 
と入力する事で 0.00012 を入力できる。
( / ) 演算順序指定 - 演算の順序を指定する。例えば (1+2)*3 のような場合に使う。
DRG SHIFT 角度単位変更

関数電卓として使う場合にはさらに以下のキーを使います。

キー キー入力 意味 備考
hyp ハイパボリック - 続くsin,cos,tanをハイパボリック (双曲線) とする。
archyp SHIFThyp アークハイパボリック - 続くsin,cos,tanをアークハイパボリック (逆双曲線) とする。
(座標の区切り) - 座標の区切りを入力、或いは座標の切り替えに使う。主に座標変換の入力の際に使われる。
sin sin (正弦) value sin
sin-1 SHIFTsin arcsin (逆正弦) value sin-1
hypsin sinh (双曲線正弦) value hypsin
archypsin SHIFThypsin arcsinh (逆双曲線正弦) value archypsin
cos cos (余弦) value cos
cos-1 SHIFTcos arccos (逆余弦) value cos-1
hypcos cosh (双曲線余弦) value hypcos
archypcos SHIFThypcosn arccosh (逆双曲線余弦) value archypcos
tan tan (正接) value tan
tan-1 SHIFTtan arctan (逆正接) value tan-1
hyptan tanh (双曲線正接) value hyptan
archyptan SHIFThyptan arctanh (逆双曲線正接) value archyptan
ln ln (自然対数) value ln
ex SHIFTln exp (指数) value ex
log log10 (常用対数) value log
10x SHIFTlog 10x (10 の冪乗) value 10x
π SHIFTEXP π/ pi (円周率) value π
yx 冪乗 value1 yx value2 =
x√y SHIFTyx 冪根 value1 x√y value2 =
√ (平方根) value
3√ SHIFT 3√ (立方根) value 3√
x2 2乗 (平方) value x2
Δ% SHIFTx2 % (百分率) value Δ% 直前の値を 1/100 にする。
 
1200 の 15% を求める:
1200×*15SHIFTx2
 
180 が 1200 の何 % かを求める:
180÷/1200SHIFTx2
1/x 1/x (逆数) value 1/x 1/5 の場合には51/x
→rθ SHIFT1/x 極座標変換 value1 value2 →rθ 直交座標 (x,y) を極座標 (r, θ) へ変換する。直交座標 (6, 4) を極座標に変換するには
 
64SHIFT1/xと入力する。
 
最初は r (動径) が表示されている。もう一度を押すと θ(偏角) が表示される。
→xy SHIFT( 直交座標変換 value1 value2 →xy 極座標 (r, θ) を直交座標 (x,y) へ変換する。極座標 (7.2, 33.7) を直交座標に変換するには
 
72337SHIFT(と入力する。
 
最初は座標 x が表示されている。もう一度を押すと座標 y が表示される。
n! SHIFT) n! (階乗) value n!

[電卓] モード (BASIC)

簡易電卓として使うのであれば RUN モードにします。

キー キー入力 意味 備考
09 数値 -
小数点 -
除算 value1 value2
乗算 value1 value2
減算 value1 value2
加算 value1 value2
C・CE クリア - 表示されている値がクリアされる。エラー表示のクリアにも使う。
CA SHIFTC・CE クリアオール - すべての計算内容をクリアする
EXP 指数入力 - 指数入力を行う。例えば 1.2E-4 (1.2×10-4) を入力したい場合、
 
12EXP-4
 
と入力する事で 0.00012 を入力できる。
( / ) 演算順序指定 - 演算の順序を指定する。例えば (1+2)*3 のような場合に使う。
ENTER 計算実行 -

関数電卓のように使うにはさらに以下のキーを使います。

キー キー入力 意味 備考
DRG SHIFT 角度単位変更
DEGREE DEGREE (度) DEGREEENTER で角度の単位を度に変更。DEG のシンボルが点灯する。
RAD RAD (ラジアン) RADENTER で角度の単位をラジアンに変更。RAD のシンボルが点灯する。
GRAD GRAD (グラード) GRADENTER で角度の単位をグラードに変更。GRAD のシンボルが点灯する。
π SHIFT0 π/ pi (円周率) value π
√ (平方根) value
yx 冪乗 value1 yx value2
SHIFT+ 冪乗 value1 value2

次の演算子も使えます。これらの演算子は BASIC プログラム内でも使えます。

キー キー入力 意味 備考
AND AND (論理積) value1 AND value2
NOT NOT (否定) NOT value
OR OR (論理和) value1 OR value2

次の関数も使えます。これらの関数は BASIC プログラム内でも使えます。

キー キー入力 意味 備考
ABS ABS (絶対値) ABS value
cos-1 SHIFTcos ACS (逆余弦: arccos) cos-1 value
archypcos SHIFThypcos AHC (逆双曲線余弦) archypcos value
archypsin SHIFThypsin AHS (逆双曲線正弦) archypsin value
archyptan SHIFThyptan AHT (逆双曲線正接) archyptan value
sin-1 SHIFTsin ASN (逆正弦: arcsin) sin-1 value
tan-1 SHIFTtan ATN (逆正接: arctan) tan-1 value
cos COS (余弦) cos value
3 SHIFT CUR (立方根) 3 value
→DEC SHIFT→HEX DEC (16進→10進変換) →DEC value
→DEG DEG (度分秒→10進数度) →DEG value
→D・MS SHIFT→DEG DMS (10進数度→度分秒) →D・MS value
ex SHIFTln EXP (指数: ex) ex value EXPボタンでは E が入力されるだけ。
n! SHIFT) FAC (階乗: n!) value n!
hypcos HCS (双曲線余弦) hypcos value
→HEX HEX (10進→16進変換) →HEX value
hypsin HSN (双曲線正弦) hypsin value
hyptan HTN (双曲線正接) hyptan value
INT INT (整数化) INT value
ln LN (自然対数: loge) ln value
log LOG (常用対数: log10) log value
π SHIFTEXP PI (円周率) π ※擬似変数
→rθ SHIFT1/x POL (直交座標→極座標変換) →rθ (value1, value2)
1/x RCP (逆数: 1/x) 1/x value
→xy SHIFT( REC (極座標→直交座標変換) →xy (value1, value2)
RND RND (ランダム) RND value
X が負数の場合 直前に発生した乱数 (あるいは乱数列) と同じ乱数を発生させるために初期値を一定にする。
X が 0 から1 未満の場合 0 から 1 未満の乱数を発生させる。
X が1 以上の整数の場合 1 から X の値以下の乱数を発生させる。(1 ≦ RND X ≦ X)。
X が1 以上の実数の場合 1 から X の整数部に 1 を加えた値以下の乱数を発生させる。(1 ≦ RND X ≦ (INT X) + 1)
ただし、この場合は小数部の値によって乱数の発生に差が出る。
x√y SHIFTyx ROT (冪乗根) x√y value
SGN SGN (符号関数) SGN value
X > 0 1
X < 0 -1
X = 0 0
sin SIN (正弦) sin value
SQR (平方根) value
x2 SQU (2 乗) x2 value
tan TAN (正接) tan value
10x SHIFTlog TEN (指数: 10x) 10x value

統計モード

PC-1401/02 の電卓モードには、さらに統計モード (STAT) があります。統計モードに使うキーは画像の通りです。

統計モードに使うキーは以下の通りです。

キー キー入力 意味 備考
STAT SHIFT 統計モード切り替え STAT のシンボル (インジケーター) が切り替わる。
(x,y) RM 2 変数データの区切り
DATA M+ 1 変数データ入力 value DATA
1 変数データ入力 (度数n) value × n DATA 値 50 のデータを 4 件登録するには、50×4DATA
2 変数データ入力 value1 (x,y) value2 DATA
2 変数データ入力 (度数n) value1 (x,y) value2 × n DATA 値 (2,3) のデータを 5 件登録するには、2(x,y)3×5DATA
CD SHIFTDATA 1 変数データ削除 value CD
1 変数データ削除 (度数n) value × n CD 値 50 のデータを 4 件削除するには、50×4CD
2 変数データ削除 value1 (x,y) value2 CD
2 変数データ削除 (度数n) value1 (x,y) value2 × n CD 値 (2,3) のデータを 5 件削除するには、2(x,y)3×5CD

"1 変数"データ (x) に対する統計用のキーは次の通りです。

キー キー入力 変数 意味
( Z サンプル数
Σx ) Y サンプル (x) の総和
Σx2 SHIFT) X サンプル (x) の2乗和
SHIFT4 サンプル (x) の平均値
Sx SHIFT5 サンプル (x) の標準偏差値。
σx SHIFT6 サンプル (x) の母標準偏差値。

"2 変数"データ (x,y) に対する統計用のキーは次の通りです。

キー キー入力 変数 意味
( Z サンプル数
Σx ) Y サンプル (x) の総和
Σx2 SHIFT) X サンプル (x) の2乗和
SHIFT4 サンプル (x) の平均値
Sx SHIFT5 サンプル (x) の標準偏差値。
σx SHIFT6 サンプル (x) の母標準偏差値。
Σy X→M V サンプル (y) の総和
Σy2 SHIFTX→M U サンプル (y) の2乗和
Σxy SHIFT( W サンプル (x,y) の積和
SHIFT7 サンプル (y) の平均値
Sy SHIFT8 サンプル (y) の標準偏差値。
σy SHIFT9 サンプル (y) の母標準偏差値。
a SHIFT2 回帰式の係数 a
b SHIFT3 回帰式の係数 b
r SHIFT1 相関係数 r
SHIFT0 推定値 (y の値から x の値を推定)
SHIFT+/- 推定値 (x の値から y の値を推定)

※ 一部の統計量はメモリー (BASIC の変数) に引き継がれます。


編集

編集に使うキーは以下の通りです。

キー キー入力 意味 備考
/ 行アップダウン PROGRAM モードで、カーソルを上下に移動する。BASIC のリストを移動するのに使われる。
/ 左右カーソルシフト カーソルを左右に移動する。ENTERで計算を実行した直後に押されると、直前に実行した計算式を呼び戻す。
DEL SHIFT 削除 カーソル位置の文字を削除する。
INS SHIFT 挿入 カーソル位置に文字を挿入できる場所を確保する。確保された場所はカーソルの形状が変わる。

定義付けキー

定義付けキーに使うキーは以下の通りです。

キー キー入力 意味 備考
DEF 定義キー 定義付けキーを押す前に押すキー。DEF のシンボルが点灯する。
A=, Z  定義付けキー DEFに続けて押されると、BASIC プログラムは対応するラベルから実行される。キーQPは定義付けキーとして使えない。

次のような BASIC プログラムがあった場合、

10: "A": PRINT "FIZZ": END
20: "S": PRINT "BUZZ": END
30: "D": PRINT "FIZZBUZZ": END

RUN モードで、DEFAを押すと "FIZZ"、DEFSを押すと "BUZZ"、DEFDを押すと "FIZZBUZZ"と表示され、DEFFを押すとラベルが定義されていないのでエラーとなります。

定義付けキーと共に、AREAD 命令が使われる事があります。AREAD 命令は定義付けキーでの実行前に画面に表示されていたものを変数に読み込みます。この機能により、プログラムに引数を渡す事ができます。

AREAD 変数

次のプログラムをC・CE3DEFA で実行すると、

10 "A": AREAD V
20 PRINT V * 2

"6" が表示されます。RUN で引数を渡して実行する事はできません (そもそも "3 RUN" となってしまう)。



ハードウェア

カセットインターフェイス CE-124

CE-124 は幅広い機種で使えるカセットインターフェイスです (現物を所持していないので、サービスマニュアルの画像です)。

今となっては入手難の CE-124 を探すより、後述の『ポケ POWER +』 を購入するのが便利でいいと思います。はんだ付けが苦手でないのなら、自作してみるのも手だと思います。

ブレッドボードで構築する事もできますし、基板を使った場合でも \2,000円程度で作れます。

See also:


ポケ POWER +

ポケ POWER + は CR2032 を 2 枚使うポケコン用の外部電源です。カセットインターフェイス付きのものと付いていないものがあります。

See also:


プリンタ/カセットインターフェイス CE-126P

CE-126P はプリンタ/カセットインターフェイスです。

See also:



ソフトウェア

Pocket Tools

Pocket Tools はポケコン用の各種ツールの集合体です。CE-124 等のカセットインターフェイスさえ持っていれば、PC との連携が可能になります。

次に挙げる機能がカセットインターフェイスが利用可能な SHARP 製ポケコンすべてにおいて利用可能です。すべてです。PC-1210 から PC-850S までもれなく利用できます。

PStart.exe が Pocket Tools の本体です。実行したらまずは "Edit SHARP SETtings" で環境設定を行います。お持ちの機種のコメントをアンコメントします。

rem set SHARPC=1100
rem set SHARPC=1246DB
rem set SHARPC=1211
rem set SHARPC=1245
rem set SHARPC=1251
rem set SHARPC=1260
rem set SHARPC=1262J
rem set SHARPC=1350
rem set SHARPC=1360K -o%KEYDIR%\KANJI.cfg
set SHARPC=1401
rem set SHARPC=1402
rem set SHARPC=1403
rem set SHARPC=1421
rem set SHARPC=1445

Pocket Tools が想定しているツールで、Pocket Tools のアーカイブに含まれていないものは以下の通りです。

用途 ソフトウェア
テキストエディタ PSPad
バイナリエディタ PSPad
WAV ファイル録音/編集 Audacity

自分の好きなツールを登録して使っても構いません。[Edit | Edit...] で、メニューの中味を編集する事ができます。


Audacity

フリーのサウンド編集ソフトです。CSAVE / CSAVEM された音声を録音/編集するのに使います。

ポケコンの CSAVE / CSAVEM を取り込む前に次の設定を行った方がいいと思います。

取り込み手順は、

  1. PC-1401/02で CSAVE または CSAVEM を実行できる状態にしておく。
  2. Audacity の録音ボタン () を押す。
  3. PC-1401/02 側でENTERキーを押して CSAVE または CSAVEM を実行。
  4. PC-1401/02 側でプロンプト (>) が表示されたら Audacity の停止ボタン (■) を押す。
  5. 取り込んだサウンドの前後にある、無音部分やノイズが乗った部分をカット (任意)。
  6. [ファイル | 書き出し | WAV として書き出し] で、*.wav 形式で保存。

となります。音声ファイルの形式は PC-1401/02 が取り込めるのなら *.wav 以外でも構わないのですが、Pocket Tools の事を考えると *.wav 形式で保存した方が便利です。

取り込んだ音声ファイルは、Pocket Tools で BASIC ソースや SHARP バイナリに変換し、それをさらに Pocket Tools で *.wav 形式で出力する事でキレイな音声ファイルにする事ができます。実機に取り込めないような音質の悪い音声ファイルでも BASIC ソースや SHARP バイナリに変換できる事があります。音声ファイルの前後の無音部分やノイズも取り除けるのでオススメです。


Pokekom Go

Pokekom Go は Android 用のポケコンエミュレータです。

Pokekom Go を使うには実機の ROM を吸い出す必要があります。

PC-1401 での ROM イメージ作成手順を以下に示します。効率は良くありませんが PC-1401/02 で同じように ROM 吸い出しを行えます。作業は Windows 上で行います。

  1. Pocket ToolsAudacity が使える状態にしておく。
  2. 内部 ROM (0000~1FFF) を 1KB ずつ吸い出す。デジホリの blog にあった BASIC プログラムをちょっと改変したものを Pocket Tools を使って PC-1401 に転送。

    100 H=&3A:L=&00
    110 D=&400
    120 G=256:A=H*G+L:E=32768*(H>=128):F=D/G
    130 B=A+32:J=B/G:K=(B-E) AND &FF
    140 C=B+16:M=C/G:N=(C-E) AND &FF
    150 POKE A,0,3,16,J,K,132,24,7
    160 POKE A+8,2,F-1,52,2,255,52,0,1
    170 POKE A+16,130,19,4,8,144,53,144,219
    180 POKE A+24,4,38,47,13,47,18,55
    190 POKE B,0,0,N,M
    200 BEEP 2:FOR I=0 TO 32-F STEP F
    210 PRINT I/F: POKE B+1,I: CALL A
    220 CSAVE M C,C+D-1: BEEP 1
    230 NEXT I: BEEP 3
    
  3. 転送した BASIC プログラムを実行すると、最初に 2 回 BEEP が鳴る。これで準備完了。ENTER を押すと CSAVEM が始まるので、Audacity で録音して WAV 形式で保存 (INT01.wav のような連番の名前にしておくと判りやすい)。1KB 毎に BEEP で止まる。これを 8 回。1 回 40 秒弱。最後に BEEP が 3 回鳴ってプロンプトが出たら終了。
  4. 保存した *.wav ファイルを Pocket Tools で SHARP バイナリ形式 (*.IMG) に変換 ("Convert wav file to binary imagefile + parameter file" を実行)。
  5. 1KB の IMG ファイルが 8 つできたと思うので、これを結合。コマンドプロンプトから、
    COPY /b INT01.IMG + INT02.IMG + INT03.IMG + INT04.IMG + INT05.IMG + INT06.IMG + INT07.IMG + INT08.IMG INTERNAL_ROM.IMG
    のようにして結合する。間違って *.CFG ファイルを指定しないように注意。これで内部 ROM イメージ INTERNAL_ROM.IMG (8KB) が完成。
  6. 2000~7FFF の領域のフィラーファイルを作成する。コマンドプロンプトから、
    fsutil file createnew FILLER.IMG 0x6000
    のようにしてフィラーファイル FILLER.IMG (24KB) を作る。
  7. 外部 ROM (8000~FFFF) を 8KB ずつ吸い出す。デジホリの blog にあった BASIC プログラムをちょっと改変したものを Pocket Tools を使って PC-1401 に転送。

    100 L=&80:H=&100:D=&20
    110 BEEP 2:FOR I=L TO H-D STEP D
    120 PRINT (I-L)/D:A=I*256:B=D*256-1
    130 CSAVE M A,A+B:BEEP 1
    140 NEXT I:BEEP 3
  8. 転送した BASIC プログラムを実行すると、最初に 2 回 BEEP が鳴る。これで準備完了。ENTER を押すと CSAVEM が始まるので、Audacity で録音して WAV 形式で保存 (EXT01.wav のような連番の名前にすると判りやすい)。8KB 毎に BEEP で止まる。これを 4 回。1 回 3 分半程度。最後に BEEP が 3 回鳴ってプロンプトが出たら終了。
  9. 保存した *.wav ファイルを Pocket Tools で SHARP バイナリ形式 (*.IMG) に変換 ("Convert wav file to binary imagefile + parameter file" を実行)。
  10. 8KB の IMG ファイルが 4 つできたと思うので、これを結合。コマンドプロンプトから、
    COPY /b EXT01.IMG + EXT02.IMG + EXT03.IMG + EXT04.IMG EXTERNAL_ROM.IMG
    のようにして結合する。間違って *.CFG ファイルを指定しないように注意。これで内部 ROM イメージ EXTERNAL_ROM.IMG (32KB) が完成。
  11. すべての ROM イメージを結合する。コマンドプロンプトから、
    COPY /b INTERNAL_ROM.IMG + FILLER.IMG + EXTERNAL_ROM.IMG pc1401mem.bin
    のようにして結合する。これで PC-1401 の ROM イメージ pc1401mem.bin (64KB) が完成。Pokecom GO は PC-1402 にも対応している。

Pokecom GO を一度実行して終了すると、Android 端末のどこかに [pokecom] フォルダができているので、[ROM] サブフォルダの中に pc1401mem.bin をコピーします。Pokecom GO を再度起動すれば PC-1401 のエミュレータが動作するようになります。

PC-1401 と PC-1402 にはメモリサイズ以外の相違はないので PC-1401 用の ROM をリネームすれば PC-1402 のエミュレータも動作するようになりますが、フリーエリアが PC-1401 のままの 3534 になります。ROM 内に RAM サイズが決め打ちで格納されているのだと思われます。

※ 実機が壊れた時のために ROM を吸い出しておく事をオススメします。


内部 ROM 吸出しのチューニング

PC-1402 はメモリが多いので、一度に転送する量を増やして、取り込む回数を減らす事ができます。

機種 H の値 L の値 D の値 データ量 回数
PC-1401&3A&00&8002 KB4 回
PC-1402&22&00&10004 KB2 回
&20008 KB1 回

プログラムの先頭にある変数 H / L / D の初期値を機種に合わせて書き換えてください。HL の値は RAM の先頭 + &200 くらいが目安です。



Tips

イロイロ。


ASCII コード表はどうなってるの?

こうなっています。8bit ですが、カナも英小文字もありません。

&00 の文字は NUL です。&20 の文字はスペースです。CHR$ でオレンジ色の場所のコードを指定するとエラーになります。


メモリマップはどうなってるの?

こうなっています。

PC-1401 PC-1402
内部 ROM 0000~1FFF
外部 ROM 8000~FFFF
RAM 3800~47FF 2000~47FF
VRAM 6000~60BF

RAM の特定の領域は決められた用途で使用されているため、基本的にユーザープログラムを置く事はできません。

PC-1401 PC-1402
フリーエリア 3800~45CF 2000~45CF
固定変数エリア 45D0 (Z) ~469F (A)
BASIC
先頭アドレスポインタ
L: 46E1
H: 46E2
BASIC
終了アドレスポインタ
L: 46E3
H: 46E4
ストリングバッファポインタ 46F7
変数ポインタ L: 46FC
H: 46FD
ストリングバッファエリア 4760 ~47AF
リザーブエリア -
SIO バッファアドレス -

VRAM はこうなっています。

リニアにはつながっておらず、8桁目を境にアドレスの指定が変わります。

開始 終了 開始 終了
1 600060049 60676063
2 60056009106062605E
3 600A600E11605D6059
4 600F60131260586054
5 60146018136053604F
6 6019601D14604E604A
7 601E60221560496045
8 602360271660446040

シンボルは 603C、603D と 607C に割り当てられています。

603C 603D 607C
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
STAT SML 小文字 カナ CAL RUN PRO HYP SHIFT DEF BUSY PRINT DE G RAD ( ) [M] E

次のプログラムを PC-1401/02 で実行すると、

100 WAIT 0: PRINT " "
110 CALL &05A2
120 POKE &6000,&FF
130 POKE &6027,&FF
140 POKE &6067,&FF
150 POKE &6040,&FF
200 GOTO 200
210 END 

最初と最後、8桁の境界に縦線が表示されます。

関連する非公開命令についても述べておきます。PEEK はアドレスで指定したメモリに格納されているデータを読み出します。

PEEK アドレス

POKE はアドレスで指定したメモリにデータを格納します。

POKE アドレス,データ[,データ][,データ]...

CALL は指定したアドレスから格納されている機械語プログラムを実行します。

CALL アドレス

プログラム中 (行番号 110) の CALL &05A2 は LCD を ON にするシステムサブルーチンを呼んでいます。VRAM を一括消去する最も簡単な方法は BASIC で PRINT " " を実行する事です。


ペリフェラルコネクタ (11ピン) のピンアサインは?

ペリフェラルコネクタ (11ピン) のピンアサインは以下の通りです。ピン番号は本体上から順に振っていますが、資料によってはシールドが #1、SEL1 (IB5) が #2...MTout2 が #12 になっているものがあります。

NO 端子 信号名 IN/OUT I/O
1 - MTout2 IN -
2 GND GND (+6V) -
3 VGG VGG (0V) -
4 FO1 Busy OUT OUT
5 FO2 Din OUT OUT
6 Xin MTin IN -
7 Xout MTout1 OUT -
8 IB8 Dout IN I/O
9 IB7 ACK IN I/O
10 IB6 SEL2 OUT I/O
11 IB5 SEL1 OUT I/O

通常のピンヘッダやブレッドボード用のジャンパーワイヤーを使って接続できます。


P⇔NP って何?

プリンタが接続されている時にP⇔NP(SHIFTENTER) を押すと、P というシンボルが表示され、計算過程や結果がプリンタで印字されるようになります (エラーは印字されません)。もう一度P⇔NPを押すと P のシンボルが消え、元に戻ります。


ROM バージョンを知るには?

PC-1401/02 の ROM バージョンは次のコマンドで調べる事ができます。

PEEK &8002

PC-401/02
16進数 19 00
10進数 25 0

システムサブルーチンのアドレスは?

システムサブルーチンは内部 RAM に取られている演算レジスタ (8 バイト) に値を入れて呼び出します。演算レジスタは X / Y / Z の他に DRA / DRB / DRC と呼ばれる事があります。

機種 X (DRA) Y (DRB) Z (DRC)
PC-1401/02 &10~&17 &18~&1F &20~&27

・数値の内部表現

数値演算の場合、演算レジスタには BCD 形式で値を格納します。例えば X レジスタに格納するにはこうなります。

&10 &11 &12 &13 &14 &15 &16 &17
H L H L H L H L H L H L H L H L
指数符号 指数部 仮数符号 仮数部 補正

整数 1 はこのようになります。

&10 &11 &12 &13 &14 &15 &16 &17
H L H L H L H L H L H L H L H L
00 00 10 00 00 00 00 00

整数 12 (1.2e+1) はこのようになります。

&10 &11 &12 &13 &14 &15 &16 &17
H L H L H L H L H L H L H L H L
00 10 12 00 00 00 00 00

整数 123 (1.23e+2) はこのようになります。

&10 &11 &12 &13 &14 &15 &16 &17
H L H L H L H L H L H L H L H L
00 20 12 30 00 00 00 00

実数 0.0123 (1.23e-2) はこのようになります。

&10 &11 &12 &13 &14 &15 &16 &17
H L H L H L H L H L H L H L H L
99 80 12 30 00 00 00 00

整数 -123 (-1.23e+2) はこのようになります。

&10 &11 &12 &13 &14 &15 &16 &17
H L H L H L H L H L H L H L H L
00 28 12 30 00 00 00 00

・文字列の内部表現

例えば、X レジスタを使用する文字列の内部表現は次のようになっています。先頭 4 バイトは未使用です。

&10 &11 &12 &13 &14 &15 &16 &17
- &D0 (固定) 文字列の格納されているアドレス (LH) 文字列長

&4200 に "ABC" という文字列が書き込まれている場合、

アドレス &4200 &4201 &4202 &4203 &4204 &4205 &4206 &4207
16進値 41 42 43
文字 A B C

X レジスタの内容は次のようになります。

&10 &11 &12 &13 &14 &15 &16 &17
- - - - D0 00 42 03

・システムサブルーチン

システムサブルーチンのアドレスは ROM バージョンによってバラバラです。

種別 機能 8002 の値
19 00



加算 8433
減算 844A
乗算 8454
除算 845E
べき乗 8467


EXP 847F
SIN 848D
COS 8494
TAN 849B
ASN 84A2
ACS 84A9
ATN 84B0
DEG 850A 84F1
DMS 8511 84F8
ABS 94CE 94F3
INT 94AA 94D1
SGN 8558 853F
RND 8518 84FF
SQR 8486
LOG 8478
LN 8470
文字 ASC 8659
CHR$ 867A 8661
STR$ 86D3 86BA
VAL 8728 870F


<> 864A 8631
< 85D7 85BE
> 85F2 85D9
= 8636 861D
<= 8577 855E
>= 8584 856B

<> 8645 865C
< 858C 8553
> 858E 8565
= 85FA 8551
<= 8653 865A
>= 8527 8559
表示 LCD ON 05A2
LCD OFF 059E
キー スキャン 048F
サーチ 10進→2進変換
符号あり
1659
10進→2進変換
符号なし
1664
2進→10進変換
符号あり
13CC
2進→10進変換
符号なし
13C5
行番号サーチ
2進表現
BAF9 BA87
変数のアドレスサーチ
単純変数
1AF4
変数のアドレスサーチ
配列変数
1809
印刷 プリンタリセット A8F2 A88E
印字実行 804E

※ 引用:


CE-126P 固有の文字を印字するには?

PC-1401/02 では CE-126P 固有の文字 (本体の LCD では表示できない文字) を出力する事が可能です。

機械語サブルーチンを呼んでコード表を印字するコードを書いてみました。PC-1401/02 に CE-126P を接続した状態で次のプログラムを実行してみてください。プログラムリストの最初の赤字の部分は ROM バージョンによって書き換える必要があります。

100 D=&80:E=&4E
110 I=&A88E
120 O=&3A00
130 F=&3A:G=&0B
140 R=&10
150 POKE O+0,&10,F,G,&00,&17,&80+R,&18,&78
160 POKE O+8,D,E,&37,&20,&20,&20,&20,&20
170 POKE O+16,&20,&20,&20
180 CALL I
190 FOR Y=0 TO 15
200 FOR X=0 TO 15
210 C=X*16+Y
220 IF C=0 OR C=8 OR C=10 OR C=13 OR C=14 OR C=15 OR C=39 OR C=160 LET C=32 
230 POKE O+&13+X,C
240 NEXT X
250 CALL O
260 NEXT Y
270 END

コード表が印字されます。

呼ばれている機械語ルーチンは次のようになっています。&3A0B からの 24 バイトを演算レジスタ X/Y/Z にコピーし、印字実行システムサブルーチンをコールしています。

LIDP    &3A0B
LII     &17
LP+10   
MVWD    
CALL    &804E
RTN     

CE-126P の特殊文字は次の通りです。

16進 10進 説明
00 0 ヌル
08 8 印字データメモリクリアコマンド
0A 10 用紙送りコマンド
0D 13 印字コマンド
0E 14 (不明)
0F 15 (不明)
20 32 スペース
27 39 スペース
A0 160 スペース

カセットインターフェイス経由で保存したファイルを読み込めないのだけれど?

多くの場合、読み込み (ロード) が悪いのではなく、保存 (セーブ) したファイルに問題があるので、[マイクのプロパティ] でマイク音量を最大にし、マイクブーストも最大にして保存してみましょう。

[マイクのプロパティ] に辿り着くには、

  1. [ファイル名を指定して実行] (〔Win〕 +〔R〕) で "mmsys.cpl ,1" を実行。
  2. 目的のマイクデバイスをクリックし、右下の [プロパティ] ボタンを押下。

とするのが最も簡単です。録音レベルやマイクブーストは [レベル] タブで設定しますが、マイクブーストの設定が存在しない事もあります。

マイクブースト機能がなくても AGC (Auto Gain Control) で代用できる場合があります。

PC (のサウンドカード) に何らかの増幅機能がないと取り込みは難しいと思います。増幅機能のある USB サウンドカードを購入するか、マイクアンプを使うしかないと思います。

音質が悪い *.wav ファイルをサウンド編集ソフトでいじってもあまり状況は好転しないと思いますが、ERROR 8 で失敗するレベルの *.wav ファイルなら Pocket Tools で BASIC ソースや SHARP バイナリに変換する事はできるかもしれません。変換が可能だった場合には、それを Pocket Tools で *.wav 形式にすれば取り込めると思います。

ERROR 6? PC-1402 用のソフトを PC-1401 にロードしようとしていませんか?それは容量不足のエラーです。


エラーコードの意味は?

次のようになっています。

エラーコード エラー内容
1文法エラー
2演算エラー
3DIM / 範囲チェックエラー
4ライン (行番号/ラベル) エラー
5ネスト (深み) エラー
6メモリエラー (容量オーバー)
7フォーマット (書式) エラー
8入出力エラー
9その他のエラー

ハードケースの内側にエラーコードが載っています。




ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。

メニュー: