2023年4月10日月曜日

激安中華FPGAでPC8001mを動かしてみた

 以前買った激安中華FPGAでPC8001mを動かしてみようとふと思い立った。

当時3000円程度で買えたが、VGAポートやPS/2ポートもついていた。

安いのには訳があって、ロジックエレメントが10Kしかなく、メモリブロックも少ないのであった。

 昨今FPGAで古のコンピュータを動かす試みがあって、昔あこがれたPC8001を模倣するPC8001mを試してみることにした。

Githubからソースを落としてQuartus Primeで読み込んでFPGAをEP4CE10E22C8に指定してビルドしてみた。

 Fitterでメモリブロックが足らないといわれたので、素直にramを減らしてゆくとビルドが通るようになった。

ピンを配置しようとして、RGBが各4本で書かれていることがわかった。すったもんだしてRGBの配線を各一本に減らすことができた。

     assign vga_b = mode ? 1'b0 :
                        hvalid2 & vvalid2 & lb_out[3] & lb_out[0] ? 1'b1 : 1'b1;
    assign vga_r = mode ? 1'b0 :
                        hvalid2 & vvalid2 & lb_out[3] & lb_out[1] ? 1'b1 : 1'b0;
    assign vga_g = mode ?
                        ( hvalid2 & vvalid2 & lb_out[3] ? { lb_out[2:0], 1'b1 } : 1'b0 ) :
                        ( hvalid2 & vvalid2 & lb_out[3] & lb_out[2] ? 1'b1 : 1'b0 );                
(crtc.vの440行目あたり)


これで何か出るかなとVGAモニタをつないでみると、何やら文字が出た。


 文字が表示されているがなにやらおかしい。メモリを削りすぎたようだ。

 職場にオリジナルのPC8001mで使われていたDE0-CVがあったので拝借してメモリをどこまで減らしてもBasicが起動するか確かめたところ、8kBまでは起動した。

現状メインメモリは2kBしかないので、どこかから拝借してくる必要がある。

ソースをよく見てみると外部ROMに結構容量を取られていることがわかったので、これを使わないようにして、メインメモリを8kBにしたところ、n80Basicが起動した。

 
 

いろいろ削ってメモリブロックの使用率が80%台になったので、この基板で起動できた。

やれやれw

0 件のコメント:

コメントを投稿