あけましておめでとうございます。
去年はCOSMACとTVディスプレイ回路で2020年の書き初めをしましたが、今年は最近購入したM5Paperで年越しをしてみました。
M5Paperはまだ発売されて間もなく、Arduinoのライブラリにもつい最近登録された状態であまり事例がありません。メーカーから提供されているAPI仕様をみながら、サンプルプログラムを組み合わせて、試行錯誤でプログラミングしてみました。
今回作成した年越しプログラムは時計のように時刻を表示して、年を越した瞬間に画像を表示するという単純なものです。
せっかくの電子ペーパーなので、TrueTypeフォントをSDカードに入れて、ピッタリくるフォントを表示してみました。
年を越した直後のM5Paperの画面です。

最近ずっとCOSMACばかりでしたので、@yanatokuさんからいただいたV20-MBC基板を組み立てることにしました。
説明ページは以下にあります。
なお、オレンジピコショップさんでもV20-MBC基板を扱っているようです。
私の場合、少しパーツが不足していたので、Maker Faire Tokyoが終わったあとに秋葉原に買い出しにいきました。

いつ出るのかと以前から話題になっていたZ80本「ザイログZ80伝説」がついに発売になりました。
この書籍ではSBCZ80というシングルボードコンピュータが紹介されています。SBCZ80の特徴としてはDRAMとZ80 SIOを使っていることではないでしょうか。
私の手持ちのパーツを確認したところ、Z80シリーズはほぼそろっています。オレンジピコショップさんから専用基板も発売になりましたので早速購入してくみたててみました。

armbianをインストールして順調に稼働しているNano Pi NEO NASキットベースの自宅サーバーですが、ちょっとした遊びごごろで負荷をかけてみました。使用したソフトウェアはUNIXBENCHです。パッケージはありませんのでコンパイルする必要があります。
$ git clone https://github.com/kdlucas/byte-unixbench.git
$ cd byte-unixbench/UnixBench/
$ ./Run
コンパイルが終わると、次のような表示になりベンチマークが始まります。

Z80-MBC2とは
Z80-MBC2というワンボードマイコンがあります。Z80 CPU、メモリ(SRAM)とブートローダーの役割をするATMEGA32、あとは汎用ロジックの74HC00というたった4つのICで構成されています。
公式サイトはこちらです。組み立てに必要なドキュメントやスケッチはこちらから入手できます。
基板はこんな感じです。特徴としてはmicroSDやRTCを接続できるコネクタがあることです。

ATMEGA32の中にはArduinoのブートローダーが書きこまれています。これでArduinoと同じようにスケッチを動かすことができます。そこでZ80のブートローダーとなるスケッチを動かすことで、指定されたプログラムを、Z80のRAMに書き込んでZ80 CPUに制御を渡すことができます。
私だけかもしれませんが、最近不良メモリにあたることが多く、マイコンボードの動作不良の原因切り分けに時間がかかることが多くなってきました。レガシーなメモリだと代替品も入手に時間がかかるので交換してテストしたくてもできないことがあります。
そこで問題切り分けが迅速に行えるようにArduino MEGAで簡易的なメモリチェックをおこなってみました。なおアクセスタイムや書き込みパターン、テストアドレスの範囲など意識した厳密なメモリチェックではありませんのでご注意ください。
ターゲットはこのHM6264ALSPです。このメモリは28Pですが幅が狭いパッケージになっています。なかなか売っているものではありません。

6264のピン配置は以下のようになっています。

Arduino MEGAはたくさんのGPIOを持っていますので、それを利用してSRAMの読み出しと書き込みに必要な信号を作ります。接続方法はスケッチに書いておきました。実体配線図は以下のようになります。線は多いですけど順番に接続すれば大丈夫です。チップセレクトは常時イネーブルされている状態にしますので、CS1はGNDに、CS2はVccに接続します。

久しぶりにSB-Projectsのサイトに行ったらSB-Assemblerが PythonベースのVersion 3になって、新たにAVRやPICをサポートしていてびっくりしました。これまでのSB-AssemblerはDOSベースのため、Windows 64bitで動かす場合はMS-DOS playerといったツールを使う必要がありました。
今回、Pythonベースになったことで、UNIX/Mac/LinuxはPython3があればすぐ動きますし、WindowsもWindows用のPython3をインストールすることで使えるはずです。
このSB-Assemblerはディレクティブが少し独特な面もありますが、多数のCPUをサポートしているので便利です。
今回、新しいVersion 3を使ってみました。
ダウンロードはSB-AssemblerのDownload pageから行います。
私の場合は、Windows10の環境で、WSLを使っていますので、そちらにインストールしました。
WSLでの環境構築の手順
- まずブラウザでダウンロードします。
- ダウンロードしたファイルをWSLのホームディレクトリにコピーします。
- unzipで展開します。
- 展開したフォルダの中にあるsbasm本体とsbapackディレクトリを/usr/local/binにコピーします。WSLの場合はsudoを使ってコピーしてください。
- PATH変数に/usr/local/binが含まれていることを確認してください。
- python3がインストールされていない場合はsudo apt install python3 でインストールしてください。
- 環境が整えば sbasm と入力すると以下のように表示されるはずです。

- これで環境構築は完了です。
無事SBC8080ルーズキットが動作したところで、8255を接続したくなってしまいました。
昔PC-8001をつかっていたのですが、拡張バスからケーブルを引き出して8255を接続していろいろ制御していました。同じことがまたできるかなと。
というわけで早速設計開始です。といっても8080に8255は簡単に接続できます。ざっと書いた回路図は以下の通りです。いつもの切り貼り+手書き回路図ですのできれいではありません。

すでに、IOポートの00H~3FHはSUBボードの8251で使われているので、ここと重ならないように40Hから割り当てることにしました。
8255はポートA,B,Cを持っています。それぞれが8bitですので、ポート出力は10Pのコネクタとし、8ビットポートの出力と+5VとGNDもコネクタに接続しました。
基板は秋月電子のB基板と同じサイズとのことなので、仮組みをしてみました。

サイズもぴったりでいい感じですね。これで実装イメージがわきました。
電脳伝説さんのサイトで公開されているSBC8080という8080CPUを使ったマイコンボードのパーツがようやく揃ったので組み立ててみました。なお、このサイトで技術資料とデータパックが公開されていますので、専用基板が無くても組み立てることができます。でも、専用基板を使うのがおすすめです。(カッコいいし)
今回、集めた主要部品を並べてみました。

今回は256Kbit RAMは秋月電子のSOPチップをピッチ変換ボードに載せて使っています。
8080CPUはオレンジピコさん、8228、8224は若松通商さん、8251は手持ちです。その他は秋月電子さん、千石電商さんなどで集めました。やはり8080系のチップは取り扱いがなかなか無いですね。
さて製作開始です。

前回はL-STAR PLUSの基板のはんだ付けと電源ラインの確認まで行いました。続いて、向きを間違えないように注意しながらICソケットにICをとりつけます。
今回はL-STAR PLUSのキットではありませんので、ICにファームウェアが書きこむ必要があります。
そこでPropeller ToolとProp Plugを使ってファームウェアを書き込みます。書き込み方法はWebサイト https://www.l-star.org/ や、GitHub https://github.com/jacgoudsmit/L-Star/ を参照してください。ちなみに基板はKiCad (4.0.4)で作られたようです。

今回はApple1用のファームウェアを書き込みました。
Prop plugがシリアルコンソールとして動くようなのでこの状態でリセットをして、Propeller Toolのシリアルモニタをみたところ、

無事起動しているようです。