カートリッジケースを3Dプリンタで
2025.11.12
だいぶ以前から言っていたけどなかなか進んでなかった事
MSXのカートリッジケースを3Dプリンタで作る。

売ってるやつがあるじゃない、
誰かが作ったデータがあるじゃない、
わかってる。

自分の場合は独自カスタマイズ(穴位置など)をしたいので、データを自由にいじれるようにしておきたい。それならば自前のデータを作るしかない。

その前に3D-CADをどうするかで迷走していた。
2005年にSolidWorksを県の機関で講習を受け、実際に試作品を設計して作れるまでになっており、
その10年後に3Dプリンタでの試作の話があった為、復習を受けて思い出したところで試作の話は流れてしまい、
ライセンス問題で県の機関のSolidWorksが使えなくなり、
個人で買うのは無理。

フリーソフトまたはサブスクのソフトをいくつか試してみたけど、どれもこれも何かが足りなくて、たとえば仕事によっては特定の形式のデータを読み込む必要があったけど、そのインポートに対応してなかったり。

これに決めた!と解説書まで買い込んで勉強していたソフトが打ち切りとなり、無駄に終わる。

Web上のものは紹介してくれた方がいて、内容は良さそうだったけど、ユーザー登録が面倒くさくて個人的に受け付けなかった。

最終的にたどり着いたのはFreeCAD

幸い、仕事で3Dプリンタの試作の話がきて現在取組中。よい勉強の機会だ。なにか目的がないと、CADの習得をしようという気にもならない。
そりゃあ最初は大変です。
頭では、こんな形を作ると考えていても、それをどのように操作して入力したらよいのかわからないのですから。
調べたり、何度もやり直したりして、ようやくできるようになってきた。
ところが特定の加工がうまくいかない。おかしいなあ。なぜだかわからない。
仕方ない。全部消して最初からやり直してみよう、こんな調子です。

この経験を活かせば、他の品物も自由に作れるようになるでしょう。

現状のCNCで切り出し、接着して組み立てたケース、これは自分で考え、工夫しながら作ったもの。
欠点は組立の手間があること。じつは組立に失敗して捨てたのが意外とある。ずれたり、接着剤(溶剤)が垂れたりして失敗する。あの接着剤がクセモノで、注射器から少しずつ出そうとしてもいきなりバッと出て広がったりして大変。それに有毒。

そして表面のパネルをスモークアクリルにしたのは中が見えて良かったが(LED点灯状態が見える)、パネルを固定する方法を思いつかず。普通に使っていて外れないとは思うが・・・
パチンとはめ込んでいるけど、それが微妙な差でうまく合わない事もしばしば有る。
そのときはヤスリやナイフで削って調整していたので手間がかかった。

今度は一体物を3D出力できるようにしたい。前後から基板を挟むような形にして、ビスでしっかり固定できるようにしたい。
M80とかL80とか
2025.11.09
MSX-DOS2 TOOLSを買う前に、
MZ-2000でCP/Mのフロッピーを読み込み、M80やL80などを自作の通信I/FでMSXに送り、MSX-DOS1上で動かしていた話を以前書いた。
だから、別に買わなくて良かったような気もするが・・・

CP/Mのフロッピーを読み・・・といってもMZ-2000用ではなく、他機種(確かX1とかPC-8001用)のフロッピーだからファイル直接操作できなかった。
先頭から順番にセクターダンプして、このへんからこのへんまでが、どうやらM80らしい、と目星をつけていた。
ひたすら根性ですよ。ずっとダンプを見ていかないといけないから。

一旦、MSXのフロッピーに持っていった後は楽だった。これでMSX-DOSはCP/Mの上位互換なんだなと実感した。

CP/Mを作ったゲイリー・キルドールは、MS-DOSはCP/Mのパクリだと訴えていた。「新・電子立国」のソフトウェア帝国の回で、そんなインタビューがあった。
そのインタビューの直後になくなられたという。

ゲイリー・キルドールの会社(デジタルリサーチ)はDR-DOSというのを出していた。

フリーソフトでは、FreeDOSというものがある。

M80の話に戻ると、
まずM80でアセンブルして、その後L80にかける必要があった。
それ以前に使っていたアセンブラは1パスでバイナリが出てくるので、そっちのほうが便利そうだった。やっぱり今まで通りでいいじゃないかと思った。
本末転倒ってやつか。
しかし本格的にZ80の開発をするにはやっぱりM80などを使っていかないと・・・。
バッチファイルを作って、簡単な操作でできるようにした。

M80はマクロアセンブラなので、マクロを組むとプログラミングを少しでも楽にすることができる。あるいは応用として、別のマイコン用のアセンブラを作ることもできる。
そんな実例を雑誌の付録か何かで当時見たけど、こんなの今となってはどうでも良いことですね。
MSX-DOS2 TOOLS と MSX-C
2025.11.09
MSX-DOS2 TOOLS
MSX-C
これらは私が学生だった頃、アスキーが現役でソフトを販売していた頃に通販で買いました。
金銭的に厳しかったので、ずいぶん思い切った買物でした。

後にMSXマガジンの付録になるとは思いもしませんでしたが、その当時に買っておいて正解だったでしょう。
MSX-Cの解説書も買いました。最初は使い方がわかりませんからね。うまいこと商売に乗せられた感じもします。その解説書も後に、MSXマガジンの付録になりました。
後に、といっても10年後ぐらいです。

MSX-DOS2 TOOLSは特にアセンブラのプログラム開発には役立ったと思います。
テキストエディタ KID/AKID
アセンブラ M80
リンカ L80
などなど・・・

テキストエディタは、それ以前に使っていたPEDのほうが慣れていて好きだった。
慣れてきたらKIDかAKIDを主に使うようになったけど、変な文字コードが混ざったりしてアセンブルエラーの原因になったりしなかったっけ。
何も文字がないところでバックスペースやDELETEを押しまくったりして、その後にアセンブルしてみると通ったりする。
相棒はPEDを愛用していたな。
自分は、せっかく買ったので仕方なく使っていた感じ。

当時テキストエディタといったら、PC98の世界ではMIFESを使っていたっけ。あとでVZを知ったけど、操作に馴染めなかった。
それとフリーソフトではSE3というのがあって、京都コンピュータ学院が製作したもの。
実際、自分が通っていたコンピュータ学校ではMIFESをみんながピーコして使っていたのだけど、そういった問題がないようにとSE3が作成されたのでした。

アセンブルのたびにフロッピーの読み書きが遅いもんだから、RAMディスクを活用していた。
これも思い切った買物だったFS-A1ST、RAMは買ったままの状態で256KBだったと思う。

当時手作りしていたマイコンのBIOSからモニタから、ライブラリやアプリケーションまでプログラムを作っていた。
8251カートリッジも最初作った時は失敗したけど、後に作り直してちゃんと使えるようになり、マイコンの開発にも活躍した。そのターミナルプログラムも自分で作ったっけ。

なにしろ当時はパソコン通信がなかった。自分にとっては。
電話回線を引いてモデムをつければできただろうけど、お金に余裕がないのに課金されるようなものは手を出さないほうがいいなと思った次第。

MSX-Cは結局よくわからなくて、たいして使わないでそのままだったような気がする。

学校でPC98を使い、C言語のプログラミングをやっていたけど、どっちかというと当時アセンブラ至上主義者だったのでMSXでC言語はチョット・・・と思っていたようだ。
メモリを食いそうなので。(そんな大きなプログラム作ったっけ)
FS-A1ST改造失敗
2025.10.08
いまの話ではなく、’90年代始めの頃の話
まだまだ未熟だった私でした。

MSXマガジンか何かの改造記事を見て、自分のFS-A1STもRAM増設しようとした。
空きパターンにDRAMをはんだ付けして、あとは抵抗をチョコチョコと。簡単だ。

そうだ、念の為にソケットを使おう。(これが悪夢の始まり)

その時に使ったソケットは、ご覧の通り(実際は18Pか20P、忘れた)


無事、改造は成功した。
起動画面に表示されたRAM容量を見て大喜び。
(実際に使うのか?)
RAMディスクとして使った。アセンブル、コンパイルが速くなった。
それ以前の学生時代からRAMディスクは重宝していて、容量が増えてありがたい。
だけど作業が終わった時点でフロッピーに書き戻すのを忘れてしまい、一気に天国から地獄の底まで落ちたこともあるけどな。
(そこで、書き戻すバッチファイルを作った。確か、ソースだけはコンパイル時に必ずフロッピーへ書き込むようにした気がする。)


ところが・・・ある日、RAM容量表示が増設前と同じになった。アレ?
勝手に変わったりする。おかしいなあ?

ははあ、ソケットの接触が悪いんだ。こんなソケットだからイカンのだろう。
接点が片側しか接触しない構造になっている。
わかっていて使ったが、こんなにダメとは思わなかった。
少なくとも、両面から接触しないとな。丸ピンだったら周囲から包むように接触するから信頼性が高い。

とりあえず、この板バネソケットを取り外して、丸ピンソケットに交換しよう。

その取り外し・・・
当時はハンダ吸い取り線とスッポンしか持ってなかったから、結果から書くと見事に失敗。パターンを壊してしまった。剥がれて切れたり、スルーホールが抜けたり。

FS-A1STの基板は特殊で、配線パターンが見えない。当時のエレクトロニクス雑誌に載っていたけど、銅ペーストといって配線パターンの上を銅でシールドしてしまい、輻射ノイズを抑える狙いが有った。
しかしそれだと修理ができない。パターンを切ったりつないだりなんてあり得ないという思想だろうな。量産基板に適用するから良いんだと。

いまでこそ回路図は出回っているが、当時は回路図なんて手に入らなかった。修理に出したら高額になるだろうな。就職したばかりでお金もない。
DRAMの配線を可能な限り追って調べた当時のメモが今も残っている。あきらめきれなかったんだろうな。

結局あきらめてしまったのでした。

ソケットの接触を改善する方法を最初に試したらどうなのか?って思うでしょうけど、その当時に思いつかなかったでしょう。何度か抜き差しをしてみたりしたかもしれない。覚えてない。
あとから色々言うけど、失ったものは取り戻せないんだからなあ。

・・・・・・

幸い、どうにかこうにか基板だけ手に入れて交換し、復活したわけです。

二度とあんなソケットは使わないと心に決めました。(某**で当時よく売られていたものでした。安かった)
乱数(MSXの)
2025.08.17
MSX BASICのソースを見れば乱数発生の仕組みがわかると思うけど、いや、昔調べたような気がする。覚えてない。

学生時代に同級生がテトリスを自作して、その時に使った乱数ルーチンはMSXのROMではなく、独自に組み込んだもの。Z80マシン語秘伝の書に載っていた乱数ルーチンをアレンジしたと思う。

当時でも議論したけど、じつは乱数ってのは意外と難しく、完全な乱数って作れないのです。

BASICに内蔵されている乱数は、算術乱数というやつだったと思う。計算で次の値を求めている。どうしても偏りがある。
ある数に別の数をかけたり足したりして、その下位桁を取るとか、そんなやり方です。だからパターンが決まってしまう。不確定な要素が含まれてないわけ。

MSX-BASICにはTIMEという変数(カウンタ)があって、1/60秒ごとにインクリメントされているから、これを利用する手がある。何か押した瞬間の値を取るとか。プログラムをRUNした時に値を取り込んで乱数の種にする。
別に、TIMEに依存しなくても入力を待っている間にカウンタを適当に回しておいて、HIT ANY KEYで押した時の値でも良い。

パチスロ機の場合は、ハードウェアカウンタを回しておき、レバーを叩いた瞬間の値をとるというやり方でした。
これは昔、体感機で同期できてしまっていたので、その後に対策がとられて、ずっと高速で回るようになっていると思われます。

完全な乱数が必要なら物理乱数になります。電気的なノイズを利用したものがよく使われると思うけど、それだって外乱を受けるようではダメです。

MSX用乱数発生カートリッジとか? 需要ないだろうな。

あと、円周率を小数点以下何万桁までテーブルに記憶しておいて、そこから値を拾ってきて使うと乱数代わりになると本で読んだ事があるけど、良いのかどうか知らない。
この場合でも、順番に読むんじゃなくて、さっきのキーを押したタイミングでどこを読むかというやり方を組み合わせたものだと良さそう。

乱数の再現性を求める場合は、あらかじめデータとして蓄えておかないといけないな。ゲーム等では再現性は求めない場合がほとんどだろうから、いかにばらつかせるか、偏らせないかということになる。

- CafeLog -