-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMPP.DOC
264 lines (199 loc) · 11.5 KB
/
CMPP.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
����������������������
�プリンタ用紙節約ユーティリティ CMPP �
� by Ken/ichiro(OPA) �
����������������������
v2の、マニュアル☆
こんぴぴって呼んでね。え、苦しい?いいじゃん。
で、CMPPは、ファイル印刷プログラムです。COPY file PRN の物凄いや
つです。主な効用は、プリンタ用紙節約です。Version 2 は、インクリボン節
約にもなります(但、熱転写リボンのみ)。アマゾンの森林節約にもデバッグ
の時間節約にもなります。そうだこの際省エネ印刷ユーティリティとでも名乗
ろうか、なんちゃって。
さてどうやってプリンタ用紙を節約するかというと、まず文字を小さくしま
す。16×16ドット。パソコンに内蔵されているフォントをそのまま使うわ
けですね。そうすると横幅ががらがらあくので、複数段組みにしてさらに紙を
節約します。
16ドットだと普通の24ピンプリンタでは1.5行いっぺんに印刷できま
す。だからリボンの節約になります。48ドットプリンタは3行いっぺんに印
刷できますのでとっても節約になります?
んーとあとは普通の印刷サポートプログラムが持っているような機能は持っ
てます。でもフォーマッタじゃないから禁則とかセンタリングとかはしない。
Version 2 を作るにあたって
えっと、CMPP Version 1.00 はとっても便利でした(視力さえあれば)。巨
大なドキュメントを読んだり、プログラムをデバッグしたり、手帳に張り付け
る時間割を作ったり、カンニング用紙を作ったりするときなど。
珍しく、バグも発見されず(無かった、ではない)、一旦完成してからは手
が掛からなくてよかったけれど、いかんせん、遅い(ように感じる)。それか
ら、でかすぎるファイルは印刷できない。とかの改良の余地もいくつか。
そんな折僕の友達がだとプリンタを買いました(「だ」とは98DAの方言です)。
だと一緒に買ったプリンタは、【48ドットでした】。
「CMPPを360dpiフルに使って印字してしまえ」※
「読めんぞー」
「それってやらないんじゃなかったのかぁ」
「横7段はいるぞ」
「縦3行いっぺんに印字できるぞ」
「やったれやったれ。ひゅーひゅー」
といったようなノリで新CMPPが作られはじめました。旧いコードをい
じって改良するのは窮屈なのでほとんど最初から作り直しました。環境変数も
見るようにして、タイトルがうるさいので1行にして、オプションも旧バージ
ョンの事はあまり考えずぽこぽこと付けていきました。できあがってみると、
たしかに速度は1.5倍ほどになったけど、ソースファイルのサイズは2倍に
なっちゃった。
と、いうわけで、がらりと変わった新CMPP。ためしにちょっと使ってみ
てね。便利だと思ったら、ずっと使ってね。そんときは寄付ちょうだいね。
※ところが友人の買った48ドットインクジェットプリンタは、隣り合った
ドットは印刷できないのでした。だから、厳密には360dpiじゃない。
宣伝、あるいは大嘘
フリーウェアをダウンロードしたら、巨大なドキュメントがついてきました
。画面で読むのは疲れるので、印刷してコタツに丸まってゆっくり読むことに
しましょう。そのまま印字しようとすれば、タブ幅の設定をしなければいけま
せんし、98罫線や半角漢字を使ったあやしいドキュメントは該当する部分が
読めません。さらに、吐き出された紙の束を見て、「こいつを読むのかぁ~」
とうんざりします。またこの紙のために森林が伐採され二酸化炭素が増えて地
球はお先真っ暗です。
とぉってもすごいプログラムをつくっていました。ところがちょっとした、
しかも重大なバグが紛れ込んでしまい、2時間ほど画面とにらめっこしました
がどこが悪いのか分からないので、プリントアウトしてじっくりデバッグする
事にしました。
ところが、タブ幅の設定をたまたま忘れてしまったために、インデント「な
し」のCプログラムになってしまいました。「こんなん読めるかぁ~」。ちゃ
んと設定して再び印刷します(これで二酸化炭素は2倍です)。例によって、
1%のバグと99%の「この際関係ない部分」がドカンと吐き出されます。経
験に基づき、最も確実な、「人間インタプリタ」になって、main()の1行目か
ら実行を追っていきます。おっと、fset(buf,flag,count)が呼び出されました
。���この関数は一体どこにあるのでしょう?リストの束をめくって関数定
義を探します。ありました、ありました。中身は、fset2(buf,flag,count);、
たった1行。ではこの関数はどこにあるのでしょう。・・・これはすぐ上にあ
りました。中身はこれまた1行、buf[count]=flag;。怒りを押さえつつmain()
に戻ります。・・・・・
(※この話はフィクションです(^_^))
CMPPを使えばずっと便利になります。ドキュメントの印字では、タブは
勿論、半角漢字、罫線、外字も何ら特殊操作なしに印字できます。圧縮率が高
いため、印字結果は非常にコンパクトです。紙が節約され森林が節約され地球
の寿命も伸びて結果的に貴方の寿命も伸びます。
プログラマーはもっと大きな恩恵を受けられます。印字結果の枚数が少ない
と精神衛生上たいへん好ましく、余計なストレスがたまらないので開発効率が
よくなります(ほんとかよ)。さらに、視野にいっぺんに納まる文字数が多い
ので、相互参照が絡み合っているプログラムなど、視点がいったりきたりする
距離が短く済み、ページをめくる手間も少なくなり、時刻やページ番号がきち
んと入っているので、「なぜかmain()が2つあるぅ~」とか、「このページの
次はこれかな?それともこれかな?」といったことはなくなります。
選ばれしものたち
このプログラムはPC-9801(PC-286)シリーズ専用ね。
16ドットのフォントが読みだせないからハイレゾは不可。
PC-PR系のプリンタ又はESC/P24ドットまたは同48ドットのプ
リンタ。PC-PRの48ドットへは対応の準備はあるけど制御コードが判ら
ない。旧バージョンはUP-135Kにも対応してたけど高校卒業したので
ポイ。困る人いる?
目安として、国語辞典を難なく読める程度の視力が必要。意外とこれが重要
だったりする。CMPP使ってよけい目が疲れちゃしょうがないっしょ?
使い方(使われ方)
普通に使えます。おーい説明になっとらんぞ。
オプション(後述)でプリンタの種類と用紙の種類を指定したあと、ファイ
ル名をずらずらと書き並べます。ファイル名にはワイルドカードが使えます。
印刷される順番はソートされません。なんか使ってて勝手にソートされると面
食らっちゃうもんで。
ファイル名に、"STDIN","CON" は使えません。僕個人の趣味です。
標準入力がリダイレクトされていると(ハンドル0がブロックデバイスだと) 最後に標準入力も印刷されます。
環境変数CMPP= を見るので、プリンタ種類と用紙の設定などよく使うものを
設定しておくとよいでしょう。/CO+とか。困るぅ~。
マルチプル、ではなくオプション
CMPPはまず環境変数CMPP=(CMPP =にあらず)をもぐもぐと食べます。
次にコマンドラインをもぐもぐと食べます。この2つは食べる順番が違うだけ
で等価です。頭から順番に食べますので、オプションとファイル名の前後関係
を意識する必要があります。
で、使い方を完全に理解すれば、このファイルをあのプリンタにB5用紙に
タブ幅8で印字して、このファイルはこっちのプリンタに連続用紙でタブ4で
行番号つけて、このドキュメントはまたあのプリンタに太文字で印字して、つ
いでにそっちのファイルを印刷するとどのくらいの長さになるかかぞえよう、
といったことが128文字の範囲内で自在にできます。
でも普通そんなことせん。ああっ無意味な仕様だわ。
ほいじゃそれではそれぞれのオプションの説明でもいたしましょう。
オプションのプレフィクスは'/'又は'-'。本ドキュメントでは'/'で統一。
n は任意の整数、x は'+'又は'-'の文字。nもxも省略できない。
なお、CMPP /? で例によって簡単な説明が出ます。
プリンタ種類と用紙種類の指定は必須です。それ以外は何も指定しなくても
なんとかなります。あとは段組み数とタブ幅の指定ぐらいを憶えておけば8割
がた困ることはないでしょう。
/P2 プリンタの種類の指定、PC-PR系、24ドット。160dpi。
/E2 同、ESC/P系、24ドット。180dpi。
/E4 同、ESC/P系、48ドット。360dpi。
プリンタ種類の指定は用紙サイズを指定していない状態に戻します。
また段組み数や1段の行数には影響しません。
/FF 用紙の指定、11インチファンフォールド紙。
/A4 同、A4縦。
/B5 同、B5縦。
/B4 同、B4縦。
/NF 同、連続用紙。(ロール紙)
/PIn 同、インチ単位のページ長指定。n は2~128。なお1インチは
約2.54cm。
用紙の指定の前にプリンタ種類の指定が必要です。
用紙の指定は1段の行数を初期化します。
/DNn 段組み数を指定。n は1~7。指定しなかった時のデフォルトは2。
/LPn 1ページ1段に入る行数を指定。n は1~20000。
/66x xが'+'で、一段の行数を、現在の値を超えない66の倍数にします。
'-'で元に戻します。
/HTn タブストップ間隔を指定。n は1~80。タブ3とかタブ7とかいう
変なのもできます。/HT-で拡張子が.Cまたは.Hのとき4、それ以外は8
になるようになります。デフォルトは/HT-。
/PAn-m 印刷するページを指定。任意の1ページ、先頭からmページまで、nペ
ージから最後まで、nページからmページまでといったことができます。
解除するには/PA-とします。(うーんよくできてるぜぇ)
/HEx 各ページの先頭につくヘッダのON/OFFです。OFFにすると少し
紙の節約になりますが、混乱の元にもなります。
このオプションは1段の行数を初期化します。
/LNx 各行の先頭に行番号を付ける機能のON/OFFです。
/BFx 文字を太くする機能のON/OFFです。
「先輩先輩。この文字が太いのと、普通のと、どっちがいいですか」
「(太いほうを指差して)こっちは読みづらい。」
というのはじつはじつわです。そうかなー。
/NC フォントはCGウィンドウを使って高速に読みだしますが、CGWを持
ってない機種の方はこれを指定してください。BIOS使ってフォント
を読みます。画面が乱れるのが嫌な人もこれを指定してください。指定
しなくても画面が乱れない場合もあります。
/COx '+' でプリンタに印刷せずに、必要な紙の量を計算します。
誤差は約 0.4ミリメートル/1ファイル。(計算値)
誤差は約10ミリメートル/1ファイル。(実測値)
惜しみなくロング演算をして精度を上げたよん。
/WA 一旦停止します。なんに使うんだろねこんなの。
エラーメッセージは、
旧バージョンではかなりふざけたメッセージが出てたけど、新しいのは普通
の物言いにしました。だから詳しい説明は省略。そのかわりドキュメントがふ
ざけてるから安心しなさい(しねえよ)。訳分かんないメッセージ出たらいっ
しょーけんめー推測するか、直接僕に聞く。今んところヒマだから多分教えて
あげられるよん。
作者しか読みたがらない変更履歴
旧バージョンの履歴はなが~いので省略。
・新しいのができた。(92-10-12 Version 2.00)
・/NCを指定しないとき半角のフォントがうまく読み出せないのを修正。
(92-11-14)
・「行単位ページ長設定」と「インチ単位ページ長設定」を間違えていたのを
修正。(93-3-30 Version 2.01)
注意事項
プログラムは48ドットプリンタに対応していますが、通常の人間の目は
これをフルに使った文字にはついていけないと思われます。あしからず。
印刷できる最大行数は1ファイル20000行です。
キャラクタデバイスは印刷できません。一旦リダイレクトしてファイルに落
とすなどしてください。
改ページとか、エスケープシーケンスには対応してないのでよろしく。
ファイル中、CR、LF、CR+LFは全て、復帰+改行として扱います。
MACのファイルもUNIXのファイルもそのまま印刷できます。
まとめ・その他・いっちょまえに著作権主張
CMPPの複写・配布は自由とします。転載する場合は一言私まで教えて下
さい。CMPPによって金銭的・またはこれに準ずる利益を得る場合には、作
者の承諾を必要とします。(具体的にどうやるかは知らないが)
作者はCMPPにバグが発見された場合これを修正する義務を負いません。
作者はCMPPの使用によって損害が生じても一切責任をを負いません。
プログラム及びドキュメントの改変は固くこれを禁じます。
CMPPを使いつづけるときは、なにかしら作者にフィードバックしましょ
う。作者にとって大きな励みになります。物でも金でもメールでもけっこうで
す。ただし生ものやカミソリの類は遠慮させていただいております。なお作者
はこのプログラムには1人千円ほどの価値があると思っています。
住所や口座番号は聞けば教えます。
なお前バージョンまでに寄付等をくださった方々にお礼を申し上げます。
おかしな動作とか、意見があったらなんでもいいからメールちょうだい。
ジラフの如く首を長くしてまってるよん。
Thank you.
制作・著作
HGF00102@niftyserve.or.jp
おぱ (Ken/ichiro)