-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMPP100.DOC
327 lines (239 loc) · 12.4 KB
/
CMPP100.DOC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
����������������������
�ファイル圧縮印刷ユーティリティ CMPP �
� Made by Ken/ichiro �
����������������������
の、マニュアル☆
1.CMPPとは何ぞや
CMPPとはつまり、プリンタ用紙の節約プログラムです。文字を16
ドットで印刷することにより、縦方向に約2倍、横方向に2~3倍の文字数を
詰め込むことができます。また、ページ長に合わせて改ページも行います。
さらに行番号をつけたり、文字を太くしたりすることもできます(行番号は
ともかく文字が太くなったからって何だっての)。
2.使用条件
1.このプログラムはPC-9801(PC-286)シリーズ専用です。
2.プリンタはとりあえず、PC-PR系とEPSON ESC/P系、
それと何故かエプソンのUP-135K(PC)に対応しています。
3.このプログラムの出力、全角で16×16ドットの文字を読めるだけの
視力があること。
3.使用方法
CMPPを使って印刷をするには、ファイル名をコマンドラインで与える
方法と、リダイレクトやパイプを使う方法とがあります。
まず一般的な使い方。
書式: A>CMPP [スイッチ] [ファイル名...]
ファイル名には複数指定が可能。スイッチについては後述。
例: A>CMPP /PR /NF /LN *.BAT CONFIG.SYS
(PC-PRモードで、連続用紙に、カレントディレクトリのすべての
.BATファイルとCONFIG.SYSを行番号をつけて印字)
次に、リダイレクトを利用した印刷。
書式: A>CMPP [スイッチ] <ファイル名
まあこれを使う人はいないだろうな。ファイルも1つしか指定できないし。
一応こういう事もできるということで。
例: A>CMPP /VP /FF /HT4 <TMP
(VPモードで、ファンフォールド用紙に、タブ間隔4でTMPを印刷)
最後に、(上と似ているが)パイプを使った印刷。
書式: A>[コマンド] | CMPP [スイッチ]
これは使うときは使うかもしれない。使って!
例: A>DIR | CMPP /UP /A4 /BF
(UP(PC)モードで、A4単票用紙に、太文字でDIRコマンドの結果を印刷)
※リダイレクトやパイプを使用した場合、ファイル名はSTDINになります。
4.スイッチの用法
※CMPP /? とするとスイッチの簡単な説明がでます。
普通に使用する場合はプリンタと用紙の種類だけ指定すればいいです。
(逆に言うと、この2つは常に指定した方がよい)
● /PR PC-PR系モード
現在コンピュータにつながっているプリンタが、PC-PRシリーズである
事を、CMPPに伝えます。段数の初期値は2です。
● /AP エプソン80桁モード
プリンタの種類がEPSONの80桁プリンタである事をCMPPに伝えま
す。段数の初期値は2です。80桁とはいっても処理は135桁とかわりな
く、3段組にする事もできます。(もちろん横からはみ出します。紙がもった
いないのでやらないようにしましょう。)既定値です。
● /VP エプソン135桁モード
段数の初期値が3であるほかは/APと同じです。これも/DNnスイッチによって
段数を変える事が出来ます。
● /UP UP-135K(PC)モード
我らが計算技術部部室にあるプリンタに対応したモードです。このプリンタ
はとてもすばらしい。ああすばらしい。お願いだからもう少し上の機種を。
段数の初期値は3です。
● /FF ファンフォールド用紙指定
連続用紙を使用するときはこのスイッチを指定して下さい。66行(11
インチ)相当で改ページをし、1ページ行数もそれに合わせます。多少の誤差
は御容赦下さい。
● /A4 A4単票用紙指定
A4縦長単票用紙モードです。ページ行数は71行相当になります。
● /B5 B5単票用紙指定
B5縦長単票用紙モードです。ページ行数は61行相当になります。
● /B4 B4単票用紙指定
B4縦長単票用紙モードです。ページ行数は86行相当になります。
これも使用する機会はあまりないでしょう。
● /NF 連続用紙指定
ロール紙などの連続用紙モードです。ページ行数は132行になります。
この値は「相当」ではなく、実際に132行(66×2行)印刷されます。
約80行相当(±5行くらいの誤差がある)になります。
ページ長を省略したときの既定値です。
● /PIn インチ単位ページ長指定
上記以外の紙を使用するときは、紙の長さを測って、このスイッチを指定
して下さい。例えば/PI5で5インチ、/PI12で12インチになります。
ところで、1インチは約2.54㎝です。
ページ長は1以上128以下でなくてはなりません。
● /HTn タブ間隔の指定
水平タブストップの間隔を指定します。1~80の値が指定できます。
このスイッチを省略した場合、拡張子が.C及び.Hの場合は4、それ以外は8が
指定された事になります。
● /LPn 1ページ1段行数の指定
1ページの1段に何行印字するかを指定します。指定しない場合CMPPが
「大体こんなもんだろう」と計算しますが、その計算が外れていたりしたとき
はこれを指定してやって下さい。範囲は1~4000までです。
● /SPn 印刷開始ページ指定
途中から印刷したい場合はこのスイッチを指定して下さい。
当然ながら1より小さな値は受け付けられません。
省略した場合ファイルの最初(1ページ)から印刷されます。
● /EPn 印刷終了ページ指定
あるページまでであとは印字しなくていい、というような時指定して下さい
開始ページより小さな値は受け付けません。
省略した場合ファイルの最後まで印刷します。
● /DNn 段組数指定
印刷字の段数を指定します。1~3までの値が指定できます。
私が実験した結果、135桁のプリンタでも4段印刷はできませんでした。
48ドットプリンタなら6~7段は入るでしょうが、人間の目には到底読めな
いことが予想されます。依って現在対応の予定はありません。
● /LN 行番号を印字
行番号をつけて印字します。ただし!PC-PR系80桁プリンタでは、
ドット密度が違うため、2段組で行番号をつけると、正常な印刷ができなく
なります。これは、いずれ強引に改良するつもりですが。
● /BF 太文字で印字
これがその何のためにあるのか分からない機能です。文字フォントを
1ドット太くして印刷します。そしたら見やすくなるかもしれない、と思って
印刷して、先輩に見比べてもらったら、太文字の方を指さして、「こっちは
読みずらい。」と言い放ってくれました。でもやっぱり切り捨てるのは惜しく
て、まだ残っているのです。熱転写プリンタで見ると結構きれいですよ。
● /NH ヘッダを印刷しない
通常、CMPPによる印刷では、ページの頭にファイル名・時刻・ページ番
号がヘッダとして印刷されます。このスイッチはヘッダの印字を抑制します。
● /CO ページ数のカウント
このスイッチを指定すると、印刷をしません。では何をするか。
ファイルの行数を数え、印刷に必要な紙の枚数を教えてくれます。連続用紙の
場合は、だいたいの印字結果の長さを教えてくれます。
ファイルを複数指定したときは、合計も教えてくれます。
ページ数の方は結構正確なのですが、長さの方はあまり正確ではありません。
多少の誤差は御容赦下さい。(また)
5.エラーメッセージ
スイッチの値に異常がみつかったときなど、CMPPは次のエラー
メッセージを返します。
「変なスイッチを指定しないでください。」
CMPPの解釈できないスイッチを指定したとき。
「ファイルが見つからないのですが。」
存在しないファイルを指定したとき。
「あまり複雑なことをさせないでください。」
タブ間隔が1~80の間にないとき。
「変わった紙があるんですな。」
ページ長が1~128の間にないとき。
「ヘッダだけ無限に印刷するのですか?」
1ページ行数が1~4000の間にないとき。
「反転印刷なんて機能はついてないんです。」
開始ページ、終了ページ指定に矛盾があるとき。
(実は、バグのせいで反転印刷ができたときがあった。日に透かすと正常な文
字になったものだ。その時すでにこのエラーメッセージは入っていた)
「そういう印刷はしない方があなたのためです。」
段数が1~3の間にないとき。
6.このプログラムができるまでの過程
なごやかな雰囲気。コタツに入ってリストを眺めている僕。隣でサントリー角の水割り
を飲んでいるお父さん。
▽ある日、僕がプリンタで打ったリストを眺めていたら、お父さんが横からリ
ストをのぞき込み、「ここには何も印字しないのか?」と聞きました。僕が
そのとき見ていたプログラムは、1行が比較的短く、用紙の右半分が
ほとんどあいていました。この日、僕は、これを何とかしようと思い立った
のです。
▽数週間後、CMPPの原型が完成。この当時は、エプソンのプリンタのみ
対応で、プリンタに12CPI縮小モードのコードを送って印刷していた。
▽1/4角文字を使用して、縦方向にも圧縮する事に成功。漢字とANKの
バランスの悪さに悩む。
▽次に、PC-PR系に移植を試みる。縮小モードがないのに悩む。
文字フォントを読みだし、ビットイメージを出力することで解決。
このときより、2種類のCMPPが存在するようになる。
▽できあがったCMPPを学校に持ち込む。学校のVP-1350は
135桁だがCMPPは2段組しかできない。また部室のUP-135K
では正常な印刷ができない。いつもESC/P用とPC-PR用を持ち歩く
事に不満が生ずる。
▽「こいつらを一気に解決しよう」と決心。後に「怒涛のバージョンアップ
事件」と呼ばれる(わけがない)。
▽エプソンのプリンタでもビットイメージを出力するように改造(その方が読
みやすいと思った)。自分の周りにあるプリンタすべてに対応。ページ長を
設定。開始ページ、終了ページを指定できるよう改造。
▽段組数を指定できるように改造。行番号をつけられるよう改造。太文字にも
なるよう改造。(それがどうした)ここまでで一応の新CMPPが完成。
▽行の切り出し時にバグがあったのを修正。このバグは実にしつこかった。
部活の最中に後ろの方でひたすらガリガリとプリンタを使っているのはとて
も気が引ける。(90-06-08)(90-06-15)
▽半角漢字の出力時にバグがあったのを修正。
でもね、半角漢字や外字に対応しているだけでも、珍しいんだよ。
(90-06-14) (90-07-17)
▽/COスイッチを追加。(90-06-14)
▽1文字出力時の計算に剰余算でなくシフトを使用して、速くなるかなーと
思ったんだけど、あまり変わらなかった。(90-06-28)
▽太文字のアルゴリズムを改良して、より読みやすく改良。ここまで太文字に
固執する理由はなんだ。(90-06-28)
▽合計の計算にバグがあったのを修正。(90-07-02)
▽このマニュアル中で、/PR を /PC と書いた間違いがあったのを修正。
(92-1-10)
▽LSICの試食版を手に入れたのでCMPPを移植してみる。
スイッチのプレフィクスにハイフンが使えなかったバグ(仕様?)を修正。
プリンタ種別の初期値を ESC/P 80桁モードに変更。なぜかという
と、うちにあるプリンタがそうだから。
連続用紙の行数の初期値を132に変更。
フォーマッタで整形されたドキュメントとぴったりあいます。(92-1-18)
▽ページ長のエラーチェックが大ボケだったのを修正。
いくつか細かいところを修正。(92-1-22)
▽/NHスイッチを追加。
▽NIFTYに初アップ。(92-7-16)
そして現在に至る。
7.使用上の注意
○このプログラムは、LZEXEで圧縮されています。
○前にも言いましたけど、近眼など視力の悪い人は、このプログラムを使用
することはあまり勧められません。よけい目が悪くなる恐れがあります。
○現在のCMPPでは、4000行(表示行換算)を越えるファイルは印刷
できません。もし4000行を越えるファイルを指定したときは、ファイル
の最初から4000行のみが印刷されます。警告も出る予定です。開始
ページを後の方に指定しても、4000行以上は決して印刷することはでき
ません。直す気になったら直します。
○プログラム内ではすべて整数演算をしています。そのため、1ページ行数の
計算や、必要な用紙長の計算などで誤差が出ることがあります。
○処理が2パスなので、印刷を始めるまでにちょっと時間がかかります。
○同じ理由で、キャラクタデバイスは印刷することができません。
○改ページやエスケープシーケンスなどはサポートされていません。改ページ
は、「なるたけプリンタ用紙を節約する」というコンセプトに添わないので、
エスケープシーケンスはこりだすときりがないので、今後もサポートの予定
はありません。
○UP-130(PC)モードの時は、PRシリーズとのドット密度の違いに
より、文字の線の太さがまちまちになります。
しかし、そんなプリンタまだ使ってるところあるのかしら。
○ファイルの最後のページがEOFだけの行で、実質何も印刷されないページ
がでてきても決して怒ってはいけません。CMPPを使わなければその数倍
の紙が必要になったのですから。
○インクリボンの上半分だけ妙に薄い、という状態にならないように気を付け
ましょう。でもリボンってメビウスになってて心配ないかもしれない。
8.その他
★著作権主張:
CMPPの複写・配布は自由とします。転載する場合は一言私まで教えて下
さい。CMPPによって金銭的・またはこれに準ずる利益を得る場合には、
作者の承諾を必要とします。
作者はCMPPにバグが発見された場合これを修正する義務を負いません。
プログラム及びドキュメントの改変は固くこれを禁じます。
★CMPPはシェアウェアではありませんが、現金にかぎらず寄付(報酬)は
ありがたくいただきます。ただ生ものやカミソリの類は遠慮させていただき
ます。作者本人はこのプログラムには1人500円ほどの価値があると思ってい
ます。物ではなく感謝のメールでも結構です。
なおこれは寄付(報酬)を要求するものではあっても強制するものではあり
ません。金額を指定するものでもありません。
★作者はNIFTYの会議室は滅多に見ないので、連絡はメールで。
誹謗・中傷でなければどんなことでも結構です。辛口の注文も歓迎します。
★このプログラムを使用する事によって生じた如何なる不都合にも(例えば
酔っぱらって気分が悪くなったとか)、作者は責任を負いません。
製作・著作
CREATE-NET 2 #554/おぱ
NIFTY-SERVE HGF00102/片岡憲一郎
PROJECTαNET ANET0456
TOPCOM-NET #214
おぱ (Ken/ichiro || OPA)
おしまい。