16ビットマイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第4回]
●16ビット版「TK−80」モニタプログラム(2)
あけましておめでとうございます。
新年のご挨拶といいますと、年頭の所感でありますとか、あるいは本年の抱負でありますとかを型通りに述べるというのが一般的でありましょうが、そういうことはこの際はしょってしまいまして、のっけから本気モードで突っ走るつもりであります。
ええ。
元日から本気モード全開であります。
そりゃあ元日でありますから、型通りお雑煮とおせちはいただきましたが、そのあとはもう平常業務開始であります。
なんとも悲しき仕事人間であります。
そうは言いましても、そこはそれ浮世のしがらみを完全に断ち切ることはできませぬゆえ、年賀状の整理でありますとか、親類との付き合いでありますとかで、三が日くらいの間はほとんど仕事にならないのが実情であります。
でありますので、今回はほんのさわり程度で終ります。
あしからずご了承を願います。
毎々書いております通り、当ブログ風記事は私自身の備忘録を兼ねておりますので、皆様方がお読みになっても、どうも面白くないなあ、とお思いになられることも多々あるかと思います。
どうかそういう主旨をご理解いただき、曲げておつきあいをいただきますようお願い申し上げます。
さて本年第1回目は、昨年最後の記事を受けまして「16ビット版TK−80モニタプログラム」の解説にエントリいたします。
といっても、長々とそれだけを展開する時間的ゆとりはとてもありませんので、要点のみの解説(実は私のための備忘録)になると思います。
まずはいきなり前回のプログラムの開始アドレスからスタートです。
前回のリストをバッサリ削って、以下のごとくホネだけにしました。
[00003] ORG=F000 [00053] F000 EB0490 START0:JMP START1 <F006> [00054] F003 E92301 BRK:JMP BRENT <F129> [00055] ; [00056] F006 BAA0FF START1:MOV DX,FFA0;umcs [00057] F009 B83FE0 MOV AX,E03F;128k,noready [00058] F00C EF OUT DX,AX [00416] ORG=FFF0 [00417] FFF0 E90DF0 JMP START0 <F000> |
[2017.1.6追記]
アドレスFFF0にあるJMP START0は誤用でした([第8回]参照)。
[追記ここまで]
もうこれだけでも問題は沢山ありそうです。
前回も少し書きましたが、AM188(8088,8086も同じ)はリセット後はFFFF0からプログラムを開始します。
ところが上のリストではアドレスはFFF0で上位4ビットがありません。
それでよいのか?
ということなのですが、その説明をしようとしますと必然的に8086のセグメントの概念およびセグメントレジスタについて語らねばなりません。
これは、のっけから大変なことです。
とても本日はそこまではできません。
次回のテーマといたします。
今回はあと1つだけ。
スタート後はF000にジャンプして、そこからさらにF006にジャンプしています。
8080やZ80からのくせでついそのように書いてしまいましたが、アドレスF000には何の意味もありません。
ここは素直にアドレスFFF0のところで、JMP START1と書くべきだったと今は反省しております。
その次のF003はシングルステップ動作ルーチンへのジャンプ命令を書いていますが、これもF003には何の意味もありません。
このリストを書いたのはもう1ヶ月以上前ですが、今こうやってあらためて説明文を書こうとしまして、私自身が混乱してしまいました。
はて、こんなところに割込みテーブルがあったっけ?
げげっ。
確か8086の割込みテーブルは4バイトのはず。
し、しかも、これは割込みテーブルなんかじゃなくてただのジャンプ命令ではないか?
かくのごとき無用な誤解を招くようなプログラムは書くべきではありませんでした。
正月早々深く反省しております。
そのあたりのことにつきましても、次回またはそれ以後のどこかの回にて説明するつもりです。
16ビットマイコンボードの製作[第4回]
2017.1.1upload
2017.1.6追記
前へ
次へ
ホームページトップへ戻る