VZエディタマクロをWindows, Linux, macOSで
https://qiita.com/kaizen_nagoya/items/b01918c7ba2704ce4fdf
では、IntelCPUに限った移植の提案をお願いしたら、ソースコードにもとづいた説明をしてくださった
ARMCPUへの移植の話になったら、ソースコードから逃げるCHatGPTに遭遇した
ChatGPT
祝VZエディタソースコード公開
https://qiita.com/kaizen_nagoya/items/baad23cf4a041ce845a9
をARM CPUのWindows, macOS, Linux(Raspberry PIを含む)に移植しようと思います。どこから手をつけるといいでしょうか。
ChatGPT:
なるほどです 😄
VZエディタを ARM CPU(Windows, macOS, Linux / Raspberry Pi含む)に移植 する場合、手順を整理すると「段階的に進めるのが安全」です。
- 現状コードの整理と依存確認
まず VZエディタのソースコード公開版を確認します。
使用している言語/フレームワーク(C/C++, Qt, ncurses, WinAPIなど)
OS依存部分の抽出
Windows API呼び出し(コンソール操作、ファイル操作など)
GUI / イベントループ
ARMでのコンパイル可能性を確認(型のサイズやアセンブリ依存はないか)
💡 ここで「コンパイルだけで通るか」をまずチェックするのが安全です。- 共通インターフェース化
OSやCPU依存部分を 抽象化 します。
例:
機能 抽象化方法
画面描画 vz_put_char(x,y,char) または vz_draw_pixel など共通API
キー入力 vz_get_key() 非ブロッキングで取得
ファイル操作 標準Cの fopen 系で共通化
スリープ / タイマー _sleep(ms) / usleep(ms) をラッパー関数化
この段階で、Windows / Linux / macOS / Raspberry Pi で共通のヘッダ・APIを作ることが重要- 最小限動作確認コードを作る
「VZエディタの一部機能だけ」を移植してテスト
例:コンソールに文字表示 → キー入力 → 画面更新
これにより、ARM上でも描画・入力・タイマーが動くことを確認
Raspberry Piは ncurses / Linux 標準API で動作確認- 段階的に機能移植
コンソール描画とキー入力
Windows → ARM Windows
macOS → ARM macOS
Linux → ARM Linux / Raspberry Pi
マクロエンジン / プログラムロジック
OS非依存部分はそのまま流用
ファイルI/O / 設定保存
OS間差異をラッパー関数で吸収
拡張機能(サウンド、GUIなど)
ここで OSごとの違いを吸収- ビルド環境の準備
クロスコンパイル環境を整備
Windows ARM → MSVC または MinGW-w64 ARM
macOS ARM → Xcode / clang
Linux / Raspberry Pi → gcc / g++
CMake などビルドシステムで OS判定マクロを活用
#ifdef _WIN32
// Windows用処理
#elif APPLE
// macOS用処理
#elif linux
// Linux用処理
#endif- 動作確認用最小テスト例
コンソール描画+キー入力+タイマー
#include "vz_console.h"
int main() {
vz_init();
for(int i=0;i<10;i++){
vz_put_char(i,i,'#');
}
while(1){
if(vz_get_key()==27) break;
}
vz_end();
}
これで ARM各OSで動作確認 してから本格移植に進む
推奨順序まとめ
現状ソースの依存関係確認
OS依存部分を抽象化して共通API化
最小限のテストコードで描画・入力確認
段階的に機能移植(描画 → マクロエンジン → ファイル → 拡張機能)
各OS / CPU で動作確認
最終的に VZエディタ全機能を統合
💡 これにより、ARM CPUでも安全に Windows, macOS, Linux, Raspberry Pi で動作する VZエディタ が構築可能です。
もし希望であれば、次に 「共通API化してARM移植向けのディレクトリ構成サンプル」 を作り、どのファイルをどのOSでどう分けるか具体例も示せます。
作りますか?
vcraftjp/VZEditor
https://github.com/vcraftjp/VZEditor/
にあるソースコードに沿ってお願いします。
ChatGPT:
VZエディタのソースコード公開に関する情報をご紹介します。
VZエディタのソースコード公開について
VZエディタは、兵藤嘉彦氏によって開発されたMS-DOS用のテキストエディタで、特にアセンブラ開発者に愛用されてきました。最近、オープンソースとしてそのソースコードが公開されました。公開されたリポジトリは以下の通りです。
GitHub リポジトリ: vcraftjp/VZEditor
このリポジトリには、以下のような内容が含まれています。
VZ-PC98: PC-9800シリーズやJ-3100シリーズ向けのマスターディスク
VZ-IBM: DOS/V、AX、PS/55、US版のマスターディスク
SRC: ソースファイル
Manual: マニュアルをMarkDown形式で文書化したもの
FDImage: エミュレータ用のFDイメージ(ベタ形式)
VZ157: Ver1.57のバージョン
公開されたソースコードを利用することで、VZエディタの理解を深めたり、カスタマイズや移植を試みたりすることが可能です。
移植に関する考慮点
VZエディタは、元々MS-DOS用に開発されたため、移植を試みる際には以下の点に注意が必要です。
プラットフォーム依存のコードの抽出: MS-DOS特有の機能やAPIに依存している部分を抽出し、他のプラットフォーム向けに置き換える必要があります。
コンソール入出力の対応: MS-DOSのコンソール入出力を、ターゲットプラットフォームのコンソール入出力に適切に対応させる必要があります。
ビルド環境の整備: ターゲットプラットフォーム向けのビルド環境を整備し、必要なツールチェーンやライブラリを準備する必要があります。
テストとデバッグ: 移植後の動作確認とデバッグを行い、元の動作を再現できているか確認する必要があります。
まとめ
VZエディタのソースコード公開により、MS-DOS用のテキストエディタを他のプラットフォームに移植するための第一歩が踏み出されました。移植作業には一定の技術と労力が必要ですが、オープンソースの力を借りて、より多くの環境でVZエディタを利用できるようになることが期待されます。
興味のある方は、GitHubリポジトリを参照し、ソースコードを確認してみてください。