2012.11.16
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第248回]


●ファンクションコール05の実装

近年のパソコンの進歩には目を見張るものがあります。
そりゃあ便利になりました。
しかし。
便利になった代わりに切り捨てられてしまった機能も沢山あるように思います。
このところお話しておりますパラレルポートなどはぜひとも残しておいてほしかった機能のひとつです。

ま。
切り捨てられてしまったということは、こういうものを有り難く思う人たちがほぼ絶滅状態だからでありましょう。
まことに悲しき秋の夕暮れであります。

とにかく。
いまやシェアのほとんどを占めるでありましょうWindowsXPとWindows7においては、ユーザーが直接パラレルポート(プリンタポート)にアクセスすることを許してはくれません。
それどころか、すでに何回も書きましたように、普及品の一般的なパソコンからは肝心の25pinDSUBのパラレルポート(プリンタポート)そのものが消えてしまいました。
これじゃあいくらセントロニクスインターフェイス付きのドットインパクトプリンタが入手可能だとしても、そしてその制御がいかに簡単だったとしても、お手上げじゃありませんか?

こりゃあだめだ。
そう思ってしまったら、終わりなのですね。
何事におきましても、ちょいと見方を変えますと思わぬ活路を見出すことがあります。
いや、まあ、この場合、そんな大げさなものではありませんで、要は私がちょいと気がつかなかっただけでありまして。

セントロニクスプリンタをWindowsXPとかWindows7パソコンに接続して制御することはできません。
やってできないことはないかもしれませんが、相当に困難であることは間違いないでありましょう。

ところで。
わがND80ZV(ND80Z3.5)はUSBを介して、WindowsXPパソコンにもWindows7パソコンにも接続できます。
そしてその環境でCP/M互換DOSを走らせることができます。
そのND80ZV(ND80Z3.5)には、セントロニクスプリンタを楽々制御できるペリフェラルインターフェイスLSIの82C55が搭載されているじゃありませんか。
そこにセントロニクスプリンタを接続すれば。
おお。
ファンクションコール05など、楽勝ではありませんか。

もっともND80ZV(ND80Z3.5)の82C55の入出力用コネクタは25pinDSUBではなくて、26pinのフラットケーブル用コネクタですから、そこに直接接続することはできません。
しかし。
GNDを含めてたかだか11本のラインを接続すればよいのですから、まあ、朝飯前の作業でありましょう。

まずは回路図をお見せしましょう。

ND80ZV(ND80Z3.5)の82C55の入出力用端子は全て10KΩの抵抗でプルアップされていますが、煩雑になりますから上の図では省略してあります。

こちらが即席でこしらえてしまった変換ケーブルです。

ND80Z3.5の82C55入出力用コネクタに接続しています。
あ。
このND80Z3.5は試作評価用ボードです。
製品はちゃんとグリーンレジストもシルクもかかっています(以上念のため)。
右上にありますのがプリンタケーブルの25pinDSUB側です。

こちらが手配線した25pinDSUBコネクタの拡大写真です。

手元には基板実装用のコネクタしかなかったので、こんなかっこうになりました。
手配線用のコネクタならもう少し作業が楽かと思います。

そしてこちらが、新たに追加作成しました、CPM互換DOSのBIOSのプリンタ出力部分です。

              ;
              ;PRINTER OUT
D3A5 DB82     LISTJ:IN A,(82)
D3A7 E680     	AND 80
D3A9 C2A5D3   	JP NZ,LISTJ
D3AC 7B       	LD A,E
D3AD D380     	OUT (80),A
D3AF AF       	XOR A
D3B0 D383     	OUT (83),A
D3B2 00       	NOP
D3B3 3C       	INC A
D3B4 D383     	OUT (83),A
D3B6 C9       	RET

えええ?
たったこれだけぇ?
そうです。
たったこれだけです。
たったこれだけのプログラムがあれば、セントロニクスプリンタに文字を印字させることができるのです。

これはBIOSのルーチンですが、実はファンクションコール05は、このルーチンをコールしているだけなのです。
見ていただければおわかりのように、82C55に対してIN、OUTを実行しているだけです。
I/Oアドレス80H〜83Hは82C55のアドレスです。

ねえ。
めっちゃめちゃ簡単でしょう。
ドライバなんてくそくらえ、と言いたくなりますでしょう。
昔はこんなに簡単にプリンタ出力ができたのでした。
Windowsの進化の陰で失われてしまったものも、またいかに大きいかということを実感していただけますでしょうか。

本日もまた時間がなくなってしまいました。
次回はファンクションコール05を使ったテストプログラムとその実行例を紹介いたします。

ワンボードマイコンでCP/Mを![第248回]
2012.11.16upload

前へ
次へ
ホームページトップへ戻る