近しい人が他界して、気持ち的に時間的にプログラム出来る状態では無かった。
そんな事情のため、レトロ関連もしばらくお休みしてました。
ようやく少し落ち着いてきたので、再開しようと思う。
さて、前回まででデバッガがある程度動くようにまでなった。
この先は…SC61860のプログラミングを…していく予定!
…だったので、必要という建前のモト、アセンブラを作ったw
結局作っちゃったアセンブラ!
まぁ作るだろうなと思っていたし、読んでる皆さんも思っていたと思うけれども、やっぱり作っちゃったSC61860アセンブラ。
作る前からなんとなく分かっていたけれども、アセンブラというかコンバータというか。
難しい解析が必要ないのは良いね!
これほどまで「ニーモニック=バイナリコード」が直結してるCPUも珍しい。
Z80の場合、ロード命令は「LD」であり、これだけでは何の命令なのか分からない。
ちゃんと命令コードを調べるためには、「LD A」まで調べて、初めて命令コードが3Ehだと分かる。
これに対してSC61860は、例えば「LIA」とくれば命令コードが$02と決まる。その後ろに1バイトのオペランドを付けてやれば命令が完成する。
アセンブラを作る上で難しいとか複雑とかいう事がさっぱり無いのだ(^^;;
そんな安直な構造の中で、ちょっとだけ実装が面倒だったのがCASE1、CASE2命令。これはもう独自の書き方をするようにしてしまった。他の諸先輩方が開発したアセンブラを、あろうことか何も参考にせず好きに作ってしまった(-_-;
シャープのマニュアルでは「CASE1、CASE2」となっていたが、別の本では「SET、CASE」になっていた。これは…どっちが主流なんだろ?気持ち的には「SWITCH、CASE」に変えてしまいたいが、さすがにニーモニックを変更するワケにもいかないw
上は開発中に出力したリストだ。
プログラムは実験コードがたくさん含まれている。プログラムっぽいところは「RS-232Cから1バイト受信」のコードをそのまま書いてる。私が作ったモノでは無いw
まぁこんな感じでアセンブルは出来るようになった。
ラベルは先頭に'_'が付けばローカルラベルだ。
今回はロケーションカウンタもちゃんと入れたw
当たり前だが、オペランドの部分には「VRAM+5*WIDTH+10」のような計算式を入れられる。
HELLO WORLDを作ってみる!
やっと…ようやくSC61860のプログラムを書いてみるところまで来た!
ここにくるまでに作ったモノは…
・逆アセンブラ
・デバッガ
…と、なんとなくフルセット作った気がする!
さぞかしSC61860は見慣れただろう……と思うでしょ??
それが…いざHello Worldを作ろうとしたら、
コードが全く思い浮かばない!!
「Hello World」の文字列をスクリーンバッファへコピーして、VRAM表示をしてやれば画面に出るはず…なのだが、メモリコピーの手法がアタマに出て来ないw
やっぱり…エミュレータ作ってもSC61860のプログラムは作れるようにならなかったのだw
※このプログラムは未完成…というか何もありません↑
というわけで、今回はここまで。
次回までにHello Worldのプログラムを完成させ、デバッガで動かしてみるよ!
少し時間が掛かるかも知れないけど、気長に待っていて欲しい(^^)
ではまた次回!(^-^)ノ