HC-20を使う その4

f:id:PocketGriffon:20210809002042j:plain

ようやくHX-20(HC-20)上で、「Hello World!」の表示が出来た!

もちろんオールマシン語だ!

 

全く大した事はしていないのだが、環境含めてあれこれ書いてみようと思う。

私が実験した環境は以下の通りだ。

・MacBookPro

・シリアル - USB変換器 MPRS-225R

・HC-20のRS-232Cコネクタに繋がる自作アダプタ

・6301CPUアセンブラ(自作)

・バイナリをBASICへ変換するプログラム(自作)

 

忘却の彼方にある6301のニーモニック

あれだけHC-88の時にハマりまくっていた6301なのに、驚くほどニーモニックを覚えていなかった(^^;; 1つ覚えると1つ忘れてしまう、ところてんのような脳みそだ!!スワップアウトじゃないところもタチが悪い(T-T)

 

そしてHC-88の時に開発した6301アセンブラについても、相当な即席で作られていたようで、引数なしで実行してもUsageすら表示されない状態だった!!

オプションを調べるためにもソースコードを読まねばならないという事態に!(^^;;

 

過去のブログを参照してみると、どうやらcpp(プリプロセッサ)に依存しきった作りにしてあった模様。プログラムの中でisattyしているので「gcc -E a.asm | asm」みたいな指定が可能だ。

 

それぞれのニーモニックについてはもう一度覚え直すしかないが、過去に作っていたプログラムを見つつ、そうだっけこんな命令があったっけ…と思い出しつつある。きっとその分、別のことを忘れていってるに違いない…(SC61860とかw

 

HelloWorldを書いてみる

f:id:PocketGriffon:20210809010944j:plain

Hello World!のプログラムとしてはこんな感じ。

何も難しい事は考えず、素直にコードを書いたに過ぎない。

 

アセンブラの書き方としては、コメントが「;」と「//」が混ざっていたり、equではなくて#defineだったりと節操がない。

cppを利用しているので条件コンパイルや#defineマクロなどが使えるのは便利だ!

 

ROM内ルーチンのエントリについて、HC-20とHX-20は共通で使えるらしい。$FED1以降にあるジャンプテーブルを活用している分には、相互に互換性は保てそうな感じだ!

 

このファイルをアセンブルすると(オプションの指定によって)生のバイナリが出力される。

f:id:PocketGriffon:20210809012408j:plain

このバイナリの状態のままではHC-20に転送する事が出来ないので、BASICの形式に変換する簡易ツールを作る。

 

f:id:PocketGriffon:20210809012753j:plain

こんな感じのBASICファイルにする。
このファイルをHC-20へ転送してRUNすれば、$0A50からマシン語ルーチンが書き込まれる。ファクンションキー1(PF1)に「EXEC &H0A50」が登録されているので、PF1を押して実行が出来る(^-^)

 

とりあえずこれで文字が表示できるようになった!

この先、グラフィックスを自由に表示出来るようにしていきたいが、先日調べていたOh!HCなどの情報に、これ(グラフィックス系)の情報が無かったような気がするのだが…汗

アセンブラから探し出すしかないのかなー(にこにこ)大変だなー(にやにや)

 

今日のところは環境を作りましたという事で!(^-^)

 

ではまた次回!(^-^)ノ