tunozemichanの日記 / tunozemichan's diary

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

SORD M23用アプリケーションのサルベージに一部成功しました。

ebayで、SORD M23の本体とソフトが出品されており、落札しました。本体は問題ないのですが、ソフトの方はカビていてサルベージは無理かもと思っていました。 今日、意を決して、M23のドライブをDOS/Vマシンに接続して吸い出しを試みました。 結果、ワープロ…

SONY SMC-777でS-OS SWORDを動かしました。

SONY SMC-777を入手しました。その動機は、SMC-777のFDDであるOA-D31Vが、SORD M23Pにも用いられており、その調査の為、そして最終的には手持ちのM23をM23Pにしたいというものでした。 とは言え、せっかく手に入れたので、なにか画面に文字でも出したいとも…

NEC PC-6601でFlashFloppyを使うときの設定

NECのPC-6601をだいぶ前に入手しました。このマシンは、少なくとも1枚は専用のディスクがないと何もできないという罠があります。内臓のBASICすら動かないというスパルタ仕様です。 しかし、I/Oに載ったCP/MやSWORD-OS( http://000.la.coocan.jp/p6/sword/i…

QC-10でFlashfloppyを使うときの設定

QC-10を入手しました。色々遊ぶためにはFDDエミュレータにしておいて損はありません。 今回、FlashFloppyを使ったのは、HxCのhfe形式では実機でエラーがでる為です。hfe形式への変換の際に、細かく設定できる方法があるのかもしれませんが、少なくともHxCFlo…

Porting CP/M-80 to SORD M68 (Part 3 : concluding part)

The final step is to write the disk write routine. In the CP/M-80 with blocking/deblocking code, the disk write routine is a "writehst" routine. Basically, the same code as the disk read routine can be used. The only difference is the comm…

SORD M68にCP/M80を移植する(その3:完結)

最後の仕上げに、ディスク書き込みルーチンを書いて、移植完了です。 ブロッキング/デブロッキングコードを取り込んだCP/M-80において、ディスク書き込みルーチンは、writehstルーチンです。 基本的に、ディスク読み込みルーチンと同じコードで問題ありませ…

Porting CP/M-80 to SORD M68 (Part 2)

I am writing the procedure for porting a CP/M-80 to a SORD M68. What you need CP/M2.2 source code (available at The Unofficial CP/M Web site) CP/M2.2 binary (available at The Unofficial CP/M Web site) ZASM.EXE (Absolute assembler that runs…

Porting CP/M-80 to SORD M68 (Part 1)

I ported CP/M80 to SORD M68. the Z80SIO I/O address and FDC(MB8877A) read/write processing code also worked so I can write BIOS. The following is a memo description of the problems I had. Blocking/de-blocking process The CP/M80 sets the ca…

SORD M68にCP/M-80を移植する(その2)

SORD M68にCP/M-80を移植する手順を書いておきます。 必要なもの CP/M2.2のソースコード(The Unofficial CP/M Web siteにあります) CP/M2.2のバイナリ(The Unofficial CP/M Web siteにあります) ZASM.EXE(MSDOSで動くアブソリュートアセンブラです。VECTORに…

SORD M68にCP/M80を移植する(その1)

SORD M68にCP/M80を移植しました。Z80SIOのI/OアドレスとFDC(MB8877A)の各処理コードも動作したので、BIOSを書くことができます。ハマった点をメモ的に記載します。 ブロッキング/デブロッキング処理 CP/M80は、1セクタの容量を128バイトに設定していますが…

Analysis of BASIC for SORD M23 disk image.

I examined the disk image of BASIC for SORD M23 in the Internet archive. First, I found the following from this disk image: 1. 80tracks, 1side, 16sectors, 256byte/sector. 2. all sectors are MFM record type.2. all sectors are MFM record typ…

SORD M23 BASICディスクイメージの解析

Internet ArchiveにSORD M23用のBASICディスクイメージがあります。私は、M23は持っていないのですが、興味本位でブートセクタと思われるセクタを読んでみました。 まず、このディスクイメージからは以下のことがわかりました。1. 80tracks, 1side, 16sector…

FDC(MB8877)の制御コードについて(RESTORE,SEEK,READ)

SORD M68のFDCは富士通のMB8877Aです。これはWD系と呼ばれるFDCの系統の一つで、特にMB8877は日本のマイコンに広く用いられています。 今回は、このMB8877の制御コードを具体例を書いていきます。分かりにくくなるため、エラー処理などは書きません。この辺…

SORD M68のI/Oマップ

現時点で判明したSORD M68のI/Oマップを記載します。 フロッピーディスクの制御に関するもの(MB8877A) FDCコマンド/ステータスレジスタ:0xC8 FDCトラックレジスタ:0xC9 FDCセクタレジスタ:0xCA FDCデータレジスタ:0xCB Z80DMAのI/Oアドレス:0xCC FDDコ…

SORD M68でFDDからZ80 BASICを動かす。

SORD M68のFDD周りの解析が進み、そろそろ大きなプログラムも動かせそうだったので、今回はZ80 BASICを動かしてみました。 手順は以下の通りです。 BOOT ROMがディスク1、トラック0、サイド0、セクタ1~8にあるローダーを0H番地を先頭に展開し、0Hへジャンプ…

SORD M68でFDDからZ80 BASICを動かす。

SORD M68のFDD周りの解析が進み、そろそろ大きなプログラムも動かせそうだったので、今回はZ80 BASICを動かしてみました。 手順は以下の通りです。 BOOT ROMがディスク1、トラック0、サイド0、セクタ1~8にあるローダーを0H番地を先頭に展開し、0Hへジャンプ…

SORD M68のFDDサイド番号の指定方法が判明

導入という与太話 倍密度記録のセクタを読めるようになったので、CP/Mなど大きなプログラムをロードできる可能性が出てきました。しかし、その為にはディスクの裏側(Side1)も読めなくてはなりません。 FDDのシステムは、前回も触れましたがFDD、FDC、VFOです…

SORD M68のフロッピーディスクコントロールについて(その2)DMAを使う方法

今回もわりと日記的です。 結論から言うとDMAを使って、倍密度記録をデータの取りこぼしなくメモリにコピーできました。苦労したので、以下愚痴です。 迷走した話 前回、4MHzのZ80の処理能力の限界を知りました。SORD M68には当時のハイエンドマシン(約80万…

SORD M68のフロッピーディスクコントロールについて(その1)

今回は完全に備忘録です。まとめなどはありません。 基本的にフロッピーディスク(ドライブ)の制御は、フロッピーディスクコントローラー(FDC。SORD M68では、MB8877A)とパラレルI/Oチップ(SORD M68ではZ80PIO)との組み合わせで構成されています(VFOもありま…

【情報更新】SORD M68のBOOT ROM解析(フロッピーディスクコントローラーのI/Oポートアドレス判明)

FDD上にUniversal Monitor(機能限定版)を置くことができたので、実機で動作の確認を行うことができるようになりました。 これにより、FDCの各レジスタアドレス、Z80DMAのI/Oアドレスが判明しました。 FDCの各レジスタはやはり並んでいました。 FDCコマンド/…

devtermのプリンターをコマンドラインから使う(PDFも印刷可能)

devtermを入手しました。私が買ったのはプリンター付きです。このプリンターはシリアル接続になっており、CUPSシステム上で管理されています。プリンタ名は"devterm_printer"です。Webブラウザーからは普通に印刷を選べば、期待通りに出力されるかは別として…

Successfully launched Universal Monitor (limited functionality version) on SORD M68.

The speed of the analysis of SORD M68 BOOT ROM has slowed down. The reason for the delay is that there are few codes or values left in the disassembler code that can be used as hints. It seems to be impossible for me to guess by looking at…

SORD M68でUniversal Monitor(機能限定バージョン)の起動に成功

SORD M68のBOOT ROMの解析はいよいよ煮詰まってきました。残るのは意味不明なポートに0とか1とかヒントになりそうにない値を入れたりしているところばかりで、これ以上、紙と画面を見て推測するのは私の能力的に無理がありそうです。 そこで、現状分かって…

SORD M68のBOOT ROM解析(Z80CTCのアドレス判明)

SORD M68のCTCはZ80CTCで、これが二つ搭載されています。(便宜上CTC_A、CTC_Bとします)。Z80CTCの各チャンネルのアドレスを下記に記します。 CTC_A チャンネル0 : 0xfc チャンネル1 : 0xfd チャンネル2 : 0xfe チャンネル3 : 0xff CTC_B チャンネル0 : 0xd8 …

SORD M68のBOOT ROM解析(フロッピーディスクコントローラーのI/Oポートアドレス判明)(色々修正)

DMAの件で、手詰まりになったので、CP/M-68KのBOOT部分をディスクイメージのセクタから切り出して、逆アセンブルしました。トラック1、サイド0、セクタ1~3が当該部位で、これはZ80のコードで書かれています。 BOOT ROMに比べてものすごく読みやすいコード…

SORD M68のBOOT ROM解析(Z80DMAのアドレス判明)

SORD M68のDMACはZ80DMAです。このDMACはとても複雑なコマンド体系ですが、解析者にはとても素晴らしい点があり、それはコマンドチェーンの最後が多くの場合、CF 87で終わる点です。今回もそれを足掛かりに探しました。 Z80DMAのI/Oアドレス 0xA1? 0xCC←こっ…

SORD M68のBOOT ROM解析(CRTC=HD46505SPのアドレス・設定判明)

BOOT ROMを吸い出す際にアドレス線の高位に配線間違いがありました。その為、正しいBOOT ROMファイルが得られていませんでした。修正したことで今度は正しいファイルが得られたと思います。なお、Z80 SIOの設定に誤りはありませんでしたが、一部不合理な部分…

BOOT ROM analysis of SORD M68 (Z80SIO address and settings revealed)

I finally removed the BOOT ROM chip from the SORD M68 board. BOOT ROM. TOSHIBA TMM333P. The BOOT ROM chip is Toshiba's TMM333P. This chip has a different pin layout than the major 2732 and 2764 ROMs, so it cannot be read with my ROM writer…

SORD M68のBOOT ROM解析(Z80SIOのアドレス・設定判明)

SORD M68のBOOT ROMを基板から取り外しました。 BOOT ROMとして東芝のTMM333Pが使用されています。これはピン配置がメジャーな2732や2764とは違っていて、所有しているROMライターでは読み出しできません。 ピン配置は分かっているので、Arduino Mega2560を…

Connecting SORD M68 to a VGA monitor

SORD M68 has an RGB port and a B/W (monochrome) port as screen outputs. The signals coming out of the RGB port are as shown in the following figure. Since H-Sync and V-Sync are inverted, you can use an appropriate circuit to invert them an…