[FM]FULLMSX for BLOG

詳しいMSXパソコンなどの情報はホームページで!
https://fullmsx.web.fc2.com/

MSXマシン語適当講座 オーバーフロー DM-SYSTEM2 メモリマッパ 再配置プログラム

2011-12-10 00:08:10 | MSXマシン語適当講座

結局、動作不良の原因はメモリ不足のような感じがします。
何度かアセンブラを起動すると途中で止まったりします。
 また1chipMSXの環境ですから、不具合がある可能性もあります。

さて、今回から少しプログラムを公開してみたいですね。
 1chipMSXなどMSX-DOS2で拡張されたRAMの操作をするシステムを
メモリマッパといいます。
今回はDM-SYSTEM2方式のアドレス表示に対応したモニタに変えてみたいと
思います。
MSXシステムの実行できる有効アドレスは0000H~FFFFHまでですが、
FFFFH以降は01 003Dというふうにアドレス欄を表示できるようにしてみようと思います。

カチカチ、やっぱ仕事の後にMSXは疲れるなぁ。
「&HED00を10進数にすると-4864ってバグじゃないの?」
あ、それは8000H以降はマイナスになるんだよ。
「マイナスのアドレスってどういうこと?」
FFFFHが10000Hになると繰り上がりオーバーフローになるんだよ。
「オーバーフロー?」
計算で使用できる桁数を越えてしまうエラーだよ。
「そうか、風呂の水を入れるとあふれるようなことが起こることか?」
まぁ;容量が越えてしまうからね。(まぁ、そうしよう)
「マイナスになることは風呂の水がゼロになるの?」
いやいや、浴槽の風呂の水は別の同じ容器に入れておくの(何だかややこしいな)
「そうすればあふれないんだ」
もう1つの容器はメモリを上から下にふっておき、上が0(満杯)、下が-65536としていけば(こんなもんだろ)
「そうか、そうすれば0になってもあふれないか」(よくわからないけど)
負のアドレス表現を作ってエラーを防ぐ仕組みでPCはいろいろと複雑だからね。
「ふーん」

この8000Hの符号反転で+1加算するとFFFFHは-1、0001Hは+1になるということは
アドレスの数値が64KBを越えるとゼロになる仕組みになっています。

8000と表示されます。数値は65535(FFFF)までできますが、
8000H以降を16進数に変換すると負の数になります。
このカラクリを壊さないとDM-SYSTEM2でメモリマッパのRAMのモニタ表示ができません。
まして16進数で表示させるので、少しプログラミングになりそうです!(+65536でブツブツ)

やっとできました。これが、つくりかけのメモリマッパのモニタです。

MSXのアドレスは通常4ケタですが、このモードでは6ケタを入力します。
FFF0Hから繰り上がって010000Hになっています!
DM-SYSTEM2では拡張メモリも1つのメモリ空間として管理されています。
MPは00~3FH(理論値)まで有効のようです。拡張RAMになると動きが少し鈍くなりました。
空っぽと思えばデータがギッシリの感じで、どこがいいのか分かりませんね。

そういえば今夜(12/10)は皆既月食なんですね、一度は望遠鏡で見たことがあります。
月の欠ける速さを感じたことがありました。確かハレー彗星の再接近の年でかなり昔です。

 そして、プログラム8K、データ8Kの8Kバイト切り替えで処理できるようなものを考えてみたいです。
MSXにはDOSにはシステムコール、BASICにはBIOSがあり、さらにBDOSとリソースがあります。
まずBASICでDOSの足りない部分をつくり、さらにDOSなどで仕上げる流れです。
 それにはBASICプログラムを極力分離させてディスクアクセスをしながらパートモジュールを起動させる
ようにする必要があります。さらにヘルプを加えてわかりやすい操作が欲しい><です。
 そんなねらいもあってマシン語を徹底して適当なところまで進めてきました。(何と!?)
今回でMSXを最後にしたい試みはワードを検索しながらアセンブラプログラムをつくることです。
ただ漢字表示をしたいので、MSX2+以降になりそうです。
この「よくわからないプログラム!?」は使うとすればVRAMを使ってメモリマッパは使いません。
ファイルは命令を種類ごとにするので、多く必要になります。

MSXパソコンで仮に仮想メモリの動作を想定すると0.5秒程度の読み書きのような
感じですからもともとMSXは処理が遅いので動作速度はあまり気にはならないと思います。
期待したいのはBASICに比べて検索速度が上がれば日本語変換ができるかなと
思ったりします。
まだ、実験段階ですから試してみないと何とも言えませんね。

さらにマシン語を解析して再配置できるように変えるBASICプログラムも公開します。
これはマシン語コードを読み取り、サーチしたコードを書き換えるものです。
それもよいですが、マシン語モニタとかアセンブラをどこかのメモリに入れないとできません。
そこで、BASICとマシン語共存させるには極力メモリを抑えるために
テキストファイルのコードをメモリに書くシンプルなものにして、できるだけメモリを空けることにします。
と、何やらスゴイ目白押しな感じですが、実は…来年のMSXコンテンツは未定なんです。(ガーン)

これまで、いろいろな解決のヒントをさがしてみました。
とにかく、やる気があれば、MSXはネットをしらべればドンドン進めることができると思います。
今年はSTICKの移動をやって終わりにしたいと思いますね。
そんなに急いでブログをやめることはしません。
いつも通りで、あと何回?かブログを書きます。

 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« MSXマシン語適当講座 プロン... | トップ | MSXマシン語適当講座 ハンド... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

MSXマシン語適当講座」カテゴリの最新記事