2019年4月6日土曜日

古いPC環境とソフトウェアエミュレートの価値

最近、PC向けとしては最古のOSであるcp/mで遊んでいる
きれいなグラフィックスや表計算ソフトなどが動くわけではなくて、
文字だけの所謂DOS窓でソフトウェアを作ったり文字だけで表現されたゲームをしたりできるだけなのだがPC黎明期のあこがれのOSに触れられるだけで垂涎の体なのである

当初は8bitCPUの8080用に開発された(上位互換のz80でも動く)が後には16bitCPUの8086や68000用にも用意開発された ただし16bit用ではMS-DOSの後塵を拝した

現在cp/mそのものやそのうえで稼働した様々なソフトウェアが事実上フリーなものとしてネットで配布されている - The Unofficial CP/M Web site
そのほとんどが英語オンリーだけど8bit機であるし実験的な利用を考えると十分と言える

その実行環境は大きく分けて3つに分類できると思う。
  1. 実機:昔ならPC-8801系にメモリーボードなどを加えて別売のcp/mを購入するような形で実現したものであろうけど、比較的最近だと有志によって作成された基盤にいくらかのLSIチップをのせてシングルボードコンピュータとしてPCとUSBケーブルでシリアルインターフェースにつないで利用することになる
    例1:Z80-MBC2 z80とそのほかの3つのICで構成(128KBのRAMでCP/M3も稼働)
       IOやバスの調停をAVRのATMega32Aにさせている
       CPUの駆動クロックは4MHzと8MHzの切り替え
       オレンジピコさん(レア部品多数)での取り扱い
    例2:SBCZ80 古典電脳物語や8080伝説の鈴木哲哉氏の制作
       CPUの駆動クロックは2.5MHzと5MHzの切り替え(ハンダジャンパ)
       この方の他のSBCはスイッチサイエンスで扱いがあるけど、これはまだ
       (部品点数が多いうえにZ80-SIOなどディスコンが心配)
    例3:Pic24CPMボード z80最速の20MHz用を使って16MHzで動く。
       例1のAVRと違いシステムのコントロールチップにPIC24を使用
       プリント基板のガーバーデータなども公開されているし最も
       作ってみたくなる存在 RAMがディスコンか?
       (今ならHM628128ALP-7もオレンジピコにある)
  2. PC上のエミュレータ
    そもそもCPUクロックで千倍とかの差があるのでソフトウェアで8bit機の動作をさせることに何の支障もない 
    (もしあるとすれば5kgの手荷物を大型トラックで運んでる違和感か)
    でも実機との比較ができると良いことも多いので手元で環境は仕込んでおきたい
    例1:Windows32bit用にいくつか出ている
       1)takeda氏のcp/m player
       2)vecterのcp/m executor
       3)altair 8800のエミュ 日本語紹介ページ オリジナル配布サイト
      altair使いやすくてめっちゃいいのだけど^eがエミュレータからのエスケープで
      エディタが使いにくいです
    例2:linux用だとyaze 日本語紹介ページ
     実は環境はそれぞれのエミュレータで錯綜していてmacとかでも動くものも多い
     日本製の2本はwindowsの32bitコンソール専用だけにファイルの準備が楽
     altairとyazeはcp/mの環境から忠実に再現しようとしているので母艦との
     ファイル交換がひと工夫必要

    で、z80などをエミュレートするけどwindowsPCでやっちゃうと牛刀割鶏な感が
    否めないってエンジニア心が言うもんだから別のハードウェアでエミュレートするって選択肢も浮上する それが・・・・
     
  3. 他のCPU(ARMとATmegaがほとんどだけど)エミュレート
    例1:CP/M on an AVR 面白そうだけど4bit D-RAM入手がね・・
    例2:cpm8266 日本語で① その② ESP8266(WROOM-02)で入手性良し
       内臓のフラッシュROMをファイルシステムとして使うため4MB必須
       外部とのファイル転送方法を確立する必要あり
    例3:RunCPM 日本語紹介ページ(詳しくて夢膨らむ) M5Stackでも
       対応するボードは多岐にわたっており入手性に不安なし
       安定性などで cpm8266のほうが良いって記述もある
       でもm5stackでいろいろ遊ぶうちの一つの選択肢としては悪くない
    例4:cp-mega88 作者はとよしまさん(日本人!!) 解説 ご本人解説
       各種の環境で動くけど速くはない 忠実に8bitCPUを再現か?
       本来(?)のハードのガーバナー情報など
    例5:mbedでcp/mエミュ Nucleoは触ってみたいボード 生Z80とのコラボも!
       こちらのコメント欄のやり取りではNucleo F401あんまり速くないみたい 
とりあえずはPCのエミュで慣れつつcpm8266、runCPM、mbedなどで遊ぼう

0 件のコメント:

dosvaxj3が更新されていた。

 最近、エミュレータ系をあまり触っていなかったのだけど久しぶりに見てみたらタイトルのようにdosvaxj3が更新されていた。 on emulatorでセルフにcなどのソースを書いて実行するのに母艦側の特定のフォルダをドライブとしてマウント出来たり普通に母艦のimeで漢字が入力でき...