フォト
2025年3月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ

« 2018年11月 | トップページ | 2019年1月 »

2018年12月の8件の記事

2018年12月28日 (金)

MP3プレーヤーでMSXにプログラムをロードさせる

先日のブログ投稿CASduinoのコメントにてタイムリーな記事を教えて頂きました。

日経XTECH - 「今さらやるか? MSX用テープ版ソフトをPCMレコーダーでバックアップ


記事を読むとPCM形式はOKだが、MP3形式の録音では、MSXでロード出来なかった
ことが記載されています。
ググってみると、他にもPCMではOKだが、MP3ではダメという状況のようです。
参考:
   MSX研究所日記 - 蘇れ!カセットテープ ~MSX実機派の貴方へ~


実は、CASduinoの次のステップとして、MP3形式で録音・再生をやろうと思い
下の写真のシールドをポチってました。
ArduinoでSDカードへの録音・再生が制御できるシールドです。

06

MP3がダメだと、これが無駄になるので本当にダメかを試してみました。


MP3形式の音声データファイルの作成
カセットテープの音声形式のデータを作成するにあたり、次のツールを利用しました。
  (1) MSXエミュレータ;WMSX
       エミュレータ上で作成したプログラムをCAS形式で保存することが出来ます。
  (2) MCP - MSX CAS Packager (https://github.com/apoloval/mcp)
       色々と機能がありますが、
       CAS形式ファイルからWAVE形式ファイルを作成することが出来ます。
  (3) fre:ac (https://forest.watch.impress.co.jp/library/software/bonkenc/)
       WAVE形式ファイルをMP3形式に変換できます。

1.WMSXでCAS形式ファイルの作成

   01

   エミュレータ上で簡単なプログラムを作成し、CAS形式ファイル: hello.cas  を作成します。

2. MCPコマンドでhello.casからhello.wavを作成

  07

  コマンドのエクスポート機能を使ってWAVE形式ファイルを作成します。
 
  作成されるWAVE形式ファイル1200ボーレート固定のようです(ソースを見ての推測ですが..)。
  MSXエミュレータ2400ボーレートの設定をしても1200ボーレートと全く同じファイルが
  生成されました。

3. fre:acでmp3に変換

   08

   09

   設定はstandardにしました。


MP3プレーヤーで再生し、MSXにロードさせる

  作成したMP3ファイルをMP3プレーヤーに突っ込んでMSXに読ませます。

  Dscn9227

  MSXは先日入手した、PV-7を利用しました。
  付属品のカセットテープインタフェースが活用出来ました。
  ケーブルをMP3プレーヤーのイヤホンジャックに接続します。

  Dscn9236

  利用したMP3プレーヤーは、以前Aliexpressで購入した安価な製品です。

  05


  早速、MSXにてCLOADコマンドを実行し、MP3プレーヤーで再生すると、


  果たして結果は....

  ちゃんとロード出来ました。

  Dscn9233

  ロードしたプログラムはちゃんと実行できました。

  Dscn9234

  ちょっと見にくいので、キャプチャした画面を見てみましょう。

  20181228201108

こんな感じで、無事にロード出来ました。

ただし、今回の方法では実際の録音は行っていません。
ノイズの混入もなく、音量レベルもかなり良好であるためうまくロード出来たと思います。
逆にちゃんと録音出来れば、MP3形式でもOKといえますね。

2018年12月25日 (火)

CASduinoを試してみました

Arduinoカセットテープ ドライブをエミュレートする、CASduinoとういのを見つけ、
面白そうなので、試してみました。

昔(30年前)の8ビットパソコンのプログラム保存方法といえば、
カセットテープが標準的な方法でした。「ピー、ガー・ガ―」と音で記録保存します。
CASduinoは、「ピー、ガー・ガ―」音を生成してMSXにプログラムとしてロードさせるものです。

01

参考にしたサイト
・MSX – Arduino as Tape Drive (CASDuino)
  https://modelrail.otenko.com/arduino/msx-arduino-as-tape-drive-casduino


動作の様子

カセットテープをプログラム保存メディアとして使ったことが無い世代の方には
意味不明な動画かもしれません。

MSXは、ヤフオクで1,000円で落札したSANYO MPC-2 WAVY2 を利用しました。

上の動画では、
ブラウザ上で動くMSXエミュレータWMSX(https://webmsx.org)で作成した
カセットテープイメージ形式(CAS形式)のプログラムを実機のMSXに読み込ませています。

CAS形式のファイル(拡張子.CAS)は、カセットテープの音声データを、
バイナリーデータ化したのもで、MSXの世界では標準的に使われているようです。
そのファイルの作成にあたり、MSXエミュレータWMSX を利用しました。

04

1行プログラム("hello,world"を表示)を、
CSAVEコマンドでカセットテープ(当然エミュレータ)に保存します。

05

エミュレータのメニューでブランクのテープの作成し、CSAVEコマンドで
保存したプログラムを更にCAS形式のファイルとしてSDカードに保存します。
ここでは、"hello.cas"という名前で保存しました。

このファイルをCASDuinoで実機のMSXに読み込ませることが出来ます。


CASDuinoの製作について

CASDuinoの実装は、手持ちのSDカードロガーシールドをベースとして、
先日購入したキャラクタ液晶をI2Cで接続しています。

CASDuinoの最新版V1.1.7のソースを見ると、
表示デバイスはOLED(SSD1306)ディスプレイ、 P8544モノクログラフィックディスプレイにも
対応しているようです。

データ通信速度は、最大速度で 3675ボーレートまで対応しているようです。
MSXの仕様では1200、2400ボーレートが利用出来るのですが、MSXBIOSレベルでは
3600ボーレートにも対応しているようです。
更にちょことだけ、オーバースペックの3675ボーレートも機種によっては利用出来るようです。

04_2

とりあえず、3600ボーレートで利用しました。
ボーレートの設定は、内部EEPROMに保存することが出来ます。
以降の利用では、再設定不要です。

データ出力(音声)は、矩形波を生成して出力してます。
圧電スピーカーを付けるとモニター出来ます。

ピンからの出力だけではレベル不足になるようで、参考にしたサイトでは
アンプモジュールを利用して増幅しています。
私も同じものを利用しましたが、オペアンプやトランジスタを使った増幅でも
行けると思います。

03

比較的実装は楽でしたが、MSXに接続するための8ピンDINコネクタが類の入手が
意外と困難でした。

結局、Aliexpressにてパーツを見つけました。

07

06_2

DIN 8ピンオス - オス ケーブルを自作しました。


最後に

さてこの、CASduino、残念ながらデータのセーブに対応していません。
データのロード専用となります。

用途としては、ゲームローダ専用機のようです。
インターネット上に公開されているCAS形式のゲームイメージをSDカードにいれて
ロード出来ます。
MSXでプログラムをロードする手段としては、安価でお手軽な手段なのは確かです。

ただし、3600ボーレートとだと、
450バイト/秒なので32Kバイトのゲームをロードするのに73秒、
ヘッダー部やらいろいろと入れると2分はかかると思います。

プログラムの保存も含め、何にか別の手段を模索中です。

追記

実験的に実装したCASduino、このままでは使いにくいので、
ユニバーサル基板に実装し直しました。

Dscn9222

裏側にArduino Pro miniを使っています。
ディスプレイはOLEDに変更しました。
裏には、同じ基板をかぶせて保護するようにしています。

Dscn9212

3.3V電源のみ対応の小型のマイクロSDカードスロットを使いたいため、
5V 16MHz版 Arduino pro miniを3.3Vで動かしています。

マイクロUSBコネクタから5Vを三端子レギュレータで3.3Vに落として
全体の電源として利用しています。

Dscn9226

とりあえず、いい感じに利用出来るようになりました。

Dscn9221

ちょっとしたプログラムの持ち運びに利用出来るでしょう。

2018年12月22日 (土)

Aliexpressの安価なキャラクタ液晶モジュールの動作確認

Aliexpressで安価なキャラクタ液晶モジュールを見つけ、購入しました。

1602 16x2 HD44780 for Arduino Character LCD /w IIC/I2C Serial Interface Adapter Module DIY KIT

01

16文字 x 2行 のパラレル接続の液晶モジュールと I2C変換モジュールがセットで$2.17です。

到着した製品

梱包も中身も特に問題なし。

Dscn9168

Dscn9169

基板の刻印や、乗っているICを調べてみると、それぞれのモジュールは、
・フィリップス社製PCF8574(8-bit I/O expander for I2C-bus)搭載モジュール
・1602A(16x2 コントローラHD44780)
のようです。

aitendoで販売されている、下記の製品とまったく同じもののようです。
液晶I/Fモジュール(I2C) [IFB-I2C-8574]   
STNキャラクタ液晶(16x2) [1602A-V2] の青色(1602A-V2-B)バージョン

説明書が無いのですが、裏側にはんだ付けするだけで良いようです。

Dscn9171

左側の4つの端子(I2C、GND、5V)だけで制御出来ます。
可変抵抗でLEDバックライトの調整が出来るようです。

早速、はんだ付けしてArduinoに接続して動作確認してみました。

Dscn9189

手持ちのデジカメでは、今一ちゃんと撮れていませんが、
見た目は写真よりも文字がくっきり表示出来き、視野角も広いです。

Dscn9185

動作確認には、下記のライブラリを利用しました。

利用ライブラリ
・LiquidCrystal_I2C
  https://github.com/johnrickman/LiquidCrystal_I2C

動作確認スケッチ

ライブラリに添付のサンプルプログラムのHelloWorldを少々修正しただけです。
(4行表示するメッセージを2行表示に修正)

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup() {
  lcd.init();                        // initialize the lcd 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print(" Hello, world!");
  lcd.setCursor(0,1);
  lcd.print(" LCD 1602A(I2C)");
}  


void loop() {

}

安くてお手軽に使えて良い製品です。
このモジュールは、MSX用のテープ・ドライバ CASDuinoを製作に使う予定です。

2018年12月20日 (木)

BASICマガジン復活!?

BASICマガジン復活ということで、「電子工作マガジン 2018年冬号」を
楽天て注文し、本日到着しました。

「電子工作マガジン 2018年冬号特別別冊附録」の形式ですが、独立した書籍であるため、
復活といって良いでしょう。

Dscn9158

ちなみに裏の広告は、イオシスでした。
イオシスの代表取締役の中本さんはBASICマガジンに思い入れがあるようです。

Dscn9159


実は私も中学生の頃、投稿して投稿して、掲載されたことがあります。
たしか、本誌の掲載の原稿料として1万円、別冊掲載で5千円頂きました。

私もプログラミングの初歩はBASICマガジンで学びました。

BASICマガジン、今後は完全独立となるのでしょうか?

2018年12月18日 (火)

ジャンク品のMSXの修理 その3

ヤフオクで入手した3台目のMSXパソコンを修理しました。

3台目 カシオ計算機 PV7 (1984年[昭和59年] 10月発売の機種)

Dscn9115

出品内容:
本体、ACアダプター(10V)、カセットインタフェース、ジョイスティック、
ゲームカセット4本、良く分からない外付けスピーカー、良く分からない充電器
動作確認で電源入らずとの記載あり

4,980円 で落札しました。
少々割高な気もしましたが、調べると、カセットインタフェース、ジョイスティックは
オプションパーツで、それそれ3,200円、2,900円するそうで、ゲームもついているので
むしろお得でしょう。


動作確認と修理

動作確認すると、出品者の製品記載の通り、電源が入りませんでした。
問題箇所を、ACアダプタ、本体電源コネクタ、本体内部電源回路と順番に調べていくと、
背面のシーソー型スイッチが怪しい。

Dscn9024

シーソースイッチを分解すると、
中が錆びていて、小さな錆びた鉄球が出てきました。

とりあえす、接点を磨いて綺麗にします。
この2枚の金属の上を鉄球が移動するすることで、電源がON・OFFする構造のようです。
鉄球が山を越えるときに、「カチ」っとの感触でシーソーが上下します。

Dscn9022

鉄球の代わりに、直接ピンセットで挟んで通電させてみると

Dscn9020

電源ランプが点灯しました。

Dscn9021

とりあえす、稼働出来ました。

次にシーソースイッチをどう修理するか悩みました。
「そうだ、代替え鉄球を見つけよう」
といことで、余っていたキャスターからベアリングの鉄球を取り出しました。

Dscn9044

シーソースイッチを組み立てて、装着すると、
「カチ、カチ」という、感触で電源のオン・オフを行うことが出来ました。

(ここで、シーソースイッチの分解・組み立て作業の写真が欲しいところですが、
非常に神経を使う手作業だったため、写真を撮ることが出来ませんでした^^; )

Dscn9023

画面もちゃんと映りました。

キーボードのいくつかが、反応しなかったため再度分解し、フレキシブル基板の接点を
掃除したところ、ちゃんと入力出来るようになりました。

20181218183448

このMSXパソコン、RAMが8kバイト搭載のため、残りメモリが4239ですね。
あまり、大きなプログラムの作成は出来ませんが、
小さく、軽くていい感じのマシンです。
机の上でのスペースを取らず、ちょっとした調査に利用出来そうです。


今回の落札品、出品説明にはマニュアル添付の記載が無かったのですが、
マニュアルが付いていました。

3冊の薄い冊子ですが、記載内容が分かりやすく、
私にとっては、本体よりもこちらの方が価値があり、ありがたかったです。
30年前のパソコンのマニュアル、ちょっとワクワク

Dscn9033

30年前のパソコンのマニュアル、取扱説明書みたいな堅苦しさはなく、
全体的にパソコン入門風の解説です。

Dscn9035

BASICを使った、プログラム作成まで解説しています。
ちょっとしたゲーム作成の解説なんかもあり、非常に良い内容です。

Dscn9036

30年前の製品のマニュアル、今でもプログラミングの教本として利用出来る内容です。

                                                                                                                   

2018年12月13日 (木)

豊四季Tiny BASIC for Arduino STM32 をV0.87に更新しました

豊四季Tiny BASIC for Arduino STM32 をV0.87に更新しました。

 

公開サイト
・豊四季タイニーBASIC for Arduino STM32V0.87β
  https://github.com/Tamakichi/ttbasic_arduino_stm32

 

  テストが不十分でβ版です^^;

マニュアルの作成がまだまだ進まないのですが、とりあえすコマンドリファレンスを
V0.87対応に更新しました。

・「豊四季タイニーBASIC for Arduino STM32」 コマンドリファレンス(更新中)

 

 


V0.87の主な追加機能


・漢字フォント利用の対応(SDカード上のシフトJISコードフォントファイルを利用)
   - KANJI コマンドによる全角文字列の描画が出来る
   - SETKANJI コマンドで全角文字描画時のフォントサイス等の設定が出来る
   - KFONT コマンドによる、漢字フォントデータの取得が出来る

・内部フラッシュメモリのプログラム保存領域の直接書き換え対応
   - 仮想化ドレスPRG2 の追加
   - BANK コマンドの追加
   - FWRITE コマンドの追加、
   - BLOAD コマンドの機能強化でバイナリファイルに直接書き込みに対応

   この機能は少々危険ですが、プログラム保存領域4096バイト x 6本の領域を
   有効利用するために、データを配置して利用出来たら.. と思い追加しました。
   
   SDカード上のバイナリーファイルをBLOADコマンドでフラッシュメモリに
   読み込んだり出来ちゃいます。
   ファイルからちょっとした画像や文書データを読み込んで配置出来ます。

・バイナリファイル操作の機能強化
   - BLOADBSAVE コマンドで、ファイル内読み書き位置を指定可能にしました

   ちょっとしたレコードファイルの構造を実現できると思います。

・文字列比較関数の追加
   - STRCMP 関数を追加しました

・グラフィック描画関連のコマンド追加
   - GCOLOR GCLS コマンドの追加

・その他

 

   いくつかの不具合対応を行いました


ここで、あらためて補足ですが、

 

豊四季Tiny BASICのオリジナル版開発は私ではなく、鈴木氏です。

 

私は、オリジナル版をSTM32対応し、機能拡張しているのみです。
オリジナル版  https://github.com/vintagechips/ttbasic_arduino


今後の予定としては、機能追加はこのあたり迄として、
ドキュメントの充実、BASICプログラムの作成、基板作成を行っていこうと思っています。

 

 

 

 

2018年12月 7日 (金)

豊四季Tiny BASIC for Arduino STM32で日本語フォント利用対応中(4)

豊四季Tiny BASIC for Arduino STM32の日本語フォント対応版、
ちびちびとドキュメント類を作成しています。
ドキュメント作成は、モチベ―ジョンが下がり、なかなか作業が進みません。

今回は、リファレンスマニュアルよりも先に「早見表」(クイックリファレンス)を
先に作成しました。PDF化して添付を予定しています。

 

Dscn9093

パウチして、傍らにおいて参照する感じでの利用を想定しています。

 

Dscn9091

コマンド、編集キー、ボードピン配置、ピン用途一覧、結線図の
7ページにまとめています。

 

01

コマンド一覧を1枚に収めるのにちょっと苦労しました。

 

02

ピン割り付けと、起動時のコンソール選択の設定関連のシート

 

03

英語版も作成したいところですが、とりえずは後回しです。

追記

このドキュメントをブランチの方に追加しました。
ttbasic_arduino_stm32/TinyBASIC早見表.pdf

 

 

2018/12/08 修正

マスターブランチにマージしました。
早見表は下記のリンクからの参照となります。
ttbasic_arduino_stm32/TinyBASIC早見表.pdf

キーワード一覧(簡易コマンドリファレンス) キーワード.html追加しました。

 

 

04

 

 

2018年12月 1日 (土)

ジャンク品のMSXの修理 その2

調子にのって、ポチってしまった2台目MSXの修理です。

2台目 SANYO MPC-2 WAVY2

Iimg360x4801540566898yxoeq3157157_2
(写真は、出品者掲載のものを拝借しました)

通電のみ確認、カセットのふた破損、ジャンク品あつかい、付属品無し
こちらも1000円で落札、入札は私のみでした。


動作確認と修理

電源は問題なく入りましたが、映像が映りません。
「ありゃ」っと思ったのですが、コンポジット端子を「ぐりぐり」と回したりすると
一瞬映像が映ったので、端子の接触不良と判明。

端子をメガネクリーナーをしみこませた綿棒で掃除したら、
ちゃんと映像が映りました。

キーボードの全キー入力チェックも問題なし。

掃除を兼ねて分解しました。
基板の状態は良く、特にメンテナンスする必要なしでした。

Dscn9009

カートリッジのふたはの修理にちょっと手こずりました。
本体内部に破損部とねじりばねを発見し、接着剤等での補修を試みたのですが、
負荷かかる箇所のため、直ぐに取れてしまいました。

結局、加熱した針金を挿入して補修しました。

Dscn9006

ふたを装着、針金ならこの負荷に耐えられますね(たぶん)。

Dscn9008

修理完了。
クリーナーで全体の汚れをふき取る等すると、意外と良い状態です。

Dscn9030

IchigoJamで使っていたモニターを接続してみました。
これで、プログラミング等が出来そうです。

Dscn9060

本体は先日のパナソニックMSXよりも軽くて、キーボードのタッチ感も良好です。

デザインも意外とかっこいいです。

Dscn9061






« 2018年11月 | トップページ | 2019年1月 »