[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1358] s_world.bin(Re: music.asm のプログラミング)



小柳です。こんにちは。

ASKAによる自作音楽アプリケーションがやっとできました。
http://homepage1.nifty.com/dreaming/osask/index.html
からダウンロードできます。
一工夫しているのでぜひ実行してみて下さい。

ソースについてもコメントがありましたらよろしくお願いします。

Hidemi KAWAI wrote:
> 
>   こんばんは、川合です。
> 

>   ASKAがちゃんとしていれば、
> 
>     static unsigned char musicdata[] = {
>         Qcmd, 3,
>         O4A,L8, O5G,L8
>     };
> 
> などと書けるはずなんですが、静的変数を上手に扱えなくて、お手数を
> かけてすみません。

現在のASKAのソースが読みにくいのはやはり、この静的変数の初期化部分が
大きいですね。宣言と初期値のテーブルが不整合で、OSごとハングアップ
させたことが結構ありました。

でもこの静的変数の扱いや
・>//      ECX = sizeof (WORK) / 4;
やLEA構文のような本来できるはずの表現
・include
・マクロ定義
等ができるようになれば、ASKA はかなり強力な開発ツールになると思います。
今回はいろいろ手こずったのですが、それでも ASKA の力の片鱗が見えた気がし
ました。

以下はその他の所感等です。

・開発はPC2台で行いました。1台はWindows2000上でVM ware を使用して
ビルドと動作確認に使用しました。もう1台はLinuxでソースエディット
(EMACSに一番慣れているので)して、ファイルをWindows2000と共有しました。
VM wareでは実際のFDは使用せずに、1.44MBのフロッピーイメージファイルを
通して2台のPCを仲介しました。OSASKの起動はDOS経由です。

・Windowタイトル文字列が左端から半角2文字分空いて表示されるのが、
なんとなくアンバランスな気がしていたのですが、多分アイコン用ですね。

・エイリアスは C++ の int &a = 1; の表現でもいいかもしれません。

・ASKAでポインタ変数のエイリアス宣言で同じ alias 名を別のレジスタに
使用しようとして失敗したのですが、途中でエイリアスを無効に
できないでしょうか?

・ASKAで表示文字列に '#' を使用しようとして、masmcnv2 ではまりました(笑)
原因は.3asファイルを見て分かりました。

・ テーブルからの読込で異常な値を指定したせいで INT10 を出しましたが、
このレジスタ情報をデバッグの助けにすることが私にはできませんでした。
問題部分をコメントアウトで見つけだして解決しました。


-- 
小柳 雅明(Koyanagi.Masaaki !Atmark! nifty.ne.jp)
「人の足を止めるのは"絶望"ではなく"諦観"
  人の足を進めるのは"希望"ではなく"意志"」
                  -- ARMS