So-net無料ブログ作成
English Version

3チップ構成68Kマイコンの構想(その7)CP/Mのリロケート [68K]

 前回の記事「3チップ構成68Kマイコンの構想(その6)CPM400.SRの問題」でダウンロードしたCP/M-68Kのアーカイブファイルに入っていた0x0400から始まるCP/M本体のSレコードファイルであるCPM400.SRに問題があることを書きました。

 今回は3チップ構成68Kボード用に作成済みのBIOSとリンクすることでCP/Mのアドレスを変更し、CPM.SYSファイルを作成してみます。

 今回作成した3チップ構成68K基板用のCP/MのBIOSはアセンブラで作成済み(まだ変更する部分はありますが)なので、CP/Mのアセンブラでアセンブルし、リンカーでリンクします。
 その後、リロケータで物理アドレスに変換します。

biosのアセンブルとCPMとのリンク
M>as68 -L -P bios68k.s >bios68k.prn M>LO68 -r -ucpm -o cpm.rel cpmlib bios68k.o M>size68 cpm.rel cpm.rel:19966+2128+5110=27204 (6A44 ) stack size = 0 M>dir M: RELOC 68K : STAT 68K : PIP 68K : DUMP 68K : AS68 68K M: LO68 68K : AS68INIT : CPMLIB : AS68SYMB DAT : BIOS68K S M: BIOS PRN : BIOS O : CPM REL : CPM0400 SYS : LDRLIB M: LDRBIOS PRN : LDRBIOS O : CPMLDR80 SYS : LDRBIOS S : BOOT68K PRN M: BOOT68K O : DDT 68K : SIZE68 68K : BOOT0380 SYS : BIOS68K PRN M: DDT68000 68K : BOOT68K S : BIOS68K O


 これでリロケータブルなCP/Mファイルが出来ました。
 次にリロケータを使って実アドレス(前回記事で失敗した0x0400)用のファイルに変換します。

cpm.relファイルから実アドレスにリロケート
M>reloc -b0400 cpm.rel cpm.sys M>dump cpm.sys 0000 00 (000000): 601A 0000 4DFE 0000 0850 0000 13F6 0000 *`...M~...P...v..* 0000 10 (000010): 0000 0000 0000 0000 0400 FFFF 4EF9 0000 *............Ny..* 0000 20 (000020): 0450 4EF9 0000 044A 2043 502F 4D2D 3638 *.PNy...J CP/M-68* 0000 30 (000030): 4B20 5631 2E33 2043 4F50 5952 4947 4854 *K V1.3 COPYRIGHT* 0000 40 (000040): 2028 4329 2031 3938 322C 3139 3834 2C31 * (C) 1982,1984,1* 0000 50 (000050): 3938 3520 4469 6769 7461 6C20 5265 7365 *985 Digital Rese* 0000 60 (000060): 6172 6368 2000 4239 0000 5A4E 4FF9 0000 *arch .B9..ZNOy..*


 このファイル内容を「3チップ構成68Kマイコンの構想(その3)Sレコード簡易ローダーの製作」の記事で書いたSレコードローダを使って68KボードにロードしてCP/Mを立ち上げるためには、上で作った cpm.sys のSレコードファイルをパソコン上に準備する必要があります。

 CP/M上のファイルをパソコンに持ってくるためにはcpmtoolで可能ですが、SDカードの抜き差しが必要となり面倒です。

 今回はCP/M上のダンプリスト表示内容をバイナリファイルに変換するツールを作りました。
 CP/M-68Kのファイルにはヘッダ情報があり、ヘッダの構成は下図のようになっています。

CP/M-68Kファイル内ヘッダ情報


 上で書いた操作ログにあるsize68コマンドはヘッダ情報を表示するツールです。
 上記の操作で作成したcpm.sysのダンプ表示の最初の方のキャプチャが下図で、赤枠部分がヘッダ部です。
 今回作成した Dump2Bin ツールは赤枠の次のデータ以降の値を読み取り、バイナリファイルとして書き出すものです。
 尚、バイナリ to Sレコード変換はネットを探すと色々あるので自作していませんw

★2018/09/30 追記 {
 「3チップ構成68Kマイコンの構想(その10)XMODEMアプリの作成」の記事に追記したようにCP/Mに標準で含まれている sendc68コマンドでCP/M上のヘッダ付きファイルをSレコードに変換できます。
}

cpm.sysファイルのヘッダ情報


 具体的な操作としては
  1. PCへ持っていきたいファイルをCP/M上でダンプ表示する。
  2. TeraTermの画面表示からコピーしてパソコン上にダンプ表示部分のテキストファイルを作成する。
  3. Dump2Binツールでバイナリファイルに変換する。
  4. ネット上に公開されている バイナリファイルをSレコードファイルに変換するツールを使用してSレコード化(CPM0400.SR)する。
  5. Sレコードダウンローダを起動した状態で、上記で作成したCP/MとBIOSが一体化したSレコードファイルをTeraTerm画面にコピペする(ファイル送信操作でも可)。

 従来は CPM15000.SR と biosのSレコードファイルをSレコードローダで68Kボードにダウンロードしていましたが、今回作った CPM0400.SRだけをダウンロードすればCP/Mが立ち上がります(下記で'1'の連続部分がCPM0400.SRのダウンロード部です)

作成したCPM0400.SRによるCP/Mの起動
:\\ +B000-B772 # 3chips MC68008 OneBoard test 2018/09/02 +C000-CB43 #LibCpm CP/M(PMP) lib68K v0.03 2018/09/03 +D000-DEDF #LibSpi SPI lib V0.03 2018/08/26 +E000-E867 # 3chips MC68008 OneBoard test 2018/08/19 +F000-FE9F # 3chips MC68008 OneBoard S fomat loader 2018/08/30 :src $f000 :run 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111 :src :\< 1906 :run Pic24CPM-68K ver1.3 A>dir A: COPY REL : DDT REL : DDT68000 68K : INIT REL : PIP REL A: README TXT : RELOC REL : RELOC1 SUB : SD REL : STAT REL A: STAT 68K : CPM SYS A>


 この流れだと次回はCP/Mローダのことを書くことになると思いますw

[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。