SHARP PC-1245/50/51/55 の使い方

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

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



SHARP PC-1245/50/51/55 シリーズ諸元

SHARP PC-1245 は PC-1250/51/55 (以下 PC-125x と略します) の廉価版です。記事中で主に扱っているのは PC-1245 ですが、PC-125x でもこのページの記事がほぼそのまま通用すると思います。

スペック

SHARP PC-1245/50/51/55 のスペックは以下の通りです。

機能 PC-1245 PC-1250 PC-1251 PC-1255
CPU SC61860 (576KHz)
RAM 2.2KB 4.2KB 10.2KB
液晶ディスプレイ 16桁 / 1行
(5x7 ドットマトリクス)
24桁 / 1行
(5x7 ドットマトリクス)
インターフェィス ペリフェラルポート 11ピン (2.54mm ピッチ)
バッテリー CR2032 x 2
消費電力 0.03W
本体寸法 135(W)×70(D)×9.5(H)mm
本体重量 約105g 約115g
価格 ¥17,800 ¥22,800 ¥29,800 ¥35,800
発売年 1983 1982 1983

PC-1245 の取扱説明書では本体重量は約115g と記載されているのですが、実測してみると約105gでした。PC-125x に比べて液晶も 2/3 ですし、メモリ基板もないので軽くて当たり前ですよね。



使い方

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


電池の入れ方

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

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

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


電源の ON / OFF

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

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


モード切替

PC-1245 には 2 つの動作モードがあります。PC-125x には 3 つの動作モードがあります。

モード スライドスイッチ 説明
RUN モード RUN 電卓として使ったり、プログラムの実行を行います。
PROGRAM モード PRO プログラムの入力を行います。
RESERVE モード
(PC-125x)
RSV リザーブキーへの登録を行います。

モード切替は本体右上のスライドスイッチで行います。


ファイルの操作

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

プログラムの実行

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

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

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

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

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

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

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

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

CLOAD ["ファイル名"]

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

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

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

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

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

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

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


[電卓] モード

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

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

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

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

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

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

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

キー キー入力 意味 備考
ABS ABS (絶対値) ABS value
ACS ACS (逆余弦: arccos) ACS value
ASN ASN (逆正弦: arcsin) ASN value
ATN ATN (逆正接: arctan) ATN value
COS COS (余弦) COS value
DEG DEG (度分秒→10進数度) DEG value
DMS DMS (10進数度→度分秒) DMS value
EXP EXP (指数) EXP value
INT INT (整数化) INT value
LOG LOG (常用対数: log10) LOG value
LN LN (自然対数: loge) LN value
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)
ただし、この場合は小数部の値によって乱数の発生に差が出る。
SGN SGN (符号関数) SGN value
X > 0 1
X < 0 -1
X = 0 0
PI PI (円周率) PI ※擬似変数
SIN SIN (正弦) SIN value
SQR SQR (平方根) SQR value
TAN TAN (正接) TAN value

編集

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

キー キー入力 意味 備考
/ 行アップダウン 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 変数

次のプログラムをCL3DEFA で実行すると、

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

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


リザーブキー (PC-125x)

PC-1245 ではSHIFTAとキーを押す事で "INPUT" が入力されますが、PC-125x ではSHIFTと組み合わせるA の 18 キーを自由に定義する事ができます。つまりは簡易的なキーボードマクロです。

右上のスライドスイッチを RSV の位置 (RESERVE モード) にしてSHIFTAINPUTENTERと登録すると、他のモードで PC-1245 と同様にSHIFTA で "INPUT" が入力できます。

RESERVE モードでSHIFTAとすると、現在の登録内容を確認できます。この状態でを押すと、内容を変更できるようになります。すべてのリザーブキーを削除するには、RESERVE モードで NEW ENTERを実行します。

RESERVE モードで CSAVE するとリザーブキーの設定内容を保存する事ができます。設定を読み込むには RESERVE モードで CLOAD します。

リザーブキーのためのメモリは 48 バイト用意されています。少ないように思えるかもしれませんが、BASIC の命令は 1 バイトで表す事ができます。



ハードウェア

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

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

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

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

See also:


ポケ POWER +

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

See also:


プリンタ/マイクロカセットレコーダー CE-125(S)

CE-125(S) はプリンタ/マイクロカセットレコーダーです。CE-125 と CE-125S は基本的にカラーリングが異なるだけです。

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" で環境設定を行います。お持ちの機種のコメントをアンコメントします。PC-1245 の場合、赤字の部分を追加します。"SHARPPC=1251" を有効にしても構いません。

rem set SHARPC=1100
rem set SHARPC=1246DB
rem set SHARPC=1211
set SHARPC=1245
rem set SHARPC=1251
rem set SHARPC=1260
rem set SHARPC=1262J

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

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

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

リザーブキーの保存と読込 (PC-125x)

リザーブキーを記録した WAV 形式ファイルは Wav2rsv.cmd を使って SHARP バイナリ形式に変換できます。リザーブキーの SHARP バイナリは Rsv2wav.cmd を使って WAV 形式ファイルへ変換する事ができます。

いずれもデフォルトではメニューに登録されていませんので、手動で登録する必要があります ([Edit | Add file...] でスクリプトを指定)。


Audacity

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

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

取り込み手順は、

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

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

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


Pokekom Go

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

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

PC-1245 での ROM イメージ作成手順を以下に示します。効率は良くありませんが、無改変で PC-125x の ROM 吸い出しも行えます。作業は Windows 上で行います。

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

    100 H=&C1:L=&A0
    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 回 1 分弱。最後に 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~3FFF の領域のフィラーファイルを作成する。コマンドプロンプトから、
    fsutil file createnew FILLER.IMG 0x2000
    のようにしてフィラーファイル FILLER.IMG (8KB) を作る。
  7. 外部 ROM (4000~7FFF) を 4KB ずつ吸い出す。デジホリの blog にあった BASIC プログラムをちょっと改変したものを Pocket Tools を使って PC-1245 に転送。

    100 L=&40:H=&80:D=&10
    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 のような連番の名前にすると判りやすい)。4KB 毎に BEEP で止まる。これを 4 回。1 回 3 分半程度。最後に BEEP が 3 回鳴ってプロンプトが出たら終了。
  9. 保存した *.wav ファイルを Pocket Tools で SHARP バイナリ形式 (*.IMG) に変換 ("Convert wav file to binary imagefile + parameter file" を実行)。
  10. 4KB の IMG ファイルが 4 つできたと思うので、これを結合。コマンドプロンプトから、
    COPY /b EXT01.IMG + EXT02.IMG + EXT03.IMG + EXT04.IMG EXTERNAL_ROM.IMG
    のようにして結合する。間違って *.CFG ファイルを指定しないように注意。これで内部 ROM イメージ EXTERNAL_ROM.IMG (16KB) が完成。
  11. すべての ROM イメージを結合する。コマンドプロンプトから、
    COPY /b INTERNAL_ROM.IMG + FILLER.IMG + EXTERNAL_ROM.IMG pc1245mem.bin
    のようにして結合する。これで PC-1245 の ROM イメージ pc1245mem.bin (32KB) が完成。

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

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


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

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

機種 H の値 L の値 D の値 データ量 回数
PC-1245&C1&A0&4001 KB8 回
PC-1250
PC-1251&BA&00&8002 KB4 回
PC-1255&A2&00&10004 KB2 回
&20008 KB1 回

プログラムの先頭にある変数 H / L / D の初期値を機種に合わせて書き換えてください。HL の値は RAM の先頭 + &200 くらいが目安です。PC-1245/50 は 1KB の転送でギリギリなので変更できません。



Tips

イロイロ。


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

こうなっています。7bit です。英小文字やカナはありません。

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


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

こうなっています。

PC-1245/50 PC-1251 PC-1255
内部 ROM 0000~1FFF
外部 ROM 4000~7FFF
RAM C000~C7FF B800~C7FF A000~C7FF
VRAM F800~F8BF

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

PC-1245 PC-1250 PC-1251 PC-1255
リザーブエリア - C000~C02F B800~B82F A000~A02F
フリーエリア C000~C5CF C030~C5CF B830~C5CF A030~C5CF
固定変数エリア C5D0 (Z) ~C69F (A)
BASIC
先頭アドレスポインタ
L: C6E1
H: C6E2
BASIC
終了アドレスポインタ
L: C6E3
H: C6E4
ストリングバッファポインタ C6F7
変数ポインタ L: C6FC
H: C6FD
ストリングバッファエリア C760 ~C7AF
SIO バッファアドレス -

PC-125x の RAM の先頭 48 バイトはリザーブキー用に使われています。先頭 48 バイトを CSAVEM / CLOADM する事でリザーブキーの内容を保存/読込できます。

'PC-1250
CSAVEM &C000,&C02F 

'PC-1251
CSAVEM &B800,&B82F 

'PC-1255
CSAVEM &A000,&A02F 

VRAM はこうなっています。

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

開始 終了 開始 終了
1 F800F80413F87BF877
2 F805F80914F876F872
3 F80AF80E15F871F86D
4 F80FF81316F86CF868
5 F814F81817F867F863
6 F819F81D18F862F85E
7 F81EF82219F85DF859
8 F823F82720F858F854
9 F828F82C21F853F84F
10F82DF83122F84EF84A
11F832F83623F849F845
12F837F83B24F844F840

シンボルは F83C と F83D に割り当てられています。

F83C F83D
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
DE G P DEF E RAD SHIFT BUSY

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

10 WAIT 0: PRINT " "
20 CALL &11E0
30 POKE &F800,&FF
40 POKE &F83B,&FF
50 POKE &F87B,&FF
60 POKE &F868,&FF
70 POKE &F867,&FF
80 POKE &F840,&FF
90 GOTO 90
100 END 

最初と最後、12桁の境界に縦線が表示されます。PC-125x でしか見えない領域にアクセスしてもエラーにはなりません。

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

PEEK アドレス

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

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

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

CALL アドレス

プログラム中 (行番号 20) の CALL &11E0 は 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

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

次のコードは ピン #3 とピン #11~#8 / #4 / #5 間に繋がれた LED (抵抗を入れてください) で L チカします。WAIT 32 は約 0.5 秒です。

100 CLEAR : WAIT 0
110 POKE &C400,&12,&5D,&61,&00,&DD,&37
120 POKE &C406,&12,&5D,&60,&FF,&DD,&37
130 POKE &C40C,&12,&5E,&61,&00,&5F,&37
140 POKE &C412,&12,&5E,&60,&FF,&5F,&37
150 "A":B=&10
160 GOSUB 390: PRINT "IB5:ON"
170 GOSUB 410: PRINT "IB5:OFF"
180 GOTO 160
190 "S":B=&20
200 GOSUB 390: PRINT "IB6:ON"
210 GOSUB 410: PRINT "IB6:OFF"
220 GOTO 200
230 "D":B=&40
240 GOSUB 390: PRINT "IB7:ON"
250 GOSUB 410: PRINT "IB7:OFF"
260 GOTO 240
270 "F":B=&80
280 GOSUB 390: PRINT "IB8:ON"
290 GOSUB 410: PRINT "IB8:OFF"
300 GOTO 280
310 "G":F=&01
320 GOSUB 430: PRINT "FO1:ON"
330 GOSUB 450: PRINT "FO1:OFF"
340 GOTO 320
350 "H":F=&02
360 GOSUB 430: PRINT "FO2:ON"
370 GOSUB 450: PRINT "FO2:OFF"
380 GOTO 360
390 POKE &C403,B: CALL &C400: WAIT 32
400 RETURN 
410 POKE &C409,&FF-B: CALL &C406
420 RETURN 
430 POKE &C40F,F: CALL &C40C: WAIT 32
440 RETURN 
450 POKE &C415,&FF-F: CALL &C412
460 RETURN 

一度 RUN で実行すると、次回からは次の定義付けキーを押す事でそれぞれのピンに繋がれた LED を L チカできます。

定義付けキー ピン番号
DEFA #11 (IB5)
DEFS #10 (IB6)
DEFD #9 (IB7)
DEFF #8 (IB8)
DEFG #4 (FO1)
DEFH #5 (FO2)

呼ばれている 4 つの機械語ルーチンは次のようになっています。

LIP     $5D     12 5D 
ORIM    $00     61 00
OUTB            DD
RTN             37

LIP     $5D     12 5D
ANIM    $FF     60 FF
OUTB            DD
RTN             37

LIP     $5E     12 5E 
ORIM    $00     61 00
OUTF            5F
RTN             37

LIP     $5E     12 5E
ANIM    $FF     60 FF
OUTF            5F
RTN             37

ORIM と ARIM のオペランドを直接書き換えて特定のポートの HIGH / LOW を切り替えています。なお、簡易的な L チカとして、ピン #7 に LED を繋ぎ、BEEP で音を鳴らす方法があります。


P⇔NP って何?

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


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

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

PEEK &7FFF

PC-1245 と PC-1255 は常に同じ値が返ると思います。

PC-1245 PC-1250/51 PC-1255
16進数 01 F0 00 03
10進数 1 240 0 3

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

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

機種 X (DRA) Y (DRB) Z (DRC)
PC-1245/5x &20~&27 &28~&2F &30~&37

・数値の内部表現

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

&20 &21 &22 &23 &24 &25 &26 &27
H L H L H L H L H L H L H L H L
指数符号 指数部 仮数符号 仮数部 補正

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

&20 &21 &22 &23 &24 &25 &26 &27
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) はこのようになります。

&20 &21 &22 &23 &24 &25 &26 &27
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) はこのようになります。

&20 &21 &22 &23 &24 &25 &26 &27
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) はこのようになります。

&20 &21 &22 &23 &24 &25 &26 &27
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) はこのようになります。

&20 &21 &22 &23 &24 &25 &26 &27
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 バイトは未使用です。

&20 &21 &22 &23 &24 &25 &26 &27
- &D0 (固定) 文字列の格納されているアドレス (LH) 文字列長

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

アドレス &C400 &C401 &C402 &C403 &C404 &C405 &C406 &C407
16進値 41 42 43
文字 A B C

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

&20 &21 &22 &23 &24 &25 &26 &27
- - - - D0 00 C4 03

・システムサブルーチン

システムサブルーチンのアドレスは PC-1245 と PC-125x でほぼ共通です。

種別 機能 PC-1245 PC-1250/51 PC-1255
01 F0 00 03



加算 0B50
減算 0B67 0B69
乗算 0B76
除算 0B7F
べき乗 0B7F


EXP 0BC1
SIN 0B96
COS 0B9C
TAN 0BA2
ASN 0BAF
ACS 0BB5
ATN 0BBB
DEG 7EE7 7FC1 7FB7 7FB1
DMS 0A3A
ABS 0B26
INT 0CDE
SGN 0B2B
RND 7E6B 7F45 7F3B 7F35
SQR 0B8F
LOG 0BCD
LN 0BC7
文字 ASC 0F6A
CHR$ 0F8C
STR$ 0EBE
VAL 0F1C


<> 0CCC
< 0CAD
> 0CA9
= 0C9F
<= 0CBF
>= 0CDA

<> 0BD7
< 0C54
> 0C56
= 0BE0
<= 0C46
>= 0C3D
表示 LCD ON 11E0
LCD OFF 11E5
キー スキャン 1F44
サーチ 10進→2進変換
符号なし
10E0
印刷 印字開始 7D12 7DFE 7DE9 7DDC
印字終了 7D1C 7E08 7DF3 7DE6
データ書込 7B91 7C7D 7C68 7C58

※ 引用:


CE-125(S) / CE-126P 固有の文字を印字するには?

PC-1245 に CE-125(S) を接続した状態で次のプログラムを実行してみてください。プログラムリストの最初の 3 行は機種や ROM バージョンによって書き換える必要があります。

100 D=&7B:E=&91
110 I=&7D12
120 O=&7D1C
130 POKE &C400,&02,&00,&79,D,E,&37
140 CALL I
150 FOR Y=0 TO 15
160 FOR X=0 TO 15
170 C=X*16+Y
180 IF C=0 OR C=8 OR C=10 OR C=13 OR C=160 LET C=32 
190 GOSUB 260
200 NEXT X
210 C=&0D
220 GOSUB 260
230 NEXT Y
240 CALL O
250 END
260 POKE &C401,C 
270 CALL &C400
280 RETURN

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

呼ばれている機械語ルーチンは次のようになっています。

LIA     $00
JP      $7B91
RTN     

CE-125(S) の特殊文字は次の通りです。

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

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

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

コード表を出力するには、行番号 180 の記述を少し変更する必要があります。

180 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 

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

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

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

  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-1251/55 用のソフトを PC-1245/50 にロードしようとしていませんか?それは容量不足のエラーです。


久しぶりに使ってみようと思ったら液晶が真っ黒なんだけど?

残念ながら液晶がダメになってしまったようです。交換用液晶がありますので取り換えてみては?

See also:


他機種用の交換液晶はないの?

いくつかあります。

See also:



エラーコードの意味は?

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

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

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




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

メニュー: