[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でシェアする