■履歴■ ------------------------------------------------------------------------------ [Release 6.91] Ver. 6.6.19 2016.01.23 ------------------------------------------------------------------------------ ・CMT IF(load側) ・存在しないテープイメージをアクセスしようとして落ちることがあった ・割り込みを使ったロード時の内部動作を変更した 読めなくなったイメージがあったら報告をお願いします ・Cmt2Cmt BrainMedia:GALA#1,#2 (PC-8801「GALACTRON」) の解析に対応した ------------------------------------------------------------------------------ [Release 6.90] Ver. 6.6.18 2016.01.17 ------------------------------------------------------------------------------ ・cfg で自動タイプ速度の初期値を変更できるようにした OPTION:-typer 自動タイプについて: BASICのスクリーンエディタではファンクションを表示すると反応が鈍ります N88 BASIC は N BASIC より反応が鈍いようです デフォルトの 500cpm は N BASIC, ファンクション非表示 を想定しています タイプミスが起きない安全な設定でお使いください [タイプ速度の影響を受ける機能] ・ファイル入力 ・クリップボード入力 ・j80のタッチパネル機能 ・ローマ字入力 ------------------------------------------------------------------------------ [Release 6.89] Ver. 6.6.17 2015.12.26 ------------------------------------------------------------------------------ ・仮想キーボードの管理方法を変更した (Java版のみ) キートップ画像や背景色を変更できるようにしました ※cfgの設定に変更があります 仮想キーボードの id が、Java版とAndroid版で一致しなくなりました Java版では「ハードウェアの特徴」と「外観」を分けることにしました 外観は KEY:id で画像ファイルや背景色を設定して差し替えます ------------------------------------------------------------------------------ [Release 6.88] Ver. 6.6.16 2015.12.23 ------------------------------------------------------------------------------ ・80系の吸出しドキュメント・ツール類の整理のみです ./util/GetROM/ 以下を参照してください エミュレータ本体に変更はありませんが念のためバージョンを上げています ------------------------------------------------------------------------------ [Release 6.87] Ver. 6.6.15 2015.12.06 ------------------------------------------------------------------------------ ・88系の拡張メモリの選択ロジックを再調整した 仮実装です ------------------------------------------------------------------------------ [Release 6.86] Ver. 6.6.14 2015.12.02 ------------------------------------------------------------------------------ ・T882Cmt のバグFIX ビット長が常に 5 になってしまうバグがありました ------------------------------------------------------------------------------ [Release 6.85] Ver. 6.6.13 2015.11.23 ------------------------------------------------------------------------------ ・8bit長のデータが2バンクに分かれた第1水準漢字ROMのファイルに対応した cfg:JIS1 に -8bit オプションを付けてください そのファイルをフォントに流用する場合、FONT にも -8bit オプションが必要です また、切り出し位置が 0x1000 から 0x0800 に変わりますので要注意です ・第2水準漢字ROM を 80mkII/SR が想定しているマップに配置できるようにした cfg:JIS2 に -n80 オプションを付けてください ------------------------------------------------------------------------------ [Release 6.84] Ver. 6.6.12 2015.11.23 ------------------------------------------------------------------------------ ・テスト版をリリースしてしまったので差し替えた ------------------------------------------------------------------------------ [Release 6.83] Ver. 6.6.11 2015.11.22 ------------------------------------------------------------------------------ ・テープイメージを拡張した CASファイルにも若干の拡張があります 拡張部分は j80 では使用していません 今までと違う振る舞いをしたらバグですので報告をお願いします ・デバッガ(GUI)の「CPUステータス」の表示を変更した ・「エミュレータの状態」と「CPUの状態」を切り分けた エミュレータの状態をラベルで、CPUの状態を背景色で表現しています(暫定) ・HALT を確認できるようにした 背景色が「赤」くなります ・デバッガから HALT を解除できるようにした ステータス欄をダブルクリックで解除できます(暫定) PC を更新した場合も HALT は解除されます DEBUG.BREAK: HALT RET CALL DEBUG.BREAK ; デバッガから解除可能 HALT で止めた場合、画面出力は生きているので表示が更新されます デバッガで BREAK した場合は(内部カウンタが狂うので)画面を更新していません ・80mkII/SR の 第2水準漢字ROM のアクセス方法を変更した こちらの調査結果を参考にさせて頂きました 80mkII愛友会 別館 http://www5f.biglobe.ne.jp/~apaslothy/cgi_bin/adiary/adiary.cgi/068 ------------------------------------------------------------------------------ [Release 6.82] Ver. 6.6.10 2015.11.10 ------------------------------------------------------------------------------ ・Cmt2Cmt CarryLab:JE6#Loader のボーレートが 1200baud固定になっていた ------------------------------------------------------------------------------ [Release 6.81] Ver. 6.6.9 2015.11.06 ------------------------------------------------------------------------------ ・アセンブラの仕様を調整した BINCLUDE では、DS,DW で予約した領域にもロードできるようにしました 警告等は一切表示しませんのでご注意ください なお、ロード後に DS,DW で重なるアドレスを割り当てることはできません ------------------------------------------------------------------------------ [Release 6.80] Ver. 6.6.8 2015.10.31 ------------------------------------------------------------------------------ ・デバッガが落ちるバグFIX R6.79 のロジック変更で漏れがありました ・88系の拡張メモリの選択ロジックを調整した 一部 80系のロジックのままになっていた点を変更してみました 仮実装です ------------------------------------------------------------------------------ [Release 6.79] Ver. 6.6.7 2015.10.25 ------------------------------------------------------------------------------ ・PC-8001 の動作速度を変更した 見て判るレベルで再現性に問題が生じるタイトルがあったので再調査しました 原因がつかめましたのでロジックを変更しました ------------------------------------------------------------------------------ [Release 6.78] Ver. 6.6.6 2015.10.16 ------------------------------------------------------------------------------ ・デバッガ系のGUIを表示した後、フルスクリーン⇔Window切り替えで落ちるバグFIX とりあえず落ちない程度に対策しました 注意事項: ・GUIが表示されていたら切り替えを拒否します ・切り替え時にGUIを破棄します ・スクロール位置などのGUI系の情報は失われます ・メモリエディタの検索欄はクリアされます ・編集中の .dbg は破棄されます ・仮想キーボードを表示した後、フルスクリーン⇔Window切り替えで落ちるバグFIX とりあえず落ちない程度に対策しました 注意事項: ・仮想キーボードが表示されていたら切り替えを拒否します ・仮想キーボードの仕様を整理した GUIを閉じる際の通常キーのロック状態に関する仕様をFIXしないで忘れていました エミュレータ側にはロック解除を通知して(不可視の)押しっ放しを回避する一方で GUI側の状態は変更していませんでした ・PC-8001 の動作速度を調整した ------------------------------------------------------------------------------ [Release 6.77] Ver. 6.6.5 2015.10.12 ------------------------------------------------------------------------------ ・アセンブラ ・大きなREPTマクロを定義すると落ちるバグ FIX ・DS の仕様を変更した ・第二パラメータ - ・スキップした範囲は 00H で埋めます - ・第二パラメータがあった場合は、その値で埋めます + ※Asm2Hex Ver. 0.6.7 から仕様を変更しました + ・第二パラメータが指定されていない場合はバイナリを生成しません + ただし、そのアドレスは「予約済み」として使用できなくなります + ・第二パラメータがあった場合はその値で埋めます + この場合はバイナリを生成します ------------------------------------------------------------------------------ [Release 6.76] Ver. 6.6.4 2015.09.26 ------------------------------------------------------------------------------ ・メインルーチンのバグFIX 条件によってドライブ側のタイマーが少しの間更新されないことがありました ・Disk側の割り込みを修正した R6.71から、CDOS-II で 2HDフォーマットができなくなっていました まだ根本原因はつかめていないのですが、パッチを当てておきました この不具合は Bookwormさんに見つけていただきました デバッグにも協力いただきありがとうございました ・Disk操作に関する仕様を変更した 実サイズより小さな N のセクタに書き込んだ際にゴミになる部分を削除するよう 仕様を変更しました ------------------------------------------------------------------------------ [Release 6.75] Ver. 6.6.2 2015.09.15 ------------------------------------------------------------------------------ ・メモリエディタ ・バイナリエディタ本体がフォーカスを受けたときの動作を変更した 旧:前回フォーカスのあったセルを表示範囲に入れる 新:何もしない ------------------------------------------------------------------------------ [Release 6.74] Ver. 6.6.1 2015.08.29 ------------------------------------------------------------------------------ ・バグFIX (メモリエディタ) ・アセンブルソースを食わせた際に落ちることがあった ・範囲外のオブジェクトが含まれていた場合に警告するようにした (Asm2Hex) ・終了処理を調整した 異常終了, 強制終了時にもエミュレータの終了処理を通すように変更しました 上記タイミングでもディスクイメージが更新されるようになりました 「強制終了」は環境依存しそうなので、不審な挙動があったら報告をお願いします なお、Windowsのコンソール(DOS窓)の [X] ボタンは「強制終了」になるようです ------------------------------------------------------------------------------ [Release 6.73] Ver. 6.6.0 2015.08.03 ------------------------------------------------------------------------------ ・ビデオ廻りの実装精度をすりあわせた 精度のアンバランスが原因で、画面にゴミが出ることがありました 関連する部分の精度をすり合わせて、ゴミが出ないようにしました 全てを同じ精度で実装できていないので、別の要因でゴミが出るかもしれません ・メモリエディタのバグをFIXした 80SR, 88系 の GVRAM#1,2 を正常に扱えていませんでした ※細かな部分を調整しながらディスクのエイジングを続けるつもりだったのですが、 ビデオ廻りに再現性に影響のある変更を加えたのでバージョンを上げました ------------------------------------------------------------------------------ [Release 6.72] Ver. 6.5.c 2015.08.01 ------------------------------------------------------------------------------ ・PC-8801 の DMA まわりを調整した ・ビデオまわりを整理&調整した ------------------------------------------------------------------------------ [Release 6.71] Ver. 6.5.b 2015.07.25 ------------------------------------------------------------------------------ ・サブシステムの割り込み廻りの実装を変更した ※ cfg:DRIVE の第3パラメータの意味が変わっています ※ 成り行きで制御していましたが、タイマーによる駆動に変更しました コードはあまり変わっていないのですが、動作メカニズムが大きく変わったので 確認をお願いします ・タイミングを調整した (誤魔化しが効かなくなった) ・成り行き制御由来のパッチを外した (異常動作に関係するものなので心配) ・ステータスの時間変化は未調整 (調整する必要があるハズ) ・メニュー等からディスクを直接交換した際に「間」を挿入するロジックを追加した サブ側でもクロックをカウントしたついでに実装しました 0.5秒間「ディスクが無い」状態を作ります 時間は適当に決めましたので、要望があったら変更します ・「ADPCMをロードする際に問題を起こさせるパッチ」を調整した R6b54→55 で導入したパッチが誤爆するケースがありました パッチ発動の条件を厳しくしました ------------------------------------------------------------------------------ [Release 6.70] Ver. 6.4.1 2015.07.20 ------------------------------------------------------------------------------ ・藍恋さんから不具合の報告を頂きました ありがとうございました ・D88イメージ ヘッダのセクタ数の値が実セクタ数を上回る場合でも利用できるようにした ・88系全般 4thROM の選択ロジックを調整した ・YM2608 「ADPCMをロードする際に問題を起こさせるパッチ」が原因の不具合を確認した R6b54→55 で導入したパッチです 対策を検討中です ------------------------------------------------------------------------------ [Release 6.69] Ver. 6.4.0 2015.07.04 ------------------------------------------------------------------------------ ・Cmt2Cmt ・HudsonCOMPAC:FORM/PC のバグFIX cas出力にバグがありました ・BrainMedia:FD* の解析に仮対応した BrainMedia:FDMAIN#Loader BrainMedia:FDMAIN#Data BrainMedia:FDSTAGE#Header BrainMedia:FDSTAGE#Data ・CMT IF の動作精度を上げた (その2) CASファイルを拡張しました 今回追加した「キャラクタ長」の情報を使って、動作精度を上げました 特定のソフト以外は影響ありません ストップビット関連も拡張しようか悩みましたが、今回は見送りました ------------------------------------------------------------------------------ [Release 6.68] Ver. 6.3.44 2015.06.28 ------------------------------------------------------------------------------ ・88系でグラフィックモードを変更した際の画面更新ミス修正 R6.2→3 でエンバグ くれゆにさんから丁寧なバグレポートをいただきました とても解かりやすかったです ありがとうございました ------------------------------------------------------------------------------ [Release 6.67] Ver. 6.3.43 2015.06.27 ------------------------------------------------------------------------------ ・CMT IF の動作精度を上げた (その1) 今まで j80 では無視していた情報を使って、動作精度を上げてみました 88系の割り込みを使った読み込み以外では影響ありません 次回は、cmt8001, pcm8001 を含めた機能追加(強化)を予定しています 今回の変更で不具合が無いか、早めに確認していただけると助かります ・CMT IF を調整した セーブ時に返すステータスを調整しました ------------------------------------------------------------------------------ [Release 6.66] Ver. 6.3.42 2015.06.21 ------------------------------------------------------------------------------ ・ボーダーの実装(フレームワーク)を整理した ------------------------------------------------------------------------------ [Release 6.65] Ver. 6.3.41 2015.06.06 ------------------------------------------------------------------------------ ・Cmt2Cmt ・dB-SOFT:FLAPPY88 の解析に対応した ------------------------------------------------------------------------------ [Release 6.64] Ver. 6.3.40 2015.05.27 ------------------------------------------------------------------------------ ・80mkII の DMA まわりを調整した ・80SR(N80モード) の動作を調整した ------------------------------------------------------------------------------ [Release 6.63] Ver. 6.3.39 2015.05.24 ------------------------------------------------------------------------------ ・特定条件でテキストのシークレット属性が無視されるバグFIX R6b29→30 でエンバグ ・アセンブラ BINCLUDE で offset, length を指定できるようにした ------------------------------------------------------------------------------ [Release 6.62] Ver. 6.3.38 2015.05.17 ------------------------------------------------------------------------------ ・ライトペン調整 CRTC版も vblankを考慮してみました タイミングなど不正確な部分が多いので、あまり意味はありません ・アセンブラ ・DEFS,DS の第二パラメータで、埋める値を指定できるようにした ・ラベルとシンボル定義を同じ行に書いてはいけないことにした ・メモリエディタ ・ドロップ可能な拡張子に「.z80」を追加した アセンブルソースとして扱います ------------------------------------------------------------------------------ [Release 6.61] Ver. 6.3.37 2015.05.11 ------------------------------------------------------------------------------ ・グラフィックペン(ADDCOM製ライトペン)に仮対応した しおんパパさんに資料を提供していただきました ありがとうございました ドットの無い場所も拾えてしまいます PC-8801-10, GSX-8800 との同時使用はできません ------------------------------------------------------------------------------ [Release 6.60] Ver. 6.3.36 2015.05.10 ------------------------------------------------------------------------------ ・アセンブラ ・ELSEIF を追加した ------------------------------------------------------------------------------ [Release 6.59] Ver. 6.3.35 2015.05.09 ------------------------------------------------------------------------------ ・アセンブラ ・ローカル および テンポラリ・シンボル の使用制限を解除した 定義時に PREFIX を更新しない点を除いてラベルと同様です ・"{", "}" で囲んだ「文字列」を追加した マクロの引数を検索する際に、一番外側の"{","}"が区切り文字扱いになります if {reg}=="A" のように、実引数を文字列として扱うことができます ------------------------------------------------------------------------------ [Release 6.58] Ver. 6.3.34 2015.05.07 ------------------------------------------------------------------------------ ・アセンブラ ・(引用符外の)括弧の中の空白文字は区切り文字として扱わないことにした ・文字列の特別扱いを止めた 主に内部の問題です 副産物として、文字列絡みで ==, != が使えるようになりました ・EQU 擬似命令の仕様を調整した 同じ値で上書きしようとした場合はエラーとしないことにしました 警告も出しません 一括して書き換えないとエラーになるので問題ないと思います ・MACRO の仕様を調整した ・同じ名前で引数の数が違うマクロを定義できるようにした ・引用時、一致するものがない場合でもエラーとしないことにした sub macro regA,src sub src endm 「sub (hl)」はそのままアセンブラに渡される ←────────┐ 「sub a,(hl)」はマクロが「sub (hl)」に置換してから再評価される┘ 名前の重複を避け、引用時に引数を柔軟に適用することも考えましたが、 今回はこの仕様としてみました ------------------------------------------------------------------------------ [Release 6.57] Ver. 6.3.33 2015.05.06 ------------------------------------------------------------------------------ ・アセンブラ (仕様変更&バグFIX) ・一部の場面では式の評価結果を符号付32bitのまま扱うことにした ・REPT回数に負の値を渡したときのエラー処理漏れFIX ・DS のスキップ数に負の値を渡したときのエラー処理のバグFIX ・ORG に負の値を渡したときはエラーとすることにした ・論理演算子(「&&」,「||」) に対応した 無くても良いと思っていましたが、書いてしまってエラーになると残念なので... 短絡評価はしません ・三項演算子に対応した 今回から「JP label:」のような表記はエラーになります ZASM では許すようなので対応していたのですが、三項演算子を優先してみました ・BINCLUDE (バイナリファイルの読み込み) に仮対応した ------------------------------------------------------------------------------ [Release 6.56] Ver. 6.3.32 2015.05.05 ------------------------------------------------------------------------------ ・アセンブラ ・比較演算子に対応した ・算術シフトに対応した ------------------------------------------------------------------------------ [Release 6.55] Ver. 6.3.31 2015.05.03 ------------------------------------------------------------------------------ ・アセンブラ ・文字列の連結に対応した (「&」または「+」) ・文字定数, 文字列の仕様を変更した ・「'''」,「"""」は使えなくなりました 「"'"」,「'"'」に変更してください ・ファイル名の引用符が省略できなくなりました ・今回の仕様変更により、マクロ中での振る舞いが変わりました ・!0 が返す値を 0xFF に変更した この値に依存しないでください ・ループマクロ内のローカルラベルに対応した ラベル中の最初の「#」に内部IDを補う形で実装してみました ------------------------------------------------------------------------------ [Release 6.54] Ver. 6.3.30 2015.05.02 ------------------------------------------------------------------------------ ・アセンブラ ・MACRO, REPT, IRP, IRPC 対応 ・ELSE節対応 ・演算子「!」対応 ・一行で複数のラベル定義(と判断されるケース)をエラーとすることにした ------------------------------------------------------------------------------ [Release 6.53] Ver. 6.3.29 2015.04.29 ------------------------------------------------------------------------------ ・アセンブラ仕様変更等 ・「PREFIX.suffix」形式のラベルに対応した ・PREFIX は省略できます ・"." で始まるラベルには PREFIX が補完されます ・"." で始まるシンボルは禁止することにしました ※これまでとアセンブル結果が異なってしまうケースがあるかもしれません シンボルも同様のロジックを組み込んでみたのですが、混乱したのでやめました 「PC80.KEY_MAX」の様な表記は可能ですので、名前空間的な切り分けは可能です 詳細は assembler.txt を参照してください ・モトローラ形式の 8進数に対応した ------------------------------------------------------------------------------ [Release 6.52] Ver. 6.3.28 2015.04.26 ------------------------------------------------------------------------------ ・メモリエディタ上でのアセンブラの動作モードを変更した 旧:2PASS目は、解決できなかった式のみ評価しなおす 新:2PASS目も全ソースを読んで処理する asmドロップを使用するのは、最後の調整局面を想定していましたが、 便利なのでコードを書きながら使ってしまいますね 旧仕様ではエラーの発生個所を特定できないのでデバッグが面倒でした 全ログが確認できないと使い物にならないだろと割り切ったのですが、 エラー行の情報だけでも何とかなることが多いようです ------------------------------------------------------------------------------ [Release 6.51] Ver. 6.3.27 2015.04.24 ------------------------------------------------------------------------------ ・Asm2Hex (アセンブラ) の仕様を調整した ・JR, DJNZ の相対アドレスが -128〜127 にない場合はエラーとすることにした ただし、式が 128〜255 の符号なし即値のみの場合はエラーとしない 例1: JR 080H ... OK → JR -128 JR 0080H ... OK → JR -128 JR FF80H ... OK → JR -128 JR 128 ... OK → JR -128 JR +128 ... NG 例2: JR 0FFH ... OK → JR -1 JR 00FFH ... OK → JR -1 JR FFFFH ... OK → JR -1 JR 255 ... OK → JR -1 JR +255 ... NG ・式に出現するラベル末尾のコロンも無視することにした ※現在、末尾のコロンはひとつしか外していません ・検索用アセンブラの機能を制限した ------------------------------------------------------------------------------ [Release 6.50] Ver. 6.3.26 2015.04.19 ------------------------------------------------------------------------------ ・メモリエディタ ・検索の挙動を調整した カーソル位置との関係で違和感を感じることがあったので調整してみました ・後方への検索時は、選択範囲の先頭からメモリ末尾までを検索範囲とします ・前方への検索時は、選択範囲の末尾からメモリ先頭までを検索範囲とします ・事前の選択結果と一致していたときは次を再検索して(見つけたら)進みます 作業中に見つけたバグも潰しています ・「ASM:」,「ASZ:」(大文字/小文字の区別なし) に仮対応した ・j80 では、ASM, ASZ とも ザイログ・ニモニック になります シンボル等を定義しておけるようにしたいと考えています ------------------------------------------------------------------------------ [Release 6.49] Ver. 6.3.25 2015.04.19 ------------------------------------------------------------------------------ ・メモリエディタ ・ペースト時のエスケープ・ルールを変更した j80の他のツール類とあわせました 16進数(2桁限定)の指定は \x00 のようになります ※ \0 や \n などを追加するかもしれません ・検索機能を追加した ・選択している値の検索 [F3], [Shift]+[F3] で、後方, 前方 を検索します ・検索パネルからの検索 とりあえず、16進数, 文字列 で検索可能です ・先頭に「HEX:」(大文字/小文字の区別なし) をつけると 16進数 ・先頭に「ASC:」(大文字/小文字の区別なし) をつけると 文字列 ・上記以外は 文字列 とします 16進数は、桁の区切りにスペースがあってもかまいません 文字列はエスケープ可能です 「ASM(ASZ):」の対応も計画しています (シンボル対応も?) ------------------------------------------------------------------------------ [Release 6.48] Ver. 6.3.24 2015.04.18 ------------------------------------------------------------------------------ ・メモリエディタ ・クリップコピーしたIntelHEXフォーマットを調整した ・冒頭の改行を削除した ・エンドレコード後に改行を追加した ・スプレッドシート用のウィジットをカスタマイズするのをやめスクラッチした 操作性に難がありカスタマイズに限界がありました また、L&Fによっては動作不良を起こすことがあったため、実装を変更しました 既存クラスを流用して手を抜こうと考えたのですが、 実装の手間, 機能, コードの記述量 すべてにおいて逆効果でした ASCIIダンプはエミュレータ側のフォントと連動可能ですが、今回は未対応です - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ※一部、L&F を反映できない部分があります 見づらい場合はスクリーンショットを沿えて修正案を提示してください Java2 1.3-1.4(Windows) ではかなり重いと思います Java2 1.5〜 でも重い環境がありましたら報告をお願いします - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ・特記事項: HEX ASCII 備考 ・ペースト 空白,改行は無視 UTF文字/エスケープ対応 ・[space] nibble skip skip +[shift] で逆向き ・[DEL][BS] byte単位で修正前に戻す(HEX,ASCII共通) ・響 OPM のクロックを 4MHz に変更した (仮) ------------------------------------------------------------------------------ [Release 6.47] Ver. 6.3.23 2015.04.11 ------------------------------------------------------------------------------ ・メモリエディタ ・クリップコピーしたIntelHEXフォーマットのエンドレコードにsumを追加した ・アセンブラを搭載した ファイル(*.asm, *.asz)ドロップで、直接オブジェクトをロードできます 拡張子によらず「Z80 - ZilogMnemonic」として処理します ・今後の予定 ・アセンブラの完成 ・メモリエディタの作り直し ------------------------------------------------------------------------------ [Release 6.46] Ver. 6.3.22 2015.03.16 ------------------------------------------------------------------------------ ・バグFIX ・メモリエディタから HEXダンプ(クリップコピー)する際にアドレスが狂うバグ ・「画面がゆれるエフェクト」に仮対応した (2) PC-8801 のグラフィック画面もゆらしてみました OPTION:-test1=2で、カラーグラフィック&テキストOFFの場合のみ有効になります 前回の PC-8001 のテキストとは違うゆれ方を実装してみました 今回の方が実装精度は高いのですが、極端な状況の画面が再現できていないので 演出に使える範囲ではあまり大きな差は出ませんでした 調整でより実CRTに近づける余地はありそうなのですが、今回はここまでとします ※bug2.txt より   ・「画面がゆれるエフェクト」 (本実装は次世代?)   対応状況:   ・PC-8001 (-test1=2)   ・PC-8801 (-test1=2) ※カラーグラフィック画面(テキスト非表示)のみ   実機再現有無 (CRTによって異なる可能性あり)    PC-8001 ゆれる可能性がある    PC-8001mkII ゆれる可能性がある    PC-8001mkIISR ゆれない    PC-8801 ゆれる可能性がある ------------------------------------------------------------------------------ [Release 6.45] Ver. 6.3.21 2015.03.12 ------------------------------------------------------------------------------ ・「画面がゆれるエフェクト」に仮対応した ※ 注意 ※  ・再現精度はあまり良くありません  ・実機環境では、ディスプレイにより表示(ゆれ方)は大きく異なります   今回は、私が常用している環境でのゆれ方を仕様としてみました   現設計でそれなりに対応できそうだったのが採用理由です  ・「PC-8001」のみ OPTION:-test1=2 で有効になります (ニュートロンは残念)  ・ディスプレイによっては 40桁/80桁 で表示位置がずれます   (ほとんどずれない環境もあれば、80カラム時の1桁分近くずれる環境もある)   これも画面揺らしに使えるのですが今回は対応していません ------------------------------------------------------------------------------ [Release 6.44] Ver. 6.3.20 2015.03.11 ------------------------------------------------------------------------------ ・バグFIX ・拡張バスのピンアサインが常に「80系」になってしまうバグ 機種(構成)確定前にバスの設定を確定してしまっていました R6.11→12 でエンバグしたようです ・「フルドットカラーPCGと共存できないサウンドボード」の設定ミス ・メモリエディタ 「書き込み時のメモリマップ」を選択できるようにした リストに表示しないようにしていたのですが、隠す理由を忘れてしまいました とりあえず選択できるようにしてみました ------------------------------------------------------------------------------ [Release 6.43] Ver. 6.3.19 2015.03.01 ------------------------------------------------------------------------------ ・仮想キーボードの管理方法を変更した cfg, cmd に変更があります (id がひとつズレました) 使用可能なキーボードの種類が、機種によって絞り込まれるようになりました u80 の Android版で必要になったため、管理機能を拡張しました ------------------------------------------------------------------------------ [Release 6.42] Ver. 6.3.18 2015.02.22 ------------------------------------------------------------------------------ ・セットアップモード cfg:MODE に負の値を設定した場合、動作不良を起こすようにした → エラー画面が出ます ------------------------------------------------------------------------------ [Release 6.41] Ver. 6.3.17 2015.02.14 ------------------------------------------------------------------------------ ・BEEP / CMD SING ステレオ出力に設定した場合、左チャンネルにしか出力されないバグFIX ------------------------------------------------------------------------------ [Release 6.40] Ver. 6.3.16 2015.02.13 ------------------------------------------------------------------------------ ・PSG(SSG):実行環境のサンプルレートを超えるトーンの処理を変更した 耳障りな(大きな)ポツポツ音が鳴るタイトル向けの恣意的なパッチを削除し、 それなりに理由の付けられる小さなパッチに置き換えました ・実機でもポツポツ音は鳴る (理由は解っています) ・これまでのパッチではポツポツ音をほぼカットしてしまっていた 副作用が大きく(PSGPCMが発声しないことがある)パッチのパッチが必要だった ・今回のパッチではポツポツ音の音量が実機より大きめかも? ・BEEP / CMD SING:BEEP と CMD SING の重ね方を変更した BEEP と SMD SING を同時に使用した際の再現性が向上しました j80 では BEEP と CMD SING でサウンドデータの生成方法がまったく違うため、 OR による重ねあわせがメンドウだったので加算していました 同時使用は考えなくて良いかな?と思っていたのですが甘かった様です ちょっとした工夫で実機と(ほぼ)同じ重ねあわせを再現できたので修正しました ・BEEP と CMD SING の音量調整を統合した 今回は cfg に変更はありません (暫定) ------------------------------------------------------------------------------ [Release 6.39] Ver. 6.3.15 2015.02.11 ------------------------------------------------------------------------------ ・セットアップモード FE/MA2 で「V1S」のスプラッシュが表示されなかったので対策しました セットアップモードの切り替え処理とは別の制御ロジックを追加してみました FE2/MC も(不具合は無いようでしたが)同じロジックを使ってみました 上記変更により、メモリの汚れ方が微妙に変わりました ------------------------------------------------------------------------------ [Release 6.38] Ver. 6.3.14 2015.02.07 ------------------------------------------------------------------------------ ・「あの紫の画面」 ・特殊制御文字がらみの未実装部分をFIXした ・PCG,セミグラがらみの問題をFIXした 本実装に着手する前に、とりあえずテスト版をFIXしておくことにしました 本実装の予定は未定です 使用頻度(皆無に等しい)を考えると、単に重くなるだけ...というのが痛い ------------------------------------------------------------------------------ [Release 6.37] Ver. 6.3.13 2015.02.07 ------------------------------------------------------------------------------ ・「あの紫の画面」に対応したテスト版を添付した PC-8001 で cfg:OPTION(-test1=1) を指定した場合のみ有効になります わかる人向け j80 の内部構造とケンカしてしまう部分が多く、すんなり組み込めませんでした ロジックは難しくはなかったのですが。。。 例によって akutsuさんありがとうございました PCGや特殊制御文字絡みで手を抜いた実装になっていますが、近日中にFIXします ・近況報告など: ・R6.33 でビデオ廻りの精度(のみ)を上げたことが原因で、余計なものがちらりと 見えてしまうソフトがあるようです cfg:DRIVE のパラメータでタイミングをずらすことで改善する場合があります [2015.08.03 追記] 関連する部分の精度をすり合わせて、ゴミが出ないようにしました 全てを同じ精度で実装できていないので、別の要因で出るかもしれません ・サウンド関係では、同じような波形を逆位相で鳴らしたときに音が小さくなる 現象が FM音源でも発生しました OPN/A の実装ミスかと思ったのですが、位相を変えると音が大きくなることが 確認できたので「位相の問題」でほぼ間違いないと思います FM音源では問題ないだろうと思っていたのでショックです ------------------------------------------------------------------------------ [Release 6.36] Ver. 6.3.12 2015.01.24 ------------------------------------------------------------------------------ ・./util/files/boot_j80.rom を差し替えた 15kHz出力に対応しました ・CRTCに無茶なパラメータを食わせても落ちないようにした 再現頻度等から判断して異状時の保護を簡略化していました (負荷優先) 88系では400ライン決め打ちのソフト対策で若干きつめの保護を掛けていましたが R6b29→b30 で外れてしまっていたようです R6.30 から負荷を掛けずに保護できるようになったので、機種,描画モードを問わず それなりの対策をすることにしました ※注意: ・異状時の画面(状態)は再現していません ・今回対策したものとは違う要因で落ちるかもしれません ・Keyboard (バッファモード): ・初代8001だと拾ってくれない文字を入力した場合に警告するようにした 表示例:SKIP? chr$(&h7B) - { 初代8001に他機種のN-BASICを載せた場合は拾ってくれますが警告は出ます 通常の警告「SKIP chr$(&h7C)」と表記を変えましたので参考にしてください ・「|」,「~」に対応した 初代8001のスクリーンエディタ等では拾ってくれません (警告表示あり) 「~」は [SHIFT]-[@] のキーストロークを生成します タッチパネルの指定では「\~」または「\X7E」で [SHIFT]-[^] も出力可能ですが 8801/mkIIでは拾ってくれないようです (警告表示なし) ・マウス(母艦)関係のデバッグ出力を抑制した ------------------------------------------------------------------------------ [Release 6.35] Ver. 6.3.11 2015.01.17 ------------------------------------------------------------------------------ ・バグFIX ・タッチパネル機能: ・ガイド画像が無いとハンドカーソル表示にならなかった ・80mkIIのカラーグラフィックモード: ・落ちた (Android版のみ) R6.32→33 で 40桁/80桁のコードを統合したときのミスです APIに通知する再描画が必要な範囲が過大でした Java(Swing) では、API側で良きに計らってくれていたようです ・メニュー: ・ハンドシェイクパッチのチェック表示が状態と一致していなかった ・PSG/SSG ・リセット時のレジスタ(アドレス)の値を変更した ------------------------------------------------------------------------------ [Release 6.34] Ver. 6.3.10 2015.01.12 ------------------------------------------------------------------------------ ・「ハンドシェイク・パッチ」を用意した □問題点: ・Disk側とのハンドシェイクに失敗してデッドロックしてしまうローダーがある これは、j80の Main側⇔Disk側の「実行権切り替えロジック」に由来するものです □パッチの内容: ・Disk側I/Oポート(0xFF)に書き込みが行われたら、追加コスト(WAIT)を乗せる 結果的に OUT命令の直後に実行権が Main側に移ります ステータスチェックを抜け、Disk側が望む状態に設定するまでの時間も確保します □注意: ・使用頻度などを考え cfg:OPTION での指定には対応していません (起動時:off) ・Main側が先走ってしまうケースには効果がありません □備考: 「夜の天使たち」(JAST) が稀にしか立ち上がらなくなっていたので対策しました DiskIFを監視して実行権を切り替えるなどの積極的な介入を行う予定はありません 「特殊な」ハンドシェイクを行うソフトはいくつかあるのですが、私が知る限り、 このタイトル以外は安定して立ち上がるようなので、これに的を絞ったパッチに なっています (他に立ち上がらないソフトがあったら教えてください) ・今後の予定: ・DiskIF (PPI) を書き変える? ・CRTC-DMA まわりのコード整理 (お掃除) ・セットアップモードの詳細な調査 (折を見て再開予定) ------------------------------------------------------------------------------ [Release 6.33] Ver. 6.3.9 2015.01.11 ------------------------------------------------------------------------------ ・*.dbg ファイルが正常に読めなかった場合に GUIスレッドが落ちるバグ FIX ・*.dbg ファイルを更新できなかった場合に GUIスレッドが落ちるバグ FIX ・CRTC,描画まわりを書き変えた ・カーソルの管理方法を変更した ・80桁/40桁の管理方法を変更した ・グラフィック画面の管理方法を変更した ・その他、不要に広いままになっていたスコープの制限など ・テキスト画面とグラフィック画面の同期が乱れがちになっていたので対策した R6.29→30 の変更で、目立つ画面の乱れが生じていたので対策しました 本来は GVRAM まわりの精度も上げるべきなのですが、当面はパッチでしのぎます 80系も同様の対策が必要と思われますが、実装していません 画面の乱れが生じるソフトを見つけたら対策する予定です ・シリアルマウスの反応を調整した (乱暴な)ポーリングアクセスに耐えられるよう調整しました ・/util/files/boot_j80.rom を差し替えた Nモードで立ち上げた際に画面が表示されない不具合がありました ・セットアップモードとメニューの連動について [N][8][0]リセットをした場合、メニューが連動しません 仕様とします ・今後の予定: ・CRTC-DMA まわりのコード整理 (お掃除) ・セットアップモードの詳細な調査 (折を見て再開予定) ------------------------------------------------------------------------------ [Release 6.32] Ver. 6.3.8 2014.12.31 ------------------------------------------------------------------------------ ・88系拡張メモリボードが返すバンクの値を調整した j80 では(今のところ) PIO-8234 と PIO-8234H は区別していません どちらも PIO-8234H の振る舞いをします 互換性をうたいながら違う振る舞いをするボードがあって 実機でもイロイロ問題が生じたと聴いています このあたりの実装は「匙加減」かなぁと思ってますし、 あまり厳密なことをしない方が良い気もしますが試してみました 不具合が生じたら報告をお願いします [情報提供:apaslothy様] http://www5f.biglobe.ne.jp/~apaslothy/cgi_bin/adiary/adiary.cgi/07#k7p0 ------------------------------------------------------------------------------ [Release 6.31] Ver. 6.3.7 2014.12.30 ------------------------------------------------------------------------------ ・cfg:FLIP による負荷削減が有効に働かない可能性があった 描画の質などには影響ありませんが、後回しにすると忘れそうなのでFIXしました ・その他 前回の履歴に書き忘れましたが、リセット時の CRTC の動作を調整しました 80系, PC-8801 は実機と比べて問題ないことを確認していますが、V2系の機種は 確認していません 違和感などありましたら連絡お願いします ------------------------------------------------------------------------------ [Release 6.30] Ver. 6.3.6 2014.12.29 ------------------------------------------------------------------------------ ・CRTC-DMA まわりのコードを整理した 40桁時の軽量化パッチなどを除去しています パッチを除去したついでに、(設計の範囲内で)精度を上げています ただし、非常に特殊な状況でのちらつき方が変わる程度の変化しか無いと思います 精度は上げましたが、乱暴に扱った際に不安定になりやすい(未調査の領域)ので、 不審な画面のズレなどがありましたら報告をお願いします ※今回の変更で「フレームスキップ」設定の負荷低減効果が減少しています ・今後の予定: ・CRTC-DMA まわりのコード整理 (続) ・セットアップモードの詳細な調査 (続) ------------------------------------------------------------------------------ [Release 6.29] Ver. 6.3.5 2014.12.19 ------------------------------------------------------------------------------ ・セットアップモード ・画面モード(パレット)を変更した FE/MA2〜では常にアナログパレットが有効になるようにしました akutsuさんより報告を頂きました ・「システムの立ち上げ:ディスク/ROM」対応&メニュー連動 ※FH/MH, FA/MA の「内蔵FDD I/F:禁止/使用」の項目は使用できません ・セットアップモードで実行中は、一部のコマンドを使用できなくした ・仮想キーボード ・ResetKEY コマンド等で通常キーがクリアされたとき表示も更新するようにした ※ハードキーボードとの併用は考慮していません ・仮想キーボード側からもコマンドが使えるようにした ・ドット絵を更新した (カナは表示しなくて大丈夫ですよね?) カナやグラフィック文字はツールチップに表示しようか検討中です ・88V2機ビデオまわり ・リセット時、内部フラグに不整合が生じていたので摺り合わせた ・HiSPEEDモード変更時の内部フラグ変化タイミングを調整した ※二点とも主にパレットに関する部分です / 問題が生じたら報告お願いします ・その他 ・ディスク有無による Disk I/F の自動接続/切り離しの挙動を調整した ・ここ数バージョンの更新でクロックの管理が混乱していたので整理した ・今後の予定: ・セットアップモードの詳細な調査 ------------------------------------------------------------------------------ [Release 6.28] Ver. 6.3.4 2014.12.15 ------------------------------------------------------------------------------ ・MA2セットアップ:BASICモード のメニュー連動に対応した FEも同じ仕様だと思います ・リセット時の ハイスピードTextVRAM の選択状態を変更した MA2のセットアップが安定して動作するようになりました ・cfg:OPTION -video, -bold を追加した ・仮想キーボードのドット絵を更新した (未完成) ・R6.26 で予告した「8MHz機の PCG8800 対応廃止」は取り止めにします ・R6.26 より、セットアップROM (cfg:BOOT) のサイズが 32K に変更になっています ・FH/MH, FA/MA 24K のままでも問題ありません ・FE/MA2, FE2, MC フォントデータを含めた 32Kbyte が必要です ・今後の予定: ・セットアップ⇔メニュー:ディスク関連 の連動 ・セットアップモードの詳細な調査 ・仮想キーボードのドット絵完成 ------------------------------------------------------------------------------ [Release 6.27] Ver. 6.3.3 2014.12.14 ------------------------------------------------------------------------------ ・仮想キーボードのドット絵を更新した まだ完成ではありませんが、とりあえず使用に耐えるレベルまで何とかしました ------------------------------------------------------------------------------ [Release 6.26] Ver. 6.3.2 2014.12.13 ------------------------------------------------------------------------------ ・バグFIX ・スレッドがデッドロックすることがあった (メモリエディタ & トレーサーGUI 表示中にメニューから *.dbg 指定) ・トレーサーGUI を表示した後、メニューの *.dbg の選択状態が同期しなくなる ・デフォルトのパス設定を変更した (keymap → keyboard) ・セットアップROMのサイズを 24Kbyte → 32Kbyte に変更した ・仮想キーボードを追加した 右クリックでロック機能の無いキーも押したままにできます 仮想キーボードはデバッグ(トレース)やキーの同時押しを再現するためのものです 常用することは想定していません ハードキーボードと併用した場合の動作は保証しません ドット絵は未完成です ・今後の予定: ・8MHz機の PCG8800 対応廃止 ・FE2,MC 世代のセットアップモード調査 ・仮想キーボードのドット絵完成 ------------------------------------------------------------------------------ [Release 6.25] Ver. 6.3.1 2014.12.07 ------------------------------------------------------------------------------ ・バグFIX ・8MHz機でリセット時に メニュー:V1/S, V1/H のチェックが入れ替わるバグFIX ・cfg 変更 8MHz機の設定方法を変更しました 正しい機種を指定しないとうまく起動しません ・8MHzHモードの無い機種では 8MHz(ノーウェイト) で動作できないようにした FE2,MC 以外では 8MHzH モードを指定できません セットアップモードとの整合を図るための措置です 添付のダミーROMを用いる場合は、ROMに係らずどの機種とみなしても大丈夫です ・FH/MH, FA/MA 世代のセットアップモード クロックによる挙動の違いに対応できたと思います ディスクの切り離しは j80 のデバッグモードとの兼ね合いで調整中です ・FE2,MC 世代のセットアップモード BASICモードの変更, 動作クロックの切り替えに対応できたと思います ディスクの切り離しは j80 のデバッグモードとの兼ね合いで調整中です まだ調査が終わっていません FE/MA2 もこの世代と同じ実装にしていますが、未確認です ・デバッグコマンド「現在のメモリマップ」で BOOT(セットアップROM) に対応した トレース, メモリエディタからの操作には問題ありませんでしたが、 デバッグコマンドの「現在のメモリマップ」から BOOT が見えませんでした (セットアップ中にブレイクして[Alt]+[Num:*]→ BASIC ROM をダンプしてしまう) ・メモリエディタから、BOOT(セットアップROM) を指定できるようにした ・リファクタリング ここ数バージョンの突貫工事で乱れたコードを整理しました 8MHz機対応時に荒れたままになっていた部分もまとめて整理したので、 セットアップモードのない機種にも影響があります ------------------------------------------------------------------------------ [Release 6.24] Ver. 6.3.0 2014.11.30 ------------------------------------------------------------------------------ ・キーマップに関するバグFIX その機種で使用できないキー(ポート)を押すと UIスレッドが落ちてしまいました 本来は無視するはずでしたが、どこかでエンバグしたようです ・8MHz機のセットアップモード akutsuさんにテストに協力していただき、警告画面が出ないところまで作りました セットアップモードでは、j80のメニュー等から設定を変更しないでください 変更した場合の動作は保障しません 「システムの立ち上げ:ディスク|ROM」「内蔵FDD I/F:禁止|使用」の二項目は 設定内容が反映されません (暫定) モードスイッチ類が全廃された機種についてはまだ調査できていません ※ディップスイッチ等の管理方法を変更しました セットアップモードを持たない機種にも影響があります ・検討中: ・メニューの状態などを覚えておく機能の追加 ------------------------------------------------------------------------------ [Release 6.23] Ver. 6.2.10 2014.11.28 ------------------------------------------------------------------------------ ・8MHz機のセットアップモードに関係するポートを実装した セットアップモードに入れるようになりました akutsuさんにテストに協力していただきました ありがとうございました (引き続き協力お願いします) ※自己診断でエラーが出ます ・いくつかのデバイスの初期化処理を変更しています ・GUIへのコールバックを用意した ------------------------------------------------------------------------------ [Release 6.22] Ver. 6.2.9 2014.11.23 ------------------------------------------------------------------------------ ・8MHz機のブート手順を見直した セットアップモードの ROM が必要になります 用意できない方は ./util/files/boot.rom を使ってください cfg:BOOT に ROM が指定された場合のみ 8MHz機とします ENHANCE 0(デフォルト)が OPN, ENHANCE 1 が OPNA 搭載機になります ※動作確認はしてません 動かなかったら ./util/files/boot.rom を使ってください オフ会などでよく話題になるのを思い出して作ってみました うまく動いたとしても、設定した内容がメニューなどに反映されません 設定内容も保存されません 今後の課題ということで エミュレータ的には有り難味のない部分で、スクリーンショットを撮るぐらいしか 使い道が思い浮かばないのですが、ひと通り動くまではなんとかするつもりです ------------------------------------------------------------------------------ [Release 6.21] Ver. 6.2.8 2014.11.22 ------------------------------------------------------------------------------ ・バグFIX ・バスマウスの内部ロジックを変更した 仕様どおりだと不安定になるソフトがあったのでパッチを当てていましたが、 拘束期間の計算ミスでした (10倍になっていた) 修正してパッチを除去したところ問題無さそうでしたので、コレでいきます 何か不具合が生じていたら教えてください ・メモリエディタの範囲選択に関する不具合を修正した バグが残っていました ・ファイル入力処理を微調整した EOF で「何もしない」動作を一回追加していたのを削除した CR+LF を拾った際の、CR+「何もしない」動作は従来のままです ・メモリエディタからIntelHEX形式でクリップボードにコピーできるようにした ・トレース用逆アセンブラのレイアウトを微調整した ※コメントをどう記述しようか迷って、そのまま忘れていた命令が残っていました 今回も手を着けていません ・cmd 変更 Delay=n → CMT.delay=n VolumeSYS:i=n → SYS.slot:i=n VolumeBUS:i=n → BUS.slot:i=n VolumePRN:i=n → PRN.slot:i=n ------------------------------------------------------------------------------ [Release 6.20] Ver. 6.2.7 2014.11.15 ------------------------------------------------------------------------------ ・デバッガ GUI に絡むエミュレータ側の制御ロジックを調整した 旧:メモリエディタがアクティブでなくなる際に暗黙の一時停止を解除する 新:メインウィンドウ, トレーサ がアクティブになった際に〜 追加:メモリエディタが閉じられる際に暗黙の一時停止を解除する ・自動タイプ機能の内部実装を変更した ・ファイルを一括で読むようにしました / 入力ファイルはすぐに開放されます ・改行を含まない長い文字列に対応しました ・自動タイプ中にローマ字入力等をした場合の挙動が変わりました 旧:直後の改行後に挿入 新:ファイル末尾までタイプ後に挿入(多くの場合バッファFullで無視される) ・クリップボードの内容を自動タイプする機能を追加した コピー元のアプリの実装や文字コード等の影響で文字化けすることがあります N-Font を導入し、秀丸(欧文), EditPad Lite(windows-1252) で編集している 場合は、問題の無いことを確認しています Shift-JIS や UTF-8 等で編集している場合でも、カナ(画面で化けていない部分) は持って来れるはずです ・逆アセンブラの表記を変更した (試行中) 16進数:$* → 0*H 2進数:%????_???? → ????_????B トレース用逆アセンブラの表記は(表示スペースの関係で)そのままです ------------------------------------------------------------------------------ [Release 6.19] Ver. 6.2.6 2014.11.03 ------------------------------------------------------------------------------ ・バグFIX:メモリエディタ(HEXファイルのロードに関する問題) ・ロード範囲外のデータが含まれる場合の無意味な CheckSUM ERROR を抑制した ・ロードされるデータが 0byte の場合にエラーを吐くバグ FIX ------------------------------------------------------------------------------ [Release 6.18] Ver. 6.2.5 2014.10.22 ------------------------------------------------------------------------------ ・バグFIX:CRTC ・特殊制御文字まわりのエンバグFIX ------------------------------------------------------------------------------ [Release 6.17] Ver. 6.2.4 2014.10.18 ------------------------------------------------------------------------------ ・バグFIX:メモリエディタ ・ASCIIダンプ部分を選択すると対象範囲が16byteずれる件の修正漏れ (fill) ・選択範囲がおかしくなることがある ロジック変更により恒久対策しました ・CRTC等 ・実装を整理した akutsuさんに「uPD3301A CRTC ユーザーズ・マニュアル」を見せて戴きました ありがとうございました いつかDMAや周辺回路を分けて実装し直すことを想定してコードを整理しました タイミングや基本的なロジックの変更はありません 「特殊制御文字」も把握できたのですが、情報としては不十分なようです 実機での動作にあわせて、いくつかロジックを追加(パッチ)しています ------------------------------------------------------------------------------ [Release 6.16] Ver. 6.2.3 2014.10.04 ------------------------------------------------------------------------------ ・バグFIX ・インテルHEXファイルのロードミス FIX ・メモリエディタからメモリを更新する際に、対象範囲が狂うことがありました ------------------------------------------------------------------------------ [Release 6.15] Ver. 6.2.2 2014.09.28 ------------------------------------------------------------------------------ ・デバッガ(メモリエディタ) インテルHEXファイルのロードに対応した (*.hex) Dmp2Cmt(tools80 R6.4〜) で -HEX オプションをつけると、 「インテルHEX形式」で、「拡張子 .hex」のファイルを出力します ダンプ入力して j80 に持ってくる場合、 1. Dmp2Cmt(モニタ形式) → テープイメージとしてロード 2. Dmp2Cmt(モニタ形式) → Cmt2Mem → BINヘッダ挿入 → デバッガにドロップ の2ルートがありましたが、デバッガへのルートが使いやすくなりました 3. Dmp2Cmt(-HEX オプション) → デバッガにドロップ ------------------------------------------------------------------------------ [Release 6.14] Ver. 6.2.1 2014.09.06 ------------------------------------------------------------------------------ ・バグFIX:メモリエディタ ・ASCIIダンプ部分を選択すると対象範囲が16byteずれる ・ポップアップの「Fill」が壊れていた ・バグFIX:トレーサ ・ブレイクコマンドを割り込みレベル毎に覚えていなかった 最後に登録したコマンドがすべてのレベルに適用されていました ・バグFIX:OPN/A ・SSG-EG の下り側の処理が壊れていた (R6b51→52 でエンバグ) リファクタリング時に OPMのコードをコピペしてしまったようです ・バグFIX:88系描画 ・メニュー等からパレットに絡む変更をしたときの更新ミス R6.2→R6.3 で統合した R7系 のバグ ・メモリエディタ ポップアップの「Reset」は選択範囲と無関係で紛らわしいので廃止した (「Fill」が壊れていた影響で、表示されていませんでした) ・OPN/A SSG-EG の「変化速度」を調整した (仮) OPNアプリマニュアルでは「通常モードより変化が速くなります」だけで、 良く分からなかったので放置していました bookworm さん (http://www.geocities.jp/submarine600/index.html) が テストプログラムを公開されていたので、とりあえずレベルで調整しました 単に速度の問題だけではなく、サスティン から アタックに戻るタイミングにも 問題がありそうですが、今後の課題ということにします ------------------------------------------------------------------------------ [Release 6.13] Ver. 6.2.0 2014.07.20 ------------------------------------------------------------------------------ ・トレース用GUIを追加した ブレイクポイント等を (他のテキストエディタを使わずに) 設定できるように なりました 他のデバッグ機能との連携はできていません ・電源投入直後, リセット直後 にCRT画面をクリアするようにした ・大掃除 ------------------------------------------------------------------------------ [Release 6.12] Ver. 6.2.i 2014.06.28 ------------------------------------------------------------------------------ ・バグFIX ・DMAの設定によっては落ちることがあった R6b29→30 でエンバグ ・*.dbg で、存在しないバンクを指定すると落ちる ・*.dbg で、メモリ指定「ERAM」が効いていなかった ・デバッグモードスキップ中にメニュー選択などでブレイクしてしまう ・デバッガ「連続実行」仕様変更等 ・名称を「継続実行」に変更した ・継続実行中は GVRAM, ALU, 辞書ROM に侵入しない 但し、ブレイク時に PCが GVRAM, 辞書ROM にいた場合は当該メモリを表示する 拡張アクセスしていた場合は メインRAM を表示する(変更なし) ・モニタ(GUI)追加 メモリとレジスタを操作できます デバッグモードでなくても使用できます *.bin ファイルをドロップすると、選択しているメモリの該当範囲を上書きします ------------------------------------------------------------------------------ [Release 6.11] Ver. 6.2.h 2014.05.27 ------------------------------------------------------------------------------ ※R6.10 があまりにもめちゃくちゃだったので早めに更新します デバッガの仕様を決めながらの実装なので、コードが荒れています 前回ほど酷いことはないと思いますが、バグやおかしな仕様があると思います メモリの種別など、今後の GUI化 などにも影響しますので、 気になる点がありましたら、早めにメールでコンタクト願います ・デバッガ修正 (仕様変更あり) 「メモリ種別」を跨いだ命令は逆アセンブルできません 例外として、高速TextVRAM のみ、メインRAM とシームレスに扱うができます 「メモリ種別」とサイズ(範囲)は、sample.dbg を参照してください ※メモリの選択状況によっては、記述のサイズと異なる場合があります ・8K ROM の 32K連続アクセスを廃止した ・MainRAM→TextVRAM 連続アクセス実装漏れ ・デバッグコマンドを「連続」実行した際の動作を変更した 旧:アドレス省略コマンドのみポインタを更新する 新:常にポインタを更新する 特定のメモリを対象としてコマンドを実行すると、メモリ種別も引き継がれます その後連続実行を続けると、そのメモリ種別の境界でスタックします ・デバッグコマンドで自動判別するメモリ種別について: ALU選択時の当該エリアの dump, disasm 対象は、 「メインRAM」 (80SR) 「メインRAM」 (88V2機 / 高速TextVRAM 非選択時) 「メインRAM + TextVRAM」 (88V2機 / 高速TextVRAM  選択時) とします (暫定) ------------------------------------------------------------------------------ [Release 6.10] Ver. 6.2.g 2014.05.25 ------------------------------------------------------------------------------ ・デバッガ ・デバッガ実行時の負荷を(少し)減らした 通常利用時の負荷を上げないことを優先して設計したので、 このあたりが限界だと思います ・二進数表記に対応した ・トレース用逆アセンブラの表現を調整した ダンプを省略しました ・静的な逆アセンブラの挙動を調整した 「続けて」実行する際に、ブロック境界でスタックしないようにしました また、解決できないコードを拾っときのダンプ表示も調整しています ・ASCIIダンプを追加した コンソール用なのでムチャなマッピングはしていません 表示が乱れる方はレポートください 「漢字」については一切考慮していません ・メモリマップ表示コマンドを追加した (Debug:3) ・*.dbg での ROM の指定方法を変更した *.cfg と「表現 - サイズ」を揃えました 旧仕様と同じように 32K連続で扱うこともできるようにしてあります ・コード整理・表記ミス訂正等 将来の機能拡張などを考えて調整しました ラベル表記や、データ領域の指定ができたりすると良いなと考えています ・「CDOS-II」の「2HDフォーマットパッチ」発動条件を厳しくした 不具合の報告はありません 「トレースモード(DEBUG:6 コマンド)のみ有効」の制限を緩和する準備です 2HD Diskをフォーマットするソフトが誤爆しないか確認いただけると助かります ------------------------------------------------------------------------------ [Release 6.9] Ver. 6.2.f 2014.05.17 ------------------------------------------------------------------------------ ・バグFIX ・*.dbg をメニューから開くと落ちる ・割り込み時のブレイクコマンドの実装ミス (クリアミスによる誤動作あり) MR,MW も使えなかったかも ・相対ジャンプアドレスの計算ミス (静的な逆アセンブラ) ・リセット時に内部状態がおかしくなっていた (88V2機 HiSPEED モード) ・*.dbg ファイルの仕様を大幅に変更した この仕様でFIXできると思いますが未定です ブレイク中なら、任意のデバッグコマンドを実行できるようにしました デバッグコマンドで「メモリ種別=対象アドレス」を省略できるようにしました 省略した場合「次回アクセスするであろうメモリ」を選択します (制限あり) また、アドレスは更新されますので「続けて〜する」ことができます [参照:debugger.txt, sample.dbg] ・アトリビュートの扱いを調整した 「ブリンク」も次の行に引き継ぐようにしました ・その他 ・uPD70008 HALT 仮対応 ・88V2機 高速TextRAM の実装を変更した 不明点をFIXして、メモリ・デバッガ実装の障害を除去しました kitahei88さんに実機検証をしていただきました ・Kajaさんとkitahei88さんに、デバッガの仕様出しを手伝っていただいています ------------------------------------------------------------------------------ [Release 6.8] Ver. 6.2.e 2014.05.11 ------------------------------------------------------------------------------ ・バスマウス タイムアウトを調整した ・シリアルマウス 適当だったマウス接続時に返すステータスを、別の適当な値に変更した ------------------------------------------------------------------------------ [Release 6.7] Ver. 6.2.d 2014.05.10 ------------------------------------------------------------------------------ ・バグFIX ・*.dbg ファイルで「OT」が使えなかった ・デバッガ機能追加 (トレース) ・I/O命令では、やり取りした値を2進数でコメントすることにした ・I/O(アドレス,ビット)にラベルを設定できるようにした アドレスラベルはリリース前に廃止しました ビットラベルは残してあります Diskのハンドシェイクなどが見やすくなるかと思ったのですがイマイチ ・実行後のレジスタを表示するようにした ステータス類と同様の表示方法ですので、他のコンソール出力で消されます ・EI/DI 表示を追加した ・デバッガ機能追加 (ブレイク) ・ダンプ機能を追加した ・逆アセンブル機能を追加した ※./doc/test.dbg 参照 ------------------------------------------------------------------------------ [Release 6.6] Ver. 6.2.c 2014.05.06 ------------------------------------------------------------------------------ ・バグFIX ・サブシステムがある場合、無効なコマンドを検知できていなかった ・サブシステム側への「DEBUG:2」コマンドが無視されてしまっていた ・サブシステムが無い状態で「DEBUG:2」コマンドを送ると GUIスレッドが落ちた ・ブレイクポイントをファイルで指定できるようにした とりあえずファイルに記述して指定してください (DnD対応 / *.dbg) *.dbg はテキストファイルです (暫定仕様:test.dbg のコメント参照) ・j80.cmd ・+DBG コマンド追加:デバッガの設定ファイルを指定する(ブレイクポイント等) ・ DBG コマンド追加:ブレイクポイントの一括解除 / 再指定 ・j80.cfg ・-TMP 廃止 ・-DBG 追加 -TMP から -DBG に移行しますが、動作が異なるので名前を変えました ディレクトリだけでなくファイル名(*.dbg)も受け付けます メモリを一括ダンプする場所は、このファイルの場所になります 今までと違い、出力場所が固定ではなくなりますのでご注意下さい ------------------------------------------------------------------------------ [Release 6.5] Ver. 6.2.b 2014.05.03 ------------------------------------------------------------------------------ ・デバッグモードでは、常に標準カーソルを表示することにした (消せません) ・マニュアルブレイクの動作を改善した 片方のCPUだけデバッグしているときに、ブレイクしない(pause)ことがあった ・uPD780 NoHALTパッチの実装を変更した 旧:HALT を 時間指定可能なNOP とする (設定時間停止する) 新:HALT を 時間指定可能なNOP+割り込み とする (停止後に勝手に割り込む) これにより、デバッグモードで Disk側の割り込みを検知できるようになりました 負荷も若干増えましたが、仕方ないですね 動作タイミングが多少変化しました Latency設定のデフォルト値は変更していません 「Latencyなし」でうまく動かなくなったタイトルがあったら教えてください ------------------------------------------------------------------------------ [Release 6.4] Ver. 6.2.a 2014.04.30 ------------------------------------------------------------------------------ ・uPD780 ・2byte PUSH の実装を変更した これにより、メモリをアクセスする順序が変わりました ・j80GUI ・タッチパネルのガイド画像を常に表示させるようにした 画面を頻繁に書き変えるソフトではちらつきますが、当面は放置します 対策方法は解かっていますが、細かな調査が足りていないので保留します モノクロのブロック崩しにコレで色を付けるような使い方は…想定していません あわせて、パネルを変えても旧画像が残るようなおかしな挙動も直しました ・シリアルマウス,バスマウス使用時に「移動カーソル」を表示するようにした 「移動カーソル」は「Cursor」コマンドで、表示/非表示 を切り替え可能です ・デバッガ (実装中) ・j80.cmd に追加変更があります DEBUG:n 追加&割り当て変更 DEBUG.step=n 新規追加 ・ステップ実行用の制御ロジックと逆アセンブラを実装した (仮) ※デバッガ実行中はマウスポインタの表示がおかしくなることがあります (仮) ------------------------------------------------------------------------------ [Release 6.3] Ver. 6.1.0 2014.04.12 ------------------------------------------------------------------------------ ・TEXT描画 (8x01):R7系の精度向上パッチを先行採用した ・GVRAM描画(8801):R7系の精度向上パッチを先行採用した (80系は保留) ・I/Oポート ・8001 :保留していたミラー設定を有効にした (暫定) ・80mkII:保留していたミラー設定を有効にした (暫定) ・8801 :保留していたミラー設定を有効にした (暫定) ・88V2〜:I/Oのミラー設定を解除した (R6b56で追加したポートを戻した) ・GUI ・ファイル入力(TyperINP)も DnD に対応した Textファイルはプリンタの用紙指定にしようか悩んでいましたが、 こちらを優先しました (暫定) ・その他 ・DnD時のメインループ保護を簡素化した (過剰だった?) ・コンソール出力を調整した (プログレス系との絡み) ------------------------------------------------------------------------------ [Release 7a0] Ver. 7.a.0 (jarファイルのみ暫定公開) 2014.04.02 ------------------------------------------------------------------------------ ・TEXT描画 (8x01):R6の設計のまま 描画精度を上げてみるテスト ・GVRAM描画(8801):R6の設計のまま 描画精度を上げてみるテスト (80系は保留) ------------------------------------------------------------------------------ [Release 6.2] Ver. 6.0.2 2014.03.29 ------------------------------------------------------------------------------ ・Disk System ・「FDD」コマンド (Drive Online) の動作を変更した (デスクトップ環境ではほとんど使わない機能だと思います) OFF→ON 時の、CPU, MEMORY, DRIVE のリブート処理を廃止しました ただし、DiskIF(8255) の状態は初期化されます (入出力モードの設定含む) したがって、うまく再開できないケースもあると思います なお、高速化の為、ポートアクセス時に動作モードをチェックしていないため、 モードを再設定しなくても動いてしまうかもしれません ※Disk側のみをリブートする手段がなくなりました 要望があれば追加します ・Java ・IME禁止措置にパッチをあてた Java6(WinXpのみで確認)だと、一度メニューやポップアップを開かないと IME禁止が反映されなくなっていました どうやら、フォーカスを受け取った とき に設定が反映されるようになったのに ウィンドウ構築直後(?)のフォーカス遷移はトリガとならないようで... (有効なタイミングで、明示的にフォーカスを外す→当て直す で改善) ・J2SE 1.4 の API を呼ばないようにした 双子起動のコンパネで使ってしまっていました 起動直度にコンパネにフォーカスが当たった状態にするコードですが、 無くても問題無さそうなので削除しました ------------------------------------------------------------------------------ [Release 6.1] Ver. 6.0.1 2014.03.15 ------------------------------------------------------------------------------ ・8001の「ALL RAM 化」ロジックを調整した ・8001の一部ミラーポートを変更した ・80mkIIの一部ミラーポートを解除した ------------------------------------------------------------------------------ [Release 6.0] Ver. 6.0.0 2014.02.27 ------------------------------------------------------------------------------ ・DnD 可能なファイルに N80 を追加した → N80ファイルとして開きます (テープイメージとして扱いません) ・YM2608 ・ADPCM「ROM/RAM-READ(外部メモリー→OPNA→CPU)」の動作を修正した ・ADPCM「音声合成(CPU→OPNA)」を書き直した (未テスト) ・ADPCM「DA変換」を仮実装した ・88系リレー音 を変更した(暫定) ・8801 : 80sr用を流用 → 8001用を流用 ・88ii : 80sr用を流用 → 80ii用を流用 ・88v2 : 80sr用を流用 ※変更なし ・88x2 : 80sr用を流用 ※変更なし ・BUS, PRN のボード類を整理した (ID に変更があります → j80.cfg) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ・N80ファイルをテープイメージとして使えるようにした マシン語モニタと同じフォーマットにしましたが、Lコマンドでは読めません 本体イメージの前にIPLが出力されますので、mon→L で読み込んでください 本体をロードして自動的に起動します ・CmtUtil ・「HudsonCOMPAC:FORM/PC」に対応した ・Cmt2Cmt ・「HudsonCOMPAC:FORM/PC」に対応した ・「ASCII:PASCAL-PC」に対応した ・「BondSoft:YAMETE!!」を微調整した ヘッダの後ろの MARK を 300tick → 200tick に変更 セーブデータのアドレス表示が前後ブロックで入れ替わっていたのを修正 ・Ipl2Cmt ・上書きしてしまうBASICのワークエリアを、リセット直後の値とした ------------------------------------------------------------------------------ [Release 6b56] Ver. 6.b.101 2014.01.18 ------------------------------------------------------------------------------ ・辞書ROM 仮対応 未テスト ・8801 一部のミラーポートを追加した ・uPD780 実装漏れの未定義命令を追加した ・RLC/RRC/RL/RR/SLA/SRA/SLL/SRL (IX/IY+d),r ・SET/RES b,(IY+d),r ・BIT b,(IX/IY+d) のミラー ・NEG のミラー ・RETN のミラー ・IM 0/1/2 のミラー ・Disk 例外でディスクイメージをマウントできなかったときの処理を変更した 拒否された後の GUI の振る舞いが変わりました ・拡張ボードの管理部分を整理した ------------------------------------------------------------------------------ [Release 6b55] Ver. 6.b.100 2014.01.04 ------------------------------------------------------------------------------ ・YM2608 「ONION software 100円ディスク」収録「ADPCMオケヒ音」に対応した http://onitama.tv/pc88page/index.html ADPCMメモリへの書き込み動作を調整してみました 正確なロジック,精度での実装ではありません (いわゆるパッチ) 副作用も想定しています ADPCMデータのロードで固まったり、実機と違う音がしたら報告をお願いします 深刻な問題が生じるようならパッチは削除しようと考えています OPNA実チップを叩いての調査は、KAJAさんの手腕によるものです 今回の調査では、KAJAさんにはムチャなお願いばかりして申し訳なかったです 当時を知らないので「非常識」なことばかり言ってましたが、 「新鮮な視点」という意味では役に立ったかな?と思っています また、UME-3さんには、実機ADPCMメモリのダンプを採取していただきました ありがとうございました ダンプデータに加え、以前実装しておいた ・くれゆにさん提供の FHのメモリ初期パターン ・kitahei88さん提供の 88SRのメモリ初期パターン が問題解決の突破口になりました ありがとうございました ------------------------------------------------------------------------------ [Release 6b54] Ver. 6.b.99 2013.12.24 ------------------------------------------------------------------------------ ・YM2203, YM2608, YM2151:EG アタックカーブを調整した ------------------------------------------------------------------------------ [Release 6b53] Ver. 6.b.98 2013.12.22 ------------------------------------------------------------------------------ ・YM2151:LFO ・ノイズ(PM)の符号処理を修正した (R6b52 でエンバグ) 音程が極端に怪しくなったのはコレが原因でした なお、ノイズの更新頻度は 128回に戻さず 256回のままとしておきました 更新頻度256回だと甲高くなってしまう音があるのですが、 今回の OP の修正であまり気にならないレベルになりました また、PMの精度でかなり印象が変わるので、調整で解決できるかもしれません ・YM2151:OP (OPN/A:PG, OPM:PG) LFOのかかりが浅いと感じていたのは、F-Number と DT(1) の問題だった様です (LFO波形がノイズだったので、おかしいとは思っていたのですが...) OPN/A 実装時に、資料から推定したロジックだとうまく鳴らなかったので、 適当にでっち上げたままでした 計算量を減らそうとして計算式を壊していたのが原因だったようです 冷静に実装し直したところ、当初考えていたロジックでちゃんと鳴りました OPMでの問題も解決できたので、(やっと)正解にたどり着いた気がします ・80SR の動作速度を修正した R6b43 でクロックの扱いを変えた際の変更漏れです ------------------------------------------------------------------------------ [Release 6b52] Ver. 6.b.96 2013.12.16 ------------------------------------------------------------------------------ ・YM2203,YM2608,YM2151:EG ・アタック中にレートを変更した場合、次の更新時に変更を反映するようにした なぜ「更新を反映しない」設定にしたか覚えていません 試行して戻し忘れていただけかもしれません ・EG の更新頻度を、PG の更新頻度の 1/3 にした (減衰量を 1/3 にしても問題なさそうでした) YM2151 資料の「0dB〜96dB」の所要時間をほぼ再現できるようになりました OPN/A の「プリスケール」との関係は未調査です 再生レートが低い場合でも、その 1/3 になってしまうので注意してください # 具体的にどの程度「悪化」するかは未確認です # 状況によっては対策を施す予定です ・アタックカーブを調整した 主に頂上付近の形状が変わりました ・ピークに達するのが早くなった ・強引に 0dB に遷移させていた「角」が消えた ・コード&コメント整理 ・YM2151:LFO ・ノイズの更新頻度を1周期あたり 128回 → 256回に変更した 今回の EG の変更により 音程が怪しくなったものがあったので、 (比較的)納まりの良い 256回に変えました 今後の LFO の修正によって変わる可能性があります ・コード整理 ------------------------------------------------------------------------------ [Release 6b51] Ver. 6.b.94 2013.12.07 ------------------------------------------------------------------------------ ・YM2151:LFO ・周期計算を変更した R6b47 の変更は間違いだったようです ・ノイズの更新サイクルを変更した 1周期あたり 128(64?)〜256サンプル生成すると実機と音が合うようです とりあえず今回は 128サンプルとしておきました (結果的に、ノイズの更新頻度は R6b47〜R6b50 と同じになっています) LFOの実装はまだ問題がありそうなので、今後バランスを変えるかもしれません ・波形テーブル生成ルーチンを整理して書き直した (値に変更なし) ノイズについては調整中ということで、テーブルを使うのを見合わせました ・その他コード整理等 ・DnD時にウィンドウを最前面にしてフォーカスすることにした 環境によっては一部または全部の要求が無視されるかもしれません ------------------------------------------------------------------------------ [Release 6b50] Ver. 6.b.93 2013.11.30 ------------------------------------------------------------------------------ ・cfg:OPTION ・-doubler=n 追加 起動時に「倍速設定」を有効にできます ・双子起動時は「フルスクリーン起動」の指定を無視することにした ・DnD対応 拡張子のみで判別しています Tape(Player) : cmt, t88, cas, bas, bin Disk : d88, 88d, dat (過去に要望のあったもののみです) Tapeイメージは「入れ替え」の動作になります Diskイメージは、 1. 空きドライブの若い番号順に 2. 若い未使用イメージから マウントします イメージを勝手に取り出しませんのでご注意ください ※環境や設定によっては画面がちらつきますが仕様です ・YM2151 ・LFO:PM を調整した マイナス側でも資料の cent値を再現できるようにしてみました ※OPNA の LFO:PM にも同様の問題がありますが、 大きな差は生じないので当面放置する予定です ・ディスク側が機能していない場合は、pause時に PC,SP,I を表示しないことにした ・コンパネにポップアップメニューを追加した 現在 RESET コマンドのみ対応 ------------------------------------------------------------------------------ [Release 6b49] Ver. 6.b.92 2013.11.23 ------------------------------------------------------------------------------ ・コマンド入力時の2回目以降のキーリピート防止パッチ設定変更 禁止期間 250msec → 125msec ・「双子起動」に対応した 起動オプション -twins で j80 ふたつと「コントロールパネル」を立ち上げます コンパネにフォーカスがある場合は、キーイベントが両方の j80 に配信されます どれかひとつを閉じると、すべて終了してしまうのでご注意ください ------------------------------------------------------------------------------ [Release 6b48] Ver. 6.b.91 2013.11.19 ------------------------------------------------------------------------------ ・YM2151 ・LFO:PM の「1/2 パッチ」を除去した 実機(80SR+響) と聞き比べて決めました イマイチな点は他に原因があるかもしれないので、恣意的なパッチは無しですね 資料の解釈を間違えていて、実装の 1/2 が正しいという可能性もありますが... ------------------------------------------------------------------------------ [Release 6b47] Ver. 6.b.90 2013.11.17 ------------------------------------------------------------------------------ ・YM2203/2608/2151 ・サイン波のテーブルに「0」を含めないようにしてみた (仮) ・「アタックなし」での状態遷移を修正した 強制無音処理のフェーズへ遷移させてしまっていました 「絶対ダメ!」ってコメント書いてあるのに... R6b41→42 でエンバグ YM2151 も同様の書き変えをしていたので元に戻しました ・YM2608/2151 ・LFO:AMS=0 の時の追加オフセットを元に戻した R6b45 で実装を変更した際に、不要になったと勘違いして外してしまいました 「AM:ON で AMS=0」のケースで効果を殺しきれていなかったと思います (未確認) ・LFO:AM/PM テーブルを作り直した 少し前のバージョンから、AM/PMでテーブルを分けています オフセットと位相が違うだけだと思いますが、処理速度を優先しました OPMの「ノイズ」は AM/PMで(内部処理用のスケールが違うので)揃っていません ・YM2151 ・LFO(カウンタ)の管理ミスを修正した 2piのマスクが 1bit 不足していました... ・LFO:AMD/PMD の計算ミスを修正した 効果が半分になってしまっていたようです ※PM は効果が強すぎるようなので、修正後に半分にしました (暫定パッチ) ・LFO:PMS の幅が広がった影響を実装に反映させた オーバーフロー対策がOPNA仕様のままでした PMの「混ぜ方」にも問題があるかもしれません (精査予定あり) ・「フィードバックあり」の PM 適用ロジックを修正した 前項のオーバーフロー対策の一部が適用されていませんでした ------------------------------------------------------------------------------ [Release 6b46] Ver. 6.b.89 2013.11.10 ------------------------------------------------------------------------------ ・「響」の割り込みに対応した (仮) YM2603 の MIDI-clock Timer を仮実装しました 「響子」のサンプル曲を鳴らせるようになりました YM2151 の割り込み(PIN2)は、どこにも繋がっていないように見えましたので、 機能しないようにしてあります ・サウンドボード(BUS) のコンソール出力を修正した 「割り込みレベル」と「端子名」が混乱していました 「端子名」に統一しました ------------------------------------------------------------------------------ [Release 6b45] Ver. 6.b.88 2013.11.09 ------------------------------------------------------------------------------ ・OPNA ・PMSの内部テーブルの一部を訂正した (転記ミス) ・OPM対応にあわせ、コードを整理した ・OPM ・DT2 対応 ・LFO 対応 ・NoiseGenerator 対応 ・CSM 対応 (動作未確認) これでひと通り実装したことになります まだ、うまく鳴らない音も多いです ・cfg サウンドボードID 変更 12 : PCS-8081(テクノシンセ) → 13 13 : PCS-8007(ルンルンシンセ) → 14 ------------------------------------------------------------------------------ [Release 6b44] Ver. 6.b.87 2013.11.02 ------------------------------------------------------------------------------ ・RESET.clear コマンドの動作を変更した PCG サウンドまわりの初期化処理を追加しました リセット(クリアオプション付き限定)でカウンターを初期化します 鳴っていた音が止まります / 次回「おなら」が出なくなります ※PCG8200,8800 の実機動作は未確認です ・D88ファイル解析時の「矛盾するセクタサイズに関するパッチ」を修正した 誤爆することがあったので対策しました ・シリアルマウスに対応した (88系のみ) ・バスマウスに対応した ・ライトペンの実装を見直した ・マウスポインタの制御ロジックを変更した  1. タッチパネル機能が有効 → ハンドカーソル  2. ライトペンが有効 → 十字カーソル  3. その他 → 標準カーソル または 透明カーソル ※タッチパネル機能, ライトペン, シリアルマウス, バスマウス は同時使用可能 ・カーソル(マウスポインタ)表示 ON/OFF コマンドを追加した ・88シリアルキーボードの動作スケジュールを調整した ・SN76489 のノイズジェネレータを変えてみた ・タッチパネルの座標確認機能の仕様を変更した ・タッチパネルが有効な場合のみ / デバッグモードでコンソールに表示する ・ToolTip に連動するので、画面をクリックするとしばらく更新されない ・YM2151(OPM) 対応準備 ------------------------------------------------------------------------------ [Release 6b43] Ver. 6.b.84 2013.10.14 ------------------------------------------------------------------------------ ・OPNA:ADPCM バグFIX ・前回コード整理時のケアレスミスを修正した  飽和時の処理を壊していました ・前回コードチューニング時のエンバグを修正した  算術シフトにより誤差が生じていました ・uPD780 バグFIX ・BIT命令時のフラグ変化(未定義bit)を修正した  未定義bitに対応したつもりが、意図したコードになっていませんでした ・全般 ・クロックの扱いを変更して、8MHzや倍速動作時の端数処理を廃止した ・OPN/A  ・構成を見直した (パッケージ変更) ・uPD780 ・CCF命令時の HCフラグの不定変化を「未対応」に戻した ・フラグレジスタの「未定義bit」に対応したコードを増やした  ・論理演算系  ・シフト・ローテート系  ・IN r,(C)  ・DAA  ・LD A,I / LD A,R ・ADD命令専用のフラグテーブルを追加した (テーブル版のみ) ・CMT ・クロック(カウンタ)の更新頻度を下げた  1命令毎 → サンプルレート毎  「80系はクロック無視」は変更ありません ・その他 ・switch文を調整して地味な高速化を図った  Javaのバイトコードで「tableswitch」にコンパイルされた場合でも、  Dalvik では「sparse-switch」になってしまうことがあるようです  Android版ではそれなりの効果が確認できたと思います ・上記調整にあわせ、ミラーポートの一部を追加した ・演算順などを調整して無駄を減らした (主に uPD780)  メソッド呼び出しは(有効に使えば)ソースレベルのインライン展開より  高速に動作するようです ------------------------------------------------------------------------------ [Release 6b42] Ver. 6.b.82 2013.09.21 ------------------------------------------------------------------------------ ・8801(8MHzH) の速度を調整した (暫定) ・8801/mkII の速度を調整した (ロジック変更を含む) ・8801/mkII のメモリ・パターンを変更した ・8801(8MHz機) の ポート 0x6E 未使用bit(?) を実機と同じ値にした 実機調査には kitahei88 さんに協力していただきました ベンチマークテストには、くれゆにさん作 「テストプログラム2 (まとめて実行ver.)」 「RAM内容保存ツール」 http://www7b.biglobe.ne.jp/~crazyunit/pc88.html を使用させていただきました ありがとうございました ・88V2機の構成で、ディスプレイ種別を変更すると落ちることがあるバグ FIX ・音量 ・SSG の音量のみ 1dB 刻みで調整できるようにした (暫定) FM側とのバランス調整には(まだ)精度が足りないかもしれません ・OPNA:RHYTHM音源の音量を変更した 計算ミスで設計の音量が出ていませんでした ・BEEP, SMD SING の音量を調整できるようにした ※cfg:「音量バランス等の初期設定」に変更があります パラメータ順が変わっています 設定項目が変わっているものがあります (PC-8801-10 + PC-8801-11) ・OPN/A ・F-Number設定ロジックを変えてみた R6b25-26 で当てたパッチとは少し違うロジックにしてみました 下流工程の簡素化にも繋がるので、試そうと準備していたのですが、 忘れていました。。。 ・CSM/効果音 ⇔ 通常モード 変更時の動作を変更してみた 根拠レスです お気づきの点ありましたらレポートをお願いします ------------------------------------------------------------------------------ [Release 6b41] Ver. 6.b.81 2013.08.28 ------------------------------------------------------------------------------ ・ADPCM 条件によっては発声しないことがあったのを修正した ぴっけるで掘り当てました もしかしたら、意図しない発声をするケースもあったかもしれません ------------------------------------------------------------------------------ [Release 6b40] Ver. 6.b.80 2013.08.24 ------------------------------------------------------------------------------ ・80SR グラフィック表示ロジックを修正した ------------------------------------------------------------------------------ [Release 6b39] Ver. 6.b.79 2013.08.24 ------------------------------------------------------------------------------ ・j80cfg -bus,-prn がドキュメントどおりになっていなかったのを修正した (「=」を省略できなかった) ・80mkII,80SR,8801 グラフィック表示ロジックを修正(追加)した 実用的な設定では無いと思い、あまり真剣に実装していなかった部分です 88実機テスト中にくれゆにさんが見つけてくれ、追試までしていただきました ありがとうございました 80系実機でも同様の動作が確認できたので、あわせて実装しました ・8801/mkII パレット(TEXT)がおかしかった?のを修正した 詳細は未確認ですが、たぶんリファクタリング時に壊したんだと思います V2機のデジタル出力と同じになったはずです ------------------------------------------------------------------------------ [Release 6b38] Ver. 6.b.78 2013.08.09 ------------------------------------------------------------------------------ ・コンソール出力 抑制 ・88FR/MR 修正 ・SPEEDスイッチ有無がおかしくなっていたので修正した ------------------------------------------------------------------------------ [Release 6b37] Ver. 6.b.77 2013.08.07 ------------------------------------------------------------------------------ ・全般 ・漢字ROMのアクセスに「おまじない」が必要な「旧タイプ」を復活させた 80系すべて, 88系は88SR/TR世代までの機種で「第一水準」をアクセスする際に 「おなじない」が必要になります 機種とソフトの組み合わせによっては漢字が豆腐になる現象が再発しますので、 ご注意ください 88SR の ROM を 88FR/MR に載せても問題なさそうなので、 細かな点に煩わされたくない方は cfg で「後期モデル」を指定してください ・80SR ・画面更新ミスを修正した R6b33 でエンバグしていました ・8801系全般 ・メニューを調整した 専用のメニューがある項目は「ディップスイッチ等」の一覧から除外した ・88V2(4MHz)機 ・RAM の初期パターンを変更した (微妙な部分は暫定です) パターン採集はくれゆにさん作成のツールを使用させていただきました http://www7b.biglobe.ne.jp/~crazyunit/pc88.html kitahei88 さんには 88SR実機の詳細な調査をしていただきました http://kitahei88.dtiblog.com/ ありがとうございました ※今までのバージョンで動いていたソフトが動作しなくなることがあります j80 の機種設定を「8MHz機」とすることで、回避できるかもしれません ・「88V2 4MHz機」を「前期モデル」と「後期モデル」に分けた j80cfg:ENHANCE で指定してください ・ENHANCE 0 : 前期モデル (PC-8801mkIISR/TR) ・漢字ROMのアクセスに「おまじない」が必要 ・ENHANCE 1 : 後期モデル (PC-8801mkIIFR/MR) ・漢字ROMのアクセスに「おまじない」が不要 ・88V2(8MHz)機 ・速度調整 今回は積極的な調整ではありません 試行錯誤していて、本番用に戻し忘れていたパラメータの修正です ------------------------------------------------------------------------------ [Release 6b36] Ver. 6.b.76 2013.07.31 ------------------------------------------------------------------------------ ・88(V2機) 動作速度調整&ロジック変更 前回までに引き続き、くれゆにさんにご協力いただきました。 ありがとうございました。 ・8MHz 動作時の WAIT を一部修正した ・88系 GVRAM まわりのコストを調整した ・NormalSPD系モードでは 高速TextVRAM を選択できないようにした ・NormalSPD/HiSPEED変更時、TextVRAMの参照(ポインタ)を切り替える際に データを引っ越す処理を復活させた ・RAMの初期パターンを調整した (お手数をおかけしました) ・80mkII ・RAMの初期パターン(前半32K)を調整した (悩み中) ・80SR ・RAMの初期パターン(前半32K)を調整した ・8801/mkII ・RAMの初期パターン(前半32K)を調整した (暫定的に80mkIIと同じとしています) ・ディスクアクセスの時間コスト調整方法を変更した 1. 最初のセクタを見つけるのにかかる時間(%)   ディスク一回転に要する時間に対する割合で指定します   ディスクの回転はシミュレートしていないので「平均的な時間」を設定します  「シルフィード」のような特殊なアクセスは想定していません   連続するセクタの最初の1byteの待ち時間は内部で決定しており変更できません 2. ディスクアクセス(Read/Write)中にCPUが作業している時間(state)   CPUがFDCからデータを受け取ったりする時間です   アクセス時間 = HALTしていた時間 + 解除後に作業してHALTするまでの時間   Read/Write で作業時間が異なるかもしれませんが、区別して設定できません ------------------------------------------------------------------------------ [Release 6b35] Ver. 6.b.67 2013.06.29 ------------------------------------------------------------------------------ ・88系「メモリウェイト」のロジックおよびパラメータを変更した(主に8MHz動作時) 前回までに引き続き、くれゆにさんにご協力いただきました。 ありがとうございました。 ・88/V2モードの GVRAM まわりのコストを調整した ・コードを整理した ------------------------------------------------------------------------------ [Release 6b34] Ver. 6.b.64 2013.06.22 ------------------------------------------------------------------------------ ・88系「メモリウェイト」のロジックおよびパラメータを変更した 「Crazy Unit」のベンチマークを参考にさせていただきました。 http://www7b.biglobe.ne.jp/~crazyunit/pc88.html また、追加調査にもご協力いただきました。 ありがとうございました。 ・88/V1(S)系の GVRAM まわりのコストを調整した (前回よりさらに遅くしました) ・88@8MHz動作時の GVRAM まわりのコストを調整した ・CRTCの出力条件を調整した ・リズム音源の初期化バグ(RTL)修正 ------------------------------------------------------------------------------ [Release 6b33] Ver. 6.b.63 2013.06.15 ------------------------------------------------------------------------------ ・cfg:OPTION -test1[=[n]] -test2[=[n]] を廃止した cfg:DRIVE の 第2,3 パラメータに引っ越しました。 この項目はまだ固まっていませんので、今後変更する可能性があります。 有効/無効の切り替えは cfg:OPTION -fddwait です。 ・ディスクドライブの速度(デフォルト値)を調整した R6b32 で「125,125」とか言ってましたが無視してください。 2つめのパラメータの処理を変更したので、R6b32 で調整した値は使えません。 特に皆さんからの反応がなかったので、根っ子から変えてしまいました。 ・ハイレゾの垂直同期周波数を微調整した 「Crazy Unit」のベンチマークを参考にさせていただきました。 http://www7b.biglobe.ne.jp/~crazyunit/pc88.html ありがとうございました。 ・8801(V1モード)のGVRAMまわりのコストを調整した ロジックは 80mkII と同じままです。 パラメータのみ調整してみました。 ・8801(V2モード)のGVRAMまわりのコストを調整した 以前変更したつもり(開発日記に記載あり)でしたが、変わっていませんでした。 4MHzの場合のみ少し遅くなります。 ・-smooth パッチの制御パラメータを選べるようにした 10msecでは負荷の変動が極端に大きくなる(暴れる)タイトルがあり、 気になったので、cfgで設定できるようにしました。 システム時計が狂わない環境では、cfg:SMOOTH = 2, cfg:SILENT = 1 で、R6b31 までと同じになります。 ※/config の cfg ファイルでは当方の都合に合わせ「2,1」に変更しています。 ・V2モードでデジタルパレット設定時に背景色を更新するようにした ・V2機の画面出力停止条件緩和 ・リファクタリング いろいろ ------------------------------------------------------------------------------ [Release 6b32] Ver. 6.b.60 2013.03.03 ------------------------------------------------------------------------------ ・「システム時計が進んでしまう」件の対策をおこなった ・-smooth の制御を大雑把にした ・「サウンド無効」の速度制御を大雑把にした システム時計の問題が出ていない環境でも新しい実装を使います 何かあったらメールしてください (テストにお付き合い戴くことになりますが...) [MEMO] ・Win32API の問題のようです (http://support.microsoft.com/?id=821893) ・今回の修正は場当たり的なものです ・システム時計の問題を完全に解決できたか確認できていません ・副作用についても確認が不十分です ・ライトペンの初期状態を「無効」に変更した cfg:OPTION -pen を追加した ライトペンが無効の場合は、画面上でマウスポインタが表示されません ボーダー部分ではライトペンを無視しています(常に標準カーソルが表示されます) ・ディスクアクセスのロジックを変更した エラーのある「DTL=0」のセクタは、Nで決まるサイズを使うことにした ・D88イメージの簡単なチェックを追加した 無理に開こうとして落ちることが少なくなりました 誤爆して開けないイメージがあったら連絡してください ・「オーバードライブ」に x1/2, x1/4, x1/8 を追加した ・「サウンド無効」で立ち上がらなくなっていたのを復旧した ・cfg:OPTION -test1[=[n]] -test2[=[n]] を追加した テスト用の汎用エントリです ・R6b32では、ディスクアクセスを実機並みに重くするテストに使っています  動作タイミングのズレが気になる場合に設定してみてください  「88FR DEMO」で、-test1=125 -test2=125 ぐらいかな?と思いましたが  どうでしょうか? (2HDドライブだとこれより速い?)  なんとなく傾向は把握できているのですが、「システム時計」の問題を早くFIX  したいので本実装を待たずに公開します  タイトルやシーン毎にチェックして、良い値を見つけたら教えてください  本実装では、メニューに Latency有無のチェックボックスのみ(パラメータなし)  で対応したいと考えています ------------------------------------------------------------------------------ [Release 6b31] Ver. 6.b.57 2012.12.23 ------------------------------------------------------------------------------ ・「システム時計が進んでしまう」という情報が寄せられています  当方の環境では再現しないようなので、広く情報提供をお願いしたいと思います  問題ない場合も報告をいただけると助かります  連絡先:hal_8999@hotmail.com ■実行環境 <OS> <Javaのバージョンはコンソール出力冒頭をコピペしてください> 例:java.version : 1.6.0_37 java.vendor : Sun Microsystems Inc. java.vm.name : Java HotSpot(TM) Client VM java.vm.version : 20.12-b01 java.vm.vendor : Sun Microsystems Inc. <特記事項があれば追記してください> ・java 起動時のオプション指定など ・j80の「スムースパッチ」設定 cfg:-smooth=[n] メニュー:[System]→[Smoth Patch]→[Level] ■状況 <システム時計異常: 有・無 > <異常がある場合は状況を教えてください> ・1分間にズレる秒数 / 負荷の違いで変化する? / 際限なく拡大する? など ・「スムースパッチ」の設定を変えて状況が変わる? ・Sound ・OPN/A EG全体を遅くしてみた ・OPN/A アタックのみさらに遅くしてみた ------------------------------------------------------------------------------ [Release 6b30] Ver. 6.b.56 2012.10.27 ------------------------------------------------------------------------------ ・j80.cmd ・コマンド名に一貫性が無くなって久しいので調整した ※詳細は最後にまとめました ・j80.cfg ・追加・変更があります ※詳細は最後にまとめました ・Keyboard ・CTRL, GRPH もロックできるように拡張した Android版にあわせましたた 将来、java版にも仮想キーボードを実装するときに役に立つはず ・バッファモード動作タイミングの指定単位を msec から cpm に変更した ・APIが1024以上の値を返すキーも使えるようにしてみた Java版のキーコードを前提 (Android版では 現在1024以上なし?) キーコードにパッチを当て、現状の空きコードに再マッピングしています 将来問題が発生する可能性があります j80 のキーマップ等に用いるコードはデバッグモードで確認してください ・リセット(パッチ)のバグを修正した バッファモードで動作中(ファイル入力中など)にpauseするとバッファがクリア されてしまう (Ver. 6.b.45 での修正が不十分だった) Android版での「キーのリリース漏れ」がほぼ解消したのでパッチを除去しました ・タッチパネル機能 ・マップの定義方法を変更した 今までの定義ファイルは使えなくなりました ・ガイド画像をオーバーレイ表示できるようにした 現状ではユーザーによる pause 中のみガイド画像を表示します ・推奨タッチパネルなしの時、下記操作で落ちるバグを修正した タッチパネル指定 → タッチパネル解除 → クイックマウント → F6 推奨タッチパネル指定時の挙動が読みにくい点も考慮しロジックを変更しました →「F6」(タッチパネル設定なし)時、ユーザー設定マップを再マウントしない ・CRTC全般 ・Android版でもそのまま使えるように調整した Android版でパフォーマンスを稼ぎたかったのでチューニングした ・「特殊制御文字」適当対応 ・CrtcV2 ・変化のないパレット指定時のバイパスを実装した 「88FRデモ」ホテルカリフォルニアのシーンが軽くなりました V2モードでは現在の表示に変化がなくても無視できない設定があるので、 # 「アナログパレット-デジタルディスプレイ用」などクロスした設定がある 常に全コードを通していました。 ・I/O ・いくつかのミラーポートを有効にした ・PCG8100(NewType) ・リセット時の動作を変更した:何もしない →「ソフトウェアSW ON」に戻す ・PCG8200,8800 ・初期状態を「ROM(L)+ROM(H)」(PCG OFF) に変更した (実機未確認) リセット時の動作を変更した:何もしない →「ROM(L)+ROM(H)」に戻す ・バンク制御ロジックを修正した ・PC8000クラス ・サウンドボード毎に音量設定を覚えておくようにした ・GUI ・+CRT:1 80,88V1系ではアナログ用ダイアログが出ないようにした(メニューからは指定不能) → デジタル(+CRT:2)に差し替えて実行するように変更した ・GUI 調整 ・その他 ・J2SE1.4以上の判定に「フルスクリーン化 可/不可」フラグの流用をやめた フルスクリーン設定NGの場合も J2SE1.3系と判定してしまう(バグ) フォーカスマネージャ と KeyListener のパッチに影響あり ・リファクタリング、調整 ・ドキュメントバグ修正 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - コンバータ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ・Cmt2Cmt ・CmtUtil ・BondSoft:0x3A ・特定条件のモニタフォーマットを誤認することがあったので対策した ・Bin2Cmt ・ベタイメージからの変換に対応した ・Bas2Cmt ・ベタイメージからの変換に対応した - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - j80.cmd 変更内容 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ・Toggle動作はコマンド名に明示しない ・ダイアログを表示するコマンドは先頭に"+"をつける ・:id ・=値 ・実機スイッチ類は大文字とする ・デバイス名(種)よりコマンド名を優先する ・「コマンドパラメータ設定コマンド」はコマンド名+"."+パラメータ名 ・「パラメータ指定&実行コマンド」では「"."+パラメータ名」を省略可 ToggleMenu → Menu 「Toggle」廃止 ClearRAM → RESET.clear リセットコマンドの設定 MODE=n → MODE:i 添え字はトグルするビット位置 Clock=n → CLOCK=n 実機のスイッチ類は大文字とする +Display=n → +CRT:i n=0,1 -> i=1,2 / cfg のデバイス名に揃えた CRTtype=n → CRT=n n=0,1 -> n=1,2 / cfg のデバイス名に揃えた CRTout=n → CRT8801=n M,T,0,1,2 排他選択 (ジャンパ) FPS=n → FrameSkip=n PCG8X00 → PCG8X00 メインSW (変更なし) PCGtype → PCG8100:1 設定1 on/off PCGdipSW → PCG8100:2 設定2 on/off PCGmode → PCG8100:3 設定3 on/off Scale@=n → Scale-=n, +=n マジックナンバー「-1」回避 Mixer=n → Mixer.type=n Mixerコマンドの設定 (省略しない) Bank=n → Mixer=n Mixer設定&実行 Mixer.bank=n VolSYS:i=n → VolumeSYS:i=n Volumeコマンド+デバイス名+スロット番号 VolBUS:i=n → VolumeBUS:i=n Volumeコマンド+デバイス名+スロット番号 VolPRN:i=n → VolumePRN:i=n Volumeコマンド+デバイス名+スロット番号 ResetKey → ResetKEY Resetコマンド(≠RESET)+デバイス名 +KeyMap → +KEY cfg のデバイス名に揃えた LOCK → SHIFT トグルキー (通常キー併用) 新 GRPH トグルキー (通常キー併用) 予約 新 CTRL トグルキー (通常キー併用) 予約 Timer=n → Typer=n 自動タイプ系速度設定 Typer.cpm=n +InputFile → +TyperINP 自動タイプコマンド+仮想デバイス名 +TouchPanel → +TyperPNL 自動タイプコマンド+仮想デバイス名 TogglePNL → TyperPNL 自動タイプコマンド+仮想デバイス名 R/KANA → TyperR2K 自動タイプコマンド+仮想デバイス名 Shots=n → Blaster=n Blaster設定&ON Blaster.shots=n +Player → +CMT:1 cfg のデバイス名に揃えた ToggleCAS → CMT:1 CAS=n → CMT:1=n CMT:1.title=n FF → CMT:1+ CMT:1+=1 RW → CMT:1- CMT:1-=1 PLAY → CMT:1> PauseMode → CMT:1.pause CMTコマンドの設定 TapeSPD=n → CMT:1.baud=n CMTコマンドの設定(割り込み頻度(≒倍速化)) +Recorder → +CMT:2 cfg のデバイス名に揃えた ToggleREC → CMT:2 DelayCMT=n → Delay=n CMT:1,2 ともに影響あり OnlineFDD → FDD CheckFDD → FDD.auto FDDコマンドの設定 +Drive:i → +FDD:i cfg のデバイス名に揃えた ToggleD:i → FDD:i D88:i=n → FDD:i=n FDD:i.disk=n RemoveAll → FDD:* +Paper → +PRN cfg のデバイス名に揃えた TogglePRN → PRN MODE=n 予約 : DipSW等 全ビット一発指定 CRT8801:i 予約 : 任意のジャンパを設定可能にする? -CRT:i=filename 予約 : -KEY=filename 予約 : -TyperINP=filename 予約 : -TyperPNL=[filename] 予約 : filename を省略したら remove -CMT:1=[[filename],n] 予約 : filename を省略したら remove -CMT:2=[filename] 予約 : filename を省略したら remove -FDD:i=[[filename],n] 予約 : filename を省略したら remove - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - j80.cfg 変更内容 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ・追加 SYS [[v0][,[v1][,[v2][,[v3][,[v4][,[v5]]]]]]] BUS:id [[v0][,[v1][,[v2][,[v3][,[v4]]]]]] PRN:id [[v0][,[v1][,[v2][,[v3][,[v4]]]]]] ・変更 -D88:i → -FDD:i イメージの拡張子と紛らわしいのでデバイス名に -RGB → -CRT:1 設定ファイルの拡張子と紛らわしい -512 → -CRT:2 設定ファイルの拡張子と紛らわしい -CMT → -CMT:1 -FDD,-CRT の表記にあわせた -REC → -CMT:2 -FDD,-CRT の表記にあわせた ・変更 (OPTION) -vol → 廃止 -bus:i=... → -bus=i 音量指定廃止 -prn:i=... → -prn=i 音量指定廃止 -fps=n → -skip=n ・デフォルト変更 -TMP ./ → ./temp/ -PNG ./ → ./screenshot/ -KEY ./keymap/106jp → ./keymap/106jp.key (以前の修正漏れ) ------------------------------------------------------------------------------ [Release 6b29] Ver. 6.b.48 2012.03.15 ------------------------------------------------------------------------------ ・タッチパネル,ライトペン用の座標補正(拡大時)のバグを修正した ・タッチパネル定義を連続して読み込んだ際の不具合を修正した ・removeできないマウント系メニューでも「ファイル名」を表示するようにした ・推奨キーマップの処理を変更した ・メニューに表示しない → 表示する (「* ファイル名」表記) ・キーマップの設定が無い場合:何もしない → ユーザー設定に戻す ・タッチパネルの設定が無い場合:パネルをクリアする → ユーザー設定に戻す ・キーマップ定義ファイルの推奨拡張子を決めた (.key) ・タッチパネル定義ファイルの推奨拡張子を決めた (.pnl) ・D88「ディスクの名前」を文字列化する時 "Windows-31J" を明示するようにした 経緯を考え、"Shift_JIS" ではなく "Windows-31J" としてみました 各種ユーティリティでどのような文字コードを使用しているかは調べていません テープの「ファイル名等」の処理については当面放置します ------------------------------------------------------------------------------ [Release 6b28] Ver. 6.b.47 2012.03.10 ------------------------------------------------------------------------------ ・ウィンドウ枠ドラッグで拡大率を変更するようにした (25%刻み) ・Scale@= コマンドを追加した (±25%刻み) 縮小時に余白があるときは、スケールを変えずにウィンドウサイズのみ調整します ・注意: ・メニューON/OFFでは拡大率が変化しない仕様ですが、  最大化時に上下がピッタリだった場合は拡大率が変わってしまうかもしれません ・最大化→フルスクリーン→復帰すると最大化が解除されてしまうようです  また、最大化前のサイズを忘れてしまうようです ・描画オプションは下記サイトを参考にしてください Java 2D(TM) テクノロジのシステムプロパティ http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/2d/flags.html http://fbrowser.sourceforge.jp/docs/browse/jdk-6u21/technotes/guides/2d/flags.html ------------------------------------------------------------------------------ [Release 6b27] Ver. 6.b.46 2012.03.04 ------------------------------------------------------------------------------ ・フルスクリーン時の拡大率を指定できるようにした ・cfg の SCREEN の書式を変更した 詳細は j80.cfg を参照してください ------------------------------------------------------------------------------ [Release 6b26] Ver. 6.b.45 2012.03.03 ------------------------------------------------------------------------------ ・OPN/A:F-Number 設定ロジックを変更した 無理のないロジックでちゃんとした音が鳴るようになったようです R6b25の実装が正解なのかな? ・「テキスト入力」機能を壊していたので直した Android版で「キーのリリース漏れ」が多発するので、一息つくタイミングで キーマトリクスをリセットするようにしたのですが、ファイル入力まで中止して いました ※201.03.04  ドキュメント中では「テキスト」ではなく「ファイル入力」としていましたね  同じ意味です  あやおりさんの「入力代行機能」って表現が良いので頂いてしまおうかな  http://ayaoritohno.blog38.fc2.com/blog-date-20111211.html ------------------------------------------------------------------------------ [Release 6b25] Ver. 6.b.44 2012.03.03 ------------------------------------------------------------------------------ ・ボーダー処理をフレームワーク(Swing)的に安全な実装に書き換えた ・ボーダー領域の最小保障サイズを設定できるようにした ・拡大表示に対応した (Window枠ドラッグによる変更は未実装) ・cfg に「WINDOW」(初期拡大率,ボーダー保障サイズ,ウィンドウサイズ固定) 追加 ・OPN/A:F-Number2 の設定ロジックを変えてみた F-Number2 を設定しないドライバの動作を手がかりに試行錯誤してみました 設定していないチャネルにch0の設定を与えるとうまく鳴るようでしたので 「上流チャネルの設定を反映させる」ようにしてみました →「アリオン(88SR)」(ASCII) の音痴が改善されています 他のレジスタも同様かもしれないと思いましたが実装を見送りました 現状では 0xA4~0xA6 のみのパッチとしています ------------------------------------------------------------------------------ [Release 6b24] Ver. 6.b.43 2012.02.26 ------------------------------------------------------------------------------ ・88系 バックグラウンド/ボーダーカラーのビット位置が逆だったのを修正した ・POWER OFF で開始したとき2回 RESET しないと起動しなくなっていたのを修正した Android 対応時にエンバグ ・casファイルなどの の置換処理が抜けていたので復元した 削除した理由不明 (たぶん事故) ・マウスイベントのハンドリングを変更した → Display クラスでスケーリング補正して返す 画面サイズ変更準備です ・ウィンドウサイズを変更できるようにした また、画面をセンタリングするようにした (フルスクリーン時含む) 余白部分を「ボーダー」として処理しています 簡易実装です / 走査線云々は考慮していません ライトペンのオフセットとも無関係です API側にお願いして塗り潰してもらっているのでタイミングがずれるかもしれません ボーダー部分では常に標準マウスポインタが表示されます ・WindowsXp + 最近のJava だとフルスクリーンからうまく復帰できないようです java.version java.vm.version 1.4.2_10 1.4.2_10-b13 OK 1.5.0_11 1.5.0_11-b03 OK 1.6.0 1.6.0-b105 OK 1.6.0_29 20.4-b02 *NG* (Windows7 では OK だった) 下記オプションで問題を回避できるようです -Dsun.java2d.d3d=false 使用法: java -jar -Dsun.java2d.d3d=false j80.jar 意図しない再作図によるチラツキを回避する目的で導入済みだったので、 復帰時に問題が生じるようになったことに気づきませんでした j80側で対策できるか調査してみます (期待しないでください) ------------------------------------------------------------------------------ [Release 6b23] Ver. 6.b.42 2012.02.21 ------------------------------------------------------------------------------ ・80SR「モノクロ(テキスト)+反転+OFF」時のバグを修正した ------------------------------------------------------------------------------ [Release 6b22] Ver. 6.b.41 2012.02.19 ------------------------------------------------------------------------------ ・ADPCM のクロックをFM側から独立させた ・OPN/A のプリスケーラを R6b20 に戻した ・88SR~ のディップスイッチの表記を修正した ・S ON SW1-5 -> SW1-4 ・DEL ON SW1-6 -> SW1-5 ・コマンドを変更した (調整中) ・DiskSystem -> OnlineFDD ・CheckDrive -> CheckFDD ・「モノクロ(テキスト)+反転+OFF」時の表示を修正した ------------------------------------------------------------------------------ [Release 6b21] Ver. 6.b.40 2012.02.06 ------------------------------------------------------------------------------ ・OPN/A のプリスケーラを元に戻した 「88MA/FA店頭デモ」で不具合が起きたので一旦元に戻します (ADPCMの再生速度がおかしくなった) ・ディスクが無いとき ST3 の「Two Side」ビットを立てないようにした まだ「Ready」ビットの実装など検証が不十分な点が残っています ------------------------------------------------------------------------------ [Release 6b20] Ver. 6.b.39 2012.01.28 ------------------------------------------------------------------------------ ・88(8MHz機)のシリアルキーボード「互換キーストローク」に対応した ・キーマップの定義方法に変更があります ・実際にシリアル通信をするところまでは実装していません ・キーコードの送付間隔は 1/600sec になります(実機ではデータ間が2.4mらしい) 問題が出たら 2/600sec にする予定 なお、最初のストロークは「即時」適用となりますので、 1→2ストローク間の時間精度は無保証になります ・キーコード送付タイミングはタイマー割り込みと同期しています 問題が出たら Keyboard クラスに入れるクロック精度を上げます ・実装に当たっては下記サイトを参考にさせていただきました http://www.maroon.dti.ne.jp/youkan/pc88/index.html ・NumPad[Enter], Right[Shift] に対応した (J2SE1.4~) ・NumPad[Enter], Right[Shift] はj80独自のコードが返ります (1022, 1023) キーマップの [RETURN], [SHIFT] に追加登録してください ・このコードと重なるキーは使用できなくなります 問題がある場合は連絡をお願いします ・[Shift]+NumPad の問題にパッチを当てた (J2SE1.4~) ・不完全なパッチです 従来どおり「副作用の無いキーに(も)[SHIFT]を割り当てる」を推奨します ・「化けたコードを復元 + シフトキーを復元」しますが以下の問題があります ・一瞬シフトキーがリリースされた状態になる ファンクション表示のちらつきなどで確認できる場合があります(8MHz機で顕著) ・リリースされたシフトキーの状態を完全には復元できない(左,右,左+右) → 常に [SHIFT(左シフト)] のみを入力しています ・OPN/A のプリスケーラを修正した ・終了コマンド名を Quit から Exit に変更した ------------------------------------------------------------------------------ [Release 6b19] Ver. 6.b.38 2011.12.31 ------------------------------------------------------------------------------ ・「推奨キーマップ」ロード時の不具合を修正した 「パネルなし」の設定をロードすると、次回パネルロード時に落ちてしまう 仕様変更:「推奨キーマップ」でロードしたパネル名はメニューに表示しない ------------------------------------------------------------------------------ [Release 6b18] Ver. 6.b.37 2011.12.25 ------------------------------------------------------------------------------ ・バグFIX ・ROM構成が「PC-8001」の場合でも PCG8200 が選択されていたのを修正した ------------------------------------------------------------------------------ [Release 6b17] Ver. 6.b.36 2011.12.24 ------------------------------------------------------------------------------ ・Crtc80#setDisplay() ・バグFIX ロードできなかったとき、カラーマップを自動生成する前に return していた ・フォント ・初期化できなかった部分を豆腐にする処理を復活させた ・[SHIFT LOCK] (8801A,B) 対応 ・便利なので全機種で使用できるようにした ・FM音源(タイマー割り込み) ・実装変更 PC側のマスク解除でトリガ発生 (80SR, 88OPNA機, PC-8801-11,23 も同様とした) PC側のマスクまわりのパッチを除去した ・Cmt ・メニューからタイトル単位で頭出しできるようにした ・j80.cmd ・終了コマンド名を PowerOff から Quit に変更した - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ・コンバータ全般 ・表記を全面的に見直し「固定ボーレート,パリティあり」の部分を明示した ・Cmt2Cmt ・CarryLab:JE6#Loader ・テンプレを変更した (Cassette.BAUD_USER → Cassette.BAUD_1200) ・CarryLab:JE6#Data ・再チェック時、0byteブロックの処理を修正した (結果は合っていた) ・再チェック時の「ゴミ」の扱いを変更した (FMT_UNKNOWN ブロックに分離) ・BondSoft:YAMETE!! ・仮FIX ・「ファイル名」表示を復活した (デコード処理追加) ・セーブデータ(ヘッダは同じ)の解析処理を追加した ・再チェック部分(汎用)を修正した (実害はなかったハズ) 前後に組み入れた「不明ブロック」の影響でメインパートのサイズが狂う → それぞれ先頭パート,最終パートのサイズに反映されるように修正した ・CmtUtil ・BondSoft:0x3A に対応した 「TIME SECRET(8801)」 ・BondSoft:YAMETE!! の判別ロジック変更&ファイル名表示を追加した ・CarryLab:JE6#Loader に対応した ・CarryLab:JE6#Data に対応した (ヘッダのみ) ------------------------------------------------------------------------------ [Release 6b16] Ver. 6.b.31 2011.10.08 ------------------------------------------------------------------------------ ・Cmt ・MOTOR OFF 時の「スキップ」処理の実装を丁寧にした ・スキップ量の制限を緩和した ・Cmt2Cmt ・BondSoft<0x3A> テンプレート追加 「TIME SECRET(8801)」 ・BondSoft 追加セクタの扱いを「最終回」限定にした (障害未確認) ------------------------------------------------------------------------------ [Release 6b15] Ver. 6.b.30 2011.10.03 ------------------------------------------------------------------------------ ・CrtcV2 ・V2modeリセット時のポートの値と内部フラグの矛盾を修正した (障害未確認) ・高速 TEXT RAM 表示時は 0xF000~0xFFFF しか見えないよう制限をかけてみた Nモードだとうまく動作しなくなるソフトが出ますが、たぶんそんな仕様です ・サウンドボード2(A8) リセット時「割り込み許可」に変更した ・DiskDrive ・D88:FDC_STATUS の CRCエラーに関する情報のみ ST1,2 に反映させるようにした ・DMA(CRTC) ・TC 設定時に Wrビットまで含めていたバグを修正した ・TC 設定時に実アドレス化していたバグ(パッチ)を除去した 80SR対応あたりで余計なパッチを当てていたようです 「リグラス(8801)」(ランダムハウス) 用の「再パッチ」が除去できました ・80系もポート0x64,0x66(IN)実装 ・CmtCmt ・CarryLab の識別精度向上 ・CarryLab の識別精度向上 ------------------------------------------------------------------------------ [Release 6b14] Ver. 6.b.28 2011.09.23 ------------------------------------------------------------------------------ ・DiskDrive ・ST1,ST2 のエラービットを間違えていたので直した ・シークエラー時に最後にチェックしたセクタの D88:FDC_STATUS が ST1 に 反映されてしまうバグを修正した ・シークエラー時に R を復元するようにしてみた ・READ(DELETED)DATA では DAM/DDAM が矛盾していても読むようにした ・AY38910 ・PortA,B のリセット処理追加 ・ついでに PortA,B 出力側対応 (利用予定なし) ・Crtc80 ・DMAの設定途中でCRTCをスタートさせているソフトに対応した ・YM2608 ・拡張側のチャンネルにアクセスする際は 0xA8~A, 0xAC~E を無視するようにした ・YM2203_Channel ・F-Number 設定ロジックを調整した (軽量化狙いの手抜きをやめた/影響ないはず) ------------------------------------------------------------------------------ [Release 6b13] Ver. 6.b.27 2011.09.20 ------------------------------------------------------------------------------ ・MemoryV2 初期パターン再調整 (実機未確認) ------------------------------------------------------------------------------ [Release 6b12] Ver. 6.b.26 2011.09.19 ------------------------------------------------------------------------------ ・DiskIF 再調整 ------------------------------------------------------------------------------ [Release 6b11] Ver. 6.b.25 2011.09.17 ------------------------------------------------------------------------------ ・AY38910 I/OポートA,B を チップ側で管理することにした ・YM2203,YM2608 FM側の READ DATA の応答を 0xFF から 0x00 に変更した ・割り込み デバッグ時に Release3.2仕様に変更したままになっていたのを戻した (R6b9,10 が Release3.2仕様) ------------------------------------------------------------------------------ [Release 6b10] Ver. 6.b.24 2011.09.10 ------------------------------------------------------------------------------ ・Memory 「88SRタイプ」のクリアパターン(仮)を用意した メモリの初期状態に依存するタイトルがあるようです。 ・OPN/A プリスケーラ設定時にレジスタをクリアしないようにした ・tapeImage キャリーラボ(キャリーソフト)の「JE6」の解析に正式対応した ------------------------------------------------------------------------------ [Release 6b9] Ver. 6.b.23 2011.08.31 ------------------------------------------------------------------------------ ・88SRのパレットまわりを修正した 「P1デモ2」の白文字が表示されるようになります。 今回の調査で、パレットまわりももやもやが晴れた気がします。 ・ALU/GVRAM 選択に関するバグを修正した (88SRのみ) 「拡張アクセス時はVRAMバンク切り替えポート(0x5C~0x5E)無効」を実装しました。 以前 X88000 の Manukeさんに教えていただいていたのですが漏れていました。 「アークスII店頭デモ(88SR)」のテキストマスクが正常になります。 ・DiskIF デグレ部分を修正した R6b3->4 で余計なことをしていたようで、アクセスが不安定になっていました。 R6b3に近い実装に戻しました。 ・「将軍2」を 15kHz で立ち上げると落ちる問題に暫定対応した いろいろなカウンタに影響が出るので CRTCの変な設定に関しては放置しています。 ただ、落ちるのはまずいので、関係がある部分にのみ対策を加えました。 ・YM2203 ・YM2608対応したときの Timer-B エンバグ部分を修正した (障害未確認) ret = IRQ_TB; -> ret |= IRQ_TB; ・Timer-A, B の「リロード」処理を調整した エミュレータのタイマー更新頻度の影響を加味しました。 以前のリリースでこの実装を試した記憶があるのですがが、詳細は忘れました。 明確な(良い)影響が感じられなかったので、シンプルな実装に戻した気がします。 ・uPD780 ・ビット演算のフラグ変化を調整した (障害未確認) bit3,5 も サインフラグ と同様の変化をさせることにした ・割り込みまわりに(最近の)デバッグ中の無駄コードが混ざっていたので整理した ・PCG8100(単音)の初期状態を変えてみた 電源投入直後の状態で「NewラリーX(I/O:1982.5) サウンドパッチ(I/O:1982.7)」 の音が出るようにしてみました。 音が出るロジックは適当です。 (今回はカウンタに適当な初期値を設定していますが、「Highで無音」かも) 実機での動作も未確認です。 記事中は「PSA」なので「PCG」とは仕様がちがうかもしれません。 「ロータス」のボードも未確認です。 どなたか実機での検証に協力していただけませんか? ・リファクタリング ------------------------------------------------------------------------------ [Release 6b8] Ver. 6.b.20 2011.08.13 ------------------------------------------------------------------------------ ・GVRAM,ALUまわりの実装をメモリ側にまとめた (80SR,88V2) あわせて下記問題点(不具合未再現)を修正した ・GVRAM選択ロジックに若干の問題を見つけ修正した (88V2) ALU ON→ON のときも GVRAM選択を OFF にすることがあった (CrtcV2) ALU →ON のとき常に GVRAM選択を OFF にしていた (MemoryV2) ・80SRではこのパッチを適用しないがコメントアウトし忘れていた (CrtcSR側のみ) ・タッチパネル使用時に ToolTip を表示することにした タッチパネル定義ファイルを拡張した ・N80ファイルの取り扱いを若干変更した メモリ側はロード,セーブのみ / CPU制御は PC8000クラスに移す ------------------------------------------------------------------------------ [Release 6b7] Ver. 6.b.18 2011.08.06 ------------------------------------------------------------------------------ ・リファクタリング ・Android版にあわせて一部の設計を変更した ・BIOS類のロード失敗で落ちないようにした ・ファイル入力などのバッファ消費速度 60ms 追加 ・マウスポインタOFFでメニューを開いた場合、メニューを外れてもポインタが消えないようにした ・全てのダイアログで「すべてのファイル」有効とした ・88/mkII で「ハイレゾ」切り替えがうまく動かなくなっていたのを直した ・CPUを別バージョンに変更してみた (→インデックスレジスタ:8bit分割版) ------------------------------------------------------------------------------ [Release 6b6] Ver. 6.b.16 2011.02.14 ------------------------------------------------------------------------------ ・BUG FIX: シリアルキーボード機以外で、未使用ポートをクリアしようとして落ちるバグ修正 ------------------------------------------------------------------------------ [Release 6b5] Ver. 6.b.15 2011.02.13 ------------------------------------------------------------------------------ ・BUG FIX: CPUの初期化ミスで、MAIN CPU にも HALT解除パッチがあたっていたのを修正した r5a1 -> r5a2 でエンバグ ------------------------------------------------------------------------------ [Release 6b4] Ver. 6.b.14 2011.02.13 ------------------------------------------------------------------------------ ・80SR: ・「ひらがな」フォントの構成と内部処理を変更した  旧:1KB (128キャラクタ分 / 2セット目の後半128キャラのみ)  新:2KB (256キャラクタ分 / 2セット目の256キャラすべて) 80SR専用のフォントファイルを作ることをお勧めします  下記フォントセットを1ファイルに連結してください (計8KB)   1セット目:ASCII + カナ,記号   2セット目:ASCII + かな,記号   3セット目:ASCII + カナ,記号 (1セット目と同じ)   4セット目:ASCII + かな,記号 (2セット目と同じ)  ※現在j80では3,4セット目のデータは使っていません   80SRのフォントROMの構成については「80mkII愛友会」の掲示板での   やり取りを参考にさせていただきました   http://www5f.biglobe.ne.jp/~apaslothy/ ・Util: ・N80ファイルの ロード,セーブ に仮対応した ・サウンドメモリのダンプ仕様を変更した ・ImageListにプリンタの (offline) 表示を追加した ・Java: ・Javaのパッケージに対応した ・コンバータ類の構成を若干変更した ・ファイルのハンドリングを String から File に変更(統一)した ・Crtc80 クラスから JPanel を分離してみた ・その他イベント管理系を j80GUI クラスにまとめた ・BUG FIX: ・シリアルキーボード機で「ローマ字かな変換機能」がうまく働かないソフトがあった → ポートのクリア漏れを修正した ・「FROST-DOS」がブートしない → テキストウィンドウを介した場合は、ハイスピードTextRAMは見えないようにしてみた 上記調査中に DiskIF まわりに若干手を入れました (ほとんどテストしてません) ・「PC-8801MA/FA 店頭デモ」最初のシーンで無限ループ → ADPCM のループ時も EOS フラグを立てるようにしてみた ------------------------------------------------------------------------------ [Release 6b3] Ver. 6.b.13 2010.11.09 ------------------------------------------------------------------------------ ・BUG FIX: ・前回カーソル位置の描画(更新)の問題を修正した ------------------------------------------------------------------------------ [Release 6b2] Ver. 6.b.12 2010.11.09 ------------------------------------------------------------------------------ ・BUG FIX: ・「8MHz機」で「アナログ/デジタル」切り替えが有効にならなかったのを修正した ・サウンド: ・サウンドボード類の初期化プロセスの無駄を排除した 昔の「オブジェクト再利用」仕様が残っていた ・サウンドカード類と関連デバイスの初期化プロセスを変更した ・[RESET] → [Clear RAM] で ADPCM もクリアするようにした ・リセット時にサウンドバッファの残りを捨てるようにした ・ADPCMの音量まわりの実装を小変更した ・PC-8801-10 + PC-8801-11 の 88-01側の割り込みを機能しないようにした ・PC-8801-10,11,23 の80系スロットでの割り込みレベルの問題を再現した ・-bus の ID を変更した ・ADPCM の線形補間(内部パラメータ計算)を調整してみた ・ディスク: ・結合イメージ対応 結合イメージに書き込みをした場合、D88ファイル更新タイミング毎に バックアップを作ります。 同一ファイル中の複数のDiskが更新されていた場合は、 一回の更新タイミング毎に更新されたDisk枚数分のバックアップが追加されます。 エミュレータ側では消しませんので注意してください。 使用可能な連結数上限は cfg で変更可能です。 ・UI制御について試行錯誤 ・ディスクマウント時の「波及効果」検討 ・指定可能な残りディスクがない場合はサブメニューを表示しない ・DiskIF(8255) モード変更時に放置していた一部ポートをクリアするようにした ・ドライブ数制限(2台限定)を撤廃した (1~4台に対応) ・WRITE ID のログ出力がおかしかったので修正した ・CDOS2 の 2HD フォーマットに暫定対応した Tr0の先頭セクタのみを FM(3セクタ) で再フォーマットしたいようです。 誤爆が怖いので「TRACE ON」でのみ有効なパッチとしました。 ・CPU等: ・NMI にも HALT 解除のコードを追加した (使ってません) ・スペシャルM1でも BUSRQ を受け付けるようにしてみた ・80系実装でも88系同様の割り込みマスク時のパッチを適用した ・CRTC等: ・垂直帰線幅の設定をタイミングに反映した (従来は20行設定時と同等で固定) ・垂直表示期間が 200Line でない場合のタイミングにも対応した ・1Hの時間精度を上げた ・高解像度ディスプレイ使用時のタイミングを仮実装した メニュー等から 200/400Line を切り替えただけでは表示しか変わりません。 CRTCが再設定されないと動作タイミングが狂ったままになります。 切り替え後にリセットすることをお勧めします。 ・88VAタイプの 200Line 出力(高解像度ディスプレイ使用時)を可能にした ・80SRのアトリモードではパレットを反映させない r5a1 以前の実装に戻した ・80SRの ALU/GVRAM/MainRAM 選択ロジックを r5a1 以前の実装に戻した ・TEXT OFF(80SR,88)の場合は、カーソル, 反転系アトリを無視することにした ・その他: ・80系+PC-8801-02N系拡張RAMに対応した ・PC-8801-02N系拡張RAMの内容をセーブ/リストアできるようにした ・ImageMixer の補正カーブを選択できるようにした ・「テキスト入力」などのキーストロークに chr$(2)=[Ctrl]+[B] を追加した ・USARTステータスポーリング時に READY を返す頻度を変更できるようにした 88の load"cas: など、割り込みを使っている場合はこの設定は使いません。 0,1だと「ロード中に[STOP]が利かない」などの問題が出る場合があります。 待ち時間でしかキースキャンをしないプログラムで問題になるわけですが、 「テキスト入力のバッファが減らなくなる」という、おいしい面もあります。 ・UI,cfg,cmd: ・8MHz H 対応(復活?) ・ディスクイメージの指定方法を変更した ・ドライブ数の設定を追加した ・BEEP,OPNA の指定方法を変更した ・フレームレートの設定方法を変更した ・高解像度ディスプレイ「88VAタイプの 200Line 出力」を追加した ・開発系コマンドを一新した ------------------------------------------------------------------------------ [Release 6b1] Ver. 6.b.0 2010.09.23 ------------------------------------------------------------------------------ ・仮対応が多いですがβとします ・サウンド(OPNA): ・BRDYフラグを立てる機会を増やした ・8MHz機対応: ・8MHz動作時の仮WAITを実装した ・8MHz機のキーボードに仮対応した ※「互換キーストローク」生成機構は未実装です ・その他: ・若干のコード整理など ------------------------------------------------------------------------------ [Release 6a6] Ver. 6.a.8 2010.09.21 ------------------------------------------------------------------------------ ・サウンド(OPNA): ・LFO: コード整理 カウンタがオーバーフローする可能性があったので対策した サンプルレート差による丸め誤差を減らした ・ADPCM: PCM_BUSY フラグ実装 リピート再生時にデコーダを初期化するようにしてみた フラグレジスタの処理に変なコードが残っていたので修正した 「メモリリード」時の「最初の2回はダミーリード」を実装した (未テスト) 「メモリリード」時の「最後の2データ分はフラグが立たない」実装 (未テスト) 「STOP ADDRESS」到達後の状態遷移を少し変えてみた DELTA-N に「最低値」の制限を設けた 初期化時に DELTA-N を最低値に設定するようにした 「音声合成(CPU→OPNA)」実装 (未テスト) ※これでYM3016が絡まない部分はだいたいそろったと思います 実装が雑なところや間違っている部分もあると思いますが... ------------------------------------------------------------------------------ [Release 6a5] Ver. 6.a.7 2010.09.19 ------------------------------------------------------------------------------ ・BUG FIX: ・OPNA AMS=0 のときの減衰量が 1bit 足りていなかったのを修正した ・サウンド(OPN/A): ・クラスを再統合した ・PGのカウンタ桁数を制限しているのを見つけた → 撤廃した ・LFO再実装 (仮想 Fnum を再計算してテーブル化した) ・PMS再実装 (本番仕様で実装したつもり) ・ADPCMの出力レベルを2倍にした (内部の処理は変わってません) ------------------------------------------------------------------------------ [Release 6a4] Ver. 6.a.5 2010.09.14 ------------------------------------------------------------------------------ ・BUG FIX: ・ADPCM「LIMIT ADDRESS」の処理が違っていたようなので修正した ※ADPCMはかなり不完全です。  暴走・誤爆の可能性がありますので音量にご注意ください。 ・サウンド(OPNA): ・クラス設計を Ver. 6.a.3 に戻した (LFO実装時の混乱回避 / 再統合検討中) ・LFO仮実装 ・ADPCM「1bitアクセス」実装 ・起動プロセス変更: cfg が指定されなかった場合 1. j80.jar の場所の _j80.cfg (ユーザーcfg) を探す 2. 無かったら j80.cfg を使う _j80.cfg は ./cfg/ 中の適当なファイルをベースに作ってください cfgの完全な情報は j80.cfg をお読みください ------------------------------------------------------------------------------ [Release 6a3] Ver. 6.a.4 2010.09.11 ------------------------------------------------------------------------------ ・BUG FIX: ・一部の機種でデバッグ時に切り離したサウンドボード類の繋ぎ忘れを修正した ・サウンドボード類を安全に「差し替え」できるようにした ・PC-8801-23:一部ポートの接続ミスを修正した ・OPTION:-tape=, -smooth= が外れていたのを復元した ・サウンド(全般): ・ステレオ対応 (※ cfg に変更があります) 拡張ボード類には左右チャンネルへの振り分けに配慮したものがあります *具体的なニーズに基づく* 要望があれば実装を検討します ・サウンド(OPN/A): ・「サインテーブル」を対数化した  LFO対応の準備です ・エンベロープジェネレータの出力桁数を上げてみた  サインカーブの精度確保のため指数テーブルのエントリを増やしたので、  EGの出力も(カウンタの端数を切り捨てずに)桁数を増やしてみました  特定音色のプチプチ音がほんの少し改善された気がします  減衰が小さい時の階段状のカーブが滑らかになったのが良かったのでしょうか? ・クラス設計変更  OPN,OPNAのオペレータを統合した  OPN,OPNAのチャンネルを統合した ・リズム音源(仮?)対応  事前に読んでおいたPCMデータを垂れ流す実装です  リサンプリングはおこないません ・ADPCM音源仮対応  とりあえず「メモリに書き込んだADPCMデータを再生できる」程度です  変な動作をしがちですのでお気をつけください  残りの機能は今後ということで (YM3016が絡む機能は端折ると思いますが) ・サウンド(その他): ・SoundPRN_LOG:タイマーの実装を変更した ・cfg: ・SOUND に変更があります  バッファ,サンプルレート,チャンネル数 を SOUND に統合しました ・ENHANCE に変更があります  88(8MHz機) の設定方法が変わりました (OPN機 1→2 / OPNA機 2→3) ・OPNA_* を追加しました  リズム音源用の wav ファイル指定用です ・その他: ・「LFO」はアプリケーションマニュアルの内容を実装に落とせませんでした ・コードが荒れていますのでとんでもない不具合が発生する可能性があります ------------------------------------------------------------------------------ [Release 6a2] Ver. 6.a.2 2010.08.31 ------------------------------------------------------------------------------ ・サウンド: ・OPN/A「Detune」の実装ミスを修正した  何か音がサッパリしすぎたと思って調べたら仮実装のコードが残っていて...  ゴメンなさい。 ------------------------------------------------------------------------------ [Release 6a1] Ver. 6.a.1 2010.08.29 ------------------------------------------------------------------------------ ※R6系のソースツリーに移行しました  ・結局 R4系(88/mkII)はα版公開すらなし、R5系(88SR)は正式版なしでした  ・当面は OPNA 対応を少しずつやる予定  ・キーボードのちゃんとした対応は難しいかも   80mkII の [TAB] と同じ仕組みでいけると思ったのですが、   母艦のキーリピートを抑止できないと使用上厳しいかもしれません  ・落ち着いたら最後にサウンドのステレオ対応をしてβ版と考えています ・カレンダー: ・カレンダーまわりの実装を変更した ・設計を変更してRTCチップを分離した  今回の2点の変更で負荷低減のパッチが外れました  今となってはもうこのくらいは影響を感じないと思います ・サウンド: ・OPN/A「Detune」の具体的なパラメータが分かったので本実装した  OPNAのアプリケーションマニュアルに載ってました  他にも怪しい点があるので精査する予定です ・母艦の再生レートを48000Hz以外にした場合のカウンタオーバーフロー調査  OPN/A:   低ビットレート時に可能性があったので下駄のビット数を減らした   今後、元に戻して44100Hz未満を無視するか決める予定  その他:   未調査 (たぶん大丈夫) ・OPNAの調査結果に基づきクラス設計(仮)&実装  「OPN x2」程度の実装状況です (モノラルです!)  ひととおり分かったら再設計&再実装する予定です ・サウンド系ボードの 8MHz機への対応についてはこれから調べます  実機仕様によらず「クロック分離」とする方向で検討中ですが気持ちだけ。。。 ・cfg, cmd 等 ・メニューの Bus を Ex.Bus に変更した  ニモニックも B から E に変わりました ・cfg OPTION のサウンド関係の指定方法を変更しました ・j80.cmd の VolumeN= コマンドを VolSYS,VolBUS,VolPRN に分割しました ・その他: ・コメントを強化した  特に「クロック数」と「経過時間」のどちらで管理しているか分かりにくい部分 ・コード整理と称してクラス名の変更など少々。。。  R6系移行記念? ------------------------------------------------------------------------------ [Release 5b21] Ver. 5.b.25 2010.08.22 ------------------------------------------------------------------------------ ※今回のリリースの目的は カレンダー のバグFIXです  サウンドまわりは改修中のコードをとりあえず動くようにしたものです ・カレンダー: ・バグFIX (12/31 23:59:59 → 01/00 00:00:00) ・8MHz機(uPD4990)対応準備 ・GUI: ・88SR以降の機種に「BASIC MODE スイッチ」「SPEED スイッチ」を追加した ・その他: ・8MHz切り替え(WAIT等未実装)と uPD4990 に適当対応した Ver. 6.a.0 を同梱  8MHz時の WAIT,BUSRQ などのコストは 4MHz時と同じ(時間比)ままです  カレンダーは「とりあえず設定,読み取りが可能」なレベルです  キーボードも未着手 ------------------------------------------------------------------------------ [Release 5b20] Ver. 5.b.24 2010.08.15 ------------------------------------------------------------------------------ ※今回のリリースの目的は CRTC/DMA のバグFIXです  サウンドまわりは改修中のコードをとりあえず動くようにしたものです ・CRTC/DMA: ・DMAまわりがおかしくなっていたのを修正した  「Twenty-7」では行がズレてはいけない  Release 2.4 → 2.5 でエンバグ  ※2.4 → 2.5 で修正した部分を外しましたが、当時なぜそうしたのか忘れました   コメント,開発メモにも何も残ってませんでした   副作用があるかもしれませんので、何かあったらレポートをお願いします ・サウンド: ・cfg でサンプルレートを指定できるようにした (暫定)  カウンタのオーバーフローチェックなど、精査していません  48000Hz 以外での「BEEP 0」の濁りは解決できないかもしれません ・モーターリレー音(48kHでサンプリング)は適当対応  → 24000Hz以下では1サンプル間引いて再生する ------------------------------------------------------------------------------ [Release 5b19] Ver. 5.b.23 2010.08.13 ------------------------------------------------------------------------------ ・CRTC: ・88系 + PCG ON + chr$(0)定義 + TEXT OFF のとき描画ミスが出る恐れがあった? ・その他内部フラグ類精査 ・アトリ評価ルール修正 →シークレットも次の行に影響を与える ・テキスト入力等 ・改行が LF のみのファイルに対応した ・タイプできなかった文字コードをコンソールに表示するようにした ・タッチパネル機能で登録できなかった文字ストロークも表示するようにした ・FM音源: ・80SR の初期条件が違っていたようなので修正した  Release 3b11 -> 3b12 でエンバグ  →「チャンピオンプロレス」@80SR でBGMが鳴らない不具合改善   情報提供:モ〜リン様   88SR系,サウンドボードは変更せずに様子を見ることにした --- コンバータ関連 --- ・Bas2Cmt: ・ドキュメント(cas-job.txt)と仕様の矛盾を修正した ・ファイル名が6文字を超える場合はエラーとなっていた → 6文字まで有効 ・Bin2Cmt: ・name=xxx 指定を可能にした  →88モニタのヘッダブロック(ファイル名)に対応できるようになりました ・Cas2Cmt: ・j80 に影響のある変更なし ・Cmt2Cmt: ・j80 に影響のある変更なし ------------------------------------------------------------------------------ [Release 5b18] Ver. 5.b.22 2010.06.06 ------------------------------------------------------------------------------ ・PCG SOUND の実装を修正した 「GALAXY SEARCH」奇数周のクリアミュージックがまともに鳴らない不具合解決 今回の修正で、実機でのサウンド定義の非互換問題も再現されるようになりました ・PCG8100「前期型」をデフォルトに変更した ・cfg -newtype (起動時に「後期型」を選択)を復活した ・[Sound] メニュー中からも [NewType] チェックを変更できるようにした ・拡張メモリまわりのリセット処理に問題があったのを修正した 状態によっては2回リセットしないと再起動しないことがあった ------------------------------------------------------------------------------ [Release 5b17] Ver. 5.b.20 2010.05.30 ------------------------------------------------------------------------------ ・「88系 / n倍速 / 無音(boost時含む)」用のメインループが壊れていたのを修正した  リファクタリングを中断しての公開に付き、エンバグしてるかもしれません ------------------------------------------------------------------------------ [Release 5b16] Ver. 5.b.19 2010.05.16 ------------------------------------------------------------------------------ ・88系機種「Nモード」での 4thROM の扱いを変更し、増設ROMのみ見えるようにした ・CRTC: ・モノクロ時のアトリ評価方法を再修正した (R5b1での修正を元に戻した) 「FORESIGHT:通巻13号の表紙」は「アトリモード:カラー / 出力:白黒」だった ・アトリ評価時に出力用の カラー/白黒 フラグを流用していたのを止めた ・内部処理の仕様変更等で不要になったコードが残っていたようなので整理した  PCG8200,PCG8800 使用時におかしな絵が出たらレポートをお願いします ・Cassette80:  ソースファイルのないブロック(ex.「*IPL」)を開く時に落ちることがあるバグFIX ------------------------------------------------------------------------------ [Release 5b15] Ver. 5.b.18 2010.04.24 ------------------------------------------------------------------------------ ・CPU: DAA : ハーフキャリーフラグをリセットする動作を追加した DAA : 減算時の内部処理を安全にした ・拡張/増設ROM: 88系Nモードでの扱いを変更し、見えるようにした ------------------------------------------------------------------------------ [Release 5b14] Ver. 5.b.16 2010.01.17 ------------------------------------------------------------------------------ ・「倍速」用のメインループの精度を上げた ・ポート0x66(IN)実装(とりあえず88系のみ) 「リグラス(8801)」対応 ・サブシステム: ・適当 wait 廃止 / M1,ROM wait 追加 ・CPUクロックを固定にした cfg -sub=n 廃止 / -powdsk 追加 ------------------------------------------------------------------------------ [Release 5b13] Ver. 5.b.15 2010.01.10 ------------------------------------------------------------------------------ ・サブシステム: ドライブとディスクの実装を分離した ・ディスクに変更が加えられた場合のファイル更新タイミングが変わりました ・ファイル更新時に全てのトラックを再構成するようにしました トラックテーブルを164セクタ分まで拡大します トラックテーブル中の無効なアドレスは 0 に書き変えます 変化の無かったトラックの未使用領域も削除します 変化の無かった未使用トラックも削除します ・テンポラリファイルをまったく使わなくなりました ------------------------------------------------------------------------------ [Release 5b12] Ver. 5.b.14 2010.01.10 ------------------------------------------------------------------------------ ・88,88SR: モノクロモードの表示マスクが違っていたのを修正した ・サブシステム: ・deleteID() の怪しい部分を精査&修正 最終セクタを食っても不足するケースが未処理だった (セクタ数減/トラックサイズ増/2周フォーマットは考慮せず) セクタ数更新前にセクタサイズを更新してしまっていた(Bug) ・ロード時のチェック方針変更 トラックの先頭アドレスがファイルサイズ外の場合は 0 と同じ扱いとすることにした ・トラックテーブルのサイズが変わるフォーマットのバグFIX (フォーマット時にトラックテーブルの更新ミス) ------------------------------------------------------------------------------ [Release 5b11] Ver. 5.b.13 2010.01.03 ------------------------------------------------------------------------------ ・サブシステム: ・D88の「2D」のイメージを 2DD フォーマットした場合、 ヘッダを「2DD」に書き変えるようにした ・メニュー中のイメージ名に [2DD] は表示しないこととした ・連結イメージの1枚目も使えなくなっていたのを修正した ・フォーマット時の冗長な(と思われる)ヘッダ上書き処理を廃止した (コメントや記録を見ても必要である理由がわからなかった) ・サウンド: ・FM音源 AR=0 のときの動作を変更した ------------------------------------------------------------------------------ [Release 5b10] Ver. 5.b.11 2009.12.30 ------------------------------------------------------------------------------ ・サブシステム: フォーマット時にj80が使う内部バッファの容量を増やした ・拡張RAM: 存在しないバンク(カード)を選択したときの挙動を調整した ------------------------------------------------------------------------------ [Release 5b9] Ver. 5.b.10 2009.12.23 ------------------------------------------------------------------------------ ・サブシステム: ・D88イメージの 2DD タイプのヘッダ(トラックテーブル)に対応した ・2HDドライブに仮対応した ※ブランクディスクには「2D」タイプのヘッダが付きます(固定) ・サウンド: ・8bitPCM@PRN を「JAST Sound」専用とすることにした それにあわせて音量を調整した ・拡張RAM: ・88系のみ PC-8801-02N タイプの拡張RAMに対応した ・PIO-8234 の仕様については apaslothy さんに教えていただきました ありがとうございました ・cfg: ※詳細は j80.cfg のコメントを参照してください ・「SYSTEM」(Systemメニューのラベル)を追加した ・「EXTRAM」(拡張RAMの実装用)を追加した ・「OPTION : -enhanced」→「ENHANCE」に変更した ・Z80: ・8bit演算命令時のフラグレジスタを調整した CP n,r 時に フラグレジスタの不定ビットに比較値をコピーするようにした あわせて ADD,ADC,SUB,ABC では演算結果をコピーするようにした INC,DEC も演算結果をコピーするようにした 上記以外は従来どおり *変化しない* ままとします(ホントは何とかしたい) 「88MH デモ」ありがとう ・その他: ・コンソール出力調整した ・メニューの ON/OFF に対応した(Windowモード時のみ) cmd : ToggleMenu 追加 ・フルスクリーンから復帰したときWindowサイズがおかしくなる環境がある? →対策した(不安定になる環境があるかも) ------------------------------------------------------------------------------ [Release 5b8] Ver. 5.b.7 2009.12.12 ------------------------------------------------------------------------------ ・2Dディスクを 2DD と誤判定することがあるバグFIX ※2DDは判定のみです(うまく読めないと思います) ・ディスクのを間違えることがあるバグFIX ------------------------------------------------------------------------------ [Release 5b7] Ver. 5.b.6 2009.12.12 ------------------------------------------------------------------------------ ・cfg,デフォルト値管理に関する設計変更完了 ・一部のサウンドボードの LPF を本実装した (必ずしも実デバイスの回路を再現しているわけではありません) あわせて音量も調整しました(割れない限界まで上げた) ------------------------------------------------------------------------------ [Release 5b6] Ver. 5.b.5 2009.12.07 ------------------------------------------------------------------------------ ・80SR/80桁/320x200(カラー)の部分更新時のバグFIX ・ディスプレイの「信号なし(PC側電源OFF)のときの色」が無視されていたのを修正 ・「サウンドなし」の速度調節を壊していたのを直した (r5b4 でエンバグ) ・cfg,デフォルト値管理に関する内部構造を大幅に変更した あわせていくつか見つけたバグを修正した (cfgの一部が反映されないなど) ・「PRN,BUSのサウンドボードを使わない」起動オプションを廃止した ・サウンドボード@PRNのコントロールを増やした (@BUS がひとつずれました) ・一部のサウンドボードに LPF を仮実装した LPFの時定数は[Sound]メニューで変更できます。 今回の更新はコレを目玉にしたかったのですが (アナログシンセの布石?) 目立つバグがいくつか見つかったので暫定版でリリースします。 ・VoiceBoxのビットの割り付けを変えてみた (仕様をご存知の方教えてください...) ・88SRの速度を遅くしすぎたようなので速くした (暫定/今度は速過ぎ?) ------------------------------------------------------------------------------ [Release 5b5] Ver. 5.b.4 2009.11.29 ------------------------------------------------------------------------------ ・AY-3-8910 「BASIC VOICE(I/O:1984.2)」が鳴らなくなっていたので対策した r3b3→r3b4 でエンバグ (その後 実装は変わったがバグは残っていた) ------------------------------------------------------------------------------ [Release 5b4] Ver. 5.b.3 2009.11.29 ------------------------------------------------------------------------------ ・「ファイルが消されたら再マウントできない」仕様を変更した ToggleREC : WRITEなので新規にファイルを作る TogglePRN : WRITEなので新規にファイルを作る ToggleCAS : READなので消されたらダメ(従来どおり) ToggleD=n : W/R ...検討中につき従来どおり ・SoundSystem ・内部タイマーの精度を再確認した (問題なし) ・サウンド有無でタイマー精度が変わらないようにした ・FM音源まわり再検討 コード整理 「?」まみれのコメント整理 オーバーフロー再チェック (実用上の問題なし -> 調整) カウンタのビット数(合成周波数の差異吸収用含む)再検討 いくつかの計算をテーブル化 フィードバックで変な振動が発生していたので2項平均を取ってごまかした  →うまく発声しなかった音色改善した? ・AY-3-8910 ノイズにトーンが乗っていなかったので修正した  →pause時のプチノイズ対策をしたときにエンバグしたか?   違和感は感じていたのですが...今まで放置してごめんなさいです 演奏時にプチノイズがひどいものがあったので改めて対策した(副作用あるかも) ・GUI Java 14.3-b01(1.6.0_17) で「レイアウト崩れ対策パッチ」が効かなくなっていた  1. 画面右端でメニューが折り返して表示される条件で  2. ファイル名などが短くなってメニューの幅が狭くなったとき  → JPopupMenuの出現位置がおかしくなる 元々根本対策ではなかった(※)のでパッチを外すことにした ※) キーボードコマンド経由でメニュー内容が変わったときは効果が無かった ・その他 88SRの速度を調整した ------------------------------------------------------------------------------ [Release 5b3] Ver. 5.b.2 2009.10.31 ------------------------------------------------------------------------------ ・コンバータのバージョンアップに伴う更新 ・Cas2Cmt ・「*INDEX」(インデックス信号,トラック信号,CUE信号) 追加 *TITLE, *SPACE がない場所での頭出し用にお使いください ・BLANK/SPACE/MARK ロード時にデフォルト値を展開しないように修正した ・Cmt2Cmt ・ヘッダ付きマシン語の cas 出力時に ヘッダサイズが 1byte 減るバグ修正 ・新規対応 SystemSoft LodeRunner(80mkII) Enix アラレのJUMP UP(80mkII) dB-SOFT KingFlappy(80SR/8801) 東海クリエイト YUKARA_JJ(80mkII) BondSoft TIME TUNNEL(80mkII) X'TAL SOFT ファンタジアン(80SR) MicroNet チャンピオンプロレス(80mkII) SPS ぐるっぺ(8801) CarryLab 飛車(80SR) ・変更 マシン語系 精度向上(SUMチェック) 2ブロック→2パート BrainMedia サイズがマイナスになるものを除外する 精度向上 -> バージョンにより SUM が違う Hudson 精度向上(SUMチェック) ・未対応 ファンタジアン(80SR) ユーザーデータ ・Bas2Cmt ・N-BASIC 以外(未知のアドレス)にも対応した ・全般 ・メッセージ類の表現を統一した ・Cmt ・キーマップ,タッチパネルの表示忘れ修正 ・8801割り込み使用時の動作を書き直した 割り込み使用時にステータスチェックをしないローダーがあった ・画面表示周りを調整した ・Keyboard ・タッチパネル機能が壊れていたので修正した Y座標の値が X座標と同じになっていた いつ壊したか不明 ------------------------------------------------------------------------------ [Release 5b2] Ver. 5.b.1 2009.10.24 ------------------------------------------------------------------------------ 今回の CMT IF まわりの大改修で、8801のテープ読み込み時の問題が ほとんど解決されたと思います。 何か問題がありましたら報告をお願いします。 ・Z80 BIT 演算時のフラグ修正  r5a1 -> r5a2 でエンバグ「ドッチボーイ (ツクモ/88)」 ・CMT IF まわりを改修  ・割り込み利用のロード時の自動ブースト廃止   →マニュアルでの「ブーストモード」追加  ・MOTOR OFF 時の 0x00 自動スキップ廃止   →イメージの「区切り」をチェックし、MOTOR OFF 時に「残り」をスキップする  ・「テープスピード」設定追加  ・割り込みタイミング調整用のカウンタ精度を上げた ・Cmt2Cmt を実装しなおした ・Cmt2Cmt で認識可能なフォーマットを増やした (cas-job.txt 参照) ・イメージファイルのコンバータの仕様を全面変更した  ・テンポラリに cmt を吐かなくなった ・T882Cmt:  仕様変更:データブロックの最小サイズ制限廃止  →32kbyte制限で溢れた場合、どんなサイズのブロックができてもおかしくない ------------------------------------------------------------------------------ [Release 5b1] Ver. 5.b.0 2009.09.28 ------------------------------------------------------------------------------ ・PC-8801-10,11 を分割して使用できるようにした ・cfg 変更   旧:-prn,-bus ともに 0 (無指定を含む) の場合「サウンドボードなし」で起動する   新:-prn,-bus ともに指定が無い場合「サウンドボードなし」で起動する   -prn,-bus の ID変更 ・80mkII のメモリ初期化実装ミスを修正した   「0xFF,0x00 で埋める(前半は不明)」が、前半32KBのみを埋めていた   88mkIIも80mkIIと同じと仮定しているのであわせて修正した ・漢字ROM(第二水準)仮対応 & 漢字ROMまわりの実装変更 ・モノクロ時のアトリ間違っていた? (FORESIGHT:通巻13号の表紙)   旧:全て通常指定として処理する   新:カラー指定ビットの立ったデータは無視する ・「PCS-8081,8087」の実装を変更(改善?)した ・「12chシンセサイザーユニット」の実装を変更(改善?)した ・スピーカーとLEDを使って!(Oh!PC 1983.7)「1bit PCM」対応 ・オルガンを奏でよう!(Oh!PC 1983.11) 「24keyオルガン(TMS3617 x2)」対応検討中 ------------------------------------------------------------------------------ [Release 5a3] Ver. 5.a.3 2009.01.31 ------------------------------------------------------------------------------ ・D88イメージのフォーマットについて ・これまではディスク一括フォーマットにのみ対応していましたが、  トラック単位でのフォーマットに(やっと)対応しました ・ただし、トラックが小さい順に連結されていない場合は壊れます  ランダムに連結されているイメージに対応したコードも用意したのですが、   ・イメージファイルを直接操作しているため非常に遅い   ・そもそもそんなイメージはない?  と云うことで、今回は採用を見送りました (マウント時に警告が出ます)  フォーマット時にファイル末尾に追記のみで済ましているとか...ないですよね? ・QUASI88(0.6.3) でフォーマットしたイメージには、   1. トラックに「未使用領域 (勝手に命名)」がある   2. 定義してあるがセクタがない(全て「未使用領域」)トラックがある  といった特徴があるようです (P88SRの動作は未確認)  また、   3. ID潰しをしたトラックの「セクタ数」が更新されていない   4. ID潰しをしたセクタが指定サイズより太る (消されたセクタのヘッダ分?)  といった問題もあるようです  「未使用領域」は「ぶるー牧場」のドキュメントに無く仕様が解らなかったので、  独自に基準を設けました (「3」が無ければ簡単なのですが...)   ->セクタ数,データ長のフィールドに相当する部分がともに 0 なら「未使用領域」  また「2」は、M88(2.21a) で他のセクタをフォーマット(書き込みでも?)した際に、  データ長 0 の「IDだけのセクタ」として実体化してしまいます ・上記特性を踏まえて対応したつもりですが、既存イメージへの上書きフォーマットは  避けたほうが良いと思います。。。 ・DiskSystem ・シーク動作を大幅に見直した ・シークエラー時の ST3 の値を修正した ・マルチセクタの動作を見直した ・エラー時の動作を変更した ・READ DIAG 超イイカゲン実装から適当実装にバージョンアップした ・IdlePhase に落ちていたら、TC で toResultPhase() を呼ばないように変更した ・DELETED フラグに対応した (READ時 SKIP は仮対応) ・SubCPU に「適当 M1 WAIT」を入れてデッドロック対策した(仮) ・D88 :「ステータス」を ST1 に反映した ・D88 :「ディスクの名前」に対応した (多バイト文字は想定していません) ・WRITE ID の動作を改善した 2周フォーマットには対応していませんが、必要なら実装しようと思います ・WRITE DATA による ID 潰し(ミックスセクタ)に対応した WRITE ID 時にあらかじめ「ID 潰しを予測したフォーマット」を行なうパッチだけでも 大丈夫そうだったのですが、勢いにまかせて作ってみました ・複数ディスクを結合したイメージは一枚目のみ ReadOnly で開くようにした ・トラックが小さい順に連結されていないイメージは ReadOnly で開くようにした ・新規ファイル, サイズ0のイメージを開いたとき「ヘッダー部」を書き込むようにした ・コンソール出力を整理した ・Z80クラス ・DAA 修正 (キャリー/ハーフキャリーフラグを考慮) ・Crtcクラス ・R5a2で「アトリ無効」フラグを壊してしまったのを復旧した ------------------------------------------------------------------------------ [Release 5a2] Ver. 5.a.1 2009.01.12 ------------------------------------------------------------------------------ ・アナログパレットの選択条件が違っていたようなので変更した ・V2モードでデジタルパレットを設定したときの動作を変更した ・リセット時にアナログパレットを初期化するようにした ・「行ずらし」解除条件を追加した ・0,20組以外のアトリビュートサイズに対応した ・Z80クラス (チェックついでに...) ・CCF : Hフラグ不定変化対応 ・BIT : Zフラグ不定変化対応 (サインフラグもちょっと違っていたようなので修正) ・他の不定変化,フラグレジスタの不定ビットや RETI のイメージなど未対応 ・FDCのレジスタまわりを調整した ・2byte転送(PC->Disk)用のポートを繋いだ ・DiskIF (チェックついでに...) 8255(ポートCのビットセット/リセット部分)を書き換えた(動作に違いはないハズ) ・テープイメージがセットされていない場合は、ブーストしないようにした ・ポート0x31のイメージを設定できるようにした cfg のパラメータに変更があります。すいません。もうしません。たぶん ・GUI調整 画面の端などの影響でメニューの表示位置が調整された後、 レイアウトがおかしくなることがあったのでパッチを当てた ※不審な挙動が見られたらレポートお願いします  必須なパッチではないので削除します ・その他 MEMO ・SSGの発声がおかしいことがある?(確認中) ・次回更新では SEEK の動作を何とかしたい ------------------------------------------------------------------------------ [Release 5a1] Ver. 5.a.0 2009.01.03 ------------------------------------------------------------------------------ ・PC-8800シリーズ(4MHz機)に対応してみました 狙いは、80系の機能+FM音源の動作確認用ソフトの確保です ・80系と違い、機種の区分が雑です モノクロ出力まわりなど、実機にない機能が使えてしまったりします ・モノクロ出力(特にテキスト)は実機と表示が異なるかもしれません ・「高解像度ディスプレイ」は仮対応です ・400ラインモードは仮対応です ・ライトペンに関する動作も未確認です ・プロテクトに弱いので、変わった画像を見ることができます ・ディスクまわりが弱いので、動かないソフトが多いようです ・R4:88/mkII, R5:88SR でしたが、R4 は公開タイミングを逃してしまいました ・88対応に伴い、各設定ファイルに変更があります ・cfg ・System ROM ほぼ前面変更です。j80.cfg のコメントを参考に書き直してください ・DipSW 全面変更です。 ・デフォルトのファイル(ディレクトリ)の設定 -512 (アナログディスプレイ) を追加しました ・その他の設定:-voln の割り当てが変わりました -vol1 PCG, OPN(FM) -> PCG -vol2 -----,OPN(SSG) -> OPN(FM) -vol3 サウンド@PRN -> OPN(SSG) -vol4 option#1 -> サウンド@PRN -vol5~ option#2~4 -> option#1~4 ・その他の設定:-bus のID(番号)が変わりました ※-bus,-prn は、将来キーワードによる指定に変更する可能性があります ・j80.cmd ・HotStart 廃止 ・MODE=11,12 追加 (各ビットの割り当てにも変更があります) ・+Display +Display=1 に変更 ・+Display=2 追加 ・CRTtype=0,1 追加 (88SR アナログ -> デジタル 切り替え) ・VolumeN=m デバイスの割り当てに変更があります ・BoostMode 追加 (MOTOR ON + RxRDY割り込み有効時に速度リミッターを外す) ・display ・アナログディスプレイ用マップを追加しました 同じフォーマットですがパラメータの意味が違うので、拡張子で区別します .rgb : デジタルディスプレイ用 .512 : アナログディスプレイ用 ・その他の変更点 ・Tape(save),Disk選択時に、フィルターに設定した拡張子以外のファイルを選んだ場合、  「指定したファイル名+デフォルトの拡張子」のファイルが(作成→)選択されてしまう  ファイルが存在しなかった時のみ拡張子を補完するように変更した ・[CAPS]コマンドがコメントアウトされていたので復活させた ・割り込みの制御方法等を調整 ・ホットスタートは NMI ではなかった模様 -> 特別な処理を止めた ・BIT 命令のサインフラグに対応 (MJさん。。。) ・ディスクのレジスタまわりを微調整 ・ディスクアクセスの擬似WAITを増やした (Wiz@88) ・N80SRモード以外で out&h71,0 した場合は、ROMを切り替えないようにした ・ALU/GVRAM/MainRAM 選択ロジックを調整した (88仕様) ・80SRのアトリモード描画色はパレットが反映されるようにした (88仕様?) ・簡素化した手順でも漢字データの読み出しができるようにした (88FR仕様?) ・カラーPCG拡張パレットの実装が冗長だったので書き直した ・イメージ合成 400ライン対応 ・pause 中の画面更新について pause 中に下記状態を変更しても、画面は更新されません ・PCG on/off ・Display 変更 ・Display種類 変更 ・表示設定(B/W出力)変更 DMAのカウンタなどが変化してしまうことによる副作用が心配なため、当面仕様とします ------------------------------------------------------------------------------ [Release 3.2] Ver. 3.1.1 2008.11.30 ------------------------------------------------------------------------------ ・カラーPCG+パレットの動作変更 CRTCの信号線のドキュメントを見つけたので、本体の回路図とあわせて検討してみました よくわからないのですが、改造をすることで「消滅」時の表示が変わってしまうようです 暫定的に下記仕様に変更してみました  +-----------------------------------+-------+-------+-------+-------+  | VSP | L | L | H | H |  | RVV | L | H | L | H |  +-----------------------------------+-------+-------+-------+-------+  | カラーPCG OFF | A1 | A1 | C | C |  +---------------+-------------------+-------+-------+-------+-------+  | カラーPCG ON |前半chr or 白ドット| A2 | A2 | C | C |  | +-------------------+-------+-------+-------+-------+  | | 上記以外 | B | ? | C | C |  +---------------+-------------------+-------+-------+-------+-------+  ※「反転+カラーPCG有効ドット」の表示方法がわからなかったので、仮に C としてある  信号A1:BA,RA,GA   パレットは無視される  信号A2:BA,RA,GA   パレットを適用する  信号B:DOT(B),RAM(R),RAM(G)   パレットを適用する   アンダーライン,オーバーラインは描画されない   (DOT信号は、アンダーライン,オーバーライン,反転の修飾をする前の信号)  信号C:Low   パレットに影響されない   アンダーライン,オーバーライン,反転は無視される ------------------------------------------------------------------------------ [Release 3.1] Ver. 3.1.0 2008.11.22 ------------------------------------------------------------------------------ ・PCG8200 の ON/OFFコマンドの動作がわかりにくいので変更した ソフトウェアSWの強制切り替え -> 8100のパネルスイッチ相当(PCG表示のマスターSW) PCG8200 の 初期状態を「PCG有効」に変更したので、これで殺してください 旧仕様:cfgファイルで初期状態を指定 ・PCG8200対応時のパッチが不十分だったので修正した 目立たないバグがいくつかありました ・フルドットカラー化を踏まえ内部キャラクタコードを変更した ・初期化まわりを整理 ・「PCG8100のフルドットカラー化+パレット」に暫定対応 ・アンダーライン,オーバーラインが勝つ ・シークレットのときも表示される ・Copy モードのときも、RGBバンク指定に従う ・パレットはモノクロモードでも有効 ・拡張したRAMの初期パターンはランダム(固有) ------------------------------------------------------------------------------ [Release 3.0] Ver. 3.0.0 2008.11.08 ------------------------------------------------------------------------------ ・設計変更(1) ・メインメモリ, 画面まわりのクラス設計を変更した ・設計変更(2) ・DMAのコスト負担のさせ方を変更した (少し重くなったと思います) ・PC-8001mkII の動作速度を変更した ・PC-8001mkIISR の動作速度を変更した ------------------------------------------------------------------------------ [Release 3b12] Ver. 3.b.21 2008.09.15 ------------------------------------------------------------------------------ ・サウンド: ・FM音源の割り込みマスクを復活させた 問題が出たので無視&パッチでしのいでいましたが、なんとかなったかな? ・PC-8801-11 の割り込みマスク指定のビット位置が違っていたようなので修正した ・AY-3-8910 のエンベロープの繰り返し処理の位相精度が悪かったので修正した ・AY-3-8910 の音量テーブルを微調整した ・SN76489 の音量テーブルの計算をミスっていた(intで切り捨てハズカシー)ので修正した ・SN76489 の音量テーブルを微調整した ・GSX8800(2枚目)のポートがおかしくなっていたので修正した ・PCS-8081(テクノシンセ)#3,#4の音量調整ができなくなっていたのを修正した その他にも混乱があったようなので精査した ・PCS-8081,PCS-8007 の I/O まわりの実装を少し安全にした ・雑誌掲載のサウンドボード3種を追加した ・PSGによる音楽自動演奏 (AY-3-8912x1 : I/O 1981.12) ・12chシンセサイザーユニット (AY-3-8910x4 : Oh!PC 1982. 8) ・PC-8001ミュージックアダプタ (SN76489x1 : ASCII 1982.12) ※PRN ・プリンタポートを使ったPCM出力に対応した (積分回路(LPF)は未実装) ・メロディールーチン (PD0のみ使用 : ASCII 1981. 3) ・スピーチ・シンセサイザ (PD7のみ使用 : I/O 1982. 2) ※LPFあり ・8bit出力 (PD0-PD7 : 使用実績不明 ) 暫定実装 ・バスに接続するボードとプリンタポートに接続するボードを分離した(共存可能) ・j80の再起動なしでサウンドボードを切り替えられるようにした ・キーボード: ・「ダイオード省略」完全対応 複数ポートをまたいで間接的にショートする場合に対応できていなかった ・ポート11まで対応 (80SR外部キーボード用) ・Z80 ・割り込みで問題が発生したので、RETI を周辺機器に通知するロジックを復活させた 多重割り込みがらみの挙動に違いが出る可能性があります # 過去、多重割り込みのデバッグ中に RETI で戻っていないコードを見つけて # RETIに依存しないロジックで対処できたので廃止した記憶あり # 「RETI で戻っていないコード」が何だったか忘れたので再現試験ができない。。。 ・システム: ・RESET(Clear RAM) で、拡張RAMをクリアしていなかったので対応した クリアパターンは未調査のため、全て 0x00 で埋めています ・UI調整: ・AutoBlaster : 速度を指定したら自動でONにする ・ローマ字カナ入力の ON/OFF をメニューにも追加した ・カナ,CAPSロックキーの ON/OFF をメニューにも追加した ・プリンタポートを使用するサウンド拡張,サウンドの切り替え対応にあわせてUI調整 ・設定ファイル: ・cfg の -psg が実態と合わなくなった&UIの設計変更に伴い -bus,-prn に変更した ・オプションサウンド(-bus,-prn)の値を単純な数値に変更した ・cmd ファイルで -XXX=0 指定が受け付けられなかったのを修正した ・cmd ファイルのコメントが古かったので修正した ・記述漏れフォロー: ・Ver. 3.b.10 で PC-8001「高速化改造」の挙動修正 「ROM WAIT なし」→「ROM+M1 WAIT」なし 「WAITを無視する」回路になっているが j80側ではメモリ以外のWAITを 実装していないので「Memory WAIT」の表現は残した → 今回表現を修正 ------------------------------------------------------------------------------ [Release 3b11] Ver. 3.b.18 2008.08.24 ------------------------------------------------------------------------------ ・FM音源: ・エンベロープジェネレータの出力とpiのビット数のすり合わせをした それらしい音が鳴った時点の実装のまま忘れていた。。。 以前のバージョンでは高減衰時に減衰速度をかさ上げしてしまう傾向があった ・エンベロープに関するレジスタの評価を変更した OPL3の記事から推測した部分にすり合わせ漏れがあった模様 結果的に減衰時間が1.4~2倍になると思われる (このバージョンでは2倍としてみた) ・リリース中に KeyON したときの挙動を修正した →ゼビウスのBGM改善 ・上記にあわせてアタックカーブを(またまた)変えてみた ・初期化漏れ修正 TLを最大減衰に初期化しないといけないようだ ------------------------------------------------------------------------------ [Release 3b10] Ver. 3.b.17 2008.08.17 ------------------------------------------------------------------------------ ・FM音源: ・フェーズジェネレータの動作を修正した (off時に停止しない) ・レジスタの変更を反映させるタイミングを修正した ・アタックカーブを(また)変えてみた ・その他 ・マウント系のUIと動作を変更した ※上記に関連する cmd, cfg ファイルに変更があります。ご注意ください cmd : RemovePNL -> TogglePNL EjectP -> ToggleCAS EjectR -> ToggleREC Remove=n -> ToggleD=n Remove -> TogglePRN cfg : MountMenuFG 追加 MountMenuBG 追加 ------------------------------------------------------------------------------ [Release 3b9] Ver. 3.b.16 2008.08.12 ------------------------------------------------------------------------------ ・ディスク: ※いろいろ手を入れました。エンバグしているかもしれませんのでご注意ください ・READ ID 実装 ・DiskIF(双方) の 8255 の動作モードが 0x91 限定だったのを修正 (暫定パッチ) ・イメージの検索パスの管理方法を変更した 空きドライブの検索パスを、ドライブを問わず最後にセットしたディスクの場所とする ※cfgでドライブ毎に違うディレクトリを指定していても、 最初のディスクセット時に他の空きドライブの検索パスも移動してしまうことになります ご注意ください ・サウンド: ・オーバーフロー対策をした ・FM音源: ・効果音モードまわりをいろいろ間違えていたので修正した ・アルゴリズム変更(指定)時に位相情報をクリアするようにした ------------------------------------------------------------------------------ [Release 3b8] Ver. 3.b.12 2008.07.18 ------------------------------------------------------------------------------ ・CPU,Memory: ・擬似的にマシンサイクルの管理を可能にした ・CPUの消費ステート数訂正 CP A 7 -> 4 INC (HL) 7 -> 11 DEC (HL) 7 -> 11 ・Disk側のCPUに多少のwaitを追加した (ROM,M1アクセス等を擬似的に再現) ・DMAのタイミング等を微調整した (80mkIIの実行速度がおかしくなっているかも) ・80SR: ・GVRAM 選択時のwaitを追加した (テストコード提供:apaslothy様) (まだ実行速度は正確ではない) ・DipSW-5 の実装を変更し、 「N80モードでの GVRAMwait の値の切り替え」 動作を追加した ・FM音源: ・ReleaseRate の計算に間違いがあったのを修正した ・アタックカーブを変えてみた ・その他 ・サウンド周りの設計を大幅に変更した ・1行の「文字数」が 256byte を超えることがあるので、打ち込み用バッファを増やした ・「{」と「}」がテキスト入力できなかったので内部マップに追加 ------------------------------------------------------------------------------ [Release 3b7] Ver. 3.b.8 2008.04.26 ------------------------------------------------------------------------------ ・PCS-8087, PCS-8007 の初期化(音量)がおかしかったので修正した ------------------------------------------------------------------------------ [Release 3b6] Ver. 3.b.7 2008.04.26 ------------------------------------------------------------------------------ ・PCS-8087, PCS-8007 のテンポ (タイマー) を調整した ------------------------------------------------------------------------------ [Release 3b5] Ver. 3.b.6 2008.04.19 ------------------------------------------------------------------------------ ・音源まわりコード全般の精査・調整 ・ボリューム設定周りが壊れていたので修正した ・PC-8801-10, PC-8801-11 に対応 (MIDI系は未実装) ・80SRでもサウンドボードを追加できるようにした ------------------------------------------------------------------------------ [Release 3b4] Ver. 3.b.5 2008.04.13 ------------------------------------------------------------------------------ ・音源まわりコード全般の精査・調整 ・矩形波の生成方法を変更した ・YM2203: タイマー設定値をプリセット値に反映させるタイミングが違っていたようなので修正 エンベロープのカウンタの実装を変更した ------------------------------------------------------------------------------ [Release 3b3] Ver. 3.b.3 2008.04.08 ------------------------------------------------------------------------------ ・音源まわりコード全般の精査・調整  サンプルレートのすり合わせ「精度」の設定に甘い部分や問題があった ・MOTOR音のデータを差し替えた(暫定) ※各デバイスの音量バランスは、将来見直す予定です ------------------------------------------------------------------------------ [Release 3b2] Ver. 3.b.2 2008.04.06 ------------------------------------------------------------------------------ ・音源まわりコード全般の精査・調整 ・YM2203: アタック調整 SSG Type エンベロープ実装 ...カーブは確認しましたが、音は確認していません ・toDo FM音源精度向上 80SR(N80モード)でのGVRAMアクセスコスト調査・実装 ->demo がおかしい (サウンドとアニメの終了タイミングのズレ) VRAMアクセスにwait必要? ------------------------------------------------------------------------------ [Release 3b1] Ver. 3.b.1 2008.04.03 ------------------------------------------------------------------------------ ・FM音源に目立つ未実装や精度不足がありますが、今回からbetaとします ・音源まわり: 設計変更 PCGサウンドと他の音源ボードを共存可能にした (80/mkII のみ) AY-3-8910 のエンベロープを正確(?)にした SN76489 の減衰量を正確(?)にした FM音源まわりは更新していません ・toDo FM音源SSGタイプエンベロープ実装 FM音源精度向上 80SR(N80モード)でのGVRAMアクセスコスト調査・実装 ->demo がおかしい (サウンドとアニメの終了タイミングのズレ) VRAMアクセスにwait必要? ------------------------------------------------------------------------------ [Release 3a3] Ver. 3.a.21 2008.04.01 ------------------------------------------------------------------------------ ・バグFIX: vol[4] の初期化ミス修正 ・FM音源: なんとか音が鳴る程度の実装です FM音源の割り込みマスク廃止 (80SR demo3 の速度が遅かったので) 課題: ・エンベロープ?(特に Attack) ・デチューン? ・SSGタイプエンベロープ未実装 ・変調度 8pi でOK? ・実数のテーブルおよび演算を排除したい ・精度要調整 ・その他 SoundSystem その他を 16bit化した ヴォリュームのデフォルト値を変更 (5->3) ※起動前にお使いの cfg を確認してください (大音量注意) ・toDo サウンド回りの設計を変更する予定(あわせて構成も変更する予定) 80SR(N80モード)でのGVRAMアクセスコスト調査・実装 ->demo がおかしい (サウンドとアニメの終了タイミングのズレ) VRAMアクセスにwait必要? ------------------------------------------------------------------------------ [Release 3a2] Ver. 3.a.20 2007.05.02 ------------------------------------------------------------------------------ ・バグFIX: VSYNC割り込みを取りこぼすことがあったのでパッチを当てた (ゼビウスの速度が正常になりましたが、副作用があるかもしれません) KingFlappy(v2) のタイトルBGMの速度を参考にOPNタイマーのパラメータ修正 ・OPN: コードを整理して、デバイスとチップの実装を分離した レジスタまわりを仮実装 確認用にFMパートをPSGで鳴らしていますがいずれ削除します ・ディスク 将棋(ASCII/80mkII)が起動しなかったので、読み込み終了条件を追加した ・その他 J2SE 1.5.0_11-b03 からスクリーンショットが取れなくなっていた DeflaterOutputStream のバッファサイズを指定して解決 ・toDo 80SR(N80モード)でのGVRAMアクセスコスト調査・実装 ------------------------------------------------------------------------------ [Release 3a1] Ver. 3.a.19 2006.12.31 ------------------------------------------------------------------------------ ・今回から SR 対応バイナリを配布 ただし当面はR2系のメンテナンスリリースの予定 ・バグFIX: Z80 の動作、r2b2→r2b3 のタイミングでエンバグしていたのを修正 ・メインループの種類を整理した ・Crtc: 一行おきモードを適当実装 (ザナドゥのエラー画面で使っていた) ・DiskDrive: READ DIAGNOSTIC 簡易実装 その他、いい加減実装を多少修正 ------------------------------------------------------------------------------ [Release 2.7] Ver. 2.3.2 2006.01.23 ------------------------------------------------------------------------------ ・添付のドキュメントはR3対応を前提に書かれていますが、80SRに関する部分は 無視してください ・コンパイラを 1.4.2_10 に変更 ・バグFIX ・KanjiROM: ・アドレス指定部分のバグを修正 ------------------------------------------------------------------------------ [Release 2.6] Ver. 2.3.1 2006.01.10 ------------------------------------------------------------------------------ ※古いソースを元に作業していました (2006.01.22) ・添付のドキュメントはR3対応を前提に書かれていますが、80SRに関する部分は 無視してください ・コンパイラを 1.4.2_10 に変更 ・バグFIX ・KanjiROM: ・アドレス指定部分のバグを修正 ------------------------------------------------------------------------------ [Release 2.5] Ver. 2.3.0 2005.06.18 ------------------------------------------------------------------------------ ・今回のリリースは、バグFIXとRelease3(80SR対応作業)のフィードバックです 添付のドキュメントはR3を前提に書かれていますので、80SRに関する部分は 無視してください ・j80.cfg, j80.cmd に変更があります ・バグFIX ・MainMemory: ・80mkIIのメモリパターン初期化ミス修正 ・Crtc: ・GVRAMの「要更新範囲」がずれて、更新ミスが起こる可能性があったのを修正 ・アトリ禁止モードの時のPCGのバンク計算が違っていたのを修正した ・T882Cmt: ・仕様設定ミス (4byte未満のブロックをゴミとみなす) The Demon Cristal (電波新聞社:80SR専用) -> 3byte の有効ブロックあり 新仕様:3byte未満のブロックをゴミとみなす ・コード整理 ・IntController: ・80SRでうまく動くように書きなおした (副作用の確認不充分) ・Crtc: ・初期化部分を整理 ・フラグ類の整理 ・「行ずらし」の実装を変えてみた (今回の方が自然?) ・PSG音源追加 ・GSX8800 2枚挿し AY-3-8910 x4 = 12音 ・PCS-8081(テクノシンセ) 4枚挿し AY-3-8910 x4 = 12音 ・PCS-8007(ルンルンシンセ) 2枚挿し AY-3-8910 x4 = 12音 ・アドコムサウンドユニット 6音拡張 SN76489 x2 = 6音 + ノイズx2 ・その他 ・サウンドまわりを R3 と同様の設計に変更した ・音量バランス調整 ・リレー音サンプリングし直し ------------------------------------------------------------------------------ [Release 2.4] Ver. 2.2.4 2005.04.10 ------------------------------------------------------------------------------ ・バグFIX ・「Display変更」で、80mkII の「選択色」がおかしくなる件FIXしました ・Crtc ・コード整理・調整 ・ブリンク周期が 24Frame 固定だったのを可変にしました BugFIXのみにするつもりだったのですが、「VideokunPC」のタイトル画面の ブリンク速度が気になったもので... ------------------------------------------------------------------------------ [Release 2.3] Ver. 2.2.3 2005.04.04 ------------------------------------------------------------------------------ ・バグFIX ・IntController / 演算強度のミス -> STRANGE WORLD(プログラムポシェット) の不具合が改善されます ・Crtc / mkII 関係の更新フラグが(シフトし過ぎて)外れていた (r2でエンバグ) -> mkIIでの画面更新ミスが改善されます apaslothy様、動作報告ありがとうございました。 ------------------------------------------------------------------------------ [Release 2.2] Ver. 2.2.2 2005.04.03 ------------------------------------------------------------------------------ ・バグFIX ・拡張メモリの書きこみミス修正時のエンバグを修正 80mkIIのユーザーマニュアルに、 「実装されていないカードを指定した場合、本体内のバンクが選択されます」 とあったが、0xE3ポートで指定する PC-8801-02N の場合に限った注意のようだ 勘違いしてエンバグしてしまった。。。 ・ついでに ポート0xE2 の in側 を実装した ------------------------------------------------------------------------------ [Release 2.1] Ver. 2.2.1 2005.04.03 ------------------------------------------------------------------------------ ・バグFIX ・拡張メモリの書きこみミス修正 (高をくくって)常に書きこみ可にしていたのですが、ダメだったようです。 ノックアウトモンスター(TIP)で、キャラクタのタイル絵を壊してしまう問題が 出ましたので、書きこみ側もチェックするようにしました。 なお、j80で対応している拡張メモリは PC-8012-02 の bank0 のみです。 ------------------------------------------------------------------------------ [Release 2.0] Ver. 2.2.0 2005.03.27 ------------------------------------------------------------------------------ ・バグFIX ・PCG更新フラグのクリアミス修正 (r2b4でエンバグ) ・Cmtロード中のスキップ処理のエラーを修正 (r2b8でエンバグ) ・全般 ・旧lightモードの精度を上げ「標準」とした 旧標準モードは、サウンドありの場合のみ選択できる「高精度モード」とした ・メニューキャンセル,コマンド実行後、勝手に resume しないようにした ・DMA off(& 80mkIIグラフィック非表示) の場合は、 「合成」コマンドを無視する 「スクリーンショット」コマンドを無視する 旧動作:バッファの内容を使って処理する ・RESET時に全RAMを初期化するスイッチを追加 ・cfg 追加変更 (詳細は j80.cfg 参照) FLIP, SOUND, BEEP, OPTION, LookAndFeel※ LookAndFeel ※MacのデフォルトL&Fだと「保存」ダイアログでFileFilterが効かないBug(?)対策 ・色数 0 指定でデスクトップの色数を使うようにした ・コード全般を簡素化 ・コンバータ全般、エラーハンドリング調整 ・スクショ関係のコードを書き換えた (メモリ節約&高速化) ・Z80: ・割り込みまわりを調整 ・Rレジスタの更新タイミングを調整 ・Crtc: ・全画面更新の必要性チェックの方法を一新した ・power-off中に全画面したとき、背景色がおかしくならないよう対策 ・DiskMemory: ・RAM未実装エリア(0x8000〜)への書き込みをできない様にした ダンプ範囲を0x7FFFまでに減らした ・Sound: ・J2SE1.5系でのBEEPの再現性改善のため「サイン波合成モード」追加 ・制御方法を調整 ・mkIIのリレー音を追加 ・パッチ系 ・J2SE1.4.0(Win32)で全画面中にダイアログがおかしくなることがある件対策 ------------------------------------------------------------------------------ [Release 2b10] Ver. 2.1.8 2004.07.02 ------------------------------------------------------------------------------ ・全般 ・WindowEventのハンドリングを簡素化 ・Crtc(JPanel)#paintComponent():public → protected に変更 ・power-off起動復活 R2b9@Win32+J2SE1.3.0 で起動時にメニューの描画をミスる現象が発生したため ------------------------------------------------------------------------------ [Release 2b9] Ver. 2.1.7 2004.07.01 ------------------------------------------------------------------------------ ・全般 ・DiskROMを指定しないと、NullPointerException で落ちる件修正 ・強引な描画を止めた (負荷上昇は許容範囲と判断した) ------------------------------------------------------------------------------ [Release 2b8] Ver. 2.1.6 2004.06.27 ------------------------------------------------------------------------------ ・全般 ・naoさんにLinux上での挙動チェックをしていただきました ありがとうございました ・全般的なコードの整理中です / 今回のリリースは暫定版です トラブルの有無を報告していただけると助かります ・コマンド類を大幅に整理・変更 (j80.cmd 参照) ・起動時に power-off にする処理を暫定的に廃止 ・GUIまわりのクラス設計を変更 ・(ソースの)使い勝手を考えてクラス設計を調整 ・メニュー選択中のキーボードコマンドを無視するようにした ・cfg SOUND:第2パラメータを省略した場合、第1パラメータの半分とする ・cfg ROM系:ファイル名無指定時の動作を変更 (その行を無視する→デフォルトに戻す) ・[Alt]単独押しでマウスカーソルが変わる件 j80.cmd にコメント追加 ・IME使用不可の設定にしたが、J2SE1.3.x(Win)では無効にできないようだ (ファイルダイアログなどでの日本語入力は問題いハズ) ・フルスクリーン化まわりを(多少)改善 デスクトップの色数から変更できるようになった (J2SE1.4.0ではダメっぽい) ・J2SE1.5.0_beta2 を試したところ、なんか音がおかしい -_-: ・初代8001モード: ・高速化改造(ROM read時 WAIT なし)に対応 ・80mkIIモード: ・ディップスイッチをメニューから変更可能にした ・デフォルトを「ROMread時 WAIT なし」に変更 ・リセットで現在時刻を取得し直さないようにした ・80/mkII共通 (Keyboard): ・通常のリセット時には、I/Oポートの状態をクリアしないようにした (バッファ入力中はクリアする) ・イベントまわりを改修 キーイベント消費まわりの動作がJavaのバージョン間で違うようなので、 思いきって独自実装に書き替えた 従来のパッチ([Alt]のみ例外的に扱う)は削除した ・80/mkII共通 (DiskSystem): ・(いつのまにか)新規ディスクを作れなくなっていたのを修正 ・Power off→on のとき、RAMをクリアするようにした (不具合対策ではない / メニュー表記との整合の問題) ・ディスク挿入>勝手にPower-onしていたのを止めた (別の機構を実装) ------------------------------------------------------------------------------ [Release 2b7] Ver. 2.1.3 2004.05.08 ------------------------------------------------------------------------------ ・Cmt: ・Cmt2Cmt更新(ファイルリストをうまく整形(表示)できない場合があったのを修正) ・タイムトンネル(BOND SOFT/80mkII)のローダーに対応した ・先頭データ(識別子)が 0x00 のブロックが混じったファイル対策 (暫定) [解説] ローダーによっては、「末尾の数バイトを読まない」仕様になっています。 実機ではテープの走行により捨てられるデータです。 しかし、j80の CMT/IFは簡易実装のため、次のブロック先頭として読まれてしまいます。 幸いなことにほとんどの場合、このデータは 0x00 だったため、 「MOTOR OFF 時に 0x00 をスキップする」 パッチを当てることで回避してきました。 しかし、80mkII用のソフトで識別子に 0x00 を使ったものがあり、 上記パッチが副作用を起こすことがわかりました。 今回の対策は、副作用回避のための暫定的な再パッチです。 80mkIISR用では、捨てられるデータが 0x00 でないケースも確認しており、 恒久対策として、 「MOTOR OFF で、次のブロック先頭までスキップする」 といった実装をすべきですが、CMT形式を基準にしているのですぐには対応できません。 ------------------------------------------------------------------------------ [Release 2b6] Ver. 2.1.2 2004.05.04 ------------------------------------------------------------------------------ ・全般: ・メモリイメージのダンプ ・ファイル名変更:dump.mem -> main.mem ・追加:vram.mem, disk.mem ・MainMemory: ・メモリ選択(ポート0xE2)の不具合修正 (N80漢字BASIC が動くようになりました) 動作確認等で areareaさんにお手伝いいただきました / ありがとうございました ・Crtc: ・ライトペン無効で、マウスカーソルを消せるようにした (LightPen コマンド追加) ・タッチパネルが有効な場合、ライトペンは 無効 扱いとすることにした ・状態にあわせてマウスカーソルを変えるようにした ・PCG8200 の on/off 制御を(実機通り)ソフトswのみの実装にした ただし、cfg,メニューなどからの on/off 機能は残した ・Cmt: ・初回に -TMP ディレクトリのファイルを指定したときのエラーを回避した ・解析エラー時の「イメージ内容表示」の改善 エラーメッセージのみ -> 解析できたところまで表示する ・pauseModeでの動作がしっくりこなかったので修正 pause解除しても、FF,REWで再びpauseしてしまう -> FF,REW 直前の状態をキープする その他、微調整あり ・常にpause可能にした (t|PLAY コマンド削除 / PLAY コマンド追加) ・Calender: ・経過時間の計測方法変更 / システム時計参照 -> 実行ステート数カウント 母艦の時計とは同期しなくなりました ・1Hzクロックの挙動を正確(?)にした ・カレンダーセットで 1Hzクロックリセット ・「秒」の最下位ビットを反映させる ・コード整理 ------------------------------------------------------------------------------ [Release 2b5] Ver. 2.1.1 2004.04.17 ------------------------------------------------------------------------------ ・全般: ・「PCGoff時に out2,0する」コマンド廃止、「out2,0」コマンド追加 ・VRTC割り込み実装 (「サラダの国のトマト姫」などが動くようになりました) ・割り込みコントローラー(モドキ)を別クラスに分離 ・DiskSysの割り込み処理を簡略化した HALTするのを待って割り込む -> 常にHALTをただのNOP扱いにする ・1Hzクロック実装 ・無音時の速度チェックを、1/600secループの外に出した ・メニューを整理した ・DiskIF: ・8255ポートCまわりを修正 ・Crtc: ・アトリ無効のとき、DMAコストを下げるようにした ちなみに、アトリのサイズ変更は未対応です コードは準備してありますが、使ってるソフトが見つかるまで対応しません ------------------------------------------------------------------------------ [Release 2b4] Ver. 2.1.0 2004.04.10 ------------------------------------------------------------------------------ ・全般 ・コンパイラを 1.4.0_03 から 1.4.0_04 に変更 ・速度調整のあたらしいアイデア採用 (サウンドAPIが原因で一定時間で落ちる件に有利) ・ファイル読込み時のエラー処理を強化 ・ファイルダイアログを調整 (改善) ・cfg拡張・変更 (j80.cfg のコメントを参照願います) コマンドラインのオプションを廃止 ・cas(job) 拡張・変更 ・予告より早いですが、IPL の「|」,「^」を廃止しました ・*PEN → *PNL (推奨タッチパネル) ・*KEY 追加 (推奨キーマップ) ・指定(実行パスからの相対パス指定) 追加 ・BAS/name= に「文字コード指定」を可能にした ・キーボードコマンド開放 (j80.cmd のコメントを参照願います) ・J2SE1.4.2 で、メニューの決定に[Enter]が使えなくなっていたので対策 ・PC-8001mkII 仮対応 ・タイマー割り込みのベクトルを変更 (0x00→0x04) ・拡張RAMの選択がうまくいかないことがあったので改修 ・Crtc ・b/w color3,7 が壊れていたのを修復(r2b3で壊した) ・chr$(0)の描画をスキップする処理を廃止 ・「アトリビュート無効」モードに対応 ・80mkII の GVRAM 対応コード追加 ・PCG8200対応 (80mkIIモード時のみ) ・DMAの動作を変更+GVRAMコストを反映 ・VRTCビットを反転させなくても良くなった (一部のゲームのスピードが狂うため、辻褄合せをしていました) ・BEEPの濁りが増した ・ディスプレイの「信号なし」の場合の色を設定できるようにした ・PCG on->off 時に out2,0 するモードを設けた ・Cmt ・bas,bin もそのまま読めるようにした ・オペレーション機能強化 ・フルスクリーン ・1.4.0 以外でも(なるべく)落ちないようにした ・Windowに復帰後ダイアログがおかしくなる不具合あり ・マウントしているテープ・ディスクを表示するダイアログを追加 ・Disk ・「モーター回転待ち」を回避するパッチ当てを止めた ・ディスクの有無 と DiskSys有効/無効 の関連付けを止めた  -> ディスクを入れないと、起動(リセット)に時間がかかります ・ステータス、リセットまわりを調査、修正  -> 起動後にドライブ2にディスクを入れたときの挙動がマシになった ・フォーマットをそれなりに実装しなおした ※連結イメージは使えません / フォーマットすると後ろのデータは消えます ・Printer ・出力ファイルを指定可能にした ・起動直後上書き/その後は追記 -> 常に追記 に変更 ・Keyboard ・80mkIIの[TAB]キーに対応 (要:80mkIIモードで起動) ・J2SE1.4〜 では実行環境の[Tab]キーを使えるようにした ------------------------------------------------------------------------------ [Release 2b3] Ver. 2.0.2 2003.06.29 ------------------------------------------------------------------------------ ・Cmt ・[Alt]+[BS] の動作を簡略化 ・従来、pause させていたのを廃止しました。 ・ImageMixer ・ゴミコードが混ざっていたのを削除 ・200Line限定に書き換え ・Image2Png ・メモリを節約 ・MainSystem ・条件によっては速度調整がうまくいかなくなることを発見  特に無音時 / サウンド有効の場合は気づかないだけ ...対策しました  R1系でも再現するはずですが、放置します ・速度調整の冗長な部分を簡素化 ・Crtc ・コードを大幅に整理  フォント描画は速くなった  セミグラは特別扱いをやめたのでちょっと遅くなった  再描画が必要なデータ判別の精度&効率 UP (特にPCGとの絡み)  DMA走査範囲がおかしくなる可能性を発見/修正 (R2b1or2でエンバグ) ・処理の簡略化  0x00 は常に空白とします(フォント改造しても表示されません)  行数、キャラクタH による画面下の余白処理を変更&簡略化  ...ゴミが出たら教えてください / 直します ・Z80 ・コードを大幅に整理 (「// 後で調べる」なんてコメントを発見して...) ・複数の実装を比較中。。。 【Release1でのバグ / バグの疑い】  RETN break していなかった (次の RETI も実行して break)  EX (SP),I? IX(IY)下位 8bit の上位 4bit をコピーし忘れていた  ADC,SBC(8bit) CY=1 の時の Hフラグが微妙におかしい?  NEG Hフラグ違ってた?  ブロック転送 動作が違っていた?(結果的にM1のメモリwaitが少なかった?)  割り込み 適当だった ・DiskDrive ・コード整理 ・DiskSystem ・スレッド化まわりのコードを削除&整理  > サブシステムのサブスレッド化は復活させません ・DiskMemory ・DiskMemory#mem.poke16() 0x3FFF,0x4000 に書きこもうとする場合 NG だった ・その他 ・コンパイルオプション「-g:none (デバッグ情報なし)」追加  → classが小さくなった / 実行速度にはほとんど影響なし ------------------------------------------------------------------------------ [Release 2b2] Ver. 2.0.1 2003.04.06 ------------------------------------------------------------------------------ ・全般: ・「cfg」を修正する必要があります (またですか?) ・cfg の -PEN:ファイル指定 → ディレクトリ指定に変更 ・ディレクトリは、ダイアログからの探索root (初期値) ・メニュー選択時などのレスポンスについて調整 NT系では(条件によって?)悲惨なことになっていたようで... 対策はしたつもりですが、治っているかわかりません > モ〜リンさん、障害報告ありがとう > あおさん、急なテストに付き合ってくれてありがとう ・クロックを 4MHz → 3993600Hz に変更 ・cfg中でカレントパスを相対パスで指定するとファイルダイアログの動作がおかしくなる Win95+J2SE1.3限定のバグかと思って放置していたら、Win98でも再現した... ・Windows9x + J2SE1.3.1_06 再現する ・Windows9x + J2SE1.4.1_01 再現しない ・上記以外未確認 ...対策しました ・起動時にペンマップを読まなくても良いように調整 ・[DumpRAM], [OverDrive] は「強制 pause」→「勝手にresume」タイプの動作に変更 ・j80仮想ペンのマッピングファイル読み込み中は、pause させる コレ、将来キーの少ない環境でも遊べるようにする布石だったりもするのですが... ・キーボードバッファのタイミングをファイル入力時に安定して読むように調整 ・Cas2Cmt: ・*PEN 対応 (指定のみ / 実際に読むのはユーザーのリクエストによる) ・[F6]:CAS で指定されたペンマップを読む (指定されていない場合はクリア) ※ロード前にペンマップを読んでください (後だと次のタイトルになってしまいます) ・Calender: pause時間をカウントしない処理が外れてたのを修正 ・サウンド: ・MOTORリレー音サンプリングやり直し&再現性向上を目指して内部形式変更 ついでに、on→off/off→on を分けてみました ・片振幅しか使っていなかったので、マイナス側も使うことにした PCGサウンドをマイナス側に移したので、位相が反転することになります → BEEPと同時に鳴っているときの音色が変わってしまうものがあるかもしれません ・ボリュームバランスを微妙に変えました ------------------------------------------------------------------------------ [Release 2b1] Ver. 2.0.0 2003.03.30 ------------------------------------------------------------------------------ ・[コードの整理等] ・「cfg」を修正(追記)する必要があります いろいろいじったので、エンバグしてるかも ^^; >特に大きく手を入れたクラス  ・Keyboard.class  ・Calender80.class  ・アトリ展開整理...(ロジックは変更してません)  ・全体の制御 (pause/resume/reset まわり) ・無駄な配列をコンパクトに... / 全体的に軽くなった? ・起動時のメッセージ出力を抑制 ・[エミュレーション全般] ・-light 起動時は SubCPUのクロックを固定にしていたのを「可変」に変更 ・タイマー割り込みの実装を、ExtendedSystem→Keyboard に移動 (高速化のため) ・「MainCPU OverDrive」追加 (x2, x4)  ・CPUとメモリウェイトのみ高速化  ・DMAコストやクロック割り込みはそのまま   ...VRTCで速度調節してるモノは(見た目)速くなりません  ・メニューの時間単位の指定もそのまま(読み替え不要) ・IPL文字列のエスケープルールを微調整 > CASファイル等の拡張について ・スクリーンショットを連番でセーブ (max 16) ・スクリーンショット確認用HTMLを上記に対応させた ・テンポラリ(.cmt, printer.dat, dump.mem, screen_?.png)ディレクトリ指定可に ・一部のコマンド変更  ・スクリーンショット [F6]→[F9]  ・エコーon/off    [F9]→[Alt]+[Q] ...さらに変えるかも   ※[F6] はユーザー開放 or 任意の「同時押し」キーとして使うか検討中    ...[F6] で、全ポートの状態を一発再現 ・[サウンド] ・BEEP/PCG 音量のバランス微調整 ・BEEPをテーブル方式に直した(戻した?/この方が軽い) ...再現性に影響はありません ・MOTORリレー音暫定実装 (betaですから...)  ・on→off / off→on ...同じ音  ・音がイマイチ似ていない (ヘッドフォンでサンプリングした)  ・読みこみや内部形式変換がメンドクサイので、任意のwavファイル対応はしません ・[Keyboard] ・「キーマップファイル」を修正する必要があります ・ローマ字カナ変換をテーブル参照方式に変更 ・ローマ字カナ変換:Q.. のマップ抜け発見 / 追加 ・ローマ字カナ変換で使うキーを「キーマップファイル」に記述するようにした ・「ローマ字入力<->カナロック」の切り換え動作と表示を変更 ・エコーon/off でバッファの強制クリア ・エコーon/off でポートの強制クリア (押しっぱなし回避) ・「j80仮想ペン入力」機能追加  ・せっかくマウスを読むようにしたので作ってみました  ・「マッピングファイル」を書いて対応します  ・オセロやマージャンなどがマウスでプレーできるようになります ・ファイル「打ち込み」機能追加 (ベーマガに敬礼!) ・「ダイオード省略」の再現 ・「連射」機能などのカウンタ処理をクロック割り込みの処理と統合  ・メニューでの指定方法が若干かわりました  ・以前の「連射」は、動作がおかしかったかも ^^; ・[Calender] ・書き換えたので、プリンタポートのゴミが出やすくなったかも... ・月の送り処理を実機で確認->OK (いまさらかよ!) ・[Cmt] ・[Alt]+[BS] のバグ発見→修正  ...タイミングによっては、再び押しても[PAUSE]のママになる件 ------------------------------------------------------------------------------ [Release 1.4] Ver. 1.1.1 2003.02.23 ------------------------------------------------------------------------------ ・Disk メニュー [Drive Online] の順番を変更 ・CRTC (CRTCscreenH * CRTCcolumnH) < 400 のとき、画面下をクリアする  → VIDEOKUN PC (PiOスペ) 実行前に画面クリアしなくて良くなった ・ライトペン仮実装 ・マウスのボタンを押す=ペンを押す [制限事項] ・VSYNC等無視 ・「赤」ドットの場所でも読み取り可能 ・ドットのない場所でも読み取り可能 ・左端のX座標は 6(88のROMを解析) で固定 ・「押したまま移動」でも、押した時の座標を返し続ける [お願い] ・ライトペンは現物がないので良くわかりません ・下記2点について情報をお待ちしております ・カタログにある、「8001の改造もしくは変更が必要」の内容 ・X座標の補正値は(8001の場合も) 6 で良いのか? ------------------------------------------------------------------------------ [Release 1.3] Ver. 1.1.0 2003.01.05 ------------------------------------------------------------------------------ ・ローマ字カナ変換のバッファスピード変更 ・80桁時に 25ms だと読み取れない → 50ms ・ディスプレイの種類(色)を外付けのファイルで指定するように変更 ・デフォルト:./display/color ・キーマップのデフォルトを変更 ・./keymap → ./keymap/106jp ------------------------------------------------------------------------------ [Release 1.2] Ver. 1.0.2 2002.12.30 ------------------------------------------------------------------------------ R1.1 は間違えてテスト版を公開してしまいました 「Diskあり」の時のクロックがおかしいです 問い合わせがあったとき混乱するので、バージョン表記を上げました ------------------------------------------------------------------------------ [Release 1.1] Ver. 1.0.1 (テスト版を間違えて配布) 2002.12.29 ------------------------------------------------------------------------------ ・cas,キーマップファイル中に「TABだけ」の行があっても通るようにした ・動作の軽量化 (その1) ※負荷は「起動後なにもしていない状態」で観測 J2SE1.3 + Win98 で、CPU負荷が R1の 75% に低下 「J2SE1.4系だと重い」現象が発生しなくなった ・動作の軽量化 (その2) ・軽量版を復活 (-light オプション)  上記の70% (R1の53%) の負荷で動く (60FPS時) [注意] ・タイマー割り込みを含め、機能制限ナシ ・余裕のある環境だと、描画がギクシャクする ・キーの読み取り精度が若干低下する ・タイマー割り込みの精度が若干低下する ・BEEP の再現性が若干低下する ・30FPS (初期値) ・DISK側の CPUクロックは、1MHz(程度) で固定 ------------------------------------------------------------------------------ [Release 1] Ver. 1.0.0 2002.12.23 ------------------------------------------------------------------------------ ・コンパイラを 1.4.0_03 に変更 ・cfgファイル中の「アドレス指定」に、16進表記なども受け付けるようにした ・casファイル中の「アドレス指定」に、16進表記なども受け付けるようにした ・ファイルアクセスまわりを少し安全に書きなおした ・ファイルまわりのエラー発生時の挙動を整理 [CAS - 初期化時]  ・TITLEが無い → cas 排出 [CAS - タイトルREAD時]  ・TITLE が空 → cas 排出  ・casファイルに記述したファイルが見つからない → cas 排出  ・casファイルに記述したファイルの変換等でエラー → cas 排出 [T88 - READ時]  ・t88ファイルの変換エラー → t88排出 ------------------------------------------------------------------------------ [beta 3.1] Ver. 0.9.40 2002.12.15 ------------------------------------------------------------------------------ ・cas 中のファイルが見つからなくても落ちないようにした 記述の間違いについては、落ちます ^^; ・[Alt]+[E] ドライブ2にディスクを入れる...追加 ・power-off 時の制御がいいかげんだったのを修正 ・sound有効の時一定時間で落ちる件は、Java(VM or API)側のバグだった模様 ------------------------------------------------------------------------------ [beta 3] Ver. 0.9.39 2002.12.08 ------------------------------------------------------------------------------ ・cfg,cas,キーマップ ファイルの「文字コード指定」に伴う調整 ・*IPL 拡張 ・T88 の読みこみ機能追加 ・ローマ字カナ変換 ・ryA-O が壊れてたのを修正 ・ds? を誤認識していたのを修正 ・c?,c?? のパターンを追加 ・j80 と j80_f を統合した ・コンパイラを 1.4.0_beta3 に変更 ・拡張RAMを実装 (CP/M ,S-DOS1.1 が動きます) RAMのダンプは、拡張RAM+本体RAM の 64K になります ・タイマー割り込みを実装 ・FDC のフォーマットコマンドを(適当)実装 j80 のドライブは、標準的なフォーマットしか使えないと思ってください p80make で作った d88 への書きこみは *禁止* です ・N-BASIC 1.3(8001mkII) のとき、ディスクが使えない件に対策 ・CP/M が動きました ・S-DOS1.1 も動きました ------------------------------------------------------------------------------ [beta 2.19] Ver. 0.9.38 FullScreen TEST版 同梱 2002.11.04 ------------------------------------------------------------------------------ ・1byte目の M1 サイクルでしか 1wait 入れていなかったのを修正 (RAM) ・PCG初期型(単音/ソフトウェアSWなし)を選べるようにした ・メニュー操作などで画面の更新ミスが起こり難くなるように調整した ・b2.17→18で、アンダー/オーバーラインの描画がおかしくなっていたのを修正 ・ローマ字カナ変換をキレイ(?)に書きなおした ------------------------------------------------------------------------------ [beta 2.18] Ver. 0.9.37 FullScreen TEST版 同梱 2002.10.27 ------------------------------------------------------------------------------ ・サブシステムのサブスレッド化を一時的に廃止 (問題なければ廃止の方向で) ・サブシステムをサブスレッド化しない場合もクロック指定できるようにした ・メモリダンプ (dump.mem) 機能追加 ・PC88.ROM を流用した場合、ディスク側にN-BASICの一部も転送していたのを修正 未実装エリアを含め16kB満タンになるまで止めてなかった... ・casファイルのオペレーションを変更  →タイトル末端までいったら次のタイトルへ移る (旧:同じタイトルを巻き戻し) ・「モノクロ−反転」時に out81,0 した場合、画面は白(color 7)でクリアする ・DMAコストを1行分まとめて負担させる方法に戻した  →BEEPの濁り具合が「改善」されました ^^; ・「行のライン数」の指定方法がわかったので、実装を正確(?)にした 「行数指定」の最大を 32 に制限していたのを外した (64行までフルに可能) ただし、25行を超える場合は -column オプションが必要 ・CRTC(DMA)の「行ずらし」適当実装 ------------------------------------------------------------------------------ [beta 2.17] Ver. 0.9.36 FullScreen TEST版 同梱 2002.10.10 ------------------------------------------------------------------------------ ・Minoさんのページ で、BEEP音源ドライバー とデータの公開がはじまりました と云うわけで、記念バージョンです (b2.16 だと、きれいに鳴りません) ・再生レートを 48kHz に戻した ・メインループの精度上げた Minoさんにはテスト版の評価をしていただきました ありがとうございました ・VIDEOKUN PC (PiOスペシャル[1])に対応しました (モ〜リンさん ありがとっ ^^) 20行/25行固定にしていた制限を外しました 64行まで対応するのはメモリの無駄遣いなので、32行をmaxとしました →不都合のあるソフトをお持ちの方はご一報ください 画面下のゴミは、気にしないでください ------------------------------------------------------------------------------ [beta 2.16] Ver. 0.9.35 FullScreen TEST版 同梱 2002.10.05 ------------------------------------------------------------------------------ ・WILD SWAT (コンピュータランド北海道)の「クラッシュエフェクト」に適当対応 ・旧メインループ (-xxx オプション) コード削除 ・電源オフで起動する (-off) 追加 ・プラットフォームの違い対策用のパッチを除去した ------------------------------------------------------------------------------ [beta 2.15] Ver. 0.9.34 FullScreen TEST版 同梱 2002.09.17 ------------------------------------------------------------------------------ ・機能追加なし (コード整理のみ) ------------------------------------------------------------------------------ [beta 2.14] Ver. 0.9.32 FullScreen TEST版 同梱 2002.07.21 ------------------------------------------------------------------------------ ・拡張ROMエリアが未実装の時 0x00→0xFF ・ディスクのメモリマップが違っていたので直した (動作には影響なかったハズ) ・disk.rom が 2k のままでも大丈夫なようにした (今更ですが...) ・Cmt ・「タイトルの説明を表示」が「タイトルの一覧表示」になっていたのを修正 ・セーブ側:無意味(?)なデータがステータスチェックなしで出力されることがある  →落ちないよう対策 ・フルスクリーン化に失敗したらWindow に戻す(コメントアウトしたままだった) ・新ループの速度調整頻度を 200ms(1000ms) → 50ms(250ms) に変更 ...過去250ms の実行時間から、次の 50ms 間の sleep(1) 頻度を決める ------------------------------------------------------------------------------ [beta 2.13] Ver. 0.9.31 FullScreen TEST版 同梱 2002.06.30 ------------------------------------------------------------------------------ ・FullScreen 対応版 ・FullScreen 対応版 (j80_f.jar) の実行には、J2SE 1.4 が必要です ・Windows98 + J2SE1.4.0-beta3-b84 でコンパイルしました ・FullScreen に切り替えた時、画面の再作図をミスることがあります (F11 を2回押せば修復) ・printer.dat にできるだけゴミが混ざらないようチューニング ・ZAXUS がおかしくなってた(0.9.28〜)のを発見→修正 ・casファイルまわりのクラスの仕様を整理 ・「メインループ」を書き換え、「sound 有効時のギクシャク感」対策 念のため、-xxx オプションで、「旧ループ」も選択できます(今回限りの予定) ・cfg ファイルのサウンドバッファの指定方法変更 ・cfg ファイルのキーワードを変更 ・ROM → ROMs ・-MAP → -KEY ------------------------------------------------------------------------------ [beta 2.12] Ver. 0.9.30 2002.05.18 ------------------------------------------------------------------------------ ・Cmt.class ・丁寧に書き直し(ちょっと安全になった?) ・Alt+BS で、プレーヤーを一時停止 ・動作状態のアニメーションを表示 ・Z80.class ・HALT時 クロックを 1/100 相当にしていたが、reset直後が重くなる現象確認  → 1/10 相当に変更 ・Calender.class ・取得したカレンダーの初期値が、「12時間制」だったのを修正 ・カレンダー実装を正確(?)にした ・Calender.class に PrinterIF 追加 (出力ファイル:printer.dat 固定) ・その他 ・起動音まわりのトリック削除 ・サウンド再生ビットレート 48000 → 24000 に変更 ・その他サウンドまわりのパラメータも微調整 ------------------------------------------------------------------------------ [beta 2.11] Ver. 0.9.29 2002.04.25 ------------------------------------------------------------------------------ ・Z80 に、コメント閉じ忘れ発見 「LD (lm),HL」が外れてた ただし、未定義命令 (ED 63) の方ね / 実害ないでしょ? ------------------------------------------------------------------------------ [beta 2.10] Ver. 0.9.28 2002.04.24 ------------------------------------------------------------------------------ ・HotSTART(STOP+Reset) が効かなくなってた(メニューからはOK)のを直した ・ファイルがopenされているときは、ファイル変更、頭だし不可としたが、 一部のローダー(マリオ)で、open したままになることがわかった (最後に MOTOR OFF しない) とりあえず RESET で、ファイルを強制的に close することにした ・CAS を拡張し、bin,bas に対応 tool80 での変換は不要になりました CAS ファイルの説明は、pcm8001(r1.1) に添付の cas.txt を参照願います ------------------------------------------------------------------------------ [beta 2.9] Ver. 0.9.27 2002.04.20 ------------------------------------------------------------------------------ ・メモリREAD時のウェイト調整 常に1ウェイト → ROM は常に、RAM は M1 サイクル時のみ1ウェイト あわせて、DMA のコストも調整 ・CAS ファイルに対応 CASを使うと、頭だしができます (CMTは巻き戻しのみ可能) 上記により、間接的にT88読み込み可 ・ROM等の指定に設定ファイル(j80.cfg)を利用するように変更した ※ デフォルトのパスが変更されています、ご注意ください ・カレンダー(DATE$) ...設定すると一日進むバグ修正 (いつ壊したんだろ?) ・ファイルがopenされているときは、ファイル変更、頭だし禁止 (テープのみ / ディスク側未対応) ------------------------------------------------------------------------------ [beta 2.8] Ver. 0.9.25 2002.02.17 ------------------------------------------------------------------------------ ・Z80.class 修正 未定義コードを拾った時の挙動がいいかげんなままだったのを直しました 暴走した時の挙動が改善され、ごく一部の妙なゲームが正常に走るようになります ・実行速度を調整(メモリREAD時のウェイト & DMAコスト調整) ------------------------------------------------------------------------------ [beta 2.7] Ver. 0.9.24 2002.01.20 ------------------------------------------------------------------------------ ・ImageMixerちょっと調整(補正カーブ) ------------------------------------------------------------------------------ [beta 2.6] Ver. 0.9.23 2002.01.11 ------------------------------------------------------------------------------ ・Cmtセーブ側:新規ファイルのとき、ファイルが作られないバグFIX ・合成スクリーンショットの色補正カーブ変更 ------------------------------------------------------------------------------ [beta 2.5] Ver. 0.9.22 2002.01.09 ------------------------------------------------------------------------------ ・Disk System のサブスレッド廻りをお行儀よくした Winでも Disk のサブスレッド化 OK になった ------------------------------------------------------------------------------ [beta 2.4] Ver. 0.9.21 2001.12.24 ------------------------------------------------------------------------------ ・メインループの精度上げた → BEEP再現性向上 ・スクリーンショット取得機能強化 (多バンク合成) ・Linux + J2SE1.3 で、画面サイズがおかしくなる現象回避 ・キーボードショートカットの「リピート」を(できるだけ)回避するようにした ------------------------------------------------------------------------------ [beta 2.3] Ver. 0.9.20 2001.12.16 ------------------------------------------------------------------------------ ・[Calenderクラス] ・無茶なオペレーションでも落ちないようにした ・pause時にカウントアップを止めるようにした ・[Soundクラス] ・音飛び改善 ・BEEPの音色 別バージョン試行 ・PSGの初期状態を忠実に再現...今まであえて止めてました / うるさいので ・[Crtcクラス] ・単純化(負荷分散処理などやめた) ・多バンク対応バージョン(数%重い)に一本化 ・カーソルON/OFF で再作図をミスる場合があるのを改修 ・DMA走査範囲制限&アドレスオーバーフローチェック追加 ・20行/25行で、DMAコストを変えた ・VRAMアドレス変更時の不具合改修(ポート 0x68 適当実装) ・3D MAZE(PCmag '83/10) の「爆破エフェクト」対応 ・VRAMサイズ可変対応(ポート 0x65 実装)  → Twenty-7(PiO '84/) 2画面合成お絵描きツール に対応 ・PCG更新時に再作図ミスが発生することがあったのを解決 ・[Cmtクラス] ・Cmt ロードデータの受け取りを遅らせる仕組みを追加 ・ → [STOP] で Tape read ERROR が出るようになった ^^ ・[Diskクラス] ・クラス分け、コード調整 ・書き込み仮実装 ・[j80クラス] ・-silent モードのメインループが2.5MHz相当になっていたのを修正 ・最小化時にpauseするようにした ・[その他] ・コード調整 & パフォーマンス向上 ・System ROMのパスを変更 ・PC-8001.FON(Hiroshi Kanemoto さんドット打ちで作成) の添付をやめる  → フォント作成ツールを別途配布予定 ------------------------------------------------------------------------------ [beta 2.2] Ver. 0.9.12 2001.11.12 ------------------------------------------------------------------------------ ・ローマ字カナ入力のパターン追加 ・b2.1で Sound.class を壊してしまっていたのを直した(PCGの音が出なかった) ------------------------------------------------------------------------------ [beta 2.1] Ver. 0.9.11 2001.10.06 ------------------------------------------------------------------------------ ・Diskクラス 整理・チューニング ・Z80クラス 整理・チューニング・バグつぶし ・Crtcクラス 整理・チューニング・アトリ展開アルゴリズム変更 ・メニューの一部変更 ------------------------------------------------------------------------------ [beta 2] Ver. 0.9.6 2001.07.24 ------------------------------------------------------------------------------ ・J2SE 1.4.0 に対応 (バージョン違いによるクセに対処した) ・アトリビュート再現性向上 ・スクリーンショット(png)取り込み機能追加 ・Disk(LOAD側のみ)対応 ------------------------------------------------------------------------------ [beta 1] Ver. 0.8.17 2001.05.05 ------------------------------------------------------------------------------ ・ベータ・リリース開始 ------------------------------------------------------------------------------ 限定公開 Ver. 0.8.0 アルファ・テスト開始 2001.02.21 Ver. 0.7.1 スクリーンショット公開 第二弾 2001.02.05 Ver. 0.0.0 スクリーンショット公開 2000.12.28 Ver. -.-.- BASIC 起動 2000.12.26 調査開始 2000.12.15 ------------------------------------------------------------------------------