tunozemichanの日記 / tunozemichan's diary

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

2022-01-01から1年間の記事一覧

FM-7版S-OS SWORDを動かしました。

FM-7版S-OS SWORDを入力、動かしました。このS-OSは、Oh!MZ1987年8月号に掲載されたものです。FM-7のCPUは6809ですので、Z80用のS-OSは動きませんが、Z80カードというオプションがあり、これによりS-OSを動かすことができます。しかし、これにとどまらず、Z8…

SORD M23へのCP/M移植メモ その2(ブロッキング/デブロッキング)

/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */ /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corpor…

SORD M23へのCP/M移植手順メモ その1(ソースコードとその他のツールの入手)

CP/Mの入手 cpm2-asm.zipと、cpm2-plm.zipを入手する。 CBIOS.ASMをZ80表記にする。 CBIOS.ASMはcpm2-plmのディレクトリ内にある。まずTOZ.EXEを入手する。ターミナル画面からMS-DOS playerを使って以下のように入力する。 > msdos.exe TOZ.EXE CBIOS これで…

SORD M23のフロッピーディスクの制御(WRITE編)

WRITE編です。これもSORD M68のときとほぼそのままです。 DMAコマンドチェーンは以下の通りです。 DMA_WRITE_COMMANDS: DB 16H DB 0C3H,0C3H,0C3H,0C3H,0C3H,0C3H DB 83H ; STOP DMA DB 79H ; DB 00H,020H ; source memory address DB 00H,0FFH ; byte numbe…

SORD M23のフロッピーディスクの制御(READ編)

SORD M23のFloppy Disk ControllerはMB8877A(FD1771)です。これはSORD M68と同一ですので、以前、CP/Mを移植したルーチンがほぼそのまま利用できます。 I/Oアドレスは以下の通りです。 FDC_COMMAND EQU 0C0H FDC_STATUS EQU 0C0H FDC_TRACK EQU 0C1H FDC_SEC…

SORD M23のキーボード

SORD M23のキーボードの仕組みについて調べました。 M23のキーボードはI/Oポートe0~efに割り当てられています。何かキーを押すと、このポートのどれかに04h、08h、10h、20h、40hが入ります。 I/Oポートe0~efとこの値はキーの物理的に位置によって決まりま…

SORD M23の画面に文字を書く

Takeda氏が解析してくださったおかげで、色々なことが容易になりました。 今回は文字を表示します。 SORD M23のCRTCはHD46505SでBOOT ROM内で、80桁、25行に設定されています。 テキストVRAM(文字コード)はF800hからFFFFhまで、テキストVRAMのアトリビュート…

PASOPIA7でテープを使ってS-OS SWORDを実行する。

PASOPIA7を入手しました。またしても、なにもソフトがありませんので、S-OS SWORDを動かします。今回はFDDがありませんので、カセットテープで遊びます。 いつものように最初にイメージを置いておきます。本体だけでなくローダーも必要です。 LOADER.wav - G…

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…