ブックマーク / note.com/thara1129 (33)

  • #12 割り込みとVDPレジスタ|HRA!

    はじめに 今回は、割り込み関連とVDPのレジスタアクセスについて説明します。 割り込みはVDPに限った話ではないですが、一般的なMSXでは割り込み発生源=VDPなので、VDPの話と一緒に伝えてしまった方が分かりやすい。ということで、今回は割り込みとVDPレジスタアクセスをセットで説明します。 レジスタはたくさんあるので、ここではすべてを説明することは避けます。レジスタの説明そのものは他の資料にお任せすることにして、ここでは「VDPレジスタとはどんなものか?」「どのようにアクセスするのか?」について説明します。目的である「うさぎのゲームを作る」では、直接アクセスする必要はないのですが、どんな風に制御されているのか?を知っておくことは無駄ではないので説明します。ゲームを作るうえで必要なレジスタに関しては、別途説明しようと思います。 VDPレジスタ VDPには、コントロール・レジスタ、ステータス

    #12 割り込みとVDPレジスタ|HRA!
    zu2
    zu2 2026/07/21
  • #11 BIOSにない表示制御2|HRA!

    はじめに 今回は、前回の続きで BIOS にない表示制御の話になりますが、前回よりも「高速な方法」について説明していきます。 直接制御 MSXは、公式的には BIOS にある機能は BIOS を使って制御するルールとなっていますが、下記のものに限っては直接 I/O制御するのが許されています。 ユーザーI/O空間に接続された一過的に使う自作のI/Oデバイス 自身のカートリッジ内に搭載された Memory Mapped I/Oデバイス VDP 1 は、そもそも BIOS に制御ルーチンが存在しないので、直接制御するのが当たり前ですね。 2 は、ゲームカートリッジなのだけど、そのゲーム向けに追加された拡張デバイス(メガROMのバンク切り替えとか、SCCのような内蔵音源とか)とか、あとはモデムカートリッジで内蔵の通信ソフトが内蔵モデムへアクセスするとか、そんな感じです。 そして、今回紹介したい 3

    #11 BIOSにない表示制御2|HRA!
    zu2
    zu2 2026/06/28
  • #9 演算処理|HRA!

    はじめに 前回までで、「BIOSに用意されているルーチンはそれを利用すればOK」ということが伝わっていれば問題ないです。 BIOS は、CPUの周辺デバイス(音や絵を出すところ)を制御する機能が詰め込まれているわけですが、では肝心の演算は?というと、それは自分で作る必要があります。 BASICでは、おおむね数学の数式に近い形で記述できるので、理解しやすいと思いますが、ではそのような数式を Z80 のプログラムで実現するにはどうしたらいいのか?というのが、今回の焦点になります。 Z80における演算 加算、減算、論理演算(AND, OR, XOR, NOT)、ビットシフト、ビットローテイト、比較演算(>, <, >=, <=, ==)は、命令が用意されています。それらの組み合わせで表現できる演算式は、1つ1つの演算子に分解して、存在する命令の組み合わせで演算式に仕立て上げていきます。 乗算や除

    #9 演算処理|HRA!
    zu2
    zu2 2026/06/28
  • #10 BIOSにない表示制御1|HRA!

    はじめに 今回は、BIOSにない表示制御に関して説明します。BIOSには、表示に関する機能がたくさん用意されていますが、BASICのすべての命令に対応しているようには見えませんよね。では、BIOSにないBASICの表示関連の処理と同じことをするにはどうしたらいいのか?というのが、今回の話の焦点になります。MSX1 の範囲で説明します。 BIOSの表示関連 まず、BIOSの表示関連にはどんなものがあるのか、見てみましょう。 https://ngs.no.coocan.jp/doc/wiki.cgi/TechHan?page=Appendix+A%2E1+BIOS+%B0%EC%CD%F7 OUTDO (0018H)  現在使っているデバイスに値を出力 → PRINT CHR$(A); DISSCR (0041H) 画面表示の禁止 → BASICに対応命令無し ENASCR (0044H) 画

    #10 BIOSにない表示制御1|HRA!
    zu2
    zu2 2026/06/28
  • #7 私にとって MSX後継機 とは?|HRA!

    はじめに 今回は、私にとって「MSX後継機」とは何か?について触れたいと思います。 なぜMSXを使い続けるのか? 世間一般でいえば、40年も前のパソコンなんて単なる骨とう品。今のパソコンを象に例えると、MSX は蟻みたいな性能です。そんなものを今使う価値があるのか? 懐古 中学生や高校生の頃にハマっていたのが MSX です。MSXに触れていると、当時に戻ったような懐かしい気持ちになるわけですね。そればかりに浸っていてはいけませんが、若いころの気持ちを思い出して今の原動力につなげるのは、悪いことではないと思っています。 そして、昔の MSX のソフトを入手しては動かしてみるというのも、当時を懐かしむ気持ちが強いです。 憧れ 当時は学生の身分ですので、次から次へとソフトや周辺機を買ったりはできませんでした。当時憧れたハードやソフトを今手に入れて少し動かしてみることで、当時手に入れられなくて残念

    #7 私にとって MSX後継機 とは?|HRA!
    zu2
    zu2 2026/06/13
  • #2 開発のモチベーション|HRA!

    はじめに 今回は、開発のモチベーションはどこから来るのか?について書こうと思います。 長年の相棒 MSX は、私のような MSX愛好家にとっては長年の相棒のようなものです。いろんなデザインが揃っていた MSX は、自分の好みの機種を選ぶだけでもとても楽しかった。そんな子供時代からず~っと一緒の相棒です。 MSX2+ の次の機種として期待していた MSX3 が、当時は出なかった。MSXturboR で終わってしまったというのが大きな無念の一つ。そして、turboR は CPU こそ爆速になったのに、VDP が据え置きで足を引っ張っていたというのが悔しかった思い出の一つ。 動作はややモッサリしているけども、それでもなんだか憎めない相棒。それがMSX。 自分に少し技術が身についてきた。私は天才でもなければ、趣味で SoC を作れるほどの大金持ちでもない。でも、FPGA を使えば MSX の規模な

    #2 開発のモチベーション|HRA!
    zu2
    zu2 2026/06/13
  • #5 某BOOK|HRA!

    はじめに 当初、MSX BOOK という名前で販売開始されたノート型1chipMSX clone ですが、2026年現在 1chipBOOK と名前を変えて、FPGAデザインのプリインストールは無しで販売されています。 販売開始当時に、こちらもひと騒動あったのですが、その騒動のことを誤解している方もいるので、私の認識をここにまとめておきたいと思います。 OCM-PLD KdL氏と私がメンテしている OCM-PLD という 1chipMSX clone の FPGAデザインデータがあります。OCM は One Chip MSX の略です。 OCM-PLD の起源などは、どこかに書いた気がするので今回は省略します。 いわゆる勝手な改造版なのですが、西さんはこれに MSX++ と名前を付けました。 I give you the name MSX++ for your One Chip Msx.

    #5 某BOOK|HRA!
    zu2
    zu2 2026/06/13
  • #3 FPGAによるVDPの実装|HRA!

    1. MSXのVDPを作るMSX2/MSX2+/MSXturboR の VDP (Video Display Processor) である V9938/V9958 は、当然ながらもう生産しておりません。これを大量に入手することは不可能です。 コンピューターの構造を知るための教材としての意味合いが強い MSXDIY は、コンセプトの方向性から中身が見えることが必須となります。基板上に CPU や PSG、PPI、ROM、RAM 等と一緒に VDP も並んでいて欲しい。 入手できなければ、MSXDIY は成立しません。 そこで、VDP単独の動作を、FPGA で真似る(ハードウェアによるエミュレーター)を作ることで、この問題を解消したい。 ということで、2024年8月に FPGA で V9958 を作ってほしいと、西さんから頼まれました。 OCM-PLDのVDP実装を移植すれば良い、といった程度

    #3 FPGAによるVDPの実装|HRA!
    zu2
    zu2 2026/06/13
  • #17 いろんな考え方|HRA!

    はじめに 今回は、ちょっと休息な感じで、私がどうしてMSX2++/MSXturboR+ の設計に取り組んでいるのか、つらつらと書いてみようと思います。 1990年代前半の当時 私はまだ学生で、MSXマガジン等に載っていた「MSX3に関する記事」を見てワクワクしていました。ところが、出てきたのは MSXturboR という、なんとも奇妙な機種だったわけです。ただ、それでも「がっかり感」よりも「ワクワク感」の方が強かったと思います。 高校の入学祝いだったか何かで、FS-A1ST を買ってもらって使ってみると、MSX-BASIC が猛烈に速くなってて「凄い!」と思うわけですが、計算の類いはもの凄く速いものの、表示更新が伴うものは、余り速度が変わらないということにだんだんと気がつき始めます。 VDP が更新されてないから遅いのか・・。惜しいなぁ。 ということで、大学時代には PC-9821 に浮気

    #17 いろんな考え方|HRA!
    zu2
    zu2 2026/06/13
  • #6 FPGA MSXtR|HRA!

    はじめに 2026年4月22日現在。FPGA MSXtR の状況を書いておこうと思います。 FPGA MSXtR FPGA MSXtR とは、MSX2++ を実現する前のステップとして作るものであり、最初の試作基板ができました。まだ中身は詰まっていません。 FPGA MSXtR 試作1号機 TangNano20K FPGAボードを 2個と、RaspberryPiPico2W を 1個載せています。動作させるときは2つの FPGA を載せる必要がありますが、USBからの書き込み時には2つ載ってると正常に書き込めないので、中身を作っている最中の現在は、1つずつ載せた状態で作っています。 スペック 細かいスペックについては、まだ伏せておきますが、おおむね MSXturboR相当で、VDP は V9968 を載せているとだけ書いておきます。 キーボードなどは、RasPiPico2W に USBで接

    #6 FPGA MSXtR|HRA!
    zu2
    zu2 2026/06/13
  • #1 アセンブリ言語は難しくない|HRA!

    はじめに 気分転換に、Z80のアセンブラ入門を書いてみることにしました。高等テクニックではなく、あくまで入門です。想定している対象者は、MSX の性能を大まかに知っていて、MSX-BASIC で簡単なプログラムを組めるくらいのコーディングスキルがある人です。 もちろん、そうでない人も読んでいただいて構いません。 以降、「Z80の」を省略します。「Z80のアセンブリ言語」→「アセンブリ言語」といった具合に。 アセンブリ言語は難しくない アセンブリ言語でプログラムを組むというと「すごく難しいんじゃない?」と感じる方は、結構多いのではないかと思います。特にこの記事を読んでみたいと思った方々は。 しかし、アセンブリ言語自体は難しくなく「どのようにしたら絵や音を出せるのか?」「どのようにしたらボタンの入力を得られるのか?」「どのようにしたらゲームのような動きを作れるのか?」そう言ったアセンブリ言語と

    #1 アセンブリ言語は難しくない|HRA!
    zu2
    zu2 2026/06/13
  • #3 ソフトウェアの重要性|HRA!

    はじめに 今回は、私の「コンピューターにおけるソフトウェアの重要性」について書いていこうと思います。 ソフトウェアの重要性 コンピューターというハードウェアは、その上で動作するソフトウェアが無ければ、まったく何もできない置物になってしまいます。 例えば、MSX の BIOS や MSX-BASIC もソフトウェアです。MSX-BASIC で組まれたプログラムもソフトウェア。ゲームソフトもソフトウェア。ハードウェアに指示を与えて、表示や音を作って人間にわかるアクションを起こしてくれます。ソフトウェアが無い状態で起動しても、画面表示は黒いまま、音も出ない、キーボードに触れても何も出ない。 当たり前のことではありますが、ソフトがないと何の役にも立たないわけですね。ということで、コンピューターにとって、必須の部品であるわけです。 MSXにおけるソフトウェア 昔のMSXと互換性をもっているハードウェ

    #3 ソフトウェアの重要性|HRA!
    zu2
    zu2 2026/06/13
  • #4 ソフトウェアの柔軟性|HRA!

    はじめに #3 の話と関連して、ソフトウェアの柔軟性について少し書いておきたいと思います。 ソフトウェアは柔軟か? ハードウェアよりも柔軟性が高いのは間違いないですが、では何でも柔軟に変えていいかというとそうでもない、というのが私の認識です。 もっともユーザーに近いところにあるアプリケーションソフト(例えばゲームソフトだとか、ワープロソフトだとか、そういう後から追加して動かすソフトのことです。)は、そのアプリケーションソフトの責任元がある程度柔軟に修正することは可能でしょう。バグ修正だけではなく、昨日の追加や削除。ただ、販売時に「これができる」と売り文句にしていた機能を、販売・リリース後に削除してしまうのは、理由の如何にかかわらず、購入者は「不誠実」と感じるのではないでしょうか。そういう意味では、アプリケーションソフトでさえ、何でもかんでも柔軟に変えていいわけではないといえると思います。

    #4 ソフトウェアの柔軟性|HRA!
    zu2
    zu2 2026/06/13
  • #6 Hello, world! ROM の挙動[3]|HRA!

    はじめに 今回は、hello.asm のプログラムコードの中身について説明するとともに、そこに登場する Z80命令について解説していきたいと思います。 スクリーンモード変更スクリーンモード変更BIOSエントリ chgmod chgmod は、コール手順のところにあるように Aレジスタに「スクリーンモード」の番号を入れる必要があります。ld a, 1 で、a に 1 を代入しているので、行17~18 の 2行で、MSX-BASIC でいうところの下記を実行することになります。 SCREEN 1 画面クリア画面クリアBIOSエントリ cls これは、コール手順「なし」なのでただ呼ぶだけで作用します。chgmod した時点で画面はクリアされているので、これは無くてもいいとは思いますが、プログラムのサンプルとして参考になると思い、入れてあります。 文字列表示文字列表示 BIOSエントリの中身をくま

    #6 Hello, world! ROM の挙動[3]|HRA!
    zu2
    zu2 2026/06/13
  • #7 Hello, world! ROM の挙動[4]|HRA!

    はじめに 今回は、Hello,world! で使った全命令を順番に解説していきます。 命令一覧LD CALL RET JP JR OR INC たったの7種類です。7種類で、Hello, world! は実現できるわけですね。まぁ、文字列を表示するだけですが。 LD ld a, 1 ld hl, s_hello ld a, [hl] LD命令は、上記の3つが使われています。 LD <書き込み先>, <書き込み元> こんな記述になっています。書き込み先と、書き込み元は同じサイズでなければなりません。片方が 8bit で、他方が 16bit の組み合わせはありません。 LD  A, 1 これは、Aレジスタに定数 1 を代入します。Aレジスタが記憶する値が 1 に代わるわけです。 LD命令は、Z80の中で最も多く使う命令だと思いますが、何でも自由に指定できるわけではない点に注意が必要です。 8b

    #7 Hello, world! ROM の挙動[4]|HRA!
    zu2
    zu2 2026/06/13
  • #8 PUTSサブルーチン|HRA!

    はじめに 今回は、PUTSサブルーチンの内容について掘り下げていこうと思います。 PUTSサブルーチン PUTSサブルーチンのコードを貼り付けます。 PUTSサブルーチン アセンブラの1命令で実現できる処理は非常に小さい単位になっています。その代わり、CPUのクロックである 3.579545MHz の数クロックで処理を終えられるようになっています。(最近の CPU はだいたい 1clock) 何か実現したい小さな単位でも、アセンブラにとってはまだ1命令で表現できない大きな単位であるケースがほとんどです。 「文字列を表示したい」、こんな要求に対して MSX-BASIC であれば「PRINT命令」がほぼそのまま対応していますので、解説書を見ていれば割とすぐに目的の処理を実現する方法にたどり着くことができるでしょう。 しかし、アセンブラはそうはいきません。 とにかく1単位が小さいわけです。そのか

    #8 PUTSサブルーチン|HRA!
    zu2
    zu2 2026/06/13
  • #44 MSX2++キャンセル騒動とその顛末|HRA!

    はじめに 2026年3月20日の発端に見えるポスト以降を見ると、一見すると西さん側が突如怒りだしているように見えている人が多いと思います。しかし、振り返ってみると私の行き過ぎた発言も多々ありました。西さんも私も、既に過去の事案と気持ちを切り替えていて蒸し返しを望んでいません。当初この note は 1万文字を超える長文になっていましたが、詳細に振り返りを書いていた部分(全体の 70%)はバッサリ削除しました。その上で、皆さんにお伝えしておいた方がいいだろう部分だけを残しています。 MSX2++はゲーム機なのか?いや違う 騒動の中のポストの一つ、西さんの下記のポストを見てみます。 MSXturboRはVDPの開発に失敗したのでCPUだけアップグレードして出しました それと9958と9990を両方搭載することは値段が高くて出来ませんでした だから2026年の今、次にしなければならない事は 新し

    #44 MSX2++キャンセル騒動とその顛末|HRA!
    zu2
    zu2 2026/04/05
  • #42 MSX3|HRA!

    その通りです 僕の頭の中をアクセスしたみたいですね 凄い凄い — 西 和彦 Kazuhiko Nishi (@nishikazuhiko) January 30, 2026 MSX3ってなに? 1983年に登場の初代MSX から、1991年登場の MSXturboR までの「ホームコンピューター」として、様々なメーカーから発売された統一規格のコンピューターが MSX でした。 初代MSXからは 40年以上。MSXturboR から見ても 35年以上が経過している 2026年現在。MSXの生みの親である西さんが、MSXと名の付く様々なものを発表しています。 従来のMSXの延長上にある MSX2++/MSX2#。それ以外にも、メニーコアのスーパーコンピューター。AI を処理する AIコンピューター。自動車や飛行機まで。 昔のMSXを知っている人にとっては、MSX3 と聞くと「昔のMSXの後継機

    #42 MSX3|HRA!
    zu2
    zu2 2026/03/23
  • #43 FPGA MSXtR|HRA!

    また新しいバリエーション? MSX2++ を作るうえで、最大の難所は R80の設計だと思っています。新規に自分で好きなように設計するよりも、既存の回路と互換性をもった回路を設計する方がずっと難しいのです。 そのうえで、内部バスも高速にする、複数FPGAで実装する、細かい機能も機能アップする・・・もう盛りだくさん。でも、全部組まないと動く状態にならない。こりゃ、バグっても原因追及に時間がかかってしまう! なら、まずは簡単なペリフェラルのリファインから進めたらどうか? それなら、MSXturboR が、R800という高速CPUに対して周りがついてこない問題があるので、MSXturboR を題材に作ったらどうだろう? そんなことを漠然と考えていた時に、Y8960 Cartridge を作ってる中で、下記のようなことに気が付きました。 SerialSRAM なら高速にアクセス出来て、接続ピン数も少

    #43 FPGA MSXtR|HRA!
    zu2
    zu2 2026/03/23
  • #40 Y8960 Cartridge [その2]|HRA!

    はじめに 今回は、#39 に書いた Y8960 Cartridge の続報です。入れる予定だったOPL3コアを見直すことにしました。 OCM-PLD に搭載されている OPL3コアは、NextZ80 という高速な Z80コアを内包しており、そこで動作する「かなり古い MAME 用の OPL3コアをベースにしたソフトウェアエミュレーション」であることがわかりました。 問題は「ソフトウェアエミュレーションであること」ではなく、「かなり古いMAME用のOPL3コア」で、残念ながらこのコアの評判が悪いという情報が、複数よせられたのが見直しのきっかけです。 OPL3コア断念 いろいろ探し回った結果、残念ながら「OPL3 の組み込みやすくて、再現性レベルも悪くないもの」が見つかりませんでした。 ソフトウェアエミュレーターで良好なものは存在しているので、それを移植するか?という話も出たわけですが、Nex

    #40 Y8960 Cartridge [その2]|HRA!
    zu2
    zu2 2026/01/31