Giter Club home page Giter Club logo

runcpm_pico_dvi_usb_keyboard's Introduction

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 のボードマネージャとライブラリマネージャーで更新を行って、出来る限り新しいバージョンを使用してください。

おまけ

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

runcpm_pico_dvi_usb_keyboard's People

Contributors

hisashikato avatar

Stargazers

 avatar Andre Skarzynski avatar  avatar Maki Kato avatar  avatar  avatar

Watchers

 avatar

Forkers

svenmb

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.