2019年9月7日土曜日

E500でマシン語エリアがどの程度確保されているか確認する

こんばんわ

今日は上の子は仕事、下の子は学校へ行ってしまったので、家の中が1日とても静かでした。ただ、下の子が学校に行き始めたので、また朝早起きしなければいけなくなってしまいました。あいつは、なんのために遠くの学校を選んだのだろ?本人は喜んで行っているのでまあいいのですが。。。。

まあ前置きはこのくらいにして、E500のマシン語エリアの確保についてです。誰も別に聞きたくもないかもしれないですが、自分の覚書のため。

E500のRAMのこと

E500は標準の状態では

&B8000〜&BFFFF

がRAM領域になります。
ただし全部自由に使えるわけではなく、

&BFC00

以降はワークエリアになるため、

&BFBFF

までがユーザが自由に使える領域ということのようです。RAMカードを増設したり、内蔵メモリとマージしたりすると。。。自分には理解できないかも。。。

マシン語エリアの確保する方法

まずはじめに、マシン語エリアの確保について。
マシン語エリアの確保は以下のような命令で行います。

POKE &BFE03,&1A,&FD,&B,(C),(B),(A)
CALL &FFFD8


この(C),(B),(A)は、確保したいメモリのサイズです。なんでABC逆にしているかというと、例えば、001122hバイト確保する場合は、

POKE &BFE03,&1A,&FD,&B,&22,&11,&00



CALL &FFFD8

となります。アドレスではなくサイズですので注意してください。
あと、並び方が反対になりますので注意してください。

&BFBFFからなんバイト前に向かって確保するかということになります。

つまり、&BFBFF - &001122 + 1 = &BEADE がスタートアドレスになります。

確保されたマシン語エリアを確認する方法

今度は、今どのくらい予約されているか確認する方法です。
いま確保されている領域の先頭のアドレスです。今度はサイズではなくアドレスです。
以下のアドレスにアドレスの値が入っています。

(A)=&BFD1A
(B)=&BFD1B
(C)=&BFD1C

上記のように A,B,Cに値を入れたとすると、
(C)(B)(A)という順番になります。つまり、先ほどの例で先頭アドレスが&BEADEだった場合、

(A)=&DE
(B)=&EA
(C)=&0B

となります。自分にはわかりにくいです。68000をよくやっていたのですが、あちらは何事も逆だった。。。

HEABY METALをロードする

この仕組みを利用して、先日記事にした HEAVY METAL MINIのローダを作ってみます。
HEABY METAL MINI は &004C00h バイト(10進数では19456dバイト)確保する必要がありますので、

POKE &BFE03,&1A,&FD,&B,&00,&4C,&00
CALL &FFFD8

となります。
つまり、&BFBFF - &004C00 + 1 = &BB000 がスタートアドレスになります。

乱暴ですが、マシン語エリアの開始アドレスが&BB000になっていれば、本体をメモリカードからロードします。メモリが確保されていなければメモリを確保して再起動します。もう一度RUNすると今度は確保されているはずですので本体がロードされます。手抜きです。

100 A=PEEK &BFD1A
110 B=PEEK &BFD1B
120 C=PEEK &BFD1C
140 S$=HEX$ C+RIGHT$ ("0"+HEX$ B,2)+RIGHT$ ("0"+HEX$ A,2)
150 PRINT S$
160 IF S$="BB000" THEN GOTO 210
170 POKE &BFE03,&1A,&FD,&0B,0,&4C,0
180 CALL &FFFD8
210 PRINT "ALREADY RESERVED"
220 LOAD M "F:HMM.BIN"

最後に

いまや、メモリ空間のどこに自分のプログラムがあるのかとか全然気にしないでとても綺麗なアプリケーションが作れる良い時代になりました。ただ、あまりにも広大になって、複雑になってしまったので、新しく覚えようとする方々は大変な思いをするかもしれませんね。自分は古臭い、小さなシステムでないと理解できないです。




0 件のコメント:

結局 Kindle にケースを買いました。

 こんばんわ 私、最近ほとんど外出しなくなったのですが、妻の買い物に一緒に行って、ぼけーっと待っていたり、病院に行ってぼけーっと待っていたりする機会が多くなり、なんなら家でもボケーっとしていることが非常に多くなったためか、Kindleの出番が結構ありそうです。 前回、タブレットで...