2017.1.12
前へ
次へ
ホームページトップへ戻る


16ビットマイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第11回]


●LMCS(Lower Memory Chip Select Register)

昨日から独立大作戦の主要作戦のひとつ、SDカードREAD/WRITE部分の本格的な作成作業にかかっています。
本格的なDOSシステムということになりますと、とても短期間では仕上げられませんから、とりあえずZB3BASICシステムについては、SDカードに対するファイルのSAVE/LOADの機能のみということで考えています。
問題はCP/Mです。
これをどのようにして、SDカードシステムに乗せるか、ちょっと悩んでいます。
これは結構大変なことになりそうです。
余り手間がかかりそうなら、CP/Mについてはあとで作成することにして、とりあえずZB3BASICシステムのみでスタートするということになるかもしれません。

さて今回はLMCSです。
LMCSはLCSを設定するレジスタ名です。
LMCSで設定するLCS端子のメモリセレクト範囲の下限は00000に固定されていて、上限はプログラムで可変できるようになっています。
前回説明しましたUMCSの逆です。
00000が下限アドレスということから、LCSは通常はRAMのセレクト端子に接続します。


[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual

前回説明しましたUMCSはリセット時に初期値が設定されて、リセット後すぐにUCS端子がアクティブになります。
それに対してLCS端子はリセット後は非アクティブです。
LMCSレジスタに値を設定すると、初めてアクティブになります。
ということはリセット直後はROMにだけアクセスできて、RAMにはアクセスできないということです。
LMCSレジスタにはプログラムの先頭のところでUMCSの設定に続いて、下のように1F3Fを設定しています。

[00057] F007  BAA2FF            MOV DX,FFA2;lmcs
[00058] F00A  B83F1F            MOV AX,1F3F
[00059] F00D  EF                OUT DX,AX

RAMアドレスとして00000〜1FFFFの128KBの設定です。
これは試作段階ではRAMとして628128を実装しているためです。
RAMについてはその後に512KBのRAMを搭載するように考えていますので、もしそのようになればLMCSの設定値は変更することになります。

年初からずっと独立大作戦のソフトウェア作業をしています。
思ったよりホネで苦労をしています。
そんなわけで本日も時間がありませんので、ほんのちょっぴり書いただけですけれど、今回はここまでといたします。

16ビットマイコンボードの製作[第11回]
2017.1.12upload

前へ
次へ
ホームページトップへ戻る