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/M80を移植する(その3:完結)

最後の仕上げに、ディスク書き込みルーチンを書いて、移植完了です。

ブロッキング/デブロッキングコードを取り込んだCP/M-80において、ディスク書き込みルーチンは、writehstルーチンです。

基本的に、ディスク読み込みルーチンと同じコードで問題ありません。コマンド番号が違うだけです。

最も問題になるのはDMAへのコマンドをどう書くか?です。これは「試験に出るX1」がなければ無理でした。以下に、SORD M68用ディスク書き込みルーチンに使ったDMAコマンドチェーンを記します。

DMA_WRITE_COMMANDS:
    DB 16H
    DB 0C3H,0C3H,0C3H,0C3H,0C3H,0C3H
    DB 83H
    DB 79H
    DB 022H,0F6H ; host buffer address
    DB 00H,0FFH ; byte number of transfer
    DB 14H,28H,8DH
    DB 0CBH,00H ; FDC data register
    DB 9AH
    DB 0CFH,05H
    DB 0CFH,87H
 

 

下から2行目のコマンド2つ(0CFH,05H)がないと正しく動きません。ここでハマりましたが、「試験に出るX1」には載っています。また、ネットでは「Z80DMA コマンドコード生成 Z80DMA Command Generator 2019.6.19」がとても役に立ちました。使いこなすコツは、「デフォルトでマークされているボタンも、ちゃんとクリックする」ことです。そうでないと、0CFH,05Hが出ませんでした。これはハマりポイントです。

 

おまけに読み込み時のDMAコマンドチェーンを記します。0BBH, 01H, 0BFHはよくわかりません。BOOT ROMではこう書いてあるのでそのまま踏襲しています。なくても動きそうですが...。

DMA_COMMANDS:
    DB 15H
    DB 0C3H,0C3H,0C3H,0C3H,0C3H,0C3H
    DB 0BBH,01H,0BFH
    DB 6DH
    DB 0CBH,0FFH,00H,02CH,010H,08DH
    DB 022H,0F6H ; host buffer address
    DB 9AH
    DB 0CFH,87H
 

 

これで、SORD M68へのCP/M-80の移植は完了です。読んでいただき、ありがとうございました。