Skip to content

Latest commit

 

History

History
102 lines (85 loc) · 4.19 KB

DiskImage-CPM22-ja.md

File metadata and controls

102 lines (85 loc) · 4.19 KB

CP/M DISK Imageの作成方法

概要

本システムでは、CP/MのディスクをmicroSD Cardでエミュレーションしている。ディスクイメージはmicroSD Card上のファイルとして管理されるため、複数のイメージファイルを置いておけば、それらは独立したディスクドライブとみなすことができる。

microSD CardはFAT32でフォーマットされていること。

ディスクイメージファイルの命名規則

  • DISKnn.IMG (nnは00-15で、ドライブA:-P:に対応する)

ドライブA:であるDISK00.IMGはCP/Mのシステム(CCP+BDOS)を含む必要がある。メモリの関係上、BIOSでは5ドライブまでしかサポートしていない。したがって実際に使えるのは00-04までである。

ディスクイメージは、BIOSのDPBの形式に合致していなければならない。cpmtoolsでディスクイメージを生成する際にはdiskdefsで定義した以下のフォーマットを指定する。

diskdef sdcard
seclen 512
tracks 256
sectrk 64
blocksize 8192
maxdir 256
skew 0
boottrk 1
os 2.2
end

このフォーマットではboottrkで1トラックが予約されており、システムディスク(IMAGE00.IMG)では、CP/Mのシステム(CCP+BDOS)がここに格納される。

ATmega128側のファームウェアで利用しているSD Cardのアクセスライブラリは、すでに存在するファイルに対してしか書き込み操作ができない。このためイメージファイルは全データ(約8GB)が事前に生成されている必要がある。

ディスクイメージファイルの生成方法

z80/cpm22/image/Makefileでは以下のイメージ生成をサポートしている。

CP/M2.2 システムディスク

CP/M 2.2 BINARY をベースにDISK00.IMGを生成する。

make

z80/cpm22/sys/CPM.SYSを使用する場合

CP/M 2.2 ASM SOURCEのソースコードをベースに構築したCPM.SYSを使用する場合、z80/cpm22/image/Makefileを以下のように変更する。

CCPBDOS   = ../sys/CPM.SYS
#CCPBDOS  = $(CPM22_DIR)/CPM.SYS

空のディスクイメージ

EMPTY.IMGが生成されるので、DISKnn.IMGにコピーして使用するか、これをベースに新たなイメージを作成する。

make empty

ZORK I/II/III

make zork

ZORK.IMGが生成されるので、DISKnn.IMGにコピーして使用する。

任意のディスクイメージ

cpmcpを使う方法

cpmtoolsのcpmcpを使用し、任意のファイルをディスクイメージ上に転送することで、任意のイメージを作成できる。

例えばCP/M software Download siteなどにはたくさんのCP/Mのバイナリファイルが存在する。その中から必要なファイルをピックアップしてディスクイメージを作成することもできる。

以下の例では、./tmpの全ファイルを空のディスクイメージに転送し、DISK01.IMGとしてB:ドライブに割り当てる。

cpmcp -f sdcard EMPTY.IMG ./tmp/*.* 0:
cp EMPTY.IMG DISK01.IMG

シェルスクリプト mkimg.shを使う方法

../z80/cpm22/image/mkimg.shを使うと、EMPTY.IMGを使わなくても直接イメージの生成が可能。

  • 使い方:
    Usage: mkimg.sh <fmt> <img> [files ...]
          <fmt>: format defined in /etc/cpmtools/diskdefs
          <img>: image file name
          [files ...]: CP/M files (optional)
    
  • 実行例:
    $ ./mkimg.sh sdcard test.img tmp/zork/*.*
    1021+0 records in
    1021+0 records out
    8364032 bytes (8.4 MB, 8.0 MiB) copied, 0.149639 s, 55.9 MB/s
    0:
    file_id.diz
    zork1.com
    zork1.dat
    zork2.com
    zork2.dat
    zork3.com
    zork3.dat
    

CP/M software Download site