MSX1(CF1200)の購入(その2)カーリッジケースの作成(その2) [MSX]
前回の記事で3DプリンタでのMSXカートリッジケースの作成について書きましたが、ネットでカードエッジ直後から横幅が広いプリント基板もあることを知りました。
そこで幅広のプリント基板にも対応すべくカートリッジケースを改善してみました。今までは固定するネジが上の方にあり、これが邪魔して大きなサイズの基板が入らない状態でした。今回はプリント基板固定用スペーサー部をネジで固定するようにすることで幅広の基板に対応しました。カートリッジの上側は嵌め込み式にして開かないようにしています。
下図が rear 側(後ろ側)のケース部品です。下側の辺を除く3辺の内側にズレ防止の爪を付けました。
下図が front側(手前側)のケース部品でプリント基板を固定するスペーサ部に木ネジで固定できるように穴を設けています。
下の写真が 3D プリンタで出力した rear 側(左)と front 側(右)の部品の内側です。中央部分がスロットに入れる部分(ケースの下側)になります。
下の写真は 3D プリンタで出力した rear 側(左)と front 側(右)の部品の外側です。3D プリンタのベッドに貼ったフィルムと同様に艶消しの様な仕上がりになっています。
★追記 2022/12/30 ベッドに貼ったフィルムが光沢の場合、表面は光沢になります。
サンプルのプリント基板を rear 側に嵌め込んだ状態が下の写真になります。
2本のネジで固定後のカートリッジの下側(スロットのカードエッジコネクタに接続される側)が下の写真です。
下の写真はカートリッジを上側から見た外観になります。
今回は新たな試みとして3Dプリンタで出力した本カートリッジケースをBOOTHで配布することにしました。
twitterに投稿した動画付きメッセージを貼っておきます。動画はフル画面で見るとケースの質感をより感じることが出来ます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
そこで幅広のプリント基板にも対応すべくカートリッジケースを改善してみました。今までは固定するネジが上の方にあり、これが邪魔して大きなサイズの基板が入らない状態でした。今回はプリント基板固定用スペーサー部をネジで固定するようにすることで幅広の基板に対応しました。カートリッジの上側は嵌め込み式にして開かないようにしています。
改善したケースの CAD 表示 |
|
下図が rear 側(後ろ側)のケース部品です。下側の辺を除く3辺の内側にズレ防止の爪を付けました。
改善したケースの CAD 表示(rear) |
|
下図が front側(手前側)のケース部品でプリント基板を固定するスペーサ部に木ネジで固定できるように穴を設けています。
改善したケースの CAD 表示(front) |
|
下の写真が 3D プリンタで出力した rear 側(左)と front 側(右)の部品の内側です。中央部分がスロットに入れる部分(ケースの下側)になります。
3D プリンタで造形した部品(内側) |
|
下の写真は 3D プリンタで出力した rear 側(左)と front 側(右)の部品の外側です。3D プリンタのベッドに貼ったフィルムと同様に艶消しの様な仕上がりになっています。
3D プリンタで造形した部品(外側) |
|
サンプルのプリント基板を rear 側に嵌め込んだ状態が下の写真になります。
プリント基板実装例 |
|
2本のネジで固定後のカートリッジの下側(スロットのカードエッジコネクタに接続される側)が下の写真です。
カートリッジケース 外観1 |
|
下の写真はカートリッジを上側から見た外観になります。
カートリッジケース 外観2 |
|
今回は新たな試みとして3Dプリンタで出力した本カートリッジケースをBOOTHで配布することにしました。
twitterに投稿した動画付きメッセージを貼っておきます。動画はフル画面で見るとケースの質感をより感じることが出来ます。
自作のMSX用カートリッジケースを幅広のプリント基板にも対応できるように改善してみました
— skyriver (@wcinp) August 26, 2022
また新たな試みとしてBOOTHでも配布できるようにしてみましたhttps://t.co/id50OzU2h8#MSX #カートリッジケース #3Dプリンター pic.twitter.com/eYfRDj5imk
[TOP] [ 前へ ] 連載記事 [ 次へ ]
8080/Z80 リロケータブルコードの実験(その2) [Z80]
Twitter のタイムラインで Z80 の相対コールに関するコメントを見かけました。4年程前に書いた「8080/Z80 リロケータブルコードの実験」の記事が参照されていたので再度相対コールに関して書いてみます。
上記の記事では相対コールは速度重視の観点から DE 設定と RST 命令 の合計4バイト構成でしたが、DE設定せずに相対アドレス情報だけにすることで3バイト構成の相対コールが提案されていました(遅くはなるけど相対コール自体は短くなる)。
Z80 の相対ジャンプのように相対アドレス情報を1バイトにして2バイトの相対コールも可能ですが、元々のコール命令が3バイトなので3バイト構成の相対コールは既存のコードとの相性が良さそうです。しかし、DE/HL レジスタを破壊してしまうと既存のプログラムのコール命令を相対コールに置き換えることができません。
そこで DE/HL 等のレジスタ非破壊の相対コールを考えてみました。
流石に8バイトには収まらないので次の RST 命令を潰さないようにジャンプ命令で通常のプログラム領域に飛びます(実行ファイルを ZSID でロードできるように JP 命令自体はコメントアウトしています)。
Z80 relocatable call V2
SP はインデクス付きでのアクセスができないため HL レジスタをスタック上に保存すると復活するのが難しい(IX 等を使うと処理が更に長くなる)ので、HL はワークエリアに保存しています(DE もワーク保存の方が良かったかも)。このため割込み処理内でもこの相対コールを使う場合は RELOCALL 処理中は割込み禁止にする必要があります。
★追記 2022/08/25 {
DE をワークに保存した場合、処理は単純になりコード作成は楽ですが速度は 13 ステート遅くなり、サイズは 3 バイト(ワーク分も含めれば 5 バイト)大きくなります。
}
ZSID を使って動作確認した結果が下記になります。
relocatable call code test
上述のように RST 28H 部のジャンプ命令はコメントアウトしているので S コマンドで設定しています。
処理内で使用している DE/HL も非破壊でコール先に飛んだ後、コール先のリターン命令でコール直後の命令にリターンしていますね。
★追記 2022/08/23
HL をスタック上に保存するバージョンを作ってみました。データを積んだままスタックを INC しているので割込み禁止区間が発生します。
また、ZSID のトレースコマンド(T)は割込み禁止状態でも RST 命令を使ってレジスタをスタック上に保存しているので 正常にステップ動作できませんが G100,210 で正常に動作することを確認しました。
Z80 relocatable call V2 stack version
★追記 2022/11/30
Twitterのタイムラインで 2 バイトアドレスへの相対ジャンプの話題が出ていたので相対ジャンプについて追記します。
TLにあった IX レジスタ式のものは元々の JP 命令の 10 ステートに比べてずいぶん遅くなるので、更に遅くなりますが下記で IX 非破壊で 2 バイト短縮できます。
元々の JP 命令が 3 バイトなので同じバイト数に収めるのであれば RST を使って下記のようにもできますね(なんの捻りも無いですが)。
Z80 relocatable jump
[history]
・ver 0.01a 2022/12/24 スタックにHLが残っていたので修正
・ver 0.02 2023/01/22 DE非破壊に変更
[TOP] [ 前へ ] 連載記事 [ 次へ ]
上記の記事では相対コールは速度重視の観点から DE 設定と RST 命令 の合計4バイト構成でしたが、DE設定せずに相対アドレス情報だけにすることで3バイト構成の相対コールが提案されていました(遅くはなるけど相対コール自体は短くなる)。
Z80 の相対ジャンプのように相対アドレス情報を1バイトにして2バイトの相対コールも可能ですが、元々のコール命令が3バイトなので3バイト構成の相対コールは既存のコードとの相性が良さそうです。しかし、DE/HL レジスタを破壊してしまうと既存のプログラムのコール命令を相対コールに置き換えることができません。
そこで DE/HL 等のレジスタ非破壊の相対コールを考えてみました。
流石に8バイトには収まらないので次の RST 命令を潰さないようにジャンプ命令で通常のプログラム領域に飛びます(実行ファイルを ZSID でロードできるように JP 命令自体はコメントアウトしています)。
|
SP はインデクス付きでのアクセスができないため HL レジスタをスタック上に保存すると復活するのが難しい(IX 等を使うと処理が更に長くなる)ので、HL はワークエリアに保存しています(DE もワーク保存の方が良かったかも)。このため割込み処理内でもこの相対コールを使う場合は RELOCALL 処理中は割込み禁止にする必要があります。
★追記 2022/08/25 {
DE をワークに保存した場合、処理は単純になりコード作成は楽ですが速度は 13 ステート遅くなり、サイズは 3 バイト(ワーク分も含めれば 5 バイト)大きくなります。
}
ZSID を使って動作確認した結果が下記になります。
|
上述のように RST 28H 部のジャンプ命令はコメントアウトしているので S コマンドで設定しています。
処理内で使用している DE/HL も非破壊でコール先に飛んだ後、コール先のリターン命令でコール直後の命令にリターンしていますね。
★追記 2022/08/23
HL をスタック上に保存するバージョンを作ってみました。データを積んだままスタックを INC しているので割込み禁止区間が発生します。
また、ZSID のトレースコマンド(T)は割込み禁止状態でも RST 命令を使ってレジスタをスタック上に保存しているので 正常にステップ動作できませんが G100,210 で正常に動作することを確認しました。
|
★追記 2022/11/30
Twitterのタイムラインで 2 バイトアドレスへの相対ジャンプの話題が出ていたので相対ジャンプについて追記します。
TLにあった IX レジスタ式のものは元々の JP 命令の 10 ステートに比べてずいぶん遅くなるので、更に遅くなりますが下記で IX 非破壊で 2 バイト短縮できます。
E3 EX (SP),HL 19 ADD HL,DE E3 EX (SP),HL C9 RET |
元々の JP 命令が 3 バイトなので同じバイト数に収めるのであれば RST を使って下記のようにもできますね(なんの捻りも無いですが)。
|
[history]
・ver 0.01a 2022/12/24 スタックにHLが残っていたので修正
・ver 0.02 2023/01/22 DE非破壊に変更
[TOP] [ 前へ ] 連載記事 [ 次へ ]
安定化電源の購入 [購入]
ずっと愛用していた安定化電源が先日電流制限モードから抜けなくなったので分解し電流値調整用のヘリカルポテンショメーターの端子を半田付けし直して復活しました。
しかし、端子周りのプラスチック部分が元々歪んでいて、この歪み具合を補正しながら何度か半田付けしてやっと復活できました。この歪みは製造の際の半田付け時に発生したものと思われます。この状態ではいつ再発するか判りません。
この安定化電源は 2005 年くらいに国内の通販で購入したもので出力が 0~30V/5A で 6~7千円だったと思います。電圧及び電流の fine 調整つまみの無いランク的にはかなり低めのものです。
上記の故障が再発すると困るので(ポテンショメーター自体は数百円で購入可能ではありますが)安定化電源を購入することにしました。
通販サイトで表示される安定化電源のスペックを見てみると電圧/電流の表示は殆どのものが 4 桁で電圧/電流の fine 調整つまみ付きのものは旧世代で、設定する桁をクリック操作で指定しエンコーダで値を設定するものが一般的になっているようです(1万5千円以上の多機能な電源は除く)
しかしながら最近は半導体不足と円安の影響で中華製品を通販で購入する場合でも 2 割以上は値上がりしている感覚です。
Amazon で設定していた割引通知が届き、確認したところ、結構安くなっていたので購入することにしました。転売ヤーのマージンが乗っていて海外通販で購入するより割高になりがちなので Amazon では中華製品の購入を殆どしないのですが、即発送可能なものに関しては転売者が昨今の物価高前に買い置きしたものがあるらしく、海外通販より割安の場合もあるようです。
前置きが長くなってしまいましたが
の条件で下図の製品を選び、購入しました。8/8 に注文し 8/9 に届きました。セール特価で 6,159 円だったのでお買い得感があります。海外通販(AliExpress)では fine 調整方式のものは 10A でも 6 千円を少し切るものもありましたが、今回の購入品と同型番のものは 9 千円程でした。
尚、パネル右上の緑色のものは保護フィルムを剥がすためのものです。
しかし、端子周りのプラスチック部分が元々歪んでいて、この歪み具合を補正しながら何度か半田付けしてやっと復活できました。この歪みは製造の際の半田付け時に発生したものと思われます。この状態ではいつ再発するか判りません。
この安定化電源は 2005 年くらいに国内の通販で購入したもので出力が 0~30V/5A で 6~7千円だったと思います。電圧及び電流の fine 調整つまみの無いランク的にはかなり低めのものです。
上記の故障が再発すると困るので(ポテンショメーター自体は数百円で購入可能ではありますが)安定化電源を購入することにしました。
通販サイトで表示される安定化電源のスペックを見てみると電圧/電流の表示は殆どのものが 4 桁で電圧/電流の fine 調整つまみ付きのものは旧世代で、設定する桁をクリック操作で指定しエンコーダで値を設定するものが一般的になっているようです(1万5千円以上の多機能な電源は除く)
しかしながら最近は半導体不足と円安の影響で中華製品を通販で購入する場合でも 2 割以上は値上がりしている感覚です。
Amazon で設定していた割引通知が届き、確認したところ、結構安くなっていたので購入することにしました。転売ヤーのマージンが乗っていて海外通販で購入するより割高になりがちなので Amazon では中華製品の購入を殆どしないのですが、即発送可能なものに関しては転売者が昨今の物価高前に買い置きしたものがあるらしく、海外通販より割安の場合もあるようです。
前置きが長くなってしまいましたが
- 電圧と電流の表示は 4 桁で別々の色で表示されること
- 電流は最大 10A であること(電圧は 30V)
- 電圧/電流の調整はエンコーダー式であること
の条件で下図の製品を選び、購入しました。8/8 に注文し 8/9 に届きました。セール特価で 6,159 円だったのでお買い得感があります。海外通販(AliExpress)では fine 調整方式のものは 10A でも 6 千円を少し切るものもありましたが、今回の購入品と同型番のものは 9 千円程でした。
尚、パネル右上の緑色のものは保護フィルムを剥がすためのものです。
購入した 安定化電源(HM310) |
|
MSX1(CF1200)の購入(その1)カーリッジケースの作成 [MSX]
最近、Twitter では MSX3 の話題で賑わっています。私は MSX の実機を弄ったことは無いのですが CPU が Z80 なので興味が沸き、MSX1 の初期の頃の機種である National 製 CF1200 の中古をマニュアル&箱付きで購入してみました。
基本的な機能しか試していませんが動作上の問題はなさそうです。
しかし、これだけでは内蔵 ROM から起動する BASIC で遊べるだけで他に何もできません。そこで、ROM を実装できる カートリッジ用基板が安く販売されていたので購入してみました。
これを使えばモニタプログラム等作り、カートリッジから立ち上げることが出来るようになります。
基板が剥き出しの状態では扱いづらいのでカートリッジのケースを作ることにしました。ネットで探すとケースのSTL ファイルがいくつか見つかったので上記の基板が取り付けられそうなものを選び、3Dプリンタで出力してみましたが、丸ピンソケットで実装した ROM がつかえてうまくケースに収まりませんorz
そこでケースを自作しようと思いましたがケースのサイズ情報がフルセットで記載されたサイトまたは資料が見つかりませんでした^^;
下記のサイトの情報とネットで探した STL ファイルを参照してカートリッジのケースを CAD で設計してみました。
作成したケースの CAD 表示が下図になります。ROM の部分は窓で外に出し、ROM の上面がケースの外側と面一くらいになりギリギリで収まりました。
3Dプリンタで出力した結果が下の写真になります。若干お焦げが発生していますね^^;
★追記 2022/08/30 {
フィラメントの流量調整やヒートブロックへのシリコンカバー装着等により焦げ問題はかなり改善されました。
}
基板を嵌め込むと下図の様になります。基板は下側のホールで固定されていますが、これはコナミ仕様のサポータの位置だと思います。
下の写真は3Dプリンタで出力したケースに基板を格納し、蓋をネジで固定した状態の様子です。
CF1200 のカートリッジスロットに入れてみましたが問題無さそうです。
★追記 2022/08/12
何か新しいことをやってみようと思い、カートリッジシェルのSTLファイルを BOOTH にアップしてみました。
★追記 2022/08/30
BOOTH ではカートリッジケースのSTLファイルでは無く、3Dプリンタで出力したケース自体を販売することにしました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
購入した MSX1(CF1200) |
|
基本的な機能しか試していませんが動作上の問題はなさそうです。
しかし、これだけでは内蔵 ROM から起動する BASIC で遊べるだけで他に何もできません。そこで、ROM を実装できる カートリッジ用基板が安く販売されていたので購入してみました。
カートリッジ用 ROM 実装基板 |
|
これを使えばモニタプログラム等作り、カートリッジから立ち上げることが出来るようになります。
基板が剥き出しの状態では扱いづらいのでカートリッジのケースを作ることにしました。ネットで探すとケースのSTL ファイルがいくつか見つかったので上記の基板が取り付けられそうなものを選び、3Dプリンタで出力してみましたが、丸ピンソケットで実装した ROM がつかえてうまくケースに収まりませんorz
そこでケースを自作しようと思いましたがケースのサイズ情報がフルセットで記載されたサイトまたは資料が見つかりませんでした^^;
下記のサイトの情報とネットで探した STL ファイルを参照してカートリッジのケースを CAD で設計してみました。
- MSX Datapack wiki化計画 4.1 カートリッジ仕様
- テクハンwiki Appendix A.7 カートリッジ ハードウェア仕様
作成したケースの CAD 表示が下図になります。ROM の部分は窓で外に出し、ROM の上面がケースの外側と面一くらいになりギリギリで収まりました。
カートリッジ用ケース(CAD画面) |
|
3Dプリンタで出力した結果が下の写真になります。若干お焦げが発生していますね^^;
カートリッジ用ケースの出力結果 |
|
★追記 2022/08/30 {
フィラメントの流量調整やヒートブロックへのシリコンカバー装着等により焦げ問題はかなり改善されました。
}
基板を嵌め込むと下図の様になります。基板は下側のホールで固定されていますが、これはコナミ仕様のサポータの位置だと思います。
カートリッジ用ケースと基板 |
|
下の写真は3Dプリンタで出力したケースに基板を格納し、蓋をネジで固定した状態の様子です。
完成したカートリッジケース |
|
CF1200 のカートリッジスロットに入れてみましたが問題無さそうです。
★追記 2022/08/12
何か新しいことをやってみようと思い、カートリッジシェルのSTLファイルを BOOTH にアップしてみました。
★追記 2022/08/30
BOOTH ではカートリッジケースのSTLファイルでは無く、3Dプリンタで出力したケース自体を販売することにしました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]