「CP/M」タグアーカイブ

CP/M80, CP/M86, CP/M68Kの話題

来夢来人に増設FDDを取り付ける準備 その1^^

S1-CP/M80が一応動作するようになってきたので実機でドライブ間ファイルコピーをするために
来夢来人に増設FDDを接続できないか調べてみました

来夢来人のFDC基板には増設FDD用に12ピンと13ピンの増設用コネクタがあります。

以前、来夢来人に回路を追加して拡張FDDを増設しようとチャレンジしましたが、
MP-3550を接続するための全ての信号が出ているようです。

ピンアサインが分からないので、コネクタがどのICに接続されているか調べて信号の方向を調べました。 続きを読む 来夢来人に増設FDDを取り付ける準備 その1^^

S1-CP/M80 移植作戦 その23 BIOSの作成7^^

とりあえずコンソールI/O廻りのサブルーチンが完成したのでBIOS80内の処理内容を調べてみました。

BIOS80の各サブルーチンに[BIOS80] **** のサブルーチン名が出るように実装して実行してみると
①CBOOT
②GOGPM
③SETDMA
④SETDMA
⑤SETDRV
⑥HOME
⑦SETTRK
⑧SETSEC
⑨SETDMA
⑩REDSEC
が呼ばれているようです。 続きを読む S1-CP/M80 移植作戦 その23 BIOSの作成7^^

S1-CP/M80 移植作戦 その22 BIOSの作成6^^

コンソールI/O関係の不具合原因が分かりました!
何かの参考になるかもしれないのでメモしておきます(何とも凡ミスで恥ずかしい・・・

現象はCP/M起動後、Bdos Err On A: が32回表示された後にa>プロンプトが出たら「^@」が
126個出力されて改行され、停止するまで延々と続く不具合

この「^@」表示不具合ですが、samさんからコメントを頂いた通りでCONINでNULLを渡していた
ことが原因でした^^ 続きを読む S1-CP/M80 移植作戦 その22 BIOSの作成6^^

S1-CP/M80 移植作戦 その21 BIOSの作成5^^

S1のFDD I/Fアクセス方法が分かってきたので、ここで一度整理しておきたいと思います。

S1のFDD I/Fアクセスのカギは$FF04のUNITSELだとは気付いていたのですがS1活用研究を読んでも
DRQは$FF02のリードとあり、いまいち理解できませんでした。

そこで、6809活用研究に掲載のMP-1870の回路図を眺めていると$FF04にはMB8876AのDRQもIRQリードできることが分かりました^^

■$FF04 UNITSELのビット割付け

$FF04 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
READ #DRQ N/A N/A N/A N/A DT/#ST0,1 DT/#ST2,3 #IRQ
WRITE
(MP-1870)
N/A NMIMASK DDEN HEAD1 MOTORON N/A Drive^1 Drive^0
WRITE
(S1/30-40)
#FDCENBL 8’RESET #DDEN HEAD1 MOTORON N/A Drive^1 Drive^0
S1活用研究ではDDENが#になっている?
MP-3560の資料を見るとMP-3550には無さそうなDT/#STという信号が増えているもよう・・ $FF04のリードで取得できるようですが何をする信号なのかご存じの方教えてください^^

■$FF08 HALT → WRITEでS1バス41ピン HALT をアクティブ、解除は37ピンの#RESET,又は#38ピンの#NMI又はFDCの#DRQ

■MB8876A関連のレジスタは

アドレス(Aモード) WRITE READ
$FF00 コマンドレジスタ ステータスレジスタ
$FF01 トラックレジスタ トラックレジスタ
$FF02 セクタレジスタ セクタレジスタ
$FF03 データレジスタ データレジスタ

これを踏まえてS1でFDDにアクセスする手順を整理すると、こんな感じになりそうです

FDD I/Oアクセスメモ 続きを読む S1-CP/M80 移植作戦 その21 BIOSの作成5^^

S1-CP/M80 移植作戦 その20 BIOSの作成4^^

BIOS09内のディスクI/Oのサブルーチンを考えています。

S1はFMと違い、ROM内にFDDのサブルーチンが無いので自分で作る必要があるみたいです。

FDCのMB8877を使った参考書としては「オーム社のマイクロコンピュータMC6809の考え方」が分かりやすく
お気に入りの書籍です。
この本はFLEX9中心の参考書ですが、この本を参考にS1CPM用のディスクI/Oサブルーチンを考えてみました。
S1はMB8876なのですがデータの反転を入れればOKではないかと甘いことを考え中^^

骨格は書籍の通りですが、S1固有の部分を合わせながら進めています。
(MC6809の考え方ではDRQをIRQとしてMPUに取り込んでいますがS1ではDRQはMNIに取り込んでいないっぽい)

6809活用研究に掲載のMP-1870の回路図を見るとDRQ,IRQは$FF04のリードで取得することが判明

ドライブ変更時に正常に動作しなくなったり、セクタを変えると暴走したりと問題点満載ですが、コードを晒しながら動作するように頑張ります^^

何か勘違いしていると思いますので、間違いに気づかれた方はご指摘下さい(^^;;
(アセンブラはMS-DOS用のAS63_DOS.EXEを使ってます) 続きを読む S1-CP/M80 移植作戦 その20 BIOSの作成4^^