アダルト・ヴァイオリン May the force be with you..

2009年2月14日

ISEに二つのメモリの初期化をさせる

Filed under: Weblog — い~ぐる @ 1:18 PM

Apple-I互換システムでは、WozのモニタとキャラクタジェネレータROMの二つのメモリを初期化したかったというのは、前に書いた。これらの内容は、bitファイルを作成した後から、自由に書き換えられると便利なので、合成前のソースではなく、bmmファイルとmemファイルから勝手に初期化する方法を模索していた。

ところが、ISEの標準パスでは、memファイルは一つしか許されないということらしい。(二つを指定した時には文句を言われなかったのに、二つ目を新規作成しようとしたら、メッセージが出てきた)。

とういうことで、方針としては、二つのメモリを一つとして扱い、一気に初期化してしまうことに決めた。

Apple-Iシステムのメモリマップと、data2memの認識するメモリマップを一致させる必要は全くないので、モニタROMのBRAMを 0x000-0x7FFに設置し、VRAMを0x800-0xFFFとする。こうしておいて、memファイルの、CGパターンの始まる所に、アドレス指定記述を置く。

シリアルケーブルを持ってこなかったり、独立して使えるVGAモニタが東京の職場にはなかったりするので、実機での確認はできないが、bitファイルは正しく生成されていることをdata2memのbitファイルダンプ機能を使って確認ずみ。

分ってしまえば、なぁんだということは多い。
(でも、説明書にもう少し書くか、エラーメッセージくらい出せよと言っておこう)

sfl2vlプリプロセッサの変更

Filed under: Weblog — い~ぐる @ 7:51 AM

バレンタインにちなんで(?)、プリプロセッサに機能追加した。

%ifdef
%else
%endif

が、Cのプリプロセッサ同様に動作する。
それと、識別子中に、

abc%XX%def

と書くことで、マクロ定義した、XXを識別子の一部として認識させる。

ついでに、コメントのネストも動くようにした(はず)。

変更後のパッケージは、
次にある。

http://www.ip-arch.jp/sfl2vl.html

追記:電車の中であるが、ふと、ifdefがあって、ifndefがないのはどうよと思い、ifndefを追加した。上書きしたので、上のURLはそのまま。バタバタしていて、今回の機能はほとんど確認が取れていないので、上のパッケージは正式リリースではないことに注意。

もう一つついでに、SFL構文で使う数字に+/-で定数を付加することを許す。

%d N 10
module test_%N% {
input a<N> ;
output f<N-1> ;
f=a<N-2:0> ;
}

のような使い方を許すことで、ライブラリ化に便利となる(はず)。

Powered by WordPress