| このページではかつてNECが発売していたPC-9821をエミュレーションするソフトウェア、SL9821の実行ファイルとソースファイルを公開しています。本ソフトウェアを動作させるためにはPC-9821実機のROMデータ、フォントデータ等をファイル化したものが必要となります。
 
 そのため使用にあたっては、特に使用条件を守っていただきますようお願いいたします。
 また、本ページの対象者はエミュレータを利用したいという方よりは、技術的な関心を持った方と考えております。
 SL9821の特徴本エミュレータは1992年に発売されたPC-9821シリーズの最初のモデルPC-9821(無印)をベースに作成しています。PC-9821は従来のPC-9801からビデオ、サウンド関係の機能が強化されており、
 ・1677万色中256色、最大解像度640x480の画面モードの追加
 ・YM2608のよるステレオFM音源+リズム音源とPCM音源によるオーディオ機能(いわゆる86音源)
 ・CD-ROMドライブの内蔵
 といった当時はやりつつあったマルチメディア関係の機能が追加されています。
 本エミュレータでは出来る限りこの辺の再現性の高いものを目指そうという方針のもとに作られています。
 とりわけ、この時期に発売されたPC-9821の256色の画面モードにはプレーンモードという論理演算を用いたVRAMの書き換えが出来るモードがあったのですが、従来それを十分に再現できる98エミュレータがなかったため、この機能を出来るだけ実機に忠実に作ることを目標にしています。
 
 一方で一部実機と異なる機能としては、
 CPUのベースを386から、486に変更
 搭載可能メモリを最大14.6Mバイトから255.6Mバイトへ増加
 認識可能な最大HDD容量を540Mバイトから4Gへ増加
 など実機より強化した仕様で実装しているものもあります
 動作要件WindowsVista SP2以降のWindowsOS(32/64ビット ※実行ファイルは32ビットで動作します).NET Framework4.0
 2コア以上のCPU
 DirectX11に対応したGPU(使用している機能はDirectX9Ex)
 44.1KHzまたは48KHzのPCMが再生可能なオーディオ環境(XAudio2を使用)
 3モード対応FDD (2モードの場合は2DDのみ使用可能)
 CD-ROMドライブ
 PC-9821実機について本エミュレータは実機のROM、データから作成したファイルを使用して動作させます。アプリケーション単体では動作しません。そのため、動作可能な実機(PC-9821)が必要となります。
 必要なファイルはダウンロードサイトにあるツールを用いて実機上で作成する必要があります
 ツールでファイル化したデータはハードウェア製造メーカの著作物であるため、ハードウェア所有者以外が使用することがないよう取り扱いには注意してください。
 エミュレーション精度出来るだけ実機の挙動に忠実に動作するようにと努力はしていますが、技術的な限界や開発のプライオリティを下げて実装していない(要するにめんどくさがって実装していない)機能があったりします。以下に、本エミュレータと実機との比較表を示します 
        
          |  | 実機 | SL9821 | 備考 | 
|---|
 | CPU | 386SX-20MHz | 486SXベース | CPU速度はUIメニューによる設定、および上限はホストコンピュータの性能に依存 デバッグレジスタ、トラップレジスタは未実装
 |  | FPU | 387SX(optional) | 486DX相当 | チェックボックスにより有無の選択が可能、演算精度は実機が最大80ビットなのに対し、エミュレータは最大64ビット |  | メインメモリ | 専用拡張メモリで最大11.6MB(modelS1) | 最大14.6MB | チェックボックスをONすることで最大255.6MBまで設定可能、ただし、00F00000h - 00FFFFFFhまでの1MBの領域を認識させていないため認識は254.6MBまで |  | グラフィック | 640x400 4096色中16色 640x480 1677万色中256色
 | ← |  |  | サウンド | ビープ SSG 3声
 FM音源 6声ステレオ
 リズム音源 6声ステレオ
 PCM音源再生 1声ステレオ
 PCM音源録音
 | PCM音源 録音機能は未実装 |  |  | FDD | 2HD(1.23MB) 2DD(640MB,720MB)
 | ← | 1.44MBの2HDには非対応。1.23MBのフロッピーディスクをエミュレータ上で使用する場合は、3モード対応のフロッピーディスクドライブが必要になります |  | HDD | 最大544MBのIDE HDD | 最大4GのHDDイメージ | エミュレータ本体の代替機能を使用することで、2つのHDDイメージを認識可能 |  | CD-ROM | 等速CD-ROMドライブ | 対応 | ホストコンピュータに接続されたCD-ROMドライブまたはISOファイルに対応。速度はホストコンピュータに依存 |  | SCSI | PC-9801-55L相当 | CD-ROM制御にのみ対応 |  |  | シリアルポート |  | ホストのCOMポートへ割り当て可能 | 調歩同期のみ実装。実験的な実装です。 |  | パラレルポート |  | 非対応 |  |  参考サイト/参照資料以下本サイトで公開しているプログラムを作成するにあたり参考にしたwebサイト、書籍等になります(著者敬称略)webサイトへのリンクは先方への配慮のため直接リンクをしていませんが、タイトルで検索をかけると見つけられると思います。
 
 
        WEBサイト
        UNDOCUMENTED 9801/9821 Vol.2 - メモリ・I/Oポート編株式会社ウェブテクノロジの公開されているサイトです本業とは離れた古い情報ということもあるのかサイトマップにはページ情報がありませんが、ハードウェア(I/Oポート)関係の検索をかけると、ほぼ確実にこちらのサイトのテキストファイルがヒットするという、とにかくこのページの情報がないと始まらないと言えるほどお世話になったサイトです。
 とりわけテクニカルデータブックを所有していない私にとっては大変貴重な情報を提供してくださいました。
 20年近く前の情報を今もって公開し続けてくださっていることに大変感謝いたします。
パソコンのレガシィI/O活用大全  桑野雅彦 著CQ出版社が公開されているサイトで、PC-98でも使用されている割り込みコントローラの詳細が説明されています。元々は書籍の内容の一部抜粋のようですが、私はこの書籍を所有していないためこのサイトで説明されている情報でかなり助けられました。
 
        書籍(出版社は販売当時のもの、大半は絶版だと思います)
        PC-9801 スーパーテクニック 小高輝真 清水和文 速水祐 共著 アスキー出版局周辺モジュールのハードウェアエミュレーションは当初はこの書籍の巻末にある資料を頼りに作成していました。テクニカルデータブックを所有していなかったため、周辺機器のIO制御の情報全般はこの本頼みでした。最も前述の「UNDOCUMENTED 9801/9821」サイトの方が情報的に新しいためそちらと見比べながらといった感じで使用しました。
GDCテクニカルブック 星野進二 著 日本ソフトバンク実機でプログラミングをしていた頃はGDCにはあまり関心がなくもっぱら256色モードばかりいじっていて、なんとなくで買ったこの書籍は購入当時は全く活躍の場がなかったのですが、そのときこの本を購入していなければおそらくテキスト表示を含めたグラフィック周りの実装は不可能ではなかったかと思います。(裏を返せばこの本を持っていたからこそエミュレータ作成の決断ができたということもいえると思います)
PC-9801シリーズマシン語サウンドプログラミング 青山学/日高徹 共著 アスキー出版局サウンド周りの実装でお世話になりました。といってもハードウェア情報的にはむしろこの手の本としては情報不足の感がありますが、資料から入手可能な情報ではFM音源のパラメータと実際の出力レベルの関係が不明確であったため、実際に出力したデータを録音して関係性を見いだそうとした際に、この書籍の掲載プログラムが大変役に立ちました。ATA(IDE)/ATAPIの徹底研究 インターフェース編集部編 CQ出版社IDE周りと、CD-ROMドライブ制御のためのSCSIコマンドを調べるのに参考にしました(ATAPIコマンドはSCSIコマンドをベースにしています)。このエミュレータを作成するのに新たに購入した書籍なので、現在でも新品が購入可能だと思います。(SATAの時代に今更IDEもないですが)PC-8801シリーズ マシン語マスターバイブル 日高徹 著 小学館98関連の書籍ではありませんが、カレンダ機能(μPD4990AC)等98と共通で使用されているハードウェアを実際に制御するための簡潔なプログラムを掲載してくれているため、ハードウェアエミュレーションの参考にさせて頂きました。(IOポートの説明よりも実際に制御しているプログラムを参考にした方がエミュレータをどう実装すればよいのかというのがよくわかります)ざべ 1993年9月 no.124、1993年10月 no.125 技術評論社(該当記事著者 こうのたけし 小高輝真)この号から3ヶ月ほどPC-9821で拡張された機能の特集をしていました。9月号はグラフィック、10月はサウンドで、たしか11月は3モード対応FDDだったはずです。(私の所有機は初代PC-9821で3モード非対応だったため11月号は未購入)
 256色のプレーンモードに関しての記述はほとんどなく実際には自力での解析が必要でしたが、それ以外の情報とプレーンモード解析の足がかりとして非常に参考になりました。
トラ技コンピュータ別冊 MS-DOS 基本プログラミング第6集 X86プロテクトモード・プログラミング 大貫広幸 著 CQ出版社x86のプロテクトモードについて勉強しようと思って購入した本です(元ネタのトラ技コンピュータの方も持っています。こちらの方が2色刷とページ割りの関係で読みやすい)。結局当時はよく分からないまま放置してしまったので、x86のプロテクトモードやページングに関しては本エミュレータ開発の開始当初ほとんど理解できていませんでしたが、この書籍には本当に基本的な部分からお世話になりました。おかげでx86のプロテクトモードの概要がだいぶ分かったような気がします。
MS-DOS 5 アセンブラプログラミング 桜田幸嗣 著 アスキー出版局MS-DOSの動作確認、デバッグをする上でINT 21hの機能を確認するために使用しました。DOSファンクションの本はいくつか持っていたはずなのですが、手元にはこれしか見つけられませんでした。Microsoft Macro Assembler Professional Development System Reference (MASM version 6.0付属品)CPUエミュレータの基本情報はこの書籍から得ています。(不足分は後述のIntelのPDF)FPU以外の命令はオペコードも併記されていて便利なのですが、内容自体に不備が散見される(私のは初版第2刷)のが残念なところです。
 
        PDF
        Intel® 64 and IA-32 Architectures Software Developer’s Manual三分冊のドキュメントでIntelのホームページから入手可能です。各命令の機能の詳細、コントロールレジスタ等の機能に関してはこのドキュメントを参考にしないとどうしようもありませんでした。(といってもくまなく読めているわけではありませんが...)
MPU-401 テクニカル リファレンス マニュアルMIDI1.0規格書 MIDI Standard & Recommended Practice(日本語版 98.1)MIDIの実装に使用した資料です。前者は実際のハードウェアをソフトウェア制御するためのマニュアルで、Rolandのサイトで今も入手可能です。以下入手元を明確に記録していなかっため、正確な入手元が不明なハードウェアのドキュメントPDFです。検索すると見つかると思います後者は、一般社団法人音楽電子事業協会のサイトから入手可能です。
8237A HIGH PERFORMANCE PROGRAMMABLE DMA CONTROLLER(DMA)82C55A CMOS Programmable Peripheral Interface(周辺IO)8259A PROGRAMMABLE INTERRUPT CONTROLLER(割り込みコントローラ)82C54 CHMOS PROGRAMMABLE INTERVAL TIMER(インターバルタイマ)MSM82C53-2RS/GS/JS(インターバルタイマ)μPD765A/μPD7265 SINGLE/DOUBLE DENSITY FLOPPY DISK CONTROLLER(FDC)μPD4990A CMOS LSI シリアルI/O カレンダ時計YM2608 OPNAアプリケーションマニュアルWD33C93A SCSI Bus Interface Controller(SCSI) 改訂履歴
      2021/5/7macOS版に実験的にnotarization済みの実行ファイルをダウンロードファイルとして追加してみました(内容の更新はありません)2021/5/2ダウンロードファイルアップデート2021/1/24ダウンロードファイルアップデート2021/1/17ダウンロードファイルアップデート2020/12/27ダウンロードファイルアップデート2020/9/5ダウンロードファイルアップデート2019/11/6mac版のダウンロードファイルのリンク先が間違えていたのを正しました。修正が遅れて申し訳ありません2019/10/13ダウンロードファイルアップデート(macOS版、ソースコードのみ)2019/10/12ダウンロードファイルアップデート2019/8/923:30追記 macOS向けのzipファイルについて、今までアップロードしていたファイルではmacOS10.15では実行できないものになっていました。現在は実行できるものと差し替えましたので、23:30以前にダウンロードして動作しない場合はお手数おかけしますあらためてダウンロードし直してください。
しばらくの間、不手際によりサーバがダウンしておりました(おそらく7/30頃から?)。ご迷惑をおかけし申し訳ありませんでした。2019/7/20なお、余談ですが2年くらい前からLet's Encryptを利用させていただきSSLに対応しています。保護された接続でアクセスしたい方はhttpsが利用可能です。
ダウンロードファイルアップデート(macOS版、ソースコードのみ)2019/6/29ダウンロードファイルアップデート2019/5/24ダウンロードファイルアップデート2019/5/18ダウンロードファイルアップデート2019/4/29ダウンロードファイルアップデート(今回も更新はmacOS版、ソースコードのみです)2019/2/10ダウンロードファイルアップデート(macOS版、ソースコードのみ)2019/2/10ダウンロードファイルアップデート2019/1/28ダウンロードファイルアップデート2019/1/27ダウンロードファイルアップデート2019/1/26更新履歴にエンバグしている旨のコメント追記
ダウンロードファイルアップデート2019/1/20ダウンロードファイルアップデート2018/10/14ダウンロードファイルアップデート2018/3/3ダウンロードファイルアップデート2018/2/24ダウンロードファイルアップデート2018/1/20ダウンロードファイルアップデート2017/11/18ダウンロードファイルアップデート2017/8/26Raspberry Pi3とFDDで物理フォーマットレベルでデータ解析してフロッピーディスクイメージを作成するツールの紹介サイトをこちらに作成しました。
ダウンロードファイルアップデート2017/7/30ダウンロードファイルアップデート2017/7/17技術的なはなしのページを更新
ダウンロードファイルアップデート2017/7/9ダウンロードファイルアップデート2017/6/3ダウンロードファイルアップデート2017/5/20ダウンロードファイルアップデート2017/4/30参照資料にMIDI関連を追加2017/2/8ダウンロードファイルアップデート
ダウンロードファイルアップデート2017/2/4ダウンロードファイルアップデート2017/1/25ダウンロードファイルアップデート2017/1/22ダウンロードファイルアップデート2017/1/3FAQのハードディスクイメージファイルのデータ構造について記述ミスを修正2016/12/26ダウンロードファイルアップデート2016/12/14ダウンロードファイルアップデート2016/9/22ダウンロードファイルアップデート2016/9/15使い方の設定に、低容量のハードディスク作成時に指定した容量にならない件について追記2016/9/12ダウンロードファイルアップデート
使い方の前準備でIDE BIOSなどの取得方法の条件に関して追記(mura様ご指摘ありがとうございました)2016/9/2ダウンロードファイルアップデート
ダウンロードファイルアップデート2016/8/29ダウンロードファイルアップデート、FAQにFDドライブの読み書きに失敗するケースについて追記2016/8/3サイト開設
 |