AVRとZ80でCP/Mの改良の応用例です。 http://star.gmobb.jp/koji/data/TH_PRT_S.JPG [拡大|http://star.gmobb.jp/koji/data/TH_PRT.JPG]/[基板|http://star.gmobb.jp/koji/data/TH_PRT_BRD.JPG] !プリンターを接続してみたい 小さなマシンなのでそれに合うような小さいプリンターはないかとヤフオクを検索していたら小型のサーマルプリンターが安く出ていたのでこれ[uTP-58S24A|http://www.sanei-elec.co.jp/products/original/tp-58.html]を落札しました。新品でしたが取説を読むと内部は8050というマイコンでI/Fチップはなんと8251というかなり古いもののようです。付属品に変な板金が付いていますが用途がいまいち分かりません。そのまま取り付けるとコネクタのビスにぶつかってしまいます。本体が軽いので「重し」代わりには使えるのでプラバンでスペーサを作って取り付けています。[写真|http://star.gmobb.jp/koji/data/TH_PRT_BT.JPG] インターフェースはシリアルで設定は変更できるようですがデフォルトで、非同期/9600bps/8ビット/奇数パリティ/2ストップビット、DTR端子でタイミングを取るようになっています。 [回路図|http://star.gmobb.jp/koji/data/TH_PRT_CIR.png] SIOとの接続は2本だけですがどちらも論理が逆なので素直に7404を使えばよかったんですがあり合わせのもので済ましてます。RxD端子は内部でプルダウンされているのでPch(BSS84)でないとうまくいきませんでした。 !ソフトの作成 CP/Mメモリサイズ変更手順メモでBIOSの更新がCP/M上でできるようになったので、必要なファイルを集めたディスクを用意してしまえば後はPC無しで作業ができます。 CTC/SIOのプログラミングですが最近は資料がなかなか見つからないですね。初期化で悩みました。プリンターのDTRをSIOのCTSで受けていますが、RR0レジスタでCTSの状態が読める(のでインバータは要らない)と思っていたのですが違いました。非同期の場合はソフトからはCTSは読めないようです。資料を読むとCTSのチェックはハード的に行われる(オートイネーブル動作)ので、バッファが空かをチェックしろと書いてあります。BIOSの変更箇所はこんな感じ。(8080アセンブラなのでZ80コードはハンドアセンブルです) BOOT: LXI SP,BUFF CALL INICTC3 ; 2014.5.17 CALL INISIOA ; 2014.5.17 LXI H,SIGNON CALL PRMSG LIST: CALL SIOAEMPCK JZ LIST MOV A,C OUT SIOAB RET 追加。 SIOAB EQU 18H ;DATA BUFFER SIOAC EQU 19H ;COMMAND/STATUS CTC3 EQU 13H ;-----------INIT CTC3------------------------------------------------ INICTC3: ; CLOCK FOR SIOA (CPUCLOCK 9.8304MHZ) MVI A,00010111B ; NON-IRQ : Timer.mode : 1/16 OUT CTC3 MVI A,4 ; 153600Hz = 9600bps OUT CTC3 ; RET ; ;----------INIT SIOA------------------------------------------------- INISIOA: LXI H,SIOATBL MVI B,10 MVI C,SIOAC DB 0EDH,0B3H ;OTIR RET ;---------- SIOATBL: DB 00H,18H ; reset DB 01H,00000000B ; RCV IRQ DISABLE DB 04H,01001101B ; PARITY ODD SB2 DB 05H,11101010B ; tx8 / tx.en / dtr on / rts.on DB 03H,11100001B ; rx8 / auto.en on /rx.en ;-------------------------------------------------------------------- SIOAEMPCK: ; SIOA TX EMPTY CHECK XRA A OUT SIOAC IN SIOAC DB 0CBH,57H ; BIT 2,A ; 0:EXIST, 1:EMPTY RET レジのレシートのように静かにすうっと出てくるかと思いきや、結構大きな音をたてながらうにょうにょとゆっくり紙が出てきます。古いものだから仕方ないですかね。しかし24カラムしかないのはきついですね。 http://star.gmobb.jp/koji/data/TH_PRT_SMPL_S.JPG [拡大|http://star.gmobb.jp/koji/data/TH_PRT_SMPLJPG.JPG] !!関連リンク 下のほうにCTC/PIO/SIOの和文資料(pdf)がある http://www.tt.em-net.ne.jp/~k-system/z80page.htm 当サイト内 AVRとZ80でCP/Mの改良 ---- *サーマルプリンターの変な金具は操作盤に固定する為のものです。表側から綺麗に見えるように、プリンタの前面パネルの出っ張りと金具で操作盤を挟み込むように固定します。 私も以前サーマルプリンタをヤフオクで購入しましたが、どうやら宅配便のお兄ちゃん用でUSBやBluetooth接続だったのでマイコンへの接続を断念、ジャンク箱の肥やしになっています。貴記事を拝見し、再チャレンジしたくなりました。 - sum (2016年08月16日 08時23分39秒) *情報ありがとうございます。スペーサーが要らない謎が解けました。 - 管理人 (2016年08月16日 11時47分41秒) {{comment}}