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

レトロマイコン86ボードの構想(その7)HexローダーでのCP/M起動に成功^^ [8086]

 前回の記事で書いたようにPICのゆりかごの中で動作するV20(8088互換)の動作が安定になったのでCP/M-86のBIOSを作成し、CP/M-86の起動に先程、成功しました(^^)/

 CP/M-86の起動は「3チップ構成68Kマイコンの構想(その8)ローダーによるCP/Mの起動」で書いたようなCP/M-68Kの起動シーケンスと同様で

  • Bootstrap
     ROMまたは最初のセクタに格納されている最初に起動されるローダーでOS用にリザーブされたトラック(標準的な8インチディスクなら最初の2トラック)に格納されているCold Start Loaderを読込み起動する

  • Cold Start Loader
     CP/M本体のサブセット版(simple version of CP/M-86)でディスクA内にあるCP/M本体(CPM.SYS)をメモリに読込み起動する

のような起動シーケンスになります。

 今回は「3チップ構成68Kマイコンの構想(その4)CP/M-68K 初ブート」の記事で書いたCP/M-68Kの時と同じようにCP/M本体をHexファイルローダーでV20のメモリ内にロードし、CP/M-86を起動しました。

 起動手順の概要は次のとおりです。

  1. BIOSのアセンブル
     次のコマンドで今回のハード(Pic24V20)用に作成したbiosのソースをアセンブルします。

    C:¥picle¥V20¥asm¥bios¥cmd>msdos cpm86 asm86 picbios
    CP/M-86 emulator for DOS vers 1.3 - 11/30/97
    Copyright (c) 1985, 1997 Jim Lopushinsky

    CP/M 8086 ASSEMBLER VER 1.1
    END OF PASS 1
    END OF PASS 2
    END OF ASSEMBLY. NUMBER OF ERRORS: 0. USE FACTOR: 7%


    C:¥picle¥V20¥asm¥bios¥cmd>

  2. CP/MとbiosのHexファイルの連結
     ダウンロードしたCP/M-86関連ファイルに入っていたCPM.H86の末尾に上のbiosのアセンブルで生成されたBIOSのHexファイルを連結します。
     PIPコマンドで連結してもいいようなのですが、私の環境(ms-dos playerでcpm86.exe経由でpip.cmdを起動)ではうまく連結できなかったので秀丸エディタで連結しました。連結したファイルはCPMX.HEXのファイル名でセーブします。

  3. CPM.SYSの作成
     次のコマンドで上で連結したHexファイルからCPMX.CMDを作成します。CPMX.CMDはCPM.SYSにリネームすればCold Start LoaderからロードされるCP/M本体のファイルになります。

    C:¥picle¥V20¥asm¥bios¥cmd>msdos cpm86 GENCMD CPMX 8080 CODE[A40]
    CP/M-86 emulator for DOS vers 1.3 - 11/30/97
    Copyright (c) 1985, 1997 Jim Lopushinsky

    BYTES READ 2627
    RECORDS WRITTEN 65



    C:¥picle¥V20¥asm¥bios¥cmd>

  4. CMDファイルのヘッダ削除
     CP/M-86のCMDファイルには128バイトのヘッダが付いているのでバイナリエディタを使って最初の128バイトを削除し、CPMX_NH.SYSのファイル名で保存します。

    CPMX.CMDのヘッダ削除

  5. CPM_NH.SYSのHexファイル作成
     バイナリファイルを0040セグメントから始まるhexファイルに変換し、CPM_NH.HEXのファイル名でセーブします。
     hexファイル変換ツールでセグメント指定ができない場合は、先頭のセグメント指定の行として

    :020000020040BC

    を手動で追加します。

  6. CPM_NH.HEXのロードと起動
     作成したHexファイルをHexファイルローダーを使ってV20のメモリにロードし、0040:2500H(BIOSの先頭部)番地から実行するとCP/M-86が起動します。
     下記はHexファイルロードからCP/M-86起動までのログのサンプルです。

    Hexファイルローダーを使ったCP/M-86の起動
    :¥¥ +B000-BDBA # CP/M-86 boot 2019/08/23 +C000-CC8D #LibCpm CP/M86(PMP) v0.01 2019/08/17 +D000-DEEB #LibSpi SPI lib V0.04 for CP/M86 2019/08/16 +E000-EDC7 # Memory check executer 2019/08/18 +F000-FC43 # Pic24V20 HexLoader v0.02 2019/08/12 :¥<$F000 3139 :run HexLoader Start 2000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000001 :¥< 3514 :run System Generated by skyriver 2019/08/14 A>dir A: ASM86 CMD : ASSIGN CMD : CONFIG CMD : CPM SYS A: DATA PFK : DDT86 CMD : DSKMAINT CMD : ED CMD A: FUNCTION CMD : GENCMD CMD : HELP CMD : HELP HLP A: PIP CMD : PRINT CMD : SETUP CMD : STAT CMD A: SUBMIT CMD : TOD CMD A>ddt86 DDT86 1.2 -d 0000:0000 8F 25 40 00 36 08 66 7C 8F 25 40 00 2E 08 66 7C .%@.6.f|.%@...f| 0000:0010 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0020 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0030 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0040 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0050 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0060 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0070 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0080 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:0090 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:00A0 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. 0000:00B0 8F 25 40 00 8F 25 40 00 8F 25 40 00 8F 25 40 00 .%@..%@..%@..%@. -^C A>


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

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

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