3チップ構成68Kマイコンの構想(その3)Sレコード簡易ローダーの製作 [68K]
前回の「3チップ構成68Kマイコンの構想(その2)」で書いたようにPICと68Kの連携処理に関しては68Kのreset命令を利用することで実現できそうなのでCP/M-68KのBIOSは対応できる見込みが付きました。
しかし、SDカードを使う上でのdisk関連のパラメータ等、調べる項目はまだまだあります。diskのパラメータについてはネットで探しましたが、68Kを使った今回の用途(SDカードをパーティション分けして使う)のような例は見つかりませんでした。
CP/M-68Kではセクタサイズを512にしている例もあり、blocking/deblocking処理無しでSDカードが使えそうです。(また試していませんが一応disk関連のパラメータも決めました)
最初に CP/M-68K 関連のファイルですが下記から入手しました。
CP/M-68Kは本体(CPP+BDOS+BIOS)のサイズが大きいことからCP/M-80と違い1トラックに収まらないため、本体をCP/Mのファイルシステム上に置き、1トラック目に格納したCPMLDR.SYSがファイルシステム上に置かれたCP/M本体をロードする仕組みになっています。
CPMLDR.SYSは1トラック内に格納できるようにするためにCP/Mのファイルシステムをアクセス可能な機能に絞った機能実装がされていてこれ用のBIOSもサブセット版とし、コンパクト化されています。
今回の3チップ構成の68Kボードでは「3チップ構成68Kマイコンの構想」の記事で書いたようにPIC側からは68Kのごく一部のメモリしかアクセスできないのでSレコードファイルの簡易ローダーを作成してみました。
アセンブル結果のリストが下記でチェックサムや16進数文字の範囲チェック等を省略し、小型化してみました。
コンパクトではありますがアドレス表現部の桁数の異なるS1~S3タイプに対応しています。
尚、Sレコードのフォーマットについては「モトローラ S レコードフォーマット」のサイト等を参考にさせて頂きました。
また、アセンブル環境は前回同様にEASy68Kを使っています。
★2019/07/02 追記
実装メモリサイズが512KBのバージョンに差し換えました。(開発時はこの時点でのメモリサイズは128KB)
Sレコード簡易ローダー
上記のソースのアセンブル結果をPIC側のpicle言語のソースに埋め込み、起動した状態でTeraTermにSレコードをコピペすることで68K上のメモリにロードされます。
ロード試験用のソースはこんな感じです。
ローダー試験用ソース
アセンブル結果生成されるSレコードフォーマットのファイルは下記のようになります。
アセンブル結果生成されたSレコードファイル
試験時の操作ログを貼っておきます。
Sレコード簡易ローダをロードするためのpicle言語のソースを表示後、'run'コマンドで実行しています。
この状態で上記のローダー試験用のSレコードをTeraTermでコピペしています。
68K内で動作しているSレコードローダーはレコードタイプを表示(下記のログの'12'の部分)しながらメモリに展開し、Sレコードの終了行を読込んだ後、PIC側に制御を渡します。
★2019/07/02 追記
実装メモリサイズが512KBのバージョンに差し換えました。(開発時はこの時点でのメモリサイズは128KB)
Sレコード簡易ローダーのロードと実行とSレコードのロード試験
今回ロードしたメモリの範囲はPIC側からもアクセス可能な範囲なのでメモリダンプして確かめてみましょう。
想定通りの値になっています^^
ロードデータのダンプリスト
[TOP] [ 前へ ] 連載記事 [ 次へ ]
しかし、SDカードを使う上でのdisk関連のパラメータ等、調べる項目はまだまだあります。diskのパラメータについてはネットで探しましたが、68Kを使った今回の用途(SDカードをパーティション分けして使う)のような例は見つかりませんでした。
CP/M-68Kではセクタサイズを512にしている例もあり、blocking/deblocking処理無しでSDカードが使えそうです。(また試していませんが一応disk関連のパラメータも決めました)
最初に CP/M-68K 関連のファイルですが下記から入手しました。
CP/M-68Kは本体(CPP+BDOS+BIOS)のサイズが大きいことからCP/M-80と違い1トラックに収まらないため、本体をCP/Mのファイルシステム上に置き、1トラック目に格納したCPMLDR.SYSがファイルシステム上に置かれたCP/M本体をロードする仕組みになっています。
CPMLDR.SYSは1トラック内に格納できるようにするためにCP/Mのファイルシステムをアクセス可能な機能に絞った機能実装がされていてこれ用のBIOSもサブセット版とし、コンパクト化されています。
今回の3チップ構成の68Kボードでは「3チップ構成68Kマイコンの構想」の記事で書いたようにPIC側からは68Kのごく一部のメモリしかアクセスできないのでSレコードファイルの簡易ローダーを作成してみました。
アセンブル結果のリストが下記でチェックサムや16進数文字の範囲チェック等を省略し、小型化してみました。
コンパクトではありますがアドレス表現部の桁数の異なるS1~S3タイプに対応しています。
尚、Sレコードのフォーマットについては「モトローラ S レコードフォーマット」のサイト等を参考にさせて頂きました。
また、アセンブル環境は前回同様にEASy68Kを使っています。
★2019/07/02 追記
実装メモリサイズが512KBのバージョンに差し換えました。(開発時はこの時点でのメモリサイズは128KB)
|
上記のソースのアセンブル結果をPIC側のpicle言語のソースに埋め込み、起動した状態でTeraTermにSレコードをコピペすることで68K上のメモリにロードされます。
ロード試験用のソースはこんな感じです。
|
アセンブル結果生成されるSレコードフォーマットのファイルは下記のようになります。
|
試験時の操作ログを貼っておきます。
Sレコード簡易ローダをロードするためのpicle言語のソースを表示後、'run'コマンドで実行しています。
この状態で上記のローダー試験用のSレコードをTeraTermでコピペしています。
68K内で動作しているSレコードローダーはレコードタイプを表示(下記のログの'12'の部分)しながらメモリに展開し、Sレコードの終了行を読込んだ後、PIC側に制御を渡します。
★2019/07/02 追記
実装メモリサイズが512KBのバージョンに差し換えました。(開発時はこの時点でのメモリサイズは128KB)
|
今回ロードしたメモリの範囲はPIC側からもアクセス可能な範囲なのでメモリダンプして確かめてみましょう。
想定通りの値になっています^^
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]