[新連載開始]W65C02マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第20回]
●/LD
前回、前々回は/CM、/DMについて書きました。
/CMはRAMに短いプログラムやデータを書いたりそれを読み出して一部を書き換えるときなどに重宝する便利な機能です。
ここで短いプログラムと書きましたが実際その通りで便利ではありますがやっていることはスイッチパチパチとそれほど変わりません。
せいぜい10バイトとか20バイトぐらいが限界です。
これが数10バイトともなるととてもやってられませんでしょう。
それにこの方法の難点は入力に手間がかかることよりも命令を16進コードで入力しなければならないという点です。
パソコンが無かった昔はそれでもそうするほかはありませんでした。
事前にノートにマシン語の命令コードでプログラムを書いておいてそれを1バイトずつメモリに書き込んでいったものです。
今は便利な時代になりました。
アセンブラを使えばニーモニックで書いたプログラムをマシン語コードに翻訳してくれます。
いずれそういうことになるだろうと考えて先にW65C02アセンブラも作っておいたのでした([第6回]〜[第9回])。
いよいよそのときが来ました。
下がソースプログラムです。
前回と同じようにアドレスは8000番地からにしてあります。
;w65c02test 26.7.21
;
org $8000
;
lda $bb
sta $12
stp
;end
|
もっともJMP命令などは使っていませんからアドレスをどこにしても作成されるマシン語コードは変わりません。
下はW65C02アセンブラでアセンブルした結果作成されたリストファイルです。
0000 ;w65c02test 26.7.21 0000 ; 8000 org $8000 8000 ; 8000 A5BB lda $bb 8002 8512 sta $12 8004 DB stp 8005 ;end |
アセンブラはとても便利です。
下はW65C02アセンブラを実行したときの画像です。

ここには翻訳されたマシン語コードが表示されていますし先ほどのリストファイルにもマシン語コードが表示されています。
それを見ながら/CMコマンドでRAMに1バイトずつ書き込んでいくこともできるのですが。
ここまでできているのにそれはありませんでしょう。
W65C02アセンブラを実行した結果マシン語の16進コードだけのバイナリファイル(ここでは65c02test1.bin)が作成されます。
これをそのまま読み込んでそれをRAMに書き込めばよいのです。
もちろんそうすべきでありましょう。
そのためのコマンドが今回新たに作った/LDです。
さっそく使ってみました。

バイナリファイルにはアドレス情報はありません。
ただのマシン語コードだけのファイルです。
ですから/LDコマンドではファイル名の後ろにそれをロードする先頭アドレスを16進数4桁で指定します。
ROMWRITERなどに使われるHEXファイルにはアドレス情報も書かれています。
しかしW65C02アセンブラは私が考える目的仕様に特化していますからHEXファイルは作成しません。
バイナリファイルだけで十分です。
/LDコマンドを実行した結果を/DMコマンドで確認しました。
アドレス8000からマシン語命令コードが書き込まれました。
前回/CMコマンドで書き込んでテストしたプログラムと同じですから実行テストについては省略します。
STEP BY STEPです。
着々と機能実装が進んでいます。
W65C02マイコンボードの製作[第20回]
2026.7.22 upload
前へ
次へ
ホームページトップへ戻る