インターネット&PC120%活用(アセンブラ、DOS、Windows、旧型PCの活用研究)

FM-8(FM-7)復活作戦-エミュレーター使用(RS232Cプロジェクト完結編) CP/Mの巻

============================================
長いタイトルがついていますが、Windowsマシン上にFM-7/8を復活させようという試みです。
(正直なところ、Windows上のエミュレーション環境の方が、実機を使うよりいろんな意味で数倍快適です。)

本ページは長きに渡った(足掛け5年?)RS232Cプロジェクト(
RS232Cによるシリアル通信)の完結編
でもあります。
============================================

1 エミュレーター

1) FM7/8のエミュレーター
FM系ユーザーにはパワーユーザーの方が非常に多くいらっしゃって、諸先輩方のPC誌への投稿記事
で、筆者もいろいろ勉強させてもらいました。
そのパワーユーザーの力が今は、エミュレーターに注がれており、優れたFM-7/8のエミュレーターが
各種リリースされています。
著作権の問題で、実機を持っていないとエミュレーターは使えないのですが、オリジナルの互換ROM作成
という企画もでており(Appllo氏により一部実現)、実機を持っていない方(だいたい実機所有者は今や
おじさんのはず。40代でしょう。 FM-7AVの世代でも30代後半に差し掛かっているのでは?)でも
往年のFM7/8を楽しめる日が近いと言えましょう。
ゲームだけでなく、PCの原理を理解する素材としては、FM7/8などは非常にいい素材なので、
今後、エミュレーターとともに、FM-7/8(およびそのエミュレーター)解析のページなども充実していくことを
願ってやみません。

とか、やたら前置きが長くなりましたが、FM-7/8エミュレーターについては、
Apollo氏のサイトが非常に
詳しいのでそちらをごらん下さい。また、「
パソコン活用5番概/Link集」にも他の各種エミュレーターの
サイトを紹介してありますので参照して下さい。

2) CPMエミュレーター
FM-7/8でZ80カードをつけて、CP/Mを使っていた方もいるかと思います。
DOS上で使うCP/Mエミュレーターも結構たくさんあります。(特にUSに)
当時の高額なコンパイラなどが無償提供されていますし、Windows上(DOS窓上)にCP/Mの
エミュレート環境を構築し、昔つくったプログラムなど動かしてみたらいかがでしょうか。
CP/Mエミュレーターは
VectorでDOS用のものを探して見てください。
海外のサイトについては、「
Free Compiler」にいくつかまとめました
ので、そこから探してみて下さい。

かなり不親切な情報提供ですみません。時間があれば、もう少し情報を追加します。

2 RS232Cによるデータの移動

エミュレート環境ができたら、あとは実機からのソースファイル、実行ファイル等の移動です。
筆者が仕事やら、子供の世話の合間をぬって5年かけてようやく(ほぼ)完成をみたプロジェクトが
このRS232Cによるデータ移動プロジェクトです。(5日で終わる予定がのびのびで5年になってしまった。
おお、その間に最近ではRS232C用シリアルポートのないPCが出てきているではないか!!)
ほぼ、といったのは実はまだ70%のレベルなのですが、早くしないとRS232Cを使えないPCが増え
そうなので、とりあえず途中までの成果をまとめておきます。

1) FM-7/8エミュレーター対応
FM-7/8のプログラムをWindows上でエミュレーターを使って動かす方法については、
FM-7/8復活作戦 FM-7/8エミュレーター(ROM抜き)にて解説します。

2) CPMエミュレーター

実機でうごいている実行ファイルを、RS232CでWindows機に転送して、Windows(DOS窓)上で実行する
までの手順を説明します。

例として、3乗根を求めるプログラム(ファイル名 3jokon.com  1.0〜9.9までの3乗根を表示します)
まず実機(FM-8上のCP/M)での実行画面です。


(1) CP/MエミュレーターとRS232Cシリアル通信用プログラム等の準備
CP/Mエミュレーターは、上記サイトで探してみて下さい。
今回ここでは、村上敬司氏のCPMエミュレーターを使います。

RS232Cシリアル通信用プログラムは、バイナリーファイルを受信できるものを用意して下さい。
テキストモードでしか受信できないものは使えません。
A) 適当なフリーソフトを探す。->いろいろあると思います。一番おすすめ。
B) 自作してしまう。->偉い!。多少腕に覚えがあれば、これが早いかも。
C) 筆者の自作ソフト(serial020)を使う(VB4です)。−>ありがとうございます。
ここでは、当然C)の自作ソフトを使います。「
パソコン活用研究5番街/RS232C通信プログラム」を
参照して下さい。

それから、バイナリエディターもGETしておいて下さい。

(2) シリアル通信

(A) シリアルコネクタの結線
まず、FM-7/8とWindowsマシンのシリアルコネクタを結線します。専用のシリアルケーブルなどは
ないので、小型のワニ口クリップなどを利用して下さい。
結線はいたって簡単で、以下の通りです。
FM-7/8     WindowsDOS/V)
GND ----------GND
TXD(送信)-----RXD(受信)
RTS,CTSは自己結線

RS232Cによるシリアル通信にもう少し詳細の説明がありますので、参照して下さい。


(B) まず、受信側(Windows側)でRS232Cシリアル通信プログラムを起動して下さい。
筆者のserial020では以下のようにして下さい。
(ア) 通信条件の設定(これは自由ですが、今回の一例をあげます)
Baud Rate 600 (もっと早くてもいいですが、とりあえず600で)
Data Bits 8
Stop Bits 1
Parity 無し
Flow Control NON
Binary Mode チェック(ON)

(イ) あとは「Setting」ボタンをクリックしておしまいです。データの受信待ち状態で待機します。

(C) 次に、CP/M側の送信条件の設定です。CP/Mでの送信条件はFM-8スタンドアロン環境の条件が
そのまま引き継がれるようなので、まずFM-8のROMモードで以下のように設定して下さい。

DIPスイッチ 2、6番ON にします。
次にBASICで以下のプログラムを実行して下さい。
10 OPEN "O", #1, "COM0:S8N1"
20 ClOSE

これで、FM-8はボーレート600、データ長8ビット、パリティ無し、ストップビット1に設定されます。
その後、CP/Mを起動して下さい。

(D) CP/M上で3jokon.com を送信します。
以下のようにコマンドを打って下さい。
A> STAT PUN:=:TTY:
A> PIP PUN:=3jokon.com

(E) 受信とファイルの保存
serial020の場合は、受信中は受信バイト数を表示します。
特に受信完了のサインは出ませんが、受信バイト数のカウントアップが終われば、受信完了です。
「ファイル送信:保存:読み込み」をクリックすると、ファイル送信:保存:読込用のフォームが現れます
ので、ファイル名を決めて、「バイナリー保存」をクリックして下さい。

(3) バイナリエディタで編集して実行
CP/MのPIPコマンドで送信すると、ヘッダーとフッターに余計なデータが付加されています。
ヘッダーの00の部分を削除して下さい。(以下の27hまで削除)

フッターは1A 00 00 .............00 を削除して下さい。1AはCP/Mの送信終了の合図のデータです。


これで、編集したものを、拡張子 .cpmで保存して下さい。(村上氏のエミュレーターは、拡張子 .cpmの
ファイルを実行ファイルとしてエミュレートする。補足を参照して下さい。)

あとは、エミュレーターで実行です。(実行の様子は以下の通り。エミュレーターについては補足を参照)

Microsoft(R) Windows 98
   (C)Copyright Microsoft Corp 1981-1998.

C:\WINDOWS>e:

E:\>cd e:\cpm06

E:\cpm06>cpm 3jokon

*1 -- 10 NO 3JOKON WO DASU!!
 0 :   .0000  .4642  .5848  .6694  .7368  .7937  .8434  .8879  .9283  .9655
 1 :  1.0000 1.0323 1.0627 1.0914 1.1187 1.1447 1.1696 1.1935 1.2164 1.2386
 2 :  1.2599 1.2806 1.3006 1.3200 1.3389 1.3572 1.3751 1.3925 1.4095 1.4260
 3 :  1.4422 1.4581 1.4736 1.4888 1.5037 1.5183 1.5326 1.5467 1.5605 1.5741
 4 :  1.5874 1.6005 1.6134 1.6261 1.6386 1.6510 1.6631 1.6751 1.6869 1.6985
 5 :  1.7100 1.7213 1.7325 1.7435 1.7544 1.7652 1.7758 1.7863 1.7967 1.8070
 6 :  1.8171 1.8272 1.8371 1.8469 1.8566 1.8663 1.8758 1.8852 1.8945 1.9038
 7 :  1.9129 1.9220 1.9310 1.9399 1.9487 1.9574 1.9661 1.9747 1.9832 1.9916
 8 :  2.0000 2.0083 2.0165 2.0247 2.0328 2.0408 2.0488 2.0567 2.0646 2.0724
 9 :  2.0801 2.0878 2.0954 2.1029 2.1105 2.1179 2.1253 2.1327 2.1400 2.1472 STOP


E:\cpm06>

(補足) 村上氏のCP/Mエミュレーターについて。同梱のドキュメントからの抜粋です。

2.使い方

 まず、CP/MのプログラムをMS-DOSに持ってきます。このとき、拡張子".com" を
".cpm" にしておく必要があります。
 CP/Mのプログラムを実行するには、第一引数をCP/Mのプログラム名とし、
その後にCP/Mのプログラムに与えるパラメータを書きます
cpm プログラム名 パラメータ...
つまり、CP/Mのコマンドラインの前に"cpm" を付けたようなかっこうになります。
 例えば、カレントディレクトリにある zsid.cpm を使って test.com デバッグする
には、次の様にします。(test.com を実行するときには拡張子を.cpm にします)
cpm zsid test.com
 また、他のディレクトリにあるCP/Mプログラムも実行することができます。
cpm b:\cpm\turbo

 

TOP Page

 


inserted by FC2 system