CP/M Player for Win32
	MSX-DOS Player for Win32
	
	This software is CP/M-80 and MSX-DOS1 emulator for Win32 environments.
	This is the test release version, use at your own risk.
	
	Download
	
	
	
	
	CP/M Player for Win32 謎WIPページ
	MSX-DOS Player for Win32 謎WIPページ
	
	恒例の謎日記
	
	2025/5/25
	Roy Tam様のForkから、BDOS 69hの実装を取り込ませていただきました。
	CP/M Plusのサービスで、現在の日時を取得するものです。
	
	2024/12/31
	B-Pドライブの処理を修正しました。
	カレントディレクトリをAドライブとして、B-PドライブはB-Pという名前のサブディレクトリに
	アクセスする仕様のつもりだったのですが、1文字ずれてC-Qにアクセスしてしまってました。
	ついでに、Bドライブ以降にファイルを作成する際、自動的にサブディレクトリを掘るようにしました。
	…なんで長年気付かなかったんでしょう(汗
	
	2024/12/12
	
	BDOS 0Bhで、コンソールに入力がない場合に、Zフラグを立てるようにしました。
	
	MSX-DOSスーパーハンドブック掲載のASM.COMが動くようになっています。
	ASM.COMでは、常に?BDOS 0Bhでコンソールのキー入力の有無をチェックして、
	キー入力があればBDOS 01hで1文字読み取るようになっていました。
	BDOS 0Bhは、コンソールの入力の有無でAにFFh/00hが返るとされていますが、
	ASM.COMは、Aの返り値でなく、Zフラグの状態で判断していたため、
	キー入力の有無を誤判定して、BDOS 01hでキー入力があるまで止まっていたようです。
	
	2024/10/18
	Ctrl-C/Breakで終了した場合に、開いたままのファイルを閉じたり、
	コンソールのモードを元に戻すなど、後始末の処理をするようにしました。
	
	2024/10/14
	COMMAND.COMを起動した場合、トランジェントコマンドが終了する、
	またはトランジェントコマンド実行中にCtrl-C/Breakが押されると、
	COMMAND.COMに戻ってくるようにしました。
	COMMAND.COM実行中にCtrl-C/Breakが押されると、MSX-DOS Playerが終了します。
	
	COMMAND.COMがF020h辺りをワークエリアとして使っているようなので、
	F000h以降をMSX用のワークエリアとしました。
	また、ワークエリア上に2DD 9sec/track相当のDPB領域を用意しました。
	BDOS 1Bhで、IXにDPB領域のアドレスが返るようになっています。
	
	MSX固有のコントロールコードをサポートしました。
	CLS.COMで画面がクリアされるようになっています。
	
	起動時に、コンソールのサイズを80x24に変更するようにしました。
	MEDなどで、画面にゴミが残らなくなっているかと思います。
	
	2024/10/13
	BDOS 14h(ファイルオープン)について、ワイルドカードに対応しました。
	BDOS 16h(ファイル新規作成)について、エクステント番号によって処理を分けました。
	番号が0の場合は新規作成、それ以外は既存ファイルのオープンとなります。
	
	ファイル操作周りを更に修正しました。
	読み込みしかしていないファイルは、クローズ処理をしなくてもよいとのことなので、
	後でファイルのリネームや削除をする際に、開きっ放しで失敗しないように、
	読み込みアクセスする都度、書込みされていないファイルを閉じるようにしました。
	
	2024/10/12
	BDOS 13h(ファイル削除), 17h(リネーム)について、ワイルドカードに対応しました。
	BDOS 1Ch, 1Dh, 20hを、MSX-DOSで無効にしました。
	BDOS 28hで、ファイル末端より先に書き込む場合、隙間をゼロフィルするようにしました。
	
	ファイル操作周りのコードを整理しました。
	特に、ファイルの検索の処理に無駄があったのを修正しています。
	
	2024/10/10
	ファイルに書込みを行う都度、FCB内のファイルサイズと更新日時を更新するようにしました。
	ファイルをクローズする際、FCB内のサイズと日時をファイルに反映するようにしました。
	PMEXTLDは、FCB内の情報を書き換えて、タイムスタンプとサイズの補正をしているようです。
	
	ファイルのサーチ数を、最大256個から1024個に増やしました。
	MGSFで、ファイル数が多いときにDIRファイルが生成できない問題が直っているかもしれません。
	
	BDOS 1Bhで、2DDにあわせて適当なアロケーション情報を返すようにしました。
	ただしDPBとFATの先頭アドレスは0にしています。
	また、BDOS 25hは、MSX-DOSでは使われないようなので無効にしました。
	
	2024/10/09
	
	スキャンコードがE0h付きのキー(カーソルなど)の入力を取得できるようにしました。
	また、MSX-DOS仕様のエスケープシーケンスをサポートしました。
	このとき、画面の行数はワークエリアのF3B1hから取得するようにしています。
	
	MSX-DOS TOOLSに入っているMEDが動作するようになっています。
	ワークエリア内の行数を変更して、ESC MやESC Lのスクロール範囲を制限することで、
	画面下の桁数表示を固定しているようです。
	なお、ESC x/y 5によるカーソルの表示・非表示の切り替えは無効にしています。
	これを使ってカーソルの点滅をしているようですが、Windows側の点滅と重なって、
	カーソルがほとんど見えなくなってしまうためです。
	
	2024/10/07
	Disk BIOSのワークエリアが、CP/MのBIOS/BDOSに浸食されていたのを修正しました。
	また、F37Dh経由でBDOSを呼び出せるようにしました。
	
	2024/10/06
	MS-DOS Playerの方を弄っていたら、MSX-DOS Playerという単語が浮かんできまして(苦笑)
	CP/M PlayerのWin32コンソール版に、
	
		- MSX-DOS1の固有のファンクションコール
 
		- MAIN/SUB/DISK ROM内のBIOS、拡張BIOSの一部
 
		- メモリスロット、ページ3のマッパー(RAM 4MB)
 
		- 漢字ROMの一部
 
		- RP-5C01
 
		- ワークエリアの設定
 
	
	だけ追加してみました。
	(最初はMSX-DOS2仕様を目指してましたが、流石に仕様が大規模過ぎて断念しました)
	
	BIOS類は、画面モードの切り替え、文字の入出力、スロット周りの操作に関するものを、
	概ね実装してあります。
	CALSLT/CLPRIM経由の呼び出しも、BIOSを表に出して直接CALLも、どちらも可です。
	拡張スロットは未実装で、スロット1にSUB/DISK ROMを配置しています。
	拡張BIOSは漢字ドライバのみで、漢字モードの切り替えのみをサポートしています。
	漢字ROMは、存在判定に必要な最低限の16バイトのみサポートしています。
	
	VDP周りは未実装です。
	BIOS/BDOSともに、ディスクの直接読み書きは常に失敗します。
	
	
	半角ひらがなは、半角カタカナで表示するようにしています。
	漢字ドライバで、漢字モードをセットすると、この処理は無効になります。
	
	2014/12/31
	Win32コンソール版を更新しました。
	BDOS C=0AHにおいて、取得した文字列の末尾に改行コードが含まれてしまう問題を修正しました。
	また、Z80コアを、コモンソースで使用している、MAME 0.145ベースのものに差し替えました。
	
	2012/11/28
	Win32コンソール版を更新しました。
	
	藤田 望様よりご提供いただいていましたパッチを適用しました。
	HI-TECH Z80 CP/M C compiler, Aztec C, Small C, BDS-C, Mix C, Turbo Pascal, VDE, UNARC.COMなど、
	多数のソフトウェアが動作するようになっているかと思います。
	パッチのご提供ありがとうございました、対応が遅くなってしまい申し訳ありません>藤田様
	
	
	また、自前でVT-52/ANSIのエスケープシーケンスを処理するようにしました。
	ROGUEなどのソフトが、素のコンソール上で正しく表示できるようになっているかと思います。
	
	その他、M-BASICが動作しなかったのを修正しました。
	以前どこかのスレッドで問題箇所をご指摘いただいていて、直していたつもりだったのですが。
	直したバージョンをリリースし忘れていたのかな(苦笑)
	
	2009/5/17
	Win32コンソール版を作成しました。
	Windowsのコマンドプロンプト上で動作します。
	最近CP/M上の開発を行っており、利便性向上のため自分用に作成した副産物です。
	コアは従来のCP/M Playerと同じですが、ディスク周りのBIOS/BDOSの高速化を図りました。
	また、キー入力や文字出力も、標準的なCの関数に置き換えています。
	
	
	実質的にはSmall-Cやマクロアセンブラなどの開発言語用ですね。
	一応はZORKなんかも動いています。
	エスケープシーケンスを使用する場合は、コマンドプロンプトでANSI.SYSを組み込んでください。
	
	2004/4/2
	今回は、HPC2000版とPPC2002版のみの更新です。
	
	PocketPC版で、従来フォントが潰れて視認性が悪いという問題がありました。
	これの対策として、自作の8x5フォントを使用するようにしました。
	フォントサイズ自体はこれまでより小さいのですが、視認性は大いに向上しています。
	ついでに、PocketPCではSIPを残してフルスクリーン表示するようにしています。
	
	自作したフォントのイメージ。
	
	
	PocketPCで表示すると、こんな感じになります。(240x216)
	
	
	2004/3/24
	PocketPC 2002(ARM)版を作成しました。
	動作確認はCASIO E-3000上で行っています。
	
	後は、
	
		- 先日のグリーンモニタ対応を正式に取り込んだ(カラーと切り替え)のと、
 
		- 画面右下に文字を出力したときに表示されない不具合を修正したのと、
 
		- Sleepを入れる頻度を減らして多少の高速化を図った
 
	
	程度です。
	
	グリーンモニタでZORK 2を動かすと、こんな感じになります。
	…オレンジ色にして、初期のJ-3100モード、なんてのは要らないですよね(笑)
	
	
	2004/3/21
	HPC 2000(ARM)版、実質sigmarion3版を作成しました。
	いまいち動作がとろいですが、一応動作はしています。
	
	リクエストに答えて、一発ギャグのグリーンモニタ仕様。
	一発ギャグと言いつつ、多分次回あたり正式に導入します(笑)
	
	2004/3/21
	部分的に、P-CP/MやCP/M Plusの仕様を盛り込み始めました。
	P-CP/MやCP/M Plusならではの機能を使用しているソフトが見当たらないので、実装する意味があるのか微妙ですが。
	そういう訳で、ソフト名から2.2を除いています。
	
	VT-52の実装を修正した結果、幾つかのソフトが動作するようになりました。
	WordStar 2.26とか、
	
	
	ROGUE 1.7 for CP/Mとか。
	
	
	後はユーザビリティの向上を幾らか。
	最近開いたファイルを選択できるとか、画面サイズ変更とか。
	画面サイズについては、80x48, 80x24, 40x24から選択可能です。(40x24はPocket PC版への布石だったりします)
	Versionという項目がありますが、これは単にBDOS func #12への返り値を設定するだけです。
	
	
	2004/3/17
	ファイル操作周りの細かいところを修正した結果、HITECH-Cが動作するようになりました。
	
	
	コンパイルしたTEST.COMを実行した結果は以下の通り。
	HITECH-Cの使い方については、「Tatsu's MSX情報局 -MSX C Magazine-」を参考にさせて頂きました。
	
	
	2004/3/16
	アクセス規制中につき、こちらにて。
	
	>>311氏
	いえいえ、どうか御気になさらずに。
	HITECH Cも追いかけているんですが、現状では$$EXEC.$$$にコマンドらしきデータを 出力したところで止まっています。
	BDOS Call 102とか、CP/M Plusのシステムコールまで使ってるみたいなんで、>>314氏に御紹介頂いたサイトを参考に、P-CP/MやCP/M Plusの実装も進めることにしようかと思ってます。
	
	とか書いてたんですが、その後色々弄ってたら、なんかそれっぽいのが動いてるみたいです。
	(いや、ちゃんと動いてるのかどうかは判らないんですが)
	主な修正個所は、謎日記参照ということで。
	
	
	2004/3/15
	CP/Mエミュレータでは違和感を感じる、とのご意見を頂きましたので改称しました。
	主にファイル操作周りのBDOSの実装を進めたのと、VT-52としてのコンソール機能の強化を行っています。
	スクリーンショットはMultiplanのものです。
	
	
	2004/3/14
	リハビリとして、何を今更CP/Mなものをつくってみました。
	まだ実装途中ですが、一応ZORK1が何とか動く程度にはなっています。
	それ以外のソフトは多分まず動かないです。
	
	CP/Mのシステムソフトウェアは必要ありません。
	CP/MのBDOS/BIOS互換環境が内部で実装されています。
	直接CP/Mの実行ファイル(*.com)を実行することが可能です。
	
	取り敢えず、ZORK1が動いた証拠のスクリーンショット。
	
	
	フォントを変更することも可能です。
	.lfCharSet == SHIFTJIS_CHARSETなフォントを選択した場合は、半角カナと漢字表示も受け付けるようになっている、筈です。
	