Skip to content

HisashiKato/RunCPM_Pico_DVI_USB_Keyboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RunCPM_Pico_DVI_USB_Keyboard

Summary

This is a Raspberry Pi Pico (RP2040) ported version of RunCPM (Z80 CP/M emulator) that incorporates PicoDVI and USB Host (USB OTG) to support output to an HDMI display and input from a USB keyboard.

Raspberry Pi Pico + microSD + HDMI Display (PicoDVI) + USB Keyboard (USB OTG)
RunCPM (Z80 CP/M Emulator Arduino RP2040)

概要

これは、RunCPM (Z80 CP/M エミュレータ)の Raspberry Pi Pico (RP2040) 移植版に、PicoDVI と USB Host (USB OTG) を組み込んで、HDMIディスプレイへの出力とUSBキーボードからの入力に対応させたものです。

注意事項

私の環境では、一応それなりに動いています。ですが動作保証はしません。ユーザーサポートもしません。使用は自己責任で。何か問題があっても自分で何とかしてください。

私は商用のプログラムのコード等は書いたことが無い素人で初心者なので、多分、色々と間違っていると思います。 ここのソースコード内の私が書き代えた部分をプロの人やC/C++の熟練者が見たら「なんでこんなコードの書き方をするんだよ!」と怒りさえ覚える人がいるかもしれません。 もし居ましたら、これをフォークして、添削や清書をして頂ければと思います。

オープンソースなので、ライセンスの範囲内で自由に使ってください。遊んでみてください。

以下が元になっています。

RunCPM - Z80 CP/M emulator (オープンソースの Z80 CP/M エミュレータ)
https://github.com/MockbaTheBorg/RunCPM

RunCPM for the Raspberry Pico (RunCPM の Raspberry Pi Pico 移植版)
https://github.com/guidol70/RunCPM_RPi_Pico

RP2040 RunCPM Emulator with USB Keyboard & HDMI screen (Adafruit社の自社製品RP2040ボードを使用した作例)
https://learn.adafruit.com/rp2040-runcpm-emulator-with-usb-keyboard-hdmi-screen

Adafruit の"RP2040 RunCPM Emulator with USB Keyboard & HDMI screen"を読んだ際に「これ、Raspberry Pi Pico 1枚で済むんじゃね?」と疑問に思って、作ってみたところ、出来ました。
その時は動けばいいやで作っていたので、今回、中身を整理して公開することにしました。

基本的には、Adafruit の"RP2040 RunCPM Emulator with USB Keyboard & HDMI screen"と同じなので、まず先に、そちらをよーく読んでください(Arduino IDE やライブラリの設定、microSDカードに入れる CP/M ファイルの準備など)

ハードウェア

Adafruit の作例では、RP2040搭載ボードを2枚、使用していますが、このスケッチ(プログラムソース)では、Raspberry Pi Pico を1枚だけ、使用します。 他には、

  • microSDカードスロットボードと、microSDカード
  • PicoDVIボード(HDMI映像出力用)と、HDMIディスプレイ
  • USB OTG ケーブル(USBキーボード接続用)と、USBキーボード
  • 5V電源

今回のプログラムソース(Arduinoスケッチ)では、下記のピンアサインになっています。(Serial1 の入出力が生きています、同時使用が出来ます)


Raspberry Pi Pico (RP2040) は、ピンアサインが比較的柔軟に設定できるので、各自の環境に合わせて書き直して使用してください。 PicoDVIボードのピンアサインに関しては、私のブログでも説明しています。

Raspberry Pi Pico (RP2040) と、PicoDVI用コネクタと、Arduino用PicoDVIライブラリで、HDMIディスプレイに映像出力を試した話(覚え書き)
http://kato-h.cocolog-nifty.com/khweblog/2023/12/post-ec5830.html

ソフトウェア

Adafruit の"RP2040 RunCPM Emulator with USB Keyboard & HDMI screen"の以下のプログラムソースを元にしています。

https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/runcpm-rp2040-dvi-usb

Adafruit の作例では Pico-PIO-USB を使用していますが、動作周波数の関係で Pico-PIO-USB と PicoDVI は共存が出来ないので、RP2040(Raspberry Pi Pico のMCU)内蔵のUSBコントローラを USB Host で使用しています。

Arduino IDE で "RunCPM_v6_1_Pico_DVI_USB_Keyboard.ino" を読み込んで、以下の設定でコンパイルしてください。
ツールの、

  • ボード:"Raspberry Pi Pico"
  • Optimize:"Optimize Even More (-O3)"
  • USB Stack:"Adafruit TinyUSB Host"
    ( "Adafruit TinyUSB Host" を選んでいるにも関わらず warning が出たりしますけれど大丈夫っぽいです)

※ぱいぴこの USB を USB HOST で使用すると、それ以降そのままでは USB からのスケッチ(プログラム)の書き込みが出来ません。
スケッチを書き込む際は、ぱいぴこのUSBコネクタから USB OTG ケーブルを抜いて、BOOTSELボタンを押しながらPCのUSBケーブルを繋ぐか、PCのUSBケーブルを繋いだ状態でBOOTSELボタンを押しながらRESETボタンを押すと、Arduino IDE のシリアルポートに "UF2 Board" が現れるので、そこに書き込みを行ってください。

※Raspberry Pi Pico / RP2040 の Arduino Core や、使用するライブラリ群は、出来る限り新しいバージョンに更新してください。
特に Raspberry Pi Pico / RP2040 の Arduino Core と Adafruit TinyUSB Library for Arduino は、昔のバージョンでは RP2040 のネイティブUSBホストに対応していないため、USBキーボードが使用できません。
Arduino IDE のボードマネージャとライブラリマネージャーで更新を行って、出来る限り新しいバージョンを使用してください。

※2024年09月14日現在、ボードマネージャーで RP2040 の Arduino Core を 4.X.X に上げると、コンパイルエラーになります。

暫定対応方法
コンパイルエラーが
\Arduino\libraries\PicoDVI_-Adafruit_Fork\src\libdvi\dvi.c:194:68: error: 'dma_debug_channel_hw_t' has no member named 'tcr'
ならば
\Arduino\libraries\PicoDVI
-_Adafruit_Fork\src\libdvi\ フォルダの dvi.c の194行目の
'tcr' を 'dbg_tcr' に書き換えて保存

おまけ

元のプログラムソースでは英語キーボードの使用が前提になっていますが、今回おまけで日本語キーボードでの入力に対応させてみました。 RunCPM_v6_1_Pico_DVI_USB_Keyboard\hardware\pico にある "pico_sd_spi_dvi_usbkey.h" 内の「#include "keymapperUS.h"」を「#include "keymapperJP.h"」に書き代えると、日本語キーボード配列になります(記号等の入力が日本語キーボード準拠になります)。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages