tunozemichanの日記 / tunozemichan's diary

SORD社のコンピューターM68やM68MXの解析についての備忘録です。This blog is a memorandum about the analysis of SORD's computers M68 and M68MX.

SORD M68用CP/M-68Kのディスクイメージにcpmtoolsを使ってアクセスする方法 その2

 

SORD M68 CP/M-68Kのディスクのさらに妥当なパラメータが判明しました。差分だけ書くのも読みづらいので、以前投稿した内容に修正を加えて、投稿します。以前のものはobsoleteです。

 

CP/M-68Kのディスクイメージ(ここではcpm68k_image.hfeと呼びます)をFacebookで親切な方から頂きました。cpmtoolsを使って、このディスクにアクセスしたいと思います。

 

頂いたディスクイメージはHxC FDDエミュレータ用のhfe形式でした。このままだとFDDエミュレータを搭載した実機でブートする以外は基本的に何もできない状態なので、まずは、HxCのユーティリティHxC FloppyEmulator.exeを実行して、生のセクタイメージへと変換します。これは簡単にできて、cpm68k_image.hfeを上記ユーティリティに読み込ませて、Floppy image->Export disk/Save Asと進み、セーブ画面でファイルの種類を"IMG file(RAW Sector file format)”を選択してセーブします。

HxC FloppyEmulatorの新バージョンではバッチ処理でしかRAW Imageに変換できなくなりました。バッチ処理の場合、ファイル名は変換後に変えることになります。今回はcpm68k_image.imgとしました。

 

f:id:tunozemichan:20211119083823p:plain

新バージョンではバッチ処理でないとRAW Imageに変換できないようになってしまった。

 

SORD M68のFDDは三菱のM4854-342Mです(枝番のないリビジョンもあります)。このFDDの最大の特徴は、8インチFDDとほぼ同じパラメータで動かすことができる点にあります。

この特徴はHxCFloppyEmulatorのTrack Analyzerで見るとはっきりします。5.25インチ96TPIとしても、8インチ48TPIとしても、ディスクイメージを問題なく解析できます。

f:id:tunozemichan:20211118191710p:plain

HxCFloppyEmulatorのTrack Analyzerの画面(M68 CP/M-68Kのイメージを読んだところ)

このTrack Analyzerはあまりにも多くのデータを提供するので使いこなせていないのですが、すぐわかるのは、ヘッドの数、トラック数、セクタサイズ、セクタ数、スキュの値です。

 

cpm68k_image.imgはヘッド数2、トラック数77、セクタサイズ256、セクタ数26、スキュは13でした。

 

本題のcpmtoolsをダウンロードします(http://www.moria.de/~michael/cpmtools/

)。Windows版もありますが以下の作業は全てWSL2上でLinux版を用いて行いました。ディスクの定義ファイルであるdiskdefsを開き、以下のエントリを追加します。


diskdef m68disk
  seclen 256
  tracks 154
  sectrk 26
  blocksize 4096
  maxdir 317
  skew 13
  boottrk 2
  os 2.2
end

***注意!!***

seclenから始まる左のスペースは、Tabです。これを守らないとエラーが出ます。

***注意終わり***

 

tracksはトラック数ですが、2ヘッドなので77×2=154となるようです。

苦悩したのはmaxdirで、これはFDDのハード的な問題ではなく、CP/Mのディスク構造の問題です。普通、maxdirは64、128、256、512などで、上記のように317などと言う中途半端な値にならないと思うのですが、一応これでディスクの内容を見ることはできています。

 

プロンプトから、以下のように入力すればディスクの中身を見れます。

 

>cpmls -Df m68disk cpm68k_image.img

 

ちなみに、cpm68k_image.imgの中身は非常に多くのファイルが入っています。アセンブラもCコンパイラも入っています。

 

AR68    .68K    16K     97 R
AS68    .68K    44K    352 R
AS68INIT.        8K     34 R
AS68SYMB.DAT     8K     44 R
BACKUP  .SUB     4K      1 R
BOOT    .SYS     8K     34 R
C       .SUB     4K      1 R
C068    .68K    32K    252 R
C168    .68K    36K    261 R
CC      .SUB     4K      1 R
CLIB    .       68K    519 R
CLINK   .SUB     4K      1 R
COPYDISK.68K    20K    132 R
CP68    .68K    16K    125 R
CPM     .H       8K     53 R
CPM     .SYS   132K   1040 RS
CTYPE   .H       4K     11 R
DDT     .68K     4K     15 R
DDT1    .68K    36K    270 R
DUMP    .68K     8K     60 R
ED      .68K    12K     94 R
ERRNO   .H       4K      7 R
FORMAT  .68K    20K    158 R
FUNC    .68K    16K    112 R
IB      .H       4K     13 R
IBLIB   .       20K    156 R
INIT    .68K     4K     14 R
LO68    .68K    16K    126 R
NM68    .68K    12K     67 R
PIP     .68K    12K     68 R
POFF    .68K     8K     56 R
PORTAB  .H       4K     17 R
REBOOT  .68K    20K    150 R
RELOC   .68K    16K    102 R
REZERO  .68K    12K     72 R
S       .O       4K      8 R
SAMPLE  .C       4K      5 R
SE      .68K    44K    333 R
SENDC68 .68K    12K     71 R
SETJMP  .H       4K     12 R
SIGNAL  .H       4K     14 R
SIZE68  .68K     8K     61 R
STAT    .68K    12K     73 R
STDIO   .H       4K     25 R
STDRCS  .68K    16K     99 R
STSCON  .68K    36K    282 R
STSCON  .FMT     8K     43
SYSGEN  .68K    20K    131 R
SYSLIB  .        4K     20 R
TOD     .68K    16K    112 R


これで、ディスクの中身を見ることができました。更に、ファイルをPCにコピーするには、以下のように入力します。

 

>cpmco -f m68disk cpm68k_image.img 0:*.* .

 


これでディスクの全ファイルがPCのカレントディレクトリにコピーされます。PCからディスクにコピーすることもできます。詳しくはcpmtoolsのページを見てください。

 

ちなみに、CPM.SYSの内容をダンプしましたがどうやら正しそうです。しかし、STDIO.Hなどテキストファイルの内容はめちゃくちゃだったりするので、まだ正しい設定になっていないと思われます。CPM.SYS、BOOT.SYSの内容が正当なものであれば、SORD M68の解析は一歩進んだと言えるでしょう。