フォト
無料ブログはココログ

AVR CP/M

2012年5月27日 (日)

AVR CP/M Stick (3)

 SDカードが読めていないようなので、3.3Vの電源をFT232から取るのをやめてレギュレータを使うことにした。

Avrcpmstick3
ついでに電源周りの配線を太くした。
ついでに、5V-3.3Vのインタフェースに使っている2.2kの抵抗に10kをパラって1.8kにしておいた。
これでOKと思ったらやはりSDカードが読めない。

もう1度SDカードコネクタ周りの配線をチェックしていて気がついた。SDカードとマイクロSDカードでは端子配列が違うのである。
マイクロSDカードのソケットを使ったのだが、SDカードを使った図面を見て配線したので間違えたらしい。
Sd_if_5v
SDカード↑
マイクロSDカード↓ 
Usd_if_5v

CSとDIの配線が異なるので読めないはずである。

ようやく起動した。
Avrcpmstickbootok
このファームは、FAT16のSDの中にディスクのイメージをCPMDSK_A.IMG、CPMDSK_C.IMG、CPMDSK_C.IMG という名前で保存すればよいのでイメージファイルの扱いが楽である。

 ゲームが入ったBドライブにパックマンがあった。
Packman

キャラクタで作ってあって、モンスターは[M]、チェリーは[%]、パックマンは[<][^][>][v]、縦横の移動は[8][6][2][4]キーである。(懐かしい)

 フリスクのケースに入れてみた。
Avrcpmfrisk
ぢつは、フリスクのケースを使いたくて作ったようなものだったりする。


2012年5月20日 (日)

AVR CP/M Stick (2)

 X'talを使わないで、FT232RLからクロックを供給することにしたので、FT232RLの設定を変更する必要がある。
 この前までデータシートには、クロックを出力するにはメーカに連絡してねと書いてあったのだが、最近は設定ツール(Mprog)を公開している。
Mprog

 早速CBUS0にCLK24を設定すると
Mprogclk24_2

#23ピンに24MHzが出力された
Ft232clk24out

CBUS0(#23)を見ると、100MHzサンプルで4クロック分のクロックが出力されている。
ちゃんと24MHzが出力されているようだ。

 以前作ったAVR CP/MのSDカードを使ってbootしてみると
Avrcpmstickbootproblem
SDカードが読めていないらしい。 

 以前AVR CP/Mを作ったとき、最初3.3Vで作ったら安定せず3端子レギュレータにゲタを履かせて3.6Vにした経験があるのでAVRとDRAMを5Vで動作させることにして、SDカードの電源は3.3Vなので、FT232RLの3.3V出力を使うようにした。
AVRとSDカードのインタフェースは抵抗で分圧する方法で、Arduinoの例を参考に
Sd_if_5v
のようにした。
参考した例では、分圧抵抗は1.8kと3.3kであるが、1.8kのチップ抵抗がなかったので2.2kを使った。
AVRのVOHは4.2V@20mA、VOLは0.9V@20mA なのでSDカードの入力電圧は
 VH=4.2*3.3k/(2.2k+3.3k)=2.52V
 VL=0.9*3.3k/(2.2k+3.3k)=0.594V
SDカードのVIHは0.625*VDD、VILは0.25*VDD なので VDD=3.3Vとすると
 VIH=0.625*3.3=2.0625V
 VIL=0.25*3.3=0.825V

VIH(2.0625)<VH(2.52)、VL(0.594)<VIL(0.825) だから良さそうだけど...

 と良く考えたら、SDカードの電源(3.3V)が問題では?
FT232Rのデータシートには50mA使っていいよと書いてある、一方、BAFFALO製の256M/512M/1GのSDカードはMax100mAと書いてある。
 FT232RLから供給するのは無理っぽいなあ...3端子レギュレータを載せるスペースがあるかなあ...


2012年5月14日 (月)

CP/M Stick

CP/M Stickを作ってみた。(←リンク切れてる模様 2013/2/14)

CP/M Stickを作ってみた。(←サイトが変わったようだ(2014/4/29))

SDカードはfat16が使える。
256k x 4のDRAMが2ケ載っているので大容量256kbyteだ!

Avrcpmstick
クロックは20MHzのX'talかFT232RLの24MHz出力を使うようになっていたが、FT232RLの24MHz出力を使うことにしてX'talは実装しない。

SDカードは裏面に配置した。
Avrcpmstick1

FT232RLのアップ
Avrcpmstickft232
0.5mm 0.65mmピッチのはんだ付けは厳しい。10年前は裸眼ではんだ付けできていたのに...
最近は、はんだ付けするときに度数2.75の老眼鏡を使っていたのだが、とうとう老眼鏡だけでは見えなくなり、ルーペを併用しなければUWEをピンの上に置けなくなってしまった。
 ヘッドルーペが欲しいと思い、ネットで探していたらタミヤがヘッドルーペを販売していることを知った。なんだかカッコいいなあ...

 次回から素直にピッチ変換基板を使おう。


2011年10月17日 (月)

BDS-Cで8Queen

プログラムはPCで書いてAVR PC/Mにアップロードするのが簡単。
メモリは、十分あるので再帰で書くことができる。(62k PC/Mだからね)

Sendfile1
Dldlg

 PIP.COMを使って CON:(シリアルでPCに繋がっている) から8QUEEN.C(ソースファイル)にコピーする。
 コピーの最後は CTRL-Zが必要
Sendfilectrlz

B:にBDS-CがあるのでB:に移ってコンパイル。
Compile

 BDS-Cは昔のCコンパイラなので関数プロトタイプが使えないのは仕方ないにしても、サブセットなのでキャストが使えなかったり、staticが使えなかったり、配列の添え字にintが使えなかったりだ。 
同じようにfreeになっている HI-TECH C はずいぶんまともだ。

実行結果
8queenexe

遅いなあ。
昔PC8801で遊んでいた頃を思い出してしまった。

2011年10月12日 (水)

AVR CP/M

AVR CP/M

 2010/4のエレキジャックフォーラムで発表されたcp-mega88を調べていたら,CP/M on AVR をみつけた. さらに探すとCP/M on AVRを改良したAVR CP/Mを見つけた。

 どちらも発想は同じで,RAMを外付けしたAVRで8080/Z80をエミュレーションして、その上でCP/Mを動かすというものだ。
cp-mega88は, 128k×8 のSRAMを使っているのでアドレスラッチ用の HC374×2を使ってる。 一方,CP/M on AVRは, 256k×4のDRAMを使っているのでアドレスラッチはいらないがリフレッシュが必要だ。
firmwareはcp-mega88が良さそうである。モニタも付いてるし、
でも結局、部品が少ないAVR CP/Mを作った。

Img_2830

 死蔵品に256k×4のDRAMはなかったので、ジャンク箱を漁ったら,古いビデオカード(ISAですよ)にV53C104が載っていたので、むしって使った。
Img_2833
このDRAM のデータシートには Vdd=5v±10% と書いてあるけど3.3vで動くもんだ。

 FD代わりの2GBのマイクロSDはほとんど使ってないけど、安かったので、
 最初,3.3vで動かしたら,マイクロSDに書き込んだとたんに落ちる現象が発生していた、もしやと思い3端子レギュレータにゲタを履かせて3.6vにしたら正常に動くようになった。

F/Wはここ(http://avr.cwsurf.de/?AVR_CP%2FM はリンクが切れている) の avrcpm_upd2.zip を使った.

F/Wはここの avrcpm_upd2.zip を使った.(違うサイトに移ったようだ。2014/4/29)
(オリジナルから配線の変更有)
FDのイメージをSDに書いてターミナルで繋ぐと懐かしいCP/Mが立ち上がる。

Avrcpm

こんなH/WでもRAMは夢の64kである. おまけにRAMディスクまである。

 昔PC8801遊んでいたころ、Cの勉強がしたくてCP/Mを使っていたのだが、そんなに使い込んではいない。
コンパイラはマイナーなSuperSoft-Cで、こいつはアセンブラソースを吐くので、M80,L80が必要だった。
 コンパイルも実行もとっても遅くてfloatなんて使おうものなら暴走したのかと思うほどだった。
おまけに中間ファイルをたくさん作るのでFDがすぐ一杯にになってコンパイルが途中で止まっていた。


 


最近の投稿