フォト
2019年4月
  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        
無料ブログはココログ

MSX・レトロPC

2019年4月 6日 (土)

3DプリンターでMSX2 FS-A1のスロットカーバーを製作

以前ヤフオクで落札したMSX FS-A1

00
スロットカバーが無いので3Dプリンターで製作しようと思っていたら、
ありがたいことに、チャレンジした先駆者さんにより、データが公開されていました。 

Thingiverse - MSX2 : FS-A1 Slot Cover
01_1

早速、使わせていただきました。

出力の様子
赤いフィラメントを使って出力しました。

Dscn9865

色がピンクがかってで違和感があったので、ラッカーで塗装したのち、装着。
まあ、まあの出来です。色もそう違和感ないです。
のちほど、もう少し出力品質を上げて作り直そうと思います。

Dscn9935

塗装は、ダイソーの100円 ラッカー スプレー レッド を使いました。

Dscn9937

塗装した方が、断然綺麗です(下は出力失敗のものです。第1層が剥離しちゃいました)。
塗料の乗りは意外と良いです。塗った直後は匂いがありますが、しばらく放置しているの無くなります。

Dscn9938

2019年3月23日 (土)

MSX CASIO PV-7を改造してメインメモリーを32kバイトに増量

メインRAMが8kバイトしかないMSX CASIO PV-7、さすがにこれでは厳しいので、
改造して32kバイトに増やしてみました。

 Dscn9856

Dscn9853

参考にした情報
 ・(1) MSX Resource Center - CASIO PV-7 to 16Kb RAM
 ・(2) しおんパパのひみつきち - 旧世界の遺産を守れ!「MSX PV-7/PV-16」カシオ(1984/198x)
 ・(3) 클랴의 공중질소고정법 - MSX PV-7 램 업그레이드 분석 (MSX PV-7 RAMのアップグレード分析)
 ・(4) MSX Resource Center - Casio PV-7

  特に、(3)のクルシャさんの情報が大変参考になりました。

(3)のクルシャさんの情報を参考にして、
基板上のuPD4168 8kバイト XRAM(左写真 上IC)を32kバイト をSRAM HM62256(左写真 下のIC)に交換しました。
基板のパターンカット無しでは、16kバイトまで増量出来ます。

Dscn9850 Dscn9849 

32kバイトに増量するには、
足りない信号(アドレスバス、スロット選択等)を引っ張ってきたり、数か所パターンカットをしましたが、
比較的簡単な改造でメモリを増やせました。

下記の、茶色以外の配線は追加した結線です。

Dscn9847

交換したSRAMは、次のような結線を行っています。

Photo


動作確認として、配列でメモリーを多くとって、値を書き込む確認動作のプログラムを動かしてみました。
とりあえず、問題なさそうです。

Prg

これで、やっと普通のMSXになりました。

Dscn9852

64kバイト化もチャレンジしてみたいと思います。

2019年2月25日 (月)

MSX用ゲームカートリッジのROM交換

先日入手したプログラマ XGecu TL866II Plusの練習として、
MSX用ゲームカートリッジのROMの書き込みを行ってみました。

以前、安価に入手したゲームカートリッジを使いました。

Dscn9716

ゲームカートリッジ基板の、元々付いていたマスクROMのM38128A-F7を取り外し、
ICソケットを装着しました。

代わりに EEPROMのWinbond W27C512(上の写真の左のIC)を装着します。
16kバイトのマスクROMの代わりに64kバイトのEEPROMを取り付けです。

まずは、取り外したマスクROMのデータを吸い出します。

Dscn9685

M38128Aは、利用しているプログラマソフト のICリストに登録されていなくて、
難儀したのですが、AMDのAM27128Aを選択し、Pin DetectCheck IDのチェックを
外すことで、データの読み取りが出来ました。

02

一旦、吸い出したデータをファイルに保存します。

次にWinbond W27C512への書き込みを行います。

ここで、マスクROMのM38128AWinbond W27C512はピン配置と読み出しの
インタフェースはほぼ同じですが、容量が異なります。

基板のICピン割り付けを調べると、元々あったところにWinbond W27C512を置くと、
アドレスピン A15A14が+5Vとなります(下図の黄色の部分)。
(IC外側信号:カートリッジの端子からの信号、内側はIC ピン信号割り付け)

01

A15A14がHIGHなので、元々あったM38128Aの16kバイトは、
Winbond W27C512の 0xC000H ~ 0xFFFFH の領域にマッピングされます。

ですので、吸い出した16kバイトのデータは0xC000h ~ 0xFFFFH に書き込みます。

Dscn9688

書き込みは10秒程度で完了しました。う~ん、早い、お手軽です。
Winbond W27C512を装着、

Dscn9693

ここで、 想定外、ありゃ、ふたがしまりません。諦めることにします。

Dscn9696


気を取り直して、動作確認、無事起動しました。

Dscn9701

問題なさそうです。

Dscn9709

カートリッジに収まらなくなってしまったのは、あれですが、
マスクROMを容量の異なるEEPROMに交換できることが分かりました。

ついでに、このカートリッジが利用している信号を調べてみました。
グレーの箇所は、端子が無く信号は来ていない部分です。
表は、参考文献より引用し、加工しています。

03

CS1がROMのCEに接続、SLTSLがOE(出力有効)に接続、後はアドレスバスとデータバス、
ROMだと意外と単純な制御でデータの取り出しが出来るようです。
参考文献のタイミングチャートを見ると、RDとSLTSLが同じタイミングなので、
SLTSLで、読み出しのタイミングを取っていても良いようです。

参考文献
テクハンwiki化計画 Appendix A.7 カートリッジ ハードウェア仕様

2019年2月22日 (金)

MSXのジョイスティックポートを使ったシリアル通信 (1)

MSXでジョイスティックポートを使ったシリアル通信が出来るらしいので、
事例を少々調べてみました。

シリアル通信が使えると、パソコンとの通信やArduinoとの連携等が出来るので、
色々とと楽しいことが出来ます。

ジョイスティックポートを使ったシリアル通信の事例

・Joy232
  HAKADAY.IO Print using RS232 on the joystick port of MSX computers
  https://hackaday.io/project/18552-joy232

  github - Danjovic/Joy232
  https://github.com/Danjovic/Joy232

・Akio Hiramatsu's Home Page - MSXでH8内蔵EEPROMを焼く
・FSW倉庫(通信) - アクロバット232

・JoyNet
  まとめサイト http://map.grauw.nl/resources/joynet/

まずは、一番簡単そうなJoy232を試してみました。


Joy232  Print using RS232 on the joystick port of MSX computers

01

joy232は、シリアル通信の出力のみ対応ですが、
BASICのLPRINTコマンドで出力することが出来るので、使い勝手が良いです。

早速試してみました。
ホームページの解説を参考にして、Dサブ9ピン コネクタで通信用コネクタを作りました。

Dscn9652 Dscn9653

USB-シリアル変換モジュールを使ってパソコンとの通信を試してみます。

Dscn9630

ホームページに公開されている、「STEP 1 Method 2」のBASICプログラムを、
MSX1(カシオ PV-7)で実行し、更にテスト用プログラム を実行してみました。

TeraTerm (通信速度 9600bps)にて、受信することが出来ました。

Term

MSXからの出力は、
  LPRINT "Hello,World"

みたいに、LPRINTコマンドで任意のデータを出力出来ます。

意外と簡単に出来ました。色々と遊べそうです。
Arduinoと通信を試そうと思い、
とりあえず、以前作成したLEDマトリックスを試してみました。

Dscn9658

シリアル通信でLEDマトリックスを制御できるモジュールです。
Arduino pro miniに8x8LEDマトリックスを直付けしただけです。
(LEDは定格許容範囲内の短いパルス出力では大きな電流を流せます)

Dscn9656

LPRINT "@?1234567890"
と実行すると、

Dscn9659

表示出来ました。

念のため、機種を切り替えてMSX2でも動作確認してみました。
結果は、...

動きません。MSX2が暴動しました。
調べてみると、マシン語プログラムの配置アドレスがまずいようです。
下記はプログラムの問題箇所の抜粋です。

60 EI=&HFAF5:SIZE=63
70 FOR A = EI TO EI+SIZE
80 READ B$: POKE A,VAL("&H"+B$)
90 NEXT A
100 REM
110 POKE &HFFB8,&HFA
120 POKE &HFFB7,&HF5
130 POKE &HFFB6,&HC3

LPRINTのフック(マシン語プログラム)の配置アドレス &hFAxxxx は
MSX2で新たにワーク領域と使われているようです。
基本的に &hF380H番地から&hFFFEH番地 はワーク領域なので使用禁止です。

プログラム自体はリロケータブルなようで、配置位置を&hF200 に変更したところ、
問題なく動作しました。

修正したプログラム(修正箇所のみ抜粋)

60 EI=&HF200:SIZE=63
70 FOR A = EI TO EI+SIZE
80 READ B$: POKE A,VAL("&H"+B$)
90 NEXT A
100 REM
110 POKE &HFFB8,&HF2
120 POKE &HFFB7,&H0
130 POKE &HFFB6,&HC3

Dscn9669

動いている様子



LEDマトリックスを制御しているMSX BASICプログラム
前半は1ドット単位の表示、後半はメッセージを1文字単位で
スクロール方向を変えて表示しています。

10 LPRINT "@?{}"
20 FOR Y=0 TO 7
30 FOR X=0 TO 7
40 LPRINT "@?{";CHR$(48+X);CHR$(48+Y);"1}"
50 NEXT X
60 NEXT Y
70 LPRINT "@?{}"
80 S$="Hello,Wrld.I love MSX!"
90 L=LEN(S$)
100 FOR I=1 TO L
110 R=INT(RND(1)*13)
120 LPRINT "@scrl ";R;",40"
130 LPRINT "@?";MID$(S$,I,1)
140 GOSUB 180
150 NEXT I
160 GOTO 100
170 END
180 TIME=0
190 IF TIME <20 GOTO 190
200 RETURN

上記のプログラムでは、シリアル通信の出力のみなので、
LEDマトリックスにコマンド送信した際の実行完了待ちが出来ないため
180行のサブルーチンで適当な時間待ちを行っています。

出力のみでも、十分遊べると思います。

2019年2月13日 (水)

プログラマ XGecu TL866II Plus USB を入手しました

ROMライターが欲しいと思い、ネットで調べて評価の高い、
XGecu TL866II Plus USB High Performance Programmer (リンク先は公式サイトです)
を入手しました。購入はいつものAliexpressです。

海賊版が出回っているようですが、
とりあえず、「海口鑫工电子有限公司」製の純正品のようです。



Dscn9625

中身

Dscn9602

本体

Dscn9626

付属のCDのアプリは古いバージョンのようなので、公式サイトから
現時点での最新版V8.3をダウンロードしてインストールしました。

アプリの「Xgpro TL866II Plus」を起動時にファームウェアを更新するように促されたので
ファームウェアもアップデートしました。

03

とりあえず、セットアップ終了

02


このTL866シリーズ、購入には少々注意が必要です。
下位のTL866A、TL866CSが安く販売されているのですが、
公式サイトには次の警告があります
(※注意 グーグル日本語翻訳しています)

01

下位のTL866A、TL866CSは生産中止で、偽造品の恐れがあるようです。
ヒントをクリックすると、TL866A、TL866CSはかなり前から生産を中止していて
偽造品にはソフトウェアのアップグレードに制約があるみたいな記載があります。

私は当初、Aliexpressでの中華製品の購入にはブランド選択の意識は無く
安いTL866A、TL866CSを買おうと思ったのですが、
「待てよ、とりあえず、高機能!」とTL866II Plusを選択したのですが、正解でした。

2019年1月29日 (火)

MSX用ゲームカートリッジの中身

改造して利用しようと安価なMSX用ゲームカートリッジを探していると、
ヤフオクで格安品を見つけ、2本 21円で落札出来ました。

到着したカートリッジ

Dscn9573

一応、動作もしてゲームもプレイ出来ました。
CASIOブランドのゲームは人気が無いようで、比較的安く入手出来ます。


中身を見てみます。

写真上のカートリッジ(CASIOのゴルフゲーム)

Dscn9566

TMM27128D-20が2つ入っていました。
容量16kバイトの紫外線(UV)で消去可能なEPROMです。

再書き込みするか、安価なW27C512(EEPROM)なんかと交換して利用出来そうです。

写真下のカートリッジ(パナソフトのサッカーゲーム)

Dscn9571

M38128A-F7との刻印、容量16kバイトのマスクROMと思われます。
こちらもW27C512(EEPROM)なんかと交換して利用出来そうです。

参考文献 1)の仕様を見ると、カートリッジの端子のピン番号5~16が無く
利用出来ない状態です。

Lチカでもやろうと思ったのですが、端子11番のIORQ(I/Oリクエスト信号)が無いので
Z80のOUT命令でのポート出力は出来なそうです。

参考文献
・1) テクハンwiki化計画  1部 ハードウェア 4.1 カートリッジ仕様
・2) TMM27128AD-20 のデータシート(TMM27128Dは見つかりませんでした)

2019年1月27日 (日)

安価なボイスレコーダーをMSX用データレコーダに利用する

MSX用のデータレコーダーの代わりになるのでは? 」 と思い、
安価なマイク端子付きのボイスレコーダーを入手し、試してみました。

今回試した製品

  いつものAliexpressでの購入です。レビュアー数が多く、結構売れているようです。
 
  HIPERDEAL Mp3 Player 8GB Digital Audio Voice Recorder

  01

届いた製品

意外とまともな製品で、立派な箱付き、
付属品としては、説明書、USBケーブル、イヤホン、モジュラージャックなどが付属します。

  Dscn9551

  日本語表示にも対応していました。

  Dscn9502

小型軽量、スピーカー付き、充電対応、金属フレーム、
この価格でこの機能、なかなか良い製品だと思います。

USBケーブルでパソコンに接続すると、ドライブとして認識出来ました。
色々といい感じです。

添付の説明書のスペック的な記載は下記の通りです。

Ccf20190127_0001_front_front


MSXでのデータレコーダとして利用を試し見る

まず、MSX CASIO PV-7で試したのですが、ノーマルのままではダメでした。

簡単なプログラムを作成し、このボイスレコーダで保存し、再生しても
ロード出来ませんでした。

直接録音した音を聞いてみると、音質は良いのですが、音が小さいようです。

出力増幅のため、その辺に転がっていたスピーカー用アンプモジュールを使ってみると

   「うお!」

ロード出来ました。

とりあえず、出力を増幅すれば利用出来ることが分かりました。

Dscn9498

  ※ 実は写真のアンプモジュール、BTL方式のため、この使い方はマズかったです。
      アンプ出力の+、-はGNDから浮いているので、-をライン入力のGNDに接続は
      マズかったです。とりあえず、実験ということで..

トランスを使った、入力電圧の昇圧・インピータンス変換 を試してみる

色々と施行していると、SNSにてトランスを使う方法もあるとのアドバイスを頂き、
面白そうなので試してみました。

色々と調べ、山水トランジスタ用小型トランス ST-32 を利用しました。

 

参考にしたサイト
   ・tools4bikeのblog - ヘッドホン出力・ライン入力間用昇圧トランスキット
   ・秋月電子 ST-32使用ヘッドホン出力⇔ライン入力昇圧トランスキット

この方法の理屈等については、キットの「組立説明書」に解説があります。

結線は非常に楽ちんです。
トランスのリード線をコネクタにつなげるだけです。 

Dscn9514

  ボイスレコーダのライン端子とMSXの間にトランスを入れて試してみると、
     「うぉ~!!」
  しっかりとプログラムがロード出来ました。

  Dscn9510

この方法は非常にいいですね、単純で電池不要です。
目から鱗の方法です。


ケース作り

非常に上手くいったので、使い勝手を良くしようと、ケースを作りました。
3Dプリンターでケースを作ろうと思い、まずは段ボールで試作しました。

Dscn9518

Dscn9519

途中で、だんだんめんどくさくなり、
  「マンドクセ、コノママデイイヤ」
となり、予定変更でコルクシールをカットして、貼り付け

Dscn9520

「完成!」
としました。Otz ..

Dscn9538

意外と強度もありそうなので、良しとします。
本物のテープを使ったデータレコーダやラジカセを使うよりは断然いいです。

Dscn9531

保存したファイルは、USB経由で閲覧できます。
ファイルはWAV形式です。

03

録音品質を一番良くしたのですが、ビットレートは192kbpsのようです。

02



実は、機種によっては増幅・昇圧無しに利用出来た

試しに別のMSXパソコン、National(パナソニック)  CF-2700で試してみると、

Dscn9509

悲しい(嬉しい?)ことに、何も細工せずにダイレクト接続で利用出来てしまいました。
MSX2 FS-A1でもOKでした。

個体差があるのでしょうか
CASIO PV-7は、カセットI/Fがオプションで拡張ボックスを使う方式のため、
特殊だったのかもしれません(30年の経年劣化の影響もあるかも)。

  「今までの苦労は何だったのだろう」

と、ちょっと思いつつも、色々と勉強になりました。


2019年1月23日 (水)

「Z80-CP/M 2.2 emulator running on ESP8266」でのファイル転送

Z80-CP/M 2.2 emulator running on ESP8266を試してみました」の続きです。

Dscn8937

パソコンと cpm8266(Z80-CP/M 2.2 emulator running on ESP8266)間で
ファイルのやり取りの方法の質問があり、私も知りたいと思っていたので、
ちょっと調べてみました。

その際の調査のメモです。

方法としては、XMODEMプロトコルを使う方法があります。
XMODEMは昔、電話回線(モデム利用)でパソコン通信をやっていた頃に
ファイル転送手段として使っていました。

cpm8266では、CP/Mの標準コマンドXMODEMコマンドが正常動作しないようで、
cpm8266の開発者さんが別途、専用コマンドを用意しています。
下記のリンク先に、コマンドの使い方が解説されています。

関連情報
  ・ Xmodem for CP/M Z80 for CON:
     https://github.com/SmallRoomLabs/xmodem80


Windows 10上で試してみる

・TeraTermでは転送出来ず
   XMODEMに対応しているTeraTermで試してみたのですが、
   XSにコマンドによる、Winfows => cpm8266   は出来たのですが、
   XRにコマンドによる、cpm8266 => Winfows    は出来ませんでした。

   下記のサイトのページの一番下にTeraTermで転送出来ている記載があるので
   私の環境に問題がある可能性もあります。

   関連情報
   ・ Homecomputer DDR - cpm8226
・Windows 10上で動くUbuntu環境(WSL)のminicom コマンドで転送成功
   環境がちょっとややこしいですが、
   「Windows 10上にWSLを使ってUbuntuをインストールする」で構築したUbuntu環境に
   minicom コマンドをインストールして使ったところ、転送出来ました。

   minicomのインストール
    %sudo apt install minicom

   XMODEM関連コマンドのインストール
    %sudo apt install lrzsz

   minicomの使い方、XMODEMの使い方については、下記の情報を参考にしました。

   参考にしたサイト
   ・ シリアル端末ソフト/minicom
   ・職業としてのプログラミング Linuxでシリアル通信 - Ubuntu+minicom

   日本語環境の場合、セットアップメニューが崩れるので
   LANGを変更して起動した方が良いです。

   minicomのセットアップ
   % sudo LANG=c minicom -s

   -sオプションを付けて起動すると、初期画面にメニューが表示されます。
   管理者権限で起動しないと、シリアルポートのアクセスに失敗します。
   01

   [Serial prot setup] を選択してシリアルポートの設定を行います。
   WSL環境では、シリアルポートは、
     COMn => /dev/ttySn
   の対応となります。

   03

   [Save setup as dfl]で 設定の保存
   04

   [Exit from Minicom]にて一旦、終了します。


minicomでcpm8266を利用する

   % sudo LANG=c minicom

   日本語環境でも動作しますが、メニューボックス内の表示が崩れるため
   英語モードでの利用を推奨します。
   また、日本語環境では画面下のステータスバーが表示出来ないようです。

   起動後、ENTERキーをたたくと、起動メッセージが表示されます。

   05
   minicom を終了する場合は、CTRL-A入力後、Xキーを押します。


   XMODEMによるファイル転送
   
   1)Windows 10(Ubuntu) => cpm8266
    ①cpm8266側でXRコマンドを実行する
     a>A:XR F:test.txt
   06_2

    ②minicomによるファイル転送
     とりあえず、今月のカレンダーを送ってみます。
     ubuntu端末をもう一つ起動し、ユーザーホームディレクトリに
       % cal > test.txt
     と実行し、ファイルを作成しました。
   
    minicomにて、CTRL-X入力後、Sキーを押します。
    カーソルキーでxmodemを選択し、ENTERキーを押します。

   07_2
 
    ファイル選択状態となります。
    カーソルキー[↑][↓]でファイルを選択、スペースキーで確定、
    カーソル[←][→]で下のメニューのコマンドの選択、ENTERキーで実行します。
    [OKay]選択&ENTERキーで転送開始です。

   08

   転送状況が表示され、完了したら何かキーを押します。

   09

  ③転送されたファイルの確認
   転送されたファイルを確認すると、ちゃんと転送出来ていました。
   中身を表示すると改行コードがlinuxと異なるため、ちゃんと表示出来ませんが、
   転送自体は上手くいっています。

   10


   2)cpm8266 => Windows 10(Ubuntu) 
    試しに、GドライブにあるBIO.BASを転送してみます。

   ①cpm8266側でXSコマンドを実行する
     a>A:XS g:bio.bas

   11

   これで、cpm8266側は送信待機状態となります。

   ②minicom側での受信
    minicomにて、CTRL-X入力後、Rキーを押します。
    カーソルでxmodemを選択し、ENTERキーを押します。

    12_2

    ファイル名を入力し、ENTERキーを押します。
    これで転送が始まります。

    13

    転送中は、その状況が表示されます。
    完了したら、何かキーを押します。

    14_2

    転送が正常の場合は、次のメッセージが表示されます。

    15

   ③転送されたファイルの確認
    別端末画面にて、カレントホームにファイルがちゃんとあるのを確認します。

    16

    minicomを管理者権限で実行したため、アクセスが権限がないため
    sudoコマンドでheadコマンドを実行して、先頭の10行を表示しています。

    ちゃんと受信も出来ています。

これで、パソコンとのファイルのやり取りが出来るようになりました。
これで、もう少し使い込めるようになりました。


XMODEMプロトコル、組み込みマイコン用に使いには意外と良いプロトコルかもしれません。
ArduinoにもXMODEMライブラリがあるようなので、ちょっと調べてみたいと思います。
豊四季タイニーBASICでのファイル転送の手段として利用価値がありそうです。
   

関連記事
・「Z80-CP/M 2.2 emulator running on ESP8266」でのファイル転送 (この記事です)

2019年1月21日 (月)

FUSION-C、MSXの開発環境? (2)

注文した書籍「FUSION-C: MSX C Library complete journey.」が到着しました。

思っていたよりも、しっかりしている書籍でした。ちょっとびっくり。

Dscn9462

サイズが大きいです。

Dscn9466

洋書でこの価格この内容は、良心的だと思われます。

Dscn9467

ざっと見た感じだと、フリーで入手できる、MSX_Fusion C Libraryに添付のマニュアル
FUSION-C-Quick Manual.pdf  にMSXの技術情報関連とC言語の解説(100ページ程度)
を追記した内容です。

環境設定や、ライブラリリファレンスは、FUSION-C-Quick Manual.pdf  だけでも
開発は出来ると思います。

2019年1月20日 (日)

FUSION-C、MSXの開発環境?

ちょっと面白そうな書籍を発見、注文しちゃいました otz、あちゃ
到着待ち中です。

FUSION-C: MSX C Library complete journey. (英語)
01

この書籍の販売元のEBSoftのオンラインショップ のREPRO FACTORYのサイトで
開発環境は無料でダウンロード出来ました。

02

ショップを覗くと、面白そうな、キットが販売されています。
MSXカートリッジの自作キットまで販売されています。
この開発環境で最終的にMSXカートリッジまで実装出来るのかもしれません。

03

MSXカートリッジキット、フラシュメモリに書き込むタイプのようです。

Include in this Kit
- 1 x PCB Board
- 1 x Flash Chip Winbond W27C512 (64K / 512 Kbits)
- 1 x Electrolytic Capacitor
- 1 x Ceramic Capacitor
- 1 x Socket
- 1 x Cartridge Case

04

MSXカートリッジの作成は、チャレンジしてみたいです。
Arduinoなんかと連携出来れば、活用の幅がかなり広がりますよね。