[FM]FULLMSX for BLOG

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

MSX2でアニメを アセンブラの快適な入力法 演算命令で試す LEFT$を使う お知らせ3

2011-03-12 00:01:24 | MSXマシン語適当講座

このようにアセンブラは256種類のオペコードがあって、
1つ1つ選びながらでは大変な時間がかかります。

そこで、アセンブラができる方ならばESCキーから
コンソールで検索をすることができます。
実は数日前に準備していたもので、
ちょっと説明します。


画像が100%では全く編集できないので拡大しました!

実行をすると2つのキャラクタを選択します。

テスト版ではLD A,と検索をしても0ヒットでした。
問題になったのはLDとAの間の空白でした。
ここを改良して、自動で水平タブで区切るようにしました。
例えば6桁目の場合、LDの場合はスペースを4つで6桁になります。
SUBの場合は7桁になります。そこで、

I$=LEFT$(I$,6)で6桁以下を切ってしまうことができます。

これでLD A,とかSUB Aとかスペースが入りオートフォーマットされます。

さらにSの変数に検索フラグを加えて、
検索の動作と通常の入力動作を切り替えるようにしました。

2バイトコードの検索とキーワードの検索方法を変えました。
キーワードの場合は3バイトコード以上を入力します。

さらにLD A,でもLD A,nとかLD A,Bとか多くのコマンドがあります。
このような場合は検索が終わってから、再検索を行うことができます。
検索中は時間がかかりますので、水色のプログレスバーを作りました。

こんなことも★

 東北地方から離れていますが、本が床に大量に落ちていたりと
まだ、仕事が終わっても片付けをしています。その後ですが、

 予想通り、東北の荷物はキャンセルになりました。電話応対に大変です!
音信不通で店の状態がわからないので保留している状態です。
一日一回、電話していたりといろいろと大変です。福島も困ってしまいます^^;
ご存知のように流通は日本海側から青森経由の盛岡になっていますが、
これは救援物資のルートで現在、一般の荷物は足止めされています。

東北に配送できるか、できないかは流通が混乱しているので何とも言えません。
仕事は残業が続いている状態でブログの更新は当分中止したいと思います。

 ケータイの緊急地震速報はちょっとビックリしますが、
備えることができるのでよいですね。
 ブログでは節電対策のためPCの使用を控えます。

昼はセブンイレブンも店内照明はかなり暗く、
さらに自動ドアは開いたままで空調は使っていない感じです。
病院も外来受診時間外のような明るさです。
夜はコンビニエンスストア、スーパーも閉店間際のような明るさで
何の店だかわからない程です。

関東では計画停電が始まりました。

地デジはPCを起動させている状態で録画するので、
とりあえず、数千円の地デジチューナとDVDレコーダで
DVD-RWで録画することにしてします。
BlueMSXは使わないで1chipMSX、MSX2などを使います。

PCは電熱器程度のワット数になっているものを
MSXを使用することによって発熱量を10分の1以下に落とします。
私は1chipMSX改ですから、MSX2+相当でテキストを書くことができます。
オンライン書き込みは今回くらいで止めたいと思います。

津波のかなりの残酷さを知りました。
町がなくなった地域もあり、部分的な被害が出た地域もあります。
死亡者も計り知れないものになっています。

東北地方から離れているからと油断してはいけません。
実は3月11日の最初の小さな地震が三陸沖の地震で
その数秒後の地震が茨城県沖のようです!
2つの地震が同時に起こった例のない地震でした。
M9.0 東北関東大震災と地震の規模と名称が変更されました!

地震の片付け、掃除などをやっていて
さいたま市にある会社ですが、鉄骨で鉄骨に損傷はなかったのですが、
地震の時に鉄骨と鉄骨の間柱のいわゆる軽天(けいてん)が曲がって
石膏ボードが落下しました。鉄骨の揺れで曲がったんでしょうね。
仙台に行った事があります。映像で仙台を見ると信じられない感じです。

夕方になって
ダウンロードの準備を始めて何とかダウンロードできるようになりました。
開発中のモニタアセンブラはBIOSのコールなどの動作チェックを確認しました。
ダウンロードしたファイルはMSXファイルになっています。

入力を終えたら、ESCキー、ESCキーで操作コマンドに入ります。
BSAVEと入力するとTEST.BINで保存されます。
実行はBLOAD"TEST.BIN",Rです。

ダウンロード先:FULLMSXサイト

---

週刊アスキーが届かない物流状況になっています。

私も読者だったりしますが、

>物流システムが回復していないため、
>週刊アスキーが届いていない地域が多数あるという報告を受けました。
>被災地域での通信インフラが十分に回復したと
>判断できた時点で全記事ページをPDF化し、
>公式サイト『週アスPLUS』にて無償公開することにしました。

これは東日本の物流システムが十分に回復するまでの間の措置のようです。

3/23現在の雑誌の物流の状況は発売日よりも
3日ほど遅れて入荷する雑誌があるようです。

 

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

MSX2でアニメを Z80の逆アセンブラ表示をつくる 入力のしかた

2011-03-10 19:23:38 | MSXマシン語適当講座

前回からヘルプを入れたチュートリアル風のアセンブラシステム制作に挑戦しています。
MSXにはSCREEN8では00~FFまで色をVRAMで表示させることができます。
よくMSX2でVRAM128KBという表示を見たことがありますね。
でも「RAMが64KBって何で少ないんだろう?」と思ったことがあります。
64KBは0000h~FFFFhまでのエリアなんです。8ビット機で計算の限界というわけです。
VRAMは64KB以下を切り替えて動作させています。
これがページでSCREEN5以降ではVRAM128KBをフル活用できます。
そこで、64KBを画像、64KBをデータとして使っていけることになります。(たぶん)

とりあえず、FULLMSXサイトにあるZ80の変換表のテキストから
MSXでヘルプメッセージを入力して作って、
アセンブラアシスタントの男の子と女の子を選択できる画面を作って
今はこの画面の制作になります。

VRAMの9000hから入力方式は16進数をデフォルトにしてみましょう。
9000hから9008hくらいの限られた範囲になっていますが、
次のページへとりあえず、進むようになっています。
アドレスの表示とニーモニックとマシン語の作成ができました。

入力が終わった行は暗くしてみました。構文はデタラメですが、
Z80のマシン語コード雰囲気はこんな感じになります。

例えばLD BC,nnの場合は正しくは
レジスタペアにすうちをいれます。というふうに表示します。
ここでEnterキーを押すとこのnnを入力するコンソールが出ます。

ここでhという16進数の指定の表示が出ます。
BCレジスタに数値をいれる命令のオブジェクトが決まったので
数値を入れるオペランドの設定に入ります。

将来的にはアスキーキャラクタのcとか
バイナリのbとか選択できるようにしたいです。

アセンブラではD000hを0D000hというきまりがありますが、
ここではD000と入力するとオートフォーマットされます。

このようにD000がZ80のマシン語コード化すると
00D0とリトルエンディアンになっているところもわかってくる。

こんなことも★

デモ版からテスト版に変えていきました。
ヘルプもこのようにチュートリアルのような感じが出てきました。

使った感じはオペコードがわかっていれば
思った命令が出てくるところがあります。
LDで検索するとLDが山のようにヒットしますので、
時間がかかります。
とは言ってもこのプログラムができれば

ハンドアセンブルよりも、かなりラクです!

 

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

MSX2でアニメを オペコードにコメントを 検索して選択 JPの例 JR命令とか

2011-03-08 21:23:30 | MSXマシン語適当講座

ごらんのようにオペコードにメッセージコメントを書くことができます。

例えばJPを入力すると 条件付きのジャンプもヒットします。

0:シュウリョウで検索を終了します。

無条件ジャンプはC3ですね。

JP 0D450h

と記述する場合は

JP nn

という表記になっています。

このように書きます。

こんなことも★

一時期よりも仕事は早上がりになってきましたが、
まだまだ忙しいです。

やってみたい事と言えば相対アドレスのジャンプ機能を入れたいです。
今まで絶対アドレスでやっていましたが、JR命令でできるところが多いです。
JR命令はJR 01hの場合はこのアドレスから+1飛んだアドレスで
すなわち次の次のアドレスにジャンプします。
逆アセンブラではラベルが使えないのでジャンプ先を数値で表しています。

JR命令を作成中にアドレスを移動すると
数値が変わっていく感じが見えると、ちょっとおもしろいですね。

今はニーモニックとオペコードを左にずらして9000h
固定でアドレスを表示させました。
BASICで例えると9000行のプログラムみたいな雰囲気です。
選択画面も長押しでヘルプ表示をカットして高速化させてみました。
BlueMSXは速いので1chipMSX環境を前提に設計しています。

 

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

MSX2でアニメを 整合性チェック BEEP音でテスト 実行までの流れ

2011-03-07 18:44:09 | MSXマシン語適当講座

プログラミングはMSX-DOS環境がある1chipMSXで行ってみました!

オペコードとニーモニックが正常に入力されているかのチェックです。
入力された数値と合っていればテキストは正常ということです。
データの欠損、不正な値などが含まれている場合はエラーで停止します。

このようにテキストでチェックしても見落とす場合があります。
正確な重要なデータを必要とする場合に目視のほかにPCで検査します。
2エラーありましたが、チェックは終わりました。

早速、コードCDを書き換えました。ちょっと文字長をみてみました。
この程度の長さまで書けるので、わかりやすいですね。

とりあえず、C9を実行して試したのですが、あまりスッキリしないので、
BEEP音を出すプログラムで動作検証を再度やってみます。

こんなことも★

今度はショートのマシン語が機能するかを試します。
まだ、ラベルの準備をしていないので、絶対アドレス指定でBIOSを実行させます。
MSXマガジン永久保存版3号p194にBEEPがあります。アドレスが017Dhです。
プログラムを実行するとポッと音が鳴ります。

MSXBASICでは8000hにするとMSXBASICプログラムにカブってしまうので、
9000hにロードさせます。さらっと考えると

ORG 9000h
CALL 00C0h
RET

これがラベルになると

BEEP     EQU  00C0h
            ORG  9000h
            CALL BEEP
            RET

となります。さて、ハンドアセンブラで始めていきます。

10 SCREEN8
20 VPOKE &H9000,&HCD
30 VPOKE &H9001,&HC0
40 VPOKE &H9002,&H00
50 VPOKE &H9003,&HC9
90 BSAVE"BEEP.BIN",&H9000,&H9003,S

SオプションでVRAMに保存します。
実行するとBINファイルができます。これを

BLOAD"BEEP.BIN",R

MSXから音が出ます。

流れとして、開始アドレスを9000hに固定させます。
本体プログラムは拡張性と自動化を重視するためBASICで作ります。
この為にフリーエリアを多く使うためにマシン語領域が減ります。
そこで、VRAMを仮想のマシン語のメモリ領域として配置する方法を採用します。
9000hに設定したのはマシン語を実行後にBASICデバッグするためです。
この領域は0000h~D400hまで使うことが出来ます。
と、いう考えがあるのですが、
これ以上は~ボロが出ますのでこのへんにしておきます。
ある程度、動作チェックが済みしだい機能を拡張させていくことにします。
オンラインエディタは手抜きじゃないのか?Delキーで改行が増えたりしているなぁ。

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

MSXでアニメを アセンブラを作る アセンブラちゃん? テキスト不具合?

2011-03-06 06:42:23 | MSXマシン語適当講座

前回から気になっていた事をはじめました。
web講座ではMSXのアセンブラツール群を紹介してきました。
今回はMSXのマシン語のおおまかな命令とプログラミングの流れが
わかってきましたので、自作してみようと思います。
アセンブラアシスタント第2弾!女性をイメージしてみます。
今度はななめドットを使って横向きに描いてみました。

最初は短いオペコードを書いて
マシン語を実行させるという目標で今回もやってみます。

GWで使ったウィーザード形式を今回も使っていきます。
まず、何かキーを押せばオペコードが次々と表示されます。
順番はオペコード、擬似命令という順番ですが、
後ろから、ORG、DBと表示させるようにも考えています。

「どうやって使うの?どういう書き方?」
という悩みも一気に解消です/

もちろん、オペコードをCDと入れるとCALL というふうにもできます。
オートフォーマットでソースを作成して残します。

     ORG    0D000h
D000
     JR      FEh
D000 18           FE

この時にマシン語に変換させる仕組みにします。
自由なフォーマットで書いて、オペコードに自動で変換する
従来の方式に比べて私のツールはちょっと辛口かもしれませんが、
ダンプリストが段々とわかってきます。

アセンブラくんのメッセージは初心者の説明とは違い、
ちょっとかじった程度の中辛な説明にします。
と、言っても
「していされたアドレスはプログラムがありません。」
「プログラムがぼうそうするかもしれません。」
というメッセージで英語よりはわかりやすいと思います。
でも、慣れてくると「うるさいなぁ。」となりそうです;
私もBASICにどっぷり浸かるとマシン語を忘れがちで、
マシン語プログラミングに復帰する時にラクラク入れるように
アシストして欲しいという願いでもあります。

今日はオペコードの表示とヘルプを完成させる予定です。
うまくいけばBIOSをCALLして実行させてみたかったのですが、
やっぱりオペコード00~FFまで選択するのは、
かなり時間がかかってしまうので、まず、直接入力から
アセンブラアシスタントに自動検索させてみる機能を入れます。

例えばJPとかLD A,とかでも検索します。

FULLMSX:MSX2グラフィックプログラミング講座
http://wood-art.main.jp/www-hp/fullmsx/msxi-hi1.html

FULLMSX:マシン語
http://wood-art.main.jp/www-hp/fullmsx/mon.html

こんなことも★

ちょっとFULLMSXからインストラクション表をコピーして
1chipMSXを使ってMSX-DOS2のAKIDでMSXひらがなで
テキストを作成していました。
SDカードからDiskmgrのDSKファイルに取り込んで
BlueMSXで実行するとFile not foundになりました。
どうやら、この方式ではFATが狂っているようです。
そこで、PCに新しいフォルダを作って、ここにSDカードのファイルを入れて

BlueMSXのBドライブのディレクトリ挿入から

RAMDISK(4048)
COPY"B:"TO"H:"
COPY"H:"TO"A:"

で、BlueMSXでDSKファイルに書き込みました。

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

MSX2でアニメを カラーコードスキャン カラーダンプリストを作る アセンブラくん

2011-03-05 19:10:33 | MSXマシン語適当講座

画像から線の色を変えるプログラムは
MSXBASICではかなり遅いので、マシン語化を考えています。
ちょっとマンネリ化したMSXのマシン語をよくしたいというのも
あってマシン語のツールを作ってみようかなと思います。

マシン語モニタの製作の具体案が固まりそうです。
今回はアセンブラを入力して、メモリに配置するまでの限定した用途にします。
ディスアセンブル機能は今のところ考えていません。
アセンブラモードはSCREEN8、4行25桁のメッセージの横に
ゆるキャラを入れて命令のヘルプを入れてみたい。
当時は小学生からマシン語が組めたので、そういう感じに描いた。

ダンプモードはSCREEN7で
ダンプリストを色分けと点滅させてMS-DOSライクな画面を作りたいです。

SC7-mon.basの画面

左はアドレス、CDはCALL、C9はRET、00はデータなしと色分けしてみました。
いまのところはメモリからの16進ダンプのみですが、VRAMにページ1にプログラム、
ページ0にダンプ表示ができれば@8000という表記でVRAMのダンプにしたいです。
SCREEN7の特性を生かして256バイトのデータを表示させます。

MSXのBLOADはメモリのデータ、VRAMのデータともに
BSAVEのデータをVRAMで表示したり、メモリに書き込んだり
できることがわかりBSAVEの相性は今のところ問題ないようです。
SCREEN8で実験していることはVRAM上で
マシン語プログラムを配置したいメモリのアドレスに書き、
プログラムをVRAMとして保存して、
Sオプションを外すだけでRAMに配置させて実行させる仕組みを試んでいます。
こうすればマシン語実行中にBASICプログラムがない状態でできます。

ゆるキャラがあると少しやわらかいイメージが出ますね。
アシスタントセレクトがあり
asm-kun.cp8 と asm.cp8

 

sc8-asm.basの画面

こんな感じにアシストしてくれれば、かなり便利そうな感じがします!

 

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

MSX2でアニメを 漢字グラフィック 外字作成で絵文字 マシン語モニタ制作?

2011-03-04 21:15:18 | MSX版GW関連

ブログ編集に使っているHTMLエディタの感想ですが、

今までEnterキーで行間が空いていました。

確かにShift+Enterキーで<BR>は構いませんが、
私はワープロと同じ操作の方がよいと思います。
さて、

今回は絵文字を入れてみることにします。
メッセージに絵文字を多用するのはあまりよくありませんが、
雰囲気をやわらげる効果があると思います。
まず、外字作成プログラムで絵文字枠を作ります。

このように入れたいところでEnterキーを押します。
2箇所以上あっても絵文字枠を作ることができます。
そして、ESCキーで保存したら、DEで外字を作ります。

こうすれば文字の大きさがわかりますね。
ワクを消して保存して、KLDで文字を書きます。

こんな感じに入りました!
少し長いですが、漢字グラフィックファイルを
ロードさせて使ってみてください。

100 'save"kld-oft.bas"
110 LINEINPUT"FILE:";F$
120 SCREEN5:SETPAGE1,1
130 KEY2,F$:COPYF$TO(0,0),1
140 XX=X*16:YY=Y*16
150 COPY(XX,YY)-(XX+15,YY+15),1TO(XX,YY),0
160 LINE(XX,YY)-(XX+15,YY+15),15,B
170 S=STICK(0):I$=INKEY$:IFS=0GOTO250
180 TIME=0:FORZ=0TO10:Z=TIME:NEXT
190 COPY(XX,YY)-(XX+15,YY+15),0TO(XX,YY),1
200 IF S=1ANDY>0  THENY=Y-1
210 IF S=3ANDX<10 THENX=X+1
220 IF S=5ANDY<10 THENY=Y+1
230 IF S=7ANDX>0  THENX=X-1
240 GOTO140
250 IFI$=CHR$(13)THEN140
260 IFI$=CHR$(27)GOTO280
270 GOTO170
280 COPY(XX,YY)-(XX+15,YY+15),0TO(XX,YY),1
285 SCREEN0:LINEINPUT"FILE:";F$
290 SCREEN5:SETPAGE1,1:COPY(0,0)-(190,190)TOF$:END

今回は地味に終わりましたが、
最初にキャラクタの顔を描いたりしてみると
名前の省略にもなるし、誰が話しているかがよくわかります。
特に3人くらいで2キャラクタのみ表示している場合など
シーンで言えば、マスターがいて、2人で酒場で話している場合がよいでしょうね。

こんなことも★

MSXコンテンツのチェックをやっていました。
少し残念な事があります。インフォシークiswebが終了した事で
MSXBASICで使用できたSUPER-Xをダウンロードできなくなりました。
生き残りはSHEMだけとなりました。
SHEMはMSX-DOSがないと起動できないので、
これからマシン語を始めることは難しくなりますねぇ。

SCREEN8の00~FFで16KBでアセンブラを考えているんですけどね。
ブロック転送はCOPY命令でコピペすればできるかなと思ったり
VRAMの8000Hから書いていき、Sオプションを外せば実行できたらなぁ。
このミニアセンブラで組めれば少し楽しさが戻ることもありそうな感じがします。
8000HからD000Hまでなら、書けそうですね。

 

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

MSX2でアニメを ファイル名を変えて 口パクをさせる

2011-03-02 21:11:28 | MSX版GW関連

残念ながら64ドットでは小さすぎました。

ボールが転がったりする程度ならできますが、味気ないですね。

やはり、190×190で進めていきます。

ファイル名のSCHOOL-A.CP8を別名保存します。

SCHOOL-A.CP8の画像

COPY"SCHOOL-A.CP8"TO"SCHOOL-B.CP8"

SCHOOL-B.CP8ファイルができました。

この新しいファイルを読み込んで、口の部分を変えました。

SCHOOL-B.CP8の画像

10 SCREEN8

20 COPY"SCHOOL-A.CP8"TO(0,0),1

30 COPY"SCHOOL―B.CP8"TO(0,0),0

ここまででページに読み込みは終わりです。

次は交互に画面を切り替えるだけです。

40 SETPAGE0,0

50 I$=INPUT$(1)

60 SETPAGE1,1

70 I$=INPUT$(1)

80 GOTO 40

ページ0とページ1を交互に切り替えて口パクさせることができました。

 

 

 

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

MSX2でアニメを COPY命令で画像の向きを変える

2011-03-01 19:35:46 | MSX版GW関連

今回は前回の画像を使ってCOPYコマンドで画像の向きを変えてみます。

COPY"SCHOOL-A.CP8",1TO(190,0)

左足を上げたり、右足を上げたりする時にラクにできます。

よく使う用途としてはデッサンの狂いを見たりします。

見え方の感じが変わり発見することができます。

COPY"SCHOOL-A.CP8",2TO(0,211)

今度は180度回転させます。

宙返りのシーンなどに活用できそうですね。

COPY"SCHOOL-A.CP8",3TO(190,211)

例えば爆弾など、地上から打ち上げるような物の

イメージを描く時に最適と思います。

また、スプライトなど逆さにして、倒したイメージにも

効果的です。

なぜ対称にできるのかと言えば

スタートアドレス、エンドアドレスを変えたり

昇順、降順のデータの読み込み方法を変えるという

単純なことのようです。

100 SCREEN8

110 COPY"SCHOOL-A.CP8",1TO(190,0):I$=INPUT$(1)

120 COPY"SCHOOL-A.CP8",2TO(0,211):I$=INPUT$(1)

130 COPY"SCHOOL-A.CP8",3TO(190,211):I$=INPUT$(1)

こんなことも★

SCREEN5は4ページ使えて、0:背景と1:キャラクタと置いて、

合成ページが2ページ(2,3)を切り替えて動かしてみせることができます。

他のSCREENを試してみます。

SCREEN6について調べてみると4ページ使えますね。

色の数が4色とかなり少ないですが、何かに使えるかもしれません。

ここまで少ないと文字表示になるんでしょうね。

SCREEN7はSCREEN5の横が2分の1ドットになるんです。

このようにちょっと細くなって感じが変わります。

表裏の2ページになって、アニメーションには向いていませんが、

解像度が2倍になって表示には向きます。

次回は64ドットの枠を制作して、アニメーションの準備をします。

完成すれば連続コピーでアニメーションさせる予定です。

 

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