/* POCKET -- SHARP PORTABLE COMPUTER PC-1450 エミュレータ */
概要
bsd (たぶん?) unix で動作する PC-1450 のエミュレータです。
PC-1450 の CPU である SC61860 をフルエミュレートしているので、
アセンブラで書いたプログラムも動作します。(動作するハズです ^^;)
動作環境
・BSD互換UNIX で動きます。
(NEWS-OS [34].x, 386BSD, FreeBSD, SunOS 4.1.3で動作が確認されています。)
・画面サイズ 96x24 以上のansi互換端末での実行をお勧めします。
コンパイルおよび実行
・Makefile をテキトーに編集して make すると、pocket という
実行ファイルが生成されます。
・pocket と入力すると、エミュレータが動きます。
・ctrl-d を押すと終了します。
・端末を raw モードに変更しているので、ctrl-C (intr) や
ctrl-Z (susp) を押しても止まりません。
本物との相違
・あまり速くありません。10MIPS 程度のマシンで動作させて、
やっと本物とトントンの速度で動くと思います。
・キーボード入力は鈍感です。ゆっくり、根気よく、丁寧に入力してください。
・カセットテープやプリンタなどの I/O は使えません。
・SAVE を実行すると、カレントディレクトリの sc.out にプログラムを
書き出します。ファイルが存在していた時は上書きします。
・LOAD を実行すると、カレントディレクトリの sc.inp からプログラムを
読み込みます。ファイルがないときはなにもしません。
キーの割り当て
^d (ctrl-d) は POWER スイッチを OFF にすることに対応します。
(つまり pocket を終了します。)
[ 0-9a-z] は、そのまま [ 0-9A-Z] に対応します。
+, -, *, / も、そのまま +, -, *, / に対応します。
^n, ^p, ^b, ^f はカーソル移動キーに対応します。
^c は BRK, ^l は C/CE, ^m は ENTERキーに対応します。
大文字アルファベットは特殊キーに対応します。
キーの対応表
H → hyp S → sin C → cos T → tan F → F<->E
X → HEX G → DEG N → ln L → log I → 1/x | → STAT
E → EXP ^ → x^y R → SQRT Q → x^2 ( → ( ) → )
> → x->M < → RM P → M+ % → +/- . → . = → =
A → CAL B → BASIC Z → SHIFT D → DEF M → SML U → SHIFT
K → カナ [ → ゛ \ → ー
操作例
% make コンパイル
% pocket 実行
3 0 S sin(30) を計算します [ 3 0 sin ]
6 9 U ) 69の階乗を計算します [ 6 9 SHIFT ) ]
B RUNモードに移行します [ BASIC ]
o p e n ^M
l o a d ^M sc.inp を BASICプログラムとしてロードします
r u n ^M プログラムを実行します
バグ
・エミュレーションが十分ではありません。
・キー入力がなくてもスリープせずに、全速力で疾走することがよくあります。
・ゲームなどの画面書き換えにプログラムが追従しないことがよくあります。
・^d を押しても終了しないことがときどきあります。
今後の予定
X-Windowに対応。(笑)
同様のプログラムの HP 200LX版を作ること。(えー、そんなんできるんかぁ)
おことわり
このソフトは鋭い会社から配布許可をもらってません。
私的な範囲でお楽しみください。
pc1450.bin は、PC-1450 のメモリイメージです。
(注.配布アーカイブには含まれていません)
ttmode.c は、Ng-1.3.1 からかっぱらいました。
samples/planet.bas は、中野主一さん原作のプログラムを移植した物です。
- PC1450エミュレータのアーカイブファイル
ただし、このアーカイブにはPC-1450のメモリイメージが含まれていません。
このプログラムの実行にはPC-1450のメモリイメージが必要ですので、
お手持ちのPC-1450のROMの内容をダンプして、UNIXマシンに
転送しておいてください。