Repository navigation
Releases: hasegawa-tomoki/vmpu68
Releases · hasegawa-tomoki/vmpu68
Release list
vmpu68 1.3.0
VMPU68 1.3.0 — 仮想SCSI対応 (Raspberry Pi 4 カーネル 1.3.0 / FPGA 1.2.0)
機能追加
- 仮想SCSIを追加しました。
- Raspberry PiのSDカードに置いたディスクイメージ(hds)を、X68000からはSCSIディスク(ID 0〜6)として使えます。
- IOCSのSCSI呼び出しをPi側で処理し、データをシャドウRAMへ直接置くので、内蔵SCSI経由より速く転送できます(Human68kからの読み出しで約15 MB/s)。
- 内蔵SCSIの機器(vhd68など)と共存できます。イメージをマウントしたIDだけをPiが受け持ち、それ以外は内蔵SCSIへそのまま渡します。
- ID 0にマウントするとIPLはそのイメージから起動します(起動ディスクにはIPLと常駐ドライバが必要です。FORMAT.Xで作ったイメージはそのまま使えます)。
- Web UIに「CPU」「仮想SCSI」のタブを追加しました。仮想SCSIタブで、IDごとのマウント/イジェクト、SDカードの残り領域のイメージ用ボリュームへの初期化、イメージのアップロード・新規作成・名前変更・削除、イメージ内のファイルの一覧・取り出し・追加・削除ができます。
- vhd68、vfd68とのLAN連携に対応しました。近くの機器にあるイメージを取り込んだり、こちらのイメージを転送してマウントできます。
- vmpu68.cfgに
vscsi<ID>=<path>[,ro]を追加しました(起動時にマウント。Web UIの操作で自動的に保存されます)。
- VMPU68.Xに
-dを追加しました。- Human68kのドライブ一覧(ドライブ文字、ドライバ名、SCSI ID、vhd68、vfd68、仮想SCSIのイメージ名)を表示します。
- VMPU68.Xの表示を整理しました。
注意
- Human68k稼働中にマウント中のIDのイメージを差し替えたとき、SHARP標準の常駐ドライバ(SCHDISK)が受け持つドライブでは直後の書込みが失敗することがあります。Human68kのバッファの扱いによるもので、vhd68でも同じです。差し替えを使うIDはSxSIのSCSIHD.SYSかsusie.xに受け持たせるか、差し替えのあとにリセットしてください。
添付ファイル
vmpu68-1.3.0.vpk… 更新パッケージ。Web UIの「ファームウェア」から適用します(カーネル1.3.0 + FPGA 1.2.0)vmpu68-sd-1.3.0.img.xz/vmpu68-sd-1.3.0.zip… SDカードイメージ(初回用)VMPU68.X/VMPU68.XDF… Human68k側のツール(-d追加)
vmpu68 1.2.0
VMPU68 1.2.0 — バス出力をバスクロック同期にして安定性を向上 (Raspberry Pi 4 カーネル 1.2.0 / FPGA 1.2.0)
修正・改善
- 電源を入れた直後の数分間、16 MHzでVMPU68からメインRAMへの書込みが1/100ほど欠けていた問題を修正しました。
- 電源投入から時間がたつと1/100万以下になるため、起動直後だけ目立っていました
- FPGA はバスクロックの 61/16 倍の内部クロックでバスクロックをサンプリングして動作しており、そのタイミングでAS や DS、アドレス、データ出力のタイミングを決めていたため、そのタイミングがサイクルごとに約 16 ns の幅で揺れ、動作に影響を及ぼしていました
- 対策としてすべてのバス出力を、バスクロックに同期して出力する様にしました
- X68000 XVI のクロックスイッチ(10/16 MHz)を切り替えてリセットスイッチを押すと起動まで長い時間がかかる問題を修正しました
- リセットの最中にクロックが切り替わるとX68000本体がしばらくメインRAMへの書込みを受け付けない状態になり、起動時のRAM書込テストが長引き、ウォッチドッグがハングアップと判断して Raspberry Pi が再起動していました。
- 対策としてカーネルがバスクロックの変化を検出したら、クロックが安定した状態で X68000 にもう一度リセットをかけてから起動するようにしました
- メインRAMへの書込にまれに失敗する問題を修正しました
- 書込みストローブの解除が本物のMC68000より半クロック早く、メインRAMの4ビット幅DRAMのうち1個だけ書込みが失敗することがありました
- 書込みストローブの解除を MC68000 と同じタイミングにし、書込みデータもストローブ解除後 少なくとも半バスクロック保持する様にしました
- DMAC のバースト転送の直後に CPU がその領域を読むと、ごくまれに転送前の内容が見えることがある問題を修正しました。
- 転送中にスヌープ(DMAC の書込みをシャドウ RAM に反映する仕組み)の記録があふれ、実RAMからシャドウRAMへの反映の前に CPU がシャドウRAMを読み込みすることがありました。
- Pi コンソール(J3 のシリアル、または
/api/con?cmd=)にいくつかのコマンドを追加しました。 - HTTP API
/api/statusのレスポンスにいくつかの項目を追加しました
添付ファイル
vmpu68-1.2.0.vpk… 更新パッケージ。Web UI の「ファームウェア」から適用します(カーネル 1.2.0 + FPGA 1.2.0)vmpu68-sd-1.2.0.img.xz/vmpu68-sd-1.2.0.zip… SD カードイメージ(初回用)
vmpu68 1.1.2
VMPU68 1.1.2 — 10 MHz 動作時の HD 起動不能の修正と JIT の速度改善
修正・改善
- 基板 V2.0.1 で X68000 のバスクロックが 10 MHz のとき、SCSI の DMA 転送がシャドウRAM に反映されず、IPL が「ディスクから起動できません」で止まる、Human68k が「無効なメディア」を出す、という問題を直しました。
- JIT で、起動時に一度コードが置かれた領域(のちにプログラムのスタックや作業領域になる)への書込みのたびに不要な検査が走り、浮動小数点や三角関数の処理が遅くなっていた問題を直しました。
SMI 関連はV2.0.1以降の基板のみに影響します。JIT の改善は V1.0 にも有効です。
添付ファイル
vmpu68-1.1.2.vpk… 更新パッケージ。Web UI の「ファームウェア」から適用します。vmpu68-sd-1.1.2.img.xz/vmpu68-sd-1.1.2.zip… SD カードイメージ(初回用)
vmpu68 1.1.0
VMPU68 1.1.0 — 基板 V2.0.1 対応と不具合修正
主な変更
- 基板 V2.0.1 に対応しました。同じファームウェアが V1.0 と V2.0.1 の両方で動きます(起動時に自動判別)。
- V2.0.1 では Raspberry Pi と FPGA の間の転送に SMI を使います。バス操作が 1〜2 割速くなります。
- ADPCM の再生中に音が乱れる問題を修正しました。
- 68000 のバスエラー例外のスタックフレームが 68010 形式になっていたのを 68000 形式(14 バイト)に直しました。バスエラーを自前で処理するソフト(ハードウェア探査など)が正しく復帰します。
- VMPU68 の情報ポートを
$ECFF00から$ECD000に移しました。旧番地は FineScanner-X68(スロット F)や BANK RAM ボードと重なり、si.x にも誤表示されていました。 - JIT を既定 ON にしました。
- Web UI: 「基板」の版数表示、「SMI 転送」(V2.0.1 のみ表示)。
- VMPU68.X:
-t1|-t0(SMI)を追加。表示 2 行目に SMI の状態を出します。
添付ファイル
vmpu68-sd-1.1.0.img.xz… SD カードイメージ。Raspberry Pi Imager で書き込んでください(初回はこれを使います)vmpu68-sd-1.1.0.zip… 同じ SD カードイメージの zip 版vmpu68-1.1.0.vpk… 更新パッケージ。Web UI の「ファームウェア」から適用します
vmpu68 1.0.0
VMPU68 1.0.0 (Raspberry Pi 4 カーネル 1.0.0 / FPGA 1.0.0)
添付ファイル
vmpu68-sd-1.0.0.img.xz… SD カードイメージ。Raspberry Pi Imager で書き込んでください(初回はこれを使います)vmpu68-sd-1.0.0.zip… 同じ SD カードイメージの zip 版vmpu68-1.0.0.vpk… 更新パッケージ。Web UI の「ファームウェア」から適用します(カーネル + FPGA)
Human68k 側のコマンド VMPU68.X と 2HD イメージ VMPU68.XDF はリポジトリの release/Human68k/ にあります。
設定ファイルの見本(vmpu68.cfg.sample、wpa_supplicant.conf)は release/config/ にあります。