歓迎光臨
"Emu23" - SORD M23 emulator for Win32
"Emu23" is SORD M23 emulator for Win32.
This software is under GNU GENERAL PUBLIC LICENSE.
This software requires Windows Vista/7/8/8.1/10.
Download: Jump to Common Source Code Project
Emu23 謎WIPページ
SORDと言えば、ホビー向けのm5より、PIPSを搭載したビジネス機。
Z80+Z80CTC+Z80PIO+Z80SIO+Z80DMA+AM9511、128KBのRAMと、何ともリッチな構成です。
更にMC68000を載せたM68も、いつかはサポートしたいですね。
解析資料はこちらです。
2023/6/7
前回の更新と同様に、別ページのメモリにジャンプする設定になっている間についても、
CPU側で割込みが発生しないようにしました。
2023/6/4
次の1バイトの読み書きだけ、別ページのメモリにアクセスする設定になっている間、
CPU側で割込みが発生しないようにしました。
設定直後に割り込みが発生して、PCの下位バイトが別ページにスタックされてしまって、
割込み終了後にOS PANICが発生する問題が解決しているかと思います。
2023/5/29
記録密度を指定するI/Oポートを修正しました。
ご指摘ありがとうございます。>つのぜみ様
これにあわせて、MB8877で各セクタの記録密度をチェックするようにしました。
2022/5/29
疑似ROMフォントを内蔵しました。FONT.ROMがない場合はこちらが使用されます。
現在のところ、JISのみの対応です。
ASCIIの方は、カタカナなどの領域に、発音記号付きのアルファベットなどが入ります。
ANK文字やカタカナなどは、例によってHPC版CP/M Player用に作ったフォント由来です。
漢字や平仮名については、美咲フォントを使用させていただきました。
BASICからだと表示できない領域にもパターンがあります。
VRAMの直書き換えで、全パターンを無理やり表示してみたのがこちらです。
OTHELOはこんな感じになりました。
罫線関係は、接続の関係で2dotの太さにしましたが、1dotの方が良かったかも?
2022/5/28
安定性の向上を図ってみました。
偶にSYSTEM PANICを起こしますが、大体は安定してBASICの起動が出来るようになったかと思います。
OTHELOの読み込みはまだ失敗率が高いです。
Z80PIOからFDCの割込みを受けてRETIして、シークしようとする前にZ80CTCの割込みを受けて、
そこで何かメモリが壊れて、変な値がトラックレジスタやセクタレジスタに書き込まれるようです。
もうちょっと調査が必要そうですね。
その他、Z80ファミリーの割込み優先順位を修正したり、Z80CTCの入力クロックを実測値に合わせたり、
キーボードの種類を取得するI/Oをサポートしたり、色々調査で分かった内容を反映しています。
2022/5/25
つのぜみ様のM68の解析記事に触発されまして、まずはM23に取り掛かってみました。
以前、ヤフオクで落札していた資料。
ハードウェアの情報は皆無ですが、OSのサービスレベルの解説が思いの外に参考になりました。
RAMが64KB*2の2ページ構成ですが、次の1バイトの読み書きだけ別ページにアクセスするとか、
次のジャンプ命令でページを切り替えるとか、ちょっと珍しい方式になっています。
DMAのアクセス先は、現在選択されているページとは別に指定する形のようです。
Z80ファミリーのチップがデイジーチェーンで繋がっていて、FDCのIRQはZ80PIOで受け取る、
といった感じで、割り込み周りはオーソドックスですね。
Z80CTCの割り込み周期がちょっとずれるとOS PANICになるなど、タイミングがシビアです。
ちょっと面白いと思ったのがBEEPのポートで、IN/OUTするたびにbit0が反転します。
このポートを一定周期でアクセスすることで、任意の音程で音が出るようになっていました。
ブートしたところ。
フロッピードライブと接続アダプタとディスクがないと、本体だけでは何も出来ません(苦笑)
キーボードのLEDでアラーム状態を示す仕様なので、ステータスバーに表示するようにしました。
OSをブートして、BASICを立ち上げてみました。
LIST表示がカッコいいですね。
BASICのサンプル?として、オセロのプログラムが入っていました。
フォントROMが基板に直付けで吸い出せてないため、別の機種のフォントROMを代わりに使ってます。
そのためグラフ文字が化けてしまっています。
SETUPコマンドを実行してみました。