CNCで切削して作成したプリント基板でDOSを動かすぞ

#目的
　ちょっと前に、CNCで作製したプリント基板にFPGAを乗せて、CP/Mを動作させた。
　このCPUはZ80なので8ビットなのだ。
　8ビットを制覇したので、次は16ビットに挑戦するぞ。
　16ビットだとすると、やっぱりあれだな。
　◆◆◆　そうだ、ＦＰＧＡでＤＯＳを動かそう　◆◆◆
　規模が大きくなるけど、まあ大丈夫だろうと気楽に考えよう。

#経緯
　ＤＯＳは通常はディテクオペレーティングシステムの略称。　Microsoft社のMSDOSが代表的な存在。
　MSDOSを使うにはライセンスが必要だが、現在では機能互換のフリーの物も存在する。
　DOSシステムを構築するには、8086cpu又は互換cpuにメモリ等の周辺回路を繋げる。
　これにの上でソフト(DOS)をブート出来れば完成だ。
　今回ターゲットにするのは、「[next186](https://opencores.org/projects/next186_soc_pc)」と称されているものであり、80186をcpuとしている。

　next186でDOSシステムを動かすと言っても、今回はハードウェア環境を構築するだけである。
　FPGAとしてはXilinx社製のxc6lx9を使う。
　選定理由は、はんだ付け可能(TQFP144)の中で大容量と言う事だが、一番は値段が安いことだな。
　xc6lx9を使ったDOSシステムは既に先例が有り、確実に動く筈と言うのも大きな要因だ。

　ソフトが既存で信頼できても、ハードが動作する保証は無いので、次のようなステップを踏む。
　Step-1　市販FPGA(xc6lx9)基板にメモリ、IO等を繋ぎ、CP/Mで動かしハード動作を確認。
　　　　　※CP/Mでも、メインメモリはスタティックでは無くDRAMで構成する。
　　　　　　但し、バーストアクセスは行わないので、不具合検証はやり易い。
　Step-2　上記ハード上で、DOSシステムとして動作させる。
　　　　　※実際の所、メモリ(DRAM)が正常に動作せず、ここで数か月足踏みした。しくしく。
　Step-3　CNCでプリント基板を作成し、先にCP/Mでハードの動作検証を行い、その後DOSシステムを動作させる。


#前提条件
　以下のハード・ソフトを必要に応じ、予め準備してね。(購入先、金額は参考)
　1. FPGA-board 　　　　XC6SLX9 Mini Board(AliExpressで購入、三千円ぐらい)
　2. 外部メモリ　　　　 W9825G6KH 32MBSDRAM (EBayで購入、500円位)
　3. 基板試作用部品　　 FPGAやその他部品は適当に調達(値段は時価)
　4. 基板設計ソフト　　　EAGLEを使用(無料、動作が軽快なので7.2を使っているが最新版でも多分問題ない)
　5. 切削データ作成　　　pcb-gcodeを使用(無料、ver 3.6.2.4)
　6. Xilinx ISE14.7　　　　FPGAのプログラムの開発、変更に使用(無料)。ISE14.7が最後。
　　　　　　　　　　　　※しかし、windows10用対応としてソフト更新はされているので、今でも使える。
　7. 書き込み器　　　　　FPGA書き込み機( Download Cableの名称でAmazonでコンパチ品を売っている、五千円円位か)


#製作
　ハード作成は前回と殆ど同じなので、[やり方はそちらを見てくれ](https://qiita.com/hi631/items/229452076fa0885de50e)。
　使用するハード/ソフトを参考までに下記に格納している。
　　[lx9-Step-1-io](https://github.com/hi631/FPGA_DOS/tree/master/lx9-Step1-IO)　　Step-1,2で使用する拡張基盤。市販基板に刺して動作させる。
　　　※動作確認時に色々弄ったが、結局問題はソフトに有り、ハードは無罪。
<img width="200" alt="Step-1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/3c7e845c-c3a0-6303-06d6-d18d02afaaf1.jpeg">
　　[MAIN-BOARD](https://github.com/hi631/FPGA_DOS/tree/master/lx9-eagle/MAIN_BOARD)　FPGAとDRAMを乗せた基盤。
<img width="500" alt="Tang-Nano" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/f87d2da4-aaef-c7c1-e055-eb6868db76e1.jpeg">
　　[PMOD-IO](https://github.com/hi631/FPGA_DOS/tree/master/lx9-eagle/PMOD-IO)　　　SDカードとキーボードを繋ぐ基板。MAIN-BOARDに刺す。
　　[PMOD-VGA6](https://github.com/hi631/FPGA_DOS/tree/master/lx9-eagle/PMOD_VGA6)　　VGAディスプレイ出力。MAIN-BOARDに刺す。
<img width="200" alt="Tang-Nano" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/b981d67e-58ef-c116-0807-cbbf22ec1e3a.jpeg">
　　[lx9-Step1-CPM80](https://github.com/hi631/FPGA_DOS/tree/master/lx9-Step1-CPM80)　CP/Mを動作させる為の回路(verilog)
　　[lx9-Next186_SoC](https://github.com/hi631/FPGA_DOS/tree/master/lx9-Next186_SoC)　DOSを動作させるための回路(verilog)

#動作
　SDカードを入れ、リセットすれば動く筈だが、そうは問屋が卸さないだろう。
　SDカードは「[SD2G_Dos_F.zip](https://github.com/hi631/FPGA_DOS/blob/master/SD2G_Dos_F.zip)」を解凍し、win32diskimagerなんかで書き込めば出来上がるはず。
　このカードデータはdosboxを使って、FreeDosで構成した。その後、最終番地(8KB)にBIOSを書込んだ。
　カードの最後位置に8KBのBIOSが必要だが、最終位置が異なった場合はHxDなんか使って書き換えが必要かもしれない。
<img width="600" alt="Tang-Nano" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/9b4aac4f-2c16-5b10-4974-e171df6ccad6.jpeg">
　この画面が出ない場合、画像出力が異常か、CPUが真っ当に動作していない可能性が高い。
　　※配線不良やショートを疑う必要が有る。
　出た場合、cpuは動作しているが、BIOSが読めておらず、恐らく下記の何れかだろう。
　　1.SDカードが読めていない。　　SDカードの信号(特にdat0)を確認すべき。
　　2.カードの内容が正しくない。　SDカードをダンプして、内容確認すべし。
![Image10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/071e9af4-d418-184b-b9a2-d639399820f5.jpeg)
　Starting MS-DOS...　が出れば後は多分大丈夫だろう。ご苦労様。

<BR>
　CNCで作った基板でDOSが動いたぞ。こんな簡素なハードで動くなんて。
　その昔数十万円で買った大きなパソコンは何だったのだろうな。
　これも時代の流れなんだろう。
　まあ、二層基盤にTQFP乗せている時点で、既に遅れているのだろうが。
　でもまあ、この辺が分相応かな。
　なお、もし追試する奇特な方がおられた場合、上記記載内容は無保証であり、各自の責任においてご利用願います。