[FM]FULLMSX for BLOG

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

メモリに書いて読む ワークエリアを理解する 脳トレなど

2021-03-07 07:50:48 | MSXマシン語適当講座

 MSXユーザーのみなさん、お久しぶりです。
とりあえずマシン語は難しいイメージですがVRAM、RAMを活用できればよいと思います。
MSX2のVRAMはスプライトの座標を保存している番地があるので
例えばこの部分をマシン語にして動かしてみるとよいですね。
 この講座かWebの講座にはVRAMにあらかじめスプライトパターンを準備して
保存しているVRAMアドレスを操作してマシン語で動かしています。
当時はこんな感じでスプライトを動かすことができるゲームが流行ったそうです。
MSX2の環境でも驚くほど速いです。
ジオシティーズアーカイブだったかなと機会があればさがしてみたいです。

さて、今回はメモリについて簡単に説明したいと思います。

 メモリに文字を入力して何かキーを押すと書き込んだ内容を表示するアプリです。
試しにFULLMSXを入力してベリファイしてみました。

メモリはMSXパソコンの場合は0000hからFFFFhまでありますが
空いている場所の調べ方があるのですが煩雑になるので通例として、
アプリが使っているメモリとワークエリアがないC000hを開始番地にしています。

プログラムはFULLMSXの文字数をLEN(れんぐす)で調べL=7が入ります。
次にF,U,L,L…とC000hからC007hまでFOR命令で1文字ずつデータを入れます。

入れた内容が入っているかを確認するため(ベリファイ)を210行でしています。

POKEでメモリに書き込み、VPEEKでメモリの内容を表示します。
これでVPOKE、VPEEKにすればVRAMで同様のことができたりします。
プログラムの都合で文字データはC001hから入りC000hはデータは空です。

わかりやすいようにベリファイを加えてBASICなどでは文字列という定義ですが
文字列や文字はなく00~ffh、すなわち0~255の数字をコードに変換しています。
メモリのワークエリアはこんなふうに1バイトごとに使われています。

 またこのベリファイ部分を応用すれば参照するメモリ領域にデータがあるかどうかを
調べる方法にもできますね。

ワークエリアのアドレスは例えばFD9Ah~FD9Fhのように6バイトとかにして
キリ番(??0h)を使うので~Fh以内ににすることが多いです。

今考えるとファミコンは99機までとか10進数で構成されているように思っていましたが、
そんなことはなく理論上16進数は可能ということがMSXパソコンでわかりましたね。
ビットをフルに使えば0~15まで計算することができます。

4×4で16ですから4x3で12(0~11)で3ビットで11をキャリーにすればできなくないかな。
いろいろと考えると面白いと思います。

例としてはDOSコンソールでTYPE README.TXTというコマンドを入力すると
TYPEコマンドを実行中にREADME.TXTをロードさせるにはDOSコンソールで
README.TXTをメモリに書いておきTYPEコマンドの内部でデータがあるかどうかを調べて
データがある場合はそのファイル名をロードさせるプログラムを組むような感じになりますね。

こんなふうにパソコンに文字や数字を記憶できるようになります。

 建築やプログラマーなどクリエイターの思考する力は脳トレには凄く良いと実感しました。
やめるとそこから思い出すまでブランクがあればかなり時間がかかります。
デバッグ作業はこれが原因で動作しないのではないかということを考えたりします。
過去の経験から検証しエラーのない見えない間違いの存在を認識するのが難しいです。
目指す学生さんや現役を引退した方も続けることをおすすめします。

 あと勉強すると頭がいたくなるかたは勉強を適度にして休憩をとりましょう。
勉強する時間は短くてもよいです。今日はやめても継続することが大切ですよ。
あとは脳は運動と同じで疲れます。先生とか保護者の方はよく読んでください。

45分というのは短距離走です。3時間以上は持久走です。軽度の認知症とかではなく勉強不足です。
そう考えると勉強が嫌いな人はオーバーペースになっている可能性があります。勉強になれない状態で
オーバーペースになると頭がすぐに疲れて歩いてしまい完走ができなくなりリタイアする状態です。
勉強を始めるときは勉強をしている人よりがんばっているので疲れがたまりやすいわけです。
 慣れていないことを始めるのでペースをつかみきれていないことや試験が近いとか期日が近いとか
プレッシャーがある時ですね。
まず、最初は遊ぶ感覚で学習していき徐々に学習量を増やしていけば効果的ですね。
勉強が嫌いなお子様でしたら、小学校低学年でやっていた学習法を実践させてみてください。
例えばこんなふうに教科書を写しながら重要部分をマーカーしていってもいいですね。
 プログラミングでも慣れているコーティング作業から苦手なコーティング作業になると
どっと疲れますね;そういうふうに慣れないことは非常にパワーを使います。

頭が真っ白になるのは一時的にメモリが足りなくなりそうなので処理量を減らしてやればいいですね。
処理量を減らすには冷静な判断、ようするに答えに近いまたは手順どおりにやればいいのです。
一番簡単なのは学校でやっていたことをマネして実践すればいいと思います。

実は日本のLAN教育はすごくカンタンな問題で誰でもできるものが多いです。
パソコン学習をうまく取り入れれば、例えば動画サイトなどを活用する方法などもいいと思います。
今は環境は恵まれているので勉強を始めやすいです。
そこから応用していけば勉強法が増えてきますし持久性も上がります。では

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 中間コードの変換 BASICプログラムの解析 プチコンあれこれ

2012-02-13 23:50:18 | MSXマシン語適当講座

 MSXBASICでは各命令を中間コードとして変換されています。
実行後にBEEPをC0hと変換しなくてもいいように
中間コードはBEEPという文字がコードのC0hに変換されて
あらかじめBASICインタプリタでテキスト入力の時に前処理をしています。
 このように命令をコードに変換する文字を予約語と呼んでいますが、
BASICを拡張する場合にC0hではどの予約語の命令を使っているかわかりません。
 そこで、メモリの情報を知るために予約語を辞書のようなツールを作る必要があります。
では試しに予約語を含んだ命令を増設してみましょう。

 既にダウンロードしたプログラムにBAS-COM2.BASがあります。(お!)
このプログラムは実行中の行番号のアドレスを取得(F6B7h,2バイト)の
BASICのワークエリアを参考にしています。

これを実行してSPACEを10回押すと#DEBUGという文字が出てきます。
Enter(RETURN)キーでSyntax errorという通常のエラーになります。
プログラムに戻りList 118を変えます。
118 #DEBUG

118 #BEEP
に変えて実行してみましょう。
ここでC0が表示されればよいですね。
#タ(C0)となりましたね。これが中間コードです。

118 #BEEP12
プチコン風にやってみました。C0の後に0Fh、12は0Chになります。
書いた文字がコードに数字が16進数に変換されるのは、すごく便利ですね。
MSXBASICは次世代のBASICを想定していたような感じがしますね。

後はIF A=&H0C THEN~というふうに組んでいけば機能できます。

昔、テープロードに失敗して不明な文字が出たりしたことがありませんか?
その正体は中間コードから変換された命令でした。

こんなことも★

プチコンでプログラムを入力してみました。
本当に数行でプリセットされたキャラが表示して動かすことができます。
そして何と「カタカナ」が50音配列でよいですね。
漢字は自作で文字セットを作っていくようで日本語変換はできないようです。
ペンタッチに違和感があるので、いろいろとサンプルプログラムをやってみます。

気になる解像度はDSソフト256×192でDSとほぼ同じです。
ということはMSXと同じということですね。MSXにしても違和感がありません。
文字色が256色というところも、何でだろうと疑問に思います。
 このようなロースペックでは開発しがいもない気がするのですがね。
残念なことに3DSの800×240にはできないですね。

なお、プチコンはDSメモリに作成するもので、セキュリティ上
ネットからプログラムをダウンロードしたりすることはできないようです。
全てプログラムをペンで入力していきます。あしからず。


 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 ダイレクトコマンド解析最終回 BW2012の2月の最新版 次世代MSXコンソール

2012-02-10 00:08:02 | MSXマシン語適当講座

>デバッグなどでも、ダイレクトコマンドで
>#DEBUG (1,0,0)
>というふうにBASICで入力できるんですよ><
>いちいち、実行後に隠しコマンドを作る手間がいりませんよね。
>F55Ehから#が入っています。00が終了コードです。
>もちろん、マルチステートメントにすれば2つのダイレクトコマンドを実行することも可能です。
>MSXBASICのデバッグ環境がよくなるのは間違いないです。

 前例ではメモリ書き込みプログラムにコマンドを使いました。
エラートラップをかけて未定義命令を定義する方法でしたね。
そして、今回は「誰でもコマンドができる」ことを目標にします。
 この#の命令はBASICプログラムがロードされていないと実行できないので、
別のプログラムでは違うダイレクトコマンドを作ることができます。
例えば#MENUでメニューのプログラムを起動したり、
#BWでアイコン表示プログラムを起動したりとできます。

またMSX-DOSプログラミングができない方でもBASICでプログラムができれば
コマンドで起動できるようにすることも可能です。
とりあえず’(ダッシュ)を識別子にしてウチのSPを起動するなら

#'SP

もう、これでSPのプログラムが起動できるようになります。
また設定できるプログラムで

#'MM とか
#'VF とか
でもいいでしょう。

また、CALLコマンドでは小文字が大文字になってしまいますが、
この方法ならば

#'DotEditor

というふうに現在のプログラミングスタイルに変えることもできます。
また、もう1つはたしか、
MS-DOSに異なるバージョンのプロセスを入れることができたと思います。

例えば起動時に3.1のCOMMAND.COMから
2.8のCOMMAND.COMを呼び出すやりかたがあったような気がします。
プロンプトでCOMMAND.COMを呼び出し
COMMAND
で2.8のコマンドがロードされて3.1で2.8のコマンドが使えるようになります。
そしてEXITで起動時のCOMMAND.COMに戻ります。
それが進化して、現在ではWindowsに戻るコマンドになりましたね。
さておき、EXITのように起動時のプログラムを
再ロードさせる操作をすれば別のプログラムを実行させたりできますね。
これはおいおい作ると考えて、コンソールをやってみたい。
背景がブラックで1chipMSX Consoleの下線が白から水色に変わりスーッと表示して
Playstation2の起動画面のようなあんな大きな丸ではなくて点でもいいから
コンソールになるような、何かできそうな感じだなぁ。
作りました!ENDコマンドとMENUコマンドを作っておきました。
ENDでBASICダイレクトコマンドに戻って
#MENUで何と、MENU.BASが起動してしまいます。
試してみてください。

 今回の公開ではBWの300%高速化もやっています。
LOADINGがなくなり10秒かかっていたのが、3秒ほどで
今まで以上に画面の表示が速くなりました!
 お待たせしました、2月11日よりFULLMSXサイトで公開を開始しました。

こんなことも★

 Wiiと同じ方法で購入してDSでポイントをチャージしてプチコンをダウンロードしました。
使ってみると効果音がプリセットされているので、
今までのBASICと比べると使いやすくなっています。
文法を見るとBASICですが、かなり方言がありテクニカルな感じがします。
ファミリーBASICもやった事があるので、どんな感じになるか楽しみです。

 ウチのフリーソフトでDL数がメールで届きます。
からかいメールも多少ありますが、ここで言っておきます!(お!)
多い月でDL15、少ない月でたったのDL3です。はっきり言って
作家活動は甘ったるいものではありません。
 いろいろなシェアウェア作家にお会いしましたが、
「小遣い稼ぎにはいいけど副業には全くなりません!」
「あんた勘違いしていない?」
ほぼ同人と同じくボランティア活動です。好きでやっている方が多いです。
 たしかに好きでやっています。(笑)
もし、仕事がなく生計を立てていくなら閉ざされた樹海の中を必死にでるような覚悟が必要です。
 どこからか光が差し込んで道が見えるような才能があるなら別でしょうけどね。
でも、代表していいますと
今は一歩一歩楽しみながら夢を見ながら気楽に作家活動をやったほうがよいです。
一人で活動するより推薦者をさがし賛同してくれるかたを探すことです。
 閉塞的になりすぎると全く開けなくなります。
震災後は大変なご苦労をなされているかと思います。仕事をさがしてがんばってください。

 

 現在も作家活動はやっています。何か芸術的な作品をカンタンに直感でできないか考えています。
時には何の変哲もない画像を映画のようなバカ博士のように研究中です。こんな感じですかね。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AssembleToolsの公開 ASC、DB命令 OpenOfficeOrg 創作ラーメン? PS3 

2012-01-19 17:12:02 | MSXマシン語適当講座

いよいよ公開間近となったAssembleToolsの紹介をします。

 MSXBASICで誰でもハンドアセンブルできるようにアセンブルの必要なツールを揃えました。
まず、F6キーで作成する行番号と命令するコマンドを選びます。
次にF7キーで作成する行番号にDATA文形式でプログラミングされます。
ここで、Enterキーを押すと貼り付けをします。F8キーはJR命令で指定する場合です。
F9キーでラベルを検索します。F10キーでマシン語命令の実行です。
 今までのMSXBASICのスタイルをそのままにして、Shiftキーを押しながらのボタンを
押すようにしました。
 MSX-DOS(2)を持っていないMSXユーザーでも試せると思います。
またBWに付属しているものは実行可能なプログラムに仕上がっていますので、
DEFUSR=&HD000:A=USR(0)でMSXと表示できます。
 最初は手始めにMSXをMSX2とかMSXturboR、1chipMSXと表示させてみながら
やってみてください。

ただ今、テスト中でもうしばらく待ってください。
順調にいけば1月20日に公開します。

さて、前回のダイレクトコマンドの入力処理を加えて試してみました。
今まで使えなかった命令が使えると何だかグッときます。
そして、今回はこの時点のプログラム(2012-0121.lzh)を公開します。
ブログではB3の説明になっていますが、B4に更新されていますので
とりあえず、2012年の1月版としてatools-1201.zipで新サイトで公開します

FULLMSX for WEB(新サイト):
http://wood-art.main.jp/www-hp/fullmsx/

#RUNを実行してメモリの配置情報の表示の後に
DEFUSR=&HD000:A=USR(0)でMSXと表示されます、
まだ、テストのデモ段階ですからプログラム作成段階までなっていません。
例にならって、オペコードをカスタマイズすることもできます。
さらにカスタマイズして書き換えた場合も
MAC-R2B3.BAKをBASに書き換えればもとどおりになります。

MAC-R2B4ではASC,DB命令を追加します。
MSXBASICのエラーメッセージなどマシン語モニタを見ると見えてきます。
この命令が追加されるとメモリにデータを書き込むことで
文字列のデータを表示させたりできるプログラムを作ることができます。

仕様についてはM80ではDB 'これはデータとしてつかいます。’になりますが、
MSXBASICでは文字列の特性を生かしてダッシュ不要のASCを作りました!

ASC(アスキーコード)命令を入れます。
これは文字表示のデータとして使います。
例えば100行に使うなら、こんな感じです。
100 DATA"#ASC","これはデータとしてつかいます。

さらにDB(デファインデータバイト)命令も加えて00Hを1バイト加え
16、10進数判別も付ける予定です。
110 DATA"#DB","00"

これで文字を入れて終了コード00Hを加えることができます!
 さらに書き換え部分の仮設定を解除したいです。

マクロをMSXBASIC命令化まで考えはありますが、
現段階ではいつになるかはわかりませんね。とりあえず残しておきます。
 それよりも一押しして中間コードも表にしてみたいなと思っています。

■おすすめのアセンブラ

Super-Xの行方もnyyrikki氏がメンテを行っているということで、
どうなるのかと思えば一安心です。
日本語訳のマニュアルがBaboo!Japanに載ってあるようです。
見てみましたが、基本的な説明が割愛されているので、
マシン語を熟知したベテランでないと理解がキツイかもしれませんが、
ウチのブログ記事の反復的な説明と合わせればわかる程度の内容です。
 もちろん、Super-Xは裏RAMにプログラムがありますから後で乗り換えもできます。
MSXシステムも僅かにわかってきたような気がします。

Super-X:
http://msx.fi/nyyrikki/software.html

MSXResouceCenter:
https://www.msx.org/downloads/utilities/miscellaneous/super-x-122

Baboo!Japan:
http://www.baboo.net/

こんなことも★

 今回はジオシティーズのアクセス解析のHTMLをOpenOfficeで編集する方法を書きます。
まず、アクセス解析をなぞって、OpenOfficeで表計算シートに貼り付けします。



こんな具合に貼り付けることができます。ウイザードもないのでラクですね。

さて、荷物も閑散期に入って一段落したところです。
体調がよくない方も数名います。風邪が流行っているようですね。
 朝の冷え込みが一段と厳しくなって、体にはつらい日が続いています。

クリームシチューの残りが1杯分ありました。
 シチューよりもラーメンが欲しい気分でしたが、残りのシチューも捨てがたいので、
カンタン創作即席ラーメンを作りました。
 まず、どんぶりの水2杯を残りのシチューに入れてグツグツとさらに煮込みスープにします。
どんぶりは即席のとんこつスープと沸騰したシチューのスープを入れます。
どんぶりはよくかき混ぜて、鍋のスープにラーメンの麺を入れてほぐします。
 最後に麺を入れて完成です!

食べてみると80円のパックのラーメンが200、300円のラーメンに変身します。
 具は既に煮込んであるので、馴染みもよくおいしかったです><

さらにドロリとしたシチューではないので
鍋の片付けもしやすくなるので一石二鳥です。

「1月はそこそこ仕事があったからPS3買ったんじゃないの」
え?
「だって俺より働いているし、飲み会もなかったし」
う…
Playstation3買いました!!!
「なっ」
「マジで、本当かよ。」
でもゲームは…ない。ゲームまで買うカネはなかった。
「体験版でソニックとかあるよ。ただコインを集めて進めばいいゲームで」
「たしかコインがライフだったかな。でも、スゴイ高速移動でビックリするよ」
ふうん、ソニックかぁ。あとで試してみよっと。
「ウチもあまりセガブランドはあまりやらないけど、カンタンだし難しくないからおすすめだよ。」

とまぁPlaystaion3を買ってしまいました。
画面は美麗なグラフィックでゲーセン並みの機能が家庭で楽しめるイメージどおりのものです。
Playstation3とは無縁でしたが、まぁ半分は会話のネタにでも使っていきたいと思います。
本体は今までのゲームマシーンに比べると重いです。
とりあえず、このままでは縦置きできないので梱包材を下に敷いて縦置きにしています。
ブルーレイも使いましたが、部分的なシーンだけブルーレイの映像といった感じでした。
DVDよりも広角の映像を楽しめます。
ウチのPrincetonの安価なディスプレイですが、入力信号で自動判別できる機能があるようで、
パソコン[d-sub]とPlaystation3[HDMI]を自動で切り替えてくれます。これは便利です!
ネットはPCの無線アクセスポイントがあるけんPlaystaion3からホームページを見ることができます。
ウチのホームページもアクセスできました!
Vitaの機能もありますから将来的に考えれば便利です。

さらに250GBをSATAのPS3対応HDD交換すれば1TBにできるようです!(え!)

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 MSXBASICワークエリア:BUF コマンドを作る マシンの強み

2012-01-15 12:08:40 | MSXマシン語適当講座

 今のところ、#リストというコマンドになっています。
これは暫定的な措置で、BUFを解析しだいCALL命令のように
ダイレクトコマンドを有効にすることにしたいです。

BUFは直前に入力した文字を記憶するメモリ領域で例えばABCDEFと入力して、
「Syntax errror」と表示される時点に記憶されています。
アドレスはF55Ehから256バイト確保されています。
アセンブルツールスはエラートラップをかけて、技とエラーを起こします。
この状態で、この領域を参照すれば直前のコマンドを調べることができます。
これができれば、CALLなどの形式にこだわらずにBASICプログラムがあれば
何とダイレクトコマンドもコマンド文字制限の限界突破が可能になります。

デバッグなどでも、ダイレクトコマンドで
#DEBUG (1,0,0)
というふうにBASICで入力できるんですよ><
いちいち、実行後に隠しコマンドを作る手間がいりませんよね。
F55Ehから#が入っています。00が終了コードです。
もちろん、マルチステートメントにすれば2つのダイレクトコマンドを実行することも可能です。
MSXBASICのデバッグ環境がよくなるのは間違いないです。

さらに折角ここまで組んだので、プログラムでエラーが出た場合もやってみました。
今度はF6B7hからBASICテキストを参照するアドレスを参照します。
上位下位逆転ですから、F6B8,F6B7の順番でアドレスが示されています。
サンプルでは118 #DEBUGで、どのようになるのかを参照してみることにしました。
この場合はDEBUGと表示できますが、CLSなどの予約語が入ると
中間コードで格納されます。

これを全てマシン語にするならば、マッパ機でエラーフックを書きかえて空きメモリにプログラムを書けば、おそらくよいでしょう。
サンプルでは将来BASICを(拡張?)する場合はこんな感じになると実感できそうです。

 最近は「MSXを離れる前に何かを」と、思い始めました。

MSXは他の機種にはもっていない強みがあります。
例えばMSXBASICでListを入力するとプログラムリストが流れるように出てきます。
そして、流れている間にCTRL+STOPでBreakさせて、カーソルを斜め移動させて
プログラムを書き換えます。
 このようなインターフェイスは他にはあまり例がありません。
カーソルを斜め移動させるプログラムを入れたということは
 MSX開発者がMSXBASICに夢中になったのではないかと思います。
さらに前景色と背景色のBOXのような二色の設定があるのも謎ですね。
考えられるのはMSX2ではSETADJUST命令が追加されて
上下左右の画面の調整が±4ドットできるようになりました。
アナログテレビでは若干の補正をしていましたから前景色の幅が変わるので
テレビの調整用と考えてもよいかもしれませんね。
MSXユーザーは無意識にやっているので価値感は気がつきません。
そう考えるとMSXのシステムは確かに古いですが、
SCREEN1などのテキストモードを残したいと思ってきました。

こういう他にはない強みはマシンにまだあるのかもしれませんね。
MSXパソコンには隠されたパワーがあるのかもしれません。
「くだらない」と思えば捨てるし、「いいね」と思えば残るしおもしろいものです。



 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

マシン語を来年も続けます マルチカラーモードでビット 割り込みフック ブログの予定 FCでMSX動画

2011-12-28 00:35:34 | MSXマシン語適当講座

やっと来年の予定がきまりました。
Z80マシン語を続けて解説していきます。
ドットを大きくしたマルチカラーモードで
算術演算シフト命令でビットごとに

2進数は101100010というように1と0のパターンです。
10よりも■□の方がわかりやすいですね。
これでパターンが変化する感じが見えてくるでしょう。
10 SCREEN3
20 PSET(100,100),15
30 I$=INPUT$(1)

ちょっとサンプルで見てみましょう。
BlueMSXで実行してみてください。■が表示されましたね。
大きなドットを点灯させてビットイメージの表示を
やってみたいと考えています。

前回の続きのBWはBlueMSXは漢字の一部が何故か
豆腐になるので「日付と時刻」と表示できませんでした。
1chipMSXで取り込んで、画像を表示させてみました。

ブレが酷く変色していますが、こんな感じになっています!
アイコン風表示メニューは長いので
これからはBWという仮称名称でいきます。
何の頭文字かは現時点では謎扱いとさせていただきます。

 さらにMSXBASICのフックの使いかたも
ちょこっと今年やりたいですね。そうですね、
 今、手元にMSX-FANの1992年3月号があります。
徳間書店から発行されたもので、表紙は「シャウトマッチ」のキャラクタと
「ルーシャオ」のキャラクタを紙粘土でイラストを描いたものでした。
当時のMSX-FANはほとんど処分して数冊あるだけですが、
 ここの「マシン語の気持ち」という特集に掲載されたプログラムを
打ち込んでみました。
 当時はBASICのプログラムリストがありました。
これをSCREEN0:WIDTH40の1行の幅が40サイズで
入力は文字の位置が合っているかを確かめながら打ち込んでいました。
どんなプログラムか、1回も実行したことがなかったので、
やってみました。
F6に例えば22:03:14なら220314とKEYONの状態で
Shiftキーを何度も押すと秒がカウントされているのが、わかりました。

MSXのフックというのはMSXBASICのシステムはROMになっています。
MSXのROMは書き換えることはできません。
そこで、拡張させて新しいシステムと加えたりする場合はフックを使うこともあります。
システムはアクティブの状態になっているので、フックを不用意に書き換え
てしまうと動かなくなることがあります。
この特集ではJPのコードでD000Hにジャンプさせるワザを使っていますが、
1バイト書き換えることで切り替えさせるようにしています。
最初jは今までの9D9FhにあるフックのプログラムをC9でカットして、
待たせて時計のプログラムをアドレスD000hに書き込み、9D9Fhの
C9以降に00D0を加えます。
D000hにフックに書かれていたプログラムを付け加えて準備完了です。
JPはC300D0(シーサンゼロゼロディーゼロ)ですが、
そして、C9をC3に変えて時計のプログラムと9D9Fhにあったプログラムが
時計のプログラムのアドレスで実行されるようになります。

フックのプログラムはプログラムで割り込み禁止(DI)させて
プログラム実行させて後で割り込みを許可させる(EI)というふうにやるようです、
IはインターラプトでDI(DisableInteraptディザブルインターラプト)、
EI(EnableInteraptエナブルインターラプト)ですね。
この命令はDOS/VのBIOS設定ができる人ならば
英文の単語の意味はわかると思います。

フック以外でもたしか、VRAMの書き換えとか必要のようでしたね。
以前にテストしてできなかったのも、これが原因かもしれません。

DOSまたはBASICで音楽を演奏させたり(MGSDRV)と
フックはMSXのいろいろな用途に使われています。

こんなことも★

Zoomeの動画サイトが終了して、AAACafeも12月で終了しました。
そこで、FC2のFC2動画に移行することにしました。
現在は準備中ですが、fc2.comからFULLMSXで検索してください。

あと数時間後で31日になりますが、次回の話をすると
GraphicWorks最新版を使って描いてみました。
ここだけの話ですが、最新版はプラグインなしでも
広告が貼り付きますが動作します。そんなケチ臭いことはやりません。
これはサーバーチェックが通常は入りますが、
ネットワークが混雑したり繋がらなかったりすることが多いので
1回だけキャッシュすればそのままです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Z80アセンブルツール 操作説明 倉庫整理 セブンでDS NEWラブプラス体験版

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

また時間を前倒しします。書きかけですが、いち早くアップします。
 今回は23日公開するアセンブルツールの操作説明をします。
23日12:00前後にFULLMSXサイトでダウンロードできるようになります。
 あらかじめプログラムされたマシン語データを実行したり、
ブログを見ながらリストから選んで入力することもできます。

「アセンブラではないの?」と思うかもしれませんが、時間がないのと
ニーモニック記述※のみの場合はハンドアセンブルをしない限りは
マシン語モニタとはあまり縁がないようにになってしまうからです。

アセンブラはたくさんありますが著作権の問題で公開することができません。(ホント)
しかもSHEMはMSX-DOSのDOSのシステムディスクがないと起動できないので
MSXのものが全くなく最小限でアセンブラ環境を整えるならこのブログを頼るほかはありませんTT
誰か著作権フリーのMSX-DOS互換のOS作って!!とまぁ

※マシン語は00~FFで3EとかC9とかのオペコードを言語みたいにLD A,xxとかRETとかにした記述です。


ここ数日考えていましたが、よい方法が浮かばない部分があります。
JR命令なんですが、ま、とりあえず、できたところまでを書きます。
%はラベルです。MSX-DOSなどではバッチファイルなどに使うマークですから
イメージとしては合うかなと、思いました。
*はラベル番号です。プログラムで使うもので通常は表示されません。
今まで書けなかったラベルもコメントにすることで
ネームとしてラベルを分類したり、自由に書けます。
さらに# ラベルからラベル?PROGRAMというふうに検索機能が入り、
分類したネームのみを表示することもできるようにしました。

BASICのプログラムモードはツールはありません。
そこで、エラーではないのにエラーを起こす(エラートラップ)でプログラムを復帰します。
プログラムを実行してセットアップします。そして動作的には何もしないで実行を終了します。

表を一目見るとうわっ!と思うかもしれませんが、慣れれば倉庫の品物のようなものです。

BASICでF6キーの# OPコードを押します。すると先行入力がかかります。
ラインナンバー?2115
を入力します。リストのプログラムを起動します。
EQUは疑似命令でイコールです。CHPUTと記述すればA200hになります。
CHPUTはシステムのラベル名です。

CHPUT EQU A200H

>LD A,32

CALL CHPUT

のうちMSXのM(32h)
LD A,32の場合は



このリストの中の3EにカーソルをもっていきEnterキーを押します。

前のプログラムを起動して、再び終了して、F7キーの# はりつけを実行します。すると


これでA000hの文字データが貼り付けされました。
PRINT命令で2115行のプログラムを自動作成しOkでプログラムの実行を終了します。
ここからカーソルで下を数回押して? HEX$~と入力して3Eの後のコードを調べます。
足りない部分のコメントとコードを書いて、画面の位置でEnterキーを押します。

このように2115行のプログラムが変わりました>v</



そして、プログラムを書く(テスト書き込み)とこのような表示になりました。
なお、公開版ではテストβ版でまだ変更される場合があります。
少しアプリの操作方法になれて欲しいのでテストにしました。
とりあえず、形になれば通常版で公開しますが、全て完成するのは来年?です。

こんなことも★

 今年は去年に比べてかなり仕事が減りました。
倉庫管理の難しいところは荷物の場所と種類と数量を覚えておいてさらに
 もっと細かないろいろな品番などの条件などもあって
パソコンで管理していると言っても間違いないロケーションを作って
PCにデータを入れていくところです。難しいですね、そうですね~
たとえば「あなたは多くのフォルダに何の書類のファイルが入っているか、」
「ある程度わかりますか?オーバーに言えばパソコンの全てのフォルダとか」
「最低でも使っているフォルダはわかればいいです。」
もし、それがわかれば倉庫管理のスキルに適合しているかもしれません。
トラックの配送でも、次の配達の荷物はどこにあるかとか、
配達がスムーズに行くようにどうやって積むかを考えます。

 これを読んで無職のかたでもパソコンでイメージトレーニングしてみてください。
資格がなくても特技ができれば仕事は必ずありますがら、
 「仕事がない」のではなく、「できそうな仕事が見つからない」という事です。

 とは言ってもウチのPCはゴミだらけというのも正直なところです。(おい)

このくらいにして倉庫整理ができたり時間が足りないことはないのですが、
今年は先方の方々にカレンダー配りを早めにやっています。

こんにちは
「あ、どうもどうも。最近ゼンゼン来ないから気にしていましたよ。」
これは来年のカレンダーですが、よろしければどうぞ。
「早いねぇ。もう来年かい。」
今年は練馬には数回でしたから、今年は来ないかもしれないので
「そうだよね~月何回かありましたよね。」

そんなこんなで、練馬、板橋と行ってセブンで弁当にしました。
たしか、彼が「NEWラブプラスの体験版を見たい~」って言っていたなぁ。
昼休みだしDLしてみるかとセブンでDSの吊看板の下で操作しました。
んーDLが遅いなぁ。。。終わった。
あと、10分くらいだな休憩はまぁタイトルだけでも。
起動したぞ。なるほどカメラで彼女を撮るゲームか、たしかフォトジェニックとか
昔ゲームがあったなぁ。あれもそんな感じだけど、
PSPのフォトカノというゲームも出るらしいし、でも何かカメラと言えば
一眼レフだったし、何かそんなにオートカメラ機能って魅力を感じないよな。
美少女を撮るっていい感じは難しいところだけど、
被写体以外にシビアな部分ってある感じがする。ブツブツと。。。
会社でまた彼に会った。

「どう?DLした?」
あ、DLしたけど、こんなのありそうなゲームじゃん!
「いいんだよ、DLできれば。DSやらせて!」
あ、いいよ。体験版は30回だけど別にやらないし
「ありがとう!何かおごるよ。」
本当にいいの?
「いいよ。」

とまぁ彼はラブプラスのファンらしく、
ラブプラスの新作の話をブログに載せましたが、
発売が2月に延期の話を聞くとなんだか、ちょっとテンション下がりますね。
確かにテレビブロスの表紙になったりもしていましたからがっかりです。
都内のセブンは便利なものがあるんですね。
人口が違えばサービスも違うのかなと、思いました。
イーショップでダウンロードできる話があるようですが、何の発表もありません。
全国展開はあるのかないのかわかりません。
例えばマクドでもある地域のみ限定メニューとして発売して、
それがすぐに全国に展開するわけではありません。
いろいろな要因ができなければ、そういうことにはなりませんから、
どうしても欲しいなら遠方でも行けば確実に手に入ります!

カチカチっと。あれ?メール。。。
「もう、ニンテンドーeショップで配信されているよ。」
えっ、そうなんだ。
「同じものだけどウチのDSでやれるようになったよ。」
そう。よかったね。
「何かゲームやってる?」
ぷよぷよをやっているよ。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 セルフアセンブル環境をつくるその2 マシン語コード自動入力 3DSアクセスポイント

2011-12-19 17:23:56 | MSXマシン語適当講座

 今回は10時間前倒しで書いて、さらにアセンブル環境を作り半分までできました。
昨日はMSXのマシン語の話に今年で一区切りにしたいので、
ネット検索などでもZ80コードを印刷すると数ページになってわかりにくいと考えます。
 Mマガには一切掲載されていないマシン語コード表を集約してみました。
全3ページ(3画面)に何とかおさめることができました!
ベータ版の解説をしていきます。
 とりあえずはMAC-R2BというプログラムでDATA文で書いていきます。
エラートラップをかけてダイレクトからBASICプログラムの復帰をします。
F1キーから#リストを押します。ここで作成する行番号を入力します。
2030を入れるとZ80-CNVBを起動して下の表からコードを選びます。 

コピーしたいコードを選びます。MAC-R2Bを再起動します。
F2の#はりつけを押します。これで自動入力されました。
2030 DATA"’LD   A,n","3Eとなります。ニーモニックのコメントと変換コードが入りました。
 小文字のeとかnnには数字が入ります。この数字はコードの後に16進数で入力します。
eは前回の相対アドレスの2の補数の16進数でnは0~FFまでの数値です。
文字コードを16進数に変換するにはPRINT HEX$(ASC"A")のコードです。
LD A,'A'でしたら、3E41という具合です。普通の数字も全て16進数に変換します。

 最後の3ページの空白には主要フラグのZ、Cyのフラグ説明を載せました。
これを使ってマシン語をプログラムすればよいと思います。
実は3画面のリストは読み込み速度を上げるために全てPRINTにしました。
BASICのメモリがB000H後半まで使っています。クリップボードはA000Hに確保しました。
そんな仕様でMAC-R2Bはプログラムが小さくDATA文を使ってある程度大きめのマシン語
プログラムも最適です。プログラムはテスト中のベータ版です。こまめに保存をしてください。

もし、プログラミング中にLISTするとBASIC命令が連続したり
見覚えのない5桁の行番号のような場合は保存しないでください。
パソコンをリセットして保存したところからやり直してください。

 今回のダウンロードではMSXの技術資料を使ってMSXだけでプログラムができるようにします。
これでマシン語プログラムの作り方から実行するまでが、なんとなくわかってきました。

ホームページなどに掲載した技術情報は期限切れにより今後は削除される場合があります。
 極力ダウンロード資料の利用をお願いします。

時間があればVRAMから文字コードを読み込んでコピペする方法もできますが、
ひとまずは公開用のプログラムに仕上げていきます。
 
こんなことも★

 クリスマスも近くなってきました。3DSのプレゼントを検討している方も多いのではないでしょうか?
DSはファミリー向けの商品でした。PSPは子供向けの中学生、高校生向けと思います。
それでもスタイルの変化で小学校高学年から使うかたも多いです。
まぁこれは店頭デモを見ている客層から推測したものです。

大人が考えるのはDSをもっとPSPに近いスタイルにできないか?という事ですね。
3DSはPSPを買わなくてもDSで3DSの新しいDSのクオリティを楽しむことができそうです!
ペンでも指タッチでもできてXbox360に近い感じにも見えて、
ちょっと普通のDSとは違う感じがします。そういえば…
サイトのF1 2011のニコニコ動画は動画変換が酷すぎます。実際は全く違う感じです。
前回はだいたいのスペックを書きました。厳密に言えばWii同等らしい声もありますが、
WiiよりはPlaystation2が一般的なゲーム機として考えてみました。
 さて、3DSを買ってもインターネット環境がないと本体の更新などができません。
私のPCでは無線LANではなくて、ただのLANケーブルで接続しています。
 そういう環境ですから本格的にすべて無線LANにすると1万5千円程度もかかる計算です。
これでは誰でも考えてしまいます。そこで、DSを3DSステーション設置店で使う方法があります。
これはおもちゃ売り場に行って大きなモニタの前で通信する方法です。
 この方法であればスグにできますが、ダウンロードがかかったり、行く事をちょっと考えてしまいます。
その他の方法として、公衆LANのアクセスポイントをさがす方法もあります。
それでも、自宅でやりたいと思ってきます。私のようにパソコンをよく使うのでしたら
 Windowsパソコンをアクセスポイントにする方法があります。
もっと安く何かないかと電気店で調べてみると
「携帯ゲーム機をインターネットにつないで遊ぼう」というUSBのLANカード?がありました。
実物はかなり小さな通信機器です。メーカーはプラネックスという
Windows98のDOS/V組み立てでPCIモデムなどを製造していた通信機器製造会社だったと思います。
一般的には知られていない会社ですが、ご存知の方もいるでしょう。
価格は1000円くらいでした。これを説明書の手順どおりにやって
DSで設定すると何故か4件くらいアクセスポイントがありました。どうやら近隣の家のLANのようですね。
セキュリティコードを設定してつなぐことができました!
 これでWiiのようにすぐに使うことができます。

多少のPC設定が必要です。
説明書どおりにやれば問題ありません。

3DS:Codemasters 3DS 「F1 2011」
http://game.watch.impress.co.jp/docs/news/20111125_493454.html

Planex: 携帯ゲーム機をインターネットにつないで遊ぼう

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 セルフアセンブル環境をつくる SCREEN8 3DSその2

2011-12-16 00:20:39 | MSXマシン語適当講座

前回からアセンブル環境から始めてMSXの次世代のプログラムを考えていきます。
前回のバイナリ書き込みプログラムに手を加えて使いやすくしてみました。

テキストファイルとDATA文からのハイブリッドな書き込みに対応しました。
テキストファイルからは16進コードに’で注釈を入れるような用途がよいですが、
DATA文では”(ダブルクォート)で囲めば、1行2列になりコードを後に書くことができます。
テキストエディタがなくてもDATA文を使ってBASICでテキストエディタの代用をする方法です。
最初にニーモニックで記述して、それから変換すれば
プログラミング中の時に便利かもしれません。しかも、間違いなくコピペもできますね。
擬似命令を#にしてみました。#ENDでバイナリ書き込みを終了します。

このように実行できます。’はコメントですから、何を書いてもかまいません。
すべてコメントですから漢字BASICで漢字で書くこともできます。
今のところサンプルプログラムでTEST書き込みになっていますから、
解除すれば下のようになります。

DEFUSR=&HD000:A=USR(0)
MSX
Ok

またアドレスの変更もAD=&HD000を変えることで開始アドレスを変えられます。
BASICで言えば行番号が作成できました。ここまでのプログラムを12/23に公開します。
そして、来年にはラベル対応にします。ラベルファイルを別に作ることにします。
D00C:CDA200は逆アセンブラでCALL 00A2Hになりますが、
ラベルがある状態ではCD#001というコードで000H~FFFHの4095まで
登録できるようにします。これだけでも十分です。
マシン語は一見何のプログラムだったか、わすれることもあります。
例えば"J-IN_SCROLL03"という感じに何のプログラムのモジュールかまで
書くことができます。文字は250文字くらいまで書けます。
 このような記述は8ビットのプログラムでは無理があるかもしれません。
そこでDATA文から識別コードでフィルタをかけてプログラムから
ラベルをリストさせます。
Label_name                                Code
%CHPUT                                    A200(00A2h)
%DATAWRITE                            #032
Ok

アセンブラではなくてアセンブルですから、変換もすべて手書きという訳です。
それでも、プログラムを加えたり消したりと少しラクになります。
とは言っても長々のDATAではメモリの書き込み時間がかかり、
「何だかめんどくさい…」気がします。

いっそのことアセンブラの311スタイルで直にアドレスに書きたい気がします。
SCREEN8のプロンプトを作ったり環境を整える必要があります。
311のアセンブラはLD A,と入力すれば検索してくれますが、
ディスクですから時間がかかります。でも、SCREEN8の入力システムはできています。
311を改良してみることも視野に入れてみたいですね。

今年はMSXBASICよりもマシン語に力を入れたコンテンツが多かったです。
書き込みプログラムは少し改良して数回ブログを更新して
今年のアセンブル環境の話はここまでにしておきます。

こんなことも★

3DSを使ってみました。だんだん慣れてくると浮き出てくるより、
画面に奥行きができて、プラケースにオブジェが入っている感じに見えます。
さっそくモンスターハンターを体験してみました。
3Dモードは今までのDSにはない高輝度で鮮やかな色です。
キラキラ光るようなイメージのオブジェのような感じです。
おしゃれなゲーム機という印象もあります。
ポリゴンはローポリでプレステ2に近いクオリティだろうと思います。
3Dはピントを合わせるのに苦労します。例えばキーボードを見たり、
画面を見たりというように数秒で目を動かす動きは大変疲れます。
3DSでは文字表示と画像の奥行きが異なると疲れますね。
といいながらも風景を見ながら動かすゲームならそうは疲れません。
まぁ私の場合、ゲームは気分転換程度で短時間プレイのゲームになるでしょう。

3DSは体験してみてから購入したほうがよいですね。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 ハンドアセンブル MSXBASICで実用化 アドレスカウンタ 3DS

2011-12-13 00:15:36 | MSXマシン語適当講座

MSXBASICで最終的に読み込む時は極力メモリを使わないようにして、
マシン語領域を広くもつことにしてみました。

これはマシン語ローダで16進ダンプリストをテキストファイルで書いたものを
メモリにロードするだけのプログラムです。
これに’を識別子にして’*Mainなどと注釈にラベルを入れてみれば、
もっとわかりやすいかもしれませんね。1画面程度のプログラムで
# ORG 0D00Hと#で擬似命令をいくつかは作ることができます。
ファイルでマシン語ダンプにコーティングできるので
アセンブラを進化させて、ループなどをプログラムで自動化することもできます。
いま考えているのは「アドレスカウンタ」です。
これはエディタに付ける機能ですが、あらかじめORGを設定しておくと
自動でアドレスを計算するものです。
自動と言ってもかなり手動に近い操作ですが、
メリットはアドレスとラベルが表示されるのでラベルの長さ制限もありません。
さらにアセンブラから逆アセンブラが見える感じです。

今までは固定したアドレスをPOKE命令で書き込む方法でしたが、
データを書き、アドレスを後で配置することで自由に変更できます。
とりあえずはDATA文でソースを組みながら流れを作ってみて
改良したり、できればこんな感じのツールまで考えていきます。

こんなことも★

 今年はなんと言っても地上デジタルになったことがありました。
これでアナログテレビは使わなくなりましたと、言えるものでもありません。
まだゲーム機はビデオ端子で使っているわけですから;
 なかなか難しいところでしたが、Playstation2のハード、ソフトを売って
3DSを買いました。やっとDSですね大きな決断でした。
 まず、予想したのはPlaystation2は確実に市場から離れていくことです。
今は大事にしているソフトでも時間が経てば価値が低くなるという結果になりますね。
 かなり多くの名作(激レアもあったんです。ボソ…)があったので、
名残惜しいところもありました。
購入できそうな価格をなるべく最小限に抑えたいので、Playstationはやめました。

さて、3DSはPSPよりは画面が小さいのですが、
 立体視できることが一番の魅力でキャラクタ、動物など画面が
浮かんでくるゲーム機はおもしろいと思いました。
また、画面は2つあるのである程度はカバーできます。
さらに価格を気にすることなく買うこともできますし体験版もよいですね。
とは言っても「Wiiを買ってDS購入まで何年っ経ったか!」
やっぱり後で買うと思ってもなかなか買えないものですね。

でも、辛口で言えば「3Dは付録の3Dシートと変わらないじゃないか!ま、動くけど」です。
最近は付録で3Dシートを見ることがないのですが、
下敷きとかファイルとか正面から見ると3Dが浮かんできます。
でも、そういうイメージで3Dシートの付録の販促もよいかもしれませんね。

Nintendo 3DS フレアレッド  

Nintendo ポイント1000

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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マシン語適当講座 プロンプト 16ビットレジスタで加算する アセンブラのつくりかた

2011-12-06 00:00:38 | MSXマシン語適当講座

 

今回は画面をグリーンディスプレイみたいにしてOkを
SETPROMPT"よろしい”
に変えてみた。MSX2ではこんなOKを「よろしい」とおふざけができる。
よろしい

今回はPSET.ASMのアドレス加算のモジュールを確かめてみた。

 1300ラインからは簡易デバッグ用のプログラムです。
レジスタの値を調べたいのでアドレスに書き込みをしています。

EXでDEと交換をして、Dレジスタに上位、EレジスタにHLレジスタの数値が入り
下位の数値がD100HとD101Hに入るようにデバッグ処理をした。

BASICで見るときは
PRINT RIGHT$("0"+HEX$(PEEK(&HD100)),2)
PRINT RIGHT$("0"+HEX$(PEEK(&HD101)),2)
とプログラムは0FEなら、右(RIGHT)から2つでカットしてFEという具合になる。

このような感じです。

この方法ならばブレイクポイントのアドレスの入力も必要ないので、
アセンブラからマシン語にできる環境ならば便利だろうと思います。

プログラムを調べてみると繰り上がりも問題なく機能しているようでした。
PSET.ASMはどこの不具合か謎ですね。
「まだ、修行が足りないようじゃ。」と、なるか、長いプログラミングは苦手ですね。
それでも納得いきません。もう一度読むと
>ラベルは先頭から6文字までが有効で7文字以降は無視されます
「エーッ、そんな窮屈なアセンブラなの~うーっ。」
「やっぱり、M80がいいかなぁ。」

フラグが機能しているかを調べる場合はJP ZとかJP Cとか
条件ジャンプをしてBEEP音で確認したりもしています。

次回はSTICK関数で遊んでみます。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 マシン語のブレイクポイント 今後の配色

2011-12-03 23:44:37 | MSXマシン語適当講座

今回はマシン語のデバッグ方法を書きたいと思います。
このweb講座もいろいろな話をしてきました。
もうそろそろ、プログラミングに挑戦している方もいるのではないかと思います。
そこで、今回はマシン語のブレイクポイントのやり方を説明します。

マシン語のデバッグで部分的にプログラムが動作しているかを
確認することがあります。
マシン語を実行した後にBASICへ戻るとBASICプログラムの
動作に変わり、レジスタとフラグの情報が変わってしまいます。
PC言語ではブレイクポイントを指定して設定することでできますが、
マシン語の場合は常にマシン語を実行しているので、
ブレイクポイントの範囲をアドレスで指定します。

今回は重要なところなので赤でやってみました。

いつものようにインラインで書きアセンブラを実行します。
PASS2にEndAddress 0004と表示されますね。



次にマシン語モニタで配置するアドレスを指定します。
*RA000
今回はブレイクポイントですから、A000H+0004H=A004Hとなります。
Gコマンドの第二オプションに加えます。
*GA000,A004
これでA004Hで中断した時の情報が表示されました。
Aレジスタが3EH、CP 3EHですから、SZ HのZフラグが1になります。
PNCのCフラグは0ですね。

 青画面を赤画面にしてみましたが、この赤はやはり安っぽい赤ですね。
MSX1の画面はパソコンが普及し始めた時代で、画面が赤になったり青になったりすることが
大変珍しいものでした。当時はグリーンディスプレイが多かったですからね。
 これからはMSX2の配色で画面を飾るほうがよさそうです。
ファイナルファンタジーなどゲームの流行の色を見ると金属的なメタル色という感じがします。
メタル色の含まれていないゲームは何か古びたイメージがするんですね。
そんなところで、赤は深い赤とメタルのエッジできめていけば、グッとよい画面でしょうね。



そうすると、太字は論理演算で画像をかぶせただけでこんな欲張りな画面イメージになりました。
入力しながらフラグとかラベルを調べたりとちょっとおもしろいかもしれません。

次回はPSET.ASMの16ビットレジスタの加算のモジールを検証していきます。
勉強をするついでにお伝えできればと思います。そういえば、
16ビットで加算できることを知らないで8ビットで加算していきましたね。

★16ビット演算命令を使って加算処理を作る
http://www.geocities.jp/fullmsx2/u-yan/mon-basic.html

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座!? 全ソースをマシン語へ  OK音 アクセス解析 ラブライブ? ポイントカード

2011-12-01 20:23:20 | MSXマシン語適当講座

前回に続いてプログラミングしています。

アスキーのセルフアセンブラでMSXBASICで入力してみました。
ウチのアセンブラはTAKERUのMマガのディスクサービスのものです。
 

このような感じで’(ダッシュ)を加えてアセンブラを実行すると
VRAMに書き込まれて、マシン語モニタでVRAMからRAMへロードします。


MSXセルフアセンブラはMSXBASIC版とMSX-DOS版の2種類あります。
MSXマガジン永久保存版1に収録されているのはRev1.4はMSX-DOSですね。
このRev1.3はちょっと古いMSXBASICのアセンブラです。
このアセンブラではPUBLICとかEXTRNなどの擬似命令は対応していません。
まぁ、ちょっとしたプログラム向けですね。

このようにエラーなくできましたが、Z80は

Aレジスタで計算するので何となくパズル(謎)のような感じです。
レジスタの数値の移動などをしたりもしたので、
どこか数値が反映されていないのでしょうか?
それともフラグのプログラムが足りない感じもします。
このあたりもチェックですね。

とりあえずは最後のBEEP音まで確認しましたが、
少し時間をかけて手直しが必要な感じですね。

最後のBEEP音が出れば正常に動作しているわけです。
MSXBASICではOKが出ますがマシン語ではOK音にしているわけです。

プログラムの長さが209(D1H)バイト程度のプログラムだったようですね。

さて、12月になりました。今年最後のFULLMSXサイトのPV数を発表します!
 Windows7にはMicrosoftOfficeがないのでOpenOfficeを使いました。
まず、webページのHTMLの表を反転させて、コピーしてOfficeで貼り付けました。
そして、表計算の表にして、いろいろとアクセス頻度別に分類します。
 残念ながら100PVも満たないページも多くありました。
こういうページは消すか生かすかの今後の判断材料にします。
 ポータル的なページはアクセス数もかなり伸びています。

これは過去3年間のPV数が含まれています。アルファベット順で発表します。

1chip-msx.html 1329PV

これは1chipMSXについてのページです。
まだまだ、利用者があるようですね。

download.html 1186PV

MSXサイトには幾つかのダウンロードセンターがあります。
有名なものでFSW倉庫、GIGAMIXダウンロードセンターなどです。
ウチもページが増えすぎて何がどこにあるのかわかりにくいので
1つのページからダウンロードできるようにしてみましたが、
おかげさまで1000PVを達成しました!

fdd.html 1010PV

MSXパソコンを愛用してFDDの不具合がおこることがあります。
そこで、FDDに関するページを書いてみました。
これもまだ1000PVと根強い人気です。

mon-basic.htm 2688PV

MSXマシン語モニタをMSXBASICで使う方法を書いています。
カンタンなところから専門的なところまで書かれています。

mon-begin.htm 2973PV

MSXBASICからマシン語を始める方向けのページです。
おかげさまで3000PV近いアクセス数を記録しました。

mon.html 8102PV

マシン語モニタの一般的な説明とMSXの説明です。
これも8000PV(えっ?)とかなり高いアクセス数です。
Z80のM80の擬似命令などCP/Mの情報など
力を入れてきました。

msx-mac1.html 3458PV

いつかはMSXマシン語を使いたいとハンドアセンブラから
ニコニコ動画を見ながら適当にスタートしました。
MSXの資料は豊富にあるので、うまく活用しました。
最初はモニタアセンブラは不慣れでした。
必要な時に使っている程度で、プログラミングはやっていませんから。

msxdos-free.htm 2558PV

MSXDOS2とWindowsを比較しながらファイルの説明と
MSXパソコンの拡張子ファイルのリスト
FILMTNライクなMM(マルチメンテ)のダウンロードなどです。

msxdos-tools.html 1087PV

MSXDOS2TOOLSの便利さを知ってもらうために書きましたが、
当初はPVが伸びなくて放置していました。
やっと1000PVに達成しました。

msxfan.html 1964PV

「MSX-FAN」 (徳間書店インターメディア)のMSX雑誌の話題です。
ここではMSX投稿プログラムのゲームの紹介などです。

msxi-sp.html 1011PV

MSXで多色のスプライトをつくる話題からグラフィックスの話題まで
広がったページです。
このページから各講座に入るインデックスページになっています。

msxplayer.html 3521PV

公式MSXエミュレータMSXPLAYerの設定方法などの話題です。
当初はMSXエミュレータのblueMSXの書き込みもありましたが、
ページが長くなりましたので別のページにしました。
まだ、どちらのページもアクセスの伸びもよいです。

 まだMSXコンテンツのページの伸びは震災の影響で鈍いのですが、
少しずつ伸びています。
 ここ数ヶ月の傾向として、マシン語に関するページの伸びがかなり良いですね。
今持っているMSXで「何かできないか?」と考えるユーザーがまだ多いと実感します。
ウチでも来年からMSXBASICも入れながらマシン語メインで進めていきます。

そして、次回はフラグを再度チェックしてみます。

こんなこも★


最近は仕事は忙しいです!
アフター5は体を休めたりしています。
会社では体調が優れない方も多いです。
中には「つらい仕事の気分転換にゲームを夜遅くまで毎日する」と
いう生活をやっているようです。
私はね、彼のやりたい気持ちはわかります。でも気力はあっても体は疲れています。
そういう意識があまりにもない事がかなしいです。
今の仕事はウチらが2年前の仕事をよりもかなりきついんですよね。
今年はひどい;まぁ、私は2日に1回でも体を休めて欲しいと思います。
体を休めると疲労も半分程度になるので、がんばれますよ。
帰って体を休める日は水曜日です。木曜日は月曜日のようになれば何とかなります。
ウチもこのへんにしておきます。

さて、何だか仕事の話をしてしまいましたね。
そういえば、G’sマガジンの2012年1月号がp542まであるそうです!(エーッ)
12月号はp502まででしたから、いやぁ驚いています。
知り合いが「マンガが終わらないよぉ」と、うれしい悲鳴のようなことを言っていました。
でも、ここまで厚くなると2つの本が1つになったようなオトク感がありますね。
p1000といえば電撃マオウがありましたね、そういえばガンガンもこのくらいのボリュームかな。

ラブライブはtwitterでRTしたりしています。

「僕らのLIVE 君とのLIFE」2010年8月リリース オリコン167位
んー音楽はかなり力があると思います。ラブライブに限ったことではありませんが
気分が沈んだ時とか憂鬱な時に音楽を聴くと気分が良くなることがあります。

ラブライブ:「僕らのLIVE 君とのLIFE」
https://www.youtube.com/watch?v=1n-eKFx7FoU

                -ラブライブ 2014年 ポスター-
((ブログを書いたのは2011年なんです。それから3年でかなり変わりましたね!))

そう考えると音楽はテンションアップの力(魔力!?)のような気がします。
問題はどれだけの人が曲を知っているのかですね。多くの人が知れば魔力も増大します。
近所の人から地域の人さらには全国の人など大きくなることは夢ではないでしょうって実現しました!
新曲(新技!)が出れば続いていけると思います。さて、おき

まぁ近所のTSUTAYAを利用していますが、ポイントカードを1回も使ったことがありませんでした。
今回は93円の端数の93ポイントをポイントカードに使ってみました。
あとはローソンもPONTAカードがあって、これも現金に還元できるのでよいです。
仕事とか付き合い(おいおい)でカードを作ったりしていましたが、
ポイントをすべて換金してもOKです。ただカードを再発行する前に「ポイントを使ってあとは現金で払います!」
としないと新カードにすぐにポイントが入らないんですね。
こんなに便利なカードというのは最近知りましたね。「PONTAカードでタバコも買えるかな。」

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXマシン語適当講座 フラグあれこれ 割り算のモジュール ベースでエラー音

2011-11-27 12:55:27 | MSXマシン語適当講座

ゲームなどでフラグ判定をしたい場合にBIT,SET,RES命令を含んだ
マシン語プログラムを組むとプログラムをわからないようにできます。
例えばGOTO480と実行するとエンディングになったりするプログラムがあったりします。
ビットのフラグは複雑な条件などにも使えそうな感じがします。

さて、前回の終わりの続きです。
実はハンドだったのでD000Hに仮配置して実行してみました。

SUPER-Xのアセンブラのモニタです。
 左からアドレス、コード、文字コード、アセンブラという順番になっています。
もう1回おさらいしますが、BASICの変数はまったく使えません。
メモリに書き込むか、直接レジスタにマシン語で数をセットします。

Z(ゼット)フラグはCP nの数とイコールの時にZフラグが1になります。
NC(ノンゼロ)は逆の一致しない場合になります。
Aレジスタの数が1、CPのnの数が2の場合、1-1=0というわけです。
C(キャリー)フラグは繰り上がり、繰り下がりになった時のフラグです。
Aレジスタの数が1、CPのnの数が2の場合、1-2=-1となり、繰り下がりになります。
NC(ノンキャリー)は逆ですね。Zを含んだ場合になります。

ソースは(D000-D015H)で16+5=21バイトほどでした。
 前回の復習ですが、計算する前に計算をしない数を分岐してから、
計算させるようにしています。割り算は引き算を何回やったかをカウントして
Bレジスタに入れています。

LD A,64Hならば割り切れますので、レジスタペアAFのAレジスタはゼロになります。
カウントした数がレジスタペアのBCのBレジスタに32Hと入りましたね。
このモジュールができましたので、VRAMに書き込む準備が整ったことになります。

このように部分的にプログラムをしていきましたが、
やはりアセンブラが必要な感じになりました。
そこで、D000Hのアドレスからマシン語を書いていきましたが、
別のアドレスで仕上げていき、逆アセンブラでD000Hに戻すことにします。
 BASICのアセンブラはMSXポケットバンクのマシン語入門のものを使って
書き込みをしていきます。

次回は懐かしいのアスキーのMSXマシン語モニタの登場です。
MSXBASICのインラインアセンブラです!

こんなことも★

何か今でも通じるシンセっぽい音が欲しいと思っていましたが、
これなら、ちょっとMSXイメージが変わりそうな感じです!
夜中に目が覚めて、いびきの音とテレビのベースの音が妙に一致して

ちょこっとMSXでメロディを作ってみました。
 いびきの音?は(O2D)でベースの音が(O3D)とどうなったかといいますと
PLAY#2,"@33T80L8O2DO3DC16DO2D"
 でしたが、音が低いので1オクターブ上げました。

10 CALLMUSIC
20 PLAY#2,"@33T80L8O3DO4DC16DO3D"

結局はテンポ80の8分音符でオクターブ3のD、オクターブ4のD、16分音符でC
8分音符でD、オクターブ3でDというメロディで何か問題が発生したエラーの音になりました。
 ちょっと一発芸っぽいネタですね。C16でズッコケさせてDに戻しています。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする