VidorBitstreamをビルドしてみる

Arduino MKR VIDOR 4000のFPGA部分については、githubのvidor-librariesにいくつかサンプルがあるようです。この中の、VidorBitstreamが詳しそうな感じなのでVidorBitstreamのReadmeを読みながら作業してみます。

冒頭の部分は要約すると、「対象はFPGA開発プロセスに慣れたユーザーである」「FPGAのネイティブ開発はサポートは難しいので限定的」ということみたいです。

ディレクトリ構成は以下の通りのようです。

  • IP IPブロックのソースコード。
  • projects 各ボード用のサンプルプロジェクト。
  • constraints 各ボード用の制約ファイル。ピン配置とタイミング制約を含む。
  • TOOLS FPGAイメージを生成するためのスクリプトとツール
  • distrib コンパイル中にツールチェーンによって作成されたディレクトリ。プロジェクトをコンパイルすることによって作成されたArduinoライブラリが含まれている。

リポジトリのダウンロードと展開

まずはリポジトリをダウンロードして展開します。まず、VidorBitstreamをZIPでダウンロード。ダウンロードしたVidorBitstream-release.zipを~/intelFPGA_liteディレクトリの下に移動し、ここに展開しました。

NIOS II Command Shellの起動

NIOS II Command Shellを開いてシェルスクリプトを起動する必要がある、ということなのですが、Windows版はStartメニュー内にあるようですが、Linux版はnios2edsディレクトリ内にあるようなので、

~$ ./intelFPGA_lite/18.1/nios2eds/nios2_command_shell.sh 
------------------------------------------------
Altera Nios2 Command Shell [GCC 4]

Version 18.1, Build 625
------------------------------------------------
~$

として起動します。プロンプトは一切変わらないようなので、要注意かもしれません。
(Windows版はCygwinが起動するようですが)

QuartusのIPにパッチ適用

次に、QuartusのIPにパッチをあてます。

~/intelFPGA_lite/VidorBitstream-release/TOOLS/scripts$ ./apply_quartus_patches.sh 
PATCH_VERSION 18.0 ACTUAL_VERSION 18.1
xargs: dos2unix: そのようなファイルやディレクトリはありません
patching file pgm/arduino_generic_qspi_controller2/HAL/inc/arduino_generic_quad_spi_controller2.h
patching file pgm/arduino_generic_qspi_controller2/HAL/src/arduino_generic_quad_spi_controller2.c
patching file pgm/arduino_generic_qspi_controller2/N25Q016.qprs
patching file pgm/arduino_generic_qspi_controller2/arduino_asmi2_qspi_interface.sv.terp
patching file pgm/arduino_generic_qspi_controller2/arduino_asmi2_qspi_interface_hw.tcl
patching file pgm/arduino_generic_qspi_controller2/arduino_asmi_parallel2_hw.tcl
patching file pgm/arduino_generic_qspi_controller2/arduino_asmi_parallel2_hw_proc.tcl
patching file pgm/arduino_generic_qspi_controller2/arduino_generic_qspi_controller2_hw.tcl
Hunk #2 succeeded at 152 (offset 8 lines).
Hunk #3 succeeded at 273 (offset 8 lines).
Hunk #4 succeeded at 285 (offset 8 lines).
Hunk #5 FAILED at 503.
Hunk #6 succeeded at 590 with fuzz 2 (offset 23 lines).
1 out of 6 hunks FAILED -- saving rejects to file pgm/arduino_generic_qspi_controller2/arduino_generic_qspi_controller2_hw.tcl.rej
patching file pgm/arduino_generic_qspi_controller2/arduino_generic_quad_spi_controller2_sw.tcl
Hunk #1 FAILED at 16 (different line endings).
Hunk #2 FAILED at 50 (different line endings).
2 out of 2 hunks FAILED -- saving rejects to file pgm/arduino_generic_qspi_controller2/arduino_generic_quad_spi_controller2_sw.tcl.rej
patching file pgm/arduino_generic_qspi_controller2/inc/arduino_generic_quad_spi_controller2_regs.h
patching file altera_components.ipx
Hunk #2 succeeded at 9771 (offset 54 lines).
Hunk #3 succeeded at 9864 (offset 54 lines).
Hunk #4 succeeded at 16247 (offset 54 lines).
xargs: dos2unix: そのようなファイルやディレクトリはありません
patching file arduino_16550_uart/arduino_16550_uart_hw.tcl
patching file arduino_16550_uart/arduino_16550_uart_sw.tcl
patching file arduino_16550_uart/HAL/inc/arduino_16550_uart_fd.h
patching file arduino_16550_uart/HAL/inc/arduino_16550_uart.h
patching file arduino_16550_uart/HAL/src/arduino_16550_uart_fd.c
patching file arduino_16550_uart/HAL/src/arduino_16550_uart_init.c
patching file arduino_16550_uart/HAL/src/arduino_16550_uart_ioctl.c
patching file arduino_16550_uart/HAL/src/arduino_16550_uart_read.c
patching file arduino_16550_uart/HAL/src/arduino_16550_uart_write.c
patching file arduino_16550_uart/inc/arduino_16550_uart_regs.h
~/intelFPGA_lite/VidorBitstream-release/TOOLS/scripts$

うーん、~/interlFPGA_line/18.1/ip/altera/pgm の下のファイルでいくつかパッチ当てに失敗してしまったようですが、このまま進めてみます。

makeCompositeBinaryのコンパイル

make_composite_binary.goをコンパイルするためにはgoが必要ですのでインストールします。

$ sudo apt install golang-go

引き続いて、コンパイルします。

$ cd intelFPGA_lite/VidorBitstream-release/TOOLS/makeCompositeBinary/
$ go build -o makeCompositeBinary make_composite_binary.go

TOOLS/scriptsディレクトリにパスを通す、ということなのですが、どうするか考えた挙句、NIOS II Command Shellの実体であるintelFPGA_lite/18.1/nios2eds/nios2_command_shell.sh を修正して、

env_var_prepend "${HOME}/intelFPGA_lite/VidorBitstream-release/TOOLS/scripts"

を179行目付近(env_var_prepend が unset される前あたり)に1行追加して対応しました。

VidorGraphicsのリポジトリダウンロードと展開

VidorGraphicsのリポジトリをZIPでダウンロードして、ダウンロードしたVidorGraphics-release.zipを~/intelFPGA_liteディレクトリの下に移動し、ここに展開しました。

VidorGraphicsのビルド

展開した VidorGraphics-release をビルドしようとしたのですが、 projects ディレクトリがありません。実際には VidorBitstream-release/project の下に、MKRVIDOR4000_graphics ディレクトリがありました。なので、先のリポジトリダウンロードも意味がなかったことになります。

で、結局、別のシェルを起動して、ビルドにトライします。

$ ./intelFPGA_lite/18.1/nios2eds/nios2_command_shell.sh 
$ cd intelFPGA_lite/VidorBitstream-release/projects/MKRVIDOR4000_graphics/
$ time build_all.sh 
    :
    :
    :
real 	6m56.265s
user 	10m57.052s
sys  	0m16.226s
$

ということで、11分くらいで一応正常終了したようです。ちなみに使用したPCのスペックは、

  • Intel(R) Core(TM) i3-3220T CPU @ 2.80GHz
    (CPUファンはCeleron G530のものの方が大型で冷えそうなのでそちらを使用。実際TDPもG530の方が大きい。)
  • マザーボード ASRock H61M-ITX
  • メモリ 8GB
  • SSD Crucial CT120M500SSD1(120GB)
  • OS LinuxMint19.1 MATE 64bit

といったところです。

生成したファイルをArduino IDEに取り込む

ビルドに成功すると、VidorBitstream-release ディレクトリの下に distrib というディレクトリができて、更にその下に MKRVIDOR4000_graphics ディレクトリができていました。このディレクトリをZIPで圧縮して、MKRVIDOR4000_graphics.zip を作成します。

Arduino IDEで「スケッチ」→「ライブラリをインクルード」→「ZIP形式のライブラリをインストール」で ~/intelFPGA_lite/VidorBitstream-release/distrib/MKRVIDOR4000_graphics.zip を指定してインストールします。すると、 ~/Arduino/libraries の下に展開して取り込まれました。スケッチ例にもカスタムライブラリのスケッチ例として取り込まれました。

同様に、MKRVIDOR4000_peripheralsでもビルドしてみました。

$ cd ~/intelFPGA_lite/VidorBitstream-release/projects
$ ls
MKRVIDOR4000_graphics  MKRVIDOR4000_pacman  MKRVIDOR4000_peripherals  MKRVIDOR4000_template_bare  MKRVIDOR4000_template_mbox
$ cd MKRVIDOR4000_peripherals/
$ time build_all.sh
   :
     :
     :
real	5m12.539s
user	8m48.694s
sys	0m15.755s
$ 

distribの下の MKRVIDOR4000_peripherals ディレクトリをそのまま~/Arduino/libraries の下にコピーしてもライブラリとして認識されるようです。

生成したものを動かしてみる

Arduino IDE上でカスタムライブラリのスケッチ例を動かしてみました。

  • そもそも書き込みにめったに成功しない・・・・
    ⇒ HDMIケーブルを刺していると、そもそもリセットがなかなか掛からない。
  • HDMIケーブルを抜いてから書き込んでみる
    ⇒ VidorDrawLogoは全く動いてない・・・。VidorEncoderも動いている気がしない・・・。うーん。パッチ当てに失敗しているあたりが関係しているのだろうか・・??

なんか、ARM側とFPGA側の通信が全くうまく行ってない気がする。とりあえず、また明日・・・orz

Quartus Prime Lite と ModelSim Starter をインストール

昨日ダウンロードした Quartus Prime Lite Edition と ModelSim Start Edition をインストールします。といっても、やり方がわからなかったので、適当です。^^;
OSはもちろんLinuxMint19.1 MATE edition 64bitです。

ホームディレクトリにダウンロードした以下のファイルをおいてあります。

  • ModelSimSetup-18.1.0.625-linux.run
  • Quartus-lite-18.1.0.625-linux.tar
  • QuartusLiteSetup-18.1.0.625-linux.run
  • cyclone10lp-18.1.0.625.qdz

この状態で実行属性をつけて、動かしてみました。

$ chmod a+x *.run
$ ./QuartusLiteSetup-18.1.0.625-linux.run

すると、ウィザードが立ち上がり、何も考えずに勧めていくと、途中でダウンロードしたファイルをすべて検出した状態でインストールするソフトウェアをすべて表示してくれました。

さらに進めていくと、

という表示が出て、勝手に起動する模様・・・・に見えましたが、

quartus: error while loading shared libraries: libpng12.so.0: cannot 
open shared object file: No such file or directory

というエラーを出して止まっていまいました。

$ sudo apt install libpng-dev

として、インストールしたディレクトリを削除して再度トライするも、やっぱりだめ。今度は、

$ echo "deb http://mirrors.kernel.org/ubuntu/ xenial main" | sudo \
tee -a /etc/apt/sources.list && sudo apt-get update && sudo apt \
install -y --allow-unauthenticated libpng12-0

を実行してから、再度インストールしたディレクトリを削除してトライ。今度は

という画面が出て、フル機能版のライセンスを買うか聞いてきます。趣味・勉強の範囲なので、そんな余裕もないので、真ん中を選んで実行してみます。

という感じで、Quartus Prime Lite Edition が無事に起動しました。

しかし、デスクトップにショートカットは生成されませんでしたので、デスクトップを右クリックして「ランチャの生成」で手動でランチャを作っておきます。

  • 名前は「Quartus Prime Lite Edition」
  • コマンドは「/home/(ユーザー名)/intelFPGA_lite/18.1/quartus/bin/quartus」
  • アイコンは「intelFPGA_lite/18.1/quartus/adm/quartusii.png」

として作成しておきます。作成したものをダブルクリックすると起動することを確認しておきます。

さらに、こちらの情報によるとModelSimを動かすには、32bit用のライブラリが要るらしいので以下の手順でインストールしておきます。

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install build-essential gcc-multilib g++-multilib lib32z1 \
lib32stdc++6 lib32gcc1 expat:i386 fontconfig:i386 libfreetype6:i386 \
libexpat1:i386 libc6:i386 libgtk-3-0:i386 libcanberra0:i386 \
libpng12-0:i386 libice6:i386 libsm6:i386 libncurses5:i386 zlib1g:i386 \
libx11-6:i386 libxau6:i386 libxdmcp6:i386 libxext6:i386 libxft2:i386 \
libxrender1:i386 libxt6:i386 libxtst6:i386

MicroHDMI-HDMIケーブルを入手

昨日ポチったHDMIケーブルは無事に届きました。

こちらの記事を参考に、ブートローダの更新、VidorGraphicsライブラリの追加、スケッチ例のVidorLogoDrawの書き込みを行ったところ、接続してあるHDMIディスプレイに無事に表示がされました。

インテルFPGAプログラムに登録して、インテル® Quartus® Prime 開発ソフトウェア・ライト・エディション(ライセンス不要、無償)をダウンロードします。自分は(相変わらず)Linux版をダウンロードしました。tarアーカイブで6.2GBという巨大なものです。4MB/s程度しか出ず、時間がかかります。

ここで待っている間にシミュレータについて調べます。昔からModelSimの規模と性能の限定版があるはずなので・・・と思ったら、「ModelSim* – Intel® FPGA Starter Edition ソフトウェア」というのがあって、無償で10000ラインまでというものがあるのですが、なんとWindows版しかありません。・・・と思ったら、いろいろリンクを辿っていたら、Linux版にたどり着きました。ダウンロードページの「個別ファイル」の中にあるようです。この中から、とりあえず

  • Quartus Prime (includes Nios II EDS)
  • ModelSim-Intel FPGA Edition (includes Starter Edition)
  • Cyclone 10 LP device support

のダウンロードも仕掛けて今日は寝ます。

Arduino MKR VIDOR 4000を入手

FPGAが載っているArduinoがあるのをTwitterで知って、ついポチってしまいました。アメリカからドイツ経由で2週間強、ようやく届きました。

届いたら、箱がやや潰れてました(泣)。中身は帯電防止袋なしで、帯電防止スポンジに刺さった状態のArduino MKR VIDOR 4000がゴロッと入ってました。幸い、外観上の異常はなさそうです。

で、使い方を調べていたら、HDMIケーブルはMini HDMIじゃなくて、Micro HDMIが必要なことが判明。早速アマゾンでポチりました。

搭載しているチップは、

  • CPU Atmel ATSAMD21
  • FPGA Intel Cyclone10 10CL016YU256C8G
  • DRAM Alliance Memory AS4C4M16SA-7BCN
  • FLASH Winbond 25Q16DVN1G

のようです。CycloneがALTERAのロゴでなくなっているのは時代を感じさせられるのと、Allianceのメモリは昔痛い目にあったので大丈夫なのか不安です(笑)。

しかし、もうチップの刻印が見えない見えない(涙)。ルーペで必死に見ました。

このルーペは40年ほど前に父がドイツに出張した際に買ってきてくれたお土産です。残念ながら、自分が小さい頃だったので、こんなものに頼らなくても小さな文字までバッチリ見えたので扱いを雑にしていたため、レンズの中央部分に細かい傷がたくさんできていて、かなり見辛くなってしまっています。

レンズをよく見ると、ESCHENBACH W-GERMANY という刻印が見えます。W-GERMANYは西ドイツ製ということだと思います。(当時はまだ西ドイツと東ドイツに分かれていて、ベルリンの壁もあった時代です)

で、ESCHENBACHって何かと調べたら、メーカーの名前(ブランド)のようで、実は同じ(に見える)モデルが今では国内でも買えるようです。

Arduino IDE 1.8.8を動かしてみた

久しぶりに Arduino IDE を使ってみたくなったのでLinux Mint 18.1 LTS上にインストールしてみました。ターゲットボードはずっと前に秋月で買った ESP32-DevKitC ESP-WROOM-32開発ボード です。

インストールの手順はこちらに記載されているとおりなのですが、なにはともあれ、こちらからArduino IDE 1.8.8 Linux 64bitをダウンロードして、ホームディレクトリに展開します。

展開したディレクトリに移動して、インストールスクリプトを起動します。

~$ cd arduino-1.8.8/
~/arduino-1.8.8$ ls
arduino                 examples    java       reference      tools-builder
arduino-builder         hardware    lib        revisions.txt  uninstall.sh
arduino-linux-setup.sh  install.sh  libraries  tools
~/arduino-1.8.8$ ./install.sh 
Adding desktop shortcut, menu item and file associations for Arduino IDE... done!
~/arduino-1.8.8$

これでメニュー上に追加されます。

「ファイル」→「環境設定」で環境設定画面を開きます。設定の下の方にある「追加のボードマネージャのURL」に「https://dl.espressif.com/dl/package_esp32_index.json」を入力(下記)します。

次に、「ツール」→「ボード」→「ボードマネージャ」

で「esp32 by Espressif Systems」のところにある「インストール」ボタンをクリックしてインストールします。完了すると「ツール」→「ボード」でESP32を搭載したボードが大量に出てくるので、「ESP32 Dev Module」を選択します。

次に、サンプルを動かしてみます。今回はNTPサーバーにアクセスして時刻を取得するサンプルを動かしてみました。まず、「スケッチ例」→「ESP32」→「Time」→「SimpleTime」でサンプルを開きます。開いたら、上の方にある ssid と password の部分に手近な無線LANアクセスポイントの設定を記述します。

チェックマークをクリックしてビルドすると、エラーが発生します。いろいろ調べると、python の pyserial モジュールがないために発生するようなので、インストールします。そもそも、pip も入っていなかったので、インストールしました。

$ sudo apt install python-pip
$ sudo pip install pyserial

ビルドが通るようになったので、書き込んでみます。

「ツール」→「シリアルポート」で /dev/ttyUSB0 を選択した後、「ツール」→「シリアルモニタ」でシリアルモニタを開き、速度を 115200bps に設定します。その後で、右矢印マークをクリックするとビルドして書き込み、実行します。

うまく行けば、NTPサーバから取ってきた時刻(UTC)が表示されるはずです。

意外にあっさりと動いてしまいました。

CircuitPythonのAPI

サンプルは動きましたが、いじって遊ぶにはAPIがわらかないことにはどうにもなりません。Circuit Playground Express上のCircuitPythonのAPIを調べてみました。

どうやってたどり着いたかよくわからない(汗)のですが、メモしておきます。

CircutPythonを試してみました

最近始めたTwitterで見かけたCircutPythonというキーワードを調べていくと、その正体はどうやら USBマスストレージ+MicroPython であることがわかりました。PythonのスクリプトをUSBマスストレージに見えているハードウェアデバイスに放り込んでやると、そのまま実行できるというお手軽この上ない環境のようです。エディタとしてGeanyを使えば、更にお手軽になる予感がします。

今回は、ハードウェアとしてはadafruitのCircuit Playgound Expressを購入してみました。

早速購入したCircuit Playgound ExpressをUSBでPCに接続すると、デモ動作をします。

ブザー音を出しながら10個のフルカラーLEDが順に点灯、LinuxMint上で

$ screen /dev/ttyACM0 115200

とすると、シリアルコンソールにCapsenseセンサ、スライドスイッチ、明るさセンサ、加速度センサ、温度センサの各状態を出力しているのが見えます。プッシュスイッチを押すとその状態も出力されます。スライドスイッチを左にスライドすると出力が変わるとともにブザー音がなくなります。

この状態ではCircuit Pythonは使えないので、CircuitPythonをインストールします。

まず、Circuit Playgound Express用のCircuitPythonをguthubからダウンロードします。現時点では CircuitPython 3.1.2が最新のようです。ディレクトリの中からCircuit Playground Express用のadafruit-circuitpython-circuitplayground_express-3.1.2.uf2をダウンロードします。ダウンロードできたら、これをインストールします。

Circuit Playgound Expressの中央のリセットスイッチを押すと、すべてのフルカラーLEDが一瞬赤になった後、緑になり、USBマスストレージ(ボリューム名CPLAYBOOT)として認識されます。このモードがブートローダモードと呼ぶようです。(なお、Circuit Playgound Expressの場合は、購入直後はリセットスイッチ1回でブートローダモードに入れますが、通常はリセットスイッチ2回連打する必要があるようで、そのタイミングが結構難しいようです。公式サイトでは何度が繰り返してやってみろ、と書いてあります。)

マスストレージとして認識されているCPLAYBOOTに先ほどダウンロードしたadafruit-circuitpython-circuitplayground_express-3.1.2.uf2をドラッグ&ドロップで書き込むと、USBコネクタ脇の小さな赤いLEDが高速で点滅した後、フルカラーLEDが一つだけ一瞬白色で点灯、その後、一旦CPLAYBOOTというボリューム名のマスストレージは閉じて、今度はCIRCUITPYというボリューム名のマスストレージが開きます。これがCircuitPythonとして扱われるドライブのようです。

公式サイトでは、Windows/MacOS/Linux用にMu Editorというのをインストールするよう勧めていますので、試してみます。

$ sudo apt-get install python3
$ sudo apt-get install python3-pip
$ sudo apt-get install python3-setuptools
$ pip3 install mu-editor

公式サイトのままだと、Setuptoolsがないというエラーが出てしまいますので、先に python3-setuptools をインストールしておきます。また、上記手順のあと、コマンドラインから

$ mu-editor

でmu-editorを起動できるような記述がありますが、一旦再起動(たぶん、ログアウトして再ログインでOK)しないと起動しませんでした。

起動すると、モードの選択が出てきます。

ここでは、一番上の「Adafruit CircuitPython」を選択して、OKをクリックします。
クリックするとコード編集画面に変わります。

公式ページからサンプルコードをコピペします。

これをCIRCUITPYの下にcode.pyという名前で保存すると、LEDが点滅するはずです・・・・・が、点滅しません。別のエディタで見てみると、ファイル自体は存在しているようです。試しに、リセットしてみると・・・・現れたドライブにはファイル名は存在するものの、ファイル自体は空っぽになっていました。何度やっても同じです。
試しに、USBケーブルを抜いて電源を再投入してみると、以降は期待した動作をするようになりました。sleepのパラメータを変えて保存すると直ちに、点滅周期が変わります。

参考:
adafruitのCircuitPythonのページ

MPLAB SNAPのケースを作ってみた

Microchipからリリースされた新しいPIC(だけじゃなくて、AVRとかも扱えるらしい)用デバッガ・プログラマのSNAPが秋月にあったので買ってきました。

いままでのPICkitと違って、こいつはケースがなく、基板剥き出しです。必要なら3Dプリンタで自分でケースを作ってね、ということみたいです。

・・・というわけで、作ってみました。

例によって、スナップフィットで蓋を固定するようにしたので、3Dプリンタで出力した2つの部品以外は必要なく、なかなかいい感じになりました。

LEDの部分は穴を開けるのではなく、厚さを薄くしてありますので、LEDが点灯すると透けて見えます。中にゴミなどが入る心配がないのがいいところです。

秋月GPSモジュールいろいろ

3年ほど前に試してみたGPSモジュールですが、久しぶりに発掘したのでいじってみました。

1.ケースを作ってみた

これまで、とりあえず動かしてみた後放置する原因の一つはむき出しの状態や見栄えの悪い状態で使わざるを得ないことでした。そこで今回はケースを作ってみました。

できるだけ3Dプリンタで出力した部品だけで済ませたいところですが、手を抜いたこともあり、今ひとつといったところです。

2.LinuxMint19で動かしてみた

3年も経っているので、Linux側もそこそこ変わっています。同じ手順で動かしてみようと思ったのですが、思うように動きませんでした。次回動かすためのメモを残しておきます。

(1)動かすのに必要なもの
synapticで、「viking」「gpsd」「gpsd-clients」をインストールします。

(2)USBシリアルを認識、操作できるようにします。
ユーザーをdialoutグループに所属させます。所属させないと /dev/ttyUSB* へのアクセス権がありません。グループに所属させたら、一旦ログアウトしてログインし直します。

(3)PCに接続します

(4)GPSモジュールからデータが来ているか確認します。

$ gpscat -s 9600 /dev/ttyUSB0

(5)gpsdにGPSモジュールを登録します
ここが前回と違うところです。前回はこんなことした記憶がありません。

$ sudo gpsdctl add /dev/ttyUSB0

(6)Vikingで地図上に表示します
操作は概ね同じですが、MapTypeのOpenStreetMap(MapQuest)は変更が必要です。
「Start Realtime Tracking」すると、綺麗に軌跡が描かれるようになりました。

3.GPSモジュールのファームウェアアップデート

秋月の製品ページを見ると、新しいファームウェアがリリースされていて、みちびきの複数機同時運用に対応していました。で、ファームウェアをアップデートしようとアップデートモジュールをダウンロードしたあたりから雲行きが怪しくなりました・・・。
アップデートのためのソフトウェアはWindows用なのですが、PL2303はWindows10では認識しないのです。FT234Xに交換してもいいのですが、FT234XはLinuxでまともに動作しません。うーん、複数機同時対応、試してみたかったんですが・・・。

DarkStarを動かしてみた

歴史遺産ともいえる、Xerox Starのエミュレータがgithubでリリースされたようです。エミュレータ自体はこちらで、ドキュメントはこちらで参照できます。

LinuxMint19上で実際に動かすには、まずこちらに従って mono をインストールします。

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$ echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list<br>$ sudo apt update
$ sudo apt install mono-devel

次に、必要なライブラリをインストールします。

$ sudo apt-get install libsdl2-2.0

ダウンロードしたエミュレータを展開します。

$ mkdir DarkStar<br>$ cd DarkStar/
$ unzip ../ダウンロード/DarkstarMono.zip

エミュレータを起動します。

$ mono Darkstar.exe

しばらくすると、上の方にメニューバーと下の方にステータスバーのついたエミュレータウインドウが開きました。
この状態だと、ハードディスクイメージがないので、ハードディスクイメージを取ってきて展開します。

$ wget http://bitsavers.org/bits/Xerox/8010/8010_hd_images.zip
$ unzip 8010_hd_images.zip 
  Archive:  8010_hd_images.zip
    inflating: Interlisp-D-Harmony.img  
    inflating: ViewPoint-2.0-11-9-1990-18-38.img  
    inflating: XDE-5.0.img 

ダウンロードしたハードディスクイメージをセットします。
「System」⇒「Hard Disk」⇒「load」でイメージを指定します。今回は、ViewPoint-2.0-11-9-1990-18-38.imgを指定してみました。
その後、「System」⇒「Start」で起動するのですが、セルフテストの画面をたくさん表示した後、フリーズしてしまうようです。
「System」⇒「Alternate Boot」で「Rigid」を選んでおくと、セルフテストをスキップして起動するようです。しばらくすると、

ダイムゾーンの設定画面になりました。ここでは -9 を入れてみます。
・・・・が、キーマップがおかしいようです。数字だとキーが一つずれている感じです。

一旦停止させて、ディスクイメージを XDE-5.0.imgに切り替えて、再起動してみました。しばらくしたら、

2値ビットマップのウインドウ表示がされました。渋いです(笑)