3チップ構成68Kマイコンの構想(その2) [68K]
前回の記事で「68KとPICの連携処理のために68Kのreset命令が使えそう」と書きましたが、実験して確かめてみました。
使っている68KはCMOS版ではないため、普段使っているブレッドボード用の電源が容量不足だったり、他にもハード的な問題があったりしましたがやっと安定に動いているように見える状態になりました ^^;
68KとPICの連携処理の確認の話に戻すとZ80の3チップ構成のPic24CPMマイコンの時とほぼ同様な処理で実験してみました。
68KとPICの処理の概要は次のとおりです。
最初はコンソール出力の実験で68K側の処理は下記のソースのように'Hello.'の文字列をコンソールへ出力要求します(定番ですね)。
アセンブル環境はEASy68Kを使っています。
68Kの'Hello.'出力処理
PIC側は自作のpicleコンパイラを使い、Pic24CPMマイコンのBIOS処理を流用し不要な部分を削除して使っています。
上記の68Kのソースのアセンブル結果(Sレコードフォーマット)をバイナリ変換後、MemWR()ステートメントへの自動変換処理を通してpicleのソースに埋め込んでいます。
試験実行時のログが下記でpicleソースを表示後、runしています。想定通り68Kから出力要求した文字が出力されました^^/
★2019/07/02 追記
実装メモリサイズが512KBのバージョンに差し換えました(開発時はこの時点ではメモリサイズが128KBだったのでワークエリアのアドレス等が異なります)
68Kからの'Hello.'出力実験ログ
'H'出力処理時のロジアナ波形が下記です。68Kがreset命令を実行することでRESET/信号が15.7us間アクティブになり、PIC側ではRESET/信号がアクティブになったことを検出し、バス要求(BR/をアクティブ)しています。
PIC側は要求のあった処理を行った後、バスを開放しています。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
使っている68KはCMOS版ではないため、普段使っているブレッドボード用の電源が容量不足だったり、他にもハード的な問題があったりしましたがやっと安定に動いているように見える状態になりました ^^;
68KとPICの連携処理の確認の話に戻すとZ80の3チップ構成のPic24CPMマイコンの時とほぼ同様な処理で実験してみました。
68KとPICの処理の概要は次のとおりです。
- 68K側の処理概要
- ワークエリアにPICに要求する処理IDと必要な情報を設定する。
- reset命令を実行する。
- ワークエリアにPICが設定した処理結果を参照する。
- PIC側の処理概要
- RESET信号がアクティブになるまで待つ。
- BR/をアクティブにしバス制御を要求し、68Kからのバス引き渡し応答(BG/)がアクティブになるまで待つ。
- ワークエリアに設定された処理IDに基づき、処理を行い結果をワークエリアに書き込む。
- BR/をインアクティブにしバスを開放する。
最初はコンソール出力の実験で68K側の処理は下記のソースのように'Hello.'の文字列をコンソールへ出力要求します(定番ですね)。
アセンブル環境はEASy68Kを使っています。
|
PIC側は自作のpicleコンパイラを使い、Pic24CPMマイコンのBIOS処理を流用し不要な部分を削除して使っています。
上記の68Kのソースのアセンブル結果(Sレコードフォーマット)をバイナリ変換後、MemWR()ステートメントへの自動変換処理を通してpicleのソースに埋め込んでいます。
試験実行時のログが下記でpicleソースを表示後、runしています。想定通り68Kから出力要求した文字が出力されました^^/
★2019/07/02 追記
実装メモリサイズが512KBのバージョンに差し換えました(開発時はこの時点ではメモリサイズが128KBだったのでワークエリアのアドレス等が異なります)
|
'H'出力処理時のロジアナ波形が下記です。68Kがreset命令を実行することでRESET/信号が15.7us間アクティブになり、PIC側ではRESET/信号がアクティブになったことを検出し、バス要求(BR/をアクティブ)しています。
PIC側は要求のあった処理を行った後、バスを開放しています。
68KからPICへの処理要求時の波形サンプル |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
Old68funです。先日コメントさせていただきましたように、Pic24CPMとPic24CPM-68Kの製作中です。
最初はskyriverさんのガーバーデータで基板を発注したのですが、私は表面実装部品を持っていないので、改めてKiCadで回路図を書き直して通常部品用の基板を製作し直しました。若干のミス等もありましたが、Pic24CPMの方は「CP/M起動までの作業まとめ」のおかげで無事に動作しました。CP/Mの走るマイコンボードはいくつか持っているのですが、これは特に使い易い気がします。またpicleコンパイラで書き直せるのも良いですね。
そしてPic24CPM-68Kの方ですが、Pic24CPMと同様にKiCadで作り直した基板で製作しましたが、まだ動いていません。
「3チップ構成68Kマイコンの構想」でのメモリ書き込みの動作確認はできましたが、「3チップ構成68Kマイコンの構想(その2)」のHelloが出力されません。調べたところ PicSrv()が正常に動作していないようです。そもそも Pic24FJ64に書き込んでいるHexファイルがPic24CPMのものなので、それが原因だろうと思っています。
ブログにはCP/M用のBIOS処理を流用し不要な部分を削除したと書かれていますが、CP/MとCP/M-68KとではPic24のピンの使い方も異なっている部分がありますし、そのままでは動作しないことは分かるのですが、情けないことにCP/Mの知識もない上に、picleコンパイラも使いこなせていないので、先に進めません。
厚かましいお願いですが、Pic24CPM-68K用のPic24に書き込むHexファイルを公開していただけないでしょうか。Pic24が動けば、68K側のプログラムは自分で何とかできるかもと思っています。(全く自信はありませんが...)
もう次のV20に取り組んでおられてお忙しいとは思いますが、よろしくお願いします。
また、私のブログでPic24CPMとPic24CPM-68Kの製作記ということで紹介させていただけると有難いですが、よろしいでしょうか。
by Old68fun (2019-07-02 20:33)
Old68funさん、こんにちは
Pic24CPMを作成して動作したという報告を始めて頂きました^^
このPic24CPMは私自身でもこんなのが欲しい(SDで立ち上る小型で高速なCP/Mマシン)というイメージに沿ったものに仕上げています。
CP/M-80に比べればCP/M-68KはマイナーなのでPic24CPM68Kを作ろうとする人はほとんどいないだろうと思い、Pic24CPMのような起動手順を書いていませんでした^^;
「その2」(このページ)の'Hello'が表示しない理由はこの時点ではメモリサイズが128KBだったのですがその後512KBに拡張したので公開した回路図ではメモリサイズが512KBになっていることが原因ではないかと思います。
取り急ぎ「その2」と「その3」のpicleソースを512KBメモリ対応版に差し換えましたので試してみてください。
PIC側のHEXファイルは後日公開したいと思いますが少し時間をください。
お問合せ頂いたブログでの紹介は問題ありません(本サイトの関連ページへのリンクの記載をお願いします)
by skyriver (2019-07-03 00:03)
差し換えたpicleのソースですがライブラリを使っているのでライブラリ無しでは動きませんね^^;
後日HEXファイルとともに公開します。
by skyriver (2019-07-03 00:12)
Old68funです。こんにちは。
早速対応していただきましてありがとうございます。
私も回路図を見てメモリアドレスの違いには気づきまして、$01xxxxを$07xxxxに変更をした結果、最初の動作確認はパスしたということでした。
PICのライブラリLibCpm.pidやLibSpiEsc.pidを眺めてみましたが、私にはどこを直せばよいのかは皆目見当もつきませんでした。
急ぎませんので、時間のある時で結構です。よろしくお願いします。
by Old68fun (2019-07-03 08:54)
Pic24CPM68KでCP/M-68Kを起動させるまでの手順を下記の記事にまとめました。
https://piclabo.blog.so-net.ne.jp/Pic24CPM68K
また、ガーバーデータをseeedさんの「Fusion gallery」の「Geek product」コーナーで公開しました。
https://www.seeedstudio.com/CP-M-68K-board-consisting-three-chips-g-1180375
by skyriver (2019-07-06 22:40)
追記 picleのソース自体はPICのhexファイル内に含まれているので変更時のメンテ性等を考慮しソースファイルとしてはアーカイブファイルに入れていません。
by skyriver (2019-07-06 23:07)
skyriverさん こんにちは
Pic24CPM-68Kの作成手順を公開していただきましてありがとうございます。
早速本日、手順通りに進めた結果、無事に動作させることができました。これで、大昔から興味があったCP/M-68Kをいじることができます。(昔、X68000でOS-9/68Kをいじっていましたが、CP/M-68Kには縁がありませんでした。)
ただ教えられたとおりに操作しただけでは勉強になりませんので、順に段階を追って確認しようとしているのですが、第1回の動作確認のメモリの書き込みができません。以前はできましたのに、不思議です。逆に、前回はダメだった第2回のHello出力は、今回は正常に表示されました。
ということで、全体を理解するにはまだまだですが、少しずつ進んで行ければと思っています。
まだ少しいじっただけの感想ですが、立ち上がりも、SDの読み取りも速いので使い勝手が良いと思います。それにしてもpicleは使い易いですね、手になじむツールになりそうです。
ありがとうございました。
by Old68fun (2019-07-07 14:12)