サーマルプリンターの接続の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
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}}