uPD70616 あせんぶら
- Macro Assembler AS の Pascal like な BEGIN, END のマクロを削除
- Pascal like であろう辺なコーディングスタイルを uncrustify で整形
- コンパイルが通るまでソースを修正
ここまできてソースを読む準備が始められる。
- 知っている CPU のコード生成をみながら、処理の流れをつかむ
- 知っている CPU のコード生成をみながら、uPD70616 のデータシートに合わせて実装
- なぜかソースファイルが開かないのでデバッガで追う
- assert とかかかりまくるのでデバッガで追う
- コード生成が出来てるようなので、MAME で確認
- できたー!
というわけで画像までの命令とアドレッシングモードは実装が出来た。 AS さんのほうはグローバル変数使いまくりだし、データシートのアドレッシングモードの bitfield が間違ってる。
データシートの間違いはぱっと見で重複しているのもあったが、indirect register の一覧と詳細で間違っていて mame の CPU ソースをみて実装するってどういうこと。
構文解析は C で文字列操作をする必要があって実装がかったるい。2重 indirect とか 2重 diplacement とかは実装も面倒そうだし、自分が使わないからいいや。R29, R30, R31 は AP, FP, SP と呼ばれるみたいなんでやっといたほうがよいだろうか。
すみ: Rn [Rn] [Rn+] [-Rn] #imm #qimm addr まだ: [addr] disp[Rn] disp[PC] disp[Rn](Rx) disp[PC](Rx) 面倒: [disp[Rn] ] [disp[Rn](Rx)] disp1[disp2[Rn ] ] と @ がつくやつ
構文解析が片付けば、データシート一覧をみながら淡々と実装するんだが、いろいろ間違ってそうな気がする。